From b602265d559b2f2ade4d09ba55652c23922c141f Mon Sep 17 00:00:00 2001 From: Dongao Guo Date: Thu, 6 Sep 2018 16:04:58 +0800 Subject: [PATCH] MdeModulePkg RegularExpressionDxe: Update Oniguruma to 6.9.0 https://bugzilla.tianocore.org/show_bug.cgi?id=1200 Update Oniguruma to the latest version v6.9.0. Oniguruma https://github.com/kkos/oniguruma Verify VS2017, GCC5 build. Verify RegularExpressionProtocol GetInfo() and Match() function. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Dongao Guo Reviewed-by: Liming Gao Reviewed-by: Cinnamon Shia --- .../RegularExpressionDxe/Oniguruma/AUTHORS | 2 +- .../RegularExpressionDxe/Oniguruma/COPYING | 48 +- .../RegularExpressionDxe/Oniguruma/README | 142 +- .../RegularExpressionDxe/Oniguruma/ascii.c | 118 + .../Oniguruma/enc/unicode.c | 11374 ------ .../Oniguruma/{enc/ascii.c => onig_init.c} | 43 +- .../RegularExpressionDxe/Oniguruma/oniggnu.h | 10 +- .../Oniguruma/onigposix.h | 11 +- .../Oniguruma/oniguruma.h | 412 +- .../RegularExpressionDxe/Oniguruma/regcomp.c | 6765 ++-- .../RegularExpressionDxe/Oniguruma/regenc.c | 483 +- .../RegularExpressionDxe/Oniguruma/regenc.h | 163 +- .../RegularExpressionDxe/Oniguruma/regerror.c | 154 +- .../RegularExpressionDxe/Oniguruma/regexec.c | 4963 ++- .../RegularExpressionDxe/Oniguruma/reggnu.c | 36 +- .../RegularExpressionDxe/Oniguruma/regint.h | 737 +- .../RegularExpressionDxe/Oniguruma/regparse.c | 7309 ++-- .../RegularExpressionDxe/Oniguruma/regparse.h | 487 +- .../Oniguruma/regposerr.c | 24 +- .../RegularExpressionDxe/Oniguruma/regposix.c | 26 +- .../Oniguruma/regsyntax.c | 31 +- .../Oniguruma/regversion.c | 25 +- .../RegularExpressionDxe/Oniguruma/st.c | 494 +- .../RegularExpressionDxe/Oniguruma/st.h | 3 +- .../RegularExpressionDxe/Oniguruma/unicode.c | 873 + .../Oniguruma/unicode_egcb_data.c | 1369 + .../Oniguruma/unicode_fold1_key.c | 2992 ++ .../Oniguruma/unicode_fold2_key.c | 229 + .../Oniguruma/unicode_fold3_key.c | 139 + .../Oniguruma/unicode_fold_data.c | 1516 + .../Oniguruma/unicode_property_data.c | 29893 ++++++++++++++++ .../Oniguruma/unicode_property_data_posix.c | 5305 +++ .../Oniguruma/unicode_unfold_key.c | 3287 ++ .../Oniguruma/{enc => }/utf16_le.c | 95 +- .../RegularExpressionDxe.inf | 32 +- 35 files changed, 59746 insertions(+), 19844 deletions(-) create mode 100644 MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/ascii.c delete mode 100644 MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/enc/unicode.c rename MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/{enc/ascii.c => onig_init.c} (59%) create mode 100644 MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode.c create mode 100644 MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_egcb_data.c create mode 100644 MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_fold1_key.c create mode 100644 MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_fold2_key.c create mode 100644 MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_fold3_key.c create mode 100644 MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_fold_data.c create mode 100644 MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_property_data.c create mode 100644 MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_property_data_posix.c create mode 100644 MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_unfold_key.c rename MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/{enc => }/utf16_le.c (71%) diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/AUTHORS b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/AUTHORS index 3b3287e7d4..3005435d8f 100644 --- a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/AUTHORS +++ b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/AUTHORS @@ -1 +1 @@ -sndgk393 AT ybb DOT ne DOT jp (K.Kosako) + (K.Kosako) diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/COPYING b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/COPYING index f3d17ae519..e17cee6be2 100644 --- a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/COPYING +++ b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/COPYING @@ -1,28 +1,26 @@ Oniguruma LICENSE ----------------- -/*- - * Copyright (c) 2002-2007 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. - */ +Copyright (c) 2002-2018 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. diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/README b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/README index 18952eed00..4975466ced 100644 --- a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/README +++ b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/README @@ -1,12 +1,30 @@ -README 2007/05/31 - -Oniguruma ---- (C) K.Kosako - -http://www.geocities.jp/kosako3/oniguruma/ - -Oniguruma is a regular expressions library. -The characteristics of this library is that different character encoding -for every regular expression object can be specified. +README 2018/04/05 + +Oniguruma ---- (C) K.Kosako + +https://github.com/kkos/oniguruma + +FIXED Security Issues (in Oniguruma 6.3.0): + CVE-2017-9224, CVE-2017-9225, CVE-2017-9226 + CVE-2017-9227, CVE-2017-9228, CVE-2017-9229 + +--- +Oniguruma is a modern and flexible regular expressions library. It +encompasses features from different regular expression implementations +that traditionally exist in different languages. It comes close to +being a complete superset of all regular expression features found +in other regular expression implementations. + +Its features include: +* Character encoding can be specified per regular expression object. +* Several regular expression types are supported: + * POSIX + * Grep + * GNU Regex + * Perl + * Java + * Ruby + * Emacs Supported character encodings: @@ -30,18 +48,16 @@ Install Case 1: Unix and Cygwin platform - 1. ./configure - 2. make - 3. make install + 1. autoreconf -vfi (* case: configure script is not found.) + + 2. ./configure + 3. make + 4. make install * uninstall make uninstall - * test (ASCII/EUC-JP) - - make atest - * configuration check onig-config --cflags @@ -51,18 +67,19 @@ Install - Case 2: Win32 platform (VC++) + Case 2: Windows 64/32bit platform (Visual Studio) - 1. copy win32\Makefile Makefile - 2. copy win32\config.h config.h - 3. nmake + execute make_win64 or make_win32 - onig_s.lib: static link library - onig.dll: dynamic link library + src/onig_s.lib: static link library + src/onig.dll: dynamic link library * test (ASCII/Shift_JIS) - 4. copy win32\testc.c testc.c - 5. nmake ctest + 1. cd src + 2. copy ..\windows\testc.c . + 3. nmake -f Makefile.windows ctest + + (I have checked by Visual Studio Community 2015) @@ -103,6 +120,7 @@ Sample Programs sample/posix.c POSIX API sample. sample/sql.c example of the variable meta characters. (SQL-like pattern matching) + sample/user_property.c example of user defined Unicode property. Test Programs sample/syntax.c Perl, Java and ASIS syntax test. @@ -136,54 +154,42 @@ Source Files regposerr.c POSIX error message function. regposix.c POSIX API functions. - enc/mktable.c character type table generator. - enc/ascii.c ASCII encoding. - enc/euc_jp.c EUC-JP encoding. - enc/euc_tw.c EUC-TW encoding. - enc/euc_kr.c EUC-KR, EUC-CN encoding. - enc/sjis.c Shift_JIS encoding. - enc/big5.c Big5 encoding. - enc/gb18030.c GB18030 encoding. - enc/koi8.c KOI8 encoding. - enc/koi8_r.c KOI8-R encoding. - enc/cp1251.c CP1251 encoding. - enc/iso8859_1.c ISO-8859-1 encoding. (Latin-1) - enc/iso8859_2.c ISO-8859-2 encoding. (Latin-2) - enc/iso8859_3.c ISO-8859-3 encoding. (Latin-3) - enc/iso8859_4.c ISO-8859-4 encoding. (Latin-4) - enc/iso8859_5.c ISO-8859-5 encoding. (Cyrillic) - enc/iso8859_6.c ISO-8859-6 encoding. (Arabic) - enc/iso8859_7.c ISO-8859-7 encoding. (Greek) - enc/iso8859_8.c ISO-8859-8 encoding. (Hebrew) - enc/iso8859_9.c ISO-8859-9 encoding. (Latin-5 or Turkish) - enc/iso8859_10.c ISO-8859-10 encoding. (Latin-6 or Nordic) - enc/iso8859_11.c ISO-8859-11 encoding. (Thai) - enc/iso8859_13.c ISO-8859-13 encoding. (Latin-7 or Baltic Rim) - enc/iso8859_14.c ISO-8859-14 encoding. (Latin-8 or Celtic) - enc/iso8859_15.c ISO-8859-15 encoding. (Latin-9 or West European with Euro) - enc/iso8859_16.c ISO-8859-16 encoding. + mktable.c character type table generator. + ascii.c ASCII encoding. + euc_jp.c EUC-JP encoding. + euc_tw.c EUC-TW encoding. + euc_kr.c EUC-KR, EUC-CN encoding. + sjis.c Shift_JIS encoding. + big5.c Big5 encoding. + gb18030.c GB18030 encoding. + koi8.c KOI8 encoding. + koi8_r.c KOI8-R encoding. + cp1251.c CP1251 encoding. + iso8859_1.c ISO-8859-1 encoding. (Latin-1) + iso8859_2.c ISO-8859-2 encoding. (Latin-2) + iso8859_3.c ISO-8859-3 encoding. (Latin-3) + iso8859_4.c ISO-8859-4 encoding. (Latin-4) + iso8859_5.c ISO-8859-5 encoding. (Cyrillic) + iso8859_6.c ISO-8859-6 encoding. (Arabic) + iso8859_7.c ISO-8859-7 encoding. (Greek) + iso8859_8.c ISO-8859-8 encoding. (Hebrew) + iso8859_9.c ISO-8859-9 encoding. (Latin-5 or Turkish) + iso8859_10.c ISO-8859-10 encoding. (Latin-6 or Nordic) + iso8859_11.c ISO-8859-11 encoding. (Thai) + iso8859_13.c ISO-8859-13 encoding. (Latin-7 or Baltic Rim) + iso8859_14.c ISO-8859-14 encoding. (Latin-8 or Celtic) + iso8859_15.c ISO-8859-15 encoding. (Latin-9 or West European with Euro) + iso8859_16.c ISO-8859-16 encoding. (Latin-10 or South-Eastern European with Euro) - enc/utf8.c UTF-8 encoding. - enc/utf16_be.c UTF-16BE encoding. - enc/utf16_le.c UTF-16LE encoding. - enc/utf32_be.c UTF-32BE encoding. - enc/utf32_le.c UTF-32LE encoding. - enc/unicode.c Unicode information data. + utf8.c UTF-8 encoding. + utf16_be.c UTF-16BE encoding. + utf16_le.c UTF-16LE encoding. + utf32_be.c UTF-32BE encoding. + utf32_le.c UTF-32LE encoding. + unicode.c common codes of Unicode encoding. win32/Makefile Makefile for Win32 (VC++) win32/config.h config.h for Win32 - -ToDo - - ? case fold flag: Katakana <-> Hiragana. - ? add ONIG_OPTION_NOTBOS/NOTEOS. (\A, \z, \Z) - ?? \X (== \PM\pM*) - ?? implement syntax behavior ONIG_SYN_CONTEXT_INDEP_ANCHORS. - ?? transmission stopper. (return ONIG_STOP from match_at()) - and I'm thankful to Akinori MUSHA. - - -Mail Address: K.Kosako diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/ascii.c b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/ascii.c new file mode 100644 index 0000000000..ef961c94d5 --- /dev/null +++ b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/ascii.c @@ -0,0 +1,118 @@ +/********************************************************************** + ascii.c - Oniguruma (regular expression library) +**********************************************************************/ +/*- + * Copyright (c) 2002-2018 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 "regint.h" /* for USE_CALLOUT */ + +static int +init(void) +{ +#ifdef USE_CALLOUT + + int id; + OnigEncoding enc; + char* name; + unsigned int args[4]; + OnigValue opts[4]; + + enc = ONIG_ENCODING_ASCII; + + name = "FAIL"; BC0_P(name, fail); + name = "MISMATCH"; BC0_P(name, mismatch); + + name = "MAX"; + args[0] = ONIG_TYPE_TAG | ONIG_TYPE_LONG; + args[1] = ONIG_TYPE_CHAR; + opts[0].c = 'X'; + BC_B_O(name, max, 2, args, 1, opts); + + name = "ERROR"; + args[0] = ONIG_TYPE_LONG; opts[0].l = ONIG_ABORT; + BC_P_O(name, error, 1, args, 1, opts); + + name = "COUNT"; + args[0] = ONIG_TYPE_CHAR; opts[0].c = '>'; + BC_B_O(name, count, 1, args, 1, opts); + + name = "TOTAL_COUNT"; + args[0] = ONIG_TYPE_CHAR; opts[0].c = '>'; + BC_B_O(name, total_count, 1, args, 1, opts); + + name = "CMP"; + args[0] = ONIG_TYPE_TAG | ONIG_TYPE_LONG; + args[1] = ONIG_TYPE_STRING; + args[2] = ONIG_TYPE_TAG | ONIG_TYPE_LONG; + BC_P(name, cmp, 3, args); + +#endif /* USE_CALLOUT */ + + return ONIG_NORMAL; +} + +#if 0 +static int +is_initialized(void) +{ + /* Don't use this function */ + /* can't answer, because builtin callout entries removed in onig_end() */ + return 0; +} +#endif + +static int +ascii_is_code_ctype(OnigCodePoint code, unsigned int ctype) +{ + if (code < 128) + return ONIGENC_IS_ASCII_CODE_CTYPE(code, ctype); + else + return FALSE; +} + +OnigEncodingType OnigEncodingASCII = { + onigenc_single_byte_mbc_enc_len, + "US-ASCII", /* name */ + 1, /* max enc length */ + 1, /* min enc length */ + onigenc_is_mbc_newline_0x0a, + onigenc_single_byte_mbc_to_code, + onigenc_single_byte_code_to_mbclen, + onigenc_single_byte_code_to_mbc, + onigenc_ascii_mbc_case_fold, + onigenc_ascii_apply_all_case_fold, + onigenc_ascii_get_case_fold_codes_by_str, + onigenc_minimum_property_name_to_ctype, + ascii_is_code_ctype, + onigenc_not_support_get_ctype_code_range, + onigenc_single_byte_left_adjust_char_head, + onigenc_always_true_is_allowed_reverse_match, + init, + 0, /* is_initialized */ + onigenc_always_true_is_valid_mbc_string, + ENC_FLAG_ASCII_COMPATIBLE, + 0, 0 +}; diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/enc/unicode.c b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/enc/unicode.c deleted file mode 100644 index 6747b3d839..0000000000 --- a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/enc/unicode.c +++ /dev/null @@ -1,11374 +0,0 @@ -/********************************************************************** - unicode.c - Oniguruma (regular expression library) -**********************************************************************/ -/*- - * Copyright (c) 2002-2013 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 "regint.h" - -#define ONIGENC_IS_UNICODE_ISO_8859_1_CTYPE(code,ctype) \ - ((EncUNICODE_ISO_8859_1_CtypeTable[code] & CTYPE_TO_BIT(ctype)) != 0) -#if 0 -#define ONIGENC_IS_UNICODE_ISO_8859_1_BIT_CTYPE(code,cbit) \ - ((EncUNICODE_ISO_8859_1_CtypeTable[code] & (cbit)) != 0) -#endif - -static const unsigned short EncUNICODE_ISO_8859_1_CtypeTable[256] = { - 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, - 0x4008, 0x428c, 0x4289, 0x4288, 0x4288, 0x4288, 0x4008, 0x4008, - 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, - 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, - 0x4284, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, - 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, - 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, - 0x78b0, 0x78b0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, - 0x41a0, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x74a2, - 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, - 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, - 0x74a2, 0x74a2, 0x74a2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x51a0, - 0x41a0, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x70e2, - 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, - 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, - 0x70e2, 0x70e2, 0x70e2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x4008, - 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0288, 0x0008, 0x0008, - 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, - 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, - 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, - 0x0284, 0x01a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, - 0x00a0, 0x00a0, 0x30e2, 0x01a0, 0x00a0, 0x00a8, 0x00a0, 0x00a0, - 0x00a0, 0x00a0, 0x10a0, 0x10a0, 0x00a0, 0x30e2, 0x00a0, 0x01a0, - 0x00a0, 0x10a0, 0x30e2, 0x01a0, 0x10a0, 0x10a0, 0x10a0, 0x01a0, - 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, - 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, - 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x00a0, - 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x30e2, - 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, - 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, - 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x00a0, - 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2 -}; - -/* 'NEWLINE' */ -static const OnigCodePoint CR_NEWLINE[] = { - 1, - 0x000a, 0x000a -}; /* CR_NEWLINE */ - -/* 'Alpha': [[:Alpha:]] */ -static const OnigCodePoint CR_Alpha[] = { - 418, - 0x0041, 0x005a, - 0x0061, 0x007a, - 0x00aa, 0x00aa, - 0x00b5, 0x00b5, - 0x00ba, 0x00ba, - 0x00c0, 0x00d6, - 0x00d8, 0x00f6, - 0x00f8, 0x0241, - 0x0250, 0x02c1, - 0x02c6, 0x02d1, - 0x02e0, 0x02e4, - 0x02ee, 0x02ee, - 0x0300, 0x036f, - 0x037a, 0x037a, - 0x0386, 0x0386, - 0x0388, 0x038a, - 0x038c, 0x038c, - 0x038e, 0x03a1, - 0x03a3, 0x03ce, - 0x03d0, 0x03f5, - 0x03f7, 0x0481, - 0x0483, 0x0486, - 0x0488, 0x04ce, - 0x04d0, 0x04f9, - 0x0500, 0x050f, - 0x0531, 0x0556, - 0x0559, 0x0559, - 0x0561, 0x0587, - 0x0591, 0x05b9, - 0x05bb, 0x05bd, - 0x05bf, 0x05bf, - 0x05c1, 0x05c2, - 0x05c4, 0x05c5, - 0x05c7, 0x05c7, - 0x05d0, 0x05ea, - 0x05f0, 0x05f2, - 0x0610, 0x0615, - 0x0621, 0x063a, - 0x0640, 0x065e, - 0x066e, 0x06d3, - 0x06d5, 0x06dc, - 0x06de, 0x06e8, - 0x06ea, 0x06ef, - 0x06fa, 0x06fc, - 0x06ff, 0x06ff, - 0x0710, 0x074a, - 0x074d, 0x076d, - 0x0780, 0x07b1, - 0x0901, 0x0939, - 0x093c, 0x094d, - 0x0950, 0x0954, - 0x0958, 0x0963, - 0x097d, 0x097d, - 0x0981, 0x0983, - 0x0985, 0x098c, - 0x098f, 0x0990, - 0x0993, 0x09a8, - 0x09aa, 0x09b0, - 0x09b2, 0x09b2, - 0x09b6, 0x09b9, - 0x09bc, 0x09c4, - 0x09c7, 0x09c8, - 0x09cb, 0x09ce, - 0x09d7, 0x09d7, - 0x09dc, 0x09dd, - 0x09df, 0x09e3, - 0x09f0, 0x09f1, - 0x0a01, 0x0a03, - 0x0a05, 0x0a0a, - 0x0a0f, 0x0a10, - 0x0a13, 0x0a28, - 0x0a2a, 0x0a30, - 0x0a32, 0x0a33, - 0x0a35, 0x0a36, - 0x0a38, 0x0a39, - 0x0a3c, 0x0a3c, - 0x0a3e, 0x0a42, - 0x0a47, 0x0a48, - 0x0a4b, 0x0a4d, - 0x0a59, 0x0a5c, - 0x0a5e, 0x0a5e, - 0x0a70, 0x0a74, - 0x0a81, 0x0a83, - 0x0a85, 0x0a8d, - 0x0a8f, 0x0a91, - 0x0a93, 0x0aa8, - 0x0aaa, 0x0ab0, - 0x0ab2, 0x0ab3, - 0x0ab5, 0x0ab9, - 0x0abc, 0x0ac5, - 0x0ac7, 0x0ac9, - 0x0acb, 0x0acd, - 0x0ad0, 0x0ad0, - 0x0ae0, 0x0ae3, - 0x0b01, 0x0b03, - 0x0b05, 0x0b0c, - 0x0b0f, 0x0b10, - 0x0b13, 0x0b28, - 0x0b2a, 0x0b30, - 0x0b32, 0x0b33, - 0x0b35, 0x0b39, - 0x0b3c, 0x0b43, - 0x0b47, 0x0b48, - 0x0b4b, 0x0b4d, - 0x0b56, 0x0b57, - 0x0b5c, 0x0b5d, - 0x0b5f, 0x0b61, - 0x0b71, 0x0b71, - 0x0b82, 0x0b83, - 0x0b85, 0x0b8a, - 0x0b8e, 0x0b90, - 0x0b92, 0x0b95, - 0x0b99, 0x0b9a, - 0x0b9c, 0x0b9c, - 0x0b9e, 0x0b9f, - 0x0ba3, 0x0ba4, - 0x0ba8, 0x0baa, - 0x0bae, 0x0bb9, - 0x0bbe, 0x0bc2, - 0x0bc6, 0x0bc8, - 0x0bca, 0x0bcd, - 0x0bd7, 0x0bd7, - 0x0c01, 0x0c03, - 0x0c05, 0x0c0c, - 0x0c0e, 0x0c10, - 0x0c12, 0x0c28, - 0x0c2a, 0x0c33, - 0x0c35, 0x0c39, - 0x0c3e, 0x0c44, - 0x0c46, 0x0c48, - 0x0c4a, 0x0c4d, - 0x0c55, 0x0c56, - 0x0c60, 0x0c61, - 0x0c82, 0x0c83, - 0x0c85, 0x0c8c, - 0x0c8e, 0x0c90, - 0x0c92, 0x0ca8, - 0x0caa, 0x0cb3, - 0x0cb5, 0x0cb9, - 0x0cbc, 0x0cc4, - 0x0cc6, 0x0cc8, - 0x0cca, 0x0ccd, - 0x0cd5, 0x0cd6, - 0x0cde, 0x0cde, - 0x0ce0, 0x0ce1, - 0x0d02, 0x0d03, - 0x0d05, 0x0d0c, - 0x0d0e, 0x0d10, - 0x0d12, 0x0d28, - 0x0d2a, 0x0d39, - 0x0d3e, 0x0d43, - 0x0d46, 0x0d48, - 0x0d4a, 0x0d4d, - 0x0d57, 0x0d57, - 0x0d60, 0x0d61, - 0x0d82, 0x0d83, - 0x0d85, 0x0d96, - 0x0d9a, 0x0db1, - 0x0db3, 0x0dbb, - 0x0dbd, 0x0dbd, - 0x0dc0, 0x0dc6, - 0x0dca, 0x0dca, - 0x0dcf, 0x0dd4, - 0x0dd6, 0x0dd6, - 0x0dd8, 0x0ddf, - 0x0df2, 0x0df3, - 0x0e01, 0x0e3a, - 0x0e40, 0x0e4e, - 0x0e81, 0x0e82, - 0x0e84, 0x0e84, - 0x0e87, 0x0e88, - 0x0e8a, 0x0e8a, - 0x0e8d, 0x0e8d, - 0x0e94, 0x0e97, - 0x0e99, 0x0e9f, - 0x0ea1, 0x0ea3, - 0x0ea5, 0x0ea5, - 0x0ea7, 0x0ea7, - 0x0eaa, 0x0eab, - 0x0ead, 0x0eb9, - 0x0ebb, 0x0ebd, - 0x0ec0, 0x0ec4, - 0x0ec6, 0x0ec6, - 0x0ec8, 0x0ecd, - 0x0edc, 0x0edd, - 0x0f00, 0x0f00, - 0x0f18, 0x0f19, - 0x0f35, 0x0f35, - 0x0f37, 0x0f37, - 0x0f39, 0x0f39, - 0x0f3e, 0x0f47, - 0x0f49, 0x0f6a, - 0x0f71, 0x0f84, - 0x0f86, 0x0f8b, - 0x0f90, 0x0f97, - 0x0f99, 0x0fbc, - 0x0fc6, 0x0fc6, - 0x1000, 0x1021, - 0x1023, 0x1027, - 0x1029, 0x102a, - 0x102c, 0x1032, - 0x1036, 0x1039, - 0x1050, 0x1059, - 0x10a0, 0x10c5, - 0x10d0, 0x10fa, - 0x10fc, 0x10fc, - 0x1100, 0x1159, - 0x115f, 0x11a2, - 0x11a8, 0x11f9, - 0x1200, 0x1248, - 0x124a, 0x124d, - 0x1250, 0x1256, - 0x1258, 0x1258, - 0x125a, 0x125d, - 0x1260, 0x1288, - 0x128a, 0x128d, - 0x1290, 0x12b0, - 0x12b2, 0x12b5, - 0x12b8, 0x12be, - 0x12c0, 0x12c0, - 0x12c2, 0x12c5, - 0x12c8, 0x12d6, - 0x12d8, 0x1310, - 0x1312, 0x1315, - 0x1318, 0x135a, - 0x135f, 0x135f, - 0x1380, 0x138f, - 0x13a0, 0x13f4, - 0x1401, 0x166c, - 0x166f, 0x1676, - 0x1681, 0x169a, - 0x16a0, 0x16ea, - 0x1700, 0x170c, - 0x170e, 0x1714, - 0x1720, 0x1734, - 0x1740, 0x1753, - 0x1760, 0x176c, - 0x176e, 0x1770, - 0x1772, 0x1773, - 0x1780, 0x17b3, - 0x17b6, 0x17d3, - 0x17d7, 0x17d7, - 0x17dc, 0x17dd, - 0x180b, 0x180d, - 0x1820, 0x1877, - 0x1880, 0x18a9, - 0x1900, 0x191c, - 0x1920, 0x192b, - 0x1930, 0x193b, - 0x1950, 0x196d, - 0x1970, 0x1974, - 0x1980, 0x19a9, - 0x19b0, 0x19c9, - 0x1a00, 0x1a1b, - 0x1d00, 0x1dc3, - 0x1e00, 0x1e9b, - 0x1ea0, 0x1ef9, - 0x1f00, 0x1f15, - 0x1f18, 0x1f1d, - 0x1f20, 0x1f45, - 0x1f48, 0x1f4d, - 0x1f50, 0x1f57, - 0x1f59, 0x1f59, - 0x1f5b, 0x1f5b, - 0x1f5d, 0x1f5d, - 0x1f5f, 0x1f7d, - 0x1f80, 0x1fb4, - 0x1fb6, 0x1fbc, - 0x1fbe, 0x1fbe, - 0x1fc2, 0x1fc4, - 0x1fc6, 0x1fcc, - 0x1fd0, 0x1fd3, - 0x1fd6, 0x1fdb, - 0x1fe0, 0x1fec, - 0x1ff2, 0x1ff4, - 0x1ff6, 0x1ffc, - 0x2071, 0x2071, - 0x207f, 0x207f, - 0x2090, 0x2094, - 0x20d0, 0x20eb, - 0x2102, 0x2102, - 0x2107, 0x2107, - 0x210a, 0x2113, - 0x2115, 0x2115, - 0x2119, 0x211d, - 0x2124, 0x2124, - 0x2126, 0x2126, - 0x2128, 0x2128, - 0x212a, 0x212d, - 0x212f, 0x2131, - 0x2133, 0x2139, - 0x213c, 0x213f, - 0x2145, 0x2149, - 0x2c00, 0x2c2e, - 0x2c30, 0x2c5e, - 0x2c80, 0x2ce4, - 0x2d00, 0x2d25, - 0x2d30, 0x2d65, - 0x2d6f, 0x2d6f, - 0x2d80, 0x2d96, - 0x2da0, 0x2da6, - 0x2da8, 0x2dae, - 0x2db0, 0x2db6, - 0x2db8, 0x2dbe, - 0x2dc0, 0x2dc6, - 0x2dc8, 0x2dce, - 0x2dd0, 0x2dd6, - 0x2dd8, 0x2dde, - 0x3005, 0x3006, - 0x302a, 0x302f, - 0x3031, 0x3035, - 0x303b, 0x303c, - 0x3041, 0x3096, - 0x3099, 0x309a, - 0x309d, 0x309f, - 0x30a1, 0x30fa, - 0x30fc, 0x30ff, - 0x3105, 0x312c, - 0x3131, 0x318e, - 0x31a0, 0x31b7, - 0x31f0, 0x31ff, - 0x3400, 0x4db5, - 0x4e00, 0x9fbb, - 0xa000, 0xa48c, - 0xa800, 0xa827, - 0xac00, 0xd7a3, - 0xf900, 0xfa2d, - 0xfa30, 0xfa6a, - 0xfa70, 0xfad9, - 0xfb00, 0xfb06, - 0xfb13, 0xfb17, - 0xfb1d, 0xfb28, - 0xfb2a, 0xfb36, - 0xfb38, 0xfb3c, - 0xfb3e, 0xfb3e, - 0xfb40, 0xfb41, - 0xfb43, 0xfb44, - 0xfb46, 0xfbb1, - 0xfbd3, 0xfd3d, - 0xfd50, 0xfd8f, - 0xfd92, 0xfdc7, - 0xfdf0, 0xfdfb, - 0xfe00, 0xfe0f, - 0xfe20, 0xfe23, - 0xfe70, 0xfe74, - 0xfe76, 0xfefc, - 0xff21, 0xff3a, - 0xff41, 0xff5a, - 0xff66, 0xffbe, - 0xffc2, 0xffc7, - 0xffca, 0xffcf, - 0xffd2, 0xffd7, - 0xffda, 0xffdc, - 0x10000, 0x1000b, - 0x1000d, 0x10026, - 0x10028, 0x1003a, - 0x1003c, 0x1003d, - 0x1003f, 0x1004d, - 0x10050, 0x1005d, - 0x10080, 0x100fa, - 0x10300, 0x1031e, - 0x10330, 0x10349, - 0x10380, 0x1039d, - 0x103a0, 0x103c3, - 0x103c8, 0x103cf, - 0x10400, 0x1049d, - 0x10800, 0x10805, - 0x10808, 0x10808, - 0x1080a, 0x10835, - 0x10837, 0x10838, - 0x1083c, 0x1083c, - 0x1083f, 0x1083f, - 0x10a00, 0x10a03, - 0x10a05, 0x10a06, - 0x10a0c, 0x10a13, - 0x10a15, 0x10a17, - 0x10a19, 0x10a33, - 0x10a38, 0x10a3a, - 0x10a3f, 0x10a3f, - 0x1d165, 0x1d169, - 0x1d16d, 0x1d172, - 0x1d17b, 0x1d182, - 0x1d185, 0x1d18b, - 0x1d1aa, 0x1d1ad, - 0x1d242, 0x1d244, - 0x1d400, 0x1d454, - 0x1d456, 0x1d49c, - 0x1d49e, 0x1d49f, - 0x1d4a2, 0x1d4a2, - 0x1d4a5, 0x1d4a6, - 0x1d4a9, 0x1d4ac, - 0x1d4ae, 0x1d4b9, - 0x1d4bb, 0x1d4bb, - 0x1d4bd, 0x1d4c3, - 0x1d4c5, 0x1d505, - 0x1d507, 0x1d50a, - 0x1d50d, 0x1d514, - 0x1d516, 0x1d51c, - 0x1d51e, 0x1d539, - 0x1d53b, 0x1d53e, - 0x1d540, 0x1d544, - 0x1d546, 0x1d546, - 0x1d54a, 0x1d550, - 0x1d552, 0x1d6a5, - 0x1d6a8, 0x1d6c0, - 0x1d6c2, 0x1d6da, - 0x1d6dc, 0x1d6fa, - 0x1d6fc, 0x1d714, - 0x1d716, 0x1d734, - 0x1d736, 0x1d74e, - 0x1d750, 0x1d76e, - 0x1d770, 0x1d788, - 0x1d78a, 0x1d7a8, - 0x1d7aa, 0x1d7c2, - 0x1d7c4, 0x1d7c9, - 0x20000, 0x2a6d6, - 0x2f800, 0x2fa1d, - 0xe0100, 0xe01ef -}; /* CR_Alpha */ - -/* 'Blank': [[:Blank:]] */ -static const OnigCodePoint CR_Blank[] = { - 9, - 0x0009, 0x0009, - 0x0020, 0x0020, - 0x00a0, 0x00a0, - 0x1680, 0x1680, - 0x180e, 0x180e, - 0x2000, 0x200a, - 0x202f, 0x202f, - 0x205f, 0x205f, - 0x3000, 0x3000 -}; /* CR_Blank */ - -/* 'Cntrl': [[:Cntrl:]] */ -static const OnigCodePoint CR_Cntrl[] = { - 19, - 0x0000, 0x001f, - 0x007f, 0x009f, - 0x00ad, 0x00ad, - 0x0600, 0x0603, - 0x06dd, 0x06dd, - 0x070f, 0x070f, - 0x17b4, 0x17b5, - 0x200b, 0x200f, - 0x202a, 0x202e, - 0x2060, 0x2063, - 0x206a, 0x206f, - 0xd800, 0xf8ff, - 0xfeff, 0xfeff, - 0xfff9, 0xfffb, - 0x1d173, 0x1d17a, - 0xe0001, 0xe0001, - 0xe0020, 0xe007f, - 0xf0000, 0xffffd, - 0x100000, 0x10fffd -}; /* CR_Cntrl */ - -/* 'Digit': [[:Digit:]] */ -static const OnigCodePoint CR_Digit[] = { - 23, - 0x0030, 0x0039, - 0x0660, 0x0669, - 0x06f0, 0x06f9, - 0x0966, 0x096f, - 0x09e6, 0x09ef, - 0x0a66, 0x0a6f, - 0x0ae6, 0x0aef, - 0x0b66, 0x0b6f, - 0x0be6, 0x0bef, - 0x0c66, 0x0c6f, - 0x0ce6, 0x0cef, - 0x0d66, 0x0d6f, - 0x0e50, 0x0e59, - 0x0ed0, 0x0ed9, - 0x0f20, 0x0f29, - 0x1040, 0x1049, - 0x17e0, 0x17e9, - 0x1810, 0x1819, - 0x1946, 0x194f, - 0x19d0, 0x19d9, - 0xff10, 0xff19, - 0x104a0, 0x104a9, - 0x1d7ce, 0x1d7ff -}; /* CR_Digit */ - -/* 'Graph': [[:Graph:]] */ -static const OnigCodePoint CR_Graph[] = { - 424, - 0x0021, 0x007e, - 0x00a1, 0x0241, - 0x0250, 0x036f, - 0x0374, 0x0375, - 0x037a, 0x037a, - 0x037e, 0x037e, - 0x0384, 0x038a, - 0x038c, 0x038c, - 0x038e, 0x03a1, - 0x03a3, 0x03ce, - 0x03d0, 0x0486, - 0x0488, 0x04ce, - 0x04d0, 0x04f9, - 0x0500, 0x050f, - 0x0531, 0x0556, - 0x0559, 0x055f, - 0x0561, 0x0587, - 0x0589, 0x058a, - 0x0591, 0x05b9, - 0x05bb, 0x05c7, - 0x05d0, 0x05ea, - 0x05f0, 0x05f4, - 0x0600, 0x0603, - 0x060b, 0x0615, - 0x061b, 0x061b, - 0x061e, 0x061f, - 0x0621, 0x063a, - 0x0640, 0x065e, - 0x0660, 0x070d, - 0x070f, 0x074a, - 0x074d, 0x076d, - 0x0780, 0x07b1, - 0x0901, 0x0939, - 0x093c, 0x094d, - 0x0950, 0x0954, - 0x0958, 0x0970, - 0x097d, 0x097d, - 0x0981, 0x0983, - 0x0985, 0x098c, - 0x098f, 0x0990, - 0x0993, 0x09a8, - 0x09aa, 0x09b0, - 0x09b2, 0x09b2, - 0x09b6, 0x09b9, - 0x09bc, 0x09c4, - 0x09c7, 0x09c8, - 0x09cb, 0x09ce, - 0x09d7, 0x09d7, - 0x09dc, 0x09dd, - 0x09df, 0x09e3, - 0x09e6, 0x09fa, - 0x0a01, 0x0a03, - 0x0a05, 0x0a0a, - 0x0a0f, 0x0a10, - 0x0a13, 0x0a28, - 0x0a2a, 0x0a30, - 0x0a32, 0x0a33, - 0x0a35, 0x0a36, - 0x0a38, 0x0a39, - 0x0a3c, 0x0a3c, - 0x0a3e, 0x0a42, - 0x0a47, 0x0a48, - 0x0a4b, 0x0a4d, - 0x0a59, 0x0a5c, - 0x0a5e, 0x0a5e, - 0x0a66, 0x0a74, - 0x0a81, 0x0a83, - 0x0a85, 0x0a8d, - 0x0a8f, 0x0a91, - 0x0a93, 0x0aa8, - 0x0aaa, 0x0ab0, - 0x0ab2, 0x0ab3, - 0x0ab5, 0x0ab9, - 0x0abc, 0x0ac5, - 0x0ac7, 0x0ac9, - 0x0acb, 0x0acd, - 0x0ad0, 0x0ad0, - 0x0ae0, 0x0ae3, - 0x0ae6, 0x0aef, - 0x0af1, 0x0af1, - 0x0b01, 0x0b03, - 0x0b05, 0x0b0c, - 0x0b0f, 0x0b10, - 0x0b13, 0x0b28, - 0x0b2a, 0x0b30, - 0x0b32, 0x0b33, - 0x0b35, 0x0b39, - 0x0b3c, 0x0b43, - 0x0b47, 0x0b48, - 0x0b4b, 0x0b4d, - 0x0b56, 0x0b57, - 0x0b5c, 0x0b5d, - 0x0b5f, 0x0b61, - 0x0b66, 0x0b71, - 0x0b82, 0x0b83, - 0x0b85, 0x0b8a, - 0x0b8e, 0x0b90, - 0x0b92, 0x0b95, - 0x0b99, 0x0b9a, - 0x0b9c, 0x0b9c, - 0x0b9e, 0x0b9f, - 0x0ba3, 0x0ba4, - 0x0ba8, 0x0baa, - 0x0bae, 0x0bb9, - 0x0bbe, 0x0bc2, - 0x0bc6, 0x0bc8, - 0x0bca, 0x0bcd, - 0x0bd7, 0x0bd7, - 0x0be6, 0x0bfa, - 0x0c01, 0x0c03, - 0x0c05, 0x0c0c, - 0x0c0e, 0x0c10, - 0x0c12, 0x0c28, - 0x0c2a, 0x0c33, - 0x0c35, 0x0c39, - 0x0c3e, 0x0c44, - 0x0c46, 0x0c48, - 0x0c4a, 0x0c4d, - 0x0c55, 0x0c56, - 0x0c60, 0x0c61, - 0x0c66, 0x0c6f, - 0x0c82, 0x0c83, - 0x0c85, 0x0c8c, - 0x0c8e, 0x0c90, - 0x0c92, 0x0ca8, - 0x0caa, 0x0cb3, - 0x0cb5, 0x0cb9, - 0x0cbc, 0x0cc4, - 0x0cc6, 0x0cc8, - 0x0cca, 0x0ccd, - 0x0cd5, 0x0cd6, - 0x0cde, 0x0cde, - 0x0ce0, 0x0ce1, - 0x0ce6, 0x0cef, - 0x0d02, 0x0d03, - 0x0d05, 0x0d0c, - 0x0d0e, 0x0d10, - 0x0d12, 0x0d28, - 0x0d2a, 0x0d39, - 0x0d3e, 0x0d43, - 0x0d46, 0x0d48, - 0x0d4a, 0x0d4d, - 0x0d57, 0x0d57, - 0x0d60, 0x0d61, - 0x0d66, 0x0d6f, - 0x0d82, 0x0d83, - 0x0d85, 0x0d96, - 0x0d9a, 0x0db1, - 0x0db3, 0x0dbb, - 0x0dbd, 0x0dbd, - 0x0dc0, 0x0dc6, - 0x0dca, 0x0dca, - 0x0dcf, 0x0dd4, - 0x0dd6, 0x0dd6, - 0x0dd8, 0x0ddf, - 0x0df2, 0x0df4, - 0x0e01, 0x0e3a, - 0x0e3f, 0x0e5b, - 0x0e81, 0x0e82, - 0x0e84, 0x0e84, - 0x0e87, 0x0e88, - 0x0e8a, 0x0e8a, - 0x0e8d, 0x0e8d, - 0x0e94, 0x0e97, - 0x0e99, 0x0e9f, - 0x0ea1, 0x0ea3, - 0x0ea5, 0x0ea5, - 0x0ea7, 0x0ea7, - 0x0eaa, 0x0eab, - 0x0ead, 0x0eb9, - 0x0ebb, 0x0ebd, - 0x0ec0, 0x0ec4, - 0x0ec6, 0x0ec6, - 0x0ec8, 0x0ecd, - 0x0ed0, 0x0ed9, - 0x0edc, 0x0edd, - 0x0f00, 0x0f47, - 0x0f49, 0x0f6a, - 0x0f71, 0x0f8b, - 0x0f90, 0x0f97, - 0x0f99, 0x0fbc, - 0x0fbe, 0x0fcc, - 0x0fcf, 0x0fd1, - 0x1000, 0x1021, - 0x1023, 0x1027, - 0x1029, 0x102a, - 0x102c, 0x1032, - 0x1036, 0x1039, - 0x1040, 0x1059, - 0x10a0, 0x10c5, - 0x10d0, 0x10fc, - 0x1100, 0x1159, - 0x115f, 0x11a2, - 0x11a8, 0x11f9, - 0x1200, 0x1248, - 0x124a, 0x124d, - 0x1250, 0x1256, - 0x1258, 0x1258, - 0x125a, 0x125d, - 0x1260, 0x1288, - 0x128a, 0x128d, - 0x1290, 0x12b0, - 0x12b2, 0x12b5, - 0x12b8, 0x12be, - 0x12c0, 0x12c0, - 0x12c2, 0x12c5, - 0x12c8, 0x12d6, - 0x12d8, 0x1310, - 0x1312, 0x1315, - 0x1318, 0x135a, - 0x135f, 0x137c, - 0x1380, 0x1399, - 0x13a0, 0x13f4, - 0x1401, 0x1676, - 0x1681, 0x169c, - 0x16a0, 0x16f0, - 0x1700, 0x170c, - 0x170e, 0x1714, - 0x1720, 0x1736, - 0x1740, 0x1753, - 0x1760, 0x176c, - 0x176e, 0x1770, - 0x1772, 0x1773, - 0x1780, 0x17dd, - 0x17e0, 0x17e9, - 0x17f0, 0x17f9, - 0x1800, 0x180d, - 0x1810, 0x1819, - 0x1820, 0x1877, - 0x1880, 0x18a9, - 0x1900, 0x191c, - 0x1920, 0x192b, - 0x1930, 0x193b, - 0x1940, 0x1940, - 0x1944, 0x196d, - 0x1970, 0x1974, - 0x1980, 0x19a9, - 0x19b0, 0x19c9, - 0x19d0, 0x19d9, - 0x19de, 0x1a1b, - 0x1a1e, 0x1a1f, - 0x1d00, 0x1dc3, - 0x1e00, 0x1e9b, - 0x1ea0, 0x1ef9, - 0x1f00, 0x1f15, - 0x1f18, 0x1f1d, - 0x1f20, 0x1f45, - 0x1f48, 0x1f4d, - 0x1f50, 0x1f57, - 0x1f59, 0x1f59, - 0x1f5b, 0x1f5b, - 0x1f5d, 0x1f5d, - 0x1f5f, 0x1f7d, - 0x1f80, 0x1fb4, - 0x1fb6, 0x1fc4, - 0x1fc6, 0x1fd3, - 0x1fd6, 0x1fdb, - 0x1fdd, 0x1fef, - 0x1ff2, 0x1ff4, - 0x1ff6, 0x1ffe, - 0x200b, 0x2027, - 0x202a, 0x202e, - 0x2030, 0x205e, - 0x2060, 0x2063, - 0x206a, 0x2071, - 0x2074, 0x208e, - 0x2090, 0x2094, - 0x20a0, 0x20b5, - 0x20d0, 0x20eb, - 0x2100, 0x214c, - 0x2153, 0x2183, - 0x2190, 0x23db, - 0x2400, 0x2426, - 0x2440, 0x244a, - 0x2460, 0x269c, - 0x26a0, 0x26b1, - 0x2701, 0x2704, - 0x2706, 0x2709, - 0x270c, 0x2727, - 0x2729, 0x274b, - 0x274d, 0x274d, - 0x274f, 0x2752, - 0x2756, 0x2756, - 0x2758, 0x275e, - 0x2761, 0x2794, - 0x2798, 0x27af, - 0x27b1, 0x27be, - 0x27c0, 0x27c6, - 0x27d0, 0x27eb, - 0x27f0, 0x2b13, - 0x2c00, 0x2c2e, - 0x2c30, 0x2c5e, - 0x2c80, 0x2cea, - 0x2cf9, 0x2d25, - 0x2d30, 0x2d65, - 0x2d6f, 0x2d6f, - 0x2d80, 0x2d96, - 0x2da0, 0x2da6, - 0x2da8, 0x2dae, - 0x2db0, 0x2db6, - 0x2db8, 0x2dbe, - 0x2dc0, 0x2dc6, - 0x2dc8, 0x2dce, - 0x2dd0, 0x2dd6, - 0x2dd8, 0x2dde, - 0x2e00, 0x2e17, - 0x2e1c, 0x2e1d, - 0x2e80, 0x2e99, - 0x2e9b, 0x2ef3, - 0x2f00, 0x2fd5, - 0x2ff0, 0x2ffb, - 0x3001, 0x303f, - 0x3041, 0x3096, - 0x3099, 0x30ff, - 0x3105, 0x312c, - 0x3131, 0x318e, - 0x3190, 0x31b7, - 0x31c0, 0x31cf, - 0x31f0, 0x321e, - 0x3220, 0x3243, - 0x3250, 0x32fe, - 0x3300, 0x4db5, - 0x4dc0, 0x9fbb, - 0xa000, 0xa48c, - 0xa490, 0xa4c6, - 0xa700, 0xa716, - 0xa800, 0xa82b, - 0xac00, 0xd7a3, - 0xe000, 0xfa2d, - 0xfa30, 0xfa6a, - 0xfa70, 0xfad9, - 0xfb00, 0xfb06, - 0xfb13, 0xfb17, - 0xfb1d, 0xfb36, - 0xfb38, 0xfb3c, - 0xfb3e, 0xfb3e, - 0xfb40, 0xfb41, - 0xfb43, 0xfb44, - 0xfb46, 0xfbb1, - 0xfbd3, 0xfd3f, - 0xfd50, 0xfd8f, - 0xfd92, 0xfdc7, - 0xfdf0, 0xfdfd, - 0xfe00, 0xfe19, - 0xfe20, 0xfe23, - 0xfe30, 0xfe52, - 0xfe54, 0xfe66, - 0xfe68, 0xfe6b, - 0xfe70, 0xfe74, - 0xfe76, 0xfefc, - 0xfeff, 0xfeff, - 0xff01, 0xffbe, - 0xffc2, 0xffc7, - 0xffca, 0xffcf, - 0xffd2, 0xffd7, - 0xffda, 0xffdc, - 0xffe0, 0xffe6, - 0xffe8, 0xffee, - 0xfff9, 0xfffd, - 0x10000, 0x1000b, - 0x1000d, 0x10026, - 0x10028, 0x1003a, - 0x1003c, 0x1003d, - 0x1003f, 0x1004d, - 0x10050, 0x1005d, - 0x10080, 0x100fa, - 0x10100, 0x10102, - 0x10107, 0x10133, - 0x10137, 0x1018a, - 0x10300, 0x1031e, - 0x10320, 0x10323, - 0x10330, 0x1034a, - 0x10380, 0x1039d, - 0x1039f, 0x103c3, - 0x103c8, 0x103d5, - 0x10400, 0x1049d, - 0x104a0, 0x104a9, - 0x10800, 0x10805, - 0x10808, 0x10808, - 0x1080a, 0x10835, - 0x10837, 0x10838, - 0x1083c, 0x1083c, - 0x1083f, 0x1083f, - 0x10a00, 0x10a03, - 0x10a05, 0x10a06, - 0x10a0c, 0x10a13, - 0x10a15, 0x10a17, - 0x10a19, 0x10a33, - 0x10a38, 0x10a3a, - 0x10a3f, 0x10a47, - 0x10a50, 0x10a58, - 0x1d000, 0x1d0f5, - 0x1d100, 0x1d126, - 0x1d12a, 0x1d1dd, - 0x1d200, 0x1d245, - 0x1d300, 0x1d356, - 0x1d400, 0x1d454, - 0x1d456, 0x1d49c, - 0x1d49e, 0x1d49f, - 0x1d4a2, 0x1d4a2, - 0x1d4a5, 0x1d4a6, - 0x1d4a9, 0x1d4ac, - 0x1d4ae, 0x1d4b9, - 0x1d4bb, 0x1d4bb, - 0x1d4bd, 0x1d4c3, - 0x1d4c5, 0x1d505, - 0x1d507, 0x1d50a, - 0x1d50d, 0x1d514, - 0x1d516, 0x1d51c, - 0x1d51e, 0x1d539, - 0x1d53b, 0x1d53e, - 0x1d540, 0x1d544, - 0x1d546, 0x1d546, - 0x1d54a, 0x1d550, - 0x1d552, 0x1d6a5, - 0x1d6a8, 0x1d7c9, - 0x1d7ce, 0x1d7ff, - 0x20000, 0x2a6d6, - 0x2f800, 0x2fa1d, - 0xe0001, 0xe0001, - 0xe0020, 0xe007f, - 0xe0100, 0xe01ef, - 0xf0000, 0xffffd, - 0x100000, 0x10fffd -}; /* CR_Graph */ - -/* 'Lower': [[:Lower:]] */ -static const OnigCodePoint CR_Lower[] = { - 480, - 0x0061, 0x007a, - 0x00aa, 0x00aa, - 0x00b5, 0x00b5, - 0x00ba, 0x00ba, - 0x00df, 0x00f6, - 0x00f8, 0x00ff, - 0x0101, 0x0101, - 0x0103, 0x0103, - 0x0105, 0x0105, - 0x0107, 0x0107, - 0x0109, 0x0109, - 0x010b, 0x010b, - 0x010d, 0x010d, - 0x010f, 0x010f, - 0x0111, 0x0111, - 0x0113, 0x0113, - 0x0115, 0x0115, - 0x0117, 0x0117, - 0x0119, 0x0119, - 0x011b, 0x011b, - 0x011d, 0x011d, - 0x011f, 0x011f, - 0x0121, 0x0121, - 0x0123, 0x0123, - 0x0125, 0x0125, - 0x0127, 0x0127, - 0x0129, 0x0129, - 0x012b, 0x012b, - 0x012d, 0x012d, - 0x012f, 0x012f, - 0x0131, 0x0131, - 0x0133, 0x0133, - 0x0135, 0x0135, - 0x0137, 0x0138, - 0x013a, 0x013a, - 0x013c, 0x013c, - 0x013e, 0x013e, - 0x0140, 0x0140, - 0x0142, 0x0142, - 0x0144, 0x0144, - 0x0146, 0x0146, - 0x0148, 0x0149, - 0x014b, 0x014b, - 0x014d, 0x014d, - 0x014f, 0x014f, - 0x0151, 0x0151, - 0x0153, 0x0153, - 0x0155, 0x0155, - 0x0157, 0x0157, - 0x0159, 0x0159, - 0x015b, 0x015b, - 0x015d, 0x015d, - 0x015f, 0x015f, - 0x0161, 0x0161, - 0x0163, 0x0163, - 0x0165, 0x0165, - 0x0167, 0x0167, - 0x0169, 0x0169, - 0x016b, 0x016b, - 0x016d, 0x016d, - 0x016f, 0x016f, - 0x0171, 0x0171, - 0x0173, 0x0173, - 0x0175, 0x0175, - 0x0177, 0x0177, - 0x017a, 0x017a, - 0x017c, 0x017c, - 0x017e, 0x0180, - 0x0183, 0x0183, - 0x0185, 0x0185, - 0x0188, 0x0188, - 0x018c, 0x018d, - 0x0192, 0x0192, - 0x0195, 0x0195, - 0x0199, 0x019b, - 0x019e, 0x019e, - 0x01a1, 0x01a1, - 0x01a3, 0x01a3, - 0x01a5, 0x01a5, - 0x01a8, 0x01a8, - 0x01aa, 0x01ab, - 0x01ad, 0x01ad, - 0x01b0, 0x01b0, - 0x01b4, 0x01b4, - 0x01b6, 0x01b6, - 0x01b9, 0x01ba, - 0x01bd, 0x01bf, - 0x01c6, 0x01c6, - 0x01c9, 0x01c9, - 0x01cc, 0x01cc, - 0x01ce, 0x01ce, - 0x01d0, 0x01d0, - 0x01d2, 0x01d2, - 0x01d4, 0x01d4, - 0x01d6, 0x01d6, - 0x01d8, 0x01d8, - 0x01da, 0x01da, - 0x01dc, 0x01dd, - 0x01df, 0x01df, - 0x01e1, 0x01e1, - 0x01e3, 0x01e3, - 0x01e5, 0x01e5, - 0x01e7, 0x01e7, - 0x01e9, 0x01e9, - 0x01eb, 0x01eb, - 0x01ed, 0x01ed, - 0x01ef, 0x01f0, - 0x01f3, 0x01f3, - 0x01f5, 0x01f5, - 0x01f9, 0x01f9, - 0x01fb, 0x01fb, - 0x01fd, 0x01fd, - 0x01ff, 0x01ff, - 0x0201, 0x0201, - 0x0203, 0x0203, - 0x0205, 0x0205, - 0x0207, 0x0207, - 0x0209, 0x0209, - 0x020b, 0x020b, - 0x020d, 0x020d, - 0x020f, 0x020f, - 0x0211, 0x0211, - 0x0213, 0x0213, - 0x0215, 0x0215, - 0x0217, 0x0217, - 0x0219, 0x0219, - 0x021b, 0x021b, - 0x021d, 0x021d, - 0x021f, 0x021f, - 0x0221, 0x0221, - 0x0223, 0x0223, - 0x0225, 0x0225, - 0x0227, 0x0227, - 0x0229, 0x0229, - 0x022b, 0x022b, - 0x022d, 0x022d, - 0x022f, 0x022f, - 0x0231, 0x0231, - 0x0233, 0x0239, - 0x023c, 0x023c, - 0x023f, 0x0240, - 0x0250, 0x02af, - 0x0390, 0x0390, - 0x03ac, 0x03ce, - 0x03d0, 0x03d1, - 0x03d5, 0x03d7, - 0x03d9, 0x03d9, - 0x03db, 0x03db, - 0x03dd, 0x03dd, - 0x03df, 0x03df, - 0x03e1, 0x03e1, - 0x03e3, 0x03e3, - 0x03e5, 0x03e5, - 0x03e7, 0x03e7, - 0x03e9, 0x03e9, - 0x03eb, 0x03eb, - 0x03ed, 0x03ed, - 0x03ef, 0x03f3, - 0x03f5, 0x03f5, - 0x03f8, 0x03f8, - 0x03fb, 0x03fc, - 0x0430, 0x045f, - 0x0461, 0x0461, - 0x0463, 0x0463, - 0x0465, 0x0465, - 0x0467, 0x0467, - 0x0469, 0x0469, - 0x046b, 0x046b, - 0x046d, 0x046d, - 0x046f, 0x046f, - 0x0471, 0x0471, - 0x0473, 0x0473, - 0x0475, 0x0475, - 0x0477, 0x0477, - 0x0479, 0x0479, - 0x047b, 0x047b, - 0x047d, 0x047d, - 0x047f, 0x047f, - 0x0481, 0x0481, - 0x048b, 0x048b, - 0x048d, 0x048d, - 0x048f, 0x048f, - 0x0491, 0x0491, - 0x0493, 0x0493, - 0x0495, 0x0495, - 0x0497, 0x0497, - 0x0499, 0x0499, - 0x049b, 0x049b, - 0x049d, 0x049d, - 0x049f, 0x049f, - 0x04a1, 0x04a1, - 0x04a3, 0x04a3, - 0x04a5, 0x04a5, - 0x04a7, 0x04a7, - 0x04a9, 0x04a9, - 0x04ab, 0x04ab, - 0x04ad, 0x04ad, - 0x04af, 0x04af, - 0x04b1, 0x04b1, - 0x04b3, 0x04b3, - 0x04b5, 0x04b5, - 0x04b7, 0x04b7, - 0x04b9, 0x04b9, - 0x04bb, 0x04bb, - 0x04bd, 0x04bd, - 0x04bf, 0x04bf, - 0x04c2, 0x04c2, - 0x04c4, 0x04c4, - 0x04c6, 0x04c6, - 0x04c8, 0x04c8, - 0x04ca, 0x04ca, - 0x04cc, 0x04cc, - 0x04ce, 0x04ce, - 0x04d1, 0x04d1, - 0x04d3, 0x04d3, - 0x04d5, 0x04d5, - 0x04d7, 0x04d7, - 0x04d9, 0x04d9, - 0x04db, 0x04db, - 0x04dd, 0x04dd, - 0x04df, 0x04df, - 0x04e1, 0x04e1, - 0x04e3, 0x04e3, - 0x04e5, 0x04e5, - 0x04e7, 0x04e7, - 0x04e9, 0x04e9, - 0x04eb, 0x04eb, - 0x04ed, 0x04ed, - 0x04ef, 0x04ef, - 0x04f1, 0x04f1, - 0x04f3, 0x04f3, - 0x04f5, 0x04f5, - 0x04f7, 0x04f7, - 0x04f9, 0x04f9, - 0x0501, 0x0501, - 0x0503, 0x0503, - 0x0505, 0x0505, - 0x0507, 0x0507, - 0x0509, 0x0509, - 0x050b, 0x050b, - 0x050d, 0x050d, - 0x050f, 0x050f, - 0x0561, 0x0587, - 0x1d00, 0x1d2b, - 0x1d62, 0x1d77, - 0x1d79, 0x1d9a, - 0x1e01, 0x1e01, - 0x1e03, 0x1e03, - 0x1e05, 0x1e05, - 0x1e07, 0x1e07, - 0x1e09, 0x1e09, - 0x1e0b, 0x1e0b, - 0x1e0d, 0x1e0d, - 0x1e0f, 0x1e0f, - 0x1e11, 0x1e11, - 0x1e13, 0x1e13, - 0x1e15, 0x1e15, - 0x1e17, 0x1e17, - 0x1e19, 0x1e19, - 0x1e1b, 0x1e1b, - 0x1e1d, 0x1e1d, - 0x1e1f, 0x1e1f, - 0x1e21, 0x1e21, - 0x1e23, 0x1e23, - 0x1e25, 0x1e25, - 0x1e27, 0x1e27, - 0x1e29, 0x1e29, - 0x1e2b, 0x1e2b, - 0x1e2d, 0x1e2d, - 0x1e2f, 0x1e2f, - 0x1e31, 0x1e31, - 0x1e33, 0x1e33, - 0x1e35, 0x1e35, - 0x1e37, 0x1e37, - 0x1e39, 0x1e39, - 0x1e3b, 0x1e3b, - 0x1e3d, 0x1e3d, - 0x1e3f, 0x1e3f, - 0x1e41, 0x1e41, - 0x1e43, 0x1e43, - 0x1e45, 0x1e45, - 0x1e47, 0x1e47, - 0x1e49, 0x1e49, - 0x1e4b, 0x1e4b, - 0x1e4d, 0x1e4d, - 0x1e4f, 0x1e4f, - 0x1e51, 0x1e51, - 0x1e53, 0x1e53, - 0x1e55, 0x1e55, - 0x1e57, 0x1e57, - 0x1e59, 0x1e59, - 0x1e5b, 0x1e5b, - 0x1e5d, 0x1e5d, - 0x1e5f, 0x1e5f, - 0x1e61, 0x1e61, - 0x1e63, 0x1e63, - 0x1e65, 0x1e65, - 0x1e67, 0x1e67, - 0x1e69, 0x1e69, - 0x1e6b, 0x1e6b, - 0x1e6d, 0x1e6d, - 0x1e6f, 0x1e6f, - 0x1e71, 0x1e71, - 0x1e73, 0x1e73, - 0x1e75, 0x1e75, - 0x1e77, 0x1e77, - 0x1e79, 0x1e79, - 0x1e7b, 0x1e7b, - 0x1e7d, 0x1e7d, - 0x1e7f, 0x1e7f, - 0x1e81, 0x1e81, - 0x1e83, 0x1e83, - 0x1e85, 0x1e85, - 0x1e87, 0x1e87, - 0x1e89, 0x1e89, - 0x1e8b, 0x1e8b, - 0x1e8d, 0x1e8d, - 0x1e8f, 0x1e8f, - 0x1e91, 0x1e91, - 0x1e93, 0x1e93, - 0x1e95, 0x1e9b, - 0x1ea1, 0x1ea1, - 0x1ea3, 0x1ea3, - 0x1ea5, 0x1ea5, - 0x1ea7, 0x1ea7, - 0x1ea9, 0x1ea9, - 0x1eab, 0x1eab, - 0x1ead, 0x1ead, - 0x1eaf, 0x1eaf, - 0x1eb1, 0x1eb1, - 0x1eb3, 0x1eb3, - 0x1eb5, 0x1eb5, - 0x1eb7, 0x1eb7, - 0x1eb9, 0x1eb9, - 0x1ebb, 0x1ebb, - 0x1ebd, 0x1ebd, - 0x1ebf, 0x1ebf, - 0x1ec1, 0x1ec1, - 0x1ec3, 0x1ec3, - 0x1ec5, 0x1ec5, - 0x1ec7, 0x1ec7, - 0x1ec9, 0x1ec9, - 0x1ecb, 0x1ecb, - 0x1ecd, 0x1ecd, - 0x1ecf, 0x1ecf, - 0x1ed1, 0x1ed1, - 0x1ed3, 0x1ed3, - 0x1ed5, 0x1ed5, - 0x1ed7, 0x1ed7, - 0x1ed9, 0x1ed9, - 0x1edb, 0x1edb, - 0x1edd, 0x1edd, - 0x1edf, 0x1edf, - 0x1ee1, 0x1ee1, - 0x1ee3, 0x1ee3, - 0x1ee5, 0x1ee5, - 0x1ee7, 0x1ee7, - 0x1ee9, 0x1ee9, - 0x1eeb, 0x1eeb, - 0x1eed, 0x1eed, - 0x1eef, 0x1eef, - 0x1ef1, 0x1ef1, - 0x1ef3, 0x1ef3, - 0x1ef5, 0x1ef5, - 0x1ef7, 0x1ef7, - 0x1ef9, 0x1ef9, - 0x1f00, 0x1f07, - 0x1f10, 0x1f15, - 0x1f20, 0x1f27, - 0x1f30, 0x1f37, - 0x1f40, 0x1f45, - 0x1f50, 0x1f57, - 0x1f60, 0x1f67, - 0x1f70, 0x1f7d, - 0x1f80, 0x1f87, - 0x1f90, 0x1f97, - 0x1fa0, 0x1fa7, - 0x1fb0, 0x1fb4, - 0x1fb6, 0x1fb7, - 0x1fbe, 0x1fbe, - 0x1fc2, 0x1fc4, - 0x1fc6, 0x1fc7, - 0x1fd0, 0x1fd3, - 0x1fd6, 0x1fd7, - 0x1fe0, 0x1fe7, - 0x1ff2, 0x1ff4, - 0x1ff6, 0x1ff7, - 0x2071, 0x2071, - 0x207f, 0x207f, - 0x210a, 0x210a, - 0x210e, 0x210f, - 0x2113, 0x2113, - 0x212f, 0x212f, - 0x2134, 0x2134, - 0x2139, 0x2139, - 0x213c, 0x213d, - 0x2146, 0x2149, - 0x2c30, 0x2c5e, - 0x2c81, 0x2c81, - 0x2c83, 0x2c83, - 0x2c85, 0x2c85, - 0x2c87, 0x2c87, - 0x2c89, 0x2c89, - 0x2c8b, 0x2c8b, - 0x2c8d, 0x2c8d, - 0x2c8f, 0x2c8f, - 0x2c91, 0x2c91, - 0x2c93, 0x2c93, - 0x2c95, 0x2c95, - 0x2c97, 0x2c97, - 0x2c99, 0x2c99, - 0x2c9b, 0x2c9b, - 0x2c9d, 0x2c9d, - 0x2c9f, 0x2c9f, - 0x2ca1, 0x2ca1, - 0x2ca3, 0x2ca3, - 0x2ca5, 0x2ca5, - 0x2ca7, 0x2ca7, - 0x2ca9, 0x2ca9, - 0x2cab, 0x2cab, - 0x2cad, 0x2cad, - 0x2caf, 0x2caf, - 0x2cb1, 0x2cb1, - 0x2cb3, 0x2cb3, - 0x2cb5, 0x2cb5, - 0x2cb7, 0x2cb7, - 0x2cb9, 0x2cb9, - 0x2cbb, 0x2cbb, - 0x2cbd, 0x2cbd, - 0x2cbf, 0x2cbf, - 0x2cc1, 0x2cc1, - 0x2cc3, 0x2cc3, - 0x2cc5, 0x2cc5, - 0x2cc7, 0x2cc7, - 0x2cc9, 0x2cc9, - 0x2ccb, 0x2ccb, - 0x2ccd, 0x2ccd, - 0x2ccf, 0x2ccf, - 0x2cd1, 0x2cd1, - 0x2cd3, 0x2cd3, - 0x2cd5, 0x2cd5, - 0x2cd7, 0x2cd7, - 0x2cd9, 0x2cd9, - 0x2cdb, 0x2cdb, - 0x2cdd, 0x2cdd, - 0x2cdf, 0x2cdf, - 0x2ce1, 0x2ce1, - 0x2ce3, 0x2ce4, - 0x2d00, 0x2d25, - 0xfb00, 0xfb06, - 0xfb13, 0xfb17, - 0xff41, 0xff5a, - 0x10428, 0x1044f, - 0x1d41a, 0x1d433, - 0x1d44e, 0x1d454, - 0x1d456, 0x1d467, - 0x1d482, 0x1d49b, - 0x1d4b6, 0x1d4b9, - 0x1d4bb, 0x1d4bb, - 0x1d4bd, 0x1d4c3, - 0x1d4c5, 0x1d4cf, - 0x1d4ea, 0x1d503, - 0x1d51e, 0x1d537, - 0x1d552, 0x1d56b, - 0x1d586, 0x1d59f, - 0x1d5ba, 0x1d5d3, - 0x1d5ee, 0x1d607, - 0x1d622, 0x1d63b, - 0x1d656, 0x1d66f, - 0x1d68a, 0x1d6a5, - 0x1d6c2, 0x1d6da, - 0x1d6dc, 0x1d6e1, - 0x1d6fc, 0x1d714, - 0x1d716, 0x1d71b, - 0x1d736, 0x1d74e, - 0x1d750, 0x1d755, - 0x1d770, 0x1d788, - 0x1d78a, 0x1d78f, - 0x1d7aa, 0x1d7c2, - 0x1d7c4, 0x1d7c9 -}; /* CR_Lower */ - -/* 'Print': [[:Print:]] */ -static const OnigCodePoint CR_Print[] = { - 423, - 0x0009, 0x000d, - 0x0020, 0x007e, - 0x0085, 0x0085, - 0x00a0, 0x0241, - 0x0250, 0x036f, - 0x0374, 0x0375, - 0x037a, 0x037a, - 0x037e, 0x037e, - 0x0384, 0x038a, - 0x038c, 0x038c, - 0x038e, 0x03a1, - 0x03a3, 0x03ce, - 0x03d0, 0x0486, - 0x0488, 0x04ce, - 0x04d0, 0x04f9, - 0x0500, 0x050f, - 0x0531, 0x0556, - 0x0559, 0x055f, - 0x0561, 0x0587, - 0x0589, 0x058a, - 0x0591, 0x05b9, - 0x05bb, 0x05c7, - 0x05d0, 0x05ea, - 0x05f0, 0x05f4, - 0x0600, 0x0603, - 0x060b, 0x0615, - 0x061b, 0x061b, - 0x061e, 0x061f, - 0x0621, 0x063a, - 0x0640, 0x065e, - 0x0660, 0x070d, - 0x070f, 0x074a, - 0x074d, 0x076d, - 0x0780, 0x07b1, - 0x0901, 0x0939, - 0x093c, 0x094d, - 0x0950, 0x0954, - 0x0958, 0x0970, - 0x097d, 0x097d, - 0x0981, 0x0983, - 0x0985, 0x098c, - 0x098f, 0x0990, - 0x0993, 0x09a8, - 0x09aa, 0x09b0, - 0x09b2, 0x09b2, - 0x09b6, 0x09b9, - 0x09bc, 0x09c4, - 0x09c7, 0x09c8, - 0x09cb, 0x09ce, - 0x09d7, 0x09d7, - 0x09dc, 0x09dd, - 0x09df, 0x09e3, - 0x09e6, 0x09fa, - 0x0a01, 0x0a03, - 0x0a05, 0x0a0a, - 0x0a0f, 0x0a10, - 0x0a13, 0x0a28, - 0x0a2a, 0x0a30, - 0x0a32, 0x0a33, - 0x0a35, 0x0a36, - 0x0a38, 0x0a39, - 0x0a3c, 0x0a3c, - 0x0a3e, 0x0a42, - 0x0a47, 0x0a48, - 0x0a4b, 0x0a4d, - 0x0a59, 0x0a5c, - 0x0a5e, 0x0a5e, - 0x0a66, 0x0a74, - 0x0a81, 0x0a83, - 0x0a85, 0x0a8d, - 0x0a8f, 0x0a91, - 0x0a93, 0x0aa8, - 0x0aaa, 0x0ab0, - 0x0ab2, 0x0ab3, - 0x0ab5, 0x0ab9, - 0x0abc, 0x0ac5, - 0x0ac7, 0x0ac9, - 0x0acb, 0x0acd, - 0x0ad0, 0x0ad0, - 0x0ae0, 0x0ae3, - 0x0ae6, 0x0aef, - 0x0af1, 0x0af1, - 0x0b01, 0x0b03, - 0x0b05, 0x0b0c, - 0x0b0f, 0x0b10, - 0x0b13, 0x0b28, - 0x0b2a, 0x0b30, - 0x0b32, 0x0b33, - 0x0b35, 0x0b39, - 0x0b3c, 0x0b43, - 0x0b47, 0x0b48, - 0x0b4b, 0x0b4d, - 0x0b56, 0x0b57, - 0x0b5c, 0x0b5d, - 0x0b5f, 0x0b61, - 0x0b66, 0x0b71, - 0x0b82, 0x0b83, - 0x0b85, 0x0b8a, - 0x0b8e, 0x0b90, - 0x0b92, 0x0b95, - 0x0b99, 0x0b9a, - 0x0b9c, 0x0b9c, - 0x0b9e, 0x0b9f, - 0x0ba3, 0x0ba4, - 0x0ba8, 0x0baa, - 0x0bae, 0x0bb9, - 0x0bbe, 0x0bc2, - 0x0bc6, 0x0bc8, - 0x0bca, 0x0bcd, - 0x0bd7, 0x0bd7, - 0x0be6, 0x0bfa, - 0x0c01, 0x0c03, - 0x0c05, 0x0c0c, - 0x0c0e, 0x0c10, - 0x0c12, 0x0c28, - 0x0c2a, 0x0c33, - 0x0c35, 0x0c39, - 0x0c3e, 0x0c44, - 0x0c46, 0x0c48, - 0x0c4a, 0x0c4d, - 0x0c55, 0x0c56, - 0x0c60, 0x0c61, - 0x0c66, 0x0c6f, - 0x0c82, 0x0c83, - 0x0c85, 0x0c8c, - 0x0c8e, 0x0c90, - 0x0c92, 0x0ca8, - 0x0caa, 0x0cb3, - 0x0cb5, 0x0cb9, - 0x0cbc, 0x0cc4, - 0x0cc6, 0x0cc8, - 0x0cca, 0x0ccd, - 0x0cd5, 0x0cd6, - 0x0cde, 0x0cde, - 0x0ce0, 0x0ce1, - 0x0ce6, 0x0cef, - 0x0d02, 0x0d03, - 0x0d05, 0x0d0c, - 0x0d0e, 0x0d10, - 0x0d12, 0x0d28, - 0x0d2a, 0x0d39, - 0x0d3e, 0x0d43, - 0x0d46, 0x0d48, - 0x0d4a, 0x0d4d, - 0x0d57, 0x0d57, - 0x0d60, 0x0d61, - 0x0d66, 0x0d6f, - 0x0d82, 0x0d83, - 0x0d85, 0x0d96, - 0x0d9a, 0x0db1, - 0x0db3, 0x0dbb, - 0x0dbd, 0x0dbd, - 0x0dc0, 0x0dc6, - 0x0dca, 0x0dca, - 0x0dcf, 0x0dd4, - 0x0dd6, 0x0dd6, - 0x0dd8, 0x0ddf, - 0x0df2, 0x0df4, - 0x0e01, 0x0e3a, - 0x0e3f, 0x0e5b, - 0x0e81, 0x0e82, - 0x0e84, 0x0e84, - 0x0e87, 0x0e88, - 0x0e8a, 0x0e8a, - 0x0e8d, 0x0e8d, - 0x0e94, 0x0e97, - 0x0e99, 0x0e9f, - 0x0ea1, 0x0ea3, - 0x0ea5, 0x0ea5, - 0x0ea7, 0x0ea7, - 0x0eaa, 0x0eab, - 0x0ead, 0x0eb9, - 0x0ebb, 0x0ebd, - 0x0ec0, 0x0ec4, - 0x0ec6, 0x0ec6, - 0x0ec8, 0x0ecd, - 0x0ed0, 0x0ed9, - 0x0edc, 0x0edd, - 0x0f00, 0x0f47, - 0x0f49, 0x0f6a, - 0x0f71, 0x0f8b, - 0x0f90, 0x0f97, - 0x0f99, 0x0fbc, - 0x0fbe, 0x0fcc, - 0x0fcf, 0x0fd1, - 0x1000, 0x1021, - 0x1023, 0x1027, - 0x1029, 0x102a, - 0x102c, 0x1032, - 0x1036, 0x1039, - 0x1040, 0x1059, - 0x10a0, 0x10c5, - 0x10d0, 0x10fc, - 0x1100, 0x1159, - 0x115f, 0x11a2, - 0x11a8, 0x11f9, - 0x1200, 0x1248, - 0x124a, 0x124d, - 0x1250, 0x1256, - 0x1258, 0x1258, - 0x125a, 0x125d, - 0x1260, 0x1288, - 0x128a, 0x128d, - 0x1290, 0x12b0, - 0x12b2, 0x12b5, - 0x12b8, 0x12be, - 0x12c0, 0x12c0, - 0x12c2, 0x12c5, - 0x12c8, 0x12d6, - 0x12d8, 0x1310, - 0x1312, 0x1315, - 0x1318, 0x135a, - 0x135f, 0x137c, - 0x1380, 0x1399, - 0x13a0, 0x13f4, - 0x1401, 0x1676, - 0x1680, 0x169c, - 0x16a0, 0x16f0, - 0x1700, 0x170c, - 0x170e, 0x1714, - 0x1720, 0x1736, - 0x1740, 0x1753, - 0x1760, 0x176c, - 0x176e, 0x1770, - 0x1772, 0x1773, - 0x1780, 0x17dd, - 0x17e0, 0x17e9, - 0x17f0, 0x17f9, - 0x1800, 0x180e, - 0x1810, 0x1819, - 0x1820, 0x1877, - 0x1880, 0x18a9, - 0x1900, 0x191c, - 0x1920, 0x192b, - 0x1930, 0x193b, - 0x1940, 0x1940, - 0x1944, 0x196d, - 0x1970, 0x1974, - 0x1980, 0x19a9, - 0x19b0, 0x19c9, - 0x19d0, 0x19d9, - 0x19de, 0x1a1b, - 0x1a1e, 0x1a1f, - 0x1d00, 0x1dc3, - 0x1e00, 0x1e9b, - 0x1ea0, 0x1ef9, - 0x1f00, 0x1f15, - 0x1f18, 0x1f1d, - 0x1f20, 0x1f45, - 0x1f48, 0x1f4d, - 0x1f50, 0x1f57, - 0x1f59, 0x1f59, - 0x1f5b, 0x1f5b, - 0x1f5d, 0x1f5d, - 0x1f5f, 0x1f7d, - 0x1f80, 0x1fb4, - 0x1fb6, 0x1fc4, - 0x1fc6, 0x1fd3, - 0x1fd6, 0x1fdb, - 0x1fdd, 0x1fef, - 0x1ff2, 0x1ff4, - 0x1ff6, 0x1ffe, - 0x2000, 0x2063, - 0x206a, 0x2071, - 0x2074, 0x208e, - 0x2090, 0x2094, - 0x20a0, 0x20b5, - 0x20d0, 0x20eb, - 0x2100, 0x214c, - 0x2153, 0x2183, - 0x2190, 0x23db, - 0x2400, 0x2426, - 0x2440, 0x244a, - 0x2460, 0x269c, - 0x26a0, 0x26b1, - 0x2701, 0x2704, - 0x2706, 0x2709, - 0x270c, 0x2727, - 0x2729, 0x274b, - 0x274d, 0x274d, - 0x274f, 0x2752, - 0x2756, 0x2756, - 0x2758, 0x275e, - 0x2761, 0x2794, - 0x2798, 0x27af, - 0x27b1, 0x27be, - 0x27c0, 0x27c6, - 0x27d0, 0x27eb, - 0x27f0, 0x2b13, - 0x2c00, 0x2c2e, - 0x2c30, 0x2c5e, - 0x2c80, 0x2cea, - 0x2cf9, 0x2d25, - 0x2d30, 0x2d65, - 0x2d6f, 0x2d6f, - 0x2d80, 0x2d96, - 0x2da0, 0x2da6, - 0x2da8, 0x2dae, - 0x2db0, 0x2db6, - 0x2db8, 0x2dbe, - 0x2dc0, 0x2dc6, - 0x2dc8, 0x2dce, - 0x2dd0, 0x2dd6, - 0x2dd8, 0x2dde, - 0x2e00, 0x2e17, - 0x2e1c, 0x2e1d, - 0x2e80, 0x2e99, - 0x2e9b, 0x2ef3, - 0x2f00, 0x2fd5, - 0x2ff0, 0x2ffb, - 0x3000, 0x303f, - 0x3041, 0x3096, - 0x3099, 0x30ff, - 0x3105, 0x312c, - 0x3131, 0x318e, - 0x3190, 0x31b7, - 0x31c0, 0x31cf, - 0x31f0, 0x321e, - 0x3220, 0x3243, - 0x3250, 0x32fe, - 0x3300, 0x4db5, - 0x4dc0, 0x9fbb, - 0xa000, 0xa48c, - 0xa490, 0xa4c6, - 0xa700, 0xa716, - 0xa800, 0xa82b, - 0xac00, 0xd7a3, - 0xe000, 0xfa2d, - 0xfa30, 0xfa6a, - 0xfa70, 0xfad9, - 0xfb00, 0xfb06, - 0xfb13, 0xfb17, - 0xfb1d, 0xfb36, - 0xfb38, 0xfb3c, - 0xfb3e, 0xfb3e, - 0xfb40, 0xfb41, - 0xfb43, 0xfb44, - 0xfb46, 0xfbb1, - 0xfbd3, 0xfd3f, - 0xfd50, 0xfd8f, - 0xfd92, 0xfdc7, - 0xfdf0, 0xfdfd, - 0xfe00, 0xfe19, - 0xfe20, 0xfe23, - 0xfe30, 0xfe52, - 0xfe54, 0xfe66, - 0xfe68, 0xfe6b, - 0xfe70, 0xfe74, - 0xfe76, 0xfefc, - 0xfeff, 0xfeff, - 0xff01, 0xffbe, - 0xffc2, 0xffc7, - 0xffca, 0xffcf, - 0xffd2, 0xffd7, - 0xffda, 0xffdc, - 0xffe0, 0xffe6, - 0xffe8, 0xffee, - 0xfff9, 0xfffd, - 0x10000, 0x1000b, - 0x1000d, 0x10026, - 0x10028, 0x1003a, - 0x1003c, 0x1003d, - 0x1003f, 0x1004d, - 0x10050, 0x1005d, - 0x10080, 0x100fa, - 0x10100, 0x10102, - 0x10107, 0x10133, - 0x10137, 0x1018a, - 0x10300, 0x1031e, - 0x10320, 0x10323, - 0x10330, 0x1034a, - 0x10380, 0x1039d, - 0x1039f, 0x103c3, - 0x103c8, 0x103d5, - 0x10400, 0x1049d, - 0x104a0, 0x104a9, - 0x10800, 0x10805, - 0x10808, 0x10808, - 0x1080a, 0x10835, - 0x10837, 0x10838, - 0x1083c, 0x1083c, - 0x1083f, 0x1083f, - 0x10a00, 0x10a03, - 0x10a05, 0x10a06, - 0x10a0c, 0x10a13, - 0x10a15, 0x10a17, - 0x10a19, 0x10a33, - 0x10a38, 0x10a3a, - 0x10a3f, 0x10a47, - 0x10a50, 0x10a58, - 0x1d000, 0x1d0f5, - 0x1d100, 0x1d126, - 0x1d12a, 0x1d1dd, - 0x1d200, 0x1d245, - 0x1d300, 0x1d356, - 0x1d400, 0x1d454, - 0x1d456, 0x1d49c, - 0x1d49e, 0x1d49f, - 0x1d4a2, 0x1d4a2, - 0x1d4a5, 0x1d4a6, - 0x1d4a9, 0x1d4ac, - 0x1d4ae, 0x1d4b9, - 0x1d4bb, 0x1d4bb, - 0x1d4bd, 0x1d4c3, - 0x1d4c5, 0x1d505, - 0x1d507, 0x1d50a, - 0x1d50d, 0x1d514, - 0x1d516, 0x1d51c, - 0x1d51e, 0x1d539, - 0x1d53b, 0x1d53e, - 0x1d540, 0x1d544, - 0x1d546, 0x1d546, - 0x1d54a, 0x1d550, - 0x1d552, 0x1d6a5, - 0x1d6a8, 0x1d7c9, - 0x1d7ce, 0x1d7ff, - 0x20000, 0x2a6d6, - 0x2f800, 0x2fa1d, - 0xe0001, 0xe0001, - 0xe0020, 0xe007f, - 0xe0100, 0xe01ef, - 0xf0000, 0xffffd, - 0x100000, 0x10fffd -}; /* CR_Print */ - -/* 'Punct': [[:Punct:]] */ -static const OnigCodePoint CR_Punct[] = { - 96, - 0x0021, 0x0023, - 0x0025, 0x002a, - 0x002c, 0x002f, - 0x003a, 0x003b, - 0x003f, 0x0040, - 0x005b, 0x005d, - 0x005f, 0x005f, - 0x007b, 0x007b, - 0x007d, 0x007d, - 0x00a1, 0x00a1, - 0x00ab, 0x00ab, - 0x00b7, 0x00b7, - 0x00bb, 0x00bb, - 0x00bf, 0x00bf, - 0x037e, 0x037e, - 0x0387, 0x0387, - 0x055a, 0x055f, - 0x0589, 0x058a, - 0x05be, 0x05be, - 0x05c0, 0x05c0, - 0x05c3, 0x05c3, - 0x05c6, 0x05c6, - 0x05f3, 0x05f4, - 0x060c, 0x060d, - 0x061b, 0x061b, - 0x061e, 0x061f, - 0x066a, 0x066d, - 0x06d4, 0x06d4, - 0x0700, 0x070d, - 0x0964, 0x0965, - 0x0970, 0x0970, - 0x0df4, 0x0df4, - 0x0e4f, 0x0e4f, - 0x0e5a, 0x0e5b, - 0x0f04, 0x0f12, - 0x0f3a, 0x0f3d, - 0x0f85, 0x0f85, - 0x0fd0, 0x0fd1, - 0x104a, 0x104f, - 0x10fb, 0x10fb, - 0x1361, 0x1368, - 0x166d, 0x166e, - 0x169b, 0x169c, - 0x16eb, 0x16ed, - 0x1735, 0x1736, - 0x17d4, 0x17d6, - 0x17d8, 0x17da, - 0x1800, 0x180a, - 0x1944, 0x1945, - 0x19de, 0x19df, - 0x1a1e, 0x1a1f, - 0x2010, 0x2027, - 0x2030, 0x2043, - 0x2045, 0x2051, - 0x2053, 0x205e, - 0x207d, 0x207e, - 0x208d, 0x208e, - 0x2329, 0x232a, - 0x23b4, 0x23b6, - 0x2768, 0x2775, - 0x27c5, 0x27c6, - 0x27e6, 0x27eb, - 0x2983, 0x2998, - 0x29d8, 0x29db, - 0x29fc, 0x29fd, - 0x2cf9, 0x2cfc, - 0x2cfe, 0x2cff, - 0x2e00, 0x2e17, - 0x2e1c, 0x2e1d, - 0x3001, 0x3003, - 0x3008, 0x3011, - 0x3014, 0x301f, - 0x3030, 0x3030, - 0x303d, 0x303d, - 0x30a0, 0x30a0, - 0x30fb, 0x30fb, - 0xfd3e, 0xfd3f, - 0xfe10, 0xfe19, - 0xfe30, 0xfe52, - 0xfe54, 0xfe61, - 0xfe63, 0xfe63, - 0xfe68, 0xfe68, - 0xfe6a, 0xfe6b, - 0xff01, 0xff03, - 0xff05, 0xff0a, - 0xff0c, 0xff0f, - 0xff1a, 0xff1b, - 0xff1f, 0xff20, - 0xff3b, 0xff3d, - 0xff3f, 0xff3f, - 0xff5b, 0xff5b, - 0xff5d, 0xff5d, - 0xff5f, 0xff65, - 0x10100, 0x10101, - 0x1039f, 0x1039f, - 0x10a50, 0x10a58 -}; /* CR_Punct */ - -/* 'Space': [[:Space:]] */ -static const OnigCodePoint CR_Space[] = { - 11, - 0x0009, 0x000d, - 0x0020, 0x0020, - 0x0085, 0x0085, - 0x00a0, 0x00a0, - 0x1680, 0x1680, - 0x180e, 0x180e, - 0x2000, 0x200a, - 0x2028, 0x2029, - 0x202f, 0x202f, - 0x205f, 0x205f, - 0x3000, 0x3000 -}; /* CR_Space */ - -/* 'Upper': [[:Upper:]] */ -static const OnigCodePoint CR_Upper[] = { - 476, - 0x0041, 0x005a, - 0x00c0, 0x00d6, - 0x00d8, 0x00de, - 0x0100, 0x0100, - 0x0102, 0x0102, - 0x0104, 0x0104, - 0x0106, 0x0106, - 0x0108, 0x0108, - 0x010a, 0x010a, - 0x010c, 0x010c, - 0x010e, 0x010e, - 0x0110, 0x0110, - 0x0112, 0x0112, - 0x0114, 0x0114, - 0x0116, 0x0116, - 0x0118, 0x0118, - 0x011a, 0x011a, - 0x011c, 0x011c, - 0x011e, 0x011e, - 0x0120, 0x0120, - 0x0122, 0x0122, - 0x0124, 0x0124, - 0x0126, 0x0126, - 0x0128, 0x0128, - 0x012a, 0x012a, - 0x012c, 0x012c, - 0x012e, 0x012e, - 0x0130, 0x0130, - 0x0132, 0x0132, - 0x0134, 0x0134, - 0x0136, 0x0136, - 0x0139, 0x0139, - 0x013b, 0x013b, - 0x013d, 0x013d, - 0x013f, 0x013f, - 0x0141, 0x0141, - 0x0143, 0x0143, - 0x0145, 0x0145, - 0x0147, 0x0147, - 0x014a, 0x014a, - 0x014c, 0x014c, - 0x014e, 0x014e, - 0x0150, 0x0150, - 0x0152, 0x0152, - 0x0154, 0x0154, - 0x0156, 0x0156, - 0x0158, 0x0158, - 0x015a, 0x015a, - 0x015c, 0x015c, - 0x015e, 0x015e, - 0x0160, 0x0160, - 0x0162, 0x0162, - 0x0164, 0x0164, - 0x0166, 0x0166, - 0x0168, 0x0168, - 0x016a, 0x016a, - 0x016c, 0x016c, - 0x016e, 0x016e, - 0x0170, 0x0170, - 0x0172, 0x0172, - 0x0174, 0x0174, - 0x0176, 0x0176, - 0x0178, 0x0179, - 0x017b, 0x017b, - 0x017d, 0x017d, - 0x0181, 0x0182, - 0x0184, 0x0184, - 0x0186, 0x0187, - 0x0189, 0x018b, - 0x018e, 0x0191, - 0x0193, 0x0194, - 0x0196, 0x0198, - 0x019c, 0x019d, - 0x019f, 0x01a0, - 0x01a2, 0x01a2, - 0x01a4, 0x01a4, - 0x01a6, 0x01a7, - 0x01a9, 0x01a9, - 0x01ac, 0x01ac, - 0x01ae, 0x01af, - 0x01b1, 0x01b3, - 0x01b5, 0x01b5, - 0x01b7, 0x01b8, - 0x01bc, 0x01bc, - 0x01c4, 0x01c4, - 0x01c7, 0x01c7, - 0x01ca, 0x01ca, - 0x01cd, 0x01cd, - 0x01cf, 0x01cf, - 0x01d1, 0x01d1, - 0x01d3, 0x01d3, - 0x01d5, 0x01d5, - 0x01d7, 0x01d7, - 0x01d9, 0x01d9, - 0x01db, 0x01db, - 0x01de, 0x01de, - 0x01e0, 0x01e0, - 0x01e2, 0x01e2, - 0x01e4, 0x01e4, - 0x01e6, 0x01e6, - 0x01e8, 0x01e8, - 0x01ea, 0x01ea, - 0x01ec, 0x01ec, - 0x01ee, 0x01ee, - 0x01f1, 0x01f1, - 0x01f4, 0x01f4, - 0x01f6, 0x01f8, - 0x01fa, 0x01fa, - 0x01fc, 0x01fc, - 0x01fe, 0x01fe, - 0x0200, 0x0200, - 0x0202, 0x0202, - 0x0204, 0x0204, - 0x0206, 0x0206, - 0x0208, 0x0208, - 0x020a, 0x020a, - 0x020c, 0x020c, - 0x020e, 0x020e, - 0x0210, 0x0210, - 0x0212, 0x0212, - 0x0214, 0x0214, - 0x0216, 0x0216, - 0x0218, 0x0218, - 0x021a, 0x021a, - 0x021c, 0x021c, - 0x021e, 0x021e, - 0x0220, 0x0220, - 0x0222, 0x0222, - 0x0224, 0x0224, - 0x0226, 0x0226, - 0x0228, 0x0228, - 0x022a, 0x022a, - 0x022c, 0x022c, - 0x022e, 0x022e, - 0x0230, 0x0230, - 0x0232, 0x0232, - 0x023a, 0x023b, - 0x023d, 0x023e, - 0x0241, 0x0241, - 0x0386, 0x0386, - 0x0388, 0x038a, - 0x038c, 0x038c, - 0x038e, 0x038f, - 0x0391, 0x03a1, - 0x03a3, 0x03ab, - 0x03d2, 0x03d4, - 0x03d8, 0x03d8, - 0x03da, 0x03da, - 0x03dc, 0x03dc, - 0x03de, 0x03de, - 0x03e0, 0x03e0, - 0x03e2, 0x03e2, - 0x03e4, 0x03e4, - 0x03e6, 0x03e6, - 0x03e8, 0x03e8, - 0x03ea, 0x03ea, - 0x03ec, 0x03ec, - 0x03ee, 0x03ee, - 0x03f4, 0x03f4, - 0x03f7, 0x03f7, - 0x03f9, 0x03fa, - 0x03fd, 0x042f, - 0x0460, 0x0460, - 0x0462, 0x0462, - 0x0464, 0x0464, - 0x0466, 0x0466, - 0x0468, 0x0468, - 0x046a, 0x046a, - 0x046c, 0x046c, - 0x046e, 0x046e, - 0x0470, 0x0470, - 0x0472, 0x0472, - 0x0474, 0x0474, - 0x0476, 0x0476, - 0x0478, 0x0478, - 0x047a, 0x047a, - 0x047c, 0x047c, - 0x047e, 0x047e, - 0x0480, 0x0480, - 0x048a, 0x048a, - 0x048c, 0x048c, - 0x048e, 0x048e, - 0x0490, 0x0490, - 0x0492, 0x0492, - 0x0494, 0x0494, - 0x0496, 0x0496, - 0x0498, 0x0498, - 0x049a, 0x049a, - 0x049c, 0x049c, - 0x049e, 0x049e, - 0x04a0, 0x04a0, - 0x04a2, 0x04a2, - 0x04a4, 0x04a4, - 0x04a6, 0x04a6, - 0x04a8, 0x04a8, - 0x04aa, 0x04aa, - 0x04ac, 0x04ac, - 0x04ae, 0x04ae, - 0x04b0, 0x04b0, - 0x04b2, 0x04b2, - 0x04b4, 0x04b4, - 0x04b6, 0x04b6, - 0x04b8, 0x04b8, - 0x04ba, 0x04ba, - 0x04bc, 0x04bc, - 0x04be, 0x04be, - 0x04c0, 0x04c1, - 0x04c3, 0x04c3, - 0x04c5, 0x04c5, - 0x04c7, 0x04c7, - 0x04c9, 0x04c9, - 0x04cb, 0x04cb, - 0x04cd, 0x04cd, - 0x04d0, 0x04d0, - 0x04d2, 0x04d2, - 0x04d4, 0x04d4, - 0x04d6, 0x04d6, - 0x04d8, 0x04d8, - 0x04da, 0x04da, - 0x04dc, 0x04dc, - 0x04de, 0x04de, - 0x04e0, 0x04e0, - 0x04e2, 0x04e2, - 0x04e4, 0x04e4, - 0x04e6, 0x04e6, - 0x04e8, 0x04e8, - 0x04ea, 0x04ea, - 0x04ec, 0x04ec, - 0x04ee, 0x04ee, - 0x04f0, 0x04f0, - 0x04f2, 0x04f2, - 0x04f4, 0x04f4, - 0x04f6, 0x04f6, - 0x04f8, 0x04f8, - 0x0500, 0x0500, - 0x0502, 0x0502, - 0x0504, 0x0504, - 0x0506, 0x0506, - 0x0508, 0x0508, - 0x050a, 0x050a, - 0x050c, 0x050c, - 0x050e, 0x050e, - 0x0531, 0x0556, - 0x10a0, 0x10c5, - 0x1e00, 0x1e00, - 0x1e02, 0x1e02, - 0x1e04, 0x1e04, - 0x1e06, 0x1e06, - 0x1e08, 0x1e08, - 0x1e0a, 0x1e0a, - 0x1e0c, 0x1e0c, - 0x1e0e, 0x1e0e, - 0x1e10, 0x1e10, - 0x1e12, 0x1e12, - 0x1e14, 0x1e14, - 0x1e16, 0x1e16, - 0x1e18, 0x1e18, - 0x1e1a, 0x1e1a, - 0x1e1c, 0x1e1c, - 0x1e1e, 0x1e1e, - 0x1e20, 0x1e20, - 0x1e22, 0x1e22, - 0x1e24, 0x1e24, - 0x1e26, 0x1e26, - 0x1e28, 0x1e28, - 0x1e2a, 0x1e2a, - 0x1e2c, 0x1e2c, - 0x1e2e, 0x1e2e, - 0x1e30, 0x1e30, - 0x1e32, 0x1e32, - 0x1e34, 0x1e34, - 0x1e36, 0x1e36, - 0x1e38, 0x1e38, - 0x1e3a, 0x1e3a, - 0x1e3c, 0x1e3c, - 0x1e3e, 0x1e3e, - 0x1e40, 0x1e40, - 0x1e42, 0x1e42, - 0x1e44, 0x1e44, - 0x1e46, 0x1e46, - 0x1e48, 0x1e48, - 0x1e4a, 0x1e4a, - 0x1e4c, 0x1e4c, - 0x1e4e, 0x1e4e, - 0x1e50, 0x1e50, - 0x1e52, 0x1e52, - 0x1e54, 0x1e54, - 0x1e56, 0x1e56, - 0x1e58, 0x1e58, - 0x1e5a, 0x1e5a, - 0x1e5c, 0x1e5c, - 0x1e5e, 0x1e5e, - 0x1e60, 0x1e60, - 0x1e62, 0x1e62, - 0x1e64, 0x1e64, - 0x1e66, 0x1e66, - 0x1e68, 0x1e68, - 0x1e6a, 0x1e6a, - 0x1e6c, 0x1e6c, - 0x1e6e, 0x1e6e, - 0x1e70, 0x1e70, - 0x1e72, 0x1e72, - 0x1e74, 0x1e74, - 0x1e76, 0x1e76, - 0x1e78, 0x1e78, - 0x1e7a, 0x1e7a, - 0x1e7c, 0x1e7c, - 0x1e7e, 0x1e7e, - 0x1e80, 0x1e80, - 0x1e82, 0x1e82, - 0x1e84, 0x1e84, - 0x1e86, 0x1e86, - 0x1e88, 0x1e88, - 0x1e8a, 0x1e8a, - 0x1e8c, 0x1e8c, - 0x1e8e, 0x1e8e, - 0x1e90, 0x1e90, - 0x1e92, 0x1e92, - 0x1e94, 0x1e94, - 0x1ea0, 0x1ea0, - 0x1ea2, 0x1ea2, - 0x1ea4, 0x1ea4, - 0x1ea6, 0x1ea6, - 0x1ea8, 0x1ea8, - 0x1eaa, 0x1eaa, - 0x1eac, 0x1eac, - 0x1eae, 0x1eae, - 0x1eb0, 0x1eb0, - 0x1eb2, 0x1eb2, - 0x1eb4, 0x1eb4, - 0x1eb6, 0x1eb6, - 0x1eb8, 0x1eb8, - 0x1eba, 0x1eba, - 0x1ebc, 0x1ebc, - 0x1ebe, 0x1ebe, - 0x1ec0, 0x1ec0, - 0x1ec2, 0x1ec2, - 0x1ec4, 0x1ec4, - 0x1ec6, 0x1ec6, - 0x1ec8, 0x1ec8, - 0x1eca, 0x1eca, - 0x1ecc, 0x1ecc, - 0x1ece, 0x1ece, - 0x1ed0, 0x1ed0, - 0x1ed2, 0x1ed2, - 0x1ed4, 0x1ed4, - 0x1ed6, 0x1ed6, - 0x1ed8, 0x1ed8, - 0x1eda, 0x1eda, - 0x1edc, 0x1edc, - 0x1ede, 0x1ede, - 0x1ee0, 0x1ee0, - 0x1ee2, 0x1ee2, - 0x1ee4, 0x1ee4, - 0x1ee6, 0x1ee6, - 0x1ee8, 0x1ee8, - 0x1eea, 0x1eea, - 0x1eec, 0x1eec, - 0x1eee, 0x1eee, - 0x1ef0, 0x1ef0, - 0x1ef2, 0x1ef2, - 0x1ef4, 0x1ef4, - 0x1ef6, 0x1ef6, - 0x1ef8, 0x1ef8, - 0x1f08, 0x1f0f, - 0x1f18, 0x1f1d, - 0x1f28, 0x1f2f, - 0x1f38, 0x1f3f, - 0x1f48, 0x1f4d, - 0x1f59, 0x1f59, - 0x1f5b, 0x1f5b, - 0x1f5d, 0x1f5d, - 0x1f5f, 0x1f5f, - 0x1f68, 0x1f6f, - 0x1fb8, 0x1fbb, - 0x1fc8, 0x1fcb, - 0x1fd8, 0x1fdb, - 0x1fe8, 0x1fec, - 0x1ff8, 0x1ffb, - 0x2102, 0x2102, - 0x2107, 0x2107, - 0x210b, 0x210d, - 0x2110, 0x2112, - 0x2115, 0x2115, - 0x2119, 0x211d, - 0x2124, 0x2124, - 0x2126, 0x2126, - 0x2128, 0x2128, - 0x212a, 0x212d, - 0x2130, 0x2131, - 0x2133, 0x2133, - 0x213e, 0x213f, - 0x2145, 0x2145, - 0x2c00, 0x2c2e, - 0x2c80, 0x2c80, - 0x2c82, 0x2c82, - 0x2c84, 0x2c84, - 0x2c86, 0x2c86, - 0x2c88, 0x2c88, - 0x2c8a, 0x2c8a, - 0x2c8c, 0x2c8c, - 0x2c8e, 0x2c8e, - 0x2c90, 0x2c90, - 0x2c92, 0x2c92, - 0x2c94, 0x2c94, - 0x2c96, 0x2c96, - 0x2c98, 0x2c98, - 0x2c9a, 0x2c9a, - 0x2c9c, 0x2c9c, - 0x2c9e, 0x2c9e, - 0x2ca0, 0x2ca0, - 0x2ca2, 0x2ca2, - 0x2ca4, 0x2ca4, - 0x2ca6, 0x2ca6, - 0x2ca8, 0x2ca8, - 0x2caa, 0x2caa, - 0x2cac, 0x2cac, - 0x2cae, 0x2cae, - 0x2cb0, 0x2cb0, - 0x2cb2, 0x2cb2, - 0x2cb4, 0x2cb4, - 0x2cb6, 0x2cb6, - 0x2cb8, 0x2cb8, - 0x2cba, 0x2cba, - 0x2cbc, 0x2cbc, - 0x2cbe, 0x2cbe, - 0x2cc0, 0x2cc0, - 0x2cc2, 0x2cc2, - 0x2cc4, 0x2cc4, - 0x2cc6, 0x2cc6, - 0x2cc8, 0x2cc8, - 0x2cca, 0x2cca, - 0x2ccc, 0x2ccc, - 0x2cce, 0x2cce, - 0x2cd0, 0x2cd0, - 0x2cd2, 0x2cd2, - 0x2cd4, 0x2cd4, - 0x2cd6, 0x2cd6, - 0x2cd8, 0x2cd8, - 0x2cda, 0x2cda, - 0x2cdc, 0x2cdc, - 0x2cde, 0x2cde, - 0x2ce0, 0x2ce0, - 0x2ce2, 0x2ce2, - 0xff21, 0xff3a, - 0x10400, 0x10427, - 0x1d400, 0x1d419, - 0x1d434, 0x1d44d, - 0x1d468, 0x1d481, - 0x1d49c, 0x1d49c, - 0x1d49e, 0x1d49f, - 0x1d4a2, 0x1d4a2, - 0x1d4a5, 0x1d4a6, - 0x1d4a9, 0x1d4ac, - 0x1d4ae, 0x1d4b5, - 0x1d4d0, 0x1d4e9, - 0x1d504, 0x1d505, - 0x1d507, 0x1d50a, - 0x1d50d, 0x1d514, - 0x1d516, 0x1d51c, - 0x1d538, 0x1d539, - 0x1d53b, 0x1d53e, - 0x1d540, 0x1d544, - 0x1d546, 0x1d546, - 0x1d54a, 0x1d550, - 0x1d56c, 0x1d585, - 0x1d5a0, 0x1d5b9, - 0x1d5d4, 0x1d5ed, - 0x1d608, 0x1d621, - 0x1d63c, 0x1d655, - 0x1d670, 0x1d689, - 0x1d6a8, 0x1d6c0, - 0x1d6e2, 0x1d6fa, - 0x1d71c, 0x1d734, - 0x1d756, 0x1d76e, - 0x1d790, 0x1d7a8 -}; /* CR_Upper */ - -/* 'XDigit': [[:XDigit:]] */ -static const OnigCodePoint CR_XDigit[] = { - 3, - 0x0030, 0x0039, - 0x0041, 0x0046, - 0x0061, 0x0066 -}; /* CR_XDigit */ - -/* 'Word': [[:Word:]] */ -static const OnigCodePoint CR_Word[] = { - 464, - 0x0030, 0x0039, - 0x0041, 0x005a, - 0x005f, 0x005f, - 0x0061, 0x007a, - 0x00aa, 0x00aa, - 0x00b2, 0x00b3, - 0x00b5, 0x00b5, - 0x00b9, 0x00ba, - 0x00bc, 0x00be, - 0x00c0, 0x00d6, - 0x00d8, 0x00f6, - 0x00f8, 0x0241, - 0x0250, 0x02c1, - 0x02c6, 0x02d1, - 0x02e0, 0x02e4, - 0x02ee, 0x02ee, - 0x0300, 0x036f, - 0x037a, 0x037a, - 0x0386, 0x0386, - 0x0388, 0x038a, - 0x038c, 0x038c, - 0x038e, 0x03a1, - 0x03a3, 0x03ce, - 0x03d0, 0x03f5, - 0x03f7, 0x0481, - 0x0483, 0x0486, - 0x0488, 0x04ce, - 0x04d0, 0x04f9, - 0x0500, 0x050f, - 0x0531, 0x0556, - 0x0559, 0x0559, - 0x0561, 0x0587, - 0x0591, 0x05b9, - 0x05bb, 0x05bd, - 0x05bf, 0x05bf, - 0x05c1, 0x05c2, - 0x05c4, 0x05c5, - 0x05c7, 0x05c7, - 0x05d0, 0x05ea, - 0x05f0, 0x05f2, - 0x0610, 0x0615, - 0x0621, 0x063a, - 0x0640, 0x065e, - 0x0660, 0x0669, - 0x066e, 0x06d3, - 0x06d5, 0x06dc, - 0x06de, 0x06e8, - 0x06ea, 0x06fc, - 0x06ff, 0x06ff, - 0x0710, 0x074a, - 0x074d, 0x076d, - 0x0780, 0x07b1, - 0x0901, 0x0939, - 0x093c, 0x094d, - 0x0950, 0x0954, - 0x0958, 0x0963, - 0x0966, 0x096f, - 0x097d, 0x097d, - 0x0981, 0x0983, - 0x0985, 0x098c, - 0x098f, 0x0990, - 0x0993, 0x09a8, - 0x09aa, 0x09b0, - 0x09b2, 0x09b2, - 0x09b6, 0x09b9, - 0x09bc, 0x09c4, - 0x09c7, 0x09c8, - 0x09cb, 0x09ce, - 0x09d7, 0x09d7, - 0x09dc, 0x09dd, - 0x09df, 0x09e3, - 0x09e6, 0x09f1, - 0x09f4, 0x09f9, - 0x0a01, 0x0a03, - 0x0a05, 0x0a0a, - 0x0a0f, 0x0a10, - 0x0a13, 0x0a28, - 0x0a2a, 0x0a30, - 0x0a32, 0x0a33, - 0x0a35, 0x0a36, - 0x0a38, 0x0a39, - 0x0a3c, 0x0a3c, - 0x0a3e, 0x0a42, - 0x0a47, 0x0a48, - 0x0a4b, 0x0a4d, - 0x0a59, 0x0a5c, - 0x0a5e, 0x0a5e, - 0x0a66, 0x0a74, - 0x0a81, 0x0a83, - 0x0a85, 0x0a8d, - 0x0a8f, 0x0a91, - 0x0a93, 0x0aa8, - 0x0aaa, 0x0ab0, - 0x0ab2, 0x0ab3, - 0x0ab5, 0x0ab9, - 0x0abc, 0x0ac5, - 0x0ac7, 0x0ac9, - 0x0acb, 0x0acd, - 0x0ad0, 0x0ad0, - 0x0ae0, 0x0ae3, - 0x0ae6, 0x0aef, - 0x0b01, 0x0b03, - 0x0b05, 0x0b0c, - 0x0b0f, 0x0b10, - 0x0b13, 0x0b28, - 0x0b2a, 0x0b30, - 0x0b32, 0x0b33, - 0x0b35, 0x0b39, - 0x0b3c, 0x0b43, - 0x0b47, 0x0b48, - 0x0b4b, 0x0b4d, - 0x0b56, 0x0b57, - 0x0b5c, 0x0b5d, - 0x0b5f, 0x0b61, - 0x0b66, 0x0b6f, - 0x0b71, 0x0b71, - 0x0b82, 0x0b83, - 0x0b85, 0x0b8a, - 0x0b8e, 0x0b90, - 0x0b92, 0x0b95, - 0x0b99, 0x0b9a, - 0x0b9c, 0x0b9c, - 0x0b9e, 0x0b9f, - 0x0ba3, 0x0ba4, - 0x0ba8, 0x0baa, - 0x0bae, 0x0bb9, - 0x0bbe, 0x0bc2, - 0x0bc6, 0x0bc8, - 0x0bca, 0x0bcd, - 0x0bd7, 0x0bd7, - 0x0be6, 0x0bf2, - 0x0c01, 0x0c03, - 0x0c05, 0x0c0c, - 0x0c0e, 0x0c10, - 0x0c12, 0x0c28, - 0x0c2a, 0x0c33, - 0x0c35, 0x0c39, - 0x0c3e, 0x0c44, - 0x0c46, 0x0c48, - 0x0c4a, 0x0c4d, - 0x0c55, 0x0c56, - 0x0c60, 0x0c61, - 0x0c66, 0x0c6f, - 0x0c82, 0x0c83, - 0x0c85, 0x0c8c, - 0x0c8e, 0x0c90, - 0x0c92, 0x0ca8, - 0x0caa, 0x0cb3, - 0x0cb5, 0x0cb9, - 0x0cbc, 0x0cc4, - 0x0cc6, 0x0cc8, - 0x0cca, 0x0ccd, - 0x0cd5, 0x0cd6, - 0x0cde, 0x0cde, - 0x0ce0, 0x0ce1, - 0x0ce6, 0x0cef, - 0x0d02, 0x0d03, - 0x0d05, 0x0d0c, - 0x0d0e, 0x0d10, - 0x0d12, 0x0d28, - 0x0d2a, 0x0d39, - 0x0d3e, 0x0d43, - 0x0d46, 0x0d48, - 0x0d4a, 0x0d4d, - 0x0d57, 0x0d57, - 0x0d60, 0x0d61, - 0x0d66, 0x0d6f, - 0x0d82, 0x0d83, - 0x0d85, 0x0d96, - 0x0d9a, 0x0db1, - 0x0db3, 0x0dbb, - 0x0dbd, 0x0dbd, - 0x0dc0, 0x0dc6, - 0x0dca, 0x0dca, - 0x0dcf, 0x0dd4, - 0x0dd6, 0x0dd6, - 0x0dd8, 0x0ddf, - 0x0df2, 0x0df3, - 0x0e01, 0x0e3a, - 0x0e40, 0x0e4e, - 0x0e50, 0x0e59, - 0x0e81, 0x0e82, - 0x0e84, 0x0e84, - 0x0e87, 0x0e88, - 0x0e8a, 0x0e8a, - 0x0e8d, 0x0e8d, - 0x0e94, 0x0e97, - 0x0e99, 0x0e9f, - 0x0ea1, 0x0ea3, - 0x0ea5, 0x0ea5, - 0x0ea7, 0x0ea7, - 0x0eaa, 0x0eab, - 0x0ead, 0x0eb9, - 0x0ebb, 0x0ebd, - 0x0ec0, 0x0ec4, - 0x0ec6, 0x0ec6, - 0x0ec8, 0x0ecd, - 0x0ed0, 0x0ed9, - 0x0edc, 0x0edd, - 0x0f00, 0x0f00, - 0x0f18, 0x0f19, - 0x0f20, 0x0f33, - 0x0f35, 0x0f35, - 0x0f37, 0x0f37, - 0x0f39, 0x0f39, - 0x0f3e, 0x0f47, - 0x0f49, 0x0f6a, - 0x0f71, 0x0f84, - 0x0f86, 0x0f8b, - 0x0f90, 0x0f97, - 0x0f99, 0x0fbc, - 0x0fc6, 0x0fc6, - 0x1000, 0x1021, - 0x1023, 0x1027, - 0x1029, 0x102a, - 0x102c, 0x1032, - 0x1036, 0x1039, - 0x1040, 0x1049, - 0x1050, 0x1059, - 0x10a0, 0x10c5, - 0x10d0, 0x10fa, - 0x10fc, 0x10fc, - 0x1100, 0x1159, - 0x115f, 0x11a2, - 0x11a8, 0x11f9, - 0x1200, 0x1248, - 0x124a, 0x124d, - 0x1250, 0x1256, - 0x1258, 0x1258, - 0x125a, 0x125d, - 0x1260, 0x1288, - 0x128a, 0x128d, - 0x1290, 0x12b0, - 0x12b2, 0x12b5, - 0x12b8, 0x12be, - 0x12c0, 0x12c0, - 0x12c2, 0x12c5, - 0x12c8, 0x12d6, - 0x12d8, 0x1310, - 0x1312, 0x1315, - 0x1318, 0x135a, - 0x135f, 0x135f, - 0x1369, 0x137c, - 0x1380, 0x138f, - 0x13a0, 0x13f4, - 0x1401, 0x166c, - 0x166f, 0x1676, - 0x1681, 0x169a, - 0x16a0, 0x16ea, - 0x16ee, 0x16f0, - 0x1700, 0x170c, - 0x170e, 0x1714, - 0x1720, 0x1734, - 0x1740, 0x1753, - 0x1760, 0x176c, - 0x176e, 0x1770, - 0x1772, 0x1773, - 0x1780, 0x17b3, - 0x17b6, 0x17d3, - 0x17d7, 0x17d7, - 0x17dc, 0x17dd, - 0x17e0, 0x17e9, - 0x17f0, 0x17f9, - 0x180b, 0x180d, - 0x1810, 0x1819, - 0x1820, 0x1877, - 0x1880, 0x18a9, - 0x1900, 0x191c, - 0x1920, 0x192b, - 0x1930, 0x193b, - 0x1946, 0x196d, - 0x1970, 0x1974, - 0x1980, 0x19a9, - 0x19b0, 0x19c9, - 0x19d0, 0x19d9, - 0x1a00, 0x1a1b, - 0x1d00, 0x1dc3, - 0x1e00, 0x1e9b, - 0x1ea0, 0x1ef9, - 0x1f00, 0x1f15, - 0x1f18, 0x1f1d, - 0x1f20, 0x1f45, - 0x1f48, 0x1f4d, - 0x1f50, 0x1f57, - 0x1f59, 0x1f59, - 0x1f5b, 0x1f5b, - 0x1f5d, 0x1f5d, - 0x1f5f, 0x1f7d, - 0x1f80, 0x1fb4, - 0x1fb6, 0x1fbc, - 0x1fbe, 0x1fbe, - 0x1fc2, 0x1fc4, - 0x1fc6, 0x1fcc, - 0x1fd0, 0x1fd3, - 0x1fd6, 0x1fdb, - 0x1fe0, 0x1fec, - 0x1ff2, 0x1ff4, - 0x1ff6, 0x1ffc, - 0x203f, 0x2040, - 0x2054, 0x2054, - 0x2070, 0x2071, - 0x2074, 0x2079, - 0x207f, 0x2089, - 0x2090, 0x2094, - 0x20d0, 0x20eb, - 0x2102, 0x2102, - 0x2107, 0x2107, - 0x210a, 0x2113, - 0x2115, 0x2115, - 0x2119, 0x211d, - 0x2124, 0x2124, - 0x2126, 0x2126, - 0x2128, 0x2128, - 0x212a, 0x212d, - 0x212f, 0x2131, - 0x2133, 0x2139, - 0x213c, 0x213f, - 0x2145, 0x2149, - 0x2153, 0x2183, - 0x2460, 0x249b, - 0x24ea, 0x24ff, - 0x2776, 0x2793, - 0x2c00, 0x2c2e, - 0x2c30, 0x2c5e, - 0x2c80, 0x2ce4, - 0x2cfd, 0x2cfd, - 0x2d00, 0x2d25, - 0x2d30, 0x2d65, - 0x2d6f, 0x2d6f, - 0x2d80, 0x2d96, - 0x2da0, 0x2da6, - 0x2da8, 0x2dae, - 0x2db0, 0x2db6, - 0x2db8, 0x2dbe, - 0x2dc0, 0x2dc6, - 0x2dc8, 0x2dce, - 0x2dd0, 0x2dd6, - 0x2dd8, 0x2dde, - 0x3005, 0x3007, - 0x3021, 0x302f, - 0x3031, 0x3035, - 0x3038, 0x303c, - 0x3041, 0x3096, - 0x3099, 0x309a, - 0x309d, 0x309f, - 0x30a1, 0x30fa, - 0x30fc, 0x30ff, - 0x3105, 0x312c, - 0x3131, 0x318e, - 0x3192, 0x3195, - 0x31a0, 0x31b7, - 0x31f0, 0x31ff, - 0x3220, 0x3229, - 0x3251, 0x325f, - 0x3280, 0x3289, - 0x32b1, 0x32bf, - 0x3400, 0x4db5, - 0x4e00, 0x9fbb, - 0xa000, 0xa48c, - 0xa800, 0xa827, - 0xac00, 0xd7a3, - 0xf900, 0xfa2d, - 0xfa30, 0xfa6a, - 0xfa70, 0xfad9, - 0xfb00, 0xfb06, - 0xfb13, 0xfb17, - 0xfb1d, 0xfb28, - 0xfb2a, 0xfb36, - 0xfb38, 0xfb3c, - 0xfb3e, 0xfb3e, - 0xfb40, 0xfb41, - 0xfb43, 0xfb44, - 0xfb46, 0xfbb1, - 0xfbd3, 0xfd3d, - 0xfd50, 0xfd8f, - 0xfd92, 0xfdc7, - 0xfdf0, 0xfdfb, - 0xfe00, 0xfe0f, - 0xfe20, 0xfe23, - 0xfe33, 0xfe34, - 0xfe4d, 0xfe4f, - 0xfe70, 0xfe74, - 0xfe76, 0xfefc, - 0xff10, 0xff19, - 0xff21, 0xff3a, - 0xff3f, 0xff3f, - 0xff41, 0xff5a, - 0xff66, 0xffbe, - 0xffc2, 0xffc7, - 0xffca, 0xffcf, - 0xffd2, 0xffd7, - 0xffda, 0xffdc, - 0x10000, 0x1000b, - 0x1000d, 0x10026, - 0x10028, 0x1003a, - 0x1003c, 0x1003d, - 0x1003f, 0x1004d, - 0x10050, 0x1005d, - 0x10080, 0x100fa, - 0x10107, 0x10133, - 0x10140, 0x10178, - 0x1018a, 0x1018a, - 0x10300, 0x1031e, - 0x10320, 0x10323, - 0x10330, 0x1034a, - 0x10380, 0x1039d, - 0x103a0, 0x103c3, - 0x103c8, 0x103cf, - 0x103d1, 0x103d5, - 0x10400, 0x1049d, - 0x104a0, 0x104a9, - 0x10800, 0x10805, - 0x10808, 0x10808, - 0x1080a, 0x10835, - 0x10837, 0x10838, - 0x1083c, 0x1083c, - 0x1083f, 0x1083f, - 0x10a00, 0x10a03, - 0x10a05, 0x10a06, - 0x10a0c, 0x10a13, - 0x10a15, 0x10a17, - 0x10a19, 0x10a33, - 0x10a38, 0x10a3a, - 0x10a3f, 0x10a47, - 0x1d165, 0x1d169, - 0x1d16d, 0x1d172, - 0x1d17b, 0x1d182, - 0x1d185, 0x1d18b, - 0x1d1aa, 0x1d1ad, - 0x1d242, 0x1d244, - 0x1d400, 0x1d454, - 0x1d456, 0x1d49c, - 0x1d49e, 0x1d49f, - 0x1d4a2, 0x1d4a2, - 0x1d4a5, 0x1d4a6, - 0x1d4a9, 0x1d4ac, - 0x1d4ae, 0x1d4b9, - 0x1d4bb, 0x1d4bb, - 0x1d4bd, 0x1d4c3, - 0x1d4c5, 0x1d505, - 0x1d507, 0x1d50a, - 0x1d50d, 0x1d514, - 0x1d516, 0x1d51c, - 0x1d51e, 0x1d539, - 0x1d53b, 0x1d53e, - 0x1d540, 0x1d544, - 0x1d546, 0x1d546, - 0x1d54a, 0x1d550, - 0x1d552, 0x1d6a5, - 0x1d6a8, 0x1d6c0, - 0x1d6c2, 0x1d6da, - 0x1d6dc, 0x1d6fa, - 0x1d6fc, 0x1d714, - 0x1d716, 0x1d734, - 0x1d736, 0x1d74e, - 0x1d750, 0x1d76e, - 0x1d770, 0x1d788, - 0x1d78a, 0x1d7a8, - 0x1d7aa, 0x1d7c2, - 0x1d7c4, 0x1d7c9, - 0x1d7ce, 0x1d7ff, - 0x20000, 0x2a6d6, - 0x2f800, 0x2fa1d, - 0xe0100, 0xe01ef -}; /* CR_Word */ - -/* 'Alnum': [[:Alnum:]] */ -static const OnigCodePoint CR_Alnum[] = { - 436, - 0x0030, 0x0039, - 0x0041, 0x005a, - 0x0061, 0x007a, - 0x00aa, 0x00aa, - 0x00b5, 0x00b5, - 0x00ba, 0x00ba, - 0x00c0, 0x00d6, - 0x00d8, 0x00f6, - 0x00f8, 0x0241, - 0x0250, 0x02c1, - 0x02c6, 0x02d1, - 0x02e0, 0x02e4, - 0x02ee, 0x02ee, - 0x0300, 0x036f, - 0x037a, 0x037a, - 0x0386, 0x0386, - 0x0388, 0x038a, - 0x038c, 0x038c, - 0x038e, 0x03a1, - 0x03a3, 0x03ce, - 0x03d0, 0x03f5, - 0x03f7, 0x0481, - 0x0483, 0x0486, - 0x0488, 0x04ce, - 0x04d0, 0x04f9, - 0x0500, 0x050f, - 0x0531, 0x0556, - 0x0559, 0x0559, - 0x0561, 0x0587, - 0x0591, 0x05b9, - 0x05bb, 0x05bd, - 0x05bf, 0x05bf, - 0x05c1, 0x05c2, - 0x05c4, 0x05c5, - 0x05c7, 0x05c7, - 0x05d0, 0x05ea, - 0x05f0, 0x05f2, - 0x0610, 0x0615, - 0x0621, 0x063a, - 0x0640, 0x065e, - 0x0660, 0x0669, - 0x066e, 0x06d3, - 0x06d5, 0x06dc, - 0x06de, 0x06e8, - 0x06ea, 0x06fc, - 0x06ff, 0x06ff, - 0x0710, 0x074a, - 0x074d, 0x076d, - 0x0780, 0x07b1, - 0x0901, 0x0939, - 0x093c, 0x094d, - 0x0950, 0x0954, - 0x0958, 0x0963, - 0x0966, 0x096f, - 0x097d, 0x097d, - 0x0981, 0x0983, - 0x0985, 0x098c, - 0x098f, 0x0990, - 0x0993, 0x09a8, - 0x09aa, 0x09b0, - 0x09b2, 0x09b2, - 0x09b6, 0x09b9, - 0x09bc, 0x09c4, - 0x09c7, 0x09c8, - 0x09cb, 0x09ce, - 0x09d7, 0x09d7, - 0x09dc, 0x09dd, - 0x09df, 0x09e3, - 0x09e6, 0x09f1, - 0x0a01, 0x0a03, - 0x0a05, 0x0a0a, - 0x0a0f, 0x0a10, - 0x0a13, 0x0a28, - 0x0a2a, 0x0a30, - 0x0a32, 0x0a33, - 0x0a35, 0x0a36, - 0x0a38, 0x0a39, - 0x0a3c, 0x0a3c, - 0x0a3e, 0x0a42, - 0x0a47, 0x0a48, - 0x0a4b, 0x0a4d, - 0x0a59, 0x0a5c, - 0x0a5e, 0x0a5e, - 0x0a66, 0x0a74, - 0x0a81, 0x0a83, - 0x0a85, 0x0a8d, - 0x0a8f, 0x0a91, - 0x0a93, 0x0aa8, - 0x0aaa, 0x0ab0, - 0x0ab2, 0x0ab3, - 0x0ab5, 0x0ab9, - 0x0abc, 0x0ac5, - 0x0ac7, 0x0ac9, - 0x0acb, 0x0acd, - 0x0ad0, 0x0ad0, - 0x0ae0, 0x0ae3, - 0x0ae6, 0x0aef, - 0x0b01, 0x0b03, - 0x0b05, 0x0b0c, - 0x0b0f, 0x0b10, - 0x0b13, 0x0b28, - 0x0b2a, 0x0b30, - 0x0b32, 0x0b33, - 0x0b35, 0x0b39, - 0x0b3c, 0x0b43, - 0x0b47, 0x0b48, - 0x0b4b, 0x0b4d, - 0x0b56, 0x0b57, - 0x0b5c, 0x0b5d, - 0x0b5f, 0x0b61, - 0x0b66, 0x0b6f, - 0x0b71, 0x0b71, - 0x0b82, 0x0b83, - 0x0b85, 0x0b8a, - 0x0b8e, 0x0b90, - 0x0b92, 0x0b95, - 0x0b99, 0x0b9a, - 0x0b9c, 0x0b9c, - 0x0b9e, 0x0b9f, - 0x0ba3, 0x0ba4, - 0x0ba8, 0x0baa, - 0x0bae, 0x0bb9, - 0x0bbe, 0x0bc2, - 0x0bc6, 0x0bc8, - 0x0bca, 0x0bcd, - 0x0bd7, 0x0bd7, - 0x0be6, 0x0bef, - 0x0c01, 0x0c03, - 0x0c05, 0x0c0c, - 0x0c0e, 0x0c10, - 0x0c12, 0x0c28, - 0x0c2a, 0x0c33, - 0x0c35, 0x0c39, - 0x0c3e, 0x0c44, - 0x0c46, 0x0c48, - 0x0c4a, 0x0c4d, - 0x0c55, 0x0c56, - 0x0c60, 0x0c61, - 0x0c66, 0x0c6f, - 0x0c82, 0x0c83, - 0x0c85, 0x0c8c, - 0x0c8e, 0x0c90, - 0x0c92, 0x0ca8, - 0x0caa, 0x0cb3, - 0x0cb5, 0x0cb9, - 0x0cbc, 0x0cc4, - 0x0cc6, 0x0cc8, - 0x0cca, 0x0ccd, - 0x0cd5, 0x0cd6, - 0x0cde, 0x0cde, - 0x0ce0, 0x0ce1, - 0x0ce6, 0x0cef, - 0x0d02, 0x0d03, - 0x0d05, 0x0d0c, - 0x0d0e, 0x0d10, - 0x0d12, 0x0d28, - 0x0d2a, 0x0d39, - 0x0d3e, 0x0d43, - 0x0d46, 0x0d48, - 0x0d4a, 0x0d4d, - 0x0d57, 0x0d57, - 0x0d60, 0x0d61, - 0x0d66, 0x0d6f, - 0x0d82, 0x0d83, - 0x0d85, 0x0d96, - 0x0d9a, 0x0db1, - 0x0db3, 0x0dbb, - 0x0dbd, 0x0dbd, - 0x0dc0, 0x0dc6, - 0x0dca, 0x0dca, - 0x0dcf, 0x0dd4, - 0x0dd6, 0x0dd6, - 0x0dd8, 0x0ddf, - 0x0df2, 0x0df3, - 0x0e01, 0x0e3a, - 0x0e40, 0x0e4e, - 0x0e50, 0x0e59, - 0x0e81, 0x0e82, - 0x0e84, 0x0e84, - 0x0e87, 0x0e88, - 0x0e8a, 0x0e8a, - 0x0e8d, 0x0e8d, - 0x0e94, 0x0e97, - 0x0e99, 0x0e9f, - 0x0ea1, 0x0ea3, - 0x0ea5, 0x0ea5, - 0x0ea7, 0x0ea7, - 0x0eaa, 0x0eab, - 0x0ead, 0x0eb9, - 0x0ebb, 0x0ebd, - 0x0ec0, 0x0ec4, - 0x0ec6, 0x0ec6, - 0x0ec8, 0x0ecd, - 0x0ed0, 0x0ed9, - 0x0edc, 0x0edd, - 0x0f00, 0x0f00, - 0x0f18, 0x0f19, - 0x0f20, 0x0f29, - 0x0f35, 0x0f35, - 0x0f37, 0x0f37, - 0x0f39, 0x0f39, - 0x0f3e, 0x0f47, - 0x0f49, 0x0f6a, - 0x0f71, 0x0f84, - 0x0f86, 0x0f8b, - 0x0f90, 0x0f97, - 0x0f99, 0x0fbc, - 0x0fc6, 0x0fc6, - 0x1000, 0x1021, - 0x1023, 0x1027, - 0x1029, 0x102a, - 0x102c, 0x1032, - 0x1036, 0x1039, - 0x1040, 0x1049, - 0x1050, 0x1059, - 0x10a0, 0x10c5, - 0x10d0, 0x10fa, - 0x10fc, 0x10fc, - 0x1100, 0x1159, - 0x115f, 0x11a2, - 0x11a8, 0x11f9, - 0x1200, 0x1248, - 0x124a, 0x124d, - 0x1250, 0x1256, - 0x1258, 0x1258, - 0x125a, 0x125d, - 0x1260, 0x1288, - 0x128a, 0x128d, - 0x1290, 0x12b0, - 0x12b2, 0x12b5, - 0x12b8, 0x12be, - 0x12c0, 0x12c0, - 0x12c2, 0x12c5, - 0x12c8, 0x12d6, - 0x12d8, 0x1310, - 0x1312, 0x1315, - 0x1318, 0x135a, - 0x135f, 0x135f, - 0x1380, 0x138f, - 0x13a0, 0x13f4, - 0x1401, 0x166c, - 0x166f, 0x1676, - 0x1681, 0x169a, - 0x16a0, 0x16ea, - 0x1700, 0x170c, - 0x170e, 0x1714, - 0x1720, 0x1734, - 0x1740, 0x1753, - 0x1760, 0x176c, - 0x176e, 0x1770, - 0x1772, 0x1773, - 0x1780, 0x17b3, - 0x17b6, 0x17d3, - 0x17d7, 0x17d7, - 0x17dc, 0x17dd, - 0x17e0, 0x17e9, - 0x180b, 0x180d, - 0x1810, 0x1819, - 0x1820, 0x1877, - 0x1880, 0x18a9, - 0x1900, 0x191c, - 0x1920, 0x192b, - 0x1930, 0x193b, - 0x1946, 0x196d, - 0x1970, 0x1974, - 0x1980, 0x19a9, - 0x19b0, 0x19c9, - 0x19d0, 0x19d9, - 0x1a00, 0x1a1b, - 0x1d00, 0x1dc3, - 0x1e00, 0x1e9b, - 0x1ea0, 0x1ef9, - 0x1f00, 0x1f15, - 0x1f18, 0x1f1d, - 0x1f20, 0x1f45, - 0x1f48, 0x1f4d, - 0x1f50, 0x1f57, - 0x1f59, 0x1f59, - 0x1f5b, 0x1f5b, - 0x1f5d, 0x1f5d, - 0x1f5f, 0x1f7d, - 0x1f80, 0x1fb4, - 0x1fb6, 0x1fbc, - 0x1fbe, 0x1fbe, - 0x1fc2, 0x1fc4, - 0x1fc6, 0x1fcc, - 0x1fd0, 0x1fd3, - 0x1fd6, 0x1fdb, - 0x1fe0, 0x1fec, - 0x1ff2, 0x1ff4, - 0x1ff6, 0x1ffc, - 0x2071, 0x2071, - 0x207f, 0x207f, - 0x2090, 0x2094, - 0x20d0, 0x20eb, - 0x2102, 0x2102, - 0x2107, 0x2107, - 0x210a, 0x2113, - 0x2115, 0x2115, - 0x2119, 0x211d, - 0x2124, 0x2124, - 0x2126, 0x2126, - 0x2128, 0x2128, - 0x212a, 0x212d, - 0x212f, 0x2131, - 0x2133, 0x2139, - 0x213c, 0x213f, - 0x2145, 0x2149, - 0x2c00, 0x2c2e, - 0x2c30, 0x2c5e, - 0x2c80, 0x2ce4, - 0x2d00, 0x2d25, - 0x2d30, 0x2d65, - 0x2d6f, 0x2d6f, - 0x2d80, 0x2d96, - 0x2da0, 0x2da6, - 0x2da8, 0x2dae, - 0x2db0, 0x2db6, - 0x2db8, 0x2dbe, - 0x2dc0, 0x2dc6, - 0x2dc8, 0x2dce, - 0x2dd0, 0x2dd6, - 0x2dd8, 0x2dde, - 0x3005, 0x3006, - 0x302a, 0x302f, - 0x3031, 0x3035, - 0x303b, 0x303c, - 0x3041, 0x3096, - 0x3099, 0x309a, - 0x309d, 0x309f, - 0x30a1, 0x30fa, - 0x30fc, 0x30ff, - 0x3105, 0x312c, - 0x3131, 0x318e, - 0x31a0, 0x31b7, - 0x31f0, 0x31ff, - 0x3400, 0x4db5, - 0x4e00, 0x9fbb, - 0xa000, 0xa48c, - 0xa800, 0xa827, - 0xac00, 0xd7a3, - 0xf900, 0xfa2d, - 0xfa30, 0xfa6a, - 0xfa70, 0xfad9, - 0xfb00, 0xfb06, - 0xfb13, 0xfb17, - 0xfb1d, 0xfb28, - 0xfb2a, 0xfb36, - 0xfb38, 0xfb3c, - 0xfb3e, 0xfb3e, - 0xfb40, 0xfb41, - 0xfb43, 0xfb44, - 0xfb46, 0xfbb1, - 0xfbd3, 0xfd3d, - 0xfd50, 0xfd8f, - 0xfd92, 0xfdc7, - 0xfdf0, 0xfdfb, - 0xfe00, 0xfe0f, - 0xfe20, 0xfe23, - 0xfe70, 0xfe74, - 0xfe76, 0xfefc, - 0xff10, 0xff19, - 0xff21, 0xff3a, - 0xff41, 0xff5a, - 0xff66, 0xffbe, - 0xffc2, 0xffc7, - 0xffca, 0xffcf, - 0xffd2, 0xffd7, - 0xffda, 0xffdc, - 0x10000, 0x1000b, - 0x1000d, 0x10026, - 0x10028, 0x1003a, - 0x1003c, 0x1003d, - 0x1003f, 0x1004d, - 0x10050, 0x1005d, - 0x10080, 0x100fa, - 0x10300, 0x1031e, - 0x10330, 0x10349, - 0x10380, 0x1039d, - 0x103a0, 0x103c3, - 0x103c8, 0x103cf, - 0x10400, 0x1049d, - 0x104a0, 0x104a9, - 0x10800, 0x10805, - 0x10808, 0x10808, - 0x1080a, 0x10835, - 0x10837, 0x10838, - 0x1083c, 0x1083c, - 0x1083f, 0x1083f, - 0x10a00, 0x10a03, - 0x10a05, 0x10a06, - 0x10a0c, 0x10a13, - 0x10a15, 0x10a17, - 0x10a19, 0x10a33, - 0x10a38, 0x10a3a, - 0x10a3f, 0x10a3f, - 0x1d165, 0x1d169, - 0x1d16d, 0x1d172, - 0x1d17b, 0x1d182, - 0x1d185, 0x1d18b, - 0x1d1aa, 0x1d1ad, - 0x1d242, 0x1d244, - 0x1d400, 0x1d454, - 0x1d456, 0x1d49c, - 0x1d49e, 0x1d49f, - 0x1d4a2, 0x1d4a2, - 0x1d4a5, 0x1d4a6, - 0x1d4a9, 0x1d4ac, - 0x1d4ae, 0x1d4b9, - 0x1d4bb, 0x1d4bb, - 0x1d4bd, 0x1d4c3, - 0x1d4c5, 0x1d505, - 0x1d507, 0x1d50a, - 0x1d50d, 0x1d514, - 0x1d516, 0x1d51c, - 0x1d51e, 0x1d539, - 0x1d53b, 0x1d53e, - 0x1d540, 0x1d544, - 0x1d546, 0x1d546, - 0x1d54a, 0x1d550, - 0x1d552, 0x1d6a5, - 0x1d6a8, 0x1d6c0, - 0x1d6c2, 0x1d6da, - 0x1d6dc, 0x1d6fa, - 0x1d6fc, 0x1d714, - 0x1d716, 0x1d734, - 0x1d736, 0x1d74e, - 0x1d750, 0x1d76e, - 0x1d770, 0x1d788, - 0x1d78a, 0x1d7a8, - 0x1d7aa, 0x1d7c2, - 0x1d7c4, 0x1d7c9, - 0x1d7ce, 0x1d7ff, - 0x20000, 0x2a6d6, - 0x2f800, 0x2fa1d, - 0xe0100, 0xe01ef -}; /* CR_Alnum */ - -/* 'ASCII': [[:ASCII:]] */ -static const OnigCodePoint CR_ASCII[] = { - 1, - 0x0000, 0x007f -}; /* CR_ASCII */ - -#ifdef USE_UNICODE_PROPERTIES - -/* 'Any': - */ -static const OnigCodePoint CR_Any[] = { - 1, - 0x0000, 0x10ffff -}; /* CR_Any */ - -/* 'Assigned': - */ -static const OnigCodePoint CR_Assigned[] = { - 420, - 0x0000, 0x0241, - 0x0250, 0x036f, - 0x0374, 0x0375, - 0x037a, 0x037a, - 0x037e, 0x037e, - 0x0384, 0x038a, - 0x038c, 0x038c, - 0x038e, 0x03a1, - 0x03a3, 0x03ce, - 0x03d0, 0x0486, - 0x0488, 0x04ce, - 0x04d0, 0x04f9, - 0x0500, 0x050f, - 0x0531, 0x0556, - 0x0559, 0x055f, - 0x0561, 0x0587, - 0x0589, 0x058a, - 0x0591, 0x05b9, - 0x05bb, 0x05c7, - 0x05d0, 0x05ea, - 0x05f0, 0x05f4, - 0x0600, 0x0603, - 0x060b, 0x0615, - 0x061b, 0x061b, - 0x061e, 0x061f, - 0x0621, 0x063a, - 0x0640, 0x065e, - 0x0660, 0x070d, - 0x070f, 0x074a, - 0x074d, 0x076d, - 0x0780, 0x07b1, - 0x0901, 0x0939, - 0x093c, 0x094d, - 0x0950, 0x0954, - 0x0958, 0x0970, - 0x097d, 0x097d, - 0x0981, 0x0983, - 0x0985, 0x098c, - 0x098f, 0x0990, - 0x0993, 0x09a8, - 0x09aa, 0x09b0, - 0x09b2, 0x09b2, - 0x09b6, 0x09b9, - 0x09bc, 0x09c4, - 0x09c7, 0x09c8, - 0x09cb, 0x09ce, - 0x09d7, 0x09d7, - 0x09dc, 0x09dd, - 0x09df, 0x09e3, - 0x09e6, 0x09fa, - 0x0a01, 0x0a03, - 0x0a05, 0x0a0a, - 0x0a0f, 0x0a10, - 0x0a13, 0x0a28, - 0x0a2a, 0x0a30, - 0x0a32, 0x0a33, - 0x0a35, 0x0a36, - 0x0a38, 0x0a39, - 0x0a3c, 0x0a3c, - 0x0a3e, 0x0a42, - 0x0a47, 0x0a48, - 0x0a4b, 0x0a4d, - 0x0a59, 0x0a5c, - 0x0a5e, 0x0a5e, - 0x0a66, 0x0a74, - 0x0a81, 0x0a83, - 0x0a85, 0x0a8d, - 0x0a8f, 0x0a91, - 0x0a93, 0x0aa8, - 0x0aaa, 0x0ab0, - 0x0ab2, 0x0ab3, - 0x0ab5, 0x0ab9, - 0x0abc, 0x0ac5, - 0x0ac7, 0x0ac9, - 0x0acb, 0x0acd, - 0x0ad0, 0x0ad0, - 0x0ae0, 0x0ae3, - 0x0ae6, 0x0aef, - 0x0af1, 0x0af1, - 0x0b01, 0x0b03, - 0x0b05, 0x0b0c, - 0x0b0f, 0x0b10, - 0x0b13, 0x0b28, - 0x0b2a, 0x0b30, - 0x0b32, 0x0b33, - 0x0b35, 0x0b39, - 0x0b3c, 0x0b43, - 0x0b47, 0x0b48, - 0x0b4b, 0x0b4d, - 0x0b56, 0x0b57, - 0x0b5c, 0x0b5d, - 0x0b5f, 0x0b61, - 0x0b66, 0x0b71, - 0x0b82, 0x0b83, - 0x0b85, 0x0b8a, - 0x0b8e, 0x0b90, - 0x0b92, 0x0b95, - 0x0b99, 0x0b9a, - 0x0b9c, 0x0b9c, - 0x0b9e, 0x0b9f, - 0x0ba3, 0x0ba4, - 0x0ba8, 0x0baa, - 0x0bae, 0x0bb9, - 0x0bbe, 0x0bc2, - 0x0bc6, 0x0bc8, - 0x0bca, 0x0bcd, - 0x0bd7, 0x0bd7, - 0x0be6, 0x0bfa, - 0x0c01, 0x0c03, - 0x0c05, 0x0c0c, - 0x0c0e, 0x0c10, - 0x0c12, 0x0c28, - 0x0c2a, 0x0c33, - 0x0c35, 0x0c39, - 0x0c3e, 0x0c44, - 0x0c46, 0x0c48, - 0x0c4a, 0x0c4d, - 0x0c55, 0x0c56, - 0x0c60, 0x0c61, - 0x0c66, 0x0c6f, - 0x0c82, 0x0c83, - 0x0c85, 0x0c8c, - 0x0c8e, 0x0c90, - 0x0c92, 0x0ca8, - 0x0caa, 0x0cb3, - 0x0cb5, 0x0cb9, - 0x0cbc, 0x0cc4, - 0x0cc6, 0x0cc8, - 0x0cca, 0x0ccd, - 0x0cd5, 0x0cd6, - 0x0cde, 0x0cde, - 0x0ce0, 0x0ce1, - 0x0ce6, 0x0cef, - 0x0d02, 0x0d03, - 0x0d05, 0x0d0c, - 0x0d0e, 0x0d10, - 0x0d12, 0x0d28, - 0x0d2a, 0x0d39, - 0x0d3e, 0x0d43, - 0x0d46, 0x0d48, - 0x0d4a, 0x0d4d, - 0x0d57, 0x0d57, - 0x0d60, 0x0d61, - 0x0d66, 0x0d6f, - 0x0d82, 0x0d83, - 0x0d85, 0x0d96, - 0x0d9a, 0x0db1, - 0x0db3, 0x0dbb, - 0x0dbd, 0x0dbd, - 0x0dc0, 0x0dc6, - 0x0dca, 0x0dca, - 0x0dcf, 0x0dd4, - 0x0dd6, 0x0dd6, - 0x0dd8, 0x0ddf, - 0x0df2, 0x0df4, - 0x0e01, 0x0e3a, - 0x0e3f, 0x0e5b, - 0x0e81, 0x0e82, - 0x0e84, 0x0e84, - 0x0e87, 0x0e88, - 0x0e8a, 0x0e8a, - 0x0e8d, 0x0e8d, - 0x0e94, 0x0e97, - 0x0e99, 0x0e9f, - 0x0ea1, 0x0ea3, - 0x0ea5, 0x0ea5, - 0x0ea7, 0x0ea7, - 0x0eaa, 0x0eab, - 0x0ead, 0x0eb9, - 0x0ebb, 0x0ebd, - 0x0ec0, 0x0ec4, - 0x0ec6, 0x0ec6, - 0x0ec8, 0x0ecd, - 0x0ed0, 0x0ed9, - 0x0edc, 0x0edd, - 0x0f00, 0x0f47, - 0x0f49, 0x0f6a, - 0x0f71, 0x0f8b, - 0x0f90, 0x0f97, - 0x0f99, 0x0fbc, - 0x0fbe, 0x0fcc, - 0x0fcf, 0x0fd1, - 0x1000, 0x1021, - 0x1023, 0x1027, - 0x1029, 0x102a, - 0x102c, 0x1032, - 0x1036, 0x1039, - 0x1040, 0x1059, - 0x10a0, 0x10c5, - 0x10d0, 0x10fc, - 0x1100, 0x1159, - 0x115f, 0x11a2, - 0x11a8, 0x11f9, - 0x1200, 0x1248, - 0x124a, 0x124d, - 0x1250, 0x1256, - 0x1258, 0x1258, - 0x125a, 0x125d, - 0x1260, 0x1288, - 0x128a, 0x128d, - 0x1290, 0x12b0, - 0x12b2, 0x12b5, - 0x12b8, 0x12be, - 0x12c0, 0x12c0, - 0x12c2, 0x12c5, - 0x12c8, 0x12d6, - 0x12d8, 0x1310, - 0x1312, 0x1315, - 0x1318, 0x135a, - 0x135f, 0x137c, - 0x1380, 0x1399, - 0x13a0, 0x13f4, - 0x1401, 0x1676, - 0x1680, 0x169c, - 0x16a0, 0x16f0, - 0x1700, 0x170c, - 0x170e, 0x1714, - 0x1720, 0x1736, - 0x1740, 0x1753, - 0x1760, 0x176c, - 0x176e, 0x1770, - 0x1772, 0x1773, - 0x1780, 0x17dd, - 0x17e0, 0x17e9, - 0x17f0, 0x17f9, - 0x1800, 0x180e, - 0x1810, 0x1819, - 0x1820, 0x1877, - 0x1880, 0x18a9, - 0x1900, 0x191c, - 0x1920, 0x192b, - 0x1930, 0x193b, - 0x1940, 0x1940, - 0x1944, 0x196d, - 0x1970, 0x1974, - 0x1980, 0x19a9, - 0x19b0, 0x19c9, - 0x19d0, 0x19d9, - 0x19de, 0x1a1b, - 0x1a1e, 0x1a1f, - 0x1d00, 0x1dc3, - 0x1e00, 0x1e9b, - 0x1ea0, 0x1ef9, - 0x1f00, 0x1f15, - 0x1f18, 0x1f1d, - 0x1f20, 0x1f45, - 0x1f48, 0x1f4d, - 0x1f50, 0x1f57, - 0x1f59, 0x1f59, - 0x1f5b, 0x1f5b, - 0x1f5d, 0x1f5d, - 0x1f5f, 0x1f7d, - 0x1f80, 0x1fb4, - 0x1fb6, 0x1fc4, - 0x1fc6, 0x1fd3, - 0x1fd6, 0x1fdb, - 0x1fdd, 0x1fef, - 0x1ff2, 0x1ff4, - 0x1ff6, 0x1ffe, - 0x2000, 0x2063, - 0x206a, 0x2071, - 0x2074, 0x208e, - 0x2090, 0x2094, - 0x20a0, 0x20b5, - 0x20d0, 0x20eb, - 0x2100, 0x214c, - 0x2153, 0x2183, - 0x2190, 0x23db, - 0x2400, 0x2426, - 0x2440, 0x244a, - 0x2460, 0x269c, - 0x26a0, 0x26b1, - 0x2701, 0x2704, - 0x2706, 0x2709, - 0x270c, 0x2727, - 0x2729, 0x274b, - 0x274d, 0x274d, - 0x274f, 0x2752, - 0x2756, 0x2756, - 0x2758, 0x275e, - 0x2761, 0x2794, - 0x2798, 0x27af, - 0x27b1, 0x27be, - 0x27c0, 0x27c6, - 0x27d0, 0x27eb, - 0x27f0, 0x2b13, - 0x2c00, 0x2c2e, - 0x2c30, 0x2c5e, - 0x2c80, 0x2cea, - 0x2cf9, 0x2d25, - 0x2d30, 0x2d65, - 0x2d6f, 0x2d6f, - 0x2d80, 0x2d96, - 0x2da0, 0x2da6, - 0x2da8, 0x2dae, - 0x2db0, 0x2db6, - 0x2db8, 0x2dbe, - 0x2dc0, 0x2dc6, - 0x2dc8, 0x2dce, - 0x2dd0, 0x2dd6, - 0x2dd8, 0x2dde, - 0x2e00, 0x2e17, - 0x2e1c, 0x2e1d, - 0x2e80, 0x2e99, - 0x2e9b, 0x2ef3, - 0x2f00, 0x2fd5, - 0x2ff0, 0x2ffb, - 0x3000, 0x303f, - 0x3041, 0x3096, - 0x3099, 0x30ff, - 0x3105, 0x312c, - 0x3131, 0x318e, - 0x3190, 0x31b7, - 0x31c0, 0x31cf, - 0x31f0, 0x321e, - 0x3220, 0x3243, - 0x3250, 0x32fe, - 0x3300, 0x4db5, - 0x4dc0, 0x9fbb, - 0xa000, 0xa48c, - 0xa490, 0xa4c6, - 0xa700, 0xa716, - 0xa800, 0xa82b, - 0xac00, 0xd7a3, - 0xd800, 0xfa2d, - 0xfa30, 0xfa6a, - 0xfa70, 0xfad9, - 0xfb00, 0xfb06, - 0xfb13, 0xfb17, - 0xfb1d, 0xfb36, - 0xfb38, 0xfb3c, - 0xfb3e, 0xfb3e, - 0xfb40, 0xfb41, - 0xfb43, 0xfb44, - 0xfb46, 0xfbb1, - 0xfbd3, 0xfd3f, - 0xfd50, 0xfd8f, - 0xfd92, 0xfdc7, - 0xfdf0, 0xfdfd, - 0xfe00, 0xfe19, - 0xfe20, 0xfe23, - 0xfe30, 0xfe52, - 0xfe54, 0xfe66, - 0xfe68, 0xfe6b, - 0xfe70, 0xfe74, - 0xfe76, 0xfefc, - 0xfeff, 0xfeff, - 0xff01, 0xffbe, - 0xffc2, 0xffc7, - 0xffca, 0xffcf, - 0xffd2, 0xffd7, - 0xffda, 0xffdc, - 0xffe0, 0xffe6, - 0xffe8, 0xffee, - 0xfff9, 0xfffd, - 0x10000, 0x1000b, - 0x1000d, 0x10026, - 0x10028, 0x1003a, - 0x1003c, 0x1003d, - 0x1003f, 0x1004d, - 0x10050, 0x1005d, - 0x10080, 0x100fa, - 0x10100, 0x10102, - 0x10107, 0x10133, - 0x10137, 0x1018a, - 0x10300, 0x1031e, - 0x10320, 0x10323, - 0x10330, 0x1034a, - 0x10380, 0x1039d, - 0x1039f, 0x103c3, - 0x103c8, 0x103d5, - 0x10400, 0x1049d, - 0x104a0, 0x104a9, - 0x10800, 0x10805, - 0x10808, 0x10808, - 0x1080a, 0x10835, - 0x10837, 0x10838, - 0x1083c, 0x1083c, - 0x1083f, 0x1083f, - 0x10a00, 0x10a03, - 0x10a05, 0x10a06, - 0x10a0c, 0x10a13, - 0x10a15, 0x10a17, - 0x10a19, 0x10a33, - 0x10a38, 0x10a3a, - 0x10a3f, 0x10a47, - 0x10a50, 0x10a58, - 0x1d000, 0x1d0f5, - 0x1d100, 0x1d126, - 0x1d12a, 0x1d1dd, - 0x1d200, 0x1d245, - 0x1d300, 0x1d356, - 0x1d400, 0x1d454, - 0x1d456, 0x1d49c, - 0x1d49e, 0x1d49f, - 0x1d4a2, 0x1d4a2, - 0x1d4a5, 0x1d4a6, - 0x1d4a9, 0x1d4ac, - 0x1d4ae, 0x1d4b9, - 0x1d4bb, 0x1d4bb, - 0x1d4bd, 0x1d4c3, - 0x1d4c5, 0x1d505, - 0x1d507, 0x1d50a, - 0x1d50d, 0x1d514, - 0x1d516, 0x1d51c, - 0x1d51e, 0x1d539, - 0x1d53b, 0x1d53e, - 0x1d540, 0x1d544, - 0x1d546, 0x1d546, - 0x1d54a, 0x1d550, - 0x1d552, 0x1d6a5, - 0x1d6a8, 0x1d7c9, - 0x1d7ce, 0x1d7ff, - 0x20000, 0x2a6d6, - 0x2f800, 0x2fa1d, - 0xe0001, 0xe0001, - 0xe0020, 0xe007f, - 0xe0100, 0xe01ef, - 0xf0000, 0xffffd, - 0x100000, 0x10fffd -}; /* CR_Assigned */ - -/* 'C': Major Category */ -static const OnigCodePoint CR_C[] = { - 422, - 0x0000, 0x001f, - 0x007f, 0x009f, - 0x00ad, 0x00ad, - 0x0242, 0x024f, - 0x0370, 0x0373, - 0x0376, 0x0379, - 0x037b, 0x037d, - 0x037f, 0x0383, - 0x038b, 0x038b, - 0x038d, 0x038d, - 0x03a2, 0x03a2, - 0x03cf, 0x03cf, - 0x0487, 0x0487, - 0x04cf, 0x04cf, - 0x04fa, 0x04ff, - 0x0510, 0x0530, - 0x0557, 0x0558, - 0x0560, 0x0560, - 0x0588, 0x0588, - 0x058b, 0x0590, - 0x05ba, 0x05ba, - 0x05c8, 0x05cf, - 0x05eb, 0x05ef, - 0x05f5, 0x060a, - 0x0616, 0x061a, - 0x061c, 0x061d, - 0x0620, 0x0620, - 0x063b, 0x063f, - 0x065f, 0x065f, - 0x06dd, 0x06dd, - 0x070e, 0x070f, - 0x074b, 0x074c, - 0x076e, 0x077f, - 0x07b2, 0x0900, - 0x093a, 0x093b, - 0x094e, 0x094f, - 0x0955, 0x0957, - 0x0971, 0x097c, - 0x097e, 0x0980, - 0x0984, 0x0984, - 0x098d, 0x098e, - 0x0991, 0x0992, - 0x09a9, 0x09a9, - 0x09b1, 0x09b1, - 0x09b3, 0x09b5, - 0x09ba, 0x09bb, - 0x09c5, 0x09c6, - 0x09c9, 0x09ca, - 0x09cf, 0x09d6, - 0x09d8, 0x09db, - 0x09de, 0x09de, - 0x09e4, 0x09e5, - 0x09fb, 0x0a00, - 0x0a04, 0x0a04, - 0x0a0b, 0x0a0e, - 0x0a11, 0x0a12, - 0x0a29, 0x0a29, - 0x0a31, 0x0a31, - 0x0a34, 0x0a34, - 0x0a37, 0x0a37, - 0x0a3a, 0x0a3b, - 0x0a3d, 0x0a3d, - 0x0a43, 0x0a46, - 0x0a49, 0x0a4a, - 0x0a4e, 0x0a58, - 0x0a5d, 0x0a5d, - 0x0a5f, 0x0a65, - 0x0a75, 0x0a80, - 0x0a84, 0x0a84, - 0x0a8e, 0x0a8e, - 0x0a92, 0x0a92, - 0x0aa9, 0x0aa9, - 0x0ab1, 0x0ab1, - 0x0ab4, 0x0ab4, - 0x0aba, 0x0abb, - 0x0ac6, 0x0ac6, - 0x0aca, 0x0aca, - 0x0ace, 0x0acf, - 0x0ad1, 0x0adf, - 0x0ae4, 0x0ae5, - 0x0af0, 0x0af0, - 0x0af2, 0x0b00, - 0x0b04, 0x0b04, - 0x0b0d, 0x0b0e, - 0x0b11, 0x0b12, - 0x0b29, 0x0b29, - 0x0b31, 0x0b31, - 0x0b34, 0x0b34, - 0x0b3a, 0x0b3b, - 0x0b44, 0x0b46, - 0x0b49, 0x0b4a, - 0x0b4e, 0x0b55, - 0x0b58, 0x0b5b, - 0x0b5e, 0x0b5e, - 0x0b62, 0x0b65, - 0x0b72, 0x0b81, - 0x0b84, 0x0b84, - 0x0b8b, 0x0b8d, - 0x0b91, 0x0b91, - 0x0b96, 0x0b98, - 0x0b9b, 0x0b9b, - 0x0b9d, 0x0b9d, - 0x0ba0, 0x0ba2, - 0x0ba5, 0x0ba7, - 0x0bab, 0x0bad, - 0x0bba, 0x0bbd, - 0x0bc3, 0x0bc5, - 0x0bc9, 0x0bc9, - 0x0bce, 0x0bd6, - 0x0bd8, 0x0be5, - 0x0bfb, 0x0c00, - 0x0c04, 0x0c04, - 0x0c0d, 0x0c0d, - 0x0c11, 0x0c11, - 0x0c29, 0x0c29, - 0x0c34, 0x0c34, - 0x0c3a, 0x0c3d, - 0x0c45, 0x0c45, - 0x0c49, 0x0c49, - 0x0c4e, 0x0c54, - 0x0c57, 0x0c5f, - 0x0c62, 0x0c65, - 0x0c70, 0x0c81, - 0x0c84, 0x0c84, - 0x0c8d, 0x0c8d, - 0x0c91, 0x0c91, - 0x0ca9, 0x0ca9, - 0x0cb4, 0x0cb4, - 0x0cba, 0x0cbb, - 0x0cc5, 0x0cc5, - 0x0cc9, 0x0cc9, - 0x0cce, 0x0cd4, - 0x0cd7, 0x0cdd, - 0x0cdf, 0x0cdf, - 0x0ce2, 0x0ce5, - 0x0cf0, 0x0d01, - 0x0d04, 0x0d04, - 0x0d0d, 0x0d0d, - 0x0d11, 0x0d11, - 0x0d29, 0x0d29, - 0x0d3a, 0x0d3d, - 0x0d44, 0x0d45, - 0x0d49, 0x0d49, - 0x0d4e, 0x0d56, - 0x0d58, 0x0d5f, - 0x0d62, 0x0d65, - 0x0d70, 0x0d81, - 0x0d84, 0x0d84, - 0x0d97, 0x0d99, - 0x0db2, 0x0db2, - 0x0dbc, 0x0dbc, - 0x0dbe, 0x0dbf, - 0x0dc7, 0x0dc9, - 0x0dcb, 0x0dce, - 0x0dd5, 0x0dd5, - 0x0dd7, 0x0dd7, - 0x0de0, 0x0df1, - 0x0df5, 0x0e00, - 0x0e3b, 0x0e3e, - 0x0e5c, 0x0e80, - 0x0e83, 0x0e83, - 0x0e85, 0x0e86, - 0x0e89, 0x0e89, - 0x0e8b, 0x0e8c, - 0x0e8e, 0x0e93, - 0x0e98, 0x0e98, - 0x0ea0, 0x0ea0, - 0x0ea4, 0x0ea4, - 0x0ea6, 0x0ea6, - 0x0ea8, 0x0ea9, - 0x0eac, 0x0eac, - 0x0eba, 0x0eba, - 0x0ebe, 0x0ebf, - 0x0ec5, 0x0ec5, - 0x0ec7, 0x0ec7, - 0x0ece, 0x0ecf, - 0x0eda, 0x0edb, - 0x0ede, 0x0eff, - 0x0f48, 0x0f48, - 0x0f6b, 0x0f70, - 0x0f8c, 0x0f8f, - 0x0f98, 0x0f98, - 0x0fbd, 0x0fbd, - 0x0fcd, 0x0fce, - 0x0fd2, 0x0fff, - 0x1022, 0x1022, - 0x1028, 0x1028, - 0x102b, 0x102b, - 0x1033, 0x1035, - 0x103a, 0x103f, - 0x105a, 0x109f, - 0x10c6, 0x10cf, - 0x10fd, 0x10ff, - 0x115a, 0x115e, - 0x11a3, 0x11a7, - 0x11fa, 0x11ff, - 0x1249, 0x1249, - 0x124e, 0x124f, - 0x1257, 0x1257, - 0x1259, 0x1259, - 0x125e, 0x125f, - 0x1289, 0x1289, - 0x128e, 0x128f, - 0x12b1, 0x12b1, - 0x12b6, 0x12b7, - 0x12bf, 0x12bf, - 0x12c1, 0x12c1, - 0x12c6, 0x12c7, - 0x12d7, 0x12d7, - 0x1311, 0x1311, - 0x1316, 0x1317, - 0x135b, 0x135e, - 0x137d, 0x137f, - 0x139a, 0x139f, - 0x13f5, 0x1400, - 0x1677, 0x167f, - 0x169d, 0x169f, - 0x16f1, 0x16ff, - 0x170d, 0x170d, - 0x1715, 0x171f, - 0x1737, 0x173f, - 0x1754, 0x175f, - 0x176d, 0x176d, - 0x1771, 0x1771, - 0x1774, 0x177f, - 0x17b4, 0x17b5, - 0x17de, 0x17df, - 0x17ea, 0x17ef, - 0x17fa, 0x17ff, - 0x180f, 0x180f, - 0x181a, 0x181f, - 0x1878, 0x187f, - 0x18aa, 0x18ff, - 0x191d, 0x191f, - 0x192c, 0x192f, - 0x193c, 0x193f, - 0x1941, 0x1943, - 0x196e, 0x196f, - 0x1975, 0x197f, - 0x19aa, 0x19af, - 0x19ca, 0x19cf, - 0x19da, 0x19dd, - 0x1a1c, 0x1a1d, - 0x1a20, 0x1cff, - 0x1dc4, 0x1dff, - 0x1e9c, 0x1e9f, - 0x1efa, 0x1eff, - 0x1f16, 0x1f17, - 0x1f1e, 0x1f1f, - 0x1f46, 0x1f47, - 0x1f4e, 0x1f4f, - 0x1f58, 0x1f58, - 0x1f5a, 0x1f5a, - 0x1f5c, 0x1f5c, - 0x1f5e, 0x1f5e, - 0x1f7e, 0x1f7f, - 0x1fb5, 0x1fb5, - 0x1fc5, 0x1fc5, - 0x1fd4, 0x1fd5, - 0x1fdc, 0x1fdc, - 0x1ff0, 0x1ff1, - 0x1ff5, 0x1ff5, - 0x1fff, 0x1fff, - 0x200b, 0x200f, - 0x202a, 0x202e, - 0x2060, 0x206f, - 0x2072, 0x2073, - 0x208f, 0x208f, - 0x2095, 0x209f, - 0x20b6, 0x20cf, - 0x20ec, 0x20ff, - 0x214d, 0x2152, - 0x2184, 0x218f, - 0x23dc, 0x23ff, - 0x2427, 0x243f, - 0x244b, 0x245f, - 0x269d, 0x269f, - 0x26b2, 0x2700, - 0x2705, 0x2705, - 0x270a, 0x270b, - 0x2728, 0x2728, - 0x274c, 0x274c, - 0x274e, 0x274e, - 0x2753, 0x2755, - 0x2757, 0x2757, - 0x275f, 0x2760, - 0x2795, 0x2797, - 0x27b0, 0x27b0, - 0x27bf, 0x27bf, - 0x27c7, 0x27cf, - 0x27ec, 0x27ef, - 0x2b14, 0x2bff, - 0x2c2f, 0x2c2f, - 0x2c5f, 0x2c7f, - 0x2ceb, 0x2cf8, - 0x2d26, 0x2d2f, - 0x2d66, 0x2d6e, - 0x2d70, 0x2d7f, - 0x2d97, 0x2d9f, - 0x2da7, 0x2da7, - 0x2daf, 0x2daf, - 0x2db7, 0x2db7, - 0x2dbf, 0x2dbf, - 0x2dc7, 0x2dc7, - 0x2dcf, 0x2dcf, - 0x2dd7, 0x2dd7, - 0x2ddf, 0x2dff, - 0x2e18, 0x2e1b, - 0x2e1e, 0x2e7f, - 0x2e9a, 0x2e9a, - 0x2ef4, 0x2eff, - 0x2fd6, 0x2fef, - 0x2ffc, 0x2fff, - 0x3040, 0x3040, - 0x3097, 0x3098, - 0x3100, 0x3104, - 0x312d, 0x3130, - 0x318f, 0x318f, - 0x31b8, 0x31bf, - 0x31d0, 0x31ef, - 0x321f, 0x321f, - 0x3244, 0x324f, - 0x32ff, 0x32ff, - 0x4db6, 0x4dbf, - 0x9fbc, 0x9fff, - 0xa48d, 0xa48f, - 0xa4c7, 0xa6ff, - 0xa717, 0xa7ff, - 0xa82c, 0xabff, - 0xd7a4, 0xf8ff, - 0xfa2e, 0xfa2f, - 0xfa6b, 0xfa6f, - 0xfada, 0xfaff, - 0xfb07, 0xfb12, - 0xfb18, 0xfb1c, - 0xfb37, 0xfb37, - 0xfb3d, 0xfb3d, - 0xfb3f, 0xfb3f, - 0xfb42, 0xfb42, - 0xfb45, 0xfb45, - 0xfbb2, 0xfbd2, - 0xfd40, 0xfd4f, - 0xfd90, 0xfd91, - 0xfdc8, 0xfdef, - 0xfdfe, 0xfdff, - 0xfe1a, 0xfe1f, - 0xfe24, 0xfe2f, - 0xfe53, 0xfe53, - 0xfe67, 0xfe67, - 0xfe6c, 0xfe6f, - 0xfe75, 0xfe75, - 0xfefd, 0xff00, - 0xffbf, 0xffc1, - 0xffc8, 0xffc9, - 0xffd0, 0xffd1, - 0xffd8, 0xffd9, - 0xffdd, 0xffdf, - 0xffe7, 0xffe7, - 0xffef, 0xfffb, - 0xfffe, 0xffff, - 0x1000c, 0x1000c, - 0x10027, 0x10027, - 0x1003b, 0x1003b, - 0x1003e, 0x1003e, - 0x1004e, 0x1004f, - 0x1005e, 0x1007f, - 0x100fb, 0x100ff, - 0x10103, 0x10106, - 0x10134, 0x10136, - 0x1018b, 0x102ff, - 0x1031f, 0x1031f, - 0x10324, 0x1032f, - 0x1034b, 0x1037f, - 0x1039e, 0x1039e, - 0x103c4, 0x103c7, - 0x103d6, 0x103ff, - 0x1049e, 0x1049f, - 0x104aa, 0x107ff, - 0x10806, 0x10807, - 0x10809, 0x10809, - 0x10836, 0x10836, - 0x10839, 0x1083b, - 0x1083d, 0x1083e, - 0x10840, 0x109ff, - 0x10a04, 0x10a04, - 0x10a07, 0x10a0b, - 0x10a14, 0x10a14, - 0x10a18, 0x10a18, - 0x10a34, 0x10a37, - 0x10a3b, 0x10a3e, - 0x10a48, 0x10a4f, - 0x10a59, 0x1cfff, - 0x1d0f6, 0x1d0ff, - 0x1d127, 0x1d129, - 0x1d173, 0x1d17a, - 0x1d1de, 0x1d1ff, - 0x1d246, 0x1d2ff, - 0x1d357, 0x1d3ff, - 0x1d455, 0x1d455, - 0x1d49d, 0x1d49d, - 0x1d4a0, 0x1d4a1, - 0x1d4a3, 0x1d4a4, - 0x1d4a7, 0x1d4a8, - 0x1d4ad, 0x1d4ad, - 0x1d4ba, 0x1d4ba, - 0x1d4bc, 0x1d4bc, - 0x1d4c4, 0x1d4c4, - 0x1d506, 0x1d506, - 0x1d50b, 0x1d50c, - 0x1d515, 0x1d515, - 0x1d51d, 0x1d51d, - 0x1d53a, 0x1d53a, - 0x1d53f, 0x1d53f, - 0x1d545, 0x1d545, - 0x1d547, 0x1d549, - 0x1d551, 0x1d551, - 0x1d6a6, 0x1d6a7, - 0x1d7ca, 0x1d7cd, - 0x1d800, 0x1ffff, - 0x2a6d7, 0x2f7ff, - 0x2fa1e, 0xe00ff, - 0xe01f0, 0x10ffff -}; /* CR_C */ - -/* 'Cc': General Category */ -static const OnigCodePoint CR_Cc[] = { - 2, - 0x0000, 0x001f, - 0x007f, 0x009f -}; /* CR_Cc */ - -/* 'Cf': General Category */ -static const OnigCodePoint CR_Cf[] = { - 14, - 0x00ad, 0x00ad, - 0x0600, 0x0603, - 0x06dd, 0x06dd, - 0x070f, 0x070f, - 0x17b4, 0x17b5, - 0x200b, 0x200f, - 0x202a, 0x202e, - 0x2060, 0x2063, - 0x206a, 0x206f, - 0xfeff, 0xfeff, - 0xfff9, 0xfffb, - 0x1d173, 0x1d17a, - 0xe0001, 0xe0001, - 0xe0020, 0xe007f -}; /* CR_Cf */ - -/* 'Cn': General Category */ -static const OnigCodePoint CR_Cn[] = { - 420, - 0x0242, 0x024f, - 0x0370, 0x0373, - 0x0376, 0x0379, - 0x037b, 0x037d, - 0x037f, 0x0383, - 0x038b, 0x038b, - 0x038d, 0x038d, - 0x03a2, 0x03a2, - 0x03cf, 0x03cf, - 0x0487, 0x0487, - 0x04cf, 0x04cf, - 0x04fa, 0x04ff, - 0x0510, 0x0530, - 0x0557, 0x0558, - 0x0560, 0x0560, - 0x0588, 0x0588, - 0x058b, 0x0590, - 0x05ba, 0x05ba, - 0x05c8, 0x05cf, - 0x05eb, 0x05ef, - 0x05f5, 0x05ff, - 0x0604, 0x060a, - 0x0616, 0x061a, - 0x061c, 0x061d, - 0x0620, 0x0620, - 0x063b, 0x063f, - 0x065f, 0x065f, - 0x070e, 0x070e, - 0x074b, 0x074c, - 0x076e, 0x077f, - 0x07b2, 0x0900, - 0x093a, 0x093b, - 0x094e, 0x094f, - 0x0955, 0x0957, - 0x0971, 0x097c, - 0x097e, 0x0980, - 0x0984, 0x0984, - 0x098d, 0x098e, - 0x0991, 0x0992, - 0x09a9, 0x09a9, - 0x09b1, 0x09b1, - 0x09b3, 0x09b5, - 0x09ba, 0x09bb, - 0x09c5, 0x09c6, - 0x09c9, 0x09ca, - 0x09cf, 0x09d6, - 0x09d8, 0x09db, - 0x09de, 0x09de, - 0x09e4, 0x09e5, - 0x09fb, 0x0a00, - 0x0a04, 0x0a04, - 0x0a0b, 0x0a0e, - 0x0a11, 0x0a12, - 0x0a29, 0x0a29, - 0x0a31, 0x0a31, - 0x0a34, 0x0a34, - 0x0a37, 0x0a37, - 0x0a3a, 0x0a3b, - 0x0a3d, 0x0a3d, - 0x0a43, 0x0a46, - 0x0a49, 0x0a4a, - 0x0a4e, 0x0a58, - 0x0a5d, 0x0a5d, - 0x0a5f, 0x0a65, - 0x0a75, 0x0a80, - 0x0a84, 0x0a84, - 0x0a8e, 0x0a8e, - 0x0a92, 0x0a92, - 0x0aa9, 0x0aa9, - 0x0ab1, 0x0ab1, - 0x0ab4, 0x0ab4, - 0x0aba, 0x0abb, - 0x0ac6, 0x0ac6, - 0x0aca, 0x0aca, - 0x0ace, 0x0acf, - 0x0ad1, 0x0adf, - 0x0ae4, 0x0ae5, - 0x0af0, 0x0af0, - 0x0af2, 0x0b00, - 0x0b04, 0x0b04, - 0x0b0d, 0x0b0e, - 0x0b11, 0x0b12, - 0x0b29, 0x0b29, - 0x0b31, 0x0b31, - 0x0b34, 0x0b34, - 0x0b3a, 0x0b3b, - 0x0b44, 0x0b46, - 0x0b49, 0x0b4a, - 0x0b4e, 0x0b55, - 0x0b58, 0x0b5b, - 0x0b5e, 0x0b5e, - 0x0b62, 0x0b65, - 0x0b72, 0x0b81, - 0x0b84, 0x0b84, - 0x0b8b, 0x0b8d, - 0x0b91, 0x0b91, - 0x0b96, 0x0b98, - 0x0b9b, 0x0b9b, - 0x0b9d, 0x0b9d, - 0x0ba0, 0x0ba2, - 0x0ba5, 0x0ba7, - 0x0bab, 0x0bad, - 0x0bba, 0x0bbd, - 0x0bc3, 0x0bc5, - 0x0bc9, 0x0bc9, - 0x0bce, 0x0bd6, - 0x0bd8, 0x0be5, - 0x0bfb, 0x0c00, - 0x0c04, 0x0c04, - 0x0c0d, 0x0c0d, - 0x0c11, 0x0c11, - 0x0c29, 0x0c29, - 0x0c34, 0x0c34, - 0x0c3a, 0x0c3d, - 0x0c45, 0x0c45, - 0x0c49, 0x0c49, - 0x0c4e, 0x0c54, - 0x0c57, 0x0c5f, - 0x0c62, 0x0c65, - 0x0c70, 0x0c81, - 0x0c84, 0x0c84, - 0x0c8d, 0x0c8d, - 0x0c91, 0x0c91, - 0x0ca9, 0x0ca9, - 0x0cb4, 0x0cb4, - 0x0cba, 0x0cbb, - 0x0cc5, 0x0cc5, - 0x0cc9, 0x0cc9, - 0x0cce, 0x0cd4, - 0x0cd7, 0x0cdd, - 0x0cdf, 0x0cdf, - 0x0ce2, 0x0ce5, - 0x0cf0, 0x0d01, - 0x0d04, 0x0d04, - 0x0d0d, 0x0d0d, - 0x0d11, 0x0d11, - 0x0d29, 0x0d29, - 0x0d3a, 0x0d3d, - 0x0d44, 0x0d45, - 0x0d49, 0x0d49, - 0x0d4e, 0x0d56, - 0x0d58, 0x0d5f, - 0x0d62, 0x0d65, - 0x0d70, 0x0d81, - 0x0d84, 0x0d84, - 0x0d97, 0x0d99, - 0x0db2, 0x0db2, - 0x0dbc, 0x0dbc, - 0x0dbe, 0x0dbf, - 0x0dc7, 0x0dc9, - 0x0dcb, 0x0dce, - 0x0dd5, 0x0dd5, - 0x0dd7, 0x0dd7, - 0x0de0, 0x0df1, - 0x0df5, 0x0e00, - 0x0e3b, 0x0e3e, - 0x0e5c, 0x0e80, - 0x0e83, 0x0e83, - 0x0e85, 0x0e86, - 0x0e89, 0x0e89, - 0x0e8b, 0x0e8c, - 0x0e8e, 0x0e93, - 0x0e98, 0x0e98, - 0x0ea0, 0x0ea0, - 0x0ea4, 0x0ea4, - 0x0ea6, 0x0ea6, - 0x0ea8, 0x0ea9, - 0x0eac, 0x0eac, - 0x0eba, 0x0eba, - 0x0ebe, 0x0ebf, - 0x0ec5, 0x0ec5, - 0x0ec7, 0x0ec7, - 0x0ece, 0x0ecf, - 0x0eda, 0x0edb, - 0x0ede, 0x0eff, - 0x0f48, 0x0f48, - 0x0f6b, 0x0f70, - 0x0f8c, 0x0f8f, - 0x0f98, 0x0f98, - 0x0fbd, 0x0fbd, - 0x0fcd, 0x0fce, - 0x0fd2, 0x0fff, - 0x1022, 0x1022, - 0x1028, 0x1028, - 0x102b, 0x102b, - 0x1033, 0x1035, - 0x103a, 0x103f, - 0x105a, 0x109f, - 0x10c6, 0x10cf, - 0x10fd, 0x10ff, - 0x115a, 0x115e, - 0x11a3, 0x11a7, - 0x11fa, 0x11ff, - 0x1249, 0x1249, - 0x124e, 0x124f, - 0x1257, 0x1257, - 0x1259, 0x1259, - 0x125e, 0x125f, - 0x1289, 0x1289, - 0x128e, 0x128f, - 0x12b1, 0x12b1, - 0x12b6, 0x12b7, - 0x12bf, 0x12bf, - 0x12c1, 0x12c1, - 0x12c6, 0x12c7, - 0x12d7, 0x12d7, - 0x1311, 0x1311, - 0x1316, 0x1317, - 0x135b, 0x135e, - 0x137d, 0x137f, - 0x139a, 0x139f, - 0x13f5, 0x1400, - 0x1677, 0x167f, - 0x169d, 0x169f, - 0x16f1, 0x16ff, - 0x170d, 0x170d, - 0x1715, 0x171f, - 0x1737, 0x173f, - 0x1754, 0x175f, - 0x176d, 0x176d, - 0x1771, 0x1771, - 0x1774, 0x177f, - 0x17de, 0x17df, - 0x17ea, 0x17ef, - 0x17fa, 0x17ff, - 0x180f, 0x180f, - 0x181a, 0x181f, - 0x1878, 0x187f, - 0x18aa, 0x18ff, - 0x191d, 0x191f, - 0x192c, 0x192f, - 0x193c, 0x193f, - 0x1941, 0x1943, - 0x196e, 0x196f, - 0x1975, 0x197f, - 0x19aa, 0x19af, - 0x19ca, 0x19cf, - 0x19da, 0x19dd, - 0x1a1c, 0x1a1d, - 0x1a20, 0x1cff, - 0x1dc4, 0x1dff, - 0x1e9c, 0x1e9f, - 0x1efa, 0x1eff, - 0x1f16, 0x1f17, - 0x1f1e, 0x1f1f, - 0x1f46, 0x1f47, - 0x1f4e, 0x1f4f, - 0x1f58, 0x1f58, - 0x1f5a, 0x1f5a, - 0x1f5c, 0x1f5c, - 0x1f5e, 0x1f5e, - 0x1f7e, 0x1f7f, - 0x1fb5, 0x1fb5, - 0x1fc5, 0x1fc5, - 0x1fd4, 0x1fd5, - 0x1fdc, 0x1fdc, - 0x1ff0, 0x1ff1, - 0x1ff5, 0x1ff5, - 0x1fff, 0x1fff, - 0x2064, 0x2069, - 0x2072, 0x2073, - 0x208f, 0x208f, - 0x2095, 0x209f, - 0x20b6, 0x20cf, - 0x20ec, 0x20ff, - 0x214d, 0x2152, - 0x2184, 0x218f, - 0x23dc, 0x23ff, - 0x2427, 0x243f, - 0x244b, 0x245f, - 0x269d, 0x269f, - 0x26b2, 0x2700, - 0x2705, 0x2705, - 0x270a, 0x270b, - 0x2728, 0x2728, - 0x274c, 0x274c, - 0x274e, 0x274e, - 0x2753, 0x2755, - 0x2757, 0x2757, - 0x275f, 0x2760, - 0x2795, 0x2797, - 0x27b0, 0x27b0, - 0x27bf, 0x27bf, - 0x27c7, 0x27cf, - 0x27ec, 0x27ef, - 0x2b14, 0x2bff, - 0x2c2f, 0x2c2f, - 0x2c5f, 0x2c7f, - 0x2ceb, 0x2cf8, - 0x2d26, 0x2d2f, - 0x2d66, 0x2d6e, - 0x2d70, 0x2d7f, - 0x2d97, 0x2d9f, - 0x2da7, 0x2da7, - 0x2daf, 0x2daf, - 0x2db7, 0x2db7, - 0x2dbf, 0x2dbf, - 0x2dc7, 0x2dc7, - 0x2dcf, 0x2dcf, - 0x2dd7, 0x2dd7, - 0x2ddf, 0x2dff, - 0x2e18, 0x2e1b, - 0x2e1e, 0x2e7f, - 0x2e9a, 0x2e9a, - 0x2ef4, 0x2eff, - 0x2fd6, 0x2fef, - 0x2ffc, 0x2fff, - 0x3040, 0x3040, - 0x3097, 0x3098, - 0x3100, 0x3104, - 0x312d, 0x3130, - 0x318f, 0x318f, - 0x31b8, 0x31bf, - 0x31d0, 0x31ef, - 0x321f, 0x321f, - 0x3244, 0x324f, - 0x32ff, 0x32ff, - 0x4db6, 0x4dbf, - 0x9fbc, 0x9fff, - 0xa48d, 0xa48f, - 0xa4c7, 0xa6ff, - 0xa717, 0xa7ff, - 0xa82c, 0xabff, - 0xd7a4, 0xd7ff, - 0xfa2e, 0xfa2f, - 0xfa6b, 0xfa6f, - 0xfada, 0xfaff, - 0xfb07, 0xfb12, - 0xfb18, 0xfb1c, - 0xfb37, 0xfb37, - 0xfb3d, 0xfb3d, - 0xfb3f, 0xfb3f, - 0xfb42, 0xfb42, - 0xfb45, 0xfb45, - 0xfbb2, 0xfbd2, - 0xfd40, 0xfd4f, - 0xfd90, 0xfd91, - 0xfdc8, 0xfdef, - 0xfdfe, 0xfdff, - 0xfe1a, 0xfe1f, - 0xfe24, 0xfe2f, - 0xfe53, 0xfe53, - 0xfe67, 0xfe67, - 0xfe6c, 0xfe6f, - 0xfe75, 0xfe75, - 0xfefd, 0xfefe, - 0xff00, 0xff00, - 0xffbf, 0xffc1, - 0xffc8, 0xffc9, - 0xffd0, 0xffd1, - 0xffd8, 0xffd9, - 0xffdd, 0xffdf, - 0xffe7, 0xffe7, - 0xffef, 0xfff8, - 0xfffe, 0xffff, - 0x1000c, 0x1000c, - 0x10027, 0x10027, - 0x1003b, 0x1003b, - 0x1003e, 0x1003e, - 0x1004e, 0x1004f, - 0x1005e, 0x1007f, - 0x100fb, 0x100ff, - 0x10103, 0x10106, - 0x10134, 0x10136, - 0x1018b, 0x102ff, - 0x1031f, 0x1031f, - 0x10324, 0x1032f, - 0x1034b, 0x1037f, - 0x1039e, 0x1039e, - 0x103c4, 0x103c7, - 0x103d6, 0x103ff, - 0x1049e, 0x1049f, - 0x104aa, 0x107ff, - 0x10806, 0x10807, - 0x10809, 0x10809, - 0x10836, 0x10836, - 0x10839, 0x1083b, - 0x1083d, 0x1083e, - 0x10840, 0x109ff, - 0x10a04, 0x10a04, - 0x10a07, 0x10a0b, - 0x10a14, 0x10a14, - 0x10a18, 0x10a18, - 0x10a34, 0x10a37, - 0x10a3b, 0x10a3e, - 0x10a48, 0x10a4f, - 0x10a59, 0x1cfff, - 0x1d0f6, 0x1d0ff, - 0x1d127, 0x1d129, - 0x1d1de, 0x1d1ff, - 0x1d246, 0x1d2ff, - 0x1d357, 0x1d3ff, - 0x1d455, 0x1d455, - 0x1d49d, 0x1d49d, - 0x1d4a0, 0x1d4a1, - 0x1d4a3, 0x1d4a4, - 0x1d4a7, 0x1d4a8, - 0x1d4ad, 0x1d4ad, - 0x1d4ba, 0x1d4ba, - 0x1d4bc, 0x1d4bc, - 0x1d4c4, 0x1d4c4, - 0x1d506, 0x1d506, - 0x1d50b, 0x1d50c, - 0x1d515, 0x1d515, - 0x1d51d, 0x1d51d, - 0x1d53a, 0x1d53a, - 0x1d53f, 0x1d53f, - 0x1d545, 0x1d545, - 0x1d547, 0x1d549, - 0x1d551, 0x1d551, - 0x1d6a6, 0x1d6a7, - 0x1d7ca, 0x1d7cd, - 0x1d800, 0x1ffff, - 0x2a6d7, 0x2f7ff, - 0x2fa1e, 0xe0000, - 0xe0002, 0xe001f, - 0xe0080, 0xe00ff, - 0xe01f0, 0xeffff, - 0xffffe, 0xfffff, - 0x10fffe, 0x10ffff -}; /* CR_Cn */ - -/* 'Co': General Category */ -static const OnigCodePoint CR_Co[] = { - 3, - 0xe000, 0xf8ff, - 0xf0000, 0xffffd, - 0x100000, 0x10fffd -}; /* CR_Co */ - -/* 'Cs': General Category */ -static const OnigCodePoint CR_Cs[] = { - 1, - 0xd800, 0xdfff -}; /* CR_Cs */ - -/* 'L': Major Category */ -static const OnigCodePoint CR_L[] = { - 347, - 0x0041, 0x005a, - 0x0061, 0x007a, - 0x00aa, 0x00aa, - 0x00b5, 0x00b5, - 0x00ba, 0x00ba, - 0x00c0, 0x00d6, - 0x00d8, 0x00f6, - 0x00f8, 0x0241, - 0x0250, 0x02c1, - 0x02c6, 0x02d1, - 0x02e0, 0x02e4, - 0x02ee, 0x02ee, - 0x037a, 0x037a, - 0x0386, 0x0386, - 0x0388, 0x038a, - 0x038c, 0x038c, - 0x038e, 0x03a1, - 0x03a3, 0x03ce, - 0x03d0, 0x03f5, - 0x03f7, 0x0481, - 0x048a, 0x04ce, - 0x04d0, 0x04f9, - 0x0500, 0x050f, - 0x0531, 0x0556, - 0x0559, 0x0559, - 0x0561, 0x0587, - 0x05d0, 0x05ea, - 0x05f0, 0x05f2, - 0x0621, 0x063a, - 0x0640, 0x064a, - 0x066e, 0x066f, - 0x0671, 0x06d3, - 0x06d5, 0x06d5, - 0x06e5, 0x06e6, - 0x06ee, 0x06ef, - 0x06fa, 0x06fc, - 0x06ff, 0x06ff, - 0x0710, 0x0710, - 0x0712, 0x072f, - 0x074d, 0x076d, - 0x0780, 0x07a5, - 0x07b1, 0x07b1, - 0x0904, 0x0939, - 0x093d, 0x093d, - 0x0950, 0x0950, - 0x0958, 0x0961, - 0x097d, 0x097d, - 0x0985, 0x098c, - 0x098f, 0x0990, - 0x0993, 0x09a8, - 0x09aa, 0x09b0, - 0x09b2, 0x09b2, - 0x09b6, 0x09b9, - 0x09bd, 0x09bd, - 0x09ce, 0x09ce, - 0x09dc, 0x09dd, - 0x09df, 0x09e1, - 0x09f0, 0x09f1, - 0x0a05, 0x0a0a, - 0x0a0f, 0x0a10, - 0x0a13, 0x0a28, - 0x0a2a, 0x0a30, - 0x0a32, 0x0a33, - 0x0a35, 0x0a36, - 0x0a38, 0x0a39, - 0x0a59, 0x0a5c, - 0x0a5e, 0x0a5e, - 0x0a72, 0x0a74, - 0x0a85, 0x0a8d, - 0x0a8f, 0x0a91, - 0x0a93, 0x0aa8, - 0x0aaa, 0x0ab0, - 0x0ab2, 0x0ab3, - 0x0ab5, 0x0ab9, - 0x0abd, 0x0abd, - 0x0ad0, 0x0ad0, - 0x0ae0, 0x0ae1, - 0x0b05, 0x0b0c, - 0x0b0f, 0x0b10, - 0x0b13, 0x0b28, - 0x0b2a, 0x0b30, - 0x0b32, 0x0b33, - 0x0b35, 0x0b39, - 0x0b3d, 0x0b3d, - 0x0b5c, 0x0b5d, - 0x0b5f, 0x0b61, - 0x0b71, 0x0b71, - 0x0b83, 0x0b83, - 0x0b85, 0x0b8a, - 0x0b8e, 0x0b90, - 0x0b92, 0x0b95, - 0x0b99, 0x0b9a, - 0x0b9c, 0x0b9c, - 0x0b9e, 0x0b9f, - 0x0ba3, 0x0ba4, - 0x0ba8, 0x0baa, - 0x0bae, 0x0bb9, - 0x0c05, 0x0c0c, - 0x0c0e, 0x0c10, - 0x0c12, 0x0c28, - 0x0c2a, 0x0c33, - 0x0c35, 0x0c39, - 0x0c60, 0x0c61, - 0x0c85, 0x0c8c, - 0x0c8e, 0x0c90, - 0x0c92, 0x0ca8, - 0x0caa, 0x0cb3, - 0x0cb5, 0x0cb9, - 0x0cbd, 0x0cbd, - 0x0cde, 0x0cde, - 0x0ce0, 0x0ce1, - 0x0d05, 0x0d0c, - 0x0d0e, 0x0d10, - 0x0d12, 0x0d28, - 0x0d2a, 0x0d39, - 0x0d60, 0x0d61, - 0x0d85, 0x0d96, - 0x0d9a, 0x0db1, - 0x0db3, 0x0dbb, - 0x0dbd, 0x0dbd, - 0x0dc0, 0x0dc6, - 0x0e01, 0x0e30, - 0x0e32, 0x0e33, - 0x0e40, 0x0e46, - 0x0e81, 0x0e82, - 0x0e84, 0x0e84, - 0x0e87, 0x0e88, - 0x0e8a, 0x0e8a, - 0x0e8d, 0x0e8d, - 0x0e94, 0x0e97, - 0x0e99, 0x0e9f, - 0x0ea1, 0x0ea3, - 0x0ea5, 0x0ea5, - 0x0ea7, 0x0ea7, - 0x0eaa, 0x0eab, - 0x0ead, 0x0eb0, - 0x0eb2, 0x0eb3, - 0x0ebd, 0x0ebd, - 0x0ec0, 0x0ec4, - 0x0ec6, 0x0ec6, - 0x0edc, 0x0edd, - 0x0f00, 0x0f00, - 0x0f40, 0x0f47, - 0x0f49, 0x0f6a, - 0x0f88, 0x0f8b, - 0x1000, 0x1021, - 0x1023, 0x1027, - 0x1029, 0x102a, - 0x1050, 0x1055, - 0x10a0, 0x10c5, - 0x10d0, 0x10fa, - 0x10fc, 0x10fc, - 0x1100, 0x1159, - 0x115f, 0x11a2, - 0x11a8, 0x11f9, - 0x1200, 0x1248, - 0x124a, 0x124d, - 0x1250, 0x1256, - 0x1258, 0x1258, - 0x125a, 0x125d, - 0x1260, 0x1288, - 0x128a, 0x128d, - 0x1290, 0x12b0, - 0x12b2, 0x12b5, - 0x12b8, 0x12be, - 0x12c0, 0x12c0, - 0x12c2, 0x12c5, - 0x12c8, 0x12d6, - 0x12d8, 0x1310, - 0x1312, 0x1315, - 0x1318, 0x135a, - 0x1380, 0x138f, - 0x13a0, 0x13f4, - 0x1401, 0x166c, - 0x166f, 0x1676, - 0x1681, 0x169a, - 0x16a0, 0x16ea, - 0x1700, 0x170c, - 0x170e, 0x1711, - 0x1720, 0x1731, - 0x1740, 0x1751, - 0x1760, 0x176c, - 0x176e, 0x1770, - 0x1780, 0x17b3, - 0x17d7, 0x17d7, - 0x17dc, 0x17dc, - 0x1820, 0x1877, - 0x1880, 0x18a8, - 0x1900, 0x191c, - 0x1950, 0x196d, - 0x1970, 0x1974, - 0x1980, 0x19a9, - 0x19c1, 0x19c7, - 0x1a00, 0x1a16, - 0x1d00, 0x1dbf, - 0x1e00, 0x1e9b, - 0x1ea0, 0x1ef9, - 0x1f00, 0x1f15, - 0x1f18, 0x1f1d, - 0x1f20, 0x1f45, - 0x1f48, 0x1f4d, - 0x1f50, 0x1f57, - 0x1f59, 0x1f59, - 0x1f5b, 0x1f5b, - 0x1f5d, 0x1f5d, - 0x1f5f, 0x1f7d, - 0x1f80, 0x1fb4, - 0x1fb6, 0x1fbc, - 0x1fbe, 0x1fbe, - 0x1fc2, 0x1fc4, - 0x1fc6, 0x1fcc, - 0x1fd0, 0x1fd3, - 0x1fd6, 0x1fdb, - 0x1fe0, 0x1fec, - 0x1ff2, 0x1ff4, - 0x1ff6, 0x1ffc, - 0x2071, 0x2071, - 0x207f, 0x207f, - 0x2090, 0x2094, - 0x2102, 0x2102, - 0x2107, 0x2107, - 0x210a, 0x2113, - 0x2115, 0x2115, - 0x2119, 0x211d, - 0x2124, 0x2124, - 0x2126, 0x2126, - 0x2128, 0x2128, - 0x212a, 0x212d, - 0x212f, 0x2131, - 0x2133, 0x2139, - 0x213c, 0x213f, - 0x2145, 0x2149, - 0x2c00, 0x2c2e, - 0x2c30, 0x2c5e, - 0x2c80, 0x2ce4, - 0x2d00, 0x2d25, - 0x2d30, 0x2d65, - 0x2d6f, 0x2d6f, - 0x2d80, 0x2d96, - 0x2da0, 0x2da6, - 0x2da8, 0x2dae, - 0x2db0, 0x2db6, - 0x2db8, 0x2dbe, - 0x2dc0, 0x2dc6, - 0x2dc8, 0x2dce, - 0x2dd0, 0x2dd6, - 0x2dd8, 0x2dde, - 0x3005, 0x3006, - 0x3031, 0x3035, - 0x303b, 0x303c, - 0x3041, 0x3096, - 0x309d, 0x309f, - 0x30a1, 0x30fa, - 0x30fc, 0x30ff, - 0x3105, 0x312c, - 0x3131, 0x318e, - 0x31a0, 0x31b7, - 0x31f0, 0x31ff, - 0x3400, 0x4db5, - 0x4e00, 0x9fbb, - 0xa000, 0xa48c, - 0xa800, 0xa801, - 0xa803, 0xa805, - 0xa807, 0xa80a, - 0xa80c, 0xa822, - 0xac00, 0xd7a3, - 0xf900, 0xfa2d, - 0xfa30, 0xfa6a, - 0xfa70, 0xfad9, - 0xfb00, 0xfb06, - 0xfb13, 0xfb17, - 0xfb1d, 0xfb1d, - 0xfb1f, 0xfb28, - 0xfb2a, 0xfb36, - 0xfb38, 0xfb3c, - 0xfb3e, 0xfb3e, - 0xfb40, 0xfb41, - 0xfb43, 0xfb44, - 0xfb46, 0xfbb1, - 0xfbd3, 0xfd3d, - 0xfd50, 0xfd8f, - 0xfd92, 0xfdc7, - 0xfdf0, 0xfdfb, - 0xfe70, 0xfe74, - 0xfe76, 0xfefc, - 0xff21, 0xff3a, - 0xff41, 0xff5a, - 0xff66, 0xffbe, - 0xffc2, 0xffc7, - 0xffca, 0xffcf, - 0xffd2, 0xffd7, - 0xffda, 0xffdc, - 0x10000, 0x1000b, - 0x1000d, 0x10026, - 0x10028, 0x1003a, - 0x1003c, 0x1003d, - 0x1003f, 0x1004d, - 0x10050, 0x1005d, - 0x10080, 0x100fa, - 0x10300, 0x1031e, - 0x10330, 0x10349, - 0x10380, 0x1039d, - 0x103a0, 0x103c3, - 0x103c8, 0x103cf, - 0x10400, 0x1049d, - 0x10800, 0x10805, - 0x10808, 0x10808, - 0x1080a, 0x10835, - 0x10837, 0x10838, - 0x1083c, 0x1083c, - 0x1083f, 0x1083f, - 0x10a00, 0x10a00, - 0x10a10, 0x10a13, - 0x10a15, 0x10a17, - 0x10a19, 0x10a33, - 0x1d400, 0x1d454, - 0x1d456, 0x1d49c, - 0x1d49e, 0x1d49f, - 0x1d4a2, 0x1d4a2, - 0x1d4a5, 0x1d4a6, - 0x1d4a9, 0x1d4ac, - 0x1d4ae, 0x1d4b9, - 0x1d4bb, 0x1d4bb, - 0x1d4bd, 0x1d4c3, - 0x1d4c5, 0x1d505, - 0x1d507, 0x1d50a, - 0x1d50d, 0x1d514, - 0x1d516, 0x1d51c, - 0x1d51e, 0x1d539, - 0x1d53b, 0x1d53e, - 0x1d540, 0x1d544, - 0x1d546, 0x1d546, - 0x1d54a, 0x1d550, - 0x1d552, 0x1d6a5, - 0x1d6a8, 0x1d6c0, - 0x1d6c2, 0x1d6da, - 0x1d6dc, 0x1d6fa, - 0x1d6fc, 0x1d714, - 0x1d716, 0x1d734, - 0x1d736, 0x1d74e, - 0x1d750, 0x1d76e, - 0x1d770, 0x1d788, - 0x1d78a, 0x1d7a8, - 0x1d7aa, 0x1d7c2, - 0x1d7c4, 0x1d7c9, - 0x20000, 0x2a6d6, - 0x2f800, 0x2fa1d -}; /* CR_L */ - -/* 'Ll': General Category */ -static const OnigCodePoint CR_Ll[] = { - 480, - 0x0061, 0x007a, - 0x00aa, 0x00aa, - 0x00b5, 0x00b5, - 0x00ba, 0x00ba, - 0x00df, 0x00f6, - 0x00f8, 0x00ff, - 0x0101, 0x0101, - 0x0103, 0x0103, - 0x0105, 0x0105, - 0x0107, 0x0107, - 0x0109, 0x0109, - 0x010b, 0x010b, - 0x010d, 0x010d, - 0x010f, 0x010f, - 0x0111, 0x0111, - 0x0113, 0x0113, - 0x0115, 0x0115, - 0x0117, 0x0117, - 0x0119, 0x0119, - 0x011b, 0x011b, - 0x011d, 0x011d, - 0x011f, 0x011f, - 0x0121, 0x0121, - 0x0123, 0x0123, - 0x0125, 0x0125, - 0x0127, 0x0127, - 0x0129, 0x0129, - 0x012b, 0x012b, - 0x012d, 0x012d, - 0x012f, 0x012f, - 0x0131, 0x0131, - 0x0133, 0x0133, - 0x0135, 0x0135, - 0x0137, 0x0138, - 0x013a, 0x013a, - 0x013c, 0x013c, - 0x013e, 0x013e, - 0x0140, 0x0140, - 0x0142, 0x0142, - 0x0144, 0x0144, - 0x0146, 0x0146, - 0x0148, 0x0149, - 0x014b, 0x014b, - 0x014d, 0x014d, - 0x014f, 0x014f, - 0x0151, 0x0151, - 0x0153, 0x0153, - 0x0155, 0x0155, - 0x0157, 0x0157, - 0x0159, 0x0159, - 0x015b, 0x015b, - 0x015d, 0x015d, - 0x015f, 0x015f, - 0x0161, 0x0161, - 0x0163, 0x0163, - 0x0165, 0x0165, - 0x0167, 0x0167, - 0x0169, 0x0169, - 0x016b, 0x016b, - 0x016d, 0x016d, - 0x016f, 0x016f, - 0x0171, 0x0171, - 0x0173, 0x0173, - 0x0175, 0x0175, - 0x0177, 0x0177, - 0x017a, 0x017a, - 0x017c, 0x017c, - 0x017e, 0x0180, - 0x0183, 0x0183, - 0x0185, 0x0185, - 0x0188, 0x0188, - 0x018c, 0x018d, - 0x0192, 0x0192, - 0x0195, 0x0195, - 0x0199, 0x019b, - 0x019e, 0x019e, - 0x01a1, 0x01a1, - 0x01a3, 0x01a3, - 0x01a5, 0x01a5, - 0x01a8, 0x01a8, - 0x01aa, 0x01ab, - 0x01ad, 0x01ad, - 0x01b0, 0x01b0, - 0x01b4, 0x01b4, - 0x01b6, 0x01b6, - 0x01b9, 0x01ba, - 0x01bd, 0x01bf, - 0x01c6, 0x01c6, - 0x01c9, 0x01c9, - 0x01cc, 0x01cc, - 0x01ce, 0x01ce, - 0x01d0, 0x01d0, - 0x01d2, 0x01d2, - 0x01d4, 0x01d4, - 0x01d6, 0x01d6, - 0x01d8, 0x01d8, - 0x01da, 0x01da, - 0x01dc, 0x01dd, - 0x01df, 0x01df, - 0x01e1, 0x01e1, - 0x01e3, 0x01e3, - 0x01e5, 0x01e5, - 0x01e7, 0x01e7, - 0x01e9, 0x01e9, - 0x01eb, 0x01eb, - 0x01ed, 0x01ed, - 0x01ef, 0x01f0, - 0x01f3, 0x01f3, - 0x01f5, 0x01f5, - 0x01f9, 0x01f9, - 0x01fb, 0x01fb, - 0x01fd, 0x01fd, - 0x01ff, 0x01ff, - 0x0201, 0x0201, - 0x0203, 0x0203, - 0x0205, 0x0205, - 0x0207, 0x0207, - 0x0209, 0x0209, - 0x020b, 0x020b, - 0x020d, 0x020d, - 0x020f, 0x020f, - 0x0211, 0x0211, - 0x0213, 0x0213, - 0x0215, 0x0215, - 0x0217, 0x0217, - 0x0219, 0x0219, - 0x021b, 0x021b, - 0x021d, 0x021d, - 0x021f, 0x021f, - 0x0221, 0x0221, - 0x0223, 0x0223, - 0x0225, 0x0225, - 0x0227, 0x0227, - 0x0229, 0x0229, - 0x022b, 0x022b, - 0x022d, 0x022d, - 0x022f, 0x022f, - 0x0231, 0x0231, - 0x0233, 0x0239, - 0x023c, 0x023c, - 0x023f, 0x0240, - 0x0250, 0x02af, - 0x0390, 0x0390, - 0x03ac, 0x03ce, - 0x03d0, 0x03d1, - 0x03d5, 0x03d7, - 0x03d9, 0x03d9, - 0x03db, 0x03db, - 0x03dd, 0x03dd, - 0x03df, 0x03df, - 0x03e1, 0x03e1, - 0x03e3, 0x03e3, - 0x03e5, 0x03e5, - 0x03e7, 0x03e7, - 0x03e9, 0x03e9, - 0x03eb, 0x03eb, - 0x03ed, 0x03ed, - 0x03ef, 0x03f3, - 0x03f5, 0x03f5, - 0x03f8, 0x03f8, - 0x03fb, 0x03fc, - 0x0430, 0x045f, - 0x0461, 0x0461, - 0x0463, 0x0463, - 0x0465, 0x0465, - 0x0467, 0x0467, - 0x0469, 0x0469, - 0x046b, 0x046b, - 0x046d, 0x046d, - 0x046f, 0x046f, - 0x0471, 0x0471, - 0x0473, 0x0473, - 0x0475, 0x0475, - 0x0477, 0x0477, - 0x0479, 0x0479, - 0x047b, 0x047b, - 0x047d, 0x047d, - 0x047f, 0x047f, - 0x0481, 0x0481, - 0x048b, 0x048b, - 0x048d, 0x048d, - 0x048f, 0x048f, - 0x0491, 0x0491, - 0x0493, 0x0493, - 0x0495, 0x0495, - 0x0497, 0x0497, - 0x0499, 0x0499, - 0x049b, 0x049b, - 0x049d, 0x049d, - 0x049f, 0x049f, - 0x04a1, 0x04a1, - 0x04a3, 0x04a3, - 0x04a5, 0x04a5, - 0x04a7, 0x04a7, - 0x04a9, 0x04a9, - 0x04ab, 0x04ab, - 0x04ad, 0x04ad, - 0x04af, 0x04af, - 0x04b1, 0x04b1, - 0x04b3, 0x04b3, - 0x04b5, 0x04b5, - 0x04b7, 0x04b7, - 0x04b9, 0x04b9, - 0x04bb, 0x04bb, - 0x04bd, 0x04bd, - 0x04bf, 0x04bf, - 0x04c2, 0x04c2, - 0x04c4, 0x04c4, - 0x04c6, 0x04c6, - 0x04c8, 0x04c8, - 0x04ca, 0x04ca, - 0x04cc, 0x04cc, - 0x04ce, 0x04ce, - 0x04d1, 0x04d1, - 0x04d3, 0x04d3, - 0x04d5, 0x04d5, - 0x04d7, 0x04d7, - 0x04d9, 0x04d9, - 0x04db, 0x04db, - 0x04dd, 0x04dd, - 0x04df, 0x04df, - 0x04e1, 0x04e1, - 0x04e3, 0x04e3, - 0x04e5, 0x04e5, - 0x04e7, 0x04e7, - 0x04e9, 0x04e9, - 0x04eb, 0x04eb, - 0x04ed, 0x04ed, - 0x04ef, 0x04ef, - 0x04f1, 0x04f1, - 0x04f3, 0x04f3, - 0x04f5, 0x04f5, - 0x04f7, 0x04f7, - 0x04f9, 0x04f9, - 0x0501, 0x0501, - 0x0503, 0x0503, - 0x0505, 0x0505, - 0x0507, 0x0507, - 0x0509, 0x0509, - 0x050b, 0x050b, - 0x050d, 0x050d, - 0x050f, 0x050f, - 0x0561, 0x0587, - 0x1d00, 0x1d2b, - 0x1d62, 0x1d77, - 0x1d79, 0x1d9a, - 0x1e01, 0x1e01, - 0x1e03, 0x1e03, - 0x1e05, 0x1e05, - 0x1e07, 0x1e07, - 0x1e09, 0x1e09, - 0x1e0b, 0x1e0b, - 0x1e0d, 0x1e0d, - 0x1e0f, 0x1e0f, - 0x1e11, 0x1e11, - 0x1e13, 0x1e13, - 0x1e15, 0x1e15, - 0x1e17, 0x1e17, - 0x1e19, 0x1e19, - 0x1e1b, 0x1e1b, - 0x1e1d, 0x1e1d, - 0x1e1f, 0x1e1f, - 0x1e21, 0x1e21, - 0x1e23, 0x1e23, - 0x1e25, 0x1e25, - 0x1e27, 0x1e27, - 0x1e29, 0x1e29, - 0x1e2b, 0x1e2b, - 0x1e2d, 0x1e2d, - 0x1e2f, 0x1e2f, - 0x1e31, 0x1e31, - 0x1e33, 0x1e33, - 0x1e35, 0x1e35, - 0x1e37, 0x1e37, - 0x1e39, 0x1e39, - 0x1e3b, 0x1e3b, - 0x1e3d, 0x1e3d, - 0x1e3f, 0x1e3f, - 0x1e41, 0x1e41, - 0x1e43, 0x1e43, - 0x1e45, 0x1e45, - 0x1e47, 0x1e47, - 0x1e49, 0x1e49, - 0x1e4b, 0x1e4b, - 0x1e4d, 0x1e4d, - 0x1e4f, 0x1e4f, - 0x1e51, 0x1e51, - 0x1e53, 0x1e53, - 0x1e55, 0x1e55, - 0x1e57, 0x1e57, - 0x1e59, 0x1e59, - 0x1e5b, 0x1e5b, - 0x1e5d, 0x1e5d, - 0x1e5f, 0x1e5f, - 0x1e61, 0x1e61, - 0x1e63, 0x1e63, - 0x1e65, 0x1e65, - 0x1e67, 0x1e67, - 0x1e69, 0x1e69, - 0x1e6b, 0x1e6b, - 0x1e6d, 0x1e6d, - 0x1e6f, 0x1e6f, - 0x1e71, 0x1e71, - 0x1e73, 0x1e73, - 0x1e75, 0x1e75, - 0x1e77, 0x1e77, - 0x1e79, 0x1e79, - 0x1e7b, 0x1e7b, - 0x1e7d, 0x1e7d, - 0x1e7f, 0x1e7f, - 0x1e81, 0x1e81, - 0x1e83, 0x1e83, - 0x1e85, 0x1e85, - 0x1e87, 0x1e87, - 0x1e89, 0x1e89, - 0x1e8b, 0x1e8b, - 0x1e8d, 0x1e8d, - 0x1e8f, 0x1e8f, - 0x1e91, 0x1e91, - 0x1e93, 0x1e93, - 0x1e95, 0x1e9b, - 0x1ea1, 0x1ea1, - 0x1ea3, 0x1ea3, - 0x1ea5, 0x1ea5, - 0x1ea7, 0x1ea7, - 0x1ea9, 0x1ea9, - 0x1eab, 0x1eab, - 0x1ead, 0x1ead, - 0x1eaf, 0x1eaf, - 0x1eb1, 0x1eb1, - 0x1eb3, 0x1eb3, - 0x1eb5, 0x1eb5, - 0x1eb7, 0x1eb7, - 0x1eb9, 0x1eb9, - 0x1ebb, 0x1ebb, - 0x1ebd, 0x1ebd, - 0x1ebf, 0x1ebf, - 0x1ec1, 0x1ec1, - 0x1ec3, 0x1ec3, - 0x1ec5, 0x1ec5, - 0x1ec7, 0x1ec7, - 0x1ec9, 0x1ec9, - 0x1ecb, 0x1ecb, - 0x1ecd, 0x1ecd, - 0x1ecf, 0x1ecf, - 0x1ed1, 0x1ed1, - 0x1ed3, 0x1ed3, - 0x1ed5, 0x1ed5, - 0x1ed7, 0x1ed7, - 0x1ed9, 0x1ed9, - 0x1edb, 0x1edb, - 0x1edd, 0x1edd, - 0x1edf, 0x1edf, - 0x1ee1, 0x1ee1, - 0x1ee3, 0x1ee3, - 0x1ee5, 0x1ee5, - 0x1ee7, 0x1ee7, - 0x1ee9, 0x1ee9, - 0x1eeb, 0x1eeb, - 0x1eed, 0x1eed, - 0x1eef, 0x1eef, - 0x1ef1, 0x1ef1, - 0x1ef3, 0x1ef3, - 0x1ef5, 0x1ef5, - 0x1ef7, 0x1ef7, - 0x1ef9, 0x1ef9, - 0x1f00, 0x1f07, - 0x1f10, 0x1f15, - 0x1f20, 0x1f27, - 0x1f30, 0x1f37, - 0x1f40, 0x1f45, - 0x1f50, 0x1f57, - 0x1f60, 0x1f67, - 0x1f70, 0x1f7d, - 0x1f80, 0x1f87, - 0x1f90, 0x1f97, - 0x1fa0, 0x1fa7, - 0x1fb0, 0x1fb4, - 0x1fb6, 0x1fb7, - 0x1fbe, 0x1fbe, - 0x1fc2, 0x1fc4, - 0x1fc6, 0x1fc7, - 0x1fd0, 0x1fd3, - 0x1fd6, 0x1fd7, - 0x1fe0, 0x1fe7, - 0x1ff2, 0x1ff4, - 0x1ff6, 0x1ff7, - 0x2071, 0x2071, - 0x207f, 0x207f, - 0x210a, 0x210a, - 0x210e, 0x210f, - 0x2113, 0x2113, - 0x212f, 0x212f, - 0x2134, 0x2134, - 0x2139, 0x2139, - 0x213c, 0x213d, - 0x2146, 0x2149, - 0x2c30, 0x2c5e, - 0x2c81, 0x2c81, - 0x2c83, 0x2c83, - 0x2c85, 0x2c85, - 0x2c87, 0x2c87, - 0x2c89, 0x2c89, - 0x2c8b, 0x2c8b, - 0x2c8d, 0x2c8d, - 0x2c8f, 0x2c8f, - 0x2c91, 0x2c91, - 0x2c93, 0x2c93, - 0x2c95, 0x2c95, - 0x2c97, 0x2c97, - 0x2c99, 0x2c99, - 0x2c9b, 0x2c9b, - 0x2c9d, 0x2c9d, - 0x2c9f, 0x2c9f, - 0x2ca1, 0x2ca1, - 0x2ca3, 0x2ca3, - 0x2ca5, 0x2ca5, - 0x2ca7, 0x2ca7, - 0x2ca9, 0x2ca9, - 0x2cab, 0x2cab, - 0x2cad, 0x2cad, - 0x2caf, 0x2caf, - 0x2cb1, 0x2cb1, - 0x2cb3, 0x2cb3, - 0x2cb5, 0x2cb5, - 0x2cb7, 0x2cb7, - 0x2cb9, 0x2cb9, - 0x2cbb, 0x2cbb, - 0x2cbd, 0x2cbd, - 0x2cbf, 0x2cbf, - 0x2cc1, 0x2cc1, - 0x2cc3, 0x2cc3, - 0x2cc5, 0x2cc5, - 0x2cc7, 0x2cc7, - 0x2cc9, 0x2cc9, - 0x2ccb, 0x2ccb, - 0x2ccd, 0x2ccd, - 0x2ccf, 0x2ccf, - 0x2cd1, 0x2cd1, - 0x2cd3, 0x2cd3, - 0x2cd5, 0x2cd5, - 0x2cd7, 0x2cd7, - 0x2cd9, 0x2cd9, - 0x2cdb, 0x2cdb, - 0x2cdd, 0x2cdd, - 0x2cdf, 0x2cdf, - 0x2ce1, 0x2ce1, - 0x2ce3, 0x2ce4, - 0x2d00, 0x2d25, - 0xfb00, 0xfb06, - 0xfb13, 0xfb17, - 0xff41, 0xff5a, - 0x10428, 0x1044f, - 0x1d41a, 0x1d433, - 0x1d44e, 0x1d454, - 0x1d456, 0x1d467, - 0x1d482, 0x1d49b, - 0x1d4b6, 0x1d4b9, - 0x1d4bb, 0x1d4bb, - 0x1d4bd, 0x1d4c3, - 0x1d4c5, 0x1d4cf, - 0x1d4ea, 0x1d503, - 0x1d51e, 0x1d537, - 0x1d552, 0x1d56b, - 0x1d586, 0x1d59f, - 0x1d5ba, 0x1d5d3, - 0x1d5ee, 0x1d607, - 0x1d622, 0x1d63b, - 0x1d656, 0x1d66f, - 0x1d68a, 0x1d6a5, - 0x1d6c2, 0x1d6da, - 0x1d6dc, 0x1d6e1, - 0x1d6fc, 0x1d714, - 0x1d716, 0x1d71b, - 0x1d736, 0x1d74e, - 0x1d750, 0x1d755, - 0x1d770, 0x1d788, - 0x1d78a, 0x1d78f, - 0x1d7aa, 0x1d7c2, - 0x1d7c4, 0x1d7c9 -}; /* CR_Ll */ - -/* 'Lm': General Category */ -static const OnigCodePoint CR_Lm[] = { - 26, - 0x02b0, 0x02c1, - 0x02c6, 0x02d1, - 0x02e0, 0x02e4, - 0x02ee, 0x02ee, - 0x037a, 0x037a, - 0x0559, 0x0559, - 0x0640, 0x0640, - 0x06e5, 0x06e6, - 0x0e46, 0x0e46, - 0x0ec6, 0x0ec6, - 0x10fc, 0x10fc, - 0x17d7, 0x17d7, - 0x1843, 0x1843, - 0x1d2c, 0x1d61, - 0x1d78, 0x1d78, - 0x1d9b, 0x1dbf, - 0x2090, 0x2094, - 0x2d6f, 0x2d6f, - 0x3005, 0x3005, - 0x3031, 0x3035, - 0x303b, 0x303b, - 0x309d, 0x309e, - 0x30fc, 0x30fe, - 0xa015, 0xa015, - 0xff70, 0xff70, - 0xff9e, 0xff9f -}; /* CR_Lm */ - -/* 'Lo': General Category */ -static const OnigCodePoint CR_Lo[] = { - 245, - 0x01bb, 0x01bb, - 0x01c0, 0x01c3, - 0x05d0, 0x05ea, - 0x05f0, 0x05f2, - 0x0621, 0x063a, - 0x0641, 0x064a, - 0x066e, 0x066f, - 0x0671, 0x06d3, - 0x06d5, 0x06d5, - 0x06ee, 0x06ef, - 0x06fa, 0x06fc, - 0x06ff, 0x06ff, - 0x0710, 0x0710, - 0x0712, 0x072f, - 0x074d, 0x076d, - 0x0780, 0x07a5, - 0x07b1, 0x07b1, - 0x0904, 0x0939, - 0x093d, 0x093d, - 0x0950, 0x0950, - 0x0958, 0x0961, - 0x097d, 0x097d, - 0x0985, 0x098c, - 0x098f, 0x0990, - 0x0993, 0x09a8, - 0x09aa, 0x09b0, - 0x09b2, 0x09b2, - 0x09b6, 0x09b9, - 0x09bd, 0x09bd, - 0x09ce, 0x09ce, - 0x09dc, 0x09dd, - 0x09df, 0x09e1, - 0x09f0, 0x09f1, - 0x0a05, 0x0a0a, - 0x0a0f, 0x0a10, - 0x0a13, 0x0a28, - 0x0a2a, 0x0a30, - 0x0a32, 0x0a33, - 0x0a35, 0x0a36, - 0x0a38, 0x0a39, - 0x0a59, 0x0a5c, - 0x0a5e, 0x0a5e, - 0x0a72, 0x0a74, - 0x0a85, 0x0a8d, - 0x0a8f, 0x0a91, - 0x0a93, 0x0aa8, - 0x0aaa, 0x0ab0, - 0x0ab2, 0x0ab3, - 0x0ab5, 0x0ab9, - 0x0abd, 0x0abd, - 0x0ad0, 0x0ad0, - 0x0ae0, 0x0ae1, - 0x0b05, 0x0b0c, - 0x0b0f, 0x0b10, - 0x0b13, 0x0b28, - 0x0b2a, 0x0b30, - 0x0b32, 0x0b33, - 0x0b35, 0x0b39, - 0x0b3d, 0x0b3d, - 0x0b5c, 0x0b5d, - 0x0b5f, 0x0b61, - 0x0b71, 0x0b71, - 0x0b83, 0x0b83, - 0x0b85, 0x0b8a, - 0x0b8e, 0x0b90, - 0x0b92, 0x0b95, - 0x0b99, 0x0b9a, - 0x0b9c, 0x0b9c, - 0x0b9e, 0x0b9f, - 0x0ba3, 0x0ba4, - 0x0ba8, 0x0baa, - 0x0bae, 0x0bb9, - 0x0c05, 0x0c0c, - 0x0c0e, 0x0c10, - 0x0c12, 0x0c28, - 0x0c2a, 0x0c33, - 0x0c35, 0x0c39, - 0x0c60, 0x0c61, - 0x0c85, 0x0c8c, - 0x0c8e, 0x0c90, - 0x0c92, 0x0ca8, - 0x0caa, 0x0cb3, - 0x0cb5, 0x0cb9, - 0x0cbd, 0x0cbd, - 0x0cde, 0x0cde, - 0x0ce0, 0x0ce1, - 0x0d05, 0x0d0c, - 0x0d0e, 0x0d10, - 0x0d12, 0x0d28, - 0x0d2a, 0x0d39, - 0x0d60, 0x0d61, - 0x0d85, 0x0d96, - 0x0d9a, 0x0db1, - 0x0db3, 0x0dbb, - 0x0dbd, 0x0dbd, - 0x0dc0, 0x0dc6, - 0x0e01, 0x0e30, - 0x0e32, 0x0e33, - 0x0e40, 0x0e45, - 0x0e81, 0x0e82, - 0x0e84, 0x0e84, - 0x0e87, 0x0e88, - 0x0e8a, 0x0e8a, - 0x0e8d, 0x0e8d, - 0x0e94, 0x0e97, - 0x0e99, 0x0e9f, - 0x0ea1, 0x0ea3, - 0x0ea5, 0x0ea5, - 0x0ea7, 0x0ea7, - 0x0eaa, 0x0eab, - 0x0ead, 0x0eb0, - 0x0eb2, 0x0eb3, - 0x0ebd, 0x0ebd, - 0x0ec0, 0x0ec4, - 0x0edc, 0x0edd, - 0x0f00, 0x0f00, - 0x0f40, 0x0f47, - 0x0f49, 0x0f6a, - 0x0f88, 0x0f8b, - 0x1000, 0x1021, - 0x1023, 0x1027, - 0x1029, 0x102a, - 0x1050, 0x1055, - 0x10d0, 0x10fa, - 0x1100, 0x1159, - 0x115f, 0x11a2, - 0x11a8, 0x11f9, - 0x1200, 0x1248, - 0x124a, 0x124d, - 0x1250, 0x1256, - 0x1258, 0x1258, - 0x125a, 0x125d, - 0x1260, 0x1288, - 0x128a, 0x128d, - 0x1290, 0x12b0, - 0x12b2, 0x12b5, - 0x12b8, 0x12be, - 0x12c0, 0x12c0, - 0x12c2, 0x12c5, - 0x12c8, 0x12d6, - 0x12d8, 0x1310, - 0x1312, 0x1315, - 0x1318, 0x135a, - 0x1380, 0x138f, - 0x13a0, 0x13f4, - 0x1401, 0x166c, - 0x166f, 0x1676, - 0x1681, 0x169a, - 0x16a0, 0x16ea, - 0x1700, 0x170c, - 0x170e, 0x1711, - 0x1720, 0x1731, - 0x1740, 0x1751, - 0x1760, 0x176c, - 0x176e, 0x1770, - 0x1780, 0x17b3, - 0x17dc, 0x17dc, - 0x1820, 0x1842, - 0x1844, 0x1877, - 0x1880, 0x18a8, - 0x1900, 0x191c, - 0x1950, 0x196d, - 0x1970, 0x1974, - 0x1980, 0x19a9, - 0x19c1, 0x19c7, - 0x1a00, 0x1a16, - 0x2135, 0x2138, - 0x2d30, 0x2d65, - 0x2d80, 0x2d96, - 0x2da0, 0x2da6, - 0x2da8, 0x2dae, - 0x2db0, 0x2db6, - 0x2db8, 0x2dbe, - 0x2dc0, 0x2dc6, - 0x2dc8, 0x2dce, - 0x2dd0, 0x2dd6, - 0x2dd8, 0x2dde, - 0x3006, 0x3006, - 0x303c, 0x303c, - 0x3041, 0x3096, - 0x309f, 0x309f, - 0x30a1, 0x30fa, - 0x30ff, 0x30ff, - 0x3105, 0x312c, - 0x3131, 0x318e, - 0x31a0, 0x31b7, - 0x31f0, 0x31ff, - 0x3400, 0x4db5, - 0x4e00, 0x9fbb, - 0xa000, 0xa014, - 0xa016, 0xa48c, - 0xa800, 0xa801, - 0xa803, 0xa805, - 0xa807, 0xa80a, - 0xa80c, 0xa822, - 0xac00, 0xd7a3, - 0xf900, 0xfa2d, - 0xfa30, 0xfa6a, - 0xfa70, 0xfad9, - 0xfb1d, 0xfb1d, - 0xfb1f, 0xfb28, - 0xfb2a, 0xfb36, - 0xfb38, 0xfb3c, - 0xfb3e, 0xfb3e, - 0xfb40, 0xfb41, - 0xfb43, 0xfb44, - 0xfb46, 0xfbb1, - 0xfbd3, 0xfd3d, - 0xfd50, 0xfd8f, - 0xfd92, 0xfdc7, - 0xfdf0, 0xfdfb, - 0xfe70, 0xfe74, - 0xfe76, 0xfefc, - 0xff66, 0xff6f, - 0xff71, 0xff9d, - 0xffa0, 0xffbe, - 0xffc2, 0xffc7, - 0xffca, 0xffcf, - 0xffd2, 0xffd7, - 0xffda, 0xffdc, - 0x10000, 0x1000b, - 0x1000d, 0x10026, - 0x10028, 0x1003a, - 0x1003c, 0x1003d, - 0x1003f, 0x1004d, - 0x10050, 0x1005d, - 0x10080, 0x100fa, - 0x10300, 0x1031e, - 0x10330, 0x10349, - 0x10380, 0x1039d, - 0x103a0, 0x103c3, - 0x103c8, 0x103cf, - 0x10450, 0x1049d, - 0x10800, 0x10805, - 0x10808, 0x10808, - 0x1080a, 0x10835, - 0x10837, 0x10838, - 0x1083c, 0x1083c, - 0x1083f, 0x1083f, - 0x10a00, 0x10a00, - 0x10a10, 0x10a13, - 0x10a15, 0x10a17, - 0x10a19, 0x10a33, - 0x20000, 0x2a6d6, - 0x2f800, 0x2fa1d -}; /* CR_Lo */ - -/* 'Lt': General Category */ -static const OnigCodePoint CR_Lt[] = { - 10, - 0x01c5, 0x01c5, - 0x01c8, 0x01c8, - 0x01cb, 0x01cb, - 0x01f2, 0x01f2, - 0x1f88, 0x1f8f, - 0x1f98, 0x1f9f, - 0x1fa8, 0x1faf, - 0x1fbc, 0x1fbc, - 0x1fcc, 0x1fcc, - 0x1ffc, 0x1ffc -}; /* CR_Lt */ - -/* 'Lu': General Category */ -static const OnigCodePoint CR_Lu[] = { - 476, - 0x0041, 0x005a, - 0x00c0, 0x00d6, - 0x00d8, 0x00de, - 0x0100, 0x0100, - 0x0102, 0x0102, - 0x0104, 0x0104, - 0x0106, 0x0106, - 0x0108, 0x0108, - 0x010a, 0x010a, - 0x010c, 0x010c, - 0x010e, 0x010e, - 0x0110, 0x0110, - 0x0112, 0x0112, - 0x0114, 0x0114, - 0x0116, 0x0116, - 0x0118, 0x0118, - 0x011a, 0x011a, - 0x011c, 0x011c, - 0x011e, 0x011e, - 0x0120, 0x0120, - 0x0122, 0x0122, - 0x0124, 0x0124, - 0x0126, 0x0126, - 0x0128, 0x0128, - 0x012a, 0x012a, - 0x012c, 0x012c, - 0x012e, 0x012e, - 0x0130, 0x0130, - 0x0132, 0x0132, - 0x0134, 0x0134, - 0x0136, 0x0136, - 0x0139, 0x0139, - 0x013b, 0x013b, - 0x013d, 0x013d, - 0x013f, 0x013f, - 0x0141, 0x0141, - 0x0143, 0x0143, - 0x0145, 0x0145, - 0x0147, 0x0147, - 0x014a, 0x014a, - 0x014c, 0x014c, - 0x014e, 0x014e, - 0x0150, 0x0150, - 0x0152, 0x0152, - 0x0154, 0x0154, - 0x0156, 0x0156, - 0x0158, 0x0158, - 0x015a, 0x015a, - 0x015c, 0x015c, - 0x015e, 0x015e, - 0x0160, 0x0160, - 0x0162, 0x0162, - 0x0164, 0x0164, - 0x0166, 0x0166, - 0x0168, 0x0168, - 0x016a, 0x016a, - 0x016c, 0x016c, - 0x016e, 0x016e, - 0x0170, 0x0170, - 0x0172, 0x0172, - 0x0174, 0x0174, - 0x0176, 0x0176, - 0x0178, 0x0179, - 0x017b, 0x017b, - 0x017d, 0x017d, - 0x0181, 0x0182, - 0x0184, 0x0184, - 0x0186, 0x0187, - 0x0189, 0x018b, - 0x018e, 0x0191, - 0x0193, 0x0194, - 0x0196, 0x0198, - 0x019c, 0x019d, - 0x019f, 0x01a0, - 0x01a2, 0x01a2, - 0x01a4, 0x01a4, - 0x01a6, 0x01a7, - 0x01a9, 0x01a9, - 0x01ac, 0x01ac, - 0x01ae, 0x01af, - 0x01b1, 0x01b3, - 0x01b5, 0x01b5, - 0x01b7, 0x01b8, - 0x01bc, 0x01bc, - 0x01c4, 0x01c4, - 0x01c7, 0x01c7, - 0x01ca, 0x01ca, - 0x01cd, 0x01cd, - 0x01cf, 0x01cf, - 0x01d1, 0x01d1, - 0x01d3, 0x01d3, - 0x01d5, 0x01d5, - 0x01d7, 0x01d7, - 0x01d9, 0x01d9, - 0x01db, 0x01db, - 0x01de, 0x01de, - 0x01e0, 0x01e0, - 0x01e2, 0x01e2, - 0x01e4, 0x01e4, - 0x01e6, 0x01e6, - 0x01e8, 0x01e8, - 0x01ea, 0x01ea, - 0x01ec, 0x01ec, - 0x01ee, 0x01ee, - 0x01f1, 0x01f1, - 0x01f4, 0x01f4, - 0x01f6, 0x01f8, - 0x01fa, 0x01fa, - 0x01fc, 0x01fc, - 0x01fe, 0x01fe, - 0x0200, 0x0200, - 0x0202, 0x0202, - 0x0204, 0x0204, - 0x0206, 0x0206, - 0x0208, 0x0208, - 0x020a, 0x020a, - 0x020c, 0x020c, - 0x020e, 0x020e, - 0x0210, 0x0210, - 0x0212, 0x0212, - 0x0214, 0x0214, - 0x0216, 0x0216, - 0x0218, 0x0218, - 0x021a, 0x021a, - 0x021c, 0x021c, - 0x021e, 0x021e, - 0x0220, 0x0220, - 0x0222, 0x0222, - 0x0224, 0x0224, - 0x0226, 0x0226, - 0x0228, 0x0228, - 0x022a, 0x022a, - 0x022c, 0x022c, - 0x022e, 0x022e, - 0x0230, 0x0230, - 0x0232, 0x0232, - 0x023a, 0x023b, - 0x023d, 0x023e, - 0x0241, 0x0241, - 0x0386, 0x0386, - 0x0388, 0x038a, - 0x038c, 0x038c, - 0x038e, 0x038f, - 0x0391, 0x03a1, - 0x03a3, 0x03ab, - 0x03d2, 0x03d4, - 0x03d8, 0x03d8, - 0x03da, 0x03da, - 0x03dc, 0x03dc, - 0x03de, 0x03de, - 0x03e0, 0x03e0, - 0x03e2, 0x03e2, - 0x03e4, 0x03e4, - 0x03e6, 0x03e6, - 0x03e8, 0x03e8, - 0x03ea, 0x03ea, - 0x03ec, 0x03ec, - 0x03ee, 0x03ee, - 0x03f4, 0x03f4, - 0x03f7, 0x03f7, - 0x03f9, 0x03fa, - 0x03fd, 0x042f, - 0x0460, 0x0460, - 0x0462, 0x0462, - 0x0464, 0x0464, - 0x0466, 0x0466, - 0x0468, 0x0468, - 0x046a, 0x046a, - 0x046c, 0x046c, - 0x046e, 0x046e, - 0x0470, 0x0470, - 0x0472, 0x0472, - 0x0474, 0x0474, - 0x0476, 0x0476, - 0x0478, 0x0478, - 0x047a, 0x047a, - 0x047c, 0x047c, - 0x047e, 0x047e, - 0x0480, 0x0480, - 0x048a, 0x048a, - 0x048c, 0x048c, - 0x048e, 0x048e, - 0x0490, 0x0490, - 0x0492, 0x0492, - 0x0494, 0x0494, - 0x0496, 0x0496, - 0x0498, 0x0498, - 0x049a, 0x049a, - 0x049c, 0x049c, - 0x049e, 0x049e, - 0x04a0, 0x04a0, - 0x04a2, 0x04a2, - 0x04a4, 0x04a4, - 0x04a6, 0x04a6, - 0x04a8, 0x04a8, - 0x04aa, 0x04aa, - 0x04ac, 0x04ac, - 0x04ae, 0x04ae, - 0x04b0, 0x04b0, - 0x04b2, 0x04b2, - 0x04b4, 0x04b4, - 0x04b6, 0x04b6, - 0x04b8, 0x04b8, - 0x04ba, 0x04ba, - 0x04bc, 0x04bc, - 0x04be, 0x04be, - 0x04c0, 0x04c1, - 0x04c3, 0x04c3, - 0x04c5, 0x04c5, - 0x04c7, 0x04c7, - 0x04c9, 0x04c9, - 0x04cb, 0x04cb, - 0x04cd, 0x04cd, - 0x04d0, 0x04d0, - 0x04d2, 0x04d2, - 0x04d4, 0x04d4, - 0x04d6, 0x04d6, - 0x04d8, 0x04d8, - 0x04da, 0x04da, - 0x04dc, 0x04dc, - 0x04de, 0x04de, - 0x04e0, 0x04e0, - 0x04e2, 0x04e2, - 0x04e4, 0x04e4, - 0x04e6, 0x04e6, - 0x04e8, 0x04e8, - 0x04ea, 0x04ea, - 0x04ec, 0x04ec, - 0x04ee, 0x04ee, - 0x04f0, 0x04f0, - 0x04f2, 0x04f2, - 0x04f4, 0x04f4, - 0x04f6, 0x04f6, - 0x04f8, 0x04f8, - 0x0500, 0x0500, - 0x0502, 0x0502, - 0x0504, 0x0504, - 0x0506, 0x0506, - 0x0508, 0x0508, - 0x050a, 0x050a, - 0x050c, 0x050c, - 0x050e, 0x050e, - 0x0531, 0x0556, - 0x10a0, 0x10c5, - 0x1e00, 0x1e00, - 0x1e02, 0x1e02, - 0x1e04, 0x1e04, - 0x1e06, 0x1e06, - 0x1e08, 0x1e08, - 0x1e0a, 0x1e0a, - 0x1e0c, 0x1e0c, - 0x1e0e, 0x1e0e, - 0x1e10, 0x1e10, - 0x1e12, 0x1e12, - 0x1e14, 0x1e14, - 0x1e16, 0x1e16, - 0x1e18, 0x1e18, - 0x1e1a, 0x1e1a, - 0x1e1c, 0x1e1c, - 0x1e1e, 0x1e1e, - 0x1e20, 0x1e20, - 0x1e22, 0x1e22, - 0x1e24, 0x1e24, - 0x1e26, 0x1e26, - 0x1e28, 0x1e28, - 0x1e2a, 0x1e2a, - 0x1e2c, 0x1e2c, - 0x1e2e, 0x1e2e, - 0x1e30, 0x1e30, - 0x1e32, 0x1e32, - 0x1e34, 0x1e34, - 0x1e36, 0x1e36, - 0x1e38, 0x1e38, - 0x1e3a, 0x1e3a, - 0x1e3c, 0x1e3c, - 0x1e3e, 0x1e3e, - 0x1e40, 0x1e40, - 0x1e42, 0x1e42, - 0x1e44, 0x1e44, - 0x1e46, 0x1e46, - 0x1e48, 0x1e48, - 0x1e4a, 0x1e4a, - 0x1e4c, 0x1e4c, - 0x1e4e, 0x1e4e, - 0x1e50, 0x1e50, - 0x1e52, 0x1e52, - 0x1e54, 0x1e54, - 0x1e56, 0x1e56, - 0x1e58, 0x1e58, - 0x1e5a, 0x1e5a, - 0x1e5c, 0x1e5c, - 0x1e5e, 0x1e5e, - 0x1e60, 0x1e60, - 0x1e62, 0x1e62, - 0x1e64, 0x1e64, - 0x1e66, 0x1e66, - 0x1e68, 0x1e68, - 0x1e6a, 0x1e6a, - 0x1e6c, 0x1e6c, - 0x1e6e, 0x1e6e, - 0x1e70, 0x1e70, - 0x1e72, 0x1e72, - 0x1e74, 0x1e74, - 0x1e76, 0x1e76, - 0x1e78, 0x1e78, - 0x1e7a, 0x1e7a, - 0x1e7c, 0x1e7c, - 0x1e7e, 0x1e7e, - 0x1e80, 0x1e80, - 0x1e82, 0x1e82, - 0x1e84, 0x1e84, - 0x1e86, 0x1e86, - 0x1e88, 0x1e88, - 0x1e8a, 0x1e8a, - 0x1e8c, 0x1e8c, - 0x1e8e, 0x1e8e, - 0x1e90, 0x1e90, - 0x1e92, 0x1e92, - 0x1e94, 0x1e94, - 0x1ea0, 0x1ea0, - 0x1ea2, 0x1ea2, - 0x1ea4, 0x1ea4, - 0x1ea6, 0x1ea6, - 0x1ea8, 0x1ea8, - 0x1eaa, 0x1eaa, - 0x1eac, 0x1eac, - 0x1eae, 0x1eae, - 0x1eb0, 0x1eb0, - 0x1eb2, 0x1eb2, - 0x1eb4, 0x1eb4, - 0x1eb6, 0x1eb6, - 0x1eb8, 0x1eb8, - 0x1eba, 0x1eba, - 0x1ebc, 0x1ebc, - 0x1ebe, 0x1ebe, - 0x1ec0, 0x1ec0, - 0x1ec2, 0x1ec2, - 0x1ec4, 0x1ec4, - 0x1ec6, 0x1ec6, - 0x1ec8, 0x1ec8, - 0x1eca, 0x1eca, - 0x1ecc, 0x1ecc, - 0x1ece, 0x1ece, - 0x1ed0, 0x1ed0, - 0x1ed2, 0x1ed2, - 0x1ed4, 0x1ed4, - 0x1ed6, 0x1ed6, - 0x1ed8, 0x1ed8, - 0x1eda, 0x1eda, - 0x1edc, 0x1edc, - 0x1ede, 0x1ede, - 0x1ee0, 0x1ee0, - 0x1ee2, 0x1ee2, - 0x1ee4, 0x1ee4, - 0x1ee6, 0x1ee6, - 0x1ee8, 0x1ee8, - 0x1eea, 0x1eea, - 0x1eec, 0x1eec, - 0x1eee, 0x1eee, - 0x1ef0, 0x1ef0, - 0x1ef2, 0x1ef2, - 0x1ef4, 0x1ef4, - 0x1ef6, 0x1ef6, - 0x1ef8, 0x1ef8, - 0x1f08, 0x1f0f, - 0x1f18, 0x1f1d, - 0x1f28, 0x1f2f, - 0x1f38, 0x1f3f, - 0x1f48, 0x1f4d, - 0x1f59, 0x1f59, - 0x1f5b, 0x1f5b, - 0x1f5d, 0x1f5d, - 0x1f5f, 0x1f5f, - 0x1f68, 0x1f6f, - 0x1fb8, 0x1fbb, - 0x1fc8, 0x1fcb, - 0x1fd8, 0x1fdb, - 0x1fe8, 0x1fec, - 0x1ff8, 0x1ffb, - 0x2102, 0x2102, - 0x2107, 0x2107, - 0x210b, 0x210d, - 0x2110, 0x2112, - 0x2115, 0x2115, - 0x2119, 0x211d, - 0x2124, 0x2124, - 0x2126, 0x2126, - 0x2128, 0x2128, - 0x212a, 0x212d, - 0x2130, 0x2131, - 0x2133, 0x2133, - 0x213e, 0x213f, - 0x2145, 0x2145, - 0x2c00, 0x2c2e, - 0x2c80, 0x2c80, - 0x2c82, 0x2c82, - 0x2c84, 0x2c84, - 0x2c86, 0x2c86, - 0x2c88, 0x2c88, - 0x2c8a, 0x2c8a, - 0x2c8c, 0x2c8c, - 0x2c8e, 0x2c8e, - 0x2c90, 0x2c90, - 0x2c92, 0x2c92, - 0x2c94, 0x2c94, - 0x2c96, 0x2c96, - 0x2c98, 0x2c98, - 0x2c9a, 0x2c9a, - 0x2c9c, 0x2c9c, - 0x2c9e, 0x2c9e, - 0x2ca0, 0x2ca0, - 0x2ca2, 0x2ca2, - 0x2ca4, 0x2ca4, - 0x2ca6, 0x2ca6, - 0x2ca8, 0x2ca8, - 0x2caa, 0x2caa, - 0x2cac, 0x2cac, - 0x2cae, 0x2cae, - 0x2cb0, 0x2cb0, - 0x2cb2, 0x2cb2, - 0x2cb4, 0x2cb4, - 0x2cb6, 0x2cb6, - 0x2cb8, 0x2cb8, - 0x2cba, 0x2cba, - 0x2cbc, 0x2cbc, - 0x2cbe, 0x2cbe, - 0x2cc0, 0x2cc0, - 0x2cc2, 0x2cc2, - 0x2cc4, 0x2cc4, - 0x2cc6, 0x2cc6, - 0x2cc8, 0x2cc8, - 0x2cca, 0x2cca, - 0x2ccc, 0x2ccc, - 0x2cce, 0x2cce, - 0x2cd0, 0x2cd0, - 0x2cd2, 0x2cd2, - 0x2cd4, 0x2cd4, - 0x2cd6, 0x2cd6, - 0x2cd8, 0x2cd8, - 0x2cda, 0x2cda, - 0x2cdc, 0x2cdc, - 0x2cde, 0x2cde, - 0x2ce0, 0x2ce0, - 0x2ce2, 0x2ce2, - 0xff21, 0xff3a, - 0x10400, 0x10427, - 0x1d400, 0x1d419, - 0x1d434, 0x1d44d, - 0x1d468, 0x1d481, - 0x1d49c, 0x1d49c, - 0x1d49e, 0x1d49f, - 0x1d4a2, 0x1d4a2, - 0x1d4a5, 0x1d4a6, - 0x1d4a9, 0x1d4ac, - 0x1d4ae, 0x1d4b5, - 0x1d4d0, 0x1d4e9, - 0x1d504, 0x1d505, - 0x1d507, 0x1d50a, - 0x1d50d, 0x1d514, - 0x1d516, 0x1d51c, - 0x1d538, 0x1d539, - 0x1d53b, 0x1d53e, - 0x1d540, 0x1d544, - 0x1d546, 0x1d546, - 0x1d54a, 0x1d550, - 0x1d56c, 0x1d585, - 0x1d5a0, 0x1d5b9, - 0x1d5d4, 0x1d5ed, - 0x1d608, 0x1d621, - 0x1d63c, 0x1d655, - 0x1d670, 0x1d689, - 0x1d6a8, 0x1d6c0, - 0x1d6e2, 0x1d6fa, - 0x1d71c, 0x1d734, - 0x1d756, 0x1d76e, - 0x1d790, 0x1d7a8 -}; /* CR_Lu */ - -/* 'M': Major Category */ -static const OnigCodePoint CR_M[] = { - 133, - 0x0300, 0x036f, - 0x0483, 0x0486, - 0x0488, 0x0489, - 0x0591, 0x05b9, - 0x05bb, 0x05bd, - 0x05bf, 0x05bf, - 0x05c1, 0x05c2, - 0x05c4, 0x05c5, - 0x05c7, 0x05c7, - 0x0610, 0x0615, - 0x064b, 0x065e, - 0x0670, 0x0670, - 0x06d6, 0x06dc, - 0x06de, 0x06e4, - 0x06e7, 0x06e8, - 0x06ea, 0x06ed, - 0x0711, 0x0711, - 0x0730, 0x074a, - 0x07a6, 0x07b0, - 0x0901, 0x0903, - 0x093c, 0x093c, - 0x093e, 0x094d, - 0x0951, 0x0954, - 0x0962, 0x0963, - 0x0981, 0x0983, - 0x09bc, 0x09bc, - 0x09be, 0x09c4, - 0x09c7, 0x09c8, - 0x09cb, 0x09cd, - 0x09d7, 0x09d7, - 0x09e2, 0x09e3, - 0x0a01, 0x0a03, - 0x0a3c, 0x0a3c, - 0x0a3e, 0x0a42, - 0x0a47, 0x0a48, - 0x0a4b, 0x0a4d, - 0x0a70, 0x0a71, - 0x0a81, 0x0a83, - 0x0abc, 0x0abc, - 0x0abe, 0x0ac5, - 0x0ac7, 0x0ac9, - 0x0acb, 0x0acd, - 0x0ae2, 0x0ae3, - 0x0b01, 0x0b03, - 0x0b3c, 0x0b3c, - 0x0b3e, 0x0b43, - 0x0b47, 0x0b48, - 0x0b4b, 0x0b4d, - 0x0b56, 0x0b57, - 0x0b82, 0x0b82, - 0x0bbe, 0x0bc2, - 0x0bc6, 0x0bc8, - 0x0bca, 0x0bcd, - 0x0bd7, 0x0bd7, - 0x0c01, 0x0c03, - 0x0c3e, 0x0c44, - 0x0c46, 0x0c48, - 0x0c4a, 0x0c4d, - 0x0c55, 0x0c56, - 0x0c82, 0x0c83, - 0x0cbc, 0x0cbc, - 0x0cbe, 0x0cc4, - 0x0cc6, 0x0cc8, - 0x0cca, 0x0ccd, - 0x0cd5, 0x0cd6, - 0x0d02, 0x0d03, - 0x0d3e, 0x0d43, - 0x0d46, 0x0d48, - 0x0d4a, 0x0d4d, - 0x0d57, 0x0d57, - 0x0d82, 0x0d83, - 0x0dca, 0x0dca, - 0x0dcf, 0x0dd4, - 0x0dd6, 0x0dd6, - 0x0dd8, 0x0ddf, - 0x0df2, 0x0df3, - 0x0e31, 0x0e31, - 0x0e34, 0x0e3a, - 0x0e47, 0x0e4e, - 0x0eb1, 0x0eb1, - 0x0eb4, 0x0eb9, - 0x0ebb, 0x0ebc, - 0x0ec8, 0x0ecd, - 0x0f18, 0x0f19, - 0x0f35, 0x0f35, - 0x0f37, 0x0f37, - 0x0f39, 0x0f39, - 0x0f3e, 0x0f3f, - 0x0f71, 0x0f84, - 0x0f86, 0x0f87, - 0x0f90, 0x0f97, - 0x0f99, 0x0fbc, - 0x0fc6, 0x0fc6, - 0x102c, 0x1032, - 0x1036, 0x1039, - 0x1056, 0x1059, - 0x135f, 0x135f, - 0x1712, 0x1714, - 0x1732, 0x1734, - 0x1752, 0x1753, - 0x1772, 0x1773, - 0x17b6, 0x17d3, - 0x17dd, 0x17dd, - 0x180b, 0x180d, - 0x18a9, 0x18a9, - 0x1920, 0x192b, - 0x1930, 0x193b, - 0x19b0, 0x19c0, - 0x19c8, 0x19c9, - 0x1a17, 0x1a1b, - 0x1dc0, 0x1dc3, - 0x20d0, 0x20eb, - 0x302a, 0x302f, - 0x3099, 0x309a, - 0xa802, 0xa802, - 0xa806, 0xa806, - 0xa80b, 0xa80b, - 0xa823, 0xa827, - 0xfb1e, 0xfb1e, - 0xfe00, 0xfe0f, - 0xfe20, 0xfe23, - 0x10a01, 0x10a03, - 0x10a05, 0x10a06, - 0x10a0c, 0x10a0f, - 0x10a38, 0x10a3a, - 0x10a3f, 0x10a3f, - 0x1d165, 0x1d169, - 0x1d16d, 0x1d172, - 0x1d17b, 0x1d182, - 0x1d185, 0x1d18b, - 0x1d1aa, 0x1d1ad, - 0x1d242, 0x1d244, - 0xe0100, 0xe01ef -}; /* CR_M */ - -/* 'Mc': General Category */ -static const OnigCodePoint CR_Mc[] = { - 63, - 0x0903, 0x0903, - 0x093e, 0x0940, - 0x0949, 0x094c, - 0x0982, 0x0983, - 0x09be, 0x09c0, - 0x09c7, 0x09c8, - 0x09cb, 0x09cc, - 0x09d7, 0x09d7, - 0x0a03, 0x0a03, - 0x0a3e, 0x0a40, - 0x0a83, 0x0a83, - 0x0abe, 0x0ac0, - 0x0ac9, 0x0ac9, - 0x0acb, 0x0acc, - 0x0b02, 0x0b03, - 0x0b3e, 0x0b3e, - 0x0b40, 0x0b40, - 0x0b47, 0x0b48, - 0x0b4b, 0x0b4c, - 0x0b57, 0x0b57, - 0x0bbe, 0x0bbf, - 0x0bc1, 0x0bc2, - 0x0bc6, 0x0bc8, - 0x0bca, 0x0bcc, - 0x0bd7, 0x0bd7, - 0x0c01, 0x0c03, - 0x0c41, 0x0c44, - 0x0c82, 0x0c83, - 0x0cbe, 0x0cbe, - 0x0cc0, 0x0cc4, - 0x0cc7, 0x0cc8, - 0x0cca, 0x0ccb, - 0x0cd5, 0x0cd6, - 0x0d02, 0x0d03, - 0x0d3e, 0x0d40, - 0x0d46, 0x0d48, - 0x0d4a, 0x0d4c, - 0x0d57, 0x0d57, - 0x0d82, 0x0d83, - 0x0dcf, 0x0dd1, - 0x0dd8, 0x0ddf, - 0x0df2, 0x0df3, - 0x0f3e, 0x0f3f, - 0x0f7f, 0x0f7f, - 0x102c, 0x102c, - 0x1031, 0x1031, - 0x1038, 0x1038, - 0x1056, 0x1057, - 0x17b6, 0x17b6, - 0x17be, 0x17c5, - 0x17c7, 0x17c8, - 0x1923, 0x1926, - 0x1929, 0x192b, - 0x1930, 0x1931, - 0x1933, 0x1938, - 0x19b0, 0x19c0, - 0x19c8, 0x19c9, - 0x1a19, 0x1a1b, - 0xa802, 0xa802, - 0xa823, 0xa824, - 0xa827, 0xa827, - 0x1d165, 0x1d166, - 0x1d16d, 0x1d172 -}; /* CR_Mc */ - -/* 'Me': General Category */ -static const OnigCodePoint CR_Me[] = { - 4, - 0x0488, 0x0489, - 0x06de, 0x06de, - 0x20dd, 0x20e0, - 0x20e2, 0x20e4 -}; /* CR_Me */ - -/* 'Mn': General Category */ -static const OnigCodePoint CR_Mn[] = { - 124, - 0x0300, 0x036f, - 0x0483, 0x0486, - 0x0591, 0x05b9, - 0x05bb, 0x05bd, - 0x05bf, 0x05bf, - 0x05c1, 0x05c2, - 0x05c4, 0x05c5, - 0x05c7, 0x05c7, - 0x0610, 0x0615, - 0x064b, 0x065e, - 0x0670, 0x0670, - 0x06d6, 0x06dc, - 0x06df, 0x06e4, - 0x06e7, 0x06e8, - 0x06ea, 0x06ed, - 0x0711, 0x0711, - 0x0730, 0x074a, - 0x07a6, 0x07b0, - 0x0901, 0x0902, - 0x093c, 0x093c, - 0x0941, 0x0948, - 0x094d, 0x094d, - 0x0951, 0x0954, - 0x0962, 0x0963, - 0x0981, 0x0981, - 0x09bc, 0x09bc, - 0x09c1, 0x09c4, - 0x09cd, 0x09cd, - 0x09e2, 0x09e3, - 0x0a01, 0x0a02, - 0x0a3c, 0x0a3c, - 0x0a41, 0x0a42, - 0x0a47, 0x0a48, - 0x0a4b, 0x0a4d, - 0x0a70, 0x0a71, - 0x0a81, 0x0a82, - 0x0abc, 0x0abc, - 0x0ac1, 0x0ac5, - 0x0ac7, 0x0ac8, - 0x0acd, 0x0acd, - 0x0ae2, 0x0ae3, - 0x0b01, 0x0b01, - 0x0b3c, 0x0b3c, - 0x0b3f, 0x0b3f, - 0x0b41, 0x0b43, - 0x0b4d, 0x0b4d, - 0x0b56, 0x0b56, - 0x0b82, 0x0b82, - 0x0bc0, 0x0bc0, - 0x0bcd, 0x0bcd, - 0x0c3e, 0x0c40, - 0x0c46, 0x0c48, - 0x0c4a, 0x0c4d, - 0x0c55, 0x0c56, - 0x0cbc, 0x0cbc, - 0x0cbf, 0x0cbf, - 0x0cc6, 0x0cc6, - 0x0ccc, 0x0ccd, - 0x0d41, 0x0d43, - 0x0d4d, 0x0d4d, - 0x0dca, 0x0dca, - 0x0dd2, 0x0dd4, - 0x0dd6, 0x0dd6, - 0x0e31, 0x0e31, - 0x0e34, 0x0e3a, - 0x0e47, 0x0e4e, - 0x0eb1, 0x0eb1, - 0x0eb4, 0x0eb9, - 0x0ebb, 0x0ebc, - 0x0ec8, 0x0ecd, - 0x0f18, 0x0f19, - 0x0f35, 0x0f35, - 0x0f37, 0x0f37, - 0x0f39, 0x0f39, - 0x0f71, 0x0f7e, - 0x0f80, 0x0f84, - 0x0f86, 0x0f87, - 0x0f90, 0x0f97, - 0x0f99, 0x0fbc, - 0x0fc6, 0x0fc6, - 0x102d, 0x1030, - 0x1032, 0x1032, - 0x1036, 0x1037, - 0x1039, 0x1039, - 0x1058, 0x1059, - 0x135f, 0x135f, - 0x1712, 0x1714, - 0x1732, 0x1734, - 0x1752, 0x1753, - 0x1772, 0x1773, - 0x17b7, 0x17bd, - 0x17c6, 0x17c6, - 0x17c9, 0x17d3, - 0x17dd, 0x17dd, - 0x180b, 0x180d, - 0x18a9, 0x18a9, - 0x1920, 0x1922, - 0x1927, 0x1928, - 0x1932, 0x1932, - 0x1939, 0x193b, - 0x1a17, 0x1a18, - 0x1dc0, 0x1dc3, - 0x20d0, 0x20dc, - 0x20e1, 0x20e1, - 0x20e5, 0x20eb, - 0x302a, 0x302f, - 0x3099, 0x309a, - 0xa806, 0xa806, - 0xa80b, 0xa80b, - 0xa825, 0xa826, - 0xfb1e, 0xfb1e, - 0xfe00, 0xfe0f, - 0xfe20, 0xfe23, - 0x10a01, 0x10a03, - 0x10a05, 0x10a06, - 0x10a0c, 0x10a0f, - 0x10a38, 0x10a3a, - 0x10a3f, 0x10a3f, - 0x1d167, 0x1d169, - 0x1d17b, 0x1d182, - 0x1d185, 0x1d18b, - 0x1d1aa, 0x1d1ad, - 0x1d242, 0x1d244, - 0xe0100, 0xe01ef -}; /* CR_Mn */ - -/* 'N': Major Category */ -static const OnigCodePoint CR_N[] = { - 53, - 0x0030, 0x0039, - 0x00b2, 0x00b3, - 0x00b9, 0x00b9, - 0x00bc, 0x00be, - 0x0660, 0x0669, - 0x06f0, 0x06f9, - 0x0966, 0x096f, - 0x09e6, 0x09ef, - 0x09f4, 0x09f9, - 0x0a66, 0x0a6f, - 0x0ae6, 0x0aef, - 0x0b66, 0x0b6f, - 0x0be6, 0x0bf2, - 0x0c66, 0x0c6f, - 0x0ce6, 0x0cef, - 0x0d66, 0x0d6f, - 0x0e50, 0x0e59, - 0x0ed0, 0x0ed9, - 0x0f20, 0x0f33, - 0x1040, 0x1049, - 0x1369, 0x137c, - 0x16ee, 0x16f0, - 0x17e0, 0x17e9, - 0x17f0, 0x17f9, - 0x1810, 0x1819, - 0x1946, 0x194f, - 0x19d0, 0x19d9, - 0x2070, 0x2070, - 0x2074, 0x2079, - 0x2080, 0x2089, - 0x2153, 0x2183, - 0x2460, 0x249b, - 0x24ea, 0x24ff, - 0x2776, 0x2793, - 0x2cfd, 0x2cfd, - 0x3007, 0x3007, - 0x3021, 0x3029, - 0x3038, 0x303a, - 0x3192, 0x3195, - 0x3220, 0x3229, - 0x3251, 0x325f, - 0x3280, 0x3289, - 0x32b1, 0x32bf, - 0xff10, 0xff19, - 0x10107, 0x10133, - 0x10140, 0x10178, - 0x1018a, 0x1018a, - 0x10320, 0x10323, - 0x1034a, 0x1034a, - 0x103d1, 0x103d5, - 0x104a0, 0x104a9, - 0x10a40, 0x10a47, - 0x1d7ce, 0x1d7ff -}; /* CR_N */ - -/* 'Nd': General Category */ -static const OnigCodePoint CR_Nd[] = { - 23, - 0x0030, 0x0039, - 0x0660, 0x0669, - 0x06f0, 0x06f9, - 0x0966, 0x096f, - 0x09e6, 0x09ef, - 0x0a66, 0x0a6f, - 0x0ae6, 0x0aef, - 0x0b66, 0x0b6f, - 0x0be6, 0x0bef, - 0x0c66, 0x0c6f, - 0x0ce6, 0x0cef, - 0x0d66, 0x0d6f, - 0x0e50, 0x0e59, - 0x0ed0, 0x0ed9, - 0x0f20, 0x0f29, - 0x1040, 0x1049, - 0x17e0, 0x17e9, - 0x1810, 0x1819, - 0x1946, 0x194f, - 0x19d0, 0x19d9, - 0xff10, 0xff19, - 0x104a0, 0x104a9, - 0x1d7ce, 0x1d7ff -}; /* CR_Nd */ - -/* 'Nl': General Category */ -static const OnigCodePoint CR_Nl[] = { - 8, - 0x16ee, 0x16f0, - 0x2160, 0x2183, - 0x3007, 0x3007, - 0x3021, 0x3029, - 0x3038, 0x303a, - 0x10140, 0x10174, - 0x1034a, 0x1034a, - 0x103d1, 0x103d5 -}; /* CR_Nl */ - -/* 'No': General Category */ -static const OnigCodePoint CR_No[] = { - 26, - 0x00b2, 0x00b3, - 0x00b9, 0x00b9, - 0x00bc, 0x00be, - 0x09f4, 0x09f9, - 0x0bf0, 0x0bf2, - 0x0f2a, 0x0f33, - 0x1369, 0x137c, - 0x17f0, 0x17f9, - 0x2070, 0x2070, - 0x2074, 0x2079, - 0x2080, 0x2089, - 0x2153, 0x215f, - 0x2460, 0x249b, - 0x24ea, 0x24ff, - 0x2776, 0x2793, - 0x2cfd, 0x2cfd, - 0x3192, 0x3195, - 0x3220, 0x3229, - 0x3251, 0x325f, - 0x3280, 0x3289, - 0x32b1, 0x32bf, - 0x10107, 0x10133, - 0x10175, 0x10178, - 0x1018a, 0x1018a, - 0x10320, 0x10323, - 0x10a40, 0x10a47 -}; /* CR_No */ - -/* 'P': Major Category */ -static const OnigCodePoint CR_P[] = { - 96, - 0x0021, 0x0023, - 0x0025, 0x002a, - 0x002c, 0x002f, - 0x003a, 0x003b, - 0x003f, 0x0040, - 0x005b, 0x005d, - 0x005f, 0x005f, - 0x007b, 0x007b, - 0x007d, 0x007d, - 0x00a1, 0x00a1, - 0x00ab, 0x00ab, - 0x00b7, 0x00b7, - 0x00bb, 0x00bb, - 0x00bf, 0x00bf, - 0x037e, 0x037e, - 0x0387, 0x0387, - 0x055a, 0x055f, - 0x0589, 0x058a, - 0x05be, 0x05be, - 0x05c0, 0x05c0, - 0x05c3, 0x05c3, - 0x05c6, 0x05c6, - 0x05f3, 0x05f4, - 0x060c, 0x060d, - 0x061b, 0x061b, - 0x061e, 0x061f, - 0x066a, 0x066d, - 0x06d4, 0x06d4, - 0x0700, 0x070d, - 0x0964, 0x0965, - 0x0970, 0x0970, - 0x0df4, 0x0df4, - 0x0e4f, 0x0e4f, - 0x0e5a, 0x0e5b, - 0x0f04, 0x0f12, - 0x0f3a, 0x0f3d, - 0x0f85, 0x0f85, - 0x0fd0, 0x0fd1, - 0x104a, 0x104f, - 0x10fb, 0x10fb, - 0x1361, 0x1368, - 0x166d, 0x166e, - 0x169b, 0x169c, - 0x16eb, 0x16ed, - 0x1735, 0x1736, - 0x17d4, 0x17d6, - 0x17d8, 0x17da, - 0x1800, 0x180a, - 0x1944, 0x1945, - 0x19de, 0x19df, - 0x1a1e, 0x1a1f, - 0x2010, 0x2027, - 0x2030, 0x2043, - 0x2045, 0x2051, - 0x2053, 0x205e, - 0x207d, 0x207e, - 0x208d, 0x208e, - 0x2329, 0x232a, - 0x23b4, 0x23b6, - 0x2768, 0x2775, - 0x27c5, 0x27c6, - 0x27e6, 0x27eb, - 0x2983, 0x2998, - 0x29d8, 0x29db, - 0x29fc, 0x29fd, - 0x2cf9, 0x2cfc, - 0x2cfe, 0x2cff, - 0x2e00, 0x2e17, - 0x2e1c, 0x2e1d, - 0x3001, 0x3003, - 0x3008, 0x3011, - 0x3014, 0x301f, - 0x3030, 0x3030, - 0x303d, 0x303d, - 0x30a0, 0x30a0, - 0x30fb, 0x30fb, - 0xfd3e, 0xfd3f, - 0xfe10, 0xfe19, - 0xfe30, 0xfe52, - 0xfe54, 0xfe61, - 0xfe63, 0xfe63, - 0xfe68, 0xfe68, - 0xfe6a, 0xfe6b, - 0xff01, 0xff03, - 0xff05, 0xff0a, - 0xff0c, 0xff0f, - 0xff1a, 0xff1b, - 0xff1f, 0xff20, - 0xff3b, 0xff3d, - 0xff3f, 0xff3f, - 0xff5b, 0xff5b, - 0xff5d, 0xff5d, - 0xff5f, 0xff65, - 0x10100, 0x10101, - 0x1039f, 0x1039f, - 0x10a50, 0x10a58 -}; /* CR_P */ - -/* 'Pc': General Category */ -static const OnigCodePoint CR_Pc[] = { - 6, - 0x005f, 0x005f, - 0x203f, 0x2040, - 0x2054, 0x2054, - 0xfe33, 0xfe34, - 0xfe4d, 0xfe4f, - 0xff3f, 0xff3f -}; /* CR_Pc */ - -/* 'Pd': General Category */ -static const OnigCodePoint CR_Pd[] = { - 12, - 0x002d, 0x002d, - 0x058a, 0x058a, - 0x1806, 0x1806, - 0x2010, 0x2015, - 0x2e17, 0x2e17, - 0x301c, 0x301c, - 0x3030, 0x3030, - 0x30a0, 0x30a0, - 0xfe31, 0xfe32, - 0xfe58, 0xfe58, - 0xfe63, 0xfe63, - 0xff0d, 0xff0d -}; /* CR_Pd */ - -/* 'Pe': General Category */ -static const OnigCodePoint CR_Pe[] = { - 65, - 0x0029, 0x0029, - 0x005d, 0x005d, - 0x007d, 0x007d, - 0x0f3b, 0x0f3b, - 0x0f3d, 0x0f3d, - 0x169c, 0x169c, - 0x2046, 0x2046, - 0x207e, 0x207e, - 0x208e, 0x208e, - 0x232a, 0x232a, - 0x23b5, 0x23b5, - 0x2769, 0x2769, - 0x276b, 0x276b, - 0x276d, 0x276d, - 0x276f, 0x276f, - 0x2771, 0x2771, - 0x2773, 0x2773, - 0x2775, 0x2775, - 0x27c6, 0x27c6, - 0x27e7, 0x27e7, - 0x27e9, 0x27e9, - 0x27eb, 0x27eb, - 0x2984, 0x2984, - 0x2986, 0x2986, - 0x2988, 0x2988, - 0x298a, 0x298a, - 0x298c, 0x298c, - 0x298e, 0x298e, - 0x2990, 0x2990, - 0x2992, 0x2992, - 0x2994, 0x2994, - 0x2996, 0x2996, - 0x2998, 0x2998, - 0x29d9, 0x29d9, - 0x29db, 0x29db, - 0x29fd, 0x29fd, - 0x3009, 0x3009, - 0x300b, 0x300b, - 0x300d, 0x300d, - 0x300f, 0x300f, - 0x3011, 0x3011, - 0x3015, 0x3015, - 0x3017, 0x3017, - 0x3019, 0x3019, - 0x301b, 0x301b, - 0x301e, 0x301f, - 0xfd3f, 0xfd3f, - 0xfe18, 0xfe18, - 0xfe36, 0xfe36, - 0xfe38, 0xfe38, - 0xfe3a, 0xfe3a, - 0xfe3c, 0xfe3c, - 0xfe3e, 0xfe3e, - 0xfe40, 0xfe40, - 0xfe42, 0xfe42, - 0xfe44, 0xfe44, - 0xfe48, 0xfe48, - 0xfe5a, 0xfe5a, - 0xfe5c, 0xfe5c, - 0xfe5e, 0xfe5e, - 0xff09, 0xff09, - 0xff3d, 0xff3d, - 0xff5d, 0xff5d, - 0xff60, 0xff60, - 0xff63, 0xff63 -}; /* CR_Pe */ - -/* 'Pf': General Category */ -static const OnigCodePoint CR_Pf[] = { - 9, - 0x00bb, 0x00bb, - 0x2019, 0x2019, - 0x201d, 0x201d, - 0x203a, 0x203a, - 0x2e03, 0x2e03, - 0x2e05, 0x2e05, - 0x2e0a, 0x2e0a, - 0x2e0d, 0x2e0d, - 0x2e1d, 0x2e1d -}; /* CR_Pf */ - -/* 'Pi': General Category */ -static const OnigCodePoint CR_Pi[] = { - 10, - 0x00ab, 0x00ab, - 0x2018, 0x2018, - 0x201b, 0x201c, - 0x201f, 0x201f, - 0x2039, 0x2039, - 0x2e02, 0x2e02, - 0x2e04, 0x2e04, - 0x2e09, 0x2e09, - 0x2e0c, 0x2e0c, - 0x2e1c, 0x2e1c -}; /* CR_Pi */ - -/* 'Po': General Category */ -static const OnigCodePoint CR_Po[] = { - 88, - 0x0021, 0x0023, - 0x0025, 0x0027, - 0x002a, 0x002a, - 0x002c, 0x002c, - 0x002e, 0x002f, - 0x003a, 0x003b, - 0x003f, 0x0040, - 0x005c, 0x005c, - 0x00a1, 0x00a1, - 0x00b7, 0x00b7, - 0x00bf, 0x00bf, - 0x037e, 0x037e, - 0x0387, 0x0387, - 0x055a, 0x055f, - 0x0589, 0x0589, - 0x05be, 0x05be, - 0x05c0, 0x05c0, - 0x05c3, 0x05c3, - 0x05c6, 0x05c6, - 0x05f3, 0x05f4, - 0x060c, 0x060d, - 0x061b, 0x061b, - 0x061e, 0x061f, - 0x066a, 0x066d, - 0x06d4, 0x06d4, - 0x0700, 0x070d, - 0x0964, 0x0965, - 0x0970, 0x0970, - 0x0df4, 0x0df4, - 0x0e4f, 0x0e4f, - 0x0e5a, 0x0e5b, - 0x0f04, 0x0f12, - 0x0f85, 0x0f85, - 0x0fd0, 0x0fd1, - 0x104a, 0x104f, - 0x10fb, 0x10fb, - 0x1361, 0x1368, - 0x166d, 0x166e, - 0x16eb, 0x16ed, - 0x1735, 0x1736, - 0x17d4, 0x17d6, - 0x17d8, 0x17da, - 0x1800, 0x1805, - 0x1807, 0x180a, - 0x1944, 0x1945, - 0x19de, 0x19df, - 0x1a1e, 0x1a1f, - 0x2016, 0x2017, - 0x2020, 0x2027, - 0x2030, 0x2038, - 0x203b, 0x203e, - 0x2041, 0x2043, - 0x2047, 0x2051, - 0x2053, 0x2053, - 0x2055, 0x205e, - 0x23b6, 0x23b6, - 0x2cf9, 0x2cfc, - 0x2cfe, 0x2cff, - 0x2e00, 0x2e01, - 0x2e06, 0x2e08, - 0x2e0b, 0x2e0b, - 0x2e0e, 0x2e16, - 0x3001, 0x3003, - 0x303d, 0x303d, - 0x30fb, 0x30fb, - 0xfe10, 0xfe16, - 0xfe19, 0xfe19, - 0xfe30, 0xfe30, - 0xfe45, 0xfe46, - 0xfe49, 0xfe4c, - 0xfe50, 0xfe52, - 0xfe54, 0xfe57, - 0xfe5f, 0xfe61, - 0xfe68, 0xfe68, - 0xfe6a, 0xfe6b, - 0xff01, 0xff03, - 0xff05, 0xff07, - 0xff0a, 0xff0a, - 0xff0c, 0xff0c, - 0xff0e, 0xff0f, - 0xff1a, 0xff1b, - 0xff1f, 0xff20, - 0xff3c, 0xff3c, - 0xff61, 0xff61, - 0xff64, 0xff65, - 0x10100, 0x10101, - 0x1039f, 0x1039f, - 0x10a50, 0x10a58 -}; /* CR_Po */ - -/* 'Ps': General Category */ -static const OnigCodePoint CR_Ps[] = { - 67, - 0x0028, 0x0028, - 0x005b, 0x005b, - 0x007b, 0x007b, - 0x0f3a, 0x0f3a, - 0x0f3c, 0x0f3c, - 0x169b, 0x169b, - 0x201a, 0x201a, - 0x201e, 0x201e, - 0x2045, 0x2045, - 0x207d, 0x207d, - 0x208d, 0x208d, - 0x2329, 0x2329, - 0x23b4, 0x23b4, - 0x2768, 0x2768, - 0x276a, 0x276a, - 0x276c, 0x276c, - 0x276e, 0x276e, - 0x2770, 0x2770, - 0x2772, 0x2772, - 0x2774, 0x2774, - 0x27c5, 0x27c5, - 0x27e6, 0x27e6, - 0x27e8, 0x27e8, - 0x27ea, 0x27ea, - 0x2983, 0x2983, - 0x2985, 0x2985, - 0x2987, 0x2987, - 0x2989, 0x2989, - 0x298b, 0x298b, - 0x298d, 0x298d, - 0x298f, 0x298f, - 0x2991, 0x2991, - 0x2993, 0x2993, - 0x2995, 0x2995, - 0x2997, 0x2997, - 0x29d8, 0x29d8, - 0x29da, 0x29da, - 0x29fc, 0x29fc, - 0x3008, 0x3008, - 0x300a, 0x300a, - 0x300c, 0x300c, - 0x300e, 0x300e, - 0x3010, 0x3010, - 0x3014, 0x3014, - 0x3016, 0x3016, - 0x3018, 0x3018, - 0x301a, 0x301a, - 0x301d, 0x301d, - 0xfd3e, 0xfd3e, - 0xfe17, 0xfe17, - 0xfe35, 0xfe35, - 0xfe37, 0xfe37, - 0xfe39, 0xfe39, - 0xfe3b, 0xfe3b, - 0xfe3d, 0xfe3d, - 0xfe3f, 0xfe3f, - 0xfe41, 0xfe41, - 0xfe43, 0xfe43, - 0xfe47, 0xfe47, - 0xfe59, 0xfe59, - 0xfe5b, 0xfe5b, - 0xfe5d, 0xfe5d, - 0xff08, 0xff08, - 0xff3b, 0xff3b, - 0xff5b, 0xff5b, - 0xff5f, 0xff5f, - 0xff62, 0xff62 -}; /* CR_Ps */ - -/* 'S': Major Category */ -static const OnigCodePoint CR_S[] = { - 162, - 0x0024, 0x0024, - 0x002b, 0x002b, - 0x003c, 0x003e, - 0x005e, 0x005e, - 0x0060, 0x0060, - 0x007c, 0x007c, - 0x007e, 0x007e, - 0x00a2, 0x00a9, - 0x00ac, 0x00ac, - 0x00ae, 0x00b1, - 0x00b4, 0x00b4, - 0x00b6, 0x00b6, - 0x00b8, 0x00b8, - 0x00d7, 0x00d7, - 0x00f7, 0x00f7, - 0x02c2, 0x02c5, - 0x02d2, 0x02df, - 0x02e5, 0x02ed, - 0x02ef, 0x02ff, - 0x0374, 0x0375, - 0x0384, 0x0385, - 0x03f6, 0x03f6, - 0x0482, 0x0482, - 0x060b, 0x060b, - 0x060e, 0x060f, - 0x06e9, 0x06e9, - 0x06fd, 0x06fe, - 0x09f2, 0x09f3, - 0x09fa, 0x09fa, - 0x0af1, 0x0af1, - 0x0b70, 0x0b70, - 0x0bf3, 0x0bfa, - 0x0e3f, 0x0e3f, - 0x0f01, 0x0f03, - 0x0f13, 0x0f17, - 0x0f1a, 0x0f1f, - 0x0f34, 0x0f34, - 0x0f36, 0x0f36, - 0x0f38, 0x0f38, - 0x0fbe, 0x0fc5, - 0x0fc7, 0x0fcc, - 0x0fcf, 0x0fcf, - 0x1360, 0x1360, - 0x1390, 0x1399, - 0x17db, 0x17db, - 0x1940, 0x1940, - 0x19e0, 0x19ff, - 0x1fbd, 0x1fbd, - 0x1fbf, 0x1fc1, - 0x1fcd, 0x1fcf, - 0x1fdd, 0x1fdf, - 0x1fed, 0x1fef, - 0x1ffd, 0x1ffe, - 0x2044, 0x2044, - 0x2052, 0x2052, - 0x207a, 0x207c, - 0x208a, 0x208c, - 0x20a0, 0x20b5, - 0x2100, 0x2101, - 0x2103, 0x2106, - 0x2108, 0x2109, - 0x2114, 0x2114, - 0x2116, 0x2118, - 0x211e, 0x2123, - 0x2125, 0x2125, - 0x2127, 0x2127, - 0x2129, 0x2129, - 0x212e, 0x212e, - 0x2132, 0x2132, - 0x213a, 0x213b, - 0x2140, 0x2144, - 0x214a, 0x214c, - 0x2190, 0x2328, - 0x232b, 0x23b3, - 0x23b7, 0x23db, - 0x2400, 0x2426, - 0x2440, 0x244a, - 0x249c, 0x24e9, - 0x2500, 0x269c, - 0x26a0, 0x26b1, - 0x2701, 0x2704, - 0x2706, 0x2709, - 0x270c, 0x2727, - 0x2729, 0x274b, - 0x274d, 0x274d, - 0x274f, 0x2752, - 0x2756, 0x2756, - 0x2758, 0x275e, - 0x2761, 0x2767, - 0x2794, 0x2794, - 0x2798, 0x27af, - 0x27b1, 0x27be, - 0x27c0, 0x27c4, - 0x27d0, 0x27e5, - 0x27f0, 0x2982, - 0x2999, 0x29d7, - 0x29dc, 0x29fb, - 0x29fe, 0x2b13, - 0x2ce5, 0x2cea, - 0x2e80, 0x2e99, - 0x2e9b, 0x2ef3, - 0x2f00, 0x2fd5, - 0x2ff0, 0x2ffb, - 0x3004, 0x3004, - 0x3012, 0x3013, - 0x3020, 0x3020, - 0x3036, 0x3037, - 0x303e, 0x303f, - 0x309b, 0x309c, - 0x3190, 0x3191, - 0x3196, 0x319f, - 0x31c0, 0x31cf, - 0x3200, 0x321e, - 0x322a, 0x3243, - 0x3250, 0x3250, - 0x3260, 0x327f, - 0x328a, 0x32b0, - 0x32c0, 0x32fe, - 0x3300, 0x33ff, - 0x4dc0, 0x4dff, - 0xa490, 0xa4c6, - 0xa700, 0xa716, - 0xa828, 0xa82b, - 0xfb29, 0xfb29, - 0xfdfc, 0xfdfd, - 0xfe62, 0xfe62, - 0xfe64, 0xfe66, - 0xfe69, 0xfe69, - 0xff04, 0xff04, - 0xff0b, 0xff0b, - 0xff1c, 0xff1e, - 0xff3e, 0xff3e, - 0xff40, 0xff40, - 0xff5c, 0xff5c, - 0xff5e, 0xff5e, - 0xffe0, 0xffe6, - 0xffe8, 0xffee, - 0xfffc, 0xfffd, - 0x10102, 0x10102, - 0x10137, 0x1013f, - 0x10179, 0x10189, - 0x103d0, 0x103d0, - 0x1d000, 0x1d0f5, - 0x1d100, 0x1d126, - 0x1d12a, 0x1d164, - 0x1d16a, 0x1d16c, - 0x1d183, 0x1d184, - 0x1d18c, 0x1d1a9, - 0x1d1ae, 0x1d1dd, - 0x1d200, 0x1d241, - 0x1d245, 0x1d245, - 0x1d300, 0x1d356, - 0x1d6c1, 0x1d6c1, - 0x1d6db, 0x1d6db, - 0x1d6fb, 0x1d6fb, - 0x1d715, 0x1d715, - 0x1d735, 0x1d735, - 0x1d74f, 0x1d74f, - 0x1d76f, 0x1d76f, - 0x1d789, 0x1d789, - 0x1d7a9, 0x1d7a9, - 0x1d7c3, 0x1d7c3 -}; /* CR_S */ - -/* 'Sc': General Category */ -static const OnigCodePoint CR_Sc[] = { - 14, - 0x0024, 0x0024, - 0x00a2, 0x00a5, - 0x060b, 0x060b, - 0x09f2, 0x09f3, - 0x0af1, 0x0af1, - 0x0bf9, 0x0bf9, - 0x0e3f, 0x0e3f, - 0x17db, 0x17db, - 0x20a0, 0x20b5, - 0xfdfc, 0xfdfc, - 0xfe69, 0xfe69, - 0xff04, 0xff04, - 0xffe0, 0xffe1, - 0xffe5, 0xffe6 -}; /* CR_Sc */ - -/* 'Sk': General Category */ -static const OnigCodePoint CR_Sk[] = { - 23, - 0x005e, 0x005e, - 0x0060, 0x0060, - 0x00a8, 0x00a8, - 0x00af, 0x00af, - 0x00b4, 0x00b4, - 0x00b8, 0x00b8, - 0x02c2, 0x02c5, - 0x02d2, 0x02df, - 0x02e5, 0x02ed, - 0x02ef, 0x02ff, - 0x0374, 0x0375, - 0x0384, 0x0385, - 0x1fbd, 0x1fbd, - 0x1fbf, 0x1fc1, - 0x1fcd, 0x1fcf, - 0x1fdd, 0x1fdf, - 0x1fed, 0x1fef, - 0x1ffd, 0x1ffe, - 0x309b, 0x309c, - 0xa700, 0xa716, - 0xff3e, 0xff3e, - 0xff40, 0xff40, - 0xffe3, 0xffe3 -}; /* CR_Sk */ - -/* 'Sm': General Category */ -static const OnigCodePoint CR_Sm[] = { - 59, - 0x002b, 0x002b, - 0x003c, 0x003e, - 0x007c, 0x007c, - 0x007e, 0x007e, - 0x00ac, 0x00ac, - 0x00b1, 0x00b1, - 0x00d7, 0x00d7, - 0x00f7, 0x00f7, - 0x03f6, 0x03f6, - 0x2044, 0x2044, - 0x2052, 0x2052, - 0x207a, 0x207c, - 0x208a, 0x208c, - 0x2140, 0x2144, - 0x214b, 0x214b, - 0x2190, 0x2194, - 0x219a, 0x219b, - 0x21a0, 0x21a0, - 0x21a3, 0x21a3, - 0x21a6, 0x21a6, - 0x21ae, 0x21ae, - 0x21ce, 0x21cf, - 0x21d2, 0x21d2, - 0x21d4, 0x21d4, - 0x21f4, 0x22ff, - 0x2308, 0x230b, - 0x2320, 0x2321, - 0x237c, 0x237c, - 0x239b, 0x23b3, - 0x25b7, 0x25b7, - 0x25c1, 0x25c1, - 0x25f8, 0x25ff, - 0x266f, 0x266f, - 0x27c0, 0x27c4, - 0x27d0, 0x27e5, - 0x27f0, 0x27ff, - 0x2900, 0x2982, - 0x2999, 0x29d7, - 0x29dc, 0x29fb, - 0x29fe, 0x2aff, - 0xfb29, 0xfb29, - 0xfe62, 0xfe62, - 0xfe64, 0xfe66, - 0xff0b, 0xff0b, - 0xff1c, 0xff1e, - 0xff5c, 0xff5c, - 0xff5e, 0xff5e, - 0xffe2, 0xffe2, - 0xffe9, 0xffec, - 0x1d6c1, 0x1d6c1, - 0x1d6db, 0x1d6db, - 0x1d6fb, 0x1d6fb, - 0x1d715, 0x1d715, - 0x1d735, 0x1d735, - 0x1d74f, 0x1d74f, - 0x1d76f, 0x1d76f, - 0x1d789, 0x1d789, - 0x1d7a9, 0x1d7a9, - 0x1d7c3, 0x1d7c3 -}; /* CR_Sm */ - -/* 'So': General Category */ -static const OnigCodePoint CR_So[] = { - 120, - 0x00a6, 0x00a7, - 0x00a9, 0x00a9, - 0x00ae, 0x00ae, - 0x00b0, 0x00b0, - 0x00b6, 0x00b6, - 0x0482, 0x0482, - 0x060e, 0x060f, - 0x06e9, 0x06e9, - 0x06fd, 0x06fe, - 0x09fa, 0x09fa, - 0x0b70, 0x0b70, - 0x0bf3, 0x0bf8, - 0x0bfa, 0x0bfa, - 0x0f01, 0x0f03, - 0x0f13, 0x0f17, - 0x0f1a, 0x0f1f, - 0x0f34, 0x0f34, - 0x0f36, 0x0f36, - 0x0f38, 0x0f38, - 0x0fbe, 0x0fc5, - 0x0fc7, 0x0fcc, - 0x0fcf, 0x0fcf, - 0x1360, 0x1360, - 0x1390, 0x1399, - 0x1940, 0x1940, - 0x19e0, 0x19ff, - 0x2100, 0x2101, - 0x2103, 0x2106, - 0x2108, 0x2109, - 0x2114, 0x2114, - 0x2116, 0x2118, - 0x211e, 0x2123, - 0x2125, 0x2125, - 0x2127, 0x2127, - 0x2129, 0x2129, - 0x212e, 0x212e, - 0x2132, 0x2132, - 0x213a, 0x213b, - 0x214a, 0x214a, - 0x214c, 0x214c, - 0x2195, 0x2199, - 0x219c, 0x219f, - 0x21a1, 0x21a2, - 0x21a4, 0x21a5, - 0x21a7, 0x21ad, - 0x21af, 0x21cd, - 0x21d0, 0x21d1, - 0x21d3, 0x21d3, - 0x21d5, 0x21f3, - 0x2300, 0x2307, - 0x230c, 0x231f, - 0x2322, 0x2328, - 0x232b, 0x237b, - 0x237d, 0x239a, - 0x23b7, 0x23db, - 0x2400, 0x2426, - 0x2440, 0x244a, - 0x249c, 0x24e9, - 0x2500, 0x25b6, - 0x25b8, 0x25c0, - 0x25c2, 0x25f7, - 0x2600, 0x266e, - 0x2670, 0x269c, - 0x26a0, 0x26b1, - 0x2701, 0x2704, - 0x2706, 0x2709, - 0x270c, 0x2727, - 0x2729, 0x274b, - 0x274d, 0x274d, - 0x274f, 0x2752, - 0x2756, 0x2756, - 0x2758, 0x275e, - 0x2761, 0x2767, - 0x2794, 0x2794, - 0x2798, 0x27af, - 0x27b1, 0x27be, - 0x2800, 0x28ff, - 0x2b00, 0x2b13, - 0x2ce5, 0x2cea, - 0x2e80, 0x2e99, - 0x2e9b, 0x2ef3, - 0x2f00, 0x2fd5, - 0x2ff0, 0x2ffb, - 0x3004, 0x3004, - 0x3012, 0x3013, - 0x3020, 0x3020, - 0x3036, 0x3037, - 0x303e, 0x303f, - 0x3190, 0x3191, - 0x3196, 0x319f, - 0x31c0, 0x31cf, - 0x3200, 0x321e, - 0x322a, 0x3243, - 0x3250, 0x3250, - 0x3260, 0x327f, - 0x328a, 0x32b0, - 0x32c0, 0x32fe, - 0x3300, 0x33ff, - 0x4dc0, 0x4dff, - 0xa490, 0xa4c6, - 0xa828, 0xa82b, - 0xfdfd, 0xfdfd, - 0xffe4, 0xffe4, - 0xffe8, 0xffe8, - 0xffed, 0xffee, - 0xfffc, 0xfffd, - 0x10102, 0x10102, - 0x10137, 0x1013f, - 0x10179, 0x10189, - 0x103d0, 0x103d0, - 0x1d000, 0x1d0f5, - 0x1d100, 0x1d126, - 0x1d12a, 0x1d164, - 0x1d16a, 0x1d16c, - 0x1d183, 0x1d184, - 0x1d18c, 0x1d1a9, - 0x1d1ae, 0x1d1dd, - 0x1d200, 0x1d241, - 0x1d245, 0x1d245, - 0x1d300, 0x1d356 -}; /* CR_So */ - -/* 'Z': Major Category */ -static const OnigCodePoint CR_Z[] = { - 9, - 0x0020, 0x0020, - 0x00a0, 0x00a0, - 0x1680, 0x1680, - 0x180e, 0x180e, - 0x2000, 0x200a, - 0x2028, 0x2029, - 0x202f, 0x202f, - 0x205f, 0x205f, - 0x3000, 0x3000 -}; /* CR_Z */ - -/* 'Zl': General Category */ -static const OnigCodePoint CR_Zl[] = { - 1, - 0x2028, 0x2028 -}; /* CR_Zl */ - -/* 'Zp': General Category */ -static const OnigCodePoint CR_Zp[] = { - 1, - 0x2029, 0x2029 -}; /* CR_Zp */ - -/* 'Zs': General Category */ -static const OnigCodePoint CR_Zs[] = { - 8, - 0x0020, 0x0020, - 0x00a0, 0x00a0, - 0x1680, 0x1680, - 0x180e, 0x180e, - 0x2000, 0x200a, - 0x202f, 0x202f, - 0x205f, 0x205f, - 0x3000, 0x3000 -}; /* CR_Zs */ - -/* 'Arabic': Script */ -static const OnigCodePoint CR_Arabic[] = { - 17, - 0x060b, 0x060b, - 0x060d, 0x0615, - 0x061e, 0x061e, - 0x0621, 0x063a, - 0x0641, 0x064a, - 0x0656, 0x065e, - 0x066a, 0x066f, - 0x0671, 0x06dc, - 0x06de, 0x06ff, - 0x0750, 0x076d, - 0xfb50, 0xfbb1, - 0xfbd3, 0xfd3d, - 0xfd50, 0xfd8f, - 0xfd92, 0xfdc7, - 0xfdf0, 0xfdfc, - 0xfe70, 0xfe74, - 0xfe76, 0xfefc -}; /* CR_Arabic */ - -/* 'Armenian': Script */ -static const OnigCodePoint CR_Armenian[] = { - 5, - 0x0531, 0x0556, - 0x0559, 0x055f, - 0x0561, 0x0587, - 0x058a, 0x058a, - 0xfb13, 0xfb17 -}; /* CR_Armenian */ - -/* 'Bengali': Script */ -static const OnigCodePoint CR_Bengali[] = { - 14, - 0x0981, 0x0983, - 0x0985, 0x098c, - 0x098f, 0x0990, - 0x0993, 0x09a8, - 0x09aa, 0x09b0, - 0x09b2, 0x09b2, - 0x09b6, 0x09b9, - 0x09bc, 0x09c4, - 0x09c7, 0x09c8, - 0x09cb, 0x09ce, - 0x09d7, 0x09d7, - 0x09dc, 0x09dd, - 0x09df, 0x09e3, - 0x09e6, 0x09fa -}; /* CR_Bengali */ - -/* 'Bopomofo': Script */ -static const OnigCodePoint CR_Bopomofo[] = { - 2, - 0x3105, 0x312c, - 0x31a0, 0x31b7 -}; /* CR_Bopomofo */ - -/* 'Braille': Script */ -static const OnigCodePoint CR_Braille[] = { - 1, - 0x2800, 0x28ff -}; /* CR_Braille */ - -/* 'Buginese': Script */ -static const OnigCodePoint CR_Buginese[] = { - 2, - 0x1a00, 0x1a1b, - 0x1a1e, 0x1a1f -}; /* CR_Buginese */ - -/* 'Buhid': Script */ -static const OnigCodePoint CR_Buhid[] = { - 1, - 0x1740, 0x1753 -}; /* CR_Buhid */ - -/* 'Canadian_Aboriginal': Script */ -static const OnigCodePoint CR_Canadian_Aboriginal[] = { - 1, - 0x1401, 0x1676 -}; /* CR_Canadian_Aboriginal */ - -/* 'Cherokee': Script */ -static const OnigCodePoint CR_Cherokee[] = { - 1, - 0x13a0, 0x13f4 -}; /* CR_Cherokee */ - -/* 'Common': Script */ -static const OnigCodePoint CR_Common[] = { - 126, - 0x0000, 0x0040, - 0x005b, 0x0060, - 0x007b, 0x00a9, - 0x00ab, 0x00b9, - 0x00bb, 0x00bf, - 0x00d7, 0x00d7, - 0x00f7, 0x00f7, - 0x02b9, 0x02df, - 0x02e5, 0x02ff, - 0x037e, 0x037e, - 0x0387, 0x0387, - 0x0589, 0x0589, - 0x0600, 0x0603, - 0x060c, 0x060c, - 0x061b, 0x061b, - 0x061f, 0x061f, - 0x0640, 0x0640, - 0x0660, 0x0669, - 0x06dd, 0x06dd, - 0x0964, 0x0965, - 0x0970, 0x0970, - 0x0e3f, 0x0e3f, - 0x10fb, 0x10fb, - 0x16eb, 0x16ed, - 0x1735, 0x1736, - 0x2000, 0x200b, - 0x200e, 0x2063, - 0x206a, 0x2070, - 0x2074, 0x207e, - 0x2080, 0x208e, - 0x20a0, 0x20b5, - 0x2100, 0x2125, - 0x2127, 0x2129, - 0x212c, 0x214c, - 0x2153, 0x2183, - 0x2190, 0x23db, - 0x2400, 0x2426, - 0x2440, 0x244a, - 0x2460, 0x269c, - 0x26a0, 0x26b1, - 0x2701, 0x2704, - 0x2706, 0x2709, - 0x270c, 0x2727, - 0x2729, 0x274b, - 0x274d, 0x274d, - 0x274f, 0x2752, - 0x2756, 0x2756, - 0x2758, 0x275e, - 0x2761, 0x2794, - 0x2798, 0x27af, - 0x27b1, 0x27be, - 0x27c0, 0x27c6, - 0x27d0, 0x27eb, - 0x27f0, 0x27ff, - 0x2900, 0x2b13, - 0x2e00, 0x2e17, - 0x2e1c, 0x2e1d, - 0x2ff0, 0x2ffb, - 0x3000, 0x3004, - 0x3006, 0x3006, - 0x3008, 0x3020, - 0x3030, 0x3037, - 0x303c, 0x303f, - 0x309b, 0x309c, - 0x30a0, 0x30a0, - 0x30fb, 0x30fc, - 0x3190, 0x319f, - 0x31c0, 0x31cf, - 0x3220, 0x3243, - 0x3250, 0x325f, - 0x327e, 0x32fe, - 0x3300, 0x33ff, - 0x4dc0, 0x4dff, - 0xa700, 0xa716, - 0xe000, 0xf8ff, - 0xfd3e, 0xfd3f, - 0xfdfd, 0xfdfd, - 0xfe10, 0xfe19, - 0xfe30, 0xfe52, - 0xfe54, 0xfe66, - 0xfe68, 0xfe6b, - 0xfeff, 0xfeff, - 0xff01, 0xff20, - 0xff3b, 0xff40, - 0xff5b, 0xff65, - 0xff70, 0xff70, - 0xff9e, 0xff9f, - 0xffe0, 0xffe6, - 0xffe8, 0xffee, - 0xfff9, 0xfffd, - 0x10100, 0x10102, - 0x10107, 0x10133, - 0x10137, 0x1013f, - 0x1d000, 0x1d0f5, - 0x1d100, 0x1d126, - 0x1d12a, 0x1d166, - 0x1d16a, 0x1d17a, - 0x1d183, 0x1d184, - 0x1d18c, 0x1d1a9, - 0x1d1ae, 0x1d1dd, - 0x1d300, 0x1d356, - 0x1d400, 0x1d454, - 0x1d456, 0x1d49c, - 0x1d49e, 0x1d49f, - 0x1d4a2, 0x1d4a2, - 0x1d4a5, 0x1d4a6, - 0x1d4a9, 0x1d4ac, - 0x1d4ae, 0x1d4b9, - 0x1d4bb, 0x1d4bb, - 0x1d4bd, 0x1d4c3, - 0x1d4c5, 0x1d505, - 0x1d507, 0x1d50a, - 0x1d50d, 0x1d514, - 0x1d516, 0x1d51c, - 0x1d51e, 0x1d539, - 0x1d53b, 0x1d53e, - 0x1d540, 0x1d544, - 0x1d546, 0x1d546, - 0x1d54a, 0x1d550, - 0x1d552, 0x1d6a5, - 0x1d6a8, 0x1d7c9, - 0x1d7ce, 0x1d7ff, - 0xe0001, 0xe0001, - 0xe0020, 0xe007f, - 0xf0000, 0xffffd, - 0x100000, 0x10fffd -}; /* CR_Common */ - -/* 'Coptic': Script */ -static const OnigCodePoint CR_Coptic[] = { - 3, - 0x03e2, 0x03ef, - 0x2c80, 0x2cea, - 0x2cf9, 0x2cff -}; /* CR_Coptic */ - -/* 'Cypriot': Script */ -static const OnigCodePoint CR_Cypriot[] = { - 6, - 0x10800, 0x10805, - 0x10808, 0x10808, - 0x1080a, 0x10835, - 0x10837, 0x10838, - 0x1083c, 0x1083c, - 0x1083f, 0x1083f -}; /* CR_Cypriot */ - -/* 'Cyrillic': Script */ -static const OnigCodePoint CR_Cyrillic[] = { - 6, - 0x0400, 0x0486, - 0x0488, 0x04ce, - 0x04d0, 0x04f9, - 0x0500, 0x050f, - 0x1d2b, 0x1d2b, - 0x1d78, 0x1d78 -}; /* CR_Cyrillic */ - -/* 'Deseret': Script */ -static const OnigCodePoint CR_Deseret[] = { - 1, - 0x10400, 0x1044f -}; /* CR_Deseret */ - -/* 'Devanagari': Script */ -static const OnigCodePoint CR_Devanagari[] = { - 6, - 0x0901, 0x0939, - 0x093c, 0x094d, - 0x0950, 0x0954, - 0x0958, 0x0963, - 0x0966, 0x096f, - 0x097d, 0x097d -}; /* CR_Devanagari */ - -/* 'Ethiopic': Script */ -static const OnigCodePoint CR_Ethiopic[] = { - 27, - 0x1200, 0x1248, - 0x124a, 0x124d, - 0x1250, 0x1256, - 0x1258, 0x1258, - 0x125a, 0x125d, - 0x1260, 0x1288, - 0x128a, 0x128d, - 0x1290, 0x12b0, - 0x12b2, 0x12b5, - 0x12b8, 0x12be, - 0x12c0, 0x12c0, - 0x12c2, 0x12c5, - 0x12c8, 0x12d6, - 0x12d8, 0x1310, - 0x1312, 0x1315, - 0x1318, 0x135a, - 0x135f, 0x137c, - 0x1380, 0x1399, - 0x2d80, 0x2d96, - 0x2da0, 0x2da6, - 0x2da8, 0x2dae, - 0x2db0, 0x2db6, - 0x2db8, 0x2dbe, - 0x2dc0, 0x2dc6, - 0x2dc8, 0x2dce, - 0x2dd0, 0x2dd6, - 0x2dd8, 0x2dde -}; /* CR_Ethiopic */ - -/* 'Georgian': Script */ -static const OnigCodePoint CR_Georgian[] = { - 4, - 0x10a0, 0x10c5, - 0x10d0, 0x10fa, - 0x10fc, 0x10fc, - 0x2d00, 0x2d25 -}; /* CR_Georgian */ - -/* 'Glagolitic': Script */ -static const OnigCodePoint CR_Glagolitic[] = { - 2, - 0x2c00, 0x2c2e, - 0x2c30, 0x2c5e -}; /* CR_Glagolitic */ - -/* 'Gothic': Script */ -static const OnigCodePoint CR_Gothic[] = { - 1, - 0x10330, 0x1034a -}; /* CR_Gothic */ - -/* 'Greek': Script */ -static const OnigCodePoint CR_Greek[] = { - 31, - 0x0374, 0x0375, - 0x037a, 0x037a, - 0x0384, 0x0386, - 0x0388, 0x038a, - 0x038c, 0x038c, - 0x038e, 0x03a1, - 0x03a3, 0x03ce, - 0x03d0, 0x03e1, - 0x03f0, 0x03ff, - 0x1d26, 0x1d2a, - 0x1d5d, 0x1d61, - 0x1d66, 0x1d6a, - 0x1f00, 0x1f15, - 0x1f18, 0x1f1d, - 0x1f20, 0x1f45, - 0x1f48, 0x1f4d, - 0x1f50, 0x1f57, - 0x1f59, 0x1f59, - 0x1f5b, 0x1f5b, - 0x1f5d, 0x1f5d, - 0x1f5f, 0x1f7d, - 0x1f80, 0x1fb4, - 0x1fb6, 0x1fc4, - 0x1fc6, 0x1fd3, - 0x1fd6, 0x1fdb, - 0x1fdd, 0x1fef, - 0x1ff2, 0x1ff4, - 0x1ff6, 0x1ffe, - 0x2126, 0x2126, - 0x10140, 0x1018a, - 0x1d200, 0x1d245 -}; /* CR_Greek */ - -/* 'Gujarati': Script */ -static const OnigCodePoint CR_Gujarati[] = { - 14, - 0x0a81, 0x0a83, - 0x0a85, 0x0a8d, - 0x0a8f, 0x0a91, - 0x0a93, 0x0aa8, - 0x0aaa, 0x0ab0, - 0x0ab2, 0x0ab3, - 0x0ab5, 0x0ab9, - 0x0abc, 0x0ac5, - 0x0ac7, 0x0ac9, - 0x0acb, 0x0acd, - 0x0ad0, 0x0ad0, - 0x0ae0, 0x0ae3, - 0x0ae6, 0x0aef, - 0x0af1, 0x0af1 -}; /* CR_Gujarati */ - -/* 'Gurmukhi': Script */ -static const OnigCodePoint CR_Gurmukhi[] = { - 15, - 0x0a01, 0x0a03, - 0x0a05, 0x0a0a, - 0x0a0f, 0x0a10, - 0x0a13, 0x0a28, - 0x0a2a, 0x0a30, - 0x0a32, 0x0a33, - 0x0a35, 0x0a36, - 0x0a38, 0x0a39, - 0x0a3c, 0x0a3c, - 0x0a3e, 0x0a42, - 0x0a47, 0x0a48, - 0x0a4b, 0x0a4d, - 0x0a59, 0x0a5c, - 0x0a5e, 0x0a5e, - 0x0a66, 0x0a74 -}; /* CR_Gurmukhi */ - -/* 'Han': Script */ -static const OnigCodePoint CR_Han[] = { - 14, - 0x2e80, 0x2e99, - 0x2e9b, 0x2ef3, - 0x2f00, 0x2fd5, - 0x3005, 0x3005, - 0x3007, 0x3007, - 0x3021, 0x3029, - 0x3038, 0x303b, - 0x3400, 0x4db5, - 0x4e00, 0x9fbb, - 0xf900, 0xfa2d, - 0xfa30, 0xfa6a, - 0xfa70, 0xfad9, - 0x20000, 0x2a6d6, - 0x2f800, 0x2fa1d -}; /* CR_Han */ - -/* 'Hangul': Script */ -static const OnigCodePoint CR_Hangul[] = { - 12, - 0x1100, 0x1159, - 0x115f, 0x11a2, - 0x11a8, 0x11f9, - 0x3131, 0x318e, - 0x3200, 0x321e, - 0x3260, 0x327d, - 0xac00, 0xd7a3, - 0xffa0, 0xffbe, - 0xffc2, 0xffc7, - 0xffca, 0xffcf, - 0xffd2, 0xffd7, - 0xffda, 0xffdc -}; /* CR_Hangul */ - -/* 'Hanunoo': Script */ -static const OnigCodePoint CR_Hanunoo[] = { - 1, - 0x1720, 0x1734 -}; /* CR_Hanunoo */ - -/* 'Hebrew': Script */ -static const OnigCodePoint CR_Hebrew[] = { - 10, - 0x0591, 0x05b9, - 0x05bb, 0x05c7, - 0x05d0, 0x05ea, - 0x05f0, 0x05f4, - 0xfb1d, 0xfb36, - 0xfb38, 0xfb3c, - 0xfb3e, 0xfb3e, - 0xfb40, 0xfb41, - 0xfb43, 0xfb44, - 0xfb46, 0xfb4f -}; /* CR_Hebrew */ - -/* 'Hiragana': Script */ -static const OnigCodePoint CR_Hiragana[] = { - 2, - 0x3041, 0x3096, - 0x309d, 0x309f -}; /* CR_Hiragana */ - -/* 'Inherited': Script */ -static const OnigCodePoint CR_Inherited[] = { - 15, - 0x0300, 0x036f, - 0x064b, 0x0655, - 0x0670, 0x0670, - 0x1dc0, 0x1dc3, - 0x200c, 0x200d, - 0x20d0, 0x20eb, - 0x302a, 0x302f, - 0x3099, 0x309a, - 0xfe00, 0xfe0f, - 0xfe20, 0xfe23, - 0x1d167, 0x1d169, - 0x1d17b, 0x1d182, - 0x1d185, 0x1d18b, - 0x1d1aa, 0x1d1ad, - 0xe0100, 0xe01ef -}; /* CR_Inherited */ - -/* 'Kannada': Script */ -static const OnigCodePoint CR_Kannada[] = { - 13, - 0x0c82, 0x0c83, - 0x0c85, 0x0c8c, - 0x0c8e, 0x0c90, - 0x0c92, 0x0ca8, - 0x0caa, 0x0cb3, - 0x0cb5, 0x0cb9, - 0x0cbc, 0x0cc4, - 0x0cc6, 0x0cc8, - 0x0cca, 0x0ccd, - 0x0cd5, 0x0cd6, - 0x0cde, 0x0cde, - 0x0ce0, 0x0ce1, - 0x0ce6, 0x0cef -}; /* CR_Kannada */ - -/* 'Katakana': Script */ -static const OnigCodePoint CR_Katakana[] = { - 5, - 0x30a1, 0x30fa, - 0x30fd, 0x30ff, - 0x31f0, 0x31ff, - 0xff66, 0xff6f, - 0xff71, 0xff9d -}; /* CR_Katakana */ - -/* 'Kharoshthi': Script */ -static const OnigCodePoint CR_Kharoshthi[] = { - 8, - 0x10a00, 0x10a03, - 0x10a05, 0x10a06, - 0x10a0c, 0x10a13, - 0x10a15, 0x10a17, - 0x10a19, 0x10a33, - 0x10a38, 0x10a3a, - 0x10a3f, 0x10a47, - 0x10a50, 0x10a58 -}; /* CR_Kharoshthi */ - -/* 'Khmer': Script */ -static const OnigCodePoint CR_Khmer[] = { - 4, - 0x1780, 0x17dd, - 0x17e0, 0x17e9, - 0x17f0, 0x17f9, - 0x19e0, 0x19ff -}; /* CR_Khmer */ - -/* 'Lao': Script */ -static const OnigCodePoint CR_Lao[] = { - 18, - 0x0e81, 0x0e82, - 0x0e84, 0x0e84, - 0x0e87, 0x0e88, - 0x0e8a, 0x0e8a, - 0x0e8d, 0x0e8d, - 0x0e94, 0x0e97, - 0x0e99, 0x0e9f, - 0x0ea1, 0x0ea3, - 0x0ea5, 0x0ea5, - 0x0ea7, 0x0ea7, - 0x0eaa, 0x0eab, - 0x0ead, 0x0eb9, - 0x0ebb, 0x0ebd, - 0x0ec0, 0x0ec4, - 0x0ec6, 0x0ec6, - 0x0ec8, 0x0ecd, - 0x0ed0, 0x0ed9, - 0x0edc, 0x0edd -}; /* CR_Lao */ - -/* 'Latin': Script */ -static const OnigCodePoint CR_Latin[] = { - 23, - 0x0041, 0x005a, - 0x0061, 0x007a, - 0x00aa, 0x00aa, - 0x00ba, 0x00ba, - 0x00c0, 0x00d6, - 0x00d8, 0x00f6, - 0x00f8, 0x0241, - 0x0250, 0x02b8, - 0x02e0, 0x02e4, - 0x1d00, 0x1d25, - 0x1d2c, 0x1d5c, - 0x1d62, 0x1d65, - 0x1d6b, 0x1d77, - 0x1d79, 0x1dbf, - 0x1e00, 0x1e9b, - 0x1ea0, 0x1ef9, - 0x2071, 0x2071, - 0x207f, 0x207f, - 0x2090, 0x2094, - 0x212a, 0x212b, - 0xfb00, 0xfb06, - 0xff21, 0xff3a, - 0xff41, 0xff5a -}; /* CR_Latin */ - -/* 'Limbu': Script */ -static const OnigCodePoint CR_Limbu[] = { - 5, - 0x1900, 0x191c, - 0x1920, 0x192b, - 0x1930, 0x193b, - 0x1940, 0x1940, - 0x1944, 0x194f -}; /* CR_Limbu */ - -/* 'Linear_B': Script */ -static const OnigCodePoint CR_Linear_B[] = { - 7, - 0x10000, 0x1000b, - 0x1000d, 0x10026, - 0x10028, 0x1003a, - 0x1003c, 0x1003d, - 0x1003f, 0x1004d, - 0x10050, 0x1005d, - 0x10080, 0x100fa -}; /* CR_Linear_B */ - -/* 'Malayalam': Script */ -static const OnigCodePoint CR_Malayalam[] = { - 11, - 0x0d02, 0x0d03, - 0x0d05, 0x0d0c, - 0x0d0e, 0x0d10, - 0x0d12, 0x0d28, - 0x0d2a, 0x0d39, - 0x0d3e, 0x0d43, - 0x0d46, 0x0d48, - 0x0d4a, 0x0d4d, - 0x0d57, 0x0d57, - 0x0d60, 0x0d61, - 0x0d66, 0x0d6f -}; /* CR_Malayalam */ - -/* 'Mongolian': Script */ -static const OnigCodePoint CR_Mongolian[] = { - 4, - 0x1800, 0x180e, - 0x1810, 0x1819, - 0x1820, 0x1877, - 0x1880, 0x18a9 -}; /* CR_Mongolian */ - -/* 'Myanmar': Script */ -static const OnigCodePoint CR_Myanmar[] = { - 6, - 0x1000, 0x1021, - 0x1023, 0x1027, - 0x1029, 0x102a, - 0x102c, 0x1032, - 0x1036, 0x1039, - 0x1040, 0x1059 -}; /* CR_Myanmar */ - -/* 'New_Tai_Lue': Script */ -static const OnigCodePoint CR_New_Tai_Lue[] = { - 4, - 0x1980, 0x19a9, - 0x19b0, 0x19c9, - 0x19d0, 0x19d9, - 0x19de, 0x19df -}; /* CR_New_Tai_Lue */ - -/* 'Ogham': Script */ -static const OnigCodePoint CR_Ogham[] = { - 1, - 0x1680, 0x169c -}; /* CR_Ogham */ - -/* 'Old_Italic': Script */ -static const OnigCodePoint CR_Old_Italic[] = { - 2, - 0x10300, 0x1031e, - 0x10320, 0x10323 -}; /* CR_Old_Italic */ - -/* 'Old_Persian': Script */ -static const OnigCodePoint CR_Old_Persian[] = { - 2, - 0x103a0, 0x103c3, - 0x103c8, 0x103d5 -}; /* CR_Old_Persian */ - -/* 'Oriya': Script */ -static const OnigCodePoint CR_Oriya[] = { - 14, - 0x0b01, 0x0b03, - 0x0b05, 0x0b0c, - 0x0b0f, 0x0b10, - 0x0b13, 0x0b28, - 0x0b2a, 0x0b30, - 0x0b32, 0x0b33, - 0x0b35, 0x0b39, - 0x0b3c, 0x0b43, - 0x0b47, 0x0b48, - 0x0b4b, 0x0b4d, - 0x0b56, 0x0b57, - 0x0b5c, 0x0b5d, - 0x0b5f, 0x0b61, - 0x0b66, 0x0b71 -}; /* CR_Oriya */ - -/* 'Osmanya': Script */ -static const OnigCodePoint CR_Osmanya[] = { - 2, - 0x10480, 0x1049d, - 0x104a0, 0x104a9 -}; /* CR_Osmanya */ - -/* 'Runic': Script */ -static const OnigCodePoint CR_Runic[] = { - 2, - 0x16a0, 0x16ea, - 0x16ee, 0x16f0 -}; /* CR_Runic */ - -/* 'Shavian': Script */ -static const OnigCodePoint CR_Shavian[] = { - 1, - 0x10450, 0x1047f -}; /* CR_Shavian */ - -/* 'Sinhala': Script */ -static const OnigCodePoint CR_Sinhala[] = { - 11, - 0x0d82, 0x0d83, - 0x0d85, 0x0d96, - 0x0d9a, 0x0db1, - 0x0db3, 0x0dbb, - 0x0dbd, 0x0dbd, - 0x0dc0, 0x0dc6, - 0x0dca, 0x0dca, - 0x0dcf, 0x0dd4, - 0x0dd6, 0x0dd6, - 0x0dd8, 0x0ddf, - 0x0df2, 0x0df4 -}; /* CR_Sinhala */ - -/* 'Syloti_Nagri': Script */ -static const OnigCodePoint CR_Syloti_Nagri[] = { - 1, - 0xa800, 0xa82b -}; /* CR_Syloti_Nagri */ - -/* 'Syriac': Script */ -static const OnigCodePoint CR_Syriac[] = { - 3, - 0x0700, 0x070d, - 0x070f, 0x074a, - 0x074d, 0x074f -}; /* CR_Syriac */ - -/* 'Tagalog': Script */ -static const OnigCodePoint CR_Tagalog[] = { - 2, - 0x1700, 0x170c, - 0x170e, 0x1714 -}; /* CR_Tagalog */ - -/* 'Tagbanwa': Script */ -static const OnigCodePoint CR_Tagbanwa[] = { - 3, - 0x1760, 0x176c, - 0x176e, 0x1770, - 0x1772, 0x1773 -}; /* CR_Tagbanwa */ - -/* 'Tai_Le': Script */ -static const OnigCodePoint CR_Tai_Le[] = { - 2, - 0x1950, 0x196d, - 0x1970, 0x1974 -}; /* CR_Tai_Le */ - -/* 'Tamil': Script */ -static const OnigCodePoint CR_Tamil[] = { - 15, - 0x0b82, 0x0b83, - 0x0b85, 0x0b8a, - 0x0b8e, 0x0b90, - 0x0b92, 0x0b95, - 0x0b99, 0x0b9a, - 0x0b9c, 0x0b9c, - 0x0b9e, 0x0b9f, - 0x0ba3, 0x0ba4, - 0x0ba8, 0x0baa, - 0x0bae, 0x0bb9, - 0x0bbe, 0x0bc2, - 0x0bc6, 0x0bc8, - 0x0bca, 0x0bcd, - 0x0bd7, 0x0bd7, - 0x0be6, 0x0bfa -}; /* CR_Tamil */ - -/* 'Telugu': Script */ -static const OnigCodePoint CR_Telugu[] = { - 12, - 0x0c01, 0x0c03, - 0x0c05, 0x0c0c, - 0x0c0e, 0x0c10, - 0x0c12, 0x0c28, - 0x0c2a, 0x0c33, - 0x0c35, 0x0c39, - 0x0c3e, 0x0c44, - 0x0c46, 0x0c48, - 0x0c4a, 0x0c4d, - 0x0c55, 0x0c56, - 0x0c60, 0x0c61, - 0x0c66, 0x0c6f -}; /* CR_Telugu */ - -/* 'Thaana': Script */ -static const OnigCodePoint CR_Thaana[] = { - 1, - 0x0780, 0x07b1 -}; /* CR_Thaana */ - -/* 'Thai': Script */ -static const OnigCodePoint CR_Thai[] = { - 2, - 0x0e01, 0x0e3a, - 0x0e40, 0x0e5b -}; /* CR_Thai */ - -/* 'Tibetan': Script */ -static const OnigCodePoint CR_Tibetan[] = { - 7, - 0x0f00, 0x0f47, - 0x0f49, 0x0f6a, - 0x0f71, 0x0f8b, - 0x0f90, 0x0f97, - 0x0f99, 0x0fbc, - 0x0fbe, 0x0fcc, - 0x0fcf, 0x0fd1 -}; /* CR_Tibetan */ - -/* 'Tifinagh': Script */ -static const OnigCodePoint CR_Tifinagh[] = { - 2, - 0x2d30, 0x2d65, - 0x2d6f, 0x2d6f -}; /* CR_Tifinagh */ - -/* 'Ugaritic': Script */ -static const OnigCodePoint CR_Ugaritic[] = { - 2, - 0x10380, 0x1039d, - 0x1039f, 0x1039f -}; /* CR_Ugaritic */ - -/* 'Yi': Script */ -static const OnigCodePoint CR_Yi[] = { - 2, - 0xa000, 0xa48c, - 0xa490, 0xa4c6 -}; /* CR_Yi */ - - -#endif /* USE_UNICODE_PROPERTIES */ - - -typedef struct { - int n; - OnigCodePoint code[3]; -} CodePointList3; - -typedef struct { - OnigCodePoint from; - CodePointList3 to; -} CaseFold_11_Type; - -typedef struct { - OnigCodePoint from; - CodePointList3 to; -} CaseUnfold_11_Type; - -typedef struct { - int n; - OnigCodePoint code[2]; -} CodePointList2; - -typedef struct { - OnigCodePoint from[2]; - CodePointList2 to; -} CaseUnfold_12_Type; - -typedef struct { - OnigCodePoint from[3]; - CodePointList2 to; -} CaseUnfold_13_Type; - -static const CaseFold_11_Type CaseFold[] = { - { 0x0041, {1, {0x0061}}}, - { 0x0042, {1, {0x0062}}}, - { 0x0043, {1, {0x0063}}}, - { 0x0044, {1, {0x0064}}}, - { 0x0045, {1, {0x0065}}}, - { 0x0046, {1, {0x0066}}}, - { 0x0047, {1, {0x0067}}}, - { 0x0048, {1, {0x0068}}}, - { 0x004a, {1, {0x006a}}}, - { 0x004b, {1, {0x006b}}}, - { 0x004c, {1, {0x006c}}}, - { 0x004d, {1, {0x006d}}}, - { 0x004e, {1, {0x006e}}}, - { 0x004f, {1, {0x006f}}}, - { 0x0050, {1, {0x0070}}}, - { 0x0051, {1, {0x0071}}}, - { 0x0052, {1, {0x0072}}}, - { 0x0053, {1, {0x0073}}}, - { 0x0054, {1, {0x0074}}}, - { 0x0055, {1, {0x0075}}}, - { 0x0056, {1, {0x0076}}}, - { 0x0057, {1, {0x0077}}}, - { 0x0058, {1, {0x0078}}}, - { 0x0059, {1, {0x0079}}}, - { 0x005a, {1, {0x007a}}}, - { 0x00b5, {1, {0x03bc}}}, - { 0x00c0, {1, {0x00e0}}}, - { 0x00c1, {1, {0x00e1}}}, - { 0x00c2, {1, {0x00e2}}}, - { 0x00c3, {1, {0x00e3}}}, - { 0x00c4, {1, {0x00e4}}}, - { 0x00c5, {1, {0x00e5}}}, - { 0x00c6, {1, {0x00e6}}}, - { 0x00c7, {1, {0x00e7}}}, - { 0x00c8, {1, {0x00e8}}}, - { 0x00c9, {1, {0x00e9}}}, - { 0x00ca, {1, {0x00ea}}}, - { 0x00cb, {1, {0x00eb}}}, - { 0x00cc, {1, {0x00ec}}}, - { 0x00cd, {1, {0x00ed}}}, - { 0x00ce, {1, {0x00ee}}}, - { 0x00cf, {1, {0x00ef}}}, - { 0x00d0, {1, {0x00f0}}}, - { 0x00d1, {1, {0x00f1}}}, - { 0x00d2, {1, {0x00f2}}}, - { 0x00d3, {1, {0x00f3}}}, - { 0x00d4, {1, {0x00f4}}}, - { 0x00d5, {1, {0x00f5}}}, - { 0x00d6, {1, {0x00f6}}}, - { 0x00d8, {1, {0x00f8}}}, - { 0x00d9, {1, {0x00f9}}}, - { 0x00da, {1, {0x00fa}}}, - { 0x00db, {1, {0x00fb}}}, - { 0x00dc, {1, {0x00fc}}}, - { 0x00dd, {1, {0x00fd}}}, - { 0x00de, {1, {0x00fe}}}, - { 0x00df, {2, {0x0073, 0x0073}}}, - { 0x0100, {1, {0x0101}}}, - { 0x0102, {1, {0x0103}}}, - { 0x0104, {1, {0x0105}}}, - { 0x0106, {1, {0x0107}}}, - { 0x0108, {1, {0x0109}}}, - { 0x010a, {1, {0x010b}}}, - { 0x010c, {1, {0x010d}}}, - { 0x010e, {1, {0x010f}}}, - { 0x0110, {1, {0x0111}}}, - { 0x0112, {1, {0x0113}}}, - { 0x0114, {1, {0x0115}}}, - { 0x0116, {1, {0x0117}}}, - { 0x0118, {1, {0x0119}}}, - { 0x011a, {1, {0x011b}}}, - { 0x011c, {1, {0x011d}}}, - { 0x011e, {1, {0x011f}}}, - { 0x0120, {1, {0x0121}}}, - { 0x0122, {1, {0x0123}}}, - { 0x0124, {1, {0x0125}}}, - { 0x0126, {1, {0x0127}}}, - { 0x0128, {1, {0x0129}}}, - { 0x012a, {1, {0x012b}}}, - { 0x012c, {1, {0x012d}}}, - { 0x012e, {1, {0x012f}}}, - { 0x0132, {1, {0x0133}}}, - { 0x0134, {1, {0x0135}}}, - { 0x0136, {1, {0x0137}}}, - { 0x0139, {1, {0x013a}}}, - { 0x013b, {1, {0x013c}}}, - { 0x013d, {1, {0x013e}}}, - { 0x013f, {1, {0x0140}}}, - { 0x0141, {1, {0x0142}}}, - { 0x0143, {1, {0x0144}}}, - { 0x0145, {1, {0x0146}}}, - { 0x0147, {1, {0x0148}}}, - { 0x0149, {2, {0x02bc, 0x006e}}}, - { 0x014a, {1, {0x014b}}}, - { 0x014c, {1, {0x014d}}}, - { 0x014e, {1, {0x014f}}}, - { 0x0150, {1, {0x0151}}}, - { 0x0152, {1, {0x0153}}}, - { 0x0154, {1, {0x0155}}}, - { 0x0156, {1, {0x0157}}}, - { 0x0158, {1, {0x0159}}}, - { 0x015a, {1, {0x015b}}}, - { 0x015c, {1, {0x015d}}}, - { 0x015e, {1, {0x015f}}}, - { 0x0160, {1, {0x0161}}}, - { 0x0162, {1, {0x0163}}}, - { 0x0164, {1, {0x0165}}}, - { 0x0166, {1, {0x0167}}}, - { 0x0168, {1, {0x0169}}}, - { 0x016a, {1, {0x016b}}}, - { 0x016c, {1, {0x016d}}}, - { 0x016e, {1, {0x016f}}}, - { 0x0170, {1, {0x0171}}}, - { 0x0172, {1, {0x0173}}}, - { 0x0174, {1, {0x0175}}}, - { 0x0176, {1, {0x0177}}}, - { 0x0178, {1, {0x00ff}}}, - { 0x0179, {1, {0x017a}}}, - { 0x017b, {1, {0x017c}}}, - { 0x017d, {1, {0x017e}}}, - { 0x017f, {1, {0x0073}}}, - { 0x0181, {1, {0x0253}}}, - { 0x0182, {1, {0x0183}}}, - { 0x0184, {1, {0x0185}}}, - { 0x0186, {1, {0x0254}}}, - { 0x0187, {1, {0x0188}}}, - { 0x0189, {1, {0x0256}}}, - { 0x018a, {1, {0x0257}}}, - { 0x018b, {1, {0x018c}}}, - { 0x018e, {1, {0x01dd}}}, - { 0x018f, {1, {0x0259}}}, - { 0x0190, {1, {0x025b}}}, - { 0x0191, {1, {0x0192}}}, - { 0x0193, {1, {0x0260}}}, - { 0x0194, {1, {0x0263}}}, - { 0x0196, {1, {0x0269}}}, - { 0x0197, {1, {0x0268}}}, - { 0x0198, {1, {0x0199}}}, - { 0x019c, {1, {0x026f}}}, - { 0x019d, {1, {0x0272}}}, - { 0x019f, {1, {0x0275}}}, - { 0x01a0, {1, {0x01a1}}}, - { 0x01a2, {1, {0x01a3}}}, - { 0x01a4, {1, {0x01a5}}}, - { 0x01a6, {1, {0x0280}}}, - { 0x01a7, {1, {0x01a8}}}, - { 0x01a9, {1, {0x0283}}}, - { 0x01ac, {1, {0x01ad}}}, - { 0x01ae, {1, {0x0288}}}, - { 0x01af, {1, {0x01b0}}}, - { 0x01b1, {1, {0x028a}}}, - { 0x01b2, {1, {0x028b}}}, - { 0x01b3, {1, {0x01b4}}}, - { 0x01b5, {1, {0x01b6}}}, - { 0x01b7, {1, {0x0292}}}, - { 0x01b8, {1, {0x01b9}}}, - { 0x01bc, {1, {0x01bd}}}, - { 0x01c4, {1, {0x01c6}}}, - { 0x01c5, {1, {0x01c6}}}, - { 0x01c7, {1, {0x01c9}}}, - { 0x01c8, {1, {0x01c9}}}, - { 0x01ca, {1, {0x01cc}}}, - { 0x01cb, {1, {0x01cc}}}, - { 0x01cd, {1, {0x01ce}}}, - { 0x01cf, {1, {0x01d0}}}, - { 0x01d1, {1, {0x01d2}}}, - { 0x01d3, {1, {0x01d4}}}, - { 0x01d5, {1, {0x01d6}}}, - { 0x01d7, {1, {0x01d8}}}, - { 0x01d9, {1, {0x01da}}}, - { 0x01db, {1, {0x01dc}}}, - { 0x01de, {1, {0x01df}}}, - { 0x01e0, {1, {0x01e1}}}, - { 0x01e2, {1, {0x01e3}}}, - { 0x01e4, {1, {0x01e5}}}, - { 0x01e6, {1, {0x01e7}}}, - { 0x01e8, {1, {0x01e9}}}, - { 0x01ea, {1, {0x01eb}}}, - { 0x01ec, {1, {0x01ed}}}, - { 0x01ee, {1, {0x01ef}}}, - { 0x01f0, {2, {0x006a, 0x030c}}}, - { 0x01f1, {1, {0x01f3}}}, - { 0x01f2, {1, {0x01f3}}}, - { 0x01f4, {1, {0x01f5}}}, - { 0x01f6, {1, {0x0195}}}, - { 0x01f7, {1, {0x01bf}}}, - { 0x01f8, {1, {0x01f9}}}, - { 0x01fa, {1, {0x01fb}}}, - { 0x01fc, {1, {0x01fd}}}, - { 0x01fe, {1, {0x01ff}}}, - { 0x0200, {1, {0x0201}}}, - { 0x0202, {1, {0x0203}}}, - { 0x0204, {1, {0x0205}}}, - { 0x0206, {1, {0x0207}}}, - { 0x0208, {1, {0x0209}}}, - { 0x020a, {1, {0x020b}}}, - { 0x020c, {1, {0x020d}}}, - { 0x020e, {1, {0x020f}}}, - { 0x0210, {1, {0x0211}}}, - { 0x0212, {1, {0x0213}}}, - { 0x0214, {1, {0x0215}}}, - { 0x0216, {1, {0x0217}}}, - { 0x0218, {1, {0x0219}}}, - { 0x021a, {1, {0x021b}}}, - { 0x021c, {1, {0x021d}}}, - { 0x021e, {1, {0x021f}}}, - { 0x0220, {1, {0x019e}}}, - { 0x0222, {1, {0x0223}}}, - { 0x0224, {1, {0x0225}}}, - { 0x0226, {1, {0x0227}}}, - { 0x0228, {1, {0x0229}}}, - { 0x022a, {1, {0x022b}}}, - { 0x022c, {1, {0x022d}}}, - { 0x022e, {1, {0x022f}}}, - { 0x0230, {1, {0x0231}}}, - { 0x0232, {1, {0x0233}}}, - { 0x023b, {1, {0x023c}}}, - { 0x023d, {1, {0x019a}}}, - { 0x0241, {1, {0x0294}}}, - { 0x0345, {1, {0x03b9}}}, - { 0x0386, {1, {0x03ac}}}, - { 0x0388, {1, {0x03ad}}}, - { 0x0389, {1, {0x03ae}}}, - { 0x038a, {1, {0x03af}}}, - { 0x038c, {1, {0x03cc}}}, - { 0x038e, {1, {0x03cd}}}, - { 0x038f, {1, {0x03ce}}}, - { 0x0390, {3, {0x03b9, 0x0308, 0x0301}}}, - { 0x0391, {1, {0x03b1}}}, - { 0x0392, {1, {0x03b2}}}, - { 0x0393, {1, {0x03b3}}}, - { 0x0394, {1, {0x03b4}}}, - { 0x0395, {1, {0x03b5}}}, - { 0x0396, {1, {0x03b6}}}, - { 0x0397, {1, {0x03b7}}}, - { 0x0398, {1, {0x03b8}}}, - { 0x0399, {1, {0x03b9}}}, - { 0x039a, {1, {0x03ba}}}, - { 0x039b, {1, {0x03bb}}}, - { 0x039c, {1, {0x03bc}}}, - { 0x039d, {1, {0x03bd}}}, - { 0x039e, {1, {0x03be}}}, - { 0x039f, {1, {0x03bf}}}, - { 0x03a0, {1, {0x03c0}}}, - { 0x03a1, {1, {0x03c1}}}, - { 0x03a3, {1, {0x03c3}}}, - { 0x03a4, {1, {0x03c4}}}, - { 0x03a5, {1, {0x03c5}}}, - { 0x03a6, {1, {0x03c6}}}, - { 0x03a7, {1, {0x03c7}}}, - { 0x03a8, {1, {0x03c8}}}, - { 0x03a9, {1, {0x03c9}}}, - { 0x03aa, {1, {0x03ca}}}, - { 0x03ab, {1, {0x03cb}}}, - { 0x03b0, {3, {0x03c5, 0x0308, 0x0301}}}, - { 0x03c2, {1, {0x03c3}}}, - { 0x03d0, {1, {0x03b2}}}, - { 0x03d1, {1, {0x03b8}}}, - { 0x03d5, {1, {0x03c6}}}, - { 0x03d6, {1, {0x03c0}}}, - { 0x03d8, {1, {0x03d9}}}, - { 0x03da, {1, {0x03db}}}, - { 0x03dc, {1, {0x03dd}}}, - { 0x03de, {1, {0x03df}}}, - { 0x03e0, {1, {0x03e1}}}, - { 0x03e2, {1, {0x03e3}}}, - { 0x03e4, {1, {0x03e5}}}, - { 0x03e6, {1, {0x03e7}}}, - { 0x03e8, {1, {0x03e9}}}, - { 0x03ea, {1, {0x03eb}}}, - { 0x03ec, {1, {0x03ed}}}, - { 0x03ee, {1, {0x03ef}}}, - { 0x03f0, {1, {0x03ba}}}, - { 0x03f1, {1, {0x03c1}}}, - { 0x03f4, {1, {0x03b8}}}, - { 0x03f5, {1, {0x03b5}}}, - { 0x03f7, {1, {0x03f8}}}, - { 0x03f9, {1, {0x03f2}}}, - { 0x03fa, {1, {0x03fb}}}, - { 0x0400, {1, {0x0450}}}, - { 0x0401, {1, {0x0451}}}, - { 0x0402, {1, {0x0452}}}, - { 0x0403, {1, {0x0453}}}, - { 0x0404, {1, {0x0454}}}, - { 0x0405, {1, {0x0455}}}, - { 0x0406, {1, {0x0456}}}, - { 0x0407, {1, {0x0457}}}, - { 0x0408, {1, {0x0458}}}, - { 0x0409, {1, {0x0459}}}, - { 0x040a, {1, {0x045a}}}, - { 0x040b, {1, {0x045b}}}, - { 0x040c, {1, {0x045c}}}, - { 0x040d, {1, {0x045d}}}, - { 0x040e, {1, {0x045e}}}, - { 0x040f, {1, {0x045f}}}, - { 0x0410, {1, {0x0430}}}, - { 0x0411, {1, {0x0431}}}, - { 0x0412, {1, {0x0432}}}, - { 0x0413, {1, {0x0433}}}, - { 0x0414, {1, {0x0434}}}, - { 0x0415, {1, {0x0435}}}, - { 0x0416, {1, {0x0436}}}, - { 0x0417, {1, {0x0437}}}, - { 0x0418, {1, {0x0438}}}, - { 0x0419, {1, {0x0439}}}, - { 0x041a, {1, {0x043a}}}, - { 0x041b, {1, {0x043b}}}, - { 0x041c, {1, {0x043c}}}, - { 0x041d, {1, {0x043d}}}, - { 0x041e, {1, {0x043e}}}, - { 0x041f, {1, {0x043f}}}, - { 0x0420, {1, {0x0440}}}, - { 0x0421, {1, {0x0441}}}, - { 0x0422, {1, {0x0442}}}, - { 0x0423, {1, {0x0443}}}, - { 0x0424, {1, {0x0444}}}, - { 0x0425, {1, {0x0445}}}, - { 0x0426, {1, {0x0446}}}, - { 0x0427, {1, {0x0447}}}, - { 0x0428, {1, {0x0448}}}, - { 0x0429, {1, {0x0449}}}, - { 0x042a, {1, {0x044a}}}, - { 0x042b, {1, {0x044b}}}, - { 0x042c, {1, {0x044c}}}, - { 0x042d, {1, {0x044d}}}, - { 0x042e, {1, {0x044e}}}, - { 0x042f, {1, {0x044f}}}, - { 0x0460, {1, {0x0461}}}, - { 0x0462, {1, {0x0463}}}, - { 0x0464, {1, {0x0465}}}, - { 0x0466, {1, {0x0467}}}, - { 0x0468, {1, {0x0469}}}, - { 0x046a, {1, {0x046b}}}, - { 0x046c, {1, {0x046d}}}, - { 0x046e, {1, {0x046f}}}, - { 0x0470, {1, {0x0471}}}, - { 0x0472, {1, {0x0473}}}, - { 0x0474, {1, {0x0475}}}, - { 0x0476, {1, {0x0477}}}, - { 0x0478, {1, {0x0479}}}, - { 0x047a, {1, {0x047b}}}, - { 0x047c, {1, {0x047d}}}, - { 0x047e, {1, {0x047f}}}, - { 0x0480, {1, {0x0481}}}, - { 0x048a, {1, {0x048b}}}, - { 0x048c, {1, {0x048d}}}, - { 0x048e, {1, {0x048f}}}, - { 0x0490, {1, {0x0491}}}, - { 0x0492, {1, {0x0493}}}, - { 0x0494, {1, {0x0495}}}, - { 0x0496, {1, {0x0497}}}, - { 0x0498, {1, {0x0499}}}, - { 0x049a, {1, {0x049b}}}, - { 0x049c, {1, {0x049d}}}, - { 0x049e, {1, {0x049f}}}, - { 0x04a0, {1, {0x04a1}}}, - { 0x04a2, {1, {0x04a3}}}, - { 0x04a4, {1, {0x04a5}}}, - { 0x04a6, {1, {0x04a7}}}, - { 0x04a8, {1, {0x04a9}}}, - { 0x04aa, {1, {0x04ab}}}, - { 0x04ac, {1, {0x04ad}}}, - { 0x04ae, {1, {0x04af}}}, - { 0x04b0, {1, {0x04b1}}}, - { 0x04b2, {1, {0x04b3}}}, - { 0x04b4, {1, {0x04b5}}}, - { 0x04b6, {1, {0x04b7}}}, - { 0x04b8, {1, {0x04b9}}}, - { 0x04ba, {1, {0x04bb}}}, - { 0x04bc, {1, {0x04bd}}}, - { 0x04be, {1, {0x04bf}}}, - { 0x04c1, {1, {0x04c2}}}, - { 0x04c3, {1, {0x04c4}}}, - { 0x04c5, {1, {0x04c6}}}, - { 0x04c7, {1, {0x04c8}}}, - { 0x04c9, {1, {0x04ca}}}, - { 0x04cb, {1, {0x04cc}}}, - { 0x04cd, {1, {0x04ce}}}, - { 0x04d0, {1, {0x04d1}}}, - { 0x04d2, {1, {0x04d3}}}, - { 0x04d4, {1, {0x04d5}}}, - { 0x04d6, {1, {0x04d7}}}, - { 0x04d8, {1, {0x04d9}}}, - { 0x04da, {1, {0x04db}}}, - { 0x04dc, {1, {0x04dd}}}, - { 0x04de, {1, {0x04df}}}, - { 0x04e0, {1, {0x04e1}}}, - { 0x04e2, {1, {0x04e3}}}, - { 0x04e4, {1, {0x04e5}}}, - { 0x04e6, {1, {0x04e7}}}, - { 0x04e8, {1, {0x04e9}}}, - { 0x04ea, {1, {0x04eb}}}, - { 0x04ec, {1, {0x04ed}}}, - { 0x04ee, {1, {0x04ef}}}, - { 0x04f0, {1, {0x04f1}}}, - { 0x04f2, {1, {0x04f3}}}, - { 0x04f4, {1, {0x04f5}}}, - { 0x04f6, {1, {0x04f7}}}, - { 0x04f8, {1, {0x04f9}}}, - { 0x0500, {1, {0x0501}}}, - { 0x0502, {1, {0x0503}}}, - { 0x0504, {1, {0x0505}}}, - { 0x0506, {1, {0x0507}}}, - { 0x0508, {1, {0x0509}}}, - { 0x050a, {1, {0x050b}}}, - { 0x050c, {1, {0x050d}}}, - { 0x050e, {1, {0x050f}}}, - { 0x0531, {1, {0x0561}}}, - { 0x0532, {1, {0x0562}}}, - { 0x0533, {1, {0x0563}}}, - { 0x0534, {1, {0x0564}}}, - { 0x0535, {1, {0x0565}}}, - { 0x0536, {1, {0x0566}}}, - { 0x0537, {1, {0x0567}}}, - { 0x0538, {1, {0x0568}}}, - { 0x0539, {1, {0x0569}}}, - { 0x053a, {1, {0x056a}}}, - { 0x053b, {1, {0x056b}}}, - { 0x053c, {1, {0x056c}}}, - { 0x053d, {1, {0x056d}}}, - { 0x053e, {1, {0x056e}}}, - { 0x053f, {1, {0x056f}}}, - { 0x0540, {1, {0x0570}}}, - { 0x0541, {1, {0x0571}}}, - { 0x0542, {1, {0x0572}}}, - { 0x0543, {1, {0x0573}}}, - { 0x0544, {1, {0x0574}}}, - { 0x0545, {1, {0x0575}}}, - { 0x0546, {1, {0x0576}}}, - { 0x0547, {1, {0x0577}}}, - { 0x0548, {1, {0x0578}}}, - { 0x0549, {1, {0x0579}}}, - { 0x054a, {1, {0x057a}}}, - { 0x054b, {1, {0x057b}}}, - { 0x054c, {1, {0x057c}}}, - { 0x054d, {1, {0x057d}}}, - { 0x054e, {1, {0x057e}}}, - { 0x054f, {1, {0x057f}}}, - { 0x0550, {1, {0x0580}}}, - { 0x0551, {1, {0x0581}}}, - { 0x0552, {1, {0x0582}}}, - { 0x0553, {1, {0x0583}}}, - { 0x0554, {1, {0x0584}}}, - { 0x0555, {1, {0x0585}}}, - { 0x0556, {1, {0x0586}}}, - { 0x0587, {2, {0x0565, 0x0582}}}, - { 0x10a0, {1, {0x2d00}}}, - { 0x10a1, {1, {0x2d01}}}, - { 0x10a2, {1, {0x2d02}}}, - { 0x10a3, {1, {0x2d03}}}, - { 0x10a4, {1, {0x2d04}}}, - { 0x10a5, {1, {0x2d05}}}, - { 0x10a6, {1, {0x2d06}}}, - { 0x10a7, {1, {0x2d07}}}, - { 0x10a8, {1, {0x2d08}}}, - { 0x10a9, {1, {0x2d09}}}, - { 0x10aa, {1, {0x2d0a}}}, - { 0x10ab, {1, {0x2d0b}}}, - { 0x10ac, {1, {0x2d0c}}}, - { 0x10ad, {1, {0x2d0d}}}, - { 0x10ae, {1, {0x2d0e}}}, - { 0x10af, {1, {0x2d0f}}}, - { 0x10b0, {1, {0x2d10}}}, - { 0x10b1, {1, {0x2d11}}}, - { 0x10b2, {1, {0x2d12}}}, - { 0x10b3, {1, {0x2d13}}}, - { 0x10b4, {1, {0x2d14}}}, - { 0x10b5, {1, {0x2d15}}}, - { 0x10b6, {1, {0x2d16}}}, - { 0x10b7, {1, {0x2d17}}}, - { 0x10b8, {1, {0x2d18}}}, - { 0x10b9, {1, {0x2d19}}}, - { 0x10ba, {1, {0x2d1a}}}, - { 0x10bb, {1, {0x2d1b}}}, - { 0x10bc, {1, {0x2d1c}}}, - { 0x10bd, {1, {0x2d1d}}}, - { 0x10be, {1, {0x2d1e}}}, - { 0x10bf, {1, {0x2d1f}}}, - { 0x10c0, {1, {0x2d20}}}, - { 0x10c1, {1, {0x2d21}}}, - { 0x10c2, {1, {0x2d22}}}, - { 0x10c3, {1, {0x2d23}}}, - { 0x10c4, {1, {0x2d24}}}, - { 0x10c5, {1, {0x2d25}}}, - { 0x1e00, {1, {0x1e01}}}, - { 0x1e02, {1, {0x1e03}}}, - { 0x1e04, {1, {0x1e05}}}, - { 0x1e06, {1, {0x1e07}}}, - { 0x1e08, {1, {0x1e09}}}, - { 0x1e0a, {1, {0x1e0b}}}, - { 0x1e0c, {1, {0x1e0d}}}, - { 0x1e0e, {1, {0x1e0f}}}, - { 0x1e10, {1, {0x1e11}}}, - { 0x1e12, {1, {0x1e13}}}, - { 0x1e14, {1, {0x1e15}}}, - { 0x1e16, {1, {0x1e17}}}, - { 0x1e18, {1, {0x1e19}}}, - { 0x1e1a, {1, {0x1e1b}}}, - { 0x1e1c, {1, {0x1e1d}}}, - { 0x1e1e, {1, {0x1e1f}}}, - { 0x1e20, {1, {0x1e21}}}, - { 0x1e22, {1, {0x1e23}}}, - { 0x1e24, {1, {0x1e25}}}, - { 0x1e26, {1, {0x1e27}}}, - { 0x1e28, {1, {0x1e29}}}, - { 0x1e2a, {1, {0x1e2b}}}, - { 0x1e2c, {1, {0x1e2d}}}, - { 0x1e2e, {1, {0x1e2f}}}, - { 0x1e30, {1, {0x1e31}}}, - { 0x1e32, {1, {0x1e33}}}, - { 0x1e34, {1, {0x1e35}}}, - { 0x1e36, {1, {0x1e37}}}, - { 0x1e38, {1, {0x1e39}}}, - { 0x1e3a, {1, {0x1e3b}}}, - { 0x1e3c, {1, {0x1e3d}}}, - { 0x1e3e, {1, {0x1e3f}}}, - { 0x1e40, {1, {0x1e41}}}, - { 0x1e42, {1, {0x1e43}}}, - { 0x1e44, {1, {0x1e45}}}, - { 0x1e46, {1, {0x1e47}}}, - { 0x1e48, {1, {0x1e49}}}, - { 0x1e4a, {1, {0x1e4b}}}, - { 0x1e4c, {1, {0x1e4d}}}, - { 0x1e4e, {1, {0x1e4f}}}, - { 0x1e50, {1, {0x1e51}}}, - { 0x1e52, {1, {0x1e53}}}, - { 0x1e54, {1, {0x1e55}}}, - { 0x1e56, {1, {0x1e57}}}, - { 0x1e58, {1, {0x1e59}}}, - { 0x1e5a, {1, {0x1e5b}}}, - { 0x1e5c, {1, {0x1e5d}}}, - { 0x1e5e, {1, {0x1e5f}}}, - { 0x1e60, {1, {0x1e61}}}, - { 0x1e62, {1, {0x1e63}}}, - { 0x1e64, {1, {0x1e65}}}, - { 0x1e66, {1, {0x1e67}}}, - { 0x1e68, {1, {0x1e69}}}, - { 0x1e6a, {1, {0x1e6b}}}, - { 0x1e6c, {1, {0x1e6d}}}, - { 0x1e6e, {1, {0x1e6f}}}, - { 0x1e70, {1, {0x1e71}}}, - { 0x1e72, {1, {0x1e73}}}, - { 0x1e74, {1, {0x1e75}}}, - { 0x1e76, {1, {0x1e77}}}, - { 0x1e78, {1, {0x1e79}}}, - { 0x1e7a, {1, {0x1e7b}}}, - { 0x1e7c, {1, {0x1e7d}}}, - { 0x1e7e, {1, {0x1e7f}}}, - { 0x1e80, {1, {0x1e81}}}, - { 0x1e82, {1, {0x1e83}}}, - { 0x1e84, {1, {0x1e85}}}, - { 0x1e86, {1, {0x1e87}}}, - { 0x1e88, {1, {0x1e89}}}, - { 0x1e8a, {1, {0x1e8b}}}, - { 0x1e8c, {1, {0x1e8d}}}, - { 0x1e8e, {1, {0x1e8f}}}, - { 0x1e90, {1, {0x1e91}}}, - { 0x1e92, {1, {0x1e93}}}, - { 0x1e94, {1, {0x1e95}}}, - { 0x1e96, {2, {0x0068, 0x0331}}}, - { 0x1e97, {2, {0x0074, 0x0308}}}, - { 0x1e98, {2, {0x0077, 0x030a}}}, - { 0x1e99, {2, {0x0079, 0x030a}}}, - { 0x1e9a, {2, {0x0061, 0x02be}}}, - { 0x1e9b, {1, {0x1e61}}}, - { 0x1ea0, {1, {0x1ea1}}}, - { 0x1ea2, {1, {0x1ea3}}}, - { 0x1ea4, {1, {0x1ea5}}}, - { 0x1ea6, {1, {0x1ea7}}}, - { 0x1ea8, {1, {0x1ea9}}}, - { 0x1eaa, {1, {0x1eab}}}, - { 0x1eac, {1, {0x1ead}}}, - { 0x1eae, {1, {0x1eaf}}}, - { 0x1eb0, {1, {0x1eb1}}}, - { 0x1eb2, {1, {0x1eb3}}}, - { 0x1eb4, {1, {0x1eb5}}}, - { 0x1eb6, {1, {0x1eb7}}}, - { 0x1eb8, {1, {0x1eb9}}}, - { 0x1eba, {1, {0x1ebb}}}, - { 0x1ebc, {1, {0x1ebd}}}, - { 0x1ebe, {1, {0x1ebf}}}, - { 0x1ec0, {1, {0x1ec1}}}, - { 0x1ec2, {1, {0x1ec3}}}, - { 0x1ec4, {1, {0x1ec5}}}, - { 0x1ec6, {1, {0x1ec7}}}, - { 0x1ec8, {1, {0x1ec9}}}, - { 0x1eca, {1, {0x1ecb}}}, - { 0x1ecc, {1, {0x1ecd}}}, - { 0x1ece, {1, {0x1ecf}}}, - { 0x1ed0, {1, {0x1ed1}}}, - { 0x1ed2, {1, {0x1ed3}}}, - { 0x1ed4, {1, {0x1ed5}}}, - { 0x1ed6, {1, {0x1ed7}}}, - { 0x1ed8, {1, {0x1ed9}}}, - { 0x1eda, {1, {0x1edb}}}, - { 0x1edc, {1, {0x1edd}}}, - { 0x1ede, {1, {0x1edf}}}, - { 0x1ee0, {1, {0x1ee1}}}, - { 0x1ee2, {1, {0x1ee3}}}, - { 0x1ee4, {1, {0x1ee5}}}, - { 0x1ee6, {1, {0x1ee7}}}, - { 0x1ee8, {1, {0x1ee9}}}, - { 0x1eea, {1, {0x1eeb}}}, - { 0x1eec, {1, {0x1eed}}}, - { 0x1eee, {1, {0x1eef}}}, - { 0x1ef0, {1, {0x1ef1}}}, - { 0x1ef2, {1, {0x1ef3}}}, - { 0x1ef4, {1, {0x1ef5}}}, - { 0x1ef6, {1, {0x1ef7}}}, - { 0x1ef8, {1, {0x1ef9}}}, - { 0x1f08, {1, {0x1f00}}}, - { 0x1f09, {1, {0x1f01}}}, - { 0x1f0a, {1, {0x1f02}}}, - { 0x1f0b, {1, {0x1f03}}}, - { 0x1f0c, {1, {0x1f04}}}, - { 0x1f0d, {1, {0x1f05}}}, - { 0x1f0e, {1, {0x1f06}}}, - { 0x1f0f, {1, {0x1f07}}}, - { 0x1f18, {1, {0x1f10}}}, - { 0x1f19, {1, {0x1f11}}}, - { 0x1f1a, {1, {0x1f12}}}, - { 0x1f1b, {1, {0x1f13}}}, - { 0x1f1c, {1, {0x1f14}}}, - { 0x1f1d, {1, {0x1f15}}}, - { 0x1f28, {1, {0x1f20}}}, - { 0x1f29, {1, {0x1f21}}}, - { 0x1f2a, {1, {0x1f22}}}, - { 0x1f2b, {1, {0x1f23}}}, - { 0x1f2c, {1, {0x1f24}}}, - { 0x1f2d, {1, {0x1f25}}}, - { 0x1f2e, {1, {0x1f26}}}, - { 0x1f2f, {1, {0x1f27}}}, - { 0x1f38, {1, {0x1f30}}}, - { 0x1f39, {1, {0x1f31}}}, - { 0x1f3a, {1, {0x1f32}}}, - { 0x1f3b, {1, {0x1f33}}}, - { 0x1f3c, {1, {0x1f34}}}, - { 0x1f3d, {1, {0x1f35}}}, - { 0x1f3e, {1, {0x1f36}}}, - { 0x1f3f, {1, {0x1f37}}}, - { 0x1f48, {1, {0x1f40}}}, - { 0x1f49, {1, {0x1f41}}}, - { 0x1f4a, {1, {0x1f42}}}, - { 0x1f4b, {1, {0x1f43}}}, - { 0x1f4c, {1, {0x1f44}}}, - { 0x1f4d, {1, {0x1f45}}}, - { 0x1f50, {2, {0x03c5, 0x0313}}}, - { 0x1f52, {3, {0x03c5, 0x0313, 0x0300}}}, - { 0x1f54, {3, {0x03c5, 0x0313, 0x0301}}}, - { 0x1f56, {3, {0x03c5, 0x0313, 0x0342}}}, - { 0x1f59, {1, {0x1f51}}}, - { 0x1f5b, {1, {0x1f53}}}, - { 0x1f5d, {1, {0x1f55}}}, - { 0x1f5f, {1, {0x1f57}}}, - { 0x1f68, {1, {0x1f60}}}, - { 0x1f69, {1, {0x1f61}}}, - { 0x1f6a, {1, {0x1f62}}}, - { 0x1f6b, {1, {0x1f63}}}, - { 0x1f6c, {1, {0x1f64}}}, - { 0x1f6d, {1, {0x1f65}}}, - { 0x1f6e, {1, {0x1f66}}}, - { 0x1f6f, {1, {0x1f67}}}, - { 0x1f80, {2, {0x1f00, 0x03b9}}}, - { 0x1f81, {2, {0x1f01, 0x03b9}}}, - { 0x1f82, {2, {0x1f02, 0x03b9}}}, - { 0x1f83, {2, {0x1f03, 0x03b9}}}, - { 0x1f84, {2, {0x1f04, 0x03b9}}}, - { 0x1f85, {2, {0x1f05, 0x03b9}}}, - { 0x1f86, {2, {0x1f06, 0x03b9}}}, - { 0x1f87, {2, {0x1f07, 0x03b9}}}, - { 0x1f88, {2, {0x1f00, 0x03b9}}}, - { 0x1f89, {2, {0x1f01, 0x03b9}}}, - { 0x1f8a, {2, {0x1f02, 0x03b9}}}, - { 0x1f8b, {2, {0x1f03, 0x03b9}}}, - { 0x1f8c, {2, {0x1f04, 0x03b9}}}, - { 0x1f8d, {2, {0x1f05, 0x03b9}}}, - { 0x1f8e, {2, {0x1f06, 0x03b9}}}, - { 0x1f8f, {2, {0x1f07, 0x03b9}}}, - { 0x1f90, {2, {0x1f20, 0x03b9}}}, - { 0x1f91, {2, {0x1f21, 0x03b9}}}, - { 0x1f92, {2, {0x1f22, 0x03b9}}}, - { 0x1f93, {2, {0x1f23, 0x03b9}}}, - { 0x1f94, {2, {0x1f24, 0x03b9}}}, - { 0x1f95, {2, {0x1f25, 0x03b9}}}, - { 0x1f96, {2, {0x1f26, 0x03b9}}}, - { 0x1f97, {2, {0x1f27, 0x03b9}}}, - { 0x1f98, {2, {0x1f20, 0x03b9}}}, - { 0x1f99, {2, {0x1f21, 0x03b9}}}, - { 0x1f9a, {2, {0x1f22, 0x03b9}}}, - { 0x1f9b, {2, {0x1f23, 0x03b9}}}, - { 0x1f9c, {2, {0x1f24, 0x03b9}}}, - { 0x1f9d, {2, {0x1f25, 0x03b9}}}, - { 0x1f9e, {2, {0x1f26, 0x03b9}}}, - { 0x1f9f, {2, {0x1f27, 0x03b9}}}, - { 0x1fa0, {2, {0x1f60, 0x03b9}}}, - { 0x1fa1, {2, {0x1f61, 0x03b9}}}, - { 0x1fa2, {2, {0x1f62, 0x03b9}}}, - { 0x1fa3, {2, {0x1f63, 0x03b9}}}, - { 0x1fa4, {2, {0x1f64, 0x03b9}}}, - { 0x1fa5, {2, {0x1f65, 0x03b9}}}, - { 0x1fa6, {2, {0x1f66, 0x03b9}}}, - { 0x1fa7, {2, {0x1f67, 0x03b9}}}, - { 0x1fa8, {2, {0x1f60, 0x03b9}}}, - { 0x1fa9, {2, {0x1f61, 0x03b9}}}, - { 0x1faa, {2, {0x1f62, 0x03b9}}}, - { 0x1fab, {2, {0x1f63, 0x03b9}}}, - { 0x1fac, {2, {0x1f64, 0x03b9}}}, - { 0x1fad, {2, {0x1f65, 0x03b9}}}, - { 0x1fae, {2, {0x1f66, 0x03b9}}}, - { 0x1faf, {2, {0x1f67, 0x03b9}}}, - { 0x1fb2, {2, {0x1f70, 0x03b9}}}, - { 0x1fb3, {2, {0x03b1, 0x03b9}}}, - { 0x1fb4, {2, {0x03ac, 0x03b9}}}, - { 0x1fb6, {2, {0x03b1, 0x0342}}}, - { 0x1fb7, {3, {0x03b1, 0x0342, 0x03b9}}}, - { 0x1fb8, {1, {0x1fb0}}}, - { 0x1fb9, {1, {0x1fb1}}}, - { 0x1fba, {1, {0x1f70}}}, - { 0x1fbb, {1, {0x1f71}}}, - { 0x1fbc, {2, {0x03b1, 0x03b9}}}, - { 0x1fbe, {1, {0x03b9}}}, - { 0x1fc2, {2, {0x1f74, 0x03b9}}}, - { 0x1fc3, {2, {0x03b7, 0x03b9}}}, - { 0x1fc4, {2, {0x03ae, 0x03b9}}}, - { 0x1fc6, {2, {0x03b7, 0x0342}}}, - { 0x1fc7, {3, {0x03b7, 0x0342, 0x03b9}}}, - { 0x1fc8, {1, {0x1f72}}}, - { 0x1fc9, {1, {0x1f73}}}, - { 0x1fca, {1, {0x1f74}}}, - { 0x1fcb, {1, {0x1f75}}}, - { 0x1fcc, {2, {0x03b7, 0x03b9}}}, - { 0x1fd2, {3, {0x03b9, 0x0308, 0x0300}}}, - { 0x1fd3, {3, {0x03b9, 0x0308, 0x0301}}}, - { 0x1fd6, {2, {0x03b9, 0x0342}}}, - { 0x1fd7, {3, {0x03b9, 0x0308, 0x0342}}}, - { 0x1fd8, {1, {0x1fd0}}}, - { 0x1fd9, {1, {0x1fd1}}}, - { 0x1fda, {1, {0x1f76}}}, - { 0x1fdb, {1, {0x1f77}}}, - { 0x1fe2, {3, {0x03c5, 0x0308, 0x0300}}}, - { 0x1fe3, {3, {0x03c5, 0x0308, 0x0301}}}, - { 0x1fe4, {2, {0x03c1, 0x0313}}}, - { 0x1fe6, {2, {0x03c5, 0x0342}}}, - { 0x1fe7, {3, {0x03c5, 0x0308, 0x0342}}}, - { 0x1fe8, {1, {0x1fe0}}}, - { 0x1fe9, {1, {0x1fe1}}}, - { 0x1fea, {1, {0x1f7a}}}, - { 0x1feb, {1, {0x1f7b}}}, - { 0x1fec, {1, {0x1fe5}}}, - { 0x1ff2, {2, {0x1f7c, 0x03b9}}}, - { 0x1ff3, {2, {0x03c9, 0x03b9}}}, - { 0x1ff4, {2, {0x03ce, 0x03b9}}}, - { 0x1ff6, {2, {0x03c9, 0x0342}}}, - { 0x1ff7, {3, {0x03c9, 0x0342, 0x03b9}}}, - { 0x1ff8, {1, {0x1f78}}}, - { 0x1ff9, {1, {0x1f79}}}, - { 0x1ffa, {1, {0x1f7c}}}, - { 0x1ffb, {1, {0x1f7d}}}, - { 0x1ffc, {2, {0x03c9, 0x03b9}}}, - { 0x2126, {1, {0x03c9}}}, - { 0x212a, {1, {0x006b}}}, - { 0x212b, {1, {0x00e5}}}, - { 0x2160, {1, {0x2170}}}, - { 0x2161, {1, {0x2171}}}, - { 0x2162, {1, {0x2172}}}, - { 0x2163, {1, {0x2173}}}, - { 0x2164, {1, {0x2174}}}, - { 0x2165, {1, {0x2175}}}, - { 0x2166, {1, {0x2176}}}, - { 0x2167, {1, {0x2177}}}, - { 0x2168, {1, {0x2178}}}, - { 0x2169, {1, {0x2179}}}, - { 0x216a, {1, {0x217a}}}, - { 0x216b, {1, {0x217b}}}, - { 0x216c, {1, {0x217c}}}, - { 0x216d, {1, {0x217d}}}, - { 0x216e, {1, {0x217e}}}, - { 0x216f, {1, {0x217f}}}, - { 0x24b6, {1, {0x24d0}}}, - { 0x24b7, {1, {0x24d1}}}, - { 0x24b8, {1, {0x24d2}}}, - { 0x24b9, {1, {0x24d3}}}, - { 0x24ba, {1, {0x24d4}}}, - { 0x24bb, {1, {0x24d5}}}, - { 0x24bc, {1, {0x24d6}}}, - { 0x24bd, {1, {0x24d7}}}, - { 0x24be, {1, {0x24d8}}}, - { 0x24bf, {1, {0x24d9}}}, - { 0x24c0, {1, {0x24da}}}, - { 0x24c1, {1, {0x24db}}}, - { 0x24c2, {1, {0x24dc}}}, - { 0x24c3, {1, {0x24dd}}}, - { 0x24c4, {1, {0x24de}}}, - { 0x24c5, {1, {0x24df}}}, - { 0x24c6, {1, {0x24e0}}}, - { 0x24c7, {1, {0x24e1}}}, - { 0x24c8, {1, {0x24e2}}}, - { 0x24c9, {1, {0x24e3}}}, - { 0x24ca, {1, {0x24e4}}}, - { 0x24cb, {1, {0x24e5}}}, - { 0x24cc, {1, {0x24e6}}}, - { 0x24cd, {1, {0x24e7}}}, - { 0x24ce, {1, {0x24e8}}}, - { 0x24cf, {1, {0x24e9}}}, - { 0x2c00, {1, {0x2c30}}}, - { 0x2c01, {1, {0x2c31}}}, - { 0x2c02, {1, {0x2c32}}}, - { 0x2c03, {1, {0x2c33}}}, - { 0x2c04, {1, {0x2c34}}}, - { 0x2c05, {1, {0x2c35}}}, - { 0x2c06, {1, {0x2c36}}}, - { 0x2c07, {1, {0x2c37}}}, - { 0x2c08, {1, {0x2c38}}}, - { 0x2c09, {1, {0x2c39}}}, - { 0x2c0a, {1, {0x2c3a}}}, - { 0x2c0b, {1, {0x2c3b}}}, - { 0x2c0c, {1, {0x2c3c}}}, - { 0x2c0d, {1, {0x2c3d}}}, - { 0x2c0e, {1, {0x2c3e}}}, - { 0x2c0f, {1, {0x2c3f}}}, - { 0x2c10, {1, {0x2c40}}}, - { 0x2c11, {1, {0x2c41}}}, - { 0x2c12, {1, {0x2c42}}}, - { 0x2c13, {1, {0x2c43}}}, - { 0x2c14, {1, {0x2c44}}}, - { 0x2c15, {1, {0x2c45}}}, - { 0x2c16, {1, {0x2c46}}}, - { 0x2c17, {1, {0x2c47}}}, - { 0x2c18, {1, {0x2c48}}}, - { 0x2c19, {1, {0x2c49}}}, - { 0x2c1a, {1, {0x2c4a}}}, - { 0x2c1b, {1, {0x2c4b}}}, - { 0x2c1c, {1, {0x2c4c}}}, - { 0x2c1d, {1, {0x2c4d}}}, - { 0x2c1e, {1, {0x2c4e}}}, - { 0x2c1f, {1, {0x2c4f}}}, - { 0x2c20, {1, {0x2c50}}}, - { 0x2c21, {1, {0x2c51}}}, - { 0x2c22, {1, {0x2c52}}}, - { 0x2c23, {1, {0x2c53}}}, - { 0x2c24, {1, {0x2c54}}}, - { 0x2c25, {1, {0x2c55}}}, - { 0x2c26, {1, {0x2c56}}}, - { 0x2c27, {1, {0x2c57}}}, - { 0x2c28, {1, {0x2c58}}}, - { 0x2c29, {1, {0x2c59}}}, - { 0x2c2a, {1, {0x2c5a}}}, - { 0x2c2b, {1, {0x2c5b}}}, - { 0x2c2c, {1, {0x2c5c}}}, - { 0x2c2d, {1, {0x2c5d}}}, - { 0x2c2e, {1, {0x2c5e}}}, - { 0x2c80, {1, {0x2c81}}}, - { 0x2c82, {1, {0x2c83}}}, - { 0x2c84, {1, {0x2c85}}}, - { 0x2c86, {1, {0x2c87}}}, - { 0x2c88, {1, {0x2c89}}}, - { 0x2c8a, {1, {0x2c8b}}}, - { 0x2c8c, {1, {0x2c8d}}}, - { 0x2c8e, {1, {0x2c8f}}}, - { 0x2c90, {1, {0x2c91}}}, - { 0x2c92, {1, {0x2c93}}}, - { 0x2c94, {1, {0x2c95}}}, - { 0x2c96, {1, {0x2c97}}}, - { 0x2c98, {1, {0x2c99}}}, - { 0x2c9a, {1, {0x2c9b}}}, - { 0x2c9c, {1, {0x2c9d}}}, - { 0x2c9e, {1, {0x2c9f}}}, - { 0x2ca0, {1, {0x2ca1}}}, - { 0x2ca2, {1, {0x2ca3}}}, - { 0x2ca4, {1, {0x2ca5}}}, - { 0x2ca6, {1, {0x2ca7}}}, - { 0x2ca8, {1, {0x2ca9}}}, - { 0x2caa, {1, {0x2cab}}}, - { 0x2cac, {1, {0x2cad}}}, - { 0x2cae, {1, {0x2caf}}}, - { 0x2cb0, {1, {0x2cb1}}}, - { 0x2cb2, {1, {0x2cb3}}}, - { 0x2cb4, {1, {0x2cb5}}}, - { 0x2cb6, {1, {0x2cb7}}}, - { 0x2cb8, {1, {0x2cb9}}}, - { 0x2cba, {1, {0x2cbb}}}, - { 0x2cbc, {1, {0x2cbd}}}, - { 0x2cbe, {1, {0x2cbf}}}, - { 0x2cc0, {1, {0x2cc1}}}, - { 0x2cc2, {1, {0x2cc3}}}, - { 0x2cc4, {1, {0x2cc5}}}, - { 0x2cc6, {1, {0x2cc7}}}, - { 0x2cc8, {1, {0x2cc9}}}, - { 0x2cca, {1, {0x2ccb}}}, - { 0x2ccc, {1, {0x2ccd}}}, - { 0x2cce, {1, {0x2ccf}}}, - { 0x2cd0, {1, {0x2cd1}}}, - { 0x2cd2, {1, {0x2cd3}}}, - { 0x2cd4, {1, {0x2cd5}}}, - { 0x2cd6, {1, {0x2cd7}}}, - { 0x2cd8, {1, {0x2cd9}}}, - { 0x2cda, {1, {0x2cdb}}}, - { 0x2cdc, {1, {0x2cdd}}}, - { 0x2cde, {1, {0x2cdf}}}, - { 0x2ce0, {1, {0x2ce1}}}, - { 0x2ce2, {1, {0x2ce3}}}, - { 0xfb00, {2, {0x0066, 0x0066}}}, - { 0xfb01, {2, {0x0066, 0x0069}}}, - { 0xfb02, {2, {0x0066, 0x006c}}}, - { 0xfb03, {3, {0x0066, 0x0066, 0x0069}}}, - { 0xfb04, {3, {0x0066, 0x0066, 0x006c}}}, - { 0xfb05, {2, {0x0073, 0x0074}}}, - { 0xfb06, {2, {0x0073, 0x0074}}}, - { 0xfb13, {2, {0x0574, 0x0576}}}, - { 0xfb14, {2, {0x0574, 0x0565}}}, - { 0xfb15, {2, {0x0574, 0x056b}}}, - { 0xfb16, {2, {0x057e, 0x0576}}}, - { 0xfb17, {2, {0x0574, 0x056d}}}, - { 0xff21, {1, {0xff41}}}, - { 0xff22, {1, {0xff42}}}, - { 0xff23, {1, {0xff43}}}, - { 0xff24, {1, {0xff44}}}, - { 0xff25, {1, {0xff45}}}, - { 0xff26, {1, {0xff46}}}, - { 0xff27, {1, {0xff47}}}, - { 0xff28, {1, {0xff48}}}, - { 0xff29, {1, {0xff49}}}, - { 0xff2a, {1, {0xff4a}}}, - { 0xff2b, {1, {0xff4b}}}, - { 0xff2c, {1, {0xff4c}}}, - { 0xff2d, {1, {0xff4d}}}, - { 0xff2e, {1, {0xff4e}}}, - { 0xff2f, {1, {0xff4f}}}, - { 0xff30, {1, {0xff50}}}, - { 0xff31, {1, {0xff51}}}, - { 0xff32, {1, {0xff52}}}, - { 0xff33, {1, {0xff53}}}, - { 0xff34, {1, {0xff54}}}, - { 0xff35, {1, {0xff55}}}, - { 0xff36, {1, {0xff56}}}, - { 0xff37, {1, {0xff57}}}, - { 0xff38, {1, {0xff58}}}, - { 0xff39, {1, {0xff59}}}, - { 0xff3a, {1, {0xff5a}}}, - { 0x10400, {1, {0x10428}}}, - { 0x10401, {1, {0x10429}}}, - { 0x10402, {1, {0x1042a}}}, - { 0x10403, {1, {0x1042b}}}, - { 0x10404, {1, {0x1042c}}}, - { 0x10405, {1, {0x1042d}}}, - { 0x10406, {1, {0x1042e}}}, - { 0x10407, {1, {0x1042f}}}, - { 0x10408, {1, {0x10430}}}, - { 0x10409, {1, {0x10431}}}, - { 0x1040a, {1, {0x10432}}}, - { 0x1040b, {1, {0x10433}}}, - { 0x1040c, {1, {0x10434}}}, - { 0x1040d, {1, {0x10435}}}, - { 0x1040e, {1, {0x10436}}}, - { 0x1040f, {1, {0x10437}}}, - { 0x10410, {1, {0x10438}}}, - { 0x10411, {1, {0x10439}}}, - { 0x10412, {1, {0x1043a}}}, - { 0x10413, {1, {0x1043b}}}, - { 0x10414, {1, {0x1043c}}}, - { 0x10415, {1, {0x1043d}}}, - { 0x10416, {1, {0x1043e}}}, - { 0x10417, {1, {0x1043f}}}, - { 0x10418, {1, {0x10440}}}, - { 0x10419, {1, {0x10441}}}, - { 0x1041a, {1, {0x10442}}}, - { 0x1041b, {1, {0x10443}}}, - { 0x1041c, {1, {0x10444}}}, - { 0x1041d, {1, {0x10445}}}, - { 0x1041e, {1, {0x10446}}}, - { 0x1041f, {1, {0x10447}}}, - { 0x10420, {1, {0x10448}}}, - { 0x10421, {1, {0x10449}}}, - { 0x10422, {1, {0x1044a}}}, - { 0x10423, {1, {0x1044b}}}, - { 0x10424, {1, {0x1044c}}}, - { 0x10425, {1, {0x1044d}}}, - { 0x10426, {1, {0x1044e}}}, - { 0x10427, {1, {0x1044f}}} -}; - -static const CaseFold_11_Type CaseFold_Locale[] = { - { 0x0049, {1, {0x0069}}}, - { 0x0130, {2, {0x0069, 0x0307}}} -}; - -static const CaseUnfold_11_Type CaseUnfold_11[] = { - { 0x0061, {1, {0x0041 }}}, - { 0x0062, {1, {0x0042 }}}, - { 0x0063, {1, {0x0043 }}}, - { 0x0064, {1, {0x0044 }}}, - { 0x0065, {1, {0x0045 }}}, - { 0x0066, {1, {0x0046 }}}, - { 0x0067, {1, {0x0047 }}}, - { 0x0068, {1, {0x0048 }}}, - { 0x006a, {1, {0x004a }}}, - { 0x006b, {2, {0x212a, 0x004b }}}, - { 0x006c, {1, {0x004c }}}, - { 0x006d, {1, {0x004d }}}, - { 0x006e, {1, {0x004e }}}, - { 0x006f, {1, {0x004f }}}, - { 0x0070, {1, {0x0050 }}}, - { 0x0071, {1, {0x0051 }}}, - { 0x0072, {1, {0x0052 }}}, - { 0x0073, {2, {0x0053, 0x017f }}}, - { 0x0074, {1, {0x0054 }}}, - { 0x0075, {1, {0x0055 }}}, - { 0x0076, {1, {0x0056 }}}, - { 0x0077, {1, {0x0057 }}}, - { 0x0078, {1, {0x0058 }}}, - { 0x0079, {1, {0x0059 }}}, - { 0x007a, {1, {0x005a }}}, - { 0x00e0, {1, {0x00c0 }}}, - { 0x00e1, {1, {0x00c1 }}}, - { 0x00e2, {1, {0x00c2 }}}, - { 0x00e3, {1, {0x00c3 }}}, - { 0x00e4, {1, {0x00c4 }}}, - { 0x00e5, {2, {0x212b, 0x00c5 }}}, - { 0x00e6, {1, {0x00c6 }}}, - { 0x00e7, {1, {0x00c7 }}}, - { 0x00e8, {1, {0x00c8 }}}, - { 0x00e9, {1, {0x00c9 }}}, - { 0x00ea, {1, {0x00ca }}}, - { 0x00eb, {1, {0x00cb }}}, - { 0x00ec, {1, {0x00cc }}}, - { 0x00ed, {1, {0x00cd }}}, - { 0x00ee, {1, {0x00ce }}}, - { 0x00ef, {1, {0x00cf }}}, - { 0x00f0, {1, {0x00d0 }}}, - { 0x00f1, {1, {0x00d1 }}}, - { 0x00f2, {1, {0x00d2 }}}, - { 0x00f3, {1, {0x00d3 }}}, - { 0x00f4, {1, {0x00d4 }}}, - { 0x00f5, {1, {0x00d5 }}}, - { 0x00f6, {1, {0x00d6 }}}, - { 0x00f8, {1, {0x00d8 }}}, - { 0x00f9, {1, {0x00d9 }}}, - { 0x00fa, {1, {0x00da }}}, - { 0x00fb, {1, {0x00db }}}, - { 0x00fc, {1, {0x00dc }}}, - { 0x00fd, {1, {0x00dd }}}, - { 0x00fe, {1, {0x00de }}}, - { 0x00ff, {1, {0x0178 }}}, - { 0x0101, {1, {0x0100 }}}, - { 0x0103, {1, {0x0102 }}}, - { 0x0105, {1, {0x0104 }}}, - { 0x0107, {1, {0x0106 }}}, - { 0x0109, {1, {0x0108 }}}, - { 0x010b, {1, {0x010a }}}, - { 0x010d, {1, {0x010c }}}, - { 0x010f, {1, {0x010e }}}, - { 0x0111, {1, {0x0110 }}}, - { 0x0113, {1, {0x0112 }}}, - { 0x0115, {1, {0x0114 }}}, - { 0x0117, {1, {0x0116 }}}, - { 0x0119, {1, {0x0118 }}}, - { 0x011b, {1, {0x011a }}}, - { 0x011d, {1, {0x011c }}}, - { 0x011f, {1, {0x011e }}}, - { 0x0121, {1, {0x0120 }}}, - { 0x0123, {1, {0x0122 }}}, - { 0x0125, {1, {0x0124 }}}, - { 0x0127, {1, {0x0126 }}}, - { 0x0129, {1, {0x0128 }}}, - { 0x012b, {1, {0x012a }}}, - { 0x012d, {1, {0x012c }}}, - { 0x012f, {1, {0x012e }}}, - { 0x0133, {1, {0x0132 }}}, - { 0x0135, {1, {0x0134 }}}, - { 0x0137, {1, {0x0136 }}}, - { 0x013a, {1, {0x0139 }}}, - { 0x013c, {1, {0x013b }}}, - { 0x013e, {1, {0x013d }}}, - { 0x0140, {1, {0x013f }}}, - { 0x0142, {1, {0x0141 }}}, - { 0x0144, {1, {0x0143 }}}, - { 0x0146, {1, {0x0145 }}}, - { 0x0148, {1, {0x0147 }}}, - { 0x014b, {1, {0x014a }}}, - { 0x014d, {1, {0x014c }}}, - { 0x014f, {1, {0x014e }}}, - { 0x0151, {1, {0x0150 }}}, - { 0x0153, {1, {0x0152 }}}, - { 0x0155, {1, {0x0154 }}}, - { 0x0157, {1, {0x0156 }}}, - { 0x0159, {1, {0x0158 }}}, - { 0x015b, {1, {0x015a }}}, - { 0x015d, {1, {0x015c }}}, - { 0x015f, {1, {0x015e }}}, - { 0x0161, {1, {0x0160 }}}, - { 0x0163, {1, {0x0162 }}}, - { 0x0165, {1, {0x0164 }}}, - { 0x0167, {1, {0x0166 }}}, - { 0x0169, {1, {0x0168 }}}, - { 0x016b, {1, {0x016a }}}, - { 0x016d, {1, {0x016c }}}, - { 0x016f, {1, {0x016e }}}, - { 0x0171, {1, {0x0170 }}}, - { 0x0173, {1, {0x0172 }}}, - { 0x0175, {1, {0x0174 }}}, - { 0x0177, {1, {0x0176 }}}, - { 0x017a, {1, {0x0179 }}}, - { 0x017c, {1, {0x017b }}}, - { 0x017e, {1, {0x017d }}}, - { 0x0183, {1, {0x0182 }}}, - { 0x0185, {1, {0x0184 }}}, - { 0x0188, {1, {0x0187 }}}, - { 0x018c, {1, {0x018b }}}, - { 0x0192, {1, {0x0191 }}}, - { 0x0195, {1, {0x01f6 }}}, - { 0x0199, {1, {0x0198 }}}, - { 0x019a, {1, {0x023d }}}, - { 0x019e, {1, {0x0220 }}}, - { 0x01a1, {1, {0x01a0 }}}, - { 0x01a3, {1, {0x01a2 }}}, - { 0x01a5, {1, {0x01a4 }}}, - { 0x01a8, {1, {0x01a7 }}}, - { 0x01ad, {1, {0x01ac }}}, - { 0x01b0, {1, {0x01af }}}, - { 0x01b4, {1, {0x01b3 }}}, - { 0x01b6, {1, {0x01b5 }}}, - { 0x01b9, {1, {0x01b8 }}}, - { 0x01bd, {1, {0x01bc }}}, - { 0x01bf, {1, {0x01f7 }}}, - { 0x01c6, {2, {0x01c4, 0x01c5 }}}, - { 0x01c9, {2, {0x01c7, 0x01c8 }}}, - { 0x01cc, {2, {0x01ca, 0x01cb }}}, - { 0x01ce, {1, {0x01cd }}}, - { 0x01d0, {1, {0x01cf }}}, - { 0x01d2, {1, {0x01d1 }}}, - { 0x01d4, {1, {0x01d3 }}}, - { 0x01d6, {1, {0x01d5 }}}, - { 0x01d8, {1, {0x01d7 }}}, - { 0x01da, {1, {0x01d9 }}}, - { 0x01dc, {1, {0x01db }}}, - { 0x01dd, {1, {0x018e }}}, - { 0x01df, {1, {0x01de }}}, - { 0x01e1, {1, {0x01e0 }}}, - { 0x01e3, {1, {0x01e2 }}}, - { 0x01e5, {1, {0x01e4 }}}, - { 0x01e7, {1, {0x01e6 }}}, - { 0x01e9, {1, {0x01e8 }}}, - { 0x01eb, {1, {0x01ea }}}, - { 0x01ed, {1, {0x01ec }}}, - { 0x01ef, {1, {0x01ee }}}, - { 0x01f3, {2, {0x01f1, 0x01f2 }}}, - { 0x01f5, {1, {0x01f4 }}}, - { 0x01f9, {1, {0x01f8 }}}, - { 0x01fb, {1, {0x01fa }}}, - { 0x01fd, {1, {0x01fc }}}, - { 0x01ff, {1, {0x01fe }}}, - { 0x0201, {1, {0x0200 }}}, - { 0x0203, {1, {0x0202 }}}, - { 0x0205, {1, {0x0204 }}}, - { 0x0207, {1, {0x0206 }}}, - { 0x0209, {1, {0x0208 }}}, - { 0x020b, {1, {0x020a }}}, - { 0x020d, {1, {0x020c }}}, - { 0x020f, {1, {0x020e }}}, - { 0x0211, {1, {0x0210 }}}, - { 0x0213, {1, {0x0212 }}}, - { 0x0215, {1, {0x0214 }}}, - { 0x0217, {1, {0x0216 }}}, - { 0x0219, {1, {0x0218 }}}, - { 0x021b, {1, {0x021a }}}, - { 0x021d, {1, {0x021c }}}, - { 0x021f, {1, {0x021e }}}, - { 0x0223, {1, {0x0222 }}}, - { 0x0225, {1, {0x0224 }}}, - { 0x0227, {1, {0x0226 }}}, - { 0x0229, {1, {0x0228 }}}, - { 0x022b, {1, {0x022a }}}, - { 0x022d, {1, {0x022c }}}, - { 0x022f, {1, {0x022e }}}, - { 0x0231, {1, {0x0230 }}}, - { 0x0233, {1, {0x0232 }}}, - { 0x023c, {1, {0x023b }}}, - { 0x0253, {1, {0x0181 }}}, - { 0x0254, {1, {0x0186 }}}, - { 0x0256, {1, {0x0189 }}}, - { 0x0257, {1, {0x018a }}}, - { 0x0259, {1, {0x018f }}}, - { 0x025b, {1, {0x0190 }}}, - { 0x0260, {1, {0x0193 }}}, - { 0x0263, {1, {0x0194 }}}, - { 0x0268, {1, {0x0197 }}}, - { 0x0269, {1, {0x0196 }}}, - { 0x026f, {1, {0x019c }}}, - { 0x0272, {1, {0x019d }}}, - { 0x0275, {1, {0x019f }}}, - { 0x0280, {1, {0x01a6 }}}, - { 0x0283, {1, {0x01a9 }}}, - { 0x0288, {1, {0x01ae }}}, - { 0x028a, {1, {0x01b1 }}}, - { 0x028b, {1, {0x01b2 }}}, - { 0x0292, {1, {0x01b7 }}}, - { 0x0294, {1, {0x0241 }}}, - { 0x03ac, {1, {0x0386 }}}, - { 0x03ad, {1, {0x0388 }}}, - { 0x03ae, {1, {0x0389 }}}, - { 0x03af, {1, {0x038a }}}, - { 0x03b1, {1, {0x0391 }}}, - { 0x03b2, {2, {0x0392, 0x03d0 }}}, - { 0x03b3, {1, {0x0393 }}}, - { 0x03b4, {1, {0x0394 }}}, - { 0x03b5, {2, {0x03f5, 0x0395 }}}, - { 0x03b6, {1, {0x0396 }}}, - { 0x03b7, {1, {0x0397 }}}, - { 0x03b8, {3, {0x03f4, 0x0398, 0x03d1 }}}, - { 0x03b9, {3, {0x1fbe, 0x0399, 0x0345 }}}, - { 0x03ba, {2, {0x03f0, 0x039a }}}, - { 0x03bb, {1, {0x039b }}}, - { 0x03bc, {2, {0x00b5, 0x039c }}}, - { 0x03bd, {1, {0x039d }}}, - { 0x03be, {1, {0x039e }}}, - { 0x03bf, {1, {0x039f }}}, - { 0x03c0, {2, {0x03a0, 0x03d6 }}}, - { 0x03c1, {2, {0x03f1, 0x03a1 }}}, - { 0x03c3, {2, {0x03a3, 0x03c2 }}}, - { 0x03c4, {1, {0x03a4 }}}, - { 0x03c5, {1, {0x03a5 }}}, - { 0x03c6, {2, {0x03a6, 0x03d5 }}}, - { 0x03c7, {1, {0x03a7 }}}, - { 0x03c8, {1, {0x03a8 }}}, - { 0x03c9, {2, {0x03a9, 0x2126 }}}, - { 0x03ca, {1, {0x03aa }}}, - { 0x03cb, {1, {0x03ab }}}, - { 0x03cc, {1, {0x038c }}}, - { 0x03cd, {1, {0x038e }}}, - { 0x03ce, {1, {0x038f }}}, - { 0x03d9, {1, {0x03d8 }}}, - { 0x03db, {1, {0x03da }}}, - { 0x03dd, {1, {0x03dc }}}, - { 0x03df, {1, {0x03de }}}, - { 0x03e1, {1, {0x03e0 }}}, - { 0x03e3, {1, {0x03e2 }}}, - { 0x03e5, {1, {0x03e4 }}}, - { 0x03e7, {1, {0x03e6 }}}, - { 0x03e9, {1, {0x03e8 }}}, - { 0x03eb, {1, {0x03ea }}}, - { 0x03ed, {1, {0x03ec }}}, - { 0x03ef, {1, {0x03ee }}}, - { 0x03f2, {1, {0x03f9 }}}, - { 0x03f8, {1, {0x03f7 }}}, - { 0x03fb, {1, {0x03fa }}}, - { 0x0430, {1, {0x0410 }}}, - { 0x0431, {1, {0x0411 }}}, - { 0x0432, {1, {0x0412 }}}, - { 0x0433, {1, {0x0413 }}}, - { 0x0434, {1, {0x0414 }}}, - { 0x0435, {1, {0x0415 }}}, - { 0x0436, {1, {0x0416 }}}, - { 0x0437, {1, {0x0417 }}}, - { 0x0438, {1, {0x0418 }}}, - { 0x0439, {1, {0x0419 }}}, - { 0x043a, {1, {0x041a }}}, - { 0x043b, {1, {0x041b }}}, - { 0x043c, {1, {0x041c }}}, - { 0x043d, {1, {0x041d }}}, - { 0x043e, {1, {0x041e }}}, - { 0x043f, {1, {0x041f }}}, - { 0x0440, {1, {0x0420 }}}, - { 0x0441, {1, {0x0421 }}}, - { 0x0442, {1, {0x0422 }}}, - { 0x0443, {1, {0x0423 }}}, - { 0x0444, {1, {0x0424 }}}, - { 0x0445, {1, {0x0425 }}}, - { 0x0446, {1, {0x0426 }}}, - { 0x0447, {1, {0x0427 }}}, - { 0x0448, {1, {0x0428 }}}, - { 0x0449, {1, {0x0429 }}}, - { 0x044a, {1, {0x042a }}}, - { 0x044b, {1, {0x042b }}}, - { 0x044c, {1, {0x042c }}}, - { 0x044d, {1, {0x042d }}}, - { 0x044e, {1, {0x042e }}}, - { 0x044f, {1, {0x042f }}}, - { 0x0450, {1, {0x0400 }}}, - { 0x0451, {1, {0x0401 }}}, - { 0x0452, {1, {0x0402 }}}, - { 0x0453, {1, {0x0403 }}}, - { 0x0454, {1, {0x0404 }}}, - { 0x0455, {1, {0x0405 }}}, - { 0x0456, {1, {0x0406 }}}, - { 0x0457, {1, {0x0407 }}}, - { 0x0458, {1, {0x0408 }}}, - { 0x0459, {1, {0x0409 }}}, - { 0x045a, {1, {0x040a }}}, - { 0x045b, {1, {0x040b }}}, - { 0x045c, {1, {0x040c }}}, - { 0x045d, {1, {0x040d }}}, - { 0x045e, {1, {0x040e }}}, - { 0x045f, {1, {0x040f }}}, - { 0x0461, {1, {0x0460 }}}, - { 0x0463, {1, {0x0462 }}}, - { 0x0465, {1, {0x0464 }}}, - { 0x0467, {1, {0x0466 }}}, - { 0x0469, {1, {0x0468 }}}, - { 0x046b, {1, {0x046a }}}, - { 0x046d, {1, {0x046c }}}, - { 0x046f, {1, {0x046e }}}, - { 0x0471, {1, {0x0470 }}}, - { 0x0473, {1, {0x0472 }}}, - { 0x0475, {1, {0x0474 }}}, - { 0x0477, {1, {0x0476 }}}, - { 0x0479, {1, {0x0478 }}}, - { 0x047b, {1, {0x047a }}}, - { 0x047d, {1, {0x047c }}}, - { 0x047f, {1, {0x047e }}}, - { 0x0481, {1, {0x0480 }}}, - { 0x048b, {1, {0x048a }}}, - { 0x048d, {1, {0x048c }}}, - { 0x048f, {1, {0x048e }}}, - { 0x0491, {1, {0x0490 }}}, - { 0x0493, {1, {0x0492 }}}, - { 0x0495, {1, {0x0494 }}}, - { 0x0497, {1, {0x0496 }}}, - { 0x0499, {1, {0x0498 }}}, - { 0x049b, {1, {0x049a }}}, - { 0x049d, {1, {0x049c }}}, - { 0x049f, {1, {0x049e }}}, - { 0x04a1, {1, {0x04a0 }}}, - { 0x04a3, {1, {0x04a2 }}}, - { 0x04a5, {1, {0x04a4 }}}, - { 0x04a7, {1, {0x04a6 }}}, - { 0x04a9, {1, {0x04a8 }}}, - { 0x04ab, {1, {0x04aa }}}, - { 0x04ad, {1, {0x04ac }}}, - { 0x04af, {1, {0x04ae }}}, - { 0x04b1, {1, {0x04b0 }}}, - { 0x04b3, {1, {0x04b2 }}}, - { 0x04b5, {1, {0x04b4 }}}, - { 0x04b7, {1, {0x04b6 }}}, - { 0x04b9, {1, {0x04b8 }}}, - { 0x04bb, {1, {0x04ba }}}, - { 0x04bd, {1, {0x04bc }}}, - { 0x04bf, {1, {0x04be }}}, - { 0x04c2, {1, {0x04c1 }}}, - { 0x04c4, {1, {0x04c3 }}}, - { 0x04c6, {1, {0x04c5 }}}, - { 0x04c8, {1, {0x04c7 }}}, - { 0x04ca, {1, {0x04c9 }}}, - { 0x04cc, {1, {0x04cb }}}, - { 0x04ce, {1, {0x04cd }}}, - { 0x04d1, {1, {0x04d0 }}}, - { 0x04d3, {1, {0x04d2 }}}, - { 0x04d5, {1, {0x04d4 }}}, - { 0x04d7, {1, {0x04d6 }}}, - { 0x04d9, {1, {0x04d8 }}}, - { 0x04db, {1, {0x04da }}}, - { 0x04dd, {1, {0x04dc }}}, - { 0x04df, {1, {0x04de }}}, - { 0x04e1, {1, {0x04e0 }}}, - { 0x04e3, {1, {0x04e2 }}}, - { 0x04e5, {1, {0x04e4 }}}, - { 0x04e7, {1, {0x04e6 }}}, - { 0x04e9, {1, {0x04e8 }}}, - { 0x04eb, {1, {0x04ea }}}, - { 0x04ed, {1, {0x04ec }}}, - { 0x04ef, {1, {0x04ee }}}, - { 0x04f1, {1, {0x04f0 }}}, - { 0x04f3, {1, {0x04f2 }}}, - { 0x04f5, {1, {0x04f4 }}}, - { 0x04f7, {1, {0x04f6 }}}, - { 0x04f9, {1, {0x04f8 }}}, - { 0x0501, {1, {0x0500 }}}, - { 0x0503, {1, {0x0502 }}}, - { 0x0505, {1, {0x0504 }}}, - { 0x0507, {1, {0x0506 }}}, - { 0x0509, {1, {0x0508 }}}, - { 0x050b, {1, {0x050a }}}, - { 0x050d, {1, {0x050c }}}, - { 0x050f, {1, {0x050e }}}, - { 0x0561, {1, {0x0531 }}}, - { 0x0562, {1, {0x0532 }}}, - { 0x0563, {1, {0x0533 }}}, - { 0x0564, {1, {0x0534 }}}, - { 0x0565, {1, {0x0535 }}}, - { 0x0566, {1, {0x0536 }}}, - { 0x0567, {1, {0x0537 }}}, - { 0x0568, {1, {0x0538 }}}, - { 0x0569, {1, {0x0539 }}}, - { 0x056a, {1, {0x053a }}}, - { 0x056b, {1, {0x053b }}}, - { 0x056c, {1, {0x053c }}}, - { 0x056d, {1, {0x053d }}}, - { 0x056e, {1, {0x053e }}}, - { 0x056f, {1, {0x053f }}}, - { 0x0570, {1, {0x0540 }}}, - { 0x0571, {1, {0x0541 }}}, - { 0x0572, {1, {0x0542 }}}, - { 0x0573, {1, {0x0543 }}}, - { 0x0574, {1, {0x0544 }}}, - { 0x0575, {1, {0x0545 }}}, - { 0x0576, {1, {0x0546 }}}, - { 0x0577, {1, {0x0547 }}}, - { 0x0578, {1, {0x0548 }}}, - { 0x0579, {1, {0x0549 }}}, - { 0x057a, {1, {0x054a }}}, - { 0x057b, {1, {0x054b }}}, - { 0x057c, {1, {0x054c }}}, - { 0x057d, {1, {0x054d }}}, - { 0x057e, {1, {0x054e }}}, - { 0x057f, {1, {0x054f }}}, - { 0x0580, {1, {0x0550 }}}, - { 0x0581, {1, {0x0551 }}}, - { 0x0582, {1, {0x0552 }}}, - { 0x0583, {1, {0x0553 }}}, - { 0x0584, {1, {0x0554 }}}, - { 0x0585, {1, {0x0555 }}}, - { 0x0586, {1, {0x0556 }}}, - { 0x1e01, {1, {0x1e00 }}}, - { 0x1e03, {1, {0x1e02 }}}, - { 0x1e05, {1, {0x1e04 }}}, - { 0x1e07, {1, {0x1e06 }}}, - { 0x1e09, {1, {0x1e08 }}}, - { 0x1e0b, {1, {0x1e0a }}}, - { 0x1e0d, {1, {0x1e0c }}}, - { 0x1e0f, {1, {0x1e0e }}}, - { 0x1e11, {1, {0x1e10 }}}, - { 0x1e13, {1, {0x1e12 }}}, - { 0x1e15, {1, {0x1e14 }}}, - { 0x1e17, {1, {0x1e16 }}}, - { 0x1e19, {1, {0x1e18 }}}, - { 0x1e1b, {1, {0x1e1a }}}, - { 0x1e1d, {1, {0x1e1c }}}, - { 0x1e1f, {1, {0x1e1e }}}, - { 0x1e21, {1, {0x1e20 }}}, - { 0x1e23, {1, {0x1e22 }}}, - { 0x1e25, {1, {0x1e24 }}}, - { 0x1e27, {1, {0x1e26 }}}, - { 0x1e29, {1, {0x1e28 }}}, - { 0x1e2b, {1, {0x1e2a }}}, - { 0x1e2d, {1, {0x1e2c }}}, - { 0x1e2f, {1, {0x1e2e }}}, - { 0x1e31, {1, {0x1e30 }}}, - { 0x1e33, {1, {0x1e32 }}}, - { 0x1e35, {1, {0x1e34 }}}, - { 0x1e37, {1, {0x1e36 }}}, - { 0x1e39, {1, {0x1e38 }}}, - { 0x1e3b, {1, {0x1e3a }}}, - { 0x1e3d, {1, {0x1e3c }}}, - { 0x1e3f, {1, {0x1e3e }}}, - { 0x1e41, {1, {0x1e40 }}}, - { 0x1e43, {1, {0x1e42 }}}, - { 0x1e45, {1, {0x1e44 }}}, - { 0x1e47, {1, {0x1e46 }}}, - { 0x1e49, {1, {0x1e48 }}}, - { 0x1e4b, {1, {0x1e4a }}}, - { 0x1e4d, {1, {0x1e4c }}}, - { 0x1e4f, {1, {0x1e4e }}}, - { 0x1e51, {1, {0x1e50 }}}, - { 0x1e53, {1, {0x1e52 }}}, - { 0x1e55, {1, {0x1e54 }}}, - { 0x1e57, {1, {0x1e56 }}}, - { 0x1e59, {1, {0x1e58 }}}, - { 0x1e5b, {1, {0x1e5a }}}, - { 0x1e5d, {1, {0x1e5c }}}, - { 0x1e5f, {1, {0x1e5e }}}, - { 0x1e61, {2, {0x1e9b, 0x1e60 }}}, - { 0x1e63, {1, {0x1e62 }}}, - { 0x1e65, {1, {0x1e64 }}}, - { 0x1e67, {1, {0x1e66 }}}, - { 0x1e69, {1, {0x1e68 }}}, - { 0x1e6b, {1, {0x1e6a }}}, - { 0x1e6d, {1, {0x1e6c }}}, - { 0x1e6f, {1, {0x1e6e }}}, - { 0x1e71, {1, {0x1e70 }}}, - { 0x1e73, {1, {0x1e72 }}}, - { 0x1e75, {1, {0x1e74 }}}, - { 0x1e77, {1, {0x1e76 }}}, - { 0x1e79, {1, {0x1e78 }}}, - { 0x1e7b, {1, {0x1e7a }}}, - { 0x1e7d, {1, {0x1e7c }}}, - { 0x1e7f, {1, {0x1e7e }}}, - { 0x1e81, {1, {0x1e80 }}}, - { 0x1e83, {1, {0x1e82 }}}, - { 0x1e85, {1, {0x1e84 }}}, - { 0x1e87, {1, {0x1e86 }}}, - { 0x1e89, {1, {0x1e88 }}}, - { 0x1e8b, {1, {0x1e8a }}}, - { 0x1e8d, {1, {0x1e8c }}}, - { 0x1e8f, {1, {0x1e8e }}}, - { 0x1e91, {1, {0x1e90 }}}, - { 0x1e93, {1, {0x1e92 }}}, - { 0x1e95, {1, {0x1e94 }}}, - { 0x1ea1, {1, {0x1ea0 }}}, - { 0x1ea3, {1, {0x1ea2 }}}, - { 0x1ea5, {1, {0x1ea4 }}}, - { 0x1ea7, {1, {0x1ea6 }}}, - { 0x1ea9, {1, {0x1ea8 }}}, - { 0x1eab, {1, {0x1eaa }}}, - { 0x1ead, {1, {0x1eac }}}, - { 0x1eaf, {1, {0x1eae }}}, - { 0x1eb1, {1, {0x1eb0 }}}, - { 0x1eb3, {1, {0x1eb2 }}}, - { 0x1eb5, {1, {0x1eb4 }}}, - { 0x1eb7, {1, {0x1eb6 }}}, - { 0x1eb9, {1, {0x1eb8 }}}, - { 0x1ebb, {1, {0x1eba }}}, - { 0x1ebd, {1, {0x1ebc }}}, - { 0x1ebf, {1, {0x1ebe }}}, - { 0x1ec1, {1, {0x1ec0 }}}, - { 0x1ec3, {1, {0x1ec2 }}}, - { 0x1ec5, {1, {0x1ec4 }}}, - { 0x1ec7, {1, {0x1ec6 }}}, - { 0x1ec9, {1, {0x1ec8 }}}, - { 0x1ecb, {1, {0x1eca }}}, - { 0x1ecd, {1, {0x1ecc }}}, - { 0x1ecf, {1, {0x1ece }}}, - { 0x1ed1, {1, {0x1ed0 }}}, - { 0x1ed3, {1, {0x1ed2 }}}, - { 0x1ed5, {1, {0x1ed4 }}}, - { 0x1ed7, {1, {0x1ed6 }}}, - { 0x1ed9, {1, {0x1ed8 }}}, - { 0x1edb, {1, {0x1eda }}}, - { 0x1edd, {1, {0x1edc }}}, - { 0x1edf, {1, {0x1ede }}}, - { 0x1ee1, {1, {0x1ee0 }}}, - { 0x1ee3, {1, {0x1ee2 }}}, - { 0x1ee5, {1, {0x1ee4 }}}, - { 0x1ee7, {1, {0x1ee6 }}}, - { 0x1ee9, {1, {0x1ee8 }}}, - { 0x1eeb, {1, {0x1eea }}}, - { 0x1eed, {1, {0x1eec }}}, - { 0x1eef, {1, {0x1eee }}}, - { 0x1ef1, {1, {0x1ef0 }}}, - { 0x1ef3, {1, {0x1ef2 }}}, - { 0x1ef5, {1, {0x1ef4 }}}, - { 0x1ef7, {1, {0x1ef6 }}}, - { 0x1ef9, {1, {0x1ef8 }}}, - { 0x1f00, {1, {0x1f08 }}}, - { 0x1f01, {1, {0x1f09 }}}, - { 0x1f02, {1, {0x1f0a }}}, - { 0x1f03, {1, {0x1f0b }}}, - { 0x1f04, {1, {0x1f0c }}}, - { 0x1f05, {1, {0x1f0d }}}, - { 0x1f06, {1, {0x1f0e }}}, - { 0x1f07, {1, {0x1f0f }}}, - { 0x1f10, {1, {0x1f18 }}}, - { 0x1f11, {1, {0x1f19 }}}, - { 0x1f12, {1, {0x1f1a }}}, - { 0x1f13, {1, {0x1f1b }}}, - { 0x1f14, {1, {0x1f1c }}}, - { 0x1f15, {1, {0x1f1d }}}, - { 0x1f20, {1, {0x1f28 }}}, - { 0x1f21, {1, {0x1f29 }}}, - { 0x1f22, {1, {0x1f2a }}}, - { 0x1f23, {1, {0x1f2b }}}, - { 0x1f24, {1, {0x1f2c }}}, - { 0x1f25, {1, {0x1f2d }}}, - { 0x1f26, {1, {0x1f2e }}}, - { 0x1f27, {1, {0x1f2f }}}, - { 0x1f30, {1, {0x1f38 }}}, - { 0x1f31, {1, {0x1f39 }}}, - { 0x1f32, {1, {0x1f3a }}}, - { 0x1f33, {1, {0x1f3b }}}, - { 0x1f34, {1, {0x1f3c }}}, - { 0x1f35, {1, {0x1f3d }}}, - { 0x1f36, {1, {0x1f3e }}}, - { 0x1f37, {1, {0x1f3f }}}, - { 0x1f40, {1, {0x1f48 }}}, - { 0x1f41, {1, {0x1f49 }}}, - { 0x1f42, {1, {0x1f4a }}}, - { 0x1f43, {1, {0x1f4b }}}, - { 0x1f44, {1, {0x1f4c }}}, - { 0x1f45, {1, {0x1f4d }}}, - { 0x1f51, {1, {0x1f59 }}}, - { 0x1f53, {1, {0x1f5b }}}, - { 0x1f55, {1, {0x1f5d }}}, - { 0x1f57, {1, {0x1f5f }}}, - { 0x1f60, {1, {0x1f68 }}}, - { 0x1f61, {1, {0x1f69 }}}, - { 0x1f62, {1, {0x1f6a }}}, - { 0x1f63, {1, {0x1f6b }}}, - { 0x1f64, {1, {0x1f6c }}}, - { 0x1f65, {1, {0x1f6d }}}, - { 0x1f66, {1, {0x1f6e }}}, - { 0x1f67, {1, {0x1f6f }}}, - { 0x1f70, {1, {0x1fba }}}, - { 0x1f71, {1, {0x1fbb }}}, - { 0x1f72, {1, {0x1fc8 }}}, - { 0x1f73, {1, {0x1fc9 }}}, - { 0x1f74, {1, {0x1fca }}}, - { 0x1f75, {1, {0x1fcb }}}, - { 0x1f76, {1, {0x1fda }}}, - { 0x1f77, {1, {0x1fdb }}}, - { 0x1f78, {1, {0x1ff8 }}}, - { 0x1f79, {1, {0x1ff9 }}}, - { 0x1f7a, {1, {0x1fea }}}, - { 0x1f7b, {1, {0x1feb }}}, - { 0x1f7c, {1, {0x1ffa }}}, - { 0x1f7d, {1, {0x1ffb }}}, - { 0x1fb0, {1, {0x1fb8 }}}, - { 0x1fb1, {1, {0x1fb9 }}}, - { 0x1fd0, {1, {0x1fd8 }}}, - { 0x1fd1, {1, {0x1fd9 }}}, - { 0x1fe0, {1, {0x1fe8 }}}, - { 0x1fe1, {1, {0x1fe9 }}}, - { 0x1fe5, {1, {0x1fec }}}, - { 0x2170, {1, {0x2160 }}}, - { 0x2171, {1, {0x2161 }}}, - { 0x2172, {1, {0x2162 }}}, - { 0x2173, {1, {0x2163 }}}, - { 0x2174, {1, {0x2164 }}}, - { 0x2175, {1, {0x2165 }}}, - { 0x2176, {1, {0x2166 }}}, - { 0x2177, {1, {0x2167 }}}, - { 0x2178, {1, {0x2168 }}}, - { 0x2179, {1, {0x2169 }}}, - { 0x217a, {1, {0x216a }}}, - { 0x217b, {1, {0x216b }}}, - { 0x217c, {1, {0x216c }}}, - { 0x217d, {1, {0x216d }}}, - { 0x217e, {1, {0x216e }}}, - { 0x217f, {1, {0x216f }}}, - { 0x24d0, {1, {0x24b6 }}}, - { 0x24d1, {1, {0x24b7 }}}, - { 0x24d2, {1, {0x24b8 }}}, - { 0x24d3, {1, {0x24b9 }}}, - { 0x24d4, {1, {0x24ba }}}, - { 0x24d5, {1, {0x24bb }}}, - { 0x24d6, {1, {0x24bc }}}, - { 0x24d7, {1, {0x24bd }}}, - { 0x24d8, {1, {0x24be }}}, - { 0x24d9, {1, {0x24bf }}}, - { 0x24da, {1, {0x24c0 }}}, - { 0x24db, {1, {0x24c1 }}}, - { 0x24dc, {1, {0x24c2 }}}, - { 0x24dd, {1, {0x24c3 }}}, - { 0x24de, {1, {0x24c4 }}}, - { 0x24df, {1, {0x24c5 }}}, - { 0x24e0, {1, {0x24c6 }}}, - { 0x24e1, {1, {0x24c7 }}}, - { 0x24e2, {1, {0x24c8 }}}, - { 0x24e3, {1, {0x24c9 }}}, - { 0x24e4, {1, {0x24ca }}}, - { 0x24e5, {1, {0x24cb }}}, - { 0x24e6, {1, {0x24cc }}}, - { 0x24e7, {1, {0x24cd }}}, - { 0x24e8, {1, {0x24ce }}}, - { 0x24e9, {1, {0x24cf }}}, - { 0x2c30, {1, {0x2c00 }}}, - { 0x2c31, {1, {0x2c01 }}}, - { 0x2c32, {1, {0x2c02 }}}, - { 0x2c33, {1, {0x2c03 }}}, - { 0x2c34, {1, {0x2c04 }}}, - { 0x2c35, {1, {0x2c05 }}}, - { 0x2c36, {1, {0x2c06 }}}, - { 0x2c37, {1, {0x2c07 }}}, - { 0x2c38, {1, {0x2c08 }}}, - { 0x2c39, {1, {0x2c09 }}}, - { 0x2c3a, {1, {0x2c0a }}}, - { 0x2c3b, {1, {0x2c0b }}}, - { 0x2c3c, {1, {0x2c0c }}}, - { 0x2c3d, {1, {0x2c0d }}}, - { 0x2c3e, {1, {0x2c0e }}}, - { 0x2c3f, {1, {0x2c0f }}}, - { 0x2c40, {1, {0x2c10 }}}, - { 0x2c41, {1, {0x2c11 }}}, - { 0x2c42, {1, {0x2c12 }}}, - { 0x2c43, {1, {0x2c13 }}}, - { 0x2c44, {1, {0x2c14 }}}, - { 0x2c45, {1, {0x2c15 }}}, - { 0x2c46, {1, {0x2c16 }}}, - { 0x2c47, {1, {0x2c17 }}}, - { 0x2c48, {1, {0x2c18 }}}, - { 0x2c49, {1, {0x2c19 }}}, - { 0x2c4a, {1, {0x2c1a }}}, - { 0x2c4b, {1, {0x2c1b }}}, - { 0x2c4c, {1, {0x2c1c }}}, - { 0x2c4d, {1, {0x2c1d }}}, - { 0x2c4e, {1, {0x2c1e }}}, - { 0x2c4f, {1, {0x2c1f }}}, - { 0x2c50, {1, {0x2c20 }}}, - { 0x2c51, {1, {0x2c21 }}}, - { 0x2c52, {1, {0x2c22 }}}, - { 0x2c53, {1, {0x2c23 }}}, - { 0x2c54, {1, {0x2c24 }}}, - { 0x2c55, {1, {0x2c25 }}}, - { 0x2c56, {1, {0x2c26 }}}, - { 0x2c57, {1, {0x2c27 }}}, - { 0x2c58, {1, {0x2c28 }}}, - { 0x2c59, {1, {0x2c29 }}}, - { 0x2c5a, {1, {0x2c2a }}}, - { 0x2c5b, {1, {0x2c2b }}}, - { 0x2c5c, {1, {0x2c2c }}}, - { 0x2c5d, {1, {0x2c2d }}}, - { 0x2c5e, {1, {0x2c2e }}}, - { 0x2c81, {1, {0x2c80 }}}, - { 0x2c83, {1, {0x2c82 }}}, - { 0x2c85, {1, {0x2c84 }}}, - { 0x2c87, {1, {0x2c86 }}}, - { 0x2c89, {1, {0x2c88 }}}, - { 0x2c8b, {1, {0x2c8a }}}, - { 0x2c8d, {1, {0x2c8c }}}, - { 0x2c8f, {1, {0x2c8e }}}, - { 0x2c91, {1, {0x2c90 }}}, - { 0x2c93, {1, {0x2c92 }}}, - { 0x2c95, {1, {0x2c94 }}}, - { 0x2c97, {1, {0x2c96 }}}, - { 0x2c99, {1, {0x2c98 }}}, - { 0x2c9b, {1, {0x2c9a }}}, - { 0x2c9d, {1, {0x2c9c }}}, - { 0x2c9f, {1, {0x2c9e }}}, - { 0x2ca1, {1, {0x2ca0 }}}, - { 0x2ca3, {1, {0x2ca2 }}}, - { 0x2ca5, {1, {0x2ca4 }}}, - { 0x2ca7, {1, {0x2ca6 }}}, - { 0x2ca9, {1, {0x2ca8 }}}, - { 0x2cab, {1, {0x2caa }}}, - { 0x2cad, {1, {0x2cac }}}, - { 0x2caf, {1, {0x2cae }}}, - { 0x2cb1, {1, {0x2cb0 }}}, - { 0x2cb3, {1, {0x2cb2 }}}, - { 0x2cb5, {1, {0x2cb4 }}}, - { 0x2cb7, {1, {0x2cb6 }}}, - { 0x2cb9, {1, {0x2cb8 }}}, - { 0x2cbb, {1, {0x2cba }}}, - { 0x2cbd, {1, {0x2cbc }}}, - { 0x2cbf, {1, {0x2cbe }}}, - { 0x2cc1, {1, {0x2cc0 }}}, - { 0x2cc3, {1, {0x2cc2 }}}, - { 0x2cc5, {1, {0x2cc4 }}}, - { 0x2cc7, {1, {0x2cc6 }}}, - { 0x2cc9, {1, {0x2cc8 }}}, - { 0x2ccb, {1, {0x2cca }}}, - { 0x2ccd, {1, {0x2ccc }}}, - { 0x2ccf, {1, {0x2cce }}}, - { 0x2cd1, {1, {0x2cd0 }}}, - { 0x2cd3, {1, {0x2cd2 }}}, - { 0x2cd5, {1, {0x2cd4 }}}, - { 0x2cd7, {1, {0x2cd6 }}}, - { 0x2cd9, {1, {0x2cd8 }}}, - { 0x2cdb, {1, {0x2cda }}}, - { 0x2cdd, {1, {0x2cdc }}}, - { 0x2cdf, {1, {0x2cde }}}, - { 0x2ce1, {1, {0x2ce0 }}}, - { 0x2ce3, {1, {0x2ce2 }}}, - { 0x2d00, {1, {0x10a0 }}}, - { 0x2d01, {1, {0x10a1 }}}, - { 0x2d02, {1, {0x10a2 }}}, - { 0x2d03, {1, {0x10a3 }}}, - { 0x2d04, {1, {0x10a4 }}}, - { 0x2d05, {1, {0x10a5 }}}, - { 0x2d06, {1, {0x10a6 }}}, - { 0x2d07, {1, {0x10a7 }}}, - { 0x2d08, {1, {0x10a8 }}}, - { 0x2d09, {1, {0x10a9 }}}, - { 0x2d0a, {1, {0x10aa }}}, - { 0x2d0b, {1, {0x10ab }}}, - { 0x2d0c, {1, {0x10ac }}}, - { 0x2d0d, {1, {0x10ad }}}, - { 0x2d0e, {1, {0x10ae }}}, - { 0x2d0f, {1, {0x10af }}}, - { 0x2d10, {1, {0x10b0 }}}, - { 0x2d11, {1, {0x10b1 }}}, - { 0x2d12, {1, {0x10b2 }}}, - { 0x2d13, {1, {0x10b3 }}}, - { 0x2d14, {1, {0x10b4 }}}, - { 0x2d15, {1, {0x10b5 }}}, - { 0x2d16, {1, {0x10b6 }}}, - { 0x2d17, {1, {0x10b7 }}}, - { 0x2d18, {1, {0x10b8 }}}, - { 0x2d19, {1, {0x10b9 }}}, - { 0x2d1a, {1, {0x10ba }}}, - { 0x2d1b, {1, {0x10bb }}}, - { 0x2d1c, {1, {0x10bc }}}, - { 0x2d1d, {1, {0x10bd }}}, - { 0x2d1e, {1, {0x10be }}}, - { 0x2d1f, {1, {0x10bf }}}, - { 0x2d20, {1, {0x10c0 }}}, - { 0x2d21, {1, {0x10c1 }}}, - { 0x2d22, {1, {0x10c2 }}}, - { 0x2d23, {1, {0x10c3 }}}, - { 0x2d24, {1, {0x10c4 }}}, - { 0x2d25, {1, {0x10c5 }}}, - { 0xff41, {1, {0xff21 }}}, - { 0xff42, {1, {0xff22 }}}, - { 0xff43, {1, {0xff23 }}}, - { 0xff44, {1, {0xff24 }}}, - { 0xff45, {1, {0xff25 }}}, - { 0xff46, {1, {0xff26 }}}, - { 0xff47, {1, {0xff27 }}}, - { 0xff48, {1, {0xff28 }}}, - { 0xff49, {1, {0xff29 }}}, - { 0xff4a, {1, {0xff2a }}}, - { 0xff4b, {1, {0xff2b }}}, - { 0xff4c, {1, {0xff2c }}}, - { 0xff4d, {1, {0xff2d }}}, - { 0xff4e, {1, {0xff2e }}}, - { 0xff4f, {1, {0xff2f }}}, - { 0xff50, {1, {0xff30 }}}, - { 0xff51, {1, {0xff31 }}}, - { 0xff52, {1, {0xff32 }}}, - { 0xff53, {1, {0xff33 }}}, - { 0xff54, {1, {0xff34 }}}, - { 0xff55, {1, {0xff35 }}}, - { 0xff56, {1, {0xff36 }}}, - { 0xff57, {1, {0xff37 }}}, - { 0xff58, {1, {0xff38 }}}, - { 0xff59, {1, {0xff39 }}}, - { 0xff5a, {1, {0xff3a }}}, - { 0x10428, {1, {0x10400 }}}, - { 0x10429, {1, {0x10401 }}}, - { 0x1042a, {1, {0x10402 }}}, - { 0x1042b, {1, {0x10403 }}}, - { 0x1042c, {1, {0x10404 }}}, - { 0x1042d, {1, {0x10405 }}}, - { 0x1042e, {1, {0x10406 }}}, - { 0x1042f, {1, {0x10407 }}}, - { 0x10430, {1, {0x10408 }}}, - { 0x10431, {1, {0x10409 }}}, - { 0x10432, {1, {0x1040a }}}, - { 0x10433, {1, {0x1040b }}}, - { 0x10434, {1, {0x1040c }}}, - { 0x10435, {1, {0x1040d }}}, - { 0x10436, {1, {0x1040e }}}, - { 0x10437, {1, {0x1040f }}}, - { 0x10438, {1, {0x10410 }}}, - { 0x10439, {1, {0x10411 }}}, - { 0x1043a, {1, {0x10412 }}}, - { 0x1043b, {1, {0x10413 }}}, - { 0x1043c, {1, {0x10414 }}}, - { 0x1043d, {1, {0x10415 }}}, - { 0x1043e, {1, {0x10416 }}}, - { 0x1043f, {1, {0x10417 }}}, - { 0x10440, {1, {0x10418 }}}, - { 0x10441, {1, {0x10419 }}}, - { 0x10442, {1, {0x1041a }}}, - { 0x10443, {1, {0x1041b }}}, - { 0x10444, {1, {0x1041c }}}, - { 0x10445, {1, {0x1041d }}}, - { 0x10446, {1, {0x1041e }}}, - { 0x10447, {1, {0x1041f }}}, - { 0x10448, {1, {0x10420 }}}, - { 0x10449, {1, {0x10421 }}}, - { 0x1044a, {1, {0x10422 }}}, - { 0x1044b, {1, {0x10423 }}}, - { 0x1044c, {1, {0x10424 }}}, - { 0x1044d, {1, {0x10425 }}}, - { 0x1044e, {1, {0x10426 }}}, - { 0x1044f, {1, {0x10427 }}} -}; - -static const CaseUnfold_11_Type CaseUnfold_11_Locale[] = { - { 0x0069, {1, {0x0049 }}} -}; - -static const CaseUnfold_12_Type CaseUnfold_12[] = { - { {0x0061, 0x02be}, {1, {0x1e9a }}}, - { {0x0066, 0x0066}, {1, {0xfb00 }}}, - { {0x0066, 0x0069}, {1, {0xfb01 }}}, - { {0x0066, 0x006c}, {1, {0xfb02 }}}, - { {0x0068, 0x0331}, {1, {0x1e96 }}}, - { {0x006a, 0x030c}, {1, {0x01f0 }}}, - { {0x0073, 0x0073}, {1, {0x00df }}}, - { {0x0073, 0x0074}, {2, {0xfb05, 0xfb06 }}}, - { {0x0074, 0x0308}, {1, {0x1e97 }}}, - { {0x0077, 0x030a}, {1, {0x1e98 }}}, - { {0x0079, 0x030a}, {1, {0x1e99 }}}, - { {0x02bc, 0x006e}, {1, {0x0149 }}}, - { {0x03ac, 0x03b9}, {1, {0x1fb4 }}}, - { {0x03ae, 0x03b9}, {1, {0x1fc4 }}}, - { {0x03b1, 0x0342}, {1, {0x1fb6 }}}, - { {0x03b1, 0x03b9}, {2, {0x1fb3, 0x1fbc }}}, - { {0x03b7, 0x0342}, {1, {0x1fc6 }}}, - { {0x03b7, 0x03b9}, {2, {0x1fc3, 0x1fcc }}}, - { {0x03b9, 0x0342}, {1, {0x1fd6 }}}, - { {0x03c1, 0x0313}, {1, {0x1fe4 }}}, - { {0x03c5, 0x0313}, {1, {0x1f50 }}}, - { {0x03c5, 0x0342}, {1, {0x1fe6 }}}, - { {0x03c9, 0x0342}, {1, {0x1ff6 }}}, - { {0x03c9, 0x03b9}, {2, {0x1ff3, 0x1ffc }}}, - { {0x03ce, 0x03b9}, {1, {0x1ff4 }}}, - { {0x0565, 0x0582}, {1, {0x0587 }}}, - { {0x0574, 0x0565}, {1, {0xfb14 }}}, - { {0x0574, 0x056b}, {1, {0xfb15 }}}, - { {0x0574, 0x056d}, {1, {0xfb17 }}}, - { {0x0574, 0x0576}, {1, {0xfb13 }}}, - { {0x057e, 0x0576}, {1, {0xfb16 }}}, - { {0x1f00, 0x03b9}, {2, {0x1f88, 0x1f80 }}}, - { {0x1f01, 0x03b9}, {2, {0x1f81, 0x1f89 }}}, - { {0x1f02, 0x03b9}, {2, {0x1f82, 0x1f8a }}}, - { {0x1f03, 0x03b9}, {2, {0x1f83, 0x1f8b }}}, - { {0x1f04, 0x03b9}, {2, {0x1f84, 0x1f8c }}}, - { {0x1f05, 0x03b9}, {2, {0x1f85, 0x1f8d }}}, - { {0x1f06, 0x03b9}, {2, {0x1f86, 0x1f8e }}}, - { {0x1f07, 0x03b9}, {2, {0x1f87, 0x1f8f }}}, - { {0x1f20, 0x03b9}, {2, {0x1f90, 0x1f98 }}}, - { {0x1f21, 0x03b9}, {2, {0x1f91, 0x1f99 }}}, - { {0x1f22, 0x03b9}, {2, {0x1f92, 0x1f9a }}}, - { {0x1f23, 0x03b9}, {2, {0x1f93, 0x1f9b }}}, - { {0x1f24, 0x03b9}, {2, {0x1f94, 0x1f9c }}}, - { {0x1f25, 0x03b9}, {2, {0x1f95, 0x1f9d }}}, - { {0x1f26, 0x03b9}, {2, {0x1f96, 0x1f9e }}}, - { {0x1f27, 0x03b9}, {2, {0x1f97, 0x1f9f }}}, - { {0x1f60, 0x03b9}, {2, {0x1fa0, 0x1fa8 }}}, - { {0x1f61, 0x03b9}, {2, {0x1fa1, 0x1fa9 }}}, - { {0x1f62, 0x03b9}, {2, {0x1fa2, 0x1faa }}}, - { {0x1f63, 0x03b9}, {2, {0x1fa3, 0x1fab }}}, - { {0x1f64, 0x03b9}, {2, {0x1fa4, 0x1fac }}}, - { {0x1f65, 0x03b9}, {2, {0x1fa5, 0x1fad }}}, - { {0x1f66, 0x03b9}, {2, {0x1fa6, 0x1fae }}}, - { {0x1f67, 0x03b9}, {2, {0x1fa7, 0x1faf }}}, - { {0x1f70, 0x03b9}, {1, {0x1fb2 }}}, - { {0x1f74, 0x03b9}, {1, {0x1fc2 }}}, - { {0x1f7c, 0x03b9}, {1, {0x1ff2 }}} -}; - -static const CaseUnfold_12_Type CaseUnfold_12_Locale[] = { - { {0x0069, 0x0307}, {1, {0x0130 }}} -}; - -static const CaseUnfold_13_Type CaseUnfold_13[] = { - { {0x0066, 0x0066, 0x0069}, {1, {0xfb03 }}}, - { {0x0066, 0x0066, 0x006c}, {1, {0xfb04 }}}, - { {0x03b1, 0x0342, 0x03b9}, {1, {0x1fb7 }}}, - { {0x03b7, 0x0342, 0x03b9}, {1, {0x1fc7 }}}, - { {0x03b9, 0x0308, 0x0300}, {1, {0x1fd2 }}}, - { {0x03b9, 0x0308, 0x0301}, {2, {0x0390, 0x1fd3 }}}, - { {0x03b9, 0x0308, 0x0342}, {1, {0x1fd7 }}}, - { {0x03c5, 0x0308, 0x0300}, {1, {0x1fe2 }}}, - { {0x03c5, 0x0308, 0x0301}, {2, {0x03b0, 0x1fe3 }}}, - { {0x03c5, 0x0308, 0x0342}, {1, {0x1fe7 }}}, - { {0x03c5, 0x0313, 0x0300}, {1, {0x1f52 }}}, - { {0x03c5, 0x0313, 0x0301}, {1, {0x1f54 }}}, - { {0x03c5, 0x0313, 0x0342}, {1, {0x1f56 }}}, - { {0x03c9, 0x0342, 0x03b9}, {1, {0x1ff7 }}} -}; - - -static PosixBracketEntryType HashEntryData[] = { - { (UChar* )"NEWLINE", 0, 7 }, - { (UChar* )"Alpha", 1, 5 }, - { (UChar* )"Blank", 2, 5 }, - { (UChar* )"Cntrl", 3, 5 }, - { (UChar* )"Digit", 4, 5 }, - { (UChar* )"Graph", 5, 5 }, - { (UChar* )"Lower", 6, 5 }, - { (UChar* )"Print", 7, 5 }, - { (UChar* )"Punct", 8, 5 }, - { (UChar* )"Space", 9, 5 }, - { (UChar* )"Upper", 10, 5 }, - { (UChar* )"XDigit", 11, 6 }, - { (UChar* )"Word", 12, 4 }, - { (UChar* )"Alnum", 13, 5 }, - { (UChar* )"ASCII", 14, 5 }, - -#ifdef USE_UNICODE_PROPERTIES - { (UChar* )"Any", 15, 3 }, - { (UChar* )"Assigned", 16, 8 }, - { (UChar* )"C", 17, 1 }, - { (UChar* )"Cc", 18, 2 }, - { (UChar* )"Cf", 19, 2 }, - { (UChar* )"Cn", 20, 2 }, - { (UChar* )"Co", 21, 2 }, - { (UChar* )"Cs", 22, 2 }, - { (UChar* )"L", 23, 1 }, - { (UChar* )"Ll", 24, 2 }, - { (UChar* )"Lm", 25, 2 }, - { (UChar* )"Lo", 26, 2 }, - { (UChar* )"Lt", 27, 2 }, - { (UChar* )"Lu", 28, 2 }, - { (UChar* )"M", 29, 1 }, - { (UChar* )"Mc", 30, 2 }, - { (UChar* )"Me", 31, 2 }, - { (UChar* )"Mn", 32, 2 }, - { (UChar* )"N", 33, 1 }, - { (UChar* )"Nd", 34, 2 }, - { (UChar* )"Nl", 35, 2 }, - { (UChar* )"No", 36, 2 }, - { (UChar* )"P", 37, 1 }, - { (UChar* )"Pc", 38, 2 }, - { (UChar* )"Pd", 39, 2 }, - { (UChar* )"Pe", 40, 2 }, - { (UChar* )"Pf", 41, 2 }, - { (UChar* )"Pi", 42, 2 }, - { (UChar* )"Po", 43, 2 }, - { (UChar* )"Ps", 44, 2 }, - { (UChar* )"S", 45, 1 }, - { (UChar* )"Sc", 46, 2 }, - { (UChar* )"Sk", 47, 2 }, - { (UChar* )"Sm", 48, 2 }, - { (UChar* )"So", 49, 2 }, - { (UChar* )"Z", 50, 1 }, - { (UChar* )"Zl", 51, 2 }, - { (UChar* )"Zp", 52, 2 }, - { (UChar* )"Zs", 53, 2 }, - { (UChar* )"Arabic", 54, 6 }, - { (UChar* )"Armenian", 55, 8 }, - { (UChar* )"Bengali", 56, 7 }, - { (UChar* )"Bopomofo", 57, 8 }, - { (UChar* )"Braille", 58, 7 }, - { (UChar* )"Buginese", 59, 8 }, - { (UChar* )"Buhid", 60, 5 }, - { (UChar* )"Canadian_Aboriginal", 61, 19 }, - { (UChar* )"Cherokee", 62, 8 }, - { (UChar* )"Common", 63, 6 }, - { (UChar* )"Coptic", 64, 6 }, - { (UChar* )"Cypriot", 65, 7 }, - { (UChar* )"Cyrillic", 66, 8 }, - { (UChar* )"Deseret", 67, 7 }, - { (UChar* )"Devanagari", 68, 10 }, - { (UChar* )"Ethiopic", 69, 8 }, - { (UChar* )"Georgian", 70, 8 }, - { (UChar* )"Glagolitic", 71, 10 }, - { (UChar* )"Gothic", 72, 6 }, - { (UChar* )"Greek", 73, 5 }, - { (UChar* )"Gujarati", 74, 8 }, - { (UChar* )"Gurmukhi", 75, 8 }, - { (UChar* )"Han", 76, 3 }, - { (UChar* )"Hangul", 77, 6 }, - { (UChar* )"Hanunoo", 78, 7 }, - { (UChar* )"Hebrew", 79, 6 }, - { (UChar* )"Hiragana", 80, 8 }, - { (UChar* )"Inherited", 81, 9 }, - { (UChar* )"Kannada", 82, 7 }, - { (UChar* )"Katakana", 83, 8 }, - { (UChar* )"Kharoshthi", 84, 10 }, - { (UChar* )"Khmer", 85, 5 }, - { (UChar* )"Lao", 86, 3 }, - { (UChar* )"Latin", 87, 5 }, - { (UChar* )"Limbu", 88, 5 }, - { (UChar* )"Linear_B", 89, 8 }, - { (UChar* )"Malayalam", 90, 9 }, - { (UChar* )"Mongolian", 91, 9 }, - { (UChar* )"Myanmar", 92, 7 }, - { (UChar* )"New_Tai_Lue", 93, 11 }, - { (UChar* )"Ogham", 94, 5 }, - { (UChar* )"Old_Italic", 95, 10 }, - { (UChar* )"Old_Persian", 96, 11 }, - { (UChar* )"Oriya", 97, 5 }, - { (UChar* )"Osmanya", 98, 7 }, - { (UChar* )"Runic", 99, 5 }, - { (UChar* )"Shavian", 100, 7 }, - { (UChar* )"Sinhala", 101, 7 }, - { (UChar* )"Syloti_Nagri", 102, 12 }, - { (UChar* )"Syriac", 103, 6 }, - { (UChar* )"Tagalog", 104, 7 }, - { (UChar* )"Tagbanwa", 105, 8 }, - { (UChar* )"Tai_Le", 106, 6 }, - { (UChar* )"Tamil", 107, 5 }, - { (UChar* )"Telugu", 108, 6 }, - { (UChar* )"Thaana", 109, 6 }, - { (UChar* )"Thai", 110, 4 }, - { (UChar* )"Tibetan", 111, 7 }, - { (UChar* )"Tifinagh", 112, 8 }, - { (UChar* )"Ugaritic", 113, 8 }, - { (UChar* )"Yi", 114, 2 }, -#endif /* USE_UNICODE_PROPERTIES */ - { (UChar* )NULL, -1, 0 } -}; - -#ifdef USE_UNICODE_PROPERTIES -#define CODE_RANGES_NUM 115 -#else -#define CODE_RANGES_NUM 15 -#endif - -static const OnigCodePoint* CodeRanges[CODE_RANGES_NUM]; -static int CodeRangeTableInited = 0; - -static void init_code_range_array(void) { - THREAD_ATOMIC_START; - - CodeRanges[0] = CR_NEWLINE; - CodeRanges[1] = CR_Alpha; - CodeRanges[2] = CR_Blank; - CodeRanges[3] = CR_Cntrl; - CodeRanges[4] = CR_Digit; - CodeRanges[5] = CR_Graph; - CodeRanges[6] = CR_Lower; - CodeRanges[7] = CR_Print; - CodeRanges[8] = CR_Punct; - CodeRanges[9] = CR_Space; - CodeRanges[10] = CR_Upper; - CodeRanges[11] = CR_XDigit; - CodeRanges[12] = CR_Word; - CodeRanges[13] = CR_Alnum; - CodeRanges[14] = CR_ASCII; - -#ifdef USE_UNICODE_PROPERTIES - CodeRanges[15] = CR_Any; - CodeRanges[16] = CR_Assigned; - CodeRanges[17] = CR_C; - CodeRanges[18] = CR_Cc; - CodeRanges[19] = CR_Cf; - CodeRanges[20] = CR_Cn; - CodeRanges[21] = CR_Co; - CodeRanges[22] = CR_Cs; - CodeRanges[23] = CR_L; - CodeRanges[24] = CR_Ll; - CodeRanges[25] = CR_Lm; - CodeRanges[26] = CR_Lo; - CodeRanges[27] = CR_Lt; - CodeRanges[28] = CR_Lu; - CodeRanges[29] = CR_M; - CodeRanges[30] = CR_Mc; - CodeRanges[31] = CR_Me; - CodeRanges[32] = CR_Mn; - CodeRanges[33] = CR_N; - CodeRanges[34] = CR_Nd; - CodeRanges[35] = CR_Nl; - CodeRanges[36] = CR_No; - CodeRanges[37] = CR_P; - CodeRanges[38] = CR_Pc; - CodeRanges[39] = CR_Pd; - CodeRanges[40] = CR_Pe; - CodeRanges[41] = CR_Pf; - CodeRanges[42] = CR_Pi; - CodeRanges[43] = CR_Po; - CodeRanges[44] = CR_Ps; - CodeRanges[45] = CR_S; - CodeRanges[46] = CR_Sc; - CodeRanges[47] = CR_Sk; - CodeRanges[48] = CR_Sm; - CodeRanges[49] = CR_So; - CodeRanges[50] = CR_Z; - CodeRanges[51] = CR_Zl; - CodeRanges[52] = CR_Zp; - CodeRanges[53] = CR_Zs; - CodeRanges[54] = CR_Arabic; - CodeRanges[55] = CR_Armenian; - CodeRanges[56] = CR_Bengali; - CodeRanges[57] = CR_Bopomofo; - CodeRanges[58] = CR_Braille; - CodeRanges[59] = CR_Buginese; - CodeRanges[60] = CR_Buhid; - CodeRanges[61] = CR_Canadian_Aboriginal; - CodeRanges[62] = CR_Cherokee; - CodeRanges[63] = CR_Common; - CodeRanges[64] = CR_Coptic; - CodeRanges[65] = CR_Cypriot; - CodeRanges[66] = CR_Cyrillic; - CodeRanges[67] = CR_Deseret; - CodeRanges[68] = CR_Devanagari; - CodeRanges[69] = CR_Ethiopic; - CodeRanges[70] = CR_Georgian; - CodeRanges[71] = CR_Glagolitic; - CodeRanges[72] = CR_Gothic; - CodeRanges[73] = CR_Greek; - CodeRanges[74] = CR_Gujarati; - CodeRanges[75] = CR_Gurmukhi; - CodeRanges[76] = CR_Han; - CodeRanges[77] = CR_Hangul; - CodeRanges[78] = CR_Hanunoo; - CodeRanges[79] = CR_Hebrew; - CodeRanges[80] = CR_Hiragana; - CodeRanges[81] = CR_Inherited; - CodeRanges[82] = CR_Kannada; - CodeRanges[83] = CR_Katakana; - CodeRanges[84] = CR_Kharoshthi; - CodeRanges[85] = CR_Khmer; - CodeRanges[86] = CR_Lao; - CodeRanges[87] = CR_Latin; - CodeRanges[88] = CR_Limbu; - CodeRanges[89] = CR_Linear_B; - CodeRanges[90] = CR_Malayalam; - CodeRanges[91] = CR_Mongolian; - CodeRanges[92] = CR_Myanmar; - CodeRanges[93] = CR_New_Tai_Lue; - CodeRanges[94] = CR_Ogham; - CodeRanges[95] = CR_Old_Italic; - CodeRanges[96] = CR_Old_Persian; - CodeRanges[97] = CR_Oriya; - CodeRanges[98] = CR_Osmanya; - CodeRanges[99] = CR_Runic; - CodeRanges[100] = CR_Shavian; - CodeRanges[101] = CR_Sinhala; - CodeRanges[102] = CR_Syloti_Nagri; - CodeRanges[103] = CR_Syriac; - CodeRanges[104] = CR_Tagalog; - CodeRanges[105] = CR_Tagbanwa; - CodeRanges[106] = CR_Tai_Le; - CodeRanges[107] = CR_Tamil; - CodeRanges[108] = CR_Telugu; - CodeRanges[109] = CR_Thaana; - CodeRanges[110] = CR_Thai; - CodeRanges[111] = CR_Tibetan; - CodeRanges[112] = CR_Tifinagh; - CodeRanges[113] = CR_Ugaritic; - CodeRanges[114] = CR_Yi; -#endif /* USE_UNICODE_PROPERTIES */ - - CodeRangeTableInited = 1; - THREAD_ATOMIC_END; -} - -extern int -onigenc_unicode_is_code_ctype(OnigCodePoint code, unsigned int ctype) -{ - if ( -#ifdef USE_UNICODE_PROPERTIES - ctype <= ONIGENC_MAX_STD_CTYPE && -#endif - code < 256) { - return ONIGENC_IS_UNICODE_ISO_8859_1_CTYPE(code, ctype); - } - - if (ctype >= CODE_RANGES_NUM) { - return ONIGERR_TYPE_BUG; - } - - if (CodeRangeTableInited == 0) init_code_range_array(); - - return onig_is_in_code_range((UChar* )CodeRanges[ctype], code); -} - - -extern int -onigenc_unicode_ctype_code_range(int ctype, const OnigCodePoint* ranges[]) -{ - if (ctype >= CODE_RANGES_NUM) { - return ONIGERR_TYPE_BUG; - } - - if (CodeRangeTableInited == 0) init_code_range_array(); - - *ranges = CodeRanges[ctype]; - - return 0; -} - -extern int -onigenc_utf16_32_get_ctype_code_range(OnigCtype ctype, OnigCodePoint* sb_out, - const OnigCodePoint* ranges[]) -{ - *sb_out = 0x00; - return onigenc_unicode_ctype_code_range(ctype, ranges); -} - -#include "st.h" - -#define PROPERTY_NAME_MAX_SIZE 20 - -static st_table* NameCtypeTable; -static int NameTableInited = 0; - -static int init_name_ctype_table(void) -{ - PosixBracketEntryType *pb; - - THREAD_ATOMIC_START; - - NameCtypeTable = onig_st_init_strend_table_with_size(100); - if (ONIG_IS_NULL(NameCtypeTable)) return ONIGERR_MEMORY; - - for (pb = HashEntryData; ONIG_IS_NOT_NULL(pb->name); pb++) { - onig_st_insert_strend(NameCtypeTable, pb->name, pb->name + pb->len, - (st_data_t )pb->ctype); - } - - NameTableInited = 1; - THREAD_ATOMIC_END; - return 0; -} - -extern int -onigenc_unicode_property_name_to_ctype(OnigEncoding enc, UChar* name, UChar* end) -{ - int len; - hash_data_type ctype; - UChar buf[PROPERTY_NAME_MAX_SIZE]; - UChar *p; - OnigCodePoint code; - - p = name; - len = 0; - while (p < end) { - code = ONIGENC_MBC_TO_CODE(enc, p, end); - if (code >= 0x80) - return ONIGERR_INVALID_CHAR_PROPERTY_NAME; - - buf[len++] = (UChar )code; - if (len >= PROPERTY_NAME_MAX_SIZE) - return ONIGERR_INVALID_CHAR_PROPERTY_NAME; - - p += enclen(enc, p); - } - - buf[len] = 0; - - if (NameTableInited == 0) init_name_ctype_table(); - - if (onig_st_lookup_strend(NameCtypeTable, buf, buf + len, &ctype) == 0) { - return ONIGERR_INVALID_CHAR_PROPERTY_NAME; - } - - return (int )ctype; -} - - -static int -code2_cmp(OnigCodePoint* x, OnigCodePoint* y) -{ - if (x[0] == y[0] && x[1] == y[1]) return 0; - return 1; -} - -static int -code2_hash(OnigCodePoint* x) -{ - return (int )(x[0] + x[1]); -} - -static struct st_hash_type type_code2_hash = { - code2_cmp, - code2_hash, -}; - -static int -code3_cmp(OnigCodePoint* x, OnigCodePoint* y) -{ - if (x[0] == y[0] && x[1] == y[1] && x[2] == y[2]) return 0; - return 1; -} - -static int -code3_hash(OnigCodePoint* x) -{ - return (int )(x[0] + x[1] + x[2]); -} - -static struct st_hash_type type_code3_hash = { - code3_cmp, - code3_hash, -}; - - -static st_table* FoldTable; /* fold-1, fold-2, fold-3 */ -static st_table* Unfold1Table; -static st_table* Unfold2Table; -static st_table* Unfold3Table; -static int CaseFoldInited = 0; - - -extern void onigenc_end_unicode(void) -{ - THREAD_ATOMIC_START; - - if (FoldTable != 0) st_free_table(FoldTable); - if (Unfold1Table != 0) st_free_table(Unfold1Table); - if (Unfold2Table != 0) st_free_table(Unfold2Table); - if (Unfold3Table != 0) st_free_table(Unfold3Table); - - CaseFoldInited = 0; - - THREAD_ATOMIC_END; -} - -static int init_case_fold_table(void) -{ - const CaseFold_11_Type *p; - const CaseUnfold_11_Type *p1; - const CaseUnfold_12_Type *p2; - const CaseUnfold_13_Type *p3; - int i; - - THREAD_ATOMIC_START; - - FoldTable = st_init_numtable_with_size(1200); - if (ONIG_IS_NULL(FoldTable)) return ONIGERR_MEMORY; - for (i = 0; i < (int )(sizeof(CaseFold)/sizeof(CaseFold_11_Type)); i++) { - p = &CaseFold[i]; - st_add_direct(FoldTable, (st_data_t )p->from, (st_data_t )(UINTN)&(p->to)); - } - for (i = 0; i < (int )(sizeof(CaseFold_Locale)/sizeof(CaseFold_11_Type)); - i++) { - p = &CaseFold_Locale[i]; - st_add_direct(FoldTable, (st_data_t )p->from, (st_data_t )(UINTN)&(p->to)); - } - - Unfold1Table = st_init_numtable_with_size(1000); - if (ONIG_IS_NULL(Unfold1Table)) return ONIGERR_MEMORY; - - for (i = 0; i < (int )(sizeof(CaseUnfold_11)/sizeof(CaseUnfold_11_Type)); - i++) { - p1 = &CaseUnfold_11[i]; - st_add_direct(Unfold1Table, (st_data_t )p1->from, (st_data_t )(UINTN)&(p1->to)); - } - for (i = 0; - i < (int )(sizeof(CaseUnfold_11_Locale)/sizeof(CaseUnfold_11_Type)); - i++) { - p1 = &CaseUnfold_11_Locale[i]; - st_add_direct(Unfold1Table, (st_data_t )p1->from, (st_data_t )(UINTN)&(p1->to)); - } - - Unfold2Table = st_init_table_with_size(&type_code2_hash, 200); - if (ONIG_IS_NULL(Unfold2Table)) return ONIGERR_MEMORY; - - for (i = 0; i < (int )(sizeof(CaseUnfold_12)/sizeof(CaseUnfold_12_Type)); - i++) { - p2 = &CaseUnfold_12[i]; - st_add_direct(Unfold2Table, (st_data_t )(UINTN)p2->from, (st_data_t )(UINTN)(&p2->to)); - } - for (i = 0; - i < (int )(sizeof(CaseUnfold_12_Locale)/sizeof(CaseUnfold_12_Type)); - i++) { - p2 = &CaseUnfold_12_Locale[i]; - st_add_direct(Unfold2Table, (st_data_t )(UINTN)p2->from, (st_data_t )(UINTN)(&p2->to)); - } - - Unfold3Table = st_init_table_with_size(&type_code3_hash, 30); - if (ONIG_IS_NULL(Unfold3Table)) return ONIGERR_MEMORY; - - for (i = 0; i < (int )(sizeof(CaseUnfold_13)/sizeof(CaseUnfold_13_Type)); - i++) { - p3 = &CaseUnfold_13[i]; - st_add_direct(Unfold3Table, (st_data_t )(UINTN)p3->from, (st_data_t )(UINTN)(&p3->to)); - } - - - onig_add_end_call(onigenc_end_unicode); - - CaseFoldInited = 1; - THREAD_ATOMIC_END; - return 0; -} - -extern int -onigenc_unicode_mbc_case_fold(OnigEncoding enc, - OnigCaseFoldType flag ARG_UNUSED, const UChar** pp, const UChar* end, - UChar* fold) -{ - CodePointList3 *to; - OnigCodePoint code; - int i, len, rlen; - const UChar *p = *pp; - - if (CaseFoldInited == 0) init_case_fold_table(); - - code = ONIGENC_MBC_TO_CODE(enc, p, end); - len = enclen(enc, p); - *pp += len; - -#ifdef USE_UNICODE_CASE_FOLD_TURKISH_AZERI - if ((flag & ONIGENC_CASE_FOLD_TURKISH_AZERI) != 0) { - if (code == 0x0049) { - return ONIGENC_CODE_TO_MBC(enc, 0x0131, fold); - } - else if (code == 0x0130) { - return ONIGENC_CODE_TO_MBC(enc, 0x0069, fold); - } - } -#endif - - if (onig_st_lookup(FoldTable, (st_data_t )code, (void* )&to) != 0) { - if (to->n == 1) { - return ONIGENC_CODE_TO_MBC(enc, to->code[0], fold); - } -#if 0 - /* NO NEEDS TO CHECK */ - else if ((flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) != 0) { -#else - else { -#endif - rlen = 0; - for (i = 0; i < to->n; i++) { - len = ONIGENC_CODE_TO_MBC(enc, to->code[i], fold); - fold += len; - rlen += len; - } - return rlen; - } - } - - for (i = 0; i < len; i++) { - *fold++ = *p++; - } - return len; -} - -extern int -onigenc_unicode_apply_all_case_fold(OnigCaseFoldType flag, - OnigApplyAllCaseFoldFunc f, void* arg) -{ - const CaseUnfold_11_Type* p11; - OnigCodePoint code; - int i, j, k, r; - - /* if (CaseFoldInited == 0) init_case_fold_table(); */ - - for (i = 0; i < (int )(sizeof(CaseUnfold_11)/sizeof(CaseUnfold_11_Type)); - i++) { - p11 = &CaseUnfold_11[i]; - for (j = 0; j < p11->to.n; j++) { - code = p11->from; - r = (*f)(p11->to.code[j], &code, 1, arg); - if (r != 0) return r; - - code = p11->to.code[j]; - r = (*f)(p11->from, &code, 1, arg); - if (r != 0) return r; - - for (k = 0; k < j; k++) { - r = (*f)(p11->to.code[j], (OnigCodePoint* )(&p11->to.code[k]), 1, arg); - if (r != 0) return r; - - r = (*f)(p11->to.code[k], (OnigCodePoint* )(&p11->to.code[j]), 1, arg); - if (r != 0) return r; - } - } - } - -#ifdef USE_UNICODE_CASE_FOLD_TURKISH_AZERI - if ((flag & ONIGENC_CASE_FOLD_TURKISH_AZERI) != 0) { - code = 0x0131; - r = (*f)(0x0049, &code, 1, arg); - if (r != 0) return r; - code = 0x0049; - r = (*f)(0x0131, &code, 1, arg); - if (r != 0) return r; - - code = 0x0130; - r = (*f)(0x0069, &code, 1, arg); - if (r != 0) return r; - code = 0x0069; - r = (*f)(0x0130, &code, 1, arg); - if (r != 0) return r; - } - else { -#endif - for (i = 0; - i < (int )(sizeof(CaseUnfold_11_Locale)/sizeof(CaseUnfold_11_Type)); - i++) { - p11 = &CaseUnfold_11_Locale[i]; - for (j = 0; j < p11->to.n; j++) { - code = p11->from; - r = (*f)(p11->to.code[j], &code, 1, arg); - if (r != 0) return r; - - code = p11->to.code[j]; - r = (*f)(p11->from, &code, 1, arg); - if (r != 0) return r; - - for (k = 0; k < j; k++) { - r = (*f)(p11->to.code[j], (OnigCodePoint* )(&p11->to.code[k]), - 1, arg); - if (r != 0) return r; - - r = (*f)(p11->to.code[k], (OnigCodePoint* )(&p11->to.code[j]), - 1, arg); - if (r != 0) return r; - } - } - } -#ifdef USE_UNICODE_CASE_FOLD_TURKISH_AZERI - } -#endif - - if ((flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) != 0) { - for (i = 0; i < (int )(sizeof(CaseUnfold_12)/sizeof(CaseUnfold_12_Type)); - i++) { - for (j = 0; j < CaseUnfold_12[i].to.n; j++) { - r = (*f)(CaseUnfold_12[i].to.code[j], - (OnigCodePoint* )CaseUnfold_12[i].from, 2, arg); - if (r != 0) return r; - - for (k = 0; k < CaseUnfold_12[i].to.n; k++) { - if (k == j) continue; - - r = (*f)(CaseUnfold_12[i].to.code[j], - (OnigCodePoint* )(&CaseUnfold_12[i].to.code[k]), 1, arg); - if (r != 0) return r; - } - } - } - -#ifdef USE_UNICODE_CASE_FOLD_TURKISH_AZERI - if ((flag & ONIGENC_CASE_FOLD_TURKISH_AZERI) == 0) { -#endif - for (i = 0; - i < (int )(sizeof(CaseUnfold_12_Locale)/sizeof(CaseUnfold_12_Type)); - i++) { - for (j = 0; j < CaseUnfold_12_Locale[i].to.n; j++) { - r = (*f)(CaseUnfold_12_Locale[i].to.code[j], - (OnigCodePoint* )CaseUnfold_12_Locale[i].from, 2, arg); - if (r != 0) return r; - - for (k = 0; k < CaseUnfold_12_Locale[i].to.n; k++) { - if (k == j) continue; - - r = (*f)(CaseUnfold_12_Locale[i].to.code[j], - (OnigCodePoint* )(&CaseUnfold_12_Locale[i].to.code[k]), - 1, arg); - if (r != 0) return r; - } - } - } -#ifdef USE_UNICODE_CASE_FOLD_TURKISH_AZERI - } -#endif - - for (i = 0; i < (int )(sizeof(CaseUnfold_13)/sizeof(CaseUnfold_13_Type)); - i++) { - for (j = 0; j < CaseUnfold_13[i].to.n; j++) { - r = (*f)(CaseUnfold_13[i].to.code[j], - (OnigCodePoint* )CaseUnfold_13[i].from, 3, arg); - if (r != 0) return r; - - for (k = 0; k < CaseUnfold_13[i].to.n; k++) { - if (k == j) continue; - - r = (*f)(CaseUnfold_13[i].to.code[j], - (OnigCodePoint* )(&CaseUnfold_13[i].to.code[k]), 1, arg); - if (r != 0) return r; - } - } - } - } - - return 0; -} - -extern int -onigenc_unicode_get_case_fold_codes_by_str(OnigEncoding enc, - OnigCaseFoldType flag, const OnigUChar* p, const OnigUChar* end, - OnigCaseFoldCodeItem items[]) -{ - int n, i, j, k, len; - OnigCodePoint code, codes[3]; - CodePointList3 *to, *z3; - CodePointList2 *z2; - - if (CaseFoldInited == 0) init_case_fold_table(); - - n = 0; - - code = ONIGENC_MBC_TO_CODE(enc, p, end); - len = enclen(enc, p); - -#ifdef USE_UNICODE_CASE_FOLD_TURKISH_AZERI - if ((flag & ONIGENC_CASE_FOLD_TURKISH_AZERI) != 0) { - if (code == 0x0049) { - items[0].byte_len = len; - items[0].code_len = 1; - items[0].code[0] = 0x0131; - return 1; - } - else if (code == 0x0130) { - items[0].byte_len = len; - items[0].code_len = 1; - items[0].code[0] = 0x0069; - return 1; - } - else if (code == 0x0131) { - items[0].byte_len = len; - items[0].code_len = 1; - items[0].code[0] = 0x0049; - return 1; - } - else if (code == 0x0069) { - items[0].byte_len = len; - items[0].code_len = 1; - items[0].code[0] = 0x0130; - return 1; - } - } -#endif - - if (onig_st_lookup(FoldTable, (st_data_t )code, (void* )&to) != 0) { - if (to->n == 1) { - OnigCodePoint orig_code = code; - - items[0].byte_len = len; - items[0].code_len = 1; - items[0].code[0] = to->code[0]; - n++; - - code = to->code[0]; - if (onig_st_lookup(Unfold1Table, (st_data_t )code, (void* )&to) != 0) { - for (i = 0; i < to->n; i++) { - if (to->code[i] != orig_code) { - items[n].byte_len = len; - items[n].code_len = 1; - items[n].code[0] = to->code[i]; - n++; - } - } - } - } - else if ((flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) != 0) { - OnigCodePoint cs[3][4]; - int fn, ncs[3]={0, 0, 0}; - - for (fn = 0; fn < to->n; fn++) { - cs[fn][0] = to->code[fn]; - if (onig_st_lookup(Unfold1Table, (st_data_t )cs[fn][0], - (void* )&z3) != 0) { - for (i = 0; i < z3->n; i++) { - cs[fn][i+1] = z3->code[i]; - } - ncs[fn] = z3->n + 1; - } - else - ncs[fn] = 1; - } - - if (fn == 2) { - for (i = 0; i < ncs[0]; i++) { - for (j = 0; j < ncs[1]; j++) { - items[n].byte_len = len; - items[n].code_len = 2; - items[n].code[0] = cs[0][i]; - items[n].code[1] = cs[1][j]; - n++; - } - } - - if (onig_st_lookup(Unfold2Table, (st_data_t )(UINTN)to->code, - (void* )&z2) != 0) { - for (i = 0; i < z2->n; i++) { - if (z2->code[i] == code) continue; - - items[n].byte_len = len; - items[n].code_len = 1; - items[n].code[0] = z2->code[i]; - n++; - } - } - } - else { - 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].code_len = 3; - items[n].code[0] = cs[0][i]; - items[n].code[1] = cs[1][j]; - items[n].code[2] = cs[2][k]; - n++; - } - } - } - - if (onig_st_lookup(Unfold3Table, (st_data_t )(UINTN)to->code, - (void* )&z2) != 0) { - for (i = 0; i < z2->n; i++) { - if (z2->code[i] == code) continue; - - items[n].byte_len = len; - items[n].code_len = 1; - items[n].code[0] = z2->code[i]; - n++; - } - } - } - - /* multi char folded code is not head of another folded multi char */ - flag = 0; /* DISABLE_CASE_FOLD_MULTI_CHAR(flag); */ - } - } - else { - if (onig_st_lookup(Unfold1Table, (st_data_t )code, (void* )&to) != 0) { - for (i = 0; i < to->n; i++) { - items[n].byte_len = len; - items[n].code_len = 1; - items[n].code[0] = to->code[i]; - n++; - } - } - } - - - if ((flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) != 0) { - p += len; - if (p < end) { - int clen; - - codes[0] = code; - code = ONIGENC_MBC_TO_CODE(enc, p, end); - if (onig_st_lookup(FoldTable, (st_data_t )code, (void* )&to) != 0 - && to->n == 1) { - codes[1] = to->code[0]; - } - else - codes[1] = code; - - clen = enclen(enc, p); - len += clen; - if (onig_st_lookup(Unfold2Table, (st_data_t )(UINTN)codes, (void* )&z2) != 0) { - for (i = 0; i < z2->n; i++) { - items[n].byte_len = len; - items[n].code_len = 1; - items[n].code[0] = z2->code[i]; - n++; - } - } - - p += clen; - if (p < end) { - code = ONIGENC_MBC_TO_CODE(enc, p, end); - if (onig_st_lookup(FoldTable, (st_data_t )code, (void* )&to) != 0 - && to->n == 1) { - codes[2] = to->code[0]; - } - else - codes[2] = code; - - clen = enclen(enc, p); - len += clen; - if (onig_st_lookup(Unfold3Table, (st_data_t )(UINTN)codes, - (void* )&z2) != 0) { - for (i = 0; i < z2->n; i++) { - items[n].byte_len = len; - items[n].code_len = 1; - items[n].code[0] = z2->code[i]; - n++; - } - } - } - } - } - - return n; -} diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/enc/ascii.c b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/onig_init.c similarity index 59% rename from MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/enc/ascii.c rename to MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/onig_init.c index 25afc980be..9fc6dca3c0 100644 --- a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/enc/ascii.c +++ b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/onig_init.c @@ -1,8 +1,8 @@ /********************************************************************** - ascii.c - Oniguruma (regular expression library) + onig_init.c - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2002-2006 K.Kosako + * Copyright (c) 2016-2018 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -27,32 +27,19 @@ * SUCH DAMAGE. */ -#include "regenc.h" +#include "regint.h" -static int -ascii_is_code_ctype(OnigCodePoint code, unsigned int ctype) +/* onig_init(): deprecated function */ +extern int +onig_init(void) { - if (code < 128) - return ONIGENC_IS_ASCII_CODE_CTYPE(code, ctype); - else - return FALSE; -} +#if 0 + OnigEncoding encs[] = { + ONIG_ENCODING_UTF8 + }; -OnigEncodingType OnigEncodingASCII = { - onigenc_single_byte_mbc_enc_len, - "US-ASCII", /* name */ - 1, /* max byte length */ - 1, /* min byte length */ - onigenc_is_mbc_newline_0x0a, - onigenc_single_byte_mbc_to_code, - onigenc_single_byte_code_to_mbclen, - onigenc_single_byte_code_to_mbc, - onigenc_ascii_mbc_case_fold, - onigenc_ascii_apply_all_case_fold, - onigenc_ascii_get_case_fold_codes_by_str, - onigenc_minimum_property_name_to_ctype, - ascii_is_code_ctype, - onigenc_not_support_get_ctype_code_range, - onigenc_single_byte_left_adjust_char_head, - onigenc_always_true_is_allowed_reverse_match -}; + return onig_initialize(encs, sizeof(encs)/sizeof(encs[0])); +#else + return onig_initialize(0, 0); +#endif +} diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/oniggnu.h b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/oniggnu.h index 7ec8e2e7f1..313e5915c3 100644 --- a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/oniggnu.h +++ b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/oniggnu.h @@ -35,10 +35,12 @@ extern "C" { #endif -#define RE_MBCTYPE_ASCII 0 -#define RE_MBCTYPE_EUC 1 -#define RE_MBCTYPE_SJIS 2 -#define RE_MBCTYPE_UTF8 3 +enum { + RE_MBCTYPE_ASCII = 0, + RE_MBCTYPE_EUC = 1, + RE_MBCTYPE_SJIS = 2, + RE_MBCTYPE_UTF8 = 3 +}; /* GNU regex options */ #ifndef RE_NREGS diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/onigposix.h b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/onigposix.h index 7c2cad123b..62266da76e 100644 --- a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/onigposix.h +++ b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/onigposix.h @@ -4,7 +4,7 @@ onigposix.h - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2002-2005 K.Kosako + * Copyright (c) 2002-2018 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -39,7 +39,7 @@ extern "C" { #define REG_NEWLINE (1<<1) #define REG_NOTBOL (1<<2) #define REG_NOTEOL (1<<3) -#define REG_EXTENDED (1<<4) /* if not setted, Basic Onigular Expression */ +#define REG_EXTENDED (1<<4) /* if not set, Basic Onigular Expression */ #define REG_NOSUB (1<<5) /* POSIX error codes */ @@ -61,7 +61,7 @@ extern "C" { #define REG_EONIG_INTERNAL 14 #define REG_EONIG_BADWC 15 #define REG_EONIG_BADARG 16 -#define REG_EONIG_THREAD 17 +/* #define REG_EONIG_THREAD 17 */ /* character encodings (for reg_set_encoding()) */ #define REG_POSIX_ENCODING_ASCII 0 @@ -97,7 +97,7 @@ typedef struct { #ifndef ONIG_EXTERN #if defined(_WIN32) && !defined(__GNUC__) -#if defined(EXPORT) +#if defined(ONIGURUMA_EXPORT) #define ONIG_EXTERN extern __declspec(dllexport) #else #define ONIG_EXTERN extern __declspec(dllimport) @@ -128,6 +128,7 @@ ONIG_EXTERN OnigSyntaxType OnigSyntaxGnuRegex; ONIG_EXTERN OnigSyntaxType OnigSyntaxJava; ONIG_EXTERN OnigSyntaxType OnigSyntaxPerl; ONIG_EXTERN OnigSyntaxType OnigSyntaxRuby; +ONIG_EXTERN OnigSyntaxType OnigSyntaxOniguruma; /* predefined syntaxes (see regsyntax.c) */ #define ONIG_SYNTAX_POSIX_BASIC (&OnigSyntaxPosixBasic) @@ -138,6 +139,7 @@ ONIG_EXTERN OnigSyntaxType OnigSyntaxRuby; #define ONIG_SYNTAX_JAVA (&OnigSyntaxJava) #define ONIG_SYNTAX_PERL (&OnigSyntaxPerl) #define ONIG_SYNTAX_RUBY (&OnigSyntaxRuby) +#define ONIG_SYNTAX_ONIGURUMA (&OnigSyntaxOniguruma) /* default syntax */ #define ONIG_SYNTAX_DEFAULT OnigDefaultSyntax @@ -147,6 +149,7 @@ ONIG_EXTERN int onig_set_default_syntax P_((OnigSyntaxType* syntax)); ONIG_EXTERN void onig_copy_syntax P_((OnigSyntaxType* to, OnigSyntaxType* from)); ONIG_EXTERN const char* onig_version P_((void)); ONIG_EXTERN const char* onig_copyright P_((void)); +ONIG_EXTERN int onig_end P_((void)); #endif /* ONIGURUMA_H */ diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/oniguruma.h b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/oniguruma.h index 462565aeca..5f31a91c67 100644 --- a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/oniguruma.h +++ b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/oniguruma.h @@ -4,7 +4,7 @@ oniguruma.h - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2002-2009 K.Kosako + * Copyright (c) 2002-2018 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -36,31 +36,11 @@ extern "C" { #endif #define ONIGURUMA -#define ONIGURUMA_VERSION_MAJOR 5 +#define ONIGURUMA_VERSION_MAJOR 6 #define ONIGURUMA_VERSION_MINOR 9 -#define ONIGURUMA_VERSION_TEENY 6 +#define ONIGURUMA_VERSION_TEENY 0 -#ifdef __cplusplus -# ifndef HAVE_PROTOTYPES -# define HAVE_PROTOTYPES 1 -# endif -# ifndef HAVE_STDARG_PROTOTYPES -# define HAVE_STDARG_PROTOTYPES 1 -# endif -#endif - -/* escape Mac OS X/Xcode 2.4/gcc 4.0.1 problem */ -#if defined(__APPLE__) && defined(__GNUC__) && __GNUC__ >= 4 -# ifndef HAVE_STDARG_PROTOTYPES -# define HAVE_STDARG_PROTOTYPES 1 -# endif -#endif - -#ifdef HAVE_STDARG_H -# ifndef HAVE_STDARG_PROTOTYPES -# define HAVE_STDARG_PROTOTYPES 1 -# endif -#endif +#define ONIGURUMA_VERSION_INT 60900 #ifndef P_ #if defined(__STDC__) || defined(_WIN32) @@ -71,16 +51,12 @@ extern "C" { #endif #ifndef PV_ -#ifdef HAVE_STDARG_PROTOTYPES # define PV_(args) args -#else -# define PV_(args) () -#endif #endif #ifndef ONIG_EXTERN #if defined(_WIN32) && !defined(__GNUC__) -#if defined(EXPORT) || defined(RUBY_EXPORT) +#if defined(ONIGURUMA_EXPORT) #define ONIG_EXTERN extern __declspec(dllexport) #else #define ONIG_EXTERN extern __declspec(dllimport) @@ -98,17 +74,12 @@ extern "C" { #define UChar OnigUChar #endif -#ifdef _WIN32 -# include -typedef ULONG_PTR OnigCodePoint; -#else -typedef unsigned long OnigCodePoint; -#endif +typedef unsigned int OnigCodePoint; typedef unsigned char OnigUChar; typedef unsigned int OnigCtype; -typedef unsigned int OnigDistance; +typedef unsigned int OnigLen; -#define ONIG_INFINITE_DISTANCE ~((OnigDistance )0) +#define ONIG_INFINITE_DISTANCE ~((OnigLen )0) typedef unsigned int OnigCaseFoldType; /* case fold flag */ @@ -146,7 +117,7 @@ typedef struct { OnigCodePoint one_or_more_time; OnigCodePoint anychar_anytime; } OnigMetaCharTableType; - + typedef int (*OnigApplyAllCaseFoldFunc)(OnigCodePoint from, OnigCodePoint* to, int to_len, void* arg); typedef struct OnigEncodingTypeST { @@ -166,6 +137,12 @@ typedef struct OnigEncodingTypeST { int (*get_ctype_code_range)(OnigCtype ctype, OnigCodePoint* sb_out, const OnigCodePoint* ranges[]); OnigUChar* (*left_adjust_char_head)(const OnigUChar* start, const OnigUChar* p); int (*is_allowed_reverse_match)(const OnigUChar* p, const OnigUChar* end); + int (*init)(void); + int (*is_initialized)(void); + int (*is_valid_mbc_string)(const OnigUChar* s, const OnigUChar* end); + unsigned int flag; + OnigCodePoint sb_range; + int index; } OnigEncodingType; typedef OnigEncodingType* OnigEncoding; @@ -243,21 +220,24 @@ ONIG_EXTERN OnigEncodingType OnigEncodingGB18030; /* 18: 6(max-byte) * 3(case-fold chars) */ /* character types */ -#define ONIGENC_CTYPE_NEWLINE 0 -#define ONIGENC_CTYPE_ALPHA 1 -#define ONIGENC_CTYPE_BLANK 2 -#define ONIGENC_CTYPE_CNTRL 3 -#define ONIGENC_CTYPE_DIGIT 4 -#define ONIGENC_CTYPE_GRAPH 5 -#define ONIGENC_CTYPE_LOWER 6 -#define ONIGENC_CTYPE_PRINT 7 -#define ONIGENC_CTYPE_PUNCT 8 -#define ONIGENC_CTYPE_SPACE 9 -#define ONIGENC_CTYPE_UPPER 10 -#define ONIGENC_CTYPE_XDIGIT 11 -#define ONIGENC_CTYPE_WORD 12 -#define ONIGENC_CTYPE_ALNUM 13 /* alpha || digit */ -#define ONIGENC_CTYPE_ASCII 14 +typedef enum { + ONIGENC_CTYPE_NEWLINE = 0, + ONIGENC_CTYPE_ALPHA = 1, + ONIGENC_CTYPE_BLANK = 2, + ONIGENC_CTYPE_CNTRL = 3, + ONIGENC_CTYPE_DIGIT = 4, + ONIGENC_CTYPE_GRAPH = 5, + ONIGENC_CTYPE_LOWER = 6, + ONIGENC_CTYPE_PRINT = 7, + ONIGENC_CTYPE_PUNCT = 8, + ONIGENC_CTYPE_SPACE = 9, + ONIGENC_CTYPE_UPPER = 10, + ONIGENC_CTYPE_XDIGIT = 11, + ONIGENC_CTYPE_WORD = 12, + ONIGENC_CTYPE_ALNUM = 13, /* alpha || digit */ + ONIGENC_CTYPE_ASCII = 14 +} OnigEncCtype; + #define ONIGENC_MAX_STD_CTYPE ONIGENC_CTYPE_ASCII @@ -270,7 +250,7 @@ ONIG_EXTERN OnigEncodingType OnigEncodingGB18030; #define ONIGENC_IS_CODE_ASCII(code) ((code) < 128) #define ONIGENC_IS_MBC_WORD(enc,s,end) \ ONIGENC_IS_CODE_WORD(enc,ONIGENC_MBC_TO_CODE(enc,s,end)) - +#define ONIGENC_IS_MBC_WORD_ASCII(enc,s,end) onigenc_is_mbc_word_ascii(enc,s,end) #define ONIGENC_NAME(enc) ((enc)->name) @@ -280,6 +260,8 @@ ONIG_EXTERN OnigEncodingType OnigEncodingGB18030; (enc)->is_allowed_reverse_match(s,end) #define ONIGENC_LEFT_ADJUST_CHAR_HEAD(enc,start,s) \ (enc)->left_adjust_char_head(start, s) +#define ONIGENC_IS_VALID_MBC_STRING(enc,s,end) \ + (enc)->is_valid_mbc_string(s,end) #define ONIGENC_APPLY_ALL_CASE_FOLD(enc,case_fold_flag,f,arg) \ (enc)->apply_all_case_fold(case_fold_flag,f,arg) #define ONIGENC_GET_CASE_FOLD_CODES_BY_STR(enc,case_fold_flag,p,end,acs) \ @@ -340,6 +322,8 @@ OnigUChar* onigenc_step_back P_((OnigEncoding enc, const OnigUChar* start, const ONIG_EXTERN int onigenc_init P_((void)); ONIG_EXTERN +int onig_initialize_encoding P_((OnigEncoding enc)); +ONIG_EXTERN int onigenc_set_default_encoding P_((OnigEncoding enc)); ONIG_EXTERN OnigEncoding onigenc_get_default_encoding P_((void)); @@ -359,13 +343,17 @@ ONIG_EXTERN int onigenc_strlen_null P_((OnigEncoding enc, const OnigUChar* p)); ONIG_EXTERN int onigenc_str_bytelen_null P_((OnigEncoding enc, const OnigUChar* p)); - +ONIG_EXTERN +int onigenc_is_valid_mbc_string P_((OnigEncoding enc, const OnigUChar* s, const OnigUChar* end)); +ONIG_EXTERN +OnigUChar* onigenc_strdup P_((OnigEncoding enc, const OnigUChar* s, const OnigUChar* end)); /* PART: regular expression */ /* config parameters */ #define ONIG_NREGION 10 +#define ONIG_MAX_CAPTURE_NUM 2147483647 /* 2**31 - 1 */ #define ONIG_MAX_BACKREF_NUM 1000 #define ONIG_MAX_REPEAT_NUM 100000 #define ONIG_MAX_MULTI_BYTE_RANGES_NUM 10000 @@ -378,6 +366,7 @@ typedef unsigned int OnigOptionType; /* options */ #define ONIG_OPTION_NONE 0U +/* options (compile time) */ #define ONIG_OPTION_IGNORECASE 1U #define ONIG_OPTION_EXTEND (ONIG_OPTION_IGNORECASE << 1) #define ONIG_OPTION_MULTILINE (ONIG_OPTION_EXTEND << 1) @@ -388,10 +377,18 @@ typedef unsigned int OnigOptionType; #define ONIG_OPTION_DONT_CAPTURE_GROUP (ONIG_OPTION_NEGATE_SINGLELINE << 1) #define ONIG_OPTION_CAPTURE_GROUP (ONIG_OPTION_DONT_CAPTURE_GROUP << 1) /* options (search time) */ -#define ONIG_OPTION_NOTBOL (ONIG_OPTION_CAPTURE_GROUP << 1) -#define ONIG_OPTION_NOTEOL (ONIG_OPTION_NOTBOL << 1) -#define ONIG_OPTION_POSIX_REGION (ONIG_OPTION_NOTEOL << 1) -#define ONIG_OPTION_MAXBIT ONIG_OPTION_POSIX_REGION /* limit */ +#define ONIG_OPTION_NOTBOL (ONIG_OPTION_CAPTURE_GROUP << 1) +#define ONIG_OPTION_NOTEOL (ONIG_OPTION_NOTBOL << 1) +#define ONIG_OPTION_POSIX_REGION (ONIG_OPTION_NOTEOL << 1) +#define ONIG_OPTION_CHECK_VALIDITY_OF_STRING (ONIG_OPTION_POSIX_REGION << 1) +/* #define ONIG_OPTION_CRLF_AS_LINE_SEPARATOR (ONIG_OPTION_CHECK_VALIDITY_OF_STRING << 1) */ +/* options (compile time) */ +#define ONIG_OPTION_WORD_IS_ASCII (ONIG_OPTION_CHECK_VALIDITY_OF_STRING << 4) +#define ONIG_OPTION_DIGIT_IS_ASCII (ONIG_OPTION_WORD_IS_ASCII << 1) +#define ONIG_OPTION_SPACE_IS_ASCII (ONIG_OPTION_DIGIT_IS_ASCII << 1) +#define ONIG_OPTION_POSIX_IS_ASCII (ONIG_OPTION_SPACE_IS_ASCII << 1) + +#define ONIG_OPTION_MAXBIT ONIG_OPTION_POSIX_IS_ASCII /* limit */ #define ONIG_OPTION_ON(options,regopt) ((options) |= (regopt)) #define ONIG_OPTION_OFF(options,regopt) ((options) &= ~(regopt)) @@ -416,6 +413,7 @@ ONIG_EXTERN OnigSyntaxType OnigSyntaxJava; ONIG_EXTERN OnigSyntaxType OnigSyntaxPerl; ONIG_EXTERN OnigSyntaxType OnigSyntaxPerl_NG; ONIG_EXTERN OnigSyntaxType OnigSyntaxRuby; +ONIG_EXTERN OnigSyntaxType OnigSyntaxOniguruma; /* predefined syntaxes (see regsyntax.c) */ #define ONIG_SYNTAX_ASIS (&OnigSyntaxASIS) @@ -428,6 +426,7 @@ ONIG_EXTERN OnigSyntaxType OnigSyntaxRuby; #define ONIG_SYNTAX_PERL (&OnigSyntaxPerl) #define ONIG_SYNTAX_PERL_NG (&OnigSyntaxPerl_NG) #define ONIG_SYNTAX_RUBY (&OnigSyntaxRuby) +#define ONIG_SYNTAX_ONIGURUMA (&OnigSyntaxOniguruma) /* default syntax */ ONIG_EXTERN OnigSyntaxType* OnigDefaultSyntax; @@ -465,6 +464,7 @@ ONIG_EXTERN OnigSyntaxType* OnigDefaultSyntax; #define ONIG_SYN_OP_ESC_OCTAL3 (1U<<28) /* \OOO */ #define ONIG_SYN_OP_ESC_X_HEX2 (1U<<29) /* \xHH */ #define ONIG_SYN_OP_ESC_X_BRACE_HEX8 (1U<<30) /* \x{7HHHHHHH} */ +#define ONIG_SYN_OP_ESC_O_BRACE_OCTAL (1U<<31) /* \o{1OOOOOOOOOO} */ #define ONIG_SYN_OP2_ESC_CAPITAL_Q_QUOTE (1U<<0) /* \Q...\E */ #define ONIG_SYN_OP2_QMARK_GROUP_EFFECT (1U<<1) /* (?...) */ @@ -487,6 +487,15 @@ ONIG_EXTERN OnigSyntaxType* OnigDefaultSyntax; /* #define ONIG_SYN_OP2_CHAR_PROPERTY_PREFIX_IS (1U<<18) */ #define ONIG_SYN_OP2_ESC_H_XDIGIT (1U<<19) /* \h, \H */ #define ONIG_SYN_OP2_INEFFECTIVE_ESCAPE (1U<<20) /* \ */ +#define ONIG_SYN_OP2_QMARK_LPAREN_IF_ELSE (1U<<21) /* (?(n)) (?(...)...|...) */ +#define ONIG_SYN_OP2_ESC_CAPITAL_K_KEEP (1U<<22) /* \K */ +#define ONIG_SYN_OP2_ESC_CAPITAL_R_GENERAL_NEWLINE (1U<<23) /* \R \r\n else [\x0a-\x0d] */ +#define ONIG_SYN_OP2_ESC_CAPITAL_N_O_SUPER_DOT (1U<<24) /* \N (?-m:.), \O (?m:.) */ +#define ONIG_SYN_OP2_QMARK_TILDE_ABSENT_GROUP (1U<<25) /* (?~...) */ +#define ONIG_SYN_OP2_ESC_X_Y_GRAPHEME_CLUSTER (1U<<26) /* \X \y \Y */ +#define ONIG_SYN_OP2_QMARK_PERL_SUBEXP_CALL (1U<<27) /* (?R), (?&name)... */ +#define ONIG_SYN_OP2_QMARK_BRACE_CALLOUT_CONTENTS (1U<<28) /* (?{...}) (?{{...}}) */ +#define ONIG_SYN_OP2_ASTERISK_CALLOUT_NAME (1U<<29) /* (*name) (*name{a,..}) */ /* syntax (behavior) */ #define ONIG_SYN_CONTEXT_INDEP_ANCHORS (1U<<31) /* not implemented */ @@ -526,6 +535,7 @@ ONIG_EXTERN OnigSyntaxType* OnigDefaultSyntax; #define ONIG_NORMAL 0 #define ONIG_MISMATCH -1 #define ONIG_NO_SUPPORT_CONFIG -2 +#define ONIG_ABORT -3 /* internal error */ #define ONIGERR_MEMORY -5 @@ -535,10 +545,13 @@ ONIG_EXTERN OnigSyntaxType* OnigDefaultSyntax; #define ONIGERR_UNDEFINED_BYTECODE -13 #define ONIGERR_UNEXPECTED_BYTECODE -14 #define ONIGERR_MATCH_STACK_LIMIT_OVER -15 +#define ONIGERR_PARSE_DEPTH_LIMIT_OVER -16 +#define ONIGERR_RETRY_LIMIT_IN_MATCH_OVER -17 #define ONIGERR_DEFAULT_ENCODING_IS_NOT_SETTED -21 #define ONIGERR_SPECIFIED_ENCODING_CANT_CONVERT_TO_WIDE_CHAR -22 +#define ONIGERR_FAIL_TO_INITIALIZE -23 /* general error */ -#define ONIGERR_INVALID_ARGUMENT -30 +#define ONIGERR_INVALID_ARGUMENT -30 /* syntax error */ #define ONIGERR_END_PATTERN_AT_LEFT_BRACE -100 #define ONIGERR_END_PATTERN_AT_LEFT_BRACKET -101 @@ -573,6 +586,7 @@ ONIG_EXTERN OnigSyntaxType* OnigDefaultSyntax; #define ONIGERR_TOO_BIG_BACKREF_NUMBER -207 #define ONIGERR_INVALID_BACKREF -208 #define ONIGERR_NUMBERED_BACKREF_OR_CALL_NOT_ALLOWED -209 +#define ONIGERR_TOO_MANY_CAPTURES -210 #define ONIGERR_TOO_LONG_WIDE_CHAR_VALUE -212 #define ONIGERR_EMPTY_GROUP_NAME -214 #define ONIGERR_INVALID_GROUP_NAME -215 @@ -584,17 +598,29 @@ ONIG_EXTERN OnigSyntaxType* OnigDefaultSyntax; #define ONIGERR_NEVER_ENDING_RECURSION -221 #define ONIGERR_GROUP_NUMBER_OVER_FOR_CAPTURE_HISTORY -222 #define ONIGERR_INVALID_CHAR_PROPERTY_NAME -223 +#define ONIGERR_INVALID_IF_ELSE_SYNTAX -224 +#define ONIGERR_INVALID_ABSENT_GROUP_PATTERN -225 +#define ONIGERR_INVALID_ABSENT_GROUP_GENERATOR_PATTERN -226 +#define ONIGERR_INVALID_CALLOUT_PATTERN -227 +#define ONIGERR_INVALID_CALLOUT_NAME -228 +#define ONIGERR_UNDEFINED_CALLOUT_NAME -229 +#define ONIGERR_INVALID_CALLOUT_BODY -230 +#define ONIGERR_INVALID_CALLOUT_TAG_NAME -231 +#define ONIGERR_INVALID_CALLOUT_ARG -232 #define ONIGERR_INVALID_CODE_POINT_VALUE -400 #define ONIGERR_INVALID_WIDE_CHAR_VALUE -400 #define ONIGERR_TOO_BIG_WIDE_CHAR_VALUE -401 #define ONIGERR_NOT_SUPPORTED_ENCODING_COMBINATION -402 #define ONIGERR_INVALID_COMBINATION_OF_OPTIONS -403 +#define ONIGERR_TOO_MANY_USER_DEFINED_OBJECTS -404 +#define ONIGERR_TOO_LONG_PROPERTY_NAME -405 +#define ONIGERR_LIBRARY_IS_NOT_INITIALIZED -500 /* errors related to thread */ -#define ONIGERR_OVER_THREAD_PASS_LIMIT_COUNT -1001 +/* #define ONIGERR_OVER_THREAD_PASS_LIMIT_COUNT -1001 */ -/* must be smaller than BIT_STATUS_BITS_NUM (unsigned int * 8) */ +/* must be smaller than MEM_STATUS_BITS_NUM (unsigned int * 8) */ #define ONIG_MAX_CAPTURE_HISTORY_GROUP 31 #define ONIG_IS_CAPTURE_HISTORY_GROUP(r, i) \ ((i) <= ONIG_MAX_CAPTURE_HISTORY_GROUP && (r)->list && (r)->list[i]) @@ -646,59 +672,8 @@ extern void onig_null_warn P_((const char* s)); #define ONIG_CHAR_TABLE_SIZE 256 -/* regex_t state */ -#define ONIG_STATE_NORMAL 0 -#define ONIG_STATE_SEARCHING 1 -#define ONIG_STATE_COMPILING -1 -#define ONIG_STATE_MODIFY -2 - -#define ONIG_STATE(reg) \ - ((reg)->state > 0 ? ONIG_STATE_SEARCHING : (reg)->state) - -typedef struct re_pattern_buffer { - /* common members of BBuf(bytes-buffer) */ - unsigned char* p; /* compiled pattern */ - unsigned int used; /* used space for p */ - unsigned int alloc; /* allocated space for p */ - - int state; /* normal, searching, compiling */ - int num_mem; /* used memory(...) num counted from 1 */ - int num_repeat; /* OP_REPEAT/OP_REPEAT_NG id-counter */ - int num_null_check; /* OP_NULL_CHECK_START/END id counter */ - int num_comb_exp_check; /* combination explosion check */ - int num_call; /* number of subexp call */ - unsigned int capture_history; /* (?@...) flag (1-31) */ - unsigned int bt_mem_start; /* need backtrack flag */ - unsigned int bt_mem_end; /* need backtrack flag */ - int stack_pop_level; - int repeat_range_alloc; - OnigRepeatRange* repeat_range; - - OnigEncoding enc; - OnigOptionType options; - OnigSyntaxType* syntax; - OnigCaseFoldType case_fold_flag; - void* name_table; - - /* optimization info (string search, char-map and anchors) */ - int optimize; /* optimize flag */ - int threshold_len; /* search str-length for apply optimize */ - int anchor; /* BEGIN_BUF, BEGIN_POS, (SEMI_)END_BUF */ - OnigDistance anchor_dmin; /* (SEMI_)END_BUF anchor distance */ - OnigDistance anchor_dmax; /* (SEMI_)END_BUF anchor distance */ - int sub_anchor; /* start-anchor for exact or map */ - unsigned char *exact; - unsigned char *exact_end; - unsigned char map[ONIG_CHAR_TABLE_SIZE]; /* used as BM skip or char-map */ - int *int_map; /* BM skip for exact_len > 255 */ - int *int_map_backward; /* BM skip for backward search */ - OnigDistance dmin; /* min-distance of exact or map */ - OnigDistance dmax; /* max-distance of exact or map */ - - /* regex_t link chain */ - struct re_pattern_buffer* chain; /* escape compile-conflict */ -} OnigRegexType; - +struct re_pattern_buffer; +typedef struct re_pattern_buffer OnigRegexType; typedef OnigRegexType* OnigRegex; #ifndef ONIG_ESCAPE_REGEX_T_COLLISION @@ -715,7 +690,75 @@ typedef struct { OnigCaseFoldType case_fold_flag; } OnigCompileInfo; + +/* types for callout */ +typedef enum { + ONIG_CALLOUT_IN_PROGRESS = 1, /* 1<<0 */ + ONIG_CALLOUT_IN_RETRACTION = 2 /* 1<<1 */ +} OnigCalloutIn; + +#define ONIG_CALLOUT_IN_BOTH (ONIG_CALLOUT_IN_PROGRESS | ONIG_CALLOUT_IN_RETRACTION) + +typedef enum { + ONIG_CALLOUT_OF_CONTENTS = 0, + ONIG_CALLOUT_OF_NAME = 1 +} OnigCalloutOf; + +typedef enum { + ONIG_CALLOUT_TYPE_SINGLE = 0, + ONIG_CALLOUT_TYPE_START_CALL = 1, + ONIG_CALLOUT_TYPE_BOTH_CALL = 2, + ONIG_CALLOUT_TYPE_START_MARK_END_CALL = 3, +} OnigCalloutType; + + +#define ONIG_NON_NAME_ID -1 +#define ONIG_NON_CALLOUT_NUM 0 + +#define ONIG_CALLOUT_MAX_ARGS_NUM 4 +#define ONIG_CALLOUT_DATA_SLOT_NUM 5 + +struct OnigCalloutArgsStruct; +typedef struct OnigCalloutArgsStruct OnigCalloutArgs; + +typedef int (*OnigCalloutFunc)(OnigCalloutArgs* args, void* user_data); + +/* callout function return values (less than -1: error code) */ +typedef enum { + ONIG_CALLOUT_FAIL = 1, + ONIG_CALLOUT_SUCCESS = 0 +} OnigCalloutResult; + +typedef enum { + ONIG_TYPE_VOID = 0, + ONIG_TYPE_LONG = 1<<0, + ONIG_TYPE_CHAR = 1<<1, + ONIG_TYPE_STRING = 1<<2, + ONIG_TYPE_POINTER = 1<<3, + ONIG_TYPE_TAG = 1<<4, +} OnigType; + +typedef union { + long l; + OnigCodePoint c; + struct { + OnigUChar* start; + OnigUChar* end; + } s; + void* p; + int tag; /* tag -> callout_num */ +} OnigValue; + + +struct OnigMatchParamStruct; +typedef struct OnigMatchParamStruct OnigMatchParam; + + /* Oniguruma Native API */ + +ONIG_EXTERN +int onig_initialize P_((OnigEncoding encodings[], int number_of_encodings)); +/* onig_init(): deprecated function. Use onig_initialize(). */ ONIG_EXTERN int onig_init P_((void)); ONIG_EXTERN @@ -727,7 +770,7 @@ void onig_set_verb_warn_func P_((OnigWarnFunc f)); ONIG_EXTERN int onig_new P_((OnigRegex*, const OnigUChar* pattern, const OnigUChar* pattern_end, OnigOptionType option, OnigEncoding enc, OnigSyntaxType* syntax, OnigErrorInfo* einfo)); ONIG_EXTERN -int onig_reg_init P_((regex_t* reg, OnigOptionType option, OnigCaseFoldType case_fold_flag, OnigEncoding enc, OnigSyntaxType* syntax)); +int onig_reg_init P_((OnigRegex reg, OnigOptionType option, OnigCaseFoldType case_fold_flag, OnigEncoding enc, OnigSyntaxType* syntax)); int onig_new_without_alloc P_((OnigRegex, const OnigUChar* pattern, const OnigUChar* pattern_end, OnigOptionType option, OnigEncoding enc, OnigSyntaxType* syntax, OnigErrorInfo* einfo)); ONIG_EXTERN int onig_new_deluxe P_((OnigRegex* reg, const OnigUChar* pattern, const OnigUChar* pattern_end, OnigCompileInfo* ci, OnigErrorInfo* einfo)); @@ -736,14 +779,16 @@ void onig_free P_((OnigRegex)); ONIG_EXTERN void onig_free_body P_((OnigRegex)); ONIG_EXTERN -int onig_recompile P_((OnigRegex, const OnigUChar* pattern, const OnigUChar* pattern_end, OnigOptionType option, OnigEncoding enc, OnigSyntaxType* syntax, OnigErrorInfo* einfo)); -ONIG_EXTERN -int onig_recompile_deluxe P_((OnigRegex reg, const OnigUChar* pattern, const OnigUChar* pattern_end, OnigCompileInfo* ci, OnigErrorInfo* einfo)); +int onig_scan(OnigRegex reg, const OnigUChar* str, const OnigUChar* end, OnigRegion* region, OnigOptionType option, int (*scan_callback)(int, int, OnigRegion*, void*), void* callback_arg); ONIG_EXTERN int onig_search P_((OnigRegex, const OnigUChar* str, const OnigUChar* end, const OnigUChar* start, const OnigUChar* range, OnigRegion* region, OnigOptionType option)); ONIG_EXTERN +int onig_search_with_param P_((OnigRegex, const OnigUChar* str, const OnigUChar* end, const OnigUChar* start, const OnigUChar* range, OnigRegion* region, OnigOptionType option, OnigMatchParam* mp)); +ONIG_EXTERN int onig_match P_((OnigRegex, const OnigUChar* str, const OnigUChar* end, const OnigUChar* at, OnigRegion* region, OnigOptionType option)); ONIG_EXTERN +int onig_match_with_param P_((OnigRegex, const OnigUChar* str, const OnigUChar* end, const OnigUChar* at, OnigRegion* region, OnigOptionType option, OnigMatchParam* mp)); +ONIG_EXTERN OnigRegion* onig_region_new P_((void)); ONIG_EXTERN void onig_region_init P_((OnigRegion* region)); @@ -816,12 +861,141 @@ unsigned int onig_get_match_stack_limit_size P_((void)); ONIG_EXTERN int onig_set_match_stack_limit_size P_((unsigned int size)); ONIG_EXTERN +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 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_unicode_define_user_property P_((const char* name, OnigCodePoint* ranges)); +ONIG_EXTERN int onig_end P_((void)); ONIG_EXTERN const char* onig_version P_((void)); ONIG_EXTERN const char* onig_copyright P_((void)); +/* for OnigMatchParam */ +ONIG_EXTERN +OnigMatchParam* onig_new_match_param P_((void)); +ONIG_EXTERN +void onig_free_match_param P_((OnigMatchParam* p)); +ONIG_EXTERN +void onig_free_match_param_content P_((OnigMatchParam* p)); +ONIG_EXTERN +int onig_initialize_match_param P_((OnigMatchParam* mp)); +ONIG_EXTERN +int onig_set_match_stack_limit_size_of_match_param P_((OnigMatchParam* param, unsigned int limit)); +ONIG_EXTERN +int onig_set_retry_limit_in_match_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)); +ONIG_EXTERN +int onig_set_callout_user_data_of_match_param P_((OnigMatchParam* param, void* user_data)); + +/* for callout functions */ +ONIG_EXTERN +OnigCalloutFunc onig_get_progress_callout P_((void)); +ONIG_EXTERN +int onig_set_progress_callout P_((OnigCalloutFunc f)); +ONIG_EXTERN +OnigCalloutFunc onig_get_retraction_callout P_((void)); +ONIG_EXTERN +int onig_set_retraction_callout P_((OnigCalloutFunc f)); +ONIG_EXTERN +int onig_set_callout_of_name P_((OnigEncoding enc, OnigCalloutType type, OnigUChar* name, OnigUChar* name_end, int callout_in, OnigCalloutFunc callout, OnigCalloutFunc end_callout, int arg_num, unsigned int arg_types[], int optional_arg_num, OnigValue opt_defaults[])); +ONIG_EXTERN +OnigUChar* onig_get_callout_name_by_name_id P_((int id)); +ONIG_EXTERN +int onig_get_callout_num_by_tag P_((OnigRegex reg, const OnigUChar* tag, const OnigUChar* tag_end)); +ONIG_EXTERN +int onig_get_callout_data_by_tag P_((OnigRegex reg, OnigMatchParam* mp, const OnigUChar* tag, const OnigUChar* tag_end, int slot, OnigType* type, OnigValue* val)); +ONIG_EXTERN +int onig_set_callout_data_by_tag P_((OnigRegex reg, OnigMatchParam* mp, const OnigUChar* tag, const OnigUChar* tag_end, int slot, OnigType type, OnigValue* val)); + +/* used in callout functions */ +ONIG_EXTERN +int onig_get_callout_num_by_callout_args P_((OnigCalloutArgs* args)); +ONIG_EXTERN +OnigCalloutIn onig_get_callout_in_by_callout_args P_((OnigCalloutArgs* args)); +ONIG_EXTERN +int onig_get_name_id_by_callout_args P_((OnigCalloutArgs* args)); +ONIG_EXTERN +const OnigUChar* onig_get_contents_by_callout_args P_((OnigCalloutArgs* args)); +ONIG_EXTERN +const OnigUChar* onig_get_contents_end_by_callout_args P_((OnigCalloutArgs* args)); +ONIG_EXTERN +int onig_get_args_num_by_callout_args P_((OnigCalloutArgs* args)); +ONIG_EXTERN +int onig_get_passed_args_num_by_callout_args P_((OnigCalloutArgs* args)); +ONIG_EXTERN +int onig_get_arg_by_callout_args P_((OnigCalloutArgs* args, int index, OnigType* type, OnigValue* val)); +ONIG_EXTERN +const OnigUChar* onig_get_string_by_callout_args P_((OnigCalloutArgs* args)); +ONIG_EXTERN +const OnigUChar* onig_get_string_end_by_callout_args P_((OnigCalloutArgs* args)); +ONIG_EXTERN +const OnigUChar* onig_get_start_by_callout_args P_((OnigCalloutArgs* args)); +ONIG_EXTERN +const OnigUChar* onig_get_right_range_by_callout_args P_((OnigCalloutArgs* args)); +ONIG_EXTERN +const OnigUChar* onig_get_current_by_callout_args P_((OnigCalloutArgs* args)); +ONIG_EXTERN +OnigRegex onig_get_regex_by_callout_args P_((OnigCalloutArgs* args)); +ONIG_EXTERN +unsigned long onig_get_retry_counter_by_callout_args P_((OnigCalloutArgs* args)); +ONIG_EXTERN +int onig_callout_tag_is_exist_at_callout_num P_((OnigRegex reg, int callout_num)); +ONIG_EXTERN +const OnigUChar* onig_get_callout_tag_start P_((OnigRegex reg, int callout_num)); +ONIG_EXTERN +const OnigUChar* onig_get_callout_tag_end P_((OnigRegex reg, int callout_num)); +ONIG_EXTERN +int onig_get_callout_data_dont_clear_old P_((OnigRegex reg, OnigMatchParam* mp, int callout_num, int slot, OnigType* type, OnigValue* val)); +ONIG_EXTERN +int onig_get_callout_data_by_callout_args_self_dont_clear_old P_((OnigCalloutArgs* args, int slot, OnigType* type, OnigValue* val)); +ONIG_EXTERN +int onig_get_callout_data P_((OnigRegex reg, OnigMatchParam* mp, int callout_num, int slot, OnigType* type, OnigValue* val)); +ONIG_EXTERN +int onig_get_callout_data_by_callout_args P_((OnigCalloutArgs* args, int callout_num, int slot, OnigType* type, OnigValue* val)); +ONIG_EXTERN +int onig_get_callout_data_by_callout_args_self P_((OnigCalloutArgs* args, int slot, OnigType* type, OnigValue* val)); +ONIG_EXTERN +int onig_set_callout_data P_((OnigRegex reg, OnigMatchParam* mp, int callout_num, int slot, OnigType type, OnigValue* val)); +ONIG_EXTERN +int onig_set_callout_data_by_callout_args P_((OnigCalloutArgs* args, int callout_num, int slot, OnigType type, OnigValue* val)); +ONIG_EXTERN +int onig_set_callout_data_by_callout_args_self P_((OnigCalloutArgs* args, int slot, OnigType type, OnigValue* val)); +ONIG_EXTERN +int onig_get_capture_range_in_callout P_((OnigCalloutArgs* args, int mem_num, int* begin, int* end)); +ONIG_EXTERN +int onig_get_used_stack_size_in_callout P_((OnigCalloutArgs* args, int* used_num, int* used_bytes)); + +/* builtin callout functions */ +ONIG_EXTERN +int onig_builtin_fail P_((OnigCalloutArgs* args, void* user_data)); +ONIG_EXTERN +int onig_builtin_mismatch P_((OnigCalloutArgs* args, void* user_data)); +ONIG_EXTERN +int onig_builtin_error P_((OnigCalloutArgs* args, void* user_data)); +ONIG_EXTERN +int onig_builtin_count P_((OnigCalloutArgs* args, void* user_data)); +ONIG_EXTERN +int onig_builtin_total_count P_((OnigCalloutArgs* args, void* user_data)); +ONIG_EXTERN +int onig_builtin_max P_((OnigCalloutArgs* args, void* user_data)); +ONIG_EXTERN +int onig_builtin_cmp P_((OnigCalloutArgs* args, void* user_data)); + +ONIG_EXTERN +int onig_setup_builtin_monitors_by_ascii_encoded_name P_((void* fp)); + #ifdef __cplusplus } #endif diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regcomp.c b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regcomp.c index ea63b09d0c..cc061780c7 100644 --- a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regcomp.c +++ b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regcomp.c @@ -2,11 +2,9 @@ regcomp.c - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2002-2013 K.Kosako + * Copyright (c) 2002-2018 K.Kosako * All rights reserved. * - * (C) Copyright 2015 Hewlett Packard Enterprise Development LP
- * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: @@ -33,6 +31,83 @@ OnigCaseFoldType OnigDefaultCaseFoldFlag = ONIGENC_CASE_FOLD_MIN; +#if 0 +typedef struct { + int n; + int alloc; + int* v; +} int_stack; + +static int +make_int_stack(int_stack** rs, int init_size) +{ + int_stack* s; + int* v; + + *rs = 0; + + s = xmalloc(sizeof(*s)); + if (IS_NULL(s)) return ONIGERR_MEMORY; + + v = (int* )xmalloc(sizeof(int) * init_size); + if (IS_NULL(v)) { + xfree(s); + return ONIGERR_MEMORY; + } + + s->n = 0; + s->alloc = init_size; + s->v = v; + + *rs = s; + return ONIG_NORMAL; +} + +static void +free_int_stack(int_stack* s) +{ + if (IS_NOT_NULL(s)) { + if (IS_NOT_NULL(s->v)) + xfree(s->v); + xfree(s); + } +} + +static int +int_stack_push(int_stack* s, int v) +{ + if (s->n >= s->alloc) { + int new_size = s->alloc * 2; + int* nv = (int* )xrealloc(s->v, sizeof(int) * new_size); + if (IS_NULL(nv)) return ONIGERR_MEMORY; + + s->alloc = new_size; + s->v = nv; + } + + s->v[s->n] = v; + s->n++; + return ONIG_NORMAL; +} + +static int +int_stack_pop(int_stack* s) +{ + int v; + +#ifdef ONIG_DEBUG + if (s->n <= 0) { + fprintf(stderr, "int_stack_pop: fail empty. %p\n", s); + return 0; + } +#endif + + v = s->v[s->n]; + s->n--; + return v; +} +#endif + extern OnigCaseFoldType onig_get_default_case_fold_flag(void) { @@ -46,99 +121,87 @@ onig_set_default_case_fold_flag(OnigCaseFoldType case_fold_flag) return 0; } - -#ifndef PLATFORM_UNALIGNED_WORD_ACCESS -static unsigned char PadBuf[WORD_ALIGNMENT_SIZE]; -#endif - -static UChar* -str_dup(UChar* s, UChar* end) +static int +int_multiply_cmp(int x, int y, int v) { - int len = (int)(end - s); + if (x == 0 || y == 0) return -1; - if (len > 0) { - UChar* r = (UChar* )xmalloc(len + 1); - CHECK_NULL_RETURN(r); - xmemcpy(r, s, len); - r[len] = (UChar )0; - return r; + if (x < INT_MAX / y) { + int xy = x * y; + if (xy > v) return 1; + else { + if (xy == v) return 0; + else return -1; + } } - else return NULL; + else + return 1; } + +#ifndef PLATFORM_UNALIGNED_WORD_ACCESS +static unsigned char PadBuf[WORD_ALIGNMENT_SIZE]; +#endif + static void swap_node(Node* a, Node* b) { Node c; - CopyMem (&c, a, sizeof (Node)); - CopyMem (a, b, sizeof (Node)); - CopyMem (b, &c, sizeof (Node)); - if (NTYPE(a) == NT_STR) { - StrNode* sn = NSTR(a); + c = *a; *a = *b; *b = c; + + if (NODE_TYPE(a) == NODE_STRING) { + StrNode* sn = STR_(a); if (sn->capa == 0) { - int len = (int)(sn->end - sn->s); + int len = (int )(sn->end - sn->s); sn->s = sn->buf; sn->end = sn->s + len; } } - if (NTYPE(b) == NT_STR) { - StrNode* sn = NSTR(b); + if (NODE_TYPE(b) == NODE_STRING) { + StrNode* sn = STR_(b); if (sn->capa == 0) { - int len = (int)(sn->end - sn->s); + int len = (int )(sn->end - sn->s); sn->s = sn->buf; sn->end = sn->s + len; } } } -static OnigDistance -distance_add(OnigDistance d1, OnigDistance d2) +static OnigLen +distance_add(OnigLen d1, OnigLen d2) { - if (d1 == ONIG_INFINITE_DISTANCE || d2 == ONIG_INFINITE_DISTANCE) - return ONIG_INFINITE_DISTANCE; + if (d1 == INFINITE_LEN || d2 == INFINITE_LEN) + return INFINITE_LEN; else { - if (d1 <= ONIG_INFINITE_DISTANCE - d2) return d1 + d2; - else return ONIG_INFINITE_DISTANCE; + if (d1 <= INFINITE_LEN - d2) return d1 + d2; + else return INFINITE_LEN; } } -static OnigDistance -distance_multiply(OnigDistance d, int m) +static OnigLen +distance_multiply(OnigLen d, int m) { if (m == 0) return 0; - if (d < ONIG_INFINITE_DISTANCE / m) + if (d < INFINITE_LEN / m) return d * m; else - return ONIG_INFINITE_DISTANCE; + return INFINITE_LEN; } static int bitset_is_empty(BitSetRef bs) { int i; + for (i = 0; i < (int )BITSET_SIZE; i++) { if (bs[i] != 0) return 0; } return 1; } -#ifdef ONIG_DEBUG -static int -bitset_on_num(BitSetRef bs) -{ - int i, n; - - n = 0; - for (i = 0; i < SINGLE_BYTE_SIZE; i++) { - if (BITSET_AT(bs, i)) n++; - } - return n; -} -#endif - extern int onig_bbuf_init(BBuf* buf, int size) { @@ -157,74 +220,62 @@ onig_bbuf_init(BBuf* buf, int size) } -#ifdef USE_SUBEXP_CALL +#ifdef USE_CALL static int -unset_addr_list_init(UnsetAddrList* uslist, int size) +unset_addr_list_init(UnsetAddrList* list, int size) { - UnsetAddr* p; - - p = (UnsetAddr* )xmalloc(sizeof(UnsetAddr)* size); + UnsetAddr* p = (UnsetAddr* )xmalloc(sizeof(UnsetAddr)* size); CHECK_NULL_RETURN_MEMERR(p); - uslist->num = 0; - uslist->alloc = size; - uslist->us = p; + + list->num = 0; + list->alloc = size; + list->us = p; return 0; } static void -unset_addr_list_end(UnsetAddrList* uslist) +unset_addr_list_end(UnsetAddrList* list) { - if (IS_NOT_NULL(uslist->us)) - xfree(uslist->us); + if (IS_NOT_NULL(list->us)) + xfree(list->us); } static int -unset_addr_list_add(UnsetAddrList* uslist, int offset, struct _Node* node) +unset_addr_list_add(UnsetAddrList* list, int offset, struct _Node* node) { UnsetAddr* p; int size; - if (uslist->num >= uslist->alloc) { - size = uslist->alloc * 2; - p = (UnsetAddr* )xrealloc(uslist->us, sizeof(UnsetAddr) * size, sizeof(UnsetAddr) * uslist->alloc); + if (list->num >= list->alloc) { + size = list->alloc * 2; + p = (UnsetAddr* )xrealloc(list->us, sizeof(UnsetAddr) * size, sizeof(UnsetAddr)* list->alloc); CHECK_NULL_RETURN_MEMERR(p); - uslist->alloc = size; - uslist->us = p; + list->alloc = size; + list->us = p; } - uslist->us[uslist->num].offset = offset; - uslist->us[uslist->num].target = node; - uslist->num++; + list->us[list->num].offset = offset; + list->us[list->num].target = node; + list->num++; return 0; } -#endif /* USE_SUBEXP_CALL */ +#endif /* USE_CALL */ static int add_opcode(regex_t* reg, int opcode) { - BBUF_ADD1(reg, ((unsigned char)opcode)); - return 0; -} - -#ifdef USE_COMBINATION_EXPLOSION_CHECK -static int -add_state_check_num(regex_t* reg, int num) -{ - StateCheckNumType n = (StateCheckNumType )num; - - BBUF_ADD(reg, &n, SIZE_STATE_CHECK_NUM); + BB_ADD1(reg, opcode); return 0; } -#endif static int add_rel_addr(regex_t* reg, int addr) { RelAddrType ra = (RelAddrType )addr; - BBUF_ADD(reg, &ra, SIZE_RELADDR); + BB_ADD(reg, &ra, SIZE_RELADDR); return 0; } @@ -233,7 +284,7 @@ add_abs_addr(regex_t* reg, int addr) { AbsAddrType ra = (AbsAddrType )addr; - BBUF_ADD(reg, &ra, SIZE_ABSADDR); + BB_ADD(reg, &ra, SIZE_ABSADDR); return 0; } @@ -242,7 +293,7 @@ add_length(regex_t* reg, int len) { LengthType l = (LengthType )len; - BBUF_ADD(reg, &l, SIZE_LENGTH); + BB_ADD(reg, &l, SIZE_LENGTH); return 0; } @@ -251,64 +302,80 @@ add_mem_num(regex_t* reg, int num) { MemNumType n = (MemNumType )num; - BBUF_ADD(reg, &n, SIZE_MEMNUM); + BB_ADD(reg, &n, SIZE_MEMNUM); return 0; } +#if 0 static int add_pointer(regex_t* reg, void* addr) { PointerType ptr = (PointerType )addr; - BBUF_ADD(reg, &ptr, SIZE_POINTER); + BB_ADD(reg, &ptr, SIZE_POINTER); return 0; } +#endif static int add_option(regex_t* reg, OnigOptionType option) { - BBUF_ADD(reg, &option, SIZE_OPTION); + BB_ADD(reg, &option, SIZE_OPTION); return 0; } static int -add_opcode_rel_addr(regex_t* reg, int opcode, int addr) +add_save_type(regex_t* reg, enum SaveType type) { - int r; + SaveType t = (SaveType )type; - r = add_opcode(reg, opcode); - if (r) return r; - r = add_rel_addr(reg, addr); - return r; + BB_ADD(reg, &t, SIZE_SAVE_TYPE); + return 0; } static int -add_bytes(regex_t* reg, UChar* bytes, int len) +add_update_var_type(regex_t* reg, enum UpdateVarType type) { - BBUF_ADD(reg, bytes, len); + UpdateVarType t = (UpdateVarType )type; + + BB_ADD(reg, &t, SIZE_UPDATE_VAR_TYPE); return 0; } static int -add_bitset(regex_t* reg, BitSetRef bs) +add_mode(regex_t* reg, ModeType mode) { - BBUF_ADD(reg, bs, SIZE_BITSET); + BB_ADD(reg, &mode, SIZE_MODE); return 0; } static int -add_opcode_option(regex_t* reg, int opcode, OnigOptionType option) +add_opcode_rel_addr(regex_t* reg, int opcode, int addr) { int r; r = add_opcode(reg, opcode); - if (r) return r; - r = add_option(reg, option); + if (r != 0) return r; + r = add_rel_addr(reg, addr); return r; } +static int +add_bytes(regex_t* reg, UChar* bytes, int len) +{ + BB_ADD(reg, bytes, len); + return 0; +} + +static int +add_bitset(regex_t* reg, BitSetRef bs) +{ + BB_ADD(reg, bs, SIZE_BITSET); + return 0; +} + static int compile_length_tree(Node* node, regex_t* reg); -static int compile_tree(Node* node, regex_t* reg); +static int compile_tree(Node* node, regex_t* reg, ScanEnv* env); #define IS_NEED_STR_LEN_OP_EXACT(op) \ @@ -361,60 +428,60 @@ select_str_opcode(int mb_len, int str_len, int ignore_case) } static int -compile_tree_empty_check(Node* node, regex_t* reg, int empty_info) +compile_tree_empty_check(Node* node, regex_t* reg, int empty_info, ScanEnv* env) { int r; int saved_num_null_check = reg->num_null_check; - if (empty_info != 0) { - r = add_opcode(reg, OP_NULL_CHECK_START); - if (r) return r; + if (empty_info != QUANT_BODY_IS_NOT_EMPTY) { + r = add_opcode(reg, OP_EMPTY_CHECK_START); + if (r != 0) return r; r = add_mem_num(reg, reg->num_null_check); /* NULL CHECK ID */ - if (r) return r; + if (r != 0) return r; reg->num_null_check++; } - r = compile_tree(node, reg); - if (r) return r; + r = compile_tree(node, reg, env); + if (r != 0) return r; - if (empty_info != 0) { - if (empty_info == NQ_TARGET_IS_EMPTY) - r = add_opcode(reg, OP_NULL_CHECK_END); - else if (empty_info == NQ_TARGET_IS_EMPTY_MEM) - r = add_opcode(reg, OP_NULL_CHECK_END_MEMST); - else if (empty_info == NQ_TARGET_IS_EMPTY_REC) - r = add_opcode(reg, OP_NULL_CHECK_END_MEMST_PUSH); + if (empty_info != QUANT_BODY_IS_NOT_EMPTY) { + if (empty_info == QUANT_BODY_IS_EMPTY) + r = add_opcode(reg, OP_EMPTY_CHECK_END); + else if (empty_info == QUANT_BODY_IS_EMPTY_MEM) + r = add_opcode(reg, OP_EMPTY_CHECK_END_MEMST); + else if (empty_info == QUANT_BODY_IS_EMPTY_REC) + r = add_opcode(reg, OP_EMPTY_CHECK_END_MEMST_PUSH); - if (r) return r; + if (r != 0) return r; r = add_mem_num(reg, saved_num_null_check); /* NULL CHECK ID */ } return r; } -#ifdef USE_SUBEXP_CALL +#ifdef USE_CALL static int -compile_call(CallNode* node, regex_t* reg) +compile_call(CallNode* node, regex_t* reg, ScanEnv* env) { int r; r = add_opcode(reg, OP_CALL); - if (r) return r; - r = unset_addr_list_add(node->unset_addr_list, BBUF_GET_OFFSET_POS(reg), - node->target); - if (r) return r; + if (r != 0) return r; + r = unset_addr_list_add(env->unset_addr_list, BB_GET_OFFSET_POS(reg), + NODE_CALL_BODY(node)); + if (r != 0) return r; r = add_abs_addr(reg, 0 /*dummy addr.*/); return r; } #endif static int -compile_tree_n_times(Node* node, int n, regex_t* reg) +compile_tree_n_times(Node* node, int n, regex_t* reg, ScanEnv* env) { int i, r; for (i = 0; i < n; i++) { - r = compile_tree(node, reg); - if (r) return r; + r = compile_tree(node, reg, env); + if (r != 0) return r; } return 0; } @@ -462,15 +529,15 @@ static int compile_length_string_node(Node* node, regex_t* reg) { int rlen, r, len, prev_len, slen, ambig; - OnigEncoding enc = reg->enc; UChar *p, *prev; StrNode* sn; + OnigEncoding enc = reg->enc; - sn = NSTR(node); + sn = STR_(node); if (sn->end <= sn->s) return 0; - ambig = NSTRING_IS_AMBIG(node); + ambig = NODE_STRING_IS_AMBIG(node); p = prev = sn->s; prev_len = enclen(enc, p); @@ -492,6 +559,7 @@ compile_length_string_node(Node* node, regex_t* reg) } p += len; } + r = add_compile_string_length(prev, prev_len, slen, reg, ambig); rlen += r; return rlen; @@ -503,23 +571,24 @@ compile_length_string_raw_node(StrNode* sn, regex_t* reg) if (sn->end <= sn->s) return 0; - return add_compile_string_length(sn->s, 1 /* sb */, (int)(sn->end - sn->s), reg, 0); + return add_compile_string_length(sn->s, 1 /* sb */, (int )(sn->end - sn->s), + reg, 0); } static int compile_string_node(Node* node, regex_t* reg) { int r, len, prev_len, slen, ambig; - OnigEncoding enc = reg->enc; UChar *p, *prev, *end; StrNode* sn; + OnigEncoding enc = reg->enc; - sn = NSTR(node); + sn = STR_(node); if (sn->end <= sn->s) return 0; end = sn->end; - ambig = NSTRING_IS_AMBIG(node); + ambig = NODE_STRING_IS_AMBIG(node); p = prev = sn->s; prev_len = enclen(enc, p); @@ -533,7 +602,7 @@ compile_string_node(Node* node, regex_t* reg) } else { r = add_compile_string(prev, prev_len, slen, reg, ambig); - if (r) return r; + if (r != 0) return r; prev = p; slen = 1; @@ -542,6 +611,7 @@ compile_string_node(Node* node, regex_t* reg) p += len; } + return add_compile_string(prev, prev_len, slen, reg, ambig); } @@ -551,7 +621,7 @@ compile_string_raw_node(StrNode* sn, regex_t* reg) if (sn->end <= sn->s) return 0; - return add_compile_string(sn->s, 1 /* sb */, (int)(sn->end - sn->s), reg, 0); + return add_compile_string(sn->s, 1 /* sb */, (int )(sn->end - sn->s), reg, 0); } static int @@ -562,7 +632,7 @@ add_multi_byte_cclass(BBuf* mbuf, regex_t* reg) return add_bytes(reg, mbuf->p, mbuf->used); #else int r, pad_size; - UChar* p = BBUF_GET_ADD_ADDRESS(reg) + SIZE_LENGTH; + UChar* p = BB_GET_ADD_ADDRESS(reg) + SIZE_LENGTH; GET_ALIGNMENT_PAD_SIZE(p, pad_size); add_length(reg, mbuf->used + (WORD_ALIGNMENT_SIZE - 1)); @@ -582,11 +652,6 @@ compile_length_cclass_node(CClassNode* cc, regex_t* reg) { int len; - if (IS_NCCLASS_SHARE(cc)) { - len = SIZE_OPCODE + SIZE_POINTER; - return len; - } - if (IS_NULL(cc->mbuf)) { len = SIZE_OPCODE + SIZE_BITSET; } @@ -612,12 +677,6 @@ compile_cclass_node(CClassNode* cc, regex_t* reg) { int r; - if (IS_NCCLASS_SHARE(cc)) { - add_opcode(reg, OP_CCLASS_NODE); - r = add_pointer(reg, cc); - return r; - } - if (IS_NULL(cc->mbuf)) { if (IS_NCCLASS_NOT(cc)) add_opcode(reg, OP_CCLASS_NOT); @@ -642,7 +701,7 @@ compile_cclass_node(CClassNode* cc, regex_t* reg) add_opcode(reg, OP_CCLASS_MIX); r = add_bitset(reg, cc->bs); - if (r) return r; + if (r != 0) return r; r = add_multi_byte_cclass(cc->mbuf, reg); } } @@ -683,46 +742,46 @@ entry_repeat_range(regex_t* reg, int id, int lower, int upper) } static int -compile_range_repeat_node(QtfrNode* qn, int target_len, int empty_info, - regex_t* reg) +compile_range_repeat_node(QuantNode* qn, int target_len, int empty_info, + regex_t* reg, ScanEnv* env) { int r; int num_repeat = reg->num_repeat; r = add_opcode(reg, qn->greedy ? OP_REPEAT : OP_REPEAT_NG); - if (r) return r; + if (r != 0) return r; r = add_mem_num(reg, num_repeat); /* OP_REPEAT ID */ reg->num_repeat++; - if (r) return r; + if (r != 0) return r; r = add_rel_addr(reg, target_len + SIZE_OP_REPEAT_INC); - if (r) return r; + if (r != 0) return r; r = entry_repeat_range(reg, num_repeat, qn->lower, qn->upper); - if (r) return r; + if (r != 0) return r; - r = compile_tree_empty_check(qn->target, reg, empty_info); - if (r) return r; + r = compile_tree_empty_check(NODE_QUANT_BODY(qn), reg, empty_info, env); + if (r != 0) return r; if ( -#ifdef USE_SUBEXP_CALL - reg->num_call > 0 || +#ifdef USE_CALL + NODE_IS_IN_MULTI_ENTRY(qn) || #endif - IS_QUANTIFIER_IN_REPEAT(qn)) { + NODE_IS_IN_REAL_REPEAT(qn)) { r = add_opcode(reg, qn->greedy ? OP_REPEAT_INC_SG : OP_REPEAT_INC_NG_SG); } else { r = add_opcode(reg, qn->greedy ? OP_REPEAT_INC : OP_REPEAT_INC_NG); } - if (r) return r; + if (r != 0) return r; r = add_mem_num(reg, num_repeat); /* OP_REPEAT ID */ return r; } static int -is_anychar_star_quantifier(QtfrNode* qn) +is_anychar_infinite_greedy(QuantNode* qn) { if (qn->greedy && IS_REPEAT_INFINITE(qn->upper) && - NTYPE(qn->target) == NT_CANY) + NODE_IS_ANYCHAR(NODE_QUANT_BODY(qn))) return 1; else return 0; @@ -731,255 +790,21 @@ is_anychar_star_quantifier(QtfrNode* qn) #define QUANTIFIER_EXPAND_LIMIT_SIZE 50 #define CKN_ON (ckn > 0) -#ifdef USE_COMBINATION_EXPLOSION_CHECK - -static int -compile_length_quantifier_node(QtfrNode* qn, regex_t* reg) -{ - int len, mod_tlen, cklen; - int ckn; - int infinite = IS_REPEAT_INFINITE(qn->upper); - int empty_info = qn->target_empty_info; - int tlen = compile_length_tree(qn->target, reg); - - if (tlen < 0) return tlen; - - ckn = ((reg->num_comb_exp_check > 0) ? qn->comb_exp_check_num : 0); - - cklen = (CKN_ON ? SIZE_STATE_CHECK_NUM: 0); - - /* anychar repeat */ - if (NTYPE(qn->target) == NT_CANY) { - if (qn->greedy && infinite) { - if (IS_NOT_NULL(qn->next_head_exact) && !CKN_ON) - return SIZE_OP_ANYCHAR_STAR_PEEK_NEXT + tlen * qn->lower + cklen; - else - return SIZE_OP_ANYCHAR_STAR + tlen * qn->lower + cklen; - } - } - - if (empty_info != 0) - mod_tlen = tlen + (SIZE_OP_NULL_CHECK_START + SIZE_OP_NULL_CHECK_END); - else - mod_tlen = tlen; - - if (infinite && qn->lower <= 1) { - if (qn->greedy) { - if (qn->lower == 1) - len = SIZE_OP_JUMP; - else - len = 0; - - len += SIZE_OP_PUSH + cklen + mod_tlen + SIZE_OP_JUMP; - } - else { - if (qn->lower == 0) - len = SIZE_OP_JUMP; - else - len = 0; - - len += mod_tlen + SIZE_OP_PUSH + cklen; - } - } - else if (qn->upper == 0) { - if (qn->is_refered != 0) /* /(?..){0}/ */ - len = SIZE_OP_JUMP + tlen; - else - len = 0; - } - else if (qn->upper == 1 && qn->greedy) { - if (qn->lower == 0) { - if (CKN_ON) { - len = SIZE_OP_STATE_CHECK_PUSH + tlen; - } - else { - len = SIZE_OP_PUSH + tlen; - } - } - else { - len = tlen; - } - } - else if (!qn->greedy && qn->upper == 1 && qn->lower == 0) { /* '??' */ - len = SIZE_OP_PUSH + cklen + SIZE_OP_JUMP + tlen; - } - else { - len = SIZE_OP_REPEAT_INC - + mod_tlen + SIZE_OPCODE + SIZE_RELADDR + SIZE_MEMNUM; - if (CKN_ON) - len += SIZE_OP_STATE_CHECK; - } - - return len; -} - -static int -compile_quantifier_node(QtfrNode* qn, regex_t* reg) -{ - int r, mod_tlen; - int ckn; - int infinite = IS_REPEAT_INFINITE(qn->upper); - int empty_info = qn->target_empty_info; - int tlen = compile_length_tree(qn->target, reg); - - if (tlen < 0) return tlen; - - ckn = ((reg->num_comb_exp_check > 0) ? qn->comb_exp_check_num : 0); - - if (is_anychar_star_quantifier(qn)) { - r = compile_tree_n_times(qn->target, qn->lower, reg); - if (r) return r; - if (IS_NOT_NULL(qn->next_head_exact) && !CKN_ON) { - if (IS_MULTILINE(reg->options)) - r = add_opcode(reg, OP_ANYCHAR_ML_STAR_PEEK_NEXT); - else - r = add_opcode(reg, OP_ANYCHAR_STAR_PEEK_NEXT); - if (r) return r; - if (CKN_ON) { - r = add_state_check_num(reg, ckn); - if (r) return r; - } - - return add_bytes(reg, NSTR(qn->next_head_exact)->s, 1); - } - else { - if (IS_MULTILINE(reg->options)) { - r = add_opcode(reg, (CKN_ON ? - OP_STATE_CHECK_ANYCHAR_ML_STAR - : OP_ANYCHAR_ML_STAR)); - } - else { - r = add_opcode(reg, (CKN_ON ? - OP_STATE_CHECK_ANYCHAR_STAR - : OP_ANYCHAR_STAR)); - } - if (r) return r; - if (CKN_ON) - r = add_state_check_num(reg, ckn); - - return r; - } - } - - if (empty_info != 0) - mod_tlen = tlen + (SIZE_OP_NULL_CHECK_START + SIZE_OP_NULL_CHECK_END); - else - mod_tlen = tlen; - - if (infinite && qn->lower <= 1) { - if (qn->greedy) { - if (qn->lower == 1) { - r = add_opcode_rel_addr(reg, OP_JUMP, - (CKN_ON ? SIZE_OP_STATE_CHECK_PUSH : SIZE_OP_PUSH)); - if (r) return r; - } - - if (CKN_ON) { - r = add_opcode(reg, OP_STATE_CHECK_PUSH); - if (r) return r; - r = add_state_check_num(reg, ckn); - if (r) return r; - r = add_rel_addr(reg, mod_tlen + SIZE_OP_JUMP); - } - else { - r = add_opcode_rel_addr(reg, OP_PUSH, mod_tlen + SIZE_OP_JUMP); - } - if (r) return r; - r = compile_tree_empty_check(qn->target, reg, empty_info); - if (r) return r; - r = add_opcode_rel_addr(reg, OP_JUMP, - -(mod_tlen + (int )SIZE_OP_JUMP - + (int )(CKN_ON ? SIZE_OP_STATE_CHECK_PUSH : SIZE_OP_PUSH))); - } - else { - if (qn->lower == 0) { - r = add_opcode_rel_addr(reg, OP_JUMP, mod_tlen); - if (r) return r; - } - r = compile_tree_empty_check(qn->target, reg, empty_info); - if (r) return r; - if (CKN_ON) { - r = add_opcode(reg, OP_STATE_CHECK_PUSH_OR_JUMP); - if (r) return r; - r = add_state_check_num(reg, ckn); - if (r) return r; - r = add_rel_addr(reg, - -(mod_tlen + (int )SIZE_OP_STATE_CHECK_PUSH_OR_JUMP)); - } - else - r = add_opcode_rel_addr(reg, OP_PUSH, -(mod_tlen + (int )SIZE_OP_PUSH)); - } - } - else if (qn->upper == 0) { - if (qn->is_refered != 0) { /* /(?..){0}/ */ - r = add_opcode_rel_addr(reg, OP_JUMP, tlen); - if (r) return r; - r = compile_tree(qn->target, reg); - } - else - r = 0; - } - else if (qn->upper == 1 && qn->greedy) { - if (qn->lower == 0) { - if (CKN_ON) { - r = add_opcode(reg, OP_STATE_CHECK_PUSH); - if (r) return r; - r = add_state_check_num(reg, ckn); - if (r) return r; - r = add_rel_addr(reg, tlen); - } - else { - r = add_opcode_rel_addr(reg, OP_PUSH, tlen); - } - if (r) return r; - } - - r = compile_tree(qn->target, reg); - } - else if (!qn->greedy && qn->upper == 1 && qn->lower == 0) { /* '??' */ - if (CKN_ON) { - r = add_opcode(reg, OP_STATE_CHECK_PUSH); - if (r) return r; - r = add_state_check_num(reg, ckn); - if (r) return r; - r = add_rel_addr(reg, SIZE_OP_JUMP); - } - else { - r = add_opcode_rel_addr(reg, OP_PUSH, SIZE_OP_JUMP); - } - - if (r) return r; - r = add_opcode_rel_addr(reg, OP_JUMP, tlen); - if (r) return r; - r = compile_tree(qn->target, reg); - } - else { - r = compile_range_repeat_node(qn, mod_tlen, empty_info, reg); - if (CKN_ON) { - if (r) return r; - r = add_opcode(reg, OP_STATE_CHECK); - if (r) return r; - r = add_state_check_num(reg, ckn); - } - } - return r; -} - -#else /* USE_COMBINATION_EXPLOSION_CHECK */ - static int -compile_length_quantifier_node(QtfrNode* qn, regex_t* reg) +compile_length_quantifier_node(QuantNode* qn, regex_t* reg) { int len, mod_tlen; int infinite = IS_REPEAT_INFINITE(qn->upper); - int empty_info = qn->target_empty_info; - int tlen = compile_length_tree(qn->target, reg); + enum QuantBodyEmpty empty_info = qn->body_empty_info; + int tlen = compile_length_tree(NODE_QUANT_BODY(qn), reg); if (tlen < 0) return tlen; + if (tlen == 0) return 0; /* anychar repeat */ - if (NTYPE(qn->target) == NT_CANY) { - if (qn->greedy && infinite) { + if (is_anychar_infinite_greedy(qn)) { + if (qn->lower <= 1 || + int_multiply_cmp(tlen, qn->lower, QUANTIFIER_EXPAND_LIMIT_SIZE) <= 0) { if (IS_NOT_NULL(qn->next_head_exact)) return SIZE_OP_ANYCHAR_STAR_PEEK_NEXT + tlen * qn->lower; else @@ -987,13 +812,14 @@ compile_length_quantifier_node(QtfrNode* qn, regex_t* reg) } } - if (empty_info != 0) - mod_tlen = tlen + (SIZE_OP_NULL_CHECK_START + SIZE_OP_NULL_CHECK_END); - else + if (empty_info == QUANT_BODY_IS_NOT_EMPTY) mod_tlen = tlen; + else + mod_tlen = tlen + (SIZE_OP_EMPTY_CHECK_START + SIZE_OP_EMPTY_CHECK_END); if (infinite && - (qn->lower <= 1 || tlen * qn->lower <= QUANTIFIER_EXPAND_LIMIT_SIZE)) { + (qn->lower <= 1 || + int_multiply_cmp(tlen, qn->lower, QUANTIFIER_EXPAND_LIMIT_SIZE) <= 0)) { if (qn->lower == 1 && tlen > QUANTIFIER_EXPAND_LIMIT_SIZE) { len = SIZE_OP_JUMP; } @@ -1003,11 +829,11 @@ compile_length_quantifier_node(QtfrNode* qn, regex_t* reg) if (qn->greedy) { if (IS_NOT_NULL(qn->head_exact)) - len += SIZE_OP_PUSH_OR_JUMP_EXACT1 + mod_tlen + SIZE_OP_JUMP; + len += SIZE_OP_PUSH_OR_JUMP_EXACT1 + mod_tlen + SIZE_OP_JUMP; else if (IS_NOT_NULL(qn->next_head_exact)) - len += SIZE_OP_PUSH_IF_PEEK_NEXT + mod_tlen + SIZE_OP_JUMP; + len += SIZE_OP_PUSH_IF_PEEK_NEXT + mod_tlen + SIZE_OP_JUMP; else - len += SIZE_OP_PUSH + mod_tlen + SIZE_OP_JUMP; + len += SIZE_OP_PUSH + mod_tlen + SIZE_OP_JUMP; } else len += SIZE_OP_JUMP + mod_tlen + SIZE_OP_PUSH; @@ -1016,8 +842,9 @@ compile_length_quantifier_node(QtfrNode* qn, regex_t* reg) len = SIZE_OP_JUMP + tlen; } else if (!infinite && qn->greedy && - (qn->upper == 1 || (tlen + SIZE_OP_PUSH) * qn->upper - <= QUANTIFIER_EXPAND_LIMIT_SIZE)) { + (qn->upper == 1 || + int_multiply_cmp(tlen + SIZE_OP_PUSH, qn->upper, + QUANTIFIER_EXPAND_LIMIT_SIZE) <= 0)) { len = tlen * qn->lower; len += (SIZE_OP_PUSH + tlen) * (qn->upper - qn->lower); } @@ -1033,341 +860,428 @@ compile_length_quantifier_node(QtfrNode* qn, regex_t* reg) } static int -compile_quantifier_node(QtfrNode* qn, regex_t* reg) +compile_quantifier_node(QuantNode* qn, regex_t* reg, ScanEnv* env) { int i, r, mod_tlen; int infinite = IS_REPEAT_INFINITE(qn->upper); - int empty_info = qn->target_empty_info; - int tlen = compile_length_tree(qn->target, reg); + enum QuantBodyEmpty empty_info = qn->body_empty_info; + int tlen = compile_length_tree(NODE_QUANT_BODY(qn), reg); if (tlen < 0) return tlen; + if (tlen == 0) return 0; - if (is_anychar_star_quantifier(qn)) { - r = compile_tree_n_times(qn->target, qn->lower, reg); - if (r) return r; + if (is_anychar_infinite_greedy(qn) && + (qn->lower <= 1 || + int_multiply_cmp(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)) { - if (IS_MULTILINE(reg->options)) - r = add_opcode(reg, OP_ANYCHAR_ML_STAR_PEEK_NEXT); + if (IS_MULTILINE(CTYPE_OPTION(NODE_QUANT_BODY(qn), reg))) + r = add_opcode(reg, OP_ANYCHAR_ML_STAR_PEEK_NEXT); else - r = add_opcode(reg, OP_ANYCHAR_STAR_PEEK_NEXT); - if (r) return r; - return add_bytes(reg, NSTR(qn->next_head_exact)->s, 1); + r = add_opcode(reg, OP_ANYCHAR_STAR_PEEK_NEXT); + if (r != 0) return r; + return add_bytes(reg, STR_(qn->next_head_exact)->s, 1); } else { - if (IS_MULTILINE(reg->options)) - return add_opcode(reg, OP_ANYCHAR_ML_STAR); + if (IS_MULTILINE(CTYPE_OPTION(NODE_QUANT_BODY(qn), reg))) + return add_opcode(reg, OP_ANYCHAR_ML_STAR); else - return add_opcode(reg, OP_ANYCHAR_STAR); + return add_opcode(reg, OP_ANYCHAR_STAR); } } - if (empty_info != 0) - mod_tlen = tlen + (SIZE_OP_NULL_CHECK_START + SIZE_OP_NULL_CHECK_END); - else + if (empty_info == QUANT_BODY_IS_NOT_EMPTY) mod_tlen = tlen; + else + mod_tlen = tlen + (SIZE_OP_EMPTY_CHECK_START + SIZE_OP_EMPTY_CHECK_END); if (infinite && - (qn->lower <= 1 || tlen * qn->lower <= QUANTIFIER_EXPAND_LIMIT_SIZE)) { + (qn->lower <= 1 || + int_multiply_cmp(tlen, qn->lower, QUANTIFIER_EXPAND_LIMIT_SIZE) <= 0)) { if (qn->lower == 1 && tlen > QUANTIFIER_EXPAND_LIMIT_SIZE) { if (qn->greedy) { - if (IS_NOT_NULL(qn->head_exact)) - r = add_opcode_rel_addr(reg, OP_JUMP, SIZE_OP_PUSH_OR_JUMP_EXACT1); - else if (IS_NOT_NULL(qn->next_head_exact)) - r = add_opcode_rel_addr(reg, OP_JUMP, SIZE_OP_PUSH_IF_PEEK_NEXT); - else - r = add_opcode_rel_addr(reg, OP_JUMP, SIZE_OP_PUSH); + if (IS_NOT_NULL(qn->head_exact)) + r = add_opcode_rel_addr(reg, OP_JUMP, SIZE_OP_PUSH_OR_JUMP_EXACT1); + else if (IS_NOT_NULL(qn->next_head_exact)) + r = add_opcode_rel_addr(reg, OP_JUMP, SIZE_OP_PUSH_IF_PEEK_NEXT); + else + r = add_opcode_rel_addr(reg, OP_JUMP, SIZE_OP_PUSH); } else { - r = add_opcode_rel_addr(reg, OP_JUMP, SIZE_OP_JUMP); + r = add_opcode_rel_addr(reg, OP_JUMP, SIZE_OP_JUMP); } - if (r) return r; + if (r != 0) return r; } else { - r = compile_tree_n_times(qn->target, qn->lower, reg); - if (r) return r; + r = compile_tree_n_times(NODE_QUANT_BODY(qn), qn->lower, reg, env); + if (r != 0) return r; } if (qn->greedy) { if (IS_NOT_NULL(qn->head_exact)) { - r = add_opcode_rel_addr(reg, OP_PUSH_OR_JUMP_EXACT1, - mod_tlen + SIZE_OP_JUMP); - if (r) return r; - add_bytes(reg, NSTR(qn->head_exact)->s, 1); - r = compile_tree_empty_check(qn->target, reg, empty_info); - if (r) return r; - r = add_opcode_rel_addr(reg, OP_JUMP, - -(mod_tlen + (int )SIZE_OP_JUMP + (int )SIZE_OP_PUSH_OR_JUMP_EXACT1)); + r = add_opcode_rel_addr(reg, OP_PUSH_OR_JUMP_EXACT1, + mod_tlen + SIZE_OP_JUMP); + if (r != 0) return r; + add_bytes(reg, STR_(qn->head_exact)->s, 1); + r = compile_tree_empty_check(NODE_QUANT_BODY(qn), reg, empty_info, env); + if (r != 0) return r; + r = add_opcode_rel_addr(reg, OP_JUMP, + -(mod_tlen + (int )SIZE_OP_JUMP + (int )SIZE_OP_PUSH_OR_JUMP_EXACT1)); } else if (IS_NOT_NULL(qn->next_head_exact)) { - r = add_opcode_rel_addr(reg, OP_PUSH_IF_PEEK_NEXT, - mod_tlen + SIZE_OP_JUMP); - if (r) return r; - add_bytes(reg, NSTR(qn->next_head_exact)->s, 1); - r = compile_tree_empty_check(qn->target, reg, empty_info); - if (r) return r; - r = add_opcode_rel_addr(reg, OP_JUMP, - -(mod_tlen + (int )SIZE_OP_JUMP + (int )SIZE_OP_PUSH_IF_PEEK_NEXT)); + r = add_opcode_rel_addr(reg, OP_PUSH_IF_PEEK_NEXT, + mod_tlen + SIZE_OP_JUMP); + if (r != 0) return r; + add_bytes(reg, STR_(qn->next_head_exact)->s, 1); + r = compile_tree_empty_check(NODE_QUANT_BODY(qn), reg, empty_info, env); + if (r != 0) return r; + r = add_opcode_rel_addr(reg, OP_JUMP, + -(mod_tlen + (int )SIZE_OP_JUMP + (int )SIZE_OP_PUSH_IF_PEEK_NEXT)); } else { - r = add_opcode_rel_addr(reg, OP_PUSH, mod_tlen + SIZE_OP_JUMP); - if (r) return r; - r = compile_tree_empty_check(qn->target, reg, empty_info); - if (r) return r; - r = add_opcode_rel_addr(reg, OP_JUMP, - -(mod_tlen + (int )SIZE_OP_JUMP + (int )SIZE_OP_PUSH)); + r = add_opcode_rel_addr(reg, OP_PUSH, mod_tlen + SIZE_OP_JUMP); + if (r != 0) return r; + r = compile_tree_empty_check(NODE_QUANT_BODY(qn), reg, empty_info, env); + if (r != 0) return r; + r = add_opcode_rel_addr(reg, OP_JUMP, + -(mod_tlen + (int )SIZE_OP_JUMP + (int )SIZE_OP_PUSH)); } } else { r = add_opcode_rel_addr(reg, OP_JUMP, mod_tlen); - if (r) return r; - r = compile_tree_empty_check(qn->target, reg, empty_info); - if (r) return r; + if (r != 0) return r; + r = compile_tree_empty_check(NODE_QUANT_BODY(qn), reg, empty_info, env); + if (r != 0) return r; r = add_opcode_rel_addr(reg, OP_PUSH, -(mod_tlen + (int )SIZE_OP_PUSH)); } } else if (qn->upper == 0 && qn->is_refered != 0) { /* /(?..){0}/ */ r = add_opcode_rel_addr(reg, OP_JUMP, tlen); - if (r) return r; - r = compile_tree(qn->target, reg); + if (r != 0) return r; + r = compile_tree(NODE_QUANT_BODY(qn), reg, env); } - else if (!infinite && qn->greedy && - (qn->upper == 1 || (tlen + SIZE_OP_PUSH) * qn->upper - <= QUANTIFIER_EXPAND_LIMIT_SIZE)) { + else if (! infinite && qn->greedy && + (qn->upper == 1 || + int_multiply_cmp(tlen + SIZE_OP_PUSH, qn->upper, + QUANTIFIER_EXPAND_LIMIT_SIZE) <= 0)) { int n = qn->upper - qn->lower; - r = compile_tree_n_times(qn->target, qn->lower, reg); - if (r) return r; + r = compile_tree_n_times(NODE_QUANT_BODY(qn), qn->lower, reg, env); + if (r != 0) return r; for (i = 0; i < n; i++) { r = add_opcode_rel_addr(reg, OP_PUSH, - (n - i) * tlen + (n - i - 1) * SIZE_OP_PUSH); - if (r) return r; - r = compile_tree(qn->target, reg); - if (r) return r; + (n - i) * tlen + (n - i - 1) * SIZE_OP_PUSH); + if (r != 0) return r; + r = compile_tree(NODE_QUANT_BODY(qn), reg, env); + if (r != 0) return r; } } - else if (!qn->greedy && qn->upper == 1 && qn->lower == 0) { /* '??' */ + else if (! qn->greedy && qn->upper == 1 && qn->lower == 0) { /* '??' */ r = add_opcode_rel_addr(reg, OP_PUSH, SIZE_OP_JUMP); - if (r) return r; + if (r != 0) return r; r = add_opcode_rel_addr(reg, OP_JUMP, tlen); - if (r) return r; - r = compile_tree(qn->target, reg); + if (r != 0) return r; + r = compile_tree(NODE_QUANT_BODY(qn), reg, env); } else { - r = compile_range_repeat_node(qn, mod_tlen, empty_info, reg); + r = compile_range_repeat_node(qn, mod_tlen, empty_info, reg, env); } return r; } -#endif /* USE_COMBINATION_EXPLOSION_CHECK */ static int -compile_length_option_node(EncloseNode* node, regex_t* reg) +compile_length_option_node(EnclosureNode* node, regex_t* reg) { int tlen; OnigOptionType prev = reg->options; - reg->options = node->option; - tlen = compile_length_tree(node->target, reg); + reg->options = node->o.options; + tlen = compile_length_tree(NODE_ENCLOSURE_BODY(node), reg); reg->options = prev; - if (tlen < 0) return tlen; - - if (IS_DYNAMIC_OPTION(prev ^ node->option)) { - return SIZE_OP_SET_OPTION_PUSH + SIZE_OP_SET_OPTION + SIZE_OP_FAIL - + tlen + SIZE_OP_SET_OPTION; - } - else - return tlen; + return tlen; } static int -compile_option_node(EncloseNode* node, regex_t* reg) +compile_option_node(EnclosureNode* node, regex_t* reg, ScanEnv* env) { int r; OnigOptionType prev = reg->options; - if (IS_DYNAMIC_OPTION(prev ^ node->option)) { - r = add_opcode_option(reg, OP_SET_OPTION_PUSH, node->option); - if (r) return r; - r = add_opcode_option(reg, OP_SET_OPTION, prev); - if (r) return r; - r = add_opcode(reg, OP_FAIL); - if (r) return r; - } - - reg->options = node->option; - r = compile_tree(node->target, reg); + reg->options = node->o.options; + r = compile_tree(NODE_ENCLOSURE_BODY(node), reg, env); reg->options = prev; - if (IS_DYNAMIC_OPTION(prev ^ node->option)) { - if (r) return r; - r = add_opcode_option(reg, OP_SET_OPTION, prev); - } return r; } static int -compile_length_enclose_node(EncloseNode* node, regex_t* reg) +compile_length_enclosure_node(EnclosureNode* node, regex_t* reg) { int len; int tlen; - QtfrNode* qn; - qn = NULL; - - if (node->type == ENCLOSE_OPTION) + if (node->type == ENCLOSURE_OPTION) return compile_length_option_node(node, reg); - if (node->target) { - tlen = compile_length_tree(node->target, reg); + if (NODE_ENCLOSURE_BODY(node)) { + tlen = compile_length_tree(NODE_ENCLOSURE_BODY(node), reg); if (tlen < 0) return tlen; } else tlen = 0; switch (node->type) { - case ENCLOSE_MEMORY: -#ifdef USE_SUBEXP_CALL - if (IS_ENCLOSE_CALLED(node)) { + case ENCLOSURE_MEMORY: +#ifdef USE_CALL + + if (node->m.regnum == 0 && NODE_IS_CALLED(node)) { + len = tlen + SIZE_OP_CALL + SIZE_OP_JUMP + SIZE_OP_RETURN; + return len; + } + + if (NODE_IS_CALLED(node)) { len = SIZE_OP_MEMORY_START_PUSH + tlen - + SIZE_OP_CALL + SIZE_OP_JUMP + SIZE_OP_RETURN; - if (BIT_STATUS_AT(reg->bt_mem_end, node->regnum)) - len += (IS_ENCLOSE_RECURSION(node) - ? SIZE_OP_MEMORY_END_PUSH_REC : SIZE_OP_MEMORY_END_PUSH); + + SIZE_OP_CALL + SIZE_OP_JUMP + SIZE_OP_RETURN; + if (MEM_STATUS_AT0(reg->bt_mem_end, node->m.regnum)) + len += (NODE_IS_RECURSION(node) + ? SIZE_OP_MEMORY_END_PUSH_REC : SIZE_OP_MEMORY_END_PUSH); else - len += (IS_ENCLOSE_RECURSION(node) - ? SIZE_OP_MEMORY_END_REC : SIZE_OP_MEMORY_END); + len += (NODE_IS_RECURSION(node) + ? SIZE_OP_MEMORY_END_REC : SIZE_OP_MEMORY_END); + } + else if (NODE_IS_RECURSION(node)) { + len = SIZE_OP_MEMORY_START_PUSH; + len += tlen + (MEM_STATUS_AT0(reg->bt_mem_end, node->m.regnum) + ? SIZE_OP_MEMORY_END_PUSH_REC : SIZE_OP_MEMORY_END_REC); } else #endif { - if (BIT_STATUS_AT(reg->bt_mem_start, node->regnum)) - len = SIZE_OP_MEMORY_START_PUSH; + if (MEM_STATUS_AT0(reg->bt_mem_start, node->m.regnum)) + len = SIZE_OP_MEMORY_START_PUSH; else - len = SIZE_OP_MEMORY_START; + len = SIZE_OP_MEMORY_START; - len += tlen + (BIT_STATUS_AT(reg->bt_mem_end, node->regnum) - ? SIZE_OP_MEMORY_END_PUSH : SIZE_OP_MEMORY_END); + len += tlen + (MEM_STATUS_AT0(reg->bt_mem_end, node->m.regnum) + ? SIZE_OP_MEMORY_END_PUSH : SIZE_OP_MEMORY_END); } break; - case ENCLOSE_STOP_BACKTRACK: - if (IS_ENCLOSE_STOP_BT_SIMPLE_REPEAT(node)) { - if (node->target == NULL) { - CHECK_NULL_RETURN_MEMERR(node->target); - } - qn = NQTFR(node->target); - tlen = compile_length_tree(qn->target, reg); + case ENCLOSURE_STOP_BACKTRACK: + if (NODE_IS_STOP_BT_SIMPLE_REPEAT(node)) { + QuantNode* qn = QUANT_(NODE_ENCLOSURE_BODY(node)); + tlen = compile_length_tree(NODE_QUANT_BODY(qn), reg); if (tlen < 0) return tlen; len = tlen * qn->lower - + SIZE_OP_PUSH + tlen + SIZE_OP_POP + SIZE_OP_JUMP; + + SIZE_OP_PUSH + tlen + SIZE_OP_POP_OUT + SIZE_OP_JUMP; } else { - len = SIZE_OP_PUSH_STOP_BT + tlen + SIZE_OP_POP_STOP_BT; + len = SIZE_OP_ATOMIC_START + tlen + SIZE_OP_ATOMIC_END; } break; - default: - return ONIGERR_TYPE_BUG; - break; - } + case ENCLOSURE_IF_ELSE: + { + Node* cond = NODE_ENCLOSURE_BODY(node); + Node* Then = node->te.Then; + Node* Else = node->te.Else; - return len; -} + len = compile_length_tree(cond, reg); + if (len < 0) return len; + len += SIZE_OP_PUSH; + len += SIZE_OP_ATOMIC_START + SIZE_OP_ATOMIC_END; + + if (IS_NOT_NULL(Then)) { + tlen = compile_length_tree(Then, reg); + if (tlen < 0) return tlen; + len += tlen; + } + + if (IS_NOT_NULL(Else)) { + len += SIZE_OP_JUMP; + tlen = compile_length_tree(Else, reg); + if (tlen < 0) return tlen; + len += tlen; + } + } + break; + + default: + return ONIGERR_TYPE_BUG; + break; + } + + return len; +} static int get_char_length_tree(Node* node, regex_t* reg, int* len); static int -compile_enclose_node(EncloseNode* node, regex_t* reg) +compile_enclosure_memory_node(EnclosureNode* node, regex_t* reg, ScanEnv* env) { - int r, len; + int r; + int len; - if (node->type == ENCLOSE_OPTION) - return compile_option_node(node, reg); +#ifdef USE_CALL + if (node->m.regnum == 0 && NODE_IS_CALLED(node)) { + r = add_opcode(reg, OP_CALL); + if (r != 0) return r; + node->m.called_addr = BB_GET_OFFSET_POS(reg) + SIZE_ABSADDR + SIZE_OP_JUMP; + NODE_STATUS_ADD(node, ADDR_FIXED); + r = add_abs_addr(reg, (int )node->m.called_addr); + if (r != 0) return r; + len = compile_length_tree(NODE_ENCLOSURE_BODY(node), reg); + len += SIZE_OP_RETURN; + r = add_opcode_rel_addr(reg, OP_JUMP, len); + if (r != 0) return r; + + r = compile_tree(NODE_ENCLOSURE_BODY(node), reg, env); + if (r != 0) return r; + r = add_opcode(reg, OP_RETURN); + return r; + } - switch (node->type) { - case ENCLOSE_MEMORY: -#ifdef USE_SUBEXP_CALL - if (IS_ENCLOSE_CALLED(node)) { - r = add_opcode(reg, OP_CALL); - if (r) return r; - node->call_addr = BBUF_GET_OFFSET_POS(reg) + SIZE_ABSADDR + SIZE_OP_JUMP; - node->state |= NST_ADDR_FIXED; - r = add_abs_addr(reg, (int )node->call_addr); - if (r) return r; - len = compile_length_tree(node->target, reg); - len += (SIZE_OP_MEMORY_START_PUSH + SIZE_OP_RETURN); - if (BIT_STATUS_AT(reg->bt_mem_end, node->regnum)) - len += (IS_ENCLOSE_RECURSION(node) - ? SIZE_OP_MEMORY_END_PUSH_REC : SIZE_OP_MEMORY_END_PUSH); - else - len += (IS_ENCLOSE_RECURSION(node) - ? SIZE_OP_MEMORY_END_REC : SIZE_OP_MEMORY_END); + if (NODE_IS_CALLED(node)) { + r = add_opcode(reg, OP_CALL); + if (r != 0) return r; + node->m.called_addr = BB_GET_OFFSET_POS(reg) + SIZE_ABSADDR + SIZE_OP_JUMP; + NODE_STATUS_ADD(node, ADDR_FIXED); + r = add_abs_addr(reg, (int )node->m.called_addr); + if (r != 0) return r; + len = compile_length_tree(NODE_ENCLOSURE_BODY(node), reg); + len += (SIZE_OP_MEMORY_START_PUSH + SIZE_OP_RETURN); + if (MEM_STATUS_AT0(reg->bt_mem_end, node->m.regnum)) + len += (NODE_IS_RECURSION(node) + ? SIZE_OP_MEMORY_END_PUSH_REC : SIZE_OP_MEMORY_END_PUSH); + else + len += (NODE_IS_RECURSION(node) + ? SIZE_OP_MEMORY_END_REC : SIZE_OP_MEMORY_END); - r = add_opcode_rel_addr(reg, OP_JUMP, len); - if (r) return r; - } + r = add_opcode_rel_addr(reg, OP_JUMP, len); + if (r != 0) return r; + } #endif - if (BIT_STATUS_AT(reg->bt_mem_start, node->regnum)) - r = add_opcode(reg, OP_MEMORY_START_PUSH); - else - r = add_opcode(reg, OP_MEMORY_START); - if (r) return r; - r = add_mem_num(reg, node->regnum); - if (r) return r; - r = compile_tree(node->target, reg); - if (r) return r; -#ifdef USE_SUBEXP_CALL - if (IS_ENCLOSE_CALLED(node)) { - if (BIT_STATUS_AT(reg->bt_mem_end, node->regnum)) - r = add_opcode(reg, (IS_ENCLOSE_RECURSION(node) - ? OP_MEMORY_END_PUSH_REC : OP_MEMORY_END_PUSH)); - else - r = add_opcode(reg, (IS_ENCLOSE_RECURSION(node) - ? OP_MEMORY_END_REC : OP_MEMORY_END)); - if (r) return r; - r = add_mem_num(reg, node->regnum); - if (r) return r; - r = add_opcode(reg, OP_RETURN); - } - else + if (MEM_STATUS_AT0(reg->bt_mem_start, node->m.regnum)) + r = add_opcode(reg, OP_MEMORY_START_PUSH); + else + r = add_opcode(reg, OP_MEMORY_START); + if (r != 0) return r; + r = add_mem_num(reg, node->m.regnum); + if (r != 0) return r; + r = compile_tree(NODE_ENCLOSURE_BODY(node), reg, env); + if (r != 0) return r; + +#ifdef USE_CALL + if (MEM_STATUS_AT0(reg->bt_mem_end, node->m.regnum)) + r = add_opcode(reg, (NODE_IS_RECURSION(node) + ? OP_MEMORY_END_PUSH_REC : OP_MEMORY_END_PUSH)); + else + r = add_opcode(reg, (NODE_IS_RECURSION(node) + ? OP_MEMORY_END_REC : OP_MEMORY_END)); + if (r != 0) return r; + r = add_mem_num(reg, node->m.regnum); + if (NODE_IS_CALLED(node)) { + if (r != 0) return r; + r = add_opcode(reg, OP_RETURN); + } +#else + if (MEM_STATUS_AT0(reg->bt_mem_end, node->m.regnum)) + r = add_opcode(reg, OP_MEMORY_END_PUSH); + else + r = add_opcode(reg, OP_MEMORY_END); + if (r != 0) return r; + r = add_mem_num(reg, node->m.regnum); #endif - { - if (BIT_STATUS_AT(reg->bt_mem_end, node->regnum)) - r = add_opcode(reg, OP_MEMORY_END_PUSH); - else - r = add_opcode(reg, OP_MEMORY_END); - if (r) return r; - r = add_mem_num(reg, node->regnum); - } + + return r; +} + +static int +compile_enclosure_node(EnclosureNode* node, regex_t* reg, ScanEnv* env) +{ + int r, len; + + switch (node->type) { + case ENCLOSURE_MEMORY: + r = compile_enclosure_memory_node(node, reg, env); + break; + + case ENCLOSURE_OPTION: + r = compile_option_node(node, reg, env); break; - case ENCLOSE_STOP_BACKTRACK: - if (IS_ENCLOSE_STOP_BT_SIMPLE_REPEAT(node)) { - QtfrNode* qn = NQTFR(node->target); - r = compile_tree_n_times(qn->target, qn->lower, reg); - if (r) return r; + case ENCLOSURE_STOP_BACKTRACK: + if (NODE_IS_STOP_BT_SIMPLE_REPEAT(node)) { + QuantNode* qn = QUANT_(NODE_ENCLOSURE_BODY(node)); + r = compile_tree_n_times(NODE_QUANT_BODY(qn), qn->lower, reg, env); + if (r != 0) return r; - len = compile_length_tree(qn->target, reg); + len = compile_length_tree(NODE_QUANT_BODY(qn), reg); if (len < 0) return len; - r = add_opcode_rel_addr(reg, OP_PUSH, len + SIZE_OP_POP + SIZE_OP_JUMP); - if (r) return r; - r = compile_tree(qn->target, reg); - if (r) return r; - r = add_opcode(reg, OP_POP); - if (r) return r; + r = add_opcode_rel_addr(reg, OP_PUSH, len + SIZE_OP_POP_OUT + SIZE_OP_JUMP); + if (r != 0) return r; + r = compile_tree(NODE_QUANT_BODY(qn), reg, env); + if (r != 0) return r; + r = add_opcode(reg, OP_POP_OUT); + if (r != 0) return r; r = add_opcode_rel_addr(reg, OP_JUMP, - -((int )SIZE_OP_PUSH + len + (int )SIZE_OP_POP + (int )SIZE_OP_JUMP)); + -((int )SIZE_OP_PUSH + len + (int )SIZE_OP_POP_OUT + (int )SIZE_OP_JUMP)); } else { - r = add_opcode(reg, OP_PUSH_STOP_BT); - if (r) return r; - r = compile_tree(node->target, reg); - if (r) return r; - r = add_opcode(reg, OP_POP_STOP_BT); + r = add_opcode(reg, OP_ATOMIC_START); + if (r != 0) return r; + r = compile_tree(NODE_ENCLOSURE_BODY(node), reg, env); + if (r != 0) return r; + r = add_opcode(reg, OP_ATOMIC_END); + } + break; + + case ENCLOSURE_IF_ELSE: + { + int cond_len, then_len, jump_len; + Node* cond = NODE_ENCLOSURE_BODY(node); + Node* Then = node->te.Then; + Node* Else = node->te.Else; + + r = add_opcode(reg, OP_ATOMIC_START); + if (r != 0) return r; + + cond_len = compile_length_tree(cond, reg); + if (cond_len < 0) return cond_len; + if (IS_NOT_NULL(Then)) { + then_len = compile_length_tree(Then, reg); + if (then_len < 0) return then_len; + } + else + then_len = 0; + + jump_len = cond_len + then_len + SIZE_OP_ATOMIC_END; + if (IS_NOT_NULL(Else)) jump_len += SIZE_OP_JUMP; + + r = add_opcode_rel_addr(reg, OP_PUSH, jump_len); + if (r != 0) return r; + r = compile_tree(cond, reg, env); + if (r != 0) return r; + r = add_opcode(reg, OP_ATOMIC_END); + if (r != 0) return r; + + if (IS_NOT_NULL(Then)) { + r = compile_tree(Then, reg, env); + if (r != 0) return r; + } + + if (IS_NOT_NULL(Else)) { + int else_len = compile_length_tree(Else, reg); + r = add_opcode_rel_addr(reg, OP_JUMP, else_len); + if (r != 0) return r; + r = compile_tree(Else, reg, env); + } } break; @@ -1385,23 +1299,37 @@ compile_length_anchor_node(AnchorNode* node, regex_t* reg) int len; int tlen = 0; - if (node->target) { - tlen = compile_length_tree(node->target, reg); + if (IS_NOT_NULL(NODE_ANCHOR_BODY(node))) { + tlen = compile_length_tree(NODE_ANCHOR_BODY(node), reg); if (tlen < 0) return tlen; } switch (node->type) { case ANCHOR_PREC_READ: - len = SIZE_OP_PUSH_POS + tlen + SIZE_OP_POP_POS; + len = SIZE_OP_PREC_READ_START + tlen + SIZE_OP_PREC_READ_END; break; case ANCHOR_PREC_READ_NOT: - len = SIZE_OP_PUSH_POS_NOT + tlen + SIZE_OP_FAIL_POS; + len = SIZE_OP_PREC_READ_NOT_START + tlen + SIZE_OP_PREC_READ_NOT_END; break; case ANCHOR_LOOK_BEHIND: len = SIZE_OP_LOOK_BEHIND + tlen; break; case ANCHOR_LOOK_BEHIND_NOT: - len = SIZE_OP_PUSH_LOOK_BEHIND_NOT + tlen + SIZE_OP_FAIL_LOOK_BEHIND_NOT; + len = SIZE_OP_LOOK_BEHIND_NOT_START + tlen + SIZE_OP_LOOK_BEHIND_NOT_END; + break; + + case ANCHOR_WORD_BOUNDARY: + case ANCHOR_NO_WORD_BOUNDARY: +#ifdef USE_WORD_BEGIN_END + case ANCHOR_WORD_BEGIN: + case ANCHOR_WORD_END: +#endif + len = SIZE_OP_WORD_BOUNDARY; + break; + + case ANCHOR_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY: + case ANCHOR_NO_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY: + len = SIZE_OPCODE; break; default: @@ -1413,9 +1341,10 @@ compile_length_anchor_node(AnchorNode* node, regex_t* reg) } static int -compile_anchor_node(AnchorNode* node, regex_t* reg) +compile_anchor_node(AnchorNode* node, regex_t* reg, ScanEnv* env) { int r, len; + enum OpCode op; switch (node->type) { case ANCHOR_BEGIN_BUF: r = add_opcode(reg, OP_BEGIN_BUF); break; @@ -1425,66 +1354,89 @@ compile_anchor_node(AnchorNode* node, regex_t* reg) case ANCHOR_SEMI_END_BUF: r = add_opcode(reg, OP_SEMI_END_BUF); break; case ANCHOR_BEGIN_POSITION: r = add_opcode(reg, OP_BEGIN_POSITION); break; - case ANCHOR_WORD_BOUND: r = add_opcode(reg, OP_WORD_BOUND); break; - case ANCHOR_NOT_WORD_BOUND: r = add_opcode(reg, OP_NOT_WORD_BOUND); break; + case ANCHOR_WORD_BOUNDARY: + op = OP_WORD_BOUNDARY; + word: + r = add_opcode(reg, op); + if (r != 0) return r; + r = add_mode(reg, (ModeType )node->ascii_mode); + break; + + case ANCHOR_NO_WORD_BOUNDARY: + op = OP_NO_WORD_BOUNDARY; goto word; + break; #ifdef USE_WORD_BEGIN_END - case ANCHOR_WORD_BEGIN: r = add_opcode(reg, OP_WORD_BEGIN); break; - case ANCHOR_WORD_END: r = add_opcode(reg, OP_WORD_END); break; + case ANCHOR_WORD_BEGIN: + op = OP_WORD_BEGIN; goto word; + break; + case ANCHOR_WORD_END: + op = OP_WORD_END; goto word; + break; #endif + case ANCHOR_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY: + r = add_opcode(reg, OP_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY); + break; + + case ANCHOR_NO_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY: + r = add_opcode(reg, OP_NO_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY); + break; + case ANCHOR_PREC_READ: - r = add_opcode(reg, OP_PUSH_POS); - if (r) return r; - r = compile_tree(node->target, reg); - if (r) return r; - r = add_opcode(reg, OP_POP_POS); + r = add_opcode(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_opcode(reg, OP_PREC_READ_END); break; case ANCHOR_PREC_READ_NOT: - len = compile_length_tree(node->target, reg); + len = compile_length_tree(NODE_ANCHOR_BODY(node), reg); if (len < 0) return len; - r = add_opcode_rel_addr(reg, OP_PUSH_POS_NOT, len + SIZE_OP_FAIL_POS); - if (r) return r; - r = compile_tree(node->target, reg); - if (r) return r; - r = add_opcode(reg, OP_FAIL_POS); + r = add_opcode_rel_addr(reg, OP_PREC_READ_NOT_START, len + SIZE_OP_PREC_READ_NOT_END); + if (r != 0) return r; + r = compile_tree(NODE_ANCHOR_BODY(node), reg, env); + if (r != 0) return r; + r = add_opcode(reg, OP_PREC_READ_NOT_END); break; case ANCHOR_LOOK_BEHIND: { int n; r = add_opcode(reg, OP_LOOK_BEHIND); - if (r) return r; + if (r != 0) return r; if (node->char_len < 0) { - r = get_char_length_tree(node->target, reg, &n); - if (r) return ONIGERR_INVALID_LOOK_BEHIND_PATTERN; + r = get_char_length_tree(NODE_ANCHOR_BODY(node), reg, &n); + if (r != 0) return ONIGERR_INVALID_LOOK_BEHIND_PATTERN; } else - n = node->char_len; + n = node->char_len; + r = add_length(reg, n); - if (r) return r; - r = compile_tree(node->target, reg); + if (r != 0) return r; + r = compile_tree(NODE_ANCHOR_BODY(node), reg, env); } break; case ANCHOR_LOOK_BEHIND_NOT: { int n; - len = compile_length_tree(node->target, reg); - r = add_opcode_rel_addr(reg, OP_PUSH_LOOK_BEHIND_NOT, - len + SIZE_OP_FAIL_LOOK_BEHIND_NOT); - if (r) return r; + + len = compile_length_tree(NODE_ANCHOR_BODY(node), reg); + r = add_opcode_rel_addr(reg, OP_LOOK_BEHIND_NOT_START, + len + SIZE_OP_LOOK_BEHIND_NOT_END); + if (r != 0) return r; if (node->char_len < 0) { - r = get_char_length_tree(node->target, reg, &n); - if (r) return ONIGERR_INVALID_LOOK_BEHIND_PATTERN; + r = get_char_length_tree(NODE_ANCHOR_BODY(node), reg, &n); + if (r != 0) return ONIGERR_INVALID_LOOK_BEHIND_PATTERN; } else - n = node->char_len; + n = node->char_len; r = add_length(reg, n); - if (r) return r; - r = compile_tree(node->target, reg); - if (r) return r; - r = add_opcode(reg, OP_FAIL_LOOK_BEHIND_NOT); + if (r != 0) return r; + r = compile_tree(NODE_ANCHOR_BODY(node), reg, env); + if (r != 0) return r; + r = add_opcode(reg, OP_LOOK_BEHIND_NOT_END); } break; @@ -1496,89 +1448,204 @@ compile_anchor_node(AnchorNode* node, regex_t* reg) return r; } +static int +compile_gimmick_node(GimmickNode* node, regex_t* reg) +{ + int r; + + switch (node->type) { + case GIMMICK_FAIL: + r = add_opcode(reg, OP_FAIL); + break; + + case GIMMICK_KEEP: + r = add_opcode(reg, OP_PUSH_SAVE_VAL); + if (r != 0) return r; + r = add_save_type(reg, SAVE_KEEP); + if (r != 0) return r; + r = add_mem_num(reg, node->id); + break; + + case GIMMICK_SAVE: + r = add_opcode(reg, OP_PUSH_SAVE_VAL); + if (r != 0) return r; + r = add_save_type(reg, node->detail_type); + if (r != 0) return r; + r = add_mem_num(reg, node->id); + break; + + case GIMMICK_UPDATE_VAR: + r = add_opcode(reg, OP_UPDATE_VAR); + if (r != 0) return r; + r = add_update_var_type(reg, node->detail_type); + if (r != 0) return r; + r = add_mem_num(reg, node->id); + break; + +#ifdef USE_CALLOUT + case GIMMICK_CALLOUT: + switch (node->detail_type) { + case ONIG_CALLOUT_OF_CONTENTS: + case ONIG_CALLOUT_OF_NAME: + { + r = add_opcode(reg, (node->detail_type == ONIG_CALLOUT_OF_CONTENTS) ? + OP_CALLOUT_CONTENTS : OP_CALLOUT_NAME); + if (r != 0) return r; + if (node->detail_type == ONIG_CALLOUT_OF_NAME) { + r = add_mem_num(reg, node->id); + if (r != 0) return r; + } + r = add_mem_num(reg, node->num); + if (r != 0) return r; + } + break; + + default: + r = ONIGERR_TYPE_BUG; + break; + } +#endif + } + + return r; +} + +static int +compile_length_gimmick_node(GimmickNode* node, regex_t* reg) +{ + int len; + + switch (node->type) { + case GIMMICK_FAIL: + len = SIZE_OP_FAIL; + break; + + case GIMMICK_KEEP: + case GIMMICK_SAVE: + len = SIZE_OP_PUSH_SAVE_VAL; + break; + + case GIMMICK_UPDATE_VAR: + len = SIZE_OP_UPDATE_VAR; + break; + +#ifdef USE_CALLOUT + case GIMMICK_CALLOUT: + switch (node->detail_type) { + case ONIG_CALLOUT_OF_CONTENTS: + len = SIZE_OP_CALLOUT_CONTENTS; + break; + case ONIG_CALLOUT_OF_NAME: + len = SIZE_OP_CALLOUT_NAME; + break; + + default: + len = ONIGERR_TYPE_BUG; + break; + } + break; +#endif + } + + return len; +} + static int compile_length_tree(Node* node, regex_t* reg) { - int len, type, r; + int len, r; - type = NTYPE(node); - switch (type) { - case NT_LIST: + switch (NODE_TYPE(node)) { + case NODE_LIST: len = 0; do { - r = compile_length_tree(NCAR(node), reg); + r = compile_length_tree(NODE_CAR(node), reg); if (r < 0) return r; len += r; - } while (IS_NOT_NULL(node = NCDR(node))); + } while (IS_NOT_NULL(node = NODE_CDR(node))); r = len; break; - case NT_ALT: + case NODE_ALT: { int n; n = r = 0; do { - r += compile_length_tree(NCAR(node), reg); - n++; - } while (IS_NOT_NULL(node = NCDR(node))); + r += compile_length_tree(NODE_CAR(node), reg); + n++; + } while (IS_NOT_NULL(node = NODE_CDR(node))); r += (SIZE_OP_PUSH + SIZE_OP_JUMP) * (n - 1); } break; - case NT_STR: - if (NSTRING_IS_RAW(node)) - r = compile_length_string_raw_node(NSTR(node), reg); + case NODE_STRING: + if (NODE_STRING_IS_RAW(node)) + r = compile_length_string_raw_node(STR_(node), reg); else r = compile_length_string_node(node, reg); break; - case NT_CCLASS: - r = compile_length_cclass_node(NCCLASS(node), reg); + case NODE_CCLASS: + r = compile_length_cclass_node(CCLASS_(node), reg); break; - case NT_CTYPE: - case NT_CANY: + case NODE_CTYPE: r = SIZE_OPCODE; break; - case NT_BREF: + case NODE_BACKREF: { - BRefNode* br = NBREF(node); + BackRefNode* br = BACKREF_(node); + if (NODE_IS_CHECKER(node)) { #ifdef USE_BACKREF_WITH_LEVEL - if (IS_BACKREF_NEST_LEVEL(br)) { - r = SIZE_OPCODE + SIZE_OPTION + SIZE_LENGTH + - SIZE_LENGTH + (SIZE_MEMNUM * br->back_num); - } - else + if (NODE_IS_NEST_LEVEL(node)) { + r = SIZE_OPCODE + SIZE_LENGTH + SIZE_LENGTH + (SIZE_MEMNUM * br->back_num); + } + else #endif - if (br->back_num == 1) { - r = ((!IS_IGNORECASE(reg->options) && br->back_static[0] <= 2) - ? SIZE_OPCODE : (SIZE_OPCODE + SIZE_MEMNUM)); + r = SIZE_OPCODE + SIZE_LENGTH + (SIZE_MEMNUM * br->back_num); } else { - r = SIZE_OPCODE + SIZE_LENGTH + (SIZE_MEMNUM * br->back_num); +#ifdef USE_BACKREF_WITH_LEVEL + if (NODE_IS_NEST_LEVEL(node)) { + r = SIZE_OPCODE + SIZE_OPTION + SIZE_LENGTH + + SIZE_LENGTH + (SIZE_MEMNUM * br->back_num); + } + else +#endif + if (br->back_num == 1) { + r = ((!IS_IGNORECASE(reg->options) && br->back_static[0] <= 2) + ? SIZE_OPCODE : (SIZE_OPCODE + SIZE_MEMNUM)); + } + else { + r = SIZE_OPCODE + SIZE_LENGTH + (SIZE_MEMNUM * br->back_num); + } } } break; -#ifdef USE_SUBEXP_CALL - case NT_CALL: +#ifdef USE_CALL + case NODE_CALL: r = SIZE_OP_CALL; break; #endif - case NT_QTFR: - r = compile_length_quantifier_node(NQTFR(node), reg); + case NODE_QUANT: + r = compile_length_quantifier_node(QUANT_(node), reg); + break; + + case NODE_ENCLOSURE: + r = compile_length_enclosure_node(ENCLOSURE_(node), reg); break; - case NT_ENCLOSE: - r = compile_length_enclose_node(NENCLOSE(node), reg); + case NODE_ANCHOR: + r = compile_length_anchor_node(ANCHOR_(node), reg); break; - case NT_ANCHOR: - r = compile_length_anchor_node(NANCHOR(node), reg); + case NODE_GIMMICK: + r = compile_length_gimmick_node(GIMMICK_(node), reg); break; default: @@ -1590,165 +1657,191 @@ compile_length_tree(Node* node, regex_t* reg) } static int -compile_tree(Node* node, regex_t* reg) +compile_tree(Node* node, regex_t* reg, ScanEnv* env) { - int n, type, len, pos, r = 0; + int n, len, pos, r = 0; - type = NTYPE(node); - switch (type) { - case NT_LIST: + switch (NODE_TYPE(node)) { + case NODE_LIST: do { - r = compile_tree(NCAR(node), reg); - } while (r == 0 && IS_NOT_NULL(node = NCDR(node))); + r = compile_tree(NODE_CAR(node), reg, env); + } while (r == 0 && IS_NOT_NULL(node = NODE_CDR(node))); break; - case NT_ALT: + case NODE_ALT: { Node* x = node; len = 0; do { - len += compile_length_tree(NCAR(x), reg); - if (NCDR(x) != NULL) { - len += SIZE_OP_PUSH + SIZE_OP_JUMP; - } - } while (IS_NOT_NULL(x = NCDR(x))); + len += compile_length_tree(NODE_CAR(x), reg); + if (IS_NOT_NULL(NODE_CDR(x))) { + len += SIZE_OP_PUSH + SIZE_OP_JUMP; + } + } while (IS_NOT_NULL(x = NODE_CDR(x))); pos = reg->used + len; /* goal position */ do { - len = compile_length_tree(NCAR(node), reg); - if (IS_NOT_NULL(NCDR(node))) { - r = add_opcode_rel_addr(reg, OP_PUSH, len + SIZE_OP_JUMP); - if (r) break; - } - r = compile_tree(NCAR(node), reg); - if (r) break; - if (IS_NOT_NULL(NCDR(node))) { - len = pos - (reg->used + SIZE_OP_JUMP); - r = add_opcode_rel_addr(reg, OP_JUMP, len); - if (r) break; - } - } while (IS_NOT_NULL(node = NCDR(node))); - } - break; - - case NT_STR: - if (NSTRING_IS_RAW(node)) - r = compile_string_raw_node(NSTR(node), reg); + len = compile_length_tree(NODE_CAR(node), reg); + if (IS_NOT_NULL(NODE_CDR(node))) { + enum OpCode push = NODE_IS_SUPER(node) ? OP_PUSH_SUPER : OP_PUSH; + r = add_opcode_rel_addr(reg, push, len + SIZE_OP_JUMP); + if (r != 0) break; + } + r = compile_tree(NODE_CAR(node), reg, env); + if (r != 0) break; + if (IS_NOT_NULL(NODE_CDR(node))) { + len = pos - (reg->used + SIZE_OP_JUMP); + r = add_opcode_rel_addr(reg, OP_JUMP, len); + if (r != 0) break; + } + } while (IS_NOT_NULL(node = NODE_CDR(node))); + } + break; + + case NODE_STRING: + if (NODE_STRING_IS_RAW(node)) + r = compile_string_raw_node(STR_(node), reg); else r = compile_string_node(node, reg); break; - case NT_CCLASS: - r = compile_cclass_node(NCCLASS(node), reg); + case NODE_CCLASS: + r = compile_cclass_node(CCLASS_(node), reg); break; - case NT_CTYPE: + case NODE_CTYPE: { int op; - switch (NCTYPE(node)->ctype) { + switch (CTYPE_(node)->ctype) { + case CTYPE_ANYCHAR: + if (IS_MULTILINE(CTYPE_OPTION(node, reg))) + r = add_opcode(reg, OP_ANYCHAR_ML); + else + r = add_opcode(reg, OP_ANYCHAR); + break; + case ONIGENC_CTYPE_WORD: - if (NCTYPE(node)->not != 0) op = OP_NOT_WORD; - else op = OP_WORD; - break; + if (CTYPE_(node)->ascii_mode == 0) { + op = CTYPE_(node)->not != 0 ? OP_NO_WORD : OP_WORD; + } + else { + op = CTYPE_(node)->not != 0 ? OP_NO_WORD_ASCII : OP_WORD_ASCII; + } + r = add_opcode(reg, op); + break; + default: - return ONIGERR_TYPE_BUG; - break; + return ONIGERR_TYPE_BUG; + break; } - r = add_opcode(reg, op); } break; - case NT_CANY: - if (IS_MULTILINE(reg->options)) - r = add_opcode(reg, OP_ANYCHAR_ML); - else - r = add_opcode(reg, OP_ANYCHAR); - break; - - case NT_BREF: + case NODE_BACKREF: { - BRefNode* br = NBREF(node); + BackRefNode* br = BACKREF_(node); + if (NODE_IS_CHECKER(node)) { #ifdef USE_BACKREF_WITH_LEVEL - if (IS_BACKREF_NEST_LEVEL(br)) { - r = add_opcode(reg, OP_BACKREF_WITH_LEVEL); - if (r) return r; - r = add_option(reg, (reg->options & ONIG_OPTION_IGNORECASE)); - if (r) return r; - r = add_length(reg, br->nest_level); - if (r) return r; - - goto add_bacref_mems; - } - else + if (NODE_IS_NEST_LEVEL(node)) { + r = add_opcode(reg, OP_BACKREF_CHECK_WITH_LEVEL); + if (r != 0) return r; + r = add_length(reg, br->nest_level); + if (r != 0) return r; + } + else #endif - if (br->back_num == 1) { - n = br->back_static[0]; - if (IS_IGNORECASE(reg->options)) { - r = add_opcode(reg, OP_BACKREFN_IC); - if (r) return r; - r = add_mem_num(reg, n); - } - else { - switch (n) { - case 1: r = add_opcode(reg, OP_BACKREF1); break; - case 2: r = add_opcode(reg, OP_BACKREF2); break; - default: - r = add_opcode(reg, OP_BACKREFN); - if (r) return r; - r = add_mem_num(reg, n); - break; - } - } + { + r = add_opcode(reg, OP_BACKREF_CHECK); + if (r != 0) return r; + } + + goto add_bacref_mems; } else { - int i; - int* p; - - if (IS_IGNORECASE(reg->options)) { - r = add_opcode(reg, OP_BACKREF_MULTI_IC); +#ifdef USE_BACKREF_WITH_LEVEL + if (NODE_IS_NEST_LEVEL(node)) { + r = add_opcode(reg, OP_BACKREF_WITH_LEVEL); + if (r != 0) return r; + r = add_option(reg, (reg->options & ONIG_OPTION_IGNORECASE)); + if (r != 0) return r; + r = add_length(reg, br->nest_level); + if (r != 0) return r; + + goto add_bacref_mems; } - else { - r = add_opcode(reg, OP_BACKREF_MULTI); + else +#endif + if (br->back_num == 1) { + n = br->back_static[0]; + if (IS_IGNORECASE(reg->options)) { + r = add_opcode(reg, OP_BACKREF_N_IC); + if (r != 0) return r; + r = add_mem_num(reg, n); + } + else { + switch (n) { + case 1: r = add_opcode(reg, OP_BACKREF1); break; + case 2: r = add_opcode(reg, OP_BACKREF2); break; + default: + r = add_opcode(reg, OP_BACKREF_N); + if (r != 0) return r; + r = add_mem_num(reg, n); + break; + } + } } - if (r) return r; + else { + int i; + int* p; -#ifdef USE_BACKREF_WITH_LEVEL - add_bacref_mems: -#endif - r = add_length(reg, br->back_num); - if (r) return r; - p = BACKREFS_P(br); - for (i = br->back_num - 1; i >= 0; i--) { - r = add_mem_num(reg, p[i]); - if (r) return r; - } + if (IS_IGNORECASE(reg->options)) { + r = add_opcode(reg, OP_BACKREF_MULTI_IC); + } + else { + r = add_opcode(reg, OP_BACKREF_MULTI); + } + if (r != 0) return r; + + add_bacref_mems: + r = add_length(reg, br->back_num); + if (r != 0) return r; + p = BACKREFS_P(br); + for (i = br->back_num - 1; i >= 0; i--) { + r = add_mem_num(reg, p[i]); + if (r != 0) return r; + } + } } } break; -#ifdef USE_SUBEXP_CALL - case NT_CALL: - r = compile_call(NCALL(node), reg); +#ifdef USE_CALL + case NODE_CALL: + r = compile_call(CALL_(node), reg, env); break; #endif - case NT_QTFR: - r = compile_quantifier_node(NQTFR(node), reg); + case NODE_QUANT: + r = compile_quantifier_node(QUANT_(node), reg, env); break; - case NT_ENCLOSE: - r = compile_enclose_node(NENCLOSE(node), reg); + case NODE_ENCLOSURE: + r = compile_enclosure_node(ENCLOSURE_(node), reg, env); break; - case NT_ANCHOR: - r = compile_anchor_node(NANCHOR(node), reg); + case NODE_ANCHOR: + r = compile_anchor_node(ANCHOR_(node), reg, env); + break; + + case NODE_GIMMICK: + r = compile_gimmick_node(GIMMICK_(node), reg); break; default: #ifdef ONIG_DEBUG - fprintf(stderr, "compile_tree: undefined node type %d\n", NTYPE(node)); + fprintf(stderr, "compile_tree: undefined node type %d\n", NODE_TYPE(node)); #endif break; } @@ -1756,55 +1849,70 @@ compile_tree(Node* node, regex_t* reg) return r; } -#ifdef USE_NAMED_GROUP - static int noname_disable_map(Node** plink, GroupNumRemap* map, int* counter) { int r = 0; Node* node = *plink; - switch (NTYPE(node)) { - case NT_LIST: - case NT_ALT: + switch (NODE_TYPE(node)) { + case NODE_LIST: + case NODE_ALT: do { - r = noname_disable_map(&(NCAR(node)), map, counter); - } while (r == 0 && IS_NOT_NULL(node = NCDR(node))); + r = noname_disable_map(&(NODE_CAR(node)), map, counter); + } while (r == 0 && IS_NOT_NULL(node = NODE_CDR(node))); break; - case NT_QTFR: + case NODE_QUANT: { - Node** ptarget = &(NQTFR(node)->target); + Node** ptarget = &(NODE_BODY(node)); Node* old = *ptarget; r = noname_disable_map(ptarget, map, counter); - if (*ptarget != old && NTYPE(*ptarget) == NT_QTFR) { - onig_reduce_nested_quantifier(node, *ptarget); + if (*ptarget != old && NODE_TYPE(*ptarget) == NODE_QUANT) { + onig_reduce_nested_quantifier(node, *ptarget); } } break; - case NT_ENCLOSE: + case NODE_ENCLOSURE: { - EncloseNode* en = NENCLOSE(node); - if (en->type == ENCLOSE_MEMORY) { - if (IS_ENCLOSE_NAMED_GROUP(en)) { - (*counter)++; - map[en->regnum].new_val = *counter; - en->regnum = *counter; - r = noname_disable_map(&(en->target), map, counter); - } - else { - *plink = en->target; - en->target = NULL_NODE; - onig_node_free(node); - r = noname_disable_map(plink, map, counter); - } + EnclosureNode* en = ENCLOSURE_(node); + if (en->type == ENCLOSURE_MEMORY) { + if (NODE_IS_NAMED_GROUP(node)) { + (*counter)++; + map[en->m.regnum].new_val = *counter; + en->m.regnum = *counter; + r = noname_disable_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); + } + } + else if (en->type == ENCLOSURE_IF_ELSE) { + r = noname_disable_map(&(NODE_ENCLOSURE_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); + if (r != 0) return r; + } + if (IS_NOT_NULL(en->te.Else)) { + r = noname_disable_map(&(en->te.Else), map, counter); + if (r != 0) return r; + } } else - r = noname_disable_map(&(en->target), map, counter); + r = noname_disable_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); + break; + default: break; } @@ -1817,9 +1925,9 @@ renumber_node_backref(Node* node, GroupNumRemap* map) { int i, pos, n, old_num; int *backs; - BRefNode* bn = NBREF(node); + BackRefNode* bn = BACKREF_(node); - if (! IS_BACKREF_NAME_REF(bn)) + if (! NODE_IS_BY_NAME(node)) return ONIGERR_NUMBERED_BACKREF_OR_CALL_NOT_ALLOWED; old_num = bn->back_num; @@ -1845,24 +1953,47 @@ renumber_by_map(Node* node, GroupNumRemap* map) { int r = 0; - switch (NTYPE(node)) { - case NT_LIST: - case NT_ALT: + switch (NODE_TYPE(node)) { + case NODE_LIST: + case NODE_ALT: do { - r = renumber_by_map(NCAR(node), map); - } while (r == 0 && IS_NOT_NULL(node = NCDR(node))); + r = renumber_by_map(NODE_CAR(node), map); + } while (r == 0 && IS_NOT_NULL(node = NODE_CDR(node))); break; - case NT_QTFR: - r = renumber_by_map(NQTFR(node)->target, map); + + case NODE_QUANT: + r = renumber_by_map(NODE_BODY(node), map); break; - case NT_ENCLOSE: - r = renumber_by_map(NENCLOSE(node)->target, map); + + case NODE_ENCLOSURE: + { + EnclosureNode* en = ENCLOSURE_(node); + + r = renumber_by_map(NODE_BODY(node), map); + if (r != 0) return r; + + if (en->type == ENCLOSURE_IF_ELSE) { + if (IS_NOT_NULL(en->te.Then)) { + r = renumber_by_map(en->te.Then, map); + if (r != 0) return r; + } + if (IS_NOT_NULL(en->te.Else)) { + r = renumber_by_map(en->te.Else, map); + if (r != 0) return r; + } + } + } break; - case NT_BREF: + case NODE_BACKREF: r = renumber_node_backref(node, map); break; + case NODE_ANCHOR: + if (IS_NOT_NULL(NODE_BODY(node))) + r = renumber_by_map(NODE_BODY(node), map); + break; + default: break; } @@ -1875,22 +2006,45 @@ numbered_ref_check(Node* node) { int r = 0; - switch (NTYPE(node)) { - case NT_LIST: - case NT_ALT: + switch (NODE_TYPE(node)) { + case NODE_LIST: + case NODE_ALT: do { - r = numbered_ref_check(NCAR(node)); - } while (r == 0 && IS_NOT_NULL(node = NCDR(node))); + r = numbered_ref_check(NODE_CAR(node)); + } while (r == 0 && IS_NOT_NULL(node = NODE_CDR(node))); break; - case NT_QTFR: - r = numbered_ref_check(NQTFR(node)->target); + + case NODE_ANCHOR: + if (IS_NULL(NODE_BODY(node))) + break; + /* fall */ + case NODE_QUANT: + r = numbered_ref_check(NODE_BODY(node)); break; - case NT_ENCLOSE: - r = numbered_ref_check(NENCLOSE(node)->target); + + case NODE_ENCLOSURE: + { + EnclosureNode* en = ENCLOSURE_(node); + + r = numbered_ref_check(NODE_BODY(node)); + if (r != 0) return r; + + if (en->type == ENCLOSURE_IF_ELSE) { + if (IS_NOT_NULL(en->te.Then)) { + r = numbered_ref_check(en->te.Then); + if (r != 0) return r; + } + if (IS_NOT_NULL(en->te.Else)) { + r = numbered_ref_check(en->te.Else); + if (r != 0) return r; + } + } + } + break; - case NT_BREF: - if (! IS_BACKREF_NAME_REF(NBREF(node))) + case NODE_BACKREF: + if (! NODE_IS_BY_NAME(node)) return ONIGERR_NUMBERED_BACKREF_OR_CALL_NOT_ALLOWED; break; @@ -1905,8 +2059,8 @@ static int disable_noname_group_capture(Node** root, regex_t* reg, ScanEnv* env) { int r, i, pos, counter; - int Result; - BitStatusType loc; + int result; + MemStatusType loc; GroupNumRemap* map; map = (GroupNumRemap* )xmalloc(sizeof(GroupNumRemap) * (env->num_mem + 1)); @@ -1923,476 +2077,204 @@ disable_noname_group_capture(Node** root, regex_t* reg, ScanEnv* env) for (i = 1, pos = 1; i <= env->num_mem; i++) { if (map[i].new_val > 0) { - SCANENV_MEM_NODES(env)[pos] = SCANENV_MEM_NODES(env)[i]; + SCANENV_MEMENV(env)[pos] = SCANENV_MEMENV(env)[i]; pos++; } } loc = env->capture_history; - BIT_STATUS_CLEAR(env->capture_history); + MEM_STATUS_CLEAR(env->capture_history); for (i = 1; i <= ONIG_MAX_CAPTURE_HISTORY_GROUP; i++) { - if (BIT_STATUS_AT(loc, i)) { - BIT_STATUS_ON_AT_SIMPLE(env->capture_history, map[i].new_val); + if (MEM_STATUS_AT(loc, i)) { + MEM_STATUS_ON_SIMPLE(env->capture_history, map[i].new_val); } } env->num_mem = env->num_named; reg->num_mem = env->num_named; - - Result = onig_renumber_name_table(reg, map); + result = onig_renumber_name_table(reg, map); xfree(map); - return Result; + return result; } -#endif /* USE_NAMED_GROUP */ -#ifdef USE_SUBEXP_CALL +#ifdef USE_CALL static int -unset_addr_list_fix(UnsetAddrList* uslist, regex_t* reg) +fix_unset_addr_list(UnsetAddrList* uslist, regex_t* reg) { int i, offset; - EncloseNode* en; + EnclosureNode* en; AbsAddrType addr; for (i = 0; i < uslist->num; i++) { - en = NENCLOSE(uslist->us[i].target); - if (! IS_ENCLOSE_ADDR_FIXED(en)) return ONIGERR_PARSER_BUG; - addr = en->call_addr; + if (! NODE_IS_ADDR_FIXED(uslist->us[i].target)) + return ONIGERR_PARSER_BUG; + + en = ENCLOSURE_(uslist->us[i].target); + addr = en->m.called_addr; offset = uslist->us[i].offset; - BBUF_WRITE(reg, offset, &addr, SIZE_ABSADDR); + BB_WRITE(reg, offset, &addr, SIZE_ABSADDR); } return 0; } #endif -#ifdef USE_MONOMANIAC_CHECK_CAPTURES_IN_ENDLESS_REPEAT + +#define GET_CHAR_LEN_VARLEN -1 +#define GET_CHAR_LEN_TOP_ALT_VARLEN -2 + +/* fixed size pattern node only */ static int -quantifiers_memory_node_info(Node* node) +get_char_length_tree1(Node* node, regex_t* reg, int* len, int level) { + int tlen; int r = 0; - switch (NTYPE(node)) { - case NT_LIST: - case NT_ALT: - { - int v; - do { - v = quantifiers_memory_node_info(NCAR(node)); - if (v > r) r = v; - } while (v >= 0 && IS_NOT_NULL(node = NCDR(node))); - } + level++; + *len = 0; + switch (NODE_TYPE(node)) { + case NODE_LIST: + do { + r = get_char_length_tree1(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; -#ifdef USE_SUBEXP_CALL - case NT_CALL: - if (IS_CALL_RECURSION(NCALL(node))) { - return NQ_TARGET_IS_EMPTY_REC; /* tiny version */ + case NODE_ALT: + { + int tlen2; + int varlen = 0; + + r = get_char_length_tree1(NODE_CAR(node), reg, &tlen, level); + while (r == 0 && IS_NOT_NULL(node = NODE_CDR(node))) { + r = get_char_length_tree1(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; + } } - else - r = quantifiers_memory_node_info(NCALL(node)->target); break; -#endif - case NT_QTFR: + case NODE_STRING: { - QtfrNode* qn = NQTFR(node); - if (qn->upper != 0) { - r = quantifiers_memory_node_info(qn->target); + StrNode* sn = STR_(node); + UChar *s = sn->s; + + while (s < sn->end) { + s += enclen(reg->enc, s); + (*len)++; } } break; - case NT_ENCLOSE: + case NODE_QUANT: { - EncloseNode* en = NENCLOSE(node); - switch (en->type) { - case ENCLOSE_MEMORY: - return NQ_TARGET_IS_EMPTY_MEM; - break; - - case ENCLOSE_OPTION: - case ENCLOSE_STOP_BACKTRACK: - r = quantifiers_memory_node_info(en->target); - break; - default: - break; - } - } - break; - - case NT_BREF: - case NT_STR: - case NT_CTYPE: - case NT_CCLASS: - case NT_CANY: - case NT_ANCHOR: - default: - break; - } - - return r; -} -#endif /* USE_MONOMANIAC_CHECK_CAPTURES_IN_ENDLESS_REPEAT */ - -static int -get_min_match_length(Node* node, OnigDistance *min, ScanEnv* env) -{ - OnigDistance tmin; - int r = 0; - - *min = 0; - switch (NTYPE(node)) { - case NT_BREF: - { - int i; - int* backs; - Node** nodes = SCANENV_MEM_NODES(env); - BRefNode* br = NBREF(node); - if (br->state & NST_RECURSION) break; - - backs = BACKREFS_P(br); - if (backs[0] > env->num_mem) return ONIGERR_INVALID_BACKREF; - r = get_min_match_length(nodes[backs[0]], min, env); - if (r != 0) break; - for (i = 1; i < br->back_num; i++) { - if (backs[i] > env->num_mem) return ONIGERR_INVALID_BACKREF; - r = get_min_match_length(nodes[backs[i]], &tmin, env); - if (r != 0) break; - if (*min > tmin) *min = tmin; - } - } - break; - -#ifdef USE_SUBEXP_CALL - case NT_CALL: - if (IS_CALL_RECURSION(NCALL(node))) { - EncloseNode* en = NENCLOSE(NCALL(node)->target); - if (IS_ENCLOSE_MIN_FIXED(en)) - *min = en->min_len; - } - else - r = get_min_match_length(NCALL(node)->target, min, env); - break; -#endif - - case NT_LIST: - do { - r = get_min_match_length(NCAR(node), &tmin, env); - if (r == 0) *min += tmin; - } while (r == 0 && IS_NOT_NULL(node = NCDR(node))); - break; - - case NT_ALT: - { - Node *x, *y; - y = node; - do { - x = NCAR(y); - r = get_min_match_length(x, &tmin, env); - if (r != 0) break; - if (y == node) *min = tmin; - else if (*min > tmin) *min = tmin; - } while (r == 0 && IS_NOT_NULL(y = NCDR(y))); - } - break; - - case NT_STR: - { - StrNode* sn = NSTR(node); - *min = (OnigDistance)(sn->end - sn->s); - } - break; - - case NT_CTYPE: - *min = 1; - break; - - case NT_CCLASS: - case NT_CANY: - *min = 1; - break; - - case NT_QTFR: - { - QtfrNode* qn = NQTFR(node); - - if (qn->lower > 0) { - r = get_min_match_length(qn->target, min, env); - if (r == 0) - *min = distance_multiply(*min, qn->lower); - } - } - break; - - case NT_ENCLOSE: - { - EncloseNode* en = NENCLOSE(node); - switch (en->type) { - case ENCLOSE_MEMORY: -#ifdef USE_SUBEXP_CALL - if (IS_ENCLOSE_MIN_FIXED(en)) - *min = en->min_len; - else { - r = get_min_match_length(en->target, min, env); - if (r == 0) { - en->min_len = *min; - SET_ENCLOSE_STATUS(node, NST_MIN_FIXED); - } - } - break; -#endif - case ENCLOSE_OPTION: - case ENCLOSE_STOP_BACKTRACK: - r = get_min_match_length(en->target, min, env); - break; - } - } - break; - - case NT_ANCHOR: - default: - break; - } - - return r; -} - -static int -get_max_match_length(Node* node, OnigDistance *max, ScanEnv* env) -{ - OnigDistance tmax; - int r = 0; - - *max = 0; - switch (NTYPE(node)) { - case NT_LIST: - do { - r = get_max_match_length(NCAR(node), &tmax, env); - if (r == 0) - *max = distance_add(*max, tmax); - } while (r == 0 && IS_NOT_NULL(node = NCDR(node))); - break; - - case NT_ALT: - do { - r = get_max_match_length(NCAR(node), &tmax, env); - if (r == 0 && *max < tmax) *max = tmax; - } while (r == 0 && IS_NOT_NULL(node = NCDR(node))); - break; - - case NT_STR: - { - StrNode* sn = NSTR(node); - *max = (OnigDistance)(sn->end - sn->s); - } - break; - - case NT_CTYPE: - *max = ONIGENC_MBC_MAXLEN_DIST(env->enc); - break; - - case NT_CCLASS: - case NT_CANY: - *max = ONIGENC_MBC_MAXLEN_DIST(env->enc); - break; - - case NT_BREF: - { - int i; - int* backs; - Node** nodes = SCANENV_MEM_NODES(env); - BRefNode* br = NBREF(node); - if (br->state & NST_RECURSION) { - *max = ONIG_INFINITE_DISTANCE; - break; - } - backs = BACKREFS_P(br); - for (i = 0; i < br->back_num; i++) { - if (backs[i] > env->num_mem) return ONIGERR_INVALID_BACKREF; - r = get_max_match_length(nodes[backs[i]], &tmax, env); - if (r != 0) break; - if (*max < tmax) *max = tmax; - } - } - break; - -#ifdef USE_SUBEXP_CALL - case NT_CALL: - if (! IS_CALL_RECURSION(NCALL(node))) - r = get_max_match_length(NCALL(node)->target, max, env); - else - *max = ONIG_INFINITE_DISTANCE; - break; -#endif - - case NT_QTFR: - { - QtfrNode* qn = NQTFR(node); - - if (qn->upper != 0) { - r = get_max_match_length(qn->target, max, env); - if (r == 0 && *max != 0) { - if (! IS_REPEAT_INFINITE(qn->upper)) - *max = distance_multiply(*max, qn->upper); - else - *max = ONIG_INFINITE_DISTANCE; - } - } - } - break; - - case NT_ENCLOSE: - { - EncloseNode* en = NENCLOSE(node); - switch (en->type) { - case ENCLOSE_MEMORY: -#ifdef USE_SUBEXP_CALL - if (IS_ENCLOSE_MAX_FIXED(en)) - *max = en->max_len; - else { - r = get_max_match_length(en->target, max, env); - if (r == 0) { - en->max_len = *max; - SET_ENCLOSE_STATUS(node, NST_MAX_FIXED); - } - } - break; -#endif - case ENCLOSE_OPTION: - case ENCLOSE_STOP_BACKTRACK: - r = get_max_match_length(en->target, max, env); - break; - } - } - break; - - case NT_ANCHOR: - default: - break; - } - - return r; -} - -#define GET_CHAR_LEN_VARLEN -1 -#define GET_CHAR_LEN_TOP_ALT_VARLEN -2 - -/* fixed size pattern node only */ -static int -get_char_length_tree1(Node* node, regex_t* reg, int* len, int level) -{ - int tlen; - int r = 0; - - level++; - *len = 0; - switch (NTYPE(node)) { - case NT_LIST: - do { - r = get_char_length_tree1(NCAR(node), reg, &tlen, level); - if (r == 0) - *len = distance_add(*len, tlen); - } while (r == 0 && IS_NOT_NULL(node = NCDR(node))); - break; - - case NT_ALT: - { - int tlen2; - int varlen = 0; + QuantNode* qn = QUANT_(node); - r = get_char_length_tree1(NCAR(node), reg, &tlen, level); - while (r == 0 && IS_NOT_NULL(node = NCDR(node))) { - r = get_char_length_tree1(NCAR(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 NT_STR: - { - StrNode* sn = NSTR(node); - UChar *s = sn->s; - while (s < sn->end) { - s += enclen(reg->enc, s); - (*len)++; - } - } - break; - - case NT_QTFR: - { - QtfrNode* qn = NQTFR(node); if (qn->lower == qn->upper) { - r = get_char_length_tree1(qn->target, reg, &tlen, level); - if (r == 0) - *len = distance_multiply(tlen, qn->lower); + if (qn->upper == 0) { + *len = 0; + } + else { + r = get_char_length_tree1(NODE_BODY(node), reg, &tlen, level); + if (r == 0) + *len = distance_multiply(tlen, qn->lower); + } } else - r = GET_CHAR_LEN_VARLEN; + r = GET_CHAR_LEN_VARLEN; } break; -#ifdef USE_SUBEXP_CALL - case NT_CALL: - if (! IS_CALL_RECURSION(NCALL(node))) - r = get_char_length_tree1(NCALL(node)->target, reg, len, level); +#ifdef USE_CALL + case NODE_CALL: + if (! NODE_IS_RECURSION(node)) + r = get_char_length_tree1(NODE_BODY(node), reg, len, level); else r = GET_CHAR_LEN_VARLEN; break; #endif - case NT_CTYPE: - *len = 1; - break; - - case NT_CCLASS: - case NT_CANY: + case NODE_CTYPE: + case NODE_CCLASS: *len = 1; break; - case NT_ENCLOSE: + case NODE_ENCLOSURE: { - EncloseNode* en = NENCLOSE(node); + EnclosureNode* en = ENCLOSURE_(node); + switch (en->type) { - case ENCLOSE_MEMORY: -#ifdef USE_SUBEXP_CALL - if (IS_ENCLOSE_CLEN_FIXED(en)) - *len = en->char_len; - else { - r = get_char_length_tree1(en->target, reg, len, level); - if (r == 0) { - en->char_len = *len; - SET_ENCLOSE_STATUS(node, NST_CLEN_FIXED); - } - } - break; + case ENCLOSURE_MEMORY: +#ifdef USE_CALL + if (NODE_IS_CLEN_FIXED(node)) + *len = en->char_len; + else { + r = get_char_length_tree1(NODE_BODY(node), reg, len, level); + if (r == 0) { + en->char_len = *len; + NODE_STATUS_ADD(node, CLEN_FIXED); + } + } + break; #endif - case ENCLOSE_OPTION: - case ENCLOSE_STOP_BACKTRACK: - r = get_char_length_tree1(en->target, reg, len, level); - break; + case ENCLOSURE_OPTION: + case ENCLOSURE_STOP_BACKTRACK: + r = get_char_length_tree1(NODE_BODY(node), reg, len, level); + break; + case ENCLOSURE_IF_ELSE: + { + int clen, elen; + + r = get_char_length_tree1(NODE_BODY(node), reg, &clen, level); + if (r == 0) { + if (IS_NOT_NULL(en->te.Then)) { + r = get_char_length_tree1(en->te.Then, reg, &tlen, level); + if (r != 0) break; + } + else tlen = 0; + if (IS_NOT_NULL(en->te.Else)) { + r = get_char_length_tree1(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; + default: - break; + break; } } break; - case NT_ANCHOR: + case NODE_ANCHOR: + case NODE_GIMMICK: break; + case NODE_BACKREF: + if (NODE_IS_CHECKER(node)) + break; + /* fall */ default: r = GET_CHAR_LEN_VARLEN; break; @@ -2409,142 +2291,165 @@ get_char_length_tree(Node* node, regex_t* reg, int* len) /* x is not included y ==> 1 : 0 */ static int -is_not_included(Node* x, Node* y, regex_t* reg) +is_exclusive(Node* x, Node* y, regex_t* reg) { int i, len; OnigCodePoint code; UChar *p; - int ytype; + NodeType ytype; retry: - ytype = NTYPE(y); - switch (NTYPE(x)) { - case NT_CTYPE: + ytype = NODE_TYPE(y); + switch (NODE_TYPE(x)) { + case NODE_CTYPE: { + if (CTYPE_(x)->ctype == CTYPE_ANYCHAR || + CTYPE_(y)->ctype == CTYPE_ANYCHAR) + break; + switch (ytype) { - case NT_CTYPE: - if (NCTYPE(y)->ctype == NCTYPE(x)->ctype && - NCTYPE(y)->not != NCTYPE(x)->not) - return 1; - else - return 0; - break; - - case NT_CCLASS: + case NODE_CTYPE: + if (CTYPE_(y)->ctype == CTYPE_(x)->ctype && + CTYPE_(y)->not != CTYPE_(x)->not && + CTYPE_(y)->ascii_mode == CTYPE_(x)->ascii_mode) + return 1; + else + return 0; + break; + + case NODE_CCLASS: swap: - { - Node* tmp; - tmp = x; x = y; y = tmp; - goto retry; - } - break; + { + Node* tmp; + tmp = x; x = y; y = tmp; + goto retry; + } + break; - case NT_STR: - goto swap; - break; + case NODE_STRING: + goto swap; + break; default: - break; + break; } } break; - case NT_CCLASS: + case NODE_CCLASS: { - CClassNode* xc = NCCLASS(x); + int range; + CClassNode* xc = CCLASS_(x); + switch (ytype) { - case NT_CTYPE: - switch (NCTYPE(y)->ctype) { - case ONIGENC_CTYPE_WORD: - if (NCTYPE(y)->not == 0) { - if (IS_NULL(xc->mbuf) && !IS_NCCLASS_NOT(xc)) { - for (i = 0; i < SINGLE_BYTE_SIZE; i++) { - if (BITSET_AT(xc->bs, i)) { - if (IS_CODE_SB_WORD(reg->enc, i)) return 0; - } - } - return 1; - } - return 0; - } - else { - for (i = 0; i < SINGLE_BYTE_SIZE; i++) { - if (! IS_CODE_SB_WORD(reg->enc, i)) { - if (!IS_NCCLASS_NOT(xc)) { - if (BITSET_AT(xc->bs, i)) - return 0; - } - else { - if (! BITSET_AT(xc->bs, i)) - return 0; - } - } - } - return 1; - } - break; - - default: - break; - } - break; - - case NT_CCLASS: - { - int v; - CClassNode* yc = NCCLASS(y); - - for (i = 0; i < SINGLE_BYTE_SIZE; i++) { - v = BITSET_AT(xc->bs, i); - if ((v != 0 && !IS_NCCLASS_NOT(xc)) || - (v == 0 && IS_NCCLASS_NOT(xc))) { - v = BITSET_AT(yc->bs, i); - if ((v != 0 && !IS_NCCLASS_NOT(yc)) || + case NODE_CTYPE: + switch (CTYPE_(y)->ctype) { + case CTYPE_ANYCHAR: + return 0; + break; + + case ONIGENC_CTYPE_WORD: + if (CTYPE_(y)->not == 0) { + if (IS_NULL(xc->mbuf) && !IS_NCCLASS_NOT(xc)) { + range = CTYPE_(y)->ascii_mode != 0 ? 128 : SINGLE_BYTE_SIZE; + for (i = 0; i < range; i++) { + if (BITSET_AT(xc->bs, i)) { + if (ONIGENC_IS_CODE_WORD(reg->enc, i)) return 0; + } + } + return 1; + } + return 0; + } + else { + if (IS_NOT_NULL(xc->mbuf)) return 0; + if (IS_NCCLASS_NOT(xc)) return 0; + + range = CTYPE_(y)->ascii_mode != 0 ? 128 : SINGLE_BYTE_SIZE; + for (i = 0; i < range; i++) { + if (! ONIGENC_IS_CODE_WORD(reg->enc, i)) { + if (BITSET_AT(xc->bs, i)) + return 0; + } + } + for (i = range; i < SINGLE_BYTE_SIZE; i++) { + if (BITSET_AT(xc->bs, i)) return 0; + } + return 1; + } + break; + + default: + break; + } + break; + + case NODE_CCLASS: + { + int v; + CClassNode* yc = CCLASS_(y); + + for (i = 0; i < SINGLE_BYTE_SIZE; i++) { + v = BITSET_AT(xc->bs, i); + if ((v != 0 && !IS_NCCLASS_NOT(xc)) || (v == 0 && IS_NCCLASS_NOT(xc))) { + v = BITSET_AT(yc->bs, i); + if ((v != 0 && !IS_NCCLASS_NOT(yc)) || (v == 0 && IS_NCCLASS_NOT(yc))) - return 0; - } - } - if ((IS_NULL(xc->mbuf) && !IS_NCCLASS_NOT(xc)) || - (IS_NULL(yc->mbuf) && !IS_NCCLASS_NOT(yc))) - return 1; - return 0; - } - break; - - case NT_STR: - goto swap; - break; + return 0; + } + } + if ((IS_NULL(xc->mbuf) && !IS_NCCLASS_NOT(xc)) || + (IS_NULL(yc->mbuf) && !IS_NCCLASS_NOT(yc))) + return 1; + return 0; + } + break; + + case NODE_STRING: + goto swap; + break; default: - break; + break; } } break; - case NT_STR: + case NODE_STRING: { - StrNode* xs = NSTR(x); - if (NSTRING_LEN(x) == 0) - break; + StrNode* xs = STR_(x); + + if (NODE_STRING_LEN(x) == 0) + break; - //c = *(xs->s); switch (ytype) { - case NT_CTYPE: - switch (NCTYPE(y)->ctype) { + case NODE_CTYPE: + switch (CTYPE_(y)->ctype) { + case CTYPE_ANYCHAR: + break; + case ONIGENC_CTYPE_WORD: - if (ONIGENC_IS_MBC_WORD(reg->enc, xs->s, xs->end)) - return NCTYPE(y)->not; - else - return !(NCTYPE(y)->not); + if (CTYPE_(y)->ascii_mode == 0) { + if (ONIGENC_IS_MBC_WORD(reg->enc, xs->s, xs->end)) + return CTYPE_(y)->not; + else + return !(CTYPE_(y)->not); + } + else { + if (ONIGENC_IS_MBC_WORD_ASCII(reg->enc, xs->s, xs->end)) + return CTYPE_(y)->not; + else + return !(CTYPE_(y)->not); + } break; default: break; } break; - case NT_CCLASS: + case NODE_CCLASS: { - CClassNode* cc = NCCLASS(y); + CClassNode* cc = CCLASS_(y); code = ONIGENC_MBC_TO_CODE(reg->enc, xs->s, xs->s + ONIGENC_MBC_MAXLEN(reg->enc)); @@ -2552,13 +2457,14 @@ is_not_included(Node* x, Node* y, regex_t* reg) } break; - case NT_STR: + case NODE_STRING: { UChar *q; - StrNode* ys = NSTR(y); - len = NSTRING_LEN(x); - if (len > NSTRING_LEN(y)) len = NSTRING_LEN(y); - if (NSTRING_IS_AMBIG(x) || NSTRING_IS_AMBIG(y)) { + StrNode* ys = STR_(y); + + len = NODE_STRING_LEN(x); + if (len > NODE_STRING_LEN(y)) len = NODE_STRING_LEN(y); + if (NODE_STRING_IS_AMBIG(x) || NODE_STRING_IS_AMBIG(y)) { /* tiny version */ return 0; } @@ -2569,7 +2475,7 @@ is_not_included(Node* x, Node* y, regex_t* reg) } } break; - + default: break; } @@ -2588,81 +2494,85 @@ get_head_value_node(Node* node, int exact, regex_t* reg) { Node* n = NULL_NODE; - switch (NTYPE(node)) { - case NT_BREF: - case NT_ALT: - case NT_CANY: -#ifdef USE_SUBEXP_CALL - case NT_CALL: + switch (NODE_TYPE(node)) { + case NODE_BACKREF: + case NODE_ALT: +#ifdef USE_CALL + case NODE_CALL: #endif break; - case NT_CTYPE: - case NT_CCLASS: + case NODE_CTYPE: + if (CTYPE_(node)->ctype == CTYPE_ANYCHAR) + break; + /* fall */ + case NODE_CCLASS: if (exact == 0) { n = node; } break; - case NT_LIST: - n = get_head_value_node(NCAR(node), exact, reg); + case NODE_LIST: + n = get_head_value_node(NODE_CAR(node), exact, reg); break; - case NT_STR: + case NODE_STRING: { - StrNode* sn = NSTR(node); + StrNode* sn = STR_(node); if (sn->end <= sn->s) - break; + break; if (exact != 0 && - !NSTRING_IS_RAW(node) && IS_IGNORECASE(reg->options)) { + !NODE_STRING_IS_RAW(node) && IS_IGNORECASE(reg->options)) { } else { - n = node; + n = node; } } break; - case NT_QTFR: + case NODE_QUANT: { - QtfrNode* qn = NQTFR(node); + QuantNode* qn = QUANT_(node); if (qn->lower > 0) { - if (IS_NOT_NULL(qn->head_exact)) - n = qn->head_exact; - else - n = get_head_value_node(qn->target, exact, reg); + if (IS_NOT_NULL(qn->head_exact)) + n = qn->head_exact; + else + n = get_head_value_node(NODE_BODY(node), exact, reg); } } break; - case NT_ENCLOSE: + case NODE_ENCLOSURE: { - EncloseNode* en = NENCLOSE(node); + EnclosureNode* en = ENCLOSURE_(node); switch (en->type) { - case ENCLOSE_OPTION: - { - OnigOptionType options = reg->options; - - reg->options = NENCLOSE(node)->option; - n = get_head_value_node(NENCLOSE(node)->target, exact, reg); - reg->options = options; - } - break; - - case ENCLOSE_MEMORY: - case ENCLOSE_STOP_BACKTRACK: - n = get_head_value_node(en->target, exact, reg); - break; + case ENCLOSURE_OPTION: + { + OnigOptionType options = reg->options; + + reg->options = ENCLOSURE_(node)->o.options; + n = get_head_value_node(NODE_BODY(node), exact, reg); + reg->options = options; + } + break; + + case ENCLOSURE_MEMORY: + case ENCLOSURE_STOP_BACKTRACK: + case ENCLOSURE_IF_ELSE: + n = get_head_value_node(NODE_BODY(node), exact, reg); + break; } } break; - case NT_ANCHOR: - if (NANCHOR(node)->type == ANCHOR_PREC_READ) - n = get_head_value_node(NANCHOR(node)->target, exact, reg); + case NODE_ANCHOR: + if (ANCHOR_(node)->type == ANCHOR_PREC_READ) + n = get_head_value_node(NODE_BODY(node), exact, reg); break; + case NODE_GIMMICK: default: break; } @@ -2671,247 +2581,396 @@ get_head_value_node(Node* node, int exact, regex_t* reg) } static int -check_type_tree(Node* node, int type_mask, int enclose_mask, int anchor_mask) +check_type_tree(Node* node, int type_mask, int enclosure_mask, int anchor_mask) { - int type, r = 0; + NodeType type; + int r = 0; - type = NTYPE(node); - if ((NTYPE2BIT(type) & type_mask) == 0) + type = NODE_TYPE(node); + if ((NODE_TYPE2BIT(type) & type_mask) == 0) return 1; switch (type) { - case NT_LIST: - case NT_ALT: + case NODE_LIST: + case NODE_ALT: do { - r = check_type_tree(NCAR(node), type_mask, enclose_mask, - anchor_mask); - } while (r == 0 && IS_NOT_NULL(node = NCDR(node))); + r = check_type_tree(NODE_CAR(node), type_mask, enclosure_mask, + anchor_mask); + } while (r == 0 && IS_NOT_NULL(node = NODE_CDR(node))); break; - case NT_QTFR: - r = check_type_tree(NQTFR(node)->target, type_mask, enclose_mask, - anchor_mask); + case NODE_QUANT: + r = check_type_tree(NODE_BODY(node), type_mask, enclosure_mask, anchor_mask); break; - case NT_ENCLOSE: + case NODE_ENCLOSURE: { - EncloseNode* en = NENCLOSE(node); - if ((en->type & enclose_mask) == 0) - return 1; - - r = check_type_tree(en->target, type_mask, enclose_mask, anchor_mask); + EnclosureNode* en = ENCLOSURE_(node); + if (((1<type) & enclosure_mask) == 0) + return 1; + + r = check_type_tree(NODE_BODY(node), type_mask, enclosure_mask, anchor_mask); + if (r == 0 && en->type == ENCLOSURE_IF_ELSE) { + if (IS_NOT_NULL(en->te.Then)) { + r = check_type_tree(en->te.Then, type_mask, enclosure_mask, anchor_mask); + if (r != 0) break; + } + if (IS_NOT_NULL(en->te.Else)) { + r = check_type_tree(en->te.Else, type_mask, enclosure_mask, anchor_mask); + } + } } break; - case NT_ANCHOR: - type = NANCHOR(node)->type; + case NODE_ANCHOR: + type = ANCHOR_(node)->type; if ((type & anchor_mask) == 0) return 1; - if (NANCHOR(node)->target) - r = check_type_tree(NANCHOR(node)->target, - type_mask, enclose_mask, anchor_mask); + if (IS_NOT_NULL(NODE_BODY(node))) + r = check_type_tree(NODE_BODY(node), type_mask, enclosure_mask, anchor_mask); break; + case NODE_GIMMICK: default: break; } return r; } -#ifdef USE_SUBEXP_CALL - -#define RECURSION_EXIST 1 -#define RECURSION_INFINITE 2 - -static int -subexp_inf_recursive_check(Node* node, ScanEnv* env, int head) +static OnigLen +tree_min_len(Node* node, ScanEnv* env) { - int type; - int r = 0; + OnigLen len; + OnigLen tmin; - type = NTYPE(node); - switch (type) { - case NT_LIST: - { - Node *x; - OnigDistance min; - int ret; + len = 0; + switch (NODE_TYPE(node)) { + case NODE_BACKREF: + if (! NODE_IS_CHECKER(node)) { + int i; + int* backs; + MemEnv* mem_env = SCANENV_MEMENV(env); + BackRefNode* br = BACKREF_(node); + if (NODE_IS_RECURSION(node)) break; - x = node; - do { - ret = subexp_inf_recursive_check(NCAR(x), env, head); - if (ret < 0 || ret == RECURSION_INFINITE) return ret; - r |= ret; - if (head) { - ret = get_min_match_length(NCAR(x), &min, env); - if (ret != 0) return ret; - if (min != 0) head = 0; - } - } while (IS_NOT_NULL(x = NCDR(x))); + backs = BACKREFS_P(br); + len = tree_min_len(mem_env[backs[0]].node, env); + for (i = 1; i < br->back_num; i++) { + tmin = tree_min_len(mem_env[backs[i]].node, env); + if (len > tmin) len = tmin; + } } break; - case NT_ALT: +#ifdef USE_CALL + case NODE_CALL: { - int ret; - r = RECURSION_EXIST; + Node* t = NODE_BODY(node); + if (NODE_IS_RECURSION(node)) { + if (NODE_IS_MIN_FIXED(t)) + len = ENCLOSURE_(t)->min_len; + } + else + len = tree_min_len(t, env); + } + break; +#endif + + case NODE_LIST: + do { + tmin = tree_min_len(NODE_CAR(node), env); + len = distance_add(len, tmin); + } while (IS_NOT_NULL(node = NODE_CDR(node))); + break; + + case NODE_ALT: + { + Node *x, *y; + y = node; do { - ret = subexp_inf_recursive_check(NCAR(node), env, head); - if (ret < 0 || ret == RECURSION_INFINITE) return ret; - r &= ret; - } while (IS_NOT_NULL(node = NCDR(node))); + x = NODE_CAR(y); + tmin = tree_min_len(x, env); + if (y == node) len = tmin; + else if (len > tmin) len = tmin; + } while (IS_NOT_NULL(y = NODE_CDR(y))); } break; - case NT_QTFR: - r = subexp_inf_recursive_check(NQTFR(node)->target, env, head); - if (r == RECURSION_EXIST) { - if (NQTFR(node)->lower == 0) r = 0; + case NODE_STRING: + { + StrNode* sn = STR_(node); + len = (int )(sn->end - sn->s); } break; - case NT_ANCHOR: + case NODE_CTYPE: + case NODE_CCLASS: + len = ONIGENC_MBC_MINLEN(env->enc); + break; + + case NODE_QUANT: { - AnchorNode* an = NANCHOR(node); - switch (an->type) { - case ANCHOR_PREC_READ: - case ANCHOR_PREC_READ_NOT: - case ANCHOR_LOOK_BEHIND: - case ANCHOR_LOOK_BEHIND_NOT: - r = subexp_inf_recursive_check(an->target, env, head); - break; + QuantNode* qn = QUANT_(node); + + if (qn->lower > 0) { + len = tree_min_len(NODE_BODY(node), env); + len = distance_multiply(len, qn->lower); } } break; - case NT_CALL: - r = subexp_inf_recursive_check(NCALL(node)->target, env, head); - break; + case NODE_ENCLOSURE: + { + EnclosureNode* en = ENCLOSURE_(node); + switch (en->type) { + case ENCLOSURE_MEMORY: + if (NODE_IS_MIN_FIXED(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); + NODE_STATUS_REMOVE(node, MARK1); - case NT_ENCLOSE: - if (IS_ENCLOSE_MARK2(NENCLOSE(node))) - return 0; - else if (IS_ENCLOSE_MARK1(NENCLOSE(node))) - return (head == 0 ? RECURSION_EXIST : RECURSION_INFINITE); - else { - SET_ENCLOSE_STATUS(node, NST_MARK2); - r = subexp_inf_recursive_check(NENCLOSE(node)->target, env, head); - CLEAR_ENCLOSE_STATUS(node, NST_MARK2); + en->min_len = len; + NODE_STATUS_ADD(node, MIN_FIXED); + } + } + break; + + case ENCLOSURE_OPTION: + case ENCLOSURE_STOP_BACKTRACK: + len = tree_min_len(NODE_BODY(node), env); + break; + case ENCLOSURE_IF_ELSE: + { + OnigLen elen; + + len = tree_min_len(NODE_BODY(node), env); + if (IS_NOT_NULL(en->te.Then)) + len += tree_min_len(en->te.Then, env); + if (IS_NOT_NULL(en->te.Else)) + elen = tree_min_len(en->te.Else, env); + else elen = 0; + + if (elen < len) len = elen; + } + break; + } } break; + case NODE_GIMMICK: + { + GimmickNode* g = GIMMICK_(node); + if (g->type == GIMMICK_FAIL) { + len = INFINITE_LEN; + break; + } + } + /* fall */ + case NODE_ANCHOR: default: break; } - return r; + return len; } -static int -subexp_inf_recursive_check_trav(Node* node, ScanEnv* env) +static OnigLen +tree_max_len(Node* node, ScanEnv* env) { - int type; - int r = 0; + OnigLen len; + OnigLen tmax; - type = NTYPE(node); - switch (type) { - case NT_LIST: - case NT_ALT: + len = 0; + switch (NODE_TYPE(node)) { + case NODE_LIST: do { - r = subexp_inf_recursive_check_trav(NCAR(node), env); - } while (r == 0 && IS_NOT_NULL(node = NCDR(node))); + tmax = tree_max_len(NODE_CAR(node), env); + len = distance_add(len, tmax); + } while (IS_NOT_NULL(node = NODE_CDR(node))); break; - case NT_QTFR: - r = subexp_inf_recursive_check_trav(NQTFR(node)->target, env); + case NODE_ALT: + do { + tmax = tree_max_len(NODE_CAR(node), env); + if (len < tmax) len = tmax; + } while (IS_NOT_NULL(node = NODE_CDR(node))); break; - case NT_ANCHOR: + case NODE_STRING: { - AnchorNode* an = NANCHOR(node); - switch (an->type) { - case ANCHOR_PREC_READ: - case ANCHOR_PREC_READ_NOT: - case ANCHOR_LOOK_BEHIND: - case ANCHOR_LOOK_BEHIND_NOT: - r = subexp_inf_recursive_check_trav(an->target, env); - break; + StrNode* sn = STR_(node); + len = (OnigLen )(sn->end - sn->s); + } + break; + + case NODE_CTYPE: + case NODE_CCLASS: + len = ONIGENC_MBC_MAXLEN_DIST(env->enc); + break; + + case NODE_BACKREF: + if (! NODE_IS_CHECKER(node)) { + int i; + int* backs; + MemEnv* mem_env = SCANENV_MEMENV(env); + BackRefNode* br = BACKREF_(node); + if (NODE_IS_RECURSION(node)) { + len = INFINITE_LEN; + break; + } + backs = BACKREFS_P(br); + for (i = 0; i < br->back_num; i++) { + tmax = tree_max_len(mem_env[backs[i]].node, env); + if (len < tmax) len = tmax; } } break; - case NT_ENCLOSE: +#ifdef USE_CALL + case NODE_CALL: + if (! NODE_IS_RECURSION(node)) + len = tree_max_len(NODE_BODY(node), env); + else + len = INFINITE_LEN; + break; +#endif + + case NODE_QUANT: { - EncloseNode* en = NENCLOSE(node); + QuantNode* qn = QUANT_(node); - if (IS_ENCLOSE_RECURSION(en)) { - SET_ENCLOSE_STATUS(node, NST_MARK1); - r = subexp_inf_recursive_check(en->target, env, 1); - if (r > 0) return ONIGERR_NEVER_ENDING_RECURSION; - CLEAR_ENCLOSE_STATUS(node, NST_MARK1); + if (qn->upper != 0) { + len = tree_max_len(NODE_BODY(node), env); + if (len != 0) { + if (! IS_REPEAT_INFINITE(qn->upper)) + len = distance_multiply(len, qn->upper); + else + len = INFINITE_LEN; + } } - r = subexp_inf_recursive_check_trav(en->target, env); } + break; + + case NODE_ENCLOSURE: + { + EnclosureNode* en = ENCLOSURE_(node); + switch (en->type) { + case ENCLOSURE_MEMORY: + if (NODE_IS_MAX_FIXED(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); + NODE_STATUS_REMOVE(node, MARK1); + + en->max_len = len; + NODE_STATUS_ADD(node, MAX_FIXED); + } + } + break; + + case ENCLOSURE_OPTION: + case ENCLOSURE_STOP_BACKTRACK: + len = tree_max_len(NODE_BODY(node), env); + break; + case ENCLOSURE_IF_ELSE: + { + OnigLen tlen, elen; + + len = tree_max_len(NODE_BODY(node), env); + if (IS_NOT_NULL(en->te.Then)) { + tlen = tree_max_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); + else elen = 0; + if (elen > len) len = elen; + } + break; + } + } break; + case NODE_ANCHOR: + case NODE_GIMMICK: default: break; } - return r; + return len; } static int -subexp_recursive_check(Node* node) +check_backrefs(Node* node, ScanEnv* env) { - int r = 0; + int r; - switch (NTYPE(node)) { - case NT_LIST: - case NT_ALT: + switch (NODE_TYPE(node)) { + case NODE_LIST: + case NODE_ALT: do { - r |= subexp_recursive_check(NCAR(node)); - } while (IS_NOT_NULL(node = NCDR(node))); + r = check_backrefs(NODE_CAR(node), env); + } while (r == 0 && IS_NOT_NULL(node = NODE_CDR(node))); break; - case NT_QTFR: - r = subexp_recursive_check(NQTFR(node)->target); + case NODE_ANCHOR: + if (! ANCHOR_HAS_BODY(ANCHOR_(node))) { + r = 0; + break; + } + /* fall */ + case NODE_QUANT: + r = check_backrefs(NODE_BODY(node), env); break; - case NT_ANCHOR: + case NODE_ENCLOSURE: + r = check_backrefs(NODE_BODY(node), env); { - AnchorNode* an = NANCHOR(node); - switch (an->type) { - case ANCHOR_PREC_READ: - case ANCHOR_PREC_READ_NOT: - case ANCHOR_LOOK_BEHIND: - case ANCHOR_LOOK_BEHIND_NOT: - r = subexp_recursive_check(an->target); - break; + EnclosureNode* en = ENCLOSURE_(node); + + if (en->type == ENCLOSURE_IF_ELSE) { + if (r != 0) return r; + if (IS_NOT_NULL(en->te.Then)) { + r = check_backrefs(en->te.Then, env); + if (r != 0) return r; + } + if (IS_NOT_NULL(en->te.Else)) { + r = check_backrefs(en->te.Else, env); + } } } break; - case NT_CALL: - r = subexp_recursive_check(NCALL(node)->target); - if (r != 0) SET_CALL_RECURSION(node); - break; + case NODE_BACKREF: + { + int i; + BackRefNode* br = BACKREF_(node); + int* backs = BACKREFS_P(br); + MemEnv* mem_env = SCANENV_MEMENV(env); - case NT_ENCLOSE: - if (IS_ENCLOSE_MARK2(NENCLOSE(node))) - return 0; - else if (IS_ENCLOSE_MARK1(NENCLOSE(node))) - return 1; /* recursion */ - else { - SET_ENCLOSE_STATUS(node, NST_MARK2); - r = subexp_recursive_check(NENCLOSE(node)->target); - CLEAR_ENCLOSE_STATUS(node, NST_MARK2); + for (i = 0; i < br->back_num; i++) { + if (backs[i] > env->num_mem) + return ONIGERR_INVALID_BACKREF; + + NODE_STATUS_ADD(mem_env[backs[i]].node, BACKREF); + } + r = 0; } break; default: + r = 0; break; } @@ -2919,65 +2978,114 @@ subexp_recursive_check(Node* node) } +#ifdef USE_CALL + +#define RECURSION_EXIST (1<<0) +#define RECURSION_MUST (1<<1) +#define RECURSION_INFINITE (1<<2) + static int -subexp_recursive_check_trav(Node* node, ScanEnv* env) +infinite_recursive_call_check(Node* node, ScanEnv* env, int head) { -#define FOUND_CALLED_NODE 1 - - int type; + int ret; int r = 0; - type = NTYPE(node); - switch (type) { - case NT_LIST: - case NT_ALT: + switch (NODE_TYPE(node)) { + case NODE_LIST: { - int ret; + Node *x; + OnigLen min; + + x = node; do { - ret = subexp_recursive_check_trav(NCAR(node), env); - if (ret == FOUND_CALLED_NODE) r = FOUND_CALLED_NODE; - else if (ret < 0) return ret; - } while (IS_NOT_NULL(node = NCDR(node))); + ret = infinite_recursive_call_check(NODE_CAR(x), env, head); + if (ret < 0 || (ret & RECURSION_INFINITE) != 0) return ret; + r |= ret; + if (head != 0) { + min = tree_min_len(NODE_CAR(x), env); + if (min != 0) head = 0; + } + } while (IS_NOT_NULL(x = NODE_CDR(x))); } break; - case NT_QTFR: - r = subexp_recursive_check_trav(NQTFR(node)->target, env); - if (NQTFR(node)->upper == 0) { - if (r == FOUND_CALLED_NODE) - NQTFR(node)->is_refered = 1; + case NODE_ALT: + { + int must; + + must = RECURSION_MUST; + do { + ret = infinite_recursive_call_check(NODE_CAR(node), env, head); + if (ret < 0 || (ret & RECURSION_INFINITE) != 0) return ret; + + r |= (ret & RECURSION_EXIST); + must &= ret; + } while (IS_NOT_NULL(node = NODE_CDR(node))); + r |= must; } break; - case NT_ANCHOR: - { - AnchorNode* an = NANCHOR(node); - switch (an->type) { - case ANCHOR_PREC_READ: - case ANCHOR_PREC_READ_NOT: - case ANCHOR_LOOK_BEHIND: - case ANCHOR_LOOK_BEHIND_NOT: - r = subexp_recursive_check_trav(an->target, env); - break; - } + case NODE_QUANT: + r = infinite_recursive_call_check(NODE_BODY(node), env, head); + if (r < 0) return r; + if ((r & RECURSION_MUST) != 0) { + if (QUANT_(node)->lower == 0) + r &= ~RECURSION_MUST; } break; - case NT_ENCLOSE: + case NODE_ANCHOR: + if (! ANCHOR_HAS_BODY(ANCHOR_(node))) + break; + /* fall */ + case NODE_CALL: + r = infinite_recursive_call_check(NODE_BODY(node), env, head); + break; + + case NODE_ENCLOSURE: { - EncloseNode* en = NENCLOSE(node); - - if (! IS_ENCLOSE_RECURSION(en)) { - if (IS_ENCLOSE_CALLED(en)) { - SET_ENCLOSE_STATUS(node, NST_MARK1); - r = subexp_recursive_check(en->target); - if (r != 0) SET_ENCLOSE_STATUS(node, NST_RECURSION); - CLEAR_ENCLOSE_STATUS(node, NST_MARK1); - } + EnclosureNode* en = ENCLOSURE_(node); + + if (en->type == ENCLOSURE_MEMORY) { + if (NODE_IS_MARK2(node)) + return 0; + else if (NODE_IS_MARK1(node)) + return (head == 0 ? RECURSION_EXIST | RECURSION_MUST + : RECURSION_EXIST | RECURSION_MUST | RECURSION_INFINITE); + else { + NODE_STATUS_ADD(node, MARK2); + r = infinite_recursive_call_check(NODE_BODY(node), env, head); + NODE_STATUS_REMOVE(node, MARK2); + } + } + else if (en->type == ENCLOSURE_IF_ELSE) { + int eret; + + ret = infinite_recursive_call_check(NODE_BODY(node), env, head); + if (ret < 0 || (ret & RECURSION_INFINITE) != 0) return ret; + r |= ret; + if (IS_NOT_NULL(en->te.Then)) { + OnigLen min; + if (head != 0) { + min = tree_min_len(NODE_BODY(node), env); + } + else min = 0; + + ret = infinite_recursive_call_check(en->te.Then, env, min != 0 ? 0:head); + if (ret < 0 || (ret & RECURSION_INFINITE) != 0) return ret; + r |= ret; + } + if (IS_NOT_NULL(en->te.Else)) { + eret = infinite_recursive_call_check(en->te.Else, env, head); + if (eret < 0 || (eret & RECURSION_INFINITE) != 0) return eret; + r |= (eret & RECURSION_EXIST); + if ((eret & RECURSION_MUST) == 0) + r &= ~RECURSION_MUST; + } + } + else { + r = infinite_recursive_call_check(NODE_BODY(node), env, head); } - r = subexp_recursive_check_trav(en->target, env); - if (IS_ENCLOSE_CALLED(en)) - r |= FOUND_CALLED_NODE; } break; @@ -2989,102 +3097,217 @@ subexp_recursive_check_trav(Node* node, ScanEnv* env) } static int -setup_subexp_call(Node* node, ScanEnv* env) +infinite_recursive_call_check_trav(Node* node, ScanEnv* env) { - int type; - int r = 0; + int r; - type = NTYPE(node); - switch (type) { - case NT_LIST: + switch (NODE_TYPE(node)) { + case NODE_LIST: + case NODE_ALT: do { - r = setup_subexp_call(NCAR(node), env); - } while (r == 0 && IS_NOT_NULL(node = NCDR(node))); + r = infinite_recursive_call_check_trav(NODE_CAR(node), env); + } while (r == 0 && IS_NOT_NULL(node = NODE_CDR(node))); + break; + + case NODE_ANCHOR: + if (! ANCHOR_HAS_BODY(ANCHOR_(node))) { + r = 0; + break; + } + /* fall */ + case NODE_QUANT: + r = infinite_recursive_call_check_trav(NODE_BODY(node), env); + break; + + case NODE_ENCLOSURE: + { + EnclosureNode* en = ENCLOSURE_(node); + + if (en->type == ENCLOSURE_MEMORY) { + if (NODE_IS_RECURSION(node) && NODE_IS_CALLED(node)) { + int ret; + + NODE_STATUS_ADD(node, MARK1); + + ret = infinite_recursive_call_check(NODE_BODY(node), env, 1); + if (ret < 0) return ret; + else if ((ret & (RECURSION_MUST | RECURSION_INFINITE)) != 0) + return ONIGERR_NEVER_ENDING_RECURSION; + + NODE_STATUS_REMOVE(node, MARK1); + } + } + else if (en->type == ENCLOSURE_IF_ELSE) { + if (IS_NOT_NULL(en->te.Then)) { + r = infinite_recursive_call_check_trav(en->te.Then, env); + if (r != 0) return r; + } + if (IS_NOT_NULL(en->te.Else)) { + r = infinite_recursive_call_check_trav(en->te.Else, env); + if (r != 0) return r; + } + } + } + + r = infinite_recursive_call_check_trav(NODE_BODY(node), env); + break; + + default: + r = 0; break; + } + + return r; +} + +static int +recursive_call_check(Node* node) +{ + int r; - case NT_ALT: + switch (NODE_TYPE(node)) { + case NODE_LIST: + case NODE_ALT: + r = 0; do { - r = setup_subexp_call(NCAR(node), env); - } while (r == 0 && IS_NOT_NULL(node = NCDR(node))); + r |= recursive_call_check(NODE_CAR(node)); + } while (IS_NOT_NULL(node = NODE_CDR(node))); break; - case NT_QTFR: - r = setup_subexp_call(NQTFR(node)->target, env); + case NODE_ANCHOR: + if (! ANCHOR_HAS_BODY(ANCHOR_(node))) { + r = 0; + break; + } + /* fall */ + case NODE_QUANT: + r = recursive_call_check(NODE_BODY(node)); break; - case NT_ENCLOSE: - r = setup_subexp_call(NENCLOSE(node)->target, env); + + case NODE_CALL: + r = recursive_call_check(NODE_BODY(node)); + if (r != 0) { + if (NODE_IS_MARK1(NODE_BODY(node))) + NODE_STATUS_ADD(node, RECURSION); + } break; - case NT_CALL: + case NODE_ENCLOSURE: { - CallNode* cn = NCALL(node); - Node** nodes = SCANENV_MEM_NODES(env); - - if (cn->group_num != 0) { - int gnum = cn->group_num; - -#ifdef USE_NAMED_GROUP - if (env->num_named > 0 && - IS_SYNTAX_BV(env->syntax, ONIG_SYN_CAPTURE_ONLY_NAMED_GROUP) && - !ONIG_IS_OPTION_ON(env->option, ONIG_OPTION_CAPTURE_GROUP)) { - return ONIGERR_NUMBERED_BACKREF_OR_CALL_NOT_ALLOWED; - } -#endif - if (gnum > env->num_mem) { - onig_scan_env_set_error_string(env, - ONIGERR_UNDEFINED_GROUP_REFERENCE, cn->name, cn->name_end); - return ONIGERR_UNDEFINED_GROUP_REFERENCE; - } - -#ifdef USE_NAMED_GROUP - set_call_attr: -#endif - cn->target = nodes[cn->group_num]; - if (IS_NULL(cn->target)) { - onig_scan_env_set_error_string(env, - ONIGERR_UNDEFINED_NAME_REFERENCE, cn->name, cn->name_end); - return ONIGERR_UNDEFINED_NAME_REFERENCE; - } - SET_ENCLOSE_STATUS(cn->target, NST_CALLED); - BIT_STATUS_ON_AT(env->bt_mem_start, cn->group_num); - cn->unset_addr_list = env->unset_addr_list; + EnclosureNode* en = ENCLOSURE_(node); + + if (en->type == ENCLOSURE_MEMORY) { + if (NODE_IS_MARK2(node)) + return 0; + else if (NODE_IS_MARK1(node)) + return 1; /* recursion */ + else { + NODE_STATUS_ADD(node, MARK2); + r = recursive_call_check(NODE_BODY(node)); + NODE_STATUS_REMOVE(node, MARK2); + } + } + else if (en->type == ENCLOSURE_IF_ELSE) { + r = 0; + if (IS_NOT_NULL(en->te.Then)) { + r |= recursive_call_check(en->te.Then); + } + if (IS_NOT_NULL(en->te.Else)) { + r |= recursive_call_check(en->te.Else); + } + r |= recursive_call_check(NODE_BODY(node)); } -#ifdef USE_NAMED_GROUP else { - int *refs; - - int n = onig_name_to_group_numbers(env->reg, cn->name, cn->name_end, - &refs); - if (n <= 0) { - onig_scan_env_set_error_string(env, - ONIGERR_UNDEFINED_NAME_REFERENCE, cn->name, cn->name_end); - return ONIGERR_UNDEFINED_NAME_REFERENCE; - } - else if (n > 1) { - onig_scan_env_set_error_string(env, - ONIGERR_MULTIPLEX_DEFINITION_NAME_CALL, cn->name, cn->name_end); - return ONIGERR_MULTIPLEX_DEFINITION_NAME_CALL; - } - else { - cn->group_num = refs[0]; - goto set_call_attr; - } + r = recursive_call_check(NODE_BODY(node)); } -#endif } break; - case NT_ANCHOR: + default: + r = 0; + break; + } + + return r; +} + +#define IN_RECURSION (1<<0) +#define FOUND_CALLED_NODE 1 + +static int +recursive_call_check_trav(Node* node, ScanEnv* env, int state) +{ + int r = 0; + + switch (NODE_TYPE(node)) { + case NODE_LIST: + case NODE_ALT: { - AnchorNode* an = NANCHOR(node); + int ret; + do { + ret = recursive_call_check_trav(NODE_CAR(node), env, state); + if (ret == FOUND_CALLED_NODE) r = FOUND_CALLED_NODE; + else if (ret < 0) return ret; + } while (IS_NOT_NULL(node = NODE_CDR(node))); + } + break; - switch (an->type) { - case ANCHOR_PREC_READ: - case ANCHOR_PREC_READ_NOT: - case ANCHOR_LOOK_BEHIND: - case ANCHOR_LOOK_BEHIND_NOT: - r = setup_subexp_call(an->target, env); - break; + case NODE_QUANT: + r = recursive_call_check_trav(NODE_BODY(node), env, state); + if (QUANT_(node)->upper == 0) { + if (r == FOUND_CALLED_NODE) + QUANT_(node)->is_refered = 1; + } + break; + + case NODE_ANCHOR: + { + AnchorNode* an = ANCHOR_(node); + if (ANCHOR_HAS_BODY(an)) + r = recursive_call_check_trav(NODE_ANCHOR_BODY(an), env, state); + } + break; + + case NODE_ENCLOSURE: + { + int ret; + int state1; + EnclosureNode* en = ENCLOSURE_(node); + + if (en->type == ENCLOSURE_MEMORY) { + if (NODE_IS_CALLED(node) || (state & IN_RECURSION) != 0) { + if (! NODE_IS_RECURSION(node)) { + NODE_STATUS_ADD(node, MARK1); + r = recursive_call_check(NODE_BODY(node)); + if (r != 0) + NODE_STATUS_ADD(node, RECURSION); + NODE_STATUS_REMOVE(node, MARK1); + } + + if (NODE_IS_CALLED(node)) + r = FOUND_CALLED_NODE; + } + } + + state1 = state; + if (NODE_IS_RECURSION(node)) + state1 |= IN_RECURSION; + + ret = recursive_call_check_trav(NODE_BODY(node), env, state1); + if (ret == FOUND_CALLED_NODE) + r = FOUND_CALLED_NODE; + + if (en->type == ENCLOSURE_IF_ELSE) { + if (IS_NOT_NULL(en->te.Then)) { + ret = recursive_call_check_trav(en->te.Then, env, state1); + if (ret == FOUND_CALLED_NODE) + r = FOUND_CALLED_NODE; + } + if (IS_NOT_NULL(en->te.Else)) { + ret = recursive_call_check_trav(en->te.Else, env, state1); + if (ret == FOUND_CALLED_NODE) + r = FOUND_CALLED_NODE; + } } } break; @@ -3095,6 +3318,7 @@ setup_subexp_call(Node* node, ScanEnv* env) return r; } + #endif /* divide different length alternatives in look-behind. @@ -3105,28 +3329,28 @@ static int divide_look_behind_alternatives(Node* node) { Node *head, *np, *insert_node; - AnchorNode* an = NANCHOR(node); + AnchorNode* an = ANCHOR_(node); int anc_type = an->type; - head = an->target; - np = NCAR(head); + head = NODE_ANCHOR_BODY(an); + np = NODE_CAR(head); swap_node(node, head); - NCAR(node) = head; - NANCHOR(head)->target = np; + NODE_CAR(node) = head; + NODE_BODY(head) = np; np = node; - while ((np = NCDR(np)) != NULL_NODE) { - insert_node = onig_node_new_anchor(anc_type); + while (IS_NOT_NULL(np = NODE_CDR(np))) { + insert_node = onig_node_new_anchor(anc_type, an->ascii_mode); CHECK_NULL_RETURN_MEMERR(insert_node); - NANCHOR(insert_node)->target = NCAR(np); - NCAR(np) = insert_node; + NODE_BODY(insert_node) = NODE_CAR(np); + NODE_CAR(np) = insert_node; } if (anc_type == ANCHOR_LOOK_BEHIND_NOT) { np = node; do { - SET_NTYPE(np, NT_LIST); /* alt -> list */ - } while ((np = NCDR(np)) != NULL_NODE); + NODE_SET_TYPE(np, NODE_LIST); /* alt -> list */ + } while (IS_NOT_NULL(np = NODE_CDR(np))); } return 0; } @@ -3135,9 +3359,9 @@ static int setup_look_behind(Node* node, regex_t* reg, ScanEnv* env) { int r, len; - AnchorNode* an = NANCHOR(node); + AnchorNode* an = ANCHOR_(node); - r = get_char_length_tree(an->target, reg, &len); + r = get_char_length_tree(NODE_ANCHOR_BODY(an), reg, &len); if (r == 0) an->char_len = len; else if (r == GET_CHAR_LEN_VARLEN) @@ -3155,44 +3379,43 @@ setup_look_behind(Node* node, regex_t* reg, ScanEnv* env) static int next_setup(Node* node, Node* next_node, regex_t* reg) { - int type; + NodeType type; retry: - type = NTYPE(node); - if (type == NT_QTFR) { - QtfrNode* qn = NQTFR(node); + type = NODE_TYPE(node); + if (type == NODE_QUANT) { + QuantNode* qn = QUANT_(node); if (qn->greedy && IS_REPEAT_INFINITE(qn->upper)) { -#ifdef USE_QTFR_PEEK_NEXT +#ifdef USE_QUANT_PEEK_NEXT Node* n = get_head_value_node(next_node, 1, reg); /* '\0': for UTF-16BE etc... */ - if (IS_NOT_NULL(n) && NSTR(n)->s[0] != '\0') { - qn->next_head_exact = n; + if (IS_NOT_NULL(n) && STR_(n)->s[0] != '\0') { + qn->next_head_exact = n; } #endif /* automatic posseivation a*b ==> (?>a*)b */ if (qn->lower <= 1) { - int ttype = NTYPE(qn->target); - if (IS_NODE_TYPE_SIMPLE(ttype)) { - Node *x, *y; - x = get_head_value_node(qn->target, 0, reg); - if (IS_NOT_NULL(x)) { - y = get_head_value_node(next_node, 0, reg); - if (IS_NOT_NULL(y) && is_not_included(x, y, reg)) { - Node* en = onig_node_new_enclose(ENCLOSE_STOP_BACKTRACK); - CHECK_NULL_RETURN_MEMERR(en); - SET_ENCLOSE_STATUS(en, NST_STOP_BT_SIMPLE_REPEAT); - swap_node(node, en); - NENCLOSE(node)->target = en; - } - } - } + if (NODE_IS_SIMPLE_TYPE(NODE_BODY(node))) { + Node *x, *y; + x = get_head_value_node(NODE_BODY(node), 0, reg); + if (IS_NOT_NULL(x)) { + y = get_head_value_node(next_node, 0, reg); + if (IS_NOT_NULL(y) && is_exclusive(x, y, reg)) { + Node* en = onig_node_new_enclosure(ENCLOSURE_STOP_BACKTRACK); + CHECK_NULL_RETURN_MEMERR(en); + NODE_STATUS_ADD(en, STOP_BT_SIMPLE_REPEAT); + swap_node(node, en); + NODE_BODY(node) = en; + } + } + } } } } - else if (type == NT_ENCLOSE) { - EncloseNode* en = NENCLOSE(node); - if (en->type == ENCLOSE_MEMORY) { - node = en->target; + else if (type == NODE_ENCLOSURE) { + EnclosureNode* en = ENCLOSURE_(node); + if (en->type == ENCLOSURE_MEMORY) { + node = NODE_BODY(node); goto retry; } } @@ -3206,10 +3429,10 @@ update_string_node_case_fold(regex_t* reg, Node *node) UChar *p, *end, buf[ONIGENC_MBC_CASE_FOLD_MAXLEN]; UChar *sbuf, *ebuf, *sp; int r, i, len, sbuf_size; - StrNode* sn = NSTR(node); + StrNode* sn = STR_(node); end = sn->end; - sbuf_size = (int)(end - sn->s) * 2; + sbuf_size = (int )(end - sn->s) * 2; sbuf = (UChar* )xmalloc(sbuf_size); CHECK_NULL_RETURN_MEMERR(sbuf); ebuf = sbuf + sbuf_size; @@ -3242,8 +3465,7 @@ update_string_node_case_fold(regex_t* reg, Node *node) } static int -expand_case_fold_make_rem_string(Node** rnode, UChar *s, UChar *end, - regex_t* reg) +expand_case_fold_make_rem_string(Node** rnode, UChar *s, UChar *end, regex_t* reg) { int r; Node *node; @@ -3257,21 +3479,21 @@ expand_case_fold_make_rem_string(Node** rnode, UChar *s, UChar *end, return r; } - NSTRING_SET_AMBIG(node); - NSTRING_SET_DONT_GET_OPT_INFO(node); + NODE_STRING_SET_AMBIG(node); + NODE_STRING_SET_DONT_GET_OPT_INFO(node); *rnode = node; return 0; } static int -expand_case_fold_string_alt(int item_num, OnigCaseFoldCodeItem items[], - UChar *p, int slen, UChar *end, - regex_t* reg, Node **rnode) +expand_case_fold_string_alt(int item_num, OnigCaseFoldCodeItem items[], UChar *p, + int slen, UChar *end, regex_t* reg, Node **rnode) { - int r, i, j, len, varlen; + int r, i, j; + int len; + int varlen; Node *anode, *var_anode, *snode, *xnode, *an; UChar buf[ONIGENC_CODE_TO_MBC_MAXLEN]; - xnode = NULL_NODE; *rnode = var_anode = NULL_NODE; @@ -3289,11 +3511,11 @@ expand_case_fold_string_alt(int item_num, OnigCaseFoldCodeItem items[], xnode = onig_node_new_list(NULL, NULL); if (IS_NULL(xnode)) goto mem_err; - NCAR(var_anode) = xnode; + NODE_CAR(var_anode) = xnode; anode = onig_node_new_alt(NULL_NODE, NULL_NODE); if (IS_NULL(anode)) goto mem_err; - NCAR(xnode) = anode; + NODE_CAR(xnode) = anode; } else { *rnode = anode = onig_node_new_alt(NULL_NODE, NULL_NODE); @@ -3303,7 +3525,7 @@ expand_case_fold_string_alt(int item_num, OnigCaseFoldCodeItem items[], snode = onig_node_new_str(p, p + slen); if (IS_NULL(snode)) goto mem_err; - NCAR(anode) = snode; + NODE_CAR(anode) = snode; for (i = 0; i < item_num; i++) { snode = onig_node_new_str(NULL, NULL); @@ -3312,8 +3534,8 @@ expand_case_fold_string_alt(int item_num, OnigCaseFoldCodeItem items[], for (j = 0; j < items[i].code_len; j++) { len = ONIGENC_CODE_TO_MBC(reg->enc, items[i].code[j], buf); if (len < 0) { - r = len; - goto mem_err2; + r = len; + goto mem_err2; } r = onig_node_str_cat(snode, buf, buf + len); @@ -3326,7 +3548,7 @@ expand_case_fold_string_alt(int item_num, OnigCaseFoldCodeItem items[], } if (items[i].byte_len != slen) { - Node *rem = NULL_NODE; + Node *rem; UChar *q = p + items[i].byte_len; if (q < end) { @@ -3349,24 +3571,18 @@ expand_case_fold_string_alt(int item_num, OnigCaseFoldCodeItem items[], goto mem_err; } - NCAR(an) = xnode; + NODE_CAR(an) = xnode; } else { - NCAR(an) = snode; + NODE_CAR(an) = snode; } - if (var_anode == NULL) { - onig_node_free(an); - onig_node_free(xnode); - onig_node_free(rem); - goto mem_err2; - } - NCDR(var_anode) = an; + NODE_CDR(var_anode) = an; var_anode = an; } else { - NCAR(an) = snode; - NCDR(anode) = an; + NODE_CAR(an) = snode; + NODE_CDR(anode) = an; anode = an; } } @@ -3391,9 +3607,9 @@ expand_case_fold_string(Node* node, regex_t* reg) UChar *start, *end, *p; Node *top_root, *root, *snode, *prev_node; OnigCaseFoldCodeItem items[ONIGENC_GET_CASE_FOLD_CODES_MAX_NUM]; - StrNode* sn = NSTR(node); + StrNode* sn = STR_(node); - if (NSTRING_IS_AMBIG(node)) return 0; + if (NODE_STRING_IS_AMBIG(node)) return 0; start = sn->s; end = sn->end; @@ -3404,8 +3620,8 @@ expand_case_fold_string(Node* node, regex_t* reg) alt_num = 1; p = start; while (p < end) { - n = ONIGENC_GET_CASE_FOLD_CODES_BY_STR(reg->enc, reg->case_fold_flag, - p, end, items); + n = ONIGENC_GET_CASE_FOLD_CODES_BY_STR(reg->enc, reg->case_fold_flag, p, end, + items); if (n < 0) { r = n; goto err; @@ -3415,22 +3631,22 @@ expand_case_fold_string(Node* node, regex_t* reg) if (n == 0) { if (IS_NULL(snode)) { - if (IS_NULL(root) && IS_NOT_NULL(prev_node)) { - top_root = root = onig_node_list_add(NULL_NODE, prev_node); - if (IS_NULL(root)) { - onig_node_free(prev_node); - goto mem_err; - } - } - - prev_node = snode = onig_node_new_str(NULL, NULL); - if (IS_NULL(snode)) goto mem_err; - if (IS_NOT_NULL(root)) { - if (IS_NULL(onig_node_list_add(root, snode))) { - onig_node_free(snode); - goto mem_err; - } - } + if (IS_NULL(root) && IS_NOT_NULL(prev_node)) { + top_root = root = onig_node_list_add(NULL_NODE, prev_node); + if (IS_NULL(root)) { + onig_node_free(prev_node); + goto mem_err; + } + } + + prev_node = snode = onig_node_new_str(NULL, NULL); + if (IS_NULL(snode)) goto mem_err; + if (IS_NOT_NULL(root)) { + if (IS_NULL(onig_node_list_add(root, snode))) { + onig_node_free(snode); + goto mem_err; + } + } } r = onig_node_str_cat(snode, p, p + len); @@ -3441,37 +3657,37 @@ expand_case_fold_string(Node* node, regex_t* reg) if (alt_num > THRESHOLD_CASE_FOLD_ALT_FOR_EXPANSION) break; if (IS_NULL(root) && IS_NOT_NULL(prev_node)) { - top_root = root = onig_node_list_add(NULL_NODE, prev_node); - if (IS_NULL(root)) { - onig_node_free(prev_node); - goto mem_err; - } + top_root = root = onig_node_list_add(NULL_NODE, prev_node); + if (IS_NULL(root)) { + onig_node_free(prev_node); + goto mem_err; + } } r = expand_case_fold_string_alt(n, items, p, len, end, reg, &prev_node); if (r < 0) goto mem_err; if (r == 1) { - if (IS_NULL(root)) { - top_root = prev_node; - } - else { - if (IS_NULL(onig_node_list_add(root, prev_node))) { - onig_node_free(prev_node); - goto mem_err; - } - } - - root = NCAR(prev_node); - } - else { /* r == 0 */ - if (IS_NOT_NULL(root)) { - if (IS_NULL(onig_node_list_add(root, prev_node))) { - onig_node_free(prev_node); - goto mem_err; - } - } - } - + if (IS_NULL(root)) { + top_root = prev_node; + } + else { + if (IS_NULL(onig_node_list_add(root, prev_node))) { + onig_node_free(prev_node); + goto mem_err; + } + } + + root = NODE_CAR(prev_node); + } + else { /* r == 0 */ + if (IS_NOT_NULL(root)) { + if (IS_NULL(onig_node_list_add(root, prev_node))) { + onig_node_free(prev_node); + goto mem_err; + } + } + } + snode = NULL_NODE; } @@ -3487,185 +3703,712 @@ expand_case_fold_string(Node* node, regex_t* reg) if (IS_NOT_NULL(prev_node) && IS_NULL(root)) { top_root = root = onig_node_list_add(NULL_NODE, prev_node); if (IS_NULL(root)) { - onig_node_free(srem); - onig_node_free(prev_node); - goto mem_err; + onig_node_free(srem); + onig_node_free(prev_node); + goto mem_err; + } + } + + if (IS_NULL(root)) { + prev_node = srem; + } + else { + if (IS_NULL(onig_node_list_add(root, srem))) { + onig_node_free(srem); + goto mem_err; + } + } + } + + /* ending */ + top_root = (IS_NOT_NULL(top_root) ? top_root : prev_node); + swap_node(node, top_root); + onig_node_free(top_root); + return 0; + + mem_err: + r = ONIGERR_MEMORY; + + err: + onig_node_free(top_root); + return r; +} + +#ifdef USE_INSISTENT_CHECK_CAPTURES_IN_EMPTY_REPEAT +static enum QuantBodyEmpty +quantifiers_memory_node_info(Node* node) +{ + int r = QUANT_BODY_IS_EMPTY; + + switch (NODE_TYPE(node)) { + case NODE_LIST: + case NODE_ALT: + { + int v; + do { + v = quantifiers_memory_node_info(NODE_CAR(node)); + if (v > r) r = v; + } while (IS_NOT_NULL(node = NODE_CDR(node))); + } + break; + +#ifdef USE_CALL + case NODE_CALL: + if (NODE_IS_RECURSION(node)) { + return QUANT_BODY_IS_EMPTY_REC; /* tiny version */ + } + else + r = quantifiers_memory_node_info(NODE_BODY(node)); + break; +#endif + + case NODE_QUANT: + { + QuantNode* qn = QUANT_(node); + if (qn->upper != 0) { + r = quantifiers_memory_node_info(NODE_BODY(node)); + } + } + break; + + case NODE_ENCLOSURE: + { + EnclosureNode* en = ENCLOSURE_(node); + switch (en->type) { + case ENCLOSURE_MEMORY: + if (NODE_IS_RECURSION(node)) { + return QUANT_BODY_IS_EMPTY_REC; + } + return QUANT_BODY_IS_EMPTY_MEM; + break; + + case ENCLOSURE_OPTION: + case ENCLOSURE_STOP_BACKTRACK: + r = quantifiers_memory_node_info(NODE_BODY(node)); + break; + case ENCLOSURE_IF_ELSE: + { + int v; + r = quantifiers_memory_node_info(NODE_BODY(node)); + if (IS_NOT_NULL(en->te.Then)) { + v = quantifiers_memory_node_info(en->te.Then); + if (v > r) r = v; + } + if (IS_NOT_NULL(en->te.Else)) { + v = quantifiers_memory_node_info(en->te.Else); + if (v > r) r = v; + } + } + break; + default: + break; + } + } + break; + + case NODE_BACKREF: + case NODE_STRING: + case NODE_CTYPE: + case NODE_CCLASS: + case NODE_ANCHOR: + case NODE_GIMMICK: + default: + break; + } + + return r; +} +#endif /* USE_INSISTENT_CHECK_CAPTURES_IN_EMPTY_REPEAT */ + + +#define IN_ALT (1<<0) +#define IN_NOT (1<<1) +#define IN_REAL_REPEAT (1<<2) +#define IN_VAR_REPEAT (1<<3) +#define IN_ZERO_REPEAT (1<<4) +#define IN_MULTI_ENTRY (1<<5) + +#ifdef USE_CALL + +#ifdef __GNUC__ +__inline +#endif +static int +setup_call_node_call(CallNode* cn, ScanEnv* env, int state) +{ + MemEnv* mem_env = SCANENV_MEMENV(env); + + if (cn->by_number != 0) { + int gnum = cn->group_num; + + 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)) { + return ONIGERR_NUMBERED_BACKREF_OR_CALL_NOT_ALLOWED; + } + + if (gnum > env->num_mem) { + onig_scan_env_set_error_string(env, ONIGERR_UNDEFINED_GROUP_REFERENCE, + cn->name, cn->name_end); + return ONIGERR_UNDEFINED_GROUP_REFERENCE; + } + + set_call_attr: + NODE_CALL_BODY(cn) = mem_env[cn->group_num].node; + if (IS_NULL(NODE_CALL_BODY(cn))) { + onig_scan_env_set_error_string(env, ONIGERR_UNDEFINED_NAME_REFERENCE, + cn->name, cn->name_end); + return ONIGERR_UNDEFINED_NAME_REFERENCE; + } + } + else { + int *refs; + + int n = onig_name_to_group_numbers(env->reg, cn->name, cn->name_end, &refs); + if (n <= 0) { + onig_scan_env_set_error_string(env, ONIGERR_UNDEFINED_NAME_REFERENCE, + cn->name, cn->name_end); + return ONIGERR_UNDEFINED_NAME_REFERENCE; + } + else if (n > 1) { + onig_scan_env_set_error_string(env, ONIGERR_MULTIPLEX_DEFINITION_NAME_CALL, + cn->name, cn->name_end); + return ONIGERR_MULTIPLEX_DEFINITION_NAME_CALL; + } + else { + cn->group_num = refs[0]; + goto set_call_attr; + } + } + + return 0; +} + +static void +setup_call2_call(Node* node) +{ + switch (NODE_TYPE(node)) { + case NODE_LIST: + case NODE_ALT: + do { + setup_call2_call(NODE_CAR(node)); + } while (IS_NOT_NULL(node = NODE_CDR(node))); + break; + + case NODE_QUANT: + setup_call2_call(NODE_BODY(node)); + break; + + case NODE_ANCHOR: + if (ANCHOR_HAS_BODY(ANCHOR_(node))) + setup_call2_call(NODE_BODY(node)); + break; + + case NODE_ENCLOSURE: + { + EnclosureNode* en = ENCLOSURE_(node); + + if (en->type == ENCLOSURE_MEMORY) { + if (! NODE_IS_MARK1(node)) { + NODE_STATUS_ADD(node, MARK1); + setup_call2_call(NODE_BODY(node)); + NODE_STATUS_REMOVE(node, MARK1); + } + } + else if (en->type == ENCLOSURE_IF_ELSE) { + setup_call2_call(NODE_BODY(node)); + if (IS_NOT_NULL(en->te.Then)) + setup_call2_call(en->te.Then); + if (IS_NOT_NULL(en->te.Else)) + setup_call2_call(en->te.Else); + } + else { + setup_call2_call(NODE_BODY(node)); + } + } + break; + + case NODE_CALL: + if (! NODE_IS_MARK1(node)) { + NODE_STATUS_ADD(node, MARK1); + { + CallNode* cn = CALL_(node); + Node* called = NODE_CALL_BODY(cn); + + cn->entry_count++; + + NODE_STATUS_ADD(called, CALLED); + ENCLOSURE_(called)->m.entry_count++; + setup_call2_call(called); + } + NODE_STATUS_REMOVE(node, MARK1); + } + break; + + default: + break; + } +} + +static int +setup_call(Node* node, ScanEnv* env, int state) +{ + int r; + + switch (NODE_TYPE(node)) { + case NODE_LIST: + case NODE_ALT: + do { + r = setup_call(NODE_CAR(node), env, state); + } while (r == 0 && IS_NOT_NULL(node = NODE_CDR(node))); + break; + + case NODE_QUANT: + if (QUANT_(node)->upper == 0) + state |= IN_ZERO_REPEAT; + + r = setup_call(NODE_BODY(node), env, state); + break; + + case NODE_ANCHOR: + if (ANCHOR_HAS_BODY(ANCHOR_(node))) + r = setup_call(NODE_BODY(node), env, state); + else + r = 0; + break; + + case NODE_ENCLOSURE: + { + EnclosureNode* en = ENCLOSURE_(node); + + if (en->type == ENCLOSURE_MEMORY) { + if ((state & IN_ZERO_REPEAT) != 0) { + NODE_STATUS_ADD(node, IN_ZERO_REPEAT); + ENCLOSURE_(node)->m.entry_count--; + } + r = setup_call(NODE_BODY(node), env, state); + } + else if (en->type == ENCLOSURE_IF_ELSE) { + r = setup_call(NODE_BODY(node), env, state); + if (r != 0) return r; + if (IS_NOT_NULL(en->te.Then)) { + r = setup_call(en->te.Then, env, state); + if (r != 0) return r; + } + if (IS_NOT_NULL(en->te.Else)) + r = setup_call(en->te.Else, env, state); + } + else + r = setup_call(NODE_BODY(node), env, state); + } + break; + + case NODE_CALL: + if ((state & IN_ZERO_REPEAT) != 0) { + NODE_STATUS_ADD(node, IN_ZERO_REPEAT); + CALL_(node)->entry_count--; + } + + r = setup_call_node_call(CALL_(node), env, state); + break; + + default: + r = 0; + break; + } + + return r; +} + +static int +setup_call2(Node* node) +{ + int r = 0; + + switch (NODE_TYPE(node)) { + case NODE_LIST: + case NODE_ALT: + do { + r = setup_call2(NODE_CAR(node)); + } while (r == 0 && IS_NOT_NULL(node = NODE_CDR(node))); + break; + + case NODE_QUANT: + if (QUANT_(node)->upper != 0) + r = setup_call2(NODE_BODY(node)); + break; + + case NODE_ANCHOR: + if (ANCHOR_HAS_BODY(ANCHOR_(node))) + r = setup_call2(NODE_BODY(node)); + break; + + case NODE_ENCLOSURE: + if (! NODE_IS_IN_ZERO_REPEAT(node)) + r = setup_call2(NODE_BODY(node)); + + { + EnclosureNode* en = ENCLOSURE_(node); + + if (r != 0) return r; + if (en->type == ENCLOSURE_IF_ELSE) { + if (IS_NOT_NULL(en->te.Then)) { + r = setup_call2(en->te.Then); + if (r != 0) return r; + } + if (IS_NOT_NULL(en->te.Else)) + r = setup_call2(en->te.Else); + } + } + break; + + case NODE_CALL: + if (! NODE_IS_IN_ZERO_REPEAT(node)) { + setup_call2_call(node); + } + break; + + default: + break; + } + + return r; +} + + +static void +setup_called_state_call(Node* node, int state) +{ + switch (NODE_TYPE(node)) { + case NODE_ALT: + state |= IN_ALT; + /* fall */ + case NODE_LIST: + do { + setup_called_state_call(NODE_CAR(node), state); + } while (IS_NOT_NULL(node = NODE_CDR(node))); + break; + + case NODE_QUANT: + { + QuantNode* qn = QUANT_(node); + + if (IS_REPEAT_INFINITE(qn->upper) || qn->upper >= 2) + state |= IN_REAL_REPEAT; + if (qn->lower != qn->upper) + state |= IN_VAR_REPEAT; + + setup_called_state_call(NODE_QUANT_BODY(qn), state); + } + break; + + case NODE_ANCHOR: + { + AnchorNode* an = ANCHOR_(node); + + switch (an->type) { + case ANCHOR_PREC_READ_NOT: + case ANCHOR_LOOK_BEHIND_NOT: + state |= IN_NOT; + /* fall */ + case ANCHOR_PREC_READ: + case ANCHOR_LOOK_BEHIND: + setup_called_state_call(NODE_ANCHOR_BODY(an), state); + break; + default: + break; + } + } + break; + + case NODE_ENCLOSURE: + { + EnclosureNode* en = ENCLOSURE_(node); + + if (en->type == ENCLOSURE_MEMORY) { + if (NODE_IS_MARK1(node)) { + if ((~en->m.called_state & state) != 0) { + en->m.called_state |= state; + setup_called_state_call(NODE_BODY(node), state); + } + } + else { + NODE_STATUS_ADD(node, MARK1); + en->m.called_state |= state; + setup_called_state_call(NODE_BODY(node), state); + NODE_STATUS_REMOVE(node, MARK1); + } + } + else if (en->type == ENCLOSURE_IF_ELSE) { + if (IS_NOT_NULL(en->te.Then)) { + setup_called_state_call(en->te.Then, state); + } + if (IS_NOT_NULL(en->te.Else)) + setup_called_state_call(en->te.Else, state); + } + else { + setup_called_state_call(NODE_BODY(node), state); + } + } + break; + + case NODE_CALL: + setup_called_state_call(NODE_BODY(node), state); + break; + + default: + break; + } +} + +static void +setup_called_state(Node* node, int state) +{ + switch (NODE_TYPE(node)) { + case NODE_ALT: + state |= IN_ALT; + /* fall */ + case NODE_LIST: + do { + setup_called_state(NODE_CAR(node), state); + } while (IS_NOT_NULL(node = NODE_CDR(node))); + break; + +#ifdef USE_CALL + case NODE_CALL: + setup_called_state_call(node, state); + break; +#endif + + case NODE_ENCLOSURE: + { + EnclosureNode* en = ENCLOSURE_(node); + + switch (en->type) { + case ENCLOSURE_MEMORY: + if (en->m.entry_count > 1) + state |= IN_MULTI_ENTRY; + + en->m.called_state |= state; + /* fall */ + case ENCLOSURE_OPTION: + case ENCLOSURE_STOP_BACKTRACK: + setup_called_state(NODE_BODY(node), state); + break; + case ENCLOSURE_IF_ELSE: + setup_called_state(NODE_BODY(node), state); + if (IS_NOT_NULL(en->te.Then)) + setup_called_state(en->te.Then, state); + if (IS_NOT_NULL(en->te.Else)) + setup_called_state(en->te.Else, state); + break; + } + } + break; + + case NODE_QUANT: + { + QuantNode* qn = QUANT_(node); + + if (IS_REPEAT_INFINITE(qn->upper) || qn->upper >= 2) + state |= IN_REAL_REPEAT; + if (qn->lower != qn->upper) + state |= IN_VAR_REPEAT; + + setup_called_state(NODE_QUANT_BODY(qn), state); + } + break; + + case NODE_ANCHOR: + { + AnchorNode* an = ANCHOR_(node); + + switch (an->type) { + case ANCHOR_PREC_READ_NOT: + case ANCHOR_LOOK_BEHIND_NOT: + state |= IN_NOT; + /* fall */ + case ANCHOR_PREC_READ: + case ANCHOR_LOOK_BEHIND: + setup_called_state(NODE_ANCHOR_BODY(an), state); + break; + default: + break; } } + break; - if (IS_NULL(root)) { - prev_node = srem; - } - else { - if (IS_NULL(onig_node_list_add(root, srem))) { - onig_node_free(srem); - goto mem_err; - } - } + case NODE_BACKREF: + case NODE_STRING: + case NODE_CTYPE: + case NODE_CCLASS: + case NODE_GIMMICK: + default: + break; } +} - /* ending */ - top_root = (IS_NOT_NULL(top_root) ? top_root : prev_node); - swap_node(node, top_root); - onig_node_free(top_root); - return 0; +#endif /* USE_CALL */ - mem_err: - r = ONIGERR_MEMORY; - err: - onig_node_free(top_root); - return r; -} +static int setup_tree(Node* node, regex_t* reg, int state, ScanEnv* env); + +#ifdef __GNUC__ +__inline +#endif +static int +setup_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_ENCLOSURE | NODE_BIT_QUANT \ + | NODE_BIT_CALL | NODE_BIT_GIMMICK) +#define ALLOWED_ENCLOSURE_IN_LB ( 1<type) { + case ANCHOR_PREC_READ: + r = setup_tree(NODE_ANCHOR_BODY(an), reg, state, env); + break; + case ANCHOR_PREC_READ_NOT: + r = setup_tree(NODE_ANCHOR_BODY(an), reg, (state | IN_NOT), env); + break; - type = NTYPE(node); - switch (type) { - case NT_LIST: + case ANCHOR_LOOK_BEHIND: { - Node* prev = NULL_NODE; - do { - r = setup_comb_exp_check(NCAR(node), r, env); - prev = NCAR(node); - } while (r >= 0 && IS_NOT_NULL(node = NCDR(node))); + r = check_type_tree(NODE_ANCHOR_BODY(an), ALLOWED_TYPE_IN_LB, + ALLOWED_ENCLOSURE_IN_LB, ALLOWED_ANCHOR_IN_LB); + if (r < 0) return r; + if (r > 0) return ONIGERR_INVALID_LOOK_BEHIND_PATTERN; + r = setup_tree(NODE_ANCHOR_BODY(an), reg, state, env); + if (r != 0) return r; + r = setup_look_behind(node, reg, env); } break; - case NT_ALT: + case ANCHOR_LOOK_BEHIND_NOT: { - int ret; - do { - ret = setup_comb_exp_check(NCAR(node), state, env); - r |= ret; - } while (ret >= 0 && IS_NOT_NULL(node = NCDR(node))); + r = check_type_tree(NODE_ANCHOR_BODY(an), ALLOWED_TYPE_IN_LB, + ALLOWED_ENCLOSURE_IN_LB_NOT, ALLOWED_ANCHOR_IN_LB_NOT); + if (r < 0) return r; + if (r > 0) return ONIGERR_INVALID_LOOK_BEHIND_PATTERN; + r = setup_tree(NODE_ANCHOR_BODY(an), reg, (state | IN_NOT), env); + if (r != 0) return r; + r = setup_look_behind(node, reg, env); } break; - case NT_QTFR: - { - int child_state = state; - int add_state = 0; - QtfrNode* qn = NQTFR(node); - Node* target = qn->target; - int var_num; - - if (! IS_REPEAT_INFINITE(qn->upper)) { - if (qn->upper > 1) { - /* {0,1}, {1,1} are allowed */ - child_state |= CEC_IN_FINITE_REPEAT; - - /* check (a*){n,m}, (a+){n,m} => (a*){n,n}, (a+){n,n} */ - if (env->backrefed_mem == 0) { - if (NTYPE(qn->target) == NT_ENCLOSE) { - EncloseNode* en = NENCLOSE(qn->target); - if (en->type == ENCLOSE_MEMORY) { - if (NTYPE(en->target) == NT_QTFR) { - QtfrNode* q = NQTFR(en->target); - if (IS_REPEAT_INFINITE(q->upper) - && q->greedy == qn->greedy) { - qn->upper = (qn->lower == 0 ? 1 : qn->lower); - if (qn->upper == 1) - child_state = state; - } - } - } - } - } - } - } + default: + r = 0; + break; + } - if (state & CEC_IN_FINITE_REPEAT) { - qn->comb_exp_check_num = -1; - } - else { - if (IS_REPEAT_INFINITE(qn->upper)) { - var_num = CEC_INFINITE_NUM; - child_state |= CEC_IN_INFINITE_REPEAT; - } - else { - var_num = qn->upper - qn->lower; - } - - if (var_num >= CEC_THRES_NUM_BIG_REPEAT) - add_state |= CEC_CONT_BIG_REPEAT; - - if (((state & CEC_IN_INFINITE_REPEAT) != 0 && var_num != 0) || - ((state & CEC_CONT_BIG_REPEAT) != 0 && - var_num >= CEC_THRES_NUM_BIG_REPEAT)) { - if (qn->comb_exp_check_num == 0) { - env->num_comb_exp_check++; - qn->comb_exp_check_num = env->num_comb_exp_check; - if (env->curr_max_regnum > env->comb_exp_max_regnum) - env->comb_exp_max_regnum = env->curr_max_regnum; - } - } - } + return r; +} - r = setup_comb_exp_check(target, child_state, env); - r |= add_state; +#ifdef __GNUC__ +__inline +#endif +static int +setup_quant(Node* node, regex_t* reg, int state, ScanEnv* env) +{ + int r; + OnigLen d; + QuantNode* qn = QUANT_(node); + Node* body = NODE_BODY(node); + + if ((state & IN_REAL_REPEAT) != 0) { + NODE_STATUS_ADD(node, IN_REAL_REPEAT); + } + if ((state & IN_MULTI_ENTRY) != 0) { + NODE_STATUS_ADD(node, IN_MULTI_ENTRY); + } + + if (IS_REPEAT_INFINITE(qn->upper) || qn->upper >= 1) { + d = tree_min_len(body, env); + if (d == 0) { +#ifdef USE_INSISTENT_CHECK_CAPTURES_IN_EMPTY_REPEAT + qn->body_empty_info = quantifiers_memory_node_info(body); + if (qn->body_empty_info == QUANT_BODY_IS_EMPTY_REC) { + if (NODE_TYPE(body) == NODE_ENCLOSURE && + ENCLOSURE_(body)->type == ENCLOSURE_MEMORY) { + MEM_STATUS_ON(env->bt_mem_end, ENCLOSURE_(body)->m.regnum); + } + } +#else + qn->body_empty_info = QUANT_BODY_IS_EMPTY; +#endif } - break; - - case NT_ENCLOSE: - { - EncloseNode* en = NENCLOSE(node); + } - switch (en->type) { - case ENCLOSE_MEMORY: - { - if (env->curr_max_regnum < en->regnum) - env->curr_max_regnum = en->regnum; + if (IS_REPEAT_INFINITE(qn->upper) || qn->upper >= 2) + state |= IN_REAL_REPEAT; + if (qn->lower != qn->upper) + state |= IN_VAR_REPEAT; - r = setup_comb_exp_check(en->target, state, env); - } - break; + r = setup_tree(body, reg, state, env); + if (r != 0) return r; - default: - r = setup_comb_exp_check(en->target, state, env); - break; + /* expand string */ +#define EXPAND_STRING_MAX_LENGTH 100 + if (NODE_TYPE(body) == NODE_STRING) { + if (!IS_REPEAT_INFINITE(qn->lower) && qn->lower == qn->upper && + qn->lower > 1 && qn->lower <= EXPAND_STRING_MAX_LENGTH) { + int len = NODE_STRING_LEN(body); + StrNode* sn = STR_(body); + + if (len * qn->lower <= EXPAND_STRING_MAX_LENGTH) { + int i, n = qn->lower; + onig_node_conv_to_str_node(node, STR_(body)->flag); + for (i = 0; i < n; i++) { + r = onig_node_str_cat(node, sn->s, sn->end); + if (r != 0) return r; + } + onig_node_free(body); + return r; } } - break; - -#ifdef USE_SUBEXP_CALL - case NT_CALL: - if (IS_CALL_RECURSION(NCALL(node))) - env->has_recursion = 1; - else - r = setup_comb_exp_check(NCALL(node)->target, state, env); - break; -#endif + } - default: - break; +#ifdef USE_OP_PUSH_OR_JUMP_EXACT + if (qn->greedy && (qn->body_empty_info != QUANT_BODY_IS_NOT_EMPTY)) { + if (NODE_TYPE(body) == NODE_QUANT) { + QuantNode* tqn = QUANT_(body); + if (IS_NOT_NULL(tqn->head_exact)) { + qn->head_exact = tqn->head_exact; + tqn->head_exact = NULL; + } + } + else { + qn->head_exact = get_head_value_node(NODE_BODY(node), 1, reg); + } } +#endif return r; } -#endif - -#define IN_ALT (1<<0) -#define IN_NOT (1<<1) -#define IN_REPEAT (1<<2) -#define IN_VAR_REPEAT (1<<3) /* setup_tree does the following work. - 1. check empty loop. (set qn->target_empty_info) + 1. check empty loop. (set qn->body_empty_info) 2. expand ignore-case in char class. 3. set memory status bit flags. (reg->mem_stats) 4. set qn->head_exact for [push, exact] -> [push_or_jump_exact1, exact]. @@ -3675,242 +4418,122 @@ setup_comb_exp_check(Node* node, int state, ScanEnv* env) static int setup_tree(Node* node, regex_t* reg, int state, ScanEnv* env) { - int type; int r = 0; - type = NTYPE(node); - switch (type) { - case NT_LIST: + switch (NODE_TYPE(node)) { + case NODE_LIST: { Node* prev = NULL_NODE; do { - r = setup_tree(NCAR(node), reg, state, env); - if (IS_NOT_NULL(prev) && r == 0) { - r = next_setup(prev, NCAR(node), reg); - } - prev = NCAR(node); - } while (r == 0 && IS_NOT_NULL(node = NCDR(node))); + r = setup_tree(NODE_CAR(node), reg, state, env); + if (IS_NOT_NULL(prev) && r == 0) { + r = next_setup(prev, NODE_CAR(node), reg); + } + prev = NODE_CAR(node); + } while (r == 0 && IS_NOT_NULL(node = NODE_CDR(node))); } break; - case NT_ALT: + case NODE_ALT: do { - r = setup_tree(NCAR(node), reg, (state | IN_ALT), env); - } while (r == 0 && IS_NOT_NULL(node = NCDR(node))); + r = setup_tree(NODE_CAR(node), reg, (state | IN_ALT), env); + } while (r == 0 && IS_NOT_NULL(node = NODE_CDR(node))); break; - case NT_CCLASS: - break; - - case NT_STR: - if (IS_IGNORECASE(reg->options) && !NSTRING_IS_RAW(node)) { + case NODE_STRING: + if (IS_IGNORECASE(reg->options) && !NODE_STRING_IS_RAW(node)) { r = expand_case_fold_string(node, reg); } break; - case NT_CTYPE: - case NT_CANY: - break; - -#ifdef USE_SUBEXP_CALL - case NT_CALL: - break; -#endif - - case NT_BREF: + case NODE_BACKREF: { int i; int* p; - Node** nodes = SCANENV_MEM_NODES(env); - BRefNode* br = NBREF(node); + BackRefNode* br = BACKREF_(node); p = BACKREFS_P(br); for (i = 0; i < br->back_num; i++) { - if (p[i] > env->num_mem) return ONIGERR_INVALID_BACKREF; - BIT_STATUS_ON_AT(env->backrefed_mem, p[i]); - BIT_STATUS_ON_AT(env->bt_mem_start, p[i]); + if (p[i] > env->num_mem) return ONIGERR_INVALID_BACKREF; + MEM_STATUS_ON(env->backrefed_mem, p[i]); + MEM_STATUS_ON(env->bt_mem_start, p[i]); #ifdef USE_BACKREF_WITH_LEVEL - if (IS_BACKREF_NEST_LEVEL(br)) { - BIT_STATUS_ON_AT(env->bt_mem_end, p[i]); - } + if (NODE_IS_NEST_LEVEL(node)) { + MEM_STATUS_ON(env->bt_mem_end, p[i]); + } #endif - SET_ENCLOSE_STATUS(nodes[p[i]], NST_MEM_BACKREFED); } } break; - case NT_QTFR: + case NODE_ENCLOSURE: { - OnigDistance d; - QtfrNode* qn = NQTFR(node); - Node* target = qn->target; - - if ((state & IN_REPEAT) != 0) { - qn->state |= NST_IN_REPEAT; - } - - if (IS_REPEAT_INFINITE(qn->upper) || qn->upper >= 1) { - r = get_min_match_length(target, &d, env); - if (r) break; - if (d == 0) { - qn->target_empty_info = NQ_TARGET_IS_EMPTY; -#ifdef USE_MONOMANIAC_CHECK_CAPTURES_IN_ENDLESS_REPEAT - r = quantifiers_memory_node_info(target); - if (r < 0) break; - if (r > 0) { - qn->target_empty_info = r; - } -#endif -#if 0 - r = get_max_match_length(target, &d, env); - if (r == 0 && d == 0) { - /* ()* ==> ()?, ()+ ==> () */ - qn->upper = 1; - if (qn->lower > 1) qn->lower = 1; - if (NTYPE(target) == NT_STR) { - qn->upper = qn->lower = 0; /* /(?:)+/ ==> // */ - } - } -#endif - } - } - - state |= IN_REPEAT; - if (qn->lower != qn->upper) - state |= IN_VAR_REPEAT; - r = setup_tree(target, reg, state, env); - if (r) break; + EnclosureNode* en = ENCLOSURE_(node); - /* expand string */ -#define EXPAND_STRING_MAX_LENGTH 100 - if (NTYPE(target) == NT_STR) { - if (!IS_REPEAT_INFINITE(qn->lower) && qn->lower == qn->upper && - qn->lower > 1 && qn->lower <= EXPAND_STRING_MAX_LENGTH) { - int len = NSTRING_LEN(target); - StrNode* sn = NSTR(target); - - if (len * qn->lower <= EXPAND_STRING_MAX_LENGTH) { - int i, n = qn->lower; - onig_node_conv_to_str_node(node, NSTR(target)->flag); - for (i = 0; i < n; i++) { - r = onig_node_str_cat(node, sn->s, sn->end); - if (r) break; - } - onig_node_free(target); - break; /* break case NT_QTFR: */ - } - } - } + switch (en->type) { + case ENCLOSURE_OPTION: + { + OnigOptionType options = reg->options; + reg->options = ENCLOSURE_(node)->o.options; + r = setup_tree(NODE_BODY(node), reg, state, env); + reg->options = options; + } + break; -#ifdef USE_OP_PUSH_OR_JUMP_EXACT - if (qn->greedy && (qn->target_empty_info != 0)) { - if (NTYPE(target) == NT_QTFR) { - QtfrNode* tqn = NQTFR(target); - if (IS_NOT_NULL(tqn->head_exact)) { - qn->head_exact = tqn->head_exact; - tqn->head_exact = NULL; - } - } - else { - qn->head_exact = get_head_value_node(qn->target, 1, reg); - } - } + case ENCLOSURE_MEMORY: +#ifdef USE_CALL + state |= en->m.called_state; #endif - } - break; - case NT_ENCLOSE: - { - EncloseNode* en = NENCLOSE(node); + if ((state & (IN_ALT | IN_NOT | IN_VAR_REPEAT | IN_MULTI_ENTRY)) != 0 + || NODE_IS_RECURSION(node)) { + MEM_STATUS_ON(env->bt_mem_start, en->m.regnum); + } + r = setup_tree(NODE_BODY(node), reg, state, env); + break; - switch (en->type) { - case ENCLOSE_OPTION: - { - OnigOptionType options = reg->options; - reg->options = NENCLOSE(node)->option; - r = setup_tree(NENCLOSE(node)->target, reg, state, env); - reg->options = options; - } - break; - - case ENCLOSE_MEMORY: - if ((state & (IN_ALT | IN_NOT | IN_VAR_REPEAT)) != 0) { - BIT_STATUS_ON_AT(env->bt_mem_start, en->regnum); - /* SET_ENCLOSE_STATUS(node, NST_MEM_IN_ALT_NOT); */ - } - r = setup_tree(en->target, reg, state, env); + case ENCLOSURE_STOP_BACKTRACK: + { + Node* target = NODE_BODY(node); + r = setup_tree(target, reg, state, env); + if (NODE_TYPE(target) == NODE_QUANT) { + QuantNode* tqn = QUANT_(target); + if (IS_REPEAT_INFINITE(tqn->upper) && tqn->lower <= 1 && + tqn->greedy != 0) { /* (?>a*), a*+ etc... */ + if (NODE_IS_SIMPLE_TYPE(NODE_BODY(target))) + NODE_STATUS_ADD(node, STOP_BT_SIMPLE_REPEAT); + } + } + } break; - case ENCLOSE_STOP_BACKTRACK: - { - Node* target = en->target; - r = setup_tree(target, reg, state, env); - if (NTYPE(target) == NT_QTFR) { - QtfrNode* tqn = NQTFR(target); - if (IS_REPEAT_INFINITE(tqn->upper) && tqn->lower <= 1 && - tqn->greedy != 0) { /* (?>a*), a*+ etc... */ - int qtype = NTYPE(tqn->target); - if (IS_NODE_TYPE_SIMPLE(qtype)) - SET_ENCLOSE_STATUS(node, NST_STOP_BT_SIMPLE_REPEAT); - } - } - } - break; + case ENCLOSURE_IF_ELSE: + r = setup_tree(NODE_BODY(node), reg, (state | IN_ALT), env); + if (r != 0) return r; + if (IS_NOT_NULL(en->te.Then)) { + r = setup_tree(en->te.Then, reg, (state | IN_ALT), env); + if (r != 0) return r; + } + if (IS_NOT_NULL(en->te.Else)) + r = setup_tree(en->te.Else, reg, (state | IN_ALT), env); + break; } } break; - case NT_ANCHOR: - { - AnchorNode* an = NANCHOR(node); - - switch (an->type) { - case ANCHOR_PREC_READ: - r = setup_tree(an->target, reg, state, env); - break; - case ANCHOR_PREC_READ_NOT: - r = setup_tree(an->target, reg, (state | IN_NOT), env); - break; - -/* allowed node types in look-behind */ -#define ALLOWED_TYPE_IN_LB \ - ( BIT_NT_LIST | BIT_NT_ALT | BIT_NT_STR | BIT_NT_CCLASS | BIT_NT_CTYPE | \ - BIT_NT_CANY | BIT_NT_ANCHOR | BIT_NT_ENCLOSE | BIT_NT_QTFR | BIT_NT_CALL ) - -#define ALLOWED_ENCLOSE_IN_LB ( ENCLOSE_MEMORY ) -#define ALLOWED_ENCLOSE_IN_LB_NOT 0 - -#define ALLOWED_ANCHOR_IN_LB \ -( ANCHOR_LOOK_BEHIND | ANCHOR_BEGIN_LINE | ANCHOR_END_LINE | ANCHOR_BEGIN_BUF | ANCHOR_BEGIN_POSITION ) -#define ALLOWED_ANCHOR_IN_LB_NOT \ -( ANCHOR_LOOK_BEHIND | ANCHOR_LOOK_BEHIND_NOT | ANCHOR_BEGIN_LINE | ANCHOR_END_LINE | ANCHOR_BEGIN_BUF | ANCHOR_BEGIN_POSITION ) - - case ANCHOR_LOOK_BEHIND: - { - r = check_type_tree(an->target, ALLOWED_TYPE_IN_LB, - ALLOWED_ENCLOSE_IN_LB, ALLOWED_ANCHOR_IN_LB); - if (r < 0) return r; - if (r > 0) return ONIGERR_INVALID_LOOK_BEHIND_PATTERN; - r = setup_look_behind(node, reg, env); - if (r != 0) return r; - r = setup_tree(an->target, reg, state, env); - } - break; + case NODE_QUANT: + r = setup_quant(node, reg, state, env); + break; - case ANCHOR_LOOK_BEHIND_NOT: - { - r = check_type_tree(an->target, ALLOWED_TYPE_IN_LB, - ALLOWED_ENCLOSE_IN_LB_NOT, ALLOWED_ANCHOR_IN_LB_NOT); - if (r < 0) return r; - if (r > 0) return ONIGERR_INVALID_LOOK_BEHIND_PATTERN; - r = setup_look_behind(node, reg, env); - if (r != 0) return r; - r = setup_tree(an->target, reg, (state | IN_NOT), env); - } - break; - } - } + case NODE_ANCHOR: + r = setup_anchor(node, reg, state, env); break; +#ifdef USE_CALL + case NODE_CALL: +#endif + case NODE_CTYPE: + case NODE_CCLASS: + case NODE_GIMMICK: default: break; } @@ -3918,19 +4541,19 @@ setup_tree(Node* node, regex_t* reg, int state, ScanEnv* env) return r; } -/* set skip map for Boyer-Moor search */ +/* set skip map for Boyer-Moore search */ static int set_bm_skip(UChar* s, UChar* end, OnigEncoding enc ARG_UNUSED, - UChar skip[], int** int_skip) + UChar skip[], int** int_skip) { int i, len; - len = (int)(end - s); + len = (int )(end - s); if (len < ONIG_CHAR_TABLE_SIZE) { - for (i = 0; i < ONIG_CHAR_TABLE_SIZE; i++) skip[i] = (UChar)len; + for (i = 0; i < ONIG_CHAR_TABLE_SIZE; i++) skip[i] = len; for (i = 0; i < len - 1; i++) - skip[s[i]] = (UChar)(len - 1 - i); + skip[s[i]] = len - 1 - i; } else { if (IS_NULL(*int_skip)) { @@ -3948,12 +4571,12 @@ set_bm_skip(UChar* s, UChar* end, OnigEncoding enc ARG_UNUSED, #define OPT_EXACT_MAXLEN 24 typedef struct { - OnigDistance min; /* min byte length */ - OnigDistance max; /* max byte length */ -} MinMaxLen; + OnigLen min; /* min byte length */ + OnigLen max; /* max byte length */ +} MinMax; typedef struct { - MinMaxLen mmd; + MinMax mmd; OnigEncoding enc; OnigOptionType options; OnigCaseFoldType case_fold_flag; @@ -3961,44 +4584,40 @@ typedef struct { } OptEnv; typedef struct { - int left_anchor; - int right_anchor; -} OptAncInfo; + int left; + int right; +} OptAnc; typedef struct { - MinMaxLen mmd; /* info position */ - OptAncInfo anc; - - int reach_end; - int ignore_case; - int len; - UChar s[OPT_EXACT_MAXLEN]; -} OptExactInfo; + MinMax mmd; /* position */ + OptAnc anc; + int reach_end; + int ignore_case; + int len; + UChar s[OPT_EXACT_MAXLEN]; +} OptExact; typedef struct { - MinMaxLen mmd; /* info position */ - OptAncInfo anc; - - int value; /* weighted value */ - UChar map[ONIG_CHAR_TABLE_SIZE]; -} OptMapInfo; + MinMax mmd; /* position */ + OptAnc anc; + int value; /* weighted value */ + UChar map[ONIG_CHAR_TABLE_SIZE]; +} OptMap; typedef struct { - MinMaxLen len; - - OptAncInfo anc; - OptExactInfo exb; /* boundary */ - OptExactInfo exm; /* middle */ - OptExactInfo expr; /* prec read (?=...) */ - - OptMapInfo map; /* boundary */ -} NodeOptInfo; + MinMax len; + OptAnc anc; + OptExact exb; /* boundary */ + OptExact exm; /* middle */ + OptExact expr; /* prec read (?=...) */ + OptMap map; /* boundary */ +} NodeOpt; static int map_position_value(OnigEncoding enc, int i) { - static const short int ByteValTable[] = { + static const short int Vals[] = { 5, 1, 1, 1, 1, 1, 1, 1, 1, 10, 10, 1, 1, 10, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 12, 4, 7, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, @@ -4009,18 +4628,18 @@ map_position_value(OnigEncoding enc, int i) 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 1 }; - if (i < (int )(sizeof(ByteValTable)/sizeof(ByteValTable[0]))) { + if (i < (int )(sizeof(Vals)/sizeof(Vals[0]))) { if (i == 0 && ONIGENC_MBC_MINLEN(enc) > 1) return 20; else - return (int )ByteValTable[i]; + return (int )Vals[i]; } else return 4; /* Take it easy. */ } static int -distance_value(MinMaxLen* mm) +distance_value(MinMax* mm) { /* 1000 / (min-max-dist + 1) */ static const short int dist_vals[] = { @@ -4036,12 +4655,12 @@ distance_value(MinMaxLen* mm) 11, 11, 11, 11, 11, 10, 10, 10, 10, 10 }; - int d; + OnigLen d; - if (mm->max == ONIG_INFINITE_DISTANCE) return 0; + if (mm->max == INFINITE_LEN) return 0; d = mm->max - mm->min; - if (d < (int )(sizeof(dist_vals)/sizeof(dist_vals[0]))) + if (d < (OnigLen )(sizeof(dist_vals)/sizeof(dist_vals[0]))) /* return dist_vals[d] * 16 / (mm->min + 12); */ return (int )dist_vals[d]; else @@ -4049,7 +4668,7 @@ distance_value(MinMaxLen* mm) } static int -comp_distance_value(MinMaxLen* d1, MinMaxLen* d2, int v1, int v2) +comp_distance_value(MinMax* d1, MinMax* d2, int v1, int v2) { if (v2 <= 0) return -1; if (v1 <= 0) return 1; @@ -4066,50 +4685,40 @@ comp_distance_value(MinMaxLen* d1, MinMaxLen* d2, int v1, int v2) } static int -is_equal_mml(MinMaxLen* a, MinMaxLen* b) +is_equal_mml(MinMax* a, MinMax* b) { return (a->min == b->min && a->max == b->max) ? 1 : 0; } - static void -set_mml(MinMaxLen* mml, OnigDistance min, OnigDistance max) +set_mml(MinMax* l, OnigLen min, OnigLen max) { - mml->min = min; - mml->max = max; + l->min = min; + l->max = max; } static void -clear_mml(MinMaxLen* mml) +clear_mml(MinMax* l) { - mml->min = mml->max = 0; + l->min = l->max = 0; } static void -copy_mml(MinMaxLen* to, MinMaxLen* from) +copy_mml(MinMax* to, MinMax* from) { to->min = from->min; to->max = from->max; } static void -add_mml(MinMaxLen* to, MinMaxLen* from) +add_mml(MinMax* to, MinMax* from) { to->min = distance_add(to->min, from->min); to->max = distance_add(to->max, from->max); } -#if 0 -static void -add_len_mml(MinMaxLen* to, OnigDistance len) -{ - to->min = distance_add(to->min, len); - to->max = distance_add(to->max, len); -} -#endif - static void -alt_merge_mml(MinMaxLen* to, MinMaxLen* from) +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; @@ -4118,124 +4727,130 @@ alt_merge_mml(MinMaxLen* to, MinMaxLen* from) static void copy_opt_env(OptEnv* to, OptEnv* from) { - CopyMem (to, from, sizeof (OptEnv)); + *to = *from; } static void -clear_opt_anc_info(OptAncInfo* anc) +clear_opt_anc_info(OptAnc* a) { - anc->left_anchor = 0; - anc->right_anchor = 0; + a->left = 0; + a->right = 0; } static void -copy_opt_anc_info(OptAncInfo* to, OptAncInfo* from) +copy_opt_anc_info(OptAnc* to, OptAnc* from) { - CopyMem (to, from, sizeof (OptAncInfo)); + *to = *from; } static void -concat_opt_anc_info(OptAncInfo* to, OptAncInfo* left, OptAncInfo* right, - OnigDistance left_len, OnigDistance right_len) +concat_opt_anc_info(OptAnc* to, OptAnc* left, OptAnc* right, + OnigLen left_len, OnigLen right_len) { clear_opt_anc_info(to); - to->left_anchor = left->left_anchor; + to->left = left->left; if (left_len == 0) { - to->left_anchor |= right->left_anchor; + to->left |= right->left; } - to->right_anchor = right->right_anchor; + to->right = right->right; if (right_len == 0) { - to->right_anchor |= left->right_anchor; + to->right |= left->right; + } + else { + to->right |= (left->right & ANCHOR_PREC_READ_NOT); } } static int -is_left_anchor(int anc) +is_left(int a) { - if (anc == ANCHOR_END_BUF || anc == ANCHOR_SEMI_END_BUF || - anc == ANCHOR_END_LINE || anc == ANCHOR_PREC_READ || - anc == ANCHOR_PREC_READ_NOT) + if (a == ANCHOR_END_BUF || a == ANCHOR_SEMI_END_BUF || + a == ANCHOR_END_LINE || a == ANCHOR_PREC_READ || a == ANCHOR_PREC_READ_NOT) return 0; return 1; } static int -is_set_opt_anc_info(OptAncInfo* to, int anc) +is_set_opt_anc_info(OptAnc* to, int anc) { - if ((to->left_anchor & anc) != 0) return 1; + if ((to->left & anc) != 0) return 1; - return ((to->right_anchor & anc) != 0 ? 1 : 0); + return ((to->right & anc) != 0 ? 1 : 0); } static void -add_opt_anc_info(OptAncInfo* to, int anc) +add_opt_anc_info(OptAnc* to, int anc) { - if (is_left_anchor(anc)) - to->left_anchor |= anc; + if (is_left(anc)) + to->left |= anc; else - to->right_anchor |= anc; + to->right |= anc; } static void -remove_opt_anc_info(OptAncInfo* to, int anc) +remove_opt_anc_info(OptAnc* to, int anc) { - if (is_left_anchor(anc)) - to->left_anchor &= ~anc; + if (is_left(anc)) + to->left &= ~anc; else - to->right_anchor &= ~anc; + to->right &= ~anc; } static void -alt_merge_opt_anc_info(OptAncInfo* to, OptAncInfo* add) +alt_merge_opt_anc_info(OptAnc* to, OptAnc* add) { - to->left_anchor &= add->left_anchor; - to->right_anchor &= add->right_anchor; + to->left &= add->left; + to->right &= add->right; } static int -is_full_opt_exact_info(OptExactInfo* ex) +is_full_opt_exact(OptExact* e) { - return (ex->len >= OPT_EXACT_MAXLEN ? 1 : 0); + return (e->len >= OPT_EXACT_MAXLEN ? 1 : 0); } static void -clear_opt_exact_info(OptExactInfo* ex) +clear_opt_exact(OptExact* e) { - clear_mml(&ex->mmd); - clear_opt_anc_info(&ex->anc); - ex->reach_end = 0; - ex->ignore_case = 0; - ex->len = 0; - ex->s[0] = '\0'; + clear_mml(&e->mmd); + clear_opt_anc_info(&e->anc); + e->reach_end = 0; + e->ignore_case = 0; + e->len = 0; + e->s[0] = '\0'; } static void -copy_opt_exact_info(OptExactInfo* to, OptExactInfo* from) +copy_opt_exact(OptExact* to, OptExact* from) { - CopyMem (to, from, sizeof (OptExactInfo)); + *to = *from; } -static void -concat_opt_exact_info(OptExactInfo* to, OptExactInfo* add, OnigEncoding enc) +static int +concat_opt_exact(OptExact* to, OptExact* add, OnigEncoding enc) { - int i, j, len; + int i, j, len, r; UChar *p, *end; - OptAncInfo tanc; + OptAnc tanc; if (! to->ignore_case && add->ignore_case) { - if (to->len >= add->len) return ; /* avoid */ + if (to->len >= add->len) return 0; /* avoid */ to->ignore_case = 1; } + r = 0; p = add->s; end = p + add->len; for (i = to->len; p < end; ) { len = enclen(enc, p); - if (i + len > OPT_EXACT_MAXLEN) break; + if (i + len > OPT_EXACT_MAXLEN) { + r = 1; /* 1:full */ + break; + } for (j = 0; j < len && p < end; j++) to->s[i++] = *p++; } @@ -4244,13 +4859,14 @@ concat_opt_exact_info(OptExactInfo* to, OptExactInfo* add, OnigEncoding enc) to->reach_end = (p == end ? add->reach_end : 0); concat_opt_anc_info(&tanc, &to->anc, &add->anc, 1, 1); - if (! to->reach_end) tanc.right_anchor = 0; + if (! to->reach_end) tanc.right = 0; copy_opt_anc_info(&to->anc, &tanc); + + return r; } static void -concat_opt_exact_info_str(OptExactInfo* to, UChar* s, UChar* end, - int raw ARG_UNUSED, OnigEncoding enc) +concat_opt_exact_str(OptExact* to, UChar* s, UChar* end, OnigEncoding enc) { int i, j, len; UChar *p; @@ -4266,17 +4882,17 @@ concat_opt_exact_info_str(OptExactInfo* to, UChar* s, UChar* end, } static void -alt_merge_opt_exact_info(OptExactInfo* to, OptExactInfo* add, OptEnv* env) +alt_merge_opt_exact(OptExact* to, OptExact* add, OptEnv* env) { int i, j, len; if (add->len == 0 || to->len == 0) { - clear_opt_exact_info(to); + clear_opt_exact(to); return ; } if (! is_equal_mml(&to->mmd, &add->mmd)) { - clear_opt_exact_info(to); + clear_opt_exact(to); return ; } @@ -4298,44 +4914,44 @@ alt_merge_opt_exact_info(OptExactInfo* to, OptExactInfo* add, OptEnv* env) to->ignore_case |= add->ignore_case; alt_merge_opt_anc_info(&to->anc, &add->anc); - if (! to->reach_end) to->anc.right_anchor = 0; + if (! to->reach_end) to->anc.right = 0; } static void -select_opt_exact_info(OnigEncoding enc, OptExactInfo* now, OptExactInfo* alt) +select_opt_exact(OnigEncoding enc, OptExact* now, OptExact* alt) { - int v1, v2; + int vn, va; - v1 = now->len; - v2 = alt->len; + vn = now->len; + va = alt->len; - if (v2 == 0) { + if (va == 0) { return ; } - else if (v1 == 0) { - copy_opt_exact_info(now, alt); + else if (vn == 0) { + copy_opt_exact(now, alt); return ; } - else if (v1 <= 2 && v2 <= 2) { + else if (vn <= 2 && va <= 2) { /* ByteValTable[x] is big value --> low price */ - v2 = map_position_value(enc, now->s[0]); - v1 = map_position_value(enc, alt->s[0]); + va = map_position_value(enc, now->s[0]); + vn = map_position_value(enc, alt->s[0]); - if (now->len > 1) v1 += 5; - if (alt->len > 1) v2 += 5; + if (now->len > 1) vn += 5; + if (alt->len > 1) va += 5; } - if (now->ignore_case == 0) v1 *= 2; - if (alt->ignore_case == 0) v2 *= 2; + if (now->ignore_case == 0) vn *= 2; + if (alt->ignore_case == 0) va *= 2; - if (comp_distance_value(&now->mmd, &alt->mmd, v1, v2) > 0) - copy_opt_exact_info(now, alt); + if (comp_distance_value(&now->mmd, &alt->mmd, vn, va) > 0) + copy_opt_exact(now, alt); } static void -clear_opt_map_info(OptMapInfo* map) +clear_opt_map(OptMap* map) { - static const OptMapInfo clean_info = { + static const OptMap clean_info = { {0, 0}, {0, 0}, 0, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -4357,87 +4973,87 @@ clear_opt_map_info(OptMapInfo* map) } }; - xmemcpy(map, &clean_info, sizeof(OptMapInfo)); + xmemcpy(map, &clean_info, sizeof(OptMap)); } static void -copy_opt_map_info(OptMapInfo* to, OptMapInfo* from) +copy_opt_map(OptMap* to, OptMap* from) { - CopyMem (to, from, sizeof (OptMapInfo)); + xmemcpy(to,from,sizeof(OptMap)); } static void -add_char_opt_map_info(OptMapInfo* map, UChar c, OnigEncoding enc) +add_char_opt_map(OptMap* m, UChar c, OnigEncoding enc) { - if (map->map[c] == 0) { - map->map[c] = 1; - map->value += map_position_value(enc, c); + if (m->map[c] == 0) { + m->map[c] = 1; + m->value += map_position_value(enc, c); } } static int -add_char_amb_opt_map_info(OptMapInfo* map, UChar* p, UChar* end, - OnigEncoding enc, OnigCaseFoldType case_fold_flag) +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_info(map, p[0], enc); + add_char_opt_map(map, p[0], enc); - case_fold_flag = DISABLE_CASE_FOLD_MULTI_CHAR(case_fold_flag); - n = ONIGENC_GET_CASE_FOLD_CODES_BY_STR(enc, case_fold_flag, p, end, items); + 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_info(map, buf[0], enc); + add_char_opt_map(map, buf[0], enc); } return 0; } static void -select_opt_map_info(OptMapInfo* now, OptMapInfo* alt) +select_opt_map(OptMap* now, OptMap* alt) { static int z = 1<<15; /* 32768: something big value */ - int v1, v2; + int vn, va; if (alt->value == 0) return ; if (now->value == 0) { - copy_opt_map_info(now, alt); + copy_opt_map(now, alt); return ; } - v1 = z / now->value; - v2 = z / alt->value; - if (comp_distance_value(&now->mmd, &alt->mmd, v1, v2) > 0) - copy_opt_map_info(now, alt); + vn = z / now->value; + va = z / alt->value; + if (comp_distance_value(&now->mmd, &alt->mmd, vn, va) > 0) + copy_opt_map(now, alt); } static int -comp_opt_exact_or_map_info(OptExactInfo* e, OptMapInfo* m) +comp_opt_exact_or_map(OptExact* e, OptMap* m) { #define COMP_EM_BASE 20 - int ve, vm; + int ae, am; if (m->value <= 0) return -1; - ve = COMP_EM_BASE * e->len * (e->ignore_case ? 1 : 2); - vm = COMP_EM_BASE * 5 * 2 / m->value; - return comp_distance_value(&e->mmd, &m->mmd, ve, vm); + ae = COMP_EM_BASE * e->len * (e->ignore_case ? 1 : 2); + am = COMP_EM_BASE * 5 * 2 / m->value; + return comp_distance_value(&e->mmd, &m->mmd, ae, am); } static void -alt_merge_opt_map_info(OnigEncoding enc, OptMapInfo* to, OptMapInfo* add) +alt_merge_opt_map(OnigEncoding enc, OptMap* to, OptMap* add) { int i, val; /* if (! is_equal_mml(&to->mmd, &add->mmd)) return ; */ if (to->value == 0) return ; if (add->value == 0 || to->mmd.max < add->mmd.min) { - clear_opt_map_info(to); + clear_opt_map(to); return ; } @@ -4457,48 +5073,47 @@ alt_merge_opt_map_info(OnigEncoding enc, OptMapInfo* to, OptMapInfo* add) } static void -set_bound_node_opt_info(NodeOptInfo* opt, MinMaxLen* mmd) +set_bound_node_opt_info(NodeOpt* opt, MinMax* plen) { - copy_mml(&(opt->exb.mmd), mmd); - copy_mml(&(opt->expr.mmd), mmd); - copy_mml(&(opt->map.mmd), mmd); + copy_mml(&(opt->exb.mmd), plen); + copy_mml(&(opt->expr.mmd), plen); + copy_mml(&(opt->map.mmd), plen); } static void -clear_node_opt_info(NodeOptInfo* opt) +clear_node_opt_info(NodeOpt* opt) { clear_mml(&opt->len); clear_opt_anc_info(&opt->anc); - clear_opt_exact_info(&opt->exb); - clear_opt_exact_info(&opt->exm); - clear_opt_exact_info(&opt->expr); - clear_opt_map_info(&opt->map); + clear_opt_exact(&opt->exb); + clear_opt_exact(&opt->exm); + clear_opt_exact(&opt->expr); + clear_opt_map(&opt->map); } static void -copy_node_opt_info(NodeOptInfo* to, NodeOptInfo* from) +copy_node_opt_info(NodeOpt* to, NodeOpt* from) { - CopyMem (to, from, sizeof (NodeOptInfo)); + xmemcpy(to,from,sizeof(NodeOpt)); } static void -concat_left_node_opt_info(OnigEncoding enc, NodeOptInfo* to, NodeOptInfo* add) +concat_left_node_opt_info(OnigEncoding enc, NodeOpt* to, NodeOpt* add) { int exb_reach, exm_reach; - OptAncInfo tanc; + OptAnc tanc; concat_opt_anc_info(&tanc, &to->anc, &add->anc, to->len.max, add->len.max); copy_opt_anc_info(&to->anc, &tanc); if (add->exb.len > 0 && to->len.max == 0) { - concat_opt_anc_info(&tanc, &to->anc, &add->exb.anc, - to->len.max, add->len.max); + concat_opt_anc_info(&tanc, &to->anc, &add->exb.anc, to->len.max, add->len.max); copy_opt_anc_info(&add->exb.anc, &tanc); } if (add->map.value > 0 && to->len.max == 0) { if (add->map.mmd.max == 0) - add->map.anc.left_anchor |= to->anc.left_anchor; + add->map.anc.left |= to->anc.left; } exb_reach = to->exb.reach_end; @@ -4509,45 +5124,44 @@ concat_left_node_opt_info(OnigEncoding enc, NodeOptInfo* to, NodeOptInfo* add) if (add->exb.len > 0) { if (exb_reach) { - concat_opt_exact_info(&to->exb, &add->exb, enc); - clear_opt_exact_info(&add->exb); + concat_opt_exact(&to->exb, &add->exb, enc); + clear_opt_exact(&add->exb); } else if (exm_reach) { - concat_opt_exact_info(&to->exm, &add->exb, enc); - clear_opt_exact_info(&add->exb); + concat_opt_exact(&to->exm, &add->exb, enc); + clear_opt_exact(&add->exb); } } - select_opt_exact_info(enc, &to->exm, &add->exb); - select_opt_exact_info(enc, &to->exm, &add->exm); + select_opt_exact(enc, &to->exm, &add->exb); + select_opt_exact(enc, &to->exm, &add->exm); if (to->expr.len > 0) { if (add->len.max > 0) { if (to->expr.len > (int )add->len.max) - to->expr.len = add->len.max; + to->expr.len = add->len.max; if (to->expr.mmd.max == 0) - select_opt_exact_info(enc, &to->exb, &to->expr); + select_opt_exact(enc, &to->exb, &to->expr); else - select_opt_exact_info(enc, &to->exm, &to->expr); + select_opt_exact(enc, &to->exm, &to->expr); } } else if (add->expr.len > 0) { - copy_opt_exact_info(&to->expr, &add->expr); + copy_opt_exact(&to->expr, &add->expr); } - select_opt_map_info(&to->map, &add->map); - + select_opt_map(&to->map, &add->map); add_mml(&to->len, &add->len); } static void -alt_merge_node_opt_info(NodeOptInfo* to, NodeOptInfo* add, OptEnv* env) +alt_merge_node_opt_info(NodeOpt* to, NodeOpt* add, OptEnv* env) { - alt_merge_opt_anc_info (&to->anc, &add->anc); - alt_merge_opt_exact_info(&to->exb, &add->exb, env); - alt_merge_opt_exact_info(&to->exm, &add->exm, env); - alt_merge_opt_exact_info(&to->expr, &add->expr, env); - alt_merge_opt_map_info(env->enc, &to->map, &add->map); + alt_merge_opt_anc_info(&to->anc, &add->anc); + alt_merge_opt_exact(&to->exb, &add->exb, env); + alt_merge_opt_exact(&to->exm, &add->exm, env); + alt_merge_opt_exact(&to->expr, &add->expr, env); + alt_merge_opt_map(env->enc, &to->map, &add->map); alt_merge_mml(&to->len, &add->len); } @@ -4556,341 +5170,354 @@ alt_merge_node_opt_info(NodeOptInfo* to, NodeOptInfo* add, OptEnv* env) #define MAX_NODE_OPT_INFO_REF_COUNT 5 static int -optimize_node_left(Node* node, NodeOptInfo* opt, OptEnv* env) +optimize_nodes(Node* node, NodeOpt* opt, OptEnv* env) { - int type; - int r = 0; + int i; + int r; + NodeOpt xo; + OnigEncoding enc; + r = 0; + enc = env->enc; clear_node_opt_info(opt); set_bound_node_opt_info(opt, &env->mmd); - type = NTYPE(node); - switch (type) { - case NT_LIST: + switch (NODE_TYPE(node)) { + case NODE_LIST: { OptEnv nenv; - NodeOptInfo nopt; Node* nd = node; copy_opt_env(&nenv, env); do { - r = optimize_node_left(NCAR(nd), &nopt, &nenv); - if (r == 0) { - add_mml(&nenv.mmd, &nopt.len); - concat_left_node_opt_info(env->enc, opt, &nopt); - } - } while (r == 0 && IS_NOT_NULL(nd = NCDR(nd))); + r = optimize_nodes(NODE_CAR(nd), &xo, &nenv); + if (r == 0) { + add_mml(&nenv.mmd, &xo.len); + concat_left_node_opt_info(enc, opt, &xo); + } + } while (r == 0 && IS_NOT_NULL(nd = NODE_CDR(nd))); } break; - case NT_ALT: + case NODE_ALT: { - NodeOptInfo nopt; Node* nd = node; do { - r = optimize_node_left(NCAR(nd), &nopt, env); - if (r == 0) { - if (nd == node) copy_node_opt_info(opt, &nopt); - else alt_merge_node_opt_info(opt, &nopt, env); - } - } while ((r == 0) && IS_NOT_NULL(nd = NCDR(nd))); + r = optimize_nodes(NODE_CAR(nd), &xo, env); + if (r == 0) { + if (nd == node) copy_node_opt_info(opt, &xo); + else alt_merge_node_opt_info(opt, &xo, env); + } + } while ((r == 0) && IS_NOT_NULL(nd = NODE_CDR(nd))); } break; - case NT_STR: + case NODE_STRING: { - StrNode* sn = NSTR(node); - int slen = (int)(sn->end - sn->s); - int is_raw = NSTRING_IS_RAW(node); - - if (! NSTRING_IS_AMBIG(node)) { - concat_opt_exact_info_str(&opt->exb, sn->s, sn->end, - NSTRING_IS_RAW(node), env->enc); - if (slen > 0) { - add_char_opt_map_info(&opt->map, *(sn->s), env->enc); - } + StrNode* sn = STR_(node); + int slen = (int )(sn->end - sn->s); + /* int is_raw = NODE_STRING_IS_RAW(node); */ + + if (! NODE_STRING_IS_AMBIG(node)) { + concat_opt_exact_str(&opt->exb, 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; - if (NSTRING_IS_DONT_GET_OPT_INFO(node)) { - int n = onigenc_strlen(env->enc, sn->s, sn->end); - max = ONIGENC_MBC_MAXLEN_DIST(env->enc) * n; - } - else { - concat_opt_exact_info_str(&opt->exb, sn->s, sn->end, - is_raw, env->enc); - opt->exb.ignore_case = 1; + if (NODE_STRING_IS_DONT_GET_OPT_INFO(node)) { + int n = onigenc_strlen(enc, sn->s, sn->end); + max = ONIGENC_MBC_MAXLEN_DIST(enc) * n; + } + else { + concat_opt_exact_str(&opt->exb, sn->s, sn->end, enc); + opt->exb.ignore_case = 1; - if (slen > 0) { - r = add_char_amb_opt_map_info(&opt->map, sn->s, sn->end, - env->enc, env->case_fold_flag); - if (r != 0) break; - } + 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; - } + max = slen; + } set_mml(&opt->len, slen, max); } if (opt->exb.len == slen) - opt->exb.reach_end = 1; + opt->exb.reach_end = 1; } break; - case NT_CCLASS: + case NODE_CCLASS: { - int i, z; - CClassNode* cc = NCCLASS(node); + int z; + CClassNode* cc = CCLASS_(node); - /* no need to check ignore case. (setted in setup_tree()) */ + /* no need to check ignore case. (set in setup_tree()) */ if (IS_NOT_NULL(cc->mbuf) || IS_NCCLASS_NOT(cc)) { - OnigDistance min = ONIGENC_MBC_MINLEN(env->enc); - OnigDistance max = ONIGENC_MBC_MAXLEN_DIST(env->enc); + OnigLen min = ONIGENC_MBC_MINLEN(enc); + OnigLen max = ONIGENC_MBC_MAXLEN_DIST(enc); - set_mml(&opt->len, min, max); + set_mml(&opt->len, min, max); } else { for (i = 0; i < SINGLE_BYTE_SIZE; i++) { z = BITSET_AT(cc->bs, i); - if ((z && !IS_NCCLASS_NOT(cc)) || (!z && IS_NCCLASS_NOT(cc))) { - add_char_opt_map_info(&opt->map, (UChar )i, env->enc); + if ((z && ! IS_NCCLASS_NOT(cc)) || (! z && IS_NCCLASS_NOT(cc))) { + add_char_opt_map(&opt->map, (UChar )i, enc); } } - set_mml(&opt->len, 1, 1); + set_mml(&opt->len, 1, 1); } } break; - case NT_CTYPE: + case NODE_CTYPE: { - int i, min, max; + int min, max; + int range; - max = ONIGENC_MBC_MAXLEN_DIST(env->enc); + max = ONIGENC_MBC_MAXLEN_DIST(enc); if (max == 1) { min = 1; - switch (NCTYPE(node)->ctype) { - case ONIGENC_CTYPE_WORD: - if (NCTYPE(node)->not != 0) { - for (i = 0; i < SINGLE_BYTE_SIZE; i++) { - if (! ONIGENC_IS_CODE_WORD(env->enc, i)) { - add_char_opt_map_info(&opt->map, (UChar )i, env->enc); - } - } - } - else { - for (i = 0; i < SINGLE_BYTE_SIZE; i++) { - if (ONIGENC_IS_CODE_WORD(env->enc, i)) { - add_char_opt_map_info(&opt->map, (UChar )i, env->enc); - } - } - } - break; - } + switch (CTYPE_(node)->ctype) { + case CTYPE_ANYCHAR: + break; + + case ONIGENC_CTYPE_WORD: + range = CTYPE_(node)->ascii_mode != 0 ? 128 : SINGLE_BYTE_SIZE; + if (CTYPE_(node)->not != 0) { + for (i = 0; i < range; i++) { + if (! ONIGENC_IS_CODE_WORD(enc, i)) { + add_char_opt_map(&opt->map, (UChar )i, enc); + } + } + for (i = range; i < SINGLE_BYTE_SIZE; i++) { + add_char_opt_map(&opt->map, (UChar )i, enc); + } + } + else { + for (i = 0; i < range; i++) { + if (ONIGENC_IS_CODE_WORD(enc, i)) { + add_char_opt_map(&opt->map, (UChar )i, enc); + } + } + } + break; + } } else { - min = ONIGENC_MBC_MINLEN(env->enc); + min = ONIGENC_MBC_MINLEN(enc); } set_mml(&opt->len, min, max); } break; - case NT_CANY: - { - OnigDistance min = ONIGENC_MBC_MINLEN(env->enc); - OnigDistance max = ONIGENC_MBC_MAXLEN_DIST(env->enc); - set_mml(&opt->len, min, max); - } - break; - - case NT_ANCHOR: - switch (NANCHOR(node)->type) { + case NODE_ANCHOR: + switch (ANCHOR_(node)->type) { case ANCHOR_BEGIN_BUF: case ANCHOR_BEGIN_POSITION: case ANCHOR_BEGIN_LINE: case ANCHOR_END_BUF: case ANCHOR_SEMI_END_BUF: case ANCHOR_END_LINE: - add_opt_anc_info(&opt->anc, NANCHOR(node)->type); + case ANCHOR_PREC_READ_NOT: + case ANCHOR_LOOK_BEHIND: + add_opt_anc_info(&opt->anc, ANCHOR_(node)->type); break; case ANCHOR_PREC_READ: { - NodeOptInfo nopt; + r = optimize_nodes(NODE_BODY(node), &xo, env); + if (r == 0) { + if (xo.exb.len > 0) + copy_opt_exact(&opt->expr, &xo.exb); + else if (xo.exm.len > 0) + copy_opt_exact(&opt->expr, &xo.exm); - r = optimize_node_left(NANCHOR(node)->target, &nopt, env); - if (r == 0) { - if (nopt.exb.len > 0) - copy_opt_exact_info(&opt->expr, &nopt.exb); - else if (nopt.exm.len > 0) - copy_opt_exact_info(&opt->expr, &nopt.exm); + opt->expr.reach_end = 0; - opt->expr.reach_end = 0; - - if (nopt.map.value > 0) - copy_opt_map_info(&opt->map, &nopt.map); - } + if (xo.map.value > 0) + copy_opt_map(&opt->map, &xo.map); + } } break; - case ANCHOR_PREC_READ_NOT: - case ANCHOR_LOOK_BEHIND: /* Sorry, I can't make use of it. */ case ANCHOR_LOOK_BEHIND_NOT: break; } break; - case NT_BREF: - { - int i; + case NODE_BACKREF: + if (! NODE_IS_CHECKER(node)) { int* backs; - OnigDistance min, max, tmin, tmax; - Node** nodes = SCANENV_MEM_NODES(env->scan_env); - BRefNode* br = NBREF(node); + OnigLen min, max, tmin, tmax; + MemEnv* mem_env = SCANENV_MEMENV(env->scan_env); + BackRefNode* br = BACKREF_(node); - if (br->state & NST_RECURSION) { - set_mml(&opt->len, 0, ONIG_INFINITE_DISTANCE); - break; + if (NODE_IS_RECURSION(node)) { + set_mml(&opt->len, 0, INFINITE_LEN); + break; } backs = BACKREFS_P(br); - r = get_min_match_length(nodes[backs[0]], &min, env->scan_env); - if (r != 0) break; - r = get_max_match_length(nodes[backs[0]], &max, env->scan_env); - if (r != 0) break; + min = tree_min_len(mem_env[backs[0]].node, env->scan_env); + max = tree_max_len(mem_env[backs[0]].node, env->scan_env); for (i = 1; i < br->back_num; i++) { - r = get_min_match_length(nodes[backs[i]], &tmin, env->scan_env); - if (r != 0) break; - r = get_max_match_length(nodes[backs[i]], &tmax, env->scan_env); - if (r != 0) break; - if (min > tmin) min = tmin; - if (max < tmax) max = tmax; + tmin = tree_min_len(mem_env[backs[i]].node, env->scan_env); + tmax = tree_max_len(mem_env[backs[i]].node, env->scan_env); + if (min > tmin) min = tmin; + if (max < tmax) max = tmax; } - if (r == 0) set_mml(&opt->len, min, max); + set_mml(&opt->len, min, max); } break; -#ifdef USE_SUBEXP_CALL - case NT_CALL: - if (IS_CALL_RECURSION(NCALL(node))) - set_mml(&opt->len, 0, ONIG_INFINITE_DISTANCE); +#ifdef USE_CALL + case NODE_CALL: + if (NODE_IS_RECURSION(node)) + set_mml(&opt->len, 0, INFINITE_LEN); else { OnigOptionType save = env->options; - env->options = NENCLOSE(NCALL(node)->target)->option; - r = optimize_node_left(NCALL(node)->target, opt, env); + env->options = ENCLOSURE_(NODE_BODY(node))->o.options; + r = optimize_nodes(NODE_BODY(node), opt, env); env->options = save; } break; #endif - case NT_QTFR: + case NODE_QUANT: { - int i; - OnigDistance min, max; - NodeOptInfo nopt; - QtfrNode* qn = NQTFR(node); - - r = optimize_node_left(qn->target, &nopt, env); - if (r) break; - - if (qn->lower == 0 && IS_REPEAT_INFINITE(qn->upper)) { - if (env->mmd.max == 0 && - NTYPE(qn->target) == NT_CANY && qn->greedy) { - if (IS_MULTILINE(env->options)) - add_opt_anc_info(&opt->anc, ANCHOR_ANYCHAR_STAR_ML); - else - add_opt_anc_info(&opt->anc, ANCHOR_ANYCHAR_STAR); - } + OnigLen min, max; + QuantNode* qn = QUANT_(node); + + r = optimize_nodes(NODE_BODY(node), &xo, env); + if (r != 0) break; + + if (qn->lower > 0) { + copy_node_opt_info(opt, &xo); + if (xo.exb.len > 0) { + if (xo.exb.reach_end) { + for (i = 2; i <= qn->lower && ! is_full_opt_exact(&opt->exb); i++) { + int rc = concat_opt_exact(&opt->exb, &xo.exb, enc); + if (rc > 0) break; + } + if (i < qn->lower) opt->exb.reach_end = 0; + } + } + + if (qn->lower != qn->upper) { + opt->exb.reach_end = 0; + opt->exm.reach_end = 0; + } + if (qn->lower > 1) + opt->exm.reach_end = 0; + } + + if (IS_REPEAT_INFINITE(qn->upper)) { + if (env->mmd.max == 0 && + NODE_IS_ANYCHAR(NODE_BODY(node)) && qn->greedy != 0) { + if (IS_MULTILINE(CTYPE_OPTION(NODE_QUANT_BODY(qn), env))) + add_opt_anc_info(&opt->anc, ANCHOR_ANYCHAR_INF_ML); + else + add_opt_anc_info(&opt->anc, ANCHOR_ANYCHAR_INF); + } + + max = (xo.len.max > 0 ? INFINITE_LEN : 0); } else { - if (qn->lower > 0) { - copy_node_opt_info(opt, &nopt); - if (nopt.exb.len > 0) { - if (nopt.exb.reach_end) { - for (i = 2; i <= qn->lower && - ! is_full_opt_exact_info(&opt->exb); i++) { - concat_opt_exact_info(&opt->exb, &nopt.exb, env->enc); - } - if (i < qn->lower) { - opt->exb.reach_end = 0; - } - } - } - - if (qn->lower != qn->upper) { - opt->exb.reach_end = 0; - opt->exm.reach_end = 0; - } - if (qn->lower > 1) - opt->exm.reach_end = 0; - } + max = distance_multiply(xo.len.max, qn->upper); } - min = distance_multiply(nopt.len.min, qn->lower); - if (IS_REPEAT_INFINITE(qn->upper)) - max = (nopt.len.max > 0 ? ONIG_INFINITE_DISTANCE : 0); - else - max = distance_multiply(nopt.len.max, qn->upper); - + min = distance_multiply(xo.len.min, qn->lower); set_mml(&opt->len, min, max); } break; - case NT_ENCLOSE: - { - EncloseNode* en = NENCLOSE(node); - - switch (en->type) { - case ENCLOSE_OPTION: - { - OnigOptionType save = env->options; - - env->options = en->option; - r = optimize_node_left(en->target, opt, env); - env->options = save; - } - break; - - case ENCLOSE_MEMORY: -#ifdef USE_SUBEXP_CALL - en->opt_count++; - if (en->opt_count > MAX_NODE_OPT_INFO_REF_COUNT) { - OnigDistance min, max; - - min = 0; - max = ONIG_INFINITE_DISTANCE; - if (IS_ENCLOSE_MIN_FIXED(en)) min = en->min_len; - if (IS_ENCLOSE_MAX_FIXED(en)) max = en->max_len; - set_mml(&opt->len, min, max); - } - else -#endif - { - r = optimize_node_left(en->target, opt, env); - - if (is_set_opt_anc_info(&opt->anc, ANCHOR_ANYCHAR_STAR_MASK)) { - if (BIT_STATUS_AT(env->scan_env->backrefed_mem, en->regnum)) - remove_opt_anc_info(&opt->anc, ANCHOR_ANYCHAR_STAR_MASK); - } - } - break; - - case ENCLOSE_STOP_BACKTRACK: - r = optimize_node_left(en->target, opt, env); - break; - } - } + case NODE_ENCLOSURE: + { + EnclosureNode* en = ENCLOSURE_(node); + + switch (en->type) { + case ENCLOSURE_OPTION: + { + OnigOptionType save = env->options; + + env->options = en->o.options; + r = optimize_nodes(NODE_BODY(node), opt, env); + env->options = save; + } + break; + + case ENCLOSURE_MEMORY: +#ifdef USE_CALL + en->opt_count++; + if (en->opt_count > MAX_NODE_OPT_INFO_REF_COUNT) { + OnigLen min, max; + + 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); + } + else +#endif + { + r = optimize_nodes(NODE_BODY(node), opt, env); + if (is_set_opt_anc_info(&opt->anc, ANCHOR_ANYCHAR_INF_MASK)) { + if (MEM_STATUS_AT0(env->scan_env->backrefed_mem, en->m.regnum)) + remove_opt_anc_info(&opt->anc, ANCHOR_ANYCHAR_INF_MASK); + } + } + break; + + case ENCLOSURE_STOP_BACKTRACK: + r = optimize_nodes(NODE_BODY(node), opt, env); + break; + + case ENCLOSURE_IF_ELSE: + { + OptEnv nenv; + + copy_opt_env(&nenv, env); + r = optimize_nodes(NODE_ENCLOSURE_BODY(en), &xo, &nenv); + if (r == 0) { + add_mml(&nenv.mmd, &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); + if (r == 0) { + concat_left_node_opt_info(enc, opt, &xo); + } + } + + if (IS_NOT_NULL(en->te.Else)) { + r = optimize_nodes(en->te.Else, &xo, env); + if (r == 0) + alt_merge_node_opt_info(opt, &xo, env); + } + } + } + break; + } + } + break; + + case NODE_GIMMICK: break; default: #ifdef ONIG_DEBUG - fprintf(stderr, "optimize_node_left: undefined node type %d\n", - NTYPE(node)); + fprintf(stderr, "optimize_nodes: undefined node type %d\n", NODE_TYPE(node)); #endif r = ONIGERR_TYPE_BUG; break; @@ -4900,7 +5527,7 @@ optimize_node_left(Node* node, NodeOptInfo* opt, OptEnv* env) } static int -set_optimize_exact_info(regex_t* reg, OptExactInfo* e) +set_optimize_exact(regex_t* reg, OptExact* e) { int r; @@ -4911,90 +5538,94 @@ set_optimize_exact_info(regex_t* reg, OptExactInfo* e) CHECK_NULL_RETURN_MEMERR(reg->exact); xmemcpy(reg->exact, e->s, e->len); reg->exact_end = reg->exact + e->len; - reg->optimize = ONIG_OPTIMIZE_EXACT_IC; + reg->optimize = OPTIMIZE_EXACT_IC; } else { int allow_reverse; - reg->exact = str_dup(e->s, e->s + e->len); + reg->exact = onigenc_strdup(reg->enc, e->s, e->s + e->len); CHECK_NULL_RETURN_MEMERR(reg->exact); reg->exact_end = reg->exact + e->len; allow_reverse = - ONIGENC_IS_ALLOWED_REVERSE_MATCH(reg->enc, reg->exact, reg->exact_end); + ONIGENC_IS_ALLOWED_REVERSE_MATCH(reg->enc, reg->exact, reg->exact_end); if (e->len >= 3 || (e->len >= 2 && allow_reverse)) { r = set_bm_skip(reg->exact, reg->exact_end, reg->enc, - reg->map, &(reg->int_map)); - if (r) return r; + reg->map, &(reg->int_map)); + if (r != 0) return r; reg->optimize = (allow_reverse != 0 - ? ONIG_OPTIMIZE_EXACT_BM : ONIG_OPTIMIZE_EXACT_BM_NOT_REV); + ? OPTIMIZE_EXACT_BM : OPTIMIZE_EXACT_BM_NO_REV); } else { - reg->optimize = ONIG_OPTIMIZE_EXACT; + reg->optimize = OPTIMIZE_EXACT; } } reg->dmin = e->mmd.min; reg->dmax = e->mmd.max; - if (reg->dmin != ONIG_INFINITE_DISTANCE) { - reg->threshold_len = reg->dmin + (int)(reg->exact_end - reg->exact); + if (reg->dmin != INFINITE_LEN) { + reg->threshold_len = reg->dmin + (int )(reg->exact_end - reg->exact); } return 0; } static void -set_optimize_map_info(regex_t* reg, OptMapInfo* m) +set_optimize_map(regex_t* reg, OptMap* m) { int i; for (i = 0; i < ONIG_CHAR_TABLE_SIZE; i++) reg->map[i] = m->map[i]; - reg->optimize = ONIG_OPTIMIZE_MAP; + reg->optimize = OPTIMIZE_MAP; reg->dmin = m->mmd.min; reg->dmax = m->mmd.max; - if (reg->dmin != ONIG_INFINITE_DISTANCE) { + if (reg->dmin != INFINITE_LEN) { reg->threshold_len = reg->dmin + 1; } } static void -set_sub_anchor(regex_t* reg, OptAncInfo* anc) +set_sub_anchor(regex_t* reg, OptAnc* anc) { - reg->sub_anchor |= anc->left_anchor & ANCHOR_BEGIN_LINE; - reg->sub_anchor |= anc->right_anchor & ANCHOR_END_LINE; + reg->sub_anchor |= anc->left & ANCHOR_BEGIN_LINE; + reg->sub_anchor |= anc->right & ANCHOR_END_LINE; } -#ifdef ONIG_DEBUG +#if defined(ONIG_DEBUG_COMPILE) || defined(ONIG_DEBUG_MATCH) static void print_optimize_info(FILE* f, regex_t* reg); #endif static int set_optimize_info_from_tree(Node* node, regex_t* reg, ScanEnv* scan_env) { - int r; - NodeOptInfo opt; + NodeOpt opt; OptEnv env; env.enc = reg->enc; env.options = reg->options; env.case_fold_flag = reg->case_fold_flag; - env.scan_env = scan_env; + env.scan_env = scan_env; clear_mml(&env.mmd); - r = optimize_node_left(node, &opt, &env); - if (r) return r; + r = optimize_nodes(node, &opt, &env); + if (r != 0) return r; + + reg->anchor = opt.anc.left & (ANCHOR_BEGIN_BUF | + ANCHOR_BEGIN_POSITION | ANCHOR_ANYCHAR_INF | ANCHOR_ANYCHAR_INF_ML | + ANCHOR_LOOK_BEHIND); - reg->anchor = opt.anc.left_anchor & (ANCHOR_BEGIN_BUF | - ANCHOR_BEGIN_POSITION | ANCHOR_ANYCHAR_STAR | ANCHOR_ANYCHAR_STAR_ML); + if ((opt.anc.left & (ANCHOR_LOOK_BEHIND | ANCHOR_PREC_READ_NOT)) != 0) + reg->anchor &= ~ANCHOR_ANYCHAR_INF_ML; - reg->anchor |= opt.anc.right_anchor & (ANCHOR_END_BUF | ANCHOR_SEMI_END_BUF); + reg->anchor |= opt.anc.right & (ANCHOR_END_BUF | ANCHOR_SEMI_END_BUF | + ANCHOR_PREC_READ_NOT); if (reg->anchor & (ANCHOR_END_BUF | ANCHOR_SEMI_END_BUF)) { reg->anchor_dmin = opt.len.min; @@ -5002,25 +5633,24 @@ set_optimize_info_from_tree(Node* node, regex_t* reg, ScanEnv* scan_env) } if (opt.exb.len > 0 || opt.exm.len > 0) { - select_opt_exact_info(reg->enc, &opt.exb, &opt.exm); - if (opt.map.value > 0 && - comp_opt_exact_or_map_info(&opt.exb, &opt.map) > 0) { + select_opt_exact(reg->enc, &opt.exb, &opt.exm); + if (opt.map.value > 0 && comp_opt_exact_or_map(&opt.exb, &opt.map) > 0) { goto set_map; } else { - r = set_optimize_exact_info(reg, &opt.exb); + r = set_optimize_exact(reg, &opt.exb); set_sub_anchor(reg, &opt.exb.anc); } } else if (opt.map.value > 0) { set_map: - set_optimize_map_info(reg, &opt.map); + set_optimize_map(reg, &opt.map); set_sub_anchor(reg, &opt.map.anc); } else { - reg->sub_anchor |= opt.anc.left_anchor & ANCHOR_BEGIN_LINE; + reg->sub_anchor |= opt.anc.left & ANCHOR_BEGIN_LINE; if (opt.len.max == 0) - reg->sub_anchor |= opt.anc.right_anchor & ANCHOR_END_LINE; + reg->sub_anchor |= opt.anc.right & ANCHOR_END_LINE; } #if defined(ONIG_DEBUG_COMPILE) || defined(ONIG_DEBUG_MATCH) @@ -5032,7 +5662,7 @@ set_optimize_info_from_tree(Node* node, regex_t* reg, ScanEnv* scan_env) static void clear_optimize_info(regex_t* reg) { - reg->optimize = ONIG_OPTIMIZE_NONE; + reg->optimize = OPTIMIZE_NONE; reg->anchor = 0; reg->anchor_dmin = 0; reg->anchor_dmax = 0; @@ -5048,7 +5678,7 @@ clear_optimize_info(regex_t* reg) #ifdef ONIG_DEBUG static void print_enc_string(FILE* fp, OnigEncoding enc, - const UChar *s, const UChar *end) + const UChar *s, const UChar *end) { fprintf(fp, "\nPATTERN: /"); @@ -5060,10 +5690,10 @@ static void print_enc_string(FILE* fp, OnigEncoding enc, while (p < end) { code = ONIGENC_MBC_TO_CODE(enc, p, end); if (code >= 0x80) { - fprintf(fp, " 0x%04x ", (int )code); + fprintf(fp, " 0x%04x ", (int )code); } else { - fputc((int )code, fp); + fputc((int )code, fp); } p += enclen(enc, p); @@ -5079,17 +5709,21 @@ static void print_enc_string(FILE* fp, OnigEncoding enc, fprintf(fp, "/\n"); } +#endif /* ONIG_DEBUG */ + +#if defined(ONIG_DEBUG_COMPILE) || defined(ONIG_DEBUG_MATCH) + static void -print_distance_range(FILE* f, OnigDistance a, OnigDistance b) +print_distance_range(FILE* f, OnigLen a, OnigLen b) { - if (a == ONIG_INFINITE_DISTANCE) + if (a == INFINITE_LEN) fputs("inf", f); else fprintf(f, "(%u)", a); fputs("-", f); - if (b == ONIG_INFINITE_DISTANCE) + if (b == INFINITE_LEN) fputs("inf", f); else fprintf(f, "(%u)", b); @@ -5131,14 +5765,14 @@ print_anchor(FILE* f, int anchor) q = 1; fprintf(f, "end-line"); } - if (anchor & ANCHOR_ANYCHAR_STAR) { + if (anchor & ANCHOR_ANYCHAR_INF) { if (q) fprintf(f, ", "); q = 1; - fprintf(f, "anychar-star"); + fprintf(f, "anychar-inf"); } - if (anchor & ANCHOR_ANYCHAR_STAR_ML) { + if (anchor & ANCHOR_ANYCHAR_INF_ML) { if (q) fprintf(f, ", "); - fprintf(f, "anychar-star-pl"); + fprintf(f, "anychar-inf-ml"); } fprintf(f, "]"); @@ -5168,9 +5802,9 @@ print_optimize_info(FILE* f, regex_t* reg) for (p = reg->exact; p < reg->exact_end; p++) { fputc(*p, f); } - fprintf(f, "]: length: %d\n", (reg->exact_end - reg->exact)); + fprintf(f, "]: length: %ld\n", (reg->exact_end - reg->exact)); } - else if (reg->optimize & ONIG_OPTIMIZE_MAP) { + else if (reg->optimize & OPTIMIZE_MAP) { int c, i, n = 0; for (i = 0; i < ONIG_CHAR_TABLE_SIZE; i++) @@ -5181,7 +5815,7 @@ print_optimize_info(FILE* f, regex_t* reg) c = 0; fputc('[', f); for (i = 0; i < ONIG_CHAR_TABLE_SIZE; i++) { - if (reg->map[i] != 0) { + if (reg->map[i] != 0) { if (c > 0) fputs(", ", f); c++; if (ONIGENC_MBC_MAXLEN(reg->enc) == 1 && @@ -5195,7 +5829,67 @@ print_optimize_info(FILE* f, regex_t* reg) } } } -#endif /* ONIG_DEBUG */ +#endif + + +extern RegexExt* +onig_get_regex_ext(regex_t* reg) +{ + if (IS_NULL(REG_EXTP(reg))) { + RegexExt* ext = (RegexExt* )xmalloc(sizeof(*ext)); + if (IS_NULL(ext)) return 0; + + ext->pattern = 0; + ext->pattern_end = 0; +#ifdef USE_CALLOUT + ext->tag_table = 0; + ext->callout_num = 0; + ext->callout_list_alloc = 0; + ext->callout_list = 0; +#endif + + REG_EXTPL(reg) = (void* )ext; + } + + return REG_EXTP(reg); +} + +static void +free_regex_ext(RegexExt* ext) +{ + if (IS_NOT_NULL(ext)) { + if (IS_NOT_NULL(ext->pattern)) + xfree((void* )ext->pattern); + +#ifdef USE_CALLOUT + if (IS_NOT_NULL(ext->tag_table)) + onig_callout_tag_table_free(ext->tag_table); + + if (IS_NOT_NULL(ext->callout_list)) + onig_free_reg_callout_list(ext->callout_num, ext->callout_list); +#endif + + xfree(ext); + } +} + +extern int +onig_ext_set_pattern(regex_t* reg, const UChar* pattern, const UChar* pattern_end) +{ + RegexExt* ext; + UChar* s; + + ext = onig_get_regex_ext(reg); + CHECK_NULL_RETURN_MEMERR(ext); + + s = onigenc_strdup(reg->enc, pattern, pattern_end); + CHECK_NULL_RETURN_MEMERR(s); + + ext->pattern = s; + ext->pattern_end = s + (pattern_end - pattern); + + return ONIG_NORMAL; +} extern void @@ -5207,11 +5901,12 @@ onig_free_body(regex_t* reg) if (IS_NOT_NULL(reg->int_map)) xfree(reg->int_map); if (IS_NOT_NULL(reg->int_map_backward)) xfree(reg->int_map_backward); if (IS_NOT_NULL(reg->repeat_range)) xfree(reg->repeat_range); - if (IS_NOT_NULL(reg->chain)) onig_free(reg->chain); + if (IS_NOT_NULL(REG_EXTP(reg))) { + free_regex_ext(REG_EXTP(reg)); + REG_EXTPL(reg) = 0; + } -#ifdef USE_NAMED_GROUP onig_names_free(reg); -#endif } } @@ -5225,7 +5920,6 @@ onig_free(regex_t* reg) } #define REGEX_TRANSFER(to,from) do {\ - (to)->state = ONIG_STATE_MODIFY;\ onig_free_body(to);\ xmemcpy(to, from, sizeof(regex_t));\ xfree(from);\ @@ -5234,76 +5928,41 @@ onig_free(regex_t* reg) extern void onig_transfer(regex_t* to, regex_t* from) { - THREAD_ATOMIC_START; REGEX_TRANSFER(to, from); - THREAD_ATOMIC_END; -} - -#define REGEX_CHAIN_HEAD(reg) do {\ - while (IS_NOT_NULL((reg)->chain)) {\ - (reg) = (reg)->chain;\ - }\ -} while (0) - -extern void -onig_chain_link_add(regex_t* to, regex_t* add) -{ - THREAD_ATOMIC_START; - REGEX_CHAIN_HEAD(to); - to->chain = add; - THREAD_ATOMIC_END; } -extern void -onig_chain_reduce(regex_t* reg) -{ - regex_t *head, *prev; - - prev = reg; - head = prev->chain; - if (IS_NOT_NULL(head)) { - reg->state = ONIG_STATE_MODIFY; - while (IS_NOT_NULL(head->chain)) { - prev = head; - head = head->chain; - } - prev->chain = (regex_t* )NULL; - REGEX_TRANSFER(reg, head); - } -} -#ifdef ONIG_DEBUG -static void print_compiled_byte_code_list P_((FILE* f, regex_t* reg)); -#endif -#ifdef ONIG_DEBUG_PARSE_TREE +#ifdef ONIG_DEBUG_PARSE static void print_tree P_((FILE* f, Node* node)); #endif extern int onig_compile(regex_t* reg, const UChar* pattern, const UChar* pattern_end, - OnigErrorInfo* einfo) + OnigErrorInfo* einfo) { #define COMPILE_INIT_SIZE 20 int r, init_size; Node* root; ScanEnv scan_env; -#ifdef USE_SUBEXP_CALL +#ifdef USE_CALL UnsetAddrList uslist; #endif - if (IS_NOT_NULL(einfo)) einfo->par = (UChar* )NULL; - - reg->state = ONIG_STATE_COMPILING; + root = 0; + if (IS_NOT_NULL(einfo)) { + einfo->enc = reg->enc; + einfo->par = (UChar* )NULL; + } #ifdef ONIG_DEBUG print_enc_string(stderr, reg->enc, pattern, pattern_end); #endif if (reg->alloc == 0) { - init_size = ((int)(pattern_end - pattern)) * 2; + init_size = (int )(pattern_end - pattern) * 2; if (init_size <= 0) init_size = COMPILE_INIT_SIZE; - r = BBUF_INIT(reg, init_size); + r = BB_INIT(reg, init_size); if (r != 0) goto end; } else @@ -5314,18 +5973,14 @@ onig_compile(regex_t* reg, const UChar* pattern, const UChar* pattern_end, reg->num_null_check = 0; reg->repeat_range_alloc = 0; reg->repeat_range = (OnigRepeatRange* )NULL; -#ifdef USE_COMBINATION_EXPLOSION_CHECK - reg->num_comb_exp_check = 0; -#endif - r = onig_parse_make_tree(&root, pattern, pattern_end, reg, &scan_env); - if (r != 0 || root == NULL) goto err; + r = onig_parse_tree(&root, pattern, pattern_end, reg, &scan_env); + if (r != 0) goto err; -#ifdef USE_NAMED_GROUP /* 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)) { + ! ONIG_IS_OPTION_ON(reg->options, ONIG_OPTION_CAPTURE_GROUP)) { if (scan_env.num_named != scan_env.num_mem) r = disable_noname_group_capture(&root, reg, &scan_env); else @@ -5333,30 +5988,34 @@ onig_compile(regex_t* reg, const UChar* pattern, const UChar* pattern_end, if (r != 0) goto err; } -#endif -#ifdef USE_SUBEXP_CALL + r = check_backrefs(root, &scan_env); + if (r != 0) goto err; + +#ifdef USE_CALL if (scan_env.num_call > 0) { r = unset_addr_list_init(&uslist, scan_env.num_call); if (r != 0) goto err; scan_env.unset_addr_list = &uslist; - r = setup_subexp_call(root, &scan_env); + r = setup_call(root, &scan_env, 0); + if (r != 0) goto err_unset; + r = setup_call2(root); if (r != 0) goto err_unset; - r = subexp_recursive_check_trav(root, &scan_env); + r = recursive_call_check_trav(root, &scan_env, 0); if (r < 0) goto err_unset; - r = subexp_inf_recursive_check_trav(root, &scan_env); + r = infinite_recursive_call_check_trav(root, &scan_env); if (r != 0) goto err_unset; - reg->num_call = scan_env.num_call; + setup_called_state(root, 0); } - else - reg->num_call = 0; + + reg->num_call = scan_env.num_call; #endif r = setup_tree(root, reg, 0, &scan_env); if (r != 0) goto err_unset; -#ifdef ONIG_DEBUG_PARSE_TREE +#ifdef ONIG_DEBUG_PARSE print_tree(stderr, root); #endif @@ -5364,38 +6023,12 @@ onig_compile(regex_t* reg, const UChar* pattern, const UChar* pattern_end, reg->bt_mem_start = scan_env.bt_mem_start; reg->bt_mem_start |= reg->capture_history; if (IS_FIND_CONDITION(reg->options)) - BIT_STATUS_ON_ALL(reg->bt_mem_end); + MEM_STATUS_ON_ALL(reg->bt_mem_end); else { reg->bt_mem_end = scan_env.bt_mem_end; reg->bt_mem_end |= reg->capture_history; } - -#ifdef USE_COMBINATION_EXPLOSION_CHECK - if (scan_env.backrefed_mem == 0 -#ifdef USE_SUBEXP_CALL - || scan_env.num_call == 0 -#endif - ) { - setup_comb_exp_check(root, 0, &scan_env); -#ifdef USE_SUBEXP_CALL - if (scan_env.has_recursion != 0) { - scan_env.num_comb_exp_check = 0; - } - else -#endif - if (scan_env.comb_exp_max_regnum > 0) { - int i; - for (i = 1; i <= scan_env.comb_exp_max_regnum; i++) { - if (BIT_STATUS_AT(scan_env.backrefed_mem, i) != 0) { - scan_env.num_comb_exp_check = 0; - break; - } - } - } - } - - reg->num_comb_exp_check = scan_env.num_comb_exp_check; -#endif + reg->bt_mem_start |= reg->bt_mem_end; clear_optimize_info(reg); #ifndef ONIG_DONT_OPTIMIZE @@ -5403,32 +6036,45 @@ onig_compile(regex_t* reg, const UChar* pattern, const UChar* pattern_end, if (r != 0) goto err_unset; #endif - if (IS_NOT_NULL(scan_env.mem_nodes_dynamic)) { - xfree(scan_env.mem_nodes_dynamic); - scan_env.mem_nodes_dynamic = (Node** )NULL; + if (IS_NOT_NULL(scan_env.mem_env_dynamic)) { + xfree(scan_env.mem_env_dynamic); + scan_env.mem_env_dynamic = (MemEnv* )NULL; } - r = compile_tree(root, reg); + r = compile_tree(root, reg, &scan_env); if (r == 0) { + if (scan_env.keep_num > 0) { + r = add_opcode(reg, OP_UPDATE_VAR); + if (r != 0) goto err; + r = add_update_var_type(reg, UPDATE_VAR_KEEP_FROM_STACK_LAST); + if (r != 0) goto err; + r = add_mem_num(reg, 0 /* not used */); + if (r != 0) goto err; + } + r = add_opcode(reg, OP_END); -#ifdef USE_SUBEXP_CALL +#ifdef USE_CALL if (scan_env.num_call > 0) { - r = unset_addr_list_fix(&uslist, reg); + r = fix_unset_addr_list(&uslist, reg); unset_addr_list_end(&uslist); - if (r) goto err; + if (r != 0) goto err; } #endif - if ((reg->num_repeat != 0) || (reg->bt_mem_end != 0)) + if ((reg->num_repeat != 0) || (reg->bt_mem_end != 0) +#ifdef USE_CALLOUT + || (IS_NOT_NULL(REG_EXTP(reg)) && REG_EXTP(reg)->callout_num != 0) +#endif + ) reg->stack_pop_level = STACK_POP_LEVEL_ALL; else { if (reg->bt_mem_start != 0) - reg->stack_pop_level = STACK_POP_LEVEL_MEM_START; + reg->stack_pop_level = STACK_POP_LEVEL_MEM_START; else - reg->stack_pop_level = STACK_POP_LEVEL_FREE; + reg->stack_pop_level = STACK_POP_LEVEL_FREE; } } -#ifdef USE_SUBEXP_CALL +#ifdef USE_CALL else if (scan_env.num_call > 0) { unset_addr_list_end(&uslist); } @@ -5436,18 +6082,15 @@ onig_compile(regex_t* reg, const UChar* pattern, const UChar* pattern_end, onig_node_free(root); #ifdef ONIG_DEBUG_COMPILE -#ifdef USE_NAMED_GROUP onig_print_names(stderr, reg); -#endif - print_compiled_byte_code_list(stderr, reg); + onig_print_compiled_byte_code_list(stderr, reg); #endif end: - reg->state = ONIG_STATE_NORMAL; return r; err_unset: -#ifdef USE_SUBEXP_CALL +#ifdef USE_CALL if (scan_env.num_call > 0) { unset_addr_list_end(&uslist); } @@ -5455,48 +6098,39 @@ onig_compile(regex_t* reg, const UChar* pattern, const UChar* pattern_end, err: if (IS_NOT_NULL(scan_env.error)) { if (IS_NOT_NULL(einfo)) { - einfo->enc = scan_env.enc; einfo->par = scan_env.error; einfo->par_end = scan_env.error_end; } } onig_node_free(root); - if (IS_NOT_NULL(scan_env.mem_nodes_dynamic)) - xfree(scan_env.mem_nodes_dynamic); + if (IS_NOT_NULL(scan_env.mem_env_dynamic)) + xfree(scan_env.mem_env_dynamic); return r; } -#ifdef USE_RECOMPILE_API + +static int onig_inited = 0; + extern int -onig_recompile(regex_t* reg, const UChar* pattern, const UChar* pattern_end, - OnigOptionType option, OnigEncoding enc, OnigSyntaxType* syntax, - OnigErrorInfo* einfo) +onig_reg_init(regex_t* reg, OnigOptionType option, OnigCaseFoldType case_fold_flag, + OnigEncoding enc, OnigSyntaxType* syntax) { int r; - regex_t *new_reg; - r = onig_new(&new_reg, pattern, pattern_end, option, enc, syntax, einfo); - if (r) return r; - if (ONIG_STATE(reg) == ONIG_STATE_NORMAL) { - onig_transfer(reg, new_reg); - } - else { - onig_chain_link_add(reg, new_reg); - } - return 0; -} -#endif + xmemset(reg, 0, sizeof(*reg)); -static int onig_inited = 0; + if (onig_inited == 0) { +#if 0 + return ONIGERR_LIBRARY_IS_NOT_INITIALIZED; +#else + r = onig_initialize(&enc, 1); + if (r != 0) + return ONIGERR_FAIL_TO_INITIALIZE; -extern int -onig_reg_init(regex_t* reg, OnigOptionType option, - OnigCaseFoldType case_fold_flag, - OnigEncoding enc, OnigSyntaxType* syntax) -{ - if (! onig_inited) - onig_init(); + onig_warning("You didn't call onig_initialize() explicitly"); +#endif + } if (IS_NULL(reg)) return ONIGERR_INVALID_ARGUMENT; @@ -5509,8 +6143,6 @@ onig_reg_init(regex_t* reg, OnigOptionType option, return ONIGERR_INVALID_COMBINATION_OF_OPTIONS; } - (reg)->state = ONIG_STATE_MODIFY; - if ((option & ONIG_OPTION_NEGATE_SINGLELINE) != 0) { option |= syntax->options; option &= ~ONIG_OPTION_SINGLELINE; @@ -5525,7 +6157,7 @@ onig_reg_init(regex_t* reg, OnigOptionType option, (reg)->exact = (UChar* )NULL; (reg)->int_map = (int* )NULL; (reg)->int_map_backward = (int* )NULL; - (reg)->chain = (regex_t* )NULL; + REG_EXTPL(reg) = NULL; (reg)->p = (UChar* )NULL; (reg)->alloc = 0; @@ -5537,14 +6169,15 @@ onig_reg_init(regex_t* reg, OnigOptionType option, } extern int -onig_new_without_alloc(regex_t* reg, const UChar* pattern, - const UChar* pattern_end, OnigOptionType option, OnigEncoding enc, - OnigSyntaxType* syntax, OnigErrorInfo* einfo) +onig_new_without_alloc(regex_t* reg, + const UChar* pattern, const UChar* pattern_end, + OnigOptionType option, OnigEncoding enc, + OnigSyntaxType* syntax, OnigErrorInfo* einfo) { int r; r = onig_reg_init(reg, option, ONIGENC_CASE_FOLD_DEFAULT, enc, syntax); - if (r) return r; + if (r != 0) return r; r = onig_compile(reg, pattern, pattern_end, einfo); return r; @@ -5552,8 +6185,8 @@ onig_new_without_alloc(regex_t* reg, const UChar* pattern, extern int onig_new(regex_t** reg, const UChar* pattern, const UChar* pattern_end, - OnigOptionType option, OnigEncoding enc, OnigSyntaxType* syntax, - OnigErrorInfo* einfo) + OnigOptionType option, OnigEncoding enc, OnigSyntaxType* syntax, + OnigErrorInfo* einfo) { int r; @@ -5561,10 +6194,10 @@ onig_new(regex_t** reg, const UChar* pattern, const UChar* pattern_end, if (IS_NULL(*reg)) return ONIGERR_MEMORY; r = onig_reg_init(*reg, option, ONIGENC_CASE_FOLD_DEFAULT, enc, syntax); - if (r) goto err; + if (r != 0) goto err; r = onig_compile(*reg, pattern, pattern_end, einfo); - if (r) { + if (r != 0) { err: onig_free(*reg); *reg = NULL; @@ -5572,37 +6205,41 @@ onig_new(regex_t** reg, const UChar* pattern, const UChar* pattern_end, return r; } - extern int -onig_init(void) +onig_initialize(OnigEncoding encodings[], int n) { + int i; + int r; + if (onig_inited != 0) return 0; - THREAD_SYSTEM_INIT; - THREAD_ATOMIC_START; + onigenc_init(); onig_inited = 1; - onigenc_init(); - /* onigenc_set_default_caseconv_table((UChar* )0); */ - -#ifdef ONIG_DEBUG_STATISTICS - onig_statistics_init(); -#endif + for (i = 0; i < n; i++) { + OnigEncoding enc = encodings[i]; + r = onig_initialize_encoding(enc); + if (r != 0) + return r; + } - THREAD_ATOMIC_END; - return 0; + return ONIG_NORMAL; } +typedef struct EndCallListItem { + struct EndCallListItem* next; + void (*func)(void); +} EndCallListItemType; -static OnigEndCallListItemType* EndCallTop; +static EndCallListItemType* EndCallTop; extern void onig_add_end_call(void (*func)(void)) { - OnigEndCallListItemType* item; + EndCallListItemType* item; - item = (OnigEndCallListItemType* )xmalloc(sizeof(*item)); + item = (EndCallListItemType* )xmalloc(sizeof(*item)); if (item == 0) return ; item->next = EndCallTop; @@ -5614,7 +6251,7 @@ extern void onig_add_end_call(void (*func)(void)) static void exec_end_call_list(void) { - OnigEndCallListItemType* prev; + EndCallListItemType* prev; void (*func)(void); while (EndCallTop != 0) { @@ -5630,26 +6267,16 @@ exec_end_call_list(void) extern int onig_end(void) { - THREAD_ATOMIC_START; - exec_end_call_list(); -#ifdef ONIG_DEBUG_STATISTICS - onig_print_statistics(stderr); +#ifdef USE_CALLOUT + onig_global_callout_names_free(); #endif -#ifdef USE_SHARED_CCLASS_TABLE - onig_free_shared_cclass_table(); -#endif - -#ifdef USE_PARSE_TREE_NODE_RECYCLE - onig_free_node_list(); -#endif + onigenc_end(); onig_inited = 0; - THREAD_ATOMIC_END; - THREAD_SYSTEM_END; return 0; } @@ -5675,9 +6302,10 @@ onig_is_in_code_range(const UChar* p, OnigCodePoint code) } extern int -onig_is_code_in_cc_len(int elen, OnigCodePoint code, CClassNode* cc) +onig_is_code_in_cc_len(int elen, OnigCodePoint code, /* CClassNode* */ void* cc_arg) { int found; + CClassNode* cc = (CClassNode* )cc_arg; if (elen > 1 || (code >= SINGLE_BYTE_SIZE)) { if (IS_NULL(cc->mbuf)) { @@ -5712,141 +6340,7 @@ onig_is_code_in_cc(OnigEncoding enc, OnigCodePoint code, CClassNode* cc) } -#ifdef ONIG_DEBUG - -/* arguments type */ -#define ARG_SPECIAL -1 -#define ARG_NON 0 -#define ARG_RELADDR 1 -#define ARG_ABSADDR 2 -#define ARG_LENGTH 3 -#define ARG_MEMNUM 4 -#define ARG_OPTION 5 -#define ARG_STATE_CHECK 6 - -OnigOpInfoType OnigOpInfo[] = { - { OP_FINISH, "finish", ARG_NON }, - { OP_END, "end", ARG_NON }, - { OP_EXACT1, "exact1", ARG_SPECIAL }, - { OP_EXACT2, "exact2", ARG_SPECIAL }, - { OP_EXACT3, "exact3", ARG_SPECIAL }, - { OP_EXACT4, "exact4", ARG_SPECIAL }, - { OP_EXACT5, "exact5", ARG_SPECIAL }, - { OP_EXACTN, "exactn", ARG_SPECIAL }, - { OP_EXACTMB2N1, "exactmb2-n1", ARG_SPECIAL }, - { OP_EXACTMB2N2, "exactmb2-n2", ARG_SPECIAL }, - { OP_EXACTMB2N3, "exactmb2-n3", ARG_SPECIAL }, - { OP_EXACTMB2N, "exactmb2-n", ARG_SPECIAL }, - { OP_EXACTMB3N, "exactmb3n" , ARG_SPECIAL }, - { OP_EXACTMBN, "exactmbn", ARG_SPECIAL }, - { OP_EXACT1_IC, "exact1-ic", ARG_SPECIAL }, - { OP_EXACTN_IC, "exactn-ic", ARG_SPECIAL }, - { OP_CCLASS, "cclass", ARG_SPECIAL }, - { OP_CCLASS_MB, "cclass-mb", ARG_SPECIAL }, - { OP_CCLASS_MIX, "cclass-mix", ARG_SPECIAL }, - { OP_CCLASS_NOT, "cclass-not", ARG_SPECIAL }, - { OP_CCLASS_MB_NOT, "cclass-mb-not", ARG_SPECIAL }, - { OP_CCLASS_MIX_NOT, "cclass-mix-not", ARG_SPECIAL }, - { OP_CCLASS_NODE, "cclass-node", ARG_SPECIAL }, - { OP_ANYCHAR, "anychar", ARG_NON }, - { OP_ANYCHAR_ML, "anychar-ml", ARG_NON }, - { OP_ANYCHAR_STAR, "anychar*", ARG_NON }, - { OP_ANYCHAR_ML_STAR, "anychar-ml*", ARG_NON }, - { OP_ANYCHAR_STAR_PEEK_NEXT, "anychar*-peek-next", ARG_SPECIAL }, - { OP_ANYCHAR_ML_STAR_PEEK_NEXT, "anychar-ml*-peek-next", ARG_SPECIAL }, - { OP_WORD, "word", ARG_NON }, - { OP_NOT_WORD, "not-word", ARG_NON }, - { OP_WORD_BOUND, "word-bound", ARG_NON }, - { OP_NOT_WORD_BOUND, "not-word-bound", ARG_NON }, - { OP_WORD_BEGIN, "word-begin", ARG_NON }, - { OP_WORD_END, "word-end", ARG_NON }, - { OP_BEGIN_BUF, "begin-buf", ARG_NON }, - { OP_END_BUF, "end-buf", ARG_NON }, - { OP_BEGIN_LINE, "begin-line", ARG_NON }, - { OP_END_LINE, "end-line", ARG_NON }, - { OP_SEMI_END_BUF, "semi-end-buf", ARG_NON }, - { OP_BEGIN_POSITION, "begin-position", ARG_NON }, - { OP_BACKREF1, "backref1", ARG_NON }, - { OP_BACKREF2, "backref2", ARG_NON }, - { OP_BACKREFN, "backrefn", ARG_MEMNUM }, - { OP_BACKREFN_IC, "backrefn-ic", ARG_SPECIAL }, - { OP_BACKREF_MULTI, "backref_multi", ARG_SPECIAL }, - { OP_BACKREF_MULTI_IC, "backref_multi-ic", ARG_SPECIAL }, - { OP_BACKREF_WITH_LEVEL, "backref_at_level", ARG_SPECIAL }, - { OP_MEMORY_START_PUSH, "mem-start-push", ARG_MEMNUM }, - { OP_MEMORY_START, "mem-start", ARG_MEMNUM }, - { OP_MEMORY_END_PUSH, "mem-end-push", ARG_MEMNUM }, - { OP_MEMORY_END_PUSH_REC, "mem-end-push-rec", ARG_MEMNUM }, - { OP_MEMORY_END, "mem-end", ARG_MEMNUM }, - { OP_MEMORY_END_REC, "mem-end-rec", ARG_MEMNUM }, - { OP_SET_OPTION_PUSH, "set-option-push", ARG_OPTION }, - { OP_SET_OPTION, "set-option", ARG_OPTION }, - { OP_FAIL, "fail", ARG_NON }, - { OP_JUMP, "jump", ARG_RELADDR }, - { OP_PUSH, "push", ARG_RELADDR }, - { OP_POP, "pop", ARG_NON }, - { OP_PUSH_OR_JUMP_EXACT1, "push-or-jump-e1", ARG_SPECIAL }, - { OP_PUSH_IF_PEEK_NEXT, "push-if-peek-next", ARG_SPECIAL }, - { OP_REPEAT, "repeat", ARG_SPECIAL }, - { OP_REPEAT_NG, "repeat-ng", ARG_SPECIAL }, - { OP_REPEAT_INC, "repeat-inc", ARG_MEMNUM }, - { OP_REPEAT_INC_NG, "repeat-inc-ng", ARG_MEMNUM }, - { OP_REPEAT_INC_SG, "repeat-inc-sg", ARG_MEMNUM }, - { OP_REPEAT_INC_NG_SG, "repeat-inc-ng-sg", ARG_MEMNUM }, - { OP_NULL_CHECK_START, "null-check-start", ARG_MEMNUM }, - { OP_NULL_CHECK_END, "null-check-end", ARG_MEMNUM }, - { OP_NULL_CHECK_END_MEMST,"null-check-end-memst", ARG_MEMNUM }, - { OP_NULL_CHECK_END_MEMST_PUSH,"null-check-end-memst-push", ARG_MEMNUM }, - { OP_PUSH_POS, "push-pos", ARG_NON }, - { OP_POP_POS, "pop-pos", ARG_NON }, - { OP_PUSH_POS_NOT, "push-pos-not", ARG_RELADDR }, - { OP_FAIL_POS, "fail-pos", ARG_NON }, - { OP_PUSH_STOP_BT, "push-stop-bt", ARG_NON }, - { OP_POP_STOP_BT, "pop-stop-bt", ARG_NON }, - { OP_LOOK_BEHIND, "look-behind", ARG_SPECIAL }, - { OP_PUSH_LOOK_BEHIND_NOT, "push-look-behind-not", ARG_SPECIAL }, - { OP_FAIL_LOOK_BEHIND_NOT, "fail-look-behind-not", ARG_NON }, - { OP_CALL, "call", ARG_ABSADDR }, - { OP_RETURN, "return", ARG_NON }, - { OP_STATE_CHECK_PUSH, "state-check-push", ARG_SPECIAL }, - { OP_STATE_CHECK_PUSH_OR_JUMP, "state-check-push-or-jump", ARG_SPECIAL }, - { OP_STATE_CHECK, "state-check", ARG_STATE_CHECK }, - { OP_STATE_CHECK_ANYCHAR_STAR, "state-check-anychar*", ARG_STATE_CHECK }, - { OP_STATE_CHECK_ANYCHAR_ML_STAR, - "state-check-anychar-ml*", ARG_STATE_CHECK }, - { -1, "", ARG_NON } -}; - -static char* -op2name(int opcode) -{ - int i; - - for (i = 0; OnigOpInfo[i].opcode >= 0; i++) { - if (opcode == OnigOpInfo[i].opcode) - return OnigOpInfo[i].name; - } - return ""; -} - -static int -op2arg_type(int opcode) -{ - int i; - - for (i = 0; OnigOpInfo[i].opcode >= 0; i++) { - if (opcode == OnigOpInfo[i].opcode) - return OnigOpInfo[i].arg_type; - } - return ARG_SPECIAL; -} - -static void -Indent(FILE* f, int indent) -{ - int i; - for (i = 0; i < indent; i++) putc(' ', f); -} +#ifdef ONIG_DEBUG_PARSE static void p_string(FILE* f, int len, UChar* s) @@ -5856,288 +6350,19 @@ p_string(FILE* f, int len, UChar* s) } static void -p_len_string(FILE* f, LengthType len, int mb_len, UChar* s) -{ - int x = len * mb_len; - - fprintf(f, ":%d:", len); - while (x-- > 0) { fputc(*s++, f); } -} - -extern void -onig_print_compiled_byte_code(FILE* f, UChar* bp, UChar** nextp, - OnigEncoding enc) -{ - int i, n, arg_type; - RelAddrType addr; - LengthType len; - MemNumType mem; - StateCheckNumType scn; - OnigCodePoint code; - UChar *q; - - fprintf(f, "[%s", op2name(*bp)); - arg_type = op2arg_type(*bp); - if (arg_type != ARG_SPECIAL) { - bp++; - switch (arg_type) { - case ARG_NON: - break; - case ARG_RELADDR: - GET_RELADDR_INC(addr, bp); - fprintf(f, ":(%d)", addr); - break; - case ARG_ABSADDR: - GET_ABSADDR_INC(addr, bp); - fprintf(f, ":(%d)", addr); - break; - case ARG_LENGTH: - GET_LENGTH_INC(len, bp); - fprintf(f, ":%d", len); - break; - case ARG_MEMNUM: - mem = *((MemNumType* )bp); - bp += SIZE_MEMNUM; - fprintf(f, ":%d", mem); - break; - case ARG_OPTION: - { - OnigOptionType option = *((OnigOptionType* )bp); - bp += SIZE_OPTION; - fprintf(f, ":%d", option); - } - break; - - case ARG_STATE_CHECK: - scn = *((StateCheckNumType* )bp); - bp += SIZE_STATE_CHECK_NUM; - fprintf(f, ":%d", scn); - break; - } - } - else { - switch (*bp++) { - case OP_EXACT1: - case OP_ANYCHAR_STAR_PEEK_NEXT: - case OP_ANYCHAR_ML_STAR_PEEK_NEXT: - p_string(f, 1, bp++); break; - case OP_EXACT2: - p_string(f, 2, bp); bp += 2; break; - case OP_EXACT3: - p_string(f, 3, bp); bp += 3; break; - case OP_EXACT4: - p_string(f, 4, bp); bp += 4; break; - case OP_EXACT5: - p_string(f, 5, bp); bp += 5; break; - case OP_EXACTN: - GET_LENGTH_INC(len, bp); - p_len_string(f, len, 1, bp); - bp += len; - break; - - case OP_EXACTMB2N1: - p_string(f, 2, bp); bp += 2; break; - case OP_EXACTMB2N2: - p_string(f, 4, bp); bp += 4; break; - case OP_EXACTMB2N3: - p_string(f, 6, bp); bp += 6; break; - case OP_EXACTMB2N: - GET_LENGTH_INC(len, bp); - p_len_string(f, len, 2, bp); - bp += len * 2; - break; - case OP_EXACTMB3N: - GET_LENGTH_INC(len, bp); - p_len_string(f, len, 3, bp); - bp += len * 3; - break; - case OP_EXACTMBN: - { - int mb_len; - - GET_LENGTH_INC(mb_len, bp); - GET_LENGTH_INC(len, bp); - fprintf(f, ":%d:%d:", mb_len, len); - n = len * mb_len; - while (n-- > 0) { fputc(*bp++, f); } - } - break; - - case OP_EXACT1_IC: - len = enclen(enc, bp); - p_string(f, len, bp); - bp += len; - break; - case OP_EXACTN_IC: - GET_LENGTH_INC(len, bp); - p_len_string(f, len, 1, bp); - bp += len; - break; - - case OP_CCLASS: - n = bitset_on_num((BitSetRef )bp); - bp += SIZE_BITSET; - fprintf(f, ":%d", n); - break; - - case OP_CCLASS_NOT: - n = bitset_on_num((BitSetRef )bp); - bp += SIZE_BITSET; - fprintf(f, ":%d", n); - break; - - case OP_CCLASS_MB: - case OP_CCLASS_MB_NOT: - GET_LENGTH_INC(len, bp); - q = bp; -#ifndef PLATFORM_UNALIGNED_WORD_ACCESS - ALIGNMENT_RIGHT(q); -#endif - GET_CODE_POINT(code, q); - bp += len; - fprintf(f, ":%d:%d", (int )code, len); - break; - - case OP_CCLASS_MIX: - case OP_CCLASS_MIX_NOT: - n = bitset_on_num((BitSetRef )bp); - bp += SIZE_BITSET; - GET_LENGTH_INC(len, bp); - q = bp; -#ifndef PLATFORM_UNALIGNED_WORD_ACCESS - ALIGNMENT_RIGHT(q); -#endif - GET_CODE_POINT(code, q); - bp += len; - fprintf(f, ":%d:%d:%d", n, (int )code, len); - break; - - case OP_CCLASS_NODE: - { - CClassNode *cc; - - GET_POINTER_INC(cc, bp); - n = bitset_on_num(cc->bs); - fprintf(f, ":%u:%d", (unsigned int )cc, n); - } - break; - - case OP_BACKREFN_IC: - mem = *((MemNumType* )bp); - bp += SIZE_MEMNUM; - fprintf(f, ":%d", mem); - break; - - case OP_BACKREF_MULTI_IC: - case OP_BACKREF_MULTI: - fputs(" ", f); - GET_LENGTH_INC(len, bp); - for (i = 0; i < len; i++) { - GET_MEMNUM_INC(mem, bp); - if (i > 0) fputs(", ", f); - fprintf(f, "%d", mem); - } - break; - - case OP_BACKREF_WITH_LEVEL: - { - OnigOptionType option; - LengthType level; - - GET_OPTION_INC(option, bp); - fprintf(f, ":%d", option); - GET_LENGTH_INC(level, bp); - fprintf(f, ":%d", level); - - fputs(" ", f); - GET_LENGTH_INC(len, bp); - for (i = 0; i < len; i++) { - GET_MEMNUM_INC(mem, bp); - if (i > 0) fputs(", ", f); - fprintf(f, "%d", mem); - } - } - break; - - case OP_REPEAT: - case OP_REPEAT_NG: - { - mem = *((MemNumType* )bp); - bp += SIZE_MEMNUM; - addr = *((RelAddrType* )bp); - bp += SIZE_RELADDR; - fprintf(f, ":%d:%d", mem, addr); - } - break; - - case OP_PUSH_OR_JUMP_EXACT1: - case OP_PUSH_IF_PEEK_NEXT: - addr = *((RelAddrType* )bp); - bp += SIZE_RELADDR; - fprintf(f, ":(%d)", addr); - p_string(f, 1, bp); - bp += 1; - break; - - case OP_LOOK_BEHIND: - GET_LENGTH_INC(len, bp); - fprintf(f, ":%d", len); - break; - - case OP_PUSH_LOOK_BEHIND_NOT: - GET_RELADDR_INC(addr, bp); - GET_LENGTH_INC(len, bp); - fprintf(f, ":%d:(%d)", len, addr); - break; - - case OP_STATE_CHECK_PUSH: - case OP_STATE_CHECK_PUSH_OR_JUMP: - scn = *((StateCheckNumType* )bp); - bp += SIZE_STATE_CHECK_NUM; - addr = *((RelAddrType* )bp); - bp += SIZE_RELADDR; - fprintf(f, ":%d:(%d)", scn, addr); - break; - - default: - fprintf(stderr, "onig_print_compiled_byte_code: undefined code %d\n", - *--bp); - } - } - fputs("]", f); - if (nextp) *nextp = bp; -} - -static void -print_compiled_byte_code_list(FILE* f, regex_t* reg) +Indent(FILE* f, int indent) { - int ncode; - UChar* bp = reg->p; - UChar* end = reg->p + reg->used; - - fprintf(f, "code length: %d\n", reg->used); - - ncode = 0; - while (bp < end) { - ncode++; - if (bp > reg->p) { - if (ncode % 5 == 0) - fprintf(f, "\n"); - else - fputs(" ", f); - } - onig_print_compiled_byte_code(f, bp, &bp, reg->enc); - } - - fprintf(f, "\n"); + int i; + for (i = 0; i < indent; i++) putc(' ', f); } static void print_indent_tree(FILE* f, Node* node, int indent) { - int i, type; - int add = 3; + int i; + NodeType type; UChar* p; + int add = 3; Indent(f, indent); if (IS_NULL(node)) { @@ -6145,57 +6370,64 @@ print_indent_tree(FILE* f, Node* node, int indent) exit (0); } - type = NTYPE(node); + type = NODE_TYPE(node); switch (type) { - case NT_LIST: - case NT_ALT: - if (NTYPE(node) == NT_LIST) - fprintf(f, "\n", (int )node); + case NODE_LIST: + case NODE_ALT: + if (type == NODE_LIST) + fprintf(f, "\n", node); else - fprintf(f, "\n", (int )node); + fprintf(f, "\n", node); - print_indent_tree(f, NCAR(node), indent + add); - while (IS_NOT_NULL(node = NCDR(node))) { - if (NTYPE(node) != type) { - fprintf(f, "ERROR: list/alt right is not a cons. %d\n", NTYPE(node)); - exit(0); + print_indent_tree(f, NODE_CAR(node), indent + add); + while (IS_NOT_NULL(node = NODE_CDR(node))) { + if (NODE_TYPE(node) != type) { + fprintf(f, "ERROR: list/alt right is not a cons. %d\n", NODE_TYPE(node)); + exit(0); } - print_indent_tree(f, NCAR(node), indent + add); + print_indent_tree(f, NODE_CAR(node), indent + add); } break; - case NT_STR: - fprintf(f, "", - (NSTRING_IS_RAW(node) ? "-raw" : ""), (int )node); - for (p = NSTR(node)->s; p < NSTR(node)->end; p++) { + case NODE_STRING: + fprintf(f, "", (NODE_STRING_IS_RAW(node) ? "-raw" : ""), node); + for (p = STR_(node)->s; p < STR_(node)->end; p++) { if (*p >= 0x20 && *p < 0x7f) - fputc(*p, f); + fputc(*p, f); else { - fprintf(f, " 0x%02x", *p); + fprintf(f, " 0x%02x", *p); } } break; - case NT_CCLASS: - fprintf(f, "", (int )node); - if (IS_NCCLASS_NOT(NCCLASS(node))) fputs(" not", f); - if (NCCLASS(node)->mbuf) { - BBuf* bbuf = NCCLASS(node)->mbuf; + case NODE_CCLASS: + fprintf(f, "", node); + if (IS_NCCLASS_NOT(CCLASS_(node))) fputs(" not", f); + if (CCLASS_(node)->mbuf) { + BBuf* bbuf = CCLASS_(node)->mbuf; for (i = 0; i < bbuf->used; i++) { - if (i > 0) fprintf(f, ","); - fprintf(f, "%0x", bbuf->p[i]); + if (i > 0) fprintf(f, ","); + fprintf(f, "%0x", bbuf->p[i]); } } break; - case NT_CTYPE: - fprintf(f, " ", (int )node); - switch (NCTYPE(node)->ctype) { + case NODE_CTYPE: + fprintf(f, " ", node); + switch (CTYPE_(node)->ctype) { + case CTYPE_ANYCHAR: + fprintf(f, "", node); + break; + case ONIGENC_CTYPE_WORD: - if (NCTYPE(node)->not != 0) - fputs("not word", f); + if (CTYPE_(node)->not != 0) + fputs("not word", f); else - fputs("word", f); + fputs("word", f); + + if (CTYPE_(node)->ascii_mode != 0) + fputs(" (ascii)", f); + break; default: @@ -6204,30 +6436,42 @@ print_indent_tree(FILE* f, Node* node, int indent) } break; - case NT_CANY: - fprintf(f, "", (int )node); - break; - - case NT_ANCHOR: - fprintf(f, " ", (int )node); - switch (NANCHOR(node)->type) { - case ANCHOR_BEGIN_BUF: fputs("begin buf", f); break; - case ANCHOR_END_BUF: fputs("end buf", f); break; - case ANCHOR_BEGIN_LINE: fputs("begin line", f); break; - case ANCHOR_END_LINE: fputs("end line", f); break; - case ANCHOR_SEMI_END_BUF: fputs("semi end buf", f); break; - case ANCHOR_BEGIN_POSITION: fputs("begin position", f); break; + case NODE_ANCHOR: + fprintf(f, " ", node); + switch (ANCHOR_(node)->type) { + case ANCHOR_BEGIN_BUF: fputs("begin buf", f); break; + case ANCHOR_END_BUF: fputs("end buf", f); break; + case ANCHOR_BEGIN_LINE: fputs("begin line", f); break; + case ANCHOR_END_LINE: fputs("end line", f); break; + case ANCHOR_SEMI_END_BUF: fputs("semi end buf", f); break; + case ANCHOR_BEGIN_POSITION: fputs("begin position", f); break; - case ANCHOR_WORD_BOUND: fputs("word bound", f); break; - case ANCHOR_NOT_WORD_BOUND: fputs("not word bound", f); break; + case ANCHOR_WORD_BOUNDARY: fputs("word boundary", f); break; + case ANCHOR_NO_WORD_BOUNDARY: fputs("not word boundary", f); break; #ifdef USE_WORD_BEGIN_END - case ANCHOR_WORD_BEGIN: fputs("word begin", f); break; - case ANCHOR_WORD_END: fputs("word end", f); break; + case ANCHOR_WORD_BEGIN: fputs("word begin", f); break; + case ANCHOR_WORD_END: fputs("word end", f); break; #endif - case ANCHOR_PREC_READ: fputs("prec read", f); break; - case ANCHOR_PREC_READ_NOT: fputs("prec read not", f); break; - case ANCHOR_LOOK_BEHIND: fputs("look_behind", f); break; - case ANCHOR_LOOK_BEHIND_NOT: fputs("look_behind_not",f); break; + case ANCHOR_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY: + fputs("extended-grapheme-cluster boundary", f); break; + case ANCHOR_NO_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY: + fputs("no-extended-grapheme-cluster boundary", f); break; + case ANCHOR_PREC_READ: + fprintf(f, "prec read\n"); + print_indent_tree(f, NODE_BODY(node), indent + add); + break; + case ANCHOR_PREC_READ_NOT: + fprintf(f, "prec read not\n"); + print_indent_tree(f, NODE_BODY(node), indent + add); + break; + case ANCHOR_LOOK_BEHIND: + fprintf(f, "look behind\n"); + print_indent_tree(f, NODE_BODY(node), indent + add); + break; + case ANCHOR_LOOK_BEHIND_NOT: + fprintf(f, "look behind not\n"); + print_indent_tree(f, NODE_BODY(node), indent + add); + break; default: fprintf(f, "ERROR: undefined anchor type.\n"); @@ -6235,46 +6479,46 @@ print_indent_tree(FILE* f, Node* node, int indent) } break; - case NT_BREF: + case NODE_BACKREF: { int* p; - BRefNode* br = NBREF(node); + BackRefNode* br = BACKREF_(node); p = BACKREFS_P(br); - fprintf(f, "", (int )node); + fprintf(f, "", NODE_IS_CHECKER(node) ? "-checker" : "", node); for (i = 0; i < br->back_num; i++) { - if (i > 0) fputs(", ", f); - fprintf(f, "%d", p[i]); + if (i > 0) fputs(", ", f); + fprintf(f, "%d", p[i]); } } break; -#ifdef USE_SUBEXP_CALL - case NT_CALL: +#ifdef USE_CALL + case NODE_CALL: { - CallNode* cn = NCALL(node); - fprintf(f, "", (int )node); + CallNode* cn = CALL_(node); + fprintf(f, "", node); p_string(f, cn->name_end - cn->name, cn->name); } break; #endif - case NT_QTFR: - fprintf(f, "{%d,%d}%s\n", (int )node, - NQTFR(node)->lower, NQTFR(node)->upper, - (NQTFR(node)->greedy ? "" : "?")); - print_indent_tree(f, NQTFR(node)->target, indent + add); + case NODE_QUANT: + fprintf(f, "{%d,%d}%s\n", node, + QUANT_(node)->lower, QUANT_(node)->upper, + (QUANT_(node)->greedy ? "" : "?")); + print_indent_tree(f, NODE_BODY(node), indent + add); break; - case NT_ENCLOSE: - fprintf(f, " ", (int )node); - switch (NENCLOSE(node)->type) { - case ENCLOSE_OPTION: - fprintf(f, "option:%d", NENCLOSE(node)->option); + case NODE_ENCLOSURE: + fprintf(f, " ", node); + switch (ENCLOSURE_(node)->type) { + case ENCLOSURE_OPTION: + fprintf(f, "option:%d", ENCLOSURE_(node)->o.options); break; - case ENCLOSE_MEMORY: - fprintf(f, "memory:%d", NENCLOSE(node)->regnum); + case ENCLOSURE_MEMORY: + fprintf(f, "memory:%d", ENCLOSURE_(node)->m.regnum); break; - case ENCLOSE_STOP_BACKTRACK: + case ENCLOSURE_STOP_BACKTRACK: fprintf(f, "stop-bt"); break; @@ -6282,22 +6526,49 @@ print_indent_tree(FILE* f, Node* node, int indent) break; } fprintf(f, "\n"); - print_indent_tree(f, NENCLOSE(node)->target, indent + add); + print_indent_tree(f, NODE_BODY(node), indent + add); + break; + + case NODE_GIMMICK: + fprintf(f, " ", node); + switch (GIMMICK_(node)->type) { + case GIMMICK_FAIL: + fprintf(f, "fail"); + break; + case GIMMICK_KEEP: + fprintf(f, "keep:%d", GIMMICK_(node)->id); + break; + case GIMMICK_SAVE: + fprintf(f, "save:%d:%d", GIMMICK_(node)->detail_type, GIMMICK_(node)->id); + break; + case GIMMICK_UPDATE_VAR: + fprintf(f, "update_var:%d:%d", GIMMICK_(node)->detail_type, GIMMICK_(node)->id); + break; +#ifdef USE_CALLOUT + case GIMMICK_CALLOUT: + switch (GIMMICK_(node)->detail_type) { + case ONIG_CALLOUT_OF_CONTENTS: + fprintf(f, "callout:contents:%d", GIMMICK_(node)->num); + break; + case ONIG_CALLOUT_OF_NAME: + fprintf(f, "callout:name:%d:%d", GIMMICK_(node)->id, GIMMICK_(node)->num); + break; + } +#endif + } break; default: - fprintf(f, "print_indent_tree: undefined node type %d\n", NTYPE(node)); + fprintf(f, "print_indent_tree: undefined node type %d\n", NODE_TYPE(node)); break; } - if (type != NT_LIST && type != NT_ALT && type != NT_QTFR && - type != NT_ENCLOSE) + if (type != NODE_LIST && type != NODE_ALT && type != NODE_QUANT && + type != NODE_ENCLOSURE) fprintf(f, "\n"); fflush(f); } -#endif /* ONIG_DEBUG */ -#ifdef ONIG_DEBUG_PARSE_TREE static void print_tree(FILE* f, Node* node) { diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regenc.c b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regenc.c index ec052627da..90547d359e 100644 --- a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regenc.c +++ b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regenc.c @@ -2,10 +2,8 @@ regenc.c - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2002-2007 K.Kosako + * Copyright (c) 2002-2018 K.Kosako * All rights reserved. - * - * (C) Copyright 2015 Hewlett Packard Enterprise Development LP
* * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -33,12 +31,98 @@ OnigEncoding OnigEncDefaultCharEncoding = ONIG_ENCODING_INIT_DEFAULT; +#define INITED_LIST_SIZE 20 + +static int InitedListNum; + +static struct { + OnigEncoding enc; + int inited; +} InitedList[INITED_LIST_SIZE]; + +static int +enc_inited_entry(OnigEncoding enc) +{ + int i; + + for (i = 0; i < InitedListNum; i++) { + if (InitedList[i].enc == enc) { + InitedList[i].inited = 1; + return i; + } + } + + i = InitedListNum; + if (i < INITED_LIST_SIZE - 1) { + InitedList[i].enc = enc; + InitedList[i].inited = 1; + InitedListNum++; + return i; + } + + return -1; +} + +static int +enc_is_inited(OnigEncoding enc) +{ + int i; + + for (i = 0; i < InitedListNum; i++) { + if (InitedList[i].enc == enc) { + return InitedList[i].inited; + } + } + + return 0; +} + +extern int +onigenc_end(void) +{ + int i; + + for (i = 0; i < InitedListNum; i++) { + InitedList[i].enc = 0; + InitedList[i].inited = 0; + } + + InitedListNum = 0; + return ONIG_NORMAL; +} + extern int onigenc_init(void) { return 0; } +extern int +onig_initialize_encoding(OnigEncoding enc) +{ + int r; + + if (enc != ONIG_ENCODING_ASCII && + ONIGENC_IS_ASCII_COMPATIBLE_ENCODING(enc)) { + OnigEncoding ascii = ONIG_ENCODING_ASCII; + if (ascii->init != 0 && enc_is_inited(ascii) == 0) { + r = ascii->init(); + if (r != ONIG_NORMAL) return r; + enc_inited_entry(ascii); + } + } + + if (enc->init != 0 && + enc_is_inited(enc) == 0) { + r = (enc->init)(); + if (r == ONIG_NORMAL) + enc_inited_entry(enc); + return r; + } + + return 0; +} + extern OnigEncoding onigenc_get_default_encoding(void) { @@ -52,6 +136,25 @@ onigenc_set_default_encoding(OnigEncoding enc) return 0; } +extern UChar* +onigenc_strdup(OnigEncoding enc, const UChar* s, const UChar* end) +{ + int slen, term_len, i; + UChar *r; + + slen = (int )(end - s); + term_len = ONIGENC_MBC_MINLEN(enc); + + r = (UChar* )xmalloc(slen + term_len); + CHECK_NULL_RETURN(r); + xmemcpy(r, s, slen); + + for (i = 0; i < term_len; i++) + r[slen + i] = (UChar )0; + + return r; +} + extern UChar* onigenc_get_right_adjust_char_head(OnigEncoding enc, const UChar* start, const UChar* s) { @@ -99,6 +202,20 @@ onigenc_step_back(OnigEncoding enc, const UChar* start, const UChar* s, int n) return (UChar* )s; } +#if 0 +extern int +onigenc_mbc_enc_len_end(OnigEncoding enc, const UChar* p, const UChar* end) +{ + int len; + int n; + + len = ONIGENC_MBC_ENC_LEN(enc, p); + n = (int )(end - p); + + return (n < len ? n : len); +} +#endif + extern UChar* onigenc_step(OnigEncoding enc, const UChar* p, const UChar* end, int n) { @@ -172,74 +289,74 @@ onigenc_str_bytelen_null(OnigEncoding enc, const UChar* s) } const UChar OnigEncAsciiToLowerCaseTable[] = { - 0000, 0001, 0002, 0003, 0004, 0005, 0006, 0007, - 0010, 0011, 0012, 0013, 0014, 0015, 0016, 0017, - 0020, 0021, 0022, 0023, 0024, 0025, 0026, 0027, - 0030, 0031, 0032, 0033, 0034, 0035, 0036, 0037, - 0040, 0041, 0042, 0043, 0044, 0045, 0046, 0047, - 0050, 0051, 0052, 0053, 0054, 0055, 0056, 0057, - 0060, 0061, 0062, 0063, 0064, 0065, 0066, 0067, - 0070, 0071, 0072, 0073, 0074, 0075, 0076, 0077, - 0100, 0141, 0142, 0143, 0144, 0145, 0146, 0147, - 0150, 0151, 0152, 0153, 0154, 0155, 0156, 0157, - 0160, 0161, 0162, 0163, 0164, 0165, 0166, 0167, - 0170, 0171, 0172, 0133, 0134, 0135, 0136, 0137, - 0140, 0141, 0142, 0143, 0144, 0145, 0146, 0147, - 0150, 0151, 0152, 0153, 0154, 0155, 0156, 0157, - 0160, 0161, 0162, 0163, 0164, 0165, 0166, 0167, - 0170, 0171, 0172, 0173, 0174, 0175, 0176, 0177, - 0200, 0201, 0202, 0203, 0204, 0205, 0206, 0207, - 0210, 0211, 0212, 0213, 0214, 0215, 0216, 0217, - 0220, 0221, 0222, 0223, 0224, 0225, 0226, 0227, - 0230, 0231, 0232, 0233, 0234, 0235, 0236, 0237, - 0240, 0241, 0242, 0243, 0244, 0245, 0246, 0247, - 0250, 0251, 0252, 0253, 0254, 0255, 0256, 0257, - 0260, 0261, 0262, 0263, 0264, 0265, 0266, 0267, - 0270, 0271, 0272, 0273, 0274, 0275, 0276, 0277, - 0300, 0301, 0302, 0303, 0304, 0305, 0306, 0307, - 0310, 0311, 0312, 0313, 0314, 0315, 0316, 0317, - 0320, 0321, 0322, 0323, 0324, 0325, 0326, 0327, - 0330, 0331, 0332, 0333, 0334, 0335, 0336, 0337, - 0340, 0341, 0342, 0343, 0344, 0345, 0346, 0347, - 0350, 0351, 0352, 0353, 0354, 0355, 0356, 0357, - 0360, 0361, 0362, 0363, 0364, 0365, 0366, 0367, - 0370, 0371, 0372, 0373, 0374, 0375, 0376, 0377, + '\000', '\001', '\002', '\003', '\004', '\005', '\006', '\007', + '\010', '\011', '\012', '\013', '\014', '\015', '\016', '\017', + '\020', '\021', '\022', '\023', '\024', '\025', '\026', '\027', + '\030', '\031', '\032', '\033', '\034', '\035', '\036', '\037', + '\040', '\041', '\042', '\043', '\044', '\045', '\046', '\047', + '\050', '\051', '\052', '\053', '\054', '\055', '\056', '\057', + '\060', '\061', '\062', '\063', '\064', '\065', '\066', '\067', + '\070', '\071', '\072', '\073', '\074', '\075', '\076', '\077', + '\100', '\141', '\142', '\143', '\144', '\145', '\146', '\147', + '\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157', + '\160', '\161', '\162', '\163', '\164', '\165', '\166', '\167', + '\170', '\171', '\172', '\133', '\134', '\135', '\136', '\137', + '\140', '\141', '\142', '\143', '\144', '\145', '\146', '\147', + '\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157', + '\160', '\161', '\162', '\163', '\164', '\165', '\166', '\167', + '\170', '\171', '\172', '\173', '\174', '\175', '\176', '\177', + '\200', '\201', '\202', '\203', '\204', '\205', '\206', '\207', + '\210', '\211', '\212', '\213', '\214', '\215', '\216', '\217', + '\220', '\221', '\222', '\223', '\224', '\225', '\226', '\227', + '\230', '\231', '\232', '\233', '\234', '\235', '\236', '\237', + '\240', '\241', '\242', '\243', '\244', '\245', '\246', '\247', + '\250', '\251', '\252', '\253', '\254', '\255', '\256', '\257', + '\260', '\261', '\262', '\263', '\264', '\265', '\266', '\267', + '\270', '\271', '\272', '\273', '\274', '\275', '\276', '\277', + '\300', '\301', '\302', '\303', '\304', '\305', '\306', '\307', + '\310', '\311', '\312', '\313', '\314', '\315', '\316', '\317', + '\320', '\321', '\322', '\323', '\324', '\325', '\326', '\327', + '\330', '\331', '\332', '\333', '\334', '\335', '\336', '\337', + '\340', '\341', '\342', '\343', '\344', '\345', '\346', '\347', + '\350', '\351', '\352', '\353', '\354', '\355', '\356', '\357', + '\360', '\361', '\362', '\363', '\364', '\365', '\366', '\367', + '\370', '\371', '\372', '\373', '\374', '\375', '\376', '\377', }; #ifdef USE_UPPER_CASE_TABLE const UChar OnigEncAsciiToUpperCaseTable[256] = { - 0000, 0001, 0002, 0003, 0004, 0005, 0006, 0007, - 0010, 0011, 0012, 0013, 0014, 0015, 0016, 0017, - 0020, 0021, 0022, 0023, 0024, 0025, 0026, 0027, - 0030, 0031, 0032, 0033, 0034, 0035, 0036, 0037, - 0040, 0041, 0042, 0043, 0044, 0045, 0046, 0047, - 0050, 0051, 0052, 0053, 0054, 0055, 0056, 0057, - 0060, 0061, 0062, 0063, 0064, 0065, 0066, 0067, - 0070, 0071, 0072, 0073, 0074, 0075, 0076, 0077, - 0100, 0101, 0102, 0103, 0104, 0105, 0106, 0107, - 0110, 0111, 0112, 0113, 0114, 0115, 0116, 0117, - 0120, 0121, 0122, 0123, 0124, 0125, 0126, 0127, - 0130, 0131, 0132, 0133, 0134, 0135, 0136, 0137, - 0140, 0101, 0102, 0103, 0104, 0105, 0106, 0107, - 0110, 0111, 0112, 0113, 0114, 0115, 0116, 0117, - 0120, 0121, 0122, 0123, 0124, 0125, 0126, 0127, - 0130, 0131, 0132, 0173, 0174, 0175, 0176, 0177, - 0200, 0201, 0202, 0203, 0204, 0205, 0206, 0207, - 0210, 0211, 0212, 0213, 0214, 0215, 0216, 0217, - 0220, 0221, 0222, 0223, 0224, 0225, 0226, 0227, - 0230, 0231, 0232, 0233, 0234, 0235, 0236, 0237, - 0240, 0241, 0242, 0243, 0244, 0245, 0246, 0247, - 0250, 0251, 0252, 0253, 0254, 0255, 0256, 0257, - 0260, 0261, 0262, 0263, 0264, 0265, 0266, 0267, - 0270, 0271, 0272, 0273, 0274, 0275, 0276, 0277, - 0300, 0301, 0302, 0303, 0304, 0305, 0306, 0307, - 0310, 0311, 0312, 0313, 0314, 0315, 0316, 0317, - 0320, 0321, 0322, 0323, 0324, 0325, 0326, 0327, - 0330, 0331, 0332, 0333, 0334, 0335, 0336, 0337, - 0340, 0341, 0342, 0343, 0344, 0345, 0346, 0347, - 0350, 0351, 0352, 0353, 0354, 0355, 0356, 0357, - 0360, 0361, 0362, 0363, 0364, 0365, 0366, 0367, - 0370, 0371, 0372, 0373, 0374, 0375, 0376, 0377, + '\000', '\001', '\002', '\003', '\004', '\005', '\006', '\007', + '\010', '\011', '\012', '\013', '\014', '\015', '\016', '\017', + '\020', '\021', '\022', '\023', '\024', '\025', '\026', '\027', + '\030', '\031', '\032', '\033', '\034', '\035', '\036', '\037', + '\040', '\041', '\042', '\043', '\044', '\045', '\046', '\047', + '\050', '\051', '\052', '\053', '\054', '\055', '\056', '\057', + '\060', '\061', '\062', '\063', '\064', '\065', '\066', '\067', + '\070', '\071', '\072', '\073', '\074', '\075', '\076', '\077', + '\100', '\101', '\102', '\103', '\104', '\105', '\106', '\107', + '\110', '\111', '\112', '\113', '\114', '\115', '\116', '\117', + '\120', '\121', '\122', '\123', '\124', '\125', '\126', '\127', + '\130', '\131', '\132', '\133', '\134', '\135', '\136', '\137', + '\140', '\101', '\102', '\103', '\104', '\105', '\106', '\107', + '\110', '\111', '\112', '\113', '\114', '\115', '\116', '\117', + '\120', '\121', '\122', '\123', '\124', '\125', '\126', '\127', + '\130', '\131', '\132', '\173', '\174', '\175', '\176', '\177', + '\200', '\201', '\202', '\203', '\204', '\205', '\206', '\207', + '\210', '\211', '\212', '\213', '\214', '\215', '\216', '\217', + '\220', '\221', '\222', '\223', '\224', '\225', '\226', '\227', + '\230', '\231', '\232', '\233', '\234', '\235', '\236', '\237', + '\240', '\241', '\242', '\243', '\244', '\245', '\246', '\247', + '\250', '\251', '\252', '\253', '\254', '\255', '\256', '\257', + '\260', '\261', '\262', '\263', '\264', '\265', '\266', '\267', + '\270', '\271', '\272', '\273', '\274', '\275', '\276', '\277', + '\300', '\301', '\302', '\303', '\304', '\305', '\306', '\307', + '\310', '\311', '\312', '\313', '\314', '\315', '\316', '\317', + '\320', '\321', '\322', '\323', '\324', '\325', '\326', '\327', + '\330', '\331', '\332', '\333', '\334', '\335', '\336', '\337', + '\340', '\341', '\342', '\343', '\344', '\345', '\346', '\347', + '\350', '\351', '\352', '\353', '\354', '\355', '\356', '\357', + '\360', '\361', '\362', '\363', '\364', '\365', '\366', '\367', + '\370', '\371', '\372', '\373', '\374', '\375', '\376', '\377', }; #endif @@ -279,74 +396,74 @@ const unsigned short OnigEncAsciiCtypeTable[256] = { }; const UChar OnigEncISO_8859_1_ToLowerCaseTable[256] = { - 0000, 0001, 0002, 0003, 0004, 0005, 0006, 0007, - 0010, 0011, 0012, 0013, 0014, 0015, 0016, 0017, - 0020, 0021, 0022, 0023, 0024, 0025, 0026, 0027, - 0030, 0031, 0032, 0033, 0034, 0035, 0036, 0037, - 0040, 0041, 0042, 0043, 0044, 0045, 0046, 0047, - 0050, 0051, 0052, 0053, 0054, 0055, 0056, 0057, - 0060, 0061, 0062, 0063, 0064, 0065, 0066, 0067, - 0070, 0071, 0072, 0073, 0074, 0075, 0076, 0077, - 0100, 0141, 0142, 0143, 0144, 0145, 0146, 0147, - 0150, 0151, 0152, 0153, 0154, 0155, 0156, 0157, - 0160, 0161, 0162, 0163, 0164, 0165, 0166, 0167, - 0170, 0171, 0172, 0133, 0134, 0135, 0136, 0137, - 0140, 0141, 0142, 0143, 0144, 0145, 0146, 0147, - 0150, 0151, 0152, 0153, 0154, 0155, 0156, 0157, - 0160, 0161, 0162, 0163, 0164, 0165, 0166, 0167, - 0170, 0171, 0172, 0173, 0174, 0175, 0176, 0177, - 0200, 0201, 0202, 0203, 0204, 0205, 0206, 0207, - 0210, 0211, 0212, 0213, 0214, 0215, 0216, 0217, - 0220, 0221, 0222, 0223, 0224, 0225, 0226, 0227, - 0230, 0231, 0232, 0233, 0234, 0235, 0236, 0237, - 0240, 0241, 0242, 0243, 0244, 0245, 0246, 0247, - 0250, 0251, 0252, 0253, 0254, 0255, 0256, 0257, - 0260, 0261, 0262, 0263, 0264, 0265, 0266, 0267, - 0270, 0271, 0272, 0273, 0274, 0275, 0276, 0277, - 0340, 0341, 0342, 0343, 0344, 0345, 0346, 0347, - 0350, 0351, 0352, 0353, 0354, 0355, 0356, 0357, - 0360, 0361, 0362, 0363, 0364, 0365, 0366, 0327, - 0370, 0371, 0372, 0373, 0374, 0375, 0376, 0337, - 0340, 0341, 0342, 0343, 0344, 0345, 0346, 0347, - 0350, 0351, 0352, 0353, 0354, 0355, 0356, 0357, - 0360, 0361, 0362, 0363, 0364, 0365, 0366, 0367, - 0370, 0371, 0372, 0373, 0374, 0375, 0376, 0377 + '\000', '\001', '\002', '\003', '\004', '\005', '\006', '\007', + '\010', '\011', '\012', '\013', '\014', '\015', '\016', '\017', + '\020', '\021', '\022', '\023', '\024', '\025', '\026', '\027', + '\030', '\031', '\032', '\033', '\034', '\035', '\036', '\037', + '\040', '\041', '\042', '\043', '\044', '\045', '\046', '\047', + '\050', '\051', '\052', '\053', '\054', '\055', '\056', '\057', + '\060', '\061', '\062', '\063', '\064', '\065', '\066', '\067', + '\070', '\071', '\072', '\073', '\074', '\075', '\076', '\077', + '\100', '\141', '\142', '\143', '\144', '\145', '\146', '\147', + '\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157', + '\160', '\161', '\162', '\163', '\164', '\165', '\166', '\167', + '\170', '\171', '\172', '\133', '\134', '\135', '\136', '\137', + '\140', '\141', '\142', '\143', '\144', '\145', '\146', '\147', + '\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157', + '\160', '\161', '\162', '\163', '\164', '\165', '\166', '\167', + '\170', '\171', '\172', '\173', '\174', '\175', '\176', '\177', + '\200', '\201', '\202', '\203', '\204', '\205', '\206', '\207', + '\210', '\211', '\212', '\213', '\214', '\215', '\216', '\217', + '\220', '\221', '\222', '\223', '\224', '\225', '\226', '\227', + '\230', '\231', '\232', '\233', '\234', '\235', '\236', '\237', + '\240', '\241', '\242', '\243', '\244', '\245', '\246', '\247', + '\250', '\251', '\252', '\253', '\254', '\255', '\256', '\257', + '\260', '\261', '\262', '\263', '\264', '\265', '\266', '\267', + '\270', '\271', '\272', '\273', '\274', '\275', '\276', '\277', + '\340', '\341', '\342', '\343', '\344', '\345', '\346', '\347', + '\350', '\351', '\352', '\353', '\354', '\355', '\356', '\357', + '\360', '\361', '\362', '\363', '\364', '\365', '\366', '\327', + '\370', '\371', '\372', '\373', '\374', '\375', '\376', '\337', + '\340', '\341', '\342', '\343', '\344', '\345', '\346', '\347', + '\350', '\351', '\352', '\353', '\354', '\355', '\356', '\357', + '\360', '\361', '\362', '\363', '\364', '\365', '\366', '\367', + '\370', '\371', '\372', '\373', '\374', '\375', '\376', '\377' }; #ifdef USE_UPPER_CASE_TABLE const UChar OnigEncISO_8859_1_ToUpperCaseTable[256] = { - 0000, 0001, 0002, 0003, 0004, 0005, 0006, 0007, - 0010, 0011, 0012, 0013, 0014, 0015, 0016, 0017, - 0020, 0021, 0022, 0023, 0024, 0025, 0026, 0027, - 0030, 0031, 0032, 0033, 0034, 0035, 0036, 0037, - 0040, 0041, 0042, 0043, 0044, 0045, 0046, 0047, - 0050, 0051, 0052, 0053, 0054, 0055, 0056, 0057, - 0060, 0061, 0062, 0063, 0064, 0065, 0066, 0067, - 0070, 0071, 0072, 0073, 0074, 0075, 0076, 0077, - 0100, 0101, 0102, 0103, 0104, 0105, 0106, 0107, - 0110, 0111, 0112, 0113, 0114, 0115, 0116, 0117, - 0120, 0121, 0122, 0123, 0124, 0125, 0126, 0127, - 0130, 0131, 0132, 0133, 0134, 0135, 0136, 0137, - 0140, 0101, 0102, 0103, 0104, 0105, 0106, 0107, - 0110, 0111, 0112, 0113, 0114, 0115, 0116, 0117, - 0120, 0121, 0122, 0123, 0124, 0125, 0126, 0127, - 0130, 0131, 0132, 0173, 0174, 0175, 0176, 0177, - 0200, 0201, 0202, 0203, 0204, 0205, 0206, 0207, - 0210, 0211, 0212, 0213, 0214, 0215, 0216, 0217, - 0220, 0221, 0222, 0223, 0224, 0225, 0226, 0227, - 0230, 0231, 0232, 0233, 0234, 0235, 0236, 0237, - 0240, 0241, 0242, 0243, 0244, 0245, 0246, 0247, - 0250, 0251, 0252, 0253, 0254, 0255, 0256, 0257, - 0260, 0261, 0262, 0263, 0264, 0265, 0266, 0267, - 0270, 0271, 0272, 0273, 0274, 0275, 0276, 0277, - 0300, 0301, 0302, 0303, 0304, 0305, 0306, 0307, - 0310, 0311, 0312, 0313, 0314, 0315, 0316, 0317, - 0320, 0321, 0322, 0323, 0324, 0325, 0326, 0327, - 0330, 0331, 0332, 0333, 0334, 0335, 0336, 0337, - 0300, 0301, 0302, 0303, 0304, 0305, 0306, 0307, - 0310, 0311, 0312, 0313, 0314, 0315, 0316, 0317, - 0320, 0321, 0322, 0323, 0324, 0325, 0326, 0367, - 0330, 0331, 0332, 0333, 0334, 0335, 0336, 0377, + '\000', '\001', '\002', '\003', '\004', '\005', '\006', '\007', + '\010', '\011', '\012', '\013', '\014', '\015', '\016', '\017', + '\020', '\021', '\022', '\023', '\024', '\025', '\026', '\027', + '\030', '\031', '\032', '\033', '\034', '\035', '\036', '\037', + '\040', '\041', '\042', '\043', '\044', '\045', '\046', '\047', + '\050', '\051', '\052', '\053', '\054', '\055', '\056', '\057', + '\060', '\061', '\062', '\063', '\064', '\065', '\066', '\067', + '\070', '\071', '\072', '\073', '\074', '\075', '\076', '\077', + '\100', '\101', '\102', '\103', '\104', '\105', '\106', '\107', + '\110', '\111', '\112', '\113', '\114', '\115', '\116', '\117', + '\120', '\121', '\122', '\123', '\124', '\125', '\126', '\127', + '\130', '\131', '\132', '\133', '\134', '\135', '\136', '\137', + '\140', '\101', '\102', '\103', '\104', '\105', '\106', '\107', + '\110', '\111', '\112', '\113', '\114', '\115', '\116', '\117', + '\120', '\121', '\122', '\123', '\124', '\125', '\126', '\127', + '\130', '\131', '\132', '\173', '\174', '\175', '\176', '\177', + '\200', '\201', '\202', '\203', '\204', '\205', '\206', '\207', + '\210', '\211', '\212', '\213', '\214', '\215', '\216', '\217', + '\220', '\221', '\222', '\223', '\224', '\225', '\226', '\227', + '\230', '\231', '\232', '\233', '\234', '\235', '\236', '\237', + '\240', '\241', '\242', '\243', '\244', '\245', '\246', '\247', + '\250', '\251', '\252', '\253', '\254', '\255', '\256', '\257', + '\260', '\261', '\262', '\263', '\264', '\265', '\266', '\267', + '\270', '\271', '\272', '\273', '\274', '\275', '\276', '\277', + '\300', '\301', '\302', '\303', '\304', '\305', '\306', '\307', + '\310', '\311', '\312', '\313', '\314', '\315', '\316', '\317', + '\320', '\321', '\322', '\323', '\324', '\325', '\326', '\327', + '\330', '\331', '\332', '\333', '\334', '\335', '\336', '\337', + '\300', '\301', '\302', '\303', '\304', '\305', '\306', '\307', + '\310', '\311', '\312', '\313', '\314', '\315', '\316', '\317', + '\320', '\321', '\322', '\323', '\324', '\325', '\326', '\367', + '\330', '\331', '\332', '\333', '\334', '\335', '\336', '\377', }; #endif @@ -640,6 +757,33 @@ onigenc_always_false_is_allowed_reverse_match(const UChar* s ARG_UNUSED, return FALSE; } +extern int +onigenc_always_true_is_valid_mbc_string(const UChar* s ARG_UNUSED, + const UChar* end ARG_UNUSED) +{ + return TRUE; +} + +extern int +onigenc_length_check_is_valid_mbc_string(OnigEncoding enc, + const UChar* p, const UChar* end) +{ + while (p < end) { + p += enclen(enc, p); + } + + if (p != end) + return FALSE; + else + return TRUE; +} + +extern int +onigenc_is_valid_mbc_string(OnigEncoding enc, const UChar* s, const UChar* end) +{ + return ONIGENC_IS_VALID_MBC_STRING(enc, s, end); +} + extern OnigCodePoint onigenc_mbn_mbc_to_code(OnigEncoding enc, const UChar* p, const UChar* end) { @@ -730,7 +874,7 @@ onigenc_mb2_code_to_mbc(OnigEncoding enc, OnigCodePoint code, UChar *buf) if (enclen(enc, buf) != (p - buf)) return ONIGERR_INVALID_CODE_POINT_VALUE; #endif - return (int)(p - buf); + return (int )(p - buf); } extern int @@ -753,7 +897,7 @@ onigenc_mb4_code_to_mbc(OnigEncoding enc, OnigCodePoint code, UChar *buf) if (enclen(enc, buf) != (p - buf)) return ONIGERR_INVALID_CODE_POINT_VALUE; #endif - return (int)(p - buf); + return (int )(p - buf); } extern int @@ -790,6 +934,16 @@ onigenc_minimum_property_name_to_ctype(OnigEncoding enc, UChar* p, UChar* end) return ONIGERR_INVALID_CHAR_PROPERTY_NAME; } +extern int +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; + + return ONIGENC_IS_ASCII_CODE_WORD(code); +} + extern int onigenc_mb2_is_code_ctype(OnigEncoding enc, OnigCodePoint code, unsigned int ctype) @@ -839,66 +993,29 @@ onigenc_with_ascii_strncmp(OnigEncoding enc, const UChar* p, const UChar* end, return 0; } -/* Property management */ -static int -resize_property_list(int new_size, const OnigCodePoint*** plist, int* psize) -{ - int size; - const OnigCodePoint **list = *plist; - - size = sizeof(OnigCodePoint*) * new_size; - if (IS_NULL(list)) { - list = (const OnigCodePoint** )xmalloc(size); - } - else { - list = (const OnigCodePoint** )xrealloc((void* )list, size, *psize * sizeof(OnigCodePoint*)); - } - - if (IS_NULL(list)) return ONIGERR_MEMORY; - - *plist = list; - *psize = new_size; - - return 0; -} - extern int -onigenc_property_list_add_property(UChar* name, const OnigCodePoint* prop, - hash_table_type **table, const OnigCodePoint*** plist, int *pnum, - int *psize) +onig_codes_cmp(OnigCodePoint a[], OnigCodePoint b[], int n) { -#define PROP_INIT_SIZE 16 + int i; - int r; - - if (*psize <= *pnum) { - int new_size = (*psize == 0 ? PROP_INIT_SIZE : *psize * 2); - r = resize_property_list(new_size, plist, psize); - if (r != 0) return r; + for (i = 0; i < n; i++) { + if (a[i] != b[i]) + return -1; } - (*plist)[*pnum] = prop; - - if (ONIG_IS_NULL(*table)) { - *table = onig_st_init_strend_table_with_size(PROP_INIT_SIZE); - if (ONIG_IS_NULL(*table)) return ONIGERR_MEMORY; - } - - *pnum = *pnum + 1; - onig_st_insert_strend(*table, name, name + strlen_s((char* )name, MAX_STRING_SIZE), - (hash_data_type )(*pnum + ONIGENC_MAX_STD_CTYPE)); return 0; } extern int -onigenc_property_list_init(int (*f)(void)) +onig_codes_byte_at(OnigCodePoint codes[], int at) { - int r; - - THREAD_ATOMIC_START; + int index; + int b; + OnigCodePoint code; - r = f(); + index = at / 3; + b = at % 3; + code = codes[index]; - THREAD_ATOMIC_END; - return r; + return ((code >> ((2 - b) * 8)) & 0xff); } diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regenc.h b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regenc.h index 1d39f9c054..6235520a1e 100644 --- a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regenc.h +++ b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regenc.h @@ -4,7 +4,7 @@ regenc.h - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2002-2008 K.Kosako + * Copyright (c) 2002-2018 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -29,11 +29,13 @@ * SUCH DAMAGE. */ -#ifndef PACKAGE -/* PACKAGE is defined in config.h */ -//#include "config.h" +#ifndef ONIGURUMA_EXPORT +#define ONIGURUMA_EXPORT #endif +//#include "config.h" +//#include + #ifdef ONIG_ESCAPE_UCHAR_COLLISION #undef ONIG_ESCAPE_UCHAR_COLLISION #endif @@ -71,7 +73,9 @@ typedef struct { #define ONIG_CHECK_NULL_RETURN(p) if (ONIG_IS_NULL(p)) return NULL #define ONIG_CHECK_NULL_RETURN_VAL(p,val) if (ONIG_IS_NULL(p)) return (val) -#define enclen(enc,p) ONIGENC_MBC_ENC_LEN(enc,p) +#define MAX_CODE_POINT (~((OnigCodePoint )0)) + +#define enclen(enc,p) ONIGENC_MBC_ENC_LEN(enc,p) /* character types bit flag */ #define BIT_CTYPE_NEWLINE (1<< ONIGENC_CTYPE_NEWLINE) @@ -102,88 +106,157 @@ typedef struct { short int len; } PosixBracketEntryType; +struct PropertyNameCtype { + char *name; + int ctype; +}; /* #define USE_CRNL_AS_LINE_TERMINATOR */ #define USE_UNICODE_PROPERTIES +#define USE_UNICODE_EXTENDED_GRAPHEME_CLUSTER /* #define USE_UNICODE_CASE_FOLD_TURKISH_AZERI */ -/* #define USE_UNICODE_ALL_LINE_TERMINATORS */ /* see Unicode.org UTF#18 */ +/* #define USE_UNICODE_ALL_LINE_TERMINATORS */ /* see Unicode.org UTS #18 */ #define ONIG_ENCODING_INIT_DEFAULT ONIG_ENCODING_ASCII + +#define ENC_FLAG_ASCII_COMPATIBLE (1<<0) +#define ENC_FLAG_UNICODE (1<<1) + + /* for encoding system implementation (internal) */ -ONIG_EXTERN int onigenc_ascii_apply_all_case_fold P_((OnigCaseFoldType flag, OnigApplyAllCaseFoldFunc f, void* arg)); -ONIG_EXTERN int onigenc_ascii_get_case_fold_codes_by_str P_((OnigCaseFoldType flag, const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[])); -ONIG_EXTERN int onigenc_apply_all_case_fold_with_map P_((int map_size, const OnigPairCaseFoldCodes map[], int ess_tsett_flag, OnigCaseFoldType flag, OnigApplyAllCaseFoldFunc f, void* arg)); -ONIG_EXTERN int onigenc_get_case_fold_codes_by_str_with_map P_((int map_size, const OnigPairCaseFoldCodes map[], int ess_tsett_flag, OnigCaseFoldType flag, const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[])); -ONIG_EXTERN int onigenc_not_support_get_ctype_code_range P_((OnigCtype ctype, OnigCodePoint* sb_out, const OnigCodePoint* ranges[])); -ONIG_EXTERN int onigenc_is_mbc_newline_0x0a P_((const UChar* p, const UChar* end)); +extern int onigenc_end(void); +extern int onigenc_ascii_apply_all_case_fold P_((OnigCaseFoldType flag, OnigApplyAllCaseFoldFunc f, void* arg)); +extern int onigenc_ascii_get_case_fold_codes_by_str P_((OnigCaseFoldType flag, const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[])); +extern int onigenc_apply_all_case_fold_with_map P_((int map_size, const OnigPairCaseFoldCodes map[], int ess_tsett_flag, OnigCaseFoldType flag, OnigApplyAllCaseFoldFunc f, void* arg)); +extern int onigenc_get_case_fold_codes_by_str_with_map P_((int map_size, const OnigPairCaseFoldCodes map[], int ess_tsett_flag, OnigCaseFoldType flag, const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[])); +extern int onigenc_not_support_get_ctype_code_range P_((OnigCtype ctype, OnigCodePoint* sb_out, const OnigCodePoint* ranges[])); +extern int onigenc_is_mbc_newline_0x0a P_((const UChar* p, const UChar* end)); /* methods for single byte encoding */ -ONIG_EXTERN int onigenc_ascii_mbc_case_fold P_((OnigCaseFoldType flag, const UChar** p, const UChar* end, UChar* lower)); -ONIG_EXTERN int onigenc_single_byte_mbc_enc_len P_((const UChar* p)); -ONIG_EXTERN OnigCodePoint onigenc_single_byte_mbc_to_code P_((const UChar* p, const UChar* end)); -ONIG_EXTERN int onigenc_single_byte_code_to_mbclen P_((OnigCodePoint code)); -ONIG_EXTERN int onigenc_single_byte_code_to_mbc P_((OnigCodePoint code, UChar *buf)); -ONIG_EXTERN UChar* onigenc_single_byte_left_adjust_char_head P_((const UChar* start, const UChar* s)); -ONIG_EXTERN int onigenc_always_true_is_allowed_reverse_match P_((const UChar* s, const UChar* end)); -ONIG_EXTERN int onigenc_always_false_is_allowed_reverse_match P_((const UChar* s, const UChar* end)); +extern int onigenc_ascii_mbc_case_fold P_((OnigCaseFoldType flag, const UChar** p, const UChar* end, UChar* lower)); +extern int onigenc_single_byte_mbc_enc_len P_((const UChar* p)); +extern OnigCodePoint onigenc_single_byte_mbc_to_code P_((const UChar* p, const UChar* end)); +extern int onigenc_single_byte_code_to_mbclen P_((OnigCodePoint code)); +extern int onigenc_single_byte_code_to_mbc P_((OnigCodePoint code, UChar *buf)); +extern UChar* onigenc_single_byte_left_adjust_char_head P_((const UChar* start, const UChar* s)); +extern int onigenc_always_true_is_allowed_reverse_match P_((const UChar* s, const UChar* end)); +extern int onigenc_always_false_is_allowed_reverse_match P_((const UChar* s, const UChar* end)); +extern int onigenc_always_true_is_valid_mbc_string P_((const UChar* s, const UChar* end)); +extern int onigenc_length_check_is_valid_mbc_string P_((OnigEncoding enc, const UChar* s, const UChar* end)); /* methods for multi byte encoding */ -ONIG_EXTERN OnigCodePoint onigenc_mbn_mbc_to_code P_((OnigEncoding enc, const UChar* p, const UChar* end)); -ONIG_EXTERN int onigenc_mbn_mbc_case_fold P_((OnigEncoding enc, OnigCaseFoldType flag, const UChar** p, const UChar* end, UChar* lower)); -ONIG_EXTERN int onigenc_mb2_code_to_mbclen P_((OnigCodePoint code)); -ONIG_EXTERN int onigenc_mb2_code_to_mbc P_((OnigEncoding enc, OnigCodePoint code, UChar *buf)); -ONIG_EXTERN int onigenc_minimum_property_name_to_ctype P_((OnigEncoding enc, UChar* p, UChar* end)); -ONIG_EXTERN int onigenc_unicode_property_name_to_ctype P_((OnigEncoding enc, UChar* p, UChar* end)); -ONIG_EXTERN int onigenc_mb2_is_code_ctype P_((OnigEncoding enc, OnigCodePoint code, unsigned int ctype)); -ONIG_EXTERN int onigenc_mb4_code_to_mbclen P_((OnigCodePoint code)); -ONIG_EXTERN int onigenc_mb4_code_to_mbc P_((OnigEncoding enc, OnigCodePoint code, UChar *buf)); -ONIG_EXTERN int onigenc_mb4_is_code_ctype P_((OnigEncoding enc, OnigCodePoint code, unsigned int ctype)); - +extern OnigCodePoint onigenc_mbn_mbc_to_code P_((OnigEncoding enc, const UChar* p, const UChar* end)); +extern int onigenc_mbn_mbc_case_fold P_((OnigEncoding enc, OnigCaseFoldType flag, const UChar** p, const UChar* end, UChar* lower)); +extern int onigenc_mb2_code_to_mbclen P_((OnigCodePoint code)); +extern int onigenc_mb2_code_to_mbc P_((OnigEncoding enc, OnigCodePoint code, UChar *buf)); +extern int onigenc_minimum_property_name_to_ctype P_((OnigEncoding enc, UChar* p, UChar* end)); +extern int onigenc_unicode_property_name_to_ctype P_((OnigEncoding enc, UChar* p, UChar* end)); +extern int onigenc_is_mbc_word_ascii P_((OnigEncoding enc, UChar* s, const UChar* end)); +extern int onigenc_mb2_is_code_ctype P_((OnigEncoding enc, OnigCodePoint code, unsigned int ctype)); +extern int onigenc_mb4_code_to_mbclen P_((OnigCodePoint code)); +extern int onigenc_mb4_code_to_mbc P_((OnigEncoding enc, OnigCodePoint code, UChar *buf)); +extern int onigenc_mb4_is_code_ctype P_((OnigEncoding enc, OnigCodePoint code, unsigned int ctype)); +extern struct PropertyNameCtype* onigenc_euc_jp_lookup_property_name P_((register const char *str, register size_t len)); +extern struct PropertyNameCtype* onigenc_sjis_lookup_property_name P_((register const char *str, register size_t len)); /* in enc/unicode.c */ -ONIG_EXTERN int onigenc_unicode_is_code_ctype P_((OnigCodePoint code, unsigned int ctype)); -ONIG_EXTERN int onigenc_utf16_32_get_ctype_code_range P_((OnigCtype ctype, OnigCodePoint *sb_out, const OnigCodePoint* ranges[])); -ONIG_EXTERN int onigenc_unicode_ctype_code_range P_((int ctype, const OnigCodePoint* ranges[])); -ONIG_EXTERN int onigenc_unicode_get_case_fold_codes_by_str P_((OnigEncoding enc, OnigCaseFoldType flag, const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[])); -ONIG_EXTERN int onigenc_unicode_mbc_case_fold P_((OnigEncoding enc, OnigCaseFoldType flag, const UChar** pp, const UChar* end, UChar* fold)); -ONIG_EXTERN int onigenc_unicode_apply_all_case_fold P_((OnigCaseFoldType flag, OnigApplyAllCaseFoldFunc f, void* arg)); +extern int onigenc_unicode_is_code_ctype P_((OnigCodePoint code, unsigned int ctype)); +extern int onigenc_utf16_32_get_ctype_code_range P_((OnigCtype ctype, OnigCodePoint *sb_out, const OnigCodePoint* ranges[])); +extern int onigenc_unicode_ctype_code_range P_((OnigCtype ctype, const OnigCodePoint* ranges[])); +extern int onigenc_unicode_get_case_fold_codes_by_str P_((OnigEncoding enc, OnigCaseFoldType flag, const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[])); +extern int onigenc_unicode_mbc_case_fold P_((OnigEncoding enc, OnigCaseFoldType flag, const UChar** pp, const UChar* end, UChar* fold)); +extern int onigenc_unicode_apply_all_case_fold P_((OnigCaseFoldType flag, OnigApplyAllCaseFoldFunc f, void* arg)); +extern int onigenc_egcb_is_break_position P_((OnigEncoding enc, UChar* p, UChar* prev, const UChar* start, const UChar* end)); #define UTF16_IS_SURROGATE_FIRST(c) (((c) & 0xfc) == 0xd8) #define UTF16_IS_SURROGATE_SECOND(c) (((c) & 0xfc) == 0xdc) +/* from unicode generated codes */ +#define FOLDS1_FOLD(i) (OnigUnicodeFolds1 + (i)) +#define FOLDS2_FOLD(i) (OnigUnicodeFolds2 + (i)) +#define FOLDS3_FOLD(i) (OnigUnicodeFolds3 + (i)) +#define FOLDS1_UNFOLDS_NUM(i) (OnigUnicodeFolds1[(i)+1]) +#define FOLDS2_UNFOLDS_NUM(i) (OnigUnicodeFolds2[(i)+2]) +#define FOLDS3_UNFOLDS_NUM(i) (OnigUnicodeFolds3[(i)+3]) +#define FOLDS1_UNFOLDS(i) (OnigUnicodeFolds1 + (i) + 2) +#define FOLDS2_UNFOLDS(i) (OnigUnicodeFolds2 + (i) + 3) +#define FOLDS3_UNFOLDS(i) (OnigUnicodeFolds3 + (i) + 4) +#define FOLDS1_NEXT_INDEX(i) ((i) + 2 + OnigUnicodeFolds1[(i)+1]) +#define FOLDS2_NEXT_INDEX(i) ((i) + 3 + OnigUnicodeFolds2[(i)+2]) +#define FOLDS3_NEXT_INDEX(i) ((i) + 4 + OnigUnicodeFolds3[(i)+3]) + +#define FOLDS_FOLD_ADDR_BUK(buk, addr) do {\ + if ((buk)->fold_len == 1)\ + addr = OnigUnicodeFolds1 + (buk)->index;\ + else if ((buk)->fold_len == 2)\ + addr = OnigUnicodeFolds2 + (buk)->index;\ + else if ((buk)->fold_len == 3)\ + addr = OnigUnicodeFolds3 + (buk)->index;\ + else\ + addr = 0;\ +} while (0) + +extern OnigCodePoint OnigUnicodeFolds1[]; +extern OnigCodePoint OnigUnicodeFolds2[]; +extern OnigCodePoint OnigUnicodeFolds3[]; + +struct ByUnfoldKey { + OnigCodePoint code; + short int index; + short int fold_len; +}; + +extern const struct ByUnfoldKey* onigenc_unicode_unfold_key(OnigCodePoint code); +extern int onigenc_unicode_fold1_key(OnigCodePoint code[]); +extern int onigenc_unicode_fold2_key(OnigCodePoint code[]); +extern int onigenc_unicode_fold3_key(OnigCodePoint code[]); + +extern int onig_codes_cmp(OnigCodePoint a[], OnigCodePoint b[], int n); +extern int onig_codes_byte_at(OnigCodePoint code[], int at); + + + #define ONIGENC_ISO_8859_1_TO_LOWER_CASE(c) \ OnigEncISO_8859_1_ToLowerCaseTable[c] #define ONIGENC_ISO_8859_1_TO_UPPER_CASE(c) \ OnigEncISO_8859_1_ToUpperCaseTable[c] -ONIG_EXTERN const UChar OnigEncISO_8859_1_ToLowerCaseTable[]; -ONIG_EXTERN const UChar OnigEncISO_8859_1_ToUpperCaseTable[]; +extern const UChar OnigEncISO_8859_1_ToLowerCaseTable[]; +extern const UChar OnigEncISO_8859_1_ToUpperCaseTable[]; -ONIG_EXTERN int +extern int onigenc_with_ascii_strncmp P_((OnigEncoding enc, const UChar* p, const UChar* end, const UChar* sascii /* ascii */, int n)); -ONIG_EXTERN UChar* +extern UChar* onigenc_step P_((OnigEncoding enc, const UChar* p, const UChar* end, int n)); /* defined in regexec.c, but used in enc/xxx.c */ extern int onig_is_in_code_range P_((const UChar* p, OnigCodePoint code)); -ONIG_EXTERN OnigEncoding OnigEncDefaultCharEncoding; -ONIG_EXTERN const UChar OnigEncAsciiToLowerCaseTable[]; -ONIG_EXTERN const UChar OnigEncAsciiToUpperCaseTable[]; -ONIG_EXTERN const unsigned short OnigEncAsciiCtypeTable[]; +extern OnigEncoding OnigEncDefaultCharEncoding; +extern const UChar OnigEncAsciiToLowerCaseTable[]; +extern const UChar OnigEncAsciiToUpperCaseTable[]; +extern const unsigned short OnigEncAsciiCtypeTable[]; + #define ONIGENC_IS_ASCII_CODE(code) ((code) < 0x80) #define ONIGENC_ASCII_CODE_TO_LOWER_CASE(c) OnigEncAsciiToLowerCaseTable[c] #define ONIGENC_ASCII_CODE_TO_UPPER_CASE(c) OnigEncAsciiToUpperCaseTable[c] #define ONIGENC_IS_ASCII_CODE_CTYPE(code,ctype) \ ((OnigEncAsciiCtypeTable[code] & CTYPE_TO_BIT(ctype)) != 0) +#define ONIGENC_IS_ASCII_CODE_WORD(code) \ + ((OnigEncAsciiCtypeTable[code] & CTYPE_TO_BIT(ONIGENC_CTYPE_WORD)) != 0) #define ONIGENC_IS_ASCII_CODE_CASE_AMBIG(code) \ (ONIGENC_IS_ASCII_CODE_CTYPE(code, ONIGENC_CTYPE_UPPER) ||\ ONIGENC_IS_ASCII_CODE_CTYPE(code, ONIGENC_CTYPE_LOWER)) +#define ONIGENC_IS_UNICODE_ENCODING(enc) \ + (((enc)->flag & ENC_FLAG_UNICODE) != 0) + +#define ONIGENC_IS_ASCII_COMPATIBLE_ENCODING(enc) \ + (((enc)->flag & ENC_FLAG_ASCII_COMPATIBLE) != 0) #endif /* REGENC_H */ diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regerror.c b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regerror.c index 1544e23f10..222e8e6136 100644 --- a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regerror.c +++ b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regerror.c @@ -2,11 +2,9 @@ regerror.c - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2002-2007 K.Kosako + * Copyright (c) 2002-2018 K.Kosako * All rights reserved. * - * (C) Copyright 2015 Hewlett Packard Enterprise Development LP
- * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: @@ -29,10 +27,8 @@ * SUCH DAMAGE. */ -#define HAVE_STDARG_PROTOTYPES - #include "regint.h" - +#define HAVE_STDARG_PROTOTYPES #if 0 #include /* for vsnprintf() */ @@ -50,17 +46,21 @@ onig_error_code_to_format(int code) { char *p; - if (code >= 0) return (UChar* )0; - switch (code) { case ONIG_MISMATCH: p = "mismatch"; break; case ONIG_NO_SUPPORT_CONFIG: p = "no support in this configuration"; break; + case ONIG_ABORT: + p = "abort"; break; case ONIGERR_MEMORY: p = "fail to memory allocation"; break; case ONIGERR_MATCH_STACK_LIMIT_OVER: p = "match-stack limit over"; break; + case ONIGERR_PARSE_DEPTH_LIMIT_OVER: + p = "parse depth limit over"; break; + case ONIGERR_RETRY_LIMIT_IN_MATCH_OVER: + p = "retry-limit-in-match over"; break; case ONIGERR_TYPE_BUG: p = "undefined type (bug)"; break; case ONIGERR_PARSER_BUG: @@ -75,6 +75,8 @@ onig_error_code_to_format(int code) p = "default multibyte-encoding is not setted"; break; case ONIGERR_SPECIFIED_ENCODING_CANT_CONVERT_TO_WIDE_CHAR: p = "can't convert to wide-char on specified multibyte-encoding"; break; + case ONIGERR_FAIL_TO_INITIALIZE: + p = "fail to initialize"; break; case ONIGERR_INVALID_ARGUMENT: p = "invalid argument"; break; case ONIGERR_END_PATTERN_AT_LEFT_BRACE: @@ -138,13 +140,11 @@ onig_error_code_to_format(int code) case ONIGERR_TOO_BIG_BACKREF_NUMBER: p = "too big backref number"; break; case ONIGERR_INVALID_BACKREF: -#ifdef USE_NAMED_GROUP p = "invalid backref number/name"; break; -#else - p = "invalid backref number"; break; -#endif case ONIGERR_NUMBERED_BACKREF_OR_CALL_NOT_ALLOWED: p = "numbered backref/call is not allowed. (use name)"; break; + case ONIGERR_TOO_MANY_CAPTURES: + p = "too many captures"; break; case ONIGERR_TOO_BIG_WIDE_CHAR_VALUE: p = "too big wide-char value"; break; case ONIGERR_TOO_LONG_WIDE_CHAR_VALUE: @@ -156,11 +156,7 @@ onig_error_code_to_format(int code) case ONIGERR_INVALID_GROUP_NAME: p = "invalid group name <%n>"; break; case ONIGERR_INVALID_CHAR_IN_GROUP_NAME: -#ifdef USE_NAMED_GROUP p = "invalid char in group name <%n>"; break; -#else - p = "invalid char in group number <%n>"; break; -#endif case ONIGERR_UNDEFINED_NAME_REFERENCE: p = "undefined name <%n> reference"; break; case ONIGERR_UNDEFINED_GROUP_REFERENCE: @@ -175,12 +171,30 @@ onig_error_code_to_format(int code) p = "group number is too big for capture history"; break; case ONIGERR_INVALID_CHAR_PROPERTY_NAME: p = "invalid character property name {%n}"; break; + case ONIGERR_INVALID_IF_ELSE_SYNTAX: + p = "invalid if-else syntax"; break; + case ONIGERR_INVALID_ABSENT_GROUP_PATTERN: + p = "invalid absent group pattern"; break; + case ONIGERR_INVALID_ABSENT_GROUP_GENERATOR_PATTERN: + p = "invalid absent group generator pattern"; break; + case ONIGERR_INVALID_CALLOUT_PATTERN: + p = "invalid callout pattern"; break; + case ONIGERR_INVALID_CALLOUT_NAME: + p = "invalid callout name"; break; + case ONIGERR_UNDEFINED_CALLOUT_NAME: + p = "undefined callout name"; break; + case ONIGERR_INVALID_CALLOUT_BODY: + p = "invalid callout body"; break; + case ONIGERR_INVALID_CALLOUT_TAG_NAME: + p = "invalid callout tag name"; break; + case ONIGERR_INVALID_CALLOUT_ARG: + p = "invalid callout arg"; break; case ONIGERR_NOT_SUPPORTED_ENCODING_COMBINATION: p = "not supported encoding combination"; break; case ONIGERR_INVALID_COMBINATION_OF_OPTIONS: p = "invalid combination of options"; break; - case ONIGERR_OVER_THREAD_PASS_LIMIT_COUNT: - p = "over thread pass limit count"; break; + case ONIGERR_LIBRARY_IS_NOT_INITIALIZED: + p = "library is not initialized"; break; default: p = "undefined error code"; break; @@ -212,24 +226,24 @@ static int to_ascii(OnigEncoding enc, UChar *s, UChar *end, while (p < end) { code = ONIGENC_MBC_TO_CODE(enc, p, end); if (code >= 0x80) { - if (code > 0xffff && len + 10 <= buf_size) { - sprint_byte_with_x((char*)(&(buf[len])), (unsigned int)(code >> 24)); - sprint_byte((char*)(&(buf[len+4])), (unsigned int)(code >> 16)); - sprint_byte((char*)(&(buf[len+6])), (unsigned int)(code >> 8)); - sprint_byte((char*)(&(buf[len+8])), (unsigned int)code); - len += 10; - } - else if (len + 6 <= buf_size) { - sprint_byte_with_x((char*)(&(buf[len])), (unsigned int)(code >> 8)); - sprint_byte((char*)(&(buf[len+4])), (unsigned int)code); - len += 6; - } - else { - break; - } + if (code > 0xffff && len + 10 <= buf_size) { + sprint_byte_with_x((char*)(&(buf[len])), (unsigned int)(code >> 24)); + sprint_byte((char*)(&(buf[len+4])), (unsigned int)(code >> 16)); + sprint_byte((char*)(&(buf[len+6])), (unsigned int)(code >> 8)); + sprint_byte((char*)(&(buf[len+8])), (unsigned int)code); + len += 10; + } + else if (len + 6 <= buf_size) { + sprint_byte_with_x((char*)(&(buf[len])), (unsigned int)(code >> 8)); + sprint_byte((char*)(&(buf[len+4])), (unsigned int)code); + len += 6; + } + else { + break; + } } else { - buf[len++] = (UChar )code; + buf[len++] = (UChar )code; } p += enclen(enc, p); @@ -239,7 +253,7 @@ static int to_ascii(OnigEncoding enc, UChar *s, UChar *end, *is_over = ((p < end) ? 1 : 0); } else { - len = MIN((int)(end - s), buf_size); + len = MIN((int )(end - s), buf_size); xmemcpy(buf, s, (size_t )len); *is_over = ((buf_size < (end - s)) ? 1 : 0); } @@ -280,39 +294,35 @@ onig_error_code_to_str(s, code, va_alist) case ONIGERR_INVALID_CHAR_PROPERTY_NAME: einfo = va_arg(vargs, OnigErrorInfo*); len = to_ascii(einfo->enc, einfo->par, einfo->par_end, - parbuf, MAX_ERROR_PAR_LEN - 3, &is_over); + parbuf, MAX_ERROR_PAR_LEN - 3, &is_over); q = onig_error_code_to_format(code); p = s; while (*q != '\0') { if (*q == '%') { - q++; - if (*q == 'n') { /* '%n': name */ - xmemcpy(p, parbuf, len); - p += len; - if (is_over != 0) { - xmemcpy(p, "...", 3); - p += 3; - } - q++; - } - else - goto normal_char; + q++; + if (*q == 'n') { /* '%n': name */ + xmemcpy(p, parbuf, len); + p += len; + if (is_over != 0) { + xmemcpy(p, "...", 3); + p += 3; + } + q++; + } + else + goto normal_char; } else { normal_char: - *p++ = *q++; + *p++ = *q++; } } *p = '\0'; - len = (int)(p - s); + len = (int )(p - s); break; default: q = onig_error_code_to_format(code); - if (q == NULL) { - len = 0; - break; - } len = onigenc_str_bytelen_null(ONIG_ENCODING_ASCII, q); xmemcpy(s, q, len); s[len] = '\0'; @@ -349,7 +359,7 @@ onig_snprintf_with_pattern(buf, bufsize, enc, pat, pat_end, fmt, va_alist) n = xvsnprintf((char* )buf, bufsize, (const char* )fmt, args); va_end(args); - need = (int)(pat_end - pat) * 4 + 4; + need = (int )(pat_end - pat) * 4 + 4; if (n + need < bufsize) { strcat_s((char* )buf, bufsize, ": /"); @@ -357,40 +367,40 @@ onig_snprintf_with_pattern(buf, bufsize, enc, pat, pat_end, fmt, va_alist) p = pat; while (p < pat_end) { - if (*p == '\\') { - *s++ = *p++; - len = enclen(enc, p); - while (len-- > 0) *s++ = *p++; - } - else if (*p == '/') { - *s++ = (unsigned char )'\\'; - *s++ = *p++; - } - else if (ONIGENC_IS_MBC_HEAD(enc, p)) { + if (ONIGENC_IS_MBC_HEAD(enc, p)) { len = enclen(enc, p); if (ONIGENC_MBC_MINLEN(enc) == 1) { while (len-- > 0) *s++ = *p++; } - else { /* for UTF16 */ + else { /* for UTF16/32 */ int blen; while (len-- > 0) { - sprint_byte_with_x((char* )bs, (unsigned int )(*p++)); + sprint_byte_with_x((char* )bs, (unsigned int )(*p++)); blen = onigenc_str_bytelen_null(ONIG_ENCODING_ASCII, bs); bp = bs; while (blen-- > 0) *s++ = *bp++; } } } + else if (*p == '\\') { + *s++ = *p++; + len = enclen(enc, p); + while (len-- > 0) *s++ = *p++; + } + else if (*p == '/') { + *s++ = (unsigned char )'\\'; + *s++ = *p++; + } else if (!ONIGENC_IS_CODE_PRINT(enc, *p) && - !ONIGENC_IS_CODE_SPACE(enc, *p)) { - sprint_byte_with_x((char* )bs, (unsigned int )(*p++)); - len = onigenc_str_bytelen_null(ONIG_ENCODING_ASCII, bs); + !ONIGENC_IS_CODE_SPACE(enc, *p)) { + sprint_byte_with_x((char* )bs, (unsigned int )(*p++)); + len = onigenc_str_bytelen_null(ONIG_ENCODING_ASCII, bs); bp = bs; - while (len-- > 0) *s++ = *bp++; + while (len-- > 0) *s++ = *bp++; } else { - *s++ = *p++; + *s++ = *p++; } } diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regexec.c b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regexec.c index a175f3a6cc..7b0fda07f8 100644 --- a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regexec.c +++ b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regexec.c @@ -2,11 +2,9 @@ regexec.c - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2002-2008 K.Kosako + * Copyright (c) 2002-2018 K.Kosako * All rights reserved. * - * (C) Copyright 2015 Hewlett Packard Enterprise Development LP
- * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: @@ -28,10 +26,10 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ - #include "regint.h" -#define USE_MATCH_RANGE_MUST_BE_INSIDE_OF_SPECIFIED_RANGE +#define IS_MBC_WORD_ASCII_MODE(enc,s,end,mode) \ + ((mode) == 0 ? ONIGENC_IS_MBC_WORD(enc,s,end) : ONIGENC_IS_MBC_WORD_ASCII(enc,s,end)) #ifdef USE_CRNL_AS_LINE_TERMINATOR #define ONIGENC_IS_MBC_CRNL(enc,p,end) \ @@ -39,6 +37,586 @@ ONIGENC_IS_MBC_NEWLINE(enc,(p+enclen(enc,p)),end)) #endif +#define CHECK_INTERRUPT_IN_MATCH + +#ifdef USE_CALLOUT +typedef struct { + int last_match_at_call_counter; + struct { + OnigType type; + OnigValue val; + } slot[ONIG_CALLOUT_DATA_SLOT_NUM]; +} CalloutData; +#endif + +struct OnigMatchParamStruct { + unsigned int match_stack_limit; + unsigned long retry_limit_in_match; +#ifdef USE_CALLOUT + OnigCalloutFunc progress_callout_of_contents; + OnigCalloutFunc retraction_callout_of_contents; + int match_at_call_counter; + void* callout_user_data; + CalloutData* callout_data; + int callout_data_alloc_num; +#endif +}; + +extern int +onig_set_match_stack_limit_size_of_match_param(OnigMatchParam* param, + unsigned int limit) +{ + param->match_stack_limit = limit; + return ONIG_NORMAL; +} + +extern int +onig_set_retry_limit_in_match_of_match_param(OnigMatchParam* param, + unsigned long limit) +{ + param->retry_limit_in_match = limit; + return ONIG_NORMAL; +} + +extern int +onig_set_progress_callout_of_match_param(OnigMatchParam* param, OnigCalloutFunc f) +{ +#ifdef USE_CALLOUT + param->progress_callout_of_contents = f; + return ONIG_NORMAL; +#else + return ONIG_NO_SUPPORT_CONFIG; +#endif +} + +extern int +onig_set_retraction_callout_of_match_param(OnigMatchParam* param, OnigCalloutFunc f) +{ +#ifdef USE_CALLOUT + param->retraction_callout_of_contents = f; + return ONIG_NORMAL; +#else + return ONIG_NO_SUPPORT_CONFIG; +#endif +} + +extern int +onig_set_callout_user_data_of_match_param(OnigMatchParam* param, void* user_data) +{ +#ifdef USE_CALLOUT + param->callout_user_data = user_data; + return ONIG_NORMAL; +#else + return ONIG_NO_SUPPORT_CONFIG; +#endif +} + + + +typedef struct { + void* stack_p; + int stack_n; + OnigOptionType options; + OnigRegion* region; + int ptr_num; + const UChar* start; /* search start position (for \G: BEGIN_POSITION) */ + unsigned int match_stack_limit; + unsigned long retry_limit_in_match; + OnigMatchParam* mp; +#ifdef USE_FIND_LONGEST_SEARCH_ALL_OF_RANGE + int best_len; /* for ONIG_OPTION_FIND_LONGEST */ + UChar* best_s; +#endif +} MatchArg; + + +#ifdef ONIG_DEBUG + +/* arguments type */ +typedef enum { + ARG_SPECIAL = -1, + ARG_NON = 0, + ARG_RELADDR = 1, + ARG_ABSADDR = 2, + ARG_LENGTH = 3, + ARG_MEMNUM = 4, + ARG_OPTION = 5, + ARG_MODE = 6 +} OpArgType; + +typedef struct { + short int opcode; + char* name; + OpArgType arg_type; +} OpInfoType; + +static OpInfoType OpInfo[] = { + { OP_FINISH, "finish", ARG_NON }, + { OP_END, "end", ARG_NON }, + { OP_EXACT1, "exact1", ARG_SPECIAL }, + { OP_EXACT2, "exact2", ARG_SPECIAL }, + { OP_EXACT3, "exact3", ARG_SPECIAL }, + { OP_EXACT4, "exact4", ARG_SPECIAL }, + { OP_EXACT5, "exact5", ARG_SPECIAL }, + { OP_EXACTN, "exactn", ARG_SPECIAL }, + { OP_EXACTMB2N1, "exactmb2-n1", ARG_SPECIAL }, + { OP_EXACTMB2N2, "exactmb2-n2", ARG_SPECIAL }, + { OP_EXACTMB2N3, "exactmb2-n3", ARG_SPECIAL }, + { OP_EXACTMB2N, "exactmb2-n", ARG_SPECIAL }, + { OP_EXACTMB3N, "exactmb3n" , ARG_SPECIAL }, + { OP_EXACTMBN, "exactmbn", ARG_SPECIAL }, + { OP_EXACT1_IC, "exact1-ic", ARG_SPECIAL }, + { OP_EXACTN_IC, "exactn-ic", ARG_SPECIAL }, + { OP_CCLASS, "cclass", ARG_SPECIAL }, + { OP_CCLASS_MB, "cclass-mb", ARG_SPECIAL }, + { OP_CCLASS_MIX, "cclass-mix", ARG_SPECIAL }, + { OP_CCLASS_NOT, "cclass-not", ARG_SPECIAL }, + { OP_CCLASS_MB_NOT, "cclass-mb-not", ARG_SPECIAL }, + { OP_CCLASS_MIX_NOT, "cclass-mix-not", ARG_SPECIAL }, +#ifdef USE_OP_CCLASS_NODE + { OP_CCLASS_NODE, "cclass-node", ARG_SPECIAL }, +#endif + { OP_ANYCHAR, "anychar", ARG_NON }, + { OP_ANYCHAR_ML, "anychar-ml", ARG_NON }, + { OP_ANYCHAR_STAR, "anychar*", ARG_NON }, + { OP_ANYCHAR_ML_STAR, "anychar-ml*", ARG_NON }, + { OP_ANYCHAR_STAR_PEEK_NEXT, "anychar*-peek-next", ARG_SPECIAL }, + { OP_ANYCHAR_ML_STAR_PEEK_NEXT, "anychar-ml*-peek-next", ARG_SPECIAL }, + { OP_WORD, "word", ARG_NON }, + { OP_WORD_ASCII, "word-ascii", ARG_NON }, + { OP_NO_WORD, "not-word", ARG_NON }, + { OP_NO_WORD_ASCII, "not-word-ascii", ARG_NON }, + { OP_WORD_BOUNDARY, "word-boundary", ARG_MODE }, + { OP_NO_WORD_BOUNDARY, "not-word-boundary", ARG_MODE }, + { OP_WORD_BEGIN, "word-begin", ARG_MODE }, + { OP_WORD_END, "word-end", ARG_MODE }, + { OP_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY, "extended-grapheme-cluster-boundary", ARG_NON }, + { OP_NO_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY, "no-extended-grapheme-cluster-boundary", ARG_NON }, + { OP_BEGIN_BUF, "begin-buf", ARG_NON }, + { OP_END_BUF, "end-buf", ARG_NON }, + { OP_BEGIN_LINE, "begin-line", ARG_NON }, + { OP_END_LINE, "end-line", ARG_NON }, + { OP_SEMI_END_BUF, "semi-end-buf", ARG_NON }, + { OP_BEGIN_POSITION, "begin-position", ARG_NON }, + { OP_BACKREF1, "backref1", ARG_NON }, + { OP_BACKREF2, "backref2", ARG_NON }, + { OP_BACKREF_N, "backref-n", ARG_MEMNUM }, + { OP_BACKREF_N_IC, "backref-n-ic", ARG_SPECIAL }, + { OP_BACKREF_MULTI, "backref_multi", ARG_SPECIAL }, + { OP_BACKREF_MULTI_IC, "backref_multi-ic", ARG_SPECIAL }, + { OP_BACKREF_WITH_LEVEL, "backref_with_level", ARG_SPECIAL }, + { OP_BACKREF_CHECK, "backref_check", ARG_SPECIAL }, + { OP_BACKREF_CHECK_WITH_LEVEL, "backref_check_with_level", ARG_SPECIAL }, + { OP_MEMORY_START_PUSH, "mem-start-push", ARG_MEMNUM }, + { OP_MEMORY_START, "mem-start", ARG_MEMNUM }, + { OP_MEMORY_END_PUSH, "mem-end-push", ARG_MEMNUM }, + { OP_MEMORY_END_PUSH_REC, "mem-end-push-rec", ARG_MEMNUM }, + { OP_MEMORY_END, "mem-end", ARG_MEMNUM }, + { OP_MEMORY_END_REC, "mem-end-rec", ARG_MEMNUM }, + { OP_FAIL, "fail", ARG_NON }, + { OP_JUMP, "jump", ARG_RELADDR }, + { OP_PUSH, "push", ARG_RELADDR }, + { OP_PUSH_SUPER, "push-super", ARG_RELADDR }, + { OP_POP_OUT, "pop-out", ARG_NON }, + { OP_PUSH_OR_JUMP_EXACT1, "push-or-jump-e1", ARG_SPECIAL }, + { OP_PUSH_IF_PEEK_NEXT, "push-if-peek-next", ARG_SPECIAL }, + { OP_REPEAT, "repeat", ARG_SPECIAL }, + { OP_REPEAT_NG, "repeat-ng", ARG_SPECIAL }, + { OP_REPEAT_INC, "repeat-inc", ARG_MEMNUM }, + { OP_REPEAT_INC_NG, "repeat-inc-ng", ARG_MEMNUM }, + { OP_REPEAT_INC_SG, "repeat-inc-sg", ARG_MEMNUM }, + { OP_REPEAT_INC_NG_SG, "repeat-inc-ng-sg", ARG_MEMNUM }, + { OP_EMPTY_CHECK_START, "empty-check-start", ARG_MEMNUM }, + { OP_EMPTY_CHECK_END, "empty-check-end", ARG_MEMNUM }, + { OP_EMPTY_CHECK_END_MEMST,"empty-check-end-memst", ARG_MEMNUM }, + { OP_EMPTY_CHECK_END_MEMST_PUSH,"empty-check-end-memst-push", ARG_MEMNUM }, + { OP_PREC_READ_START, "push-pos", ARG_NON }, + { OP_PREC_READ_END, "pop-pos", ARG_NON }, + { OP_PREC_READ_NOT_START, "prec-read-not-start", ARG_RELADDR }, + { OP_PREC_READ_NOT_END, "prec-read-not-end", ARG_NON }, + { OP_ATOMIC_START, "atomic-start", ARG_NON }, + { OP_ATOMIC_END, "atomic-end", ARG_NON }, + { OP_LOOK_BEHIND, "look-behind", ARG_SPECIAL }, + { OP_LOOK_BEHIND_NOT_START, "look-behind-not-start", ARG_SPECIAL }, + { OP_LOOK_BEHIND_NOT_END, "look-behind-not-end", ARG_NON }, + { OP_CALL, "call", ARG_ABSADDR }, + { OP_RETURN, "return", ARG_NON }, + { OP_PUSH_SAVE_VAL, "push-save-val", ARG_SPECIAL }, + { OP_UPDATE_VAR, "update-var", ARG_SPECIAL }, +#ifdef USE_CALLOUT + { OP_CALLOUT_CONTENTS, "callout-contents", ARG_SPECIAL }, + { OP_CALLOUT_NAME, "callout-name", ARG_SPECIAL }, +#endif + { -1, "", ARG_NON } +}; + +static char* +op2name(int opcode) +{ + int i; + + for (i = 0; OpInfo[i].opcode >= 0; i++) { + if (opcode == OpInfo[i].opcode) + return OpInfo[i].name; + } + return ""; +} + +static int +op2arg_type(int opcode) +{ + int i; + + for (i = 0; OpInfo[i].opcode >= 0; i++) { + if (opcode == OpInfo[i].opcode) + return OpInfo[i].arg_type; + } + return ARG_SPECIAL; +} + +static void +p_string(FILE* f, int len, UChar* s) +{ + fputs(":", f); + while (len-- > 0) { fputc(*s++, f); } +} + +static void +p_len_string(FILE* f, LengthType len, int mb_len, UChar* s) +{ + int x = len * mb_len; + + fprintf(f, ":%d:", len); + while (x-- > 0) { fputc(*s++, f); } +} + +static void +p_rel_addr(FILE* f, RelAddrType rel_addr, UChar* p, UChar* start) +{ + RelAddrType curr = (RelAddrType )(p - start); + + fprintf(f, "{%d/%d}", rel_addr, curr + rel_addr); +} + +static int +bitset_on_num(BitSetRef bs) +{ + int i, n; + + n = 0; + for (i = 0; i < SINGLE_BYTE_SIZE; i++) { + if (BITSET_AT(bs, i)) n++; + } + return n; +} + +extern void +onig_print_compiled_byte_code(FILE* f, UChar* bp, UChar** nextp, UChar* start, + OnigEncoding enc) +{ + int i, n; + OpArgType arg_type; + RelAddrType addr; + LengthType len; + MemNumType mem; + OnigCodePoint code; + OnigOptionType option; + ModeType mode; + UChar *q; + + fprintf(f, "%s", op2name(*bp)); + arg_type = op2arg_type(*bp); + if (arg_type != ARG_SPECIAL) { + bp++; + switch (arg_type) { + case ARG_NON: + break; + case ARG_RELADDR: + GET_RELADDR_INC(addr, bp); + fputc(':', f); + p_rel_addr(f, addr, bp, start); + break; + case ARG_ABSADDR: + GET_ABSADDR_INC(addr, bp); + fprintf(f, ":{/%d}", addr); + break; + case ARG_LENGTH: + GET_LENGTH_INC(len, bp); + fprintf(f, ":%d", len); + break; + case ARG_MEMNUM: + mem = *((MemNumType* )bp); + bp += SIZE_MEMNUM; + fprintf(f, ":%d", mem); + break; + case ARG_OPTION: + { + OnigOptionType option = *((OnigOptionType* )bp); + bp += SIZE_OPTION; + fprintf(f, ":%d", option); + } + break; + case ARG_MODE: + mode = *((ModeType* )bp); + bp += SIZE_MODE; + fprintf(f, ":%d", mode); + break; + default: + break; + } + } + else { + switch (*bp++) { + case OP_EXACT1: + case OP_ANYCHAR_STAR_PEEK_NEXT: + case OP_ANYCHAR_ML_STAR_PEEK_NEXT: + p_string(f, 1, bp++); break; + case OP_EXACT2: + p_string(f, 2, bp); bp += 2; break; + case OP_EXACT3: + p_string(f, 3, bp); bp += 3; break; + case OP_EXACT4: + p_string(f, 4, bp); bp += 4; break; + case OP_EXACT5: + p_string(f, 5, bp); bp += 5; break; + case OP_EXACTN: + GET_LENGTH_INC(len, bp); + p_len_string(f, len, 1, bp); + bp += len; + break; + + case OP_EXACTMB2N1: + p_string(f, 2, bp); bp += 2; break; + case OP_EXACTMB2N2: + p_string(f, 4, bp); bp += 4; break; + case OP_EXACTMB2N3: + p_string(f, 6, bp); bp += 6; break; + case OP_EXACTMB2N: + GET_LENGTH_INC(len, bp); + p_len_string(f, len, 2, bp); + bp += len * 2; + break; + case OP_EXACTMB3N: + GET_LENGTH_INC(len, bp); + p_len_string(f, len, 3, bp); + bp += len * 3; + break; + case OP_EXACTMBN: + { + int mb_len; + + GET_LENGTH_INC(mb_len, bp); + GET_LENGTH_INC(len, bp); + fprintf(f, ":%d:%d:", mb_len, len); + n = len * mb_len; + while (n-- > 0) { fputc(*bp++, f); } + } + break; + + case OP_EXACT1_IC: + len = enclen(enc, bp); + p_string(f, len, bp); + bp += len; + break; + case OP_EXACTN_IC: + GET_LENGTH_INC(len, bp); + p_len_string(f, len, 1, bp); + bp += len; + break; + + case OP_CCLASS: + n = bitset_on_num((BitSetRef )bp); + bp += SIZE_BITSET; + fprintf(f, ":%d", n); + break; + + case OP_CCLASS_NOT: + n = bitset_on_num((BitSetRef )bp); + bp += SIZE_BITSET; + fprintf(f, ":%d", n); + break; + + case OP_CCLASS_MB: + case OP_CCLASS_MB_NOT: + GET_LENGTH_INC(len, bp); + q = bp; +#ifndef PLATFORM_UNALIGNED_WORD_ACCESS + ALIGNMENT_RIGHT(q); +#endif + GET_CODE_POINT(code, q); + bp += len; + fprintf(f, ":%d:%d", (int )code, len); + break; + + case OP_CCLASS_MIX: + case OP_CCLASS_MIX_NOT: + n = bitset_on_num((BitSetRef )bp); + bp += SIZE_BITSET; + GET_LENGTH_INC(len, bp); + q = bp; +#ifndef PLATFORM_UNALIGNED_WORD_ACCESS + ALIGNMENT_RIGHT(q); +#endif + GET_CODE_POINT(code, q); + bp += len; + fprintf(f, ":%d:%d:%d", n, (int )code, len); + break; + +#ifdef USE_OP_CCLASS_NODE + case OP_CCLASS_NODE: + { + CClassNode *cc; + + GET_POINTER_INC(cc, bp); + n = bitset_on_num(cc->bs); + fprintf(f, ":%p:%d", cc, n); + } + break; +#endif + + case OP_BACKREF_N_IC: + mem = *((MemNumType* )bp); + bp += SIZE_MEMNUM; + fprintf(f, ":%d", mem); + break; + + case OP_BACKREF_MULTI_IC: + case OP_BACKREF_MULTI: + case OP_BACKREF_CHECK: + fputs(" ", f); + GET_LENGTH_INC(len, bp); + for (i = 0; i < len; i++) { + GET_MEMNUM_INC(mem, bp); + if (i > 0) fputs(", ", f); + fprintf(f, "%d", mem); + } + break; + + case OP_BACKREF_WITH_LEVEL: + GET_OPTION_INC(option, bp); + fprintf(f, ":%d", option); + /* fall */ + case OP_BACKREF_CHECK_WITH_LEVEL: + { + LengthType level; + + GET_LENGTH_INC(level, bp); + fprintf(f, ":%d", level); + + fputs(" ", f); + GET_LENGTH_INC(len, bp); + for (i = 0; i < len; i++) { + GET_MEMNUM_INC(mem, bp); + if (i > 0) fputs(", ", f); + fprintf(f, "%d", mem); + } + } + break; + + case OP_REPEAT: + case OP_REPEAT_NG: + { + mem = *((MemNumType* )bp); + bp += SIZE_MEMNUM; + addr = *((RelAddrType* )bp); + bp += SIZE_RELADDR; + fprintf(f, ":%d:%d", mem, addr); + } + break; + + case OP_PUSH_OR_JUMP_EXACT1: + case OP_PUSH_IF_PEEK_NEXT: + addr = *((RelAddrType* )bp); + bp += SIZE_RELADDR; + fputc(':', f); + p_rel_addr(f, addr, bp, start); + p_string(f, 1, bp); + bp += 1; + break; + + case OP_LOOK_BEHIND: + GET_LENGTH_INC(len, bp); + fprintf(f, ":%d", len); + break; + + case OP_LOOK_BEHIND_NOT_START: + GET_RELADDR_INC(addr, bp); + GET_LENGTH_INC(len, bp); + fprintf(f, ":%d:", len); + p_rel_addr(f, addr, bp, start); + break; + + case OP_PUSH_SAVE_VAL: + { + SaveType type; + GET_SAVE_TYPE_INC(type, bp); + GET_MEMNUM_INC(mem, bp); + fprintf(f, ":%d:%d", type, mem); + } + break; + + case OP_UPDATE_VAR: + { + UpdateVarType type; + GET_UPDATE_VAR_TYPE_INC(type, bp); + GET_MEMNUM_INC(mem, bp); + fprintf(f, ":%d:%d", type, mem); + } + break; + +#ifdef USE_CALLOUT + case OP_CALLOUT_CONTENTS: + { + GET_MEMNUM_INC(mem, bp); /* number */ + fprintf(f, ":%d", mem); + } + break; + + case OP_CALLOUT_NAME: + { + int id; + + GET_MEMNUM_INC(id, bp); /* id */ + GET_MEMNUM_INC(mem, bp); /* number */ + + fprintf(f, ":%d:%d", id, mem); + } + break; +#endif + + default: + fprintf(stderr, "onig_print_compiled_byte_code: undefined code %d\n", *--bp); + } + } + if (nextp) *nextp = bp; +} +#endif /* ONIG_DEBUG */ + +#ifdef ONIG_DEBUG_COMPILE +extern void +onig_print_compiled_byte_code_list(FILE* f, regex_t* reg) +{ + UChar* bp; + UChar* start = reg->p; + UChar* end = reg->p + reg->used; + + fprintf(f, "bt_mem_start: 0x%x, bt_mem_end: 0x%x\n", + reg->bt_mem_start, reg->bt_mem_end); + fprintf(f, "code-length: %d\n", reg->used); + + bp = start; + while (bp < end) { + int pos = bp - start; + + fprintf(f, "%4d: ", pos); + onig_print_compiled_byte_code(f, bp, &bp, start, reg->enc); + fprintf(f, "\n"); + } + fprintf(f, "\n"); +} +#endif + + #ifdef USE_CAPTURE_HISTORY static void history_tree_free(OnigCaptureTreeNode* node); @@ -243,16 +821,15 @@ onig_region_new(void) OnigRegion* r; r = (OnigRegion* )xmalloc(sizeof(OnigRegion)); - if (r != NULL) { - onig_region_init(r); - } + CHECK_NULL_RETURN(r); + onig_region_init(r); return r; } extern void onig_region_free(OnigRegion* r, int free_self) { - if (r) { + if (r != 0) { if (r->allocated > 0) { if (r->beg) xfree(r->beg); if (r->end) xfree(r->end); @@ -276,20 +853,20 @@ onig_region_copy(OnigRegion* to, OnigRegion* from) if (to->allocated == 0) { if (from->num_regs > 0) { to->beg = (int* )xmalloc(RREGC_SIZE); + if (IS_NULL(to->beg)) return; to->end = (int* )xmalloc(RREGC_SIZE); + if (IS_NULL(to->end)) return; to->allocated = from->num_regs; } } else if (to->allocated < from->num_regs) { to->beg = (int* )xrealloc(to->beg, RREGC_SIZE, sizeof(int) * to->allocated); + if (IS_NULL(to->beg)) return; to->end = (int* )xrealloc(to->end, RREGC_SIZE, sizeof(int) * to->allocated); + if (IS_NULL(to->end)) return; to->allocated = from->num_regs; } - if (to->beg == NULL || to->end == NULL) { - return; - } - for (i = 0; i < from->num_regs; i++) { to->beg[i] = from->beg[i]; to->end[i] = from->end[i]; @@ -305,251 +882,604 @@ onig_region_copy(OnigRegion* to, OnigRegion* from) #endif } +#ifdef USE_CALLOUT +#define CALLOUT_BODY(func, ain, aname_id, anum, user, args, result) do { \ + args.in = (ain);\ + args.name_id = (aname_id);\ + args.num = anum;\ + args.regex = reg;\ + args.string = str;\ + args.string_end = end;\ + args.start = sstart;\ + args.right_range = right_range;\ + args.current = s;\ + args.retry_in_match_counter = retry_in_match_counter;\ + args.msa = msa;\ + args.stk_base = stk_base;\ + args.stk = stk;\ + args.mem_start_stk = mem_start_stk;\ + args.mem_end_stk = mem_end_stk;\ + result = (func)(&args, user);\ +} while (0) + +#define RETRACTION_CALLOUT(func, aname_id, anum, user) do {\ + int result;\ + OnigCalloutArgs args;\ + CALLOUT_BODY(func, ONIG_CALLOUT_IN_RETRACTION, aname_id, anum, user, args, result);\ + switch (result) {\ + case ONIG_CALLOUT_FAIL:\ + case ONIG_CALLOUT_SUCCESS:\ + break;\ + default:\ + if (result > 0) {\ + result = ONIGERR_INVALID_ARGUMENT;\ + }\ + best_len = result;\ + goto finish;\ + break;\ + }\ +} while(0) +#endif + /** stack **/ #define INVALID_STACK_INDEX -1 +#define STK_ALT_FLAG 0x0001 + /* stack type */ /* used by normal-POP */ -#define STK_ALT 0x0001 -#define STK_LOOK_BEHIND_NOT 0x0002 -#define STK_POS_NOT 0x0003 +#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 0x0100 -#define STK_MEM_END 0x8200 -#define STK_REPEAT_INC 0x0300 -#define STK_STATE_CHECK_MARK 0x1000 +#define STK_MEM_START 0x0010 +#define STK_MEM_END 0x8030 +#define STK_REPEAT_INC 0x0050 +#ifdef USE_CALLOUT +#define STK_CALLOUT 0x0070 +#endif + /* avoided by normal-POP */ -#define STK_NULL_CHECK_START 0x3000 -#define STK_NULL_CHECK_END 0x5000 /* for recursive call */ -#define STK_MEM_END_MARK 0x8400 -#define STK_POS 0x0500 /* used when POP-POS */ -#define STK_STOP_BT 0x0600 /* mark for "(?>...)" */ -#define STK_REPEAT 0x0700 -#define STK_CALL_FRAME 0x0800 -#define STK_RETURN 0x0900 -#define STK_VOID 0x0a00 /* for fill a blank */ +#define STK_VOID 0x0000 /* for fill a blank */ +#define STK_EMPTY_CHECK_START 0x3000 +#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_SAVE_VAL 0x0600 /* stack type check mask */ -#define STK_MASK_POP_USED 0x00ff -#define STK_MASK_TO_VOID_TARGET 0x10ff +#define STK_MASK_POP_USED STK_ALT_FLAG +#define STK_MASK_POP_HANDLED 0x0010 +#define STK_MASK_POP_HANDLED_TIL (STK_MASK_POP_HANDLED | 0x0004) +#define STK_MASK_TO_VOID_TARGET 0x100e #define STK_MASK_MEM_END_OR_MARK 0x8000 /* MEM_END or MEM_END_MARK */ +typedef intptr_t StackIndex; + +typedef struct _StackType { + unsigned int type; + int zid; + union { + struct { + UChar *pcode; /* byte code position */ + UChar *pstr; /* string position */ + UChar *pstr_prev; /* previous char position of pstr */ + } state; + struct { + int count; /* for OP_REPEAT_INC, OP_REPEAT_INC_NG */ + UChar *pcode; /* byte code position (head of repeated target) */ + } repeat; + struct { + StackIndex si; /* index of stack */ + } repeat_inc; + struct { + UChar *pstr; /* start/end position */ + /* Following information is set, if this stack type is MEM-START */ + StackIndex prev_start; /* prev. info (for backtrack "(...)*" ) */ + StackIndex prev_end; /* prev. info (for backtrack "(...)*" ) */ + } mem; + struct { + UChar *pstr; /* start position */ + } empty_check; +#ifdef USE_CALL + struct { + UChar *ret_addr; /* byte code position */ + UChar *pstr; /* string position */ + } call_frame; +#endif + struct { + enum SaveType type; + UChar* v; + UChar* v2; + } val; +#ifdef USE_CALLOUT + struct { + int num; + OnigCalloutFunc func; + } callout; +#endif + } u; +} StackType; + +#ifdef USE_CALLOUT + +struct OnigCalloutArgsStruct { + OnigCalloutIn in; + int name_id; /* name id or ONIG_NON_NAME_ID */ + int num; + OnigRegex regex; + const OnigUChar* string; + const OnigUChar* string_end; + const OnigUChar* start; + const OnigUChar* right_range; + const OnigUChar* current; /* current matching position */ + unsigned long retry_in_match_counter; + + /* invisible to users */ + MatchArg* msa; + StackType* stk_base; + StackType* stk; + StackIndex* mem_start_stk; + StackIndex* mem_end_stk; +}; + +#endif + + #ifdef USE_FIND_LONGEST_SEARCH_ALL_OF_RANGE -#define MATCH_ARG_INIT(msa, arg_option, arg_region, arg_start) do {\ +#define MATCH_ARG_INIT(msa, reg, arg_option, arg_region, arg_start, mp) do { \ (msa).stack_p = (void* )0;\ (msa).options = (arg_option);\ (msa).region = (arg_region);\ (msa).start = (arg_start);\ + (msa).match_stack_limit = (mp)->match_stack_limit;\ + (msa).retry_limit_in_match = (mp)->retry_limit_in_match;\ + (msa).mp = mp;\ (msa).best_len = ONIG_MISMATCH;\ + (msa).ptr_num = (reg)->num_repeat + ((reg)->num_mem + 1) * 2; \ } while(0) #else -#define MATCH_ARG_INIT(msa, arg_option, arg_region, arg_start) do {\ +#define MATCH_ARG_INIT(msa, reg, arg_option, arg_region, arg_start, mp) do { \ (msa).stack_p = (void* )0;\ (msa).options = (arg_option);\ (msa).region = (arg_region);\ (msa).start = (arg_start);\ + (msa).match_stack_limit = (mp)->match_stack_limit;\ + (msa).retry_limit_in_match = (mp)->retry_limit_in_match;\ + (msa).mp = mp;\ + (msa).ptr_num = (reg)->num_repeat + ((reg)->num_mem + 1) * 2; \ } while(0) #endif -#ifdef USE_COMBINATION_EXPLOSION_CHECK - -#define STATE_CHECK_BUFF_MALLOC_THRESHOLD_SIZE 16 - -#define STATE_CHECK_BUFF_INIT(msa, str_len, offset, state_num) do { \ - if ((state_num) > 0 && str_len >= STATE_CHECK_STRING_THRESHOLD_LEN) {\ - unsigned int size = (unsigned int )(((str_len) + 1) * (state_num) + 7) >> 3;\ - offset = ((offset) * (state_num)) >> 3;\ - if (size > 0 && offset < size && size < STATE_CHECK_BUFF_MAX_SIZE) {\ - if (size >= STATE_CHECK_BUFF_MALLOC_THRESHOLD_SIZE) \ - (msa).state_check_buff = (void* )xmalloc(size);\ - else \ - (msa).state_check_buff = (void* )xalloca(size);\ - xmemset(((char* )((msa).state_check_buff)+(offset)), 0, \ - (size_t )(size - (offset))); \ - (msa).state_check_buff_size = size;\ - }\ - else {\ - (msa).state_check_buff = (void* )0;\ - (msa).state_check_buff_size = 0;\ - }\ - }\ - else {\ - (msa).state_check_buff = (void* )0;\ - (msa).state_check_buff_size = 0;\ - }\ - } while(0) - -#define MATCH_ARG_FREE(msa) do {\ - if ((msa).stack_p) xfree((msa).stack_p);\ - if ((msa).state_check_buff_size >= STATE_CHECK_BUFF_MALLOC_THRESHOLD_SIZE) { \ - if ((msa).state_check_buff) xfree((msa).state_check_buff);\ - }\ -} while(0) -#else -#define STATE_CHECK_BUFF_INIT(msa, str_len, offset, state_num) #define MATCH_ARG_FREE(msa) if ((msa).stack_p) xfree((msa).stack_p) -#endif +#define ALLOCA_PTR_NUM_LIMIT 50 -#define STACK_INIT(alloc_addr, ptr_num, stack_num) do {\ +#define STACK_INIT(stack_num) do {\ if (msa->stack_p) {\ - alloc_addr = (char* )xmalloc(sizeof(char*) * (ptr_num));\ - stk_alloc = (OnigStackType* )(msa->stack_p);\ - stk_base = stk_alloc;\ + is_alloca = 0;\ + alloc_base = msa->stack_p;\ + stk_base = (StackType* )(alloc_base\ + + (sizeof(StackIndex) * msa->ptr_num));\ stk = stk_base;\ stk_end = stk_base + msa->stack_n;\ }\ + else if (msa->ptr_num > ALLOCA_PTR_NUM_LIMIT) {\ + is_alloca = 0;\ + alloc_base = (char* )xmalloc(sizeof(StackIndex) * msa->ptr_num\ + + sizeof(StackType) * (stack_num));\ + CHECK_NULL_RETURN_MEMERR(alloc_base);\ + stk_base = (StackType* )(alloc_base\ + + (sizeof(StackIndex) * msa->ptr_num));\ + stk = stk_base;\ + stk_end = stk_base + (stack_num);\ + }\ else {\ - alloc_addr = (char* )xmalloc(sizeof(char*) * (ptr_num)\ - + sizeof(OnigStackType) * (stack_num));\ - stk_alloc = (OnigStackType* )(alloc_addr + sizeof(char*) * (ptr_num));\ - stk_base = stk_alloc;\ + is_alloca = 1;\ + alloc_base = (char* )xmalloc(sizeof(StackIndex) * msa->ptr_num\ + + sizeof(StackType) * (stack_num));\ + CHECK_NULL_RETURN_MEMERR(alloc_base);\ + stk_base = (StackType* )(alloc_base\ + + (sizeof(StackIndex) * msa->ptr_num));\ stk = stk_base;\ stk_end = stk_base + (stack_num);\ }\ -} while(0) +} while(0); + #define STACK_SAVE do{\ - if (stk_base != stk_alloc) {\ - msa->stack_p = stk_base;\ - msa->stack_n = (int)(stk_end - stk_base);\ + 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;\ };\ } while(0) -static unsigned int MatchStackLimitSize = DEFAULT_MATCH_STACK_LIMIT_SIZE; +#define UPDATE_FOR_STACK_REALLOC do{\ + repeat_stk = (StackIndex* )alloc_base;\ + mem_start_stk = (StackIndex* )(repeat_stk + reg->num_repeat);\ + mem_end_stk = mem_start_stk + num_mem + 1;\ +} while(0) + +static unsigned int MatchStackLimit = DEFAULT_MATCH_STACK_LIMIT_SIZE; extern unsigned int onig_get_match_stack_limit_size(void) { - return MatchStackLimitSize; + return MatchStackLimit; } extern int onig_set_match_stack_limit_size(unsigned int size) { - MatchStackLimitSize = size; + MatchStackLimit = size; return 0; } -static int -stack_double(OnigStackType** arg_stk_base, OnigStackType** arg_stk_end, - OnigStackType** arg_stk, OnigStackType* stk_alloc, OnigMatchArg* msa) -{ - unsigned int n; - OnigStackType *x, *stk_base, *stk_end, *stk; +#ifdef USE_RETRY_LIMIT_IN_MATCH - stk_base = *arg_stk_base; - stk_end = *arg_stk_end; - stk = *arg_stk; +static unsigned long RetryLimitInMatch = DEFAULT_RETRY_LIMIT_IN_MATCH; - n = (unsigned int)(stk_end - stk_base); - if (stk_base == stk_alloc && IS_NULL(msa->stack_p)) { - x = (OnigStackType* )xmalloc(sizeof(OnigStackType) * n * 2); - if (IS_NULL(x)) { - STACK_SAVE; - return ONIGERR_MEMORY; - } - xmemcpy(x, stk_base, n * sizeof(OnigStackType)); - n *= 2; - } - else { - n *= 2; - if (MatchStackLimitSize != 0 && n > MatchStackLimitSize) { - if ((unsigned int )(stk_end - stk_base) == MatchStackLimitSize) - return ONIGERR_MATCH_STACK_LIMIT_OVER; - else - n = MatchStackLimitSize; - } - x = (OnigStackType* )xrealloc(stk_base, sizeof(OnigStackType) * n, sizeof(OnigStackType) * (stk_end - stk_base)); - if (IS_NULL(x)) { - STACK_SAVE; - return ONIGERR_MEMORY; - } - } - *arg_stk = x + (stk - stk_base); - *arg_stk_base = x; - *arg_stk_end = x + n; - return 0; -} +#define CHECK_RETRY_LIMIT_IN_MATCH do {\ + if (retry_in_match_counter++ > retry_limit_in_match) goto retry_limit_in_match_over;\ +} while (0) -#define STACK_ENSURE(n) do {\ - if (stk_end - stk < (n)) {\ - int r = stack_double(&stk_base, &stk_end, &stk, stk_alloc, msa);\ - if (r != 0) { STACK_SAVE; return r; } \ - }\ -} while(0) +#else -#define STACK_AT(index) (stk_base + (index)) -#define GET_STACK_INDEX(stk) ((OnigStackIndex)((stk) - stk_base)) +#define CHECK_RETRY_LIMIT_IN_MATCH -#define STACK_PUSH_TYPE(stack_type) do {\ - STACK_ENSURE(1);\ - stk->type = (stack_type);\ - STACK_INC;\ -} while(0) +#endif /* USE_RETRY_LIMIT_IN_MATCH */ -#define IS_TO_VOID_TARGET(stk) (((stk)->type & STK_MASK_TO_VOID_TARGET) != 0) +extern unsigned long +onig_get_retry_limit_in_match(void) +{ +#ifdef USE_RETRY_LIMIT_IN_MATCH + return RetryLimitInMatch; +#else + /* return ONIG_NO_SUPPORT_CONFIG; */ + return 0; +#endif +} -#ifdef USE_COMBINATION_EXPLOSION_CHECK -#define STATE_CHECK_POS(s,snum) \ - (((s) - str) * num_comb_exp_check + ((snum) - 1)) -#define STATE_CHECK_VAL(v,snum) do {\ - if (state_check_buff != NULL) {\ - int x = STATE_CHECK_POS(s,snum);\ - (v) = state_check_buff[x/8] & (1<<(x%8));\ - }\ - else (v) = 0;\ -} while(0) +extern int +onig_set_retry_limit_in_match(unsigned long size) +{ +#ifdef USE_RETRY_LIMIT_IN_MATCH + RetryLimitInMatch = size; + return 0; +#else + return ONIG_NO_SUPPORT_CONFIG; +#endif +} + +static OnigCalloutFunc DefaultProgressCallout; +static OnigCalloutFunc DefaultRetractionCallout; +extern OnigMatchParam* +onig_new_match_param(void) +{ + OnigMatchParam* p; -#define ELSE_IF_STATE_CHECK_MARK(stk) \ - else if ((stk)->type == STK_STATE_CHECK_MARK) { \ - int x = STATE_CHECK_POS(stk->u.state.pstr, stk->u.state.state_check);\ - state_check_buff[x/8] |= (1<<(x%8)); \ + p = (OnigMatchParam* )xmalloc(sizeof(*p)); + if (IS_NOT_NULL(p)) { + onig_initialize_match_param(p); } -#define STACK_PUSH(stack_type,pat,s,sprev) do {\ - STACK_ENSURE(1);\ - stk->type = (stack_type);\ - stk->u.state.pcode = (pat);\ - stk->u.state.pstr = (s);\ - stk->u.state.pstr_prev = (sprev);\ - stk->u.state.state_check = 0;\ - STACK_INC;\ -} while(0) + return p; +} -#define STACK_PUSH_ENSURED(stack_type,pat) do {\ - stk->type = (stack_type);\ - stk->u.state.pcode = (pat);\ - stk->u.state.state_check = 0;\ - STACK_INC;\ -} while(0) +extern void +onig_free_match_param_content(OnigMatchParam* p) +{ +#ifdef USE_CALLOUT + if (IS_NOT_NULL(p->callout_data)) { + xfree(p->callout_data); + p->callout_data = 0; + } +#endif +} -#define STACK_PUSH_ALT_WITH_STATE_CHECK(pat,s,sprev,snum) do {\ - STACK_ENSURE(1);\ - stk->type = STK_ALT;\ - stk->u.state.pcode = (pat);\ - stk->u.state.pstr = (s);\ - stk->u.state.pstr_prev = (sprev);\ - stk->u.state.state_check = ((state_check_buff != NULL) ? (snum) : 0);\ - STACK_INC;\ -} while(0) +extern void +onig_free_match_param(OnigMatchParam* p) +{ + if (IS_NOT_NULL(p)) { + onig_free_match_param_content(p); + xfree(p); + } +} + +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; +#endif + mp->progress_callout_of_contents = DefaultProgressCallout; + mp->retraction_callout_of_contents = DefaultRetractionCallout; + +#ifdef USE_CALLOUT + mp->match_at_call_counter = 0; + mp->callout_user_data = 0; + mp->callout_data = 0; + mp->callout_data_alloc_num = 0; +#endif + + return ONIG_NORMAL; +} + +#ifdef USE_CALLOUT + +static int +adjust_match_param(regex_t* reg, OnigMatchParam* mp) +{ + RegexExt* ext = REG_EXTP(reg); + + mp->match_at_call_counter = 0; + + if (IS_NULL(ext) || ext->callout_num == 0) return ONIG_NORMAL; + + if (ext->callout_num > mp->callout_data_alloc_num) { + CalloutData* d; + size_t n = ext->callout_num * sizeof(*d); + if (IS_NOT_NULL(mp->callout_data)) + d = (CalloutData* )xrealloc(mp->callout_data, n, mp->callout_data_alloc_num * sizeof(*d)); + else + d = (CalloutData* )xmalloc(n); + CHECK_NULL_RETURN_MEMERR(d); + + mp->callout_data = d; + mp->callout_data_alloc_num = ext->callout_num; + } + + xmemset(mp->callout_data, 0, mp->callout_data_alloc_num * sizeof(CalloutData)); + return ONIG_NORMAL; +} + +#define ADJUST_MATCH_PARAM(reg, mp) \ + r = adjust_match_param(reg, mp);\ + if (r != ONIG_NORMAL) return r; + +#define CALLOUT_DATA_AT_NUM(mp, num) ((mp)->callout_data + ((num) - 1)) + +extern int +onig_check_callout_data_and_clear_old_values(OnigCalloutArgs* args) +{ + OnigMatchParam* mp; + int num; + CalloutData* d; + + mp = args->msa->mp; + num = args->num; + + d = CALLOUT_DATA_AT_NUM(mp, num); + if (d->last_match_at_call_counter != mp->match_at_call_counter) { + xmemset(d, 0, sizeof(*d)); + d->last_match_at_call_counter = mp->match_at_call_counter; + return d->last_match_at_call_counter; + } + + return 0; +} + +extern int +onig_get_callout_data_dont_clear_old(regex_t* reg, OnigMatchParam* mp, + int callout_num, int slot, + OnigType* type, OnigValue* val) +{ + OnigType t; + CalloutData* d; + + if (callout_num <= 0) return ONIGERR_INVALID_ARGUMENT; + + d = CALLOUT_DATA_AT_NUM(mp, callout_num); + t = d->slot[slot].type; + if (IS_NOT_NULL(type)) *type = t; + if (IS_NOT_NULL(val)) *val = d->slot[slot].val; + return (t == ONIG_TYPE_VOID ? 1 : ONIG_NORMAL); +} + +extern int +onig_get_callout_data_by_callout_args_self_dont_clear_old(OnigCalloutArgs* args, + int slot, OnigType* type, + OnigValue* val) +{ + return onig_get_callout_data_dont_clear_old(args->regex, args->msa->mp, + args->num, slot, type, val); +} + +extern int +onig_get_callout_data(regex_t* reg, OnigMatchParam* mp, + int callout_num, int slot, + OnigType* type, OnigValue* val) +{ + OnigType t; + CalloutData* d; + + if (callout_num <= 0) return ONIGERR_INVALID_ARGUMENT; + + d = CALLOUT_DATA_AT_NUM(mp, callout_num); + if (d->last_match_at_call_counter != mp->match_at_call_counter) { + xmemset(d, 0, sizeof(*d)); + d->last_match_at_call_counter = mp->match_at_call_counter; + } + + t = d->slot[slot].type; + if (IS_NOT_NULL(type)) *type = t; + if (IS_NOT_NULL(val)) *val = d->slot[slot].val; + return (t == ONIG_TYPE_VOID ? 1 : ONIG_NORMAL); +} + +extern int +onig_get_callout_data_by_tag(regex_t* reg, OnigMatchParam* mp, + const UChar* tag, const UChar* tag_end, int slot, + OnigType* type, OnigValue* val) +{ + int num; + + num = onig_get_callout_num_by_tag(reg, tag, tag_end); + if (num < 0) return num; + if (num == 0) return ONIGERR_INVALID_CALLOUT_TAG_NAME; + + return onig_get_callout_data(reg, mp, num, slot, type, val); +} + +extern int +onig_get_callout_data_by_callout_args(OnigCalloutArgs* args, + int callout_num, int slot, + OnigType* type, OnigValue* val) +{ + return onig_get_callout_data(args->regex, args->msa->mp, callout_num, slot, + type, val); +} + +extern int +onig_get_callout_data_by_callout_args_self(OnigCalloutArgs* args, + int slot, OnigType* type, OnigValue* val) +{ + return onig_get_callout_data(args->regex, args->msa->mp, args->num, slot, + type, val); +} + +extern int +onig_set_callout_data(regex_t* reg, OnigMatchParam* mp, + int callout_num, int slot, + OnigType type, OnigValue* val) +{ + CalloutData* d; + + if (callout_num <= 0) return ONIGERR_INVALID_ARGUMENT; + + d = CALLOUT_DATA_AT_NUM(mp, callout_num); + d->slot[slot].type = type; + d->slot[slot].val = *val; + d->last_match_at_call_counter = mp->match_at_call_counter; + + return ONIG_NORMAL; +} + +extern int +onig_set_callout_data_by_tag(regex_t* reg, OnigMatchParam* mp, + const UChar* tag, const UChar* tag_end, int slot, + OnigType type, OnigValue* val) +{ + int num; + + num = onig_get_callout_num_by_tag(reg, tag, tag_end); + if (num < 0) return num; + if (num == 0) return ONIGERR_INVALID_CALLOUT_TAG_NAME; + + return onig_set_callout_data(reg, mp, num, slot, type, val); +} + +extern int +onig_set_callout_data_by_callout_args(OnigCalloutArgs* args, + int callout_num, int slot, + OnigType type, OnigValue* val) +{ + return onig_set_callout_data(args->regex, args->msa->mp, callout_num, slot, + type, val); +} + +extern int +onig_set_callout_data_by_callout_args_self(OnigCalloutArgs* args, + int slot, OnigType type, OnigValue* val) +{ + return onig_set_callout_data(args->regex, args->msa->mp, args->num, slot, + type, val); +} + +#else +#define ADJUST_MATCH_PARAM(reg, mp) +#endif /* USE_CALLOUT */ + + +static int +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; + size_t size; + size_t new_size; + char* alloc_base; + char* new_alloc_base; + StackType *stk_base, *stk_end, *stk; + + alloc_base = *arg_alloc_base; + stk_base = *arg_stk_base; + stk_end = *arg_stk_end; + stk = *arg_stk; + + n = (unsigned int )(stk_end - stk_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) { + new_alloc_base = (char* )xmalloc(new_size); + if (IS_NULL(new_alloc_base)) { + STACK_SAVE; + return ONIGERR_MEMORY; + } + xmemcpy(new_alloc_base, alloc_base, size); + } + else { + if (msa->match_stack_limit != 0 && n > msa->match_stack_limit) { + if ((unsigned int )(stk_end - stk_base) == msa->match_stack_limit) + return ONIGERR_MATCH_STACK_LIMIT_OVER; + else + n = msa->match_stack_limit; + } + new_alloc_base = (char* )xrealloc(alloc_base, new_size, size); + if (IS_NULL(new_alloc_base)) { + STACK_SAVE; + return ONIGERR_MEMORY; + } + } + + alloc_base = new_alloc_base; + used = (int )(stk - stk_base); + *arg_alloc_base = alloc_base; + *arg_stk_base = (StackType* )(alloc_base + + (sizeof(StackIndex) * msa->ptr_num)); + *arg_stk = *arg_stk_base + used; + *arg_stk_end = *arg_stk_base + n; + return 0; +} -#define STACK_PUSH_STATE_CHECK(s,snum) do {\ - if (state_check_buff != NULL) {\ - STACK_ENSURE(1);\ - stk->type = STK_STATE_CHECK_MARK;\ - stk->u.state.pstr = (s);\ - stk->u.state.state_check = (snum);\ - STACK_INC;\ +#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;\ + UPDATE_FOR_STACK_REALLOC;\ }\ } while(0) -#else /* USE_COMBINATION_EXPLOSION_CHECK */ +#define STACK_AT(index) (stk_base + (index)) +#define GET_STACK_INDEX(stk) ((stk) - stk_base) + +#define STACK_PUSH_TYPE(stack_type) do {\ + STACK_ENSURE(1);\ + stk->type = (stack_type);\ + STACK_INC;\ +} while(0) -#define ELSE_IF_STATE_CHECK_MARK(stk) +#define IS_TO_VOID_TARGET(stk) (((stk)->type & STK_MASK_TO_VOID_TARGET) != 0) #define STACK_PUSH(stack_type,pat,s,sprev) do {\ STACK_ENSURE(1);\ @@ -565,19 +1495,37 @@ stack_double(OnigStackType** arg_stk_base, OnigStackType** arg_stk_end, stk->u.state.pcode = (pat);\ STACK_INC;\ } while(0) -#endif /* USE_COMBINATION_EXPLOSION_CHECK */ -#define STACK_PUSH_ALT(pat,s,sprev) STACK_PUSH(STK_ALT,pat,s,sprev) -#define STACK_PUSH_POS(s,sprev) STACK_PUSH(STK_POS,NULL_UCHARP,s,sprev) -#define STACK_PUSH_POS_NOT(pat,s,sprev) STACK_PUSH(STK_POS_NOT,pat,s,sprev) -#define STACK_PUSH_STOP_BT STACK_PUSH_TYPE(STK_STOP_BT) -#define STACK_PUSH_LOOK_BEHIND_NOT(pat,s,sprev) \ - STACK_PUSH(STK_LOOK_BEHIND_NOT,pat,s,sprev) +#ifdef ONIG_DEBUG_MATCH +#define STACK_PUSH_BOTTOM(stack_type,pat) do {\ + stk->type = (stack_type);\ + stk->u.state.pcode = (pat);\ + stk->u.state.pstr = s;\ + stk->u.state.pstr_prev = sprev;\ + STACK_INC;\ +} while (0) +#else +#define STACK_PUSH_BOTTOM(stack_type,pat) do {\ + stk->type = (stack_type);\ + stk->u.state.pcode = (pat);\ + STACK_INC;\ +} while (0) +#endif -#define STACK_PUSH_REPEAT(id, pat) do {\ +#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_POS(s,sprev) \ + STACK_PUSH(STK_TO_VOID_START,NULL_UCHARP,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_REPEAT(sid, pat) do {\ STACK_ENSURE(1);\ stk->type = STK_REPEAT;\ - stk->u.repeat.num = (id);\ + stk->zid = (sid);\ stk->u.repeat.pcode = (pat);\ stk->u.repeat.count = 0;\ STACK_INC;\ @@ -593,22 +1541,22 @@ stack_double(OnigStackType** arg_stk_base, OnigStackType** arg_stk_end, #define STACK_PUSH_MEM_START(mnum, s) do {\ STACK_ENSURE(1);\ stk->type = STK_MEM_START;\ - stk->u.mem.num = (int)(mnum);\ - stk->u.mem.pstr = (s);\ - stk->u.mem.start = mem_start_stk[mnum];\ - stk->u.mem.end = mem_end_stk[mnum];\ - mem_start_stk[mnum] = GET_STACK_INDEX(stk);\ - mem_end_stk[mnum] = INVALID_STACK_INDEX;\ + stk->zid = (mnum);\ + stk->u.mem.pstr = (s);\ + stk->u.mem.prev_start = mem_start_stk[mnum];\ + stk->u.mem.prev_end = mem_end_stk[mnum];\ + mem_start_stk[mnum] = GET_STACK_INDEX(stk);\ + mem_end_stk[mnum] = INVALID_STACK_INDEX;\ STACK_INC;\ } while(0) #define STACK_PUSH_MEM_END(mnum, s) do {\ STACK_ENSURE(1);\ stk->type = STK_MEM_END;\ - stk->u.mem.num = (mnum);\ - stk->u.mem.pstr = (s);\ - stk->u.mem.start = mem_start_stk[mnum];\ - stk->u.mem.end = mem_end_stk[mnum];\ + stk->zid = (mnum);\ + stk->u.mem.pstr = (s);\ + stk->u.mem.prev_start = mem_start_stk[mnum];\ + stk->u.mem.prev_end = mem_end_stk[mnum];\ mem_end_stk[mnum] = GET_STACK_INDEX(stk);\ STACK_INC;\ } while(0) @@ -616,7 +1564,7 @@ stack_double(OnigStackType** arg_stk_base, OnigStackType** arg_stk_end, #define STACK_PUSH_MEM_END_MARK(mnum) do {\ STACK_ENSURE(1);\ stk->type = STK_MEM_END_MARK;\ - stk->u.mem.num = (mnum);\ + stk->zid = (mnum);\ STACK_INC;\ } while(0) @@ -626,10 +1574,10 @@ stack_double(OnigStackType** arg_stk_base, OnigStackType** arg_stk_end, while (k > stk_base) {\ k--;\ if ((k->type & STK_MASK_MEM_END_OR_MARK) != 0 \ - && k->u.mem.num == (mnum)) {\ + && k->zid == (mnum)) {\ level++;\ }\ - else if (k->type == STK_MEM_START && k->u.mem.num == (mnum)) {\ + else if (k->type == STK_MEM_START && k->zid == (mnum)) {\ if (level == 0) break;\ level--;\ }\ @@ -654,18 +1602,18 @@ stack_double(OnigStackType** arg_stk_base, OnigStackType** arg_stk_end, }\ } while(0) -#define STACK_PUSH_NULL_CHECK_START(cnum, s) do {\ +#define STACK_PUSH_EMPTY_CHECK_START(cnum, s) do {\ STACK_ENSURE(1);\ - stk->type = STK_NULL_CHECK_START;\ - stk->u.null_check.num = (cnum);\ - stk->u.null_check.pstr = (s);\ + stk->type = STK_EMPTY_CHECK_START;\ + stk->zid = (cnum);\ + stk->u.empty_check.pstr = (s);\ STACK_INC;\ } while(0) -#define STACK_PUSH_NULL_CHECK_END(cnum) do {\ +#define STACK_PUSH_EMPTY_CHECK_END(cnum) do {\ STACK_ENSURE(1);\ - stk->type = STK_NULL_CHECK_END;\ - stk->u.null_check.num = (cnum);\ + stk->type = STK_EMPTY_CHECK_END;\ + stk->zid = (cnum);\ STACK_INC;\ } while(0) @@ -682,6 +1630,115 @@ stack_double(OnigStackType** arg_stk_base, OnigStackType** arg_stk_end, STACK_INC;\ } while(0) +#define STACK_PUSH_SAVE_VAL(sid, stype, sval) do {\ + STACK_ENSURE(1);\ + stk->type = STK_SAVE_VAL;\ + stk->zid = (sid);\ + stk->u.val.type = (stype);\ + stk->u.val.v = (UChar* )(sval);\ + STACK_INC;\ +} while(0) + +#define STACK_PUSH_SAVE_VAL_WITH_SPREV(sid, stype, sval) do {\ + STACK_ENSURE(1);\ + stk->type = STK_SAVE_VAL;\ + stk->zid = (sid);\ + stk->u.val.type = (stype);\ + stk->u.val.v = (UChar* )(sval);\ + stk->u.val.v2 = sprev;\ + STACK_INC;\ +} while(0) + +#define STACK_GET_SAVE_VAL_TYPE_LAST(stype, sval) do {\ + StackType *k = stk;\ + while (k > stk_base) {\ + k--;\ + STACK_BASE_CHECK(k, "STACK_GET_SAVE_VAL_TYPE_LAST"); \ + if (k->type == STK_SAVE_VAL && k->u.val.type == (stype)) {\ + (sval) = k->u.val.v;\ + break;\ + }\ + }\ +} while (0) + +#define STACK_GET_SAVE_VAL_TYPE_LAST_ID(stype, sid, sval) do { \ + int level = 0;\ + StackType *k = stk;\ + while (k > stk_base) {\ + k--;\ + STACK_BASE_CHECK(k, "STACK_GET_SAVE_VAL_TYPE_LAST_ID"); \ + if (k->type == STK_SAVE_VAL && k->u.val.type == (stype)\ + && k->zid == (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++;\ + }\ +} while (0) + +#define STACK_GET_SAVE_VAL_TYPE_LAST_ID_WITH_SPREV(stype, sid, sval) do { \ + int level = 0;\ + StackType *k = stk;\ + while (k > stk_base) {\ + k--;\ + STACK_BASE_CHECK(k, "STACK_GET_SAVE_VAL_TYPE_LAST_ID"); \ + if (k->type == STK_SAVE_VAL && k->u.val.type == (stype)\ + && k->zid == (sid)) {\ + if (level == 0) {\ + (sval) = k->u.val.v;\ + sprev = k->u.val.v2;\ + break;\ + }\ + }\ + else if (k->type == STK_CALL_FRAME)\ + level--;\ + else if (k->type == STK_RETURN)\ + level++;\ + }\ +} 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;\ + stk->zid = ONIG_NON_NAME_ID;\ + stk->u.callout.num = (anum);\ + stk->u.callout.func = (func);\ + STACK_INC;\ +} while(0) + +#define STACK_PUSH_CALLOUT_NAME(aid, anum, func) do {\ + STACK_ENSURE(1);\ + stk->type = STK_CALLOUT;\ + stk->zid = (aid);\ + stk->u.callout.num = (anum);\ + stk->u.callout.func = (func);\ + STACK_INC;\ +} while(0) #ifdef ONIG_DEBUG #define STACK_BASE_CHECK(p, at) \ @@ -698,6 +1755,16 @@ stack_double(OnigStackType** arg_stk_base, OnigStackType** arg_stk_end, STACK_BASE_CHECK(stk, "STACK_POP_ONE"); \ } while(0) + +#ifdef USE_CALLOUT +#define POP_CALLOUT_CASE \ + else if (stk->type == STK_CALLOUT) {\ + RETRACTION_CALLOUT(stk->u.callout.func, stk->zid, stk->u.callout.num, msa->mp->callout_user_data);\ + } +#else +#define POP_CALLOUT_CASE +#endif + #define STACK_POP do {\ switch (pop_level) {\ case STACK_POP_LEVEL_FREE:\ @@ -705,7 +1772,6 @@ stack_double(OnigStackType** arg_stk_base, OnigStackType** arg_stk_end, stk--;\ STACK_BASE_CHECK(stk, "STACK_POP"); \ if ((stk->type & STK_MASK_POP_USED) != 0) break;\ - ELSE_IF_STATE_CHECK_MARK(stk);\ }\ break;\ case STACK_POP_LEVEL_MEM_START:\ @@ -714,10 +1780,9 @@ stack_double(OnigStackType** arg_stk_base, OnigStackType** arg_stk_end, STACK_BASE_CHECK(stk, "STACK_POP 2"); \ if ((stk->type & STK_MASK_POP_USED) != 0) break;\ else if (stk->type == STK_MEM_START) {\ - mem_start_stk[stk->u.mem.num] = stk->u.mem.start;\ - mem_end_stk[stk->u.mem.num] = stk->u.mem.end;\ + mem_start_stk[stk->zid] = stk->u.mem.prev_start;\ + mem_end_stk[stk->zid] = stk->u.mem.prev_end;\ }\ - ELSE_IF_STATE_CHECK_MARK(stk);\ }\ break;\ default:\ @@ -725,136 +1790,108 @@ stack_double(OnigStackType** arg_stk_base, OnigStackType** arg_stk_end, stk--;\ STACK_BASE_CHECK(stk, "STACK_POP 3"); \ if ((stk->type & STK_MASK_POP_USED) != 0) break;\ - else if (stk->type == STK_MEM_START) {\ - mem_start_stk[stk->u.mem.num] = stk->u.mem.start;\ - mem_end_stk[stk->u.mem.num] = stk->u.mem.end;\ - }\ - else if (stk->type == STK_REPEAT_INC) {\ - STACK_AT(stk->u.repeat_inc.si)->u.repeat.count--;\ - }\ - else if (stk->type == STK_MEM_END) {\ - mem_start_stk[stk->u.mem.num] = stk->u.mem.start;\ - mem_end_stk[stk->u.mem.num] = stk->u.mem.end;\ + else if ((stk->type & STK_MASK_POP_HANDLED) != 0) {\ + 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_REPEAT_INC) {\ + STACK_AT(stk->u.repeat_inc.si)->u.repeat.count--;\ + }\ + 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_CALLOUT_CASE\ }\ - ELSE_IF_STATE_CHECK_MARK(stk);\ }\ break;\ }\ } while(0) -#define STACK_POP_TIL_POS_NOT do {\ +#define POP_TIL_BODY(aname, til_type) do {\ while (1) {\ stk--;\ - STACK_BASE_CHECK(stk, "STACK_POP_TIL_POS_NOT"); \ - if (stk->type == STK_POS_NOT) break;\ - else if (stk->type == STK_MEM_START) {\ - mem_start_stk[stk->u.mem.num] = stk->u.mem.start;\ - mem_end_stk[stk->u.mem.num] = stk->u.mem.end;\ - }\ - else if (stk->type == STK_REPEAT_INC) {\ - STACK_AT(stk->u.repeat_inc.si)->u.repeat.count--;\ - }\ - else if (stk->type == STK_MEM_END) {\ - mem_start_stk[stk->u.mem.num] = stk->u.mem.start;\ - mem_end_stk[stk->u.mem.num] = stk->u.mem.end;\ + 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_REPEAT_INC) {\ + STACK_AT(stk->u.repeat_inc.si)->u.repeat.count--;\ + }\ + 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;\ + }\ + /* Don't call callout here because negation of total success by (?!..) (?type == STK_LOOK_BEHIND_NOT) break;\ - else if (stk->type == STK_MEM_START) {\ - mem_start_stk[stk->u.mem.num] = stk->u.mem.start;\ - mem_end_stk[stk->u.mem.num] = stk->u.mem.end;\ - }\ - else if (stk->type == STK_REPEAT_INC) {\ - STACK_AT(stk->u.repeat_inc.si)->u.repeat.count--;\ - }\ - else if (stk->type == STK_MEM_END) {\ - mem_start_stk[stk->u.mem.num] = stk->u.mem.start;\ - mem_end_stk[stk->u.mem.num] = stk->u.mem.end;\ - }\ - ELSE_IF_STATE_CHECK_MARK(stk);\ - }\ +#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_POS_END(k) do {\ - k = stk;\ - while (1) {\ - k--;\ - STACK_BASE_CHECK(k, "STACK_POS_END"); \ - if (IS_TO_VOID_TARGET(k)) {\ - k->type = STK_VOID;\ - }\ - else if (k->type == STK_POS) {\ - k->type = STK_VOID;\ - break;\ - }\ - }\ +#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_STOP_BT_END do {\ - OnigStackType *k = stk;\ + +#define STACK_EXEC_TO_VOID(k) do {\ + k = stk;\ while (1) {\ k--;\ - STACK_BASE_CHECK(k, "STACK_STOP_BT_END"); \ + 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;\ + }\ k->type = STK_VOID;\ }\ - else if (k->type == STK_STOP_BT) {\ - k->type = STK_VOID;\ - break;\ - }\ }\ } while(0) -#define STACK_NULL_CHECK(isnull,id,s) do {\ - OnigStackType* k = stk;\ +#define STACK_EMPTY_CHECK(isnull,sid,s) do {\ + StackType* k = stk;\ while (1) {\ k--;\ - STACK_BASE_CHECK(k, "STACK_NULL_CHECK"); \ - if (k->type == STK_NULL_CHECK_START) {\ - if (k->u.null_check.num == (id)) {\ - (isnull) = (k->u.null_check.pstr == (s));\ + STACK_BASE_CHECK(k, "STACK_EMPTY_CHECK"); \ + if (k->type == STK_EMPTY_CHECK_START) {\ + if (k->zid == (sid)) {\ + (isnull) = (k->u.empty_check.pstr == (s));\ break;\ }\ }\ }\ } while(0) -#define STACK_NULL_CHECK_REC(isnull,id,s) do {\ - int level = 0;\ - OnigStackType* k = stk;\ - while (1) {\ - k--;\ - STACK_BASE_CHECK(k, "STACK_NULL_CHECK_REC"); \ - if (k->type == STK_NULL_CHECK_START) {\ - if (k->u.null_check.num == (id)) {\ - if (level == 0) {\ - (isnull) = (k->u.null_check.pstr == (s));\ - break;\ - }\ - else level--;\ - }\ - }\ - else if (k->type == STK_NULL_CHECK_END) {\ - level++;\ - }\ +#define STACK_MEM_START_GET_PREV_END_ADDR(k /* STK_MEM_START*/, reg, addr) do {\ + if (k->u.mem.prev_end == INVALID_STACK_INDEX) {\ + (addr) = 0;\ }\ -} while(0) + else {\ + if (MEM_STATUS_AT((reg)->bt_mem_end, k->zid))\ + (addr) = STACK_AT(k->u.mem.prev_end)->u.mem.pstr;\ + else\ + (addr) = (UChar* )k->u.mem.prev_end;\ + }\ +} while (0) -#define STACK_NULL_CHECK_MEMST(isnull,id,s,reg) do {\ - OnigStackType* k = stk;\ +#ifdef USE_INSISTENT_CHECK_CAPTURES_IN_EMPTY_REPEAT +#define STACK_EMPTY_CHECK_MEM(isnull,sid,s,reg) do {\ + StackType* k = stk;\ while (1) {\ k--;\ - STACK_BASE_CHECK(k, "STACK_NULL_CHECK_MEMST"); \ - if (k->type == STK_NULL_CHECK_START) {\ - if (k->u.null_check.num == (id)) {\ - if (k->u.null_check.pstr != (s)) {\ + STACK_BASE_CHECK(k, "STACK_EMPTY_CHECK_MEM"); \ + if (k->type == STK_EMPTY_CHECK_START) {\ + if (k->zid == (sid)) {\ + if (k->u.empty_check.pstr != (s)) {\ (isnull) = 0;\ break;\ }\ @@ -863,14 +1900,11 @@ stack_double(OnigStackType** arg_stk_base, OnigStackType** arg_stk_end, (isnull) = 1;\ while (k < stk) {\ if (k->type == STK_MEM_START) {\ - if (k->u.mem.end == INVALID_STACK_INDEX) {\ + STACK_MEM_START_GET_PREV_END_ADDR(k, reg, endp);\ + if (endp == 0) {\ (isnull) = 0; break;\ }\ - if (BIT_STATUS_AT(reg->bt_mem_end, k->u.mem.num))\ - endp = STACK_AT(k->u.mem.end)->u.mem.pstr;\ - else\ - endp = (UChar* )(UINTN)k->u.mem.end;\ - if (STACK_AT(k->u.mem.start)->u.mem.pstr != endp) {\ + else if (STACK_AT(k->u.mem.prev_start)->u.mem.pstr != endp) {\ (isnull) = 0; break;\ }\ else if (endp != s) {\ @@ -879,23 +1913,23 @@ stack_double(OnigStackType** arg_stk_base, OnigStackType** arg_stk_end, }\ k++;\ }\ - break;\ + break;\ }\ }\ }\ }\ } while(0) -#define STACK_NULL_CHECK_MEMST_REC(isnull,id,s,reg) do {\ +#define STACK_EMPTY_CHECK_MEM_REC(isnull,sid,s,reg) do {\ int level = 0;\ - OnigStackType* k = stk;\ + StackType* k = stk;\ while (1) {\ k--;\ - STACK_BASE_CHECK(k, "STACK_NULL_CHECK_MEMST_REC"); \ - if (k->type == STK_NULL_CHECK_START) {\ - if (k->u.null_check.num == (id)) {\ + STACK_BASE_CHECK(k, "STACK_EMPTY_CHECK_MEM_REC");\ + if (k->type == STK_EMPTY_CHECK_START) {\ + if (k->zid == (sid)) {\ if (level == 0) {\ - if (k->u.null_check.pstr != (s)) {\ + if (k->u.empty_check.pstr != (s)) {\ (isnull) = 0;\ break;\ }\ @@ -904,23 +1938,28 @@ stack_double(OnigStackType** arg_stk_base, OnigStackType** arg_stk_end, (isnull) = 1;\ while (k < stk) {\ if (k->type == STK_MEM_START) {\ - if (k->u.mem.end == INVALID_STACK_INDEX) {\ - (isnull) = 0; break;\ - }\ - if (BIT_STATUS_AT(reg->bt_mem_end, k->u.mem.num))\ - endp = STACK_AT(k->u.mem.end)->u.mem.pstr;\ - else\ - endp = (UChar* )(UINTN)k->u.mem.end;\ - if (STACK_AT(k->u.mem.start)->u.mem.pstr != endp) {\ - (isnull) = 0; break;\ - }\ - else if (endp != s) {\ - (isnull) = -1; /* empty, but position changed */ \ + if (level == 0) {\ + STACK_MEM_START_GET_PREV_END_ADDR(k, reg, endp);\ + if (endp == 0) {\ + (isnull) = 0; break;\ + }\ + else if (STACK_AT(k->u.mem.prev_start)->u.mem.pstr != endp) { \ + (isnull) = 0; break;\ + }\ + else if (endp != s) {\ + (isnull) = -1; /* empty, but position changed */\ + }\ }\ }\ + else if (k->type == STK_EMPTY_CHECK_START) {\ + if (k->zid == (sid)) level++;\ + }\ + else if (k->type == STK_EMPTY_CHECK_END) {\ + if (k->zid == (sid)) level--;\ + }\ k++;\ }\ - break;\ + break;\ }\ }\ else {\ @@ -928,13 +1967,35 @@ stack_double(OnigStackType** arg_stk_base, OnigStackType** arg_stk_end, }\ }\ }\ - else if (k->type == STK_NULL_CHECK_END) {\ - if (k->u.null_check.num == (id)) level++;\ + else if (k->type == STK_EMPTY_CHECK_END) {\ + if (k->zid == (sid)) level++;\ + }\ + }\ +} while(0) +#else +#define STACK_EMPTY_CHECK_REC(isnull,id,s) do {\ + int level = 0;\ + StackType* k = stk;\ + while (1) {\ + k--;\ + STACK_BASE_CHECK(k, "STACK_EMPTY_CHECK_REC"); \ + if (k->type == STK_EMPTY_CHECK_START) {\ + if (k->u.empty_check.num == (id)) {\ + if (level == 0) {\ + (isnull) = (k->u.empty_check.pstr == (s));\ + break;\ + }\ + }\ + level--;\ + }\ + else if (k->type == STK_EMPTY_CHECK_END) {\ + level++;\ }\ }\ } while(0) +#endif /* USE_INSISTENT_CHECK_CAPTURES_IN_EMPTY_REPEAT */ -#define STACK_GET_REPEAT(id, k) do {\ +#define STACK_GET_REPEAT(sid, k) do {\ int level = 0;\ k = stk;\ while (1) {\ @@ -942,7 +2003,7 @@ stack_double(OnigStackType** arg_stk_base, OnigStackType** arg_stk_end, STACK_BASE_CHECK(k, "STACK_GET_REPEAT"); \ if (k->type == STK_REPEAT) {\ if (level == 0) {\ - if (k->u.repeat.num == (id)) {\ + if (k->zid == (sid)) {\ break;\ }\ }\ @@ -954,7 +2015,7 @@ stack_double(OnigStackType** arg_stk_base, OnigStackType** arg_stk_end, #define STACK_RETURN(addr) do {\ int level = 0;\ - OnigStackType* k = stk;\ + StackType* k = stk;\ while (1) {\ k--;\ STACK_BASE_CHECK(k, "STACK_RETURN"); \ @@ -983,7 +2044,7 @@ stack_double(OnigStackType** arg_stk_base, OnigStackType** arg_stk_end, } while(0) static int string_cmp_ic(OnigEncoding enc, int case_fold_flag, - UChar* s1, UChar** ps2, int mblen) + UChar* s1, UChar** ps2, int mblen) { UChar buf1[ONIGENC_MBC_CASE_FOLD_MAXLEN]; UChar buf2[ONIGENC_MBC_CASE_FOLD_MAXLEN]; @@ -1028,33 +2089,28 @@ static int string_cmp_ic(OnigEncoding enc, int case_fold_flag, #define IS_EMPTY_STR (str == end) -#define ON_STR_BEGIN(s) ((s) == str) -#define ON_STR_END(s) ((s) == end) -#ifdef USE_MATCH_RANGE_MUST_BE_INSIDE_OF_SPECIFIED_RANGE +#define ON_STR_BEGIN(s) ((s) == str) +#define ON_STR_END(s) ((s) == end) #define DATA_ENSURE_CHECK1 (s < right_range) #define DATA_ENSURE_CHECK(n) (s + (n) <= right_range) #define DATA_ENSURE(n) if (s + (n) > right_range) goto fail -#else -#define DATA_ENSURE_CHECK1 (s < end) -#define DATA_ENSURE_CHECK(n) (s + (n) <= end) -#define DATA_ENSURE(n) if (s + (n) > end) goto fail -#endif /* USE_MATCH_RANGE_MUST_BE_INSIDE_OF_SPECIFIED_RANGE */ +#define INIT_RIGHT_RANGE right_range = (UChar* )in_right_range #ifdef USE_CAPTURE_HISTORY static int -make_capture_history_tree(OnigCaptureTreeNode* node, OnigStackType** kp, - OnigStackType* stk_top, UChar* str, regex_t* reg) +make_capture_history_tree(OnigCaptureTreeNode* node, StackType** kp, + StackType* stk_top, UChar* str, regex_t* reg) { int n, r; OnigCaptureTreeNode* child; - OnigStackType* k = *kp; + StackType* k = *kp; while (k < stk_top) { if (k->type == STK_MEM_START) { - n = k->u.mem.num; + n = k->zid; if (n <= ONIG_MAX_CAPTURE_HISTORY_GROUP && - BIT_STATUS_AT(reg->capture_history, n) != 0) { + MEM_STATUS_AT(reg->capture_history, n) != 0) { child = history_node_new(); CHECK_NULL_RETURN_MEMERR(child); child->group = n; @@ -1070,7 +2126,7 @@ make_capture_history_tree(OnigCaptureTreeNode* node, OnigStackType** kp, } } else if (k->type == STK_MEM_END) { - if (k->u.mem.num == node->group) { + if (k->zid == node->group) { node->end = (int )(k->u.mem.pstr - str); *kp = k; return 0; @@ -1096,14 +2152,16 @@ static int mem_is_in_memp(int mem, int num, UChar* memp) return 0; } -static int backref_match_at_nested_level(regex_t* reg - , OnigStackType* top, OnigStackType* stk_base - , int ignore_case, int case_fold_flag - , int nest, int mem_num, UChar* memp, UChar** s, const UChar* send) +static int +backref_match_at_nested_level(regex_t* reg, + StackType* top, StackType* stk_base, + int ignore_case, int case_fold_flag, + int nest, int mem_num, UChar* memp, + UChar** s, const UChar* send) { UChar *ss, *p, *pstart, *pend = NULL_UCHARP; int level; - OnigStackType* k; + StackType* k; level = 0; k = top; @@ -1117,33 +2175,64 @@ static int backref_match_at_nested_level(regex_t* reg } else if (level == nest) { if (k->type == STK_MEM_START) { - if (mem_is_in_memp(k->u.mem.num, mem_num, memp)) { - pstart = k->u.mem.pstr; - if (pend != NULL_UCHARP) { - if (pend - pstart > send - *s) return 0; /* or goto next_mem; */ - p = pstart; - ss = *s; - - if (ignore_case != 0) { - if (string_cmp_ic(reg->enc, case_fold_flag, - pstart, &ss, (int )(pend - pstart)) == 0) - return 0; /* or goto next_mem; */ - } - else { - while (p < pend) { - if (*p++ != *ss++) return 0; /* or goto next_mem; */ - } - } - - *s = ss; - return 1; - } - } + if (mem_is_in_memp(k->zid, mem_num, memp)) { + pstart = k->u.mem.pstr; + if (IS_NOT_NULL(pend)) { + if (pend - pstart > send - *s) return 0; /* or goto next_mem; */ + p = pstart; + ss = *s; + + if (ignore_case != 0) { + if (string_cmp_ic(reg->enc, case_fold_flag, + pstart, &ss, (int )(pend - pstart)) == 0) + return 0; /* or goto next_mem; */ + } + else { + while (p < pend) { + if (*p++ != *ss++) return 0; /* or goto next_mem; */ + } + } + + *s = ss; + return 1; + } + } } else if (k->type == STK_MEM_END) { - if (mem_is_in_memp(k->u.mem.num, mem_num, memp)) { - pend = k->u.mem.pstr; - } + if (mem_is_in_memp(k->zid, mem_num, memp)) { + pend = k->u.mem.pstr; + } + } + } + k--; + } + + return 0; +} + +static int +backref_check_at_nested_level(regex_t* reg, + StackType* top, StackType* stk_base, + int nest, int mem_num, UChar* memp) +{ + int level; + StackType* k; + + level = 0; + k = top; + k--; + while (k >= stk_base) { + if (k->type == STK_CALL_FRAME) { + level--; + } + else if (k->type == STK_RETURN) { + level++; + } + else if (level == nest) { + if (k->type == STK_MEM_END) { + if (mem_is_in_memp(k->zid, mem_num, memp)) { + return 1; + } } } k--; @@ -1185,14 +2274,14 @@ static int OpCurr = OP_FINISH; static int OpPrevTarget = OP_FAIL; static int MaxStackDepth = 0; -#define MOP_IN(opcode) do {\ +#define SOP_IN(opcode) do {\ if (opcode == OpPrevTarget) OpPrevCounter[OpCurr]++;\ OpCurr = opcode;\ OpCounter[opcode]++;\ GETTIME(ts);\ } while(0) -#define MOP_OUT do {\ +#define SOP_OUT do {\ GETTIME(te);\ OpTime[OpCurr] += TIMEDIFF(te, ts);\ } while(0) @@ -1207,16 +2296,24 @@ onig_statistics_init(void) MaxStackDepth = 0; } -extern void +extern int onig_print_statistics(FILE* f) { + int r; int i; - fprintf(f, " count prev time\n"); - for (i = 0; OnigOpInfo[i].opcode >= 0; i++) { - fprintf(f, "%8d: %8d: %10ld: %s\n", - OpCounter[i], OpPrevCounter[i], OpTime[i], OnigOpInfo[i].name); + + r = fprintf(f, " count prev time\n"); + if (r < 0) return -1; + + for (i = 0; OpInfo[i].opcode >= 0; i++) { + r = fprintf(f, "%8d: %8d: %10ld: %s\n", + OpCounter[i], OpPrevCounter[i], OpTime[i], OpInfo[i].name); + if (r < 0) return -1; } - fprintf(f, "\nmax stack depth: %d\n", MaxStackDepth); + r = fprintf(f, "\nmax stack depth: %d\n", MaxStackDepth); + if (r < 0) return -1; + + return 0; } #define STACK_INC do {\ @@ -1228,8 +2325,8 @@ onig_print_statistics(FILE* f) #else #define STACK_INC stk++ -#define MOP_IN(opcode) -#define MOP_OUT +#define SOP_IN(opcode) +#define SOP_OUT #endif @@ -1245,10 +2342,8 @@ typedef struct { /* if sstart == str then set sprev to NULL. */ static int match_at(regex_t* reg, const UChar* str, const UChar* end, -#ifdef USE_MATCH_RANGE_MUST_BE_INSIDE_OF_SPECIFIED_RANGE - const UChar* right_range, -#endif - const UChar* sstart, UChar* sprev, OnigMatchArg* msa) + const UChar* in_right_range, const UChar* sstart, UChar* sprev, + MatchArg* msa) { static UChar FinishCode[] = { OP_FINISH }; @@ -1256,133 +2351,159 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, LengthType tlen, tlen2; MemNumType mem; RelAddrType addr; + UChar *s, *q, *sbegin; + UChar *right_range; + int is_alloca; + char *alloc_base; + StackType *stk_base, *stk, *stk_end; + StackType *stkp; /* used as any purpose. */ + StackIndex si; + StackIndex *repeat_stk; + StackIndex *mem_start_stk, *mem_end_stk; + UChar* keep; +#ifdef USE_RETRY_LIMIT_IN_MATCH + unsigned long retry_limit_in_match; + unsigned long retry_in_match_counter; +#endif + +#ifdef USE_CALLOUT + int of; +#endif + + UChar *p = reg->p; OnigOptionType option = reg->options; OnigEncoding encode = reg->enc; OnigCaseFoldType case_fold_flag = reg->case_fold_flag; - UChar *s, *q, *sbegin; - UChar *p = reg->p; - char *alloca_base; - OnigStackType *stk_alloc, *stk_base, *stk, *stk_end; - OnigStackType *stkp; /* used as any purpose. */ - OnigStackIndex si; - OnigStackIndex *repeat_stk; - OnigStackIndex *mem_start_stk, *mem_end_stk; -#ifdef USE_COMBINATION_EXPLOSION_CHECK - int scv; - unsigned char* state_check_buff = msa->state_check_buff; - int num_comb_exp_check = reg->num_comb_exp_check; -#endif - n = reg->num_repeat + reg->num_mem * 2; - - STACK_INIT(alloca_base, n, INIT_MATCH_STACK_SIZE); + +#ifdef USE_CALLOUT + msa->mp->match_at_call_counter++; +#endif + +#ifdef USE_RETRY_LIMIT_IN_MATCH + retry_limit_in_match = msa->retry_limit_in_match; +#endif + pop_level = reg->stack_pop_level; num_mem = reg->num_mem; - repeat_stk = (OnigStackIndex* )alloca_base; - - mem_start_stk = (OnigStackIndex* )(repeat_stk + reg->num_repeat); - mem_end_stk = mem_start_stk + num_mem; - mem_start_stk--; /* for index start from 1, - mem_start_stk[1]..mem_start_stk[num_mem] */ - mem_end_stk--; /* for index start from 1, - mem_end_stk[1]..mem_end_stk[num_mem] */ + STACK_INIT(INIT_MATCH_STACK_SIZE); + UPDATE_FOR_STACK_REALLOC; for (i = 1; i <= num_mem; i++) { mem_start_stk[i] = mem_end_stk[i] = INVALID_STACK_INDEX; } #ifdef ONIG_DEBUG_MATCH - fprintf(stderr, "match_at: str: %d, end: %d, start: %d, sprev: %d\n", - (int )str, (int )end, (int )sstart, (int )sprev); + fprintf(stderr, "match_at: str: %p, end: %p, start: %p, sprev: %p\n", + str, end, sstart, sprev); fprintf(stderr, "size: %d, start offset: %d\n", - (int )(end - str), (int )(sstart - str)); + (int )(end - str), (int )(sstart - str)); #endif - STACK_PUSH_ENSURED(STK_ALT, FinishCode); /* bottom stack */ best_len = ONIG_MISMATCH; - s = (UChar* )sstart; + keep = s = (UChar* )sstart; + STACK_PUSH_BOTTOM(STK_ALT, FinishCode); /* bottom stack */ + INIT_RIGHT_RANGE; + +#ifdef USE_RETRY_LIMIT_IN_MATCH + retry_in_match_counter = 0; +#endif + while (1) { #ifdef ONIG_DEBUG_MATCH { + static unsigned int counter = 1; + UChar *q, *bp, buf[50]; int len; - fprintf(stderr, "%4d> \"", (int )(s - str)); + fprintf(stderr, "%7u: %7ld: %4d> \"", + counter, GET_STACK_INDEX(stk), (int )(s - str)); + counter++; + bp = buf; for (i = 0, q = s; i < 7 && q < end; i++) { - len = enclen(encode, q); - while (len-- > 0) *bp++ = *q++; + len = enclen(encode, q); + while (len-- > 0) *bp++ = *q++; } if (q < end) { xmemcpy(bp, "...\"", 4); bp += 4; } else { xmemcpy(bp, "\"", 1); bp += 1; } *bp = 0; fputs((char* )buf, stderr); + for (i = 0; i < 20 - (bp - buf); i++) fputc(' ', stderr); - onig_print_compiled_byte_code(stderr, p, NULL, encode); + if (p == FinishCode) + fprintf(stderr, "----: "); + else + fprintf(stderr, "%4d: ", (int )(p - reg->p)); + onig_print_compiled_byte_code(stderr, p, NULL, reg->p, encode); fprintf(stderr, "\n"); } #endif sbegin = s; switch (*p++) { - case OP_END: MOP_IN(OP_END); - n = (int)(s - sstart); + case OP_END: SOP_IN(OP_END); + n = (int )(s - sstart); if (n > best_len) { - OnigRegion* region; + OnigRegion* region; #ifdef USE_FIND_LONGEST_SEARCH_ALL_OF_RANGE - if (IS_FIND_LONGEST(option)) { - if (n > msa->best_len) { - msa->best_len = n; - msa->best_s = (UChar* )sstart; - } - else - goto end_best_len; + if (IS_FIND_LONGEST(option)) { + if (n > msa->best_len) { + msa->best_len = n; + msa->best_s = (UChar* )sstart; + } + else + goto end_best_len; } #endif - best_len = n; - region = msa->region; - if (region) { + best_len = n; + region = msa->region; + if (region) { + if (keep > s) keep = s; + #ifdef USE_POSIX_API_REGION_OPTION - if (IS_POSIX_REGION(msa->options)) { - posix_regmatch_t* rmt = (posix_regmatch_t* )region; - - rmt[0].rm_so = (regoff_t)(sstart - str); - rmt[0].rm_eo = (regoff_t)(s - str); - for (i = 1; i <= num_mem; i++) { - if (mem_end_stk[i] != INVALID_STACK_INDEX) { - if (BIT_STATUS_AT(reg->bt_mem_start, i)) - rmt[i].rm_so = (regoff_t)(STACK_AT(mem_start_stk[i])->u.mem.pstr - str); - else - rmt[i].rm_so = (regoff_t)((UChar* )((void* )(UINTN)(mem_start_stk[i])) - str); - - rmt[i].rm_eo = (regoff_t)((BIT_STATUS_AT(reg->bt_mem_end, i) - ? STACK_AT(mem_end_stk[i])->u.mem.pstr - : (UChar* )((void* )(UINTN)mem_end_stk[i])) - str); - } - else { - rmt[i].rm_so = rmt[i].rm_eo = ONIG_REGION_NOTPOS; - } - } - } - else { + if (IS_POSIX_REGION(msa->options)) { + posix_regmatch_t* rmt = (posix_regmatch_t* )region; + + rmt[0].rm_so = (regoff_t )(keep - str); + rmt[0].rm_eo = (regoff_t )(s - str); + for (i = 1; i <= num_mem; i++) { + if (mem_end_stk[i] != INVALID_STACK_INDEX) { + if (MEM_STATUS_AT(reg->bt_mem_start, i)) + rmt[i].rm_so = (regoff_t )(STACK_AT(mem_start_stk[i])->u.mem.pstr - str); + else + rmt[i].rm_so = (regoff_t )((UChar* )((void* )(mem_start_stk[i])) - str); + + rmt[i].rm_eo = (regoff_t )((MEM_STATUS_AT(reg->bt_mem_end, i) + ? STACK_AT(mem_end_stk[i])->u.mem.pstr + : (UChar* )((void* )mem_end_stk[i])) + - str); + } + else { + rmt[i].rm_so = rmt[i].rm_eo = ONIG_REGION_NOTPOS; + } + } + } + else { #endif /* USE_POSIX_API_REGION_OPTION */ - region->beg[0] = (int)(sstart - str); - region->end[0] = (int)(s - str); - for (i = 1; i <= num_mem; i++) { - if (mem_end_stk[i] != INVALID_STACK_INDEX) { - if (BIT_STATUS_AT(reg->bt_mem_start, i)) - region->beg[i] = (int)(STACK_AT(mem_start_stk[i])->u.mem.pstr - str); - else - region->beg[i] = (int)((UChar* )((void* )(UINTN)mem_start_stk[i]) - str); - - region->end[i] = (int)((BIT_STATUS_AT(reg->bt_mem_end, i) - ? STACK_AT(mem_end_stk[i])->u.mem.pstr - : (UChar* )((void* )(UINTN)mem_end_stk[i])) - str); - } - else { - region->beg[i] = region->end[i] = ONIG_REGION_NOTPOS; - } - } + region->beg[0] = (int )(keep - str); + region->end[0] = (int )(s - str); + for (i = 1; i <= num_mem; i++) { + if (mem_end_stk[i] != INVALID_STACK_INDEX) { + if (MEM_STATUS_AT(reg->bt_mem_start, i)) + region->beg[i] = (int )(STACK_AT(mem_start_stk[i])->u.mem.pstr - str); + else + region->beg[i] = (int )((UChar* )((void* )mem_start_stk[i]) - str); + + region->end[i] = (int )((MEM_STATUS_AT(reg->bt_mem_end, i) + ? STACK_AT(mem_end_stk[i])->u.mem.pstr + : (UChar* )((void* )mem_end_stk[i])) - str); + } + else { + region->beg[i] = region->end[i] = ONIG_REGION_NOTPOS; + } + } #ifdef USE_CAPTURE_HISTORY - if (reg->capture_history != 0) { + if (reg->capture_history != 0) { int r; OnigCaptureTreeNode* node; @@ -1396,8 +2517,8 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, } node->group = 0; - node->beg = (int)(sstart - str); - node->end = (int)(s - str); + node->beg = (int )(keep - str); + node->end = (int )(s - str); stkp = stk_base; r = make_capture_history_tree(region->history_root, &stkp, @@ -1406,79 +2527,74 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, best_len = r; /* error code */ goto finish; } - } + } #endif /* USE_CAPTURE_HISTORY */ #ifdef USE_POSIX_API_REGION_OPTION - } /* else IS_POSIX_REGION() */ + } /* else IS_POSIX_REGION() */ #endif - } /* if (region) */ + } /* if (region) */ } /* n > best_len */ #ifdef USE_FIND_LONGEST_SEARCH_ALL_OF_RANGE end_best_len: #endif - MOP_OUT; + SOP_OUT; if (IS_FIND_CONDITION(option)) { - if (IS_FIND_NOT_EMPTY(option) && s == sstart) { - best_len = ONIG_MISMATCH; - goto fail; /* for retry */ - } - if (IS_FIND_LONGEST(option) && DATA_ENSURE_CHECK1) { - goto fail; /* for retry */ - } + if (IS_FIND_NOT_EMPTY(option) && s == sstart) { + best_len = ONIG_MISMATCH; + goto fail; /* for retry */ + } + if (IS_FIND_LONGEST(option) && DATA_ENSURE_CHECK1) { + goto fail; /* for retry */ + } } /* default behavior: return first-matching result. */ goto finish; break; - case OP_EXACT1: MOP_IN(OP_EXACT1); -#if 0 + case OP_EXACT1: SOP_IN(OP_EXACT1); DATA_ENSURE(1); if (*p != *s) goto fail; p++; s++; -#endif - if (*p != *s++) goto fail; - DATA_ENSURE(0); - p++; - MOP_OUT; + SOP_OUT; break; - case OP_EXACT1_IC: MOP_IN(OP_EXACT1_IC); + case OP_EXACT1_IC: SOP_IN(OP_EXACT1_IC); { - int len; - UChar *q1, 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); - q1 = lowbuf; - while (len-- > 0) { - if (*p != *q1) { + 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; + while (len-- > 0) { + if (*p != *q) { goto fail; } - p++; q1++; - } + p++; q++; + } } - MOP_OUT; + SOP_OUT; break; - case OP_EXACT2: MOP_IN(OP_EXACT2); + case OP_EXACT2: SOP_IN(OP_EXACT2); DATA_ENSURE(2); if (*p != *s) goto fail; p++; s++; if (*p != *s) goto fail; sprev = s; p++; s++; - MOP_OUT; + SOP_OUT; continue; break; - case OP_EXACT3: MOP_IN(OP_EXACT3); + case OP_EXACT3: SOP_IN(OP_EXACT3); DATA_ENSURE(3); if (*p != *s) goto fail; p++; s++; @@ -1487,11 +2603,11 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, if (*p != *s) goto fail; sprev = s; p++; s++; - MOP_OUT; + SOP_OUT; continue; break; - case OP_EXACT4: MOP_IN(OP_EXACT4); + case OP_EXACT4: SOP_IN(OP_EXACT4); DATA_ENSURE(4); if (*p != *s) goto fail; p++; s++; @@ -1502,11 +2618,11 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, if (*p != *s) goto fail; sprev = s; p++; s++; - MOP_OUT; + SOP_OUT; continue; break; - case OP_EXACT5: MOP_IN(OP_EXACT5); + case OP_EXACT5: SOP_IN(OP_EXACT5); DATA_ENSURE(5); if (*p != *s) goto fail; p++; s++; @@ -1519,59 +2635,59 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, if (*p != *s) goto fail; sprev = s; p++; s++; - MOP_OUT; + SOP_OUT; continue; break; - case OP_EXACTN: MOP_IN(OP_EXACTN); + case OP_EXACTN: SOP_IN(OP_EXACTN); GET_LENGTH_INC(tlen, p); DATA_ENSURE(tlen); while (tlen-- > 0) { - if (*p++ != *s++) goto fail; + if (*p++ != *s++) goto fail; } sprev = s - 1; - MOP_OUT; + SOP_OUT; continue; break; - case OP_EXACTN_IC: MOP_IN(OP_EXACTN_IC); + case OP_EXACTN_IC: SOP_IN(OP_EXACTN_IC); { - int len; - UChar *qn, *endp, lowbuf[ONIGENC_MBC_CASE_FOLD_MAXLEN]; - - GET_LENGTH_INC(tlen, p); - endp = p + tlen; - - while (p < 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); - qn = lowbuf; - while (len-- > 0) { - if (*p != *qn) goto fail; - p++; qn++; - } - } - } - - MOP_OUT; + int len; + UChar *q, *endp, lowbuf[ONIGENC_MBC_CASE_FOLD_MAXLEN]; + + GET_LENGTH_INC(tlen, p); + endp = p + tlen; + + while (p < 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 (*p != *q) goto fail; + p++; q++; + } + } + } + + SOP_OUT; continue; break; - case OP_EXACTMB2N1: MOP_IN(OP_EXACTMB2N1); + case OP_EXACTMB2N1: SOP_IN(OP_EXACTMB2N1); DATA_ENSURE(2); if (*p != *s) goto fail; p++; s++; if (*p != *s) goto fail; p++; s++; - MOP_OUT; + SOP_OUT; break; - case OP_EXACTMB2N2: MOP_IN(OP_EXACTMB2N2); + case OP_EXACTMB2N2: SOP_IN(OP_EXACTMB2N2); DATA_ENSURE(4); if (*p != *s) goto fail; p++; s++; @@ -1582,11 +2698,11 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, p++; s++; if (*p != *s) goto fail; p++; s++; - MOP_OUT; + SOP_OUT; continue; break; - case OP_EXACTMB2N3: MOP_IN(OP_EXACTMB2N3); + case OP_EXACTMB2N3: SOP_IN(OP_EXACTMB2N3); DATA_ENSURE(6); if (*p != *s) goto fail; p++; s++; @@ -1601,469 +2717,488 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, p++; s++; if (*p != *s) goto fail; p++; s++; - MOP_OUT; + SOP_OUT; continue; break; - case OP_EXACTMB2N: MOP_IN(OP_EXACTMB2N); + case OP_EXACTMB2N: SOP_IN(OP_EXACTMB2N); GET_LENGTH_INC(tlen, p); DATA_ENSURE(tlen * 2); while (tlen-- > 0) { - if (*p != *s) goto fail; - p++; s++; - if (*p != *s) goto fail; - p++; s++; + if (*p != *s) goto fail; + p++; s++; + if (*p != *s) goto fail; + p++; s++; } sprev = s - 2; - MOP_OUT; + SOP_OUT; continue; break; - case OP_EXACTMB3N: MOP_IN(OP_EXACTMB3N); + case OP_EXACTMB3N: SOP_IN(OP_EXACTMB3N); GET_LENGTH_INC(tlen, p); DATA_ENSURE(tlen * 3); while (tlen-- > 0) { - if (*p != *s) goto fail; - p++; s++; - if (*p != *s) goto fail; - p++; s++; - if (*p != *s) goto fail; - p++; s++; + if (*p != *s) goto fail; + p++; s++; + if (*p != *s) goto fail; + p++; s++; + if (*p != *s) goto fail; + p++; s++; } sprev = s - 3; - MOP_OUT; + SOP_OUT; continue; break; - case OP_EXACTMBN: MOP_IN(OP_EXACTMBN); + case OP_EXACTMBN: SOP_IN(OP_EXACTMBN); GET_LENGTH_INC(tlen, p); /* mb-len */ GET_LENGTH_INC(tlen2, p); /* string len */ tlen2 *= tlen; DATA_ENSURE(tlen2); while (tlen2-- > 0) { - if (*p != *s) goto fail; - p++; s++; + if (*p != *s) goto fail; + p++; s++; } sprev = s - tlen; - MOP_OUT; + SOP_OUT; continue; break; - case OP_CCLASS: MOP_IN(OP_CCLASS); + case OP_CCLASS: SOP_IN(OP_CCLASS); DATA_ENSURE(1); if (BITSET_AT(((BitSetRef )p), *s) == 0) goto fail; p += SIZE_BITSET; s += enclen(encode, s); /* OP_CCLASS can match mb-code. \D, \S */ - MOP_OUT; + SOP_OUT; break; - case OP_CCLASS_MB: MOP_IN(OP_CCLASS_MB); + case OP_CCLASS_MB: SOP_IN(OP_CCLASS_MB); if (! ONIGENC_IS_MBC_HEAD(encode, s)) goto fail; cclass_mb: GET_LENGTH_INC(tlen, p); { - OnigCodePoint code; - UChar *ss; - int mb_len; + OnigCodePoint code; + UChar *ss; + int mb_len; - DATA_ENSURE(1); - mb_len = enclen(encode, s); - DATA_ENSURE(mb_len); - ss = s; - s += mb_len; - code = ONIGENC_MBC_TO_CODE(encode, ss, s); + DATA_ENSURE(1); + mb_len = enclen(encode, s); + DATA_ENSURE(mb_len); + ss = s; + s += mb_len; + code = ONIGENC_MBC_TO_CODE(encode, ss, s); #ifdef PLATFORM_UNALIGNED_WORD_ACCESS - if (! onig_is_in_code_range(p, code)) goto fail; + if (! onig_is_in_code_range(p, code)) goto fail; #else - q = p; - ALIGNMENT_RIGHT(q); - if (! onig_is_in_code_range(q, code)) goto fail; + q = p; + ALIGNMENT_RIGHT(q); + if (! onig_is_in_code_range(q, code)) goto fail; #endif } p += tlen; - MOP_OUT; + SOP_OUT; break; - case OP_CCLASS_MIX: MOP_IN(OP_CCLASS_MIX); + case OP_CCLASS_MIX: SOP_IN(OP_CCLASS_MIX); DATA_ENSURE(1); if (ONIGENC_IS_MBC_HEAD(encode, s)) { - p += SIZE_BITSET; - goto cclass_mb; + p += SIZE_BITSET; + goto cclass_mb; } else { - if (BITSET_AT(((BitSetRef )p), *s) == 0) - goto fail; + if (BITSET_AT(((BitSetRef )p), *s) == 0) + goto fail; - p += SIZE_BITSET; - GET_LENGTH_INC(tlen, p); - p += tlen; - s++; + p += SIZE_BITSET; + GET_LENGTH_INC(tlen, p); + p += tlen; + s++; } - MOP_OUT; + SOP_OUT; break; - case OP_CCLASS_NOT: MOP_IN(OP_CCLASS_NOT); + case OP_CCLASS_NOT: SOP_IN(OP_CCLASS_NOT); DATA_ENSURE(1); if (BITSET_AT(((BitSetRef )p), *s) != 0) goto fail; p += SIZE_BITSET; s += enclen(encode, s); - MOP_OUT; + SOP_OUT; break; - case OP_CCLASS_MB_NOT: MOP_IN(OP_CCLASS_MB_NOT); + case OP_CCLASS_MB_NOT: SOP_IN(OP_CCLASS_MB_NOT); DATA_ENSURE(1); if (! ONIGENC_IS_MBC_HEAD(encode, s)) { - s++; - GET_LENGTH_INC(tlen, p); - p += tlen; - goto cc_mb_not_success; + s++; + GET_LENGTH_INC(tlen, p); + p += tlen; + goto cc_mb_not_success; } cclass_mb_not: GET_LENGTH_INC(tlen, p); { - OnigCodePoint code; - UChar *ss; - int mb_len = enclen(encode, s); + OnigCodePoint code; + UChar *ss; + int mb_len = enclen(encode, s); - if (! DATA_ENSURE_CHECK(mb_len)) { + if (! DATA_ENSURE_CHECK(mb_len)) { DATA_ENSURE(1); - s = (UChar* )end; - p += tlen; - goto cc_mb_not_success; - } + s = (UChar* )end; + p += tlen; + goto cc_mb_not_success; + } - ss = s; - s += mb_len; - code = ONIGENC_MBC_TO_CODE(encode, ss, s); + ss = s; + s += mb_len; + code = ONIGENC_MBC_TO_CODE(encode, ss, s); #ifdef PLATFORM_UNALIGNED_WORD_ACCESS - if (onig_is_in_code_range(p, code)) goto fail; + if (onig_is_in_code_range(p, code)) goto fail; #else - q = p; - ALIGNMENT_RIGHT(q); - if (onig_is_in_code_range(q, code)) goto fail; + q = p; + ALIGNMENT_RIGHT(q); + if (onig_is_in_code_range(q, code)) goto fail; #endif } p += tlen; cc_mb_not_success: - MOP_OUT; + SOP_OUT; break; - case OP_CCLASS_MIX_NOT: MOP_IN(OP_CCLASS_MIX_NOT); + case OP_CCLASS_MIX_NOT: SOP_IN(OP_CCLASS_MIX_NOT); DATA_ENSURE(1); if (ONIGENC_IS_MBC_HEAD(encode, s)) { - p += SIZE_BITSET; - goto cclass_mb_not; + p += SIZE_BITSET; + goto cclass_mb_not; } else { - if (BITSET_AT(((BitSetRef )p), *s) != 0) - goto fail; + if (BITSET_AT(((BitSetRef )p), *s) != 0) + goto fail; - p += SIZE_BITSET; - GET_LENGTH_INC(tlen, p); - p += tlen; - s++; + p += SIZE_BITSET; + GET_LENGTH_INC(tlen, p); + p += tlen; + s++; } - MOP_OUT; + SOP_OUT; break; - case OP_CCLASS_NODE: MOP_IN(OP_CCLASS_NODE); +#ifdef USE_OP_CCLASS_NODE + case OP_CCLASS_NODE: SOP_IN(OP_CCLASS_NODE); { - OnigCodePoint code; + OnigCodePoint code; void *node; int mb_len; UChar *ss; DATA_ENSURE(1); GET_POINTER_INC(node, p); - mb_len = enclen(encode, s); - ss = s; - s += mb_len; - DATA_ENSURE(0); - code = ONIGENC_MBC_TO_CODE(encode, ss, s); - if (onig_is_code_in_cc_len(mb_len, code, node) == 0) goto fail; + mb_len = enclen(encode, s); + ss = s; + s += mb_len; + DATA_ENSURE(0); + code = ONIGENC_MBC_TO_CODE(encode, ss, s); + if (onig_is_code_in_cc_len(mb_len, code, node) == 0) goto fail; } - MOP_OUT; + SOP_OUT; break; +#endif - case OP_ANYCHAR: MOP_IN(OP_ANYCHAR); + case OP_ANYCHAR: SOP_IN(OP_ANYCHAR); DATA_ENSURE(1); n = enclen(encode, s); DATA_ENSURE(n); if (ONIGENC_IS_MBC_NEWLINE(encode, s, end)) goto fail; s += n; - MOP_OUT; + SOP_OUT; break; - case OP_ANYCHAR_ML: MOP_IN(OP_ANYCHAR_ML); + case OP_ANYCHAR_ML: SOP_IN(OP_ANYCHAR_ML); DATA_ENSURE(1); n = enclen(encode, s); DATA_ENSURE(n); s += n; - MOP_OUT; + SOP_OUT; break; - case OP_ANYCHAR_STAR: MOP_IN(OP_ANYCHAR_STAR); + case OP_ANYCHAR_STAR: SOP_IN(OP_ANYCHAR_STAR); while (DATA_ENSURE_CHECK1) { - STACK_PUSH_ALT(p, s, sprev); - n = enclen(encode, s); + STACK_PUSH_ALT(p, s, sprev); + n = enclen(encode, s); DATA_ENSURE(n); if (ONIGENC_IS_MBC_NEWLINE(encode, s, end)) goto fail; sprev = s; s += n; } - MOP_OUT; + SOP_OUT; + continue; break; - case OP_ANYCHAR_ML_STAR: MOP_IN(OP_ANYCHAR_ML_STAR); + case OP_ANYCHAR_ML_STAR: SOP_IN(OP_ANYCHAR_ML_STAR); while (DATA_ENSURE_CHECK1) { - STACK_PUSH_ALT(p, s, sprev); - n = enclen(encode, s); - if (n > 1) { - DATA_ENSURE(n); - sprev = s; - s += n; - } - else { - sprev = s; - s++; - } - } - MOP_OUT; - break; - - case OP_ANYCHAR_STAR_PEEK_NEXT: MOP_IN(OP_ANYCHAR_STAR_PEEK_NEXT); + STACK_PUSH_ALT(p, s, sprev); + n = enclen(encode, s); + if (n > 1) { + DATA_ENSURE(n); + sprev = s; + s += n; + } + else { + sprev = s; + s++; + } + } + SOP_OUT; + continue; + break; + + case OP_ANYCHAR_STAR_PEEK_NEXT: SOP_IN(OP_ANYCHAR_STAR_PEEK_NEXT); while (DATA_ENSURE_CHECK1) { - if (*p == *s) { - STACK_PUSH_ALT(p + 1, s, sprev); - } - n = enclen(encode, s); + if (*p == *s) { + STACK_PUSH_ALT(p + 1, s, sprev); + } + n = enclen(encode, s); DATA_ENSURE(n); if (ONIGENC_IS_MBC_NEWLINE(encode, s, end)) goto fail; sprev = s; s += n; } p++; - MOP_OUT; + SOP_OUT; break; - case OP_ANYCHAR_ML_STAR_PEEK_NEXT:MOP_IN(OP_ANYCHAR_ML_STAR_PEEK_NEXT); + case OP_ANYCHAR_ML_STAR_PEEK_NEXT:SOP_IN(OP_ANYCHAR_ML_STAR_PEEK_NEXT); while (DATA_ENSURE_CHECK1) { - if (*p == *s) { - STACK_PUSH_ALT(p + 1, s, sprev); - } - n = enclen(encode, s); - if (n > 1) { - DATA_ENSURE(n); - sprev = s; - s += n; - } - else { - sprev = s; - s++; - } + if (*p == *s) { + STACK_PUSH_ALT(p + 1, s, sprev); + } + n = enclen(encode, s); + if (n > 1) { + DATA_ENSURE(n); + sprev = s; + s += n; + } + else { + sprev = s; + s++; + } } p++; - MOP_OUT; + SOP_OUT; break; -#ifdef USE_COMBINATION_EXPLOSION_CHECK - case OP_STATE_CHECK_ANYCHAR_STAR: MOP_IN(OP_STATE_CHECK_ANYCHAR_STAR); - GET_STATE_CHECK_NUM_INC(mem, p); - while (DATA_ENSURE_CHECK1) { - STATE_CHECK_VAL(scv, mem); - if (scv) goto fail; + case OP_WORD: SOP_IN(OP_WORD); + DATA_ENSURE(1); + if (! ONIGENC_IS_MBC_WORD(encode, s, end)) + goto fail; - STACK_PUSH_ALT_WITH_STATE_CHECK(p, s, sprev, mem); - n = enclen(encode, s); - DATA_ENSURE(n); - if (ONIGENC_IS_MBC_NEWLINE(encode, s, end)) goto fail; - sprev = s; - s += n; - } - MOP_OUT; + s += enclen(encode, s); + SOP_OUT; break; - case OP_STATE_CHECK_ANYCHAR_ML_STAR: - MOP_IN(OP_STATE_CHECK_ANYCHAR_ML_STAR); - - GET_STATE_CHECK_NUM_INC(mem, p); - while (DATA_ENSURE_CHECK1) { - STATE_CHECK_VAL(scv, mem); - if (scv) goto fail; - - STACK_PUSH_ALT_WITH_STATE_CHECK(p, s, sprev, mem); - n = enclen(encode, s); - if (n > 1) { - DATA_ENSURE(n); - sprev = s; - s += n; - } - else { - sprev = s; - s++; - } - } - MOP_OUT; - break; -#endif /* USE_COMBINATION_EXPLOSION_CHECK */ - - case OP_WORD: MOP_IN(OP_WORD); + case OP_WORD_ASCII: SOP_IN(OP_WORD_ASCII); DATA_ENSURE(1); - if (! ONIGENC_IS_MBC_WORD(encode, s, end)) - goto fail; + if (! ONIGENC_IS_MBC_WORD_ASCII(encode, s, end)) + goto fail; s += enclen(encode, s); - MOP_OUT; + SOP_OUT; break; - case OP_NOT_WORD: MOP_IN(OP_NOT_WORD); + case OP_NO_WORD: SOP_IN(OP_NO_WORD); DATA_ENSURE(1); if (ONIGENC_IS_MBC_WORD(encode, s, end)) - goto fail; + goto fail; s += enclen(encode, s); - MOP_OUT; + SOP_OUT; break; - case OP_WORD_BOUND: MOP_IN(OP_WORD_BOUND); - if (ON_STR_BEGIN(s)) { - DATA_ENSURE(1); - if (! ONIGENC_IS_MBC_WORD(encode, s, end)) - goto fail; - } - else if (ON_STR_END(s)) { - if (! ONIGENC_IS_MBC_WORD(encode, sprev, end)) - goto fail; - } - else { - if (ONIGENC_IS_MBC_WORD(encode, s, end) - == ONIGENC_IS_MBC_WORD(encode, sprev, end)) - goto fail; + case OP_NO_WORD_ASCII: SOP_IN(OP_NO_WORD_ASCII); + DATA_ENSURE(1); + if (ONIGENC_IS_MBC_WORD_ASCII(encode, s, end)) + goto fail; + + s += enclen(encode, s); + SOP_OUT; + break; + + case OP_WORD_BOUNDARY: SOP_IN(OP_WORD_BOUNDARY); + { + ModeType mode; + GET_MODE_INC(mode, p); /* ascii_mode */ + + if (ON_STR_BEGIN(s)) { + DATA_ENSURE(1); + if (! IS_MBC_WORD_ASCII_MODE(encode, s, end, mode)) + goto fail; + } + else if (ON_STR_END(s)) { + if (! IS_MBC_WORD_ASCII_MODE(encode, sprev, end, mode)) + goto fail; + } + else { + if (IS_MBC_WORD_ASCII_MODE(encode, s, end, mode) + == IS_MBC_WORD_ASCII_MODE(encode, sprev, end, mode)) + goto fail; + } } - MOP_OUT; + SOP_OUT; continue; break; - case OP_NOT_WORD_BOUND: MOP_IN(OP_NOT_WORD_BOUND); - if (ON_STR_BEGIN(s)) { - if (DATA_ENSURE_CHECK1 && ONIGENC_IS_MBC_WORD(encode, s, end)) - goto fail; - } - else if (ON_STR_END(s)) { - if (ONIGENC_IS_MBC_WORD(encode, sprev, end)) - goto fail; - } - else { - if (ONIGENC_IS_MBC_WORD(encode, s, end) - != ONIGENC_IS_MBC_WORD(encode, sprev, end)) - goto fail; + case OP_NO_WORD_BOUNDARY: SOP_IN(OP_NO_WORD_BOUNDARY); + { + ModeType mode; + GET_MODE_INC(mode, p); /* ascii_mode */ + + if (ON_STR_BEGIN(s)) { + if (DATA_ENSURE_CHECK1 && IS_MBC_WORD_ASCII_MODE(encode, s, end, mode)) + goto fail; + } + else if (ON_STR_END(s)) { + if (IS_MBC_WORD_ASCII_MODE(encode, sprev, end, mode)) + goto fail; + } + else { + if (IS_MBC_WORD_ASCII_MODE(encode, s, end, mode) + != IS_MBC_WORD_ASCII_MODE(encode, sprev, end, mode)) + goto fail; + } } - MOP_OUT; + SOP_OUT; continue; break; #ifdef USE_WORD_BEGIN_END - case OP_WORD_BEGIN: MOP_IN(OP_WORD_BEGIN); - if (DATA_ENSURE_CHECK1 && ONIGENC_IS_MBC_WORD(encode, s, end)) { - if (ON_STR_BEGIN(s) || !ONIGENC_IS_MBC_WORD(encode, sprev, end)) { - MOP_OUT; - continue; - } + case OP_WORD_BEGIN: SOP_IN(OP_WORD_BEGIN); + { + ModeType mode; + GET_MODE_INC(mode, p); /* ascii_mode */ + + if (DATA_ENSURE_CHECK1 && IS_MBC_WORD_ASCII_MODE(encode, s, end, mode)) { + if (ON_STR_BEGIN(s) || !IS_MBC_WORD_ASCII_MODE(encode, sprev, end, mode)) { + SOP_OUT; + continue; + } + } } goto fail; break; - case OP_WORD_END: MOP_IN(OP_WORD_END); - if (!ON_STR_BEGIN(s) && ONIGENC_IS_MBC_WORD(encode, sprev, end)) { - if (ON_STR_END(s) || !ONIGENC_IS_MBC_WORD(encode, s, end)) { - MOP_OUT; - continue; - } + case OP_WORD_END: SOP_IN(OP_WORD_END); + { + ModeType mode; + GET_MODE_INC(mode, p); /* ascii_mode */ + + if (!ON_STR_BEGIN(s) && IS_MBC_WORD_ASCII_MODE(encode, sprev, end, mode)) { + if (ON_STR_END(s) || ! IS_MBC_WORD_ASCII_MODE(encode, s, end, mode)) { + SOP_OUT; + continue; + } + } } goto fail; break; #endif - case OP_BEGIN_BUF: MOP_IN(OP_BEGIN_BUF); + case OP_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY: + SOP_IN(OP_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY); + if (onigenc_egcb_is_break_position(encode, s, sprev, str, end)) { + SOP_OUT; + continue; + } + goto fail; + break; + + case OP_NO_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY: + SOP_IN(OP_NO_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY); + if (onigenc_egcb_is_break_position(encode, s, sprev, str, end)) + goto fail; + + SOP_OUT; + continue; + break; + + case OP_BEGIN_BUF: SOP_IN(OP_BEGIN_BUF); if (! ON_STR_BEGIN(s)) goto fail; - MOP_OUT; + SOP_OUT; continue; break; - case OP_END_BUF: MOP_IN(OP_END_BUF); + case OP_END_BUF: SOP_IN(OP_END_BUF); if (! ON_STR_END(s)) goto fail; - MOP_OUT; + SOP_OUT; continue; break; - case OP_BEGIN_LINE: MOP_IN(OP_BEGIN_LINE); + case OP_BEGIN_LINE: SOP_IN(OP_BEGIN_LINE); if (ON_STR_BEGIN(s)) { - if (IS_NOTBOL(msa->options)) goto fail; - MOP_OUT; - continue; + if (IS_NOTBOL(msa->options)) goto fail; + SOP_OUT; + continue; } else if (ONIGENC_IS_MBC_NEWLINE(encode, sprev, end) && !ON_STR_END(s)) { - MOP_OUT; - continue; + SOP_OUT; + continue; } goto fail; break; - case OP_END_LINE: MOP_IN(OP_END_LINE); + case OP_END_LINE: SOP_IN(OP_END_LINE); if (ON_STR_END(s)) { #ifndef USE_NEWLINE_AT_END_OF_STRING_HAS_EMPTY_LINE - if (IS_EMPTY_STR || !ONIGENC_IS_MBC_NEWLINE(encode, sprev, end)) { + if (IS_EMPTY_STR || !ONIGENC_IS_MBC_NEWLINE(encode, sprev, end)) { #endif - if (IS_NOTEOL(msa->options)) goto fail; - MOP_OUT; - continue; + if (IS_NOTEOL(msa->options)) goto fail; + SOP_OUT; + continue; #ifndef USE_NEWLINE_AT_END_OF_STRING_HAS_EMPTY_LINE - } + } #endif } else if (ONIGENC_IS_MBC_NEWLINE(encode, s, end)) { - MOP_OUT; - continue; + SOP_OUT; + continue; } #ifdef USE_CRNL_AS_LINE_TERMINATOR else if (ONIGENC_IS_MBC_CRNL(encode, s, end)) { - MOP_OUT; - continue; + SOP_OUT; + continue; } #endif goto fail; break; - case OP_SEMI_END_BUF: MOP_IN(OP_SEMI_END_BUF); + case OP_SEMI_END_BUF: SOP_IN(OP_SEMI_END_BUF); if (ON_STR_END(s)) { #ifndef USE_NEWLINE_AT_END_OF_STRING_HAS_EMPTY_LINE - if (IS_EMPTY_STR || !ONIGENC_IS_MBC_NEWLINE(encode, sprev, end)) { + if (IS_EMPTY_STR || !ONIGENC_IS_MBC_NEWLINE(encode, sprev, end)) { #endif - if (IS_NOTEOL(msa->options)) goto fail; - MOP_OUT; - continue; + if (IS_NOTEOL(msa->options)) goto fail; + SOP_OUT; + continue; #ifndef USE_NEWLINE_AT_END_OF_STRING_HAS_EMPTY_LINE - } + } #endif } else if (ONIGENC_IS_MBC_NEWLINE(encode, s, end) && - ON_STR_END(s + enclen(encode, s))) { - MOP_OUT; - continue; + ON_STR_END(s + enclen(encode, s))) { + SOP_OUT; + continue; } #ifdef USE_CRNL_AS_LINE_TERMINATOR else if (ONIGENC_IS_MBC_CRNL(encode, s, end)) { UChar* ss = s + enclen(encode, s); - ss += enclen(encode, ss); + ss += enclen(encode, ss); if (ON_STR_END(ss)) { - MOP_OUT; + SOP_OUT; continue; } } @@ -2071,477 +3206,464 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, goto fail; break; - case OP_BEGIN_POSITION: MOP_IN(OP_BEGIN_POSITION); + case OP_BEGIN_POSITION: SOP_IN(OP_BEGIN_POSITION); if (s != msa->start) - goto fail; + goto fail; - MOP_OUT; + SOP_OUT; continue; break; - case OP_MEMORY_START_PUSH: MOP_IN(OP_MEMORY_START_PUSH); + case OP_MEMORY_START_PUSH: SOP_IN(OP_MEMORY_START_PUSH); GET_MEMNUM_INC(mem, p); STACK_PUSH_MEM_START(mem, s); - MOP_OUT; + SOP_OUT; continue; break; - case OP_MEMORY_START: MOP_IN(OP_MEMORY_START); + case OP_MEMORY_START: SOP_IN(OP_MEMORY_START); GET_MEMNUM_INC(mem, p); - mem_start_stk[mem] = (OnigStackIndex )(UINTN)((void* )s); - MOP_OUT; + mem_start_stk[mem] = (StackIndex )((void* )s); + SOP_OUT; continue; break; - case OP_MEMORY_END_PUSH: MOP_IN(OP_MEMORY_END_PUSH); + case OP_MEMORY_END_PUSH: SOP_IN(OP_MEMORY_END_PUSH); GET_MEMNUM_INC(mem, p); STACK_PUSH_MEM_END(mem, s); - MOP_OUT; + SOP_OUT; continue; break; - case OP_MEMORY_END: MOP_IN(OP_MEMORY_END); + case OP_MEMORY_END: SOP_IN(OP_MEMORY_END); GET_MEMNUM_INC(mem, p); - mem_end_stk[mem] = (OnigStackIndex )(UINTN)((void* )s); - MOP_OUT; + mem_end_stk[mem] = (StackIndex )((void* )s); + SOP_OUT; continue; break; -#ifdef USE_SUBEXP_CALL - case OP_MEMORY_END_PUSH_REC: MOP_IN(OP_MEMORY_END_PUSH_REC); +#ifdef USE_CALL + case OP_MEMORY_END_PUSH_REC: SOP_IN(OP_MEMORY_END_PUSH_REC); GET_MEMNUM_INC(mem, p); STACK_GET_MEM_START(mem, stkp); /* should be before push mem-end. */ STACK_PUSH_MEM_END(mem, s); mem_start_stk[mem] = GET_STACK_INDEX(stkp); - MOP_OUT; + SOP_OUT; continue; break; - case OP_MEMORY_END_REC: MOP_IN(OP_MEMORY_END_REC); + case OP_MEMORY_END_REC: SOP_IN(OP_MEMORY_END_REC); GET_MEMNUM_INC(mem, p); - mem_end_stk[mem] = (OnigStackIndex )(UINTN)((void* )s); + mem_end_stk[mem] = (StackIndex )((void* )s); STACK_GET_MEM_START(mem, stkp); - if (BIT_STATUS_AT(reg->bt_mem_start, mem)) - mem_start_stk[mem] = GET_STACK_INDEX(stkp); + if (MEM_STATUS_AT(reg->bt_mem_start, mem)) + mem_start_stk[mem] = GET_STACK_INDEX(stkp); else - mem_start_stk[mem] = (OnigStackIndex )(UINTN)((void* )stkp->u.mem.pstr); + mem_start_stk[mem] = (StackIndex )((void* )stkp->u.mem.pstr); STACK_PUSH_MEM_END_MARK(mem); - MOP_OUT; + SOP_OUT; continue; break; #endif - case OP_BACKREF1: MOP_IN(OP_BACKREF1); + case OP_BACKREF1: SOP_IN(OP_BACKREF1); mem = 1; goto backref; break; - case OP_BACKREF2: MOP_IN(OP_BACKREF2); + case OP_BACKREF2: SOP_IN(OP_BACKREF2); mem = 2; goto backref; break; - case OP_BACKREFN: MOP_IN(OP_BACKREFN); + case OP_BACKREF_N: SOP_IN(OP_BACKREF_N); GET_MEMNUM_INC(mem, p); backref: { - int len; - UChar *pstart, *pend; + int len; + UChar *pstart, *pend; - /* if you want to remove following line, - you should check in parse and compile time. */ - if (mem > num_mem) goto fail; - if (mem_end_stk[mem] == INVALID_STACK_INDEX) goto fail; - if (mem_start_stk[mem] == INVALID_STACK_INDEX) goto fail; + if (mem_end_stk[mem] == INVALID_STACK_INDEX) goto fail; + if (mem_start_stk[mem] == INVALID_STACK_INDEX) goto fail; - if (BIT_STATUS_AT(reg->bt_mem_start, mem)) - pstart = STACK_AT(mem_start_stk[mem])->u.mem.pstr; - else - pstart = (UChar* )((void* )(UINTN)mem_start_stk[mem]); + if (MEM_STATUS_AT(reg->bt_mem_start, mem)) + pstart = STACK_AT(mem_start_stk[mem])->u.mem.pstr; + else + pstart = (UChar* )((void* )mem_start_stk[mem]); - pend = (BIT_STATUS_AT(reg->bt_mem_end, mem) - ? STACK_AT(mem_end_stk[mem])->u.mem.pstr - : (UChar* )((void* )(UINTN)mem_end_stk[mem])); - n = (int)(pend - pstart); - DATA_ENSURE(n); - sprev = s; - STRING_CMP(pstart, s, n); - while (sprev + (len = enclen(encode, sprev)) < s) - sprev += len; + pend = (MEM_STATUS_AT(reg->bt_mem_end, mem) + ? STACK_AT(mem_end_stk[mem])->u.mem.pstr + : (UChar* )((void* )mem_end_stk[mem])); + n = (int )(pend - pstart); + DATA_ENSURE(n); + sprev = s; + STRING_CMP(pstart, s, n); + while (sprev + (len = enclen(encode, sprev)) < s) + sprev += len; - MOP_OUT; - continue; + SOP_OUT; + continue; } break; - case OP_BACKREFN_IC: MOP_IN(OP_BACKREFN_IC); + case OP_BACKREF_N_IC: SOP_IN(OP_BACKREF_N_IC); GET_MEMNUM_INC(mem, p); { - int len; - UChar *pstart, *pend; + int len; + UChar *pstart, *pend; - /* if you want to remove following line, - you should check in parse and compile time. */ - if (mem > num_mem) goto fail; - if (mem_end_stk[mem] == INVALID_STACK_INDEX) goto fail; - if (mem_start_stk[mem] == INVALID_STACK_INDEX) goto fail; + if (mem_end_stk[mem] == INVALID_STACK_INDEX) goto fail; + if (mem_start_stk[mem] == INVALID_STACK_INDEX) goto fail; - if (BIT_STATUS_AT(reg->bt_mem_start, mem)) - pstart = STACK_AT(mem_start_stk[mem])->u.mem.pstr; - else - pstart = (UChar* )((void* )(UINTN)mem_start_stk[mem]); + if (MEM_STATUS_AT(reg->bt_mem_start, mem)) + pstart = STACK_AT(mem_start_stk[mem])->u.mem.pstr; + else + pstart = (UChar* )((void* )mem_start_stk[mem]); - pend = (BIT_STATUS_AT(reg->bt_mem_end, mem) - ? STACK_AT(mem_end_stk[mem])->u.mem.pstr - : (UChar* )((void* )(UINTN)mem_end_stk[mem])); - n = (int)(pend - pstart); - DATA_ENSURE(n); - sprev = s; - STRING_CMP_IC(case_fold_flag, pstart, &s, n); - while (sprev + (len = enclen(encode, sprev)) < s) - sprev += len; + pend = (MEM_STATUS_AT(reg->bt_mem_end, mem) + ? STACK_AT(mem_end_stk[mem])->u.mem.pstr + : (UChar* )((void* )mem_end_stk[mem])); + n = (int )(pend - pstart); + DATA_ENSURE(n); + sprev = s; + STRING_CMP_IC(case_fold_flag, pstart, &s, n); + while (sprev + (len = enclen(encode, sprev)) < s) + sprev += len; - MOP_OUT; - continue; + SOP_OUT; + continue; } break; - case OP_BACKREF_MULTI: MOP_IN(OP_BACKREF_MULTI); + case OP_BACKREF_MULTI: SOP_IN(OP_BACKREF_MULTI); { - int len, is_fail; - UChar *pstart, *pend, *swork; - - GET_LENGTH_INC(tlen, p); - for (i = 0; i < tlen; i++) { - GET_MEMNUM_INC(mem, p); - - if (mem_end_stk[mem] == INVALID_STACK_INDEX) continue; - if (mem_start_stk[mem] == INVALID_STACK_INDEX) continue; - - if (BIT_STATUS_AT(reg->bt_mem_start, mem)) - pstart = STACK_AT(mem_start_stk[mem])->u.mem.pstr; - else - pstart = (UChar* )((void* )(UINTN)mem_start_stk[mem]); - - pend = (BIT_STATUS_AT(reg->bt_mem_end, mem) - ? STACK_AT(mem_end_stk[mem])->u.mem.pstr - : (UChar* )((void* )(UINTN)mem_end_stk[mem])); - n = (int)(pend - pstart); - DATA_ENSURE(n); - sprev = s; - swork = s; - STRING_CMP_VALUE(pstart, swork, n, is_fail); - if (is_fail) continue; - s = swork; - while (sprev + (len = enclen(encode, sprev)) < s) - sprev += len; - - p += (SIZE_MEMNUM * (tlen - i - 1)); - break; /* success */ - } - if (i == tlen) goto fail; - MOP_OUT; - continue; - } - break; - - case OP_BACKREF_MULTI_IC: MOP_IN(OP_BACKREF_MULTI_IC); + int len, is_fail; + UChar *pstart, *pend, *swork; + + GET_LENGTH_INC(tlen, p); + for (i = 0; i < tlen; i++) { + GET_MEMNUM_INC(mem, p); + + if (mem_end_stk[mem] == INVALID_STACK_INDEX) continue; + if (mem_start_stk[mem] == INVALID_STACK_INDEX) continue; + + if (MEM_STATUS_AT(reg->bt_mem_start, mem)) + pstart = STACK_AT(mem_start_stk[mem])->u.mem.pstr; + else + pstart = (UChar* )((void* )mem_start_stk[mem]); + + pend = (MEM_STATUS_AT(reg->bt_mem_end, mem) + ? STACK_AT(mem_end_stk[mem])->u.mem.pstr + : (UChar* )((void* )mem_end_stk[mem])); + n = (int )(pend - pstart); + DATA_ENSURE(n); + sprev = s; + swork = s; + STRING_CMP_VALUE(pstart, swork, n, is_fail); + if (is_fail) continue; + s = swork; + while (sprev + (len = enclen(encode, sprev)) < s) + sprev += len; + + p += (SIZE_MEMNUM * (tlen - i - 1)); + break; /* success */ + } + if (i == tlen) goto fail; + SOP_OUT; + continue; + } + break; + + case OP_BACKREF_MULTI_IC: SOP_IN(OP_BACKREF_MULTI_IC); { - int len, is_fail; - UChar *pstart, *pend, *swork; - - GET_LENGTH_INC(tlen, p); - for (i = 0; i < tlen; i++) { - GET_MEMNUM_INC(mem, p); - - if (mem_end_stk[mem] == INVALID_STACK_INDEX) continue; - if (mem_start_stk[mem] == INVALID_STACK_INDEX) continue; - - if (BIT_STATUS_AT(reg->bt_mem_start, mem)) - pstart = STACK_AT(mem_start_stk[mem])->u.mem.pstr; - else - pstart = (UChar* )((void* )(UINTN)mem_start_stk[mem]); - - pend = (BIT_STATUS_AT(reg->bt_mem_end, mem) - ? STACK_AT(mem_end_stk[mem])->u.mem.pstr - : (UChar* )((void* )(UINTN)mem_end_stk[mem])); - n = (int)(pend - pstart); - DATA_ENSURE(n); - sprev = s; - swork = s; - STRING_CMP_VALUE_IC(case_fold_flag, pstart, &swork, n, is_fail); - if (is_fail) continue; - s = swork; - while (sprev + (len = enclen(encode, sprev)) < s) - sprev += len; - - p += (SIZE_MEMNUM * (tlen - i - 1)); - break; /* success */ - } - if (i == tlen) goto fail; - MOP_OUT; - continue; + int len, is_fail; + UChar *pstart, *pend, *swork; + + GET_LENGTH_INC(tlen, p); + for (i = 0; i < tlen; i++) { + GET_MEMNUM_INC(mem, p); + + if (mem_end_stk[mem] == INVALID_STACK_INDEX) continue; + if (mem_start_stk[mem] == INVALID_STACK_INDEX) continue; + + if (MEM_STATUS_AT(reg->bt_mem_start, mem)) + pstart = STACK_AT(mem_start_stk[mem])->u.mem.pstr; + else + pstart = (UChar* )((void* )mem_start_stk[mem]); + + pend = (MEM_STATUS_AT(reg->bt_mem_end, mem) + ? STACK_AT(mem_end_stk[mem])->u.mem.pstr + : (UChar* )((void* )mem_end_stk[mem])); + n = (int )(pend - pstart); + DATA_ENSURE(n); + sprev = s; + swork = s; + STRING_CMP_VALUE_IC(case_fold_flag, pstart, &swork, n, is_fail); + if (is_fail) continue; + s = swork; + while (sprev + (len = enclen(encode, sprev)) < s) + sprev += len; + + p += (SIZE_MEMNUM * (tlen - i - 1)); + break; /* success */ + } + if (i == tlen) goto fail; + SOP_OUT; + continue; } break; #ifdef USE_BACKREF_WITH_LEVEL case OP_BACKREF_WITH_LEVEL: { - int len; - OnigOptionType ic; - LengthType level; - - GET_OPTION_INC(ic, p); - GET_LENGTH_INC(level, p); - GET_LENGTH_INC(tlen, p); + int len; + OnigOptionType ic; + LengthType level; - sprev = s; - if (backref_match_at_nested_level(reg, stk, stk_base, ic - , case_fold_flag, (int )level, (int )tlen, p, &s, end)) { - while (sprev + (len = enclen(encode, sprev)) < s) - sprev += len; + GET_OPTION_INC(ic, p); + GET_LENGTH_INC(level, p); + GET_LENGTH_INC(tlen, p); - p += (SIZE_MEMNUM * tlen); - } - else - goto fail; + sprev = s; + if (backref_match_at_nested_level(reg, stk, stk_base, ic + , case_fold_flag, (int )level, (int )tlen, p, &s, end)) { + if (sprev < end) { + while (sprev + (len = enclen(encode, sprev)) < s) + sprev += len; + } + p += (SIZE_MEMNUM * tlen); + } + else + goto fail; - MOP_OUT; - continue; + SOP_OUT; + continue; } - break; #endif -#if 0 /* no need: IS_DYNAMIC_OPTION() == 0 */ - case OP_SET_OPTION_PUSH: MOP_IN(OP_SET_OPTION_PUSH); - GET_OPTION_INC(option, p); - STACK_PUSH_ALT(p, s, sprev); - p += SIZE_OP_SET_OPTION + SIZE_OP_FAIL; - MOP_OUT; - continue; + case OP_BACKREF_CHECK: SOP_IN(OP_BACKREF_CHECK); + { + GET_LENGTH_INC(tlen, p); + for (i = 0; i < tlen; i++) { + GET_MEMNUM_INC(mem, p); + + if (mem_end_stk[mem] == INVALID_STACK_INDEX) continue; + if (mem_start_stk[mem] == INVALID_STACK_INDEX) continue; + + p += (SIZE_MEMNUM * (tlen - i - 1)); + break; /* success */ + } + if (i == tlen) goto fail; + SOP_OUT; + continue; + } break; - case OP_SET_OPTION: MOP_IN(OP_SET_OPTION); - GET_OPTION_INC(option, p); - MOP_OUT; - continue; +#ifdef USE_BACKREF_WITH_LEVEL + case OP_BACKREF_CHECK_WITH_LEVEL: + { + LengthType level; + + GET_LENGTH_INC(level, p); + GET_LENGTH_INC(tlen, p); + + if (backref_check_at_nested_level(reg, stk, stk_base, + (int )level, (int )tlen, p) != 0) { + p += (SIZE_MEMNUM * tlen); + } + else + goto fail; + + SOP_OUT; + continue; + } break; #endif - case OP_NULL_CHECK_START: MOP_IN(OP_NULL_CHECK_START); + case OP_EMPTY_CHECK_START: SOP_IN(OP_EMPTY_CHECK_START); GET_MEMNUM_INC(mem, p); /* mem: null check id */ - STACK_PUSH_NULL_CHECK_START(mem, s); - MOP_OUT; + STACK_PUSH_EMPTY_CHECK_START(mem, s); + SOP_OUT; continue; break; - case OP_NULL_CHECK_END: MOP_IN(OP_NULL_CHECK_END); + case OP_EMPTY_CHECK_END: SOP_IN(OP_EMPTY_CHECK_END); { - int isnull; + int is_empty; - GET_MEMNUM_INC(mem, p); /* mem: null check id */ - STACK_NULL_CHECK(isnull, mem, s); - if (isnull) { + GET_MEMNUM_INC(mem, p); /* mem: null check id */ + STACK_EMPTY_CHECK(is_empty, mem, s); + if (is_empty) { #ifdef ONIG_DEBUG_MATCH - fprintf(stderr, "NULL_CHECK_END: skip id:%d, s:%d\n", - (int )mem, (int )s); -#endif - null_check_found: - /* empty loop founded, skip next instruction */ - switch (*p++) { - case OP_JUMP: - case OP_PUSH: - p += SIZE_RELADDR; - break; - case OP_REPEAT_INC: - case OP_REPEAT_INC_NG: - case OP_REPEAT_INC_SG: - case OP_REPEAT_INC_NG_SG: - p += SIZE_MEMNUM; - break; - default: - goto unexpected_bytecode_error; - break; - } - } - } - MOP_OUT; + fprintf(stderr, "EMPTY_CHECK_END: skip id:%d, s:%p\n", (int )mem, s); +#endif + empty_check_found: + /* empty loop founded, skip next instruction */ + switch (*p++) { + case OP_JUMP: + case OP_PUSH: + p += SIZE_RELADDR; + break; + case OP_REPEAT_INC: + case OP_REPEAT_INC_NG: + case OP_REPEAT_INC_SG: + case OP_REPEAT_INC_NG_SG: + p += SIZE_MEMNUM; + break; + default: + goto unexpected_bytecode_error; + break; + } + } + } + SOP_OUT; continue; break; -#ifdef USE_MONOMANIAC_CHECK_CAPTURES_IN_ENDLESS_REPEAT - case OP_NULL_CHECK_END_MEMST: MOP_IN(OP_NULL_CHECK_END_MEMST); +#ifdef USE_INSISTENT_CHECK_CAPTURES_IN_EMPTY_REPEAT + case OP_EMPTY_CHECK_END_MEMST: SOP_IN(OP_EMPTY_CHECK_END_MEMST); { - int isnull; + int is_empty; - GET_MEMNUM_INC(mem, p); /* mem: null check id */ - STACK_NULL_CHECK_MEMST(isnull, mem, s, reg); - if (isnull) { + GET_MEMNUM_INC(mem, p); /* mem: null check id */ + STACK_EMPTY_CHECK_MEM(is_empty, mem, s, reg); + if (is_empty) { #ifdef ONIG_DEBUG_MATCH - fprintf(stderr, "NULL_CHECK_END_MEMST: skip id:%d, s:%d\n", - (int )mem, (int )s); + fprintf(stderr, "EMPTY_CHECK_END_MEM: skip id:%d, s:%p\n", (int)mem, s); #endif - if (isnull == -1) goto fail; - goto null_check_found; - } + if (is_empty == -1) goto fail; + goto empty_check_found; + } } - MOP_OUT; + SOP_OUT; continue; break; #endif -#ifdef USE_SUBEXP_CALL - case OP_NULL_CHECK_END_MEMST_PUSH: - MOP_IN(OP_NULL_CHECK_END_MEMST_PUSH); +#ifdef USE_CALL + case OP_EMPTY_CHECK_END_MEMST_PUSH: + SOP_IN(OP_EMPTY_CHECK_END_MEMST_PUSH); { - int isnull; + int is_empty; - GET_MEMNUM_INC(mem, p); /* mem: null check id */ -#ifdef USE_MONOMANIAC_CHECK_CAPTURES_IN_ENDLESS_REPEAT - STACK_NULL_CHECK_MEMST_REC(isnull, mem, s, reg); + GET_MEMNUM_INC(mem, p); /* mem: null check id */ +#ifdef USE_INSISTENT_CHECK_CAPTURES_IN_EMPTY_REPEAT + STACK_EMPTY_CHECK_MEM_REC(is_empty, mem, s, reg); #else - STACK_NULL_CHECK_REC(isnull, mem, s); + STACK_EMPTY_CHECK_REC(is_empty, mem, s); #endif - if (isnull) { + if (is_empty) { #ifdef ONIG_DEBUG_MATCH - fprintf(stderr, "NULL_CHECK_END_MEMST_PUSH: skip id:%d, s:%d\n", - (int )mem, (int )s); + fprintf(stderr, "EMPTY_CHECK_END_MEM_PUSH: skip id:%d, s:%p\n", + (int )mem, s); #endif - if (isnull == -1) goto fail; - goto null_check_found; - } - else { - STACK_PUSH_NULL_CHECK_END(mem); - } - } - MOP_OUT; - continue; + if (is_empty == -1) goto fail; + goto empty_check_found; + } + else { + STACK_PUSH_EMPTY_CHECK_END(mem); + } + } + SOP_OUT; + continue; break; #endif - case OP_JUMP: MOP_IN(OP_JUMP); + case OP_JUMP: SOP_IN(OP_JUMP); GET_RELADDR_INC(addr, p); p += addr; - MOP_OUT; - CHECK_INTERRUPT_IN_MATCH_AT; + SOP_OUT; + CHECK_INTERRUPT_IN_MATCH; continue; break; - case OP_PUSH: MOP_IN(OP_PUSH); + case OP_PUSH: SOP_IN(OP_PUSH); GET_RELADDR_INC(addr, p); STACK_PUSH_ALT(p + addr, s, sprev); - MOP_OUT; + SOP_OUT; continue; break; -#ifdef USE_COMBINATION_EXPLOSION_CHECK - case OP_STATE_CHECK_PUSH: MOP_IN(OP_STATE_CHECK_PUSH); - GET_STATE_CHECK_NUM_INC(mem, p); - STATE_CHECK_VAL(scv, mem); - if (scv) goto fail; - + case OP_PUSH_SUPER: SOP_IN(OP_PUSH_SUPER); GET_RELADDR_INC(addr, p); - STACK_PUSH_ALT_WITH_STATE_CHECK(p + addr, s, sprev, mem); - MOP_OUT; - continue; - break; - - case OP_STATE_CHECK_PUSH_OR_JUMP: MOP_IN(OP_STATE_CHECK_PUSH_OR_JUMP); - GET_STATE_CHECK_NUM_INC(mem, p); - GET_RELADDR_INC(addr, p); - STATE_CHECK_VAL(scv, mem); - if (scv) { - p += addr; - } - else { - STACK_PUSH_ALT_WITH_STATE_CHECK(p + addr, s, sprev, mem); - } - MOP_OUT; + STACK_PUSH_SUPER_ALT(p + addr, s, sprev); + SOP_OUT; continue; break; - case OP_STATE_CHECK: MOP_IN(OP_STATE_CHECK); - GET_STATE_CHECK_NUM_INC(mem, p); - STATE_CHECK_VAL(scv, mem); - if (scv) goto fail; - - STACK_PUSH_STATE_CHECK(s, mem); - MOP_OUT; - continue; - break; -#endif /* USE_COMBINATION_EXPLOSION_CHECK */ - - case OP_POP: MOP_IN(OP_POP); + case OP_POP_OUT: SOP_IN(OP_POP_OUT); STACK_POP_ONE; - MOP_OUT; + /* for stop backtrack */ + /* CHECK_RETRY_LIMIT_IN_MATCH; */ + SOP_OUT; continue; break; - case OP_PUSH_OR_JUMP_EXACT1: MOP_IN(OP_PUSH_OR_JUMP_EXACT1); + case OP_PUSH_OR_JUMP_EXACT1: SOP_IN(OP_PUSH_OR_JUMP_EXACT1); GET_RELADDR_INC(addr, p); if (*p == *s && DATA_ENSURE_CHECK1) { - p++; - STACK_PUSH_ALT(p + addr, s, sprev); - MOP_OUT; - continue; + p++; + STACK_PUSH_ALT(p + addr, s, sprev); + SOP_OUT; + continue; } p += (addr + 1); - MOP_OUT; + SOP_OUT; continue; break; - case OP_PUSH_IF_PEEK_NEXT: MOP_IN(OP_PUSH_IF_PEEK_NEXT); + case OP_PUSH_IF_PEEK_NEXT: SOP_IN(OP_PUSH_IF_PEEK_NEXT); GET_RELADDR_INC(addr, p); if (*p == *s) { - p++; - STACK_PUSH_ALT(p + addr, s, sprev); - MOP_OUT; - continue; + p++; + STACK_PUSH_ALT(p + addr, s, sprev); + SOP_OUT; + continue; } p++; - MOP_OUT; + SOP_OUT; continue; break; - case OP_REPEAT: MOP_IN(OP_REPEAT); + case OP_REPEAT: SOP_IN(OP_REPEAT); { - GET_MEMNUM_INC(mem, p); /* mem: OP_REPEAT ID */ - GET_RELADDR_INC(addr, p); + GET_MEMNUM_INC(mem, p); /* mem: OP_REPEAT ID */ + GET_RELADDR_INC(addr, p); - STACK_ENSURE(1); - repeat_stk[mem] = GET_STACK_INDEX(stk); - STACK_PUSH_REPEAT(mem, p); + STACK_ENSURE(1); + repeat_stk[mem] = GET_STACK_INDEX(stk); + STACK_PUSH_REPEAT(mem, p); - if (reg->repeat_range[mem].lower == 0) { - STACK_PUSH_ALT(p + addr, s, sprev); - } + if (reg->repeat_range[mem].lower == 0) { + STACK_PUSH_ALT(p + addr, s, sprev); + } } - MOP_OUT; + SOP_OUT; continue; break; - case OP_REPEAT_NG: MOP_IN(OP_REPEAT_NG); + case OP_REPEAT_NG: SOP_IN(OP_REPEAT_NG); { - GET_MEMNUM_INC(mem, p); /* mem: OP_REPEAT ID */ - GET_RELADDR_INC(addr, p); + GET_MEMNUM_INC(mem, p); /* mem: OP_REPEAT ID */ + GET_RELADDR_INC(addr, p); - STACK_ENSURE(1); - repeat_stk[mem] = GET_STACK_INDEX(stk); - STACK_PUSH_REPEAT(mem, p); + STACK_ENSURE(1); + repeat_stk[mem] = GET_STACK_INDEX(stk); + STACK_PUSH_REPEAT(mem, p); - if (reg->repeat_range[mem].lower == 0) { - STACK_PUSH_ALT(p, s, sprev); - p += addr; - } + if (reg->repeat_range[mem].lower == 0) { + STACK_PUSH_ALT(p, s, sprev); + p += addr; + } } - MOP_OUT; + SOP_OUT; continue; break; - case OP_REPEAT_INC: MOP_IN(OP_REPEAT_INC); + case OP_REPEAT_INC: SOP_IN(OP_REPEAT_INC); GET_MEMNUM_INC(mem, p); /* mem: OP_REPEAT ID */ si = repeat_stk[mem]; stkp = STACK_AT(si); @@ -2559,19 +3681,19 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, p = stkp->u.repeat.pcode; } STACK_PUSH_REPEAT_INC(si); - MOP_OUT; - CHECK_INTERRUPT_IN_MATCH_AT; + SOP_OUT; + CHECK_INTERRUPT_IN_MATCH; continue; break; - case OP_REPEAT_INC_SG: MOP_IN(OP_REPEAT_INC_SG); + case OP_REPEAT_INC_SG: SOP_IN(OP_REPEAT_INC_SG); GET_MEMNUM_INC(mem, p); /* mem: OP_REPEAT ID */ STACK_GET_REPEAT(mem, stkp); si = GET_STACK_INDEX(stkp); goto repeat_inc; break; - case OP_REPEAT_INC_NG: MOP_IN(OP_REPEAT_INC_NG); + case OP_REPEAT_INC_NG: SOP_IN(OP_REPEAT_INC_NG); GET_MEMNUM_INC(mem, p); /* mem: OP_REPEAT ID */ si = repeat_stk[mem]; stkp = STACK_AT(si); @@ -2593,104 +3715,234 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, else if (stkp->u.repeat.count == reg->repeat_range[mem].upper) { STACK_PUSH_REPEAT_INC(si); } - MOP_OUT; - CHECK_INTERRUPT_IN_MATCH_AT; + SOP_OUT; + CHECK_INTERRUPT_IN_MATCH; continue; break; - case OP_REPEAT_INC_NG_SG: MOP_IN(OP_REPEAT_INC_NG_SG); + case OP_REPEAT_INC_NG_SG: SOP_IN(OP_REPEAT_INC_NG_SG); GET_MEMNUM_INC(mem, p); /* mem: OP_REPEAT ID */ STACK_GET_REPEAT(mem, stkp); si = GET_STACK_INDEX(stkp); goto repeat_inc_ng; break; - case OP_PUSH_POS: MOP_IN(OP_PUSH_POS); + case OP_PREC_READ_START: SOP_IN(OP_PREC_READ_START); STACK_PUSH_POS(s, sprev); - MOP_OUT; + SOP_OUT; continue; break; - case OP_POP_POS: MOP_IN(OP_POP_POS); + case OP_PREC_READ_END: SOP_IN(OP_PREC_READ_END); { - STACK_POS_END(stkp); - s = stkp->u.state.pstr; - sprev = stkp->u.state.pstr_prev; + STACK_EXEC_TO_VOID(stkp); + s = stkp->u.state.pstr; + sprev = stkp->u.state.pstr_prev; } - MOP_OUT; + SOP_OUT; continue; break; - case OP_PUSH_POS_NOT: MOP_IN(OP_PUSH_POS_NOT); + case OP_PREC_READ_NOT_START: SOP_IN(OP_PREC_READ_NOT_START); GET_RELADDR_INC(addr, p); - STACK_PUSH_POS_NOT(p + addr, s, sprev); - MOP_OUT; + STACK_PUSH_ALT_PREC_READ_NOT(p + addr, s, sprev); + SOP_OUT; continue; break; - case OP_FAIL_POS: MOP_IN(OP_FAIL_POS); - STACK_POP_TIL_POS_NOT; + case OP_PREC_READ_NOT_END: SOP_IN(OP_PREC_READ_NOT_END); + STACK_POP_TIL_ALT_PREC_READ_NOT; goto fail; break; - case OP_PUSH_STOP_BT: MOP_IN(OP_PUSH_STOP_BT); - STACK_PUSH_STOP_BT; - MOP_OUT; + case OP_ATOMIC_START: SOP_IN(OP_ATOMIC_START); + STACK_PUSH_TO_VOID_START; + SOP_OUT; continue; break; - case OP_POP_STOP_BT: MOP_IN(OP_POP_STOP_BT); - STACK_STOP_BT_END; - MOP_OUT; + case OP_ATOMIC_END: SOP_IN(OP_ATOMIC_END); + STACK_EXEC_TO_VOID(stkp); + SOP_OUT; continue; break; - case OP_LOOK_BEHIND: MOP_IN(OP_LOOK_BEHIND); + case OP_LOOK_BEHIND: SOP_IN(OP_LOOK_BEHIND); GET_LENGTH_INC(tlen, p); 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); - MOP_OUT; + SOP_OUT; continue; break; - case OP_PUSH_LOOK_BEHIND_NOT: MOP_IN(OP_PUSH_LOOK_BEHIND_NOT); + case OP_LOOK_BEHIND_NOT_START: SOP_IN(OP_LOOK_BEHIND_NOT_START); GET_RELADDR_INC(addr, p); GET_LENGTH_INC(tlen, p); q = (UChar* )ONIGENC_STEP_BACK(encode, str, s, (int )tlen); if (IS_NULL(q)) { - /* too short case -> success. ex. /(? success. ex. /(?p + addr; - MOP_OUT; + SOP_OUT; continue; break; - case OP_RETURN: MOP_IN(OP_RETURN); + case OP_RETURN: SOP_IN(OP_RETURN); STACK_RETURN(p); STACK_PUSH_RETURN; - MOP_OUT; + SOP_OUT; + continue; + break; +#endif + + case OP_PUSH_SAVE_VAL: SOP_IN(OP_PUSH_SAVE_VAL); + { + SaveType type; + GET_SAVE_TYPE_INC(type, p); + GET_MEMNUM_INC(mem, p); /* mem: save id */ + switch ((enum SaveType )type) { + case SAVE_KEEP: + STACK_PUSH_SAVE_VAL(mem, type, s); + break; + + case SAVE_S: + STACK_PUSH_SAVE_VAL_WITH_SPREV(mem, type, s); + break; + + case SAVE_RIGHT_RANGE: + STACK_PUSH_SAVE_VAL(mem, SAVE_RIGHT_RANGE, right_range); + break; + } + } + SOP_OUT; + continue; + break; + + case OP_UPDATE_VAR: SOP_IN(OP_UPDATE_VAR); + { + UpdateVarType type; + enum SaveType save_type; + + GET_UPDATE_VAR_TYPE_INC(type, p); + GET_MEMNUM_INC(mem, p); /* 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: + STACK_GET_SAVE_VAL_TYPE_LAST_ID_WITH_SPREV(SAVE_S, mem, s); + break; + case UPDATE_VAR_RIGHT_RANGE_FROM_S_STACK: + save_type = SAVE_S; + goto get_save_val_type_last_id; + break; + 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); + break; + case UPDATE_VAR_RIGHT_RANGE_INIT: + INIT_RIGHT_RANGE; + break; + } + } + SOP_OUT; + continue; + break; + +#ifdef USE_CALLOUT + case OP_CALLOUT_CONTENTS: SOP_IN(OP_CALLOUT_CONTENTS); + of = ONIG_CALLOUT_OF_CONTENTS; + goto callout_common_entry; + + SOP_OUT; + continue; + break; + + case OP_CALLOUT_NAME: SOP_IN(OP_CALLOUT_NAME); + { + int call_result; + int name_id; + int num; + int in; + CalloutListEntry* e; + OnigCalloutFunc func; + OnigCalloutArgs args; + + of = ONIG_CALLOUT_OF_NAME; + GET_MEMNUM_INC(name_id, p); + + callout_common_entry: + GET_MEMNUM_INC(num, p); + e = onig_reg_callout_list_at(reg, num); + in = e->in; + if (of == ONIG_CALLOUT_OF_NAME) { + func = onig_get_callout_start_func(reg, num); + } + else { + name_id = ONIG_NON_NAME_ID; + func = msa->mp->progress_callout_of_contents; + } + + if (IS_NOT_NULL(func) && (in & ONIG_CALLOUT_IN_PROGRESS) != 0) { + CALLOUT_BODY(func, ONIG_CALLOUT_IN_PROGRESS, name_id, + num, msa->mp->callout_user_data, args, call_result); + switch (call_result) { + case ONIG_CALLOUT_FAIL: + goto fail; + break; + case ONIG_CALLOUT_SUCCESS: + goto retraction_callout2; + break; + default: /* error code */ + if (call_result > 0) { + call_result = ONIGERR_INVALID_ARGUMENT; + } + best_len = call_result; + goto finish; + break; + } + } + else { + retraction_callout2: + if ((in & ONIG_CALLOUT_IN_RETRACTION) != 0) { + if (of == ONIG_CALLOUT_OF_NAME) { + if (IS_NOT_NULL(func)) { + STACK_PUSH_CALLOUT_NAME(name_id, num, func); + } + } + else { + func = msa->mp->retraction_callout_of_contents; + if (IS_NOT_NULL(func)) { + STACK_PUSH_CALLOUT_CONTENTS(num, func); + } + } + } + } + } + SOP_OUT; continue; break; #endif @@ -2700,22 +3952,15 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, break; fail: - MOP_OUT; + SOP_OUT; /* fall */ - case OP_FAIL: MOP_IN(OP_FAIL); + case OP_FAIL: SOP_IN(OP_FAIL); STACK_POP; p = stk->u.state.pcode; s = stk->u.state.pstr; sprev = stk->u.state.pstr_prev; - -#ifdef USE_COMBINATION_EXPLOSION_CHECK - if (stk->u.state.state_check != 0) { - stk->type = STK_STATE_CHECK_MARK; - stk++; - } -#endif - - MOP_OUT; + CHECK_RETRY_LIMIT_IN_MATCH; + SOP_OUT; continue; break; @@ -2728,31 +3973,33 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, finish: STACK_SAVE; - xfree(alloca_base); return best_len; #ifdef ONIG_DEBUG stack_error: STACK_SAVE; - xfree(alloca_base); return ONIGERR_STACK_BUG; #endif bytecode_error: STACK_SAVE; - xfree(alloca_base); return ONIGERR_UNDEFINED_BYTECODE; unexpected_bytecode_error: STACK_SAVE; - xfree(alloca_base); return ONIGERR_UNEXPECTED_BYTECODE; + +#ifdef USE_RETRY_LIMIT_IN_MATCH + retry_limit_in_match_over: + STACK_SAVE; + return ONIGERR_RETRY_LIMIT_IN_MATCH_OVER; +#endif } static UChar* slow_search(OnigEncoding enc, UChar* target, UChar* target_end, - const UChar* text, const UChar* text_end, UChar* text_range) + const UChar* text, const UChar* text_end, UChar* text_range) { UChar *t, *p, *s, *end; @@ -2768,12 +4015,12 @@ slow_search(OnigEncoding enc, UChar* target, UChar* target_end, p = s + 1; t = target + 1; while (t < target_end) { - if (*t != *p++) - break; - t++; + if (*t != *p++) + break; + t++; } if (t == target_end) - return s; + return s; } s += enclen(enc, s); } @@ -2784,7 +4031,7 @@ slow_search(OnigEncoding enc, UChar* target, UChar* target_end, static int str_lower_case_match(OnigEncoding enc, int case_fold_flag, const UChar* t, const UChar* tend, - const UChar* p, const UChar* end) + const UChar* p, const UChar* end) { int lowlen; UChar *q, lowbuf[ONIGENC_MBC_CASE_FOLD_MAXLEN]; @@ -2793,7 +4040,7 @@ str_lower_case_match(OnigEncoding enc, int case_fold_flag, lowlen = ONIGENC_MBC_CASE_FOLD(enc, case_fold_flag, &p, end, lowbuf); q = lowbuf; while (lowlen > 0) { - if (*t++ != *q++) return 0; + if (*t++ != *q++) return 0; lowlen--; } } @@ -2803,8 +4050,8 @@ str_lower_case_match(OnigEncoding enc, int case_fold_flag, 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* target, UChar* target_end, + const UChar* text, const UChar* text_end, UChar* text_range) { UChar *s, *end; @@ -2817,7 +4064,7 @@ slow_search_ic(OnigEncoding enc, int case_fold_flag, while (s < end) { if (str_lower_case_match(enc, case_fold_flag, target, target_end, - s, text_end)) + s, text_end)) return s; s += enclen(enc, s); @@ -2828,8 +4075,8 @@ slow_search_ic(OnigEncoding enc, int case_fold_flag, static UChar* slow_search_backward(OnigEncoding enc, UChar* target, UChar* target_end, - const UChar* text, const UChar* adjust_text, - const UChar* text_end, const UChar* text_start) + const UChar* text, const UChar* adjust_text, + const UChar* text_end, const UChar* text_start) { UChar *t, *p, *s; @@ -2845,12 +4092,12 @@ slow_search_backward(OnigEncoding enc, UChar* target, UChar* target_end, p = s + 1; t = target + 1; while (t < target_end) { - if (*t != *p++) - break; - t++; + if (*t != *p++) + break; + t++; } if (t == target_end) - return s; + return s; } s = (UChar* )onigenc_get_prev_char_head(enc, adjust_text, s); } @@ -2860,9 +4107,9 @@ 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* target, UChar* target_end, + const UChar* text, const UChar* adjust_text, + const UChar* text_end, const UChar* text_start) { UChar *s; @@ -2886,20 +4133,20 @@ slow_search_backward_ic(OnigEncoding enc, int case_fold_flag, static UChar* bm_search_notrev(regex_t* reg, const UChar* target, const UChar* target_end, - const UChar* text, const UChar* text_end, - const UChar* text_range) + const UChar* text, const UChar* text_end, + const UChar* text_range) { const UChar *s, *se, *t, *p, *end; const UChar *tail; int skip, tlen1; #ifdef ONIG_DEBUG_SEARCH - fprintf(stderr, "bm_search_notrev: text: %d, text_end: %d, text_range: %d\n", - (int )text, (int )text_end, (int )text_range); + fprintf(stderr, "bm_search_notrev: text: %p, text_end: %p, text_range: %p\n", + text, text_end, text_range); #endif tail = target_end - 1; - tlen1 = (int)(tail - target); + tlen1 = (int )(tail - target); end = text_range; if (end + tlen1 > text_end) end = text_end - tlen1; @@ -2911,8 +4158,8 @@ bm_search_notrev(regex_t* reg, const UChar* target, const UChar* target_end, p = se = s + tlen1; t = tail; while (*p == *t) { - if (t == target) return (UChar* )s; - p--; t--; + if (t == target) return (UChar* )s; + p--; t--; } skip = reg->map[*se]; t = s; @@ -2926,8 +4173,8 @@ bm_search_notrev(regex_t* reg, const UChar* target, const UChar* target_end, p = se = s + tlen1; t = tail; while (*p == *t) { - if (t == target) return (UChar* )s; - p--; t--; + if (t == target) return (UChar* )s; + p--; t--; } skip = reg->int_map[*se]; t = s; @@ -2942,7 +4189,7 @@ bm_search_notrev(regex_t* reg, const UChar* target, const UChar* target_end, static UChar* bm_search(regex_t* reg, const UChar* target, const UChar* target_end, - const UChar* text, const UChar* text_end, const UChar* text_range) + const UChar* text, const UChar* text_end, const UChar* text_range) { const UChar *s, *t, *p, *end; const UChar *tail; @@ -2958,8 +4205,8 @@ bm_search(regex_t* reg, const UChar* target, const UChar* target_end, p = s; t = tail; while (*p == *t) { - if (t == target) return (UChar* )p; - p--; t--; + if (t == target) return (UChar* )p; + p--; t--; } s += reg->map[*s]; } @@ -2969,8 +4216,8 @@ bm_search(regex_t* reg, const UChar* target, const UChar* target_end, p = s; t = tail; while (*p == *t) { - if (t == target) return (UChar* )p; - p--; t--; + if (t == target) return (UChar* )p; + p--; t--; } s += reg->int_map[*s]; } @@ -2978,10 +4225,9 @@ bm_search(regex_t* reg, const UChar* target, const UChar* target_end, return (UChar* )NULL; } +#ifdef USE_INT_MAP_BACKWARD static int -set_bm_backward_skip(UChar* s, UChar* end, OnigEncoding enc ARG_UNUSED, - int** skip) - +set_bm_backward_skip(UChar* s, UChar* end, OnigEncoding enc ARG_UNUSED, int** skip) { int i, len; @@ -2990,7 +4236,7 @@ set_bm_backward_skip(UChar* s, UChar* end, OnigEncoding enc ARG_UNUSED, if (IS_NULL(*skip)) return ONIGERR_MEMORY; } - len = (int)(end - s); + len = end - s; for (i = 0; i < ONIG_CHAR_TABLE_SIZE; i++) (*skip)[i] = len; @@ -3002,8 +4248,8 @@ set_bm_backward_skip(UChar* s, UChar* end, OnigEncoding enc ARG_UNUSED, static UChar* bm_search_backward(regex_t* reg, const UChar* target, const UChar* target_end, - const UChar* text, const UChar* adjust_text, - const UChar* text_end, const UChar* text_start) + const UChar* text, const UChar* adjust_text, + const UChar* text_end, const UChar* text_start) { const UChar *s, *t, *p; @@ -3028,10 +4274,11 @@ bm_search_backward(regex_t* reg, const UChar* target, const UChar* target_end, return (UChar* )NULL; } +#endif static UChar* map_search(OnigEncoding enc, UChar map[], - const UChar* text, const UChar* text_range) + const UChar* text, const UChar* text_range) { const UChar *s = text; @@ -3045,8 +4292,8 @@ map_search(OnigEncoding enc, UChar map[], static UChar* map_search_backward(OnigEncoding enc, UChar map[], - const UChar* text, const UChar* adjust_text, - const UChar* text_start) + const UChar* text, const UChar* adjust_text, + const UChar* text_start) { const UChar *s = text_start; @@ -3057,48 +4304,30 @@ map_search_backward(OnigEncoding enc, UChar map[], } return (UChar* )NULL; } +extern int +onig_match(regex_t* reg, const UChar* str, const UChar* end, const UChar* at, + OnigRegion* region, OnigOptionType option) +{ + int r; + OnigMatchParam mp; + + onig_initialize_match_param(&mp); + r = onig_match_with_param(reg, str, end, at, region, option, &mp); + onig_free_match_param_content(&mp); + return r; +} extern int -onig_match(regex_t* reg, const UChar* str, const UChar* end, const UChar* at, OnigRegion* region, - OnigOptionType option) +onig_match_with_param(regex_t* reg, const UChar* str, const UChar* end, + const UChar* at, OnigRegion* region, OnigOptionType option, + OnigMatchParam* mp) { int r; UChar *prev; - OnigMatchArg msa; - -#if defined(USE_RECOMPILE_API) && defined(USE_MULTI_THREAD_SYSTEM) - start: - THREAD_ATOMIC_START; - if (ONIG_STATE(reg) >= ONIG_STATE_NORMAL) { - ONIG_STATE_INC(reg); - if (IS_NOT_NULL(reg->chain) && ONIG_STATE(reg) == ONIG_STATE_NORMAL) { - onig_chain_reduce(reg); - ONIG_STATE_INC(reg); - } - } - else { - int n; - - THREAD_ATOMIC_END; - n = 0; - while (ONIG_STATE(reg) < ONIG_STATE_NORMAL) { - if (++n > THREAD_PASS_LIMIT_COUNT) - return ONIGERR_OVER_THREAD_PASS_LIMIT_COUNT; - THREAD_PASS; - } - goto start; - } - THREAD_ATOMIC_END; -#endif /* USE_RECOMPILE_API && USE_MULTI_THREAD_SYSTEM */ - - MATCH_ARG_INIT(msa, option, region, at); -#ifdef USE_COMBINATION_EXPLOSION_CHECK - { - int offset = at - str; - STATE_CHECK_BUFF_INIT(msa, end - str, offset, reg->num_comb_exp_check); - } -#endif + MatchArg msa; + ADJUST_MATCH_PARAM(reg, mp); + MATCH_ARG_INIT(msa, reg, option, region, at, mp); if (region #ifdef USE_POSIX_API_REGION_OPTION && !IS_POSIX_REGION(option) @@ -3110,28 +4339,31 @@ onig_match(regex_t* reg, const UChar* str, const UChar* end, const UChar* at, On r = 0; if (r == 0) { + if (ONIG_IS_OPTION_ON(option, ONIG_OPTION_CHECK_VALIDITY_OF_STRING)) { + if (! ONIGENC_IS_VALID_MBC_STRING(reg->enc, str, end)) { + r = ONIGERR_INVALID_WIDE_CHAR_VALUE; + goto end; + } + } + prev = (UChar* )onigenc_get_prev_char_head(reg->enc, str, at); - r = match_at(reg, str, end, -#ifdef USE_MATCH_RANGE_MUST_BE_INSIDE_OF_SPECIFIED_RANGE - end, -#endif - at, prev, &msa); + r = match_at(reg, str, end, end, at, prev, &msa); } + end: MATCH_ARG_FREE(msa); - ONIG_STATE_DEC_THREAD(reg); return r; } static int forward_search_range(regex_t* reg, const UChar* str, const UChar* end, UChar* s, - UChar* range, UChar** low, UChar** high, UChar** low_prev) + UChar* range, UChar** low, UChar** high, UChar** low_prev) { UChar *p, *pprev = (UChar* )NULL; #ifdef ONIG_DEBUG_SEARCH - fprintf(stderr, "forward_search_range: str: %d, end: %d, s: %d, range: %d\n", - (int )str, (int )end, (int )s, (int )range); + fprintf(stderr, "forward_search_range: str: %p, end: %p, s: %p, range: %p\n", + str, end, s, range); #endif p = s; @@ -3141,29 +4373,31 @@ forward_search_range(regex_t* reg, const UChar* str, const UChar* end, UChar* s, } else { UChar *q = p + reg->dmin; + + if (q >= end) return 0; /* fail */ while (p < q) p += enclen(reg->enc, p); } } retry: switch (reg->optimize) { - case ONIG_OPTIMIZE_EXACT: + case OPTIMIZE_EXACT: p = slow_search(reg->enc, reg->exact, reg->exact_end, p, end, range); break; - case ONIG_OPTIMIZE_EXACT_IC: + case OPTIMIZE_EXACT_IC: p = slow_search_ic(reg->enc, reg->case_fold_flag, reg->exact, reg->exact_end, p, end, range); break; - case ONIG_OPTIMIZE_EXACT_BM: + case OPTIMIZE_EXACT_BM: p = bm_search(reg, reg->exact, reg->exact_end, p, end, range); break; - case ONIG_OPTIMIZE_EXACT_BM_NOT_REV: + case OPTIMIZE_EXACT_BM_NO_REV: p = bm_search_notrev(reg, reg->exact, reg->exact_end, p, end, range); break; - case ONIG_OPTIMIZE_MAP: + case OPTIMIZE_MAP: p = map_search(reg->enc, reg->map, p, range); break; } @@ -3181,58 +4415,65 @@ forward_search_range(regex_t* reg, const UChar* str, const UChar* end, UChar* s, switch (reg->sub_anchor) { case ANCHOR_BEGIN_LINE: - if (!ON_STR_BEGIN(p)) { - prev = onigenc_get_prev_char_head(reg->enc, - (pprev ? pprev : str), p); - if (!ONIGENC_IS_MBC_NEWLINE(reg->enc, prev, end)) - goto retry_gate; - } - break; + if (!ON_STR_BEGIN(p)) { + prev = onigenc_get_prev_char_head(reg->enc, + (pprev ? pprev : str), p); + if (!ONIGENC_IS_MBC_NEWLINE(reg->enc, prev, end)) + goto retry_gate; + } + break; case ANCHOR_END_LINE: - if (ON_STR_END(p)) { + if (ON_STR_END(p)) { #ifndef USE_NEWLINE_AT_END_OF_STRING_HAS_EMPTY_LINE - prev = (UChar* )onigenc_get_prev_char_head(reg->enc, - (pprev ? pprev : str), p); - if (prev && ONIGENC_IS_MBC_NEWLINE(reg->enc, prev, end)) - goto retry_gate; + prev = (UChar* )onigenc_get_prev_char_head(reg->enc, + (pprev ? pprev : str), p); + if (prev && ONIGENC_IS_MBC_NEWLINE(reg->enc, prev, end)) + goto retry_gate; #endif - } - else if (! ONIGENC_IS_MBC_NEWLINE(reg->enc, p, end) + } + else if (! ONIGENC_IS_MBC_NEWLINE(reg->enc, p, end) #ifdef USE_CRNL_AS_LINE_TERMINATOR - && ! ONIGENC_IS_MBC_CRNL(reg->enc, p, end) + && ! ONIGENC_IS_MBC_CRNL(reg->enc, p, end) #endif - ) - goto retry_gate; - break; + ) + goto retry_gate; + break; } } if (reg->dmax == 0) { *low = p; if (low_prev) { - if (*low > s) - *low_prev = onigenc_get_prev_char_head(reg->enc, s, p); - else - *low_prev = onigenc_get_prev_char_head(reg->enc, - (pprev ? pprev : str), p); + if (*low > s) + *low_prev = onigenc_get_prev_char_head(reg->enc, s, p); + else + *low_prev = onigenc_get_prev_char_head(reg->enc, + (pprev ? pprev : str), p); } } else { - if (reg->dmax != ONIG_INFINITE_DISTANCE) { - *low = p - reg->dmax; - if (*low > s) { - *low = onigenc_get_right_adjust_char_head_with_prev(reg->enc, s, - *low, (const UChar** )low_prev); - if (low_prev && IS_NULL(*low_prev)) - *low_prev = onigenc_get_prev_char_head(reg->enc, - (pprev ? pprev : s), *low); - } - else { - if (low_prev) - *low_prev = onigenc_get_prev_char_head(reg->enc, - (pprev ? pprev : str), *low); - } + if (reg->dmax != INFINITE_LEN) { + if (p - str < reg->dmax) { + *low = (UChar* )str; + if (low_prev) + *low_prev = onigenc_get_prev_char_head(reg->enc, str, *low); + } + else { + *low = p - reg->dmax; + if (*low > s) { + *low = onigenc_get_right_adjust_char_head_with_prev(reg->enc, s, + *low, (const UChar** )low_prev); + if (low_prev && IS_NULL(*low_prev)) + *low_prev = onigenc_get_prev_char_head(reg->enc, + (pprev ? pprev : s), *low); + } + else { + if (low_prev) + *low_prev = onigenc_get_prev_char_head(reg->enc, + (pprev ? pprev : str), *low); + } + } } } /* no needs to adjust *high, *high is used as range check only */ @@ -3240,8 +4481,8 @@ forward_search_range(regex_t* reg, const UChar* str, const UChar* end, UChar* s, #ifdef ONIG_DEBUG_SEARCH fprintf(stderr, - "forward_search_range success: low: %d, high: %d, dmin: %d, dmax: %d\n", - (int )(*low - str), (int )(*high - str), reg->dmin, reg->dmax); + "forward_search_range success: low: %d, high: %d, dmin: %d, dmax: %d\n", + (int )(*low - str), (int )(*high - str), reg->dmin, reg->dmax); #endif return 1; /* success */ } @@ -3249,17 +4490,14 @@ forward_search_range(regex_t* reg, const UChar* str, const UChar* end, UChar* s, return 0; /* fail */ } -static int set_bm_backward_skip P_((UChar* s, UChar* end, OnigEncoding enc, - int** skip)); #define BM_BACKWARD_SEARCH_LENGTH_THRESHOLD 100 static int backward_search_range(regex_t* reg, const UChar* str, const UChar* end, - UChar* s, const UChar* range, UChar* adjrange, - UChar** low, UChar** high) + UChar* s, const UChar* range, UChar* adjrange, + UChar** low, UChar** high) { - int r; UChar *p; range += reg->dmin; @@ -3267,33 +4505,39 @@ backward_search_range(regex_t* reg, const UChar* str, const UChar* end, retry: switch (reg->optimize) { - case ONIG_OPTIMIZE_EXACT: + case OPTIMIZE_EXACT: exact_method: p = slow_search_backward(reg->enc, reg->exact, reg->exact_end, - range, adjrange, end, p); + range, adjrange, end, p); break; - case ONIG_OPTIMIZE_EXACT_IC: + case OPTIMIZE_EXACT_IC: p = slow_search_backward_ic(reg->enc, reg->case_fold_flag, reg->exact, reg->exact_end, range, adjrange, end, p); break; - case ONIG_OPTIMIZE_EXACT_BM: - case ONIG_OPTIMIZE_EXACT_BM_NOT_REV: + case OPTIMIZE_EXACT_BM: + case OPTIMIZE_EXACT_BM_NO_REV: +#ifdef USE_INT_MAP_BACKWARD if (IS_NULL(reg->int_map_backward)) { + int r; + if (s - range < BM_BACKWARD_SEARCH_LENGTH_THRESHOLD) - goto exact_method; + goto exact_method; r = set_bm_backward_skip(reg->exact, reg->exact_end, reg->enc, - &(reg->int_map_backward)); - if (r) return r; + &(reg->int_map_backward)); + if (r != 0) return r; } p = bm_search_backward(reg, reg->exact, reg->exact_end, range, adjrange, - end, p); + end, p); +#else + goto exact_method; +#endif break; - case ONIG_OPTIMIZE_MAP: + case OPTIMIZE_MAP: p = map_search_backward(reg->enc, reg->map, range, adjrange, p); break; } @@ -3304,41 +4548,41 @@ backward_search_range(regex_t* reg, const UChar* str, const UChar* end, switch (reg->sub_anchor) { case ANCHOR_BEGIN_LINE: - if (!ON_STR_BEGIN(p)) { - prev = onigenc_get_prev_char_head(reg->enc, str, p); - if (!ONIGENC_IS_MBC_NEWLINE(reg->enc, prev, end)) { - p = prev; - goto retry; - } - } - break; + if (!ON_STR_BEGIN(p)) { + prev = onigenc_get_prev_char_head(reg->enc, str, p); + if (!ONIGENC_IS_MBC_NEWLINE(reg->enc, prev, end)) { + p = prev; + goto retry; + } + } + break; case ANCHOR_END_LINE: - if (ON_STR_END(p)) { + if (ON_STR_END(p)) { #ifndef USE_NEWLINE_AT_END_OF_STRING_HAS_EMPTY_LINE - prev = onigenc_get_prev_char_head(reg->enc, adjrange, p); - if (IS_NULL(prev)) goto fail; - if (ONIGENC_IS_MBC_NEWLINE(reg->enc, prev, end)) { - p = prev; - goto retry; - } -#endif - } - else if (! ONIGENC_IS_MBC_NEWLINE(reg->enc, p, end) + prev = onigenc_get_prev_char_head(reg->enc, adjrange, p); + if (IS_NULL(prev)) goto fail; + if (ONIGENC_IS_MBC_NEWLINE(reg->enc, prev, end)) { + p = prev; + goto retry; + } +#endif + } + else if (! ONIGENC_IS_MBC_NEWLINE(reg->enc, p, end) #ifdef USE_CRNL_AS_LINE_TERMINATOR - && ! ONIGENC_IS_MBC_CRNL(reg->enc, p, end) + && ! ONIGENC_IS_MBC_CRNL(reg->enc, p, end) #endif - ) { - p = onigenc_get_prev_char_head(reg->enc, adjrange, p); - if (IS_NULL(p)) goto fail; - goto retry; - } - break; + ) { + p = onigenc_get_prev_char_head(reg->enc, adjrange, p); + if (IS_NULL(p)) goto fail; + goto retry; + } + break; } } /* no needs to adjust *high, *high is used as range check only */ - if (reg->dmax != ONIG_INFINITE_DISTANCE) { + if (reg->dmax != INFINITE_LEN) { *low = p - reg->dmax; *high = p - reg->dmin; *high = onigenc_get_right_adjust_char_head(reg->enc, adjrange, *high); @@ -3346,7 +4590,7 @@ backward_search_range(regex_t* reg, const UChar* str, const UChar* end, #ifdef ONIG_DEBUG_SEARCH fprintf(stderr, "backward_search_range: low: %d, high: %d\n", - (int )(*low - str), (int )(*high - str)); + (int )(*low - str), (int )(*high - str)); #endif return 1; /* success */ } @@ -3361,60 +4605,57 @@ backward_search_range(regex_t* reg, const UChar* str, const UChar* end, extern int onig_search(regex_t* reg, const UChar* str, const UChar* end, - const UChar* start, const UChar* range, OnigRegion* region, OnigOptionType option) + const UChar* start, const UChar* range, OnigRegion* region, + OnigOptionType option) +{ + int r; + OnigMatchParam mp; + + onig_initialize_match_param(&mp); + r = onig_search_with_param(reg, str, end, start, range, region, option, &mp); + onig_free_match_param_content(&mp); + return r; + +} + +extern int +onig_search_with_param(regex_t* reg, const UChar* str, const UChar* end, + const UChar* start, const UChar* range, OnigRegion* region, + OnigOptionType option, OnigMatchParam* mp) { int r; UChar *s, *prev; - OnigMatchArg msa; + MatchArg msa; const UChar *orig_start = start; -#ifdef USE_MATCH_RANGE_MUST_BE_INSIDE_OF_SPECIFIED_RANGE const UChar *orig_range = range; -#endif - -#if defined(USE_RECOMPILE_API) && defined(USE_MULTI_THREAD_SYSTEM) - start: - THREAD_ATOMIC_START; - if (ONIG_STATE(reg) >= ONIG_STATE_NORMAL) { - ONIG_STATE_INC(reg); - if (IS_NOT_NULL(reg->chain) && ONIG_STATE(reg) == ONIG_STATE_NORMAL) { - onig_chain_reduce(reg); - ONIG_STATE_INC(reg); - } - } - else { - int n; - - THREAD_ATOMIC_END; - n = 0; - while (ONIG_STATE(reg) < ONIG_STATE_NORMAL) { - if (++n > THREAD_PASS_LIMIT_COUNT) - return ONIGERR_OVER_THREAD_PASS_LIMIT_COUNT; - THREAD_PASS; - } - goto start; - } - THREAD_ATOMIC_END; -#endif /* USE_RECOMPILE_API && USE_MULTI_THREAD_SYSTEM */ #ifdef ONIG_DEBUG_SEARCH fprintf(stderr, - "onig_search (entry point): str: %d, end: %d, start: %d, range: %d\n", - (int )str, (int )(end - str), (int )(start - str), (int )(range - str)); + "onig_search (entry point): str: %p, end: %d, start: %d, range: %d\n", + str, (int )(end - str), (int )(start - str), (int )(range - str)); #endif + ADJUST_MATCH_PARAM(reg, mp); + if (region #ifdef USE_POSIX_API_REGION_OPTION && !IS_POSIX_REGION(option) #endif ) { r = onig_region_resize_clear(region, reg->num_mem + 1); - if (r) goto finish_no_msa; + if (r != 0) goto finish_no_msa; } if (start > end || start < str) goto mismatch_no_msa; + if (ONIG_IS_OPTION_ON(option, ONIG_OPTION_CHECK_VALIDITY_OF_STRING)) { + if (! ONIGENC_IS_VALID_MBC_STRING(reg->enc, str, end)) { + r = ONIGERR_INVALID_WIDE_CHAR_VALUE; + goto finish_no_msa; + } + } + -#ifdef USE_MATCH_RANGE_MUST_BE_INSIDE_OF_SPECIFIED_RANGE #ifdef USE_FIND_LONGEST_SEARCH_ALL_OF_RANGE #define MATCH_AND_RETURN_CHECK(upper_range) \ r = match_at(reg, str, end, (upper_range), s, prev, &msa); \ @@ -3436,29 +4677,6 @@ onig_search(regex_t* reg, const UChar* str, const UChar* end, else goto finish; /* error */ \ } #endif /* USE_FIND_LONGEST_SEARCH_ALL_OF_RANGE */ -#else -#ifdef USE_FIND_LONGEST_SEARCH_ALL_OF_RANGE -#define MATCH_AND_RETURN_CHECK(none) \ - r = match_at(reg, str, end, s, prev, &msa);\ - if (r != ONIG_MISMATCH) {\ - if (r >= 0) {\ - if (! IS_FIND_LONGEST(reg->options)) {\ - goto match;\ - }\ - }\ - else goto finish; /* error */ \ - } -#else -#define MATCH_AND_RETURN_CHECK(none) \ - r = match_at(reg, str, end, s, prev, &msa);\ - if (r != ONIG_MISMATCH) {\ - if (r >= 0) {\ - goto match;\ - }\ - else goto finish; /* error */ \ - } -#endif /* USE_FIND_LONGEST_SEARCH_ALL_OF_RANGE */ -#endif /* USE_MATCH_RANGE_MUST_BE_INSIDE_OF_SPECIFIED_RANGE */ /* anchor optimize: resume search range */ @@ -3469,56 +4687,55 @@ onig_search(regex_t* reg, const UChar* str, const UChar* end, /* search start-position only */ begin_position: if (range > start) - range = start + 1; + range = start + 1; else - range = start; + range = start; } else if (reg->anchor & ANCHOR_BEGIN_BUF) { /* search str-position only */ if (range > start) { - if (start != str) goto mismatch_no_msa; - range = str + 1; + if (start != str) goto mismatch_no_msa; + range = str + 1; } else { - if (range <= str) { - start = str; - range = str; - } - else - goto mismatch_no_msa; + if (range <= str) { + start = str; + range = str; + } + else + goto mismatch_no_msa; } } else if (reg->anchor & ANCHOR_END_BUF) { min_semi_end = max_semi_end = (UChar* )end; end_buf: - if ((OnigDistance )(max_semi_end - str) < reg->anchor_dmin) - goto mismatch_no_msa; + if ((OnigLen )(max_semi_end - str) < reg->anchor_dmin) + goto mismatch_no_msa; if (range > start) { - if ((OnigDistance )(min_semi_end - start) > reg->anchor_dmax) { - start = min_semi_end - reg->anchor_dmax; - if (start < end) - start = onigenc_get_right_adjust_char_head(reg->enc, str, start); - else { /* match with empty at end */ - start = onigenc_get_prev_char_head(reg->enc, str, end); - } - } - if ((OnigDistance )(max_semi_end - (range - 1)) < reg->anchor_dmin) { - range = max_semi_end - reg->anchor_dmin + 1; - } - - if (start >= range) goto mismatch_no_msa; + if ((OnigLen )(min_semi_end - start) > reg->anchor_dmax) { + start = min_semi_end - reg->anchor_dmax; + if (start < end) + start = onigenc_get_right_adjust_char_head(reg->enc, str, start); + } + if ((OnigLen )(max_semi_end - (range - 1)) < reg->anchor_dmin) { + range = max_semi_end - reg->anchor_dmin + 1; + } + + if (start > range) goto mismatch_no_msa; + /* If start == range, match with empty at end. + Backward search is used. */ } else { - if ((OnigDistance )(min_semi_end - range) > reg->anchor_dmax) { - range = min_semi_end - reg->anchor_dmax; - } - if ((OnigDistance )(max_semi_end - start) < reg->anchor_dmin) { - start = max_semi_end - reg->anchor_dmin; - start = ONIGENC_LEFT_ADJUST_CHAR_HEAD(reg->enc, str, start); - } - if (range > start) goto mismatch_no_msa; + if ((OnigLen )(min_semi_end - range) > reg->anchor_dmax) { + range = min_semi_end - reg->anchor_dmax; + } + if ((OnigLen )(max_semi_end - start) < reg->anchor_dmin) { + start = max_semi_end - reg->anchor_dmin; + start = ONIGENC_LEFT_ADJUST_CHAR_HEAD(reg->enc, str, start); + } + if (range > start) goto mismatch_no_msa; } } else if (reg->anchor & ANCHOR_SEMI_END_BUF) { @@ -3526,25 +4743,25 @@ onig_search(regex_t* reg, const UChar* str, const UChar* end, max_semi_end = (UChar* )end; if (ONIGENC_IS_MBC_NEWLINE(reg->enc, pre_end, end)) { - min_semi_end = pre_end; + min_semi_end = pre_end; #ifdef USE_CRNL_AS_LINE_TERMINATOR - pre_end = ONIGENC_STEP_BACK(reg->enc, str, pre_end, 1); - if (IS_NOT_NULL(pre_end) && - ONIGENC_IS_MBC_CRNL(reg->enc, pre_end, end)) { - min_semi_end = pre_end; - } + pre_end = ONIGENC_STEP_BACK(reg->enc, str, pre_end, 1); + if (IS_NOT_NULL(pre_end) && + ONIGENC_IS_MBC_CRNL(reg->enc, pre_end, end)) { + min_semi_end = pre_end; + } #endif - if (min_semi_end > str && start <= min_semi_end) { - goto end_buf; - } + if (min_semi_end > str && start <= min_semi_end) { + goto end_buf; + } } else { - min_semi_end = (UChar* )end; - goto end_buf; + min_semi_end = (UChar* )end; + goto end_buf; } } - else if ((reg->anchor & ANCHOR_ANYCHAR_STAR_ML)) { + else if ((reg->anchor & ANCHOR_ANYCHAR_INF_ML)) { goto begin_position; } } @@ -3560,11 +4777,7 @@ onig_search(regex_t* reg, const UChar* str, const UChar* end, s = (UChar* )start; prev = (UChar* )NULL; - MATCH_ARG_INIT(msa, option, region, start); -#ifdef USE_COMBINATION_EXPLOSION_CHECK - msa.state_check_buff = (void* )0; - msa.state_check_buff_size = 0; /* NO NEED, for valgrind */ -#endif + MATCH_ARG_INIT(msa, reg, option, region, start, mp); MATCH_AND_RETURN_CHECK(end); goto mismatch; } @@ -3573,16 +4786,10 @@ onig_search(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", - (int )(end - str), (int )(start - str), (int )(range - str)); + (int )(end - str), (int )(start - str), (int )(range - str)); #endif - MATCH_ARG_INIT(msa, option, region, orig_start); -#ifdef USE_COMBINATION_EXPLOSION_CHECK - { - int offset = (MIN(start, range) - str); - STATE_CHECK_BUFF_INIT(msa, end - str, offset, reg->num_comb_exp_check); - } -#endif + MATCH_ARG_INIT(msa, reg, option, region, orig_start, mp); s = (UChar* )start; if (range > start) { /* forward search */ @@ -3591,51 +4798,53 @@ onig_search(regex_t* reg, const UChar* str, const UChar* end, else prev = (UChar* )NULL; - if (reg->optimize != ONIG_OPTIMIZE_NONE) { + if (reg->optimize != OPTIMIZE_NONE) { UChar *sch_range, *low, *high, *low_prev; sch_range = (UChar* )range; if (reg->dmax != 0) { - if (reg->dmax == ONIG_INFINITE_DISTANCE) - sch_range = (UChar* )end; - else { - sch_range += reg->dmax; - if (sch_range > end) sch_range = (UChar* )end; - } + if (reg->dmax == INFINITE_LEN) + sch_range = (UChar* )end; + else { + sch_range += reg->dmax; + if (sch_range > end) sch_range = (UChar* )end; + } } if ((end - start) < reg->threshold_len) goto mismatch; - if (reg->dmax != ONIG_INFINITE_DISTANCE) { - do { - if (! forward_search_range(reg, str, end, s, sch_range, - &low, &high, &low_prev)) goto mismatch; - if (s < low) { - s = low; - prev = low_prev; - } - while (s <= high) { - MATCH_AND_RETURN_CHECK(orig_range); - prev = s; - s += enclen(reg->enc, s); - } - } while (s < range); - goto mismatch; + if (reg->dmax != INFINITE_LEN) { + do { + if (! forward_search_range(reg, str, end, s, sch_range, + &low, &high, &low_prev)) goto mismatch; + if (s < low) { + s = low; + prev = low_prev; + } + while (s <= high) { + MATCH_AND_RETURN_CHECK(orig_range); + prev = s; + s += enclen(reg->enc, s); + } + } while (s < range); + goto mismatch; } else { /* check only. */ - if (! forward_search_range(reg, str, end, s, sch_range, - &low, &high, (UChar** )NULL)) goto mismatch; + if (! forward_search_range(reg, str, end, s, sch_range, + &low, &high, (UChar** )NULL)) goto mismatch; - if ((reg->anchor & ANCHOR_ANYCHAR_STAR) != 0) { + if ((reg->anchor & ANCHOR_ANYCHAR_INF) != 0) { do { MATCH_AND_RETURN_CHECK(orig_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); + if ((reg->anchor & (ANCHOR_LOOK_BEHIND | ANCHOR_PREC_READ_NOT)) == 0) { + while (!ONIGENC_IS_MBC_NEWLINE(reg->enc, prev, end) && s < range) { + prev = s; + s += enclen(reg->enc, s); + } } } while (s < range); goto mismatch; @@ -3654,56 +4863,54 @@ onig_search(regex_t* reg, const UChar* str, const UChar* end, } } else { /* backward search */ -#ifdef USE_MATCH_RANGE_MUST_BE_INSIDE_OF_SPECIFIED_RANGE if (orig_start < end) orig_start += enclen(reg->enc, orig_start); /* is upper range */ -#endif - if (reg->optimize != ONIG_OPTIMIZE_NONE) { + if (reg->optimize != OPTIMIZE_NONE) { UChar *low, *high, *adjrange, *sch_start; if (range < end) - adjrange = ONIGENC_LEFT_ADJUST_CHAR_HEAD(reg->enc, str, range); + adjrange = ONIGENC_LEFT_ADJUST_CHAR_HEAD(reg->enc, str, range); else - adjrange = (UChar* )end; - - if (reg->dmax != ONIG_INFINITE_DISTANCE && - (end - range) >= reg->threshold_len) { - do { - sch_start = s + reg->dmax; - if (sch_start > end) sch_start = (UChar* )end; - if (backward_search_range(reg, str, end, sch_start, range, adjrange, - &low, &high) <= 0) - goto mismatch; - - if (s > high) - s = high; - - while (s >= low) { - prev = onigenc_get_prev_char_head(reg->enc, str, s); - MATCH_AND_RETURN_CHECK(orig_start); - s = prev; - } - } while (s >= range); - goto mismatch; + adjrange = (UChar* )end; + + if (reg->dmax != INFINITE_LEN && + (end - range) >= reg->threshold_len) { + do { + sch_start = s + reg->dmax; + if (sch_start > end) sch_start = (UChar* )end; + if (backward_search_range(reg, str, end, sch_start, range, adjrange, + &low, &high) <= 0) + goto mismatch; + + if (s > high) + s = high; + + while (s >= low) { + prev = onigenc_get_prev_char_head(reg->enc, str, s); + MATCH_AND_RETURN_CHECK(orig_start); + s = prev; + } + } while (s >= range); + goto mismatch; } else { /* check only. */ - if ((end - range) < reg->threshold_len) goto mismatch; - - sch_start = s; - if (reg->dmax != 0) { - if (reg->dmax == ONIG_INFINITE_DISTANCE) - sch_start = (UChar* )end; - else { - sch_start += reg->dmax; - if (sch_start > end) sch_start = (UChar* )end; - else - sch_start = ONIGENC_LEFT_ADJUST_CHAR_HEAD(reg->enc, - start, sch_start); - } - } - if (backward_search_range(reg, str, end, sch_start, range, adjrange, - &low, &high) <= 0) goto mismatch; + if ((end - range) < reg->threshold_len) goto mismatch; + + sch_start = s; + if (reg->dmax != 0) { + if (reg->dmax == INFINITE_LEN) + sch_start = (UChar* )end; + else { + sch_start += reg->dmax; + if (sch_start > end) sch_start = (UChar* )end; + else + sch_start = ONIGENC_LEFT_ADJUST_CHAR_HEAD(reg->enc, + start, sch_start); + } + } + if (backward_search_range(reg, str, end, sch_start, range, adjrange, + &low, &high) <= 0) goto mismatch; } } @@ -3727,10 +4934,9 @@ onig_search(regex_t* reg, const UChar* str, const UChar* end, finish: MATCH_ARG_FREE(msa); - ONIG_STATE_DEC_THREAD(reg); /* If result is mismatch and no FIND_NOT_EMPTY option, - then the region is not setted in match_at(). */ + then the region is not set in match_at(). */ if (IS_FIND_NOT_EMPTY(reg->options) && region #ifdef USE_POSIX_API_REGION_OPTION && !IS_POSIX_REGION(option) @@ -3748,7 +4954,6 @@ onig_search(regex_t* reg, const UChar* str, const UChar* end, mismatch_no_msa: r = ONIG_MISMATCH; finish_no_msa: - ONIG_STATE_DEC_THREAD(reg); #ifdef ONIG_DEBUG if (r != ONIG_MISMATCH) fprintf(stderr, "onig_search: error %d\n", r); @@ -3756,9 +4961,57 @@ onig_search(regex_t* reg, const UChar* str, const UChar* end, return r; match: - ONIG_STATE_DEC_THREAD(reg); MATCH_ARG_FREE(msa); - return (int)(s - str); + return (int )(s - str); +} + +extern int +onig_scan(regex_t* reg, const UChar* str, const UChar* end, + OnigRegion* region, OnigOptionType option, + int (*scan_callback)(int, int, OnigRegion*, void*), + void* callback_arg) +{ + int r; + int n; + int rs; + const UChar* start; + + if (ONIG_IS_OPTION_ON(option, ONIG_OPTION_CHECK_VALIDITY_OF_STRING)) { + if (! ONIGENC_IS_VALID_MBC_STRING(reg->enc, str, end)) + return ONIGERR_INVALID_WIDE_CHAR_VALUE; + + ONIG_OPTION_OFF(option, ONIG_OPTION_CHECK_VALIDITY_OF_STRING); + } + + n = 0; + start = str; + while (1) { + r = onig_search(reg, str, end, start, end, region, option); + if (r >= 0) { + rs = scan_callback(n, r, region, callback_arg); + n++; + if (rs != 0) + return rs; + + if (region->end[0] == start - str) { + if (start >= end) break; + start += enclen(reg->enc, start); + } + else + start = str + region->end[0]; + + if (start > end) + break; + } + else if (r == ONIG_MISMATCH) { + break; + } + else { /* error */ + return r; + } + } + + return n; } extern OnigEncoding @@ -3799,7 +5052,7 @@ onig_number_of_capture_histories(regex_t* reg) n = 0; for (i = 0; i <= ONIG_MAX_CAPTURE_HISTORY_GROUP; i++) { - if (BIT_STATUS_AT(reg->capture_history, i) != 0) + if (MEM_STATUS_AT(reg->capture_history, i) != 0) n++; } return n; @@ -3814,3 +5067,627 @@ onig_copy_encoding(OnigEncoding to, OnigEncoding from) *to = *from; } + +/* for callout functions */ + +#ifdef USE_CALLOUT + +extern OnigCalloutFunc +onig_get_progress_callout(void) +{ + return DefaultProgressCallout; +} + +extern int +onig_set_progress_callout(OnigCalloutFunc f) +{ + DefaultProgressCallout = f; + return ONIG_NORMAL; +} + +extern OnigCalloutFunc +onig_get_retraction_callout(void) +{ + return DefaultRetractionCallout; +} + +extern int +onig_set_retraction_callout(OnigCalloutFunc f) +{ + DefaultRetractionCallout = f; + return ONIG_NORMAL; +} + +extern int +onig_get_callout_num_by_callout_args(OnigCalloutArgs* args) +{ + return args->num; +} + +extern OnigCalloutIn +onig_get_callout_in_by_callout_args(OnigCalloutArgs* args) +{ + return args->in; +} + +extern int +onig_get_name_id_by_callout_args(OnigCalloutArgs* args) +{ + return args->name_id; +} + +extern const UChar* +onig_get_contents_by_callout_args(OnigCalloutArgs* args) +{ + int num; + CalloutListEntry* e; + + num = args->num; + e = onig_reg_callout_list_at(args->regex, num); + if (IS_NULL(e)) return 0; + if (e->of == ONIG_CALLOUT_OF_CONTENTS) { + return e->u.content.start; + } + + return 0; +} + +extern const UChar* +onig_get_contents_end_by_callout_args(OnigCalloutArgs* args) +{ + int num; + CalloutListEntry* e; + + num = args->num; + e = onig_reg_callout_list_at(args->regex, num); + if (IS_NULL(e)) return 0; + if (e->of == ONIG_CALLOUT_OF_CONTENTS) { + return e->u.content.end; + } + + return 0; +} + +extern int +onig_get_args_num_by_callout_args(OnigCalloutArgs* args) +{ + int num; + CalloutListEntry* e; + + num = args->num; + e = onig_reg_callout_list_at(args->regex, num); + if (IS_NULL(e)) return ONIGERR_INVALID_ARGUMENT; + if (e->of == ONIG_CALLOUT_OF_NAME) { + return e->u.arg.num; + } + + return ONIGERR_INVALID_ARGUMENT; +} + +extern int +onig_get_passed_args_num_by_callout_args(OnigCalloutArgs* args) +{ + int num; + CalloutListEntry* e; + + num = args->num; + e = onig_reg_callout_list_at(args->regex, num); + if (IS_NULL(e)) return ONIGERR_INVALID_ARGUMENT; + if (e->of == ONIG_CALLOUT_OF_NAME) { + return e->u.arg.passed_num; + } + + return ONIGERR_INVALID_ARGUMENT; +} + +extern int +onig_get_arg_by_callout_args(OnigCalloutArgs* args, int index, + OnigType* type, OnigValue* val) +{ + int num; + CalloutListEntry* e; + + num = args->num; + e = onig_reg_callout_list_at(args->regex, num); + if (IS_NULL(e)) return ONIGERR_INVALID_ARGUMENT; + if (e->of == ONIG_CALLOUT_OF_NAME) { + if (IS_NOT_NULL(type)) *type = e->u.arg.types[index]; + if (IS_NOT_NULL(val)) *val = e->u.arg.vals[index]; + return ONIG_NORMAL; + } + + return ONIGERR_INVALID_ARGUMENT; +} + +extern const UChar* +onig_get_string_by_callout_args(OnigCalloutArgs* args) +{ + return args->string; +} + +extern const UChar* +onig_get_string_end_by_callout_args(OnigCalloutArgs* args) +{ + return args->string_end; +} + +extern const UChar* +onig_get_start_by_callout_args(OnigCalloutArgs* args) +{ + return args->start; +} + +extern const UChar* +onig_get_right_range_by_callout_args(OnigCalloutArgs* args) +{ + return args->right_range; +} + +extern const UChar* +onig_get_current_by_callout_args(OnigCalloutArgs* args) +{ + return args->current; +} + +extern OnigRegex +onig_get_regex_by_callout_args(OnigCalloutArgs* args) +{ + return args->regex; +} + +extern unsigned long +onig_get_retry_counter_by_callout_args(OnigCalloutArgs* args) +{ + return args->retry_in_match_counter; +} + + +extern int +onig_get_capture_range_in_callout(OnigCalloutArgs* a, int mem_num, int* begin, int* end) +{ + OnigRegex reg; + const UChar* str; + StackType* stk_base; + int i; + + i = mem_num; + reg = a->regex; + str = a->string; + stk_base = a->stk_base; + + if (i > 0) { + if (a->mem_end_stk[i] != INVALID_STACK_INDEX) { + if (MEM_STATUS_AT(reg->bt_mem_start, i)) + *begin = (int )(STACK_AT(a->mem_start_stk[i])->u.mem.pstr - str); + else + *begin = (int )((UChar* )((void* )a->mem_start_stk[i]) - str); + + *end = (int )((MEM_STATUS_AT(reg->bt_mem_end, i) + ? STACK_AT(a->mem_end_stk[i])->u.mem.pstr + : (UChar* )((void* )a->mem_end_stk[i])) - str); + } + else { + *begin = *end = ONIG_REGION_NOTPOS; + } + } + else if (i == 0) { +#if 0 + *begin = a->start - str; + *end = a->current - str; +#else + return ONIGERR_INVALID_ARGUMENT; +#endif + } + else + return ONIGERR_INVALID_ARGUMENT; + + return ONIG_NORMAL; +} + +extern int +onig_get_used_stack_size_in_callout(OnigCalloutArgs* a, int* used_num, int* used_bytes) +{ + int n; + + n = (int )(a->stk - a->stk_base); + + if (used_num != 0) + *used_num = n; + + if (used_bytes != 0) + *used_bytes = n * sizeof(StackType); + + return ONIG_NORMAL; +} + + +/* builtin callout functions */ + +extern int +onig_builtin_fail(OnigCalloutArgs* args ARG_UNUSED, void* user_data ARG_UNUSED) +{ + return ONIG_CALLOUT_FAIL; +} + +extern int +onig_builtin_mismatch(OnigCalloutArgs* args ARG_UNUSED, void* user_data ARG_UNUSED) +{ + return ONIG_MISMATCH; +} + +#if 0 +extern int +onig_builtin_success(OnigCalloutArgs* args ARG_UNUSED, void* user_data ARG_UNUSED) +{ + return ONIG_CALLOUT_SUCCESS; +} +#endif + +extern int +onig_builtin_error(OnigCalloutArgs* args, void* user_data ARG_UNUSED) +{ + int r; + int n; + OnigValue val; + + r = onig_get_arg_by_callout_args(args, 0, 0, &val); + if (r != ONIG_NORMAL) return r; + + n = (int )val.l; + if (n >= 0) { + n = ONIGERR_INVALID_CALLOUT_BODY; + } + + return n; +} + +extern int +onig_builtin_count(OnigCalloutArgs* args, void* user_data) +{ + (void )onig_check_callout_data_and_clear_old_values(args); + + return onig_builtin_total_count(args, user_data); +} + +extern int +onig_builtin_total_count(OnigCalloutArgs* args, void* user_data ARG_UNUSED) +{ + int r; + int slot; + OnigType type; + OnigValue val; + OnigValue aval; + OnigCodePoint count_type; + + r = onig_get_arg_by_callout_args(args, 0, &type, &aval); + if (r != ONIG_NORMAL) return r; + + count_type = aval.c; + if (count_type != '>' && count_type != 'X' && count_type != '<') + return ONIGERR_INVALID_CALLOUT_ARG; + + r = onig_get_callout_data_by_callout_args_self_dont_clear_old(args, 0, + &type, &val); + if (r < ONIG_NORMAL) + return r; + else if (r > ONIG_NORMAL) { + /* type == void: initial state */ + val.l = 0; + } + + if (args->in == ONIG_CALLOUT_IN_RETRACTION) { + slot = 2; + if (count_type == '<') + val.l++; + else if (count_type == 'X') + val.l--; + } + else { + slot = 1; + if (count_type != '<') + val.l++; + } + + r = onig_set_callout_data_by_callout_args_self(args, 0, ONIG_TYPE_LONG, &val); + if (r != ONIG_NORMAL) return r; + + /* slot 1: in progress counter, slot 2: in retraction counter */ + r = onig_get_callout_data_by_callout_args_self_dont_clear_old(args, slot, + &type, &val); + if (r < ONIG_NORMAL) + return r; + else if (r > ONIG_NORMAL) { + val.l = 0; + } + + val.l++; + r = onig_set_callout_data_by_callout_args_self(args, slot, ONIG_TYPE_LONG, &val); + if (r != ONIG_NORMAL) return r; + + return ONIG_CALLOUT_SUCCESS; +} + +extern int +onig_builtin_max(OnigCalloutArgs* args, void* user_data ARG_UNUSED) +{ + int r; + int slot; + long max_val; + OnigCodePoint count_type; + OnigType type; + OnigValue val; + OnigValue aval; + + (void )onig_check_callout_data_and_clear_old_values(args); + + slot = 0; + r = onig_get_callout_data_by_callout_args_self(args, slot, &type, &val); + if (r < ONIG_NORMAL) + return r; + else if (r > ONIG_NORMAL) { + /* type == void: initial state */ + type = ONIG_TYPE_LONG; + val.l = 0; + } + + r = onig_get_arg_by_callout_args(args, 0, &type, &aval); + if (r != ONIG_NORMAL) return r; + if (type == ONIG_TYPE_TAG) { + r = onig_get_callout_data_by_callout_args(args, aval.tag, 0, &type, &aval); + if (r < ONIG_NORMAL) return r; + else if (r > ONIG_NORMAL) + max_val = 0L; + else + max_val = aval.l; + } + else { /* LONG */ + max_val = aval.l; + } + + r = onig_get_arg_by_callout_args(args, 1, &type, &aval); + if (r != ONIG_NORMAL) return r; + + count_type = aval.c; + if (count_type != '>' && count_type != 'X' && count_type != '<') + return ONIGERR_INVALID_CALLOUT_ARG; + + if (args->in == ONIG_CALLOUT_IN_RETRACTION) { + if (count_type == '<') { + if (val.l >= max_val) return ONIG_CALLOUT_FAIL; + val.l++; + } + else if (count_type == 'X') + val.l--; + } + else { + if (count_type != '<') { + if (val.l >= max_val) return ONIG_CALLOUT_FAIL; + val.l++; + } + } + + r = onig_set_callout_data_by_callout_args_self(args, slot, ONIG_TYPE_LONG, &val); + if (r != ONIG_NORMAL) return r; + + return ONIG_CALLOUT_SUCCESS; +} + +enum OP_CMP { + OP_EQ, + OP_NE, + OP_LT, + OP_GT, + OP_LE, + OP_GE +}; + +extern int +onig_builtin_cmp(OnigCalloutArgs* args, void* user_data ARG_UNUSED) +{ + int r; + int slot; + long lv; + long rv; + OnigType type; + OnigValue val; + regex_t* reg; + enum OP_CMP op; + + reg = args->regex; + + r = onig_get_arg_by_callout_args(args, 0, &type, &val); + if (r != ONIG_NORMAL) return r; + + if (type == ONIG_TYPE_TAG) { + r = onig_get_callout_data_by_callout_args(args, val.tag, 0, &type, &val); + if (r < ONIG_NORMAL) return r; + else if (r > ONIG_NORMAL) + lv = 0L; + else + lv = val.l; + } + else { /* ONIG_TYPE_LONG */ + lv = val.l; + } + + r = onig_get_arg_by_callout_args(args, 2, &type, &val); + if (r != ONIG_NORMAL) return r; + + if (type == ONIG_TYPE_TAG) { + r = onig_get_callout_data_by_callout_args(args, val.tag, 0, &type, &val); + if (r < ONIG_NORMAL) return r; + else if (r > ONIG_NORMAL) + rv = 0L; + else + rv = val.l; + } + else { /* ONIG_TYPE_LONG */ + rv = val.l; + } + + slot = 0; + r = onig_get_callout_data_by_callout_args_self(args, slot, &type, &val); + if (r < ONIG_NORMAL) + return r; + else if (r > ONIG_NORMAL) { + /* type == void: initial state */ + OnigCodePoint c1, c2; + UChar* p; + + r = onig_get_arg_by_callout_args(args, 1, &type, &val); + if (r != ONIG_NORMAL) return r; + + p = val.s.start; + c1 = ONIGENC_MBC_TO_CODE(reg->enc, p, val.s.end); + p += ONIGENC_MBC_ENC_LEN(reg->enc, p); + if (p < val.s.end) { + c2 = ONIGENC_MBC_TO_CODE(reg->enc, p, val.s.end); + p += ONIGENC_MBC_ENC_LEN(reg->enc, p); + if (p != val.s.end) return ONIGERR_INVALID_CALLOUT_ARG; + } + else + c2 = 0; + + switch (c1) { + case '=': + if (c2 != '=') return ONIGERR_INVALID_CALLOUT_ARG; + op = OP_EQ; + break; + case '!': + if (c2 != '=') return ONIGERR_INVALID_CALLOUT_ARG; + op = OP_NE; + break; + case '<': + if (c2 == '=') op = OP_LE; + else if (c2 == 0) op = OP_LT; + else return ONIGERR_INVALID_CALLOUT_ARG; + break; + case '>': + if (c2 == '=') op = OP_GE; + else if (c2 == 0) op = OP_GT; + else return ONIGERR_INVALID_CALLOUT_ARG; + break; + default: + return ONIGERR_INVALID_CALLOUT_ARG; + break; + } + val.l = (long )op; + r = onig_set_callout_data_by_callout_args_self(args, slot, ONIG_TYPE_LONG, &val); + if (r != ONIG_NORMAL) return r; + } + else { + op = (enum OP_CMP )val.l; + } + + switch (op) { + case OP_EQ: r = (lv == rv); break; + case OP_NE: r = (lv != rv); break; + case OP_LT: r = (lv < rv); break; + case OP_GT: r = (lv > rv); break; + case OP_LE: r = (lv <= rv); break; + case OP_GE: r = (lv >= rv); break; + } + + return r == 0 ? ONIG_CALLOUT_FAIL : ONIG_CALLOUT_SUCCESS; +} + + +//#include + +static FILE* OutFp; + +/* name start with "onig_" for macros. */ +static int +onig_builtin_monitor(OnigCalloutArgs* args, void* user_data) +{ + int r; + int num; + size_t tag_len; + const UChar* start; + const UChar* right; + const UChar* current; + const UChar* string; + const UChar* strend; + const UChar* tag_start; + const UChar* tag_end; + regex_t* reg; + OnigCalloutIn in; + OnigType type; + OnigValue val; + char buf[20]; + FILE* fp; + + fp = OutFp; + + r = onig_get_arg_by_callout_args(args, 0, &type, &val); + if (r != ONIG_NORMAL) return r; + + in = onig_get_callout_in_by_callout_args(args); + if (in == ONIG_CALLOUT_IN_PROGRESS) { + if (val.c == '<') + return ONIG_CALLOUT_SUCCESS; + } + else { + if (val.c != 'X' && val.c != '<') + return ONIG_CALLOUT_SUCCESS; + } + + num = onig_get_callout_num_by_callout_args(args); + start = onig_get_start_by_callout_args(args); + right = onig_get_right_range_by_callout_args(args); + current = onig_get_current_by_callout_args(args); + string = onig_get_string_by_callout_args(args); + strend = onig_get_string_end_by_callout_args(args); + reg = onig_get_regex_by_callout_args(args); + tag_start = onig_get_callout_tag_start(reg, num); + tag_end = onig_get_callout_tag_end(reg, num); + + if (tag_start == 0) + sprintf_s(buf, sizeof(buf), "#%d", num); + else { + /* CAUTION: tag string is not terminated with NULL. */ + int i; + + tag_len = tag_end - tag_start; + if (tag_len >= sizeof(buf)) tag_len = sizeof(buf) - 1; + for (i = 0; i < tag_len; i++) buf[i] = tag_start[i]; + buf[tag_len] = '\0'; + } + + fprintf(fp, "ONIG-MONITOR: %-4s %s at: %d [%d - %d] len: %d\n", + buf, + in == ONIG_CALLOUT_IN_PROGRESS ? "=>" : "<=", + (int )(current - string), + (int )(start - string), + (int )(right - string), + (int )(strend - string)); + //fflush(fp); + + return ONIG_CALLOUT_SUCCESS; +} + +extern int +onig_setup_builtin_monitors_by_ascii_encoded_name(void* fp /* FILE* */) +{ + int id; + char* name; + OnigEncoding enc; + unsigned int ts[4]; + OnigValue opts[4]; + + if (IS_NOT_NULL(fp)) + OutFp = (FILE* )fp; + else + OutFp = stdout; + + enc = ONIG_ENCODING_ASCII; + + name = "MON"; + ts[0] = ONIG_TYPE_CHAR; + opts[0].c = '>'; + BC_B_O(name, monitor, 1, ts, 1, opts); + + return ONIG_NORMAL; +} + +#endif /* USE_CALLOUT */ diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/reggnu.c b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/reggnu.c index f9af9ca93c..fb1537eccb 100644 --- a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/reggnu.c +++ b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/reggnu.c @@ -2,11 +2,9 @@ reggnu.c - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2002-2008 K.Kosako + * Copyright (c) 2002-2018 K.Kosako * All rights reserved. * - * (C) Copyright 2015 Hewlett Packard Enterprise Development LP
- * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: @@ -30,10 +28,7 @@ */ #include "regint.h" - -#ifndef ONIGGNU_H #include "oniggnu.h" -#endif extern void re_free_registers(OnigRegion* r) @@ -56,7 +51,7 @@ re_adjust_startpos(regex_t* reg, const char* string, int size, else { p = ONIGENC_LEFT_ADJUST_CHAR_HEAD(reg->enc, (UChar* )string, s); } - return (int)(p - (UChar* )string); + return (int )(p - (UChar* )string); } return startpos; @@ -95,29 +90,6 @@ re_compile_pattern(const char* pattern, int size, regex_t* reg, char* ebuf) return r; } -#ifdef USE_RECOMPILE_API -extern int -re_recompile_pattern(const char* pattern, int size, regex_t* reg, char* ebuf) -{ - int r; - OnigErrorInfo einfo; - OnigEncoding enc; - - /* I think encoding and options should be arguments of this function. - But this is adapted to present re.c. (2002/11/29) - */ - enc = OnigEncDefaultCharEncoding; - - r = onig_recompile(reg, (UChar* )pattern, (UChar* )(pattern + size), - reg->options, enc, OnigDefaultSyntax, &einfo); - if (r != ONIG_NORMAL) { - if (IS_NOT_NULL(ebuf)) - (void )onig_error_code_to_str((UChar* )ebuf, r, &einfo); - } - return r; -} -#endif - extern void re_free_pattern(regex_t* reg) { @@ -151,9 +123,9 @@ re_mbcinit(int mb_code) case RE_MBCTYPE_ASCII: enc = ONIG_ENCODING_ASCII; break; - default: - return; } + onig_initialize(&enc, 1); + onigenc_set_default_encoding(enc); } diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regint.h b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regint.h index d5b30898a3..acfd1792ef 100644 --- a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regint.h +++ b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regint.h @@ -4,7 +4,7 @@ regint.h - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2002-2013 K.Kosako + * Copyright (c) 2002-2018 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -30,7 +30,7 @@ */ /* for debug */ -/* #define ONIG_DEBUG_PARSE_TREE */ +/* #define ONIG_DEBUG_PARSE */ /* #define ONIG_DEBUG_COMPILE */ /* #define ONIG_DEBUG_SEARCH */ /* #define ONIG_DEBUG_MATCH */ @@ -39,7 +39,7 @@ /* for byte-code statistical data. */ /* #define ONIG_DEBUG_STATISTICS */ -#if defined(ONIG_DEBUG_PARSE_TREE) || defined(ONIG_DEBUG_MATCH) || \ +#if defined(ONIG_DEBUG_PARSE) || defined(ONIG_DEBUG_MATCH) || \ defined(ONIG_DEBUG_SEARCH) || defined(ONIG_DEBUG_COMPILE) || \ defined(ONIG_DEBUG_STATISTICS) #ifndef ONIG_DEBUG @@ -56,34 +56,49 @@ /* config */ /* spec. config */ -#define USE_NAMED_GROUP -#define USE_SUBEXP_CALL +#define USE_CALL +#define USE_CALLOUT #define USE_BACKREF_WITH_LEVEL /* \k, \k */ -#define USE_MONOMANIAC_CHECK_CAPTURES_IN_ENDLESS_REPEAT /* /(?:()|())*\2/ */ +#define USE_INSISTENT_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_RECOMPILE_API */ -/* !!! moved to regenc.h. */ /* #define USE_CRNL_AS_LINE_TERMINATOR */ + +#define USE_RETRY_LIMIT_IN_MATCH /* internal config */ -#define USE_PARSE_TREE_NODE_RECYCLE #define USE_OP_PUSH_OR_JUMP_EXACT -#define USE_QTFR_PEEK_NEXT +#define USE_QUANT_PEEK_NEXT #define USE_ST_LIBRARY -#define USE_SHARED_CCLASS_TABLE -#define INIT_MATCH_STACK_SIZE 160 -#define DEFAULT_MATCH_STACK_LIMIT_SIZE 0 /* unlimited */ +#include "regenc.h" -#if defined(__GNUC__) -# define ARG_UNUSED __attribute__ ((unused)) -#else -# define ARG_UNUSED +#ifdef __cplusplus +# ifndef HAVE_STDARG_PROTOTYPES +# define HAVE_STDARG_PROTOTYPES 1 +# endif +#endif + +/* escape Mac OS X/Xcode 2.4/gcc 4.0.1 problem */ +#if defined(__APPLE__) && defined(__GNUC__) && __GNUC__ >= 4 +# ifndef HAVE_STDARG_PROTOTYPES +# define HAVE_STDARG_PROTOTYPES 1 +# endif #endif +#ifdef HAVE_STDARG_H +# ifndef HAVE_STDARG_PROTOTYPES +# define HAVE_STDARG_PROTOTYPES 1 +# endif +#endif + + +#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 */ -//#include "config.h" #ifdef ONIG_ESCAPE_UCHAR_COLLISION #undef ONIG_ESCAPE_UCHAR_COLLISION #endif @@ -93,21 +108,12 @@ #define USE_VARIABLE_META_CHARS #define USE_POSIX_API_REGION_OPTION #define USE_FIND_LONGEST_SEARCH_ALL_OF_RANGE -/* #define USE_COMBINATION_EXPLOSION_CHECK */ /* (X*)* */ - -/* #define USE_MULTI_THREAD_SYSTEM */ -#define THREAD_SYSTEM_INIT /* depend on thread system */ -#define THREAD_SYSTEM_END /* depend on thread system */ -#define THREAD_ATOMIC_START /* depend on thread system */ -#define THREAD_ATOMIC_END /* depend on thread system */ -#define THREAD_PASS /* depend on thread system */ + #define xmalloc malloc #define xrealloc realloc #define xcalloc calloc #define xfree free -#define CHECK_INTERRUPT_IN_MATCH_AT - #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 @@ -128,49 +134,38 @@ /* */ #define onig_st_is_member st_is_member -#define STATE_CHECK_STRING_THRESHOLD_LEN 7 -#define STATE_CHECK_BUFF_MAX_SIZE 0x4000 - -#define THREAD_PASS_LIMIT_COUNT 8 //#define xmemset memset //#define xmemcpy memcpy //#define xmemmove memmove #if defined(_WIN32) && !defined(__GNUC__) #define xalloca _alloca -#define xvsnprintf _vsnprintf +#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 -#if defined(USE_RECOMPILE_API) && defined(USE_MULTI_THREAD_SYSTEM) -#define ONIG_STATE_INC(reg) (reg)->state++ -#define ONIG_STATE_DEC(reg) (reg)->state-- +// #include -#define ONIG_STATE_INC_THREAD(reg) do {\ - THREAD_ATOMIC_START;\ - (reg)->state++;\ - THREAD_ATOMIC_END;\ -} while(0) -#define ONIG_STATE_DEC_THREAD(reg) do {\ - THREAD_ATOMIC_START;\ - (reg)->state--;\ - THREAD_ATOMIC_END;\ -} while(0) -#else -#define ONIG_STATE_INC(reg) /* Nothing */ -#define ONIG_STATE_DEC(reg) /* Nothing */ -#define ONIG_STATE_INC_THREAD(reg) /* Nothing */ -#define ONIG_STATE_DEC_THREAD(reg) /* Nothing */ -#endif /* USE_RECOMPILE_API && USE_MULTI_THREAD_SYSTEM */ +#ifdef HAVE_LIMITS_H +#include +#endif #if 0 #ifdef HAVE_STDLIB_H #include #endif +#ifdef HAVE_STDINT_H +#include +#endif + #if defined(HAVE_ALLOCA_H) && !defined(__GNUC__) #include #endif @@ -188,6 +183,10 @@ #endif #endif +#ifdef HAVE_INTTYPES_H +#include +#endif + #ifdef __BORLANDC__ #include #endif @@ -197,7 +196,19 @@ #endif #endif -#include "regenc.h" +#ifdef _WIN32 +#if defined(_MSC_VER) && (_MSC_VER < 1300) +typedef int intptr_t; +typedef unsigned int uintptr_t; +#endif +#endif + +typedef INTN intptr_t; +typedef UINTN uintptr_t; + +#ifndef offsetof +#define offsetof OFFSET_OF +#endif #ifdef MIN #undef MIN @@ -205,6 +216,7 @@ #ifdef MAX #undef MAX #endif + #define MIN(a,b) (((a)>(b))?(b):(a)) #define MAX(a,b) (((a)<(b))?(b):(a)) @@ -214,6 +226,8 @@ #define CHECK_NULL_RETURN_MEMERR(p) if (IS_NULL(p)) return ONIGERR_MEMORY #define NULL_UCHARP ((UChar* )0) +#define INFINITE_LEN ONIG_INFINITE_DISTANCE + #ifdef PLATFORM_UNALIGNED_WORD_ACCESS #define PLATFORM_GET_INC(val,p,type) do{\ @@ -229,62 +243,167 @@ } while(0) /* sizeof(OnigCodePoint) */ -#define WORD_ALIGNMENT_SIZE SIZEOF_LONG +#ifdef SIZEOF_SIZE_T +# define WORD_ALIGNMENT_SIZE SIZEOF_SIZE_T +#else +# define WORD_ALIGNMENT_SIZE SIZEOF_LONG +#endif #define GET_ALIGNMENT_PAD_SIZE(addr,pad_size) do {\ - (pad_size) = WORD_ALIGNMENT_SIZE \ - - ((unsigned int )(UINTN)(addr) % WORD_ALIGNMENT_SIZE);\ + (pad_size) = WORD_ALIGNMENT_SIZE - ((uintptr_t )(addr) % WORD_ALIGNMENT_SIZE);\ if ((pad_size) == WORD_ALIGNMENT_SIZE) (pad_size) = 0;\ } while (0) #define ALIGNMENT_RIGHT(addr) do {\ (addr) += (WORD_ALIGNMENT_SIZE - 1);\ - (addr) -= ((unsigned int )(UINTN)(addr) % WORD_ALIGNMENT_SIZE);\ + (addr) -= ((uintptr_t )(addr) % WORD_ALIGNMENT_SIZE);\ } while (0) #endif /* PLATFORM_UNALIGNED_WORD_ACCESS */ + +#ifdef USE_CALLOUT + +typedef struct { + int flag; + OnigCalloutOf of; + int in; + int name_id; + const UChar* tag_start; + const UChar* tag_end; + OnigCalloutType type; + OnigCalloutFunc start_func; + OnigCalloutFunc end_func; + union { + struct { + const UChar* start; + const UChar* end; + } content; + struct { + int num; + int passed_num; + OnigType types[ONIG_CALLOUT_MAX_ARGS_NUM]; + OnigValue vals[ONIG_CALLOUT_MAX_ARGS_NUM]; + } arg; + } u; +} CalloutListEntry; + +#endif + +typedef struct { + const UChar* pattern; + const UChar* pattern_end; +#ifdef USE_CALLOUT + void* tag_table; + int callout_num; + int callout_list_alloc; + CalloutListEntry* callout_list; /* index: callout num */ +#endif +} RegexExt; + +#define REG_EXTP(reg) ((RegexExt* )((reg)->chain)) +#define REG_EXTPL(reg) ((reg)->chain) + +struct re_pattern_buffer { + /* common members of BBuf(bytes-buffer) */ + unsigned char* p; /* compiled pattern */ + unsigned int used; /* used space for p */ + unsigned int alloc; /* allocated space for p */ + + int num_mem; /* used memory(...) num counted from 1 */ + int num_repeat; /* OP_REPEAT/OP_REPEAT_NG id-counter */ + int num_null_check; /* OP_EMPTY_CHECK_START/END id counter */ + int num_comb_exp_check; /* no longer used (combination explosion check) */ + int num_call; /* number of subexp call */ + unsigned int capture_history; /* (?@...) flag (1-31) */ + unsigned int bt_mem_start; /* need backtrack flag */ + unsigned int bt_mem_end; /* need backtrack flag */ + int stack_pop_level; + int repeat_range_alloc; + OnigRepeatRange* repeat_range; + + OnigEncoding enc; + OnigOptionType options; + OnigSyntaxType* syntax; + OnigCaseFoldType case_fold_flag; + void* name_table; + + /* optimization info (string search, char-map and anchors) */ + int optimize; /* optimize flag */ + int threshold_len; /* search str-length for apply optimize */ + int anchor; /* BEGIN_BUF, BEGIN_POS, (SEMI_)END_BUF */ + OnigLen anchor_dmin; /* (SEMI_)END_BUF anchor distance */ + OnigLen anchor_dmax; /* (SEMI_)END_BUF anchor distance */ + int sub_anchor; /* start-anchor for exact or map */ + unsigned char *exact; + unsigned char *exact_end; + unsigned char map[ONIG_CHAR_TABLE_SIZE]; /* used as BM skip or char-map */ + int *int_map; /* BM skip for exact_len > 255 */ + int *int_map_backward; /* BM skip for backward search */ + OnigLen dmin; /* min-distance of exact or map */ + OnigLen dmax; /* max-distance of exact or map */ + + /* regex_t link chain */ + struct re_pattern_buffer* chain; /* escape compile-conflict */ +}; + + /* stack pop level */ -#define STACK_POP_LEVEL_FREE 0 -#define STACK_POP_LEVEL_MEM_START 1 -#define STACK_POP_LEVEL_ALL 2 +enum StackPopLevel { + STACK_POP_LEVEL_FREE = 0, + STACK_POP_LEVEL_MEM_START = 1, + STACK_POP_LEVEL_ALL = 2 +}; /* optimize flags */ -#define ONIG_OPTIMIZE_NONE 0 -#define ONIG_OPTIMIZE_EXACT 1 /* Slow Search */ -#define ONIG_OPTIMIZE_EXACT_BM 2 /* Boyer Moore Search */ -#define ONIG_OPTIMIZE_EXACT_BM_NOT_REV 3 /* BM (but not simple match) */ -#define ONIG_OPTIMIZE_EXACT_IC 4 /* Slow Search (ignore case) */ -#define ONIG_OPTIMIZE_MAP 5 /* char map */ +enum OptimizeType { + OPTIMIZE_NONE = 0, + OPTIMIZE_EXACT = 1, /* Slow Search */ + OPTIMIZE_EXACT_BM = 2, /* Boyer Moore Search */ + OPTIMIZE_EXACT_BM_NO_REV = 3, /* BM (but not simple match) */ + OPTIMIZE_EXACT_IC = 4, /* Slow Search (ignore case) */ + OPTIMIZE_MAP = 5 /* char map */ +}; /* bit status */ -typedef unsigned int BitStatusType; - -#define BIT_STATUS_BITS_NUM (sizeof(BitStatusType) * 8) -#define BIT_STATUS_CLEAR(stats) (stats) = 0 -#define BIT_STATUS_ON_ALL(stats) (stats) = ~((BitStatusType )0) -#define BIT_STATUS_AT(stats,n) \ - ((n) < (int )BIT_STATUS_BITS_NUM ? ((stats) & (1 << n)) : ((stats) & 1)) - -#define BIT_STATUS_ON_AT(stats,n) do {\ - if ((n) < (int )BIT_STATUS_BITS_NUM) \ - (stats) |= (1 << (n));\ +typedef unsigned int MemStatusType; + +#define MEM_STATUS_BITS_NUM (sizeof(MemStatusType) * 8) +#define MEM_STATUS_CLEAR(stats) (stats) = 0 +#define MEM_STATUS_ON_ALL(stats) (stats) = ~((MemStatusType )0) +#define MEM_STATUS_AT(stats,n) \ + ((n) < (int )MEM_STATUS_BITS_NUM ? ((stats) & ((MemStatusType )1 << n)) : ((stats) & 1)) +#define MEM_STATUS_AT0(stats,n) \ + ((n) > 0 && (n) < (int )MEM_STATUS_BITS_NUM ? ((stats) & ((MemStatusType )1 << n)) : ((stats) & 1)) + +#define MEM_STATUS_ON(stats,n) do {\ + if ((n) < (int )MEM_STATUS_BITS_NUM) {\ + if ((n) != 0)\ + (stats) |= ((MemStatusType )1 << (n));\ + }\ else\ (stats) |= 1;\ } while (0) -#define BIT_STATUS_ON_AT_SIMPLE(stats,n) do {\ - if ((n) < (int )BIT_STATUS_BITS_NUM)\ - (stats) |= (1 << (n));\ +#define MEM_STATUS_ON_SIMPLE(stats,n) do {\ + if ((n) < (int )MEM_STATUS_BITS_NUM)\ + (stats) |= ((MemStatusType )1 << (n));\ } while (0) #define INT_MAX_LIMIT ((1UL << (SIZEOF_INT * 8 - 1)) - 1) +#define IS_CODE_WORD_ASCII(enc,code) \ + (ONIGENC_IS_CODE_ASCII(code) && ONIGENC_IS_CODE_WORD(enc,code)) +#define IS_CODE_DIGIT_ASCII(enc, code) \ + (ONIGENC_IS_CODE_ASCII(code) && ONIGENC_IS_CODE_DIGIT(enc,code)) +#define IS_CODE_XDIGIT_ASCII(enc, code) \ + (ONIGENC_IS_CODE_ASCII(code) && ONIGENC_IS_CODE_XDIGIT(enc,code)) + #define DIGITVAL(code) ((code) - '0') #define ODIGITVAL(code) DIGITVAL(code) #define XDIGITVAL(enc,code) \ - (ONIGENC_IS_CODE_DIGIT(enc,code) ? DIGITVAL(code) \ + (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) @@ -299,12 +418,20 @@ typedef unsigned int BitStatusType; #define IS_NOTEOL(option) ((option) & ONIG_OPTION_NOTEOL) #define IS_POSIX_REGION(option) ((option) & ONIG_OPTION_POSIX_REGION) -/* OP_SET_OPTION is required for these options. -#define IS_DYNAMIC_OPTION(option) \ - (((option) & (ONIG_OPTION_MULTILINE | ONIG_OPTION_IGNORECASE)) != 0) -*/ -/* ignore-case and multibyte status are included in compiled code. */ -#define IS_DYNAMIC_OPTION(option) 0 +#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 DISABLE_CASE_FOLD_MULTI_CHAR(case_fold_flag) \ ((case_fold_flag) & ~INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) @@ -329,8 +456,8 @@ typedef Bits* BitSetRef; #define SIZE_BITSET sizeof(BitSet) #define BITSET_CLEAR(bs) do {\ - int id;\ - for (id = 0; id < (int )BITSET_SIZE; id++) { (bs)[id] = 0; } \ + int i;\ + for (i = 0; i < (int )BITSET_SIZE; i++) { (bs)[i] = 0; } \ } while (0) #define BS_ROOM(bs,pos) (bs)[pos / BITS_IN_ROOM] @@ -348,22 +475,22 @@ typedef struct _BBuf { unsigned int alloc; } BBuf; -#define BBUF_INIT(buf,size) onig_bbuf_init((BBuf* )(buf), (size)) +#define BB_INIT(buf,size) onig_bbuf_init((BBuf* )(buf), (size)) -#define BBUF_SIZE_INC(buf,inc) do{\ +#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 BBUF_EXPAND(buf,low) do{\ +#define BB_EXPAND(buf,low) do{\ unsigned int OldSize_ = (buf)->alloc * sizeof((buf)->p[0]);\ do { (buf)->alloc *= 2; } while ((buf)->alloc < (unsigned int )low);\ (buf)->p = (UChar* )xrealloc((buf)->p, (buf)->alloc, OldSize_);\ if (IS_NULL((buf)->p)) return(ONIGERR_MEMORY);\ } while (0) -#define BBUF_ENSURE_SIZE(buf,size) do{\ +#define BB_ENSURE_SIZE(buf,size) do{\ unsigned int new_alloc = (buf)->alloc;\ while (new_alloc < (unsigned int )(size)) { new_alloc *= 2; }\ if ((buf)->alloc != new_alloc) {\ @@ -373,74 +500,83 @@ typedef struct _BBuf { }\ } while (0) -#define BBUF_WRITE(buf,pos,bytes,n) do{\ +#define BB_WRITE(buf,pos,bytes,n) do{\ int used = (pos) + (n);\ - if ((buf)->alloc < (unsigned int )used) BBUF_EXPAND((buf),used);\ + if ((buf)->alloc < (unsigned int )used) BB_EXPAND((buf),used);\ xmemcpy((buf)->p + (pos), (bytes), (n));\ if ((buf)->used < (unsigned int )used) (buf)->used = used;\ } while (0) -#define BBUF_WRITE1(buf,pos,byte) do{\ +#define BB_WRITE1(buf,pos,byte) do{\ int used = (pos) + 1;\ - if ((buf)->alloc < (unsigned int )used) BBUF_EXPAND((buf),used);\ + if ((buf)->alloc < (unsigned int )used) BB_EXPAND((buf),used);\ (buf)->p[(pos)] = (byte);\ if ((buf)->used < (unsigned int )used) (buf)->used = used;\ } while (0) -#define BBUF_ADD(buf,bytes,n) BBUF_WRITE((buf),(buf)->used,(bytes),(n)) -#define BBUF_ADD1(buf,byte) BBUF_WRITE1((buf),(buf)->used,(byte)) -#define BBUF_GET_ADD_ADDRESS(buf) ((buf)->p + (buf)->used) -#define BBUF_GET_OFFSET_POS(buf) ((buf)->used) +#define BB_ADD(buf,bytes,n) BB_WRITE((buf),(buf)->used,(bytes),(n)) +#define BB_ADD1(buf,byte) BB_WRITE1((buf),(buf)->used,(byte)) +#define BB_GET_ADD_ADDRESS(buf) ((buf)->p + (buf)->used) +#define BB_GET_OFFSET_POS(buf) ((buf)->used) /* from < to */ -#define BBUF_MOVE_RIGHT(buf,from,to,n) do {\ - if ((unsigned int )((to)+(n)) > (buf)->alloc) BBUF_EXPAND((buf),(to) + (n));\ +#define BB_MOVE_RIGHT(buf,from,to,n) do {\ + if ((unsigned int )((to)+(n)) > (buf)->alloc) BB_EXPAND((buf),(to) + (n));\ xmemmove((buf)->p + (to), (buf)->p + (from), (n));\ if ((unsigned int )((to)+(n)) > (buf)->used) (buf)->used = (to) + (n);\ } while (0) /* from > to */ -#define BBUF_MOVE_LEFT(buf,from,to,n) do {\ +#define BB_MOVE_LEFT(buf,from,to,n) do {\ xmemmove((buf)->p + (to), (buf)->p + (from), (n));\ } while (0) /* from > to */ -#define BBUF_MOVE_LEFT_REDUCE(buf,from,to) do {\ +#define BB_MOVE_LEFT_REDUCE(buf,from,to) do {\ xmemmove((buf)->p + (to), (buf)->p + (from), (buf)->used - (from));\ (buf)->used -= (from - to);\ } while (0) -#define BBUF_INSERT(buf,pos,bytes,n) do {\ +#define BB_INSERT(buf,pos,bytes,n) do {\ if (pos >= (buf)->used) {\ - BBUF_WRITE(buf,pos,bytes,n);\ + BB_WRITE(buf,pos,bytes,n);\ }\ else {\ - BBUF_MOVE_RIGHT((buf),(pos),(pos) + (n),((buf)->used - (pos)));\ + BB_MOVE_RIGHT((buf),(pos),(pos) + (n),((buf)->used - (pos)));\ xmemcpy((buf)->p + (pos), (bytes), (n));\ }\ } while (0) -#define BBUF_GET_BYTE(buf, pos) (buf)->p[(pos)] - - -#define ANCHOR_BEGIN_BUF (1<<0) -#define ANCHOR_BEGIN_LINE (1<<1) -#define ANCHOR_BEGIN_POSITION (1<<2) -#define ANCHOR_END_BUF (1<<3) -#define ANCHOR_SEMI_END_BUF (1<<4) -#define ANCHOR_END_LINE (1<<5) - -#define ANCHOR_WORD_BOUND (1<<6) -#define ANCHOR_NOT_WORD_BOUND (1<<7) -#define ANCHOR_WORD_BEGIN (1<<8) -#define ANCHOR_WORD_END (1<<9) -#define ANCHOR_PREC_READ (1<<10) -#define ANCHOR_PREC_READ_NOT (1<<11) -#define ANCHOR_LOOK_BEHIND (1<<12) -#define ANCHOR_LOOK_BEHIND_NOT (1<<13) - -#define ANCHOR_ANYCHAR_STAR (1<<14) /* ".*" optimize info */ -#define ANCHOR_ANYCHAR_STAR_ML (1<<15) /* ".*" optimize info (multi-line) */ +#define BB_GET_BYTE(buf, pos) (buf)->p[(pos)] + + +/* has body */ +#define ANCHOR_PREC_READ (1<<0) +#define ANCHOR_PREC_READ_NOT (1<<1) +#define ANCHOR_LOOK_BEHIND (1<<2) +#define ANCHOR_LOOK_BEHIND_NOT (1<<3) +/* no body */ +#define ANCHOR_BEGIN_BUF (1<<4) +#define ANCHOR_BEGIN_LINE (1<<5) +#define ANCHOR_BEGIN_POSITION (1<<6) +#define ANCHOR_END_BUF (1<<7) +#define ANCHOR_SEMI_END_BUF (1<<8) +#define ANCHOR_END_LINE (1<<9) +#define ANCHOR_WORD_BOUNDARY (1<<10) +#define ANCHOR_NO_WORD_BOUNDARY (1<<11) +#define ANCHOR_WORD_BEGIN (1<<12) +#define ANCHOR_WORD_END (1<<13) +#define ANCHOR_ANYCHAR_INF (1<<14) +#define ANCHOR_ANYCHAR_INF_ML (1<<15) +#define ANCHOR_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY (1<<16) +#define ANCHOR_NO_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY (1<<17) + + +#define ANCHOR_HAS_BODY(a) ((a)->type < ANCHOR_BEGIN_BUF) + +#define IS_WORD_ANCHOR_TYPE(type) \ + ((type) == ANCHOR_WORD_BOUNDARY || (type) == ANCHOR_NO_WORD_BOUNDARY || \ + (type) == ANCHOR_WORD_BEGIN || (type) == ANCHOR_WORD_END) /* operation code */ enum OpCode { @@ -469,7 +605,9 @@ enum OpCode { OP_CCLASS_NOT, OP_CCLASS_MB_NOT, OP_CCLASS_MIX_NOT, +#ifdef USE_OP_CCLASS_NODE OP_CCLASS_NODE, /* pointer to CClassNode node */ +#endif OP_ANYCHAR, /* "." */ OP_ANYCHAR_ML, /* "." multi-line */ @@ -479,12 +617,17 @@ enum OpCode { OP_ANYCHAR_ML_STAR_PEEK_NEXT, OP_WORD, - OP_NOT_WORD, - OP_WORD_BOUND, - OP_NOT_WORD_BOUND, + OP_WORD_ASCII, + OP_NO_WORD, + OP_NO_WORD_ASCII, + OP_WORD_BOUNDARY, + OP_NO_WORD_BOUNDARY, OP_WORD_BEGIN, OP_WORD_END, + OP_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY, + OP_NO_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY, + OP_BEGIN_BUF, OP_END_BUF, OP_BEGIN_LINE, @@ -494,11 +637,13 @@ enum OpCode { OP_BACKREF1, OP_BACKREF2, - OP_BACKREFN, - OP_BACKREFN_IC, + OP_BACKREF_N, + OP_BACKREF_N_IC, OP_BACKREF_MULTI, OP_BACKREF_MULTI_IC, - OP_BACKREF_WITH_LEVEL, /* \k, \k */ + OP_BACKREF_WITH_LEVEL, /* \k, \k */ + OP_BACKREF_CHECK, /* (?(n)), (?('name')) */ + OP_BACKREF_CHECK_WITH_LEVEL, /* (?(n-level)), (?('name-level')) */ OP_MEMORY_START, OP_MEMORY_START_PUSH, /* push back-tracker to stack */ @@ -510,7 +655,8 @@ enum OpCode { OP_FAIL, /* pop stack and move */ OP_JUMP, OP_PUSH, - OP_POP, + OP_PUSH_SUPER, + OP_POP_OUT, OP_PUSH_OR_JUMP_EXACT1, /* if match exact then push, else jump. */ OP_PUSH_IF_PEEK_NEXT, /* if match exact then push, else none. */ OP_REPEAT, /* {n,m} */ @@ -519,54 +665,67 @@ enum OpCode { OP_REPEAT_INC_NG, /* non greedy */ OP_REPEAT_INC_SG, /* search and get in stack */ OP_REPEAT_INC_NG_SG, /* search and get in stack (non greedy) */ - OP_NULL_CHECK_START, /* null loop checker start */ - OP_NULL_CHECK_END, /* null loop checker end */ - OP_NULL_CHECK_END_MEMST, /* null loop checker end (with capture status) */ - OP_NULL_CHECK_END_MEMST_PUSH, /* with capture status and push check-end */ - - OP_PUSH_POS, /* (?=...) start */ - OP_POP_POS, /* (?=...) end */ - OP_PUSH_POS_NOT, /* (?!...) start */ - OP_FAIL_POS, /* (?!...) end */ - OP_PUSH_STOP_BT, /* (?>...) start */ - OP_POP_STOP_BT, /* (?>...) end */ - OP_LOOK_BEHIND, /* (?<=...) start (no needs end opcode) */ - OP_PUSH_LOOK_BEHIND_NOT, /* (? */ + OP_EMPTY_CHECK_START, /* null loop checker start */ + OP_EMPTY_CHECK_END, /* null loop checker end */ + OP_EMPTY_CHECK_END_MEMST, /* null loop checker end (with capture status) */ + OP_EMPTY_CHECK_END_MEMST_PUSH, /* with capture status and push check-end */ + + 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, /* (? */ OP_RETURN, + OP_PUSH_SAVE_VAL, + OP_UPDATE_VAR, +#ifdef USE_CALLOUT + OP_CALLOUT_CONTENTS, /* (?{...}) (?{{...}}) */ + OP_CALLOUT_NAME, /* (*name) (*name[tag](args...)) */ +#endif +}; - OP_STATE_CHECK_PUSH, /* combination explosion check and push */ - OP_STATE_CHECK_PUSH_OR_JUMP, /* check ok -> push, else jump */ - OP_STATE_CHECK, /* check only */ - OP_STATE_CHECK_ANYCHAR_STAR, - OP_STATE_CHECK_ANYCHAR_ML_STAR, +enum SaveType { + SAVE_KEEP = 0, /* SAVE S */ + SAVE_S = 1, + SAVE_RIGHT_RANGE = 2, +}; - /* no need: IS_DYNAMIC_OPTION() == 0 */ - OP_SET_OPTION_PUSH, /* set option and push recover option */ - OP_SET_OPTION /* set option */ +enum UpdateVarType { + UPDATE_VAR_KEEP_FROM_STACK_LAST = 0, + 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, }; typedef int RelAddrType; typedef int AbsAddrType; typedef int LengthType; typedef int RepeatNumType; -typedef short int MemNumType; -typedef short int StateCheckNumType; +typedef int MemNumType; typedef void* PointerType; +typedef int SaveType; +typedef int UpdateVarType; +typedef int ModeType; #define SIZE_OPCODE 1 #define SIZE_RELADDR sizeof(RelAddrType) #define SIZE_ABSADDR sizeof(AbsAddrType) #define SIZE_LENGTH sizeof(LengthType) #define SIZE_MEMNUM sizeof(MemNumType) -#define SIZE_STATE_CHECK_NUM sizeof(StateCheckNumType) #define SIZE_REPEATNUM sizeof(RepeatNumType) #define SIZE_OPTION sizeof(OnigOptionType) #define SIZE_CODE_POINT sizeof(OnigCodePoint) #define SIZE_POINTER sizeof(PointerType) - +#define SIZE_SAVE_TYPE sizeof(SaveType) +#define SIZE_UPDATE_VAR_TYPE sizeof(UpdateVarType) +#define SIZE_MODE sizeof(ModeType) #define GET_RELADDR_INC(addr,p) PLATFORM_GET_INC(addr, p, RelAddrType) #define GET_ABSADDR_INC(addr,p) PLATFORM_GET_INC(addr, p, AbsAddrType) @@ -575,7 +734,9 @@ typedef void* PointerType; #define GET_REPEATNUM_INC(num,p) PLATFORM_GET_INC(num, p, RepeatNumType) #define GET_OPTION_INC(option,p) PLATFORM_GET_INC(option, p, OnigOptionType) #define GET_POINTER_INC(ptr,p) PLATFORM_GET_INC(ptr, p, PointerType) -#define GET_STATE_CHECK_NUM_INC(num,p) PLATFORM_GET_INC(num, p, StateCheckNumType) +#define GET_SAVE_TYPE_INC(type,p) PLATFORM_GET_INC(type, p, SaveType) +#define GET_UPDATE_VAR_TYPE_INC(type,p) PLATFORM_GET_INC(type, p, UpdateVarType) +#define GET_MODE_INC(mode,p) PLATFORM_GET_INC(mode, p, ModeType) /* code point's address must be aligned address. */ #define GET_CODE_POINT(code,p) code = *((OnigCodePoint* )(p)) @@ -590,17 +751,17 @@ typedef void* PointerType; #define SIZE_OP_ANYCHAR_STAR_PEEK_NEXT (SIZE_OPCODE + 1) #define SIZE_OP_JUMP (SIZE_OPCODE + SIZE_RELADDR) #define SIZE_OP_PUSH (SIZE_OPCODE + SIZE_RELADDR) -#define SIZE_OP_POP SIZE_OPCODE +#define SIZE_OP_PUSH_SUPER (SIZE_OPCODE + SIZE_RELADDR) +#define SIZE_OP_POP_OUT SIZE_OPCODE #define SIZE_OP_PUSH_OR_JUMP_EXACT1 (SIZE_OPCODE + SIZE_RELADDR + 1) #define SIZE_OP_PUSH_IF_PEEK_NEXT (SIZE_OPCODE + SIZE_RELADDR + 1) #define SIZE_OP_REPEAT_INC (SIZE_OPCODE + SIZE_MEMNUM) #define SIZE_OP_REPEAT_INC_NG (SIZE_OPCODE + SIZE_MEMNUM) -#define SIZE_OP_PUSH_POS SIZE_OPCODE -#define SIZE_OP_PUSH_POS_NOT (SIZE_OPCODE + SIZE_RELADDR) -#define SIZE_OP_POP_POS SIZE_OPCODE -#define SIZE_OP_FAIL_POS SIZE_OPCODE -#define SIZE_OP_SET_OPTION (SIZE_OPCODE + SIZE_OPTION) -#define SIZE_OP_SET_OPTION_PUSH (SIZE_OPCODE + SIZE_OPTION) +#define SIZE_OP_WORD_BOUNDARY (SIZE_OPCODE + SIZE_MODE) +#define SIZE_OP_PREC_READ_START SIZE_OPCODE +#define SIZE_OP_PREC_READ_NOT_START (SIZE_OPCODE + SIZE_RELADDR) +#define SIZE_OP_PREC_READ_END SIZE_OPCODE +#define SIZE_OP_PREC_READ_NOT_END SIZE_OPCODE #define SIZE_OP_FAIL SIZE_OPCODE #define SIZE_OP_MEMORY_START (SIZE_OPCODE + SIZE_MEMNUM) #define SIZE_OP_MEMORY_START_PUSH (SIZE_OPCODE + SIZE_MEMNUM) @@ -608,21 +769,21 @@ typedef void* PointerType; #define SIZE_OP_MEMORY_END_PUSH_REC (SIZE_OPCODE + SIZE_MEMNUM) #define SIZE_OP_MEMORY_END (SIZE_OPCODE + SIZE_MEMNUM) #define SIZE_OP_MEMORY_END_REC (SIZE_OPCODE + SIZE_MEMNUM) -#define SIZE_OP_PUSH_STOP_BT SIZE_OPCODE -#define SIZE_OP_POP_STOP_BT SIZE_OPCODE -#define SIZE_OP_NULL_CHECK_START (SIZE_OPCODE + SIZE_MEMNUM) -#define SIZE_OP_NULL_CHECK_END (SIZE_OPCODE + SIZE_MEMNUM) +#define SIZE_OP_ATOMIC_START SIZE_OPCODE +#define SIZE_OP_ATOMIC_END SIZE_OPCODE +#define SIZE_OP_EMPTY_CHECK_START (SIZE_OPCODE + SIZE_MEMNUM) +#define SIZE_OP_EMPTY_CHECK_END (SIZE_OPCODE + SIZE_MEMNUM) #define SIZE_OP_LOOK_BEHIND (SIZE_OPCODE + SIZE_LENGTH) -#define SIZE_OP_PUSH_LOOK_BEHIND_NOT (SIZE_OPCODE + SIZE_RELADDR + SIZE_LENGTH) -#define SIZE_OP_FAIL_LOOK_BEHIND_NOT SIZE_OPCODE +#define SIZE_OP_LOOK_BEHIND_NOT_START (SIZE_OPCODE + SIZE_RELADDR + SIZE_LENGTH) +#define SIZE_OP_LOOK_BEHIND_NOT_END SIZE_OPCODE #define SIZE_OP_CALL (SIZE_OPCODE + SIZE_ABSADDR) #define SIZE_OP_RETURN SIZE_OPCODE +#define SIZE_OP_PUSH_SAVE_VAL (SIZE_OPCODE + SIZE_SAVE_TYPE + SIZE_MEMNUM) +#define SIZE_OP_UPDATE_VAR (SIZE_OPCODE + SIZE_UPDATE_VAR_TYPE + SIZE_MEMNUM) -#ifdef USE_COMBINATION_EXPLOSION_CHECK -#define SIZE_OP_STATE_CHECK (SIZE_OPCODE + SIZE_STATE_CHECK_NUM) -#define SIZE_OP_STATE_CHECK_PUSH (SIZE_OPCODE + SIZE_STATE_CHECK_NUM + SIZE_RELADDR) -#define SIZE_OP_STATE_CHECK_PUSH_OR_JUMP (SIZE_OPCODE + SIZE_STATE_CHECK_NUM + SIZE_RELADDR) -#define SIZE_OP_STATE_CHECK_ANYCHAR_STAR (SIZE_OPCODE + SIZE_STATE_CHECK_NUM) +#ifdef USE_CALLOUT +#define SIZE_OP_CALLOUT_CONTENTS (SIZE_OPCODE + SIZE_MEMNUM) +#define SIZE_OP_CALLOUT_NAME (SIZE_OPCODE + SIZE_MEMNUM + SIZE_MEMNUM) #endif #define MC_ESC(syn) (syn)->meta_char_table.esc @@ -673,148 +834,130 @@ typedef void* PointerType; #define FLAG_NCCLASS_SHARE (1<<1) #define NCCLASS_SET_NOT(nd) NCCLASS_FLAG_SET(nd, FLAG_NCCLASS_NOT) -#define NCCLASS_SET_SHARE(nd) NCCLASS_FLAG_SET(nd, FLAG_NCCLASS_SHARE) #define NCCLASS_CLEAR_NOT(nd) NCCLASS_FLAG_CLEAR(nd, FLAG_NCCLASS_NOT) #define IS_NCCLASS_NOT(nd) IS_NCCLASS_FLAG_ON(nd, FLAG_NCCLASS_NOT) -#define IS_NCCLASS_SHARE(nd) IS_NCCLASS_FLAG_ON(nd, FLAG_NCCLASS_SHARE) -typedef struct { - int type; - /* struct _Node* next; */ - /* unsigned int flags; */ -} NodeBase; +extern void onig_add_end_call(void (*func)(void)); -typedef struct { - NodeBase base; - unsigned int flags; - BitSet bs; - BBuf* mbuf; /* multi-byte info or NULL */ -} CClassNode; -typedef long OnigStackIndex; +#ifdef ONIG_DEBUG -typedef struct _OnigStackType { - unsigned int type; - union { - struct { - UChar *pcode; /* byte code position */ - UChar *pstr; /* string position */ - UChar *pstr_prev; /* previous char position of pstr */ -#ifdef USE_COMBINATION_EXPLOSION_CHECK - unsigned int state_check; -#endif - } state; - struct { - int count; /* for OP_REPEAT_INC, OP_REPEAT_INC_NG */ - UChar *pcode; /* byte code position (head of repeated target) */ - int num; /* repeat id */ - } repeat; - struct { - OnigStackIndex si; /* index of stack */ - } repeat_inc; - struct { - int num; /* memory num */ - UChar *pstr; /* start/end position */ - /* Following information is setted, if this stack type is MEM-START */ - OnigStackIndex start; /* prev. info (for backtrack "(...)*" ) */ - OnigStackIndex end; /* prev. info (for backtrack "(...)*" ) */ - } mem; - struct { - int num; /* null check id */ - UChar *pstr; /* start position */ - } null_check; -#ifdef USE_SUBEXP_CALL - struct { - UChar *ret_addr; /* byte code position */ - int num; /* null check id */ - UChar *pstr; /* string position */ - } call_frame; +#ifdef ONIG_DEBUG_COMPILE +extern void onig_print_compiled_byte_code_list(FILE* f, regex_t* reg); #endif - } u; -} OnigStackType; -typedef struct { - void* stack_p; - int stack_n; - OnigOptionType options; - OnigRegion* region; - const UChar* start; /* search start position (for \G: BEGIN_POSITION) */ -#ifdef USE_FIND_LONGEST_SEARCH_ALL_OF_RANGE - int best_len; /* for ONIG_OPTION_FIND_LONGEST */ - UChar* best_s; +#ifdef ONIG_DEBUG_STATISTICS +extern void onig_statistics_init P_((void)); +extern int onig_print_statistics P_((FILE* f)); #endif -#ifdef USE_COMBINATION_EXPLOSION_CHECK - void* state_check_buff; - int state_check_buff_size; #endif -} OnigMatchArg; +extern void onig_warning(const char* s); +extern UChar* onig_error_code_to_format P_((int code)); +extern void EFIAPI onig_snprintf_with_pattern PV_((UChar buf[], int bufsize, OnigEncoding enc, UChar* pat, UChar* pat_end, const UChar *fmt, ...)); +extern int onig_bbuf_init P_((BBuf* buf, int size)); +extern int onig_compile P_((regex_t* reg, const UChar* pattern, const UChar* pattern_end, OnigErrorInfo* einfo)); +extern void onig_transfer P_((regex_t* to, regex_t* from)); +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); + +#ifdef USE_CALLOUT + +extern OnigCalloutType onig_get_callout_type_by_name_id(int name_id); +extern OnigCalloutFunc onig_get_callout_start_func_by_name_id(int id); +extern OnigCalloutFunc onig_get_callout_end_func_by_name_id(int id); +extern int onig_callout_tag_table_free(void* table); +extern void onig_free_reg_callout_list(int n, CalloutListEntry* list); +extern CalloutListEntry* onig_reg_callout_list_at(regex_t* reg, int num); +extern OnigCalloutFunc onig_get_callout_start_func(regex_t* reg, int callout_num); + +/* for definition of builtin callout */ +#define BC0_P(name, func) do {\ + int len = onigenc_str_bytelen_null(enc, (UChar* )name);\ + id = onig_set_callout_of_name(enc, ONIG_CALLOUT_TYPE_SINGLE,\ + (UChar* )(name), (UChar* )((name) + len),\ + ONIG_CALLOUT_IN_PROGRESS,\ + onig_builtin_ ## func, 0, 0, 0, 0, 0);\ + if (id < 0) return id;\ +} while(0) -#define IS_CODE_SB_WORD(enc,code) \ - (ONIGENC_IS_CODE_ASCII(code) && ONIGENC_IS_CODE_WORD(enc,code)) +#define BC0_R(name, func) do {\ + int len = onigenc_str_bytelen_null(enc, (UChar* )name);\ + id = onig_set_callout_of_name(enc, ONIG_CALLOUT_TYPE_SINGLE,\ + (UChar* )(name), (UChar* )((name) + len),\ + ONIG_CALLOUT_IN_RETRACTION,\ + onig_builtin_ ## func, 0, 0, 0, 0, 0);\ + if (id < 0) return id;\ +} while(0) -typedef struct OnigEndCallListItem { - struct OnigEndCallListItem* next; - void (*func)(void); -} OnigEndCallListItemType; +#define BC0_B(name, func) do {\ + int len = onigenc_str_bytelen_null(enc, (UChar* )name);\ + id = onig_set_callout_of_name(enc, ONIG_CALLOUT_TYPE_SINGLE,\ + (UChar* )(name), (UChar* )((name) + len),\ + ONIG_CALLOUT_IN_BOTH,\ + onig_builtin_ ## func, 0, 0, 0, 0, 0);\ + if (id < 0) return id;\ +} while(0) -extern void onig_add_end_call(void (*func)(void)); +#define BC_P(name, func, na, ts) do {\ + int len = onigenc_str_bytelen_null(enc, (UChar* )name);\ + id = onig_set_callout_of_name(enc, ONIG_CALLOUT_TYPE_SINGLE,\ + (UChar* )(name), (UChar* )((name) + len),\ + ONIG_CALLOUT_IN_PROGRESS,\ + onig_builtin_ ## func, 0, (na), (ts), 0, 0); \ + if (id < 0) return id;\ +} while(0) +#define BC_P_O(name, func, nts, ts, nopts, opts) do {\ + int len = onigenc_str_bytelen_null(enc, (UChar* )name);\ + id = onig_set_callout_of_name(enc, ONIG_CALLOUT_TYPE_SINGLE,\ + (UChar* )(name), (UChar* )((name) + len),\ + ONIG_CALLOUT_IN_PROGRESS,\ + onig_builtin_ ## func, 0, (nts), (ts), (nopts), (opts));\ + if (id < 0) return id;\ +} while(0) -#ifdef ONIG_DEBUG +#define BC_B(name, func, na, ts) do {\ + int len = onigenc_str_bytelen_null(enc, (UChar* )name);\ + id = onig_set_callout_of_name(enc, ONIG_CALLOUT_TYPE_SINGLE,\ + (UChar* )(name), (UChar* )((name) + len),\ + ONIG_CALLOUT_IN_BOTH,\ + onig_builtin_ ## func, 0, (na), (ts), 0, 0);\ + if (id < 0) return id;\ +} while(0) -typedef struct { - short int opcode; - char* name; - short int arg_type; -} OnigOpInfoType; +#define BC_B_O(name, func, nts, ts, nopts, opts) do {\ + int len = onigenc_str_bytelen_null(enc, (UChar* )name);\ + id = onig_set_callout_of_name(enc, ONIG_CALLOUT_TYPE_SINGLE,\ + (UChar* )(name), (UChar* )((name) + len),\ + ONIG_CALLOUT_IN_BOTH,\ + onig_builtin_ ## func, 0, (nts), (ts), (nopts), (opts));\ + if (id < 0) return id;\ +} while(0) -extern OnigOpInfoType OnigOpInfo[]; +#endif /* USE_CALLOUT */ -extern void onig_print_compiled_byte_code P_((FILE* f, UChar* bp, UChar** nextp, OnigEncoding enc)); +/* strend hash */ +typedef void hash_table_type; -#ifdef ONIG_DEBUG_STATISTICS -extern void onig_statistics_init P_((void)); -extern void onig_print_statistics P_((FILE* f)); -#endif +#ifdef _WIN32 +# include +typedef ULONG_PTR hash_data_type; +#else +//typedef unsigned long hash_data_type; #endif -extern UChar* onig_error_code_to_format P_((int code)); -extern void EFIAPI onig_snprintf_with_pattern PV_((UChar buf[], int bufsize, OnigEncoding enc, UChar* pat, UChar* pat_end, const UChar *fmt, ...)); -extern int onig_bbuf_init P_((BBuf* buf, int size)); -extern int onig_compile P_((regex_t* reg, const UChar* pattern, const UChar* pattern_end, OnigErrorInfo* einfo)); -extern void onig_chain_reduce P_((regex_t* reg)); -extern void onig_chain_link_add P_((regex_t* to, regex_t* add)); -extern void onig_transfer P_((regex_t* to, regex_t* from)); -extern int onig_is_code_in_cc P_((OnigEncoding enc, OnigCodePoint code, CClassNode* cc)); -extern int onig_is_code_in_cc_len P_((int enclen, OnigCodePoint code, CClassNode* cc)); - -/* strend hash */ -typedef void hash_table_type; -typedef unsigned long hash_data_type; +typedef UINTN hash_data_type; 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)); -/* encoding property management */ -#define PROPERTY_LIST_ADD_PROP(Name, CR) \ - r = onigenc_property_list_add_property((UChar* )Name, CR,\ - &PropertyNameTable, &PropertyList, &PropertyListNum,\ - &PropertyListSize);\ - if (r != 0) goto end - -#define PROPERTY_LIST_INIT_CHECK \ - if (PropertyInited == 0) {\ - int r = onigenc_property_list_init(init_property_list);\ - if (r != 0) return r;\ - } - -extern int onigenc_property_list_add_property P_((UChar* name, const OnigCodePoint* prop, hash_table_type **table, const OnigCodePoint*** plist, int *pnum, int *psize)); - typedef int (*ONIGENC_INIT_PROPERTY_LIST_FUNC_TYPE)(void); -extern int onigenc_property_list_init P_((ONIGENC_INIT_PROPERTY_LIST_FUNC_TYPE)); - #endif /* REGINT_H */ +#include +#define INT_MAX MAX_INTN +#define LONG_MAX MAX_UINTN diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regparse.c b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regparse.c index a87fbfc426..d274873aae 100644 --- a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regparse.c +++ b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regparse.c @@ -2,11 +2,9 @@ regparse.c - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2002-2008 K.Kosako + * Copyright (c) 2002-2018 K.Kosako * All rights reserved. * - * (C) Copyright 2015 Hewlett Packard Enterprise Development LP
- * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: @@ -32,27 +30,89 @@ #include "regparse.h" #include "st.h" +#ifdef DEBUG_NODE_FREE +#include +#endif + +#define INIT_TAG_NAMES_ALLOC_NUM 5 + #define WARN_BUFSIZE 256 #define CASE_FOLD_IS_APPLIED_INSIDE_NEGATIVE_CCLASS +#define IS_ALLOWED_CODE_IN_CALLOUT_NAME(c) \ + ((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z') || (c >= '0' && c <= '9') || c == '_' /* || c == '!' */) +#define IS_ALLOWED_CODE_IN_CALLOUT_TAG_NAME(c) \ + ((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z') || (c >= '0' && c <= '9') || c == '_') + + +OnigSyntaxType OnigSyntaxOniguruma = { + (( SYN_GNU_REGEX_OP | ONIG_SYN_OP_QMARK_NON_GREEDY | + ONIG_SYN_OP_ESC_OCTAL3 | ONIG_SYN_OP_ESC_X_HEX2 | + ONIG_SYN_OP_ESC_X_BRACE_HEX8 | ONIG_SYN_OP_ESC_O_BRACE_OCTAL | + ONIG_SYN_OP_ESC_CONTROL_CHARS | + ONIG_SYN_OP_ESC_C_CONTROL ) + & ~ONIG_SYN_OP_ESC_LTGT_WORD_BEGIN_END ) + , ( ONIG_SYN_OP2_QMARK_GROUP_EFFECT | + ONIG_SYN_OP2_OPTION_RUBY | + ONIG_SYN_OP2_QMARK_LT_NAMED_GROUP | ONIG_SYN_OP2_ESC_K_NAMED_BACKREF | + ONIG_SYN_OP2_QMARK_LPAREN_IF_ELSE | + ONIG_SYN_OP2_QMARK_TILDE_ABSENT_GROUP | + ONIG_SYN_OP2_QMARK_BRACE_CALLOUT_CONTENTS | + ONIG_SYN_OP2_ASTERISK_CALLOUT_NAME | + ONIG_SYN_OP2_ESC_X_Y_GRAPHEME_CLUSTER | + ONIG_SYN_OP2_ESC_CAPITAL_R_GENERAL_NEWLINE | + ONIG_SYN_OP2_ESC_CAPITAL_N_O_SUPER_DOT | + ONIG_SYN_OP2_ESC_CAPITAL_K_KEEP | + ONIG_SYN_OP2_ESC_G_SUBEXP_CALL | + ONIG_SYN_OP2_ESC_P_BRACE_CHAR_PROPERTY | + ONIG_SYN_OP2_ESC_P_BRACE_CIRCUMFLEX_NOT | + ONIG_SYN_OP2_PLUS_POSSESSIVE_REPEAT | + ONIG_SYN_OP2_CCLASS_SET_OP | ONIG_SYN_OP2_ESC_CAPITAL_C_BAR_CONTROL | + ONIG_SYN_OP2_ESC_CAPITAL_M_BAR_META | ONIG_SYN_OP2_ESC_V_VTAB | + ONIG_SYN_OP2_ESC_H_XDIGIT | ONIG_SYN_OP2_ESC_U_HEX4 ) + , ( SYN_GNU_REGEX_BV | + ONIG_SYN_ALLOW_INTERVAL_LOW_ABBREV | + ONIG_SYN_DIFFERENT_LEN_ALT_LOOK_BEHIND | + ONIG_SYN_CAPTURE_ONLY_NAMED_GROUP | + ONIG_SYN_ALLOW_MULTIPLEX_DEFINITION_NAME | + ONIG_SYN_FIXED_INTERVAL_IS_GREEDY_ONLY | + ONIG_SYN_WARN_CC_OP_NOT_ESCAPED | + ONIG_SYN_WARN_REDUNDANT_NESTED_REPEAT ) + , ONIG_OPTION_NONE + , + { + (OnigCodePoint )'\\' /* esc */ + , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar '.' */ + , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anytime '*' */ + , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* zero or one time '?' */ + , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* one or more time '+' */ + , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar anytime */ + } +}; OnigSyntaxType OnigSyntaxRuby = { (( SYN_GNU_REGEX_OP | ONIG_SYN_OP_QMARK_NON_GREEDY | ONIG_SYN_OP_ESC_OCTAL3 | ONIG_SYN_OP_ESC_X_HEX2 | - ONIG_SYN_OP_ESC_X_BRACE_HEX8 | ONIG_SYN_OP_ESC_CONTROL_CHARS | + ONIG_SYN_OP_ESC_X_BRACE_HEX8 | ONIG_SYN_OP_ESC_O_BRACE_OCTAL | + ONIG_SYN_OP_ESC_CONTROL_CHARS | ONIG_SYN_OP_ESC_C_CONTROL ) & ~ONIG_SYN_OP_ESC_LTGT_WORD_BEGIN_END ) , ( ONIG_SYN_OP2_QMARK_GROUP_EFFECT | ONIG_SYN_OP2_OPTION_RUBY | ONIG_SYN_OP2_QMARK_LT_NAMED_GROUP | ONIG_SYN_OP2_ESC_K_NAMED_BACKREF | + ONIG_SYN_OP2_QMARK_LPAREN_IF_ELSE | + ONIG_SYN_OP2_QMARK_TILDE_ABSENT_GROUP | + ONIG_SYN_OP2_ESC_X_Y_GRAPHEME_CLUSTER | + ONIG_SYN_OP2_ESC_CAPITAL_R_GENERAL_NEWLINE | + ONIG_SYN_OP2_ESC_CAPITAL_K_KEEP | ONIG_SYN_OP2_ESC_G_SUBEXP_CALL | ONIG_SYN_OP2_ESC_P_BRACE_CHAR_PROPERTY | ONIG_SYN_OP2_ESC_P_BRACE_CIRCUMFLEX_NOT | ONIG_SYN_OP2_PLUS_POSSESSIVE_REPEAT | ONIG_SYN_OP2_CCLASS_SET_OP | ONIG_SYN_OP2_ESC_CAPITAL_C_BAR_CONTROL | ONIG_SYN_OP2_ESC_CAPITAL_M_BAR_META | ONIG_SYN_OP2_ESC_V_VTAB | - ONIG_SYN_OP2_ESC_H_XDIGIT ) + ONIG_SYN_OP2_ESC_H_XDIGIT | ONIG_SYN_OP2_ESC_U_HEX4 ) , ( SYN_GNU_REGEX_BV | ONIG_SYN_ALLOW_INTERVAL_LOW_ABBREV | ONIG_SYN_DIFFERENT_LEN_ALT_LOOK_BEHIND | @@ -73,7 +133,7 @@ OnigSyntaxType OnigSyntaxRuby = { } }; -OnigSyntaxType* OnigDefaultSyntax = ONIG_SYNTAX_RUBY; +OnigSyntaxType* OnigDefaultSyntax = ONIG_SYNTAX_ONIGURUMA; extern void onig_null_warn(const char* s ARG_UNUSED) { } @@ -99,6 +159,56 @@ extern void onig_set_verb_warn_func(OnigWarnFunc f) onig_verb_warn = f; } +extern void +onig_warning(const char* s) +{ + if (onig_warn == onig_null_warn) return ; + + (*onig_warn)(s); +} + +#define DEFAULT_MAX_CAPTURE_NUM 32767 + +static int MaxCaptureNum = DEFAULT_MAX_CAPTURE_NUM; + +extern int +onig_set_capture_num_limit(int num) +{ + if (num < 0) return -1; + + MaxCaptureNum = num; + return 0; +} + +static unsigned int ParseDepthLimit = DEFAULT_PARSE_DEPTH_LIMIT; + +extern unsigned int +onig_get_parse_depth_limit(void) +{ + return ParseDepthLimit; +} + +extern int +onig_set_parse_depth_limit(unsigned int depth) +{ + if (depth == 0) + ParseDepthLimit = DEFAULT_PARSE_DEPTH_LIMIT; + else + ParseDepthLimit = depth; + return 0; +} + +static int +positive_int_multiply(int x, int y) +{ + if (x == 0 || y == 0) return 0; + + if (x < INT_MAX / y) + return x * y; + else + return -1; +} + static void bbuf_free(BBuf* bbuf) { @@ -116,17 +226,31 @@ bbuf_clone(BBuf** rto, BBuf* from) *rto = to = (BBuf* )xmalloc(sizeof(BBuf)); CHECK_NULL_RETURN_MEMERR(to); - r = BBUF_INIT(to, from->alloc); - if (r != 0) return r; + r = BB_INIT(to, from->alloc); + if (r != 0) { + xfree(to->p); + *rto = 0; + return r; + } to->used = from->used; xmemcpy(to->p, from->p, from->used); return 0; } -#define BACKREF_REL_TO_ABS(rel_no, env) \ - ((env)->num_mem + 1 + (rel_no)) +static int backref_rel_to_abs(int rel_no, ScanEnv* env) +{ + if (rel_no > 0) { + return env->num_mem + rel_no; + } + else { + return env->num_mem + 1 + rel_no; + } +} + +#define OPTION_ON(v,f) ((v) |= (f)) +#define OPTION_OFF(v,f) ((v) &= ~(f)) -#define ONOFF(v,f,negative) (negative) ? ((v) &= ~(f)) : ((v) |= (f)) +#define OPTION_NEGATE(v,f,negative) (negative) ? ((v) &= ~(f)) : ((v) |= (f)) #define MBCODE_START_POS(enc) \ (OnigCodePoint )(ONIGENC_MBC_MINLEN(enc) > 1 ? 0 : 0x80) @@ -137,7 +261,7 @@ bbuf_clone(BBuf** rto, BBuf* from) #define ADD_ALL_MULTI_BYTE_RANGE(enc, mbuf) do {\ if (! ONIGENC_IS_SINGLEBYTE(enc)) {\ r = SET_ALL_MULTI_BYTE_RANGE(enc, &(mbuf));\ - if (r) return r;\ + if (r != 0) return r;\ }\ } while (0) @@ -220,33 +344,40 @@ onig_strncmp(const UChar* s1, const UChar* s2, int n) extern void onig_strcpy(UChar* dest, const UChar* src, const UChar* end) { - int len = (int)(end - src); + int len = (int )(end - src); if (len > 0) { xmemcpy(dest, src, len); dest[len] = (UChar )0; } } -#ifdef USE_NAMED_GROUP -static UChar* -strdup_with_null(OnigEncoding enc, UChar* s, UChar* end) +static int +save_entry(ScanEnv* env, enum SaveType type, int* id) { - int slen, term_len, i; - UChar *r; + int nid = env->save_num; - slen = (int)(end - s); - term_len = ONIGENC_MBC_MINLEN(enc); - - r = (UChar* )xmalloc(slen + term_len); - CHECK_NULL_RETURN(r); - xmemcpy(r, s, slen); +#if 0 + if (IS_NULL(env->saves)) { + int n = 10; + env->saves = (SaveItem* )xmalloc(sizeof(SaveItem) * n); + CHECK_NULL_RETURN_MEMERR(env->saves); + env->save_alloc_num = n; + } + else if (env->save_alloc_num <= nid) { + int n = env->save_alloc_num * 2; + SaveItem* p = (SaveItem* )xrealloc(env->saves, sizeof(SaveItem) * n, sizeof(SaveItem)*env->save_alloc_num); + CHECK_NULL_RETURN_MEMERR(p); + env->saves = p; + env->save_alloc_num = n; + } - for (i = 0; i < term_len; i++) - r[slen + i] = (UChar )0; + env->saves[nid].type = type; +#endif - return r; + env->save_num++; + *id = nid; + return 0; } -#endif /* scan pattern methods */ #define PEND_VALUE 0 @@ -277,7 +408,7 @@ strdup_with_null(OnigEncoding enc, UChar* s, UChar* end) static UChar* strcat_capa(UChar* dest, UChar* dest_end, const UChar* src, const UChar* src_end, - int capa, int oldCapa) + int capa, int oldCapa) { UChar* r; @@ -294,7 +425,7 @@ strcat_capa(UChar* dest, UChar* dest_end, const UChar* src, const UChar* src_end /* dest on static area */ static UChar* strcat_capa_from_static(UChar* dest, UChar* dest_end, - const UChar* src, const UChar* src_end, int capa) + const UChar* src, const UChar* src_end, int capa) { UChar* r; @@ -362,38 +493,137 @@ onig_st_init_strend_table_with_size(int size) extern int onig_st_lookup_strend(hash_table_type* table, const UChar* str_key, - const UChar* end_key, hash_data_type *value) + const UChar* end_key, hash_data_type *value) { st_str_end_key key; key.s = (UChar* )str_key; key.end = (UChar* )end_key; - return onig_st_lookup(table, (st_data_t )(UINTN)(&key), value); + return onig_st_lookup(table, (st_data_t )(&key), value); } extern int onig_st_insert_strend(hash_table_type* table, const UChar* str_key, - const UChar* end_key, hash_data_type value) + const UChar* end_key, hash_data_type value) { st_str_end_key* key; int result; key = (st_str_end_key* )xmalloc(sizeof(st_str_end_key)); CHECK_NULL_RETURN_MEMERR(key); + key->s = (UChar* )str_key; key->end = (UChar* )end_key; - result = onig_st_insert(table, (st_data_t )(UINTN)key, value); + result = onig_st_insert(table, (st_data_t )key, value); if (result) { xfree(key); } return result; } -#endif /* USE_ST_LIBRARY */ +typedef struct { + OnigEncoding enc; + int type; /* callout type: single or not */ + UChar* s; + UChar* end; +} st_callout_name_key; + +static int +callout_name_table_cmp(st_callout_name_key* x, st_callout_name_key* y) +{ + UChar *p, *q; + int c; + + if (x->enc != y->enc) return 1; + if (x->type != y->type) return 1; + if ((x->end - x->s) != (y->end - y->s)) + return 1; + + p = x->s; + q = y->s; + while (p < x->end) { + c = (int )*p - (int )*q; + if (c != 0) return c; + + p++; q++; + } + + return 0; +} + +static int +callout_name_table_hash(st_callout_name_key* x) +{ + UChar *p; + int val = 0; + + p = x->s; + while (p < x->end) { + val = val * 997 + (int )*p++; + } + + /* use intptr_t for escape warning in Windows */ + return val + (val >> 5) + ((intptr_t )x->enc & 0xffff) + x->type; +} + +extern hash_table_type* +onig_st_init_callout_name_table_with_size(int size) +{ + static struct st_hash_type hashType = { + callout_name_table_cmp, + callout_name_table_hash, + }; + + return (hash_table_type* ) + onig_st_init_table_with_size(&hashType, size); +} + +extern int +onig_st_lookup_callout_name_table(hash_table_type* table, + OnigEncoding enc, + int type, + const UChar* str_key, + const UChar* end_key, + hash_data_type *value) +{ + st_callout_name_key key; + + key.enc = enc; + key.type = type; + key.s = (UChar* )str_key; + key.end = (UChar* )end_key; + + return onig_st_lookup(table, (st_data_t )(&key), value); +} + +static int +st_insert_callout_name_table(hash_table_type* table, + OnigEncoding enc, int type, + UChar* str_key, UChar* end_key, + hash_data_type value) +{ + st_callout_name_key* key; + int result; + + key = (st_callout_name_key* )xmalloc(sizeof(st_callout_name_key)); + CHECK_NULL_RETURN_MEMERR(key); + + /* key->s: don't duplicate, because str_key is duped in callout_name_entry() */ + key->enc = enc; + key->type = type; + key->s = str_key; + key->end = end_key; + result = onig_st_insert(table, (st_data_t )key, value); + if (result) { + xfree(key); + } + return result; +} + +#endif /* USE_ST_LIBRARY */ -#ifdef USE_NAMED_GROUP #define INIT_NAME_BACKREFS_ALLOC_NUM 8 @@ -408,6 +638,8 @@ typedef struct { #ifdef USE_ST_LIBRARY +#define INIT_NAMES_ALLOC_NUM 5 + typedef st_table NameTable; typedef st_data_t HashDataType; /* 1.6 st.h doesn't define st_data_t type */ @@ -478,7 +710,7 @@ onig_names_free(regex_t* reg) NameTable* t; r = names_clear(reg); - if (r) return r; + if (r != 0) return r; t = (NameTable* )reg->name_table; if (IS_NOT_NULL(t)) onig_st_free_table(t); @@ -513,8 +745,8 @@ i_names(UChar* key ARG_UNUSED, NameEntry* e, INamesArg* arg) int r = (*(arg->func))(e->name, e->name + e->name_len, e->back_num, - (e->back_num > 1 ? e->back_refs : &(e->back_ref1)), - arg->reg, arg->arg); + (e->back_num > 1 ? e->back_refs : &(e->back_ref1)), + arg->reg, arg->arg); if (r != 0) { arg->ret = r; return ST_STOP; @@ -535,7 +767,7 @@ onig_foreach_name(regex_t* reg, narg.reg = reg; narg.arg = arg; narg.enc = reg->enc; /* should be pattern encoding. */ - onig_st_foreach(t, i_names, (HashDataType )(UINTN)&narg); + onig_st_foreach(t, i_names, (HashDataType )&narg); } return narg.ret; } @@ -563,7 +795,7 @@ onig_renumber_name_table(regex_t* reg, GroupNumRemap* map) NameTable* t = (NameTable* )reg->name_table; if (IS_NOT_NULL(t)) { - onig_st_foreach(t, i_renumber_name, (HashDataType )(UINTN)map); + onig_st_foreach(t, i_renumber_name, (HashDataType )map); } return 0; } @@ -604,16 +836,16 @@ onig_print_names(FILE* fp, regex_t* reg) e = &(t->e[i]); fprintf(fp, "%s: ", e->name); if (e->back_num == 0) { - fputs("-", fp); + fputs("-", fp); } else if (e->back_num == 1) { - fprintf(fp, "%d", e->back_ref1); + fprintf(fp, "%d", e->back_ref1); } else { - for (j = 0; j < e->back_num; j++) { - if (j > 0) fprintf(fp, ", "); - fprintf(fp, "%d", e->back_refs[j]); - } + for (j = 0; j < e->back_num; j++) { + if (j > 0) fprintf(fp, ", "); + fprintf(fp, "%d", e->back_refs[j]); + } } fputs("\n", fp); } @@ -634,13 +866,13 @@ names_clear(regex_t* reg) for (i = 0; i < t->num; i++) { e = &(t->e[i]); if (IS_NOT_NULL(e->name)) { - xfree(e->name); - e->name = NULL; - e->name_len = 0; - e->back_num = 0; - e->back_alloc = 0; - if (IS_NOT_NULL(e->back_refs)) xfree(e->back_refs); - e->back_refs = (int* )NULL; + xfree(e->name); + e->name = NULL; + e->name_len = 0; + e->back_num = 0; + e->back_alloc = 0; + if (IS_NOT_NULL(e->back_refs)) xfree(e->back_refs); + e->back_refs = (int* )NULL; } } if (IS_NOT_NULL(t->e)) { @@ -659,7 +891,7 @@ onig_names_free(regex_t* reg) NameTable* t; r = names_clear(reg); - if (r) return r; + if (r != 0) return r; t = (NameTable* )reg->name_table; if (IS_NOT_NULL(t)) xfree(t); @@ -679,7 +911,7 @@ name_find(regex_t* reg, UChar* name, UChar* name_end) for (i = 0; i < t->num; i++) { e = &(t->e[i]); if (len == e->name_len && onig_strncmp(name, e->name, len) == 0) - return e; + return e; } } return (NameEntry* )NULL; @@ -697,8 +929,8 @@ onig_foreach_name(regex_t* reg, for (i = 0; i < t->num; i++) { e = &(t->e[i]); r = (*func)(e->name, e->name + e->name_len, e->back_num, - (e->back_num > 1 ? e->back_refs : &(e->back_ref1)), - reg, arg); + (e->back_num > 1 ? e->back_refs : &(e->back_ref1)), + reg, arg); if (r != 0) return r; } } @@ -721,6 +953,7 @@ onig_number_of_names(regex_t* reg) static int name_add(regex_t* reg, UChar* name, UChar* name_end, int backref, ScanEnv* env) { + int r; int alloc; NameEntry* e; NameTable* t = (NameTable* )reg->name_table; @@ -732,21 +965,21 @@ name_add(regex_t* reg, UChar* name, UChar* name_end, int backref, ScanEnv* env) if (IS_NULL(e)) { #ifdef USE_ST_LIBRARY if (IS_NULL(t)) { - t = onig_st_init_strend_table_with_size(5); - CHECK_NULL_RETURN_MEMERR(t); + t = onig_st_init_strend_table_with_size(INIT_NAMES_ALLOC_NUM); reg->name_table = (void* )t; } e = (NameEntry* )xmalloc(sizeof(NameEntry)); CHECK_NULL_RETURN_MEMERR(e); - e->name = strdup_with_null(reg->enc, name, name_end); + e->name = onigenc_strdup(reg->enc, name, name_end); if (IS_NULL(e->name)) { xfree(e); return ONIGERR_MEMORY; } - onig_st_insert_strend(t, e->name, (e->name + (name_end - name)), - (HashDataType )(UINTN)e); + r = onig_st_insert_strend(t, e->name, (e->name + (name_end - name)), + (HashDataType )e); + if (r < 0) return r; - e->name_len = (int)(name_end - name); + e->name_len = (int )(name_end - name); e->back_num = 0; e->back_alloc = 0; e->back_refs = (int* )NULL; @@ -763,8 +996,8 @@ name_add(regex_t* reg, UChar* name, UChar* name_end, int backref, ScanEnv* env) t->e = (NameEntry* )xmalloc(sizeof(NameEntry) * alloc); if (IS_NULL(t->e)) { - xfree(t); - return ONIGERR_MEMORY; + xfree(t); + return ONIGERR_MEMORY; } t->alloc = alloc; reg->name_table = t; @@ -774,22 +1007,22 @@ name_add(regex_t* reg, UChar* name, UChar* name_end, int backref, ScanEnv* env) int i; alloc = t->alloc * 2; - t->e = (NameEntry* )xrealloc(t->e, sizeof(NameEntry) * alloc); + t->e = (NameEntry* )xrealloc(t->e, sizeof(NameEntry) * alloc, sizeof(NameEntry) * t->alloc); CHECK_NULL_RETURN_MEMERR(t->e); t->alloc = alloc; clear: for (i = t->num; i < t->alloc; i++) { - t->e[i].name = NULL; - t->e[i].name_len = 0; - t->e[i].back_num = 0; - t->e[i].back_alloc = 0; - t->e[i].back_refs = (int* )NULL; + t->e[i].name = NULL; + t->e[i].name_len = 0; + t->e[i].back_num = 0; + t->e[i].back_alloc = 0; + t->e[i].back_refs = (int* )NULL; } } e = &(t->e[t->num]); t->num++; - e->name = strdup_with_null(reg->enc, name, name_end); + e->name = onigenc_strdup(reg->enc, name, name_end); if (IS_NULL(e->name)) return ONIGERR_MEMORY; e->name_len = name_end - name; #endif @@ -798,7 +1031,7 @@ name_add(regex_t* reg, UChar* name, UChar* name_end, int backref, ScanEnv* env) if (e->back_num >= 1 && ! IS_SYNTAX_BV(env->syntax, ONIG_SYN_ALLOW_MULTIPLEX_DEFINITION_NAME)) { onig_scan_env_set_error_string(env, ONIGERR_MULTIPLEX_DEFINED_NAME, - name, name_end); + name, name_end); return ONIGERR_MULTIPLEX_DEFINED_NAME; } @@ -817,10 +1050,10 @@ name_add(regex_t* reg, UChar* name, UChar* name_end, int backref, ScanEnv* env) } else { if (e->back_num > e->back_alloc) { - alloc = e->back_alloc * 2; - e->back_refs = (int* )xrealloc(e->back_refs, sizeof(int) * alloc, sizeof(int) * e->back_alloc); - CHECK_NULL_RETURN_MEMERR(e->back_refs); - e->back_alloc = alloc; + alloc = e->back_alloc * 2; + e->back_refs = (int* )xrealloc(e->back_refs, sizeof(int) * alloc, sizeof(int) * e->back_alloc); + CHECK_NULL_RETURN_MEMERR(e->back_refs); + e->back_alloc = alloc; } e->back_refs[e->back_num - 1] = backref; } @@ -831,7 +1064,7 @@ name_add(regex_t* reg, UChar* name, UChar* name_end, int backref, ScanEnv* env) extern int onig_name_to_group_numbers(regex_t* reg, const UChar* name, - const UChar* name_end, int** nums) + const UChar* name_end, int** nums) { NameEntry* e = name_find(reg, name, name_end); @@ -852,7 +1085,7 @@ onig_name_to_group_numbers(regex_t* reg, const UChar* name, extern int onig_name_to_backref_number(regex_t* reg, const UChar* name, - const UChar* name_end, OnigRegion *region) + const UChar* name_end, OnigRegion *region) { int i, n, *nums; @@ -866,1117 +1099,2547 @@ onig_name_to_backref_number(regex_t* reg, const UChar* name, else { if (IS_NOT_NULL(region)) { for (i = n - 1; i >= 0; i--) { - if (region->beg[nums[i]] != ONIG_REGION_NOTPOS) - return nums[i]; + if (region->beg[nums[i]] != ONIG_REGION_NOTPOS) + return nums[i]; } } return nums[n - 1]; } } -#else /* USE_NAMED_GROUP */ - -extern int -onig_name_to_group_numbers(regex_t* reg, const UChar* name, - const UChar* name_end, int** nums) -{ - return ONIG_NO_SUPPORT_CONFIG; -} - -extern int -onig_name_to_backref_number(regex_t* reg, const UChar* name, - const UChar* name_end, OnigRegion* region) -{ - return ONIG_NO_SUPPORT_CONFIG; -} - -extern int -onig_foreach_name(regex_t* reg, - int (*func)(const UChar*, const UChar*,int,int*,regex_t*,void*), void* arg) -{ - return ONIG_NO_SUPPORT_CONFIG; -} - -extern int -onig_number_of_names(regex_t* reg) -{ - return 0; -} -#endif /* else USE_NAMED_GROUP */ - extern int onig_noname_group_capture_is_active(regex_t* reg) { if (ONIG_IS_OPTION_ON(reg->options, ONIG_OPTION_DONT_CAPTURE_GROUP)) return 0; -#ifdef USE_NAMED_GROUP 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)) { return 0; } -#endif return 1; } +#ifdef USE_CALLOUT -#define INIT_SCANENV_MEMNODES_ALLOC_SIZE 16 - -static void -scan_env_clear(ScanEnv* env) -{ - int i; - - BIT_STATUS_CLEAR(env->capture_history); - BIT_STATUS_CLEAR(env->bt_mem_start); - BIT_STATUS_CLEAR(env->bt_mem_end); - BIT_STATUS_CLEAR(env->backrefed_mem); - env->error = (UChar* )NULL; - env->error_end = (UChar* )NULL; - env->num_call = 0; - env->num_mem = 0; -#ifdef USE_NAMED_GROUP - env->num_named = 0; -#endif - env->mem_alloc = 0; - env->mem_nodes_dynamic = (Node** )NULL; +typedef struct { + OnigCalloutType type; + int in; + OnigCalloutFunc start_func; + OnigCalloutFunc end_func; + int arg_num; + int opt_arg_num; + unsigned int arg_types[ONIG_CALLOUT_MAX_ARGS_NUM]; + OnigValue opt_defaults[ONIG_CALLOUT_MAX_ARGS_NUM]; + UChar* name; /* reference to GlobalCalloutNameTable entry: e->name */ +} CalloutNameListEntry; - for (i = 0; i < SCANENV_MEMNODES_SIZE; i++) - env->mem_nodes_static[i] = NULL_NODE; +typedef struct { + int n; + int alloc; + CalloutNameListEntry* v; +} CalloutNameListType; -#ifdef USE_COMBINATION_EXPLOSION_CHECK - env->num_comb_exp_check = 0; - env->comb_exp_max_regnum = 0; - env->curr_max_regnum = 0; - env->has_recursion = 0; -#endif -} +static CalloutNameListType* GlobalCalloutNameList; static int -scan_env_add_mem_entry(ScanEnv* env) +make_callout_func_list(CalloutNameListType** rs, int init_size) { - int i, need, alloc; - Node** p; + CalloutNameListType* s; + CalloutNameListEntry* v; - need = env->num_mem + 1; - if (need >= SCANENV_MEMNODES_SIZE) { - if (env->mem_alloc <= need) { - if (IS_NULL(env->mem_nodes_dynamic)) { - alloc = INIT_SCANENV_MEMNODES_ALLOC_SIZE; - p = (Node** )xmalloc(sizeof(Node*) * alloc); - CHECK_NULL_RETURN_MEMERR(p); - - xmemcpy(p, env->mem_nodes_static, - sizeof(Node*) * SCANENV_MEMNODES_SIZE); - } - else { - alloc = env->mem_alloc * 2; - p = (Node** )xrealloc(env->mem_nodes_dynamic, sizeof(Node*) * alloc, sizeof(Node*) * env->mem_alloc); - } - CHECK_NULL_RETURN_MEMERR(p); + *rs = 0; - for (i = env->num_mem + 1; i < alloc; i++) - p[i] = NULL_NODE; + s = xmalloc(sizeof(*s)); + if (IS_NULL(s)) return ONIGERR_MEMORY; - env->mem_nodes_dynamic = p; - env->mem_alloc = alloc; - } + v = (CalloutNameListEntry* )xmalloc(sizeof(CalloutNameListEntry) * init_size); + if (IS_NULL(v)) { + xfree(s); + return ONIGERR_MEMORY; } - env->num_mem++; - return env->num_mem; -} + s->n = 0; + s->alloc = init_size; + s->v = v; -static int -scan_env_set_mem_node(ScanEnv* env, int num, Node* node) -{ - if (env->num_mem >= num) - SCANENV_MEM_NODES(env)[num] = node; - else - return ONIGERR_PARSER_BUG; - return 0; + *rs = s; + return ONIG_NORMAL; } +static void +free_callout_func_list(CalloutNameListType* s) +{ + if (IS_NOT_NULL(s)) { + if (IS_NOT_NULL(s->v)) { + int i, j; + + for (i = 0; i < s->n; i++) { + CalloutNameListEntry* e = s->v + i; + for (j = e->arg_num - e->opt_arg_num; j < e->arg_num; j++) { + if (e->arg_types[j] == ONIG_TYPE_STRING) { + UChar* p = e->opt_defaults[j].s.start; + if (IS_NOT_NULL(p)) xfree(p); + } + } + } + xfree(s->v); + } + xfree(s); + } +} -#ifdef USE_PARSE_TREE_NODE_RECYCLE -typedef struct _FreeNode { - struct _FreeNode* next; -} FreeNode; +static int +callout_func_list_add(CalloutNameListType* s, int* rid) +{ + if (s->n >= s->alloc) { + int new_size = s->alloc * 2; + CalloutNameListEntry* nv = (CalloutNameListEntry* ) + xrealloc(s->v, sizeof(CalloutNameListEntry) * new_size, sizeof(CalloutNameListEntry)*s->alloc); + if (IS_NULL(nv)) return ONIGERR_MEMORY; -static FreeNode* FreeNodeList = (FreeNode* )NULL; -#endif + s->alloc = new_size; + s->v = nv; + } -extern void -onig_node_free(Node* node) -{ - start: - if (IS_NULL(node)) return ; + *rid = s->n; - switch (NTYPE(node)) { - case NT_STR: - if (NSTR(node)->capa != 0 && - IS_NOT_NULL(NSTR(node)->s) && NSTR(node)->s != NSTR(node)->buf) { - xfree(NSTR(node)->s); - } - break; + xmemset(&(s->v[s->n]), 0, sizeof(*(s->v))); + s->n++; + return ONIG_NORMAL; +} - case NT_LIST: - case NT_ALT: - onig_node_free(NCAR(node)); - { - Node* next_node = NCDR(node); -#ifdef USE_PARSE_TREE_NODE_RECYCLE - { - FreeNode* n = (FreeNode* )node; +typedef struct { + UChar* name; + int name_len; /* byte length */ + int id; +} CalloutNameEntry; - THREAD_ATOMIC_START; - n->next = FreeNodeList; - FreeNodeList = n; - THREAD_ATOMIC_END; - } +#ifdef USE_ST_LIBRARY +typedef st_table CalloutNameTable; #else - xfree(node); +typedef struct { + CalloutNameEntry* e; + int num; + int alloc; +} CalloutNameTable; #endif - node = next_node; - goto start; - } - break; - case NT_CCLASS: - { - CClassNode* cc = NCCLASS(node); +static CalloutNameTable* GlobalCalloutNameTable; +static int CalloutNameIDCounter; - if (IS_NCCLASS_SHARE(cc)) return ; - if (cc->mbuf) - bbuf_free(cc->mbuf); - } - break; +#ifdef USE_ST_LIBRARY - case NT_QTFR: - if (NQTFR(node)->target) - onig_node_free(NQTFR(node)->target); - break; +static int +i_free_callout_name_entry(st_callout_name_key* key, CalloutNameEntry* e, + void* arg ARG_UNUSED) +{ + xfree(e->name); + /*xfree(key->s); */ /* is same as e->name */ + xfree(key); + xfree(e); + return ST_DELETE; +} - case NT_ENCLOSE: - if (NENCLOSE(node)->target) - onig_node_free(NENCLOSE(node)->target); - break; +static int +callout_name_table_clear(CalloutNameTable* t) +{ + if (IS_NOT_NULL(t)) { + onig_st_foreach(t, i_free_callout_name_entry, 0); + } + return 0; +} - case NT_BREF: - if (IS_NOT_NULL(NBREF(node)->back_dynamic)) - xfree(NBREF(node)->back_dynamic); - break; +static int +global_callout_name_table_free(void) +{ + if (IS_NOT_NULL(GlobalCalloutNameTable)) { + int r = callout_name_table_clear(GlobalCalloutNameTable); + if (r != 0) return r; - case NT_ANCHOR: - if (NANCHOR(node)->target) - onig_node_free(NANCHOR(node)->target); - break; + onig_st_free_table(GlobalCalloutNameTable); + GlobalCalloutNameTable = 0; + CalloutNameIDCounter = 0; } -#ifdef USE_PARSE_TREE_NODE_RECYCLE - { - FreeNode* n = (FreeNode* )node; + return 0; +} + +static CalloutNameEntry* +callout_name_find(OnigEncoding enc, int is_not_single, + const UChar* name, const UChar* name_end) +{ + int r; + CalloutNameEntry* e; + CalloutNameTable* t = GlobalCalloutNameTable; - THREAD_ATOMIC_START; - n->next = FreeNodeList; - FreeNodeList = n; - THREAD_ATOMIC_END; + e = (CalloutNameEntry* )NULL; + if (IS_NOT_NULL(t)) { + r = onig_st_lookup_callout_name_table(t, enc, is_not_single, name, name_end, + (HashDataType* )((void* )(&e))); + if (r == 0) { /* not found */ + if (enc != ONIG_ENCODING_ASCII && + ONIGENC_IS_ASCII_COMPATIBLE_ENCODING(enc)) { + enc = ONIG_ENCODING_ASCII; + onig_st_lookup_callout_name_table(t, enc, is_not_single, name, name_end, + (HashDataType* )((void* )(&e))); + } + } } + return e; +} + #else - xfree(node); -#endif + +static int +callout_name_table_clear(CalloutNameTable* t) +{ + int i; + CalloutNameEntry* e; + + if (IS_NOT_NULL(t)) { + for (i = 0; i < t->num; i++) { + e = &(t->e[i]); + if (IS_NOT_NULL(e->name)) { + xfree(e->name); + e->name = NULL; + e->name_len = 0; + e->id = 0; + e->func = 0; + } + } + if (IS_NOT_NULL(t->e)) { + xfree(t->e); + t->e = NULL; + } + t->num = 0; + } + return 0; } -#ifdef USE_PARSE_TREE_NODE_RECYCLE -extern int -onig_free_node_list(void) +static int +global_callout_name_table_free(void) { - FreeNode* n; + if (IS_NOT_NULL(GlobalCalloutNameTable)) { + int r = callout_name_table_clear(GlobalCalloutNameTable); + if (r != 0) return r; - /* THREAD_ATOMIC_START; */ - while (IS_NOT_NULL(FreeNodeList)) { - n = FreeNodeList; - FreeNodeList = FreeNodeList->next; - xfree(n); + xfree(GlobalCalloutNameTable); + GlobalCalloutNameTable = 0; + CalloutNameIDCounter = 0; } - /* THREAD_ATOMIC_END; */ return 0; } -#endif -static Node* -node_new(void) +static CalloutNameEntry* +callout_name_find(UChar* name, UChar* name_end) { - Node* node; + int i, len; + CalloutNameEntry* e; + CalloutNameTable* t = Calloutnames; -#ifdef USE_PARSE_TREE_NODE_RECYCLE - THREAD_ATOMIC_START; - if (IS_NOT_NULL(FreeNodeList)) { - node = (Node* )FreeNodeList; - FreeNodeList = FreeNodeList->next; - THREAD_ATOMIC_END; - return node; + if (IS_NOT_NULL(t)) { + len = name_end - name; + for (i = 0; i < t->num; i++) { + e = &(t->e[i]); + if (len == e->name_len && onig_strncmp(name, e->name, len) == 0) + return e; + } } - THREAD_ATOMIC_END; + return (CalloutNameEntry* )NULL; +} + #endif - node = (Node* )xmalloc(sizeof(Node)); - /* xmemset(node, 0, sizeof(Node)); */ - return node; -} +/* name string must be single byte char string. */ +static int +callout_name_entry(CalloutNameEntry** rentry, OnigEncoding enc, + int is_not_single, UChar* name, UChar* name_end) +{ + int r; + CalloutNameEntry* e; + CalloutNameTable* t = GlobalCalloutNameTable; + *rentry = 0; + if (name_end - name <= 0) + return ONIGERR_INVALID_CALLOUT_NAME; -static void -initialize_cclass(CClassNode* cc) + e = callout_name_find(enc, is_not_single, name, name_end); + if (IS_NULL(e)) { +#ifdef USE_ST_LIBRARY + if (IS_NULL(t)) { + t = onig_st_init_callout_name_table_with_size(INIT_NAMES_ALLOC_NUM); + GlobalCalloutNameTable = t; + } + e = (CalloutNameEntry* )xmalloc(sizeof(CalloutNameEntry)); + CHECK_NULL_RETURN_MEMERR(e); + + e->name = onigenc_strdup(enc, name, name_end); + if (IS_NULL(e->name)) { + xfree(e); return ONIGERR_MEMORY; + } + + r = st_insert_callout_name_table(t, enc, is_not_single, + e->name, (e->name + (name_end - name)), + (HashDataType )e); + if (r < 0) return r; + +#else + + int alloc; + + if (IS_NULL(t)) { + alloc = INIT_NAMES_ALLOC_NUM; + t = (CalloutNameTable* )xmalloc(sizeof(CalloutNameTable)); + CHECK_NULL_RETURN_MEMERR(t); + t->e = NULL; + t->alloc = 0; + t->num = 0; + + t->e = (CalloutNameEntry* )xmalloc(sizeof(CalloutNameEntry) * alloc); + if (IS_NULL(t->e)) { + xfree(t); + return ONIGERR_MEMORY; + } + t->alloc = alloc; + GlobalCalloutNameTable = t; + goto clear; + } + else if (t->num == t->alloc) { + int i; + + alloc = t->alloc * 2; + t->e = (CalloutNameEntry* )xrealloc(t->e, sizeof(CalloutNameEntry) * alloc, sizeof(CalloutNameEntry)*t->alloc); + CHECK_NULL_RETURN_MEMERR(t->e); + t->alloc = alloc; + + clear: + for (i = t->num; i < t->alloc; i++) { + t->e[i].name = NULL; + t->e[i].name_len = 0; + t->e[i].id = 0; + } + } + e = &(t->e[t->num]); + t->num++; + e->name = onigenc_strdup(enc, name, name_end); + if (IS_NULL(e->name)) return ONIGERR_MEMORY; +#endif + + CalloutNameIDCounter++; + e->id = CalloutNameIDCounter; + e->name_len = (int )(name_end - name); + } + + *rentry = e; + return e->id; +} + +static int +is_allowed_callout_name(OnigEncoding enc, UChar* name, UChar* name_end) { - BITSET_CLEAR(cc->bs); - /* cc->base.flags = 0; */ - cc->flags = 0; - cc->mbuf = NULL; + UChar* p; + OnigCodePoint c; + + if (name >= name_end) return 0; + + p = name; + while (p < name_end) { + c = ONIGENC_MBC_TO_CODE(enc, p, name_end); + if (! IS_ALLOWED_CODE_IN_CALLOUT_NAME(c)) + return 0; + + if (p == name) { + if (c >= '0' && c <= '9') return 0; + } + + p += ONIGENC_MBC_ENC_LEN(enc, p); + } + + return 1; } -static Node* -node_new_cclass(void) +static int +is_allowed_callout_tag_name(OnigEncoding enc, UChar* name, UChar* name_end) { - Node* node = node_new(); - CHECK_NULL_RETURN(node); + UChar* p; + OnigCodePoint c; - SET_NTYPE(node, NT_CCLASS); - initialize_cclass(NCCLASS(node)); - return node; + if (name >= name_end) return 0; + + p = name; + while (p < name_end) { + c = ONIGENC_MBC_TO_CODE(enc, p, name_end); + if (! IS_ALLOWED_CODE_IN_CALLOUT_TAG_NAME(c)) + return 0; + + if (p == name) { + if (c >= '0' && c <= '9') return 0; + } + + p += ONIGENC_MBC_ENC_LEN(enc, p); + } + + return 1; } -static Node* -node_new_cclass_by_codepoint_range(int not, OnigCodePoint sb_out, - const OnigCodePoint ranges[]) +extern int +onig_set_callout_of_name(OnigEncoding enc, OnigCalloutType callout_type, + UChar* name, UChar* name_end, int in, + OnigCalloutFunc start_func, + OnigCalloutFunc end_func, + int arg_num, unsigned int arg_types[], + int opt_arg_num, OnigValue opt_defaults[]) { - int n, i; - CClassNode* cc; - OnigCodePoint j; + int r; + int i; + int j; + int id; + int is_not_single; + CalloutNameEntry* e; + CalloutNameListEntry* fe; - Node* node = node_new_cclass(); - CHECK_NULL_RETURN(node); + if (callout_type != ONIG_CALLOUT_TYPE_SINGLE) + return ONIGERR_INVALID_ARGUMENT; - cc = NCCLASS(node); - if (not != 0) NCCLASS_SET_NOT(cc); + if (arg_num < 0 || arg_num > ONIG_CALLOUT_MAX_ARGS_NUM) + return ONIGERR_INVALID_CALLOUT_ARG; - BITSET_CLEAR(cc->bs); - if (sb_out > 0 && IS_NOT_NULL(ranges)) { - n = ONIGENC_CODE_RANGE_NUM(ranges); - for (i = 0; i < n; i++) { - for (j = ONIGENC_CODE_RANGE_FROM(ranges, i); - j <= (OnigCodePoint )ONIGENC_CODE_RANGE_TO(ranges, i); j++) { - if (j >= sb_out) goto sb_end; + if (opt_arg_num < 0 || opt_arg_num > arg_num) + return ONIGERR_INVALID_CALLOUT_ARG; - BITSET_SET_BIT(cc->bs, j); + if (start_func == 0 && end_func == 0) + return ONIGERR_INVALID_CALLOUT_ARG; + + if ((in & ONIG_CALLOUT_IN_PROGRESS) == 0 && (in & ONIG_CALLOUT_IN_RETRACTION) == 0) + return ONIGERR_INVALID_CALLOUT_ARG; + + for (i = 0; i < arg_num; i++) { + unsigned int t = arg_types[i]; + if (t == ONIG_TYPE_VOID) + return ONIGERR_INVALID_CALLOUT_ARG; + else { + if (i >= arg_num - opt_arg_num) { + if (t != ONIG_TYPE_LONG && t != ONIG_TYPE_CHAR && t != ONIG_TYPE_STRING && + t != ONIG_TYPE_TAG) + return ONIGERR_INVALID_CALLOUT_ARG; + } + else { + if (t != ONIG_TYPE_LONG) { + t = t & ~ONIG_TYPE_LONG; + if (t != ONIG_TYPE_CHAR && t != ONIG_TYPE_STRING && t != ONIG_TYPE_TAG) + return ONIGERR_INVALID_CALLOUT_ARG; + } } } } - sb_end: - if (IS_NULL(ranges)) { - is_null: - cc->mbuf = NULL; + if (! is_allowed_callout_name(enc, name, name_end)) { + return ONIGERR_INVALID_CALLOUT_NAME; } - else { - BBuf* bbuf; - n = ONIGENC_CODE_RANGE_NUM(ranges); - if (n == 0) goto is_null; + is_not_single = (callout_type != ONIG_CALLOUT_TYPE_SINGLE); + id = callout_name_entry(&e, enc, is_not_single, name, name_end); + if (id < 0) return id; - bbuf = (BBuf* )xmalloc(sizeof(BBuf)); - CHECK_NULL_RETURN(bbuf); - bbuf->alloc = n + 1; - bbuf->used = n + 1; - bbuf->p = (UChar* )((void* )ranges); + r = ONIG_NORMAL; + if (IS_NULL(GlobalCalloutNameList)) { + r = make_callout_func_list(&GlobalCalloutNameList, 10); + if (r != ONIG_NORMAL) return r; + } - cc->mbuf = bbuf; + while (id >= GlobalCalloutNameList->n) { + int rid; + r = callout_func_list_add(GlobalCalloutNameList, &rid); + if (r != ONIG_NORMAL) return r; } - return node; -} + fe = GlobalCalloutNameList->v + id; + fe->type = callout_type; + fe->in = in; + fe->start_func = start_func; + fe->end_func = end_func; + fe->arg_num = arg_num; + fe->opt_arg_num = opt_arg_num; + fe->name = e->name; -static Node* -node_new_ctype(int type, int not) -{ - Node* node = node_new(); - CHECK_NULL_RETURN(node); + for (i = 0; i < arg_num; i++) { + fe->arg_types[i] = arg_types[i]; + } + for (i = arg_num - opt_arg_num, j = 0; i < arg_num; i++, j++) { + if (fe->arg_types[i] == ONIG_TYPE_STRING) { + OnigValue* val = opt_defaults + j; + UChar* ds = onigenc_strdup(enc, val->s.start, val->s.end); + CHECK_NULL_RETURN_MEMERR(ds); - SET_NTYPE(node, NT_CTYPE); - NCTYPE(node)->ctype = type; - NCTYPE(node)->not = not; - return node; + fe->opt_defaults[i].s.start = ds; + fe->opt_defaults[i].s.end = ds + (val->s.end - val->s.start); + } + else { + fe->opt_defaults[i] = opt_defaults[j]; + } + } + + r = id; + return r; } -static Node* -node_new_anychar(void) +static int +get_callout_name_id_by_name(OnigEncoding enc, int is_not_single, + UChar* name, UChar* name_end, int* rid) { - Node* node = node_new(); - CHECK_NULL_RETURN(node); + int r; + CalloutNameEntry* e; - SET_NTYPE(node, NT_CANY); - return node; + if (! is_allowed_callout_name(enc, name, name_end)) { + return ONIGERR_INVALID_CALLOUT_NAME; + } + + e = callout_name_find(enc, is_not_single, name, name_end); + if (IS_NULL(e)) { + return ONIGERR_UNDEFINED_CALLOUT_NAME; + } + + r = ONIG_NORMAL; + *rid = e->id; + + return r; } -static Node* -node_new_list(Node* left, Node* right) +extern OnigCalloutFunc +onig_get_callout_start_func(regex_t* reg, int callout_num) { - Node* node = node_new(); - CHECK_NULL_RETURN(node); + /* If used for callouts of contents, return 0. */ + CalloutListEntry* e; - SET_NTYPE(node, NT_LIST); - NCAR(node) = left; - NCDR(node) = right; - return node; + e = onig_reg_callout_list_at(reg, callout_num); + return e->start_func; } -extern Node* -onig_node_new_list(Node* left, Node* right) +extern const UChar* +onig_get_callout_tag_start(regex_t* reg, int callout_num) { - return node_new_list(left, right); + CalloutListEntry* e = onig_reg_callout_list_at(reg, callout_num); + return e->tag_start; } -extern Node* -onig_node_list_add(Node* list, Node* x) +extern const UChar* +onig_get_callout_tag_end(regex_t* reg, int callout_num) { - Node *n; - - n = onig_node_new_list(x, NULL); - if (IS_NULL(n)) return NULL_NODE; + CalloutListEntry* e = onig_reg_callout_list_at(reg, callout_num); + return e->tag_end; +} - if (IS_NOT_NULL(list)) { - while (IS_NOT_NULL(NCDR(list))) - list = NCDR(list); - NCDR(list) = n; - } +extern OnigCalloutType +onig_get_callout_type_by_name_id(int name_id) +{ + if (name_id < 0 || name_id >= GlobalCalloutNameList->n) + return 0; - return n; + return GlobalCalloutNameList->v[name_id].type; } -extern Node* -onig_node_new_alt(Node* left, Node* right) +extern OnigCalloutFunc +onig_get_callout_start_func_by_name_id(int name_id) { - Node* node = node_new(); - CHECK_NULL_RETURN(node); + if (name_id < 0 || name_id >= GlobalCalloutNameList->n) + return 0; - SET_NTYPE(node, NT_ALT); - NCAR(node) = left; - NCDR(node) = right; - return node; + return GlobalCalloutNameList->v[name_id].start_func; } -extern Node* -onig_node_new_anchor(int type) +extern OnigCalloutFunc +onig_get_callout_end_func_by_name_id(int name_id) { - Node* node = node_new(); - CHECK_NULL_RETURN(node); + if (name_id < 0 || name_id >= GlobalCalloutNameList->n) + return 0; - SET_NTYPE(node, NT_ANCHOR); - NANCHOR(node)->type = type; - NANCHOR(node)->target = NULL; - NANCHOR(node)->char_len = -1; - return node; + return GlobalCalloutNameList->v[name_id].end_func; } -static Node* -node_new_backref(int back_num, int* backrefs, int by_name, -#ifdef USE_BACKREF_WITH_LEVEL - int exist_level, int nest_level, -#endif - ScanEnv* env) +extern int +onig_get_callout_in_by_name_id(int name_id) { - int i; - Node* node = node_new(); + if (name_id < 0 || name_id >= GlobalCalloutNameList->n) + return 0; - CHECK_NULL_RETURN(node); + return GlobalCalloutNameList->v[name_id].in; +} - SET_NTYPE(node, NT_BREF); - NBREF(node)->state = 0; - NBREF(node)->back_num = back_num; - NBREF(node)->back_dynamic = (int* )NULL; - if (by_name != 0) - NBREF(node)->state |= NST_NAME_REF; +static int +get_callout_arg_num_by_name_id(int name_id) +{ + return GlobalCalloutNameList->v[name_id].arg_num; +} -#ifdef USE_BACKREF_WITH_LEVEL - if (exist_level != 0) { - NBREF(node)->state |= NST_NEST_LEVEL; - NBREF(node)->nest_level = nest_level; - } -#endif - - for (i = 0; i < back_num; i++) { - if (backrefs[i] <= env->num_mem && - IS_NULL(SCANENV_MEM_NODES(env)[backrefs[i]])) { - NBREF(node)->state |= NST_RECURSION; /* /...(\1).../ */ - break; - } - } - - if (back_num <= NODE_BACKREFS_SIZE) { - for (i = 0; i < back_num; i++) - NBREF(node)->back_static[i] = backrefs[i]; - } - else { - int* p = (int* )xmalloc(sizeof(int) * back_num); - if (IS_NULL(p)) { - onig_node_free(node); - return NULL; - } - NBREF(node)->back_dynamic = p; - for (i = 0; i < back_num; i++) - p[i] = backrefs[i]; - } - return node; -} - -#ifdef USE_SUBEXP_CALL -static Node* -node_new_call(UChar* name, UChar* name_end, int gnum) +static int +get_callout_opt_arg_num_by_name_id(int name_id) { - Node* node = node_new(); - CHECK_NULL_RETURN(node); - - SET_NTYPE(node, NT_CALL); - NCALL(node)->state = 0; - NCALL(node)->target = NULL_NODE; - NCALL(node)->name = name; - NCALL(node)->name_end = name_end; - NCALL(node)->group_num = gnum; /* call by number if gnum != 0 */ - return node; + return GlobalCalloutNameList->v[name_id].opt_arg_num; } -#endif -static Node* -node_new_quantifier(int lower, int upper, int by_number) +static unsigned int +get_callout_arg_type_by_name_id(int name_id, int index) { - Node* node = node_new(); - CHECK_NULL_RETURN(node); - - SET_NTYPE(node, NT_QTFR); - NQTFR(node)->state = 0; - NQTFR(node)->target = NULL; - NQTFR(node)->lower = lower; - NQTFR(node)->upper = upper; - NQTFR(node)->greedy = 1; - NQTFR(node)->target_empty_info = NQ_TARGET_ISNOT_EMPTY; - NQTFR(node)->head_exact = NULL_NODE; - NQTFR(node)->next_head_exact = NULL_NODE; - NQTFR(node)->is_refered = 0; - if (by_number != 0) - NQTFR(node)->state |= NST_BY_NUMBER; - -#ifdef USE_COMBINATION_EXPLOSION_CHECK - NQTFR(node)->comb_exp_check_num = 0; -#endif - - return node; + return GlobalCalloutNameList->v[name_id].arg_types[index]; } -static Node* -node_new_enclose(int type) +static OnigValue +get_callout_opt_default_by_name_id(int name_id, int index) { - Node* node = node_new(); - CHECK_NULL_RETURN(node); - - SET_NTYPE(node, NT_ENCLOSE); - NENCLOSE(node)->type = type; - NENCLOSE(node)->state = 0; - NENCLOSE(node)->regnum = 0; - NENCLOSE(node)->option = 0; - NENCLOSE(node)->target = NULL; - NENCLOSE(node)->call_addr = -1; - NENCLOSE(node)->opt_count = 0; - return node; + return GlobalCalloutNameList->v[name_id].opt_defaults[index]; } -extern Node* -onig_node_new_enclose(int type) +extern UChar* +onig_get_callout_name_by_name_id(int name_id) { - return node_new_enclose(type); + if (name_id < 0 || name_id >= GlobalCalloutNameList->n) + return 0; + + return GlobalCalloutNameList->v[name_id].name; } -static Node* -node_new_enclose_memory(OnigOptionType option, int is_named) +extern int +onig_global_callout_names_free(void) { - Node* node = node_new_enclose(ENCLOSE_MEMORY); - CHECK_NULL_RETURN(node); - if (is_named != 0) - SET_ENCLOSE_STATUS(node, NST_NAMED_GROUP); + free_callout_func_list(GlobalCalloutNameList); + GlobalCalloutNameList = 0; -#ifdef USE_SUBEXP_CALL - NENCLOSE(node)->option = option; -#endif - return node; + global_callout_name_table_free(); + return ONIG_NORMAL; } -static Node* -node_new_option(OnigOptionType option) -{ - Node* node = node_new_enclose(ENCLOSE_OPTION); - CHECK_NULL_RETURN(node); - NENCLOSE(node)->option = option; - return node; -} -extern int -onig_node_str_cat(Node* node, const UChar* s, const UChar* end) -{ - int addlen = (int)(end - s); +typedef st_table CalloutTagTable; +typedef intptr_t CalloutTagVal; - if (addlen > 0) { - int len = (int)(NSTR(node)->end - NSTR(node)->s); +#define CALLOUT_TAG_LIST_FLAG_TAG_EXIST (1<<0) - if (NSTR(node)->capa > 0 || (len + addlen > NODE_STR_BUF_SIZE - 1)) { - UChar* p; - int capa = len + addlen + NODE_STR_MARGIN; +static int +i_callout_callout_list_set(UChar* key, CalloutTagVal e, void* arg) +{ + int num; + RegexExt* ext = (RegexExt* )arg; - if (capa <= NSTR(node)->capa) { - onig_strcpy(NSTR(node)->s + len, s, end); - } - else { - if (NSTR(node)->s == NSTR(node)->buf) - p = strcat_capa_from_static(NSTR(node)->s, NSTR(node)->end, - s, end, capa); - else - p = strcat_capa(NSTR(node)->s, NSTR(node)->end, s, end, capa, NSTR(node)->capa); + num = (int )e - 1; + ext->callout_list[num].flag |= CALLOUT_TAG_LIST_FLAG_TAG_EXIST; + return ST_CONTINUE; +} - CHECK_NULL_RETURN_MEMERR(p); - NSTR(node)->s = p; - NSTR(node)->capa = capa; +static int +setup_ext_callout_list_values(regex_t* reg) +{ + int i, j; + RegexExt* ext; + + ext = REG_EXTP(reg); + if (IS_NOT_NULL(ext->tag_table)) { + onig_st_foreach((CalloutTagTable *)ext->tag_table, i_callout_callout_list_set, + (st_data_t )ext); + } + + for (i = 0; i < ext->callout_num; i++) { + CalloutListEntry* e = ext->callout_list + i; + if (e->of == ONIG_CALLOUT_OF_NAME) { + for (j = 0; j < e->u.arg.num; j++) { + if (e->u.arg.types[j] == ONIG_TYPE_TAG) { + UChar* start; + UChar* end; + int num; + start = e->u.arg.vals[j].s.start; + end = e->u.arg.vals[j].s.end; + num = onig_get_callout_num_by_tag(reg, start, end); + if (num < 0) return num; + e->u.arg.vals[j].tag = num; + } } } - else { - onig_strcpy(NSTR(node)->s + len, s, end); - } - NSTR(node)->end = NSTR(node)->s + len + addlen; } - return 0; + return ONIG_NORMAL; } extern int -onig_node_str_set(Node* node, const UChar* s, const UChar* end) +onig_callout_tag_is_exist_at_callout_num(regex_t* reg, int callout_num) { - onig_node_str_clear(node); - return onig_node_str_cat(node, s, end); -} + RegexExt* ext = REG_EXTP(reg); -static int -node_str_cat_char(Node* node, UChar c) -{ - UChar s[1]; + if (IS_NULL(ext) || IS_NULL(ext->callout_list)) return 0; + if (callout_num > ext->callout_num) return 0; - s[0] = c; - return onig_node_str_cat(node, s, s + 1); + return (ext->callout_list[callout_num].flag & + CALLOUT_TAG_LIST_FLAG_TAG_EXIST) != 0 ? 1 : 0; } -extern void -onig_node_conv_to_str_node(Node* node, int flag) +static int +i_free_callout_tag_entry(UChar* key, CalloutTagVal e, void* arg ARG_UNUSED) { - SET_NTYPE(node, NT_STR); - NSTR(node)->flag = flag; - NSTR(node)->capa = 0; - NSTR(node)->s = NSTR(node)->buf; - NSTR(node)->end = NSTR(node)->buf; + xfree(key); + return ST_DELETE; } -extern void -onig_node_str_clear(Node* node) +static int +callout_tag_table_clear(CalloutTagTable* t) { - if (NSTR(node)->capa != 0 && - IS_NOT_NULL(NSTR(node)->s) && NSTR(node)->s != NSTR(node)->buf) { - xfree(NSTR(node)->s); + if (IS_NOT_NULL(t)) { + onig_st_foreach(t, i_free_callout_tag_entry, 0); } - - NSTR(node)->capa = 0; - NSTR(node)->flag = 0; - NSTR(node)->s = NSTR(node)->buf; - NSTR(node)->end = NSTR(node)->buf; + return 0; } -static Node* -node_new_str(const UChar* s, const UChar* end) +extern int +onig_callout_tag_table_free(void* table) { - Node* node = node_new(); - CHECK_NULL_RETURN(node); + CalloutTagTable* t = (CalloutTagTable* )table; - SET_NTYPE(node, NT_STR); - NSTR(node)->capa = 0; - NSTR(node)->flag = 0; - NSTR(node)->s = NSTR(node)->buf; - NSTR(node)->end = NSTR(node)->buf; - if (onig_node_str_cat(node, s, end)) { - onig_node_free(node); - return NULL; - } - return node; -} + if (IS_NOT_NULL(t)) { + int r = callout_tag_table_clear(t); + if (r != 0) return r; -extern Node* -onig_node_new_str(const UChar* s, const UChar* end) -{ - return node_new_str(s, end); -} + onig_st_free_table(t); + } -static Node* -node_new_str_raw(UChar* s, UChar* end) -{ - Node* node = node_new_str(s, end); - CHECK_NULL_RETURN(node); - NSTRING_SET_RAW(node); - return node; + return 0; } -static Node* -node_new_empty(void) +extern int +onig_get_callout_num_by_tag(regex_t* reg, + const UChar* tag, const UChar* tag_end) { - return node_new_str(NULL, NULL); -} + int r; + RegexExt* ext; + CalloutTagVal e; -static Node* -node_new_str_raw_char(UChar c) -{ - UChar p[1]; + ext = REG_EXTP(reg); + if (IS_NULL(ext) || IS_NULL(ext->tag_table)) + return ONIGERR_INVALID_CALLOUT_TAG_NAME; - p[0] = c; - return node_new_str_raw(p, p + 1); + r = onig_st_lookup_strend(ext->tag_table, tag, tag_end, + (HashDataType* )((void* )(&e))); + if (r == 0) return ONIGERR_INVALID_CALLOUT_TAG_NAME; + return (int )e; } -static Node* -str_node_split_last_char(StrNode* sn, OnigEncoding enc) +static CalloutTagVal +callout_tag_find(CalloutTagTable* t, const UChar* name, const UChar* name_end) { - const UChar *p; - Node* n = NULL_NODE; + CalloutTagVal e; - if (sn->end > sn->s) { - p = onigenc_get_prev_char_head(enc, sn->s, sn->end); - if (p && p > sn->s) { /* can be splitted. */ - n = node_new_str(p, sn->end); - CHECK_NULL_RETURN(n); - if ((sn->flag & NSTR_RAW) != 0) - NSTRING_SET_RAW(n); - sn->end = (UChar* )p; - } + e = -1; + if (IS_NOT_NULL(t)) { + onig_st_lookup_strend(t, name, name_end, (HashDataType* )((void* )(&e))); } - return n; + return e; } static int -str_node_can_be_split(StrNode* sn, OnigEncoding enc) +callout_tag_table_new(CalloutTagTable** rt) { - if (sn->end > sn->s) { - return ((enclen(enc, sn->s) < sn->end - sn->s) ? 1 : 0); - } - return 0; + CalloutTagTable* t; + + *rt = 0; + t = onig_st_init_strend_table_with_size(INIT_TAG_NAMES_ALLOC_NUM); + CHECK_NULL_RETURN_MEMERR(t); + + *rt = t; + return ONIG_NORMAL; } -#ifdef USE_PAD_TO_SHORT_BYTE_CHAR static int -node_str_head_pad(StrNode* sn, int num, UChar val) +callout_tag_entry_raw(CalloutTagTable* t, UChar* name, UChar* name_end, + CalloutTagVal entry_val) { - UChar buf[NODE_STR_BUF_SIZE]; - int i, len; - - len = sn->end - sn->s; - onig_strcpy(buf, sn->s, sn->end); - onig_strcpy(&(sn->s[num]), buf, buf + len); - sn->end += num; + int r; + CalloutTagVal val; - for (i = 0; i < num; i++) { - sn->s[i] = val; - } -} -#endif + if (name_end - name <= 0) + return ONIGERR_INVALID_CALLOUT_TAG_NAME; -extern int -onig_scan_unsigned_number(UChar** src, const UChar* end, OnigEncoding enc) -{ - unsigned int num, val; - OnigCodePoint c; - UChar* p = *src; - PFETCH_READY; + val = callout_tag_find(t, name, name_end); + if (val >= 0) + return ONIGERR_MULTIPLEX_DEFINED_NAME; - num = 0; - while (!PEND) { - PFETCH(c); - if (ONIGENC_IS_CODE_DIGIT(enc, c)) { - val = (unsigned int )DIGITVAL(c); - if ((INT_MAX_LIMIT - val) / 10UL < num) - return -1; /* overflow */ + r = onig_st_insert_strend(t, name, name_end, (HashDataType )entry_val); + if (r < 0) return r; - num = num * 10 + val; - } - else { - PUNFETCH; - break; - } - } - *src = p; - return num; + return ONIG_NORMAL; } static int -scan_unsigned_hexadecimal_number(UChar** src, UChar* end, int maxlen, - OnigEncoding enc) +ext_ensure_tag_table(regex_t* reg) { - OnigCodePoint c; - unsigned int num, val; - UChar* p = *src; - PFETCH_READY; + int r; + RegexExt* ext; + CalloutTagTable* t; - num = 0; - while (!PEND && maxlen-- != 0) { - PFETCH(c); - if (ONIGENC_IS_CODE_XDIGIT(enc, c)) { - val = (unsigned int )XDIGITVAL(enc,c); - if ((INT_MAX_LIMIT - val) / 16UL < num) - return -1; /* overflow */ + ext = onig_get_regex_ext(reg); + CHECK_NULL_RETURN_MEMERR(ext); - num = (num << 4) + XDIGITVAL(enc,c); - } - else { - PUNFETCH; - break; - } + if (IS_NULL(ext->tag_table)) { + r = callout_tag_table_new(&t); + if (r != ONIG_NORMAL) return r; + + ext->tag_table = t; } - *src = p; - return num; + + return ONIG_NORMAL; } static int -scan_unsigned_octal_number(UChar** src, UChar* end, int maxlen, - OnigEncoding enc) +callout_tag_entry(regex_t* reg, UChar* name, UChar* name_end, + CalloutTagVal entry_val) { - OnigCodePoint c; - unsigned int num, val; - UChar* p = *src; - PFETCH_READY; + int r; + RegexExt* ext; + CalloutListEntry* e; - num = 0; - while (!PEND && maxlen-- != 0) { - PFETCH(c); - if (ONIGENC_IS_CODE_DIGIT(enc, c) && c < '8') { - val = ODIGITVAL(c); - if ((INT_MAX_LIMIT - val) / 8UL < num) - return -1; /* overflow */ + r = ext_ensure_tag_table(reg); + if (r != ONIG_NORMAL) return r; - num = (num << 3) + val; - } - else { - PUNFETCH; - break; - } - } - *src = p; - return num; -} + ext = onig_get_regex_ext(reg); + r = callout_tag_entry_raw(ext->tag_table, name, name_end, entry_val); + e = onig_reg_callout_list_at(reg, (int )entry_val); + e->tag_start = name; + e->tag_end = name_end; -#define BBUF_WRITE_CODE_POINT(bbuf,pos,code) \ - BBUF_WRITE(bbuf, pos, &(code), SIZE_CODE_POINT) + return r; +} -/* data format: - [n][from-1][to-1][from-2][to-2] ... [from-n][to-n] - (all data size is OnigCodePoint) - */ -static int -new_code_range(BBuf** pbuf) -{ -#define INIT_MULTI_BYTE_RANGE_SIZE (SIZE_CODE_POINT * 5) - int r; - OnigCodePoint n; - BBuf* bbuf; +#endif /* USE_CALLOUT */ - bbuf = *pbuf = (BBuf* )xmalloc(sizeof(BBuf)); - CHECK_NULL_RETURN_MEMERR(*pbuf); - r = BBUF_INIT(*pbuf, INIT_MULTI_BYTE_RANGE_SIZE); - if (r) return r; - n = 0; - BBUF_WRITE_CODE_POINT(bbuf, 0, n); - return 0; -} +#define INIT_SCANENV_MEMENV_ALLOC_SIZE 16 -static int -add_code_range_to_buf(BBuf** pbuf, OnigCodePoint from, OnigCodePoint to) +static void +scan_env_clear(ScanEnv* env) { - int r, inc_n, pos; - int low, high, bound, x; - OnigCodePoint n, *data; - BBuf* bbuf; + MEM_STATUS_CLEAR(env->capture_history); + MEM_STATUS_CLEAR(env->bt_mem_start); + MEM_STATUS_CLEAR(env->bt_mem_end); + MEM_STATUS_CLEAR(env->backrefed_mem); + env->error = (UChar* )NULL; + env->error_end = (UChar* )NULL; + env->num_call = 0; - if (from > to) { - n = from; from = to; to = n; - } +#ifdef USE_CALL + env->unset_addr_list = NULL; + env->has_call_zero = 0; +#endif - if (IS_NULL(*pbuf)) { - r = new_code_range(pbuf); - if (r) return r; - bbuf = *pbuf; - n = 0; - } - else { - bbuf = *pbuf; - GET_CODE_POINT(n, bbuf->p); - } - data = (OnigCodePoint* )(bbuf->p); - data++; + env->num_mem = 0; + env->num_named = 0; + env->mem_alloc = 0; + env->mem_env_dynamic = (MemEnv* )NULL; - for (low = 0, bound = n; low < bound; ) { - x = (low + bound) >> 1; - if (from > data[x*2 + 1]) - low = x + 1; - else - bound = x; - } + xmemset(env->mem_env_static, 0, sizeof(env->mem_env_static)); - for (high = low, bound = n; high < bound; ) { - x = (high + bound) >> 1; - if (to >= data[x*2] - 1) - high = x + 1; - else - bound = x; - } + env->parse_depth = 0; + env->keep_num = 0; + env->save_num = 0; + env->save_alloc_num = 0; + env->saves = 0; +} - inc_n = low + 1 - high; - if (n + inc_n > ONIG_MAX_MULTI_BYTE_RANGES_NUM) - return ONIGERR_TOO_MANY_MULTI_BYTE_RANGES; +static int +scan_env_add_mem_entry(ScanEnv* env) +{ + int i, need, alloc; + MemEnv* p; - if (inc_n != 1) { - if (from > data[low*2]) - from = data[low*2]; - if (to < data[(high - 1)*2 + 1]) - to = data[(high - 1)*2 + 1]; - } + need = env->num_mem + 1; + if (need > MaxCaptureNum && MaxCaptureNum != 0) + return ONIGERR_TOO_MANY_CAPTURES; - if (inc_n != 0 && (OnigCodePoint )high < n) { - int from_pos = SIZE_CODE_POINT * (1 + high * 2); - int to_pos = SIZE_CODE_POINT * (1 + (low + 1) * 2); - int size = (n - high) * 2 * SIZE_CODE_POINT; + if (need >= SCANENV_MEMENV_SIZE) { + if (env->mem_alloc <= need) { + if (IS_NULL(env->mem_env_dynamic)) { + alloc = INIT_SCANENV_MEMENV_ALLOC_SIZE; + p = (MemEnv* )xmalloc(sizeof(MemEnv) * alloc); + CHECK_NULL_RETURN_MEMERR(p); + xmemcpy(p, env->mem_env_static, sizeof(env->mem_env_static)); + } + else { + alloc = env->mem_alloc * 2; + p = (MemEnv* )xrealloc(env->mem_env_dynamic, sizeof(MemEnv) * alloc, sizeof(MemEnv)*env->mem_alloc); + CHECK_NULL_RETURN_MEMERR(p); + } - if (inc_n > 0) { - BBUF_MOVE_RIGHT(bbuf, from_pos, to_pos, size); - } - else { - BBUF_MOVE_LEFT_REDUCE(bbuf, from_pos, to_pos); + for (i = env->num_mem + 1; i < alloc; i++) { + p[i].node = NULL_NODE; +#if 0 + p[i].in = 0; + p[i].recursion = 0; +#endif + } + + env->mem_env_dynamic = p; + env->mem_alloc = alloc; } } - pos = SIZE_CODE_POINT * (1 + low * 2); - BBUF_ENSURE_SIZE(bbuf, pos + SIZE_CODE_POINT * 2); - BBUF_WRITE_CODE_POINT(bbuf, pos, from); - BBUF_WRITE_CODE_POINT(bbuf, pos + SIZE_CODE_POINT, to); - n += inc_n; - BBUF_WRITE_CODE_POINT(bbuf, 0, n); - - return 0; + env->num_mem++; + return env->num_mem; } static int -add_code_range(BBuf** pbuf, ScanEnv* env, OnigCodePoint from, OnigCodePoint to) +scan_env_set_mem_node(ScanEnv* env, int num, Node* node) { - if (from > to) { - if (IS_SYNTAX_BV(env->syntax, ONIG_SYN_ALLOW_EMPTY_RANGE_IN_CC)) - return 0; - else - return ONIGERR_EMPTY_RANGE_IN_CHAR_CLASS; - } - - return add_code_range_to_buf(pbuf, from, to); + if (env->num_mem >= num) + SCANENV_MEMENV(env)[num].node = node; + else + return ONIGERR_PARSER_BUG; + return 0; } -static int -not_code_range_buf(OnigEncoding enc, BBuf* bbuf, BBuf** pbuf) +extern void +onig_node_free(Node* node) { - int r, i, n; - OnigCodePoint pre, from, *data, to = 0; + start: + if (IS_NULL(node)) return ; - *pbuf = (BBuf* )NULL; - if (IS_NULL(bbuf)) { - set_all: - return SET_ALL_MULTI_BYTE_RANGE(enc, pbuf); - } +#ifdef DEBUG_NODE_FREE + fprintf(stderr, "onig_node_free: %p\n", node); +#endif - data = (OnigCodePoint* )(bbuf->p); - GET_CODE_POINT(n, data); - data++; - if (n <= 0) goto set_all; + switch (NODE_TYPE(node)) { + case NODE_STRING: + if (STR_(node)->capa != 0 && + IS_NOT_NULL(STR_(node)->s) && STR_(node)->s != STR_(node)->buf) { + xfree(STR_(node)->s); + } + break; - r = 0; - pre = MBCODE_START_POS(enc); - for (i = 0; i < n; i++) { - from = data[i*2]; - to = data[i*2+1]; - if (pre <= from - 1) { - r = add_code_range_to_buf(pbuf, pre, from - 1); - if (r != 0) return r; + case NODE_LIST: + case NODE_ALT: + onig_node_free(NODE_CAR(node)); + { + Node* next_node = NODE_CDR(node); + + xfree(node); + node = next_node; + goto start; } - if (to == ~((OnigCodePoint )0)) break; - pre = to + 1; - } - if (to < ~((OnigCodePoint )0)) { - r = add_code_range_to_buf(pbuf, to + 1, ~((OnigCodePoint )0)); - } - return r; -} + break; -#define SWAP_BBUF_NOT(bbuf1, not1, bbuf2, not2) do {\ - BBuf *tbuf; \ - int tnot; \ - tnot = not1; not1 = not2; not2 = tnot; \ - tbuf = bbuf1; bbuf1 = bbuf2; bbuf2 = tbuf; \ -} while (0) + case NODE_CCLASS: + { + CClassNode* cc = CCLASS_(node); -static int -or_code_range_buf(OnigEncoding enc, BBuf* bbuf1, int not1, - BBuf* bbuf2, int not2, BBuf** pbuf) -{ - int r; - OnigCodePoint i, n1, *data1; - OnigCodePoint from, to; + if (cc->mbuf) + bbuf_free(cc->mbuf); + } + break; - *pbuf = (BBuf* )NULL; - if (IS_NULL(bbuf1) && IS_NULL(bbuf2)) { - if (not1 != 0 || not2 != 0) - return SET_ALL_MULTI_BYTE_RANGE(enc, pbuf); - return 0; - } + case NODE_BACKREF: + if (IS_NOT_NULL(BACKREF_(node)->back_dynamic)) + xfree(BACKREF_(node)->back_dynamic); + break; - r = 0; - if (IS_NULL(bbuf2)) - SWAP_BBUF_NOT(bbuf1, not1, bbuf2, not2); + case NODE_ENCLOSURE: + if (NODE_BODY(node)) + onig_node_free(NODE_BODY(node)); - if (IS_NULL(bbuf1)) { - if (not1 != 0) { - return SET_ALL_MULTI_BYTE_RANGE(enc, pbuf); - } - else { - if (not2 == 0) { - return bbuf_clone(pbuf, bbuf2); - } - else { - return not_code_range_buf(enc, bbuf2, pbuf); + { + EnclosureNode* en = ENCLOSURE_(node); + if (en->type == ENCLOSURE_IF_ELSE) { + onig_node_free(en->te.Then); + onig_node_free(en->te.Else); } } - } - - if (not1 != 0) - SWAP_BBUF_NOT(bbuf1, not1, bbuf2, not2); + break; - data1 = (OnigCodePoint* )(bbuf1->p); - GET_CODE_POINT(n1, data1); - data1++; + case NODE_QUANT: + case NODE_ANCHOR: + if (NODE_BODY(node)) + onig_node_free(NODE_BODY(node)); + break; - if (not2 == 0 && not1 == 0) { /* 1 OR 2 */ - r = bbuf_clone(pbuf, bbuf2); - } - else if (not1 == 0) { /* 1 OR (not 2) */ - r = not_code_range_buf(enc, bbuf2, pbuf); + case NODE_CTYPE: + case NODE_CALL: + case NODE_GIMMICK: + break; } - if (r != 0) return r; - for (i = 0; i < n1; i++) { - from = data1[i*2]; - to = data1[i*2+1]; - r = add_code_range_to_buf(pbuf, from, to); - if (r != 0) return r; - } - return 0; + xfree(node); } -static int -and_code_range1(BBuf** pbuf, OnigCodePoint from1, OnigCodePoint to1, - OnigCodePoint* data, int n) +static void +cons_node_free_alone(Node* node) { - int i, r; - OnigCodePoint from2, to2; - - for (i = 0; i < n; i++) { - from2 = data[i*2]; - to2 = data[i*2+1]; - if (from2 < from1) { - if (to2 < from1) continue; - else { - from1 = to2 + 1; - } - } - else if (from2 <= to1) { - if (to2 < to1) { - if (from1 <= from2 - 1) { - r = add_code_range_to_buf(pbuf, from1, from2-1); - if (r != 0) return r; - } - from1 = to2 + 1; - } - else { - to1 = from2 - 1; - } - } - else { - from1 = from2; - } - if (from1 > to1) break; - } - if (from1 <= to1) { - r = add_code_range_to_buf(pbuf, from1, to1); - if (r != 0) return r; - } - return 0; + NODE_CAR(node) = 0; + NODE_CDR(node) = 0; + onig_node_free(node); } -static int -and_code_range_buf(BBuf* bbuf1, int not1, BBuf* bbuf2, int not2, BBuf** pbuf) +static Node* +node_new(void) { - int r; - OnigCodePoint i, j, n1, n2, *data1, *data2; - OnigCodePoint from, to, from1, to1, from2, to2; + Node* node; - *pbuf = (BBuf* )NULL; - if (IS_NULL(bbuf1)) { - if (not1 != 0 && IS_NOT_NULL(bbuf2)) /* not1 != 0 -> not2 == 0 */ - return bbuf_clone(pbuf, bbuf2); - return 0; - } - else if (IS_NULL(bbuf2)) { - if (not2 != 0) - return bbuf_clone(pbuf, bbuf1); - return 0; - } + node = (Node* )xmalloc(sizeof(Node)); + xmemset(node, 0, sizeof(*node)); - if (not1 != 0) - SWAP_BBUF_NOT(bbuf1, not1, bbuf2, not2); +#ifdef DEBUG_NODE_FREE + fprintf(stderr, "node_new: %p\n", node); +#endif + return node; +} - data1 = (OnigCodePoint* )(bbuf1->p); - data2 = (OnigCodePoint* )(bbuf2->p); - GET_CODE_POINT(n1, data1); - GET_CODE_POINT(n2, data2); - data1++; - data2++; - if (not2 == 0 && not1 == 0) { /* 1 AND 2 */ - for (i = 0; i < n1; i++) { - from1 = data1[i*2]; - to1 = data1[i*2+1]; - for (j = 0; j < n2; j++) { - from2 = data2[j*2]; - to2 = data2[j*2+1]; - if (from2 > to1) break; - if (to2 < from1) continue; - from = MAX(from1, from2); - to = MIN(to1, to2); - r = add_code_range_to_buf(pbuf, from, to); - if (r != 0) return r; - } - } - } - else if (not1 == 0) { /* 1 AND (not 2) */ - for (i = 0; i < n1; i++) { - from1 = data1[i*2]; - to1 = data1[i*2+1]; +static void +initialize_cclass(CClassNode* cc) +{ + BITSET_CLEAR(cc->bs); + cc->flags = 0; + cc->mbuf = NULL; +} + +static Node* +node_new_cclass(void) +{ + Node* node = node_new(); + CHECK_NULL_RETURN(node); + + NODE_SET_TYPE(node, NODE_CCLASS); + initialize_cclass(CCLASS_(node)); + return node; +} + +static Node* +node_new_ctype(int type, int not, OnigOptionType options) +{ + Node* node = node_new(); + CHECK_NULL_RETURN(node); + + 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, 0, ONIG_OPTION_NONE); + return node; +} + +static Node* +node_new_anychar_with_fixed_option(OnigOptionType option) +{ + CtypeNode* ct; + Node* node; + + node = node_new_anychar(); + ct = CTYPE_(node); + ct->options = option; + NODE_STATUS_ADD(node, FIXED_OPTION); + return node; +} + +static int +node_new_no_newline(Node** node, ScanEnv* env) +{ + Node* n; + + n = node_new_anychar_with_fixed_option(ONIG_OPTION_NONE); + CHECK_NULL_RETURN_MEMERR(n); + *node = n; + return 0; +} + +static int +node_new_true_anychar(Node** node, ScanEnv* env) +{ + Node* n; + + n = node_new_anychar_with_fixed_option(ONIG_OPTION_MULTILINE); + CHECK_NULL_RETURN_MEMERR(n); + *node = n; + return 0; +} + +static Node* +node_new_list(Node* left, Node* right) +{ + Node* node = node_new(); + CHECK_NULL_RETURN(node); + + NODE_SET_TYPE(node, NODE_LIST); + NODE_CAR(node) = left; + NODE_CDR(node) = right; + return node; +} + +extern Node* +onig_node_new_list(Node* left, Node* right) +{ + return node_new_list(left, right); +} + +extern Node* +onig_node_list_add(Node* list, Node* x) +{ + Node *n; + + n = onig_node_new_list(x, NULL); + if (IS_NULL(n)) return NULL_NODE; + + if (IS_NOT_NULL(list)) { + while (IS_NOT_NULL(NODE_CDR(list))) + list = NODE_CDR(list); + + NODE_CDR(list) = n; + } + + return n; +} + +extern Node* +onig_node_new_alt(Node* left, Node* right) +{ + Node* node = node_new(); + CHECK_NULL_RETURN(node); + + NODE_SET_TYPE(node, NODE_ALT); + NODE_CAR(node) = left; + NODE_CDR(node) = right; + return node; +} + +static Node* +make_list_or_alt(NodeType type, int n, Node* ns[]) +{ + Node* r; + + if (n <= 0) return NULL_NODE; + + if (n == 1) { + r = node_new(); + CHECK_NULL_RETURN(r); + NODE_SET_TYPE(r, type); + NODE_CAR(r) = ns[0]; + NODE_CDR(r) = NULL_NODE; + } + else { + Node* right; + + r = node_new(); + CHECK_NULL_RETURN(r); + + right = make_list_or_alt(type, n - 1, ns + 1); + if (IS_NULL(right)) { + onig_node_free(r); + return NULL_NODE; + } + + NODE_SET_TYPE(r, type); + NODE_CAR(r) = ns[0]; + NODE_CDR(r) = right; + } + + return r; +} + +static Node* +make_list(int n, Node* ns[]) +{ + return make_list_or_alt(NODE_LIST, n, ns); +} + +static Node* +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) +{ + 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)->ascii_mode = ascii_mode; + return node; +} + +static Node* +node_new_backref(int back_num, int* backrefs, int by_name, +#ifdef USE_BACKREF_WITH_LEVEL + int exist_level, int nest_level, +#endif + ScanEnv* env) +{ + int i; + Node* node = node_new(); + + CHECK_NULL_RETURN(node); + + NODE_SET_TYPE(node, NODE_BACKREF); + BACKREF_(node)->back_num = back_num; + BACKREF_(node)->back_dynamic = (int* )NULL; + if (by_name != 0) + NODE_STATUS_ADD(node, BY_NAME); + +#ifdef USE_BACKREF_WITH_LEVEL + if (exist_level != 0) { + NODE_STATUS_ADD(node, NEST_LEVEL); + BACKREF_(node)->nest_level = nest_level; + } +#endif + + for (i = 0; i < back_num; i++) { + if (backrefs[i] <= env->num_mem && + IS_NULL(SCANENV_MEMENV(env)[backrefs[i]].node)) { + NODE_STATUS_ADD(node, RECURSION); /* /...(\1).../ */ + break; + } + } + + if (back_num <= NODE_BACKREFS_SIZE) { + for (i = 0; i < back_num; i++) + BACKREF_(node)->back_static[i] = backrefs[i]; + } + else { + int* p = (int* )xmalloc(sizeof(int) * back_num); + if (IS_NULL(p)) { + onig_node_free(node); + return NULL; + } + BACKREF_(node)->back_dynamic = p; + for (i = 0; i < back_num; i++) + p[i] = backrefs[i]; + } + return node; +} + +static Node* +node_new_backref_checker(int back_num, int* backrefs, int by_name, +#ifdef USE_BACKREF_WITH_LEVEL + int exist_level, int nest_level, +#endif + ScanEnv* env) +{ + Node* node; + + node = node_new_backref(back_num, backrefs, by_name, +#ifdef USE_BACKREF_WITH_LEVEL + exist_level, nest_level, +#endif + env); + CHECK_NULL_RETURN(node); + + NODE_STATUS_ADD(node, CHECKER); + return node; +} + +#ifdef USE_CALL +static Node* +node_new_call(UChar* name, UChar* name_end, int gnum, int by_number) +{ + Node* node = node_new(); + CHECK_NULL_RETURN(node); + + NODE_SET_TYPE(node, NODE_CALL); + CALL_(node)->by_number = by_number; + CALL_(node)->name = name; + CALL_(node)->name_end = name_end; + CALL_(node)->group_num = gnum; + CALL_(node)->entry_count = 1; + return node; +} +#endif + +static Node* +node_new_quantifier(int lower, int upper, int by_number) +{ + Node* node = node_new(); + CHECK_NULL_RETURN(node); + + NODE_SET_TYPE(node, NODE_QUANT); + QUANT_(node)->lower = lower; + QUANT_(node)->upper = upper; + QUANT_(node)->greedy = 1; + QUANT_(node)->body_empty_info = QUANT_BODY_IS_NOT_EMPTY; + QUANT_(node)->head_exact = NULL_NODE; + QUANT_(node)->next_head_exact = NULL_NODE; + QUANT_(node)->is_refered = 0; + if (by_number != 0) + NODE_STATUS_ADD(node, BY_NUMBER); + + return node; +} + +static Node* +node_new_enclosure(enum EnclosureType type) +{ + Node* node = node_new(); + CHECK_NULL_RETURN(node); + + NODE_SET_TYPE(node, NODE_ENCLOSURE); + ENCLOSURE_(node)->type = type; + + switch (type) { + case ENCLOSURE_MEMORY: + ENCLOSURE_(node)->m.regnum = 0; + ENCLOSURE_(node)->m.called_addr = -1; + ENCLOSURE_(node)->m.entry_count = 1; + ENCLOSURE_(node)->m.called_state = 0; + break; + + case ENCLOSURE_OPTION: + ENCLOSURE_(node)->o.options = 0; + break; + + case ENCLOSURE_STOP_BACKTRACK: + break; + + case ENCLOSURE_IF_ELSE: + ENCLOSURE_(node)->te.Then = 0; + ENCLOSURE_(node)->te.Else = 0; + break; + } + + ENCLOSURE_(node)->opt_count = 0; + return node; +} + +extern Node* +onig_node_new_enclosure(int type) +{ + return node_new_enclosure(type); +} + +static Node* +node_new_enclosure_if_else(Node* cond, Node* Then, Node* Else) +{ + Node* n; + n = node_new_enclosure(ENCLOSURE_IF_ELSE); + CHECK_NULL_RETURN(n); + + NODE_BODY(n) = cond; + ENCLOSURE_(n)->te.Then = Then; + ENCLOSURE_(n)->te.Else = Else; + return n; +} + +static Node* +node_new_memory(int is_named) +{ + Node* node = node_new_enclosure(ENCLOSURE_MEMORY); + CHECK_NULL_RETURN(node); + if (is_named != 0) + NODE_STATUS_ADD(node, NAMED_GROUP); + + return node; +} + +static Node* +node_new_option(OnigOptionType option) +{ + Node* node = node_new_enclosure(ENCLOSURE_OPTION); + CHECK_NULL_RETURN(node); + ENCLOSURE_(node)->o.options = option; + return node; +} + +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; +} + +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; + + *node = node_new(); + CHECK_NULL_RETURN_MEMERR(*node); + + NODE_SET_TYPE(*node, NODE_GIMMICK); + GIMMICK_(*node)->id = id; + GIMMICK_(*node)->type = GIMMICK_SAVE; + GIMMICK_(*node)->detail_type = (int )save_type; + + return ONIG_NORMAL; +} + +static int +node_new_update_var_gimmick(Node** node, enum UpdateVarType update_var_type, + int id, ScanEnv* env) +{ + *node = node_new(); + CHECK_NULL_RETURN_MEMERR(*node); + + NODE_SET_TYPE(*node, NODE_GIMMICK); + GIMMICK_(*node)->id = id; + GIMMICK_(*node)->type = GIMMICK_UPDATE_VAR; + GIMMICK_(*node)->detail_type = (int )update_var_type; + + return ONIG_NORMAL; +} + +static int +node_new_keep(Node** node, ScanEnv* env) +{ + int r; + + r = node_new_save_gimmick(node, SAVE_KEEP, env); + if (r != 0) return r; + + env->keep_num++; + return ONIG_NORMAL; +} + +#ifdef USE_CALLOUT + +extern void +onig_free_reg_callout_list(int n, CalloutListEntry* list) +{ + int i; + int j; + + if (IS_NULL(list)) return ; + + for (i = 0; i < n; i++) { + if (list[i].of == ONIG_CALLOUT_OF_NAME) { + for (j = 0; j < list[i].u.arg.passed_num; j++) { + if (list[i].u.arg.types[j] == ONIG_TYPE_STRING) { + if (IS_NOT_NULL(list[i].u.arg.vals[j].s.start)) + xfree(list[i].u.arg.vals[j].s.start); + } + } + } + else { /* ONIG_CALLOUT_OF_CONTENTS */ + if (IS_NOT_NULL(list[i].u.content.start)) { + xfree((void* )list[i].u.content.start); + } + } + } + + xfree(list); +} + +extern CalloutListEntry* +onig_reg_callout_list_at(regex_t* reg, int num) +{ + RegexExt* ext = REG_EXTP(reg); + CHECK_NULL_RETURN(ext); + + if (num <= 0 || num > ext->callout_num) + return 0; + + num--; + return ext->callout_list + num; +} + +static int +reg_callout_list_entry(ScanEnv* env, int* rnum) +{ +#define INIT_CALLOUT_LIST_NUM 3 + + int num; + CalloutListEntry* list; + CalloutListEntry* e; + RegexExt* ext; + + ext = onig_get_regex_ext(env->reg); + CHECK_NULL_RETURN_MEMERR(ext); + + if (IS_NULL(ext->callout_list)) { + list = (CalloutListEntry* )xmalloc(sizeof(*list) * INIT_CALLOUT_LIST_NUM); + CHECK_NULL_RETURN_MEMERR(list); + + ext->callout_list = list; + ext->callout_list_alloc = INIT_CALLOUT_LIST_NUM; + ext->callout_num = 0; + } + + num = ext->callout_num + 1; + if (num > ext->callout_list_alloc) { + int alloc = ext->callout_list_alloc * 2; + list = (CalloutListEntry* )xrealloc(ext->callout_list, + sizeof(CalloutListEntry) * alloc, + sizeof(CalloutListEntry) * ext->callout_list_alloc); + CHECK_NULL_RETURN_MEMERR(list); + + ext->callout_list = list; + ext->callout_list_alloc = alloc; + } + + e = ext->callout_list + (num - 1); + + e->flag = 0; + e->of = 0; + e->in = ONIG_CALLOUT_OF_CONTENTS; + e->type = 0; + e->tag_start = 0; + e->tag_end = 0; + e->start_func = 0; + e->end_func = 0; + e->u.arg.num = 0; + e->u.arg.passed_num = 0; + + ext->callout_num = num; + *rnum = num; + return ONIG_NORMAL; +} + +static int +node_new_callout(Node** node, OnigCalloutOf callout_of, int num, int id, + ScanEnv* env) +{ + *node = node_new(); + CHECK_NULL_RETURN_MEMERR(*node); + + NODE_SET_TYPE(*node, NODE_GIMMICK); + GIMMICK_(*node)->id = id; + GIMMICK_(*node)->num = num; + GIMMICK_(*node)->type = GIMMICK_CALLOUT; + GIMMICK_(*node)->detail_type = (int )callout_of; + + return ONIG_NORMAL; +} +#endif + +static int +make_extended_grapheme_cluster(Node** node, ScanEnv* env) +{ + int r; + int i; + Node* x; + Node* ns[2]; + + /* \X == (?>\O(?:\Y\O)*) */ + + ns[1] = NULL_NODE; + + r = ONIGERR_MEMORY; + ns[0] = onig_node_new_anchor(ANCHOR_NO_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY, 0); + if (IS_NULL(ns[0])) goto err; + + r = node_new_true_anychar(&ns[1], env); + if (r != 0) goto err1; + + x = make_list(2, ns); + if (IS_NULL(x)) goto err; + ns[0] = x; + ns[1] = NULL_NODE; + + x = node_new_quantifier(0, REPEAT_INFINITE, 1); + if (IS_NULL(x)) goto err; + + NODE_BODY(x) = ns[0]; + ns[0] = NULL_NODE; + ns[1] = x; + + r = node_new_true_anychar(&ns[0], env); + if (r != 0) goto err1; + + x = make_list(2, ns); + if (IS_NULL(x)) goto err; + + ns[0] = x; + ns[1] = NULL_NODE; + + x = node_new_enclosure(ENCLOSURE_STOP_BACKTRACK); + if (IS_NULL(x)) goto err; + + NODE_BODY(x) = ns[0]; + + *node = x; + return ONIG_NORMAL; + + err: + r = ONIGERR_MEMORY; + err1: + for (i = 0; i < 2; i++) onig_node_free(ns[i]); + return r; +} + +static int +make_absent_engine(Node** node, int pre_save_right_id, Node* absent, + Node* step_one, int lower, int upper, int possessive, + int is_range_cutter, ScanEnv* env) +{ + int r; + int i; + int id; + Node* x; + Node* ns[4]; + + for (i = 0; i < 4; i++) ns[i] = NULL_NODE; + + ns[1] = absent; + ns[3] = step_one; /* for err */ + r = node_new_save_gimmick(&ns[0], SAVE_S, env); + if (r != 0) goto err; + + id = GIMMICK_(ns[0])->id; + r = node_new_update_var_gimmick(&ns[2], UPDATE_VAR_RIGHT_RANGE_FROM_S_STACK, + id, env); + if (r != 0) goto err; + + r = node_new_fail(&ns[3], env); + if (r != 0) goto err; + + x = make_list(4, ns); + if (IS_NULL(x)) goto err0; + + ns[0] = x; + ns[1] = step_one; + ns[2] = ns[3] = NULL_NODE; + + x = make_alt(2, ns); + if (IS_NULL(x)) goto err0; + + ns[0] = x; + + x = node_new_quantifier(lower, upper, 0); + if (IS_NULL(x)) goto err0; + + NODE_BODY(x) = ns[0]; + ns[0] = x; + + if (possessive != 0) { + x = node_new_enclosure(ENCLOSURE_STOP_BACKTRACK); + if (IS_NULL(x)) goto err0; + + NODE_BODY(x) = ns[0]; + ns[0] = x; + } + + r = node_new_update_var_gimmick(&ns[1], UPDATE_VAR_RIGHT_RANGE_FROM_STACK, + pre_save_right_id, env); + if (r != 0) goto err; + + r = node_new_fail(&ns[2], env); + if (r != 0) goto err; + + x = make_list(2, ns + 1); + if (IS_NULL(x)) goto err0; + + ns[1] = x; ns[2] = NULL_NODE; + + x = make_alt(2, ns); + if (IS_NULL(x)) goto err0; + + if (is_range_cutter != 0) + NODE_STATUS_ADD(x, SUPER); + + *node = x; + return ONIG_NORMAL; + + err0: + r = ONIGERR_MEMORY; + err: + for (i = 0; i < 4; i++) onig_node_free(ns[i]); + return r; +} + +static int +make_absent_tail(Node** node1, Node** node2, int pre_save_right_id, + ScanEnv* env) +{ + int r; + int id; + Node* save; + Node* x; + Node* ns[2]; + + *node1 = *node2 = NULL_NODE; + save = ns[0] = ns[1] = NULL_NODE; + + r = node_new_save_gimmick(&save, SAVE_RIGHT_RANGE, env); + if (r != 0) goto err; + + id = GIMMICK_(save)->id; + r = node_new_update_var_gimmick(&ns[0], UPDATE_VAR_RIGHT_RANGE_FROM_STACK, + id, env); + if (r != 0) goto err; + + r = node_new_fail(&ns[1], env); + if (r != 0) goto err; + + x = make_list(2, ns); + if (IS_NULL(x)) goto err0; + + ns[0] = NULL_NODE; ns[1] = x; + + r = node_new_update_var_gimmick(&ns[0], UPDATE_VAR_RIGHT_RANGE_FROM_STACK, + pre_save_right_id, env); + if (r != 0) goto err; + + x = make_alt(2, ns); + if (IS_NULL(x)) goto err0; + + *node1 = save; + *node2 = x; + return ONIG_NORMAL; + + err0: + r = ONIGERR_MEMORY; + err: + onig_node_free(save); + onig_node_free(ns[0]); + onig_node_free(ns[1]); + return r; +} + +static int +make_range_clear(Node** node, ScanEnv* env) +{ + int r; + int id; + Node* save; + Node* x; + Node* ns[2]; + + *node = NULL_NODE; + save = ns[0] = ns[1] = NULL_NODE; + + r = node_new_save_gimmick(&save, SAVE_RIGHT_RANGE, env); + if (r != 0) goto err; + + id = GIMMICK_(save)->id; + r = node_new_update_var_gimmick(&ns[0], UPDATE_VAR_RIGHT_RANGE_FROM_STACK, + id, env); + if (r != 0) goto err; + + r = node_new_fail(&ns[1], env); + if (r != 0) goto err; + + x = make_list(2, ns); + if (IS_NULL(x)) goto err0; + + ns[0] = NULL_NODE; ns[1] = x; + + r = node_new_update_var_gimmick(&ns[0], UPDATE_VAR_RIGHT_RANGE_INIT, 0, env); + if (r != 0) goto err; + + x = make_alt(2, ns); + if (IS_NULL(x)) goto err0; + + NODE_STATUS_ADD(x, SUPER); + + ns[0] = save; + ns[1] = x; + save = NULL_NODE; + x = make_list(2, ns); + if (IS_NULL(x)) goto err0; + + *node = x; + return ONIG_NORMAL; + + err0: + r = ONIGERR_MEMORY; + err: + onig_node_free(save); + onig_node_free(ns[0]); + onig_node_free(ns[1]); + return r; +} + +static int +is_simple_one_char_repeat(Node* node, Node** rquant, Node** rbody, + int* is_possessive, ScanEnv* env) +{ + Node* quant; + Node* body; + + *rquant = *rbody = 0; + *is_possessive = 0; + + if (NODE_TYPE(node) == NODE_QUANT) { + quant = node; + } + else { + if (NODE_TYPE(node) == NODE_ENCLOSURE) { + EnclosureNode* en = ENCLOSURE_(node); + if (en->type == ENCLOSURE_STOP_BACKTRACK) { + *is_possessive = 1; + quant = NODE_ENCLOSURE_BODY(en); + if (NODE_TYPE(quant) != NODE_QUANT) + return 0; + } + else + return 0; + } + else + return 0; + } + + if (QUANT_(quant)->greedy == 0) + return 0; + + body = NODE_BODY(quant); + switch (NODE_TYPE(body)) { + case NODE_STRING: + { + int len; + StrNode* sn = STR_(body); + UChar *s = sn->s; + + len = 0; + while (s < sn->end) { + s += enclen(env->enc, s); + len++; + } + if (len != 1) + return 0; + } + + case NODE_CCLASS: + break; + + default: + return 0; + break; + } + + if (node != quant) { + NODE_BODY(node) = 0; + onig_node_free(node); + } + NODE_BODY(quant) = NULL_NODE; + *rquant = quant; + *rbody = body; + return 1; +} + +static int +make_absent_tree_for_simple_one_char_repeat(Node** node, Node* absent, Node* quant, + Node* body, int possessive, ScanEnv* env) +{ + int r; + int i; + int id1; + int lower, upper; + Node* x; + Node* ns[4]; + + *node = NULL_NODE; + r = ONIGERR_MEMORY; + ns[0] = ns[1] = NULL_NODE; + ns[2] = body, ns[3] = absent; + + lower = QUANT_(quant)->lower; + upper = QUANT_(quant)->upper; + onig_node_free(quant); + + r = node_new_save_gimmick(&ns[0], SAVE_RIGHT_RANGE, env); + if (r != 0) goto err; + + id1 = GIMMICK_(ns[0])->id; + + r = make_absent_engine(&ns[1], id1, absent, body, lower, upper, possessive, + 0, env); + if (r != 0) goto err; + + ns[2] = ns[3] = NULL_NODE; + + r = node_new_update_var_gimmick(&ns[2], UPDATE_VAR_RIGHT_RANGE_FROM_STACK, + id1, env); + if (r != 0) goto err; + + x = make_list(3, ns); + if (IS_NULL(x)) goto err0; + + *node = x; + return ONIG_NORMAL; + + err0: + r = ONIGERR_MEMORY; + err: + for (i = 0; i < 4; i++) onig_node_free(ns[i]); + return r; +} + +static int +make_absent_tree(Node** node, Node* absent, Node* expr, int is_range_cutter, + ScanEnv* env) +{ + int r; + int i; + int id1, id2; + int possessive; + Node* x; + Node* ns[7]; + + r = ONIGERR_MEMORY; + for (i = 0; i < 7; i++) ns[i] = NULL_NODE; + ns[4] = expr; ns[5] = absent; + + if (is_range_cutter == 0) { + Node* quant; + Node* body; + + if (expr == NULL_NODE) { + /* default expr \O* */ + quant = node_new_quantifier(0, REPEAT_INFINITE, 0); + if (IS_NULL(quant)) goto err0; + + r = node_new_true_anychar(&body, env); + if (r != 0) { + onig_node_free(quant); + goto err; + } + possessive = 0; + goto simple; + } + else { + if (is_simple_one_char_repeat(expr, &quant, &body, &possessive, env)) { + simple: + r = make_absent_tree_for_simple_one_char_repeat(node, absent, quant, + body, possessive, env); + if (r != 0) { + ns[4] = NULL_NODE; + onig_node_free(quant); + onig_node_free(body); + goto err; + } + + return ONIG_NORMAL; + } + } + } + + r = node_new_save_gimmick(&ns[0], SAVE_RIGHT_RANGE, env); + if (r != 0) goto err; + + id1 = GIMMICK_(ns[0])->id; + + r = node_new_save_gimmick(&ns[1], SAVE_S, env); + if (r != 0) goto err; + + id2 = GIMMICK_(ns[1])->id; + + r = node_new_true_anychar(&ns[3], env); + if (r != 0) goto err; + + possessive = 1; + r = make_absent_engine(&ns[2], id1, absent, ns[3], 0, REPEAT_INFINITE, + possessive, is_range_cutter, env); + if (r != 0) goto err; + + ns[3] = NULL_NODE; + ns[5] = NULL_NODE; + + r = node_new_update_var_gimmick(&ns[3], UPDATE_VAR_S_FROM_STACK, id2, env); + if (r != 0) goto err; + + if (is_range_cutter != 0) { + x = make_list(4, ns); + if (IS_NULL(x)) goto err0; + } + else { + r = make_absent_tail(&ns[5], &ns[6], id1, env); + if (r != 0) goto err; + + x = make_list(7, ns); + if (IS_NULL(x)) goto err0; + } + + *node = x; + return ONIG_NORMAL; + + err0: + r = ONIGERR_MEMORY; + err: + for (i = 0; i < 7; i++) onig_node_free(ns[i]); + return r; +} + +extern int +onig_node_str_cat(Node* node, const UChar* s, const UChar* end) +{ + int addlen = (int )(end - s); + + if (addlen > 0) { + int len = (int )(STR_(node)->end - STR_(node)->s); + + if (STR_(node)->capa > 0 || (len + addlen > NODE_STRING_BUF_SIZE - 1)) { + UChar* p; + int capa = len + addlen + NODE_STRING_MARGIN; + + if (capa <= STR_(node)->capa) { + onig_strcpy(STR_(node)->s + len, s, end); + } + else { + if (STR_(node)->s == STR_(node)->buf) + p = strcat_capa_from_static(STR_(node)->s, STR_(node)->end, + s, end, capa); + else + p = strcat_capa(STR_(node)->s, STR_(node)->end, s, end, capa, STR_(node)->capa); + + CHECK_NULL_RETURN_MEMERR(p); + STR_(node)->s = p; + STR_(node)->capa = capa; + } + } + else { + onig_strcpy(STR_(node)->s + len, s, end); + } + STR_(node)->end = STR_(node)->s + len + addlen; + } + + return 0; +} + +extern int +onig_node_str_set(Node* node, const UChar* s, const UChar* end) +{ + onig_node_str_clear(node); + return onig_node_str_cat(node, s, end); +} + +static int +node_str_cat_char(Node* node, UChar c) +{ + UChar s[1]; + + s[0] = c; + return onig_node_str_cat(node, s, s + 1); +} + +extern void +onig_node_conv_to_str_node(Node* node, int flag) +{ + NODE_SET_TYPE(node, NODE_STRING); + STR_(node)->flag = flag; + STR_(node)->capa = 0; + STR_(node)->s = STR_(node)->buf; + STR_(node)->end = STR_(node)->buf; +} + +extern void +onig_node_str_clear(Node* node) +{ + if (STR_(node)->capa != 0 && + IS_NOT_NULL(STR_(node)->s) && STR_(node)->s != STR_(node)->buf) { + xfree(STR_(node)->s); + } + + STR_(node)->capa = 0; + STR_(node)->flag = 0; + STR_(node)->s = STR_(node)->buf; + STR_(node)->end = STR_(node)->buf; +} + +static Node* +node_new_str(const UChar* s, const UChar* end) +{ + Node* node = node_new(); + CHECK_NULL_RETURN(node); + + NODE_SET_TYPE(node, NODE_STRING); + STR_(node)->capa = 0; + STR_(node)->flag = 0; + STR_(node)->s = STR_(node)->buf; + STR_(node)->end = STR_(node)->buf; + if (onig_node_str_cat(node, s, end)) { + onig_node_free(node); + return NULL; + } + return node; +} + +extern Node* +onig_node_new_str(const UChar* s, const UChar* end) +{ + return node_new_str(s, end); +} + +static Node* +node_new_str_raw(UChar* s, UChar* end) +{ + Node* node = node_new_str(s, end); + NODE_STRING_SET_RAW(node); + return node; +} + +static Node* +node_new_empty(void) +{ + return node_new_str(NULL, NULL); +} + +static Node* +node_new_str_raw_char(UChar c) +{ + UChar p[1]; + + p[0] = c; + return node_new_str_raw(p, p + 1); +} + +static Node* +str_node_split_last_char(Node* node, OnigEncoding enc) +{ + const UChar *p; + Node* rn; + StrNode* sn; + + sn = STR_(node); + rn = NULL_NODE; + if (sn->end > sn->s) { + p = onigenc_get_prev_char_head(enc, sn->s, sn->end); + if (p && p > sn->s) { /* can be split. */ + rn = node_new_str(p, sn->end); + if (NODE_STRING_IS_RAW(node)) + NODE_STRING_SET_RAW(rn); + + sn->end = (UChar* )p; + } + } + return rn; +} + +static int +str_node_can_be_split(Node* node, OnigEncoding enc) +{ + StrNode* sn = STR_(node); + if (sn->end > sn->s) { + return ((enclen(enc, sn->s) < sn->end - sn->s) ? 1 : 0); + } + return 0; +} + +#ifdef USE_PAD_TO_SHORT_BYTE_CHAR +static int +node_str_head_pad(StrNode* sn, int num, UChar val) +{ + UChar buf[NODE_STRING_BUF_SIZE]; + int i, len; + + len = sn->end - sn->s; + onig_strcpy(buf, sn->s, sn->end); + onig_strcpy(&(sn->s[num]), buf, buf + len); + sn->end += num; + + for (i = 0; i < num; i++) { + sn->s[i] = val; + } +} +#endif + +extern int +onig_scan_unsigned_number(UChar** src, const UChar* end, OnigEncoding enc) +{ + unsigned int num, val; + OnigCodePoint c; + UChar* p = *src; + PFETCH_READY; + + num = 0; + while (! PEND) { + PFETCH(c); + if (IS_CODE_DIGIT_ASCII(enc, c)) { + val = (unsigned int )DIGITVAL(c); + if ((INT_MAX_LIMIT - val) / 10UL < num) + return -1; /* overflow */ + + num = num * 10 + val; + } + else { + PUNFETCH; + break; + } + } + *src = p; + return num; +} + +static int +scan_unsigned_hexadecimal_number(UChar** src, UChar* end, int minlen, + int maxlen, OnigEncoding enc) +{ + OnigCodePoint c; + unsigned int num, val; + int n; + UChar* p = *src; + PFETCH_READY; + + num = 0; + n = 0; + while (! PEND && n < maxlen) { + PFETCH(c); + if (IS_CODE_XDIGIT_ASCII(enc, c)) { + n++; + val = (unsigned int )XDIGITVAL(enc,c); + if ((INT_MAX_LIMIT - val) / 16UL < num) + return ONIGERR_TOO_BIG_NUMBER; /* overflow */ + + num = (num << 4) + XDIGITVAL(enc,c); + } + else { + PUNFETCH; + break; + } + } + + if (n < minlen) + return ONIGERR_INVALID_CODE_POINT_VALUE; + + *src = p; + return num; +} + +static int +scan_unsigned_octal_number(UChar** src, UChar* end, int maxlen, + OnigEncoding enc) +{ + OnigCodePoint c; + unsigned int num, val; + UChar* p = *src; + PFETCH_READY; + + num = 0; + while (! PEND && maxlen-- != 0) { + PFETCH(c); + if (IS_CODE_DIGIT_ASCII(enc, c) && c < '8') { + val = ODIGITVAL(c); + if ((INT_MAX_LIMIT - val) / 8UL < num) + return -1; /* overflow */ + + num = (num << 3) + val; + } + else { + PUNFETCH; + break; + } + } + *src = p; + return num; +} + + +#define BB_WRITE_CODE_POINT(bbuf,pos,code) \ + BB_WRITE(bbuf, pos, &(code), SIZE_CODE_POINT) + +/* data format: + [n][from-1][to-1][from-2][to-2] ... [from-n][to-n] + (all data size is OnigCodePoint) + */ +static int +new_code_range(BBuf** pbuf) +{ +#define INIT_MULTI_BYTE_RANGE_SIZE (SIZE_CODE_POINT * 5) + int r; + OnigCodePoint n; + BBuf* bbuf; + + bbuf = *pbuf = (BBuf* )xmalloc(sizeof(BBuf)); + CHECK_NULL_RETURN_MEMERR(bbuf); + r = BB_INIT(bbuf, INIT_MULTI_BYTE_RANGE_SIZE); + if (r != 0) { + xfree(bbuf); + *pbuf = 0; + return r; + } + + n = 0; + BB_WRITE_CODE_POINT(bbuf, 0, n); + return 0; +} + +static int +add_code_range_to_buf(BBuf** pbuf, OnigCodePoint from, OnigCodePoint to) +{ + int r, inc_n, pos; + int low, high, bound, x; + OnigCodePoint n, *data; + BBuf* bbuf; + + if (from > to) { + n = from; from = to; to = n; + } + + if (IS_NULL(*pbuf)) { + r = new_code_range(pbuf); + if (r != 0) return r; + bbuf = *pbuf; + n = 0; + } + else { + bbuf = *pbuf; + GET_CODE_POINT(n, bbuf->p); + } + data = (OnigCodePoint* )(bbuf->p); + data++; + + for (low = 0, bound = n; low < bound; ) { + x = (low + bound) >> 1; + if (from > data[x*2 + 1]) + low = x + 1; + else + bound = x; + } + + high = (to == ~((OnigCodePoint )0)) ? n : low; + for (bound = n; high < bound; ) { + x = (high + bound) >> 1; + if (to + 1 >= data[x*2]) + high = x + 1; + else + bound = x; + } + + inc_n = low + 1 - high; + if (n + inc_n > ONIG_MAX_MULTI_BYTE_RANGES_NUM) + return ONIGERR_TOO_MANY_MULTI_BYTE_RANGES; + + if (inc_n != 1) { + if (from > data[low*2]) + from = data[low*2]; + if (to < data[(high - 1)*2 + 1]) + to = data[(high - 1)*2 + 1]; + } + + if (inc_n != 0 && (OnigCodePoint )high < n) { + int from_pos = SIZE_CODE_POINT * (1 + high * 2); + int to_pos = SIZE_CODE_POINT * (1 + (low + 1) * 2); + int size = (n - high) * 2 * SIZE_CODE_POINT; + + if (inc_n > 0) { + BB_MOVE_RIGHT(bbuf, from_pos, to_pos, size); + } + else { + BB_MOVE_LEFT_REDUCE(bbuf, from_pos, to_pos); + } + } + + pos = SIZE_CODE_POINT * (1 + low * 2); + BB_ENSURE_SIZE(bbuf, pos + SIZE_CODE_POINT * 2); + BB_WRITE_CODE_POINT(bbuf, pos, from); + BB_WRITE_CODE_POINT(bbuf, pos + SIZE_CODE_POINT, to); + n += inc_n; + BB_WRITE_CODE_POINT(bbuf, 0, n); + + return 0; +} + +static int +add_code_range(BBuf** pbuf, ScanEnv* env, OnigCodePoint from, OnigCodePoint to) +{ + if (from > to) { + if (IS_SYNTAX_BV(env->syntax, ONIG_SYN_ALLOW_EMPTY_RANGE_IN_CC)) + return 0; + else + return ONIGERR_EMPTY_RANGE_IN_CHAR_CLASS; + } + + return add_code_range_to_buf(pbuf, from, to); +} + +static int +not_code_range_buf(OnigEncoding enc, BBuf* bbuf, BBuf** pbuf) +{ + int r, i, n; + OnigCodePoint pre, from, *data, to = 0; + + *pbuf = (BBuf* )NULL; + if (IS_NULL(bbuf)) { + set_all: + return SET_ALL_MULTI_BYTE_RANGE(enc, pbuf); + } + + data = (OnigCodePoint* )(bbuf->p); + GET_CODE_POINT(n, data); + data++; + if (n <= 0) goto set_all; + + r = 0; + pre = MBCODE_START_POS(enc); + for (i = 0; i < n; i++) { + from = data[i*2]; + to = data[i*2+1]; + if (pre <= from - 1) { + r = add_code_range_to_buf(pbuf, pre, from - 1); + if (r != 0) return r; + } + if (to == ~((OnigCodePoint )0)) break; + pre = to + 1; + } + if (to < ~((OnigCodePoint )0)) { + r = add_code_range_to_buf(pbuf, to + 1, ~((OnigCodePoint )0)); + } + return r; +} + +#define SWAP_BB_NOT(bbuf1, not1, bbuf2, not2) do {\ + BBuf *tbuf; \ + int tnot; \ + tnot = not1; not1 = not2; not2 = tnot; \ + tbuf = bbuf1; bbuf1 = bbuf2; bbuf2 = tbuf; \ +} while (0) + +static int +or_code_range_buf(OnigEncoding enc, BBuf* bbuf1, int not1, + BBuf* bbuf2, int not2, BBuf** pbuf) +{ + int r; + OnigCodePoint i, n1, *data1; + OnigCodePoint from, to; + + *pbuf = (BBuf* )NULL; + if (IS_NULL(bbuf1) && IS_NULL(bbuf2)) { + if (not1 != 0 || not2 != 0) + return SET_ALL_MULTI_BYTE_RANGE(enc, pbuf); + return 0; + } + + r = 0; + if (IS_NULL(bbuf2)) + SWAP_BB_NOT(bbuf1, not1, bbuf2, not2); + + if (IS_NULL(bbuf1)) { + if (not1 != 0) { + return SET_ALL_MULTI_BYTE_RANGE(enc, pbuf); + } + else { + if (not2 == 0) { + return bbuf_clone(pbuf, bbuf2); + } + else { + return not_code_range_buf(enc, bbuf2, pbuf); + } + } + } + + if (not1 != 0) + SWAP_BB_NOT(bbuf1, not1, bbuf2, not2); + + data1 = (OnigCodePoint* )(bbuf1->p); + GET_CODE_POINT(n1, data1); + data1++; + + if (not2 == 0 && not1 == 0) { /* 1 OR 2 */ + r = bbuf_clone(pbuf, bbuf2); + } + else if (not1 == 0) { /* 1 OR (not 2) */ + r = not_code_range_buf(enc, bbuf2, pbuf); + } + if (r != 0) return r; + + for (i = 0; i < n1; i++) { + from = data1[i*2]; + to = data1[i*2+1]; + r = add_code_range_to_buf(pbuf, from, to); + if (r != 0) return r; + } + return 0; +} + +static int +and_code_range1(BBuf** pbuf, OnigCodePoint from1, OnigCodePoint to1, + OnigCodePoint* data, int n) +{ + int i, r; + OnigCodePoint from2, to2; + + for (i = 0; i < n; i++) { + from2 = data[i*2]; + to2 = data[i*2+1]; + if (from2 < from1) { + if (to2 < from1) continue; + else { + from1 = to2 + 1; + } + } + else if (from2 <= to1) { + if (to2 < to1) { + if (from1 <= from2 - 1) { + r = add_code_range_to_buf(pbuf, from1, from2-1); + if (r != 0) return r; + } + from1 = to2 + 1; + } + else { + to1 = from2 - 1; + } + } + else { + from1 = from2; + } + if (from1 > to1) break; + } + if (from1 <= to1) { + r = add_code_range_to_buf(pbuf, from1, to1); + if (r != 0) return r; + } + return 0; +} + +static int +and_code_range_buf(BBuf* bbuf1, int not1, BBuf* bbuf2, int not2, BBuf** pbuf) +{ + int r; + OnigCodePoint i, j, n1, n2, *data1, *data2; + OnigCodePoint from, to, from1, to1, from2, to2; + + *pbuf = (BBuf* )NULL; + if (IS_NULL(bbuf1)) { + if (not1 != 0 && IS_NOT_NULL(bbuf2)) /* not1 != 0 -> not2 == 0 */ + return bbuf_clone(pbuf, bbuf2); + return 0; + } + else if (IS_NULL(bbuf2)) { + if (not2 != 0) + return bbuf_clone(pbuf, bbuf1); + return 0; + } + + if (not1 != 0) + SWAP_BB_NOT(bbuf1, not1, bbuf2, not2); + + data1 = (OnigCodePoint* )(bbuf1->p); + data2 = (OnigCodePoint* )(bbuf2->p); + GET_CODE_POINT(n1, data1); + GET_CODE_POINT(n2, data2); + data1++; + data2++; + + if (not2 == 0 && not1 == 0) { /* 1 AND 2 */ + for (i = 0; i < n1; i++) { + from1 = data1[i*2]; + to1 = data1[i*2+1]; + for (j = 0; j < n2; j++) { + from2 = data2[j*2]; + to2 = data2[j*2+1]; + if (from2 > to1) break; + if (to2 < from1) continue; + from = MAX(from1, from2); + to = MIN(to1, to2); + r = add_code_range_to_buf(pbuf, from, to); + if (r != 0) return r; + } + } + } + else if (not1 == 0) { /* 1 AND (not 2) */ + for (i = 0; i < n1; i++) { + from1 = data1[i*2]; + to1 = data1[i*2+1]; r = and_code_range1(pbuf, from1, to1, data2, n2); if (r != 0) return r; } @@ -2011,7 +3674,6 @@ and_cclass(CClassNode* dest, CClassNode* cc, OnigEncoding enc) bitset_and(bsr1, bsr2); if (bsr1 != dest->bs) { bitset_copy(dest->bs, bsr1); - bsr1 = dest->bs; } if (not1 != 0) { bitset_invert(dest->bs); @@ -2024,14 +3686,14 @@ and_cclass(CClassNode* dest, CClassNode* cc, OnigEncoding enc) else { r = and_code_range_buf(buf1, not1, buf2, not2, &pbuf); if (r == 0 && not1 != 0) { - BBuf *tbuf; - r = not_code_range_buf(enc, pbuf, &tbuf); - if (r != 0) { - bbuf_free(pbuf); - return r; - } - bbuf_free(pbuf); - pbuf = tbuf; + BBuf *tbuf; + r = not_code_range_buf(enc, pbuf, &tbuf); + if (r != 0) { + bbuf_free(pbuf); + return r; + } + bbuf_free(pbuf); + pbuf = tbuf; } } if (r != 0) return r; @@ -2069,7 +3731,6 @@ or_cclass(CClassNode* dest, CClassNode* cc, OnigEncoding enc) bitset_or(bsr1, bsr2); if (bsr1 != dest->bs) { bitset_copy(dest->bs, bsr1); - bsr1 = dest->bs; } if (not1 != 0) { bitset_invert(dest->bs); @@ -2082,14 +3743,14 @@ or_cclass(CClassNode* dest, CClassNode* cc, OnigEncoding enc) else { r = or_code_range_buf(enc, buf1, not1, buf2, not2, &pbuf); if (r == 0 && not1 != 0) { - BBuf *tbuf; - r = not_code_range_buf(enc, pbuf, &tbuf); - if (r != 0) { - bbuf_free(pbuf); - return r; - } - bbuf_free(pbuf); - pbuf = tbuf; + BBuf *tbuf; + r = not_code_range_buf(enc, pbuf, &tbuf); + if (r != 0) { + bbuf_free(pbuf); + return r; + } + bbuf_free(pbuf); + pbuf = tbuf; } } if (r != 0) return r; @@ -2102,8 +3763,8 @@ or_cclass(CClassNode* dest, CClassNode* cc, OnigEncoding enc) return 0; } -static int -conv_backslash_value(int c, ScanEnv* env) +static OnigCodePoint +conv_backslash_value(OnigCodePoint c, ScanEnv* env) { if (IS_SYNTAX_OP(env->syntax, ONIG_SYN_OP_ESC_CONTROL_CHARS)) { switch (c) { @@ -2116,7 +3777,7 @@ conv_backslash_value(int c, ScanEnv* env) case 'e': return '\033'; case 'v': if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_ESC_V_VTAB)) - return '\v'; + return '\v'; break; default: @@ -2129,27 +3790,28 @@ conv_backslash_value(int c, ScanEnv* env) static int is_invalid_quantifier_target(Node* node) { - switch (NTYPE(node)) { - case NT_ANCHOR: + switch (NODE_TYPE(node)) { + case NODE_ANCHOR: + case NODE_GIMMICK: return 1; break; - case NT_ENCLOSE: + case NODE_ENCLOSURE: /* allow enclosed elements */ - /* return is_invalid_quantifier_target(NENCLOSE(node)->target); */ + /* return is_invalid_quantifier_target(NODE_BODY(node)); */ break; - case NT_LIST: + case NODE_LIST: do { - if (! is_invalid_quantifier_target(NCAR(node))) return 0; - } while (IS_NOT_NULL(node = NCDR(node))); + if (! is_invalid_quantifier_target(NODE_CAR(node))) return 0; + } while (IS_NOT_NULL(node = NODE_CDR(node))); return 0; break; - case NT_ALT: + case NODE_ALT: do { - if (is_invalid_quantifier_target(NCAR(node))) return 1; - } while (IS_NOT_NULL(node = NCDR(node))); + if (is_invalid_quantifier_target(NODE_CAR(node))) return 1; + } while (IS_NOT_NULL(node = NODE_CDR(node))); break; default: @@ -2160,7 +3822,7 @@ is_invalid_quantifier_target(Node* node) /* ?:0, *:1, +:2, ??:3, *?:4, +?:5 */ static int -popular_quantifier_num(QtfrNode* q) +quantifier_type_num(QuantNode* q) { if (q->greedy) { if (q->lower == 0) { @@ -2207,52 +3869,116 @@ extern void onig_reduce_nested_quantifier(Node* pnode, Node* cnode) { int pnum, cnum; - QtfrNode *p, *c; + QuantNode *p, *c; + + p = QUANT_(pnode); + c = QUANT_(cnode); + pnum = quantifier_type_num(p); + cnum = quantifier_type_num(c); + if (pnum < 0 || cnum < 0) { + if ((p->lower == p->upper) && ! IS_REPEAT_INFINITE(p->upper)) { + if ((c->lower == c->upper) && ! IS_REPEAT_INFINITE(c->upper)) { + int n = positive_int_multiply(p->lower, c->lower); + if (n >= 0) { + p->lower = p->upper = n; + NODE_BODY(pnode) = NODE_BODY(cnode); + goto remove_cnode; + } + } + } - p = NQTFR(pnode); - c = NQTFR(cnode); - pnum = popular_quantifier_num(p); - cnum = popular_quantifier_num(c); - if (pnum < 0 || cnum < 0) return ; + return ; + } switch(ReduceTypeTable[cnum][pnum]) { case RQ_DEL: - CopyMem (pnode, cnode, sizeof (Node)); + *pnode = *cnode; break; case RQ_A: - p->target = c->target; + NODE_BODY(pnode) = NODE_BODY(cnode); p->lower = 0; p->upper = REPEAT_INFINITE; p->greedy = 1; break; case RQ_AQ: - p->target = c->target; + NODE_BODY(pnode) = NODE_BODY(cnode); p->lower = 0; p->upper = REPEAT_INFINITE; p->greedy = 0; break; case RQ_QQ: - p->target = c->target; + NODE_BODY(pnode) = NODE_BODY(cnode); p->lower = 0; p->upper = 1; p->greedy = 0; break; case RQ_P_QQ: - p->target = cnode; + NODE_BODY(pnode) = cnode; p->lower = 0; p->upper = 1; p->greedy = 0; c->lower = 1; c->upper = REPEAT_INFINITE; c->greedy = 1; return ; break; case RQ_PQ_Q: - p->target = cnode; + NODE_BODY(pnode) = cnode; p->lower = 0; p->upper = 1; p->greedy = 1; c->lower = 1; c->upper = REPEAT_INFINITE; c->greedy = 0; return ; break; case RQ_ASIS: - p->target = cnode; + NODE_BODY(pnode) = cnode; return ; break; } - c->target = NULL_NODE; + remove_cnode: + NODE_BODY(cnode) = NULL_NODE; onig_node_free(cnode); } +static int +node_new_general_newline(Node** node, ScanEnv* env) +{ + int r; + int dlen, alen; + UChar buf[ONIGENC_CODE_TO_MBC_MAXLEN * 2]; + Node* crnl; + Node* ncc; + Node* x; + CClassNode* cc; + + dlen = ONIGENC_CODE_TO_MBC(env->enc, 0x0d, buf); + if (dlen < 0) return dlen; + alen = ONIGENC_CODE_TO_MBC(env->enc, 0x0a, buf + dlen); + if (alen < 0) return alen; + + crnl = node_new_str_raw(buf, buf + dlen + alen); + CHECK_NULL_RETURN_MEMERR(crnl); + + ncc = node_new_cclass(); + if (IS_NULL(ncc)) goto err2; + + cc = CCLASS_(ncc); + if (dlen == 1) { + bitset_set_range(cc->bs, 0x0a, 0x0d); + } + else { + r = add_code_range(&(cc->mbuf), env, 0x0a, 0x0d); + if (r != 0) { + err1: + onig_node_free(ncc); + err2: + onig_node_free(crnl); + return ONIGERR_MEMORY; + } + } + + if (ONIGENC_IS_UNICODE_ENCODING(env->enc)) { + r = add_code_range(&(cc->mbuf), env, 0x85, 0x85); + if (r != 0) goto err1; + r = add_code_range(&(cc->mbuf), env, 0x2028, 0x2029); + if (r != 0) goto err1; + } + + x = node_new_enclosure_if_else(crnl, 0, ncc); + if (IS_NULL(x)) goto err1; + + *node = x; + return 0; +} enum TokenSyms { TK_EOT = 0, /* end of token */ @@ -2274,6 +4000,12 @@ enum TokenSyms { TK_CC_OPEN, TK_QUOTE_OPEN, TK_CHAR_PROPERTY, /* \p{...}, \P{...} */ + TK_KEEP, /* \K */ + TK_GENERAL_NEWLINE, /* \R */ + TK_NO_NEWLINE, /* \N */ + TK_TRUE_ANYCHAR, /* \O */ + TK_EXTENDED_GRAPHEME_CLUSTER, /* \X */ + /* in cc */ TK_CC_CLOSE, TK_CC_RANGE, @@ -2313,6 +4045,7 @@ typedef struct { UChar* name; UChar* name_end; int gnum; + int by_number; } call; struct { int ctype; @@ -2374,7 +4107,7 @@ fetch_range_quantifier(UChar** src, UChar* end, OnigToken* tok, ScanEnv* env) if (p == prev) { if (non_low != 0) - goto invalid; + goto invalid; up = REPEAT_INFINITE; /* {n,} : {n,infinite} */ } } @@ -2406,15 +4139,17 @@ fetch_range_quantifier(UChar** src, UChar* end, OnigToken* tok, ScanEnv* env) return r; /* 0: normal {n,m}, 2: fixed {n} */ invalid: - if (syn_allow) + if (syn_allow) { + /* *src = p; */ /* !!! Don't do this line !!! */ return 1; /* OK */ + } else return ONIGERR_INVALID_REPEAT_RANGE_PATTERN; } /* \M-, \C-, \c, or \... */ static int -fetch_escaped_value(UChar** src, UChar* end, ScanEnv* env) +fetch_escaped_value(UChar** src, UChar* end, ScanEnv* env, OnigCodePoint* val) { int v; OnigCodePoint c; @@ -2433,9 +4168,8 @@ fetch_escaped_value(UChar** src, UChar* end, ScanEnv* env) if (PEND) return ONIGERR_END_PATTERN_AT_META; PFETCH_S(c); if (c == MC_ESC(env->syntax)) { - v = fetch_escaped_value(&p, end, env); + v = fetch_escaped_value(&p, end, env, &c); if (v < 0) return v; - c = (OnigCodePoint )v; } c = ((c & 0xff) | 0x80); } @@ -2463,9 +4197,8 @@ fetch_escaped_value(UChar** src, UChar* end, ScanEnv* env) } else { if (c == MC_ESC(env->syntax)) { - v = fetch_escaped_value(&p, end, env); + v = fetch_escaped_value(&p, end, env, &c); if (v < 0) return v; - c = (OnigCodePoint )v; } c &= 0x9f; } @@ -2482,7 +4215,8 @@ fetch_escaped_value(UChar** src, UChar* end, ScanEnv* env) } *src = p; - return c; + *val = c; + return 0; } static int fetch_token(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env); @@ -2491,8 +4225,9 @@ static OnigCodePoint get_name_end_code_point(OnigCodePoint start) { switch (start) { - case '<': return (OnigCodePoint )'>'; break; + case '<': return (OnigCodePoint )'>'; break; case '\'': return (OnigCodePoint )'\''; break; + case '(': return (OnigCodePoint )')'; break; default: break; } @@ -2500,19 +4235,26 @@ get_name_end_code_point(OnigCodePoint start) return (OnigCodePoint )0; } -#ifdef USE_NAMED_GROUP +enum REF_NUM { + IS_NOT_NUM = 0, + IS_ABS_NUM = 1, + IS_REL_NUM = 2 +}; + #ifdef USE_BACKREF_WITH_LEVEL /* \k, \k \k, \k \k<-num+n>, \k<-num-n> + \k<+num+n>, \k<+num-n> */ static int fetch_name_with_level(OnigCodePoint start_code, UChar** src, UChar* end, - UChar** rname_end, ScanEnv* env, - int* rback_num, int* rlevel) + UChar** rname_end, ScanEnv* env, + int* rback_num, int* rlevel, enum REF_NUM* num_type) { - int r, sign, is_num, exist_level; + int r, sign, exist_level; + int digit_count; OnigCodePoint end_code; OnigCodePoint c = 0; OnigEncoding enc = env->enc; @@ -2522,12 +4264,14 @@ fetch_name_with_level(OnigCodePoint start_code, UChar** src, UChar* end, PFETCH_READY; *rback_num = 0; - is_num = exist_level = 0; + exist_level = 0; + *num_type = IS_NOT_NUM; sign = 1; pnum_head = *src; end_code = get_name_end_code_point(start_code); + digit_count = 0; name_end = end; r = 0; if (PEND) { @@ -2538,14 +4282,20 @@ fetch_name_with_level(OnigCodePoint start_code, UChar** src, UChar* end, if (c == end_code) return ONIGERR_EMPTY_GROUP_NAME; - if (ONIGENC_IS_CODE_DIGIT(enc, c)) { - is_num = 1; + if (IS_CODE_DIGIT_ASCII(enc, c)) { + *num_type = IS_ABS_NUM; + digit_count++; } else if (c == '-') { - is_num = 2; + *num_type = IS_REL_NUM; sign = -1; pnum_head = p; } + else if (c == '+') { + *num_type = IS_REL_NUM; + sign = 1; + pnum_head = p; + } else if (!ONIGENC_IS_CODE_WORD(enc, c)) { r = ONIGERR_INVALID_CHAR_IN_GROUP_NAME; } @@ -2555,17 +4305,18 @@ fetch_name_with_level(OnigCodePoint start_code, UChar** src, UChar* end, name_end = p; PFETCH(c); if (c == end_code || c == ')' || c == '+' || c == '-') { - if (is_num == 2) r = ONIGERR_INVALID_GROUP_NAME; + if (*num_type != IS_NOT_NUM && digit_count == 0) + r = ONIGERR_INVALID_GROUP_NAME; break; } - if (is_num != 0) { - if (ONIGENC_IS_CODE_DIGIT(enc, c)) { - is_num = 1; + if (*num_type != IS_NOT_NUM) { + if (IS_CODE_DIGIT_ASCII(enc, c)) { + digit_count++; } else { r = ONIGERR_INVALID_GROUP_NAME; - is_num = 0; + *num_type = IS_NOT_NUM; } } else if (!ONIGENC_IS_CODE_WORD(enc, c)) { @@ -2578,30 +4329,40 @@ fetch_name_with_level(OnigCodePoint start_code, UChar** src, UChar* end, int level; int flag = (c == '-' ? -1 : 1); + if (PEND) { + r = ONIGERR_INVALID_CHAR_IN_GROUP_NAME; + goto end; + } PFETCH(c); - if (! ONIGENC_IS_CODE_DIGIT(enc, c)) goto err; + if (! IS_CODE_DIGIT_ASCII(enc, c)) goto err; PUNFETCH; level = onig_scan_unsigned_number(&p, end, enc); if (level < 0) return ONIGERR_TOO_BIG_NUMBER; *rlevel = (level * flag); exist_level = 1; - PFETCH(c); - if (c == end_code) - goto end; + if (!PEND) { + PFETCH(c); + if (c == end_code) + goto end; + } } err: - r = ONIGERR_INVALID_GROUP_NAME; name_end = end; + err2: + r = ONIGERR_INVALID_GROUP_NAME; } end: if (r == 0) { - if (is_num != 0) { + if (*num_type != IS_NOT_NUM) { *rback_num = onig_scan_unsigned_number(&pnum_head, name_end, enc); if (*rback_num < 0) return ONIGERR_TOO_BIG_NUMBER; - else if (*rback_num == 0) goto err; + else if (*rback_num == 0) { + if (*num_type == IS_REL_NUM) + goto err2; + } *rback_num *= sign; } @@ -2618,14 +4379,16 @@ fetch_name_with_level(OnigCodePoint start_code, UChar** src, UChar* end, #endif /* USE_BACKREF_WITH_LEVEL */ /* - def: 0 -> define name (don't allow number name) + ref: 0 -> define name (don't allow number name) 1 -> reference name (allow number name) */ static int fetch_name(OnigCodePoint start_code, UChar** src, UChar* end, - UChar** rname_end, ScanEnv* env, int* rback_num, int ref) + UChar** rname_end, ScanEnv* env, int* rback_num, + enum REF_NUM* num_type, int ref) { - int r, is_num, sign; + int r, sign; + int digit_count; OnigCodePoint end_code; OnigCodePoint c = 0; OnigEncoding enc = env->enc; @@ -2637,10 +4400,11 @@ fetch_name(OnigCodePoint start_code, UChar** src, UChar* end, end_code = get_name_end_code_point(start_code); + digit_count = 0; name_end = end; pnum_head = *src; r = 0; - is_num = 0; + *num_type = IS_NOT_NUM; sign = 1; if (PEND) { return ONIGERR_EMPTY_GROUP_NAME; @@ -2650,171 +4414,106 @@ fetch_name(OnigCodePoint start_code, UChar** src, UChar* end, if (c == end_code) return ONIGERR_EMPTY_GROUP_NAME; - if (ONIGENC_IS_CODE_DIGIT(enc, c)) { + if (IS_CODE_DIGIT_ASCII(enc, c)) { if (ref == 1) - is_num = 1; + *num_type = IS_ABS_NUM; else { r = ONIGERR_INVALID_GROUP_NAME; - is_num = 0; } + digit_count++; } else if (c == '-') { if (ref == 1) { - is_num = 2; + *num_type = IS_REL_NUM; sign = -1; pnum_head = p; } else { r = ONIGERR_INVALID_GROUP_NAME; - is_num = 0; } } - else if (!ONIGENC_IS_CODE_WORD(enc, c)) { - r = ONIGERR_INVALID_CHAR_IN_GROUP_NAME; - } - } - - if (r == 0) { - while (!PEND) { - name_end = p; - PFETCH_S(c); - if (c == end_code || c == ')') { - if (is_num == 2) r = ONIGERR_INVALID_GROUP_NAME; - break; - } - - if (is_num != 0) { - if (ONIGENC_IS_CODE_DIGIT(enc, c)) { - is_num = 1; - } - else { - if (!ONIGENC_IS_CODE_WORD(enc, c)) - r = ONIGERR_INVALID_CHAR_IN_GROUP_NAME; - else - r = ONIGERR_INVALID_GROUP_NAME; - is_num = 0; - } + else if (c == '+') { + if (ref == 1) { + *num_type = IS_REL_NUM; + sign = 1; + pnum_head = p; } else { - if (!ONIGENC_IS_CODE_WORD(enc, c)) { - r = ONIGERR_INVALID_CHAR_IN_GROUP_NAME; - } - } - } - - if (c != end_code) { - r = ONIGERR_INVALID_GROUP_NAME; - name_end = end; - } - - if (is_num != 0) { - *rback_num = onig_scan_unsigned_number(&pnum_head, name_end, enc); - if (*rback_num < 0) return ONIGERR_TOO_BIG_NUMBER; - else if (*rback_num == 0) { r = ONIGERR_INVALID_GROUP_NAME; - goto err; } - - *rback_num *= sign; - } - - *rname_end = name_end; - *src = p; - return 0; - } - else { - while (!PEND) { - name_end = p; - PFETCH_S(c); - if (c == end_code || c == ')') - break; - } - if (PEND) - name_end = end; - - err: - onig_scan_env_set_error_string(env, r, *src, name_end); - return r; - } -} -#else -static int -fetch_name(OnigCodePoint start_code, UChar** src, UChar* end, - UChar** rname_end, ScanEnv* env, int* rback_num, int ref) -{ - int r, is_num, sign; - OnigCodePoint end_code; - OnigCodePoint c = 0; - UChar *name_end; - OnigEncoding enc = env->enc; - UChar *pnum_head; - UChar *p = *src; - PFETCH_READY; - - *rback_num = 0; - - end_code = get_name_end_code_point(start_code); - - *rname_end = name_end = end; - r = 0; - pnum_head = *src; - is_num = 0; - sign = 1; - - if (PEND) { - return ONIGERR_EMPTY_GROUP_NAME; - } - else { - PFETCH(c); - if (c == end_code) - return ONIGERR_EMPTY_GROUP_NAME; - - if (ONIGENC_IS_CODE_DIGIT(enc, c)) { - is_num = 1; - } - else if (c == '-') { - is_num = 2; - sign = -1; - pnum_head = p; - } - else { - r = ONIGERR_INVALID_CHAR_IN_GROUP_NAME; } - } - - while (!PEND) { - name_end = p; - - PFETCH(c); - if (c == end_code || c == ')') break; - if (! ONIGENC_IS_CODE_DIGIT(enc, c)) + else if (!ONIGENC_IS_CODE_WORD(enc, c)) { r = ONIGERR_INVALID_CHAR_IN_GROUP_NAME; - } - if (r == 0 && c != end_code) { - r = ONIGERR_INVALID_GROUP_NAME; - name_end = end; + } } if (r == 0) { - *rback_num = onig_scan_unsigned_number(&pnum_head, name_end, enc); - if (*rback_num < 0) return ONIGERR_TOO_BIG_NUMBER; - else if (*rback_num == 0) { + while (!PEND) { + name_end = p; + PFETCH_S(c); + if (c == end_code || c == ')') { + if (*num_type != IS_NOT_NUM && digit_count == 0) + r = ONIGERR_INVALID_GROUP_NAME; + break; + } + + if (*num_type != IS_NOT_NUM) { + if (IS_CODE_DIGIT_ASCII(enc, c)) { + digit_count++; + } + else { + if (!ONIGENC_IS_CODE_WORD(enc, c)) + r = ONIGERR_INVALID_CHAR_IN_GROUP_NAME; + else + r = ONIGERR_INVALID_GROUP_NAME; + + *num_type = IS_NOT_NUM; + } + } + else { + if (!ONIGENC_IS_CODE_WORD(enc, c)) { + r = ONIGERR_INVALID_CHAR_IN_GROUP_NAME; + } + } + } + + if (c != end_code) { r = ONIGERR_INVALID_GROUP_NAME; goto err; } - *rback_num *= sign; + + if (*num_type != IS_NOT_NUM) { + *rback_num = onig_scan_unsigned_number(&pnum_head, name_end, enc); + if (*rback_num < 0) return ONIGERR_TOO_BIG_NUMBER; + else if (*rback_num == 0) { + if (*num_type == IS_REL_NUM) { + r = ONIGERR_INVALID_GROUP_NAME; + goto err; + } + } + + *rback_num *= sign; + } *rname_end = name_end; *src = p; return 0; } else { + while (!PEND) { + name_end = p; + PFETCH_S(c); + if (c == end_code || c == ')') + break; + } + if (PEND) + name_end = end; + err: onig_scan_env_set_error_string(env, r, *src, name_end); return r; } } -#endif /* USE_NAMED_GROUP */ static void CC_ESC_WARN(ScanEnv* env, UChar *c) @@ -2825,8 +4524,9 @@ CC_ESC_WARN(ScanEnv* env, UChar *c) IS_SYNTAX_BV(env->syntax, ONIG_SYN_BACKSLASH_ESCAPE_IN_CC)) { UChar buf[WARN_BUFSIZE]; onig_snprintf_with_pattern(buf, WARN_BUFSIZE, env->enc, - env->pattern, env->pattern_end, - (UChar* )"character class has '%s' without escape", c); + env->pattern, env->pattern_end, + (UChar* )"character class has '%s' without escape", + c); (*onig_warn)((char* )buf); } } @@ -2839,15 +4539,15 @@ CLOSE_BRACKET_WITHOUT_ESC_WARN(ScanEnv* env, UChar* c) if (IS_SYNTAX_BV((env)->syntax, ONIG_SYN_WARN_CC_OP_NOT_ESCAPED)) { UChar buf[WARN_BUFSIZE]; onig_snprintf_with_pattern(buf, WARN_BUFSIZE, (env)->enc, - (env)->pattern, (env)->pattern_end, - (UChar* )"regular expression has '%s' without escape", c); + (env)->pattern, (env)->pattern_end, + (UChar* )"regular expression has '%s' without escape", c); (*onig_warn)((char* )buf); } } static UChar* find_str_position(OnigCodePoint s[], int n, UChar* from, UChar* to, - UChar **next, OnigEncoding enc) + UChar **next, OnigEncoding enc) { int i; OnigCodePoint x; @@ -2859,14 +4559,14 @@ find_str_position(OnigCodePoint s[], int n, UChar* from, UChar* to, q = p + enclen(enc, p); if (x == s[0]) { for (i = 1; i < n && q < to; i++) { - x = ONIGENC_MBC_TO_CODE(enc, q, to); - if (x != s[i]) break; - q += enclen(enc, q); + x = ONIGENC_MBC_TO_CODE(enc, q, to); + if (x != s[i]) break; + q += enclen(enc, q); } if (i >= n) { - if (IS_NOT_NULL(next)) - *next = q; - return p; + if (IS_NOT_NULL(next)) + *next = q; + return p; } } p = q; @@ -2876,7 +4576,7 @@ find_str_position(OnigCodePoint s[], int n, UChar* from, UChar* to, static int str_exist_check_with_esc(OnigCodePoint s[], int n, UChar* from, UChar* to, - OnigCodePoint bad, OnigEncoding enc, OnigSyntaxType* syn) + OnigCodePoint bad, OnigEncoding enc, OnigSyntaxType* syn) { int i, in_esc; OnigCodePoint x; @@ -2893,19 +4593,19 @@ str_exist_check_with_esc(OnigCodePoint s[], int n, UChar* from, UChar* to, x = ONIGENC_MBC_TO_CODE(enc, p, to); q = p + enclen(enc, p); if (x == s[0]) { - for (i = 1; i < n && q < to; i++) { - x = ONIGENC_MBC_TO_CODE(enc, q, to); - if (x != s[i]) break; - q += enclen(enc, q); - } - if (i >= n) return 1; - p += enclen(enc, p); + for (i = 1; i < n && q < to; i++) { + x = ONIGENC_MBC_TO_CODE(enc, q, to); + if (x != s[i]) break; + q += enclen(enc, q); + } + if (i >= n) return 1; + p += enclen(enc, p); } else { - x = ONIGENC_MBC_TO_CODE(enc, p, to); - if (x == bad) return 0; - else if (x == MC_ESC(syn)) in_esc = 1; - p = q; + x = ONIGENC_MBC_TO_CODE(enc, p, to); + if (x == bad) return 0; + else if (x == MC_ESC(syn)) in_esc = 1; + p = q; } } } @@ -2995,21 +4695,50 @@ fetch_token_in_cc(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env) case 'p': case 'P': + if (PEND) break; + c2 = PPEEK; if (c2 == '{' && - IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_P_BRACE_CHAR_PROPERTY)) { - PINC; - tok->type = TK_CHAR_PROPERTY; - tok->u.prop.not = (c == 'P' ? 1 : 0); - - if (IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_P_BRACE_CIRCUMFLEX_NOT)) { - PFETCH(c2); - if (c2 == '^') { - tok->u.prop.not = (tok->u.prop.not == 0 ? 1 : 0); - } - else - PUNFETCH; - } + IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_P_BRACE_CHAR_PROPERTY)) { + PINC; + tok->type = TK_CHAR_PROPERTY; + tok->u.prop.not = (c == 'P' ? 1 : 0); + + if (!PEND && IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_P_BRACE_CIRCUMFLEX_NOT)) { + PFETCH(c2); + if (c2 == '^') { + tok->u.prop.not = (tok->u.prop.not == 0 ? 1 : 0); + } + else + PUNFETCH; + } + } + break; + + case 'o': + if (PEND) break; + + prev = p; + if (PPEEK_IS('{') && IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_O_BRACE_OCTAL)) { + PINC; + num = scan_unsigned_octal_number(&p, end, 11, enc); + if (num < 0) return ONIGERR_TOO_BIG_WIDE_CHAR_VALUE; + if (!PEND) { + c2 = PPEEK; + if (IS_CODE_DIGIT_ASCII(enc, c2)) + 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 = (OnigCodePoint )num; + } + else { + /* can't read nothing or invalid format */ + p = prev; + } } break; @@ -3018,35 +4747,40 @@ fetch_token_in_cc(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env) prev = p; if (PPEEK_IS('{') && IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_X_BRACE_HEX8)) { - PINC; - num = scan_unsigned_hexadecimal_number(&p, end, 8, enc); - if (num < 0) return ONIGERR_TOO_BIG_WIDE_CHAR_VALUE; - if (!PEND) { + PINC; + num = scan_unsigned_hexadecimal_number(&p, end, 0, 8, enc); + if (num < 0) { + if (num == ONIGERR_TOO_BIG_NUMBER) + return ONIGERR_TOO_BIG_WIDE_CHAR_VALUE; + else + return num; + } + if (!PEND) { c2 = PPEEK; - if (ONIGENC_IS_CODE_XDIGIT(enc, c2)) + if (IS_CODE_XDIGIT_ASCII(enc, c2)) return ONIGERR_TOO_LONG_WIDE_CHAR_VALUE; } - if (p > prev + enclen(enc, prev) && !PEND && (PPEEK_IS('}'))) { - PINC; - tok->type = TK_CODE_POINT; - tok->base = 16; - tok->u.code = (OnigCodePoint )num; - } - else { - /* can't read nothing or invalid format */ - p = prev; - } + if (p > prev + enclen(enc, prev) && !PEND && (PPEEK_IS('}'))) { + PINC; + tok->type = TK_CODE_POINT; + tok->base = 16; + tok->u.code = (OnigCodePoint )num; + } + else { + /* can't read nothing or invalid format */ + p = prev; + } } else if (IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_X_HEX2)) { - num = scan_unsigned_hexadecimal_number(&p, end, 2, enc); - if (num < 0) return ONIGERR_TOO_BIG_NUMBER; - if (p == prev) { /* can't read nothing. */ - num = 0; /* but, it's not error */ - } - tok->type = TK_RAW_BYTE; - tok->base = 16; - tok->u.c = num; + num = scan_unsigned_hexadecimal_number(&p, end, 0, 2, enc); + if (num < 0) return num; + if (p == prev) { /* can't read nothing. */ + num = 0; /* but, it's not error */ + } + tok->type = TK_RAW_BYTE; + tok->base = 16; + tok->u.c = num; } break; @@ -3055,40 +4789,40 @@ fetch_token_in_cc(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env) prev = p; if (IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_U_HEX4)) { - num = scan_unsigned_hexadecimal_number(&p, end, 4, enc); - if (num < 0) return ONIGERR_TOO_BIG_NUMBER; - if (p == prev) { /* can't read nothing. */ - num = 0; /* but, it's not error */ - } - tok->type = TK_CODE_POINT; - tok->base = 16; - tok->u.code = (OnigCodePoint )num; + num = scan_unsigned_hexadecimal_number(&p, end, 4, 4, enc); + if (num < 0) return num; + if (p == prev) { /* can't read nothing. */ + num = 0; /* but, it's not error */ + } + tok->type = TK_CODE_POINT; + tok->base = 16; + tok->u.code = (OnigCodePoint )num; } break; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': if (IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_OCTAL3)) { - PUNFETCH; - prev = p; - num = scan_unsigned_octal_number(&p, end, 3, enc); - if (num < 0) return ONIGERR_TOO_BIG_NUMBER; - if (p == prev) { /* can't read nothing. */ - num = 0; /* but, it's not error */ - } - tok->type = TK_RAW_BYTE; - tok->base = 8; - tok->u.c = num; + PUNFETCH; + prev = p; + num = scan_unsigned_octal_number(&p, end, 3, enc); + if (num < 0 || num >= 256) return ONIGERR_TOO_BIG_NUMBER; + if (p == prev) { /* can't read nothing. */ + num = 0; /* but, it's not error */ + } + tok->type = TK_RAW_BYTE; + tok->base = 8; + tok->u.c = num; } break; default: PUNFETCH; - num = fetch_escaped_value(&p, end, env); + num = fetch_escaped_value(&p, end, env, &c2); if (num < 0) return num; - if (tok->u.c != num) { - tok->u.code = (OnigCodePoint )num; - tok->type = TK_CODE_POINT; + if (tok->u.c != c2) { + tok->u.code = c2; + tok->type = TK_CODE_POINT; } break; } @@ -3096,30 +4830,30 @@ fetch_token_in_cc(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env) else if (c == '[') { if (IS_SYNTAX_OP(syn, ONIG_SYN_OP_POSIX_BRACKET) && (PPEEK_IS(':'))) { OnigCodePoint send[] = { (OnigCodePoint )':', (OnigCodePoint )']' }; - tok->backp = p; /* point at '[' is readed */ + tok->backp = p; /* point at '[' is read */ PINC; if (str_exist_check_with_esc(send, 2, p, end, (OnigCodePoint )']', enc, syn)) { - tok->type = TK_POSIX_BRACKET_OPEN; + tok->type = TK_POSIX_BRACKET_OPEN; } else { - PUNFETCH; - goto cc_in_cc; + PUNFETCH; + goto cc_in_cc; } } else { cc_in_cc: if (IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_CCLASS_SET_OP)) { - tok->type = TK_CC_CC_OPEN; + tok->type = TK_CC_CC_OPEN; } else { - CC_ESC_WARN(env, (UChar* )"["); + CC_ESC_WARN(env, (UChar* )"["); } } } else if (c == '&') { if (IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_CCLASS_SET_OP) && - !PEND && (PPEEK_IS('&'))) { + !PEND && (PPEEK_IS('&'))) { PINC; tok->type = TK_CC_AND; } @@ -3184,26 +4918,26 @@ fetch_token(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env) tok->u.repeat.upper = 1; greedy_check: if (!PEND && PPEEK_IS('?') && - IS_SYNTAX_OP(syn, ONIG_SYN_OP_QMARK_NON_GREEDY)) { - PFETCH(c); - tok->u.repeat.greedy = 0; - tok->u.repeat.possessive = 0; + IS_SYNTAX_OP(syn, ONIG_SYN_OP_QMARK_NON_GREEDY)) { + PFETCH(c); + tok->u.repeat.greedy = 0; + tok->u.repeat.possessive = 0; } else { possessive_check: - if (!PEND && PPEEK_IS('+') && - ((IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_PLUS_POSSESSIVE_REPEAT) && - tok->type != TK_INTERVAL) || - (IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_PLUS_POSSESSIVE_INTERVAL) && - tok->type == TK_INTERVAL))) { - PFETCH(c); - tok->u.repeat.greedy = 1; - tok->u.repeat.possessive = 1; - } - else { - tok->u.repeat.greedy = 1; - tok->u.repeat.possessive = 0; - } + if (!PEND && PPEEK_IS('+') && + ((IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_PLUS_POSSESSIVE_REPEAT) && + tok->type != TK_INTERVAL) || + (IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_PLUS_POSSESSIVE_INTERVAL) && + tok->type == TK_INTERVAL))) { + PFETCH(c); + tok->u.repeat.greedy = 1; + tok->u.repeat.possessive = 1; + } + else { + tok->u.repeat.greedy = 1; + tok->u.repeat.possessive = 0; + } } break; @@ -3213,10 +4947,10 @@ fetch_token(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env) if (r < 0) return r; /* error */ if (r == 0) goto greedy_check; else if (r == 2) { /* {n} */ - if (IS_SYNTAX_BV(syn, ONIG_SYN_FIXED_INTERVAL_IS_GREEDY_ONLY)) - goto possessive_check; + if (IS_SYNTAX_BV(syn, ONIG_SYN_FIXED_INTERVAL_IS_GREEDY_ONLY)) + goto possessive_check; - goto greedy_check; + goto greedy_check; } /* r == 1 : normal char */ break; @@ -3253,13 +4987,25 @@ fetch_token(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env) case 'b': if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_B_WORD_BOUND)) break; tok->type = TK_ANCHOR; - tok->u.anchor = ANCHOR_WORD_BOUND; + tok->u.anchor = ANCHOR_WORD_BOUNDARY; break; case 'B': if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_B_WORD_BOUND)) break; tok->type = TK_ANCHOR; - tok->u.anchor = ANCHOR_NOT_WORD_BOUND; + tok->u.anchor = ANCHOR_NO_WORD_BOUNDARY; + break; + + case 'y': + if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP2_ESC_X_Y_GRAPHEME_CLUSTER)) break; + tok->type = TK_ANCHOR; + tok->u.anchor = ANCHOR_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY; + break; + + case 'Y': + if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP2_ESC_X_Y_GRAPHEME_CLUSTER)) break; + tok->type = TK_ANCHOR; + tok->u.anchor = ANCHOR_NO_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY; break; #ifdef USE_WORD_BEGIN_END @@ -3318,6 +5064,31 @@ fetch_token(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env) tok->u.prop.not = 1; break; + case 'K': + if (! IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_CAPITAL_K_KEEP)) break; + tok->type = TK_KEEP; + break; + + case 'R': + if (! IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_CAPITAL_R_GENERAL_NEWLINE)) break; + tok->type = TK_GENERAL_NEWLINE; + break; + + case 'N': + if (! IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_CAPITAL_N_O_SUPER_DOT)) break; + tok->type = TK_NO_NEWLINE; + break; + + case 'O': + if (! IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_CAPITAL_N_O_SUPER_DOT)) break; + tok->type = TK_TRUE_ANYCHAR; + break; + + case 'X': + if (! IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_X_Y_GRAPHEME_CLUSTER)) break; + tok->type = TK_EXTENDED_GRAPHEME_CLUSTER; + break; + case 'A': if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_AZ_BUF_ANCHOR)) break; begin_buf: @@ -3354,38 +5125,68 @@ fetch_token(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env) goto end_buf; break; + case 'o': + if (PEND) break; + + prev = p; + if (PPEEK_IS('{') && IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_O_BRACE_OCTAL)) { + PINC; + num = scan_unsigned_octal_number(&p, end, 11, enc); + if (num < 0) return ONIGERR_TOO_BIG_WIDE_CHAR_VALUE; + if (!PEND) { + if (IS_CODE_DIGIT_ASCII(enc, PPEEK)) + 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 = (OnigCodePoint )num; + } + else { + /* can't read nothing or invalid format */ + p = prev; + } + } + break; + case 'x': if (PEND) break; prev = p; if (PPEEK_IS('{') && IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_X_BRACE_HEX8)) { - PINC; - num = scan_unsigned_hexadecimal_number(&p, end, 8, enc); - if (num < 0) return ONIGERR_TOO_BIG_WIDE_CHAR_VALUE; - if (!PEND) { - if (ONIGENC_IS_CODE_XDIGIT(enc, PPEEK)) + PINC; + num = scan_unsigned_hexadecimal_number(&p, end, 0, 8, enc); + if (num < 0) { + if (num == ONIGERR_TOO_BIG_NUMBER) + return ONIGERR_TOO_BIG_WIDE_CHAR_VALUE; + else + return num; + } + if (!PEND) { + if (IS_CODE_XDIGIT_ASCII(enc, PPEEK)) 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 = (OnigCodePoint )num; - } - else { - /* can't read nothing or invalid format */ - p = prev; - } + if ((p > prev + enclen(enc, prev)) && !PEND && PPEEK_IS('}')) { + PINC; + tok->type = TK_CODE_POINT; + tok->u.code = (OnigCodePoint )num; + } + else { + /* can't read nothing or invalid format */ + p = prev; + } } else if (IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_X_HEX2)) { - num = scan_unsigned_hexadecimal_number(&p, end, 2, enc); - if (num < 0) return ONIGERR_TOO_BIG_NUMBER; - if (p == prev) { /* can't read nothing. */ - num = 0; /* but, it's not error */ - } - tok->type = TK_RAW_BYTE; - tok->base = 16; - tok->u.c = num; + num = scan_unsigned_hexadecimal_number(&p, end, 0, 2, enc); + if (num < 0) return num; + if (p == prev) { /* can't read nothing. */ + num = 0; /* but, it's not error */ + } + tok->type = TK_RAW_BYTE; + tok->base = 16; + tok->u.c = num; } break; @@ -3394,14 +5195,14 @@ fetch_token(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env) prev = p; if (IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_U_HEX4)) { - num = scan_unsigned_hexadecimal_number(&p, end, 4, enc); - if (num < 0) return ONIGERR_TOO_BIG_NUMBER; - if (p == prev) { /* can't read nothing. */ - num = 0; /* but, it's not error */ - } - tok->type = TK_CODE_POINT; - tok->base = 16; - tok->u.code = (OnigCodePoint )num; + num = scan_unsigned_hexadecimal_number(&p, end, 4, 4, enc); + if (num < 0) return num; + if (p == prev) { /* can't read nothing. */ + num = 0; /* but, it's not error */ + } + tok->type = TK_CODE_POINT; + tok->base = 16; + tok->u.code = (OnigCodePoint )num; } break; @@ -3415,180 +5216,202 @@ fetch_token(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env) } if (IS_SYNTAX_OP(syn, ONIG_SYN_OP_DECIMAL_BACKREF) && - (num <= env->num_mem || num <= 9)) { /* This spec. from GNU regex */ - if (IS_SYNTAX_BV(syn, ONIG_SYN_STRICT_CHECK_BACKREF)) { - if (num > env->num_mem || IS_NULL(SCANENV_MEM_NODES(env)[num])) - return ONIGERR_INVALID_BACKREF; - } - - tok->type = TK_BACKREF; - tok->u.backref.num = 1; - tok->u.backref.ref1 = num; - tok->u.backref.by_name = 0; + (num <= env->num_mem || num <= 9)) { /* This spec. from GNU regex */ + if (IS_SYNTAX_BV(syn, ONIG_SYN_STRICT_CHECK_BACKREF)) { + if (num > env->num_mem || IS_NULL(SCANENV_MEMENV(env)[num].node)) + return ONIGERR_INVALID_BACKREF; + } + + tok->type = TK_BACKREF; + tok->u.backref.num = 1; + tok->u.backref.ref1 = num; + tok->u.backref.by_name = 0; #ifdef USE_BACKREF_WITH_LEVEL - tok->u.backref.exist_level = 0; + tok->u.backref.exist_level = 0; #endif - break; + break; } skip_backref: if (c == '8' || c == '9') { - /* normal char */ - p = prev; PINC; - break; + /* normal char */ + p = prev; PINC; + break; } p = prev; /* fall through */ case '0': if (IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_OCTAL3)) { - prev = p; - num = scan_unsigned_octal_number(&p, end, (c == '0' ? 2:3), enc); - if (num < 0) return ONIGERR_TOO_BIG_NUMBER; - if (p == prev) { /* can't read nothing. */ - num = 0; /* but, it's not error */ - } - tok->type = TK_RAW_BYTE; - tok->base = 8; - tok->u.c = num; + prev = p; + num = scan_unsigned_octal_number(&p, end, (c == '0' ? 2:3), enc); + if (num < 0 || num >= 256) return ONIGERR_TOO_BIG_NUMBER; + if (p == prev) { /* can't read nothing. */ + num = 0; /* but, it's not error */ + } + tok->type = TK_RAW_BYTE; + tok->base = 8; + tok->u.c = num; } else if (c != '0') { - PINC; + PINC; } break; -#ifdef USE_NAMED_GROUP case 'k': - if (IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_K_NAMED_BACKREF)) { - PFETCH(c); - if (c == '<' || c == '\'') { - UChar* name_end; - int* backs; - int back_num; + if (!PEND && IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_K_NAMED_BACKREF)) { + PFETCH(c); + if (c == '<' || c == '\'') { + UChar* name_end; + int* backs; + int back_num; + enum REF_NUM num_type; - prev = p; + prev = p; #ifdef USE_BACKREF_WITH_LEVEL - name_end = NULL_UCHARP; /* no need. escape gcc warning. */ - r = fetch_name_with_level((OnigCodePoint )c, &p, end, &name_end, - env, &back_num, &tok->u.backref.level); - if (r == 1) tok->u.backref.exist_level = 1; - else tok->u.backref.exist_level = 0; + name_end = NULL_UCHARP; /* no need. escape gcc warning. */ + r = fetch_name_with_level((OnigCodePoint )c, &p, end, &name_end, + env, &back_num, &tok->u.backref.level, &num_type); + if (r == 1) tok->u.backref.exist_level = 1; + else tok->u.backref.exist_level = 0; #else - r = fetch_name(&p, end, &name_end, env, &back_num, 1); + r = fetch_name(c, &p, end, &name_end, env, &back_num, &num_type, 1); #endif - if (r < 0) return r; - - if (back_num != 0) { - if (back_num < 0) { - back_num = BACKREF_REL_TO_ABS(back_num, env); - if (back_num <= 0) - return ONIGERR_INVALID_BACKREF; - } - - if (IS_SYNTAX_BV(syn, ONIG_SYN_STRICT_CHECK_BACKREF)) { - if (back_num > env->num_mem || - IS_NULL(SCANENV_MEM_NODES(env)[back_num])) - return ONIGERR_INVALID_BACKREF; - } - tok->type = TK_BACKREF; - tok->u.backref.by_name = 0; - tok->u.backref.num = 1; - tok->u.backref.ref1 = back_num; - } - else { - num = onig_name_to_group_numbers(env->reg, prev, name_end, &backs); - if (num <= 0) { - onig_scan_env_set_error_string(env, - ONIGERR_UNDEFINED_NAME_REFERENCE, prev, name_end); - return ONIGERR_UNDEFINED_NAME_REFERENCE; - } - if (IS_SYNTAX_BV(syn, ONIG_SYN_STRICT_CHECK_BACKREF)) { - int i; - for (i = 0; i < num; i++) { - if (backs[i] > env->num_mem || - IS_NULL(SCANENV_MEM_NODES(env)[backs[i]])) - return ONIGERR_INVALID_BACKREF; - } - } - - tok->type = TK_BACKREF; - tok->u.backref.by_name = 1; - if (num == 1) { - tok->u.backref.num = 1; - tok->u.backref.ref1 = backs[0]; - } - else { - tok->u.backref.num = num; - tok->u.backref.refs = backs; - } - } - } - else - PUNFETCH; + if (r < 0) return r; + + if (num_type != IS_NOT_NUM) { + if (num_type == IS_REL_NUM) { + back_num = backref_rel_to_abs(back_num, env); + } + if (back_num <= 0) + return ONIGERR_INVALID_BACKREF; + + if (IS_SYNTAX_BV(syn, ONIG_SYN_STRICT_CHECK_BACKREF)) { + if (back_num > env->num_mem || + IS_NULL(SCANENV_MEMENV(env)[back_num].node)) + return ONIGERR_INVALID_BACKREF; + } + tok->type = TK_BACKREF; + tok->u.backref.by_name = 0; + tok->u.backref.num = 1; + tok->u.backref.ref1 = back_num; + } + else { + num = onig_name_to_group_numbers(env->reg, prev, name_end, &backs); + if (num <= 0) { + onig_scan_env_set_error_string(env, + ONIGERR_UNDEFINED_NAME_REFERENCE, prev, name_end); + return ONIGERR_UNDEFINED_NAME_REFERENCE; + } + if (IS_SYNTAX_BV(syn, ONIG_SYN_STRICT_CHECK_BACKREF)) { + int i; + for (i = 0; i < num; i++) { + if (backs[i] > env->num_mem || + IS_NULL(SCANENV_MEMENV(env)[backs[i]].node)) + return ONIGERR_INVALID_BACKREF; + } + } + + tok->type = TK_BACKREF; + tok->u.backref.by_name = 1; + if (num == 1) { + tok->u.backref.num = 1; + tok->u.backref.ref1 = backs[0]; + } + else { + tok->u.backref.num = num; + tok->u.backref.refs = backs; + } + } + } + else + PUNFETCH; } break; -#endif -#ifdef USE_SUBEXP_CALL +#ifdef USE_CALL case 'g': - if (IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_G_SUBEXP_CALL)) { - PFETCH(c); - if (c == '<' || c == '\'') { - int gnum; - UChar* name_end; - - prev = p; - r = fetch_name((OnigCodePoint )c, &p, end, &name_end, env, &gnum, 1); - if (r < 0) return r; - - tok->type = TK_CALL; - tok->u.call.name = prev; - tok->u.call.name_end = name_end; - tok->u.call.gnum = gnum; - } - else - PUNFETCH; + if (!PEND && IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_G_SUBEXP_CALL)) { + PFETCH(c); + if (c == '<' || c == '\'') { + int gnum; + UChar* name_end; + enum REF_NUM num_type; + + prev = p; + r = fetch_name((OnigCodePoint )c, &p, end, &name_end, env, + &gnum, &num_type, 1); + if (r < 0) return r; + + if (num_type != IS_NOT_NUM) { + if (num_type == IS_REL_NUM) { + gnum = backref_rel_to_abs(gnum, env); + if (gnum < 0) { + onig_scan_env_set_error_string(env, ONIGERR_UNDEFINED_NAME_REFERENCE, + prev, name_end); + return ONIGERR_UNDEFINED_GROUP_REFERENCE; + } + } + tok->u.call.by_number = 1; + tok->u.call.gnum = gnum; + } + else { + tok->u.call.by_number = 0; + tok->u.call.gnum = 0; + } + + tok->type = TK_CALL; + tok->u.call.name = prev; + tok->u.call.name_end = name_end; + } + else + PUNFETCH; } break; #endif case 'Q': if (IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_CAPITAL_Q_QUOTE)) { - tok->type = TK_QUOTE_OPEN; + tok->type = TK_QUOTE_OPEN; } break; case 'p': case 'P': - if (PPEEK_IS('{') && - IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_P_BRACE_CHAR_PROPERTY)) { - PINC; - tok->type = TK_CHAR_PROPERTY; - tok->u.prop.not = (c == 'P' ? 1 : 0); - - if (IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_P_BRACE_CIRCUMFLEX_NOT)) { - PFETCH(c); - if (c == '^') { - tok->u.prop.not = (tok->u.prop.not == 0 ? 1 : 0); - } - else - PUNFETCH; - } + if (!PEND && PPEEK_IS('{') && + IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_P_BRACE_CHAR_PROPERTY)) { + PINC; + tok->type = TK_CHAR_PROPERTY; + tok->u.prop.not = (c == 'P' ? 1 : 0); + + if (!PEND && + IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_P_BRACE_CIRCUMFLEX_NOT)) { + PFETCH(c); + if (c == '^') { + tok->u.prop.not = (tok->u.prop.not == 0 ? 1 : 0); + } + else + PUNFETCH; + } } break; default: - PUNFETCH; - num = fetch_escaped_value(&p, end, env); - if (num < 0) return num; - /* set_raw: */ - if (tok->u.c != num) { - tok->type = TK_CODE_POINT; - tok->u.code = (OnigCodePoint )num; - } - else { /* string */ - p = tok->backp + enclen(enc, tok->backp); + { + OnigCodePoint c2; + + PUNFETCH; + num = fetch_escaped_value(&p, end, env, &c2); + if (num < 0) return num; + /* set_raw: */ + if (tok->u.c != c2) { + tok->type = TK_CODE_POINT; + tok->u.code = c2; + } + else { /* string */ + p = tok->backp + enclen(enc, tok->backp); + } } break; } @@ -3599,18 +5422,18 @@ fetch_token(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env) #ifdef USE_VARIABLE_META_CHARS if ((c != ONIG_INEFFECTIVE_META_CHAR) && - IS_SYNTAX_OP(syn, ONIG_SYN_OP_VARIABLE_META_CHARACTERS)) { + IS_SYNTAX_OP(syn, ONIG_SYN_OP_VARIABLE_META_CHARACTERS)) { if (c == MC_ANYCHAR(syn)) - goto any_char; + goto any_char; else if (c == MC_ANYTIME(syn)) - goto anytime; + goto anytime; else if (c == MC_ZERO_OR_ONE_TIME(syn)) - goto zero_or_one_time; + goto zero_or_one_time; else if (c == MC_ONE_OR_MORE_TIME(syn)) - goto one_or_more_time; + goto one_or_more_time; else if (c == MC_ANYCHAR_ANYTIME(syn)) { - tok->type = TK_ANYCHAR_ANYTIME; - goto out; + tok->type = TK_ANYCHAR_ANYTIME; + goto out; } } #endif @@ -3663,10 +5486,10 @@ fetch_token(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env) if (r < 0) return r; /* error */ if (r == 0) goto greedy_check; else if (r == 2) { /* {n} */ - if (IS_SYNTAX_BV(syn, ONIG_SYN_FIXED_INTERVAL_IS_GREEDY_ONLY)) - goto possessive_check; + if (IS_SYNTAX_BV(syn, ONIG_SYN_FIXED_INTERVAL_IS_GREEDY_ONLY)) + goto possessive_check; - goto greedy_check; + goto greedy_check; } /* r == 1 : normal char */ break; @@ -3677,23 +5500,97 @@ fetch_token(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env) break; case '(': - if (PPEEK_IS('?') && + if (!PEND && PPEEK_IS('?') && IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_QMARK_GROUP_EFFECT)) { PINC; - if (PPEEK_IS('#')) { - PFETCH(c); - while (1) { - if (PEND) return ONIGERR_END_PATTERN_IN_GROUP; + if (! PEND) { + c = PPEEK; + if (c == '#') { PFETCH(c); - if (c == MC_ESC(syn)) { - if (!PEND) PFETCH(c); + while (1) { + if (PEND) return ONIGERR_END_PATTERN_IN_GROUP; + PFETCH(c); + if (c == MC_ESC(syn)) { + if (! PEND) PFETCH(c); + } + else { + if (c == ')') break; + } } - else { - if (c == ')') break; + goto start; + } + else if (IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_QMARK_PERL_SUBEXP_CALL)) { + int gnum; + UChar* name; + UChar* name_end; + enum REF_NUM num_type; + + switch (c) { + case '&': + { + PINC; + name = p; + r = fetch_name((OnigCodePoint )'(', &p, end, &name_end, env, &gnum, + &num_type, 0); + if (r < 0) return r; + + tok->type = TK_CALL; + tok->u.call.by_number = 0; + tok->u.call.gnum = 0; + tok->u.call.name = name; + tok->u.call.name_end = name_end; + } + break; + + case 'R': + tok->type = TK_CALL; + tok->u.call.by_number = 1; + tok->u.call.gnum = 0; + tok->u.call.name = p; + PINC; + if (! PPEEK_IS(')')) return ONIGERR_INVALID_GROUP_NAME; + tok->u.call.name_end = p; + break; + + case '-': + case '+': + goto lparen_qmark_num; + break; + default: + if (! ONIGENC_IS_CODE_DIGIT(enc, c)) goto lparen_qmark_end; + + lparen_qmark_num: + { + name = p; + r = fetch_name((OnigCodePoint )'(', &p, end, &name_end, env, + &gnum, &num_type, 1); + if (r < 0) return r; + + if (num_type == IS_NOT_NUM) { + return ONIGERR_INVALID_GROUP_NAME; + } + else { + if (num_type == IS_REL_NUM) { + gnum = backref_rel_to_abs(gnum, env); + if (gnum < 0) { + onig_scan_env_set_error_string(env, + ONIGERR_UNDEFINED_NAME_REFERENCE, name, name_end); + return ONIGERR_UNDEFINED_GROUP_REFERENCE; + } + } + tok->u.call.by_number = 1; + tok->u.call.gnum = gnum; + } + + tok->type = TK_CALL; + tok->u.call.name = name; + tok->u.call.name_end = name_end; + } + break; } } - goto start; } + lparen_qmark_end: PUNFETCH; } @@ -3709,15 +5606,15 @@ fetch_token(OnigToken* 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->option) - ? ANCHOR_BEGIN_BUF : ANCHOR_BEGIN_LINE); + tok->u.subtype = (IS_SINGLELINE(env->options) + ? ANCHOR_BEGIN_BUF : ANCHOR_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->option) - ? ANCHOR_SEMI_END_BUF : ANCHOR_END_LINE); + tok->u.subtype = (IS_SINGLELINE(env->options) + ? ANCHOR_SEMI_END_BUF : ANCHOR_END_LINE); break; case '[': @@ -3727,24 +5624,24 @@ fetch_token(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env) case ']': if (*src > env->pattern) /* /].../ is allowed. */ - CLOSE_BRACKET_WITHOUT_ESC_WARN(env, (UChar* )"]"); + CLOSE_BRACKET_WITHOUT_ESC_WARN(env, (UChar* )"]"); break; case '#': - if (IS_EXTEND(env->option)) { - while (!PEND) { - PFETCH(c); - if (ONIGENC_IS_CODE_NEWLINE(enc, c)) - break; - } - goto start; - break; + if (IS_EXTEND(env->options)) { + while (!PEND) { + PFETCH(c); + if (ONIGENC_IS_CODE_NEWLINE(enc, c)) + break; + } + goto start; + break; } break; case ' ': case '\t': case '\n': case '\r': case '\f': - if (IS_EXTEND(env->option)) - goto start; + if (IS_EXTEND(env->options)) + goto start; break; default: @@ -3762,8 +5659,8 @@ fetch_token(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env) static int add_ctype_to_cc_by_range(CClassNode* cc, int ctype ARG_UNUSED, int not, - OnigEncoding enc ARG_UNUSED, - OnigCodePoint sb_out, const OnigCodePoint mbr[]) + OnigEncoding enc ARG_UNUSED, OnigCodePoint sb_out, + const OnigCodePoint mbr[]) { int i, r; OnigCodePoint j; @@ -3774,17 +5671,16 @@ add_ctype_to_cc_by_range(CClassNode* cc, int ctype ARG_UNUSED, int not, for (i = 0; i < n; i++) { for (j = ONIGENC_CODE_RANGE_FROM(mbr, i); j <= ONIGENC_CODE_RANGE_TO(mbr, i); j++) { - if (j >= sb_out) { - if (j == ONIGENC_CODE_RANGE_TO(mbr, i)) i++; - else if (j > ONIGENC_CODE_RANGE_FROM(mbr, i)) { - r = add_code_range_to_buf(&(cc->mbuf), j, - ONIGENC_CODE_RANGE_TO(mbr, i)); - if (r != 0) return r; - i++; - } - - goto sb_end; - } + if (j >= sb_out) { + if (j > ONIGENC_CODE_RANGE_FROM(mbr, i)) { + r = add_code_range_to_buf(&(cc->mbuf), j, + ONIGENC_CODE_RANGE_TO(mbr, i)); + if (r != 0) return r; + i++; + } + + goto sb_end; + } BITSET_SET_BIT(cc->bs, j); } } @@ -3801,12 +5697,11 @@ add_ctype_to_cc_by_range(CClassNode* cc, int ctype ARG_UNUSED, int not, OnigCodePoint prev = 0; for (i = 0; i < n; i++) { - for (j = prev; - j < ONIGENC_CODE_RANGE_FROM(mbr, i); j++) { - if (j >= sb_out) { - goto sb_end2; - } - BITSET_SET_BIT(cc->bs, j); + for (j = prev; j < ONIGENC_CODE_RANGE_FROM(mbr, i); j++) { + if (j >= sb_out) { + goto sb_end2; + } + BITSET_SET_BIT(cc->bs, j); } prev = ONIGENC_CODE_RANGE_TO(mbr, i) + 1; } @@ -3819,38 +5714,145 @@ add_ctype_to_cc_by_range(CClassNode* cc, int ctype ARG_UNUSED, int not, for (i = 0; i < n; i++) { if (prev < ONIGENC_CODE_RANGE_FROM(mbr, i)) { - r = add_code_range_to_buf(&(cc->mbuf), prev, + r = add_code_range_to_buf(&(cc->mbuf), prev, ONIGENC_CODE_RANGE_FROM(mbr, i) - 1); - if (r != 0) return r; + if (r != 0) return r; } prev = ONIGENC_CODE_RANGE_TO(mbr, i) + 1; + if (prev == 0) goto end; + } + + r = add_code_range_to_buf(&(cc->mbuf), prev, MAX_CODE_POINT); + if (r != 0) return r; + } + + end: + return 0; +} + +static int +add_ctype_to_cc_by_range_limit(CClassNode* cc, int ctype ARG_UNUSED, int not, + OnigEncoding enc ARG_UNUSED, + OnigCodePoint sb_out, + const OnigCodePoint mbr[], OnigCodePoint limit) +{ + int i, r; + OnigCodePoint j; + OnigCodePoint from; + OnigCodePoint to; + + int n = ONIGENC_CODE_RANGE_NUM(mbr); + + if (not == 0) { + for (i = 0; i < n; i++) { + for (j = ONIGENC_CODE_RANGE_FROM(mbr, i); + j <= ONIGENC_CODE_RANGE_TO(mbr, i); j++) { + if (j > limit) goto end; + if (j >= sb_out) { + if (j > ONIGENC_CODE_RANGE_FROM(mbr, i)) { + to = ONIGENC_CODE_RANGE_TO(mbr, i); + if (to > limit) to = limit; + r = add_code_range_to_buf(&(cc->mbuf), j, to); + if (r != 0) return r; + i++; + } + + goto sb_end; + } + BITSET_SET_BIT(cc->bs, j); + } } - if (prev < 0x7fffffff) { - r = add_code_range_to_buf(&(cc->mbuf), prev, 0x7fffffff); + + sb_end: + for ( ; i < n; i++) { + from = ONIGENC_CODE_RANGE_FROM(mbr, i); + to = ONIGENC_CODE_RANGE_TO(mbr, i); + if (from > limit) break; + if (to > limit) to = limit; + r = add_code_range_to_buf(&(cc->mbuf), from, to); if (r != 0) return r; } } + else { + OnigCodePoint prev = 0; + + for (i = 0; i < n; i++) { + from = ONIGENC_CODE_RANGE_FROM(mbr, i); + if (from > limit) { + for (j = prev; j < sb_out; j++) { + BITSET_SET_BIT(cc->bs, j); + } + goto sb_end2; + } + for (j = prev; j < from; j++) { + if (j >= sb_out) goto sb_end2; + BITSET_SET_BIT(cc->bs, j); + } + prev = ONIGENC_CODE_RANGE_TO(mbr, i); + if (prev > limit) prev = limit; + prev++; + if (prev == 0) goto end; + } + for (j = prev; j < sb_out; j++) { + BITSET_SET_BIT(cc->bs, j); + } + + sb_end2: + prev = sb_out; + + for (i = 0; i < n; i++) { + from = ONIGENC_CODE_RANGE_FROM(mbr, i); + if (from > limit) goto last; + + if (prev < from) { + r = add_code_range_to_buf(&(cc->mbuf), prev, from - 1); + if (r != 0) return r; + } + prev = ONIGENC_CODE_RANGE_TO(mbr, i); + if (prev > limit) prev = limit; + prev++; + if (prev == 0) goto end; + } + + last: + r = add_code_range_to_buf(&(cc->mbuf), prev, MAX_CODE_POINT); + if (r != 0) return r; + } + end: return 0; } static int add_ctype_to_cc(CClassNode* cc, int ctype, int not, ScanEnv* env) { +#define ASCII_LIMIT 127 + int c, r; + int ascii_mode; const OnigCodePoint *ranges; + OnigCodePoint limit; OnigCodePoint sb_out; OnigEncoding enc = env->enc; + ascii_mode = IS_ASCII_MODE_CTYPE_OPTION(ctype, env->options); + r = ONIGENC_GET_CTYPE_CODE_RANGE(enc, ctype, &sb_out, &ranges); if (r == 0) { - return add_ctype_to_cc_by_range(cc, ctype, not, env->enc, sb_out, ranges); + if (ascii_mode == 0) + r = add_ctype_to_cc_by_range(cc, ctype, not, env->enc, sb_out, ranges); + else + r = add_ctype_to_cc_by_range_limit(cc, ctype, not, env->enc, sb_out, + ranges, ASCII_LIMIT); + return r; } else if (r != ONIG_NO_SUPPORT_CONFIG) { return r; } r = 0; + limit = ascii_mode ? ASCII_LIMIT : SINGLE_BYTE_SIZE; + switch (ctype) { case ONIGENC_CTYPE_ALPHA: case ONIGENC_CTYPE_BLANK: @@ -3864,50 +5866,45 @@ add_ctype_to_cc(CClassNode* cc, int ctype, int not, ScanEnv* env) case ONIGENC_CTYPE_ASCII: case ONIGENC_CTYPE_ALNUM: if (not != 0) { - for (c = 0; c < SINGLE_BYTE_SIZE; c++) { - if (! ONIGENC_IS_CODE_CTYPE(enc, (OnigCodePoint )c, ctype)) - BITSET_SET_BIT(cc->bs, c); + for (c = 0; c < (int )limit; c++) { + if (! ONIGENC_IS_CODE_CTYPE(enc, (OnigCodePoint )c, ctype)) + BITSET_SET_BIT(cc->bs, c); + } + for (c = limit; c < SINGLE_BYTE_SIZE; c++) { + BITSET_SET_BIT(cc->bs, c); } + ADD_ALL_MULTI_BYTE_RANGE(enc, cc->mbuf); } else { - for (c = 0; c < SINGLE_BYTE_SIZE; c++) { - if (ONIGENC_IS_CODE_CTYPE(enc, (OnigCodePoint )c, ctype)) - BITSET_SET_BIT(cc->bs, c); + for (c = 0; c < (int )limit; c++) { + if (ONIGENC_IS_CODE_CTYPE(enc, (OnigCodePoint )c, ctype)) + BITSET_SET_BIT(cc->bs, c); } } break; case ONIGENC_CTYPE_GRAPH: case ONIGENC_CTYPE_PRINT: + case ONIGENC_CTYPE_WORD: if (not != 0) { - for (c = 0; c < SINGLE_BYTE_SIZE; c++) { - if (! ONIGENC_IS_CODE_CTYPE(enc, (OnigCodePoint )c, ctype)) - BITSET_SET_BIT(cc->bs, c); - } - } - else { - for (c = 0; c < SINGLE_BYTE_SIZE; c++) { - if (ONIGENC_IS_CODE_CTYPE(enc, (OnigCodePoint )c, ctype)) - BITSET_SET_BIT(cc->bs, c); + for (c = 0; c < (int )limit; c++) { + if (ONIGENC_CODE_TO_MBCLEN(enc, c) > 0 /* check invalid code point */ + && ! ONIGENC_IS_CODE_CTYPE(enc, (OnigCodePoint )c, ctype)) + BITSET_SET_BIT(cc->bs, c); } - ADD_ALL_MULTI_BYTE_RANGE(enc, cc->mbuf); - } - break; - - case ONIGENC_CTYPE_WORD: - if (not == 0) { - for (c = 0; c < SINGLE_BYTE_SIZE; c++) { - if (IS_CODE_SB_WORD(enc, c)) BITSET_SET_BIT(cc->bs, c); + for (c = limit; c < SINGLE_BYTE_SIZE; c++) { + if (ONIGENC_CODE_TO_MBCLEN(enc, c) > 0) + BITSET_SET_BIT(cc->bs, c); } - ADD_ALL_MULTI_BYTE_RANGE(enc, cc->mbuf); } else { - for (c = 0; c < SINGLE_BYTE_SIZE; c++) { - if ((ONIGENC_CODE_TO_MBCLEN(enc, c) > 0) /* check invalid code point */ - && ! ONIGENC_IS_CODE_WORD(enc, c)) - BITSET_SET_BIT(cc->bs, c); + for (c = 0; c < (int )limit; c++) { + if (ONIGENC_IS_CODE_CTYPE(enc, (OnigCodePoint )c, ctype)) + BITSET_SET_BIT(cc->bs, c); } + if (ascii_mode == 0) + ADD_ALL_MULTI_BYTE_RANGE(enc, cc->mbuf); } break; @@ -4025,8 +6022,7 @@ fetch_char_property_to_ctype(UChar** src, UChar* end, ScanEnv* env) } static int -parse_char_property(Node** np, OnigToken* tok, UChar** src, UChar* end, - ScanEnv* env) +parse_char_property(Node** np, OnigToken* tok, UChar** src, UChar* end, ScanEnv* env) { int r, ctype; CClassNode* cc; @@ -4036,7 +6032,7 @@ parse_char_property(Node** np, OnigToken* tok, UChar** src, UChar* end, *np = node_new_cclass(); CHECK_NULL_RETURN_MEMERR(*np); - cc = NCCLASS(*np); + cc = CCLASS_(*np); r = add_ctype_to_cc(cc, ctype, 0, env); if (r != 0) return r; if (tok->u.prop.not != 0) NCCLASS_SET_NOT(cc); @@ -4060,7 +6056,7 @@ enum CCVALTYPE { static int next_state_class(CClassNode* cc, OnigCodePoint* vs, enum CCVALTYPE* type, - enum CCSTATE* state, ScanEnv* env) + enum CCSTATE* state, ScanEnv* env) { int r; @@ -4082,19 +6078,23 @@ next_state_class(CClassNode* cc, OnigCodePoint* vs, enum CCVALTYPE* type, } static int -next_state_val(CClassNode* cc, OnigCodePoint *vs, OnigCodePoint v, - int* vs_israw, int v_israw, - enum CCVALTYPE intype, enum CCVALTYPE* type, - enum CCSTATE* state, ScanEnv* env) +next_state_val(CClassNode* cc, OnigCodePoint *from, OnigCodePoint to, + int* from_israw, int to_israw, + enum CCVALTYPE intype, enum CCVALTYPE* type, + enum CCSTATE* state, ScanEnv* env) { int r; switch (*state) { case CCS_VALUE: - if (*type == CCV_SB) - BITSET_SET_BIT(cc->bs, (int )(*vs)); + if (*type == CCV_SB) { + if (*from > 0xff) + return ONIGERR_INVALID_CODE_POINT_VALUE; + + BITSET_SET_BIT(cc->bs, (int )(*from)); + } else if (*type == CCV_CODE_POINT) { - r = add_code_range(&(cc->mbuf), env, *vs, *vs); + r = add_code_range(&(cc->mbuf), env, *from, *from); if (r < 0) return r; } break; @@ -4102,40 +6102,32 @@ next_state_val(CClassNode* cc, OnigCodePoint *vs, OnigCodePoint v, case CCS_RANGE: if (intype == *type) { if (intype == CCV_SB) { - if (*vs > 0xff || v > 0xff) + if (*from > 0xff || to > 0xff) return ONIGERR_INVALID_CODE_POINT_VALUE; - if (*vs > v) { - if (IS_SYNTAX_BV(env->syntax, ONIG_SYN_ALLOW_EMPTY_RANGE_IN_CC)) - goto ccs_range_end; - else - return ONIGERR_EMPTY_RANGE_IN_CHAR_CLASS; - } - bitset_set_range(cc->bs, (int )*vs, (int )v); + if (*from > to) { + if (IS_SYNTAX_BV(env->syntax, ONIG_SYN_ALLOW_EMPTY_RANGE_IN_CC)) + goto ccs_range_end; + else + return ONIGERR_EMPTY_RANGE_IN_CHAR_CLASS; + } + bitset_set_range(cc->bs, (int )*from, (int )to); } else { - r = add_code_range(&(cc->mbuf), env, *vs, v); - if (r < 0) return r; + r = add_code_range(&(cc->mbuf), env, *from, to); + if (r < 0) return r; } } else { -#if 0 - if (intype == CCV_CODE_POINT && *type == CCV_SB) { -#endif - if (*vs > v) { - if (IS_SYNTAX_BV(env->syntax, ONIG_SYN_ALLOW_EMPTY_RANGE_IN_CC)) - goto ccs_range_end; - else - return ONIGERR_EMPTY_RANGE_IN_CHAR_CLASS; - } - bitset_set_range(cc->bs, (int )*vs, (int )(v < 0xff ? v : 0xff)); - r = add_code_range(&(cc->mbuf), env, (OnigCodePoint )*vs, v); - if (r < 0) return r; -#if 0 + if (*from > to) { + if (IS_SYNTAX_BV(env->syntax, ONIG_SYN_ALLOW_EMPTY_RANGE_IN_CC)) + goto ccs_range_end; + else + return ONIGERR_EMPTY_RANGE_IN_CHAR_CLASS; } - else - return ONIGERR_MISMATCH_CODE_LENGTH_IN_CLASS_RANGE; -#endif + bitset_set_range(cc->bs, (int )*from, (int )(to < 0xff ? to : 0xff)); + r = add_code_range(&(cc->mbuf), env, (OnigCodePoint )*from, to); + if (r < 0) return r; } ccs_range_end: *state = CCS_COMPLETE; @@ -4150,15 +6142,15 @@ next_state_val(CClassNode* cc, OnigCodePoint *vs, OnigCodePoint v, break; } - *vs_israw = v_israw; - *vs = v; - *type = intype; + *from_israw = to_israw; + *from = to; + *type = intype; return 0; } static int code_exist_check(OnigCodePoint c, UChar* from, UChar* end, int ignore_escaped, - ScanEnv* env) + ScanEnv* env) { int in_esc; OnigCodePoint code; @@ -4180,8 +6172,7 @@ code_exist_check(OnigCodePoint c, UChar* from, UChar* end, int ignore_escaped, } static int -parse_char_class(Node** np, OnigToken* tok, UChar** src, UChar* end, - ScanEnv* env) +parse_char_class(Node** np, OnigToken* tok, UChar** src, UChar* end, ScanEnv* env) { int r, neg, len, fetched, and_start; OnigCodePoint v, vs; @@ -4194,8 +6185,11 @@ parse_char_class(Node** np, OnigToken* tok, UChar** src, UChar* end, enum CCVALTYPE val_type, in_type; int val_israw, in_israw; - prev_cc = (CClassNode* )NULL; *np = NULL_NODE; + env->parse_depth++; + if (env->parse_depth > ParseDepthLimit) + return ONIGERR_PARSE_DEPTH_LIMIT_OVER; + prev_cc = (CClassNode* )NULL; r = fetch_token_in_cc(tok, src, end, env); if (r == TK_CHAR && tok->u.c == '^' && tok->escaped == 0) { neg = 1; @@ -4217,7 +6211,7 @@ parse_char_class(Node** np, OnigToken* tok, UChar** src, UChar* end, *np = node = node_new_cclass(); CHECK_NULL_RETURN_MEMERR(node); - cc = NCCLASS(node); + cc = CCLASS_(node); and_start = 0; state = CCS_START; @@ -4226,17 +6220,18 @@ parse_char_class(Node** np, OnigToken* tok, UChar** src, UChar* end, fetched = 0; switch (r) { case TK_CHAR: + any_char_in: len = ONIGENC_CODE_TO_MBCLEN(env->enc, tok->u.c); if (len > 1) { - in_type = CCV_CODE_POINT; + in_type = CCV_CODE_POINT; } else if (len < 0) { - r = len; - goto err; + r = len; + goto err; } else { - sb_char: - in_type = CCV_SB; + /* sb_char: */ + in_type = CCV_SB; } v = (OnigCodePoint )tok->u.c; in_israw = 0; @@ -4246,403 +6241,1133 @@ parse_char_class(Node** np, OnigToken* tok, UChar** src, UChar* end, case TK_RAW_BYTE: /* tok->base != 0 : octal or hexadec. */ if (! ONIGENC_IS_SINGLEBYTE(env->enc) && tok->base != 0) { - UChar buf[ONIGENC_CODE_TO_MBC_MAXLEN]; - UChar* bufe = buf + ONIGENC_CODE_TO_MBC_MAXLEN; - UChar* psave = p; - int i, base = tok->base; - - buf[0] = (UChar)tok->u.c; - for (i = 1; i < ONIGENC_MBC_MAXLEN(env->enc); i++) { - r = fetch_token_in_cc(tok, &p, end, env); - if (r < 0) goto err; - if (r != TK_RAW_BYTE || tok->base != base) { - fetched = 1; - break; - } - buf[i] = (UChar)tok->u.c; - } - - if (i < ONIGENC_MBC_MINLEN(env->enc)) { - r = ONIGERR_TOO_SHORT_MULTI_BYTE_STRING; - goto err; - } - - len = enclen(env->enc, buf); - if (i < len) { - r = ONIGERR_TOO_SHORT_MULTI_BYTE_STRING; - goto err; - } - else if (i > len) { /* fetch back */ - p = psave; - for (i = 1; i < len; i++) { - r = fetch_token_in_cc(tok, &p, end, env); - } - fetched = 0; - } - - if (i == 1) { - v = (OnigCodePoint )buf[0]; - goto raw_single; - } - else { - v = ONIGENC_MBC_TO_CODE(env->enc, buf, bufe); - in_type = CCV_CODE_POINT; - } + UChar buf[ONIGENC_CODE_TO_MBC_MAXLEN]; + UChar* bufe = buf + ONIGENC_CODE_TO_MBC_MAXLEN; + UChar* psave = p; + int i, base = tok->base; + + buf[0] = tok->u.c; + for (i = 1; i < ONIGENC_MBC_MAXLEN(env->enc); i++) { + r = fetch_token_in_cc(tok, &p, end, env); + if (r < 0) goto err; + if (r != TK_RAW_BYTE || tok->base != base) { + fetched = 1; + break; + } + buf[i] = tok->u.c; + } + + if (i < ONIGENC_MBC_MINLEN(env->enc)) { + r = ONIGERR_TOO_SHORT_MULTI_BYTE_STRING; + goto err; + } + + len = enclen(env->enc, buf); + if (i < len) { + r = ONIGERR_TOO_SHORT_MULTI_BYTE_STRING; + goto err; + } + else if (i > len) { /* fetch back */ + p = psave; + for (i = 1; i < len; i++) { + r = fetch_token_in_cc(tok, &p, end, env); + } + fetched = 0; + } + + if (i == 1) { + v = (OnigCodePoint )buf[0]; + goto raw_single; + } + else { + v = ONIGENC_MBC_TO_CODE(env->enc, buf, bufe); + in_type = CCV_CODE_POINT; + } + } + else { + v = (OnigCodePoint )tok->u.c; + raw_single: + in_type = CCV_SB; + } + in_israw = 1; + goto val_entry2; + break; + + case TK_CODE_POINT: + v = tok->u.code; + in_israw = 1; + val_entry: + len = ONIGENC_CODE_TO_MBCLEN(env->enc, v); + if (len < 0) { + r = len; + goto err; + } + in_type = (len == 1 ? CCV_SB : CCV_CODE_POINT); + val_entry2: + r = next_state_val(cc, &vs, v, &val_israw, in_israw, in_type, &val_type, + &state, env); + if (r != 0) goto err; + break; + + case TK_POSIX_BRACKET_OPEN: + r = parse_posix_bracket(cc, &p, end, env); + if (r < 0) goto err; + if (r == 1) { /* is not POSIX bracket */ + CC_ESC_WARN(env, (UChar* )"["); + p = tok->backp; + v = (OnigCodePoint )tok->u.c; + in_israw = 0; + goto val_entry; + } + goto next_class; + break; + + case TK_CHAR_TYPE: + r = add_ctype_to_cc(cc, tok->u.prop.ctype, tok->u.prop.not, env); + if (r != 0) goto err; + + next_class: + r = next_state_class(cc, &vs, &val_type, &state, env); + if (r != 0) goto err; + break; + + case TK_CHAR_PROPERTY: + { + int ctype = fetch_char_property_to_ctype(&p, end, env); + if (ctype < 0) { + r = ctype; + goto err; + } + r = add_ctype_to_cc(cc, ctype, tok->u.prop.not, env); + if (r != 0) goto err; + goto next_class; + } + break; + + case TK_CC_RANGE: + if (state == CCS_VALUE) { + r = fetch_token_in_cc(tok, &p, end, env); + if (r < 0) goto err; + fetched = 1; + if (r == TK_CC_CLOSE) { /* allow [x-] */ + range_end_val: + v = (OnigCodePoint )'-'; + in_israw = 0; + goto val_entry; + } + else if (r == TK_CC_AND) { + CC_ESC_WARN(env, (UChar* )"-"); + goto range_end_val; + } + + if (val_type == CCV_CLASS) { + r = ONIGERR_UNMATCHED_RANGE_SPECIFIER_IN_CHAR_CLASS; + goto err; + } + + state = CCS_RANGE; + } + else if (state == CCS_START) { + /* [-xa] is allowed */ + v = (OnigCodePoint )tok->u.c; + in_israw = 0; + + r = fetch_token_in_cc(tok, &p, end, env); + if (r < 0) goto err; + fetched = 1; + /* [--x] or [a&&-x] is warned. */ + if (r == TK_CC_RANGE || and_start != 0) + CC_ESC_WARN(env, (UChar* )"-"); + + goto val_entry; + } + else if (state == CCS_RANGE) { + CC_ESC_WARN(env, (UChar* )"-"); + goto any_char_in; /* [!--x] is allowed */ + } + else { /* CCS_COMPLETE */ + r = fetch_token_in_cc(tok, &p, end, env); + if (r < 0) goto err; + fetched = 1; + if (r == TK_CC_CLOSE) goto range_end_val; /* allow [a-b-] */ + else if (r == TK_CC_AND) { + CC_ESC_WARN(env, (UChar* )"-"); + goto range_end_val; + } + + if (IS_SYNTAX_BV(env->syntax, ONIG_SYN_ALLOW_DOUBLE_RANGE_OP_IN_CC)) { + CC_ESC_WARN(env, (UChar* )"-"); + goto range_end_val; /* [0-9-a] is allowed as [0-9\-a] */ + } + r = ONIGERR_UNMATCHED_RANGE_SPECIFIER_IN_CHAR_CLASS; + goto err; + } + break; + + case TK_CC_CC_OPEN: /* [ */ + { + Node *anode; + CClassNode* acc; + + r = parse_char_class(&anode, tok, &p, end, env); + if (r != 0) { + onig_node_free(anode); + goto cc_open_err; + } + acc = CCLASS_(anode); + r = or_cclass(cc, acc, env->enc); + onig_node_free(anode); + + cc_open_err: + if (r != 0) goto err; + } + break; + + case TK_CC_AND: /* && */ + { + if (state == CCS_VALUE) { + r = next_state_val(cc, &vs, 0, &val_israw, 0, val_type, + &val_type, &state, env); + if (r != 0) goto err; + } + /* initialize local variables */ + and_start = 1; + state = CCS_START; + + if (IS_NOT_NULL(prev_cc)) { + r = and_cclass(prev_cc, cc, env->enc); + if (r != 0) goto err; + bbuf_free(cc->mbuf); + } + else { + prev_cc = cc; + cc = &work_cc; + } + initialize_cclass(cc); + } + break; + + case TK_EOT: + r = ONIGERR_PREMATURE_END_OF_CHAR_CLASS; + goto err; + break; + default: + r = ONIGERR_PARSER_BUG; + goto err; + break; + } + + if (fetched) + r = tok->type; + else { + r = fetch_token_in_cc(tok, &p, end, env); + if (r < 0) goto err; + } + } + + if (state == CCS_VALUE) { + r = next_state_val(cc, &vs, 0, &val_israw, 0, val_type, + &val_type, &state, env); + if (r != 0) goto err; + } + + if (IS_NOT_NULL(prev_cc)) { + r = and_cclass(prev_cc, cc, env->enc); + if (r != 0) goto err; + bbuf_free(cc->mbuf); + cc = prev_cc; + } + + if (neg != 0) + NCCLASS_SET_NOT(cc); + else + NCCLASS_CLEAR_NOT(cc); + if (IS_NCCLASS_NOT(cc) && + IS_SYNTAX_BV(env->syntax, ONIG_SYN_NOT_NEWLINE_IN_NEGATIVE_CC)) { + int is_empty = (IS_NULL(cc->mbuf) ? 1 : 0); + if (is_empty != 0) + 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); + else + add_code_range(&(cc->mbuf), env, NEWLINE_CODE, NEWLINE_CODE); + } + } + } + *src = p; + env->parse_depth--; + return 0; + + err: + if (cc != CCLASS_(*np)) + bbuf_free(cc->mbuf); + return r; +} + +static int parse_subexp(Node** top, OnigToken* tok, int term, + UChar** src, UChar* end, ScanEnv* env); + +#ifdef USE_CALLOUT + +/* (?{...}[tag][+-]) (?{{...}}[tag][+-]) */ +static int +parse_callout_of_contents(Node** np, int cterm, UChar** src, UChar* end, ScanEnv* env) +{ + int r; + int i; + int in; + int num; + OnigCodePoint c; + UChar* code_start; + UChar* code_end; + UChar* contents; + UChar* tag_start; + UChar* tag_end; + int brace_nest; + CalloutListEntry* e; + RegexExt* ext; + OnigEncoding enc = env->enc; + UChar* p = *src; + + if (PEND) return ONIGERR_INVALID_CALLOUT_PATTERN; + + brace_nest = 0; + while (PPEEK_IS('{')) { + brace_nest++; + PINC_S; + if (PEND) return ONIGERR_INVALID_CALLOUT_PATTERN; + } + + in = ONIG_CALLOUT_IN_PROGRESS; + code_start = p; + while (1) { + if (PEND) return ONIGERR_INVALID_CALLOUT_PATTERN; + + code_end = p; + PFETCH_S(c); + if (c == '}') { + i = brace_nest; + while (i > 0) { + if (PEND) return ONIGERR_INVALID_CALLOUT_PATTERN; + PFETCH_S(c); + if (c == '}') i--; + else break; + } + if (i == 0) break; + } + } + + if (PEND) return ONIGERR_END_PATTERN_IN_GROUP; + + PFETCH_S(c); + if (c == '[') { + if (PEND) return ONIGERR_END_PATTERN_IN_GROUP; + tag_start = p; + while (! PEND) { + if (PEND) return ONIGERR_END_PATTERN_IN_GROUP; + tag_end = p; + PFETCH_S(c); + if (c == ']') break; + } + if (! is_allowed_callout_tag_name(enc, tag_start, tag_end)) + return ONIGERR_INVALID_CALLOUT_TAG_NAME; + + if (PEND) return ONIGERR_END_PATTERN_IN_GROUP; + PFETCH_S(c); + } + else { + tag_start = tag_end = 0; + } + + if (c == 'X') { + in |= ONIG_CALLOUT_IN_RETRACTION; + if (PEND) return ONIGERR_END_PATTERN_IN_GROUP; + PFETCH_S(c); + } + else if (c == '<') { + in = ONIG_CALLOUT_IN_RETRACTION; + if (PEND) return ONIGERR_END_PATTERN_IN_GROUP; + PFETCH_S(c); + } + else if (c == '>') { /* no needs (default) */ + if (PEND) return ONIGERR_END_PATTERN_IN_GROUP; + PFETCH_S(c); + } + + if (c != cterm) + return ONIGERR_INVALID_CALLOUT_PATTERN; + + r = reg_callout_list_entry(env, &num); + if (r != 0) return r; + + ext = onig_get_regex_ext(env->reg); + if (IS_NULL(ext->pattern)) { + r = onig_ext_set_pattern(env->reg, env->pattern, env->pattern_end); + if (r != ONIG_NORMAL) return r; + } + + if (tag_start != tag_end) { + r = callout_tag_entry(env->reg, tag_start, tag_end, num); + if (r != ONIG_NORMAL) return r; + } + + contents = onigenc_strdup(enc, code_start, code_end); + CHECK_NULL_RETURN_MEMERR(contents); + + r = node_new_callout(np, ONIG_CALLOUT_OF_CONTENTS, num, ONIG_NON_NAME_ID, env); + if (r != 0) { + xfree(contents); + return r; + } + + e = onig_reg_callout_list_at(env->reg, num); + e->of = ONIG_CALLOUT_OF_CONTENTS; + e->in = in; + e->name_id = ONIG_NON_NAME_ID; + e->u.content.start = contents; + e->u.content.end = contents + (code_end - code_start); + + *src = p; + return 0; +} + +static long +parse_long(OnigEncoding enc, UChar* s, UChar* end, int sign_on, long max, long* rl) +{ + long v; + long d; + int flag; + UChar* p; + OnigCodePoint c; + + if (s >= end) return ONIGERR_INVALID_CALLOUT_ARG; + + flag = 1; + v = 0; + p = s; + while (p < end) { + c = ONIGENC_MBC_TO_CODE(enc, p, end); + p += ONIGENC_MBC_ENC_LEN(enc, p); + if (c >= '0' && c <= '9') { + d = (long )(c - '0'); + if (v > (max - d) / 10) + return ONIGERR_INVALID_CALLOUT_ARG; + + v = v * 10 + d; + } + else if (sign_on != 0 && (c == '-' || c == '+')) { + if (c == '-') flag = -1; + } + else + return ONIGERR_INVALID_CALLOUT_ARG; + + sign_on = 0; + } + + *rl = flag * v; + return ONIG_NORMAL; +} + +static int +parse_callout_args(int skip_mode, int cterm, UChar** src, UChar* end, + unsigned int types[], OnigValue vals[], ScanEnv* env) +{ +#define MAX_CALLOUT_ARG_BYTE_LENGTH 128 + + int r; + int n; + int esc; + int cn; + UChar* s; + UChar* e; + UChar* eesc; + OnigCodePoint c; + UChar* bufend; + UChar buf[MAX_CALLOUT_ARG_BYTE_LENGTH]; + OnigEncoding enc = env->enc; + UChar* p = *src; + + if (PEND) return ONIGERR_INVALID_CALLOUT_PATTERN; + + n = 0; + while (n < ONIG_CALLOUT_MAX_ARGS_NUM) { + c = 0; + cn = 0; + esc = 0; + eesc = 0; + bufend = buf; + s = e = p; + while (1) { + if (PEND) return ONIGERR_INVALID_CALLOUT_PATTERN; + + e = p; + PFETCH_S(c); + if (esc != 0) { + esc = 0; + if (c == '\\' || c == cterm || c == ',') { + /* */ + } + else { + e = eesc; + cn++; + } + goto add_char; } else { - v = (OnigCodePoint )tok->u.c; - raw_single: - in_type = CCV_SB; - } - in_israw = 1; - goto val_entry2; - break; + if (c == '\\') { + esc = 1; + eesc = e; + } + else if (c == cterm || c == ',') + break; + else { + size_t clen; - case TK_CODE_POINT: - v = tok->u.code; - in_israw = 1; - val_entry: - len = ONIGENC_CODE_TO_MBCLEN(env->enc, v); - if (len < 0) { - r = len; - goto err; - } - in_type = (len == 1 ? CCV_SB : CCV_CODE_POINT); - val_entry2: - r = next_state_val(cc, &vs, v, &val_israw, in_israw, in_type, &val_type, - &state, env); - if (r != 0) goto err; - break; + add_char: + if (skip_mode == 0) { + clen = p - e; + if (bufend + clen > buf + MAX_CALLOUT_ARG_BYTE_LENGTH) + return ONIGERR_INVALID_CALLOUT_ARG; /* too long argument */ - case TK_POSIX_BRACKET_OPEN: - r = parse_posix_bracket(cc, &p, end, env); - if (r < 0) goto err; - if (r == 1) { /* is not POSIX bracket */ - CC_ESC_WARN(env, (UChar* )"["); - p = tok->backp; - v = (OnigCodePoint )tok->u.c; - in_israw = 0; - goto val_entry; + xmemcpy(bufend, e, clen); + bufend += clen; + } + cn++; + } } - goto next_class; - break; + } - case TK_CHAR_TYPE: - r = add_ctype_to_cc(cc, tok->u.prop.ctype, tok->u.prop.not, env); - if (r != 0) return r; + if (cn != 0) { + if (skip_mode == 0) { + if ((types[n] & ONIG_TYPE_LONG) != 0) { + int fixed = 0; + if (cn > 0) { + long rl; + r = parse_long(enc, buf, bufend, 1, LONG_MAX, &rl); + if (r == ONIG_NORMAL) { + vals[n].l = rl; + fixed = 1; + types[n] = ONIG_TYPE_LONG; + } + } - next_class: - r = next_state_class(cc, &vs, &val_type, &state, env); - if (r != 0) goto err; - break; + if (fixed == 0) { + types[n] = (types[n] & ~ONIG_TYPE_LONG); + if (types[n] == ONIG_TYPE_VOID) + return ONIGERR_INVALID_CALLOUT_ARG; + } + } - case TK_CHAR_PROPERTY: - { - int ctype; + switch (types[n]) { + case ONIG_TYPE_LONG: + break; - ctype = fetch_char_property_to_ctype(&p, end, env); - if (ctype < 0) return ctype; - r = add_ctype_to_cc(cc, ctype, tok->u.prop.not, env); - if (r != 0) return r; - goto next_class; - } - break; + case ONIG_TYPE_CHAR: + if (cn != 1) return ONIGERR_INVALID_CALLOUT_ARG; + vals[n].c = ONIGENC_MBC_TO_CODE(enc, buf, bufend); + break; - case TK_CC_RANGE: - if (state == CCS_VALUE) { - r = fetch_token_in_cc(tok, &p, end, env); - if (r < 0) goto err; - fetched = 1; - if (r == TK_CC_CLOSE) { /* allow [x-] */ - range_end_val: - v = (OnigCodePoint )'-'; - in_israw = 0; - goto val_entry; - } - else if (r == TK_CC_AND) { - CC_ESC_WARN(env, (UChar* )"-"); - goto range_end_val; - } - state = CCS_RANGE; - } - else if (state == CCS_START) { - /* [-xa] is allowed */ - v = (OnigCodePoint )tok->u.c; - in_israw = 0; + case ONIG_TYPE_STRING: + { + UChar* rs = onigenc_strdup(enc, buf, bufend); + CHECK_NULL_RETURN_MEMERR(rs); + vals[n].s.start = rs; + vals[n].s.end = rs + (e - s); + } + break; - r = fetch_token_in_cc(tok, &p, end, env); - if (r < 0) goto err; - fetched = 1; - /* [--x] or [a&&-x] is warned. */ - if (r == TK_CC_RANGE || and_start != 0) - CC_ESC_WARN(env, (UChar* )"-"); + case ONIG_TYPE_TAG: + if (eesc != 0 || ! is_allowed_callout_tag_name(enc, s, e)) + return ONIGERR_INVALID_CALLOUT_TAG_NAME; - goto val_entry; - } - else if (state == CCS_RANGE) { - CC_ESC_WARN(env, (UChar* )"-"); - goto sb_char; /* [!--x] is allowed */ - } - else { /* CCS_COMPLETE */ - r = fetch_token_in_cc(tok, &p, end, env); - if (r < 0) goto err; - fetched = 1; - if (r == TK_CC_CLOSE) goto range_end_val; /* allow [a-b-] */ - else if (r == TK_CC_AND) { - CC_ESC_WARN(env, (UChar* )"-"); - goto range_end_val; - } - - if (IS_SYNTAX_BV(env->syntax, ONIG_SYN_ALLOW_DOUBLE_RANGE_OP_IN_CC)) { - CC_ESC_WARN(env, (UChar* )"-"); - goto sb_char; /* [0-9-a] is allowed as [0-9\-a] */ - } - r = ONIGERR_UNMATCHED_RANGE_SPECIFIER_IN_CHAR_CLASS; - goto err; + vals[n].s.start = s; + vals[n].s.end = e; + break; + + case ONIG_TYPE_VOID: + case ONIG_TYPE_POINTER: + return ONIGERR_PARSER_BUG; + break; + } } - break; - case TK_CC_CC_OPEN: /* [ */ - { - Node *anode; - CClassNode* acc; + n++; + } - r = parse_char_class(&anode, tok, &p, end, env); - if (r != 0) goto cc_open_err; - acc = NCCLASS(anode); - r = or_cclass(cc, acc, env->enc); + if (c == cterm) break; + } - onig_node_free(anode); - cc_open_err: - if (r != 0) goto err; - } - break; + if (c != cterm) return ONIGERR_INVALID_CALLOUT_PATTERN; - case TK_CC_AND: /* && */ - { - if (state == CCS_VALUE) { - r = next_state_val(cc, &vs, 0, &val_israw, 0, val_type, - &val_type, &state, env); - if (r != 0) goto err; - } - /* initialize local variables */ - and_start = 1; - state = CCS_START; - - if (IS_NOT_NULL(prev_cc)) { - r = and_cclass(prev_cc, cc, env->enc); - if (r != 0) goto err; - bbuf_free(cc->mbuf); - } - else { - prev_cc = cc; - cc = &work_cc; - } - initialize_cclass(cc); - } - break; + *src = p; + return n; +} - case TK_EOT: - r = ONIGERR_PREMATURE_END_OF_CHAR_CLASS; - goto err; - break; - default: - r = ONIGERR_PARSER_BUG; - goto err; - break; - } +/* (*name[TAG]) (*name[TAG]{a,b,..}) */ +static int +parse_callout_of_name(Node** np, int cterm, UChar** src, UChar* end, ScanEnv* env) +{ + int r; + int i; + int in; + int num; + int name_id; + int arg_num; + int max_arg_num; + int opt_arg_num; + int is_not_single; + OnigCodePoint c; + UChar* name_start; + UChar* name_end; + UChar* tag_start; + UChar* tag_end; + Node* node; + CalloutListEntry* e; + RegexExt* ext; + unsigned int types[ONIG_CALLOUT_MAX_ARGS_NUM]; + OnigValue vals[ONIG_CALLOUT_MAX_ARGS_NUM]; + OnigEncoding enc = env->enc; + UChar* p = *src; - if (fetched) - r = tok->type; - else { - r = fetch_token_in_cc(tok, &p, end, env); - if (r < 0) goto err; + /* PFETCH_READY; */ + if (PEND) return ONIGERR_INVALID_CALLOUT_PATTERN; + + node = 0; + name_start = p; + while (1) { + if (PEND) return ONIGERR_END_PATTERN_IN_GROUP; + name_end = p; + PFETCH_S(c); + if (c == cterm || c == '[' || c == '{') break; + } + + if (! is_allowed_callout_name(enc, name_start, name_end)) + return ONIGERR_INVALID_CALLOUT_NAME; + + if (c == '[') { + if (PEND) return ONIGERR_END_PATTERN_IN_GROUP; + tag_start = p; + while (! PEND) { + if (PEND) return ONIGERR_END_PATTERN_IN_GROUP; + tag_end = p; + PFETCH_S(c); + if (c == ']') break; } + if (! is_allowed_callout_tag_name(enc, tag_start, tag_end)) + return ONIGERR_INVALID_CALLOUT_TAG_NAME; + + if (PEND) return ONIGERR_END_PATTERN_IN_GROUP; + PFETCH_S(c); + } + else { + tag_start = tag_end = 0; } - if (state == CCS_VALUE) { - r = next_state_val(cc, &vs, 0, &val_israw, 0, val_type, - &val_type, &state, env); - if (r != 0) goto err; + if (c == '{') { + UChar* save; + + if (PEND) return ONIGERR_END_PATTERN_IN_GROUP; + + /* read for single check only */ + save = p; + arg_num = parse_callout_args(1, '}', &p, end, 0, 0, env); + if (arg_num < 0) return arg_num; + + is_not_single = PPEEK_IS(cterm) ? 0 : 1; + p = save; + r = get_callout_name_id_by_name(enc, is_not_single, name_start, name_end, + &name_id); + if (r != ONIG_NORMAL) return r; + + max_arg_num = get_callout_arg_num_by_name_id(name_id); + for (i = 0; i < max_arg_num; i++) { + types[i] = get_callout_arg_type_by_name_id(name_id, i); + } + + arg_num = parse_callout_args(0, '}', &p, end, types, vals, env); + if (arg_num < 0) return arg_num; + + if (PEND) return ONIGERR_END_PATTERN_IN_GROUP; + PFETCH_S(c); } + else { + arg_num = 0; - if (IS_NOT_NULL(prev_cc)) { - r = and_cclass(prev_cc, cc, env->enc); - if (r != 0) goto err; - bbuf_free(cc->mbuf); - cc = prev_cc; + is_not_single = 0; + r = get_callout_name_id_by_name(enc, is_not_single, name_start, name_end, + &name_id); + if (r != ONIG_NORMAL) return r; + + max_arg_num = get_callout_arg_num_by_name_id(name_id); + for (i = 0; i < max_arg_num; i++) { + types[i] = get_callout_arg_type_by_name_id(name_id, i); + } } - if (neg != 0) - NCCLASS_SET_NOT(cc); - else - NCCLASS_CLEAR_NOT(cc); - if (IS_NCCLASS_NOT(cc) && - IS_SYNTAX_BV(env->syntax, ONIG_SYN_NOT_NEWLINE_IN_NEGATIVE_CC)) { - int is_empty; + in = onig_get_callout_in_by_name_id(name_id); + opt_arg_num = get_callout_opt_arg_num_by_name_id(name_id); + if (arg_num > max_arg_num || arg_num < (max_arg_num - opt_arg_num)) + return ONIGERR_INVALID_CALLOUT_ARG; - is_empty = (IS_NULL(cc->mbuf) ? 1 : 0); - if (is_empty != 0) - BITSET_IS_EMPTY(cc->bs, is_empty); + if (c != cterm) + return ONIGERR_INVALID_CALLOUT_PATTERN; - if (is_empty == 0) { -#define NEWLINE_CODE 0x0a + r = reg_callout_list_entry(env, &num); + if (r != 0) return r; - 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); - else - add_code_range(&(cc->mbuf), env, NEWLINE_CODE, NEWLINE_CODE); - } - } + ext = onig_get_regex_ext(env->reg); + if (IS_NULL(ext->pattern)) { + r = onig_ext_set_pattern(env->reg, env->pattern, env->pattern_end); + if (r != ONIG_NORMAL) return r; + } + + if (tag_start != tag_end) { + r = callout_tag_entry(env->reg, tag_start, tag_end, num); + if (r != ONIG_NORMAL) return r; + } + + r = node_new_callout(&node, ONIG_CALLOUT_OF_NAME, num, name_id, env); + if (r != ONIG_NORMAL) return r; + + e = onig_reg_callout_list_at(env->reg, num); + e->of = ONIG_CALLOUT_OF_NAME; + e->in = in; + e->name_id = name_id; + e->type = onig_get_callout_type_by_name_id(name_id); + e->start_func = onig_get_callout_start_func_by_name_id(name_id); + e->end_func = onig_get_callout_end_func_by_name_id(name_id); + e->u.arg.num = max_arg_num; + e->u.arg.passed_num = arg_num; + for (i = 0; i < max_arg_num; i++) { + e->u.arg.types[i] = types[i]; + if (i < arg_num) + e->u.arg.vals[i] = vals[i]; + else + e->u.arg.vals[i] = get_callout_opt_default_by_name_id(name_id, i); } + + *np = node; *src = p; return 0; - - err: - if (cc != NCCLASS(*np)) - bbuf_free(cc->mbuf); - onig_node_free(*np); - return r; } - -static int parse_subexp(Node** top, OnigToken* tok, int term, - UChar** src, UChar* end, ScanEnv* env); +#endif static int -parse_enclose(Node** np, OnigToken* tok, int term, UChar** src, UChar* end, - ScanEnv* env) +parse_enclosure(Node** np, OnigToken* tok, int term, UChar** src, UChar* end, + ScanEnv* env) { int r, num; Node *target; OnigOptionType option; OnigCodePoint c; + int list_capture; OnigEncoding enc = env->enc; -#ifdef USE_NAMED_GROUP - int list_capture; + UChar* p = *src; + PFETCH_READY; + + *np = NULL; + if (PEND) return ONIGERR_END_PATTERN_WITH_UNMATCHED_PARENTHESIS; + + option = env->options; + c = PPEEK; + if (c == '?' && IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_QMARK_GROUP_EFFECT)) { + PINC; + if (PEND) return ONIGERR_END_PATTERN_IN_GROUP; + + PFETCH(c); + switch (c) { + case ':': /* (?:...) grouping only */ + group: + r = fetch_token(tok, &p, end, env); + if (r < 0) return r; + r = parse_subexp(np, tok, term, &p, end, env); + if (r < 0) return r; + *src = p; + return 1; /* group */ + break; + + case '=': + *np = onig_node_new_anchor(ANCHOR_PREC_READ, 0); + break; + case '!': /* preceding read */ + *np = onig_node_new_anchor(ANCHOR_PREC_READ_NOT, 0); + break; + case '>': /* (?>...) stop backtrack */ + *np = node_new_enclosure(ENCLOSURE_STOP_BACKTRACK); + break; + + case '\'': + if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_QMARK_LT_NAMED_GROUP)) { + goto named_group1; + } + else + return ONIGERR_UNDEFINED_GROUP_OPTION; + break; + + case '<': /* look behind (?<=...), (?syntax, ONIG_SYN_OP2_QMARK_LT_NAMED_GROUP)) { + UChar *name; + UChar *name_end; + enum REF_NUM num_type; + + PUNFETCH; + c = '<'; + + named_group1: + list_capture = 0; + + named_group2: + name = p; + r = fetch_name((OnigCodePoint )c, &p, end, &name_end, env, &num, + &num_type, 0); + if (r < 0) return r; + + num = scan_env_add_mem_entry(env); + if (num < 0) return num; + if (list_capture != 0 && num >= (int )MEM_STATUS_BITS_NUM) + return ONIGERR_GROUP_NUMBER_OVER_FOR_CAPTURE_HISTORY; + + r = name_add(env->reg, name, name_end, num, env); + if (r != 0) return r; + *np = node_new_memory(1); + CHECK_NULL_RETURN_MEMERR(*np); + ENCLOSURE_(*np)->m.regnum = num; + if (list_capture != 0) + MEM_STATUS_ON_SIMPLE(env->capture_history, num); + env->num_named++; + } + else { + return ONIGERR_UNDEFINED_GROUP_OPTION; + } + } + break; + + case '~': + if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_QMARK_TILDE_ABSENT_GROUP)) { + Node* absent; + Node* expr; + int head_bar; + int is_range_cutter; + + if (PEND) return ONIGERR_END_PATTERN_IN_GROUP; + + if (PPEEK_IS('|')) { /* (?~|generator|absent) */ + PINC; + if (PEND) return ONIGERR_END_PATTERN_IN_GROUP; + + head_bar = 1; + if (PPEEK_IS(')')) { /* (?~|) : range clear */ + PINC; + r = make_range_clear(np, env); + if (r != 0) return r; + goto end; + } + } + else + head_bar = 0; + + r = fetch_token(tok, &p, end, env); + if (r < 0) return r; + r = parse_subexp(&absent, tok, term, &p, end, env); + if (r < 0) { + onig_node_free(absent); + return r; + } + + expr = NULL_NODE; + is_range_cutter = 0; + if (head_bar != 0) { + Node* top = absent; + if (NODE_TYPE(top) != NODE_ALT || IS_NULL(NODE_CDR(top))) { + expr = NULL_NODE; + is_range_cutter = 1; + /* return ONIGERR_INVALID_ABSENT_GROUP_GENERATOR_PATTERN; */ + } + else { + absent = NODE_CAR(top); + expr = NODE_CDR(top); + NODE_CAR(top) = NULL_NODE; + NODE_CDR(top) = NULL_NODE; + onig_node_free(top); + if (IS_NULL(NODE_CDR(expr))) { + top = expr; + expr = NODE_CAR(top); + NODE_CAR(top) = NULL_NODE; + onig_node_free(top); + } + } + } + + r = make_absent_tree(np, absent, expr, is_range_cutter, env); + if (r != 0) { + return r; + } + goto end; + } + else { + return ONIGERR_UNDEFINED_GROUP_OPTION; + } + break; + +#ifdef USE_CALLOUT + case '{': + if (! IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_QMARK_BRACE_CALLOUT_CONTENTS)) + return ONIGERR_UNDEFINED_GROUP_OPTION; + + r = parse_callout_of_contents(np, ')', &p, end, env); + if (r != 0) return r; + + goto end; + break; +#endif + + case '(': + /* (?()...) */ + if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_QMARK_LPAREN_IF_ELSE)) { + UChar *prev; + Node* condition; + int condition_is_checker; + + if (PEND) return ONIGERR_END_PATTERN_IN_GROUP; + PFETCH(c); + if (PEND) return ONIGERR_END_PATTERN_IN_GROUP; + + if (IS_CODE_DIGIT_ASCII(enc, c) + || c == '-' || c == '+' || c == '<' || c == '\'') { + UChar* name_end; + int back_num; + int exist_level; + int level; + enum REF_NUM num_type; + int is_enclosed; + + is_enclosed = (c == '<' || c == '\'') ? 1 : 0; + if (! is_enclosed) + PUNFETCH; + prev = p; + exist_level = 0; +#ifdef USE_BACKREF_WITH_LEVEL + name_end = NULL_UCHARP; /* no need. escape gcc warning. */ + r = fetch_name_with_level( + (OnigCodePoint )(is_enclosed != 0 ? c : '('), + &p, end, &name_end, + env, &back_num, &level, &num_type); + if (r == 1) exist_level = 1; +#else + r = fetch_name((OnigCodePoint )(is_enclosed != 0 ? c : '('), + &p, end, &name_end, env, &back_num, &num_type, 1); +#endif + if (r < 0) { + if (is_enclosed == 0) { + goto any_condition; + } + else + return r; + } + + condition_is_checker = 1; + if (num_type != IS_NOT_NUM) { + if (num_type == IS_REL_NUM) { + back_num = backref_rel_to_abs(back_num, env); + } + if (back_num <= 0) + return ONIGERR_INVALID_BACKREF; + + if (IS_SYNTAX_BV(env->syntax, ONIG_SYN_STRICT_CHECK_BACKREF)) { + if (back_num > env->num_mem || + IS_NULL(SCANENV_MEMENV(env)[back_num].node)) + return ONIGERR_INVALID_BACKREF; + } + + condition = node_new_backref_checker(1, &back_num, 0, +#ifdef USE_BACKREF_WITH_LEVEL + exist_level, level, +#endif + env); + } + else { + int num; + int* backs; + + num = onig_name_to_group_numbers(env->reg, prev, name_end, &backs); + if (num <= 0) { + onig_scan_env_set_error_string(env, + ONIGERR_UNDEFINED_NAME_REFERENCE, prev, name_end); + return ONIGERR_UNDEFINED_NAME_REFERENCE; + } + if (IS_SYNTAX_BV(env->syntax, ONIG_SYN_STRICT_CHECK_BACKREF)) { + int i; + for (i = 0; i < num; i++) { + if (backs[i] > env->num_mem || + IS_NULL(SCANENV_MEMENV(env)[backs[i]].node)) + return ONIGERR_INVALID_BACKREF; + } + } + + condition = node_new_backref_checker(num, backs, 1, +#ifdef USE_BACKREF_WITH_LEVEL + exist_level, level, +#endif + env); + } + + if (is_enclosed != 0) { + if (PEND) goto err_if_else; + PFETCH(c); + if (c != ')') goto err_if_else; + } + } +#ifdef USE_CALLOUT + else if (c == '?') { + if (IS_SYNTAX_OP2(env->syntax, + ONIG_SYN_OP2_QMARK_BRACE_CALLOUT_CONTENTS)) { + if (! PEND && PPEEK_IS('{')) { + /* condition part is callouts of contents: (?(?{...})THEN|ELSE) */ + condition_is_checker = 0; + PFETCH(c); + r = parse_callout_of_contents(&condition, ')', &p, end, env); + if (r != 0) return r; + goto end_condition; + } + } + goto any_condition; + } + else if (c == '*' && + IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_ASTERISK_CALLOUT_NAME)) { + condition_is_checker = 0; + r = parse_callout_of_name(&condition, ')', &p, end, env); + if (r != 0) return r; + goto end_condition; + } #endif + else { + any_condition: + PUNFETCH; + condition_is_checker = 0; + r = fetch_token(tok, &p, end, env); + if (r < 0) return r; + r = parse_subexp(&condition, tok, term, &p, end, env); + if (r < 0) { + onig_node_free(condition); + return r; + } + } - UChar* p = *src; - PFETCH_READY; + end_condition: + CHECK_NULL_RETURN_MEMERR(condition); - *np = NULL; - if (PEND) return ONIGERR_END_PATTERN_WITH_UNMATCHED_PARENTHESIS; + if (PEND) { + err_if_else: + onig_node_free(condition); + return ONIGERR_END_PATTERN_IN_GROUP; + } - option = env->option; - if (PPEEK_IS('?') && - IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_QMARK_GROUP_EFFECT)) { - PINC; - if (PEND) return ONIGERR_END_PATTERN_IN_GROUP; + if (PPEEK_IS(')')) { /* case: empty body: make backref checker */ + if (condition_is_checker == 0) { + onig_node_free(condition); + return ONIGERR_INVALID_IF_ELSE_SYNTAX; + } + PFETCH(c); + *np = condition; + } + else { /* if-else */ + int then_is_empty; + Node *Then, *Else; - PFETCH(c); - switch (c) { - case ':': /* (?:...) grouping only */ - group: - r = fetch_token(tok, &p, end, env); - if (r < 0) return r; - r = parse_subexp(np, tok, term, &p, end, env); - if (r < 0) return r; - *src = p; - return 1; /* group */ - break; + if (PPEEK_IS('|')) { + PFETCH(c); + Then = 0; + then_is_empty = 1; + } + else + then_is_empty = 0; - case '=': - *np = onig_node_new_anchor(ANCHOR_PREC_READ); - break; - case '!': /* preceding read */ - *np = onig_node_new_anchor(ANCHOR_PREC_READ_NOT); - break; - case '>': /* (?>...) stop backtrack */ - *np = node_new_enclose(ENCLOSE_STOP_BACKTRACK); - break; + r = fetch_token(tok, &p, end, env); + if (r < 0) { + onig_node_free(condition); + return r; + } + r = parse_subexp(&target, tok, term, &p, end, env); + if (r < 0) { + onig_node_free(condition); + onig_node_free(target); + return r; + } -#ifdef USE_NAMED_GROUP - case '\'': - if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_QMARK_LT_NAMED_GROUP)) { - goto named_group1; - } - else - return ONIGERR_UNDEFINED_GROUP_OPTION; - break; -#endif + if (then_is_empty != 0) { + Else = target; + } + else { + if (NODE_TYPE(target) == NODE_ALT) { + Then = NODE_CAR(target); + if (NODE_CDR(NODE_CDR(target)) == NULL_NODE) { + Else = NODE_CAR(NODE_CDR(target)); + cons_node_free_alone(NODE_CDR(target)); + } + else { + Else = NODE_CDR(target); + } + cons_node_free_alone(target); + } + else { + Then = target; + Else = 0; + } + } - case '<': /* look behind (?<=...), (?syntax, ONIG_SYN_OP2_QMARK_LT_NAMED_GROUP)) { - UChar *name; - UChar *name_end; - - PUNFETCH; - c = '<'; - - named_group1: - list_capture = 0; - - named_group2: - name = p; - r = fetch_name((OnigCodePoint )c, &p, end, &name_end, env, &num, 0); - if (r < 0) return r; - - num = scan_env_add_mem_entry(env); - if (num < 0) return num; - if (list_capture != 0 && num >= (int )BIT_STATUS_BITS_NUM) - return ONIGERR_GROUP_NUMBER_OVER_FOR_CAPTURE_HISTORY; - - r = name_add(env->reg, name, name_end, num, env); - if (r != 0) return r; - *np = node_new_enclose_memory(env->option, 1); - CHECK_NULL_RETURN_MEMERR(*np); - NENCLOSE(*np)->regnum = num; - if (list_capture != 0) - BIT_STATUS_ON_AT_SIMPLE(env->capture_history, num); - env->num_named++; - } - else { - return ONIGERR_UNDEFINED_GROUP_OPTION; - } + *np = node_new_enclosure_if_else(condition, Then, Else); + if (IS_NULL(*np)) { + onig_node_free(condition); + onig_node_free(Then); + onig_node_free(Else); + return ONIGERR_MEMORY; + } + } + goto end; } -#else else { - return ONIGERR_UNDEFINED_GROUP_OPTION; + return ONIGERR_UNDEFINED_GROUP_OPTION; } -#endif break; case '@': if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_ATMARK_CAPTURE_HISTORY)) { -#ifdef USE_NAMED_GROUP - if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_QMARK_LT_NAMED_GROUP)) { - PFETCH(c); - if (c == '<' || c == '\'') { - list_capture = 1; - goto named_group2; /* (?@...) */ - } - PUNFETCH; - } -#endif - *np = node_new_enclose_memory(env->option, 0); - CHECK_NULL_RETURN_MEMERR(*np); - num = scan_env_add_mem_entry(env); - if (num < 0) { - onig_node_free(*np); - return num; - } - else if (num >= (int )BIT_STATUS_BITS_NUM) { - onig_node_free(*np); - return ONIGERR_GROUP_NUMBER_OVER_FOR_CAPTURE_HISTORY; - } - NENCLOSE(*np)->regnum = num; - BIT_STATUS_ON_AT_SIMPLE(env->capture_history, num); + if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_QMARK_LT_NAMED_GROUP)) { + PFETCH(c); + if (c == '<' || c == '\'') { + list_capture = 1; + goto named_group2; /* (?@...) */ + } + PUNFETCH; + } + + *np = node_new_memory(0); + CHECK_NULL_RETURN_MEMERR(*np); + num = scan_env_add_mem_entry(env); + if (num < 0) { + return num; + } + else if (num >= (int )MEM_STATUS_BITS_NUM) { + return ONIGERR_GROUP_NUMBER_OVER_FOR_CAPTURE_HISTORY; + } + ENCLOSURE_(*np)->m.regnum = num; + MEM_STATUS_ON_SIMPLE(env->capture_history, num); } else { - return ONIGERR_UNDEFINED_GROUP_OPTION; + return ONIGERR_UNDEFINED_GROUP_OPTION; } break; @@ -4650,70 +7375,79 @@ parse_enclose(Node** np, OnigToken* tok, int term, UChar** src, UChar* end, case 'p': #endif case '-': case 'i': case 'm': case 's': case 'x': + case 'W': case 'D': case 'S': case 'P': { - int neg = 0; - - while (1) { - switch (c) { - case ':': - case ')': - break; - - case '-': neg = 1; break; - case 'x': ONOFF(option, ONIG_OPTION_EXTEND, neg); break; - case 'i': ONOFF(option, ONIG_OPTION_IGNORECASE, neg); break; - case 's': - if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_OPTION_PERL)) { - ONOFF(option, ONIG_OPTION_MULTILINE, neg); - } - else - return ONIGERR_UNDEFINED_GROUP_OPTION; - break; - - case 'm': - if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_OPTION_PERL)) { - ONOFF(option, ONIG_OPTION_SINGLELINE, (neg == 0 ? 1 : 0)); - } - else if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_OPTION_RUBY)) { - ONOFF(option, ONIG_OPTION_MULTILINE, neg); - } - else - return ONIGERR_UNDEFINED_GROUP_OPTION; - break; + int neg = 0; + + while (1) { + switch (c) { + case ':': + case ')': + break; + + case '-': neg = 1; break; + case 'x': OPTION_NEGATE(option, ONIG_OPTION_EXTEND, neg); break; + case 'i': OPTION_NEGATE(option, ONIG_OPTION_IGNORECASE, neg); break; + case 's': + if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_OPTION_PERL)) { + OPTION_NEGATE(option, ONIG_OPTION_MULTILINE, neg); + } + else + return ONIGERR_UNDEFINED_GROUP_OPTION; + break; + + case 'm': + if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_OPTION_PERL)) { + OPTION_NEGATE(option, ONIG_OPTION_SINGLELINE, (neg == 0 ? 1 : 0)); + } + else if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_OPTION_RUBY)) { + OPTION_NEGATE(option, ONIG_OPTION_MULTILINE, neg); + } + else + return ONIGERR_UNDEFINED_GROUP_OPTION; + break; #ifdef USE_POSIXLINE_OPTION - case 'p': - ONOFF(option, ONIG_OPTION_MULTILINE|ONIG_OPTION_SINGLELINE, neg); - break; + case 'p': + OPTION_NEGATE(option, ONIG_OPTION_MULTILINE|ONIG_OPTION_SINGLELINE, neg); + break; #endif - default: - return ONIGERR_UNDEFINED_GROUP_OPTION; - } - - if (c == ')') { - *np = node_new_option(option); - CHECK_NULL_RETURN_MEMERR(*np); - *src = p; - return 2; /* option only */ - } - else if (c == ':') { - OnigOptionType prev = env->option; - - env->option = option; - r = fetch_token(tok, &p, end, env); - if (r < 0) return r; - r = parse_subexp(&target, tok, term, &p, end, env); - env->option = prev; - if (r < 0) return r; - *np = node_new_option(option); - CHECK_NULL_RETURN_MEMERR(*np); - NENCLOSE(*np)->target = target; - *src = p; - return 0; - } - - if (PEND) return ONIGERR_END_PATTERN_IN_GROUP; - PFETCH(c); - } + case 'W': OPTION_NEGATE(option, ONIG_OPTION_WORD_IS_ASCII, neg); break; + case 'D': OPTION_NEGATE(option, ONIG_OPTION_DIGIT_IS_ASCII, neg); break; + case 'S': OPTION_NEGATE(option, ONIG_OPTION_SPACE_IS_ASCII, neg); break; + case 'P': OPTION_NEGATE(option, ONIG_OPTION_POSIX_IS_ASCII, neg); break; + + default: + return ONIGERR_UNDEFINED_GROUP_OPTION; + } + + if (c == ')') { + *np = node_new_option(option); + CHECK_NULL_RETURN_MEMERR(*np); + *src = p; + return 2; /* option only */ + } + else if (c == ':') { + OnigOptionType prev = env->options; + + env->options = option; + r = fetch_token(tok, &p, end, env); + if (r < 0) return r; + r = parse_subexp(&target, tok, term, &p, end, env); + env->options = prev; + if (r < 0) { + onig_node_free(target); + return r; + } + *np = node_new_option(option); + CHECK_NULL_RETURN_MEMERR(*np); + NODE_BODY(*np) = target; + *src = p; + return 0; + } + + if (PEND) return ONIGERR_END_PATTERN_IN_GROUP; + PFETCH(c); + } } break; @@ -4721,34 +7455,47 @@ parse_enclose(Node** np, OnigToken* tok, int term, UChar** src, UChar* end, return ONIGERR_UNDEFINED_GROUP_OPTION; } } +#ifdef USE_CALLOUT + else if (c == '*' && + IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_ASTERISK_CALLOUT_NAME)) { + PINC; + r = parse_callout_of_name(np, ')', &p, end, env); + if (r != 0) return r; + + goto end; + } +#endif else { - if (ONIG_IS_OPTION_ON(env->option, ONIG_OPTION_DONT_CAPTURE_GROUP)) + if (ONIG_IS_OPTION_ON(env->options, ONIG_OPTION_DONT_CAPTURE_GROUP)) goto group; - *np = node_new_enclose_memory(env->option, 0); + *np = node_new_memory(0); CHECK_NULL_RETURN_MEMERR(*np); num = scan_env_add_mem_entry(env); if (num < 0) return num; - NENCLOSE(*np)->regnum = num; + ENCLOSURE_(*np)->m.regnum = num; } CHECK_NULL_RETURN_MEMERR(*np); r = fetch_token(tok, &p, end, env); if (r < 0) return r; r = parse_subexp(&target, tok, term, &p, end, env); - if (r < 0) return r; + if (r < 0) { + onig_node_free(target); + return r; + } - if (NTYPE(*np) == NT_ANCHOR) - NANCHOR(*np)->target = target; - else { - NENCLOSE(*np)->target = target; - if (NENCLOSE(*np)->type == ENCLOSE_MEMORY) { + NODE_BODY(*np) = target; + + if (NODE_TYPE(*np) == NODE_ENCLOSURE) { + if (ENCLOSURE_(*np)->type == ENCLOSURE_MEMORY) { /* Don't move this to previous of parse_subexp() */ - r = scan_env_set_mem_node(env, NENCLOSE(*np)->regnum, *np); + r = scan_env_set_mem_node(env, ENCLOSURE_(*np)->m.regnum, *np); if (r != 0) return r; } } + end: *src = p; return 0; } @@ -4764,40 +7511,35 @@ static const char* ReduceQStr[] = { static int set_quantifier(Node* qnode, Node* target, int group, ScanEnv* env) { - QtfrNode* qn; + QuantNode* qn; - qn = NQTFR(qnode); - if (qn->lower == 1 && qn->upper == 1) { + qn = QUANT_(qnode); + if (qn->lower == 1 && qn->upper == 1) return 1; - } - switch (NTYPE(target)) { - case NT_STR: + switch (NODE_TYPE(target)) { + case NODE_STRING: if (! group) { - StrNode* sn = NSTR(target); - if (str_node_can_be_split(sn, env->enc)) { - Node* n = str_node_split_last_char(sn, env->enc); - if (IS_NOT_NULL(n)) { - qn->target = n; - return 2; - } + if (str_node_can_be_split(target, env->enc)) { + Node* n = str_node_split_last_char(target, env->enc); + if (IS_NOT_NULL(n)) { + NODE_BODY(qnode) = n; + return 2; + } } } break; - case NT_QTFR: + case NODE_QUANT: { /* check redundant double repeat. */ /* verbose warn (?:.?)? etc... but not warn (.?)? etc... */ - QtfrNode* qnt = NQTFR(target); - int nestq_num = popular_quantifier_num(qn); - int targetq_num = popular_quantifier_num(qnt); - if (nestq_num < 0 || targetq_num < 0) { - return ONIGERR_TYPE_BUG; - } + QuantNode* qnt = QUANT_(target); + int nestq_num = quantifier_type_num(qn); + int targetq_num = quantifier_type_num(qnt); #ifdef USE_WARNING_REDUNDANT_NESTED_REPEAT_OPERATOR - if (!IS_QUANTIFIER_BY_NUMBER(qn) && !IS_QUANTIFIER_BY_NUMBER(qnt) && - IS_SYNTAX_BV(env->syntax, ONIG_SYN_WARN_REDUNDANT_NESTED_REPEAT)) { + if (targetq_num >= 0 && nestq_num >= 0 && + IS_SYNTAX_BV(env->syntax, ONIG_SYN_WARN_REDUNDANT_NESTED_REPEAT)) { UChar buf[WARN_BUFSIZE]; switch(ReduceTypeTable[targetq_num][nestq_num]) { @@ -4807,8 +7549,8 @@ set_quantifier(Node* qnode, Node* target, int group, ScanEnv* env) case RQ_DEL: if (onig_verb_warn != onig_null_warn) { onig_snprintf_with_pattern(buf, WARN_BUFSIZE, env->enc, - env->pattern, env->pattern_end, - (UChar* )"redundant nested repeat operator"); + env->pattern, env->pattern_end, + (UChar* )"redundant nested repeat operator"); (*onig_verb_warn)((char* )buf); } goto warn_exit; @@ -4830,17 +7572,18 @@ set_quantifier(Node* qnode, Node* target, int group, ScanEnv* env) warn_exit: #endif - if (targetq_num >= 0) { - if (nestq_num >= 0) { - onig_reduce_nested_quantifier(qnode, target); - goto q_exit; - } - else if (targetq_num == 1 || targetq_num == 2) { /* * or + */ - /* (?:a*){n,m}, (?:a+){n,m} => (?:a*){n,n}, (?:a+){n,n} */ - if (! IS_REPEAT_INFINITE(qn->upper) && qn->upper > 1 && qn->greedy) { - qn->upper = (qn->lower == 0 ? 1 : qn->lower); - } - } + if (targetq_num >= 0 && nestq_num < 0) { + if (targetq_num == 1 || targetq_num == 2) { /* * or + */ + /* (?:a*){n,m}, (?:a+){n,m} => (?:a*){n,n}, (?:a+){n,n} */ + if (! IS_REPEAT_INFINITE(qn->upper) && qn->upper > 1 && qn->greedy) { + qn->upper = (qn->lower == 0 ? 1 : qn->lower); + } + } + } + else { + NODE_BODY(qnode) = target; + onig_reduce_nested_quantifier(qnode, target); + goto q_exit; } } break; @@ -4849,89 +7592,12 @@ set_quantifier(Node* qnode, Node* target, int group, ScanEnv* env) break; } - qn->target = target; + NODE_BODY(qnode) = target; q_exit: return 0; } -#ifdef USE_SHARED_CCLASS_TABLE - -#define THRESHOLD_RANGE_NUM_FOR_SHARE_CCLASS 8 - -/* for ctype node hash table */ - -typedef struct { - OnigEncoding enc; - int not; - int type; -} type_cclass_key; - -static int type_cclass_cmp(type_cclass_key* x, type_cclass_key* y) -{ - if (x->type != y->type) return 1; - if (x->enc != y->enc) return 1; - if (x->not != y->not) return 1; - return 0; -} - -static int type_cclass_hash(type_cclass_key* key) -{ - int i, val; - UChar *p; - - val = 0; - - p = (UChar* )&(key->enc); - for (i = 0; i < (int )sizeof(key->enc); i++) { - val = val * 997 + (int )*p++; - } - - p = (UChar* )(&key->type); - for (i = 0; i < (int )sizeof(key->type); i++) { - val = val * 997 + (int )*p++; - } - - val += key->not; - return val + (val >> 5); -} - -static struct st_hash_type type_type_cclass_hash = { - type_cclass_cmp, - type_cclass_hash, -}; - -static st_table* OnigTypeCClassTable; - - -static int -i_free_shared_class(type_cclass_key* key, Node* node, void* arg ARG_UNUSED) -{ - if (IS_NOT_NULL(node)) { - CClassNode* cc = NCCLASS(node); - if (IS_NOT_NULL(cc->mbuf)) xfree(cc->mbuf); - xfree(node); - } - - if (IS_NOT_NULL(key)) xfree(key); - return ST_DELETE; -} - -extern int -onig_free_shared_cclass_table(void) -{ - if (IS_NOT_NULL(OnigTypeCClassTable)) { - onig_st_foreach(OnigTypeCClassTable, i_free_shared_class, 0); - onig_st_free_table(OnigTypeCClassTable); - OnigTypeCClassTable = NULL; - } - - return 0; -} - -#endif /* USE_SHARED_CCLASS_TABLE */ - - #ifndef CASE_FOLD_IS_APPLIED_INSIDE_NEGATIVE_CCLASS static int clear_not_flag_cclass(CClassNode* cc, OnigEncoding enc) @@ -4965,8 +7631,7 @@ typedef struct { } IApplyCaseFoldArg; static int -i_apply_case_fold(OnigCodePoint from, OnigCodePoint to[], - int to_len, void* arg) +i_apply_case_fold(OnigCodePoint from, OnigCodePoint to[], int to_len, void* arg) { IApplyCaseFoldArg* iarg; ScanEnv* env; @@ -4982,26 +7647,26 @@ i_apply_case_fold(OnigCodePoint from, OnigCodePoint to[], int is_in = onig_is_code_in_cc(env->enc, from, cc); #ifdef CASE_FOLD_IS_APPLIED_INSIDE_NEGATIVE_CCLASS if ((is_in != 0 && !IS_NCCLASS_NOT(cc)) || - (is_in == 0 && IS_NCCLASS_NOT(cc))) { + (is_in == 0 && IS_NCCLASS_NOT(cc))) { if (ONIGENC_MBC_MINLEN(env->enc) > 1 || *to >= SINGLE_BYTE_SIZE) { - add_code_range(&(cc->mbuf), env, *to, *to); + add_code_range(&(cc->mbuf), env, *to, *to); } else { - BITSET_SET_BIT(bs, *to); + BITSET_SET_BIT(bs, *to); } } #else if (is_in != 0) { if (ONIGENC_MBC_MINLEN(env->enc) > 1 || *to >= SINGLE_BYTE_SIZE) { - if (IS_NCCLASS_NOT(cc)) clear_not_flag_cclass(cc, env->enc); - add_code_range(&(cc->mbuf), env, *to, *to); + if (IS_NCCLASS_NOT(cc)) clear_not_flag_cclass(cc, env->enc); + add_code_range(&(cc->mbuf), env, *to, *to); } else { - if (IS_NCCLASS_NOT(cc)) { - BITSET_CLEAR_BIT(bs, *to); - } - else - BITSET_SET_BIT(bs, *to); + if (IS_NCCLASS_NOT(cc)) { + BITSET_CLEAR_BIT(bs, *to); + } + else + BITSET_SET_BIT(bs, *to); } } #endif /* CASE_FOLD_IS_APPLIED_INSIDE_NEGATIVE_CCLASS */ @@ -5013,31 +7678,31 @@ i_apply_case_fold(OnigCodePoint from, OnigCodePoint to[], if (onig_is_code_in_cc(env->enc, from, cc) #ifdef CASE_FOLD_IS_APPLIED_INSIDE_NEGATIVE_CCLASS - && !IS_NCCLASS_NOT(cc) + && !IS_NCCLASS_NOT(cc) #endif - ) { + ) { for (i = 0; i < to_len; i++) { - len = ONIGENC_CODE_TO_MBC(env->enc, to[i], buf); - if (i == 0) { - snode = onig_node_new_str(buf, buf + len); - CHECK_NULL_RETURN_MEMERR(snode); - - /* char-class expanded multi-char only - compare with string folded at match time. */ - NSTRING_SET_AMBIG(snode); - } - else { - r = onig_node_str_cat(snode, buf, buf + len); - if (r < 0) { - onig_node_free(snode); - return r; - } - } + len = ONIGENC_CODE_TO_MBC(env->enc, to[i], buf); + if (i == 0) { + snode = onig_node_new_str(buf, buf + len); + CHECK_NULL_RETURN_MEMERR(snode); + + /* char-class expanded multi-char only + compare with string folded at match time. */ + NODE_STRING_SET_AMBIG(snode); + } + else { + r = onig_node_str_cat(snode, buf, buf + len); + if (r < 0) { + onig_node_free(snode); + return r; + } + } } *(iarg->ptail) = onig_node_new_alt(snode, NULL_NODE); CHECK_NULL_RETURN_MEMERR(*(iarg->ptail)); - iarg->ptail = &(NCDR((*(iarg->ptail)))); + iarg->ptail = &(NODE_CDR((*(iarg->ptail)))); } } @@ -5045,8 +7710,8 @@ i_apply_case_fold(OnigCodePoint from, OnigCodePoint to[], } static int -parse_exp(Node** np, OnigToken* tok, int term, - UChar** src, UChar* end, ScanEnv* env) +parse_exp(Node** np, OnigToken* tok, int term, UChar** src, UChar* end, + ScanEnv* env) { int r, len, group = 0; Node* qn; @@ -5065,20 +7730,23 @@ parse_exp(Node** np, OnigToken* tok, int term, break; case TK_SUBEXP_OPEN: - r = parse_enclose(np, tok, TK_SUBEXP_CLOSE, src, end, env); + r = parse_enclosure(np, tok, TK_SUBEXP_CLOSE, src, end, env); if (r < 0) return r; if (r == 1) group = 1; else if (r == 2) { /* option only */ Node* target; - OnigOptionType prev = env->option; + OnigOptionType prev = env->options; - env->option = NENCLOSE(*np)->option; + env->options = ENCLOSURE_(*np)->o.options; r = fetch_token(tok, src, end, env); if (r < 0) return r; r = parse_subexp(&target, tok, term, src, end, env); - env->option = prev; - if (r < 0) return r; - NENCLOSE(*np)->target = target; + env->options = prev; + if (r < 0) { + onig_node_free(target); + return r; + } + NODE_BODY(*np) = target; return tok->type; } break; @@ -5098,12 +7766,12 @@ parse_exp(Node** np, OnigToken* tok, int term, CHECK_NULL_RETURN_MEMERR(*np); while (1) { - r = fetch_token(tok, src, end, env); - if (r < 0) return r; - if (r != TK_STRING) break; + r = fetch_token(tok, src, end, env); + if (r < 0) return r; + if (r != TK_STRING) break; - r = onig_node_str_cat(*np, tok->backp, *src); - if (r < 0) return r; + r = onig_node_str_cat(*np, tok->backp, *src); + if (r < 0) return r; } string_end: @@ -5119,36 +7787,36 @@ parse_exp(Node** np, OnigToken* tok, int term, CHECK_NULL_RETURN_MEMERR(*np); len = 1; while (1) { - if (len >= ONIGENC_MBC_MINLEN(env->enc)) { - if (len == enclen(env->enc, NSTR(*np)->s)) { - r = fetch_token(tok, src, end, env); - NSTRING_CLEAR_RAW(*np); - goto string_end; - } - } - - r = fetch_token(tok, src, end, env); - if (r < 0) return r; - if (r != TK_RAW_BYTE) { - /* Don't use this, it is wrong for little endian encodings. */ + if (len >= ONIGENC_MBC_MINLEN(env->enc)) { + if (len == enclen(env->enc, STR_(*np)->s)) {/* should not enclen_end() */ + r = fetch_token(tok, src, end, env); + NODE_STRING_CLEAR_RAW(*np); + goto string_end; + } + } + + r = fetch_token(tok, src, end, env); + if (r < 0) return r; + if (r != TK_RAW_BYTE) { + /* Don't use this, it is wrong for little endian encodings. */ #ifdef USE_PAD_TO_SHORT_BYTE_CHAR - int rem; - if (len < ONIGENC_MBC_MINLEN(env->enc)) { - rem = ONIGENC_MBC_MINLEN(env->enc) - len; - (void )node_str_head_pad(NSTR(*np), rem, (UChar )0); - if (len + rem == enclen(env->enc, NSTR(*np)->s)) { - NSTRING_CLEAR_RAW(*np); - goto string_end; - } - } + int rem; + if (len < ONIGENC_MBC_MINLEN(env->enc)) { + rem = ONIGENC_MBC_MINLEN(env->enc) - len; + (void )node_str_head_pad(STR_(*np), rem, (UChar )0); + if (len + rem == enclen(env->enc, STR_(*np)->s)) { + NODE_STRING_CLEAR_RAW(*np); + goto string_end; + } + } #endif - return ONIGERR_TOO_SHORT_MULTI_BYTE_STRING; - } + return ONIGERR_TOO_SHORT_MULTI_BYTE_STRING; + } - r = node_str_cat_char(*np, (UChar )tok->u.c); - if (r < 0) return r; + r = node_str_cat_char(*np, (UChar )tok->u.c); + if (r < 0) return r; - len++; + len++; } } break; @@ -5177,7 +7845,7 @@ parse_exp(Node** np, OnigToken* tok, int term, qstart = *src; qend = find_str_position(end_op, 2, qstart, end, &nextp, env->enc); if (IS_NULL(qend)) { - nextp = qend = end; + nextp = qend = end; } *np = node_new_str(qstart, qend); CHECK_NULL_RETURN_MEMERR(*np); @@ -5189,83 +7857,27 @@ parse_exp(Node** np, OnigToken* tok, int term, { switch (tok->u.prop.ctype) { case ONIGENC_CTYPE_WORD: - *np = node_new_ctype(tok->u.prop.ctype, tok->u.prop.not); - CHECK_NULL_RETURN_MEMERR(*np); - break; + *np = node_new_ctype(tok->u.prop.ctype, tok->u.prop.not, env->options); + CHECK_NULL_RETURN_MEMERR(*np); + break; case ONIGENC_CTYPE_SPACE: case ONIGENC_CTYPE_DIGIT: case ONIGENC_CTYPE_XDIGIT: - { - CClassNode* cc; - -#ifdef USE_SHARED_CCLASS_TABLE - const OnigCodePoint *mbr; - OnigCodePoint sb_out; - - r = ONIGENC_GET_CTYPE_CODE_RANGE(env->enc, tok->u.prop.ctype, - &sb_out, &mbr); - if (r == 0 && - ONIGENC_CODE_RANGE_NUM(mbr) - >= THRESHOLD_RANGE_NUM_FOR_SHARE_CCLASS) { - type_cclass_key key; - type_cclass_key* new_key; - - key.enc = env->enc; - key.not = tok->u.prop.not; - key.type = tok->u.prop.ctype; - - THREAD_ATOMIC_START; - - if (IS_NULL(OnigTypeCClassTable)) { - OnigTypeCClassTable - = onig_st_init_table_with_size(&type_type_cclass_hash, 10); - if (IS_NULL(OnigTypeCClassTable)) { - THREAD_ATOMIC_END; - return ONIGERR_MEMORY; - } - } - else { - if (onig_st_lookup(OnigTypeCClassTable, (st_data_t )(UINTN)&key, - (st_data_t* )np)) { - THREAD_ATOMIC_END; - break; - } - } - - *np = node_new_cclass_by_codepoint_range(tok->u.prop.not, - sb_out, mbr); - if (IS_NULL(*np)) { - THREAD_ATOMIC_END; - return ONIGERR_MEMORY; - } - - cc = NCCLASS(*np); - NCCLASS_SET_SHARE(cc); - new_key = (type_cclass_key* )xmalloc(sizeof(type_cclass_key)); - CHECK_NULL_RETURN_MEMERR(new_key); - xmemcpy(new_key, &key, sizeof(type_cclass_key)); - onig_st_add_direct(OnigTypeCClassTable, (st_data_t )(UINTN)new_key, - (st_data_t )(UINTN)*np); - - THREAD_ATOMIC_END; - } - else { -#endif - *np = node_new_cclass(); - CHECK_NULL_RETURN_MEMERR(*np); - cc = NCCLASS(*np); - add_ctype_to_cc(cc, tok->u.prop.ctype, 0, env); - if (tok->u.prop.not != 0) NCCLASS_SET_NOT(cc); -#ifdef USE_SHARED_CCLASS_TABLE - } -#endif - } - break; + { + CClassNode* cc; + + *np = node_new_cclass(); + CHECK_NULL_RETURN_MEMERR(*np); + cc = CCLASS_(*np); + add_ctype_to_cc(cc, tok->u.prop.ctype, 0, env); + if (tok->u.prop.not != 0) NCCLASS_SET_NOT(cc); + } + break; default: - return ONIGERR_PARSER_BUG; - break; + return ONIGERR_PARSER_BUG; + break; } } break; @@ -5282,29 +7894,29 @@ parse_exp(Node** np, OnigToken* tok, int term, r = parse_char_class(np, tok, src, end, env); if (r != 0) return r; - cc = NCCLASS(*np); - if (IS_IGNORECASE(env->option)) { - IApplyCaseFoldArg iarg; - - iarg.env = env; - iarg.cc = cc; - iarg.alt_root = NULL_NODE; - iarg.ptail = &(iarg.alt_root); - - r = ONIGENC_APPLY_ALL_CASE_FOLD(env->enc, env->case_fold_flag, - i_apply_case_fold, &iarg); - if (r != 0) { - onig_node_free(iarg.alt_root); - return r; - } - if (IS_NOT_NULL(iarg.alt_root)) { + cc = CCLASS_(*np); + if (IS_IGNORECASE(env->options)) { + IApplyCaseFoldArg iarg; + + iarg.env = env; + iarg.cc = cc; + iarg.alt_root = NULL_NODE; + iarg.ptail = &(iarg.alt_root); + + r = ONIGENC_APPLY_ALL_CASE_FOLD(env->enc, env->case_fold_flag, + i_apply_case_fold, &iarg); + if (r != 0) { + onig_node_free(iarg.alt_root); + return r; + } + if (IS_NOT_NULL(iarg.alt_root)) { Node* work = onig_node_new_alt(*np, iarg.alt_root); if (IS_NULL(work)) { onig_node_free(iarg.alt_root); return ONIGERR_MEMORY; } *np = work; - } + } } } break; @@ -5319,59 +7931,85 @@ parse_exp(Node** np, OnigToken* tok, int term, CHECK_NULL_RETURN_MEMERR(*np); qn = node_new_quantifier(0, REPEAT_INFINITE, 0); CHECK_NULL_RETURN_MEMERR(qn); - NQTFR(qn)->target = *np; + NODE_BODY(qn) = *np; *np = qn; break; case TK_BACKREF: len = tok->u.backref.num; *np = node_new_backref(len, - (len > 1 ? tok->u.backref.refs : &(tok->u.backref.ref1)), - tok->u.backref.by_name, + (len > 1 ? tok->u.backref.refs : &(tok->u.backref.ref1)), + tok->u.backref.by_name, #ifdef USE_BACKREF_WITH_LEVEL - tok->u.backref.exist_level, - tok->u.backref.level, + tok->u.backref.exist_level, + tok->u.backref.level, #endif - env); + env); CHECK_NULL_RETURN_MEMERR(*np); break; -#ifdef USE_SUBEXP_CALL +#ifdef USE_CALL case TK_CALL: { int gnum = tok->u.call.gnum; - if (gnum < 0) { - gnum = BACKREF_REL_TO_ABS(gnum, env); - if (gnum <= 0) - return ONIGERR_INVALID_BACKREF; - } - *np = node_new_call(tok->u.call.name, tok->u.call.name_end, gnum); + *np = node_new_call(tok->u.call.name, tok->u.call.name_end, + gnum, tok->u.call.by_number); CHECK_NULL_RETURN_MEMERR(*np); env->num_call++; + if (tok->u.call.by_number != 0 && gnum == 0) { + env->has_call_zero = 1; + } } break; #endif case TK_ANCHOR: - *np = onig_node_new_anchor(tok->u.anchor); - CHECK_NULL_RETURN_MEMERR(*np); + { + 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); + } break; case TK_OP_REPEAT: case TK_INTERVAL: if (IS_SYNTAX_BV(env->syntax, ONIG_SYN_CONTEXT_INDEP_REPEAT_OPS)) { if (IS_SYNTAX_BV(env->syntax, ONIG_SYN_CONTEXT_INVALID_REPEAT_OPS)) - return ONIGERR_TARGET_OF_REPEAT_OPERATOR_NOT_SPECIFIED; + return ONIGERR_TARGET_OF_REPEAT_OPERATOR_NOT_SPECIFIED; else - *np = node_new_empty(); - CHECK_NULL_RETURN_MEMERR(*np); + *np = node_new_empty(); } else { goto tk_byte; } break; + case TK_KEEP: + r = node_new_keep(np, env); + if (r < 0) return r; + break; + + case TK_GENERAL_NEWLINE: + r = node_new_general_newline(np, env); + if (r < 0) return r; + break; + + case TK_NO_NEWLINE: + r = node_new_no_newline(np, env); + if (r < 0) return r; + break; + + case TK_TRUE_ANYCHAR: + r = node_new_true_anychar(np, env); + if (r < 0) return r; + break; + + case TK_EXTENDED_GRAPHEME_CLUSTER: + r = make_extended_grapheme_cluster(np, env); + if (r < 0) return r; + break; + default: return ONIGERR_PARSER_BUG; break; @@ -5387,49 +8025,49 @@ parse_exp(Node** np, OnigToken* tok, int term, repeat: if (r == TK_OP_REPEAT || r == TK_INTERVAL) { if (is_invalid_quantifier_target(*targetp)) - return ONIGERR_TARGET_OF_REPEAT_OPERATOR_INVALID; + return ONIGERR_TARGET_OF_REPEAT_OPERATOR_INVALID; qn = node_new_quantifier(tok->u.repeat.lower, tok->u.repeat.upper, - (r == TK_INTERVAL ? 1 : 0)); + (r == TK_INTERVAL ? 1 : 0)); CHECK_NULL_RETURN_MEMERR(qn); - NQTFR(qn)->greedy = tok->u.repeat.greedy; + QUANT_(qn)->greedy = tok->u.repeat.greedy; r = set_quantifier(qn, *targetp, group, env); if (r < 0) { - onig_node_free(qn); - return r; + onig_node_free(qn); + return r; } if (tok->u.repeat.possessive != 0) { - Node* en; - en = node_new_enclose(ENCLOSE_STOP_BACKTRACK); - if (IS_NULL(en)) { - onig_node_free(qn); - return ONIGERR_MEMORY; - } - NENCLOSE(en)->target = qn; - qn = en; + Node* en; + en = node_new_enclosure(ENCLOSURE_STOP_BACKTRACK); + if (IS_NULL(en)) { + onig_node_free(qn); + return ONIGERR_MEMORY; + } + NODE_BODY(en) = qn; + qn = en; } if (r == 0) { - *targetp = qn; + *targetp = qn; } else if (r == 1) { - onig_node_free(qn); + onig_node_free(qn); } else if (r == 2) { /* split case: /abc+/ */ - Node *tmp; - - *targetp = node_new_list(*targetp, NULL); - if (IS_NULL(*targetp)) { - onig_node_free(qn); - return ONIGERR_MEMORY; - } - tmp = NCDR(*targetp) = node_new_list(qn, NULL); - if (IS_NULL(tmp)) { - onig_node_free(qn); - return ONIGERR_MEMORY; - } - targetp = &(NCAR(tmp)); + Node *tmp; + + *targetp = node_new_list(*targetp, NULL); + if (IS_NULL(*targetp)) { + onig_node_free(qn); + return ONIGERR_MEMORY; + } + tmp = NODE_CDR(*targetp) = node_new_list(qn, NULL); + if (IS_NULL(tmp)) { + onig_node_free(qn); + return ONIGERR_MEMORY; + } + targetp = &(NODE_CAR(tmp)); } goto re_entry; } @@ -5439,36 +8077,40 @@ parse_exp(Node** np, OnigToken* tok, int term, } static int -parse_branch(Node** top, OnigToken* tok, int term, - UChar** src, UChar* end, ScanEnv* env) +parse_branch(Node** top, OnigToken* tok, int term, UChar** src, UChar* end, + ScanEnv* env) { int r; Node *node, **headp; *top = NULL; r = parse_exp(&node, tok, term, src, end, env); - if (r < 0) return r; + if (r < 0) { + onig_node_free(node); + return r; + } if (r == TK_EOT || r == term || r == TK_ALT) { *top = node; } else { *top = node_new_list(node, NULL); - CHECK_NULL_RETURN_MEMERR(*top); - headp = &(NCDR(*top)); + headp = &(NODE_CDR(*top)); while (r != TK_EOT && r != term && r != TK_ALT) { r = parse_exp(&node, tok, term, src, end, env); - CHECK_NULL_RETURN_MEMERR(node); - if (r < 0) return r; + if (r < 0) { + onig_node_free(node); + return r; + } - if (NTYPE(node) == NT_LIST) { - *headp = node; - while (IS_NOT_NULL(NCDR(node))) node = NCDR(node); - headp = &(NCDR(node)); + if (NODE_TYPE(node) == NODE_LIST) { + *headp = node; + while (IS_NOT_NULL(NODE_CDR(node))) node = NODE_CDR(node); + headp = &(NODE_CDR(node)); } else { - *headp = node_new_list(node, NULL); - headp = &(NCDR(*headp)); + *headp = node_new_list(node, NULL); + headp = &(NODE_CDR(*headp)); } } } @@ -5478,13 +8120,16 @@ parse_branch(Node** top, OnigToken* tok, int term, /* term_tok: TK_EOT or TK_SUBEXP_CLOSE */ static int -parse_subexp(Node** top, OnigToken* tok, int term, - UChar** src, UChar* end, ScanEnv* env) +parse_subexp(Node** top, OnigToken* tok, int term, UChar** src, UChar* end, + ScanEnv* env) { int r; Node *node, **headp; *top = NULL; + env->parse_depth++; + if (env->parse_depth > ParseDepthLimit) + return ONIGERR_PARSE_DEPTH_LIMIT_OVER; r = parse_branch(&node, tok, term, src, end, env); if (r < 0) { onig_node_free(node); @@ -5496,22 +8141,24 @@ parse_subexp(Node** top, OnigToken* tok, int term, } else if (r == TK_ALT) { *top = onig_node_new_alt(node, NULL); - CHECK_NULL_RETURN_MEMERR(*top); - headp = &(NCDR(*top)); + headp = &(NODE_CDR(*top)); while (r == TK_ALT) { r = fetch_token(tok, src, end, env); if (r < 0) return r; r = parse_branch(&node, tok, term, src, end, env); - if (r < 0) return r; - + if (r < 0) { + onig_node_free(node); + return r; + } *headp = onig_node_new_alt(node, NULL); - headp = &(NCDR(*headp)); + headp = &(NODE_CDR(*headp)); } if (tok->type != (enum TokenSyms )term) goto err; } else { + onig_node_free(node); err: if (term == TK_SUBEXP_CLOSE) return ONIGERR_END_PATTERN_WITH_UNMATCHED_PARENTHESIS; @@ -5519,6 +8166,7 @@ parse_subexp(Node** top, OnigToken* tok, int term, return ONIGERR_PARSER_BUG; } + env->parse_depth--; return r; } @@ -5532,22 +8180,46 @@ parse_regexp(Node** top, UChar** src, UChar* end, ScanEnv* env) if (r < 0) return r; r = parse_subexp(top, &tok, TK_EOT, src, end, env); if (r < 0) return r; + + return 0; +} + +#ifdef USE_CALL +static int +make_call_zero_body(Node* node, ScanEnv* env, Node** rnode) +{ + int r; + + Node* x = node_new_memory(0 /* 0: is not named */); + CHECK_NULL_RETURN_MEMERR(x); + + NODE_BODY(x) = node; + ENCLOSURE_(x)->m.regnum = 0; + r = scan_env_set_mem_node(env, 0, x); + if (r != 0) { + onig_node_free(x); + return r; + } + + *rnode = x; return 0; } +#endif extern int -onig_parse_make_tree(Node** root, const UChar* pattern, const UChar* end, - regex_t* reg, ScanEnv* env) +onig_parse_tree(Node** root, const UChar* pattern, const UChar* end, + regex_t* reg, ScanEnv* env) { int r; UChar* p; +#ifdef USE_CALLOUT + RegexExt* ext; +#endif -#ifdef USE_NAMED_GROUP names_clear(reg); -#endif scan_env_clear(env); - env->option = reg->options; + env->options = reg->options; env->case_fold_flag = reg->case_fold_flag; env->enc = reg->enc; env->syntax = reg->syntax; @@ -5556,15 +8228,40 @@ onig_parse_make_tree(Node** root, const UChar* pattern, const UChar* end, env->reg = reg; *root = NULL; + + if (! ONIGENC_IS_VALID_MBC_STRING(env->enc, pattern, end)) + return ONIGERR_INVALID_WIDE_CHAR_VALUE; + p = (UChar* )pattern; r = parse_regexp(root, &p, (UChar* )end, env); + +#ifdef USE_CALL + if (r != 0) return r; + + if (env->has_call_zero != 0) { + Node* zero_node; + r = make_call_zero_body(*root, env, &zero_node); + if (r != 0) return r; + + *root = zero_node; + } +#endif + reg->num_mem = env->num_mem; + +#ifdef USE_CALLOUT + ext = REG_EXTP(reg); + if (IS_NOT_NULL(ext) && ext->callout_num > 0) { + r = setup_ext_callout_list_values(reg); + } +#endif + return r; } extern void onig_scan_env_set_error_string(ScanEnv* env, int ecode ARG_UNUSED, - UChar* arg, UChar* arg_end) + UChar* arg, UChar* arg_end) { env->error = arg; env->error_end = arg_end; diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regparse.h b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regparse.h index f1eb892640..e0086cd6c9 100644 --- a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regparse.h +++ b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regparse.h @@ -4,10 +4,8 @@ regparse.h - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2002-2007 K.Kosako + * Copyright (c) 2002-2018 K.Kosako * All rights reserved. - * - * (C) Copyright 2015 Hewlett Packard Enterprise Development LP
* * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -34,172 +32,239 @@ #include "regint.h" /* node type */ -#define NT_STR 0 -#define NT_CCLASS 1 -#define NT_CTYPE 2 -#define NT_CANY 3 -#define NT_BREF 4 -#define NT_QTFR 5 -#define NT_ENCLOSE 6 -#define NT_ANCHOR 7 -#define NT_LIST 8 -#define NT_ALT 9 -#define NT_CALL 10 +typedef enum { + NODE_STRING = 0, + NODE_CCLASS = 1, + NODE_CTYPE = 2, + NODE_BACKREF = 3, + NODE_QUANT = 4, + NODE_ENCLOSURE = 5, + NODE_ANCHOR = 6, + NODE_LIST = 7, + NODE_ALT = 8, + NODE_CALL = 9, + NODE_GIMMICK = 10 +} NodeType; + +enum GimmickType { + GIMMICK_FAIL = 0, + GIMMICK_KEEP = 1, + GIMMICK_SAVE = 2, + GIMMICK_UPDATE_VAR = 3, +#ifdef USE_CALLOUT + GIMMICK_CALLOUT = 4, +#endif +}; + /* node type bit */ -#define NTYPE2BIT(type) (1<<(type)) - -#define BIT_NT_STR NTYPE2BIT(NT_STR) -#define BIT_NT_CCLASS NTYPE2BIT(NT_CCLASS) -#define BIT_NT_CTYPE NTYPE2BIT(NT_CTYPE) -#define BIT_NT_CANY NTYPE2BIT(NT_CANY) -#define BIT_NT_BREF NTYPE2BIT(NT_BREF) -#define BIT_NT_QTFR NTYPE2BIT(NT_QTFR) -#define BIT_NT_ENCLOSE NTYPE2BIT(NT_ENCLOSE) -#define BIT_NT_ANCHOR NTYPE2BIT(NT_ANCHOR) -#define BIT_NT_LIST NTYPE2BIT(NT_LIST) -#define BIT_NT_ALT NTYPE2BIT(NT_ALT) -#define BIT_NT_CALL NTYPE2BIT(NT_CALL) - -#define IS_NODE_TYPE_SIMPLE(type) \ - ((NTYPE2BIT(type) & (BIT_NT_STR | BIT_NT_CCLASS | BIT_NT_CTYPE |\ - BIT_NT_CANY | BIT_NT_BREF)) != 0) - -#define NTYPE(node) ((node)->u.base.type) -#define SET_NTYPE(node, ntype) (node)->u.base.type = (ntype) - -#define NSTR(node) (&((node)->u.str)) -#define NCCLASS(node) (&((node)->u.cclass)) -#define NCTYPE(node) (&((node)->u.ctype)) -#define NBREF(node) (&((node)->u.bref)) -#define NQTFR(node) (&((node)->u.qtfr)) -#define NENCLOSE(node) (&((node)->u.enclose)) -#define NANCHOR(node) (&((node)->u.anchor)) -#define NCONS(node) (&((node)->u.cons)) -#define NCALL(node) (&((node)->u.call)) - -#define NCAR(node) (NCONS(node)->car) -#define NCDR(node) (NCONS(node)->cdr) - - - -#define ANCHOR_ANYCHAR_STAR_MASK (ANCHOR_ANYCHAR_STAR | ANCHOR_ANYCHAR_STAR_ML) +#define NODE_TYPE2BIT(type) (1<<(type)) + +#define NODE_BIT_STRING NODE_TYPE2BIT(NODE_STRING) +#define NODE_BIT_CCLASS NODE_TYPE2BIT(NODE_CCLASS) +#define NODE_BIT_CTYPE NODE_TYPE2BIT(NODE_CTYPE) +#define NODE_BIT_BACKREF NODE_TYPE2BIT(NODE_BACKREF) +#define NODE_BIT_QUANT NODE_TYPE2BIT(NODE_QUANT) +#define NODE_BIT_ENCLOSURE NODE_TYPE2BIT(NODE_ENCLOSURE) +#define NODE_BIT_ANCHOR NODE_TYPE2BIT(NODE_ANCHOR) +#define NODE_BIT_LIST NODE_TYPE2BIT(NODE_LIST) +#define NODE_BIT_ALT NODE_TYPE2BIT(NODE_ALT) +#define NODE_BIT_CALL NODE_TYPE2BIT(NODE_CALL) +#define NODE_BIT_GIMMICK NODE_TYPE2BIT(NODE_GIMMICK) + +#define NODE_IS_SIMPLE_TYPE(node) \ + ((NODE_TYPE2BIT(NODE_TYPE(node)) & \ + (NODE_BIT_STRING | NODE_BIT_CCLASS | NODE_BIT_CTYPE | NODE_BIT_BACKREF)) != 0) + +#define NODE_TYPE(node) ((node)->u.base.node_type) +#define NODE_SET_TYPE(node, ntype) (node)->u.base.node_type = (ntype) + +#define STR_(node) (&((node)->u.str)) +#define CCLASS_(node) (&((node)->u.cclass)) +#define CTYPE_(node) (&((node)->u.ctype)) +#define BACKREF_(node) (&((node)->u.backref)) +#define QUANT_(node) (&((node)->u.quant)) +#define ENCLOSURE_(node) (&((node)->u.enclosure)) +#define ANCHOR_(node) (&((node)->u.anchor)) +#define CONS_(node) (&((node)->u.cons)) +#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 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 ANCHOR_ANYCHAR_INF_MASK (ANCHOR_ANYCHAR_INF | ANCHOR_ANYCHAR_INF_ML) #define ANCHOR_END_BUF_MASK (ANCHOR_END_BUF | ANCHOR_SEMI_END_BUF) -#define ENCLOSE_MEMORY (1<<0) -#define ENCLOSE_OPTION (1<<1) -#define ENCLOSE_STOP_BACKTRACK (1<<2) +enum EnclosureType { + ENCLOSURE_MEMORY = 0, + ENCLOSURE_OPTION = 1, + ENCLOSURE_STOP_BACKTRACK = 2, + ENCLOSURE_IF_ELSE = 3, +}; -#define NODE_STR_MARGIN 16 -#define NODE_STR_BUF_SIZE 24 /* sizeof(CClassNode) - sizeof(int)*4 */ +#define NODE_STRING_MARGIN 16 +#define NODE_STRING_BUF_SIZE 24 /* sizeof(CClassNode) - sizeof(int)*4 */ #define NODE_BACKREFS_SIZE 6 -#define NSTR_RAW (1<<0) /* by backslashed number */ -#define NSTR_AMBIG (1<<1) -#define NSTR_DONT_GET_OPT_INFO (1<<2) - -#define NSTRING_LEN(node) ((int)((node)->u.str.end - (node)->u.str.s)) -#define NSTRING_SET_RAW(node) (node)->u.str.flag |= NSTR_RAW -#define NSTRING_CLEAR_RAW(node) (node)->u.str.flag &= ~NSTR_RAW -#define NSTRING_SET_AMBIG(node) (node)->u.str.flag |= NSTR_AMBIG -#define NSTRING_SET_DONT_GET_OPT_INFO(node) \ - (node)->u.str.flag |= NSTR_DONT_GET_OPT_INFO -#define NSTRING_IS_RAW(node) (((node)->u.str.flag & NSTR_RAW) != 0) -#define NSTRING_IS_AMBIG(node) (((node)->u.str.flag & NSTR_AMBIG) != 0) -#define NSTRING_IS_DONT_GET_OPT_INFO(node) \ - (((node)->u.str.flag & NSTR_DONT_GET_OPT_INFO) != 0) +#define NODE_STRING_RAW (1<<0) /* by backslashed number */ +#define NODE_STRING_AMBIG (1<<1) +#define NODE_STRING_DONT_GET_OPT_INFO (1<<2) + +#define NODE_STRING_LEN(node) (int )((node)->u.str.end - (node)->u.str.s) +#define NODE_STRING_SET_RAW(node) (node)->u.str.flag |= NODE_STRING_RAW +#define NODE_STRING_CLEAR_RAW(node) (node)->u.str.flag &= ~NODE_STRING_RAW +#define NODE_STRING_SET_AMBIG(node) (node)->u.str.flag |= NODE_STRING_AMBIG +#define NODE_STRING_SET_DONT_GET_OPT_INFO(node) \ + (node)->u.str.flag |= NODE_STRING_DONT_GET_OPT_INFO +#define NODE_STRING_IS_RAW(node) \ + (((node)->u.str.flag & NODE_STRING_RAW) != 0) +#define NODE_STRING_IS_AMBIG(node) \ + (((node)->u.str.flag & NODE_STRING_AMBIG) != 0) +#define NODE_STRING_IS_DONT_GET_OPT_INFO(node) \ + (((node)->u.str.flag & NODE_STRING_DONT_GET_OPT_INFO) != 0) #define BACKREFS_P(br) \ - (IS_NOT_NULL((br)->back_dynamic) ? (br)->back_dynamic : (br)->back_static); - -#define NQ_TARGET_ISNOT_EMPTY 0 -#define NQ_TARGET_IS_EMPTY 1 -#define NQ_TARGET_IS_EMPTY_MEM 2 -#define NQ_TARGET_IS_EMPTY_REC 3 - -/* status bits */ -#define NST_MIN_FIXED (1<<0) -#define NST_MAX_FIXED (1<<1) -#define NST_CLEN_FIXED (1<<2) -#define NST_MARK1 (1<<3) -#define NST_MARK2 (1<<4) -#define NST_MEM_BACKREFED (1<<5) -#define NST_STOP_BT_SIMPLE_REPEAT (1<<6) -#define NST_RECURSION (1<<7) -#define NST_CALLED (1<<8) -#define NST_ADDR_FIXED (1<<9) -#define NST_NAMED_GROUP (1<<10) -#define NST_NAME_REF (1<<11) -#define NST_IN_REPEAT (1<<12) /* STK_REPEAT is nested in stack. */ -#define NST_NEST_LEVEL (1<<13) -#define NST_BY_NUMBER (1<<14) /* {n,m} */ - -#define SET_ENCLOSE_STATUS(node,f) (node)->u.enclose.state |= (f) -#define CLEAR_ENCLOSE_STATUS(node,f) (node)->u.enclose.state &= ~(f) - -#define IS_ENCLOSE_CALLED(en) (((en)->state & NST_CALLED) != 0) -#define IS_ENCLOSE_ADDR_FIXED(en) (((en)->state & NST_ADDR_FIXED) != 0) -#define IS_ENCLOSE_RECURSION(en) (((en)->state & NST_RECURSION) != 0) -#define IS_ENCLOSE_MARK1(en) (((en)->state & NST_MARK1) != 0) -#define IS_ENCLOSE_MARK2(en) (((en)->state & NST_MARK2) != 0) -#define IS_ENCLOSE_MIN_FIXED(en) (((en)->state & NST_MIN_FIXED) != 0) -#define IS_ENCLOSE_MAX_FIXED(en) (((en)->state & NST_MAX_FIXED) != 0) -#define IS_ENCLOSE_CLEN_FIXED(en) (((en)->state & NST_CLEN_FIXED) != 0) -#define IS_ENCLOSE_STOP_BT_SIMPLE_REPEAT(en) \ - (((en)->state & NST_STOP_BT_SIMPLE_REPEAT) != 0) -#define IS_ENCLOSE_NAMED_GROUP(en) (((en)->state & NST_NAMED_GROUP) != 0) - -#define SET_CALL_RECURSION(node) (node)->u.call.state |= NST_RECURSION -#define IS_CALL_RECURSION(cn) (((cn)->state & NST_RECURSION) != 0) -#define IS_CALL_NAME_REF(cn) (((cn)->state & NST_NAME_REF) != 0) -#define IS_BACKREF_NAME_REF(bn) (((bn)->state & NST_NAME_REF) != 0) -#define IS_BACKREF_NEST_LEVEL(bn) (((bn)->state & NST_NEST_LEVEL) != 0) -#define IS_QUANTIFIER_IN_REPEAT(qn) (((qn)->state & NST_IN_REPEAT) != 0) -#define IS_QUANTIFIER_BY_NUMBER(qn) (((qn)->state & NST_BY_NUMBER) != 0) - -#define CALLNODE_REFNUM_UNDEF -1 + (IS_NOT_NULL((br)->back_dynamic) ? (br)->back_dynamic : (br)->back_static) + +enum QuantBodyEmpty { + QUANT_BODY_IS_NOT_EMPTY = 0, + QUANT_BODY_IS_EMPTY = 1, + QUANT_BODY_IS_EMPTY_MEM = 2, + QUANT_BODY_IS_EMPTY_REC = 3 +}; + +/* 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_STOP_BT_SIMPLE_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_STATUS(node) (((Node* )node)->u.base.status) +#define NODE_STATUS_ADD(node,f) (NODE_STATUS(node) |= (NODE_ST_ ## f)) +#define NODE_STATUS_REMOVE(node,f) (NODE_STATUS(node) &= ~(NODE_ST_ ## f)) + +#define NODE_IS_BY_NUMBER(node) ((NODE_STATUS(node) & NODE_ST_BY_NUMBER) != 0) +#define NODE_IS_IN_REAL_REPEAT(node) ((NODE_STATUS(node) & NODE_ST_IN_REAL_REPEAT) != 0) +#define NODE_IS_CALLED(node) ((NODE_STATUS(node) & NODE_ST_CALLED) != 0) +#define NODE_IS_IN_MULTI_ENTRY(node) ((NODE_STATUS(node) & NODE_ST_IN_MULTI_ENTRY) != 0) +#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_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) +#define NODE_IS_STOP_BT_SIMPLE_REPEAT(node) \ + ((NODE_STATUS(node) & NODE_ST_STOP_BT_SIMPLE_REPEAT) != 0) + +#define NODE_BODY(node) ((node)->u.base.body) +#define NODE_QUANT_BODY(node) ((node)->body) +#define NODE_ENCLOSURE_BODY(node) ((node)->body) +#define NODE_CALL_BODY(node) ((node)->body) +#define NODE_ANCHOR_BODY(node) ((node)->body) + typedef struct { - NodeBase base; + NodeType node_type; + int status; + UChar* s; UChar* end; unsigned int flag; int capa; /* (allocated size - 1) or 0: use buf[] */ - UChar buf[NODE_STR_BUF_SIZE]; + UChar buf[NODE_STRING_BUF_SIZE]; } StrNode; typedef struct { - NodeBase base; - int state; - struct _Node* target; + NodeType node_type; + int status; + + unsigned int flags; + BitSet bs; + BBuf* mbuf; /* multi-byte info or NULL */ +} CClassNode; + +typedef struct { + NodeType node_type; + int status; + struct _Node* body; + int lower; int upper; int greedy; - int target_empty_info; + enum QuantBodyEmpty body_empty_info; struct _Node* head_exact; struct _Node* next_head_exact; int is_refered; /* include called node. don't eliminate even if {0} */ -#ifdef USE_COMBINATION_EXPLOSION_CHECK - int comb_exp_check_num; /* 1,2,3...: check, 0: no check */ -#endif -} QtfrNode; +} QuantNode; typedef struct { - NodeBase base; - int state; - int type; - int regnum; - OnigOptionType option; - struct _Node* target; - AbsAddrType call_addr; + NodeType node_type; + int status; + struct _Node* body; + + enum EnclosureType type; + union { + struct { + int regnum; + AbsAddrType called_addr; + int entry_count; + int called_state; + } m; + struct { + OnigOptionType options; + } o; + struct { + /* body is condition */ + struct _Node* Then; + struct _Node* Else; + } te; + }; /* for multiple call reference */ - OnigDistance min_len; /* min length (byte) */ - OnigDistance max_len; /* max length (byte) */ - int char_len; /* character length */ - int opt_count; /* referenced count in optimize_node_left() */ -} EncloseNode; + OnigLen min_len; /* min length (byte) */ + OnigLen max_len; /* max length (byte) */ + int char_len; /* character length */ + int opt_count; /* referenced count in optimize_nodes() */ +} EnclosureNode; -#ifdef USE_SUBEXP_CALL +#ifdef USE_CALL typedef struct { int offset; @@ -213,101 +278,140 @@ typedef struct { } UnsetAddrList; typedef struct { - NodeBase base; - int state; + NodeType node_type; + int status; + struct _Node* body; /* to EnclosureNode : ENCLOSURE_MEMORY */ + + int by_number; int group_num; UChar* name; UChar* name_end; - struct _Node* target; /* EncloseNode : ENCLOSE_MEMORY */ - UnsetAddrList* unset_addr_list; + int entry_count; } CallNode; #endif typedef struct { - NodeBase base; - int state; + NodeType node_type; + int status; + int back_num; int back_static[NODE_BACKREFS_SIZE]; int* back_dynamic; int nest_level; -} BRefNode; +} BackRefNode; typedef struct { - NodeBase base; + NodeType node_type; + int status; + struct _Node* body; + int type; - struct _Node* target; int char_len; + int ascii_mode; } AnchorNode; typedef struct { - NodeBase base; + NodeType node_type; + int status; + struct _Node* car; struct _Node* cdr; } ConsAltNode; typedef struct { - NodeBase base; + NodeType node_type; + int status; + int ctype; int not; + OnigOptionType options; + int ascii_mode; } CtypeNode; +typedef struct { + NodeType node_type; + int status; + + enum GimmickType type; + int detail_type; + int num; + int id; +} GimmickNode; + typedef struct _Node { union { - NodeBase base; - StrNode str; - CClassNode cclass; - QtfrNode qtfr; - EncloseNode enclose; - BRefNode bref; - AnchorNode anchor; - ConsAltNode cons; - CtypeNode ctype; -#ifdef USE_SUBEXP_CALL - CallNode call; + struct { + NodeType node_type; + int status; + struct _Node* body; + } base; + + StrNode str; + CClassNode cclass; + QuantNode quant; + EnclosureNode enclosure; + BackRefNode backref; + AnchorNode anchor; + ConsAltNode cons; + CtypeNode ctype; +#ifdef USE_CALL + CallNode call; #endif + GimmickNode gimmick; } u; } Node; #define NULL_NODE ((Node* )0) -#define SCANENV_MEMNODES_SIZE 8 -#define SCANENV_MEM_NODES(senv) \ - (IS_NOT_NULL((senv)->mem_nodes_dynamic) ? \ - (senv)->mem_nodes_dynamic : (senv)->mem_nodes_static) +#define SCANENV_MEMENV_SIZE 8 +#define SCANENV_MEMENV(senv) \ + (IS_NOT_NULL((senv)->mem_env_dynamic) ? \ + (senv)->mem_env_dynamic : (senv)->mem_env_static) + +typedef struct { + Node* node; +#if 0 + int in; + int recursion; +#endif +} MemEnv; + +typedef struct { + enum SaveType type; +} SaveItem; typedef struct { - OnigOptionType option; + OnigOptionType options; OnigCaseFoldType case_fold_flag; OnigEncoding enc; OnigSyntaxType* syntax; - BitStatusType capture_history; - BitStatusType bt_mem_start; - BitStatusType bt_mem_end; - BitStatusType backrefed_mem; + MemStatusType capture_history; + MemStatusType bt_mem_start; + MemStatusType bt_mem_end; + MemStatusType backrefed_mem; UChar* pattern; UChar* pattern_end; UChar* error; UChar* error_end; regex_t* reg; /* for reg->names only */ int num_call; -#ifdef USE_SUBEXP_CALL +#ifdef USE_CALL UnsetAddrList* unset_addr_list; + int has_call_zero; #endif int num_mem; -#ifdef USE_NAMED_GROUP int num_named; -#endif int mem_alloc; - Node* mem_nodes_static[SCANENV_MEMNODES_SIZE]; - Node** mem_nodes_dynamic; -#ifdef USE_COMBINATION_EXPLOSION_CHECK - int num_comb_exp_check; - int comb_exp_max_regnum; - int curr_max_regnum; - int has_recursion; -#endif + MemEnv mem_env_static[SCANENV_MEMENV_SIZE]; + MemEnv* mem_env_dynamic; + unsigned int parse_depth; + + int keep_num; + int save_num; + int save_alloc_num; + SaveItem* saves; } ScanEnv; @@ -315,13 +419,11 @@ typedef struct { #define IS_SYNTAX_OP2(syn, opm) (((syn)->op2 & (opm)) != 0) #define IS_SYNTAX_BV(syn, bvm) (((syn)->behavior & (bvm)) != 0) -#ifdef USE_NAMED_GROUP typedef struct { int new_val; } GroupNumRemap; extern int onig_renumber_name_table P_((regex_t* reg, GroupNumRemap* map)); -#endif 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)); @@ -332,22 +434,25 @@ extern void onig_node_conv_to_str_node P_((Node* node, int raw)); 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 void onig_node_free P_((Node* node)); -extern Node* onig_node_new_enclose P_((int type)); -extern Node* onig_node_new_anchor P_((int type)); +extern Node* onig_node_new_enclosure P_((int 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_list_add P_((Node* list, Node* x)); extern Node* onig_node_new_alt P_((Node* left, Node* right)); extern void onig_node_str_clear P_((Node* node)); -extern int onig_free_node_list P_((void)); extern int onig_names_free P_((regex_t* reg)); -extern int onig_parse_make_tree P_((Node** root, const UChar* pattern, const UChar* end, regex_t* reg, ScanEnv* env)); +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)); +extern int onig_is_code_in_cc P_((OnigEncoding enc, OnigCodePoint code, CClassNode* cc)); +extern OnigLen onig_get_tiny_min_len(Node* node, unsigned int inhibit_node_types, int* invalid_node); + +#ifdef USE_CALLOUT +extern int onig_global_callout_names_free(void); +#endif #ifdef ONIG_DEBUG -#ifdef USE_NAMED_GROUP extern int onig_print_names(FILE*, regex_t*); #endif -#endif #endif /* REGPARSE_H */ diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regposerr.c b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regposerr.c index fb1b9286a2..a396df2acf 100644 --- a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regposerr.c +++ b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regposerr.c @@ -2,11 +2,9 @@ regposerr.c - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2002-2007 K.Kosako + * Copyright (c) 2002-2018 K.Kosako * All rights reserved. * - * (C) Copyright 2015 Hewlett Packard Enterprise Development LP
- * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: @@ -29,7 +27,14 @@ * SUCH DAMAGE. */ -/*#include "config.h"*/ +/* Can't include regint.h etc.. for conflict of regex_t. + Define ONIGURUMA_EXPORT here for onigposix.h. + */ +#ifndef ONIGURUMA_EXPORT +#define ONIGURUMA_EXPORT +#endif + +//#include "config.h" #include "onigposix.h" #if 0 @@ -46,6 +51,14 @@ # define ARG_UNUSED #endif +#if defined(_WIN32) && !defined(__GNUC__) +#define xsnprintf sprintf_s +#define xstrncpy(dest,src,size) strncpy_s(dest,size,src,_TRUNCATE) +#else +#define xsnprintf snprintf +#define xstrncpy strncpy +#endif + static char* ESTRING[] = { NULL, "failed to match", /* REG_NOMATCH */ @@ -65,8 +78,7 @@ static char* ESTRING[] = { /* Extended errors */ "internal error", /* REG_EONIG_INTERNAL */ "invalid wide char value", /* REG_EONIG_BADWC */ - "invalid argument", /* REG_EONIG_BADARG */ - "multi-thread error" /* REG_EONIG_THREAD */ + "invalid argument" /* REG_EONIG_BADARG */ }; //#include diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regposix.c b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regposix.c index 299b88c6cc..54d456424d 100644 --- a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regposix.c +++ b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regposix.c @@ -2,11 +2,9 @@ regposix.c - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2002-2008 K.Kosako + * Copyright (c) 2002-2018 K.Kosako * All rights reserved. * - * (C) Copyright 2015 Hewlett Packard Enterprise Development LP
- * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: @@ -42,7 +40,7 @@ if (ONIGENC_MBC_MINLEN(enc) == 1) { \ UChar* tmps = (UChar* )(s); \ while (*tmps != 0) tmps++; \ - len = (int)(tmps - (UChar* )(s)); \ + len = (int )(tmps - (UChar* )(s));\ } \ else { \ len = onigenc_str_bytelen_null(enc, (UChar* )s); \ @@ -60,8 +58,10 @@ onig2posix_error_code(int code) static const O2PERR o2p[] = { { ONIG_MISMATCH, REG_NOMATCH }, { ONIG_NO_SUPPORT_CONFIG, REG_EONIG_INTERNAL }, + { ONIG_ABORT, REG_EONIG_INTERNAL }, { ONIGERR_MEMORY, REG_ESPACE }, { ONIGERR_MATCH_STACK_LIMIT_OVER, REG_EONIG_INTERNAL }, + { ONIGERR_RETRY_LIMIT_IN_MATCH_OVER, REG_EONIG_INTERNAL }, { ONIGERR_TYPE_BUG, REG_EONIG_INTERNAL }, { ONIGERR_PARSER_BUG, REG_EONIG_INTERNAL }, { ONIGERR_STACK_BUG, REG_EONIG_INTERNAL }, @@ -69,6 +69,7 @@ onig2posix_error_code(int code) { ONIGERR_UNEXPECTED_BYTECODE, REG_EONIG_INTERNAL }, { ONIGERR_DEFAULT_ENCODING_IS_NOT_SETTED, REG_EONIG_BADARG }, { ONIGERR_SPECIFIED_ENCODING_CANT_CONVERT_TO_WIDE_CHAR, REG_EONIG_BADARG }, + { ONIGERR_FAIL_TO_INITIALIZE, REG_EONIG_INTERNAL }, { ONIGERR_INVALID_ARGUMENT, REG_EONIG_BADARG }, { ONIGERR_END_PATTERN_AT_LEFT_BRACE, REG_EBRACE }, { ONIGERR_END_PATTERN_AT_LEFT_BRACKET, REG_EBRACK }, @@ -115,9 +116,17 @@ onig2posix_error_code(int code) { ONIGERR_NEVER_ENDING_RECURSION, REG_BADPAT }, { ONIGERR_GROUP_NUMBER_OVER_FOR_CAPTURE_HISTORY, REG_BADPAT }, { ONIGERR_INVALID_CHAR_PROPERTY_NAME, REG_BADPAT }, + { ONIGERR_INVALID_IF_ELSE_SYNTAX, REG_BADPAT }, + { ONIGERR_INVALID_ABSENT_GROUP_PATTERN, REG_BADPAT }, + { ONIGERR_INVALID_ABSENT_GROUP_GENERATOR_PATTERN, REG_BADPAT }, + { ONIGERR_INVALID_CALLOUT_PATTERN, REG_BADPAT }, + { ONIGERR_INVALID_CALLOUT_NAME, REG_BADPAT }, + { ONIGERR_UNDEFINED_CALLOUT_NAME, REG_BADPAT }, + { ONIGERR_INVALID_CALLOUT_BODY, REG_BADPAT }, + { ONIGERR_INVALID_CALLOUT_TAG_NAME, REG_BADPAT }, + { ONIGERR_INVALID_CALLOUT_ARG, REG_BADPAT }, { ONIGERR_NOT_SUPPORTED_ENCODING_COMBINATION, REG_EONIG_BADARG }, - { ONIGERR_OVER_THREAD_PASS_LIMIT_COUNT, REG_EONIG_THREAD } - + { ONIGERR_LIBRARY_IS_NOT_INITIALIZED, REG_EONIG_INTERNAL } }; int i; @@ -241,11 +250,10 @@ reg_set_encoding(int mb_code) case REG_POSIX_ENCODING_UTF16_LE: enc = ONIG_ENCODING_UTF16_LE; break; - - default: - return; } + onig_initialize(&enc, 1); + onigenc_set_default_encoding(enc); } diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regsyntax.c b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regsyntax.c index dc4d68183b..95a4434e64 100644 --- a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regsyntax.c +++ b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regsyntax.c @@ -2,7 +2,7 @@ regsyntax.c - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2002-2006 K.Kosako + * Copyright (c) 2002-2018 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -168,13 +168,22 @@ OnigSyntaxType OnigSyntaxJava = { OnigSyntaxType OnigSyntaxPerl = { (( SYN_GNU_REGEX_OP | ONIG_SYN_OP_QMARK_NON_GREEDY | ONIG_SYN_OP_ESC_OCTAL3 | ONIG_SYN_OP_ESC_X_HEX2 | - ONIG_SYN_OP_ESC_X_BRACE_HEX8 | ONIG_SYN_OP_ESC_CONTROL_CHARS | + ONIG_SYN_OP_ESC_X_BRACE_HEX8 | ONIG_SYN_OP_ESC_O_BRACE_OCTAL | + ONIG_SYN_OP_ESC_CONTROL_CHARS | ONIG_SYN_OP_ESC_C_CONTROL ) & ~ONIG_SYN_OP_ESC_LTGT_WORD_BEGIN_END ) , ( ONIG_SYN_OP2_ESC_CAPITAL_Q_QUOTE | ONIG_SYN_OP2_QMARK_GROUP_EFFECT | ONIG_SYN_OP2_OPTION_PERL | + ONIG_SYN_OP2_QMARK_LPAREN_IF_ELSE | + ONIG_SYN_OP2_QMARK_TILDE_ABSENT_GROUP | + ONIG_SYN_OP2_QMARK_BRACE_CALLOUT_CONTENTS | + ONIG_SYN_OP2_ASTERISK_CALLOUT_NAME | + ONIG_SYN_OP2_ESC_X_Y_GRAPHEME_CLUSTER | ONIG_SYN_OP2_ESC_P_BRACE_CHAR_PROPERTY | - ONIG_SYN_OP2_ESC_P_BRACE_CIRCUMFLEX_NOT ) + ONIG_SYN_OP2_ESC_P_BRACE_CIRCUMFLEX_NOT | + 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 , ONIG_OPTION_SINGLELINE , @@ -192,16 +201,26 @@ OnigSyntaxType OnigSyntaxPerl = { OnigSyntaxType OnigSyntaxPerl_NG = { (( SYN_GNU_REGEX_OP | ONIG_SYN_OP_QMARK_NON_GREEDY | ONIG_SYN_OP_ESC_OCTAL3 | ONIG_SYN_OP_ESC_X_HEX2 | - ONIG_SYN_OP_ESC_X_BRACE_HEX8 | ONIG_SYN_OP_ESC_CONTROL_CHARS | + ONIG_SYN_OP_ESC_X_BRACE_HEX8 | ONIG_SYN_OP_ESC_O_BRACE_OCTAL | + ONIG_SYN_OP_ESC_CONTROL_CHARS | ONIG_SYN_OP_ESC_C_CONTROL ) & ~ONIG_SYN_OP_ESC_LTGT_WORD_BEGIN_END ) , ( ONIG_SYN_OP2_ESC_CAPITAL_Q_QUOTE | ONIG_SYN_OP2_QMARK_GROUP_EFFECT | ONIG_SYN_OP2_OPTION_PERL | + ONIG_SYN_OP2_QMARK_LPAREN_IF_ELSE | + ONIG_SYN_OP2_QMARK_TILDE_ABSENT_GROUP | + ONIG_SYN_OP2_QMARK_BRACE_CALLOUT_CONTENTS | + ONIG_SYN_OP2_ASTERISK_CALLOUT_NAME | + ONIG_SYN_OP2_ESC_X_Y_GRAPHEME_CLUSTER | ONIG_SYN_OP2_ESC_P_BRACE_CHAR_PROPERTY | ONIG_SYN_OP2_ESC_P_BRACE_CIRCUMFLEX_NOT | ONIG_SYN_OP2_QMARK_LT_NAMED_GROUP | ONIG_SYN_OP2_ESC_K_NAMED_BACKREF | - ONIG_SYN_OP2_ESC_G_SUBEXP_CALL ) + ONIG_SYN_OP2_ESC_G_SUBEXP_CALL | + ONIG_SYN_OP2_ESC_CAPITAL_K_KEEP | + 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 | ONIG_SYN_CAPTURE_ONLY_NAMED_GROUP | ONIG_SYN_ALLOW_MULTIPLEX_DEFINITION_NAME ) @@ -223,7 +242,7 @@ extern int onig_set_default_syntax(OnigSyntaxType* syntax) { if (IS_NULL(syntax)) - syntax = ONIG_SYNTAX_RUBY; + syntax = ONIG_SYNTAX_ONIGURUMA; OnigDefaultSyntax = syntax; return 0; diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regversion.c b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regversion.c index 2c81244303..5e6274f061 100644 --- a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regversion.c +++ b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regversion.c @@ -2,7 +2,7 @@ regversion.c - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2002-2008 K.Kosako + * Copyright (c) 2002-2018 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -27,8 +27,8 @@ * SUCH DAMAGE. */ -//#include "config.h" #include "oniguruma.h" +#include "regint.h" //#include extern const char* @@ -36,12 +36,10 @@ onig_version(void) { static char s[12]; - sprintf_s(s, - sizeof(s), - "%d.%d.%d", - ONIGURUMA_VERSION_MAJOR, - ONIGURUMA_VERSION_MINOR, - ONIGURUMA_VERSION_TEENY); + sprintf_s(s, sizeof(s), "%d.%d.%d", + ONIGURUMA_VERSION_MAJOR, + ONIGURUMA_VERSION_MINOR, + ONIGURUMA_VERSION_TEENY); return s; } @@ -50,11 +48,10 @@ onig_copyright(void) { static char s[58]; - sprintf_s(s, - sizeof(s), - "Oniguruma %d.%d.%d : Copyright (C) 2002-2008 K.Kosako", - ONIGURUMA_VERSION_MAJOR, - ONIGURUMA_VERSION_MINOR, - ONIGURUMA_VERSION_TEENY); + sprintf_s(s, sizeof(s), + "Oniguruma %d.%d.%d : Copyright (C) 2002-2018 K.Kosako", + ONIGURUMA_VERSION_MAJOR, + ONIGURUMA_VERSION_MINOR, + ONIGURUMA_VERSION_TEENY); return s; } diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/st.c b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/st.c index 8dcfdc3eb1..95fe4b0e06 100644 --- a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/st.c +++ b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/st.c @@ -109,17 +109,16 @@ new_size(size) #if 0 for (i=3; i<31; i++) { - if ((1< size) return 1< size) return 1< size) return primes[i]; + i < (int )(sizeof(primes)/sizeof(primes[0])); + i++, newsize <<= 1) { + if (newsize > size) return primes[i]; } /* Ran out of polynomials */ return -1; /* should raise exception */ @@ -131,11 +130,13 @@ static int collision = 0; static int init_st = 0; static void -stat_col() +stat_col(void) { - FILE *f = fopen("/tmp/col", "w"); - fprintf(f, "collision: %d\n", collision); - fclose(f); + FILE *f = fopen("/tmp/col", "w"); + if (f == 0) return ; + + (void) fprintf(f, "collision: %d\n", collision); + (void) fclose(f); } #endif @@ -144,77 +145,82 @@ st_init_table_with_size(type, size) struct st_hash_type *type; int size; { - st_table *tbl; + st_table *tbl; #ifdef HASH_LOG - if (init_st == 0) { - init_st = 1; - atexit(stat_col); - } + if (init_st == 0) { + init_st = 1; + atexit(stat_col); + } #endif - size = new_size(size); /* round up to prime number */ + size = new_size(size); /* round up to prime number */ - tbl = alloc(st_table); - CHECK_NULL_RETURN(tbl); - tbl->type = type; - tbl->num_entries = 0; - tbl->num_bins = size; - tbl->bins = (st_table_entry **)Calloc(size, sizeof(st_table_entry*)); + tbl = alloc(st_table); + if (tbl == 0) return 0; - return tbl; + tbl->type = type; + tbl->num_entries = 0; + tbl->num_bins = size; + tbl->bins = (st_table_entry **)Calloc(size, sizeof(st_table_entry*)); + if (tbl->bins == 0) { + free(tbl); + return 0; + } + + return tbl; } st_table* st_init_table(type) struct st_hash_type *type; { - return st_init_table_with_size(type, 0); + return st_init_table_with_size(type, 0); } st_table* st_init_numtable(void) { - return st_init_table(&type_numhash); + return st_init_table(&type_numhash); } st_table* st_init_numtable_with_size(size) int size; { - return st_init_table_with_size(&type_numhash, size); + return st_init_table_with_size(&type_numhash, size); } st_table* st_init_strtable(void) { - return st_init_table(&type_strhash); + return st_init_table(&type_strhash); } st_table* st_init_strtable_with_size(size) int size; { - return st_init_table_with_size(&type_strhash, size); + return st_init_table_with_size(&type_strhash, size); } void st_free_table(table) st_table *table; { - register st_table_entry *ptr, *next; - int i; + register st_table_entry *ptr, *next; + int i; - for(i = 0; i < table->num_bins; i++) { - ptr = table->bins[i]; - while (ptr != 0) { + for(i = 0; i < table->num_bins; i++) { + ptr = table->bins[i]; + while (ptr != 0) { next = ptr->next; free(ptr); ptr = next; - } } - free(table->bins); - free(table); + } + free(table->bins); + free(table); } #define PTR_NOT_EQUAL(table, ptr, hash_val, key) \ @@ -230,190 +236,186 @@ st_free_table(table) bin_pos = hash_val%(table)->num_bins;\ ptr = (table)->bins[bin_pos];\ if (PTR_NOT_EQUAL(table, ptr, hash_val, key)) {\ - COLLISION;\ - while (PTR_NOT_EQUAL(table, ptr->next, hash_val, key)) {\ - ptr = ptr->next;\ - }\ - ptr = ptr->next;\ + COLLISION;\ + while (PTR_NOT_EQUAL(table, ptr->next, hash_val, key)) {\ + ptr = ptr->next;\ + }\ + ptr = ptr->next;\ }\ } while (0) int st_lookup(table, key, value) - st_table *table; - register st_data_t key; - st_data_t *value; + st_table *table; + register st_data_t key; + st_data_t *value; { - unsigned int hash_val, bin_pos; - register st_table_entry *ptr; + unsigned int hash_val, bin_pos; + register st_table_entry *ptr; - hash_val = do_hash(key, table); - FIND_ENTRY(table, ptr, hash_val, bin_pos); + hash_val = do_hash(key, table); + FIND_ENTRY(table, ptr, hash_val, bin_pos); - if (ptr == 0) { - return 0; - } - else { - if (value != 0) *value = ptr->record; - return 1; - } + if (ptr == 0) { + return 0; + } + else { + if (value != 0) *value = ptr->record; + return 1; + } } -#define ADD_DIRECT(table, key, value, hash_val, bin_pos)\ +#define ADD_DIRECT(table, key, value, hash_val, bin_pos, ret) \ do {\ - st_table_entry *entry;\ - if (table->num_entries/(table->num_bins) > ST_DEFAULT_MAX_DENSITY) {\ - rehash(table);\ - bin_pos = hash_val % table->num_bins;\ - }\ - \ - entry = alloc(st_table_entry);\ - if (entry == NULL) {\ - break;\ - }\ - \ - entry->hash = hash_val;\ - entry->key = key;\ - entry->record = value;\ - entry->next = table->bins[bin_pos];\ - table->bins[bin_pos] = entry;\ - table->num_entries++;\ + st_table_entry *entry;\ + if (table->num_entries/(table->num_bins) > ST_DEFAULT_MAX_DENSITY) {\ + rehash(table);\ + bin_pos = hash_val % table->num_bins;\ + }\ + entry = alloc(st_table_entry);\ + if (IS_NULL(entry)) return ret;\ + entry->hash = hash_val;\ + entry->key = key;\ + entry->record = value;\ + entry->next = table->bins[bin_pos];\ + table->bins[bin_pos] = entry;\ + table->num_entries++;\ } while (0) int st_insert(table, key, value) - register st_table *table; - register st_data_t key; - st_data_t value; + register st_table *table; + register st_data_t key; + st_data_t value; { - unsigned int hash_val, bin_pos; - register st_table_entry *ptr; + unsigned int hash_val, bin_pos; + register st_table_entry *ptr; - hash_val = do_hash(key, table); - FIND_ENTRY(table, ptr, hash_val, bin_pos); + hash_val = do_hash(key, table); + FIND_ENTRY(table, ptr, hash_val, bin_pos); - if (ptr == 0) { - ADD_DIRECT(table, key, value, hash_val, bin_pos); - return 0; - } - else { - ptr->record = value; - return 1; - } + if (ptr == 0) { + ADD_DIRECT(table, key, value, hash_val, bin_pos, ONIGERR_MEMORY); + return 0; + } + else { + ptr->record = value; + return 1; + } } void st_add_direct(table, key, value) - st_table *table; - st_data_t key; - st_data_t value; + st_table *table; + st_data_t key; + st_data_t value; { - unsigned int hash_val, bin_pos; + unsigned int hash_val, bin_pos; - hash_val = do_hash(key, table); - bin_pos = hash_val % table->num_bins; - ADD_DIRECT(table, key, value, hash_val, bin_pos); + hash_val = do_hash(key, table); + bin_pos = hash_val % table->num_bins; + ADD_DIRECT(table, key, value, hash_val, bin_pos,); } static void rehash(table) - register st_table *table; + register st_table *table; { - register st_table_entry *ptr, *next, **new_bins; - int i, old_num_bins = table->num_bins, new_num_bins; - unsigned int hash_val; - - new_num_bins = new_size(old_num_bins+1); - new_bins = (st_table_entry**)Calloc(new_num_bins, sizeof(st_table_entry*)); - if (new_bins == NULL) { - return; - } - - for(i = 0; i < old_num_bins; i++) { - ptr = table->bins[i]; - while (ptr != 0) { + register st_table_entry *ptr, *next, **new_bins; + int i, old_num_bins = table->num_bins, new_num_bins; + unsigned int hash_val; + + new_num_bins = new_size(old_num_bins+1); + new_bins = (st_table_entry**)Calloc(new_num_bins, sizeof(st_table_entry*)); + if (new_bins == 0) { + return ; + } + + for(i = 0; i < old_num_bins; i++) { + ptr = table->bins[i]; + while (ptr != 0) { next = ptr->next; hash_val = ptr->hash % new_num_bins; ptr->next = new_bins[hash_val]; new_bins[hash_val] = ptr; ptr = next; - } } - free(table->bins); - table->num_bins = new_num_bins; - table->bins = new_bins; + } + free(table->bins); + table->num_bins = new_num_bins; + table->bins = new_bins; } st_table* st_copy(old_table) - st_table *old_table; + st_table *old_table; { - st_table *new_table; - st_table_entry *ptr, *entry; - int i, num_bins = old_table->num_bins; + st_table *new_table; + st_table_entry *ptr, *entry; + int i, num_bins = old_table->num_bins; - new_table = alloc(st_table); - if (new_table == 0) { - return 0; - } + new_table = alloc(st_table); + if (new_table == 0) { + return 0; + } - *new_table = *old_table; - new_table->bins = (st_table_entry**) - Calloc((unsigned)num_bins, sizeof(st_table_entry*)); + *new_table = *old_table; + new_table->bins = (st_table_entry**) + Calloc((unsigned)num_bins, sizeof(st_table_entry*)); - if (new_table->bins == 0) { - free(new_table); - return 0; - } + if (new_table->bins == 0) { + free(new_table); + return 0; + } - for(i = 0; i < num_bins; i++) { - new_table->bins[i] = 0; - ptr = old_table->bins[i]; - while (ptr != 0) { + for(i = 0; i < num_bins; i++) { + new_table->bins[i] = 0; + ptr = old_table->bins[i]; + while (ptr != 0) { entry = alloc(st_table_entry); if (entry == 0) { - free(new_table->bins); - free(new_table); - return 0; + free(new_table->bins); + free(new_table); + return 0; } *entry = *ptr; entry->next = new_table->bins[i]; new_table->bins[i] = entry; ptr = ptr->next; - } } - return new_table; + } + return new_table; } int st_delete(table, key, value) - register st_table *table; - register st_data_t *key; - st_data_t *value; + register st_table *table; + register st_data_t *key; + st_data_t *value; { - unsigned int hash_val; - st_table_entry *tmp; - register st_table_entry *ptr; - - hash_val = do_hash_bin(*key, table); - ptr = table->bins[hash_val]; - - if (ptr == 0) { - if (value != 0) *value = 0; - return 0; - } + unsigned int hash_val; + st_table_entry *tmp; + register st_table_entry *ptr; - if (EQUAL(table, *key, ptr->key)) { - table->bins[hash_val] = ptr->next; - table->num_entries--; - if (value != 0) *value = ptr->record; - *key = ptr->key; - free(ptr); - return 1; - } + hash_val = do_hash_bin(*key, table); + ptr = table->bins[hash_val]; - for(; ptr->next != 0; ptr = ptr->next) { - if (EQUAL(table, ptr->next->key, *key)) { + if (ptr == 0) { + if (value != 0) *value = 0; + return 0; + } + + if (EQUAL(table, *key, ptr->key)) { + table->bins[hash_val] = ptr->next; + table->num_entries--; + if (value != 0) *value = ptr->record; + *key = ptr->key; + free(ptr); + return 1; + } + + for(; ptr->next != 0; ptr = ptr->next) { + if (EQUAL(table, ptr->next->key, *key)) { tmp = ptr->next; ptr->next = ptr->next->next; table->num_entries--; @@ -421,41 +423,41 @@ st_delete(table, key, value) *key = tmp->key; free(tmp); return 1; - } } + } - return 0; + return 0; } int st_delete_safe(table, key, value, never) - register st_table *table; - register st_data_t *key; - st_data_t *value; - st_data_t never; + register st_table *table; + register st_data_t *key; + st_data_t *value; + st_data_t never; { - unsigned int hash_val; - register st_table_entry *ptr; + unsigned int hash_val; + register st_table_entry *ptr; - hash_val = do_hash_bin(*key, table); - ptr = table->bins[hash_val]; + hash_val = do_hash_bin(*key, table); + ptr = table->bins[hash_val]; - if (ptr == 0) { - if (value != 0) *value = 0; - return 0; - } + if (ptr == 0) { + if (value != 0) *value = 0; + return 0; + } - for(; ptr != 0; ptr = ptr->next) { - if ((ptr->key != never) && EQUAL(table, ptr->key, *key)) { + for(; ptr != 0; ptr = ptr->next) { + if ((ptr->key != never) && EQUAL(table, ptr->key, *key)) { table->num_entries--; *key = ptr->key; if (value != 0) *value = ptr->record; ptr->key = ptr->record = never; return 1; - } } + } - return 0; + return 0; } static int @@ -473,114 +475,114 @@ delete_never(key, value, never) void st_cleanup_safe(table, never) - st_table *table; - st_data_t never; + st_table *table; + st_data_t never; { - int num_entries = table->num_entries; + int num_entries = table->num_entries; - st_foreach(table, delete_never, never); - table->num_entries = num_entries; + st_foreach(table, delete_never, never); + table->num_entries = num_entries; } int st_foreach(table, func, arg) - st_table *table; - int (*func)(); - st_data_t arg; + st_table *table; + int (*func)(); + st_data_t arg; { - st_table_entry *ptr, *last, *tmp; - enum st_retval retval; - int i; + st_table_entry *ptr, *last, *tmp; + enum st_retval retval; + int i; - for(i = 0; i < table->num_bins; i++) { - last = 0; - for(ptr = table->bins[i]; ptr != 0;) { + for(i = 0; i < table->num_bins; i++) { + last = 0; + for(ptr = table->bins[i]; ptr != 0;) { retval = (*func)(ptr->key, ptr->record, arg); switch (retval) { case ST_CHECK: /* check if hash is modified during iteration */ - tmp = 0; - if (i < table->num_bins) { - for (tmp = table->bins[i]; tmp; tmp=tmp->next) { - if (tmp == ptr) break; - } - } - if (!tmp) { - /* call func with error notice */ - return 1; - } - /* fall through */ + tmp = 0; + if (i < table->num_bins) { + for (tmp = table->bins[i]; tmp; tmp=tmp->next) { + if (tmp == ptr) break; + } + } + if (!tmp) { + /* call func with error notice */ + return 1; + } + /* fall through */ case ST_CONTINUE: - last = ptr; - ptr = ptr->next; - break; + last = ptr; + ptr = ptr->next; + break; case ST_STOP: - return 0; + return 0; case ST_DELETE: - tmp = ptr; - if (last == 0) { - table->bins[i] = ptr->next; - } - else { - last->next = ptr->next; - } - ptr = ptr->next; - free(tmp); - table->num_entries--; + tmp = ptr; + if (last == 0) { + table->bins[i] = ptr->next; + } + else { + last->next = ptr->next; + } + ptr = ptr->next; + free(tmp); + table->num_entries--; } - } } - return 0; + } + return 0; } static int strhash(string) - register const char *string; + register const char *string; { - register int c; + register int c; #ifdef HASH_ELFHASH - register unsigned int h = 0, g; + register unsigned int h = 0, g; - while ((c = *string++) != '\0') { - h = ( h << 4 ) + c; - if ( g = h & 0xF0000000 ) + while ((c = *string++) != '\0') { + h = ( h << 4 ) + c; + if ( g = h & 0xF0000000 ) h ^= g >> 24; - h &= ~g; - } - return h; + h &= ~g; + } + return h; #elif HASH_PERL - register int val = 0; + register int val = 0; - while ((c = *string++) != '\0') { - val += c; - val += (val << 10); - val ^= (val >> 6); - } - val += (val << 3); - val ^= (val >> 11); + while ((c = *string++) != '\0') { + val += c; + val += (val << 10); + val ^= (val >> 6); + } + val += (val << 3); + val ^= (val >> 11); - return val + (val << 15); + return val + (val << 15); #else - register int val = 0; + register int val = 0; - while ((c = *string++) != '\0') { - val = val*997 + c; - } + while ((c = *string++) != '\0') { + val = val*997 + c; + } - return val + (val>>5); + return val + (val>>5); #endif } static int numcmp(x, y) - long x, y; + long x, y; { - return x != y; + return x != y; } static int numhash(n) - long n; + long n; { - return n; + return n; } diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/st.h b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/st.h index a620002449..c42f379058 100644 --- a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/st.h +++ b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/st.h @@ -10,9 +10,10 @@ # include typedef ULONG_PTR st_data_t; #else -typedef unsigned long st_data_t; +// typedef unsigned long st_data_t; #endif #define ST_DATA_T_DEFINED +typedef UINTN st_data_t; typedef struct st_table st_table; diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode.c b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode.c new file mode 100644 index 0000000000..15875001cf --- /dev/null +++ b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode.c @@ -0,0 +1,873 @@ +/********************************************************************** + unicode.c - Oniguruma (regular expression library) +**********************************************************************/ +/*- + * Copyright (c) 2002-2018 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 "regint.h" + +struct PoolPropertyNameCtype { + short int name; + short int ctype; +}; + +#define ONIGENC_IS_UNICODE_ISO_8859_1_CTYPE(code,ctype) \ + ((EncUNICODE_ISO_8859_1_CtypeTable[code] & CTYPE_TO_BIT(ctype)) != 0) + +static const unsigned short EncUNICODE_ISO_8859_1_CtypeTable[256] = { + 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, + 0x4008, 0x428c, 0x4289, 0x4288, 0x4288, 0x4288, 0x4008, 0x4008, + 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, + 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, + 0x4284, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, + 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, + 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, + 0x78b0, 0x78b0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, + 0x41a0, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x74a2, + 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, + 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, + 0x74a2, 0x74a2, 0x74a2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x51a0, + 0x41a0, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x70e2, + 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, + 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, + 0x70e2, 0x70e2, 0x70e2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x4008, + 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0288, 0x0008, 0x0008, + 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, + 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, + 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, + 0x0284, 0x01a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, + 0x00a0, 0x00a0, 0x30e2, 0x01a0, 0x00a0, 0x00a8, 0x00a0, 0x00a0, + 0x00a0, 0x00a0, 0x10a0, 0x10a0, 0x00a0, 0x30e2, 0x00a0, 0x01a0, + 0x00a0, 0x10a0, 0x30e2, 0x01a0, 0x10a0, 0x10a0, 0x10a0, 0x01a0, + 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, + 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, + 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x00a0, + 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x30e2, + 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, + 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, + 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x00a0, + 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2 +}; + +#include "st.h" + +#include "unicode_fold_data.c" + +extern int +onigenc_unicode_mbc_case_fold(OnigEncoding enc, + OnigCaseFoldType flag ARG_UNUSED, const UChar** pp, const UChar* end, + UChar* fold) +{ + const struct ByUnfoldKey* buk; + + OnigCodePoint code; + int i, len, rlen; + const UChar *p = *pp; + + code = ONIGENC_MBC_TO_CODE(enc, p, end); + len = enclen(enc, p); + *pp += len; + +#ifdef USE_UNICODE_CASE_FOLD_TURKISH_AZERI + if ((flag & ONIGENC_CASE_FOLD_TURKISH_AZERI) != 0) { + if (code == 0x0130) { + return ONIGENC_CODE_TO_MBC(enc, 0x0069, fold); + } +#if 0 + if (code == 0x0049) { + return ONIGENC_CODE_TO_MBC(enc, 0x0131, fold); + } +#endif + } +#endif + + buk = onigenc_unicode_unfold_key(code); + if (buk != 0) { + if (buk->fold_len == 1) { + return ONIGENC_CODE_TO_MBC(enc, *FOLDS1_FOLD(buk->index), fold); + } + else { + OnigCodePoint* addr; + + FOLDS_FOLD_ADDR_BUK(buk, addr); + rlen = 0; + for (i = 0; i < buk->fold_len; i++) { + OnigCodePoint c = addr[i]; + len = ONIGENC_CODE_TO_MBC(enc, c, fold); + fold += len; + rlen += len; + } + return rlen; + } + } + + for (i = 0; i < len; i++) { + *fold++ = *p++; + } + return len; +} + +static int +apply_case_fold1(int from, int to, OnigApplyAllCaseFoldFunc f, void* arg) +{ + int i, j, k, n, r; + + for (i = from; i < to; ) { + OnigCodePoint fold = *FOLDS1_FOLD(i); + n = FOLDS1_UNFOLDS_NUM(i); + for (j = 0; j < n; j++) { + OnigCodePoint unfold = FOLDS1_UNFOLDS(i)[j]; + + r = (*f)(fold, &unfold, 1, arg); + if (r != 0) return r; + r = (*f)(unfold, &fold, 1, arg); + if (r != 0) return r; + + for (k = 0; k < j; k++) { + OnigCodePoint unfold2 = FOLDS1_UNFOLDS(i)[k]; + r = (*f)(unfold, &unfold2, 1, arg); + if (r != 0) return r; + r = (*f)(unfold2, &unfold, 1, arg); + if (r != 0) return r; + } + } + + i = FOLDS1_NEXT_INDEX(i); + } + + return 0; +} + +static int +apply_case_fold2(int from, int to, OnigApplyAllCaseFoldFunc f, void* arg) +{ + int i, j, k, n, r; + + for (i = from; i < to; ) { + OnigCodePoint* fold = FOLDS2_FOLD(i); + n = FOLDS2_UNFOLDS_NUM(i); + for (j = 0; j < n; j++) { + OnigCodePoint unfold = FOLDS2_UNFOLDS(i)[j]; + + r = (*f)(unfold, fold, 2, arg); + if (r != 0) return r; + + for (k = 0; k < j; k++) { + OnigCodePoint unfold2 = FOLDS2_UNFOLDS(i)[k]; + r = (*f)(unfold, &unfold2, 1, arg); + if (r != 0) return r; + r = (*f)(unfold2, &unfold, 1, arg); + if (r != 0) return r; + } + } + + i = FOLDS2_NEXT_INDEX(i); + } + + return 0; +} + +static int +apply_case_fold3(int from, int to, OnigApplyAllCaseFoldFunc f, void* arg) +{ + int i, j, k, n, r; + + for (i = from; i < to; ) { + OnigCodePoint* fold = FOLDS3_FOLD(i); + n = FOLDS3_UNFOLDS_NUM(i); + for (j = 0; j < n; j++) { + OnigCodePoint unfold = FOLDS3_UNFOLDS(i)[j]; + + r = (*f)(unfold, fold, 3, arg); + if (r != 0) return r; + + for (k = 0; k < j; k++) { + OnigCodePoint unfold2 = FOLDS3_UNFOLDS(i)[k]; + r = (*f)(unfold, &unfold2, 1, arg); + if (r != 0) return r; + r = (*f)(unfold2, &unfold, 1, arg); + if (r != 0) return r; + } + } + + i = FOLDS3_NEXT_INDEX(i); + } + + return 0; +} + +extern int +onigenc_unicode_apply_all_case_fold(OnigCaseFoldType flag, + OnigApplyAllCaseFoldFunc f, void* arg) +{ + int r; + + r = apply_case_fold1(0, FOLDS1_NORMAL_END_INDEX, f, arg); + if (r != 0) return r; + +#ifdef USE_UNICODE_CASE_FOLD_TURKISH_AZERI + if ((flag & ONIGENC_CASE_FOLD_TURKISH_AZERI) != 0) { + code = 0x0131; + r = (*f)(0x0049, &code, 1, arg); + if (r != 0) return r; + code = 0x0049; + r = (*f)(0x0131, &code, 1, arg); + if (r != 0) return r; + + code = 0x0130; + r = (*f)(0x0069, &code, 1, arg); + if (r != 0) return r; + code = 0x0069; + r = (*f)(0x0130, &code, 1, arg); + if (r != 0) return r; + } + else { +#endif + r = apply_case_fold1(FOLDS1_NORMAL_END_INDEX, FOLDS1_END_INDEX, f, arg); + if (r != 0) return r; +#ifdef USE_UNICODE_CASE_FOLD_TURKISH_AZERI + } +#endif + + if ((flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) == 0) + return 0; + + r = apply_case_fold2(0, FOLDS2_NORMAL_END_INDEX, f, arg); + if (r != 0) return r; + +#ifdef USE_UNICODE_CASE_FOLD_TURKISH_AZERI + if ((flag & ONIGENC_CASE_FOLD_TURKISH_AZERI) == 0) { +#endif + r = apply_case_fold2(FOLDS2_NORMAL_END_INDEX, FOLDS2_END_INDEX, f, arg); + if (r != 0) return r; +#ifdef USE_UNICODE_CASE_FOLD_TURKISH_AZERI + } +#endif + + r = apply_case_fold3(0, FOLDS3_NORMAL_END_INDEX, f, arg); + if (r != 0) return r; + + return 0; +} + +extern int +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; + + n = 0; + + code = ONIGENC_MBC_TO_CODE(enc, p, end); + len = enclen(enc, p); + +#ifdef USE_UNICODE_CASE_FOLD_TURKISH_AZERI + if ((flag & ONIGENC_CASE_FOLD_TURKISH_AZERI) != 0) { + if (code == 0x0049) { + items[0].byte_len = len; + items[0].code_len = 1; + items[0].code[0] = 0x0131; + return 1; + } + else if (code == 0x0130) { + items[0].byte_len = len; + items[0].code_len = 1; + items[0].code[0] = 0x0069; + return 1; + } + else if (code == 0x0131) { + items[0].byte_len = len; + items[0].code_len = 1; + items[0].code[0] = 0x0049; + return 1; + } + else if (code == 0x0069) { + items[0].byte_len = len; + items[0].code_len = 1; + items[0].code[0] = 0x0130; + return 1; + } + } +#endif + + buk = onigenc_unicode_unfold_key(code); + if (buk != 0) { + if (buk->fold_len == 1) { + int un; + items[0].byte_len = len; + items[0].code_len = 1; + items[0].code[0] = *FOLDS1_FOLD(buk->index); + n++; + + un = FOLDS1_UNFOLDS_NUM(buk->index); + for (i = 0; i < un; i++) { + OnigCodePoint unfold = FOLDS1_UNFOLDS(buk->index)[i]; + if (unfold != code) { + items[n].byte_len = len; + 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); + for (i = 0; i < m; i++) { + OnigCodePoint unfold = FOLDS2_UNFOLDS(buk->index)[i]; + if (unfold == code) continue; + + items[n].byte_len = len; + items[n].code_len = 1; + items[n].code[0] = unfold; + n++; + } + + for (fn = 0; fn < 2; fn++) { + int index; + cs[fn][0] = FOLDS2_FOLD(buk->index)[fn]; + index = onigenc_unicode_fold1_key(&cs[fn][0]); + if (index >= 0) { + int m = FOLDS1_UNFOLDS_NUM(index); + for (i = 0; i < m; i++) { + cs[fn][i+1] = FOLDS1_UNFOLDS(index)[i]; + } + ncs[fn] = m + 1; + } + else + ncs[fn] = 1; + } + + for (i = 0; i < ncs[0]; i++) { + for (j = 0; j < ncs[1]; j++) { + items[n].byte_len = len; + items[n].code_len = 2; + items[n].code[0] = cs[0][i]; + items[n].code[1] = cs[1][j]; + n++; + } + } + } + else { /* fold_len == 3 */ + m = FOLDS3_UNFOLDS_NUM(buk->index); + for (i = 0; i < m; i++) { + OnigCodePoint unfold = FOLDS3_UNFOLDS(buk->index)[i]; + if (unfold == code) continue; + + items[n].byte_len = len; + items[n].code_len = 1; + items[n].code[0] = unfold; + n++; + } + + for (fn = 0; fn < 3; fn++) { + int index; + cs[fn][0] = FOLDS3_FOLD(buk->index)[fn]; + index = onigenc_unicode_fold1_key(&cs[fn][0]); + if (index >= 0) { + int m = FOLDS1_UNFOLDS_NUM(index); + for (i = 0; i < m; i++) { + cs[fn][i+1] = FOLDS1_UNFOLDS(index)[i]; + } + ncs[fn] = m + 1; + } + else + ncs[fn] = 1; + } + + 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].code_len = 3; + items[n].code[0] = cs[0][i]; + items[n].code[1] = cs[1][j]; + items[n].code[2] = cs[2][k]; + n++; + } + } + } + } + + /* multi char folded code is not head of another folded multi char */ + return n; + } + } + else { + int index = onigenc_unicode_fold1_key(&code); + if (index >= 0) { + int m = FOLDS1_UNFOLDS_NUM(index); + for (i = 0; i < m; i++) { + items[n].byte_len = len; + items[n].code_len = 1; + items[n].code[0] = FOLDS1_UNFOLDS(index)[i]; + n++; + } + } + } + + 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; +} + +#ifdef USE_UNICODE_PROPERTIES +#include "unicode_property_data.c" +#else +#include "unicode_property_data_posix.c" +#endif + + +#ifdef USE_UNICODE_EXTENDED_GRAPHEME_CLUSTER + +enum EGCB_BREAK_TYPE { + EGCB_NOT_BREAK = 0, + EGCB_BREAK = 1, + EGCB_BREAK_UNDEF_GB11 = 2, + EGCB_BREAK_UNDEF_RI_RI = 3 +}; + +enum EGCB_TYPE { + EGCB_Other = 0, + EGCB_CR = 1, + EGCB_LF = 2, + EGCB_Control = 3, + EGCB_Extend = 4, + EGCB_Prepend = 5, + EGCB_Regional_Indicator = 6, + EGCB_SpacingMark = 7, + EGCB_ZWJ = 8, +#if 0 + /* obsoleted */ + EGCB_E_Base = 9, + EGCB_E_Base_GAZ = 10, + EGCB_E_Modifier = 11, + EGCB_Glue_After_Zwj = 12, +#endif + EGCB_L = 13, + EGCB_LV = 14, + EGCB_LVT = 15, + EGCB_T = 16, + EGCB_V = 17 +}; + +typedef struct { + OnigCodePoint start; + OnigCodePoint end; + enum EGCB_TYPE type; +} EGCB_RANGE_TYPE; + +#include "unicode_egcb_data.c" + +static enum EGCB_TYPE +egcb_get_type(OnigCodePoint code) +{ + OnigCodePoint low, high, x; + enum EGCB_TYPE type; + + for (low = 0, high = (OnigCodePoint )EGCB_RANGE_NUM; low < high; ) { + x = (low + high) >> 1; + if (code > EGCB_RANGES[x].end) + low = x + 1; + else + high = x; + } + + type = (low < (OnigCodePoint )EGCB_RANGE_NUM && + code >= EGCB_RANGES[low].start) ? + EGCB_RANGES[low].type : EGCB_Other; + + return type; +} + +#define IS_CONTROL_CR_LF(code) ((code) <= EGCB_Control && (code) >= EGCB_CR) +#define IS_HANGUL(code) ((code) >= EGCB_L) + +/* GB1 and GB2 are outside of this function. */ +static enum EGCB_BREAK_TYPE +unicode_egcb_is_break_2code(OnigCodePoint from_code, OnigCodePoint to_code) +{ + enum EGCB_TYPE from; + enum EGCB_TYPE to; + + from = egcb_get_type(from_code); + to = egcb_get_type(to_code); + + /* short cut */ + if (from == 0 && to == 0) goto GB999; + + /* GB3 */ + if (from == EGCB_CR && to == EGCB_LF) return EGCB_NOT_BREAK; + /* GB4 */ + if (IS_CONTROL_CR_LF(from)) return EGCB_BREAK; + /* GB5 */ + if (IS_CONTROL_CR_LF(to)) return EGCB_BREAK; + + if (IS_HANGUL(from) && IS_HANGUL(to)) { + /* GB6 */ + if (from == EGCB_L && to != EGCB_T) return EGCB_NOT_BREAK; + /* GB7 */ + if ((from == EGCB_LV || from == EGCB_V) + && (to == EGCB_V || to == EGCB_T)) return EGCB_NOT_BREAK; + + /* GB8 */ + if ((to == EGCB_T) && (from == EGCB_LVT || from == EGCB_T)) + return EGCB_NOT_BREAK; + + goto GB999; + } + + /* GB9 */ + if (to == EGCB_Extend || to == EGCB_ZWJ) return EGCB_NOT_BREAK; + + /* GB9a */ + if (to == EGCB_SpacingMark) return EGCB_NOT_BREAK; + /* GB9b */ + if (from == EGCB_Prepend) return EGCB_NOT_BREAK; + + /* GB10 removed */ + + /* GB11 */ + if (from == EGCB_ZWJ) { + if (onigenc_unicode_is_code_ctype(to_code, PROP_INDEX_EXTENDEDPICTOGRAPHIC)) + return EGCB_BREAK_UNDEF_GB11; + + goto GB999; + } + + /* GB12, GB13 */ + if (from == EGCB_Regional_Indicator && to == EGCB_Regional_Indicator) { + return EGCB_BREAK_UNDEF_RI_RI; + } + + GB999: + return EGCB_BREAK; +} + +#endif /* USE_UNICODE_EXTENDED_GRAPHEME_CLUSTER */ + +extern int +onigenc_egcb_is_break_position(OnigEncoding enc, UChar* p, UChar* prev, + const UChar* start, const UChar* end) +{ + OnigCodePoint from; + OnigCodePoint to; +#ifdef USE_UNICODE_EXTENDED_GRAPHEME_CLUSTER + enum EGCB_BREAK_TYPE btype; + enum EGCB_TYPE type; +#endif + + /* GB1 and GB2 */ + if (p == start) return 1; + if (p == end) return 1; + + if (IS_NULL(prev)) { + prev = onigenc_get_prev_char_head(enc, start, p); + if (IS_NULL(prev)) return 1; + } + + from = ONIGENC_MBC_TO_CODE(enc, prev, end); + to = ONIGENC_MBC_TO_CODE(enc, p, end); + +#ifdef USE_UNICODE_EXTENDED_GRAPHEME_CLUSTER + if (! ONIGENC_IS_UNICODE_ENCODING(enc)) { + if (from == 0x000d && to == 0x000a) return 0; + else return 1; + } + + btype = unicode_egcb_is_break_2code(from, to); + switch (btype) { + case EGCB_NOT_BREAK: + return 0; + break; + case EGCB_BREAK: + return 1; + break; + + case EGCB_BREAK_UNDEF_GB11: + while ((prev = onigenc_get_prev_char_head(enc, start, prev)) != NULL) { + from = ONIGENC_MBC_TO_CODE(enc, prev, end); + if (onigenc_unicode_is_code_ctype(from, PROP_INDEX_EXTENDEDPICTOGRAPHIC)) + return 0; + + type = egcb_get_type(from); + if (type != EGCB_Extend) + break; + } + break; + + case EGCB_BREAK_UNDEF_RI_RI: + { + int n = 0; + while ((prev = onigenc_get_prev_char_head(enc, start, prev)) != NULL) { + from = ONIGENC_MBC_TO_CODE(enc, prev, end); + type = egcb_get_type(from); + if (type != EGCB_Regional_Indicator) + break; + + n++; + } + if ((n % 2) == 0) return 0; + } + break; + } + + return 1; + +#else + if (from == 0x000d && to == 0x000a) return 0; + else return 1; +#endif /* USE_UNICODE_EXTENDED_GRAPHEME_CLUSTER */ +} + + +#define USER_DEFINED_PROPERTY_MAX_NUM 20 + +typedef struct { + int ctype; + OnigCodePoint* ranges; +} UserDefinedPropertyValue; + +static int UserDefinedPropertyNum; +static UserDefinedPropertyValue +UserDefinedPropertyRanges[USER_DEFINED_PROPERTY_MAX_NUM]; +static st_table* UserDefinedPropertyTable; + +extern int +onig_unicode_define_user_property(const char* name, OnigCodePoint* ranges) +{ + UserDefinedPropertyValue* e; + int r; + int i; + int n; + int len; + int c; + char* s; + + if (UserDefinedPropertyNum >= USER_DEFINED_PROPERTY_MAX_NUM) + return ONIGERR_TOO_MANY_USER_DEFINED_OBJECTS; + + len = (int )strlen_s(name,MAX_STRING_SIZE); + if (len >= PROPERTY_NAME_MAX_SIZE) + return ONIGERR_TOO_LONG_PROPERTY_NAME; + + s = (char* )xmalloc(len + 1); + if (s == 0) + return ONIGERR_MEMORY; + + n = 0; + for (i = 0; i < len; i++) { + c = name[i]; + if (c <= 0 || c >= 0x80) { + xfree(s); + return ONIGERR_INVALID_CHAR_PROPERTY_NAME; + } + + if (c != ' ' && c != '-' && c != '_') { + s[n] = c; + n++; + } + } + s[n] = '\0'; + + if (UserDefinedPropertyTable == 0) { + UserDefinedPropertyTable = onig_st_init_strend_table_with_size(10); + } + + e = UserDefinedPropertyRanges + UserDefinedPropertyNum; + e->ctype = CODE_RANGES_NUM + UserDefinedPropertyNum; + e->ranges = ranges; + r = onig_st_insert_strend(UserDefinedPropertyTable, + (const UChar* )s, (const UChar* )s + n, + (hash_data_type )((void* )e)); + if (r < 0) return r; + + UserDefinedPropertyNum++; + return 0; +} + +extern int +onigenc_unicode_is_code_ctype(OnigCodePoint code, unsigned int ctype) +{ + if ( +#ifdef USE_UNICODE_PROPERTIES + ctype <= ONIGENC_MAX_STD_CTYPE && +#endif + code < 256) { + return ONIGENC_IS_UNICODE_ISO_8859_1_CTYPE(code, ctype); + } + + if (ctype >= CODE_RANGES_NUM) { + int index = ctype - CODE_RANGES_NUM; + if (index < UserDefinedPropertyNum) + return onig_is_in_code_range((UChar* )UserDefinedPropertyRanges[index].ranges, code); + else + return ONIGERR_TYPE_BUG; + } + + return onig_is_in_code_range((UChar* )CodeRanges[ctype], code); +} + + +extern int +onigenc_unicode_ctype_code_range(OnigCtype ctype, const OnigCodePoint* ranges[]) +{ + if (ctype >= CODE_RANGES_NUM) { + int index = ctype - CODE_RANGES_NUM; + if (index < UserDefinedPropertyNum) { + *ranges = UserDefinedPropertyRanges[index].ranges; + return 0; + } + else + return ONIGERR_TYPE_BUG; + } + + *ranges = CodeRanges[ctype]; + return 0; +} + +extern int +onigenc_utf16_32_get_ctype_code_range(OnigCtype ctype, OnigCodePoint* sb_out, + const OnigCodePoint* ranges[]) +{ + *sb_out = 0x00; + return onigenc_unicode_ctype_code_range(ctype, ranges); +} + +extern int +onigenc_unicode_property_name_to_ctype(OnigEncoding enc, UChar* name, UChar* end) +{ + int len; + UChar *p; + OnigCodePoint code; + const struct PoolPropertyNameCtype* pc; + char buf[PROPERTY_NAME_MAX_SIZE]; + + p = name; + len = 0; + while (p < end) { + code = ONIGENC_MBC_TO_CODE(enc, p, end); + if (code >= 0x80) + return ONIGERR_INVALID_CHAR_PROPERTY_NAME; + + if (code != ' ' && code != '-' && code != '_') { + buf[len++] = (char )code; + if (len >= PROPERTY_NAME_MAX_SIZE) + return ONIGERR_INVALID_CHAR_PROPERTY_NAME; + } + + p += enclen(enc, p); + } + + buf[len] = 0; + + if (UserDefinedPropertyTable != 0) { + UserDefinedPropertyValue* e; + e = (UserDefinedPropertyValue* )NULL; + onig_st_lookup_strend(UserDefinedPropertyTable, + (const UChar* )buf, (const UChar* )buf + len, + (hash_data_type* )((void* )(&e))); + if (e != 0) { + return e->ctype; + } + } + + pc = unicode_lookup_property_name(buf, len); + if (pc != 0) { + /* fprintf(stderr, "LOOKUP: %s: %d\n", buf, pc->ctype); */ +#ifndef USE_UNICODE_PROPERTIES + if (pc->ctype > ONIGENC_MAX_STD_CTYPE) + return ONIGERR_INVALID_CHAR_PROPERTY_NAME; +#endif + + return (int )pc->ctype; + } + + return ONIGERR_INVALID_CHAR_PROPERTY_NAME; +} diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_egcb_data.c b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_egcb_data.c new file mode 100644 index 0000000000..d1edb1cae2 --- /dev/null +++ b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_egcb_data.c @@ -0,0 +1,1369 @@ +/* unicode_egcb_data.c: Generated by make_unicode_egcb_data.py. */ +/*- + * Copyright (c) 2017-2018 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. + */ + +#define GRAPHEME_BREAK_PROPERTY_VERSION 11_0_0 + +/* +CR +Control +Extend +L +LF +LV +LVT +Prepend +Regional_Indicator +SpacingMark +T +V +ZWJ +*/ + +static int EGCB_RANGE_NUM = 1321; +static EGCB_RANGE_TYPE EGCB_RANGES[] = { + {0x000000, 0x000009, EGCB_Control }, + {0x00000a, 0x00000a, EGCB_LF }, + {0x00000b, 0x00000c, EGCB_Control }, + {0x00000d, 0x00000d, EGCB_CR }, + {0x00000e, 0x00001f, EGCB_Control }, + {0x00007f, 0x00009f, EGCB_Control }, + {0x0000ad, 0x0000ad, EGCB_Control }, + {0x000300, 0x00036f, EGCB_Extend }, + {0x000483, 0x000489, EGCB_Extend }, + {0x000591, 0x0005bd, EGCB_Extend }, + {0x0005bf, 0x0005bf, EGCB_Extend }, + {0x0005c1, 0x0005c2, EGCB_Extend }, + {0x0005c4, 0x0005c5, EGCB_Extend }, + {0x0005c7, 0x0005c7, EGCB_Extend }, + {0x000600, 0x000605, EGCB_Prepend }, + {0x000610, 0x00061a, EGCB_Extend }, + {0x00061c, 0x00061c, EGCB_Control }, + {0x00064b, 0x00065f, EGCB_Extend }, + {0x000670, 0x000670, EGCB_Extend }, + {0x0006d6, 0x0006dc, EGCB_Extend }, + {0x0006dd, 0x0006dd, EGCB_Prepend }, + {0x0006df, 0x0006e4, EGCB_Extend }, + {0x0006e7, 0x0006e8, EGCB_Extend }, + {0x0006ea, 0x0006ed, EGCB_Extend }, + {0x00070f, 0x00070f, EGCB_Prepend }, + {0x000711, 0x000711, EGCB_Extend }, + {0x000730, 0x00074a, EGCB_Extend }, + {0x0007a6, 0x0007b0, EGCB_Extend }, + {0x0007eb, 0x0007f3, EGCB_Extend }, + {0x0007fd, 0x0007fd, EGCB_Extend }, + {0x000816, 0x000819, EGCB_Extend }, + {0x00081b, 0x000823, EGCB_Extend }, + {0x000825, 0x000827, EGCB_Extend }, + {0x000829, 0x00082d, EGCB_Extend }, + {0x000859, 0x00085b, EGCB_Extend }, + {0x0008d3, 0x0008e1, EGCB_Extend }, + {0x0008e2, 0x0008e2, EGCB_Prepend }, + {0x0008e3, 0x000902, EGCB_Extend }, + {0x000903, 0x000903, EGCB_SpacingMark }, + {0x00093a, 0x00093a, EGCB_Extend }, + {0x00093b, 0x00093b, EGCB_SpacingMark }, + {0x00093c, 0x00093c, EGCB_Extend }, + {0x00093e, 0x000940, EGCB_SpacingMark }, + {0x000941, 0x000948, EGCB_Extend }, + {0x000949, 0x00094c, EGCB_SpacingMark }, + {0x00094d, 0x00094d, EGCB_Extend }, + {0x00094e, 0x00094f, EGCB_SpacingMark }, + {0x000951, 0x000957, EGCB_Extend }, + {0x000962, 0x000963, EGCB_Extend }, + {0x000981, 0x000981, EGCB_Extend }, + {0x000982, 0x000983, EGCB_SpacingMark }, + {0x0009bc, 0x0009bc, EGCB_Extend }, + {0x0009be, 0x0009be, EGCB_Extend }, + {0x0009bf, 0x0009c0, EGCB_SpacingMark }, + {0x0009c1, 0x0009c4, EGCB_Extend }, + {0x0009c7, 0x0009c8, EGCB_SpacingMark }, + {0x0009cb, 0x0009cc, EGCB_SpacingMark }, + {0x0009cd, 0x0009cd, EGCB_Extend }, + {0x0009d7, 0x0009d7, EGCB_Extend }, + {0x0009e2, 0x0009e3, EGCB_Extend }, + {0x0009fe, 0x0009fe, EGCB_Extend }, + {0x000a01, 0x000a02, EGCB_Extend }, + {0x000a03, 0x000a03, EGCB_SpacingMark }, + {0x000a3c, 0x000a3c, EGCB_Extend }, + {0x000a3e, 0x000a40, EGCB_SpacingMark }, + {0x000a41, 0x000a42, EGCB_Extend }, + {0x000a47, 0x000a48, EGCB_Extend }, + {0x000a4b, 0x000a4d, EGCB_Extend }, + {0x000a51, 0x000a51, EGCB_Extend }, + {0x000a70, 0x000a71, EGCB_Extend }, + {0x000a75, 0x000a75, EGCB_Extend }, + {0x000a81, 0x000a82, EGCB_Extend }, + {0x000a83, 0x000a83, EGCB_SpacingMark }, + {0x000abc, 0x000abc, EGCB_Extend }, + {0x000abe, 0x000ac0, EGCB_SpacingMark }, + {0x000ac1, 0x000ac5, EGCB_Extend }, + {0x000ac7, 0x000ac8, EGCB_Extend }, + {0x000ac9, 0x000ac9, EGCB_SpacingMark }, + {0x000acb, 0x000acc, EGCB_SpacingMark }, + {0x000acd, 0x000acd, EGCB_Extend }, + {0x000ae2, 0x000ae3, EGCB_Extend }, + {0x000afa, 0x000aff, EGCB_Extend }, + {0x000b01, 0x000b01, EGCB_Extend }, + {0x000b02, 0x000b03, EGCB_SpacingMark }, + {0x000b3c, 0x000b3c, EGCB_Extend }, + {0x000b3e, 0x000b3f, EGCB_Extend }, + {0x000b40, 0x000b40, EGCB_SpacingMark }, + {0x000b41, 0x000b44, EGCB_Extend }, + {0x000b47, 0x000b48, EGCB_SpacingMark }, + {0x000b4b, 0x000b4c, EGCB_SpacingMark }, + {0x000b4d, 0x000b4d, EGCB_Extend }, + {0x000b56, 0x000b57, EGCB_Extend }, + {0x000b62, 0x000b63, EGCB_Extend }, + {0x000b82, 0x000b82, EGCB_Extend }, + {0x000bbe, 0x000bbe, EGCB_Extend }, + {0x000bbf, 0x000bbf, EGCB_SpacingMark }, + {0x000bc0, 0x000bc0, EGCB_Extend }, + {0x000bc1, 0x000bc2, EGCB_SpacingMark }, + {0x000bc6, 0x000bc8, EGCB_SpacingMark }, + {0x000bca, 0x000bcc, EGCB_SpacingMark }, + {0x000bcd, 0x000bcd, EGCB_Extend }, + {0x000bd7, 0x000bd7, EGCB_Extend }, + {0x000c00, 0x000c00, EGCB_Extend }, + {0x000c01, 0x000c03, EGCB_SpacingMark }, + {0x000c04, 0x000c04, EGCB_Extend }, + {0x000c3e, 0x000c40, EGCB_Extend }, + {0x000c41, 0x000c44, EGCB_SpacingMark }, + {0x000c46, 0x000c48, EGCB_Extend }, + {0x000c4a, 0x000c4d, EGCB_Extend }, + {0x000c55, 0x000c56, EGCB_Extend }, + {0x000c62, 0x000c63, EGCB_Extend }, + {0x000c81, 0x000c81, EGCB_Extend }, + {0x000c82, 0x000c83, EGCB_SpacingMark }, + {0x000cbc, 0x000cbc, EGCB_Extend }, + {0x000cbe, 0x000cbe, EGCB_SpacingMark }, + {0x000cbf, 0x000cbf, EGCB_Extend }, + {0x000cc0, 0x000cc1, EGCB_SpacingMark }, + {0x000cc2, 0x000cc2, EGCB_Extend }, + {0x000cc3, 0x000cc4, EGCB_SpacingMark }, + {0x000cc6, 0x000cc6, EGCB_Extend }, + {0x000cc7, 0x000cc8, EGCB_SpacingMark }, + {0x000cca, 0x000ccb, EGCB_SpacingMark }, + {0x000ccc, 0x000ccd, EGCB_Extend }, + {0x000cd5, 0x000cd6, EGCB_Extend }, + {0x000ce2, 0x000ce3, EGCB_Extend }, + {0x000d00, 0x000d01, EGCB_Extend }, + {0x000d02, 0x000d03, EGCB_SpacingMark }, + {0x000d3b, 0x000d3c, EGCB_Extend }, + {0x000d3e, 0x000d3e, EGCB_Extend }, + {0x000d3f, 0x000d40, EGCB_SpacingMark }, + {0x000d41, 0x000d44, EGCB_Extend }, + {0x000d46, 0x000d48, EGCB_SpacingMark }, + {0x000d4a, 0x000d4c, EGCB_SpacingMark }, + {0x000d4d, 0x000d4d, EGCB_Extend }, + {0x000d4e, 0x000d4e, EGCB_Prepend }, + {0x000d57, 0x000d57, EGCB_Extend }, + {0x000d62, 0x000d63, EGCB_Extend }, + {0x000d82, 0x000d83, EGCB_SpacingMark }, + {0x000dca, 0x000dca, EGCB_Extend }, + {0x000dcf, 0x000dcf, EGCB_Extend }, + {0x000dd0, 0x000dd1, EGCB_SpacingMark }, + {0x000dd2, 0x000dd4, EGCB_Extend }, + {0x000dd6, 0x000dd6, EGCB_Extend }, + {0x000dd8, 0x000dde, EGCB_SpacingMark }, + {0x000ddf, 0x000ddf, EGCB_Extend }, + {0x000df2, 0x000df3, EGCB_SpacingMark }, + {0x000e31, 0x000e31, EGCB_Extend }, + {0x000e33, 0x000e33, EGCB_SpacingMark }, + {0x000e34, 0x000e3a, EGCB_Extend }, + {0x000e47, 0x000e4e, EGCB_Extend }, + {0x000eb1, 0x000eb1, EGCB_Extend }, + {0x000eb3, 0x000eb3, EGCB_SpacingMark }, + {0x000eb4, 0x000eb9, EGCB_Extend }, + {0x000ebb, 0x000ebc, EGCB_Extend }, + {0x000ec8, 0x000ecd, EGCB_Extend }, + {0x000f18, 0x000f19, EGCB_Extend }, + {0x000f35, 0x000f35, EGCB_Extend }, + {0x000f37, 0x000f37, EGCB_Extend }, + {0x000f39, 0x000f39, EGCB_Extend }, + {0x000f3e, 0x000f3f, EGCB_SpacingMark }, + {0x000f71, 0x000f7e, EGCB_Extend }, + {0x000f7f, 0x000f7f, EGCB_SpacingMark }, + {0x000f80, 0x000f84, EGCB_Extend }, + {0x000f86, 0x000f87, EGCB_Extend }, + {0x000f8d, 0x000f97, EGCB_Extend }, + {0x000f99, 0x000fbc, EGCB_Extend }, + {0x000fc6, 0x000fc6, EGCB_Extend }, + {0x00102d, 0x001030, EGCB_Extend }, + {0x001031, 0x001031, EGCB_SpacingMark }, + {0x001032, 0x001037, EGCB_Extend }, + {0x001039, 0x00103a, EGCB_Extend }, + {0x00103b, 0x00103c, EGCB_SpacingMark }, + {0x00103d, 0x00103e, EGCB_Extend }, + {0x001056, 0x001057, EGCB_SpacingMark }, + {0x001058, 0x001059, EGCB_Extend }, + {0x00105e, 0x001060, EGCB_Extend }, + {0x001071, 0x001074, EGCB_Extend }, + {0x001082, 0x001082, EGCB_Extend }, + {0x001084, 0x001084, EGCB_SpacingMark }, + {0x001085, 0x001086, EGCB_Extend }, + {0x00108d, 0x00108d, EGCB_Extend }, + {0x00109d, 0x00109d, EGCB_Extend }, + {0x001100, 0x00115f, EGCB_L }, + {0x001160, 0x0011a7, EGCB_V }, + {0x0011a8, 0x0011ff, EGCB_T }, + {0x00135d, 0x00135f, EGCB_Extend }, + {0x001712, 0x001714, EGCB_Extend }, + {0x001732, 0x001734, EGCB_Extend }, + {0x001752, 0x001753, EGCB_Extend }, + {0x001772, 0x001773, EGCB_Extend }, + {0x0017b4, 0x0017b5, EGCB_Extend }, + {0x0017b6, 0x0017b6, EGCB_SpacingMark }, + {0x0017b7, 0x0017bd, EGCB_Extend }, + {0x0017be, 0x0017c5, EGCB_SpacingMark }, + {0x0017c6, 0x0017c6, EGCB_Extend }, + {0x0017c7, 0x0017c8, EGCB_SpacingMark }, + {0x0017c9, 0x0017d3, EGCB_Extend }, + {0x0017dd, 0x0017dd, EGCB_Extend }, + {0x00180b, 0x00180d, EGCB_Extend }, + {0x00180e, 0x00180e, EGCB_Control }, + {0x001885, 0x001886, EGCB_Extend }, + {0x0018a9, 0x0018a9, EGCB_Extend }, + {0x001920, 0x001922, EGCB_Extend }, + {0x001923, 0x001926, EGCB_SpacingMark }, + {0x001927, 0x001928, EGCB_Extend }, + {0x001929, 0x00192b, EGCB_SpacingMark }, + {0x001930, 0x001931, EGCB_SpacingMark }, + {0x001932, 0x001932, EGCB_Extend }, + {0x001933, 0x001938, EGCB_SpacingMark }, + {0x001939, 0x00193b, EGCB_Extend }, + {0x001a17, 0x001a18, EGCB_Extend }, + {0x001a19, 0x001a1a, EGCB_SpacingMark }, + {0x001a1b, 0x001a1b, EGCB_Extend }, + {0x001a55, 0x001a55, EGCB_SpacingMark }, + {0x001a56, 0x001a56, EGCB_Extend }, + {0x001a57, 0x001a57, EGCB_SpacingMark }, + {0x001a58, 0x001a5e, EGCB_Extend }, + {0x001a60, 0x001a60, EGCB_Extend }, + {0x001a62, 0x001a62, EGCB_Extend }, + {0x001a65, 0x001a6c, EGCB_Extend }, + {0x001a6d, 0x001a72, EGCB_SpacingMark }, + {0x001a73, 0x001a7c, EGCB_Extend }, + {0x001a7f, 0x001a7f, EGCB_Extend }, + {0x001ab0, 0x001abe, EGCB_Extend }, + {0x001b00, 0x001b03, EGCB_Extend }, + {0x001b04, 0x001b04, EGCB_SpacingMark }, + {0x001b34, 0x001b34, EGCB_Extend }, + {0x001b35, 0x001b35, EGCB_SpacingMark }, + {0x001b36, 0x001b3a, EGCB_Extend }, + {0x001b3b, 0x001b3b, EGCB_SpacingMark }, + {0x001b3c, 0x001b3c, EGCB_Extend }, + {0x001b3d, 0x001b41, EGCB_SpacingMark }, + {0x001b42, 0x001b42, EGCB_Extend }, + {0x001b43, 0x001b44, EGCB_SpacingMark }, + {0x001b6b, 0x001b73, EGCB_Extend }, + {0x001b80, 0x001b81, EGCB_Extend }, + {0x001b82, 0x001b82, EGCB_SpacingMark }, + {0x001ba1, 0x001ba1, EGCB_SpacingMark }, + {0x001ba2, 0x001ba5, EGCB_Extend }, + {0x001ba6, 0x001ba7, EGCB_SpacingMark }, + {0x001ba8, 0x001ba9, EGCB_Extend }, + {0x001baa, 0x001baa, EGCB_SpacingMark }, + {0x001bab, 0x001bad, EGCB_Extend }, + {0x001be6, 0x001be6, EGCB_Extend }, + {0x001be7, 0x001be7, EGCB_SpacingMark }, + {0x001be8, 0x001be9, EGCB_Extend }, + {0x001bea, 0x001bec, EGCB_SpacingMark }, + {0x001bed, 0x001bed, EGCB_Extend }, + {0x001bee, 0x001bee, EGCB_SpacingMark }, + {0x001bef, 0x001bf1, EGCB_Extend }, + {0x001bf2, 0x001bf3, EGCB_SpacingMark }, + {0x001c24, 0x001c2b, EGCB_SpacingMark }, + {0x001c2c, 0x001c33, EGCB_Extend }, + {0x001c34, 0x001c35, EGCB_SpacingMark }, + {0x001c36, 0x001c37, EGCB_Extend }, + {0x001cd0, 0x001cd2, EGCB_Extend }, + {0x001cd4, 0x001ce0, EGCB_Extend }, + {0x001ce1, 0x001ce1, EGCB_SpacingMark }, + {0x001ce2, 0x001ce8, EGCB_Extend }, + {0x001ced, 0x001ced, EGCB_Extend }, + {0x001cf2, 0x001cf3, EGCB_SpacingMark }, + {0x001cf4, 0x001cf4, EGCB_Extend }, + {0x001cf7, 0x001cf7, EGCB_SpacingMark }, + {0x001cf8, 0x001cf9, EGCB_Extend }, + {0x001dc0, 0x001df9, EGCB_Extend }, + {0x001dfb, 0x001dff, EGCB_Extend }, + {0x00200b, 0x00200b, EGCB_Control }, + {0x00200c, 0x00200c, EGCB_Extend }, + {0x00200d, 0x00200d, EGCB_ZWJ }, + {0x00200e, 0x00200f, EGCB_Control }, + {0x002028, 0x00202e, EGCB_Control }, + {0x002060, 0x00206f, EGCB_Control }, + {0x0020d0, 0x0020f0, EGCB_Extend }, + {0x002cef, 0x002cf1, EGCB_Extend }, + {0x002d7f, 0x002d7f, EGCB_Extend }, + {0x002de0, 0x002dff, EGCB_Extend }, + {0x00302a, 0x00302f, EGCB_Extend }, + {0x003099, 0x00309a, EGCB_Extend }, + {0x00a66f, 0x00a672, EGCB_Extend }, + {0x00a674, 0x00a67d, EGCB_Extend }, + {0x00a69e, 0x00a69f, EGCB_Extend }, + {0x00a6f0, 0x00a6f1, EGCB_Extend }, + {0x00a802, 0x00a802, EGCB_Extend }, + {0x00a806, 0x00a806, EGCB_Extend }, + {0x00a80b, 0x00a80b, EGCB_Extend }, + {0x00a823, 0x00a824, EGCB_SpacingMark }, + {0x00a825, 0x00a826, EGCB_Extend }, + {0x00a827, 0x00a827, EGCB_SpacingMark }, + {0x00a880, 0x00a881, EGCB_SpacingMark }, + {0x00a8b4, 0x00a8c3, EGCB_SpacingMark }, + {0x00a8c4, 0x00a8c5, EGCB_Extend }, + {0x00a8e0, 0x00a8f1, EGCB_Extend }, + {0x00a8ff, 0x00a8ff, EGCB_Extend }, + {0x00a926, 0x00a92d, EGCB_Extend }, + {0x00a947, 0x00a951, EGCB_Extend }, + {0x00a952, 0x00a953, EGCB_SpacingMark }, + {0x00a960, 0x00a97c, EGCB_L }, + {0x00a980, 0x00a982, EGCB_Extend }, + {0x00a983, 0x00a983, EGCB_SpacingMark }, + {0x00a9b3, 0x00a9b3, EGCB_Extend }, + {0x00a9b4, 0x00a9b5, EGCB_SpacingMark }, + {0x00a9b6, 0x00a9b9, EGCB_Extend }, + {0x00a9ba, 0x00a9bb, EGCB_SpacingMark }, + {0x00a9bc, 0x00a9bc, EGCB_Extend }, + {0x00a9bd, 0x00a9c0, EGCB_SpacingMark }, + {0x00a9e5, 0x00a9e5, EGCB_Extend }, + {0x00aa29, 0x00aa2e, EGCB_Extend }, + {0x00aa2f, 0x00aa30, EGCB_SpacingMark }, + {0x00aa31, 0x00aa32, EGCB_Extend }, + {0x00aa33, 0x00aa34, EGCB_SpacingMark }, + {0x00aa35, 0x00aa36, EGCB_Extend }, + {0x00aa43, 0x00aa43, EGCB_Extend }, + {0x00aa4c, 0x00aa4c, EGCB_Extend }, + {0x00aa4d, 0x00aa4d, EGCB_SpacingMark }, + {0x00aa7c, 0x00aa7c, EGCB_Extend }, + {0x00aab0, 0x00aab0, EGCB_Extend }, + {0x00aab2, 0x00aab4, EGCB_Extend }, + {0x00aab7, 0x00aab8, EGCB_Extend }, + {0x00aabe, 0x00aabf, EGCB_Extend }, + {0x00aac1, 0x00aac1, EGCB_Extend }, + {0x00aaeb, 0x00aaeb, EGCB_SpacingMark }, + {0x00aaec, 0x00aaed, EGCB_Extend }, + {0x00aaee, 0x00aaef, EGCB_SpacingMark }, + {0x00aaf5, 0x00aaf5, EGCB_SpacingMark }, + {0x00aaf6, 0x00aaf6, EGCB_Extend }, + {0x00abe3, 0x00abe4, EGCB_SpacingMark }, + {0x00abe5, 0x00abe5, EGCB_Extend }, + {0x00abe6, 0x00abe7, EGCB_SpacingMark }, + {0x00abe8, 0x00abe8, EGCB_Extend }, + {0x00abe9, 0x00abea, EGCB_SpacingMark }, + {0x00abec, 0x00abec, EGCB_SpacingMark }, + {0x00abed, 0x00abed, EGCB_Extend }, + {0x00ac00, 0x00ac00, EGCB_LV }, + {0x00ac01, 0x00ac1b, EGCB_LVT }, + {0x00ac1c, 0x00ac1c, EGCB_LV }, + {0x00ac1d, 0x00ac37, EGCB_LVT }, + {0x00ac38, 0x00ac38, EGCB_LV }, + {0x00ac39, 0x00ac53, EGCB_LVT }, + {0x00ac54, 0x00ac54, EGCB_LV }, + {0x00ac55, 0x00ac6f, EGCB_LVT }, + {0x00ac70, 0x00ac70, EGCB_LV }, + {0x00ac71, 0x00ac8b, EGCB_LVT }, + {0x00ac8c, 0x00ac8c, EGCB_LV }, + {0x00ac8d, 0x00aca7, EGCB_LVT }, + {0x00aca8, 0x00aca8, EGCB_LV }, + {0x00aca9, 0x00acc3, EGCB_LVT }, + {0x00acc4, 0x00acc4, EGCB_LV }, + {0x00acc5, 0x00acdf, EGCB_LVT }, + {0x00ace0, 0x00ace0, EGCB_LV }, + {0x00ace1, 0x00acfb, EGCB_LVT }, + {0x00acfc, 0x00acfc, EGCB_LV }, + {0x00acfd, 0x00ad17, EGCB_LVT }, + {0x00ad18, 0x00ad18, EGCB_LV }, + {0x00ad19, 0x00ad33, EGCB_LVT }, + {0x00ad34, 0x00ad34, EGCB_LV }, + {0x00ad35, 0x00ad4f, EGCB_LVT }, + {0x00ad50, 0x00ad50, EGCB_LV }, + {0x00ad51, 0x00ad6b, EGCB_LVT }, + {0x00ad6c, 0x00ad6c, EGCB_LV }, + {0x00ad6d, 0x00ad87, EGCB_LVT }, + {0x00ad88, 0x00ad88, EGCB_LV }, + {0x00ad89, 0x00ada3, EGCB_LVT }, + {0x00ada4, 0x00ada4, EGCB_LV }, + {0x00ada5, 0x00adbf, EGCB_LVT }, + {0x00adc0, 0x00adc0, EGCB_LV }, + {0x00adc1, 0x00addb, EGCB_LVT }, + {0x00addc, 0x00addc, EGCB_LV }, + {0x00addd, 0x00adf7, EGCB_LVT }, + {0x00adf8, 0x00adf8, EGCB_LV }, + {0x00adf9, 0x00ae13, EGCB_LVT }, + {0x00ae14, 0x00ae14, EGCB_LV }, + {0x00ae15, 0x00ae2f, EGCB_LVT }, + {0x00ae30, 0x00ae30, EGCB_LV }, + {0x00ae31, 0x00ae4b, EGCB_LVT }, + {0x00ae4c, 0x00ae4c, EGCB_LV }, + {0x00ae4d, 0x00ae67, EGCB_LVT }, + {0x00ae68, 0x00ae68, EGCB_LV }, + {0x00ae69, 0x00ae83, EGCB_LVT }, + {0x00ae84, 0x00ae84, EGCB_LV }, + {0x00ae85, 0x00ae9f, EGCB_LVT }, + {0x00aea0, 0x00aea0, EGCB_LV }, + {0x00aea1, 0x00aebb, EGCB_LVT }, + {0x00aebc, 0x00aebc, EGCB_LV }, + {0x00aebd, 0x00aed7, EGCB_LVT }, + {0x00aed8, 0x00aed8, EGCB_LV }, + {0x00aed9, 0x00aef3, EGCB_LVT }, + {0x00aef4, 0x00aef4, EGCB_LV }, + {0x00aef5, 0x00af0f, EGCB_LVT }, + {0x00af10, 0x00af10, EGCB_LV }, + {0x00af11, 0x00af2b, EGCB_LVT }, + {0x00af2c, 0x00af2c, EGCB_LV }, + {0x00af2d, 0x00af47, EGCB_LVT }, + {0x00af48, 0x00af48, EGCB_LV }, + {0x00af49, 0x00af63, EGCB_LVT }, + {0x00af64, 0x00af64, EGCB_LV }, + {0x00af65, 0x00af7f, EGCB_LVT }, + {0x00af80, 0x00af80, EGCB_LV }, + {0x00af81, 0x00af9b, EGCB_LVT }, + {0x00af9c, 0x00af9c, EGCB_LV }, + {0x00af9d, 0x00afb7, EGCB_LVT }, + {0x00afb8, 0x00afb8, EGCB_LV }, + {0x00afb9, 0x00afd3, EGCB_LVT }, + {0x00afd4, 0x00afd4, EGCB_LV }, + {0x00afd5, 0x00afef, EGCB_LVT }, + {0x00aff0, 0x00aff0, EGCB_LV }, + {0x00aff1, 0x00b00b, EGCB_LVT }, + {0x00b00c, 0x00b00c, EGCB_LV }, + {0x00b00d, 0x00b027, EGCB_LVT }, + {0x00b028, 0x00b028, EGCB_LV }, + {0x00b029, 0x00b043, EGCB_LVT }, + {0x00b044, 0x00b044, EGCB_LV }, + {0x00b045, 0x00b05f, EGCB_LVT }, + {0x00b060, 0x00b060, EGCB_LV }, + {0x00b061, 0x00b07b, EGCB_LVT }, + {0x00b07c, 0x00b07c, EGCB_LV }, + {0x00b07d, 0x00b097, EGCB_LVT }, + {0x00b098, 0x00b098, EGCB_LV }, + {0x00b099, 0x00b0b3, EGCB_LVT }, + {0x00b0b4, 0x00b0b4, EGCB_LV }, + {0x00b0b5, 0x00b0cf, EGCB_LVT }, + {0x00b0d0, 0x00b0d0, EGCB_LV }, + {0x00b0d1, 0x00b0eb, EGCB_LVT }, + {0x00b0ec, 0x00b0ec, EGCB_LV }, + {0x00b0ed, 0x00b107, EGCB_LVT }, + {0x00b108, 0x00b108, EGCB_LV }, + {0x00b109, 0x00b123, EGCB_LVT }, + {0x00b124, 0x00b124, EGCB_LV }, + {0x00b125, 0x00b13f, EGCB_LVT }, + {0x00b140, 0x00b140, EGCB_LV }, + {0x00b141, 0x00b15b, EGCB_LVT }, + {0x00b15c, 0x00b15c, EGCB_LV }, + {0x00b15d, 0x00b177, EGCB_LVT }, + {0x00b178, 0x00b178, EGCB_LV }, + {0x00b179, 0x00b193, EGCB_LVT }, + {0x00b194, 0x00b194, EGCB_LV }, + {0x00b195, 0x00b1af, EGCB_LVT }, + {0x00b1b0, 0x00b1b0, EGCB_LV }, + {0x00b1b1, 0x00b1cb, EGCB_LVT }, + {0x00b1cc, 0x00b1cc, EGCB_LV }, + {0x00b1cd, 0x00b1e7, EGCB_LVT }, + {0x00b1e8, 0x00b1e8, EGCB_LV }, + {0x00b1e9, 0x00b203, EGCB_LVT }, + {0x00b204, 0x00b204, EGCB_LV }, + {0x00b205, 0x00b21f, EGCB_LVT }, + {0x00b220, 0x00b220, EGCB_LV }, + {0x00b221, 0x00b23b, EGCB_LVT }, + {0x00b23c, 0x00b23c, EGCB_LV }, + {0x00b23d, 0x00b257, EGCB_LVT }, + {0x00b258, 0x00b258, EGCB_LV }, + {0x00b259, 0x00b273, EGCB_LVT }, + {0x00b274, 0x00b274, EGCB_LV }, + {0x00b275, 0x00b28f, EGCB_LVT }, + {0x00b290, 0x00b290, EGCB_LV }, + {0x00b291, 0x00b2ab, EGCB_LVT }, + {0x00b2ac, 0x00b2ac, EGCB_LV }, + {0x00b2ad, 0x00b2c7, EGCB_LVT }, + {0x00b2c8, 0x00b2c8, EGCB_LV }, + {0x00b2c9, 0x00b2e3, EGCB_LVT }, + {0x00b2e4, 0x00b2e4, EGCB_LV }, + {0x00b2e5, 0x00b2ff, EGCB_LVT }, + {0x00b300, 0x00b300, EGCB_LV }, + {0x00b301, 0x00b31b, EGCB_LVT }, + {0x00b31c, 0x00b31c, EGCB_LV }, + {0x00b31d, 0x00b337, EGCB_LVT }, + {0x00b338, 0x00b338, EGCB_LV }, + {0x00b339, 0x00b353, EGCB_LVT }, + {0x00b354, 0x00b354, EGCB_LV }, + {0x00b355, 0x00b36f, EGCB_LVT }, + {0x00b370, 0x00b370, EGCB_LV }, + {0x00b371, 0x00b38b, EGCB_LVT }, + {0x00b38c, 0x00b38c, EGCB_LV }, + {0x00b38d, 0x00b3a7, EGCB_LVT }, + {0x00b3a8, 0x00b3a8, EGCB_LV }, + {0x00b3a9, 0x00b3c3, EGCB_LVT }, + {0x00b3c4, 0x00b3c4, EGCB_LV }, + {0x00b3c5, 0x00b3df, EGCB_LVT }, + {0x00b3e0, 0x00b3e0, EGCB_LV }, + {0x00b3e1, 0x00b3fb, EGCB_LVT }, + {0x00b3fc, 0x00b3fc, EGCB_LV }, + {0x00b3fd, 0x00b417, EGCB_LVT }, + {0x00b418, 0x00b418, EGCB_LV }, + {0x00b419, 0x00b433, EGCB_LVT }, + {0x00b434, 0x00b434, EGCB_LV }, + {0x00b435, 0x00b44f, EGCB_LVT }, + {0x00b450, 0x00b450, EGCB_LV }, + {0x00b451, 0x00b46b, EGCB_LVT }, + {0x00b46c, 0x00b46c, EGCB_LV }, + {0x00b46d, 0x00b487, EGCB_LVT }, + {0x00b488, 0x00b488, EGCB_LV }, + {0x00b489, 0x00b4a3, EGCB_LVT }, + {0x00b4a4, 0x00b4a4, EGCB_LV }, + {0x00b4a5, 0x00b4bf, EGCB_LVT }, + {0x00b4c0, 0x00b4c0, EGCB_LV }, + {0x00b4c1, 0x00b4db, EGCB_LVT }, + {0x00b4dc, 0x00b4dc, EGCB_LV }, + {0x00b4dd, 0x00b4f7, EGCB_LVT }, + {0x00b4f8, 0x00b4f8, EGCB_LV }, + {0x00b4f9, 0x00b513, EGCB_LVT }, + {0x00b514, 0x00b514, EGCB_LV }, + {0x00b515, 0x00b52f, EGCB_LVT }, + {0x00b530, 0x00b530, EGCB_LV }, + {0x00b531, 0x00b54b, EGCB_LVT }, + {0x00b54c, 0x00b54c, EGCB_LV }, + {0x00b54d, 0x00b567, EGCB_LVT }, + {0x00b568, 0x00b568, EGCB_LV }, + {0x00b569, 0x00b583, EGCB_LVT }, + {0x00b584, 0x00b584, EGCB_LV }, + {0x00b585, 0x00b59f, EGCB_LVT }, + {0x00b5a0, 0x00b5a0, EGCB_LV }, + {0x00b5a1, 0x00b5bb, EGCB_LVT }, + {0x00b5bc, 0x00b5bc, EGCB_LV }, + {0x00b5bd, 0x00b5d7, EGCB_LVT }, + {0x00b5d8, 0x00b5d8, EGCB_LV }, + {0x00b5d9, 0x00b5f3, EGCB_LVT }, + {0x00b5f4, 0x00b5f4, EGCB_LV }, + {0x00b5f5, 0x00b60f, EGCB_LVT }, + {0x00b610, 0x00b610, EGCB_LV }, + {0x00b611, 0x00b62b, EGCB_LVT }, + {0x00b62c, 0x00b62c, EGCB_LV }, + {0x00b62d, 0x00b647, EGCB_LVT }, + {0x00b648, 0x00b648, EGCB_LV }, + {0x00b649, 0x00b663, EGCB_LVT }, + {0x00b664, 0x00b664, EGCB_LV }, + {0x00b665, 0x00b67f, EGCB_LVT }, + {0x00b680, 0x00b680, EGCB_LV }, + {0x00b681, 0x00b69b, EGCB_LVT }, + {0x00b69c, 0x00b69c, EGCB_LV }, + {0x00b69d, 0x00b6b7, EGCB_LVT }, + {0x00b6b8, 0x00b6b8, EGCB_LV }, + {0x00b6b9, 0x00b6d3, EGCB_LVT }, + {0x00b6d4, 0x00b6d4, EGCB_LV }, + {0x00b6d5, 0x00b6ef, EGCB_LVT }, + {0x00b6f0, 0x00b6f0, EGCB_LV }, + {0x00b6f1, 0x00b70b, EGCB_LVT }, + {0x00b70c, 0x00b70c, EGCB_LV }, + {0x00b70d, 0x00b727, EGCB_LVT }, + {0x00b728, 0x00b728, EGCB_LV }, + {0x00b729, 0x00b743, EGCB_LVT }, + {0x00b744, 0x00b744, EGCB_LV }, + {0x00b745, 0x00b75f, EGCB_LVT }, + {0x00b760, 0x00b760, EGCB_LV }, + {0x00b761, 0x00b77b, EGCB_LVT }, + {0x00b77c, 0x00b77c, EGCB_LV }, + {0x00b77d, 0x00b797, EGCB_LVT }, + {0x00b798, 0x00b798, EGCB_LV }, + {0x00b799, 0x00b7b3, EGCB_LVT }, + {0x00b7b4, 0x00b7b4, EGCB_LV }, + {0x00b7b5, 0x00b7cf, EGCB_LVT }, + {0x00b7d0, 0x00b7d0, EGCB_LV }, + {0x00b7d1, 0x00b7eb, EGCB_LVT }, + {0x00b7ec, 0x00b7ec, EGCB_LV }, + {0x00b7ed, 0x00b807, EGCB_LVT }, + {0x00b808, 0x00b808, EGCB_LV }, + {0x00b809, 0x00b823, EGCB_LVT }, + {0x00b824, 0x00b824, EGCB_LV }, + {0x00b825, 0x00b83f, EGCB_LVT }, + {0x00b840, 0x00b840, EGCB_LV }, + {0x00b841, 0x00b85b, EGCB_LVT }, + {0x00b85c, 0x00b85c, EGCB_LV }, + {0x00b85d, 0x00b877, EGCB_LVT }, + {0x00b878, 0x00b878, EGCB_LV }, + {0x00b879, 0x00b893, EGCB_LVT }, + {0x00b894, 0x00b894, EGCB_LV }, + {0x00b895, 0x00b8af, EGCB_LVT }, + {0x00b8b0, 0x00b8b0, EGCB_LV }, + {0x00b8b1, 0x00b8cb, EGCB_LVT }, + {0x00b8cc, 0x00b8cc, EGCB_LV }, + {0x00b8cd, 0x00b8e7, EGCB_LVT }, + {0x00b8e8, 0x00b8e8, EGCB_LV }, + {0x00b8e9, 0x00b903, EGCB_LVT }, + {0x00b904, 0x00b904, EGCB_LV }, + {0x00b905, 0x00b91f, EGCB_LVT }, + {0x00b920, 0x00b920, EGCB_LV }, + {0x00b921, 0x00b93b, EGCB_LVT }, + {0x00b93c, 0x00b93c, EGCB_LV }, + {0x00b93d, 0x00b957, EGCB_LVT }, + {0x00b958, 0x00b958, EGCB_LV }, + {0x00b959, 0x00b973, EGCB_LVT }, + {0x00b974, 0x00b974, EGCB_LV }, + {0x00b975, 0x00b98f, EGCB_LVT }, + {0x00b990, 0x00b990, EGCB_LV }, + {0x00b991, 0x00b9ab, EGCB_LVT }, + {0x00b9ac, 0x00b9ac, EGCB_LV }, + {0x00b9ad, 0x00b9c7, EGCB_LVT }, + {0x00b9c8, 0x00b9c8, EGCB_LV }, + {0x00b9c9, 0x00b9e3, EGCB_LVT }, + {0x00b9e4, 0x00b9e4, EGCB_LV }, + {0x00b9e5, 0x00b9ff, EGCB_LVT }, + {0x00ba00, 0x00ba00, EGCB_LV }, + {0x00ba01, 0x00ba1b, EGCB_LVT }, + {0x00ba1c, 0x00ba1c, EGCB_LV }, + {0x00ba1d, 0x00ba37, EGCB_LVT }, + {0x00ba38, 0x00ba38, EGCB_LV }, + {0x00ba39, 0x00ba53, EGCB_LVT }, + {0x00ba54, 0x00ba54, EGCB_LV }, + {0x00ba55, 0x00ba6f, EGCB_LVT }, + {0x00ba70, 0x00ba70, EGCB_LV }, + {0x00ba71, 0x00ba8b, EGCB_LVT }, + {0x00ba8c, 0x00ba8c, EGCB_LV }, + {0x00ba8d, 0x00baa7, EGCB_LVT }, + {0x00baa8, 0x00baa8, EGCB_LV }, + {0x00baa9, 0x00bac3, EGCB_LVT }, + {0x00bac4, 0x00bac4, EGCB_LV }, + {0x00bac5, 0x00badf, EGCB_LVT }, + {0x00bae0, 0x00bae0, EGCB_LV }, + {0x00bae1, 0x00bafb, EGCB_LVT }, + {0x00bafc, 0x00bafc, EGCB_LV }, + {0x00bafd, 0x00bb17, EGCB_LVT }, + {0x00bb18, 0x00bb18, EGCB_LV }, + {0x00bb19, 0x00bb33, EGCB_LVT }, + {0x00bb34, 0x00bb34, EGCB_LV }, + {0x00bb35, 0x00bb4f, EGCB_LVT }, + {0x00bb50, 0x00bb50, EGCB_LV }, + {0x00bb51, 0x00bb6b, EGCB_LVT }, + {0x00bb6c, 0x00bb6c, EGCB_LV }, + {0x00bb6d, 0x00bb87, EGCB_LVT }, + {0x00bb88, 0x00bb88, EGCB_LV }, + {0x00bb89, 0x00bba3, EGCB_LVT }, + {0x00bba4, 0x00bba4, EGCB_LV }, + {0x00bba5, 0x00bbbf, EGCB_LVT }, + {0x00bbc0, 0x00bbc0, EGCB_LV }, + {0x00bbc1, 0x00bbdb, EGCB_LVT }, + {0x00bbdc, 0x00bbdc, EGCB_LV }, + {0x00bbdd, 0x00bbf7, EGCB_LVT }, + {0x00bbf8, 0x00bbf8, EGCB_LV }, + {0x00bbf9, 0x00bc13, EGCB_LVT }, + {0x00bc14, 0x00bc14, EGCB_LV }, + {0x00bc15, 0x00bc2f, EGCB_LVT }, + {0x00bc30, 0x00bc30, EGCB_LV }, + {0x00bc31, 0x00bc4b, EGCB_LVT }, + {0x00bc4c, 0x00bc4c, EGCB_LV }, + {0x00bc4d, 0x00bc67, EGCB_LVT }, + {0x00bc68, 0x00bc68, EGCB_LV }, + {0x00bc69, 0x00bc83, EGCB_LVT }, + {0x00bc84, 0x00bc84, EGCB_LV }, + {0x00bc85, 0x00bc9f, EGCB_LVT }, + {0x00bca0, 0x00bca0, EGCB_LV }, + {0x00bca1, 0x00bcbb, EGCB_LVT }, + {0x00bcbc, 0x00bcbc, EGCB_LV }, + {0x00bcbd, 0x00bcd7, EGCB_LVT }, + {0x00bcd8, 0x00bcd8, EGCB_LV }, + {0x00bcd9, 0x00bcf3, EGCB_LVT }, + {0x00bcf4, 0x00bcf4, EGCB_LV }, + {0x00bcf5, 0x00bd0f, EGCB_LVT }, + {0x00bd10, 0x00bd10, EGCB_LV }, + {0x00bd11, 0x00bd2b, EGCB_LVT }, + {0x00bd2c, 0x00bd2c, EGCB_LV }, + {0x00bd2d, 0x00bd47, EGCB_LVT }, + {0x00bd48, 0x00bd48, EGCB_LV }, + {0x00bd49, 0x00bd63, EGCB_LVT }, + {0x00bd64, 0x00bd64, EGCB_LV }, + {0x00bd65, 0x00bd7f, EGCB_LVT }, + {0x00bd80, 0x00bd80, EGCB_LV }, + {0x00bd81, 0x00bd9b, EGCB_LVT }, + {0x00bd9c, 0x00bd9c, EGCB_LV }, + {0x00bd9d, 0x00bdb7, EGCB_LVT }, + {0x00bdb8, 0x00bdb8, EGCB_LV }, + {0x00bdb9, 0x00bdd3, EGCB_LVT }, + {0x00bdd4, 0x00bdd4, EGCB_LV }, + {0x00bdd5, 0x00bdef, EGCB_LVT }, + {0x00bdf0, 0x00bdf0, EGCB_LV }, + {0x00bdf1, 0x00be0b, EGCB_LVT }, + {0x00be0c, 0x00be0c, EGCB_LV }, + {0x00be0d, 0x00be27, EGCB_LVT }, + {0x00be28, 0x00be28, EGCB_LV }, + {0x00be29, 0x00be43, EGCB_LVT }, + {0x00be44, 0x00be44, EGCB_LV }, + {0x00be45, 0x00be5f, EGCB_LVT }, + {0x00be60, 0x00be60, EGCB_LV }, + {0x00be61, 0x00be7b, EGCB_LVT }, + {0x00be7c, 0x00be7c, EGCB_LV }, + {0x00be7d, 0x00be97, EGCB_LVT }, + {0x00be98, 0x00be98, EGCB_LV }, + {0x00be99, 0x00beb3, EGCB_LVT }, + {0x00beb4, 0x00beb4, EGCB_LV }, + {0x00beb5, 0x00becf, EGCB_LVT }, + {0x00bed0, 0x00bed0, EGCB_LV }, + {0x00bed1, 0x00beeb, EGCB_LVT }, + {0x00beec, 0x00beec, EGCB_LV }, + {0x00beed, 0x00bf07, EGCB_LVT }, + {0x00bf08, 0x00bf08, EGCB_LV }, + {0x00bf09, 0x00bf23, EGCB_LVT }, + {0x00bf24, 0x00bf24, EGCB_LV }, + {0x00bf25, 0x00bf3f, EGCB_LVT }, + {0x00bf40, 0x00bf40, EGCB_LV }, + {0x00bf41, 0x00bf5b, EGCB_LVT }, + {0x00bf5c, 0x00bf5c, EGCB_LV }, + {0x00bf5d, 0x00bf77, EGCB_LVT }, + {0x00bf78, 0x00bf78, EGCB_LV }, + {0x00bf79, 0x00bf93, EGCB_LVT }, + {0x00bf94, 0x00bf94, EGCB_LV }, + {0x00bf95, 0x00bfaf, EGCB_LVT }, + {0x00bfb0, 0x00bfb0, EGCB_LV }, + {0x00bfb1, 0x00bfcb, EGCB_LVT }, + {0x00bfcc, 0x00bfcc, EGCB_LV }, + {0x00bfcd, 0x00bfe7, EGCB_LVT }, + {0x00bfe8, 0x00bfe8, EGCB_LV }, + {0x00bfe9, 0x00c003, EGCB_LVT }, + {0x00c004, 0x00c004, EGCB_LV }, + {0x00c005, 0x00c01f, EGCB_LVT }, + {0x00c020, 0x00c020, EGCB_LV }, + {0x00c021, 0x00c03b, EGCB_LVT }, + {0x00c03c, 0x00c03c, EGCB_LV }, + {0x00c03d, 0x00c057, EGCB_LVT }, + {0x00c058, 0x00c058, EGCB_LV }, + {0x00c059, 0x00c073, EGCB_LVT }, + {0x00c074, 0x00c074, EGCB_LV }, + {0x00c075, 0x00c08f, EGCB_LVT }, + {0x00c090, 0x00c090, EGCB_LV }, + {0x00c091, 0x00c0ab, EGCB_LVT }, + {0x00c0ac, 0x00c0ac, EGCB_LV }, + {0x00c0ad, 0x00c0c7, EGCB_LVT }, + {0x00c0c8, 0x00c0c8, EGCB_LV }, + {0x00c0c9, 0x00c0e3, EGCB_LVT }, + {0x00c0e4, 0x00c0e4, EGCB_LV }, + {0x00c0e5, 0x00c0ff, EGCB_LVT }, + {0x00c100, 0x00c100, EGCB_LV }, + {0x00c101, 0x00c11b, EGCB_LVT }, + {0x00c11c, 0x00c11c, EGCB_LV }, + {0x00c11d, 0x00c137, EGCB_LVT }, + {0x00c138, 0x00c138, EGCB_LV }, + {0x00c139, 0x00c153, EGCB_LVT }, + {0x00c154, 0x00c154, EGCB_LV }, + {0x00c155, 0x00c16f, EGCB_LVT }, + {0x00c170, 0x00c170, EGCB_LV }, + {0x00c171, 0x00c18b, EGCB_LVT }, + {0x00c18c, 0x00c18c, EGCB_LV }, + {0x00c18d, 0x00c1a7, EGCB_LVT }, + {0x00c1a8, 0x00c1a8, EGCB_LV }, + {0x00c1a9, 0x00c1c3, EGCB_LVT }, + {0x00c1c4, 0x00c1c4, EGCB_LV }, + {0x00c1c5, 0x00c1df, EGCB_LVT }, + {0x00c1e0, 0x00c1e0, EGCB_LV }, + {0x00c1e1, 0x00c1fb, EGCB_LVT }, + {0x00c1fc, 0x00c1fc, EGCB_LV }, + {0x00c1fd, 0x00c217, EGCB_LVT }, + {0x00c218, 0x00c218, EGCB_LV }, + {0x00c219, 0x00c233, EGCB_LVT }, + {0x00c234, 0x00c234, EGCB_LV }, + {0x00c235, 0x00c24f, EGCB_LVT }, + {0x00c250, 0x00c250, EGCB_LV }, + {0x00c251, 0x00c26b, EGCB_LVT }, + {0x00c26c, 0x00c26c, EGCB_LV }, + {0x00c26d, 0x00c287, EGCB_LVT }, + {0x00c288, 0x00c288, EGCB_LV }, + {0x00c289, 0x00c2a3, EGCB_LVT }, + {0x00c2a4, 0x00c2a4, EGCB_LV }, + {0x00c2a5, 0x00c2bf, EGCB_LVT }, + {0x00c2c0, 0x00c2c0, EGCB_LV }, + {0x00c2c1, 0x00c2db, EGCB_LVT }, + {0x00c2dc, 0x00c2dc, EGCB_LV }, + {0x00c2dd, 0x00c2f7, EGCB_LVT }, + {0x00c2f8, 0x00c2f8, EGCB_LV }, + {0x00c2f9, 0x00c313, EGCB_LVT }, + {0x00c314, 0x00c314, EGCB_LV }, + {0x00c315, 0x00c32f, EGCB_LVT }, + {0x00c330, 0x00c330, EGCB_LV }, + {0x00c331, 0x00c34b, EGCB_LVT }, + {0x00c34c, 0x00c34c, EGCB_LV }, + {0x00c34d, 0x00c367, EGCB_LVT }, + {0x00c368, 0x00c368, EGCB_LV }, + {0x00c369, 0x00c383, EGCB_LVT }, + {0x00c384, 0x00c384, EGCB_LV }, + {0x00c385, 0x00c39f, EGCB_LVT }, + {0x00c3a0, 0x00c3a0, EGCB_LV }, + {0x00c3a1, 0x00c3bb, EGCB_LVT }, + {0x00c3bc, 0x00c3bc, EGCB_LV }, + {0x00c3bd, 0x00c3d7, EGCB_LVT }, + {0x00c3d8, 0x00c3d8, EGCB_LV }, + {0x00c3d9, 0x00c3f3, EGCB_LVT }, + {0x00c3f4, 0x00c3f4, EGCB_LV }, + {0x00c3f5, 0x00c40f, EGCB_LVT }, + {0x00c410, 0x00c410, EGCB_LV }, + {0x00c411, 0x00c42b, EGCB_LVT }, + {0x00c42c, 0x00c42c, EGCB_LV }, + {0x00c42d, 0x00c447, EGCB_LVT }, + {0x00c448, 0x00c448, EGCB_LV }, + {0x00c449, 0x00c463, EGCB_LVT }, + {0x00c464, 0x00c464, EGCB_LV }, + {0x00c465, 0x00c47f, EGCB_LVT }, + {0x00c480, 0x00c480, EGCB_LV }, + {0x00c481, 0x00c49b, EGCB_LVT }, + {0x00c49c, 0x00c49c, EGCB_LV }, + {0x00c49d, 0x00c4b7, EGCB_LVT }, + {0x00c4b8, 0x00c4b8, EGCB_LV }, + {0x00c4b9, 0x00c4d3, EGCB_LVT }, + {0x00c4d4, 0x00c4d4, EGCB_LV }, + {0x00c4d5, 0x00c4ef, EGCB_LVT }, + {0x00c4f0, 0x00c4f0, EGCB_LV }, + {0x00c4f1, 0x00c50b, EGCB_LVT }, + {0x00c50c, 0x00c50c, EGCB_LV }, + {0x00c50d, 0x00c527, EGCB_LVT }, + {0x00c528, 0x00c528, EGCB_LV }, + {0x00c529, 0x00c543, EGCB_LVT }, + {0x00c544, 0x00c544, EGCB_LV }, + {0x00c545, 0x00c55f, EGCB_LVT }, + {0x00c560, 0x00c560, EGCB_LV }, + {0x00c561, 0x00c57b, EGCB_LVT }, + {0x00c57c, 0x00c57c, EGCB_LV }, + {0x00c57d, 0x00c597, EGCB_LVT }, + {0x00c598, 0x00c598, EGCB_LV }, + {0x00c599, 0x00c5b3, EGCB_LVT }, + {0x00c5b4, 0x00c5b4, EGCB_LV }, + {0x00c5b5, 0x00c5cf, EGCB_LVT }, + {0x00c5d0, 0x00c5d0, EGCB_LV }, + {0x00c5d1, 0x00c5eb, EGCB_LVT }, + {0x00c5ec, 0x00c5ec, EGCB_LV }, + {0x00c5ed, 0x00c607, EGCB_LVT }, + {0x00c608, 0x00c608, EGCB_LV }, + {0x00c609, 0x00c623, EGCB_LVT }, + {0x00c624, 0x00c624, EGCB_LV }, + {0x00c625, 0x00c63f, EGCB_LVT }, + {0x00c640, 0x00c640, EGCB_LV }, + {0x00c641, 0x00c65b, EGCB_LVT }, + {0x00c65c, 0x00c65c, EGCB_LV }, + {0x00c65d, 0x00c677, EGCB_LVT }, + {0x00c678, 0x00c678, EGCB_LV }, + {0x00c679, 0x00c693, EGCB_LVT }, + {0x00c694, 0x00c694, EGCB_LV }, + {0x00c695, 0x00c6af, EGCB_LVT }, + {0x00c6b0, 0x00c6b0, EGCB_LV }, + {0x00c6b1, 0x00c6cb, EGCB_LVT }, + {0x00c6cc, 0x00c6cc, EGCB_LV }, + {0x00c6cd, 0x00c6e7, EGCB_LVT }, + {0x00c6e8, 0x00c6e8, EGCB_LV }, + {0x00c6e9, 0x00c703, EGCB_LVT }, + {0x00c704, 0x00c704, EGCB_LV }, + {0x00c705, 0x00c71f, EGCB_LVT }, + {0x00c720, 0x00c720, EGCB_LV }, + {0x00c721, 0x00c73b, EGCB_LVT }, + {0x00c73c, 0x00c73c, EGCB_LV }, + {0x00c73d, 0x00c757, EGCB_LVT }, + {0x00c758, 0x00c758, EGCB_LV }, + {0x00c759, 0x00c773, EGCB_LVT }, + {0x00c774, 0x00c774, EGCB_LV }, + {0x00c775, 0x00c78f, EGCB_LVT }, + {0x00c790, 0x00c790, EGCB_LV }, + {0x00c791, 0x00c7ab, EGCB_LVT }, + {0x00c7ac, 0x00c7ac, EGCB_LV }, + {0x00c7ad, 0x00c7c7, EGCB_LVT }, + {0x00c7c8, 0x00c7c8, EGCB_LV }, + {0x00c7c9, 0x00c7e3, EGCB_LVT }, + {0x00c7e4, 0x00c7e4, EGCB_LV }, + {0x00c7e5, 0x00c7ff, EGCB_LVT }, + {0x00c800, 0x00c800, EGCB_LV }, + {0x00c801, 0x00c81b, EGCB_LVT }, + {0x00c81c, 0x00c81c, EGCB_LV }, + {0x00c81d, 0x00c837, EGCB_LVT }, + {0x00c838, 0x00c838, EGCB_LV }, + {0x00c839, 0x00c853, EGCB_LVT }, + {0x00c854, 0x00c854, EGCB_LV }, + {0x00c855, 0x00c86f, EGCB_LVT }, + {0x00c870, 0x00c870, EGCB_LV }, + {0x00c871, 0x00c88b, EGCB_LVT }, + {0x00c88c, 0x00c88c, EGCB_LV }, + {0x00c88d, 0x00c8a7, EGCB_LVT }, + {0x00c8a8, 0x00c8a8, EGCB_LV }, + {0x00c8a9, 0x00c8c3, EGCB_LVT }, + {0x00c8c4, 0x00c8c4, EGCB_LV }, + {0x00c8c5, 0x00c8df, EGCB_LVT }, + {0x00c8e0, 0x00c8e0, EGCB_LV }, + {0x00c8e1, 0x00c8fb, EGCB_LVT }, + {0x00c8fc, 0x00c8fc, EGCB_LV }, + {0x00c8fd, 0x00c917, EGCB_LVT }, + {0x00c918, 0x00c918, EGCB_LV }, + {0x00c919, 0x00c933, EGCB_LVT }, + {0x00c934, 0x00c934, EGCB_LV }, + {0x00c935, 0x00c94f, EGCB_LVT }, + {0x00c950, 0x00c950, EGCB_LV }, + {0x00c951, 0x00c96b, EGCB_LVT }, + {0x00c96c, 0x00c96c, EGCB_LV }, + {0x00c96d, 0x00c987, EGCB_LVT }, + {0x00c988, 0x00c988, EGCB_LV }, + {0x00c989, 0x00c9a3, EGCB_LVT }, + {0x00c9a4, 0x00c9a4, EGCB_LV }, + {0x00c9a5, 0x00c9bf, EGCB_LVT }, + {0x00c9c0, 0x00c9c0, EGCB_LV }, + {0x00c9c1, 0x00c9db, EGCB_LVT }, + {0x00c9dc, 0x00c9dc, EGCB_LV }, + {0x00c9dd, 0x00c9f7, EGCB_LVT }, + {0x00c9f8, 0x00c9f8, EGCB_LV }, + {0x00c9f9, 0x00ca13, EGCB_LVT }, + {0x00ca14, 0x00ca14, EGCB_LV }, + {0x00ca15, 0x00ca2f, EGCB_LVT }, + {0x00ca30, 0x00ca30, EGCB_LV }, + {0x00ca31, 0x00ca4b, EGCB_LVT }, + {0x00ca4c, 0x00ca4c, EGCB_LV }, + {0x00ca4d, 0x00ca67, EGCB_LVT }, + {0x00ca68, 0x00ca68, EGCB_LV }, + {0x00ca69, 0x00ca83, EGCB_LVT }, + {0x00ca84, 0x00ca84, EGCB_LV }, + {0x00ca85, 0x00ca9f, EGCB_LVT }, + {0x00caa0, 0x00caa0, EGCB_LV }, + {0x00caa1, 0x00cabb, EGCB_LVT }, + {0x00cabc, 0x00cabc, EGCB_LV }, + {0x00cabd, 0x00cad7, EGCB_LVT }, + {0x00cad8, 0x00cad8, EGCB_LV }, + {0x00cad9, 0x00caf3, EGCB_LVT }, + {0x00caf4, 0x00caf4, EGCB_LV }, + {0x00caf5, 0x00cb0f, EGCB_LVT }, + {0x00cb10, 0x00cb10, EGCB_LV }, + {0x00cb11, 0x00cb2b, EGCB_LVT }, + {0x00cb2c, 0x00cb2c, EGCB_LV }, + {0x00cb2d, 0x00cb47, EGCB_LVT }, + {0x00cb48, 0x00cb48, EGCB_LV }, + {0x00cb49, 0x00cb63, EGCB_LVT }, + {0x00cb64, 0x00cb64, EGCB_LV }, + {0x00cb65, 0x00cb7f, EGCB_LVT }, + {0x00cb80, 0x00cb80, EGCB_LV }, + {0x00cb81, 0x00cb9b, EGCB_LVT }, + {0x00cb9c, 0x00cb9c, EGCB_LV }, + {0x00cb9d, 0x00cbb7, EGCB_LVT }, + {0x00cbb8, 0x00cbb8, EGCB_LV }, + {0x00cbb9, 0x00cbd3, EGCB_LVT }, + {0x00cbd4, 0x00cbd4, EGCB_LV }, + {0x00cbd5, 0x00cbef, EGCB_LVT }, + {0x00cbf0, 0x00cbf0, EGCB_LV }, + {0x00cbf1, 0x00cc0b, EGCB_LVT }, + {0x00cc0c, 0x00cc0c, EGCB_LV }, + {0x00cc0d, 0x00cc27, EGCB_LVT }, + {0x00cc28, 0x00cc28, EGCB_LV }, + {0x00cc29, 0x00cc43, EGCB_LVT }, + {0x00cc44, 0x00cc44, EGCB_LV }, + {0x00cc45, 0x00cc5f, EGCB_LVT }, + {0x00cc60, 0x00cc60, EGCB_LV }, + {0x00cc61, 0x00cc7b, EGCB_LVT }, + {0x00cc7c, 0x00cc7c, EGCB_LV }, + {0x00cc7d, 0x00cc97, EGCB_LVT }, + {0x00cc98, 0x00cc98, EGCB_LV }, + {0x00cc99, 0x00ccb3, EGCB_LVT }, + {0x00ccb4, 0x00ccb4, EGCB_LV }, + {0x00ccb5, 0x00cccf, EGCB_LVT }, + {0x00ccd0, 0x00ccd0, EGCB_LV }, + {0x00ccd1, 0x00cceb, EGCB_LVT }, + {0x00ccec, 0x00ccec, EGCB_LV }, + {0x00cced, 0x00cd07, EGCB_LVT }, + {0x00cd08, 0x00cd08, EGCB_LV }, + {0x00cd09, 0x00cd23, EGCB_LVT }, + {0x00cd24, 0x00cd24, EGCB_LV }, + {0x00cd25, 0x00cd3f, EGCB_LVT }, + {0x00cd40, 0x00cd40, EGCB_LV }, + {0x00cd41, 0x00cd5b, EGCB_LVT }, + {0x00cd5c, 0x00cd5c, EGCB_LV }, + {0x00cd5d, 0x00cd77, EGCB_LVT }, + {0x00cd78, 0x00cd78, EGCB_LV }, + {0x00cd79, 0x00cd93, EGCB_LVT }, + {0x00cd94, 0x00cd94, EGCB_LV }, + {0x00cd95, 0x00cdaf, EGCB_LVT }, + {0x00cdb0, 0x00cdb0, EGCB_LV }, + {0x00cdb1, 0x00cdcb, EGCB_LVT }, + {0x00cdcc, 0x00cdcc, EGCB_LV }, + {0x00cdcd, 0x00cde7, EGCB_LVT }, + {0x00cde8, 0x00cde8, EGCB_LV }, + {0x00cde9, 0x00ce03, EGCB_LVT }, + {0x00ce04, 0x00ce04, EGCB_LV }, + {0x00ce05, 0x00ce1f, EGCB_LVT }, + {0x00ce20, 0x00ce20, EGCB_LV }, + {0x00ce21, 0x00ce3b, EGCB_LVT }, + {0x00ce3c, 0x00ce3c, EGCB_LV }, + {0x00ce3d, 0x00ce57, EGCB_LVT }, + {0x00ce58, 0x00ce58, EGCB_LV }, + {0x00ce59, 0x00ce73, EGCB_LVT }, + {0x00ce74, 0x00ce74, EGCB_LV }, + {0x00ce75, 0x00ce8f, EGCB_LVT }, + {0x00ce90, 0x00ce90, EGCB_LV }, + {0x00ce91, 0x00ceab, EGCB_LVT }, + {0x00ceac, 0x00ceac, EGCB_LV }, + {0x00cead, 0x00cec7, EGCB_LVT }, + {0x00cec8, 0x00cec8, EGCB_LV }, + {0x00cec9, 0x00cee3, EGCB_LVT }, + {0x00cee4, 0x00cee4, EGCB_LV }, + {0x00cee5, 0x00ceff, EGCB_LVT }, + {0x00cf00, 0x00cf00, EGCB_LV }, + {0x00cf01, 0x00cf1b, EGCB_LVT }, + {0x00cf1c, 0x00cf1c, EGCB_LV }, + {0x00cf1d, 0x00cf37, EGCB_LVT }, + {0x00cf38, 0x00cf38, EGCB_LV }, + {0x00cf39, 0x00cf53, EGCB_LVT }, + {0x00cf54, 0x00cf54, EGCB_LV }, + {0x00cf55, 0x00cf6f, EGCB_LVT }, + {0x00cf70, 0x00cf70, EGCB_LV }, + {0x00cf71, 0x00cf8b, EGCB_LVT }, + {0x00cf8c, 0x00cf8c, EGCB_LV }, + {0x00cf8d, 0x00cfa7, EGCB_LVT }, + {0x00cfa8, 0x00cfa8, EGCB_LV }, + {0x00cfa9, 0x00cfc3, EGCB_LVT }, + {0x00cfc4, 0x00cfc4, EGCB_LV }, + {0x00cfc5, 0x00cfdf, EGCB_LVT }, + {0x00cfe0, 0x00cfe0, EGCB_LV }, + {0x00cfe1, 0x00cffb, EGCB_LVT }, + {0x00cffc, 0x00cffc, EGCB_LV }, + {0x00cffd, 0x00d017, EGCB_LVT }, + {0x00d018, 0x00d018, EGCB_LV }, + {0x00d019, 0x00d033, EGCB_LVT }, + {0x00d034, 0x00d034, EGCB_LV }, + {0x00d035, 0x00d04f, EGCB_LVT }, + {0x00d050, 0x00d050, EGCB_LV }, + {0x00d051, 0x00d06b, EGCB_LVT }, + {0x00d06c, 0x00d06c, EGCB_LV }, + {0x00d06d, 0x00d087, EGCB_LVT }, + {0x00d088, 0x00d088, EGCB_LV }, + {0x00d089, 0x00d0a3, EGCB_LVT }, + {0x00d0a4, 0x00d0a4, EGCB_LV }, + {0x00d0a5, 0x00d0bf, EGCB_LVT }, + {0x00d0c0, 0x00d0c0, EGCB_LV }, + {0x00d0c1, 0x00d0db, EGCB_LVT }, + {0x00d0dc, 0x00d0dc, EGCB_LV }, + {0x00d0dd, 0x00d0f7, EGCB_LVT }, + {0x00d0f8, 0x00d0f8, EGCB_LV }, + {0x00d0f9, 0x00d113, EGCB_LVT }, + {0x00d114, 0x00d114, EGCB_LV }, + {0x00d115, 0x00d12f, EGCB_LVT }, + {0x00d130, 0x00d130, EGCB_LV }, + {0x00d131, 0x00d14b, EGCB_LVT }, + {0x00d14c, 0x00d14c, EGCB_LV }, + {0x00d14d, 0x00d167, EGCB_LVT }, + {0x00d168, 0x00d168, EGCB_LV }, + {0x00d169, 0x00d183, EGCB_LVT }, + {0x00d184, 0x00d184, EGCB_LV }, + {0x00d185, 0x00d19f, EGCB_LVT }, + {0x00d1a0, 0x00d1a0, EGCB_LV }, + {0x00d1a1, 0x00d1bb, EGCB_LVT }, + {0x00d1bc, 0x00d1bc, EGCB_LV }, + {0x00d1bd, 0x00d1d7, EGCB_LVT }, + {0x00d1d8, 0x00d1d8, EGCB_LV }, + {0x00d1d9, 0x00d1f3, EGCB_LVT }, + {0x00d1f4, 0x00d1f4, EGCB_LV }, + {0x00d1f5, 0x00d20f, EGCB_LVT }, + {0x00d210, 0x00d210, EGCB_LV }, + {0x00d211, 0x00d22b, EGCB_LVT }, + {0x00d22c, 0x00d22c, EGCB_LV }, + {0x00d22d, 0x00d247, EGCB_LVT }, + {0x00d248, 0x00d248, EGCB_LV }, + {0x00d249, 0x00d263, EGCB_LVT }, + {0x00d264, 0x00d264, EGCB_LV }, + {0x00d265, 0x00d27f, EGCB_LVT }, + {0x00d280, 0x00d280, EGCB_LV }, + {0x00d281, 0x00d29b, EGCB_LVT }, + {0x00d29c, 0x00d29c, EGCB_LV }, + {0x00d29d, 0x00d2b7, EGCB_LVT }, + {0x00d2b8, 0x00d2b8, EGCB_LV }, + {0x00d2b9, 0x00d2d3, EGCB_LVT }, + {0x00d2d4, 0x00d2d4, EGCB_LV }, + {0x00d2d5, 0x00d2ef, EGCB_LVT }, + {0x00d2f0, 0x00d2f0, EGCB_LV }, + {0x00d2f1, 0x00d30b, EGCB_LVT }, + {0x00d30c, 0x00d30c, EGCB_LV }, + {0x00d30d, 0x00d327, EGCB_LVT }, + {0x00d328, 0x00d328, EGCB_LV }, + {0x00d329, 0x00d343, EGCB_LVT }, + {0x00d344, 0x00d344, EGCB_LV }, + {0x00d345, 0x00d35f, EGCB_LVT }, + {0x00d360, 0x00d360, EGCB_LV }, + {0x00d361, 0x00d37b, EGCB_LVT }, + {0x00d37c, 0x00d37c, EGCB_LV }, + {0x00d37d, 0x00d397, EGCB_LVT }, + {0x00d398, 0x00d398, EGCB_LV }, + {0x00d399, 0x00d3b3, EGCB_LVT }, + {0x00d3b4, 0x00d3b4, EGCB_LV }, + {0x00d3b5, 0x00d3cf, EGCB_LVT }, + {0x00d3d0, 0x00d3d0, EGCB_LV }, + {0x00d3d1, 0x00d3eb, EGCB_LVT }, + {0x00d3ec, 0x00d3ec, EGCB_LV }, + {0x00d3ed, 0x00d407, EGCB_LVT }, + {0x00d408, 0x00d408, EGCB_LV }, + {0x00d409, 0x00d423, EGCB_LVT }, + {0x00d424, 0x00d424, EGCB_LV }, + {0x00d425, 0x00d43f, EGCB_LVT }, + {0x00d440, 0x00d440, EGCB_LV }, + {0x00d441, 0x00d45b, EGCB_LVT }, + {0x00d45c, 0x00d45c, EGCB_LV }, + {0x00d45d, 0x00d477, EGCB_LVT }, + {0x00d478, 0x00d478, EGCB_LV }, + {0x00d479, 0x00d493, EGCB_LVT }, + {0x00d494, 0x00d494, EGCB_LV }, + {0x00d495, 0x00d4af, EGCB_LVT }, + {0x00d4b0, 0x00d4b0, EGCB_LV }, + {0x00d4b1, 0x00d4cb, EGCB_LVT }, + {0x00d4cc, 0x00d4cc, EGCB_LV }, + {0x00d4cd, 0x00d4e7, EGCB_LVT }, + {0x00d4e8, 0x00d4e8, EGCB_LV }, + {0x00d4e9, 0x00d503, EGCB_LVT }, + {0x00d504, 0x00d504, EGCB_LV }, + {0x00d505, 0x00d51f, EGCB_LVT }, + {0x00d520, 0x00d520, EGCB_LV }, + {0x00d521, 0x00d53b, EGCB_LVT }, + {0x00d53c, 0x00d53c, EGCB_LV }, + {0x00d53d, 0x00d557, EGCB_LVT }, + {0x00d558, 0x00d558, EGCB_LV }, + {0x00d559, 0x00d573, EGCB_LVT }, + {0x00d574, 0x00d574, EGCB_LV }, + {0x00d575, 0x00d58f, EGCB_LVT }, + {0x00d590, 0x00d590, EGCB_LV }, + {0x00d591, 0x00d5ab, EGCB_LVT }, + {0x00d5ac, 0x00d5ac, EGCB_LV }, + {0x00d5ad, 0x00d5c7, EGCB_LVT }, + {0x00d5c8, 0x00d5c8, EGCB_LV }, + {0x00d5c9, 0x00d5e3, EGCB_LVT }, + {0x00d5e4, 0x00d5e4, EGCB_LV }, + {0x00d5e5, 0x00d5ff, EGCB_LVT }, + {0x00d600, 0x00d600, EGCB_LV }, + {0x00d601, 0x00d61b, EGCB_LVT }, + {0x00d61c, 0x00d61c, EGCB_LV }, + {0x00d61d, 0x00d637, EGCB_LVT }, + {0x00d638, 0x00d638, EGCB_LV }, + {0x00d639, 0x00d653, EGCB_LVT }, + {0x00d654, 0x00d654, EGCB_LV }, + {0x00d655, 0x00d66f, EGCB_LVT }, + {0x00d670, 0x00d670, EGCB_LV }, + {0x00d671, 0x00d68b, EGCB_LVT }, + {0x00d68c, 0x00d68c, EGCB_LV }, + {0x00d68d, 0x00d6a7, EGCB_LVT }, + {0x00d6a8, 0x00d6a8, EGCB_LV }, + {0x00d6a9, 0x00d6c3, EGCB_LVT }, + {0x00d6c4, 0x00d6c4, EGCB_LV }, + {0x00d6c5, 0x00d6df, EGCB_LVT }, + {0x00d6e0, 0x00d6e0, EGCB_LV }, + {0x00d6e1, 0x00d6fb, EGCB_LVT }, + {0x00d6fc, 0x00d6fc, EGCB_LV }, + {0x00d6fd, 0x00d717, EGCB_LVT }, + {0x00d718, 0x00d718, EGCB_LV }, + {0x00d719, 0x00d733, EGCB_LVT }, + {0x00d734, 0x00d734, EGCB_LV }, + {0x00d735, 0x00d74f, EGCB_LVT }, + {0x00d750, 0x00d750, EGCB_LV }, + {0x00d751, 0x00d76b, EGCB_LVT }, + {0x00d76c, 0x00d76c, EGCB_LV }, + {0x00d76d, 0x00d787, EGCB_LVT }, + {0x00d788, 0x00d788, EGCB_LV }, + {0x00d789, 0x00d7a3, EGCB_LVT }, + {0x00d7b0, 0x00d7c6, EGCB_V }, + {0x00d7cb, 0x00d7fb, EGCB_T }, + {0x00d800, 0x00dfff, EGCB_Control }, + {0x00fb1e, 0x00fb1e, EGCB_Extend }, + {0x00fe00, 0x00fe0f, EGCB_Extend }, + {0x00fe20, 0x00fe2f, EGCB_Extend }, + {0x00feff, 0x00feff, EGCB_Control }, + {0x00ff9e, 0x00ff9f, EGCB_Extend }, + {0x00fff0, 0x00fffb, EGCB_Control }, + {0x0101fd, 0x0101fd, EGCB_Extend }, + {0x0102e0, 0x0102e0, EGCB_Extend }, + {0x010376, 0x01037a, EGCB_Extend }, + {0x010a01, 0x010a03, EGCB_Extend }, + {0x010a05, 0x010a06, EGCB_Extend }, + {0x010a0c, 0x010a0f, EGCB_Extend }, + {0x010a38, 0x010a3a, EGCB_Extend }, + {0x010a3f, 0x010a3f, EGCB_Extend }, + {0x010ae5, 0x010ae6, EGCB_Extend }, + {0x010d24, 0x010d27, EGCB_Extend }, + {0x010f46, 0x010f50, EGCB_Extend }, + {0x011000, 0x011000, EGCB_SpacingMark }, + {0x011001, 0x011001, EGCB_Extend }, + {0x011002, 0x011002, EGCB_SpacingMark }, + {0x011038, 0x011046, EGCB_Extend }, + {0x01107f, 0x011081, EGCB_Extend }, + {0x011082, 0x011082, EGCB_SpacingMark }, + {0x0110b0, 0x0110b2, EGCB_SpacingMark }, + {0x0110b3, 0x0110b6, EGCB_Extend }, + {0x0110b7, 0x0110b8, EGCB_SpacingMark }, + {0x0110b9, 0x0110ba, EGCB_Extend }, + {0x0110bd, 0x0110bd, EGCB_Prepend }, + {0x0110cd, 0x0110cd, EGCB_Prepend }, + {0x011100, 0x011102, EGCB_Extend }, + {0x011127, 0x01112b, EGCB_Extend }, + {0x01112c, 0x01112c, EGCB_SpacingMark }, + {0x01112d, 0x011134, EGCB_Extend }, + {0x011145, 0x011146, EGCB_SpacingMark }, + {0x011173, 0x011173, EGCB_Extend }, + {0x011180, 0x011181, EGCB_Extend }, + {0x011182, 0x011182, EGCB_SpacingMark }, + {0x0111b3, 0x0111b5, EGCB_SpacingMark }, + {0x0111b6, 0x0111be, EGCB_Extend }, + {0x0111bf, 0x0111c0, EGCB_SpacingMark }, + {0x0111c2, 0x0111c3, EGCB_Prepend }, + {0x0111c9, 0x0111cc, EGCB_Extend }, + {0x01122c, 0x01122e, EGCB_SpacingMark }, + {0x01122f, 0x011231, EGCB_Extend }, + {0x011232, 0x011233, EGCB_SpacingMark }, + {0x011234, 0x011234, EGCB_Extend }, + {0x011235, 0x011235, EGCB_SpacingMark }, + {0x011236, 0x011237, EGCB_Extend }, + {0x01123e, 0x01123e, EGCB_Extend }, + {0x0112df, 0x0112df, EGCB_Extend }, + {0x0112e0, 0x0112e2, EGCB_SpacingMark }, + {0x0112e3, 0x0112ea, EGCB_Extend }, + {0x011300, 0x011301, EGCB_Extend }, + {0x011302, 0x011303, EGCB_SpacingMark }, + {0x01133b, 0x01133c, EGCB_Extend }, + {0x01133e, 0x01133e, EGCB_Extend }, + {0x01133f, 0x01133f, EGCB_SpacingMark }, + {0x011340, 0x011340, EGCB_Extend }, + {0x011341, 0x011344, EGCB_SpacingMark }, + {0x011347, 0x011348, EGCB_SpacingMark }, + {0x01134b, 0x01134d, EGCB_SpacingMark }, + {0x011357, 0x011357, EGCB_Extend }, + {0x011362, 0x011363, EGCB_SpacingMark }, + {0x011366, 0x01136c, EGCB_Extend }, + {0x011370, 0x011374, EGCB_Extend }, + {0x011435, 0x011437, EGCB_SpacingMark }, + {0x011438, 0x01143f, EGCB_Extend }, + {0x011440, 0x011441, EGCB_SpacingMark }, + {0x011442, 0x011444, EGCB_Extend }, + {0x011445, 0x011445, EGCB_SpacingMark }, + {0x011446, 0x011446, EGCB_Extend }, + {0x01145e, 0x01145e, EGCB_Extend }, + {0x0114b0, 0x0114b0, EGCB_Extend }, + {0x0114b1, 0x0114b2, EGCB_SpacingMark }, + {0x0114b3, 0x0114b8, EGCB_Extend }, + {0x0114b9, 0x0114b9, EGCB_SpacingMark }, + {0x0114ba, 0x0114ba, EGCB_Extend }, + {0x0114bb, 0x0114bc, EGCB_SpacingMark }, + {0x0114bd, 0x0114bd, EGCB_Extend }, + {0x0114be, 0x0114be, EGCB_SpacingMark }, + {0x0114bf, 0x0114c0, EGCB_Extend }, + {0x0114c1, 0x0114c1, EGCB_SpacingMark }, + {0x0114c2, 0x0114c3, EGCB_Extend }, + {0x0115af, 0x0115af, EGCB_Extend }, + {0x0115b0, 0x0115b1, EGCB_SpacingMark }, + {0x0115b2, 0x0115b5, EGCB_Extend }, + {0x0115b8, 0x0115bb, EGCB_SpacingMark }, + {0x0115bc, 0x0115bd, EGCB_Extend }, + {0x0115be, 0x0115be, EGCB_SpacingMark }, + {0x0115bf, 0x0115c0, EGCB_Extend }, + {0x0115dc, 0x0115dd, EGCB_Extend }, + {0x011630, 0x011632, EGCB_SpacingMark }, + {0x011633, 0x01163a, EGCB_Extend }, + {0x01163b, 0x01163c, EGCB_SpacingMark }, + {0x01163d, 0x01163d, EGCB_Extend }, + {0x01163e, 0x01163e, EGCB_SpacingMark }, + {0x01163f, 0x011640, EGCB_Extend }, + {0x0116ab, 0x0116ab, EGCB_Extend }, + {0x0116ac, 0x0116ac, EGCB_SpacingMark }, + {0x0116ad, 0x0116ad, EGCB_Extend }, + {0x0116ae, 0x0116af, EGCB_SpacingMark }, + {0x0116b0, 0x0116b5, EGCB_Extend }, + {0x0116b6, 0x0116b6, EGCB_SpacingMark }, + {0x0116b7, 0x0116b7, EGCB_Extend }, + {0x01171d, 0x01171f, EGCB_Extend }, + {0x011720, 0x011721, EGCB_SpacingMark }, + {0x011722, 0x011725, EGCB_Extend }, + {0x011726, 0x011726, EGCB_SpacingMark }, + {0x011727, 0x01172b, EGCB_Extend }, + {0x01182c, 0x01182e, EGCB_SpacingMark }, + {0x01182f, 0x011837, EGCB_Extend }, + {0x011838, 0x011838, EGCB_SpacingMark }, + {0x011839, 0x01183a, EGCB_Extend }, + {0x011a01, 0x011a0a, EGCB_Extend }, + {0x011a33, 0x011a38, EGCB_Extend }, + {0x011a39, 0x011a39, EGCB_SpacingMark }, + {0x011a3a, 0x011a3a, EGCB_Prepend }, + {0x011a3b, 0x011a3e, EGCB_Extend }, + {0x011a47, 0x011a47, EGCB_Extend }, + {0x011a51, 0x011a56, EGCB_Extend }, + {0x011a57, 0x011a58, EGCB_SpacingMark }, + {0x011a59, 0x011a5b, EGCB_Extend }, + {0x011a86, 0x011a89, EGCB_Prepend }, + {0x011a8a, 0x011a96, EGCB_Extend }, + {0x011a97, 0x011a97, EGCB_SpacingMark }, + {0x011a98, 0x011a99, EGCB_Extend }, + {0x011c2f, 0x011c2f, EGCB_SpacingMark }, + {0x011c30, 0x011c36, EGCB_Extend }, + {0x011c38, 0x011c3d, EGCB_Extend }, + {0x011c3e, 0x011c3e, EGCB_SpacingMark }, + {0x011c3f, 0x011c3f, EGCB_Extend }, + {0x011c92, 0x011ca7, EGCB_Extend }, + {0x011ca9, 0x011ca9, EGCB_SpacingMark }, + {0x011caa, 0x011cb0, EGCB_Extend }, + {0x011cb1, 0x011cb1, EGCB_SpacingMark }, + {0x011cb2, 0x011cb3, EGCB_Extend }, + {0x011cb4, 0x011cb4, EGCB_SpacingMark }, + {0x011cb5, 0x011cb6, EGCB_Extend }, + {0x011d31, 0x011d36, EGCB_Extend }, + {0x011d3a, 0x011d3a, EGCB_Extend }, + {0x011d3c, 0x011d3d, EGCB_Extend }, + {0x011d3f, 0x011d45, EGCB_Extend }, + {0x011d46, 0x011d46, EGCB_Prepend }, + {0x011d47, 0x011d47, EGCB_Extend }, + {0x011d8a, 0x011d8e, EGCB_SpacingMark }, + {0x011d90, 0x011d91, EGCB_Extend }, + {0x011d93, 0x011d94, EGCB_SpacingMark }, + {0x011d95, 0x011d95, EGCB_Extend }, + {0x011d96, 0x011d96, EGCB_SpacingMark }, + {0x011d97, 0x011d97, EGCB_Extend }, + {0x011ef3, 0x011ef4, EGCB_Extend }, + {0x011ef5, 0x011ef6, EGCB_SpacingMark }, + {0x016af0, 0x016af4, EGCB_Extend }, + {0x016b30, 0x016b36, EGCB_Extend }, + {0x016f51, 0x016f7e, EGCB_SpacingMark }, + {0x016f8f, 0x016f92, EGCB_Extend }, + {0x01bc9d, 0x01bc9e, EGCB_Extend }, + {0x01bca0, 0x01bca3, EGCB_Control }, + {0x01d165, 0x01d165, EGCB_Extend }, + {0x01d166, 0x01d166, EGCB_SpacingMark }, + {0x01d167, 0x01d169, EGCB_Extend }, + {0x01d16d, 0x01d16d, EGCB_SpacingMark }, + {0x01d16e, 0x01d172, EGCB_Extend }, + {0x01d173, 0x01d17a, EGCB_Control }, + {0x01d17b, 0x01d182, EGCB_Extend }, + {0x01d185, 0x01d18b, EGCB_Extend }, + {0x01d1aa, 0x01d1ad, EGCB_Extend }, + {0x01d242, 0x01d244, EGCB_Extend }, + {0x01da00, 0x01da36, EGCB_Extend }, + {0x01da3b, 0x01da6c, EGCB_Extend }, + {0x01da75, 0x01da75, EGCB_Extend }, + {0x01da84, 0x01da84, EGCB_Extend }, + {0x01da9b, 0x01da9f, EGCB_Extend }, + {0x01daa1, 0x01daaf, EGCB_Extend }, + {0x01e000, 0x01e006, EGCB_Extend }, + {0x01e008, 0x01e018, EGCB_Extend }, + {0x01e01b, 0x01e021, EGCB_Extend }, + {0x01e023, 0x01e024, EGCB_Extend }, + {0x01e026, 0x01e02a, EGCB_Extend }, + {0x01e8d0, 0x01e8d6, EGCB_Extend }, + {0x01e944, 0x01e94a, EGCB_Extend }, + {0x01f1e6, 0x01f1ff, EGCB_Regional_Indicator }, + {0x01f3fb, 0x01f3ff, EGCB_Extend }, + {0x0e0000, 0x0e001f, EGCB_Control }, + {0x0e0020, 0x0e007f, EGCB_Extend }, + {0x0e0080, 0x0e00ff, EGCB_Control }, + {0x0e0100, 0x0e01ef, EGCB_Extend }, + {0x0e01f0, 0x0e0fff, EGCB_Control } +}; diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_fold1_key.c b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_fold1_key.c new file mode 100644 index 0000000000..553f0e748c --- /dev/null +++ b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_fold1_key.c @@ -0,0 +1,2992 @@ +/* This file was converted by gperf_fold_key_conv.py + from gperf output file. */ +/* ANSI-C code produced by gperf version 3.1 */ +/* Command-line: /usr/bin/gperf -n -C -T -c -t -j1 -L ANSI-C -F,-1 -N onigenc_unicode_fold1_key unicode_fold1_key.gperf */ +/* Computed positions: -k'1-3' */ + + + +/* This gperf source file was generated by make_unicode_fold_data.py */ + +/*- + * Copyright (c) 2017-2018 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 +#include "regenc.h" + +#define TOTAL_KEYWORDS 1346 +#define MIN_WORD_LENGTH 3 +#define MAX_WORD_LENGTH 3 +#define MIN_HASH_VALUE 3 +#define MAX_HASH_VALUE 1765 +/* maximum key range = 1763, duplicates = 0 */ + +#ifdef __GNUC__ +__inline +#else +#ifdef __cplusplus +inline +#endif +#endif +/*ARGSUSED*/ +static unsigned int +hash(OnigCodePoint codes[]) +{ + static const unsigned short asso_values[] = + { + 4, 2, 147, 16, 1, 13, 1233, 682, 1225, 643, + 1208, 95, 9, 89, 1391, 82, 8, 80, 1383, 6, + 1201, 638, 1191, 602, 151, 75, 1377, 68, 1374, 464, + 0, 11, 1369, 3, 1352, 278, 23, 424, 660, 320, + 640, 20, 635, 34, 5, 29, 860, 27, 630, 0, + 854, 1352, 870, 1336, 470, 1322, 623, 1319, 610, 230, + 1184, 1309, 1159, 779, 1042, 980, 836, 844, 456, 597, + 285, 158, 590, 477, 583, 42, 576, 1442, 447, 1119, + 440, 922, 426, 1434, 400, 1433, 327, 1428, 567, 1417, + 386, 1443, 458, 856, 704, 1435, 1010, 66, 232, 413, + 204, 1417, 226, 1412, 190, 1095, 379, 1253, 198, 1211, + 175, 209, 561, 362, 528, 1296, 257, 1169, 240, 1291, + 508, 1163, 484, 1228, 699, 735, 831, 488, 679, 513, + 420, 639, 1148, 83, 683, 806, 1152, 77, 1170, 537, + 1213, 3, 1285, 166, 1410, 1766, 1394, 1766, 1206, 460, + 757, 1766, 367, 1766, 1339, 1766, 908, 57, 1321, 1766, + 384, 345, 686, 52, 1145, 40, 218, 180, 1135, 33, + 1292, 276, 1282, 14, 1408, 719, 1128, 701, 1275, 129, + 1116, 610, 1255, 1343, 1109, 874, 1097, 448, 823, 346, + 877, 181, 1089, 0, 1077, 786, 1080, 768, 1068, 1180, + 1060, 1056, 1048, 798, 811, 177, 1045, 1022, 1030, 993, + 1020, 789, 353, 990, 548, 982, 517, 970, 334, 765, + 166, 753, 138, 743, 100, 963, 87, 720, 49, 957, + 75, 951, 62, 411, 126, 945, 113, 1266, 317, 935, + 304, 925, 293, 1244, 714, 912, 275, 490, 263, 469, + 395, 1297, 896, 208, 887, 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)]; +} + +int +onigenc_unicode_fold1_key(OnigCodePoint codes[]) +{ + static const short int wordlist[] = + { + -1, -1, -1, + + 3408, + + 1900, + + 1861, + + 210, + + 171, + + 3393, + + 1921, + + 1687, + + 231, + + 1879, + + 1873, + + 189, + + 183, + + 2234, + + 1312, + + 1273, + + 165, + + 789, + + 2255, + + 1333, + + 1591, + + 1627, + + 1291, + + 1285, + + 1909, + + 2237, + + 219, + + 3402, + + 2231, + + 3396, + + 2975, + + 2897, + + 2291, + + 2984, + + 3390, + + 2276, + + 2942, + + 1321, + + 2933, + + 2921, + + 1615, + + 2978, + + 3486, + + 2900, + + 971, + + 273, + + 2894, + + 1603, + + 2642, + + 3537, + + 2183, + + 1225, + + 459, + + 2993, + + 80, + + 2879, + + 1792, + + 3717, + + 1510, + + 1597, + + 378, + + 2432, + + 3549, + + 2189, + + 1231, + + 465, + + 857, + + 92, + + 1038, + + 1804, + + 3729, + + 1522, + + 2708, + + 2543, + + 2435, + + 3543, + + 2186, + + 1228, + + 462, + + 863, + + 86, + + 2882, + + 1798, + + 3723, + + 1516, + + 159, + + 2555, + + 3531, + + 2180, + + 1222, + + 456, + + 1456, + + 860, + + 2876, + + 1786, + + 3711, + + 1504, + + 1444, + + 2966, + + 2549, + + 3525, + + 2177, + + 1219, + + 453, + + 854, + + 2960, + + 2873, + + 1780, + + 3705, + + 1498, + + 2936, + + 2537, + + 2930, + + 3561, + + 2195, + + 1237, + + 471, + + 851, + + 105, + + 2924, + + 1816, + + 3741, + + 1534, + + 3333, + + 2531, + + 2918, + + 3555, + + 2192, + + 1234, + + 468, + + 869, + + 99, + + 399, + + 1810, + + 3735, + + 1528, + + 1645, + + 2567, + + 3519, + + 2174, + + 1216, + + 2417, + -1, + + 866, + + 2870, + + 1774, + + 3699, + + 1492, + + 541, + + 502, + + 2561, + + 694, + + 1891, + + 559, + + 201, + + 848, + + 520, + + 514, + + 3474, + -1, + + 959, + + 267, + + 2525, + + 2270, + + 2630, + + 1303, + + 3513, + + 2171, + + 1213, + + 366, + + 2333, + -1, + + 2867, + + 1768, + + 3693, + + 1486, + + 2021, + + 1060, + + 324, + + 1189, + + 27, + + 2957, + -1, + + 845, + + 1723, + + 3648, + + 3135, + + 1609, + + 1681, + + 1375, + + 2519, + + 2012, + + 1051, + + 315, + + 827, + + 12, + + 2714, + -1, + + 782, + + 2018, + + 1057, + + 321, + + 2366, + + 4065, + + 1357, + + 2005, + + 1044, + + 309, + + 3612, + + 0, + + 2711, + -1, + + 1369, + + 153, + + 31, + + 2726, + + 2354, + + 1585, + + 1345, + + 2090, + + 1132, + + 387, + -1, + + 1378, + + 2786, + + 1606, + -1, + + 2009, + + 1047, + + 312, + + 3438, + + 6, + + 919, + + 2002, + + 1041, + + 306, + + 2594, + + 3864, + + 2360, + + 3321, + + 1351, + + 2033, + + 1072, + + 336, + + 2450, + + 52, + + 2729, + + 2228, + + 1270, + + 499, + + 3858, + + 168, + + 2384, + -1, + + 1399, + + 1594, + -1, + + 715, + + 2030, + + 1069, + + 333, + + 2444, + + 46, + + 3597, + + 2213, + + 1255, + + 487, + -1, + + 141, + + 2378, + + 1852, + + 1393, + + 1570, + -1, + + 712, + + 3591, + + 2210, + + 1252, + + 483, + + 393, + + 135, + + 2891, + + 1846, + + 1621, + + 1564, + + 3471, + + 1960, + + 956, + + 3852, + -1, + + 2273, + + 2627, + + 884, + + 3579, + + 2204, + + 1246, + + 480, + + 2330, + + 123, + + 532, + + 1834, + + 3759, + + 1552, + -1, + + 3573, + + 2201, + + 1243, + + 477, + + 2990, + + 117, + + 878, + + 1828, + + 3753, + + 1546, + + 700, + -1, + + 3846, + + 3567, + + 2198, + + 1240, + + 474, + + 875, + + 111, + + 658, + + 1822, + + 3747, + + 1540, + + 3801, + + 1984, + + 1005, + + 288, + -1, + + 2285, + + 2675, + + 872, + + 2168, + + 1210, + -1, + + 643, + + 2342, + + 2864, + + 1762, + + 3687, + + 1480, + -1, -1, + + 652, + + 3261, + + 381, + + 3900, + + 3002, + + 842, + + 637, + + 1675, + + 2159, + + 1201, + + 3231, + + 661, + + 2513, + + 2855, + + 1744, + + 3669, + + 1462, + + 775, + + 3882, + + 2426, + + 3318, + + 37, + + 2084, + + 1111, + + 372, + + 3222, + + 3894, + + 2765, + + 640, + -1, + + 1384, + + 2495, + + 3870, + + 3228, + + 2015, + + 1054, + + 318, + + 3903, + + 18, + + 3216, + + 1123, + + 1990, + + 1017, + + 294, + + 2777, + + 2372, + + 2687, + + 1363, + + 3078, + + 3603, + + 2216, + + 1258, + + 2348, + + 3288, + + 3876, + + 1981, + + 999, + + 285, + + 1576, + + 667, + + 2669, + + 3219, + + 3366, + + 3069, + + 3999, + + 3552, + + 2339, + + 3213, + + 3924, + + 3984, + + 96, + + 3075, + + 1807, + + 3732, + + 1525, + + 2051, + + 1090, + + 3063, + + 2486, + + 2351, + + 3507, + + 1978, + + 993, + + 282, + + 3975, + + 3918, + + 2663, + -1, + + 1435, + + 2558, + + 2279, + + 3993, + -1, + + 3987, + + 3501, + + 1975, + + 987, + + 279, + + 3981, + + 3066, + + 2657, + + 3495, + + 1972, + + 981, + + 276, + + 3060, + -1, + + 2651, + + 2996, + + 1669, + + 3465, + + 1957, + + 947, + + 1993, + + 1023, + + 297, + + 2621, + + 369, + + 2693, + + 765, + + 3171, + + 3378, + + 2324, + + 3600, + + 3423, + + 1936, + + 903, + + 243, + + 144, + + 613, + + 2579, + + 3480, + + 1573, + + 965, + + 270, + + 3360, + + 2306, + + 2636, + + 3840, + + 2039, + + 1078, + + 342, + + 2462, + + 65, + + 3594, + + 348, + + 2477, + + 709, + + 2972, + + 138, + + 2396, + + 1849, + + 1411, + + 1567, + + 2411, + + 718, + + 1426, + + 3822, + + 3017, + + 724, + -1, + + 3354, + + 3195, + + 2036, + + 1075, + + 339, + + 2456, + + 59, + -1, -1, + + 351, + + 2483, + + 2165, + + 1207, + + 2390, + + 3348, + + 1405, + + 2861, + + 1756, + + 3681, + + 1474, + + 1432, + + 3342, + + 2027, + + 1066, + + 330, + + 706, + + 40, + + 622, + -1, + + 3909, + + 3312, + -1, + + 3384, + + 363, + + 2507, + + 1387, + + 2225, + + 1267, + + 496, + + 3042, + + 162, + + 607, + + 2162, + + 1204, + + 1588, + -1, + + 3888, + + 2858, + + 1750, + + 3675, + + 1468, + + 3327, + -1, + + 3225, + + 634, + + 2024, + + 1063, + + 327, + + 3279, + + 34, + + 3201, + + 1987, + + 1011, + + 291, + -1, + + 2501, + + 2681, + + 601, + + 1381, + + 3489, + + 1969, + + 974, + + 2345, + -1, + + 3192, + + 2645, + + 3483, + + 1966, + + 968, + + 3114, + + 3867, + + 598, + + 2639, + + 3477, + + 1963, + + 962, + -1, + + 3960, + + 595, + + 2633, + + 3468, + + 3072, + + 951, + + 264, + + 3246, + + 2336, + + 2624, + + 3309, + + 3048, + + 625, + + 3189, + + 703, + + 2327, + + 3435, + + 1942, + + 916, + + 249, + + 2267, + -1, + + 2591, + + 1651, + + 574, + + 3039, + -1, + + 3186, + + 2318, + + 3429, + + 1939, + + 910, + + 246, + + 745, + + 3183, + + 2585, + + 3405, + + 1927, + + 2954, + + 237, + -1, + + 2312, + + 1918, + + 3168, + + 228, + + 3204, + + 4029, + + 1915, + + 354, + + 225, + + 1339, + + 3036, + -1, + + 2294, + + 3372, + + 1330, + + 2261, + + 3147, + + 2288, + + 1438, + + 1327, + + 2249, + + 673, + + 3336, + + 3936, + + 3033, + + 3011, + + 1912, + + 3951, + + 222, + + 3330, + + 3008, + + 3029, + + 3834, + + 2948, + + 3243, + + 3005, + + 3324, + + 2282, + + 2912, + + 1324, + + 3014, + + 664, + + 3051, + + 3315, + -1, + + 2048, + + 1087, + + 3930, + + 2480, + + 2057, + + 688, + + 357, + + 3957, + + 1126, + + 2738, + + 2999, + + 2414, + + 2780, + + 1429, + + 2243, + + 4062, + + 727, + + 1447, + + 3828, + -1, + + 2042, + + 1081, + + 3912, + + 2468, + + 71, + + 1996, + + 1029, + + 300, + + 1639, + + 3237, + + 2699, + + 2402, + + 2906, + + 1417, + + 3585, + + 2207, + + 1249, + -1, + + 736, + + 129, + + 3534, + + 1840, + + 3765, + + 1558, + + 592, + + 77, + + 1633, + + 1789, + + 3714, + + 1507, + + 3969, + + 589, + + 2429, + -1, -1, + + 3906, + + 730, + -1, + + 345, + + 2471, + + 74, + -1, + + 3234, + + 3522, + + 2540, + + 586, + + 450, + + 2405, + + 3198, + + 1420, + + 1777, + + 3702, + + 1495, + + 3516, + -1, -1, + + 447, + + 3180, + + 2081, + + 1108, + + 1771, + + 3696, + + 1489, + + 2762, + + 3177, + + 3510, + -1, + + 2528, + + 444, + -1, + + 1177, + + 3174, + + 1765, + + 3690, + + 1483, + + 1699, + + 3624, + + 2522, + + 565, + + 3450, + + 3081, + + 931, + + 255, + + 556, + -1, + + 2606, + + 3045, + + 679, + + 553, + + 2516, + -1, + + 3153, + + 432, + + 1693, + + 3618, + + 3026, + + 1741, + + 3666, + + 1459, + -1, + + 1186, + + 2423, + + 3023, + + 795, + + 3150, + + 1717, + + 3642, + -1, + + 550, + + 3020, + + 2489, + + 3141, + + 2147, + + 2492, + + 421, + + 820, + + 3132, + + 2843, + + 1720, + + 3645, + + 1450, + + 3129, + -1, -1, + + 2123, + + 1165, + + 408, + + 676, + + 823, + + 2819, + + 1672, + + 682, + + 2045, + + 1084, + + 3963, + + 2474, + + 3459, + + 1954, + + 941, + -1, + + 770, + + 3126, + + 2615, + + 2408, + + 3462, + + 1423, + + 944, + + 261, + + 721, + -1, + + 2618, + -1, + + 628, + + 3954, + + 3411, + + 1930, + + 2321, + + 240, + + 1026, + -1, + + 3399, + + 1924, + + 2696, + + 234, + + 3252, + -1, + + 4056, + + 3282, + + 1342, + -1, + + 3417, + + 1933, + + 896, + + 3942, + + 1336, + -1, + + 2573, + + 405, + + 2126, + + 1168, + + 4014, + + 1663, + + 2300, + + 2822, + + 1678, + + 3207, + -1, + + 3615, + + 2222, + + 1264, + + 493, + + 759, + + 156, + + 3855, + + 779, + -1, + + 3609, + + 2219, + + 1261, + + 490, + -1, + + 150, + + 3087, + + 3849, + + 890, + + 1582, + -1, -1, -1, + + 3945, + + 1117, + + 375, + + 3588, + -1, + + 2771, + + 3843, + + 3240, + + 132, + + 3777, + + 1843, + + 3768, + + 1561, + + 3504, + + 3054, + + 990, + + 3576, + + 2438, + + 577, + + 2660, + + 881, + + 120, + + 2888, + + 1831, + + 3756, + + 1549, + + 3570, + + 3771, + + 3387, + + 3267, + + 3819, + + 114, + + 2885, + + 1825, + + 3750, + + 1543, + + 3558, + -1, -1, + + 3795, + -1, + + 102, + + 3546, + + 1813, + + 3738, + + 1531, + -1, + + 89, + + 3540, + + 1801, + + 3726, + + 1519, + + 3798, + + 83, + + 3528, + + 1795, + + 3720, + + 1513, + -1, -1, + + 2564, + + 1783, + + 3708, + + 1501, + + 441, + -1, + + 2552, + + 3111, + + 1759, + + 3684, + + 1477, + + 3456, + + 2546, + + 937, + + 258, + + 580, + + 438, + + 2612, + + 2534, + -1, + + 1753, + + 3678, + + 1471, + + 583, + + 435, + + 2510, + + 1195, + + 429, + + 1747, + + 3672, + + 1465, + + 1735, + + 3660, + + 568, + + 3351, + + 3306, + + 3948, + + 2504, + + 4059, + + 562, + -1, + + 839, + + 1999, + + 1035, + + 303, + + 2498, + -1, + + 2705, + + 3165, + + 571, + -1, + + 4026, + + 2156, + + 1198, + -1, + + 1192, + + 425, + + 2852, + + 1738, + + 3663, + + 1729, + + 3654, + + 2153, + -1, + + 4020, + -1, + + 3144, + + 2849, + + 1732, + + 3657, + + 833, + + 3996, + + 3138, + + 3453, + + 1951, + + 934, + + 3978, + + 2150, + + 836, + + 2609, + + 2144, + + 3972, + + 2846, + + 1726, + + 3651, + + 2840, + + 1714, + + 3639, + -1, + + 1183, + + 417, + -1, + + 2141, + + 830, + + 1711, + + 3636, + + 817, + + 2837, + + 1708, + + 3633, + + 2138, + + 3966, + -1, -1, + + 813, + + 2834, + + 1702, + + 3627, + + 810, + + 2132, + + 1174, + + 414, + + 2135, + -1, + + 2828, + + 1690, + + 803, + + 2831, + + 1696, + + 3621, + + 3273, + + 2129, + + 1171, + + 411, + -1, + + 792, + + 2825, + + 1684, + + 799, + + 2120, + + 1162, + + 15, + + 2717, + -1, + + 2816, + + 1666, + -1, + + 786, + + 2369, + -1, + + 1360, + + 2117, + + 1159, + -1, + + 3861, + + 762, + + 2813, + + 1660, + + 2111, + + 1153, + + 3498, + + 3837, + + 984, + + 2807, + + 1648, + -1, + + 2654, + + 755, + + 3120, + + 2420, + + 2105, + + 1147, + + 396, + + 3831, + + 742, + + 2801, + + 1636, + + 2093, + + 1135, + + 390, + -1, + + 3825, + + 2789, + + 1612, + + 3813, + + 1858, + + 733, + + 2087, + + 1129, + + 384, + + 2054, + + 1093, + + 2783, + + 1600, + + 2060, + + 2735, + + 360, + -1, -1, + + 2741, + + 3447, + + 1948, + + 928, + + 1441, + -1, + + 1855, + + 2603, + + 1453, + + 2459, + + 62, + + 2732, + + 3816, + + 2063, + + 3807, + + 2447, + + 49, + + 2393, + + 2744, + + 1408, + -1, -1, + + 3810, + + 2381, + + 1180, + + 1396, + + 3441, + + 1945, + + 922, + + 1705, + + 3630, + + 4041, + + 2597, + + 3210, + + 1888, + -1, + + 198, + + 3804, + -1, + + 807, + + 3792, + -1, + + 3345, + -1, + + 1885, + + 2264, + + 195, + + 1300, + + 3789, + + 2078, + + 1105, + + 1870, + + 3786, + + 180, + + 2759, + + 2258, + + 2066, + + 1297, + + 24, + + 2723, + + 3780, + + 2747, + + 2252, + + 2951, + + 1282, + + 3162, + -1, + + 1372, + + 1867, + -1, + + 177, + + 3057, + + 3774, + + 2945, + + 2465, + + 68, + + 1864, + -1, + + 174, + + 2246, + + 2915, + + 1279, + + 2399, + -1, + + 1414, + + 646, + + 3582, + + 2240, + + 4050, + + 1276, + -1, + + 126, + -1, + + 1837, + + 3762, + + 1555, + + 4053, + + 2909, + + 2114, + + 1156, + + 21, + + 2720, + -1, + + 2810, + + 1654, + + 2903, + + 4002, + -1, + + 3564, + + 1366, + -1, + + 3885, + + 3990, + + 108, + + 749, + + 1819, + + 3744, + + 1537, + + 2108, + + 1150, + + 3303, + -1, + + 4008, + + 2804, + + 1642, + + 2099, + + 1141, + -1, + + 2069, + + 1096, + + 2795, + + 1624, + + 3300, + + 2750, + + 739, + + 2096, + + 1138, + + 2453, + + 56, + + 3606, + + 2792, + + 1618, + + 2441, + + 43, + + 147, + + 2387, + -1, + + 1402, + + 1579, + -1, + + 2375, + + 3444, + + 1390, + + 925, + + 252, + -1, + + 887, + + 2600, + + 3291, + + 670, + + 685, + + 3432, + -1, + + 913, + + 3426, + + 1120, + + 906, + + 2588, + + 3285, + + 2774, + + 2582, + + 3249, + + 3783, + + 2315, + -1, + + 3255, + + 2309, + -1, + + 3420, + + 3933, + + 899, + + 529, + + 3159, + + 1114, + + 2576, + + 3921, + -1, + + 2768, + + 402, + -1, + + 2303, + + 526, + + 1657, + + 3258, + + 3414, + + 1906, + + 893, + + 216, + + 511, + -1, + + 2570, + + 655, + + 752, + + 691, + -1, -1, + + 2297, + + 3156, + + 1318, + + 3084, + -1, -1, + + 1903, + + 3090, + + 213, + + 508, + -1, + + 1897, + -1, + + 207, + + 1894, + -1, + + 204, + + 505, + + 2987, + + 1315, + + 1882, + + 3897, + + 192, + + 3264, + + 1309, + + 3093, + + 4047, + + 1306, + + 1876, + -1, + + 186, + + 2075, + + 1102, + + 1294, + -1, + + 2981, + + 2756, + + 649, + + 3939, + -1, + + 2969, + + 1288, + -1, + + 2963, + -1, + + 2102, + + 1144, + + 2072, + + 1099, + + 2939, + + 2798, + + 1630, + + 2753, + + 9, + -1, + + 1014, + -1, + + 2927, + + 3, + + 2684, + + 2363, + + 3108, + + 1354, + + 3891, + -1, + + 2357, + + 1008, + + 1348, + + 3096, + + 697, + + 2678, + + 1002, + + 996, + + 1032, + -1, + + 2672, + + 2666, + + 2702, + + 3492, + -1, + + 977, + + 1020, + -1, -1, + + 2648, + + 2690, + -1, -1, + + 4044, + -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, + + 3297, + -1, + + 3927, + -1, -1, -1, -1, + + 3915, + -1, -1, + + 3294, + -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, + + 3375, + -1, + + 547, + -1, + + 3276, + -1, + + 3099, + -1, -1, -1, -1, + + 3369, + -1, -1, -1, -1, + + 3363, + + 3357, + -1, + + 544, + -1, -1, + + 3270, + -1, + + 538, + + 3339, + + 3381, + + 535, + -1, -1, -1, -1, -1, + + 523, + -1, -1, -1, -1, -1, -1, + -1, + + 517, + + 3123, + -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, + + 3117, + -1, -1, -1, -1, -1, -1, + + 619, + -1, -1, -1, + + 4038, + -1, -1, -1, -1, -1, -1, + + 616, + -1, -1, -1, -1, + + 610, + + 604, + + 631, + -1, -1, + + 3879, + -1, -1, -1, -1, + + 3873, + -1, -1, + + 4032, + -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, + + 3105, + -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, + -1, -1, -1, + + 3102, + -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, + + 4035, + -1, -1, -1, -1, -1, -1, + -1, -1, -1, + + 4023, + -1, -1, + + 4017, + -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, + -1, + + 4011, + -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, + -1, -1, -1, + + 4005 + }; + + if (0 == 0) + { + int key = hash(codes); + + if (key <= MAX_HASH_VALUE) + { + int index = wordlist[key]; + + if (index >= 0 && onig_codes_cmp(codes, OnigUnicodeFolds1 + index, 1) == 0) + return index; + } + } + return -1; +} + + diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_fold2_key.c b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_fold2_key.c new file mode 100644 index 0000000000..1926b2569f --- /dev/null +++ b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_fold2_key.c @@ -0,0 +1,229 @@ +/* This file was converted by gperf_fold_key_conv.py + from gperf output file. */ +/* ANSI-C code produced by gperf version 3.1 */ +/* Command-line: /usr/bin/gperf -n -C -T -c -t -j1 -L ANSI-C -F,-1 -N onigenc_unicode_fold2_key unicode_fold2_key.gperf */ +/* Computed positions: -k'3,6' */ + + + +/* This gperf source file was generated by make_unicode_fold_data.py */ + +/*- + * Copyright (c) 2017-2018 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 +#include "regenc.h" + +#define TOTAL_KEYWORDS 59 +#define MIN_WORD_LENGTH 6 +#define MAX_WORD_LENGTH 6 +#define MIN_HASH_VALUE 0 +#define MAX_HASH_VALUE 58 +/* maximum key range = 59, duplicates = 0 */ + +#ifdef __GNUC__ +__inline +#else +#ifdef __cplusplus +inline +#endif +#endif +/*ARGSUSED*/ +static unsigned int +hash(OnigCodePoint codes[]) +{ + static const unsigned char asso_values[] = + { + 58, 57, 56, 55, 54, 53, 52, 16, 50, 59, + 15, 59, 25, 59, 59, 59, 59, 59, 59, 3, + 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 49, 48, 47, 46, 45, 44, 43, 42, + 59, 59, 59, 59, 59, 59, 59, 59, 59, 21, + 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 2, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 40, 20, 39, 38, + 37, 14, 5, 36, 20, 7, 25, 34, 29, 32, + 16, 59, 31, 59, 59, 2, 1, 59, 25, 15, + 59, 14, 59, 59, 28, 59, 2, 59, 59, 59, + 11, 59, 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 24, 59, 22, 59, 59, 11, 59, 59, + 59, 59, 59, 7, 59, 0, 59, 59, 16, 59, + 1, 59, 59, 16, 59, 59, 59, 15, 59, 59, + 59, 6, 59, 59, 59, 59, 0, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59 + }; + return asso_values[(unsigned char)onig_codes_byte_at(codes, 5)] + asso_values[(unsigned char)onig_codes_byte_at(codes, 2)]; +} + +int +onigenc_unicode_fold2_key(OnigCodePoint codes[]) +{ + static const short int wordlist[] = + { + + 101, + + 253, + + 76, + + 29, + + 24, + + 239, + + 96, + + 71, + + 92, + + 67, + + 4, + + 62, + + 8, + + 58, + + 234, + + 109, + + 164, + + 88, + + 84, + + 80, + + 214, + + 0, + + 54, + + 261, + + 50, + + 105, + + 121, + + 125, + + 257, + + 42, + + 38, + + 249, + + 46, + + 117, + + 12, + + 113, + + 244, + + 229, + + 224, + + 219, + + 209, + + 16, + + 204, + + 199, + + 194, + + 189, + + 184, + + 179, + + 174, + + 169, + + 20, + + 34, + + 159, + + 154, + + 149, + + 144, + + 139, + + 134, + + 129 + }; + + if (0 == 0) + { + int key = hash(codes); + + if (key <= MAX_HASH_VALUE) + { + int index = wordlist[key]; + + if (index >= 0 && onig_codes_cmp(codes, OnigUnicodeFolds2 + index, 2) == 0) + return index; + } + } + return -1; +} + + diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_fold3_key.c b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_fold3_key.c new file mode 100644 index 0000000000..9c4415af59 --- /dev/null +++ b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_fold3_key.c @@ -0,0 +1,139 @@ +/* This file was converted by gperf_fold_key_conv.py + from gperf output file. */ +/* ANSI-C code produced by gperf version 3.1 */ +/* Command-line: /usr/bin/gperf -n -C -T -c -t -j1 -L ANSI-C -F,-1 -N onigenc_unicode_fold3_key unicode_fold3_key.gperf */ +/* Computed positions: -k'3,6,9' */ + + + +/* This gperf source file was generated by make_unicode_fold_data.py */ + +/*- + * Copyright (c) 2017-2018 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 +#include "regenc.h" + +#define TOTAL_KEYWORDS 14 +#define MIN_WORD_LENGTH 9 +#define MAX_WORD_LENGTH 9 +#define MIN_HASH_VALUE 0 +#define MAX_HASH_VALUE 13 +/* maximum key range = 14, duplicates = 0 */ + +#ifdef __GNUC__ +__inline +#else +#ifdef __cplusplus +inline +#endif +#endif +/*ARGSUSED*/ +static unsigned int +hash(OnigCodePoint codes[]) +{ + static const unsigned char asso_values[] = + { + 6, 3, 14, 14, 14, 14, 14, 14, 1, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 0, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 0, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 4, 14, 14, 5, 14, 14, 4, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 10, 14, 14, + 14, 14, 14, 9, 14, 1, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 0, 14, 14, + 14, 8, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14 + }; + return asso_values[(unsigned char)onig_codes_byte_at(codes, 8)] + asso_values[(unsigned char)onig_codes_byte_at(codes, 5)] + asso_values[(unsigned char)onig_codes_byte_at(codes, 2)]; +} + +int +onigenc_unicode_fold3_key(OnigCodePoint codes[]) +{ + static const short int wordlist[] = + { + + 62, + + 47, + + 31, + + 57, + + 41, + + 25, + + 52, + + 36, + + 20, + + 67, + + 15, + + 10, + + 5, + + 0 + }; + + if (0 == 0) + { + int key = hash(codes); + + if (key <= MAX_HASH_VALUE) + { + int index = wordlist[key]; + + if (index >= 0 && onig_codes_cmp(codes, OnigUnicodeFolds3 + index, 3) == 0) + return index; + } + } + return -1; +} + + diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_fold_data.c b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_fold_data.c new file mode 100644 index 0000000000..87d0be7e73 --- /dev/null +++ b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_fold_data.c @@ -0,0 +1,1516 @@ +/* This file was generated by make_unicode_fold_data.py. */ +#include "regenc.h" + +#define UNICODE_CASEFOLD_VERSION 11_0_0 + + +OnigCodePoint OnigUnicodeFolds1[] = { + /* 0*/ 0x0061, 1, 0x0041, /* LATIN CAPITAL LETTER A */ + /* 3*/ 0x0062, 1, 0x0042, /* LATIN CAPITAL LETTER B */ + /* 6*/ 0x0063, 1, 0x0043, /* LATIN CAPITAL LETTER C */ + /* 9*/ 0x0064, 1, 0x0044, /* LATIN CAPITAL LETTER D */ + /* 12*/ 0x0065, 1, 0x0045, /* LATIN CAPITAL LETTER E */ + /* 15*/ 0x0066, 1, 0x0046, /* LATIN CAPITAL LETTER F */ + /* 18*/ 0x0067, 1, 0x0047, /* LATIN CAPITAL LETTER G */ + /* 21*/ 0x0068, 1, 0x0048, /* LATIN CAPITAL LETTER H */ + /* 24*/ 0x006a, 1, 0x004a, /* LATIN CAPITAL LETTER J */ + /* 27*/ 0x006b, 2, 0x004b, 0x212a, /* LATIN CAPITAL LETTER K */ + /* 31*/ 0x006c, 1, 0x004c, /* LATIN CAPITAL LETTER L */ + /* 34*/ 0x006d, 1, 0x004d, /* LATIN CAPITAL LETTER M */ + /* 37*/ 0x006e, 1, 0x004e, /* LATIN CAPITAL LETTER N */ + /* 40*/ 0x006f, 1, 0x004f, /* LATIN CAPITAL LETTER O */ + /* 43*/ 0x0070, 1, 0x0050, /* LATIN CAPITAL LETTER P */ + /* 46*/ 0x0071, 1, 0x0051, /* LATIN CAPITAL LETTER Q */ + /* 49*/ 0x0072, 1, 0x0052, /* LATIN CAPITAL LETTER R */ + /* 52*/ 0x0073, 2, 0x0053, 0x017f, /* LATIN CAPITAL LETTER S */ + /* 56*/ 0x0074, 1, 0x0054, /* LATIN CAPITAL LETTER T */ + /* 59*/ 0x0075, 1, 0x0055, /* LATIN CAPITAL LETTER U */ + /* 62*/ 0x0076, 1, 0x0056, /* LATIN CAPITAL LETTER V */ + /* 65*/ 0x0077, 1, 0x0057, /* LATIN CAPITAL LETTER W */ + /* 68*/ 0x0078, 1, 0x0058, /* LATIN CAPITAL LETTER X */ + /* 71*/ 0x0079, 1, 0x0059, /* LATIN CAPITAL LETTER Y */ + /* 74*/ 0x007a, 1, 0x005a, /* LATIN CAPITAL LETTER Z */ + /* 77*/ 0x00e0, 1, 0x00c0, /* LATIN CAPITAL LETTER A WITH GRAVE */ + /* 80*/ 0x00e1, 1, 0x00c1, /* LATIN CAPITAL LETTER A WITH ACUTE */ + /* 83*/ 0x00e2, 1, 0x00c2, /* LATIN CAPITAL LETTER A WITH CIRCU.. */ + /* 86*/ 0x00e3, 1, 0x00c3, /* LATIN CAPITAL LETTER A WITH TILDE */ + /* 89*/ 0x00e4, 1, 0x00c4, /* LATIN CAPITAL LETTER A WITH DIAER.. */ + /* 92*/ 0x00e5, 2, 0x00c5, 0x212b, /* LATIN CAPITAL LETTER A WITH RING .. */ + /* 96*/ 0x00e6, 1, 0x00c6, /* LATIN CAPITAL LETTER AE */ + /* 99*/ 0x00e7, 1, 0x00c7, /* LATIN CAPITAL LETTER C WITH CEDIL.. */ + /* 102*/ 0x00e8, 1, 0x00c8, /* LATIN CAPITAL LETTER E WITH GRAVE */ + /* 105*/ 0x00e9, 1, 0x00c9, /* LATIN CAPITAL LETTER E WITH ACUTE */ + /* 108*/ 0x00ea, 1, 0x00ca, /* LATIN CAPITAL LETTER E WITH CIRCU.. */ + /* 111*/ 0x00eb, 1, 0x00cb, /* LATIN CAPITAL LETTER E WITH DIAER.. */ + /* 114*/ 0x00ec, 1, 0x00cc, /* LATIN CAPITAL LETTER I WITH GRAVE */ + /* 117*/ 0x00ed, 1, 0x00cd, /* LATIN CAPITAL LETTER I WITH ACUTE */ + /* 120*/ 0x00ee, 1, 0x00ce, /* LATIN CAPITAL LETTER I WITH CIRCU.. */ + /* 123*/ 0x00ef, 1, 0x00cf, /* LATIN CAPITAL LETTER I WITH DIAER.. */ + /* 126*/ 0x00f0, 1, 0x00d0, /* LATIN CAPITAL LETTER ETH */ + /* 129*/ 0x00f1, 1, 0x00d1, /* LATIN CAPITAL LETTER N WITH TILDE */ + /* 132*/ 0x00f2, 1, 0x00d2, /* LATIN CAPITAL LETTER O WITH GRAVE */ + /* 135*/ 0x00f3, 1, 0x00d3, /* LATIN CAPITAL LETTER O WITH ACUTE */ + /* 138*/ 0x00f4, 1, 0x00d4, /* LATIN CAPITAL LETTER O WITH CIRCU.. */ + /* 141*/ 0x00f5, 1, 0x00d5, /* LATIN CAPITAL LETTER O WITH TILDE */ + /* 144*/ 0x00f6, 1, 0x00d6, /* LATIN CAPITAL LETTER O WITH DIAER.. */ + /* 147*/ 0x00f8, 1, 0x00d8, /* LATIN CAPITAL LETTER O WITH STROKE */ + /* 150*/ 0x00f9, 1, 0x00d9, /* LATIN CAPITAL LETTER U WITH GRAVE */ + /* 153*/ 0x00fa, 1, 0x00da, /* LATIN CAPITAL LETTER U WITH ACUTE */ + /* 156*/ 0x00fb, 1, 0x00db, /* LATIN CAPITAL LETTER U WITH CIRCU.. */ + /* 159*/ 0x00fc, 1, 0x00dc, /* LATIN CAPITAL LETTER U WITH DIAER.. */ + /* 162*/ 0x00fd, 1, 0x00dd, /* LATIN CAPITAL LETTER Y WITH ACUTE */ + /* 165*/ 0x00fe, 1, 0x00de, /* LATIN CAPITAL LETTER THORN */ + /* 168*/ 0x00ff, 1, 0x0178, /* LATIN CAPITAL LETTER Y WITH DIAER.. */ + /* 171*/ 0x0101, 1, 0x0100, /* LATIN CAPITAL LETTER A WITH MACRON */ + /* 174*/ 0x0103, 1, 0x0102, /* LATIN CAPITAL LETTER A WITH BREVE */ + /* 177*/ 0x0105, 1, 0x0104, /* LATIN CAPITAL LETTER A WITH OGONEK */ + /* 180*/ 0x0107, 1, 0x0106, /* LATIN CAPITAL LETTER C WITH ACUTE */ + /* 183*/ 0x0109, 1, 0x0108, /* LATIN CAPITAL LETTER C WITH CIRCU.. */ + /* 186*/ 0x010b, 1, 0x010a, /* LATIN CAPITAL LETTER C WITH DOT A.. */ + /* 189*/ 0x010d, 1, 0x010c, /* LATIN CAPITAL LETTER C WITH CARON */ + /* 192*/ 0x010f, 1, 0x010e, /* LATIN CAPITAL LETTER D WITH CARON */ + /* 195*/ 0x0111, 1, 0x0110, /* LATIN CAPITAL LETTER D WITH STROKE */ + /* 198*/ 0x0113, 1, 0x0112, /* LATIN CAPITAL LETTER E WITH MACRON */ + /* 201*/ 0x0115, 1, 0x0114, /* LATIN CAPITAL LETTER E WITH BREVE */ + /* 204*/ 0x0117, 1, 0x0116, /* LATIN CAPITAL LETTER E WITH DOT A.. */ + /* 207*/ 0x0119, 1, 0x0118, /* LATIN CAPITAL LETTER E WITH OGONEK */ + /* 210*/ 0x011b, 1, 0x011a, /* LATIN CAPITAL LETTER E WITH CARON */ + /* 213*/ 0x011d, 1, 0x011c, /* LATIN CAPITAL LETTER G WITH CIRCU.. */ + /* 216*/ 0x011f, 1, 0x011e, /* LATIN CAPITAL LETTER G WITH BREVE */ + /* 219*/ 0x0121, 1, 0x0120, /* LATIN CAPITAL LETTER G WITH DOT A.. */ + /* 222*/ 0x0123, 1, 0x0122, /* LATIN CAPITAL LETTER G WITH CEDIL.. */ + /* 225*/ 0x0125, 1, 0x0124, /* LATIN CAPITAL LETTER H WITH CIRCU.. */ + /* 228*/ 0x0127, 1, 0x0126, /* LATIN CAPITAL LETTER H WITH STROKE */ + /* 231*/ 0x0129, 1, 0x0128, /* LATIN CAPITAL LETTER I WITH TILDE */ + /* 234*/ 0x012b, 1, 0x012a, /* LATIN CAPITAL LETTER I WITH MACRON */ + /* 237*/ 0x012d, 1, 0x012c, /* LATIN CAPITAL LETTER I WITH BREVE */ + /* 240*/ 0x012f, 1, 0x012e, /* LATIN CAPITAL LETTER I WITH OGONEK */ + /* 243*/ 0x0133, 1, 0x0132, /* LATIN CAPITAL LIGATURE IJ */ + /* 246*/ 0x0135, 1, 0x0134, /* LATIN CAPITAL LETTER J WITH CIRCU.. */ + /* 249*/ 0x0137, 1, 0x0136, /* LATIN CAPITAL LETTER K WITH CEDIL.. */ + /* 252*/ 0x013a, 1, 0x0139, /* LATIN CAPITAL LETTER L WITH ACUTE */ + /* 255*/ 0x013c, 1, 0x013b, /* LATIN CAPITAL LETTER L WITH CEDIL.. */ + /* 258*/ 0x013e, 1, 0x013d, /* LATIN CAPITAL LETTER L WITH CARON */ + /* 261*/ 0x0140, 1, 0x013f, /* LATIN CAPITAL LETTER L WITH MIDDL.. */ + /* 264*/ 0x0142, 1, 0x0141, /* LATIN CAPITAL LETTER L WITH STROKE */ + /* 267*/ 0x0144, 1, 0x0143, /* LATIN CAPITAL LETTER N WITH ACUTE */ + /* 270*/ 0x0146, 1, 0x0145, /* LATIN CAPITAL LETTER N WITH CEDIL.. */ + /* 273*/ 0x0148, 1, 0x0147, /* LATIN CAPITAL LETTER N WITH CARON */ + /* 276*/ 0x014b, 1, 0x014a, /* LATIN CAPITAL LETTER ENG */ + /* 279*/ 0x014d, 1, 0x014c, /* LATIN CAPITAL LETTER O WITH MACRON */ + /* 282*/ 0x014f, 1, 0x014e, /* LATIN CAPITAL LETTER O WITH BREVE */ + /* 285*/ 0x0151, 1, 0x0150, /* LATIN CAPITAL LETTER O WITH DOUBL.. */ + /* 288*/ 0x0153, 1, 0x0152, /* LATIN CAPITAL LIGATURE OE */ + /* 291*/ 0x0155, 1, 0x0154, /* LATIN CAPITAL LETTER R WITH ACUTE */ + /* 294*/ 0x0157, 1, 0x0156, /* LATIN CAPITAL LETTER R WITH CEDIL.. */ + /* 297*/ 0x0159, 1, 0x0158, /* LATIN CAPITAL LETTER R WITH CARON */ + /* 300*/ 0x015b, 1, 0x015a, /* LATIN CAPITAL LETTER S WITH ACUTE */ + /* 303*/ 0x015d, 1, 0x015c, /* LATIN CAPITAL LETTER S WITH CIRCU.. */ + /* 306*/ 0x015f, 1, 0x015e, /* LATIN CAPITAL LETTER S WITH CEDIL.. */ + /* 309*/ 0x0161, 1, 0x0160, /* LATIN CAPITAL LETTER S WITH CARON */ + /* 312*/ 0x0163, 1, 0x0162, /* LATIN CAPITAL LETTER T WITH CEDIL.. */ + /* 315*/ 0x0165, 1, 0x0164, /* LATIN CAPITAL LETTER T WITH CARON */ + /* 318*/ 0x0167, 1, 0x0166, /* LATIN CAPITAL LETTER T WITH STROKE */ + /* 321*/ 0x0169, 1, 0x0168, /* LATIN CAPITAL LETTER U WITH TILDE */ + /* 324*/ 0x016b, 1, 0x016a, /* LATIN CAPITAL LETTER U WITH MACRON */ + /* 327*/ 0x016d, 1, 0x016c, /* LATIN CAPITAL LETTER U WITH BREVE */ + /* 330*/ 0x016f, 1, 0x016e, /* LATIN CAPITAL LETTER U WITH RING .. */ + /* 333*/ 0x0171, 1, 0x0170, /* LATIN CAPITAL LETTER U WITH DOUBL.. */ + /* 336*/ 0x0173, 1, 0x0172, /* LATIN CAPITAL LETTER U WITH OGONEK */ + /* 339*/ 0x0175, 1, 0x0174, /* LATIN CAPITAL LETTER W WITH CIRCU.. */ + /* 342*/ 0x0177, 1, 0x0176, /* LATIN CAPITAL LETTER Y WITH CIRCU.. */ + /* 345*/ 0x017a, 1, 0x0179, /* LATIN CAPITAL LETTER Z WITH ACUTE */ + /* 348*/ 0x017c, 1, 0x017b, /* LATIN CAPITAL LETTER Z WITH DOT A.. */ + /* 351*/ 0x017e, 1, 0x017d, /* LATIN CAPITAL LETTER Z WITH CARON */ + /* 354*/ 0x0180, 1, 0x0243, /* LATIN CAPITAL LETTER B WITH STROKE */ + /* 357*/ 0x0183, 1, 0x0182, /* LATIN CAPITAL LETTER B WITH TOPBAR */ + /* 360*/ 0x0185, 1, 0x0184, /* LATIN CAPITAL LETTER TONE SIX */ + /* 363*/ 0x0188, 1, 0x0187, /* LATIN CAPITAL LETTER C WITH HOOK */ + /* 366*/ 0x018c, 1, 0x018b, /* LATIN CAPITAL LETTER D WITH TOPBAR */ + /* 369*/ 0x0192, 1, 0x0191, /* LATIN CAPITAL LETTER F WITH HOOK */ + /* 372*/ 0x0195, 1, 0x01f6, /* LATIN CAPITAL LETTER HWAIR */ + /* 375*/ 0x0199, 1, 0x0198, /* LATIN CAPITAL LETTER K WITH HOOK */ + /* 378*/ 0x019a, 1, 0x023d, /* LATIN CAPITAL LETTER L WITH BAR */ + /* 381*/ 0x019e, 1, 0x0220, /* LATIN CAPITAL LETTER N WITH LONG .. */ + /* 384*/ 0x01a1, 1, 0x01a0, /* LATIN CAPITAL LETTER O WITH HORN */ + /* 387*/ 0x01a3, 1, 0x01a2, /* LATIN CAPITAL LETTER OI */ + /* 390*/ 0x01a5, 1, 0x01a4, /* LATIN CAPITAL LETTER P WITH HOOK */ + /* 393*/ 0x01a8, 1, 0x01a7, /* LATIN CAPITAL LETTER TONE TWO */ + /* 396*/ 0x01ad, 1, 0x01ac, /* LATIN CAPITAL LETTER T WITH HOOK */ + /* 399*/ 0x01b0, 1, 0x01af, /* LATIN CAPITAL LETTER U WITH HORN */ + /* 402*/ 0x01b4, 1, 0x01b3, /* LATIN CAPITAL LETTER Y WITH HOOK */ + /* 405*/ 0x01b6, 1, 0x01b5, /* LATIN CAPITAL LETTER Z WITH STROKE */ + /* 408*/ 0x01b9, 1, 0x01b8, /* LATIN CAPITAL LETTER EZH REVERSED */ + /* 411*/ 0x01bd, 1, 0x01bc, /* LATIN CAPITAL LETTER TONE FIVE */ + /* 414*/ 0x01bf, 1, 0x01f7, /* LATIN CAPITAL LETTER WYNN */ + /* 417*/ 0x01c6, 2, 0x01c4, 0x01c5, /* LATIN CAPITAL LETTER DZ WITH CARON */ + /* 421*/ 0x01c9, 2, 0x01c7, 0x01c8, /* LATIN CAPITAL LETTER LJ */ + /* 425*/ 0x01cc, 2, 0x01ca, 0x01cb, /* LATIN CAPITAL LETTER NJ */ + /* 429*/ 0x01ce, 1, 0x01cd, /* LATIN CAPITAL LETTER A WITH CARON */ + /* 432*/ 0x01d0, 1, 0x01cf, /* LATIN CAPITAL LETTER I WITH CARON */ + /* 435*/ 0x01d2, 1, 0x01d1, /* LATIN CAPITAL LETTER O WITH CARON */ + /* 438*/ 0x01d4, 1, 0x01d3, /* LATIN CAPITAL LETTER U WITH CARON */ + /* 441*/ 0x01d6, 1, 0x01d5, /* LATIN CAPITAL LETTER U WITH DIAER.. */ + /* 444*/ 0x01d8, 1, 0x01d7, /* LATIN CAPITAL LETTER U WITH DIAER.. */ + /* 447*/ 0x01da, 1, 0x01d9, /* LATIN CAPITAL LETTER U WITH DIAER.. */ + /* 450*/ 0x01dc, 1, 0x01db, /* LATIN CAPITAL LETTER U WITH DIAER.. */ + /* 453*/ 0x01dd, 1, 0x018e, /* LATIN CAPITAL LETTER REVERSED E */ + /* 456*/ 0x01df, 1, 0x01de, /* LATIN CAPITAL LETTER A WITH DIAER.. */ + /* 459*/ 0x01e1, 1, 0x01e0, /* LATIN CAPITAL LETTER A WITH DOT A.. */ + /* 462*/ 0x01e3, 1, 0x01e2, /* LATIN CAPITAL LETTER AE WITH MACR.. */ + /* 465*/ 0x01e5, 1, 0x01e4, /* LATIN CAPITAL LETTER G WITH STROKE */ + /* 468*/ 0x01e7, 1, 0x01e6, /* LATIN CAPITAL LETTER G WITH CARON */ + /* 471*/ 0x01e9, 1, 0x01e8, /* LATIN CAPITAL LETTER K WITH CARON */ + /* 474*/ 0x01eb, 1, 0x01ea, /* LATIN CAPITAL LETTER O WITH OGONEK */ + /* 477*/ 0x01ed, 1, 0x01ec, /* LATIN CAPITAL LETTER O WITH OGONE.. */ + /* 480*/ 0x01ef, 1, 0x01ee, /* LATIN CAPITAL LETTER EZH WITH CAR.. */ + /* 483*/ 0x01f3, 2, 0x01f1, 0x01f2, /* LATIN CAPITAL LETTER DZ */ + /* 487*/ 0x01f5, 1, 0x01f4, /* LATIN CAPITAL LETTER G WITH ACUTE */ + /* 490*/ 0x01f9, 1, 0x01f8, /* LATIN CAPITAL LETTER N WITH GRAVE */ + /* 493*/ 0x01fb, 1, 0x01fa, /* LATIN CAPITAL LETTER A WITH RING .. */ + /* 496*/ 0x01fd, 1, 0x01fc, /* LATIN CAPITAL LETTER AE WITH ACUTE */ + /* 499*/ 0x01ff, 1, 0x01fe, /* LATIN CAPITAL LETTER O WITH STROK.. */ + /* 502*/ 0x0201, 1, 0x0200, /* LATIN CAPITAL LETTER A WITH DOUBL.. */ + /* 505*/ 0x0203, 1, 0x0202, /* LATIN CAPITAL LETTER A WITH INVER.. */ + /* 508*/ 0x0205, 1, 0x0204, /* LATIN CAPITAL LETTER E WITH DOUBL.. */ + /* 511*/ 0x0207, 1, 0x0206, /* LATIN CAPITAL LETTER E WITH INVER.. */ + /* 514*/ 0x0209, 1, 0x0208, /* LATIN CAPITAL LETTER I WITH DOUBL.. */ + /* 517*/ 0x020b, 1, 0x020a, /* LATIN CAPITAL LETTER I WITH INVER.. */ + /* 520*/ 0x020d, 1, 0x020c, /* LATIN CAPITAL LETTER O WITH DOUBL.. */ + /* 523*/ 0x020f, 1, 0x020e, /* LATIN CAPITAL LETTER O WITH INVER.. */ + /* 526*/ 0x0211, 1, 0x0210, /* LATIN CAPITAL LETTER R WITH DOUBL.. */ + /* 529*/ 0x0213, 1, 0x0212, /* LATIN CAPITAL LETTER R WITH INVER.. */ + /* 532*/ 0x0215, 1, 0x0214, /* LATIN CAPITAL LETTER U WITH DOUBL.. */ + /* 535*/ 0x0217, 1, 0x0216, /* LATIN CAPITAL LETTER U WITH INVER.. */ + /* 538*/ 0x0219, 1, 0x0218, /* LATIN CAPITAL LETTER S WITH COMMA.. */ + /* 541*/ 0x021b, 1, 0x021a, /* LATIN CAPITAL LETTER T WITH COMMA.. */ + /* 544*/ 0x021d, 1, 0x021c, /* LATIN CAPITAL LETTER YOGH */ + /* 547*/ 0x021f, 1, 0x021e, /* LATIN CAPITAL LETTER H WITH CARON */ + /* 550*/ 0x0223, 1, 0x0222, /* LATIN CAPITAL LETTER OU */ + /* 553*/ 0x0225, 1, 0x0224, /* LATIN CAPITAL LETTER Z WITH HOOK */ + /* 556*/ 0x0227, 1, 0x0226, /* LATIN CAPITAL LETTER A WITH DOT A.. */ + /* 559*/ 0x0229, 1, 0x0228, /* LATIN CAPITAL LETTER E WITH CEDIL.. */ + /* 562*/ 0x022b, 1, 0x022a, /* LATIN CAPITAL LETTER O WITH DIAER.. */ + /* 565*/ 0x022d, 1, 0x022c, /* LATIN CAPITAL LETTER O WITH TILDE.. */ + /* 568*/ 0x022f, 1, 0x022e, /* LATIN CAPITAL LETTER O WITH DOT A.. */ + /* 571*/ 0x0231, 1, 0x0230, /* LATIN CAPITAL LETTER O WITH DOT A.. */ + /* 574*/ 0x0233, 1, 0x0232, /* LATIN CAPITAL LETTER Y WITH MACRON */ + /* 577*/ 0x023c, 1, 0x023b, /* LATIN CAPITAL LETTER C WITH STROKE */ + /* 580*/ 0x023f, 1, 0x2c7e, /* LATIN CAPITAL LETTER S WITH SWASH.. */ + /* 583*/ 0x0240, 1, 0x2c7f, /* LATIN CAPITAL LETTER Z WITH SWASH.. */ + /* 586*/ 0x0242, 1, 0x0241, /* LATIN CAPITAL LETTER GLOTTAL STOP */ + /* 589*/ 0x0247, 1, 0x0246, /* LATIN CAPITAL LETTER E WITH STROKE */ + /* 592*/ 0x0249, 1, 0x0248, /* LATIN CAPITAL LETTER J WITH STROKE */ + /* 595*/ 0x024b, 1, 0x024a, /* LATIN CAPITAL LETTER SMALL Q WITH.. */ + /* 598*/ 0x024d, 1, 0x024c, /* LATIN CAPITAL LETTER R WITH STROKE */ + /* 601*/ 0x024f, 1, 0x024e, /* LATIN CAPITAL LETTER Y WITH STROKE */ + /* 604*/ 0x0250, 1, 0x2c6f, /* LATIN CAPITAL LETTER TURNED A */ + /* 607*/ 0x0251, 1, 0x2c6d, /* LATIN CAPITAL LETTER ALPHA */ + /* 610*/ 0x0252, 1, 0x2c70, /* LATIN CAPITAL LETTER TURNED ALPHA */ + /* 613*/ 0x0253, 1, 0x0181, /* LATIN CAPITAL LETTER B WITH HOOK */ + /* 616*/ 0x0254, 1, 0x0186, /* LATIN CAPITAL LETTER OPEN O */ + /* 619*/ 0x0256, 1, 0x0189, /* LATIN CAPITAL LETTER AFRICAN D */ + /* 622*/ 0x0257, 1, 0x018a, /* LATIN CAPITAL LETTER D WITH HOOK */ + /* 625*/ 0x0259, 1, 0x018f, /* LATIN CAPITAL LETTER SCHWA */ + /* 628*/ 0x025b, 1, 0x0190, /* LATIN CAPITAL LETTER OPEN E */ + /* 631*/ 0x025c, 1, 0xa7ab, /* LATIN CAPITAL LETTER REVERSED OPE.. */ + /* 634*/ 0x0260, 1, 0x0193, /* LATIN CAPITAL LETTER G WITH HOOK */ + /* 637*/ 0x0261, 1, 0xa7ac, /* LATIN CAPITAL LETTER SCRIPT G */ + /* 640*/ 0x0263, 1, 0x0194, /* LATIN CAPITAL LETTER GAMMA */ + /* 643*/ 0x0265, 1, 0xa78d, /* LATIN CAPITAL LETTER TURNED H */ + /* 646*/ 0x0266, 1, 0xa7aa, /* LATIN CAPITAL LETTER H WITH HOOK */ + /* 649*/ 0x0268, 1, 0x0197, /* LATIN CAPITAL LETTER I WITH STROKE */ + /* 652*/ 0x0269, 1, 0x0196, /* LATIN CAPITAL LETTER IOTA */ + /* 655*/ 0x026a, 1, 0xa7ae, /* LATIN CAPITAL LETTER SMALL CAPITA.. */ + /* 658*/ 0x026b, 1, 0x2c62, /* LATIN CAPITAL LETTER L WITH MIDDL.. */ + /* 661*/ 0x026c, 1, 0xa7ad, /* LATIN CAPITAL LETTER L WITH BELT */ + /* 664*/ 0x026f, 1, 0x019c, /* LATIN CAPITAL LETTER TURNED M */ + /* 667*/ 0x0271, 1, 0x2c6e, /* LATIN CAPITAL LETTER M WITH HOOK */ + /* 670*/ 0x0272, 1, 0x019d, /* LATIN CAPITAL LETTER N WITH LEFT .. */ + /* 673*/ 0x0275, 1, 0x019f, /* LATIN CAPITAL LETTER O WITH MIDDL.. */ + /* 676*/ 0x027d, 1, 0x2c64, /* LATIN CAPITAL LETTER R WITH TAIL */ + /* 679*/ 0x0280, 1, 0x01a6, /* LATIN LETTER YR */ + /* 682*/ 0x0283, 1, 0x01a9, /* LATIN CAPITAL LETTER ESH */ + /* 685*/ 0x0287, 1, 0xa7b1, /* LATIN CAPITAL LETTER TURNED T */ + /* 688*/ 0x0288, 1, 0x01ae, /* LATIN CAPITAL LETTER T WITH RETRO.. */ + /* 691*/ 0x0289, 1, 0x0244, /* LATIN CAPITAL LETTER U BAR */ + /* 694*/ 0x028a, 1, 0x01b1, /* LATIN CAPITAL LETTER UPSILON */ + /* 697*/ 0x028b, 1, 0x01b2, /* LATIN CAPITAL LETTER V WITH HOOK */ + /* 700*/ 0x028c, 1, 0x0245, /* LATIN CAPITAL LETTER TURNED V */ + /* 703*/ 0x0292, 1, 0x01b7, /* LATIN CAPITAL LETTER EZH */ + /* 706*/ 0x029d, 1, 0xa7b2, /* LATIN CAPITAL LETTER J WITH CROSS.. */ + /* 709*/ 0x029e, 1, 0xa7b0, /* LATIN CAPITAL LETTER TURNED K */ + /* 712*/ 0x0371, 1, 0x0370, /* GREEK CAPITAL LETTER HETA */ + /* 715*/ 0x0373, 1, 0x0372, /* GREEK CAPITAL LETTER ARCHAIC SAMPI */ + /* 718*/ 0x0377, 1, 0x0376, /* GREEK CAPITAL LETTER PAMPHYLIAN D.. */ + /* 721*/ 0x037b, 1, 0x03fd, /* GREEK CAPITAL REVERSED LUNATE SIG.. */ + /* 724*/ 0x037c, 1, 0x03fe, /* GREEK CAPITAL DOTTED LUNATE SIGMA.. */ + /* 727*/ 0x037d, 1, 0x03ff, /* GREEK CAPITAL REVERSED DOTTED LUN.. */ + /* 730*/ 0x03ac, 1, 0x0386, /* GREEK CAPITAL LETTER ALPHA WITH T.. */ + /* 733*/ 0x03ad, 1, 0x0388, /* GREEK CAPITAL LETTER EPSILON WITH.. */ + /* 736*/ 0x03ae, 1, 0x0389, /* GREEK CAPITAL LETTER ETA WITH TON.. */ + /* 739*/ 0x03af, 1, 0x038a, /* GREEK CAPITAL LETTER IOTA WITH TO.. */ + /* 742*/ 0x03b1, 1, 0x0391, /* GREEK CAPITAL LETTER ALPHA */ + /* 745*/ 0x03b2, 2, 0x0392, 0x03d0, /* GREEK CAPITAL LETTER BETA */ + /* 749*/ 0x03b3, 1, 0x0393, /* GREEK CAPITAL LETTER GAMMA */ + /* 752*/ 0x03b4, 1, 0x0394, /* GREEK CAPITAL LETTER DELTA */ + /* 755*/ 0x03b5, 2, 0x0395, 0x03f5, /* GREEK CAPITAL LETTER EPSILON */ + /* 759*/ 0x03b6, 1, 0x0396, /* GREEK CAPITAL LETTER ZETA */ + /* 762*/ 0x03b7, 1, 0x0397, /* GREEK CAPITAL LETTER ETA */ + /* 765*/ 0x03b8, 3, 0x0398, 0x03d1, 0x03f4, /* GREEK CAPITAL LETTER THETA */ + /* 770*/ 0x03b9, 3, 0x0345, 0x0399, 0x1fbe, /* COMBINING GREEK YPOGEGRAMMENI */ + /* 775*/ 0x03ba, 2, 0x039a, 0x03f0, /* GREEK CAPITAL LETTER KAPPA */ + /* 779*/ 0x03bb, 1, 0x039b, /* GREEK CAPITAL LETTER LAMDA */ + /* 782*/ 0x03bc, 2, 0x00b5, 0x039c, /* MICRO SIGN */ + /* 786*/ 0x03bd, 1, 0x039d, /* GREEK CAPITAL LETTER NU */ + /* 789*/ 0x03be, 1, 0x039e, /* GREEK CAPITAL LETTER XI */ + /* 792*/ 0x03bf, 1, 0x039f, /* GREEK CAPITAL LETTER OMICRON */ + /* 795*/ 0x03c0, 2, 0x03a0, 0x03d6, /* GREEK CAPITAL LETTER PI */ + /* 799*/ 0x03c1, 2, 0x03a1, 0x03f1, /* GREEK CAPITAL LETTER RHO */ + /* 803*/ 0x03c3, 2, 0x03a3, 0x03c2, /* GREEK CAPITAL LETTER SIGMA */ + /* 807*/ 0x03c4, 1, 0x03a4, /* GREEK CAPITAL LETTER TAU */ + /* 810*/ 0x03c5, 1, 0x03a5, /* GREEK CAPITAL LETTER UPSILON */ + /* 813*/ 0x03c6, 2, 0x03a6, 0x03d5, /* GREEK CAPITAL LETTER PHI */ + /* 817*/ 0x03c7, 1, 0x03a7, /* GREEK CAPITAL LETTER CHI */ + /* 820*/ 0x03c8, 1, 0x03a8, /* GREEK CAPITAL LETTER PSI */ + /* 823*/ 0x03c9, 2, 0x03a9, 0x2126, /* GREEK CAPITAL LETTER OMEGA */ + /* 827*/ 0x03ca, 1, 0x03aa, /* GREEK CAPITAL LETTER IOTA WITH DI.. */ + /* 830*/ 0x03cb, 1, 0x03ab, /* GREEK CAPITAL LETTER UPSILON WITH.. */ + /* 833*/ 0x03cc, 1, 0x038c, /* GREEK CAPITAL LETTER OMICRON WITH.. */ + /* 836*/ 0x03cd, 1, 0x038e, /* GREEK CAPITAL LETTER UPSILON WITH.. */ + /* 839*/ 0x03ce, 1, 0x038f, /* GREEK CAPITAL LETTER OMEGA WITH T.. */ + /* 842*/ 0x03d7, 1, 0x03cf, /* GREEK CAPITAL KAI SYMBOL */ + /* 845*/ 0x03d9, 1, 0x03d8, /* GREEK LETTER ARCHAIC KOPPA */ + /* 848*/ 0x03db, 1, 0x03da, /* GREEK LETTER STIGMA */ + /* 851*/ 0x03dd, 1, 0x03dc, /* GREEK LETTER DIGAMMA */ + /* 854*/ 0x03df, 1, 0x03de, /* GREEK LETTER KOPPA */ + /* 857*/ 0x03e1, 1, 0x03e0, /* GREEK LETTER SAMPI */ + /* 860*/ 0x03e3, 1, 0x03e2, /* COPTIC CAPITAL LETTER SHEI */ + /* 863*/ 0x03e5, 1, 0x03e4, /* COPTIC CAPITAL LETTER FEI */ + /* 866*/ 0x03e7, 1, 0x03e6, /* COPTIC CAPITAL LETTER KHEI */ + /* 869*/ 0x03e9, 1, 0x03e8, /* COPTIC CAPITAL LETTER HORI */ + /* 872*/ 0x03eb, 1, 0x03ea, /* COPTIC CAPITAL LETTER GANGIA */ + /* 875*/ 0x03ed, 1, 0x03ec, /* COPTIC CAPITAL LETTER SHIMA */ + /* 878*/ 0x03ef, 1, 0x03ee, /* COPTIC CAPITAL LETTER DEI */ + /* 881*/ 0x03f2, 1, 0x03f9, /* GREEK CAPITAL LUNATE SIGMA SYMBOL */ + /* 884*/ 0x03f3, 1, 0x037f, /* GREEK CAPITAL LETTER YOT */ + /* 887*/ 0x03f8, 1, 0x03f7, /* GREEK CAPITAL LETTER SHO */ + /* 890*/ 0x03fb, 1, 0x03fa, /* GREEK CAPITAL LETTER SAN */ + /* 893*/ 0x0430, 1, 0x0410, /* CYRILLIC CAPITAL LETTER A */ + /* 896*/ 0x0431, 1, 0x0411, /* CYRILLIC CAPITAL LETTER BE */ + /* 899*/ 0x0432, 2, 0x0412, 0x1c80, /* CYRILLIC CAPITAL LETTER VE */ + /* 903*/ 0x0433, 1, 0x0413, /* CYRILLIC CAPITAL LETTER GHE */ + /* 906*/ 0x0434, 2, 0x0414, 0x1c81, /* CYRILLIC CAPITAL LETTER DE */ + /* 910*/ 0x0435, 1, 0x0415, /* CYRILLIC CAPITAL LETTER IE */ + /* 913*/ 0x0436, 1, 0x0416, /* CYRILLIC CAPITAL LETTER ZHE */ + /* 916*/ 0x0437, 1, 0x0417, /* CYRILLIC CAPITAL LETTER ZE */ + /* 919*/ 0x0438, 1, 0x0418, /* CYRILLIC CAPITAL LETTER I */ + /* 922*/ 0x0439, 1, 0x0419, /* CYRILLIC CAPITAL LETTER SHORT I */ + /* 925*/ 0x043a, 1, 0x041a, /* CYRILLIC CAPITAL LETTER KA */ + /* 928*/ 0x043b, 1, 0x041b, /* CYRILLIC CAPITAL LETTER EL */ + /* 931*/ 0x043c, 1, 0x041c, /* CYRILLIC CAPITAL LETTER EM */ + /* 934*/ 0x043d, 1, 0x041d, /* CYRILLIC CAPITAL LETTER EN */ + /* 937*/ 0x043e, 2, 0x041e, 0x1c82, /* CYRILLIC CAPITAL LETTER O */ + /* 941*/ 0x043f, 1, 0x041f, /* CYRILLIC CAPITAL LETTER PE */ + /* 944*/ 0x0440, 1, 0x0420, /* CYRILLIC CAPITAL LETTER ER */ + /* 947*/ 0x0441, 2, 0x0421, 0x1c83, /* CYRILLIC CAPITAL LETTER ES */ + /* 951*/ 0x0442, 3, 0x0422, 0x1c84, 0x1c85, /* CYRILLIC CAPITAL LETTER TE */ + /* 956*/ 0x0443, 1, 0x0423, /* CYRILLIC CAPITAL LETTER U */ + /* 959*/ 0x0444, 1, 0x0424, /* CYRILLIC CAPITAL LETTER EF */ + /* 962*/ 0x0445, 1, 0x0425, /* CYRILLIC CAPITAL LETTER HA */ + /* 965*/ 0x0446, 1, 0x0426, /* CYRILLIC CAPITAL LETTER TSE */ + /* 968*/ 0x0447, 1, 0x0427, /* CYRILLIC CAPITAL LETTER CHE */ + /* 971*/ 0x0448, 1, 0x0428, /* CYRILLIC CAPITAL LETTER SHA */ + /* 974*/ 0x0449, 1, 0x0429, /* CYRILLIC CAPITAL LETTER SHCHA */ + /* 977*/ 0x044a, 2, 0x042a, 0x1c86, /* CYRILLIC CAPITAL LETTER HARD SIGN */ + /* 981*/ 0x044b, 1, 0x042b, /* CYRILLIC CAPITAL LETTER YERU */ + /* 984*/ 0x044c, 1, 0x042c, /* CYRILLIC CAPITAL LETTER SOFT SIGN */ + /* 987*/ 0x044d, 1, 0x042d, /* CYRILLIC CAPITAL LETTER E */ + /* 990*/ 0x044e, 1, 0x042e, /* CYRILLIC CAPITAL LETTER YU */ + /* 993*/ 0x044f, 1, 0x042f, /* CYRILLIC CAPITAL LETTER YA */ + /* 996*/ 0x0450, 1, 0x0400, /* CYRILLIC CAPITAL LETTER IE WITH G.. */ + /* 999*/ 0x0451, 1, 0x0401, /* CYRILLIC CAPITAL LETTER IO */ + /*1002*/ 0x0452, 1, 0x0402, /* CYRILLIC CAPITAL LETTER DJE */ + /*1005*/ 0x0453, 1, 0x0403, /* CYRILLIC CAPITAL LETTER GJE */ + /*1008*/ 0x0454, 1, 0x0404, /* CYRILLIC CAPITAL LETTER UKRAINIAN.. */ + /*1011*/ 0x0455, 1, 0x0405, /* CYRILLIC CAPITAL LETTER DZE */ + /*1014*/ 0x0456, 1, 0x0406, /* CYRILLIC CAPITAL LETTER BYELORUSS.. */ + /*1017*/ 0x0457, 1, 0x0407, /* CYRILLIC CAPITAL LETTER YI */ + /*1020*/ 0x0458, 1, 0x0408, /* CYRILLIC CAPITAL LETTER JE */ + /*1023*/ 0x0459, 1, 0x0409, /* CYRILLIC CAPITAL LETTER LJE */ + /*1026*/ 0x045a, 1, 0x040a, /* CYRILLIC CAPITAL LETTER NJE */ + /*1029*/ 0x045b, 1, 0x040b, /* CYRILLIC CAPITAL LETTER TSHE */ + /*1032*/ 0x045c, 1, 0x040c, /* CYRILLIC CAPITAL LETTER KJE */ + /*1035*/ 0x045d, 1, 0x040d, /* CYRILLIC CAPITAL LETTER I WITH GR.. */ + /*1038*/ 0x045e, 1, 0x040e, /* CYRILLIC CAPITAL LETTER SHORT U */ + /*1041*/ 0x045f, 1, 0x040f, /* CYRILLIC CAPITAL LETTER DZHE */ + /*1044*/ 0x0461, 1, 0x0460, /* CYRILLIC CAPITAL LETTER OMEGA */ + /*1047*/ 0x0463, 2, 0x0462, 0x1c87, /* CYRILLIC CAPITAL LETTER YAT */ + /*1051*/ 0x0465, 1, 0x0464, /* CYRILLIC CAPITAL LETTER IOTIFIED E */ + /*1054*/ 0x0467, 1, 0x0466, /* CYRILLIC CAPITAL LETTER LITTLE YUS */ + /*1057*/ 0x0469, 1, 0x0468, /* CYRILLIC CAPITAL LETTER IOTIFIED .. */ + /*1060*/ 0x046b, 1, 0x046a, /* CYRILLIC CAPITAL LETTER BIG YUS */ + /*1063*/ 0x046d, 1, 0x046c, /* CYRILLIC CAPITAL LETTER IOTIFIED .. */ + /*1066*/ 0x046f, 1, 0x046e, /* CYRILLIC CAPITAL LETTER KSI */ + /*1069*/ 0x0471, 1, 0x0470, /* CYRILLIC CAPITAL LETTER PSI */ + /*1072*/ 0x0473, 1, 0x0472, /* CYRILLIC CAPITAL LETTER FITA */ + /*1075*/ 0x0475, 1, 0x0474, /* CYRILLIC CAPITAL LETTER IZHITSA */ + /*1078*/ 0x0477, 1, 0x0476, /* CYRILLIC CAPITAL LETTER IZHITSA W.. */ + /*1081*/ 0x0479, 1, 0x0478, /* CYRILLIC CAPITAL LETTER UK */ + /*1084*/ 0x047b, 1, 0x047a, /* CYRILLIC CAPITAL LETTER ROUND OME.. */ + /*1087*/ 0x047d, 1, 0x047c, /* CYRILLIC CAPITAL LETTER OMEGA WIT.. */ + /*1090*/ 0x047f, 1, 0x047e, /* CYRILLIC CAPITAL LETTER OT */ + /*1093*/ 0x0481, 1, 0x0480, /* CYRILLIC CAPITAL LETTER KOPPA */ + /*1096*/ 0x048b, 1, 0x048a, /* CYRILLIC CAPITAL LETTER SHORT I W.. */ + /*1099*/ 0x048d, 1, 0x048c, /* CYRILLIC CAPITAL LETTER SEMISOFT .. */ + /*1102*/ 0x048f, 1, 0x048e, /* CYRILLIC CAPITAL LETTER ER WITH T.. */ + /*1105*/ 0x0491, 1, 0x0490, /* CYRILLIC CAPITAL LETTER GHE WITH .. */ + /*1108*/ 0x0493, 1, 0x0492, /* CYRILLIC CAPITAL LETTER GHE WITH .. */ + /*1111*/ 0x0495, 1, 0x0494, /* CYRILLIC CAPITAL LETTER GHE WITH .. */ + /*1114*/ 0x0497, 1, 0x0496, /* CYRILLIC CAPITAL LETTER ZHE WITH .. */ + /*1117*/ 0x0499, 1, 0x0498, /* CYRILLIC CAPITAL LETTER ZE WITH D.. */ + /*1120*/ 0x049b, 1, 0x049a, /* CYRILLIC CAPITAL LETTER KA WITH D.. */ + /*1123*/ 0x049d, 1, 0x049c, /* CYRILLIC CAPITAL LETTER KA WITH V.. */ + /*1126*/ 0x049f, 1, 0x049e, /* CYRILLIC CAPITAL LETTER KA WITH S.. */ + /*1129*/ 0x04a1, 1, 0x04a0, /* CYRILLIC CAPITAL LETTER BASHKIR KA */ + /*1132*/ 0x04a3, 1, 0x04a2, /* CYRILLIC CAPITAL LETTER EN WITH D.. */ + /*1135*/ 0x04a5, 1, 0x04a4, /* CYRILLIC CAPITAL LIGATURE EN GHE */ + /*1138*/ 0x04a7, 1, 0x04a6, /* CYRILLIC CAPITAL LETTER PE WITH M.. */ + /*1141*/ 0x04a9, 1, 0x04a8, /* CYRILLIC CAPITAL LETTER ABKHASIAN.. */ + /*1144*/ 0x04ab, 1, 0x04aa, /* CYRILLIC CAPITAL LETTER ES WITH D.. */ + /*1147*/ 0x04ad, 1, 0x04ac, /* CYRILLIC CAPITAL LETTER TE WITH D.. */ + /*1150*/ 0x04af, 1, 0x04ae, /* CYRILLIC CAPITAL LETTER STRAIGHT U */ + /*1153*/ 0x04b1, 1, 0x04b0, /* CYRILLIC CAPITAL LETTER STRAIGHT .. */ + /*1156*/ 0x04b3, 1, 0x04b2, /* CYRILLIC CAPITAL LETTER HA WITH D.. */ + /*1159*/ 0x04b5, 1, 0x04b4, /* CYRILLIC CAPITAL LIGATURE TE TSE */ + /*1162*/ 0x04b7, 1, 0x04b6, /* CYRILLIC CAPITAL LETTER CHE WITH .. */ + /*1165*/ 0x04b9, 1, 0x04b8, /* CYRILLIC CAPITAL LETTER CHE WITH .. */ + /*1168*/ 0x04bb, 1, 0x04ba, /* CYRILLIC CAPITAL LETTER SHHA */ + /*1171*/ 0x04bd, 1, 0x04bc, /* CYRILLIC CAPITAL LETTER ABKHASIAN.. */ + /*1174*/ 0x04bf, 1, 0x04be, /* CYRILLIC CAPITAL LETTER ABKHASIAN.. */ + /*1177*/ 0x04c2, 1, 0x04c1, /* CYRILLIC CAPITAL LETTER ZHE WITH .. */ + /*1180*/ 0x04c4, 1, 0x04c3, /* CYRILLIC CAPITAL LETTER KA WITH H.. */ + /*1183*/ 0x04c6, 1, 0x04c5, /* CYRILLIC CAPITAL LETTER EL WITH T.. */ + /*1186*/ 0x04c8, 1, 0x04c7, /* CYRILLIC CAPITAL LETTER EN WITH H.. */ + /*1189*/ 0x04ca, 1, 0x04c9, /* CYRILLIC CAPITAL LETTER EN WITH T.. */ + /*1192*/ 0x04cc, 1, 0x04cb, /* CYRILLIC CAPITAL LETTER KHAKASSIA.. */ + /*1195*/ 0x04ce, 1, 0x04cd, /* CYRILLIC CAPITAL LETTER EM WITH T.. */ + /*1198*/ 0x04cf, 1, 0x04c0, /* CYRILLIC LETTER PALOCHKA */ + /*1201*/ 0x04d1, 1, 0x04d0, /* CYRILLIC CAPITAL LETTER A WITH BR.. */ + /*1204*/ 0x04d3, 1, 0x04d2, /* CYRILLIC CAPITAL LETTER A WITH DI.. */ + /*1207*/ 0x04d5, 1, 0x04d4, /* CYRILLIC CAPITAL LIGATURE A IE */ + /*1210*/ 0x04d7, 1, 0x04d6, /* CYRILLIC CAPITAL LETTER IE WITH B.. */ + /*1213*/ 0x04d9, 1, 0x04d8, /* CYRILLIC CAPITAL LETTER SCHWA */ + /*1216*/ 0x04db, 1, 0x04da, /* CYRILLIC CAPITAL LETTER SCHWA WIT.. */ + /*1219*/ 0x04dd, 1, 0x04dc, /* CYRILLIC CAPITAL LETTER ZHE WITH .. */ + /*1222*/ 0x04df, 1, 0x04de, /* CYRILLIC CAPITAL LETTER ZE WITH D.. */ + /*1225*/ 0x04e1, 1, 0x04e0, /* CYRILLIC CAPITAL LETTER ABKHASIAN.. */ + /*1228*/ 0x04e3, 1, 0x04e2, /* CYRILLIC CAPITAL LETTER I WITH MA.. */ + /*1231*/ 0x04e5, 1, 0x04e4, /* CYRILLIC CAPITAL LETTER I WITH DI.. */ + /*1234*/ 0x04e7, 1, 0x04e6, /* CYRILLIC CAPITAL LETTER O WITH DI.. */ + /*1237*/ 0x04e9, 1, 0x04e8, /* CYRILLIC CAPITAL LETTER BARRED O */ + /*1240*/ 0x04eb, 1, 0x04ea, /* CYRILLIC CAPITAL LETTER BARRED O .. */ + /*1243*/ 0x04ed, 1, 0x04ec, /* CYRILLIC CAPITAL LETTER E WITH DI.. */ + /*1246*/ 0x04ef, 1, 0x04ee, /* CYRILLIC CAPITAL LETTER U WITH MA.. */ + /*1249*/ 0x04f1, 1, 0x04f0, /* CYRILLIC CAPITAL LETTER U WITH DI.. */ + /*1252*/ 0x04f3, 1, 0x04f2, /* CYRILLIC CAPITAL LETTER U WITH DO.. */ + /*1255*/ 0x04f5, 1, 0x04f4, /* CYRILLIC CAPITAL LETTER CHE WITH .. */ + /*1258*/ 0x04f7, 1, 0x04f6, /* CYRILLIC CAPITAL LETTER GHE WITH .. */ + /*1261*/ 0x04f9, 1, 0x04f8, /* CYRILLIC CAPITAL LETTER YERU WITH.. */ + /*1264*/ 0x04fb, 1, 0x04fa, /* CYRILLIC CAPITAL LETTER GHE WITH .. */ + /*1267*/ 0x04fd, 1, 0x04fc, /* CYRILLIC CAPITAL LETTER HA WITH H.. */ + /*1270*/ 0x04ff, 1, 0x04fe, /* CYRILLIC CAPITAL LETTER HA WITH S.. */ + /*1273*/ 0x0501, 1, 0x0500, /* CYRILLIC CAPITAL LETTER KOMI DE */ + /*1276*/ 0x0503, 1, 0x0502, /* CYRILLIC CAPITAL LETTER KOMI DJE */ + /*1279*/ 0x0505, 1, 0x0504, /* CYRILLIC CAPITAL LETTER KOMI ZJE */ + /*1282*/ 0x0507, 1, 0x0506, /* CYRILLIC CAPITAL LETTER KOMI DZJE */ + /*1285*/ 0x0509, 1, 0x0508, /* CYRILLIC CAPITAL LETTER KOMI LJE */ + /*1288*/ 0x050b, 1, 0x050a, /* CYRILLIC CAPITAL LETTER KOMI NJE */ + /*1291*/ 0x050d, 1, 0x050c, /* CYRILLIC CAPITAL LETTER KOMI SJE */ + /*1294*/ 0x050f, 1, 0x050e, /* CYRILLIC CAPITAL LETTER KOMI TJE */ + /*1297*/ 0x0511, 1, 0x0510, /* CYRILLIC CAPITAL LETTER REVERSED .. */ + /*1300*/ 0x0513, 1, 0x0512, /* CYRILLIC CAPITAL LETTER EL WITH H.. */ + /*1303*/ 0x0515, 1, 0x0514, /* CYRILLIC CAPITAL LETTER LHA */ + /*1306*/ 0x0517, 1, 0x0516, /* CYRILLIC CAPITAL LETTER RHA */ + /*1309*/ 0x0519, 1, 0x0518, /* CYRILLIC CAPITAL LETTER YAE */ + /*1312*/ 0x051b, 1, 0x051a, /* CYRILLIC CAPITAL LETTER QA */ + /*1315*/ 0x051d, 1, 0x051c, /* CYRILLIC CAPITAL LETTER WE */ + /*1318*/ 0x051f, 1, 0x051e, /* CYRILLIC CAPITAL LETTER ALEUT KA */ + /*1321*/ 0x0521, 1, 0x0520, /* CYRILLIC CAPITAL LETTER EL WITH M.. */ + /*1324*/ 0x0523, 1, 0x0522, /* CYRILLIC CAPITAL LETTER EN WITH M.. */ + /*1327*/ 0x0525, 1, 0x0524, /* CYRILLIC CAPITAL LETTER PE WITH D.. */ + /*1330*/ 0x0527, 1, 0x0526, /* CYRILLIC CAPITAL LETTER SHHA WITH.. */ + /*1333*/ 0x0529, 1, 0x0528, /* CYRILLIC CAPITAL LETTER EN WITH L.. */ + /*1336*/ 0x052b, 1, 0x052a, /* CYRILLIC CAPITAL LETTER DZZHE */ + /*1339*/ 0x052d, 1, 0x052c, /* CYRILLIC CAPITAL LETTER DCHE */ + /*1342*/ 0x052f, 1, 0x052e, /* CYRILLIC CAPITAL LETTER EL WITH D.. */ + /*1345*/ 0x0561, 1, 0x0531, /* ARMENIAN CAPITAL LETTER AYB */ + /*1348*/ 0x0562, 1, 0x0532, /* ARMENIAN CAPITAL LETTER BEN */ + /*1351*/ 0x0563, 1, 0x0533, /* ARMENIAN CAPITAL LETTER GIM */ + /*1354*/ 0x0564, 1, 0x0534, /* ARMENIAN CAPITAL LETTER DA */ + /*1357*/ 0x0565, 1, 0x0535, /* ARMENIAN CAPITAL LETTER ECH */ + /*1360*/ 0x0566, 1, 0x0536, /* ARMENIAN CAPITAL LETTER ZA */ + /*1363*/ 0x0567, 1, 0x0537, /* ARMENIAN CAPITAL LETTER EH */ + /*1366*/ 0x0568, 1, 0x0538, /* ARMENIAN CAPITAL LETTER ET */ + /*1369*/ 0x0569, 1, 0x0539, /* ARMENIAN CAPITAL LETTER TO */ + /*1372*/ 0x056a, 1, 0x053a, /* ARMENIAN CAPITAL LETTER ZHE */ + /*1375*/ 0x056b, 1, 0x053b, /* ARMENIAN CAPITAL LETTER INI */ + /*1378*/ 0x056c, 1, 0x053c, /* ARMENIAN CAPITAL LETTER LIWN */ + /*1381*/ 0x056d, 1, 0x053d, /* ARMENIAN CAPITAL LETTER XEH */ + /*1384*/ 0x056e, 1, 0x053e, /* ARMENIAN CAPITAL LETTER CA */ + /*1387*/ 0x056f, 1, 0x053f, /* ARMENIAN CAPITAL LETTER KEN */ + /*1390*/ 0x0570, 1, 0x0540, /* ARMENIAN CAPITAL LETTER HO */ + /*1393*/ 0x0571, 1, 0x0541, /* ARMENIAN CAPITAL LETTER JA */ + /*1396*/ 0x0572, 1, 0x0542, /* ARMENIAN CAPITAL LETTER GHAD */ + /*1399*/ 0x0573, 1, 0x0543, /* ARMENIAN CAPITAL LETTER CHEH */ + /*1402*/ 0x0574, 1, 0x0544, /* ARMENIAN CAPITAL LETTER MEN */ + /*1405*/ 0x0575, 1, 0x0545, /* ARMENIAN CAPITAL LETTER YI */ + /*1408*/ 0x0576, 1, 0x0546, /* ARMENIAN CAPITAL LETTER NOW */ + /*1411*/ 0x0577, 1, 0x0547, /* ARMENIAN CAPITAL LETTER SHA */ + /*1414*/ 0x0578, 1, 0x0548, /* ARMENIAN CAPITAL LETTER VO */ + /*1417*/ 0x0579, 1, 0x0549, /* ARMENIAN CAPITAL LETTER CHA */ + /*1420*/ 0x057a, 1, 0x054a, /* ARMENIAN CAPITAL LETTER PEH */ + /*1423*/ 0x057b, 1, 0x054b, /* ARMENIAN CAPITAL LETTER JHEH */ + /*1426*/ 0x057c, 1, 0x054c, /* ARMENIAN CAPITAL LETTER RA */ + /*1429*/ 0x057d, 1, 0x054d, /* ARMENIAN CAPITAL LETTER SEH */ + /*1432*/ 0x057e, 1, 0x054e, /* ARMENIAN CAPITAL LETTER VEW */ + /*1435*/ 0x057f, 1, 0x054f, /* ARMENIAN CAPITAL LETTER TIWN */ + /*1438*/ 0x0580, 1, 0x0550, /* ARMENIAN CAPITAL LETTER REH */ + /*1441*/ 0x0581, 1, 0x0551, /* ARMENIAN CAPITAL LETTER CO */ + /*1444*/ 0x0582, 1, 0x0552, /* ARMENIAN CAPITAL LETTER YIWN */ + /*1447*/ 0x0583, 1, 0x0553, /* ARMENIAN CAPITAL LETTER PIWR */ + /*1450*/ 0x0584, 1, 0x0554, /* ARMENIAN CAPITAL LETTER KEH */ + /*1453*/ 0x0585, 1, 0x0555, /* ARMENIAN CAPITAL LETTER OH */ + /*1456*/ 0x0586, 1, 0x0556, /* ARMENIAN CAPITAL LETTER FEH */ + /*1459*/ 0x10d0, 1, 0x1c90, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1462*/ 0x10d1, 1, 0x1c91, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1465*/ 0x10d2, 1, 0x1c92, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1468*/ 0x10d3, 1, 0x1c93, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1471*/ 0x10d4, 1, 0x1c94, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1474*/ 0x10d5, 1, 0x1c95, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1477*/ 0x10d6, 1, 0x1c96, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1480*/ 0x10d7, 1, 0x1c97, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1483*/ 0x10d8, 1, 0x1c98, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1486*/ 0x10d9, 1, 0x1c99, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1489*/ 0x10da, 1, 0x1c9a, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1492*/ 0x10db, 1, 0x1c9b, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1495*/ 0x10dc, 1, 0x1c9c, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1498*/ 0x10dd, 1, 0x1c9d, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1501*/ 0x10de, 1, 0x1c9e, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1504*/ 0x10df, 1, 0x1c9f, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1507*/ 0x10e0, 1, 0x1ca0, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1510*/ 0x10e1, 1, 0x1ca1, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1513*/ 0x10e2, 1, 0x1ca2, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1516*/ 0x10e3, 1, 0x1ca3, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1519*/ 0x10e4, 1, 0x1ca4, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1522*/ 0x10e5, 1, 0x1ca5, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1525*/ 0x10e6, 1, 0x1ca6, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1528*/ 0x10e7, 1, 0x1ca7, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1531*/ 0x10e8, 1, 0x1ca8, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1534*/ 0x10e9, 1, 0x1ca9, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1537*/ 0x10ea, 1, 0x1caa, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1540*/ 0x10eb, 1, 0x1cab, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1543*/ 0x10ec, 1, 0x1cac, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1546*/ 0x10ed, 1, 0x1cad, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1549*/ 0x10ee, 1, 0x1cae, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1552*/ 0x10ef, 1, 0x1caf, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1555*/ 0x10f0, 1, 0x1cb0, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1558*/ 0x10f1, 1, 0x1cb1, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1561*/ 0x10f2, 1, 0x1cb2, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1564*/ 0x10f3, 1, 0x1cb3, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1567*/ 0x10f4, 1, 0x1cb4, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1570*/ 0x10f5, 1, 0x1cb5, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1573*/ 0x10f6, 1, 0x1cb6, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1576*/ 0x10f7, 1, 0x1cb7, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1579*/ 0x10f8, 1, 0x1cb8, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1582*/ 0x10f9, 1, 0x1cb9, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1585*/ 0x10fa, 1, 0x1cba, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1588*/ 0x10fd, 1, 0x1cbd, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1591*/ 0x10fe, 1, 0x1cbe, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1594*/ 0x10ff, 1, 0x1cbf, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1597*/ 0x13a0, 1, 0xab70, /* CHEROKEE SMALL LETTER A */ + /*1600*/ 0x13a1, 1, 0xab71, /* CHEROKEE SMALL LETTER E */ + /*1603*/ 0x13a2, 1, 0xab72, /* CHEROKEE SMALL LETTER I */ + /*1606*/ 0x13a3, 1, 0xab73, /* CHEROKEE SMALL LETTER O */ + /*1609*/ 0x13a4, 1, 0xab74, /* CHEROKEE SMALL LETTER U */ + /*1612*/ 0x13a5, 1, 0xab75, /* CHEROKEE SMALL LETTER V */ + /*1615*/ 0x13a6, 1, 0xab76, /* CHEROKEE SMALL LETTER GA */ + /*1618*/ 0x13a7, 1, 0xab77, /* CHEROKEE SMALL LETTER KA */ + /*1621*/ 0x13a8, 1, 0xab78, /* CHEROKEE SMALL LETTER GE */ + /*1624*/ 0x13a9, 1, 0xab79, /* CHEROKEE SMALL LETTER GI */ + /*1627*/ 0x13aa, 1, 0xab7a, /* CHEROKEE SMALL LETTER GO */ + /*1630*/ 0x13ab, 1, 0xab7b, /* CHEROKEE SMALL LETTER GU */ + /*1633*/ 0x13ac, 1, 0xab7c, /* CHEROKEE SMALL LETTER GV */ + /*1636*/ 0x13ad, 1, 0xab7d, /* CHEROKEE SMALL LETTER HA */ + /*1639*/ 0x13ae, 1, 0xab7e, /* CHEROKEE SMALL LETTER HE */ + /*1642*/ 0x13af, 1, 0xab7f, /* CHEROKEE SMALL LETTER HI */ + /*1645*/ 0x13b0, 1, 0xab80, /* CHEROKEE SMALL LETTER HO */ + /*1648*/ 0x13b1, 1, 0xab81, /* CHEROKEE SMALL LETTER HU */ + /*1651*/ 0x13b2, 1, 0xab82, /* CHEROKEE SMALL LETTER HV */ + /*1654*/ 0x13b3, 1, 0xab83, /* CHEROKEE SMALL LETTER LA */ + /*1657*/ 0x13b4, 1, 0xab84, /* CHEROKEE SMALL LETTER LE */ + /*1660*/ 0x13b5, 1, 0xab85, /* CHEROKEE SMALL LETTER LI */ + /*1663*/ 0x13b6, 1, 0xab86, /* CHEROKEE SMALL LETTER LO */ + /*1666*/ 0x13b7, 1, 0xab87, /* CHEROKEE SMALL LETTER LU */ + /*1669*/ 0x13b8, 1, 0xab88, /* CHEROKEE SMALL LETTER LV */ + /*1672*/ 0x13b9, 1, 0xab89, /* CHEROKEE SMALL LETTER MA */ + /*1675*/ 0x13ba, 1, 0xab8a, /* CHEROKEE SMALL LETTER ME */ + /*1678*/ 0x13bb, 1, 0xab8b, /* CHEROKEE SMALL LETTER MI */ + /*1681*/ 0x13bc, 1, 0xab8c, /* CHEROKEE SMALL LETTER MO */ + /*1684*/ 0x13bd, 1, 0xab8d, /* CHEROKEE SMALL LETTER MU */ + /*1687*/ 0x13be, 1, 0xab8e, /* CHEROKEE SMALL LETTER NA */ + /*1690*/ 0x13bf, 1, 0xab8f, /* CHEROKEE SMALL LETTER HNA */ + /*1693*/ 0x13c0, 1, 0xab90, /* CHEROKEE SMALL LETTER NAH */ + /*1696*/ 0x13c1, 1, 0xab91, /* CHEROKEE SMALL LETTER NE */ + /*1699*/ 0x13c2, 1, 0xab92, /* CHEROKEE SMALL LETTER NI */ + /*1702*/ 0x13c3, 1, 0xab93, /* CHEROKEE SMALL LETTER NO */ + /*1705*/ 0x13c4, 1, 0xab94, /* CHEROKEE SMALL LETTER NU */ + /*1708*/ 0x13c5, 1, 0xab95, /* CHEROKEE SMALL LETTER NV */ + /*1711*/ 0x13c6, 1, 0xab96, /* CHEROKEE SMALL LETTER QUA */ + /*1714*/ 0x13c7, 1, 0xab97, /* CHEROKEE SMALL LETTER QUE */ + /*1717*/ 0x13c8, 1, 0xab98, /* CHEROKEE SMALL LETTER QUI */ + /*1720*/ 0x13c9, 1, 0xab99, /* CHEROKEE SMALL LETTER QUO */ + /*1723*/ 0x13ca, 1, 0xab9a, /* CHEROKEE SMALL LETTER QUU */ + /*1726*/ 0x13cb, 1, 0xab9b, /* CHEROKEE SMALL LETTER QUV */ + /*1729*/ 0x13cc, 1, 0xab9c, /* CHEROKEE SMALL LETTER SA */ + /*1732*/ 0x13cd, 1, 0xab9d, /* CHEROKEE SMALL LETTER S */ + /*1735*/ 0x13ce, 1, 0xab9e, /* CHEROKEE SMALL LETTER SE */ + /*1738*/ 0x13cf, 1, 0xab9f, /* CHEROKEE SMALL LETTER SI */ + /*1741*/ 0x13d0, 1, 0xaba0, /* CHEROKEE SMALL LETTER SO */ + /*1744*/ 0x13d1, 1, 0xaba1, /* CHEROKEE SMALL LETTER SU */ + /*1747*/ 0x13d2, 1, 0xaba2, /* CHEROKEE SMALL LETTER SV */ + /*1750*/ 0x13d3, 1, 0xaba3, /* CHEROKEE SMALL LETTER DA */ + /*1753*/ 0x13d4, 1, 0xaba4, /* CHEROKEE SMALL LETTER TA */ + /*1756*/ 0x13d5, 1, 0xaba5, /* CHEROKEE SMALL LETTER DE */ + /*1759*/ 0x13d6, 1, 0xaba6, /* CHEROKEE SMALL LETTER TE */ + /*1762*/ 0x13d7, 1, 0xaba7, /* CHEROKEE SMALL LETTER DI */ + /*1765*/ 0x13d8, 1, 0xaba8, /* CHEROKEE SMALL LETTER TI */ + /*1768*/ 0x13d9, 1, 0xaba9, /* CHEROKEE SMALL LETTER DO */ + /*1771*/ 0x13da, 1, 0xabaa, /* CHEROKEE SMALL LETTER DU */ + /*1774*/ 0x13db, 1, 0xabab, /* CHEROKEE SMALL LETTER DV */ + /*1777*/ 0x13dc, 1, 0xabac, /* CHEROKEE SMALL LETTER DLA */ + /*1780*/ 0x13dd, 1, 0xabad, /* CHEROKEE SMALL LETTER TLA */ + /*1783*/ 0x13de, 1, 0xabae, /* CHEROKEE SMALL LETTER TLE */ + /*1786*/ 0x13df, 1, 0xabaf, /* CHEROKEE SMALL LETTER TLI */ + /*1789*/ 0x13e0, 1, 0xabb0, /* CHEROKEE SMALL LETTER TLO */ + /*1792*/ 0x13e1, 1, 0xabb1, /* CHEROKEE SMALL LETTER TLU */ + /*1795*/ 0x13e2, 1, 0xabb2, /* CHEROKEE SMALL LETTER TLV */ + /*1798*/ 0x13e3, 1, 0xabb3, /* CHEROKEE SMALL LETTER TSA */ + /*1801*/ 0x13e4, 1, 0xabb4, /* CHEROKEE SMALL LETTER TSE */ + /*1804*/ 0x13e5, 1, 0xabb5, /* CHEROKEE SMALL LETTER TSI */ + /*1807*/ 0x13e6, 1, 0xabb6, /* CHEROKEE SMALL LETTER TSO */ + /*1810*/ 0x13e7, 1, 0xabb7, /* CHEROKEE SMALL LETTER TSU */ + /*1813*/ 0x13e8, 1, 0xabb8, /* CHEROKEE SMALL LETTER TSV */ + /*1816*/ 0x13e9, 1, 0xabb9, /* CHEROKEE SMALL LETTER WA */ + /*1819*/ 0x13ea, 1, 0xabba, /* CHEROKEE SMALL LETTER WE */ + /*1822*/ 0x13eb, 1, 0xabbb, /* CHEROKEE SMALL LETTER WI */ + /*1825*/ 0x13ec, 1, 0xabbc, /* CHEROKEE SMALL LETTER WO */ + /*1828*/ 0x13ed, 1, 0xabbd, /* CHEROKEE SMALL LETTER WU */ + /*1831*/ 0x13ee, 1, 0xabbe, /* CHEROKEE SMALL LETTER WV */ + /*1834*/ 0x13ef, 1, 0xabbf, /* CHEROKEE SMALL LETTER YA */ + /*1837*/ 0x13f0, 1, 0x13f8, /* CHEROKEE SMALL LETTER YE */ + /*1840*/ 0x13f1, 1, 0x13f9, /* CHEROKEE SMALL LETTER YI */ + /*1843*/ 0x13f2, 1, 0x13fa, /* CHEROKEE SMALL LETTER YO */ + /*1846*/ 0x13f3, 1, 0x13fb, /* CHEROKEE SMALL LETTER YU */ + /*1849*/ 0x13f4, 1, 0x13fc, /* CHEROKEE SMALL LETTER YV */ + /*1852*/ 0x13f5, 1, 0x13fd, /* CHEROKEE SMALL LETTER MV */ + /*1855*/ 0x1d79, 1, 0xa77d, /* LATIN CAPITAL LETTER INSULAR G */ + /*1858*/ 0x1d7d, 1, 0x2c63, /* LATIN CAPITAL LETTER P WITH STROKE */ + /*1861*/ 0x1e01, 1, 0x1e00, /* LATIN CAPITAL LETTER A WITH RING .. */ + /*1864*/ 0x1e03, 1, 0x1e02, /* LATIN CAPITAL LETTER B WITH DOT A.. */ + /*1867*/ 0x1e05, 1, 0x1e04, /* LATIN CAPITAL LETTER B WITH DOT B.. */ + /*1870*/ 0x1e07, 1, 0x1e06, /* LATIN CAPITAL LETTER B WITH LINE .. */ + /*1873*/ 0x1e09, 1, 0x1e08, /* LATIN CAPITAL LETTER C WITH CEDIL.. */ + /*1876*/ 0x1e0b, 1, 0x1e0a, /* LATIN CAPITAL LETTER D WITH DOT A.. */ + /*1879*/ 0x1e0d, 1, 0x1e0c, /* LATIN CAPITAL LETTER D WITH DOT B.. */ + /*1882*/ 0x1e0f, 1, 0x1e0e, /* LATIN CAPITAL LETTER D WITH LINE .. */ + /*1885*/ 0x1e11, 1, 0x1e10, /* LATIN CAPITAL LETTER D WITH CEDIL.. */ + /*1888*/ 0x1e13, 1, 0x1e12, /* LATIN CAPITAL LETTER D WITH CIRCU.. */ + /*1891*/ 0x1e15, 1, 0x1e14, /* LATIN CAPITAL LETTER E WITH MACRO.. */ + /*1894*/ 0x1e17, 1, 0x1e16, /* LATIN CAPITAL LETTER E WITH MACRO.. */ + /*1897*/ 0x1e19, 1, 0x1e18, /* LATIN CAPITAL LETTER E WITH CIRCU.. */ + /*1900*/ 0x1e1b, 1, 0x1e1a, /* LATIN CAPITAL LETTER E WITH TILDE.. */ + /*1903*/ 0x1e1d, 1, 0x1e1c, /* LATIN CAPITAL LETTER E WITH CEDIL.. */ + /*1906*/ 0x1e1f, 1, 0x1e1e, /* LATIN CAPITAL LETTER F WITH DOT A.. */ + /*1909*/ 0x1e21, 1, 0x1e20, /* LATIN CAPITAL LETTER G WITH MACRON */ + /*1912*/ 0x1e23, 1, 0x1e22, /* LATIN CAPITAL LETTER H WITH DOT A.. */ + /*1915*/ 0x1e25, 1, 0x1e24, /* LATIN CAPITAL LETTER H WITH DOT B.. */ + /*1918*/ 0x1e27, 1, 0x1e26, /* LATIN CAPITAL LETTER H WITH DIAER.. */ + /*1921*/ 0x1e29, 1, 0x1e28, /* LATIN CAPITAL LETTER H WITH CEDIL.. */ + /*1924*/ 0x1e2b, 1, 0x1e2a, /* LATIN CAPITAL LETTER H WITH BREVE.. */ + /*1927*/ 0x1e2d, 1, 0x1e2c, /* LATIN CAPITAL LETTER I WITH TILDE.. */ + /*1930*/ 0x1e2f, 1, 0x1e2e, /* LATIN CAPITAL LETTER I WITH DIAER.. */ + /*1933*/ 0x1e31, 1, 0x1e30, /* LATIN CAPITAL LETTER K WITH ACUTE */ + /*1936*/ 0x1e33, 1, 0x1e32, /* LATIN CAPITAL LETTER K WITH DOT B.. */ + /*1939*/ 0x1e35, 1, 0x1e34, /* LATIN CAPITAL LETTER K WITH LINE .. */ + /*1942*/ 0x1e37, 1, 0x1e36, /* LATIN CAPITAL LETTER L WITH DOT B.. */ + /*1945*/ 0x1e39, 1, 0x1e38, /* LATIN CAPITAL LETTER L WITH DOT B.. */ + /*1948*/ 0x1e3b, 1, 0x1e3a, /* LATIN CAPITAL LETTER L WITH LINE .. */ + /*1951*/ 0x1e3d, 1, 0x1e3c, /* LATIN CAPITAL LETTER L WITH CIRCU.. */ + /*1954*/ 0x1e3f, 1, 0x1e3e, /* LATIN CAPITAL LETTER M WITH ACUTE */ + /*1957*/ 0x1e41, 1, 0x1e40, /* LATIN CAPITAL LETTER M WITH DOT A.. */ + /*1960*/ 0x1e43, 1, 0x1e42, /* LATIN CAPITAL LETTER M WITH DOT B.. */ + /*1963*/ 0x1e45, 1, 0x1e44, /* LATIN CAPITAL LETTER N WITH DOT A.. */ + /*1966*/ 0x1e47, 1, 0x1e46, /* LATIN CAPITAL LETTER N WITH DOT B.. */ + /*1969*/ 0x1e49, 1, 0x1e48, /* LATIN CAPITAL LETTER N WITH LINE .. */ + /*1972*/ 0x1e4b, 1, 0x1e4a, /* LATIN CAPITAL LETTER N WITH CIRCU.. */ + /*1975*/ 0x1e4d, 1, 0x1e4c, /* LATIN CAPITAL LETTER O WITH TILDE.. */ + /*1978*/ 0x1e4f, 1, 0x1e4e, /* LATIN CAPITAL LETTER O WITH TILDE.. */ + /*1981*/ 0x1e51, 1, 0x1e50, /* LATIN CAPITAL LETTER O WITH MACRO.. */ + /*1984*/ 0x1e53, 1, 0x1e52, /* LATIN CAPITAL LETTER O WITH MACRO.. */ + /*1987*/ 0x1e55, 1, 0x1e54, /* LATIN CAPITAL LETTER P WITH ACUTE */ + /*1990*/ 0x1e57, 1, 0x1e56, /* LATIN CAPITAL LETTER P WITH DOT A.. */ + /*1993*/ 0x1e59, 1, 0x1e58, /* LATIN CAPITAL LETTER R WITH DOT A.. */ + /*1996*/ 0x1e5b, 1, 0x1e5a, /* LATIN CAPITAL LETTER R WITH DOT B.. */ + /*1999*/ 0x1e5d, 1, 0x1e5c, /* LATIN CAPITAL LETTER R WITH DOT B.. */ + /*2002*/ 0x1e5f, 1, 0x1e5e, /* LATIN CAPITAL LETTER R WITH LINE .. */ + /*2005*/ 0x1e61, 2, 0x1e60, 0x1e9b, /* LATIN CAPITAL LETTER S WITH DOT A.. */ + /*2009*/ 0x1e63, 1, 0x1e62, /* LATIN CAPITAL LETTER S WITH DOT B.. */ + /*2012*/ 0x1e65, 1, 0x1e64, /* LATIN CAPITAL LETTER S WITH ACUTE.. */ + /*2015*/ 0x1e67, 1, 0x1e66, /* LATIN CAPITAL LETTER S WITH CARON.. */ + /*2018*/ 0x1e69, 1, 0x1e68, /* LATIN CAPITAL LETTER S WITH DOT B.. */ + /*2021*/ 0x1e6b, 1, 0x1e6a, /* LATIN CAPITAL LETTER T WITH DOT A.. */ + /*2024*/ 0x1e6d, 1, 0x1e6c, /* LATIN CAPITAL LETTER T WITH DOT B.. */ + /*2027*/ 0x1e6f, 1, 0x1e6e, /* LATIN CAPITAL LETTER T WITH LINE .. */ + /*2030*/ 0x1e71, 1, 0x1e70, /* LATIN CAPITAL LETTER T WITH CIRCU.. */ + /*2033*/ 0x1e73, 1, 0x1e72, /* LATIN CAPITAL LETTER U WITH DIAER.. */ + /*2036*/ 0x1e75, 1, 0x1e74, /* LATIN CAPITAL LETTER U WITH TILDE.. */ + /*2039*/ 0x1e77, 1, 0x1e76, /* LATIN CAPITAL LETTER U WITH CIRCU.. */ + /*2042*/ 0x1e79, 1, 0x1e78, /* LATIN CAPITAL LETTER U WITH TILDE.. */ + /*2045*/ 0x1e7b, 1, 0x1e7a, /* LATIN CAPITAL LETTER U WITH MACRO.. */ + /*2048*/ 0x1e7d, 1, 0x1e7c, /* LATIN CAPITAL LETTER V WITH TILDE */ + /*2051*/ 0x1e7f, 1, 0x1e7e, /* LATIN CAPITAL LETTER V WITH DOT B.. */ + /*2054*/ 0x1e81, 1, 0x1e80, /* LATIN CAPITAL LETTER W WITH GRAVE */ + /*2057*/ 0x1e83, 1, 0x1e82, /* LATIN CAPITAL LETTER W WITH ACUTE */ + /*2060*/ 0x1e85, 1, 0x1e84, /* LATIN CAPITAL LETTER W WITH DIAER.. */ + /*2063*/ 0x1e87, 1, 0x1e86, /* LATIN CAPITAL LETTER W WITH DOT A.. */ + /*2066*/ 0x1e89, 1, 0x1e88, /* LATIN CAPITAL LETTER W WITH DOT B.. */ + /*2069*/ 0x1e8b, 1, 0x1e8a, /* LATIN CAPITAL LETTER X WITH DOT A.. */ + /*2072*/ 0x1e8d, 1, 0x1e8c, /* LATIN CAPITAL LETTER X WITH DIAER.. */ + /*2075*/ 0x1e8f, 1, 0x1e8e, /* LATIN CAPITAL LETTER Y WITH DOT A.. */ + /*2078*/ 0x1e91, 1, 0x1e90, /* LATIN CAPITAL LETTER Z WITH CIRCU.. */ + /*2081*/ 0x1e93, 1, 0x1e92, /* LATIN CAPITAL LETTER Z WITH DOT B.. */ + /*2084*/ 0x1e95, 1, 0x1e94, /* LATIN CAPITAL LETTER Z WITH LINE .. */ + /*2087*/ 0x1ea1, 1, 0x1ea0, /* LATIN CAPITAL LETTER A WITH DOT B.. */ + /*2090*/ 0x1ea3, 1, 0x1ea2, /* LATIN CAPITAL LETTER A WITH HOOK .. */ + /*2093*/ 0x1ea5, 1, 0x1ea4, /* LATIN CAPITAL LETTER A WITH CIRCU.. */ + /*2096*/ 0x1ea7, 1, 0x1ea6, /* LATIN CAPITAL LETTER A WITH CIRCU.. */ + /*2099*/ 0x1ea9, 1, 0x1ea8, /* LATIN CAPITAL LETTER A WITH CIRCU.. */ + /*2102*/ 0x1eab, 1, 0x1eaa, /* LATIN CAPITAL LETTER A WITH CIRCU.. */ + /*2105*/ 0x1ead, 1, 0x1eac, /* LATIN CAPITAL LETTER A WITH CIRCU.. */ + /*2108*/ 0x1eaf, 1, 0x1eae, /* LATIN CAPITAL LETTER A WITH BREVE.. */ + /*2111*/ 0x1eb1, 1, 0x1eb0, /* LATIN CAPITAL LETTER A WITH BREVE.. */ + /*2114*/ 0x1eb3, 1, 0x1eb2, /* LATIN CAPITAL LETTER A WITH BREVE.. */ + /*2117*/ 0x1eb5, 1, 0x1eb4, /* LATIN CAPITAL LETTER A WITH BREVE.. */ + /*2120*/ 0x1eb7, 1, 0x1eb6, /* LATIN CAPITAL LETTER A WITH BREVE.. */ + /*2123*/ 0x1eb9, 1, 0x1eb8, /* LATIN CAPITAL LETTER E WITH DOT B.. */ + /*2126*/ 0x1ebb, 1, 0x1eba, /* LATIN CAPITAL LETTER E WITH HOOK .. */ + /*2129*/ 0x1ebd, 1, 0x1ebc, /* LATIN CAPITAL LETTER E WITH TILDE */ + /*2132*/ 0x1ebf, 1, 0x1ebe, /* LATIN CAPITAL LETTER E WITH CIRCU.. */ + /*2135*/ 0x1ec1, 1, 0x1ec0, /* LATIN CAPITAL LETTER E WITH CIRCU.. */ + /*2138*/ 0x1ec3, 1, 0x1ec2, /* LATIN CAPITAL LETTER E WITH CIRCU.. */ + /*2141*/ 0x1ec5, 1, 0x1ec4, /* LATIN CAPITAL LETTER E WITH CIRCU.. */ + /*2144*/ 0x1ec7, 1, 0x1ec6, /* LATIN CAPITAL LETTER E WITH CIRCU.. */ + /*2147*/ 0x1ec9, 1, 0x1ec8, /* LATIN CAPITAL LETTER I WITH HOOK .. */ + /*2150*/ 0x1ecb, 1, 0x1eca, /* LATIN CAPITAL LETTER I WITH DOT B.. */ + /*2153*/ 0x1ecd, 1, 0x1ecc, /* LATIN CAPITAL LETTER O WITH DOT B.. */ + /*2156*/ 0x1ecf, 1, 0x1ece, /* LATIN CAPITAL LETTER O WITH HOOK .. */ + /*2159*/ 0x1ed1, 1, 0x1ed0, /* LATIN CAPITAL LETTER O WITH CIRCU.. */ + /*2162*/ 0x1ed3, 1, 0x1ed2, /* LATIN CAPITAL LETTER O WITH CIRCU.. */ + /*2165*/ 0x1ed5, 1, 0x1ed4, /* LATIN CAPITAL LETTER O WITH CIRCU.. */ + /*2168*/ 0x1ed7, 1, 0x1ed6, /* LATIN CAPITAL LETTER O WITH CIRCU.. */ + /*2171*/ 0x1ed9, 1, 0x1ed8, /* LATIN CAPITAL LETTER O WITH CIRCU.. */ + /*2174*/ 0x1edb, 1, 0x1eda, /* LATIN CAPITAL LETTER O WITH HORN .. */ + /*2177*/ 0x1edd, 1, 0x1edc, /* LATIN CAPITAL LETTER O WITH HORN .. */ + /*2180*/ 0x1edf, 1, 0x1ede, /* LATIN CAPITAL LETTER O WITH HORN .. */ + /*2183*/ 0x1ee1, 1, 0x1ee0, /* LATIN CAPITAL LETTER O WITH HORN .. */ + /*2186*/ 0x1ee3, 1, 0x1ee2, /* LATIN CAPITAL LETTER O WITH HORN .. */ + /*2189*/ 0x1ee5, 1, 0x1ee4, /* LATIN CAPITAL LETTER U WITH DOT B.. */ + /*2192*/ 0x1ee7, 1, 0x1ee6, /* LATIN CAPITAL LETTER U WITH HOOK .. */ + /*2195*/ 0x1ee9, 1, 0x1ee8, /* LATIN CAPITAL LETTER U WITH HORN .. */ + /*2198*/ 0x1eeb, 1, 0x1eea, /* LATIN CAPITAL LETTER U WITH HORN .. */ + /*2201*/ 0x1eed, 1, 0x1eec, /* LATIN CAPITAL LETTER U WITH HORN .. */ + /*2204*/ 0x1eef, 1, 0x1eee, /* LATIN CAPITAL LETTER U WITH HORN .. */ + /*2207*/ 0x1ef1, 1, 0x1ef0, /* LATIN CAPITAL LETTER U WITH HORN .. */ + /*2210*/ 0x1ef3, 1, 0x1ef2, /* LATIN CAPITAL LETTER Y WITH GRAVE */ + /*2213*/ 0x1ef5, 1, 0x1ef4, /* LATIN CAPITAL LETTER Y WITH DOT B.. */ + /*2216*/ 0x1ef7, 1, 0x1ef6, /* LATIN CAPITAL LETTER Y WITH HOOK .. */ + /*2219*/ 0x1ef9, 1, 0x1ef8, /* LATIN CAPITAL LETTER Y WITH TILDE */ + /*2222*/ 0x1efb, 1, 0x1efa, /* LATIN CAPITAL LETTER MIDDLE-WELSH.. */ + /*2225*/ 0x1efd, 1, 0x1efc, /* LATIN CAPITAL LETTER MIDDLE-WELSH.. */ + /*2228*/ 0x1eff, 1, 0x1efe, /* LATIN CAPITAL LETTER Y WITH LOOP */ + /*2231*/ 0x1f00, 1, 0x1f08, /* GREEK CAPITAL LETTER ALPHA WITH P.. */ + /*2234*/ 0x1f01, 1, 0x1f09, /* GREEK CAPITAL LETTER ALPHA WITH D.. */ + /*2237*/ 0x1f02, 1, 0x1f0a, /* GREEK CAPITAL LETTER ALPHA WITH P.. */ + /*2240*/ 0x1f03, 1, 0x1f0b, /* GREEK CAPITAL LETTER ALPHA WITH D.. */ + /*2243*/ 0x1f04, 1, 0x1f0c, /* GREEK CAPITAL LETTER ALPHA WITH P.. */ + /*2246*/ 0x1f05, 1, 0x1f0d, /* GREEK CAPITAL LETTER ALPHA WITH D.. */ + /*2249*/ 0x1f06, 1, 0x1f0e, /* GREEK CAPITAL LETTER ALPHA WITH P.. */ + /*2252*/ 0x1f07, 1, 0x1f0f, /* GREEK CAPITAL LETTER ALPHA WITH D.. */ + /*2255*/ 0x1f10, 1, 0x1f18, /* GREEK CAPITAL LETTER EPSILON WITH.. */ + /*2258*/ 0x1f11, 1, 0x1f19, /* GREEK CAPITAL LETTER EPSILON WITH.. */ + /*2261*/ 0x1f12, 1, 0x1f1a, /* GREEK CAPITAL LETTER EPSILON WITH.. */ + /*2264*/ 0x1f13, 1, 0x1f1b, /* GREEK CAPITAL LETTER EPSILON WITH.. */ + /*2267*/ 0x1f14, 1, 0x1f1c, /* GREEK CAPITAL LETTER EPSILON WITH.. */ + /*2270*/ 0x1f15, 1, 0x1f1d, /* GREEK CAPITAL LETTER EPSILON WITH.. */ + /*2273*/ 0x1f20, 1, 0x1f28, /* GREEK CAPITAL LETTER ETA WITH PSI.. */ + /*2276*/ 0x1f21, 1, 0x1f29, /* GREEK CAPITAL LETTER ETA WITH DAS.. */ + /*2279*/ 0x1f22, 1, 0x1f2a, /* GREEK CAPITAL LETTER ETA WITH PSI.. */ + /*2282*/ 0x1f23, 1, 0x1f2b, /* GREEK CAPITAL LETTER ETA WITH DAS.. */ + /*2285*/ 0x1f24, 1, 0x1f2c, /* GREEK CAPITAL LETTER ETA WITH PSI.. */ + /*2288*/ 0x1f25, 1, 0x1f2d, /* GREEK CAPITAL LETTER ETA WITH DAS.. */ + /*2291*/ 0x1f26, 1, 0x1f2e, /* GREEK CAPITAL LETTER ETA WITH PSI.. */ + /*2294*/ 0x1f27, 1, 0x1f2f, /* GREEK CAPITAL LETTER ETA WITH DAS.. */ + /*2297*/ 0x1f30, 1, 0x1f38, /* GREEK CAPITAL LETTER IOTA WITH PS.. */ + /*2300*/ 0x1f31, 1, 0x1f39, /* GREEK CAPITAL LETTER IOTA WITH DA.. */ + /*2303*/ 0x1f32, 1, 0x1f3a, /* GREEK CAPITAL LETTER IOTA WITH PS.. */ + /*2306*/ 0x1f33, 1, 0x1f3b, /* GREEK CAPITAL LETTER IOTA WITH DA.. */ + /*2309*/ 0x1f34, 1, 0x1f3c, /* GREEK CAPITAL LETTER IOTA WITH PS.. */ + /*2312*/ 0x1f35, 1, 0x1f3d, /* GREEK CAPITAL LETTER IOTA WITH DA.. */ + /*2315*/ 0x1f36, 1, 0x1f3e, /* GREEK CAPITAL LETTER IOTA WITH PS.. */ + /*2318*/ 0x1f37, 1, 0x1f3f, /* GREEK CAPITAL LETTER IOTA WITH DA.. */ + /*2321*/ 0x1f40, 1, 0x1f48, /* GREEK CAPITAL LETTER OMICRON WITH.. */ + /*2324*/ 0x1f41, 1, 0x1f49, /* GREEK CAPITAL LETTER OMICRON WITH.. */ + /*2327*/ 0x1f42, 1, 0x1f4a, /* GREEK CAPITAL LETTER OMICRON WITH.. */ + /*2330*/ 0x1f43, 1, 0x1f4b, /* GREEK CAPITAL LETTER OMICRON WITH.. */ + /*2333*/ 0x1f44, 1, 0x1f4c, /* GREEK CAPITAL LETTER OMICRON WITH.. */ + /*2336*/ 0x1f45, 1, 0x1f4d, /* GREEK CAPITAL LETTER OMICRON WITH.. */ + /*2339*/ 0x1f51, 1, 0x1f59, /* GREEK CAPITAL LETTER UPSILON WITH.. */ + /*2342*/ 0x1f53, 1, 0x1f5b, /* GREEK CAPITAL LETTER UPSILON WITH.. */ + /*2345*/ 0x1f55, 1, 0x1f5d, /* GREEK CAPITAL LETTER UPSILON WITH.. */ + /*2348*/ 0x1f57, 1, 0x1f5f, /* GREEK CAPITAL LETTER UPSILON WITH.. */ + /*2351*/ 0x1f60, 1, 0x1f68, /* GREEK CAPITAL LETTER OMEGA WITH P.. */ + /*2354*/ 0x1f61, 1, 0x1f69, /* GREEK CAPITAL LETTER OMEGA WITH D.. */ + /*2357*/ 0x1f62, 1, 0x1f6a, /* GREEK CAPITAL LETTER OMEGA WITH P.. */ + /*2360*/ 0x1f63, 1, 0x1f6b, /* GREEK CAPITAL LETTER OMEGA WITH D.. */ + /*2363*/ 0x1f64, 1, 0x1f6c, /* GREEK CAPITAL LETTER OMEGA WITH P.. */ + /*2366*/ 0x1f65, 1, 0x1f6d, /* GREEK CAPITAL LETTER OMEGA WITH D.. */ + /*2369*/ 0x1f66, 1, 0x1f6e, /* GREEK CAPITAL LETTER OMEGA WITH P.. */ + /*2372*/ 0x1f67, 1, 0x1f6f, /* GREEK CAPITAL LETTER OMEGA WITH D.. */ + /*2375*/ 0x1f70, 1, 0x1fba, /* GREEK CAPITAL LETTER ALPHA WITH V.. */ + /*2378*/ 0x1f71, 1, 0x1fbb, /* GREEK CAPITAL LETTER ALPHA WITH O.. */ + /*2381*/ 0x1f72, 1, 0x1fc8, /* GREEK CAPITAL LETTER EPSILON WITH.. */ + /*2384*/ 0x1f73, 1, 0x1fc9, /* GREEK CAPITAL LETTER EPSILON WITH.. */ + /*2387*/ 0x1f74, 1, 0x1fca, /* GREEK CAPITAL LETTER ETA WITH VAR.. */ + /*2390*/ 0x1f75, 1, 0x1fcb, /* GREEK CAPITAL LETTER ETA WITH OXIA */ + /*2393*/ 0x1f76, 1, 0x1fda, /* GREEK CAPITAL LETTER IOTA WITH VA.. */ + /*2396*/ 0x1f77, 1, 0x1fdb, /* GREEK CAPITAL LETTER IOTA WITH OX.. */ + /*2399*/ 0x1f78, 1, 0x1ff8, /* GREEK CAPITAL LETTER OMICRON WITH.. */ + /*2402*/ 0x1f79, 1, 0x1ff9, /* GREEK CAPITAL LETTER OMICRON WITH.. */ + /*2405*/ 0x1f7a, 1, 0x1fea, /* GREEK CAPITAL LETTER UPSILON WITH.. */ + /*2408*/ 0x1f7b, 1, 0x1feb, /* GREEK CAPITAL LETTER UPSILON WITH.. */ + /*2411*/ 0x1f7c, 1, 0x1ffa, /* GREEK CAPITAL LETTER OMEGA WITH V.. */ + /*2414*/ 0x1f7d, 1, 0x1ffb, /* GREEK CAPITAL LETTER OMEGA WITH O.. */ + /*2417*/ 0x1fb0, 1, 0x1fb8, /* GREEK CAPITAL LETTER ALPHA WITH V.. */ + /*2420*/ 0x1fb1, 1, 0x1fb9, /* GREEK CAPITAL LETTER ALPHA WITH M.. */ + /*2423*/ 0x1fd0, 1, 0x1fd8, /* GREEK CAPITAL LETTER IOTA WITH VR.. */ + /*2426*/ 0x1fd1, 1, 0x1fd9, /* GREEK CAPITAL LETTER IOTA WITH MA.. */ + /*2429*/ 0x1fe0, 1, 0x1fe8, /* GREEK CAPITAL LETTER UPSILON WITH.. */ + /*2432*/ 0x1fe1, 1, 0x1fe9, /* GREEK CAPITAL LETTER UPSILON WITH.. */ + /*2435*/ 0x1fe5, 1, 0x1fec, /* GREEK CAPITAL LETTER RHO WITH DAS.. */ + /*2438*/ 0x214e, 1, 0x2132, /* TURNED CAPITAL F */ + /*2441*/ 0x2170, 1, 0x2160, /* ROMAN NUMERAL ONE */ + /*2444*/ 0x2171, 1, 0x2161, /* ROMAN NUMERAL TWO */ + /*2447*/ 0x2172, 1, 0x2162, /* ROMAN NUMERAL THREE */ + /*2450*/ 0x2173, 1, 0x2163, /* ROMAN NUMERAL FOUR */ + /*2453*/ 0x2174, 1, 0x2164, /* ROMAN NUMERAL FIVE */ + /*2456*/ 0x2175, 1, 0x2165, /* ROMAN NUMERAL SIX */ + /*2459*/ 0x2176, 1, 0x2166, /* ROMAN NUMERAL SEVEN */ + /*2462*/ 0x2177, 1, 0x2167, /* ROMAN NUMERAL EIGHT */ + /*2465*/ 0x2178, 1, 0x2168, /* ROMAN NUMERAL NINE */ + /*2468*/ 0x2179, 1, 0x2169, /* ROMAN NUMERAL TEN */ + /*2471*/ 0x217a, 1, 0x216a, /* ROMAN NUMERAL ELEVEN */ + /*2474*/ 0x217b, 1, 0x216b, /* ROMAN NUMERAL TWELVE */ + /*2477*/ 0x217c, 1, 0x216c, /* ROMAN NUMERAL FIFTY */ + /*2480*/ 0x217d, 1, 0x216d, /* ROMAN NUMERAL ONE HUNDRED */ + /*2483*/ 0x217e, 1, 0x216e, /* ROMAN NUMERAL FIVE HUNDRED */ + /*2486*/ 0x217f, 1, 0x216f, /* ROMAN NUMERAL ONE THOUSAND */ + /*2489*/ 0x2184, 1, 0x2183, /* ROMAN NUMERAL REVERSED ONE HUNDRED */ + /*2492*/ 0x24d0, 1, 0x24b6, /* CIRCLED LATIN CAPITAL LETTER A */ + /*2495*/ 0x24d1, 1, 0x24b7, /* CIRCLED LATIN CAPITAL LETTER B */ + /*2498*/ 0x24d2, 1, 0x24b8, /* CIRCLED LATIN CAPITAL LETTER C */ + /*2501*/ 0x24d3, 1, 0x24b9, /* CIRCLED LATIN CAPITAL LETTER D */ + /*2504*/ 0x24d4, 1, 0x24ba, /* CIRCLED LATIN CAPITAL LETTER E */ + /*2507*/ 0x24d5, 1, 0x24bb, /* CIRCLED LATIN CAPITAL LETTER F */ + /*2510*/ 0x24d6, 1, 0x24bc, /* CIRCLED LATIN CAPITAL LETTER G */ + /*2513*/ 0x24d7, 1, 0x24bd, /* CIRCLED LATIN CAPITAL LETTER H */ + /*2516*/ 0x24d8, 1, 0x24be, /* CIRCLED LATIN CAPITAL LETTER I */ + /*2519*/ 0x24d9, 1, 0x24bf, /* CIRCLED LATIN CAPITAL LETTER J */ + /*2522*/ 0x24da, 1, 0x24c0, /* CIRCLED LATIN CAPITAL LETTER K */ + /*2525*/ 0x24db, 1, 0x24c1, /* CIRCLED LATIN CAPITAL LETTER L */ + /*2528*/ 0x24dc, 1, 0x24c2, /* CIRCLED LATIN CAPITAL LETTER M */ + /*2531*/ 0x24dd, 1, 0x24c3, /* CIRCLED LATIN CAPITAL LETTER N */ + /*2534*/ 0x24de, 1, 0x24c4, /* CIRCLED LATIN CAPITAL LETTER O */ + /*2537*/ 0x24df, 1, 0x24c5, /* CIRCLED LATIN CAPITAL LETTER P */ + /*2540*/ 0x24e0, 1, 0x24c6, /* CIRCLED LATIN CAPITAL LETTER Q */ + /*2543*/ 0x24e1, 1, 0x24c7, /* CIRCLED LATIN CAPITAL LETTER R */ + /*2546*/ 0x24e2, 1, 0x24c8, /* CIRCLED LATIN CAPITAL LETTER S */ + /*2549*/ 0x24e3, 1, 0x24c9, /* CIRCLED LATIN CAPITAL LETTER T */ + /*2552*/ 0x24e4, 1, 0x24ca, /* CIRCLED LATIN CAPITAL LETTER U */ + /*2555*/ 0x24e5, 1, 0x24cb, /* CIRCLED LATIN CAPITAL LETTER V */ + /*2558*/ 0x24e6, 1, 0x24cc, /* CIRCLED LATIN CAPITAL LETTER W */ + /*2561*/ 0x24e7, 1, 0x24cd, /* CIRCLED LATIN CAPITAL LETTER X */ + /*2564*/ 0x24e8, 1, 0x24ce, /* CIRCLED LATIN CAPITAL LETTER Y */ + /*2567*/ 0x24e9, 1, 0x24cf, /* CIRCLED LATIN CAPITAL LETTER Z */ + /*2570*/ 0x2c30, 1, 0x2c00, /* GLAGOLITIC CAPITAL LETTER AZU */ + /*2573*/ 0x2c31, 1, 0x2c01, /* GLAGOLITIC CAPITAL LETTER BUKY */ + /*2576*/ 0x2c32, 1, 0x2c02, /* GLAGOLITIC CAPITAL LETTER VEDE */ + /*2579*/ 0x2c33, 1, 0x2c03, /* GLAGOLITIC CAPITAL LETTER GLAGOLI */ + /*2582*/ 0x2c34, 1, 0x2c04, /* GLAGOLITIC CAPITAL LETTER DOBRO */ + /*2585*/ 0x2c35, 1, 0x2c05, /* GLAGOLITIC CAPITAL LETTER YESTU */ + /*2588*/ 0x2c36, 1, 0x2c06, /* GLAGOLITIC CAPITAL LETTER ZHIVETE */ + /*2591*/ 0x2c37, 1, 0x2c07, /* GLAGOLITIC CAPITAL LETTER DZELO */ + /*2594*/ 0x2c38, 1, 0x2c08, /* GLAGOLITIC CAPITAL LETTER ZEMLJA */ + /*2597*/ 0x2c39, 1, 0x2c09, /* GLAGOLITIC CAPITAL LETTER IZHE */ + /*2600*/ 0x2c3a, 1, 0x2c0a, /* GLAGOLITIC CAPITAL LETTER INITIAL.. */ + /*2603*/ 0x2c3b, 1, 0x2c0b, /* GLAGOLITIC CAPITAL LETTER I */ + /*2606*/ 0x2c3c, 1, 0x2c0c, /* GLAGOLITIC CAPITAL LETTER DJERVI */ + /*2609*/ 0x2c3d, 1, 0x2c0d, /* GLAGOLITIC CAPITAL LETTER KAKO */ + /*2612*/ 0x2c3e, 1, 0x2c0e, /* GLAGOLITIC CAPITAL LETTER LJUDIJE */ + /*2615*/ 0x2c3f, 1, 0x2c0f, /* GLAGOLITIC CAPITAL LETTER MYSLITE */ + /*2618*/ 0x2c40, 1, 0x2c10, /* GLAGOLITIC CAPITAL LETTER NASHI */ + /*2621*/ 0x2c41, 1, 0x2c11, /* GLAGOLITIC CAPITAL LETTER ONU */ + /*2624*/ 0x2c42, 1, 0x2c12, /* GLAGOLITIC CAPITAL LETTER POKOJI */ + /*2627*/ 0x2c43, 1, 0x2c13, /* GLAGOLITIC CAPITAL LETTER RITSI */ + /*2630*/ 0x2c44, 1, 0x2c14, /* GLAGOLITIC CAPITAL LETTER SLOVO */ + /*2633*/ 0x2c45, 1, 0x2c15, /* GLAGOLITIC CAPITAL LETTER TVRIDO */ + /*2636*/ 0x2c46, 1, 0x2c16, /* GLAGOLITIC CAPITAL LETTER UKU */ + /*2639*/ 0x2c47, 1, 0x2c17, /* GLAGOLITIC CAPITAL LETTER FRITU */ + /*2642*/ 0x2c48, 1, 0x2c18, /* GLAGOLITIC CAPITAL LETTER HERU */ + /*2645*/ 0x2c49, 1, 0x2c19, /* GLAGOLITIC CAPITAL LETTER OTU */ + /*2648*/ 0x2c4a, 1, 0x2c1a, /* GLAGOLITIC CAPITAL LETTER PE */ + /*2651*/ 0x2c4b, 1, 0x2c1b, /* GLAGOLITIC CAPITAL LETTER SHTA */ + /*2654*/ 0x2c4c, 1, 0x2c1c, /* GLAGOLITIC CAPITAL LETTER TSI */ + /*2657*/ 0x2c4d, 1, 0x2c1d, /* GLAGOLITIC CAPITAL LETTER CHRIVI */ + /*2660*/ 0x2c4e, 1, 0x2c1e, /* GLAGOLITIC CAPITAL LETTER SHA */ + /*2663*/ 0x2c4f, 1, 0x2c1f, /* GLAGOLITIC CAPITAL LETTER YERU */ + /*2666*/ 0x2c50, 1, 0x2c20, /* GLAGOLITIC CAPITAL LETTER YERI */ + /*2669*/ 0x2c51, 1, 0x2c21, /* GLAGOLITIC CAPITAL LETTER YATI */ + /*2672*/ 0x2c52, 1, 0x2c22, /* GLAGOLITIC CAPITAL LETTER SPIDERY.. */ + /*2675*/ 0x2c53, 1, 0x2c23, /* GLAGOLITIC CAPITAL LETTER YU */ + /*2678*/ 0x2c54, 1, 0x2c24, /* GLAGOLITIC CAPITAL LETTER SMALL Y.. */ + /*2681*/ 0x2c55, 1, 0x2c25, /* GLAGOLITIC CAPITAL LETTER SMALL Y.. */ + /*2684*/ 0x2c56, 1, 0x2c26, /* GLAGOLITIC CAPITAL LETTER YO */ + /*2687*/ 0x2c57, 1, 0x2c27, /* GLAGOLITIC CAPITAL LETTER IOTATED.. */ + /*2690*/ 0x2c58, 1, 0x2c28, /* GLAGOLITIC CAPITAL LETTER BIG YUS */ + /*2693*/ 0x2c59, 1, 0x2c29, /* GLAGOLITIC CAPITAL LETTER IOTATED.. */ + /*2696*/ 0x2c5a, 1, 0x2c2a, /* GLAGOLITIC CAPITAL LETTER FITA */ + /*2699*/ 0x2c5b, 1, 0x2c2b, /* GLAGOLITIC CAPITAL LETTER IZHITSA */ + /*2702*/ 0x2c5c, 1, 0x2c2c, /* GLAGOLITIC CAPITAL LETTER SHTAPIC */ + /*2705*/ 0x2c5d, 1, 0x2c2d, /* GLAGOLITIC CAPITAL LETTER TROKUTA.. */ + /*2708*/ 0x2c5e, 1, 0x2c2e, /* GLAGOLITIC CAPITAL LETTER LATINAT.. */ + /*2711*/ 0x2c61, 1, 0x2c60, /* LATIN CAPITAL LETTER L WITH DOUBL.. */ + /*2714*/ 0x2c65, 1, 0x023a, /* LATIN CAPITAL LETTER A WITH STROKE */ + /*2717*/ 0x2c66, 1, 0x023e, /* LATIN CAPITAL LETTER T WITH DIAGO.. */ + /*2720*/ 0x2c68, 1, 0x2c67, /* LATIN CAPITAL LETTER H WITH DESCE.. */ + /*2723*/ 0x2c6a, 1, 0x2c69, /* LATIN CAPITAL LETTER K WITH DESCE.. */ + /*2726*/ 0x2c6c, 1, 0x2c6b, /* LATIN CAPITAL LETTER Z WITH DESCE.. */ + /*2729*/ 0x2c73, 1, 0x2c72, /* LATIN CAPITAL LETTER W WITH HOOK */ + /*2732*/ 0x2c76, 1, 0x2c75, /* LATIN CAPITAL LETTER HALF H */ + /*2735*/ 0x2c81, 1, 0x2c80, /* COPTIC CAPITAL LETTER ALFA */ + /*2738*/ 0x2c83, 1, 0x2c82, /* COPTIC CAPITAL LETTER VIDA */ + /*2741*/ 0x2c85, 1, 0x2c84, /* COPTIC CAPITAL LETTER GAMMA */ + /*2744*/ 0x2c87, 1, 0x2c86, /* COPTIC CAPITAL LETTER DALDA */ + /*2747*/ 0x2c89, 1, 0x2c88, /* COPTIC CAPITAL LETTER EIE */ + /*2750*/ 0x2c8b, 1, 0x2c8a, /* COPTIC CAPITAL LETTER SOU */ + /*2753*/ 0x2c8d, 1, 0x2c8c, /* COPTIC CAPITAL LETTER ZATA */ + /*2756*/ 0x2c8f, 1, 0x2c8e, /* COPTIC CAPITAL LETTER HATE */ + /*2759*/ 0x2c91, 1, 0x2c90, /* COPTIC CAPITAL LETTER THETHE */ + /*2762*/ 0x2c93, 1, 0x2c92, /* COPTIC CAPITAL LETTER IAUDA */ + /*2765*/ 0x2c95, 1, 0x2c94, /* COPTIC CAPITAL LETTER KAPA */ + /*2768*/ 0x2c97, 1, 0x2c96, /* COPTIC CAPITAL LETTER LAULA */ + /*2771*/ 0x2c99, 1, 0x2c98, /* COPTIC CAPITAL LETTER MI */ + /*2774*/ 0x2c9b, 1, 0x2c9a, /* COPTIC CAPITAL LETTER NI */ + /*2777*/ 0x2c9d, 1, 0x2c9c, /* COPTIC CAPITAL LETTER KSI */ + /*2780*/ 0x2c9f, 1, 0x2c9e, /* COPTIC CAPITAL LETTER O */ + /*2783*/ 0x2ca1, 1, 0x2ca0, /* COPTIC CAPITAL LETTER PI */ + /*2786*/ 0x2ca3, 1, 0x2ca2, /* COPTIC CAPITAL LETTER RO */ + /*2789*/ 0x2ca5, 1, 0x2ca4, /* COPTIC CAPITAL LETTER SIMA */ + /*2792*/ 0x2ca7, 1, 0x2ca6, /* COPTIC CAPITAL LETTER TAU */ + /*2795*/ 0x2ca9, 1, 0x2ca8, /* COPTIC CAPITAL LETTER UA */ + /*2798*/ 0x2cab, 1, 0x2caa, /* COPTIC CAPITAL LETTER FI */ + /*2801*/ 0x2cad, 1, 0x2cac, /* COPTIC CAPITAL LETTER KHI */ + /*2804*/ 0x2caf, 1, 0x2cae, /* COPTIC CAPITAL LETTER PSI */ + /*2807*/ 0x2cb1, 1, 0x2cb0, /* COPTIC CAPITAL LETTER OOU */ + /*2810*/ 0x2cb3, 1, 0x2cb2, /* COPTIC CAPITAL LETTER DIALECT-P A.. */ + /*2813*/ 0x2cb5, 1, 0x2cb4, /* COPTIC CAPITAL LETTER OLD COPTIC .. */ + /*2816*/ 0x2cb7, 1, 0x2cb6, /* COPTIC CAPITAL LETTER CRYPTOGRAMM.. */ + /*2819*/ 0x2cb9, 1, 0x2cb8, /* COPTIC CAPITAL LETTER DIALECT-P K.. */ + /*2822*/ 0x2cbb, 1, 0x2cba, /* COPTIC CAPITAL LETTER DIALECT-P NI */ + /*2825*/ 0x2cbd, 1, 0x2cbc, /* COPTIC CAPITAL LETTER CRYPTOGRAMM.. */ + /*2828*/ 0x2cbf, 1, 0x2cbe, /* COPTIC CAPITAL LETTER OLD COPTIC .. */ + /*2831*/ 0x2cc1, 1, 0x2cc0, /* COPTIC CAPITAL LETTER SAMPI */ + /*2834*/ 0x2cc3, 1, 0x2cc2, /* COPTIC CAPITAL LETTER CROSSED SHEI */ + /*2837*/ 0x2cc5, 1, 0x2cc4, /* COPTIC CAPITAL LETTER OLD COPTIC .. */ + /*2840*/ 0x2cc7, 1, 0x2cc6, /* COPTIC CAPITAL LETTER OLD COPTIC .. */ + /*2843*/ 0x2cc9, 1, 0x2cc8, /* COPTIC CAPITAL LETTER AKHMIMIC KH.. */ + /*2846*/ 0x2ccb, 1, 0x2cca, /* COPTIC CAPITAL LETTER DIALECT-P H.. */ + /*2849*/ 0x2ccd, 1, 0x2ccc, /* COPTIC CAPITAL LETTER OLD COPTIC .. */ + /*2852*/ 0x2ccf, 1, 0x2cce, /* COPTIC CAPITAL LETTER OLD COPTIC .. */ + /*2855*/ 0x2cd1, 1, 0x2cd0, /* COPTIC CAPITAL LETTER L-SHAPED HA */ + /*2858*/ 0x2cd3, 1, 0x2cd2, /* COPTIC CAPITAL LETTER OLD COPTIC .. */ + /*2861*/ 0x2cd5, 1, 0x2cd4, /* COPTIC CAPITAL LETTER OLD COPTIC .. */ + /*2864*/ 0x2cd7, 1, 0x2cd6, /* COPTIC CAPITAL LETTER OLD COPTIC .. */ + /*2867*/ 0x2cd9, 1, 0x2cd8, /* COPTIC CAPITAL LETTER OLD COPTIC .. */ + /*2870*/ 0x2cdb, 1, 0x2cda, /* COPTIC CAPITAL LETTER OLD COPTIC .. */ + /*2873*/ 0x2cdd, 1, 0x2cdc, /* COPTIC CAPITAL LETTER OLD NUBIAN .. */ + /*2876*/ 0x2cdf, 1, 0x2cde, /* COPTIC CAPITAL LETTER OLD NUBIAN .. */ + /*2879*/ 0x2ce1, 1, 0x2ce0, /* COPTIC CAPITAL LETTER OLD NUBIAN .. */ + /*2882*/ 0x2ce3, 1, 0x2ce2, /* COPTIC CAPITAL LETTER OLD NUBIAN .. */ + /*2885*/ 0x2cec, 1, 0x2ceb, /* COPTIC CAPITAL LETTER CRYPTOGRAMM.. */ + /*2888*/ 0x2cee, 1, 0x2ced, /* COPTIC CAPITAL LETTER CRYPTOGRAMM.. */ + /*2891*/ 0x2cf3, 1, 0x2cf2, /* COPTIC CAPITAL LETTER BOHAIRIC KH.. */ + /*2894*/ 0x2d00, 1, 0x10a0, /* GEORGIAN CAPITAL LETTER AN */ + /*2897*/ 0x2d01, 1, 0x10a1, /* GEORGIAN CAPITAL LETTER BAN */ + /*2900*/ 0x2d02, 1, 0x10a2, /* GEORGIAN CAPITAL LETTER GAN */ + /*2903*/ 0x2d03, 1, 0x10a3, /* GEORGIAN CAPITAL LETTER DON */ + /*2906*/ 0x2d04, 1, 0x10a4, /* GEORGIAN CAPITAL LETTER EN */ + /*2909*/ 0x2d05, 1, 0x10a5, /* GEORGIAN CAPITAL LETTER VIN */ + /*2912*/ 0x2d06, 1, 0x10a6, /* GEORGIAN CAPITAL LETTER ZEN */ + /*2915*/ 0x2d07, 1, 0x10a7, /* GEORGIAN CAPITAL LETTER TAN */ + /*2918*/ 0x2d08, 1, 0x10a8, /* GEORGIAN CAPITAL LETTER IN */ + /*2921*/ 0x2d09, 1, 0x10a9, /* GEORGIAN CAPITAL LETTER KAN */ + /*2924*/ 0x2d0a, 1, 0x10aa, /* GEORGIAN CAPITAL LETTER LAS */ + /*2927*/ 0x2d0b, 1, 0x10ab, /* GEORGIAN CAPITAL LETTER MAN */ + /*2930*/ 0x2d0c, 1, 0x10ac, /* GEORGIAN CAPITAL LETTER NAR */ + /*2933*/ 0x2d0d, 1, 0x10ad, /* GEORGIAN CAPITAL LETTER ON */ + /*2936*/ 0x2d0e, 1, 0x10ae, /* GEORGIAN CAPITAL LETTER PAR */ + /*2939*/ 0x2d0f, 1, 0x10af, /* GEORGIAN CAPITAL LETTER ZHAR */ + /*2942*/ 0x2d10, 1, 0x10b0, /* GEORGIAN CAPITAL LETTER RAE */ + /*2945*/ 0x2d11, 1, 0x10b1, /* GEORGIAN CAPITAL LETTER SAN */ + /*2948*/ 0x2d12, 1, 0x10b2, /* GEORGIAN CAPITAL LETTER TAR */ + /*2951*/ 0x2d13, 1, 0x10b3, /* GEORGIAN CAPITAL LETTER UN */ + /*2954*/ 0x2d14, 1, 0x10b4, /* GEORGIAN CAPITAL LETTER PHAR */ + /*2957*/ 0x2d15, 1, 0x10b5, /* GEORGIAN CAPITAL LETTER KHAR */ + /*2960*/ 0x2d16, 1, 0x10b6, /* GEORGIAN CAPITAL LETTER GHAN */ + /*2963*/ 0x2d17, 1, 0x10b7, /* GEORGIAN CAPITAL LETTER QAR */ + /*2966*/ 0x2d18, 1, 0x10b8, /* GEORGIAN CAPITAL LETTER SHIN */ + /*2969*/ 0x2d19, 1, 0x10b9, /* GEORGIAN CAPITAL LETTER CHIN */ + /*2972*/ 0x2d1a, 1, 0x10ba, /* GEORGIAN CAPITAL LETTER CAN */ + /*2975*/ 0x2d1b, 1, 0x10bb, /* GEORGIAN CAPITAL LETTER JIL */ + /*2978*/ 0x2d1c, 1, 0x10bc, /* GEORGIAN CAPITAL LETTER CIL */ + /*2981*/ 0x2d1d, 1, 0x10bd, /* GEORGIAN CAPITAL LETTER CHAR */ + /*2984*/ 0x2d1e, 1, 0x10be, /* GEORGIAN CAPITAL LETTER XAN */ + /*2987*/ 0x2d1f, 1, 0x10bf, /* GEORGIAN CAPITAL LETTER JHAN */ + /*2990*/ 0x2d20, 1, 0x10c0, /* GEORGIAN CAPITAL LETTER HAE */ + /*2993*/ 0x2d21, 1, 0x10c1, /* GEORGIAN CAPITAL LETTER HE */ + /*2996*/ 0x2d22, 1, 0x10c2, /* GEORGIAN CAPITAL LETTER HIE */ + /*2999*/ 0x2d23, 1, 0x10c3, /* GEORGIAN CAPITAL LETTER WE */ + /*3002*/ 0x2d24, 1, 0x10c4, /* GEORGIAN CAPITAL LETTER HAR */ + /*3005*/ 0x2d25, 1, 0x10c5, /* GEORGIAN CAPITAL LETTER HOE */ + /*3008*/ 0x2d27, 1, 0x10c7, /* GEORGIAN CAPITAL LETTER YN */ + /*3011*/ 0x2d2d, 1, 0x10cd, /* GEORGIAN CAPITAL LETTER AEN */ + /*3014*/ 0xa641, 1, 0xa640, /* CYRILLIC CAPITAL LETTER ZEMLYA */ + /*3017*/ 0xa643, 1, 0xa642, /* CYRILLIC CAPITAL LETTER DZELO */ + /*3020*/ 0xa645, 1, 0xa644, /* CYRILLIC CAPITAL LETTER REVERSED .. */ + /*3023*/ 0xa647, 1, 0xa646, /* CYRILLIC CAPITAL LETTER IOTA */ + /*3026*/ 0xa649, 1, 0xa648, /* CYRILLIC CAPITAL LETTER DJERV */ + /*3029*/ 0xa64b, 2, 0x1c88, 0xa64a, /* CYRILLIC SMALL LETTER UNBLENDED UK */ + /*3033*/ 0xa64d, 1, 0xa64c, /* CYRILLIC CAPITAL LETTER BROAD OME.. */ + /*3036*/ 0xa64f, 1, 0xa64e, /* CYRILLIC CAPITAL LETTER NEUTRAL Y.. */ + /*3039*/ 0xa651, 1, 0xa650, /* CYRILLIC CAPITAL LETTER YERU WITH.. */ + /*3042*/ 0xa653, 1, 0xa652, /* CYRILLIC CAPITAL LETTER IOTIFIED .. */ + /*3045*/ 0xa655, 1, 0xa654, /* CYRILLIC CAPITAL LETTER REVERSED .. */ + /*3048*/ 0xa657, 1, 0xa656, /* CYRILLIC CAPITAL LETTER IOTIFIED A */ + /*3051*/ 0xa659, 1, 0xa658, /* CYRILLIC CAPITAL LETTER CLOSED LI.. */ + /*3054*/ 0xa65b, 1, 0xa65a, /* CYRILLIC CAPITAL LETTER BLENDED Y.. */ + /*3057*/ 0xa65d, 1, 0xa65c, /* CYRILLIC CAPITAL LETTER IOTIFIED .. */ + /*3060*/ 0xa65f, 1, 0xa65e, /* CYRILLIC CAPITAL LETTER YN */ + /*3063*/ 0xa661, 1, 0xa660, /* CYRILLIC CAPITAL LETTER REVERSED .. */ + /*3066*/ 0xa663, 1, 0xa662, /* CYRILLIC CAPITAL LETTER SOFT DE */ + /*3069*/ 0xa665, 1, 0xa664, /* CYRILLIC CAPITAL LETTER SOFT EL */ + /*3072*/ 0xa667, 1, 0xa666, /* CYRILLIC CAPITAL LETTER SOFT EM */ + /*3075*/ 0xa669, 1, 0xa668, /* CYRILLIC CAPITAL LETTER MONOCULAR.. */ + /*3078*/ 0xa66b, 1, 0xa66a, /* CYRILLIC CAPITAL LETTER BINOCULAR.. */ + /*3081*/ 0xa66d, 1, 0xa66c, /* CYRILLIC CAPITAL LETTER DOUBLE MO.. */ + /*3084*/ 0xa681, 1, 0xa680, /* CYRILLIC CAPITAL LETTER DWE */ + /*3087*/ 0xa683, 1, 0xa682, /* CYRILLIC CAPITAL LETTER DZWE */ + /*3090*/ 0xa685, 1, 0xa684, /* CYRILLIC CAPITAL LETTER ZHWE */ + /*3093*/ 0xa687, 1, 0xa686, /* CYRILLIC CAPITAL LETTER CCHE */ + /*3096*/ 0xa689, 1, 0xa688, /* CYRILLIC CAPITAL LETTER DZZE */ + /*3099*/ 0xa68b, 1, 0xa68a, /* CYRILLIC CAPITAL LETTER TE WITH M.. */ + /*3102*/ 0xa68d, 1, 0xa68c, /* CYRILLIC CAPITAL LETTER TWE */ + /*3105*/ 0xa68f, 1, 0xa68e, /* CYRILLIC CAPITAL LETTER TSWE */ + /*3108*/ 0xa691, 1, 0xa690, /* CYRILLIC CAPITAL LETTER TSSE */ + /*3111*/ 0xa693, 1, 0xa692, /* CYRILLIC CAPITAL LETTER TCHE */ + /*3114*/ 0xa695, 1, 0xa694, /* CYRILLIC CAPITAL LETTER HWE */ + /*3117*/ 0xa697, 1, 0xa696, /* CYRILLIC CAPITAL LETTER SHWE */ + /*3120*/ 0xa699, 1, 0xa698, /* CYRILLIC CAPITAL LETTER DOUBLE O */ + /*3123*/ 0xa69b, 1, 0xa69a, /* CYRILLIC CAPITAL LETTER CROSSED O */ + /*3126*/ 0xa723, 1, 0xa722, /* LATIN CAPITAL LETTER EGYPTOLOGICA.. */ + /*3129*/ 0xa725, 1, 0xa724, /* LATIN CAPITAL LETTER EGYPTOLOGICA.. */ + /*3132*/ 0xa727, 1, 0xa726, /* LATIN CAPITAL LETTER HENG */ + /*3135*/ 0xa729, 1, 0xa728, /* LATIN CAPITAL LETTER TZ */ + /*3138*/ 0xa72b, 1, 0xa72a, /* LATIN CAPITAL LETTER TRESILLO */ + /*3141*/ 0xa72d, 1, 0xa72c, /* LATIN CAPITAL LETTER CUATRILLO */ + /*3144*/ 0xa72f, 1, 0xa72e, /* LATIN CAPITAL LETTER CUATRILLO WI.. */ + /*3147*/ 0xa733, 1, 0xa732, /* LATIN CAPITAL LETTER AA */ + /*3150*/ 0xa735, 1, 0xa734, /* LATIN CAPITAL LETTER AO */ + /*3153*/ 0xa737, 1, 0xa736, /* LATIN CAPITAL LETTER AU */ + /*3156*/ 0xa739, 1, 0xa738, /* LATIN CAPITAL LETTER AV */ + /*3159*/ 0xa73b, 1, 0xa73a, /* LATIN CAPITAL LETTER AV WITH HORI.. */ + /*3162*/ 0xa73d, 1, 0xa73c, /* LATIN CAPITAL LETTER AY */ + /*3165*/ 0xa73f, 1, 0xa73e, /* LATIN CAPITAL LETTER REVERSED C W.. */ + /*3168*/ 0xa741, 1, 0xa740, /* LATIN CAPITAL LETTER K WITH STROKE */ + /*3171*/ 0xa743, 1, 0xa742, /* LATIN CAPITAL LETTER K WITH DIAGO.. */ + /*3174*/ 0xa745, 1, 0xa744, /* LATIN CAPITAL LETTER K WITH STROK.. */ + /*3177*/ 0xa747, 1, 0xa746, /* LATIN CAPITAL LETTER BROKEN L */ + /*3180*/ 0xa749, 1, 0xa748, /* LATIN CAPITAL LETTER L WITH HIGH .. */ + /*3183*/ 0xa74b, 1, 0xa74a, /* LATIN CAPITAL LETTER O WITH LONG .. */ + /*3186*/ 0xa74d, 1, 0xa74c, /* LATIN CAPITAL LETTER O WITH LOOP */ + /*3189*/ 0xa74f, 1, 0xa74e, /* LATIN CAPITAL LETTER OO */ + /*3192*/ 0xa751, 1, 0xa750, /* LATIN CAPITAL LETTER P WITH STROK.. */ + /*3195*/ 0xa753, 1, 0xa752, /* LATIN CAPITAL LETTER P WITH FLOUR.. */ + /*3198*/ 0xa755, 1, 0xa754, /* LATIN CAPITAL LETTER P WITH SQUIR.. */ + /*3201*/ 0xa757, 1, 0xa756, /* LATIN CAPITAL LETTER Q WITH STROK.. */ + /*3204*/ 0xa759, 1, 0xa758, /* LATIN CAPITAL LETTER Q WITH DIAGO.. */ + /*3207*/ 0xa75b, 1, 0xa75a, /* LATIN CAPITAL LETTER R ROTUNDA */ + /*3210*/ 0xa75d, 1, 0xa75c, /* LATIN CAPITAL LETTER RUM ROTUNDA */ + /*3213*/ 0xa75f, 1, 0xa75e, /* LATIN CAPITAL LETTER V WITH DIAGO.. */ + /*3216*/ 0xa761, 1, 0xa760, /* LATIN CAPITAL LETTER VY */ + /*3219*/ 0xa763, 1, 0xa762, /* LATIN CAPITAL LETTER VISIGOTHIC Z */ + /*3222*/ 0xa765, 1, 0xa764, /* LATIN CAPITAL LETTER THORN WITH S.. */ + /*3225*/ 0xa767, 1, 0xa766, /* LATIN CAPITAL LETTER THORN WITH S.. */ + /*3228*/ 0xa769, 1, 0xa768, /* LATIN CAPITAL LETTER VEND */ + /*3231*/ 0xa76b, 1, 0xa76a, /* LATIN CAPITAL LETTER ET */ + /*3234*/ 0xa76d, 1, 0xa76c, /* LATIN CAPITAL LETTER IS */ + /*3237*/ 0xa76f, 1, 0xa76e, /* LATIN CAPITAL LETTER CON */ + /*3240*/ 0xa77a, 1, 0xa779, /* LATIN CAPITAL LETTER INSULAR D */ + /*3243*/ 0xa77c, 1, 0xa77b, /* LATIN CAPITAL LETTER INSULAR F */ + /*3246*/ 0xa77f, 1, 0xa77e, /* LATIN CAPITAL LETTER TURNED INSUL.. */ + /*3249*/ 0xa781, 1, 0xa780, /* LATIN CAPITAL LETTER TURNED L */ + /*3252*/ 0xa783, 1, 0xa782, /* LATIN CAPITAL LETTER INSULAR R */ + /*3255*/ 0xa785, 1, 0xa784, /* LATIN CAPITAL LETTER INSULAR S */ + /*3258*/ 0xa787, 1, 0xa786, /* LATIN CAPITAL LETTER INSULAR T */ + /*3261*/ 0xa78c, 1, 0xa78b, /* LATIN CAPITAL LETTER SALTILLO */ + /*3264*/ 0xa791, 1, 0xa790, /* LATIN CAPITAL LETTER N WITH DESCE.. */ + /*3267*/ 0xa793, 1, 0xa792, /* LATIN CAPITAL LETTER C WITH BAR */ + /*3270*/ 0xa797, 1, 0xa796, /* LATIN CAPITAL LETTER B WITH FLOUR.. */ + /*3273*/ 0xa799, 1, 0xa798, /* LATIN CAPITAL LETTER F WITH STROKE */ + /*3276*/ 0xa79b, 1, 0xa79a, /* LATIN CAPITAL LETTER VOLAPUK AE */ + /*3279*/ 0xa79d, 1, 0xa79c, /* LATIN CAPITAL LETTER VOLAPUK OE */ + /*3282*/ 0xa79f, 1, 0xa79e, /* LATIN CAPITAL LETTER VOLAPUK UE */ + /*3285*/ 0xa7a1, 1, 0xa7a0, /* LATIN CAPITAL LETTER G WITH OBLIQ.. */ + /*3288*/ 0xa7a3, 1, 0xa7a2, /* LATIN CAPITAL LETTER K WITH OBLIQ.. */ + /*3291*/ 0xa7a5, 1, 0xa7a4, /* LATIN CAPITAL LETTER N WITH OBLIQ.. */ + /*3294*/ 0xa7a7, 1, 0xa7a6, /* LATIN CAPITAL LETTER R WITH OBLIQ.. */ + /*3297*/ 0xa7a9, 1, 0xa7a8, /* LATIN CAPITAL LETTER S WITH OBLIQ.. */ + /*3300*/ 0xa7b5, 1, 0xa7b4, /* LATIN CAPITAL LETTER BETA */ + /*3303*/ 0xa7b7, 1, 0xa7b6, /* LATIN CAPITAL LETTER OMEGA */ + /*3306*/ 0xa7b9, 1, 0xa7b8, /* LATIN CAPITAL LETTER U WITH STROKE */ + /*3309*/ 0xab53, 1, 0xa7b3, /* LATIN CAPITAL LETTER CHI */ + /*3312*/ 0xff41, 1, 0xff21, /* FULLWIDTH LATIN CAPITAL LETTER A */ + /*3315*/ 0xff42, 1, 0xff22, /* FULLWIDTH LATIN CAPITAL LETTER B */ + /*3318*/ 0xff43, 1, 0xff23, /* FULLWIDTH LATIN CAPITAL LETTER C */ + /*3321*/ 0xff44, 1, 0xff24, /* FULLWIDTH LATIN CAPITAL LETTER D */ + /*3324*/ 0xff45, 1, 0xff25, /* FULLWIDTH LATIN CAPITAL LETTER E */ + /*3327*/ 0xff46, 1, 0xff26, /* FULLWIDTH LATIN CAPITAL LETTER F */ + /*3330*/ 0xff47, 1, 0xff27, /* FULLWIDTH LATIN CAPITAL LETTER G */ + /*3333*/ 0xff48, 1, 0xff28, /* FULLWIDTH LATIN CAPITAL LETTER H */ + /*3336*/ 0xff49, 1, 0xff29, /* FULLWIDTH LATIN CAPITAL LETTER I */ + /*3339*/ 0xff4a, 1, 0xff2a, /* FULLWIDTH LATIN CAPITAL LETTER J */ + /*3342*/ 0xff4b, 1, 0xff2b, /* FULLWIDTH LATIN CAPITAL LETTER K */ + /*3345*/ 0xff4c, 1, 0xff2c, /* FULLWIDTH LATIN CAPITAL LETTER L */ + /*3348*/ 0xff4d, 1, 0xff2d, /* FULLWIDTH LATIN CAPITAL LETTER M */ + /*3351*/ 0xff4e, 1, 0xff2e, /* FULLWIDTH LATIN CAPITAL LETTER N */ + /*3354*/ 0xff4f, 1, 0xff2f, /* FULLWIDTH LATIN CAPITAL LETTER O */ + /*3357*/ 0xff50, 1, 0xff30, /* FULLWIDTH LATIN CAPITAL LETTER P */ + /*3360*/ 0xff51, 1, 0xff31, /* FULLWIDTH LATIN CAPITAL LETTER Q */ + /*3363*/ 0xff52, 1, 0xff32, /* FULLWIDTH LATIN CAPITAL LETTER R */ + /*3366*/ 0xff53, 1, 0xff33, /* FULLWIDTH LATIN CAPITAL LETTER S */ + /*3369*/ 0xff54, 1, 0xff34, /* FULLWIDTH LATIN CAPITAL LETTER T */ + /*3372*/ 0xff55, 1, 0xff35, /* FULLWIDTH LATIN CAPITAL LETTER U */ + /*3375*/ 0xff56, 1, 0xff36, /* FULLWIDTH LATIN CAPITAL LETTER V */ + /*3378*/ 0xff57, 1, 0xff37, /* FULLWIDTH LATIN CAPITAL LETTER W */ + /*3381*/ 0xff58, 1, 0xff38, /* FULLWIDTH LATIN CAPITAL LETTER X */ + /*3384*/ 0xff59, 1, 0xff39, /* FULLWIDTH LATIN CAPITAL LETTER Y */ + /*3387*/ 0xff5a, 1, 0xff3a, /* FULLWIDTH LATIN CAPITAL LETTER Z */ + /*3390*/ 0x010428, 1, 0x010400, /* DESERET CAPITAL LETTER LONG I */ + /*3393*/ 0x010429, 1, 0x010401, /* DESERET CAPITAL LETTER LONG E */ + /*3396*/ 0x01042a, 1, 0x010402, /* DESERET CAPITAL LETTER LONG A */ + /*3399*/ 0x01042b, 1, 0x010403, /* DESERET CAPITAL LETTER LONG AH */ + /*3402*/ 0x01042c, 1, 0x010404, /* DESERET CAPITAL LETTER LONG O */ + /*3405*/ 0x01042d, 1, 0x010405, /* DESERET CAPITAL LETTER LONG OO */ + /*3408*/ 0x01042e, 1, 0x010406, /* DESERET CAPITAL LETTER SHORT I */ + /*3411*/ 0x01042f, 1, 0x010407, /* DESERET CAPITAL LETTER SHORT E */ + /*3414*/ 0x010430, 1, 0x010408, /* DESERET CAPITAL LETTER SHORT A */ + /*3417*/ 0x010431, 1, 0x010409, /* DESERET CAPITAL LETTER SHORT AH */ + /*3420*/ 0x010432, 1, 0x01040a, /* DESERET CAPITAL LETTER SHORT O */ + /*3423*/ 0x010433, 1, 0x01040b, /* DESERET CAPITAL LETTER SHORT OO */ + /*3426*/ 0x010434, 1, 0x01040c, /* DESERET CAPITAL LETTER AY */ + /*3429*/ 0x010435, 1, 0x01040d, /* DESERET CAPITAL LETTER OW */ + /*3432*/ 0x010436, 1, 0x01040e, /* DESERET CAPITAL LETTER WU */ + /*3435*/ 0x010437, 1, 0x01040f, /* DESERET CAPITAL LETTER YEE */ + /*3438*/ 0x010438, 1, 0x010410, /* DESERET CAPITAL LETTER H */ + /*3441*/ 0x010439, 1, 0x010411, /* DESERET CAPITAL LETTER PEE */ + /*3444*/ 0x01043a, 1, 0x010412, /* DESERET CAPITAL LETTER BEE */ + /*3447*/ 0x01043b, 1, 0x010413, /* DESERET CAPITAL LETTER TEE */ + /*3450*/ 0x01043c, 1, 0x010414, /* DESERET CAPITAL LETTER DEE */ + /*3453*/ 0x01043d, 1, 0x010415, /* DESERET CAPITAL LETTER CHEE */ + /*3456*/ 0x01043e, 1, 0x010416, /* DESERET CAPITAL LETTER JEE */ + /*3459*/ 0x01043f, 1, 0x010417, /* DESERET CAPITAL LETTER KAY */ + /*3462*/ 0x010440, 1, 0x010418, /* DESERET CAPITAL LETTER GAY */ + /*3465*/ 0x010441, 1, 0x010419, /* DESERET CAPITAL LETTER EF */ + /*3468*/ 0x010442, 1, 0x01041a, /* DESERET CAPITAL LETTER VEE */ + /*3471*/ 0x010443, 1, 0x01041b, /* DESERET CAPITAL LETTER ETH */ + /*3474*/ 0x010444, 1, 0x01041c, /* DESERET CAPITAL LETTER THEE */ + /*3477*/ 0x010445, 1, 0x01041d, /* DESERET CAPITAL LETTER ES */ + /*3480*/ 0x010446, 1, 0x01041e, /* DESERET CAPITAL LETTER ZEE */ + /*3483*/ 0x010447, 1, 0x01041f, /* DESERET CAPITAL LETTER ESH */ + /*3486*/ 0x010448, 1, 0x010420, /* DESERET CAPITAL LETTER ZHEE */ + /*3489*/ 0x010449, 1, 0x010421, /* DESERET CAPITAL LETTER ER */ + /*3492*/ 0x01044a, 1, 0x010422, /* DESERET CAPITAL LETTER EL */ + /*3495*/ 0x01044b, 1, 0x010423, /* DESERET CAPITAL LETTER EM */ + /*3498*/ 0x01044c, 1, 0x010424, /* DESERET CAPITAL LETTER EN */ + /*3501*/ 0x01044d, 1, 0x010425, /* DESERET CAPITAL LETTER ENG */ + /*3504*/ 0x01044e, 1, 0x010426, /* DESERET CAPITAL LETTER OI */ + /*3507*/ 0x01044f, 1, 0x010427, /* DESERET CAPITAL LETTER EW */ + /*3510*/ 0x0104d8, 1, 0x0104b0, /* OSAGE CAPITAL LETTER A */ + /*3513*/ 0x0104d9, 1, 0x0104b1, /* OSAGE CAPITAL LETTER AI */ + /*3516*/ 0x0104da, 1, 0x0104b2, /* OSAGE CAPITAL LETTER AIN */ + /*3519*/ 0x0104db, 1, 0x0104b3, /* OSAGE CAPITAL LETTER AH */ + /*3522*/ 0x0104dc, 1, 0x0104b4, /* OSAGE CAPITAL LETTER BRA */ + /*3525*/ 0x0104dd, 1, 0x0104b5, /* OSAGE CAPITAL LETTER CHA */ + /*3528*/ 0x0104de, 1, 0x0104b6, /* OSAGE CAPITAL LETTER EHCHA */ + /*3531*/ 0x0104df, 1, 0x0104b7, /* OSAGE CAPITAL LETTER E */ + /*3534*/ 0x0104e0, 1, 0x0104b8, /* OSAGE CAPITAL LETTER EIN */ + /*3537*/ 0x0104e1, 1, 0x0104b9, /* OSAGE CAPITAL LETTER HA */ + /*3540*/ 0x0104e2, 1, 0x0104ba, /* OSAGE CAPITAL LETTER HYA */ + /*3543*/ 0x0104e3, 1, 0x0104bb, /* OSAGE CAPITAL LETTER I */ + /*3546*/ 0x0104e4, 1, 0x0104bc, /* OSAGE CAPITAL LETTER KA */ + /*3549*/ 0x0104e5, 1, 0x0104bd, /* OSAGE CAPITAL LETTER EHKA */ + /*3552*/ 0x0104e6, 1, 0x0104be, /* OSAGE CAPITAL LETTER KYA */ + /*3555*/ 0x0104e7, 1, 0x0104bf, /* OSAGE CAPITAL LETTER LA */ + /*3558*/ 0x0104e8, 1, 0x0104c0, /* OSAGE CAPITAL LETTER MA */ + /*3561*/ 0x0104e9, 1, 0x0104c1, /* OSAGE CAPITAL LETTER NA */ + /*3564*/ 0x0104ea, 1, 0x0104c2, /* OSAGE CAPITAL LETTER O */ + /*3567*/ 0x0104eb, 1, 0x0104c3, /* OSAGE CAPITAL LETTER OIN */ + /*3570*/ 0x0104ec, 1, 0x0104c4, /* OSAGE CAPITAL LETTER PA */ + /*3573*/ 0x0104ed, 1, 0x0104c5, /* OSAGE CAPITAL LETTER EHPA */ + /*3576*/ 0x0104ee, 1, 0x0104c6, /* OSAGE CAPITAL LETTER SA */ + /*3579*/ 0x0104ef, 1, 0x0104c7, /* OSAGE CAPITAL LETTER SHA */ + /*3582*/ 0x0104f0, 1, 0x0104c8, /* OSAGE CAPITAL LETTER TA */ + /*3585*/ 0x0104f1, 1, 0x0104c9, /* OSAGE CAPITAL LETTER EHTA */ + /*3588*/ 0x0104f2, 1, 0x0104ca, /* OSAGE CAPITAL LETTER TSA */ + /*3591*/ 0x0104f3, 1, 0x0104cb, /* OSAGE CAPITAL LETTER EHTSA */ + /*3594*/ 0x0104f4, 1, 0x0104cc, /* OSAGE CAPITAL LETTER TSHA */ + /*3597*/ 0x0104f5, 1, 0x0104cd, /* OSAGE CAPITAL LETTER DHA */ + /*3600*/ 0x0104f6, 1, 0x0104ce, /* OSAGE CAPITAL LETTER U */ + /*3603*/ 0x0104f7, 1, 0x0104cf, /* OSAGE CAPITAL LETTER WA */ + /*3606*/ 0x0104f8, 1, 0x0104d0, /* OSAGE CAPITAL LETTER KHA */ + /*3609*/ 0x0104f9, 1, 0x0104d1, /* OSAGE CAPITAL LETTER GHA */ + /*3612*/ 0x0104fa, 1, 0x0104d2, /* OSAGE CAPITAL LETTER ZA */ + /*3615*/ 0x0104fb, 1, 0x0104d3, /* OSAGE CAPITAL LETTER ZHA */ + /*3618*/ 0x010cc0, 1, 0x010c80, /* OLD HUNGARIAN CAPITAL LETTER A */ + /*3621*/ 0x010cc1, 1, 0x010c81, /* OLD HUNGARIAN CAPITAL LETTER AA */ + /*3624*/ 0x010cc2, 1, 0x010c82, /* OLD HUNGARIAN CAPITAL LETTER EB */ + /*3627*/ 0x010cc3, 1, 0x010c83, /* OLD HUNGARIAN CAPITAL LETTER AMB */ + /*3630*/ 0x010cc4, 1, 0x010c84, /* OLD HUNGARIAN CAPITAL LETTER EC */ + /*3633*/ 0x010cc5, 1, 0x010c85, /* OLD HUNGARIAN CAPITAL LETTER ENC */ + /*3636*/ 0x010cc6, 1, 0x010c86, /* OLD HUNGARIAN CAPITAL LETTER ECS */ + /*3639*/ 0x010cc7, 1, 0x010c87, /* OLD HUNGARIAN CAPITAL LETTER ED */ + /*3642*/ 0x010cc8, 1, 0x010c88, /* OLD HUNGARIAN CAPITAL LETTER AND */ + /*3645*/ 0x010cc9, 1, 0x010c89, /* OLD HUNGARIAN CAPITAL LETTER E */ + /*3648*/ 0x010cca, 1, 0x010c8a, /* OLD HUNGARIAN CAPITAL LETTER CLOS.. */ + /*3651*/ 0x010ccb, 1, 0x010c8b, /* OLD HUNGARIAN CAPITAL LETTER EE */ + /*3654*/ 0x010ccc, 1, 0x010c8c, /* OLD HUNGARIAN CAPITAL LETTER EF */ + /*3657*/ 0x010ccd, 1, 0x010c8d, /* OLD HUNGARIAN CAPITAL LETTER EG */ + /*3660*/ 0x010cce, 1, 0x010c8e, /* OLD HUNGARIAN CAPITAL LETTER EGY */ + /*3663*/ 0x010ccf, 1, 0x010c8f, /* OLD HUNGARIAN CAPITAL LETTER EH */ + /*3666*/ 0x010cd0, 1, 0x010c90, /* OLD HUNGARIAN CAPITAL LETTER I */ + /*3669*/ 0x010cd1, 1, 0x010c91, /* OLD HUNGARIAN CAPITAL LETTER II */ + /*3672*/ 0x010cd2, 1, 0x010c92, /* OLD HUNGARIAN CAPITAL LETTER EJ */ + /*3675*/ 0x010cd3, 1, 0x010c93, /* OLD HUNGARIAN CAPITAL LETTER EK */ + /*3678*/ 0x010cd4, 1, 0x010c94, /* OLD HUNGARIAN CAPITAL LETTER AK */ + /*3681*/ 0x010cd5, 1, 0x010c95, /* OLD HUNGARIAN CAPITAL LETTER UNK */ + /*3684*/ 0x010cd6, 1, 0x010c96, /* OLD HUNGARIAN CAPITAL LETTER EL */ + /*3687*/ 0x010cd7, 1, 0x010c97, /* OLD HUNGARIAN CAPITAL LETTER ELY */ + /*3690*/ 0x010cd8, 1, 0x010c98, /* OLD HUNGARIAN CAPITAL LETTER EM */ + /*3693*/ 0x010cd9, 1, 0x010c99, /* OLD HUNGARIAN CAPITAL LETTER EN */ + /*3696*/ 0x010cda, 1, 0x010c9a, /* OLD HUNGARIAN CAPITAL LETTER ENY */ + /*3699*/ 0x010cdb, 1, 0x010c9b, /* OLD HUNGARIAN CAPITAL LETTER O */ + /*3702*/ 0x010cdc, 1, 0x010c9c, /* OLD HUNGARIAN CAPITAL LETTER OO */ + /*3705*/ 0x010cdd, 1, 0x010c9d, /* OLD HUNGARIAN CAPITAL LETTER NIKO.. */ + /*3708*/ 0x010cde, 1, 0x010c9e, /* OLD HUNGARIAN CAPITAL LETTER RUDI.. */ + /*3711*/ 0x010cdf, 1, 0x010c9f, /* OLD HUNGARIAN CAPITAL LETTER OEE */ + /*3714*/ 0x010ce0, 1, 0x010ca0, /* OLD HUNGARIAN CAPITAL LETTER EP */ + /*3717*/ 0x010ce1, 1, 0x010ca1, /* OLD HUNGARIAN CAPITAL LETTER EMP */ + /*3720*/ 0x010ce2, 1, 0x010ca2, /* OLD HUNGARIAN CAPITAL LETTER ER */ + /*3723*/ 0x010ce3, 1, 0x010ca3, /* OLD HUNGARIAN CAPITAL LETTER SHOR.. */ + /*3726*/ 0x010ce4, 1, 0x010ca4, /* OLD HUNGARIAN CAPITAL LETTER ES */ + /*3729*/ 0x010ce5, 1, 0x010ca5, /* OLD HUNGARIAN CAPITAL LETTER ESZ */ + /*3732*/ 0x010ce6, 1, 0x010ca6, /* OLD HUNGARIAN CAPITAL LETTER ET */ + /*3735*/ 0x010ce7, 1, 0x010ca7, /* OLD HUNGARIAN CAPITAL LETTER ENT */ + /*3738*/ 0x010ce8, 1, 0x010ca8, /* OLD HUNGARIAN CAPITAL LETTER ETY */ + /*3741*/ 0x010ce9, 1, 0x010ca9, /* OLD HUNGARIAN CAPITAL LETTER ECH */ + /*3744*/ 0x010cea, 1, 0x010caa, /* OLD HUNGARIAN CAPITAL LETTER U */ + /*3747*/ 0x010ceb, 1, 0x010cab, /* OLD HUNGARIAN CAPITAL LETTER UU */ + /*3750*/ 0x010cec, 1, 0x010cac, /* OLD HUNGARIAN CAPITAL LETTER NIKO.. */ + /*3753*/ 0x010ced, 1, 0x010cad, /* OLD HUNGARIAN CAPITAL LETTER RUDI.. */ + /*3756*/ 0x010cee, 1, 0x010cae, /* OLD HUNGARIAN CAPITAL LETTER EV */ + /*3759*/ 0x010cef, 1, 0x010caf, /* OLD HUNGARIAN CAPITAL LETTER EZ */ + /*3762*/ 0x010cf0, 1, 0x010cb0, /* OLD HUNGARIAN CAPITAL LETTER EZS */ + /*3765*/ 0x010cf1, 1, 0x010cb1, /* OLD HUNGARIAN CAPITAL LETTER ENT-.. */ + /*3768*/ 0x010cf2, 1, 0x010cb2, /* OLD HUNGARIAN CAPITAL LETTER US */ + /*3771*/ 0x0118c0, 1, 0x0118a0, /* WARANG CITI CAPITAL LETTER NGAA */ + /*3774*/ 0x0118c1, 1, 0x0118a1, /* WARANG CITI CAPITAL LETTER A */ + /*3777*/ 0x0118c2, 1, 0x0118a2, /* WARANG CITI CAPITAL LETTER WI */ + /*3780*/ 0x0118c3, 1, 0x0118a3, /* WARANG CITI CAPITAL LETTER YU */ + /*3783*/ 0x0118c4, 1, 0x0118a4, /* WARANG CITI CAPITAL LETTER YA */ + /*3786*/ 0x0118c5, 1, 0x0118a5, /* WARANG CITI CAPITAL LETTER YO */ + /*3789*/ 0x0118c6, 1, 0x0118a6, /* WARANG CITI CAPITAL LETTER II */ + /*3792*/ 0x0118c7, 1, 0x0118a7, /* WARANG CITI CAPITAL LETTER UU */ + /*3795*/ 0x0118c8, 1, 0x0118a8, /* WARANG CITI CAPITAL LETTER E */ + /*3798*/ 0x0118c9, 1, 0x0118a9, /* WARANG CITI CAPITAL LETTER O */ + /*3801*/ 0x0118ca, 1, 0x0118aa, /* WARANG CITI CAPITAL LETTER ANG */ + /*3804*/ 0x0118cb, 1, 0x0118ab, /* WARANG CITI CAPITAL LETTER GA */ + /*3807*/ 0x0118cc, 1, 0x0118ac, /* WARANG CITI CAPITAL LETTER KO */ + /*3810*/ 0x0118cd, 1, 0x0118ad, /* WARANG CITI CAPITAL LETTER ENY */ + /*3813*/ 0x0118ce, 1, 0x0118ae, /* WARANG CITI CAPITAL LETTER YUJ */ + /*3816*/ 0x0118cf, 1, 0x0118af, /* WARANG CITI CAPITAL LETTER UC */ + /*3819*/ 0x0118d0, 1, 0x0118b0, /* WARANG CITI CAPITAL LETTER ENN */ + /*3822*/ 0x0118d1, 1, 0x0118b1, /* WARANG CITI CAPITAL LETTER ODD */ + /*3825*/ 0x0118d2, 1, 0x0118b2, /* WARANG CITI CAPITAL LETTER TTE */ + /*3828*/ 0x0118d3, 1, 0x0118b3, /* WARANG CITI CAPITAL LETTER NUNG */ + /*3831*/ 0x0118d4, 1, 0x0118b4, /* WARANG CITI CAPITAL LETTER DA */ + /*3834*/ 0x0118d5, 1, 0x0118b5, /* WARANG CITI CAPITAL LETTER AT */ + /*3837*/ 0x0118d6, 1, 0x0118b6, /* WARANG CITI CAPITAL LETTER AM */ + /*3840*/ 0x0118d7, 1, 0x0118b7, /* WARANG CITI CAPITAL LETTER BU */ + /*3843*/ 0x0118d8, 1, 0x0118b8, /* WARANG CITI CAPITAL LETTER PU */ + /*3846*/ 0x0118d9, 1, 0x0118b9, /* WARANG CITI CAPITAL LETTER HIYO */ + /*3849*/ 0x0118da, 1, 0x0118ba, /* WARANG CITI CAPITAL LETTER HOLO */ + /*3852*/ 0x0118db, 1, 0x0118bb, /* WARANG CITI CAPITAL LETTER HORR */ + /*3855*/ 0x0118dc, 1, 0x0118bc, /* WARANG CITI CAPITAL LETTER HAR */ + /*3858*/ 0x0118dd, 1, 0x0118bd, /* WARANG CITI CAPITAL LETTER SSUU */ + /*3861*/ 0x0118de, 1, 0x0118be, /* WARANG CITI CAPITAL LETTER SII */ + /*3864*/ 0x0118df, 1, 0x0118bf, /* WARANG CITI CAPITAL LETTER VIYO */ + /*3867*/ 0x016e60, 1, 0x016e40, /* MEDEFAIDRIN CAPITAL LETTER M */ + /*3870*/ 0x016e61, 1, 0x016e41, /* MEDEFAIDRIN CAPITAL LETTER S */ + /*3873*/ 0x016e62, 1, 0x016e42, /* MEDEFAIDRIN CAPITAL LETTER V */ + /*3876*/ 0x016e63, 1, 0x016e43, /* MEDEFAIDRIN CAPITAL LETTER W */ + /*3879*/ 0x016e64, 1, 0x016e44, /* MEDEFAIDRIN CAPITAL LETTER ATIU */ + /*3882*/ 0x016e65, 1, 0x016e45, /* MEDEFAIDRIN CAPITAL LETTER Z */ + /*3885*/ 0x016e66, 1, 0x016e46, /* MEDEFAIDRIN CAPITAL LETTER KP */ + /*3888*/ 0x016e67, 1, 0x016e47, /* MEDEFAIDRIN CAPITAL LETTER P */ + /*3891*/ 0x016e68, 1, 0x016e48, /* MEDEFAIDRIN CAPITAL LETTER T */ + /*3894*/ 0x016e69, 1, 0x016e49, /* MEDEFAIDRIN CAPITAL LETTER G */ + /*3897*/ 0x016e6a, 1, 0x016e4a, /* MEDEFAIDRIN CAPITAL LETTER F */ + /*3900*/ 0x016e6b, 1, 0x016e4b, /* MEDEFAIDRIN CAPITAL LETTER I */ + /*3903*/ 0x016e6c, 1, 0x016e4c, /* MEDEFAIDRIN CAPITAL LETTER K */ + /*3906*/ 0x016e6d, 1, 0x016e4d, /* MEDEFAIDRIN CAPITAL LETTER A */ + /*3909*/ 0x016e6e, 1, 0x016e4e, /* MEDEFAIDRIN CAPITAL LETTER J */ + /*3912*/ 0x016e6f, 1, 0x016e4f, /* MEDEFAIDRIN CAPITAL LETTER E */ + /*3915*/ 0x016e70, 1, 0x016e50, /* MEDEFAIDRIN CAPITAL LETTER B */ + /*3918*/ 0x016e71, 1, 0x016e51, /* MEDEFAIDRIN CAPITAL LETTER C */ + /*3921*/ 0x016e72, 1, 0x016e52, /* MEDEFAIDRIN CAPITAL LETTER U */ + /*3924*/ 0x016e73, 1, 0x016e53, /* MEDEFAIDRIN CAPITAL LETTER YU */ + /*3927*/ 0x016e74, 1, 0x016e54, /* MEDEFAIDRIN CAPITAL LETTER L */ + /*3930*/ 0x016e75, 1, 0x016e55, /* MEDEFAIDRIN CAPITAL LETTER Q */ + /*3933*/ 0x016e76, 1, 0x016e56, /* MEDEFAIDRIN CAPITAL LETTER HP */ + /*3936*/ 0x016e77, 1, 0x016e57, /* MEDEFAIDRIN CAPITAL LETTER NY */ + /*3939*/ 0x016e78, 1, 0x016e58, /* MEDEFAIDRIN CAPITAL LETTER X */ + /*3942*/ 0x016e79, 1, 0x016e59, /* MEDEFAIDRIN CAPITAL LETTER D */ + /*3945*/ 0x016e7a, 1, 0x016e5a, /* MEDEFAIDRIN CAPITAL LETTER OE */ + /*3948*/ 0x016e7b, 1, 0x016e5b, /* MEDEFAIDRIN CAPITAL LETTER N */ + /*3951*/ 0x016e7c, 1, 0x016e5c, /* MEDEFAIDRIN CAPITAL LETTER R */ + /*3954*/ 0x016e7d, 1, 0x016e5d, /* MEDEFAIDRIN CAPITAL LETTER O */ + /*3957*/ 0x016e7e, 1, 0x016e5e, /* MEDEFAIDRIN CAPITAL LETTER AI */ + /*3960*/ 0x016e7f, 1, 0x016e5f, /* MEDEFAIDRIN CAPITAL LETTER Y */ + /*3963*/ 0x01e922, 1, 0x01e900, /* ADLAM CAPITAL LETTER ALIF */ + /*3966*/ 0x01e923, 1, 0x01e901, /* ADLAM CAPITAL LETTER DAALI */ + /*3969*/ 0x01e924, 1, 0x01e902, /* ADLAM CAPITAL LETTER LAAM */ + /*3972*/ 0x01e925, 1, 0x01e903, /* ADLAM CAPITAL LETTER MIIM */ + /*3975*/ 0x01e926, 1, 0x01e904, /* ADLAM CAPITAL LETTER BA */ + /*3978*/ 0x01e927, 1, 0x01e905, /* ADLAM CAPITAL LETTER SINNYIIYHE */ + /*3981*/ 0x01e928, 1, 0x01e906, /* ADLAM CAPITAL LETTER PE */ + /*3984*/ 0x01e929, 1, 0x01e907, /* ADLAM CAPITAL LETTER BHE */ + /*3987*/ 0x01e92a, 1, 0x01e908, /* ADLAM CAPITAL LETTER RA */ + /*3990*/ 0x01e92b, 1, 0x01e909, /* ADLAM CAPITAL LETTER E */ + /*3993*/ 0x01e92c, 1, 0x01e90a, /* ADLAM CAPITAL LETTER FA */ + /*3996*/ 0x01e92d, 1, 0x01e90b, /* ADLAM CAPITAL LETTER I */ + /*3999*/ 0x01e92e, 1, 0x01e90c, /* ADLAM CAPITAL LETTER O */ + /*4002*/ 0x01e92f, 1, 0x01e90d, /* ADLAM CAPITAL LETTER DHA */ + /*4005*/ 0x01e930, 1, 0x01e90e, /* ADLAM CAPITAL LETTER YHE */ + /*4008*/ 0x01e931, 1, 0x01e90f, /* ADLAM CAPITAL LETTER WAW */ + /*4011*/ 0x01e932, 1, 0x01e910, /* ADLAM CAPITAL LETTER NUN */ + /*4014*/ 0x01e933, 1, 0x01e911, /* ADLAM CAPITAL LETTER KAF */ + /*4017*/ 0x01e934, 1, 0x01e912, /* ADLAM CAPITAL LETTER YA */ + /*4020*/ 0x01e935, 1, 0x01e913, /* ADLAM CAPITAL LETTER U */ + /*4023*/ 0x01e936, 1, 0x01e914, /* ADLAM CAPITAL LETTER JIIM */ + /*4026*/ 0x01e937, 1, 0x01e915, /* ADLAM CAPITAL LETTER CHI */ + /*4029*/ 0x01e938, 1, 0x01e916, /* ADLAM CAPITAL LETTER HA */ + /*4032*/ 0x01e939, 1, 0x01e917, /* ADLAM CAPITAL LETTER QAAF */ + /*4035*/ 0x01e93a, 1, 0x01e918, /* ADLAM CAPITAL LETTER GA */ + /*4038*/ 0x01e93b, 1, 0x01e919, /* ADLAM CAPITAL LETTER NYA */ + /*4041*/ 0x01e93c, 1, 0x01e91a, /* ADLAM CAPITAL LETTER TU */ + /*4044*/ 0x01e93d, 1, 0x01e91b, /* ADLAM CAPITAL LETTER NHA */ + /*4047*/ 0x01e93e, 1, 0x01e91c, /* ADLAM CAPITAL LETTER VA */ + /*4050*/ 0x01e93f, 1, 0x01e91d, /* ADLAM CAPITAL LETTER KHA */ + /*4053*/ 0x01e940, 1, 0x01e91e, /* ADLAM CAPITAL LETTER GBE */ + /*4056*/ 0x01e941, 1, 0x01e91f, /* ADLAM CAPITAL LETTER ZAL */ + /*4059*/ 0x01e942, 1, 0x01e920, /* ADLAM CAPITAL LETTER KPO */ + /*4062*/ 0x01e943, 1, 0x01e921, /* ADLAM CAPITAL LETTER SHA */ +#define FOLDS1_NORMAL_END_INDEX 4065 + /* ----- LOCALE ----- */ + /*4065*/ 0x0069, 1, 0x0049, /* LATIN CAPITAL LETTER I */ +#define FOLDS1_END_INDEX 4068 +}; + +OnigCodePoint OnigUnicodeFolds2[] = { + /* LATIN SMALL LETTER A WITH RIGHT HALF RING */ + /* 0*/ 0x0061, 0x02be, 1, 0x1e9a, + /* LATIN SMALL LIGATURE FF */ + /* 4*/ 0x0066, 0x0066, 1, 0xfb00, + /* LATIN SMALL LIGATURE FI */ + /* 8*/ 0x0066, 0x0069, 1, 0xfb01, + /* LATIN SMALL LIGATURE FL */ + /* 12*/ 0x0066, 0x006c, 1, 0xfb02, + /* LATIN SMALL LETTER H WITH LINE BELOW */ + /* 16*/ 0x0068, 0x0331, 1, 0x1e96, + /* LATIN SMALL LETTER J WITH CARON */ + /* 20*/ 0x006a, 0x030c, 1, 0x01f0, + /* LATIN SMALL LETTER SHARP S */ + /* 24*/ 0x0073, 0x0073, 2, 0x00df, 0x1e9e, + /* LATIN SMALL LIGATURE LONG S T */ + /* 29*/ 0x0073, 0x0074, 2, 0xfb05, 0xfb06, + /* LATIN SMALL LETTER T WITH DIAERESIS */ + /* 34*/ 0x0074, 0x0308, 1, 0x1e97, + /* LATIN SMALL LETTER W WITH RING ABOVE */ + /* 38*/ 0x0077, 0x030a, 1, 0x1e98, + /* LATIN SMALL LETTER Y WITH RING ABOVE */ + /* 42*/ 0x0079, 0x030a, 1, 0x1e99, + /* LATIN SMALL LETTER N PRECEDED BY APOSTROPHE */ + /* 46*/ 0x02bc, 0x006e, 1, 0x0149, + /* GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI */ + /* 50*/ 0x03ac, 0x03b9, 1, 0x1fb4, + /* GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI */ + /* 54*/ 0x03ae, 0x03b9, 1, 0x1fc4, + /* GREEK SMALL LETTER ALPHA WITH PERISPOMENI */ + /* 58*/ 0x03b1, 0x0342, 1, 0x1fb6, + /* GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI */ + /* 62*/ 0x03b1, 0x03b9, 2, 0x1fb3, 0x1fbc, + /* GREEK SMALL LETTER ETA WITH PERISPOMENI */ + /* 67*/ 0x03b7, 0x0342, 1, 0x1fc6, + /* GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI */ + /* 71*/ 0x03b7, 0x03b9, 2, 0x1fc3, 0x1fcc, + /* GREEK SMALL LETTER IOTA WITH PERISPOMENI */ + /* 76*/ 0x03b9, 0x0342, 1, 0x1fd6, + /* GREEK SMALL LETTER RHO WITH PSILI */ + /* 80*/ 0x03c1, 0x0313, 1, 0x1fe4, + /* GREEK SMALL LETTER UPSILON WITH PSILI */ + /* 84*/ 0x03c5, 0x0313, 1, 0x1f50, + /* GREEK SMALL LETTER UPSILON WITH PERISPOMENI */ + /* 88*/ 0x03c5, 0x0342, 1, 0x1fe6, + /* GREEK SMALL LETTER OMEGA WITH PERISPOMENI */ + /* 92*/ 0x03c9, 0x0342, 1, 0x1ff6, + /* GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI */ + /* 96*/ 0x03c9, 0x03b9, 2, 0x1ff3, 0x1ffc, + /* GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI */ + /* 101*/ 0x03ce, 0x03b9, 1, 0x1ff4, + /* ARMENIAN SMALL LIGATURE ECH YIWN */ + /* 105*/ 0x0565, 0x0582, 1, 0x0587, + /* ARMENIAN SMALL LIGATURE MEN ECH */ + /* 109*/ 0x0574, 0x0565, 1, 0xfb14, + /* ARMENIAN SMALL LIGATURE MEN INI */ + /* 113*/ 0x0574, 0x056b, 1, 0xfb15, + /* ARMENIAN SMALL LIGATURE MEN XEH */ + /* 117*/ 0x0574, 0x056d, 1, 0xfb17, + /* ARMENIAN SMALL LIGATURE MEN NOW */ + /* 121*/ 0x0574, 0x0576, 1, 0xfb13, + /* ARMENIAN SMALL LIGATURE VEW NOW */ + /* 125*/ 0x057e, 0x0576, 1, 0xfb16, + /* GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI */ + /* 129*/ 0x1f00, 0x03b9, 2, 0x1f80, 0x1f88, + /* GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI */ + /* 134*/ 0x1f01, 0x03b9, 2, 0x1f81, 0x1f89, + /* GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI */ + /* 139*/ 0x1f02, 0x03b9, 2, 0x1f82, 0x1f8a, + /* GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI */ + /* 144*/ 0x1f03, 0x03b9, 2, 0x1f83, 0x1f8b, + /* GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI */ + /* 149*/ 0x1f04, 0x03b9, 2, 0x1f84, 0x1f8c, + /* GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI */ + /* 154*/ 0x1f05, 0x03b9, 2, 0x1f85, 0x1f8d, + /* GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI */ + /* 159*/ 0x1f06, 0x03b9, 2, 0x1f86, 0x1f8e, + /* GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI */ + /* 164*/ 0x1f07, 0x03b9, 2, 0x1f87, 0x1f8f, + /* GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI */ + /* 169*/ 0x1f20, 0x03b9, 2, 0x1f90, 0x1f98, + /* GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI */ + /* 174*/ 0x1f21, 0x03b9, 2, 0x1f91, 0x1f99, + /* GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI */ + /* 179*/ 0x1f22, 0x03b9, 2, 0x1f92, 0x1f9a, + /* GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI */ + /* 184*/ 0x1f23, 0x03b9, 2, 0x1f93, 0x1f9b, + /* GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI */ + /* 189*/ 0x1f24, 0x03b9, 2, 0x1f94, 0x1f9c, + /* GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI */ + /* 194*/ 0x1f25, 0x03b9, 2, 0x1f95, 0x1f9d, + /* GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI */ + /* 199*/ 0x1f26, 0x03b9, 2, 0x1f96, 0x1f9e, + /* GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI */ + /* 204*/ 0x1f27, 0x03b9, 2, 0x1f97, 0x1f9f, + /* GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI */ + /* 209*/ 0x1f60, 0x03b9, 2, 0x1fa0, 0x1fa8, + /* GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI */ + /* 214*/ 0x1f61, 0x03b9, 2, 0x1fa1, 0x1fa9, + /* GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI */ + /* 219*/ 0x1f62, 0x03b9, 2, 0x1fa2, 0x1faa, + /* GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI */ + /* 224*/ 0x1f63, 0x03b9, 2, 0x1fa3, 0x1fab, + /* GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI */ + /* 229*/ 0x1f64, 0x03b9, 2, 0x1fa4, 0x1fac, + /* GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI */ + /* 234*/ 0x1f65, 0x03b9, 2, 0x1fa5, 0x1fad, + /* GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI */ + /* 239*/ 0x1f66, 0x03b9, 2, 0x1fa6, 0x1fae, + /* GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI */ + /* 244*/ 0x1f67, 0x03b9, 2, 0x1fa7, 0x1faf, + /* GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI */ + /* 249*/ 0x1f70, 0x03b9, 1, 0x1fb2, + /* GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI */ + /* 253*/ 0x1f74, 0x03b9, 1, 0x1fc2, + /* GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI */ + /* 257*/ 0x1f7c, 0x03b9, 1, 0x1ff2, +#define FOLDS2_NORMAL_END_INDEX 261 + /* ----- LOCALE ----- */ + /* LATIN CAPITAL LETTER I WITH DOT ABOVE */ + /* 261*/ 0x0069, 0x0307, 1, 0x0130, +#define FOLDS2_END_INDEX 265 +}; + +OnigCodePoint OnigUnicodeFolds3[] = { + /* LATIN SMALL LIGATURE FFI */ + /* 0*/ 0x0066, 0x0066, 0x0069, 1, 0xfb03, + /* LATIN SMALL LIGATURE FFL */ + /* 5*/ 0x0066, 0x0066, 0x006c, 1, 0xfb04, + /* GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI */ + /* 10*/ 0x03b1, 0x0342, 0x03b9, 1, 0x1fb7, + /* GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI */ + /* 15*/ 0x03b7, 0x0342, 0x03b9, 1, 0x1fc7, + /* GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA */ + /* 20*/ 0x03b9, 0x0308, 0x0300, 1, 0x1fd2, + /* GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS */ + /* 25*/ 0x03b9, 0x0308, 0x0301, 2, 0x0390, 0x1fd3, + /* GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI */ + /* 31*/ 0x03b9, 0x0308, 0x0342, 1, 0x1fd7, + /* GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA */ + /* 36*/ 0x03c5, 0x0308, 0x0300, 1, 0x1fe2, + /* GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS */ + /* 41*/ 0x03c5, 0x0308, 0x0301, 2, 0x03b0, 0x1fe3, + /* GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI */ + /* 47*/ 0x03c5, 0x0308, 0x0342, 1, 0x1fe7, + /* GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA */ + /* 52*/ 0x03c5, 0x0313, 0x0300, 1, 0x1f52, + /* GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA */ + /* 57*/ 0x03c5, 0x0313, 0x0301, 1, 0x1f54, + /* GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI */ + /* 62*/ 0x03c5, 0x0313, 0x0342, 1, 0x1f56, + /* GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI */ + /* 67*/ 0x03c9, 0x0342, 0x03b9, 1, 0x1ff7, +#define FOLDS3_NORMAL_END_INDEX 72 + /* ----- LOCALE ----- */ +#define FOLDS3_END_INDEX 72 +}; + diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_property_data.c b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_property_data.c new file mode 100644 index 0000000000..06f6f13bdd --- /dev/null +++ b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_property_data.c @@ -0,0 +1,29893 @@ +/* ANSI-C code produced by gperf version 3.1 */ +/* Command-line: /usr/bin/gperf -T -C -c -t -j1 -L ANSI-C --ignore-case --pic -Q unicode_prop_name_pool -N unicode_lookup_property_name --output-file gperf1.tmp unicode_property_data.gperf */ +/* Computed positions: -k'1-3,5-6,12,16,$' */ + +#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \ + && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \ + && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \ + && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \ + && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \ + && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \ + && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \ + && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \ + && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \ + && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \ + && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \ + && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \ + && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \ + && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \ + && ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \ + && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \ + && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \ + && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \ + && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \ + && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \ + && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \ + && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \ + && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126)) +/* The character set is not based on ISO-646. */ +#error "gperf generated tables don't work with this execution character set. Please report a bug to ." +#endif + + + +/* Generated by make_unicode_property_data.py. */ + + +/* PROPERTY: 'NEWLINE': POSIX [[:NEWLINE:]] */ +static const OnigCodePoint +CR_NEWLINE[] = { 1, +0x000a, 0x000a, +}; /* END of CR_NEWLINE */ + +/* PROPERTY: 'Alpha': POSIX [[:Alpha:]] */ +static const OnigCodePoint +CR_Alpha[] = { 676, +0x0041, 0x005a, +0x0061, 0x007a, +0x00aa, 0x00aa, +0x00b5, 0x00b5, +0x00ba, 0x00ba, +0x00c0, 0x00d6, +0x00d8, 0x00f6, +0x00f8, 0x02c1, +0x02c6, 0x02d1, +0x02e0, 0x02e4, +0x02ec, 0x02ec, +0x02ee, 0x02ee, +0x0345, 0x0345, +0x0370, 0x0374, +0x0376, 0x0377, +0x037a, 0x037d, +0x037f, 0x037f, +0x0386, 0x0386, +0x0388, 0x038a, +0x038c, 0x038c, +0x038e, 0x03a1, +0x03a3, 0x03f5, +0x03f7, 0x0481, +0x048a, 0x052f, +0x0531, 0x0556, +0x0559, 0x0559, +0x0560, 0x0588, +0x05b0, 0x05bd, +0x05bf, 0x05bf, +0x05c1, 0x05c2, +0x05c4, 0x05c5, +0x05c7, 0x05c7, +0x05d0, 0x05ea, +0x05ef, 0x05f2, +0x0610, 0x061a, +0x0620, 0x0657, +0x0659, 0x065f, +0x066e, 0x06d3, +0x06d5, 0x06dc, +0x06e1, 0x06e8, +0x06ed, 0x06ef, +0x06fa, 0x06fc, +0x06ff, 0x06ff, +0x0710, 0x073f, +0x074d, 0x07b1, +0x07ca, 0x07ea, +0x07f4, 0x07f5, +0x07fa, 0x07fa, +0x0800, 0x0817, +0x081a, 0x082c, +0x0840, 0x0858, +0x0860, 0x086a, +0x08a0, 0x08b4, +0x08b6, 0x08bd, +0x08d4, 0x08df, +0x08e3, 0x08e9, +0x08f0, 0x093b, +0x093d, 0x094c, +0x094e, 0x0950, +0x0955, 0x0963, +0x0971, 0x0983, +0x0985, 0x098c, +0x098f, 0x0990, +0x0993, 0x09a8, +0x09aa, 0x09b0, +0x09b2, 0x09b2, +0x09b6, 0x09b9, +0x09bd, 0x09c4, +0x09c7, 0x09c8, +0x09cb, 0x09cc, +0x09ce, 0x09ce, +0x09d7, 0x09d7, +0x09dc, 0x09dd, +0x09df, 0x09e3, +0x09f0, 0x09f1, +0x09fc, 0x09fc, +0x0a01, 0x0a03, +0x0a05, 0x0a0a, +0x0a0f, 0x0a10, +0x0a13, 0x0a28, +0x0a2a, 0x0a30, +0x0a32, 0x0a33, +0x0a35, 0x0a36, +0x0a38, 0x0a39, +0x0a3e, 0x0a42, +0x0a47, 0x0a48, +0x0a4b, 0x0a4c, +0x0a51, 0x0a51, +0x0a59, 0x0a5c, +0x0a5e, 0x0a5e, +0x0a70, 0x0a75, +0x0a81, 0x0a83, +0x0a85, 0x0a8d, +0x0a8f, 0x0a91, +0x0a93, 0x0aa8, +0x0aaa, 0x0ab0, +0x0ab2, 0x0ab3, +0x0ab5, 0x0ab9, +0x0abd, 0x0ac5, +0x0ac7, 0x0ac9, +0x0acb, 0x0acc, +0x0ad0, 0x0ad0, +0x0ae0, 0x0ae3, +0x0af9, 0x0afc, +0x0b01, 0x0b03, +0x0b05, 0x0b0c, +0x0b0f, 0x0b10, +0x0b13, 0x0b28, +0x0b2a, 0x0b30, +0x0b32, 0x0b33, +0x0b35, 0x0b39, +0x0b3d, 0x0b44, +0x0b47, 0x0b48, +0x0b4b, 0x0b4c, +0x0b56, 0x0b57, +0x0b5c, 0x0b5d, +0x0b5f, 0x0b63, +0x0b71, 0x0b71, +0x0b82, 0x0b83, +0x0b85, 0x0b8a, +0x0b8e, 0x0b90, +0x0b92, 0x0b95, +0x0b99, 0x0b9a, +0x0b9c, 0x0b9c, +0x0b9e, 0x0b9f, +0x0ba3, 0x0ba4, +0x0ba8, 0x0baa, +0x0bae, 0x0bb9, +0x0bbe, 0x0bc2, +0x0bc6, 0x0bc8, +0x0bca, 0x0bcc, +0x0bd0, 0x0bd0, +0x0bd7, 0x0bd7, +0x0c00, 0x0c03, +0x0c05, 0x0c0c, +0x0c0e, 0x0c10, +0x0c12, 0x0c28, +0x0c2a, 0x0c39, +0x0c3d, 0x0c44, +0x0c46, 0x0c48, +0x0c4a, 0x0c4c, +0x0c55, 0x0c56, +0x0c58, 0x0c5a, +0x0c60, 0x0c63, +0x0c80, 0x0c83, +0x0c85, 0x0c8c, +0x0c8e, 0x0c90, +0x0c92, 0x0ca8, +0x0caa, 0x0cb3, +0x0cb5, 0x0cb9, +0x0cbd, 0x0cc4, +0x0cc6, 0x0cc8, +0x0cca, 0x0ccc, +0x0cd5, 0x0cd6, +0x0cde, 0x0cde, +0x0ce0, 0x0ce3, +0x0cf1, 0x0cf2, +0x0d00, 0x0d03, +0x0d05, 0x0d0c, +0x0d0e, 0x0d10, +0x0d12, 0x0d3a, +0x0d3d, 0x0d44, +0x0d46, 0x0d48, +0x0d4a, 0x0d4c, +0x0d4e, 0x0d4e, +0x0d54, 0x0d57, +0x0d5f, 0x0d63, +0x0d7a, 0x0d7f, +0x0d82, 0x0d83, +0x0d85, 0x0d96, +0x0d9a, 0x0db1, +0x0db3, 0x0dbb, +0x0dbd, 0x0dbd, +0x0dc0, 0x0dc6, +0x0dcf, 0x0dd4, +0x0dd6, 0x0dd6, +0x0dd8, 0x0ddf, +0x0df2, 0x0df3, +0x0e01, 0x0e3a, +0x0e40, 0x0e46, +0x0e4d, 0x0e4d, +0x0e81, 0x0e82, +0x0e84, 0x0e84, +0x0e87, 0x0e88, +0x0e8a, 0x0e8a, +0x0e8d, 0x0e8d, +0x0e94, 0x0e97, +0x0e99, 0x0e9f, +0x0ea1, 0x0ea3, +0x0ea5, 0x0ea5, +0x0ea7, 0x0ea7, +0x0eaa, 0x0eab, +0x0ead, 0x0eb9, +0x0ebb, 0x0ebd, +0x0ec0, 0x0ec4, +0x0ec6, 0x0ec6, +0x0ecd, 0x0ecd, +0x0edc, 0x0edf, +0x0f00, 0x0f00, +0x0f40, 0x0f47, +0x0f49, 0x0f6c, +0x0f71, 0x0f81, +0x0f88, 0x0f97, +0x0f99, 0x0fbc, +0x1000, 0x1036, +0x1038, 0x1038, +0x103b, 0x103f, +0x1050, 0x1062, +0x1065, 0x1068, +0x106e, 0x1086, +0x108e, 0x108e, +0x109c, 0x109d, +0x10a0, 0x10c5, +0x10c7, 0x10c7, +0x10cd, 0x10cd, +0x10d0, 0x10fa, +0x10fc, 0x1248, +0x124a, 0x124d, +0x1250, 0x1256, +0x1258, 0x1258, +0x125a, 0x125d, +0x1260, 0x1288, +0x128a, 0x128d, +0x1290, 0x12b0, +0x12b2, 0x12b5, +0x12b8, 0x12be, +0x12c0, 0x12c0, +0x12c2, 0x12c5, +0x12c8, 0x12d6, +0x12d8, 0x1310, +0x1312, 0x1315, +0x1318, 0x135a, +0x135f, 0x135f, +0x1380, 0x138f, +0x13a0, 0x13f5, +0x13f8, 0x13fd, +0x1401, 0x166c, +0x166f, 0x167f, +0x1681, 0x169a, +0x16a0, 0x16ea, +0x16ee, 0x16f8, +0x1700, 0x170c, +0x170e, 0x1713, +0x1720, 0x1733, +0x1740, 0x1753, +0x1760, 0x176c, +0x176e, 0x1770, +0x1772, 0x1773, +0x1780, 0x17b3, +0x17b6, 0x17c8, +0x17d7, 0x17d7, +0x17dc, 0x17dc, +0x1820, 0x1878, +0x1880, 0x18aa, +0x18b0, 0x18f5, +0x1900, 0x191e, +0x1920, 0x192b, +0x1930, 0x1938, +0x1950, 0x196d, +0x1970, 0x1974, +0x1980, 0x19ab, +0x19b0, 0x19c9, +0x1a00, 0x1a1b, +0x1a20, 0x1a5e, +0x1a61, 0x1a74, +0x1aa7, 0x1aa7, +0x1b00, 0x1b33, +0x1b35, 0x1b43, +0x1b45, 0x1b4b, +0x1b80, 0x1ba9, +0x1bac, 0x1baf, +0x1bba, 0x1be5, +0x1be7, 0x1bf1, +0x1c00, 0x1c35, +0x1c4d, 0x1c4f, +0x1c5a, 0x1c7d, +0x1c80, 0x1c88, +0x1c90, 0x1cba, +0x1cbd, 0x1cbf, +0x1ce9, 0x1cec, +0x1cee, 0x1cf3, +0x1cf5, 0x1cf6, +0x1d00, 0x1dbf, +0x1de7, 0x1df4, +0x1e00, 0x1f15, +0x1f18, 0x1f1d, +0x1f20, 0x1f45, +0x1f48, 0x1f4d, +0x1f50, 0x1f57, +0x1f59, 0x1f59, +0x1f5b, 0x1f5b, +0x1f5d, 0x1f5d, +0x1f5f, 0x1f7d, +0x1f80, 0x1fb4, +0x1fb6, 0x1fbc, +0x1fbe, 0x1fbe, +0x1fc2, 0x1fc4, +0x1fc6, 0x1fcc, +0x1fd0, 0x1fd3, +0x1fd6, 0x1fdb, +0x1fe0, 0x1fec, +0x1ff2, 0x1ff4, +0x1ff6, 0x1ffc, +0x2071, 0x2071, +0x207f, 0x207f, +0x2090, 0x209c, +0x2102, 0x2102, +0x2107, 0x2107, +0x210a, 0x2113, +0x2115, 0x2115, +0x2119, 0x211d, +0x2124, 0x2124, +0x2126, 0x2126, +0x2128, 0x2128, +0x212a, 0x212d, +0x212f, 0x2139, +0x213c, 0x213f, +0x2145, 0x2149, +0x214e, 0x214e, +0x2160, 0x2188, +0x24b6, 0x24e9, +0x2c00, 0x2c2e, +0x2c30, 0x2c5e, +0x2c60, 0x2ce4, +0x2ceb, 0x2cee, +0x2cf2, 0x2cf3, +0x2d00, 0x2d25, +0x2d27, 0x2d27, +0x2d2d, 0x2d2d, +0x2d30, 0x2d67, +0x2d6f, 0x2d6f, +0x2d80, 0x2d96, +0x2da0, 0x2da6, +0x2da8, 0x2dae, +0x2db0, 0x2db6, +0x2db8, 0x2dbe, +0x2dc0, 0x2dc6, +0x2dc8, 0x2dce, +0x2dd0, 0x2dd6, +0x2dd8, 0x2dde, +0x2de0, 0x2dff, +0x2e2f, 0x2e2f, +0x3005, 0x3007, +0x3021, 0x3029, +0x3031, 0x3035, +0x3038, 0x303c, +0x3041, 0x3096, +0x309d, 0x309f, +0x30a1, 0x30fa, +0x30fc, 0x30ff, +0x3105, 0x312f, +0x3131, 0x318e, +0x31a0, 0x31ba, +0x31f0, 0x31ff, +0x3400, 0x4db5, +0x4e00, 0x9fef, +0xa000, 0xa48c, +0xa4d0, 0xa4fd, +0xa500, 0xa60c, +0xa610, 0xa61f, +0xa62a, 0xa62b, +0xa640, 0xa66e, +0xa674, 0xa67b, +0xa67f, 0xa6ef, +0xa717, 0xa71f, +0xa722, 0xa788, +0xa78b, 0xa7b9, +0xa7f7, 0xa801, +0xa803, 0xa805, +0xa807, 0xa80a, +0xa80c, 0xa827, +0xa840, 0xa873, +0xa880, 0xa8c3, +0xa8c5, 0xa8c5, +0xa8f2, 0xa8f7, +0xa8fb, 0xa8fb, +0xa8fd, 0xa8fe, +0xa90a, 0xa92a, +0xa930, 0xa952, +0xa960, 0xa97c, +0xa980, 0xa9b2, +0xa9b4, 0xa9bf, +0xa9cf, 0xa9cf, +0xa9e0, 0xa9e4, +0xa9e6, 0xa9ef, +0xa9fa, 0xa9fe, +0xaa00, 0xaa36, +0xaa40, 0xaa4d, +0xaa60, 0xaa76, +0xaa7a, 0xaa7a, +0xaa7e, 0xaabe, +0xaac0, 0xaac0, +0xaac2, 0xaac2, +0xaadb, 0xaadd, +0xaae0, 0xaaef, +0xaaf2, 0xaaf5, +0xab01, 0xab06, +0xab09, 0xab0e, +0xab11, 0xab16, +0xab20, 0xab26, +0xab28, 0xab2e, +0xab30, 0xab5a, +0xab5c, 0xab65, +0xab70, 0xabea, +0xac00, 0xd7a3, +0xd7b0, 0xd7c6, +0xd7cb, 0xd7fb, +0xf900, 0xfa6d, +0xfa70, 0xfad9, +0xfb00, 0xfb06, +0xfb13, 0xfb17, +0xfb1d, 0xfb28, +0xfb2a, 0xfb36, +0xfb38, 0xfb3c, +0xfb3e, 0xfb3e, +0xfb40, 0xfb41, +0xfb43, 0xfb44, +0xfb46, 0xfbb1, +0xfbd3, 0xfd3d, +0xfd50, 0xfd8f, +0xfd92, 0xfdc7, +0xfdf0, 0xfdfb, +0xfe70, 0xfe74, +0xfe76, 0xfefc, +0xff21, 0xff3a, +0xff41, 0xff5a, +0xff66, 0xffbe, +0xffc2, 0xffc7, +0xffca, 0xffcf, +0xffd2, 0xffd7, +0xffda, 0xffdc, +0x10000, 0x1000b, +0x1000d, 0x10026, +0x10028, 0x1003a, +0x1003c, 0x1003d, +0x1003f, 0x1004d, +0x10050, 0x1005d, +0x10080, 0x100fa, +0x10140, 0x10174, +0x10280, 0x1029c, +0x102a0, 0x102d0, +0x10300, 0x1031f, +0x1032d, 0x1034a, +0x10350, 0x1037a, +0x10380, 0x1039d, +0x103a0, 0x103c3, +0x103c8, 0x103cf, +0x103d1, 0x103d5, +0x10400, 0x1049d, +0x104b0, 0x104d3, +0x104d8, 0x104fb, +0x10500, 0x10527, +0x10530, 0x10563, +0x10600, 0x10736, +0x10740, 0x10755, +0x10760, 0x10767, +0x10800, 0x10805, +0x10808, 0x10808, +0x1080a, 0x10835, +0x10837, 0x10838, +0x1083c, 0x1083c, +0x1083f, 0x10855, +0x10860, 0x10876, +0x10880, 0x1089e, +0x108e0, 0x108f2, +0x108f4, 0x108f5, +0x10900, 0x10915, +0x10920, 0x10939, +0x10980, 0x109b7, +0x109be, 0x109bf, +0x10a00, 0x10a03, +0x10a05, 0x10a06, +0x10a0c, 0x10a13, +0x10a15, 0x10a17, +0x10a19, 0x10a35, +0x10a60, 0x10a7c, +0x10a80, 0x10a9c, +0x10ac0, 0x10ac7, +0x10ac9, 0x10ae4, +0x10b00, 0x10b35, +0x10b40, 0x10b55, +0x10b60, 0x10b72, +0x10b80, 0x10b91, +0x10c00, 0x10c48, +0x10c80, 0x10cb2, +0x10cc0, 0x10cf2, +0x10d00, 0x10d27, +0x10f00, 0x10f1c, +0x10f27, 0x10f27, +0x10f30, 0x10f45, +0x11000, 0x11045, +0x11082, 0x110b8, +0x110d0, 0x110e8, +0x11100, 0x11132, +0x11144, 0x11146, +0x11150, 0x11172, +0x11176, 0x11176, +0x11180, 0x111bf, +0x111c1, 0x111c4, +0x111da, 0x111da, +0x111dc, 0x111dc, +0x11200, 0x11211, +0x11213, 0x11234, +0x11237, 0x11237, +0x1123e, 0x1123e, +0x11280, 0x11286, +0x11288, 0x11288, +0x1128a, 0x1128d, +0x1128f, 0x1129d, +0x1129f, 0x112a8, +0x112b0, 0x112e8, +0x11300, 0x11303, +0x11305, 0x1130c, +0x1130f, 0x11310, +0x11313, 0x11328, +0x1132a, 0x11330, +0x11332, 0x11333, +0x11335, 0x11339, +0x1133d, 0x11344, +0x11347, 0x11348, +0x1134b, 0x1134c, +0x11350, 0x11350, +0x11357, 0x11357, +0x1135d, 0x11363, +0x11400, 0x11441, +0x11443, 0x11445, +0x11447, 0x1144a, +0x11480, 0x114c1, +0x114c4, 0x114c5, +0x114c7, 0x114c7, +0x11580, 0x115b5, +0x115b8, 0x115be, +0x115d8, 0x115dd, +0x11600, 0x1163e, +0x11640, 0x11640, +0x11644, 0x11644, +0x11680, 0x116b5, +0x11700, 0x1171a, +0x1171d, 0x1172a, +0x11800, 0x11838, +0x118a0, 0x118df, +0x118ff, 0x118ff, +0x11a00, 0x11a32, +0x11a35, 0x11a3e, +0x11a50, 0x11a83, +0x11a86, 0x11a97, +0x11a9d, 0x11a9d, +0x11ac0, 0x11af8, +0x11c00, 0x11c08, +0x11c0a, 0x11c36, +0x11c38, 0x11c3e, +0x11c40, 0x11c40, +0x11c72, 0x11c8f, +0x11c92, 0x11ca7, +0x11ca9, 0x11cb6, +0x11d00, 0x11d06, +0x11d08, 0x11d09, +0x11d0b, 0x11d36, +0x11d3a, 0x11d3a, +0x11d3c, 0x11d3d, +0x11d3f, 0x11d41, +0x11d43, 0x11d43, +0x11d46, 0x11d47, +0x11d60, 0x11d65, +0x11d67, 0x11d68, +0x11d6a, 0x11d8e, +0x11d90, 0x11d91, +0x11d93, 0x11d96, +0x11d98, 0x11d98, +0x11ee0, 0x11ef6, +0x12000, 0x12399, +0x12400, 0x1246e, +0x12480, 0x12543, +0x13000, 0x1342e, +0x14400, 0x14646, +0x16800, 0x16a38, +0x16a40, 0x16a5e, +0x16ad0, 0x16aed, +0x16b00, 0x16b36, +0x16b40, 0x16b43, +0x16b63, 0x16b77, +0x16b7d, 0x16b8f, +0x16e40, 0x16e7f, +0x16f00, 0x16f44, +0x16f50, 0x16f7e, +0x16f93, 0x16f9f, +0x16fe0, 0x16fe1, +0x17000, 0x187f1, +0x18800, 0x18af2, +0x1b000, 0x1b11e, +0x1b170, 0x1b2fb, +0x1bc00, 0x1bc6a, +0x1bc70, 0x1bc7c, +0x1bc80, 0x1bc88, +0x1bc90, 0x1bc99, +0x1bc9e, 0x1bc9e, +0x1d400, 0x1d454, +0x1d456, 0x1d49c, +0x1d49e, 0x1d49f, +0x1d4a2, 0x1d4a2, +0x1d4a5, 0x1d4a6, +0x1d4a9, 0x1d4ac, +0x1d4ae, 0x1d4b9, +0x1d4bb, 0x1d4bb, +0x1d4bd, 0x1d4c3, +0x1d4c5, 0x1d505, +0x1d507, 0x1d50a, +0x1d50d, 0x1d514, +0x1d516, 0x1d51c, +0x1d51e, 0x1d539, +0x1d53b, 0x1d53e, +0x1d540, 0x1d544, +0x1d546, 0x1d546, +0x1d54a, 0x1d550, +0x1d552, 0x1d6a5, +0x1d6a8, 0x1d6c0, +0x1d6c2, 0x1d6da, +0x1d6dc, 0x1d6fa, +0x1d6fc, 0x1d714, +0x1d716, 0x1d734, +0x1d736, 0x1d74e, +0x1d750, 0x1d76e, +0x1d770, 0x1d788, +0x1d78a, 0x1d7a8, +0x1d7aa, 0x1d7c2, +0x1d7c4, 0x1d7cb, +0x1e000, 0x1e006, +0x1e008, 0x1e018, +0x1e01b, 0x1e021, +0x1e023, 0x1e024, +0x1e026, 0x1e02a, +0x1e800, 0x1e8c4, +0x1e900, 0x1e943, +0x1e947, 0x1e947, +0x1ee00, 0x1ee03, +0x1ee05, 0x1ee1f, +0x1ee21, 0x1ee22, +0x1ee24, 0x1ee24, +0x1ee27, 0x1ee27, +0x1ee29, 0x1ee32, +0x1ee34, 0x1ee37, +0x1ee39, 0x1ee39, +0x1ee3b, 0x1ee3b, +0x1ee42, 0x1ee42, +0x1ee47, 0x1ee47, +0x1ee49, 0x1ee49, +0x1ee4b, 0x1ee4b, +0x1ee4d, 0x1ee4f, +0x1ee51, 0x1ee52, +0x1ee54, 0x1ee54, +0x1ee57, 0x1ee57, +0x1ee59, 0x1ee59, +0x1ee5b, 0x1ee5b, +0x1ee5d, 0x1ee5d, +0x1ee5f, 0x1ee5f, +0x1ee61, 0x1ee62, +0x1ee64, 0x1ee64, +0x1ee67, 0x1ee6a, +0x1ee6c, 0x1ee72, +0x1ee74, 0x1ee77, +0x1ee79, 0x1ee7c, +0x1ee7e, 0x1ee7e, +0x1ee80, 0x1ee89, +0x1ee8b, 0x1ee9b, +0x1eea1, 0x1eea3, +0x1eea5, 0x1eea9, +0x1eeab, 0x1eebb, +0x1f130, 0x1f149, +0x1f150, 0x1f169, +0x1f170, 0x1f189, +0x20000, 0x2a6d6, +0x2a700, 0x2b734, +0x2b740, 0x2b81d, +0x2b820, 0x2cea1, +0x2ceb0, 0x2ebe0, +0x2f800, 0x2fa1d, +}; /* END of CR_Alpha */ + +/* PROPERTY: 'Blank': POSIX [[:Blank:]] */ +static const OnigCodePoint +CR_Blank[] = { 8, +0x0009, 0x0009, +0x0020, 0x0020, +0x00a0, 0x00a0, +0x1680, 0x1680, +0x2000, 0x200a, +0x202f, 0x202f, +0x205f, 0x205f, +0x3000, 0x3000, +}; /* END of CR_Blank */ + +/* PROPERTY: 'Cntrl': POSIX [[:Cntrl:]] */ +static const OnigCodePoint +CR_Cntrl[] = { 2, +0x0000, 0x001f, +0x007f, 0x009f, +}; /* END of CR_Cntrl */ + +/* PROPERTY: 'Digit': POSIX [[:Digit:]] */ +static const OnigCodePoint +CR_Digit[] = { 57, +0x0030, 0x0039, +0x0660, 0x0669, +0x06f0, 0x06f9, +0x07c0, 0x07c9, +0x0966, 0x096f, +0x09e6, 0x09ef, +0x0a66, 0x0a6f, +0x0ae6, 0x0aef, +0x0b66, 0x0b6f, +0x0be6, 0x0bef, +0x0c66, 0x0c6f, +0x0ce6, 0x0cef, +0x0d66, 0x0d6f, +0x0de6, 0x0def, +0x0e50, 0x0e59, +0x0ed0, 0x0ed9, +0x0f20, 0x0f29, +0x1040, 0x1049, +0x1090, 0x1099, +0x17e0, 0x17e9, +0x1810, 0x1819, +0x1946, 0x194f, +0x19d0, 0x19d9, +0x1a80, 0x1a89, +0x1a90, 0x1a99, +0x1b50, 0x1b59, +0x1bb0, 0x1bb9, +0x1c40, 0x1c49, +0x1c50, 0x1c59, +0xa620, 0xa629, +0xa8d0, 0xa8d9, +0xa900, 0xa909, +0xa9d0, 0xa9d9, +0xa9f0, 0xa9f9, +0xaa50, 0xaa59, +0xabf0, 0xabf9, +0xff10, 0xff19, +0x104a0, 0x104a9, +0x10d30, 0x10d39, +0x11066, 0x1106f, +0x110f0, 0x110f9, +0x11136, 0x1113f, +0x111d0, 0x111d9, +0x112f0, 0x112f9, +0x11450, 0x11459, +0x114d0, 0x114d9, +0x11650, 0x11659, +0x116c0, 0x116c9, +0x11730, 0x11739, +0x118e0, 0x118e9, +0x11c50, 0x11c59, +0x11d50, 0x11d59, +0x11da0, 0x11da9, +0x16a60, 0x16a69, +0x16b50, 0x16b59, +0x1d7ce, 0x1d7ff, +0x1e950, 0x1e959, +}; /* END of CR_Digit */ + +/* PROPERTY: 'Graph': POSIX [[:Graph:]] */ +static const OnigCodePoint +CR_Graph[] = { 663, +0x0021, 0x007e, +0x00a1, 0x0377, +0x037a, 0x037f, +0x0384, 0x038a, +0x038c, 0x038c, +0x038e, 0x03a1, +0x03a3, 0x052f, +0x0531, 0x0556, +0x0559, 0x058a, +0x058d, 0x058f, +0x0591, 0x05c7, +0x05d0, 0x05ea, +0x05ef, 0x05f4, +0x0600, 0x061c, +0x061e, 0x070d, +0x070f, 0x074a, +0x074d, 0x07b1, +0x07c0, 0x07fa, +0x07fd, 0x082d, +0x0830, 0x083e, +0x0840, 0x085b, +0x085e, 0x085e, +0x0860, 0x086a, +0x08a0, 0x08b4, +0x08b6, 0x08bd, +0x08d3, 0x0983, +0x0985, 0x098c, +0x098f, 0x0990, +0x0993, 0x09a8, +0x09aa, 0x09b0, +0x09b2, 0x09b2, +0x09b6, 0x09b9, +0x09bc, 0x09c4, +0x09c7, 0x09c8, +0x09cb, 0x09ce, +0x09d7, 0x09d7, +0x09dc, 0x09dd, +0x09df, 0x09e3, +0x09e6, 0x09fe, +0x0a01, 0x0a03, +0x0a05, 0x0a0a, +0x0a0f, 0x0a10, +0x0a13, 0x0a28, +0x0a2a, 0x0a30, +0x0a32, 0x0a33, +0x0a35, 0x0a36, +0x0a38, 0x0a39, +0x0a3c, 0x0a3c, +0x0a3e, 0x0a42, +0x0a47, 0x0a48, +0x0a4b, 0x0a4d, +0x0a51, 0x0a51, +0x0a59, 0x0a5c, +0x0a5e, 0x0a5e, +0x0a66, 0x0a76, +0x0a81, 0x0a83, +0x0a85, 0x0a8d, +0x0a8f, 0x0a91, +0x0a93, 0x0aa8, +0x0aaa, 0x0ab0, +0x0ab2, 0x0ab3, +0x0ab5, 0x0ab9, +0x0abc, 0x0ac5, +0x0ac7, 0x0ac9, +0x0acb, 0x0acd, +0x0ad0, 0x0ad0, +0x0ae0, 0x0ae3, +0x0ae6, 0x0af1, +0x0af9, 0x0aff, +0x0b01, 0x0b03, +0x0b05, 0x0b0c, +0x0b0f, 0x0b10, +0x0b13, 0x0b28, +0x0b2a, 0x0b30, +0x0b32, 0x0b33, +0x0b35, 0x0b39, +0x0b3c, 0x0b44, +0x0b47, 0x0b48, +0x0b4b, 0x0b4d, +0x0b56, 0x0b57, +0x0b5c, 0x0b5d, +0x0b5f, 0x0b63, +0x0b66, 0x0b77, +0x0b82, 0x0b83, +0x0b85, 0x0b8a, +0x0b8e, 0x0b90, +0x0b92, 0x0b95, +0x0b99, 0x0b9a, +0x0b9c, 0x0b9c, +0x0b9e, 0x0b9f, +0x0ba3, 0x0ba4, +0x0ba8, 0x0baa, +0x0bae, 0x0bb9, +0x0bbe, 0x0bc2, +0x0bc6, 0x0bc8, +0x0bca, 0x0bcd, +0x0bd0, 0x0bd0, +0x0bd7, 0x0bd7, +0x0be6, 0x0bfa, +0x0c00, 0x0c0c, +0x0c0e, 0x0c10, +0x0c12, 0x0c28, +0x0c2a, 0x0c39, +0x0c3d, 0x0c44, +0x0c46, 0x0c48, +0x0c4a, 0x0c4d, +0x0c55, 0x0c56, +0x0c58, 0x0c5a, +0x0c60, 0x0c63, +0x0c66, 0x0c6f, +0x0c78, 0x0c8c, +0x0c8e, 0x0c90, +0x0c92, 0x0ca8, +0x0caa, 0x0cb3, +0x0cb5, 0x0cb9, +0x0cbc, 0x0cc4, +0x0cc6, 0x0cc8, +0x0cca, 0x0ccd, +0x0cd5, 0x0cd6, +0x0cde, 0x0cde, +0x0ce0, 0x0ce3, +0x0ce6, 0x0cef, +0x0cf1, 0x0cf2, +0x0d00, 0x0d03, +0x0d05, 0x0d0c, +0x0d0e, 0x0d10, +0x0d12, 0x0d44, +0x0d46, 0x0d48, +0x0d4a, 0x0d4f, +0x0d54, 0x0d63, +0x0d66, 0x0d7f, +0x0d82, 0x0d83, +0x0d85, 0x0d96, +0x0d9a, 0x0db1, +0x0db3, 0x0dbb, +0x0dbd, 0x0dbd, +0x0dc0, 0x0dc6, +0x0dca, 0x0dca, +0x0dcf, 0x0dd4, +0x0dd6, 0x0dd6, +0x0dd8, 0x0ddf, +0x0de6, 0x0def, +0x0df2, 0x0df4, +0x0e01, 0x0e3a, +0x0e3f, 0x0e5b, +0x0e81, 0x0e82, +0x0e84, 0x0e84, +0x0e87, 0x0e88, +0x0e8a, 0x0e8a, +0x0e8d, 0x0e8d, +0x0e94, 0x0e97, +0x0e99, 0x0e9f, +0x0ea1, 0x0ea3, +0x0ea5, 0x0ea5, +0x0ea7, 0x0ea7, +0x0eaa, 0x0eab, +0x0ead, 0x0eb9, +0x0ebb, 0x0ebd, +0x0ec0, 0x0ec4, +0x0ec6, 0x0ec6, +0x0ec8, 0x0ecd, +0x0ed0, 0x0ed9, +0x0edc, 0x0edf, +0x0f00, 0x0f47, +0x0f49, 0x0f6c, +0x0f71, 0x0f97, +0x0f99, 0x0fbc, +0x0fbe, 0x0fcc, +0x0fce, 0x0fda, +0x1000, 0x10c5, +0x10c7, 0x10c7, +0x10cd, 0x10cd, +0x10d0, 0x1248, +0x124a, 0x124d, +0x1250, 0x1256, +0x1258, 0x1258, +0x125a, 0x125d, +0x1260, 0x1288, +0x128a, 0x128d, +0x1290, 0x12b0, +0x12b2, 0x12b5, +0x12b8, 0x12be, +0x12c0, 0x12c0, +0x12c2, 0x12c5, +0x12c8, 0x12d6, +0x12d8, 0x1310, +0x1312, 0x1315, +0x1318, 0x135a, +0x135d, 0x137c, +0x1380, 0x1399, +0x13a0, 0x13f5, +0x13f8, 0x13fd, +0x1400, 0x167f, +0x1681, 0x169c, +0x16a0, 0x16f8, +0x1700, 0x170c, +0x170e, 0x1714, +0x1720, 0x1736, +0x1740, 0x1753, +0x1760, 0x176c, +0x176e, 0x1770, +0x1772, 0x1773, +0x1780, 0x17dd, +0x17e0, 0x17e9, +0x17f0, 0x17f9, +0x1800, 0x180e, +0x1810, 0x1819, +0x1820, 0x1878, +0x1880, 0x18aa, +0x18b0, 0x18f5, +0x1900, 0x191e, +0x1920, 0x192b, +0x1930, 0x193b, +0x1940, 0x1940, +0x1944, 0x196d, +0x1970, 0x1974, +0x1980, 0x19ab, +0x19b0, 0x19c9, +0x19d0, 0x19da, +0x19de, 0x1a1b, +0x1a1e, 0x1a5e, +0x1a60, 0x1a7c, +0x1a7f, 0x1a89, +0x1a90, 0x1a99, +0x1aa0, 0x1aad, +0x1ab0, 0x1abe, +0x1b00, 0x1b4b, +0x1b50, 0x1b7c, +0x1b80, 0x1bf3, +0x1bfc, 0x1c37, +0x1c3b, 0x1c49, +0x1c4d, 0x1c88, +0x1c90, 0x1cba, +0x1cbd, 0x1cc7, +0x1cd0, 0x1cf9, +0x1d00, 0x1df9, +0x1dfb, 0x1f15, +0x1f18, 0x1f1d, +0x1f20, 0x1f45, +0x1f48, 0x1f4d, +0x1f50, 0x1f57, +0x1f59, 0x1f59, +0x1f5b, 0x1f5b, +0x1f5d, 0x1f5d, +0x1f5f, 0x1f7d, +0x1f80, 0x1fb4, +0x1fb6, 0x1fc4, +0x1fc6, 0x1fd3, +0x1fd6, 0x1fdb, +0x1fdd, 0x1fef, +0x1ff2, 0x1ff4, +0x1ff6, 0x1ffe, +0x200b, 0x2027, +0x202a, 0x202e, +0x2030, 0x205e, +0x2060, 0x2064, +0x2066, 0x2071, +0x2074, 0x208e, +0x2090, 0x209c, +0x20a0, 0x20bf, +0x20d0, 0x20f0, +0x2100, 0x218b, +0x2190, 0x2426, +0x2440, 0x244a, +0x2460, 0x2b73, +0x2b76, 0x2b95, +0x2b98, 0x2bc8, +0x2bca, 0x2bfe, +0x2c00, 0x2c2e, +0x2c30, 0x2c5e, +0x2c60, 0x2cf3, +0x2cf9, 0x2d25, +0x2d27, 0x2d27, +0x2d2d, 0x2d2d, +0x2d30, 0x2d67, +0x2d6f, 0x2d70, +0x2d7f, 0x2d96, +0x2da0, 0x2da6, +0x2da8, 0x2dae, +0x2db0, 0x2db6, +0x2db8, 0x2dbe, +0x2dc0, 0x2dc6, +0x2dc8, 0x2dce, +0x2dd0, 0x2dd6, +0x2dd8, 0x2dde, +0x2de0, 0x2e4e, +0x2e80, 0x2e99, +0x2e9b, 0x2ef3, +0x2f00, 0x2fd5, +0x2ff0, 0x2ffb, +0x3001, 0x303f, +0x3041, 0x3096, +0x3099, 0x30ff, +0x3105, 0x312f, +0x3131, 0x318e, +0x3190, 0x31ba, +0x31c0, 0x31e3, +0x31f0, 0x321e, +0x3220, 0x32fe, +0x3300, 0x4db5, +0x4dc0, 0x9fef, +0xa000, 0xa48c, +0xa490, 0xa4c6, +0xa4d0, 0xa62b, +0xa640, 0xa6f7, +0xa700, 0xa7b9, +0xa7f7, 0xa82b, +0xa830, 0xa839, +0xa840, 0xa877, +0xa880, 0xa8c5, +0xa8ce, 0xa8d9, +0xa8e0, 0xa953, +0xa95f, 0xa97c, +0xa980, 0xa9cd, +0xa9cf, 0xa9d9, +0xa9de, 0xa9fe, +0xaa00, 0xaa36, +0xaa40, 0xaa4d, +0xaa50, 0xaa59, +0xaa5c, 0xaac2, +0xaadb, 0xaaf6, +0xab01, 0xab06, +0xab09, 0xab0e, +0xab11, 0xab16, +0xab20, 0xab26, +0xab28, 0xab2e, +0xab30, 0xab65, +0xab70, 0xabed, +0xabf0, 0xabf9, +0xac00, 0xd7a3, +0xd7b0, 0xd7c6, +0xd7cb, 0xd7fb, +0xe000, 0xfa6d, +0xfa70, 0xfad9, +0xfb00, 0xfb06, +0xfb13, 0xfb17, +0xfb1d, 0xfb36, +0xfb38, 0xfb3c, +0xfb3e, 0xfb3e, +0xfb40, 0xfb41, +0xfb43, 0xfb44, +0xfb46, 0xfbc1, +0xfbd3, 0xfd3f, +0xfd50, 0xfd8f, +0xfd92, 0xfdc7, +0xfdf0, 0xfdfd, +0xfe00, 0xfe19, +0xfe20, 0xfe52, +0xfe54, 0xfe66, +0xfe68, 0xfe6b, +0xfe70, 0xfe74, +0xfe76, 0xfefc, +0xfeff, 0xfeff, +0xff01, 0xffbe, +0xffc2, 0xffc7, +0xffca, 0xffcf, +0xffd2, 0xffd7, +0xffda, 0xffdc, +0xffe0, 0xffe6, +0xffe8, 0xffee, +0xfff9, 0xfffd, +0x10000, 0x1000b, +0x1000d, 0x10026, +0x10028, 0x1003a, +0x1003c, 0x1003d, +0x1003f, 0x1004d, +0x10050, 0x1005d, +0x10080, 0x100fa, +0x10100, 0x10102, +0x10107, 0x10133, +0x10137, 0x1018e, +0x10190, 0x1019b, +0x101a0, 0x101a0, +0x101d0, 0x101fd, +0x10280, 0x1029c, +0x102a0, 0x102d0, +0x102e0, 0x102fb, +0x10300, 0x10323, +0x1032d, 0x1034a, +0x10350, 0x1037a, +0x10380, 0x1039d, +0x1039f, 0x103c3, +0x103c8, 0x103d5, +0x10400, 0x1049d, +0x104a0, 0x104a9, +0x104b0, 0x104d3, +0x104d8, 0x104fb, +0x10500, 0x10527, +0x10530, 0x10563, +0x1056f, 0x1056f, +0x10600, 0x10736, +0x10740, 0x10755, +0x10760, 0x10767, +0x10800, 0x10805, +0x10808, 0x10808, +0x1080a, 0x10835, +0x10837, 0x10838, +0x1083c, 0x1083c, +0x1083f, 0x10855, +0x10857, 0x1089e, +0x108a7, 0x108af, +0x108e0, 0x108f2, +0x108f4, 0x108f5, +0x108fb, 0x1091b, +0x1091f, 0x10939, +0x1093f, 0x1093f, +0x10980, 0x109b7, +0x109bc, 0x109cf, +0x109d2, 0x10a03, +0x10a05, 0x10a06, +0x10a0c, 0x10a13, +0x10a15, 0x10a17, +0x10a19, 0x10a35, +0x10a38, 0x10a3a, +0x10a3f, 0x10a48, +0x10a50, 0x10a58, +0x10a60, 0x10a9f, +0x10ac0, 0x10ae6, +0x10aeb, 0x10af6, +0x10b00, 0x10b35, +0x10b39, 0x10b55, +0x10b58, 0x10b72, +0x10b78, 0x10b91, +0x10b99, 0x10b9c, +0x10ba9, 0x10baf, +0x10c00, 0x10c48, +0x10c80, 0x10cb2, +0x10cc0, 0x10cf2, +0x10cfa, 0x10d27, +0x10d30, 0x10d39, +0x10e60, 0x10e7e, +0x10f00, 0x10f27, +0x10f30, 0x10f59, +0x11000, 0x1104d, +0x11052, 0x1106f, +0x1107f, 0x110c1, +0x110cd, 0x110cd, +0x110d0, 0x110e8, +0x110f0, 0x110f9, +0x11100, 0x11134, +0x11136, 0x11146, +0x11150, 0x11176, +0x11180, 0x111cd, +0x111d0, 0x111df, +0x111e1, 0x111f4, +0x11200, 0x11211, +0x11213, 0x1123e, +0x11280, 0x11286, +0x11288, 0x11288, +0x1128a, 0x1128d, +0x1128f, 0x1129d, +0x1129f, 0x112a9, +0x112b0, 0x112ea, +0x112f0, 0x112f9, +0x11300, 0x11303, +0x11305, 0x1130c, +0x1130f, 0x11310, +0x11313, 0x11328, +0x1132a, 0x11330, +0x11332, 0x11333, +0x11335, 0x11339, +0x1133b, 0x11344, +0x11347, 0x11348, +0x1134b, 0x1134d, +0x11350, 0x11350, +0x11357, 0x11357, +0x1135d, 0x11363, +0x11366, 0x1136c, +0x11370, 0x11374, +0x11400, 0x11459, +0x1145b, 0x1145b, +0x1145d, 0x1145e, +0x11480, 0x114c7, +0x114d0, 0x114d9, +0x11580, 0x115b5, +0x115b8, 0x115dd, +0x11600, 0x11644, +0x11650, 0x11659, +0x11660, 0x1166c, +0x11680, 0x116b7, +0x116c0, 0x116c9, +0x11700, 0x1171a, +0x1171d, 0x1172b, +0x11730, 0x1173f, +0x11800, 0x1183b, +0x118a0, 0x118f2, +0x118ff, 0x118ff, +0x11a00, 0x11a47, +0x11a50, 0x11a83, +0x11a86, 0x11aa2, +0x11ac0, 0x11af8, +0x11c00, 0x11c08, +0x11c0a, 0x11c36, +0x11c38, 0x11c45, +0x11c50, 0x11c6c, +0x11c70, 0x11c8f, +0x11c92, 0x11ca7, +0x11ca9, 0x11cb6, +0x11d00, 0x11d06, +0x11d08, 0x11d09, +0x11d0b, 0x11d36, +0x11d3a, 0x11d3a, +0x11d3c, 0x11d3d, +0x11d3f, 0x11d47, +0x11d50, 0x11d59, +0x11d60, 0x11d65, +0x11d67, 0x11d68, +0x11d6a, 0x11d8e, +0x11d90, 0x11d91, +0x11d93, 0x11d98, +0x11da0, 0x11da9, +0x11ee0, 0x11ef8, +0x12000, 0x12399, +0x12400, 0x1246e, +0x12470, 0x12474, +0x12480, 0x12543, +0x13000, 0x1342e, +0x14400, 0x14646, +0x16800, 0x16a38, +0x16a40, 0x16a5e, +0x16a60, 0x16a69, +0x16a6e, 0x16a6f, +0x16ad0, 0x16aed, +0x16af0, 0x16af5, +0x16b00, 0x16b45, +0x16b50, 0x16b59, +0x16b5b, 0x16b61, +0x16b63, 0x16b77, +0x16b7d, 0x16b8f, +0x16e40, 0x16e9a, +0x16f00, 0x16f44, +0x16f50, 0x16f7e, +0x16f8f, 0x16f9f, +0x16fe0, 0x16fe1, +0x17000, 0x187f1, +0x18800, 0x18af2, +0x1b000, 0x1b11e, +0x1b170, 0x1b2fb, +0x1bc00, 0x1bc6a, +0x1bc70, 0x1bc7c, +0x1bc80, 0x1bc88, +0x1bc90, 0x1bc99, +0x1bc9c, 0x1bca3, +0x1d000, 0x1d0f5, +0x1d100, 0x1d126, +0x1d129, 0x1d1e8, +0x1d200, 0x1d245, +0x1d2e0, 0x1d2f3, +0x1d300, 0x1d356, +0x1d360, 0x1d378, +0x1d400, 0x1d454, +0x1d456, 0x1d49c, +0x1d49e, 0x1d49f, +0x1d4a2, 0x1d4a2, +0x1d4a5, 0x1d4a6, +0x1d4a9, 0x1d4ac, +0x1d4ae, 0x1d4b9, +0x1d4bb, 0x1d4bb, +0x1d4bd, 0x1d4c3, +0x1d4c5, 0x1d505, +0x1d507, 0x1d50a, +0x1d50d, 0x1d514, +0x1d516, 0x1d51c, +0x1d51e, 0x1d539, +0x1d53b, 0x1d53e, +0x1d540, 0x1d544, +0x1d546, 0x1d546, +0x1d54a, 0x1d550, +0x1d552, 0x1d6a5, +0x1d6a8, 0x1d7cb, +0x1d7ce, 0x1da8b, +0x1da9b, 0x1da9f, +0x1daa1, 0x1daaf, +0x1e000, 0x1e006, +0x1e008, 0x1e018, +0x1e01b, 0x1e021, +0x1e023, 0x1e024, +0x1e026, 0x1e02a, +0x1e800, 0x1e8c4, +0x1e8c7, 0x1e8d6, +0x1e900, 0x1e94a, +0x1e950, 0x1e959, +0x1e95e, 0x1e95f, +0x1ec71, 0x1ecb4, +0x1ee00, 0x1ee03, +0x1ee05, 0x1ee1f, +0x1ee21, 0x1ee22, +0x1ee24, 0x1ee24, +0x1ee27, 0x1ee27, +0x1ee29, 0x1ee32, +0x1ee34, 0x1ee37, +0x1ee39, 0x1ee39, +0x1ee3b, 0x1ee3b, +0x1ee42, 0x1ee42, +0x1ee47, 0x1ee47, +0x1ee49, 0x1ee49, +0x1ee4b, 0x1ee4b, +0x1ee4d, 0x1ee4f, +0x1ee51, 0x1ee52, +0x1ee54, 0x1ee54, +0x1ee57, 0x1ee57, +0x1ee59, 0x1ee59, +0x1ee5b, 0x1ee5b, +0x1ee5d, 0x1ee5d, +0x1ee5f, 0x1ee5f, +0x1ee61, 0x1ee62, +0x1ee64, 0x1ee64, +0x1ee67, 0x1ee6a, +0x1ee6c, 0x1ee72, +0x1ee74, 0x1ee77, +0x1ee79, 0x1ee7c, +0x1ee7e, 0x1ee7e, +0x1ee80, 0x1ee89, +0x1ee8b, 0x1ee9b, +0x1eea1, 0x1eea3, +0x1eea5, 0x1eea9, +0x1eeab, 0x1eebb, +0x1eef0, 0x1eef1, +0x1f000, 0x1f02b, +0x1f030, 0x1f093, +0x1f0a0, 0x1f0ae, +0x1f0b1, 0x1f0bf, +0x1f0c1, 0x1f0cf, +0x1f0d1, 0x1f0f5, +0x1f100, 0x1f10c, +0x1f110, 0x1f16b, +0x1f170, 0x1f1ac, +0x1f1e6, 0x1f202, +0x1f210, 0x1f23b, +0x1f240, 0x1f248, +0x1f250, 0x1f251, +0x1f260, 0x1f265, +0x1f300, 0x1f6d4, +0x1f6e0, 0x1f6ec, +0x1f6f0, 0x1f6f9, +0x1f700, 0x1f773, +0x1f780, 0x1f7d8, +0x1f800, 0x1f80b, +0x1f810, 0x1f847, +0x1f850, 0x1f859, +0x1f860, 0x1f887, +0x1f890, 0x1f8ad, +0x1f900, 0x1f90b, +0x1f910, 0x1f93e, +0x1f940, 0x1f970, +0x1f973, 0x1f976, +0x1f97a, 0x1f97a, +0x1f97c, 0x1f9a2, +0x1f9b0, 0x1f9b9, +0x1f9c0, 0x1f9c2, +0x1f9d0, 0x1f9ff, +0x1fa60, 0x1fa6d, +0x20000, 0x2a6d6, +0x2a700, 0x2b734, +0x2b740, 0x2b81d, +0x2b820, 0x2cea1, +0x2ceb0, 0x2ebe0, +0x2f800, 0x2fa1d, +0xe0001, 0xe0001, +0xe0020, 0xe007f, +0xe0100, 0xe01ef, +0xf0000, 0xffffd, +0x100000, 0x10fffd, +}; /* END of CR_Graph */ + +/* PROPERTY: 'Lower': POSIX [[:Lower:]] */ +static const OnigCodePoint +CR_Lower[] = { 645, +0x0061, 0x007a, +0x00aa, 0x00aa, +0x00b5, 0x00b5, +0x00ba, 0x00ba, +0x00df, 0x00f6, +0x00f8, 0x00ff, +0x0101, 0x0101, +0x0103, 0x0103, +0x0105, 0x0105, +0x0107, 0x0107, +0x0109, 0x0109, +0x010b, 0x010b, +0x010d, 0x010d, +0x010f, 0x010f, +0x0111, 0x0111, +0x0113, 0x0113, +0x0115, 0x0115, +0x0117, 0x0117, +0x0119, 0x0119, +0x011b, 0x011b, +0x011d, 0x011d, +0x011f, 0x011f, +0x0121, 0x0121, +0x0123, 0x0123, +0x0125, 0x0125, +0x0127, 0x0127, +0x0129, 0x0129, +0x012b, 0x012b, +0x012d, 0x012d, +0x012f, 0x012f, +0x0131, 0x0131, +0x0133, 0x0133, +0x0135, 0x0135, +0x0137, 0x0138, +0x013a, 0x013a, +0x013c, 0x013c, +0x013e, 0x013e, +0x0140, 0x0140, +0x0142, 0x0142, +0x0144, 0x0144, +0x0146, 0x0146, +0x0148, 0x0149, +0x014b, 0x014b, +0x014d, 0x014d, +0x014f, 0x014f, +0x0151, 0x0151, +0x0153, 0x0153, +0x0155, 0x0155, +0x0157, 0x0157, +0x0159, 0x0159, +0x015b, 0x015b, +0x015d, 0x015d, +0x015f, 0x015f, +0x0161, 0x0161, +0x0163, 0x0163, +0x0165, 0x0165, +0x0167, 0x0167, +0x0169, 0x0169, +0x016b, 0x016b, +0x016d, 0x016d, +0x016f, 0x016f, +0x0171, 0x0171, +0x0173, 0x0173, +0x0175, 0x0175, +0x0177, 0x0177, +0x017a, 0x017a, +0x017c, 0x017c, +0x017e, 0x0180, +0x0183, 0x0183, +0x0185, 0x0185, +0x0188, 0x0188, +0x018c, 0x018d, +0x0192, 0x0192, +0x0195, 0x0195, +0x0199, 0x019b, +0x019e, 0x019e, +0x01a1, 0x01a1, +0x01a3, 0x01a3, +0x01a5, 0x01a5, +0x01a8, 0x01a8, +0x01aa, 0x01ab, +0x01ad, 0x01ad, +0x01b0, 0x01b0, +0x01b4, 0x01b4, +0x01b6, 0x01b6, +0x01b9, 0x01ba, +0x01bd, 0x01bf, +0x01c6, 0x01c6, +0x01c9, 0x01c9, +0x01cc, 0x01cc, +0x01ce, 0x01ce, +0x01d0, 0x01d0, +0x01d2, 0x01d2, +0x01d4, 0x01d4, +0x01d6, 0x01d6, +0x01d8, 0x01d8, +0x01da, 0x01da, +0x01dc, 0x01dd, +0x01df, 0x01df, +0x01e1, 0x01e1, +0x01e3, 0x01e3, +0x01e5, 0x01e5, +0x01e7, 0x01e7, +0x01e9, 0x01e9, +0x01eb, 0x01eb, +0x01ed, 0x01ed, +0x01ef, 0x01f0, +0x01f3, 0x01f3, +0x01f5, 0x01f5, +0x01f9, 0x01f9, +0x01fb, 0x01fb, +0x01fd, 0x01fd, +0x01ff, 0x01ff, +0x0201, 0x0201, +0x0203, 0x0203, +0x0205, 0x0205, +0x0207, 0x0207, +0x0209, 0x0209, +0x020b, 0x020b, +0x020d, 0x020d, +0x020f, 0x020f, +0x0211, 0x0211, +0x0213, 0x0213, +0x0215, 0x0215, +0x0217, 0x0217, +0x0219, 0x0219, +0x021b, 0x021b, +0x021d, 0x021d, +0x021f, 0x021f, +0x0221, 0x0221, +0x0223, 0x0223, +0x0225, 0x0225, +0x0227, 0x0227, +0x0229, 0x0229, +0x022b, 0x022b, +0x022d, 0x022d, +0x022f, 0x022f, +0x0231, 0x0231, +0x0233, 0x0239, +0x023c, 0x023c, +0x023f, 0x0240, +0x0242, 0x0242, +0x0247, 0x0247, +0x0249, 0x0249, +0x024b, 0x024b, +0x024d, 0x024d, +0x024f, 0x0293, +0x0295, 0x02b8, +0x02c0, 0x02c1, +0x02e0, 0x02e4, +0x0345, 0x0345, +0x0371, 0x0371, +0x0373, 0x0373, +0x0377, 0x0377, +0x037a, 0x037d, +0x0390, 0x0390, +0x03ac, 0x03ce, +0x03d0, 0x03d1, +0x03d5, 0x03d7, +0x03d9, 0x03d9, +0x03db, 0x03db, +0x03dd, 0x03dd, +0x03df, 0x03df, +0x03e1, 0x03e1, +0x03e3, 0x03e3, +0x03e5, 0x03e5, +0x03e7, 0x03e7, +0x03e9, 0x03e9, +0x03eb, 0x03eb, +0x03ed, 0x03ed, +0x03ef, 0x03f3, +0x03f5, 0x03f5, +0x03f8, 0x03f8, +0x03fb, 0x03fc, +0x0430, 0x045f, +0x0461, 0x0461, +0x0463, 0x0463, +0x0465, 0x0465, +0x0467, 0x0467, +0x0469, 0x0469, +0x046b, 0x046b, +0x046d, 0x046d, +0x046f, 0x046f, +0x0471, 0x0471, +0x0473, 0x0473, +0x0475, 0x0475, +0x0477, 0x0477, +0x0479, 0x0479, +0x047b, 0x047b, +0x047d, 0x047d, +0x047f, 0x047f, +0x0481, 0x0481, +0x048b, 0x048b, +0x048d, 0x048d, +0x048f, 0x048f, +0x0491, 0x0491, +0x0493, 0x0493, +0x0495, 0x0495, +0x0497, 0x0497, +0x0499, 0x0499, +0x049b, 0x049b, +0x049d, 0x049d, +0x049f, 0x049f, +0x04a1, 0x04a1, +0x04a3, 0x04a3, +0x04a5, 0x04a5, +0x04a7, 0x04a7, +0x04a9, 0x04a9, +0x04ab, 0x04ab, +0x04ad, 0x04ad, +0x04af, 0x04af, +0x04b1, 0x04b1, +0x04b3, 0x04b3, +0x04b5, 0x04b5, +0x04b7, 0x04b7, +0x04b9, 0x04b9, +0x04bb, 0x04bb, +0x04bd, 0x04bd, +0x04bf, 0x04bf, +0x04c2, 0x04c2, +0x04c4, 0x04c4, +0x04c6, 0x04c6, +0x04c8, 0x04c8, +0x04ca, 0x04ca, +0x04cc, 0x04cc, +0x04ce, 0x04cf, +0x04d1, 0x04d1, +0x04d3, 0x04d3, +0x04d5, 0x04d5, +0x04d7, 0x04d7, +0x04d9, 0x04d9, +0x04db, 0x04db, +0x04dd, 0x04dd, +0x04df, 0x04df, +0x04e1, 0x04e1, +0x04e3, 0x04e3, +0x04e5, 0x04e5, +0x04e7, 0x04e7, +0x04e9, 0x04e9, +0x04eb, 0x04eb, +0x04ed, 0x04ed, +0x04ef, 0x04ef, +0x04f1, 0x04f1, +0x04f3, 0x04f3, +0x04f5, 0x04f5, +0x04f7, 0x04f7, +0x04f9, 0x04f9, +0x04fb, 0x04fb, +0x04fd, 0x04fd, +0x04ff, 0x04ff, +0x0501, 0x0501, +0x0503, 0x0503, +0x0505, 0x0505, +0x0507, 0x0507, +0x0509, 0x0509, +0x050b, 0x050b, +0x050d, 0x050d, +0x050f, 0x050f, +0x0511, 0x0511, +0x0513, 0x0513, +0x0515, 0x0515, +0x0517, 0x0517, +0x0519, 0x0519, +0x051b, 0x051b, +0x051d, 0x051d, +0x051f, 0x051f, +0x0521, 0x0521, +0x0523, 0x0523, +0x0525, 0x0525, +0x0527, 0x0527, +0x0529, 0x0529, +0x052b, 0x052b, +0x052d, 0x052d, +0x052f, 0x052f, +0x0560, 0x0588, +0x10d0, 0x10fa, +0x10fd, 0x10ff, +0x13f8, 0x13fd, +0x1c80, 0x1c88, +0x1d00, 0x1dbf, +0x1e01, 0x1e01, +0x1e03, 0x1e03, +0x1e05, 0x1e05, +0x1e07, 0x1e07, +0x1e09, 0x1e09, +0x1e0b, 0x1e0b, +0x1e0d, 0x1e0d, +0x1e0f, 0x1e0f, +0x1e11, 0x1e11, +0x1e13, 0x1e13, +0x1e15, 0x1e15, +0x1e17, 0x1e17, +0x1e19, 0x1e19, +0x1e1b, 0x1e1b, +0x1e1d, 0x1e1d, +0x1e1f, 0x1e1f, +0x1e21, 0x1e21, +0x1e23, 0x1e23, +0x1e25, 0x1e25, +0x1e27, 0x1e27, +0x1e29, 0x1e29, +0x1e2b, 0x1e2b, +0x1e2d, 0x1e2d, +0x1e2f, 0x1e2f, +0x1e31, 0x1e31, +0x1e33, 0x1e33, +0x1e35, 0x1e35, +0x1e37, 0x1e37, +0x1e39, 0x1e39, +0x1e3b, 0x1e3b, +0x1e3d, 0x1e3d, +0x1e3f, 0x1e3f, +0x1e41, 0x1e41, +0x1e43, 0x1e43, +0x1e45, 0x1e45, +0x1e47, 0x1e47, +0x1e49, 0x1e49, +0x1e4b, 0x1e4b, +0x1e4d, 0x1e4d, +0x1e4f, 0x1e4f, +0x1e51, 0x1e51, +0x1e53, 0x1e53, +0x1e55, 0x1e55, +0x1e57, 0x1e57, +0x1e59, 0x1e59, +0x1e5b, 0x1e5b, +0x1e5d, 0x1e5d, +0x1e5f, 0x1e5f, +0x1e61, 0x1e61, +0x1e63, 0x1e63, +0x1e65, 0x1e65, +0x1e67, 0x1e67, +0x1e69, 0x1e69, +0x1e6b, 0x1e6b, +0x1e6d, 0x1e6d, +0x1e6f, 0x1e6f, +0x1e71, 0x1e71, +0x1e73, 0x1e73, +0x1e75, 0x1e75, +0x1e77, 0x1e77, +0x1e79, 0x1e79, +0x1e7b, 0x1e7b, +0x1e7d, 0x1e7d, +0x1e7f, 0x1e7f, +0x1e81, 0x1e81, +0x1e83, 0x1e83, +0x1e85, 0x1e85, +0x1e87, 0x1e87, +0x1e89, 0x1e89, +0x1e8b, 0x1e8b, +0x1e8d, 0x1e8d, +0x1e8f, 0x1e8f, +0x1e91, 0x1e91, +0x1e93, 0x1e93, +0x1e95, 0x1e9d, +0x1e9f, 0x1e9f, +0x1ea1, 0x1ea1, +0x1ea3, 0x1ea3, +0x1ea5, 0x1ea5, +0x1ea7, 0x1ea7, +0x1ea9, 0x1ea9, +0x1eab, 0x1eab, +0x1ead, 0x1ead, +0x1eaf, 0x1eaf, +0x1eb1, 0x1eb1, +0x1eb3, 0x1eb3, +0x1eb5, 0x1eb5, +0x1eb7, 0x1eb7, +0x1eb9, 0x1eb9, +0x1ebb, 0x1ebb, +0x1ebd, 0x1ebd, +0x1ebf, 0x1ebf, +0x1ec1, 0x1ec1, +0x1ec3, 0x1ec3, +0x1ec5, 0x1ec5, +0x1ec7, 0x1ec7, +0x1ec9, 0x1ec9, +0x1ecb, 0x1ecb, +0x1ecd, 0x1ecd, +0x1ecf, 0x1ecf, +0x1ed1, 0x1ed1, +0x1ed3, 0x1ed3, +0x1ed5, 0x1ed5, +0x1ed7, 0x1ed7, +0x1ed9, 0x1ed9, +0x1edb, 0x1edb, +0x1edd, 0x1edd, +0x1edf, 0x1edf, +0x1ee1, 0x1ee1, +0x1ee3, 0x1ee3, +0x1ee5, 0x1ee5, +0x1ee7, 0x1ee7, +0x1ee9, 0x1ee9, +0x1eeb, 0x1eeb, +0x1eed, 0x1eed, +0x1eef, 0x1eef, +0x1ef1, 0x1ef1, +0x1ef3, 0x1ef3, +0x1ef5, 0x1ef5, +0x1ef7, 0x1ef7, +0x1ef9, 0x1ef9, +0x1efb, 0x1efb, +0x1efd, 0x1efd, +0x1eff, 0x1f07, +0x1f10, 0x1f15, +0x1f20, 0x1f27, +0x1f30, 0x1f37, +0x1f40, 0x1f45, +0x1f50, 0x1f57, +0x1f60, 0x1f67, +0x1f70, 0x1f7d, +0x1f80, 0x1f87, +0x1f90, 0x1f97, +0x1fa0, 0x1fa7, +0x1fb0, 0x1fb4, +0x1fb6, 0x1fb7, +0x1fbe, 0x1fbe, +0x1fc2, 0x1fc4, +0x1fc6, 0x1fc7, +0x1fd0, 0x1fd3, +0x1fd6, 0x1fd7, +0x1fe0, 0x1fe7, +0x1ff2, 0x1ff4, +0x1ff6, 0x1ff7, +0x2071, 0x2071, +0x207f, 0x207f, +0x2090, 0x209c, +0x210a, 0x210a, +0x210e, 0x210f, +0x2113, 0x2113, +0x212f, 0x212f, +0x2134, 0x2134, +0x2139, 0x2139, +0x213c, 0x213d, +0x2146, 0x2149, +0x214e, 0x214e, +0x2170, 0x217f, +0x2184, 0x2184, +0x24d0, 0x24e9, +0x2c30, 0x2c5e, +0x2c61, 0x2c61, +0x2c65, 0x2c66, +0x2c68, 0x2c68, +0x2c6a, 0x2c6a, +0x2c6c, 0x2c6c, +0x2c71, 0x2c71, +0x2c73, 0x2c74, +0x2c76, 0x2c7d, +0x2c81, 0x2c81, +0x2c83, 0x2c83, +0x2c85, 0x2c85, +0x2c87, 0x2c87, +0x2c89, 0x2c89, +0x2c8b, 0x2c8b, +0x2c8d, 0x2c8d, +0x2c8f, 0x2c8f, +0x2c91, 0x2c91, +0x2c93, 0x2c93, +0x2c95, 0x2c95, +0x2c97, 0x2c97, +0x2c99, 0x2c99, +0x2c9b, 0x2c9b, +0x2c9d, 0x2c9d, +0x2c9f, 0x2c9f, +0x2ca1, 0x2ca1, +0x2ca3, 0x2ca3, +0x2ca5, 0x2ca5, +0x2ca7, 0x2ca7, +0x2ca9, 0x2ca9, +0x2cab, 0x2cab, +0x2cad, 0x2cad, +0x2caf, 0x2caf, +0x2cb1, 0x2cb1, +0x2cb3, 0x2cb3, +0x2cb5, 0x2cb5, +0x2cb7, 0x2cb7, +0x2cb9, 0x2cb9, +0x2cbb, 0x2cbb, +0x2cbd, 0x2cbd, +0x2cbf, 0x2cbf, +0x2cc1, 0x2cc1, +0x2cc3, 0x2cc3, +0x2cc5, 0x2cc5, +0x2cc7, 0x2cc7, +0x2cc9, 0x2cc9, +0x2ccb, 0x2ccb, +0x2ccd, 0x2ccd, +0x2ccf, 0x2ccf, +0x2cd1, 0x2cd1, +0x2cd3, 0x2cd3, +0x2cd5, 0x2cd5, +0x2cd7, 0x2cd7, +0x2cd9, 0x2cd9, +0x2cdb, 0x2cdb, +0x2cdd, 0x2cdd, +0x2cdf, 0x2cdf, +0x2ce1, 0x2ce1, +0x2ce3, 0x2ce4, +0x2cec, 0x2cec, +0x2cee, 0x2cee, +0x2cf3, 0x2cf3, +0x2d00, 0x2d25, +0x2d27, 0x2d27, +0x2d2d, 0x2d2d, +0xa641, 0xa641, +0xa643, 0xa643, +0xa645, 0xa645, +0xa647, 0xa647, +0xa649, 0xa649, +0xa64b, 0xa64b, +0xa64d, 0xa64d, +0xa64f, 0xa64f, +0xa651, 0xa651, +0xa653, 0xa653, +0xa655, 0xa655, +0xa657, 0xa657, +0xa659, 0xa659, +0xa65b, 0xa65b, +0xa65d, 0xa65d, +0xa65f, 0xa65f, +0xa661, 0xa661, +0xa663, 0xa663, +0xa665, 0xa665, +0xa667, 0xa667, +0xa669, 0xa669, +0xa66b, 0xa66b, +0xa66d, 0xa66d, +0xa681, 0xa681, +0xa683, 0xa683, +0xa685, 0xa685, +0xa687, 0xa687, +0xa689, 0xa689, +0xa68b, 0xa68b, +0xa68d, 0xa68d, +0xa68f, 0xa68f, +0xa691, 0xa691, +0xa693, 0xa693, +0xa695, 0xa695, +0xa697, 0xa697, +0xa699, 0xa699, +0xa69b, 0xa69d, +0xa723, 0xa723, +0xa725, 0xa725, +0xa727, 0xa727, +0xa729, 0xa729, +0xa72b, 0xa72b, +0xa72d, 0xa72d, +0xa72f, 0xa731, +0xa733, 0xa733, +0xa735, 0xa735, +0xa737, 0xa737, +0xa739, 0xa739, +0xa73b, 0xa73b, +0xa73d, 0xa73d, +0xa73f, 0xa73f, +0xa741, 0xa741, +0xa743, 0xa743, +0xa745, 0xa745, +0xa747, 0xa747, +0xa749, 0xa749, +0xa74b, 0xa74b, +0xa74d, 0xa74d, +0xa74f, 0xa74f, +0xa751, 0xa751, +0xa753, 0xa753, +0xa755, 0xa755, +0xa757, 0xa757, +0xa759, 0xa759, +0xa75b, 0xa75b, +0xa75d, 0xa75d, +0xa75f, 0xa75f, +0xa761, 0xa761, +0xa763, 0xa763, +0xa765, 0xa765, +0xa767, 0xa767, +0xa769, 0xa769, +0xa76b, 0xa76b, +0xa76d, 0xa76d, +0xa76f, 0xa778, +0xa77a, 0xa77a, +0xa77c, 0xa77c, +0xa77f, 0xa77f, +0xa781, 0xa781, +0xa783, 0xa783, +0xa785, 0xa785, +0xa787, 0xa787, +0xa78c, 0xa78c, +0xa78e, 0xa78e, +0xa791, 0xa791, +0xa793, 0xa795, +0xa797, 0xa797, +0xa799, 0xa799, +0xa79b, 0xa79b, +0xa79d, 0xa79d, +0xa79f, 0xa79f, +0xa7a1, 0xa7a1, +0xa7a3, 0xa7a3, +0xa7a5, 0xa7a5, +0xa7a7, 0xa7a7, +0xa7a9, 0xa7a9, +0xa7af, 0xa7af, +0xa7b5, 0xa7b5, +0xa7b7, 0xa7b7, +0xa7b9, 0xa7b9, +0xa7f8, 0xa7fa, +0xab30, 0xab5a, +0xab5c, 0xab65, +0xab70, 0xabbf, +0xfb00, 0xfb06, +0xfb13, 0xfb17, +0xff41, 0xff5a, +0x10428, 0x1044f, +0x104d8, 0x104fb, +0x10cc0, 0x10cf2, +0x118c0, 0x118df, +0x16e60, 0x16e7f, +0x1d41a, 0x1d433, +0x1d44e, 0x1d454, +0x1d456, 0x1d467, +0x1d482, 0x1d49b, +0x1d4b6, 0x1d4b9, +0x1d4bb, 0x1d4bb, +0x1d4bd, 0x1d4c3, +0x1d4c5, 0x1d4cf, +0x1d4ea, 0x1d503, +0x1d51e, 0x1d537, +0x1d552, 0x1d56b, +0x1d586, 0x1d59f, +0x1d5ba, 0x1d5d3, +0x1d5ee, 0x1d607, +0x1d622, 0x1d63b, +0x1d656, 0x1d66f, +0x1d68a, 0x1d6a5, +0x1d6c2, 0x1d6da, +0x1d6dc, 0x1d6e1, +0x1d6fc, 0x1d714, +0x1d716, 0x1d71b, +0x1d736, 0x1d74e, +0x1d750, 0x1d755, +0x1d770, 0x1d788, +0x1d78a, 0x1d78f, +0x1d7aa, 0x1d7c2, +0x1d7c4, 0x1d7c9, +0x1d7cb, 0x1d7cb, +0x1e922, 0x1e943, +}; /* END of CR_Lower */ + +/* PROPERTY: 'Print': POSIX [[:Print:]] */ +static const OnigCodePoint +CR_Print[] = { 660, +0x0020, 0x007e, +0x00a0, 0x0377, +0x037a, 0x037f, +0x0384, 0x038a, +0x038c, 0x038c, +0x038e, 0x03a1, +0x03a3, 0x052f, +0x0531, 0x0556, +0x0559, 0x058a, +0x058d, 0x058f, +0x0591, 0x05c7, +0x05d0, 0x05ea, +0x05ef, 0x05f4, +0x0600, 0x061c, +0x061e, 0x070d, +0x070f, 0x074a, +0x074d, 0x07b1, +0x07c0, 0x07fa, +0x07fd, 0x082d, +0x0830, 0x083e, +0x0840, 0x085b, +0x085e, 0x085e, +0x0860, 0x086a, +0x08a0, 0x08b4, +0x08b6, 0x08bd, +0x08d3, 0x0983, +0x0985, 0x098c, +0x098f, 0x0990, +0x0993, 0x09a8, +0x09aa, 0x09b0, +0x09b2, 0x09b2, +0x09b6, 0x09b9, +0x09bc, 0x09c4, +0x09c7, 0x09c8, +0x09cb, 0x09ce, +0x09d7, 0x09d7, +0x09dc, 0x09dd, +0x09df, 0x09e3, +0x09e6, 0x09fe, +0x0a01, 0x0a03, +0x0a05, 0x0a0a, +0x0a0f, 0x0a10, +0x0a13, 0x0a28, +0x0a2a, 0x0a30, +0x0a32, 0x0a33, +0x0a35, 0x0a36, +0x0a38, 0x0a39, +0x0a3c, 0x0a3c, +0x0a3e, 0x0a42, +0x0a47, 0x0a48, +0x0a4b, 0x0a4d, +0x0a51, 0x0a51, +0x0a59, 0x0a5c, +0x0a5e, 0x0a5e, +0x0a66, 0x0a76, +0x0a81, 0x0a83, +0x0a85, 0x0a8d, +0x0a8f, 0x0a91, +0x0a93, 0x0aa8, +0x0aaa, 0x0ab0, +0x0ab2, 0x0ab3, +0x0ab5, 0x0ab9, +0x0abc, 0x0ac5, +0x0ac7, 0x0ac9, +0x0acb, 0x0acd, +0x0ad0, 0x0ad0, +0x0ae0, 0x0ae3, +0x0ae6, 0x0af1, +0x0af9, 0x0aff, +0x0b01, 0x0b03, +0x0b05, 0x0b0c, +0x0b0f, 0x0b10, +0x0b13, 0x0b28, +0x0b2a, 0x0b30, +0x0b32, 0x0b33, +0x0b35, 0x0b39, +0x0b3c, 0x0b44, +0x0b47, 0x0b48, +0x0b4b, 0x0b4d, +0x0b56, 0x0b57, +0x0b5c, 0x0b5d, +0x0b5f, 0x0b63, +0x0b66, 0x0b77, +0x0b82, 0x0b83, +0x0b85, 0x0b8a, +0x0b8e, 0x0b90, +0x0b92, 0x0b95, +0x0b99, 0x0b9a, +0x0b9c, 0x0b9c, +0x0b9e, 0x0b9f, +0x0ba3, 0x0ba4, +0x0ba8, 0x0baa, +0x0bae, 0x0bb9, +0x0bbe, 0x0bc2, +0x0bc6, 0x0bc8, +0x0bca, 0x0bcd, +0x0bd0, 0x0bd0, +0x0bd7, 0x0bd7, +0x0be6, 0x0bfa, +0x0c00, 0x0c0c, +0x0c0e, 0x0c10, +0x0c12, 0x0c28, +0x0c2a, 0x0c39, +0x0c3d, 0x0c44, +0x0c46, 0x0c48, +0x0c4a, 0x0c4d, +0x0c55, 0x0c56, +0x0c58, 0x0c5a, +0x0c60, 0x0c63, +0x0c66, 0x0c6f, +0x0c78, 0x0c8c, +0x0c8e, 0x0c90, +0x0c92, 0x0ca8, +0x0caa, 0x0cb3, +0x0cb5, 0x0cb9, +0x0cbc, 0x0cc4, +0x0cc6, 0x0cc8, +0x0cca, 0x0ccd, +0x0cd5, 0x0cd6, +0x0cde, 0x0cde, +0x0ce0, 0x0ce3, +0x0ce6, 0x0cef, +0x0cf1, 0x0cf2, +0x0d00, 0x0d03, +0x0d05, 0x0d0c, +0x0d0e, 0x0d10, +0x0d12, 0x0d44, +0x0d46, 0x0d48, +0x0d4a, 0x0d4f, +0x0d54, 0x0d63, +0x0d66, 0x0d7f, +0x0d82, 0x0d83, +0x0d85, 0x0d96, +0x0d9a, 0x0db1, +0x0db3, 0x0dbb, +0x0dbd, 0x0dbd, +0x0dc0, 0x0dc6, +0x0dca, 0x0dca, +0x0dcf, 0x0dd4, +0x0dd6, 0x0dd6, +0x0dd8, 0x0ddf, +0x0de6, 0x0def, +0x0df2, 0x0df4, +0x0e01, 0x0e3a, +0x0e3f, 0x0e5b, +0x0e81, 0x0e82, +0x0e84, 0x0e84, +0x0e87, 0x0e88, +0x0e8a, 0x0e8a, +0x0e8d, 0x0e8d, +0x0e94, 0x0e97, +0x0e99, 0x0e9f, +0x0ea1, 0x0ea3, +0x0ea5, 0x0ea5, +0x0ea7, 0x0ea7, +0x0eaa, 0x0eab, +0x0ead, 0x0eb9, +0x0ebb, 0x0ebd, +0x0ec0, 0x0ec4, +0x0ec6, 0x0ec6, +0x0ec8, 0x0ecd, +0x0ed0, 0x0ed9, +0x0edc, 0x0edf, +0x0f00, 0x0f47, +0x0f49, 0x0f6c, +0x0f71, 0x0f97, +0x0f99, 0x0fbc, +0x0fbe, 0x0fcc, +0x0fce, 0x0fda, +0x1000, 0x10c5, +0x10c7, 0x10c7, +0x10cd, 0x10cd, +0x10d0, 0x1248, +0x124a, 0x124d, +0x1250, 0x1256, +0x1258, 0x1258, +0x125a, 0x125d, +0x1260, 0x1288, +0x128a, 0x128d, +0x1290, 0x12b0, +0x12b2, 0x12b5, +0x12b8, 0x12be, +0x12c0, 0x12c0, +0x12c2, 0x12c5, +0x12c8, 0x12d6, +0x12d8, 0x1310, +0x1312, 0x1315, +0x1318, 0x135a, +0x135d, 0x137c, +0x1380, 0x1399, +0x13a0, 0x13f5, +0x13f8, 0x13fd, +0x1400, 0x169c, +0x16a0, 0x16f8, +0x1700, 0x170c, +0x170e, 0x1714, +0x1720, 0x1736, +0x1740, 0x1753, +0x1760, 0x176c, +0x176e, 0x1770, +0x1772, 0x1773, +0x1780, 0x17dd, +0x17e0, 0x17e9, +0x17f0, 0x17f9, +0x1800, 0x180e, +0x1810, 0x1819, +0x1820, 0x1878, +0x1880, 0x18aa, +0x18b0, 0x18f5, +0x1900, 0x191e, +0x1920, 0x192b, +0x1930, 0x193b, +0x1940, 0x1940, +0x1944, 0x196d, +0x1970, 0x1974, +0x1980, 0x19ab, +0x19b0, 0x19c9, +0x19d0, 0x19da, +0x19de, 0x1a1b, +0x1a1e, 0x1a5e, +0x1a60, 0x1a7c, +0x1a7f, 0x1a89, +0x1a90, 0x1a99, +0x1aa0, 0x1aad, +0x1ab0, 0x1abe, +0x1b00, 0x1b4b, +0x1b50, 0x1b7c, +0x1b80, 0x1bf3, +0x1bfc, 0x1c37, +0x1c3b, 0x1c49, +0x1c4d, 0x1c88, +0x1c90, 0x1cba, +0x1cbd, 0x1cc7, +0x1cd0, 0x1cf9, +0x1d00, 0x1df9, +0x1dfb, 0x1f15, +0x1f18, 0x1f1d, +0x1f20, 0x1f45, +0x1f48, 0x1f4d, +0x1f50, 0x1f57, +0x1f59, 0x1f59, +0x1f5b, 0x1f5b, +0x1f5d, 0x1f5d, +0x1f5f, 0x1f7d, +0x1f80, 0x1fb4, +0x1fb6, 0x1fc4, +0x1fc6, 0x1fd3, +0x1fd6, 0x1fdb, +0x1fdd, 0x1fef, +0x1ff2, 0x1ff4, +0x1ff6, 0x1ffe, +0x2000, 0x2027, +0x202a, 0x2064, +0x2066, 0x2071, +0x2074, 0x208e, +0x2090, 0x209c, +0x20a0, 0x20bf, +0x20d0, 0x20f0, +0x2100, 0x218b, +0x2190, 0x2426, +0x2440, 0x244a, +0x2460, 0x2b73, +0x2b76, 0x2b95, +0x2b98, 0x2bc8, +0x2bca, 0x2bfe, +0x2c00, 0x2c2e, +0x2c30, 0x2c5e, +0x2c60, 0x2cf3, +0x2cf9, 0x2d25, +0x2d27, 0x2d27, +0x2d2d, 0x2d2d, +0x2d30, 0x2d67, +0x2d6f, 0x2d70, +0x2d7f, 0x2d96, +0x2da0, 0x2da6, +0x2da8, 0x2dae, +0x2db0, 0x2db6, +0x2db8, 0x2dbe, +0x2dc0, 0x2dc6, +0x2dc8, 0x2dce, +0x2dd0, 0x2dd6, +0x2dd8, 0x2dde, +0x2de0, 0x2e4e, +0x2e80, 0x2e99, +0x2e9b, 0x2ef3, +0x2f00, 0x2fd5, +0x2ff0, 0x2ffb, +0x3000, 0x303f, +0x3041, 0x3096, +0x3099, 0x30ff, +0x3105, 0x312f, +0x3131, 0x318e, +0x3190, 0x31ba, +0x31c0, 0x31e3, +0x31f0, 0x321e, +0x3220, 0x32fe, +0x3300, 0x4db5, +0x4dc0, 0x9fef, +0xa000, 0xa48c, +0xa490, 0xa4c6, +0xa4d0, 0xa62b, +0xa640, 0xa6f7, +0xa700, 0xa7b9, +0xa7f7, 0xa82b, +0xa830, 0xa839, +0xa840, 0xa877, +0xa880, 0xa8c5, +0xa8ce, 0xa8d9, +0xa8e0, 0xa953, +0xa95f, 0xa97c, +0xa980, 0xa9cd, +0xa9cf, 0xa9d9, +0xa9de, 0xa9fe, +0xaa00, 0xaa36, +0xaa40, 0xaa4d, +0xaa50, 0xaa59, +0xaa5c, 0xaac2, +0xaadb, 0xaaf6, +0xab01, 0xab06, +0xab09, 0xab0e, +0xab11, 0xab16, +0xab20, 0xab26, +0xab28, 0xab2e, +0xab30, 0xab65, +0xab70, 0xabed, +0xabf0, 0xabf9, +0xac00, 0xd7a3, +0xd7b0, 0xd7c6, +0xd7cb, 0xd7fb, +0xe000, 0xfa6d, +0xfa70, 0xfad9, +0xfb00, 0xfb06, +0xfb13, 0xfb17, +0xfb1d, 0xfb36, +0xfb38, 0xfb3c, +0xfb3e, 0xfb3e, +0xfb40, 0xfb41, +0xfb43, 0xfb44, +0xfb46, 0xfbc1, +0xfbd3, 0xfd3f, +0xfd50, 0xfd8f, +0xfd92, 0xfdc7, +0xfdf0, 0xfdfd, +0xfe00, 0xfe19, +0xfe20, 0xfe52, +0xfe54, 0xfe66, +0xfe68, 0xfe6b, +0xfe70, 0xfe74, +0xfe76, 0xfefc, +0xfeff, 0xfeff, +0xff01, 0xffbe, +0xffc2, 0xffc7, +0xffca, 0xffcf, +0xffd2, 0xffd7, +0xffda, 0xffdc, +0xffe0, 0xffe6, +0xffe8, 0xffee, +0xfff9, 0xfffd, +0x10000, 0x1000b, +0x1000d, 0x10026, +0x10028, 0x1003a, +0x1003c, 0x1003d, +0x1003f, 0x1004d, +0x10050, 0x1005d, +0x10080, 0x100fa, +0x10100, 0x10102, +0x10107, 0x10133, +0x10137, 0x1018e, +0x10190, 0x1019b, +0x101a0, 0x101a0, +0x101d0, 0x101fd, +0x10280, 0x1029c, +0x102a0, 0x102d0, +0x102e0, 0x102fb, +0x10300, 0x10323, +0x1032d, 0x1034a, +0x10350, 0x1037a, +0x10380, 0x1039d, +0x1039f, 0x103c3, +0x103c8, 0x103d5, +0x10400, 0x1049d, +0x104a0, 0x104a9, +0x104b0, 0x104d3, +0x104d8, 0x104fb, +0x10500, 0x10527, +0x10530, 0x10563, +0x1056f, 0x1056f, +0x10600, 0x10736, +0x10740, 0x10755, +0x10760, 0x10767, +0x10800, 0x10805, +0x10808, 0x10808, +0x1080a, 0x10835, +0x10837, 0x10838, +0x1083c, 0x1083c, +0x1083f, 0x10855, +0x10857, 0x1089e, +0x108a7, 0x108af, +0x108e0, 0x108f2, +0x108f4, 0x108f5, +0x108fb, 0x1091b, +0x1091f, 0x10939, +0x1093f, 0x1093f, +0x10980, 0x109b7, +0x109bc, 0x109cf, +0x109d2, 0x10a03, +0x10a05, 0x10a06, +0x10a0c, 0x10a13, +0x10a15, 0x10a17, +0x10a19, 0x10a35, +0x10a38, 0x10a3a, +0x10a3f, 0x10a48, +0x10a50, 0x10a58, +0x10a60, 0x10a9f, +0x10ac0, 0x10ae6, +0x10aeb, 0x10af6, +0x10b00, 0x10b35, +0x10b39, 0x10b55, +0x10b58, 0x10b72, +0x10b78, 0x10b91, +0x10b99, 0x10b9c, +0x10ba9, 0x10baf, +0x10c00, 0x10c48, +0x10c80, 0x10cb2, +0x10cc0, 0x10cf2, +0x10cfa, 0x10d27, +0x10d30, 0x10d39, +0x10e60, 0x10e7e, +0x10f00, 0x10f27, +0x10f30, 0x10f59, +0x11000, 0x1104d, +0x11052, 0x1106f, +0x1107f, 0x110c1, +0x110cd, 0x110cd, +0x110d0, 0x110e8, +0x110f0, 0x110f9, +0x11100, 0x11134, +0x11136, 0x11146, +0x11150, 0x11176, +0x11180, 0x111cd, +0x111d0, 0x111df, +0x111e1, 0x111f4, +0x11200, 0x11211, +0x11213, 0x1123e, +0x11280, 0x11286, +0x11288, 0x11288, +0x1128a, 0x1128d, +0x1128f, 0x1129d, +0x1129f, 0x112a9, +0x112b0, 0x112ea, +0x112f0, 0x112f9, +0x11300, 0x11303, +0x11305, 0x1130c, +0x1130f, 0x11310, +0x11313, 0x11328, +0x1132a, 0x11330, +0x11332, 0x11333, +0x11335, 0x11339, +0x1133b, 0x11344, +0x11347, 0x11348, +0x1134b, 0x1134d, +0x11350, 0x11350, +0x11357, 0x11357, +0x1135d, 0x11363, +0x11366, 0x1136c, +0x11370, 0x11374, +0x11400, 0x11459, +0x1145b, 0x1145b, +0x1145d, 0x1145e, +0x11480, 0x114c7, +0x114d0, 0x114d9, +0x11580, 0x115b5, +0x115b8, 0x115dd, +0x11600, 0x11644, +0x11650, 0x11659, +0x11660, 0x1166c, +0x11680, 0x116b7, +0x116c0, 0x116c9, +0x11700, 0x1171a, +0x1171d, 0x1172b, +0x11730, 0x1173f, +0x11800, 0x1183b, +0x118a0, 0x118f2, +0x118ff, 0x118ff, +0x11a00, 0x11a47, +0x11a50, 0x11a83, +0x11a86, 0x11aa2, +0x11ac0, 0x11af8, +0x11c00, 0x11c08, +0x11c0a, 0x11c36, +0x11c38, 0x11c45, +0x11c50, 0x11c6c, +0x11c70, 0x11c8f, +0x11c92, 0x11ca7, +0x11ca9, 0x11cb6, +0x11d00, 0x11d06, +0x11d08, 0x11d09, +0x11d0b, 0x11d36, +0x11d3a, 0x11d3a, +0x11d3c, 0x11d3d, +0x11d3f, 0x11d47, +0x11d50, 0x11d59, +0x11d60, 0x11d65, +0x11d67, 0x11d68, +0x11d6a, 0x11d8e, +0x11d90, 0x11d91, +0x11d93, 0x11d98, +0x11da0, 0x11da9, +0x11ee0, 0x11ef8, +0x12000, 0x12399, +0x12400, 0x1246e, +0x12470, 0x12474, +0x12480, 0x12543, +0x13000, 0x1342e, +0x14400, 0x14646, +0x16800, 0x16a38, +0x16a40, 0x16a5e, +0x16a60, 0x16a69, +0x16a6e, 0x16a6f, +0x16ad0, 0x16aed, +0x16af0, 0x16af5, +0x16b00, 0x16b45, +0x16b50, 0x16b59, +0x16b5b, 0x16b61, +0x16b63, 0x16b77, +0x16b7d, 0x16b8f, +0x16e40, 0x16e9a, +0x16f00, 0x16f44, +0x16f50, 0x16f7e, +0x16f8f, 0x16f9f, +0x16fe0, 0x16fe1, +0x17000, 0x187f1, +0x18800, 0x18af2, +0x1b000, 0x1b11e, +0x1b170, 0x1b2fb, +0x1bc00, 0x1bc6a, +0x1bc70, 0x1bc7c, +0x1bc80, 0x1bc88, +0x1bc90, 0x1bc99, +0x1bc9c, 0x1bca3, +0x1d000, 0x1d0f5, +0x1d100, 0x1d126, +0x1d129, 0x1d1e8, +0x1d200, 0x1d245, +0x1d2e0, 0x1d2f3, +0x1d300, 0x1d356, +0x1d360, 0x1d378, +0x1d400, 0x1d454, +0x1d456, 0x1d49c, +0x1d49e, 0x1d49f, +0x1d4a2, 0x1d4a2, +0x1d4a5, 0x1d4a6, +0x1d4a9, 0x1d4ac, +0x1d4ae, 0x1d4b9, +0x1d4bb, 0x1d4bb, +0x1d4bd, 0x1d4c3, +0x1d4c5, 0x1d505, +0x1d507, 0x1d50a, +0x1d50d, 0x1d514, +0x1d516, 0x1d51c, +0x1d51e, 0x1d539, +0x1d53b, 0x1d53e, +0x1d540, 0x1d544, +0x1d546, 0x1d546, +0x1d54a, 0x1d550, +0x1d552, 0x1d6a5, +0x1d6a8, 0x1d7cb, +0x1d7ce, 0x1da8b, +0x1da9b, 0x1da9f, +0x1daa1, 0x1daaf, +0x1e000, 0x1e006, +0x1e008, 0x1e018, +0x1e01b, 0x1e021, +0x1e023, 0x1e024, +0x1e026, 0x1e02a, +0x1e800, 0x1e8c4, +0x1e8c7, 0x1e8d6, +0x1e900, 0x1e94a, +0x1e950, 0x1e959, +0x1e95e, 0x1e95f, +0x1ec71, 0x1ecb4, +0x1ee00, 0x1ee03, +0x1ee05, 0x1ee1f, +0x1ee21, 0x1ee22, +0x1ee24, 0x1ee24, +0x1ee27, 0x1ee27, +0x1ee29, 0x1ee32, +0x1ee34, 0x1ee37, +0x1ee39, 0x1ee39, +0x1ee3b, 0x1ee3b, +0x1ee42, 0x1ee42, +0x1ee47, 0x1ee47, +0x1ee49, 0x1ee49, +0x1ee4b, 0x1ee4b, +0x1ee4d, 0x1ee4f, +0x1ee51, 0x1ee52, +0x1ee54, 0x1ee54, +0x1ee57, 0x1ee57, +0x1ee59, 0x1ee59, +0x1ee5b, 0x1ee5b, +0x1ee5d, 0x1ee5d, +0x1ee5f, 0x1ee5f, +0x1ee61, 0x1ee62, +0x1ee64, 0x1ee64, +0x1ee67, 0x1ee6a, +0x1ee6c, 0x1ee72, +0x1ee74, 0x1ee77, +0x1ee79, 0x1ee7c, +0x1ee7e, 0x1ee7e, +0x1ee80, 0x1ee89, +0x1ee8b, 0x1ee9b, +0x1eea1, 0x1eea3, +0x1eea5, 0x1eea9, +0x1eeab, 0x1eebb, +0x1eef0, 0x1eef1, +0x1f000, 0x1f02b, +0x1f030, 0x1f093, +0x1f0a0, 0x1f0ae, +0x1f0b1, 0x1f0bf, +0x1f0c1, 0x1f0cf, +0x1f0d1, 0x1f0f5, +0x1f100, 0x1f10c, +0x1f110, 0x1f16b, +0x1f170, 0x1f1ac, +0x1f1e6, 0x1f202, +0x1f210, 0x1f23b, +0x1f240, 0x1f248, +0x1f250, 0x1f251, +0x1f260, 0x1f265, +0x1f300, 0x1f6d4, +0x1f6e0, 0x1f6ec, +0x1f6f0, 0x1f6f9, +0x1f700, 0x1f773, +0x1f780, 0x1f7d8, +0x1f800, 0x1f80b, +0x1f810, 0x1f847, +0x1f850, 0x1f859, +0x1f860, 0x1f887, +0x1f890, 0x1f8ad, +0x1f900, 0x1f90b, +0x1f910, 0x1f93e, +0x1f940, 0x1f970, +0x1f973, 0x1f976, +0x1f97a, 0x1f97a, +0x1f97c, 0x1f9a2, +0x1f9b0, 0x1f9b9, +0x1f9c0, 0x1f9c2, +0x1f9d0, 0x1f9ff, +0x1fa60, 0x1fa6d, +0x20000, 0x2a6d6, +0x2a700, 0x2b734, +0x2b740, 0x2b81d, +0x2b820, 0x2cea1, +0x2ceb0, 0x2ebe0, +0x2f800, 0x2fa1d, +0xe0001, 0xe0001, +0xe0020, 0xe007f, +0xe0100, 0xe01ef, +0xf0000, 0xffffd, +0x100000, 0x10fffd, +}; /* END of CR_Print */ + +/* PROPERTY: 'Punct': POSIX [[:Punct:]] */ +static const OnigCodePoint +CR_Punct[] = { 178, +0x0021, 0x0023, +0x0025, 0x002a, +0x002c, 0x002f, +0x003a, 0x003b, +0x003f, 0x0040, +0x005b, 0x005d, +0x005f, 0x005f, +0x007b, 0x007b, +0x007d, 0x007d, +0x00a1, 0x00a1, +0x00a7, 0x00a7, +0x00ab, 0x00ab, +0x00b6, 0x00b7, +0x00bb, 0x00bb, +0x00bf, 0x00bf, +0x037e, 0x037e, +0x0387, 0x0387, +0x055a, 0x055f, +0x0589, 0x058a, +0x05be, 0x05be, +0x05c0, 0x05c0, +0x05c3, 0x05c3, +0x05c6, 0x05c6, +0x05f3, 0x05f4, +0x0609, 0x060a, +0x060c, 0x060d, +0x061b, 0x061b, +0x061e, 0x061f, +0x066a, 0x066d, +0x06d4, 0x06d4, +0x0700, 0x070d, +0x07f7, 0x07f9, +0x0830, 0x083e, +0x085e, 0x085e, +0x0964, 0x0965, +0x0970, 0x0970, +0x09fd, 0x09fd, +0x0a76, 0x0a76, +0x0af0, 0x0af0, +0x0c84, 0x0c84, +0x0df4, 0x0df4, +0x0e4f, 0x0e4f, +0x0e5a, 0x0e5b, +0x0f04, 0x0f12, +0x0f14, 0x0f14, +0x0f3a, 0x0f3d, +0x0f85, 0x0f85, +0x0fd0, 0x0fd4, +0x0fd9, 0x0fda, +0x104a, 0x104f, +0x10fb, 0x10fb, +0x1360, 0x1368, +0x1400, 0x1400, +0x166d, 0x166e, +0x169b, 0x169c, +0x16eb, 0x16ed, +0x1735, 0x1736, +0x17d4, 0x17d6, +0x17d8, 0x17da, +0x1800, 0x180a, +0x1944, 0x1945, +0x1a1e, 0x1a1f, +0x1aa0, 0x1aa6, +0x1aa8, 0x1aad, +0x1b5a, 0x1b60, +0x1bfc, 0x1bff, +0x1c3b, 0x1c3f, +0x1c7e, 0x1c7f, +0x1cc0, 0x1cc7, +0x1cd3, 0x1cd3, +0x2010, 0x2027, +0x2030, 0x2043, +0x2045, 0x2051, +0x2053, 0x205e, +0x207d, 0x207e, +0x208d, 0x208e, +0x2308, 0x230b, +0x2329, 0x232a, +0x2768, 0x2775, +0x27c5, 0x27c6, +0x27e6, 0x27ef, +0x2983, 0x2998, +0x29d8, 0x29db, +0x29fc, 0x29fd, +0x2cf9, 0x2cfc, +0x2cfe, 0x2cff, +0x2d70, 0x2d70, +0x2e00, 0x2e2e, +0x2e30, 0x2e4e, +0x3001, 0x3003, +0x3008, 0x3011, +0x3014, 0x301f, +0x3030, 0x3030, +0x303d, 0x303d, +0x30a0, 0x30a0, +0x30fb, 0x30fb, +0xa4fe, 0xa4ff, +0xa60d, 0xa60f, +0xa673, 0xa673, +0xa67e, 0xa67e, +0xa6f2, 0xa6f7, +0xa874, 0xa877, +0xa8ce, 0xa8cf, +0xa8f8, 0xa8fa, +0xa8fc, 0xa8fc, +0xa92e, 0xa92f, +0xa95f, 0xa95f, +0xa9c1, 0xa9cd, +0xa9de, 0xa9df, +0xaa5c, 0xaa5f, +0xaade, 0xaadf, +0xaaf0, 0xaaf1, +0xabeb, 0xabeb, +0xfd3e, 0xfd3f, +0xfe10, 0xfe19, +0xfe30, 0xfe52, +0xfe54, 0xfe61, +0xfe63, 0xfe63, +0xfe68, 0xfe68, +0xfe6a, 0xfe6b, +0xff01, 0xff03, +0xff05, 0xff0a, +0xff0c, 0xff0f, +0xff1a, 0xff1b, +0xff1f, 0xff20, +0xff3b, 0xff3d, +0xff3f, 0xff3f, +0xff5b, 0xff5b, +0xff5d, 0xff5d, +0xff5f, 0xff65, +0x10100, 0x10102, +0x1039f, 0x1039f, +0x103d0, 0x103d0, +0x1056f, 0x1056f, +0x10857, 0x10857, +0x1091f, 0x1091f, +0x1093f, 0x1093f, +0x10a50, 0x10a58, +0x10a7f, 0x10a7f, +0x10af0, 0x10af6, +0x10b39, 0x10b3f, +0x10b99, 0x10b9c, +0x10f55, 0x10f59, +0x11047, 0x1104d, +0x110bb, 0x110bc, +0x110be, 0x110c1, +0x11140, 0x11143, +0x11174, 0x11175, +0x111c5, 0x111c8, +0x111cd, 0x111cd, +0x111db, 0x111db, +0x111dd, 0x111df, +0x11238, 0x1123d, +0x112a9, 0x112a9, +0x1144b, 0x1144f, +0x1145b, 0x1145b, +0x1145d, 0x1145d, +0x114c6, 0x114c6, +0x115c1, 0x115d7, +0x11641, 0x11643, +0x11660, 0x1166c, +0x1173c, 0x1173e, +0x1183b, 0x1183b, +0x11a3f, 0x11a46, +0x11a9a, 0x11a9c, +0x11a9e, 0x11aa2, +0x11c41, 0x11c45, +0x11c70, 0x11c71, +0x11ef7, 0x11ef8, +0x12470, 0x12474, +0x16a6e, 0x16a6f, +0x16af5, 0x16af5, +0x16b37, 0x16b3b, +0x16b44, 0x16b44, +0x16e97, 0x16e9a, +0x1bc9f, 0x1bc9f, +0x1da87, 0x1da8b, +0x1e95e, 0x1e95f, +}; /* END of CR_Punct */ + +/* PROPERTY: 'Space': POSIX [[:Space:]] */ +static const OnigCodePoint +CR_Space[] = { 10, +0x0009, 0x000d, +0x0020, 0x0020, +0x0085, 0x0085, +0x00a0, 0x00a0, +0x1680, 0x1680, +0x2000, 0x200a, +0x2028, 0x2029, +0x202f, 0x202f, +0x205f, 0x205f, +0x3000, 0x3000, +}; /* END of CR_Space */ + +/* PROPERTY: 'Upper': POSIX [[:Upper:]] */ +static const OnigCodePoint +CR_Upper[] = { 636, +0x0041, 0x005a, +0x00c0, 0x00d6, +0x00d8, 0x00de, +0x0100, 0x0100, +0x0102, 0x0102, +0x0104, 0x0104, +0x0106, 0x0106, +0x0108, 0x0108, +0x010a, 0x010a, +0x010c, 0x010c, +0x010e, 0x010e, +0x0110, 0x0110, +0x0112, 0x0112, +0x0114, 0x0114, +0x0116, 0x0116, +0x0118, 0x0118, +0x011a, 0x011a, +0x011c, 0x011c, +0x011e, 0x011e, +0x0120, 0x0120, +0x0122, 0x0122, +0x0124, 0x0124, +0x0126, 0x0126, +0x0128, 0x0128, +0x012a, 0x012a, +0x012c, 0x012c, +0x012e, 0x012e, +0x0130, 0x0130, +0x0132, 0x0132, +0x0134, 0x0134, +0x0136, 0x0136, +0x0139, 0x0139, +0x013b, 0x013b, +0x013d, 0x013d, +0x013f, 0x013f, +0x0141, 0x0141, +0x0143, 0x0143, +0x0145, 0x0145, +0x0147, 0x0147, +0x014a, 0x014a, +0x014c, 0x014c, +0x014e, 0x014e, +0x0150, 0x0150, +0x0152, 0x0152, +0x0154, 0x0154, +0x0156, 0x0156, +0x0158, 0x0158, +0x015a, 0x015a, +0x015c, 0x015c, +0x015e, 0x015e, +0x0160, 0x0160, +0x0162, 0x0162, +0x0164, 0x0164, +0x0166, 0x0166, +0x0168, 0x0168, +0x016a, 0x016a, +0x016c, 0x016c, +0x016e, 0x016e, +0x0170, 0x0170, +0x0172, 0x0172, +0x0174, 0x0174, +0x0176, 0x0176, +0x0178, 0x0179, +0x017b, 0x017b, +0x017d, 0x017d, +0x0181, 0x0182, +0x0184, 0x0184, +0x0186, 0x0187, +0x0189, 0x018b, +0x018e, 0x0191, +0x0193, 0x0194, +0x0196, 0x0198, +0x019c, 0x019d, +0x019f, 0x01a0, +0x01a2, 0x01a2, +0x01a4, 0x01a4, +0x01a6, 0x01a7, +0x01a9, 0x01a9, +0x01ac, 0x01ac, +0x01ae, 0x01af, +0x01b1, 0x01b3, +0x01b5, 0x01b5, +0x01b7, 0x01b8, +0x01bc, 0x01bc, +0x01c4, 0x01c4, +0x01c7, 0x01c7, +0x01ca, 0x01ca, +0x01cd, 0x01cd, +0x01cf, 0x01cf, +0x01d1, 0x01d1, +0x01d3, 0x01d3, +0x01d5, 0x01d5, +0x01d7, 0x01d7, +0x01d9, 0x01d9, +0x01db, 0x01db, +0x01de, 0x01de, +0x01e0, 0x01e0, +0x01e2, 0x01e2, +0x01e4, 0x01e4, +0x01e6, 0x01e6, +0x01e8, 0x01e8, +0x01ea, 0x01ea, +0x01ec, 0x01ec, +0x01ee, 0x01ee, +0x01f1, 0x01f1, +0x01f4, 0x01f4, +0x01f6, 0x01f8, +0x01fa, 0x01fa, +0x01fc, 0x01fc, +0x01fe, 0x01fe, +0x0200, 0x0200, +0x0202, 0x0202, +0x0204, 0x0204, +0x0206, 0x0206, +0x0208, 0x0208, +0x020a, 0x020a, +0x020c, 0x020c, +0x020e, 0x020e, +0x0210, 0x0210, +0x0212, 0x0212, +0x0214, 0x0214, +0x0216, 0x0216, +0x0218, 0x0218, +0x021a, 0x021a, +0x021c, 0x021c, +0x021e, 0x021e, +0x0220, 0x0220, +0x0222, 0x0222, +0x0224, 0x0224, +0x0226, 0x0226, +0x0228, 0x0228, +0x022a, 0x022a, +0x022c, 0x022c, +0x022e, 0x022e, +0x0230, 0x0230, +0x0232, 0x0232, +0x023a, 0x023b, +0x023d, 0x023e, +0x0241, 0x0241, +0x0243, 0x0246, +0x0248, 0x0248, +0x024a, 0x024a, +0x024c, 0x024c, +0x024e, 0x024e, +0x0370, 0x0370, +0x0372, 0x0372, +0x0376, 0x0376, +0x037f, 0x037f, +0x0386, 0x0386, +0x0388, 0x038a, +0x038c, 0x038c, +0x038e, 0x038f, +0x0391, 0x03a1, +0x03a3, 0x03ab, +0x03cf, 0x03cf, +0x03d2, 0x03d4, +0x03d8, 0x03d8, +0x03da, 0x03da, +0x03dc, 0x03dc, +0x03de, 0x03de, +0x03e0, 0x03e0, +0x03e2, 0x03e2, +0x03e4, 0x03e4, +0x03e6, 0x03e6, +0x03e8, 0x03e8, +0x03ea, 0x03ea, +0x03ec, 0x03ec, +0x03ee, 0x03ee, +0x03f4, 0x03f4, +0x03f7, 0x03f7, +0x03f9, 0x03fa, +0x03fd, 0x042f, +0x0460, 0x0460, +0x0462, 0x0462, +0x0464, 0x0464, +0x0466, 0x0466, +0x0468, 0x0468, +0x046a, 0x046a, +0x046c, 0x046c, +0x046e, 0x046e, +0x0470, 0x0470, +0x0472, 0x0472, +0x0474, 0x0474, +0x0476, 0x0476, +0x0478, 0x0478, +0x047a, 0x047a, +0x047c, 0x047c, +0x047e, 0x047e, +0x0480, 0x0480, +0x048a, 0x048a, +0x048c, 0x048c, +0x048e, 0x048e, +0x0490, 0x0490, +0x0492, 0x0492, +0x0494, 0x0494, +0x0496, 0x0496, +0x0498, 0x0498, +0x049a, 0x049a, +0x049c, 0x049c, +0x049e, 0x049e, +0x04a0, 0x04a0, +0x04a2, 0x04a2, +0x04a4, 0x04a4, +0x04a6, 0x04a6, +0x04a8, 0x04a8, +0x04aa, 0x04aa, +0x04ac, 0x04ac, +0x04ae, 0x04ae, +0x04b0, 0x04b0, +0x04b2, 0x04b2, +0x04b4, 0x04b4, +0x04b6, 0x04b6, +0x04b8, 0x04b8, +0x04ba, 0x04ba, +0x04bc, 0x04bc, +0x04be, 0x04be, +0x04c0, 0x04c1, +0x04c3, 0x04c3, +0x04c5, 0x04c5, +0x04c7, 0x04c7, +0x04c9, 0x04c9, +0x04cb, 0x04cb, +0x04cd, 0x04cd, +0x04d0, 0x04d0, +0x04d2, 0x04d2, +0x04d4, 0x04d4, +0x04d6, 0x04d6, +0x04d8, 0x04d8, +0x04da, 0x04da, +0x04dc, 0x04dc, +0x04de, 0x04de, +0x04e0, 0x04e0, +0x04e2, 0x04e2, +0x04e4, 0x04e4, +0x04e6, 0x04e6, +0x04e8, 0x04e8, +0x04ea, 0x04ea, +0x04ec, 0x04ec, +0x04ee, 0x04ee, +0x04f0, 0x04f0, +0x04f2, 0x04f2, +0x04f4, 0x04f4, +0x04f6, 0x04f6, +0x04f8, 0x04f8, +0x04fa, 0x04fa, +0x04fc, 0x04fc, +0x04fe, 0x04fe, +0x0500, 0x0500, +0x0502, 0x0502, +0x0504, 0x0504, +0x0506, 0x0506, +0x0508, 0x0508, +0x050a, 0x050a, +0x050c, 0x050c, +0x050e, 0x050e, +0x0510, 0x0510, +0x0512, 0x0512, +0x0514, 0x0514, +0x0516, 0x0516, +0x0518, 0x0518, +0x051a, 0x051a, +0x051c, 0x051c, +0x051e, 0x051e, +0x0520, 0x0520, +0x0522, 0x0522, +0x0524, 0x0524, +0x0526, 0x0526, +0x0528, 0x0528, +0x052a, 0x052a, +0x052c, 0x052c, +0x052e, 0x052e, +0x0531, 0x0556, +0x10a0, 0x10c5, +0x10c7, 0x10c7, +0x10cd, 0x10cd, +0x13a0, 0x13f5, +0x1c90, 0x1cba, +0x1cbd, 0x1cbf, +0x1e00, 0x1e00, +0x1e02, 0x1e02, +0x1e04, 0x1e04, +0x1e06, 0x1e06, +0x1e08, 0x1e08, +0x1e0a, 0x1e0a, +0x1e0c, 0x1e0c, +0x1e0e, 0x1e0e, +0x1e10, 0x1e10, +0x1e12, 0x1e12, +0x1e14, 0x1e14, +0x1e16, 0x1e16, +0x1e18, 0x1e18, +0x1e1a, 0x1e1a, +0x1e1c, 0x1e1c, +0x1e1e, 0x1e1e, +0x1e20, 0x1e20, +0x1e22, 0x1e22, +0x1e24, 0x1e24, +0x1e26, 0x1e26, +0x1e28, 0x1e28, +0x1e2a, 0x1e2a, +0x1e2c, 0x1e2c, +0x1e2e, 0x1e2e, +0x1e30, 0x1e30, +0x1e32, 0x1e32, +0x1e34, 0x1e34, +0x1e36, 0x1e36, +0x1e38, 0x1e38, +0x1e3a, 0x1e3a, +0x1e3c, 0x1e3c, +0x1e3e, 0x1e3e, +0x1e40, 0x1e40, +0x1e42, 0x1e42, +0x1e44, 0x1e44, +0x1e46, 0x1e46, +0x1e48, 0x1e48, +0x1e4a, 0x1e4a, +0x1e4c, 0x1e4c, +0x1e4e, 0x1e4e, +0x1e50, 0x1e50, +0x1e52, 0x1e52, +0x1e54, 0x1e54, +0x1e56, 0x1e56, +0x1e58, 0x1e58, +0x1e5a, 0x1e5a, +0x1e5c, 0x1e5c, +0x1e5e, 0x1e5e, +0x1e60, 0x1e60, +0x1e62, 0x1e62, +0x1e64, 0x1e64, +0x1e66, 0x1e66, +0x1e68, 0x1e68, +0x1e6a, 0x1e6a, +0x1e6c, 0x1e6c, +0x1e6e, 0x1e6e, +0x1e70, 0x1e70, +0x1e72, 0x1e72, +0x1e74, 0x1e74, +0x1e76, 0x1e76, +0x1e78, 0x1e78, +0x1e7a, 0x1e7a, +0x1e7c, 0x1e7c, +0x1e7e, 0x1e7e, +0x1e80, 0x1e80, +0x1e82, 0x1e82, +0x1e84, 0x1e84, +0x1e86, 0x1e86, +0x1e88, 0x1e88, +0x1e8a, 0x1e8a, +0x1e8c, 0x1e8c, +0x1e8e, 0x1e8e, +0x1e90, 0x1e90, +0x1e92, 0x1e92, +0x1e94, 0x1e94, +0x1e9e, 0x1e9e, +0x1ea0, 0x1ea0, +0x1ea2, 0x1ea2, +0x1ea4, 0x1ea4, +0x1ea6, 0x1ea6, +0x1ea8, 0x1ea8, +0x1eaa, 0x1eaa, +0x1eac, 0x1eac, +0x1eae, 0x1eae, +0x1eb0, 0x1eb0, +0x1eb2, 0x1eb2, +0x1eb4, 0x1eb4, +0x1eb6, 0x1eb6, +0x1eb8, 0x1eb8, +0x1eba, 0x1eba, +0x1ebc, 0x1ebc, +0x1ebe, 0x1ebe, +0x1ec0, 0x1ec0, +0x1ec2, 0x1ec2, +0x1ec4, 0x1ec4, +0x1ec6, 0x1ec6, +0x1ec8, 0x1ec8, +0x1eca, 0x1eca, +0x1ecc, 0x1ecc, +0x1ece, 0x1ece, +0x1ed0, 0x1ed0, +0x1ed2, 0x1ed2, +0x1ed4, 0x1ed4, +0x1ed6, 0x1ed6, +0x1ed8, 0x1ed8, +0x1eda, 0x1eda, +0x1edc, 0x1edc, +0x1ede, 0x1ede, +0x1ee0, 0x1ee0, +0x1ee2, 0x1ee2, +0x1ee4, 0x1ee4, +0x1ee6, 0x1ee6, +0x1ee8, 0x1ee8, +0x1eea, 0x1eea, +0x1eec, 0x1eec, +0x1eee, 0x1eee, +0x1ef0, 0x1ef0, +0x1ef2, 0x1ef2, +0x1ef4, 0x1ef4, +0x1ef6, 0x1ef6, +0x1ef8, 0x1ef8, +0x1efa, 0x1efa, +0x1efc, 0x1efc, +0x1efe, 0x1efe, +0x1f08, 0x1f0f, +0x1f18, 0x1f1d, +0x1f28, 0x1f2f, +0x1f38, 0x1f3f, +0x1f48, 0x1f4d, +0x1f59, 0x1f59, +0x1f5b, 0x1f5b, +0x1f5d, 0x1f5d, +0x1f5f, 0x1f5f, +0x1f68, 0x1f6f, +0x1fb8, 0x1fbb, +0x1fc8, 0x1fcb, +0x1fd8, 0x1fdb, +0x1fe8, 0x1fec, +0x1ff8, 0x1ffb, +0x2102, 0x2102, +0x2107, 0x2107, +0x210b, 0x210d, +0x2110, 0x2112, +0x2115, 0x2115, +0x2119, 0x211d, +0x2124, 0x2124, +0x2126, 0x2126, +0x2128, 0x2128, +0x212a, 0x212d, +0x2130, 0x2133, +0x213e, 0x213f, +0x2145, 0x2145, +0x2160, 0x216f, +0x2183, 0x2183, +0x24b6, 0x24cf, +0x2c00, 0x2c2e, +0x2c60, 0x2c60, +0x2c62, 0x2c64, +0x2c67, 0x2c67, +0x2c69, 0x2c69, +0x2c6b, 0x2c6b, +0x2c6d, 0x2c70, +0x2c72, 0x2c72, +0x2c75, 0x2c75, +0x2c7e, 0x2c80, +0x2c82, 0x2c82, +0x2c84, 0x2c84, +0x2c86, 0x2c86, +0x2c88, 0x2c88, +0x2c8a, 0x2c8a, +0x2c8c, 0x2c8c, +0x2c8e, 0x2c8e, +0x2c90, 0x2c90, +0x2c92, 0x2c92, +0x2c94, 0x2c94, +0x2c96, 0x2c96, +0x2c98, 0x2c98, +0x2c9a, 0x2c9a, +0x2c9c, 0x2c9c, +0x2c9e, 0x2c9e, +0x2ca0, 0x2ca0, +0x2ca2, 0x2ca2, +0x2ca4, 0x2ca4, +0x2ca6, 0x2ca6, +0x2ca8, 0x2ca8, +0x2caa, 0x2caa, +0x2cac, 0x2cac, +0x2cae, 0x2cae, +0x2cb0, 0x2cb0, +0x2cb2, 0x2cb2, +0x2cb4, 0x2cb4, +0x2cb6, 0x2cb6, +0x2cb8, 0x2cb8, +0x2cba, 0x2cba, +0x2cbc, 0x2cbc, +0x2cbe, 0x2cbe, +0x2cc0, 0x2cc0, +0x2cc2, 0x2cc2, +0x2cc4, 0x2cc4, +0x2cc6, 0x2cc6, +0x2cc8, 0x2cc8, +0x2cca, 0x2cca, +0x2ccc, 0x2ccc, +0x2cce, 0x2cce, +0x2cd0, 0x2cd0, +0x2cd2, 0x2cd2, +0x2cd4, 0x2cd4, +0x2cd6, 0x2cd6, +0x2cd8, 0x2cd8, +0x2cda, 0x2cda, +0x2cdc, 0x2cdc, +0x2cde, 0x2cde, +0x2ce0, 0x2ce0, +0x2ce2, 0x2ce2, +0x2ceb, 0x2ceb, +0x2ced, 0x2ced, +0x2cf2, 0x2cf2, +0xa640, 0xa640, +0xa642, 0xa642, +0xa644, 0xa644, +0xa646, 0xa646, +0xa648, 0xa648, +0xa64a, 0xa64a, +0xa64c, 0xa64c, +0xa64e, 0xa64e, +0xa650, 0xa650, +0xa652, 0xa652, +0xa654, 0xa654, +0xa656, 0xa656, +0xa658, 0xa658, +0xa65a, 0xa65a, +0xa65c, 0xa65c, +0xa65e, 0xa65e, +0xa660, 0xa660, +0xa662, 0xa662, +0xa664, 0xa664, +0xa666, 0xa666, +0xa668, 0xa668, +0xa66a, 0xa66a, +0xa66c, 0xa66c, +0xa680, 0xa680, +0xa682, 0xa682, +0xa684, 0xa684, +0xa686, 0xa686, +0xa688, 0xa688, +0xa68a, 0xa68a, +0xa68c, 0xa68c, +0xa68e, 0xa68e, +0xa690, 0xa690, +0xa692, 0xa692, +0xa694, 0xa694, +0xa696, 0xa696, +0xa698, 0xa698, +0xa69a, 0xa69a, +0xa722, 0xa722, +0xa724, 0xa724, +0xa726, 0xa726, +0xa728, 0xa728, +0xa72a, 0xa72a, +0xa72c, 0xa72c, +0xa72e, 0xa72e, +0xa732, 0xa732, +0xa734, 0xa734, +0xa736, 0xa736, +0xa738, 0xa738, +0xa73a, 0xa73a, +0xa73c, 0xa73c, +0xa73e, 0xa73e, +0xa740, 0xa740, +0xa742, 0xa742, +0xa744, 0xa744, +0xa746, 0xa746, +0xa748, 0xa748, +0xa74a, 0xa74a, +0xa74c, 0xa74c, +0xa74e, 0xa74e, +0xa750, 0xa750, +0xa752, 0xa752, +0xa754, 0xa754, +0xa756, 0xa756, +0xa758, 0xa758, +0xa75a, 0xa75a, +0xa75c, 0xa75c, +0xa75e, 0xa75e, +0xa760, 0xa760, +0xa762, 0xa762, +0xa764, 0xa764, +0xa766, 0xa766, +0xa768, 0xa768, +0xa76a, 0xa76a, +0xa76c, 0xa76c, +0xa76e, 0xa76e, +0xa779, 0xa779, +0xa77b, 0xa77b, +0xa77d, 0xa77e, +0xa780, 0xa780, +0xa782, 0xa782, +0xa784, 0xa784, +0xa786, 0xa786, +0xa78b, 0xa78b, +0xa78d, 0xa78d, +0xa790, 0xa790, +0xa792, 0xa792, +0xa796, 0xa796, +0xa798, 0xa798, +0xa79a, 0xa79a, +0xa79c, 0xa79c, +0xa79e, 0xa79e, +0xa7a0, 0xa7a0, +0xa7a2, 0xa7a2, +0xa7a4, 0xa7a4, +0xa7a6, 0xa7a6, +0xa7a8, 0xa7a8, +0xa7aa, 0xa7ae, +0xa7b0, 0xa7b4, +0xa7b6, 0xa7b6, +0xa7b8, 0xa7b8, +0xff21, 0xff3a, +0x10400, 0x10427, +0x104b0, 0x104d3, +0x10c80, 0x10cb2, +0x118a0, 0x118bf, +0x16e40, 0x16e5f, +0x1d400, 0x1d419, +0x1d434, 0x1d44d, +0x1d468, 0x1d481, +0x1d49c, 0x1d49c, +0x1d49e, 0x1d49f, +0x1d4a2, 0x1d4a2, +0x1d4a5, 0x1d4a6, +0x1d4a9, 0x1d4ac, +0x1d4ae, 0x1d4b5, +0x1d4d0, 0x1d4e9, +0x1d504, 0x1d505, +0x1d507, 0x1d50a, +0x1d50d, 0x1d514, +0x1d516, 0x1d51c, +0x1d538, 0x1d539, +0x1d53b, 0x1d53e, +0x1d540, 0x1d544, +0x1d546, 0x1d546, +0x1d54a, 0x1d550, +0x1d56c, 0x1d585, +0x1d5a0, 0x1d5b9, +0x1d5d4, 0x1d5ed, +0x1d608, 0x1d621, +0x1d63c, 0x1d655, +0x1d670, 0x1d689, +0x1d6a8, 0x1d6c0, +0x1d6e2, 0x1d6fa, +0x1d71c, 0x1d734, +0x1d756, 0x1d76e, +0x1d790, 0x1d7a8, +0x1d7ca, 0x1d7ca, +0x1e900, 0x1e921, +0x1f130, 0x1f149, +0x1f150, 0x1f169, +0x1f170, 0x1f189, +}; /* END of CR_Upper */ + +/* PROPERTY: 'XDigit': POSIX [[:XDigit:]] */ +static const OnigCodePoint +CR_XDigit[] = { 3, +0x0030, 0x0039, +0x0041, 0x0046, +0x0061, 0x0066, +}; /* END of CR_XDigit */ + +/* PROPERTY: 'Word': POSIX [[:Word:]] */ +static const OnigCodePoint +CR_Word[] = { 710, +0x0030, 0x0039, +0x0041, 0x005a, +0x005f, 0x005f, +0x0061, 0x007a, +0x00aa, 0x00aa, +0x00b5, 0x00b5, +0x00ba, 0x00ba, +0x00c0, 0x00d6, +0x00d8, 0x00f6, +0x00f8, 0x02c1, +0x02c6, 0x02d1, +0x02e0, 0x02e4, +0x02ec, 0x02ec, +0x02ee, 0x02ee, +0x0300, 0x0374, +0x0376, 0x0377, +0x037a, 0x037d, +0x037f, 0x037f, +0x0386, 0x0386, +0x0388, 0x038a, +0x038c, 0x038c, +0x038e, 0x03a1, +0x03a3, 0x03f5, +0x03f7, 0x0481, +0x0483, 0x052f, +0x0531, 0x0556, +0x0559, 0x0559, +0x0560, 0x0588, +0x0591, 0x05bd, +0x05bf, 0x05bf, +0x05c1, 0x05c2, +0x05c4, 0x05c5, +0x05c7, 0x05c7, +0x05d0, 0x05ea, +0x05ef, 0x05f2, +0x0610, 0x061a, +0x0620, 0x0669, +0x066e, 0x06d3, +0x06d5, 0x06dc, +0x06df, 0x06e8, +0x06ea, 0x06fc, +0x06ff, 0x06ff, +0x0710, 0x074a, +0x074d, 0x07b1, +0x07c0, 0x07f5, +0x07fa, 0x07fa, +0x07fd, 0x07fd, +0x0800, 0x082d, +0x0840, 0x085b, +0x0860, 0x086a, +0x08a0, 0x08b4, +0x08b6, 0x08bd, +0x08d3, 0x08e1, +0x08e3, 0x0963, +0x0966, 0x096f, +0x0971, 0x0983, +0x0985, 0x098c, +0x098f, 0x0990, +0x0993, 0x09a8, +0x09aa, 0x09b0, +0x09b2, 0x09b2, +0x09b6, 0x09b9, +0x09bc, 0x09c4, +0x09c7, 0x09c8, +0x09cb, 0x09ce, +0x09d7, 0x09d7, +0x09dc, 0x09dd, +0x09df, 0x09e3, +0x09e6, 0x09f1, +0x09fc, 0x09fc, +0x09fe, 0x09fe, +0x0a01, 0x0a03, +0x0a05, 0x0a0a, +0x0a0f, 0x0a10, +0x0a13, 0x0a28, +0x0a2a, 0x0a30, +0x0a32, 0x0a33, +0x0a35, 0x0a36, +0x0a38, 0x0a39, +0x0a3c, 0x0a3c, +0x0a3e, 0x0a42, +0x0a47, 0x0a48, +0x0a4b, 0x0a4d, +0x0a51, 0x0a51, +0x0a59, 0x0a5c, +0x0a5e, 0x0a5e, +0x0a66, 0x0a75, +0x0a81, 0x0a83, +0x0a85, 0x0a8d, +0x0a8f, 0x0a91, +0x0a93, 0x0aa8, +0x0aaa, 0x0ab0, +0x0ab2, 0x0ab3, +0x0ab5, 0x0ab9, +0x0abc, 0x0ac5, +0x0ac7, 0x0ac9, +0x0acb, 0x0acd, +0x0ad0, 0x0ad0, +0x0ae0, 0x0ae3, +0x0ae6, 0x0aef, +0x0af9, 0x0aff, +0x0b01, 0x0b03, +0x0b05, 0x0b0c, +0x0b0f, 0x0b10, +0x0b13, 0x0b28, +0x0b2a, 0x0b30, +0x0b32, 0x0b33, +0x0b35, 0x0b39, +0x0b3c, 0x0b44, +0x0b47, 0x0b48, +0x0b4b, 0x0b4d, +0x0b56, 0x0b57, +0x0b5c, 0x0b5d, +0x0b5f, 0x0b63, +0x0b66, 0x0b6f, +0x0b71, 0x0b71, +0x0b82, 0x0b83, +0x0b85, 0x0b8a, +0x0b8e, 0x0b90, +0x0b92, 0x0b95, +0x0b99, 0x0b9a, +0x0b9c, 0x0b9c, +0x0b9e, 0x0b9f, +0x0ba3, 0x0ba4, +0x0ba8, 0x0baa, +0x0bae, 0x0bb9, +0x0bbe, 0x0bc2, +0x0bc6, 0x0bc8, +0x0bca, 0x0bcd, +0x0bd0, 0x0bd0, +0x0bd7, 0x0bd7, +0x0be6, 0x0bef, +0x0c00, 0x0c0c, +0x0c0e, 0x0c10, +0x0c12, 0x0c28, +0x0c2a, 0x0c39, +0x0c3d, 0x0c44, +0x0c46, 0x0c48, +0x0c4a, 0x0c4d, +0x0c55, 0x0c56, +0x0c58, 0x0c5a, +0x0c60, 0x0c63, +0x0c66, 0x0c6f, +0x0c80, 0x0c83, +0x0c85, 0x0c8c, +0x0c8e, 0x0c90, +0x0c92, 0x0ca8, +0x0caa, 0x0cb3, +0x0cb5, 0x0cb9, +0x0cbc, 0x0cc4, +0x0cc6, 0x0cc8, +0x0cca, 0x0ccd, +0x0cd5, 0x0cd6, +0x0cde, 0x0cde, +0x0ce0, 0x0ce3, +0x0ce6, 0x0cef, +0x0cf1, 0x0cf2, +0x0d00, 0x0d03, +0x0d05, 0x0d0c, +0x0d0e, 0x0d10, +0x0d12, 0x0d44, +0x0d46, 0x0d48, +0x0d4a, 0x0d4e, +0x0d54, 0x0d57, +0x0d5f, 0x0d63, +0x0d66, 0x0d6f, +0x0d7a, 0x0d7f, +0x0d82, 0x0d83, +0x0d85, 0x0d96, +0x0d9a, 0x0db1, +0x0db3, 0x0dbb, +0x0dbd, 0x0dbd, +0x0dc0, 0x0dc6, +0x0dca, 0x0dca, +0x0dcf, 0x0dd4, +0x0dd6, 0x0dd6, +0x0dd8, 0x0ddf, +0x0de6, 0x0def, +0x0df2, 0x0df3, +0x0e01, 0x0e3a, +0x0e40, 0x0e4e, +0x0e50, 0x0e59, +0x0e81, 0x0e82, +0x0e84, 0x0e84, +0x0e87, 0x0e88, +0x0e8a, 0x0e8a, +0x0e8d, 0x0e8d, +0x0e94, 0x0e97, +0x0e99, 0x0e9f, +0x0ea1, 0x0ea3, +0x0ea5, 0x0ea5, +0x0ea7, 0x0ea7, +0x0eaa, 0x0eab, +0x0ead, 0x0eb9, +0x0ebb, 0x0ebd, +0x0ec0, 0x0ec4, +0x0ec6, 0x0ec6, +0x0ec8, 0x0ecd, +0x0ed0, 0x0ed9, +0x0edc, 0x0edf, +0x0f00, 0x0f00, +0x0f18, 0x0f19, +0x0f20, 0x0f29, +0x0f35, 0x0f35, +0x0f37, 0x0f37, +0x0f39, 0x0f39, +0x0f3e, 0x0f47, +0x0f49, 0x0f6c, +0x0f71, 0x0f84, +0x0f86, 0x0f97, +0x0f99, 0x0fbc, +0x0fc6, 0x0fc6, +0x1000, 0x1049, +0x1050, 0x109d, +0x10a0, 0x10c5, +0x10c7, 0x10c7, +0x10cd, 0x10cd, +0x10d0, 0x10fa, +0x10fc, 0x1248, +0x124a, 0x124d, +0x1250, 0x1256, +0x1258, 0x1258, +0x125a, 0x125d, +0x1260, 0x1288, +0x128a, 0x128d, +0x1290, 0x12b0, +0x12b2, 0x12b5, +0x12b8, 0x12be, +0x12c0, 0x12c0, +0x12c2, 0x12c5, +0x12c8, 0x12d6, +0x12d8, 0x1310, +0x1312, 0x1315, +0x1318, 0x135a, +0x135d, 0x135f, +0x1380, 0x138f, +0x13a0, 0x13f5, +0x13f8, 0x13fd, +0x1401, 0x166c, +0x166f, 0x167f, +0x1681, 0x169a, +0x16a0, 0x16ea, +0x16ee, 0x16f8, +0x1700, 0x170c, +0x170e, 0x1714, +0x1720, 0x1734, +0x1740, 0x1753, +0x1760, 0x176c, +0x176e, 0x1770, +0x1772, 0x1773, +0x1780, 0x17d3, +0x17d7, 0x17d7, +0x17dc, 0x17dd, +0x17e0, 0x17e9, +0x180b, 0x180d, +0x1810, 0x1819, +0x1820, 0x1878, +0x1880, 0x18aa, +0x18b0, 0x18f5, +0x1900, 0x191e, +0x1920, 0x192b, +0x1930, 0x193b, +0x1946, 0x196d, +0x1970, 0x1974, +0x1980, 0x19ab, +0x19b0, 0x19c9, +0x19d0, 0x19d9, +0x1a00, 0x1a1b, +0x1a20, 0x1a5e, +0x1a60, 0x1a7c, +0x1a7f, 0x1a89, +0x1a90, 0x1a99, +0x1aa7, 0x1aa7, +0x1ab0, 0x1abe, +0x1b00, 0x1b4b, +0x1b50, 0x1b59, +0x1b6b, 0x1b73, +0x1b80, 0x1bf3, +0x1c00, 0x1c37, +0x1c40, 0x1c49, +0x1c4d, 0x1c7d, +0x1c80, 0x1c88, +0x1c90, 0x1cba, +0x1cbd, 0x1cbf, +0x1cd0, 0x1cd2, +0x1cd4, 0x1cf9, +0x1d00, 0x1df9, +0x1dfb, 0x1f15, +0x1f18, 0x1f1d, +0x1f20, 0x1f45, +0x1f48, 0x1f4d, +0x1f50, 0x1f57, +0x1f59, 0x1f59, +0x1f5b, 0x1f5b, +0x1f5d, 0x1f5d, +0x1f5f, 0x1f7d, +0x1f80, 0x1fb4, +0x1fb6, 0x1fbc, +0x1fbe, 0x1fbe, +0x1fc2, 0x1fc4, +0x1fc6, 0x1fcc, +0x1fd0, 0x1fd3, +0x1fd6, 0x1fdb, +0x1fe0, 0x1fec, +0x1ff2, 0x1ff4, +0x1ff6, 0x1ffc, +0x203f, 0x2040, +0x2054, 0x2054, +0x2071, 0x2071, +0x207f, 0x207f, +0x2090, 0x209c, +0x20d0, 0x20f0, +0x2102, 0x2102, +0x2107, 0x2107, +0x210a, 0x2113, +0x2115, 0x2115, +0x2119, 0x211d, +0x2124, 0x2124, +0x2126, 0x2126, +0x2128, 0x2128, +0x212a, 0x212d, +0x212f, 0x2139, +0x213c, 0x213f, +0x2145, 0x2149, +0x214e, 0x214e, +0x2160, 0x2188, +0x24b6, 0x24e9, +0x2c00, 0x2c2e, +0x2c30, 0x2c5e, +0x2c60, 0x2ce4, +0x2ceb, 0x2cf3, +0x2d00, 0x2d25, +0x2d27, 0x2d27, +0x2d2d, 0x2d2d, +0x2d30, 0x2d67, +0x2d6f, 0x2d6f, +0x2d7f, 0x2d96, +0x2da0, 0x2da6, +0x2da8, 0x2dae, +0x2db0, 0x2db6, +0x2db8, 0x2dbe, +0x2dc0, 0x2dc6, +0x2dc8, 0x2dce, +0x2dd0, 0x2dd6, +0x2dd8, 0x2dde, +0x2de0, 0x2dff, +0x2e2f, 0x2e2f, +0x3005, 0x3007, +0x3021, 0x302f, +0x3031, 0x3035, +0x3038, 0x303c, +0x3041, 0x3096, +0x3099, 0x309a, +0x309d, 0x309f, +0x30a1, 0x30fa, +0x30fc, 0x30ff, +0x3105, 0x312f, +0x3131, 0x318e, +0x31a0, 0x31ba, +0x31f0, 0x31ff, +0x3400, 0x4db5, +0x4e00, 0x9fef, +0xa000, 0xa48c, +0xa4d0, 0xa4fd, +0xa500, 0xa60c, +0xa610, 0xa62b, +0xa640, 0xa672, +0xa674, 0xa67d, +0xa67f, 0xa6f1, +0xa717, 0xa71f, +0xa722, 0xa788, +0xa78b, 0xa7b9, +0xa7f7, 0xa827, +0xa840, 0xa873, +0xa880, 0xa8c5, +0xa8d0, 0xa8d9, +0xa8e0, 0xa8f7, +0xa8fb, 0xa8fb, +0xa8fd, 0xa92d, +0xa930, 0xa953, +0xa960, 0xa97c, +0xa980, 0xa9c0, +0xa9cf, 0xa9d9, +0xa9e0, 0xa9fe, +0xaa00, 0xaa36, +0xaa40, 0xaa4d, +0xaa50, 0xaa59, +0xaa60, 0xaa76, +0xaa7a, 0xaac2, +0xaadb, 0xaadd, +0xaae0, 0xaaef, +0xaaf2, 0xaaf6, +0xab01, 0xab06, +0xab09, 0xab0e, +0xab11, 0xab16, +0xab20, 0xab26, +0xab28, 0xab2e, +0xab30, 0xab5a, +0xab5c, 0xab65, +0xab70, 0xabea, +0xabec, 0xabed, +0xabf0, 0xabf9, +0xac00, 0xd7a3, +0xd7b0, 0xd7c6, +0xd7cb, 0xd7fb, +0xf900, 0xfa6d, +0xfa70, 0xfad9, +0xfb00, 0xfb06, +0xfb13, 0xfb17, +0xfb1d, 0xfb28, +0xfb2a, 0xfb36, +0xfb38, 0xfb3c, +0xfb3e, 0xfb3e, +0xfb40, 0xfb41, +0xfb43, 0xfb44, +0xfb46, 0xfbb1, +0xfbd3, 0xfd3d, +0xfd50, 0xfd8f, +0xfd92, 0xfdc7, +0xfdf0, 0xfdfb, +0xfe00, 0xfe0f, +0xfe20, 0xfe2f, +0xfe33, 0xfe34, +0xfe4d, 0xfe4f, +0xfe70, 0xfe74, +0xfe76, 0xfefc, +0xff10, 0xff19, +0xff21, 0xff3a, +0xff3f, 0xff3f, +0xff41, 0xff5a, +0xff66, 0xffbe, +0xffc2, 0xffc7, +0xffca, 0xffcf, +0xffd2, 0xffd7, +0xffda, 0xffdc, +0x10000, 0x1000b, +0x1000d, 0x10026, +0x10028, 0x1003a, +0x1003c, 0x1003d, +0x1003f, 0x1004d, +0x10050, 0x1005d, +0x10080, 0x100fa, +0x10140, 0x10174, +0x101fd, 0x101fd, +0x10280, 0x1029c, +0x102a0, 0x102d0, +0x102e0, 0x102e0, +0x10300, 0x1031f, +0x1032d, 0x1034a, +0x10350, 0x1037a, +0x10380, 0x1039d, +0x103a0, 0x103c3, +0x103c8, 0x103cf, +0x103d1, 0x103d5, +0x10400, 0x1049d, +0x104a0, 0x104a9, +0x104b0, 0x104d3, +0x104d8, 0x104fb, +0x10500, 0x10527, +0x10530, 0x10563, +0x10600, 0x10736, +0x10740, 0x10755, +0x10760, 0x10767, +0x10800, 0x10805, +0x10808, 0x10808, +0x1080a, 0x10835, +0x10837, 0x10838, +0x1083c, 0x1083c, +0x1083f, 0x10855, +0x10860, 0x10876, +0x10880, 0x1089e, +0x108e0, 0x108f2, +0x108f4, 0x108f5, +0x10900, 0x10915, +0x10920, 0x10939, +0x10980, 0x109b7, +0x109be, 0x109bf, +0x10a00, 0x10a03, +0x10a05, 0x10a06, +0x10a0c, 0x10a13, +0x10a15, 0x10a17, +0x10a19, 0x10a35, +0x10a38, 0x10a3a, +0x10a3f, 0x10a3f, +0x10a60, 0x10a7c, +0x10a80, 0x10a9c, +0x10ac0, 0x10ac7, +0x10ac9, 0x10ae6, +0x10b00, 0x10b35, +0x10b40, 0x10b55, +0x10b60, 0x10b72, +0x10b80, 0x10b91, +0x10c00, 0x10c48, +0x10c80, 0x10cb2, +0x10cc0, 0x10cf2, +0x10d00, 0x10d27, +0x10d30, 0x10d39, +0x10f00, 0x10f1c, +0x10f27, 0x10f27, +0x10f30, 0x10f50, +0x11000, 0x11046, +0x11066, 0x1106f, +0x1107f, 0x110ba, +0x110d0, 0x110e8, +0x110f0, 0x110f9, +0x11100, 0x11134, +0x11136, 0x1113f, +0x11144, 0x11146, +0x11150, 0x11173, +0x11176, 0x11176, +0x11180, 0x111c4, +0x111c9, 0x111cc, +0x111d0, 0x111da, +0x111dc, 0x111dc, +0x11200, 0x11211, +0x11213, 0x11237, +0x1123e, 0x1123e, +0x11280, 0x11286, +0x11288, 0x11288, +0x1128a, 0x1128d, +0x1128f, 0x1129d, +0x1129f, 0x112a8, +0x112b0, 0x112ea, +0x112f0, 0x112f9, +0x11300, 0x11303, +0x11305, 0x1130c, +0x1130f, 0x11310, +0x11313, 0x11328, +0x1132a, 0x11330, +0x11332, 0x11333, +0x11335, 0x11339, +0x1133b, 0x11344, +0x11347, 0x11348, +0x1134b, 0x1134d, +0x11350, 0x11350, +0x11357, 0x11357, +0x1135d, 0x11363, +0x11366, 0x1136c, +0x11370, 0x11374, +0x11400, 0x1144a, +0x11450, 0x11459, +0x1145e, 0x1145e, +0x11480, 0x114c5, +0x114c7, 0x114c7, +0x114d0, 0x114d9, +0x11580, 0x115b5, +0x115b8, 0x115c0, +0x115d8, 0x115dd, +0x11600, 0x11640, +0x11644, 0x11644, +0x11650, 0x11659, +0x11680, 0x116b7, +0x116c0, 0x116c9, +0x11700, 0x1171a, +0x1171d, 0x1172b, +0x11730, 0x11739, +0x11800, 0x1183a, +0x118a0, 0x118e9, +0x118ff, 0x118ff, +0x11a00, 0x11a3e, +0x11a47, 0x11a47, +0x11a50, 0x11a83, +0x11a86, 0x11a99, +0x11a9d, 0x11a9d, +0x11ac0, 0x11af8, +0x11c00, 0x11c08, +0x11c0a, 0x11c36, +0x11c38, 0x11c40, +0x11c50, 0x11c59, +0x11c72, 0x11c8f, +0x11c92, 0x11ca7, +0x11ca9, 0x11cb6, +0x11d00, 0x11d06, +0x11d08, 0x11d09, +0x11d0b, 0x11d36, +0x11d3a, 0x11d3a, +0x11d3c, 0x11d3d, +0x11d3f, 0x11d47, +0x11d50, 0x11d59, +0x11d60, 0x11d65, +0x11d67, 0x11d68, +0x11d6a, 0x11d8e, +0x11d90, 0x11d91, +0x11d93, 0x11d98, +0x11da0, 0x11da9, +0x11ee0, 0x11ef6, +0x12000, 0x12399, +0x12400, 0x1246e, +0x12480, 0x12543, +0x13000, 0x1342e, +0x14400, 0x14646, +0x16800, 0x16a38, +0x16a40, 0x16a5e, +0x16a60, 0x16a69, +0x16ad0, 0x16aed, +0x16af0, 0x16af4, +0x16b00, 0x16b36, +0x16b40, 0x16b43, +0x16b50, 0x16b59, +0x16b63, 0x16b77, +0x16b7d, 0x16b8f, +0x16e40, 0x16e7f, +0x16f00, 0x16f44, +0x16f50, 0x16f7e, +0x16f8f, 0x16f9f, +0x16fe0, 0x16fe1, +0x17000, 0x187f1, +0x18800, 0x18af2, +0x1b000, 0x1b11e, +0x1b170, 0x1b2fb, +0x1bc00, 0x1bc6a, +0x1bc70, 0x1bc7c, +0x1bc80, 0x1bc88, +0x1bc90, 0x1bc99, +0x1bc9d, 0x1bc9e, +0x1d165, 0x1d169, +0x1d16d, 0x1d172, +0x1d17b, 0x1d182, +0x1d185, 0x1d18b, +0x1d1aa, 0x1d1ad, +0x1d242, 0x1d244, +0x1d400, 0x1d454, +0x1d456, 0x1d49c, +0x1d49e, 0x1d49f, +0x1d4a2, 0x1d4a2, +0x1d4a5, 0x1d4a6, +0x1d4a9, 0x1d4ac, +0x1d4ae, 0x1d4b9, +0x1d4bb, 0x1d4bb, +0x1d4bd, 0x1d4c3, +0x1d4c5, 0x1d505, +0x1d507, 0x1d50a, +0x1d50d, 0x1d514, +0x1d516, 0x1d51c, +0x1d51e, 0x1d539, +0x1d53b, 0x1d53e, +0x1d540, 0x1d544, +0x1d546, 0x1d546, +0x1d54a, 0x1d550, +0x1d552, 0x1d6a5, +0x1d6a8, 0x1d6c0, +0x1d6c2, 0x1d6da, +0x1d6dc, 0x1d6fa, +0x1d6fc, 0x1d714, +0x1d716, 0x1d734, +0x1d736, 0x1d74e, +0x1d750, 0x1d76e, +0x1d770, 0x1d788, +0x1d78a, 0x1d7a8, +0x1d7aa, 0x1d7c2, +0x1d7c4, 0x1d7cb, +0x1d7ce, 0x1d7ff, +0x1da00, 0x1da36, +0x1da3b, 0x1da6c, +0x1da75, 0x1da75, +0x1da84, 0x1da84, +0x1da9b, 0x1da9f, +0x1daa1, 0x1daaf, +0x1e000, 0x1e006, +0x1e008, 0x1e018, +0x1e01b, 0x1e021, +0x1e023, 0x1e024, +0x1e026, 0x1e02a, +0x1e800, 0x1e8c4, +0x1e8d0, 0x1e8d6, +0x1e900, 0x1e94a, +0x1e950, 0x1e959, +0x1ee00, 0x1ee03, +0x1ee05, 0x1ee1f, +0x1ee21, 0x1ee22, +0x1ee24, 0x1ee24, +0x1ee27, 0x1ee27, +0x1ee29, 0x1ee32, +0x1ee34, 0x1ee37, +0x1ee39, 0x1ee39, +0x1ee3b, 0x1ee3b, +0x1ee42, 0x1ee42, +0x1ee47, 0x1ee47, +0x1ee49, 0x1ee49, +0x1ee4b, 0x1ee4b, +0x1ee4d, 0x1ee4f, +0x1ee51, 0x1ee52, +0x1ee54, 0x1ee54, +0x1ee57, 0x1ee57, +0x1ee59, 0x1ee59, +0x1ee5b, 0x1ee5b, +0x1ee5d, 0x1ee5d, +0x1ee5f, 0x1ee5f, +0x1ee61, 0x1ee62, +0x1ee64, 0x1ee64, +0x1ee67, 0x1ee6a, +0x1ee6c, 0x1ee72, +0x1ee74, 0x1ee77, +0x1ee79, 0x1ee7c, +0x1ee7e, 0x1ee7e, +0x1ee80, 0x1ee89, +0x1ee8b, 0x1ee9b, +0x1eea1, 0x1eea3, +0x1eea5, 0x1eea9, +0x1eeab, 0x1eebb, +0x1f130, 0x1f149, +0x1f150, 0x1f169, +0x1f170, 0x1f189, +0x20000, 0x2a6d6, +0x2a700, 0x2b734, +0x2b740, 0x2b81d, +0x2b820, 0x2cea1, +0x2ceb0, 0x2ebe0, +0x2f800, 0x2fa1d, +0xe0100, 0xe01ef, +}; /* END of CR_Word */ + +/* PROPERTY: 'Alnum': POSIX [[:Alnum:]] */ +static const OnigCodePoint +CR_Alnum[] = { 713, +0x0030, 0x0039, +0x0041, 0x005a, +0x0061, 0x007a, +0x00aa, 0x00aa, +0x00b5, 0x00b5, +0x00ba, 0x00ba, +0x00c0, 0x00d6, +0x00d8, 0x00f6, +0x00f8, 0x02c1, +0x02c6, 0x02d1, +0x02e0, 0x02e4, +0x02ec, 0x02ec, +0x02ee, 0x02ee, +0x0345, 0x0345, +0x0370, 0x0374, +0x0376, 0x0377, +0x037a, 0x037d, +0x037f, 0x037f, +0x0386, 0x0386, +0x0388, 0x038a, +0x038c, 0x038c, +0x038e, 0x03a1, +0x03a3, 0x03f5, +0x03f7, 0x0481, +0x048a, 0x052f, +0x0531, 0x0556, +0x0559, 0x0559, +0x0560, 0x0588, +0x05b0, 0x05bd, +0x05bf, 0x05bf, +0x05c1, 0x05c2, +0x05c4, 0x05c5, +0x05c7, 0x05c7, +0x05d0, 0x05ea, +0x05ef, 0x05f2, +0x0610, 0x061a, +0x0620, 0x0657, +0x0659, 0x0669, +0x066e, 0x06d3, +0x06d5, 0x06dc, +0x06e1, 0x06e8, +0x06ed, 0x06fc, +0x06ff, 0x06ff, +0x0710, 0x073f, +0x074d, 0x07b1, +0x07c0, 0x07ea, +0x07f4, 0x07f5, +0x07fa, 0x07fa, +0x0800, 0x0817, +0x081a, 0x082c, +0x0840, 0x0858, +0x0860, 0x086a, +0x08a0, 0x08b4, +0x08b6, 0x08bd, +0x08d4, 0x08df, +0x08e3, 0x08e9, +0x08f0, 0x093b, +0x093d, 0x094c, +0x094e, 0x0950, +0x0955, 0x0963, +0x0966, 0x096f, +0x0971, 0x0983, +0x0985, 0x098c, +0x098f, 0x0990, +0x0993, 0x09a8, +0x09aa, 0x09b0, +0x09b2, 0x09b2, +0x09b6, 0x09b9, +0x09bd, 0x09c4, +0x09c7, 0x09c8, +0x09cb, 0x09cc, +0x09ce, 0x09ce, +0x09d7, 0x09d7, +0x09dc, 0x09dd, +0x09df, 0x09e3, +0x09e6, 0x09f1, +0x09fc, 0x09fc, +0x0a01, 0x0a03, +0x0a05, 0x0a0a, +0x0a0f, 0x0a10, +0x0a13, 0x0a28, +0x0a2a, 0x0a30, +0x0a32, 0x0a33, +0x0a35, 0x0a36, +0x0a38, 0x0a39, +0x0a3e, 0x0a42, +0x0a47, 0x0a48, +0x0a4b, 0x0a4c, +0x0a51, 0x0a51, +0x0a59, 0x0a5c, +0x0a5e, 0x0a5e, +0x0a66, 0x0a75, +0x0a81, 0x0a83, +0x0a85, 0x0a8d, +0x0a8f, 0x0a91, +0x0a93, 0x0aa8, +0x0aaa, 0x0ab0, +0x0ab2, 0x0ab3, +0x0ab5, 0x0ab9, +0x0abd, 0x0ac5, +0x0ac7, 0x0ac9, +0x0acb, 0x0acc, +0x0ad0, 0x0ad0, +0x0ae0, 0x0ae3, +0x0ae6, 0x0aef, +0x0af9, 0x0afc, +0x0b01, 0x0b03, +0x0b05, 0x0b0c, +0x0b0f, 0x0b10, +0x0b13, 0x0b28, +0x0b2a, 0x0b30, +0x0b32, 0x0b33, +0x0b35, 0x0b39, +0x0b3d, 0x0b44, +0x0b47, 0x0b48, +0x0b4b, 0x0b4c, +0x0b56, 0x0b57, +0x0b5c, 0x0b5d, +0x0b5f, 0x0b63, +0x0b66, 0x0b6f, +0x0b71, 0x0b71, +0x0b82, 0x0b83, +0x0b85, 0x0b8a, +0x0b8e, 0x0b90, +0x0b92, 0x0b95, +0x0b99, 0x0b9a, +0x0b9c, 0x0b9c, +0x0b9e, 0x0b9f, +0x0ba3, 0x0ba4, +0x0ba8, 0x0baa, +0x0bae, 0x0bb9, +0x0bbe, 0x0bc2, +0x0bc6, 0x0bc8, +0x0bca, 0x0bcc, +0x0bd0, 0x0bd0, +0x0bd7, 0x0bd7, +0x0be6, 0x0bef, +0x0c00, 0x0c03, +0x0c05, 0x0c0c, +0x0c0e, 0x0c10, +0x0c12, 0x0c28, +0x0c2a, 0x0c39, +0x0c3d, 0x0c44, +0x0c46, 0x0c48, +0x0c4a, 0x0c4c, +0x0c55, 0x0c56, +0x0c58, 0x0c5a, +0x0c60, 0x0c63, +0x0c66, 0x0c6f, +0x0c80, 0x0c83, +0x0c85, 0x0c8c, +0x0c8e, 0x0c90, +0x0c92, 0x0ca8, +0x0caa, 0x0cb3, +0x0cb5, 0x0cb9, +0x0cbd, 0x0cc4, +0x0cc6, 0x0cc8, +0x0cca, 0x0ccc, +0x0cd5, 0x0cd6, +0x0cde, 0x0cde, +0x0ce0, 0x0ce3, +0x0ce6, 0x0cef, +0x0cf1, 0x0cf2, +0x0d00, 0x0d03, +0x0d05, 0x0d0c, +0x0d0e, 0x0d10, +0x0d12, 0x0d3a, +0x0d3d, 0x0d44, +0x0d46, 0x0d48, +0x0d4a, 0x0d4c, +0x0d4e, 0x0d4e, +0x0d54, 0x0d57, +0x0d5f, 0x0d63, +0x0d66, 0x0d6f, +0x0d7a, 0x0d7f, +0x0d82, 0x0d83, +0x0d85, 0x0d96, +0x0d9a, 0x0db1, +0x0db3, 0x0dbb, +0x0dbd, 0x0dbd, +0x0dc0, 0x0dc6, +0x0dcf, 0x0dd4, +0x0dd6, 0x0dd6, +0x0dd8, 0x0ddf, +0x0de6, 0x0def, +0x0df2, 0x0df3, +0x0e01, 0x0e3a, +0x0e40, 0x0e46, +0x0e4d, 0x0e4d, +0x0e50, 0x0e59, +0x0e81, 0x0e82, +0x0e84, 0x0e84, +0x0e87, 0x0e88, +0x0e8a, 0x0e8a, +0x0e8d, 0x0e8d, +0x0e94, 0x0e97, +0x0e99, 0x0e9f, +0x0ea1, 0x0ea3, +0x0ea5, 0x0ea5, +0x0ea7, 0x0ea7, +0x0eaa, 0x0eab, +0x0ead, 0x0eb9, +0x0ebb, 0x0ebd, +0x0ec0, 0x0ec4, +0x0ec6, 0x0ec6, +0x0ecd, 0x0ecd, +0x0ed0, 0x0ed9, +0x0edc, 0x0edf, +0x0f00, 0x0f00, +0x0f20, 0x0f29, +0x0f40, 0x0f47, +0x0f49, 0x0f6c, +0x0f71, 0x0f81, +0x0f88, 0x0f97, +0x0f99, 0x0fbc, +0x1000, 0x1036, +0x1038, 0x1038, +0x103b, 0x1049, +0x1050, 0x1062, +0x1065, 0x1068, +0x106e, 0x1086, +0x108e, 0x108e, +0x1090, 0x1099, +0x109c, 0x109d, +0x10a0, 0x10c5, +0x10c7, 0x10c7, +0x10cd, 0x10cd, +0x10d0, 0x10fa, +0x10fc, 0x1248, +0x124a, 0x124d, +0x1250, 0x1256, +0x1258, 0x1258, +0x125a, 0x125d, +0x1260, 0x1288, +0x128a, 0x128d, +0x1290, 0x12b0, +0x12b2, 0x12b5, +0x12b8, 0x12be, +0x12c0, 0x12c0, +0x12c2, 0x12c5, +0x12c8, 0x12d6, +0x12d8, 0x1310, +0x1312, 0x1315, +0x1318, 0x135a, +0x135f, 0x135f, +0x1380, 0x138f, +0x13a0, 0x13f5, +0x13f8, 0x13fd, +0x1401, 0x166c, +0x166f, 0x167f, +0x1681, 0x169a, +0x16a0, 0x16ea, +0x16ee, 0x16f8, +0x1700, 0x170c, +0x170e, 0x1713, +0x1720, 0x1733, +0x1740, 0x1753, +0x1760, 0x176c, +0x176e, 0x1770, +0x1772, 0x1773, +0x1780, 0x17b3, +0x17b6, 0x17c8, +0x17d7, 0x17d7, +0x17dc, 0x17dc, +0x17e0, 0x17e9, +0x1810, 0x1819, +0x1820, 0x1878, +0x1880, 0x18aa, +0x18b0, 0x18f5, +0x1900, 0x191e, +0x1920, 0x192b, +0x1930, 0x1938, +0x1946, 0x196d, +0x1970, 0x1974, +0x1980, 0x19ab, +0x19b0, 0x19c9, +0x19d0, 0x19d9, +0x1a00, 0x1a1b, +0x1a20, 0x1a5e, +0x1a61, 0x1a74, +0x1a80, 0x1a89, +0x1a90, 0x1a99, +0x1aa7, 0x1aa7, +0x1b00, 0x1b33, +0x1b35, 0x1b43, +0x1b45, 0x1b4b, +0x1b50, 0x1b59, +0x1b80, 0x1ba9, +0x1bac, 0x1be5, +0x1be7, 0x1bf1, +0x1c00, 0x1c35, +0x1c40, 0x1c49, +0x1c4d, 0x1c7d, +0x1c80, 0x1c88, +0x1c90, 0x1cba, +0x1cbd, 0x1cbf, +0x1ce9, 0x1cec, +0x1cee, 0x1cf3, +0x1cf5, 0x1cf6, +0x1d00, 0x1dbf, +0x1de7, 0x1df4, +0x1e00, 0x1f15, +0x1f18, 0x1f1d, +0x1f20, 0x1f45, +0x1f48, 0x1f4d, +0x1f50, 0x1f57, +0x1f59, 0x1f59, +0x1f5b, 0x1f5b, +0x1f5d, 0x1f5d, +0x1f5f, 0x1f7d, +0x1f80, 0x1fb4, +0x1fb6, 0x1fbc, +0x1fbe, 0x1fbe, +0x1fc2, 0x1fc4, +0x1fc6, 0x1fcc, +0x1fd0, 0x1fd3, +0x1fd6, 0x1fdb, +0x1fe0, 0x1fec, +0x1ff2, 0x1ff4, +0x1ff6, 0x1ffc, +0x2071, 0x2071, +0x207f, 0x207f, +0x2090, 0x209c, +0x2102, 0x2102, +0x2107, 0x2107, +0x210a, 0x2113, +0x2115, 0x2115, +0x2119, 0x211d, +0x2124, 0x2124, +0x2126, 0x2126, +0x2128, 0x2128, +0x212a, 0x212d, +0x212f, 0x2139, +0x213c, 0x213f, +0x2145, 0x2149, +0x214e, 0x214e, +0x2160, 0x2188, +0x24b6, 0x24e9, +0x2c00, 0x2c2e, +0x2c30, 0x2c5e, +0x2c60, 0x2ce4, +0x2ceb, 0x2cee, +0x2cf2, 0x2cf3, +0x2d00, 0x2d25, +0x2d27, 0x2d27, +0x2d2d, 0x2d2d, +0x2d30, 0x2d67, +0x2d6f, 0x2d6f, +0x2d80, 0x2d96, +0x2da0, 0x2da6, +0x2da8, 0x2dae, +0x2db0, 0x2db6, +0x2db8, 0x2dbe, +0x2dc0, 0x2dc6, +0x2dc8, 0x2dce, +0x2dd0, 0x2dd6, +0x2dd8, 0x2dde, +0x2de0, 0x2dff, +0x2e2f, 0x2e2f, +0x3005, 0x3007, +0x3021, 0x3029, +0x3031, 0x3035, +0x3038, 0x303c, +0x3041, 0x3096, +0x309d, 0x309f, +0x30a1, 0x30fa, +0x30fc, 0x30ff, +0x3105, 0x312f, +0x3131, 0x318e, +0x31a0, 0x31ba, +0x31f0, 0x31ff, +0x3400, 0x4db5, +0x4e00, 0x9fef, +0xa000, 0xa48c, +0xa4d0, 0xa4fd, +0xa500, 0xa60c, +0xa610, 0xa62b, +0xa640, 0xa66e, +0xa674, 0xa67b, +0xa67f, 0xa6ef, +0xa717, 0xa71f, +0xa722, 0xa788, +0xa78b, 0xa7b9, +0xa7f7, 0xa801, +0xa803, 0xa805, +0xa807, 0xa80a, +0xa80c, 0xa827, +0xa840, 0xa873, +0xa880, 0xa8c3, +0xa8c5, 0xa8c5, +0xa8d0, 0xa8d9, +0xa8f2, 0xa8f7, +0xa8fb, 0xa8fb, +0xa8fd, 0xa8fe, +0xa900, 0xa92a, +0xa930, 0xa952, +0xa960, 0xa97c, +0xa980, 0xa9b2, +0xa9b4, 0xa9bf, +0xa9cf, 0xa9d9, +0xa9e0, 0xa9e4, +0xa9e6, 0xa9fe, +0xaa00, 0xaa36, +0xaa40, 0xaa4d, +0xaa50, 0xaa59, +0xaa60, 0xaa76, +0xaa7a, 0xaa7a, +0xaa7e, 0xaabe, +0xaac0, 0xaac0, +0xaac2, 0xaac2, +0xaadb, 0xaadd, +0xaae0, 0xaaef, +0xaaf2, 0xaaf5, +0xab01, 0xab06, +0xab09, 0xab0e, +0xab11, 0xab16, +0xab20, 0xab26, +0xab28, 0xab2e, +0xab30, 0xab5a, +0xab5c, 0xab65, +0xab70, 0xabea, +0xabf0, 0xabf9, +0xac00, 0xd7a3, +0xd7b0, 0xd7c6, +0xd7cb, 0xd7fb, +0xf900, 0xfa6d, +0xfa70, 0xfad9, +0xfb00, 0xfb06, +0xfb13, 0xfb17, +0xfb1d, 0xfb28, +0xfb2a, 0xfb36, +0xfb38, 0xfb3c, +0xfb3e, 0xfb3e, +0xfb40, 0xfb41, +0xfb43, 0xfb44, +0xfb46, 0xfbb1, +0xfbd3, 0xfd3d, +0xfd50, 0xfd8f, +0xfd92, 0xfdc7, +0xfdf0, 0xfdfb, +0xfe70, 0xfe74, +0xfe76, 0xfefc, +0xff10, 0xff19, +0xff21, 0xff3a, +0xff41, 0xff5a, +0xff66, 0xffbe, +0xffc2, 0xffc7, +0xffca, 0xffcf, +0xffd2, 0xffd7, +0xffda, 0xffdc, +0x10000, 0x1000b, +0x1000d, 0x10026, +0x10028, 0x1003a, +0x1003c, 0x1003d, +0x1003f, 0x1004d, +0x10050, 0x1005d, +0x10080, 0x100fa, +0x10140, 0x10174, +0x10280, 0x1029c, +0x102a0, 0x102d0, +0x10300, 0x1031f, +0x1032d, 0x1034a, +0x10350, 0x1037a, +0x10380, 0x1039d, +0x103a0, 0x103c3, +0x103c8, 0x103cf, +0x103d1, 0x103d5, +0x10400, 0x1049d, +0x104a0, 0x104a9, +0x104b0, 0x104d3, +0x104d8, 0x104fb, +0x10500, 0x10527, +0x10530, 0x10563, +0x10600, 0x10736, +0x10740, 0x10755, +0x10760, 0x10767, +0x10800, 0x10805, +0x10808, 0x10808, +0x1080a, 0x10835, +0x10837, 0x10838, +0x1083c, 0x1083c, +0x1083f, 0x10855, +0x10860, 0x10876, +0x10880, 0x1089e, +0x108e0, 0x108f2, +0x108f4, 0x108f5, +0x10900, 0x10915, +0x10920, 0x10939, +0x10980, 0x109b7, +0x109be, 0x109bf, +0x10a00, 0x10a03, +0x10a05, 0x10a06, +0x10a0c, 0x10a13, +0x10a15, 0x10a17, +0x10a19, 0x10a35, +0x10a60, 0x10a7c, +0x10a80, 0x10a9c, +0x10ac0, 0x10ac7, +0x10ac9, 0x10ae4, +0x10b00, 0x10b35, +0x10b40, 0x10b55, +0x10b60, 0x10b72, +0x10b80, 0x10b91, +0x10c00, 0x10c48, +0x10c80, 0x10cb2, +0x10cc0, 0x10cf2, +0x10d00, 0x10d27, +0x10d30, 0x10d39, +0x10f00, 0x10f1c, +0x10f27, 0x10f27, +0x10f30, 0x10f45, +0x11000, 0x11045, +0x11066, 0x1106f, +0x11082, 0x110b8, +0x110d0, 0x110e8, +0x110f0, 0x110f9, +0x11100, 0x11132, +0x11136, 0x1113f, +0x11144, 0x11146, +0x11150, 0x11172, +0x11176, 0x11176, +0x11180, 0x111bf, +0x111c1, 0x111c4, +0x111d0, 0x111da, +0x111dc, 0x111dc, +0x11200, 0x11211, +0x11213, 0x11234, +0x11237, 0x11237, +0x1123e, 0x1123e, +0x11280, 0x11286, +0x11288, 0x11288, +0x1128a, 0x1128d, +0x1128f, 0x1129d, +0x1129f, 0x112a8, +0x112b0, 0x112e8, +0x112f0, 0x112f9, +0x11300, 0x11303, +0x11305, 0x1130c, +0x1130f, 0x11310, +0x11313, 0x11328, +0x1132a, 0x11330, +0x11332, 0x11333, +0x11335, 0x11339, +0x1133d, 0x11344, +0x11347, 0x11348, +0x1134b, 0x1134c, +0x11350, 0x11350, +0x11357, 0x11357, +0x1135d, 0x11363, +0x11400, 0x11441, +0x11443, 0x11445, +0x11447, 0x1144a, +0x11450, 0x11459, +0x11480, 0x114c1, +0x114c4, 0x114c5, +0x114c7, 0x114c7, +0x114d0, 0x114d9, +0x11580, 0x115b5, +0x115b8, 0x115be, +0x115d8, 0x115dd, +0x11600, 0x1163e, +0x11640, 0x11640, +0x11644, 0x11644, +0x11650, 0x11659, +0x11680, 0x116b5, +0x116c0, 0x116c9, +0x11700, 0x1171a, +0x1171d, 0x1172a, +0x11730, 0x11739, +0x11800, 0x11838, +0x118a0, 0x118e9, +0x118ff, 0x118ff, +0x11a00, 0x11a32, +0x11a35, 0x11a3e, +0x11a50, 0x11a83, +0x11a86, 0x11a97, +0x11a9d, 0x11a9d, +0x11ac0, 0x11af8, +0x11c00, 0x11c08, +0x11c0a, 0x11c36, +0x11c38, 0x11c3e, +0x11c40, 0x11c40, +0x11c50, 0x11c59, +0x11c72, 0x11c8f, +0x11c92, 0x11ca7, +0x11ca9, 0x11cb6, +0x11d00, 0x11d06, +0x11d08, 0x11d09, +0x11d0b, 0x11d36, +0x11d3a, 0x11d3a, +0x11d3c, 0x11d3d, +0x11d3f, 0x11d41, +0x11d43, 0x11d43, +0x11d46, 0x11d47, +0x11d50, 0x11d59, +0x11d60, 0x11d65, +0x11d67, 0x11d68, +0x11d6a, 0x11d8e, +0x11d90, 0x11d91, +0x11d93, 0x11d96, +0x11d98, 0x11d98, +0x11da0, 0x11da9, +0x11ee0, 0x11ef6, +0x12000, 0x12399, +0x12400, 0x1246e, +0x12480, 0x12543, +0x13000, 0x1342e, +0x14400, 0x14646, +0x16800, 0x16a38, +0x16a40, 0x16a5e, +0x16a60, 0x16a69, +0x16ad0, 0x16aed, +0x16b00, 0x16b36, +0x16b40, 0x16b43, +0x16b50, 0x16b59, +0x16b63, 0x16b77, +0x16b7d, 0x16b8f, +0x16e40, 0x16e7f, +0x16f00, 0x16f44, +0x16f50, 0x16f7e, +0x16f93, 0x16f9f, +0x16fe0, 0x16fe1, +0x17000, 0x187f1, +0x18800, 0x18af2, +0x1b000, 0x1b11e, +0x1b170, 0x1b2fb, +0x1bc00, 0x1bc6a, +0x1bc70, 0x1bc7c, +0x1bc80, 0x1bc88, +0x1bc90, 0x1bc99, +0x1bc9e, 0x1bc9e, +0x1d400, 0x1d454, +0x1d456, 0x1d49c, +0x1d49e, 0x1d49f, +0x1d4a2, 0x1d4a2, +0x1d4a5, 0x1d4a6, +0x1d4a9, 0x1d4ac, +0x1d4ae, 0x1d4b9, +0x1d4bb, 0x1d4bb, +0x1d4bd, 0x1d4c3, +0x1d4c5, 0x1d505, +0x1d507, 0x1d50a, +0x1d50d, 0x1d514, +0x1d516, 0x1d51c, +0x1d51e, 0x1d539, +0x1d53b, 0x1d53e, +0x1d540, 0x1d544, +0x1d546, 0x1d546, +0x1d54a, 0x1d550, +0x1d552, 0x1d6a5, +0x1d6a8, 0x1d6c0, +0x1d6c2, 0x1d6da, +0x1d6dc, 0x1d6fa, +0x1d6fc, 0x1d714, +0x1d716, 0x1d734, +0x1d736, 0x1d74e, +0x1d750, 0x1d76e, +0x1d770, 0x1d788, +0x1d78a, 0x1d7a8, +0x1d7aa, 0x1d7c2, +0x1d7c4, 0x1d7cb, +0x1d7ce, 0x1d7ff, +0x1e000, 0x1e006, +0x1e008, 0x1e018, +0x1e01b, 0x1e021, +0x1e023, 0x1e024, +0x1e026, 0x1e02a, +0x1e800, 0x1e8c4, +0x1e900, 0x1e943, +0x1e947, 0x1e947, +0x1e950, 0x1e959, +0x1ee00, 0x1ee03, +0x1ee05, 0x1ee1f, +0x1ee21, 0x1ee22, +0x1ee24, 0x1ee24, +0x1ee27, 0x1ee27, +0x1ee29, 0x1ee32, +0x1ee34, 0x1ee37, +0x1ee39, 0x1ee39, +0x1ee3b, 0x1ee3b, +0x1ee42, 0x1ee42, +0x1ee47, 0x1ee47, +0x1ee49, 0x1ee49, +0x1ee4b, 0x1ee4b, +0x1ee4d, 0x1ee4f, +0x1ee51, 0x1ee52, +0x1ee54, 0x1ee54, +0x1ee57, 0x1ee57, +0x1ee59, 0x1ee59, +0x1ee5b, 0x1ee5b, +0x1ee5d, 0x1ee5d, +0x1ee5f, 0x1ee5f, +0x1ee61, 0x1ee62, +0x1ee64, 0x1ee64, +0x1ee67, 0x1ee6a, +0x1ee6c, 0x1ee72, +0x1ee74, 0x1ee77, +0x1ee79, 0x1ee7c, +0x1ee7e, 0x1ee7e, +0x1ee80, 0x1ee89, +0x1ee8b, 0x1ee9b, +0x1eea1, 0x1eea3, +0x1eea5, 0x1eea9, +0x1eeab, 0x1eebb, +0x1f130, 0x1f149, +0x1f150, 0x1f169, +0x1f170, 0x1f189, +0x20000, 0x2a6d6, +0x2a700, 0x2b734, +0x2b740, 0x2b81d, +0x2b820, 0x2cea1, +0x2ceb0, 0x2ebe0, +0x2f800, 0x2fa1d, +}; /* END of CR_Alnum */ + +/* PROPERTY: 'ASCII': POSIX [[:ASCII:]] */ +static const OnigCodePoint +CR_ASCII[] = { 1, +0x0000, 0x007f, +}; /* END of CR_ASCII */ + + +/* PROPERTY: 'ASCII_Hex_Digit': Binary Property */ +#define CR_ASCII_Hex_Digit CR_XDigit + +/* PROPERTY: 'Adlam': Script */ +static const OnigCodePoint +CR_Adlam[] = { 3, +0x1e900, 0x1e94a, +0x1e950, 0x1e959, +0x1e95e, 0x1e95f, +}; /* END of CR_Adlam */ + +/* PROPERTY: 'Ahom': Script */ +static const OnigCodePoint +CR_Ahom[] = { 3, +0x11700, 0x1171a, +0x1171d, 0x1172b, +0x11730, 0x1173f, +}; /* END of CR_Ahom */ + +/* PROPERTY: 'Alphabetic': Derived Property */ +#define CR_Alphabetic CR_Alpha + +/* PROPERTY: 'Anatolian_Hieroglyphs': Script */ +static const OnigCodePoint +CR_Anatolian_Hieroglyphs[] = { 1, +0x14400, 0x14646, +}; /* END of CR_Anatolian_Hieroglyphs */ + +/* PROPERTY: 'Any': - */ +static const OnigCodePoint +CR_Any[] = { 1, +0x0000, 0x10ffff, +}; /* END of CR_Any */ + +/* PROPERTY: 'Arabic': Script */ +static const OnigCodePoint +CR_Arabic[] = { 57, +0x0600, 0x0604, +0x0606, 0x060b, +0x060d, 0x061a, +0x061c, 0x061c, +0x061e, 0x061e, +0x0620, 0x063f, +0x0641, 0x064a, +0x0656, 0x066f, +0x0671, 0x06dc, +0x06de, 0x06ff, +0x0750, 0x077f, +0x08a0, 0x08b4, +0x08b6, 0x08bd, +0x08d3, 0x08e1, +0x08e3, 0x08ff, +0xfb50, 0xfbc1, +0xfbd3, 0xfd3d, +0xfd50, 0xfd8f, +0xfd92, 0xfdc7, +0xfdf0, 0xfdfd, +0xfe70, 0xfe74, +0xfe76, 0xfefc, +0x10e60, 0x10e7e, +0x1ee00, 0x1ee03, +0x1ee05, 0x1ee1f, +0x1ee21, 0x1ee22, +0x1ee24, 0x1ee24, +0x1ee27, 0x1ee27, +0x1ee29, 0x1ee32, +0x1ee34, 0x1ee37, +0x1ee39, 0x1ee39, +0x1ee3b, 0x1ee3b, +0x1ee42, 0x1ee42, +0x1ee47, 0x1ee47, +0x1ee49, 0x1ee49, +0x1ee4b, 0x1ee4b, +0x1ee4d, 0x1ee4f, +0x1ee51, 0x1ee52, +0x1ee54, 0x1ee54, +0x1ee57, 0x1ee57, +0x1ee59, 0x1ee59, +0x1ee5b, 0x1ee5b, +0x1ee5d, 0x1ee5d, +0x1ee5f, 0x1ee5f, +0x1ee61, 0x1ee62, +0x1ee64, 0x1ee64, +0x1ee67, 0x1ee6a, +0x1ee6c, 0x1ee72, +0x1ee74, 0x1ee77, +0x1ee79, 0x1ee7c, +0x1ee7e, 0x1ee7e, +0x1ee80, 0x1ee89, +0x1ee8b, 0x1ee9b, +0x1eea1, 0x1eea3, +0x1eea5, 0x1eea9, +0x1eeab, 0x1eebb, +0x1eef0, 0x1eef1, +}; /* END of CR_Arabic */ + +/* PROPERTY: 'Armenian': Script */ +static const OnigCodePoint +CR_Armenian[] = { 5, +0x0531, 0x0556, +0x0559, 0x0588, +0x058a, 0x058a, +0x058d, 0x058f, +0xfb13, 0xfb17, +}; /* END of CR_Armenian */ + +/* PROPERTY: 'Assigned': - */ +static const OnigCodePoint +CR_Assigned[] = { 658, +0x0000, 0x0377, +0x037a, 0x037f, +0x0384, 0x038a, +0x038c, 0x038c, +0x038e, 0x03a1, +0x03a3, 0x052f, +0x0531, 0x0556, +0x0559, 0x058a, +0x058d, 0x058f, +0x0591, 0x05c7, +0x05d0, 0x05ea, +0x05ef, 0x05f4, +0x0600, 0x061c, +0x061e, 0x070d, +0x070f, 0x074a, +0x074d, 0x07b1, +0x07c0, 0x07fa, +0x07fd, 0x082d, +0x0830, 0x083e, +0x0840, 0x085b, +0x085e, 0x085e, +0x0860, 0x086a, +0x08a0, 0x08b4, +0x08b6, 0x08bd, +0x08d3, 0x0983, +0x0985, 0x098c, +0x098f, 0x0990, +0x0993, 0x09a8, +0x09aa, 0x09b0, +0x09b2, 0x09b2, +0x09b6, 0x09b9, +0x09bc, 0x09c4, +0x09c7, 0x09c8, +0x09cb, 0x09ce, +0x09d7, 0x09d7, +0x09dc, 0x09dd, +0x09df, 0x09e3, +0x09e6, 0x09fe, +0x0a01, 0x0a03, +0x0a05, 0x0a0a, +0x0a0f, 0x0a10, +0x0a13, 0x0a28, +0x0a2a, 0x0a30, +0x0a32, 0x0a33, +0x0a35, 0x0a36, +0x0a38, 0x0a39, +0x0a3c, 0x0a3c, +0x0a3e, 0x0a42, +0x0a47, 0x0a48, +0x0a4b, 0x0a4d, +0x0a51, 0x0a51, +0x0a59, 0x0a5c, +0x0a5e, 0x0a5e, +0x0a66, 0x0a76, +0x0a81, 0x0a83, +0x0a85, 0x0a8d, +0x0a8f, 0x0a91, +0x0a93, 0x0aa8, +0x0aaa, 0x0ab0, +0x0ab2, 0x0ab3, +0x0ab5, 0x0ab9, +0x0abc, 0x0ac5, +0x0ac7, 0x0ac9, +0x0acb, 0x0acd, +0x0ad0, 0x0ad0, +0x0ae0, 0x0ae3, +0x0ae6, 0x0af1, +0x0af9, 0x0aff, +0x0b01, 0x0b03, +0x0b05, 0x0b0c, +0x0b0f, 0x0b10, +0x0b13, 0x0b28, +0x0b2a, 0x0b30, +0x0b32, 0x0b33, +0x0b35, 0x0b39, +0x0b3c, 0x0b44, +0x0b47, 0x0b48, +0x0b4b, 0x0b4d, +0x0b56, 0x0b57, +0x0b5c, 0x0b5d, +0x0b5f, 0x0b63, +0x0b66, 0x0b77, +0x0b82, 0x0b83, +0x0b85, 0x0b8a, +0x0b8e, 0x0b90, +0x0b92, 0x0b95, +0x0b99, 0x0b9a, +0x0b9c, 0x0b9c, +0x0b9e, 0x0b9f, +0x0ba3, 0x0ba4, +0x0ba8, 0x0baa, +0x0bae, 0x0bb9, +0x0bbe, 0x0bc2, +0x0bc6, 0x0bc8, +0x0bca, 0x0bcd, +0x0bd0, 0x0bd0, +0x0bd7, 0x0bd7, +0x0be6, 0x0bfa, +0x0c00, 0x0c0c, +0x0c0e, 0x0c10, +0x0c12, 0x0c28, +0x0c2a, 0x0c39, +0x0c3d, 0x0c44, +0x0c46, 0x0c48, +0x0c4a, 0x0c4d, +0x0c55, 0x0c56, +0x0c58, 0x0c5a, +0x0c60, 0x0c63, +0x0c66, 0x0c6f, +0x0c78, 0x0c8c, +0x0c8e, 0x0c90, +0x0c92, 0x0ca8, +0x0caa, 0x0cb3, +0x0cb5, 0x0cb9, +0x0cbc, 0x0cc4, +0x0cc6, 0x0cc8, +0x0cca, 0x0ccd, +0x0cd5, 0x0cd6, +0x0cde, 0x0cde, +0x0ce0, 0x0ce3, +0x0ce6, 0x0cef, +0x0cf1, 0x0cf2, +0x0d00, 0x0d03, +0x0d05, 0x0d0c, +0x0d0e, 0x0d10, +0x0d12, 0x0d44, +0x0d46, 0x0d48, +0x0d4a, 0x0d4f, +0x0d54, 0x0d63, +0x0d66, 0x0d7f, +0x0d82, 0x0d83, +0x0d85, 0x0d96, +0x0d9a, 0x0db1, +0x0db3, 0x0dbb, +0x0dbd, 0x0dbd, +0x0dc0, 0x0dc6, +0x0dca, 0x0dca, +0x0dcf, 0x0dd4, +0x0dd6, 0x0dd6, +0x0dd8, 0x0ddf, +0x0de6, 0x0def, +0x0df2, 0x0df4, +0x0e01, 0x0e3a, +0x0e3f, 0x0e5b, +0x0e81, 0x0e82, +0x0e84, 0x0e84, +0x0e87, 0x0e88, +0x0e8a, 0x0e8a, +0x0e8d, 0x0e8d, +0x0e94, 0x0e97, +0x0e99, 0x0e9f, +0x0ea1, 0x0ea3, +0x0ea5, 0x0ea5, +0x0ea7, 0x0ea7, +0x0eaa, 0x0eab, +0x0ead, 0x0eb9, +0x0ebb, 0x0ebd, +0x0ec0, 0x0ec4, +0x0ec6, 0x0ec6, +0x0ec8, 0x0ecd, +0x0ed0, 0x0ed9, +0x0edc, 0x0edf, +0x0f00, 0x0f47, +0x0f49, 0x0f6c, +0x0f71, 0x0f97, +0x0f99, 0x0fbc, +0x0fbe, 0x0fcc, +0x0fce, 0x0fda, +0x1000, 0x10c5, +0x10c7, 0x10c7, +0x10cd, 0x10cd, +0x10d0, 0x1248, +0x124a, 0x124d, +0x1250, 0x1256, +0x1258, 0x1258, +0x125a, 0x125d, +0x1260, 0x1288, +0x128a, 0x128d, +0x1290, 0x12b0, +0x12b2, 0x12b5, +0x12b8, 0x12be, +0x12c0, 0x12c0, +0x12c2, 0x12c5, +0x12c8, 0x12d6, +0x12d8, 0x1310, +0x1312, 0x1315, +0x1318, 0x135a, +0x135d, 0x137c, +0x1380, 0x1399, +0x13a0, 0x13f5, +0x13f8, 0x13fd, +0x1400, 0x169c, +0x16a0, 0x16f8, +0x1700, 0x170c, +0x170e, 0x1714, +0x1720, 0x1736, +0x1740, 0x1753, +0x1760, 0x176c, +0x176e, 0x1770, +0x1772, 0x1773, +0x1780, 0x17dd, +0x17e0, 0x17e9, +0x17f0, 0x17f9, +0x1800, 0x180e, +0x1810, 0x1819, +0x1820, 0x1878, +0x1880, 0x18aa, +0x18b0, 0x18f5, +0x1900, 0x191e, +0x1920, 0x192b, +0x1930, 0x193b, +0x1940, 0x1940, +0x1944, 0x196d, +0x1970, 0x1974, +0x1980, 0x19ab, +0x19b0, 0x19c9, +0x19d0, 0x19da, +0x19de, 0x1a1b, +0x1a1e, 0x1a5e, +0x1a60, 0x1a7c, +0x1a7f, 0x1a89, +0x1a90, 0x1a99, +0x1aa0, 0x1aad, +0x1ab0, 0x1abe, +0x1b00, 0x1b4b, +0x1b50, 0x1b7c, +0x1b80, 0x1bf3, +0x1bfc, 0x1c37, +0x1c3b, 0x1c49, +0x1c4d, 0x1c88, +0x1c90, 0x1cba, +0x1cbd, 0x1cc7, +0x1cd0, 0x1cf9, +0x1d00, 0x1df9, +0x1dfb, 0x1f15, +0x1f18, 0x1f1d, +0x1f20, 0x1f45, +0x1f48, 0x1f4d, +0x1f50, 0x1f57, +0x1f59, 0x1f59, +0x1f5b, 0x1f5b, +0x1f5d, 0x1f5d, +0x1f5f, 0x1f7d, +0x1f80, 0x1fb4, +0x1fb6, 0x1fc4, +0x1fc6, 0x1fd3, +0x1fd6, 0x1fdb, +0x1fdd, 0x1fef, +0x1ff2, 0x1ff4, +0x1ff6, 0x1ffe, +0x2000, 0x2064, +0x2066, 0x2071, +0x2074, 0x208e, +0x2090, 0x209c, +0x20a0, 0x20bf, +0x20d0, 0x20f0, +0x2100, 0x218b, +0x2190, 0x2426, +0x2440, 0x244a, +0x2460, 0x2b73, +0x2b76, 0x2b95, +0x2b98, 0x2bc8, +0x2bca, 0x2bfe, +0x2c00, 0x2c2e, +0x2c30, 0x2c5e, +0x2c60, 0x2cf3, +0x2cf9, 0x2d25, +0x2d27, 0x2d27, +0x2d2d, 0x2d2d, +0x2d30, 0x2d67, +0x2d6f, 0x2d70, +0x2d7f, 0x2d96, +0x2da0, 0x2da6, +0x2da8, 0x2dae, +0x2db0, 0x2db6, +0x2db8, 0x2dbe, +0x2dc0, 0x2dc6, +0x2dc8, 0x2dce, +0x2dd0, 0x2dd6, +0x2dd8, 0x2dde, +0x2de0, 0x2e4e, +0x2e80, 0x2e99, +0x2e9b, 0x2ef3, +0x2f00, 0x2fd5, +0x2ff0, 0x2ffb, +0x3000, 0x303f, +0x3041, 0x3096, +0x3099, 0x30ff, +0x3105, 0x312f, +0x3131, 0x318e, +0x3190, 0x31ba, +0x31c0, 0x31e3, +0x31f0, 0x321e, +0x3220, 0x32fe, +0x3300, 0x4db5, +0x4dc0, 0x9fef, +0xa000, 0xa48c, +0xa490, 0xa4c6, +0xa4d0, 0xa62b, +0xa640, 0xa6f7, +0xa700, 0xa7b9, +0xa7f7, 0xa82b, +0xa830, 0xa839, +0xa840, 0xa877, +0xa880, 0xa8c5, +0xa8ce, 0xa8d9, +0xa8e0, 0xa953, +0xa95f, 0xa97c, +0xa980, 0xa9cd, +0xa9cf, 0xa9d9, +0xa9de, 0xa9fe, +0xaa00, 0xaa36, +0xaa40, 0xaa4d, +0xaa50, 0xaa59, +0xaa5c, 0xaac2, +0xaadb, 0xaaf6, +0xab01, 0xab06, +0xab09, 0xab0e, +0xab11, 0xab16, +0xab20, 0xab26, +0xab28, 0xab2e, +0xab30, 0xab65, +0xab70, 0xabed, +0xabf0, 0xabf9, +0xac00, 0xd7a3, +0xd7b0, 0xd7c6, +0xd7cb, 0xd7fb, +0xd800, 0xfa6d, +0xfa70, 0xfad9, +0xfb00, 0xfb06, +0xfb13, 0xfb17, +0xfb1d, 0xfb36, +0xfb38, 0xfb3c, +0xfb3e, 0xfb3e, +0xfb40, 0xfb41, +0xfb43, 0xfb44, +0xfb46, 0xfbc1, +0xfbd3, 0xfd3f, +0xfd50, 0xfd8f, +0xfd92, 0xfdc7, +0xfdf0, 0xfdfd, +0xfe00, 0xfe19, +0xfe20, 0xfe52, +0xfe54, 0xfe66, +0xfe68, 0xfe6b, +0xfe70, 0xfe74, +0xfe76, 0xfefc, +0xfeff, 0xfeff, +0xff01, 0xffbe, +0xffc2, 0xffc7, +0xffca, 0xffcf, +0xffd2, 0xffd7, +0xffda, 0xffdc, +0xffe0, 0xffe6, +0xffe8, 0xffee, +0xfff9, 0xfffd, +0x10000, 0x1000b, +0x1000d, 0x10026, +0x10028, 0x1003a, +0x1003c, 0x1003d, +0x1003f, 0x1004d, +0x10050, 0x1005d, +0x10080, 0x100fa, +0x10100, 0x10102, +0x10107, 0x10133, +0x10137, 0x1018e, +0x10190, 0x1019b, +0x101a0, 0x101a0, +0x101d0, 0x101fd, +0x10280, 0x1029c, +0x102a0, 0x102d0, +0x102e0, 0x102fb, +0x10300, 0x10323, +0x1032d, 0x1034a, +0x10350, 0x1037a, +0x10380, 0x1039d, +0x1039f, 0x103c3, +0x103c8, 0x103d5, +0x10400, 0x1049d, +0x104a0, 0x104a9, +0x104b0, 0x104d3, +0x104d8, 0x104fb, +0x10500, 0x10527, +0x10530, 0x10563, +0x1056f, 0x1056f, +0x10600, 0x10736, +0x10740, 0x10755, +0x10760, 0x10767, +0x10800, 0x10805, +0x10808, 0x10808, +0x1080a, 0x10835, +0x10837, 0x10838, +0x1083c, 0x1083c, +0x1083f, 0x10855, +0x10857, 0x1089e, +0x108a7, 0x108af, +0x108e0, 0x108f2, +0x108f4, 0x108f5, +0x108fb, 0x1091b, +0x1091f, 0x10939, +0x1093f, 0x1093f, +0x10980, 0x109b7, +0x109bc, 0x109cf, +0x109d2, 0x10a03, +0x10a05, 0x10a06, +0x10a0c, 0x10a13, +0x10a15, 0x10a17, +0x10a19, 0x10a35, +0x10a38, 0x10a3a, +0x10a3f, 0x10a48, +0x10a50, 0x10a58, +0x10a60, 0x10a9f, +0x10ac0, 0x10ae6, +0x10aeb, 0x10af6, +0x10b00, 0x10b35, +0x10b39, 0x10b55, +0x10b58, 0x10b72, +0x10b78, 0x10b91, +0x10b99, 0x10b9c, +0x10ba9, 0x10baf, +0x10c00, 0x10c48, +0x10c80, 0x10cb2, +0x10cc0, 0x10cf2, +0x10cfa, 0x10d27, +0x10d30, 0x10d39, +0x10e60, 0x10e7e, +0x10f00, 0x10f27, +0x10f30, 0x10f59, +0x11000, 0x1104d, +0x11052, 0x1106f, +0x1107f, 0x110c1, +0x110cd, 0x110cd, +0x110d0, 0x110e8, +0x110f0, 0x110f9, +0x11100, 0x11134, +0x11136, 0x11146, +0x11150, 0x11176, +0x11180, 0x111cd, +0x111d0, 0x111df, +0x111e1, 0x111f4, +0x11200, 0x11211, +0x11213, 0x1123e, +0x11280, 0x11286, +0x11288, 0x11288, +0x1128a, 0x1128d, +0x1128f, 0x1129d, +0x1129f, 0x112a9, +0x112b0, 0x112ea, +0x112f0, 0x112f9, +0x11300, 0x11303, +0x11305, 0x1130c, +0x1130f, 0x11310, +0x11313, 0x11328, +0x1132a, 0x11330, +0x11332, 0x11333, +0x11335, 0x11339, +0x1133b, 0x11344, +0x11347, 0x11348, +0x1134b, 0x1134d, +0x11350, 0x11350, +0x11357, 0x11357, +0x1135d, 0x11363, +0x11366, 0x1136c, +0x11370, 0x11374, +0x11400, 0x11459, +0x1145b, 0x1145b, +0x1145d, 0x1145e, +0x11480, 0x114c7, +0x114d0, 0x114d9, +0x11580, 0x115b5, +0x115b8, 0x115dd, +0x11600, 0x11644, +0x11650, 0x11659, +0x11660, 0x1166c, +0x11680, 0x116b7, +0x116c0, 0x116c9, +0x11700, 0x1171a, +0x1171d, 0x1172b, +0x11730, 0x1173f, +0x11800, 0x1183b, +0x118a0, 0x118f2, +0x118ff, 0x118ff, +0x11a00, 0x11a47, +0x11a50, 0x11a83, +0x11a86, 0x11aa2, +0x11ac0, 0x11af8, +0x11c00, 0x11c08, +0x11c0a, 0x11c36, +0x11c38, 0x11c45, +0x11c50, 0x11c6c, +0x11c70, 0x11c8f, +0x11c92, 0x11ca7, +0x11ca9, 0x11cb6, +0x11d00, 0x11d06, +0x11d08, 0x11d09, +0x11d0b, 0x11d36, +0x11d3a, 0x11d3a, +0x11d3c, 0x11d3d, +0x11d3f, 0x11d47, +0x11d50, 0x11d59, +0x11d60, 0x11d65, +0x11d67, 0x11d68, +0x11d6a, 0x11d8e, +0x11d90, 0x11d91, +0x11d93, 0x11d98, +0x11da0, 0x11da9, +0x11ee0, 0x11ef8, +0x12000, 0x12399, +0x12400, 0x1246e, +0x12470, 0x12474, +0x12480, 0x12543, +0x13000, 0x1342e, +0x14400, 0x14646, +0x16800, 0x16a38, +0x16a40, 0x16a5e, +0x16a60, 0x16a69, +0x16a6e, 0x16a6f, +0x16ad0, 0x16aed, +0x16af0, 0x16af5, +0x16b00, 0x16b45, +0x16b50, 0x16b59, +0x16b5b, 0x16b61, +0x16b63, 0x16b77, +0x16b7d, 0x16b8f, +0x16e40, 0x16e9a, +0x16f00, 0x16f44, +0x16f50, 0x16f7e, +0x16f8f, 0x16f9f, +0x16fe0, 0x16fe1, +0x17000, 0x187f1, +0x18800, 0x18af2, +0x1b000, 0x1b11e, +0x1b170, 0x1b2fb, +0x1bc00, 0x1bc6a, +0x1bc70, 0x1bc7c, +0x1bc80, 0x1bc88, +0x1bc90, 0x1bc99, +0x1bc9c, 0x1bca3, +0x1d000, 0x1d0f5, +0x1d100, 0x1d126, +0x1d129, 0x1d1e8, +0x1d200, 0x1d245, +0x1d2e0, 0x1d2f3, +0x1d300, 0x1d356, +0x1d360, 0x1d378, +0x1d400, 0x1d454, +0x1d456, 0x1d49c, +0x1d49e, 0x1d49f, +0x1d4a2, 0x1d4a2, +0x1d4a5, 0x1d4a6, +0x1d4a9, 0x1d4ac, +0x1d4ae, 0x1d4b9, +0x1d4bb, 0x1d4bb, +0x1d4bd, 0x1d4c3, +0x1d4c5, 0x1d505, +0x1d507, 0x1d50a, +0x1d50d, 0x1d514, +0x1d516, 0x1d51c, +0x1d51e, 0x1d539, +0x1d53b, 0x1d53e, +0x1d540, 0x1d544, +0x1d546, 0x1d546, +0x1d54a, 0x1d550, +0x1d552, 0x1d6a5, +0x1d6a8, 0x1d7cb, +0x1d7ce, 0x1da8b, +0x1da9b, 0x1da9f, +0x1daa1, 0x1daaf, +0x1e000, 0x1e006, +0x1e008, 0x1e018, +0x1e01b, 0x1e021, +0x1e023, 0x1e024, +0x1e026, 0x1e02a, +0x1e800, 0x1e8c4, +0x1e8c7, 0x1e8d6, +0x1e900, 0x1e94a, +0x1e950, 0x1e959, +0x1e95e, 0x1e95f, +0x1ec71, 0x1ecb4, +0x1ee00, 0x1ee03, +0x1ee05, 0x1ee1f, +0x1ee21, 0x1ee22, +0x1ee24, 0x1ee24, +0x1ee27, 0x1ee27, +0x1ee29, 0x1ee32, +0x1ee34, 0x1ee37, +0x1ee39, 0x1ee39, +0x1ee3b, 0x1ee3b, +0x1ee42, 0x1ee42, +0x1ee47, 0x1ee47, +0x1ee49, 0x1ee49, +0x1ee4b, 0x1ee4b, +0x1ee4d, 0x1ee4f, +0x1ee51, 0x1ee52, +0x1ee54, 0x1ee54, +0x1ee57, 0x1ee57, +0x1ee59, 0x1ee59, +0x1ee5b, 0x1ee5b, +0x1ee5d, 0x1ee5d, +0x1ee5f, 0x1ee5f, +0x1ee61, 0x1ee62, +0x1ee64, 0x1ee64, +0x1ee67, 0x1ee6a, +0x1ee6c, 0x1ee72, +0x1ee74, 0x1ee77, +0x1ee79, 0x1ee7c, +0x1ee7e, 0x1ee7e, +0x1ee80, 0x1ee89, +0x1ee8b, 0x1ee9b, +0x1eea1, 0x1eea3, +0x1eea5, 0x1eea9, +0x1eeab, 0x1eebb, +0x1eef0, 0x1eef1, +0x1f000, 0x1f02b, +0x1f030, 0x1f093, +0x1f0a0, 0x1f0ae, +0x1f0b1, 0x1f0bf, +0x1f0c1, 0x1f0cf, +0x1f0d1, 0x1f0f5, +0x1f100, 0x1f10c, +0x1f110, 0x1f16b, +0x1f170, 0x1f1ac, +0x1f1e6, 0x1f202, +0x1f210, 0x1f23b, +0x1f240, 0x1f248, +0x1f250, 0x1f251, +0x1f260, 0x1f265, +0x1f300, 0x1f6d4, +0x1f6e0, 0x1f6ec, +0x1f6f0, 0x1f6f9, +0x1f700, 0x1f773, +0x1f780, 0x1f7d8, +0x1f800, 0x1f80b, +0x1f810, 0x1f847, +0x1f850, 0x1f859, +0x1f860, 0x1f887, +0x1f890, 0x1f8ad, +0x1f900, 0x1f90b, +0x1f910, 0x1f93e, +0x1f940, 0x1f970, +0x1f973, 0x1f976, +0x1f97a, 0x1f97a, +0x1f97c, 0x1f9a2, +0x1f9b0, 0x1f9b9, +0x1f9c0, 0x1f9c2, +0x1f9d0, 0x1f9ff, +0x1fa60, 0x1fa6d, +0x20000, 0x2a6d6, +0x2a700, 0x2b734, +0x2b740, 0x2b81d, +0x2b820, 0x2cea1, +0x2ceb0, 0x2ebe0, +0x2f800, 0x2fa1d, +0xe0001, 0xe0001, +0xe0020, 0xe007f, +0xe0100, 0xe01ef, +0xf0000, 0xffffd, +0x100000, 0x10fffd, +}; /* END of CR_Assigned */ + +/* PROPERTY: 'Avestan': Script */ +static const OnigCodePoint +CR_Avestan[] = { 2, +0x10b00, 0x10b35, +0x10b39, 0x10b3f, +}; /* END of CR_Avestan */ + +/* PROPERTY: 'Balinese': Script */ +static const OnigCodePoint +CR_Balinese[] = { 2, +0x1b00, 0x1b4b, +0x1b50, 0x1b7c, +}; /* END of CR_Balinese */ + +/* PROPERTY: 'Bamum': Script */ +static const OnigCodePoint +CR_Bamum[] = { 2, +0xa6a0, 0xa6f7, +0x16800, 0x16a38, +}; /* END of CR_Bamum */ + +/* PROPERTY: 'Bassa_Vah': Script */ +static const OnigCodePoint +CR_Bassa_Vah[] = { 2, +0x16ad0, 0x16aed, +0x16af0, 0x16af5, +}; /* END of CR_Bassa_Vah */ + +/* PROPERTY: 'Batak': Script */ +static const OnigCodePoint +CR_Batak[] = { 2, +0x1bc0, 0x1bf3, +0x1bfc, 0x1bff, +}; /* END of CR_Batak */ + +/* PROPERTY: 'Bengali': Script */ +static const OnigCodePoint +CR_Bengali[] = { 14, +0x0980, 0x0983, +0x0985, 0x098c, +0x098f, 0x0990, +0x0993, 0x09a8, +0x09aa, 0x09b0, +0x09b2, 0x09b2, +0x09b6, 0x09b9, +0x09bc, 0x09c4, +0x09c7, 0x09c8, +0x09cb, 0x09ce, +0x09d7, 0x09d7, +0x09dc, 0x09dd, +0x09df, 0x09e3, +0x09e6, 0x09fe, +}; /* END of CR_Bengali */ + +/* PROPERTY: 'Bhaiksuki': Script */ +static const OnigCodePoint +CR_Bhaiksuki[] = { 4, +0x11c00, 0x11c08, +0x11c0a, 0x11c36, +0x11c38, 0x11c45, +0x11c50, 0x11c6c, +}; /* END of CR_Bhaiksuki */ + +/* PROPERTY: 'Bidi_Control': Binary Property */ +static const OnigCodePoint +CR_Bidi_Control[] = { 4, +0x061c, 0x061c, +0x200e, 0x200f, +0x202a, 0x202e, +0x2066, 0x2069, +}; /* END of CR_Bidi_Control */ + +/* PROPERTY: 'Bopomofo': Script */ +static const OnigCodePoint +CR_Bopomofo[] = { 3, +0x02ea, 0x02eb, +0x3105, 0x312f, +0x31a0, 0x31ba, +}; /* END of CR_Bopomofo */ + +/* PROPERTY: 'Brahmi': Script */ +static const OnigCodePoint +CR_Brahmi[] = { 3, +0x11000, 0x1104d, +0x11052, 0x1106f, +0x1107f, 0x1107f, +}; /* END of CR_Brahmi */ + +/* PROPERTY: 'Braille': Script */ +static const OnigCodePoint +CR_Braille[] = { 1, +0x2800, 0x28ff, +}; /* END of CR_Braille */ + +/* PROPERTY: 'Buginese': Script */ +static const OnigCodePoint +CR_Buginese[] = { 2, +0x1a00, 0x1a1b, +0x1a1e, 0x1a1f, +}; /* END of CR_Buginese */ + +/* PROPERTY: 'Buhid': Script */ +static const OnigCodePoint +CR_Buhid[] = { 1, +0x1740, 0x1753, +}; /* END of CR_Buhid */ + +/* PROPERTY: 'C': Major Category */ +static const OnigCodePoint +CR_C[] = { 661, +0x0000, 0x001f, +0x007f, 0x009f, +0x00ad, 0x00ad, +0x0378, 0x0379, +0x0380, 0x0383, +0x038b, 0x038b, +0x038d, 0x038d, +0x03a2, 0x03a2, +0x0530, 0x0530, +0x0557, 0x0558, +0x058b, 0x058c, +0x0590, 0x0590, +0x05c8, 0x05cf, +0x05eb, 0x05ee, +0x05f5, 0x0605, +0x061c, 0x061d, +0x06dd, 0x06dd, +0x070e, 0x070f, +0x074b, 0x074c, +0x07b2, 0x07bf, +0x07fb, 0x07fc, +0x082e, 0x082f, +0x083f, 0x083f, +0x085c, 0x085d, +0x085f, 0x085f, +0x086b, 0x089f, +0x08b5, 0x08b5, +0x08be, 0x08d2, +0x08e2, 0x08e2, +0x0984, 0x0984, +0x098d, 0x098e, +0x0991, 0x0992, +0x09a9, 0x09a9, +0x09b1, 0x09b1, +0x09b3, 0x09b5, +0x09ba, 0x09bb, +0x09c5, 0x09c6, +0x09c9, 0x09ca, +0x09cf, 0x09d6, +0x09d8, 0x09db, +0x09de, 0x09de, +0x09e4, 0x09e5, +0x09ff, 0x0a00, +0x0a04, 0x0a04, +0x0a0b, 0x0a0e, +0x0a11, 0x0a12, +0x0a29, 0x0a29, +0x0a31, 0x0a31, +0x0a34, 0x0a34, +0x0a37, 0x0a37, +0x0a3a, 0x0a3b, +0x0a3d, 0x0a3d, +0x0a43, 0x0a46, +0x0a49, 0x0a4a, +0x0a4e, 0x0a50, +0x0a52, 0x0a58, +0x0a5d, 0x0a5d, +0x0a5f, 0x0a65, +0x0a77, 0x0a80, +0x0a84, 0x0a84, +0x0a8e, 0x0a8e, +0x0a92, 0x0a92, +0x0aa9, 0x0aa9, +0x0ab1, 0x0ab1, +0x0ab4, 0x0ab4, +0x0aba, 0x0abb, +0x0ac6, 0x0ac6, +0x0aca, 0x0aca, +0x0ace, 0x0acf, +0x0ad1, 0x0adf, +0x0ae4, 0x0ae5, +0x0af2, 0x0af8, +0x0b00, 0x0b00, +0x0b04, 0x0b04, +0x0b0d, 0x0b0e, +0x0b11, 0x0b12, +0x0b29, 0x0b29, +0x0b31, 0x0b31, +0x0b34, 0x0b34, +0x0b3a, 0x0b3b, +0x0b45, 0x0b46, +0x0b49, 0x0b4a, +0x0b4e, 0x0b55, +0x0b58, 0x0b5b, +0x0b5e, 0x0b5e, +0x0b64, 0x0b65, +0x0b78, 0x0b81, +0x0b84, 0x0b84, +0x0b8b, 0x0b8d, +0x0b91, 0x0b91, +0x0b96, 0x0b98, +0x0b9b, 0x0b9b, +0x0b9d, 0x0b9d, +0x0ba0, 0x0ba2, +0x0ba5, 0x0ba7, +0x0bab, 0x0bad, +0x0bba, 0x0bbd, +0x0bc3, 0x0bc5, +0x0bc9, 0x0bc9, +0x0bce, 0x0bcf, +0x0bd1, 0x0bd6, +0x0bd8, 0x0be5, +0x0bfb, 0x0bff, +0x0c0d, 0x0c0d, +0x0c11, 0x0c11, +0x0c29, 0x0c29, +0x0c3a, 0x0c3c, +0x0c45, 0x0c45, +0x0c49, 0x0c49, +0x0c4e, 0x0c54, +0x0c57, 0x0c57, +0x0c5b, 0x0c5f, +0x0c64, 0x0c65, +0x0c70, 0x0c77, +0x0c8d, 0x0c8d, +0x0c91, 0x0c91, +0x0ca9, 0x0ca9, +0x0cb4, 0x0cb4, +0x0cba, 0x0cbb, +0x0cc5, 0x0cc5, +0x0cc9, 0x0cc9, +0x0cce, 0x0cd4, +0x0cd7, 0x0cdd, +0x0cdf, 0x0cdf, +0x0ce4, 0x0ce5, +0x0cf0, 0x0cf0, +0x0cf3, 0x0cff, +0x0d04, 0x0d04, +0x0d0d, 0x0d0d, +0x0d11, 0x0d11, +0x0d45, 0x0d45, +0x0d49, 0x0d49, +0x0d50, 0x0d53, +0x0d64, 0x0d65, +0x0d80, 0x0d81, +0x0d84, 0x0d84, +0x0d97, 0x0d99, +0x0db2, 0x0db2, +0x0dbc, 0x0dbc, +0x0dbe, 0x0dbf, +0x0dc7, 0x0dc9, +0x0dcb, 0x0dce, +0x0dd5, 0x0dd5, +0x0dd7, 0x0dd7, +0x0de0, 0x0de5, +0x0df0, 0x0df1, +0x0df5, 0x0e00, +0x0e3b, 0x0e3e, +0x0e5c, 0x0e80, +0x0e83, 0x0e83, +0x0e85, 0x0e86, +0x0e89, 0x0e89, +0x0e8b, 0x0e8c, +0x0e8e, 0x0e93, +0x0e98, 0x0e98, +0x0ea0, 0x0ea0, +0x0ea4, 0x0ea4, +0x0ea6, 0x0ea6, +0x0ea8, 0x0ea9, +0x0eac, 0x0eac, +0x0eba, 0x0eba, +0x0ebe, 0x0ebf, +0x0ec5, 0x0ec5, +0x0ec7, 0x0ec7, +0x0ece, 0x0ecf, +0x0eda, 0x0edb, +0x0ee0, 0x0eff, +0x0f48, 0x0f48, +0x0f6d, 0x0f70, +0x0f98, 0x0f98, +0x0fbd, 0x0fbd, +0x0fcd, 0x0fcd, +0x0fdb, 0x0fff, +0x10c6, 0x10c6, +0x10c8, 0x10cc, +0x10ce, 0x10cf, +0x1249, 0x1249, +0x124e, 0x124f, +0x1257, 0x1257, +0x1259, 0x1259, +0x125e, 0x125f, +0x1289, 0x1289, +0x128e, 0x128f, +0x12b1, 0x12b1, +0x12b6, 0x12b7, +0x12bf, 0x12bf, +0x12c1, 0x12c1, +0x12c6, 0x12c7, +0x12d7, 0x12d7, +0x1311, 0x1311, +0x1316, 0x1317, +0x135b, 0x135c, +0x137d, 0x137f, +0x139a, 0x139f, +0x13f6, 0x13f7, +0x13fe, 0x13ff, +0x169d, 0x169f, +0x16f9, 0x16ff, +0x170d, 0x170d, +0x1715, 0x171f, +0x1737, 0x173f, +0x1754, 0x175f, +0x176d, 0x176d, +0x1771, 0x1771, +0x1774, 0x177f, +0x17de, 0x17df, +0x17ea, 0x17ef, +0x17fa, 0x17ff, +0x180e, 0x180f, +0x181a, 0x181f, +0x1879, 0x187f, +0x18ab, 0x18af, +0x18f6, 0x18ff, +0x191f, 0x191f, +0x192c, 0x192f, +0x193c, 0x193f, +0x1941, 0x1943, +0x196e, 0x196f, +0x1975, 0x197f, +0x19ac, 0x19af, +0x19ca, 0x19cf, +0x19db, 0x19dd, +0x1a1c, 0x1a1d, +0x1a5f, 0x1a5f, +0x1a7d, 0x1a7e, +0x1a8a, 0x1a8f, +0x1a9a, 0x1a9f, +0x1aae, 0x1aaf, +0x1abf, 0x1aff, +0x1b4c, 0x1b4f, +0x1b7d, 0x1b7f, +0x1bf4, 0x1bfb, +0x1c38, 0x1c3a, +0x1c4a, 0x1c4c, +0x1c89, 0x1c8f, +0x1cbb, 0x1cbc, +0x1cc8, 0x1ccf, +0x1cfa, 0x1cff, +0x1dfa, 0x1dfa, +0x1f16, 0x1f17, +0x1f1e, 0x1f1f, +0x1f46, 0x1f47, +0x1f4e, 0x1f4f, +0x1f58, 0x1f58, +0x1f5a, 0x1f5a, +0x1f5c, 0x1f5c, +0x1f5e, 0x1f5e, +0x1f7e, 0x1f7f, +0x1fb5, 0x1fb5, +0x1fc5, 0x1fc5, +0x1fd4, 0x1fd5, +0x1fdc, 0x1fdc, +0x1ff0, 0x1ff1, +0x1ff5, 0x1ff5, +0x1fff, 0x1fff, +0x200b, 0x200f, +0x202a, 0x202e, +0x2060, 0x206f, +0x2072, 0x2073, +0x208f, 0x208f, +0x209d, 0x209f, +0x20c0, 0x20cf, +0x20f1, 0x20ff, +0x218c, 0x218f, +0x2427, 0x243f, +0x244b, 0x245f, +0x2b74, 0x2b75, +0x2b96, 0x2b97, +0x2bc9, 0x2bc9, +0x2bff, 0x2bff, +0x2c2f, 0x2c2f, +0x2c5f, 0x2c5f, +0x2cf4, 0x2cf8, +0x2d26, 0x2d26, +0x2d28, 0x2d2c, +0x2d2e, 0x2d2f, +0x2d68, 0x2d6e, +0x2d71, 0x2d7e, +0x2d97, 0x2d9f, +0x2da7, 0x2da7, +0x2daf, 0x2daf, +0x2db7, 0x2db7, +0x2dbf, 0x2dbf, +0x2dc7, 0x2dc7, +0x2dcf, 0x2dcf, +0x2dd7, 0x2dd7, +0x2ddf, 0x2ddf, +0x2e4f, 0x2e7f, +0x2e9a, 0x2e9a, +0x2ef4, 0x2eff, +0x2fd6, 0x2fef, +0x2ffc, 0x2fff, +0x3040, 0x3040, +0x3097, 0x3098, +0x3100, 0x3104, +0x3130, 0x3130, +0x318f, 0x318f, +0x31bb, 0x31bf, +0x31e4, 0x31ef, +0x321f, 0x321f, +0x32ff, 0x32ff, +0x4db6, 0x4dbf, +0x9ff0, 0x9fff, +0xa48d, 0xa48f, +0xa4c7, 0xa4cf, +0xa62c, 0xa63f, +0xa6f8, 0xa6ff, +0xa7ba, 0xa7f6, +0xa82c, 0xa82f, +0xa83a, 0xa83f, +0xa878, 0xa87f, +0xa8c6, 0xa8cd, +0xa8da, 0xa8df, +0xa954, 0xa95e, +0xa97d, 0xa97f, +0xa9ce, 0xa9ce, +0xa9da, 0xa9dd, +0xa9ff, 0xa9ff, +0xaa37, 0xaa3f, +0xaa4e, 0xaa4f, +0xaa5a, 0xaa5b, +0xaac3, 0xaada, +0xaaf7, 0xab00, +0xab07, 0xab08, +0xab0f, 0xab10, +0xab17, 0xab1f, +0xab27, 0xab27, +0xab2f, 0xab2f, +0xab66, 0xab6f, +0xabee, 0xabef, +0xabfa, 0xabff, +0xd7a4, 0xd7af, +0xd7c7, 0xd7ca, +0xd7fc, 0xf8ff, +0xfa6e, 0xfa6f, +0xfada, 0xfaff, +0xfb07, 0xfb12, +0xfb18, 0xfb1c, +0xfb37, 0xfb37, +0xfb3d, 0xfb3d, +0xfb3f, 0xfb3f, +0xfb42, 0xfb42, +0xfb45, 0xfb45, +0xfbc2, 0xfbd2, +0xfd40, 0xfd4f, +0xfd90, 0xfd91, +0xfdc8, 0xfdef, +0xfdfe, 0xfdff, +0xfe1a, 0xfe1f, +0xfe53, 0xfe53, +0xfe67, 0xfe67, +0xfe6c, 0xfe6f, +0xfe75, 0xfe75, +0xfefd, 0xff00, +0xffbf, 0xffc1, +0xffc8, 0xffc9, +0xffd0, 0xffd1, +0xffd8, 0xffd9, +0xffdd, 0xffdf, +0xffe7, 0xffe7, +0xffef, 0xfffb, +0xfffe, 0xffff, +0x1000c, 0x1000c, +0x10027, 0x10027, +0x1003b, 0x1003b, +0x1003e, 0x1003e, +0x1004e, 0x1004f, +0x1005e, 0x1007f, +0x100fb, 0x100ff, +0x10103, 0x10106, +0x10134, 0x10136, +0x1018f, 0x1018f, +0x1019c, 0x1019f, +0x101a1, 0x101cf, +0x101fe, 0x1027f, +0x1029d, 0x1029f, +0x102d1, 0x102df, +0x102fc, 0x102ff, +0x10324, 0x1032c, +0x1034b, 0x1034f, +0x1037b, 0x1037f, +0x1039e, 0x1039e, +0x103c4, 0x103c7, +0x103d6, 0x103ff, +0x1049e, 0x1049f, +0x104aa, 0x104af, +0x104d4, 0x104d7, +0x104fc, 0x104ff, +0x10528, 0x1052f, +0x10564, 0x1056e, +0x10570, 0x105ff, +0x10737, 0x1073f, +0x10756, 0x1075f, +0x10768, 0x107ff, +0x10806, 0x10807, +0x10809, 0x10809, +0x10836, 0x10836, +0x10839, 0x1083b, +0x1083d, 0x1083e, +0x10856, 0x10856, +0x1089f, 0x108a6, +0x108b0, 0x108df, +0x108f3, 0x108f3, +0x108f6, 0x108fa, +0x1091c, 0x1091e, +0x1093a, 0x1093e, +0x10940, 0x1097f, +0x109b8, 0x109bb, +0x109d0, 0x109d1, +0x10a04, 0x10a04, +0x10a07, 0x10a0b, +0x10a14, 0x10a14, +0x10a18, 0x10a18, +0x10a36, 0x10a37, +0x10a3b, 0x10a3e, +0x10a49, 0x10a4f, +0x10a59, 0x10a5f, +0x10aa0, 0x10abf, +0x10ae7, 0x10aea, +0x10af7, 0x10aff, +0x10b36, 0x10b38, +0x10b56, 0x10b57, +0x10b73, 0x10b77, +0x10b92, 0x10b98, +0x10b9d, 0x10ba8, +0x10bb0, 0x10bff, +0x10c49, 0x10c7f, +0x10cb3, 0x10cbf, +0x10cf3, 0x10cf9, +0x10d28, 0x10d2f, +0x10d3a, 0x10e5f, +0x10e7f, 0x10eff, +0x10f28, 0x10f2f, +0x10f5a, 0x10fff, +0x1104e, 0x11051, +0x11070, 0x1107e, +0x110bd, 0x110bd, +0x110c2, 0x110cf, +0x110e9, 0x110ef, +0x110fa, 0x110ff, +0x11135, 0x11135, +0x11147, 0x1114f, +0x11177, 0x1117f, +0x111ce, 0x111cf, +0x111e0, 0x111e0, +0x111f5, 0x111ff, +0x11212, 0x11212, +0x1123f, 0x1127f, +0x11287, 0x11287, +0x11289, 0x11289, +0x1128e, 0x1128e, +0x1129e, 0x1129e, +0x112aa, 0x112af, +0x112eb, 0x112ef, +0x112fa, 0x112ff, +0x11304, 0x11304, +0x1130d, 0x1130e, +0x11311, 0x11312, +0x11329, 0x11329, +0x11331, 0x11331, +0x11334, 0x11334, +0x1133a, 0x1133a, +0x11345, 0x11346, +0x11349, 0x1134a, +0x1134e, 0x1134f, +0x11351, 0x11356, +0x11358, 0x1135c, +0x11364, 0x11365, +0x1136d, 0x1136f, +0x11375, 0x113ff, +0x1145a, 0x1145a, +0x1145c, 0x1145c, +0x1145f, 0x1147f, +0x114c8, 0x114cf, +0x114da, 0x1157f, +0x115b6, 0x115b7, +0x115de, 0x115ff, +0x11645, 0x1164f, +0x1165a, 0x1165f, +0x1166d, 0x1167f, +0x116b8, 0x116bf, +0x116ca, 0x116ff, +0x1171b, 0x1171c, +0x1172c, 0x1172f, +0x11740, 0x117ff, +0x1183c, 0x1189f, +0x118f3, 0x118fe, +0x11900, 0x119ff, +0x11a48, 0x11a4f, +0x11a84, 0x11a85, +0x11aa3, 0x11abf, +0x11af9, 0x11bff, +0x11c09, 0x11c09, +0x11c37, 0x11c37, +0x11c46, 0x11c4f, +0x11c6d, 0x11c6f, +0x11c90, 0x11c91, +0x11ca8, 0x11ca8, +0x11cb7, 0x11cff, +0x11d07, 0x11d07, +0x11d0a, 0x11d0a, +0x11d37, 0x11d39, +0x11d3b, 0x11d3b, +0x11d3e, 0x11d3e, +0x11d48, 0x11d4f, +0x11d5a, 0x11d5f, +0x11d66, 0x11d66, +0x11d69, 0x11d69, +0x11d8f, 0x11d8f, +0x11d92, 0x11d92, +0x11d99, 0x11d9f, +0x11daa, 0x11edf, +0x11ef9, 0x11fff, +0x1239a, 0x123ff, +0x1246f, 0x1246f, +0x12475, 0x1247f, +0x12544, 0x12fff, +0x1342f, 0x143ff, +0x14647, 0x167ff, +0x16a39, 0x16a3f, +0x16a5f, 0x16a5f, +0x16a6a, 0x16a6d, +0x16a70, 0x16acf, +0x16aee, 0x16aef, +0x16af6, 0x16aff, +0x16b46, 0x16b4f, +0x16b5a, 0x16b5a, +0x16b62, 0x16b62, +0x16b78, 0x16b7c, +0x16b90, 0x16e3f, +0x16e9b, 0x16eff, +0x16f45, 0x16f4f, +0x16f7f, 0x16f8e, +0x16fa0, 0x16fdf, +0x16fe2, 0x16fff, +0x187f2, 0x187ff, +0x18af3, 0x1afff, +0x1b11f, 0x1b16f, +0x1b2fc, 0x1bbff, +0x1bc6b, 0x1bc6f, +0x1bc7d, 0x1bc7f, +0x1bc89, 0x1bc8f, +0x1bc9a, 0x1bc9b, +0x1bca0, 0x1cfff, +0x1d0f6, 0x1d0ff, +0x1d127, 0x1d128, +0x1d173, 0x1d17a, +0x1d1e9, 0x1d1ff, +0x1d246, 0x1d2df, +0x1d2f4, 0x1d2ff, +0x1d357, 0x1d35f, +0x1d379, 0x1d3ff, +0x1d455, 0x1d455, +0x1d49d, 0x1d49d, +0x1d4a0, 0x1d4a1, +0x1d4a3, 0x1d4a4, +0x1d4a7, 0x1d4a8, +0x1d4ad, 0x1d4ad, +0x1d4ba, 0x1d4ba, +0x1d4bc, 0x1d4bc, +0x1d4c4, 0x1d4c4, +0x1d506, 0x1d506, +0x1d50b, 0x1d50c, +0x1d515, 0x1d515, +0x1d51d, 0x1d51d, +0x1d53a, 0x1d53a, +0x1d53f, 0x1d53f, +0x1d545, 0x1d545, +0x1d547, 0x1d549, +0x1d551, 0x1d551, +0x1d6a6, 0x1d6a7, +0x1d7cc, 0x1d7cd, +0x1da8c, 0x1da9a, +0x1daa0, 0x1daa0, +0x1dab0, 0x1dfff, +0x1e007, 0x1e007, +0x1e019, 0x1e01a, +0x1e022, 0x1e022, +0x1e025, 0x1e025, +0x1e02b, 0x1e7ff, +0x1e8c5, 0x1e8c6, +0x1e8d7, 0x1e8ff, +0x1e94b, 0x1e94f, +0x1e95a, 0x1e95d, +0x1e960, 0x1ec70, +0x1ecb5, 0x1edff, +0x1ee04, 0x1ee04, +0x1ee20, 0x1ee20, +0x1ee23, 0x1ee23, +0x1ee25, 0x1ee26, +0x1ee28, 0x1ee28, +0x1ee33, 0x1ee33, +0x1ee38, 0x1ee38, +0x1ee3a, 0x1ee3a, +0x1ee3c, 0x1ee41, +0x1ee43, 0x1ee46, +0x1ee48, 0x1ee48, +0x1ee4a, 0x1ee4a, +0x1ee4c, 0x1ee4c, +0x1ee50, 0x1ee50, +0x1ee53, 0x1ee53, +0x1ee55, 0x1ee56, +0x1ee58, 0x1ee58, +0x1ee5a, 0x1ee5a, +0x1ee5c, 0x1ee5c, +0x1ee5e, 0x1ee5e, +0x1ee60, 0x1ee60, +0x1ee63, 0x1ee63, +0x1ee65, 0x1ee66, +0x1ee6b, 0x1ee6b, +0x1ee73, 0x1ee73, +0x1ee78, 0x1ee78, +0x1ee7d, 0x1ee7d, +0x1ee7f, 0x1ee7f, +0x1ee8a, 0x1ee8a, +0x1ee9c, 0x1eea0, +0x1eea4, 0x1eea4, +0x1eeaa, 0x1eeaa, +0x1eebc, 0x1eeef, +0x1eef2, 0x1efff, +0x1f02c, 0x1f02f, +0x1f094, 0x1f09f, +0x1f0af, 0x1f0b0, +0x1f0c0, 0x1f0c0, +0x1f0d0, 0x1f0d0, +0x1f0f6, 0x1f0ff, +0x1f10d, 0x1f10f, +0x1f16c, 0x1f16f, +0x1f1ad, 0x1f1e5, +0x1f203, 0x1f20f, +0x1f23c, 0x1f23f, +0x1f249, 0x1f24f, +0x1f252, 0x1f25f, +0x1f266, 0x1f2ff, +0x1f6d5, 0x1f6df, +0x1f6ed, 0x1f6ef, +0x1f6fa, 0x1f6ff, +0x1f774, 0x1f77f, +0x1f7d9, 0x1f7ff, +0x1f80c, 0x1f80f, +0x1f848, 0x1f84f, +0x1f85a, 0x1f85f, +0x1f888, 0x1f88f, +0x1f8ae, 0x1f8ff, +0x1f90c, 0x1f90f, +0x1f93f, 0x1f93f, +0x1f971, 0x1f972, +0x1f977, 0x1f979, +0x1f97b, 0x1f97b, +0x1f9a3, 0x1f9af, +0x1f9ba, 0x1f9bf, +0x1f9c3, 0x1f9cf, +0x1fa00, 0x1fa5f, +0x1fa6e, 0x1ffff, +0x2a6d7, 0x2a6ff, +0x2b735, 0x2b73f, +0x2b81e, 0x2b81f, +0x2cea2, 0x2ceaf, +0x2ebe1, 0x2f7ff, +0x2fa1e, 0xe00ff, +0xe01f0, 0x10ffff, +}; /* END of CR_C */ + +/* PROPERTY: 'Canadian_Aboriginal': Script */ +static const OnigCodePoint +CR_Canadian_Aboriginal[] = { 2, +0x1400, 0x167f, +0x18b0, 0x18f5, +}; /* END of CR_Canadian_Aboriginal */ + +/* PROPERTY: 'Carian': Script */ +static const OnigCodePoint +CR_Carian[] = { 1, +0x102a0, 0x102d0, +}; /* END of CR_Carian */ + +/* PROPERTY: 'Case_Ignorable': Derived Property */ +static const OnigCodePoint +CR_Case_Ignorable[] = { 394, +0x0027, 0x0027, +0x002e, 0x002e, +0x003a, 0x003a, +0x005e, 0x005e, +0x0060, 0x0060, +0x00a8, 0x00a8, +0x00ad, 0x00ad, +0x00af, 0x00af, +0x00b4, 0x00b4, +0x00b7, 0x00b8, +0x02b0, 0x036f, +0x0374, 0x0375, +0x037a, 0x037a, +0x0384, 0x0385, +0x0387, 0x0387, +0x0483, 0x0489, +0x0559, 0x0559, +0x0591, 0x05bd, +0x05bf, 0x05bf, +0x05c1, 0x05c2, +0x05c4, 0x05c5, +0x05c7, 0x05c7, +0x05f4, 0x05f4, +0x0600, 0x0605, +0x0610, 0x061a, +0x061c, 0x061c, +0x0640, 0x0640, +0x064b, 0x065f, +0x0670, 0x0670, +0x06d6, 0x06dd, +0x06df, 0x06e8, +0x06ea, 0x06ed, +0x070f, 0x070f, +0x0711, 0x0711, +0x0730, 0x074a, +0x07a6, 0x07b0, +0x07eb, 0x07f5, +0x07fa, 0x07fa, +0x07fd, 0x07fd, +0x0816, 0x082d, +0x0859, 0x085b, +0x08d3, 0x0902, +0x093a, 0x093a, +0x093c, 0x093c, +0x0941, 0x0948, +0x094d, 0x094d, +0x0951, 0x0957, +0x0962, 0x0963, +0x0971, 0x0971, +0x0981, 0x0981, +0x09bc, 0x09bc, +0x09c1, 0x09c4, +0x09cd, 0x09cd, +0x09e2, 0x09e3, +0x09fe, 0x09fe, +0x0a01, 0x0a02, +0x0a3c, 0x0a3c, +0x0a41, 0x0a42, +0x0a47, 0x0a48, +0x0a4b, 0x0a4d, +0x0a51, 0x0a51, +0x0a70, 0x0a71, +0x0a75, 0x0a75, +0x0a81, 0x0a82, +0x0abc, 0x0abc, +0x0ac1, 0x0ac5, +0x0ac7, 0x0ac8, +0x0acd, 0x0acd, +0x0ae2, 0x0ae3, +0x0afa, 0x0aff, +0x0b01, 0x0b01, +0x0b3c, 0x0b3c, +0x0b3f, 0x0b3f, +0x0b41, 0x0b44, +0x0b4d, 0x0b4d, +0x0b56, 0x0b56, +0x0b62, 0x0b63, +0x0b82, 0x0b82, +0x0bc0, 0x0bc0, +0x0bcd, 0x0bcd, +0x0c00, 0x0c00, +0x0c04, 0x0c04, +0x0c3e, 0x0c40, +0x0c46, 0x0c48, +0x0c4a, 0x0c4d, +0x0c55, 0x0c56, +0x0c62, 0x0c63, +0x0c81, 0x0c81, +0x0cbc, 0x0cbc, +0x0cbf, 0x0cbf, +0x0cc6, 0x0cc6, +0x0ccc, 0x0ccd, +0x0ce2, 0x0ce3, +0x0d00, 0x0d01, +0x0d3b, 0x0d3c, +0x0d41, 0x0d44, +0x0d4d, 0x0d4d, +0x0d62, 0x0d63, +0x0dca, 0x0dca, +0x0dd2, 0x0dd4, +0x0dd6, 0x0dd6, +0x0e31, 0x0e31, +0x0e34, 0x0e3a, +0x0e46, 0x0e4e, +0x0eb1, 0x0eb1, +0x0eb4, 0x0eb9, +0x0ebb, 0x0ebc, +0x0ec6, 0x0ec6, +0x0ec8, 0x0ecd, +0x0f18, 0x0f19, +0x0f35, 0x0f35, +0x0f37, 0x0f37, +0x0f39, 0x0f39, +0x0f71, 0x0f7e, +0x0f80, 0x0f84, +0x0f86, 0x0f87, +0x0f8d, 0x0f97, +0x0f99, 0x0fbc, +0x0fc6, 0x0fc6, +0x102d, 0x1030, +0x1032, 0x1037, +0x1039, 0x103a, +0x103d, 0x103e, +0x1058, 0x1059, +0x105e, 0x1060, +0x1071, 0x1074, +0x1082, 0x1082, +0x1085, 0x1086, +0x108d, 0x108d, +0x109d, 0x109d, +0x10fc, 0x10fc, +0x135d, 0x135f, +0x1712, 0x1714, +0x1732, 0x1734, +0x1752, 0x1753, +0x1772, 0x1773, +0x17b4, 0x17b5, +0x17b7, 0x17bd, +0x17c6, 0x17c6, +0x17c9, 0x17d3, +0x17d7, 0x17d7, +0x17dd, 0x17dd, +0x180b, 0x180e, +0x1843, 0x1843, +0x1885, 0x1886, +0x18a9, 0x18a9, +0x1920, 0x1922, +0x1927, 0x1928, +0x1932, 0x1932, +0x1939, 0x193b, +0x1a17, 0x1a18, +0x1a1b, 0x1a1b, +0x1a56, 0x1a56, +0x1a58, 0x1a5e, +0x1a60, 0x1a60, +0x1a62, 0x1a62, +0x1a65, 0x1a6c, +0x1a73, 0x1a7c, +0x1a7f, 0x1a7f, +0x1aa7, 0x1aa7, +0x1ab0, 0x1abe, +0x1b00, 0x1b03, +0x1b34, 0x1b34, +0x1b36, 0x1b3a, +0x1b3c, 0x1b3c, +0x1b42, 0x1b42, +0x1b6b, 0x1b73, +0x1b80, 0x1b81, +0x1ba2, 0x1ba5, +0x1ba8, 0x1ba9, +0x1bab, 0x1bad, +0x1be6, 0x1be6, +0x1be8, 0x1be9, +0x1bed, 0x1bed, +0x1bef, 0x1bf1, +0x1c2c, 0x1c33, +0x1c36, 0x1c37, +0x1c78, 0x1c7d, +0x1cd0, 0x1cd2, +0x1cd4, 0x1ce0, +0x1ce2, 0x1ce8, +0x1ced, 0x1ced, +0x1cf4, 0x1cf4, +0x1cf8, 0x1cf9, +0x1d2c, 0x1d6a, +0x1d78, 0x1d78, +0x1d9b, 0x1df9, +0x1dfb, 0x1dff, +0x1fbd, 0x1fbd, +0x1fbf, 0x1fc1, +0x1fcd, 0x1fcf, +0x1fdd, 0x1fdf, +0x1fed, 0x1fef, +0x1ffd, 0x1ffe, +0x200b, 0x200f, +0x2018, 0x2019, +0x2024, 0x2024, +0x2027, 0x2027, +0x202a, 0x202e, +0x2060, 0x2064, +0x2066, 0x206f, +0x2071, 0x2071, +0x207f, 0x207f, +0x2090, 0x209c, +0x20d0, 0x20f0, +0x2c7c, 0x2c7d, +0x2cef, 0x2cf1, +0x2d6f, 0x2d6f, +0x2d7f, 0x2d7f, +0x2de0, 0x2dff, +0x2e2f, 0x2e2f, +0x3005, 0x3005, +0x302a, 0x302d, +0x3031, 0x3035, +0x303b, 0x303b, +0x3099, 0x309e, +0x30fc, 0x30fe, +0xa015, 0xa015, +0xa4f8, 0xa4fd, +0xa60c, 0xa60c, +0xa66f, 0xa672, +0xa674, 0xa67d, +0xa67f, 0xa67f, +0xa69c, 0xa69f, +0xa6f0, 0xa6f1, +0xa700, 0xa721, +0xa770, 0xa770, +0xa788, 0xa78a, +0xa7f8, 0xa7f9, +0xa802, 0xa802, +0xa806, 0xa806, +0xa80b, 0xa80b, +0xa825, 0xa826, +0xa8c4, 0xa8c5, +0xa8e0, 0xa8f1, +0xa8ff, 0xa8ff, +0xa926, 0xa92d, +0xa947, 0xa951, +0xa980, 0xa982, +0xa9b3, 0xa9b3, +0xa9b6, 0xa9b9, +0xa9bc, 0xa9bc, +0xa9cf, 0xa9cf, +0xa9e5, 0xa9e6, +0xaa29, 0xaa2e, +0xaa31, 0xaa32, +0xaa35, 0xaa36, +0xaa43, 0xaa43, +0xaa4c, 0xaa4c, +0xaa70, 0xaa70, +0xaa7c, 0xaa7c, +0xaab0, 0xaab0, +0xaab2, 0xaab4, +0xaab7, 0xaab8, +0xaabe, 0xaabf, +0xaac1, 0xaac1, +0xaadd, 0xaadd, +0xaaec, 0xaaed, +0xaaf3, 0xaaf4, +0xaaf6, 0xaaf6, +0xab5b, 0xab5f, +0xabe5, 0xabe5, +0xabe8, 0xabe8, +0xabed, 0xabed, +0xfb1e, 0xfb1e, +0xfbb2, 0xfbc1, +0xfe00, 0xfe0f, +0xfe13, 0xfe13, +0xfe20, 0xfe2f, +0xfe52, 0xfe52, +0xfe55, 0xfe55, +0xfeff, 0xfeff, +0xff07, 0xff07, +0xff0e, 0xff0e, +0xff1a, 0xff1a, +0xff3e, 0xff3e, +0xff40, 0xff40, +0xff70, 0xff70, +0xff9e, 0xff9f, +0xffe3, 0xffe3, +0xfff9, 0xfffb, +0x101fd, 0x101fd, +0x102e0, 0x102e0, +0x10376, 0x1037a, +0x10a01, 0x10a03, +0x10a05, 0x10a06, +0x10a0c, 0x10a0f, +0x10a38, 0x10a3a, +0x10a3f, 0x10a3f, +0x10ae5, 0x10ae6, +0x10d24, 0x10d27, +0x10f46, 0x10f50, +0x11001, 0x11001, +0x11038, 0x11046, +0x1107f, 0x11081, +0x110b3, 0x110b6, +0x110b9, 0x110ba, +0x110bd, 0x110bd, +0x110cd, 0x110cd, +0x11100, 0x11102, +0x11127, 0x1112b, +0x1112d, 0x11134, +0x11173, 0x11173, +0x11180, 0x11181, +0x111b6, 0x111be, +0x111c9, 0x111cc, +0x1122f, 0x11231, +0x11234, 0x11234, +0x11236, 0x11237, +0x1123e, 0x1123e, +0x112df, 0x112df, +0x112e3, 0x112ea, +0x11300, 0x11301, +0x1133b, 0x1133c, +0x11340, 0x11340, +0x11366, 0x1136c, +0x11370, 0x11374, +0x11438, 0x1143f, +0x11442, 0x11444, +0x11446, 0x11446, +0x1145e, 0x1145e, +0x114b3, 0x114b8, +0x114ba, 0x114ba, +0x114bf, 0x114c0, +0x114c2, 0x114c3, +0x115b2, 0x115b5, +0x115bc, 0x115bd, +0x115bf, 0x115c0, +0x115dc, 0x115dd, +0x11633, 0x1163a, +0x1163d, 0x1163d, +0x1163f, 0x11640, +0x116ab, 0x116ab, +0x116ad, 0x116ad, +0x116b0, 0x116b5, +0x116b7, 0x116b7, +0x1171d, 0x1171f, +0x11722, 0x11725, +0x11727, 0x1172b, +0x1182f, 0x11837, +0x11839, 0x1183a, +0x11a01, 0x11a0a, +0x11a33, 0x11a38, +0x11a3b, 0x11a3e, +0x11a47, 0x11a47, +0x11a51, 0x11a56, +0x11a59, 0x11a5b, +0x11a8a, 0x11a96, +0x11a98, 0x11a99, +0x11c30, 0x11c36, +0x11c38, 0x11c3d, +0x11c3f, 0x11c3f, +0x11c92, 0x11ca7, +0x11caa, 0x11cb0, +0x11cb2, 0x11cb3, +0x11cb5, 0x11cb6, +0x11d31, 0x11d36, +0x11d3a, 0x11d3a, +0x11d3c, 0x11d3d, +0x11d3f, 0x11d45, +0x11d47, 0x11d47, +0x11d90, 0x11d91, +0x11d95, 0x11d95, +0x11d97, 0x11d97, +0x11ef3, 0x11ef4, +0x16af0, 0x16af4, +0x16b30, 0x16b36, +0x16b40, 0x16b43, +0x16f8f, 0x16f9f, +0x16fe0, 0x16fe1, +0x1bc9d, 0x1bc9e, +0x1bca0, 0x1bca3, +0x1d167, 0x1d169, +0x1d173, 0x1d182, +0x1d185, 0x1d18b, +0x1d1aa, 0x1d1ad, +0x1d242, 0x1d244, +0x1da00, 0x1da36, +0x1da3b, 0x1da6c, +0x1da75, 0x1da75, +0x1da84, 0x1da84, +0x1da9b, 0x1da9f, +0x1daa1, 0x1daaf, +0x1e000, 0x1e006, +0x1e008, 0x1e018, +0x1e01b, 0x1e021, +0x1e023, 0x1e024, +0x1e026, 0x1e02a, +0x1e8d0, 0x1e8d6, +0x1e944, 0x1e94a, +0x1f3fb, 0x1f3ff, +0xe0001, 0xe0001, +0xe0020, 0xe007f, +0xe0100, 0xe01ef, +}; /* END of CR_Case_Ignorable */ + +/* PROPERTY: 'Cased': Derived Property */ +static const OnigCodePoint +CR_Cased[] = { 139, +0x0041, 0x005a, +0x0061, 0x007a, +0x00aa, 0x00aa, +0x00b5, 0x00b5, +0x00ba, 0x00ba, +0x00c0, 0x00d6, +0x00d8, 0x00f6, +0x00f8, 0x01ba, +0x01bc, 0x01bf, +0x01c4, 0x0293, +0x0295, 0x02b8, +0x02c0, 0x02c1, +0x02e0, 0x02e4, +0x0345, 0x0345, +0x0370, 0x0373, +0x0376, 0x0377, +0x037a, 0x037d, +0x037f, 0x037f, +0x0386, 0x0386, +0x0388, 0x038a, +0x038c, 0x038c, +0x038e, 0x03a1, +0x03a3, 0x03f5, +0x03f7, 0x0481, +0x048a, 0x052f, +0x0531, 0x0556, +0x0560, 0x0588, +0x10a0, 0x10c5, +0x10c7, 0x10c7, +0x10cd, 0x10cd, +0x10d0, 0x10fa, +0x10fd, 0x10ff, +0x13a0, 0x13f5, +0x13f8, 0x13fd, +0x1c80, 0x1c88, +0x1c90, 0x1cba, +0x1cbd, 0x1cbf, +0x1d00, 0x1dbf, +0x1e00, 0x1f15, +0x1f18, 0x1f1d, +0x1f20, 0x1f45, +0x1f48, 0x1f4d, +0x1f50, 0x1f57, +0x1f59, 0x1f59, +0x1f5b, 0x1f5b, +0x1f5d, 0x1f5d, +0x1f5f, 0x1f7d, +0x1f80, 0x1fb4, +0x1fb6, 0x1fbc, +0x1fbe, 0x1fbe, +0x1fc2, 0x1fc4, +0x1fc6, 0x1fcc, +0x1fd0, 0x1fd3, +0x1fd6, 0x1fdb, +0x1fe0, 0x1fec, +0x1ff2, 0x1ff4, +0x1ff6, 0x1ffc, +0x2071, 0x2071, +0x207f, 0x207f, +0x2090, 0x209c, +0x2102, 0x2102, +0x2107, 0x2107, +0x210a, 0x2113, +0x2115, 0x2115, +0x2119, 0x211d, +0x2124, 0x2124, +0x2126, 0x2126, +0x2128, 0x2128, +0x212a, 0x212d, +0x212f, 0x2134, +0x2139, 0x2139, +0x213c, 0x213f, +0x2145, 0x2149, +0x214e, 0x214e, +0x2160, 0x217f, +0x2183, 0x2184, +0x24b6, 0x24e9, +0x2c00, 0x2c2e, +0x2c30, 0x2c5e, +0x2c60, 0x2ce4, +0x2ceb, 0x2cee, +0x2cf2, 0x2cf3, +0x2d00, 0x2d25, +0x2d27, 0x2d27, +0x2d2d, 0x2d2d, +0xa640, 0xa66d, +0xa680, 0xa69d, +0xa722, 0xa787, +0xa78b, 0xa78e, +0xa790, 0xa7b9, +0xa7f8, 0xa7fa, +0xab30, 0xab5a, +0xab5c, 0xab65, +0xab70, 0xabbf, +0xfb00, 0xfb06, +0xfb13, 0xfb17, +0xff21, 0xff3a, +0xff41, 0xff5a, +0x10400, 0x1044f, +0x104b0, 0x104d3, +0x104d8, 0x104fb, +0x10c80, 0x10cb2, +0x10cc0, 0x10cf2, +0x118a0, 0x118df, +0x16e40, 0x16e7f, +0x1d400, 0x1d454, +0x1d456, 0x1d49c, +0x1d49e, 0x1d49f, +0x1d4a2, 0x1d4a2, +0x1d4a5, 0x1d4a6, +0x1d4a9, 0x1d4ac, +0x1d4ae, 0x1d4b9, +0x1d4bb, 0x1d4bb, +0x1d4bd, 0x1d4c3, +0x1d4c5, 0x1d505, +0x1d507, 0x1d50a, +0x1d50d, 0x1d514, +0x1d516, 0x1d51c, +0x1d51e, 0x1d539, +0x1d53b, 0x1d53e, +0x1d540, 0x1d544, +0x1d546, 0x1d546, +0x1d54a, 0x1d550, +0x1d552, 0x1d6a5, +0x1d6a8, 0x1d6c0, +0x1d6c2, 0x1d6da, +0x1d6dc, 0x1d6fa, +0x1d6fc, 0x1d714, +0x1d716, 0x1d734, +0x1d736, 0x1d74e, +0x1d750, 0x1d76e, +0x1d770, 0x1d788, +0x1d78a, 0x1d7a8, +0x1d7aa, 0x1d7c2, +0x1d7c4, 0x1d7cb, +0x1e900, 0x1e943, +0x1f130, 0x1f149, +0x1f150, 0x1f169, +0x1f170, 0x1f189, +}; /* END of CR_Cased */ + +/* PROPERTY: 'Caucasian_Albanian': Script */ +static const OnigCodePoint +CR_Caucasian_Albanian[] = { 2, +0x10530, 0x10563, +0x1056f, 0x1056f, +}; /* END of CR_Caucasian_Albanian */ + +/* PROPERTY: 'Cc': General Category */ +#define CR_Cc CR_Cntrl + +/* PROPERTY: 'Cf': General Category */ +static const OnigCodePoint +CR_Cf[] = { 19, +0x00ad, 0x00ad, +0x0600, 0x0605, +0x061c, 0x061c, +0x06dd, 0x06dd, +0x070f, 0x070f, +0x08e2, 0x08e2, +0x180e, 0x180e, +0x200b, 0x200f, +0x202a, 0x202e, +0x2060, 0x2064, +0x2066, 0x206f, +0xfeff, 0xfeff, +0xfff9, 0xfffb, +0x110bd, 0x110bd, +0x110cd, 0x110cd, +0x1bca0, 0x1bca3, +0x1d173, 0x1d17a, +0xe0001, 0xe0001, +0xe0020, 0xe007f, +}; /* END of CR_Cf */ + +/* PROPERTY: 'Chakma': Script */ +static const OnigCodePoint +CR_Chakma[] = { 2, +0x11100, 0x11134, +0x11136, 0x11146, +}; /* END of CR_Chakma */ + +/* PROPERTY: 'Cham': Script */ +static const OnigCodePoint +CR_Cham[] = { 4, +0xaa00, 0xaa36, +0xaa40, 0xaa4d, +0xaa50, 0xaa59, +0xaa5c, 0xaa5f, +}; /* END of CR_Cham */ + +/* PROPERTY: 'Changes_When_Casefolded': Derived Property */ +static const OnigCodePoint +CR_Changes_When_Casefolded[] = { 607, +0x0041, 0x005a, +0x00b5, 0x00b5, +0x00c0, 0x00d6, +0x00d8, 0x00df, +0x0100, 0x0100, +0x0102, 0x0102, +0x0104, 0x0104, +0x0106, 0x0106, +0x0108, 0x0108, +0x010a, 0x010a, +0x010c, 0x010c, +0x010e, 0x010e, +0x0110, 0x0110, +0x0112, 0x0112, +0x0114, 0x0114, +0x0116, 0x0116, +0x0118, 0x0118, +0x011a, 0x011a, +0x011c, 0x011c, +0x011e, 0x011e, +0x0120, 0x0120, +0x0122, 0x0122, +0x0124, 0x0124, +0x0126, 0x0126, +0x0128, 0x0128, +0x012a, 0x012a, +0x012c, 0x012c, +0x012e, 0x012e, +0x0130, 0x0130, +0x0132, 0x0132, +0x0134, 0x0134, +0x0136, 0x0136, +0x0139, 0x0139, +0x013b, 0x013b, +0x013d, 0x013d, +0x013f, 0x013f, +0x0141, 0x0141, +0x0143, 0x0143, +0x0145, 0x0145, +0x0147, 0x0147, +0x0149, 0x014a, +0x014c, 0x014c, +0x014e, 0x014e, +0x0150, 0x0150, +0x0152, 0x0152, +0x0154, 0x0154, +0x0156, 0x0156, +0x0158, 0x0158, +0x015a, 0x015a, +0x015c, 0x015c, +0x015e, 0x015e, +0x0160, 0x0160, +0x0162, 0x0162, +0x0164, 0x0164, +0x0166, 0x0166, +0x0168, 0x0168, +0x016a, 0x016a, +0x016c, 0x016c, +0x016e, 0x016e, +0x0170, 0x0170, +0x0172, 0x0172, +0x0174, 0x0174, +0x0176, 0x0176, +0x0178, 0x0179, +0x017b, 0x017b, +0x017d, 0x017d, +0x017f, 0x017f, +0x0181, 0x0182, +0x0184, 0x0184, +0x0186, 0x0187, +0x0189, 0x018b, +0x018e, 0x0191, +0x0193, 0x0194, +0x0196, 0x0198, +0x019c, 0x019d, +0x019f, 0x01a0, +0x01a2, 0x01a2, +0x01a4, 0x01a4, +0x01a6, 0x01a7, +0x01a9, 0x01a9, +0x01ac, 0x01ac, +0x01ae, 0x01af, +0x01b1, 0x01b3, +0x01b5, 0x01b5, +0x01b7, 0x01b8, +0x01bc, 0x01bc, +0x01c4, 0x01c5, +0x01c7, 0x01c8, +0x01ca, 0x01cb, +0x01cd, 0x01cd, +0x01cf, 0x01cf, +0x01d1, 0x01d1, +0x01d3, 0x01d3, +0x01d5, 0x01d5, +0x01d7, 0x01d7, +0x01d9, 0x01d9, +0x01db, 0x01db, +0x01de, 0x01de, +0x01e0, 0x01e0, +0x01e2, 0x01e2, +0x01e4, 0x01e4, +0x01e6, 0x01e6, +0x01e8, 0x01e8, +0x01ea, 0x01ea, +0x01ec, 0x01ec, +0x01ee, 0x01ee, +0x01f1, 0x01f2, +0x01f4, 0x01f4, +0x01f6, 0x01f8, +0x01fa, 0x01fa, +0x01fc, 0x01fc, +0x01fe, 0x01fe, +0x0200, 0x0200, +0x0202, 0x0202, +0x0204, 0x0204, +0x0206, 0x0206, +0x0208, 0x0208, +0x020a, 0x020a, +0x020c, 0x020c, +0x020e, 0x020e, +0x0210, 0x0210, +0x0212, 0x0212, +0x0214, 0x0214, +0x0216, 0x0216, +0x0218, 0x0218, +0x021a, 0x021a, +0x021c, 0x021c, +0x021e, 0x021e, +0x0220, 0x0220, +0x0222, 0x0222, +0x0224, 0x0224, +0x0226, 0x0226, +0x0228, 0x0228, +0x022a, 0x022a, +0x022c, 0x022c, +0x022e, 0x022e, +0x0230, 0x0230, +0x0232, 0x0232, +0x023a, 0x023b, +0x023d, 0x023e, +0x0241, 0x0241, +0x0243, 0x0246, +0x0248, 0x0248, +0x024a, 0x024a, +0x024c, 0x024c, +0x024e, 0x024e, +0x0345, 0x0345, +0x0370, 0x0370, +0x0372, 0x0372, +0x0376, 0x0376, +0x037f, 0x037f, +0x0386, 0x0386, +0x0388, 0x038a, +0x038c, 0x038c, +0x038e, 0x038f, +0x0391, 0x03a1, +0x03a3, 0x03ab, +0x03c2, 0x03c2, +0x03cf, 0x03d1, +0x03d5, 0x03d6, +0x03d8, 0x03d8, +0x03da, 0x03da, +0x03dc, 0x03dc, +0x03de, 0x03de, +0x03e0, 0x03e0, +0x03e2, 0x03e2, +0x03e4, 0x03e4, +0x03e6, 0x03e6, +0x03e8, 0x03e8, +0x03ea, 0x03ea, +0x03ec, 0x03ec, +0x03ee, 0x03ee, +0x03f0, 0x03f1, +0x03f4, 0x03f5, +0x03f7, 0x03f7, +0x03f9, 0x03fa, +0x03fd, 0x042f, +0x0460, 0x0460, +0x0462, 0x0462, +0x0464, 0x0464, +0x0466, 0x0466, +0x0468, 0x0468, +0x046a, 0x046a, +0x046c, 0x046c, +0x046e, 0x046e, +0x0470, 0x0470, +0x0472, 0x0472, +0x0474, 0x0474, +0x0476, 0x0476, +0x0478, 0x0478, +0x047a, 0x047a, +0x047c, 0x047c, +0x047e, 0x047e, +0x0480, 0x0480, +0x048a, 0x048a, +0x048c, 0x048c, +0x048e, 0x048e, +0x0490, 0x0490, +0x0492, 0x0492, +0x0494, 0x0494, +0x0496, 0x0496, +0x0498, 0x0498, +0x049a, 0x049a, +0x049c, 0x049c, +0x049e, 0x049e, +0x04a0, 0x04a0, +0x04a2, 0x04a2, +0x04a4, 0x04a4, +0x04a6, 0x04a6, +0x04a8, 0x04a8, +0x04aa, 0x04aa, +0x04ac, 0x04ac, +0x04ae, 0x04ae, +0x04b0, 0x04b0, +0x04b2, 0x04b2, +0x04b4, 0x04b4, +0x04b6, 0x04b6, +0x04b8, 0x04b8, +0x04ba, 0x04ba, +0x04bc, 0x04bc, +0x04be, 0x04be, +0x04c0, 0x04c1, +0x04c3, 0x04c3, +0x04c5, 0x04c5, +0x04c7, 0x04c7, +0x04c9, 0x04c9, +0x04cb, 0x04cb, +0x04cd, 0x04cd, +0x04d0, 0x04d0, +0x04d2, 0x04d2, +0x04d4, 0x04d4, +0x04d6, 0x04d6, +0x04d8, 0x04d8, +0x04da, 0x04da, +0x04dc, 0x04dc, +0x04de, 0x04de, +0x04e0, 0x04e0, +0x04e2, 0x04e2, +0x04e4, 0x04e4, +0x04e6, 0x04e6, +0x04e8, 0x04e8, +0x04ea, 0x04ea, +0x04ec, 0x04ec, +0x04ee, 0x04ee, +0x04f0, 0x04f0, +0x04f2, 0x04f2, +0x04f4, 0x04f4, +0x04f6, 0x04f6, +0x04f8, 0x04f8, +0x04fa, 0x04fa, +0x04fc, 0x04fc, +0x04fe, 0x04fe, +0x0500, 0x0500, +0x0502, 0x0502, +0x0504, 0x0504, +0x0506, 0x0506, +0x0508, 0x0508, +0x050a, 0x050a, +0x050c, 0x050c, +0x050e, 0x050e, +0x0510, 0x0510, +0x0512, 0x0512, +0x0514, 0x0514, +0x0516, 0x0516, +0x0518, 0x0518, +0x051a, 0x051a, +0x051c, 0x051c, +0x051e, 0x051e, +0x0520, 0x0520, +0x0522, 0x0522, +0x0524, 0x0524, +0x0526, 0x0526, +0x0528, 0x0528, +0x052a, 0x052a, +0x052c, 0x052c, +0x052e, 0x052e, +0x0531, 0x0556, +0x0587, 0x0587, +0x10a0, 0x10c5, +0x10c7, 0x10c7, +0x10cd, 0x10cd, +0x13f8, 0x13fd, +0x1c80, 0x1c88, +0x1c90, 0x1cba, +0x1cbd, 0x1cbf, +0x1e00, 0x1e00, +0x1e02, 0x1e02, +0x1e04, 0x1e04, +0x1e06, 0x1e06, +0x1e08, 0x1e08, +0x1e0a, 0x1e0a, +0x1e0c, 0x1e0c, +0x1e0e, 0x1e0e, +0x1e10, 0x1e10, +0x1e12, 0x1e12, +0x1e14, 0x1e14, +0x1e16, 0x1e16, +0x1e18, 0x1e18, +0x1e1a, 0x1e1a, +0x1e1c, 0x1e1c, +0x1e1e, 0x1e1e, +0x1e20, 0x1e20, +0x1e22, 0x1e22, +0x1e24, 0x1e24, +0x1e26, 0x1e26, +0x1e28, 0x1e28, +0x1e2a, 0x1e2a, +0x1e2c, 0x1e2c, +0x1e2e, 0x1e2e, +0x1e30, 0x1e30, +0x1e32, 0x1e32, +0x1e34, 0x1e34, +0x1e36, 0x1e36, +0x1e38, 0x1e38, +0x1e3a, 0x1e3a, +0x1e3c, 0x1e3c, +0x1e3e, 0x1e3e, +0x1e40, 0x1e40, +0x1e42, 0x1e42, +0x1e44, 0x1e44, +0x1e46, 0x1e46, +0x1e48, 0x1e48, +0x1e4a, 0x1e4a, +0x1e4c, 0x1e4c, +0x1e4e, 0x1e4e, +0x1e50, 0x1e50, +0x1e52, 0x1e52, +0x1e54, 0x1e54, +0x1e56, 0x1e56, +0x1e58, 0x1e58, +0x1e5a, 0x1e5a, +0x1e5c, 0x1e5c, +0x1e5e, 0x1e5e, +0x1e60, 0x1e60, +0x1e62, 0x1e62, +0x1e64, 0x1e64, +0x1e66, 0x1e66, +0x1e68, 0x1e68, +0x1e6a, 0x1e6a, +0x1e6c, 0x1e6c, +0x1e6e, 0x1e6e, +0x1e70, 0x1e70, +0x1e72, 0x1e72, +0x1e74, 0x1e74, +0x1e76, 0x1e76, +0x1e78, 0x1e78, +0x1e7a, 0x1e7a, +0x1e7c, 0x1e7c, +0x1e7e, 0x1e7e, +0x1e80, 0x1e80, +0x1e82, 0x1e82, +0x1e84, 0x1e84, +0x1e86, 0x1e86, +0x1e88, 0x1e88, +0x1e8a, 0x1e8a, +0x1e8c, 0x1e8c, +0x1e8e, 0x1e8e, +0x1e90, 0x1e90, +0x1e92, 0x1e92, +0x1e94, 0x1e94, +0x1e9a, 0x1e9b, +0x1e9e, 0x1e9e, +0x1ea0, 0x1ea0, +0x1ea2, 0x1ea2, +0x1ea4, 0x1ea4, +0x1ea6, 0x1ea6, +0x1ea8, 0x1ea8, +0x1eaa, 0x1eaa, +0x1eac, 0x1eac, +0x1eae, 0x1eae, +0x1eb0, 0x1eb0, +0x1eb2, 0x1eb2, +0x1eb4, 0x1eb4, +0x1eb6, 0x1eb6, +0x1eb8, 0x1eb8, +0x1eba, 0x1eba, +0x1ebc, 0x1ebc, +0x1ebe, 0x1ebe, +0x1ec0, 0x1ec0, +0x1ec2, 0x1ec2, +0x1ec4, 0x1ec4, +0x1ec6, 0x1ec6, +0x1ec8, 0x1ec8, +0x1eca, 0x1eca, +0x1ecc, 0x1ecc, +0x1ece, 0x1ece, +0x1ed0, 0x1ed0, +0x1ed2, 0x1ed2, +0x1ed4, 0x1ed4, +0x1ed6, 0x1ed6, +0x1ed8, 0x1ed8, +0x1eda, 0x1eda, +0x1edc, 0x1edc, +0x1ede, 0x1ede, +0x1ee0, 0x1ee0, +0x1ee2, 0x1ee2, +0x1ee4, 0x1ee4, +0x1ee6, 0x1ee6, +0x1ee8, 0x1ee8, +0x1eea, 0x1eea, +0x1eec, 0x1eec, +0x1eee, 0x1eee, +0x1ef0, 0x1ef0, +0x1ef2, 0x1ef2, +0x1ef4, 0x1ef4, +0x1ef6, 0x1ef6, +0x1ef8, 0x1ef8, +0x1efa, 0x1efa, +0x1efc, 0x1efc, +0x1efe, 0x1efe, +0x1f08, 0x1f0f, +0x1f18, 0x1f1d, +0x1f28, 0x1f2f, +0x1f38, 0x1f3f, +0x1f48, 0x1f4d, +0x1f59, 0x1f59, +0x1f5b, 0x1f5b, +0x1f5d, 0x1f5d, +0x1f5f, 0x1f5f, +0x1f68, 0x1f6f, +0x1f80, 0x1faf, +0x1fb2, 0x1fb4, +0x1fb7, 0x1fbc, +0x1fc2, 0x1fc4, +0x1fc7, 0x1fcc, +0x1fd8, 0x1fdb, +0x1fe8, 0x1fec, +0x1ff2, 0x1ff4, +0x1ff7, 0x1ffc, +0x2126, 0x2126, +0x212a, 0x212b, +0x2132, 0x2132, +0x2160, 0x216f, +0x2183, 0x2183, +0x24b6, 0x24cf, +0x2c00, 0x2c2e, +0x2c60, 0x2c60, +0x2c62, 0x2c64, +0x2c67, 0x2c67, +0x2c69, 0x2c69, +0x2c6b, 0x2c6b, +0x2c6d, 0x2c70, +0x2c72, 0x2c72, +0x2c75, 0x2c75, +0x2c7e, 0x2c80, +0x2c82, 0x2c82, +0x2c84, 0x2c84, +0x2c86, 0x2c86, +0x2c88, 0x2c88, +0x2c8a, 0x2c8a, +0x2c8c, 0x2c8c, +0x2c8e, 0x2c8e, +0x2c90, 0x2c90, +0x2c92, 0x2c92, +0x2c94, 0x2c94, +0x2c96, 0x2c96, +0x2c98, 0x2c98, +0x2c9a, 0x2c9a, +0x2c9c, 0x2c9c, +0x2c9e, 0x2c9e, +0x2ca0, 0x2ca0, +0x2ca2, 0x2ca2, +0x2ca4, 0x2ca4, +0x2ca6, 0x2ca6, +0x2ca8, 0x2ca8, +0x2caa, 0x2caa, +0x2cac, 0x2cac, +0x2cae, 0x2cae, +0x2cb0, 0x2cb0, +0x2cb2, 0x2cb2, +0x2cb4, 0x2cb4, +0x2cb6, 0x2cb6, +0x2cb8, 0x2cb8, +0x2cba, 0x2cba, +0x2cbc, 0x2cbc, +0x2cbe, 0x2cbe, +0x2cc0, 0x2cc0, +0x2cc2, 0x2cc2, +0x2cc4, 0x2cc4, +0x2cc6, 0x2cc6, +0x2cc8, 0x2cc8, +0x2cca, 0x2cca, +0x2ccc, 0x2ccc, +0x2cce, 0x2cce, +0x2cd0, 0x2cd0, +0x2cd2, 0x2cd2, +0x2cd4, 0x2cd4, +0x2cd6, 0x2cd6, +0x2cd8, 0x2cd8, +0x2cda, 0x2cda, +0x2cdc, 0x2cdc, +0x2cde, 0x2cde, +0x2ce0, 0x2ce0, +0x2ce2, 0x2ce2, +0x2ceb, 0x2ceb, +0x2ced, 0x2ced, +0x2cf2, 0x2cf2, +0xa640, 0xa640, +0xa642, 0xa642, +0xa644, 0xa644, +0xa646, 0xa646, +0xa648, 0xa648, +0xa64a, 0xa64a, +0xa64c, 0xa64c, +0xa64e, 0xa64e, +0xa650, 0xa650, +0xa652, 0xa652, +0xa654, 0xa654, +0xa656, 0xa656, +0xa658, 0xa658, +0xa65a, 0xa65a, +0xa65c, 0xa65c, +0xa65e, 0xa65e, +0xa660, 0xa660, +0xa662, 0xa662, +0xa664, 0xa664, +0xa666, 0xa666, +0xa668, 0xa668, +0xa66a, 0xa66a, +0xa66c, 0xa66c, +0xa680, 0xa680, +0xa682, 0xa682, +0xa684, 0xa684, +0xa686, 0xa686, +0xa688, 0xa688, +0xa68a, 0xa68a, +0xa68c, 0xa68c, +0xa68e, 0xa68e, +0xa690, 0xa690, +0xa692, 0xa692, +0xa694, 0xa694, +0xa696, 0xa696, +0xa698, 0xa698, +0xa69a, 0xa69a, +0xa722, 0xa722, +0xa724, 0xa724, +0xa726, 0xa726, +0xa728, 0xa728, +0xa72a, 0xa72a, +0xa72c, 0xa72c, +0xa72e, 0xa72e, +0xa732, 0xa732, +0xa734, 0xa734, +0xa736, 0xa736, +0xa738, 0xa738, +0xa73a, 0xa73a, +0xa73c, 0xa73c, +0xa73e, 0xa73e, +0xa740, 0xa740, +0xa742, 0xa742, +0xa744, 0xa744, +0xa746, 0xa746, +0xa748, 0xa748, +0xa74a, 0xa74a, +0xa74c, 0xa74c, +0xa74e, 0xa74e, +0xa750, 0xa750, +0xa752, 0xa752, +0xa754, 0xa754, +0xa756, 0xa756, +0xa758, 0xa758, +0xa75a, 0xa75a, +0xa75c, 0xa75c, +0xa75e, 0xa75e, +0xa760, 0xa760, +0xa762, 0xa762, +0xa764, 0xa764, +0xa766, 0xa766, +0xa768, 0xa768, +0xa76a, 0xa76a, +0xa76c, 0xa76c, +0xa76e, 0xa76e, +0xa779, 0xa779, +0xa77b, 0xa77b, +0xa77d, 0xa77e, +0xa780, 0xa780, +0xa782, 0xa782, +0xa784, 0xa784, +0xa786, 0xa786, +0xa78b, 0xa78b, +0xa78d, 0xa78d, +0xa790, 0xa790, +0xa792, 0xa792, +0xa796, 0xa796, +0xa798, 0xa798, +0xa79a, 0xa79a, +0xa79c, 0xa79c, +0xa79e, 0xa79e, +0xa7a0, 0xa7a0, +0xa7a2, 0xa7a2, +0xa7a4, 0xa7a4, +0xa7a6, 0xa7a6, +0xa7a8, 0xa7a8, +0xa7aa, 0xa7ae, +0xa7b0, 0xa7b4, +0xa7b6, 0xa7b6, +0xa7b8, 0xa7b8, +0xab70, 0xabbf, +0xfb00, 0xfb06, +0xfb13, 0xfb17, +0xff21, 0xff3a, +0x10400, 0x10427, +0x104b0, 0x104d3, +0x10c80, 0x10cb2, +0x118a0, 0x118bf, +0x16e40, 0x16e5f, +0x1e900, 0x1e921, +}; /* END of CR_Changes_When_Casefolded */ + +/* PROPERTY: 'Changes_When_Casemapped': Derived Property */ +static const OnigCodePoint +CR_Changes_When_Casemapped[] = { 121, +0x0041, 0x005a, +0x0061, 0x007a, +0x00b5, 0x00b5, +0x00c0, 0x00d6, +0x00d8, 0x00f6, +0x00f8, 0x0137, +0x0139, 0x018c, +0x018e, 0x019a, +0x019c, 0x01a9, +0x01ac, 0x01b9, +0x01bc, 0x01bd, +0x01bf, 0x01bf, +0x01c4, 0x0220, +0x0222, 0x0233, +0x023a, 0x0254, +0x0256, 0x0257, +0x0259, 0x0259, +0x025b, 0x025c, +0x0260, 0x0261, +0x0263, 0x0263, +0x0265, 0x0266, +0x0268, 0x026c, +0x026f, 0x026f, +0x0271, 0x0272, +0x0275, 0x0275, +0x027d, 0x027d, +0x0280, 0x0280, +0x0283, 0x0283, +0x0287, 0x028c, +0x0292, 0x0292, +0x029d, 0x029e, +0x0345, 0x0345, +0x0370, 0x0373, +0x0376, 0x0377, +0x037b, 0x037d, +0x037f, 0x037f, +0x0386, 0x0386, +0x0388, 0x038a, +0x038c, 0x038c, +0x038e, 0x03a1, +0x03a3, 0x03d1, +0x03d5, 0x03f5, +0x03f7, 0x03fb, +0x03fd, 0x0481, +0x048a, 0x052f, +0x0531, 0x0556, +0x0561, 0x0587, +0x10a0, 0x10c5, +0x10c7, 0x10c7, +0x10cd, 0x10cd, +0x10d0, 0x10fa, +0x10fd, 0x10ff, +0x13a0, 0x13f5, +0x13f8, 0x13fd, +0x1c80, 0x1c88, +0x1c90, 0x1cba, +0x1cbd, 0x1cbf, +0x1d79, 0x1d79, +0x1d7d, 0x1d7d, +0x1e00, 0x1e9b, +0x1e9e, 0x1e9e, +0x1ea0, 0x1f15, +0x1f18, 0x1f1d, +0x1f20, 0x1f45, +0x1f48, 0x1f4d, +0x1f50, 0x1f57, +0x1f59, 0x1f59, +0x1f5b, 0x1f5b, +0x1f5d, 0x1f5d, +0x1f5f, 0x1f7d, +0x1f80, 0x1fb4, +0x1fb6, 0x1fbc, +0x1fbe, 0x1fbe, +0x1fc2, 0x1fc4, +0x1fc6, 0x1fcc, +0x1fd0, 0x1fd3, +0x1fd6, 0x1fdb, +0x1fe0, 0x1fec, +0x1ff2, 0x1ff4, +0x1ff6, 0x1ffc, +0x2126, 0x2126, +0x212a, 0x212b, +0x2132, 0x2132, +0x214e, 0x214e, +0x2160, 0x217f, +0x2183, 0x2184, +0x24b6, 0x24e9, +0x2c00, 0x2c2e, +0x2c30, 0x2c5e, +0x2c60, 0x2c70, +0x2c72, 0x2c73, +0x2c75, 0x2c76, +0x2c7e, 0x2ce3, +0x2ceb, 0x2cee, +0x2cf2, 0x2cf3, +0x2d00, 0x2d25, +0x2d27, 0x2d27, +0x2d2d, 0x2d2d, +0xa640, 0xa66d, +0xa680, 0xa69b, +0xa722, 0xa72f, +0xa732, 0xa76f, +0xa779, 0xa787, +0xa78b, 0xa78d, +0xa790, 0xa793, +0xa796, 0xa7ae, +0xa7b0, 0xa7b9, +0xab53, 0xab53, +0xab70, 0xabbf, +0xfb00, 0xfb06, +0xfb13, 0xfb17, +0xff21, 0xff3a, +0xff41, 0xff5a, +0x10400, 0x1044f, +0x104b0, 0x104d3, +0x104d8, 0x104fb, +0x10c80, 0x10cb2, +0x10cc0, 0x10cf2, +0x118a0, 0x118df, +0x16e40, 0x16e7f, +0x1e900, 0x1e943, +}; /* END of CR_Changes_When_Casemapped */ + +/* PROPERTY: 'Changes_When_Lowercased': Derived Property */ +static const OnigCodePoint +CR_Changes_When_Lowercased[] = { 594, +0x0041, 0x005a, +0x00c0, 0x00d6, +0x00d8, 0x00de, +0x0100, 0x0100, +0x0102, 0x0102, +0x0104, 0x0104, +0x0106, 0x0106, +0x0108, 0x0108, +0x010a, 0x010a, +0x010c, 0x010c, +0x010e, 0x010e, +0x0110, 0x0110, +0x0112, 0x0112, +0x0114, 0x0114, +0x0116, 0x0116, +0x0118, 0x0118, +0x011a, 0x011a, +0x011c, 0x011c, +0x011e, 0x011e, +0x0120, 0x0120, +0x0122, 0x0122, +0x0124, 0x0124, +0x0126, 0x0126, +0x0128, 0x0128, +0x012a, 0x012a, +0x012c, 0x012c, +0x012e, 0x012e, +0x0130, 0x0130, +0x0132, 0x0132, +0x0134, 0x0134, +0x0136, 0x0136, +0x0139, 0x0139, +0x013b, 0x013b, +0x013d, 0x013d, +0x013f, 0x013f, +0x0141, 0x0141, +0x0143, 0x0143, +0x0145, 0x0145, +0x0147, 0x0147, +0x014a, 0x014a, +0x014c, 0x014c, +0x014e, 0x014e, +0x0150, 0x0150, +0x0152, 0x0152, +0x0154, 0x0154, +0x0156, 0x0156, +0x0158, 0x0158, +0x015a, 0x015a, +0x015c, 0x015c, +0x015e, 0x015e, +0x0160, 0x0160, +0x0162, 0x0162, +0x0164, 0x0164, +0x0166, 0x0166, +0x0168, 0x0168, +0x016a, 0x016a, +0x016c, 0x016c, +0x016e, 0x016e, +0x0170, 0x0170, +0x0172, 0x0172, +0x0174, 0x0174, +0x0176, 0x0176, +0x0178, 0x0179, +0x017b, 0x017b, +0x017d, 0x017d, +0x0181, 0x0182, +0x0184, 0x0184, +0x0186, 0x0187, +0x0189, 0x018b, +0x018e, 0x0191, +0x0193, 0x0194, +0x0196, 0x0198, +0x019c, 0x019d, +0x019f, 0x01a0, +0x01a2, 0x01a2, +0x01a4, 0x01a4, +0x01a6, 0x01a7, +0x01a9, 0x01a9, +0x01ac, 0x01ac, +0x01ae, 0x01af, +0x01b1, 0x01b3, +0x01b5, 0x01b5, +0x01b7, 0x01b8, +0x01bc, 0x01bc, +0x01c4, 0x01c5, +0x01c7, 0x01c8, +0x01ca, 0x01cb, +0x01cd, 0x01cd, +0x01cf, 0x01cf, +0x01d1, 0x01d1, +0x01d3, 0x01d3, +0x01d5, 0x01d5, +0x01d7, 0x01d7, +0x01d9, 0x01d9, +0x01db, 0x01db, +0x01de, 0x01de, +0x01e0, 0x01e0, +0x01e2, 0x01e2, +0x01e4, 0x01e4, +0x01e6, 0x01e6, +0x01e8, 0x01e8, +0x01ea, 0x01ea, +0x01ec, 0x01ec, +0x01ee, 0x01ee, +0x01f1, 0x01f2, +0x01f4, 0x01f4, +0x01f6, 0x01f8, +0x01fa, 0x01fa, +0x01fc, 0x01fc, +0x01fe, 0x01fe, +0x0200, 0x0200, +0x0202, 0x0202, +0x0204, 0x0204, +0x0206, 0x0206, +0x0208, 0x0208, +0x020a, 0x020a, +0x020c, 0x020c, +0x020e, 0x020e, +0x0210, 0x0210, +0x0212, 0x0212, +0x0214, 0x0214, +0x0216, 0x0216, +0x0218, 0x0218, +0x021a, 0x021a, +0x021c, 0x021c, +0x021e, 0x021e, +0x0220, 0x0220, +0x0222, 0x0222, +0x0224, 0x0224, +0x0226, 0x0226, +0x0228, 0x0228, +0x022a, 0x022a, +0x022c, 0x022c, +0x022e, 0x022e, +0x0230, 0x0230, +0x0232, 0x0232, +0x023a, 0x023b, +0x023d, 0x023e, +0x0241, 0x0241, +0x0243, 0x0246, +0x0248, 0x0248, +0x024a, 0x024a, +0x024c, 0x024c, +0x024e, 0x024e, +0x0370, 0x0370, +0x0372, 0x0372, +0x0376, 0x0376, +0x037f, 0x037f, +0x0386, 0x0386, +0x0388, 0x038a, +0x038c, 0x038c, +0x038e, 0x038f, +0x0391, 0x03a1, +0x03a3, 0x03ab, +0x03cf, 0x03cf, +0x03d8, 0x03d8, +0x03da, 0x03da, +0x03dc, 0x03dc, +0x03de, 0x03de, +0x03e0, 0x03e0, +0x03e2, 0x03e2, +0x03e4, 0x03e4, +0x03e6, 0x03e6, +0x03e8, 0x03e8, +0x03ea, 0x03ea, +0x03ec, 0x03ec, +0x03ee, 0x03ee, +0x03f4, 0x03f4, +0x03f7, 0x03f7, +0x03f9, 0x03fa, +0x03fd, 0x042f, +0x0460, 0x0460, +0x0462, 0x0462, +0x0464, 0x0464, +0x0466, 0x0466, +0x0468, 0x0468, +0x046a, 0x046a, +0x046c, 0x046c, +0x046e, 0x046e, +0x0470, 0x0470, +0x0472, 0x0472, +0x0474, 0x0474, +0x0476, 0x0476, +0x0478, 0x0478, +0x047a, 0x047a, +0x047c, 0x047c, +0x047e, 0x047e, +0x0480, 0x0480, +0x048a, 0x048a, +0x048c, 0x048c, +0x048e, 0x048e, +0x0490, 0x0490, +0x0492, 0x0492, +0x0494, 0x0494, +0x0496, 0x0496, +0x0498, 0x0498, +0x049a, 0x049a, +0x049c, 0x049c, +0x049e, 0x049e, +0x04a0, 0x04a0, +0x04a2, 0x04a2, +0x04a4, 0x04a4, +0x04a6, 0x04a6, +0x04a8, 0x04a8, +0x04aa, 0x04aa, +0x04ac, 0x04ac, +0x04ae, 0x04ae, +0x04b0, 0x04b0, +0x04b2, 0x04b2, +0x04b4, 0x04b4, +0x04b6, 0x04b6, +0x04b8, 0x04b8, +0x04ba, 0x04ba, +0x04bc, 0x04bc, +0x04be, 0x04be, +0x04c0, 0x04c1, +0x04c3, 0x04c3, +0x04c5, 0x04c5, +0x04c7, 0x04c7, +0x04c9, 0x04c9, +0x04cb, 0x04cb, +0x04cd, 0x04cd, +0x04d0, 0x04d0, +0x04d2, 0x04d2, +0x04d4, 0x04d4, +0x04d6, 0x04d6, +0x04d8, 0x04d8, +0x04da, 0x04da, +0x04dc, 0x04dc, +0x04de, 0x04de, +0x04e0, 0x04e0, +0x04e2, 0x04e2, +0x04e4, 0x04e4, +0x04e6, 0x04e6, +0x04e8, 0x04e8, +0x04ea, 0x04ea, +0x04ec, 0x04ec, +0x04ee, 0x04ee, +0x04f0, 0x04f0, +0x04f2, 0x04f2, +0x04f4, 0x04f4, +0x04f6, 0x04f6, +0x04f8, 0x04f8, +0x04fa, 0x04fa, +0x04fc, 0x04fc, +0x04fe, 0x04fe, +0x0500, 0x0500, +0x0502, 0x0502, +0x0504, 0x0504, +0x0506, 0x0506, +0x0508, 0x0508, +0x050a, 0x050a, +0x050c, 0x050c, +0x050e, 0x050e, +0x0510, 0x0510, +0x0512, 0x0512, +0x0514, 0x0514, +0x0516, 0x0516, +0x0518, 0x0518, +0x051a, 0x051a, +0x051c, 0x051c, +0x051e, 0x051e, +0x0520, 0x0520, +0x0522, 0x0522, +0x0524, 0x0524, +0x0526, 0x0526, +0x0528, 0x0528, +0x052a, 0x052a, +0x052c, 0x052c, +0x052e, 0x052e, +0x0531, 0x0556, +0x10a0, 0x10c5, +0x10c7, 0x10c7, +0x10cd, 0x10cd, +0x13a0, 0x13f5, +0x1c90, 0x1cba, +0x1cbd, 0x1cbf, +0x1e00, 0x1e00, +0x1e02, 0x1e02, +0x1e04, 0x1e04, +0x1e06, 0x1e06, +0x1e08, 0x1e08, +0x1e0a, 0x1e0a, +0x1e0c, 0x1e0c, +0x1e0e, 0x1e0e, +0x1e10, 0x1e10, +0x1e12, 0x1e12, +0x1e14, 0x1e14, +0x1e16, 0x1e16, +0x1e18, 0x1e18, +0x1e1a, 0x1e1a, +0x1e1c, 0x1e1c, +0x1e1e, 0x1e1e, +0x1e20, 0x1e20, +0x1e22, 0x1e22, +0x1e24, 0x1e24, +0x1e26, 0x1e26, +0x1e28, 0x1e28, +0x1e2a, 0x1e2a, +0x1e2c, 0x1e2c, +0x1e2e, 0x1e2e, +0x1e30, 0x1e30, +0x1e32, 0x1e32, +0x1e34, 0x1e34, +0x1e36, 0x1e36, +0x1e38, 0x1e38, +0x1e3a, 0x1e3a, +0x1e3c, 0x1e3c, +0x1e3e, 0x1e3e, +0x1e40, 0x1e40, +0x1e42, 0x1e42, +0x1e44, 0x1e44, +0x1e46, 0x1e46, +0x1e48, 0x1e48, +0x1e4a, 0x1e4a, +0x1e4c, 0x1e4c, +0x1e4e, 0x1e4e, +0x1e50, 0x1e50, +0x1e52, 0x1e52, +0x1e54, 0x1e54, +0x1e56, 0x1e56, +0x1e58, 0x1e58, +0x1e5a, 0x1e5a, +0x1e5c, 0x1e5c, +0x1e5e, 0x1e5e, +0x1e60, 0x1e60, +0x1e62, 0x1e62, +0x1e64, 0x1e64, +0x1e66, 0x1e66, +0x1e68, 0x1e68, +0x1e6a, 0x1e6a, +0x1e6c, 0x1e6c, +0x1e6e, 0x1e6e, +0x1e70, 0x1e70, +0x1e72, 0x1e72, +0x1e74, 0x1e74, +0x1e76, 0x1e76, +0x1e78, 0x1e78, +0x1e7a, 0x1e7a, +0x1e7c, 0x1e7c, +0x1e7e, 0x1e7e, +0x1e80, 0x1e80, +0x1e82, 0x1e82, +0x1e84, 0x1e84, +0x1e86, 0x1e86, +0x1e88, 0x1e88, +0x1e8a, 0x1e8a, +0x1e8c, 0x1e8c, +0x1e8e, 0x1e8e, +0x1e90, 0x1e90, +0x1e92, 0x1e92, +0x1e94, 0x1e94, +0x1e9e, 0x1e9e, +0x1ea0, 0x1ea0, +0x1ea2, 0x1ea2, +0x1ea4, 0x1ea4, +0x1ea6, 0x1ea6, +0x1ea8, 0x1ea8, +0x1eaa, 0x1eaa, +0x1eac, 0x1eac, +0x1eae, 0x1eae, +0x1eb0, 0x1eb0, +0x1eb2, 0x1eb2, +0x1eb4, 0x1eb4, +0x1eb6, 0x1eb6, +0x1eb8, 0x1eb8, +0x1eba, 0x1eba, +0x1ebc, 0x1ebc, +0x1ebe, 0x1ebe, +0x1ec0, 0x1ec0, +0x1ec2, 0x1ec2, +0x1ec4, 0x1ec4, +0x1ec6, 0x1ec6, +0x1ec8, 0x1ec8, +0x1eca, 0x1eca, +0x1ecc, 0x1ecc, +0x1ece, 0x1ece, +0x1ed0, 0x1ed0, +0x1ed2, 0x1ed2, +0x1ed4, 0x1ed4, +0x1ed6, 0x1ed6, +0x1ed8, 0x1ed8, +0x1eda, 0x1eda, +0x1edc, 0x1edc, +0x1ede, 0x1ede, +0x1ee0, 0x1ee0, +0x1ee2, 0x1ee2, +0x1ee4, 0x1ee4, +0x1ee6, 0x1ee6, +0x1ee8, 0x1ee8, +0x1eea, 0x1eea, +0x1eec, 0x1eec, +0x1eee, 0x1eee, +0x1ef0, 0x1ef0, +0x1ef2, 0x1ef2, +0x1ef4, 0x1ef4, +0x1ef6, 0x1ef6, +0x1ef8, 0x1ef8, +0x1efa, 0x1efa, +0x1efc, 0x1efc, +0x1efe, 0x1efe, +0x1f08, 0x1f0f, +0x1f18, 0x1f1d, +0x1f28, 0x1f2f, +0x1f38, 0x1f3f, +0x1f48, 0x1f4d, +0x1f59, 0x1f59, +0x1f5b, 0x1f5b, +0x1f5d, 0x1f5d, +0x1f5f, 0x1f5f, +0x1f68, 0x1f6f, +0x1f88, 0x1f8f, +0x1f98, 0x1f9f, +0x1fa8, 0x1faf, +0x1fb8, 0x1fbc, +0x1fc8, 0x1fcc, +0x1fd8, 0x1fdb, +0x1fe8, 0x1fec, +0x1ff8, 0x1ffc, +0x2126, 0x2126, +0x212a, 0x212b, +0x2132, 0x2132, +0x2160, 0x216f, +0x2183, 0x2183, +0x24b6, 0x24cf, +0x2c00, 0x2c2e, +0x2c60, 0x2c60, +0x2c62, 0x2c64, +0x2c67, 0x2c67, +0x2c69, 0x2c69, +0x2c6b, 0x2c6b, +0x2c6d, 0x2c70, +0x2c72, 0x2c72, +0x2c75, 0x2c75, +0x2c7e, 0x2c80, +0x2c82, 0x2c82, +0x2c84, 0x2c84, +0x2c86, 0x2c86, +0x2c88, 0x2c88, +0x2c8a, 0x2c8a, +0x2c8c, 0x2c8c, +0x2c8e, 0x2c8e, +0x2c90, 0x2c90, +0x2c92, 0x2c92, +0x2c94, 0x2c94, +0x2c96, 0x2c96, +0x2c98, 0x2c98, +0x2c9a, 0x2c9a, +0x2c9c, 0x2c9c, +0x2c9e, 0x2c9e, +0x2ca0, 0x2ca0, +0x2ca2, 0x2ca2, +0x2ca4, 0x2ca4, +0x2ca6, 0x2ca6, +0x2ca8, 0x2ca8, +0x2caa, 0x2caa, +0x2cac, 0x2cac, +0x2cae, 0x2cae, +0x2cb0, 0x2cb0, +0x2cb2, 0x2cb2, +0x2cb4, 0x2cb4, +0x2cb6, 0x2cb6, +0x2cb8, 0x2cb8, +0x2cba, 0x2cba, +0x2cbc, 0x2cbc, +0x2cbe, 0x2cbe, +0x2cc0, 0x2cc0, +0x2cc2, 0x2cc2, +0x2cc4, 0x2cc4, +0x2cc6, 0x2cc6, +0x2cc8, 0x2cc8, +0x2cca, 0x2cca, +0x2ccc, 0x2ccc, +0x2cce, 0x2cce, +0x2cd0, 0x2cd0, +0x2cd2, 0x2cd2, +0x2cd4, 0x2cd4, +0x2cd6, 0x2cd6, +0x2cd8, 0x2cd8, +0x2cda, 0x2cda, +0x2cdc, 0x2cdc, +0x2cde, 0x2cde, +0x2ce0, 0x2ce0, +0x2ce2, 0x2ce2, +0x2ceb, 0x2ceb, +0x2ced, 0x2ced, +0x2cf2, 0x2cf2, +0xa640, 0xa640, +0xa642, 0xa642, +0xa644, 0xa644, +0xa646, 0xa646, +0xa648, 0xa648, +0xa64a, 0xa64a, +0xa64c, 0xa64c, +0xa64e, 0xa64e, +0xa650, 0xa650, +0xa652, 0xa652, +0xa654, 0xa654, +0xa656, 0xa656, +0xa658, 0xa658, +0xa65a, 0xa65a, +0xa65c, 0xa65c, +0xa65e, 0xa65e, +0xa660, 0xa660, +0xa662, 0xa662, +0xa664, 0xa664, +0xa666, 0xa666, +0xa668, 0xa668, +0xa66a, 0xa66a, +0xa66c, 0xa66c, +0xa680, 0xa680, +0xa682, 0xa682, +0xa684, 0xa684, +0xa686, 0xa686, +0xa688, 0xa688, +0xa68a, 0xa68a, +0xa68c, 0xa68c, +0xa68e, 0xa68e, +0xa690, 0xa690, +0xa692, 0xa692, +0xa694, 0xa694, +0xa696, 0xa696, +0xa698, 0xa698, +0xa69a, 0xa69a, +0xa722, 0xa722, +0xa724, 0xa724, +0xa726, 0xa726, +0xa728, 0xa728, +0xa72a, 0xa72a, +0xa72c, 0xa72c, +0xa72e, 0xa72e, +0xa732, 0xa732, +0xa734, 0xa734, +0xa736, 0xa736, +0xa738, 0xa738, +0xa73a, 0xa73a, +0xa73c, 0xa73c, +0xa73e, 0xa73e, +0xa740, 0xa740, +0xa742, 0xa742, +0xa744, 0xa744, +0xa746, 0xa746, +0xa748, 0xa748, +0xa74a, 0xa74a, +0xa74c, 0xa74c, +0xa74e, 0xa74e, +0xa750, 0xa750, +0xa752, 0xa752, +0xa754, 0xa754, +0xa756, 0xa756, +0xa758, 0xa758, +0xa75a, 0xa75a, +0xa75c, 0xa75c, +0xa75e, 0xa75e, +0xa760, 0xa760, +0xa762, 0xa762, +0xa764, 0xa764, +0xa766, 0xa766, +0xa768, 0xa768, +0xa76a, 0xa76a, +0xa76c, 0xa76c, +0xa76e, 0xa76e, +0xa779, 0xa779, +0xa77b, 0xa77b, +0xa77d, 0xa77e, +0xa780, 0xa780, +0xa782, 0xa782, +0xa784, 0xa784, +0xa786, 0xa786, +0xa78b, 0xa78b, +0xa78d, 0xa78d, +0xa790, 0xa790, +0xa792, 0xa792, +0xa796, 0xa796, +0xa798, 0xa798, +0xa79a, 0xa79a, +0xa79c, 0xa79c, +0xa79e, 0xa79e, +0xa7a0, 0xa7a0, +0xa7a2, 0xa7a2, +0xa7a4, 0xa7a4, +0xa7a6, 0xa7a6, +0xa7a8, 0xa7a8, +0xa7aa, 0xa7ae, +0xa7b0, 0xa7b4, +0xa7b6, 0xa7b6, +0xa7b8, 0xa7b8, +0xff21, 0xff3a, +0x10400, 0x10427, +0x104b0, 0x104d3, +0x10c80, 0x10cb2, +0x118a0, 0x118bf, +0x16e40, 0x16e5f, +0x1e900, 0x1e921, +}; /* END of CR_Changes_When_Lowercased */ + +/* PROPERTY: 'Changes_When_Titlecased': Derived Property */ +static const OnigCodePoint +CR_Changes_When_Titlecased[] = { 610, +0x0061, 0x007a, +0x00b5, 0x00b5, +0x00df, 0x00f6, +0x00f8, 0x00ff, +0x0101, 0x0101, +0x0103, 0x0103, +0x0105, 0x0105, +0x0107, 0x0107, +0x0109, 0x0109, +0x010b, 0x010b, +0x010d, 0x010d, +0x010f, 0x010f, +0x0111, 0x0111, +0x0113, 0x0113, +0x0115, 0x0115, +0x0117, 0x0117, +0x0119, 0x0119, +0x011b, 0x011b, +0x011d, 0x011d, +0x011f, 0x011f, +0x0121, 0x0121, +0x0123, 0x0123, +0x0125, 0x0125, +0x0127, 0x0127, +0x0129, 0x0129, +0x012b, 0x012b, +0x012d, 0x012d, +0x012f, 0x012f, +0x0131, 0x0131, +0x0133, 0x0133, +0x0135, 0x0135, +0x0137, 0x0137, +0x013a, 0x013a, +0x013c, 0x013c, +0x013e, 0x013e, +0x0140, 0x0140, +0x0142, 0x0142, +0x0144, 0x0144, +0x0146, 0x0146, +0x0148, 0x0149, +0x014b, 0x014b, +0x014d, 0x014d, +0x014f, 0x014f, +0x0151, 0x0151, +0x0153, 0x0153, +0x0155, 0x0155, +0x0157, 0x0157, +0x0159, 0x0159, +0x015b, 0x015b, +0x015d, 0x015d, +0x015f, 0x015f, +0x0161, 0x0161, +0x0163, 0x0163, +0x0165, 0x0165, +0x0167, 0x0167, +0x0169, 0x0169, +0x016b, 0x016b, +0x016d, 0x016d, +0x016f, 0x016f, +0x0171, 0x0171, +0x0173, 0x0173, +0x0175, 0x0175, +0x0177, 0x0177, +0x017a, 0x017a, +0x017c, 0x017c, +0x017e, 0x0180, +0x0183, 0x0183, +0x0185, 0x0185, +0x0188, 0x0188, +0x018c, 0x018c, +0x0192, 0x0192, +0x0195, 0x0195, +0x0199, 0x019a, +0x019e, 0x019e, +0x01a1, 0x01a1, +0x01a3, 0x01a3, +0x01a5, 0x01a5, +0x01a8, 0x01a8, +0x01ad, 0x01ad, +0x01b0, 0x01b0, +0x01b4, 0x01b4, +0x01b6, 0x01b6, +0x01b9, 0x01b9, +0x01bd, 0x01bd, +0x01bf, 0x01bf, +0x01c4, 0x01c4, +0x01c6, 0x01c7, +0x01c9, 0x01ca, +0x01cc, 0x01cc, +0x01ce, 0x01ce, +0x01d0, 0x01d0, +0x01d2, 0x01d2, +0x01d4, 0x01d4, +0x01d6, 0x01d6, +0x01d8, 0x01d8, +0x01da, 0x01da, +0x01dc, 0x01dd, +0x01df, 0x01df, +0x01e1, 0x01e1, +0x01e3, 0x01e3, +0x01e5, 0x01e5, +0x01e7, 0x01e7, +0x01e9, 0x01e9, +0x01eb, 0x01eb, +0x01ed, 0x01ed, +0x01ef, 0x01f1, +0x01f3, 0x01f3, +0x01f5, 0x01f5, +0x01f9, 0x01f9, +0x01fb, 0x01fb, +0x01fd, 0x01fd, +0x01ff, 0x01ff, +0x0201, 0x0201, +0x0203, 0x0203, +0x0205, 0x0205, +0x0207, 0x0207, +0x0209, 0x0209, +0x020b, 0x020b, +0x020d, 0x020d, +0x020f, 0x020f, +0x0211, 0x0211, +0x0213, 0x0213, +0x0215, 0x0215, +0x0217, 0x0217, +0x0219, 0x0219, +0x021b, 0x021b, +0x021d, 0x021d, +0x021f, 0x021f, +0x0223, 0x0223, +0x0225, 0x0225, +0x0227, 0x0227, +0x0229, 0x0229, +0x022b, 0x022b, +0x022d, 0x022d, +0x022f, 0x022f, +0x0231, 0x0231, +0x0233, 0x0233, +0x023c, 0x023c, +0x023f, 0x0240, +0x0242, 0x0242, +0x0247, 0x0247, +0x0249, 0x0249, +0x024b, 0x024b, +0x024d, 0x024d, +0x024f, 0x0254, +0x0256, 0x0257, +0x0259, 0x0259, +0x025b, 0x025c, +0x0260, 0x0261, +0x0263, 0x0263, +0x0265, 0x0266, +0x0268, 0x026c, +0x026f, 0x026f, +0x0271, 0x0272, +0x0275, 0x0275, +0x027d, 0x027d, +0x0280, 0x0280, +0x0283, 0x0283, +0x0287, 0x028c, +0x0292, 0x0292, +0x029d, 0x029e, +0x0345, 0x0345, +0x0371, 0x0371, +0x0373, 0x0373, +0x0377, 0x0377, +0x037b, 0x037d, +0x0390, 0x0390, +0x03ac, 0x03ce, +0x03d0, 0x03d1, +0x03d5, 0x03d7, +0x03d9, 0x03d9, +0x03db, 0x03db, +0x03dd, 0x03dd, +0x03df, 0x03df, +0x03e1, 0x03e1, +0x03e3, 0x03e3, +0x03e5, 0x03e5, +0x03e7, 0x03e7, +0x03e9, 0x03e9, +0x03eb, 0x03eb, +0x03ed, 0x03ed, +0x03ef, 0x03f3, +0x03f5, 0x03f5, +0x03f8, 0x03f8, +0x03fb, 0x03fb, +0x0430, 0x045f, +0x0461, 0x0461, +0x0463, 0x0463, +0x0465, 0x0465, +0x0467, 0x0467, +0x0469, 0x0469, +0x046b, 0x046b, +0x046d, 0x046d, +0x046f, 0x046f, +0x0471, 0x0471, +0x0473, 0x0473, +0x0475, 0x0475, +0x0477, 0x0477, +0x0479, 0x0479, +0x047b, 0x047b, +0x047d, 0x047d, +0x047f, 0x047f, +0x0481, 0x0481, +0x048b, 0x048b, +0x048d, 0x048d, +0x048f, 0x048f, +0x0491, 0x0491, +0x0493, 0x0493, +0x0495, 0x0495, +0x0497, 0x0497, +0x0499, 0x0499, +0x049b, 0x049b, +0x049d, 0x049d, +0x049f, 0x049f, +0x04a1, 0x04a1, +0x04a3, 0x04a3, +0x04a5, 0x04a5, +0x04a7, 0x04a7, +0x04a9, 0x04a9, +0x04ab, 0x04ab, +0x04ad, 0x04ad, +0x04af, 0x04af, +0x04b1, 0x04b1, +0x04b3, 0x04b3, +0x04b5, 0x04b5, +0x04b7, 0x04b7, +0x04b9, 0x04b9, +0x04bb, 0x04bb, +0x04bd, 0x04bd, +0x04bf, 0x04bf, +0x04c2, 0x04c2, +0x04c4, 0x04c4, +0x04c6, 0x04c6, +0x04c8, 0x04c8, +0x04ca, 0x04ca, +0x04cc, 0x04cc, +0x04ce, 0x04cf, +0x04d1, 0x04d1, +0x04d3, 0x04d3, +0x04d5, 0x04d5, +0x04d7, 0x04d7, +0x04d9, 0x04d9, +0x04db, 0x04db, +0x04dd, 0x04dd, +0x04df, 0x04df, +0x04e1, 0x04e1, +0x04e3, 0x04e3, +0x04e5, 0x04e5, +0x04e7, 0x04e7, +0x04e9, 0x04e9, +0x04eb, 0x04eb, +0x04ed, 0x04ed, +0x04ef, 0x04ef, +0x04f1, 0x04f1, +0x04f3, 0x04f3, +0x04f5, 0x04f5, +0x04f7, 0x04f7, +0x04f9, 0x04f9, +0x04fb, 0x04fb, +0x04fd, 0x04fd, +0x04ff, 0x04ff, +0x0501, 0x0501, +0x0503, 0x0503, +0x0505, 0x0505, +0x0507, 0x0507, +0x0509, 0x0509, +0x050b, 0x050b, +0x050d, 0x050d, +0x050f, 0x050f, +0x0511, 0x0511, +0x0513, 0x0513, +0x0515, 0x0515, +0x0517, 0x0517, +0x0519, 0x0519, +0x051b, 0x051b, +0x051d, 0x051d, +0x051f, 0x051f, +0x0521, 0x0521, +0x0523, 0x0523, +0x0525, 0x0525, +0x0527, 0x0527, +0x0529, 0x0529, +0x052b, 0x052b, +0x052d, 0x052d, +0x052f, 0x052f, +0x0561, 0x0587, +0x13f8, 0x13fd, +0x1c80, 0x1c88, +0x1d79, 0x1d79, +0x1d7d, 0x1d7d, +0x1e01, 0x1e01, +0x1e03, 0x1e03, +0x1e05, 0x1e05, +0x1e07, 0x1e07, +0x1e09, 0x1e09, +0x1e0b, 0x1e0b, +0x1e0d, 0x1e0d, +0x1e0f, 0x1e0f, +0x1e11, 0x1e11, +0x1e13, 0x1e13, +0x1e15, 0x1e15, +0x1e17, 0x1e17, +0x1e19, 0x1e19, +0x1e1b, 0x1e1b, +0x1e1d, 0x1e1d, +0x1e1f, 0x1e1f, +0x1e21, 0x1e21, +0x1e23, 0x1e23, +0x1e25, 0x1e25, +0x1e27, 0x1e27, +0x1e29, 0x1e29, +0x1e2b, 0x1e2b, +0x1e2d, 0x1e2d, +0x1e2f, 0x1e2f, +0x1e31, 0x1e31, +0x1e33, 0x1e33, +0x1e35, 0x1e35, +0x1e37, 0x1e37, +0x1e39, 0x1e39, +0x1e3b, 0x1e3b, +0x1e3d, 0x1e3d, +0x1e3f, 0x1e3f, +0x1e41, 0x1e41, +0x1e43, 0x1e43, +0x1e45, 0x1e45, +0x1e47, 0x1e47, +0x1e49, 0x1e49, +0x1e4b, 0x1e4b, +0x1e4d, 0x1e4d, +0x1e4f, 0x1e4f, +0x1e51, 0x1e51, +0x1e53, 0x1e53, +0x1e55, 0x1e55, +0x1e57, 0x1e57, +0x1e59, 0x1e59, +0x1e5b, 0x1e5b, +0x1e5d, 0x1e5d, +0x1e5f, 0x1e5f, +0x1e61, 0x1e61, +0x1e63, 0x1e63, +0x1e65, 0x1e65, +0x1e67, 0x1e67, +0x1e69, 0x1e69, +0x1e6b, 0x1e6b, +0x1e6d, 0x1e6d, +0x1e6f, 0x1e6f, +0x1e71, 0x1e71, +0x1e73, 0x1e73, +0x1e75, 0x1e75, +0x1e77, 0x1e77, +0x1e79, 0x1e79, +0x1e7b, 0x1e7b, +0x1e7d, 0x1e7d, +0x1e7f, 0x1e7f, +0x1e81, 0x1e81, +0x1e83, 0x1e83, +0x1e85, 0x1e85, +0x1e87, 0x1e87, +0x1e89, 0x1e89, +0x1e8b, 0x1e8b, +0x1e8d, 0x1e8d, +0x1e8f, 0x1e8f, +0x1e91, 0x1e91, +0x1e93, 0x1e93, +0x1e95, 0x1e9b, +0x1ea1, 0x1ea1, +0x1ea3, 0x1ea3, +0x1ea5, 0x1ea5, +0x1ea7, 0x1ea7, +0x1ea9, 0x1ea9, +0x1eab, 0x1eab, +0x1ead, 0x1ead, +0x1eaf, 0x1eaf, +0x1eb1, 0x1eb1, +0x1eb3, 0x1eb3, +0x1eb5, 0x1eb5, +0x1eb7, 0x1eb7, +0x1eb9, 0x1eb9, +0x1ebb, 0x1ebb, +0x1ebd, 0x1ebd, +0x1ebf, 0x1ebf, +0x1ec1, 0x1ec1, +0x1ec3, 0x1ec3, +0x1ec5, 0x1ec5, +0x1ec7, 0x1ec7, +0x1ec9, 0x1ec9, +0x1ecb, 0x1ecb, +0x1ecd, 0x1ecd, +0x1ecf, 0x1ecf, +0x1ed1, 0x1ed1, +0x1ed3, 0x1ed3, +0x1ed5, 0x1ed5, +0x1ed7, 0x1ed7, +0x1ed9, 0x1ed9, +0x1edb, 0x1edb, +0x1edd, 0x1edd, +0x1edf, 0x1edf, +0x1ee1, 0x1ee1, +0x1ee3, 0x1ee3, +0x1ee5, 0x1ee5, +0x1ee7, 0x1ee7, +0x1ee9, 0x1ee9, +0x1eeb, 0x1eeb, +0x1eed, 0x1eed, +0x1eef, 0x1eef, +0x1ef1, 0x1ef1, +0x1ef3, 0x1ef3, +0x1ef5, 0x1ef5, +0x1ef7, 0x1ef7, +0x1ef9, 0x1ef9, +0x1efb, 0x1efb, +0x1efd, 0x1efd, +0x1eff, 0x1f07, +0x1f10, 0x1f15, +0x1f20, 0x1f27, +0x1f30, 0x1f37, +0x1f40, 0x1f45, +0x1f50, 0x1f57, +0x1f60, 0x1f67, +0x1f70, 0x1f7d, +0x1f80, 0x1f87, +0x1f90, 0x1f97, +0x1fa0, 0x1fa7, +0x1fb0, 0x1fb4, +0x1fb6, 0x1fb7, +0x1fbe, 0x1fbe, +0x1fc2, 0x1fc4, +0x1fc6, 0x1fc7, +0x1fd0, 0x1fd3, +0x1fd6, 0x1fd7, +0x1fe0, 0x1fe7, +0x1ff2, 0x1ff4, +0x1ff6, 0x1ff7, +0x214e, 0x214e, +0x2170, 0x217f, +0x2184, 0x2184, +0x24d0, 0x24e9, +0x2c30, 0x2c5e, +0x2c61, 0x2c61, +0x2c65, 0x2c66, +0x2c68, 0x2c68, +0x2c6a, 0x2c6a, +0x2c6c, 0x2c6c, +0x2c73, 0x2c73, +0x2c76, 0x2c76, +0x2c81, 0x2c81, +0x2c83, 0x2c83, +0x2c85, 0x2c85, +0x2c87, 0x2c87, +0x2c89, 0x2c89, +0x2c8b, 0x2c8b, +0x2c8d, 0x2c8d, +0x2c8f, 0x2c8f, +0x2c91, 0x2c91, +0x2c93, 0x2c93, +0x2c95, 0x2c95, +0x2c97, 0x2c97, +0x2c99, 0x2c99, +0x2c9b, 0x2c9b, +0x2c9d, 0x2c9d, +0x2c9f, 0x2c9f, +0x2ca1, 0x2ca1, +0x2ca3, 0x2ca3, +0x2ca5, 0x2ca5, +0x2ca7, 0x2ca7, +0x2ca9, 0x2ca9, +0x2cab, 0x2cab, +0x2cad, 0x2cad, +0x2caf, 0x2caf, +0x2cb1, 0x2cb1, +0x2cb3, 0x2cb3, +0x2cb5, 0x2cb5, +0x2cb7, 0x2cb7, +0x2cb9, 0x2cb9, +0x2cbb, 0x2cbb, +0x2cbd, 0x2cbd, +0x2cbf, 0x2cbf, +0x2cc1, 0x2cc1, +0x2cc3, 0x2cc3, +0x2cc5, 0x2cc5, +0x2cc7, 0x2cc7, +0x2cc9, 0x2cc9, +0x2ccb, 0x2ccb, +0x2ccd, 0x2ccd, +0x2ccf, 0x2ccf, +0x2cd1, 0x2cd1, +0x2cd3, 0x2cd3, +0x2cd5, 0x2cd5, +0x2cd7, 0x2cd7, +0x2cd9, 0x2cd9, +0x2cdb, 0x2cdb, +0x2cdd, 0x2cdd, +0x2cdf, 0x2cdf, +0x2ce1, 0x2ce1, +0x2ce3, 0x2ce3, +0x2cec, 0x2cec, +0x2cee, 0x2cee, +0x2cf3, 0x2cf3, +0x2d00, 0x2d25, +0x2d27, 0x2d27, +0x2d2d, 0x2d2d, +0xa641, 0xa641, +0xa643, 0xa643, +0xa645, 0xa645, +0xa647, 0xa647, +0xa649, 0xa649, +0xa64b, 0xa64b, +0xa64d, 0xa64d, +0xa64f, 0xa64f, +0xa651, 0xa651, +0xa653, 0xa653, +0xa655, 0xa655, +0xa657, 0xa657, +0xa659, 0xa659, +0xa65b, 0xa65b, +0xa65d, 0xa65d, +0xa65f, 0xa65f, +0xa661, 0xa661, +0xa663, 0xa663, +0xa665, 0xa665, +0xa667, 0xa667, +0xa669, 0xa669, +0xa66b, 0xa66b, +0xa66d, 0xa66d, +0xa681, 0xa681, +0xa683, 0xa683, +0xa685, 0xa685, +0xa687, 0xa687, +0xa689, 0xa689, +0xa68b, 0xa68b, +0xa68d, 0xa68d, +0xa68f, 0xa68f, +0xa691, 0xa691, +0xa693, 0xa693, +0xa695, 0xa695, +0xa697, 0xa697, +0xa699, 0xa699, +0xa69b, 0xa69b, +0xa723, 0xa723, +0xa725, 0xa725, +0xa727, 0xa727, +0xa729, 0xa729, +0xa72b, 0xa72b, +0xa72d, 0xa72d, +0xa72f, 0xa72f, +0xa733, 0xa733, +0xa735, 0xa735, +0xa737, 0xa737, +0xa739, 0xa739, +0xa73b, 0xa73b, +0xa73d, 0xa73d, +0xa73f, 0xa73f, +0xa741, 0xa741, +0xa743, 0xa743, +0xa745, 0xa745, +0xa747, 0xa747, +0xa749, 0xa749, +0xa74b, 0xa74b, +0xa74d, 0xa74d, +0xa74f, 0xa74f, +0xa751, 0xa751, +0xa753, 0xa753, +0xa755, 0xa755, +0xa757, 0xa757, +0xa759, 0xa759, +0xa75b, 0xa75b, +0xa75d, 0xa75d, +0xa75f, 0xa75f, +0xa761, 0xa761, +0xa763, 0xa763, +0xa765, 0xa765, +0xa767, 0xa767, +0xa769, 0xa769, +0xa76b, 0xa76b, +0xa76d, 0xa76d, +0xa76f, 0xa76f, +0xa77a, 0xa77a, +0xa77c, 0xa77c, +0xa77f, 0xa77f, +0xa781, 0xa781, +0xa783, 0xa783, +0xa785, 0xa785, +0xa787, 0xa787, +0xa78c, 0xa78c, +0xa791, 0xa791, +0xa793, 0xa793, +0xa797, 0xa797, +0xa799, 0xa799, +0xa79b, 0xa79b, +0xa79d, 0xa79d, +0xa79f, 0xa79f, +0xa7a1, 0xa7a1, +0xa7a3, 0xa7a3, +0xa7a5, 0xa7a5, +0xa7a7, 0xa7a7, +0xa7a9, 0xa7a9, +0xa7b5, 0xa7b5, +0xa7b7, 0xa7b7, +0xa7b9, 0xa7b9, +0xab53, 0xab53, +0xab70, 0xabbf, +0xfb00, 0xfb06, +0xfb13, 0xfb17, +0xff41, 0xff5a, +0x10428, 0x1044f, +0x104d8, 0x104fb, +0x10cc0, 0x10cf2, +0x118c0, 0x118df, +0x16e60, 0x16e7f, +0x1e922, 0x1e943, +}; /* END of CR_Changes_When_Titlecased */ + +/* PROPERTY: 'Changes_When_Uppercased': Derived Property */ +static const OnigCodePoint +CR_Changes_When_Uppercased[] = { 611, +0x0061, 0x007a, +0x00b5, 0x00b5, +0x00df, 0x00f6, +0x00f8, 0x00ff, +0x0101, 0x0101, +0x0103, 0x0103, +0x0105, 0x0105, +0x0107, 0x0107, +0x0109, 0x0109, +0x010b, 0x010b, +0x010d, 0x010d, +0x010f, 0x010f, +0x0111, 0x0111, +0x0113, 0x0113, +0x0115, 0x0115, +0x0117, 0x0117, +0x0119, 0x0119, +0x011b, 0x011b, +0x011d, 0x011d, +0x011f, 0x011f, +0x0121, 0x0121, +0x0123, 0x0123, +0x0125, 0x0125, +0x0127, 0x0127, +0x0129, 0x0129, +0x012b, 0x012b, +0x012d, 0x012d, +0x012f, 0x012f, +0x0131, 0x0131, +0x0133, 0x0133, +0x0135, 0x0135, +0x0137, 0x0137, +0x013a, 0x013a, +0x013c, 0x013c, +0x013e, 0x013e, +0x0140, 0x0140, +0x0142, 0x0142, +0x0144, 0x0144, +0x0146, 0x0146, +0x0148, 0x0149, +0x014b, 0x014b, +0x014d, 0x014d, +0x014f, 0x014f, +0x0151, 0x0151, +0x0153, 0x0153, +0x0155, 0x0155, +0x0157, 0x0157, +0x0159, 0x0159, +0x015b, 0x015b, +0x015d, 0x015d, +0x015f, 0x015f, +0x0161, 0x0161, +0x0163, 0x0163, +0x0165, 0x0165, +0x0167, 0x0167, +0x0169, 0x0169, +0x016b, 0x016b, +0x016d, 0x016d, +0x016f, 0x016f, +0x0171, 0x0171, +0x0173, 0x0173, +0x0175, 0x0175, +0x0177, 0x0177, +0x017a, 0x017a, +0x017c, 0x017c, +0x017e, 0x0180, +0x0183, 0x0183, +0x0185, 0x0185, +0x0188, 0x0188, +0x018c, 0x018c, +0x0192, 0x0192, +0x0195, 0x0195, +0x0199, 0x019a, +0x019e, 0x019e, +0x01a1, 0x01a1, +0x01a3, 0x01a3, +0x01a5, 0x01a5, +0x01a8, 0x01a8, +0x01ad, 0x01ad, +0x01b0, 0x01b0, +0x01b4, 0x01b4, +0x01b6, 0x01b6, +0x01b9, 0x01b9, +0x01bd, 0x01bd, +0x01bf, 0x01bf, +0x01c5, 0x01c6, +0x01c8, 0x01c9, +0x01cb, 0x01cc, +0x01ce, 0x01ce, +0x01d0, 0x01d0, +0x01d2, 0x01d2, +0x01d4, 0x01d4, +0x01d6, 0x01d6, +0x01d8, 0x01d8, +0x01da, 0x01da, +0x01dc, 0x01dd, +0x01df, 0x01df, +0x01e1, 0x01e1, +0x01e3, 0x01e3, +0x01e5, 0x01e5, +0x01e7, 0x01e7, +0x01e9, 0x01e9, +0x01eb, 0x01eb, +0x01ed, 0x01ed, +0x01ef, 0x01f0, +0x01f2, 0x01f3, +0x01f5, 0x01f5, +0x01f9, 0x01f9, +0x01fb, 0x01fb, +0x01fd, 0x01fd, +0x01ff, 0x01ff, +0x0201, 0x0201, +0x0203, 0x0203, +0x0205, 0x0205, +0x0207, 0x0207, +0x0209, 0x0209, +0x020b, 0x020b, +0x020d, 0x020d, +0x020f, 0x020f, +0x0211, 0x0211, +0x0213, 0x0213, +0x0215, 0x0215, +0x0217, 0x0217, +0x0219, 0x0219, +0x021b, 0x021b, +0x021d, 0x021d, +0x021f, 0x021f, +0x0223, 0x0223, +0x0225, 0x0225, +0x0227, 0x0227, +0x0229, 0x0229, +0x022b, 0x022b, +0x022d, 0x022d, +0x022f, 0x022f, +0x0231, 0x0231, +0x0233, 0x0233, +0x023c, 0x023c, +0x023f, 0x0240, +0x0242, 0x0242, +0x0247, 0x0247, +0x0249, 0x0249, +0x024b, 0x024b, +0x024d, 0x024d, +0x024f, 0x0254, +0x0256, 0x0257, +0x0259, 0x0259, +0x025b, 0x025c, +0x0260, 0x0261, +0x0263, 0x0263, +0x0265, 0x0266, +0x0268, 0x026c, +0x026f, 0x026f, +0x0271, 0x0272, +0x0275, 0x0275, +0x027d, 0x027d, +0x0280, 0x0280, +0x0283, 0x0283, +0x0287, 0x028c, +0x0292, 0x0292, +0x029d, 0x029e, +0x0345, 0x0345, +0x0371, 0x0371, +0x0373, 0x0373, +0x0377, 0x0377, +0x037b, 0x037d, +0x0390, 0x0390, +0x03ac, 0x03ce, +0x03d0, 0x03d1, +0x03d5, 0x03d7, +0x03d9, 0x03d9, +0x03db, 0x03db, +0x03dd, 0x03dd, +0x03df, 0x03df, +0x03e1, 0x03e1, +0x03e3, 0x03e3, +0x03e5, 0x03e5, +0x03e7, 0x03e7, +0x03e9, 0x03e9, +0x03eb, 0x03eb, +0x03ed, 0x03ed, +0x03ef, 0x03f3, +0x03f5, 0x03f5, +0x03f8, 0x03f8, +0x03fb, 0x03fb, +0x0430, 0x045f, +0x0461, 0x0461, +0x0463, 0x0463, +0x0465, 0x0465, +0x0467, 0x0467, +0x0469, 0x0469, +0x046b, 0x046b, +0x046d, 0x046d, +0x046f, 0x046f, +0x0471, 0x0471, +0x0473, 0x0473, +0x0475, 0x0475, +0x0477, 0x0477, +0x0479, 0x0479, +0x047b, 0x047b, +0x047d, 0x047d, +0x047f, 0x047f, +0x0481, 0x0481, +0x048b, 0x048b, +0x048d, 0x048d, +0x048f, 0x048f, +0x0491, 0x0491, +0x0493, 0x0493, +0x0495, 0x0495, +0x0497, 0x0497, +0x0499, 0x0499, +0x049b, 0x049b, +0x049d, 0x049d, +0x049f, 0x049f, +0x04a1, 0x04a1, +0x04a3, 0x04a3, +0x04a5, 0x04a5, +0x04a7, 0x04a7, +0x04a9, 0x04a9, +0x04ab, 0x04ab, +0x04ad, 0x04ad, +0x04af, 0x04af, +0x04b1, 0x04b1, +0x04b3, 0x04b3, +0x04b5, 0x04b5, +0x04b7, 0x04b7, +0x04b9, 0x04b9, +0x04bb, 0x04bb, +0x04bd, 0x04bd, +0x04bf, 0x04bf, +0x04c2, 0x04c2, +0x04c4, 0x04c4, +0x04c6, 0x04c6, +0x04c8, 0x04c8, +0x04ca, 0x04ca, +0x04cc, 0x04cc, +0x04ce, 0x04cf, +0x04d1, 0x04d1, +0x04d3, 0x04d3, +0x04d5, 0x04d5, +0x04d7, 0x04d7, +0x04d9, 0x04d9, +0x04db, 0x04db, +0x04dd, 0x04dd, +0x04df, 0x04df, +0x04e1, 0x04e1, +0x04e3, 0x04e3, +0x04e5, 0x04e5, +0x04e7, 0x04e7, +0x04e9, 0x04e9, +0x04eb, 0x04eb, +0x04ed, 0x04ed, +0x04ef, 0x04ef, +0x04f1, 0x04f1, +0x04f3, 0x04f3, +0x04f5, 0x04f5, +0x04f7, 0x04f7, +0x04f9, 0x04f9, +0x04fb, 0x04fb, +0x04fd, 0x04fd, +0x04ff, 0x04ff, +0x0501, 0x0501, +0x0503, 0x0503, +0x0505, 0x0505, +0x0507, 0x0507, +0x0509, 0x0509, +0x050b, 0x050b, +0x050d, 0x050d, +0x050f, 0x050f, +0x0511, 0x0511, +0x0513, 0x0513, +0x0515, 0x0515, +0x0517, 0x0517, +0x0519, 0x0519, +0x051b, 0x051b, +0x051d, 0x051d, +0x051f, 0x051f, +0x0521, 0x0521, +0x0523, 0x0523, +0x0525, 0x0525, +0x0527, 0x0527, +0x0529, 0x0529, +0x052b, 0x052b, +0x052d, 0x052d, +0x052f, 0x052f, +0x0561, 0x0587, +0x10d0, 0x10fa, +0x10fd, 0x10ff, +0x13f8, 0x13fd, +0x1c80, 0x1c88, +0x1d79, 0x1d79, +0x1d7d, 0x1d7d, +0x1e01, 0x1e01, +0x1e03, 0x1e03, +0x1e05, 0x1e05, +0x1e07, 0x1e07, +0x1e09, 0x1e09, +0x1e0b, 0x1e0b, +0x1e0d, 0x1e0d, +0x1e0f, 0x1e0f, +0x1e11, 0x1e11, +0x1e13, 0x1e13, +0x1e15, 0x1e15, +0x1e17, 0x1e17, +0x1e19, 0x1e19, +0x1e1b, 0x1e1b, +0x1e1d, 0x1e1d, +0x1e1f, 0x1e1f, +0x1e21, 0x1e21, +0x1e23, 0x1e23, +0x1e25, 0x1e25, +0x1e27, 0x1e27, +0x1e29, 0x1e29, +0x1e2b, 0x1e2b, +0x1e2d, 0x1e2d, +0x1e2f, 0x1e2f, +0x1e31, 0x1e31, +0x1e33, 0x1e33, +0x1e35, 0x1e35, +0x1e37, 0x1e37, +0x1e39, 0x1e39, +0x1e3b, 0x1e3b, +0x1e3d, 0x1e3d, +0x1e3f, 0x1e3f, +0x1e41, 0x1e41, +0x1e43, 0x1e43, +0x1e45, 0x1e45, +0x1e47, 0x1e47, +0x1e49, 0x1e49, +0x1e4b, 0x1e4b, +0x1e4d, 0x1e4d, +0x1e4f, 0x1e4f, +0x1e51, 0x1e51, +0x1e53, 0x1e53, +0x1e55, 0x1e55, +0x1e57, 0x1e57, +0x1e59, 0x1e59, +0x1e5b, 0x1e5b, +0x1e5d, 0x1e5d, +0x1e5f, 0x1e5f, +0x1e61, 0x1e61, +0x1e63, 0x1e63, +0x1e65, 0x1e65, +0x1e67, 0x1e67, +0x1e69, 0x1e69, +0x1e6b, 0x1e6b, +0x1e6d, 0x1e6d, +0x1e6f, 0x1e6f, +0x1e71, 0x1e71, +0x1e73, 0x1e73, +0x1e75, 0x1e75, +0x1e77, 0x1e77, +0x1e79, 0x1e79, +0x1e7b, 0x1e7b, +0x1e7d, 0x1e7d, +0x1e7f, 0x1e7f, +0x1e81, 0x1e81, +0x1e83, 0x1e83, +0x1e85, 0x1e85, +0x1e87, 0x1e87, +0x1e89, 0x1e89, +0x1e8b, 0x1e8b, +0x1e8d, 0x1e8d, +0x1e8f, 0x1e8f, +0x1e91, 0x1e91, +0x1e93, 0x1e93, +0x1e95, 0x1e9b, +0x1ea1, 0x1ea1, +0x1ea3, 0x1ea3, +0x1ea5, 0x1ea5, +0x1ea7, 0x1ea7, +0x1ea9, 0x1ea9, +0x1eab, 0x1eab, +0x1ead, 0x1ead, +0x1eaf, 0x1eaf, +0x1eb1, 0x1eb1, +0x1eb3, 0x1eb3, +0x1eb5, 0x1eb5, +0x1eb7, 0x1eb7, +0x1eb9, 0x1eb9, +0x1ebb, 0x1ebb, +0x1ebd, 0x1ebd, +0x1ebf, 0x1ebf, +0x1ec1, 0x1ec1, +0x1ec3, 0x1ec3, +0x1ec5, 0x1ec5, +0x1ec7, 0x1ec7, +0x1ec9, 0x1ec9, +0x1ecb, 0x1ecb, +0x1ecd, 0x1ecd, +0x1ecf, 0x1ecf, +0x1ed1, 0x1ed1, +0x1ed3, 0x1ed3, +0x1ed5, 0x1ed5, +0x1ed7, 0x1ed7, +0x1ed9, 0x1ed9, +0x1edb, 0x1edb, +0x1edd, 0x1edd, +0x1edf, 0x1edf, +0x1ee1, 0x1ee1, +0x1ee3, 0x1ee3, +0x1ee5, 0x1ee5, +0x1ee7, 0x1ee7, +0x1ee9, 0x1ee9, +0x1eeb, 0x1eeb, +0x1eed, 0x1eed, +0x1eef, 0x1eef, +0x1ef1, 0x1ef1, +0x1ef3, 0x1ef3, +0x1ef5, 0x1ef5, +0x1ef7, 0x1ef7, +0x1ef9, 0x1ef9, +0x1efb, 0x1efb, +0x1efd, 0x1efd, +0x1eff, 0x1f07, +0x1f10, 0x1f15, +0x1f20, 0x1f27, +0x1f30, 0x1f37, +0x1f40, 0x1f45, +0x1f50, 0x1f57, +0x1f60, 0x1f67, +0x1f70, 0x1f7d, +0x1f80, 0x1fb4, +0x1fb6, 0x1fb7, +0x1fbc, 0x1fbc, +0x1fbe, 0x1fbe, +0x1fc2, 0x1fc4, +0x1fc6, 0x1fc7, +0x1fcc, 0x1fcc, +0x1fd0, 0x1fd3, +0x1fd6, 0x1fd7, +0x1fe0, 0x1fe7, +0x1ff2, 0x1ff4, +0x1ff6, 0x1ff7, +0x1ffc, 0x1ffc, +0x214e, 0x214e, +0x2170, 0x217f, +0x2184, 0x2184, +0x24d0, 0x24e9, +0x2c30, 0x2c5e, +0x2c61, 0x2c61, +0x2c65, 0x2c66, +0x2c68, 0x2c68, +0x2c6a, 0x2c6a, +0x2c6c, 0x2c6c, +0x2c73, 0x2c73, +0x2c76, 0x2c76, +0x2c81, 0x2c81, +0x2c83, 0x2c83, +0x2c85, 0x2c85, +0x2c87, 0x2c87, +0x2c89, 0x2c89, +0x2c8b, 0x2c8b, +0x2c8d, 0x2c8d, +0x2c8f, 0x2c8f, +0x2c91, 0x2c91, +0x2c93, 0x2c93, +0x2c95, 0x2c95, +0x2c97, 0x2c97, +0x2c99, 0x2c99, +0x2c9b, 0x2c9b, +0x2c9d, 0x2c9d, +0x2c9f, 0x2c9f, +0x2ca1, 0x2ca1, +0x2ca3, 0x2ca3, +0x2ca5, 0x2ca5, +0x2ca7, 0x2ca7, +0x2ca9, 0x2ca9, +0x2cab, 0x2cab, +0x2cad, 0x2cad, +0x2caf, 0x2caf, +0x2cb1, 0x2cb1, +0x2cb3, 0x2cb3, +0x2cb5, 0x2cb5, +0x2cb7, 0x2cb7, +0x2cb9, 0x2cb9, +0x2cbb, 0x2cbb, +0x2cbd, 0x2cbd, +0x2cbf, 0x2cbf, +0x2cc1, 0x2cc1, +0x2cc3, 0x2cc3, +0x2cc5, 0x2cc5, +0x2cc7, 0x2cc7, +0x2cc9, 0x2cc9, +0x2ccb, 0x2ccb, +0x2ccd, 0x2ccd, +0x2ccf, 0x2ccf, +0x2cd1, 0x2cd1, +0x2cd3, 0x2cd3, +0x2cd5, 0x2cd5, +0x2cd7, 0x2cd7, +0x2cd9, 0x2cd9, +0x2cdb, 0x2cdb, +0x2cdd, 0x2cdd, +0x2cdf, 0x2cdf, +0x2ce1, 0x2ce1, +0x2ce3, 0x2ce3, +0x2cec, 0x2cec, +0x2cee, 0x2cee, +0x2cf3, 0x2cf3, +0x2d00, 0x2d25, +0x2d27, 0x2d27, +0x2d2d, 0x2d2d, +0xa641, 0xa641, +0xa643, 0xa643, +0xa645, 0xa645, +0xa647, 0xa647, +0xa649, 0xa649, +0xa64b, 0xa64b, +0xa64d, 0xa64d, +0xa64f, 0xa64f, +0xa651, 0xa651, +0xa653, 0xa653, +0xa655, 0xa655, +0xa657, 0xa657, +0xa659, 0xa659, +0xa65b, 0xa65b, +0xa65d, 0xa65d, +0xa65f, 0xa65f, +0xa661, 0xa661, +0xa663, 0xa663, +0xa665, 0xa665, +0xa667, 0xa667, +0xa669, 0xa669, +0xa66b, 0xa66b, +0xa66d, 0xa66d, +0xa681, 0xa681, +0xa683, 0xa683, +0xa685, 0xa685, +0xa687, 0xa687, +0xa689, 0xa689, +0xa68b, 0xa68b, +0xa68d, 0xa68d, +0xa68f, 0xa68f, +0xa691, 0xa691, +0xa693, 0xa693, +0xa695, 0xa695, +0xa697, 0xa697, +0xa699, 0xa699, +0xa69b, 0xa69b, +0xa723, 0xa723, +0xa725, 0xa725, +0xa727, 0xa727, +0xa729, 0xa729, +0xa72b, 0xa72b, +0xa72d, 0xa72d, +0xa72f, 0xa72f, +0xa733, 0xa733, +0xa735, 0xa735, +0xa737, 0xa737, +0xa739, 0xa739, +0xa73b, 0xa73b, +0xa73d, 0xa73d, +0xa73f, 0xa73f, +0xa741, 0xa741, +0xa743, 0xa743, +0xa745, 0xa745, +0xa747, 0xa747, +0xa749, 0xa749, +0xa74b, 0xa74b, +0xa74d, 0xa74d, +0xa74f, 0xa74f, +0xa751, 0xa751, +0xa753, 0xa753, +0xa755, 0xa755, +0xa757, 0xa757, +0xa759, 0xa759, +0xa75b, 0xa75b, +0xa75d, 0xa75d, +0xa75f, 0xa75f, +0xa761, 0xa761, +0xa763, 0xa763, +0xa765, 0xa765, +0xa767, 0xa767, +0xa769, 0xa769, +0xa76b, 0xa76b, +0xa76d, 0xa76d, +0xa76f, 0xa76f, +0xa77a, 0xa77a, +0xa77c, 0xa77c, +0xa77f, 0xa77f, +0xa781, 0xa781, +0xa783, 0xa783, +0xa785, 0xa785, +0xa787, 0xa787, +0xa78c, 0xa78c, +0xa791, 0xa791, +0xa793, 0xa793, +0xa797, 0xa797, +0xa799, 0xa799, +0xa79b, 0xa79b, +0xa79d, 0xa79d, +0xa79f, 0xa79f, +0xa7a1, 0xa7a1, +0xa7a3, 0xa7a3, +0xa7a5, 0xa7a5, +0xa7a7, 0xa7a7, +0xa7a9, 0xa7a9, +0xa7b5, 0xa7b5, +0xa7b7, 0xa7b7, +0xa7b9, 0xa7b9, +0xab53, 0xab53, +0xab70, 0xabbf, +0xfb00, 0xfb06, +0xfb13, 0xfb17, +0xff41, 0xff5a, +0x10428, 0x1044f, +0x104d8, 0x104fb, +0x10cc0, 0x10cf2, +0x118c0, 0x118df, +0x16e60, 0x16e7f, +0x1e922, 0x1e943, +}; /* END of CR_Changes_When_Uppercased */ + +/* PROPERTY: 'Cherokee': Script */ +static const OnigCodePoint +CR_Cherokee[] = { 3, +0x13a0, 0x13f5, +0x13f8, 0x13fd, +0xab70, 0xabbf, +}; /* END of CR_Cherokee */ + +/* PROPERTY: 'Cn': General Category */ +static const OnigCodePoint +CR_Cn[] = { 658, +0x0378, 0x0379, +0x0380, 0x0383, +0x038b, 0x038b, +0x038d, 0x038d, +0x03a2, 0x03a2, +0x0530, 0x0530, +0x0557, 0x0558, +0x058b, 0x058c, +0x0590, 0x0590, +0x05c8, 0x05cf, +0x05eb, 0x05ee, +0x05f5, 0x05ff, +0x061d, 0x061d, +0x070e, 0x070e, +0x074b, 0x074c, +0x07b2, 0x07bf, +0x07fb, 0x07fc, +0x082e, 0x082f, +0x083f, 0x083f, +0x085c, 0x085d, +0x085f, 0x085f, +0x086b, 0x089f, +0x08b5, 0x08b5, +0x08be, 0x08d2, +0x0984, 0x0984, +0x098d, 0x098e, +0x0991, 0x0992, +0x09a9, 0x09a9, +0x09b1, 0x09b1, +0x09b3, 0x09b5, +0x09ba, 0x09bb, +0x09c5, 0x09c6, +0x09c9, 0x09ca, +0x09cf, 0x09d6, +0x09d8, 0x09db, +0x09de, 0x09de, +0x09e4, 0x09e5, +0x09ff, 0x0a00, +0x0a04, 0x0a04, +0x0a0b, 0x0a0e, +0x0a11, 0x0a12, +0x0a29, 0x0a29, +0x0a31, 0x0a31, +0x0a34, 0x0a34, +0x0a37, 0x0a37, +0x0a3a, 0x0a3b, +0x0a3d, 0x0a3d, +0x0a43, 0x0a46, +0x0a49, 0x0a4a, +0x0a4e, 0x0a50, +0x0a52, 0x0a58, +0x0a5d, 0x0a5d, +0x0a5f, 0x0a65, +0x0a77, 0x0a80, +0x0a84, 0x0a84, +0x0a8e, 0x0a8e, +0x0a92, 0x0a92, +0x0aa9, 0x0aa9, +0x0ab1, 0x0ab1, +0x0ab4, 0x0ab4, +0x0aba, 0x0abb, +0x0ac6, 0x0ac6, +0x0aca, 0x0aca, +0x0ace, 0x0acf, +0x0ad1, 0x0adf, +0x0ae4, 0x0ae5, +0x0af2, 0x0af8, +0x0b00, 0x0b00, +0x0b04, 0x0b04, +0x0b0d, 0x0b0e, +0x0b11, 0x0b12, +0x0b29, 0x0b29, +0x0b31, 0x0b31, +0x0b34, 0x0b34, +0x0b3a, 0x0b3b, +0x0b45, 0x0b46, +0x0b49, 0x0b4a, +0x0b4e, 0x0b55, +0x0b58, 0x0b5b, +0x0b5e, 0x0b5e, +0x0b64, 0x0b65, +0x0b78, 0x0b81, +0x0b84, 0x0b84, +0x0b8b, 0x0b8d, +0x0b91, 0x0b91, +0x0b96, 0x0b98, +0x0b9b, 0x0b9b, +0x0b9d, 0x0b9d, +0x0ba0, 0x0ba2, +0x0ba5, 0x0ba7, +0x0bab, 0x0bad, +0x0bba, 0x0bbd, +0x0bc3, 0x0bc5, +0x0bc9, 0x0bc9, +0x0bce, 0x0bcf, +0x0bd1, 0x0bd6, +0x0bd8, 0x0be5, +0x0bfb, 0x0bff, +0x0c0d, 0x0c0d, +0x0c11, 0x0c11, +0x0c29, 0x0c29, +0x0c3a, 0x0c3c, +0x0c45, 0x0c45, +0x0c49, 0x0c49, +0x0c4e, 0x0c54, +0x0c57, 0x0c57, +0x0c5b, 0x0c5f, +0x0c64, 0x0c65, +0x0c70, 0x0c77, +0x0c8d, 0x0c8d, +0x0c91, 0x0c91, +0x0ca9, 0x0ca9, +0x0cb4, 0x0cb4, +0x0cba, 0x0cbb, +0x0cc5, 0x0cc5, +0x0cc9, 0x0cc9, +0x0cce, 0x0cd4, +0x0cd7, 0x0cdd, +0x0cdf, 0x0cdf, +0x0ce4, 0x0ce5, +0x0cf0, 0x0cf0, +0x0cf3, 0x0cff, +0x0d04, 0x0d04, +0x0d0d, 0x0d0d, +0x0d11, 0x0d11, +0x0d45, 0x0d45, +0x0d49, 0x0d49, +0x0d50, 0x0d53, +0x0d64, 0x0d65, +0x0d80, 0x0d81, +0x0d84, 0x0d84, +0x0d97, 0x0d99, +0x0db2, 0x0db2, +0x0dbc, 0x0dbc, +0x0dbe, 0x0dbf, +0x0dc7, 0x0dc9, +0x0dcb, 0x0dce, +0x0dd5, 0x0dd5, +0x0dd7, 0x0dd7, +0x0de0, 0x0de5, +0x0df0, 0x0df1, +0x0df5, 0x0e00, +0x0e3b, 0x0e3e, +0x0e5c, 0x0e80, +0x0e83, 0x0e83, +0x0e85, 0x0e86, +0x0e89, 0x0e89, +0x0e8b, 0x0e8c, +0x0e8e, 0x0e93, +0x0e98, 0x0e98, +0x0ea0, 0x0ea0, +0x0ea4, 0x0ea4, +0x0ea6, 0x0ea6, +0x0ea8, 0x0ea9, +0x0eac, 0x0eac, +0x0eba, 0x0eba, +0x0ebe, 0x0ebf, +0x0ec5, 0x0ec5, +0x0ec7, 0x0ec7, +0x0ece, 0x0ecf, +0x0eda, 0x0edb, +0x0ee0, 0x0eff, +0x0f48, 0x0f48, +0x0f6d, 0x0f70, +0x0f98, 0x0f98, +0x0fbd, 0x0fbd, +0x0fcd, 0x0fcd, +0x0fdb, 0x0fff, +0x10c6, 0x10c6, +0x10c8, 0x10cc, +0x10ce, 0x10cf, +0x1249, 0x1249, +0x124e, 0x124f, +0x1257, 0x1257, +0x1259, 0x1259, +0x125e, 0x125f, +0x1289, 0x1289, +0x128e, 0x128f, +0x12b1, 0x12b1, +0x12b6, 0x12b7, +0x12bf, 0x12bf, +0x12c1, 0x12c1, +0x12c6, 0x12c7, +0x12d7, 0x12d7, +0x1311, 0x1311, +0x1316, 0x1317, +0x135b, 0x135c, +0x137d, 0x137f, +0x139a, 0x139f, +0x13f6, 0x13f7, +0x13fe, 0x13ff, +0x169d, 0x169f, +0x16f9, 0x16ff, +0x170d, 0x170d, +0x1715, 0x171f, +0x1737, 0x173f, +0x1754, 0x175f, +0x176d, 0x176d, +0x1771, 0x1771, +0x1774, 0x177f, +0x17de, 0x17df, +0x17ea, 0x17ef, +0x17fa, 0x17ff, +0x180f, 0x180f, +0x181a, 0x181f, +0x1879, 0x187f, +0x18ab, 0x18af, +0x18f6, 0x18ff, +0x191f, 0x191f, +0x192c, 0x192f, +0x193c, 0x193f, +0x1941, 0x1943, +0x196e, 0x196f, +0x1975, 0x197f, +0x19ac, 0x19af, +0x19ca, 0x19cf, +0x19db, 0x19dd, +0x1a1c, 0x1a1d, +0x1a5f, 0x1a5f, +0x1a7d, 0x1a7e, +0x1a8a, 0x1a8f, +0x1a9a, 0x1a9f, +0x1aae, 0x1aaf, +0x1abf, 0x1aff, +0x1b4c, 0x1b4f, +0x1b7d, 0x1b7f, +0x1bf4, 0x1bfb, +0x1c38, 0x1c3a, +0x1c4a, 0x1c4c, +0x1c89, 0x1c8f, +0x1cbb, 0x1cbc, +0x1cc8, 0x1ccf, +0x1cfa, 0x1cff, +0x1dfa, 0x1dfa, +0x1f16, 0x1f17, +0x1f1e, 0x1f1f, +0x1f46, 0x1f47, +0x1f4e, 0x1f4f, +0x1f58, 0x1f58, +0x1f5a, 0x1f5a, +0x1f5c, 0x1f5c, +0x1f5e, 0x1f5e, +0x1f7e, 0x1f7f, +0x1fb5, 0x1fb5, +0x1fc5, 0x1fc5, +0x1fd4, 0x1fd5, +0x1fdc, 0x1fdc, +0x1ff0, 0x1ff1, +0x1ff5, 0x1ff5, +0x1fff, 0x1fff, +0x2065, 0x2065, +0x2072, 0x2073, +0x208f, 0x208f, +0x209d, 0x209f, +0x20c0, 0x20cf, +0x20f1, 0x20ff, +0x218c, 0x218f, +0x2427, 0x243f, +0x244b, 0x245f, +0x2b74, 0x2b75, +0x2b96, 0x2b97, +0x2bc9, 0x2bc9, +0x2bff, 0x2bff, +0x2c2f, 0x2c2f, +0x2c5f, 0x2c5f, +0x2cf4, 0x2cf8, +0x2d26, 0x2d26, +0x2d28, 0x2d2c, +0x2d2e, 0x2d2f, +0x2d68, 0x2d6e, +0x2d71, 0x2d7e, +0x2d97, 0x2d9f, +0x2da7, 0x2da7, +0x2daf, 0x2daf, +0x2db7, 0x2db7, +0x2dbf, 0x2dbf, +0x2dc7, 0x2dc7, +0x2dcf, 0x2dcf, +0x2dd7, 0x2dd7, +0x2ddf, 0x2ddf, +0x2e4f, 0x2e7f, +0x2e9a, 0x2e9a, +0x2ef4, 0x2eff, +0x2fd6, 0x2fef, +0x2ffc, 0x2fff, +0x3040, 0x3040, +0x3097, 0x3098, +0x3100, 0x3104, +0x3130, 0x3130, +0x318f, 0x318f, +0x31bb, 0x31bf, +0x31e4, 0x31ef, +0x321f, 0x321f, +0x32ff, 0x32ff, +0x4db6, 0x4dbf, +0x9ff0, 0x9fff, +0xa48d, 0xa48f, +0xa4c7, 0xa4cf, +0xa62c, 0xa63f, +0xa6f8, 0xa6ff, +0xa7ba, 0xa7f6, +0xa82c, 0xa82f, +0xa83a, 0xa83f, +0xa878, 0xa87f, +0xa8c6, 0xa8cd, +0xa8da, 0xa8df, +0xa954, 0xa95e, +0xa97d, 0xa97f, +0xa9ce, 0xa9ce, +0xa9da, 0xa9dd, +0xa9ff, 0xa9ff, +0xaa37, 0xaa3f, +0xaa4e, 0xaa4f, +0xaa5a, 0xaa5b, +0xaac3, 0xaada, +0xaaf7, 0xab00, +0xab07, 0xab08, +0xab0f, 0xab10, +0xab17, 0xab1f, +0xab27, 0xab27, +0xab2f, 0xab2f, +0xab66, 0xab6f, +0xabee, 0xabef, +0xabfa, 0xabff, +0xd7a4, 0xd7af, +0xd7c7, 0xd7ca, +0xd7fc, 0xd7ff, +0xfa6e, 0xfa6f, +0xfada, 0xfaff, +0xfb07, 0xfb12, +0xfb18, 0xfb1c, +0xfb37, 0xfb37, +0xfb3d, 0xfb3d, +0xfb3f, 0xfb3f, +0xfb42, 0xfb42, +0xfb45, 0xfb45, +0xfbc2, 0xfbd2, +0xfd40, 0xfd4f, +0xfd90, 0xfd91, +0xfdc8, 0xfdef, +0xfdfe, 0xfdff, +0xfe1a, 0xfe1f, +0xfe53, 0xfe53, +0xfe67, 0xfe67, +0xfe6c, 0xfe6f, +0xfe75, 0xfe75, +0xfefd, 0xfefe, +0xff00, 0xff00, +0xffbf, 0xffc1, +0xffc8, 0xffc9, +0xffd0, 0xffd1, +0xffd8, 0xffd9, +0xffdd, 0xffdf, +0xffe7, 0xffe7, +0xffef, 0xfff8, +0xfffe, 0xffff, +0x1000c, 0x1000c, +0x10027, 0x10027, +0x1003b, 0x1003b, +0x1003e, 0x1003e, +0x1004e, 0x1004f, +0x1005e, 0x1007f, +0x100fb, 0x100ff, +0x10103, 0x10106, +0x10134, 0x10136, +0x1018f, 0x1018f, +0x1019c, 0x1019f, +0x101a1, 0x101cf, +0x101fe, 0x1027f, +0x1029d, 0x1029f, +0x102d1, 0x102df, +0x102fc, 0x102ff, +0x10324, 0x1032c, +0x1034b, 0x1034f, +0x1037b, 0x1037f, +0x1039e, 0x1039e, +0x103c4, 0x103c7, +0x103d6, 0x103ff, +0x1049e, 0x1049f, +0x104aa, 0x104af, +0x104d4, 0x104d7, +0x104fc, 0x104ff, +0x10528, 0x1052f, +0x10564, 0x1056e, +0x10570, 0x105ff, +0x10737, 0x1073f, +0x10756, 0x1075f, +0x10768, 0x107ff, +0x10806, 0x10807, +0x10809, 0x10809, +0x10836, 0x10836, +0x10839, 0x1083b, +0x1083d, 0x1083e, +0x10856, 0x10856, +0x1089f, 0x108a6, +0x108b0, 0x108df, +0x108f3, 0x108f3, +0x108f6, 0x108fa, +0x1091c, 0x1091e, +0x1093a, 0x1093e, +0x10940, 0x1097f, +0x109b8, 0x109bb, +0x109d0, 0x109d1, +0x10a04, 0x10a04, +0x10a07, 0x10a0b, +0x10a14, 0x10a14, +0x10a18, 0x10a18, +0x10a36, 0x10a37, +0x10a3b, 0x10a3e, +0x10a49, 0x10a4f, +0x10a59, 0x10a5f, +0x10aa0, 0x10abf, +0x10ae7, 0x10aea, +0x10af7, 0x10aff, +0x10b36, 0x10b38, +0x10b56, 0x10b57, +0x10b73, 0x10b77, +0x10b92, 0x10b98, +0x10b9d, 0x10ba8, +0x10bb0, 0x10bff, +0x10c49, 0x10c7f, +0x10cb3, 0x10cbf, +0x10cf3, 0x10cf9, +0x10d28, 0x10d2f, +0x10d3a, 0x10e5f, +0x10e7f, 0x10eff, +0x10f28, 0x10f2f, +0x10f5a, 0x10fff, +0x1104e, 0x11051, +0x11070, 0x1107e, +0x110c2, 0x110cc, +0x110ce, 0x110cf, +0x110e9, 0x110ef, +0x110fa, 0x110ff, +0x11135, 0x11135, +0x11147, 0x1114f, +0x11177, 0x1117f, +0x111ce, 0x111cf, +0x111e0, 0x111e0, +0x111f5, 0x111ff, +0x11212, 0x11212, +0x1123f, 0x1127f, +0x11287, 0x11287, +0x11289, 0x11289, +0x1128e, 0x1128e, +0x1129e, 0x1129e, +0x112aa, 0x112af, +0x112eb, 0x112ef, +0x112fa, 0x112ff, +0x11304, 0x11304, +0x1130d, 0x1130e, +0x11311, 0x11312, +0x11329, 0x11329, +0x11331, 0x11331, +0x11334, 0x11334, +0x1133a, 0x1133a, +0x11345, 0x11346, +0x11349, 0x1134a, +0x1134e, 0x1134f, +0x11351, 0x11356, +0x11358, 0x1135c, +0x11364, 0x11365, +0x1136d, 0x1136f, +0x11375, 0x113ff, +0x1145a, 0x1145a, +0x1145c, 0x1145c, +0x1145f, 0x1147f, +0x114c8, 0x114cf, +0x114da, 0x1157f, +0x115b6, 0x115b7, +0x115de, 0x115ff, +0x11645, 0x1164f, +0x1165a, 0x1165f, +0x1166d, 0x1167f, +0x116b8, 0x116bf, +0x116ca, 0x116ff, +0x1171b, 0x1171c, +0x1172c, 0x1172f, +0x11740, 0x117ff, +0x1183c, 0x1189f, +0x118f3, 0x118fe, +0x11900, 0x119ff, +0x11a48, 0x11a4f, +0x11a84, 0x11a85, +0x11aa3, 0x11abf, +0x11af9, 0x11bff, +0x11c09, 0x11c09, +0x11c37, 0x11c37, +0x11c46, 0x11c4f, +0x11c6d, 0x11c6f, +0x11c90, 0x11c91, +0x11ca8, 0x11ca8, +0x11cb7, 0x11cff, +0x11d07, 0x11d07, +0x11d0a, 0x11d0a, +0x11d37, 0x11d39, +0x11d3b, 0x11d3b, +0x11d3e, 0x11d3e, +0x11d48, 0x11d4f, +0x11d5a, 0x11d5f, +0x11d66, 0x11d66, +0x11d69, 0x11d69, +0x11d8f, 0x11d8f, +0x11d92, 0x11d92, +0x11d99, 0x11d9f, +0x11daa, 0x11edf, +0x11ef9, 0x11fff, +0x1239a, 0x123ff, +0x1246f, 0x1246f, +0x12475, 0x1247f, +0x12544, 0x12fff, +0x1342f, 0x143ff, +0x14647, 0x167ff, +0x16a39, 0x16a3f, +0x16a5f, 0x16a5f, +0x16a6a, 0x16a6d, +0x16a70, 0x16acf, +0x16aee, 0x16aef, +0x16af6, 0x16aff, +0x16b46, 0x16b4f, +0x16b5a, 0x16b5a, +0x16b62, 0x16b62, +0x16b78, 0x16b7c, +0x16b90, 0x16e3f, +0x16e9b, 0x16eff, +0x16f45, 0x16f4f, +0x16f7f, 0x16f8e, +0x16fa0, 0x16fdf, +0x16fe2, 0x16fff, +0x187f2, 0x187ff, +0x18af3, 0x1afff, +0x1b11f, 0x1b16f, +0x1b2fc, 0x1bbff, +0x1bc6b, 0x1bc6f, +0x1bc7d, 0x1bc7f, +0x1bc89, 0x1bc8f, +0x1bc9a, 0x1bc9b, +0x1bca4, 0x1cfff, +0x1d0f6, 0x1d0ff, +0x1d127, 0x1d128, +0x1d1e9, 0x1d1ff, +0x1d246, 0x1d2df, +0x1d2f4, 0x1d2ff, +0x1d357, 0x1d35f, +0x1d379, 0x1d3ff, +0x1d455, 0x1d455, +0x1d49d, 0x1d49d, +0x1d4a0, 0x1d4a1, +0x1d4a3, 0x1d4a4, +0x1d4a7, 0x1d4a8, +0x1d4ad, 0x1d4ad, +0x1d4ba, 0x1d4ba, +0x1d4bc, 0x1d4bc, +0x1d4c4, 0x1d4c4, +0x1d506, 0x1d506, +0x1d50b, 0x1d50c, +0x1d515, 0x1d515, +0x1d51d, 0x1d51d, +0x1d53a, 0x1d53a, +0x1d53f, 0x1d53f, +0x1d545, 0x1d545, +0x1d547, 0x1d549, +0x1d551, 0x1d551, +0x1d6a6, 0x1d6a7, +0x1d7cc, 0x1d7cd, +0x1da8c, 0x1da9a, +0x1daa0, 0x1daa0, +0x1dab0, 0x1dfff, +0x1e007, 0x1e007, +0x1e019, 0x1e01a, +0x1e022, 0x1e022, +0x1e025, 0x1e025, +0x1e02b, 0x1e7ff, +0x1e8c5, 0x1e8c6, +0x1e8d7, 0x1e8ff, +0x1e94b, 0x1e94f, +0x1e95a, 0x1e95d, +0x1e960, 0x1ec70, +0x1ecb5, 0x1edff, +0x1ee04, 0x1ee04, +0x1ee20, 0x1ee20, +0x1ee23, 0x1ee23, +0x1ee25, 0x1ee26, +0x1ee28, 0x1ee28, +0x1ee33, 0x1ee33, +0x1ee38, 0x1ee38, +0x1ee3a, 0x1ee3a, +0x1ee3c, 0x1ee41, +0x1ee43, 0x1ee46, +0x1ee48, 0x1ee48, +0x1ee4a, 0x1ee4a, +0x1ee4c, 0x1ee4c, +0x1ee50, 0x1ee50, +0x1ee53, 0x1ee53, +0x1ee55, 0x1ee56, +0x1ee58, 0x1ee58, +0x1ee5a, 0x1ee5a, +0x1ee5c, 0x1ee5c, +0x1ee5e, 0x1ee5e, +0x1ee60, 0x1ee60, +0x1ee63, 0x1ee63, +0x1ee65, 0x1ee66, +0x1ee6b, 0x1ee6b, +0x1ee73, 0x1ee73, +0x1ee78, 0x1ee78, +0x1ee7d, 0x1ee7d, +0x1ee7f, 0x1ee7f, +0x1ee8a, 0x1ee8a, +0x1ee9c, 0x1eea0, +0x1eea4, 0x1eea4, +0x1eeaa, 0x1eeaa, +0x1eebc, 0x1eeef, +0x1eef2, 0x1efff, +0x1f02c, 0x1f02f, +0x1f094, 0x1f09f, +0x1f0af, 0x1f0b0, +0x1f0c0, 0x1f0c0, +0x1f0d0, 0x1f0d0, +0x1f0f6, 0x1f0ff, +0x1f10d, 0x1f10f, +0x1f16c, 0x1f16f, +0x1f1ad, 0x1f1e5, +0x1f203, 0x1f20f, +0x1f23c, 0x1f23f, +0x1f249, 0x1f24f, +0x1f252, 0x1f25f, +0x1f266, 0x1f2ff, +0x1f6d5, 0x1f6df, +0x1f6ed, 0x1f6ef, +0x1f6fa, 0x1f6ff, +0x1f774, 0x1f77f, +0x1f7d9, 0x1f7ff, +0x1f80c, 0x1f80f, +0x1f848, 0x1f84f, +0x1f85a, 0x1f85f, +0x1f888, 0x1f88f, +0x1f8ae, 0x1f8ff, +0x1f90c, 0x1f90f, +0x1f93f, 0x1f93f, +0x1f971, 0x1f972, +0x1f977, 0x1f979, +0x1f97b, 0x1f97b, +0x1f9a3, 0x1f9af, +0x1f9ba, 0x1f9bf, +0x1f9c3, 0x1f9cf, +0x1fa00, 0x1fa5f, +0x1fa6e, 0x1ffff, +0x2a6d7, 0x2a6ff, +0x2b735, 0x2b73f, +0x2b81e, 0x2b81f, +0x2cea2, 0x2ceaf, +0x2ebe1, 0x2f7ff, +0x2fa1e, 0xe0000, +0xe0002, 0xe001f, +0xe0080, 0xe00ff, +0xe01f0, 0xeffff, +0xffffe, 0xfffff, +0x10fffe, 0x10ffff, +}; /* END of CR_Cn */ + +/* PROPERTY: 'Co': General Category */ +static const OnigCodePoint +CR_Co[] = { 3, +0xe000, 0xf8ff, +0xf0000, 0xffffd, +0x100000, 0x10fffd, +}; /* END of CR_Co */ + +/* PROPERTY: 'Common': Script */ +static const OnigCodePoint +CR_Common[] = { 166, +0x0000, 0x0040, +0x005b, 0x0060, +0x007b, 0x00a9, +0x00ab, 0x00b9, +0x00bb, 0x00bf, +0x00d7, 0x00d7, +0x00f7, 0x00f7, +0x02b9, 0x02df, +0x02e5, 0x02e9, +0x02ec, 0x02ff, +0x0374, 0x0374, +0x037e, 0x037e, +0x0385, 0x0385, +0x0387, 0x0387, +0x0589, 0x0589, +0x0605, 0x0605, +0x060c, 0x060c, +0x061b, 0x061b, +0x061f, 0x061f, +0x0640, 0x0640, +0x06dd, 0x06dd, +0x08e2, 0x08e2, +0x0964, 0x0965, +0x0e3f, 0x0e3f, +0x0fd5, 0x0fd8, +0x10fb, 0x10fb, +0x16eb, 0x16ed, +0x1735, 0x1736, +0x1802, 0x1803, +0x1805, 0x1805, +0x1cd3, 0x1cd3, +0x1ce1, 0x1ce1, +0x1ce9, 0x1cec, +0x1cee, 0x1cf3, +0x1cf5, 0x1cf7, +0x2000, 0x200b, +0x200e, 0x2064, +0x2066, 0x2070, +0x2074, 0x207e, +0x2080, 0x208e, +0x20a0, 0x20bf, +0x2100, 0x2125, +0x2127, 0x2129, +0x212c, 0x2131, +0x2133, 0x214d, +0x214f, 0x215f, +0x2189, 0x218b, +0x2190, 0x2426, +0x2440, 0x244a, +0x2460, 0x27ff, +0x2900, 0x2b73, +0x2b76, 0x2b95, +0x2b98, 0x2bc8, +0x2bca, 0x2bfe, +0x2e00, 0x2e4e, +0x2ff0, 0x2ffb, +0x3000, 0x3004, +0x3006, 0x3006, +0x3008, 0x3020, +0x3030, 0x3037, +0x303c, 0x303f, +0x309b, 0x309c, +0x30a0, 0x30a0, +0x30fb, 0x30fc, +0x3190, 0x319f, +0x31c0, 0x31e3, +0x3220, 0x325f, +0x327f, 0x32cf, +0x3358, 0x33ff, +0x4dc0, 0x4dff, +0xa700, 0xa721, +0xa788, 0xa78a, +0xa830, 0xa839, +0xa92e, 0xa92e, +0xa9cf, 0xa9cf, +0xab5b, 0xab5b, +0xfd3e, 0xfd3f, +0xfe10, 0xfe19, +0xfe30, 0xfe52, +0xfe54, 0xfe66, +0xfe68, 0xfe6b, +0xfeff, 0xfeff, +0xff01, 0xff20, +0xff3b, 0xff40, +0xff5b, 0xff65, +0xff70, 0xff70, +0xff9e, 0xff9f, +0xffe0, 0xffe6, +0xffe8, 0xffee, +0xfff9, 0xfffd, +0x10100, 0x10102, +0x10107, 0x10133, +0x10137, 0x1013f, +0x10190, 0x1019b, +0x101d0, 0x101fc, +0x102e1, 0x102fb, +0x1bca0, 0x1bca3, +0x1d000, 0x1d0f5, +0x1d100, 0x1d126, +0x1d129, 0x1d166, +0x1d16a, 0x1d17a, +0x1d183, 0x1d184, +0x1d18c, 0x1d1a9, +0x1d1ae, 0x1d1e8, +0x1d2e0, 0x1d2f3, +0x1d300, 0x1d356, +0x1d360, 0x1d378, +0x1d400, 0x1d454, +0x1d456, 0x1d49c, +0x1d49e, 0x1d49f, +0x1d4a2, 0x1d4a2, +0x1d4a5, 0x1d4a6, +0x1d4a9, 0x1d4ac, +0x1d4ae, 0x1d4b9, +0x1d4bb, 0x1d4bb, +0x1d4bd, 0x1d4c3, +0x1d4c5, 0x1d505, +0x1d507, 0x1d50a, +0x1d50d, 0x1d514, +0x1d516, 0x1d51c, +0x1d51e, 0x1d539, +0x1d53b, 0x1d53e, +0x1d540, 0x1d544, +0x1d546, 0x1d546, +0x1d54a, 0x1d550, +0x1d552, 0x1d6a5, +0x1d6a8, 0x1d7cb, +0x1d7ce, 0x1d7ff, +0x1ec71, 0x1ecb4, +0x1f000, 0x1f02b, +0x1f030, 0x1f093, +0x1f0a0, 0x1f0ae, +0x1f0b1, 0x1f0bf, +0x1f0c1, 0x1f0cf, +0x1f0d1, 0x1f0f5, +0x1f100, 0x1f10c, +0x1f110, 0x1f16b, +0x1f170, 0x1f1ac, +0x1f1e6, 0x1f1ff, +0x1f201, 0x1f202, +0x1f210, 0x1f23b, +0x1f240, 0x1f248, +0x1f250, 0x1f251, +0x1f260, 0x1f265, +0x1f300, 0x1f6d4, +0x1f6e0, 0x1f6ec, +0x1f6f0, 0x1f6f9, +0x1f700, 0x1f773, +0x1f780, 0x1f7d8, +0x1f800, 0x1f80b, +0x1f810, 0x1f847, +0x1f850, 0x1f859, +0x1f860, 0x1f887, +0x1f890, 0x1f8ad, +0x1f900, 0x1f90b, +0x1f910, 0x1f93e, +0x1f940, 0x1f970, +0x1f973, 0x1f976, +0x1f97a, 0x1f97a, +0x1f97c, 0x1f9a2, +0x1f9b0, 0x1f9b9, +0x1f9c0, 0x1f9c2, +0x1f9d0, 0x1f9ff, +0x1fa60, 0x1fa6d, +0xe0001, 0xe0001, +0xe0020, 0xe007f, +}; /* END of CR_Common */ + +/* PROPERTY: 'Coptic': Script */ +static const OnigCodePoint +CR_Coptic[] = { 3, +0x03e2, 0x03ef, +0x2c80, 0x2cf3, +0x2cf9, 0x2cff, +}; /* END of CR_Coptic */ + +/* PROPERTY: 'Cs': General Category */ +static const OnigCodePoint +CR_Cs[] = { 1, +0xd800, 0xdfff, +}; /* END of CR_Cs */ + +/* PROPERTY: 'Cuneiform': Script */ +static const OnigCodePoint +CR_Cuneiform[] = { 4, +0x12000, 0x12399, +0x12400, 0x1246e, +0x12470, 0x12474, +0x12480, 0x12543, +}; /* END of CR_Cuneiform */ + +/* PROPERTY: 'Cypriot': Script */ +static const OnigCodePoint +CR_Cypriot[] = { 6, +0x10800, 0x10805, +0x10808, 0x10808, +0x1080a, 0x10835, +0x10837, 0x10838, +0x1083c, 0x1083c, +0x1083f, 0x1083f, +}; /* END of CR_Cypriot */ + +/* PROPERTY: 'Cyrillic': Script */ +static const OnigCodePoint +CR_Cyrillic[] = { 8, +0x0400, 0x0484, +0x0487, 0x052f, +0x1c80, 0x1c88, +0x1d2b, 0x1d2b, +0x1d78, 0x1d78, +0x2de0, 0x2dff, +0xa640, 0xa69f, +0xfe2e, 0xfe2f, +}; /* END of CR_Cyrillic */ + +/* PROPERTY: 'Dash': Binary Property */ +static const OnigCodePoint +CR_Dash[] = { 21, +0x002d, 0x002d, +0x058a, 0x058a, +0x05be, 0x05be, +0x1400, 0x1400, +0x1806, 0x1806, +0x2010, 0x2015, +0x2053, 0x2053, +0x207b, 0x207b, +0x208b, 0x208b, +0x2212, 0x2212, +0x2e17, 0x2e17, +0x2e1a, 0x2e1a, +0x2e3a, 0x2e3b, +0x2e40, 0x2e40, +0x301c, 0x301c, +0x3030, 0x3030, +0x30a0, 0x30a0, +0xfe31, 0xfe32, +0xfe58, 0xfe58, +0xfe63, 0xfe63, +0xff0d, 0xff0d, +}; /* END of CR_Dash */ + +/* PROPERTY: 'Default_Ignorable_Code_Point': Derived Property */ +static const OnigCodePoint +CR_Default_Ignorable_Code_Point[] = { 17, +0x00ad, 0x00ad, +0x034f, 0x034f, +0x061c, 0x061c, +0x115f, 0x1160, +0x17b4, 0x17b5, +0x180b, 0x180e, +0x200b, 0x200f, +0x202a, 0x202e, +0x2060, 0x206f, +0x3164, 0x3164, +0xfe00, 0xfe0f, +0xfeff, 0xfeff, +0xffa0, 0xffa0, +0xfff0, 0xfff8, +0x1bca0, 0x1bca3, +0x1d173, 0x1d17a, +0xe0000, 0xe0fff, +}; /* END of CR_Default_Ignorable_Code_Point */ + +/* PROPERTY: 'Deprecated': Binary Property */ +static const OnigCodePoint +CR_Deprecated[] = { 8, +0x0149, 0x0149, +0x0673, 0x0673, +0x0f77, 0x0f77, +0x0f79, 0x0f79, +0x17a3, 0x17a4, +0x206a, 0x206f, +0x2329, 0x232a, +0xe0001, 0xe0001, +}; /* END of CR_Deprecated */ + +/* PROPERTY: 'Deseret': Script */ +static const OnigCodePoint +CR_Deseret[] = { 1, +0x10400, 0x1044f, +}; /* END of CR_Deseret */ + +/* PROPERTY: 'Devanagari': Script */ +static const OnigCodePoint +CR_Devanagari[] = { 4, +0x0900, 0x0950, +0x0953, 0x0963, +0x0966, 0x097f, +0xa8e0, 0xa8ff, +}; /* END of CR_Devanagari */ + +/* PROPERTY: 'Diacritic': Binary Property */ +static const OnigCodePoint +CR_Diacritic[] = { 163, +0x005e, 0x005e, +0x0060, 0x0060, +0x00a8, 0x00a8, +0x00af, 0x00af, +0x00b4, 0x00b4, +0x00b7, 0x00b8, +0x02b0, 0x034e, +0x0350, 0x0357, +0x035d, 0x0362, +0x0374, 0x0375, +0x037a, 0x037a, +0x0384, 0x0385, +0x0483, 0x0487, +0x0559, 0x0559, +0x0591, 0x05a1, +0x05a3, 0x05bd, +0x05bf, 0x05bf, +0x05c1, 0x05c2, +0x05c4, 0x05c4, +0x064b, 0x0652, +0x0657, 0x0658, +0x06df, 0x06e0, +0x06e5, 0x06e6, +0x06ea, 0x06ec, +0x0730, 0x074a, +0x07a6, 0x07b0, +0x07eb, 0x07f5, +0x0818, 0x0819, +0x08e3, 0x08fe, +0x093c, 0x093c, +0x094d, 0x094d, +0x0951, 0x0954, +0x0971, 0x0971, +0x09bc, 0x09bc, +0x09cd, 0x09cd, +0x0a3c, 0x0a3c, +0x0a4d, 0x0a4d, +0x0abc, 0x0abc, +0x0acd, 0x0acd, +0x0afd, 0x0aff, +0x0b3c, 0x0b3c, +0x0b4d, 0x0b4d, +0x0bcd, 0x0bcd, +0x0c4d, 0x0c4d, +0x0cbc, 0x0cbc, +0x0ccd, 0x0ccd, +0x0d3b, 0x0d3c, +0x0d4d, 0x0d4d, +0x0dca, 0x0dca, +0x0e47, 0x0e4c, +0x0e4e, 0x0e4e, +0x0ec8, 0x0ecc, +0x0f18, 0x0f19, +0x0f35, 0x0f35, +0x0f37, 0x0f37, +0x0f39, 0x0f39, +0x0f3e, 0x0f3f, +0x0f82, 0x0f84, +0x0f86, 0x0f87, +0x0fc6, 0x0fc6, +0x1037, 0x1037, +0x1039, 0x103a, +0x1087, 0x108d, +0x108f, 0x108f, +0x109a, 0x109b, +0x17c9, 0x17d3, +0x17dd, 0x17dd, +0x1939, 0x193b, +0x1a75, 0x1a7c, +0x1a7f, 0x1a7f, +0x1ab0, 0x1abd, +0x1b34, 0x1b34, +0x1b44, 0x1b44, +0x1b6b, 0x1b73, +0x1baa, 0x1bab, +0x1c36, 0x1c37, +0x1c78, 0x1c7d, +0x1cd0, 0x1ce8, +0x1ced, 0x1ced, +0x1cf4, 0x1cf4, +0x1cf7, 0x1cf9, +0x1d2c, 0x1d6a, +0x1dc4, 0x1dcf, +0x1df5, 0x1df9, +0x1dfd, 0x1dff, +0x1fbd, 0x1fbd, +0x1fbf, 0x1fc1, +0x1fcd, 0x1fcf, +0x1fdd, 0x1fdf, +0x1fed, 0x1fef, +0x1ffd, 0x1ffe, +0x2cef, 0x2cf1, +0x2e2f, 0x2e2f, +0x302a, 0x302f, +0x3099, 0x309c, +0x30fc, 0x30fc, +0xa66f, 0xa66f, +0xa67c, 0xa67d, +0xa67f, 0xa67f, +0xa69c, 0xa69d, +0xa6f0, 0xa6f1, +0xa717, 0xa721, +0xa788, 0xa788, +0xa7f8, 0xa7f9, +0xa8c4, 0xa8c4, +0xa8e0, 0xa8f1, +0xa92b, 0xa92e, +0xa953, 0xa953, +0xa9b3, 0xa9b3, +0xa9c0, 0xa9c0, +0xa9e5, 0xa9e5, +0xaa7b, 0xaa7d, +0xaabf, 0xaac2, +0xaaf6, 0xaaf6, +0xab5b, 0xab5f, +0xabec, 0xabed, +0xfb1e, 0xfb1e, +0xfe20, 0xfe2f, +0xff3e, 0xff3e, +0xff40, 0xff40, +0xff70, 0xff70, +0xff9e, 0xff9f, +0xffe3, 0xffe3, +0x102e0, 0x102e0, +0x10ae5, 0x10ae6, +0x10d22, 0x10d27, +0x10f46, 0x10f50, +0x110b9, 0x110ba, +0x11133, 0x11134, +0x11173, 0x11173, +0x111c0, 0x111c0, +0x111ca, 0x111cc, +0x11235, 0x11236, +0x112e9, 0x112ea, +0x1133c, 0x1133c, +0x1134d, 0x1134d, +0x11366, 0x1136c, +0x11370, 0x11374, +0x11442, 0x11442, +0x11446, 0x11446, +0x114c2, 0x114c3, +0x115bf, 0x115c0, +0x1163f, 0x1163f, +0x116b6, 0x116b7, +0x1172b, 0x1172b, +0x11839, 0x1183a, +0x11a34, 0x11a34, +0x11a47, 0x11a47, +0x11a99, 0x11a99, +0x11c3f, 0x11c3f, +0x11d42, 0x11d42, +0x11d44, 0x11d45, +0x11d97, 0x11d97, +0x16af0, 0x16af4, +0x16f8f, 0x16f9f, +0x1d167, 0x1d169, +0x1d16d, 0x1d172, +0x1d17b, 0x1d182, +0x1d185, 0x1d18b, +0x1d1aa, 0x1d1ad, +0x1e8d0, 0x1e8d6, +0x1e944, 0x1e946, +0x1e948, 0x1e94a, +}; /* END of CR_Diacritic */ + +/* PROPERTY: 'Dogra': Script */ +static const OnigCodePoint +CR_Dogra[] = { 1, +0x11800, 0x1183b, +}; /* END of CR_Dogra */ + +/* PROPERTY: 'Duployan': Script */ +static const OnigCodePoint +CR_Duployan[] = { 5, +0x1bc00, 0x1bc6a, +0x1bc70, 0x1bc7c, +0x1bc80, 0x1bc88, +0x1bc90, 0x1bc99, +0x1bc9c, 0x1bc9f, +}; /* END of CR_Duployan */ + +/* PROPERTY: 'Egyptian_Hieroglyphs': Script */ +static const OnigCodePoint +CR_Egyptian_Hieroglyphs[] = { 1, +0x13000, 0x1342e, +}; /* END of CR_Egyptian_Hieroglyphs */ + +/* PROPERTY: 'Elbasan': Script */ +static const OnigCodePoint +CR_Elbasan[] = { 1, +0x10500, 0x10527, +}; /* END of CR_Elbasan */ + +/* PROPERTY: 'Emoji': Emoji Property */ +static const OnigCodePoint +CR_Emoji[] = { 147, +0x0023, 0x0023, +0x002a, 0x002a, +0x0030, 0x0039, +0x00a9, 0x00a9, +0x00ae, 0x00ae, +0x203c, 0x203c, +0x2049, 0x2049, +0x2122, 0x2122, +0x2139, 0x2139, +0x2194, 0x2199, +0x21a9, 0x21aa, +0x231a, 0x231b, +0x2328, 0x2328, +0x23cf, 0x23cf, +0x23e9, 0x23f3, +0x23f8, 0x23fa, +0x24c2, 0x24c2, +0x25aa, 0x25ab, +0x25b6, 0x25b6, +0x25c0, 0x25c0, +0x25fb, 0x25fe, +0x2600, 0x2604, +0x260e, 0x260e, +0x2611, 0x2611, +0x2614, 0x2615, +0x2618, 0x2618, +0x261d, 0x261d, +0x2620, 0x2620, +0x2622, 0x2623, +0x2626, 0x2626, +0x262a, 0x262a, +0x262e, 0x262f, +0x2638, 0x263a, +0x2640, 0x2640, +0x2642, 0x2642, +0x2648, 0x2653, +0x265f, 0x2660, +0x2663, 0x2663, +0x2665, 0x2666, +0x2668, 0x2668, +0x267b, 0x267b, +0x267e, 0x267f, +0x2692, 0x2697, +0x2699, 0x2699, +0x269b, 0x269c, +0x26a0, 0x26a1, +0x26aa, 0x26ab, +0x26b0, 0x26b1, +0x26bd, 0x26be, +0x26c4, 0x26c5, +0x26c8, 0x26c8, +0x26ce, 0x26cf, +0x26d1, 0x26d1, +0x26d3, 0x26d4, +0x26e9, 0x26ea, +0x26f0, 0x26f5, +0x26f7, 0x26fa, +0x26fd, 0x26fd, +0x2702, 0x2702, +0x2705, 0x2705, +0x2708, 0x270d, +0x270f, 0x270f, +0x2712, 0x2712, +0x2714, 0x2714, +0x2716, 0x2716, +0x271d, 0x271d, +0x2721, 0x2721, +0x2728, 0x2728, +0x2733, 0x2734, +0x2744, 0x2744, +0x2747, 0x2747, +0x274c, 0x274c, +0x274e, 0x274e, +0x2753, 0x2755, +0x2757, 0x2757, +0x2763, 0x2764, +0x2795, 0x2797, +0x27a1, 0x27a1, +0x27b0, 0x27b0, +0x27bf, 0x27bf, +0x2934, 0x2935, +0x2b05, 0x2b07, +0x2b1b, 0x2b1c, +0x2b50, 0x2b50, +0x2b55, 0x2b55, +0x3030, 0x3030, +0x303d, 0x303d, +0x3297, 0x3297, +0x3299, 0x3299, +0x1f004, 0x1f004, +0x1f0cf, 0x1f0cf, +0x1f170, 0x1f171, +0x1f17e, 0x1f17f, +0x1f18e, 0x1f18e, +0x1f191, 0x1f19a, +0x1f1e6, 0x1f1ff, +0x1f201, 0x1f202, +0x1f21a, 0x1f21a, +0x1f22f, 0x1f22f, +0x1f232, 0x1f23a, +0x1f250, 0x1f251, +0x1f300, 0x1f321, +0x1f324, 0x1f393, +0x1f396, 0x1f397, +0x1f399, 0x1f39b, +0x1f39e, 0x1f3f0, +0x1f3f3, 0x1f3f5, +0x1f3f7, 0x1f4fd, +0x1f4ff, 0x1f53d, +0x1f549, 0x1f54e, +0x1f550, 0x1f567, +0x1f56f, 0x1f570, +0x1f573, 0x1f57a, +0x1f587, 0x1f587, +0x1f58a, 0x1f58d, +0x1f590, 0x1f590, +0x1f595, 0x1f596, +0x1f5a4, 0x1f5a5, +0x1f5a8, 0x1f5a8, +0x1f5b1, 0x1f5b2, +0x1f5bc, 0x1f5bc, +0x1f5c2, 0x1f5c4, +0x1f5d1, 0x1f5d3, +0x1f5dc, 0x1f5de, +0x1f5e1, 0x1f5e1, +0x1f5e3, 0x1f5e3, +0x1f5e8, 0x1f5e8, +0x1f5ef, 0x1f5ef, +0x1f5f3, 0x1f5f3, +0x1f5fa, 0x1f64f, +0x1f680, 0x1f6c5, +0x1f6cb, 0x1f6d2, +0x1f6e0, 0x1f6e5, +0x1f6e9, 0x1f6e9, +0x1f6eb, 0x1f6ec, +0x1f6f0, 0x1f6f0, +0x1f6f3, 0x1f6f9, +0x1f910, 0x1f93a, +0x1f93c, 0x1f93e, +0x1f940, 0x1f945, +0x1f947, 0x1f970, +0x1f973, 0x1f976, +0x1f97a, 0x1f97a, +0x1f97c, 0x1f9a2, +0x1f9b0, 0x1f9b9, +0x1f9c0, 0x1f9c2, +0x1f9d0, 0x1f9ff, +}; /* END of CR_Emoji */ + +/* PROPERTY: 'Emoji_Component': Emoji Property */ +static const OnigCodePoint +CR_Emoji_Component[] = { 10, +0x0023, 0x0023, +0x002a, 0x002a, +0x0030, 0x0039, +0x200d, 0x200d, +0x20e3, 0x20e3, +0xfe0f, 0xfe0f, +0x1f1e6, 0x1f1ff, +0x1f3fb, 0x1f3ff, +0x1f9b0, 0x1f9b3, +0xe0020, 0xe007f, +}; /* END of CR_Emoji_Component */ + +/* PROPERTY: 'Emoji_Modifier': Emoji Property */ +static const OnigCodePoint +CR_Emoji_Modifier[] = { 1, +0x1f3fb, 0x1f3ff, +}; /* END of CR_Emoji_Modifier */ + +/* PROPERTY: 'Emoji_Modifier_Base': Emoji Property */ +static const OnigCodePoint +CR_Emoji_Modifier_Base[] = { 34, +0x261d, 0x261d, +0x26f9, 0x26f9, +0x270a, 0x270d, +0x1f385, 0x1f385, +0x1f3c2, 0x1f3c4, +0x1f3c7, 0x1f3c7, +0x1f3ca, 0x1f3cc, +0x1f442, 0x1f443, +0x1f446, 0x1f450, +0x1f466, 0x1f469, +0x1f46e, 0x1f46e, +0x1f470, 0x1f478, +0x1f47c, 0x1f47c, +0x1f481, 0x1f483, +0x1f485, 0x1f487, +0x1f4aa, 0x1f4aa, +0x1f574, 0x1f575, +0x1f57a, 0x1f57a, +0x1f590, 0x1f590, +0x1f595, 0x1f596, +0x1f645, 0x1f647, +0x1f64b, 0x1f64f, +0x1f6a3, 0x1f6a3, +0x1f6b4, 0x1f6b6, +0x1f6c0, 0x1f6c0, +0x1f6cc, 0x1f6cc, +0x1f918, 0x1f91c, +0x1f91e, 0x1f91f, +0x1f926, 0x1f926, +0x1f930, 0x1f939, +0x1f93d, 0x1f93e, +0x1f9b5, 0x1f9b6, +0x1f9b8, 0x1f9b9, +0x1f9d1, 0x1f9dd, +}; /* END of CR_Emoji_Modifier_Base */ + +/* PROPERTY: 'Emoji_Presentation': Emoji Property */ +static const OnigCodePoint +CR_Emoji_Presentation[] = { 77, +0x231a, 0x231b, +0x23e9, 0x23ec, +0x23f0, 0x23f0, +0x23f3, 0x23f3, +0x25fd, 0x25fe, +0x2614, 0x2615, +0x2648, 0x2653, +0x267f, 0x267f, +0x2693, 0x2693, +0x26a1, 0x26a1, +0x26aa, 0x26ab, +0x26bd, 0x26be, +0x26c4, 0x26c5, +0x26ce, 0x26ce, +0x26d4, 0x26d4, +0x26ea, 0x26ea, +0x26f2, 0x26f3, +0x26f5, 0x26f5, +0x26fa, 0x26fa, +0x26fd, 0x26fd, +0x2705, 0x2705, +0x270a, 0x270b, +0x2728, 0x2728, +0x274c, 0x274c, +0x274e, 0x274e, +0x2753, 0x2755, +0x2757, 0x2757, +0x2795, 0x2797, +0x27b0, 0x27b0, +0x27bf, 0x27bf, +0x2b1b, 0x2b1c, +0x2b50, 0x2b50, +0x2b55, 0x2b55, +0x1f004, 0x1f004, +0x1f0cf, 0x1f0cf, +0x1f18e, 0x1f18e, +0x1f191, 0x1f19a, +0x1f1e6, 0x1f1ff, +0x1f201, 0x1f201, +0x1f21a, 0x1f21a, +0x1f22f, 0x1f22f, +0x1f232, 0x1f236, +0x1f238, 0x1f23a, +0x1f250, 0x1f251, +0x1f300, 0x1f320, +0x1f32d, 0x1f335, +0x1f337, 0x1f37c, +0x1f37e, 0x1f393, +0x1f3a0, 0x1f3ca, +0x1f3cf, 0x1f3d3, +0x1f3e0, 0x1f3f0, +0x1f3f4, 0x1f3f4, +0x1f3f8, 0x1f43e, +0x1f440, 0x1f440, +0x1f442, 0x1f4fc, +0x1f4ff, 0x1f53d, +0x1f54b, 0x1f54e, +0x1f550, 0x1f567, +0x1f57a, 0x1f57a, +0x1f595, 0x1f596, +0x1f5a4, 0x1f5a4, +0x1f5fb, 0x1f64f, +0x1f680, 0x1f6c5, +0x1f6cc, 0x1f6cc, +0x1f6d0, 0x1f6d2, +0x1f6eb, 0x1f6ec, +0x1f6f4, 0x1f6f9, +0x1f910, 0x1f93a, +0x1f93c, 0x1f93e, +0x1f940, 0x1f945, +0x1f947, 0x1f970, +0x1f973, 0x1f976, +0x1f97a, 0x1f97a, +0x1f97c, 0x1f9a2, +0x1f9b0, 0x1f9b9, +0x1f9c0, 0x1f9c2, +0x1f9d0, 0x1f9ff, +}; /* END of CR_Emoji_Presentation */ + +/* PROPERTY: 'Ethiopic': Script */ +static const OnigCodePoint +CR_Ethiopic[] = { 32, +0x1200, 0x1248, +0x124a, 0x124d, +0x1250, 0x1256, +0x1258, 0x1258, +0x125a, 0x125d, +0x1260, 0x1288, +0x128a, 0x128d, +0x1290, 0x12b0, +0x12b2, 0x12b5, +0x12b8, 0x12be, +0x12c0, 0x12c0, +0x12c2, 0x12c5, +0x12c8, 0x12d6, +0x12d8, 0x1310, +0x1312, 0x1315, +0x1318, 0x135a, +0x135d, 0x137c, +0x1380, 0x1399, +0x2d80, 0x2d96, +0x2da0, 0x2da6, +0x2da8, 0x2dae, +0x2db0, 0x2db6, +0x2db8, 0x2dbe, +0x2dc0, 0x2dc6, +0x2dc8, 0x2dce, +0x2dd0, 0x2dd6, +0x2dd8, 0x2dde, +0xab01, 0xab06, +0xab09, 0xab0e, +0xab11, 0xab16, +0xab20, 0xab26, +0xab28, 0xab2e, +}; /* END of CR_Ethiopic */ + +/* PROPERTY: 'Extended_Pictographic': Emoji Property */ +static const OnigCodePoint +CR_Extended_Pictographic[] = { 77, +0x00a9, 0x00a9, +0x00ae, 0x00ae, +0x203c, 0x203c, +0x2049, 0x2049, +0x2122, 0x2122, +0x2139, 0x2139, +0x2194, 0x2199, +0x21a9, 0x21aa, +0x231a, 0x231b, +0x2328, 0x2328, +0x2388, 0x2388, +0x23cf, 0x23cf, +0x23e9, 0x23f3, +0x23f8, 0x23fa, +0x24c2, 0x24c2, +0x25aa, 0x25ab, +0x25b6, 0x25b6, +0x25c0, 0x25c0, +0x25fb, 0x25fe, +0x2600, 0x2605, +0x2607, 0x2612, +0x2614, 0x2685, +0x2690, 0x2705, +0x2708, 0x2712, +0x2714, 0x2714, +0x2716, 0x2716, +0x271d, 0x271d, +0x2721, 0x2721, +0x2728, 0x2728, +0x2733, 0x2734, +0x2744, 0x2744, +0x2747, 0x2747, +0x274c, 0x274c, +0x274e, 0x274e, +0x2753, 0x2755, +0x2757, 0x2757, +0x2763, 0x2767, +0x2795, 0x2797, +0x27a1, 0x27a1, +0x27b0, 0x27b0, +0x27bf, 0x27bf, +0x2934, 0x2935, +0x2b05, 0x2b07, +0x2b1b, 0x2b1c, +0x2b50, 0x2b50, +0x2b55, 0x2b55, +0x3030, 0x3030, +0x303d, 0x303d, +0x3297, 0x3297, +0x3299, 0x3299, +0x1f000, 0x1f0ff, +0x1f10d, 0x1f10f, +0x1f12f, 0x1f12f, +0x1f16c, 0x1f171, +0x1f17e, 0x1f17f, +0x1f18e, 0x1f18e, +0x1f191, 0x1f19a, +0x1f1ad, 0x1f1e5, +0x1f201, 0x1f20f, +0x1f21a, 0x1f21a, +0x1f22f, 0x1f22f, +0x1f232, 0x1f23a, +0x1f23c, 0x1f23f, +0x1f249, 0x1f3fa, +0x1f400, 0x1f53d, +0x1f546, 0x1f64f, +0x1f680, 0x1f6ff, +0x1f774, 0x1f77f, +0x1f7d5, 0x1f7ff, +0x1f80c, 0x1f80f, +0x1f848, 0x1f84f, +0x1f85a, 0x1f85f, +0x1f888, 0x1f88f, +0x1f8ae, 0x1f8ff, +0x1f90c, 0x1f93a, +0x1f93c, 0x1f945, +0x1f947, 0x1fffd, +}; /* END of CR_Extended_Pictographic */ + +/* PROPERTY: 'Extender': Binary Property */ +static const OnigCodePoint +CR_Extender[] = { 29, +0x00b7, 0x00b7, +0x02d0, 0x02d1, +0x0640, 0x0640, +0x07fa, 0x07fa, +0x0e46, 0x0e46, +0x0ec6, 0x0ec6, +0x180a, 0x180a, +0x1843, 0x1843, +0x1aa7, 0x1aa7, +0x1c36, 0x1c36, +0x1c7b, 0x1c7b, +0x3005, 0x3005, +0x3031, 0x3035, +0x309d, 0x309e, +0x30fc, 0x30fe, +0xa015, 0xa015, +0xa60c, 0xa60c, +0xa9cf, 0xa9cf, +0xa9e6, 0xa9e6, +0xaa70, 0xaa70, +0xaadd, 0xaadd, +0xaaf3, 0xaaf4, +0xff70, 0xff70, +0x1135d, 0x1135d, +0x115c6, 0x115c8, +0x11a98, 0x11a98, +0x16b42, 0x16b43, +0x16fe0, 0x16fe1, +0x1e944, 0x1e946, +}; /* END of CR_Extender */ + +/* PROPERTY: 'Georgian': Script */ +static const OnigCodePoint +CR_Georgian[] = { 10, +0x10a0, 0x10c5, +0x10c7, 0x10c7, +0x10cd, 0x10cd, +0x10d0, 0x10fa, +0x10fc, 0x10ff, +0x1c90, 0x1cba, +0x1cbd, 0x1cbf, +0x2d00, 0x2d25, +0x2d27, 0x2d27, +0x2d2d, 0x2d2d, +}; /* END of CR_Georgian */ + +/* PROPERTY: 'Glagolitic': Script */ +static const OnigCodePoint +CR_Glagolitic[] = { 7, +0x2c00, 0x2c2e, +0x2c30, 0x2c5e, +0x1e000, 0x1e006, +0x1e008, 0x1e018, +0x1e01b, 0x1e021, +0x1e023, 0x1e024, +0x1e026, 0x1e02a, +}; /* END of CR_Glagolitic */ + +/* PROPERTY: 'Gothic': Script */ +static const OnigCodePoint +CR_Gothic[] = { 1, +0x10330, 0x1034a, +}; /* END of CR_Gothic */ + +/* PROPERTY: 'Grantha': Script */ +static const OnigCodePoint +CR_Grantha[] = { 15, +0x11300, 0x11303, +0x11305, 0x1130c, +0x1130f, 0x11310, +0x11313, 0x11328, +0x1132a, 0x11330, +0x11332, 0x11333, +0x11335, 0x11339, +0x1133c, 0x11344, +0x11347, 0x11348, +0x1134b, 0x1134d, +0x11350, 0x11350, +0x11357, 0x11357, +0x1135d, 0x11363, +0x11366, 0x1136c, +0x11370, 0x11374, +}; /* END of CR_Grantha */ + +/* PROPERTY: 'Grapheme_Base': Derived Property */ +static const OnigCodePoint +CR_Grapheme_Base[] = { 806, +0x0020, 0x007e, +0x00a0, 0x00ac, +0x00ae, 0x02ff, +0x0370, 0x0377, +0x037a, 0x037f, +0x0384, 0x038a, +0x038c, 0x038c, +0x038e, 0x03a1, +0x03a3, 0x0482, +0x048a, 0x052f, +0x0531, 0x0556, +0x0559, 0x058a, +0x058d, 0x058f, +0x05be, 0x05be, +0x05c0, 0x05c0, +0x05c3, 0x05c3, +0x05c6, 0x05c6, +0x05d0, 0x05ea, +0x05ef, 0x05f4, +0x0606, 0x060f, +0x061b, 0x061b, +0x061e, 0x064a, +0x0660, 0x066f, +0x0671, 0x06d5, +0x06de, 0x06de, +0x06e5, 0x06e6, +0x06e9, 0x06e9, +0x06ee, 0x070d, +0x0710, 0x0710, +0x0712, 0x072f, +0x074d, 0x07a5, +0x07b1, 0x07b1, +0x07c0, 0x07ea, +0x07f4, 0x07fa, +0x07fe, 0x0815, +0x081a, 0x081a, +0x0824, 0x0824, +0x0828, 0x0828, +0x0830, 0x083e, +0x0840, 0x0858, +0x085e, 0x085e, +0x0860, 0x086a, +0x08a0, 0x08b4, +0x08b6, 0x08bd, +0x0903, 0x0939, +0x093b, 0x093b, +0x093d, 0x0940, +0x0949, 0x094c, +0x094e, 0x0950, +0x0958, 0x0961, +0x0964, 0x0980, +0x0982, 0x0983, +0x0985, 0x098c, +0x098f, 0x0990, +0x0993, 0x09a8, +0x09aa, 0x09b0, +0x09b2, 0x09b2, +0x09b6, 0x09b9, +0x09bd, 0x09bd, +0x09bf, 0x09c0, +0x09c7, 0x09c8, +0x09cb, 0x09cc, +0x09ce, 0x09ce, +0x09dc, 0x09dd, +0x09df, 0x09e1, +0x09e6, 0x09fd, +0x0a03, 0x0a03, +0x0a05, 0x0a0a, +0x0a0f, 0x0a10, +0x0a13, 0x0a28, +0x0a2a, 0x0a30, +0x0a32, 0x0a33, +0x0a35, 0x0a36, +0x0a38, 0x0a39, +0x0a3e, 0x0a40, +0x0a59, 0x0a5c, +0x0a5e, 0x0a5e, +0x0a66, 0x0a6f, +0x0a72, 0x0a74, +0x0a76, 0x0a76, +0x0a83, 0x0a83, +0x0a85, 0x0a8d, +0x0a8f, 0x0a91, +0x0a93, 0x0aa8, +0x0aaa, 0x0ab0, +0x0ab2, 0x0ab3, +0x0ab5, 0x0ab9, +0x0abd, 0x0ac0, +0x0ac9, 0x0ac9, +0x0acb, 0x0acc, +0x0ad0, 0x0ad0, +0x0ae0, 0x0ae1, +0x0ae6, 0x0af1, +0x0af9, 0x0af9, +0x0b02, 0x0b03, +0x0b05, 0x0b0c, +0x0b0f, 0x0b10, +0x0b13, 0x0b28, +0x0b2a, 0x0b30, +0x0b32, 0x0b33, +0x0b35, 0x0b39, +0x0b3d, 0x0b3d, +0x0b40, 0x0b40, +0x0b47, 0x0b48, +0x0b4b, 0x0b4c, +0x0b5c, 0x0b5d, +0x0b5f, 0x0b61, +0x0b66, 0x0b77, +0x0b83, 0x0b83, +0x0b85, 0x0b8a, +0x0b8e, 0x0b90, +0x0b92, 0x0b95, +0x0b99, 0x0b9a, +0x0b9c, 0x0b9c, +0x0b9e, 0x0b9f, +0x0ba3, 0x0ba4, +0x0ba8, 0x0baa, +0x0bae, 0x0bb9, +0x0bbf, 0x0bbf, +0x0bc1, 0x0bc2, +0x0bc6, 0x0bc8, +0x0bca, 0x0bcc, +0x0bd0, 0x0bd0, +0x0be6, 0x0bfa, +0x0c01, 0x0c03, +0x0c05, 0x0c0c, +0x0c0e, 0x0c10, +0x0c12, 0x0c28, +0x0c2a, 0x0c39, +0x0c3d, 0x0c3d, +0x0c41, 0x0c44, +0x0c58, 0x0c5a, +0x0c60, 0x0c61, +0x0c66, 0x0c6f, +0x0c78, 0x0c80, +0x0c82, 0x0c8c, +0x0c8e, 0x0c90, +0x0c92, 0x0ca8, +0x0caa, 0x0cb3, +0x0cb5, 0x0cb9, +0x0cbd, 0x0cbe, +0x0cc0, 0x0cc1, +0x0cc3, 0x0cc4, +0x0cc7, 0x0cc8, +0x0cca, 0x0ccb, +0x0cde, 0x0cde, +0x0ce0, 0x0ce1, +0x0ce6, 0x0cef, +0x0cf1, 0x0cf2, +0x0d02, 0x0d03, +0x0d05, 0x0d0c, +0x0d0e, 0x0d10, +0x0d12, 0x0d3a, +0x0d3d, 0x0d3d, +0x0d3f, 0x0d40, +0x0d46, 0x0d48, +0x0d4a, 0x0d4c, +0x0d4e, 0x0d4f, +0x0d54, 0x0d56, +0x0d58, 0x0d61, +0x0d66, 0x0d7f, +0x0d82, 0x0d83, +0x0d85, 0x0d96, +0x0d9a, 0x0db1, +0x0db3, 0x0dbb, +0x0dbd, 0x0dbd, +0x0dc0, 0x0dc6, +0x0dd0, 0x0dd1, +0x0dd8, 0x0dde, +0x0de6, 0x0def, +0x0df2, 0x0df4, +0x0e01, 0x0e30, +0x0e32, 0x0e33, +0x0e3f, 0x0e46, +0x0e4f, 0x0e5b, +0x0e81, 0x0e82, +0x0e84, 0x0e84, +0x0e87, 0x0e88, +0x0e8a, 0x0e8a, +0x0e8d, 0x0e8d, +0x0e94, 0x0e97, +0x0e99, 0x0e9f, +0x0ea1, 0x0ea3, +0x0ea5, 0x0ea5, +0x0ea7, 0x0ea7, +0x0eaa, 0x0eab, +0x0ead, 0x0eb0, +0x0eb2, 0x0eb3, +0x0ebd, 0x0ebd, +0x0ec0, 0x0ec4, +0x0ec6, 0x0ec6, +0x0ed0, 0x0ed9, +0x0edc, 0x0edf, +0x0f00, 0x0f17, +0x0f1a, 0x0f34, +0x0f36, 0x0f36, +0x0f38, 0x0f38, +0x0f3a, 0x0f47, +0x0f49, 0x0f6c, +0x0f7f, 0x0f7f, +0x0f85, 0x0f85, +0x0f88, 0x0f8c, +0x0fbe, 0x0fc5, +0x0fc7, 0x0fcc, +0x0fce, 0x0fda, +0x1000, 0x102c, +0x1031, 0x1031, +0x1038, 0x1038, +0x103b, 0x103c, +0x103f, 0x1057, +0x105a, 0x105d, +0x1061, 0x1070, +0x1075, 0x1081, +0x1083, 0x1084, +0x1087, 0x108c, +0x108e, 0x109c, +0x109e, 0x10c5, +0x10c7, 0x10c7, +0x10cd, 0x10cd, +0x10d0, 0x1248, +0x124a, 0x124d, +0x1250, 0x1256, +0x1258, 0x1258, +0x125a, 0x125d, +0x1260, 0x1288, +0x128a, 0x128d, +0x1290, 0x12b0, +0x12b2, 0x12b5, +0x12b8, 0x12be, +0x12c0, 0x12c0, +0x12c2, 0x12c5, +0x12c8, 0x12d6, +0x12d8, 0x1310, +0x1312, 0x1315, +0x1318, 0x135a, +0x1360, 0x137c, +0x1380, 0x1399, +0x13a0, 0x13f5, +0x13f8, 0x13fd, +0x1400, 0x169c, +0x16a0, 0x16f8, +0x1700, 0x170c, +0x170e, 0x1711, +0x1720, 0x1731, +0x1735, 0x1736, +0x1740, 0x1751, +0x1760, 0x176c, +0x176e, 0x1770, +0x1780, 0x17b3, +0x17b6, 0x17b6, +0x17be, 0x17c5, +0x17c7, 0x17c8, +0x17d4, 0x17dc, +0x17e0, 0x17e9, +0x17f0, 0x17f9, +0x1800, 0x180a, +0x1810, 0x1819, +0x1820, 0x1878, +0x1880, 0x1884, +0x1887, 0x18a8, +0x18aa, 0x18aa, +0x18b0, 0x18f5, +0x1900, 0x191e, +0x1923, 0x1926, +0x1929, 0x192b, +0x1930, 0x1931, +0x1933, 0x1938, +0x1940, 0x1940, +0x1944, 0x196d, +0x1970, 0x1974, +0x1980, 0x19ab, +0x19b0, 0x19c9, +0x19d0, 0x19da, +0x19de, 0x1a16, +0x1a19, 0x1a1a, +0x1a1e, 0x1a55, +0x1a57, 0x1a57, +0x1a61, 0x1a61, +0x1a63, 0x1a64, +0x1a6d, 0x1a72, +0x1a80, 0x1a89, +0x1a90, 0x1a99, +0x1aa0, 0x1aad, +0x1b04, 0x1b33, +0x1b35, 0x1b35, +0x1b3b, 0x1b3b, +0x1b3d, 0x1b41, +0x1b43, 0x1b4b, +0x1b50, 0x1b6a, +0x1b74, 0x1b7c, +0x1b82, 0x1ba1, +0x1ba6, 0x1ba7, +0x1baa, 0x1baa, +0x1bae, 0x1be5, +0x1be7, 0x1be7, +0x1bea, 0x1bec, +0x1bee, 0x1bee, +0x1bf2, 0x1bf3, +0x1bfc, 0x1c2b, +0x1c34, 0x1c35, +0x1c3b, 0x1c49, +0x1c4d, 0x1c88, +0x1c90, 0x1cba, +0x1cbd, 0x1cc7, +0x1cd3, 0x1cd3, +0x1ce1, 0x1ce1, +0x1ce9, 0x1cec, +0x1cee, 0x1cf3, +0x1cf5, 0x1cf7, +0x1d00, 0x1dbf, +0x1e00, 0x1f15, +0x1f18, 0x1f1d, +0x1f20, 0x1f45, +0x1f48, 0x1f4d, +0x1f50, 0x1f57, +0x1f59, 0x1f59, +0x1f5b, 0x1f5b, +0x1f5d, 0x1f5d, +0x1f5f, 0x1f7d, +0x1f80, 0x1fb4, +0x1fb6, 0x1fc4, +0x1fc6, 0x1fd3, +0x1fd6, 0x1fdb, +0x1fdd, 0x1fef, +0x1ff2, 0x1ff4, +0x1ff6, 0x1ffe, +0x2000, 0x200a, +0x2010, 0x2027, +0x202f, 0x205f, +0x2070, 0x2071, +0x2074, 0x208e, +0x2090, 0x209c, +0x20a0, 0x20bf, +0x2100, 0x218b, +0x2190, 0x2426, +0x2440, 0x244a, +0x2460, 0x2b73, +0x2b76, 0x2b95, +0x2b98, 0x2bc8, +0x2bca, 0x2bfe, +0x2c00, 0x2c2e, +0x2c30, 0x2c5e, +0x2c60, 0x2cee, +0x2cf2, 0x2cf3, +0x2cf9, 0x2d25, +0x2d27, 0x2d27, +0x2d2d, 0x2d2d, +0x2d30, 0x2d67, +0x2d6f, 0x2d70, +0x2d80, 0x2d96, +0x2da0, 0x2da6, +0x2da8, 0x2dae, +0x2db0, 0x2db6, +0x2db8, 0x2dbe, +0x2dc0, 0x2dc6, +0x2dc8, 0x2dce, +0x2dd0, 0x2dd6, +0x2dd8, 0x2dde, +0x2e00, 0x2e4e, +0x2e80, 0x2e99, +0x2e9b, 0x2ef3, +0x2f00, 0x2fd5, +0x2ff0, 0x2ffb, +0x3000, 0x3029, +0x3030, 0x303f, +0x3041, 0x3096, +0x309b, 0x30ff, +0x3105, 0x312f, +0x3131, 0x318e, +0x3190, 0x31ba, +0x31c0, 0x31e3, +0x31f0, 0x321e, +0x3220, 0x32fe, +0x3300, 0x4db5, +0x4dc0, 0x9fef, +0xa000, 0xa48c, +0xa490, 0xa4c6, +0xa4d0, 0xa62b, +0xa640, 0xa66e, +0xa673, 0xa673, +0xa67e, 0xa69d, +0xa6a0, 0xa6ef, +0xa6f2, 0xa6f7, +0xa700, 0xa7b9, +0xa7f7, 0xa801, +0xa803, 0xa805, +0xa807, 0xa80a, +0xa80c, 0xa824, +0xa827, 0xa82b, +0xa830, 0xa839, +0xa840, 0xa877, +0xa880, 0xa8c3, +0xa8ce, 0xa8d9, +0xa8f2, 0xa8fe, +0xa900, 0xa925, +0xa92e, 0xa946, +0xa952, 0xa953, +0xa95f, 0xa97c, +0xa983, 0xa9b2, +0xa9b4, 0xa9b5, +0xa9ba, 0xa9bb, +0xa9bd, 0xa9cd, +0xa9cf, 0xa9d9, +0xa9de, 0xa9e4, +0xa9e6, 0xa9fe, +0xaa00, 0xaa28, +0xaa2f, 0xaa30, +0xaa33, 0xaa34, +0xaa40, 0xaa42, +0xaa44, 0xaa4b, +0xaa4d, 0xaa4d, +0xaa50, 0xaa59, +0xaa5c, 0xaa7b, +0xaa7d, 0xaaaf, +0xaab1, 0xaab1, +0xaab5, 0xaab6, +0xaab9, 0xaabd, +0xaac0, 0xaac0, +0xaac2, 0xaac2, +0xaadb, 0xaaeb, +0xaaee, 0xaaf5, +0xab01, 0xab06, +0xab09, 0xab0e, +0xab11, 0xab16, +0xab20, 0xab26, +0xab28, 0xab2e, +0xab30, 0xab65, +0xab70, 0xabe4, +0xabe6, 0xabe7, +0xabe9, 0xabec, +0xabf0, 0xabf9, +0xac00, 0xd7a3, +0xd7b0, 0xd7c6, +0xd7cb, 0xd7fb, +0xf900, 0xfa6d, +0xfa70, 0xfad9, +0xfb00, 0xfb06, +0xfb13, 0xfb17, +0xfb1d, 0xfb1d, +0xfb1f, 0xfb36, +0xfb38, 0xfb3c, +0xfb3e, 0xfb3e, +0xfb40, 0xfb41, +0xfb43, 0xfb44, +0xfb46, 0xfbc1, +0xfbd3, 0xfd3f, +0xfd50, 0xfd8f, +0xfd92, 0xfdc7, +0xfdf0, 0xfdfd, +0xfe10, 0xfe19, +0xfe30, 0xfe52, +0xfe54, 0xfe66, +0xfe68, 0xfe6b, +0xfe70, 0xfe74, +0xfe76, 0xfefc, +0xff01, 0xff9d, +0xffa0, 0xffbe, +0xffc2, 0xffc7, +0xffca, 0xffcf, +0xffd2, 0xffd7, +0xffda, 0xffdc, +0xffe0, 0xffe6, +0xffe8, 0xffee, +0xfffc, 0xfffd, +0x10000, 0x1000b, +0x1000d, 0x10026, +0x10028, 0x1003a, +0x1003c, 0x1003d, +0x1003f, 0x1004d, +0x10050, 0x1005d, +0x10080, 0x100fa, +0x10100, 0x10102, +0x10107, 0x10133, +0x10137, 0x1018e, +0x10190, 0x1019b, +0x101a0, 0x101a0, +0x101d0, 0x101fc, +0x10280, 0x1029c, +0x102a0, 0x102d0, +0x102e1, 0x102fb, +0x10300, 0x10323, +0x1032d, 0x1034a, +0x10350, 0x10375, +0x10380, 0x1039d, +0x1039f, 0x103c3, +0x103c8, 0x103d5, +0x10400, 0x1049d, +0x104a0, 0x104a9, +0x104b0, 0x104d3, +0x104d8, 0x104fb, +0x10500, 0x10527, +0x10530, 0x10563, +0x1056f, 0x1056f, +0x10600, 0x10736, +0x10740, 0x10755, +0x10760, 0x10767, +0x10800, 0x10805, +0x10808, 0x10808, +0x1080a, 0x10835, +0x10837, 0x10838, +0x1083c, 0x1083c, +0x1083f, 0x10855, +0x10857, 0x1089e, +0x108a7, 0x108af, +0x108e0, 0x108f2, +0x108f4, 0x108f5, +0x108fb, 0x1091b, +0x1091f, 0x10939, +0x1093f, 0x1093f, +0x10980, 0x109b7, +0x109bc, 0x109cf, +0x109d2, 0x10a00, +0x10a10, 0x10a13, +0x10a15, 0x10a17, +0x10a19, 0x10a35, +0x10a40, 0x10a48, +0x10a50, 0x10a58, +0x10a60, 0x10a9f, +0x10ac0, 0x10ae4, +0x10aeb, 0x10af6, +0x10b00, 0x10b35, +0x10b39, 0x10b55, +0x10b58, 0x10b72, +0x10b78, 0x10b91, +0x10b99, 0x10b9c, +0x10ba9, 0x10baf, +0x10c00, 0x10c48, +0x10c80, 0x10cb2, +0x10cc0, 0x10cf2, +0x10cfa, 0x10d23, +0x10d30, 0x10d39, +0x10e60, 0x10e7e, +0x10f00, 0x10f27, +0x10f30, 0x10f45, +0x10f51, 0x10f59, +0x11000, 0x11000, +0x11002, 0x11037, +0x11047, 0x1104d, +0x11052, 0x1106f, +0x11082, 0x110b2, +0x110b7, 0x110b8, +0x110bb, 0x110bc, +0x110be, 0x110c1, +0x110d0, 0x110e8, +0x110f0, 0x110f9, +0x11103, 0x11126, +0x1112c, 0x1112c, +0x11136, 0x11146, +0x11150, 0x11172, +0x11174, 0x11176, +0x11182, 0x111b5, +0x111bf, 0x111c8, +0x111cd, 0x111cd, +0x111d0, 0x111df, +0x111e1, 0x111f4, +0x11200, 0x11211, +0x11213, 0x1122e, +0x11232, 0x11233, +0x11235, 0x11235, +0x11238, 0x1123d, +0x11280, 0x11286, +0x11288, 0x11288, +0x1128a, 0x1128d, +0x1128f, 0x1129d, +0x1129f, 0x112a9, +0x112b0, 0x112de, +0x112e0, 0x112e2, +0x112f0, 0x112f9, +0x11302, 0x11303, +0x11305, 0x1130c, +0x1130f, 0x11310, +0x11313, 0x11328, +0x1132a, 0x11330, +0x11332, 0x11333, +0x11335, 0x11339, +0x1133d, 0x1133d, +0x1133f, 0x1133f, +0x11341, 0x11344, +0x11347, 0x11348, +0x1134b, 0x1134d, +0x11350, 0x11350, +0x1135d, 0x11363, +0x11400, 0x11437, +0x11440, 0x11441, +0x11445, 0x11445, +0x11447, 0x11459, +0x1145b, 0x1145b, +0x1145d, 0x1145d, +0x11480, 0x114af, +0x114b1, 0x114b2, +0x114b9, 0x114b9, +0x114bb, 0x114bc, +0x114be, 0x114be, +0x114c1, 0x114c1, +0x114c4, 0x114c7, +0x114d0, 0x114d9, +0x11580, 0x115ae, +0x115b0, 0x115b1, +0x115b8, 0x115bb, +0x115be, 0x115be, +0x115c1, 0x115db, +0x11600, 0x11632, +0x1163b, 0x1163c, +0x1163e, 0x1163e, +0x11641, 0x11644, +0x11650, 0x11659, +0x11660, 0x1166c, +0x11680, 0x116aa, +0x116ac, 0x116ac, +0x116ae, 0x116af, +0x116b6, 0x116b6, +0x116c0, 0x116c9, +0x11700, 0x1171a, +0x11720, 0x11721, +0x11726, 0x11726, +0x11730, 0x1173f, +0x11800, 0x1182e, +0x11838, 0x11838, +0x1183b, 0x1183b, +0x118a0, 0x118f2, +0x118ff, 0x118ff, +0x11a00, 0x11a00, +0x11a0b, 0x11a32, +0x11a39, 0x11a3a, +0x11a3f, 0x11a46, +0x11a50, 0x11a50, +0x11a57, 0x11a58, +0x11a5c, 0x11a83, +0x11a86, 0x11a89, +0x11a97, 0x11a97, +0x11a9a, 0x11aa2, +0x11ac0, 0x11af8, +0x11c00, 0x11c08, +0x11c0a, 0x11c2f, +0x11c3e, 0x11c3e, +0x11c40, 0x11c45, +0x11c50, 0x11c6c, +0x11c70, 0x11c8f, +0x11ca9, 0x11ca9, +0x11cb1, 0x11cb1, +0x11cb4, 0x11cb4, +0x11d00, 0x11d06, +0x11d08, 0x11d09, +0x11d0b, 0x11d30, +0x11d46, 0x11d46, +0x11d50, 0x11d59, +0x11d60, 0x11d65, +0x11d67, 0x11d68, +0x11d6a, 0x11d8e, +0x11d93, 0x11d94, +0x11d96, 0x11d96, +0x11d98, 0x11d98, +0x11da0, 0x11da9, +0x11ee0, 0x11ef2, +0x11ef5, 0x11ef8, +0x12000, 0x12399, +0x12400, 0x1246e, +0x12470, 0x12474, +0x12480, 0x12543, +0x13000, 0x1342e, +0x14400, 0x14646, +0x16800, 0x16a38, +0x16a40, 0x16a5e, +0x16a60, 0x16a69, +0x16a6e, 0x16a6f, +0x16ad0, 0x16aed, +0x16af5, 0x16af5, +0x16b00, 0x16b2f, +0x16b37, 0x16b45, +0x16b50, 0x16b59, +0x16b5b, 0x16b61, +0x16b63, 0x16b77, +0x16b7d, 0x16b8f, +0x16e40, 0x16e9a, +0x16f00, 0x16f44, +0x16f50, 0x16f7e, +0x16f93, 0x16f9f, +0x16fe0, 0x16fe1, +0x17000, 0x187f1, +0x18800, 0x18af2, +0x1b000, 0x1b11e, +0x1b170, 0x1b2fb, +0x1bc00, 0x1bc6a, +0x1bc70, 0x1bc7c, +0x1bc80, 0x1bc88, +0x1bc90, 0x1bc99, +0x1bc9c, 0x1bc9c, +0x1bc9f, 0x1bc9f, +0x1d000, 0x1d0f5, +0x1d100, 0x1d126, +0x1d129, 0x1d164, +0x1d166, 0x1d166, +0x1d16a, 0x1d16d, +0x1d183, 0x1d184, +0x1d18c, 0x1d1a9, +0x1d1ae, 0x1d1e8, +0x1d200, 0x1d241, +0x1d245, 0x1d245, +0x1d2e0, 0x1d2f3, +0x1d300, 0x1d356, +0x1d360, 0x1d378, +0x1d400, 0x1d454, +0x1d456, 0x1d49c, +0x1d49e, 0x1d49f, +0x1d4a2, 0x1d4a2, +0x1d4a5, 0x1d4a6, +0x1d4a9, 0x1d4ac, +0x1d4ae, 0x1d4b9, +0x1d4bb, 0x1d4bb, +0x1d4bd, 0x1d4c3, +0x1d4c5, 0x1d505, +0x1d507, 0x1d50a, +0x1d50d, 0x1d514, +0x1d516, 0x1d51c, +0x1d51e, 0x1d539, +0x1d53b, 0x1d53e, +0x1d540, 0x1d544, +0x1d546, 0x1d546, +0x1d54a, 0x1d550, +0x1d552, 0x1d6a5, +0x1d6a8, 0x1d7cb, +0x1d7ce, 0x1d9ff, +0x1da37, 0x1da3a, +0x1da6d, 0x1da74, +0x1da76, 0x1da83, +0x1da85, 0x1da8b, +0x1e800, 0x1e8c4, +0x1e8c7, 0x1e8cf, +0x1e900, 0x1e943, +0x1e950, 0x1e959, +0x1e95e, 0x1e95f, +0x1ec71, 0x1ecb4, +0x1ee00, 0x1ee03, +0x1ee05, 0x1ee1f, +0x1ee21, 0x1ee22, +0x1ee24, 0x1ee24, +0x1ee27, 0x1ee27, +0x1ee29, 0x1ee32, +0x1ee34, 0x1ee37, +0x1ee39, 0x1ee39, +0x1ee3b, 0x1ee3b, +0x1ee42, 0x1ee42, +0x1ee47, 0x1ee47, +0x1ee49, 0x1ee49, +0x1ee4b, 0x1ee4b, +0x1ee4d, 0x1ee4f, +0x1ee51, 0x1ee52, +0x1ee54, 0x1ee54, +0x1ee57, 0x1ee57, +0x1ee59, 0x1ee59, +0x1ee5b, 0x1ee5b, +0x1ee5d, 0x1ee5d, +0x1ee5f, 0x1ee5f, +0x1ee61, 0x1ee62, +0x1ee64, 0x1ee64, +0x1ee67, 0x1ee6a, +0x1ee6c, 0x1ee72, +0x1ee74, 0x1ee77, +0x1ee79, 0x1ee7c, +0x1ee7e, 0x1ee7e, +0x1ee80, 0x1ee89, +0x1ee8b, 0x1ee9b, +0x1eea1, 0x1eea3, +0x1eea5, 0x1eea9, +0x1eeab, 0x1eebb, +0x1eef0, 0x1eef1, +0x1f000, 0x1f02b, +0x1f030, 0x1f093, +0x1f0a0, 0x1f0ae, +0x1f0b1, 0x1f0bf, +0x1f0c1, 0x1f0cf, +0x1f0d1, 0x1f0f5, +0x1f100, 0x1f10c, +0x1f110, 0x1f16b, +0x1f170, 0x1f1ac, +0x1f1e6, 0x1f202, +0x1f210, 0x1f23b, +0x1f240, 0x1f248, +0x1f250, 0x1f251, +0x1f260, 0x1f265, +0x1f300, 0x1f6d4, +0x1f6e0, 0x1f6ec, +0x1f6f0, 0x1f6f9, +0x1f700, 0x1f773, +0x1f780, 0x1f7d8, +0x1f800, 0x1f80b, +0x1f810, 0x1f847, +0x1f850, 0x1f859, +0x1f860, 0x1f887, +0x1f890, 0x1f8ad, +0x1f900, 0x1f90b, +0x1f910, 0x1f93e, +0x1f940, 0x1f970, +0x1f973, 0x1f976, +0x1f97a, 0x1f97a, +0x1f97c, 0x1f9a2, +0x1f9b0, 0x1f9b9, +0x1f9c0, 0x1f9c2, +0x1f9d0, 0x1f9ff, +0x1fa60, 0x1fa6d, +0x20000, 0x2a6d6, +0x2a700, 0x2b734, +0x2b740, 0x2b81d, +0x2b820, 0x2cea1, +0x2ceb0, 0x2ebe0, +0x2f800, 0x2fa1d, +}; /* END of CR_Grapheme_Base */ + +/* PROPERTY: 'Grapheme_Extend': Derived Property */ +static const OnigCodePoint +CR_Grapheme_Extend[] = { 331, +0x0300, 0x036f, +0x0483, 0x0489, +0x0591, 0x05bd, +0x05bf, 0x05bf, +0x05c1, 0x05c2, +0x05c4, 0x05c5, +0x05c7, 0x05c7, +0x0610, 0x061a, +0x064b, 0x065f, +0x0670, 0x0670, +0x06d6, 0x06dc, +0x06df, 0x06e4, +0x06e7, 0x06e8, +0x06ea, 0x06ed, +0x0711, 0x0711, +0x0730, 0x074a, +0x07a6, 0x07b0, +0x07eb, 0x07f3, +0x07fd, 0x07fd, +0x0816, 0x0819, +0x081b, 0x0823, +0x0825, 0x0827, +0x0829, 0x082d, +0x0859, 0x085b, +0x08d3, 0x08e1, +0x08e3, 0x0902, +0x093a, 0x093a, +0x093c, 0x093c, +0x0941, 0x0948, +0x094d, 0x094d, +0x0951, 0x0957, +0x0962, 0x0963, +0x0981, 0x0981, +0x09bc, 0x09bc, +0x09be, 0x09be, +0x09c1, 0x09c4, +0x09cd, 0x09cd, +0x09d7, 0x09d7, +0x09e2, 0x09e3, +0x09fe, 0x09fe, +0x0a01, 0x0a02, +0x0a3c, 0x0a3c, +0x0a41, 0x0a42, +0x0a47, 0x0a48, +0x0a4b, 0x0a4d, +0x0a51, 0x0a51, +0x0a70, 0x0a71, +0x0a75, 0x0a75, +0x0a81, 0x0a82, +0x0abc, 0x0abc, +0x0ac1, 0x0ac5, +0x0ac7, 0x0ac8, +0x0acd, 0x0acd, +0x0ae2, 0x0ae3, +0x0afa, 0x0aff, +0x0b01, 0x0b01, +0x0b3c, 0x0b3c, +0x0b3e, 0x0b3f, +0x0b41, 0x0b44, +0x0b4d, 0x0b4d, +0x0b56, 0x0b57, +0x0b62, 0x0b63, +0x0b82, 0x0b82, +0x0bbe, 0x0bbe, +0x0bc0, 0x0bc0, +0x0bcd, 0x0bcd, +0x0bd7, 0x0bd7, +0x0c00, 0x0c00, +0x0c04, 0x0c04, +0x0c3e, 0x0c40, +0x0c46, 0x0c48, +0x0c4a, 0x0c4d, +0x0c55, 0x0c56, +0x0c62, 0x0c63, +0x0c81, 0x0c81, +0x0cbc, 0x0cbc, +0x0cbf, 0x0cbf, +0x0cc2, 0x0cc2, +0x0cc6, 0x0cc6, +0x0ccc, 0x0ccd, +0x0cd5, 0x0cd6, +0x0ce2, 0x0ce3, +0x0d00, 0x0d01, +0x0d3b, 0x0d3c, +0x0d3e, 0x0d3e, +0x0d41, 0x0d44, +0x0d4d, 0x0d4d, +0x0d57, 0x0d57, +0x0d62, 0x0d63, +0x0dca, 0x0dca, +0x0dcf, 0x0dcf, +0x0dd2, 0x0dd4, +0x0dd6, 0x0dd6, +0x0ddf, 0x0ddf, +0x0e31, 0x0e31, +0x0e34, 0x0e3a, +0x0e47, 0x0e4e, +0x0eb1, 0x0eb1, +0x0eb4, 0x0eb9, +0x0ebb, 0x0ebc, +0x0ec8, 0x0ecd, +0x0f18, 0x0f19, +0x0f35, 0x0f35, +0x0f37, 0x0f37, +0x0f39, 0x0f39, +0x0f71, 0x0f7e, +0x0f80, 0x0f84, +0x0f86, 0x0f87, +0x0f8d, 0x0f97, +0x0f99, 0x0fbc, +0x0fc6, 0x0fc6, +0x102d, 0x1030, +0x1032, 0x1037, +0x1039, 0x103a, +0x103d, 0x103e, +0x1058, 0x1059, +0x105e, 0x1060, +0x1071, 0x1074, +0x1082, 0x1082, +0x1085, 0x1086, +0x108d, 0x108d, +0x109d, 0x109d, +0x135d, 0x135f, +0x1712, 0x1714, +0x1732, 0x1734, +0x1752, 0x1753, +0x1772, 0x1773, +0x17b4, 0x17b5, +0x17b7, 0x17bd, +0x17c6, 0x17c6, +0x17c9, 0x17d3, +0x17dd, 0x17dd, +0x180b, 0x180d, +0x1885, 0x1886, +0x18a9, 0x18a9, +0x1920, 0x1922, +0x1927, 0x1928, +0x1932, 0x1932, +0x1939, 0x193b, +0x1a17, 0x1a18, +0x1a1b, 0x1a1b, +0x1a56, 0x1a56, +0x1a58, 0x1a5e, +0x1a60, 0x1a60, +0x1a62, 0x1a62, +0x1a65, 0x1a6c, +0x1a73, 0x1a7c, +0x1a7f, 0x1a7f, +0x1ab0, 0x1abe, +0x1b00, 0x1b03, +0x1b34, 0x1b34, +0x1b36, 0x1b3a, +0x1b3c, 0x1b3c, +0x1b42, 0x1b42, +0x1b6b, 0x1b73, +0x1b80, 0x1b81, +0x1ba2, 0x1ba5, +0x1ba8, 0x1ba9, +0x1bab, 0x1bad, +0x1be6, 0x1be6, +0x1be8, 0x1be9, +0x1bed, 0x1bed, +0x1bef, 0x1bf1, +0x1c2c, 0x1c33, +0x1c36, 0x1c37, +0x1cd0, 0x1cd2, +0x1cd4, 0x1ce0, +0x1ce2, 0x1ce8, +0x1ced, 0x1ced, +0x1cf4, 0x1cf4, +0x1cf8, 0x1cf9, +0x1dc0, 0x1df9, +0x1dfb, 0x1dff, +0x200c, 0x200c, +0x20d0, 0x20f0, +0x2cef, 0x2cf1, +0x2d7f, 0x2d7f, +0x2de0, 0x2dff, +0x302a, 0x302f, +0x3099, 0x309a, +0xa66f, 0xa672, +0xa674, 0xa67d, +0xa69e, 0xa69f, +0xa6f0, 0xa6f1, +0xa802, 0xa802, +0xa806, 0xa806, +0xa80b, 0xa80b, +0xa825, 0xa826, +0xa8c4, 0xa8c5, +0xa8e0, 0xa8f1, +0xa8ff, 0xa8ff, +0xa926, 0xa92d, +0xa947, 0xa951, +0xa980, 0xa982, +0xa9b3, 0xa9b3, +0xa9b6, 0xa9b9, +0xa9bc, 0xa9bc, +0xa9e5, 0xa9e5, +0xaa29, 0xaa2e, +0xaa31, 0xaa32, +0xaa35, 0xaa36, +0xaa43, 0xaa43, +0xaa4c, 0xaa4c, +0xaa7c, 0xaa7c, +0xaab0, 0xaab0, +0xaab2, 0xaab4, +0xaab7, 0xaab8, +0xaabe, 0xaabf, +0xaac1, 0xaac1, +0xaaec, 0xaaed, +0xaaf6, 0xaaf6, +0xabe5, 0xabe5, +0xabe8, 0xabe8, +0xabed, 0xabed, +0xfb1e, 0xfb1e, +0xfe00, 0xfe0f, +0xfe20, 0xfe2f, +0xff9e, 0xff9f, +0x101fd, 0x101fd, +0x102e0, 0x102e0, +0x10376, 0x1037a, +0x10a01, 0x10a03, +0x10a05, 0x10a06, +0x10a0c, 0x10a0f, +0x10a38, 0x10a3a, +0x10a3f, 0x10a3f, +0x10ae5, 0x10ae6, +0x10d24, 0x10d27, +0x10f46, 0x10f50, +0x11001, 0x11001, +0x11038, 0x11046, +0x1107f, 0x11081, +0x110b3, 0x110b6, +0x110b9, 0x110ba, +0x11100, 0x11102, +0x11127, 0x1112b, +0x1112d, 0x11134, +0x11173, 0x11173, +0x11180, 0x11181, +0x111b6, 0x111be, +0x111c9, 0x111cc, +0x1122f, 0x11231, +0x11234, 0x11234, +0x11236, 0x11237, +0x1123e, 0x1123e, +0x112df, 0x112df, +0x112e3, 0x112ea, +0x11300, 0x11301, +0x1133b, 0x1133c, +0x1133e, 0x1133e, +0x11340, 0x11340, +0x11357, 0x11357, +0x11366, 0x1136c, +0x11370, 0x11374, +0x11438, 0x1143f, +0x11442, 0x11444, +0x11446, 0x11446, +0x1145e, 0x1145e, +0x114b0, 0x114b0, +0x114b3, 0x114b8, +0x114ba, 0x114ba, +0x114bd, 0x114bd, +0x114bf, 0x114c0, +0x114c2, 0x114c3, +0x115af, 0x115af, +0x115b2, 0x115b5, +0x115bc, 0x115bd, +0x115bf, 0x115c0, +0x115dc, 0x115dd, +0x11633, 0x1163a, +0x1163d, 0x1163d, +0x1163f, 0x11640, +0x116ab, 0x116ab, +0x116ad, 0x116ad, +0x116b0, 0x116b5, +0x116b7, 0x116b7, +0x1171d, 0x1171f, +0x11722, 0x11725, +0x11727, 0x1172b, +0x1182f, 0x11837, +0x11839, 0x1183a, +0x11a01, 0x11a0a, +0x11a33, 0x11a38, +0x11a3b, 0x11a3e, +0x11a47, 0x11a47, +0x11a51, 0x11a56, +0x11a59, 0x11a5b, +0x11a8a, 0x11a96, +0x11a98, 0x11a99, +0x11c30, 0x11c36, +0x11c38, 0x11c3d, +0x11c3f, 0x11c3f, +0x11c92, 0x11ca7, +0x11caa, 0x11cb0, +0x11cb2, 0x11cb3, +0x11cb5, 0x11cb6, +0x11d31, 0x11d36, +0x11d3a, 0x11d3a, +0x11d3c, 0x11d3d, +0x11d3f, 0x11d45, +0x11d47, 0x11d47, +0x11d90, 0x11d91, +0x11d95, 0x11d95, +0x11d97, 0x11d97, +0x11ef3, 0x11ef4, +0x16af0, 0x16af4, +0x16b30, 0x16b36, +0x16f8f, 0x16f92, +0x1bc9d, 0x1bc9e, +0x1d165, 0x1d165, +0x1d167, 0x1d169, +0x1d16e, 0x1d172, +0x1d17b, 0x1d182, +0x1d185, 0x1d18b, +0x1d1aa, 0x1d1ad, +0x1d242, 0x1d244, +0x1da00, 0x1da36, +0x1da3b, 0x1da6c, +0x1da75, 0x1da75, +0x1da84, 0x1da84, +0x1da9b, 0x1da9f, +0x1daa1, 0x1daaf, +0x1e000, 0x1e006, +0x1e008, 0x1e018, +0x1e01b, 0x1e021, +0x1e023, 0x1e024, +0x1e026, 0x1e02a, +0x1e8d0, 0x1e8d6, +0x1e944, 0x1e94a, +0xe0020, 0xe007f, +0xe0100, 0xe01ef, +}; /* END of CR_Grapheme_Extend */ + +/* PROPERTY: 'Grapheme_Link': Derived Property */ +static const OnigCodePoint +CR_Grapheme_Link[] = { 50, +0x094d, 0x094d, +0x09cd, 0x09cd, +0x0a4d, 0x0a4d, +0x0acd, 0x0acd, +0x0b4d, 0x0b4d, +0x0bcd, 0x0bcd, +0x0c4d, 0x0c4d, +0x0ccd, 0x0ccd, +0x0d3b, 0x0d3c, +0x0d4d, 0x0d4d, +0x0dca, 0x0dca, +0x0e3a, 0x0e3a, +0x0f84, 0x0f84, +0x1039, 0x103a, +0x1714, 0x1714, +0x1734, 0x1734, +0x17d2, 0x17d2, +0x1a60, 0x1a60, +0x1b44, 0x1b44, +0x1baa, 0x1bab, +0x1bf2, 0x1bf3, +0x2d7f, 0x2d7f, +0xa806, 0xa806, +0xa8c4, 0xa8c4, +0xa953, 0xa953, +0xa9c0, 0xa9c0, +0xaaf6, 0xaaf6, +0xabed, 0xabed, +0x10a3f, 0x10a3f, +0x11046, 0x11046, +0x1107f, 0x1107f, +0x110b9, 0x110b9, +0x11133, 0x11134, +0x111c0, 0x111c0, +0x11235, 0x11235, +0x112ea, 0x112ea, +0x1134d, 0x1134d, +0x11442, 0x11442, +0x114c2, 0x114c2, +0x115bf, 0x115bf, +0x1163f, 0x1163f, +0x116b6, 0x116b6, +0x1172b, 0x1172b, +0x11839, 0x11839, +0x11a34, 0x11a34, +0x11a47, 0x11a47, +0x11a99, 0x11a99, +0x11c3f, 0x11c3f, +0x11d44, 0x11d45, +0x11d97, 0x11d97, +}; /* END of CR_Grapheme_Link */ + +/* PROPERTY: 'Greek': Script */ +static const OnigCodePoint +CR_Greek[] = { 36, +0x0370, 0x0373, +0x0375, 0x0377, +0x037a, 0x037d, +0x037f, 0x037f, +0x0384, 0x0384, +0x0386, 0x0386, +0x0388, 0x038a, +0x038c, 0x038c, +0x038e, 0x03a1, +0x03a3, 0x03e1, +0x03f0, 0x03ff, +0x1d26, 0x1d2a, +0x1d5d, 0x1d61, +0x1d66, 0x1d6a, +0x1dbf, 0x1dbf, +0x1f00, 0x1f15, +0x1f18, 0x1f1d, +0x1f20, 0x1f45, +0x1f48, 0x1f4d, +0x1f50, 0x1f57, +0x1f59, 0x1f59, +0x1f5b, 0x1f5b, +0x1f5d, 0x1f5d, +0x1f5f, 0x1f7d, +0x1f80, 0x1fb4, +0x1fb6, 0x1fc4, +0x1fc6, 0x1fd3, +0x1fd6, 0x1fdb, +0x1fdd, 0x1fef, +0x1ff2, 0x1ff4, +0x1ff6, 0x1ffe, +0x2126, 0x2126, +0xab65, 0xab65, +0x10140, 0x1018e, +0x101a0, 0x101a0, +0x1d200, 0x1d245, +}; /* END of CR_Greek */ + +/* PROPERTY: 'Gujarati': Script */ +static const OnigCodePoint +CR_Gujarati[] = { 14, +0x0a81, 0x0a83, +0x0a85, 0x0a8d, +0x0a8f, 0x0a91, +0x0a93, 0x0aa8, +0x0aaa, 0x0ab0, +0x0ab2, 0x0ab3, +0x0ab5, 0x0ab9, +0x0abc, 0x0ac5, +0x0ac7, 0x0ac9, +0x0acb, 0x0acd, +0x0ad0, 0x0ad0, +0x0ae0, 0x0ae3, +0x0ae6, 0x0af1, +0x0af9, 0x0aff, +}; /* END of CR_Gujarati */ + +/* PROPERTY: 'Gunjala_Gondi': Script */ +static const OnigCodePoint +CR_Gunjala_Gondi[] = { 6, +0x11d60, 0x11d65, +0x11d67, 0x11d68, +0x11d6a, 0x11d8e, +0x11d90, 0x11d91, +0x11d93, 0x11d98, +0x11da0, 0x11da9, +}; /* END of CR_Gunjala_Gondi */ + +/* PROPERTY: 'Gurmukhi': Script */ +static const OnigCodePoint +CR_Gurmukhi[] = { 16, +0x0a01, 0x0a03, +0x0a05, 0x0a0a, +0x0a0f, 0x0a10, +0x0a13, 0x0a28, +0x0a2a, 0x0a30, +0x0a32, 0x0a33, +0x0a35, 0x0a36, +0x0a38, 0x0a39, +0x0a3c, 0x0a3c, +0x0a3e, 0x0a42, +0x0a47, 0x0a48, +0x0a4b, 0x0a4d, +0x0a51, 0x0a51, +0x0a59, 0x0a5c, +0x0a5e, 0x0a5e, +0x0a66, 0x0a76, +}; /* END of CR_Gurmukhi */ + +/* PROPERTY: 'Han': Script */ +static const OnigCodePoint +CR_Han[] = { 17, +0x2e80, 0x2e99, +0x2e9b, 0x2ef3, +0x2f00, 0x2fd5, +0x3005, 0x3005, +0x3007, 0x3007, +0x3021, 0x3029, +0x3038, 0x303b, +0x3400, 0x4db5, +0x4e00, 0x9fef, +0xf900, 0xfa6d, +0xfa70, 0xfad9, +0x20000, 0x2a6d6, +0x2a700, 0x2b734, +0x2b740, 0x2b81d, +0x2b820, 0x2cea1, +0x2ceb0, 0x2ebe0, +0x2f800, 0x2fa1d, +}; /* END of CR_Han */ + +/* PROPERTY: 'Hangul': Script */ +static const OnigCodePoint +CR_Hangul[] = { 14, +0x1100, 0x11ff, +0x302e, 0x302f, +0x3131, 0x318e, +0x3200, 0x321e, +0x3260, 0x327e, +0xa960, 0xa97c, +0xac00, 0xd7a3, +0xd7b0, 0xd7c6, +0xd7cb, 0xd7fb, +0xffa0, 0xffbe, +0xffc2, 0xffc7, +0xffca, 0xffcf, +0xffd2, 0xffd7, +0xffda, 0xffdc, +}; /* END of CR_Hangul */ + +/* PROPERTY: 'Hanifi_Rohingya': Script */ +static const OnigCodePoint +CR_Hanifi_Rohingya[] = { 2, +0x10d00, 0x10d27, +0x10d30, 0x10d39, +}; /* END of CR_Hanifi_Rohingya */ + +/* PROPERTY: 'Hanunoo': Script */ +static const OnigCodePoint +CR_Hanunoo[] = { 1, +0x1720, 0x1734, +}; /* END of CR_Hanunoo */ + +/* PROPERTY: 'Hatran': Script */ +static const OnigCodePoint +CR_Hatran[] = { 3, +0x108e0, 0x108f2, +0x108f4, 0x108f5, +0x108fb, 0x108ff, +}; /* END of CR_Hatran */ + +/* PROPERTY: 'Hebrew': Script */ +static const OnigCodePoint +CR_Hebrew[] = { 9, +0x0591, 0x05c7, +0x05d0, 0x05ea, +0x05ef, 0x05f4, +0xfb1d, 0xfb36, +0xfb38, 0xfb3c, +0xfb3e, 0xfb3e, +0xfb40, 0xfb41, +0xfb43, 0xfb44, +0xfb46, 0xfb4f, +}; /* END of CR_Hebrew */ + +/* PROPERTY: 'Hex_Digit': Binary Property */ +static const OnigCodePoint +CR_Hex_Digit[] = { 6, +0x0030, 0x0039, +0x0041, 0x0046, +0x0061, 0x0066, +0xff10, 0xff19, +0xff21, 0xff26, +0xff41, 0xff46, +}; /* END of CR_Hex_Digit */ + +/* PROPERTY: 'Hiragana': Script */ +static const OnigCodePoint +CR_Hiragana[] = { 4, +0x3041, 0x3096, +0x309d, 0x309f, +0x1b001, 0x1b11e, +0x1f200, 0x1f200, +}; /* END of CR_Hiragana */ + +/* PROPERTY: 'Hyphen': Binary Property */ +static const OnigCodePoint +CR_Hyphen[] = { 10, +0x002d, 0x002d, +0x00ad, 0x00ad, +0x058a, 0x058a, +0x1806, 0x1806, +0x2010, 0x2011, +0x2e17, 0x2e17, +0x30fb, 0x30fb, +0xfe63, 0xfe63, +0xff0d, 0xff0d, +0xff65, 0xff65, +}; /* END of CR_Hyphen */ + +/* PROPERTY: 'IDS_Binary_Operator': Binary Property */ +static const OnigCodePoint +CR_IDS_Binary_Operator[] = { 2, +0x2ff0, 0x2ff1, +0x2ff4, 0x2ffb, +}; /* END of CR_IDS_Binary_Operator */ + +/* PROPERTY: 'IDS_Trinary_Operator': Binary Property */ +static const OnigCodePoint +CR_IDS_Trinary_Operator[] = { 1, +0x2ff2, 0x2ff3, +}; /* END of CR_IDS_Trinary_Operator */ + +/* PROPERTY: 'ID_Continue': Derived Property */ +static const OnigCodePoint +CR_ID_Continue[] = { 707, +0x0030, 0x0039, +0x0041, 0x005a, +0x005f, 0x005f, +0x0061, 0x007a, +0x00aa, 0x00aa, +0x00b5, 0x00b5, +0x00b7, 0x00b7, +0x00ba, 0x00ba, +0x00c0, 0x00d6, +0x00d8, 0x00f6, +0x00f8, 0x02c1, +0x02c6, 0x02d1, +0x02e0, 0x02e4, +0x02ec, 0x02ec, +0x02ee, 0x02ee, +0x0300, 0x0374, +0x0376, 0x0377, +0x037a, 0x037d, +0x037f, 0x037f, +0x0386, 0x038a, +0x038c, 0x038c, +0x038e, 0x03a1, +0x03a3, 0x03f5, +0x03f7, 0x0481, +0x0483, 0x0487, +0x048a, 0x052f, +0x0531, 0x0556, +0x0559, 0x0559, +0x0560, 0x0588, +0x0591, 0x05bd, +0x05bf, 0x05bf, +0x05c1, 0x05c2, +0x05c4, 0x05c5, +0x05c7, 0x05c7, +0x05d0, 0x05ea, +0x05ef, 0x05f2, +0x0610, 0x061a, +0x0620, 0x0669, +0x066e, 0x06d3, +0x06d5, 0x06dc, +0x06df, 0x06e8, +0x06ea, 0x06fc, +0x06ff, 0x06ff, +0x0710, 0x074a, +0x074d, 0x07b1, +0x07c0, 0x07f5, +0x07fa, 0x07fa, +0x07fd, 0x07fd, +0x0800, 0x082d, +0x0840, 0x085b, +0x0860, 0x086a, +0x08a0, 0x08b4, +0x08b6, 0x08bd, +0x08d3, 0x08e1, +0x08e3, 0x0963, +0x0966, 0x096f, +0x0971, 0x0983, +0x0985, 0x098c, +0x098f, 0x0990, +0x0993, 0x09a8, +0x09aa, 0x09b0, +0x09b2, 0x09b2, +0x09b6, 0x09b9, +0x09bc, 0x09c4, +0x09c7, 0x09c8, +0x09cb, 0x09ce, +0x09d7, 0x09d7, +0x09dc, 0x09dd, +0x09df, 0x09e3, +0x09e6, 0x09f1, +0x09fc, 0x09fc, +0x09fe, 0x09fe, +0x0a01, 0x0a03, +0x0a05, 0x0a0a, +0x0a0f, 0x0a10, +0x0a13, 0x0a28, +0x0a2a, 0x0a30, +0x0a32, 0x0a33, +0x0a35, 0x0a36, +0x0a38, 0x0a39, +0x0a3c, 0x0a3c, +0x0a3e, 0x0a42, +0x0a47, 0x0a48, +0x0a4b, 0x0a4d, +0x0a51, 0x0a51, +0x0a59, 0x0a5c, +0x0a5e, 0x0a5e, +0x0a66, 0x0a75, +0x0a81, 0x0a83, +0x0a85, 0x0a8d, +0x0a8f, 0x0a91, +0x0a93, 0x0aa8, +0x0aaa, 0x0ab0, +0x0ab2, 0x0ab3, +0x0ab5, 0x0ab9, +0x0abc, 0x0ac5, +0x0ac7, 0x0ac9, +0x0acb, 0x0acd, +0x0ad0, 0x0ad0, +0x0ae0, 0x0ae3, +0x0ae6, 0x0aef, +0x0af9, 0x0aff, +0x0b01, 0x0b03, +0x0b05, 0x0b0c, +0x0b0f, 0x0b10, +0x0b13, 0x0b28, +0x0b2a, 0x0b30, +0x0b32, 0x0b33, +0x0b35, 0x0b39, +0x0b3c, 0x0b44, +0x0b47, 0x0b48, +0x0b4b, 0x0b4d, +0x0b56, 0x0b57, +0x0b5c, 0x0b5d, +0x0b5f, 0x0b63, +0x0b66, 0x0b6f, +0x0b71, 0x0b71, +0x0b82, 0x0b83, +0x0b85, 0x0b8a, +0x0b8e, 0x0b90, +0x0b92, 0x0b95, +0x0b99, 0x0b9a, +0x0b9c, 0x0b9c, +0x0b9e, 0x0b9f, +0x0ba3, 0x0ba4, +0x0ba8, 0x0baa, +0x0bae, 0x0bb9, +0x0bbe, 0x0bc2, +0x0bc6, 0x0bc8, +0x0bca, 0x0bcd, +0x0bd0, 0x0bd0, +0x0bd7, 0x0bd7, +0x0be6, 0x0bef, +0x0c00, 0x0c0c, +0x0c0e, 0x0c10, +0x0c12, 0x0c28, +0x0c2a, 0x0c39, +0x0c3d, 0x0c44, +0x0c46, 0x0c48, +0x0c4a, 0x0c4d, +0x0c55, 0x0c56, +0x0c58, 0x0c5a, +0x0c60, 0x0c63, +0x0c66, 0x0c6f, +0x0c80, 0x0c83, +0x0c85, 0x0c8c, +0x0c8e, 0x0c90, +0x0c92, 0x0ca8, +0x0caa, 0x0cb3, +0x0cb5, 0x0cb9, +0x0cbc, 0x0cc4, +0x0cc6, 0x0cc8, +0x0cca, 0x0ccd, +0x0cd5, 0x0cd6, +0x0cde, 0x0cde, +0x0ce0, 0x0ce3, +0x0ce6, 0x0cef, +0x0cf1, 0x0cf2, +0x0d00, 0x0d03, +0x0d05, 0x0d0c, +0x0d0e, 0x0d10, +0x0d12, 0x0d44, +0x0d46, 0x0d48, +0x0d4a, 0x0d4e, +0x0d54, 0x0d57, +0x0d5f, 0x0d63, +0x0d66, 0x0d6f, +0x0d7a, 0x0d7f, +0x0d82, 0x0d83, +0x0d85, 0x0d96, +0x0d9a, 0x0db1, +0x0db3, 0x0dbb, +0x0dbd, 0x0dbd, +0x0dc0, 0x0dc6, +0x0dca, 0x0dca, +0x0dcf, 0x0dd4, +0x0dd6, 0x0dd6, +0x0dd8, 0x0ddf, +0x0de6, 0x0def, +0x0df2, 0x0df3, +0x0e01, 0x0e3a, +0x0e40, 0x0e4e, +0x0e50, 0x0e59, +0x0e81, 0x0e82, +0x0e84, 0x0e84, +0x0e87, 0x0e88, +0x0e8a, 0x0e8a, +0x0e8d, 0x0e8d, +0x0e94, 0x0e97, +0x0e99, 0x0e9f, +0x0ea1, 0x0ea3, +0x0ea5, 0x0ea5, +0x0ea7, 0x0ea7, +0x0eaa, 0x0eab, +0x0ead, 0x0eb9, +0x0ebb, 0x0ebd, +0x0ec0, 0x0ec4, +0x0ec6, 0x0ec6, +0x0ec8, 0x0ecd, +0x0ed0, 0x0ed9, +0x0edc, 0x0edf, +0x0f00, 0x0f00, +0x0f18, 0x0f19, +0x0f20, 0x0f29, +0x0f35, 0x0f35, +0x0f37, 0x0f37, +0x0f39, 0x0f39, +0x0f3e, 0x0f47, +0x0f49, 0x0f6c, +0x0f71, 0x0f84, +0x0f86, 0x0f97, +0x0f99, 0x0fbc, +0x0fc6, 0x0fc6, +0x1000, 0x1049, +0x1050, 0x109d, +0x10a0, 0x10c5, +0x10c7, 0x10c7, +0x10cd, 0x10cd, +0x10d0, 0x10fa, +0x10fc, 0x1248, +0x124a, 0x124d, +0x1250, 0x1256, +0x1258, 0x1258, +0x125a, 0x125d, +0x1260, 0x1288, +0x128a, 0x128d, +0x1290, 0x12b0, +0x12b2, 0x12b5, +0x12b8, 0x12be, +0x12c0, 0x12c0, +0x12c2, 0x12c5, +0x12c8, 0x12d6, +0x12d8, 0x1310, +0x1312, 0x1315, +0x1318, 0x135a, +0x135d, 0x135f, +0x1369, 0x1371, +0x1380, 0x138f, +0x13a0, 0x13f5, +0x13f8, 0x13fd, +0x1401, 0x166c, +0x166f, 0x167f, +0x1681, 0x169a, +0x16a0, 0x16ea, +0x16ee, 0x16f8, +0x1700, 0x170c, +0x170e, 0x1714, +0x1720, 0x1734, +0x1740, 0x1753, +0x1760, 0x176c, +0x176e, 0x1770, +0x1772, 0x1773, +0x1780, 0x17d3, +0x17d7, 0x17d7, +0x17dc, 0x17dd, +0x17e0, 0x17e9, +0x180b, 0x180d, +0x1810, 0x1819, +0x1820, 0x1878, +0x1880, 0x18aa, +0x18b0, 0x18f5, +0x1900, 0x191e, +0x1920, 0x192b, +0x1930, 0x193b, +0x1946, 0x196d, +0x1970, 0x1974, +0x1980, 0x19ab, +0x19b0, 0x19c9, +0x19d0, 0x19da, +0x1a00, 0x1a1b, +0x1a20, 0x1a5e, +0x1a60, 0x1a7c, +0x1a7f, 0x1a89, +0x1a90, 0x1a99, +0x1aa7, 0x1aa7, +0x1ab0, 0x1abd, +0x1b00, 0x1b4b, +0x1b50, 0x1b59, +0x1b6b, 0x1b73, +0x1b80, 0x1bf3, +0x1c00, 0x1c37, +0x1c40, 0x1c49, +0x1c4d, 0x1c7d, +0x1c80, 0x1c88, +0x1c90, 0x1cba, +0x1cbd, 0x1cbf, +0x1cd0, 0x1cd2, +0x1cd4, 0x1cf9, +0x1d00, 0x1df9, +0x1dfb, 0x1f15, +0x1f18, 0x1f1d, +0x1f20, 0x1f45, +0x1f48, 0x1f4d, +0x1f50, 0x1f57, +0x1f59, 0x1f59, +0x1f5b, 0x1f5b, +0x1f5d, 0x1f5d, +0x1f5f, 0x1f7d, +0x1f80, 0x1fb4, +0x1fb6, 0x1fbc, +0x1fbe, 0x1fbe, +0x1fc2, 0x1fc4, +0x1fc6, 0x1fcc, +0x1fd0, 0x1fd3, +0x1fd6, 0x1fdb, +0x1fe0, 0x1fec, +0x1ff2, 0x1ff4, +0x1ff6, 0x1ffc, +0x203f, 0x2040, +0x2054, 0x2054, +0x2071, 0x2071, +0x207f, 0x207f, +0x2090, 0x209c, +0x20d0, 0x20dc, +0x20e1, 0x20e1, +0x20e5, 0x20f0, +0x2102, 0x2102, +0x2107, 0x2107, +0x210a, 0x2113, +0x2115, 0x2115, +0x2118, 0x211d, +0x2124, 0x2124, +0x2126, 0x2126, +0x2128, 0x2128, +0x212a, 0x2139, +0x213c, 0x213f, +0x2145, 0x2149, +0x214e, 0x214e, +0x2160, 0x2188, +0x2c00, 0x2c2e, +0x2c30, 0x2c5e, +0x2c60, 0x2ce4, +0x2ceb, 0x2cf3, +0x2d00, 0x2d25, +0x2d27, 0x2d27, +0x2d2d, 0x2d2d, +0x2d30, 0x2d67, +0x2d6f, 0x2d6f, +0x2d7f, 0x2d96, +0x2da0, 0x2da6, +0x2da8, 0x2dae, +0x2db0, 0x2db6, +0x2db8, 0x2dbe, +0x2dc0, 0x2dc6, +0x2dc8, 0x2dce, +0x2dd0, 0x2dd6, +0x2dd8, 0x2dde, +0x2de0, 0x2dff, +0x3005, 0x3007, +0x3021, 0x302f, +0x3031, 0x3035, +0x3038, 0x303c, +0x3041, 0x3096, +0x3099, 0x309f, +0x30a1, 0x30fa, +0x30fc, 0x30ff, +0x3105, 0x312f, +0x3131, 0x318e, +0x31a0, 0x31ba, +0x31f0, 0x31ff, +0x3400, 0x4db5, +0x4e00, 0x9fef, +0xa000, 0xa48c, +0xa4d0, 0xa4fd, +0xa500, 0xa60c, +0xa610, 0xa62b, +0xa640, 0xa66f, +0xa674, 0xa67d, +0xa67f, 0xa6f1, +0xa717, 0xa71f, +0xa722, 0xa788, +0xa78b, 0xa7b9, +0xa7f7, 0xa827, +0xa840, 0xa873, +0xa880, 0xa8c5, +0xa8d0, 0xa8d9, +0xa8e0, 0xa8f7, +0xa8fb, 0xa8fb, +0xa8fd, 0xa92d, +0xa930, 0xa953, +0xa960, 0xa97c, +0xa980, 0xa9c0, +0xa9cf, 0xa9d9, +0xa9e0, 0xa9fe, +0xaa00, 0xaa36, +0xaa40, 0xaa4d, +0xaa50, 0xaa59, +0xaa60, 0xaa76, +0xaa7a, 0xaac2, +0xaadb, 0xaadd, +0xaae0, 0xaaef, +0xaaf2, 0xaaf6, +0xab01, 0xab06, +0xab09, 0xab0e, +0xab11, 0xab16, +0xab20, 0xab26, +0xab28, 0xab2e, +0xab30, 0xab5a, +0xab5c, 0xab65, +0xab70, 0xabea, +0xabec, 0xabed, +0xabf0, 0xabf9, +0xac00, 0xd7a3, +0xd7b0, 0xd7c6, +0xd7cb, 0xd7fb, +0xf900, 0xfa6d, +0xfa70, 0xfad9, +0xfb00, 0xfb06, +0xfb13, 0xfb17, +0xfb1d, 0xfb28, +0xfb2a, 0xfb36, +0xfb38, 0xfb3c, +0xfb3e, 0xfb3e, +0xfb40, 0xfb41, +0xfb43, 0xfb44, +0xfb46, 0xfbb1, +0xfbd3, 0xfd3d, +0xfd50, 0xfd8f, +0xfd92, 0xfdc7, +0xfdf0, 0xfdfb, +0xfe00, 0xfe0f, +0xfe20, 0xfe2f, +0xfe33, 0xfe34, +0xfe4d, 0xfe4f, +0xfe70, 0xfe74, +0xfe76, 0xfefc, +0xff10, 0xff19, +0xff21, 0xff3a, +0xff3f, 0xff3f, +0xff41, 0xff5a, +0xff66, 0xffbe, +0xffc2, 0xffc7, +0xffca, 0xffcf, +0xffd2, 0xffd7, +0xffda, 0xffdc, +0x10000, 0x1000b, +0x1000d, 0x10026, +0x10028, 0x1003a, +0x1003c, 0x1003d, +0x1003f, 0x1004d, +0x10050, 0x1005d, +0x10080, 0x100fa, +0x10140, 0x10174, +0x101fd, 0x101fd, +0x10280, 0x1029c, +0x102a0, 0x102d0, +0x102e0, 0x102e0, +0x10300, 0x1031f, +0x1032d, 0x1034a, +0x10350, 0x1037a, +0x10380, 0x1039d, +0x103a0, 0x103c3, +0x103c8, 0x103cf, +0x103d1, 0x103d5, +0x10400, 0x1049d, +0x104a0, 0x104a9, +0x104b0, 0x104d3, +0x104d8, 0x104fb, +0x10500, 0x10527, +0x10530, 0x10563, +0x10600, 0x10736, +0x10740, 0x10755, +0x10760, 0x10767, +0x10800, 0x10805, +0x10808, 0x10808, +0x1080a, 0x10835, +0x10837, 0x10838, +0x1083c, 0x1083c, +0x1083f, 0x10855, +0x10860, 0x10876, +0x10880, 0x1089e, +0x108e0, 0x108f2, +0x108f4, 0x108f5, +0x10900, 0x10915, +0x10920, 0x10939, +0x10980, 0x109b7, +0x109be, 0x109bf, +0x10a00, 0x10a03, +0x10a05, 0x10a06, +0x10a0c, 0x10a13, +0x10a15, 0x10a17, +0x10a19, 0x10a35, +0x10a38, 0x10a3a, +0x10a3f, 0x10a3f, +0x10a60, 0x10a7c, +0x10a80, 0x10a9c, +0x10ac0, 0x10ac7, +0x10ac9, 0x10ae6, +0x10b00, 0x10b35, +0x10b40, 0x10b55, +0x10b60, 0x10b72, +0x10b80, 0x10b91, +0x10c00, 0x10c48, +0x10c80, 0x10cb2, +0x10cc0, 0x10cf2, +0x10d00, 0x10d27, +0x10d30, 0x10d39, +0x10f00, 0x10f1c, +0x10f27, 0x10f27, +0x10f30, 0x10f50, +0x11000, 0x11046, +0x11066, 0x1106f, +0x1107f, 0x110ba, +0x110d0, 0x110e8, +0x110f0, 0x110f9, +0x11100, 0x11134, +0x11136, 0x1113f, +0x11144, 0x11146, +0x11150, 0x11173, +0x11176, 0x11176, +0x11180, 0x111c4, +0x111c9, 0x111cc, +0x111d0, 0x111da, +0x111dc, 0x111dc, +0x11200, 0x11211, +0x11213, 0x11237, +0x1123e, 0x1123e, +0x11280, 0x11286, +0x11288, 0x11288, +0x1128a, 0x1128d, +0x1128f, 0x1129d, +0x1129f, 0x112a8, +0x112b0, 0x112ea, +0x112f0, 0x112f9, +0x11300, 0x11303, +0x11305, 0x1130c, +0x1130f, 0x11310, +0x11313, 0x11328, +0x1132a, 0x11330, +0x11332, 0x11333, +0x11335, 0x11339, +0x1133b, 0x11344, +0x11347, 0x11348, +0x1134b, 0x1134d, +0x11350, 0x11350, +0x11357, 0x11357, +0x1135d, 0x11363, +0x11366, 0x1136c, +0x11370, 0x11374, +0x11400, 0x1144a, +0x11450, 0x11459, +0x1145e, 0x1145e, +0x11480, 0x114c5, +0x114c7, 0x114c7, +0x114d0, 0x114d9, +0x11580, 0x115b5, +0x115b8, 0x115c0, +0x115d8, 0x115dd, +0x11600, 0x11640, +0x11644, 0x11644, +0x11650, 0x11659, +0x11680, 0x116b7, +0x116c0, 0x116c9, +0x11700, 0x1171a, +0x1171d, 0x1172b, +0x11730, 0x11739, +0x11800, 0x1183a, +0x118a0, 0x118e9, +0x118ff, 0x118ff, +0x11a00, 0x11a3e, +0x11a47, 0x11a47, +0x11a50, 0x11a83, +0x11a86, 0x11a99, +0x11a9d, 0x11a9d, +0x11ac0, 0x11af8, +0x11c00, 0x11c08, +0x11c0a, 0x11c36, +0x11c38, 0x11c40, +0x11c50, 0x11c59, +0x11c72, 0x11c8f, +0x11c92, 0x11ca7, +0x11ca9, 0x11cb6, +0x11d00, 0x11d06, +0x11d08, 0x11d09, +0x11d0b, 0x11d36, +0x11d3a, 0x11d3a, +0x11d3c, 0x11d3d, +0x11d3f, 0x11d47, +0x11d50, 0x11d59, +0x11d60, 0x11d65, +0x11d67, 0x11d68, +0x11d6a, 0x11d8e, +0x11d90, 0x11d91, +0x11d93, 0x11d98, +0x11da0, 0x11da9, +0x11ee0, 0x11ef6, +0x12000, 0x12399, +0x12400, 0x1246e, +0x12480, 0x12543, +0x13000, 0x1342e, +0x14400, 0x14646, +0x16800, 0x16a38, +0x16a40, 0x16a5e, +0x16a60, 0x16a69, +0x16ad0, 0x16aed, +0x16af0, 0x16af4, +0x16b00, 0x16b36, +0x16b40, 0x16b43, +0x16b50, 0x16b59, +0x16b63, 0x16b77, +0x16b7d, 0x16b8f, +0x16e40, 0x16e7f, +0x16f00, 0x16f44, +0x16f50, 0x16f7e, +0x16f8f, 0x16f9f, +0x16fe0, 0x16fe1, +0x17000, 0x187f1, +0x18800, 0x18af2, +0x1b000, 0x1b11e, +0x1b170, 0x1b2fb, +0x1bc00, 0x1bc6a, +0x1bc70, 0x1bc7c, +0x1bc80, 0x1bc88, +0x1bc90, 0x1bc99, +0x1bc9d, 0x1bc9e, +0x1d165, 0x1d169, +0x1d16d, 0x1d172, +0x1d17b, 0x1d182, +0x1d185, 0x1d18b, +0x1d1aa, 0x1d1ad, +0x1d242, 0x1d244, +0x1d400, 0x1d454, +0x1d456, 0x1d49c, +0x1d49e, 0x1d49f, +0x1d4a2, 0x1d4a2, +0x1d4a5, 0x1d4a6, +0x1d4a9, 0x1d4ac, +0x1d4ae, 0x1d4b9, +0x1d4bb, 0x1d4bb, +0x1d4bd, 0x1d4c3, +0x1d4c5, 0x1d505, +0x1d507, 0x1d50a, +0x1d50d, 0x1d514, +0x1d516, 0x1d51c, +0x1d51e, 0x1d539, +0x1d53b, 0x1d53e, +0x1d540, 0x1d544, +0x1d546, 0x1d546, +0x1d54a, 0x1d550, +0x1d552, 0x1d6a5, +0x1d6a8, 0x1d6c0, +0x1d6c2, 0x1d6da, +0x1d6dc, 0x1d6fa, +0x1d6fc, 0x1d714, +0x1d716, 0x1d734, +0x1d736, 0x1d74e, +0x1d750, 0x1d76e, +0x1d770, 0x1d788, +0x1d78a, 0x1d7a8, +0x1d7aa, 0x1d7c2, +0x1d7c4, 0x1d7cb, +0x1d7ce, 0x1d7ff, +0x1da00, 0x1da36, +0x1da3b, 0x1da6c, +0x1da75, 0x1da75, +0x1da84, 0x1da84, +0x1da9b, 0x1da9f, +0x1daa1, 0x1daaf, +0x1e000, 0x1e006, +0x1e008, 0x1e018, +0x1e01b, 0x1e021, +0x1e023, 0x1e024, +0x1e026, 0x1e02a, +0x1e800, 0x1e8c4, +0x1e8d0, 0x1e8d6, +0x1e900, 0x1e94a, +0x1e950, 0x1e959, +0x1ee00, 0x1ee03, +0x1ee05, 0x1ee1f, +0x1ee21, 0x1ee22, +0x1ee24, 0x1ee24, +0x1ee27, 0x1ee27, +0x1ee29, 0x1ee32, +0x1ee34, 0x1ee37, +0x1ee39, 0x1ee39, +0x1ee3b, 0x1ee3b, +0x1ee42, 0x1ee42, +0x1ee47, 0x1ee47, +0x1ee49, 0x1ee49, +0x1ee4b, 0x1ee4b, +0x1ee4d, 0x1ee4f, +0x1ee51, 0x1ee52, +0x1ee54, 0x1ee54, +0x1ee57, 0x1ee57, +0x1ee59, 0x1ee59, +0x1ee5b, 0x1ee5b, +0x1ee5d, 0x1ee5d, +0x1ee5f, 0x1ee5f, +0x1ee61, 0x1ee62, +0x1ee64, 0x1ee64, +0x1ee67, 0x1ee6a, +0x1ee6c, 0x1ee72, +0x1ee74, 0x1ee77, +0x1ee79, 0x1ee7c, +0x1ee7e, 0x1ee7e, +0x1ee80, 0x1ee89, +0x1ee8b, 0x1ee9b, +0x1eea1, 0x1eea3, +0x1eea5, 0x1eea9, +0x1eeab, 0x1eebb, +0x20000, 0x2a6d6, +0x2a700, 0x2b734, +0x2b740, 0x2b81d, +0x2b820, 0x2cea1, +0x2ceb0, 0x2ebe0, +0x2f800, 0x2fa1d, +0xe0100, 0xe01ef, +}; /* END of CR_ID_Continue */ + +/* PROPERTY: 'ID_Start': Derived Property */ +static const OnigCodePoint +CR_ID_Start[] = { 599, +0x0041, 0x005a, +0x0061, 0x007a, +0x00aa, 0x00aa, +0x00b5, 0x00b5, +0x00ba, 0x00ba, +0x00c0, 0x00d6, +0x00d8, 0x00f6, +0x00f8, 0x02c1, +0x02c6, 0x02d1, +0x02e0, 0x02e4, +0x02ec, 0x02ec, +0x02ee, 0x02ee, +0x0370, 0x0374, +0x0376, 0x0377, +0x037a, 0x037d, +0x037f, 0x037f, +0x0386, 0x0386, +0x0388, 0x038a, +0x038c, 0x038c, +0x038e, 0x03a1, +0x03a3, 0x03f5, +0x03f7, 0x0481, +0x048a, 0x052f, +0x0531, 0x0556, +0x0559, 0x0559, +0x0560, 0x0588, +0x05d0, 0x05ea, +0x05ef, 0x05f2, +0x0620, 0x064a, +0x066e, 0x066f, +0x0671, 0x06d3, +0x06d5, 0x06d5, +0x06e5, 0x06e6, +0x06ee, 0x06ef, +0x06fa, 0x06fc, +0x06ff, 0x06ff, +0x0710, 0x0710, +0x0712, 0x072f, +0x074d, 0x07a5, +0x07b1, 0x07b1, +0x07ca, 0x07ea, +0x07f4, 0x07f5, +0x07fa, 0x07fa, +0x0800, 0x0815, +0x081a, 0x081a, +0x0824, 0x0824, +0x0828, 0x0828, +0x0840, 0x0858, +0x0860, 0x086a, +0x08a0, 0x08b4, +0x08b6, 0x08bd, +0x0904, 0x0939, +0x093d, 0x093d, +0x0950, 0x0950, +0x0958, 0x0961, +0x0971, 0x0980, +0x0985, 0x098c, +0x098f, 0x0990, +0x0993, 0x09a8, +0x09aa, 0x09b0, +0x09b2, 0x09b2, +0x09b6, 0x09b9, +0x09bd, 0x09bd, +0x09ce, 0x09ce, +0x09dc, 0x09dd, +0x09df, 0x09e1, +0x09f0, 0x09f1, +0x09fc, 0x09fc, +0x0a05, 0x0a0a, +0x0a0f, 0x0a10, +0x0a13, 0x0a28, +0x0a2a, 0x0a30, +0x0a32, 0x0a33, +0x0a35, 0x0a36, +0x0a38, 0x0a39, +0x0a59, 0x0a5c, +0x0a5e, 0x0a5e, +0x0a72, 0x0a74, +0x0a85, 0x0a8d, +0x0a8f, 0x0a91, +0x0a93, 0x0aa8, +0x0aaa, 0x0ab0, +0x0ab2, 0x0ab3, +0x0ab5, 0x0ab9, +0x0abd, 0x0abd, +0x0ad0, 0x0ad0, +0x0ae0, 0x0ae1, +0x0af9, 0x0af9, +0x0b05, 0x0b0c, +0x0b0f, 0x0b10, +0x0b13, 0x0b28, +0x0b2a, 0x0b30, +0x0b32, 0x0b33, +0x0b35, 0x0b39, +0x0b3d, 0x0b3d, +0x0b5c, 0x0b5d, +0x0b5f, 0x0b61, +0x0b71, 0x0b71, +0x0b83, 0x0b83, +0x0b85, 0x0b8a, +0x0b8e, 0x0b90, +0x0b92, 0x0b95, +0x0b99, 0x0b9a, +0x0b9c, 0x0b9c, +0x0b9e, 0x0b9f, +0x0ba3, 0x0ba4, +0x0ba8, 0x0baa, +0x0bae, 0x0bb9, +0x0bd0, 0x0bd0, +0x0c05, 0x0c0c, +0x0c0e, 0x0c10, +0x0c12, 0x0c28, +0x0c2a, 0x0c39, +0x0c3d, 0x0c3d, +0x0c58, 0x0c5a, +0x0c60, 0x0c61, +0x0c80, 0x0c80, +0x0c85, 0x0c8c, +0x0c8e, 0x0c90, +0x0c92, 0x0ca8, +0x0caa, 0x0cb3, +0x0cb5, 0x0cb9, +0x0cbd, 0x0cbd, +0x0cde, 0x0cde, +0x0ce0, 0x0ce1, +0x0cf1, 0x0cf2, +0x0d05, 0x0d0c, +0x0d0e, 0x0d10, +0x0d12, 0x0d3a, +0x0d3d, 0x0d3d, +0x0d4e, 0x0d4e, +0x0d54, 0x0d56, +0x0d5f, 0x0d61, +0x0d7a, 0x0d7f, +0x0d85, 0x0d96, +0x0d9a, 0x0db1, +0x0db3, 0x0dbb, +0x0dbd, 0x0dbd, +0x0dc0, 0x0dc6, +0x0e01, 0x0e30, +0x0e32, 0x0e33, +0x0e40, 0x0e46, +0x0e81, 0x0e82, +0x0e84, 0x0e84, +0x0e87, 0x0e88, +0x0e8a, 0x0e8a, +0x0e8d, 0x0e8d, +0x0e94, 0x0e97, +0x0e99, 0x0e9f, +0x0ea1, 0x0ea3, +0x0ea5, 0x0ea5, +0x0ea7, 0x0ea7, +0x0eaa, 0x0eab, +0x0ead, 0x0eb0, +0x0eb2, 0x0eb3, +0x0ebd, 0x0ebd, +0x0ec0, 0x0ec4, +0x0ec6, 0x0ec6, +0x0edc, 0x0edf, +0x0f00, 0x0f00, +0x0f40, 0x0f47, +0x0f49, 0x0f6c, +0x0f88, 0x0f8c, +0x1000, 0x102a, +0x103f, 0x103f, +0x1050, 0x1055, +0x105a, 0x105d, +0x1061, 0x1061, +0x1065, 0x1066, +0x106e, 0x1070, +0x1075, 0x1081, +0x108e, 0x108e, +0x10a0, 0x10c5, +0x10c7, 0x10c7, +0x10cd, 0x10cd, +0x10d0, 0x10fa, +0x10fc, 0x1248, +0x124a, 0x124d, +0x1250, 0x1256, +0x1258, 0x1258, +0x125a, 0x125d, +0x1260, 0x1288, +0x128a, 0x128d, +0x1290, 0x12b0, +0x12b2, 0x12b5, +0x12b8, 0x12be, +0x12c0, 0x12c0, +0x12c2, 0x12c5, +0x12c8, 0x12d6, +0x12d8, 0x1310, +0x1312, 0x1315, +0x1318, 0x135a, +0x1380, 0x138f, +0x13a0, 0x13f5, +0x13f8, 0x13fd, +0x1401, 0x166c, +0x166f, 0x167f, +0x1681, 0x169a, +0x16a0, 0x16ea, +0x16ee, 0x16f8, +0x1700, 0x170c, +0x170e, 0x1711, +0x1720, 0x1731, +0x1740, 0x1751, +0x1760, 0x176c, +0x176e, 0x1770, +0x1780, 0x17b3, +0x17d7, 0x17d7, +0x17dc, 0x17dc, +0x1820, 0x1878, +0x1880, 0x18a8, +0x18aa, 0x18aa, +0x18b0, 0x18f5, +0x1900, 0x191e, +0x1950, 0x196d, +0x1970, 0x1974, +0x1980, 0x19ab, +0x19b0, 0x19c9, +0x1a00, 0x1a16, +0x1a20, 0x1a54, +0x1aa7, 0x1aa7, +0x1b05, 0x1b33, +0x1b45, 0x1b4b, +0x1b83, 0x1ba0, +0x1bae, 0x1baf, +0x1bba, 0x1be5, +0x1c00, 0x1c23, +0x1c4d, 0x1c4f, +0x1c5a, 0x1c7d, +0x1c80, 0x1c88, +0x1c90, 0x1cba, +0x1cbd, 0x1cbf, +0x1ce9, 0x1cec, +0x1cee, 0x1cf1, +0x1cf5, 0x1cf6, +0x1d00, 0x1dbf, +0x1e00, 0x1f15, +0x1f18, 0x1f1d, +0x1f20, 0x1f45, +0x1f48, 0x1f4d, +0x1f50, 0x1f57, +0x1f59, 0x1f59, +0x1f5b, 0x1f5b, +0x1f5d, 0x1f5d, +0x1f5f, 0x1f7d, +0x1f80, 0x1fb4, +0x1fb6, 0x1fbc, +0x1fbe, 0x1fbe, +0x1fc2, 0x1fc4, +0x1fc6, 0x1fcc, +0x1fd0, 0x1fd3, +0x1fd6, 0x1fdb, +0x1fe0, 0x1fec, +0x1ff2, 0x1ff4, +0x1ff6, 0x1ffc, +0x2071, 0x2071, +0x207f, 0x207f, +0x2090, 0x209c, +0x2102, 0x2102, +0x2107, 0x2107, +0x210a, 0x2113, +0x2115, 0x2115, +0x2118, 0x211d, +0x2124, 0x2124, +0x2126, 0x2126, +0x2128, 0x2128, +0x212a, 0x2139, +0x213c, 0x213f, +0x2145, 0x2149, +0x214e, 0x214e, +0x2160, 0x2188, +0x2c00, 0x2c2e, +0x2c30, 0x2c5e, +0x2c60, 0x2ce4, +0x2ceb, 0x2cee, +0x2cf2, 0x2cf3, +0x2d00, 0x2d25, +0x2d27, 0x2d27, +0x2d2d, 0x2d2d, +0x2d30, 0x2d67, +0x2d6f, 0x2d6f, +0x2d80, 0x2d96, +0x2da0, 0x2da6, +0x2da8, 0x2dae, +0x2db0, 0x2db6, +0x2db8, 0x2dbe, +0x2dc0, 0x2dc6, +0x2dc8, 0x2dce, +0x2dd0, 0x2dd6, +0x2dd8, 0x2dde, +0x3005, 0x3007, +0x3021, 0x3029, +0x3031, 0x3035, +0x3038, 0x303c, +0x3041, 0x3096, +0x309b, 0x309f, +0x30a1, 0x30fa, +0x30fc, 0x30ff, +0x3105, 0x312f, +0x3131, 0x318e, +0x31a0, 0x31ba, +0x31f0, 0x31ff, +0x3400, 0x4db5, +0x4e00, 0x9fef, +0xa000, 0xa48c, +0xa4d0, 0xa4fd, +0xa500, 0xa60c, +0xa610, 0xa61f, +0xa62a, 0xa62b, +0xa640, 0xa66e, +0xa67f, 0xa69d, +0xa6a0, 0xa6ef, +0xa717, 0xa71f, +0xa722, 0xa788, +0xa78b, 0xa7b9, +0xa7f7, 0xa801, +0xa803, 0xa805, +0xa807, 0xa80a, +0xa80c, 0xa822, +0xa840, 0xa873, +0xa882, 0xa8b3, +0xa8f2, 0xa8f7, +0xa8fb, 0xa8fb, +0xa8fd, 0xa8fe, +0xa90a, 0xa925, +0xa930, 0xa946, +0xa960, 0xa97c, +0xa984, 0xa9b2, +0xa9cf, 0xa9cf, +0xa9e0, 0xa9e4, +0xa9e6, 0xa9ef, +0xa9fa, 0xa9fe, +0xaa00, 0xaa28, +0xaa40, 0xaa42, +0xaa44, 0xaa4b, +0xaa60, 0xaa76, +0xaa7a, 0xaa7a, +0xaa7e, 0xaaaf, +0xaab1, 0xaab1, +0xaab5, 0xaab6, +0xaab9, 0xaabd, +0xaac0, 0xaac0, +0xaac2, 0xaac2, +0xaadb, 0xaadd, +0xaae0, 0xaaea, +0xaaf2, 0xaaf4, +0xab01, 0xab06, +0xab09, 0xab0e, +0xab11, 0xab16, +0xab20, 0xab26, +0xab28, 0xab2e, +0xab30, 0xab5a, +0xab5c, 0xab65, +0xab70, 0xabe2, +0xac00, 0xd7a3, +0xd7b0, 0xd7c6, +0xd7cb, 0xd7fb, +0xf900, 0xfa6d, +0xfa70, 0xfad9, +0xfb00, 0xfb06, +0xfb13, 0xfb17, +0xfb1d, 0xfb1d, +0xfb1f, 0xfb28, +0xfb2a, 0xfb36, +0xfb38, 0xfb3c, +0xfb3e, 0xfb3e, +0xfb40, 0xfb41, +0xfb43, 0xfb44, +0xfb46, 0xfbb1, +0xfbd3, 0xfd3d, +0xfd50, 0xfd8f, +0xfd92, 0xfdc7, +0xfdf0, 0xfdfb, +0xfe70, 0xfe74, +0xfe76, 0xfefc, +0xff21, 0xff3a, +0xff41, 0xff5a, +0xff66, 0xffbe, +0xffc2, 0xffc7, +0xffca, 0xffcf, +0xffd2, 0xffd7, +0xffda, 0xffdc, +0x10000, 0x1000b, +0x1000d, 0x10026, +0x10028, 0x1003a, +0x1003c, 0x1003d, +0x1003f, 0x1004d, +0x10050, 0x1005d, +0x10080, 0x100fa, +0x10140, 0x10174, +0x10280, 0x1029c, +0x102a0, 0x102d0, +0x10300, 0x1031f, +0x1032d, 0x1034a, +0x10350, 0x10375, +0x10380, 0x1039d, +0x103a0, 0x103c3, +0x103c8, 0x103cf, +0x103d1, 0x103d5, +0x10400, 0x1049d, +0x104b0, 0x104d3, +0x104d8, 0x104fb, +0x10500, 0x10527, +0x10530, 0x10563, +0x10600, 0x10736, +0x10740, 0x10755, +0x10760, 0x10767, +0x10800, 0x10805, +0x10808, 0x10808, +0x1080a, 0x10835, +0x10837, 0x10838, +0x1083c, 0x1083c, +0x1083f, 0x10855, +0x10860, 0x10876, +0x10880, 0x1089e, +0x108e0, 0x108f2, +0x108f4, 0x108f5, +0x10900, 0x10915, +0x10920, 0x10939, +0x10980, 0x109b7, +0x109be, 0x109bf, +0x10a00, 0x10a00, +0x10a10, 0x10a13, +0x10a15, 0x10a17, +0x10a19, 0x10a35, +0x10a60, 0x10a7c, +0x10a80, 0x10a9c, +0x10ac0, 0x10ac7, +0x10ac9, 0x10ae4, +0x10b00, 0x10b35, +0x10b40, 0x10b55, +0x10b60, 0x10b72, +0x10b80, 0x10b91, +0x10c00, 0x10c48, +0x10c80, 0x10cb2, +0x10cc0, 0x10cf2, +0x10d00, 0x10d23, +0x10f00, 0x10f1c, +0x10f27, 0x10f27, +0x10f30, 0x10f45, +0x11003, 0x11037, +0x11083, 0x110af, +0x110d0, 0x110e8, +0x11103, 0x11126, +0x11144, 0x11144, +0x11150, 0x11172, +0x11176, 0x11176, +0x11183, 0x111b2, +0x111c1, 0x111c4, +0x111da, 0x111da, +0x111dc, 0x111dc, +0x11200, 0x11211, +0x11213, 0x1122b, +0x11280, 0x11286, +0x11288, 0x11288, +0x1128a, 0x1128d, +0x1128f, 0x1129d, +0x1129f, 0x112a8, +0x112b0, 0x112de, +0x11305, 0x1130c, +0x1130f, 0x11310, +0x11313, 0x11328, +0x1132a, 0x11330, +0x11332, 0x11333, +0x11335, 0x11339, +0x1133d, 0x1133d, +0x11350, 0x11350, +0x1135d, 0x11361, +0x11400, 0x11434, +0x11447, 0x1144a, +0x11480, 0x114af, +0x114c4, 0x114c5, +0x114c7, 0x114c7, +0x11580, 0x115ae, +0x115d8, 0x115db, +0x11600, 0x1162f, +0x11644, 0x11644, +0x11680, 0x116aa, +0x11700, 0x1171a, +0x11800, 0x1182b, +0x118a0, 0x118df, +0x118ff, 0x118ff, +0x11a00, 0x11a00, +0x11a0b, 0x11a32, +0x11a3a, 0x11a3a, +0x11a50, 0x11a50, +0x11a5c, 0x11a83, +0x11a86, 0x11a89, +0x11a9d, 0x11a9d, +0x11ac0, 0x11af8, +0x11c00, 0x11c08, +0x11c0a, 0x11c2e, +0x11c40, 0x11c40, +0x11c72, 0x11c8f, +0x11d00, 0x11d06, +0x11d08, 0x11d09, +0x11d0b, 0x11d30, +0x11d46, 0x11d46, +0x11d60, 0x11d65, +0x11d67, 0x11d68, +0x11d6a, 0x11d89, +0x11d98, 0x11d98, +0x11ee0, 0x11ef2, +0x12000, 0x12399, +0x12400, 0x1246e, +0x12480, 0x12543, +0x13000, 0x1342e, +0x14400, 0x14646, +0x16800, 0x16a38, +0x16a40, 0x16a5e, +0x16ad0, 0x16aed, +0x16b00, 0x16b2f, +0x16b40, 0x16b43, +0x16b63, 0x16b77, +0x16b7d, 0x16b8f, +0x16e40, 0x16e7f, +0x16f00, 0x16f44, +0x16f50, 0x16f50, +0x16f93, 0x16f9f, +0x16fe0, 0x16fe1, +0x17000, 0x187f1, +0x18800, 0x18af2, +0x1b000, 0x1b11e, +0x1b170, 0x1b2fb, +0x1bc00, 0x1bc6a, +0x1bc70, 0x1bc7c, +0x1bc80, 0x1bc88, +0x1bc90, 0x1bc99, +0x1d400, 0x1d454, +0x1d456, 0x1d49c, +0x1d49e, 0x1d49f, +0x1d4a2, 0x1d4a2, +0x1d4a5, 0x1d4a6, +0x1d4a9, 0x1d4ac, +0x1d4ae, 0x1d4b9, +0x1d4bb, 0x1d4bb, +0x1d4bd, 0x1d4c3, +0x1d4c5, 0x1d505, +0x1d507, 0x1d50a, +0x1d50d, 0x1d514, +0x1d516, 0x1d51c, +0x1d51e, 0x1d539, +0x1d53b, 0x1d53e, +0x1d540, 0x1d544, +0x1d546, 0x1d546, +0x1d54a, 0x1d550, +0x1d552, 0x1d6a5, +0x1d6a8, 0x1d6c0, +0x1d6c2, 0x1d6da, +0x1d6dc, 0x1d6fa, +0x1d6fc, 0x1d714, +0x1d716, 0x1d734, +0x1d736, 0x1d74e, +0x1d750, 0x1d76e, +0x1d770, 0x1d788, +0x1d78a, 0x1d7a8, +0x1d7aa, 0x1d7c2, +0x1d7c4, 0x1d7cb, +0x1e800, 0x1e8c4, +0x1e900, 0x1e943, +0x1ee00, 0x1ee03, +0x1ee05, 0x1ee1f, +0x1ee21, 0x1ee22, +0x1ee24, 0x1ee24, +0x1ee27, 0x1ee27, +0x1ee29, 0x1ee32, +0x1ee34, 0x1ee37, +0x1ee39, 0x1ee39, +0x1ee3b, 0x1ee3b, +0x1ee42, 0x1ee42, +0x1ee47, 0x1ee47, +0x1ee49, 0x1ee49, +0x1ee4b, 0x1ee4b, +0x1ee4d, 0x1ee4f, +0x1ee51, 0x1ee52, +0x1ee54, 0x1ee54, +0x1ee57, 0x1ee57, +0x1ee59, 0x1ee59, +0x1ee5b, 0x1ee5b, +0x1ee5d, 0x1ee5d, +0x1ee5f, 0x1ee5f, +0x1ee61, 0x1ee62, +0x1ee64, 0x1ee64, +0x1ee67, 0x1ee6a, +0x1ee6c, 0x1ee72, +0x1ee74, 0x1ee77, +0x1ee79, 0x1ee7c, +0x1ee7e, 0x1ee7e, +0x1ee80, 0x1ee89, +0x1ee8b, 0x1ee9b, +0x1eea1, 0x1eea3, +0x1eea5, 0x1eea9, +0x1eeab, 0x1eebb, +0x20000, 0x2a6d6, +0x2a700, 0x2b734, +0x2b740, 0x2b81d, +0x2b820, 0x2cea1, +0x2ceb0, 0x2ebe0, +0x2f800, 0x2fa1d, +}; /* END of CR_ID_Start */ + +/* PROPERTY: 'Ideographic': Binary Property */ +static const OnigCodePoint +CR_Ideographic[] = { 16, +0x3006, 0x3007, +0x3021, 0x3029, +0x3038, 0x303a, +0x3400, 0x4db5, +0x4e00, 0x9fef, +0xf900, 0xfa6d, +0xfa70, 0xfad9, +0x17000, 0x187f1, +0x18800, 0x18af2, +0x1b170, 0x1b2fb, +0x20000, 0x2a6d6, +0x2a700, 0x2b734, +0x2b740, 0x2b81d, +0x2b820, 0x2cea1, +0x2ceb0, 0x2ebe0, +0x2f800, 0x2fa1d, +}; /* END of CR_Ideographic */ + +/* PROPERTY: 'Imperial_Aramaic': Script */ +static const OnigCodePoint +CR_Imperial_Aramaic[] = { 2, +0x10840, 0x10855, +0x10857, 0x1085f, +}; /* END of CR_Imperial_Aramaic */ + +/* PROPERTY: 'Inherited': Script */ +static const OnigCodePoint +CR_Inherited[] = { 28, +0x0300, 0x036f, +0x0485, 0x0486, +0x064b, 0x0655, +0x0670, 0x0670, +0x0951, 0x0952, +0x1ab0, 0x1abe, +0x1cd0, 0x1cd2, +0x1cd4, 0x1ce0, +0x1ce2, 0x1ce8, +0x1ced, 0x1ced, +0x1cf4, 0x1cf4, +0x1cf8, 0x1cf9, +0x1dc0, 0x1df9, +0x1dfb, 0x1dff, +0x200c, 0x200d, +0x20d0, 0x20f0, +0x302a, 0x302d, +0x3099, 0x309a, +0xfe00, 0xfe0f, +0xfe20, 0xfe2d, +0x101fd, 0x101fd, +0x102e0, 0x102e0, +0x1133b, 0x1133b, +0x1d167, 0x1d169, +0x1d17b, 0x1d182, +0x1d185, 0x1d18b, +0x1d1aa, 0x1d1ad, +0xe0100, 0xe01ef, +}; /* END of CR_Inherited */ + +/* PROPERTY: 'Inscriptional_Pahlavi': Script */ +static const OnigCodePoint +CR_Inscriptional_Pahlavi[] = { 2, +0x10b60, 0x10b72, +0x10b78, 0x10b7f, +}; /* END of CR_Inscriptional_Pahlavi */ + +/* PROPERTY: 'Inscriptional_Parthian': Script */ +static const OnigCodePoint +CR_Inscriptional_Parthian[] = { 2, +0x10b40, 0x10b55, +0x10b58, 0x10b5f, +}; /* END of CR_Inscriptional_Parthian */ + +/* PROPERTY: 'Javanese': Script */ +static const OnigCodePoint +CR_Javanese[] = { 3, +0xa980, 0xa9cd, +0xa9d0, 0xa9d9, +0xa9de, 0xa9df, +}; /* END of CR_Javanese */ + +/* PROPERTY: 'Join_Control': Binary Property */ +static const OnigCodePoint +CR_Join_Control[] = { 1, +0x200c, 0x200d, +}; /* END of CR_Join_Control */ + +/* PROPERTY: 'Kaithi': Script */ +static const OnigCodePoint +CR_Kaithi[] = { 2, +0x11080, 0x110c1, +0x110cd, 0x110cd, +}; /* END of CR_Kaithi */ + +/* PROPERTY: 'Kannada': Script */ +static const OnigCodePoint +CR_Kannada[] = { 13, +0x0c80, 0x0c8c, +0x0c8e, 0x0c90, +0x0c92, 0x0ca8, +0x0caa, 0x0cb3, +0x0cb5, 0x0cb9, +0x0cbc, 0x0cc4, +0x0cc6, 0x0cc8, +0x0cca, 0x0ccd, +0x0cd5, 0x0cd6, +0x0cde, 0x0cde, +0x0ce0, 0x0ce3, +0x0ce6, 0x0cef, +0x0cf1, 0x0cf2, +}; /* END of CR_Kannada */ + +/* PROPERTY: 'Katakana': Script */ +static const OnigCodePoint +CR_Katakana[] = { 8, +0x30a1, 0x30fa, +0x30fd, 0x30ff, +0x31f0, 0x31ff, +0x32d0, 0x32fe, +0x3300, 0x3357, +0xff66, 0xff6f, +0xff71, 0xff9d, +0x1b000, 0x1b000, +}; /* END of CR_Katakana */ + +/* PROPERTY: 'Kayah_Li': Script */ +static const OnigCodePoint +CR_Kayah_Li[] = { 2, +0xa900, 0xa92d, +0xa92f, 0xa92f, +}; /* END of CR_Kayah_Li */ + +/* PROPERTY: 'Kharoshthi': Script */ +static const OnigCodePoint +CR_Kharoshthi[] = { 8, +0x10a00, 0x10a03, +0x10a05, 0x10a06, +0x10a0c, 0x10a13, +0x10a15, 0x10a17, +0x10a19, 0x10a35, +0x10a38, 0x10a3a, +0x10a3f, 0x10a48, +0x10a50, 0x10a58, +}; /* END of CR_Kharoshthi */ + +/* PROPERTY: 'Khmer': Script */ +static const OnigCodePoint +CR_Khmer[] = { 4, +0x1780, 0x17dd, +0x17e0, 0x17e9, +0x17f0, 0x17f9, +0x19e0, 0x19ff, +}; /* END of CR_Khmer */ + +/* PROPERTY: 'Khojki': Script */ +static const OnigCodePoint +CR_Khojki[] = { 2, +0x11200, 0x11211, +0x11213, 0x1123e, +}; /* END of CR_Khojki */ + +/* PROPERTY: 'Khudawadi': Script */ +static const OnigCodePoint +CR_Khudawadi[] = { 2, +0x112b0, 0x112ea, +0x112f0, 0x112f9, +}; /* END of CR_Khudawadi */ + +/* PROPERTY: 'L': Major Category */ +static const OnigCodePoint +CR_L[] = { 599, +0x0041, 0x005a, +0x0061, 0x007a, +0x00aa, 0x00aa, +0x00b5, 0x00b5, +0x00ba, 0x00ba, +0x00c0, 0x00d6, +0x00d8, 0x00f6, +0x00f8, 0x02c1, +0x02c6, 0x02d1, +0x02e0, 0x02e4, +0x02ec, 0x02ec, +0x02ee, 0x02ee, +0x0370, 0x0374, +0x0376, 0x0377, +0x037a, 0x037d, +0x037f, 0x037f, +0x0386, 0x0386, +0x0388, 0x038a, +0x038c, 0x038c, +0x038e, 0x03a1, +0x03a3, 0x03f5, +0x03f7, 0x0481, +0x048a, 0x052f, +0x0531, 0x0556, +0x0559, 0x0559, +0x0560, 0x0588, +0x05d0, 0x05ea, +0x05ef, 0x05f2, +0x0620, 0x064a, +0x066e, 0x066f, +0x0671, 0x06d3, +0x06d5, 0x06d5, +0x06e5, 0x06e6, +0x06ee, 0x06ef, +0x06fa, 0x06fc, +0x06ff, 0x06ff, +0x0710, 0x0710, +0x0712, 0x072f, +0x074d, 0x07a5, +0x07b1, 0x07b1, +0x07ca, 0x07ea, +0x07f4, 0x07f5, +0x07fa, 0x07fa, +0x0800, 0x0815, +0x081a, 0x081a, +0x0824, 0x0824, +0x0828, 0x0828, +0x0840, 0x0858, +0x0860, 0x086a, +0x08a0, 0x08b4, +0x08b6, 0x08bd, +0x0904, 0x0939, +0x093d, 0x093d, +0x0950, 0x0950, +0x0958, 0x0961, +0x0971, 0x0980, +0x0985, 0x098c, +0x098f, 0x0990, +0x0993, 0x09a8, +0x09aa, 0x09b0, +0x09b2, 0x09b2, +0x09b6, 0x09b9, +0x09bd, 0x09bd, +0x09ce, 0x09ce, +0x09dc, 0x09dd, +0x09df, 0x09e1, +0x09f0, 0x09f1, +0x09fc, 0x09fc, +0x0a05, 0x0a0a, +0x0a0f, 0x0a10, +0x0a13, 0x0a28, +0x0a2a, 0x0a30, +0x0a32, 0x0a33, +0x0a35, 0x0a36, +0x0a38, 0x0a39, +0x0a59, 0x0a5c, +0x0a5e, 0x0a5e, +0x0a72, 0x0a74, +0x0a85, 0x0a8d, +0x0a8f, 0x0a91, +0x0a93, 0x0aa8, +0x0aaa, 0x0ab0, +0x0ab2, 0x0ab3, +0x0ab5, 0x0ab9, +0x0abd, 0x0abd, +0x0ad0, 0x0ad0, +0x0ae0, 0x0ae1, +0x0af9, 0x0af9, +0x0b05, 0x0b0c, +0x0b0f, 0x0b10, +0x0b13, 0x0b28, +0x0b2a, 0x0b30, +0x0b32, 0x0b33, +0x0b35, 0x0b39, +0x0b3d, 0x0b3d, +0x0b5c, 0x0b5d, +0x0b5f, 0x0b61, +0x0b71, 0x0b71, +0x0b83, 0x0b83, +0x0b85, 0x0b8a, +0x0b8e, 0x0b90, +0x0b92, 0x0b95, +0x0b99, 0x0b9a, +0x0b9c, 0x0b9c, +0x0b9e, 0x0b9f, +0x0ba3, 0x0ba4, +0x0ba8, 0x0baa, +0x0bae, 0x0bb9, +0x0bd0, 0x0bd0, +0x0c05, 0x0c0c, +0x0c0e, 0x0c10, +0x0c12, 0x0c28, +0x0c2a, 0x0c39, +0x0c3d, 0x0c3d, +0x0c58, 0x0c5a, +0x0c60, 0x0c61, +0x0c80, 0x0c80, +0x0c85, 0x0c8c, +0x0c8e, 0x0c90, +0x0c92, 0x0ca8, +0x0caa, 0x0cb3, +0x0cb5, 0x0cb9, +0x0cbd, 0x0cbd, +0x0cde, 0x0cde, +0x0ce0, 0x0ce1, +0x0cf1, 0x0cf2, +0x0d05, 0x0d0c, +0x0d0e, 0x0d10, +0x0d12, 0x0d3a, +0x0d3d, 0x0d3d, +0x0d4e, 0x0d4e, +0x0d54, 0x0d56, +0x0d5f, 0x0d61, +0x0d7a, 0x0d7f, +0x0d85, 0x0d96, +0x0d9a, 0x0db1, +0x0db3, 0x0dbb, +0x0dbd, 0x0dbd, +0x0dc0, 0x0dc6, +0x0e01, 0x0e30, +0x0e32, 0x0e33, +0x0e40, 0x0e46, +0x0e81, 0x0e82, +0x0e84, 0x0e84, +0x0e87, 0x0e88, +0x0e8a, 0x0e8a, +0x0e8d, 0x0e8d, +0x0e94, 0x0e97, +0x0e99, 0x0e9f, +0x0ea1, 0x0ea3, +0x0ea5, 0x0ea5, +0x0ea7, 0x0ea7, +0x0eaa, 0x0eab, +0x0ead, 0x0eb0, +0x0eb2, 0x0eb3, +0x0ebd, 0x0ebd, +0x0ec0, 0x0ec4, +0x0ec6, 0x0ec6, +0x0edc, 0x0edf, +0x0f00, 0x0f00, +0x0f40, 0x0f47, +0x0f49, 0x0f6c, +0x0f88, 0x0f8c, +0x1000, 0x102a, +0x103f, 0x103f, +0x1050, 0x1055, +0x105a, 0x105d, +0x1061, 0x1061, +0x1065, 0x1066, +0x106e, 0x1070, +0x1075, 0x1081, +0x108e, 0x108e, +0x10a0, 0x10c5, +0x10c7, 0x10c7, +0x10cd, 0x10cd, +0x10d0, 0x10fa, +0x10fc, 0x1248, +0x124a, 0x124d, +0x1250, 0x1256, +0x1258, 0x1258, +0x125a, 0x125d, +0x1260, 0x1288, +0x128a, 0x128d, +0x1290, 0x12b0, +0x12b2, 0x12b5, +0x12b8, 0x12be, +0x12c0, 0x12c0, +0x12c2, 0x12c5, +0x12c8, 0x12d6, +0x12d8, 0x1310, +0x1312, 0x1315, +0x1318, 0x135a, +0x1380, 0x138f, +0x13a0, 0x13f5, +0x13f8, 0x13fd, +0x1401, 0x166c, +0x166f, 0x167f, +0x1681, 0x169a, +0x16a0, 0x16ea, +0x16f1, 0x16f8, +0x1700, 0x170c, +0x170e, 0x1711, +0x1720, 0x1731, +0x1740, 0x1751, +0x1760, 0x176c, +0x176e, 0x1770, +0x1780, 0x17b3, +0x17d7, 0x17d7, +0x17dc, 0x17dc, +0x1820, 0x1878, +0x1880, 0x1884, +0x1887, 0x18a8, +0x18aa, 0x18aa, +0x18b0, 0x18f5, +0x1900, 0x191e, +0x1950, 0x196d, +0x1970, 0x1974, +0x1980, 0x19ab, +0x19b0, 0x19c9, +0x1a00, 0x1a16, +0x1a20, 0x1a54, +0x1aa7, 0x1aa7, +0x1b05, 0x1b33, +0x1b45, 0x1b4b, +0x1b83, 0x1ba0, +0x1bae, 0x1baf, +0x1bba, 0x1be5, +0x1c00, 0x1c23, +0x1c4d, 0x1c4f, +0x1c5a, 0x1c7d, +0x1c80, 0x1c88, +0x1c90, 0x1cba, +0x1cbd, 0x1cbf, +0x1ce9, 0x1cec, +0x1cee, 0x1cf1, +0x1cf5, 0x1cf6, +0x1d00, 0x1dbf, +0x1e00, 0x1f15, +0x1f18, 0x1f1d, +0x1f20, 0x1f45, +0x1f48, 0x1f4d, +0x1f50, 0x1f57, +0x1f59, 0x1f59, +0x1f5b, 0x1f5b, +0x1f5d, 0x1f5d, +0x1f5f, 0x1f7d, +0x1f80, 0x1fb4, +0x1fb6, 0x1fbc, +0x1fbe, 0x1fbe, +0x1fc2, 0x1fc4, +0x1fc6, 0x1fcc, +0x1fd0, 0x1fd3, +0x1fd6, 0x1fdb, +0x1fe0, 0x1fec, +0x1ff2, 0x1ff4, +0x1ff6, 0x1ffc, +0x2071, 0x2071, +0x207f, 0x207f, +0x2090, 0x209c, +0x2102, 0x2102, +0x2107, 0x2107, +0x210a, 0x2113, +0x2115, 0x2115, +0x2119, 0x211d, +0x2124, 0x2124, +0x2126, 0x2126, +0x2128, 0x2128, +0x212a, 0x212d, +0x212f, 0x2139, +0x213c, 0x213f, +0x2145, 0x2149, +0x214e, 0x214e, +0x2183, 0x2184, +0x2c00, 0x2c2e, +0x2c30, 0x2c5e, +0x2c60, 0x2ce4, +0x2ceb, 0x2cee, +0x2cf2, 0x2cf3, +0x2d00, 0x2d25, +0x2d27, 0x2d27, +0x2d2d, 0x2d2d, +0x2d30, 0x2d67, +0x2d6f, 0x2d6f, +0x2d80, 0x2d96, +0x2da0, 0x2da6, +0x2da8, 0x2dae, +0x2db0, 0x2db6, +0x2db8, 0x2dbe, +0x2dc0, 0x2dc6, +0x2dc8, 0x2dce, +0x2dd0, 0x2dd6, +0x2dd8, 0x2dde, +0x2e2f, 0x2e2f, +0x3005, 0x3006, +0x3031, 0x3035, +0x303b, 0x303c, +0x3041, 0x3096, +0x309d, 0x309f, +0x30a1, 0x30fa, +0x30fc, 0x30ff, +0x3105, 0x312f, +0x3131, 0x318e, +0x31a0, 0x31ba, +0x31f0, 0x31ff, +0x3400, 0x4db5, +0x4e00, 0x9fef, +0xa000, 0xa48c, +0xa4d0, 0xa4fd, +0xa500, 0xa60c, +0xa610, 0xa61f, +0xa62a, 0xa62b, +0xa640, 0xa66e, +0xa67f, 0xa69d, +0xa6a0, 0xa6e5, +0xa717, 0xa71f, +0xa722, 0xa788, +0xa78b, 0xa7b9, +0xa7f7, 0xa801, +0xa803, 0xa805, +0xa807, 0xa80a, +0xa80c, 0xa822, +0xa840, 0xa873, +0xa882, 0xa8b3, +0xa8f2, 0xa8f7, +0xa8fb, 0xa8fb, +0xa8fd, 0xa8fe, +0xa90a, 0xa925, +0xa930, 0xa946, +0xa960, 0xa97c, +0xa984, 0xa9b2, +0xa9cf, 0xa9cf, +0xa9e0, 0xa9e4, +0xa9e6, 0xa9ef, +0xa9fa, 0xa9fe, +0xaa00, 0xaa28, +0xaa40, 0xaa42, +0xaa44, 0xaa4b, +0xaa60, 0xaa76, +0xaa7a, 0xaa7a, +0xaa7e, 0xaaaf, +0xaab1, 0xaab1, +0xaab5, 0xaab6, +0xaab9, 0xaabd, +0xaac0, 0xaac0, +0xaac2, 0xaac2, +0xaadb, 0xaadd, +0xaae0, 0xaaea, +0xaaf2, 0xaaf4, +0xab01, 0xab06, +0xab09, 0xab0e, +0xab11, 0xab16, +0xab20, 0xab26, +0xab28, 0xab2e, +0xab30, 0xab5a, +0xab5c, 0xab65, +0xab70, 0xabe2, +0xac00, 0xd7a3, +0xd7b0, 0xd7c6, +0xd7cb, 0xd7fb, +0xf900, 0xfa6d, +0xfa70, 0xfad9, +0xfb00, 0xfb06, +0xfb13, 0xfb17, +0xfb1d, 0xfb1d, +0xfb1f, 0xfb28, +0xfb2a, 0xfb36, +0xfb38, 0xfb3c, +0xfb3e, 0xfb3e, +0xfb40, 0xfb41, +0xfb43, 0xfb44, +0xfb46, 0xfbb1, +0xfbd3, 0xfd3d, +0xfd50, 0xfd8f, +0xfd92, 0xfdc7, +0xfdf0, 0xfdfb, +0xfe70, 0xfe74, +0xfe76, 0xfefc, +0xff21, 0xff3a, +0xff41, 0xff5a, +0xff66, 0xffbe, +0xffc2, 0xffc7, +0xffca, 0xffcf, +0xffd2, 0xffd7, +0xffda, 0xffdc, +0x10000, 0x1000b, +0x1000d, 0x10026, +0x10028, 0x1003a, +0x1003c, 0x1003d, +0x1003f, 0x1004d, +0x10050, 0x1005d, +0x10080, 0x100fa, +0x10280, 0x1029c, +0x102a0, 0x102d0, +0x10300, 0x1031f, +0x1032d, 0x10340, +0x10342, 0x10349, +0x10350, 0x10375, +0x10380, 0x1039d, +0x103a0, 0x103c3, +0x103c8, 0x103cf, +0x10400, 0x1049d, +0x104b0, 0x104d3, +0x104d8, 0x104fb, +0x10500, 0x10527, +0x10530, 0x10563, +0x10600, 0x10736, +0x10740, 0x10755, +0x10760, 0x10767, +0x10800, 0x10805, +0x10808, 0x10808, +0x1080a, 0x10835, +0x10837, 0x10838, +0x1083c, 0x1083c, +0x1083f, 0x10855, +0x10860, 0x10876, +0x10880, 0x1089e, +0x108e0, 0x108f2, +0x108f4, 0x108f5, +0x10900, 0x10915, +0x10920, 0x10939, +0x10980, 0x109b7, +0x109be, 0x109bf, +0x10a00, 0x10a00, +0x10a10, 0x10a13, +0x10a15, 0x10a17, +0x10a19, 0x10a35, +0x10a60, 0x10a7c, +0x10a80, 0x10a9c, +0x10ac0, 0x10ac7, +0x10ac9, 0x10ae4, +0x10b00, 0x10b35, +0x10b40, 0x10b55, +0x10b60, 0x10b72, +0x10b80, 0x10b91, +0x10c00, 0x10c48, +0x10c80, 0x10cb2, +0x10cc0, 0x10cf2, +0x10d00, 0x10d23, +0x10f00, 0x10f1c, +0x10f27, 0x10f27, +0x10f30, 0x10f45, +0x11003, 0x11037, +0x11083, 0x110af, +0x110d0, 0x110e8, +0x11103, 0x11126, +0x11144, 0x11144, +0x11150, 0x11172, +0x11176, 0x11176, +0x11183, 0x111b2, +0x111c1, 0x111c4, +0x111da, 0x111da, +0x111dc, 0x111dc, +0x11200, 0x11211, +0x11213, 0x1122b, +0x11280, 0x11286, +0x11288, 0x11288, +0x1128a, 0x1128d, +0x1128f, 0x1129d, +0x1129f, 0x112a8, +0x112b0, 0x112de, +0x11305, 0x1130c, +0x1130f, 0x11310, +0x11313, 0x11328, +0x1132a, 0x11330, +0x11332, 0x11333, +0x11335, 0x11339, +0x1133d, 0x1133d, +0x11350, 0x11350, +0x1135d, 0x11361, +0x11400, 0x11434, +0x11447, 0x1144a, +0x11480, 0x114af, +0x114c4, 0x114c5, +0x114c7, 0x114c7, +0x11580, 0x115ae, +0x115d8, 0x115db, +0x11600, 0x1162f, +0x11644, 0x11644, +0x11680, 0x116aa, +0x11700, 0x1171a, +0x11800, 0x1182b, +0x118a0, 0x118df, +0x118ff, 0x118ff, +0x11a00, 0x11a00, +0x11a0b, 0x11a32, +0x11a3a, 0x11a3a, +0x11a50, 0x11a50, +0x11a5c, 0x11a83, +0x11a86, 0x11a89, +0x11a9d, 0x11a9d, +0x11ac0, 0x11af8, +0x11c00, 0x11c08, +0x11c0a, 0x11c2e, +0x11c40, 0x11c40, +0x11c72, 0x11c8f, +0x11d00, 0x11d06, +0x11d08, 0x11d09, +0x11d0b, 0x11d30, +0x11d46, 0x11d46, +0x11d60, 0x11d65, +0x11d67, 0x11d68, +0x11d6a, 0x11d89, +0x11d98, 0x11d98, +0x11ee0, 0x11ef2, +0x12000, 0x12399, +0x12480, 0x12543, +0x13000, 0x1342e, +0x14400, 0x14646, +0x16800, 0x16a38, +0x16a40, 0x16a5e, +0x16ad0, 0x16aed, +0x16b00, 0x16b2f, +0x16b40, 0x16b43, +0x16b63, 0x16b77, +0x16b7d, 0x16b8f, +0x16e40, 0x16e7f, +0x16f00, 0x16f44, +0x16f50, 0x16f50, +0x16f93, 0x16f9f, +0x16fe0, 0x16fe1, +0x17000, 0x187f1, +0x18800, 0x18af2, +0x1b000, 0x1b11e, +0x1b170, 0x1b2fb, +0x1bc00, 0x1bc6a, +0x1bc70, 0x1bc7c, +0x1bc80, 0x1bc88, +0x1bc90, 0x1bc99, +0x1d400, 0x1d454, +0x1d456, 0x1d49c, +0x1d49e, 0x1d49f, +0x1d4a2, 0x1d4a2, +0x1d4a5, 0x1d4a6, +0x1d4a9, 0x1d4ac, +0x1d4ae, 0x1d4b9, +0x1d4bb, 0x1d4bb, +0x1d4bd, 0x1d4c3, +0x1d4c5, 0x1d505, +0x1d507, 0x1d50a, +0x1d50d, 0x1d514, +0x1d516, 0x1d51c, +0x1d51e, 0x1d539, +0x1d53b, 0x1d53e, +0x1d540, 0x1d544, +0x1d546, 0x1d546, +0x1d54a, 0x1d550, +0x1d552, 0x1d6a5, +0x1d6a8, 0x1d6c0, +0x1d6c2, 0x1d6da, +0x1d6dc, 0x1d6fa, +0x1d6fc, 0x1d714, +0x1d716, 0x1d734, +0x1d736, 0x1d74e, +0x1d750, 0x1d76e, +0x1d770, 0x1d788, +0x1d78a, 0x1d7a8, +0x1d7aa, 0x1d7c2, +0x1d7c4, 0x1d7cb, +0x1e800, 0x1e8c4, +0x1e900, 0x1e943, +0x1ee00, 0x1ee03, +0x1ee05, 0x1ee1f, +0x1ee21, 0x1ee22, +0x1ee24, 0x1ee24, +0x1ee27, 0x1ee27, +0x1ee29, 0x1ee32, +0x1ee34, 0x1ee37, +0x1ee39, 0x1ee39, +0x1ee3b, 0x1ee3b, +0x1ee42, 0x1ee42, +0x1ee47, 0x1ee47, +0x1ee49, 0x1ee49, +0x1ee4b, 0x1ee4b, +0x1ee4d, 0x1ee4f, +0x1ee51, 0x1ee52, +0x1ee54, 0x1ee54, +0x1ee57, 0x1ee57, +0x1ee59, 0x1ee59, +0x1ee5b, 0x1ee5b, +0x1ee5d, 0x1ee5d, +0x1ee5f, 0x1ee5f, +0x1ee61, 0x1ee62, +0x1ee64, 0x1ee64, +0x1ee67, 0x1ee6a, +0x1ee6c, 0x1ee72, +0x1ee74, 0x1ee77, +0x1ee79, 0x1ee7c, +0x1ee7e, 0x1ee7e, +0x1ee80, 0x1ee89, +0x1ee8b, 0x1ee9b, +0x1eea1, 0x1eea3, +0x1eea5, 0x1eea9, +0x1eeab, 0x1eebb, +0x20000, 0x2a6d6, +0x2a700, 0x2b734, +0x2b740, 0x2b81d, +0x2b820, 0x2cea1, +0x2ceb0, 0x2ebe0, +0x2f800, 0x2fa1d, +}; /* END of CR_L */ + +/* PROPERTY: 'LC': General Category */ +static const OnigCodePoint +CR_LC[] = { 130, +0x0041, 0x005a, +0x0061, 0x007a, +0x00b5, 0x00b5, +0x00c0, 0x00d6, +0x00d8, 0x00f6, +0x00f8, 0x01ba, +0x01bc, 0x01bf, +0x01c4, 0x0293, +0x0295, 0x02af, +0x0370, 0x0373, +0x0376, 0x0377, +0x037b, 0x037d, +0x037f, 0x037f, +0x0386, 0x0386, +0x0388, 0x038a, +0x038c, 0x038c, +0x038e, 0x03a1, +0x03a3, 0x03f5, +0x03f7, 0x0481, +0x048a, 0x052f, +0x0531, 0x0556, +0x0560, 0x0588, +0x10a0, 0x10c5, +0x10c7, 0x10c7, +0x10cd, 0x10cd, +0x10d0, 0x10fa, +0x10fd, 0x10ff, +0x13a0, 0x13f5, +0x13f8, 0x13fd, +0x1c80, 0x1c88, +0x1c90, 0x1cba, +0x1cbd, 0x1cbf, +0x1d00, 0x1d2b, +0x1d6b, 0x1d77, +0x1d79, 0x1d9a, +0x1e00, 0x1f15, +0x1f18, 0x1f1d, +0x1f20, 0x1f45, +0x1f48, 0x1f4d, +0x1f50, 0x1f57, +0x1f59, 0x1f59, +0x1f5b, 0x1f5b, +0x1f5d, 0x1f5d, +0x1f5f, 0x1f7d, +0x1f80, 0x1fb4, +0x1fb6, 0x1fbc, +0x1fbe, 0x1fbe, +0x1fc2, 0x1fc4, +0x1fc6, 0x1fcc, +0x1fd0, 0x1fd3, +0x1fd6, 0x1fdb, +0x1fe0, 0x1fec, +0x1ff2, 0x1ff4, +0x1ff6, 0x1ffc, +0x2102, 0x2102, +0x2107, 0x2107, +0x210a, 0x2113, +0x2115, 0x2115, +0x2119, 0x211d, +0x2124, 0x2124, +0x2126, 0x2126, +0x2128, 0x2128, +0x212a, 0x212d, +0x212f, 0x2134, +0x2139, 0x2139, +0x213c, 0x213f, +0x2145, 0x2149, +0x214e, 0x214e, +0x2183, 0x2184, +0x2c00, 0x2c2e, +0x2c30, 0x2c5e, +0x2c60, 0x2c7b, +0x2c7e, 0x2ce4, +0x2ceb, 0x2cee, +0x2cf2, 0x2cf3, +0x2d00, 0x2d25, +0x2d27, 0x2d27, +0x2d2d, 0x2d2d, +0xa640, 0xa66d, +0xa680, 0xa69b, +0xa722, 0xa76f, +0xa771, 0xa787, +0xa78b, 0xa78e, +0xa790, 0xa7b9, +0xa7fa, 0xa7fa, +0xab30, 0xab5a, +0xab60, 0xab65, +0xab70, 0xabbf, +0xfb00, 0xfb06, +0xfb13, 0xfb17, +0xff21, 0xff3a, +0xff41, 0xff5a, +0x10400, 0x1044f, +0x104b0, 0x104d3, +0x104d8, 0x104fb, +0x10c80, 0x10cb2, +0x10cc0, 0x10cf2, +0x118a0, 0x118df, +0x16e40, 0x16e7f, +0x1d400, 0x1d454, +0x1d456, 0x1d49c, +0x1d49e, 0x1d49f, +0x1d4a2, 0x1d4a2, +0x1d4a5, 0x1d4a6, +0x1d4a9, 0x1d4ac, +0x1d4ae, 0x1d4b9, +0x1d4bb, 0x1d4bb, +0x1d4bd, 0x1d4c3, +0x1d4c5, 0x1d505, +0x1d507, 0x1d50a, +0x1d50d, 0x1d514, +0x1d516, 0x1d51c, +0x1d51e, 0x1d539, +0x1d53b, 0x1d53e, +0x1d540, 0x1d544, +0x1d546, 0x1d546, +0x1d54a, 0x1d550, +0x1d552, 0x1d6a5, +0x1d6a8, 0x1d6c0, +0x1d6c2, 0x1d6da, +0x1d6dc, 0x1d6fa, +0x1d6fc, 0x1d714, +0x1d716, 0x1d734, +0x1d736, 0x1d74e, +0x1d750, 0x1d76e, +0x1d770, 0x1d788, +0x1d78a, 0x1d7a8, +0x1d7aa, 0x1d7c2, +0x1d7c4, 0x1d7cb, +0x1e900, 0x1e943, +}; /* END of CR_LC */ + +/* PROPERTY: 'Lao': Script */ +static const OnigCodePoint +CR_Lao[] = { 18, +0x0e81, 0x0e82, +0x0e84, 0x0e84, +0x0e87, 0x0e88, +0x0e8a, 0x0e8a, +0x0e8d, 0x0e8d, +0x0e94, 0x0e97, +0x0e99, 0x0e9f, +0x0ea1, 0x0ea3, +0x0ea5, 0x0ea5, +0x0ea7, 0x0ea7, +0x0eaa, 0x0eab, +0x0ead, 0x0eb9, +0x0ebb, 0x0ebd, +0x0ec0, 0x0ec4, +0x0ec6, 0x0ec6, +0x0ec8, 0x0ecd, +0x0ed0, 0x0ed9, +0x0edc, 0x0edf, +}; /* END of CR_Lao */ + +/* PROPERTY: 'Latin': Script */ +static const OnigCodePoint +CR_Latin[] = { 30, +0x0041, 0x005a, +0x0061, 0x007a, +0x00aa, 0x00aa, +0x00ba, 0x00ba, +0x00c0, 0x00d6, +0x00d8, 0x00f6, +0x00f8, 0x02b8, +0x02e0, 0x02e4, +0x1d00, 0x1d25, +0x1d2c, 0x1d5c, +0x1d62, 0x1d65, +0x1d6b, 0x1d77, +0x1d79, 0x1dbe, +0x1e00, 0x1eff, +0x2071, 0x2071, +0x207f, 0x207f, +0x2090, 0x209c, +0x212a, 0x212b, +0x2132, 0x2132, +0x214e, 0x214e, +0x2160, 0x2188, +0x2c60, 0x2c7f, +0xa722, 0xa787, +0xa78b, 0xa7b9, +0xa7f7, 0xa7ff, +0xab30, 0xab5a, +0xab5c, 0xab64, +0xfb00, 0xfb06, +0xff21, 0xff3a, +0xff41, 0xff5a, +}; /* END of CR_Latin */ + +/* PROPERTY: 'Lepcha': Script */ +static const OnigCodePoint +CR_Lepcha[] = { 3, +0x1c00, 0x1c37, +0x1c3b, 0x1c49, +0x1c4d, 0x1c4f, +}; /* END of CR_Lepcha */ + +/* PROPERTY: 'Limbu': Script */ +static const OnigCodePoint +CR_Limbu[] = { 5, +0x1900, 0x191e, +0x1920, 0x192b, +0x1930, 0x193b, +0x1940, 0x1940, +0x1944, 0x194f, +}; /* END of CR_Limbu */ + +/* PROPERTY: 'Linear_A': Script */ +static const OnigCodePoint +CR_Linear_A[] = { 3, +0x10600, 0x10736, +0x10740, 0x10755, +0x10760, 0x10767, +}; /* END of CR_Linear_A */ + +/* PROPERTY: 'Linear_B': Script */ +static const OnigCodePoint +CR_Linear_B[] = { 7, +0x10000, 0x1000b, +0x1000d, 0x10026, +0x10028, 0x1003a, +0x1003c, 0x1003d, +0x1003f, 0x1004d, +0x10050, 0x1005d, +0x10080, 0x100fa, +}; /* END of CR_Linear_B */ + +/* PROPERTY: 'Lisu': Script */ +static const OnigCodePoint +CR_Lisu[] = { 1, +0xa4d0, 0xa4ff, +}; /* END of CR_Lisu */ + +/* PROPERTY: 'Ll': General Category */ +static const OnigCodePoint +CR_Ll[] = { 638, +0x0061, 0x007a, +0x00b5, 0x00b5, +0x00df, 0x00f6, +0x00f8, 0x00ff, +0x0101, 0x0101, +0x0103, 0x0103, +0x0105, 0x0105, +0x0107, 0x0107, +0x0109, 0x0109, +0x010b, 0x010b, +0x010d, 0x010d, +0x010f, 0x010f, +0x0111, 0x0111, +0x0113, 0x0113, +0x0115, 0x0115, +0x0117, 0x0117, +0x0119, 0x0119, +0x011b, 0x011b, +0x011d, 0x011d, +0x011f, 0x011f, +0x0121, 0x0121, +0x0123, 0x0123, +0x0125, 0x0125, +0x0127, 0x0127, +0x0129, 0x0129, +0x012b, 0x012b, +0x012d, 0x012d, +0x012f, 0x012f, +0x0131, 0x0131, +0x0133, 0x0133, +0x0135, 0x0135, +0x0137, 0x0138, +0x013a, 0x013a, +0x013c, 0x013c, +0x013e, 0x013e, +0x0140, 0x0140, +0x0142, 0x0142, +0x0144, 0x0144, +0x0146, 0x0146, +0x0148, 0x0149, +0x014b, 0x014b, +0x014d, 0x014d, +0x014f, 0x014f, +0x0151, 0x0151, +0x0153, 0x0153, +0x0155, 0x0155, +0x0157, 0x0157, +0x0159, 0x0159, +0x015b, 0x015b, +0x015d, 0x015d, +0x015f, 0x015f, +0x0161, 0x0161, +0x0163, 0x0163, +0x0165, 0x0165, +0x0167, 0x0167, +0x0169, 0x0169, +0x016b, 0x016b, +0x016d, 0x016d, +0x016f, 0x016f, +0x0171, 0x0171, +0x0173, 0x0173, +0x0175, 0x0175, +0x0177, 0x0177, +0x017a, 0x017a, +0x017c, 0x017c, +0x017e, 0x0180, +0x0183, 0x0183, +0x0185, 0x0185, +0x0188, 0x0188, +0x018c, 0x018d, +0x0192, 0x0192, +0x0195, 0x0195, +0x0199, 0x019b, +0x019e, 0x019e, +0x01a1, 0x01a1, +0x01a3, 0x01a3, +0x01a5, 0x01a5, +0x01a8, 0x01a8, +0x01aa, 0x01ab, +0x01ad, 0x01ad, +0x01b0, 0x01b0, +0x01b4, 0x01b4, +0x01b6, 0x01b6, +0x01b9, 0x01ba, +0x01bd, 0x01bf, +0x01c6, 0x01c6, +0x01c9, 0x01c9, +0x01cc, 0x01cc, +0x01ce, 0x01ce, +0x01d0, 0x01d0, +0x01d2, 0x01d2, +0x01d4, 0x01d4, +0x01d6, 0x01d6, +0x01d8, 0x01d8, +0x01da, 0x01da, +0x01dc, 0x01dd, +0x01df, 0x01df, +0x01e1, 0x01e1, +0x01e3, 0x01e3, +0x01e5, 0x01e5, +0x01e7, 0x01e7, +0x01e9, 0x01e9, +0x01eb, 0x01eb, +0x01ed, 0x01ed, +0x01ef, 0x01f0, +0x01f3, 0x01f3, +0x01f5, 0x01f5, +0x01f9, 0x01f9, +0x01fb, 0x01fb, +0x01fd, 0x01fd, +0x01ff, 0x01ff, +0x0201, 0x0201, +0x0203, 0x0203, +0x0205, 0x0205, +0x0207, 0x0207, +0x0209, 0x0209, +0x020b, 0x020b, +0x020d, 0x020d, +0x020f, 0x020f, +0x0211, 0x0211, +0x0213, 0x0213, +0x0215, 0x0215, +0x0217, 0x0217, +0x0219, 0x0219, +0x021b, 0x021b, +0x021d, 0x021d, +0x021f, 0x021f, +0x0221, 0x0221, +0x0223, 0x0223, +0x0225, 0x0225, +0x0227, 0x0227, +0x0229, 0x0229, +0x022b, 0x022b, +0x022d, 0x022d, +0x022f, 0x022f, +0x0231, 0x0231, +0x0233, 0x0239, +0x023c, 0x023c, +0x023f, 0x0240, +0x0242, 0x0242, +0x0247, 0x0247, +0x0249, 0x0249, +0x024b, 0x024b, +0x024d, 0x024d, +0x024f, 0x0293, +0x0295, 0x02af, +0x0371, 0x0371, +0x0373, 0x0373, +0x0377, 0x0377, +0x037b, 0x037d, +0x0390, 0x0390, +0x03ac, 0x03ce, +0x03d0, 0x03d1, +0x03d5, 0x03d7, +0x03d9, 0x03d9, +0x03db, 0x03db, +0x03dd, 0x03dd, +0x03df, 0x03df, +0x03e1, 0x03e1, +0x03e3, 0x03e3, +0x03e5, 0x03e5, +0x03e7, 0x03e7, +0x03e9, 0x03e9, +0x03eb, 0x03eb, +0x03ed, 0x03ed, +0x03ef, 0x03f3, +0x03f5, 0x03f5, +0x03f8, 0x03f8, +0x03fb, 0x03fc, +0x0430, 0x045f, +0x0461, 0x0461, +0x0463, 0x0463, +0x0465, 0x0465, +0x0467, 0x0467, +0x0469, 0x0469, +0x046b, 0x046b, +0x046d, 0x046d, +0x046f, 0x046f, +0x0471, 0x0471, +0x0473, 0x0473, +0x0475, 0x0475, +0x0477, 0x0477, +0x0479, 0x0479, +0x047b, 0x047b, +0x047d, 0x047d, +0x047f, 0x047f, +0x0481, 0x0481, +0x048b, 0x048b, +0x048d, 0x048d, +0x048f, 0x048f, +0x0491, 0x0491, +0x0493, 0x0493, +0x0495, 0x0495, +0x0497, 0x0497, +0x0499, 0x0499, +0x049b, 0x049b, +0x049d, 0x049d, +0x049f, 0x049f, +0x04a1, 0x04a1, +0x04a3, 0x04a3, +0x04a5, 0x04a5, +0x04a7, 0x04a7, +0x04a9, 0x04a9, +0x04ab, 0x04ab, +0x04ad, 0x04ad, +0x04af, 0x04af, +0x04b1, 0x04b1, +0x04b3, 0x04b3, +0x04b5, 0x04b5, +0x04b7, 0x04b7, +0x04b9, 0x04b9, +0x04bb, 0x04bb, +0x04bd, 0x04bd, +0x04bf, 0x04bf, +0x04c2, 0x04c2, +0x04c4, 0x04c4, +0x04c6, 0x04c6, +0x04c8, 0x04c8, +0x04ca, 0x04ca, +0x04cc, 0x04cc, +0x04ce, 0x04cf, +0x04d1, 0x04d1, +0x04d3, 0x04d3, +0x04d5, 0x04d5, +0x04d7, 0x04d7, +0x04d9, 0x04d9, +0x04db, 0x04db, +0x04dd, 0x04dd, +0x04df, 0x04df, +0x04e1, 0x04e1, +0x04e3, 0x04e3, +0x04e5, 0x04e5, +0x04e7, 0x04e7, +0x04e9, 0x04e9, +0x04eb, 0x04eb, +0x04ed, 0x04ed, +0x04ef, 0x04ef, +0x04f1, 0x04f1, +0x04f3, 0x04f3, +0x04f5, 0x04f5, +0x04f7, 0x04f7, +0x04f9, 0x04f9, +0x04fb, 0x04fb, +0x04fd, 0x04fd, +0x04ff, 0x04ff, +0x0501, 0x0501, +0x0503, 0x0503, +0x0505, 0x0505, +0x0507, 0x0507, +0x0509, 0x0509, +0x050b, 0x050b, +0x050d, 0x050d, +0x050f, 0x050f, +0x0511, 0x0511, +0x0513, 0x0513, +0x0515, 0x0515, +0x0517, 0x0517, +0x0519, 0x0519, +0x051b, 0x051b, +0x051d, 0x051d, +0x051f, 0x051f, +0x0521, 0x0521, +0x0523, 0x0523, +0x0525, 0x0525, +0x0527, 0x0527, +0x0529, 0x0529, +0x052b, 0x052b, +0x052d, 0x052d, +0x052f, 0x052f, +0x0560, 0x0588, +0x10d0, 0x10fa, +0x10fd, 0x10ff, +0x13f8, 0x13fd, +0x1c80, 0x1c88, +0x1d00, 0x1d2b, +0x1d6b, 0x1d77, +0x1d79, 0x1d9a, +0x1e01, 0x1e01, +0x1e03, 0x1e03, +0x1e05, 0x1e05, +0x1e07, 0x1e07, +0x1e09, 0x1e09, +0x1e0b, 0x1e0b, +0x1e0d, 0x1e0d, +0x1e0f, 0x1e0f, +0x1e11, 0x1e11, +0x1e13, 0x1e13, +0x1e15, 0x1e15, +0x1e17, 0x1e17, +0x1e19, 0x1e19, +0x1e1b, 0x1e1b, +0x1e1d, 0x1e1d, +0x1e1f, 0x1e1f, +0x1e21, 0x1e21, +0x1e23, 0x1e23, +0x1e25, 0x1e25, +0x1e27, 0x1e27, +0x1e29, 0x1e29, +0x1e2b, 0x1e2b, +0x1e2d, 0x1e2d, +0x1e2f, 0x1e2f, +0x1e31, 0x1e31, +0x1e33, 0x1e33, +0x1e35, 0x1e35, +0x1e37, 0x1e37, +0x1e39, 0x1e39, +0x1e3b, 0x1e3b, +0x1e3d, 0x1e3d, +0x1e3f, 0x1e3f, +0x1e41, 0x1e41, +0x1e43, 0x1e43, +0x1e45, 0x1e45, +0x1e47, 0x1e47, +0x1e49, 0x1e49, +0x1e4b, 0x1e4b, +0x1e4d, 0x1e4d, +0x1e4f, 0x1e4f, +0x1e51, 0x1e51, +0x1e53, 0x1e53, +0x1e55, 0x1e55, +0x1e57, 0x1e57, +0x1e59, 0x1e59, +0x1e5b, 0x1e5b, +0x1e5d, 0x1e5d, +0x1e5f, 0x1e5f, +0x1e61, 0x1e61, +0x1e63, 0x1e63, +0x1e65, 0x1e65, +0x1e67, 0x1e67, +0x1e69, 0x1e69, +0x1e6b, 0x1e6b, +0x1e6d, 0x1e6d, +0x1e6f, 0x1e6f, +0x1e71, 0x1e71, +0x1e73, 0x1e73, +0x1e75, 0x1e75, +0x1e77, 0x1e77, +0x1e79, 0x1e79, +0x1e7b, 0x1e7b, +0x1e7d, 0x1e7d, +0x1e7f, 0x1e7f, +0x1e81, 0x1e81, +0x1e83, 0x1e83, +0x1e85, 0x1e85, +0x1e87, 0x1e87, +0x1e89, 0x1e89, +0x1e8b, 0x1e8b, +0x1e8d, 0x1e8d, +0x1e8f, 0x1e8f, +0x1e91, 0x1e91, +0x1e93, 0x1e93, +0x1e95, 0x1e9d, +0x1e9f, 0x1e9f, +0x1ea1, 0x1ea1, +0x1ea3, 0x1ea3, +0x1ea5, 0x1ea5, +0x1ea7, 0x1ea7, +0x1ea9, 0x1ea9, +0x1eab, 0x1eab, +0x1ead, 0x1ead, +0x1eaf, 0x1eaf, +0x1eb1, 0x1eb1, +0x1eb3, 0x1eb3, +0x1eb5, 0x1eb5, +0x1eb7, 0x1eb7, +0x1eb9, 0x1eb9, +0x1ebb, 0x1ebb, +0x1ebd, 0x1ebd, +0x1ebf, 0x1ebf, +0x1ec1, 0x1ec1, +0x1ec3, 0x1ec3, +0x1ec5, 0x1ec5, +0x1ec7, 0x1ec7, +0x1ec9, 0x1ec9, +0x1ecb, 0x1ecb, +0x1ecd, 0x1ecd, +0x1ecf, 0x1ecf, +0x1ed1, 0x1ed1, +0x1ed3, 0x1ed3, +0x1ed5, 0x1ed5, +0x1ed7, 0x1ed7, +0x1ed9, 0x1ed9, +0x1edb, 0x1edb, +0x1edd, 0x1edd, +0x1edf, 0x1edf, +0x1ee1, 0x1ee1, +0x1ee3, 0x1ee3, +0x1ee5, 0x1ee5, +0x1ee7, 0x1ee7, +0x1ee9, 0x1ee9, +0x1eeb, 0x1eeb, +0x1eed, 0x1eed, +0x1eef, 0x1eef, +0x1ef1, 0x1ef1, +0x1ef3, 0x1ef3, +0x1ef5, 0x1ef5, +0x1ef7, 0x1ef7, +0x1ef9, 0x1ef9, +0x1efb, 0x1efb, +0x1efd, 0x1efd, +0x1eff, 0x1f07, +0x1f10, 0x1f15, +0x1f20, 0x1f27, +0x1f30, 0x1f37, +0x1f40, 0x1f45, +0x1f50, 0x1f57, +0x1f60, 0x1f67, +0x1f70, 0x1f7d, +0x1f80, 0x1f87, +0x1f90, 0x1f97, +0x1fa0, 0x1fa7, +0x1fb0, 0x1fb4, +0x1fb6, 0x1fb7, +0x1fbe, 0x1fbe, +0x1fc2, 0x1fc4, +0x1fc6, 0x1fc7, +0x1fd0, 0x1fd3, +0x1fd6, 0x1fd7, +0x1fe0, 0x1fe7, +0x1ff2, 0x1ff4, +0x1ff6, 0x1ff7, +0x210a, 0x210a, +0x210e, 0x210f, +0x2113, 0x2113, +0x212f, 0x212f, +0x2134, 0x2134, +0x2139, 0x2139, +0x213c, 0x213d, +0x2146, 0x2149, +0x214e, 0x214e, +0x2184, 0x2184, +0x2c30, 0x2c5e, +0x2c61, 0x2c61, +0x2c65, 0x2c66, +0x2c68, 0x2c68, +0x2c6a, 0x2c6a, +0x2c6c, 0x2c6c, +0x2c71, 0x2c71, +0x2c73, 0x2c74, +0x2c76, 0x2c7b, +0x2c81, 0x2c81, +0x2c83, 0x2c83, +0x2c85, 0x2c85, +0x2c87, 0x2c87, +0x2c89, 0x2c89, +0x2c8b, 0x2c8b, +0x2c8d, 0x2c8d, +0x2c8f, 0x2c8f, +0x2c91, 0x2c91, +0x2c93, 0x2c93, +0x2c95, 0x2c95, +0x2c97, 0x2c97, +0x2c99, 0x2c99, +0x2c9b, 0x2c9b, +0x2c9d, 0x2c9d, +0x2c9f, 0x2c9f, +0x2ca1, 0x2ca1, +0x2ca3, 0x2ca3, +0x2ca5, 0x2ca5, +0x2ca7, 0x2ca7, +0x2ca9, 0x2ca9, +0x2cab, 0x2cab, +0x2cad, 0x2cad, +0x2caf, 0x2caf, +0x2cb1, 0x2cb1, +0x2cb3, 0x2cb3, +0x2cb5, 0x2cb5, +0x2cb7, 0x2cb7, +0x2cb9, 0x2cb9, +0x2cbb, 0x2cbb, +0x2cbd, 0x2cbd, +0x2cbf, 0x2cbf, +0x2cc1, 0x2cc1, +0x2cc3, 0x2cc3, +0x2cc5, 0x2cc5, +0x2cc7, 0x2cc7, +0x2cc9, 0x2cc9, +0x2ccb, 0x2ccb, +0x2ccd, 0x2ccd, +0x2ccf, 0x2ccf, +0x2cd1, 0x2cd1, +0x2cd3, 0x2cd3, +0x2cd5, 0x2cd5, +0x2cd7, 0x2cd7, +0x2cd9, 0x2cd9, +0x2cdb, 0x2cdb, +0x2cdd, 0x2cdd, +0x2cdf, 0x2cdf, +0x2ce1, 0x2ce1, +0x2ce3, 0x2ce4, +0x2cec, 0x2cec, +0x2cee, 0x2cee, +0x2cf3, 0x2cf3, +0x2d00, 0x2d25, +0x2d27, 0x2d27, +0x2d2d, 0x2d2d, +0xa641, 0xa641, +0xa643, 0xa643, +0xa645, 0xa645, +0xa647, 0xa647, +0xa649, 0xa649, +0xa64b, 0xa64b, +0xa64d, 0xa64d, +0xa64f, 0xa64f, +0xa651, 0xa651, +0xa653, 0xa653, +0xa655, 0xa655, +0xa657, 0xa657, +0xa659, 0xa659, +0xa65b, 0xa65b, +0xa65d, 0xa65d, +0xa65f, 0xa65f, +0xa661, 0xa661, +0xa663, 0xa663, +0xa665, 0xa665, +0xa667, 0xa667, +0xa669, 0xa669, +0xa66b, 0xa66b, +0xa66d, 0xa66d, +0xa681, 0xa681, +0xa683, 0xa683, +0xa685, 0xa685, +0xa687, 0xa687, +0xa689, 0xa689, +0xa68b, 0xa68b, +0xa68d, 0xa68d, +0xa68f, 0xa68f, +0xa691, 0xa691, +0xa693, 0xa693, +0xa695, 0xa695, +0xa697, 0xa697, +0xa699, 0xa699, +0xa69b, 0xa69b, +0xa723, 0xa723, +0xa725, 0xa725, +0xa727, 0xa727, +0xa729, 0xa729, +0xa72b, 0xa72b, +0xa72d, 0xa72d, +0xa72f, 0xa731, +0xa733, 0xa733, +0xa735, 0xa735, +0xa737, 0xa737, +0xa739, 0xa739, +0xa73b, 0xa73b, +0xa73d, 0xa73d, +0xa73f, 0xa73f, +0xa741, 0xa741, +0xa743, 0xa743, +0xa745, 0xa745, +0xa747, 0xa747, +0xa749, 0xa749, +0xa74b, 0xa74b, +0xa74d, 0xa74d, +0xa74f, 0xa74f, +0xa751, 0xa751, +0xa753, 0xa753, +0xa755, 0xa755, +0xa757, 0xa757, +0xa759, 0xa759, +0xa75b, 0xa75b, +0xa75d, 0xa75d, +0xa75f, 0xa75f, +0xa761, 0xa761, +0xa763, 0xa763, +0xa765, 0xa765, +0xa767, 0xa767, +0xa769, 0xa769, +0xa76b, 0xa76b, +0xa76d, 0xa76d, +0xa76f, 0xa76f, +0xa771, 0xa778, +0xa77a, 0xa77a, +0xa77c, 0xa77c, +0xa77f, 0xa77f, +0xa781, 0xa781, +0xa783, 0xa783, +0xa785, 0xa785, +0xa787, 0xa787, +0xa78c, 0xa78c, +0xa78e, 0xa78e, +0xa791, 0xa791, +0xa793, 0xa795, +0xa797, 0xa797, +0xa799, 0xa799, +0xa79b, 0xa79b, +0xa79d, 0xa79d, +0xa79f, 0xa79f, +0xa7a1, 0xa7a1, +0xa7a3, 0xa7a3, +0xa7a5, 0xa7a5, +0xa7a7, 0xa7a7, +0xa7a9, 0xa7a9, +0xa7af, 0xa7af, +0xa7b5, 0xa7b5, +0xa7b7, 0xa7b7, +0xa7b9, 0xa7b9, +0xa7fa, 0xa7fa, +0xab30, 0xab5a, +0xab60, 0xab65, +0xab70, 0xabbf, +0xfb00, 0xfb06, +0xfb13, 0xfb17, +0xff41, 0xff5a, +0x10428, 0x1044f, +0x104d8, 0x104fb, +0x10cc0, 0x10cf2, +0x118c0, 0x118df, +0x16e60, 0x16e7f, +0x1d41a, 0x1d433, +0x1d44e, 0x1d454, +0x1d456, 0x1d467, +0x1d482, 0x1d49b, +0x1d4b6, 0x1d4b9, +0x1d4bb, 0x1d4bb, +0x1d4bd, 0x1d4c3, +0x1d4c5, 0x1d4cf, +0x1d4ea, 0x1d503, +0x1d51e, 0x1d537, +0x1d552, 0x1d56b, +0x1d586, 0x1d59f, +0x1d5ba, 0x1d5d3, +0x1d5ee, 0x1d607, +0x1d622, 0x1d63b, +0x1d656, 0x1d66f, +0x1d68a, 0x1d6a5, +0x1d6c2, 0x1d6da, +0x1d6dc, 0x1d6e1, +0x1d6fc, 0x1d714, +0x1d716, 0x1d71b, +0x1d736, 0x1d74e, +0x1d750, 0x1d755, +0x1d770, 0x1d788, +0x1d78a, 0x1d78f, +0x1d7aa, 0x1d7c2, +0x1d7c4, 0x1d7c9, +0x1d7cb, 0x1d7cb, +0x1e922, 0x1e943, +}; /* END of CR_Ll */ + +/* PROPERTY: 'Lm': General Category */ +static const OnigCodePoint +CR_Lm[] = { 57, +0x02b0, 0x02c1, +0x02c6, 0x02d1, +0x02e0, 0x02e4, +0x02ec, 0x02ec, +0x02ee, 0x02ee, +0x0374, 0x0374, +0x037a, 0x037a, +0x0559, 0x0559, +0x0640, 0x0640, +0x06e5, 0x06e6, +0x07f4, 0x07f5, +0x07fa, 0x07fa, +0x081a, 0x081a, +0x0824, 0x0824, +0x0828, 0x0828, +0x0971, 0x0971, +0x0e46, 0x0e46, +0x0ec6, 0x0ec6, +0x10fc, 0x10fc, +0x17d7, 0x17d7, +0x1843, 0x1843, +0x1aa7, 0x1aa7, +0x1c78, 0x1c7d, +0x1d2c, 0x1d6a, +0x1d78, 0x1d78, +0x1d9b, 0x1dbf, +0x2071, 0x2071, +0x207f, 0x207f, +0x2090, 0x209c, +0x2c7c, 0x2c7d, +0x2d6f, 0x2d6f, +0x2e2f, 0x2e2f, +0x3005, 0x3005, +0x3031, 0x3035, +0x303b, 0x303b, +0x309d, 0x309e, +0x30fc, 0x30fe, +0xa015, 0xa015, +0xa4f8, 0xa4fd, +0xa60c, 0xa60c, +0xa67f, 0xa67f, +0xa69c, 0xa69d, +0xa717, 0xa71f, +0xa770, 0xa770, +0xa788, 0xa788, +0xa7f8, 0xa7f9, +0xa9cf, 0xa9cf, +0xa9e6, 0xa9e6, +0xaa70, 0xaa70, +0xaadd, 0xaadd, +0xaaf3, 0xaaf4, +0xab5c, 0xab5f, +0xff70, 0xff70, +0xff9e, 0xff9f, +0x16b40, 0x16b43, +0x16f93, 0x16f9f, +0x16fe0, 0x16fe1, +}; /* END of CR_Lm */ + +/* PROPERTY: 'Lo': General Category */ +static const OnigCodePoint +CR_Lo[] = { 470, +0x00aa, 0x00aa, +0x00ba, 0x00ba, +0x01bb, 0x01bb, +0x01c0, 0x01c3, +0x0294, 0x0294, +0x05d0, 0x05ea, +0x05ef, 0x05f2, +0x0620, 0x063f, +0x0641, 0x064a, +0x066e, 0x066f, +0x0671, 0x06d3, +0x06d5, 0x06d5, +0x06ee, 0x06ef, +0x06fa, 0x06fc, +0x06ff, 0x06ff, +0x0710, 0x0710, +0x0712, 0x072f, +0x074d, 0x07a5, +0x07b1, 0x07b1, +0x07ca, 0x07ea, +0x0800, 0x0815, +0x0840, 0x0858, +0x0860, 0x086a, +0x08a0, 0x08b4, +0x08b6, 0x08bd, +0x0904, 0x0939, +0x093d, 0x093d, +0x0950, 0x0950, +0x0958, 0x0961, +0x0972, 0x0980, +0x0985, 0x098c, +0x098f, 0x0990, +0x0993, 0x09a8, +0x09aa, 0x09b0, +0x09b2, 0x09b2, +0x09b6, 0x09b9, +0x09bd, 0x09bd, +0x09ce, 0x09ce, +0x09dc, 0x09dd, +0x09df, 0x09e1, +0x09f0, 0x09f1, +0x09fc, 0x09fc, +0x0a05, 0x0a0a, +0x0a0f, 0x0a10, +0x0a13, 0x0a28, +0x0a2a, 0x0a30, +0x0a32, 0x0a33, +0x0a35, 0x0a36, +0x0a38, 0x0a39, +0x0a59, 0x0a5c, +0x0a5e, 0x0a5e, +0x0a72, 0x0a74, +0x0a85, 0x0a8d, +0x0a8f, 0x0a91, +0x0a93, 0x0aa8, +0x0aaa, 0x0ab0, +0x0ab2, 0x0ab3, +0x0ab5, 0x0ab9, +0x0abd, 0x0abd, +0x0ad0, 0x0ad0, +0x0ae0, 0x0ae1, +0x0af9, 0x0af9, +0x0b05, 0x0b0c, +0x0b0f, 0x0b10, +0x0b13, 0x0b28, +0x0b2a, 0x0b30, +0x0b32, 0x0b33, +0x0b35, 0x0b39, +0x0b3d, 0x0b3d, +0x0b5c, 0x0b5d, +0x0b5f, 0x0b61, +0x0b71, 0x0b71, +0x0b83, 0x0b83, +0x0b85, 0x0b8a, +0x0b8e, 0x0b90, +0x0b92, 0x0b95, +0x0b99, 0x0b9a, +0x0b9c, 0x0b9c, +0x0b9e, 0x0b9f, +0x0ba3, 0x0ba4, +0x0ba8, 0x0baa, +0x0bae, 0x0bb9, +0x0bd0, 0x0bd0, +0x0c05, 0x0c0c, +0x0c0e, 0x0c10, +0x0c12, 0x0c28, +0x0c2a, 0x0c39, +0x0c3d, 0x0c3d, +0x0c58, 0x0c5a, +0x0c60, 0x0c61, +0x0c80, 0x0c80, +0x0c85, 0x0c8c, +0x0c8e, 0x0c90, +0x0c92, 0x0ca8, +0x0caa, 0x0cb3, +0x0cb5, 0x0cb9, +0x0cbd, 0x0cbd, +0x0cde, 0x0cde, +0x0ce0, 0x0ce1, +0x0cf1, 0x0cf2, +0x0d05, 0x0d0c, +0x0d0e, 0x0d10, +0x0d12, 0x0d3a, +0x0d3d, 0x0d3d, +0x0d4e, 0x0d4e, +0x0d54, 0x0d56, +0x0d5f, 0x0d61, +0x0d7a, 0x0d7f, +0x0d85, 0x0d96, +0x0d9a, 0x0db1, +0x0db3, 0x0dbb, +0x0dbd, 0x0dbd, +0x0dc0, 0x0dc6, +0x0e01, 0x0e30, +0x0e32, 0x0e33, +0x0e40, 0x0e45, +0x0e81, 0x0e82, +0x0e84, 0x0e84, +0x0e87, 0x0e88, +0x0e8a, 0x0e8a, +0x0e8d, 0x0e8d, +0x0e94, 0x0e97, +0x0e99, 0x0e9f, +0x0ea1, 0x0ea3, +0x0ea5, 0x0ea5, +0x0ea7, 0x0ea7, +0x0eaa, 0x0eab, +0x0ead, 0x0eb0, +0x0eb2, 0x0eb3, +0x0ebd, 0x0ebd, +0x0ec0, 0x0ec4, +0x0edc, 0x0edf, +0x0f00, 0x0f00, +0x0f40, 0x0f47, +0x0f49, 0x0f6c, +0x0f88, 0x0f8c, +0x1000, 0x102a, +0x103f, 0x103f, +0x1050, 0x1055, +0x105a, 0x105d, +0x1061, 0x1061, +0x1065, 0x1066, +0x106e, 0x1070, +0x1075, 0x1081, +0x108e, 0x108e, +0x1100, 0x1248, +0x124a, 0x124d, +0x1250, 0x1256, +0x1258, 0x1258, +0x125a, 0x125d, +0x1260, 0x1288, +0x128a, 0x128d, +0x1290, 0x12b0, +0x12b2, 0x12b5, +0x12b8, 0x12be, +0x12c0, 0x12c0, +0x12c2, 0x12c5, +0x12c8, 0x12d6, +0x12d8, 0x1310, +0x1312, 0x1315, +0x1318, 0x135a, +0x1380, 0x138f, +0x1401, 0x166c, +0x166f, 0x167f, +0x1681, 0x169a, +0x16a0, 0x16ea, +0x16f1, 0x16f8, +0x1700, 0x170c, +0x170e, 0x1711, +0x1720, 0x1731, +0x1740, 0x1751, +0x1760, 0x176c, +0x176e, 0x1770, +0x1780, 0x17b3, +0x17dc, 0x17dc, +0x1820, 0x1842, +0x1844, 0x1878, +0x1880, 0x1884, +0x1887, 0x18a8, +0x18aa, 0x18aa, +0x18b0, 0x18f5, +0x1900, 0x191e, +0x1950, 0x196d, +0x1970, 0x1974, +0x1980, 0x19ab, +0x19b0, 0x19c9, +0x1a00, 0x1a16, +0x1a20, 0x1a54, +0x1b05, 0x1b33, +0x1b45, 0x1b4b, +0x1b83, 0x1ba0, +0x1bae, 0x1baf, +0x1bba, 0x1be5, +0x1c00, 0x1c23, +0x1c4d, 0x1c4f, +0x1c5a, 0x1c77, +0x1ce9, 0x1cec, +0x1cee, 0x1cf1, +0x1cf5, 0x1cf6, +0x2135, 0x2138, +0x2d30, 0x2d67, +0x2d80, 0x2d96, +0x2da0, 0x2da6, +0x2da8, 0x2dae, +0x2db0, 0x2db6, +0x2db8, 0x2dbe, +0x2dc0, 0x2dc6, +0x2dc8, 0x2dce, +0x2dd0, 0x2dd6, +0x2dd8, 0x2dde, +0x3006, 0x3006, +0x303c, 0x303c, +0x3041, 0x3096, +0x309f, 0x309f, +0x30a1, 0x30fa, +0x30ff, 0x30ff, +0x3105, 0x312f, +0x3131, 0x318e, +0x31a0, 0x31ba, +0x31f0, 0x31ff, +0x3400, 0x4db5, +0x4e00, 0x9fef, +0xa000, 0xa014, +0xa016, 0xa48c, +0xa4d0, 0xa4f7, +0xa500, 0xa60b, +0xa610, 0xa61f, +0xa62a, 0xa62b, +0xa66e, 0xa66e, +0xa6a0, 0xa6e5, +0xa78f, 0xa78f, +0xa7f7, 0xa7f7, +0xa7fb, 0xa801, +0xa803, 0xa805, +0xa807, 0xa80a, +0xa80c, 0xa822, +0xa840, 0xa873, +0xa882, 0xa8b3, +0xa8f2, 0xa8f7, +0xa8fb, 0xa8fb, +0xa8fd, 0xa8fe, +0xa90a, 0xa925, +0xa930, 0xa946, +0xa960, 0xa97c, +0xa984, 0xa9b2, +0xa9e0, 0xa9e4, +0xa9e7, 0xa9ef, +0xa9fa, 0xa9fe, +0xaa00, 0xaa28, +0xaa40, 0xaa42, +0xaa44, 0xaa4b, +0xaa60, 0xaa6f, +0xaa71, 0xaa76, +0xaa7a, 0xaa7a, +0xaa7e, 0xaaaf, +0xaab1, 0xaab1, +0xaab5, 0xaab6, +0xaab9, 0xaabd, +0xaac0, 0xaac0, +0xaac2, 0xaac2, +0xaadb, 0xaadc, +0xaae0, 0xaaea, +0xaaf2, 0xaaf2, +0xab01, 0xab06, +0xab09, 0xab0e, +0xab11, 0xab16, +0xab20, 0xab26, +0xab28, 0xab2e, +0xabc0, 0xabe2, +0xac00, 0xd7a3, +0xd7b0, 0xd7c6, +0xd7cb, 0xd7fb, +0xf900, 0xfa6d, +0xfa70, 0xfad9, +0xfb1d, 0xfb1d, +0xfb1f, 0xfb28, +0xfb2a, 0xfb36, +0xfb38, 0xfb3c, +0xfb3e, 0xfb3e, +0xfb40, 0xfb41, +0xfb43, 0xfb44, +0xfb46, 0xfbb1, +0xfbd3, 0xfd3d, +0xfd50, 0xfd8f, +0xfd92, 0xfdc7, +0xfdf0, 0xfdfb, +0xfe70, 0xfe74, +0xfe76, 0xfefc, +0xff66, 0xff6f, +0xff71, 0xff9d, +0xffa0, 0xffbe, +0xffc2, 0xffc7, +0xffca, 0xffcf, +0xffd2, 0xffd7, +0xffda, 0xffdc, +0x10000, 0x1000b, +0x1000d, 0x10026, +0x10028, 0x1003a, +0x1003c, 0x1003d, +0x1003f, 0x1004d, +0x10050, 0x1005d, +0x10080, 0x100fa, +0x10280, 0x1029c, +0x102a0, 0x102d0, +0x10300, 0x1031f, +0x1032d, 0x10340, +0x10342, 0x10349, +0x10350, 0x10375, +0x10380, 0x1039d, +0x103a0, 0x103c3, +0x103c8, 0x103cf, +0x10450, 0x1049d, +0x10500, 0x10527, +0x10530, 0x10563, +0x10600, 0x10736, +0x10740, 0x10755, +0x10760, 0x10767, +0x10800, 0x10805, +0x10808, 0x10808, +0x1080a, 0x10835, +0x10837, 0x10838, +0x1083c, 0x1083c, +0x1083f, 0x10855, +0x10860, 0x10876, +0x10880, 0x1089e, +0x108e0, 0x108f2, +0x108f4, 0x108f5, +0x10900, 0x10915, +0x10920, 0x10939, +0x10980, 0x109b7, +0x109be, 0x109bf, +0x10a00, 0x10a00, +0x10a10, 0x10a13, +0x10a15, 0x10a17, +0x10a19, 0x10a35, +0x10a60, 0x10a7c, +0x10a80, 0x10a9c, +0x10ac0, 0x10ac7, +0x10ac9, 0x10ae4, +0x10b00, 0x10b35, +0x10b40, 0x10b55, +0x10b60, 0x10b72, +0x10b80, 0x10b91, +0x10c00, 0x10c48, +0x10d00, 0x10d23, +0x10f00, 0x10f1c, +0x10f27, 0x10f27, +0x10f30, 0x10f45, +0x11003, 0x11037, +0x11083, 0x110af, +0x110d0, 0x110e8, +0x11103, 0x11126, +0x11144, 0x11144, +0x11150, 0x11172, +0x11176, 0x11176, +0x11183, 0x111b2, +0x111c1, 0x111c4, +0x111da, 0x111da, +0x111dc, 0x111dc, +0x11200, 0x11211, +0x11213, 0x1122b, +0x11280, 0x11286, +0x11288, 0x11288, +0x1128a, 0x1128d, +0x1128f, 0x1129d, +0x1129f, 0x112a8, +0x112b0, 0x112de, +0x11305, 0x1130c, +0x1130f, 0x11310, +0x11313, 0x11328, +0x1132a, 0x11330, +0x11332, 0x11333, +0x11335, 0x11339, +0x1133d, 0x1133d, +0x11350, 0x11350, +0x1135d, 0x11361, +0x11400, 0x11434, +0x11447, 0x1144a, +0x11480, 0x114af, +0x114c4, 0x114c5, +0x114c7, 0x114c7, +0x11580, 0x115ae, +0x115d8, 0x115db, +0x11600, 0x1162f, +0x11644, 0x11644, +0x11680, 0x116aa, +0x11700, 0x1171a, +0x11800, 0x1182b, +0x118ff, 0x118ff, +0x11a00, 0x11a00, +0x11a0b, 0x11a32, +0x11a3a, 0x11a3a, +0x11a50, 0x11a50, +0x11a5c, 0x11a83, +0x11a86, 0x11a89, +0x11a9d, 0x11a9d, +0x11ac0, 0x11af8, +0x11c00, 0x11c08, +0x11c0a, 0x11c2e, +0x11c40, 0x11c40, +0x11c72, 0x11c8f, +0x11d00, 0x11d06, +0x11d08, 0x11d09, +0x11d0b, 0x11d30, +0x11d46, 0x11d46, +0x11d60, 0x11d65, +0x11d67, 0x11d68, +0x11d6a, 0x11d89, +0x11d98, 0x11d98, +0x11ee0, 0x11ef2, +0x12000, 0x12399, +0x12480, 0x12543, +0x13000, 0x1342e, +0x14400, 0x14646, +0x16800, 0x16a38, +0x16a40, 0x16a5e, +0x16ad0, 0x16aed, +0x16b00, 0x16b2f, +0x16b63, 0x16b77, +0x16b7d, 0x16b8f, +0x16f00, 0x16f44, +0x16f50, 0x16f50, +0x17000, 0x187f1, +0x18800, 0x18af2, +0x1b000, 0x1b11e, +0x1b170, 0x1b2fb, +0x1bc00, 0x1bc6a, +0x1bc70, 0x1bc7c, +0x1bc80, 0x1bc88, +0x1bc90, 0x1bc99, +0x1e800, 0x1e8c4, +0x1ee00, 0x1ee03, +0x1ee05, 0x1ee1f, +0x1ee21, 0x1ee22, +0x1ee24, 0x1ee24, +0x1ee27, 0x1ee27, +0x1ee29, 0x1ee32, +0x1ee34, 0x1ee37, +0x1ee39, 0x1ee39, +0x1ee3b, 0x1ee3b, +0x1ee42, 0x1ee42, +0x1ee47, 0x1ee47, +0x1ee49, 0x1ee49, +0x1ee4b, 0x1ee4b, +0x1ee4d, 0x1ee4f, +0x1ee51, 0x1ee52, +0x1ee54, 0x1ee54, +0x1ee57, 0x1ee57, +0x1ee59, 0x1ee59, +0x1ee5b, 0x1ee5b, +0x1ee5d, 0x1ee5d, +0x1ee5f, 0x1ee5f, +0x1ee61, 0x1ee62, +0x1ee64, 0x1ee64, +0x1ee67, 0x1ee6a, +0x1ee6c, 0x1ee72, +0x1ee74, 0x1ee77, +0x1ee79, 0x1ee7c, +0x1ee7e, 0x1ee7e, +0x1ee80, 0x1ee89, +0x1ee8b, 0x1ee9b, +0x1eea1, 0x1eea3, +0x1eea5, 0x1eea9, +0x1eeab, 0x1eebb, +0x20000, 0x2a6d6, +0x2a700, 0x2b734, +0x2b740, 0x2b81d, +0x2b820, 0x2cea1, +0x2ceb0, 0x2ebe0, +0x2f800, 0x2fa1d, +}; /* END of CR_Lo */ + +/* PROPERTY: 'Logical_Order_Exception': Binary Property */ +static const OnigCodePoint +CR_Logical_Order_Exception[] = { 7, +0x0e40, 0x0e44, +0x0ec0, 0x0ec4, +0x19b5, 0x19b7, +0x19ba, 0x19ba, +0xaab5, 0xaab6, +0xaab9, 0xaab9, +0xaabb, 0xaabc, +}; /* END of CR_Logical_Order_Exception */ + +/* PROPERTY: 'Lowercase': Derived Property */ +#define CR_Lowercase CR_Lower + +/* PROPERTY: 'Lt': General Category */ +static const OnigCodePoint +CR_Lt[] = { 10, +0x01c5, 0x01c5, +0x01c8, 0x01c8, +0x01cb, 0x01cb, +0x01f2, 0x01f2, +0x1f88, 0x1f8f, +0x1f98, 0x1f9f, +0x1fa8, 0x1faf, +0x1fbc, 0x1fbc, +0x1fcc, 0x1fcc, +0x1ffc, 0x1ffc, +}; /* END of CR_Lt */ + +/* PROPERTY: 'Lu': General Category */ +static const OnigCodePoint +CR_Lu[] = { 631, +0x0041, 0x005a, +0x00c0, 0x00d6, +0x00d8, 0x00de, +0x0100, 0x0100, +0x0102, 0x0102, +0x0104, 0x0104, +0x0106, 0x0106, +0x0108, 0x0108, +0x010a, 0x010a, +0x010c, 0x010c, +0x010e, 0x010e, +0x0110, 0x0110, +0x0112, 0x0112, +0x0114, 0x0114, +0x0116, 0x0116, +0x0118, 0x0118, +0x011a, 0x011a, +0x011c, 0x011c, +0x011e, 0x011e, +0x0120, 0x0120, +0x0122, 0x0122, +0x0124, 0x0124, +0x0126, 0x0126, +0x0128, 0x0128, +0x012a, 0x012a, +0x012c, 0x012c, +0x012e, 0x012e, +0x0130, 0x0130, +0x0132, 0x0132, +0x0134, 0x0134, +0x0136, 0x0136, +0x0139, 0x0139, +0x013b, 0x013b, +0x013d, 0x013d, +0x013f, 0x013f, +0x0141, 0x0141, +0x0143, 0x0143, +0x0145, 0x0145, +0x0147, 0x0147, +0x014a, 0x014a, +0x014c, 0x014c, +0x014e, 0x014e, +0x0150, 0x0150, +0x0152, 0x0152, +0x0154, 0x0154, +0x0156, 0x0156, +0x0158, 0x0158, +0x015a, 0x015a, +0x015c, 0x015c, +0x015e, 0x015e, +0x0160, 0x0160, +0x0162, 0x0162, +0x0164, 0x0164, +0x0166, 0x0166, +0x0168, 0x0168, +0x016a, 0x016a, +0x016c, 0x016c, +0x016e, 0x016e, +0x0170, 0x0170, +0x0172, 0x0172, +0x0174, 0x0174, +0x0176, 0x0176, +0x0178, 0x0179, +0x017b, 0x017b, +0x017d, 0x017d, +0x0181, 0x0182, +0x0184, 0x0184, +0x0186, 0x0187, +0x0189, 0x018b, +0x018e, 0x0191, +0x0193, 0x0194, +0x0196, 0x0198, +0x019c, 0x019d, +0x019f, 0x01a0, +0x01a2, 0x01a2, +0x01a4, 0x01a4, +0x01a6, 0x01a7, +0x01a9, 0x01a9, +0x01ac, 0x01ac, +0x01ae, 0x01af, +0x01b1, 0x01b3, +0x01b5, 0x01b5, +0x01b7, 0x01b8, +0x01bc, 0x01bc, +0x01c4, 0x01c4, +0x01c7, 0x01c7, +0x01ca, 0x01ca, +0x01cd, 0x01cd, +0x01cf, 0x01cf, +0x01d1, 0x01d1, +0x01d3, 0x01d3, +0x01d5, 0x01d5, +0x01d7, 0x01d7, +0x01d9, 0x01d9, +0x01db, 0x01db, +0x01de, 0x01de, +0x01e0, 0x01e0, +0x01e2, 0x01e2, +0x01e4, 0x01e4, +0x01e6, 0x01e6, +0x01e8, 0x01e8, +0x01ea, 0x01ea, +0x01ec, 0x01ec, +0x01ee, 0x01ee, +0x01f1, 0x01f1, +0x01f4, 0x01f4, +0x01f6, 0x01f8, +0x01fa, 0x01fa, +0x01fc, 0x01fc, +0x01fe, 0x01fe, +0x0200, 0x0200, +0x0202, 0x0202, +0x0204, 0x0204, +0x0206, 0x0206, +0x0208, 0x0208, +0x020a, 0x020a, +0x020c, 0x020c, +0x020e, 0x020e, +0x0210, 0x0210, +0x0212, 0x0212, +0x0214, 0x0214, +0x0216, 0x0216, +0x0218, 0x0218, +0x021a, 0x021a, +0x021c, 0x021c, +0x021e, 0x021e, +0x0220, 0x0220, +0x0222, 0x0222, +0x0224, 0x0224, +0x0226, 0x0226, +0x0228, 0x0228, +0x022a, 0x022a, +0x022c, 0x022c, +0x022e, 0x022e, +0x0230, 0x0230, +0x0232, 0x0232, +0x023a, 0x023b, +0x023d, 0x023e, +0x0241, 0x0241, +0x0243, 0x0246, +0x0248, 0x0248, +0x024a, 0x024a, +0x024c, 0x024c, +0x024e, 0x024e, +0x0370, 0x0370, +0x0372, 0x0372, +0x0376, 0x0376, +0x037f, 0x037f, +0x0386, 0x0386, +0x0388, 0x038a, +0x038c, 0x038c, +0x038e, 0x038f, +0x0391, 0x03a1, +0x03a3, 0x03ab, +0x03cf, 0x03cf, +0x03d2, 0x03d4, +0x03d8, 0x03d8, +0x03da, 0x03da, +0x03dc, 0x03dc, +0x03de, 0x03de, +0x03e0, 0x03e0, +0x03e2, 0x03e2, +0x03e4, 0x03e4, +0x03e6, 0x03e6, +0x03e8, 0x03e8, +0x03ea, 0x03ea, +0x03ec, 0x03ec, +0x03ee, 0x03ee, +0x03f4, 0x03f4, +0x03f7, 0x03f7, +0x03f9, 0x03fa, +0x03fd, 0x042f, +0x0460, 0x0460, +0x0462, 0x0462, +0x0464, 0x0464, +0x0466, 0x0466, +0x0468, 0x0468, +0x046a, 0x046a, +0x046c, 0x046c, +0x046e, 0x046e, +0x0470, 0x0470, +0x0472, 0x0472, +0x0474, 0x0474, +0x0476, 0x0476, +0x0478, 0x0478, +0x047a, 0x047a, +0x047c, 0x047c, +0x047e, 0x047e, +0x0480, 0x0480, +0x048a, 0x048a, +0x048c, 0x048c, +0x048e, 0x048e, +0x0490, 0x0490, +0x0492, 0x0492, +0x0494, 0x0494, +0x0496, 0x0496, +0x0498, 0x0498, +0x049a, 0x049a, +0x049c, 0x049c, +0x049e, 0x049e, +0x04a0, 0x04a0, +0x04a2, 0x04a2, +0x04a4, 0x04a4, +0x04a6, 0x04a6, +0x04a8, 0x04a8, +0x04aa, 0x04aa, +0x04ac, 0x04ac, +0x04ae, 0x04ae, +0x04b0, 0x04b0, +0x04b2, 0x04b2, +0x04b4, 0x04b4, +0x04b6, 0x04b6, +0x04b8, 0x04b8, +0x04ba, 0x04ba, +0x04bc, 0x04bc, +0x04be, 0x04be, +0x04c0, 0x04c1, +0x04c3, 0x04c3, +0x04c5, 0x04c5, +0x04c7, 0x04c7, +0x04c9, 0x04c9, +0x04cb, 0x04cb, +0x04cd, 0x04cd, +0x04d0, 0x04d0, +0x04d2, 0x04d2, +0x04d4, 0x04d4, +0x04d6, 0x04d6, +0x04d8, 0x04d8, +0x04da, 0x04da, +0x04dc, 0x04dc, +0x04de, 0x04de, +0x04e0, 0x04e0, +0x04e2, 0x04e2, +0x04e4, 0x04e4, +0x04e6, 0x04e6, +0x04e8, 0x04e8, +0x04ea, 0x04ea, +0x04ec, 0x04ec, +0x04ee, 0x04ee, +0x04f0, 0x04f0, +0x04f2, 0x04f2, +0x04f4, 0x04f4, +0x04f6, 0x04f6, +0x04f8, 0x04f8, +0x04fa, 0x04fa, +0x04fc, 0x04fc, +0x04fe, 0x04fe, +0x0500, 0x0500, +0x0502, 0x0502, +0x0504, 0x0504, +0x0506, 0x0506, +0x0508, 0x0508, +0x050a, 0x050a, +0x050c, 0x050c, +0x050e, 0x050e, +0x0510, 0x0510, +0x0512, 0x0512, +0x0514, 0x0514, +0x0516, 0x0516, +0x0518, 0x0518, +0x051a, 0x051a, +0x051c, 0x051c, +0x051e, 0x051e, +0x0520, 0x0520, +0x0522, 0x0522, +0x0524, 0x0524, +0x0526, 0x0526, +0x0528, 0x0528, +0x052a, 0x052a, +0x052c, 0x052c, +0x052e, 0x052e, +0x0531, 0x0556, +0x10a0, 0x10c5, +0x10c7, 0x10c7, +0x10cd, 0x10cd, +0x13a0, 0x13f5, +0x1c90, 0x1cba, +0x1cbd, 0x1cbf, +0x1e00, 0x1e00, +0x1e02, 0x1e02, +0x1e04, 0x1e04, +0x1e06, 0x1e06, +0x1e08, 0x1e08, +0x1e0a, 0x1e0a, +0x1e0c, 0x1e0c, +0x1e0e, 0x1e0e, +0x1e10, 0x1e10, +0x1e12, 0x1e12, +0x1e14, 0x1e14, +0x1e16, 0x1e16, +0x1e18, 0x1e18, +0x1e1a, 0x1e1a, +0x1e1c, 0x1e1c, +0x1e1e, 0x1e1e, +0x1e20, 0x1e20, +0x1e22, 0x1e22, +0x1e24, 0x1e24, +0x1e26, 0x1e26, +0x1e28, 0x1e28, +0x1e2a, 0x1e2a, +0x1e2c, 0x1e2c, +0x1e2e, 0x1e2e, +0x1e30, 0x1e30, +0x1e32, 0x1e32, +0x1e34, 0x1e34, +0x1e36, 0x1e36, +0x1e38, 0x1e38, +0x1e3a, 0x1e3a, +0x1e3c, 0x1e3c, +0x1e3e, 0x1e3e, +0x1e40, 0x1e40, +0x1e42, 0x1e42, +0x1e44, 0x1e44, +0x1e46, 0x1e46, +0x1e48, 0x1e48, +0x1e4a, 0x1e4a, +0x1e4c, 0x1e4c, +0x1e4e, 0x1e4e, +0x1e50, 0x1e50, +0x1e52, 0x1e52, +0x1e54, 0x1e54, +0x1e56, 0x1e56, +0x1e58, 0x1e58, +0x1e5a, 0x1e5a, +0x1e5c, 0x1e5c, +0x1e5e, 0x1e5e, +0x1e60, 0x1e60, +0x1e62, 0x1e62, +0x1e64, 0x1e64, +0x1e66, 0x1e66, +0x1e68, 0x1e68, +0x1e6a, 0x1e6a, +0x1e6c, 0x1e6c, +0x1e6e, 0x1e6e, +0x1e70, 0x1e70, +0x1e72, 0x1e72, +0x1e74, 0x1e74, +0x1e76, 0x1e76, +0x1e78, 0x1e78, +0x1e7a, 0x1e7a, +0x1e7c, 0x1e7c, +0x1e7e, 0x1e7e, +0x1e80, 0x1e80, +0x1e82, 0x1e82, +0x1e84, 0x1e84, +0x1e86, 0x1e86, +0x1e88, 0x1e88, +0x1e8a, 0x1e8a, +0x1e8c, 0x1e8c, +0x1e8e, 0x1e8e, +0x1e90, 0x1e90, +0x1e92, 0x1e92, +0x1e94, 0x1e94, +0x1e9e, 0x1e9e, +0x1ea0, 0x1ea0, +0x1ea2, 0x1ea2, +0x1ea4, 0x1ea4, +0x1ea6, 0x1ea6, +0x1ea8, 0x1ea8, +0x1eaa, 0x1eaa, +0x1eac, 0x1eac, +0x1eae, 0x1eae, +0x1eb0, 0x1eb0, +0x1eb2, 0x1eb2, +0x1eb4, 0x1eb4, +0x1eb6, 0x1eb6, +0x1eb8, 0x1eb8, +0x1eba, 0x1eba, +0x1ebc, 0x1ebc, +0x1ebe, 0x1ebe, +0x1ec0, 0x1ec0, +0x1ec2, 0x1ec2, +0x1ec4, 0x1ec4, +0x1ec6, 0x1ec6, +0x1ec8, 0x1ec8, +0x1eca, 0x1eca, +0x1ecc, 0x1ecc, +0x1ece, 0x1ece, +0x1ed0, 0x1ed0, +0x1ed2, 0x1ed2, +0x1ed4, 0x1ed4, +0x1ed6, 0x1ed6, +0x1ed8, 0x1ed8, +0x1eda, 0x1eda, +0x1edc, 0x1edc, +0x1ede, 0x1ede, +0x1ee0, 0x1ee0, +0x1ee2, 0x1ee2, +0x1ee4, 0x1ee4, +0x1ee6, 0x1ee6, +0x1ee8, 0x1ee8, +0x1eea, 0x1eea, +0x1eec, 0x1eec, +0x1eee, 0x1eee, +0x1ef0, 0x1ef0, +0x1ef2, 0x1ef2, +0x1ef4, 0x1ef4, +0x1ef6, 0x1ef6, +0x1ef8, 0x1ef8, +0x1efa, 0x1efa, +0x1efc, 0x1efc, +0x1efe, 0x1efe, +0x1f08, 0x1f0f, +0x1f18, 0x1f1d, +0x1f28, 0x1f2f, +0x1f38, 0x1f3f, +0x1f48, 0x1f4d, +0x1f59, 0x1f59, +0x1f5b, 0x1f5b, +0x1f5d, 0x1f5d, +0x1f5f, 0x1f5f, +0x1f68, 0x1f6f, +0x1fb8, 0x1fbb, +0x1fc8, 0x1fcb, +0x1fd8, 0x1fdb, +0x1fe8, 0x1fec, +0x1ff8, 0x1ffb, +0x2102, 0x2102, +0x2107, 0x2107, +0x210b, 0x210d, +0x2110, 0x2112, +0x2115, 0x2115, +0x2119, 0x211d, +0x2124, 0x2124, +0x2126, 0x2126, +0x2128, 0x2128, +0x212a, 0x212d, +0x2130, 0x2133, +0x213e, 0x213f, +0x2145, 0x2145, +0x2183, 0x2183, +0x2c00, 0x2c2e, +0x2c60, 0x2c60, +0x2c62, 0x2c64, +0x2c67, 0x2c67, +0x2c69, 0x2c69, +0x2c6b, 0x2c6b, +0x2c6d, 0x2c70, +0x2c72, 0x2c72, +0x2c75, 0x2c75, +0x2c7e, 0x2c80, +0x2c82, 0x2c82, +0x2c84, 0x2c84, +0x2c86, 0x2c86, +0x2c88, 0x2c88, +0x2c8a, 0x2c8a, +0x2c8c, 0x2c8c, +0x2c8e, 0x2c8e, +0x2c90, 0x2c90, +0x2c92, 0x2c92, +0x2c94, 0x2c94, +0x2c96, 0x2c96, +0x2c98, 0x2c98, +0x2c9a, 0x2c9a, +0x2c9c, 0x2c9c, +0x2c9e, 0x2c9e, +0x2ca0, 0x2ca0, +0x2ca2, 0x2ca2, +0x2ca4, 0x2ca4, +0x2ca6, 0x2ca6, +0x2ca8, 0x2ca8, +0x2caa, 0x2caa, +0x2cac, 0x2cac, +0x2cae, 0x2cae, +0x2cb0, 0x2cb0, +0x2cb2, 0x2cb2, +0x2cb4, 0x2cb4, +0x2cb6, 0x2cb6, +0x2cb8, 0x2cb8, +0x2cba, 0x2cba, +0x2cbc, 0x2cbc, +0x2cbe, 0x2cbe, +0x2cc0, 0x2cc0, +0x2cc2, 0x2cc2, +0x2cc4, 0x2cc4, +0x2cc6, 0x2cc6, +0x2cc8, 0x2cc8, +0x2cca, 0x2cca, +0x2ccc, 0x2ccc, +0x2cce, 0x2cce, +0x2cd0, 0x2cd0, +0x2cd2, 0x2cd2, +0x2cd4, 0x2cd4, +0x2cd6, 0x2cd6, +0x2cd8, 0x2cd8, +0x2cda, 0x2cda, +0x2cdc, 0x2cdc, +0x2cde, 0x2cde, +0x2ce0, 0x2ce0, +0x2ce2, 0x2ce2, +0x2ceb, 0x2ceb, +0x2ced, 0x2ced, +0x2cf2, 0x2cf2, +0xa640, 0xa640, +0xa642, 0xa642, +0xa644, 0xa644, +0xa646, 0xa646, +0xa648, 0xa648, +0xa64a, 0xa64a, +0xa64c, 0xa64c, +0xa64e, 0xa64e, +0xa650, 0xa650, +0xa652, 0xa652, +0xa654, 0xa654, +0xa656, 0xa656, +0xa658, 0xa658, +0xa65a, 0xa65a, +0xa65c, 0xa65c, +0xa65e, 0xa65e, +0xa660, 0xa660, +0xa662, 0xa662, +0xa664, 0xa664, +0xa666, 0xa666, +0xa668, 0xa668, +0xa66a, 0xa66a, +0xa66c, 0xa66c, +0xa680, 0xa680, +0xa682, 0xa682, +0xa684, 0xa684, +0xa686, 0xa686, +0xa688, 0xa688, +0xa68a, 0xa68a, +0xa68c, 0xa68c, +0xa68e, 0xa68e, +0xa690, 0xa690, +0xa692, 0xa692, +0xa694, 0xa694, +0xa696, 0xa696, +0xa698, 0xa698, +0xa69a, 0xa69a, +0xa722, 0xa722, +0xa724, 0xa724, +0xa726, 0xa726, +0xa728, 0xa728, +0xa72a, 0xa72a, +0xa72c, 0xa72c, +0xa72e, 0xa72e, +0xa732, 0xa732, +0xa734, 0xa734, +0xa736, 0xa736, +0xa738, 0xa738, +0xa73a, 0xa73a, +0xa73c, 0xa73c, +0xa73e, 0xa73e, +0xa740, 0xa740, +0xa742, 0xa742, +0xa744, 0xa744, +0xa746, 0xa746, +0xa748, 0xa748, +0xa74a, 0xa74a, +0xa74c, 0xa74c, +0xa74e, 0xa74e, +0xa750, 0xa750, +0xa752, 0xa752, +0xa754, 0xa754, +0xa756, 0xa756, +0xa758, 0xa758, +0xa75a, 0xa75a, +0xa75c, 0xa75c, +0xa75e, 0xa75e, +0xa760, 0xa760, +0xa762, 0xa762, +0xa764, 0xa764, +0xa766, 0xa766, +0xa768, 0xa768, +0xa76a, 0xa76a, +0xa76c, 0xa76c, +0xa76e, 0xa76e, +0xa779, 0xa779, +0xa77b, 0xa77b, +0xa77d, 0xa77e, +0xa780, 0xa780, +0xa782, 0xa782, +0xa784, 0xa784, +0xa786, 0xa786, +0xa78b, 0xa78b, +0xa78d, 0xa78d, +0xa790, 0xa790, +0xa792, 0xa792, +0xa796, 0xa796, +0xa798, 0xa798, +0xa79a, 0xa79a, +0xa79c, 0xa79c, +0xa79e, 0xa79e, +0xa7a0, 0xa7a0, +0xa7a2, 0xa7a2, +0xa7a4, 0xa7a4, +0xa7a6, 0xa7a6, +0xa7a8, 0xa7a8, +0xa7aa, 0xa7ae, +0xa7b0, 0xa7b4, +0xa7b6, 0xa7b6, +0xa7b8, 0xa7b8, +0xff21, 0xff3a, +0x10400, 0x10427, +0x104b0, 0x104d3, +0x10c80, 0x10cb2, +0x118a0, 0x118bf, +0x16e40, 0x16e5f, +0x1d400, 0x1d419, +0x1d434, 0x1d44d, +0x1d468, 0x1d481, +0x1d49c, 0x1d49c, +0x1d49e, 0x1d49f, +0x1d4a2, 0x1d4a2, +0x1d4a5, 0x1d4a6, +0x1d4a9, 0x1d4ac, +0x1d4ae, 0x1d4b5, +0x1d4d0, 0x1d4e9, +0x1d504, 0x1d505, +0x1d507, 0x1d50a, +0x1d50d, 0x1d514, +0x1d516, 0x1d51c, +0x1d538, 0x1d539, +0x1d53b, 0x1d53e, +0x1d540, 0x1d544, +0x1d546, 0x1d546, +0x1d54a, 0x1d550, +0x1d56c, 0x1d585, +0x1d5a0, 0x1d5b9, +0x1d5d4, 0x1d5ed, +0x1d608, 0x1d621, +0x1d63c, 0x1d655, +0x1d670, 0x1d689, +0x1d6a8, 0x1d6c0, +0x1d6e2, 0x1d6fa, +0x1d71c, 0x1d734, +0x1d756, 0x1d76e, +0x1d790, 0x1d7a8, +0x1d7ca, 0x1d7ca, +0x1e900, 0x1e921, +}; /* END of CR_Lu */ + +/* PROPERTY: 'Lycian': Script */ +static const OnigCodePoint +CR_Lycian[] = { 1, +0x10280, 0x1029c, +}; /* END of CR_Lycian */ + +/* PROPERTY: 'Lydian': Script */ +static const OnigCodePoint +CR_Lydian[] = { 2, +0x10920, 0x10939, +0x1093f, 0x1093f, +}; /* END of CR_Lydian */ + +/* PROPERTY: 'M': Major Category */ +static const OnigCodePoint +CR_M[] = { 275, +0x0300, 0x036f, +0x0483, 0x0489, +0x0591, 0x05bd, +0x05bf, 0x05bf, +0x05c1, 0x05c2, +0x05c4, 0x05c5, +0x05c7, 0x05c7, +0x0610, 0x061a, +0x064b, 0x065f, +0x0670, 0x0670, +0x06d6, 0x06dc, +0x06df, 0x06e4, +0x06e7, 0x06e8, +0x06ea, 0x06ed, +0x0711, 0x0711, +0x0730, 0x074a, +0x07a6, 0x07b0, +0x07eb, 0x07f3, +0x07fd, 0x07fd, +0x0816, 0x0819, +0x081b, 0x0823, +0x0825, 0x0827, +0x0829, 0x082d, +0x0859, 0x085b, +0x08d3, 0x08e1, +0x08e3, 0x0903, +0x093a, 0x093c, +0x093e, 0x094f, +0x0951, 0x0957, +0x0962, 0x0963, +0x0981, 0x0983, +0x09bc, 0x09bc, +0x09be, 0x09c4, +0x09c7, 0x09c8, +0x09cb, 0x09cd, +0x09d7, 0x09d7, +0x09e2, 0x09e3, +0x09fe, 0x09fe, +0x0a01, 0x0a03, +0x0a3c, 0x0a3c, +0x0a3e, 0x0a42, +0x0a47, 0x0a48, +0x0a4b, 0x0a4d, +0x0a51, 0x0a51, +0x0a70, 0x0a71, +0x0a75, 0x0a75, +0x0a81, 0x0a83, +0x0abc, 0x0abc, +0x0abe, 0x0ac5, +0x0ac7, 0x0ac9, +0x0acb, 0x0acd, +0x0ae2, 0x0ae3, +0x0afa, 0x0aff, +0x0b01, 0x0b03, +0x0b3c, 0x0b3c, +0x0b3e, 0x0b44, +0x0b47, 0x0b48, +0x0b4b, 0x0b4d, +0x0b56, 0x0b57, +0x0b62, 0x0b63, +0x0b82, 0x0b82, +0x0bbe, 0x0bc2, +0x0bc6, 0x0bc8, +0x0bca, 0x0bcd, +0x0bd7, 0x0bd7, +0x0c00, 0x0c04, +0x0c3e, 0x0c44, +0x0c46, 0x0c48, +0x0c4a, 0x0c4d, +0x0c55, 0x0c56, +0x0c62, 0x0c63, +0x0c81, 0x0c83, +0x0cbc, 0x0cbc, +0x0cbe, 0x0cc4, +0x0cc6, 0x0cc8, +0x0cca, 0x0ccd, +0x0cd5, 0x0cd6, +0x0ce2, 0x0ce3, +0x0d00, 0x0d03, +0x0d3b, 0x0d3c, +0x0d3e, 0x0d44, +0x0d46, 0x0d48, +0x0d4a, 0x0d4d, +0x0d57, 0x0d57, +0x0d62, 0x0d63, +0x0d82, 0x0d83, +0x0dca, 0x0dca, +0x0dcf, 0x0dd4, +0x0dd6, 0x0dd6, +0x0dd8, 0x0ddf, +0x0df2, 0x0df3, +0x0e31, 0x0e31, +0x0e34, 0x0e3a, +0x0e47, 0x0e4e, +0x0eb1, 0x0eb1, +0x0eb4, 0x0eb9, +0x0ebb, 0x0ebc, +0x0ec8, 0x0ecd, +0x0f18, 0x0f19, +0x0f35, 0x0f35, +0x0f37, 0x0f37, +0x0f39, 0x0f39, +0x0f3e, 0x0f3f, +0x0f71, 0x0f84, +0x0f86, 0x0f87, +0x0f8d, 0x0f97, +0x0f99, 0x0fbc, +0x0fc6, 0x0fc6, +0x102b, 0x103e, +0x1056, 0x1059, +0x105e, 0x1060, +0x1062, 0x1064, +0x1067, 0x106d, +0x1071, 0x1074, +0x1082, 0x108d, +0x108f, 0x108f, +0x109a, 0x109d, +0x135d, 0x135f, +0x1712, 0x1714, +0x1732, 0x1734, +0x1752, 0x1753, +0x1772, 0x1773, +0x17b4, 0x17d3, +0x17dd, 0x17dd, +0x180b, 0x180d, +0x1885, 0x1886, +0x18a9, 0x18a9, +0x1920, 0x192b, +0x1930, 0x193b, +0x1a17, 0x1a1b, +0x1a55, 0x1a5e, +0x1a60, 0x1a7c, +0x1a7f, 0x1a7f, +0x1ab0, 0x1abe, +0x1b00, 0x1b04, +0x1b34, 0x1b44, +0x1b6b, 0x1b73, +0x1b80, 0x1b82, +0x1ba1, 0x1bad, +0x1be6, 0x1bf3, +0x1c24, 0x1c37, +0x1cd0, 0x1cd2, +0x1cd4, 0x1ce8, +0x1ced, 0x1ced, +0x1cf2, 0x1cf4, +0x1cf7, 0x1cf9, +0x1dc0, 0x1df9, +0x1dfb, 0x1dff, +0x20d0, 0x20f0, +0x2cef, 0x2cf1, +0x2d7f, 0x2d7f, +0x2de0, 0x2dff, +0x302a, 0x302f, +0x3099, 0x309a, +0xa66f, 0xa672, +0xa674, 0xa67d, +0xa69e, 0xa69f, +0xa6f0, 0xa6f1, +0xa802, 0xa802, +0xa806, 0xa806, +0xa80b, 0xa80b, +0xa823, 0xa827, +0xa880, 0xa881, +0xa8b4, 0xa8c5, +0xa8e0, 0xa8f1, +0xa8ff, 0xa8ff, +0xa926, 0xa92d, +0xa947, 0xa953, +0xa980, 0xa983, +0xa9b3, 0xa9c0, +0xa9e5, 0xa9e5, +0xaa29, 0xaa36, +0xaa43, 0xaa43, +0xaa4c, 0xaa4d, +0xaa7b, 0xaa7d, +0xaab0, 0xaab0, +0xaab2, 0xaab4, +0xaab7, 0xaab8, +0xaabe, 0xaabf, +0xaac1, 0xaac1, +0xaaeb, 0xaaef, +0xaaf5, 0xaaf6, +0xabe3, 0xabea, +0xabec, 0xabed, +0xfb1e, 0xfb1e, +0xfe00, 0xfe0f, +0xfe20, 0xfe2f, +0x101fd, 0x101fd, +0x102e0, 0x102e0, +0x10376, 0x1037a, +0x10a01, 0x10a03, +0x10a05, 0x10a06, +0x10a0c, 0x10a0f, +0x10a38, 0x10a3a, +0x10a3f, 0x10a3f, +0x10ae5, 0x10ae6, +0x10d24, 0x10d27, +0x10f46, 0x10f50, +0x11000, 0x11002, +0x11038, 0x11046, +0x1107f, 0x11082, +0x110b0, 0x110ba, +0x11100, 0x11102, +0x11127, 0x11134, +0x11145, 0x11146, +0x11173, 0x11173, +0x11180, 0x11182, +0x111b3, 0x111c0, +0x111c9, 0x111cc, +0x1122c, 0x11237, +0x1123e, 0x1123e, +0x112df, 0x112ea, +0x11300, 0x11303, +0x1133b, 0x1133c, +0x1133e, 0x11344, +0x11347, 0x11348, +0x1134b, 0x1134d, +0x11357, 0x11357, +0x11362, 0x11363, +0x11366, 0x1136c, +0x11370, 0x11374, +0x11435, 0x11446, +0x1145e, 0x1145e, +0x114b0, 0x114c3, +0x115af, 0x115b5, +0x115b8, 0x115c0, +0x115dc, 0x115dd, +0x11630, 0x11640, +0x116ab, 0x116b7, +0x1171d, 0x1172b, +0x1182c, 0x1183a, +0x11a01, 0x11a0a, +0x11a33, 0x11a39, +0x11a3b, 0x11a3e, +0x11a47, 0x11a47, +0x11a51, 0x11a5b, +0x11a8a, 0x11a99, +0x11c2f, 0x11c36, +0x11c38, 0x11c3f, +0x11c92, 0x11ca7, +0x11ca9, 0x11cb6, +0x11d31, 0x11d36, +0x11d3a, 0x11d3a, +0x11d3c, 0x11d3d, +0x11d3f, 0x11d45, +0x11d47, 0x11d47, +0x11d8a, 0x11d8e, +0x11d90, 0x11d91, +0x11d93, 0x11d97, +0x11ef3, 0x11ef6, +0x16af0, 0x16af4, +0x16b30, 0x16b36, +0x16f51, 0x16f7e, +0x16f8f, 0x16f92, +0x1bc9d, 0x1bc9e, +0x1d165, 0x1d169, +0x1d16d, 0x1d172, +0x1d17b, 0x1d182, +0x1d185, 0x1d18b, +0x1d1aa, 0x1d1ad, +0x1d242, 0x1d244, +0x1da00, 0x1da36, +0x1da3b, 0x1da6c, +0x1da75, 0x1da75, +0x1da84, 0x1da84, +0x1da9b, 0x1da9f, +0x1daa1, 0x1daaf, +0x1e000, 0x1e006, +0x1e008, 0x1e018, +0x1e01b, 0x1e021, +0x1e023, 0x1e024, +0x1e026, 0x1e02a, +0x1e8d0, 0x1e8d6, +0x1e944, 0x1e94a, +0xe0100, 0xe01ef, +}; /* END of CR_M */ + +/* PROPERTY: 'Mahajani': Script */ +static const OnigCodePoint +CR_Mahajani[] = { 1, +0x11150, 0x11176, +}; /* END of CR_Mahajani */ + +/* PROPERTY: 'Makasar': Script */ +static const OnigCodePoint +CR_Makasar[] = { 1, +0x11ee0, 0x11ef8, +}; /* END of CR_Makasar */ + +/* PROPERTY: 'Malayalam': Script */ +static const OnigCodePoint +CR_Malayalam[] = { 8, +0x0d00, 0x0d03, +0x0d05, 0x0d0c, +0x0d0e, 0x0d10, +0x0d12, 0x0d44, +0x0d46, 0x0d48, +0x0d4a, 0x0d4f, +0x0d54, 0x0d63, +0x0d66, 0x0d7f, +}; /* END of CR_Malayalam */ + +/* PROPERTY: 'Mandaic': Script */ +static const OnigCodePoint +CR_Mandaic[] = { 2, +0x0840, 0x085b, +0x085e, 0x085e, +}; /* END of CR_Mandaic */ + +/* PROPERTY: 'Manichaean': Script */ +static const OnigCodePoint +CR_Manichaean[] = { 2, +0x10ac0, 0x10ae6, +0x10aeb, 0x10af6, +}; /* END of CR_Manichaean */ + +/* PROPERTY: 'Marchen': Script */ +static const OnigCodePoint +CR_Marchen[] = { 3, +0x11c70, 0x11c8f, +0x11c92, 0x11ca7, +0x11ca9, 0x11cb6, +}; /* END of CR_Marchen */ + +/* PROPERTY: 'Masaram_Gondi': Script */ +static const OnigCodePoint +CR_Masaram_Gondi[] = { 7, +0x11d00, 0x11d06, +0x11d08, 0x11d09, +0x11d0b, 0x11d36, +0x11d3a, 0x11d3a, +0x11d3c, 0x11d3d, +0x11d3f, 0x11d47, +0x11d50, 0x11d59, +}; /* END of CR_Masaram_Gondi */ + +/* PROPERTY: 'Math': Derived Property */ +static const OnigCodePoint +CR_Math[] = { 138, +0x002b, 0x002b, +0x003c, 0x003e, +0x005e, 0x005e, +0x007c, 0x007c, +0x007e, 0x007e, +0x00ac, 0x00ac, +0x00b1, 0x00b1, +0x00d7, 0x00d7, +0x00f7, 0x00f7, +0x03d0, 0x03d2, +0x03d5, 0x03d5, +0x03f0, 0x03f1, +0x03f4, 0x03f6, +0x0606, 0x0608, +0x2016, 0x2016, +0x2032, 0x2034, +0x2040, 0x2040, +0x2044, 0x2044, +0x2052, 0x2052, +0x2061, 0x2064, +0x207a, 0x207e, +0x208a, 0x208e, +0x20d0, 0x20dc, +0x20e1, 0x20e1, +0x20e5, 0x20e6, +0x20eb, 0x20ef, +0x2102, 0x2102, +0x2107, 0x2107, +0x210a, 0x2113, +0x2115, 0x2115, +0x2118, 0x211d, +0x2124, 0x2124, +0x2128, 0x2129, +0x212c, 0x212d, +0x212f, 0x2131, +0x2133, 0x2138, +0x213c, 0x2149, +0x214b, 0x214b, +0x2190, 0x21a7, +0x21a9, 0x21ae, +0x21b0, 0x21b1, +0x21b6, 0x21b7, +0x21bc, 0x21db, +0x21dd, 0x21dd, +0x21e4, 0x21e5, +0x21f4, 0x22ff, +0x2308, 0x230b, +0x2320, 0x2321, +0x237c, 0x237c, +0x239b, 0x23b5, +0x23b7, 0x23b7, +0x23d0, 0x23d0, +0x23dc, 0x23e2, +0x25a0, 0x25a1, +0x25ae, 0x25b7, +0x25bc, 0x25c1, +0x25c6, 0x25c7, +0x25ca, 0x25cb, +0x25cf, 0x25d3, +0x25e2, 0x25e2, +0x25e4, 0x25e4, +0x25e7, 0x25ec, +0x25f8, 0x25ff, +0x2605, 0x2606, +0x2640, 0x2640, +0x2642, 0x2642, +0x2660, 0x2663, +0x266d, 0x266f, +0x27c0, 0x27ff, +0x2900, 0x2aff, +0x2b30, 0x2b44, +0x2b47, 0x2b4c, +0xfb29, 0xfb29, +0xfe61, 0xfe66, +0xfe68, 0xfe68, +0xff0b, 0xff0b, +0xff1c, 0xff1e, +0xff3c, 0xff3c, +0xff3e, 0xff3e, +0xff5c, 0xff5c, +0xff5e, 0xff5e, +0xffe2, 0xffe2, +0xffe9, 0xffec, +0x1d400, 0x1d454, +0x1d456, 0x1d49c, +0x1d49e, 0x1d49f, +0x1d4a2, 0x1d4a2, +0x1d4a5, 0x1d4a6, +0x1d4a9, 0x1d4ac, +0x1d4ae, 0x1d4b9, +0x1d4bb, 0x1d4bb, +0x1d4bd, 0x1d4c3, +0x1d4c5, 0x1d505, +0x1d507, 0x1d50a, +0x1d50d, 0x1d514, +0x1d516, 0x1d51c, +0x1d51e, 0x1d539, +0x1d53b, 0x1d53e, +0x1d540, 0x1d544, +0x1d546, 0x1d546, +0x1d54a, 0x1d550, +0x1d552, 0x1d6a5, +0x1d6a8, 0x1d7cb, +0x1d7ce, 0x1d7ff, +0x1ee00, 0x1ee03, +0x1ee05, 0x1ee1f, +0x1ee21, 0x1ee22, +0x1ee24, 0x1ee24, +0x1ee27, 0x1ee27, +0x1ee29, 0x1ee32, +0x1ee34, 0x1ee37, +0x1ee39, 0x1ee39, +0x1ee3b, 0x1ee3b, +0x1ee42, 0x1ee42, +0x1ee47, 0x1ee47, +0x1ee49, 0x1ee49, +0x1ee4b, 0x1ee4b, +0x1ee4d, 0x1ee4f, +0x1ee51, 0x1ee52, +0x1ee54, 0x1ee54, +0x1ee57, 0x1ee57, +0x1ee59, 0x1ee59, +0x1ee5b, 0x1ee5b, +0x1ee5d, 0x1ee5d, +0x1ee5f, 0x1ee5f, +0x1ee61, 0x1ee62, +0x1ee64, 0x1ee64, +0x1ee67, 0x1ee6a, +0x1ee6c, 0x1ee72, +0x1ee74, 0x1ee77, +0x1ee79, 0x1ee7c, +0x1ee7e, 0x1ee7e, +0x1ee80, 0x1ee89, +0x1ee8b, 0x1ee9b, +0x1eea1, 0x1eea3, +0x1eea5, 0x1eea9, +0x1eeab, 0x1eebb, +0x1eef0, 0x1eef1, +}; /* END of CR_Math */ + +/* PROPERTY: 'Mc': General Category */ +static const OnigCodePoint +CR_Mc[] = { 166, +0x0903, 0x0903, +0x093b, 0x093b, +0x093e, 0x0940, +0x0949, 0x094c, +0x094e, 0x094f, +0x0982, 0x0983, +0x09be, 0x09c0, +0x09c7, 0x09c8, +0x09cb, 0x09cc, +0x09d7, 0x09d7, +0x0a03, 0x0a03, +0x0a3e, 0x0a40, +0x0a83, 0x0a83, +0x0abe, 0x0ac0, +0x0ac9, 0x0ac9, +0x0acb, 0x0acc, +0x0b02, 0x0b03, +0x0b3e, 0x0b3e, +0x0b40, 0x0b40, +0x0b47, 0x0b48, +0x0b4b, 0x0b4c, +0x0b57, 0x0b57, +0x0bbe, 0x0bbf, +0x0bc1, 0x0bc2, +0x0bc6, 0x0bc8, +0x0bca, 0x0bcc, +0x0bd7, 0x0bd7, +0x0c01, 0x0c03, +0x0c41, 0x0c44, +0x0c82, 0x0c83, +0x0cbe, 0x0cbe, +0x0cc0, 0x0cc4, +0x0cc7, 0x0cc8, +0x0cca, 0x0ccb, +0x0cd5, 0x0cd6, +0x0d02, 0x0d03, +0x0d3e, 0x0d40, +0x0d46, 0x0d48, +0x0d4a, 0x0d4c, +0x0d57, 0x0d57, +0x0d82, 0x0d83, +0x0dcf, 0x0dd1, +0x0dd8, 0x0ddf, +0x0df2, 0x0df3, +0x0f3e, 0x0f3f, +0x0f7f, 0x0f7f, +0x102b, 0x102c, +0x1031, 0x1031, +0x1038, 0x1038, +0x103b, 0x103c, +0x1056, 0x1057, +0x1062, 0x1064, +0x1067, 0x106d, +0x1083, 0x1084, +0x1087, 0x108c, +0x108f, 0x108f, +0x109a, 0x109c, +0x17b6, 0x17b6, +0x17be, 0x17c5, +0x17c7, 0x17c8, +0x1923, 0x1926, +0x1929, 0x192b, +0x1930, 0x1931, +0x1933, 0x1938, +0x1a19, 0x1a1a, +0x1a55, 0x1a55, +0x1a57, 0x1a57, +0x1a61, 0x1a61, +0x1a63, 0x1a64, +0x1a6d, 0x1a72, +0x1b04, 0x1b04, +0x1b35, 0x1b35, +0x1b3b, 0x1b3b, +0x1b3d, 0x1b41, +0x1b43, 0x1b44, +0x1b82, 0x1b82, +0x1ba1, 0x1ba1, +0x1ba6, 0x1ba7, +0x1baa, 0x1baa, +0x1be7, 0x1be7, +0x1bea, 0x1bec, +0x1bee, 0x1bee, +0x1bf2, 0x1bf3, +0x1c24, 0x1c2b, +0x1c34, 0x1c35, +0x1ce1, 0x1ce1, +0x1cf2, 0x1cf3, +0x1cf7, 0x1cf7, +0x302e, 0x302f, +0xa823, 0xa824, +0xa827, 0xa827, +0xa880, 0xa881, +0xa8b4, 0xa8c3, +0xa952, 0xa953, +0xa983, 0xa983, +0xa9b4, 0xa9b5, +0xa9ba, 0xa9bb, +0xa9bd, 0xa9c0, +0xaa2f, 0xaa30, +0xaa33, 0xaa34, +0xaa4d, 0xaa4d, +0xaa7b, 0xaa7b, +0xaa7d, 0xaa7d, +0xaaeb, 0xaaeb, +0xaaee, 0xaaef, +0xaaf5, 0xaaf5, +0xabe3, 0xabe4, +0xabe6, 0xabe7, +0xabe9, 0xabea, +0xabec, 0xabec, +0x11000, 0x11000, +0x11002, 0x11002, +0x11082, 0x11082, +0x110b0, 0x110b2, +0x110b7, 0x110b8, +0x1112c, 0x1112c, +0x11145, 0x11146, +0x11182, 0x11182, +0x111b3, 0x111b5, +0x111bf, 0x111c0, +0x1122c, 0x1122e, +0x11232, 0x11233, +0x11235, 0x11235, +0x112e0, 0x112e2, +0x11302, 0x11303, +0x1133e, 0x1133f, +0x11341, 0x11344, +0x11347, 0x11348, +0x1134b, 0x1134d, +0x11357, 0x11357, +0x11362, 0x11363, +0x11435, 0x11437, +0x11440, 0x11441, +0x11445, 0x11445, +0x114b0, 0x114b2, +0x114b9, 0x114b9, +0x114bb, 0x114be, +0x114c1, 0x114c1, +0x115af, 0x115b1, +0x115b8, 0x115bb, +0x115be, 0x115be, +0x11630, 0x11632, +0x1163b, 0x1163c, +0x1163e, 0x1163e, +0x116ac, 0x116ac, +0x116ae, 0x116af, +0x116b6, 0x116b6, +0x11720, 0x11721, +0x11726, 0x11726, +0x1182c, 0x1182e, +0x11838, 0x11838, +0x11a39, 0x11a39, +0x11a57, 0x11a58, +0x11a97, 0x11a97, +0x11c2f, 0x11c2f, +0x11c3e, 0x11c3e, +0x11ca9, 0x11ca9, +0x11cb1, 0x11cb1, +0x11cb4, 0x11cb4, +0x11d8a, 0x11d8e, +0x11d93, 0x11d94, +0x11d96, 0x11d96, +0x11ef5, 0x11ef6, +0x16f51, 0x16f7e, +0x1d165, 0x1d166, +0x1d16d, 0x1d172, +}; /* END of CR_Mc */ + +/* PROPERTY: 'Me': General Category */ +static const OnigCodePoint +CR_Me[] = { 5, +0x0488, 0x0489, +0x1abe, 0x1abe, +0x20dd, 0x20e0, +0x20e2, 0x20e4, +0xa670, 0xa672, +}; /* END of CR_Me */ + +/* PROPERTY: 'Medefaidrin': Script */ +static const OnigCodePoint +CR_Medefaidrin[] = { 1, +0x16e40, 0x16e9a, +}; /* END of CR_Medefaidrin */ + +/* PROPERTY: 'Meetei_Mayek': Script */ +static const OnigCodePoint +CR_Meetei_Mayek[] = { 3, +0xaae0, 0xaaf6, +0xabc0, 0xabed, +0xabf0, 0xabf9, +}; /* END of CR_Meetei_Mayek */ + +/* PROPERTY: 'Mende_Kikakui': Script */ +static const OnigCodePoint +CR_Mende_Kikakui[] = { 2, +0x1e800, 0x1e8c4, +0x1e8c7, 0x1e8d6, +}; /* END of CR_Mende_Kikakui */ + +/* PROPERTY: 'Meroitic_Cursive': Script */ +static const OnigCodePoint +CR_Meroitic_Cursive[] = { 3, +0x109a0, 0x109b7, +0x109bc, 0x109cf, +0x109d2, 0x109ff, +}; /* END of CR_Meroitic_Cursive */ + +/* PROPERTY: 'Meroitic_Hieroglyphs': Script */ +static const OnigCodePoint +CR_Meroitic_Hieroglyphs[] = { 1, +0x10980, 0x1099f, +}; /* END of CR_Meroitic_Hieroglyphs */ + +/* PROPERTY: 'Miao': Script */ +static const OnigCodePoint +CR_Miao[] = { 3, +0x16f00, 0x16f44, +0x16f50, 0x16f7e, +0x16f8f, 0x16f9f, +}; /* END of CR_Miao */ + +/* PROPERTY: 'Mn': General Category */ +static const OnigCodePoint +CR_Mn[] = { 313, +0x0300, 0x036f, +0x0483, 0x0487, +0x0591, 0x05bd, +0x05bf, 0x05bf, +0x05c1, 0x05c2, +0x05c4, 0x05c5, +0x05c7, 0x05c7, +0x0610, 0x061a, +0x064b, 0x065f, +0x0670, 0x0670, +0x06d6, 0x06dc, +0x06df, 0x06e4, +0x06e7, 0x06e8, +0x06ea, 0x06ed, +0x0711, 0x0711, +0x0730, 0x074a, +0x07a6, 0x07b0, +0x07eb, 0x07f3, +0x07fd, 0x07fd, +0x0816, 0x0819, +0x081b, 0x0823, +0x0825, 0x0827, +0x0829, 0x082d, +0x0859, 0x085b, +0x08d3, 0x08e1, +0x08e3, 0x0902, +0x093a, 0x093a, +0x093c, 0x093c, +0x0941, 0x0948, +0x094d, 0x094d, +0x0951, 0x0957, +0x0962, 0x0963, +0x0981, 0x0981, +0x09bc, 0x09bc, +0x09c1, 0x09c4, +0x09cd, 0x09cd, +0x09e2, 0x09e3, +0x09fe, 0x09fe, +0x0a01, 0x0a02, +0x0a3c, 0x0a3c, +0x0a41, 0x0a42, +0x0a47, 0x0a48, +0x0a4b, 0x0a4d, +0x0a51, 0x0a51, +0x0a70, 0x0a71, +0x0a75, 0x0a75, +0x0a81, 0x0a82, +0x0abc, 0x0abc, +0x0ac1, 0x0ac5, +0x0ac7, 0x0ac8, +0x0acd, 0x0acd, +0x0ae2, 0x0ae3, +0x0afa, 0x0aff, +0x0b01, 0x0b01, +0x0b3c, 0x0b3c, +0x0b3f, 0x0b3f, +0x0b41, 0x0b44, +0x0b4d, 0x0b4d, +0x0b56, 0x0b56, +0x0b62, 0x0b63, +0x0b82, 0x0b82, +0x0bc0, 0x0bc0, +0x0bcd, 0x0bcd, +0x0c00, 0x0c00, +0x0c04, 0x0c04, +0x0c3e, 0x0c40, +0x0c46, 0x0c48, +0x0c4a, 0x0c4d, +0x0c55, 0x0c56, +0x0c62, 0x0c63, +0x0c81, 0x0c81, +0x0cbc, 0x0cbc, +0x0cbf, 0x0cbf, +0x0cc6, 0x0cc6, +0x0ccc, 0x0ccd, +0x0ce2, 0x0ce3, +0x0d00, 0x0d01, +0x0d3b, 0x0d3c, +0x0d41, 0x0d44, +0x0d4d, 0x0d4d, +0x0d62, 0x0d63, +0x0dca, 0x0dca, +0x0dd2, 0x0dd4, +0x0dd6, 0x0dd6, +0x0e31, 0x0e31, +0x0e34, 0x0e3a, +0x0e47, 0x0e4e, +0x0eb1, 0x0eb1, +0x0eb4, 0x0eb9, +0x0ebb, 0x0ebc, +0x0ec8, 0x0ecd, +0x0f18, 0x0f19, +0x0f35, 0x0f35, +0x0f37, 0x0f37, +0x0f39, 0x0f39, +0x0f71, 0x0f7e, +0x0f80, 0x0f84, +0x0f86, 0x0f87, +0x0f8d, 0x0f97, +0x0f99, 0x0fbc, +0x0fc6, 0x0fc6, +0x102d, 0x1030, +0x1032, 0x1037, +0x1039, 0x103a, +0x103d, 0x103e, +0x1058, 0x1059, +0x105e, 0x1060, +0x1071, 0x1074, +0x1082, 0x1082, +0x1085, 0x1086, +0x108d, 0x108d, +0x109d, 0x109d, +0x135d, 0x135f, +0x1712, 0x1714, +0x1732, 0x1734, +0x1752, 0x1753, +0x1772, 0x1773, +0x17b4, 0x17b5, +0x17b7, 0x17bd, +0x17c6, 0x17c6, +0x17c9, 0x17d3, +0x17dd, 0x17dd, +0x180b, 0x180d, +0x1885, 0x1886, +0x18a9, 0x18a9, +0x1920, 0x1922, +0x1927, 0x1928, +0x1932, 0x1932, +0x1939, 0x193b, +0x1a17, 0x1a18, +0x1a1b, 0x1a1b, +0x1a56, 0x1a56, +0x1a58, 0x1a5e, +0x1a60, 0x1a60, +0x1a62, 0x1a62, +0x1a65, 0x1a6c, +0x1a73, 0x1a7c, +0x1a7f, 0x1a7f, +0x1ab0, 0x1abd, +0x1b00, 0x1b03, +0x1b34, 0x1b34, +0x1b36, 0x1b3a, +0x1b3c, 0x1b3c, +0x1b42, 0x1b42, +0x1b6b, 0x1b73, +0x1b80, 0x1b81, +0x1ba2, 0x1ba5, +0x1ba8, 0x1ba9, +0x1bab, 0x1bad, +0x1be6, 0x1be6, +0x1be8, 0x1be9, +0x1bed, 0x1bed, +0x1bef, 0x1bf1, +0x1c2c, 0x1c33, +0x1c36, 0x1c37, +0x1cd0, 0x1cd2, +0x1cd4, 0x1ce0, +0x1ce2, 0x1ce8, +0x1ced, 0x1ced, +0x1cf4, 0x1cf4, +0x1cf8, 0x1cf9, +0x1dc0, 0x1df9, +0x1dfb, 0x1dff, +0x20d0, 0x20dc, +0x20e1, 0x20e1, +0x20e5, 0x20f0, +0x2cef, 0x2cf1, +0x2d7f, 0x2d7f, +0x2de0, 0x2dff, +0x302a, 0x302d, +0x3099, 0x309a, +0xa66f, 0xa66f, +0xa674, 0xa67d, +0xa69e, 0xa69f, +0xa6f0, 0xa6f1, +0xa802, 0xa802, +0xa806, 0xa806, +0xa80b, 0xa80b, +0xa825, 0xa826, +0xa8c4, 0xa8c5, +0xa8e0, 0xa8f1, +0xa8ff, 0xa8ff, +0xa926, 0xa92d, +0xa947, 0xa951, +0xa980, 0xa982, +0xa9b3, 0xa9b3, +0xa9b6, 0xa9b9, +0xa9bc, 0xa9bc, +0xa9e5, 0xa9e5, +0xaa29, 0xaa2e, +0xaa31, 0xaa32, +0xaa35, 0xaa36, +0xaa43, 0xaa43, +0xaa4c, 0xaa4c, +0xaa7c, 0xaa7c, +0xaab0, 0xaab0, +0xaab2, 0xaab4, +0xaab7, 0xaab8, +0xaabe, 0xaabf, +0xaac1, 0xaac1, +0xaaec, 0xaaed, +0xaaf6, 0xaaf6, +0xabe5, 0xabe5, +0xabe8, 0xabe8, +0xabed, 0xabed, +0xfb1e, 0xfb1e, +0xfe00, 0xfe0f, +0xfe20, 0xfe2f, +0x101fd, 0x101fd, +0x102e0, 0x102e0, +0x10376, 0x1037a, +0x10a01, 0x10a03, +0x10a05, 0x10a06, +0x10a0c, 0x10a0f, +0x10a38, 0x10a3a, +0x10a3f, 0x10a3f, +0x10ae5, 0x10ae6, +0x10d24, 0x10d27, +0x10f46, 0x10f50, +0x11001, 0x11001, +0x11038, 0x11046, +0x1107f, 0x11081, +0x110b3, 0x110b6, +0x110b9, 0x110ba, +0x11100, 0x11102, +0x11127, 0x1112b, +0x1112d, 0x11134, +0x11173, 0x11173, +0x11180, 0x11181, +0x111b6, 0x111be, +0x111c9, 0x111cc, +0x1122f, 0x11231, +0x11234, 0x11234, +0x11236, 0x11237, +0x1123e, 0x1123e, +0x112df, 0x112df, +0x112e3, 0x112ea, +0x11300, 0x11301, +0x1133b, 0x1133c, +0x11340, 0x11340, +0x11366, 0x1136c, +0x11370, 0x11374, +0x11438, 0x1143f, +0x11442, 0x11444, +0x11446, 0x11446, +0x1145e, 0x1145e, +0x114b3, 0x114b8, +0x114ba, 0x114ba, +0x114bf, 0x114c0, +0x114c2, 0x114c3, +0x115b2, 0x115b5, +0x115bc, 0x115bd, +0x115bf, 0x115c0, +0x115dc, 0x115dd, +0x11633, 0x1163a, +0x1163d, 0x1163d, +0x1163f, 0x11640, +0x116ab, 0x116ab, +0x116ad, 0x116ad, +0x116b0, 0x116b5, +0x116b7, 0x116b7, +0x1171d, 0x1171f, +0x11722, 0x11725, +0x11727, 0x1172b, +0x1182f, 0x11837, +0x11839, 0x1183a, +0x11a01, 0x11a0a, +0x11a33, 0x11a38, +0x11a3b, 0x11a3e, +0x11a47, 0x11a47, +0x11a51, 0x11a56, +0x11a59, 0x11a5b, +0x11a8a, 0x11a96, +0x11a98, 0x11a99, +0x11c30, 0x11c36, +0x11c38, 0x11c3d, +0x11c3f, 0x11c3f, +0x11c92, 0x11ca7, +0x11caa, 0x11cb0, +0x11cb2, 0x11cb3, +0x11cb5, 0x11cb6, +0x11d31, 0x11d36, +0x11d3a, 0x11d3a, +0x11d3c, 0x11d3d, +0x11d3f, 0x11d45, +0x11d47, 0x11d47, +0x11d90, 0x11d91, +0x11d95, 0x11d95, +0x11d97, 0x11d97, +0x11ef3, 0x11ef4, +0x16af0, 0x16af4, +0x16b30, 0x16b36, +0x16f8f, 0x16f92, +0x1bc9d, 0x1bc9e, +0x1d167, 0x1d169, +0x1d17b, 0x1d182, +0x1d185, 0x1d18b, +0x1d1aa, 0x1d1ad, +0x1d242, 0x1d244, +0x1da00, 0x1da36, +0x1da3b, 0x1da6c, +0x1da75, 0x1da75, +0x1da84, 0x1da84, +0x1da9b, 0x1da9f, +0x1daa1, 0x1daaf, +0x1e000, 0x1e006, +0x1e008, 0x1e018, +0x1e01b, 0x1e021, +0x1e023, 0x1e024, +0x1e026, 0x1e02a, +0x1e8d0, 0x1e8d6, +0x1e944, 0x1e94a, +0xe0100, 0xe01ef, +}; /* END of CR_Mn */ + +/* PROPERTY: 'Modi': Script */ +static const OnigCodePoint +CR_Modi[] = { 2, +0x11600, 0x11644, +0x11650, 0x11659, +}; /* END of CR_Modi */ + +/* PROPERTY: 'Mongolian': Script */ +static const OnigCodePoint +CR_Mongolian[] = { 7, +0x1800, 0x1801, +0x1804, 0x1804, +0x1806, 0x180e, +0x1810, 0x1819, +0x1820, 0x1878, +0x1880, 0x18aa, +0x11660, 0x1166c, +}; /* END of CR_Mongolian */ + +/* PROPERTY: 'Mro': Script */ +static const OnigCodePoint +CR_Mro[] = { 3, +0x16a40, 0x16a5e, +0x16a60, 0x16a69, +0x16a6e, 0x16a6f, +}; /* END of CR_Mro */ + +/* PROPERTY: 'Multani': Script */ +static const OnigCodePoint +CR_Multani[] = { 5, +0x11280, 0x11286, +0x11288, 0x11288, +0x1128a, 0x1128d, +0x1128f, 0x1129d, +0x1129f, 0x112a9, +}; /* END of CR_Multani */ + +/* PROPERTY: 'Myanmar': Script */ +static const OnigCodePoint +CR_Myanmar[] = { 3, +0x1000, 0x109f, +0xa9e0, 0xa9fe, +0xaa60, 0xaa7f, +}; /* END of CR_Myanmar */ + +/* PROPERTY: 'N': Major Category */ +static const OnigCodePoint +CR_N[] = { 125, +0x0030, 0x0039, +0x00b2, 0x00b3, +0x00b9, 0x00b9, +0x00bc, 0x00be, +0x0660, 0x0669, +0x06f0, 0x06f9, +0x07c0, 0x07c9, +0x0966, 0x096f, +0x09e6, 0x09ef, +0x09f4, 0x09f9, +0x0a66, 0x0a6f, +0x0ae6, 0x0aef, +0x0b66, 0x0b6f, +0x0b72, 0x0b77, +0x0be6, 0x0bf2, +0x0c66, 0x0c6f, +0x0c78, 0x0c7e, +0x0ce6, 0x0cef, +0x0d58, 0x0d5e, +0x0d66, 0x0d78, +0x0de6, 0x0def, +0x0e50, 0x0e59, +0x0ed0, 0x0ed9, +0x0f20, 0x0f33, +0x1040, 0x1049, +0x1090, 0x1099, +0x1369, 0x137c, +0x16ee, 0x16f0, +0x17e0, 0x17e9, +0x17f0, 0x17f9, +0x1810, 0x1819, +0x1946, 0x194f, +0x19d0, 0x19da, +0x1a80, 0x1a89, +0x1a90, 0x1a99, +0x1b50, 0x1b59, +0x1bb0, 0x1bb9, +0x1c40, 0x1c49, +0x1c50, 0x1c59, +0x2070, 0x2070, +0x2074, 0x2079, +0x2080, 0x2089, +0x2150, 0x2182, +0x2185, 0x2189, +0x2460, 0x249b, +0x24ea, 0x24ff, +0x2776, 0x2793, +0x2cfd, 0x2cfd, +0x3007, 0x3007, +0x3021, 0x3029, +0x3038, 0x303a, +0x3192, 0x3195, +0x3220, 0x3229, +0x3248, 0x324f, +0x3251, 0x325f, +0x3280, 0x3289, +0x32b1, 0x32bf, +0xa620, 0xa629, +0xa6e6, 0xa6ef, +0xa830, 0xa835, +0xa8d0, 0xa8d9, +0xa900, 0xa909, +0xa9d0, 0xa9d9, +0xa9f0, 0xa9f9, +0xaa50, 0xaa59, +0xabf0, 0xabf9, +0xff10, 0xff19, +0x10107, 0x10133, +0x10140, 0x10178, +0x1018a, 0x1018b, +0x102e1, 0x102fb, +0x10320, 0x10323, +0x10341, 0x10341, +0x1034a, 0x1034a, +0x103d1, 0x103d5, +0x104a0, 0x104a9, +0x10858, 0x1085f, +0x10879, 0x1087f, +0x108a7, 0x108af, +0x108fb, 0x108ff, +0x10916, 0x1091b, +0x109bc, 0x109bd, +0x109c0, 0x109cf, +0x109d2, 0x109ff, +0x10a40, 0x10a48, +0x10a7d, 0x10a7e, +0x10a9d, 0x10a9f, +0x10aeb, 0x10aef, +0x10b58, 0x10b5f, +0x10b78, 0x10b7f, +0x10ba9, 0x10baf, +0x10cfa, 0x10cff, +0x10d30, 0x10d39, +0x10e60, 0x10e7e, +0x10f1d, 0x10f26, +0x10f51, 0x10f54, +0x11052, 0x1106f, +0x110f0, 0x110f9, +0x11136, 0x1113f, +0x111d0, 0x111d9, +0x111e1, 0x111f4, +0x112f0, 0x112f9, +0x11450, 0x11459, +0x114d0, 0x114d9, +0x11650, 0x11659, +0x116c0, 0x116c9, +0x11730, 0x1173b, +0x118e0, 0x118f2, +0x11c50, 0x11c6c, +0x11d50, 0x11d59, +0x11da0, 0x11da9, +0x12400, 0x1246e, +0x16a60, 0x16a69, +0x16b50, 0x16b59, +0x16b5b, 0x16b61, +0x16e80, 0x16e96, +0x1d2e0, 0x1d2f3, +0x1d360, 0x1d378, +0x1d7ce, 0x1d7ff, +0x1e8c7, 0x1e8cf, +0x1e950, 0x1e959, +0x1ec71, 0x1ecab, +0x1ecad, 0x1ecaf, +0x1ecb1, 0x1ecb4, +0x1f100, 0x1f10c, +}; /* END of CR_N */ + +/* PROPERTY: 'Nabataean': Script */ +static const OnigCodePoint +CR_Nabataean[] = { 2, +0x10880, 0x1089e, +0x108a7, 0x108af, +}; /* END of CR_Nabataean */ + +/* PROPERTY: 'Nd': General Category */ +#define CR_Nd CR_Digit + +/* PROPERTY: 'New_Tai_Lue': Script */ +static const OnigCodePoint +CR_New_Tai_Lue[] = { 4, +0x1980, 0x19ab, +0x19b0, 0x19c9, +0x19d0, 0x19da, +0x19de, 0x19df, +}; /* END of CR_New_Tai_Lue */ + +/* PROPERTY: 'Newa': Script */ +static const OnigCodePoint +CR_Newa[] = { 3, +0x11400, 0x11459, +0x1145b, 0x1145b, +0x1145d, 0x1145e, +}; /* END of CR_Newa */ + +/* PROPERTY: 'Nko': Script */ +static const OnigCodePoint +CR_Nko[] = { 2, +0x07c0, 0x07fa, +0x07fd, 0x07ff, +}; /* END of CR_Nko */ + +/* PROPERTY: 'Nl': General Category */ +static const OnigCodePoint +CR_Nl[] = { 12, +0x16ee, 0x16f0, +0x2160, 0x2182, +0x2185, 0x2188, +0x3007, 0x3007, +0x3021, 0x3029, +0x3038, 0x303a, +0xa6e6, 0xa6ef, +0x10140, 0x10174, +0x10341, 0x10341, +0x1034a, 0x1034a, +0x103d1, 0x103d5, +0x12400, 0x1246e, +}; /* END of CR_Nl */ + +/* PROPERTY: 'No': General Category */ +static const OnigCodePoint +CR_No[] = { 67, +0x00b2, 0x00b3, +0x00b9, 0x00b9, +0x00bc, 0x00be, +0x09f4, 0x09f9, +0x0b72, 0x0b77, +0x0bf0, 0x0bf2, +0x0c78, 0x0c7e, +0x0d58, 0x0d5e, +0x0d70, 0x0d78, +0x0f2a, 0x0f33, +0x1369, 0x137c, +0x17f0, 0x17f9, +0x19da, 0x19da, +0x2070, 0x2070, +0x2074, 0x2079, +0x2080, 0x2089, +0x2150, 0x215f, +0x2189, 0x2189, +0x2460, 0x249b, +0x24ea, 0x24ff, +0x2776, 0x2793, +0x2cfd, 0x2cfd, +0x3192, 0x3195, +0x3220, 0x3229, +0x3248, 0x324f, +0x3251, 0x325f, +0x3280, 0x3289, +0x32b1, 0x32bf, +0xa830, 0xa835, +0x10107, 0x10133, +0x10175, 0x10178, +0x1018a, 0x1018b, +0x102e1, 0x102fb, +0x10320, 0x10323, +0x10858, 0x1085f, +0x10879, 0x1087f, +0x108a7, 0x108af, +0x108fb, 0x108ff, +0x10916, 0x1091b, +0x109bc, 0x109bd, +0x109c0, 0x109cf, +0x109d2, 0x109ff, +0x10a40, 0x10a48, +0x10a7d, 0x10a7e, +0x10a9d, 0x10a9f, +0x10aeb, 0x10aef, +0x10b58, 0x10b5f, +0x10b78, 0x10b7f, +0x10ba9, 0x10baf, +0x10cfa, 0x10cff, +0x10e60, 0x10e7e, +0x10f1d, 0x10f26, +0x10f51, 0x10f54, +0x11052, 0x11065, +0x111e1, 0x111f4, +0x1173a, 0x1173b, +0x118ea, 0x118f2, +0x11c5a, 0x11c6c, +0x16b5b, 0x16b61, +0x16e80, 0x16e96, +0x1d2e0, 0x1d2f3, +0x1d360, 0x1d378, +0x1e8c7, 0x1e8cf, +0x1ec71, 0x1ecab, +0x1ecad, 0x1ecaf, +0x1ecb1, 0x1ecb4, +0x1f100, 0x1f10c, +}; /* END of CR_No */ + +/* PROPERTY: 'Noncharacter_Code_Point': Binary Property */ +static const OnigCodePoint +CR_Noncharacter_Code_Point[] = { 18, +0xfdd0, 0xfdef, +0xfffe, 0xffff, +0x1fffe, 0x1ffff, +0x2fffe, 0x2ffff, +0x3fffe, 0x3ffff, +0x4fffe, 0x4ffff, +0x5fffe, 0x5ffff, +0x6fffe, 0x6ffff, +0x7fffe, 0x7ffff, +0x8fffe, 0x8ffff, +0x9fffe, 0x9ffff, +0xafffe, 0xaffff, +0xbfffe, 0xbffff, +0xcfffe, 0xcffff, +0xdfffe, 0xdffff, +0xefffe, 0xeffff, +0xffffe, 0xfffff, +0x10fffe, 0x10ffff, +}; /* END of CR_Noncharacter_Code_Point */ + +/* PROPERTY: 'Nushu': Script */ +static const OnigCodePoint +CR_Nushu[] = { 2, +0x16fe1, 0x16fe1, +0x1b170, 0x1b2fb, +}; /* END of CR_Nushu */ + +/* PROPERTY: 'Ogham': Script */ +static const OnigCodePoint +CR_Ogham[] = { 1, +0x1680, 0x169c, +}; /* END of CR_Ogham */ + +/* PROPERTY: 'Ol_Chiki': Script */ +static const OnigCodePoint +CR_Ol_Chiki[] = { 1, +0x1c50, 0x1c7f, +}; /* END of CR_Ol_Chiki */ + +/* PROPERTY: 'Old_Hungarian': Script */ +static const OnigCodePoint +CR_Old_Hungarian[] = { 3, +0x10c80, 0x10cb2, +0x10cc0, 0x10cf2, +0x10cfa, 0x10cff, +}; /* END of CR_Old_Hungarian */ + +/* PROPERTY: 'Old_Italic': Script */ +static const OnigCodePoint +CR_Old_Italic[] = { 2, +0x10300, 0x10323, +0x1032d, 0x1032f, +}; /* END of CR_Old_Italic */ + +/* PROPERTY: 'Old_North_Arabian': Script */ +static const OnigCodePoint +CR_Old_North_Arabian[] = { 1, +0x10a80, 0x10a9f, +}; /* END of CR_Old_North_Arabian */ + +/* PROPERTY: 'Old_Permic': Script */ +static const OnigCodePoint +CR_Old_Permic[] = { 1, +0x10350, 0x1037a, +}; /* END of CR_Old_Permic */ + +/* PROPERTY: 'Old_Persian': Script */ +static const OnigCodePoint +CR_Old_Persian[] = { 2, +0x103a0, 0x103c3, +0x103c8, 0x103d5, +}; /* END of CR_Old_Persian */ + +/* PROPERTY: 'Old_Sogdian': Script */ +static const OnigCodePoint +CR_Old_Sogdian[] = { 1, +0x10f00, 0x10f27, +}; /* END of CR_Old_Sogdian */ + +/* PROPERTY: 'Old_South_Arabian': Script */ +static const OnigCodePoint +CR_Old_South_Arabian[] = { 1, +0x10a60, 0x10a7f, +}; /* END of CR_Old_South_Arabian */ + +/* PROPERTY: 'Old_Turkic': Script */ +static const OnigCodePoint +CR_Old_Turkic[] = { 1, +0x10c00, 0x10c48, +}; /* END of CR_Old_Turkic */ + +/* PROPERTY: 'Oriya': Script */ +static const OnigCodePoint +CR_Oriya[] = { 14, +0x0b01, 0x0b03, +0x0b05, 0x0b0c, +0x0b0f, 0x0b10, +0x0b13, 0x0b28, +0x0b2a, 0x0b30, +0x0b32, 0x0b33, +0x0b35, 0x0b39, +0x0b3c, 0x0b44, +0x0b47, 0x0b48, +0x0b4b, 0x0b4d, +0x0b56, 0x0b57, +0x0b5c, 0x0b5d, +0x0b5f, 0x0b63, +0x0b66, 0x0b77, +}; /* END of CR_Oriya */ + +/* PROPERTY: 'Osage': Script */ +static const OnigCodePoint +CR_Osage[] = { 2, +0x104b0, 0x104d3, +0x104d8, 0x104fb, +}; /* END of CR_Osage */ + +/* PROPERTY: 'Osmanya': Script */ +static const OnigCodePoint +CR_Osmanya[] = { 2, +0x10480, 0x1049d, +0x104a0, 0x104a9, +}; /* END of CR_Osmanya */ + +/* PROPERTY: 'Other_Alphabetic': Binary Property */ +static const OnigCodePoint +CR_Other_Alphabetic[] = { 213, +0x0345, 0x0345, +0x05b0, 0x05bd, +0x05bf, 0x05bf, +0x05c1, 0x05c2, +0x05c4, 0x05c5, +0x05c7, 0x05c7, +0x0610, 0x061a, +0x064b, 0x0657, +0x0659, 0x065f, +0x0670, 0x0670, +0x06d6, 0x06dc, +0x06e1, 0x06e4, +0x06e7, 0x06e8, +0x06ed, 0x06ed, +0x0711, 0x0711, +0x0730, 0x073f, +0x07a6, 0x07b0, +0x0816, 0x0817, +0x081b, 0x0823, +0x0825, 0x0827, +0x0829, 0x082c, +0x08d4, 0x08df, +0x08e3, 0x08e9, +0x08f0, 0x0903, +0x093a, 0x093b, +0x093e, 0x094c, +0x094e, 0x094f, +0x0955, 0x0957, +0x0962, 0x0963, +0x0981, 0x0983, +0x09be, 0x09c4, +0x09c7, 0x09c8, +0x09cb, 0x09cc, +0x09d7, 0x09d7, +0x09e2, 0x09e3, +0x0a01, 0x0a03, +0x0a3e, 0x0a42, +0x0a47, 0x0a48, +0x0a4b, 0x0a4c, +0x0a51, 0x0a51, +0x0a70, 0x0a71, +0x0a75, 0x0a75, +0x0a81, 0x0a83, +0x0abe, 0x0ac5, +0x0ac7, 0x0ac9, +0x0acb, 0x0acc, +0x0ae2, 0x0ae3, +0x0afa, 0x0afc, +0x0b01, 0x0b03, +0x0b3e, 0x0b44, +0x0b47, 0x0b48, +0x0b4b, 0x0b4c, +0x0b56, 0x0b57, +0x0b62, 0x0b63, +0x0b82, 0x0b82, +0x0bbe, 0x0bc2, +0x0bc6, 0x0bc8, +0x0bca, 0x0bcc, +0x0bd7, 0x0bd7, +0x0c00, 0x0c03, +0x0c3e, 0x0c44, +0x0c46, 0x0c48, +0x0c4a, 0x0c4c, +0x0c55, 0x0c56, +0x0c62, 0x0c63, +0x0c81, 0x0c83, +0x0cbe, 0x0cc4, +0x0cc6, 0x0cc8, +0x0cca, 0x0ccc, +0x0cd5, 0x0cd6, +0x0ce2, 0x0ce3, +0x0d00, 0x0d03, +0x0d3e, 0x0d44, +0x0d46, 0x0d48, +0x0d4a, 0x0d4c, +0x0d57, 0x0d57, +0x0d62, 0x0d63, +0x0d82, 0x0d83, +0x0dcf, 0x0dd4, +0x0dd6, 0x0dd6, +0x0dd8, 0x0ddf, +0x0df2, 0x0df3, +0x0e31, 0x0e31, +0x0e34, 0x0e3a, +0x0e4d, 0x0e4d, +0x0eb1, 0x0eb1, +0x0eb4, 0x0eb9, +0x0ebb, 0x0ebc, +0x0ecd, 0x0ecd, +0x0f71, 0x0f81, +0x0f8d, 0x0f97, +0x0f99, 0x0fbc, +0x102b, 0x1036, +0x1038, 0x1038, +0x103b, 0x103e, +0x1056, 0x1059, +0x105e, 0x1060, +0x1062, 0x1062, +0x1067, 0x1068, +0x1071, 0x1074, +0x1082, 0x1086, +0x109c, 0x109d, +0x135f, 0x135f, +0x1712, 0x1713, +0x1732, 0x1733, +0x1752, 0x1753, +0x1772, 0x1773, +0x17b6, 0x17c8, +0x1885, 0x1886, +0x18a9, 0x18a9, +0x1920, 0x192b, +0x1930, 0x1938, +0x1a17, 0x1a1b, +0x1a55, 0x1a5e, +0x1a61, 0x1a74, +0x1b00, 0x1b04, +0x1b35, 0x1b43, +0x1b80, 0x1b82, +0x1ba1, 0x1ba9, +0x1bac, 0x1bad, +0x1be7, 0x1bf1, +0x1c24, 0x1c35, +0x1cf2, 0x1cf3, +0x1de7, 0x1df4, +0x24b6, 0x24e9, +0x2de0, 0x2dff, +0xa674, 0xa67b, +0xa69e, 0xa69f, +0xa823, 0xa827, +0xa880, 0xa881, +0xa8b4, 0xa8c3, +0xa8c5, 0xa8c5, +0xa926, 0xa92a, +0xa947, 0xa952, +0xa980, 0xa983, +0xa9b4, 0xa9bf, +0xaa29, 0xaa36, +0xaa43, 0xaa43, +0xaa4c, 0xaa4d, +0xaab0, 0xaab0, +0xaab2, 0xaab4, +0xaab7, 0xaab8, +0xaabe, 0xaabe, +0xaaeb, 0xaaef, +0xaaf5, 0xaaf5, +0xabe3, 0xabea, +0xfb1e, 0xfb1e, +0x10376, 0x1037a, +0x10a01, 0x10a03, +0x10a05, 0x10a06, +0x10a0c, 0x10a0f, +0x10d24, 0x10d27, +0x11000, 0x11002, +0x11038, 0x11045, +0x11082, 0x11082, +0x110b0, 0x110b8, +0x11100, 0x11102, +0x11127, 0x11132, +0x11145, 0x11146, +0x11180, 0x11182, +0x111b3, 0x111bf, +0x1122c, 0x11234, +0x11237, 0x11237, +0x1123e, 0x1123e, +0x112df, 0x112e8, +0x11300, 0x11303, +0x1133e, 0x11344, +0x11347, 0x11348, +0x1134b, 0x1134c, +0x11357, 0x11357, +0x11362, 0x11363, +0x11435, 0x11441, +0x11443, 0x11445, +0x114b0, 0x114c1, +0x115af, 0x115b5, +0x115b8, 0x115be, +0x115dc, 0x115dd, +0x11630, 0x1163e, +0x11640, 0x11640, +0x116ab, 0x116b5, +0x1171d, 0x1172a, +0x1182c, 0x11838, +0x11a01, 0x11a0a, +0x11a35, 0x11a39, +0x11a3b, 0x11a3e, +0x11a51, 0x11a5b, +0x11a8a, 0x11a97, +0x11c2f, 0x11c36, +0x11c38, 0x11c3e, +0x11c92, 0x11ca7, +0x11ca9, 0x11cb6, +0x11d31, 0x11d36, +0x11d3a, 0x11d3a, +0x11d3c, 0x11d3d, +0x11d3f, 0x11d41, +0x11d43, 0x11d43, +0x11d47, 0x11d47, +0x11d8a, 0x11d8e, +0x11d90, 0x11d91, +0x11d93, 0x11d96, +0x11ef3, 0x11ef6, +0x16b30, 0x16b36, +0x16f51, 0x16f7e, +0x1bc9e, 0x1bc9e, +0x1e000, 0x1e006, +0x1e008, 0x1e018, +0x1e01b, 0x1e021, +0x1e023, 0x1e024, +0x1e026, 0x1e02a, +0x1e947, 0x1e947, +0x1f130, 0x1f149, +0x1f150, 0x1f169, +0x1f170, 0x1f189, +}; /* END of CR_Other_Alphabetic */ + +/* PROPERTY: 'Other_Default_Ignorable_Code_Point': Binary Property */ +static const OnigCodePoint +CR_Other_Default_Ignorable_Code_Point[] = { 11, +0x034f, 0x034f, +0x115f, 0x1160, +0x17b4, 0x17b5, +0x2065, 0x2065, +0x3164, 0x3164, +0xffa0, 0xffa0, +0xfff0, 0xfff8, +0xe0000, 0xe0000, +0xe0002, 0xe001f, +0xe0080, 0xe00ff, +0xe01f0, 0xe0fff, +}; /* END of CR_Other_Default_Ignorable_Code_Point */ + +/* PROPERTY: 'Other_Grapheme_Extend': Binary Property */ +static const OnigCodePoint +CR_Other_Grapheme_Extend[] = { 23, +0x09be, 0x09be, +0x09d7, 0x09d7, +0x0b3e, 0x0b3e, +0x0b57, 0x0b57, +0x0bbe, 0x0bbe, +0x0bd7, 0x0bd7, +0x0cc2, 0x0cc2, +0x0cd5, 0x0cd6, +0x0d3e, 0x0d3e, +0x0d57, 0x0d57, +0x0dcf, 0x0dcf, +0x0ddf, 0x0ddf, +0x200c, 0x200c, +0x302e, 0x302f, +0xff9e, 0xff9f, +0x1133e, 0x1133e, +0x11357, 0x11357, +0x114b0, 0x114b0, +0x114bd, 0x114bd, +0x115af, 0x115af, +0x1d165, 0x1d165, +0x1d16e, 0x1d172, +0xe0020, 0xe007f, +}; /* END of CR_Other_Grapheme_Extend */ + +/* PROPERTY: 'Other_ID_Continue': Binary Property */ +static const OnigCodePoint +CR_Other_ID_Continue[] = { 4, +0x00b7, 0x00b7, +0x0387, 0x0387, +0x1369, 0x1371, +0x19da, 0x19da, +}; /* END of CR_Other_ID_Continue */ + +/* PROPERTY: 'Other_ID_Start': Binary Property */ +static const OnigCodePoint +CR_Other_ID_Start[] = { 4, +0x1885, 0x1886, +0x2118, 0x2118, +0x212e, 0x212e, +0x309b, 0x309c, +}; /* END of CR_Other_ID_Start */ + +/* PROPERTY: 'Other_Lowercase': Binary Property */ +static const OnigCodePoint +CR_Other_Lowercase[] = { 20, +0x00aa, 0x00aa, +0x00ba, 0x00ba, +0x02b0, 0x02b8, +0x02c0, 0x02c1, +0x02e0, 0x02e4, +0x0345, 0x0345, +0x037a, 0x037a, +0x1d2c, 0x1d6a, +0x1d78, 0x1d78, +0x1d9b, 0x1dbf, +0x2071, 0x2071, +0x207f, 0x207f, +0x2090, 0x209c, +0x2170, 0x217f, +0x24d0, 0x24e9, +0x2c7c, 0x2c7d, +0xa69c, 0xa69d, +0xa770, 0xa770, +0xa7f8, 0xa7f9, +0xab5c, 0xab5f, +}; /* END of CR_Other_Lowercase */ + +/* PROPERTY: 'Other_Math': Binary Property */ +static const OnigCodePoint +CR_Other_Math[] = { 134, +0x005e, 0x005e, +0x03d0, 0x03d2, +0x03d5, 0x03d5, +0x03f0, 0x03f1, +0x03f4, 0x03f5, +0x2016, 0x2016, +0x2032, 0x2034, +0x2040, 0x2040, +0x2061, 0x2064, +0x207d, 0x207e, +0x208d, 0x208e, +0x20d0, 0x20dc, +0x20e1, 0x20e1, +0x20e5, 0x20e6, +0x20eb, 0x20ef, +0x2102, 0x2102, +0x2107, 0x2107, +0x210a, 0x2113, +0x2115, 0x2115, +0x2119, 0x211d, +0x2124, 0x2124, +0x2128, 0x2129, +0x212c, 0x212d, +0x212f, 0x2131, +0x2133, 0x2138, +0x213c, 0x213f, +0x2145, 0x2149, +0x2195, 0x2199, +0x219c, 0x219f, +0x21a1, 0x21a2, +0x21a4, 0x21a5, +0x21a7, 0x21a7, +0x21a9, 0x21ad, +0x21b0, 0x21b1, +0x21b6, 0x21b7, +0x21bc, 0x21cd, +0x21d0, 0x21d1, +0x21d3, 0x21d3, +0x21d5, 0x21db, +0x21dd, 0x21dd, +0x21e4, 0x21e5, +0x2308, 0x230b, +0x23b4, 0x23b5, +0x23b7, 0x23b7, +0x23d0, 0x23d0, +0x23e2, 0x23e2, +0x25a0, 0x25a1, +0x25ae, 0x25b6, +0x25bc, 0x25c0, +0x25c6, 0x25c7, +0x25ca, 0x25cb, +0x25cf, 0x25d3, +0x25e2, 0x25e2, +0x25e4, 0x25e4, +0x25e7, 0x25ec, +0x2605, 0x2606, +0x2640, 0x2640, +0x2642, 0x2642, +0x2660, 0x2663, +0x266d, 0x266e, +0x27c5, 0x27c6, +0x27e6, 0x27ef, +0x2983, 0x2998, +0x29d8, 0x29db, +0x29fc, 0x29fd, +0xfe61, 0xfe61, +0xfe63, 0xfe63, +0xfe68, 0xfe68, +0xff3c, 0xff3c, +0xff3e, 0xff3e, +0x1d400, 0x1d454, +0x1d456, 0x1d49c, +0x1d49e, 0x1d49f, +0x1d4a2, 0x1d4a2, +0x1d4a5, 0x1d4a6, +0x1d4a9, 0x1d4ac, +0x1d4ae, 0x1d4b9, +0x1d4bb, 0x1d4bb, +0x1d4bd, 0x1d4c3, +0x1d4c5, 0x1d505, +0x1d507, 0x1d50a, +0x1d50d, 0x1d514, +0x1d516, 0x1d51c, +0x1d51e, 0x1d539, +0x1d53b, 0x1d53e, +0x1d540, 0x1d544, +0x1d546, 0x1d546, +0x1d54a, 0x1d550, +0x1d552, 0x1d6a5, +0x1d6a8, 0x1d6c0, +0x1d6c2, 0x1d6da, +0x1d6dc, 0x1d6fa, +0x1d6fc, 0x1d714, +0x1d716, 0x1d734, +0x1d736, 0x1d74e, +0x1d750, 0x1d76e, +0x1d770, 0x1d788, +0x1d78a, 0x1d7a8, +0x1d7aa, 0x1d7c2, +0x1d7c4, 0x1d7cb, +0x1d7ce, 0x1d7ff, +0x1ee00, 0x1ee03, +0x1ee05, 0x1ee1f, +0x1ee21, 0x1ee22, +0x1ee24, 0x1ee24, +0x1ee27, 0x1ee27, +0x1ee29, 0x1ee32, +0x1ee34, 0x1ee37, +0x1ee39, 0x1ee39, +0x1ee3b, 0x1ee3b, +0x1ee42, 0x1ee42, +0x1ee47, 0x1ee47, +0x1ee49, 0x1ee49, +0x1ee4b, 0x1ee4b, +0x1ee4d, 0x1ee4f, +0x1ee51, 0x1ee52, +0x1ee54, 0x1ee54, +0x1ee57, 0x1ee57, +0x1ee59, 0x1ee59, +0x1ee5b, 0x1ee5b, +0x1ee5d, 0x1ee5d, +0x1ee5f, 0x1ee5f, +0x1ee61, 0x1ee62, +0x1ee64, 0x1ee64, +0x1ee67, 0x1ee6a, +0x1ee6c, 0x1ee72, +0x1ee74, 0x1ee77, +0x1ee79, 0x1ee7c, +0x1ee7e, 0x1ee7e, +0x1ee80, 0x1ee89, +0x1ee8b, 0x1ee9b, +0x1eea1, 0x1eea3, +0x1eea5, 0x1eea9, +0x1eeab, 0x1eebb, +}; /* END of CR_Other_Math */ + +/* PROPERTY: 'Other_Uppercase': Binary Property */ +static const OnigCodePoint +CR_Other_Uppercase[] = { 5, +0x2160, 0x216f, +0x24b6, 0x24cf, +0x1f130, 0x1f149, +0x1f150, 0x1f169, +0x1f170, 0x1f189, +}; /* END of CR_Other_Uppercase */ + +/* PROPERTY: 'P': Major Category */ +#define CR_P CR_Punct + +/* PROPERTY: 'Pahawh_Hmong': Script */ +static const OnigCodePoint +CR_Pahawh_Hmong[] = { 5, +0x16b00, 0x16b45, +0x16b50, 0x16b59, +0x16b5b, 0x16b61, +0x16b63, 0x16b77, +0x16b7d, 0x16b8f, +}; /* END of CR_Pahawh_Hmong */ + +/* PROPERTY: 'Palmyrene': Script */ +static const OnigCodePoint +CR_Palmyrene[] = { 1, +0x10860, 0x1087f, +}; /* END of CR_Palmyrene */ + +/* PROPERTY: 'Pattern_Syntax': Binary Property */ +static const OnigCodePoint +CR_Pattern_Syntax[] = { 28, +0x0021, 0x002f, +0x003a, 0x0040, +0x005b, 0x005e, +0x0060, 0x0060, +0x007b, 0x007e, +0x00a1, 0x00a7, +0x00a9, 0x00a9, +0x00ab, 0x00ac, +0x00ae, 0x00ae, +0x00b0, 0x00b1, +0x00b6, 0x00b6, +0x00bb, 0x00bb, +0x00bf, 0x00bf, +0x00d7, 0x00d7, +0x00f7, 0x00f7, +0x2010, 0x2027, +0x2030, 0x203e, +0x2041, 0x2053, +0x2055, 0x205e, +0x2190, 0x245f, +0x2500, 0x2775, +0x2794, 0x2bff, +0x2e00, 0x2e7f, +0x3001, 0x3003, +0x3008, 0x3020, +0x3030, 0x3030, +0xfd3e, 0xfd3f, +0xfe45, 0xfe46, +}; /* END of CR_Pattern_Syntax */ + +/* PROPERTY: 'Pattern_White_Space': Binary Property */ +static const OnigCodePoint +CR_Pattern_White_Space[] = { 5, +0x0009, 0x000d, +0x0020, 0x0020, +0x0085, 0x0085, +0x200e, 0x200f, +0x2028, 0x2029, +}; /* END of CR_Pattern_White_Space */ + +/* PROPERTY: 'Pau_Cin_Hau': Script */ +static const OnigCodePoint +CR_Pau_Cin_Hau[] = { 1, +0x11ac0, 0x11af8, +}; /* END of CR_Pau_Cin_Hau */ + +/* PROPERTY: 'Pc': General Category */ +static const OnigCodePoint +CR_Pc[] = { 6, +0x005f, 0x005f, +0x203f, 0x2040, +0x2054, 0x2054, +0xfe33, 0xfe34, +0xfe4d, 0xfe4f, +0xff3f, 0xff3f, +}; /* END of CR_Pc */ + +/* PROPERTY: 'Pd': General Category */ +static const OnigCodePoint +CR_Pd[] = { 17, +0x002d, 0x002d, +0x058a, 0x058a, +0x05be, 0x05be, +0x1400, 0x1400, +0x1806, 0x1806, +0x2010, 0x2015, +0x2e17, 0x2e17, +0x2e1a, 0x2e1a, +0x2e3a, 0x2e3b, +0x2e40, 0x2e40, +0x301c, 0x301c, +0x3030, 0x3030, +0x30a0, 0x30a0, +0xfe31, 0xfe32, +0xfe58, 0xfe58, +0xfe63, 0xfe63, +0xff0d, 0xff0d, +}; /* END of CR_Pd */ + +/* PROPERTY: 'Pe': General Category */ +static const OnigCodePoint +CR_Pe[] = { 72, +0x0029, 0x0029, +0x005d, 0x005d, +0x007d, 0x007d, +0x0f3b, 0x0f3b, +0x0f3d, 0x0f3d, +0x169c, 0x169c, +0x2046, 0x2046, +0x207e, 0x207e, +0x208e, 0x208e, +0x2309, 0x2309, +0x230b, 0x230b, +0x232a, 0x232a, +0x2769, 0x2769, +0x276b, 0x276b, +0x276d, 0x276d, +0x276f, 0x276f, +0x2771, 0x2771, +0x2773, 0x2773, +0x2775, 0x2775, +0x27c6, 0x27c6, +0x27e7, 0x27e7, +0x27e9, 0x27e9, +0x27eb, 0x27eb, +0x27ed, 0x27ed, +0x27ef, 0x27ef, +0x2984, 0x2984, +0x2986, 0x2986, +0x2988, 0x2988, +0x298a, 0x298a, +0x298c, 0x298c, +0x298e, 0x298e, +0x2990, 0x2990, +0x2992, 0x2992, +0x2994, 0x2994, +0x2996, 0x2996, +0x2998, 0x2998, +0x29d9, 0x29d9, +0x29db, 0x29db, +0x29fd, 0x29fd, +0x2e23, 0x2e23, +0x2e25, 0x2e25, +0x2e27, 0x2e27, +0x2e29, 0x2e29, +0x3009, 0x3009, +0x300b, 0x300b, +0x300d, 0x300d, +0x300f, 0x300f, +0x3011, 0x3011, +0x3015, 0x3015, +0x3017, 0x3017, +0x3019, 0x3019, +0x301b, 0x301b, +0x301e, 0x301f, +0xfd3e, 0xfd3e, +0xfe18, 0xfe18, +0xfe36, 0xfe36, +0xfe38, 0xfe38, +0xfe3a, 0xfe3a, +0xfe3c, 0xfe3c, +0xfe3e, 0xfe3e, +0xfe40, 0xfe40, +0xfe42, 0xfe42, +0xfe44, 0xfe44, +0xfe48, 0xfe48, +0xfe5a, 0xfe5a, +0xfe5c, 0xfe5c, +0xfe5e, 0xfe5e, +0xff09, 0xff09, +0xff3d, 0xff3d, +0xff5d, 0xff5d, +0xff60, 0xff60, +0xff63, 0xff63, +}; /* END of CR_Pe */ + +/* PROPERTY: 'Pf': General Category */ +static const OnigCodePoint +CR_Pf[] = { 10, +0x00bb, 0x00bb, +0x2019, 0x2019, +0x201d, 0x201d, +0x203a, 0x203a, +0x2e03, 0x2e03, +0x2e05, 0x2e05, +0x2e0a, 0x2e0a, +0x2e0d, 0x2e0d, +0x2e1d, 0x2e1d, +0x2e21, 0x2e21, +}; /* END of CR_Pf */ + +/* PROPERTY: 'Phags_Pa': Script */ +static const OnigCodePoint +CR_Phags_Pa[] = { 1, +0xa840, 0xa877, +}; /* END of CR_Phags_Pa */ + +/* PROPERTY: 'Phoenician': Script */ +static const OnigCodePoint +CR_Phoenician[] = { 2, +0x10900, 0x1091b, +0x1091f, 0x1091f, +}; /* END of CR_Phoenician */ + +/* PROPERTY: 'Pi': General Category */ +static const OnigCodePoint +CR_Pi[] = { 11, +0x00ab, 0x00ab, +0x2018, 0x2018, +0x201b, 0x201c, +0x201f, 0x201f, +0x2039, 0x2039, +0x2e02, 0x2e02, +0x2e04, 0x2e04, +0x2e09, 0x2e09, +0x2e0c, 0x2e0c, +0x2e1c, 0x2e1c, +0x2e20, 0x2e20, +}; /* END of CR_Pi */ + +/* PROPERTY: 'Po': General Category */ +static const OnigCodePoint +CR_Po[] = { 175, +0x0021, 0x0023, +0x0025, 0x0027, +0x002a, 0x002a, +0x002c, 0x002c, +0x002e, 0x002f, +0x003a, 0x003b, +0x003f, 0x0040, +0x005c, 0x005c, +0x00a1, 0x00a1, +0x00a7, 0x00a7, +0x00b6, 0x00b7, +0x00bf, 0x00bf, +0x037e, 0x037e, +0x0387, 0x0387, +0x055a, 0x055f, +0x0589, 0x0589, +0x05c0, 0x05c0, +0x05c3, 0x05c3, +0x05c6, 0x05c6, +0x05f3, 0x05f4, +0x0609, 0x060a, +0x060c, 0x060d, +0x061b, 0x061b, +0x061e, 0x061f, +0x066a, 0x066d, +0x06d4, 0x06d4, +0x0700, 0x070d, +0x07f7, 0x07f9, +0x0830, 0x083e, +0x085e, 0x085e, +0x0964, 0x0965, +0x0970, 0x0970, +0x09fd, 0x09fd, +0x0a76, 0x0a76, +0x0af0, 0x0af0, +0x0c84, 0x0c84, +0x0df4, 0x0df4, +0x0e4f, 0x0e4f, +0x0e5a, 0x0e5b, +0x0f04, 0x0f12, +0x0f14, 0x0f14, +0x0f85, 0x0f85, +0x0fd0, 0x0fd4, +0x0fd9, 0x0fda, +0x104a, 0x104f, +0x10fb, 0x10fb, +0x1360, 0x1368, +0x166d, 0x166e, +0x16eb, 0x16ed, +0x1735, 0x1736, +0x17d4, 0x17d6, +0x17d8, 0x17da, +0x1800, 0x1805, +0x1807, 0x180a, +0x1944, 0x1945, +0x1a1e, 0x1a1f, +0x1aa0, 0x1aa6, +0x1aa8, 0x1aad, +0x1b5a, 0x1b60, +0x1bfc, 0x1bff, +0x1c3b, 0x1c3f, +0x1c7e, 0x1c7f, +0x1cc0, 0x1cc7, +0x1cd3, 0x1cd3, +0x2016, 0x2017, +0x2020, 0x2027, +0x2030, 0x2038, +0x203b, 0x203e, +0x2041, 0x2043, +0x2047, 0x2051, +0x2053, 0x2053, +0x2055, 0x205e, +0x2cf9, 0x2cfc, +0x2cfe, 0x2cff, +0x2d70, 0x2d70, +0x2e00, 0x2e01, +0x2e06, 0x2e08, +0x2e0b, 0x2e0b, +0x2e0e, 0x2e16, +0x2e18, 0x2e19, +0x2e1b, 0x2e1b, +0x2e1e, 0x2e1f, +0x2e2a, 0x2e2e, +0x2e30, 0x2e39, +0x2e3c, 0x2e3f, +0x2e41, 0x2e41, +0x2e43, 0x2e4e, +0x3001, 0x3003, +0x303d, 0x303d, +0x30fb, 0x30fb, +0xa4fe, 0xa4ff, +0xa60d, 0xa60f, +0xa673, 0xa673, +0xa67e, 0xa67e, +0xa6f2, 0xa6f7, +0xa874, 0xa877, +0xa8ce, 0xa8cf, +0xa8f8, 0xa8fa, +0xa8fc, 0xa8fc, +0xa92e, 0xa92f, +0xa95f, 0xa95f, +0xa9c1, 0xa9cd, +0xa9de, 0xa9df, +0xaa5c, 0xaa5f, +0xaade, 0xaadf, +0xaaf0, 0xaaf1, +0xabeb, 0xabeb, +0xfe10, 0xfe16, +0xfe19, 0xfe19, +0xfe30, 0xfe30, +0xfe45, 0xfe46, +0xfe49, 0xfe4c, +0xfe50, 0xfe52, +0xfe54, 0xfe57, +0xfe5f, 0xfe61, +0xfe68, 0xfe68, +0xfe6a, 0xfe6b, +0xff01, 0xff03, +0xff05, 0xff07, +0xff0a, 0xff0a, +0xff0c, 0xff0c, +0xff0e, 0xff0f, +0xff1a, 0xff1b, +0xff1f, 0xff20, +0xff3c, 0xff3c, +0xff61, 0xff61, +0xff64, 0xff65, +0x10100, 0x10102, +0x1039f, 0x1039f, +0x103d0, 0x103d0, +0x1056f, 0x1056f, +0x10857, 0x10857, +0x1091f, 0x1091f, +0x1093f, 0x1093f, +0x10a50, 0x10a58, +0x10a7f, 0x10a7f, +0x10af0, 0x10af6, +0x10b39, 0x10b3f, +0x10b99, 0x10b9c, +0x10f55, 0x10f59, +0x11047, 0x1104d, +0x110bb, 0x110bc, +0x110be, 0x110c1, +0x11140, 0x11143, +0x11174, 0x11175, +0x111c5, 0x111c8, +0x111cd, 0x111cd, +0x111db, 0x111db, +0x111dd, 0x111df, +0x11238, 0x1123d, +0x112a9, 0x112a9, +0x1144b, 0x1144f, +0x1145b, 0x1145b, +0x1145d, 0x1145d, +0x114c6, 0x114c6, +0x115c1, 0x115d7, +0x11641, 0x11643, +0x11660, 0x1166c, +0x1173c, 0x1173e, +0x1183b, 0x1183b, +0x11a3f, 0x11a46, +0x11a9a, 0x11a9c, +0x11a9e, 0x11aa2, +0x11c41, 0x11c45, +0x11c70, 0x11c71, +0x11ef7, 0x11ef8, +0x12470, 0x12474, +0x16a6e, 0x16a6f, +0x16af5, 0x16af5, +0x16b37, 0x16b3b, +0x16b44, 0x16b44, +0x16e97, 0x16e9a, +0x1bc9f, 0x1bc9f, +0x1da87, 0x1da8b, +0x1e95e, 0x1e95f, +}; /* END of CR_Po */ + +/* PROPERTY: 'Prepended_Concatenation_Mark': Binary Property */ +static const OnigCodePoint +CR_Prepended_Concatenation_Mark[] = { 6, +0x0600, 0x0605, +0x06dd, 0x06dd, +0x070f, 0x070f, +0x08e2, 0x08e2, +0x110bd, 0x110bd, +0x110cd, 0x110cd, +}; /* END of CR_Prepended_Concatenation_Mark */ + +/* PROPERTY: 'Ps': General Category */ +static const OnigCodePoint +CR_Ps[] = { 75, +0x0028, 0x0028, +0x005b, 0x005b, +0x007b, 0x007b, +0x0f3a, 0x0f3a, +0x0f3c, 0x0f3c, +0x169b, 0x169b, +0x201a, 0x201a, +0x201e, 0x201e, +0x2045, 0x2045, +0x207d, 0x207d, +0x208d, 0x208d, +0x2308, 0x2308, +0x230a, 0x230a, +0x2329, 0x2329, +0x2768, 0x2768, +0x276a, 0x276a, +0x276c, 0x276c, +0x276e, 0x276e, +0x2770, 0x2770, +0x2772, 0x2772, +0x2774, 0x2774, +0x27c5, 0x27c5, +0x27e6, 0x27e6, +0x27e8, 0x27e8, +0x27ea, 0x27ea, +0x27ec, 0x27ec, +0x27ee, 0x27ee, +0x2983, 0x2983, +0x2985, 0x2985, +0x2987, 0x2987, +0x2989, 0x2989, +0x298b, 0x298b, +0x298d, 0x298d, +0x298f, 0x298f, +0x2991, 0x2991, +0x2993, 0x2993, +0x2995, 0x2995, +0x2997, 0x2997, +0x29d8, 0x29d8, +0x29da, 0x29da, +0x29fc, 0x29fc, +0x2e22, 0x2e22, +0x2e24, 0x2e24, +0x2e26, 0x2e26, +0x2e28, 0x2e28, +0x2e42, 0x2e42, +0x3008, 0x3008, +0x300a, 0x300a, +0x300c, 0x300c, +0x300e, 0x300e, +0x3010, 0x3010, +0x3014, 0x3014, +0x3016, 0x3016, +0x3018, 0x3018, +0x301a, 0x301a, +0x301d, 0x301d, +0xfd3f, 0xfd3f, +0xfe17, 0xfe17, +0xfe35, 0xfe35, +0xfe37, 0xfe37, +0xfe39, 0xfe39, +0xfe3b, 0xfe3b, +0xfe3d, 0xfe3d, +0xfe3f, 0xfe3f, +0xfe41, 0xfe41, +0xfe43, 0xfe43, +0xfe47, 0xfe47, +0xfe59, 0xfe59, +0xfe5b, 0xfe5b, +0xfe5d, 0xfe5d, +0xff08, 0xff08, +0xff3b, 0xff3b, +0xff5b, 0xff5b, +0xff5f, 0xff5f, +0xff62, 0xff62, +}; /* END of CR_Ps */ + +/* PROPERTY: 'Psalter_Pahlavi': Script */ +static const OnigCodePoint +CR_Psalter_Pahlavi[] = { 3, +0x10b80, 0x10b91, +0x10b99, 0x10b9c, +0x10ba9, 0x10baf, +}; /* END of CR_Psalter_Pahlavi */ + +/* PROPERTY: 'Quotation_Mark': Binary Property */ +static const OnigCodePoint +CR_Quotation_Mark[] = { 13, +0x0022, 0x0022, +0x0027, 0x0027, +0x00ab, 0x00ab, +0x00bb, 0x00bb, +0x2018, 0x201f, +0x2039, 0x203a, +0x2e42, 0x2e42, +0x300c, 0x300f, +0x301d, 0x301f, +0xfe41, 0xfe44, +0xff02, 0xff02, +0xff07, 0xff07, +0xff62, 0xff63, +}; /* END of CR_Quotation_Mark */ + +/* PROPERTY: 'Radical': Binary Property */ +static const OnigCodePoint +CR_Radical[] = { 3, +0x2e80, 0x2e99, +0x2e9b, 0x2ef3, +0x2f00, 0x2fd5, +}; /* END of CR_Radical */ + +/* PROPERTY: 'Regional_Indicator': Binary Property */ +static const OnigCodePoint +CR_Regional_Indicator[] = { 1, +0x1f1e6, 0x1f1ff, +}; /* END of CR_Regional_Indicator */ + +/* PROPERTY: 'Rejang': Script */ +static const OnigCodePoint +CR_Rejang[] = { 2, +0xa930, 0xa953, +0xa95f, 0xa95f, +}; /* END of CR_Rejang */ + +/* PROPERTY: 'Runic': Script */ +static const OnigCodePoint +CR_Runic[] = { 2, +0x16a0, 0x16ea, +0x16ee, 0x16f8, +}; /* END of CR_Runic */ + +/* PROPERTY: 'S': Major Category */ +static const OnigCodePoint +CR_S[] = { 220, +0x0024, 0x0024, +0x002b, 0x002b, +0x003c, 0x003e, +0x005e, 0x005e, +0x0060, 0x0060, +0x007c, 0x007c, +0x007e, 0x007e, +0x00a2, 0x00a6, +0x00a8, 0x00a9, +0x00ac, 0x00ac, +0x00ae, 0x00b1, +0x00b4, 0x00b4, +0x00b8, 0x00b8, +0x00d7, 0x00d7, +0x00f7, 0x00f7, +0x02c2, 0x02c5, +0x02d2, 0x02df, +0x02e5, 0x02eb, +0x02ed, 0x02ed, +0x02ef, 0x02ff, +0x0375, 0x0375, +0x0384, 0x0385, +0x03f6, 0x03f6, +0x0482, 0x0482, +0x058d, 0x058f, +0x0606, 0x0608, +0x060b, 0x060b, +0x060e, 0x060f, +0x06de, 0x06de, +0x06e9, 0x06e9, +0x06fd, 0x06fe, +0x07f6, 0x07f6, +0x07fe, 0x07ff, +0x09f2, 0x09f3, +0x09fa, 0x09fb, +0x0af1, 0x0af1, +0x0b70, 0x0b70, +0x0bf3, 0x0bfa, +0x0c7f, 0x0c7f, +0x0d4f, 0x0d4f, +0x0d79, 0x0d79, +0x0e3f, 0x0e3f, +0x0f01, 0x0f03, +0x0f13, 0x0f13, +0x0f15, 0x0f17, +0x0f1a, 0x0f1f, +0x0f34, 0x0f34, +0x0f36, 0x0f36, +0x0f38, 0x0f38, +0x0fbe, 0x0fc5, +0x0fc7, 0x0fcc, +0x0fce, 0x0fcf, +0x0fd5, 0x0fd8, +0x109e, 0x109f, +0x1390, 0x1399, +0x17db, 0x17db, +0x1940, 0x1940, +0x19de, 0x19ff, +0x1b61, 0x1b6a, +0x1b74, 0x1b7c, +0x1fbd, 0x1fbd, +0x1fbf, 0x1fc1, +0x1fcd, 0x1fcf, +0x1fdd, 0x1fdf, +0x1fed, 0x1fef, +0x1ffd, 0x1ffe, +0x2044, 0x2044, +0x2052, 0x2052, +0x207a, 0x207c, +0x208a, 0x208c, +0x20a0, 0x20bf, +0x2100, 0x2101, +0x2103, 0x2106, +0x2108, 0x2109, +0x2114, 0x2114, +0x2116, 0x2118, +0x211e, 0x2123, +0x2125, 0x2125, +0x2127, 0x2127, +0x2129, 0x2129, +0x212e, 0x212e, +0x213a, 0x213b, +0x2140, 0x2144, +0x214a, 0x214d, +0x214f, 0x214f, +0x218a, 0x218b, +0x2190, 0x2307, +0x230c, 0x2328, +0x232b, 0x2426, +0x2440, 0x244a, +0x249c, 0x24e9, +0x2500, 0x2767, +0x2794, 0x27c4, +0x27c7, 0x27e5, +0x27f0, 0x2982, +0x2999, 0x29d7, +0x29dc, 0x29fb, +0x29fe, 0x2b73, +0x2b76, 0x2b95, +0x2b98, 0x2bc8, +0x2bca, 0x2bfe, +0x2ce5, 0x2cea, +0x2e80, 0x2e99, +0x2e9b, 0x2ef3, +0x2f00, 0x2fd5, +0x2ff0, 0x2ffb, +0x3004, 0x3004, +0x3012, 0x3013, +0x3020, 0x3020, +0x3036, 0x3037, +0x303e, 0x303f, +0x309b, 0x309c, +0x3190, 0x3191, +0x3196, 0x319f, +0x31c0, 0x31e3, +0x3200, 0x321e, +0x322a, 0x3247, +0x3250, 0x3250, +0x3260, 0x327f, +0x328a, 0x32b0, +0x32c0, 0x32fe, +0x3300, 0x33ff, +0x4dc0, 0x4dff, +0xa490, 0xa4c6, +0xa700, 0xa716, +0xa720, 0xa721, +0xa789, 0xa78a, +0xa828, 0xa82b, +0xa836, 0xa839, +0xaa77, 0xaa79, +0xab5b, 0xab5b, +0xfb29, 0xfb29, +0xfbb2, 0xfbc1, +0xfdfc, 0xfdfd, +0xfe62, 0xfe62, +0xfe64, 0xfe66, +0xfe69, 0xfe69, +0xff04, 0xff04, +0xff0b, 0xff0b, +0xff1c, 0xff1e, +0xff3e, 0xff3e, +0xff40, 0xff40, +0xff5c, 0xff5c, +0xff5e, 0xff5e, +0xffe0, 0xffe6, +0xffe8, 0xffee, +0xfffc, 0xfffd, +0x10137, 0x1013f, +0x10179, 0x10189, +0x1018c, 0x1018e, +0x10190, 0x1019b, +0x101a0, 0x101a0, +0x101d0, 0x101fc, +0x10877, 0x10878, +0x10ac8, 0x10ac8, +0x1173f, 0x1173f, +0x16b3c, 0x16b3f, +0x16b45, 0x16b45, +0x1bc9c, 0x1bc9c, +0x1d000, 0x1d0f5, +0x1d100, 0x1d126, +0x1d129, 0x1d164, +0x1d16a, 0x1d16c, +0x1d183, 0x1d184, +0x1d18c, 0x1d1a9, +0x1d1ae, 0x1d1e8, +0x1d200, 0x1d241, +0x1d245, 0x1d245, +0x1d300, 0x1d356, +0x1d6c1, 0x1d6c1, +0x1d6db, 0x1d6db, +0x1d6fb, 0x1d6fb, +0x1d715, 0x1d715, +0x1d735, 0x1d735, +0x1d74f, 0x1d74f, +0x1d76f, 0x1d76f, +0x1d789, 0x1d789, +0x1d7a9, 0x1d7a9, +0x1d7c3, 0x1d7c3, +0x1d800, 0x1d9ff, +0x1da37, 0x1da3a, +0x1da6d, 0x1da74, +0x1da76, 0x1da83, +0x1da85, 0x1da86, +0x1ecac, 0x1ecac, +0x1ecb0, 0x1ecb0, +0x1eef0, 0x1eef1, +0x1f000, 0x1f02b, +0x1f030, 0x1f093, +0x1f0a0, 0x1f0ae, +0x1f0b1, 0x1f0bf, +0x1f0c1, 0x1f0cf, +0x1f0d1, 0x1f0f5, +0x1f110, 0x1f16b, +0x1f170, 0x1f1ac, +0x1f1e6, 0x1f202, +0x1f210, 0x1f23b, +0x1f240, 0x1f248, +0x1f250, 0x1f251, +0x1f260, 0x1f265, +0x1f300, 0x1f6d4, +0x1f6e0, 0x1f6ec, +0x1f6f0, 0x1f6f9, +0x1f700, 0x1f773, +0x1f780, 0x1f7d8, +0x1f800, 0x1f80b, +0x1f810, 0x1f847, +0x1f850, 0x1f859, +0x1f860, 0x1f887, +0x1f890, 0x1f8ad, +0x1f900, 0x1f90b, +0x1f910, 0x1f93e, +0x1f940, 0x1f970, +0x1f973, 0x1f976, +0x1f97a, 0x1f97a, +0x1f97c, 0x1f9a2, +0x1f9b0, 0x1f9b9, +0x1f9c0, 0x1f9c2, +0x1f9d0, 0x1f9ff, +0x1fa60, 0x1fa6d, +}; /* END of CR_S */ + +/* PROPERTY: 'Samaritan': Script */ +static const OnigCodePoint +CR_Samaritan[] = { 2, +0x0800, 0x082d, +0x0830, 0x083e, +}; /* END of CR_Samaritan */ + +/* PROPERTY: 'Saurashtra': Script */ +static const OnigCodePoint +CR_Saurashtra[] = { 2, +0xa880, 0xa8c5, +0xa8ce, 0xa8d9, +}; /* END of CR_Saurashtra */ + +/* PROPERTY: 'Sc': General Category */ +static const OnigCodePoint +CR_Sc[] = { 19, +0x0024, 0x0024, +0x00a2, 0x00a5, +0x058f, 0x058f, +0x060b, 0x060b, +0x07fe, 0x07ff, +0x09f2, 0x09f3, +0x09fb, 0x09fb, +0x0af1, 0x0af1, +0x0bf9, 0x0bf9, +0x0e3f, 0x0e3f, +0x17db, 0x17db, +0x20a0, 0x20bf, +0xa838, 0xa838, +0xfdfc, 0xfdfc, +0xfe69, 0xfe69, +0xff04, 0xff04, +0xffe0, 0xffe1, +0xffe5, 0xffe6, +0x1ecb0, 0x1ecb0, +}; /* END of CR_Sc */ + +/* PROPERTY: 'Sentence_Terminal': Binary Property */ +static const OnigCodePoint +CR_Sentence_Terminal[] = { 74, +0x0021, 0x0021, +0x002e, 0x002e, +0x003f, 0x003f, +0x0589, 0x0589, +0x061e, 0x061f, +0x06d4, 0x06d4, +0x0700, 0x0702, +0x07f9, 0x07f9, +0x0837, 0x0837, +0x0839, 0x0839, +0x083d, 0x083e, +0x0964, 0x0965, +0x104a, 0x104b, +0x1362, 0x1362, +0x1367, 0x1368, +0x166e, 0x166e, +0x1735, 0x1736, +0x1803, 0x1803, +0x1809, 0x1809, +0x1944, 0x1945, +0x1aa8, 0x1aab, +0x1b5a, 0x1b5b, +0x1b5e, 0x1b5f, +0x1c3b, 0x1c3c, +0x1c7e, 0x1c7f, +0x203c, 0x203d, +0x2047, 0x2049, +0x2e2e, 0x2e2e, +0x2e3c, 0x2e3c, +0x3002, 0x3002, +0xa4ff, 0xa4ff, +0xa60e, 0xa60f, +0xa6f3, 0xa6f3, +0xa6f7, 0xa6f7, +0xa876, 0xa877, +0xa8ce, 0xa8cf, +0xa92f, 0xa92f, +0xa9c8, 0xa9c9, +0xaa5d, 0xaa5f, +0xaaf0, 0xaaf1, +0xabeb, 0xabeb, +0xfe52, 0xfe52, +0xfe56, 0xfe57, +0xff01, 0xff01, +0xff0e, 0xff0e, +0xff1f, 0xff1f, +0xff61, 0xff61, +0x10a56, 0x10a57, +0x10f55, 0x10f59, +0x11047, 0x11048, +0x110be, 0x110c1, +0x11141, 0x11143, +0x111c5, 0x111c6, +0x111cd, 0x111cd, +0x111de, 0x111df, +0x11238, 0x11239, +0x1123b, 0x1123c, +0x112a9, 0x112a9, +0x1144b, 0x1144c, +0x115c2, 0x115c3, +0x115c9, 0x115d7, +0x11641, 0x11642, +0x1173c, 0x1173e, +0x11a42, 0x11a43, +0x11a9b, 0x11a9c, +0x11c41, 0x11c42, +0x11ef7, 0x11ef8, +0x16a6e, 0x16a6f, +0x16af5, 0x16af5, +0x16b37, 0x16b38, +0x16b44, 0x16b44, +0x16e98, 0x16e98, +0x1bc9f, 0x1bc9f, +0x1da88, 0x1da88, +}; /* END of CR_Sentence_Terminal */ + +/* PROPERTY: 'Sharada': Script */ +static const OnigCodePoint +CR_Sharada[] = { 2, +0x11180, 0x111cd, +0x111d0, 0x111df, +}; /* END of CR_Sharada */ + +/* PROPERTY: 'Shavian': Script */ +static const OnigCodePoint +CR_Shavian[] = { 1, +0x10450, 0x1047f, +}; /* END of CR_Shavian */ + +/* PROPERTY: 'Siddham': Script */ +static const OnigCodePoint +CR_Siddham[] = { 2, +0x11580, 0x115b5, +0x115b8, 0x115dd, +}; /* END of CR_Siddham */ + +/* PROPERTY: 'SignWriting': Script */ +static const OnigCodePoint +CR_SignWriting[] = { 3, +0x1d800, 0x1da8b, +0x1da9b, 0x1da9f, +0x1daa1, 0x1daaf, +}; /* END of CR_SignWriting */ + +/* PROPERTY: 'Sinhala': Script */ +static const OnigCodePoint +CR_Sinhala[] = { 13, +0x0d82, 0x0d83, +0x0d85, 0x0d96, +0x0d9a, 0x0db1, +0x0db3, 0x0dbb, +0x0dbd, 0x0dbd, +0x0dc0, 0x0dc6, +0x0dca, 0x0dca, +0x0dcf, 0x0dd4, +0x0dd6, 0x0dd6, +0x0dd8, 0x0ddf, +0x0de6, 0x0def, +0x0df2, 0x0df4, +0x111e1, 0x111f4, +}; /* END of CR_Sinhala */ + +/* PROPERTY: 'Sk': General Category */ +static const OnigCodePoint +CR_Sk[] = { 29, +0x005e, 0x005e, +0x0060, 0x0060, +0x00a8, 0x00a8, +0x00af, 0x00af, +0x00b4, 0x00b4, +0x00b8, 0x00b8, +0x02c2, 0x02c5, +0x02d2, 0x02df, +0x02e5, 0x02eb, +0x02ed, 0x02ed, +0x02ef, 0x02ff, +0x0375, 0x0375, +0x0384, 0x0385, +0x1fbd, 0x1fbd, +0x1fbf, 0x1fc1, +0x1fcd, 0x1fcf, +0x1fdd, 0x1fdf, +0x1fed, 0x1fef, +0x1ffd, 0x1ffe, +0x309b, 0x309c, +0xa700, 0xa716, +0xa720, 0xa721, +0xa789, 0xa78a, +0xab5b, 0xab5b, +0xfbb2, 0xfbc1, +0xff3e, 0xff3e, +0xff40, 0xff40, +0xffe3, 0xffe3, +0x1f3fb, 0x1f3ff, +}; /* END of CR_Sk */ + +/* PROPERTY: 'Sm': General Category */ +static const OnigCodePoint +CR_Sm[] = { 64, +0x002b, 0x002b, +0x003c, 0x003e, +0x007c, 0x007c, +0x007e, 0x007e, +0x00ac, 0x00ac, +0x00b1, 0x00b1, +0x00d7, 0x00d7, +0x00f7, 0x00f7, +0x03f6, 0x03f6, +0x0606, 0x0608, +0x2044, 0x2044, +0x2052, 0x2052, +0x207a, 0x207c, +0x208a, 0x208c, +0x2118, 0x2118, +0x2140, 0x2144, +0x214b, 0x214b, +0x2190, 0x2194, +0x219a, 0x219b, +0x21a0, 0x21a0, +0x21a3, 0x21a3, +0x21a6, 0x21a6, +0x21ae, 0x21ae, +0x21ce, 0x21cf, +0x21d2, 0x21d2, +0x21d4, 0x21d4, +0x21f4, 0x22ff, +0x2320, 0x2321, +0x237c, 0x237c, +0x239b, 0x23b3, +0x23dc, 0x23e1, +0x25b7, 0x25b7, +0x25c1, 0x25c1, +0x25f8, 0x25ff, +0x266f, 0x266f, +0x27c0, 0x27c4, +0x27c7, 0x27e5, +0x27f0, 0x27ff, +0x2900, 0x2982, +0x2999, 0x29d7, +0x29dc, 0x29fb, +0x29fe, 0x2aff, +0x2b30, 0x2b44, +0x2b47, 0x2b4c, +0xfb29, 0xfb29, +0xfe62, 0xfe62, +0xfe64, 0xfe66, +0xff0b, 0xff0b, +0xff1c, 0xff1e, +0xff5c, 0xff5c, +0xff5e, 0xff5e, +0xffe2, 0xffe2, +0xffe9, 0xffec, +0x1d6c1, 0x1d6c1, +0x1d6db, 0x1d6db, +0x1d6fb, 0x1d6fb, +0x1d715, 0x1d715, +0x1d735, 0x1d735, +0x1d74f, 0x1d74f, +0x1d76f, 0x1d76f, +0x1d789, 0x1d789, +0x1d7a9, 0x1d7a9, +0x1d7c3, 0x1d7c3, +0x1eef0, 0x1eef1, +}; /* END of CR_Sm */ + +/* PROPERTY: 'So': General Category */ +static const OnigCodePoint +CR_So[] = { 174, +0x00a6, 0x00a6, +0x00a9, 0x00a9, +0x00ae, 0x00ae, +0x00b0, 0x00b0, +0x0482, 0x0482, +0x058d, 0x058e, +0x060e, 0x060f, +0x06de, 0x06de, +0x06e9, 0x06e9, +0x06fd, 0x06fe, +0x07f6, 0x07f6, +0x09fa, 0x09fa, +0x0b70, 0x0b70, +0x0bf3, 0x0bf8, +0x0bfa, 0x0bfa, +0x0c7f, 0x0c7f, +0x0d4f, 0x0d4f, +0x0d79, 0x0d79, +0x0f01, 0x0f03, +0x0f13, 0x0f13, +0x0f15, 0x0f17, +0x0f1a, 0x0f1f, +0x0f34, 0x0f34, +0x0f36, 0x0f36, +0x0f38, 0x0f38, +0x0fbe, 0x0fc5, +0x0fc7, 0x0fcc, +0x0fce, 0x0fcf, +0x0fd5, 0x0fd8, +0x109e, 0x109f, +0x1390, 0x1399, +0x1940, 0x1940, +0x19de, 0x19ff, +0x1b61, 0x1b6a, +0x1b74, 0x1b7c, +0x2100, 0x2101, +0x2103, 0x2106, +0x2108, 0x2109, +0x2114, 0x2114, +0x2116, 0x2117, +0x211e, 0x2123, +0x2125, 0x2125, +0x2127, 0x2127, +0x2129, 0x2129, +0x212e, 0x212e, +0x213a, 0x213b, +0x214a, 0x214a, +0x214c, 0x214d, +0x214f, 0x214f, +0x218a, 0x218b, +0x2195, 0x2199, +0x219c, 0x219f, +0x21a1, 0x21a2, +0x21a4, 0x21a5, +0x21a7, 0x21ad, +0x21af, 0x21cd, +0x21d0, 0x21d1, +0x21d3, 0x21d3, +0x21d5, 0x21f3, +0x2300, 0x2307, +0x230c, 0x231f, +0x2322, 0x2328, +0x232b, 0x237b, +0x237d, 0x239a, +0x23b4, 0x23db, +0x23e2, 0x2426, +0x2440, 0x244a, +0x249c, 0x24e9, +0x2500, 0x25b6, +0x25b8, 0x25c0, +0x25c2, 0x25f7, +0x2600, 0x266e, +0x2670, 0x2767, +0x2794, 0x27bf, +0x2800, 0x28ff, +0x2b00, 0x2b2f, +0x2b45, 0x2b46, +0x2b4d, 0x2b73, +0x2b76, 0x2b95, +0x2b98, 0x2bc8, +0x2bca, 0x2bfe, +0x2ce5, 0x2cea, +0x2e80, 0x2e99, +0x2e9b, 0x2ef3, +0x2f00, 0x2fd5, +0x2ff0, 0x2ffb, +0x3004, 0x3004, +0x3012, 0x3013, +0x3020, 0x3020, +0x3036, 0x3037, +0x303e, 0x303f, +0x3190, 0x3191, +0x3196, 0x319f, +0x31c0, 0x31e3, +0x3200, 0x321e, +0x322a, 0x3247, +0x3250, 0x3250, +0x3260, 0x327f, +0x328a, 0x32b0, +0x32c0, 0x32fe, +0x3300, 0x33ff, +0x4dc0, 0x4dff, +0xa490, 0xa4c6, +0xa828, 0xa82b, +0xa836, 0xa837, +0xa839, 0xa839, +0xaa77, 0xaa79, +0xfdfd, 0xfdfd, +0xffe4, 0xffe4, +0xffe8, 0xffe8, +0xffed, 0xffee, +0xfffc, 0xfffd, +0x10137, 0x1013f, +0x10179, 0x10189, +0x1018c, 0x1018e, +0x10190, 0x1019b, +0x101a0, 0x101a0, +0x101d0, 0x101fc, +0x10877, 0x10878, +0x10ac8, 0x10ac8, +0x1173f, 0x1173f, +0x16b3c, 0x16b3f, +0x16b45, 0x16b45, +0x1bc9c, 0x1bc9c, +0x1d000, 0x1d0f5, +0x1d100, 0x1d126, +0x1d129, 0x1d164, +0x1d16a, 0x1d16c, +0x1d183, 0x1d184, +0x1d18c, 0x1d1a9, +0x1d1ae, 0x1d1e8, +0x1d200, 0x1d241, +0x1d245, 0x1d245, +0x1d300, 0x1d356, +0x1d800, 0x1d9ff, +0x1da37, 0x1da3a, +0x1da6d, 0x1da74, +0x1da76, 0x1da83, +0x1da85, 0x1da86, +0x1ecac, 0x1ecac, +0x1f000, 0x1f02b, +0x1f030, 0x1f093, +0x1f0a0, 0x1f0ae, +0x1f0b1, 0x1f0bf, +0x1f0c1, 0x1f0cf, +0x1f0d1, 0x1f0f5, +0x1f110, 0x1f16b, +0x1f170, 0x1f1ac, +0x1f1e6, 0x1f202, +0x1f210, 0x1f23b, +0x1f240, 0x1f248, +0x1f250, 0x1f251, +0x1f260, 0x1f265, +0x1f300, 0x1f3fa, +0x1f400, 0x1f6d4, +0x1f6e0, 0x1f6ec, +0x1f6f0, 0x1f6f9, +0x1f700, 0x1f773, +0x1f780, 0x1f7d8, +0x1f800, 0x1f80b, +0x1f810, 0x1f847, +0x1f850, 0x1f859, +0x1f860, 0x1f887, +0x1f890, 0x1f8ad, +0x1f900, 0x1f90b, +0x1f910, 0x1f93e, +0x1f940, 0x1f970, +0x1f973, 0x1f976, +0x1f97a, 0x1f97a, +0x1f97c, 0x1f9a2, +0x1f9b0, 0x1f9b9, +0x1f9c0, 0x1f9c2, +0x1f9d0, 0x1f9ff, +0x1fa60, 0x1fa6d, +}; /* END of CR_So */ + +/* PROPERTY: 'Soft_Dotted': Binary Property */ +static const OnigCodePoint +CR_Soft_Dotted[] = { 31, +0x0069, 0x006a, +0x012f, 0x012f, +0x0249, 0x0249, +0x0268, 0x0268, +0x029d, 0x029d, +0x02b2, 0x02b2, +0x03f3, 0x03f3, +0x0456, 0x0456, +0x0458, 0x0458, +0x1d62, 0x1d62, +0x1d96, 0x1d96, +0x1da4, 0x1da4, +0x1da8, 0x1da8, +0x1e2d, 0x1e2d, +0x1ecb, 0x1ecb, +0x2071, 0x2071, +0x2148, 0x2149, +0x2c7c, 0x2c7c, +0x1d422, 0x1d423, +0x1d456, 0x1d457, +0x1d48a, 0x1d48b, +0x1d4be, 0x1d4bf, +0x1d4f2, 0x1d4f3, +0x1d526, 0x1d527, +0x1d55a, 0x1d55b, +0x1d58e, 0x1d58f, +0x1d5c2, 0x1d5c3, +0x1d5f6, 0x1d5f7, +0x1d62a, 0x1d62b, +0x1d65e, 0x1d65f, +0x1d692, 0x1d693, +}; /* END of CR_Soft_Dotted */ + +/* PROPERTY: 'Sogdian': Script */ +static const OnigCodePoint +CR_Sogdian[] = { 1, +0x10f30, 0x10f59, +}; /* END of CR_Sogdian */ + +/* PROPERTY: 'Sora_Sompeng': Script */ +static const OnigCodePoint +CR_Sora_Sompeng[] = { 2, +0x110d0, 0x110e8, +0x110f0, 0x110f9, +}; /* END of CR_Sora_Sompeng */ + +/* PROPERTY: 'Soyombo': Script */ +static const OnigCodePoint +CR_Soyombo[] = { 2, +0x11a50, 0x11a83, +0x11a86, 0x11aa2, +}; /* END of CR_Soyombo */ + +/* PROPERTY: 'Sundanese': Script */ +static const OnigCodePoint +CR_Sundanese[] = { 2, +0x1b80, 0x1bbf, +0x1cc0, 0x1cc7, +}; /* END of CR_Sundanese */ + +/* PROPERTY: 'Syloti_Nagri': Script */ +static const OnigCodePoint +CR_Syloti_Nagri[] = { 1, +0xa800, 0xa82b, +}; /* END of CR_Syloti_Nagri */ + +/* PROPERTY: 'Syriac': Script */ +static const OnigCodePoint +CR_Syriac[] = { 4, +0x0700, 0x070d, +0x070f, 0x074a, +0x074d, 0x074f, +0x0860, 0x086a, +}; /* END of CR_Syriac */ + +/* PROPERTY: 'Tagalog': Script */ +static const OnigCodePoint +CR_Tagalog[] = { 2, +0x1700, 0x170c, +0x170e, 0x1714, +}; /* END of CR_Tagalog */ + +/* PROPERTY: 'Tagbanwa': Script */ +static const OnigCodePoint +CR_Tagbanwa[] = { 3, +0x1760, 0x176c, +0x176e, 0x1770, +0x1772, 0x1773, +}; /* END of CR_Tagbanwa */ + +/* PROPERTY: 'Tai_Le': Script */ +static const OnigCodePoint +CR_Tai_Le[] = { 2, +0x1950, 0x196d, +0x1970, 0x1974, +}; /* END of CR_Tai_Le */ + +/* PROPERTY: 'Tai_Tham': Script */ +static const OnigCodePoint +CR_Tai_Tham[] = { 5, +0x1a20, 0x1a5e, +0x1a60, 0x1a7c, +0x1a7f, 0x1a89, +0x1a90, 0x1a99, +0x1aa0, 0x1aad, +}; /* END of CR_Tai_Tham */ + +/* PROPERTY: 'Tai_Viet': Script */ +static const OnigCodePoint +CR_Tai_Viet[] = { 2, +0xaa80, 0xaac2, +0xaadb, 0xaadf, +}; /* END of CR_Tai_Viet */ + +/* PROPERTY: 'Takri': Script */ +static const OnigCodePoint +CR_Takri[] = { 2, +0x11680, 0x116b7, +0x116c0, 0x116c9, +}; /* END of CR_Takri */ + +/* PROPERTY: 'Tamil': Script */ +static const OnigCodePoint +CR_Tamil[] = { 16, +0x0b82, 0x0b83, +0x0b85, 0x0b8a, +0x0b8e, 0x0b90, +0x0b92, 0x0b95, +0x0b99, 0x0b9a, +0x0b9c, 0x0b9c, +0x0b9e, 0x0b9f, +0x0ba3, 0x0ba4, +0x0ba8, 0x0baa, +0x0bae, 0x0bb9, +0x0bbe, 0x0bc2, +0x0bc6, 0x0bc8, +0x0bca, 0x0bcd, +0x0bd0, 0x0bd0, +0x0bd7, 0x0bd7, +0x0be6, 0x0bfa, +}; /* END of CR_Tamil */ + +/* PROPERTY: 'Tangut': Script */ +static const OnigCodePoint +CR_Tangut[] = { 3, +0x16fe0, 0x16fe0, +0x17000, 0x187f1, +0x18800, 0x18af2, +}; /* END of CR_Tangut */ + +/* PROPERTY: 'Telugu': Script */ +static const OnigCodePoint +CR_Telugu[] = { 12, +0x0c00, 0x0c0c, +0x0c0e, 0x0c10, +0x0c12, 0x0c28, +0x0c2a, 0x0c39, +0x0c3d, 0x0c44, +0x0c46, 0x0c48, +0x0c4a, 0x0c4d, +0x0c55, 0x0c56, +0x0c58, 0x0c5a, +0x0c60, 0x0c63, +0x0c66, 0x0c6f, +0x0c78, 0x0c7f, +}; /* END of CR_Telugu */ + +/* PROPERTY: 'Terminal_Punctuation': Binary Property */ +static const OnigCodePoint +CR_Terminal_Punctuation[] = { 102, +0x0021, 0x0021, +0x002c, 0x002c, +0x002e, 0x002e, +0x003a, 0x003b, +0x003f, 0x003f, +0x037e, 0x037e, +0x0387, 0x0387, +0x0589, 0x0589, +0x05c3, 0x05c3, +0x060c, 0x060c, +0x061b, 0x061b, +0x061e, 0x061f, +0x06d4, 0x06d4, +0x0700, 0x070a, +0x070c, 0x070c, +0x07f8, 0x07f9, +0x0830, 0x083e, +0x085e, 0x085e, +0x0964, 0x0965, +0x0e5a, 0x0e5b, +0x0f08, 0x0f08, +0x0f0d, 0x0f12, +0x104a, 0x104b, +0x1361, 0x1368, +0x166d, 0x166e, +0x16eb, 0x16ed, +0x1735, 0x1736, +0x17d4, 0x17d6, +0x17da, 0x17da, +0x1802, 0x1805, +0x1808, 0x1809, +0x1944, 0x1945, +0x1aa8, 0x1aab, +0x1b5a, 0x1b5b, +0x1b5d, 0x1b5f, +0x1c3b, 0x1c3f, +0x1c7e, 0x1c7f, +0x203c, 0x203d, +0x2047, 0x2049, +0x2e2e, 0x2e2e, +0x2e3c, 0x2e3c, +0x2e41, 0x2e41, +0x2e4c, 0x2e4c, +0x2e4e, 0x2e4e, +0x3001, 0x3002, +0xa4fe, 0xa4ff, +0xa60d, 0xa60f, +0xa6f3, 0xa6f7, +0xa876, 0xa877, +0xa8ce, 0xa8cf, +0xa92f, 0xa92f, +0xa9c7, 0xa9c9, +0xaa5d, 0xaa5f, +0xaadf, 0xaadf, +0xaaf0, 0xaaf1, +0xabeb, 0xabeb, +0xfe50, 0xfe52, +0xfe54, 0xfe57, +0xff01, 0xff01, +0xff0c, 0xff0c, +0xff0e, 0xff0e, +0xff1a, 0xff1b, +0xff1f, 0xff1f, +0xff61, 0xff61, +0xff64, 0xff64, +0x1039f, 0x1039f, +0x103d0, 0x103d0, +0x10857, 0x10857, +0x1091f, 0x1091f, +0x10a56, 0x10a57, +0x10af0, 0x10af5, +0x10b3a, 0x10b3f, +0x10b99, 0x10b9c, +0x10f55, 0x10f59, +0x11047, 0x1104d, +0x110be, 0x110c1, +0x11141, 0x11143, +0x111c5, 0x111c6, +0x111cd, 0x111cd, +0x111de, 0x111df, +0x11238, 0x1123c, +0x112a9, 0x112a9, +0x1144b, 0x1144d, +0x1145b, 0x1145b, +0x115c2, 0x115c5, +0x115c9, 0x115d7, +0x11641, 0x11642, +0x1173c, 0x1173e, +0x11a42, 0x11a43, +0x11a9b, 0x11a9c, +0x11aa1, 0x11aa2, +0x11c41, 0x11c43, +0x11c71, 0x11c71, +0x11ef7, 0x11ef8, +0x12470, 0x12474, +0x16a6e, 0x16a6f, +0x16af5, 0x16af5, +0x16b37, 0x16b39, +0x16b44, 0x16b44, +0x16e97, 0x16e98, +0x1bc9f, 0x1bc9f, +0x1da87, 0x1da8a, +}; /* END of CR_Terminal_Punctuation */ + +/* PROPERTY: 'Thaana': Script */ +static const OnigCodePoint +CR_Thaana[] = { 1, +0x0780, 0x07b1, +}; /* END of CR_Thaana */ + +/* PROPERTY: 'Thai': Script */ +static const OnigCodePoint +CR_Thai[] = { 2, +0x0e01, 0x0e3a, +0x0e40, 0x0e5b, +}; /* END of CR_Thai */ + +/* PROPERTY: 'Tibetan': Script */ +static const OnigCodePoint +CR_Tibetan[] = { 7, +0x0f00, 0x0f47, +0x0f49, 0x0f6c, +0x0f71, 0x0f97, +0x0f99, 0x0fbc, +0x0fbe, 0x0fcc, +0x0fce, 0x0fd4, +0x0fd9, 0x0fda, +}; /* END of CR_Tibetan */ + +/* PROPERTY: 'Tifinagh': Script */ +static const OnigCodePoint +CR_Tifinagh[] = { 3, +0x2d30, 0x2d67, +0x2d6f, 0x2d70, +0x2d7f, 0x2d7f, +}; /* END of CR_Tifinagh */ + +/* PROPERTY: 'Tirhuta': Script */ +static const OnigCodePoint +CR_Tirhuta[] = { 2, +0x11480, 0x114c7, +0x114d0, 0x114d9, +}; /* END of CR_Tirhuta */ + +/* PROPERTY: 'Ugaritic': Script */ +static const OnigCodePoint +CR_Ugaritic[] = { 2, +0x10380, 0x1039d, +0x1039f, 0x1039f, +}; /* END of CR_Ugaritic */ + +/* PROPERTY: 'Unified_Ideograph': Binary Property */ +static const OnigCodePoint +CR_Unified_Ideograph[] = { 14, +0x3400, 0x4db5, +0x4e00, 0x9fef, +0xfa0e, 0xfa0f, +0xfa11, 0xfa11, +0xfa13, 0xfa14, +0xfa1f, 0xfa1f, +0xfa21, 0xfa21, +0xfa23, 0xfa24, +0xfa27, 0xfa29, +0x20000, 0x2a6d6, +0x2a700, 0x2b734, +0x2b740, 0x2b81d, +0x2b820, 0x2cea1, +0x2ceb0, 0x2ebe0, +}; /* END of CR_Unified_Ideograph */ + +/* PROPERTY: 'Unknown': Script */ +static const OnigCodePoint +CR_Unknown[] = { 656, +0x0378, 0x0379, +0x0380, 0x0383, +0x038b, 0x038b, +0x038d, 0x038d, +0x03a2, 0x03a2, +0x0530, 0x0530, +0x0557, 0x0558, +0x058b, 0x058c, +0x0590, 0x0590, +0x05c8, 0x05cf, +0x05eb, 0x05ee, +0x05f5, 0x05ff, +0x061d, 0x061d, +0x070e, 0x070e, +0x074b, 0x074c, +0x07b2, 0x07bf, +0x07fb, 0x07fc, +0x082e, 0x082f, +0x083f, 0x083f, +0x085c, 0x085d, +0x085f, 0x085f, +0x086b, 0x089f, +0x08b5, 0x08b5, +0x08be, 0x08d2, +0x0984, 0x0984, +0x098d, 0x098e, +0x0991, 0x0992, +0x09a9, 0x09a9, +0x09b1, 0x09b1, +0x09b3, 0x09b5, +0x09ba, 0x09bb, +0x09c5, 0x09c6, +0x09c9, 0x09ca, +0x09cf, 0x09d6, +0x09d8, 0x09db, +0x09de, 0x09de, +0x09e4, 0x09e5, +0x09ff, 0x0a00, +0x0a04, 0x0a04, +0x0a0b, 0x0a0e, +0x0a11, 0x0a12, +0x0a29, 0x0a29, +0x0a31, 0x0a31, +0x0a34, 0x0a34, +0x0a37, 0x0a37, +0x0a3a, 0x0a3b, +0x0a3d, 0x0a3d, +0x0a43, 0x0a46, +0x0a49, 0x0a4a, +0x0a4e, 0x0a50, +0x0a52, 0x0a58, +0x0a5d, 0x0a5d, +0x0a5f, 0x0a65, +0x0a77, 0x0a80, +0x0a84, 0x0a84, +0x0a8e, 0x0a8e, +0x0a92, 0x0a92, +0x0aa9, 0x0aa9, +0x0ab1, 0x0ab1, +0x0ab4, 0x0ab4, +0x0aba, 0x0abb, +0x0ac6, 0x0ac6, +0x0aca, 0x0aca, +0x0ace, 0x0acf, +0x0ad1, 0x0adf, +0x0ae4, 0x0ae5, +0x0af2, 0x0af8, +0x0b00, 0x0b00, +0x0b04, 0x0b04, +0x0b0d, 0x0b0e, +0x0b11, 0x0b12, +0x0b29, 0x0b29, +0x0b31, 0x0b31, +0x0b34, 0x0b34, +0x0b3a, 0x0b3b, +0x0b45, 0x0b46, +0x0b49, 0x0b4a, +0x0b4e, 0x0b55, +0x0b58, 0x0b5b, +0x0b5e, 0x0b5e, +0x0b64, 0x0b65, +0x0b78, 0x0b81, +0x0b84, 0x0b84, +0x0b8b, 0x0b8d, +0x0b91, 0x0b91, +0x0b96, 0x0b98, +0x0b9b, 0x0b9b, +0x0b9d, 0x0b9d, +0x0ba0, 0x0ba2, +0x0ba5, 0x0ba7, +0x0bab, 0x0bad, +0x0bba, 0x0bbd, +0x0bc3, 0x0bc5, +0x0bc9, 0x0bc9, +0x0bce, 0x0bcf, +0x0bd1, 0x0bd6, +0x0bd8, 0x0be5, +0x0bfb, 0x0bff, +0x0c0d, 0x0c0d, +0x0c11, 0x0c11, +0x0c29, 0x0c29, +0x0c3a, 0x0c3c, +0x0c45, 0x0c45, +0x0c49, 0x0c49, +0x0c4e, 0x0c54, +0x0c57, 0x0c57, +0x0c5b, 0x0c5f, +0x0c64, 0x0c65, +0x0c70, 0x0c77, +0x0c8d, 0x0c8d, +0x0c91, 0x0c91, +0x0ca9, 0x0ca9, +0x0cb4, 0x0cb4, +0x0cba, 0x0cbb, +0x0cc5, 0x0cc5, +0x0cc9, 0x0cc9, +0x0cce, 0x0cd4, +0x0cd7, 0x0cdd, +0x0cdf, 0x0cdf, +0x0ce4, 0x0ce5, +0x0cf0, 0x0cf0, +0x0cf3, 0x0cff, +0x0d04, 0x0d04, +0x0d0d, 0x0d0d, +0x0d11, 0x0d11, +0x0d45, 0x0d45, +0x0d49, 0x0d49, +0x0d50, 0x0d53, +0x0d64, 0x0d65, +0x0d80, 0x0d81, +0x0d84, 0x0d84, +0x0d97, 0x0d99, +0x0db2, 0x0db2, +0x0dbc, 0x0dbc, +0x0dbe, 0x0dbf, +0x0dc7, 0x0dc9, +0x0dcb, 0x0dce, +0x0dd5, 0x0dd5, +0x0dd7, 0x0dd7, +0x0de0, 0x0de5, +0x0df0, 0x0df1, +0x0df5, 0x0e00, +0x0e3b, 0x0e3e, +0x0e5c, 0x0e80, +0x0e83, 0x0e83, +0x0e85, 0x0e86, +0x0e89, 0x0e89, +0x0e8b, 0x0e8c, +0x0e8e, 0x0e93, +0x0e98, 0x0e98, +0x0ea0, 0x0ea0, +0x0ea4, 0x0ea4, +0x0ea6, 0x0ea6, +0x0ea8, 0x0ea9, +0x0eac, 0x0eac, +0x0eba, 0x0eba, +0x0ebe, 0x0ebf, +0x0ec5, 0x0ec5, +0x0ec7, 0x0ec7, +0x0ece, 0x0ecf, +0x0eda, 0x0edb, +0x0ee0, 0x0eff, +0x0f48, 0x0f48, +0x0f6d, 0x0f70, +0x0f98, 0x0f98, +0x0fbd, 0x0fbd, +0x0fcd, 0x0fcd, +0x0fdb, 0x0fff, +0x10c6, 0x10c6, +0x10c8, 0x10cc, +0x10ce, 0x10cf, +0x1249, 0x1249, +0x124e, 0x124f, +0x1257, 0x1257, +0x1259, 0x1259, +0x125e, 0x125f, +0x1289, 0x1289, +0x128e, 0x128f, +0x12b1, 0x12b1, +0x12b6, 0x12b7, +0x12bf, 0x12bf, +0x12c1, 0x12c1, +0x12c6, 0x12c7, +0x12d7, 0x12d7, +0x1311, 0x1311, +0x1316, 0x1317, +0x135b, 0x135c, +0x137d, 0x137f, +0x139a, 0x139f, +0x13f6, 0x13f7, +0x13fe, 0x13ff, +0x169d, 0x169f, +0x16f9, 0x16ff, +0x170d, 0x170d, +0x1715, 0x171f, +0x1737, 0x173f, +0x1754, 0x175f, +0x176d, 0x176d, +0x1771, 0x1771, +0x1774, 0x177f, +0x17de, 0x17df, +0x17ea, 0x17ef, +0x17fa, 0x17ff, +0x180f, 0x180f, +0x181a, 0x181f, +0x1879, 0x187f, +0x18ab, 0x18af, +0x18f6, 0x18ff, +0x191f, 0x191f, +0x192c, 0x192f, +0x193c, 0x193f, +0x1941, 0x1943, +0x196e, 0x196f, +0x1975, 0x197f, +0x19ac, 0x19af, +0x19ca, 0x19cf, +0x19db, 0x19dd, +0x1a1c, 0x1a1d, +0x1a5f, 0x1a5f, +0x1a7d, 0x1a7e, +0x1a8a, 0x1a8f, +0x1a9a, 0x1a9f, +0x1aae, 0x1aaf, +0x1abf, 0x1aff, +0x1b4c, 0x1b4f, +0x1b7d, 0x1b7f, +0x1bf4, 0x1bfb, +0x1c38, 0x1c3a, +0x1c4a, 0x1c4c, +0x1c89, 0x1c8f, +0x1cbb, 0x1cbc, +0x1cc8, 0x1ccf, +0x1cfa, 0x1cff, +0x1dfa, 0x1dfa, +0x1f16, 0x1f17, +0x1f1e, 0x1f1f, +0x1f46, 0x1f47, +0x1f4e, 0x1f4f, +0x1f58, 0x1f58, +0x1f5a, 0x1f5a, +0x1f5c, 0x1f5c, +0x1f5e, 0x1f5e, +0x1f7e, 0x1f7f, +0x1fb5, 0x1fb5, +0x1fc5, 0x1fc5, +0x1fd4, 0x1fd5, +0x1fdc, 0x1fdc, +0x1ff0, 0x1ff1, +0x1ff5, 0x1ff5, +0x1fff, 0x1fff, +0x2065, 0x2065, +0x2072, 0x2073, +0x208f, 0x208f, +0x209d, 0x209f, +0x20c0, 0x20cf, +0x20f1, 0x20ff, +0x218c, 0x218f, +0x2427, 0x243f, +0x244b, 0x245f, +0x2b74, 0x2b75, +0x2b96, 0x2b97, +0x2bc9, 0x2bc9, +0x2bff, 0x2bff, +0x2c2f, 0x2c2f, +0x2c5f, 0x2c5f, +0x2cf4, 0x2cf8, +0x2d26, 0x2d26, +0x2d28, 0x2d2c, +0x2d2e, 0x2d2f, +0x2d68, 0x2d6e, +0x2d71, 0x2d7e, +0x2d97, 0x2d9f, +0x2da7, 0x2da7, +0x2daf, 0x2daf, +0x2db7, 0x2db7, +0x2dbf, 0x2dbf, +0x2dc7, 0x2dc7, +0x2dcf, 0x2dcf, +0x2dd7, 0x2dd7, +0x2ddf, 0x2ddf, +0x2e4f, 0x2e7f, +0x2e9a, 0x2e9a, +0x2ef4, 0x2eff, +0x2fd6, 0x2fef, +0x2ffc, 0x2fff, +0x3040, 0x3040, +0x3097, 0x3098, +0x3100, 0x3104, +0x3130, 0x3130, +0x318f, 0x318f, +0x31bb, 0x31bf, +0x31e4, 0x31ef, +0x321f, 0x321f, +0x32ff, 0x32ff, +0x4db6, 0x4dbf, +0x9ff0, 0x9fff, +0xa48d, 0xa48f, +0xa4c7, 0xa4cf, +0xa62c, 0xa63f, +0xa6f8, 0xa6ff, +0xa7ba, 0xa7f6, +0xa82c, 0xa82f, +0xa83a, 0xa83f, +0xa878, 0xa87f, +0xa8c6, 0xa8cd, +0xa8da, 0xa8df, +0xa954, 0xa95e, +0xa97d, 0xa97f, +0xa9ce, 0xa9ce, +0xa9da, 0xa9dd, +0xa9ff, 0xa9ff, +0xaa37, 0xaa3f, +0xaa4e, 0xaa4f, +0xaa5a, 0xaa5b, +0xaac3, 0xaada, +0xaaf7, 0xab00, +0xab07, 0xab08, +0xab0f, 0xab10, +0xab17, 0xab1f, +0xab27, 0xab27, +0xab2f, 0xab2f, +0xab66, 0xab6f, +0xabee, 0xabef, +0xabfa, 0xabff, +0xd7a4, 0xd7af, +0xd7c7, 0xd7ca, +0xd7fc, 0xf8ff, +0xfa6e, 0xfa6f, +0xfada, 0xfaff, +0xfb07, 0xfb12, +0xfb18, 0xfb1c, +0xfb37, 0xfb37, +0xfb3d, 0xfb3d, +0xfb3f, 0xfb3f, +0xfb42, 0xfb42, +0xfb45, 0xfb45, +0xfbc2, 0xfbd2, +0xfd40, 0xfd4f, +0xfd90, 0xfd91, +0xfdc8, 0xfdef, +0xfdfe, 0xfdff, +0xfe1a, 0xfe1f, +0xfe53, 0xfe53, +0xfe67, 0xfe67, +0xfe6c, 0xfe6f, +0xfe75, 0xfe75, +0xfefd, 0xfefe, +0xff00, 0xff00, +0xffbf, 0xffc1, +0xffc8, 0xffc9, +0xffd0, 0xffd1, +0xffd8, 0xffd9, +0xffdd, 0xffdf, +0xffe7, 0xffe7, +0xffef, 0xfff8, +0xfffe, 0xffff, +0x1000c, 0x1000c, +0x10027, 0x10027, +0x1003b, 0x1003b, +0x1003e, 0x1003e, +0x1004e, 0x1004f, +0x1005e, 0x1007f, +0x100fb, 0x100ff, +0x10103, 0x10106, +0x10134, 0x10136, +0x1018f, 0x1018f, +0x1019c, 0x1019f, +0x101a1, 0x101cf, +0x101fe, 0x1027f, +0x1029d, 0x1029f, +0x102d1, 0x102df, +0x102fc, 0x102ff, +0x10324, 0x1032c, +0x1034b, 0x1034f, +0x1037b, 0x1037f, +0x1039e, 0x1039e, +0x103c4, 0x103c7, +0x103d6, 0x103ff, +0x1049e, 0x1049f, +0x104aa, 0x104af, +0x104d4, 0x104d7, +0x104fc, 0x104ff, +0x10528, 0x1052f, +0x10564, 0x1056e, +0x10570, 0x105ff, +0x10737, 0x1073f, +0x10756, 0x1075f, +0x10768, 0x107ff, +0x10806, 0x10807, +0x10809, 0x10809, +0x10836, 0x10836, +0x10839, 0x1083b, +0x1083d, 0x1083e, +0x10856, 0x10856, +0x1089f, 0x108a6, +0x108b0, 0x108df, +0x108f3, 0x108f3, +0x108f6, 0x108fa, +0x1091c, 0x1091e, +0x1093a, 0x1093e, +0x10940, 0x1097f, +0x109b8, 0x109bb, +0x109d0, 0x109d1, +0x10a04, 0x10a04, +0x10a07, 0x10a0b, +0x10a14, 0x10a14, +0x10a18, 0x10a18, +0x10a36, 0x10a37, +0x10a3b, 0x10a3e, +0x10a49, 0x10a4f, +0x10a59, 0x10a5f, +0x10aa0, 0x10abf, +0x10ae7, 0x10aea, +0x10af7, 0x10aff, +0x10b36, 0x10b38, +0x10b56, 0x10b57, +0x10b73, 0x10b77, +0x10b92, 0x10b98, +0x10b9d, 0x10ba8, +0x10bb0, 0x10bff, +0x10c49, 0x10c7f, +0x10cb3, 0x10cbf, +0x10cf3, 0x10cf9, +0x10d28, 0x10d2f, +0x10d3a, 0x10e5f, +0x10e7f, 0x10eff, +0x10f28, 0x10f2f, +0x10f5a, 0x10fff, +0x1104e, 0x11051, +0x11070, 0x1107e, +0x110c2, 0x110cc, +0x110ce, 0x110cf, +0x110e9, 0x110ef, +0x110fa, 0x110ff, +0x11135, 0x11135, +0x11147, 0x1114f, +0x11177, 0x1117f, +0x111ce, 0x111cf, +0x111e0, 0x111e0, +0x111f5, 0x111ff, +0x11212, 0x11212, +0x1123f, 0x1127f, +0x11287, 0x11287, +0x11289, 0x11289, +0x1128e, 0x1128e, +0x1129e, 0x1129e, +0x112aa, 0x112af, +0x112eb, 0x112ef, +0x112fa, 0x112ff, +0x11304, 0x11304, +0x1130d, 0x1130e, +0x11311, 0x11312, +0x11329, 0x11329, +0x11331, 0x11331, +0x11334, 0x11334, +0x1133a, 0x1133a, +0x11345, 0x11346, +0x11349, 0x1134a, +0x1134e, 0x1134f, +0x11351, 0x11356, +0x11358, 0x1135c, +0x11364, 0x11365, +0x1136d, 0x1136f, +0x11375, 0x113ff, +0x1145a, 0x1145a, +0x1145c, 0x1145c, +0x1145f, 0x1147f, +0x114c8, 0x114cf, +0x114da, 0x1157f, +0x115b6, 0x115b7, +0x115de, 0x115ff, +0x11645, 0x1164f, +0x1165a, 0x1165f, +0x1166d, 0x1167f, +0x116b8, 0x116bf, +0x116ca, 0x116ff, +0x1171b, 0x1171c, +0x1172c, 0x1172f, +0x11740, 0x117ff, +0x1183c, 0x1189f, +0x118f3, 0x118fe, +0x11900, 0x119ff, +0x11a48, 0x11a4f, +0x11a84, 0x11a85, +0x11aa3, 0x11abf, +0x11af9, 0x11bff, +0x11c09, 0x11c09, +0x11c37, 0x11c37, +0x11c46, 0x11c4f, +0x11c6d, 0x11c6f, +0x11c90, 0x11c91, +0x11ca8, 0x11ca8, +0x11cb7, 0x11cff, +0x11d07, 0x11d07, +0x11d0a, 0x11d0a, +0x11d37, 0x11d39, +0x11d3b, 0x11d3b, +0x11d3e, 0x11d3e, +0x11d48, 0x11d4f, +0x11d5a, 0x11d5f, +0x11d66, 0x11d66, +0x11d69, 0x11d69, +0x11d8f, 0x11d8f, +0x11d92, 0x11d92, +0x11d99, 0x11d9f, +0x11daa, 0x11edf, +0x11ef9, 0x11fff, +0x1239a, 0x123ff, +0x1246f, 0x1246f, +0x12475, 0x1247f, +0x12544, 0x12fff, +0x1342f, 0x143ff, +0x14647, 0x167ff, +0x16a39, 0x16a3f, +0x16a5f, 0x16a5f, +0x16a6a, 0x16a6d, +0x16a70, 0x16acf, +0x16aee, 0x16aef, +0x16af6, 0x16aff, +0x16b46, 0x16b4f, +0x16b5a, 0x16b5a, +0x16b62, 0x16b62, +0x16b78, 0x16b7c, +0x16b90, 0x16e3f, +0x16e9b, 0x16eff, +0x16f45, 0x16f4f, +0x16f7f, 0x16f8e, +0x16fa0, 0x16fdf, +0x16fe2, 0x16fff, +0x187f2, 0x187ff, +0x18af3, 0x1afff, +0x1b11f, 0x1b16f, +0x1b2fc, 0x1bbff, +0x1bc6b, 0x1bc6f, +0x1bc7d, 0x1bc7f, +0x1bc89, 0x1bc8f, +0x1bc9a, 0x1bc9b, +0x1bca4, 0x1cfff, +0x1d0f6, 0x1d0ff, +0x1d127, 0x1d128, +0x1d1e9, 0x1d1ff, +0x1d246, 0x1d2df, +0x1d2f4, 0x1d2ff, +0x1d357, 0x1d35f, +0x1d379, 0x1d3ff, +0x1d455, 0x1d455, +0x1d49d, 0x1d49d, +0x1d4a0, 0x1d4a1, +0x1d4a3, 0x1d4a4, +0x1d4a7, 0x1d4a8, +0x1d4ad, 0x1d4ad, +0x1d4ba, 0x1d4ba, +0x1d4bc, 0x1d4bc, +0x1d4c4, 0x1d4c4, +0x1d506, 0x1d506, +0x1d50b, 0x1d50c, +0x1d515, 0x1d515, +0x1d51d, 0x1d51d, +0x1d53a, 0x1d53a, +0x1d53f, 0x1d53f, +0x1d545, 0x1d545, +0x1d547, 0x1d549, +0x1d551, 0x1d551, +0x1d6a6, 0x1d6a7, +0x1d7cc, 0x1d7cd, +0x1da8c, 0x1da9a, +0x1daa0, 0x1daa0, +0x1dab0, 0x1dfff, +0x1e007, 0x1e007, +0x1e019, 0x1e01a, +0x1e022, 0x1e022, +0x1e025, 0x1e025, +0x1e02b, 0x1e7ff, +0x1e8c5, 0x1e8c6, +0x1e8d7, 0x1e8ff, +0x1e94b, 0x1e94f, +0x1e95a, 0x1e95d, +0x1e960, 0x1ec70, +0x1ecb5, 0x1edff, +0x1ee04, 0x1ee04, +0x1ee20, 0x1ee20, +0x1ee23, 0x1ee23, +0x1ee25, 0x1ee26, +0x1ee28, 0x1ee28, +0x1ee33, 0x1ee33, +0x1ee38, 0x1ee38, +0x1ee3a, 0x1ee3a, +0x1ee3c, 0x1ee41, +0x1ee43, 0x1ee46, +0x1ee48, 0x1ee48, +0x1ee4a, 0x1ee4a, +0x1ee4c, 0x1ee4c, +0x1ee50, 0x1ee50, +0x1ee53, 0x1ee53, +0x1ee55, 0x1ee56, +0x1ee58, 0x1ee58, +0x1ee5a, 0x1ee5a, +0x1ee5c, 0x1ee5c, +0x1ee5e, 0x1ee5e, +0x1ee60, 0x1ee60, +0x1ee63, 0x1ee63, +0x1ee65, 0x1ee66, +0x1ee6b, 0x1ee6b, +0x1ee73, 0x1ee73, +0x1ee78, 0x1ee78, +0x1ee7d, 0x1ee7d, +0x1ee7f, 0x1ee7f, +0x1ee8a, 0x1ee8a, +0x1ee9c, 0x1eea0, +0x1eea4, 0x1eea4, +0x1eeaa, 0x1eeaa, +0x1eebc, 0x1eeef, +0x1eef2, 0x1efff, +0x1f02c, 0x1f02f, +0x1f094, 0x1f09f, +0x1f0af, 0x1f0b0, +0x1f0c0, 0x1f0c0, +0x1f0d0, 0x1f0d0, +0x1f0f6, 0x1f0ff, +0x1f10d, 0x1f10f, +0x1f16c, 0x1f16f, +0x1f1ad, 0x1f1e5, +0x1f203, 0x1f20f, +0x1f23c, 0x1f23f, +0x1f249, 0x1f24f, +0x1f252, 0x1f25f, +0x1f266, 0x1f2ff, +0x1f6d5, 0x1f6df, +0x1f6ed, 0x1f6ef, +0x1f6fa, 0x1f6ff, +0x1f774, 0x1f77f, +0x1f7d9, 0x1f7ff, +0x1f80c, 0x1f80f, +0x1f848, 0x1f84f, +0x1f85a, 0x1f85f, +0x1f888, 0x1f88f, +0x1f8ae, 0x1f8ff, +0x1f90c, 0x1f90f, +0x1f93f, 0x1f93f, +0x1f971, 0x1f972, +0x1f977, 0x1f979, +0x1f97b, 0x1f97b, +0x1f9a3, 0x1f9af, +0x1f9ba, 0x1f9bf, +0x1f9c3, 0x1f9cf, +0x1fa00, 0x1fa5f, +0x1fa6e, 0x1ffff, +0x2a6d7, 0x2a6ff, +0x2b735, 0x2b73f, +0x2b81e, 0x2b81f, +0x2cea2, 0x2ceaf, +0x2ebe1, 0x2f7ff, +0x2fa1e, 0xe0000, +0xe0002, 0xe001f, +0xe0080, 0xe00ff, +0xe01f0, 0x10ffff, +}; /* END of CR_Unknown */ + +/* PROPERTY: 'Uppercase': Derived Property */ +#define CR_Uppercase CR_Upper + +/* PROPERTY: 'Vai': Script */ +static const OnigCodePoint +CR_Vai[] = { 1, +0xa500, 0xa62b, +}; /* END of CR_Vai */ + +/* PROPERTY: 'Variation_Selector': Binary Property */ +static const OnigCodePoint +CR_Variation_Selector[] = { 3, +0x180b, 0x180d, +0xfe00, 0xfe0f, +0xe0100, 0xe01ef, +}; /* END of CR_Variation_Selector */ + +/* PROPERTY: 'Warang_Citi': Script */ +static const OnigCodePoint +CR_Warang_Citi[] = { 2, +0x118a0, 0x118f2, +0x118ff, 0x118ff, +}; /* END of CR_Warang_Citi */ + +/* PROPERTY: 'White_Space': Binary Property */ +#define CR_White_Space CR_Space + +/* PROPERTY: 'XID_Continue': Derived Property */ +static const OnigCodePoint +CR_XID_Continue[] = { 714, +0x0030, 0x0039, +0x0041, 0x005a, +0x005f, 0x005f, +0x0061, 0x007a, +0x00aa, 0x00aa, +0x00b5, 0x00b5, +0x00b7, 0x00b7, +0x00ba, 0x00ba, +0x00c0, 0x00d6, +0x00d8, 0x00f6, +0x00f8, 0x02c1, +0x02c6, 0x02d1, +0x02e0, 0x02e4, +0x02ec, 0x02ec, +0x02ee, 0x02ee, +0x0300, 0x0374, +0x0376, 0x0377, +0x037b, 0x037d, +0x037f, 0x037f, +0x0386, 0x038a, +0x038c, 0x038c, +0x038e, 0x03a1, +0x03a3, 0x03f5, +0x03f7, 0x0481, +0x0483, 0x0487, +0x048a, 0x052f, +0x0531, 0x0556, +0x0559, 0x0559, +0x0560, 0x0588, +0x0591, 0x05bd, +0x05bf, 0x05bf, +0x05c1, 0x05c2, +0x05c4, 0x05c5, +0x05c7, 0x05c7, +0x05d0, 0x05ea, +0x05ef, 0x05f2, +0x0610, 0x061a, +0x0620, 0x0669, +0x066e, 0x06d3, +0x06d5, 0x06dc, +0x06df, 0x06e8, +0x06ea, 0x06fc, +0x06ff, 0x06ff, +0x0710, 0x074a, +0x074d, 0x07b1, +0x07c0, 0x07f5, +0x07fa, 0x07fa, +0x07fd, 0x07fd, +0x0800, 0x082d, +0x0840, 0x085b, +0x0860, 0x086a, +0x08a0, 0x08b4, +0x08b6, 0x08bd, +0x08d3, 0x08e1, +0x08e3, 0x0963, +0x0966, 0x096f, +0x0971, 0x0983, +0x0985, 0x098c, +0x098f, 0x0990, +0x0993, 0x09a8, +0x09aa, 0x09b0, +0x09b2, 0x09b2, +0x09b6, 0x09b9, +0x09bc, 0x09c4, +0x09c7, 0x09c8, +0x09cb, 0x09ce, +0x09d7, 0x09d7, +0x09dc, 0x09dd, +0x09df, 0x09e3, +0x09e6, 0x09f1, +0x09fc, 0x09fc, +0x09fe, 0x09fe, +0x0a01, 0x0a03, +0x0a05, 0x0a0a, +0x0a0f, 0x0a10, +0x0a13, 0x0a28, +0x0a2a, 0x0a30, +0x0a32, 0x0a33, +0x0a35, 0x0a36, +0x0a38, 0x0a39, +0x0a3c, 0x0a3c, +0x0a3e, 0x0a42, +0x0a47, 0x0a48, +0x0a4b, 0x0a4d, +0x0a51, 0x0a51, +0x0a59, 0x0a5c, +0x0a5e, 0x0a5e, +0x0a66, 0x0a75, +0x0a81, 0x0a83, +0x0a85, 0x0a8d, +0x0a8f, 0x0a91, +0x0a93, 0x0aa8, +0x0aaa, 0x0ab0, +0x0ab2, 0x0ab3, +0x0ab5, 0x0ab9, +0x0abc, 0x0ac5, +0x0ac7, 0x0ac9, +0x0acb, 0x0acd, +0x0ad0, 0x0ad0, +0x0ae0, 0x0ae3, +0x0ae6, 0x0aef, +0x0af9, 0x0aff, +0x0b01, 0x0b03, +0x0b05, 0x0b0c, +0x0b0f, 0x0b10, +0x0b13, 0x0b28, +0x0b2a, 0x0b30, +0x0b32, 0x0b33, +0x0b35, 0x0b39, +0x0b3c, 0x0b44, +0x0b47, 0x0b48, +0x0b4b, 0x0b4d, +0x0b56, 0x0b57, +0x0b5c, 0x0b5d, +0x0b5f, 0x0b63, +0x0b66, 0x0b6f, +0x0b71, 0x0b71, +0x0b82, 0x0b83, +0x0b85, 0x0b8a, +0x0b8e, 0x0b90, +0x0b92, 0x0b95, +0x0b99, 0x0b9a, +0x0b9c, 0x0b9c, +0x0b9e, 0x0b9f, +0x0ba3, 0x0ba4, +0x0ba8, 0x0baa, +0x0bae, 0x0bb9, +0x0bbe, 0x0bc2, +0x0bc6, 0x0bc8, +0x0bca, 0x0bcd, +0x0bd0, 0x0bd0, +0x0bd7, 0x0bd7, +0x0be6, 0x0bef, +0x0c00, 0x0c0c, +0x0c0e, 0x0c10, +0x0c12, 0x0c28, +0x0c2a, 0x0c39, +0x0c3d, 0x0c44, +0x0c46, 0x0c48, +0x0c4a, 0x0c4d, +0x0c55, 0x0c56, +0x0c58, 0x0c5a, +0x0c60, 0x0c63, +0x0c66, 0x0c6f, +0x0c80, 0x0c83, +0x0c85, 0x0c8c, +0x0c8e, 0x0c90, +0x0c92, 0x0ca8, +0x0caa, 0x0cb3, +0x0cb5, 0x0cb9, +0x0cbc, 0x0cc4, +0x0cc6, 0x0cc8, +0x0cca, 0x0ccd, +0x0cd5, 0x0cd6, +0x0cde, 0x0cde, +0x0ce0, 0x0ce3, +0x0ce6, 0x0cef, +0x0cf1, 0x0cf2, +0x0d00, 0x0d03, +0x0d05, 0x0d0c, +0x0d0e, 0x0d10, +0x0d12, 0x0d44, +0x0d46, 0x0d48, +0x0d4a, 0x0d4e, +0x0d54, 0x0d57, +0x0d5f, 0x0d63, +0x0d66, 0x0d6f, +0x0d7a, 0x0d7f, +0x0d82, 0x0d83, +0x0d85, 0x0d96, +0x0d9a, 0x0db1, +0x0db3, 0x0dbb, +0x0dbd, 0x0dbd, +0x0dc0, 0x0dc6, +0x0dca, 0x0dca, +0x0dcf, 0x0dd4, +0x0dd6, 0x0dd6, +0x0dd8, 0x0ddf, +0x0de6, 0x0def, +0x0df2, 0x0df3, +0x0e01, 0x0e3a, +0x0e40, 0x0e4e, +0x0e50, 0x0e59, +0x0e81, 0x0e82, +0x0e84, 0x0e84, +0x0e87, 0x0e88, +0x0e8a, 0x0e8a, +0x0e8d, 0x0e8d, +0x0e94, 0x0e97, +0x0e99, 0x0e9f, +0x0ea1, 0x0ea3, +0x0ea5, 0x0ea5, +0x0ea7, 0x0ea7, +0x0eaa, 0x0eab, +0x0ead, 0x0eb9, +0x0ebb, 0x0ebd, +0x0ec0, 0x0ec4, +0x0ec6, 0x0ec6, +0x0ec8, 0x0ecd, +0x0ed0, 0x0ed9, +0x0edc, 0x0edf, +0x0f00, 0x0f00, +0x0f18, 0x0f19, +0x0f20, 0x0f29, +0x0f35, 0x0f35, +0x0f37, 0x0f37, +0x0f39, 0x0f39, +0x0f3e, 0x0f47, +0x0f49, 0x0f6c, +0x0f71, 0x0f84, +0x0f86, 0x0f97, +0x0f99, 0x0fbc, +0x0fc6, 0x0fc6, +0x1000, 0x1049, +0x1050, 0x109d, +0x10a0, 0x10c5, +0x10c7, 0x10c7, +0x10cd, 0x10cd, +0x10d0, 0x10fa, +0x10fc, 0x1248, +0x124a, 0x124d, +0x1250, 0x1256, +0x1258, 0x1258, +0x125a, 0x125d, +0x1260, 0x1288, +0x128a, 0x128d, +0x1290, 0x12b0, +0x12b2, 0x12b5, +0x12b8, 0x12be, +0x12c0, 0x12c0, +0x12c2, 0x12c5, +0x12c8, 0x12d6, +0x12d8, 0x1310, +0x1312, 0x1315, +0x1318, 0x135a, +0x135d, 0x135f, +0x1369, 0x1371, +0x1380, 0x138f, +0x13a0, 0x13f5, +0x13f8, 0x13fd, +0x1401, 0x166c, +0x166f, 0x167f, +0x1681, 0x169a, +0x16a0, 0x16ea, +0x16ee, 0x16f8, +0x1700, 0x170c, +0x170e, 0x1714, +0x1720, 0x1734, +0x1740, 0x1753, +0x1760, 0x176c, +0x176e, 0x1770, +0x1772, 0x1773, +0x1780, 0x17d3, +0x17d7, 0x17d7, +0x17dc, 0x17dd, +0x17e0, 0x17e9, +0x180b, 0x180d, +0x1810, 0x1819, +0x1820, 0x1878, +0x1880, 0x18aa, +0x18b0, 0x18f5, +0x1900, 0x191e, +0x1920, 0x192b, +0x1930, 0x193b, +0x1946, 0x196d, +0x1970, 0x1974, +0x1980, 0x19ab, +0x19b0, 0x19c9, +0x19d0, 0x19da, +0x1a00, 0x1a1b, +0x1a20, 0x1a5e, +0x1a60, 0x1a7c, +0x1a7f, 0x1a89, +0x1a90, 0x1a99, +0x1aa7, 0x1aa7, +0x1ab0, 0x1abd, +0x1b00, 0x1b4b, +0x1b50, 0x1b59, +0x1b6b, 0x1b73, +0x1b80, 0x1bf3, +0x1c00, 0x1c37, +0x1c40, 0x1c49, +0x1c4d, 0x1c7d, +0x1c80, 0x1c88, +0x1c90, 0x1cba, +0x1cbd, 0x1cbf, +0x1cd0, 0x1cd2, +0x1cd4, 0x1cf9, +0x1d00, 0x1df9, +0x1dfb, 0x1f15, +0x1f18, 0x1f1d, +0x1f20, 0x1f45, +0x1f48, 0x1f4d, +0x1f50, 0x1f57, +0x1f59, 0x1f59, +0x1f5b, 0x1f5b, +0x1f5d, 0x1f5d, +0x1f5f, 0x1f7d, +0x1f80, 0x1fb4, +0x1fb6, 0x1fbc, +0x1fbe, 0x1fbe, +0x1fc2, 0x1fc4, +0x1fc6, 0x1fcc, +0x1fd0, 0x1fd3, +0x1fd6, 0x1fdb, +0x1fe0, 0x1fec, +0x1ff2, 0x1ff4, +0x1ff6, 0x1ffc, +0x203f, 0x2040, +0x2054, 0x2054, +0x2071, 0x2071, +0x207f, 0x207f, +0x2090, 0x209c, +0x20d0, 0x20dc, +0x20e1, 0x20e1, +0x20e5, 0x20f0, +0x2102, 0x2102, +0x2107, 0x2107, +0x210a, 0x2113, +0x2115, 0x2115, +0x2118, 0x211d, +0x2124, 0x2124, +0x2126, 0x2126, +0x2128, 0x2128, +0x212a, 0x2139, +0x213c, 0x213f, +0x2145, 0x2149, +0x214e, 0x214e, +0x2160, 0x2188, +0x2c00, 0x2c2e, +0x2c30, 0x2c5e, +0x2c60, 0x2ce4, +0x2ceb, 0x2cf3, +0x2d00, 0x2d25, +0x2d27, 0x2d27, +0x2d2d, 0x2d2d, +0x2d30, 0x2d67, +0x2d6f, 0x2d6f, +0x2d7f, 0x2d96, +0x2da0, 0x2da6, +0x2da8, 0x2dae, +0x2db0, 0x2db6, +0x2db8, 0x2dbe, +0x2dc0, 0x2dc6, +0x2dc8, 0x2dce, +0x2dd0, 0x2dd6, +0x2dd8, 0x2dde, +0x2de0, 0x2dff, +0x3005, 0x3007, +0x3021, 0x302f, +0x3031, 0x3035, +0x3038, 0x303c, +0x3041, 0x3096, +0x3099, 0x309a, +0x309d, 0x309f, +0x30a1, 0x30fa, +0x30fc, 0x30ff, +0x3105, 0x312f, +0x3131, 0x318e, +0x31a0, 0x31ba, +0x31f0, 0x31ff, +0x3400, 0x4db5, +0x4e00, 0x9fef, +0xa000, 0xa48c, +0xa4d0, 0xa4fd, +0xa500, 0xa60c, +0xa610, 0xa62b, +0xa640, 0xa66f, +0xa674, 0xa67d, +0xa67f, 0xa6f1, +0xa717, 0xa71f, +0xa722, 0xa788, +0xa78b, 0xa7b9, +0xa7f7, 0xa827, +0xa840, 0xa873, +0xa880, 0xa8c5, +0xa8d0, 0xa8d9, +0xa8e0, 0xa8f7, +0xa8fb, 0xa8fb, +0xa8fd, 0xa92d, +0xa930, 0xa953, +0xa960, 0xa97c, +0xa980, 0xa9c0, +0xa9cf, 0xa9d9, +0xa9e0, 0xa9fe, +0xaa00, 0xaa36, +0xaa40, 0xaa4d, +0xaa50, 0xaa59, +0xaa60, 0xaa76, +0xaa7a, 0xaac2, +0xaadb, 0xaadd, +0xaae0, 0xaaef, +0xaaf2, 0xaaf6, +0xab01, 0xab06, +0xab09, 0xab0e, +0xab11, 0xab16, +0xab20, 0xab26, +0xab28, 0xab2e, +0xab30, 0xab5a, +0xab5c, 0xab65, +0xab70, 0xabea, +0xabec, 0xabed, +0xabf0, 0xabf9, +0xac00, 0xd7a3, +0xd7b0, 0xd7c6, +0xd7cb, 0xd7fb, +0xf900, 0xfa6d, +0xfa70, 0xfad9, +0xfb00, 0xfb06, +0xfb13, 0xfb17, +0xfb1d, 0xfb28, +0xfb2a, 0xfb36, +0xfb38, 0xfb3c, +0xfb3e, 0xfb3e, +0xfb40, 0xfb41, +0xfb43, 0xfb44, +0xfb46, 0xfbb1, +0xfbd3, 0xfc5d, +0xfc64, 0xfd3d, +0xfd50, 0xfd8f, +0xfd92, 0xfdc7, +0xfdf0, 0xfdf9, +0xfe00, 0xfe0f, +0xfe20, 0xfe2f, +0xfe33, 0xfe34, +0xfe4d, 0xfe4f, +0xfe71, 0xfe71, +0xfe73, 0xfe73, +0xfe77, 0xfe77, +0xfe79, 0xfe79, +0xfe7b, 0xfe7b, +0xfe7d, 0xfe7d, +0xfe7f, 0xfefc, +0xff10, 0xff19, +0xff21, 0xff3a, +0xff3f, 0xff3f, +0xff41, 0xff5a, +0xff66, 0xffbe, +0xffc2, 0xffc7, +0xffca, 0xffcf, +0xffd2, 0xffd7, +0xffda, 0xffdc, +0x10000, 0x1000b, +0x1000d, 0x10026, +0x10028, 0x1003a, +0x1003c, 0x1003d, +0x1003f, 0x1004d, +0x10050, 0x1005d, +0x10080, 0x100fa, +0x10140, 0x10174, +0x101fd, 0x101fd, +0x10280, 0x1029c, +0x102a0, 0x102d0, +0x102e0, 0x102e0, +0x10300, 0x1031f, +0x1032d, 0x1034a, +0x10350, 0x1037a, +0x10380, 0x1039d, +0x103a0, 0x103c3, +0x103c8, 0x103cf, +0x103d1, 0x103d5, +0x10400, 0x1049d, +0x104a0, 0x104a9, +0x104b0, 0x104d3, +0x104d8, 0x104fb, +0x10500, 0x10527, +0x10530, 0x10563, +0x10600, 0x10736, +0x10740, 0x10755, +0x10760, 0x10767, +0x10800, 0x10805, +0x10808, 0x10808, +0x1080a, 0x10835, +0x10837, 0x10838, +0x1083c, 0x1083c, +0x1083f, 0x10855, +0x10860, 0x10876, +0x10880, 0x1089e, +0x108e0, 0x108f2, +0x108f4, 0x108f5, +0x10900, 0x10915, +0x10920, 0x10939, +0x10980, 0x109b7, +0x109be, 0x109bf, +0x10a00, 0x10a03, +0x10a05, 0x10a06, +0x10a0c, 0x10a13, +0x10a15, 0x10a17, +0x10a19, 0x10a35, +0x10a38, 0x10a3a, +0x10a3f, 0x10a3f, +0x10a60, 0x10a7c, +0x10a80, 0x10a9c, +0x10ac0, 0x10ac7, +0x10ac9, 0x10ae6, +0x10b00, 0x10b35, +0x10b40, 0x10b55, +0x10b60, 0x10b72, +0x10b80, 0x10b91, +0x10c00, 0x10c48, +0x10c80, 0x10cb2, +0x10cc0, 0x10cf2, +0x10d00, 0x10d27, +0x10d30, 0x10d39, +0x10f00, 0x10f1c, +0x10f27, 0x10f27, +0x10f30, 0x10f50, +0x11000, 0x11046, +0x11066, 0x1106f, +0x1107f, 0x110ba, +0x110d0, 0x110e8, +0x110f0, 0x110f9, +0x11100, 0x11134, +0x11136, 0x1113f, +0x11144, 0x11146, +0x11150, 0x11173, +0x11176, 0x11176, +0x11180, 0x111c4, +0x111c9, 0x111cc, +0x111d0, 0x111da, +0x111dc, 0x111dc, +0x11200, 0x11211, +0x11213, 0x11237, +0x1123e, 0x1123e, +0x11280, 0x11286, +0x11288, 0x11288, +0x1128a, 0x1128d, +0x1128f, 0x1129d, +0x1129f, 0x112a8, +0x112b0, 0x112ea, +0x112f0, 0x112f9, +0x11300, 0x11303, +0x11305, 0x1130c, +0x1130f, 0x11310, +0x11313, 0x11328, +0x1132a, 0x11330, +0x11332, 0x11333, +0x11335, 0x11339, +0x1133b, 0x11344, +0x11347, 0x11348, +0x1134b, 0x1134d, +0x11350, 0x11350, +0x11357, 0x11357, +0x1135d, 0x11363, +0x11366, 0x1136c, +0x11370, 0x11374, +0x11400, 0x1144a, +0x11450, 0x11459, +0x1145e, 0x1145e, +0x11480, 0x114c5, +0x114c7, 0x114c7, +0x114d0, 0x114d9, +0x11580, 0x115b5, +0x115b8, 0x115c0, +0x115d8, 0x115dd, +0x11600, 0x11640, +0x11644, 0x11644, +0x11650, 0x11659, +0x11680, 0x116b7, +0x116c0, 0x116c9, +0x11700, 0x1171a, +0x1171d, 0x1172b, +0x11730, 0x11739, +0x11800, 0x1183a, +0x118a0, 0x118e9, +0x118ff, 0x118ff, +0x11a00, 0x11a3e, +0x11a47, 0x11a47, +0x11a50, 0x11a83, +0x11a86, 0x11a99, +0x11a9d, 0x11a9d, +0x11ac0, 0x11af8, +0x11c00, 0x11c08, +0x11c0a, 0x11c36, +0x11c38, 0x11c40, +0x11c50, 0x11c59, +0x11c72, 0x11c8f, +0x11c92, 0x11ca7, +0x11ca9, 0x11cb6, +0x11d00, 0x11d06, +0x11d08, 0x11d09, +0x11d0b, 0x11d36, +0x11d3a, 0x11d3a, +0x11d3c, 0x11d3d, +0x11d3f, 0x11d47, +0x11d50, 0x11d59, +0x11d60, 0x11d65, +0x11d67, 0x11d68, +0x11d6a, 0x11d8e, +0x11d90, 0x11d91, +0x11d93, 0x11d98, +0x11da0, 0x11da9, +0x11ee0, 0x11ef6, +0x12000, 0x12399, +0x12400, 0x1246e, +0x12480, 0x12543, +0x13000, 0x1342e, +0x14400, 0x14646, +0x16800, 0x16a38, +0x16a40, 0x16a5e, +0x16a60, 0x16a69, +0x16ad0, 0x16aed, +0x16af0, 0x16af4, +0x16b00, 0x16b36, +0x16b40, 0x16b43, +0x16b50, 0x16b59, +0x16b63, 0x16b77, +0x16b7d, 0x16b8f, +0x16e40, 0x16e7f, +0x16f00, 0x16f44, +0x16f50, 0x16f7e, +0x16f8f, 0x16f9f, +0x16fe0, 0x16fe1, +0x17000, 0x187f1, +0x18800, 0x18af2, +0x1b000, 0x1b11e, +0x1b170, 0x1b2fb, +0x1bc00, 0x1bc6a, +0x1bc70, 0x1bc7c, +0x1bc80, 0x1bc88, +0x1bc90, 0x1bc99, +0x1bc9d, 0x1bc9e, +0x1d165, 0x1d169, +0x1d16d, 0x1d172, +0x1d17b, 0x1d182, +0x1d185, 0x1d18b, +0x1d1aa, 0x1d1ad, +0x1d242, 0x1d244, +0x1d400, 0x1d454, +0x1d456, 0x1d49c, +0x1d49e, 0x1d49f, +0x1d4a2, 0x1d4a2, +0x1d4a5, 0x1d4a6, +0x1d4a9, 0x1d4ac, +0x1d4ae, 0x1d4b9, +0x1d4bb, 0x1d4bb, +0x1d4bd, 0x1d4c3, +0x1d4c5, 0x1d505, +0x1d507, 0x1d50a, +0x1d50d, 0x1d514, +0x1d516, 0x1d51c, +0x1d51e, 0x1d539, +0x1d53b, 0x1d53e, +0x1d540, 0x1d544, +0x1d546, 0x1d546, +0x1d54a, 0x1d550, +0x1d552, 0x1d6a5, +0x1d6a8, 0x1d6c0, +0x1d6c2, 0x1d6da, +0x1d6dc, 0x1d6fa, +0x1d6fc, 0x1d714, +0x1d716, 0x1d734, +0x1d736, 0x1d74e, +0x1d750, 0x1d76e, +0x1d770, 0x1d788, +0x1d78a, 0x1d7a8, +0x1d7aa, 0x1d7c2, +0x1d7c4, 0x1d7cb, +0x1d7ce, 0x1d7ff, +0x1da00, 0x1da36, +0x1da3b, 0x1da6c, +0x1da75, 0x1da75, +0x1da84, 0x1da84, +0x1da9b, 0x1da9f, +0x1daa1, 0x1daaf, +0x1e000, 0x1e006, +0x1e008, 0x1e018, +0x1e01b, 0x1e021, +0x1e023, 0x1e024, +0x1e026, 0x1e02a, +0x1e800, 0x1e8c4, +0x1e8d0, 0x1e8d6, +0x1e900, 0x1e94a, +0x1e950, 0x1e959, +0x1ee00, 0x1ee03, +0x1ee05, 0x1ee1f, +0x1ee21, 0x1ee22, +0x1ee24, 0x1ee24, +0x1ee27, 0x1ee27, +0x1ee29, 0x1ee32, +0x1ee34, 0x1ee37, +0x1ee39, 0x1ee39, +0x1ee3b, 0x1ee3b, +0x1ee42, 0x1ee42, +0x1ee47, 0x1ee47, +0x1ee49, 0x1ee49, +0x1ee4b, 0x1ee4b, +0x1ee4d, 0x1ee4f, +0x1ee51, 0x1ee52, +0x1ee54, 0x1ee54, +0x1ee57, 0x1ee57, +0x1ee59, 0x1ee59, +0x1ee5b, 0x1ee5b, +0x1ee5d, 0x1ee5d, +0x1ee5f, 0x1ee5f, +0x1ee61, 0x1ee62, +0x1ee64, 0x1ee64, +0x1ee67, 0x1ee6a, +0x1ee6c, 0x1ee72, +0x1ee74, 0x1ee77, +0x1ee79, 0x1ee7c, +0x1ee7e, 0x1ee7e, +0x1ee80, 0x1ee89, +0x1ee8b, 0x1ee9b, +0x1eea1, 0x1eea3, +0x1eea5, 0x1eea9, +0x1eeab, 0x1eebb, +0x20000, 0x2a6d6, +0x2a700, 0x2b734, +0x2b740, 0x2b81d, +0x2b820, 0x2cea1, +0x2ceb0, 0x2ebe0, +0x2f800, 0x2fa1d, +0xe0100, 0xe01ef, +}; /* END of CR_XID_Continue */ + +/* PROPERTY: 'XID_Start': Derived Property */ +static const OnigCodePoint +CR_XID_Start[] = { 606, +0x0041, 0x005a, +0x0061, 0x007a, +0x00aa, 0x00aa, +0x00b5, 0x00b5, +0x00ba, 0x00ba, +0x00c0, 0x00d6, +0x00d8, 0x00f6, +0x00f8, 0x02c1, +0x02c6, 0x02d1, +0x02e0, 0x02e4, +0x02ec, 0x02ec, +0x02ee, 0x02ee, +0x0370, 0x0374, +0x0376, 0x0377, +0x037b, 0x037d, +0x037f, 0x037f, +0x0386, 0x0386, +0x0388, 0x038a, +0x038c, 0x038c, +0x038e, 0x03a1, +0x03a3, 0x03f5, +0x03f7, 0x0481, +0x048a, 0x052f, +0x0531, 0x0556, +0x0559, 0x0559, +0x0560, 0x0588, +0x05d0, 0x05ea, +0x05ef, 0x05f2, +0x0620, 0x064a, +0x066e, 0x066f, +0x0671, 0x06d3, +0x06d5, 0x06d5, +0x06e5, 0x06e6, +0x06ee, 0x06ef, +0x06fa, 0x06fc, +0x06ff, 0x06ff, +0x0710, 0x0710, +0x0712, 0x072f, +0x074d, 0x07a5, +0x07b1, 0x07b1, +0x07ca, 0x07ea, +0x07f4, 0x07f5, +0x07fa, 0x07fa, +0x0800, 0x0815, +0x081a, 0x081a, +0x0824, 0x0824, +0x0828, 0x0828, +0x0840, 0x0858, +0x0860, 0x086a, +0x08a0, 0x08b4, +0x08b6, 0x08bd, +0x0904, 0x0939, +0x093d, 0x093d, +0x0950, 0x0950, +0x0958, 0x0961, +0x0971, 0x0980, +0x0985, 0x098c, +0x098f, 0x0990, +0x0993, 0x09a8, +0x09aa, 0x09b0, +0x09b2, 0x09b2, +0x09b6, 0x09b9, +0x09bd, 0x09bd, +0x09ce, 0x09ce, +0x09dc, 0x09dd, +0x09df, 0x09e1, +0x09f0, 0x09f1, +0x09fc, 0x09fc, +0x0a05, 0x0a0a, +0x0a0f, 0x0a10, +0x0a13, 0x0a28, +0x0a2a, 0x0a30, +0x0a32, 0x0a33, +0x0a35, 0x0a36, +0x0a38, 0x0a39, +0x0a59, 0x0a5c, +0x0a5e, 0x0a5e, +0x0a72, 0x0a74, +0x0a85, 0x0a8d, +0x0a8f, 0x0a91, +0x0a93, 0x0aa8, +0x0aaa, 0x0ab0, +0x0ab2, 0x0ab3, +0x0ab5, 0x0ab9, +0x0abd, 0x0abd, +0x0ad0, 0x0ad0, +0x0ae0, 0x0ae1, +0x0af9, 0x0af9, +0x0b05, 0x0b0c, +0x0b0f, 0x0b10, +0x0b13, 0x0b28, +0x0b2a, 0x0b30, +0x0b32, 0x0b33, +0x0b35, 0x0b39, +0x0b3d, 0x0b3d, +0x0b5c, 0x0b5d, +0x0b5f, 0x0b61, +0x0b71, 0x0b71, +0x0b83, 0x0b83, +0x0b85, 0x0b8a, +0x0b8e, 0x0b90, +0x0b92, 0x0b95, +0x0b99, 0x0b9a, +0x0b9c, 0x0b9c, +0x0b9e, 0x0b9f, +0x0ba3, 0x0ba4, +0x0ba8, 0x0baa, +0x0bae, 0x0bb9, +0x0bd0, 0x0bd0, +0x0c05, 0x0c0c, +0x0c0e, 0x0c10, +0x0c12, 0x0c28, +0x0c2a, 0x0c39, +0x0c3d, 0x0c3d, +0x0c58, 0x0c5a, +0x0c60, 0x0c61, +0x0c80, 0x0c80, +0x0c85, 0x0c8c, +0x0c8e, 0x0c90, +0x0c92, 0x0ca8, +0x0caa, 0x0cb3, +0x0cb5, 0x0cb9, +0x0cbd, 0x0cbd, +0x0cde, 0x0cde, +0x0ce0, 0x0ce1, +0x0cf1, 0x0cf2, +0x0d05, 0x0d0c, +0x0d0e, 0x0d10, +0x0d12, 0x0d3a, +0x0d3d, 0x0d3d, +0x0d4e, 0x0d4e, +0x0d54, 0x0d56, +0x0d5f, 0x0d61, +0x0d7a, 0x0d7f, +0x0d85, 0x0d96, +0x0d9a, 0x0db1, +0x0db3, 0x0dbb, +0x0dbd, 0x0dbd, +0x0dc0, 0x0dc6, +0x0e01, 0x0e30, +0x0e32, 0x0e32, +0x0e40, 0x0e46, +0x0e81, 0x0e82, +0x0e84, 0x0e84, +0x0e87, 0x0e88, +0x0e8a, 0x0e8a, +0x0e8d, 0x0e8d, +0x0e94, 0x0e97, +0x0e99, 0x0e9f, +0x0ea1, 0x0ea3, +0x0ea5, 0x0ea5, +0x0ea7, 0x0ea7, +0x0eaa, 0x0eab, +0x0ead, 0x0eb0, +0x0eb2, 0x0eb2, +0x0ebd, 0x0ebd, +0x0ec0, 0x0ec4, +0x0ec6, 0x0ec6, +0x0edc, 0x0edf, +0x0f00, 0x0f00, +0x0f40, 0x0f47, +0x0f49, 0x0f6c, +0x0f88, 0x0f8c, +0x1000, 0x102a, +0x103f, 0x103f, +0x1050, 0x1055, +0x105a, 0x105d, +0x1061, 0x1061, +0x1065, 0x1066, +0x106e, 0x1070, +0x1075, 0x1081, +0x108e, 0x108e, +0x10a0, 0x10c5, +0x10c7, 0x10c7, +0x10cd, 0x10cd, +0x10d0, 0x10fa, +0x10fc, 0x1248, +0x124a, 0x124d, +0x1250, 0x1256, +0x1258, 0x1258, +0x125a, 0x125d, +0x1260, 0x1288, +0x128a, 0x128d, +0x1290, 0x12b0, +0x12b2, 0x12b5, +0x12b8, 0x12be, +0x12c0, 0x12c0, +0x12c2, 0x12c5, +0x12c8, 0x12d6, +0x12d8, 0x1310, +0x1312, 0x1315, +0x1318, 0x135a, +0x1380, 0x138f, +0x13a0, 0x13f5, +0x13f8, 0x13fd, +0x1401, 0x166c, +0x166f, 0x167f, +0x1681, 0x169a, +0x16a0, 0x16ea, +0x16ee, 0x16f8, +0x1700, 0x170c, +0x170e, 0x1711, +0x1720, 0x1731, +0x1740, 0x1751, +0x1760, 0x176c, +0x176e, 0x1770, +0x1780, 0x17b3, +0x17d7, 0x17d7, +0x17dc, 0x17dc, +0x1820, 0x1878, +0x1880, 0x18a8, +0x18aa, 0x18aa, +0x18b0, 0x18f5, +0x1900, 0x191e, +0x1950, 0x196d, +0x1970, 0x1974, +0x1980, 0x19ab, +0x19b0, 0x19c9, +0x1a00, 0x1a16, +0x1a20, 0x1a54, +0x1aa7, 0x1aa7, +0x1b05, 0x1b33, +0x1b45, 0x1b4b, +0x1b83, 0x1ba0, +0x1bae, 0x1baf, +0x1bba, 0x1be5, +0x1c00, 0x1c23, +0x1c4d, 0x1c4f, +0x1c5a, 0x1c7d, +0x1c80, 0x1c88, +0x1c90, 0x1cba, +0x1cbd, 0x1cbf, +0x1ce9, 0x1cec, +0x1cee, 0x1cf1, +0x1cf5, 0x1cf6, +0x1d00, 0x1dbf, +0x1e00, 0x1f15, +0x1f18, 0x1f1d, +0x1f20, 0x1f45, +0x1f48, 0x1f4d, +0x1f50, 0x1f57, +0x1f59, 0x1f59, +0x1f5b, 0x1f5b, +0x1f5d, 0x1f5d, +0x1f5f, 0x1f7d, +0x1f80, 0x1fb4, +0x1fb6, 0x1fbc, +0x1fbe, 0x1fbe, +0x1fc2, 0x1fc4, +0x1fc6, 0x1fcc, +0x1fd0, 0x1fd3, +0x1fd6, 0x1fdb, +0x1fe0, 0x1fec, +0x1ff2, 0x1ff4, +0x1ff6, 0x1ffc, +0x2071, 0x2071, +0x207f, 0x207f, +0x2090, 0x209c, +0x2102, 0x2102, +0x2107, 0x2107, +0x210a, 0x2113, +0x2115, 0x2115, +0x2118, 0x211d, +0x2124, 0x2124, +0x2126, 0x2126, +0x2128, 0x2128, +0x212a, 0x2139, +0x213c, 0x213f, +0x2145, 0x2149, +0x214e, 0x214e, +0x2160, 0x2188, +0x2c00, 0x2c2e, +0x2c30, 0x2c5e, +0x2c60, 0x2ce4, +0x2ceb, 0x2cee, +0x2cf2, 0x2cf3, +0x2d00, 0x2d25, +0x2d27, 0x2d27, +0x2d2d, 0x2d2d, +0x2d30, 0x2d67, +0x2d6f, 0x2d6f, +0x2d80, 0x2d96, +0x2da0, 0x2da6, +0x2da8, 0x2dae, +0x2db0, 0x2db6, +0x2db8, 0x2dbe, +0x2dc0, 0x2dc6, +0x2dc8, 0x2dce, +0x2dd0, 0x2dd6, +0x2dd8, 0x2dde, +0x3005, 0x3007, +0x3021, 0x3029, +0x3031, 0x3035, +0x3038, 0x303c, +0x3041, 0x3096, +0x309d, 0x309f, +0x30a1, 0x30fa, +0x30fc, 0x30ff, +0x3105, 0x312f, +0x3131, 0x318e, +0x31a0, 0x31ba, +0x31f0, 0x31ff, +0x3400, 0x4db5, +0x4e00, 0x9fef, +0xa000, 0xa48c, +0xa4d0, 0xa4fd, +0xa500, 0xa60c, +0xa610, 0xa61f, +0xa62a, 0xa62b, +0xa640, 0xa66e, +0xa67f, 0xa69d, +0xa6a0, 0xa6ef, +0xa717, 0xa71f, +0xa722, 0xa788, +0xa78b, 0xa7b9, +0xa7f7, 0xa801, +0xa803, 0xa805, +0xa807, 0xa80a, +0xa80c, 0xa822, +0xa840, 0xa873, +0xa882, 0xa8b3, +0xa8f2, 0xa8f7, +0xa8fb, 0xa8fb, +0xa8fd, 0xa8fe, +0xa90a, 0xa925, +0xa930, 0xa946, +0xa960, 0xa97c, +0xa984, 0xa9b2, +0xa9cf, 0xa9cf, +0xa9e0, 0xa9e4, +0xa9e6, 0xa9ef, +0xa9fa, 0xa9fe, +0xaa00, 0xaa28, +0xaa40, 0xaa42, +0xaa44, 0xaa4b, +0xaa60, 0xaa76, +0xaa7a, 0xaa7a, +0xaa7e, 0xaaaf, +0xaab1, 0xaab1, +0xaab5, 0xaab6, +0xaab9, 0xaabd, +0xaac0, 0xaac0, +0xaac2, 0xaac2, +0xaadb, 0xaadd, +0xaae0, 0xaaea, +0xaaf2, 0xaaf4, +0xab01, 0xab06, +0xab09, 0xab0e, +0xab11, 0xab16, +0xab20, 0xab26, +0xab28, 0xab2e, +0xab30, 0xab5a, +0xab5c, 0xab65, +0xab70, 0xabe2, +0xac00, 0xd7a3, +0xd7b0, 0xd7c6, +0xd7cb, 0xd7fb, +0xf900, 0xfa6d, +0xfa70, 0xfad9, +0xfb00, 0xfb06, +0xfb13, 0xfb17, +0xfb1d, 0xfb1d, +0xfb1f, 0xfb28, +0xfb2a, 0xfb36, +0xfb38, 0xfb3c, +0xfb3e, 0xfb3e, +0xfb40, 0xfb41, +0xfb43, 0xfb44, +0xfb46, 0xfbb1, +0xfbd3, 0xfc5d, +0xfc64, 0xfd3d, +0xfd50, 0xfd8f, +0xfd92, 0xfdc7, +0xfdf0, 0xfdf9, +0xfe71, 0xfe71, +0xfe73, 0xfe73, +0xfe77, 0xfe77, +0xfe79, 0xfe79, +0xfe7b, 0xfe7b, +0xfe7d, 0xfe7d, +0xfe7f, 0xfefc, +0xff21, 0xff3a, +0xff41, 0xff5a, +0xff66, 0xff9d, +0xffa0, 0xffbe, +0xffc2, 0xffc7, +0xffca, 0xffcf, +0xffd2, 0xffd7, +0xffda, 0xffdc, +0x10000, 0x1000b, +0x1000d, 0x10026, +0x10028, 0x1003a, +0x1003c, 0x1003d, +0x1003f, 0x1004d, +0x10050, 0x1005d, +0x10080, 0x100fa, +0x10140, 0x10174, +0x10280, 0x1029c, +0x102a0, 0x102d0, +0x10300, 0x1031f, +0x1032d, 0x1034a, +0x10350, 0x10375, +0x10380, 0x1039d, +0x103a0, 0x103c3, +0x103c8, 0x103cf, +0x103d1, 0x103d5, +0x10400, 0x1049d, +0x104b0, 0x104d3, +0x104d8, 0x104fb, +0x10500, 0x10527, +0x10530, 0x10563, +0x10600, 0x10736, +0x10740, 0x10755, +0x10760, 0x10767, +0x10800, 0x10805, +0x10808, 0x10808, +0x1080a, 0x10835, +0x10837, 0x10838, +0x1083c, 0x1083c, +0x1083f, 0x10855, +0x10860, 0x10876, +0x10880, 0x1089e, +0x108e0, 0x108f2, +0x108f4, 0x108f5, +0x10900, 0x10915, +0x10920, 0x10939, +0x10980, 0x109b7, +0x109be, 0x109bf, +0x10a00, 0x10a00, +0x10a10, 0x10a13, +0x10a15, 0x10a17, +0x10a19, 0x10a35, +0x10a60, 0x10a7c, +0x10a80, 0x10a9c, +0x10ac0, 0x10ac7, +0x10ac9, 0x10ae4, +0x10b00, 0x10b35, +0x10b40, 0x10b55, +0x10b60, 0x10b72, +0x10b80, 0x10b91, +0x10c00, 0x10c48, +0x10c80, 0x10cb2, +0x10cc0, 0x10cf2, +0x10d00, 0x10d23, +0x10f00, 0x10f1c, +0x10f27, 0x10f27, +0x10f30, 0x10f45, +0x11003, 0x11037, +0x11083, 0x110af, +0x110d0, 0x110e8, +0x11103, 0x11126, +0x11144, 0x11144, +0x11150, 0x11172, +0x11176, 0x11176, +0x11183, 0x111b2, +0x111c1, 0x111c4, +0x111da, 0x111da, +0x111dc, 0x111dc, +0x11200, 0x11211, +0x11213, 0x1122b, +0x11280, 0x11286, +0x11288, 0x11288, +0x1128a, 0x1128d, +0x1128f, 0x1129d, +0x1129f, 0x112a8, +0x112b0, 0x112de, +0x11305, 0x1130c, +0x1130f, 0x11310, +0x11313, 0x11328, +0x1132a, 0x11330, +0x11332, 0x11333, +0x11335, 0x11339, +0x1133d, 0x1133d, +0x11350, 0x11350, +0x1135d, 0x11361, +0x11400, 0x11434, +0x11447, 0x1144a, +0x11480, 0x114af, +0x114c4, 0x114c5, +0x114c7, 0x114c7, +0x11580, 0x115ae, +0x115d8, 0x115db, +0x11600, 0x1162f, +0x11644, 0x11644, +0x11680, 0x116aa, +0x11700, 0x1171a, +0x11800, 0x1182b, +0x118a0, 0x118df, +0x118ff, 0x118ff, +0x11a00, 0x11a00, +0x11a0b, 0x11a32, +0x11a3a, 0x11a3a, +0x11a50, 0x11a50, +0x11a5c, 0x11a83, +0x11a86, 0x11a89, +0x11a9d, 0x11a9d, +0x11ac0, 0x11af8, +0x11c00, 0x11c08, +0x11c0a, 0x11c2e, +0x11c40, 0x11c40, +0x11c72, 0x11c8f, +0x11d00, 0x11d06, +0x11d08, 0x11d09, +0x11d0b, 0x11d30, +0x11d46, 0x11d46, +0x11d60, 0x11d65, +0x11d67, 0x11d68, +0x11d6a, 0x11d89, +0x11d98, 0x11d98, +0x11ee0, 0x11ef2, +0x12000, 0x12399, +0x12400, 0x1246e, +0x12480, 0x12543, +0x13000, 0x1342e, +0x14400, 0x14646, +0x16800, 0x16a38, +0x16a40, 0x16a5e, +0x16ad0, 0x16aed, +0x16b00, 0x16b2f, +0x16b40, 0x16b43, +0x16b63, 0x16b77, +0x16b7d, 0x16b8f, +0x16e40, 0x16e7f, +0x16f00, 0x16f44, +0x16f50, 0x16f50, +0x16f93, 0x16f9f, +0x16fe0, 0x16fe1, +0x17000, 0x187f1, +0x18800, 0x18af2, +0x1b000, 0x1b11e, +0x1b170, 0x1b2fb, +0x1bc00, 0x1bc6a, +0x1bc70, 0x1bc7c, +0x1bc80, 0x1bc88, +0x1bc90, 0x1bc99, +0x1d400, 0x1d454, +0x1d456, 0x1d49c, +0x1d49e, 0x1d49f, +0x1d4a2, 0x1d4a2, +0x1d4a5, 0x1d4a6, +0x1d4a9, 0x1d4ac, +0x1d4ae, 0x1d4b9, +0x1d4bb, 0x1d4bb, +0x1d4bd, 0x1d4c3, +0x1d4c5, 0x1d505, +0x1d507, 0x1d50a, +0x1d50d, 0x1d514, +0x1d516, 0x1d51c, +0x1d51e, 0x1d539, +0x1d53b, 0x1d53e, +0x1d540, 0x1d544, +0x1d546, 0x1d546, +0x1d54a, 0x1d550, +0x1d552, 0x1d6a5, +0x1d6a8, 0x1d6c0, +0x1d6c2, 0x1d6da, +0x1d6dc, 0x1d6fa, +0x1d6fc, 0x1d714, +0x1d716, 0x1d734, +0x1d736, 0x1d74e, +0x1d750, 0x1d76e, +0x1d770, 0x1d788, +0x1d78a, 0x1d7a8, +0x1d7aa, 0x1d7c2, +0x1d7c4, 0x1d7cb, +0x1e800, 0x1e8c4, +0x1e900, 0x1e943, +0x1ee00, 0x1ee03, +0x1ee05, 0x1ee1f, +0x1ee21, 0x1ee22, +0x1ee24, 0x1ee24, +0x1ee27, 0x1ee27, +0x1ee29, 0x1ee32, +0x1ee34, 0x1ee37, +0x1ee39, 0x1ee39, +0x1ee3b, 0x1ee3b, +0x1ee42, 0x1ee42, +0x1ee47, 0x1ee47, +0x1ee49, 0x1ee49, +0x1ee4b, 0x1ee4b, +0x1ee4d, 0x1ee4f, +0x1ee51, 0x1ee52, +0x1ee54, 0x1ee54, +0x1ee57, 0x1ee57, +0x1ee59, 0x1ee59, +0x1ee5b, 0x1ee5b, +0x1ee5d, 0x1ee5d, +0x1ee5f, 0x1ee5f, +0x1ee61, 0x1ee62, +0x1ee64, 0x1ee64, +0x1ee67, 0x1ee6a, +0x1ee6c, 0x1ee72, +0x1ee74, 0x1ee77, +0x1ee79, 0x1ee7c, +0x1ee7e, 0x1ee7e, +0x1ee80, 0x1ee89, +0x1ee8b, 0x1ee9b, +0x1eea1, 0x1eea3, +0x1eea5, 0x1eea9, +0x1eeab, 0x1eebb, +0x20000, 0x2a6d6, +0x2a700, 0x2b734, +0x2b740, 0x2b81d, +0x2b820, 0x2cea1, +0x2ceb0, 0x2ebe0, +0x2f800, 0x2fa1d, +}; /* END of CR_XID_Start */ + +/* PROPERTY: 'Yi': Script */ +static const OnigCodePoint +CR_Yi[] = { 2, +0xa000, 0xa48c, +0xa490, 0xa4c6, +}; /* END of CR_Yi */ + +/* PROPERTY: 'Z': Major Category */ +static const OnigCodePoint +CR_Z[] = { 8, +0x0020, 0x0020, +0x00a0, 0x00a0, +0x1680, 0x1680, +0x2000, 0x200a, +0x2028, 0x2029, +0x202f, 0x202f, +0x205f, 0x205f, +0x3000, 0x3000, +}; /* END of CR_Z */ + +/* PROPERTY: 'Zanabazar_Square': Script */ +static const OnigCodePoint +CR_Zanabazar_Square[] = { 1, +0x11a00, 0x11a47, +}; /* END of CR_Zanabazar_Square */ + +/* PROPERTY: 'Zl': General Category */ +static const OnigCodePoint +CR_Zl[] = { 1, +0x2028, 0x2028, +}; /* END of CR_Zl */ + +/* PROPERTY: 'Zp': General Category */ +static const OnigCodePoint +CR_Zp[] = { 1, +0x2029, 0x2029, +}; /* END of CR_Zp */ + +/* PROPERTY: 'Zs': General Category */ +static const OnigCodePoint +CR_Zs[] = { 7, +0x0020, 0x0020, +0x00a0, 0x00a0, +0x1680, 0x1680, +0x2000, 0x200a, +0x202f, 0x202f, +0x205f, 0x205f, +0x3000, 0x3000, +}; /* END of CR_Zs */ + +/* PROPERTY: 'In_Basic_Latin': Block */ +#define CR_In_Basic_Latin CR_ASCII + +/* PROPERTY: 'In_Latin_1_Supplement': Block */ +static const OnigCodePoint +CR_In_Latin_1_Supplement[] = { 1, +0x0080, 0x00ff, +}; /* END of CR_In_Latin_1_Supplement */ + +/* PROPERTY: 'In_Latin_Extended_A': Block */ +static const OnigCodePoint +CR_In_Latin_Extended_A[] = { 1, +0x0100, 0x017f, +}; /* END of CR_In_Latin_Extended_A */ + +/* PROPERTY: 'In_Latin_Extended_B': Block */ +static const OnigCodePoint +CR_In_Latin_Extended_B[] = { 1, +0x0180, 0x024f, +}; /* END of CR_In_Latin_Extended_B */ + +/* PROPERTY: 'In_IPA_Extensions': Block */ +static const OnigCodePoint +CR_In_IPA_Extensions[] = { 1, +0x0250, 0x02af, +}; /* END of CR_In_IPA_Extensions */ + +/* PROPERTY: 'In_Spacing_Modifier_Letters': Block */ +static const OnigCodePoint +CR_In_Spacing_Modifier_Letters[] = { 1, +0x02b0, 0x02ff, +}; /* END of CR_In_Spacing_Modifier_Letters */ + +/* PROPERTY: 'In_Combining_Diacritical_Marks': Block */ +static const OnigCodePoint +CR_In_Combining_Diacritical_Marks[] = { 1, +0x0300, 0x036f, +}; /* END of CR_In_Combining_Diacritical_Marks */ + +/* PROPERTY: 'In_Greek_and_Coptic': Block */ +static const OnigCodePoint +CR_In_Greek_and_Coptic[] = { 1, +0x0370, 0x03ff, +}; /* END of CR_In_Greek_and_Coptic */ + +/* PROPERTY: 'In_Cyrillic': Block */ +static const OnigCodePoint +CR_In_Cyrillic[] = { 1, +0x0400, 0x04ff, +}; /* END of CR_In_Cyrillic */ + +/* PROPERTY: 'In_Cyrillic_Supplement': Block */ +static const OnigCodePoint +CR_In_Cyrillic_Supplement[] = { 1, +0x0500, 0x052f, +}; /* END of CR_In_Cyrillic_Supplement */ + +/* PROPERTY: 'In_Armenian': Block */ +static const OnigCodePoint +CR_In_Armenian[] = { 1, +0x0530, 0x058f, +}; /* END of CR_In_Armenian */ + +/* PROPERTY: 'In_Hebrew': Block */ +static const OnigCodePoint +CR_In_Hebrew[] = { 1, +0x0590, 0x05ff, +}; /* END of CR_In_Hebrew */ + +/* PROPERTY: 'In_Arabic': Block */ +static const OnigCodePoint +CR_In_Arabic[] = { 1, +0x0600, 0x06ff, +}; /* END of CR_In_Arabic */ + +/* PROPERTY: 'In_Syriac': Block */ +static const OnigCodePoint +CR_In_Syriac[] = { 1, +0x0700, 0x074f, +}; /* END of CR_In_Syriac */ + +/* PROPERTY: 'In_Arabic_Supplement': Block */ +static const OnigCodePoint +CR_In_Arabic_Supplement[] = { 1, +0x0750, 0x077f, +}; /* END of CR_In_Arabic_Supplement */ + +/* PROPERTY: 'In_Thaana': Block */ +static const OnigCodePoint +CR_In_Thaana[] = { 1, +0x0780, 0x07bf, +}; /* END of CR_In_Thaana */ + +/* PROPERTY: 'In_NKo': Block */ +static const OnigCodePoint +CR_In_NKo[] = { 1, +0x07c0, 0x07ff, +}; /* END of CR_In_NKo */ + +/* PROPERTY: 'In_Samaritan': Block */ +static const OnigCodePoint +CR_In_Samaritan[] = { 1, +0x0800, 0x083f, +}; /* END of CR_In_Samaritan */ + +/* PROPERTY: 'In_Mandaic': Block */ +static const OnigCodePoint +CR_In_Mandaic[] = { 1, +0x0840, 0x085f, +}; /* END of CR_In_Mandaic */ + +/* PROPERTY: 'In_Syriac_Supplement': Block */ +static const OnigCodePoint +CR_In_Syriac_Supplement[] = { 1, +0x0860, 0x086f, +}; /* END of CR_In_Syriac_Supplement */ + +/* PROPERTY: 'In_Arabic_Extended_A': Block */ +static const OnigCodePoint +CR_In_Arabic_Extended_A[] = { 1, +0x08a0, 0x08ff, +}; /* END of CR_In_Arabic_Extended_A */ + +/* PROPERTY: 'In_Devanagari': Block */ +static const OnigCodePoint +CR_In_Devanagari[] = { 1, +0x0900, 0x097f, +}; /* END of CR_In_Devanagari */ + +/* PROPERTY: 'In_Bengali': Block */ +static const OnigCodePoint +CR_In_Bengali[] = { 1, +0x0980, 0x09ff, +}; /* END of CR_In_Bengali */ + +/* PROPERTY: 'In_Gurmukhi': Block */ +static const OnigCodePoint +CR_In_Gurmukhi[] = { 1, +0x0a00, 0x0a7f, +}; /* END of CR_In_Gurmukhi */ + +/* PROPERTY: 'In_Gujarati': Block */ +static const OnigCodePoint +CR_In_Gujarati[] = { 1, +0x0a80, 0x0aff, +}; /* END of CR_In_Gujarati */ + +/* PROPERTY: 'In_Oriya': Block */ +static const OnigCodePoint +CR_In_Oriya[] = { 1, +0x0b00, 0x0b7f, +}; /* END of CR_In_Oriya */ + +/* PROPERTY: 'In_Tamil': Block */ +static const OnigCodePoint +CR_In_Tamil[] = { 1, +0x0b80, 0x0bff, +}; /* END of CR_In_Tamil */ + +/* PROPERTY: 'In_Telugu': Block */ +static const OnigCodePoint +CR_In_Telugu[] = { 1, +0x0c00, 0x0c7f, +}; /* END of CR_In_Telugu */ + +/* PROPERTY: 'In_Kannada': Block */ +static const OnigCodePoint +CR_In_Kannada[] = { 1, +0x0c80, 0x0cff, +}; /* END of CR_In_Kannada */ + +/* PROPERTY: 'In_Malayalam': Block */ +static const OnigCodePoint +CR_In_Malayalam[] = { 1, +0x0d00, 0x0d7f, +}; /* END of CR_In_Malayalam */ + +/* PROPERTY: 'In_Sinhala': Block */ +static const OnigCodePoint +CR_In_Sinhala[] = { 1, +0x0d80, 0x0dff, +}; /* END of CR_In_Sinhala */ + +/* PROPERTY: 'In_Thai': Block */ +static const OnigCodePoint +CR_In_Thai[] = { 1, +0x0e00, 0x0e7f, +}; /* END of CR_In_Thai */ + +/* PROPERTY: 'In_Lao': Block */ +static const OnigCodePoint +CR_In_Lao[] = { 1, +0x0e80, 0x0eff, +}; /* END of CR_In_Lao */ + +/* PROPERTY: 'In_Tibetan': Block */ +static const OnigCodePoint +CR_In_Tibetan[] = { 1, +0x0f00, 0x0fff, +}; /* END of CR_In_Tibetan */ + +/* PROPERTY: 'In_Myanmar': Block */ +static const OnigCodePoint +CR_In_Myanmar[] = { 1, +0x1000, 0x109f, +}; /* END of CR_In_Myanmar */ + +/* PROPERTY: 'In_Georgian': Block */ +static const OnigCodePoint +CR_In_Georgian[] = { 1, +0x10a0, 0x10ff, +}; /* END of CR_In_Georgian */ + +/* PROPERTY: 'In_Hangul_Jamo': Block */ +static const OnigCodePoint +CR_In_Hangul_Jamo[] = { 1, +0x1100, 0x11ff, +}; /* END of CR_In_Hangul_Jamo */ + +/* PROPERTY: 'In_Ethiopic': Block */ +static const OnigCodePoint +CR_In_Ethiopic[] = { 1, +0x1200, 0x137f, +}; /* END of CR_In_Ethiopic */ + +/* PROPERTY: 'In_Ethiopic_Supplement': Block */ +static const OnigCodePoint +CR_In_Ethiopic_Supplement[] = { 1, +0x1380, 0x139f, +}; /* END of CR_In_Ethiopic_Supplement */ + +/* PROPERTY: 'In_Cherokee': Block */ +static const OnigCodePoint +CR_In_Cherokee[] = { 1, +0x13a0, 0x13ff, +}; /* END of CR_In_Cherokee */ + +/* PROPERTY: 'In_Unified_Canadian_Aboriginal_Syllabics': Block */ +static const OnigCodePoint +CR_In_Unified_Canadian_Aboriginal_Syllabics[] = { 1, +0x1400, 0x167f, +}; /* END of CR_In_Unified_Canadian_Aboriginal_Syllabics */ + +/* PROPERTY: 'In_Ogham': Block */ +static const OnigCodePoint +CR_In_Ogham[] = { 1, +0x1680, 0x169f, +}; /* END of CR_In_Ogham */ + +/* PROPERTY: 'In_Runic': Block */ +static const OnigCodePoint +CR_In_Runic[] = { 1, +0x16a0, 0x16ff, +}; /* END of CR_In_Runic */ + +/* PROPERTY: 'In_Tagalog': Block */ +static const OnigCodePoint +CR_In_Tagalog[] = { 1, +0x1700, 0x171f, +}; /* END of CR_In_Tagalog */ + +/* PROPERTY: 'In_Hanunoo': Block */ +static const OnigCodePoint +CR_In_Hanunoo[] = { 1, +0x1720, 0x173f, +}; /* END of CR_In_Hanunoo */ + +/* PROPERTY: 'In_Buhid': Block */ +static const OnigCodePoint +CR_In_Buhid[] = { 1, +0x1740, 0x175f, +}; /* END of CR_In_Buhid */ + +/* PROPERTY: 'In_Tagbanwa': Block */ +static const OnigCodePoint +CR_In_Tagbanwa[] = { 1, +0x1760, 0x177f, +}; /* END of CR_In_Tagbanwa */ + +/* PROPERTY: 'In_Khmer': Block */ +static const OnigCodePoint +CR_In_Khmer[] = { 1, +0x1780, 0x17ff, +}; /* END of CR_In_Khmer */ + +/* PROPERTY: 'In_Mongolian': Block */ +static const OnigCodePoint +CR_In_Mongolian[] = { 1, +0x1800, 0x18af, +}; /* END of CR_In_Mongolian */ + +/* PROPERTY: 'In_Unified_Canadian_Aboriginal_Syllabics_Extended': Block */ +static const OnigCodePoint +CR_In_Unified_Canadian_Aboriginal_Syllabics_Extended[] = { 1, +0x18b0, 0x18ff, +}; /* END of CR_In_Unified_Canadian_Aboriginal_Syllabics_Extended */ + +/* PROPERTY: 'In_Limbu': Block */ +static const OnigCodePoint +CR_In_Limbu[] = { 1, +0x1900, 0x194f, +}; /* END of CR_In_Limbu */ + +/* PROPERTY: 'In_Tai_Le': Block */ +static const OnigCodePoint +CR_In_Tai_Le[] = { 1, +0x1950, 0x197f, +}; /* END of CR_In_Tai_Le */ + +/* PROPERTY: 'In_New_Tai_Lue': Block */ +static const OnigCodePoint +CR_In_New_Tai_Lue[] = { 1, +0x1980, 0x19df, +}; /* END of CR_In_New_Tai_Lue */ + +/* PROPERTY: 'In_Khmer_Symbols': Block */ +static const OnigCodePoint +CR_In_Khmer_Symbols[] = { 1, +0x19e0, 0x19ff, +}; /* END of CR_In_Khmer_Symbols */ + +/* PROPERTY: 'In_Buginese': Block */ +static const OnigCodePoint +CR_In_Buginese[] = { 1, +0x1a00, 0x1a1f, +}; /* END of CR_In_Buginese */ + +/* PROPERTY: 'In_Tai_Tham': Block */ +static const OnigCodePoint +CR_In_Tai_Tham[] = { 1, +0x1a20, 0x1aaf, +}; /* END of CR_In_Tai_Tham */ + +/* PROPERTY: 'In_Combining_Diacritical_Marks_Extended': Block */ +static const OnigCodePoint +CR_In_Combining_Diacritical_Marks_Extended[] = { 1, +0x1ab0, 0x1aff, +}; /* END of CR_In_Combining_Diacritical_Marks_Extended */ + +/* PROPERTY: 'In_Balinese': Block */ +static const OnigCodePoint +CR_In_Balinese[] = { 1, +0x1b00, 0x1b7f, +}; /* END of CR_In_Balinese */ + +/* PROPERTY: 'In_Sundanese': Block */ +static const OnigCodePoint +CR_In_Sundanese[] = { 1, +0x1b80, 0x1bbf, +}; /* END of CR_In_Sundanese */ + +/* PROPERTY: 'In_Batak': Block */ +static const OnigCodePoint +CR_In_Batak[] = { 1, +0x1bc0, 0x1bff, +}; /* END of CR_In_Batak */ + +/* PROPERTY: 'In_Lepcha': Block */ +static const OnigCodePoint +CR_In_Lepcha[] = { 1, +0x1c00, 0x1c4f, +}; /* END of CR_In_Lepcha */ + +/* PROPERTY: 'In_Ol_Chiki': Block */ +#define CR_In_Ol_Chiki CR_Ol_Chiki + +/* PROPERTY: 'In_Cyrillic_Extended_C': Block */ +static const OnigCodePoint +CR_In_Cyrillic_Extended_C[] = { 1, +0x1c80, 0x1c8f, +}; /* END of CR_In_Cyrillic_Extended_C */ + +/* PROPERTY: 'In_Georgian_Extended': Block */ +static const OnigCodePoint +CR_In_Georgian_Extended[] = { 1, +0x1c90, 0x1cbf, +}; /* END of CR_In_Georgian_Extended */ + +/* PROPERTY: 'In_Sundanese_Supplement': Block */ +static const OnigCodePoint +CR_In_Sundanese_Supplement[] = { 1, +0x1cc0, 0x1ccf, +}; /* END of CR_In_Sundanese_Supplement */ + +/* PROPERTY: 'In_Vedic_Extensions': Block */ +static const OnigCodePoint +CR_In_Vedic_Extensions[] = { 1, +0x1cd0, 0x1cff, +}; /* END of CR_In_Vedic_Extensions */ + +/* PROPERTY: 'In_Phonetic_Extensions': Block */ +static const OnigCodePoint +CR_In_Phonetic_Extensions[] = { 1, +0x1d00, 0x1d7f, +}; /* END of CR_In_Phonetic_Extensions */ + +/* PROPERTY: 'In_Phonetic_Extensions_Supplement': Block */ +static const OnigCodePoint +CR_In_Phonetic_Extensions_Supplement[] = { 1, +0x1d80, 0x1dbf, +}; /* END of CR_In_Phonetic_Extensions_Supplement */ + +/* PROPERTY: 'In_Combining_Diacritical_Marks_Supplement': Block */ +static const OnigCodePoint +CR_In_Combining_Diacritical_Marks_Supplement[] = { 1, +0x1dc0, 0x1dff, +}; /* END of CR_In_Combining_Diacritical_Marks_Supplement */ + +/* PROPERTY: 'In_Latin_Extended_Additional': Block */ +static const OnigCodePoint +CR_In_Latin_Extended_Additional[] = { 1, +0x1e00, 0x1eff, +}; /* END of CR_In_Latin_Extended_Additional */ + +/* PROPERTY: 'In_Greek_Extended': Block */ +static const OnigCodePoint +CR_In_Greek_Extended[] = { 1, +0x1f00, 0x1fff, +}; /* END of CR_In_Greek_Extended */ + +/* PROPERTY: 'In_General_Punctuation': Block */ +static const OnigCodePoint +CR_In_General_Punctuation[] = { 1, +0x2000, 0x206f, +}; /* END of CR_In_General_Punctuation */ + +/* PROPERTY: 'In_Superscripts_and_Subscripts': Block */ +static const OnigCodePoint +CR_In_Superscripts_and_Subscripts[] = { 1, +0x2070, 0x209f, +}; /* END of CR_In_Superscripts_and_Subscripts */ + +/* PROPERTY: 'In_Currency_Symbols': Block */ +static const OnigCodePoint +CR_In_Currency_Symbols[] = { 1, +0x20a0, 0x20cf, +}; /* END of CR_In_Currency_Symbols */ + +/* PROPERTY: 'In_Combining_Diacritical_Marks_for_Symbols': Block */ +static const OnigCodePoint +CR_In_Combining_Diacritical_Marks_for_Symbols[] = { 1, +0x20d0, 0x20ff, +}; /* END of CR_In_Combining_Diacritical_Marks_for_Symbols */ + +/* PROPERTY: 'In_Letterlike_Symbols': Block */ +static const OnigCodePoint +CR_In_Letterlike_Symbols[] = { 1, +0x2100, 0x214f, +}; /* END of CR_In_Letterlike_Symbols */ + +/* PROPERTY: 'In_Number_Forms': Block */ +static const OnigCodePoint +CR_In_Number_Forms[] = { 1, +0x2150, 0x218f, +}; /* END of CR_In_Number_Forms */ + +/* PROPERTY: 'In_Arrows': Block */ +static const OnigCodePoint +CR_In_Arrows[] = { 1, +0x2190, 0x21ff, +}; /* END of CR_In_Arrows */ + +/* PROPERTY: 'In_Mathematical_Operators': Block */ +static const OnigCodePoint +CR_In_Mathematical_Operators[] = { 1, +0x2200, 0x22ff, +}; /* END of CR_In_Mathematical_Operators */ + +/* PROPERTY: 'In_Miscellaneous_Technical': Block */ +static const OnigCodePoint +CR_In_Miscellaneous_Technical[] = { 1, +0x2300, 0x23ff, +}; /* END of CR_In_Miscellaneous_Technical */ + +/* PROPERTY: 'In_Control_Pictures': Block */ +static const OnigCodePoint +CR_In_Control_Pictures[] = { 1, +0x2400, 0x243f, +}; /* END of CR_In_Control_Pictures */ + +/* PROPERTY: 'In_Optical_Character_Recognition': Block */ +static const OnigCodePoint +CR_In_Optical_Character_Recognition[] = { 1, +0x2440, 0x245f, +}; /* END of CR_In_Optical_Character_Recognition */ + +/* PROPERTY: 'In_Enclosed_Alphanumerics': Block */ +static const OnigCodePoint +CR_In_Enclosed_Alphanumerics[] = { 1, +0x2460, 0x24ff, +}; /* END of CR_In_Enclosed_Alphanumerics */ + +/* PROPERTY: 'In_Box_Drawing': Block */ +static const OnigCodePoint +CR_In_Box_Drawing[] = { 1, +0x2500, 0x257f, +}; /* END of CR_In_Box_Drawing */ + +/* PROPERTY: 'In_Block_Elements': Block */ +static const OnigCodePoint +CR_In_Block_Elements[] = { 1, +0x2580, 0x259f, +}; /* END of CR_In_Block_Elements */ + +/* PROPERTY: 'In_Geometric_Shapes': Block */ +static const OnigCodePoint +CR_In_Geometric_Shapes[] = { 1, +0x25a0, 0x25ff, +}; /* END of CR_In_Geometric_Shapes */ + +/* PROPERTY: 'In_Miscellaneous_Symbols': Block */ +static const OnigCodePoint +CR_In_Miscellaneous_Symbols[] = { 1, +0x2600, 0x26ff, +}; /* END of CR_In_Miscellaneous_Symbols */ + +/* PROPERTY: 'In_Dingbats': Block */ +static const OnigCodePoint +CR_In_Dingbats[] = { 1, +0x2700, 0x27bf, +}; /* END of CR_In_Dingbats */ + +/* PROPERTY: 'In_Miscellaneous_Mathematical_Symbols_A': Block */ +static const OnigCodePoint +CR_In_Miscellaneous_Mathematical_Symbols_A[] = { 1, +0x27c0, 0x27ef, +}; /* END of CR_In_Miscellaneous_Mathematical_Symbols_A */ + +/* PROPERTY: 'In_Supplemental_Arrows_A': Block */ +static const OnigCodePoint +CR_In_Supplemental_Arrows_A[] = { 1, +0x27f0, 0x27ff, +}; /* END of CR_In_Supplemental_Arrows_A */ + +/* PROPERTY: 'In_Braille_Patterns': Block */ +#define CR_In_Braille_Patterns CR_Braille + +/* PROPERTY: 'In_Supplemental_Arrows_B': Block */ +static const OnigCodePoint +CR_In_Supplemental_Arrows_B[] = { 1, +0x2900, 0x297f, +}; /* END of CR_In_Supplemental_Arrows_B */ + +/* PROPERTY: 'In_Miscellaneous_Mathematical_Symbols_B': Block */ +static const OnigCodePoint +CR_In_Miscellaneous_Mathematical_Symbols_B[] = { 1, +0x2980, 0x29ff, +}; /* END of CR_In_Miscellaneous_Mathematical_Symbols_B */ + +/* PROPERTY: 'In_Supplemental_Mathematical_Operators': Block */ +static const OnigCodePoint +CR_In_Supplemental_Mathematical_Operators[] = { 1, +0x2a00, 0x2aff, +}; /* END of CR_In_Supplemental_Mathematical_Operators */ + +/* PROPERTY: 'In_Miscellaneous_Symbols_and_Arrows': Block */ +static const OnigCodePoint +CR_In_Miscellaneous_Symbols_and_Arrows[] = { 1, +0x2b00, 0x2bff, +}; /* END of CR_In_Miscellaneous_Symbols_and_Arrows */ + +/* PROPERTY: 'In_Glagolitic': Block */ +static const OnigCodePoint +CR_In_Glagolitic[] = { 1, +0x2c00, 0x2c5f, +}; /* END of CR_In_Glagolitic */ + +/* PROPERTY: 'In_Latin_Extended_C': Block */ +static const OnigCodePoint +CR_In_Latin_Extended_C[] = { 1, +0x2c60, 0x2c7f, +}; /* END of CR_In_Latin_Extended_C */ + +/* PROPERTY: 'In_Coptic': Block */ +static const OnigCodePoint +CR_In_Coptic[] = { 1, +0x2c80, 0x2cff, +}; /* END of CR_In_Coptic */ + +/* PROPERTY: 'In_Georgian_Supplement': Block */ +static const OnigCodePoint +CR_In_Georgian_Supplement[] = { 1, +0x2d00, 0x2d2f, +}; /* END of CR_In_Georgian_Supplement */ + +/* PROPERTY: 'In_Tifinagh': Block */ +static const OnigCodePoint +CR_In_Tifinagh[] = { 1, +0x2d30, 0x2d7f, +}; /* END of CR_In_Tifinagh */ + +/* PROPERTY: 'In_Ethiopic_Extended': Block */ +static const OnigCodePoint +CR_In_Ethiopic_Extended[] = { 1, +0x2d80, 0x2ddf, +}; /* END of CR_In_Ethiopic_Extended */ + +/* PROPERTY: 'In_Cyrillic_Extended_A': Block */ +static const OnigCodePoint +CR_In_Cyrillic_Extended_A[] = { 1, +0x2de0, 0x2dff, +}; /* END of CR_In_Cyrillic_Extended_A */ + +/* PROPERTY: 'In_Supplemental_Punctuation': Block */ +static const OnigCodePoint +CR_In_Supplemental_Punctuation[] = { 1, +0x2e00, 0x2e7f, +}; /* END of CR_In_Supplemental_Punctuation */ + +/* PROPERTY: 'In_CJK_Radicals_Supplement': Block */ +static const OnigCodePoint +CR_In_CJK_Radicals_Supplement[] = { 1, +0x2e80, 0x2eff, +}; /* END of CR_In_CJK_Radicals_Supplement */ + +/* PROPERTY: 'In_Kangxi_Radicals': Block */ +static const OnigCodePoint +CR_In_Kangxi_Radicals[] = { 1, +0x2f00, 0x2fdf, +}; /* END of CR_In_Kangxi_Radicals */ + +/* PROPERTY: 'In_Ideographic_Description_Characters': Block */ +static const OnigCodePoint +CR_In_Ideographic_Description_Characters[] = { 1, +0x2ff0, 0x2fff, +}; /* END of CR_In_Ideographic_Description_Characters */ + +/* PROPERTY: 'In_CJK_Symbols_and_Punctuation': Block */ +static const OnigCodePoint +CR_In_CJK_Symbols_and_Punctuation[] = { 1, +0x3000, 0x303f, +}; /* END of CR_In_CJK_Symbols_and_Punctuation */ + +/* PROPERTY: 'In_Hiragana': Block */ +static const OnigCodePoint +CR_In_Hiragana[] = { 1, +0x3040, 0x309f, +}; /* END of CR_In_Hiragana */ + +/* PROPERTY: 'In_Katakana': Block */ +static const OnigCodePoint +CR_In_Katakana[] = { 1, +0x30a0, 0x30ff, +}; /* END of CR_In_Katakana */ + +/* PROPERTY: 'In_Bopomofo': Block */ +static const OnigCodePoint +CR_In_Bopomofo[] = { 1, +0x3100, 0x312f, +}; /* END of CR_In_Bopomofo */ + +/* PROPERTY: 'In_Hangul_Compatibility_Jamo': Block */ +static const OnigCodePoint +CR_In_Hangul_Compatibility_Jamo[] = { 1, +0x3130, 0x318f, +}; /* END of CR_In_Hangul_Compatibility_Jamo */ + +/* PROPERTY: 'In_Kanbun': Block */ +static const OnigCodePoint +CR_In_Kanbun[] = { 1, +0x3190, 0x319f, +}; /* END of CR_In_Kanbun */ + +/* PROPERTY: 'In_Bopomofo_Extended': Block */ +static const OnigCodePoint +CR_In_Bopomofo_Extended[] = { 1, +0x31a0, 0x31bf, +}; /* END of CR_In_Bopomofo_Extended */ + +/* PROPERTY: 'In_CJK_Strokes': Block */ +static const OnigCodePoint +CR_In_CJK_Strokes[] = { 1, +0x31c0, 0x31ef, +}; /* END of CR_In_CJK_Strokes */ + +/* PROPERTY: 'In_Katakana_Phonetic_Extensions': Block */ +static const OnigCodePoint +CR_In_Katakana_Phonetic_Extensions[] = { 1, +0x31f0, 0x31ff, +}; /* END of CR_In_Katakana_Phonetic_Extensions */ + +/* PROPERTY: 'In_Enclosed_CJK_Letters_and_Months': Block */ +static const OnigCodePoint +CR_In_Enclosed_CJK_Letters_and_Months[] = { 1, +0x3200, 0x32ff, +}; /* END of CR_In_Enclosed_CJK_Letters_and_Months */ + +/* PROPERTY: 'In_CJK_Compatibility': Block */ +static const OnigCodePoint +CR_In_CJK_Compatibility[] = { 1, +0x3300, 0x33ff, +}; /* END of CR_In_CJK_Compatibility */ + +/* PROPERTY: 'In_CJK_Unified_Ideographs_Extension_A': Block */ +static const OnigCodePoint +CR_In_CJK_Unified_Ideographs_Extension_A[] = { 1, +0x3400, 0x4dbf, +}; /* END of CR_In_CJK_Unified_Ideographs_Extension_A */ + +/* PROPERTY: 'In_Yijing_Hexagram_Symbols': Block */ +static const OnigCodePoint +CR_In_Yijing_Hexagram_Symbols[] = { 1, +0x4dc0, 0x4dff, +}; /* END of CR_In_Yijing_Hexagram_Symbols */ + +/* PROPERTY: 'In_CJK_Unified_Ideographs': Block */ +static const OnigCodePoint +CR_In_CJK_Unified_Ideographs[] = { 1, +0x4e00, 0x9fff, +}; /* END of CR_In_CJK_Unified_Ideographs */ + +/* PROPERTY: 'In_Yi_Syllables': Block */ +static const OnigCodePoint +CR_In_Yi_Syllables[] = { 1, +0xa000, 0xa48f, +}; /* END of CR_In_Yi_Syllables */ + +/* PROPERTY: 'In_Yi_Radicals': Block */ +static const OnigCodePoint +CR_In_Yi_Radicals[] = { 1, +0xa490, 0xa4cf, +}; /* END of CR_In_Yi_Radicals */ + +/* PROPERTY: 'In_Lisu': Block */ +#define CR_In_Lisu CR_Lisu + +/* PROPERTY: 'In_Vai': Block */ +static const OnigCodePoint +CR_In_Vai[] = { 1, +0xa500, 0xa63f, +}; /* END of CR_In_Vai */ + +/* PROPERTY: 'In_Cyrillic_Extended_B': Block */ +static const OnigCodePoint +CR_In_Cyrillic_Extended_B[] = { 1, +0xa640, 0xa69f, +}; /* END of CR_In_Cyrillic_Extended_B */ + +/* PROPERTY: 'In_Bamum': Block */ +static const OnigCodePoint +CR_In_Bamum[] = { 1, +0xa6a0, 0xa6ff, +}; /* END of CR_In_Bamum */ + +/* PROPERTY: 'In_Modifier_Tone_Letters': Block */ +static const OnigCodePoint +CR_In_Modifier_Tone_Letters[] = { 1, +0xa700, 0xa71f, +}; /* END of CR_In_Modifier_Tone_Letters */ + +/* PROPERTY: 'In_Latin_Extended_D': Block */ +static const OnigCodePoint +CR_In_Latin_Extended_D[] = { 1, +0xa720, 0xa7ff, +}; /* END of CR_In_Latin_Extended_D */ + +/* PROPERTY: 'In_Syloti_Nagri': Block */ +static const OnigCodePoint +CR_In_Syloti_Nagri[] = { 1, +0xa800, 0xa82f, +}; /* END of CR_In_Syloti_Nagri */ + +/* PROPERTY: 'In_Common_Indic_Number_Forms': Block */ +static const OnigCodePoint +CR_In_Common_Indic_Number_Forms[] = { 1, +0xa830, 0xa83f, +}; /* END of CR_In_Common_Indic_Number_Forms */ + +/* PROPERTY: 'In_Phags_pa': Block */ +static const OnigCodePoint +CR_In_Phags_pa[] = { 1, +0xa840, 0xa87f, +}; /* END of CR_In_Phags_pa */ + +/* PROPERTY: 'In_Saurashtra': Block */ +static const OnigCodePoint +CR_In_Saurashtra[] = { 1, +0xa880, 0xa8df, +}; /* END of CR_In_Saurashtra */ + +/* PROPERTY: 'In_Devanagari_Extended': Block */ +static const OnigCodePoint +CR_In_Devanagari_Extended[] = { 1, +0xa8e0, 0xa8ff, +}; /* END of CR_In_Devanagari_Extended */ + +/* PROPERTY: 'In_Kayah_Li': Block */ +static const OnigCodePoint +CR_In_Kayah_Li[] = { 1, +0xa900, 0xa92f, +}; /* END of CR_In_Kayah_Li */ + +/* PROPERTY: 'In_Rejang': Block */ +static const OnigCodePoint +CR_In_Rejang[] = { 1, +0xa930, 0xa95f, +}; /* END of CR_In_Rejang */ + +/* PROPERTY: 'In_Hangul_Jamo_Extended_A': Block */ +static const OnigCodePoint +CR_In_Hangul_Jamo_Extended_A[] = { 1, +0xa960, 0xa97f, +}; /* END of CR_In_Hangul_Jamo_Extended_A */ + +/* PROPERTY: 'In_Javanese': Block */ +static const OnigCodePoint +CR_In_Javanese[] = { 1, +0xa980, 0xa9df, +}; /* END of CR_In_Javanese */ + +/* PROPERTY: 'In_Myanmar_Extended_B': Block */ +static const OnigCodePoint +CR_In_Myanmar_Extended_B[] = { 1, +0xa9e0, 0xa9ff, +}; /* END of CR_In_Myanmar_Extended_B */ + +/* PROPERTY: 'In_Cham': Block */ +static const OnigCodePoint +CR_In_Cham[] = { 1, +0xaa00, 0xaa5f, +}; /* END of CR_In_Cham */ + +/* PROPERTY: 'In_Myanmar_Extended_A': Block */ +static const OnigCodePoint +CR_In_Myanmar_Extended_A[] = { 1, +0xaa60, 0xaa7f, +}; /* END of CR_In_Myanmar_Extended_A */ + +/* PROPERTY: 'In_Tai_Viet': Block */ +static const OnigCodePoint +CR_In_Tai_Viet[] = { 1, +0xaa80, 0xaadf, +}; /* END of CR_In_Tai_Viet */ + +/* PROPERTY: 'In_Meetei_Mayek_Extensions': Block */ +static const OnigCodePoint +CR_In_Meetei_Mayek_Extensions[] = { 1, +0xaae0, 0xaaff, +}; /* END of CR_In_Meetei_Mayek_Extensions */ + +/* PROPERTY: 'In_Ethiopic_Extended_A': Block */ +static const OnigCodePoint +CR_In_Ethiopic_Extended_A[] = { 1, +0xab00, 0xab2f, +}; /* END of CR_In_Ethiopic_Extended_A */ + +/* PROPERTY: 'In_Latin_Extended_E': Block */ +static const OnigCodePoint +CR_In_Latin_Extended_E[] = { 1, +0xab30, 0xab6f, +}; /* END of CR_In_Latin_Extended_E */ + +/* PROPERTY: 'In_Cherokee_Supplement': Block */ +static const OnigCodePoint +CR_In_Cherokee_Supplement[] = { 1, +0xab70, 0xabbf, +}; /* END of CR_In_Cherokee_Supplement */ + +/* PROPERTY: 'In_Meetei_Mayek': Block */ +static const OnigCodePoint +CR_In_Meetei_Mayek[] = { 1, +0xabc0, 0xabff, +}; /* END of CR_In_Meetei_Mayek */ + +/* PROPERTY: 'In_Hangul_Syllables': Block */ +static const OnigCodePoint +CR_In_Hangul_Syllables[] = { 1, +0xac00, 0xd7af, +}; /* END of CR_In_Hangul_Syllables */ + +/* PROPERTY: 'In_Hangul_Jamo_Extended_B': Block */ +static const OnigCodePoint +CR_In_Hangul_Jamo_Extended_B[] = { 1, +0xd7b0, 0xd7ff, +}; /* END of CR_In_Hangul_Jamo_Extended_B */ + +/* PROPERTY: 'In_High_Surrogates': Block */ +static const OnigCodePoint +CR_In_High_Surrogates[] = { 1, +0xd800, 0xdb7f, +}; /* END of CR_In_High_Surrogates */ + +/* PROPERTY: 'In_High_Private_Use_Surrogates': Block */ +static const OnigCodePoint +CR_In_High_Private_Use_Surrogates[] = { 1, +0xdb80, 0xdbff, +}; /* END of CR_In_High_Private_Use_Surrogates */ + +/* PROPERTY: 'In_Low_Surrogates': Block */ +static const OnigCodePoint +CR_In_Low_Surrogates[] = { 1, +0xdc00, 0xdfff, +}; /* END of CR_In_Low_Surrogates */ + +/* PROPERTY: 'In_Private_Use_Area': Block */ +static const OnigCodePoint +CR_In_Private_Use_Area[] = { 1, +0xe000, 0xf8ff, +}; /* END of CR_In_Private_Use_Area */ + +/* PROPERTY: 'In_CJK_Compatibility_Ideographs': Block */ +static const OnigCodePoint +CR_In_CJK_Compatibility_Ideographs[] = { 1, +0xf900, 0xfaff, +}; /* END of CR_In_CJK_Compatibility_Ideographs */ + +/* PROPERTY: 'In_Alphabetic_Presentation_Forms': Block */ +static const OnigCodePoint +CR_In_Alphabetic_Presentation_Forms[] = { 1, +0xfb00, 0xfb4f, +}; /* END of CR_In_Alphabetic_Presentation_Forms */ + +/* PROPERTY: 'In_Arabic_Presentation_Forms_A': Block */ +static const OnigCodePoint +CR_In_Arabic_Presentation_Forms_A[] = { 1, +0xfb50, 0xfdff, +}; /* END of CR_In_Arabic_Presentation_Forms_A */ + +/* PROPERTY: 'In_Variation_Selectors': Block */ +static const OnigCodePoint +CR_In_Variation_Selectors[] = { 1, +0xfe00, 0xfe0f, +}; /* END of CR_In_Variation_Selectors */ + +/* PROPERTY: 'In_Vertical_Forms': Block */ +static const OnigCodePoint +CR_In_Vertical_Forms[] = { 1, +0xfe10, 0xfe1f, +}; /* END of CR_In_Vertical_Forms */ + +/* PROPERTY: 'In_Combining_Half_Marks': Block */ +static const OnigCodePoint +CR_In_Combining_Half_Marks[] = { 1, +0xfe20, 0xfe2f, +}; /* END of CR_In_Combining_Half_Marks */ + +/* PROPERTY: 'In_CJK_Compatibility_Forms': Block */ +static const OnigCodePoint +CR_In_CJK_Compatibility_Forms[] = { 1, +0xfe30, 0xfe4f, +}; /* END of CR_In_CJK_Compatibility_Forms */ + +/* PROPERTY: 'In_Small_Form_Variants': Block */ +static const OnigCodePoint +CR_In_Small_Form_Variants[] = { 1, +0xfe50, 0xfe6f, +}; /* END of CR_In_Small_Form_Variants */ + +/* PROPERTY: 'In_Arabic_Presentation_Forms_B': Block */ +static const OnigCodePoint +CR_In_Arabic_Presentation_Forms_B[] = { 1, +0xfe70, 0xfeff, +}; /* END of CR_In_Arabic_Presentation_Forms_B */ + +/* PROPERTY: 'In_Halfwidth_and_Fullwidth_Forms': Block */ +static const OnigCodePoint +CR_In_Halfwidth_and_Fullwidth_Forms[] = { 1, +0xff00, 0xffef, +}; /* END of CR_In_Halfwidth_and_Fullwidth_Forms */ + +/* PROPERTY: 'In_Specials': Block */ +static const OnigCodePoint +CR_In_Specials[] = { 1, +0xfff0, 0xffff, +}; /* END of CR_In_Specials */ + +/* PROPERTY: 'In_Linear_B_Syllabary': Block */ +static const OnigCodePoint +CR_In_Linear_B_Syllabary[] = { 1, +0x10000, 0x1007f, +}; /* END of CR_In_Linear_B_Syllabary */ + +/* PROPERTY: 'In_Linear_B_Ideograms': Block */ +static const OnigCodePoint +CR_In_Linear_B_Ideograms[] = { 1, +0x10080, 0x100ff, +}; /* END of CR_In_Linear_B_Ideograms */ + +/* PROPERTY: 'In_Aegean_Numbers': Block */ +static const OnigCodePoint +CR_In_Aegean_Numbers[] = { 1, +0x10100, 0x1013f, +}; /* END of CR_In_Aegean_Numbers */ + +/* PROPERTY: 'In_Ancient_Greek_Numbers': Block */ +static const OnigCodePoint +CR_In_Ancient_Greek_Numbers[] = { 1, +0x10140, 0x1018f, +}; /* END of CR_In_Ancient_Greek_Numbers */ + +/* PROPERTY: 'In_Ancient_Symbols': Block */ +static const OnigCodePoint +CR_In_Ancient_Symbols[] = { 1, +0x10190, 0x101cf, +}; /* END of CR_In_Ancient_Symbols */ + +/* PROPERTY: 'In_Phaistos_Disc': Block */ +static const OnigCodePoint +CR_In_Phaistos_Disc[] = { 1, +0x101d0, 0x101ff, +}; /* END of CR_In_Phaistos_Disc */ + +/* PROPERTY: 'In_Lycian': Block */ +static const OnigCodePoint +CR_In_Lycian[] = { 1, +0x10280, 0x1029f, +}; /* END of CR_In_Lycian */ + +/* PROPERTY: 'In_Carian': Block */ +static const OnigCodePoint +CR_In_Carian[] = { 1, +0x102a0, 0x102df, +}; /* END of CR_In_Carian */ + +/* PROPERTY: 'In_Coptic_Epact_Numbers': Block */ +static const OnigCodePoint +CR_In_Coptic_Epact_Numbers[] = { 1, +0x102e0, 0x102ff, +}; /* END of CR_In_Coptic_Epact_Numbers */ + +/* PROPERTY: 'In_Old_Italic': Block */ +static const OnigCodePoint +CR_In_Old_Italic[] = { 1, +0x10300, 0x1032f, +}; /* END of CR_In_Old_Italic */ + +/* PROPERTY: 'In_Gothic': Block */ +static const OnigCodePoint +CR_In_Gothic[] = { 1, +0x10330, 0x1034f, +}; /* END of CR_In_Gothic */ + +/* PROPERTY: 'In_Old_Permic': Block */ +static const OnigCodePoint +CR_In_Old_Permic[] = { 1, +0x10350, 0x1037f, +}; /* END of CR_In_Old_Permic */ + +/* PROPERTY: 'In_Ugaritic': Block */ +static const OnigCodePoint +CR_In_Ugaritic[] = { 1, +0x10380, 0x1039f, +}; /* END of CR_In_Ugaritic */ + +/* PROPERTY: 'In_Old_Persian': Block */ +static const OnigCodePoint +CR_In_Old_Persian[] = { 1, +0x103a0, 0x103df, +}; /* END of CR_In_Old_Persian */ + +/* PROPERTY: 'In_Deseret': Block */ +#define CR_In_Deseret CR_Deseret + +/* PROPERTY: 'In_Shavian': Block */ +#define CR_In_Shavian CR_Shavian + +/* PROPERTY: 'In_Osmanya': Block */ +static const OnigCodePoint +CR_In_Osmanya[] = { 1, +0x10480, 0x104af, +}; /* END of CR_In_Osmanya */ + +/* PROPERTY: 'In_Osage': Block */ +static const OnigCodePoint +CR_In_Osage[] = { 1, +0x104b0, 0x104ff, +}; /* END of CR_In_Osage */ + +/* PROPERTY: 'In_Elbasan': Block */ +static const OnigCodePoint +CR_In_Elbasan[] = { 1, +0x10500, 0x1052f, +}; /* END of CR_In_Elbasan */ + +/* PROPERTY: 'In_Caucasian_Albanian': Block */ +static const OnigCodePoint +CR_In_Caucasian_Albanian[] = { 1, +0x10530, 0x1056f, +}; /* END of CR_In_Caucasian_Albanian */ + +/* PROPERTY: 'In_Linear_A': Block */ +static const OnigCodePoint +CR_In_Linear_A[] = { 1, +0x10600, 0x1077f, +}; /* END of CR_In_Linear_A */ + +/* PROPERTY: 'In_Cypriot_Syllabary': Block */ +static const OnigCodePoint +CR_In_Cypriot_Syllabary[] = { 1, +0x10800, 0x1083f, +}; /* END of CR_In_Cypriot_Syllabary */ + +/* PROPERTY: 'In_Imperial_Aramaic': Block */ +static const OnigCodePoint +CR_In_Imperial_Aramaic[] = { 1, +0x10840, 0x1085f, +}; /* END of CR_In_Imperial_Aramaic */ + +/* PROPERTY: 'In_Palmyrene': Block */ +#define CR_In_Palmyrene CR_Palmyrene + +/* PROPERTY: 'In_Nabataean': Block */ +static const OnigCodePoint +CR_In_Nabataean[] = { 1, +0x10880, 0x108af, +}; /* END of CR_In_Nabataean */ + +/* PROPERTY: 'In_Hatran': Block */ +static const OnigCodePoint +CR_In_Hatran[] = { 1, +0x108e0, 0x108ff, +}; /* END of CR_In_Hatran */ + +/* PROPERTY: 'In_Phoenician': Block */ +static const OnigCodePoint +CR_In_Phoenician[] = { 1, +0x10900, 0x1091f, +}; /* END of CR_In_Phoenician */ + +/* PROPERTY: 'In_Lydian': Block */ +static const OnigCodePoint +CR_In_Lydian[] = { 1, +0x10920, 0x1093f, +}; /* END of CR_In_Lydian */ + +/* PROPERTY: 'In_Meroitic_Hieroglyphs': Block */ +#define CR_In_Meroitic_Hieroglyphs CR_Meroitic_Hieroglyphs + +/* PROPERTY: 'In_Meroitic_Cursive': Block */ +static const OnigCodePoint +CR_In_Meroitic_Cursive[] = { 1, +0x109a0, 0x109ff, +}; /* END of CR_In_Meroitic_Cursive */ + +/* PROPERTY: 'In_Kharoshthi': Block */ +static const OnigCodePoint +CR_In_Kharoshthi[] = { 1, +0x10a00, 0x10a5f, +}; /* END of CR_In_Kharoshthi */ + +/* PROPERTY: 'In_Old_South_Arabian': Block */ +#define CR_In_Old_South_Arabian CR_Old_South_Arabian + +/* PROPERTY: 'In_Old_North_Arabian': Block */ +#define CR_In_Old_North_Arabian CR_Old_North_Arabian + +/* PROPERTY: 'In_Manichaean': Block */ +static const OnigCodePoint +CR_In_Manichaean[] = { 1, +0x10ac0, 0x10aff, +}; /* END of CR_In_Manichaean */ + +/* PROPERTY: 'In_Avestan': Block */ +static const OnigCodePoint +CR_In_Avestan[] = { 1, +0x10b00, 0x10b3f, +}; /* END of CR_In_Avestan */ + +/* PROPERTY: 'In_Inscriptional_Parthian': Block */ +static const OnigCodePoint +CR_In_Inscriptional_Parthian[] = { 1, +0x10b40, 0x10b5f, +}; /* END of CR_In_Inscriptional_Parthian */ + +/* PROPERTY: 'In_Inscriptional_Pahlavi': Block */ +static const OnigCodePoint +CR_In_Inscriptional_Pahlavi[] = { 1, +0x10b60, 0x10b7f, +}; /* END of CR_In_Inscriptional_Pahlavi */ + +/* PROPERTY: 'In_Psalter_Pahlavi': Block */ +static const OnigCodePoint +CR_In_Psalter_Pahlavi[] = { 1, +0x10b80, 0x10baf, +}; /* END of CR_In_Psalter_Pahlavi */ + +/* PROPERTY: 'In_Old_Turkic': Block */ +static const OnigCodePoint +CR_In_Old_Turkic[] = { 1, +0x10c00, 0x10c4f, +}; /* END of CR_In_Old_Turkic */ + +/* PROPERTY: 'In_Old_Hungarian': Block */ +static const OnigCodePoint +CR_In_Old_Hungarian[] = { 1, +0x10c80, 0x10cff, +}; /* END of CR_In_Old_Hungarian */ + +/* PROPERTY: 'In_Hanifi_Rohingya': Block */ +static const OnigCodePoint +CR_In_Hanifi_Rohingya[] = { 1, +0x10d00, 0x10d3f, +}; /* END of CR_In_Hanifi_Rohingya */ + +/* PROPERTY: 'In_Rumi_Numeral_Symbols': Block */ +static const OnigCodePoint +CR_In_Rumi_Numeral_Symbols[] = { 1, +0x10e60, 0x10e7f, +}; /* END of CR_In_Rumi_Numeral_Symbols */ + +/* PROPERTY: 'In_Old_Sogdian': Block */ +static const OnigCodePoint +CR_In_Old_Sogdian[] = { 1, +0x10f00, 0x10f2f, +}; /* END of CR_In_Old_Sogdian */ + +/* PROPERTY: 'In_Sogdian': Block */ +static const OnigCodePoint +CR_In_Sogdian[] = { 1, +0x10f30, 0x10f6f, +}; /* END of CR_In_Sogdian */ + +/* PROPERTY: 'In_Brahmi': Block */ +static const OnigCodePoint +CR_In_Brahmi[] = { 1, +0x11000, 0x1107f, +}; /* END of CR_In_Brahmi */ + +/* PROPERTY: 'In_Kaithi': Block */ +static const OnigCodePoint +CR_In_Kaithi[] = { 1, +0x11080, 0x110cf, +}; /* END of CR_In_Kaithi */ + +/* PROPERTY: 'In_Sora_Sompeng': Block */ +static const OnigCodePoint +CR_In_Sora_Sompeng[] = { 1, +0x110d0, 0x110ff, +}; /* END of CR_In_Sora_Sompeng */ + +/* PROPERTY: 'In_Chakma': Block */ +static const OnigCodePoint +CR_In_Chakma[] = { 1, +0x11100, 0x1114f, +}; /* END of CR_In_Chakma */ + +/* PROPERTY: 'In_Mahajani': Block */ +static const OnigCodePoint +CR_In_Mahajani[] = { 1, +0x11150, 0x1117f, +}; /* END of CR_In_Mahajani */ + +/* PROPERTY: 'In_Sharada': Block */ +static const OnigCodePoint +CR_In_Sharada[] = { 1, +0x11180, 0x111df, +}; /* END of CR_In_Sharada */ + +/* PROPERTY: 'In_Sinhala_Archaic_Numbers': Block */ +static const OnigCodePoint +CR_In_Sinhala_Archaic_Numbers[] = { 1, +0x111e0, 0x111ff, +}; /* END of CR_In_Sinhala_Archaic_Numbers */ + +/* PROPERTY: 'In_Khojki': Block */ +static const OnigCodePoint +CR_In_Khojki[] = { 1, +0x11200, 0x1124f, +}; /* END of CR_In_Khojki */ + +/* PROPERTY: 'In_Multani': Block */ +static const OnigCodePoint +CR_In_Multani[] = { 1, +0x11280, 0x112af, +}; /* END of CR_In_Multani */ + +/* PROPERTY: 'In_Khudawadi': Block */ +static const OnigCodePoint +CR_In_Khudawadi[] = { 1, +0x112b0, 0x112ff, +}; /* END of CR_In_Khudawadi */ + +/* PROPERTY: 'In_Grantha': Block */ +static const OnigCodePoint +CR_In_Grantha[] = { 1, +0x11300, 0x1137f, +}; /* END of CR_In_Grantha */ + +/* PROPERTY: 'In_Newa': Block */ +static const OnigCodePoint +CR_In_Newa[] = { 1, +0x11400, 0x1147f, +}; /* END of CR_In_Newa */ + +/* PROPERTY: 'In_Tirhuta': Block */ +static const OnigCodePoint +CR_In_Tirhuta[] = { 1, +0x11480, 0x114df, +}; /* END of CR_In_Tirhuta */ + +/* PROPERTY: 'In_Siddham': Block */ +static const OnigCodePoint +CR_In_Siddham[] = { 1, +0x11580, 0x115ff, +}; /* END of CR_In_Siddham */ + +/* PROPERTY: 'In_Modi': Block */ +static const OnigCodePoint +CR_In_Modi[] = { 1, +0x11600, 0x1165f, +}; /* END of CR_In_Modi */ + +/* PROPERTY: 'In_Mongolian_Supplement': Block */ +static const OnigCodePoint +CR_In_Mongolian_Supplement[] = { 1, +0x11660, 0x1167f, +}; /* END of CR_In_Mongolian_Supplement */ + +/* PROPERTY: 'In_Takri': Block */ +static const OnigCodePoint +CR_In_Takri[] = { 1, +0x11680, 0x116cf, +}; /* END of CR_In_Takri */ + +/* PROPERTY: 'In_Ahom': Block */ +static const OnigCodePoint +CR_In_Ahom[] = { 1, +0x11700, 0x1173f, +}; /* END of CR_In_Ahom */ + +/* PROPERTY: 'In_Dogra': Block */ +static const OnigCodePoint +CR_In_Dogra[] = { 1, +0x11800, 0x1184f, +}; /* END of CR_In_Dogra */ + +/* PROPERTY: 'In_Warang_Citi': Block */ +static const OnigCodePoint +CR_In_Warang_Citi[] = { 1, +0x118a0, 0x118ff, +}; /* END of CR_In_Warang_Citi */ + +/* PROPERTY: 'In_Zanabazar_Square': Block */ +static const OnigCodePoint +CR_In_Zanabazar_Square[] = { 1, +0x11a00, 0x11a4f, +}; /* END of CR_In_Zanabazar_Square */ + +/* PROPERTY: 'In_Soyombo': Block */ +static const OnigCodePoint +CR_In_Soyombo[] = { 1, +0x11a50, 0x11aaf, +}; /* END of CR_In_Soyombo */ + +/* PROPERTY: 'In_Pau_Cin_Hau': Block */ +static const OnigCodePoint +CR_In_Pau_Cin_Hau[] = { 1, +0x11ac0, 0x11aff, +}; /* END of CR_In_Pau_Cin_Hau */ + +/* PROPERTY: 'In_Bhaiksuki': Block */ +static const OnigCodePoint +CR_In_Bhaiksuki[] = { 1, +0x11c00, 0x11c6f, +}; /* END of CR_In_Bhaiksuki */ + +/* PROPERTY: 'In_Marchen': Block */ +static const OnigCodePoint +CR_In_Marchen[] = { 1, +0x11c70, 0x11cbf, +}; /* END of CR_In_Marchen */ + +/* PROPERTY: 'In_Masaram_Gondi': Block */ +static const OnigCodePoint +CR_In_Masaram_Gondi[] = { 1, +0x11d00, 0x11d5f, +}; /* END of CR_In_Masaram_Gondi */ + +/* PROPERTY: 'In_Gunjala_Gondi': Block */ +static const OnigCodePoint +CR_In_Gunjala_Gondi[] = { 1, +0x11d60, 0x11daf, +}; /* END of CR_In_Gunjala_Gondi */ + +/* PROPERTY: 'In_Makasar': Block */ +static const OnigCodePoint +CR_In_Makasar[] = { 1, +0x11ee0, 0x11eff, +}; /* END of CR_In_Makasar */ + +/* PROPERTY: 'In_Cuneiform': Block */ +static const OnigCodePoint +CR_In_Cuneiform[] = { 1, +0x12000, 0x123ff, +}; /* END of CR_In_Cuneiform */ + +/* PROPERTY: 'In_Cuneiform_Numbers_and_Punctuation': Block */ +static const OnigCodePoint +CR_In_Cuneiform_Numbers_and_Punctuation[] = { 1, +0x12400, 0x1247f, +}; /* END of CR_In_Cuneiform_Numbers_and_Punctuation */ + +/* PROPERTY: 'In_Early_Dynastic_Cuneiform': Block */ +static const OnigCodePoint +CR_In_Early_Dynastic_Cuneiform[] = { 1, +0x12480, 0x1254f, +}; /* END of CR_In_Early_Dynastic_Cuneiform */ + +/* PROPERTY: 'In_Egyptian_Hieroglyphs': Block */ +static const OnigCodePoint +CR_In_Egyptian_Hieroglyphs[] = { 1, +0x13000, 0x1342f, +}; /* END of CR_In_Egyptian_Hieroglyphs */ + +/* PROPERTY: 'In_Anatolian_Hieroglyphs': Block */ +static const OnigCodePoint +CR_In_Anatolian_Hieroglyphs[] = { 1, +0x14400, 0x1467f, +}; /* END of CR_In_Anatolian_Hieroglyphs */ + +/* PROPERTY: 'In_Bamum_Supplement': Block */ +static const OnigCodePoint +CR_In_Bamum_Supplement[] = { 1, +0x16800, 0x16a3f, +}; /* END of CR_In_Bamum_Supplement */ + +/* PROPERTY: 'In_Mro': Block */ +static const OnigCodePoint +CR_In_Mro[] = { 1, +0x16a40, 0x16a6f, +}; /* END of CR_In_Mro */ + +/* PROPERTY: 'In_Bassa_Vah': Block */ +static const OnigCodePoint +CR_In_Bassa_Vah[] = { 1, +0x16ad0, 0x16aff, +}; /* END of CR_In_Bassa_Vah */ + +/* PROPERTY: 'In_Pahawh_Hmong': Block */ +static const OnigCodePoint +CR_In_Pahawh_Hmong[] = { 1, +0x16b00, 0x16b8f, +}; /* END of CR_In_Pahawh_Hmong */ + +/* PROPERTY: 'In_Medefaidrin': Block */ +static const OnigCodePoint +CR_In_Medefaidrin[] = { 1, +0x16e40, 0x16e9f, +}; /* END of CR_In_Medefaidrin */ + +/* PROPERTY: 'In_Miao': Block */ +static const OnigCodePoint +CR_In_Miao[] = { 1, +0x16f00, 0x16f9f, +}; /* END of CR_In_Miao */ + +/* PROPERTY: 'In_Ideographic_Symbols_and_Punctuation': Block */ +static const OnigCodePoint +CR_In_Ideographic_Symbols_and_Punctuation[] = { 1, +0x16fe0, 0x16fff, +}; /* END of CR_In_Ideographic_Symbols_and_Punctuation */ + +/* PROPERTY: 'In_Tangut': Block */ +static const OnigCodePoint +CR_In_Tangut[] = { 1, +0x17000, 0x187ff, +}; /* END of CR_In_Tangut */ + +/* PROPERTY: 'In_Tangut_Components': Block */ +static const OnigCodePoint +CR_In_Tangut_Components[] = { 1, +0x18800, 0x18aff, +}; /* END of CR_In_Tangut_Components */ + +/* PROPERTY: 'In_Kana_Supplement': Block */ +static const OnigCodePoint +CR_In_Kana_Supplement[] = { 1, +0x1b000, 0x1b0ff, +}; /* END of CR_In_Kana_Supplement */ + +/* PROPERTY: 'In_Kana_Extended_A': Block */ +static const OnigCodePoint +CR_In_Kana_Extended_A[] = { 1, +0x1b100, 0x1b12f, +}; /* END of CR_In_Kana_Extended_A */ + +/* PROPERTY: 'In_Nushu': Block */ +static const OnigCodePoint +CR_In_Nushu[] = { 1, +0x1b170, 0x1b2ff, +}; /* END of CR_In_Nushu */ + +/* PROPERTY: 'In_Duployan': Block */ +static const OnigCodePoint +CR_In_Duployan[] = { 1, +0x1bc00, 0x1bc9f, +}; /* END of CR_In_Duployan */ + +/* PROPERTY: 'In_Shorthand_Format_Controls': Block */ +static const OnigCodePoint +CR_In_Shorthand_Format_Controls[] = { 1, +0x1bca0, 0x1bcaf, +}; /* END of CR_In_Shorthand_Format_Controls */ + +/* PROPERTY: 'In_Byzantine_Musical_Symbols': Block */ +static const OnigCodePoint +CR_In_Byzantine_Musical_Symbols[] = { 1, +0x1d000, 0x1d0ff, +}; /* END of CR_In_Byzantine_Musical_Symbols */ + +/* PROPERTY: 'In_Musical_Symbols': Block */ +static const OnigCodePoint +CR_In_Musical_Symbols[] = { 1, +0x1d100, 0x1d1ff, +}; /* END of CR_In_Musical_Symbols */ + +/* PROPERTY: 'In_Ancient_Greek_Musical_Notation': Block */ +static const OnigCodePoint +CR_In_Ancient_Greek_Musical_Notation[] = { 1, +0x1d200, 0x1d24f, +}; /* END of CR_In_Ancient_Greek_Musical_Notation */ + +/* PROPERTY: 'In_Mayan_Numerals': Block */ +static const OnigCodePoint +CR_In_Mayan_Numerals[] = { 1, +0x1d2e0, 0x1d2ff, +}; /* END of CR_In_Mayan_Numerals */ + +/* PROPERTY: 'In_Tai_Xuan_Jing_Symbols': Block */ +static const OnigCodePoint +CR_In_Tai_Xuan_Jing_Symbols[] = { 1, +0x1d300, 0x1d35f, +}; /* END of CR_In_Tai_Xuan_Jing_Symbols */ + +/* PROPERTY: 'In_Counting_Rod_Numerals': Block */ +static const OnigCodePoint +CR_In_Counting_Rod_Numerals[] = { 1, +0x1d360, 0x1d37f, +}; /* END of CR_In_Counting_Rod_Numerals */ + +/* PROPERTY: 'In_Mathematical_Alphanumeric_Symbols': Block */ +static const OnigCodePoint +CR_In_Mathematical_Alphanumeric_Symbols[] = { 1, +0x1d400, 0x1d7ff, +}; /* END of CR_In_Mathematical_Alphanumeric_Symbols */ + +/* PROPERTY: 'In_Sutton_SignWriting': Block */ +static const OnigCodePoint +CR_In_Sutton_SignWriting[] = { 1, +0x1d800, 0x1daaf, +}; /* END of CR_In_Sutton_SignWriting */ + +/* PROPERTY: 'In_Glagolitic_Supplement': Block */ +static const OnigCodePoint +CR_In_Glagolitic_Supplement[] = { 1, +0x1e000, 0x1e02f, +}; /* END of CR_In_Glagolitic_Supplement */ + +/* PROPERTY: 'In_Mende_Kikakui': Block */ +static const OnigCodePoint +CR_In_Mende_Kikakui[] = { 1, +0x1e800, 0x1e8df, +}; /* END of CR_In_Mende_Kikakui */ + +/* PROPERTY: 'In_Adlam': Block */ +static const OnigCodePoint +CR_In_Adlam[] = { 1, +0x1e900, 0x1e95f, +}; /* END of CR_In_Adlam */ + +/* PROPERTY: 'In_Indic_Siyaq_Numbers': Block */ +static const OnigCodePoint +CR_In_Indic_Siyaq_Numbers[] = { 1, +0x1ec70, 0x1ecbf, +}; /* END of CR_In_Indic_Siyaq_Numbers */ + +/* PROPERTY: 'In_Arabic_Mathematical_Alphabetic_Symbols': Block */ +static const OnigCodePoint +CR_In_Arabic_Mathematical_Alphabetic_Symbols[] = { 1, +0x1ee00, 0x1eeff, +}; /* END of CR_In_Arabic_Mathematical_Alphabetic_Symbols */ + +/* PROPERTY: 'In_Mahjong_Tiles': Block */ +static const OnigCodePoint +CR_In_Mahjong_Tiles[] = { 1, +0x1f000, 0x1f02f, +}; /* END of CR_In_Mahjong_Tiles */ + +/* PROPERTY: 'In_Domino_Tiles': Block */ +static const OnigCodePoint +CR_In_Domino_Tiles[] = { 1, +0x1f030, 0x1f09f, +}; /* END of CR_In_Domino_Tiles */ + +/* PROPERTY: 'In_Playing_Cards': Block */ +static const OnigCodePoint +CR_In_Playing_Cards[] = { 1, +0x1f0a0, 0x1f0ff, +}; /* END of CR_In_Playing_Cards */ + +/* PROPERTY: 'In_Enclosed_Alphanumeric_Supplement': Block */ +static const OnigCodePoint +CR_In_Enclosed_Alphanumeric_Supplement[] = { 1, +0x1f100, 0x1f1ff, +}; /* END of CR_In_Enclosed_Alphanumeric_Supplement */ + +/* PROPERTY: 'In_Enclosed_Ideographic_Supplement': Block */ +static const OnigCodePoint +CR_In_Enclosed_Ideographic_Supplement[] = { 1, +0x1f200, 0x1f2ff, +}; /* END of CR_In_Enclosed_Ideographic_Supplement */ + +/* PROPERTY: 'In_Miscellaneous_Symbols_and_Pictographs': Block */ +static const OnigCodePoint +CR_In_Miscellaneous_Symbols_and_Pictographs[] = { 1, +0x1f300, 0x1f5ff, +}; /* END of CR_In_Miscellaneous_Symbols_and_Pictographs */ + +/* PROPERTY: 'In_Emoticons': Block */ +static const OnigCodePoint +CR_In_Emoticons[] = { 1, +0x1f600, 0x1f64f, +}; /* END of CR_In_Emoticons */ + +/* PROPERTY: 'In_Ornamental_Dingbats': Block */ +static const OnigCodePoint +CR_In_Ornamental_Dingbats[] = { 1, +0x1f650, 0x1f67f, +}; /* END of CR_In_Ornamental_Dingbats */ + +/* PROPERTY: 'In_Transport_and_Map_Symbols': Block */ +static const OnigCodePoint +CR_In_Transport_and_Map_Symbols[] = { 1, +0x1f680, 0x1f6ff, +}; /* END of CR_In_Transport_and_Map_Symbols */ + +/* PROPERTY: 'In_Alchemical_Symbols': Block */ +static const OnigCodePoint +CR_In_Alchemical_Symbols[] = { 1, +0x1f700, 0x1f77f, +}; /* END of CR_In_Alchemical_Symbols */ + +/* PROPERTY: 'In_Geometric_Shapes_Extended': Block */ +static const OnigCodePoint +CR_In_Geometric_Shapes_Extended[] = { 1, +0x1f780, 0x1f7ff, +}; /* END of CR_In_Geometric_Shapes_Extended */ + +/* PROPERTY: 'In_Supplemental_Arrows_C': Block */ +static const OnigCodePoint +CR_In_Supplemental_Arrows_C[] = { 1, +0x1f800, 0x1f8ff, +}; /* END of CR_In_Supplemental_Arrows_C */ + +/* PROPERTY: 'In_Supplemental_Symbols_and_Pictographs': Block */ +static const OnigCodePoint +CR_In_Supplemental_Symbols_and_Pictographs[] = { 1, +0x1f900, 0x1f9ff, +}; /* END of CR_In_Supplemental_Symbols_and_Pictographs */ + +/* PROPERTY: 'In_Chess_Symbols': Block */ +static const OnigCodePoint +CR_In_Chess_Symbols[] = { 1, +0x1fa00, 0x1fa6f, +}; /* END of CR_In_Chess_Symbols */ + +/* PROPERTY: 'In_CJK_Unified_Ideographs_Extension_B': Block */ +static const OnigCodePoint +CR_In_CJK_Unified_Ideographs_Extension_B[] = { 1, +0x20000, 0x2a6df, +}; /* END of CR_In_CJK_Unified_Ideographs_Extension_B */ + +/* PROPERTY: 'In_CJK_Unified_Ideographs_Extension_C': Block */ +static const OnigCodePoint +CR_In_CJK_Unified_Ideographs_Extension_C[] = { 1, +0x2a700, 0x2b73f, +}; /* END of CR_In_CJK_Unified_Ideographs_Extension_C */ + +/* PROPERTY: 'In_CJK_Unified_Ideographs_Extension_D': Block */ +static const OnigCodePoint +CR_In_CJK_Unified_Ideographs_Extension_D[] = { 1, +0x2b740, 0x2b81f, +}; /* END of CR_In_CJK_Unified_Ideographs_Extension_D */ + +/* PROPERTY: 'In_CJK_Unified_Ideographs_Extension_E': Block */ +static const OnigCodePoint +CR_In_CJK_Unified_Ideographs_Extension_E[] = { 1, +0x2b820, 0x2ceaf, +}; /* END of CR_In_CJK_Unified_Ideographs_Extension_E */ + +/* PROPERTY: 'In_CJK_Unified_Ideographs_Extension_F': Block */ +static const OnigCodePoint +CR_In_CJK_Unified_Ideographs_Extension_F[] = { 1, +0x2ceb0, 0x2ebef, +}; /* END of CR_In_CJK_Unified_Ideographs_Extension_F */ + +/* PROPERTY: 'In_CJK_Compatibility_Ideographs_Supplement': Block */ +static const OnigCodePoint +CR_In_CJK_Compatibility_Ideographs_Supplement[] = { 1, +0x2f800, 0x2fa1f, +}; /* END of CR_In_CJK_Compatibility_Ideographs_Supplement */ + +/* PROPERTY: 'In_Tags': Block */ +static const OnigCodePoint +CR_In_Tags[] = { 1, +0xe0000, 0xe007f, +}; /* END of CR_In_Tags */ + +/* PROPERTY: 'In_Variation_Selectors_Supplement': Block */ +static const OnigCodePoint +CR_In_Variation_Selectors_Supplement[] = { 1, +0xe0100, 0xe01ef, +}; /* END of CR_In_Variation_Selectors_Supplement */ + +/* PROPERTY: 'In_Supplementary_Private_Use_Area_A': Block */ +static const OnigCodePoint +CR_In_Supplementary_Private_Use_Area_A[] = { 1, +0xf0000, 0xfffff, +}; /* END of CR_In_Supplementary_Private_Use_Area_A */ + +/* PROPERTY: 'In_Supplementary_Private_Use_Area_B': Block */ +static const OnigCodePoint +CR_In_Supplementary_Private_Use_Area_B[] = { 1, +0x100000, 0x10ffff, +}; /* END of CR_In_Supplementary_Private_Use_Area_B */ + +/* PROPERTY: 'In_No_Block': Block */ +static const OnigCodePoint +CR_In_No_Block[] = { 51, +0x0870, 0x089f, +0x2fe0, 0x2fef, +0x10200, 0x1027f, +0x103e0, 0x103ff, +0x10570, 0x105ff, +0x10780, 0x107ff, +0x108b0, 0x108df, +0x10940, 0x1097f, +0x10aa0, 0x10abf, +0x10bb0, 0x10bff, +0x10c50, 0x10c7f, +0x10d40, 0x10e5f, +0x10e80, 0x10eff, +0x10f70, 0x10fff, +0x11250, 0x1127f, +0x11380, 0x113ff, +0x114e0, 0x1157f, +0x116d0, 0x116ff, +0x11740, 0x117ff, +0x11850, 0x1189f, +0x11900, 0x119ff, +0x11ab0, 0x11abf, +0x11b00, 0x11bff, +0x11cc0, 0x11cff, +0x11db0, 0x11edf, +0x11f00, 0x11fff, +0x12550, 0x12fff, +0x13430, 0x143ff, +0x14680, 0x167ff, +0x16a70, 0x16acf, +0x16b90, 0x16e3f, +0x16ea0, 0x16eff, +0x16fa0, 0x16fdf, +0x18b00, 0x1afff, +0x1b130, 0x1b16f, +0x1b300, 0x1bbff, +0x1bcb0, 0x1cfff, +0x1d250, 0x1d2df, +0x1d380, 0x1d3ff, +0x1dab0, 0x1dfff, +0x1e030, 0x1e7ff, +0x1e8e0, 0x1e8ff, +0x1e960, 0x1ec6f, +0x1ecc0, 0x1edff, +0x1ef00, 0x1efff, +0x1fa70, 0x1ffff, +0x2a6e0, 0x2a6ff, +0x2ebf0, 0x2f7ff, +0x2fa20, 0xdffff, +0xe0080, 0xe00ff, +0xe01f0, 0xeffff, +}; /* END of CR_In_No_Block */ + +static const OnigCodePoint* +const CodeRanges[] = { + CR_NEWLINE, + CR_Alpha, + CR_Blank, + CR_Cntrl, + CR_Digit, + CR_Graph, + CR_Lower, + CR_Print, + CR_Punct, + CR_Space, + CR_Upper, + CR_XDigit, + CR_Word, + CR_Alnum, + CR_ASCII, + CR_ASCII_Hex_Digit, + CR_Adlam, + CR_Ahom, + CR_Alphabetic, + CR_Anatolian_Hieroglyphs, + CR_Any, + CR_Arabic, + CR_Armenian, + CR_Assigned, + CR_Avestan, + CR_Balinese, + CR_Bamum, + CR_Bassa_Vah, + CR_Batak, + CR_Bengali, + CR_Bhaiksuki, + CR_Bidi_Control, + CR_Bopomofo, + CR_Brahmi, + CR_Braille, + CR_Buginese, + CR_Buhid, + CR_C, + CR_Canadian_Aboriginal, + CR_Carian, + CR_Case_Ignorable, + CR_Cased, + CR_Caucasian_Albanian, + CR_Cc, + CR_Cf, + CR_Chakma, + CR_Cham, + CR_Changes_When_Casefolded, + CR_Changes_When_Casemapped, + CR_Changes_When_Lowercased, + CR_Changes_When_Titlecased, + CR_Changes_When_Uppercased, + CR_Cherokee, + CR_Cn, + CR_Co, + CR_Common, + CR_Coptic, + CR_Cs, + CR_Cuneiform, + CR_Cypriot, + CR_Cyrillic, + CR_Dash, + CR_Default_Ignorable_Code_Point, + CR_Deprecated, + CR_Deseret, + CR_Devanagari, + CR_Diacritic, + CR_Dogra, + CR_Duployan, + CR_Egyptian_Hieroglyphs, + CR_Elbasan, + CR_Emoji, + CR_Emoji_Component, + CR_Emoji_Modifier, + CR_Emoji_Modifier_Base, + CR_Emoji_Presentation, + CR_Ethiopic, + CR_Extended_Pictographic, + CR_Extender, + CR_Georgian, + CR_Glagolitic, + CR_Gothic, + CR_Grantha, + CR_Grapheme_Base, + CR_Grapheme_Extend, + CR_Grapheme_Link, + CR_Greek, + CR_Gujarati, + CR_Gunjala_Gondi, + CR_Gurmukhi, + CR_Han, + CR_Hangul, + CR_Hanifi_Rohingya, + CR_Hanunoo, + CR_Hatran, + CR_Hebrew, + CR_Hex_Digit, + CR_Hiragana, + CR_Hyphen, + CR_IDS_Binary_Operator, + CR_IDS_Trinary_Operator, + CR_ID_Continue, + CR_ID_Start, + CR_Ideographic, + CR_Imperial_Aramaic, + CR_Inherited, + CR_Inscriptional_Pahlavi, + CR_Inscriptional_Parthian, + CR_Javanese, + CR_Join_Control, + CR_Kaithi, + CR_Kannada, + CR_Katakana, + CR_Kayah_Li, + CR_Kharoshthi, + CR_Khmer, + CR_Khojki, + CR_Khudawadi, + CR_L, + CR_LC, + CR_Lao, + CR_Latin, + CR_Lepcha, + CR_Limbu, + CR_Linear_A, + CR_Linear_B, + CR_Lisu, + CR_Ll, + CR_Lm, + CR_Lo, + CR_Logical_Order_Exception, + CR_Lowercase, + CR_Lt, + CR_Lu, + CR_Lycian, + CR_Lydian, + CR_M, + CR_Mahajani, + CR_Makasar, + CR_Malayalam, + CR_Mandaic, + CR_Manichaean, + CR_Marchen, + CR_Masaram_Gondi, + CR_Math, + CR_Mc, + CR_Me, + CR_Medefaidrin, + CR_Meetei_Mayek, + CR_Mende_Kikakui, + CR_Meroitic_Cursive, + CR_Meroitic_Hieroglyphs, + CR_Miao, + CR_Mn, + CR_Modi, + CR_Mongolian, + CR_Mro, + CR_Multani, + CR_Myanmar, + CR_N, + CR_Nabataean, + CR_Nd, + CR_New_Tai_Lue, + CR_Newa, + CR_Nko, + CR_Nl, + CR_No, + CR_Noncharacter_Code_Point, + CR_Nushu, + CR_Ogham, + CR_Ol_Chiki, + CR_Old_Hungarian, + CR_Old_Italic, + CR_Old_North_Arabian, + CR_Old_Permic, + CR_Old_Persian, + CR_Old_Sogdian, + CR_Old_South_Arabian, + CR_Old_Turkic, + CR_Oriya, + CR_Osage, + CR_Osmanya, + CR_Other_Alphabetic, + CR_Other_Default_Ignorable_Code_Point, + CR_Other_Grapheme_Extend, + CR_Other_ID_Continue, + CR_Other_ID_Start, + CR_Other_Lowercase, + CR_Other_Math, + CR_Other_Uppercase, + CR_P, + CR_Pahawh_Hmong, + CR_Palmyrene, + CR_Pattern_Syntax, + CR_Pattern_White_Space, + CR_Pau_Cin_Hau, + CR_Pc, + CR_Pd, + CR_Pe, + CR_Pf, + CR_Phags_Pa, + CR_Phoenician, + CR_Pi, + CR_Po, + CR_Prepended_Concatenation_Mark, + CR_Ps, + CR_Psalter_Pahlavi, + CR_Quotation_Mark, + CR_Radical, + CR_Regional_Indicator, + CR_Rejang, + CR_Runic, + CR_S, + CR_Samaritan, + CR_Saurashtra, + CR_Sc, + CR_Sentence_Terminal, + CR_Sharada, + CR_Shavian, + CR_Siddham, + CR_SignWriting, + CR_Sinhala, + CR_Sk, + CR_Sm, + CR_So, + CR_Soft_Dotted, + CR_Sogdian, + CR_Sora_Sompeng, + CR_Soyombo, + CR_Sundanese, + CR_Syloti_Nagri, + CR_Syriac, + CR_Tagalog, + CR_Tagbanwa, + CR_Tai_Le, + CR_Tai_Tham, + CR_Tai_Viet, + CR_Takri, + CR_Tamil, + CR_Tangut, + CR_Telugu, + CR_Terminal_Punctuation, + CR_Thaana, + CR_Thai, + CR_Tibetan, + CR_Tifinagh, + CR_Tirhuta, + CR_Ugaritic, + CR_Unified_Ideograph, + CR_Unknown, + CR_Uppercase, + CR_Vai, + CR_Variation_Selector, + CR_Warang_Citi, + CR_White_Space, + CR_XID_Continue, + CR_XID_Start, + CR_Yi, + CR_Z, + CR_Zanabazar_Square, + CR_Zl, + CR_Zp, + CR_Zs, + CR_In_Basic_Latin, + CR_In_Latin_1_Supplement, + CR_In_Latin_Extended_A, + CR_In_Latin_Extended_B, + CR_In_IPA_Extensions, + CR_In_Spacing_Modifier_Letters, + CR_In_Combining_Diacritical_Marks, + CR_In_Greek_and_Coptic, + CR_In_Cyrillic, + CR_In_Cyrillic_Supplement, + CR_In_Armenian, + CR_In_Hebrew, + CR_In_Arabic, + CR_In_Syriac, + CR_In_Arabic_Supplement, + CR_In_Thaana, + CR_In_NKo, + CR_In_Samaritan, + CR_In_Mandaic, + CR_In_Syriac_Supplement, + CR_In_Arabic_Extended_A, + CR_In_Devanagari, + CR_In_Bengali, + CR_In_Gurmukhi, + CR_In_Gujarati, + CR_In_Oriya, + CR_In_Tamil, + CR_In_Telugu, + CR_In_Kannada, + CR_In_Malayalam, + CR_In_Sinhala, + CR_In_Thai, + CR_In_Lao, + CR_In_Tibetan, + CR_In_Myanmar, + CR_In_Georgian, + CR_In_Hangul_Jamo, + CR_In_Ethiopic, + CR_In_Ethiopic_Supplement, + CR_In_Cherokee, + CR_In_Unified_Canadian_Aboriginal_Syllabics, + CR_In_Ogham, + CR_In_Runic, + CR_In_Tagalog, + CR_In_Hanunoo, + CR_In_Buhid, + CR_In_Tagbanwa, + CR_In_Khmer, + CR_In_Mongolian, + CR_In_Unified_Canadian_Aboriginal_Syllabics_Extended, + CR_In_Limbu, + CR_In_Tai_Le, + CR_In_New_Tai_Lue, + CR_In_Khmer_Symbols, + CR_In_Buginese, + CR_In_Tai_Tham, + CR_In_Combining_Diacritical_Marks_Extended, + CR_In_Balinese, + CR_In_Sundanese, + CR_In_Batak, + CR_In_Lepcha, + CR_In_Ol_Chiki, + CR_In_Cyrillic_Extended_C, + CR_In_Georgian_Extended, + CR_In_Sundanese_Supplement, + CR_In_Vedic_Extensions, + CR_In_Phonetic_Extensions, + CR_In_Phonetic_Extensions_Supplement, + CR_In_Combining_Diacritical_Marks_Supplement, + CR_In_Latin_Extended_Additional, + CR_In_Greek_Extended, + CR_In_General_Punctuation, + CR_In_Superscripts_and_Subscripts, + CR_In_Currency_Symbols, + CR_In_Combining_Diacritical_Marks_for_Symbols, + CR_In_Letterlike_Symbols, + CR_In_Number_Forms, + CR_In_Arrows, + CR_In_Mathematical_Operators, + CR_In_Miscellaneous_Technical, + CR_In_Control_Pictures, + CR_In_Optical_Character_Recognition, + CR_In_Enclosed_Alphanumerics, + CR_In_Box_Drawing, + CR_In_Block_Elements, + CR_In_Geometric_Shapes, + CR_In_Miscellaneous_Symbols, + CR_In_Dingbats, + CR_In_Miscellaneous_Mathematical_Symbols_A, + CR_In_Supplemental_Arrows_A, + CR_In_Braille_Patterns, + CR_In_Supplemental_Arrows_B, + CR_In_Miscellaneous_Mathematical_Symbols_B, + CR_In_Supplemental_Mathematical_Operators, + CR_In_Miscellaneous_Symbols_and_Arrows, + CR_In_Glagolitic, + CR_In_Latin_Extended_C, + CR_In_Coptic, + CR_In_Georgian_Supplement, + CR_In_Tifinagh, + CR_In_Ethiopic_Extended, + CR_In_Cyrillic_Extended_A, + CR_In_Supplemental_Punctuation, + CR_In_CJK_Radicals_Supplement, + CR_In_Kangxi_Radicals, + CR_In_Ideographic_Description_Characters, + CR_In_CJK_Symbols_and_Punctuation, + CR_In_Hiragana, + CR_In_Katakana, + CR_In_Bopomofo, + CR_In_Hangul_Compatibility_Jamo, + CR_In_Kanbun, + CR_In_Bopomofo_Extended, + CR_In_CJK_Strokes, + CR_In_Katakana_Phonetic_Extensions, + CR_In_Enclosed_CJK_Letters_and_Months, + CR_In_CJK_Compatibility, + CR_In_CJK_Unified_Ideographs_Extension_A, + CR_In_Yijing_Hexagram_Symbols, + CR_In_CJK_Unified_Ideographs, + CR_In_Yi_Syllables, + CR_In_Yi_Radicals, + CR_In_Lisu, + CR_In_Vai, + CR_In_Cyrillic_Extended_B, + CR_In_Bamum, + CR_In_Modifier_Tone_Letters, + CR_In_Latin_Extended_D, + CR_In_Syloti_Nagri, + CR_In_Common_Indic_Number_Forms, + CR_In_Phags_pa, + CR_In_Saurashtra, + CR_In_Devanagari_Extended, + CR_In_Kayah_Li, + CR_In_Rejang, + CR_In_Hangul_Jamo_Extended_A, + CR_In_Javanese, + CR_In_Myanmar_Extended_B, + CR_In_Cham, + CR_In_Myanmar_Extended_A, + CR_In_Tai_Viet, + CR_In_Meetei_Mayek_Extensions, + CR_In_Ethiopic_Extended_A, + CR_In_Latin_Extended_E, + CR_In_Cherokee_Supplement, + CR_In_Meetei_Mayek, + CR_In_Hangul_Syllables, + CR_In_Hangul_Jamo_Extended_B, + CR_In_High_Surrogates, + CR_In_High_Private_Use_Surrogates, + CR_In_Low_Surrogates, + CR_In_Private_Use_Area, + CR_In_CJK_Compatibility_Ideographs, + CR_In_Alphabetic_Presentation_Forms, + CR_In_Arabic_Presentation_Forms_A, + CR_In_Variation_Selectors, + CR_In_Vertical_Forms, + CR_In_Combining_Half_Marks, + CR_In_CJK_Compatibility_Forms, + CR_In_Small_Form_Variants, + CR_In_Arabic_Presentation_Forms_B, + CR_In_Halfwidth_and_Fullwidth_Forms, + CR_In_Specials, + CR_In_Linear_B_Syllabary, + CR_In_Linear_B_Ideograms, + CR_In_Aegean_Numbers, + CR_In_Ancient_Greek_Numbers, + CR_In_Ancient_Symbols, + CR_In_Phaistos_Disc, + CR_In_Lycian, + CR_In_Carian, + CR_In_Coptic_Epact_Numbers, + CR_In_Old_Italic, + CR_In_Gothic, + CR_In_Old_Permic, + CR_In_Ugaritic, + CR_In_Old_Persian, + CR_In_Deseret, + CR_In_Shavian, + CR_In_Osmanya, + CR_In_Osage, + CR_In_Elbasan, + CR_In_Caucasian_Albanian, + CR_In_Linear_A, + CR_In_Cypriot_Syllabary, + CR_In_Imperial_Aramaic, + CR_In_Palmyrene, + CR_In_Nabataean, + CR_In_Hatran, + CR_In_Phoenician, + CR_In_Lydian, + CR_In_Meroitic_Hieroglyphs, + CR_In_Meroitic_Cursive, + CR_In_Kharoshthi, + CR_In_Old_South_Arabian, + CR_In_Old_North_Arabian, + CR_In_Manichaean, + CR_In_Avestan, + CR_In_Inscriptional_Parthian, + CR_In_Inscriptional_Pahlavi, + CR_In_Psalter_Pahlavi, + CR_In_Old_Turkic, + CR_In_Old_Hungarian, + CR_In_Hanifi_Rohingya, + CR_In_Rumi_Numeral_Symbols, + CR_In_Old_Sogdian, + CR_In_Sogdian, + CR_In_Brahmi, + CR_In_Kaithi, + CR_In_Sora_Sompeng, + CR_In_Chakma, + CR_In_Mahajani, + CR_In_Sharada, + CR_In_Sinhala_Archaic_Numbers, + CR_In_Khojki, + CR_In_Multani, + CR_In_Khudawadi, + CR_In_Grantha, + CR_In_Newa, + CR_In_Tirhuta, + CR_In_Siddham, + CR_In_Modi, + CR_In_Mongolian_Supplement, + CR_In_Takri, + CR_In_Ahom, + CR_In_Dogra, + CR_In_Warang_Citi, + CR_In_Zanabazar_Square, + CR_In_Soyombo, + CR_In_Pau_Cin_Hau, + CR_In_Bhaiksuki, + CR_In_Marchen, + CR_In_Masaram_Gondi, + CR_In_Gunjala_Gondi, + CR_In_Makasar, + CR_In_Cuneiform, + CR_In_Cuneiform_Numbers_and_Punctuation, + CR_In_Early_Dynastic_Cuneiform, + CR_In_Egyptian_Hieroglyphs, + CR_In_Anatolian_Hieroglyphs, + CR_In_Bamum_Supplement, + CR_In_Mro, + CR_In_Bassa_Vah, + CR_In_Pahawh_Hmong, + CR_In_Medefaidrin, + CR_In_Miao, + CR_In_Ideographic_Symbols_and_Punctuation, + CR_In_Tangut, + CR_In_Tangut_Components, + CR_In_Kana_Supplement, + CR_In_Kana_Extended_A, + CR_In_Nushu, + CR_In_Duployan, + CR_In_Shorthand_Format_Controls, + CR_In_Byzantine_Musical_Symbols, + CR_In_Musical_Symbols, + CR_In_Ancient_Greek_Musical_Notation, + CR_In_Mayan_Numerals, + CR_In_Tai_Xuan_Jing_Symbols, + CR_In_Counting_Rod_Numerals, + CR_In_Mathematical_Alphanumeric_Symbols, + CR_In_Sutton_SignWriting, + CR_In_Glagolitic_Supplement, + CR_In_Mende_Kikakui, + CR_In_Adlam, + CR_In_Indic_Siyaq_Numbers, + CR_In_Arabic_Mathematical_Alphabetic_Symbols, + CR_In_Mahjong_Tiles, + CR_In_Domino_Tiles, + CR_In_Playing_Cards, + CR_In_Enclosed_Alphanumeric_Supplement, + CR_In_Enclosed_Ideographic_Supplement, + CR_In_Miscellaneous_Symbols_and_Pictographs, + CR_In_Emoticons, + CR_In_Ornamental_Dingbats, + CR_In_Transport_and_Map_Symbols, + CR_In_Alchemical_Symbols, + CR_In_Geometric_Shapes_Extended, + CR_In_Supplemental_Arrows_C, + CR_In_Supplemental_Symbols_and_Pictographs, + CR_In_Chess_Symbols, + 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_Tags, + CR_In_Variation_Selectors_Supplement, + CR_In_Supplementary_Private_Use_Area_A, + CR_In_Supplementary_Private_Use_Area_B, + CR_In_No_Block, +}; + +#define pool_offset(s) offsetof(struct unicode_prop_name_pool_t, unicode_prop_name_pool_str##s) + + +#define TOTAL_KEYWORDS 784 +#define MIN_WORD_LENGTH 1 +#define MAX_WORD_LENGTH 44 +#define MIN_HASH_VALUE 10 +#define MAX_HASH_VALUE 5516 +/* maximum key range = 5507, duplicates = 0 */ + +#ifndef GPERF_DOWNCASE +#define GPERF_DOWNCASE 1 +static unsigned char gperf_downcase[256] = + { + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, + 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, + 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, + 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, + 255 + }; +#endif + +#ifndef GPERF_CASE_STRNCMP +#define GPERF_CASE_STRNCMP 1 +static int +gperf_case_strncmp (register const char *s1, register const char *s2, register size_t n) +{ + for (; n > 0;) + { + unsigned char c1 = gperf_downcase[(unsigned char)*s1++]; + unsigned char c2 = gperf_downcase[(unsigned char)*s2++]; + if (c1 != 0 && c1 == c2) + { + n--; + continue; + } + return (int)c1 - (int)c2; + } + return 0; +} +#endif + +#ifdef __GNUC__ +__inline +#else +#ifdef __cplusplus +inline +#endif +#endif +static unsigned int +hash (register const char *str, register size_t len) +{ + static const unsigned short asso_values[] = + { + 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, + 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, + 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, + 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, + 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, + 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, + 5517, 5517, 5517, 5517, 5517, 0, 1387, 107, 399, 14, + 1024, 783, 831, 7, 1473, 25, 363, 89, 3, 17, + 1203, 711, 59, 149, 313, 590, 1257, 334, 172, 1559, + 22, 2, 1, 5517, 5517, 5517, 5517, 0, 1387, 107, + 399, 14, 1024, 783, 831, 7, 1473, 25, 363, 89, + 3, 17, 1203, 711, 59, 149, 313, 590, 1257, 334, + 172, 1559, 22, 2, 1, 5517, 5517, 5517, 5517, 5517, + 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, + 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, + 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, + 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, + 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, + 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, + 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, + 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, + 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, + 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, + 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, + 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, + 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517 + }; + register unsigned int hval = (unsigned int )len; + + switch (hval) + { + default: + hval += asso_values[(unsigned char)str[15]]; + /*FALLTHROUGH*/ + case 15: + case 14: + case 13: + case 12: + hval += asso_values[(unsigned char)str[11]]; + /*FALLTHROUGH*/ + case 11: + case 10: + case 9: + case 8: + case 7: + case 6: + hval += asso_values[(unsigned char)str[5]]; + /*FALLTHROUGH*/ + case 5: + hval += asso_values[(unsigned char)str[4]]; + /*FALLTHROUGH*/ + case 4: + case 3: + hval += asso_values[(unsigned char)str[2]]; + /*FALLTHROUGH*/ + case 2: + hval += asso_values[(unsigned char)str[1]]; + /*FALLTHROUGH*/ + case 1: + hval += asso_values[(unsigned char)str[0]+2]; + break; + } + return hval + asso_values[(unsigned char)str[len - 1]]; +} + +struct unicode_prop_name_pool_t + { + char unicode_prop_name_pool_str10[sizeof("lana")]; + char unicode_prop_name_pool_str17[sizeof("lina")]; + char unicode_prop_name_pool_str18[sizeof("yi")]; + char unicode_prop_name_pool_str22[sizeof("cn")]; + char unicode_prop_name_pool_str24[sizeof("z")]; + char unicode_prop_name_pool_str25[sizeof("mn")]; + char unicode_prop_name_pool_str27[sizeof("yiii")]; + char unicode_prop_name_pool_str30[sizeof("ci")]; + char unicode_prop_name_pool_str31[sizeof("mani")]; + char unicode_prop_name_pool_str39[sizeof("lo")]; + char unicode_prop_name_pool_str40[sizeof("lao")]; + char unicode_prop_name_pool_str41[sizeof("laoo")]; + char unicode_prop_name_pool_str45[sizeof("miao")]; + char unicode_prop_name_pool_str46[sizeof("maka")]; + char unicode_prop_name_pool_str47[sizeof("me")]; + char unicode_prop_name_pool_str50[sizeof("co")]; + char unicode_prop_name_pool_str51[sizeof("loe")]; + char unicode_prop_name_pool_str68[sizeof("inkannada")]; + char unicode_prop_name_pool_str70[sizeof("innko")]; + char unicode_prop_name_pool_str71[sizeof("zzzz")]; + char unicode_prop_name_pool_str73[sizeof("gran")]; + char unicode_prop_name_pool_str75[sizeof("pi")]; + char unicode_prop_name_pool_str79[sizeof("lineara")]; + char unicode_prop_name_pool_str84[sizeof("cari")]; + char unicode_prop_name_pool_str85[sizeof("carian")]; + char unicode_prop_name_pool_str89[sizeof("pe")]; + char unicode_prop_name_pool_str95[sizeof("po")]; + char unicode_prop_name_pool_str96[sizeof("kana")]; + char unicode_prop_name_pool_str99[sizeof("mendekikakui")]; + char unicode_prop_name_pool_str101[sizeof("geor")]; + char unicode_prop_name_pool_str102[sizeof("meeteimayek")]; + char unicode_prop_name_pool_str105[sizeof("mark")]; + char unicode_prop_name_pool_str107[sizeof("m")]; + char unicode_prop_name_pool_str109[sizeof("grek")]; + char unicode_prop_name_pool_str111[sizeof("mero")]; + char unicode_prop_name_pool_str113[sizeof("mro")]; + char unicode_prop_name_pool_str114[sizeof("mroo")]; + char unicode_prop_name_pool_str120[sizeof("gonm")]; + char unicode_prop_name_pool_str122[sizeof("c")]; + char unicode_prop_name_pool_str132[sizeof("cakm")]; + char unicode_prop_name_pool_str135[sizeof("greek")]; + char unicode_prop_name_pool_str138[sizeof("inkharoshthi")]; + char unicode_prop_name_pool_str141[sizeof("mandaic")]; + char unicode_prop_name_pool_str143[sizeof("inosmanya")]; + char unicode_prop_name_pool_str144[sizeof("inarmenian")]; + char unicode_prop_name_pool_str145[sizeof("inmanichaean")]; + char unicode_prop_name_pool_str149[sizeof("common")]; + char unicode_prop_name_pool_str156[sizeof("inmro")]; + char unicode_prop_name_pool_str157[sizeof("inmiao")]; + char unicode_prop_name_pool_str160[sizeof("qaai")]; + char unicode_prop_name_pool_str168[sizeof("inchakma")]; + char unicode_prop_name_pool_str170[sizeof("cans")]; + char unicode_prop_name_pool_str181[sizeof("connectorpunctuation")]; + char unicode_prop_name_pool_str183[sizeof("lm")]; + char unicode_prop_name_pool_str187[sizeof("marc")]; + char unicode_prop_name_pool_str188[sizeof("inmyanmar")]; + char unicode_prop_name_pool_str189[sizeof("vai")]; + char unicode_prop_name_pool_str190[sizeof("vaii")]; + char unicode_prop_name_pool_str199[sizeof("inideographicsymbolsandpunctuation")]; + char unicode_prop_name_pool_str201[sizeof("merc")]; + char unicode_prop_name_pool_str203[sizeof("inavestan")]; + char unicode_prop_name_pool_str204[sizeof("incuneiformnumbersandpunctuation")]; + char unicode_prop_name_pool_str210[sizeof("inmakasar")]; + char unicode_prop_name_pool_str211[sizeof("inrunic")]; + char unicode_prop_name_pool_str212[sizeof("incarian")]; + char unicode_prop_name_pool_str217[sizeof("prependedconcatenationmark")]; + char unicode_prop_name_pool_str219[sizeof("lc")]; + char unicode_prop_name_pool_str220[sizeof("inipaextensions")]; + char unicode_prop_name_pool_str222[sizeof("inkhmer")]; + char unicode_prop_name_pool_str225[sizeof("perm")]; + char unicode_prop_name_pool_str227[sizeof("combiningmark")]; + char unicode_prop_name_pool_str229[sizeof("inahom")]; + char unicode_prop_name_pool_str230[sizeof("cc")]; + char unicode_prop_name_pool_str232[sizeof("incherokee")]; + char unicode_prop_name_pool_str233[sizeof("mc")]; + char unicode_prop_name_pool_str245[sizeof("insharada")]; + char unicode_prop_name_pool_str251[sizeof("masaramgondi")]; + char unicode_prop_name_pool_str252[sizeof("incuneiform")]; + char unicode_prop_name_pool_str257[sizeof("makasar")]; + char unicode_prop_name_pool_str260[sizeof("qaac")]; + char unicode_prop_name_pool_str261[sizeof("inarrows")]; + char unicode_prop_name_pool_str262[sizeof("armn")]; + char unicode_prop_name_pool_str265[sizeof("lineseparator")]; + char unicode_prop_name_pool_str266[sizeof("armi")]; + char unicode_prop_name_pool_str275[sizeof("pc")]; + char unicode_prop_name_pool_str276[sizeof("armenian")]; + char unicode_prop_name_pool_str280[sizeof("insamaritan")]; + char unicode_prop_name_pool_str290[sizeof("inmasaramgondi")]; + char unicode_prop_name_pool_str292[sizeof("inzanabazarsquare")]; + char unicode_prop_name_pool_str293[sizeof("qmark")]; + char unicode_prop_name_pool_str295[sizeof("inmarchen")]; + char unicode_prop_name_pool_str301[sizeof("zs")]; + char unicode_prop_name_pool_str314[sizeof("cs")]; + char unicode_prop_name_pool_str318[sizeof("incyrillic")]; + char unicode_prop_name_pool_str319[sizeof("incham")]; + char unicode_prop_name_pool_str323[sizeof("latn")]; + char unicode_prop_name_pool_str326[sizeof("inscriptionalparthian")]; + char unicode_prop_name_pool_str327[sizeof("latin")]; + char unicode_prop_name_pool_str329[sizeof("ri")]; + char unicode_prop_name_pool_str336[sizeof("inkhmersymbols")]; + char unicode_prop_name_pool_str347[sizeof("pcm")]; + char unicode_prop_name_pool_str349[sizeof("inthaana")]; + char unicode_prop_name_pool_str355[sizeof("mtei")]; + char unicode_prop_name_pool_str358[sizeof("insyriac")]; + char unicode_prop_name_pool_str359[sizeof("ps")]; + char unicode_prop_name_pool_str361[sizeof("inthai")]; + char unicode_prop_name_pool_str367[sizeof("l")]; + char unicode_prop_name_pool_str371[sizeof("innewa")]; + char unicode_prop_name_pool_str376[sizeof("inkatakana")]; + char unicode_prop_name_pool_str382[sizeof("ascii")]; + char unicode_prop_name_pool_str383[sizeof("initialpunctuation")]; + char unicode_prop_name_pool_str388[sizeof("inkaithi")]; + char unicode_prop_name_pool_str393[sizeof("arabic")]; + char unicode_prop_name_pool_str405[sizeof("inideographicdescriptioncharacters")]; + char unicode_prop_name_pool_str417[sizeof("inlineara")]; + char unicode_prop_name_pool_str423[sizeof("mand")]; + char unicode_prop_name_pool_str429[sizeof("mongolian")]; + char unicode_prop_name_pool_str430[sizeof("inlao")]; + char unicode_prop_name_pool_str435[sizeof("katakana")]; + char unicode_prop_name_pool_str437[sizeof("mend")]; + char unicode_prop_name_pool_str439[sizeof("intakri")]; + char unicode_prop_name_pool_str441[sizeof("inruminumeralsymbols")]; + char unicode_prop_name_pool_str442[sizeof("prti")]; + char unicode_prop_name_pool_str444[sizeof("modi")]; + char unicode_prop_name_pool_str447[sizeof("inwarangciti")]; + char unicode_prop_name_pool_str453[sizeof("incjkcompatibilityforms")]; + char unicode_prop_name_pool_str457[sizeof("inspecials")]; + char unicode_prop_name_pool_str458[sizeof("incjkcompatibilityideographs")]; + char unicode_prop_name_pool_str459[sizeof("ideo")]; + char unicode_prop_name_pool_str462[sizeof("privateuse")]; + char unicode_prop_name_pool_str463[sizeof("kali")]; + char unicode_prop_name_pool_str465[sizeof("inmyanmarextendeda")]; + char unicode_prop_name_pool_str468[sizeof("letter")]; + char unicode_prop_name_pool_str469[sizeof("brai")]; + char unicode_prop_name_pool_str470[sizeof("inkanaextendeda")]; + char unicode_prop_name_pool_str472[sizeof("vs")]; + char unicode_prop_name_pool_str473[sizeof("xidcontinue")]; + char unicode_prop_name_pool_str477[sizeof("lower")]; + char unicode_prop_name_pool_str478[sizeof("inchesssymbols")]; + char unicode_prop_name_pool_str480[sizeof("control")]; + char unicode_prop_name_pool_str487[sizeof("inadlam")]; + char unicode_prop_name_pool_str488[sizeof("grlink")]; + char unicode_prop_name_pool_str495[sizeof("knda")]; + char unicode_prop_name_pool_str496[sizeof("inmeeteimayek")]; + char unicode_prop_name_pool_str498[sizeof("kannada")]; + char unicode_prop_name_pool_str511[sizeof("inmiscellaneousmathematicalsymbolsa")]; + char unicode_prop_name_pool_str515[sizeof("palm")]; + char unicode_prop_name_pool_str516[sizeof("inlycian")]; + char unicode_prop_name_pool_str517[sizeof("intransportandmapsymbols")]; + char unicode_prop_name_pool_str526[sizeof("inoldnortharabian")]; + char unicode_prop_name_pool_str532[sizeof("inemoticons")]; + char unicode_prop_name_pool_str533[sizeof("letternumber")]; + char unicode_prop_name_pool_str536[sizeof("inmodi")]; + char unicode_prop_name_pool_str539[sizeof("xidc")]; + char unicode_prop_name_pool_str543[sizeof("lowercase")]; + char unicode_prop_name_pool_str545[sizeof("inancientsymbols")]; + char unicode_prop_name_pool_str548[sizeof("cwcm")]; + char unicode_prop_name_pool_str553[sizeof("inmedefaidrin")]; + char unicode_prop_name_pool_str556[sizeof("psalterpahlavi")]; + char unicode_prop_name_pool_str564[sizeof("gothic")]; + char unicode_prop_name_pool_str565[sizeof("inmendekikakui")]; + char unicode_prop_name_pool_str567[sizeof("brahmi")]; + char unicode_prop_name_pool_str569[sizeof("inolditalic")]; + char unicode_prop_name_pool_str580[sizeof("inmalayalam")]; + char unicode_prop_name_pool_str581[sizeof("xids")]; + char unicode_prop_name_pool_str582[sizeof("incommonindicnumberforms")]; + char unicode_prop_name_pool_str588[sizeof("meroiticcursive")]; + char unicode_prop_name_pool_str589[sizeof("inlinearbideograms")]; + char unicode_prop_name_pool_str597[sizeof("patternwhitespace")]; + char unicode_prop_name_pool_str604[sizeof("insundanese")]; + char unicode_prop_name_pool_str606[sizeof("joinc")]; + char unicode_prop_name_pool_str611[sizeof("inoldsogdian")]; + char unicode_prop_name_pool_str619[sizeof("incjkstrokes")]; + char unicode_prop_name_pool_str626[sizeof("so")]; + char unicode_prop_name_pool_str630[sizeof("patternsyntax")]; + char unicode_prop_name_pool_str631[sizeof("lt")]; + char unicode_prop_name_pool_str632[sizeof("incjkcompatibilityideographssupplement")]; + char unicode_prop_name_pool_str635[sizeof("inmandaic")]; + char unicode_prop_name_pool_str636[sizeof("insylotinagri")]; + char unicode_prop_name_pool_str641[sizeof("idc")]; + char unicode_prop_name_pool_str642[sizeof("sk")]; + char unicode_prop_name_pool_str656[sizeof("alnum")]; + char unicode_prop_name_pool_str670[sizeof("sora")]; + char unicode_prop_name_pool_str671[sizeof("bamum")]; + char unicode_prop_name_pool_str672[sizeof("inoldsoutharabian")]; + char unicode_prop_name_pool_str675[sizeof("patws")]; + char unicode_prop_name_pool_str676[sizeof("inmusicalsymbols")]; + char unicode_prop_name_pool_str690[sizeof("idsbinaryoperator")]; + char unicode_prop_name_pool_str699[sizeof("indominotiles")]; + char unicode_prop_name_pool_str701[sizeof("bass")]; + char unicode_prop_name_pool_str703[sizeof("innewtailue")]; + char unicode_prop_name_pool_str705[sizeof("ital")]; + char unicode_prop_name_pool_str707[sizeof("inmiscellaneoussymbols")]; + char unicode_prop_name_pool_str710[sizeof("inopticalcharacterrecognition")]; + char unicode_prop_name_pool_str711[sizeof("grext")]; + char unicode_prop_name_pool_str712[sizeof("inkanasupplement")]; + char unicode_prop_name_pool_str716[sizeof("inmiscellaneoussymbolsandarrows")]; + char unicode_prop_name_pool_str721[sizeof("inmiscellaneoussymbolsandpictographs")]; + char unicode_prop_name_pool_str723[sizeof("unknown")]; + char unicode_prop_name_pool_str724[sizeof("inmodifiertoneletters")]; + char unicode_prop_name_pool_str725[sizeof("ids")]; + char unicode_prop_name_pool_str729[sizeof("zl")]; + char unicode_prop_name_pool_str730[sizeof("inlatinextendeda")]; + char unicode_prop_name_pool_str731[sizeof("ll")]; + char unicode_prop_name_pool_str732[sizeof("intaile")]; + char unicode_prop_name_pool_str738[sizeof("incontrolpictures")]; + char unicode_prop_name_pool_str740[sizeof("s")]; + char unicode_prop_name_pool_str741[sizeof("batk")]; + char unicode_prop_name_pool_str742[sizeof("samr")]; + char unicode_prop_name_pool_str753[sizeof("lisu")]; + char unicode_prop_name_pool_str756[sizeof("print")]; + char unicode_prop_name_pool_str757[sizeof("samaritan")]; + char unicode_prop_name_pool_str758[sizeof("inlatinextendede")]; + char unicode_prop_name_pool_str759[sizeof("intaitham")]; + char unicode_prop_name_pool_str760[sizeof("pauc")]; + char unicode_prop_name_pool_str767[sizeof("batak")]; + char unicode_prop_name_pool_str770[sizeof("sm")]; + char unicode_prop_name_pool_str773[sizeof("bali")]; + char unicode_prop_name_pool_str778[sizeof("inancientgreekmusicalnotation")]; + char unicode_prop_name_pool_str779[sizeof("uideo")]; + char unicode_prop_name_pool_str781[sizeof("intaixuanjingsymbols")]; + char unicode_prop_name_pool_str782[sizeof("oriya")]; + char unicode_prop_name_pool_str791[sizeof("incyrillicextendeda")]; + char unicode_prop_name_pool_str793[sizeof("bengali")]; + char unicode_prop_name_pool_str794[sizeof("inugaritic")]; + char unicode_prop_name_pool_str801[sizeof("balinese")]; + char unicode_prop_name_pool_str806[sizeof("sc")]; + char unicode_prop_name_pool_str807[sizeof("intamil")]; + char unicode_prop_name_pool_str808[sizeof("inlydian")]; + char unicode_prop_name_pool_str809[sizeof("inmultani")]; + char unicode_prop_name_pool_str814[sizeof("gong")]; + char unicode_prop_name_pool_str817[sizeof("blank")]; + char unicode_prop_name_pool_str823[sizeof("ingrantha")]; + char unicode_prop_name_pool_str824[sizeof("mong")]; + char unicode_prop_name_pool_str833[sizeof("inearlydynasticcuneiform")]; + char unicode_prop_name_pool_str838[sizeof("insaurashtra")]; + char unicode_prop_name_pool_str839[sizeof("georgian")]; + char unicode_prop_name_pool_str846[sizeof("zinh")]; + char unicode_prop_name_pool_str849[sizeof("inosage")]; + char unicode_prop_name_pool_str854[sizeof("ingeneralpunctuation")]; + char unicode_prop_name_pool_str857[sizeof("incaucasianalbanian")]; + char unicode_prop_name_pool_str859[sizeof("pd")]; + char unicode_prop_name_pool_str866[sizeof("canadianaboriginal")]; + char unicode_prop_name_pool_str867[sizeof("glagolitic")]; + char unicode_prop_name_pool_str870[sizeof("inspacingmodifierletters")]; + char unicode_prop_name_pool_str871[sizeof("idcontinue")]; + char unicode_prop_name_pool_str875[sizeof("inoldturkic")]; + char unicode_prop_name_pool_str884[sizeof("plrd")]; + char unicode_prop_name_pool_str885[sizeof("joincontrol")]; + char unicode_prop_name_pool_str890[sizeof("idst")]; + char unicode_prop_name_pool_str892[sizeof("inhanifirohingya")]; + char unicode_prop_name_pool_str893[sizeof("osage")]; + char unicode_prop_name_pool_str898[sizeof("incyrillicextendedc")]; + char unicode_prop_name_pool_str900[sizeof("ingeorgian")]; + char unicode_prop_name_pool_str902[sizeof("unassigned")]; + char unicode_prop_name_pool_str907[sizeof("lowercaseletter")]; + char unicode_prop_name_pool_str908[sizeof("emoji")]; + char unicode_prop_name_pool_str912[sizeof("indeseret")]; + char unicode_prop_name_pool_str916[sizeof("inancientgreeknumbers")]; + char unicode_prop_name_pool_str917[sizeof("inmongolian")]; + char unicode_prop_name_pool_str922[sizeof("cher")]; + char unicode_prop_name_pool_str923[sizeof("cherokee")]; + char unicode_prop_name_pool_str928[sizeof("inhiragana")]; + char unicode_prop_name_pool_str930[sizeof("phoenician")]; + char unicode_prop_name_pool_str931[sizeof("marchen")]; + char unicode_prop_name_pool_str937[sizeof("xsux")]; + char unicode_prop_name_pool_str938[sizeof("cham")]; + char unicode_prop_name_pool_str940[sizeof("chakma")]; + char unicode_prop_name_pool_str943[sizeof("inmeeteimayekextensions")]; + char unicode_prop_name_pool_str944[sizeof("inlatinextendedc")]; + char unicode_prop_name_pool_str947[sizeof("kaithi")]; + char unicode_prop_name_pool_str951[sizeof("graphemebase")]; + char unicode_prop_name_pool_str952[sizeof("idstart")]; + char unicode_prop_name_pool_str953[sizeof("osma")]; + char unicode_prop_name_pool_str962[sizeof("adlm")]; + char unicode_prop_name_pool_str965[sizeof("inmahajani")]; + char unicode_prop_name_pool_str966[sizeof("cased")]; + char unicode_prop_name_pool_str969[sizeof("runr")]; + char unicode_prop_name_pool_str970[sizeof("sinhala")]; + char unicode_prop_name_pool_str971[sizeof("manichaean")]; + char unicode_prop_name_pool_str972[sizeof("inogham")]; + char unicode_prop_name_pool_str973[sizeof("graphemelink")]; + char unicode_prop_name_pool_str976[sizeof("ingurmukhi")]; + char unicode_prop_name_pool_str977[sizeof("cwt")]; + char unicode_prop_name_pool_str982[sizeof("khojki")]; + char unicode_prop_name_pool_str983[sizeof("khar")]; + char unicode_prop_name_pool_str987[sizeof("multani")]; + char unicode_prop_name_pool_str989[sizeof("gunjalagondi")]; + char unicode_prop_name_pool_str995[sizeof("casedletter")]; + char unicode_prop_name_pool_str997[sizeof("inethiopic")]; + char unicode_prop_name_pool_str999[sizeof("inolchiki")]; + char unicode_prop_name_pool_str1000[sizeof("variationselector")]; + char unicode_prop_name_pool_str1003[sizeof("sind")]; + char unicode_prop_name_pool_str1004[sizeof("incountingrodnumerals")]; + char unicode_prop_name_pool_str1007[sizeof("logicalorderexception")]; + char unicode_prop_name_pool_str1020[sizeof("insinhala")]; + char unicode_prop_name_pool_str1024[sizeof("bidic")]; + char unicode_prop_name_pool_str1034[sizeof("dia")]; + char unicode_prop_name_pool_str1035[sizeof("insorasompeng")]; + char unicode_prop_name_pool_str1036[sizeof("anatolianhieroglyphs")]; + char unicode_prop_name_pool_str1038[sizeof("inlowsurrogates")]; + char unicode_prop_name_pool_str1040[sizeof("di")]; + char unicode_prop_name_pool_str1048[sizeof("ahom")]; + char unicode_prop_name_pool_str1050[sizeof("inenclosedalphanumerics")]; + char unicode_prop_name_pool_str1052[sizeof("adlam")]; + char unicode_prop_name_pool_str1060[sizeof("inkhudawadi")]; + char unicode_prop_name_pool_str1061[sizeof("cntrl")]; + char unicode_prop_name_pool_str1062[sizeof("xidstart")]; + char unicode_prop_name_pool_str1067[sizeof("xdigit")]; + char unicode_prop_name_pool_str1069[sizeof("phnx")]; + char unicode_prop_name_pool_str1071[sizeof("emojimodifier")]; + char unicode_prop_name_pool_str1072[sizeof("khmr")]; + char unicode_prop_name_pool_str1073[sizeof("insiddham")]; + char unicode_prop_name_pool_str1077[sizeof("cwl")]; + char unicode_prop_name_pool_str1082[sizeof("bamu")]; + char unicode_prop_name_pool_str1086[sizeof("ingreekandcoptic")]; + char unicode_prop_name_pool_str1087[sizeof("inmiscellaneoustechnical")]; + char unicode_prop_name_pool_str1100[sizeof("sterm")]; + char unicode_prop_name_pool_str1101[sizeof("inscriptionalpahlavi")]; + char unicode_prop_name_pool_str1102[sizeof("inlatinextendedadditional")]; + char unicode_prop_name_pool_str1103[sizeof("kharoshthi")]; + char unicode_prop_name_pool_str1125[sizeof("runic")]; + char unicode_prop_name_pool_str1127[sizeof("odi")]; + char unicode_prop_name_pool_str1128[sizeof("ahex")]; + char unicode_prop_name_pool_str1132[sizeof("khmer")]; + char unicode_prop_name_pool_str1138[sizeof("incyrillicsupplement")]; + char unicode_prop_name_pool_str1145[sizeof("incherokeesupplement")]; + char unicode_prop_name_pool_str1153[sizeof("inmeroitichieroglyphs")]; + char unicode_prop_name_pool_str1156[sizeof("enclosingmark")]; + char unicode_prop_name_pool_str1157[sizeof("glag")]; + char unicode_prop_name_pool_str1160[sizeof("inkangxiradicals")]; + char unicode_prop_name_pool_str1165[sizeof("math")]; + char unicode_prop_name_pool_str1166[sizeof("quotationmark")]; + char unicode_prop_name_pool_str1172[sizeof("goth")]; + char unicode_prop_name_pool_str1179[sizeof("emojimodifierbase")]; + char unicode_prop_name_pool_str1180[sizeof("ugar")]; + char unicode_prop_name_pool_str1185[sizeof("lu")]; + char unicode_prop_name_pool_str1189[sizeof("radical")]; + char unicode_prop_name_pool_str1198[sizeof("incjkunifiedideographsextensiona")]; + char unicode_prop_name_pool_str1203[sizeof("beng")]; + char unicode_prop_name_pool_str1205[sizeof("braille")]; + char unicode_prop_name_pool_str1207[sizeof("n")]; + char unicode_prop_name_pool_str1209[sizeof("sundanese")]; + char unicode_prop_name_pool_str1210[sizeof("olck")]; + char unicode_prop_name_pool_str1212[sizeof("incjkunifiedideographsextensione")]; + char unicode_prop_name_pool_str1213[sizeof("diacritic")]; + char unicode_prop_name_pool_str1217[sizeof("grantha")]; + char unicode_prop_name_pool_str1223[sizeof("inenclosedalphanumericsupplement")]; + char unicode_prop_name_pool_str1227[sizeof("olchiki")]; + char unicode_prop_name_pool_str1228[sizeof("oidc")]; + char unicode_prop_name_pool_str1229[sizeof("olower")]; + char unicode_prop_name_pool_str1230[sizeof("regionalindicator")]; + char unicode_prop_name_pool_str1239[sizeof("no")]; + char unicode_prop_name_pool_str1240[sizeof("intirhuta")]; + char unicode_prop_name_pool_str1242[sizeof("inhatran")]; + char unicode_prop_name_pool_str1243[sizeof("saur")]; + char unicode_prop_name_pool_str1244[sizeof("kthi")]; + char unicode_prop_name_pool_str1246[sizeof("ingeometricshapes")]; + char unicode_prop_name_pool_str1250[sizeof("guru")]; + char unicode_prop_name_pool_str1256[sizeof("ingreekextended")]; + char unicode_prop_name_pool_str1258[sizeof("paucinhau")]; + char unicode_prop_name_pool_str1260[sizeof("xpeo")]; + char unicode_prop_name_pool_str1263[sizeof("p")]; + char unicode_prop_name_pool_str1264[sizeof("phli")]; + char unicode_prop_name_pool_str1265[sizeof("nko")]; + char unicode_prop_name_pool_str1266[sizeof("nkoo")]; + char unicode_prop_name_pool_str1270[sizeof("oids")]; + char unicode_prop_name_pool_str1276[sizeof("indogra")]; + char unicode_prop_name_pool_str1280[sizeof("inphoenician")]; + char unicode_prop_name_pool_str1283[sizeof("punct")]; + char unicode_prop_name_pool_str1284[sizeof("limbu")]; + char unicode_prop_name_pool_str1286[sizeof("gurmukhi")]; + char unicode_prop_name_pool_str1287[sizeof("mult")]; + char unicode_prop_name_pool_str1293[sizeof("brah")]; + char unicode_prop_name_pool_str1297[sizeof("taile")]; + char unicode_prop_name_pool_str1299[sizeof("inoldhungarian")]; + char unicode_prop_name_pool_str1301[sizeof("takri")]; + char unicode_prop_name_pool_str1303[sizeof("bidicontrol")]; + char unicode_prop_name_pool_str1304[sizeof("invai")]; + char unicode_prop_name_pool_str1305[sizeof("incjkunifiedideographsextensionc")]; + char unicode_prop_name_pool_str1314[sizeof("inenclosedideographicsupplement")]; + char unicode_prop_name_pool_str1320[sizeof("decimalnumber")]; + char unicode_prop_name_pool_str1331[sizeof("lepc")]; + char unicode_prop_name_pool_str1333[sizeof("inherited")]; + char unicode_prop_name_pool_str1337[sizeof("incjkunifiedideographs")]; + char unicode_prop_name_pool_str1338[sizeof("graphemeextend")]; + char unicode_prop_name_pool_str1339[sizeof("saurashtra")]; + char unicode_prop_name_pool_str1343[sizeof("caseignorable")]; + char unicode_prop_name_pool_str1344[sizeof("emojicomponent")]; + char unicode_prop_name_pool_str1345[sizeof("takr")]; + char unicode_prop_name_pool_str1360[sizeof("inanatolianhieroglyphs")]; + char unicode_prop_name_pool_str1363[sizeof("inornamentaldingbats")]; + char unicode_prop_name_pool_str1366[sizeof("inphaistosdisc")]; + char unicode_prop_name_pool_str1371[sizeof("insogdian")]; + char unicode_prop_name_pool_str1372[sizeof("indingbats")]; + char unicode_prop_name_pool_str1390[sizeof("sd")]; + char unicode_prop_name_pool_str1395[sizeof("zanb")]; + char unicode_prop_name_pool_str1397[sizeof("insinhalaarchaicnumbers")]; + char unicode_prop_name_pool_str1398[sizeof("ideographic")]; + char unicode_prop_name_pool_str1399[sizeof("sidd")]; + char unicode_prop_name_pool_str1404[sizeof("linb")]; + char unicode_prop_name_pool_str1407[sizeof("sogdian")]; + char unicode_prop_name_pool_str1408[sizeof("bhks")]; + char unicode_prop_name_pool_str1411[sizeof("sogo")]; + char unicode_prop_name_pool_str1420[sizeof("bhaiksuki")]; + char unicode_prop_name_pool_str1423[sizeof("term")]; + char unicode_prop_name_pool_str1425[sizeof("insundanesesupplement")]; + char unicode_prop_name_pool_str1428[sizeof("intags")]; + char unicode_prop_name_pool_str1432[sizeof("innabataean")]; + char unicode_prop_name_pool_str1435[sizeof("sinh")]; + char unicode_prop_name_pool_str1438[sizeof("shavian")]; + char unicode_prop_name_pool_str1440[sizeof("inbhaiksuki")]; + char unicode_prop_name_pool_str1441[sizeof("inelbasan")]; + char unicode_prop_name_pool_str1442[sizeof("inimperialaramaic")]; + char unicode_prop_name_pool_str1446[sizeof("inshavian")]; + char unicode_prop_name_pool_str1448[sizeof("intangut")]; + char unicode_prop_name_pool_str1451[sizeof("inshorthandformatcontrols")]; + char unicode_prop_name_pool_str1454[sizeof("inkanbun")]; + char unicode_prop_name_pool_str1455[sizeof("sentenceterminal")]; + char unicode_prop_name_pool_str1458[sizeof("medf")]; + char unicode_prop_name_pool_str1461[sizeof("coptic")]; + char unicode_prop_name_pool_str1466[sizeof("linearb")]; + char unicode_prop_name_pool_str1468[sizeof("medefaidrin")]; + char unicode_prop_name_pool_str1470[sizeof("inethiopicextendeda")]; + char unicode_prop_name_pool_str1478[sizeof("inhanunoo")]; + char unicode_prop_name_pool_str1482[sizeof("han")]; + char unicode_prop_name_pool_str1483[sizeof("cwcf")]; + char unicode_prop_name_pool_str1487[sizeof("hani")]; + char unicode_prop_name_pool_str1490[sizeof("limb")]; + char unicode_prop_name_pool_str1497[sizeof("hano")]; + char unicode_prop_name_pool_str1504[sizeof("ingeometricshapesextended")]; + char unicode_prop_name_pool_str1520[sizeof("hanunoo")]; + char unicode_prop_name_pool_str1528[sizeof("inlatinextendedd")]; + char unicode_prop_name_pool_str1530[sizeof("inarabic")]; + char unicode_prop_name_pool_str1531[sizeof("cwu")]; + char unicode_prop_name_pool_str1534[sizeof("asciihexdigit")]; + char unicode_prop_name_pool_str1537[sizeof("ininscriptionalparthian")]; + char unicode_prop_name_pool_str1539[sizeof("format")]; + char unicode_prop_name_pool_str1540[sizeof("ininscriptionalpahlavi")]; + char unicode_prop_name_pool_str1543[sizeof("hira")]; + char unicode_prop_name_pool_str1549[sizeof("dsrt")]; + char unicode_prop_name_pool_str1551[sizeof("copt")]; + char unicode_prop_name_pool_str1552[sizeof("ugaritic")]; + char unicode_prop_name_pool_str1555[sizeof("newa")]; + char unicode_prop_name_pool_str1557[sizeof("arab")]; + char unicode_prop_name_pool_str1558[sizeof("inkhojki")]; + char unicode_prop_name_pool_str1559[sizeof("oldpersian")]; + char unicode_prop_name_pool_str1569[sizeof("punctuation")]; + char unicode_prop_name_pool_str1580[sizeof("deseret")]; + char unicode_prop_name_pool_str1581[sizeof("newtailue")]; + char unicode_prop_name_pool_str1582[sizeof("newline")]; + char unicode_prop_name_pool_str1584[sizeof("ext")]; + char unicode_prop_name_pool_str1586[sizeof("sund")]; + char unicode_prop_name_pool_str1587[sizeof("ogam")]; + char unicode_prop_name_pool_str1589[sizeof("inbasiclatin")]; + char unicode_prop_name_pool_str1590[sizeof("inarabicpresentationformsa")]; + char unicode_prop_name_pool_str1593[sizeof("cprt")]; + char unicode_prop_name_pool_str1594[sizeof("imperialaramaic")]; + char unicode_prop_name_pool_str1597[sizeof("incjkunifiedideographsextensiond")]; + char unicode_prop_name_pool_str1598[sizeof("assigned")]; + char unicode_prop_name_pool_str1605[sizeof("taiviet")]; + char unicode_prop_name_pool_str1608[sizeof("innushu")]; + char unicode_prop_name_pool_str1618[sizeof("inoriya")]; + char unicode_prop_name_pool_str1622[sizeof("wara")]; + char unicode_prop_name_pool_str1624[sizeof("java")]; + char unicode_prop_name_pool_str1626[sizeof("sorasompeng")]; + char unicode_prop_name_pool_str1628[sizeof("inkayahli")]; + char unicode_prop_name_pool_str1630[sizeof("orkh")]; + char unicode_prop_name_pool_str1633[sizeof("closepunctuation")]; + char unicode_prop_name_pool_str1636[sizeof("grbase")]; + char unicode_prop_name_pool_str1638[sizeof("tale")]; + char unicode_prop_name_pool_str1640[sizeof("bopo")]; + char unicode_prop_name_pool_str1659[sizeof("javanese")]; + char unicode_prop_name_pool_str1661[sizeof("osge")]; + char unicode_prop_name_pool_str1662[sizeof("oldpermic")]; + char unicode_prop_name_pool_str1665[sizeof("inoldpersian")]; + char unicode_prop_name_pool_str1677[sizeof("phag")]; + char unicode_prop_name_pool_str1678[sizeof("alpha")]; + char unicode_prop_name_pool_str1680[sizeof("lyci")]; + char unicode_prop_name_pool_str1681[sizeof("lycian")]; + char unicode_prop_name_pool_str1687[sizeof("inkatakanaphoneticextensions")]; + char unicode_prop_name_pool_str1690[sizeof("incjksymbolsandpunctuation")]; + char unicode_prop_name_pool_str1691[sizeof("inhanguljamo")]; + char unicode_prop_name_pool_str1697[sizeof("inhanguljamoextendeda")]; + char unicode_prop_name_pool_str1701[sizeof("avestan")]; + char unicode_prop_name_pool_str1708[sizeof("inpalmyrene")]; + char unicode_prop_name_pool_str1709[sizeof("inlepcha")]; + char unicode_prop_name_pool_str1710[sizeof("indevanagari")]; + char unicode_prop_name_pool_str1713[sizeof("taml")]; + char unicode_prop_name_pool_str1714[sizeof("sgnw")]; + char unicode_prop_name_pool_str1717[sizeof("inblockelements")]; + char unicode_prop_name_pool_str1726[sizeof("inlisu")]; + char unicode_prop_name_pool_str1728[sizeof("mymr")]; + char unicode_prop_name_pool_str1731[sizeof("myanmar")]; + char unicode_prop_name_pool_str1733[sizeof("graph")]; + char unicode_prop_name_pool_str1736[sizeof("cuneiform")]; + char unicode_prop_name_pool_str1737[sizeof("extender")]; + char unicode_prop_name_pool_str1741[sizeof("inphoneticextensions")]; + char unicode_prop_name_pool_str1749[sizeof("inmongoliansupplement")]; + char unicode_prop_name_pool_str1750[sizeof("bopomofo")]; + char unicode_prop_name_pool_str1754[sizeof("intibetan")]; + char unicode_prop_name_pool_str1758[sizeof("innumberforms")]; + char unicode_prop_name_pool_str1759[sizeof("shaw")]; + char unicode_prop_name_pool_str1760[sizeof("inbatak")]; + char unicode_prop_name_pool_str1765[sizeof("inoldpermic")]; + char unicode_prop_name_pool_str1766[sizeof("incoptic")]; + char unicode_prop_name_pool_str1776[sizeof("invariationselectors")]; + char unicode_prop_name_pool_str1779[sizeof("insoyombo")]; + char unicode_prop_name_pool_str1782[sizeof("terminalpunctuation")]; + char unicode_prop_name_pool_str1783[sizeof("bugi")]; + char unicode_prop_name_pool_str1791[sizeof("insyriacsupplement")]; + char unicode_prop_name_pool_str1793[sizeof("sogd")]; + char unicode_prop_name_pool_str1798[sizeof("hatran")]; + char unicode_prop_name_pool_str1807[sizeof("inbyzantinemusicalsymbols")]; + char unicode_prop_name_pool_str1809[sizeof("inbalinese")]; + char unicode_prop_name_pool_str1811[sizeof("buginese")]; + char unicode_prop_name_pool_str1815[sizeof("innoblock")]; + char unicode_prop_name_pool_str1817[sizeof("inethiopicsupplement")]; + char unicode_prop_name_pool_str1820[sizeof("inglagolitic")]; + char unicode_prop_name_pool_str1824[sizeof("ingeorgiansupplement")]; + char unicode_prop_name_pool_str1826[sizeof("space")]; + char unicode_prop_name_pool_str1827[sizeof("sharada")]; + char unicode_prop_name_pool_str1829[sizeof("dogra")]; + char unicode_prop_name_pool_str1830[sizeof("avst")]; + char unicode_prop_name_pool_str1834[sizeof("hex")]; + char unicode_prop_name_pool_str1837[sizeof("inunifiedcanadianaboriginalsyllabics")]; + char unicode_prop_name_pool_str1838[sizeof("inverticalforms")]; + char unicode_prop_name_pool_str1839[sizeof("spacingmark")]; + char unicode_prop_name_pool_str1845[sizeof("inarabicextendeda")]; + char unicode_prop_name_pool_str1849[sizeof("hatr")]; + char unicode_prop_name_pool_str1850[sizeof("modifierletter")]; + char unicode_prop_name_pool_str1852[sizeof("inmyanmarextendedb")]; + char unicode_prop_name_pool_str1858[sizeof("incjkcompatibility")]; + char unicode_prop_name_pool_str1860[sizeof("khudawadi")]; + char unicode_prop_name_pool_str1863[sizeof("invedicextensions")]; + char unicode_prop_name_pool_str1868[sizeof("inethiopicextended")]; + char unicode_prop_name_pool_str1875[sizeof("ingeorgianextended")]; + char unicode_prop_name_pool_str1883[sizeof("shrd")]; + char unicode_prop_name_pool_str1887[sizeof("dogr")]; + char unicode_prop_name_pool_str1892[sizeof("intelugu")]; + char unicode_prop_name_pool_str1898[sizeof("inmiscellaneousmathematicalsymbolsb")]; + char unicode_prop_name_pool_str1899[sizeof("inmayannumerals")]; + char unicode_prop_name_pool_str1902[sizeof("olditalic")]; + char unicode_prop_name_pool_str1904[sizeof("inbraillepatterns")]; + char unicode_prop_name_pool_str1911[sizeof("oalpha")]; + char unicode_prop_name_pool_str1913[sizeof("inmathematicalalphanumericsymbols")]; + char unicode_prop_name_pool_str1915[sizeof("inphoneticextensionssupplement")]; + char unicode_prop_name_pool_str1916[sizeof("intagalog")]; + char unicode_prop_name_pool_str1921[sizeof("insuttonsignwriting")]; + char unicode_prop_name_pool_str1923[sizeof("siddham")]; + char unicode_prop_name_pool_str1927[sizeof("intaiviet")]; + char unicode_prop_name_pool_str1931[sizeof("nl")]; + char unicode_prop_name_pool_str1934[sizeof("separator")]; + char unicode_prop_name_pool_str1938[sizeof("ethi")]; + char unicode_prop_name_pool_str1943[sizeof("patsyn")]; + char unicode_prop_name_pool_str1948[sizeof("rohg")]; + char unicode_prop_name_pool_str1950[sizeof("invariationselectorssupplement")]; + char unicode_prop_name_pool_str1956[sizeof("inyiradicals")]; + char unicode_prop_name_pool_str1957[sizeof("otheridcontinue")]; + char unicode_prop_name_pool_str1964[sizeof("idsb")]; + char unicode_prop_name_pool_str1965[sizeof("insmallformvariants")]; + char unicode_prop_name_pool_str1972[sizeof("lydi")]; + char unicode_prop_name_pool_str1973[sizeof("lydian")]; + char unicode_prop_name_pool_str1978[sizeof("other")]; + char unicode_prop_name_pool_str1987[sizeof("othernumber")]; + char unicode_prop_name_pool_str1999[sizeof("cyrl")]; + char unicode_prop_name_pool_str2003[sizeof("nd")]; + char unicode_prop_name_pool_str2006[sizeof("induployan")]; + char unicode_prop_name_pool_str2008[sizeof("dash")]; + char unicode_prop_name_pool_str2010[sizeof("zanabazarsquare")]; + char unicode_prop_name_pool_str2016[sizeof("incopticepactnumbers")]; + char unicode_prop_name_pool_str2020[sizeof("number")]; + char unicode_prop_name_pool_str2023[sizeof("inphagspa")]; + char unicode_prop_name_pool_str2032[sizeof("mlym")]; + char unicode_prop_name_pool_str2037[sizeof("malayalam")]; + char unicode_prop_name_pool_str2038[sizeof("word")]; + char unicode_prop_name_pool_str2040[sizeof("sarb")]; + char unicode_prop_name_pool_str2047[sizeof("tang")]; + char unicode_prop_name_pool_str2050[sizeof("otheralphabetic")]; + char unicode_prop_name_pool_str2051[sizeof("tagbanwa")]; + char unicode_prop_name_pool_str2057[sizeof("lepcha")]; + char unicode_prop_name_pool_str2062[sizeof("surrogate")]; + char unicode_prop_name_pool_str2063[sizeof("palmyrene")]; + char unicode_prop_name_pool_str2064[sizeof("cf")]; + char unicode_prop_name_pool_str2070[sizeof("ingothic")]; + char unicode_prop_name_pool_str2071[sizeof("inmeroiticcursive")]; + char unicode_prop_name_pool_str2077[sizeof("tamil")]; + char unicode_prop_name_pool_str2084[sizeof("oldhungarian")]; + char unicode_prop_name_pool_str2085[sizeof("titlecaseletter")]; + char unicode_prop_name_pool_str2092[sizeof("thaa")]; + char unicode_prop_name_pool_str2095[sizeof("inunifiedcanadianaboriginalsyllabicsextended")]; + char unicode_prop_name_pool_str2097[sizeof("thaana")]; + char unicode_prop_name_pool_str2099[sizeof("thai")]; + char unicode_prop_name_pool_str2109[sizeof("pf")]; + char unicode_prop_name_pool_str2110[sizeof("extendedpictographic")]; + char unicode_prop_name_pool_str2121[sizeof("incjkradicalssupplement")]; + char unicode_prop_name_pool_str2124[sizeof("indevanagariextended")]; + char unicode_prop_name_pool_str2133[sizeof("gujr")]; + char unicode_prop_name_pool_str2144[sizeof("gujarati")]; + char unicode_prop_name_pool_str2158[sizeof("tirh")]; + char unicode_prop_name_pool_str2160[sizeof("caucasianalbanian")]; + char unicode_prop_name_pool_str2178[sizeof("incyrillicextendedb")]; + char unicode_prop_name_pool_str2187[sizeof("soyo")]; + char unicode_prop_name_pool_str2188[sizeof("inhangulsyllables")]; + char unicode_prop_name_pool_str2190[sizeof("inbamum")]; + char unicode_prop_name_pool_str2191[sizeof("taitham")]; + char unicode_prop_name_pool_str2196[sizeof("meroitichieroglyphs")]; + char unicode_prop_name_pool_str2213[sizeof("intifinagh")]; + char unicode_prop_name_pool_str2214[sizeof("talu")]; + char unicode_prop_name_pool_str2217[sizeof("inbengali")]; + char unicode_prop_name_pool_str2222[sizeof("incjkunifiedideographsextensionf")]; + char unicode_prop_name_pool_str2223[sizeof("buhd")]; + char unicode_prop_name_pool_str2228[sizeof("telu")]; + char unicode_prop_name_pool_str2229[sizeof("inbuginese")]; + char unicode_prop_name_pool_str2232[sizeof("idstrinaryoperator")]; + char unicode_prop_name_pool_str2233[sizeof("tirhuta")]; + char unicode_prop_name_pool_str2238[sizeof("oldturkic")]; + char unicode_prop_name_pool_str2245[sizeof("incombiningdiacriticalmarks")]; + char unicode_prop_name_pool_str2249[sizeof("phagspa")]; + char unicode_prop_name_pool_str2255[sizeof("incombiningdiacriticalmarksforsymbols")]; + char unicode_prop_name_pool_str2258[sizeof("changeswhencasemapped")]; + char unicode_prop_name_pool_str2259[sizeof("inlatin1supplement")]; + char unicode_prop_name_pool_str2261[sizeof("inbrahmi")]; + char unicode_prop_name_pool_str2263[sizeof("hang")]; + char unicode_prop_name_pool_str2264[sizeof("nchar")]; + char unicode_prop_name_pool_str2286[sizeof("oldsogdian")]; + char unicode_prop_name_pool_str2299[sizeof("deva")]; + char unicode_prop_name_pool_str2301[sizeof("ingujarati")]; + char unicode_prop_name_pool_str2305[sizeof("otherlowercase")]; + char unicode_prop_name_pool_str2311[sizeof("ingunjalagondi")]; + char unicode_prop_name_pool_str2315[sizeof("devanagari")]; + char unicode_prop_name_pool_str2319[sizeof("syrc")]; + char unicode_prop_name_pool_str2325[sizeof("mahj")]; + char unicode_prop_name_pool_str2330[sizeof("hiragana")]; + char unicode_prop_name_pool_str2333[sizeof("orya")]; + char unicode_prop_name_pool_str2336[sizeof("mahajani")]; + char unicode_prop_name_pool_str2341[sizeof("incurrencysymbols")]; + char unicode_prop_name_pool_str2342[sizeof("spaceseparator")]; + char unicode_prop_name_pool_str2347[sizeof("otherletter")]; + char unicode_prop_name_pool_str2348[sizeof("inlinearbsyllabary")]; + char unicode_prop_name_pool_str2351[sizeof("inrejang")]; + char unicode_prop_name_pool_str2352[sizeof("hmng")]; + char unicode_prop_name_pool_str2357[sizeof("ogrext")]; + char unicode_prop_name_pool_str2376[sizeof("inaegeannumbers")]; + char unicode_prop_name_pool_str2389[sizeof("changeswhentitlecased")]; + char unicode_prop_name_pool_str2409[sizeof("zp")]; + char unicode_prop_name_pool_str2411[sizeof("mathsymbol")]; + char unicode_prop_name_pool_str2414[sizeof("khoj")]; + char unicode_prop_name_pool_str2419[sizeof("incombiningdiacriticalmarkssupplement")]; + char unicode_prop_name_pool_str2421[sizeof("warangciti")]; + char unicode_prop_name_pool_str2428[sizeof("syriac")]; + char unicode_prop_name_pool_str2429[sizeof("finalpunctuation")]; + char unicode_prop_name_pool_str2437[sizeof("othersymbol")]; + char unicode_prop_name_pool_str2444[sizeof("currencysymbol")]; + char unicode_prop_name_pool_str2445[sizeof("digit")]; + char unicode_prop_name_pool_str2449[sizeof("emojipresentation")]; + char unicode_prop_name_pool_str2455[sizeof("inpsalterpahlavi")]; + char unicode_prop_name_pool_str2456[sizeof("softdotted")]; + char unicode_prop_name_pool_str2460[sizeof("phlp")]; + char unicode_prop_name_pool_str2461[sizeof("noncharactercodepoint")]; + char unicode_prop_name_pool_str2464[sizeof("inlimbu")]; + char unicode_prop_name_pool_str2465[sizeof("nonspacingmark")]; + char unicode_prop_name_pool_str2467[sizeof("omath")]; + char unicode_prop_name_pool_str2473[sizeof("cyrillic")]; + char unicode_prop_name_pool_str2476[sizeof("inenclosedcjklettersandmonths")]; + char unicode_prop_name_pool_str2482[sizeof("tangut")]; + char unicode_prop_name_pool_str2484[sizeof("changeswhenlowercased")]; + char unicode_prop_name_pool_str2496[sizeof("inalphabeticpresentationforms")]; + char unicode_prop_name_pool_str2500[sizeof("intangutcomponents")]; + char unicode_prop_name_pool_str2503[sizeof("incombiningdiacriticalmarksextended")]; + char unicode_prop_name_pool_str2508[sizeof("ogham")]; + char unicode_prop_name_pool_str2518[sizeof("osmanya")]; + char unicode_prop_name_pool_str2521[sizeof("intagbanwa")]; + char unicode_prop_name_pool_str2525[sizeof("inprivateusearea")]; + char unicode_prop_name_pool_str2529[sizeof("inpaucinhau")]; + char unicode_prop_name_pool_str2532[sizeof("otheruppercase")]; + char unicode_prop_name_pool_str2533[sizeof("sylo")]; + char unicode_prop_name_pool_str2537[sizeof("elba")]; + char unicode_prop_name_pool_str2553[sizeof("paragraphseparator")]; + char unicode_prop_name_pool_str2554[sizeof("inbassavah")]; + char unicode_prop_name_pool_str2559[sizeof("otheridstart")]; + char unicode_prop_name_pool_str2567[sizeof("signwriting")]; + char unicode_prop_name_pool_str2576[sizeof("rjng")]; + char unicode_prop_name_pool_str2584[sizeof("whitespace")]; + char unicode_prop_name_pool_str2585[sizeof("incjkunifiedideographsextensionb")]; + char unicode_prop_name_pool_str2586[sizeof("inletterlikesymbols")]; + char unicode_prop_name_pool_str2623[sizeof("buhid")]; + char unicode_prop_name_pool_str2642[sizeof("oupper")]; + char unicode_prop_name_pool_str2644[sizeof("bassavah")]; + char unicode_prop_name_pool_str2647[sizeof("inhebrew")]; + char unicode_prop_name_pool_str2653[sizeof("narb")]; + char unicode_prop_name_pool_str2659[sizeof("inbuhid")]; + char unicode_prop_name_pool_str2662[sizeof("inbopomofo")]; + char unicode_prop_name_pool_str2692[sizeof("elbasan")]; + char unicode_prop_name_pool_str2700[sizeof("incombininghalfmarks")]; + char unicode_prop_name_pool_str2707[sizeof("inindicsiyaqnumbers")]; + char unicode_prop_name_pool_str2711[sizeof("changeswhenuppercased")]; + char unicode_prop_name_pool_str2743[sizeof("inmathematicaloperators")]; + char unicode_prop_name_pool_str2745[sizeof("inarabicmathematicalalphabeticsymbols")]; + char unicode_prop_name_pool_str2764[sizeof("hluw")]; + char unicode_prop_name_pool_str2770[sizeof("hexdigit")]; + char unicode_prop_name_pool_str2771[sizeof("deprecated")]; + char unicode_prop_name_pool_str2776[sizeof("insuperscriptsandsubscripts")]; + char unicode_prop_name_pool_str2777[sizeof("nshu")]; + char unicode_prop_name_pool_str2782[sizeof("injavanese")]; + char unicode_prop_name_pool_str2790[sizeof("inbamumsupplement")]; + char unicode_prop_name_pool_str2798[sizeof("hangul")]; + char unicode_prop_name_pool_str2826[sizeof("unifiedideograph")]; + char unicode_prop_name_pool_str2831[sizeof("tavt")]; + char unicode_prop_name_pool_str2843[sizeof("othermath")]; + char unicode_prop_name_pool_str2849[sizeof("pahawhhmong")]; + char unicode_prop_name_pool_str2850[sizeof("sylotinagri")]; + char unicode_prop_name_pool_str2853[sizeof("hung")]; + char unicode_prop_name_pool_str2856[sizeof("kayahli")]; + char unicode_prop_name_pool_str2861[sizeof("inpahawhhmong")]; + char unicode_prop_name_pool_str2863[sizeof("upper")]; + char unicode_prop_name_pool_str2884[sizeof("inalchemicalsymbols")]; + char unicode_prop_name_pool_str2907[sizeof("nbat")]; + char unicode_prop_name_pool_str2915[sizeof("nabataean")]; + char unicode_prop_name_pool_str2929[sizeof("uppercase")]; + char unicode_prop_name_pool_str2937[sizeof("hebr")]; + char unicode_prop_name_pool_str2947[sizeof("inmahjongtiles")]; + char unicode_prop_name_pool_str2954[sizeof("oldnortharabian")]; + char unicode_prop_name_pool_str2963[sizeof("inarabicsupplement")]; + char unicode_prop_name_pool_str2968[sizeof("tibt")]; + char unicode_prop_name_pool_str2974[sizeof("tibetan")]; + char unicode_prop_name_pool_str2975[sizeof("inhighprivateusesurrogates")]; + char unicode_prop_name_pool_str2976[sizeof("insupplementalarrowsa")]; + char unicode_prop_name_pool_str2977[sizeof("inarabicpresentationformsb")]; + char unicode_prop_name_pool_str2986[sizeof("otherdefaultignorablecodepoint")]; + char unicode_prop_name_pool_str2987[sizeof("symbol")]; + char unicode_prop_name_pool_str3012[sizeof("inplayingcards")]; + char unicode_prop_name_pool_str3013[sizeof("inhalfwidthandfullwidthforms")]; + char unicode_prop_name_pool_str3052[sizeof("wspace")]; + char unicode_prop_name_pool_str3071[sizeof("tfng")]; + char unicode_prop_name_pool_str3080[sizeof("insupplementalmathematicaloperators")]; + char unicode_prop_name_pool_str3083[sizeof("insupplementalarrowsc")]; + char unicode_prop_name_pool_str3084[sizeof("inhanguljamoextendedb")]; + char unicode_prop_name_pool_str3112[sizeof("aghb")]; + char unicode_prop_name_pool_str3120[sizeof("cypriot")]; + char unicode_prop_name_pool_str3127[sizeof("nushu")]; + char unicode_prop_name_pool_str3130[sizeof("tifinagh")]; + char unicode_prop_name_pool_str3139[sizeof("otherpunctuation")]; + char unicode_prop_name_pool_str3177[sizeof("alphabetic")]; + char unicode_prop_name_pool_str3184[sizeof("dupl")]; + char unicode_prop_name_pool_str3190[sizeof("tglg")]; + char unicode_prop_name_pool_str3193[sizeof("changeswhencasefolded")]; + char unicode_prop_name_pool_str3210[sizeof("tagalog")]; + char unicode_prop_name_pool_str3228[sizeof("modifiersymbol")]; + char unicode_prop_name_pool_str3231[sizeof("any")]; + char unicode_prop_name_pool_str3239[sizeof("inglagoliticsupplement")]; + char unicode_prop_name_pool_str3262[sizeof("ethiopic")]; + char unicode_prop_name_pool_str3293[sizeof("uppercaseletter")]; + char unicode_prop_name_pool_str3297[sizeof("dashpunctuation")]; + char unicode_prop_name_pool_str3304[sizeof("hanifirohingya")]; + char unicode_prop_name_pool_str3328[sizeof("inyijinghexagramsymbols")]; + char unicode_prop_name_pool_str3337[sizeof("incypriotsyllabary")]; + char unicode_prop_name_pool_str3375[sizeof("rejang")]; + char unicode_prop_name_pool_str3426[sizeof("defaultignorablecodepoint")]; + char unicode_prop_name_pool_str3431[sizeof("tagb")]; + char unicode_prop_name_pool_str3447[sizeof("dep")]; + char unicode_prop_name_pool_str3471[sizeof("inyisyllables")]; + char unicode_prop_name_pool_str3485[sizeof("oldsoutharabian")]; + char unicode_prop_name_pool_str3504[sizeof("inlatinextendedb")]; + char unicode_prop_name_pool_str3514[sizeof("insupplementalpunctuation")]; + char unicode_prop_name_pool_str3517[sizeof("othergraphemeextend")]; + char unicode_prop_name_pool_str3562[sizeof("hebrew")]; + char unicode_prop_name_pool_str3564[sizeof("inboxdrawing")]; + char unicode_prop_name_pool_str3570[sizeof("inhighsurrogates")]; + char unicode_prop_name_pool_str3603[sizeof("telugu")]; + char unicode_prop_name_pool_str3623[sizeof("inbopomofoextended")]; + char unicode_prop_name_pool_str3666[sizeof("soyombo")]; + char unicode_prop_name_pool_str3764[sizeof("inegyptianhieroglyphs")]; + char unicode_prop_name_pool_str4052[sizeof("openpunctuation")]; + char unicode_prop_name_pool_str4129[sizeof("insupplementaryprivateuseareaa")]; + char unicode_prop_name_pool_str4261[sizeof("hyphen")]; + char unicode_prop_name_pool_str4277[sizeof("inhangulcompatibilityjamo")]; + char unicode_prop_name_pool_str4332[sizeof("egyp")]; + char unicode_prop_name_pool_str4363[sizeof("insupplementalarrowsb")]; + char unicode_prop_name_pool_str4404[sizeof("duployan")]; + char unicode_prop_name_pool_str4639[sizeof("insupplementalsymbolsandpictographs")]; + char unicode_prop_name_pool_str4682[sizeof("zyyy")]; + char unicode_prop_name_pool_str5231[sizeof("egyptianhieroglyphs")]; + char unicode_prop_name_pool_str5516[sizeof("insupplementaryprivateuseareab")]; + }; +static const struct unicode_prop_name_pool_t unicode_prop_name_pool_contents = + { + "lana", + "lina", + "yi", + "cn", + "z", + "mn", + "yiii", + "ci", + "mani", + "lo", + "lao", + "laoo", + "miao", + "maka", + "me", + "co", + "loe", + "inkannada", + "innko", + "zzzz", + "gran", + "pi", + "lineara", + "cari", + "carian", + "pe", + "po", + "kana", + "mendekikakui", + "geor", + "meeteimayek", + "mark", + "m", + "grek", + "mero", + "mro", + "mroo", + "gonm", + "c", + "cakm", + "greek", + "inkharoshthi", + "mandaic", + "inosmanya", + "inarmenian", + "inmanichaean", + "common", + "inmro", + "inmiao", + "qaai", + "inchakma", + "cans", + "connectorpunctuation", + "lm", + "marc", + "inmyanmar", + "vai", + "vaii", + "inideographicsymbolsandpunctuation", + "merc", + "inavestan", + "incuneiformnumbersandpunctuation", + "inmakasar", + "inrunic", + "incarian", + "prependedconcatenationmark", + "lc", + "inipaextensions", + "inkhmer", + "perm", + "combiningmark", + "inahom", + "cc", + "incherokee", + "mc", + "insharada", + "masaramgondi", + "incuneiform", + "makasar", + "qaac", + "inarrows", + "armn", + "lineseparator", + "armi", + "pc", + "armenian", + "insamaritan", + "inmasaramgondi", + "inzanabazarsquare", + "qmark", + "inmarchen", + "zs", + "cs", + "incyrillic", + "incham", + "latn", + "inscriptionalparthian", + "latin", + "ri", + "inkhmersymbols", + "pcm", + "inthaana", + "mtei", + "insyriac", + "ps", + "inthai", + "l", + "innewa", + "inkatakana", + "ascii", + "initialpunctuation", + "inkaithi", + "arabic", + "inideographicdescriptioncharacters", + "inlineara", + "mand", + "mongolian", + "inlao", + "katakana", + "mend", + "intakri", + "inruminumeralsymbols", + "prti", + "modi", + "inwarangciti", + "incjkcompatibilityforms", + "inspecials", + "incjkcompatibilityideographs", + "ideo", + "privateuse", + "kali", + "inmyanmarextendeda", + "letter", + "brai", + "inkanaextendeda", + "vs", + "xidcontinue", + "lower", + "inchesssymbols", + "control", + "inadlam", + "grlink", + "knda", + "inmeeteimayek", + "kannada", + "inmiscellaneousmathematicalsymbolsa", + "palm", + "inlycian", + "intransportandmapsymbols", + "inoldnortharabian", + "inemoticons", + "letternumber", + "inmodi", + "xidc", + "lowercase", + "inancientsymbols", + "cwcm", + "inmedefaidrin", + "psalterpahlavi", + "gothic", + "inmendekikakui", + "brahmi", + "inolditalic", + "inmalayalam", + "xids", + "incommonindicnumberforms", + "meroiticcursive", + "inlinearbideograms", + "patternwhitespace", + "insundanese", + "joinc", + "inoldsogdian", + "incjkstrokes", + "so", + "patternsyntax", + "lt", + "incjkcompatibilityideographssupplement", + "inmandaic", + "insylotinagri", + "idc", + "sk", + "alnum", + "sora", + "bamum", + "inoldsoutharabian", + "patws", + "inmusicalsymbols", + "idsbinaryoperator", + "indominotiles", + "bass", + "innewtailue", + "ital", + "inmiscellaneoussymbols", + "inopticalcharacterrecognition", + "grext", + "inkanasupplement", + "inmiscellaneoussymbolsandarrows", + "inmiscellaneoussymbolsandpictographs", + "unknown", + "inmodifiertoneletters", + "ids", + "zl", + "inlatinextendeda", + "ll", + "intaile", + "incontrolpictures", + "s", + "batk", + "samr", + "lisu", + "print", + "samaritan", + "inlatinextendede", + "intaitham", + "pauc", + "batak", + "sm", + "bali", + "inancientgreekmusicalnotation", + "uideo", + "intaixuanjingsymbols", + "oriya", + "incyrillicextendeda", + "bengali", + "inugaritic", + "balinese", + "sc", + "intamil", + "inlydian", + "inmultani", + "gong", + "blank", + "ingrantha", + "mong", + "inearlydynasticcuneiform", + "insaurashtra", + "georgian", + "zinh", + "inosage", + "ingeneralpunctuation", + "incaucasianalbanian", + "pd", + "canadianaboriginal", + "glagolitic", + "inspacingmodifierletters", + "idcontinue", + "inoldturkic", + "plrd", + "joincontrol", + "idst", + "inhanifirohingya", + "osage", + "incyrillicextendedc", + "ingeorgian", + "unassigned", + "lowercaseletter", + "emoji", + "indeseret", + "inancientgreeknumbers", + "inmongolian", + "cher", + "cherokee", + "inhiragana", + "phoenician", + "marchen", + "xsux", + "cham", + "chakma", + "inmeeteimayekextensions", + "inlatinextendedc", + "kaithi", + "graphemebase", + "idstart", + "osma", + "adlm", + "inmahajani", + "cased", + "runr", + "sinhala", + "manichaean", + "inogham", + "graphemelink", + "ingurmukhi", + "cwt", + "khojki", + "khar", + "multani", + "gunjalagondi", + "casedletter", + "inethiopic", + "inolchiki", + "variationselector", + "sind", + "incountingrodnumerals", + "logicalorderexception", + "insinhala", + "bidic", + "dia", + "insorasompeng", + "anatolianhieroglyphs", + "inlowsurrogates", + "di", + "ahom", + "inenclosedalphanumerics", + "adlam", + "inkhudawadi", + "cntrl", + "xidstart", + "xdigit", + "phnx", + "emojimodifier", + "khmr", + "insiddham", + "cwl", + "bamu", + "ingreekandcoptic", + "inmiscellaneoustechnical", + "sterm", + "inscriptionalpahlavi", + "inlatinextendedadditional", + "kharoshthi", + "runic", + "odi", + "ahex", + "khmer", + "incyrillicsupplement", + "incherokeesupplement", + "inmeroitichieroglyphs", + "enclosingmark", + "glag", + "inkangxiradicals", + "math", + "quotationmark", + "goth", + "emojimodifierbase", + "ugar", + "lu", + "radical", + "incjkunifiedideographsextensiona", + "beng", + "braille", + "n", + "sundanese", + "olck", + "incjkunifiedideographsextensione", + "diacritic", + "grantha", + "inenclosedalphanumericsupplement", + "olchiki", + "oidc", + "olower", + "regionalindicator", + "no", + "intirhuta", + "inhatran", + "saur", + "kthi", + "ingeometricshapes", + "guru", + "ingreekextended", + "paucinhau", + "xpeo", + "p", + "phli", + "nko", + "nkoo", + "oids", + "indogra", + "inphoenician", + "punct", + "limbu", + "gurmukhi", + "mult", + "brah", + "taile", + "inoldhungarian", + "takri", + "bidicontrol", + "invai", + "incjkunifiedideographsextensionc", + "inenclosedideographicsupplement", + "decimalnumber", + "lepc", + "inherited", + "incjkunifiedideographs", + "graphemeextend", + "saurashtra", + "caseignorable", + "emojicomponent", + "takr", + "inanatolianhieroglyphs", + "inornamentaldingbats", + "inphaistosdisc", + "insogdian", + "indingbats", + "sd", + "zanb", + "insinhalaarchaicnumbers", + "ideographic", + "sidd", + "linb", + "sogdian", + "bhks", + "sogo", + "bhaiksuki", + "term", + "insundanesesupplement", + "intags", + "innabataean", + "sinh", + "shavian", + "inbhaiksuki", + "inelbasan", + "inimperialaramaic", + "inshavian", + "intangut", + "inshorthandformatcontrols", + "inkanbun", + "sentenceterminal", + "medf", + "coptic", + "linearb", + "medefaidrin", + "inethiopicextendeda", + "inhanunoo", + "han", + "cwcf", + "hani", + "limb", + "hano", + "ingeometricshapesextended", + "hanunoo", + "inlatinextendedd", + "inarabic", + "cwu", + "asciihexdigit", + "ininscriptionalparthian", + "format", + "ininscriptionalpahlavi", + "hira", + "dsrt", + "copt", + "ugaritic", + "newa", + "arab", + "inkhojki", + "oldpersian", + "punctuation", + "deseret", + "newtailue", + "newline", + "ext", + "sund", + "ogam", + "inbasiclatin", + "inarabicpresentationformsa", + "cprt", + "imperialaramaic", + "incjkunifiedideographsextensiond", + "assigned", + "taiviet", + "innushu", + "inoriya", + "wara", + "java", + "sorasompeng", + "inkayahli", + "orkh", + "closepunctuation", + "grbase", + "tale", + "bopo", + "javanese", + "osge", + "oldpermic", + "inoldpersian", + "phag", + "alpha", + "lyci", + "lycian", + "inkatakanaphoneticextensions", + "incjksymbolsandpunctuation", + "inhanguljamo", + "inhanguljamoextendeda", + "avestan", + "inpalmyrene", + "inlepcha", + "indevanagari", + "taml", + "sgnw", + "inblockelements", + "inlisu", + "mymr", + "myanmar", + "graph", + "cuneiform", + "extender", + "inphoneticextensions", + "inmongoliansupplement", + "bopomofo", + "intibetan", + "innumberforms", + "shaw", + "inbatak", + "inoldpermic", + "incoptic", + "invariationselectors", + "insoyombo", + "terminalpunctuation", + "bugi", + "insyriacsupplement", + "sogd", + "hatran", + "inbyzantinemusicalsymbols", + "inbalinese", + "buginese", + "innoblock", + "inethiopicsupplement", + "inglagolitic", + "ingeorgiansupplement", + "space", + "sharada", + "dogra", + "avst", + "hex", + "inunifiedcanadianaboriginalsyllabics", + "inverticalforms", + "spacingmark", + "inarabicextendeda", + "hatr", + "modifierletter", + "inmyanmarextendedb", + "incjkcompatibility", + "khudawadi", + "invedicextensions", + "inethiopicextended", + "ingeorgianextended", + "shrd", + "dogr", + "intelugu", + "inmiscellaneousmathematicalsymbolsb", + "inmayannumerals", + "olditalic", + "inbraillepatterns", + "oalpha", + "inmathematicalalphanumericsymbols", + "inphoneticextensionssupplement", + "intagalog", + "insuttonsignwriting", + "siddham", + "intaiviet", + "nl", + "separator", + "ethi", + "patsyn", + "rohg", + "invariationselectorssupplement", + "inyiradicals", + "otheridcontinue", + "idsb", + "insmallformvariants", + "lydi", + "lydian", + "other", + "othernumber", + "cyrl", + "nd", + "induployan", + "dash", + "zanabazarsquare", + "incopticepactnumbers", + "number", + "inphagspa", + "mlym", + "malayalam", + "word", + "sarb", + "tang", + "otheralphabetic", + "tagbanwa", + "lepcha", + "surrogate", + "palmyrene", + "cf", + "ingothic", + "inmeroiticcursive", + "tamil", + "oldhungarian", + "titlecaseletter", + "thaa", + "inunifiedcanadianaboriginalsyllabicsextended", + "thaana", + "thai", + "pf", + "extendedpictographic", + "incjkradicalssupplement", + "indevanagariextended", + "gujr", + "gujarati", + "tirh", + "caucasianalbanian", + "incyrillicextendedb", + "soyo", + "inhangulsyllables", + "inbamum", + "taitham", + "meroitichieroglyphs", + "intifinagh", + "talu", + "inbengali", + "incjkunifiedideographsextensionf", + "buhd", + "telu", + "inbuginese", + "idstrinaryoperator", + "tirhuta", + "oldturkic", + "incombiningdiacriticalmarks", + "phagspa", + "incombiningdiacriticalmarksforsymbols", + "changeswhencasemapped", + "inlatin1supplement", + "inbrahmi", + "hang", + "nchar", + "oldsogdian", + "deva", + "ingujarati", + "otherlowercase", + "ingunjalagondi", + "devanagari", + "syrc", + "mahj", + "hiragana", + "orya", + "mahajani", + "incurrencysymbols", + "spaceseparator", + "otherletter", + "inlinearbsyllabary", + "inrejang", + "hmng", + "ogrext", + "inaegeannumbers", + "changeswhentitlecased", + "zp", + "mathsymbol", + "khoj", + "incombiningdiacriticalmarkssupplement", + "warangciti", + "syriac", + "finalpunctuation", + "othersymbol", + "currencysymbol", + "digit", + "emojipresentation", + "inpsalterpahlavi", + "softdotted", + "phlp", + "noncharactercodepoint", + "inlimbu", + "nonspacingmark", + "omath", + "cyrillic", + "inenclosedcjklettersandmonths", + "tangut", + "changeswhenlowercased", + "inalphabeticpresentationforms", + "intangutcomponents", + "incombiningdiacriticalmarksextended", + "ogham", + "osmanya", + "intagbanwa", + "inprivateusearea", + "inpaucinhau", + "otheruppercase", + "sylo", + "elba", + "paragraphseparator", + "inbassavah", + "otheridstart", + "signwriting", + "rjng", + "whitespace", + "incjkunifiedideographsextensionb", + "inletterlikesymbols", + "buhid", + "oupper", + "bassavah", + "inhebrew", + "narb", + "inbuhid", + "inbopomofo", + "elbasan", + "incombininghalfmarks", + "inindicsiyaqnumbers", + "changeswhenuppercased", + "inmathematicaloperators", + "inarabicmathematicalalphabeticsymbols", + "hluw", + "hexdigit", + "deprecated", + "insuperscriptsandsubscripts", + "nshu", + "injavanese", + "inbamumsupplement", + "hangul", + "unifiedideograph", + "tavt", + "othermath", + "pahawhhmong", + "sylotinagri", + "hung", + "kayahli", + "inpahawhhmong", + "upper", + "inalchemicalsymbols", + "nbat", + "nabataean", + "uppercase", + "hebr", + "inmahjongtiles", + "oldnortharabian", + "inarabicsupplement", + "tibt", + "tibetan", + "inhighprivateusesurrogates", + "insupplementalarrowsa", + "inarabicpresentationformsb", + "otherdefaultignorablecodepoint", + "symbol", + "inplayingcards", + "inhalfwidthandfullwidthforms", + "wspace", + "tfng", + "insupplementalmathematicaloperators", + "insupplementalarrowsc", + "inhanguljamoextendedb", + "aghb", + "cypriot", + "nushu", + "tifinagh", + "otherpunctuation", + "alphabetic", + "dupl", + "tglg", + "changeswhencasefolded", + "tagalog", + "modifiersymbol", + "any", + "inglagoliticsupplement", + "ethiopic", + "uppercaseletter", + "dashpunctuation", + "hanifirohingya", + "inyijinghexagramsymbols", + "incypriotsyllabary", + "rejang", + "defaultignorablecodepoint", + "tagb", + "dep", + "inyisyllables", + "oldsoutharabian", + "inlatinextendedb", + "insupplementalpunctuation", + "othergraphemeextend", + "hebrew", + "inboxdrawing", + "inhighsurrogates", + "telugu", + "inbopomofoextended", + "soyombo", + "inegyptianhieroglyphs", + "openpunctuation", + "insupplementaryprivateuseareaa", + "hyphen", + "inhangulcompatibilityjamo", + "egyp", + "insupplementalarrowsb", + "duployan", + "insupplementalsymbolsandpictographs", + "zyyy", + "egyptianhieroglyphs", + "insupplementaryprivateuseareab" + }; +#define unicode_prop_name_pool ((const char *) &unicode_prop_name_pool_contents) +static const struct PoolPropertyNameCtype * +unicode_lookup_property_name (register const char *str, register size_t len) +{ + static const struct PoolPropertyNameCtype wordlist[] = + { + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, + + {pool_offset(10), 235}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(17), 124}, + + {pool_offset(18), 257}, + {-1}, {-1}, {-1}, + + {pool_offset(22), 53}, + {-1}, + + {pool_offset(24), 258}, + + {pool_offset(25), 153}, + {-1}, + + {pool_offset(27), 257}, + {-1}, {-1}, + + {pool_offset(30), 40}, + + {pool_offset(31), 141}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(39), 129}, + + {pool_offset(40), 120}, + + {pool_offset(41), 120}, + {-1}, {-1}, {-1}, + + {pool_offset(45), 152}, + + {pool_offset(46), 138}, + + {pool_offset(47), 146}, + {-1}, {-1}, + + {pool_offset(50), 54}, + + {pool_offset(51), 130}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(68), 291}, + {-1}, + + {pool_offset(70), 279}, + + {pool_offset(71), 249}, + {-1}, + + {pool_offset(73), 82}, + {-1}, + + {pool_offset(75), 202}, + {-1}, {-1}, {-1}, + + {pool_offset(79), 124}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(84), 39}, + + {pool_offset(85), 39}, + {-1}, {-1}, {-1}, + + {pool_offset(89), 198}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(95), 203}, + + {pool_offset(96), 112}, + {-1}, {-1}, + + {pool_offset(99), 149}, + {-1}, + + {pool_offset(101), 79}, + + {pool_offset(102), 148}, + {-1}, {-1}, + + {pool_offset(105), 136}, + {-1}, + + {pool_offset(107), 136}, + {-1}, + + {pool_offset(109), 86}, + {-1}, + + {pool_offset(111), 151}, + {-1}, + + {pool_offset(113), 156}, + + {pool_offset(114), 156}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(120), 143}, + {-1}, + + {pool_offset(122), 37}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(132), 45}, + {-1}, {-1}, + + {pool_offset(135), 86}, + {-1}, {-1}, + + {pool_offset(138), 456}, + {-1}, {-1}, + + {pool_offset(141), 140}, + {-1}, + + {pool_offset(143), 442}, + + {pool_offset(144), 273}, + + {pool_offset(145), 459}, + {-1}, {-1}, {-1}, + + {pool_offset(149), 55}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(156), 504}, + + {pool_offset(157), 508}, + {-1}, {-1}, + + {pool_offset(160), 105}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(168), 473}, + {-1}, + + {pool_offset(170), 38}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, + + {pool_offset(181), 196}, + {-1}, + + {pool_offset(183), 128}, + {-1}, {-1}, {-1}, + + {pool_offset(187), 142}, + + {pool_offset(188), 297}, + + {pool_offset(189), 251}, + + {pool_offset(190), 251}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(199), 509}, + {-1}, + + {pool_offset(201), 150}, + {-1}, + + {pool_offset(203), 460}, + + {pool_offset(204), 499}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(210), 497}, + + {pool_offset(211), 305}, + + {pool_offset(212), 433}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(217), 204}, + {-1}, + + {pool_offset(219), 119}, + + {pool_offset(220), 267}, + {-1}, + + {pool_offset(222), 310}, + {-1}, {-1}, + + {pool_offset(225), 174}, + {-1}, + + {pool_offset(227), 136}, + {-1}, + + {pool_offset(229), 487}, + + {pool_offset(230), 43}, + {-1}, + + {pool_offset(232), 302}, + + {pool_offset(233), 145}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, + + {pool_offset(245), 475}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(251), 143}, + + {pool_offset(252), 498}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(257), 138}, + {-1}, {-1}, + + {pool_offset(260), 56}, + + {pool_offset(261), 340}, + + {pool_offset(262), 22}, + {-1}, {-1}, + + {pool_offset(265), 260}, + + {pool_offset(266), 104}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(275), 196}, + + {pool_offset(276), 22}, + {-1}, {-1}, {-1}, + + {pool_offset(280), 280}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(290), 495}, + {-1}, + + {pool_offset(292), 490}, + + {pool_offset(293), 207}, + {-1}, + + {pool_offset(295), 494}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(301), 262}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, + + {pool_offset(314), 57}, + {-1}, {-1}, {-1}, + + {pool_offset(318), 271}, + + {pool_offset(319), 401}, + {-1}, {-1}, {-1}, + + {pool_offset(323), 121}, + {-1}, {-1}, + + {pool_offset(326), 107}, + + {pool_offset(327), 121}, + {-1}, + + {pool_offset(329), 209}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(336), 316}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, + + {pool_offset(347), 204}, + {-1}, + + {pool_offset(349), 278}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(355), 148}, + {-1}, {-1}, + + {pool_offset(358), 276}, + + {pool_offset(359), 205}, + {-1}, + + {pool_offset(361), 294}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(367), 118}, + {-1}, {-1}, {-1}, + + {pool_offset(371), 481}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(376), 371}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(382), 14}, + + {pool_offset(383), 202}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(388), 471}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(393), 21}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, + + {pool_offset(405), 368}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, + + {pool_offset(417), 446}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(423), 140}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(429), 155}, + + {pool_offset(430), 295}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(435), 112}, + {-1}, + + {pool_offset(437), 149}, + {-1}, + + {pool_offset(439), 486}, + {-1}, + + {pool_offset(441), 467}, + + {pool_offset(442), 107}, + {-1}, + + {pool_offset(444), 154}, + {-1}, {-1}, + + {pool_offset(447), 489}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(453), 421}, + {-1}, {-1}, {-1}, + + {pool_offset(457), 425}, + + {pool_offset(458), 415}, + + {pool_offset(459), 103}, + {-1}, {-1}, + + {pool_offset(462), 54}, + + {pool_offset(463), 113}, + {-1}, + + {pool_offset(465), 402}, + {-1}, {-1}, + + {pool_offset(468), 118}, + + {pool_offset(469), 34}, + + {pool_offset(470), 513}, + {-1}, + + {pool_offset(472), 252}, + + {pool_offset(473), 255}, + {-1}, {-1}, {-1}, + + {pool_offset(477), 6}, + + {pool_offset(478), 543}, + {-1}, + + {pool_offset(480), 43}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(487), 527}, + + {pool_offset(488), 85}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(495), 111}, + + {pool_offset(496), 408}, + {-1}, + + {pool_offset(498), 111}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, + + {pool_offset(511), 351}, + {-1}, {-1}, {-1}, + + {pool_offset(515), 192}, + + {pool_offset(516), 432}, + + {pool_offset(517), 538}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(526), 458}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(532), 536}, + + {pool_offset(533), 165}, + {-1}, {-1}, + + {pool_offset(536), 484}, + {-1}, {-1}, + + {pool_offset(539), 255}, + {-1}, {-1}, {-1}, + + {pool_offset(543), 131}, + {-1}, + + {pool_offset(545), 430}, + {-1}, {-1}, + + {pool_offset(548), 48}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(553), 507}, + {-1}, {-1}, + + {pool_offset(556), 206}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(564), 81}, + + {pool_offset(565), 526}, + {-1}, + + {pool_offset(567), 33}, + {-1}, + + {pool_offset(569), 435}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, + + {pool_offset(580), 292}, + + {pool_offset(581), 256}, + + {pool_offset(582), 392}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(588), 150}, + + {pool_offset(589), 427}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(597), 194}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(604), 321}, + {-1}, + + {pool_offset(606), 109}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(611), 468}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(619), 376}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(626), 224}, + {-1}, {-1}, {-1}, + + {pool_offset(630), 193}, + + {pool_offset(631), 132}, + + {pool_offset(632), 549}, + {-1}, {-1}, + + {pool_offset(635), 281}, + + {pool_offset(636), 391}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(641), 101}, + + {pool_offset(642), 222}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(656), 13}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(670), 227}, + + {pool_offset(671), 26}, + + {pool_offset(672), 457}, + {-1}, {-1}, + + {pool_offset(675), 194}, + + {pool_offset(676), 518}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(690), 99}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(699), 531}, + {-1}, + + {pool_offset(701), 27}, + {-1}, + + {pool_offset(703), 315}, + {-1}, + + {pool_offset(705), 172}, + {-1}, + + {pool_offset(707), 349}, + {-1}, {-1}, + + {pool_offset(710), 344}, + + {pool_offset(711), 84}, + + {pool_offset(712), 512}, + {-1}, {-1}, {-1}, + + {pool_offset(716), 357}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(721), 535}, + {-1}, + + {pool_offset(723), 249}, + + {pool_offset(724), 389}, + + {pool_offset(725), 102}, + {-1}, {-1}, {-1}, + + {pool_offset(729), 260}, + + {pool_offset(730), 265}, + + {pool_offset(731), 127}, + + {pool_offset(732), 314}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(738), 343}, + {-1}, + + {pool_offset(740), 212}, + + {pool_offset(741), 28}, + + {pool_offset(742), 213}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, + + {pool_offset(753), 126}, + {-1}, {-1}, + + {pool_offset(756), 7}, + + {pool_offset(757), 213}, + + {pool_offset(758), 406}, + + {pool_offset(759), 318}, + + {pool_offset(760), 195}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(767), 28}, + {-1}, {-1}, + + {pool_offset(770), 223}, + {-1}, {-1}, + + {pool_offset(773), 25}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(778), 519}, + + {pool_offset(779), 248}, + {-1}, + + {pool_offset(781), 521}, + + {pool_offset(782), 179}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(791), 364}, + {-1}, + + {pool_offset(793), 29}, + + {pool_offset(794), 438}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(801), 25}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(806), 215}, + + {pool_offset(807), 289}, + + {pool_offset(808), 453}, + + {pool_offset(809), 478}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(814), 88}, + {-1}, {-1}, + + {pool_offset(817), 2}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(823), 480}, + + {pool_offset(824), 155}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(833), 500}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(838), 394}, + + {pool_offset(839), 79}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(846), 105}, + {-1}, {-1}, + + {pool_offset(849), 443}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(854), 334}, + {-1}, {-1}, + + {pool_offset(857), 445}, + {-1}, + + {pool_offset(859), 197}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(866), 38}, + + {pool_offset(867), 80}, + {-1}, {-1}, + + {pool_offset(870), 268}, + + {pool_offset(871), 101}, + {-1}, {-1}, {-1}, + + {pool_offset(875), 464}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(884), 152}, + + {pool_offset(885), 109}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(890), 100}, + {-1}, + + {pool_offset(892), 466}, + + {pool_offset(893), 180}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(898), 325}, + {-1}, + + {pool_offset(900), 298}, + {-1}, + + {pool_offset(902), 53}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(907), 127}, + + {pool_offset(908), 71}, + {-1}, {-1}, {-1}, + + {pool_offset(912), 440}, + {-1}, {-1}, {-1}, + + {pool_offset(916), 429}, + + {pool_offset(917), 311}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(922), 52}, + + {pool_offset(923), 52}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(928), 370}, + {-1}, + + {pool_offset(930), 201}, + + {pool_offset(931), 142}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(937), 58}, + + {pool_offset(938), 46}, + {-1}, + + {pool_offset(940), 45}, + {-1}, {-1}, + + {pool_offset(943), 404}, + + {pool_offset(944), 359}, + {-1}, {-1}, + + {pool_offset(947), 110}, + {-1}, {-1}, {-1}, + + {pool_offset(951), 83}, + + {pool_offset(952), 102}, + + {pool_offset(953), 181}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(962), 16}, + {-1}, {-1}, + + {pool_offset(965), 474}, + + {pool_offset(966), 41}, + {-1}, {-1}, + + {pool_offset(969), 211}, + + {pool_offset(970), 221}, + + {pool_offset(971), 141}, + + {pool_offset(972), 304}, + + {pool_offset(973), 85}, + {-1}, {-1}, + + {pool_offset(976), 286}, + + {pool_offset(977), 50}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(982), 116}, + + {pool_offset(983), 114}, + {-1}, {-1}, {-1}, + + {pool_offset(987), 157}, + {-1}, + + {pool_offset(989), 88}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(995), 119}, + {-1}, + + {pool_offset(997), 300}, + {-1}, + + {pool_offset(999), 324}, + + {pool_offset(1000), 252}, + {-1}, {-1}, + + {pool_offset(1003), 117}, + + {pool_offset(1004), 522}, + {-1}, {-1}, + + {pool_offset(1007), 130}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, + + {pool_offset(1020), 293}, + {-1}, {-1}, {-1}, + + {pool_offset(1024), 31}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1034), 66}, + + {pool_offset(1035), 472}, + + {pool_offset(1036), 19}, + {-1}, + + {pool_offset(1038), 413}, + {-1}, + + {pool_offset(1040), 62}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1048), 17}, + {-1}, + + {pool_offset(1050), 345}, + {-1}, + + {pool_offset(1052), 16}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1060), 479}, + + {pool_offset(1061), 3}, + + {pool_offset(1062), 256}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1067), 11}, + {-1}, + + {pool_offset(1069), 201}, + {-1}, + + {pool_offset(1071), 73}, + + {pool_offset(1072), 115}, + + {pool_offset(1073), 483}, + {-1}, {-1}, {-1}, + + {pool_offset(1077), 49}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1082), 26}, + {-1}, {-1}, {-1}, + + {pool_offset(1086), 270}, + + {pool_offset(1087), 342}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, + + {pool_offset(1100), 216}, + + {pool_offset(1101), 106}, + + {pool_offset(1102), 332}, + + {pool_offset(1103), 114}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, + + {pool_offset(1125), 211}, + {-1}, + + {pool_offset(1127), 183}, + + {pool_offset(1128), 15}, + {-1}, {-1}, {-1}, + + {pool_offset(1132), 115}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1138), 272}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1145), 407}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1153), 454}, + {-1}, {-1}, + + {pool_offset(1156), 146}, + + {pool_offset(1157), 80}, + {-1}, {-1}, + + {pool_offset(1160), 367}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1165), 144}, + + {pool_offset(1166), 207}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1172), 81}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1179), 74}, + + {pool_offset(1180), 247}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1185), 133}, + {-1}, {-1}, {-1}, + + {pool_offset(1189), 208}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1198), 380}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1203), 29}, + {-1}, + + {pool_offset(1205), 34}, + {-1}, + + {pool_offset(1207), 159}, + {-1}, + + {pool_offset(1209), 229}, + + {pool_offset(1210), 170}, + {-1}, + + {pool_offset(1212), 547}, + + {pool_offset(1213), 66}, + {-1}, {-1}, {-1}, + + {pool_offset(1217), 82}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1223), 533}, + {-1}, {-1}, {-1}, + + {pool_offset(1227), 170}, + + {pool_offset(1228), 185}, + + {pool_offset(1229), 187}, + + {pool_offset(1230), 209}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1239), 166}, + + {pool_offset(1240), 482}, + {-1}, + + {pool_offset(1242), 451}, + + {pool_offset(1243), 214}, + + {pool_offset(1244), 110}, + {-1}, + + {pool_offset(1246), 348}, + {-1}, {-1}, {-1}, + + {pool_offset(1250), 89}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1256), 333}, + {-1}, + + {pool_offset(1258), 195}, + {-1}, + + {pool_offset(1260), 175}, + {-1}, {-1}, + + {pool_offset(1263), 190}, + + {pool_offset(1264), 106}, + + {pool_offset(1265), 164}, + + {pool_offset(1266), 164}, + {-1}, {-1}, {-1}, + + {pool_offset(1270), 186}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1276), 488}, + {-1}, {-1}, {-1}, + + {pool_offset(1280), 452}, + {-1}, {-1}, + + {pool_offset(1283), 8}, + + {pool_offset(1284), 123}, + {-1}, + + {pool_offset(1286), 89}, + + {pool_offset(1287), 157}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1293), 33}, + {-1}, {-1}, {-1}, + + {pool_offset(1297), 234}, + {-1}, + + {pool_offset(1299), 465}, + {-1}, + + {pool_offset(1301), 237}, + {-1}, + + {pool_offset(1303), 31}, + + {pool_offset(1304), 386}, + + {pool_offset(1305), 545}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1314), 534}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1320), 161}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, + + {pool_offset(1331), 122}, + {-1}, + + {pool_offset(1333), 105}, + {-1}, {-1}, {-1}, + + {pool_offset(1337), 382}, + + {pool_offset(1338), 84}, + + {pool_offset(1339), 214}, + {-1}, {-1}, {-1}, + + {pool_offset(1343), 40}, + + {pool_offset(1344), 72}, + + {pool_offset(1345), 237}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1360), 502}, + {-1}, {-1}, + + {pool_offset(1363), 537}, + {-1}, {-1}, + + {pool_offset(1366), 431}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1371), 469}, + + {pool_offset(1372), 350}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1390), 225}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1395), 259}, + {-1}, + + {pool_offset(1397), 476}, + + {pool_offset(1398), 103}, + + {pool_offset(1399), 219}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1404), 125}, + {-1}, {-1}, + + {pool_offset(1407), 226}, + + {pool_offset(1408), 30}, + {-1}, {-1}, + + {pool_offset(1411), 176}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1420), 30}, + {-1}, {-1}, + + {pool_offset(1423), 241}, + {-1}, + + {pool_offset(1425), 327}, + {-1}, {-1}, + + {pool_offset(1428), 550}, + {-1}, {-1}, {-1}, + + {pool_offset(1432), 450}, + {-1}, {-1}, + + {pool_offset(1435), 221}, + {-1}, {-1}, + + {pool_offset(1438), 218}, + {-1}, + + {pool_offset(1440), 493}, + + {pool_offset(1441), 444}, + + {pool_offset(1442), 448}, + {-1}, {-1}, {-1}, + + {pool_offset(1446), 441}, + {-1}, + + {pool_offset(1448), 510}, + {-1}, {-1}, + + {pool_offset(1451), 516}, + {-1}, {-1}, + + {pool_offset(1454), 374}, + + {pool_offset(1455), 216}, + {-1}, {-1}, + + {pool_offset(1458), 147}, + {-1}, {-1}, + + {pool_offset(1461), 56}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1466), 125}, + {-1}, + + {pool_offset(1468), 147}, + {-1}, + + {pool_offset(1470), 405}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1478), 307}, + {-1}, {-1}, {-1}, + + {pool_offset(1482), 90}, + + {pool_offset(1483), 47}, + {-1}, {-1}, {-1}, + + {pool_offset(1487), 90}, + {-1}, {-1}, + + {pool_offset(1490), 123}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1497), 93}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1504), 540}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1520), 93}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1528), 390}, + {-1}, + + {pool_offset(1530), 275}, + + {pool_offset(1531), 51}, + {-1}, {-1}, + + {pool_offset(1534), 15}, + {-1}, {-1}, + + {pool_offset(1537), 461}, + {-1}, + + {pool_offset(1539), 44}, + + {pool_offset(1540), 462}, + {-1}, {-1}, + + {pool_offset(1543), 97}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1549), 64}, + {-1}, + + {pool_offset(1551), 56}, + + {pool_offset(1552), 247}, + {-1}, {-1}, + + {pool_offset(1555), 163}, + {-1}, + + {pool_offset(1557), 21}, + + {pool_offset(1558), 477}, + + {pool_offset(1559), 175}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1569), 190}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, + + {pool_offset(1580), 64}, + + {pool_offset(1581), 162}, + + {pool_offset(1582), 0}, + {-1}, + + {pool_offset(1584), 78}, + {-1}, + + {pool_offset(1586), 229}, + + {pool_offset(1587), 169}, + {-1}, + + {pool_offset(1589), 263}, + + {pool_offset(1590), 417}, + {-1}, {-1}, + + {pool_offset(1593), 59}, + + {pool_offset(1594), 104}, + {-1}, {-1}, + + {pool_offset(1597), 546}, + + {pool_offset(1598), 23}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1605), 236}, + {-1}, {-1}, + + {pool_offset(1608), 514}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1618), 288}, + {-1}, {-1}, {-1}, + + {pool_offset(1622), 253}, + {-1}, + + {pool_offset(1624), 108}, + {-1}, + + {pool_offset(1626), 227}, + {-1}, + + {pool_offset(1628), 396}, + {-1}, + + {pool_offset(1630), 178}, + {-1}, {-1}, + + {pool_offset(1633), 198}, + {-1}, {-1}, + + {pool_offset(1636), 83}, + {-1}, + + {pool_offset(1638), 234}, + {-1}, + + {pool_offset(1640), 32}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1659), 108}, + {-1}, + + {pool_offset(1661), 180}, + + {pool_offset(1662), 174}, + {-1}, {-1}, + + {pool_offset(1665), 439}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, + + {pool_offset(1677), 200}, + + {pool_offset(1678), 1}, + {-1}, + + {pool_offset(1680), 134}, + + {pool_offset(1681), 134}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1687), 377}, + {-1}, {-1}, + + {pool_offset(1690), 369}, + + {pool_offset(1691), 299}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1697), 398}, + {-1}, {-1}, {-1}, + + {pool_offset(1701), 24}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1708), 449}, + + {pool_offset(1709), 323}, + + {pool_offset(1710), 284}, + {-1}, {-1}, + + {pool_offset(1713), 238}, + + {pool_offset(1714), 220}, + {-1}, {-1}, + + {pool_offset(1717), 347}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1726), 385}, + {-1}, + + {pool_offset(1728), 158}, + {-1}, {-1}, + + {pool_offset(1731), 158}, + {-1}, + + {pool_offset(1733), 5}, + {-1}, {-1}, + + {pool_offset(1736), 58}, + + {pool_offset(1737), 78}, + {-1}, {-1}, {-1}, + + {pool_offset(1741), 329}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1749), 485}, + + {pool_offset(1750), 32}, + {-1}, {-1}, {-1}, + + {pool_offset(1754), 296}, + {-1}, {-1}, {-1}, + + {pool_offset(1758), 339}, + + {pool_offset(1759), 218}, + + {pool_offset(1760), 322}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1765), 437}, + + {pool_offset(1766), 360}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1776), 418}, + {-1}, {-1}, + + {pool_offset(1779), 491}, + {-1}, {-1}, + + {pool_offset(1782), 241}, + + {pool_offset(1783), 35}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1791), 282}, + {-1}, + + {pool_offset(1793), 226}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1798), 94}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1807), 517}, + {-1}, + + {pool_offset(1809), 320}, + {-1}, + + {pool_offset(1811), 35}, + {-1}, {-1}, {-1}, + + {pool_offset(1815), 554}, + {-1}, + + {pool_offset(1817), 301}, + {-1}, {-1}, + + {pool_offset(1820), 358}, + {-1}, {-1}, {-1}, + + {pool_offset(1824), 361}, + {-1}, + + {pool_offset(1826), 9}, + + {pool_offset(1827), 217}, + {-1}, + + {pool_offset(1829), 67}, + + {pool_offset(1830), 24}, + {-1}, {-1}, {-1}, + + {pool_offset(1834), 96}, + {-1}, {-1}, + + {pool_offset(1837), 303}, + + {pool_offset(1838), 419}, + + {pool_offset(1839), 145}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1845), 283}, + {-1}, {-1}, {-1}, + + {pool_offset(1849), 94}, + + {pool_offset(1850), 128}, + {-1}, + + {pool_offset(1852), 400}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1858), 379}, + {-1}, + + {pool_offset(1860), 117}, + {-1}, {-1}, + + {pool_offset(1863), 328}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1868), 363}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1875), 326}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1883), 217}, + {-1}, {-1}, {-1}, + + {pool_offset(1887), 67}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1892), 290}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1898), 355}, + + {pool_offset(1899), 520}, + {-1}, {-1}, + + {pool_offset(1902), 172}, + {-1}, + + {pool_offset(1904), 353}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1911), 182}, + {-1}, + + {pool_offset(1913), 523}, + {-1}, + + {pool_offset(1915), 330}, + + {pool_offset(1916), 306}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1921), 524}, + {-1}, + + {pool_offset(1923), 219}, + {-1}, {-1}, {-1}, + + {pool_offset(1927), 403}, + {-1}, {-1}, {-1}, + + {pool_offset(1931), 165}, + {-1}, {-1}, + + {pool_offset(1934), 258}, + {-1}, {-1}, {-1}, + + {pool_offset(1938), 76}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1943), 193}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1948), 92}, + {-1}, + + {pool_offset(1950), 551}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1956), 384}, + + {pool_offset(1957), 185}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1964), 99}, + + {pool_offset(1965), 422}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1972), 135}, + + {pool_offset(1973), 135}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1978), 37}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1987), 166}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, + + {pool_offset(1999), 60}, + {-1}, {-1}, {-1}, + + {pool_offset(2003), 161}, + {-1}, {-1}, + + {pool_offset(2006), 515}, + {-1}, + + {pool_offset(2008), 61}, + {-1}, + + {pool_offset(2010), 259}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2016), 434}, + {-1}, {-1}, {-1}, + + {pool_offset(2020), 159}, + {-1}, {-1}, + + {pool_offset(2023), 393}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2032), 139}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2037), 139}, + + {pool_offset(2038), 12}, + {-1}, + + {pool_offset(2040), 177}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2047), 239}, + {-1}, {-1}, + + {pool_offset(2050), 182}, + + {pool_offset(2051), 233}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2057), 122}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2062), 57}, + + {pool_offset(2063), 192}, + + {pool_offset(2064), 44}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2070), 436}, + + {pool_offset(2071), 455}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2077), 238}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2084), 171}, + + {pool_offset(2085), 132}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2092), 242}, + {-1}, {-1}, + + {pool_offset(2095), 312}, + {-1}, + + {pool_offset(2097), 242}, + {-1}, + + {pool_offset(2099), 243}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2109), 199}, + + {pool_offset(2110), 77}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, + + {pool_offset(2121), 366}, + {-1}, {-1}, + + {pool_offset(2124), 395}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2133), 87}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, + + {pool_offset(2144), 87}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2158), 246}, + {-1}, + + {pool_offset(2160), 42}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2178), 387}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2187), 228}, + + {pool_offset(2188), 409}, + {-1}, + + {pool_offset(2190), 388}, + + {pool_offset(2191), 235}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2196), 151}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2213), 362}, + + {pool_offset(2214), 162}, + {-1}, {-1}, + + {pool_offset(2217), 285}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2222), 548}, + + {pool_offset(2223), 36}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2228), 240}, + + {pool_offset(2229), 317}, + {-1}, {-1}, + + {pool_offset(2232), 100}, + + {pool_offset(2233), 246}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2238), 178}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2245), 269}, + {-1}, {-1}, {-1}, + + {pool_offset(2249), 200}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2255), 337}, + {-1}, {-1}, + + {pool_offset(2258), 48}, + + {pool_offset(2259), 264}, + {-1}, + + {pool_offset(2261), 470}, + {-1}, + + {pool_offset(2263), 91}, + + {pool_offset(2264), 167}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, + + {pool_offset(2286), 176}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, + + {pool_offset(2299), 65}, + {-1}, + + {pool_offset(2301), 287}, + {-1}, {-1}, {-1}, + + {pool_offset(2305), 187}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2311), 496}, + {-1}, {-1}, {-1}, + + {pool_offset(2315), 65}, + {-1}, {-1}, {-1}, + + {pool_offset(2319), 231}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2325), 137}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2330), 97}, + {-1}, {-1}, + + {pool_offset(2333), 179}, + {-1}, {-1}, + + {pool_offset(2336), 137}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2341), 336}, + + {pool_offset(2342), 262}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2347), 129}, + + {pool_offset(2348), 426}, + {-1}, {-1}, + + {pool_offset(2351), 397}, + + {pool_offset(2352), 191}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2357), 184}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2376), 428}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, + + {pool_offset(2389), 50}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, + + {pool_offset(2409), 261}, + {-1}, + + {pool_offset(2411), 223}, + {-1}, {-1}, + + {pool_offset(2414), 116}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2419), 331}, + {-1}, + + {pool_offset(2421), 253}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2428), 231}, + + {pool_offset(2429), 199}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2437), 224}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2444), 215}, + + {pool_offset(2445), 4}, + {-1}, {-1}, {-1}, + + {pool_offset(2449), 75}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2455), 463}, + + {pool_offset(2456), 225}, + {-1}, {-1}, {-1}, + + {pool_offset(2460), 206}, + + {pool_offset(2461), 167}, + {-1}, {-1}, + + {pool_offset(2464), 313}, + + {pool_offset(2465), 153}, + {-1}, + + {pool_offset(2467), 188}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2473), 60}, + {-1}, {-1}, + + {pool_offset(2476), 378}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2482), 239}, + {-1}, + + {pool_offset(2484), 49}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, + + {pool_offset(2496), 416}, + {-1}, {-1}, {-1}, + + {pool_offset(2500), 511}, + {-1}, {-1}, + + {pool_offset(2503), 319}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2508), 169}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2518), 181}, + {-1}, {-1}, + + {pool_offset(2521), 309}, + {-1}, {-1}, {-1}, + + {pool_offset(2525), 414}, + {-1}, {-1}, {-1}, + + {pool_offset(2529), 492}, + {-1}, {-1}, + + {pool_offset(2532), 189}, + + {pool_offset(2533), 230}, + {-1}, {-1}, {-1}, + + {pool_offset(2537), 70}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2553), 261}, + + {pool_offset(2554), 505}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2559), 186}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2567), 220}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2576), 210}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2584), 254}, + + {pool_offset(2585), 544}, + + {pool_offset(2586), 338}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-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(2623), 36}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2642), 189}, + {-1}, + + {pool_offset(2644), 27}, + {-1}, {-1}, + + {pool_offset(2647), 274}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2653), 173}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2659), 308}, + {-1}, {-1}, + + {pool_offset(2662), 372}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-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), 70}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2700), 420}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2707), 528}, + {-1}, {-1}, {-1}, + + {pool_offset(2711), 51}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-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(2743), 341}, + {-1}, + + {pool_offset(2745), 529}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2764), 19}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2770), 96}, + + {pool_offset(2771), 63}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2776), 335}, + + {pool_offset(2777), 168}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2782), 399}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2790), 503}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2798), 91}, + {-1}, {-1}, {-1}, {-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(2826), 248}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2831), 236}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, + + {pool_offset(2843), 188}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2849), 191}, + + {pool_offset(2850), 230}, + {-1}, {-1}, + + {pool_offset(2853), 171}, + {-1}, {-1}, + + {pool_offset(2856), 113}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2861), 506}, + {-1}, + + {pool_offset(2863), 10}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, + + {pool_offset(2884), 539}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2907), 160}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2915), 160}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2929), 250}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2937), 95}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2947), 530}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2954), 173}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2963), 277}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2968), 244}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2974), 244}, + + {pool_offset(2975), 412}, + + {pool_offset(2976), 352}, + + {pool_offset(2977), 423}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2986), 183}, + + {pool_offset(2987), 212}, + {-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(3012), 532}, + + {pool_offset(3013), 424}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-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(3052), 254}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(3071), 245}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(3080), 356}, + {-1}, {-1}, + + {pool_offset(3083), 541}, + + {pool_offset(3084), 410}, + {-1}, {-1}, {-1}, {-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(3112), 42}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(3120), 59}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(3127), 168}, + {-1}, {-1}, + + {pool_offset(3130), 245}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(3139), 203}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-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(3177), 18}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(3184), 68}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(3190), 232}, + {-1}, {-1}, + + {pool_offset(3193), 47}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(3210), 232}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(3228), 222}, + {-1}, {-1}, + + {pool_offset(3231), 20}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(3239), 525}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(3262), 76}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-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(3293), 133}, + {-1}, {-1}, {-1}, + + {pool_offset(3297), 197}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(3304), 92}, + {-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(3328), 381}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(3337), 447}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-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(3375), 210}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-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(3426), 62}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(3431), 233}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(3447), 63}, + {-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(3471), 383}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(3485), 177}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(3504), 266}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(3514), 365}, + {-1}, {-1}, + + {pool_offset(3517), 184}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-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(3562), 95}, + {-1}, + + {pool_offset(3564), 346}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(3570), 411}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-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(3603), 240}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, + + {pool_offset(3623), 375}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-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(3666), 228}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-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(3764), 501}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-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(4052), 205}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-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(4129), 552}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-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(4261), 98}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(4277), 373}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-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(4332), 69}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-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(4363), 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}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(4404), 68}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-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(4639), 542}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-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(4682), 55}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-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(5231), 69}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-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(5516), 553} + }; + + if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH) + { + register unsigned int key = hash (str, len); + + if (key <= MAX_HASH_VALUE) + { + register int o = wordlist[key].name; + if (o >= 0) + { + register const char *s = o + unicode_prop_name_pool; + + if ((((unsigned char)*str ^ (unsigned char)*s) & ~32) == 0 && !gperf_case_strncmp (str, s, len) && s[len] == '\0') + return &wordlist[key]; + } + } + } + return 0; +} + + + +#define UNICODE_PROPERTY_VERSION 11_0_0 + +#define PROPERTY_NAME_MAX_SIZE 59 +#define CODE_RANGES_NUM 555 + +#define PROP_INDEX_NEWLINE 0 +#define PROP_INDEX_ALPHA 1 +#define PROP_INDEX_BLANK 2 +#define PROP_INDEX_CNTRL 3 +#define PROP_INDEX_DIGIT 4 +#define PROP_INDEX_GRAPH 5 +#define PROP_INDEX_LOWER 6 +#define PROP_INDEX_PRINT 7 +#define PROP_INDEX_PUNCT 8 +#define PROP_INDEX_SPACE 9 +#define PROP_INDEX_UPPER 10 +#define PROP_INDEX_XDIGIT 11 +#define PROP_INDEX_WORD 12 +#define PROP_INDEX_ALNUM 13 +#define PROP_INDEX_ASCII 14 +#define PROP_INDEX_ASCIIHEXDIGIT 15 +#define PROP_INDEX_AHEX 15 +#define PROP_INDEX_ADLM 16 +#define PROP_INDEX_ADLAM 16 +#define PROP_INDEX_AHOM 17 +#define PROP_INDEX_ALPHABETIC 18 +#define PROP_INDEX_ANATOLIANHIEROGLYPHS 19 +#define PROP_INDEX_HLUW 19 +#define PROP_INDEX_ANY 20 +#define PROP_INDEX_ARAB 21 +#define PROP_INDEX_ARABIC 21 +#define PROP_INDEX_ARMN 22 +#define PROP_INDEX_ARMENIAN 22 +#define PROP_INDEX_ASSIGNED 23 +#define PROP_INDEX_AVST 24 +#define PROP_INDEX_AVESTAN 24 +#define PROP_INDEX_BALINESE 25 +#define PROP_INDEX_BALI 25 +#define PROP_INDEX_BAMUM 26 +#define PROP_INDEX_BAMU 26 +#define PROP_INDEX_BASSAVAH 27 +#define PROP_INDEX_BASS 27 +#define PROP_INDEX_BATAK 28 +#define PROP_INDEX_BATK 28 +#define PROP_INDEX_BENG 29 +#define PROP_INDEX_BENGALI 29 +#define PROP_INDEX_BHKS 30 +#define PROP_INDEX_BHAIKSUKI 30 +#define PROP_INDEX_BIDICONTROL 31 +#define PROP_INDEX_BIDIC 31 +#define PROP_INDEX_BOPO 32 +#define PROP_INDEX_BOPOMOFO 32 +#define PROP_INDEX_BRAHMI 33 +#define PROP_INDEX_BRAH 33 +#define PROP_INDEX_BRAI 34 +#define PROP_INDEX_BRAILLE 34 +#define PROP_INDEX_BUGI 35 +#define PROP_INDEX_BUGINESE 35 +#define PROP_INDEX_BUHD 36 +#define PROP_INDEX_BUHID 36 +#define PROP_INDEX_C 37 +#define PROP_INDEX_OTHER 37 +#define PROP_INDEX_CANS 38 +#define PROP_INDEX_CANADIANABORIGINAL 38 +#define PROP_INDEX_CARI 39 +#define PROP_INDEX_CARIAN 39 +#define PROP_INDEX_CI 40 +#define PROP_INDEX_CASEIGNORABLE 40 +#define PROP_INDEX_CASED 41 +#define PROP_INDEX_AGHB 42 +#define PROP_INDEX_CAUCASIANALBANIAN 42 +#define PROP_INDEX_CONTROL 43 +#define PROP_INDEX_CC 43 +#define PROP_INDEX_CF 44 +#define PROP_INDEX_FORMAT 44 +#define PROP_INDEX_CHAKMA 45 +#define PROP_INDEX_CAKM 45 +#define PROP_INDEX_CHAM 46 +#define PROP_INDEX_CWCF 47 +#define PROP_INDEX_CHANGESWHENCASEFOLDED 47 +#define PROP_INDEX_CWCM 48 +#define PROP_INDEX_CHANGESWHENCASEMAPPED 48 +#define PROP_INDEX_CWL 49 +#define PROP_INDEX_CHANGESWHENLOWERCASED 49 +#define PROP_INDEX_CWT 50 +#define PROP_INDEX_CHANGESWHENTITLECASED 50 +#define PROP_INDEX_CWU 51 +#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_EMOJI 71 +#define PROP_INDEX_EMOJICOMPONENT 72 +#define PROP_INDEX_EMOJIMODIFIER 73 +#define PROP_INDEX_EMOJIMODIFIERBASE 74 +#define PROP_INDEX_EMOJIPRESENTATION 75 +#define PROP_INDEX_ETHIOPIC 76 +#define PROP_INDEX_ETHI 76 +#define PROP_INDEX_EXTENDEDPICTOGRAPHIC 77 +#define PROP_INDEX_EXT 78 +#define PROP_INDEX_EXTENDER 78 +#define PROP_INDEX_GEORGIAN 79 +#define PROP_INDEX_GEOR 79 +#define PROP_INDEX_GLAG 80 +#define PROP_INDEX_GLAGOLITIC 80 +#define PROP_INDEX_GOTH 81 +#define PROP_INDEX_GOTHIC 81 +#define PROP_INDEX_GRAN 82 +#define PROP_INDEX_GRANTHA 82 +#define PROP_INDEX_GRBASE 83 +#define PROP_INDEX_GRAPHEMEBASE 83 +#define PROP_INDEX_GREXT 84 +#define PROP_INDEX_GRAPHEMEEXTEND 84 +#define PROP_INDEX_GRAPHEMELINK 85 +#define PROP_INDEX_GRLINK 85 +#define PROP_INDEX_GREEK 86 +#define PROP_INDEX_GREK 86 +#define PROP_INDEX_GUJARATI 87 +#define PROP_INDEX_GUJR 87 +#define PROP_INDEX_GUNJALAGONDI 88 +#define PROP_INDEX_GONG 88 +#define PROP_INDEX_GURU 89 +#define PROP_INDEX_GURMUKHI 89 +#define PROP_INDEX_HANI 90 +#define PROP_INDEX_HAN 90 +#define PROP_INDEX_HANG 91 +#define PROP_INDEX_HANGUL 91 +#define PROP_INDEX_HANIFIROHINGYA 92 +#define PROP_INDEX_ROHG 92 +#define PROP_INDEX_HANUNOO 93 +#define PROP_INDEX_HANO 93 +#define PROP_INDEX_HATR 94 +#define PROP_INDEX_HATRAN 94 +#define PROP_INDEX_HEBREW 95 +#define PROP_INDEX_HEBR 95 +#define PROP_INDEX_HEXDIGIT 96 +#define PROP_INDEX_HEX 96 +#define PROP_INDEX_HIRAGANA 97 +#define PROP_INDEX_HIRA 97 +#define PROP_INDEX_HYPHEN 98 +#define PROP_INDEX_IDSB 99 +#define PROP_INDEX_IDSBINARYOPERATOR 99 +#define PROP_INDEX_IDST 100 +#define PROP_INDEX_IDSTRINARYOPERATOR 100 +#define PROP_INDEX_IDCONTINUE 101 +#define PROP_INDEX_IDC 101 +#define PROP_INDEX_IDS 102 +#define PROP_INDEX_IDSTART 102 +#define PROP_INDEX_IDEO 103 +#define PROP_INDEX_IDEOGRAPHIC 103 +#define PROP_INDEX_ARMI 104 +#define PROP_INDEX_IMPERIALARAMAIC 104 +#define PROP_INDEX_ZINH 105 +#define PROP_INDEX_INHERITED 105 +#define PROP_INDEX_QAAI 105 +#define PROP_INDEX_PHLI 106 +#define PROP_INDEX_INSCRIPTIONALPAHLAVI 106 +#define PROP_INDEX_INSCRIPTIONALPARTHIAN 107 +#define PROP_INDEX_PRTI 107 +#define PROP_INDEX_JAVANESE 108 +#define PROP_INDEX_JAVA 108 +#define PROP_INDEX_JOINC 109 +#define PROP_INDEX_JOINCONTROL 109 +#define PROP_INDEX_KAITHI 110 +#define PROP_INDEX_KTHI 110 +#define PROP_INDEX_KNDA 111 +#define PROP_INDEX_KANNADA 111 +#define PROP_INDEX_KATAKANA 112 +#define PROP_INDEX_KANA 112 +#define PROP_INDEX_KAYAHLI 113 +#define PROP_INDEX_KALI 113 +#define PROP_INDEX_KHAROSHTHI 114 +#define PROP_INDEX_KHAR 114 +#define PROP_INDEX_KHMR 115 +#define PROP_INDEX_KHMER 115 +#define PROP_INDEX_KHOJ 116 +#define PROP_INDEX_KHOJKI 116 +#define PROP_INDEX_KHUDAWADI 117 +#define PROP_INDEX_SIND 117 +#define PROP_INDEX_L 118 +#define PROP_INDEX_LETTER 118 +#define PROP_INDEX_LC 119 +#define PROP_INDEX_CASEDLETTER 119 +#define PROP_INDEX_LAO 120 +#define PROP_INDEX_LAOO 120 +#define PROP_INDEX_LATN 121 +#define PROP_INDEX_LATIN 121 +#define PROP_INDEX_LEPC 122 +#define PROP_INDEX_LEPCHA 122 +#define PROP_INDEX_LIMBU 123 +#define PROP_INDEX_LIMB 123 +#define PROP_INDEX_LINA 124 +#define PROP_INDEX_LINEARA 124 +#define PROP_INDEX_LINB 125 +#define PROP_INDEX_LINEARB 125 +#define PROP_INDEX_LISU 126 +#define PROP_INDEX_LOWERCASELETTER 127 +#define PROP_INDEX_LL 127 +#define PROP_INDEX_LM 128 +#define PROP_INDEX_MODIFIERLETTER 128 +#define PROP_INDEX_LO 129 +#define PROP_INDEX_OTHERLETTER 129 +#define PROP_INDEX_LOGICALORDEREXCEPTION 130 +#define PROP_INDEX_LOE 130 +#define PROP_INDEX_LOWERCASE 131 +#define PROP_INDEX_LT 132 +#define PROP_INDEX_TITLECASELETTER 132 +#define PROP_INDEX_UPPERCASELETTER 133 +#define PROP_INDEX_LU 133 +#define PROP_INDEX_LYCI 134 +#define PROP_INDEX_LYCIAN 134 +#define PROP_INDEX_LYDI 135 +#define PROP_INDEX_LYDIAN 135 +#define PROP_INDEX_M 136 +#define PROP_INDEX_COMBININGMARK 136 +#define PROP_INDEX_MARK 136 +#define PROP_INDEX_MAHJ 137 +#define PROP_INDEX_MAHAJANI 137 +#define PROP_INDEX_MAKASAR 138 +#define PROP_INDEX_MAKA 138 +#define PROP_INDEX_MALAYALAM 139 +#define PROP_INDEX_MLYM 139 +#define PROP_INDEX_MAND 140 +#define PROP_INDEX_MANDAIC 140 +#define PROP_INDEX_MANI 141 +#define PROP_INDEX_MANICHAEAN 141 +#define PROP_INDEX_MARC 142 +#define PROP_INDEX_MARCHEN 142 +#define PROP_INDEX_MASARAMGONDI 143 +#define PROP_INDEX_GONM 143 +#define PROP_INDEX_MATH 144 +#define PROP_INDEX_MC 145 +#define PROP_INDEX_SPACINGMARK 145 +#define PROP_INDEX_ENCLOSINGMARK 146 +#define PROP_INDEX_ME 146 +#define PROP_INDEX_MEDEFAIDRIN 147 +#define PROP_INDEX_MEDF 147 +#define PROP_INDEX_MEETEIMAYEK 148 +#define PROP_INDEX_MTEI 148 +#define PROP_INDEX_MENDEKIKAKUI 149 +#define PROP_INDEX_MEND 149 +#define PROP_INDEX_MEROITICCURSIVE 150 +#define PROP_INDEX_MERC 150 +#define PROP_INDEX_MEROITICHIEROGLYPHS 151 +#define PROP_INDEX_MERO 151 +#define PROP_INDEX_PLRD 152 +#define PROP_INDEX_MIAO 152 +#define PROP_INDEX_MN 153 +#define PROP_INDEX_NONSPACINGMARK 153 +#define PROP_INDEX_MODI 154 +#define PROP_INDEX_MONGOLIAN 155 +#define PROP_INDEX_MONG 155 +#define PROP_INDEX_MRO 156 +#define PROP_INDEX_MROO 156 +#define PROP_INDEX_MULT 157 +#define PROP_INDEX_MULTANI 157 +#define PROP_INDEX_MYANMAR 158 +#define PROP_INDEX_MYMR 158 +#define PROP_INDEX_NUMBER 159 +#define PROP_INDEX_N 159 +#define PROP_INDEX_NABATAEAN 160 +#define PROP_INDEX_NBAT 160 +#define PROP_INDEX_DECIMALNUMBER 161 +#define PROP_INDEX_ND 161 +#define PROP_INDEX_TALU 162 +#define PROP_INDEX_NEWTAILUE 162 +#define PROP_INDEX_NEWA 163 +#define PROP_INDEX_NKO 164 +#define PROP_INDEX_NKOO 164 +#define PROP_INDEX_LETTERNUMBER 165 +#define PROP_INDEX_NL 165 +#define PROP_INDEX_OTHERNUMBER 166 +#define PROP_INDEX_NO 166 +#define PROP_INDEX_NONCHARACTERCODEPOINT 167 +#define PROP_INDEX_NCHAR 167 +#define PROP_INDEX_NSHU 168 +#define PROP_INDEX_NUSHU 168 +#define PROP_INDEX_OGHAM 169 +#define PROP_INDEX_OGAM 169 +#define PROP_INDEX_OLCK 170 +#define PROP_INDEX_OLCHIKI 170 +#define PROP_INDEX_HUNG 171 +#define PROP_INDEX_OLDHUNGARIAN 171 +#define PROP_INDEX_ITAL 172 +#define PROP_INDEX_OLDITALIC 172 +#define PROP_INDEX_NARB 173 +#define PROP_INDEX_OLDNORTHARABIAN 173 +#define PROP_INDEX_OLDPERMIC 174 +#define PROP_INDEX_PERM 174 +#define PROP_INDEX_OLDPERSIAN 175 +#define PROP_INDEX_XPEO 175 +#define PROP_INDEX_SOGO 176 +#define PROP_INDEX_OLDSOGDIAN 176 +#define PROP_INDEX_SARB 177 +#define PROP_INDEX_OLDSOUTHARABIAN 177 +#define PROP_INDEX_OLDTURKIC 178 +#define PROP_INDEX_ORKH 178 +#define PROP_INDEX_ORYA 179 +#define PROP_INDEX_ORIYA 179 +#define PROP_INDEX_OSAGE 180 +#define PROP_INDEX_OSGE 180 +#define PROP_INDEX_OSMANYA 181 +#define PROP_INDEX_OSMA 181 +#define PROP_INDEX_OTHERALPHABETIC 182 +#define PROP_INDEX_OALPHA 182 +#define PROP_INDEX_ODI 183 +#define PROP_INDEX_OTHERDEFAULTIGNORABLECODEPOINT 183 +#define PROP_INDEX_OGREXT 184 +#define PROP_INDEX_OTHERGRAPHEMEEXTEND 184 +#define PROP_INDEX_OIDC 185 +#define PROP_INDEX_OTHERIDCONTINUE 185 +#define PROP_INDEX_OTHERIDSTART 186 +#define PROP_INDEX_OIDS 186 +#define PROP_INDEX_OTHERLOWERCASE 187 +#define PROP_INDEX_OLOWER 187 +#define PROP_INDEX_OTHERMATH 188 +#define PROP_INDEX_OMATH 188 +#define PROP_INDEX_OTHERUPPERCASE 189 +#define PROP_INDEX_OUPPER 189 +#define PROP_INDEX_P 190 +#define PROP_INDEX_PUNCTUATION 190 +#define PROP_INDEX_PAHAWHHMONG 191 +#define PROP_INDEX_HMNG 191 +#define PROP_INDEX_PALMYRENE 192 +#define PROP_INDEX_PALM 192 +#define PROP_INDEX_PATTERNSYNTAX 193 +#define PROP_INDEX_PATSYN 193 +#define PROP_INDEX_PATWS 194 +#define PROP_INDEX_PATTERNWHITESPACE 194 +#define PROP_INDEX_PAUCINHAU 195 +#define PROP_INDEX_PAUC 195 +#define PROP_INDEX_CONNECTORPUNCTUATION 196 +#define PROP_INDEX_PC 196 +#define PROP_INDEX_DASHPUNCTUATION 197 +#define PROP_INDEX_PD 197 +#define PROP_INDEX_PE 198 +#define PROP_INDEX_CLOSEPUNCTUATION 198 +#define PROP_INDEX_FINALPUNCTUATION 199 +#define PROP_INDEX_PF 199 +#define PROP_INDEX_PHAG 200 +#define PROP_INDEX_PHAGSPA 200 +#define PROP_INDEX_PHOENICIAN 201 +#define PROP_INDEX_PHNX 201 +#define PROP_INDEX_PI 202 +#define PROP_INDEX_INITIALPUNCTUATION 202 +#define PROP_INDEX_OTHERPUNCTUATION 203 +#define PROP_INDEX_PO 203 +#define PROP_INDEX_PREPENDEDCONCATENATIONMARK 204 +#define PROP_INDEX_PCM 204 +#define PROP_INDEX_PS 205 +#define PROP_INDEX_OPENPUNCTUATION 205 +#define PROP_INDEX_PHLP 206 +#define PROP_INDEX_PSALTERPAHLAVI 206 +#define PROP_INDEX_QUOTATIONMARK 207 +#define PROP_INDEX_QMARK 207 +#define PROP_INDEX_RADICAL 208 +#define PROP_INDEX_RI 209 +#define PROP_INDEX_REGIONALINDICATOR 209 +#define PROP_INDEX_REJANG 210 +#define PROP_INDEX_RJNG 210 +#define PROP_INDEX_RUNIC 211 +#define PROP_INDEX_RUNR 211 +#define PROP_INDEX_S 212 +#define PROP_INDEX_SYMBOL 212 +#define PROP_INDEX_SAMARITAN 213 +#define PROP_INDEX_SAMR 213 +#define PROP_INDEX_SAURASHTRA 214 +#define PROP_INDEX_SAUR 214 +#define PROP_INDEX_SC 215 +#define PROP_INDEX_CURRENCYSYMBOL 215 +#define PROP_INDEX_SENTENCETERMINAL 216 +#define PROP_INDEX_STERM 216 +#define PROP_INDEX_SHARADA 217 +#define PROP_INDEX_SHRD 217 +#define PROP_INDEX_SHAVIAN 218 +#define PROP_INDEX_SHAW 218 +#define PROP_INDEX_SIDDHAM 219 +#define PROP_INDEX_SIDD 219 +#define PROP_INDEX_SIGNWRITING 220 +#define PROP_INDEX_SGNW 220 +#define PROP_INDEX_SINH 221 +#define PROP_INDEX_SINHALA 221 +#define PROP_INDEX_SK 222 +#define PROP_INDEX_MODIFIERSYMBOL 222 +#define PROP_INDEX_MATHSYMBOL 223 +#define PROP_INDEX_SM 223 +#define PROP_INDEX_SO 224 +#define PROP_INDEX_OTHERSYMBOL 224 +#define PROP_INDEX_SD 225 +#define PROP_INDEX_SOFTDOTTED 225 +#define PROP_INDEX_SOGD 226 +#define PROP_INDEX_SOGDIAN 226 +#define PROP_INDEX_SORASOMPENG 227 +#define PROP_INDEX_SORA 227 +#define PROP_INDEX_SOYO 228 +#define PROP_INDEX_SOYOMBO 228 +#define PROP_INDEX_SUND 229 +#define PROP_INDEX_SUNDANESE 229 +#define PROP_INDEX_SYLO 230 +#define PROP_INDEX_SYLOTINAGRI 230 +#define PROP_INDEX_SYRC 231 +#define PROP_INDEX_SYRIAC 231 +#define PROP_INDEX_TGLG 232 +#define PROP_INDEX_TAGALOG 232 +#define PROP_INDEX_TAGBANWA 233 +#define PROP_INDEX_TAGB 233 +#define PROP_INDEX_TAILE 234 +#define PROP_INDEX_TALE 234 +#define PROP_INDEX_TAITHAM 235 +#define PROP_INDEX_LANA 235 +#define PROP_INDEX_TAIVIET 236 +#define PROP_INDEX_TAVT 236 +#define PROP_INDEX_TAKRI 237 +#define PROP_INDEX_TAKR 237 +#define PROP_INDEX_TAMIL 238 +#define PROP_INDEX_TAML 238 +#define PROP_INDEX_TANG 239 +#define PROP_INDEX_TANGUT 239 +#define PROP_INDEX_TELUGU 240 +#define PROP_INDEX_TELU 240 +#define PROP_INDEX_TERM 241 +#define PROP_INDEX_TERMINALPUNCTUATION 241 +#define PROP_INDEX_THAA 242 +#define PROP_INDEX_THAANA 242 +#define PROP_INDEX_THAI 243 +#define PROP_INDEX_TIBT 244 +#define PROP_INDEX_TIBETAN 244 +#define PROP_INDEX_TFNG 245 +#define PROP_INDEX_TIFINAGH 245 +#define PROP_INDEX_TIRHUTA 246 +#define PROP_INDEX_TIRH 246 +#define PROP_INDEX_UGAR 247 +#define PROP_INDEX_UGARITIC 247 +#define PROP_INDEX_UNIFIEDIDEOGRAPH 248 +#define PROP_INDEX_UIDEO 248 +#define PROP_INDEX_ZZZZ 249 +#define PROP_INDEX_UNKNOWN 249 +#define PROP_INDEX_UPPERCASE 250 +#define PROP_INDEX_VAII 251 +#define PROP_INDEX_VAI 251 +#define PROP_INDEX_VARIATIONSELECTOR 252 +#define PROP_INDEX_VS 252 +#define PROP_INDEX_WARANGCITI 253 +#define PROP_INDEX_WARA 253 +#define PROP_INDEX_WHITESPACE 254 +#define PROP_INDEX_WSPACE 254 +#define PROP_INDEX_XIDC 255 +#define PROP_INDEX_XIDCONTINUE 255 +#define PROP_INDEX_XIDS 256 +#define PROP_INDEX_XIDSTART 256 +#define PROP_INDEX_YI 257 +#define PROP_INDEX_YIII 257 +#define PROP_INDEX_SEPARATOR 258 +#define PROP_INDEX_Z 258 +#define PROP_INDEX_ZANABAZARSQUARE 259 +#define PROP_INDEX_ZANB 259 +#define PROP_INDEX_ZL 260 +#define PROP_INDEX_LINESEPARATOR 260 +#define PROP_INDEX_ZP 261 +#define PROP_INDEX_PARAGRAPHSEPARATOR 261 +#define PROP_INDEX_ZS 262 +#define PROP_INDEX_SPACESEPARATOR 262 +#define PROP_INDEX_INBASICLATIN 263 +#define PROP_INDEX_INLATIN1SUPPLEMENT 264 +#define PROP_INDEX_INLATINEXTENDEDA 265 +#define PROP_INDEX_INLATINEXTENDEDB 266 +#define PROP_INDEX_INIPAEXTENSIONS 267 +#define PROP_INDEX_INSPACINGMODIFIERLETTERS 268 +#define PROP_INDEX_INCOMBININGDIACRITICALMARKS 269 +#define PROP_INDEX_INGREEKANDCOPTIC 270 +#define PROP_INDEX_INCYRILLIC 271 +#define PROP_INDEX_INCYRILLICSUPPLEMENT 272 +#define PROP_INDEX_INARMENIAN 273 +#define PROP_INDEX_INHEBREW 274 +#define PROP_INDEX_INARABIC 275 +#define PROP_INDEX_INSYRIAC 276 +#define PROP_INDEX_INARABICSUPPLEMENT 277 +#define PROP_INDEX_INTHAANA 278 +#define PROP_INDEX_INNKO 279 +#define PROP_INDEX_INSAMARITAN 280 +#define PROP_INDEX_INMANDAIC 281 +#define PROP_INDEX_INSYRIACSUPPLEMENT 282 +#define PROP_INDEX_INARABICEXTENDEDA 283 +#define PROP_INDEX_INDEVANAGARI 284 +#define PROP_INDEX_INBENGALI 285 +#define PROP_INDEX_INGURMUKHI 286 +#define PROP_INDEX_INGUJARATI 287 +#define PROP_INDEX_INORIYA 288 +#define PROP_INDEX_INTAMIL 289 +#define PROP_INDEX_INTELUGU 290 +#define PROP_INDEX_INKANNADA 291 +#define PROP_INDEX_INMALAYALAM 292 +#define PROP_INDEX_INSINHALA 293 +#define PROP_INDEX_INTHAI 294 +#define PROP_INDEX_INLAO 295 +#define PROP_INDEX_INTIBETAN 296 +#define PROP_INDEX_INMYANMAR 297 +#define PROP_INDEX_INGEORGIAN 298 +#define PROP_INDEX_INHANGULJAMO 299 +#define PROP_INDEX_INETHIOPIC 300 +#define PROP_INDEX_INETHIOPICSUPPLEMENT 301 +#define PROP_INDEX_INCHEROKEE 302 +#define PROP_INDEX_INUNIFIEDCANADIANABORIGINALSYLLABICS 303 +#define PROP_INDEX_INOGHAM 304 +#define PROP_INDEX_INRUNIC 305 +#define PROP_INDEX_INTAGALOG 306 +#define PROP_INDEX_INHANUNOO 307 +#define PROP_INDEX_INBUHID 308 +#define PROP_INDEX_INTAGBANWA 309 +#define PROP_INDEX_INKHMER 310 +#define PROP_INDEX_INMONGOLIAN 311 +#define PROP_INDEX_INUNIFIEDCANADIANABORIGINALSYLLABICSEXTENDED 312 +#define PROP_INDEX_INLIMBU 313 +#define PROP_INDEX_INTAILE 314 +#define PROP_INDEX_INNEWTAILUE 315 +#define PROP_INDEX_INKHMERSYMBOLS 316 +#define PROP_INDEX_INBUGINESE 317 +#define PROP_INDEX_INTAITHAM 318 +#define PROP_INDEX_INCOMBININGDIACRITICALMARKSEXTENDED 319 +#define PROP_INDEX_INBALINESE 320 +#define PROP_INDEX_INSUNDANESE 321 +#define PROP_INDEX_INBATAK 322 +#define PROP_INDEX_INLEPCHA 323 +#define PROP_INDEX_INOLCHIKI 324 +#define PROP_INDEX_INCYRILLICEXTENDEDC 325 +#define PROP_INDEX_INGEORGIANEXTENDED 326 +#define PROP_INDEX_INSUNDANESESUPPLEMENT 327 +#define PROP_INDEX_INVEDICEXTENSIONS 328 +#define PROP_INDEX_INPHONETICEXTENSIONS 329 +#define PROP_INDEX_INPHONETICEXTENSIONSSUPPLEMENT 330 +#define PROP_INDEX_INCOMBININGDIACRITICALMARKSSUPPLEMENT 331 +#define PROP_INDEX_INLATINEXTENDEDADDITIONAL 332 +#define PROP_INDEX_INGREEKEXTENDED 333 +#define PROP_INDEX_INGENERALPUNCTUATION 334 +#define PROP_INDEX_INSUPERSCRIPTSANDSUBSCRIPTS 335 +#define PROP_INDEX_INCURRENCYSYMBOLS 336 +#define PROP_INDEX_INCOMBININGDIACRITICALMARKSFORSYMBOLS 337 +#define PROP_INDEX_INLETTERLIKESYMBOLS 338 +#define PROP_INDEX_INNUMBERFORMS 339 +#define PROP_INDEX_INARROWS 340 +#define PROP_INDEX_INMATHEMATICALOPERATORS 341 +#define PROP_INDEX_INMISCELLANEOUSTECHNICAL 342 +#define PROP_INDEX_INCONTROLPICTURES 343 +#define PROP_INDEX_INOPTICALCHARACTERRECOGNITION 344 +#define PROP_INDEX_INENCLOSEDALPHANUMERICS 345 +#define PROP_INDEX_INBOXDRAWING 346 +#define PROP_INDEX_INBLOCKELEMENTS 347 +#define PROP_INDEX_INGEOMETRICSHAPES 348 +#define PROP_INDEX_INMISCELLANEOUSSYMBOLS 349 +#define PROP_INDEX_INDINGBATS 350 +#define PROP_INDEX_INMISCELLANEOUSMATHEMATICALSYMBOLSA 351 +#define PROP_INDEX_INSUPPLEMENTALARROWSA 352 +#define PROP_INDEX_INBRAILLEPATTERNS 353 +#define PROP_INDEX_INSUPPLEMENTALARROWSB 354 +#define PROP_INDEX_INMISCELLANEOUSMATHEMATICALSYMBOLSB 355 +#define PROP_INDEX_INSUPPLEMENTALMATHEMATICALOPERATORS 356 +#define PROP_INDEX_INMISCELLANEOUSSYMBOLSANDARROWS 357 +#define PROP_INDEX_INGLAGOLITIC 358 +#define PROP_INDEX_INLATINEXTENDEDC 359 +#define PROP_INDEX_INCOPTIC 360 +#define PROP_INDEX_INGEORGIANSUPPLEMENT 361 +#define PROP_INDEX_INTIFINAGH 362 +#define PROP_INDEX_INETHIOPICEXTENDED 363 +#define PROP_INDEX_INCYRILLICEXTENDEDA 364 +#define PROP_INDEX_INSUPPLEMENTALPUNCTUATION 365 +#define PROP_INDEX_INCJKRADICALSSUPPLEMENT 366 +#define PROP_INDEX_INKANGXIRADICALS 367 +#define PROP_INDEX_INIDEOGRAPHICDESCRIPTIONCHARACTERS 368 +#define PROP_INDEX_INCJKSYMBOLSANDPUNCTUATION 369 +#define PROP_INDEX_INHIRAGANA 370 +#define PROP_INDEX_INKATAKANA 371 +#define PROP_INDEX_INBOPOMOFO 372 +#define PROP_INDEX_INHANGULCOMPATIBILITYJAMO 373 +#define PROP_INDEX_INKANBUN 374 +#define PROP_INDEX_INBOPOMOFOEXTENDED 375 +#define PROP_INDEX_INCJKSTROKES 376 +#define PROP_INDEX_INKATAKANAPHONETICEXTENSIONS 377 +#define PROP_INDEX_INENCLOSEDCJKLETTERSANDMONTHS 378 +#define PROP_INDEX_INCJKCOMPATIBILITY 379 +#define PROP_INDEX_INCJKUNIFIEDIDEOGRAPHSEXTENSIONA 380 +#define PROP_INDEX_INYIJINGHEXAGRAMSYMBOLS 381 +#define PROP_INDEX_INCJKUNIFIEDIDEOGRAPHS 382 +#define PROP_INDEX_INYISYLLABLES 383 +#define PROP_INDEX_INYIRADICALS 384 +#define PROP_INDEX_INLISU 385 +#define PROP_INDEX_INVAI 386 +#define PROP_INDEX_INCYRILLICEXTENDEDB 387 +#define PROP_INDEX_INBAMUM 388 +#define PROP_INDEX_INMODIFIERTONELETTERS 389 +#define PROP_INDEX_INLATINEXTENDEDD 390 +#define PROP_INDEX_INSYLOTINAGRI 391 +#define PROP_INDEX_INCOMMONINDICNUMBERFORMS 392 +#define PROP_INDEX_INPHAGSPA 393 +#define PROP_INDEX_INSAURASHTRA 394 +#define PROP_INDEX_INDEVANAGARIEXTENDED 395 +#define PROP_INDEX_INKAYAHLI 396 +#define PROP_INDEX_INREJANG 397 +#define PROP_INDEX_INHANGULJAMOEXTENDEDA 398 +#define PROP_INDEX_INJAVANESE 399 +#define PROP_INDEX_INMYANMAREXTENDEDB 400 +#define PROP_INDEX_INCHAM 401 +#define PROP_INDEX_INMYANMAREXTENDEDA 402 +#define PROP_INDEX_INTAIVIET 403 +#define PROP_INDEX_INMEETEIMAYEKEXTENSIONS 404 +#define PROP_INDEX_INETHIOPICEXTENDEDA 405 +#define PROP_INDEX_INLATINEXTENDEDE 406 +#define PROP_INDEX_INCHEROKEESUPPLEMENT 407 +#define PROP_INDEX_INMEETEIMAYEK 408 +#define PROP_INDEX_INHANGULSYLLABLES 409 +#define PROP_INDEX_INHANGULJAMOEXTENDEDB 410 +#define PROP_INDEX_INHIGHSURROGATES 411 +#define PROP_INDEX_INHIGHPRIVATEUSESURROGATES 412 +#define PROP_INDEX_INLOWSURROGATES 413 +#define PROP_INDEX_INPRIVATEUSEAREA 414 +#define PROP_INDEX_INCJKCOMPATIBILITYIDEOGRAPHS 415 +#define PROP_INDEX_INALPHABETICPRESENTATIONFORMS 416 +#define PROP_INDEX_INARABICPRESENTATIONFORMSA 417 +#define PROP_INDEX_INVARIATIONSELECTORS 418 +#define PROP_INDEX_INVERTICALFORMS 419 +#define PROP_INDEX_INCOMBININGHALFMARKS 420 +#define PROP_INDEX_INCJKCOMPATIBILITYFORMS 421 +#define PROP_INDEX_INSMALLFORMVARIANTS 422 +#define PROP_INDEX_INARABICPRESENTATIONFORMSB 423 +#define PROP_INDEX_INHALFWIDTHANDFULLWIDTHFORMS 424 +#define PROP_INDEX_INSPECIALS 425 +#define PROP_INDEX_INLINEARBSYLLABARY 426 +#define PROP_INDEX_INLINEARBIDEOGRAMS 427 +#define PROP_INDEX_INAEGEANNUMBERS 428 +#define PROP_INDEX_INANCIENTGREEKNUMBERS 429 +#define PROP_INDEX_INANCIENTSYMBOLS 430 +#define PROP_INDEX_INPHAISTOSDISC 431 +#define PROP_INDEX_INLYCIAN 432 +#define PROP_INDEX_INCARIAN 433 +#define PROP_INDEX_INCOPTICEPACTNUMBERS 434 +#define PROP_INDEX_INOLDITALIC 435 +#define PROP_INDEX_INGOTHIC 436 +#define PROP_INDEX_INOLDPERMIC 437 +#define PROP_INDEX_INUGARITIC 438 +#define PROP_INDEX_INOLDPERSIAN 439 +#define PROP_INDEX_INDESERET 440 +#define PROP_INDEX_INSHAVIAN 441 +#define PROP_INDEX_INOSMANYA 442 +#define PROP_INDEX_INOSAGE 443 +#define PROP_INDEX_INELBASAN 444 +#define PROP_INDEX_INCAUCASIANALBANIAN 445 +#define PROP_INDEX_INLINEARA 446 +#define PROP_INDEX_INCYPRIOTSYLLABARY 447 +#define PROP_INDEX_INIMPERIALARAMAIC 448 +#define PROP_INDEX_INPALMYRENE 449 +#define PROP_INDEX_INNABATAEAN 450 +#define PROP_INDEX_INHATRAN 451 +#define PROP_INDEX_INPHOENICIAN 452 +#define PROP_INDEX_INLYDIAN 453 +#define PROP_INDEX_INMEROITICHIEROGLYPHS 454 +#define PROP_INDEX_INMEROITICCURSIVE 455 +#define PROP_INDEX_INKHAROSHTHI 456 +#define PROP_INDEX_INOLDSOUTHARABIAN 457 +#define PROP_INDEX_INOLDNORTHARABIAN 458 +#define PROP_INDEX_INMANICHAEAN 459 +#define PROP_INDEX_INAVESTAN 460 +#define PROP_INDEX_ININSCRIPTIONALPARTHIAN 461 +#define PROP_INDEX_ININSCRIPTIONALPAHLAVI 462 +#define PROP_INDEX_INPSALTERPAHLAVI 463 +#define PROP_INDEX_INOLDTURKIC 464 +#define PROP_INDEX_INOLDHUNGARIAN 465 +#define PROP_INDEX_INHANIFIROHINGYA 466 +#define PROP_INDEX_INRUMINUMERALSYMBOLS 467 +#define PROP_INDEX_INOLDSOGDIAN 468 +#define PROP_INDEX_INSOGDIAN 469 +#define PROP_INDEX_INBRAHMI 470 +#define PROP_INDEX_INKAITHI 471 +#define PROP_INDEX_INSORASOMPENG 472 +#define PROP_INDEX_INCHAKMA 473 +#define PROP_INDEX_INMAHAJANI 474 +#define PROP_INDEX_INSHARADA 475 +#define PROP_INDEX_INSINHALAARCHAICNUMBERS 476 +#define PROP_INDEX_INKHOJKI 477 +#define PROP_INDEX_INMULTANI 478 +#define PROP_INDEX_INKHUDAWADI 479 +#define PROP_INDEX_INGRANTHA 480 +#define PROP_INDEX_INNEWA 481 +#define PROP_INDEX_INTIRHUTA 482 +#define PROP_INDEX_INSIDDHAM 483 +#define PROP_INDEX_INMODI 484 +#define PROP_INDEX_INMONGOLIANSUPPLEMENT 485 +#define PROP_INDEX_INTAKRI 486 +#define PROP_INDEX_INAHOM 487 +#define PROP_INDEX_INDOGRA 488 +#define PROP_INDEX_INWARANGCITI 489 +#define PROP_INDEX_INZANABAZARSQUARE 490 +#define PROP_INDEX_INSOYOMBO 491 +#define PROP_INDEX_INPAUCINHAU 492 +#define PROP_INDEX_INBHAIKSUKI 493 +#define PROP_INDEX_INMARCHEN 494 +#define PROP_INDEX_INMASARAMGONDI 495 +#define PROP_INDEX_INGUNJALAGONDI 496 +#define PROP_INDEX_INMAKASAR 497 +#define PROP_INDEX_INCUNEIFORM 498 +#define PROP_INDEX_INCUNEIFORMNUMBERSANDPUNCTUATION 499 +#define PROP_INDEX_INEARLYDYNASTICCUNEIFORM 500 +#define PROP_INDEX_INEGYPTIANHIEROGLYPHS 501 +#define PROP_INDEX_INANATOLIANHIEROGLYPHS 502 +#define PROP_INDEX_INBAMUMSUPPLEMENT 503 +#define PROP_INDEX_INMRO 504 +#define PROP_INDEX_INBASSAVAH 505 +#define PROP_INDEX_INPAHAWHHMONG 506 +#define PROP_INDEX_INMEDEFAIDRIN 507 +#define PROP_INDEX_INMIAO 508 +#define PROP_INDEX_INIDEOGRAPHICSYMBOLSANDPUNCTUATION 509 +#define PROP_INDEX_INTANGUT 510 +#define PROP_INDEX_INTANGUTCOMPONENTS 511 +#define PROP_INDEX_INKANASUPPLEMENT 512 +#define PROP_INDEX_INKANAEXTENDEDA 513 +#define PROP_INDEX_INNUSHU 514 +#define PROP_INDEX_INDUPLOYAN 515 +#define PROP_INDEX_INSHORTHANDFORMATCONTROLS 516 +#define PROP_INDEX_INBYZANTINEMUSICALSYMBOLS 517 +#define PROP_INDEX_INMUSICALSYMBOLS 518 +#define PROP_INDEX_INANCIENTGREEKMUSICALNOTATION 519 +#define PROP_INDEX_INMAYANNUMERALS 520 +#define PROP_INDEX_INTAIXUANJINGSYMBOLS 521 +#define PROP_INDEX_INCOUNTINGRODNUMERALS 522 +#define PROP_INDEX_INMATHEMATICALALPHANUMERICSYMBOLS 523 +#define PROP_INDEX_INSUTTONSIGNWRITING 524 +#define PROP_INDEX_INGLAGOLITICSUPPLEMENT 525 +#define PROP_INDEX_INMENDEKIKAKUI 526 +#define PROP_INDEX_INADLAM 527 +#define PROP_INDEX_ININDICSIYAQNUMBERS 528 +#define PROP_INDEX_INARABICMATHEMATICALALPHABETICSYMBOLS 529 +#define PROP_INDEX_INMAHJONGTILES 530 +#define PROP_INDEX_INDOMINOTILES 531 +#define PROP_INDEX_INPLAYINGCARDS 532 +#define PROP_INDEX_INENCLOSEDALPHANUMERICSUPPLEMENT 533 +#define PROP_INDEX_INENCLOSEDIDEOGRAPHICSUPPLEMENT 534 +#define PROP_INDEX_INMISCELLANEOUSSYMBOLSANDPICTOGRAPHS 535 +#define PROP_INDEX_INEMOTICONS 536 +#define PROP_INDEX_INORNAMENTALDINGBATS 537 +#define PROP_INDEX_INTRANSPORTANDMAPSYMBOLS 538 +#define PROP_INDEX_INALCHEMICALSYMBOLS 539 +#define PROP_INDEX_INGEOMETRICSHAPESEXTENDED 540 +#define PROP_INDEX_INSUPPLEMENTALARROWSC 541 +#define PROP_INDEX_INSUPPLEMENTALSYMBOLSANDPICTOGRAPHS 542 +#define PROP_INDEX_INCHESSSYMBOLS 543 +#define PROP_INDEX_INCJKUNIFIEDIDEOGRAPHSEXTENSIONB 544 +#define PROP_INDEX_INCJKUNIFIEDIDEOGRAPHSEXTENSIONC 545 +#define PROP_INDEX_INCJKUNIFIEDIDEOGRAPHSEXTENSIOND 546 +#define PROP_INDEX_INCJKUNIFIEDIDEOGRAPHSEXTENSIONE 547 +#define PROP_INDEX_INCJKUNIFIEDIDEOGRAPHSEXTENSIONF 548 +#define PROP_INDEX_INCJKCOMPATIBILITYIDEOGRAPHSSUPPLEMENT 549 +#define PROP_INDEX_INTAGS 550 +#define PROP_INDEX_INVARIATIONSELECTORSSUPPLEMENT 551 +#define PROP_INDEX_INSUPPLEMENTARYPRIVATEUSEAREAA 552 +#define PROP_INDEX_INSUPPLEMENTARYPRIVATEUSEAREAB 553 +#define PROP_INDEX_INNOBLOCK 554 diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_property_data_posix.c b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_property_data_posix.c new file mode 100644 index 0000000000..b3b72729e2 --- /dev/null +++ b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_property_data_posix.c @@ -0,0 +1,5305 @@ +/* ANSI-C code produced by gperf version 3.1 */ +/* Command-line: /usr/bin/gperf -T -C -c -t -j1 -L ANSI-C --ignore-case --pic -Q unicode_prop_name_pool -N unicode_lookup_property_name --output-file gperf2.tmp unicode_property_data_posix.gperf */ +/* Computed positions: -k'1,3' */ + +#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \ + && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \ + && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \ + && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \ + && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \ + && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \ + && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \ + && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \ + && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \ + && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \ + && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \ + && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \ + && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \ + && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \ + && ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \ + && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \ + && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \ + && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \ + && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \ + && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \ + && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \ + && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \ + && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126)) +/* The character set is not based on ISO-646. */ +#error "gperf generated tables don't work with this execution character set. Please report a bug to ." +#endif + + + +/* Generated by make_unicode_property_data.py. */ + + +/* PROPERTY: 'NEWLINE': POSIX [[:NEWLINE:]] */ +static const OnigCodePoint +CR_NEWLINE[] = { 1, +0x000a, 0x000a, +}; /* END of CR_NEWLINE */ + +/* PROPERTY: 'Alpha': POSIX [[:Alpha:]] */ +static const OnigCodePoint +CR_Alpha[] = { 676, +0x0041, 0x005a, +0x0061, 0x007a, +0x00aa, 0x00aa, +0x00b5, 0x00b5, +0x00ba, 0x00ba, +0x00c0, 0x00d6, +0x00d8, 0x00f6, +0x00f8, 0x02c1, +0x02c6, 0x02d1, +0x02e0, 0x02e4, +0x02ec, 0x02ec, +0x02ee, 0x02ee, +0x0345, 0x0345, +0x0370, 0x0374, +0x0376, 0x0377, +0x037a, 0x037d, +0x037f, 0x037f, +0x0386, 0x0386, +0x0388, 0x038a, +0x038c, 0x038c, +0x038e, 0x03a1, +0x03a3, 0x03f5, +0x03f7, 0x0481, +0x048a, 0x052f, +0x0531, 0x0556, +0x0559, 0x0559, +0x0560, 0x0588, +0x05b0, 0x05bd, +0x05bf, 0x05bf, +0x05c1, 0x05c2, +0x05c4, 0x05c5, +0x05c7, 0x05c7, +0x05d0, 0x05ea, +0x05ef, 0x05f2, +0x0610, 0x061a, +0x0620, 0x0657, +0x0659, 0x065f, +0x066e, 0x06d3, +0x06d5, 0x06dc, +0x06e1, 0x06e8, +0x06ed, 0x06ef, +0x06fa, 0x06fc, +0x06ff, 0x06ff, +0x0710, 0x073f, +0x074d, 0x07b1, +0x07ca, 0x07ea, +0x07f4, 0x07f5, +0x07fa, 0x07fa, +0x0800, 0x0817, +0x081a, 0x082c, +0x0840, 0x0858, +0x0860, 0x086a, +0x08a0, 0x08b4, +0x08b6, 0x08bd, +0x08d4, 0x08df, +0x08e3, 0x08e9, +0x08f0, 0x093b, +0x093d, 0x094c, +0x094e, 0x0950, +0x0955, 0x0963, +0x0971, 0x0983, +0x0985, 0x098c, +0x098f, 0x0990, +0x0993, 0x09a8, +0x09aa, 0x09b0, +0x09b2, 0x09b2, +0x09b6, 0x09b9, +0x09bd, 0x09c4, +0x09c7, 0x09c8, +0x09cb, 0x09cc, +0x09ce, 0x09ce, +0x09d7, 0x09d7, +0x09dc, 0x09dd, +0x09df, 0x09e3, +0x09f0, 0x09f1, +0x09fc, 0x09fc, +0x0a01, 0x0a03, +0x0a05, 0x0a0a, +0x0a0f, 0x0a10, +0x0a13, 0x0a28, +0x0a2a, 0x0a30, +0x0a32, 0x0a33, +0x0a35, 0x0a36, +0x0a38, 0x0a39, +0x0a3e, 0x0a42, +0x0a47, 0x0a48, +0x0a4b, 0x0a4c, +0x0a51, 0x0a51, +0x0a59, 0x0a5c, +0x0a5e, 0x0a5e, +0x0a70, 0x0a75, +0x0a81, 0x0a83, +0x0a85, 0x0a8d, +0x0a8f, 0x0a91, +0x0a93, 0x0aa8, +0x0aaa, 0x0ab0, +0x0ab2, 0x0ab3, +0x0ab5, 0x0ab9, +0x0abd, 0x0ac5, +0x0ac7, 0x0ac9, +0x0acb, 0x0acc, +0x0ad0, 0x0ad0, +0x0ae0, 0x0ae3, +0x0af9, 0x0afc, +0x0b01, 0x0b03, +0x0b05, 0x0b0c, +0x0b0f, 0x0b10, +0x0b13, 0x0b28, +0x0b2a, 0x0b30, +0x0b32, 0x0b33, +0x0b35, 0x0b39, +0x0b3d, 0x0b44, +0x0b47, 0x0b48, +0x0b4b, 0x0b4c, +0x0b56, 0x0b57, +0x0b5c, 0x0b5d, +0x0b5f, 0x0b63, +0x0b71, 0x0b71, +0x0b82, 0x0b83, +0x0b85, 0x0b8a, +0x0b8e, 0x0b90, +0x0b92, 0x0b95, +0x0b99, 0x0b9a, +0x0b9c, 0x0b9c, +0x0b9e, 0x0b9f, +0x0ba3, 0x0ba4, +0x0ba8, 0x0baa, +0x0bae, 0x0bb9, +0x0bbe, 0x0bc2, +0x0bc6, 0x0bc8, +0x0bca, 0x0bcc, +0x0bd0, 0x0bd0, +0x0bd7, 0x0bd7, +0x0c00, 0x0c03, +0x0c05, 0x0c0c, +0x0c0e, 0x0c10, +0x0c12, 0x0c28, +0x0c2a, 0x0c39, +0x0c3d, 0x0c44, +0x0c46, 0x0c48, +0x0c4a, 0x0c4c, +0x0c55, 0x0c56, +0x0c58, 0x0c5a, +0x0c60, 0x0c63, +0x0c80, 0x0c83, +0x0c85, 0x0c8c, +0x0c8e, 0x0c90, +0x0c92, 0x0ca8, +0x0caa, 0x0cb3, +0x0cb5, 0x0cb9, +0x0cbd, 0x0cc4, +0x0cc6, 0x0cc8, +0x0cca, 0x0ccc, +0x0cd5, 0x0cd6, +0x0cde, 0x0cde, +0x0ce0, 0x0ce3, +0x0cf1, 0x0cf2, +0x0d00, 0x0d03, +0x0d05, 0x0d0c, +0x0d0e, 0x0d10, +0x0d12, 0x0d3a, +0x0d3d, 0x0d44, +0x0d46, 0x0d48, +0x0d4a, 0x0d4c, +0x0d4e, 0x0d4e, +0x0d54, 0x0d57, +0x0d5f, 0x0d63, +0x0d7a, 0x0d7f, +0x0d82, 0x0d83, +0x0d85, 0x0d96, +0x0d9a, 0x0db1, +0x0db3, 0x0dbb, +0x0dbd, 0x0dbd, +0x0dc0, 0x0dc6, +0x0dcf, 0x0dd4, +0x0dd6, 0x0dd6, +0x0dd8, 0x0ddf, +0x0df2, 0x0df3, +0x0e01, 0x0e3a, +0x0e40, 0x0e46, +0x0e4d, 0x0e4d, +0x0e81, 0x0e82, +0x0e84, 0x0e84, +0x0e87, 0x0e88, +0x0e8a, 0x0e8a, +0x0e8d, 0x0e8d, +0x0e94, 0x0e97, +0x0e99, 0x0e9f, +0x0ea1, 0x0ea3, +0x0ea5, 0x0ea5, +0x0ea7, 0x0ea7, +0x0eaa, 0x0eab, +0x0ead, 0x0eb9, +0x0ebb, 0x0ebd, +0x0ec0, 0x0ec4, +0x0ec6, 0x0ec6, +0x0ecd, 0x0ecd, +0x0edc, 0x0edf, +0x0f00, 0x0f00, +0x0f40, 0x0f47, +0x0f49, 0x0f6c, +0x0f71, 0x0f81, +0x0f88, 0x0f97, +0x0f99, 0x0fbc, +0x1000, 0x1036, +0x1038, 0x1038, +0x103b, 0x103f, +0x1050, 0x1062, +0x1065, 0x1068, +0x106e, 0x1086, +0x108e, 0x108e, +0x109c, 0x109d, +0x10a0, 0x10c5, +0x10c7, 0x10c7, +0x10cd, 0x10cd, +0x10d0, 0x10fa, +0x10fc, 0x1248, +0x124a, 0x124d, +0x1250, 0x1256, +0x1258, 0x1258, +0x125a, 0x125d, +0x1260, 0x1288, +0x128a, 0x128d, +0x1290, 0x12b0, +0x12b2, 0x12b5, +0x12b8, 0x12be, +0x12c0, 0x12c0, +0x12c2, 0x12c5, +0x12c8, 0x12d6, +0x12d8, 0x1310, +0x1312, 0x1315, +0x1318, 0x135a, +0x135f, 0x135f, +0x1380, 0x138f, +0x13a0, 0x13f5, +0x13f8, 0x13fd, +0x1401, 0x166c, +0x166f, 0x167f, +0x1681, 0x169a, +0x16a0, 0x16ea, +0x16ee, 0x16f8, +0x1700, 0x170c, +0x170e, 0x1713, +0x1720, 0x1733, +0x1740, 0x1753, +0x1760, 0x176c, +0x176e, 0x1770, +0x1772, 0x1773, +0x1780, 0x17b3, +0x17b6, 0x17c8, +0x17d7, 0x17d7, +0x17dc, 0x17dc, +0x1820, 0x1878, +0x1880, 0x18aa, +0x18b0, 0x18f5, +0x1900, 0x191e, +0x1920, 0x192b, +0x1930, 0x1938, +0x1950, 0x196d, +0x1970, 0x1974, +0x1980, 0x19ab, +0x19b0, 0x19c9, +0x1a00, 0x1a1b, +0x1a20, 0x1a5e, +0x1a61, 0x1a74, +0x1aa7, 0x1aa7, +0x1b00, 0x1b33, +0x1b35, 0x1b43, +0x1b45, 0x1b4b, +0x1b80, 0x1ba9, +0x1bac, 0x1baf, +0x1bba, 0x1be5, +0x1be7, 0x1bf1, +0x1c00, 0x1c35, +0x1c4d, 0x1c4f, +0x1c5a, 0x1c7d, +0x1c80, 0x1c88, +0x1c90, 0x1cba, +0x1cbd, 0x1cbf, +0x1ce9, 0x1cec, +0x1cee, 0x1cf3, +0x1cf5, 0x1cf6, +0x1d00, 0x1dbf, +0x1de7, 0x1df4, +0x1e00, 0x1f15, +0x1f18, 0x1f1d, +0x1f20, 0x1f45, +0x1f48, 0x1f4d, +0x1f50, 0x1f57, +0x1f59, 0x1f59, +0x1f5b, 0x1f5b, +0x1f5d, 0x1f5d, +0x1f5f, 0x1f7d, +0x1f80, 0x1fb4, +0x1fb6, 0x1fbc, +0x1fbe, 0x1fbe, +0x1fc2, 0x1fc4, +0x1fc6, 0x1fcc, +0x1fd0, 0x1fd3, +0x1fd6, 0x1fdb, +0x1fe0, 0x1fec, +0x1ff2, 0x1ff4, +0x1ff6, 0x1ffc, +0x2071, 0x2071, +0x207f, 0x207f, +0x2090, 0x209c, +0x2102, 0x2102, +0x2107, 0x2107, +0x210a, 0x2113, +0x2115, 0x2115, +0x2119, 0x211d, +0x2124, 0x2124, +0x2126, 0x2126, +0x2128, 0x2128, +0x212a, 0x212d, +0x212f, 0x2139, +0x213c, 0x213f, +0x2145, 0x2149, +0x214e, 0x214e, +0x2160, 0x2188, +0x24b6, 0x24e9, +0x2c00, 0x2c2e, +0x2c30, 0x2c5e, +0x2c60, 0x2ce4, +0x2ceb, 0x2cee, +0x2cf2, 0x2cf3, +0x2d00, 0x2d25, +0x2d27, 0x2d27, +0x2d2d, 0x2d2d, +0x2d30, 0x2d67, +0x2d6f, 0x2d6f, +0x2d80, 0x2d96, +0x2da0, 0x2da6, +0x2da8, 0x2dae, +0x2db0, 0x2db6, +0x2db8, 0x2dbe, +0x2dc0, 0x2dc6, +0x2dc8, 0x2dce, +0x2dd0, 0x2dd6, +0x2dd8, 0x2dde, +0x2de0, 0x2dff, +0x2e2f, 0x2e2f, +0x3005, 0x3007, +0x3021, 0x3029, +0x3031, 0x3035, +0x3038, 0x303c, +0x3041, 0x3096, +0x309d, 0x309f, +0x30a1, 0x30fa, +0x30fc, 0x30ff, +0x3105, 0x312f, +0x3131, 0x318e, +0x31a0, 0x31ba, +0x31f0, 0x31ff, +0x3400, 0x4db5, +0x4e00, 0x9fef, +0xa000, 0xa48c, +0xa4d0, 0xa4fd, +0xa500, 0xa60c, +0xa610, 0xa61f, +0xa62a, 0xa62b, +0xa640, 0xa66e, +0xa674, 0xa67b, +0xa67f, 0xa6ef, +0xa717, 0xa71f, +0xa722, 0xa788, +0xa78b, 0xa7b9, +0xa7f7, 0xa801, +0xa803, 0xa805, +0xa807, 0xa80a, +0xa80c, 0xa827, +0xa840, 0xa873, +0xa880, 0xa8c3, +0xa8c5, 0xa8c5, +0xa8f2, 0xa8f7, +0xa8fb, 0xa8fb, +0xa8fd, 0xa8fe, +0xa90a, 0xa92a, +0xa930, 0xa952, +0xa960, 0xa97c, +0xa980, 0xa9b2, +0xa9b4, 0xa9bf, +0xa9cf, 0xa9cf, +0xa9e0, 0xa9e4, +0xa9e6, 0xa9ef, +0xa9fa, 0xa9fe, +0xaa00, 0xaa36, +0xaa40, 0xaa4d, +0xaa60, 0xaa76, +0xaa7a, 0xaa7a, +0xaa7e, 0xaabe, +0xaac0, 0xaac0, +0xaac2, 0xaac2, +0xaadb, 0xaadd, +0xaae0, 0xaaef, +0xaaf2, 0xaaf5, +0xab01, 0xab06, +0xab09, 0xab0e, +0xab11, 0xab16, +0xab20, 0xab26, +0xab28, 0xab2e, +0xab30, 0xab5a, +0xab5c, 0xab65, +0xab70, 0xabea, +0xac00, 0xd7a3, +0xd7b0, 0xd7c6, +0xd7cb, 0xd7fb, +0xf900, 0xfa6d, +0xfa70, 0xfad9, +0xfb00, 0xfb06, +0xfb13, 0xfb17, +0xfb1d, 0xfb28, +0xfb2a, 0xfb36, +0xfb38, 0xfb3c, +0xfb3e, 0xfb3e, +0xfb40, 0xfb41, +0xfb43, 0xfb44, +0xfb46, 0xfbb1, +0xfbd3, 0xfd3d, +0xfd50, 0xfd8f, +0xfd92, 0xfdc7, +0xfdf0, 0xfdfb, +0xfe70, 0xfe74, +0xfe76, 0xfefc, +0xff21, 0xff3a, +0xff41, 0xff5a, +0xff66, 0xffbe, +0xffc2, 0xffc7, +0xffca, 0xffcf, +0xffd2, 0xffd7, +0xffda, 0xffdc, +0x10000, 0x1000b, +0x1000d, 0x10026, +0x10028, 0x1003a, +0x1003c, 0x1003d, +0x1003f, 0x1004d, +0x10050, 0x1005d, +0x10080, 0x100fa, +0x10140, 0x10174, +0x10280, 0x1029c, +0x102a0, 0x102d0, +0x10300, 0x1031f, +0x1032d, 0x1034a, +0x10350, 0x1037a, +0x10380, 0x1039d, +0x103a0, 0x103c3, +0x103c8, 0x103cf, +0x103d1, 0x103d5, +0x10400, 0x1049d, +0x104b0, 0x104d3, +0x104d8, 0x104fb, +0x10500, 0x10527, +0x10530, 0x10563, +0x10600, 0x10736, +0x10740, 0x10755, +0x10760, 0x10767, +0x10800, 0x10805, +0x10808, 0x10808, +0x1080a, 0x10835, +0x10837, 0x10838, +0x1083c, 0x1083c, +0x1083f, 0x10855, +0x10860, 0x10876, +0x10880, 0x1089e, +0x108e0, 0x108f2, +0x108f4, 0x108f5, +0x10900, 0x10915, +0x10920, 0x10939, +0x10980, 0x109b7, +0x109be, 0x109bf, +0x10a00, 0x10a03, +0x10a05, 0x10a06, +0x10a0c, 0x10a13, +0x10a15, 0x10a17, +0x10a19, 0x10a35, +0x10a60, 0x10a7c, +0x10a80, 0x10a9c, +0x10ac0, 0x10ac7, +0x10ac9, 0x10ae4, +0x10b00, 0x10b35, +0x10b40, 0x10b55, +0x10b60, 0x10b72, +0x10b80, 0x10b91, +0x10c00, 0x10c48, +0x10c80, 0x10cb2, +0x10cc0, 0x10cf2, +0x10d00, 0x10d27, +0x10f00, 0x10f1c, +0x10f27, 0x10f27, +0x10f30, 0x10f45, +0x11000, 0x11045, +0x11082, 0x110b8, +0x110d0, 0x110e8, +0x11100, 0x11132, +0x11144, 0x11146, +0x11150, 0x11172, +0x11176, 0x11176, +0x11180, 0x111bf, +0x111c1, 0x111c4, +0x111da, 0x111da, +0x111dc, 0x111dc, +0x11200, 0x11211, +0x11213, 0x11234, +0x11237, 0x11237, +0x1123e, 0x1123e, +0x11280, 0x11286, +0x11288, 0x11288, +0x1128a, 0x1128d, +0x1128f, 0x1129d, +0x1129f, 0x112a8, +0x112b0, 0x112e8, +0x11300, 0x11303, +0x11305, 0x1130c, +0x1130f, 0x11310, +0x11313, 0x11328, +0x1132a, 0x11330, +0x11332, 0x11333, +0x11335, 0x11339, +0x1133d, 0x11344, +0x11347, 0x11348, +0x1134b, 0x1134c, +0x11350, 0x11350, +0x11357, 0x11357, +0x1135d, 0x11363, +0x11400, 0x11441, +0x11443, 0x11445, +0x11447, 0x1144a, +0x11480, 0x114c1, +0x114c4, 0x114c5, +0x114c7, 0x114c7, +0x11580, 0x115b5, +0x115b8, 0x115be, +0x115d8, 0x115dd, +0x11600, 0x1163e, +0x11640, 0x11640, +0x11644, 0x11644, +0x11680, 0x116b5, +0x11700, 0x1171a, +0x1171d, 0x1172a, +0x11800, 0x11838, +0x118a0, 0x118df, +0x118ff, 0x118ff, +0x11a00, 0x11a32, +0x11a35, 0x11a3e, +0x11a50, 0x11a83, +0x11a86, 0x11a97, +0x11a9d, 0x11a9d, +0x11ac0, 0x11af8, +0x11c00, 0x11c08, +0x11c0a, 0x11c36, +0x11c38, 0x11c3e, +0x11c40, 0x11c40, +0x11c72, 0x11c8f, +0x11c92, 0x11ca7, +0x11ca9, 0x11cb6, +0x11d00, 0x11d06, +0x11d08, 0x11d09, +0x11d0b, 0x11d36, +0x11d3a, 0x11d3a, +0x11d3c, 0x11d3d, +0x11d3f, 0x11d41, +0x11d43, 0x11d43, +0x11d46, 0x11d47, +0x11d60, 0x11d65, +0x11d67, 0x11d68, +0x11d6a, 0x11d8e, +0x11d90, 0x11d91, +0x11d93, 0x11d96, +0x11d98, 0x11d98, +0x11ee0, 0x11ef6, +0x12000, 0x12399, +0x12400, 0x1246e, +0x12480, 0x12543, +0x13000, 0x1342e, +0x14400, 0x14646, +0x16800, 0x16a38, +0x16a40, 0x16a5e, +0x16ad0, 0x16aed, +0x16b00, 0x16b36, +0x16b40, 0x16b43, +0x16b63, 0x16b77, +0x16b7d, 0x16b8f, +0x16e40, 0x16e7f, +0x16f00, 0x16f44, +0x16f50, 0x16f7e, +0x16f93, 0x16f9f, +0x16fe0, 0x16fe1, +0x17000, 0x187f1, +0x18800, 0x18af2, +0x1b000, 0x1b11e, +0x1b170, 0x1b2fb, +0x1bc00, 0x1bc6a, +0x1bc70, 0x1bc7c, +0x1bc80, 0x1bc88, +0x1bc90, 0x1bc99, +0x1bc9e, 0x1bc9e, +0x1d400, 0x1d454, +0x1d456, 0x1d49c, +0x1d49e, 0x1d49f, +0x1d4a2, 0x1d4a2, +0x1d4a5, 0x1d4a6, +0x1d4a9, 0x1d4ac, +0x1d4ae, 0x1d4b9, +0x1d4bb, 0x1d4bb, +0x1d4bd, 0x1d4c3, +0x1d4c5, 0x1d505, +0x1d507, 0x1d50a, +0x1d50d, 0x1d514, +0x1d516, 0x1d51c, +0x1d51e, 0x1d539, +0x1d53b, 0x1d53e, +0x1d540, 0x1d544, +0x1d546, 0x1d546, +0x1d54a, 0x1d550, +0x1d552, 0x1d6a5, +0x1d6a8, 0x1d6c0, +0x1d6c2, 0x1d6da, +0x1d6dc, 0x1d6fa, +0x1d6fc, 0x1d714, +0x1d716, 0x1d734, +0x1d736, 0x1d74e, +0x1d750, 0x1d76e, +0x1d770, 0x1d788, +0x1d78a, 0x1d7a8, +0x1d7aa, 0x1d7c2, +0x1d7c4, 0x1d7cb, +0x1e000, 0x1e006, +0x1e008, 0x1e018, +0x1e01b, 0x1e021, +0x1e023, 0x1e024, +0x1e026, 0x1e02a, +0x1e800, 0x1e8c4, +0x1e900, 0x1e943, +0x1e947, 0x1e947, +0x1ee00, 0x1ee03, +0x1ee05, 0x1ee1f, +0x1ee21, 0x1ee22, +0x1ee24, 0x1ee24, +0x1ee27, 0x1ee27, +0x1ee29, 0x1ee32, +0x1ee34, 0x1ee37, +0x1ee39, 0x1ee39, +0x1ee3b, 0x1ee3b, +0x1ee42, 0x1ee42, +0x1ee47, 0x1ee47, +0x1ee49, 0x1ee49, +0x1ee4b, 0x1ee4b, +0x1ee4d, 0x1ee4f, +0x1ee51, 0x1ee52, +0x1ee54, 0x1ee54, +0x1ee57, 0x1ee57, +0x1ee59, 0x1ee59, +0x1ee5b, 0x1ee5b, +0x1ee5d, 0x1ee5d, +0x1ee5f, 0x1ee5f, +0x1ee61, 0x1ee62, +0x1ee64, 0x1ee64, +0x1ee67, 0x1ee6a, +0x1ee6c, 0x1ee72, +0x1ee74, 0x1ee77, +0x1ee79, 0x1ee7c, +0x1ee7e, 0x1ee7e, +0x1ee80, 0x1ee89, +0x1ee8b, 0x1ee9b, +0x1eea1, 0x1eea3, +0x1eea5, 0x1eea9, +0x1eeab, 0x1eebb, +0x1f130, 0x1f149, +0x1f150, 0x1f169, +0x1f170, 0x1f189, +0x20000, 0x2a6d6, +0x2a700, 0x2b734, +0x2b740, 0x2b81d, +0x2b820, 0x2cea1, +0x2ceb0, 0x2ebe0, +0x2f800, 0x2fa1d, +}; /* END of CR_Alpha */ + +/* PROPERTY: 'Blank': POSIX [[:Blank:]] */ +static const OnigCodePoint +CR_Blank[] = { 8, +0x0009, 0x0009, +0x0020, 0x0020, +0x00a0, 0x00a0, +0x1680, 0x1680, +0x2000, 0x200a, +0x202f, 0x202f, +0x205f, 0x205f, +0x3000, 0x3000, +}; /* END of CR_Blank */ + +/* PROPERTY: 'Cntrl': POSIX [[:Cntrl:]] */ +static const OnigCodePoint +CR_Cntrl[] = { 2, +0x0000, 0x001f, +0x007f, 0x009f, +}; /* END of CR_Cntrl */ + +/* PROPERTY: 'Digit': POSIX [[:Digit:]] */ +static const OnigCodePoint +CR_Digit[] = { 57, +0x0030, 0x0039, +0x0660, 0x0669, +0x06f0, 0x06f9, +0x07c0, 0x07c9, +0x0966, 0x096f, +0x09e6, 0x09ef, +0x0a66, 0x0a6f, +0x0ae6, 0x0aef, +0x0b66, 0x0b6f, +0x0be6, 0x0bef, +0x0c66, 0x0c6f, +0x0ce6, 0x0cef, +0x0d66, 0x0d6f, +0x0de6, 0x0def, +0x0e50, 0x0e59, +0x0ed0, 0x0ed9, +0x0f20, 0x0f29, +0x1040, 0x1049, +0x1090, 0x1099, +0x17e0, 0x17e9, +0x1810, 0x1819, +0x1946, 0x194f, +0x19d0, 0x19d9, +0x1a80, 0x1a89, +0x1a90, 0x1a99, +0x1b50, 0x1b59, +0x1bb0, 0x1bb9, +0x1c40, 0x1c49, +0x1c50, 0x1c59, +0xa620, 0xa629, +0xa8d0, 0xa8d9, +0xa900, 0xa909, +0xa9d0, 0xa9d9, +0xa9f0, 0xa9f9, +0xaa50, 0xaa59, +0xabf0, 0xabf9, +0xff10, 0xff19, +0x104a0, 0x104a9, +0x10d30, 0x10d39, +0x11066, 0x1106f, +0x110f0, 0x110f9, +0x11136, 0x1113f, +0x111d0, 0x111d9, +0x112f0, 0x112f9, +0x11450, 0x11459, +0x114d0, 0x114d9, +0x11650, 0x11659, +0x116c0, 0x116c9, +0x11730, 0x11739, +0x118e0, 0x118e9, +0x11c50, 0x11c59, +0x11d50, 0x11d59, +0x11da0, 0x11da9, +0x16a60, 0x16a69, +0x16b50, 0x16b59, +0x1d7ce, 0x1d7ff, +0x1e950, 0x1e959, +}; /* END of CR_Digit */ + +/* PROPERTY: 'Graph': POSIX [[:Graph:]] */ +static const OnigCodePoint +CR_Graph[] = { 663, +0x0021, 0x007e, +0x00a1, 0x0377, +0x037a, 0x037f, +0x0384, 0x038a, +0x038c, 0x038c, +0x038e, 0x03a1, +0x03a3, 0x052f, +0x0531, 0x0556, +0x0559, 0x058a, +0x058d, 0x058f, +0x0591, 0x05c7, +0x05d0, 0x05ea, +0x05ef, 0x05f4, +0x0600, 0x061c, +0x061e, 0x070d, +0x070f, 0x074a, +0x074d, 0x07b1, +0x07c0, 0x07fa, +0x07fd, 0x082d, +0x0830, 0x083e, +0x0840, 0x085b, +0x085e, 0x085e, +0x0860, 0x086a, +0x08a0, 0x08b4, +0x08b6, 0x08bd, +0x08d3, 0x0983, +0x0985, 0x098c, +0x098f, 0x0990, +0x0993, 0x09a8, +0x09aa, 0x09b0, +0x09b2, 0x09b2, +0x09b6, 0x09b9, +0x09bc, 0x09c4, +0x09c7, 0x09c8, +0x09cb, 0x09ce, +0x09d7, 0x09d7, +0x09dc, 0x09dd, +0x09df, 0x09e3, +0x09e6, 0x09fe, +0x0a01, 0x0a03, +0x0a05, 0x0a0a, +0x0a0f, 0x0a10, +0x0a13, 0x0a28, +0x0a2a, 0x0a30, +0x0a32, 0x0a33, +0x0a35, 0x0a36, +0x0a38, 0x0a39, +0x0a3c, 0x0a3c, +0x0a3e, 0x0a42, +0x0a47, 0x0a48, +0x0a4b, 0x0a4d, +0x0a51, 0x0a51, +0x0a59, 0x0a5c, +0x0a5e, 0x0a5e, +0x0a66, 0x0a76, +0x0a81, 0x0a83, +0x0a85, 0x0a8d, +0x0a8f, 0x0a91, +0x0a93, 0x0aa8, +0x0aaa, 0x0ab0, +0x0ab2, 0x0ab3, +0x0ab5, 0x0ab9, +0x0abc, 0x0ac5, +0x0ac7, 0x0ac9, +0x0acb, 0x0acd, +0x0ad0, 0x0ad0, +0x0ae0, 0x0ae3, +0x0ae6, 0x0af1, +0x0af9, 0x0aff, +0x0b01, 0x0b03, +0x0b05, 0x0b0c, +0x0b0f, 0x0b10, +0x0b13, 0x0b28, +0x0b2a, 0x0b30, +0x0b32, 0x0b33, +0x0b35, 0x0b39, +0x0b3c, 0x0b44, +0x0b47, 0x0b48, +0x0b4b, 0x0b4d, +0x0b56, 0x0b57, +0x0b5c, 0x0b5d, +0x0b5f, 0x0b63, +0x0b66, 0x0b77, +0x0b82, 0x0b83, +0x0b85, 0x0b8a, +0x0b8e, 0x0b90, +0x0b92, 0x0b95, +0x0b99, 0x0b9a, +0x0b9c, 0x0b9c, +0x0b9e, 0x0b9f, +0x0ba3, 0x0ba4, +0x0ba8, 0x0baa, +0x0bae, 0x0bb9, +0x0bbe, 0x0bc2, +0x0bc6, 0x0bc8, +0x0bca, 0x0bcd, +0x0bd0, 0x0bd0, +0x0bd7, 0x0bd7, +0x0be6, 0x0bfa, +0x0c00, 0x0c0c, +0x0c0e, 0x0c10, +0x0c12, 0x0c28, +0x0c2a, 0x0c39, +0x0c3d, 0x0c44, +0x0c46, 0x0c48, +0x0c4a, 0x0c4d, +0x0c55, 0x0c56, +0x0c58, 0x0c5a, +0x0c60, 0x0c63, +0x0c66, 0x0c6f, +0x0c78, 0x0c8c, +0x0c8e, 0x0c90, +0x0c92, 0x0ca8, +0x0caa, 0x0cb3, +0x0cb5, 0x0cb9, +0x0cbc, 0x0cc4, +0x0cc6, 0x0cc8, +0x0cca, 0x0ccd, +0x0cd5, 0x0cd6, +0x0cde, 0x0cde, +0x0ce0, 0x0ce3, +0x0ce6, 0x0cef, +0x0cf1, 0x0cf2, +0x0d00, 0x0d03, +0x0d05, 0x0d0c, +0x0d0e, 0x0d10, +0x0d12, 0x0d44, +0x0d46, 0x0d48, +0x0d4a, 0x0d4f, +0x0d54, 0x0d63, +0x0d66, 0x0d7f, +0x0d82, 0x0d83, +0x0d85, 0x0d96, +0x0d9a, 0x0db1, +0x0db3, 0x0dbb, +0x0dbd, 0x0dbd, +0x0dc0, 0x0dc6, +0x0dca, 0x0dca, +0x0dcf, 0x0dd4, +0x0dd6, 0x0dd6, +0x0dd8, 0x0ddf, +0x0de6, 0x0def, +0x0df2, 0x0df4, +0x0e01, 0x0e3a, +0x0e3f, 0x0e5b, +0x0e81, 0x0e82, +0x0e84, 0x0e84, +0x0e87, 0x0e88, +0x0e8a, 0x0e8a, +0x0e8d, 0x0e8d, +0x0e94, 0x0e97, +0x0e99, 0x0e9f, +0x0ea1, 0x0ea3, +0x0ea5, 0x0ea5, +0x0ea7, 0x0ea7, +0x0eaa, 0x0eab, +0x0ead, 0x0eb9, +0x0ebb, 0x0ebd, +0x0ec0, 0x0ec4, +0x0ec6, 0x0ec6, +0x0ec8, 0x0ecd, +0x0ed0, 0x0ed9, +0x0edc, 0x0edf, +0x0f00, 0x0f47, +0x0f49, 0x0f6c, +0x0f71, 0x0f97, +0x0f99, 0x0fbc, +0x0fbe, 0x0fcc, +0x0fce, 0x0fda, +0x1000, 0x10c5, +0x10c7, 0x10c7, +0x10cd, 0x10cd, +0x10d0, 0x1248, +0x124a, 0x124d, +0x1250, 0x1256, +0x1258, 0x1258, +0x125a, 0x125d, +0x1260, 0x1288, +0x128a, 0x128d, +0x1290, 0x12b0, +0x12b2, 0x12b5, +0x12b8, 0x12be, +0x12c0, 0x12c0, +0x12c2, 0x12c5, +0x12c8, 0x12d6, +0x12d8, 0x1310, +0x1312, 0x1315, +0x1318, 0x135a, +0x135d, 0x137c, +0x1380, 0x1399, +0x13a0, 0x13f5, +0x13f8, 0x13fd, +0x1400, 0x167f, +0x1681, 0x169c, +0x16a0, 0x16f8, +0x1700, 0x170c, +0x170e, 0x1714, +0x1720, 0x1736, +0x1740, 0x1753, +0x1760, 0x176c, +0x176e, 0x1770, +0x1772, 0x1773, +0x1780, 0x17dd, +0x17e0, 0x17e9, +0x17f0, 0x17f9, +0x1800, 0x180e, +0x1810, 0x1819, +0x1820, 0x1878, +0x1880, 0x18aa, +0x18b0, 0x18f5, +0x1900, 0x191e, +0x1920, 0x192b, +0x1930, 0x193b, +0x1940, 0x1940, +0x1944, 0x196d, +0x1970, 0x1974, +0x1980, 0x19ab, +0x19b0, 0x19c9, +0x19d0, 0x19da, +0x19de, 0x1a1b, +0x1a1e, 0x1a5e, +0x1a60, 0x1a7c, +0x1a7f, 0x1a89, +0x1a90, 0x1a99, +0x1aa0, 0x1aad, +0x1ab0, 0x1abe, +0x1b00, 0x1b4b, +0x1b50, 0x1b7c, +0x1b80, 0x1bf3, +0x1bfc, 0x1c37, +0x1c3b, 0x1c49, +0x1c4d, 0x1c88, +0x1c90, 0x1cba, +0x1cbd, 0x1cc7, +0x1cd0, 0x1cf9, +0x1d00, 0x1df9, +0x1dfb, 0x1f15, +0x1f18, 0x1f1d, +0x1f20, 0x1f45, +0x1f48, 0x1f4d, +0x1f50, 0x1f57, +0x1f59, 0x1f59, +0x1f5b, 0x1f5b, +0x1f5d, 0x1f5d, +0x1f5f, 0x1f7d, +0x1f80, 0x1fb4, +0x1fb6, 0x1fc4, +0x1fc6, 0x1fd3, +0x1fd6, 0x1fdb, +0x1fdd, 0x1fef, +0x1ff2, 0x1ff4, +0x1ff6, 0x1ffe, +0x200b, 0x2027, +0x202a, 0x202e, +0x2030, 0x205e, +0x2060, 0x2064, +0x2066, 0x2071, +0x2074, 0x208e, +0x2090, 0x209c, +0x20a0, 0x20bf, +0x20d0, 0x20f0, +0x2100, 0x218b, +0x2190, 0x2426, +0x2440, 0x244a, +0x2460, 0x2b73, +0x2b76, 0x2b95, +0x2b98, 0x2bc8, +0x2bca, 0x2bfe, +0x2c00, 0x2c2e, +0x2c30, 0x2c5e, +0x2c60, 0x2cf3, +0x2cf9, 0x2d25, +0x2d27, 0x2d27, +0x2d2d, 0x2d2d, +0x2d30, 0x2d67, +0x2d6f, 0x2d70, +0x2d7f, 0x2d96, +0x2da0, 0x2da6, +0x2da8, 0x2dae, +0x2db0, 0x2db6, +0x2db8, 0x2dbe, +0x2dc0, 0x2dc6, +0x2dc8, 0x2dce, +0x2dd0, 0x2dd6, +0x2dd8, 0x2dde, +0x2de0, 0x2e4e, +0x2e80, 0x2e99, +0x2e9b, 0x2ef3, +0x2f00, 0x2fd5, +0x2ff0, 0x2ffb, +0x3001, 0x303f, +0x3041, 0x3096, +0x3099, 0x30ff, +0x3105, 0x312f, +0x3131, 0x318e, +0x3190, 0x31ba, +0x31c0, 0x31e3, +0x31f0, 0x321e, +0x3220, 0x32fe, +0x3300, 0x4db5, +0x4dc0, 0x9fef, +0xa000, 0xa48c, +0xa490, 0xa4c6, +0xa4d0, 0xa62b, +0xa640, 0xa6f7, +0xa700, 0xa7b9, +0xa7f7, 0xa82b, +0xa830, 0xa839, +0xa840, 0xa877, +0xa880, 0xa8c5, +0xa8ce, 0xa8d9, +0xa8e0, 0xa953, +0xa95f, 0xa97c, +0xa980, 0xa9cd, +0xa9cf, 0xa9d9, +0xa9de, 0xa9fe, +0xaa00, 0xaa36, +0xaa40, 0xaa4d, +0xaa50, 0xaa59, +0xaa5c, 0xaac2, +0xaadb, 0xaaf6, +0xab01, 0xab06, +0xab09, 0xab0e, +0xab11, 0xab16, +0xab20, 0xab26, +0xab28, 0xab2e, +0xab30, 0xab65, +0xab70, 0xabed, +0xabf0, 0xabf9, +0xac00, 0xd7a3, +0xd7b0, 0xd7c6, +0xd7cb, 0xd7fb, +0xe000, 0xfa6d, +0xfa70, 0xfad9, +0xfb00, 0xfb06, +0xfb13, 0xfb17, +0xfb1d, 0xfb36, +0xfb38, 0xfb3c, +0xfb3e, 0xfb3e, +0xfb40, 0xfb41, +0xfb43, 0xfb44, +0xfb46, 0xfbc1, +0xfbd3, 0xfd3f, +0xfd50, 0xfd8f, +0xfd92, 0xfdc7, +0xfdf0, 0xfdfd, +0xfe00, 0xfe19, +0xfe20, 0xfe52, +0xfe54, 0xfe66, +0xfe68, 0xfe6b, +0xfe70, 0xfe74, +0xfe76, 0xfefc, +0xfeff, 0xfeff, +0xff01, 0xffbe, +0xffc2, 0xffc7, +0xffca, 0xffcf, +0xffd2, 0xffd7, +0xffda, 0xffdc, +0xffe0, 0xffe6, +0xffe8, 0xffee, +0xfff9, 0xfffd, +0x10000, 0x1000b, +0x1000d, 0x10026, +0x10028, 0x1003a, +0x1003c, 0x1003d, +0x1003f, 0x1004d, +0x10050, 0x1005d, +0x10080, 0x100fa, +0x10100, 0x10102, +0x10107, 0x10133, +0x10137, 0x1018e, +0x10190, 0x1019b, +0x101a0, 0x101a0, +0x101d0, 0x101fd, +0x10280, 0x1029c, +0x102a0, 0x102d0, +0x102e0, 0x102fb, +0x10300, 0x10323, +0x1032d, 0x1034a, +0x10350, 0x1037a, +0x10380, 0x1039d, +0x1039f, 0x103c3, +0x103c8, 0x103d5, +0x10400, 0x1049d, +0x104a0, 0x104a9, +0x104b0, 0x104d3, +0x104d8, 0x104fb, +0x10500, 0x10527, +0x10530, 0x10563, +0x1056f, 0x1056f, +0x10600, 0x10736, +0x10740, 0x10755, +0x10760, 0x10767, +0x10800, 0x10805, +0x10808, 0x10808, +0x1080a, 0x10835, +0x10837, 0x10838, +0x1083c, 0x1083c, +0x1083f, 0x10855, +0x10857, 0x1089e, +0x108a7, 0x108af, +0x108e0, 0x108f2, +0x108f4, 0x108f5, +0x108fb, 0x1091b, +0x1091f, 0x10939, +0x1093f, 0x1093f, +0x10980, 0x109b7, +0x109bc, 0x109cf, +0x109d2, 0x10a03, +0x10a05, 0x10a06, +0x10a0c, 0x10a13, +0x10a15, 0x10a17, +0x10a19, 0x10a35, +0x10a38, 0x10a3a, +0x10a3f, 0x10a48, +0x10a50, 0x10a58, +0x10a60, 0x10a9f, +0x10ac0, 0x10ae6, +0x10aeb, 0x10af6, +0x10b00, 0x10b35, +0x10b39, 0x10b55, +0x10b58, 0x10b72, +0x10b78, 0x10b91, +0x10b99, 0x10b9c, +0x10ba9, 0x10baf, +0x10c00, 0x10c48, +0x10c80, 0x10cb2, +0x10cc0, 0x10cf2, +0x10cfa, 0x10d27, +0x10d30, 0x10d39, +0x10e60, 0x10e7e, +0x10f00, 0x10f27, +0x10f30, 0x10f59, +0x11000, 0x1104d, +0x11052, 0x1106f, +0x1107f, 0x110c1, +0x110cd, 0x110cd, +0x110d0, 0x110e8, +0x110f0, 0x110f9, +0x11100, 0x11134, +0x11136, 0x11146, +0x11150, 0x11176, +0x11180, 0x111cd, +0x111d0, 0x111df, +0x111e1, 0x111f4, +0x11200, 0x11211, +0x11213, 0x1123e, +0x11280, 0x11286, +0x11288, 0x11288, +0x1128a, 0x1128d, +0x1128f, 0x1129d, +0x1129f, 0x112a9, +0x112b0, 0x112ea, +0x112f0, 0x112f9, +0x11300, 0x11303, +0x11305, 0x1130c, +0x1130f, 0x11310, +0x11313, 0x11328, +0x1132a, 0x11330, +0x11332, 0x11333, +0x11335, 0x11339, +0x1133b, 0x11344, +0x11347, 0x11348, +0x1134b, 0x1134d, +0x11350, 0x11350, +0x11357, 0x11357, +0x1135d, 0x11363, +0x11366, 0x1136c, +0x11370, 0x11374, +0x11400, 0x11459, +0x1145b, 0x1145b, +0x1145d, 0x1145e, +0x11480, 0x114c7, +0x114d0, 0x114d9, +0x11580, 0x115b5, +0x115b8, 0x115dd, +0x11600, 0x11644, +0x11650, 0x11659, +0x11660, 0x1166c, +0x11680, 0x116b7, +0x116c0, 0x116c9, +0x11700, 0x1171a, +0x1171d, 0x1172b, +0x11730, 0x1173f, +0x11800, 0x1183b, +0x118a0, 0x118f2, +0x118ff, 0x118ff, +0x11a00, 0x11a47, +0x11a50, 0x11a83, +0x11a86, 0x11aa2, +0x11ac0, 0x11af8, +0x11c00, 0x11c08, +0x11c0a, 0x11c36, +0x11c38, 0x11c45, +0x11c50, 0x11c6c, +0x11c70, 0x11c8f, +0x11c92, 0x11ca7, +0x11ca9, 0x11cb6, +0x11d00, 0x11d06, +0x11d08, 0x11d09, +0x11d0b, 0x11d36, +0x11d3a, 0x11d3a, +0x11d3c, 0x11d3d, +0x11d3f, 0x11d47, +0x11d50, 0x11d59, +0x11d60, 0x11d65, +0x11d67, 0x11d68, +0x11d6a, 0x11d8e, +0x11d90, 0x11d91, +0x11d93, 0x11d98, +0x11da0, 0x11da9, +0x11ee0, 0x11ef8, +0x12000, 0x12399, +0x12400, 0x1246e, +0x12470, 0x12474, +0x12480, 0x12543, +0x13000, 0x1342e, +0x14400, 0x14646, +0x16800, 0x16a38, +0x16a40, 0x16a5e, +0x16a60, 0x16a69, +0x16a6e, 0x16a6f, +0x16ad0, 0x16aed, +0x16af0, 0x16af5, +0x16b00, 0x16b45, +0x16b50, 0x16b59, +0x16b5b, 0x16b61, +0x16b63, 0x16b77, +0x16b7d, 0x16b8f, +0x16e40, 0x16e9a, +0x16f00, 0x16f44, +0x16f50, 0x16f7e, +0x16f8f, 0x16f9f, +0x16fe0, 0x16fe1, +0x17000, 0x187f1, +0x18800, 0x18af2, +0x1b000, 0x1b11e, +0x1b170, 0x1b2fb, +0x1bc00, 0x1bc6a, +0x1bc70, 0x1bc7c, +0x1bc80, 0x1bc88, +0x1bc90, 0x1bc99, +0x1bc9c, 0x1bca3, +0x1d000, 0x1d0f5, +0x1d100, 0x1d126, +0x1d129, 0x1d1e8, +0x1d200, 0x1d245, +0x1d2e0, 0x1d2f3, +0x1d300, 0x1d356, +0x1d360, 0x1d378, +0x1d400, 0x1d454, +0x1d456, 0x1d49c, +0x1d49e, 0x1d49f, +0x1d4a2, 0x1d4a2, +0x1d4a5, 0x1d4a6, +0x1d4a9, 0x1d4ac, +0x1d4ae, 0x1d4b9, +0x1d4bb, 0x1d4bb, +0x1d4bd, 0x1d4c3, +0x1d4c5, 0x1d505, +0x1d507, 0x1d50a, +0x1d50d, 0x1d514, +0x1d516, 0x1d51c, +0x1d51e, 0x1d539, +0x1d53b, 0x1d53e, +0x1d540, 0x1d544, +0x1d546, 0x1d546, +0x1d54a, 0x1d550, +0x1d552, 0x1d6a5, +0x1d6a8, 0x1d7cb, +0x1d7ce, 0x1da8b, +0x1da9b, 0x1da9f, +0x1daa1, 0x1daaf, +0x1e000, 0x1e006, +0x1e008, 0x1e018, +0x1e01b, 0x1e021, +0x1e023, 0x1e024, +0x1e026, 0x1e02a, +0x1e800, 0x1e8c4, +0x1e8c7, 0x1e8d6, +0x1e900, 0x1e94a, +0x1e950, 0x1e959, +0x1e95e, 0x1e95f, +0x1ec71, 0x1ecb4, +0x1ee00, 0x1ee03, +0x1ee05, 0x1ee1f, +0x1ee21, 0x1ee22, +0x1ee24, 0x1ee24, +0x1ee27, 0x1ee27, +0x1ee29, 0x1ee32, +0x1ee34, 0x1ee37, +0x1ee39, 0x1ee39, +0x1ee3b, 0x1ee3b, +0x1ee42, 0x1ee42, +0x1ee47, 0x1ee47, +0x1ee49, 0x1ee49, +0x1ee4b, 0x1ee4b, +0x1ee4d, 0x1ee4f, +0x1ee51, 0x1ee52, +0x1ee54, 0x1ee54, +0x1ee57, 0x1ee57, +0x1ee59, 0x1ee59, +0x1ee5b, 0x1ee5b, +0x1ee5d, 0x1ee5d, +0x1ee5f, 0x1ee5f, +0x1ee61, 0x1ee62, +0x1ee64, 0x1ee64, +0x1ee67, 0x1ee6a, +0x1ee6c, 0x1ee72, +0x1ee74, 0x1ee77, +0x1ee79, 0x1ee7c, +0x1ee7e, 0x1ee7e, +0x1ee80, 0x1ee89, +0x1ee8b, 0x1ee9b, +0x1eea1, 0x1eea3, +0x1eea5, 0x1eea9, +0x1eeab, 0x1eebb, +0x1eef0, 0x1eef1, +0x1f000, 0x1f02b, +0x1f030, 0x1f093, +0x1f0a0, 0x1f0ae, +0x1f0b1, 0x1f0bf, +0x1f0c1, 0x1f0cf, +0x1f0d1, 0x1f0f5, +0x1f100, 0x1f10c, +0x1f110, 0x1f16b, +0x1f170, 0x1f1ac, +0x1f1e6, 0x1f202, +0x1f210, 0x1f23b, +0x1f240, 0x1f248, +0x1f250, 0x1f251, +0x1f260, 0x1f265, +0x1f300, 0x1f6d4, +0x1f6e0, 0x1f6ec, +0x1f6f0, 0x1f6f9, +0x1f700, 0x1f773, +0x1f780, 0x1f7d8, +0x1f800, 0x1f80b, +0x1f810, 0x1f847, +0x1f850, 0x1f859, +0x1f860, 0x1f887, +0x1f890, 0x1f8ad, +0x1f900, 0x1f90b, +0x1f910, 0x1f93e, +0x1f940, 0x1f970, +0x1f973, 0x1f976, +0x1f97a, 0x1f97a, +0x1f97c, 0x1f9a2, +0x1f9b0, 0x1f9b9, +0x1f9c0, 0x1f9c2, +0x1f9d0, 0x1f9ff, +0x1fa60, 0x1fa6d, +0x20000, 0x2a6d6, +0x2a700, 0x2b734, +0x2b740, 0x2b81d, +0x2b820, 0x2cea1, +0x2ceb0, 0x2ebe0, +0x2f800, 0x2fa1d, +0xe0001, 0xe0001, +0xe0020, 0xe007f, +0xe0100, 0xe01ef, +0xf0000, 0xffffd, +0x100000, 0x10fffd, +}; /* END of CR_Graph */ + +/* PROPERTY: 'Lower': POSIX [[:Lower:]] */ +static const OnigCodePoint +CR_Lower[] = { 645, +0x0061, 0x007a, +0x00aa, 0x00aa, +0x00b5, 0x00b5, +0x00ba, 0x00ba, +0x00df, 0x00f6, +0x00f8, 0x00ff, +0x0101, 0x0101, +0x0103, 0x0103, +0x0105, 0x0105, +0x0107, 0x0107, +0x0109, 0x0109, +0x010b, 0x010b, +0x010d, 0x010d, +0x010f, 0x010f, +0x0111, 0x0111, +0x0113, 0x0113, +0x0115, 0x0115, +0x0117, 0x0117, +0x0119, 0x0119, +0x011b, 0x011b, +0x011d, 0x011d, +0x011f, 0x011f, +0x0121, 0x0121, +0x0123, 0x0123, +0x0125, 0x0125, +0x0127, 0x0127, +0x0129, 0x0129, +0x012b, 0x012b, +0x012d, 0x012d, +0x012f, 0x012f, +0x0131, 0x0131, +0x0133, 0x0133, +0x0135, 0x0135, +0x0137, 0x0138, +0x013a, 0x013a, +0x013c, 0x013c, +0x013e, 0x013e, +0x0140, 0x0140, +0x0142, 0x0142, +0x0144, 0x0144, +0x0146, 0x0146, +0x0148, 0x0149, +0x014b, 0x014b, +0x014d, 0x014d, +0x014f, 0x014f, +0x0151, 0x0151, +0x0153, 0x0153, +0x0155, 0x0155, +0x0157, 0x0157, +0x0159, 0x0159, +0x015b, 0x015b, +0x015d, 0x015d, +0x015f, 0x015f, +0x0161, 0x0161, +0x0163, 0x0163, +0x0165, 0x0165, +0x0167, 0x0167, +0x0169, 0x0169, +0x016b, 0x016b, +0x016d, 0x016d, +0x016f, 0x016f, +0x0171, 0x0171, +0x0173, 0x0173, +0x0175, 0x0175, +0x0177, 0x0177, +0x017a, 0x017a, +0x017c, 0x017c, +0x017e, 0x0180, +0x0183, 0x0183, +0x0185, 0x0185, +0x0188, 0x0188, +0x018c, 0x018d, +0x0192, 0x0192, +0x0195, 0x0195, +0x0199, 0x019b, +0x019e, 0x019e, +0x01a1, 0x01a1, +0x01a3, 0x01a3, +0x01a5, 0x01a5, +0x01a8, 0x01a8, +0x01aa, 0x01ab, +0x01ad, 0x01ad, +0x01b0, 0x01b0, +0x01b4, 0x01b4, +0x01b6, 0x01b6, +0x01b9, 0x01ba, +0x01bd, 0x01bf, +0x01c6, 0x01c6, +0x01c9, 0x01c9, +0x01cc, 0x01cc, +0x01ce, 0x01ce, +0x01d0, 0x01d0, +0x01d2, 0x01d2, +0x01d4, 0x01d4, +0x01d6, 0x01d6, +0x01d8, 0x01d8, +0x01da, 0x01da, +0x01dc, 0x01dd, +0x01df, 0x01df, +0x01e1, 0x01e1, +0x01e3, 0x01e3, +0x01e5, 0x01e5, +0x01e7, 0x01e7, +0x01e9, 0x01e9, +0x01eb, 0x01eb, +0x01ed, 0x01ed, +0x01ef, 0x01f0, +0x01f3, 0x01f3, +0x01f5, 0x01f5, +0x01f9, 0x01f9, +0x01fb, 0x01fb, +0x01fd, 0x01fd, +0x01ff, 0x01ff, +0x0201, 0x0201, +0x0203, 0x0203, +0x0205, 0x0205, +0x0207, 0x0207, +0x0209, 0x0209, +0x020b, 0x020b, +0x020d, 0x020d, +0x020f, 0x020f, +0x0211, 0x0211, +0x0213, 0x0213, +0x0215, 0x0215, +0x0217, 0x0217, +0x0219, 0x0219, +0x021b, 0x021b, +0x021d, 0x021d, +0x021f, 0x021f, +0x0221, 0x0221, +0x0223, 0x0223, +0x0225, 0x0225, +0x0227, 0x0227, +0x0229, 0x0229, +0x022b, 0x022b, +0x022d, 0x022d, +0x022f, 0x022f, +0x0231, 0x0231, +0x0233, 0x0239, +0x023c, 0x023c, +0x023f, 0x0240, +0x0242, 0x0242, +0x0247, 0x0247, +0x0249, 0x0249, +0x024b, 0x024b, +0x024d, 0x024d, +0x024f, 0x0293, +0x0295, 0x02b8, +0x02c0, 0x02c1, +0x02e0, 0x02e4, +0x0345, 0x0345, +0x0371, 0x0371, +0x0373, 0x0373, +0x0377, 0x0377, +0x037a, 0x037d, +0x0390, 0x0390, +0x03ac, 0x03ce, +0x03d0, 0x03d1, +0x03d5, 0x03d7, +0x03d9, 0x03d9, +0x03db, 0x03db, +0x03dd, 0x03dd, +0x03df, 0x03df, +0x03e1, 0x03e1, +0x03e3, 0x03e3, +0x03e5, 0x03e5, +0x03e7, 0x03e7, +0x03e9, 0x03e9, +0x03eb, 0x03eb, +0x03ed, 0x03ed, +0x03ef, 0x03f3, +0x03f5, 0x03f5, +0x03f8, 0x03f8, +0x03fb, 0x03fc, +0x0430, 0x045f, +0x0461, 0x0461, +0x0463, 0x0463, +0x0465, 0x0465, +0x0467, 0x0467, +0x0469, 0x0469, +0x046b, 0x046b, +0x046d, 0x046d, +0x046f, 0x046f, +0x0471, 0x0471, +0x0473, 0x0473, +0x0475, 0x0475, +0x0477, 0x0477, +0x0479, 0x0479, +0x047b, 0x047b, +0x047d, 0x047d, +0x047f, 0x047f, +0x0481, 0x0481, +0x048b, 0x048b, +0x048d, 0x048d, +0x048f, 0x048f, +0x0491, 0x0491, +0x0493, 0x0493, +0x0495, 0x0495, +0x0497, 0x0497, +0x0499, 0x0499, +0x049b, 0x049b, +0x049d, 0x049d, +0x049f, 0x049f, +0x04a1, 0x04a1, +0x04a3, 0x04a3, +0x04a5, 0x04a5, +0x04a7, 0x04a7, +0x04a9, 0x04a9, +0x04ab, 0x04ab, +0x04ad, 0x04ad, +0x04af, 0x04af, +0x04b1, 0x04b1, +0x04b3, 0x04b3, +0x04b5, 0x04b5, +0x04b7, 0x04b7, +0x04b9, 0x04b9, +0x04bb, 0x04bb, +0x04bd, 0x04bd, +0x04bf, 0x04bf, +0x04c2, 0x04c2, +0x04c4, 0x04c4, +0x04c6, 0x04c6, +0x04c8, 0x04c8, +0x04ca, 0x04ca, +0x04cc, 0x04cc, +0x04ce, 0x04cf, +0x04d1, 0x04d1, +0x04d3, 0x04d3, +0x04d5, 0x04d5, +0x04d7, 0x04d7, +0x04d9, 0x04d9, +0x04db, 0x04db, +0x04dd, 0x04dd, +0x04df, 0x04df, +0x04e1, 0x04e1, +0x04e3, 0x04e3, +0x04e5, 0x04e5, +0x04e7, 0x04e7, +0x04e9, 0x04e9, +0x04eb, 0x04eb, +0x04ed, 0x04ed, +0x04ef, 0x04ef, +0x04f1, 0x04f1, +0x04f3, 0x04f3, +0x04f5, 0x04f5, +0x04f7, 0x04f7, +0x04f9, 0x04f9, +0x04fb, 0x04fb, +0x04fd, 0x04fd, +0x04ff, 0x04ff, +0x0501, 0x0501, +0x0503, 0x0503, +0x0505, 0x0505, +0x0507, 0x0507, +0x0509, 0x0509, +0x050b, 0x050b, +0x050d, 0x050d, +0x050f, 0x050f, +0x0511, 0x0511, +0x0513, 0x0513, +0x0515, 0x0515, +0x0517, 0x0517, +0x0519, 0x0519, +0x051b, 0x051b, +0x051d, 0x051d, +0x051f, 0x051f, +0x0521, 0x0521, +0x0523, 0x0523, +0x0525, 0x0525, +0x0527, 0x0527, +0x0529, 0x0529, +0x052b, 0x052b, +0x052d, 0x052d, +0x052f, 0x052f, +0x0560, 0x0588, +0x10d0, 0x10fa, +0x10fd, 0x10ff, +0x13f8, 0x13fd, +0x1c80, 0x1c88, +0x1d00, 0x1dbf, +0x1e01, 0x1e01, +0x1e03, 0x1e03, +0x1e05, 0x1e05, +0x1e07, 0x1e07, +0x1e09, 0x1e09, +0x1e0b, 0x1e0b, +0x1e0d, 0x1e0d, +0x1e0f, 0x1e0f, +0x1e11, 0x1e11, +0x1e13, 0x1e13, +0x1e15, 0x1e15, +0x1e17, 0x1e17, +0x1e19, 0x1e19, +0x1e1b, 0x1e1b, +0x1e1d, 0x1e1d, +0x1e1f, 0x1e1f, +0x1e21, 0x1e21, +0x1e23, 0x1e23, +0x1e25, 0x1e25, +0x1e27, 0x1e27, +0x1e29, 0x1e29, +0x1e2b, 0x1e2b, +0x1e2d, 0x1e2d, +0x1e2f, 0x1e2f, +0x1e31, 0x1e31, +0x1e33, 0x1e33, +0x1e35, 0x1e35, +0x1e37, 0x1e37, +0x1e39, 0x1e39, +0x1e3b, 0x1e3b, +0x1e3d, 0x1e3d, +0x1e3f, 0x1e3f, +0x1e41, 0x1e41, +0x1e43, 0x1e43, +0x1e45, 0x1e45, +0x1e47, 0x1e47, +0x1e49, 0x1e49, +0x1e4b, 0x1e4b, +0x1e4d, 0x1e4d, +0x1e4f, 0x1e4f, +0x1e51, 0x1e51, +0x1e53, 0x1e53, +0x1e55, 0x1e55, +0x1e57, 0x1e57, +0x1e59, 0x1e59, +0x1e5b, 0x1e5b, +0x1e5d, 0x1e5d, +0x1e5f, 0x1e5f, +0x1e61, 0x1e61, +0x1e63, 0x1e63, +0x1e65, 0x1e65, +0x1e67, 0x1e67, +0x1e69, 0x1e69, +0x1e6b, 0x1e6b, +0x1e6d, 0x1e6d, +0x1e6f, 0x1e6f, +0x1e71, 0x1e71, +0x1e73, 0x1e73, +0x1e75, 0x1e75, +0x1e77, 0x1e77, +0x1e79, 0x1e79, +0x1e7b, 0x1e7b, +0x1e7d, 0x1e7d, +0x1e7f, 0x1e7f, +0x1e81, 0x1e81, +0x1e83, 0x1e83, +0x1e85, 0x1e85, +0x1e87, 0x1e87, +0x1e89, 0x1e89, +0x1e8b, 0x1e8b, +0x1e8d, 0x1e8d, +0x1e8f, 0x1e8f, +0x1e91, 0x1e91, +0x1e93, 0x1e93, +0x1e95, 0x1e9d, +0x1e9f, 0x1e9f, +0x1ea1, 0x1ea1, +0x1ea3, 0x1ea3, +0x1ea5, 0x1ea5, +0x1ea7, 0x1ea7, +0x1ea9, 0x1ea9, +0x1eab, 0x1eab, +0x1ead, 0x1ead, +0x1eaf, 0x1eaf, +0x1eb1, 0x1eb1, +0x1eb3, 0x1eb3, +0x1eb5, 0x1eb5, +0x1eb7, 0x1eb7, +0x1eb9, 0x1eb9, +0x1ebb, 0x1ebb, +0x1ebd, 0x1ebd, +0x1ebf, 0x1ebf, +0x1ec1, 0x1ec1, +0x1ec3, 0x1ec3, +0x1ec5, 0x1ec5, +0x1ec7, 0x1ec7, +0x1ec9, 0x1ec9, +0x1ecb, 0x1ecb, +0x1ecd, 0x1ecd, +0x1ecf, 0x1ecf, +0x1ed1, 0x1ed1, +0x1ed3, 0x1ed3, +0x1ed5, 0x1ed5, +0x1ed7, 0x1ed7, +0x1ed9, 0x1ed9, +0x1edb, 0x1edb, +0x1edd, 0x1edd, +0x1edf, 0x1edf, +0x1ee1, 0x1ee1, +0x1ee3, 0x1ee3, +0x1ee5, 0x1ee5, +0x1ee7, 0x1ee7, +0x1ee9, 0x1ee9, +0x1eeb, 0x1eeb, +0x1eed, 0x1eed, +0x1eef, 0x1eef, +0x1ef1, 0x1ef1, +0x1ef3, 0x1ef3, +0x1ef5, 0x1ef5, +0x1ef7, 0x1ef7, +0x1ef9, 0x1ef9, +0x1efb, 0x1efb, +0x1efd, 0x1efd, +0x1eff, 0x1f07, +0x1f10, 0x1f15, +0x1f20, 0x1f27, +0x1f30, 0x1f37, +0x1f40, 0x1f45, +0x1f50, 0x1f57, +0x1f60, 0x1f67, +0x1f70, 0x1f7d, +0x1f80, 0x1f87, +0x1f90, 0x1f97, +0x1fa0, 0x1fa7, +0x1fb0, 0x1fb4, +0x1fb6, 0x1fb7, +0x1fbe, 0x1fbe, +0x1fc2, 0x1fc4, +0x1fc6, 0x1fc7, +0x1fd0, 0x1fd3, +0x1fd6, 0x1fd7, +0x1fe0, 0x1fe7, +0x1ff2, 0x1ff4, +0x1ff6, 0x1ff7, +0x2071, 0x2071, +0x207f, 0x207f, +0x2090, 0x209c, +0x210a, 0x210a, +0x210e, 0x210f, +0x2113, 0x2113, +0x212f, 0x212f, +0x2134, 0x2134, +0x2139, 0x2139, +0x213c, 0x213d, +0x2146, 0x2149, +0x214e, 0x214e, +0x2170, 0x217f, +0x2184, 0x2184, +0x24d0, 0x24e9, +0x2c30, 0x2c5e, +0x2c61, 0x2c61, +0x2c65, 0x2c66, +0x2c68, 0x2c68, +0x2c6a, 0x2c6a, +0x2c6c, 0x2c6c, +0x2c71, 0x2c71, +0x2c73, 0x2c74, +0x2c76, 0x2c7d, +0x2c81, 0x2c81, +0x2c83, 0x2c83, +0x2c85, 0x2c85, +0x2c87, 0x2c87, +0x2c89, 0x2c89, +0x2c8b, 0x2c8b, +0x2c8d, 0x2c8d, +0x2c8f, 0x2c8f, +0x2c91, 0x2c91, +0x2c93, 0x2c93, +0x2c95, 0x2c95, +0x2c97, 0x2c97, +0x2c99, 0x2c99, +0x2c9b, 0x2c9b, +0x2c9d, 0x2c9d, +0x2c9f, 0x2c9f, +0x2ca1, 0x2ca1, +0x2ca3, 0x2ca3, +0x2ca5, 0x2ca5, +0x2ca7, 0x2ca7, +0x2ca9, 0x2ca9, +0x2cab, 0x2cab, +0x2cad, 0x2cad, +0x2caf, 0x2caf, +0x2cb1, 0x2cb1, +0x2cb3, 0x2cb3, +0x2cb5, 0x2cb5, +0x2cb7, 0x2cb7, +0x2cb9, 0x2cb9, +0x2cbb, 0x2cbb, +0x2cbd, 0x2cbd, +0x2cbf, 0x2cbf, +0x2cc1, 0x2cc1, +0x2cc3, 0x2cc3, +0x2cc5, 0x2cc5, +0x2cc7, 0x2cc7, +0x2cc9, 0x2cc9, +0x2ccb, 0x2ccb, +0x2ccd, 0x2ccd, +0x2ccf, 0x2ccf, +0x2cd1, 0x2cd1, +0x2cd3, 0x2cd3, +0x2cd5, 0x2cd5, +0x2cd7, 0x2cd7, +0x2cd9, 0x2cd9, +0x2cdb, 0x2cdb, +0x2cdd, 0x2cdd, +0x2cdf, 0x2cdf, +0x2ce1, 0x2ce1, +0x2ce3, 0x2ce4, +0x2cec, 0x2cec, +0x2cee, 0x2cee, +0x2cf3, 0x2cf3, +0x2d00, 0x2d25, +0x2d27, 0x2d27, +0x2d2d, 0x2d2d, +0xa641, 0xa641, +0xa643, 0xa643, +0xa645, 0xa645, +0xa647, 0xa647, +0xa649, 0xa649, +0xa64b, 0xa64b, +0xa64d, 0xa64d, +0xa64f, 0xa64f, +0xa651, 0xa651, +0xa653, 0xa653, +0xa655, 0xa655, +0xa657, 0xa657, +0xa659, 0xa659, +0xa65b, 0xa65b, +0xa65d, 0xa65d, +0xa65f, 0xa65f, +0xa661, 0xa661, +0xa663, 0xa663, +0xa665, 0xa665, +0xa667, 0xa667, +0xa669, 0xa669, +0xa66b, 0xa66b, +0xa66d, 0xa66d, +0xa681, 0xa681, +0xa683, 0xa683, +0xa685, 0xa685, +0xa687, 0xa687, +0xa689, 0xa689, +0xa68b, 0xa68b, +0xa68d, 0xa68d, +0xa68f, 0xa68f, +0xa691, 0xa691, +0xa693, 0xa693, +0xa695, 0xa695, +0xa697, 0xa697, +0xa699, 0xa699, +0xa69b, 0xa69d, +0xa723, 0xa723, +0xa725, 0xa725, +0xa727, 0xa727, +0xa729, 0xa729, +0xa72b, 0xa72b, +0xa72d, 0xa72d, +0xa72f, 0xa731, +0xa733, 0xa733, +0xa735, 0xa735, +0xa737, 0xa737, +0xa739, 0xa739, +0xa73b, 0xa73b, +0xa73d, 0xa73d, +0xa73f, 0xa73f, +0xa741, 0xa741, +0xa743, 0xa743, +0xa745, 0xa745, +0xa747, 0xa747, +0xa749, 0xa749, +0xa74b, 0xa74b, +0xa74d, 0xa74d, +0xa74f, 0xa74f, +0xa751, 0xa751, +0xa753, 0xa753, +0xa755, 0xa755, +0xa757, 0xa757, +0xa759, 0xa759, +0xa75b, 0xa75b, +0xa75d, 0xa75d, +0xa75f, 0xa75f, +0xa761, 0xa761, +0xa763, 0xa763, +0xa765, 0xa765, +0xa767, 0xa767, +0xa769, 0xa769, +0xa76b, 0xa76b, +0xa76d, 0xa76d, +0xa76f, 0xa778, +0xa77a, 0xa77a, +0xa77c, 0xa77c, +0xa77f, 0xa77f, +0xa781, 0xa781, +0xa783, 0xa783, +0xa785, 0xa785, +0xa787, 0xa787, +0xa78c, 0xa78c, +0xa78e, 0xa78e, +0xa791, 0xa791, +0xa793, 0xa795, +0xa797, 0xa797, +0xa799, 0xa799, +0xa79b, 0xa79b, +0xa79d, 0xa79d, +0xa79f, 0xa79f, +0xa7a1, 0xa7a1, +0xa7a3, 0xa7a3, +0xa7a5, 0xa7a5, +0xa7a7, 0xa7a7, +0xa7a9, 0xa7a9, +0xa7af, 0xa7af, +0xa7b5, 0xa7b5, +0xa7b7, 0xa7b7, +0xa7b9, 0xa7b9, +0xa7f8, 0xa7fa, +0xab30, 0xab5a, +0xab5c, 0xab65, +0xab70, 0xabbf, +0xfb00, 0xfb06, +0xfb13, 0xfb17, +0xff41, 0xff5a, +0x10428, 0x1044f, +0x104d8, 0x104fb, +0x10cc0, 0x10cf2, +0x118c0, 0x118df, +0x16e60, 0x16e7f, +0x1d41a, 0x1d433, +0x1d44e, 0x1d454, +0x1d456, 0x1d467, +0x1d482, 0x1d49b, +0x1d4b6, 0x1d4b9, +0x1d4bb, 0x1d4bb, +0x1d4bd, 0x1d4c3, +0x1d4c5, 0x1d4cf, +0x1d4ea, 0x1d503, +0x1d51e, 0x1d537, +0x1d552, 0x1d56b, +0x1d586, 0x1d59f, +0x1d5ba, 0x1d5d3, +0x1d5ee, 0x1d607, +0x1d622, 0x1d63b, +0x1d656, 0x1d66f, +0x1d68a, 0x1d6a5, +0x1d6c2, 0x1d6da, +0x1d6dc, 0x1d6e1, +0x1d6fc, 0x1d714, +0x1d716, 0x1d71b, +0x1d736, 0x1d74e, +0x1d750, 0x1d755, +0x1d770, 0x1d788, +0x1d78a, 0x1d78f, +0x1d7aa, 0x1d7c2, +0x1d7c4, 0x1d7c9, +0x1d7cb, 0x1d7cb, +0x1e922, 0x1e943, +}; /* END of CR_Lower */ + +/* PROPERTY: 'Print': POSIX [[:Print:]] */ +static const OnigCodePoint +CR_Print[] = { 660, +0x0020, 0x007e, +0x00a0, 0x0377, +0x037a, 0x037f, +0x0384, 0x038a, +0x038c, 0x038c, +0x038e, 0x03a1, +0x03a3, 0x052f, +0x0531, 0x0556, +0x0559, 0x058a, +0x058d, 0x058f, +0x0591, 0x05c7, +0x05d0, 0x05ea, +0x05ef, 0x05f4, +0x0600, 0x061c, +0x061e, 0x070d, +0x070f, 0x074a, +0x074d, 0x07b1, +0x07c0, 0x07fa, +0x07fd, 0x082d, +0x0830, 0x083e, +0x0840, 0x085b, +0x085e, 0x085e, +0x0860, 0x086a, +0x08a0, 0x08b4, +0x08b6, 0x08bd, +0x08d3, 0x0983, +0x0985, 0x098c, +0x098f, 0x0990, +0x0993, 0x09a8, +0x09aa, 0x09b0, +0x09b2, 0x09b2, +0x09b6, 0x09b9, +0x09bc, 0x09c4, +0x09c7, 0x09c8, +0x09cb, 0x09ce, +0x09d7, 0x09d7, +0x09dc, 0x09dd, +0x09df, 0x09e3, +0x09e6, 0x09fe, +0x0a01, 0x0a03, +0x0a05, 0x0a0a, +0x0a0f, 0x0a10, +0x0a13, 0x0a28, +0x0a2a, 0x0a30, +0x0a32, 0x0a33, +0x0a35, 0x0a36, +0x0a38, 0x0a39, +0x0a3c, 0x0a3c, +0x0a3e, 0x0a42, +0x0a47, 0x0a48, +0x0a4b, 0x0a4d, +0x0a51, 0x0a51, +0x0a59, 0x0a5c, +0x0a5e, 0x0a5e, +0x0a66, 0x0a76, +0x0a81, 0x0a83, +0x0a85, 0x0a8d, +0x0a8f, 0x0a91, +0x0a93, 0x0aa8, +0x0aaa, 0x0ab0, +0x0ab2, 0x0ab3, +0x0ab5, 0x0ab9, +0x0abc, 0x0ac5, +0x0ac7, 0x0ac9, +0x0acb, 0x0acd, +0x0ad0, 0x0ad0, +0x0ae0, 0x0ae3, +0x0ae6, 0x0af1, +0x0af9, 0x0aff, +0x0b01, 0x0b03, +0x0b05, 0x0b0c, +0x0b0f, 0x0b10, +0x0b13, 0x0b28, +0x0b2a, 0x0b30, +0x0b32, 0x0b33, +0x0b35, 0x0b39, +0x0b3c, 0x0b44, +0x0b47, 0x0b48, +0x0b4b, 0x0b4d, +0x0b56, 0x0b57, +0x0b5c, 0x0b5d, +0x0b5f, 0x0b63, +0x0b66, 0x0b77, +0x0b82, 0x0b83, +0x0b85, 0x0b8a, +0x0b8e, 0x0b90, +0x0b92, 0x0b95, +0x0b99, 0x0b9a, +0x0b9c, 0x0b9c, +0x0b9e, 0x0b9f, +0x0ba3, 0x0ba4, +0x0ba8, 0x0baa, +0x0bae, 0x0bb9, +0x0bbe, 0x0bc2, +0x0bc6, 0x0bc8, +0x0bca, 0x0bcd, +0x0bd0, 0x0bd0, +0x0bd7, 0x0bd7, +0x0be6, 0x0bfa, +0x0c00, 0x0c0c, +0x0c0e, 0x0c10, +0x0c12, 0x0c28, +0x0c2a, 0x0c39, +0x0c3d, 0x0c44, +0x0c46, 0x0c48, +0x0c4a, 0x0c4d, +0x0c55, 0x0c56, +0x0c58, 0x0c5a, +0x0c60, 0x0c63, +0x0c66, 0x0c6f, +0x0c78, 0x0c8c, +0x0c8e, 0x0c90, +0x0c92, 0x0ca8, +0x0caa, 0x0cb3, +0x0cb5, 0x0cb9, +0x0cbc, 0x0cc4, +0x0cc6, 0x0cc8, +0x0cca, 0x0ccd, +0x0cd5, 0x0cd6, +0x0cde, 0x0cde, +0x0ce0, 0x0ce3, +0x0ce6, 0x0cef, +0x0cf1, 0x0cf2, +0x0d00, 0x0d03, +0x0d05, 0x0d0c, +0x0d0e, 0x0d10, +0x0d12, 0x0d44, +0x0d46, 0x0d48, +0x0d4a, 0x0d4f, +0x0d54, 0x0d63, +0x0d66, 0x0d7f, +0x0d82, 0x0d83, +0x0d85, 0x0d96, +0x0d9a, 0x0db1, +0x0db3, 0x0dbb, +0x0dbd, 0x0dbd, +0x0dc0, 0x0dc6, +0x0dca, 0x0dca, +0x0dcf, 0x0dd4, +0x0dd6, 0x0dd6, +0x0dd8, 0x0ddf, +0x0de6, 0x0def, +0x0df2, 0x0df4, +0x0e01, 0x0e3a, +0x0e3f, 0x0e5b, +0x0e81, 0x0e82, +0x0e84, 0x0e84, +0x0e87, 0x0e88, +0x0e8a, 0x0e8a, +0x0e8d, 0x0e8d, +0x0e94, 0x0e97, +0x0e99, 0x0e9f, +0x0ea1, 0x0ea3, +0x0ea5, 0x0ea5, +0x0ea7, 0x0ea7, +0x0eaa, 0x0eab, +0x0ead, 0x0eb9, +0x0ebb, 0x0ebd, +0x0ec0, 0x0ec4, +0x0ec6, 0x0ec6, +0x0ec8, 0x0ecd, +0x0ed0, 0x0ed9, +0x0edc, 0x0edf, +0x0f00, 0x0f47, +0x0f49, 0x0f6c, +0x0f71, 0x0f97, +0x0f99, 0x0fbc, +0x0fbe, 0x0fcc, +0x0fce, 0x0fda, +0x1000, 0x10c5, +0x10c7, 0x10c7, +0x10cd, 0x10cd, +0x10d0, 0x1248, +0x124a, 0x124d, +0x1250, 0x1256, +0x1258, 0x1258, +0x125a, 0x125d, +0x1260, 0x1288, +0x128a, 0x128d, +0x1290, 0x12b0, +0x12b2, 0x12b5, +0x12b8, 0x12be, +0x12c0, 0x12c0, +0x12c2, 0x12c5, +0x12c8, 0x12d6, +0x12d8, 0x1310, +0x1312, 0x1315, +0x1318, 0x135a, +0x135d, 0x137c, +0x1380, 0x1399, +0x13a0, 0x13f5, +0x13f8, 0x13fd, +0x1400, 0x169c, +0x16a0, 0x16f8, +0x1700, 0x170c, +0x170e, 0x1714, +0x1720, 0x1736, +0x1740, 0x1753, +0x1760, 0x176c, +0x176e, 0x1770, +0x1772, 0x1773, +0x1780, 0x17dd, +0x17e0, 0x17e9, +0x17f0, 0x17f9, +0x1800, 0x180e, +0x1810, 0x1819, +0x1820, 0x1878, +0x1880, 0x18aa, +0x18b0, 0x18f5, +0x1900, 0x191e, +0x1920, 0x192b, +0x1930, 0x193b, +0x1940, 0x1940, +0x1944, 0x196d, +0x1970, 0x1974, +0x1980, 0x19ab, +0x19b0, 0x19c9, +0x19d0, 0x19da, +0x19de, 0x1a1b, +0x1a1e, 0x1a5e, +0x1a60, 0x1a7c, +0x1a7f, 0x1a89, +0x1a90, 0x1a99, +0x1aa0, 0x1aad, +0x1ab0, 0x1abe, +0x1b00, 0x1b4b, +0x1b50, 0x1b7c, +0x1b80, 0x1bf3, +0x1bfc, 0x1c37, +0x1c3b, 0x1c49, +0x1c4d, 0x1c88, +0x1c90, 0x1cba, +0x1cbd, 0x1cc7, +0x1cd0, 0x1cf9, +0x1d00, 0x1df9, +0x1dfb, 0x1f15, +0x1f18, 0x1f1d, +0x1f20, 0x1f45, +0x1f48, 0x1f4d, +0x1f50, 0x1f57, +0x1f59, 0x1f59, +0x1f5b, 0x1f5b, +0x1f5d, 0x1f5d, +0x1f5f, 0x1f7d, +0x1f80, 0x1fb4, +0x1fb6, 0x1fc4, +0x1fc6, 0x1fd3, +0x1fd6, 0x1fdb, +0x1fdd, 0x1fef, +0x1ff2, 0x1ff4, +0x1ff6, 0x1ffe, +0x2000, 0x2027, +0x202a, 0x2064, +0x2066, 0x2071, +0x2074, 0x208e, +0x2090, 0x209c, +0x20a0, 0x20bf, +0x20d0, 0x20f0, +0x2100, 0x218b, +0x2190, 0x2426, +0x2440, 0x244a, +0x2460, 0x2b73, +0x2b76, 0x2b95, +0x2b98, 0x2bc8, +0x2bca, 0x2bfe, +0x2c00, 0x2c2e, +0x2c30, 0x2c5e, +0x2c60, 0x2cf3, +0x2cf9, 0x2d25, +0x2d27, 0x2d27, +0x2d2d, 0x2d2d, +0x2d30, 0x2d67, +0x2d6f, 0x2d70, +0x2d7f, 0x2d96, +0x2da0, 0x2da6, +0x2da8, 0x2dae, +0x2db0, 0x2db6, +0x2db8, 0x2dbe, +0x2dc0, 0x2dc6, +0x2dc8, 0x2dce, +0x2dd0, 0x2dd6, +0x2dd8, 0x2dde, +0x2de0, 0x2e4e, +0x2e80, 0x2e99, +0x2e9b, 0x2ef3, +0x2f00, 0x2fd5, +0x2ff0, 0x2ffb, +0x3000, 0x303f, +0x3041, 0x3096, +0x3099, 0x30ff, +0x3105, 0x312f, +0x3131, 0x318e, +0x3190, 0x31ba, +0x31c0, 0x31e3, +0x31f0, 0x321e, +0x3220, 0x32fe, +0x3300, 0x4db5, +0x4dc0, 0x9fef, +0xa000, 0xa48c, +0xa490, 0xa4c6, +0xa4d0, 0xa62b, +0xa640, 0xa6f7, +0xa700, 0xa7b9, +0xa7f7, 0xa82b, +0xa830, 0xa839, +0xa840, 0xa877, +0xa880, 0xa8c5, +0xa8ce, 0xa8d9, +0xa8e0, 0xa953, +0xa95f, 0xa97c, +0xa980, 0xa9cd, +0xa9cf, 0xa9d9, +0xa9de, 0xa9fe, +0xaa00, 0xaa36, +0xaa40, 0xaa4d, +0xaa50, 0xaa59, +0xaa5c, 0xaac2, +0xaadb, 0xaaf6, +0xab01, 0xab06, +0xab09, 0xab0e, +0xab11, 0xab16, +0xab20, 0xab26, +0xab28, 0xab2e, +0xab30, 0xab65, +0xab70, 0xabed, +0xabf0, 0xabf9, +0xac00, 0xd7a3, +0xd7b0, 0xd7c6, +0xd7cb, 0xd7fb, +0xe000, 0xfa6d, +0xfa70, 0xfad9, +0xfb00, 0xfb06, +0xfb13, 0xfb17, +0xfb1d, 0xfb36, +0xfb38, 0xfb3c, +0xfb3e, 0xfb3e, +0xfb40, 0xfb41, +0xfb43, 0xfb44, +0xfb46, 0xfbc1, +0xfbd3, 0xfd3f, +0xfd50, 0xfd8f, +0xfd92, 0xfdc7, +0xfdf0, 0xfdfd, +0xfe00, 0xfe19, +0xfe20, 0xfe52, +0xfe54, 0xfe66, +0xfe68, 0xfe6b, +0xfe70, 0xfe74, +0xfe76, 0xfefc, +0xfeff, 0xfeff, +0xff01, 0xffbe, +0xffc2, 0xffc7, +0xffca, 0xffcf, +0xffd2, 0xffd7, +0xffda, 0xffdc, +0xffe0, 0xffe6, +0xffe8, 0xffee, +0xfff9, 0xfffd, +0x10000, 0x1000b, +0x1000d, 0x10026, +0x10028, 0x1003a, +0x1003c, 0x1003d, +0x1003f, 0x1004d, +0x10050, 0x1005d, +0x10080, 0x100fa, +0x10100, 0x10102, +0x10107, 0x10133, +0x10137, 0x1018e, +0x10190, 0x1019b, +0x101a0, 0x101a0, +0x101d0, 0x101fd, +0x10280, 0x1029c, +0x102a0, 0x102d0, +0x102e0, 0x102fb, +0x10300, 0x10323, +0x1032d, 0x1034a, +0x10350, 0x1037a, +0x10380, 0x1039d, +0x1039f, 0x103c3, +0x103c8, 0x103d5, +0x10400, 0x1049d, +0x104a0, 0x104a9, +0x104b0, 0x104d3, +0x104d8, 0x104fb, +0x10500, 0x10527, +0x10530, 0x10563, +0x1056f, 0x1056f, +0x10600, 0x10736, +0x10740, 0x10755, +0x10760, 0x10767, +0x10800, 0x10805, +0x10808, 0x10808, +0x1080a, 0x10835, +0x10837, 0x10838, +0x1083c, 0x1083c, +0x1083f, 0x10855, +0x10857, 0x1089e, +0x108a7, 0x108af, +0x108e0, 0x108f2, +0x108f4, 0x108f5, +0x108fb, 0x1091b, +0x1091f, 0x10939, +0x1093f, 0x1093f, +0x10980, 0x109b7, +0x109bc, 0x109cf, +0x109d2, 0x10a03, +0x10a05, 0x10a06, +0x10a0c, 0x10a13, +0x10a15, 0x10a17, +0x10a19, 0x10a35, +0x10a38, 0x10a3a, +0x10a3f, 0x10a48, +0x10a50, 0x10a58, +0x10a60, 0x10a9f, +0x10ac0, 0x10ae6, +0x10aeb, 0x10af6, +0x10b00, 0x10b35, +0x10b39, 0x10b55, +0x10b58, 0x10b72, +0x10b78, 0x10b91, +0x10b99, 0x10b9c, +0x10ba9, 0x10baf, +0x10c00, 0x10c48, +0x10c80, 0x10cb2, +0x10cc0, 0x10cf2, +0x10cfa, 0x10d27, +0x10d30, 0x10d39, +0x10e60, 0x10e7e, +0x10f00, 0x10f27, +0x10f30, 0x10f59, +0x11000, 0x1104d, +0x11052, 0x1106f, +0x1107f, 0x110c1, +0x110cd, 0x110cd, +0x110d0, 0x110e8, +0x110f0, 0x110f9, +0x11100, 0x11134, +0x11136, 0x11146, +0x11150, 0x11176, +0x11180, 0x111cd, +0x111d0, 0x111df, +0x111e1, 0x111f4, +0x11200, 0x11211, +0x11213, 0x1123e, +0x11280, 0x11286, +0x11288, 0x11288, +0x1128a, 0x1128d, +0x1128f, 0x1129d, +0x1129f, 0x112a9, +0x112b0, 0x112ea, +0x112f0, 0x112f9, +0x11300, 0x11303, +0x11305, 0x1130c, +0x1130f, 0x11310, +0x11313, 0x11328, +0x1132a, 0x11330, +0x11332, 0x11333, +0x11335, 0x11339, +0x1133b, 0x11344, +0x11347, 0x11348, +0x1134b, 0x1134d, +0x11350, 0x11350, +0x11357, 0x11357, +0x1135d, 0x11363, +0x11366, 0x1136c, +0x11370, 0x11374, +0x11400, 0x11459, +0x1145b, 0x1145b, +0x1145d, 0x1145e, +0x11480, 0x114c7, +0x114d0, 0x114d9, +0x11580, 0x115b5, +0x115b8, 0x115dd, +0x11600, 0x11644, +0x11650, 0x11659, +0x11660, 0x1166c, +0x11680, 0x116b7, +0x116c0, 0x116c9, +0x11700, 0x1171a, +0x1171d, 0x1172b, +0x11730, 0x1173f, +0x11800, 0x1183b, +0x118a0, 0x118f2, +0x118ff, 0x118ff, +0x11a00, 0x11a47, +0x11a50, 0x11a83, +0x11a86, 0x11aa2, +0x11ac0, 0x11af8, +0x11c00, 0x11c08, +0x11c0a, 0x11c36, +0x11c38, 0x11c45, +0x11c50, 0x11c6c, +0x11c70, 0x11c8f, +0x11c92, 0x11ca7, +0x11ca9, 0x11cb6, +0x11d00, 0x11d06, +0x11d08, 0x11d09, +0x11d0b, 0x11d36, +0x11d3a, 0x11d3a, +0x11d3c, 0x11d3d, +0x11d3f, 0x11d47, +0x11d50, 0x11d59, +0x11d60, 0x11d65, +0x11d67, 0x11d68, +0x11d6a, 0x11d8e, +0x11d90, 0x11d91, +0x11d93, 0x11d98, +0x11da0, 0x11da9, +0x11ee0, 0x11ef8, +0x12000, 0x12399, +0x12400, 0x1246e, +0x12470, 0x12474, +0x12480, 0x12543, +0x13000, 0x1342e, +0x14400, 0x14646, +0x16800, 0x16a38, +0x16a40, 0x16a5e, +0x16a60, 0x16a69, +0x16a6e, 0x16a6f, +0x16ad0, 0x16aed, +0x16af0, 0x16af5, +0x16b00, 0x16b45, +0x16b50, 0x16b59, +0x16b5b, 0x16b61, +0x16b63, 0x16b77, +0x16b7d, 0x16b8f, +0x16e40, 0x16e9a, +0x16f00, 0x16f44, +0x16f50, 0x16f7e, +0x16f8f, 0x16f9f, +0x16fe0, 0x16fe1, +0x17000, 0x187f1, +0x18800, 0x18af2, +0x1b000, 0x1b11e, +0x1b170, 0x1b2fb, +0x1bc00, 0x1bc6a, +0x1bc70, 0x1bc7c, +0x1bc80, 0x1bc88, +0x1bc90, 0x1bc99, +0x1bc9c, 0x1bca3, +0x1d000, 0x1d0f5, +0x1d100, 0x1d126, +0x1d129, 0x1d1e8, +0x1d200, 0x1d245, +0x1d2e0, 0x1d2f3, +0x1d300, 0x1d356, +0x1d360, 0x1d378, +0x1d400, 0x1d454, +0x1d456, 0x1d49c, +0x1d49e, 0x1d49f, +0x1d4a2, 0x1d4a2, +0x1d4a5, 0x1d4a6, +0x1d4a9, 0x1d4ac, +0x1d4ae, 0x1d4b9, +0x1d4bb, 0x1d4bb, +0x1d4bd, 0x1d4c3, +0x1d4c5, 0x1d505, +0x1d507, 0x1d50a, +0x1d50d, 0x1d514, +0x1d516, 0x1d51c, +0x1d51e, 0x1d539, +0x1d53b, 0x1d53e, +0x1d540, 0x1d544, +0x1d546, 0x1d546, +0x1d54a, 0x1d550, +0x1d552, 0x1d6a5, +0x1d6a8, 0x1d7cb, +0x1d7ce, 0x1da8b, +0x1da9b, 0x1da9f, +0x1daa1, 0x1daaf, +0x1e000, 0x1e006, +0x1e008, 0x1e018, +0x1e01b, 0x1e021, +0x1e023, 0x1e024, +0x1e026, 0x1e02a, +0x1e800, 0x1e8c4, +0x1e8c7, 0x1e8d6, +0x1e900, 0x1e94a, +0x1e950, 0x1e959, +0x1e95e, 0x1e95f, +0x1ec71, 0x1ecb4, +0x1ee00, 0x1ee03, +0x1ee05, 0x1ee1f, +0x1ee21, 0x1ee22, +0x1ee24, 0x1ee24, +0x1ee27, 0x1ee27, +0x1ee29, 0x1ee32, +0x1ee34, 0x1ee37, +0x1ee39, 0x1ee39, +0x1ee3b, 0x1ee3b, +0x1ee42, 0x1ee42, +0x1ee47, 0x1ee47, +0x1ee49, 0x1ee49, +0x1ee4b, 0x1ee4b, +0x1ee4d, 0x1ee4f, +0x1ee51, 0x1ee52, +0x1ee54, 0x1ee54, +0x1ee57, 0x1ee57, +0x1ee59, 0x1ee59, +0x1ee5b, 0x1ee5b, +0x1ee5d, 0x1ee5d, +0x1ee5f, 0x1ee5f, +0x1ee61, 0x1ee62, +0x1ee64, 0x1ee64, +0x1ee67, 0x1ee6a, +0x1ee6c, 0x1ee72, +0x1ee74, 0x1ee77, +0x1ee79, 0x1ee7c, +0x1ee7e, 0x1ee7e, +0x1ee80, 0x1ee89, +0x1ee8b, 0x1ee9b, +0x1eea1, 0x1eea3, +0x1eea5, 0x1eea9, +0x1eeab, 0x1eebb, +0x1eef0, 0x1eef1, +0x1f000, 0x1f02b, +0x1f030, 0x1f093, +0x1f0a0, 0x1f0ae, +0x1f0b1, 0x1f0bf, +0x1f0c1, 0x1f0cf, +0x1f0d1, 0x1f0f5, +0x1f100, 0x1f10c, +0x1f110, 0x1f16b, +0x1f170, 0x1f1ac, +0x1f1e6, 0x1f202, +0x1f210, 0x1f23b, +0x1f240, 0x1f248, +0x1f250, 0x1f251, +0x1f260, 0x1f265, +0x1f300, 0x1f6d4, +0x1f6e0, 0x1f6ec, +0x1f6f0, 0x1f6f9, +0x1f700, 0x1f773, +0x1f780, 0x1f7d8, +0x1f800, 0x1f80b, +0x1f810, 0x1f847, +0x1f850, 0x1f859, +0x1f860, 0x1f887, +0x1f890, 0x1f8ad, +0x1f900, 0x1f90b, +0x1f910, 0x1f93e, +0x1f940, 0x1f970, +0x1f973, 0x1f976, +0x1f97a, 0x1f97a, +0x1f97c, 0x1f9a2, +0x1f9b0, 0x1f9b9, +0x1f9c0, 0x1f9c2, +0x1f9d0, 0x1f9ff, +0x1fa60, 0x1fa6d, +0x20000, 0x2a6d6, +0x2a700, 0x2b734, +0x2b740, 0x2b81d, +0x2b820, 0x2cea1, +0x2ceb0, 0x2ebe0, +0x2f800, 0x2fa1d, +0xe0001, 0xe0001, +0xe0020, 0xe007f, +0xe0100, 0xe01ef, +0xf0000, 0xffffd, +0x100000, 0x10fffd, +}; /* END of CR_Print */ + +/* PROPERTY: 'Punct': POSIX [[:Punct:]] */ +static const OnigCodePoint +CR_Punct[] = { 178, +0x0021, 0x0023, +0x0025, 0x002a, +0x002c, 0x002f, +0x003a, 0x003b, +0x003f, 0x0040, +0x005b, 0x005d, +0x005f, 0x005f, +0x007b, 0x007b, +0x007d, 0x007d, +0x00a1, 0x00a1, +0x00a7, 0x00a7, +0x00ab, 0x00ab, +0x00b6, 0x00b7, +0x00bb, 0x00bb, +0x00bf, 0x00bf, +0x037e, 0x037e, +0x0387, 0x0387, +0x055a, 0x055f, +0x0589, 0x058a, +0x05be, 0x05be, +0x05c0, 0x05c0, +0x05c3, 0x05c3, +0x05c6, 0x05c6, +0x05f3, 0x05f4, +0x0609, 0x060a, +0x060c, 0x060d, +0x061b, 0x061b, +0x061e, 0x061f, +0x066a, 0x066d, +0x06d4, 0x06d4, +0x0700, 0x070d, +0x07f7, 0x07f9, +0x0830, 0x083e, +0x085e, 0x085e, +0x0964, 0x0965, +0x0970, 0x0970, +0x09fd, 0x09fd, +0x0a76, 0x0a76, +0x0af0, 0x0af0, +0x0c84, 0x0c84, +0x0df4, 0x0df4, +0x0e4f, 0x0e4f, +0x0e5a, 0x0e5b, +0x0f04, 0x0f12, +0x0f14, 0x0f14, +0x0f3a, 0x0f3d, +0x0f85, 0x0f85, +0x0fd0, 0x0fd4, +0x0fd9, 0x0fda, +0x104a, 0x104f, +0x10fb, 0x10fb, +0x1360, 0x1368, +0x1400, 0x1400, +0x166d, 0x166e, +0x169b, 0x169c, +0x16eb, 0x16ed, +0x1735, 0x1736, +0x17d4, 0x17d6, +0x17d8, 0x17da, +0x1800, 0x180a, +0x1944, 0x1945, +0x1a1e, 0x1a1f, +0x1aa0, 0x1aa6, +0x1aa8, 0x1aad, +0x1b5a, 0x1b60, +0x1bfc, 0x1bff, +0x1c3b, 0x1c3f, +0x1c7e, 0x1c7f, +0x1cc0, 0x1cc7, +0x1cd3, 0x1cd3, +0x2010, 0x2027, +0x2030, 0x2043, +0x2045, 0x2051, +0x2053, 0x205e, +0x207d, 0x207e, +0x208d, 0x208e, +0x2308, 0x230b, +0x2329, 0x232a, +0x2768, 0x2775, +0x27c5, 0x27c6, +0x27e6, 0x27ef, +0x2983, 0x2998, +0x29d8, 0x29db, +0x29fc, 0x29fd, +0x2cf9, 0x2cfc, +0x2cfe, 0x2cff, +0x2d70, 0x2d70, +0x2e00, 0x2e2e, +0x2e30, 0x2e4e, +0x3001, 0x3003, +0x3008, 0x3011, +0x3014, 0x301f, +0x3030, 0x3030, +0x303d, 0x303d, +0x30a0, 0x30a0, +0x30fb, 0x30fb, +0xa4fe, 0xa4ff, +0xa60d, 0xa60f, +0xa673, 0xa673, +0xa67e, 0xa67e, +0xa6f2, 0xa6f7, +0xa874, 0xa877, +0xa8ce, 0xa8cf, +0xa8f8, 0xa8fa, +0xa8fc, 0xa8fc, +0xa92e, 0xa92f, +0xa95f, 0xa95f, +0xa9c1, 0xa9cd, +0xa9de, 0xa9df, +0xaa5c, 0xaa5f, +0xaade, 0xaadf, +0xaaf0, 0xaaf1, +0xabeb, 0xabeb, +0xfd3e, 0xfd3f, +0xfe10, 0xfe19, +0xfe30, 0xfe52, +0xfe54, 0xfe61, +0xfe63, 0xfe63, +0xfe68, 0xfe68, +0xfe6a, 0xfe6b, +0xff01, 0xff03, +0xff05, 0xff0a, +0xff0c, 0xff0f, +0xff1a, 0xff1b, +0xff1f, 0xff20, +0xff3b, 0xff3d, +0xff3f, 0xff3f, +0xff5b, 0xff5b, +0xff5d, 0xff5d, +0xff5f, 0xff65, +0x10100, 0x10102, +0x1039f, 0x1039f, +0x103d0, 0x103d0, +0x1056f, 0x1056f, +0x10857, 0x10857, +0x1091f, 0x1091f, +0x1093f, 0x1093f, +0x10a50, 0x10a58, +0x10a7f, 0x10a7f, +0x10af0, 0x10af6, +0x10b39, 0x10b3f, +0x10b99, 0x10b9c, +0x10f55, 0x10f59, +0x11047, 0x1104d, +0x110bb, 0x110bc, +0x110be, 0x110c1, +0x11140, 0x11143, +0x11174, 0x11175, +0x111c5, 0x111c8, +0x111cd, 0x111cd, +0x111db, 0x111db, +0x111dd, 0x111df, +0x11238, 0x1123d, +0x112a9, 0x112a9, +0x1144b, 0x1144f, +0x1145b, 0x1145b, +0x1145d, 0x1145d, +0x114c6, 0x114c6, +0x115c1, 0x115d7, +0x11641, 0x11643, +0x11660, 0x1166c, +0x1173c, 0x1173e, +0x1183b, 0x1183b, +0x11a3f, 0x11a46, +0x11a9a, 0x11a9c, +0x11a9e, 0x11aa2, +0x11c41, 0x11c45, +0x11c70, 0x11c71, +0x11ef7, 0x11ef8, +0x12470, 0x12474, +0x16a6e, 0x16a6f, +0x16af5, 0x16af5, +0x16b37, 0x16b3b, +0x16b44, 0x16b44, +0x16e97, 0x16e9a, +0x1bc9f, 0x1bc9f, +0x1da87, 0x1da8b, +0x1e95e, 0x1e95f, +}; /* END of CR_Punct */ + +/* PROPERTY: 'Space': POSIX [[:Space:]] */ +static const OnigCodePoint +CR_Space[] = { 10, +0x0009, 0x000d, +0x0020, 0x0020, +0x0085, 0x0085, +0x00a0, 0x00a0, +0x1680, 0x1680, +0x2000, 0x200a, +0x2028, 0x2029, +0x202f, 0x202f, +0x205f, 0x205f, +0x3000, 0x3000, +}; /* END of CR_Space */ + +/* PROPERTY: 'Upper': POSIX [[:Upper:]] */ +static const OnigCodePoint +CR_Upper[] = { 636, +0x0041, 0x005a, +0x00c0, 0x00d6, +0x00d8, 0x00de, +0x0100, 0x0100, +0x0102, 0x0102, +0x0104, 0x0104, +0x0106, 0x0106, +0x0108, 0x0108, +0x010a, 0x010a, +0x010c, 0x010c, +0x010e, 0x010e, +0x0110, 0x0110, +0x0112, 0x0112, +0x0114, 0x0114, +0x0116, 0x0116, +0x0118, 0x0118, +0x011a, 0x011a, +0x011c, 0x011c, +0x011e, 0x011e, +0x0120, 0x0120, +0x0122, 0x0122, +0x0124, 0x0124, +0x0126, 0x0126, +0x0128, 0x0128, +0x012a, 0x012a, +0x012c, 0x012c, +0x012e, 0x012e, +0x0130, 0x0130, +0x0132, 0x0132, +0x0134, 0x0134, +0x0136, 0x0136, +0x0139, 0x0139, +0x013b, 0x013b, +0x013d, 0x013d, +0x013f, 0x013f, +0x0141, 0x0141, +0x0143, 0x0143, +0x0145, 0x0145, +0x0147, 0x0147, +0x014a, 0x014a, +0x014c, 0x014c, +0x014e, 0x014e, +0x0150, 0x0150, +0x0152, 0x0152, +0x0154, 0x0154, +0x0156, 0x0156, +0x0158, 0x0158, +0x015a, 0x015a, +0x015c, 0x015c, +0x015e, 0x015e, +0x0160, 0x0160, +0x0162, 0x0162, +0x0164, 0x0164, +0x0166, 0x0166, +0x0168, 0x0168, +0x016a, 0x016a, +0x016c, 0x016c, +0x016e, 0x016e, +0x0170, 0x0170, +0x0172, 0x0172, +0x0174, 0x0174, +0x0176, 0x0176, +0x0178, 0x0179, +0x017b, 0x017b, +0x017d, 0x017d, +0x0181, 0x0182, +0x0184, 0x0184, +0x0186, 0x0187, +0x0189, 0x018b, +0x018e, 0x0191, +0x0193, 0x0194, +0x0196, 0x0198, +0x019c, 0x019d, +0x019f, 0x01a0, +0x01a2, 0x01a2, +0x01a4, 0x01a4, +0x01a6, 0x01a7, +0x01a9, 0x01a9, +0x01ac, 0x01ac, +0x01ae, 0x01af, +0x01b1, 0x01b3, +0x01b5, 0x01b5, +0x01b7, 0x01b8, +0x01bc, 0x01bc, +0x01c4, 0x01c4, +0x01c7, 0x01c7, +0x01ca, 0x01ca, +0x01cd, 0x01cd, +0x01cf, 0x01cf, +0x01d1, 0x01d1, +0x01d3, 0x01d3, +0x01d5, 0x01d5, +0x01d7, 0x01d7, +0x01d9, 0x01d9, +0x01db, 0x01db, +0x01de, 0x01de, +0x01e0, 0x01e0, +0x01e2, 0x01e2, +0x01e4, 0x01e4, +0x01e6, 0x01e6, +0x01e8, 0x01e8, +0x01ea, 0x01ea, +0x01ec, 0x01ec, +0x01ee, 0x01ee, +0x01f1, 0x01f1, +0x01f4, 0x01f4, +0x01f6, 0x01f8, +0x01fa, 0x01fa, +0x01fc, 0x01fc, +0x01fe, 0x01fe, +0x0200, 0x0200, +0x0202, 0x0202, +0x0204, 0x0204, +0x0206, 0x0206, +0x0208, 0x0208, +0x020a, 0x020a, +0x020c, 0x020c, +0x020e, 0x020e, +0x0210, 0x0210, +0x0212, 0x0212, +0x0214, 0x0214, +0x0216, 0x0216, +0x0218, 0x0218, +0x021a, 0x021a, +0x021c, 0x021c, +0x021e, 0x021e, +0x0220, 0x0220, +0x0222, 0x0222, +0x0224, 0x0224, +0x0226, 0x0226, +0x0228, 0x0228, +0x022a, 0x022a, +0x022c, 0x022c, +0x022e, 0x022e, +0x0230, 0x0230, +0x0232, 0x0232, +0x023a, 0x023b, +0x023d, 0x023e, +0x0241, 0x0241, +0x0243, 0x0246, +0x0248, 0x0248, +0x024a, 0x024a, +0x024c, 0x024c, +0x024e, 0x024e, +0x0370, 0x0370, +0x0372, 0x0372, +0x0376, 0x0376, +0x037f, 0x037f, +0x0386, 0x0386, +0x0388, 0x038a, +0x038c, 0x038c, +0x038e, 0x038f, +0x0391, 0x03a1, +0x03a3, 0x03ab, +0x03cf, 0x03cf, +0x03d2, 0x03d4, +0x03d8, 0x03d8, +0x03da, 0x03da, +0x03dc, 0x03dc, +0x03de, 0x03de, +0x03e0, 0x03e0, +0x03e2, 0x03e2, +0x03e4, 0x03e4, +0x03e6, 0x03e6, +0x03e8, 0x03e8, +0x03ea, 0x03ea, +0x03ec, 0x03ec, +0x03ee, 0x03ee, +0x03f4, 0x03f4, +0x03f7, 0x03f7, +0x03f9, 0x03fa, +0x03fd, 0x042f, +0x0460, 0x0460, +0x0462, 0x0462, +0x0464, 0x0464, +0x0466, 0x0466, +0x0468, 0x0468, +0x046a, 0x046a, +0x046c, 0x046c, +0x046e, 0x046e, +0x0470, 0x0470, +0x0472, 0x0472, +0x0474, 0x0474, +0x0476, 0x0476, +0x0478, 0x0478, +0x047a, 0x047a, +0x047c, 0x047c, +0x047e, 0x047e, +0x0480, 0x0480, +0x048a, 0x048a, +0x048c, 0x048c, +0x048e, 0x048e, +0x0490, 0x0490, +0x0492, 0x0492, +0x0494, 0x0494, +0x0496, 0x0496, +0x0498, 0x0498, +0x049a, 0x049a, +0x049c, 0x049c, +0x049e, 0x049e, +0x04a0, 0x04a0, +0x04a2, 0x04a2, +0x04a4, 0x04a4, +0x04a6, 0x04a6, +0x04a8, 0x04a8, +0x04aa, 0x04aa, +0x04ac, 0x04ac, +0x04ae, 0x04ae, +0x04b0, 0x04b0, +0x04b2, 0x04b2, +0x04b4, 0x04b4, +0x04b6, 0x04b6, +0x04b8, 0x04b8, +0x04ba, 0x04ba, +0x04bc, 0x04bc, +0x04be, 0x04be, +0x04c0, 0x04c1, +0x04c3, 0x04c3, +0x04c5, 0x04c5, +0x04c7, 0x04c7, +0x04c9, 0x04c9, +0x04cb, 0x04cb, +0x04cd, 0x04cd, +0x04d0, 0x04d0, +0x04d2, 0x04d2, +0x04d4, 0x04d4, +0x04d6, 0x04d6, +0x04d8, 0x04d8, +0x04da, 0x04da, +0x04dc, 0x04dc, +0x04de, 0x04de, +0x04e0, 0x04e0, +0x04e2, 0x04e2, +0x04e4, 0x04e4, +0x04e6, 0x04e6, +0x04e8, 0x04e8, +0x04ea, 0x04ea, +0x04ec, 0x04ec, +0x04ee, 0x04ee, +0x04f0, 0x04f0, +0x04f2, 0x04f2, +0x04f4, 0x04f4, +0x04f6, 0x04f6, +0x04f8, 0x04f8, +0x04fa, 0x04fa, +0x04fc, 0x04fc, +0x04fe, 0x04fe, +0x0500, 0x0500, +0x0502, 0x0502, +0x0504, 0x0504, +0x0506, 0x0506, +0x0508, 0x0508, +0x050a, 0x050a, +0x050c, 0x050c, +0x050e, 0x050e, +0x0510, 0x0510, +0x0512, 0x0512, +0x0514, 0x0514, +0x0516, 0x0516, +0x0518, 0x0518, +0x051a, 0x051a, +0x051c, 0x051c, +0x051e, 0x051e, +0x0520, 0x0520, +0x0522, 0x0522, +0x0524, 0x0524, +0x0526, 0x0526, +0x0528, 0x0528, +0x052a, 0x052a, +0x052c, 0x052c, +0x052e, 0x052e, +0x0531, 0x0556, +0x10a0, 0x10c5, +0x10c7, 0x10c7, +0x10cd, 0x10cd, +0x13a0, 0x13f5, +0x1c90, 0x1cba, +0x1cbd, 0x1cbf, +0x1e00, 0x1e00, +0x1e02, 0x1e02, +0x1e04, 0x1e04, +0x1e06, 0x1e06, +0x1e08, 0x1e08, +0x1e0a, 0x1e0a, +0x1e0c, 0x1e0c, +0x1e0e, 0x1e0e, +0x1e10, 0x1e10, +0x1e12, 0x1e12, +0x1e14, 0x1e14, +0x1e16, 0x1e16, +0x1e18, 0x1e18, +0x1e1a, 0x1e1a, +0x1e1c, 0x1e1c, +0x1e1e, 0x1e1e, +0x1e20, 0x1e20, +0x1e22, 0x1e22, +0x1e24, 0x1e24, +0x1e26, 0x1e26, +0x1e28, 0x1e28, +0x1e2a, 0x1e2a, +0x1e2c, 0x1e2c, +0x1e2e, 0x1e2e, +0x1e30, 0x1e30, +0x1e32, 0x1e32, +0x1e34, 0x1e34, +0x1e36, 0x1e36, +0x1e38, 0x1e38, +0x1e3a, 0x1e3a, +0x1e3c, 0x1e3c, +0x1e3e, 0x1e3e, +0x1e40, 0x1e40, +0x1e42, 0x1e42, +0x1e44, 0x1e44, +0x1e46, 0x1e46, +0x1e48, 0x1e48, +0x1e4a, 0x1e4a, +0x1e4c, 0x1e4c, +0x1e4e, 0x1e4e, +0x1e50, 0x1e50, +0x1e52, 0x1e52, +0x1e54, 0x1e54, +0x1e56, 0x1e56, +0x1e58, 0x1e58, +0x1e5a, 0x1e5a, +0x1e5c, 0x1e5c, +0x1e5e, 0x1e5e, +0x1e60, 0x1e60, +0x1e62, 0x1e62, +0x1e64, 0x1e64, +0x1e66, 0x1e66, +0x1e68, 0x1e68, +0x1e6a, 0x1e6a, +0x1e6c, 0x1e6c, +0x1e6e, 0x1e6e, +0x1e70, 0x1e70, +0x1e72, 0x1e72, +0x1e74, 0x1e74, +0x1e76, 0x1e76, +0x1e78, 0x1e78, +0x1e7a, 0x1e7a, +0x1e7c, 0x1e7c, +0x1e7e, 0x1e7e, +0x1e80, 0x1e80, +0x1e82, 0x1e82, +0x1e84, 0x1e84, +0x1e86, 0x1e86, +0x1e88, 0x1e88, +0x1e8a, 0x1e8a, +0x1e8c, 0x1e8c, +0x1e8e, 0x1e8e, +0x1e90, 0x1e90, +0x1e92, 0x1e92, +0x1e94, 0x1e94, +0x1e9e, 0x1e9e, +0x1ea0, 0x1ea0, +0x1ea2, 0x1ea2, +0x1ea4, 0x1ea4, +0x1ea6, 0x1ea6, +0x1ea8, 0x1ea8, +0x1eaa, 0x1eaa, +0x1eac, 0x1eac, +0x1eae, 0x1eae, +0x1eb0, 0x1eb0, +0x1eb2, 0x1eb2, +0x1eb4, 0x1eb4, +0x1eb6, 0x1eb6, +0x1eb8, 0x1eb8, +0x1eba, 0x1eba, +0x1ebc, 0x1ebc, +0x1ebe, 0x1ebe, +0x1ec0, 0x1ec0, +0x1ec2, 0x1ec2, +0x1ec4, 0x1ec4, +0x1ec6, 0x1ec6, +0x1ec8, 0x1ec8, +0x1eca, 0x1eca, +0x1ecc, 0x1ecc, +0x1ece, 0x1ece, +0x1ed0, 0x1ed0, +0x1ed2, 0x1ed2, +0x1ed4, 0x1ed4, +0x1ed6, 0x1ed6, +0x1ed8, 0x1ed8, +0x1eda, 0x1eda, +0x1edc, 0x1edc, +0x1ede, 0x1ede, +0x1ee0, 0x1ee0, +0x1ee2, 0x1ee2, +0x1ee4, 0x1ee4, +0x1ee6, 0x1ee6, +0x1ee8, 0x1ee8, +0x1eea, 0x1eea, +0x1eec, 0x1eec, +0x1eee, 0x1eee, +0x1ef0, 0x1ef0, +0x1ef2, 0x1ef2, +0x1ef4, 0x1ef4, +0x1ef6, 0x1ef6, +0x1ef8, 0x1ef8, +0x1efa, 0x1efa, +0x1efc, 0x1efc, +0x1efe, 0x1efe, +0x1f08, 0x1f0f, +0x1f18, 0x1f1d, +0x1f28, 0x1f2f, +0x1f38, 0x1f3f, +0x1f48, 0x1f4d, +0x1f59, 0x1f59, +0x1f5b, 0x1f5b, +0x1f5d, 0x1f5d, +0x1f5f, 0x1f5f, +0x1f68, 0x1f6f, +0x1fb8, 0x1fbb, +0x1fc8, 0x1fcb, +0x1fd8, 0x1fdb, +0x1fe8, 0x1fec, +0x1ff8, 0x1ffb, +0x2102, 0x2102, +0x2107, 0x2107, +0x210b, 0x210d, +0x2110, 0x2112, +0x2115, 0x2115, +0x2119, 0x211d, +0x2124, 0x2124, +0x2126, 0x2126, +0x2128, 0x2128, +0x212a, 0x212d, +0x2130, 0x2133, +0x213e, 0x213f, +0x2145, 0x2145, +0x2160, 0x216f, +0x2183, 0x2183, +0x24b6, 0x24cf, +0x2c00, 0x2c2e, +0x2c60, 0x2c60, +0x2c62, 0x2c64, +0x2c67, 0x2c67, +0x2c69, 0x2c69, +0x2c6b, 0x2c6b, +0x2c6d, 0x2c70, +0x2c72, 0x2c72, +0x2c75, 0x2c75, +0x2c7e, 0x2c80, +0x2c82, 0x2c82, +0x2c84, 0x2c84, +0x2c86, 0x2c86, +0x2c88, 0x2c88, +0x2c8a, 0x2c8a, +0x2c8c, 0x2c8c, +0x2c8e, 0x2c8e, +0x2c90, 0x2c90, +0x2c92, 0x2c92, +0x2c94, 0x2c94, +0x2c96, 0x2c96, +0x2c98, 0x2c98, +0x2c9a, 0x2c9a, +0x2c9c, 0x2c9c, +0x2c9e, 0x2c9e, +0x2ca0, 0x2ca0, +0x2ca2, 0x2ca2, +0x2ca4, 0x2ca4, +0x2ca6, 0x2ca6, +0x2ca8, 0x2ca8, +0x2caa, 0x2caa, +0x2cac, 0x2cac, +0x2cae, 0x2cae, +0x2cb0, 0x2cb0, +0x2cb2, 0x2cb2, +0x2cb4, 0x2cb4, +0x2cb6, 0x2cb6, +0x2cb8, 0x2cb8, +0x2cba, 0x2cba, +0x2cbc, 0x2cbc, +0x2cbe, 0x2cbe, +0x2cc0, 0x2cc0, +0x2cc2, 0x2cc2, +0x2cc4, 0x2cc4, +0x2cc6, 0x2cc6, +0x2cc8, 0x2cc8, +0x2cca, 0x2cca, +0x2ccc, 0x2ccc, +0x2cce, 0x2cce, +0x2cd0, 0x2cd0, +0x2cd2, 0x2cd2, +0x2cd4, 0x2cd4, +0x2cd6, 0x2cd6, +0x2cd8, 0x2cd8, +0x2cda, 0x2cda, +0x2cdc, 0x2cdc, +0x2cde, 0x2cde, +0x2ce0, 0x2ce0, +0x2ce2, 0x2ce2, +0x2ceb, 0x2ceb, +0x2ced, 0x2ced, +0x2cf2, 0x2cf2, +0xa640, 0xa640, +0xa642, 0xa642, +0xa644, 0xa644, +0xa646, 0xa646, +0xa648, 0xa648, +0xa64a, 0xa64a, +0xa64c, 0xa64c, +0xa64e, 0xa64e, +0xa650, 0xa650, +0xa652, 0xa652, +0xa654, 0xa654, +0xa656, 0xa656, +0xa658, 0xa658, +0xa65a, 0xa65a, +0xa65c, 0xa65c, +0xa65e, 0xa65e, +0xa660, 0xa660, +0xa662, 0xa662, +0xa664, 0xa664, +0xa666, 0xa666, +0xa668, 0xa668, +0xa66a, 0xa66a, +0xa66c, 0xa66c, +0xa680, 0xa680, +0xa682, 0xa682, +0xa684, 0xa684, +0xa686, 0xa686, +0xa688, 0xa688, +0xa68a, 0xa68a, +0xa68c, 0xa68c, +0xa68e, 0xa68e, +0xa690, 0xa690, +0xa692, 0xa692, +0xa694, 0xa694, +0xa696, 0xa696, +0xa698, 0xa698, +0xa69a, 0xa69a, +0xa722, 0xa722, +0xa724, 0xa724, +0xa726, 0xa726, +0xa728, 0xa728, +0xa72a, 0xa72a, +0xa72c, 0xa72c, +0xa72e, 0xa72e, +0xa732, 0xa732, +0xa734, 0xa734, +0xa736, 0xa736, +0xa738, 0xa738, +0xa73a, 0xa73a, +0xa73c, 0xa73c, +0xa73e, 0xa73e, +0xa740, 0xa740, +0xa742, 0xa742, +0xa744, 0xa744, +0xa746, 0xa746, +0xa748, 0xa748, +0xa74a, 0xa74a, +0xa74c, 0xa74c, +0xa74e, 0xa74e, +0xa750, 0xa750, +0xa752, 0xa752, +0xa754, 0xa754, +0xa756, 0xa756, +0xa758, 0xa758, +0xa75a, 0xa75a, +0xa75c, 0xa75c, +0xa75e, 0xa75e, +0xa760, 0xa760, +0xa762, 0xa762, +0xa764, 0xa764, +0xa766, 0xa766, +0xa768, 0xa768, +0xa76a, 0xa76a, +0xa76c, 0xa76c, +0xa76e, 0xa76e, +0xa779, 0xa779, +0xa77b, 0xa77b, +0xa77d, 0xa77e, +0xa780, 0xa780, +0xa782, 0xa782, +0xa784, 0xa784, +0xa786, 0xa786, +0xa78b, 0xa78b, +0xa78d, 0xa78d, +0xa790, 0xa790, +0xa792, 0xa792, +0xa796, 0xa796, +0xa798, 0xa798, +0xa79a, 0xa79a, +0xa79c, 0xa79c, +0xa79e, 0xa79e, +0xa7a0, 0xa7a0, +0xa7a2, 0xa7a2, +0xa7a4, 0xa7a4, +0xa7a6, 0xa7a6, +0xa7a8, 0xa7a8, +0xa7aa, 0xa7ae, +0xa7b0, 0xa7b4, +0xa7b6, 0xa7b6, +0xa7b8, 0xa7b8, +0xff21, 0xff3a, +0x10400, 0x10427, +0x104b0, 0x104d3, +0x10c80, 0x10cb2, +0x118a0, 0x118bf, +0x16e40, 0x16e5f, +0x1d400, 0x1d419, +0x1d434, 0x1d44d, +0x1d468, 0x1d481, +0x1d49c, 0x1d49c, +0x1d49e, 0x1d49f, +0x1d4a2, 0x1d4a2, +0x1d4a5, 0x1d4a6, +0x1d4a9, 0x1d4ac, +0x1d4ae, 0x1d4b5, +0x1d4d0, 0x1d4e9, +0x1d504, 0x1d505, +0x1d507, 0x1d50a, +0x1d50d, 0x1d514, +0x1d516, 0x1d51c, +0x1d538, 0x1d539, +0x1d53b, 0x1d53e, +0x1d540, 0x1d544, +0x1d546, 0x1d546, +0x1d54a, 0x1d550, +0x1d56c, 0x1d585, +0x1d5a0, 0x1d5b9, +0x1d5d4, 0x1d5ed, +0x1d608, 0x1d621, +0x1d63c, 0x1d655, +0x1d670, 0x1d689, +0x1d6a8, 0x1d6c0, +0x1d6e2, 0x1d6fa, +0x1d71c, 0x1d734, +0x1d756, 0x1d76e, +0x1d790, 0x1d7a8, +0x1d7ca, 0x1d7ca, +0x1e900, 0x1e921, +0x1f130, 0x1f149, +0x1f150, 0x1f169, +0x1f170, 0x1f189, +}; /* END of CR_Upper */ + +/* PROPERTY: 'XDigit': POSIX [[:XDigit:]] */ +static const OnigCodePoint +CR_XDigit[] = { 3, +0x0030, 0x0039, +0x0041, 0x0046, +0x0061, 0x0066, +}; /* END of CR_XDigit */ + +/* PROPERTY: 'Word': POSIX [[:Word:]] */ +static const OnigCodePoint +CR_Word[] = { 710, +0x0030, 0x0039, +0x0041, 0x005a, +0x005f, 0x005f, +0x0061, 0x007a, +0x00aa, 0x00aa, +0x00b5, 0x00b5, +0x00ba, 0x00ba, +0x00c0, 0x00d6, +0x00d8, 0x00f6, +0x00f8, 0x02c1, +0x02c6, 0x02d1, +0x02e0, 0x02e4, +0x02ec, 0x02ec, +0x02ee, 0x02ee, +0x0300, 0x0374, +0x0376, 0x0377, +0x037a, 0x037d, +0x037f, 0x037f, +0x0386, 0x0386, +0x0388, 0x038a, +0x038c, 0x038c, +0x038e, 0x03a1, +0x03a3, 0x03f5, +0x03f7, 0x0481, +0x0483, 0x052f, +0x0531, 0x0556, +0x0559, 0x0559, +0x0560, 0x0588, +0x0591, 0x05bd, +0x05bf, 0x05bf, +0x05c1, 0x05c2, +0x05c4, 0x05c5, +0x05c7, 0x05c7, +0x05d0, 0x05ea, +0x05ef, 0x05f2, +0x0610, 0x061a, +0x0620, 0x0669, +0x066e, 0x06d3, +0x06d5, 0x06dc, +0x06df, 0x06e8, +0x06ea, 0x06fc, +0x06ff, 0x06ff, +0x0710, 0x074a, +0x074d, 0x07b1, +0x07c0, 0x07f5, +0x07fa, 0x07fa, +0x07fd, 0x07fd, +0x0800, 0x082d, +0x0840, 0x085b, +0x0860, 0x086a, +0x08a0, 0x08b4, +0x08b6, 0x08bd, +0x08d3, 0x08e1, +0x08e3, 0x0963, +0x0966, 0x096f, +0x0971, 0x0983, +0x0985, 0x098c, +0x098f, 0x0990, +0x0993, 0x09a8, +0x09aa, 0x09b0, +0x09b2, 0x09b2, +0x09b6, 0x09b9, +0x09bc, 0x09c4, +0x09c7, 0x09c8, +0x09cb, 0x09ce, +0x09d7, 0x09d7, +0x09dc, 0x09dd, +0x09df, 0x09e3, +0x09e6, 0x09f1, +0x09fc, 0x09fc, +0x09fe, 0x09fe, +0x0a01, 0x0a03, +0x0a05, 0x0a0a, +0x0a0f, 0x0a10, +0x0a13, 0x0a28, +0x0a2a, 0x0a30, +0x0a32, 0x0a33, +0x0a35, 0x0a36, +0x0a38, 0x0a39, +0x0a3c, 0x0a3c, +0x0a3e, 0x0a42, +0x0a47, 0x0a48, +0x0a4b, 0x0a4d, +0x0a51, 0x0a51, +0x0a59, 0x0a5c, +0x0a5e, 0x0a5e, +0x0a66, 0x0a75, +0x0a81, 0x0a83, +0x0a85, 0x0a8d, +0x0a8f, 0x0a91, +0x0a93, 0x0aa8, +0x0aaa, 0x0ab0, +0x0ab2, 0x0ab3, +0x0ab5, 0x0ab9, +0x0abc, 0x0ac5, +0x0ac7, 0x0ac9, +0x0acb, 0x0acd, +0x0ad0, 0x0ad0, +0x0ae0, 0x0ae3, +0x0ae6, 0x0aef, +0x0af9, 0x0aff, +0x0b01, 0x0b03, +0x0b05, 0x0b0c, +0x0b0f, 0x0b10, +0x0b13, 0x0b28, +0x0b2a, 0x0b30, +0x0b32, 0x0b33, +0x0b35, 0x0b39, +0x0b3c, 0x0b44, +0x0b47, 0x0b48, +0x0b4b, 0x0b4d, +0x0b56, 0x0b57, +0x0b5c, 0x0b5d, +0x0b5f, 0x0b63, +0x0b66, 0x0b6f, +0x0b71, 0x0b71, +0x0b82, 0x0b83, +0x0b85, 0x0b8a, +0x0b8e, 0x0b90, +0x0b92, 0x0b95, +0x0b99, 0x0b9a, +0x0b9c, 0x0b9c, +0x0b9e, 0x0b9f, +0x0ba3, 0x0ba4, +0x0ba8, 0x0baa, +0x0bae, 0x0bb9, +0x0bbe, 0x0bc2, +0x0bc6, 0x0bc8, +0x0bca, 0x0bcd, +0x0bd0, 0x0bd0, +0x0bd7, 0x0bd7, +0x0be6, 0x0bef, +0x0c00, 0x0c0c, +0x0c0e, 0x0c10, +0x0c12, 0x0c28, +0x0c2a, 0x0c39, +0x0c3d, 0x0c44, +0x0c46, 0x0c48, +0x0c4a, 0x0c4d, +0x0c55, 0x0c56, +0x0c58, 0x0c5a, +0x0c60, 0x0c63, +0x0c66, 0x0c6f, +0x0c80, 0x0c83, +0x0c85, 0x0c8c, +0x0c8e, 0x0c90, +0x0c92, 0x0ca8, +0x0caa, 0x0cb3, +0x0cb5, 0x0cb9, +0x0cbc, 0x0cc4, +0x0cc6, 0x0cc8, +0x0cca, 0x0ccd, +0x0cd5, 0x0cd6, +0x0cde, 0x0cde, +0x0ce0, 0x0ce3, +0x0ce6, 0x0cef, +0x0cf1, 0x0cf2, +0x0d00, 0x0d03, +0x0d05, 0x0d0c, +0x0d0e, 0x0d10, +0x0d12, 0x0d44, +0x0d46, 0x0d48, +0x0d4a, 0x0d4e, +0x0d54, 0x0d57, +0x0d5f, 0x0d63, +0x0d66, 0x0d6f, +0x0d7a, 0x0d7f, +0x0d82, 0x0d83, +0x0d85, 0x0d96, +0x0d9a, 0x0db1, +0x0db3, 0x0dbb, +0x0dbd, 0x0dbd, +0x0dc0, 0x0dc6, +0x0dca, 0x0dca, +0x0dcf, 0x0dd4, +0x0dd6, 0x0dd6, +0x0dd8, 0x0ddf, +0x0de6, 0x0def, +0x0df2, 0x0df3, +0x0e01, 0x0e3a, +0x0e40, 0x0e4e, +0x0e50, 0x0e59, +0x0e81, 0x0e82, +0x0e84, 0x0e84, +0x0e87, 0x0e88, +0x0e8a, 0x0e8a, +0x0e8d, 0x0e8d, +0x0e94, 0x0e97, +0x0e99, 0x0e9f, +0x0ea1, 0x0ea3, +0x0ea5, 0x0ea5, +0x0ea7, 0x0ea7, +0x0eaa, 0x0eab, +0x0ead, 0x0eb9, +0x0ebb, 0x0ebd, +0x0ec0, 0x0ec4, +0x0ec6, 0x0ec6, +0x0ec8, 0x0ecd, +0x0ed0, 0x0ed9, +0x0edc, 0x0edf, +0x0f00, 0x0f00, +0x0f18, 0x0f19, +0x0f20, 0x0f29, +0x0f35, 0x0f35, +0x0f37, 0x0f37, +0x0f39, 0x0f39, +0x0f3e, 0x0f47, +0x0f49, 0x0f6c, +0x0f71, 0x0f84, +0x0f86, 0x0f97, +0x0f99, 0x0fbc, +0x0fc6, 0x0fc6, +0x1000, 0x1049, +0x1050, 0x109d, +0x10a0, 0x10c5, +0x10c7, 0x10c7, +0x10cd, 0x10cd, +0x10d0, 0x10fa, +0x10fc, 0x1248, +0x124a, 0x124d, +0x1250, 0x1256, +0x1258, 0x1258, +0x125a, 0x125d, +0x1260, 0x1288, +0x128a, 0x128d, +0x1290, 0x12b0, +0x12b2, 0x12b5, +0x12b8, 0x12be, +0x12c0, 0x12c0, +0x12c2, 0x12c5, +0x12c8, 0x12d6, +0x12d8, 0x1310, +0x1312, 0x1315, +0x1318, 0x135a, +0x135d, 0x135f, +0x1380, 0x138f, +0x13a0, 0x13f5, +0x13f8, 0x13fd, +0x1401, 0x166c, +0x166f, 0x167f, +0x1681, 0x169a, +0x16a0, 0x16ea, +0x16ee, 0x16f8, +0x1700, 0x170c, +0x170e, 0x1714, +0x1720, 0x1734, +0x1740, 0x1753, +0x1760, 0x176c, +0x176e, 0x1770, +0x1772, 0x1773, +0x1780, 0x17d3, +0x17d7, 0x17d7, +0x17dc, 0x17dd, +0x17e0, 0x17e9, +0x180b, 0x180d, +0x1810, 0x1819, +0x1820, 0x1878, +0x1880, 0x18aa, +0x18b0, 0x18f5, +0x1900, 0x191e, +0x1920, 0x192b, +0x1930, 0x193b, +0x1946, 0x196d, +0x1970, 0x1974, +0x1980, 0x19ab, +0x19b0, 0x19c9, +0x19d0, 0x19d9, +0x1a00, 0x1a1b, +0x1a20, 0x1a5e, +0x1a60, 0x1a7c, +0x1a7f, 0x1a89, +0x1a90, 0x1a99, +0x1aa7, 0x1aa7, +0x1ab0, 0x1abe, +0x1b00, 0x1b4b, +0x1b50, 0x1b59, +0x1b6b, 0x1b73, +0x1b80, 0x1bf3, +0x1c00, 0x1c37, +0x1c40, 0x1c49, +0x1c4d, 0x1c7d, +0x1c80, 0x1c88, +0x1c90, 0x1cba, +0x1cbd, 0x1cbf, +0x1cd0, 0x1cd2, +0x1cd4, 0x1cf9, +0x1d00, 0x1df9, +0x1dfb, 0x1f15, +0x1f18, 0x1f1d, +0x1f20, 0x1f45, +0x1f48, 0x1f4d, +0x1f50, 0x1f57, +0x1f59, 0x1f59, +0x1f5b, 0x1f5b, +0x1f5d, 0x1f5d, +0x1f5f, 0x1f7d, +0x1f80, 0x1fb4, +0x1fb6, 0x1fbc, +0x1fbe, 0x1fbe, +0x1fc2, 0x1fc4, +0x1fc6, 0x1fcc, +0x1fd0, 0x1fd3, +0x1fd6, 0x1fdb, +0x1fe0, 0x1fec, +0x1ff2, 0x1ff4, +0x1ff6, 0x1ffc, +0x203f, 0x2040, +0x2054, 0x2054, +0x2071, 0x2071, +0x207f, 0x207f, +0x2090, 0x209c, +0x20d0, 0x20f0, +0x2102, 0x2102, +0x2107, 0x2107, +0x210a, 0x2113, +0x2115, 0x2115, +0x2119, 0x211d, +0x2124, 0x2124, +0x2126, 0x2126, +0x2128, 0x2128, +0x212a, 0x212d, +0x212f, 0x2139, +0x213c, 0x213f, +0x2145, 0x2149, +0x214e, 0x214e, +0x2160, 0x2188, +0x24b6, 0x24e9, +0x2c00, 0x2c2e, +0x2c30, 0x2c5e, +0x2c60, 0x2ce4, +0x2ceb, 0x2cf3, +0x2d00, 0x2d25, +0x2d27, 0x2d27, +0x2d2d, 0x2d2d, +0x2d30, 0x2d67, +0x2d6f, 0x2d6f, +0x2d7f, 0x2d96, +0x2da0, 0x2da6, +0x2da8, 0x2dae, +0x2db0, 0x2db6, +0x2db8, 0x2dbe, +0x2dc0, 0x2dc6, +0x2dc8, 0x2dce, +0x2dd0, 0x2dd6, +0x2dd8, 0x2dde, +0x2de0, 0x2dff, +0x2e2f, 0x2e2f, +0x3005, 0x3007, +0x3021, 0x302f, +0x3031, 0x3035, +0x3038, 0x303c, +0x3041, 0x3096, +0x3099, 0x309a, +0x309d, 0x309f, +0x30a1, 0x30fa, +0x30fc, 0x30ff, +0x3105, 0x312f, +0x3131, 0x318e, +0x31a0, 0x31ba, +0x31f0, 0x31ff, +0x3400, 0x4db5, +0x4e00, 0x9fef, +0xa000, 0xa48c, +0xa4d0, 0xa4fd, +0xa500, 0xa60c, +0xa610, 0xa62b, +0xa640, 0xa672, +0xa674, 0xa67d, +0xa67f, 0xa6f1, +0xa717, 0xa71f, +0xa722, 0xa788, +0xa78b, 0xa7b9, +0xa7f7, 0xa827, +0xa840, 0xa873, +0xa880, 0xa8c5, +0xa8d0, 0xa8d9, +0xa8e0, 0xa8f7, +0xa8fb, 0xa8fb, +0xa8fd, 0xa92d, +0xa930, 0xa953, +0xa960, 0xa97c, +0xa980, 0xa9c0, +0xa9cf, 0xa9d9, +0xa9e0, 0xa9fe, +0xaa00, 0xaa36, +0xaa40, 0xaa4d, +0xaa50, 0xaa59, +0xaa60, 0xaa76, +0xaa7a, 0xaac2, +0xaadb, 0xaadd, +0xaae0, 0xaaef, +0xaaf2, 0xaaf6, +0xab01, 0xab06, +0xab09, 0xab0e, +0xab11, 0xab16, +0xab20, 0xab26, +0xab28, 0xab2e, +0xab30, 0xab5a, +0xab5c, 0xab65, +0xab70, 0xabea, +0xabec, 0xabed, +0xabf0, 0xabf9, +0xac00, 0xd7a3, +0xd7b0, 0xd7c6, +0xd7cb, 0xd7fb, +0xf900, 0xfa6d, +0xfa70, 0xfad9, +0xfb00, 0xfb06, +0xfb13, 0xfb17, +0xfb1d, 0xfb28, +0xfb2a, 0xfb36, +0xfb38, 0xfb3c, +0xfb3e, 0xfb3e, +0xfb40, 0xfb41, +0xfb43, 0xfb44, +0xfb46, 0xfbb1, +0xfbd3, 0xfd3d, +0xfd50, 0xfd8f, +0xfd92, 0xfdc7, +0xfdf0, 0xfdfb, +0xfe00, 0xfe0f, +0xfe20, 0xfe2f, +0xfe33, 0xfe34, +0xfe4d, 0xfe4f, +0xfe70, 0xfe74, +0xfe76, 0xfefc, +0xff10, 0xff19, +0xff21, 0xff3a, +0xff3f, 0xff3f, +0xff41, 0xff5a, +0xff66, 0xffbe, +0xffc2, 0xffc7, +0xffca, 0xffcf, +0xffd2, 0xffd7, +0xffda, 0xffdc, +0x10000, 0x1000b, +0x1000d, 0x10026, +0x10028, 0x1003a, +0x1003c, 0x1003d, +0x1003f, 0x1004d, +0x10050, 0x1005d, +0x10080, 0x100fa, +0x10140, 0x10174, +0x101fd, 0x101fd, +0x10280, 0x1029c, +0x102a0, 0x102d0, +0x102e0, 0x102e0, +0x10300, 0x1031f, +0x1032d, 0x1034a, +0x10350, 0x1037a, +0x10380, 0x1039d, +0x103a0, 0x103c3, +0x103c8, 0x103cf, +0x103d1, 0x103d5, +0x10400, 0x1049d, +0x104a0, 0x104a9, +0x104b0, 0x104d3, +0x104d8, 0x104fb, +0x10500, 0x10527, +0x10530, 0x10563, +0x10600, 0x10736, +0x10740, 0x10755, +0x10760, 0x10767, +0x10800, 0x10805, +0x10808, 0x10808, +0x1080a, 0x10835, +0x10837, 0x10838, +0x1083c, 0x1083c, +0x1083f, 0x10855, +0x10860, 0x10876, +0x10880, 0x1089e, +0x108e0, 0x108f2, +0x108f4, 0x108f5, +0x10900, 0x10915, +0x10920, 0x10939, +0x10980, 0x109b7, +0x109be, 0x109bf, +0x10a00, 0x10a03, +0x10a05, 0x10a06, +0x10a0c, 0x10a13, +0x10a15, 0x10a17, +0x10a19, 0x10a35, +0x10a38, 0x10a3a, +0x10a3f, 0x10a3f, +0x10a60, 0x10a7c, +0x10a80, 0x10a9c, +0x10ac0, 0x10ac7, +0x10ac9, 0x10ae6, +0x10b00, 0x10b35, +0x10b40, 0x10b55, +0x10b60, 0x10b72, +0x10b80, 0x10b91, +0x10c00, 0x10c48, +0x10c80, 0x10cb2, +0x10cc0, 0x10cf2, +0x10d00, 0x10d27, +0x10d30, 0x10d39, +0x10f00, 0x10f1c, +0x10f27, 0x10f27, +0x10f30, 0x10f50, +0x11000, 0x11046, +0x11066, 0x1106f, +0x1107f, 0x110ba, +0x110d0, 0x110e8, +0x110f0, 0x110f9, +0x11100, 0x11134, +0x11136, 0x1113f, +0x11144, 0x11146, +0x11150, 0x11173, +0x11176, 0x11176, +0x11180, 0x111c4, +0x111c9, 0x111cc, +0x111d0, 0x111da, +0x111dc, 0x111dc, +0x11200, 0x11211, +0x11213, 0x11237, +0x1123e, 0x1123e, +0x11280, 0x11286, +0x11288, 0x11288, +0x1128a, 0x1128d, +0x1128f, 0x1129d, +0x1129f, 0x112a8, +0x112b0, 0x112ea, +0x112f0, 0x112f9, +0x11300, 0x11303, +0x11305, 0x1130c, +0x1130f, 0x11310, +0x11313, 0x11328, +0x1132a, 0x11330, +0x11332, 0x11333, +0x11335, 0x11339, +0x1133b, 0x11344, +0x11347, 0x11348, +0x1134b, 0x1134d, +0x11350, 0x11350, +0x11357, 0x11357, +0x1135d, 0x11363, +0x11366, 0x1136c, +0x11370, 0x11374, +0x11400, 0x1144a, +0x11450, 0x11459, +0x1145e, 0x1145e, +0x11480, 0x114c5, +0x114c7, 0x114c7, +0x114d0, 0x114d9, +0x11580, 0x115b5, +0x115b8, 0x115c0, +0x115d8, 0x115dd, +0x11600, 0x11640, +0x11644, 0x11644, +0x11650, 0x11659, +0x11680, 0x116b7, +0x116c0, 0x116c9, +0x11700, 0x1171a, +0x1171d, 0x1172b, +0x11730, 0x11739, +0x11800, 0x1183a, +0x118a0, 0x118e9, +0x118ff, 0x118ff, +0x11a00, 0x11a3e, +0x11a47, 0x11a47, +0x11a50, 0x11a83, +0x11a86, 0x11a99, +0x11a9d, 0x11a9d, +0x11ac0, 0x11af8, +0x11c00, 0x11c08, +0x11c0a, 0x11c36, +0x11c38, 0x11c40, +0x11c50, 0x11c59, +0x11c72, 0x11c8f, +0x11c92, 0x11ca7, +0x11ca9, 0x11cb6, +0x11d00, 0x11d06, +0x11d08, 0x11d09, +0x11d0b, 0x11d36, +0x11d3a, 0x11d3a, +0x11d3c, 0x11d3d, +0x11d3f, 0x11d47, +0x11d50, 0x11d59, +0x11d60, 0x11d65, +0x11d67, 0x11d68, +0x11d6a, 0x11d8e, +0x11d90, 0x11d91, +0x11d93, 0x11d98, +0x11da0, 0x11da9, +0x11ee0, 0x11ef6, +0x12000, 0x12399, +0x12400, 0x1246e, +0x12480, 0x12543, +0x13000, 0x1342e, +0x14400, 0x14646, +0x16800, 0x16a38, +0x16a40, 0x16a5e, +0x16a60, 0x16a69, +0x16ad0, 0x16aed, +0x16af0, 0x16af4, +0x16b00, 0x16b36, +0x16b40, 0x16b43, +0x16b50, 0x16b59, +0x16b63, 0x16b77, +0x16b7d, 0x16b8f, +0x16e40, 0x16e7f, +0x16f00, 0x16f44, +0x16f50, 0x16f7e, +0x16f8f, 0x16f9f, +0x16fe0, 0x16fe1, +0x17000, 0x187f1, +0x18800, 0x18af2, +0x1b000, 0x1b11e, +0x1b170, 0x1b2fb, +0x1bc00, 0x1bc6a, +0x1bc70, 0x1bc7c, +0x1bc80, 0x1bc88, +0x1bc90, 0x1bc99, +0x1bc9d, 0x1bc9e, +0x1d165, 0x1d169, +0x1d16d, 0x1d172, +0x1d17b, 0x1d182, +0x1d185, 0x1d18b, +0x1d1aa, 0x1d1ad, +0x1d242, 0x1d244, +0x1d400, 0x1d454, +0x1d456, 0x1d49c, +0x1d49e, 0x1d49f, +0x1d4a2, 0x1d4a2, +0x1d4a5, 0x1d4a6, +0x1d4a9, 0x1d4ac, +0x1d4ae, 0x1d4b9, +0x1d4bb, 0x1d4bb, +0x1d4bd, 0x1d4c3, +0x1d4c5, 0x1d505, +0x1d507, 0x1d50a, +0x1d50d, 0x1d514, +0x1d516, 0x1d51c, +0x1d51e, 0x1d539, +0x1d53b, 0x1d53e, +0x1d540, 0x1d544, +0x1d546, 0x1d546, +0x1d54a, 0x1d550, +0x1d552, 0x1d6a5, +0x1d6a8, 0x1d6c0, +0x1d6c2, 0x1d6da, +0x1d6dc, 0x1d6fa, +0x1d6fc, 0x1d714, +0x1d716, 0x1d734, +0x1d736, 0x1d74e, +0x1d750, 0x1d76e, +0x1d770, 0x1d788, +0x1d78a, 0x1d7a8, +0x1d7aa, 0x1d7c2, +0x1d7c4, 0x1d7cb, +0x1d7ce, 0x1d7ff, +0x1da00, 0x1da36, +0x1da3b, 0x1da6c, +0x1da75, 0x1da75, +0x1da84, 0x1da84, +0x1da9b, 0x1da9f, +0x1daa1, 0x1daaf, +0x1e000, 0x1e006, +0x1e008, 0x1e018, +0x1e01b, 0x1e021, +0x1e023, 0x1e024, +0x1e026, 0x1e02a, +0x1e800, 0x1e8c4, +0x1e8d0, 0x1e8d6, +0x1e900, 0x1e94a, +0x1e950, 0x1e959, +0x1ee00, 0x1ee03, +0x1ee05, 0x1ee1f, +0x1ee21, 0x1ee22, +0x1ee24, 0x1ee24, +0x1ee27, 0x1ee27, +0x1ee29, 0x1ee32, +0x1ee34, 0x1ee37, +0x1ee39, 0x1ee39, +0x1ee3b, 0x1ee3b, +0x1ee42, 0x1ee42, +0x1ee47, 0x1ee47, +0x1ee49, 0x1ee49, +0x1ee4b, 0x1ee4b, +0x1ee4d, 0x1ee4f, +0x1ee51, 0x1ee52, +0x1ee54, 0x1ee54, +0x1ee57, 0x1ee57, +0x1ee59, 0x1ee59, +0x1ee5b, 0x1ee5b, +0x1ee5d, 0x1ee5d, +0x1ee5f, 0x1ee5f, +0x1ee61, 0x1ee62, +0x1ee64, 0x1ee64, +0x1ee67, 0x1ee6a, +0x1ee6c, 0x1ee72, +0x1ee74, 0x1ee77, +0x1ee79, 0x1ee7c, +0x1ee7e, 0x1ee7e, +0x1ee80, 0x1ee89, +0x1ee8b, 0x1ee9b, +0x1eea1, 0x1eea3, +0x1eea5, 0x1eea9, +0x1eeab, 0x1eebb, +0x1f130, 0x1f149, +0x1f150, 0x1f169, +0x1f170, 0x1f189, +0x20000, 0x2a6d6, +0x2a700, 0x2b734, +0x2b740, 0x2b81d, +0x2b820, 0x2cea1, +0x2ceb0, 0x2ebe0, +0x2f800, 0x2fa1d, +0xe0100, 0xe01ef, +}; /* END of CR_Word */ + +/* PROPERTY: 'Alnum': POSIX [[:Alnum:]] */ +static const OnigCodePoint +CR_Alnum[] = { 713, +0x0030, 0x0039, +0x0041, 0x005a, +0x0061, 0x007a, +0x00aa, 0x00aa, +0x00b5, 0x00b5, +0x00ba, 0x00ba, +0x00c0, 0x00d6, +0x00d8, 0x00f6, +0x00f8, 0x02c1, +0x02c6, 0x02d1, +0x02e0, 0x02e4, +0x02ec, 0x02ec, +0x02ee, 0x02ee, +0x0345, 0x0345, +0x0370, 0x0374, +0x0376, 0x0377, +0x037a, 0x037d, +0x037f, 0x037f, +0x0386, 0x0386, +0x0388, 0x038a, +0x038c, 0x038c, +0x038e, 0x03a1, +0x03a3, 0x03f5, +0x03f7, 0x0481, +0x048a, 0x052f, +0x0531, 0x0556, +0x0559, 0x0559, +0x0560, 0x0588, +0x05b0, 0x05bd, +0x05bf, 0x05bf, +0x05c1, 0x05c2, +0x05c4, 0x05c5, +0x05c7, 0x05c7, +0x05d0, 0x05ea, +0x05ef, 0x05f2, +0x0610, 0x061a, +0x0620, 0x0657, +0x0659, 0x0669, +0x066e, 0x06d3, +0x06d5, 0x06dc, +0x06e1, 0x06e8, +0x06ed, 0x06fc, +0x06ff, 0x06ff, +0x0710, 0x073f, +0x074d, 0x07b1, +0x07c0, 0x07ea, +0x07f4, 0x07f5, +0x07fa, 0x07fa, +0x0800, 0x0817, +0x081a, 0x082c, +0x0840, 0x0858, +0x0860, 0x086a, +0x08a0, 0x08b4, +0x08b6, 0x08bd, +0x08d4, 0x08df, +0x08e3, 0x08e9, +0x08f0, 0x093b, +0x093d, 0x094c, +0x094e, 0x0950, +0x0955, 0x0963, +0x0966, 0x096f, +0x0971, 0x0983, +0x0985, 0x098c, +0x098f, 0x0990, +0x0993, 0x09a8, +0x09aa, 0x09b0, +0x09b2, 0x09b2, +0x09b6, 0x09b9, +0x09bd, 0x09c4, +0x09c7, 0x09c8, +0x09cb, 0x09cc, +0x09ce, 0x09ce, +0x09d7, 0x09d7, +0x09dc, 0x09dd, +0x09df, 0x09e3, +0x09e6, 0x09f1, +0x09fc, 0x09fc, +0x0a01, 0x0a03, +0x0a05, 0x0a0a, +0x0a0f, 0x0a10, +0x0a13, 0x0a28, +0x0a2a, 0x0a30, +0x0a32, 0x0a33, +0x0a35, 0x0a36, +0x0a38, 0x0a39, +0x0a3e, 0x0a42, +0x0a47, 0x0a48, +0x0a4b, 0x0a4c, +0x0a51, 0x0a51, +0x0a59, 0x0a5c, +0x0a5e, 0x0a5e, +0x0a66, 0x0a75, +0x0a81, 0x0a83, +0x0a85, 0x0a8d, +0x0a8f, 0x0a91, +0x0a93, 0x0aa8, +0x0aaa, 0x0ab0, +0x0ab2, 0x0ab3, +0x0ab5, 0x0ab9, +0x0abd, 0x0ac5, +0x0ac7, 0x0ac9, +0x0acb, 0x0acc, +0x0ad0, 0x0ad0, +0x0ae0, 0x0ae3, +0x0ae6, 0x0aef, +0x0af9, 0x0afc, +0x0b01, 0x0b03, +0x0b05, 0x0b0c, +0x0b0f, 0x0b10, +0x0b13, 0x0b28, +0x0b2a, 0x0b30, +0x0b32, 0x0b33, +0x0b35, 0x0b39, +0x0b3d, 0x0b44, +0x0b47, 0x0b48, +0x0b4b, 0x0b4c, +0x0b56, 0x0b57, +0x0b5c, 0x0b5d, +0x0b5f, 0x0b63, +0x0b66, 0x0b6f, +0x0b71, 0x0b71, +0x0b82, 0x0b83, +0x0b85, 0x0b8a, +0x0b8e, 0x0b90, +0x0b92, 0x0b95, +0x0b99, 0x0b9a, +0x0b9c, 0x0b9c, +0x0b9e, 0x0b9f, +0x0ba3, 0x0ba4, +0x0ba8, 0x0baa, +0x0bae, 0x0bb9, +0x0bbe, 0x0bc2, +0x0bc6, 0x0bc8, +0x0bca, 0x0bcc, +0x0bd0, 0x0bd0, +0x0bd7, 0x0bd7, +0x0be6, 0x0bef, +0x0c00, 0x0c03, +0x0c05, 0x0c0c, +0x0c0e, 0x0c10, +0x0c12, 0x0c28, +0x0c2a, 0x0c39, +0x0c3d, 0x0c44, +0x0c46, 0x0c48, +0x0c4a, 0x0c4c, +0x0c55, 0x0c56, +0x0c58, 0x0c5a, +0x0c60, 0x0c63, +0x0c66, 0x0c6f, +0x0c80, 0x0c83, +0x0c85, 0x0c8c, +0x0c8e, 0x0c90, +0x0c92, 0x0ca8, +0x0caa, 0x0cb3, +0x0cb5, 0x0cb9, +0x0cbd, 0x0cc4, +0x0cc6, 0x0cc8, +0x0cca, 0x0ccc, +0x0cd5, 0x0cd6, +0x0cde, 0x0cde, +0x0ce0, 0x0ce3, +0x0ce6, 0x0cef, +0x0cf1, 0x0cf2, +0x0d00, 0x0d03, +0x0d05, 0x0d0c, +0x0d0e, 0x0d10, +0x0d12, 0x0d3a, +0x0d3d, 0x0d44, +0x0d46, 0x0d48, +0x0d4a, 0x0d4c, +0x0d4e, 0x0d4e, +0x0d54, 0x0d57, +0x0d5f, 0x0d63, +0x0d66, 0x0d6f, +0x0d7a, 0x0d7f, +0x0d82, 0x0d83, +0x0d85, 0x0d96, +0x0d9a, 0x0db1, +0x0db3, 0x0dbb, +0x0dbd, 0x0dbd, +0x0dc0, 0x0dc6, +0x0dcf, 0x0dd4, +0x0dd6, 0x0dd6, +0x0dd8, 0x0ddf, +0x0de6, 0x0def, +0x0df2, 0x0df3, +0x0e01, 0x0e3a, +0x0e40, 0x0e46, +0x0e4d, 0x0e4d, +0x0e50, 0x0e59, +0x0e81, 0x0e82, +0x0e84, 0x0e84, +0x0e87, 0x0e88, +0x0e8a, 0x0e8a, +0x0e8d, 0x0e8d, +0x0e94, 0x0e97, +0x0e99, 0x0e9f, +0x0ea1, 0x0ea3, +0x0ea5, 0x0ea5, +0x0ea7, 0x0ea7, +0x0eaa, 0x0eab, +0x0ead, 0x0eb9, +0x0ebb, 0x0ebd, +0x0ec0, 0x0ec4, +0x0ec6, 0x0ec6, +0x0ecd, 0x0ecd, +0x0ed0, 0x0ed9, +0x0edc, 0x0edf, +0x0f00, 0x0f00, +0x0f20, 0x0f29, +0x0f40, 0x0f47, +0x0f49, 0x0f6c, +0x0f71, 0x0f81, +0x0f88, 0x0f97, +0x0f99, 0x0fbc, +0x1000, 0x1036, +0x1038, 0x1038, +0x103b, 0x1049, +0x1050, 0x1062, +0x1065, 0x1068, +0x106e, 0x1086, +0x108e, 0x108e, +0x1090, 0x1099, +0x109c, 0x109d, +0x10a0, 0x10c5, +0x10c7, 0x10c7, +0x10cd, 0x10cd, +0x10d0, 0x10fa, +0x10fc, 0x1248, +0x124a, 0x124d, +0x1250, 0x1256, +0x1258, 0x1258, +0x125a, 0x125d, +0x1260, 0x1288, +0x128a, 0x128d, +0x1290, 0x12b0, +0x12b2, 0x12b5, +0x12b8, 0x12be, +0x12c0, 0x12c0, +0x12c2, 0x12c5, +0x12c8, 0x12d6, +0x12d8, 0x1310, +0x1312, 0x1315, +0x1318, 0x135a, +0x135f, 0x135f, +0x1380, 0x138f, +0x13a0, 0x13f5, +0x13f8, 0x13fd, +0x1401, 0x166c, +0x166f, 0x167f, +0x1681, 0x169a, +0x16a0, 0x16ea, +0x16ee, 0x16f8, +0x1700, 0x170c, +0x170e, 0x1713, +0x1720, 0x1733, +0x1740, 0x1753, +0x1760, 0x176c, +0x176e, 0x1770, +0x1772, 0x1773, +0x1780, 0x17b3, +0x17b6, 0x17c8, +0x17d7, 0x17d7, +0x17dc, 0x17dc, +0x17e0, 0x17e9, +0x1810, 0x1819, +0x1820, 0x1878, +0x1880, 0x18aa, +0x18b0, 0x18f5, +0x1900, 0x191e, +0x1920, 0x192b, +0x1930, 0x1938, +0x1946, 0x196d, +0x1970, 0x1974, +0x1980, 0x19ab, +0x19b0, 0x19c9, +0x19d0, 0x19d9, +0x1a00, 0x1a1b, +0x1a20, 0x1a5e, +0x1a61, 0x1a74, +0x1a80, 0x1a89, +0x1a90, 0x1a99, +0x1aa7, 0x1aa7, +0x1b00, 0x1b33, +0x1b35, 0x1b43, +0x1b45, 0x1b4b, +0x1b50, 0x1b59, +0x1b80, 0x1ba9, +0x1bac, 0x1be5, +0x1be7, 0x1bf1, +0x1c00, 0x1c35, +0x1c40, 0x1c49, +0x1c4d, 0x1c7d, +0x1c80, 0x1c88, +0x1c90, 0x1cba, +0x1cbd, 0x1cbf, +0x1ce9, 0x1cec, +0x1cee, 0x1cf3, +0x1cf5, 0x1cf6, +0x1d00, 0x1dbf, +0x1de7, 0x1df4, +0x1e00, 0x1f15, +0x1f18, 0x1f1d, +0x1f20, 0x1f45, +0x1f48, 0x1f4d, +0x1f50, 0x1f57, +0x1f59, 0x1f59, +0x1f5b, 0x1f5b, +0x1f5d, 0x1f5d, +0x1f5f, 0x1f7d, +0x1f80, 0x1fb4, +0x1fb6, 0x1fbc, +0x1fbe, 0x1fbe, +0x1fc2, 0x1fc4, +0x1fc6, 0x1fcc, +0x1fd0, 0x1fd3, +0x1fd6, 0x1fdb, +0x1fe0, 0x1fec, +0x1ff2, 0x1ff4, +0x1ff6, 0x1ffc, +0x2071, 0x2071, +0x207f, 0x207f, +0x2090, 0x209c, +0x2102, 0x2102, +0x2107, 0x2107, +0x210a, 0x2113, +0x2115, 0x2115, +0x2119, 0x211d, +0x2124, 0x2124, +0x2126, 0x2126, +0x2128, 0x2128, +0x212a, 0x212d, +0x212f, 0x2139, +0x213c, 0x213f, +0x2145, 0x2149, +0x214e, 0x214e, +0x2160, 0x2188, +0x24b6, 0x24e9, +0x2c00, 0x2c2e, +0x2c30, 0x2c5e, +0x2c60, 0x2ce4, +0x2ceb, 0x2cee, +0x2cf2, 0x2cf3, +0x2d00, 0x2d25, +0x2d27, 0x2d27, +0x2d2d, 0x2d2d, +0x2d30, 0x2d67, +0x2d6f, 0x2d6f, +0x2d80, 0x2d96, +0x2da0, 0x2da6, +0x2da8, 0x2dae, +0x2db0, 0x2db6, +0x2db8, 0x2dbe, +0x2dc0, 0x2dc6, +0x2dc8, 0x2dce, +0x2dd0, 0x2dd6, +0x2dd8, 0x2dde, +0x2de0, 0x2dff, +0x2e2f, 0x2e2f, +0x3005, 0x3007, +0x3021, 0x3029, +0x3031, 0x3035, +0x3038, 0x303c, +0x3041, 0x3096, +0x309d, 0x309f, +0x30a1, 0x30fa, +0x30fc, 0x30ff, +0x3105, 0x312f, +0x3131, 0x318e, +0x31a0, 0x31ba, +0x31f0, 0x31ff, +0x3400, 0x4db5, +0x4e00, 0x9fef, +0xa000, 0xa48c, +0xa4d0, 0xa4fd, +0xa500, 0xa60c, +0xa610, 0xa62b, +0xa640, 0xa66e, +0xa674, 0xa67b, +0xa67f, 0xa6ef, +0xa717, 0xa71f, +0xa722, 0xa788, +0xa78b, 0xa7b9, +0xa7f7, 0xa801, +0xa803, 0xa805, +0xa807, 0xa80a, +0xa80c, 0xa827, +0xa840, 0xa873, +0xa880, 0xa8c3, +0xa8c5, 0xa8c5, +0xa8d0, 0xa8d9, +0xa8f2, 0xa8f7, +0xa8fb, 0xa8fb, +0xa8fd, 0xa8fe, +0xa900, 0xa92a, +0xa930, 0xa952, +0xa960, 0xa97c, +0xa980, 0xa9b2, +0xa9b4, 0xa9bf, +0xa9cf, 0xa9d9, +0xa9e0, 0xa9e4, +0xa9e6, 0xa9fe, +0xaa00, 0xaa36, +0xaa40, 0xaa4d, +0xaa50, 0xaa59, +0xaa60, 0xaa76, +0xaa7a, 0xaa7a, +0xaa7e, 0xaabe, +0xaac0, 0xaac0, +0xaac2, 0xaac2, +0xaadb, 0xaadd, +0xaae0, 0xaaef, +0xaaf2, 0xaaf5, +0xab01, 0xab06, +0xab09, 0xab0e, +0xab11, 0xab16, +0xab20, 0xab26, +0xab28, 0xab2e, +0xab30, 0xab5a, +0xab5c, 0xab65, +0xab70, 0xabea, +0xabf0, 0xabf9, +0xac00, 0xd7a3, +0xd7b0, 0xd7c6, +0xd7cb, 0xd7fb, +0xf900, 0xfa6d, +0xfa70, 0xfad9, +0xfb00, 0xfb06, +0xfb13, 0xfb17, +0xfb1d, 0xfb28, +0xfb2a, 0xfb36, +0xfb38, 0xfb3c, +0xfb3e, 0xfb3e, +0xfb40, 0xfb41, +0xfb43, 0xfb44, +0xfb46, 0xfbb1, +0xfbd3, 0xfd3d, +0xfd50, 0xfd8f, +0xfd92, 0xfdc7, +0xfdf0, 0xfdfb, +0xfe70, 0xfe74, +0xfe76, 0xfefc, +0xff10, 0xff19, +0xff21, 0xff3a, +0xff41, 0xff5a, +0xff66, 0xffbe, +0xffc2, 0xffc7, +0xffca, 0xffcf, +0xffd2, 0xffd7, +0xffda, 0xffdc, +0x10000, 0x1000b, +0x1000d, 0x10026, +0x10028, 0x1003a, +0x1003c, 0x1003d, +0x1003f, 0x1004d, +0x10050, 0x1005d, +0x10080, 0x100fa, +0x10140, 0x10174, +0x10280, 0x1029c, +0x102a0, 0x102d0, +0x10300, 0x1031f, +0x1032d, 0x1034a, +0x10350, 0x1037a, +0x10380, 0x1039d, +0x103a0, 0x103c3, +0x103c8, 0x103cf, +0x103d1, 0x103d5, +0x10400, 0x1049d, +0x104a0, 0x104a9, +0x104b0, 0x104d3, +0x104d8, 0x104fb, +0x10500, 0x10527, +0x10530, 0x10563, +0x10600, 0x10736, +0x10740, 0x10755, +0x10760, 0x10767, +0x10800, 0x10805, +0x10808, 0x10808, +0x1080a, 0x10835, +0x10837, 0x10838, +0x1083c, 0x1083c, +0x1083f, 0x10855, +0x10860, 0x10876, +0x10880, 0x1089e, +0x108e0, 0x108f2, +0x108f4, 0x108f5, +0x10900, 0x10915, +0x10920, 0x10939, +0x10980, 0x109b7, +0x109be, 0x109bf, +0x10a00, 0x10a03, +0x10a05, 0x10a06, +0x10a0c, 0x10a13, +0x10a15, 0x10a17, +0x10a19, 0x10a35, +0x10a60, 0x10a7c, +0x10a80, 0x10a9c, +0x10ac0, 0x10ac7, +0x10ac9, 0x10ae4, +0x10b00, 0x10b35, +0x10b40, 0x10b55, +0x10b60, 0x10b72, +0x10b80, 0x10b91, +0x10c00, 0x10c48, +0x10c80, 0x10cb2, +0x10cc0, 0x10cf2, +0x10d00, 0x10d27, +0x10d30, 0x10d39, +0x10f00, 0x10f1c, +0x10f27, 0x10f27, +0x10f30, 0x10f45, +0x11000, 0x11045, +0x11066, 0x1106f, +0x11082, 0x110b8, +0x110d0, 0x110e8, +0x110f0, 0x110f9, +0x11100, 0x11132, +0x11136, 0x1113f, +0x11144, 0x11146, +0x11150, 0x11172, +0x11176, 0x11176, +0x11180, 0x111bf, +0x111c1, 0x111c4, +0x111d0, 0x111da, +0x111dc, 0x111dc, +0x11200, 0x11211, +0x11213, 0x11234, +0x11237, 0x11237, +0x1123e, 0x1123e, +0x11280, 0x11286, +0x11288, 0x11288, +0x1128a, 0x1128d, +0x1128f, 0x1129d, +0x1129f, 0x112a8, +0x112b0, 0x112e8, +0x112f0, 0x112f9, +0x11300, 0x11303, +0x11305, 0x1130c, +0x1130f, 0x11310, +0x11313, 0x11328, +0x1132a, 0x11330, +0x11332, 0x11333, +0x11335, 0x11339, +0x1133d, 0x11344, +0x11347, 0x11348, +0x1134b, 0x1134c, +0x11350, 0x11350, +0x11357, 0x11357, +0x1135d, 0x11363, +0x11400, 0x11441, +0x11443, 0x11445, +0x11447, 0x1144a, +0x11450, 0x11459, +0x11480, 0x114c1, +0x114c4, 0x114c5, +0x114c7, 0x114c7, +0x114d0, 0x114d9, +0x11580, 0x115b5, +0x115b8, 0x115be, +0x115d8, 0x115dd, +0x11600, 0x1163e, +0x11640, 0x11640, +0x11644, 0x11644, +0x11650, 0x11659, +0x11680, 0x116b5, +0x116c0, 0x116c9, +0x11700, 0x1171a, +0x1171d, 0x1172a, +0x11730, 0x11739, +0x11800, 0x11838, +0x118a0, 0x118e9, +0x118ff, 0x118ff, +0x11a00, 0x11a32, +0x11a35, 0x11a3e, +0x11a50, 0x11a83, +0x11a86, 0x11a97, +0x11a9d, 0x11a9d, +0x11ac0, 0x11af8, +0x11c00, 0x11c08, +0x11c0a, 0x11c36, +0x11c38, 0x11c3e, +0x11c40, 0x11c40, +0x11c50, 0x11c59, +0x11c72, 0x11c8f, +0x11c92, 0x11ca7, +0x11ca9, 0x11cb6, +0x11d00, 0x11d06, +0x11d08, 0x11d09, +0x11d0b, 0x11d36, +0x11d3a, 0x11d3a, +0x11d3c, 0x11d3d, +0x11d3f, 0x11d41, +0x11d43, 0x11d43, +0x11d46, 0x11d47, +0x11d50, 0x11d59, +0x11d60, 0x11d65, +0x11d67, 0x11d68, +0x11d6a, 0x11d8e, +0x11d90, 0x11d91, +0x11d93, 0x11d96, +0x11d98, 0x11d98, +0x11da0, 0x11da9, +0x11ee0, 0x11ef6, +0x12000, 0x12399, +0x12400, 0x1246e, +0x12480, 0x12543, +0x13000, 0x1342e, +0x14400, 0x14646, +0x16800, 0x16a38, +0x16a40, 0x16a5e, +0x16a60, 0x16a69, +0x16ad0, 0x16aed, +0x16b00, 0x16b36, +0x16b40, 0x16b43, +0x16b50, 0x16b59, +0x16b63, 0x16b77, +0x16b7d, 0x16b8f, +0x16e40, 0x16e7f, +0x16f00, 0x16f44, +0x16f50, 0x16f7e, +0x16f93, 0x16f9f, +0x16fe0, 0x16fe1, +0x17000, 0x187f1, +0x18800, 0x18af2, +0x1b000, 0x1b11e, +0x1b170, 0x1b2fb, +0x1bc00, 0x1bc6a, +0x1bc70, 0x1bc7c, +0x1bc80, 0x1bc88, +0x1bc90, 0x1bc99, +0x1bc9e, 0x1bc9e, +0x1d400, 0x1d454, +0x1d456, 0x1d49c, +0x1d49e, 0x1d49f, +0x1d4a2, 0x1d4a2, +0x1d4a5, 0x1d4a6, +0x1d4a9, 0x1d4ac, +0x1d4ae, 0x1d4b9, +0x1d4bb, 0x1d4bb, +0x1d4bd, 0x1d4c3, +0x1d4c5, 0x1d505, +0x1d507, 0x1d50a, +0x1d50d, 0x1d514, +0x1d516, 0x1d51c, +0x1d51e, 0x1d539, +0x1d53b, 0x1d53e, +0x1d540, 0x1d544, +0x1d546, 0x1d546, +0x1d54a, 0x1d550, +0x1d552, 0x1d6a5, +0x1d6a8, 0x1d6c0, +0x1d6c2, 0x1d6da, +0x1d6dc, 0x1d6fa, +0x1d6fc, 0x1d714, +0x1d716, 0x1d734, +0x1d736, 0x1d74e, +0x1d750, 0x1d76e, +0x1d770, 0x1d788, +0x1d78a, 0x1d7a8, +0x1d7aa, 0x1d7c2, +0x1d7c4, 0x1d7cb, +0x1d7ce, 0x1d7ff, +0x1e000, 0x1e006, +0x1e008, 0x1e018, +0x1e01b, 0x1e021, +0x1e023, 0x1e024, +0x1e026, 0x1e02a, +0x1e800, 0x1e8c4, +0x1e900, 0x1e943, +0x1e947, 0x1e947, +0x1e950, 0x1e959, +0x1ee00, 0x1ee03, +0x1ee05, 0x1ee1f, +0x1ee21, 0x1ee22, +0x1ee24, 0x1ee24, +0x1ee27, 0x1ee27, +0x1ee29, 0x1ee32, +0x1ee34, 0x1ee37, +0x1ee39, 0x1ee39, +0x1ee3b, 0x1ee3b, +0x1ee42, 0x1ee42, +0x1ee47, 0x1ee47, +0x1ee49, 0x1ee49, +0x1ee4b, 0x1ee4b, +0x1ee4d, 0x1ee4f, +0x1ee51, 0x1ee52, +0x1ee54, 0x1ee54, +0x1ee57, 0x1ee57, +0x1ee59, 0x1ee59, +0x1ee5b, 0x1ee5b, +0x1ee5d, 0x1ee5d, +0x1ee5f, 0x1ee5f, +0x1ee61, 0x1ee62, +0x1ee64, 0x1ee64, +0x1ee67, 0x1ee6a, +0x1ee6c, 0x1ee72, +0x1ee74, 0x1ee77, +0x1ee79, 0x1ee7c, +0x1ee7e, 0x1ee7e, +0x1ee80, 0x1ee89, +0x1ee8b, 0x1ee9b, +0x1eea1, 0x1eea3, +0x1eea5, 0x1eea9, +0x1eeab, 0x1eebb, +0x1f130, 0x1f149, +0x1f150, 0x1f169, +0x1f170, 0x1f189, +0x20000, 0x2a6d6, +0x2a700, 0x2b734, +0x2b740, 0x2b81d, +0x2b820, 0x2cea1, +0x2ceb0, 0x2ebe0, +0x2f800, 0x2fa1d, +}; /* END of CR_Alnum */ + +/* PROPERTY: 'ASCII': POSIX [[:ASCII:]] */ +static const OnigCodePoint +CR_ASCII[] = { 1, +0x0000, 0x007f, +}; /* END of CR_ASCII */ + + +static const OnigCodePoint* +const CodeRanges[] = { + CR_NEWLINE, + CR_Alpha, + CR_Blank, + CR_Cntrl, + CR_Digit, + CR_Graph, + CR_Lower, + CR_Print, + CR_Punct, + CR_Space, + CR_Upper, + CR_XDigit, + CR_Word, + CR_Alnum, + CR_ASCII, +}; + +#define pool_offset(s) offsetof(struct unicode_prop_name_pool_t, unicode_prop_name_pool_str##s) + + +#define TOTAL_KEYWORDS 15 +#define MIN_WORD_LENGTH 4 +#define MAX_WORD_LENGTH 7 +#define MIN_HASH_VALUE 5 +#define MAX_HASH_VALUE 19 +/* maximum key range = 15, duplicates = 0 */ + +#ifndef GPERF_DOWNCASE +#define GPERF_DOWNCASE 1 +static unsigned char gperf_downcase[256] = + { + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, + 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, + 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, + 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, + 255 + }; +#endif + +#ifndef GPERF_CASE_STRNCMP +#define GPERF_CASE_STRNCMP 1 +static int +gperf_case_strncmp (register const char *s1, register const char *s2, register size_t n) +{ + for (; n > 0;) + { + unsigned char c1 = gperf_downcase[(unsigned char)*s1++]; + unsigned char c2 = gperf_downcase[(unsigned char)*s2++]; + if (c1 != 0 && c1 == c2) + { + n--; + continue; + } + return (int)c1 - (int)c2; + } + return 0; +} +#endif + +#ifdef __GNUC__ +__inline +#else +#ifdef __cplusplus +inline +#endif +#endif +static unsigned int +hash (register const char *str, register size_t len) +{ + static const unsigned char asso_values[] = + { + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 2, 12, 5, 3, 20, + 20, 10, 20, 0, 20, 20, 9, 20, 1, 20, + 0, 20, 9, 7, 3, 6, 20, 2, 3, 20, + 20, 20, 20, 20, 20, 20, 20, 2, 12, 5, + 3, 20, 20, 10, 20, 0, 20, 20, 9, 20, + 1, 20, 0, 20, 9, 7, 3, 6, 20, 2, + 3, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20 + }; + return len + asso_values[(unsigned char)str[2]] + asso_values[(unsigned char)str[0]]; +} + +struct unicode_prop_name_pool_t + { + char unicode_prop_name_pool_str5[sizeof("print")]; + char unicode_prop_name_pool_str6[sizeof("punct")]; + char unicode_prop_name_pool_str7[sizeof("alpha")]; + char unicode_prop_name_pool_str8[sizeof("alnum")]; + char unicode_prop_name_pool_str9[sizeof("xdigit")]; + char unicode_prop_name_pool_str10[sizeof("newline")]; + char unicode_prop_name_pool_str11[sizeof("upper")]; + char unicode_prop_name_pool_str12[sizeof("ascii")]; + char unicode_prop_name_pool_str13[sizeof("cntrl")]; + char unicode_prop_name_pool_str14[sizeof("space")]; + char unicode_prop_name_pool_str15[sizeof("word")]; + char unicode_prop_name_pool_str16[sizeof("lower")]; + char unicode_prop_name_pool_str17[sizeof("graph")]; + char unicode_prop_name_pool_str18[sizeof("digit")]; + char unicode_prop_name_pool_str19[sizeof("blank")]; + }; +static const struct unicode_prop_name_pool_t unicode_prop_name_pool_contents = + { + "print", + "punct", + "alpha", + "alnum", + "xdigit", + "newline", + "upper", + "ascii", + "cntrl", + "space", + "word", + "lower", + "graph", + "digit", + "blank" + }; +#define unicode_prop_name_pool ((const char *) &unicode_prop_name_pool_contents) +static const struct PoolPropertyNameCtype * +unicode_lookup_property_name (register const char *str, register size_t len) +{ + static const struct PoolPropertyNameCtype wordlist[] = + { + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(5), 7}, + + {pool_offset(6), 8}, + + {pool_offset(7), 1}, + + {pool_offset(8), 13}, + + {pool_offset(9), 11}, + + {pool_offset(10), 0}, + + {pool_offset(11), 10}, + + {pool_offset(12), 14}, + + {pool_offset(13), 3}, + + {pool_offset(14), 9}, + + {pool_offset(15), 12}, + + {pool_offset(16), 6}, + + {pool_offset(17), 5}, + + {pool_offset(18), 4}, + + {pool_offset(19), 2} + }; + + if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH) + { + register unsigned int key = hash (str, len); + + if (key <= MAX_HASH_VALUE) + { + register int o = wordlist[key].name; + if (o >= 0) + { + register const char *s = o + unicode_prop_name_pool; + + if ((((unsigned char)*str ^ (unsigned char)*s) & ~32) == 0 && !gperf_case_strncmp (str, s, len) && s[len] == '\0') + return &wordlist[key]; + } + } + } + return 0; +} + + + +#define PROPERTY_NAME_MAX_SIZE 17 +#define CODE_RANGES_NUM 15 + +#define PROP_INDEX_NEWLINE 0 +#define PROP_INDEX_ALPHA 1 +#define PROP_INDEX_BLANK 2 +#define PROP_INDEX_CNTRL 3 +#define PROP_INDEX_DIGIT 4 +#define PROP_INDEX_GRAPH 5 +#define PROP_INDEX_LOWER 6 +#define PROP_INDEX_PRINT 7 +#define PROP_INDEX_PUNCT 8 +#define PROP_INDEX_SPACE 9 +#define PROP_INDEX_UPPER 10 +#define PROP_INDEX_XDIGIT 11 +#define PROP_INDEX_WORD 12 +#define PROP_INDEX_ALNUM 13 +#define PROP_INDEX_ASCII 14 diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_unfold_key.c b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_unfold_key.c new file mode 100644 index 0000000000..37a147e9db --- /dev/null +++ b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_unfold_key.c @@ -0,0 +1,3287 @@ +/* This file was converted by gperf_unfold_key_conv.py + from gperf output file. */ +/* ANSI-C code produced by gperf version 3.1 */ +/* Command-line: /usr/bin/gperf -n -C -T -c -t -j1 -L ANSI-C -F,-1,0 -N onigenc_unicode_unfold_key unicode_unfold_key.gperf */ +/* Computed positions: -k'1-3' */ + + + +/* This gperf source file was generated by make_unicode_fold_data.py */ + +/*- + * Copyright (c) 2017-2018 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 +#include "regenc.h" + +#define TOTAL_KEYWORDS 1480 +#define MIN_WORD_LENGTH 3 +#define MAX_WORD_LENGTH 3 +#define MIN_HASH_VALUE 10 +#define MAX_HASH_VALUE 1993 +/* maximum key range = 1984, duplicates = 0 */ + +#ifdef __GNUC__ +__inline +#else +#ifdef __cplusplus +inline +#endif +#endif +/*ARGSUSED*/ +static unsigned int +hash(OnigCodePoint codes[]) +{ + static const unsigned short asso_values[] = + { + 9, 5, 2, 214, 176, 1, 110, 1994, 1994, 1994, + 1994, 1994, 1994, 13, 1994, 1994, 1994, 77, 1994, 1994, + 71, 1994, 1994, 1994, 1994, 86, 1994, 1994, 1994, 7, + 1994, 0, 3, 1994, 50, 560, 1509, 132, 1501, 552, + 1492, 546, 1586, 538, 1491, 4, 1480, 518, 1475, 510, + 1467, 879, 1578, 855, 1459, 527, 1426, 234, 1067, 497, + 1458, 486, 1450, 352, 1436, 831, 1577, 783, 285, 639, + 1576, 629, 1567, 575, 1566, 609, 1556, 567, 1425, 598, + 1151, 587, 1064, 461, 668, 1035, 427, 1414, 160, 1411, + 21, 1404, 1253, 1289, 1416, 1537, 482, 1402, 669, 1391, + 1302, 1305, 1277, 1095, 1220, 1076, 261, 869, 1387, 475, + 1340, 151, 327, 845, 859, 824, 731, 816, 539, 715, + 212, 707, 83, 1297, 1046, 1278, 529, 1380, 520, 1352, + 184, 1086, 235, 1073, 275, 1052, 193, 1258, 8, 1060, + 655, 1030, 513, 1022, 393, 254, 344, 1265, 203, 1246, + 193, 1548, 15, 1376, 120, 1545, 1591, 525, 1590, 232, + 1583, 1365, 1465, 464, 1011, 451, 1353, 18, 6, 383, + 1236, 802, 8, 438, 940, 163, 1533, 427, 858, 244, + 1225, 360, 1212, 333, 575, 219, 1002, 206, 1209, 320, + 735, 140, 1199, 410, 1188, 73, 973, 103, 965, 63, + 944, 53, 791, 196, 788, 116, 695, 93, 921, 83, + 930, 182, 762, 31, 685, 311, 913, 268, 671, 44, + 906, 302, 1186, 293, 1180, 280, 1154, 885, 1354, 660, + 760, 650, 1174, 1169, 402, 897, 641, 726, 1162, 1153, + 622, 1316, 994, 1143, 664, 1134, 447, 173, 375, 1124, + 0, 1111, 371, 956, 156, 1270, 147, 1117, 113, 504, + 1994, 1105, 112, 1347, 1994, 1339, 75, 1335, 65, 1331, + 591, 1096, 45, 1393, 1994, 1198, 239, 1324, 26, 984, + 18, 1528, 40, 1517, 124, 421, 27, 904, 91, 137, + 16 + }; + 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)]; +} + +const struct ByUnfoldKey * +onigenc_unicode_unfold_key(OnigCodePoint code) +{ + static const struct ByUnfoldKey wordlist[] = + { + {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, 3420, 1}, + + {0x01d7, 444, 1}, + + {0x1fd7, 31, 3}, + + {0x1e0a, 1876, 1}, + + {0x040a, 1026, 1}, + + {0x010a, 186, 1}, + + {0x1f0a, 2237, 1}, + + {0x2c0a, 2600, 1}, + + {0x1f85, 154, 2}, + + {0x0189, 619, 1}, + + {0x1f89, 134, 2}, + + {0x2c67, 2720, 1}, + + {0x1c85, 951, 1}, + + {0xab85, 1660, 1}, + + {0x10c85, 3633, 1}, + + {0xab89, 1672, 1}, + + {0x10c89, 3645, 1}, + + {0x1e84, 2060, 1}, + + {0x2c75, 2732, 1}, + + {0x0184, 360, 1}, + + {0x1f84, 149, 2}, + + {0x2c84, 2741, 1}, + + {0xab75, 1612, 1}, + + {0xa784, 3255, 1}, + + {0x1c84, 951, 1}, + + {0xab84, 1657, 1}, + + {0x10c84, 3630, 1}, + + {0x104b2, 3516, 1}, + + {0x1ff3, 96, 2}, + + {0x1ffb, 2414, 1}, + + {0x1eb2, 2114, 1}, + + {0x04b2, 1156, 1}, + + {0x01b2, 697, 1}, + + {0x1fb2, 249, 2}, + + {0x2cb2, 2810, 1}, + + {0xa684, 3090, 1}, + + {0xa7b2, 706, 1}, + + {0x1cb2, 1561, 1}, + + {0xabb2, 1795, 1}, + + {0x10cb2, 3768, 1}, + + {0x104b8, 3534, 1}, + + {0x01f7, 414, 1}, + + {0x1ff7, 67, 3}, + + {0x1eb8, 2123, 1}, + + {0x04b8, 1165, 1}, + + {0x01b8, 408, 1}, + + {0x1fb8, 2417, 1}, + + {0x2cb8, 2819, 1}, + + {0x2ced, 2888, 1}, + + {0xa7b8, 3306, 1}, + + {0x1cb8, 1579, 1}, + + {0xabb8, 1813, 1}, + + {0x1ea6, 2096, 1}, + + {0x04a6, 1138, 1}, + + {0x01a6, 679, 1}, + + {0x1fa6, 239, 2}, + + {0x2ca6, 2792, 1}, + + {0x2167, 2462, 1}, + + {0xa7a6, 3294, 1}, + + {0x1ca6, 1525, 1}, + + {0xaba6, 1759, 1}, + + {0x10ca6, 3732, 1}, + + {0x1ea4, 2093, 1}, + + {0x04a4, 1135, 1}, + + {0x01a4, 390, 1}, + + {0x1fa4, 229, 2}, + + {0x2ca4, 2789, 1}, + + {0x1fe9, 2432, 1}, + + {0xa7a4, 3291, 1}, + + {0x1ca4, 1519, 1}, + + {0xaba4, 1753, 1}, + + {0x10ca4, 3726, 1}, + + {0x1ea0, 2087, 1}, + + {0x04a0, 1129, 1}, + + {0x01a0, 384, 1}, + + {0x1fa0, 209, 2}, + + {0x2ca0, 2783, 1}, + + {0x1fe7, 47, 3}, + + {0xa7a0, 3285, 1}, + + {0x1ca0, 1507, 1}, + + {0xaba0, 1741, 1}, + + {0x10ca0, 3714, 1}, + + {0x1eae, 2108, 1}, + + {0x04ae, 1150, 1}, + + {0x01ae, 688, 1}, + + {0x1fae, 239, 2}, + + {0x2cae, 2804, 1}, + + {0x0057, 65, 1}, + + {0xa7ae, 655, 1}, + + {0x1cae, 1549, 1}, + + {0xabae, 1783, 1}, + + {0x10cae, 3756, 1}, + + {0x1eac, 2105, 1}, + + {0x04ac, 1147, 1}, + + {0x01ac, 396, 1}, + + {0x1fac, 229, 2}, + + {0x2cac, 2801, 1}, + + {0x13fb, 1846, 1}, + + {0xa7ac, 637, 1}, + + {0x1cac, 1543, 1}, + + {0xabac, 1777, 1}, + + {0x10cac, 3750, 1}, + + {0x1ea2, 2090, 1}, + + {0x04a2, 1132, 1}, + + {0x01a2, 387, 1}, + + {0x1fa2, 219, 2}, + + {0x2ca2, 2786, 1}, + + {0x10b2, 2948, 1}, + + {0xa7a2, 3288, 1}, + + {0x1ca2, 1513, 1}, + + {0xaba2, 1747, 1}, + + {0x10ca2, 3720, 1}, + + {0x118b2, 3825, 1}, + + {0x050a, 1288, 1}, + + {0x1fe3, 41, 3}, + + {0x1eaa, 2102, 1}, + + {0x04aa, 1144, 1}, + + {0x00df, 24, 2}, + + {0x1faa, 219, 2}, + + {0x2caa, 2798, 1}, + + {0x10b8, 2966, 1}, + + {0xa7aa, 646, 1}, + + {0x1caa, 1537, 1}, + + {0xabaa, 1771, 1}, + + {0x10caa, 3744, 1}, + + {0x118b8, 3843, 1}, + + {0x1ff9, 2402, 1}, + + {0xab77, 1618, 1}, + + {0x10402, 3396, 1}, + + {0x10a6, 2912, 1}, + + {0x0537, 1363, 1}, + + {0x1e02, 1864, 1}, + + {0x0402, 1002, 1}, + + {0x0102, 174, 1}, + + {0x118a6, 3789, 1}, + + {0x2c02, 2576, 1}, + + {0x1efe, 2228, 1}, + + {0x04fe, 1270, 1}, + + {0x01fe, 499, 1}, + + {0x10a4, 2906, 1}, + + {0x049c, 1123, 1}, + + {0x019c, 664, 1}, + + {0x1f9c, 189, 2}, + + {0x2c9c, 2777, 1}, + + {0x118a4, 3783, 1}, + + {0xa79c, 3279, 1}, + + {0x1c9c, 1495, 1}, + + {0xab9c, 1729, 1}, + + {0x10c9c, 3702, 1}, + + {0x10a0, 2894, 1}, + + {0x1e4c, 1975, 1}, + + {0x00dd, 162, 1}, + + {0x014c, 279, 1}, + + {0x1f4c, 2333, 1}, + + {0x118a0, 3771, 1}, + + {0x004c, 31, 1}, + + {0xa74c, 3186, 1}, + + {0x01db, 450, 1}, + + {0x1fdb, 2396, 1}, + + {0x10ae, 2936, 1}, + + {0x00db, 156, 1}, + + {0x13fd, 1852, 1}, + + {0x1e8c, 2072, 1}, + + {0x048c, 1099, 1}, + + {0x118ae, 3813, 1}, + + {0x1f8c, 149, 2}, + + {0x2c8c, 2753, 1}, + + {0xff37, 3378, 1}, + + {0xa64c, 3033, 1}, + + {0x10ac, 2930, 1}, + + {0xab8c, 1681, 1}, + + {0x10c8c, 3654, 1}, + + {0x1ed4, 2165, 1}, + + {0x04d4, 1207, 1}, + + {0x118ac, 3807, 1}, + + {0x24b8, 2498, 1}, + + {0x2cd4, 2861, 1}, + + {0x00d4, 138, 1}, + + {0x104b0, 3510, 1}, + + {0x10a2, 2900, 1}, + + {0xa68c, 3102, 1}, + + {0x1eb0, 2111, 1}, + + {0x04b0, 1153, 1}, + + {0x0389, 736, 1}, + + {0x118a2, 3777, 1}, + + {0x2cb0, 2807, 1}, + + {0x1f5f, 2348, 1}, + + {0xa7b0, 709, 1}, + + {0x1cb0, 1555, 1}, + + {0xabb0, 1789, 1}, + + {0x10cb0, 3762, 1}, + + {0x03ff, 727, 1}, + + {0x10aa, 2924, 1}, + + {0x03f5, 755, 1}, + + {0x13f9, 1840, 1}, + + {0x1ea8, 2099, 1}, + + {0x04a8, 1141, 1}, + + {0x118aa, 3801, 1}, + + {0x1fa8, 209, 2}, + + {0x2ca8, 2795, 1}, + + {0xab73, 1606, 1}, + + {0xa7a8, 3297, 1}, + + {0x1ca8, 1531, 1}, + + {0xaba8, 1765, 1}, + + {0x10ca8, 3738, 1}, + + {0x1e98, 38, 2}, + + {0x0498, 1117, 1}, + + {0x0198, 375, 1}, + + {0x1f98, 169, 2}, + + {0x2c98, 2771, 1}, + + {0xab71, 1600, 1}, + + {0xa798, 3273, 1}, + + {0x1c98, 1483, 1}, + + {0xab98, 1717, 1}, + + {0x10c98, 3690, 1}, + + {0x03f7, 887, 1}, + + {0x0055, 59, 1}, + + {0x020a, 517, 1}, + + {0x1e96, 16, 2}, + + {0x0496, 1114, 1}, + + {0x0196, 652, 1}, + + {0x1f96, 199, 2}, + + {0x2c96, 2768, 1}, + + {0xa698, 3120, 1}, + + {0xa796, 3270, 1}, + + {0x1c96, 1477, 1}, + + {0xab96, 1711, 1}, + + {0x10c96, 3684, 1}, + + {0x03a6, 813, 1}, + + {0x16e57, 3936, 1}, + + {0x10416, 3456, 1}, + + {0x1e7c, 2048, 1}, + + {0x047c, 1087, 1}, + + {0x1e16, 1894, 1}, + + {0x0416, 913, 1}, + + {0x0116, 204, 1}, + + {0xa696, 3117, 1}, + + {0x2c16, 2636, 1}, + + {0x03a4, 807, 1}, + + {0xab7c, 1633, 1}, + + {0x01f1, 483, 1}, + + {0x0502, 1276, 1}, + + {0x2165, 2456, 1}, + + {0x1e90, 2078, 1}, + + {0x0490, 1105, 1}, + + {0x0190, 628, 1}, + + {0x1f90, 169, 2}, + + {0x2c90, 2759, 1}, + + {0x03a0, 795, 1}, + + {0xa790, 3264, 1}, + + {0x1c90, 1459, 1}, + + {0xab90, 1693, 1}, + + {0x10c90, 3666, 1}, + + {0x1e6e, 2027, 1}, + + {0x046e, 1066, 1}, + + {0x016e, 330, 1}, + + {0x1f6e, 2369, 1}, + + {0x2c6e, 667, 1}, + + {0x10b0, 2942, 1}, + + {0xa76e, 3237, 1}, + + {0x054c, 1426, 1}, + + {0xa690, 3108, 1}, + + {0x0147, 273, 1}, + + {0x118b0, 3819, 1}, + + {0x104b6, 3528, 1}, + + {0x0047, 18, 1}, + + {0x03fd, 721, 1}, + + {0x1eb6, 2120, 1}, + + {0x04b6, 1162, 1}, + + {0x0535, 1357, 1}, + + {0x1fb6, 58, 2}, + + {0x2cb6, 2816, 1}, + + {0x10a8, 2918, 1}, + + {0xa7b6, 3303, 1}, + + {0x1cb6, 1573, 1}, + + {0xabb6, 1807, 1}, + + {0x104be, 3552, 1}, + + {0x118a8, 3795, 1}, + + {0x2c63, 1858, 1}, + + {0x1ebe, 2132, 1}, + + {0x04be, 1174, 1}, + + {0x10421, 3489, 1}, + + {0x1fbe, 770, 1}, + + {0x2cbe, 2828, 1}, + + {0x2161, 2444, 1}, + + {0x0421, 947, 1}, + + {0x1cbe, 1591, 1}, + + {0xabbe, 1831, 1}, + + {0x2c21, 2669, 1}, + + {0x104bc, 3546, 1}, + {0xffffffff, -1, 0}, + + {0x03aa, 827, 1}, + + {0x1ebc, 2129, 1}, + + {0x04bc, 1171, 1}, + + {0x01bc, 411, 1}, + + {0x1fbc, 62, 2}, + + {0x2cbc, 2825, 1}, + + {0x16e4c, 3903, 1}, + + {0x104ba, 3540, 1}, + + {0x03f9, 881, 1}, + + {0xabbc, 1825, 1}, + + {0x1eba, 2126, 1}, + + {0x04ba, 1168, 1}, + + {0x216e, 2483, 1}, + + {0x1fba, 2375, 1}, + + {0x2cba, 2822, 1}, + + {0xff35, 3372, 1}, + + {0x104b4, 3522, 1}, + + {0x1cba, 1585, 1}, + + {0xabba, 1819, 1}, + + {0x1eb4, 2117, 1}, + + {0x04b4, 1159, 1}, + + {0x03fe, 724, 1}, + + {0x1fb4, 50, 2}, + + {0x2cb4, 2813, 1}, + + {0x039c, 782, 1}, + + {0xa7b4, 3300, 1}, + + {0x1cb4, 1567, 1}, + + {0xabb4, 1801, 1}, + + {0x1e9a, 0, 2}, + + {0x049a, 1120, 1}, + + {0x0555, 1453, 1}, + + {0x1f9a, 179, 2}, + + {0x2c9a, 2774, 1}, + + {0x2163, 2450, 1}, + + {0xa79a, 3276, 1}, + + {0x1c9a, 1489, 1}, + + {0xab9a, 1723, 1}, + + {0x10c9a, 3696, 1}, + + {0x1f4d, 2336, 1}, + + {0x16e5f, 3960, 1}, + + {0x004d, 34, 1}, + + {0x1e94, 2084, 1}, + + {0x0494, 1111, 1}, + + {0x0194, 640, 1}, + + {0x1f94, 189, 2}, + + {0x2c94, 2765, 1}, + + {0xa69a, 3123, 1}, + + {0x038c, 833, 1}, + + {0x1c94, 1471, 1}, + + {0xab94, 1705, 1}, + + {0x10c94, 3678, 1}, + {0xffffffff, -1, 0}, + + {0x0516, 1306, 1}, + + {0x10b6, 2960, 1}, + + {0x0202, 505, 1}, + + {0x1f6f, 2372, 1}, + + {0x2c6f, 604, 1}, + + {0x1041c, 3474, 1}, + + {0x118b6, 3837, 1}, + + {0xa694, 3114, 1}, + + {0x1e1c, 1903, 1}, + + {0x041c, 931, 1}, + + {0x011c, 213, 1}, + + {0x1f1c, 2267, 1}, + + {0x2c1c, 2654, 1}, + + {0x10be, 2984, 1}, + + {0x03b0, 41, 3}, + + {0x16e55, 3930, 1}, + + {0x1e92, 2081, 1}, + + {0x0492, 1108, 1}, + + {0x118be, 3861, 1}, + + {0x1f92, 179, 2}, + + {0x2c92, 2762, 1}, + + {0x024c, 598, 1}, + + {0xa792, 3267, 1}, + + {0x1c92, 1465, 1}, + + {0xab92, 1699, 1}, + + {0x10c92, 3672, 1}, + + {0x10bc, 2978, 1}, + + {0x0547, 1411, 1}, + + {0x03a8, 820, 1}, + + {0x01d9, 447, 1}, + + {0x1fd9, 2426, 1}, + + {0x118bc, 3855, 1}, + + {0x00d9, 150, 1}, + + {0x01d5, 441, 1}, + + {0xa692, 3111, 1}, + + {0x10ba, 2972, 1}, + + {0x00d5, 141, 1}, + {0xffffffff, -1, 0}, + + {0x0398, 765, 1}, + + {0x1e86, 2063, 1}, + + {0x118ba, 3849, 1}, + + {0x0186, 616, 1}, + + {0x1f86, 159, 2}, + + {0x2c86, 2744, 1}, + + {0x10b4, 2954, 1}, + + {0xa786, 3258, 1}, + + {0x1c86, 977, 1}, + + {0xab86, 1663, 1}, + + {0x10c86, 3636, 1}, + + {0x118b4, 3831, 1}, + + {0x216f, 2486, 1}, + + {0x0396, 759, 1}, + + {0x1f6d, 2366, 1}, + + {0x2c6d, 607, 1}, + {0xffffffff, -1, 0}, + + {0x104c7, 3579, 1}, + + {0x24b6, 2492, 1}, + + {0xa686, 3093, 1}, + + {0x1e90a, 3993, 1}, + + {0x04c7, 1186, 1}, + + {0x01c7, 421, 1}, + + {0x1fc7, 15, 3}, + {0xffffffff, -1, 0}, + + {0x00c7, 99, 1}, + + {0x16e47, 3888, 1}, + {0xffffffff, -1, 0}, + + {0x1e9e, 24, 2}, + + {0x049e, 1126, 1}, + + {0x24be, 2516, 1}, + + {0x1f9e, 199, 2}, + + {0x2c9e, 2780, 1}, + + {0x03f1, 799, 1}, + + {0xa79e, 3282, 1}, + + {0x1c9e, 1501, 1}, + + {0xab9e, 1735, 1}, + + {0x10c9e, 3708, 1}, + + {0x0390, 25, 3}, + + {0x1efa, 2222, 1}, + + {0x04fa, 1264, 1}, + + {0x01fa, 493, 1}, + + {0x1ffa, 2411, 1}, + + {0x24bc, 2510, 1}, + {0xffffffff, -1, 0}, + + {0x1e8e, 2075, 1}, + + {0x048e, 1102, 1}, + + {0x018e, 453, 1}, + + {0x1f8e, 159, 2}, + + {0x2c8e, 2756, 1}, + + {0xff21, 3312, 1}, + {0xffffffff, -1, 0}, + + {0x24ba, 2504, 1}, + + {0xab8e, 1687, 1}, + + {0x10c8e, 3660, 1}, + + {0x054d, 1429, 1}, + + {0x1e8a, 2069, 1}, + + {0x048a, 1096, 1}, + + {0x018a, 622, 1}, + + {0x1f8a, 139, 2}, + + {0x2c8a, 2750, 1}, + + {0x216d, 2480, 1}, + + {0x104d3, 3615, 1}, + + {0xa68e, 3105, 1}, + + {0xab8a, 1675, 1}, + + {0x10c8a, 3648, 1}, + + {0x0216, 535, 1}, + + {0x01d3, 438, 1}, + + {0x1fd3, 25, 3}, + + {0x1e82, 2057, 1}, + + {0x00d3, 135, 1}, + + {0x0182, 357, 1}, + + {0x1f82, 139, 2}, + + {0x2c82, 2738, 1}, + + {0xa68a, 3099, 1}, + + {0xa782, 3252, 1}, + + {0x1c82, 937, 1}, + + {0xab82, 1651, 1}, + + {0x10c82, 3624, 1}, + + {0x1e30, 1933, 1}, + + {0x051c, 1315, 1}, + + {0x0130, 261, 2}, + + {0x1e80, 2054, 1}, + + {0x0480, 1093, 1}, + {0xffffffff, -1, 0}, + + {0x1f80, 129, 2}, + + {0x2c80, 2735, 1}, + + {0xa682, 3087, 1}, + + {0xa780, 3249, 1}, + + {0x1c80, 899, 1}, + + {0xab80, 1645, 1}, + + {0x10c80, 3618, 1}, + + {0x16e4d, 3906, 1}, + + {0x1e4a, 1972, 1}, + {0xffffffff, -1, 0}, + + {0x014a, 276, 1}, + + {0x1f4a, 2327, 1}, + + {0x10c7, 3008, 1}, + + {0x004a, 24, 1}, + + {0xa74a, 3183, 1}, + + {0xa680, 3084, 1}, + + {0x1041a, 3468, 1}, + + {0x013d, 258, 1}, + + {0x1f3d, 2312, 1}, + + {0x1e1a, 1900, 1}, + + {0x041a, 925, 1}, + + {0x011a, 210, 1}, + + {0x1f1a, 2261, 1}, + + {0x2c1a, 2648, 1}, + {0xffffffff, -1, 0}, + + {0x13fa, 1843, 1}, + + {0xa64a, 3029, 1}, + + {0x10418, 3462, 1}, + {0xffffffff, -1, 0}, + + {0x039a, 775, 1}, + + {0x1e18, 1897, 1}, + + {0x0418, 919, 1}, + + {0x0118, 207, 1}, + + {0x1f18, 2255, 1}, + + {0x2c18, 2642, 1}, + {0xffffffff, -1, 0}, + + {0xfb02, 12, 2}, + + {0x1ee0, 2183, 1}, + + {0x04e0, 1225, 1}, + + {0x01e0, 459, 1}, + + {0x1040e, 3432, 1}, + + {0x2ce0, 2879, 1}, + + {0x0394, 752, 1}, + + {0x1e0e, 1882, 1}, + + {0x040e, 1038, 1}, + + {0x010e, 192, 1}, + + {0x1f0e, 2249, 1}, + + {0x2c0e, 2612, 1}, + + {0x1040c, 3426, 1}, + + {0x1f6b, 2360, 1}, + + {0x2c6b, 2726, 1}, + + {0x1e0c, 1879, 1}, + + {0x040c, 1032, 1}, + + {0x010c, 189, 1}, + + {0x1f0c, 2243, 1}, + + {0x2c0c, 2606, 1}, + + {0x1f5d, 2345, 1}, + + {0x10414, 3450, 1}, + + {0x1e7a, 2045, 1}, + + {0x047a, 1084, 1}, + + {0x1e14, 1891, 1}, + + {0x0414, 906, 1}, + + {0x0114, 201, 1}, + + {0x1e902, 3969, 1}, + + {0x2c14, 2630, 1}, + + {0x1f5b, 2342, 1}, + + {0xab7a, 1627, 1}, + + {0x24c7, 2543, 1}, + + {0x10408, 3414, 1}, + + {0x0392, 745, 1}, + + {0x0533, 1351, 1}, + + {0x1e08, 1873, 1}, + + {0x0408, 1020, 1}, + + {0x0108, 183, 1}, + + {0x1f08, 2231, 1}, + + {0x2c08, 2594, 1}, + + {0x10406, 3408, 1}, + + {0x0053, 52, 1}, + {0xffffffff, -1, 0}, + + {0x1e06, 1870, 1}, + + {0x0406, 1014, 1}, + + {0x0106, 180, 1}, + + {0x10404, 3402, 1}, + + {0x2c06, 2588, 1}, + + {0x03d5, 813, 1}, + + {0x1e04, 1867, 1}, + + {0x0404, 1008, 1}, + + {0x0104, 177, 1}, + {0xffffffff, -1, 0}, + + {0x2c04, 2582, 1}, + + {0x10400, 3390, 1}, + {0xffffffff, -1, 0}, + + {0x0386, 730, 1}, + + {0x1e00, 1861, 1}, + + {0x0400, 996, 1}, + + {0x0100, 171, 1}, + + {0x216b, 2474, 1}, + + {0x2c00, 2570, 1}, + {0xffffffff, -1, 0}, + + {0x021c, 544, 1}, + + {0x1e2a, 1924, 1}, + + {0x042a, 977, 1}, + + {0x012a, 234, 1}, + + {0x1f2a, 2279, 1}, + + {0x2c2a, 2696, 1}, + + {0x10426, 3504, 1}, + + {0xa72a, 3138, 1}, + + {0xff33, 3366, 1}, + + {0x1e26, 1918, 1}, + + {0x0426, 965, 1}, + + {0x0126, 228, 1}, + + {0x1f95, 194, 2}, + + {0x2c26, 2684, 1}, + {0xffffffff, -1, 0}, + + {0xa726, 3132, 1}, + + {0x1c95, 1474, 1}, + + {0xab95, 1708, 1}, + + {0x10c95, 3681, 1}, + + {0x054a, 1420, 1}, + + {0x039e, 789, 1}, + + {0x1e2e, 1930, 1}, + + {0x042e, 990, 1}, + + {0x012e, 240, 1}, + + {0x1f2e, 2291, 1}, + + {0x2c2e, 2708, 1}, + + {0x053d, 1381, 1}, + + {0xa72e, 3144, 1}, + + {0x1feb, 2408, 1}, + + {0x2ceb, 2885, 1}, + + {0x051a, 1312, 1}, + + {0x03fa, 890, 1}, + + {0x1e2c, 1927, 1}, + + {0x042c, 984, 1}, + + {0x012c, 237, 1}, + + {0x1f2c, 2285, 1}, + + {0x2c2c, 2702, 1}, + + {0x038e, 836, 1}, + + {0xa72c, 3141, 1}, + + {0xfb16, 125, 2}, + {0xffffffff, -1, 0}, + + {0x0518, 1309, 1}, + + {0xff30, 3357, 1}, + + {0x1e28, 1921, 1}, + + {0x0428, 971, 1}, + + {0x0128, 231, 1}, + + {0x1f28, 2273, 1}, + + {0x2c28, 2690, 1}, + + {0x038a, 739, 1}, + + {0xa728, 3135, 1}, + {0xffffffff, -1, 0}, + + {0x212a, 27, 1}, + {0xffffffff, -1, 0}, + + {0x104cd, 3597, 1}, + + {0x050e, 1294, 1}, + {0xffffffff, -1, 0}, + + {0x16e4a, 3897, 1}, + + {0x04cd, 1195, 1}, + + {0x01cd, 429, 1}, + + {0x2126, 823, 1}, + + {0x10424, 3498, 1}, + + {0x00cd, 117, 1}, + + {0x050c, 1291, 1}, + + {0x1e24, 1915, 1}, + + {0x0424, 959, 1}, + + {0x0124, 225, 1}, + + {0x1e916, 4029, 1}, + + {0x2c24, 2678, 1}, + {0xffffffff, -1, 0}, + + {0xa724, 3129, 1}, + + {0x10422, 3492, 1}, + + {0x0514, 1303, 1}, + + {0x104c9, 3585, 1}, + + {0x1e22, 1912, 1}, + + {0x0422, 951, 1}, + + {0x0122, 222, 1}, + + {0x04c9, 1189, 1}, + + {0x2c22, 2672, 1}, + + {0x1fc9, 2384, 1}, + + {0xa722, 3126, 1}, + + {0x00c9, 105, 1}, + + {0x104c4, 3570, 1}, + + {0x0508, 1285, 1}, + + {0x0553, 1447, 1}, + + {0x1ec4, 2141, 1}, + {0xffffffff, -1, 0}, + + {0x01c4, 417, 1}, + + {0x1fc4, 54, 2}, + + {0x2cc4, 2837, 1}, + + {0x00c4, 89, 1}, + + {0x0506, 1282, 1}, + + {0x104c2, 3564, 1}, + + {0x1f69, 2354, 1}, + + {0x2c69, 2723, 1}, + + {0x1ec2, 2138, 1}, + + {0x104d1, 3609, 1}, + + {0x0504, 1279, 1}, + + {0x1fc2, 253, 2}, + + {0x2cc2, 2834, 1}, + + {0x00c2, 83, 1}, + + {0x01d1, 435, 1}, + + {0x16e5d, 3954, 1}, + + {0x104b7, 3531, 1}, + + {0x00d1, 129, 1}, + + {0x0500, 1273, 1}, + + {0x013f, 261, 1}, + + {0x1f3f, 2318, 1}, + + {0x01b7, 703, 1}, + + {0x1fb7, 10, 3}, + + {0x0230, 571, 1}, + + {0x16e5b, 3948, 1}, + + {0x052a, 1336, 1}, + + {0x1cb7, 1576, 1}, + + {0xabb7, 1810, 1}, + + {0x03e0, 857, 1}, + {0xffffffff, -1, 0}, + + {0x104b3, 3519, 1}, + + {0x1e921, 4062, 1}, + {0xffffffff, -1, 0}, + + {0x0526, 1330, 1}, + + {0x16e53, 3924, 1}, + + {0x01b3, 402, 1}, + + {0x1fb3, 62, 2}, + + {0x024a, 595, 1}, + {0xffffffff, -1, 0}, + + {0xa7b3, 3309, 1}, + + {0x1cb3, 1564, 1}, + + {0xabb3, 1798, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + + {0x023d, 378, 1}, + + {0x052e, 1342, 1}, + + {0x1fab, 224, 2}, + + {0x10cd, 3011, 1}, + + {0x021a, 541, 1}, + + {0xa7ab, 631, 1}, + + {0x1cab, 1540, 1}, + + {0xabab, 1774, 1}, + + {0x10cab, 3747, 1}, + + {0x2169, 2468, 1}, + {0xffffffff, -1, 0}, + + {0x1e56, 1990, 1}, + + {0x052c, 1339, 1}, + + {0x0156, 294, 1}, + + {0x1f56, 62, 3}, + + {0x0218, 538, 1}, + + {0x0056, 62, 1}, + + {0xa756, 3201, 1}, + + {0xff2a, 3339, 1}, + + {0x1e54, 1987, 1}, + {0xffffffff, -1, 0}, + + {0x0154, 291, 1}, + + {0x1f54, 57, 3}, + + {0x0528, 1333, 1}, + + {0x0054, 56, 1}, + + {0xa754, 3198, 1}, + + {0xff26, 3327, 1}, + + {0x104ca, 3588, 1}, + + {0x020e, 523, 1}, + + {0xa656, 3048, 1}, + + {0x1eca, 2150, 1}, + + {0x10c4, 3002, 1}, + + {0x01ca, 425, 1}, + + {0x1fca, 2387, 1}, + + {0x2cca, 2846, 1}, + + {0x00ca, 108, 1}, + + {0x020c, 520, 1}, + + {0xa654, 3045, 1}, + + {0xff2e, 3351, 1}, + + {0x1e9b, 2005, 1}, + + {0x0051, 46, 1}, + + {0x10c2, 2996, 1}, + + {0x1f9b, 184, 2}, + + {0x0524, 1327, 1}, + {0xffffffff, -1, 0}, + + {0x0214, 532, 1}, + + {0x1c9b, 1492, 1}, + + {0xab9b, 1726, 1}, + + {0x10c9b, 3699, 1}, + + {0xff2c, 3345, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + + {0x10b7, 2963, 1}, + + {0x0522, 1324, 1}, + + {0x1e91c, 4047, 1}, + + {0x0395, 755, 1}, + + {0x0208, 514, 1}, + + {0x118b7, 3840, 1}, + + {0x24cd, 2561, 1}, + {0xffffffff, -1, 0}, + + {0xff28, 3333, 1}, + + {0x104c3, 3567, 1}, + {0xffffffff, -1, 0}, + + {0x104b1, 3513, 1}, + + {0x0206, 511, 1}, + + {0x04c3, 1180, 1}, + + {0x10b3, 2951, 1}, + + {0x1fc3, 71, 2}, + + {0x01b1, 694, 1}, + + {0x00c3, 86, 1}, + + {0x0204, 508, 1}, + + {0x118b3, 3828, 1}, + + {0xa7b1, 685, 1}, + + {0x1cb1, 1558, 1}, + + {0xabb1, 1792, 1}, + + {0x10cb1, 3765, 1}, + + {0x10ab, 2927, 1}, + + {0x24c9, 2549, 1}, + + {0x0200, 502, 1}, + {0xffffffff, -1, 0}, + + {0xff24, 3321, 1}, + + {0x118ab, 3804, 1}, + + {0x0531, 1345, 1}, + + {0x053f, 1387, 1}, + + {0x10420, 3486, 1}, + + {0x022a, 562, 1}, + + {0x24c4, 2534, 1}, + + {0x1e20, 1909, 1}, + + {0x0420, 944, 1}, + + {0x0120, 219, 1}, + + {0xff22, 3315, 1}, + + {0x2c20, 2666, 1}, + {0xffffffff, -1, 0}, + + {0x0226, 556, 1}, + + {0x01a9, 682, 1}, + + {0x1fa9, 214, 2}, + + {0x24c2, 2528, 1}, + + {0x01a7, 393, 1}, + + {0x1fa7, 244, 2}, + + {0x1ca9, 1534, 1}, + + {0xaba9, 1768, 1}, + + {0x10ca9, 3741, 1}, + + {0x1ca7, 1528, 1}, + + {0xaba7, 1762, 1}, + + {0x10ca7, 3735, 1}, + + {0x022e, 568, 1}, + + {0x1e88, 2066, 1}, + + {0x24b7, 2495, 1}, + {0xffffffff, -1, 0}, + + {0x1f88, 129, 2}, + + {0x2c88, 2747, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + + {0x1c88, 3029, 1}, + + {0xab88, 1669, 1}, + + {0x10c88, 3642, 1}, + + {0x022c, 565, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + + {0xff31, 3360, 1}, + + {0x1e52, 1984, 1}, + + {0x0556, 1456, 1}, + + {0x0152, 288, 1}, + + {0x1f52, 52, 3}, + + {0xa688, 3096, 1}, + + {0x0052, 49, 1}, + + {0xa752, 3195, 1}, + + {0x0228, 559, 1}, + + {0x1e50, 1981, 1}, + + {0x0554, 1450, 1}, + + {0x0150, 285, 1}, + + {0x1f50, 84, 2}, + + {0x1041e, 3480, 1}, + + {0x0050, 43, 1}, + + {0xa750, 3192, 1}, + + {0x1e1e, 1906, 1}, + + {0x041e, 937, 1}, + + {0x011e, 216, 1}, + + {0xa652, 3042, 1}, + + {0x2c1e, 2660, 1}, + + {0x03c2, 803, 1}, + + {0x10c3, 2999, 1}, + {0xffffffff, -1, 0}, + + {0x10b1, 2945, 1}, + + {0x03d1, 765, 1}, + + {0x0551, 1441, 1}, + + {0xa650, 3039, 1}, + + {0x0224, 553, 1}, + + {0x118b1, 3822, 1}, + + {0x1e4e, 1978, 1}, + {0xffffffff, -1, 0}, + + {0x014e, 282, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + + {0x004e, 37, 1}, + + {0xa74e, 3189, 1}, + + {0x10412, 3444, 1}, + + {0x0222, 550, 1}, + + {0x16e56, 3933, 1}, + + {0x1e12, 1888, 1}, + + {0x0412, 899, 1}, + + {0x0112, 198, 1}, + + {0x24ca, 2552, 1}, + + {0x2c12, 2624, 1}, + + {0x018f, 625, 1}, + + {0x1f8f, 164, 2}, + + {0x16e54, 3927, 1}, + + {0xa64e, 3036, 1}, + + {0x004f, 40, 1}, + + {0x10a9, 2921, 1}, + + {0xab8f, 1690, 1}, + + {0x10c8f, 3663, 1}, + + {0x10a7, 2915, 1}, + + {0x1e48, 1969, 1}, + + {0x118a9, 3798, 1}, + + {0x03ab, 830, 1}, + + {0x1f48, 2321, 1}, + + {0x118a7, 3792, 1}, + + {0x0048, 21, 1}, + + {0xa748, 3180, 1}, + + {0x10410, 3438, 1}, + {0xffffffff, -1, 0}, + + {0x16e51, 3918, 1}, + + {0x1e10, 1885, 1}, + + {0x0410, 893, 1}, + + {0x0110, 195, 1}, + + {0x104c0, 3558, 1}, + + {0x2c10, 2618, 1}, + + {0x1e91a, 4041, 1}, + + {0x1ec0, 2135, 1}, + + {0x04c0, 1198, 1}, + + {0xa648, 3026, 1}, + {0xffffffff, -1, 0}, + + {0x2cc0, 2831, 1}, + + {0x00c0, 77, 1}, + {0xffffffff, -1, 0}, + + {0x24c3, 2531, 1}, + + {0x0520, 1321, 1}, + + {0x104c8, 3582, 1}, + + {0x1e918, 4035, 1}, + {0xffffffff, -1, 0}, + + {0x1ec8, 2147, 1}, + + {0xfb14, 109, 2}, + + {0x01c8, 421, 1}, + + {0x1fc8, 2381, 1}, + + {0x2cc8, 2843, 1}, + + {0x00c8, 102, 1}, + + {0x104b9, 3537, 1}, + + {0x1efc, 2225, 1}, + + {0x04fc, 1267, 1}, + + {0x01fc, 496, 1}, + + {0x1ffc, 96, 2}, + + {0x1e90e, 4005, 1}, + + {0x1fb9, 2420, 1}, + + {0x104b5, 3525, 1}, + + {0x039b, 779, 1}, + {0xffffffff, -1, 0}, + + {0x1cb9, 1582, 1}, + + {0xabb9, 1816, 1}, + + {0x01b5, 405, 1}, + + {0x1e90c, 3999, 1}, + + {0xfb06, 29, 2}, + + {0x00b5, 782, 1}, + {0xffffffff, -1, 0}, + + {0x1cb5, 1570, 1}, + + {0xabb5, 1804, 1}, + {0xffffffff, -1, 0}, + + {0xfb04, 5, 3}, + + {0x1fad, 234, 2}, + + {0x1e914, 4023, 1}, + + {0x0552, 1444, 1}, + + {0xa7ad, 661, 1}, + + {0x1cad, 1546, 1}, + + {0xabad, 1780, 1}, + + {0x10cad, 3753, 1}, + + {0xfb00, 4, 2}, + + {0x01af, 399, 1}, + + {0x1faf, 244, 2}, + + {0x0550, 1438, 1}, + {0xffffffff, -1, 0}, + + {0x1e908, 3987, 1}, + + {0x1caf, 1552, 1}, + + {0xabaf, 1786, 1}, + + {0x10caf, 3759, 1}, + {0xffffffff, -1, 0}, + + {0x051e, 1318, 1}, + + {0x018b, 366, 1}, + + {0x1f8b, 144, 2}, + + {0x1e906, 3981, 1}, + {0xffffffff, -1, 0}, + + {0xa78b, 3261, 1}, + + {0x1fa5, 234, 2}, + + {0xab8b, 1678, 1}, + + {0x10c8b, 3651, 1}, + + {0x1e904, 3975, 1}, + + {0x1ca5, 1522, 1}, + + {0xaba5, 1756, 1}, + + {0x10ca5, 3729, 1}, + {0xffffffff, -1, 0}, + + {0x054e, 1432, 1}, + + {0x1eda, 2174, 1}, + + {0x04da, 1216, 1}, + + {0x1e900, 3963, 1}, + + {0x1fda, 2393, 1}, + + {0x2cda, 2870, 1}, + + {0x00da, 153, 1}, + + {0x10c0, 2990, 1}, + + {0x16e52, 3921, 1}, + + {0x03a9, 823, 1}, + + {0x0512, 1300, 1}, + {0xffffffff, -1, 0}, + + {0x03a7, 817, 1}, + + {0x1fa3, 224, 2}, + + {0x054f, 1435, 1}, + {0xffffffff, -1, 0}, + + {0x16e50, 3915, 1}, + + {0x1ca3, 1516, 1}, + + {0xaba3, 1750, 1}, + + {0x10ca3, 3723, 1}, + + {0x13fc, 1849, 1}, + + {0x1fa1, 214, 2}, + {0xffffffff, -1, 0}, + + {0x0388, 733, 1}, + + {0x0548, 1414, 1}, + + {0x1ca1, 1510, 1}, + + {0xaba1, 1744, 1}, + + {0x10ca1, 3717, 1}, + + {0x10b9, 2969, 1}, + + {0x1ef4, 2213, 1}, + + {0x04f4, 1255, 1}, + + {0x01f4, 487, 1}, + + {0x1ff4, 101, 2}, + + {0x118b9, 3846, 1}, + + {0x0510, 1297, 1}, + + {0x10b5, 2957, 1}, + + {0x104cf, 3603, 1}, + + {0x16e4e, 3909, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + + {0x118b5, 3834, 1}, + + {0x01cf, 432, 1}, + + {0x0220, 381, 1}, + + {0x10ad, 2933, 1}, + + {0x00cf, 123, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + + {0x1e97, 34, 2}, + + {0x118ad, 3810, 1}, + + {0x0197, 649, 1}, + + {0x1f97, 204, 2}, + + {0x16e4f, 3912, 1}, + + {0x10af, 2939, 1}, + {0xffffffff, -1, 0}, + + {0x1c97, 1480, 1}, + + {0xab97, 1714, 1}, + + {0x10c97, 3687, 1}, + + {0x118af, 3816, 1}, + + {0x0181, 613, 1}, + + {0x1f81, 134, 2}, + {0xffffffff, -1, 0}, + + {0x16e48, 3891, 1}, + + {0x24c0, 2522, 1}, + + {0x1c81, 906, 1}, + + {0xab81, 1648, 1}, + + {0x10c81, 3621, 1}, + + {0x10a5, 2909, 1}, + + {0x1e6c, 2024, 1}, + + {0x046c, 1063, 1}, + + {0x016c, 327, 1}, + + {0x1f6c, 2363, 1}, + + {0x118a5, 3786, 1}, + {0xffffffff, -1, 0}, + + {0xa76c, 3234, 1}, + + {0x24c8, 2546, 1}, + + {0x1e6a, 2021, 1}, + + {0x046a, 1060, 1}, + + {0x016a, 324, 1}, + + {0x1f6a, 2357, 1}, + + {0x038f, 839, 1}, + + {0x1e32, 1936, 1}, + + {0xa76a, 3231, 1}, + + {0x0132, 243, 1}, + + {0x24b9, 2501, 1}, + {0xffffffff, -1, 0}, + + {0xa66c, 3081, 1}, + + {0xa732, 3147, 1}, + + {0x10a3, 2903, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + + {0x021e, 547, 1}, + {0xffffffff, -1, 0}, + + {0x118a3, 3780, 1}, + + {0xa66a, 3078, 1}, + + {0x1f59, 2339, 1}, + + {0x10a1, 2897, 1}, + + {0x0059, 71, 1}, + + {0x1e64, 2012, 1}, + + {0x0464, 1051, 1}, + + {0x0164, 315, 1}, + + {0x118a1, 3774, 1}, + + {0x2c64, 676, 1}, + {0xffffffff, -1, 0}, + + {0xa764, 3222, 1}, + + {0x024e, 601, 1}, + + {0x1e68, 2018, 1}, + + {0x0468, 1057, 1}, + + {0x0168, 321, 1}, + + {0x1f68, 2351, 1}, + + {0x10417, 3459, 1}, + + {0x042f, 993, 1}, + + {0xa768, 3228, 1}, + + {0x1f2f, 2294, 1}, + + {0x0417, 916, 1}, + + {0x0212, 529, 1}, + + {0xa664, 3069, 1}, + + {0x2c17, 2639, 1}, + + {0x216c, 2477, 1}, + + {0x1e62, 2009, 1}, + + {0x0462, 1047, 1}, + + {0x0162, 312, 1}, + + {0x1e46, 1966, 1}, + + {0x2c62, 658, 1}, + + {0xa668, 3075, 1}, + + {0xa762, 3219, 1}, + + {0x216a, 2471, 1}, + + {0x0046, 15, 1}, + + {0xa746, 3177, 1}, + + {0x0248, 592, 1}, + {0xffffffff, -1, 0}, + + {0x2132, 2438, 1}, + + {0x1e60, 2005, 1}, + + {0x0460, 1044, 1}, + + {0x0160, 309, 1}, + {0xffffffff, -1, 0}, + + {0x2c60, 2711, 1}, + + {0xa662, 3066, 1}, + + {0xa760, 3216, 1}, + + {0x0210, 526, 1}, + + {0xa646, 3023, 1}, + + {0x1e44, 1963, 1}, + + {0x1eec, 2201, 1}, + + {0x04ec, 1243, 1}, + + {0x01ec, 477, 1}, + + {0x1fec, 2435, 1}, + + {0x0044, 9, 1}, + + {0xa744, 3174, 1}, + + {0x2164, 2453, 1}, + {0xffffffff, -1, 0}, + + {0xa660, 3063, 1}, + + {0x1ee2, 2186, 1}, + + {0x04e2, 1228, 1}, + + {0x01e2, 462, 1}, + + {0x1fe2, 36, 3}, + + {0x2ce2, 2882, 1}, + + {0x2168, 2465, 1}, + + {0x1ed8, 2171, 1}, + + {0x04d8, 1213, 1}, + + {0xa644, 3020, 1}, + + {0x1fd8, 2423, 1}, + + {0x2cd8, 2867, 1}, + + {0x00d8, 147, 1}, + + {0x1ede, 2180, 1}, + + {0x04de, 1222, 1}, + + {0x01de, 456, 1}, + + {0x03a5, 810, 1}, + + {0x2cde, 2876, 1}, + + {0x00de, 165, 1}, + + {0x2162, 2447, 1}, + + {0x1ed6, 2168, 1}, + + {0x04d6, 1210, 1}, + + {0x24cf, 2567, 1}, + + {0x1fd6, 76, 2}, + + {0x2cd6, 2864, 1}, + + {0x00d6, 144, 1}, + {0xffffffff, -1, 0}, + + {0x104d2, 3612, 1}, + + {0x03da, 848, 1}, + {0xffffffff, -1, 0}, + + {0x1ed2, 2162, 1}, + + {0x04d2, 1204, 1}, + + {0x2160, 2441, 1}, + + {0x1fd2, 20, 3}, + + {0x2cd2, 2858, 1}, + + {0x00d2, 132, 1}, + + {0x104d0, 3606, 1}, + + {0x03a3, 803, 1}, + {0xffffffff, -1, 0}, + + {0x1ed0, 2159, 1}, + + {0x04d0, 1201, 1}, + + {0x0532, 1348, 1}, + {0xffffffff, -1, 0}, + + {0x2cd0, 2855, 1}, + + {0x00d0, 126, 1}, + + {0x03a1, 799, 1}, + + {0x104cc, 3594, 1}, + + {0x104bf, 3555, 1}, + + {0x042d, 987, 1}, + + {0x1ecc, 2153, 1}, + + {0x1f2d, 2288, 1}, + + {0x2c2d, 2705, 1}, + + {0x1fcc, 71, 2}, + + {0x2ccc, 2849, 1}, + + {0x00cc, 114, 1}, + + {0x104cb, 3591, 1}, + + {0x03f4, 765, 1}, + + {0x1cbf, 1594, 1}, + + {0xabbf, 1834, 1}, + + {0x04cb, 1192, 1}, + + {0x01cb, 425, 1}, + + {0x1fcb, 2390, 1}, + + {0x104c6, 3576, 1}, + + {0x00cb, 111, 1}, + {0xffffffff, -1, 0}, + + {0x1ec6, 2144, 1}, + + {0x03cf, 842, 1}, + + {0x104c5, 3573, 1}, + + {0x1fc6, 67, 2}, + + {0x2cc6, 2840, 1}, + + {0x00c6, 96, 1}, + + {0x04c5, 1183, 1}, + + {0x01c5, 417, 1}, + + {0x104bd, 3549, 1}, + + {0x0397, 762, 1}, + + {0x00c5, 92, 1}, + {0xffffffff, -1, 0}, + + {0x1e920, 4059, 1}, + + {0xff32, 3363, 1}, + + {0x104bb, 3543, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + + {0x0546, 1408, 1}, + + {0x1cbd, 1588, 1}, + + {0xabbd, 1828, 1}, + + {0x1fbb, 2378, 1}, + + {0x019f, 673, 1}, + + {0x1f9f, 204, 2}, + {0xffffffff, -1, 0}, + + {0x16e59, 3942, 1}, + + {0xabbb, 1822, 1}, + + {0x1c9f, 1504, 1}, + + {0xab9f, 1738, 1}, + + {0x10c9f, 3711, 1}, + + {0x1ef0, 2207, 1}, + + {0x04f0, 1249, 1}, + + {0x01f0, 20, 2}, + + {0x019d, 670, 1}, + + {0x1f9d, 194, 2}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + + {0x0544, 1402, 1}, + + {0x1c9d, 1498, 1}, + + {0xab9d, 1732, 1}, + + {0x10c9d, 3705, 1}, + + {0x1e99, 42, 2}, + {0xffffffff, -1, 0}, + + {0xff2f, 3354, 1}, + + {0x1f99, 174, 2}, + {0xffffffff, -1, 0}, + + {0x0193, 634, 1}, + + {0x1f93, 184, 2}, + + {0x1c99, 1486, 1}, + + {0xab99, 1720, 1}, + + {0x10c99, 3693, 1}, + + {0x1c93, 1468, 1}, + + {0xab93, 1702, 1}, + + {0x10c93, 3675, 1}, + + {0x0145, 270, 1}, + + {0x16e46, 3885, 1}, + {0xffffffff, -1, 0}, + + {0x0045, 12, 1}, + {0xffffffff, -1, 0}, + + {0x0191, 369, 1}, + + {0x1f91, 174, 2}, + + {0x1e91e, 4053, 1}, + {0xffffffff, -1, 0}, + + {0x10bf, 2987, 1}, + + {0x1c91, 1462, 1}, + + {0xab91, 1696, 1}, + + {0x10c91, 3669, 1}, + {0xffffffff, -1, 0}, + + {0x118bf, 3864, 1}, + {0xffffffff, -1, 0}, + + {0x0187, 363, 1}, + + {0x1f87, 164, 2}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + + {0x16e44, 3879, 1}, + + {0x1c87, 1047, 1}, + + {0xab87, 1666, 1}, + + {0x10c87, 3639, 1}, + + {0x1e72, 2033, 1}, + + {0x0472, 1072, 1}, + + {0x0172, 336, 1}, + + {0x0232, 574, 1}, + + {0x2c72, 2729, 1}, + + {0x10c5, 3005, 1}, + {0xffffffff, -1, 0}, + + {0x1e912, 4017, 1}, + + {0xab72, 1603, 1}, + + {0x0139, 252, 1}, + + {0x1f39, 2300, 1}, + + {0x10bd, 2981, 1}, + + {0x1e66, 2015, 1}, + + {0x0466, 1054, 1}, + + {0x0166, 318, 1}, + {0xffffffff, -1, 0}, + + {0x118bd, 3858, 1}, + + {0x10bb, 2975, 1}, + + {0xa766, 3225, 1}, + + {0x1e70, 2030, 1}, + + {0x0470, 1069, 1}, + + {0x0170, 333, 1}, + + {0x118bb, 3852, 1}, + + {0x2c70, 610, 1}, + + {0x1edc, 2177, 1}, + + {0x04dc, 1219, 1}, + + {0x03ec, 875, 1}, + + {0xab70, 1597, 1}, + + {0x2cdc, 2873, 1}, + + {0x00dc, 159, 1}, + + {0xa666, 3072, 1}, + + {0x1e910, 4011, 1}, + + {0x1e5a, 1996, 1}, + + {0x0143, 267, 1}, + + {0x015a, 300, 1}, + + {0x03e2, 860, 1}, + + {0x0043, 6, 1}, + + {0x005a, 74, 1}, + + {0xa75a, 3207, 1}, + + {0x24cc, 2558, 1}, + + {0x24bf, 2519, 1}, + + {0x03d8, 845, 1}, + {0xffffffff, -1, 0}, + + {0x1e3a, 1948, 1}, + + {0x0246, 589, 1}, + {0xffffffff, -1, 0}, + + {0x1f3a, 2303, 1}, + + {0x03de, 854, 1}, + + {0x24cb, 2555, 1}, + + {0xa73a, 3159, 1}, + + {0xa65a, 3054, 1}, + + {0x1e58, 1993, 1}, + + {0xff2d, 3348, 1}, + + {0x0158, 297, 1}, + + {0x03d6, 795, 1}, + + {0x24c6, 2540, 1}, + + {0x0058, 68, 1}, + + {0xa758, 3204, 1}, + + {0x0141, 264, 1}, + + {0x1e42, 1960, 1}, + + {0x24c5, 2537, 1}, + + {0x0041, 0, 1}, + + {0x2166, 2459, 1}, + + {0x0244, 691, 1}, + + {0x0042, 3, 1}, + + {0xa742, 3171, 1}, + + {0x24bd, 2513, 1}, + + {0x104ce, 3600, 1}, + {0xffffffff, -1, 0}, + + {0xa658, 3051, 1}, + + {0x1ece, 2156, 1}, + {0xffffffff, -1, 0}, + + {0x24bb, 2507, 1}, + + {0x03d0, 745, 1}, + + {0x2cce, 2852, 1}, + + {0x00ce, 120, 1}, + {0xffffffff, -1, 0}, + + {0xa642, 3017, 1}, + + {0x1ef2, 2210, 1}, + + {0x04f2, 1252, 1}, + + {0x01f2, 483, 1}, + + {0x1ff2, 257, 2}, + + {0x2cf2, 2891, 1}, + {0xffffffff, -1, 0}, + + {0x0545, 1405, 1}, + + {0x1eea, 2198, 1}, + + {0x04ea, 1240, 1}, + + {0x01ea, 474, 1}, + + {0x1fea, 2405, 1}, + + {0x1ee8, 2195, 1}, + + {0x04e8, 1237, 1}, + + {0x01e8, 471, 1}, + + {0x1fe8, 2429, 1}, + + {0x1ee6, 2192, 1}, + + {0x04e6, 1234, 1}, + + {0x01e6, 468, 1}, + + {0x1fe6, 88, 2}, + + {0x1f4b, 2330, 1}, + {0xffffffff, -1, 0}, + + {0x004b, 27, 1}, + + {0x0587, 105, 2}, + + {0x1ee4, 2189, 1}, + + {0x04e4, 1231, 1}, + + {0x01e4, 465, 1}, + + {0x1fe4, 80, 2}, + + {0x104c1, 3561, 1}, + + {0x1e5e, 2002, 1}, + {0xffffffff, -1, 0}, + + {0x015e, 306, 1}, + + {0x04c1, 1177, 1}, + + {0x1f83, 144, 2}, + {0xffffffff, -1, 0}, + + {0xa75e, 3213, 1}, + + {0x00c1, 80, 1}, + + {0x1c83, 947, 1}, + + {0xab83, 1654, 1}, + + {0x10c83, 3627, 1}, + + {0x0539, 1369, 1}, + + {0x039f, 792, 1}, + + {0x1e7e, 2051, 1}, + + {0x047e, 1090, 1}, + + {0x16e45, 3882, 1}, + {0xffffffff, -1, 0}, + + {0x2c7e, 580, 1}, + + {0xa65e, 3060, 1}, + + {0xa77e, 3246, 1}, + {0xffffffff, -1, 0}, + + {0xab7e, 1639, 1}, + + {0x03f0, 775, 1}, + + {0x039d, 786, 1}, + + {0x1e76, 2039, 1}, + + {0x0476, 1078, 1}, + + {0x0176, 342, 1}, + {0xffffffff, -1, 0}, + + {0x1e5c, 1999, 1}, + {0xffffffff, -1, 0}, + + {0x015c, 303, 1}, + {0xffffffff, -1, 0}, + + {0xab76, 1615, 1}, + + {0x0399, 770, 1}, + + {0xa75c, 3210, 1}, + + {0x0543, 1399, 1}, + + {0x0393, 749, 1}, + + {0x0149, 46, 2}, + + {0x1f49, 2324, 1}, + + {0x1e40, 1957, 1}, + + {0x0049, 4065, 1}, + + {0x1eee, 2204, 1}, + + {0x04ee, 1246, 1}, + + {0x01ee, 480, 1}, + + {0x0345, 770, 1}, + + {0xa740, 3168, 1}, + + {0xa65c, 3057, 1}, + + {0x053a, 1372, 1}, + + {0xff39, 3384, 1}, + + {0x0391, 742, 1}, + + {0x1e3e, 1954, 1}, + + {0x2183, 2489, 1}, + + {0x1e38, 1945, 1}, + + {0x1f3e, 2315, 1}, + {0xffffffff, -1, 0}, + + {0x1f38, 2297, 1}, + + {0xa73e, 3165, 1}, + + {0xa640, 3014, 1}, + + {0xa738, 3156, 1}, + + {0x1e36, 1942, 1}, + + {0x0541, 1393, 1}, + + {0x0136, 249, 1}, + + {0x1e34, 1939, 1}, + + {0x0542, 1396, 1}, + + {0x0134, 246, 1}, + + {0xa736, 3153, 1}, + + {0x013b, 255, 1}, + + {0x1f3b, 2306, 1}, + + {0xa734, 3150, 1}, + {0xffffffff, -1, 0}, + + {0x0372, 715, 1}, + + {0x10415, 3453, 1}, + + {0x16e43, 3876, 1}, + + {0x16e5a, 3945, 1}, + + {0x042b, 981, 1}, + + {0x0415, 910, 1}, + + {0x1f2b, 2282, 1}, + + {0x2c2b, 2699, 1}, + + {0x2c15, 2633, 1}, + + {0x10c1, 2993, 1}, + {0xffffffff, -1, 0}, + + {0x1041d, 3477, 1}, + + {0x0245, 700, 1}, + {0xffffffff, -1, 0}, + + {0xff3a, 3387, 1}, + + {0x041d, 934, 1}, + + {0xfb17, 117, 2}, + + {0x1f1d, 2270, 1}, + + {0x2c1d, 2657, 1}, + + {0x0370, 712, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + + {0x16e58, 3939, 1}, + {0xffffffff, -1, 0}, + + {0x03dc, 851, 1}, + + {0x1041b, 3471, 1}, + + {0x24ce, 2564, 1}, + + {0x16e41, 3870, 1}, + + {0x054b, 1423, 1}, + + {0x041b, 928, 1}, + + {0x16e42, 3873, 1}, + + {0x1f1b, 2264, 1}, + + {0x2c1b, 2651, 1}, + + {0x10419, 3465, 1}, + + {0x10413, 3447, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + + {0x0419, 922, 1}, + + {0x0413, 903, 1}, + + {0x1f19, 2258, 1}, + + {0x2c19, 2645, 1}, + + {0x2c13, 2627, 1}, + + {0x1040f, 3435, 1}, + + {0x1e917, 4032, 1}, + {0xffffffff, -1, 0}, + + {0x017f, 52, 1}, + + {0x040f, 1041, 1}, + + {0x2c7f, 583, 1}, + + {0x1f0f, 2252, 1}, + + {0x2c0f, 2615, 1}, + + {0x1040d, 3429, 1}, + + {0xab7f, 1642, 1}, + {0xffffffff, -1, 0}, + + {0x212b, 92, 1}, + + {0x040d, 1035, 1}, + + {0x1040b, 3423, 1}, + + {0x1f0d, 2246, 1}, + + {0x2c0d, 2609, 1}, + {0xffffffff, -1, 0}, + + {0x040b, 1029, 1}, + {0xffffffff, -1, 0}, + + {0x1f0b, 2240, 1}, + + {0x2c0b, 2603, 1}, + {0xffffffff, -1, 0}, + + {0x24c1, 2525, 1}, + + {0x16e4b, 3900, 1}, + + {0x10409, 3417, 1}, + + {0x10405, 3405, 1}, + {0xffffffff, -1, 0}, + + {0x0243, 354, 1}, + + {0x0409, 1023, 1}, + + {0x0405, 1011, 1}, + + {0x1f09, 2234, 1}, + + {0x2c09, 2597, 1}, + + {0x2c05, 2585, 1}, + + {0x0549, 1417, 1}, + + {0x10403, 3399, 1}, + + {0x16e5e, 3957, 1}, + {0xffffffff, -1, 0}, + + {0x0540, 1390, 1}, + + {0x0403, 1005, 1}, + + {0x023a, 2714, 1}, + {0xffffffff, -1, 0}, + + {0x2c03, 2579, 1}, + + {0x10401, 3393, 1}, + + {0x03ea, 872, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + + {0x0401, 999, 1}, + + {0x03e8, 869, 1}, + + {0x053e, 1384, 1}, + + {0x2c01, 2573, 1}, + + {0x0538, 1366, 1}, + + {0x03e6, 866, 1}, + + {0x0241, 586, 1}, + + {0x1ef8, 2219, 1}, + + {0x04f8, 1261, 1}, + + {0x01f8, 490, 1}, + + {0x1ff8, 2399, 1}, + + {0x0536, 1360, 1}, + {0xffffffff, -1, 0}, + + {0x03e4, 863, 1}, + + {0x0534, 1354, 1}, + {0xffffffff, -1, 0}, + + {0x053b, 1375, 1}, + + {0x16e5c, 3951, 1}, + + {0x1ef6, 2216, 1}, + + {0x04f6, 1258, 1}, + + {0x01f6, 372, 1}, + + {0x1ff6, 92, 2}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + + {0x16e49, 3894, 1}, + {0xffffffff, -1, 0}, + + {0x1f8d, 154, 2}, + + {0x1e3c, 1951, 1}, + + {0x16e40, 3867, 1}, + + {0xa78d, 643, 1}, + + {0x1f3c, 2309, 1}, + + {0xab8d, 1684, 1}, + + {0x10c8d, 3657, 1}, + + {0xa73c, 3162, 1}, + {0xffffffff, -1, 0}, + + {0x1e78, 2042, 1}, + + {0x0478, 1081, 1}, + + {0x0178, 168, 1}, + + {0x1e74, 2036, 1}, + + {0x0474, 1075, 1}, + + {0x0174, 339, 1}, + + {0xff38, 3381, 1}, + + {0x0376, 718, 1}, + + {0xab78, 1621, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + + {0xab74, 1609, 1}, + + {0x0429, 974, 1}, + + {0xff36, 3375, 1}, + + {0x1f29, 2276, 1}, + + {0x2c29, 2693, 1}, + + {0xff34, 3369, 1}, + {0xffffffff, -1, 0}, + + {0x10427, 3507, 1}, + + {0x10425, 3501, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + + {0x0427, 968, 1}, + + {0x0425, 962, 1}, + + {0x03ee, 878, 1}, + + {0x2c27, 2687, 1}, + + {0x2c25, 2681, 1}, + + {0xff2b, 3342, 1}, + + {0x10423, 3495, 1}, + + {0x1041f, 3483, 1}, + + {0x10411, 3441, 1}, + {0xffffffff, -1, 0}, + + {0x0423, 956, 1}, + + {0x041f, 941, 1}, + + {0x0411, 896, 1}, + + {0x2c23, 2675, 1}, + + {0x2c1f, 2663, 1}, + + {0x2c11, 2621, 1}, + + {0x10407, 3411, 1}, + {0xffffffff, -1, 0}, + + {0x017d, 351, 1}, + {0xffffffff, -1, 0}, + + {0x0407, 1017, 1}, + + {0x13f8, 1837, 1}, + + {0xa77d, 1855, 1}, + + {0x2c07, 2591, 1}, + + {0xab7d, 1636, 1}, + + {0x017b, 348, 1}, + + {0x0179, 345, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + + {0xa77b, 3243, 1}, + + {0xa779, 3240, 1}, + + {0xab7b, 1630, 1}, + + {0xab79, 1624, 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}, + + {0x023e, 2717, 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}, + + {0x023b, 577, 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}, + + {0x037f, 884, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + + {0x053c, 1378, 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}, {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}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + + {0xff29, 3336, 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}, + + {0xff27, 3330, 1}, + + {0xff25, 3324, 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}, + + {0xff23, 3318, 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}, {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}, {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}, + + {0xfb15, 113, 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}, {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}, + + {0x1e915, 4026, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + + {0xfb13, 121, 2}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + + {0x1e91d, 4050, 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, 4044, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + + {0x1e919, 4038, 1}, + + {0x1e913, 4020, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + + {0xfb05, 29, 2}, + {0xffffffff, -1, 0}, + + {0x1e90f, 4008, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, + + {0xfb03, 0, 3}, + + {0x1e90d, 4002, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + + {0x1e90b, 3996, 1}, + {0xffffffff, -1, 0}, + + {0xfb01, 8, 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}, + + {0x1e909, 3990, 1}, + + {0x1e905, 3978, 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}, + + {0x1e903, 3972, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + + {0x1e901, 3966, 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}, {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}, {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}, + + {0x1e91f, 4056, 1}, + + {0x1e911, 4014, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + + {0x1e907, 3984, 1} + }; + + if (0 == 0) + { + int key = hash(&code); + + if (key <= MAX_HASH_VALUE) + { + OnigCodePoint gcode = wordlist[key].code; + + if (code == gcode && wordlist[key].index >= 0) + return &wordlist[key]; + } + } + return 0; +} + + diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/enc/utf16_le.c b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/utf16_le.c similarity index 71% rename from MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/enc/utf16_le.c rename to MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/utf16_le.c index b8685c4393..b139f83ff0 100644 --- a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/enc/utf16_le.c +++ b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/utf16_le.c @@ -2,7 +2,7 @@ utf16_le.c - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2002-2008 K.Kosako + * Copyright (c) 2002-2018 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -26,8 +26,52 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ +#include "regint.h" /* for USE_CALLOUT */ -#include "regenc.h" +static int +init(void) +{ +#ifdef USE_CALLOUT + + int id; + OnigEncoding enc; + char* name; + unsigned int args[4]; + OnigValue opts[4]; + + enc = ONIG_ENCODING_UTF16_LE; + + name = "F\000A\000I\000L\000\000\000"; BC0_P(name, fail); + name = "M\000I\000S\000M\000A\000T\000C\000H\000\000\000"; BC0_P(name, mismatch); + + name = "M\000A\000X\000\000\000"; + args[0] = ONIG_TYPE_TAG | ONIG_TYPE_LONG; + args[1] = ONIG_TYPE_CHAR; + opts[0].c = 'X'; + BC_B_O(name, max, 2, args, 1, opts); + + name = "E\000R\000R\000O\000R\000\000\000"; + args[0] = ONIG_TYPE_LONG; opts[0].l = ONIG_ABORT; + BC_P_O(name, error, 1, args, 1, opts); + + name = "C\000O\000U\000N\000T\000\000\000"; + args[0] = ONIG_TYPE_CHAR; opts[0].c = '>'; + BC_B_O(name, count, 1, args, 1, opts); + + name = "T\000O\000T\000A\000L\000_\000C\000O\000U\000N\000T\000\000\000"; + args[0] = ONIG_TYPE_CHAR; opts[0].c = '>'; + BC_B_O(name, total_count, 1, args, 1, opts); + + name = "C\000M\000P\000\000\000"; + args[0] = ONIG_TYPE_TAG | ONIG_TYPE_LONG; + args[1] = ONIG_TYPE_STRING; + args[2] = ONIG_TYPE_TAG | ONIG_TYPE_LONG; + BC_P(name, cmp, 3, args); + +#endif /* USE_CALLOUT */ + + return ONIG_NORMAL; +} static const int EncLen_UTF16[] = { 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -60,6 +104,21 @@ utf16le_mbc_enc_len(const UChar* p) return EncLen_UTF16[*(p+1)]; } +static int +is_valid_mbc_string(const UChar* p, const UChar* end) +{ + const UChar* end1 = end - 1; + + while (p < end1) { + p += utf16le_mbc_enc_len(p); + } + + if (p != end) + return FALSE; + else + return TRUE; +} + static int utf16le_is_mbc_newline(const UChar* p, const UChar* end) { @@ -69,10 +128,11 @@ utf16le_is_mbc_newline(const UChar* p, const UChar* end) #ifdef USE_UNICODE_ALL_LINE_TERMINATORS if (( #ifndef USE_CRNL_AS_LINE_TERMINATOR - *p == 0x0d || + *p == 0x0d || #endif - *p == 0x85) && *(p+1) == 0x00) + *p == 0x85) && *(p+1) == 0x00) return 1; + if (*(p+1) == 0x20 && (*p == 0x29 || *p == 0x28)) return 1; #endif @@ -109,8 +169,8 @@ utf16le_code_to_mbc(OnigCodePoint code, UChar *buf) plane = (code >> 16) - 1; high = (code & 0xff00) >> 8; - *p++ = (UChar)(((plane & 0x03) << 6) + (high >> 2)); - *p++ = (UChar)((plane >> 2) + 0xd8); + *p++ = ((plane & 0x03) << 6) + (high >> 2); + *p++ = (plane >> 2) + 0xd8; *p++ = (UChar )(code & 0xff); *p = (high & 0x03) + 0xdc; return 4; @@ -132,10 +192,10 @@ utf16le_mbc_case_fold(OnigCaseFoldType flag, #ifdef USE_UNICODE_CASE_FOLD_TURKISH_AZERI if ((flag & ONIGENC_CASE_FOLD_TURKISH_AZERI) != 0) { if (*p == 0x49) { - *fold++ = 0x31; - *fold = 0x01; - (*pp) += 2; - return 2; + *fold++ = 0x31; + *fold = 0x01; + (*pp) += 2; + return 2; } } #endif @@ -172,9 +232,9 @@ utf16le_is_mbc_ambiguous(OnigCaseFoldType flag, const UChar** pp, if ((v | BIT_CTYPE_LOWER) != 0) { /* 0xaa, 0xb5, 0xba are lower case letter, but can't convert. */ if (c >= 0xaa && c <= 0xba) - return FALSE; + return FALSE; else - return TRUE; + return TRUE; } return (v != 0 ? TRUE : FALSE); } @@ -209,8 +269,8 @@ utf16le_get_case_fold_codes_by_str(OnigCaseFoldType flag, OnigEncodingType OnigEncodingUTF16_LE = { utf16le_mbc_enc_len, "UTF-16LE", /* name */ - 4, /* max byte length */ - 2, /* min byte length */ + 4, /* max enc length */ + 2, /* min enc length */ utf16le_is_mbc_newline, utf16le_mbc_to_code, utf16le_code_to_mbclen, @@ -222,5 +282,10 @@ OnigEncodingType OnigEncodingUTF16_LE = { onigenc_unicode_is_code_ctype, onigenc_utf16_32_get_ctype_code_range, utf16le_left_adjust_char_head, - onigenc_always_false_is_allowed_reverse_match + onigenc_always_false_is_allowed_reverse_match, + init, + 0, /* is_initialized */ + is_valid_mbc_string, + ENC_FLAG_UNICODE, + 0, 0 }; diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/RegularExpressionDxe.inf b/MdeModulePkg/Universal/RegularExpressionDxe/RegularExpressionDxe.inf index 4bf8502e7e..7490a03c5c 100644 --- a/MdeModulePkg/Universal/RegularExpressionDxe/RegularExpressionDxe.inf +++ b/MdeModulePkg/Universal/RegularExpressionDxe/RegularExpressionDxe.inf @@ -29,6 +29,7 @@ Oniguruma/OnigurumaIntrinsics.c | MSFT # Upstream Oniguruma code + Oniguruma/onig_init.c Oniguruma/oniguruma.h Oniguruma/regcomp.c Oniguruma/regenc.c @@ -50,9 +51,13 @@ Oniguruma/st.h # Supported Character Encodings - Oniguruma/enc/ascii.c - Oniguruma/enc/unicode.c - Oniguruma/enc/utf16_le.c + Oniguruma/ascii.c + Oniguruma/unicode.c + Oniguruma/unicode_fold1_key.c + Oniguruma/unicode_fold2_key.c + Oniguruma/unicode_fold3_key.c + Oniguruma/unicode_unfold_key.c + Oniguruma/utf16_le.c [Packages] MdePkg/MdePkg.dec @@ -75,11 +80,8 @@ [BuildOptions] # Override MSFT build option to remove /Oi and /GL - MSFT:DEBUG_*_IA32_CC_FLAGS == /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2 /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Zi /Gm - MSFT:RELEASE_*_IA32_CC_FLAGS == /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2 /FIAutoGen.h /EHs-c- /GR- /GF - MSFT:DEBUG_*_X64_CC_FLAGS == /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2s /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Zi /Gm /X - MSFT:RELEASE_*_X64_CC_FLAGS == /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2s /FIAutoGen.h /EHs-c- /GR- /GF /Gy /X - INTEL:*_*_*_CC_FLAGS = /Oi- + MSFT:*_*_*_CC_FLAGS = /GL- + INTEL:*_*_*_CC_FLAGS = /Oi- # Oniguruma: potentially uninitialized local variable used MSFT:*_*_*_CC_FLAGS = /wd4701 @@ -93,3 +95,17 @@ # Oniguruma: 'type cast' : truncation from 'OnigUChar *' to 'unsigned int' MSFT:*_*_*_CC_FLAGS = /wd4305 /wd4306 + # Oniguruma: nameless union declared in regparse.h + MSFT:*_*_*_CC_FLAGS = /wd4201 + + # Oniguruma: 'type cast' : "int" to "OnigUChar", function pointer to "void *" + MSFT:*_*_*_CC_FLAGS = /wd4244 /wd4054 + + # Oniguruma: previous local declaration + MSFT:*_*_*_CC_FLAGS = /wd4456 + + # Oniguruma: signed and unsigned mismatch/cast + MSFT:*_*_*_CC_FLAGS = /wd4018 /wd4245 /wd4389 + + # Oniguruma: error: variable 'fp' set but not used + GCC:*_*_*_CC_FLAGS = -Wno-error=unused-but-set-variable -- 2.39.2