From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: intel.com, ip: 134.134.136.20, mailfrom: liming.gao@intel.com) Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by groups.io with SMTP; Thu, 08 Aug 2019 06:34:01 -0700 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga001.jf.intel.com ([10.7.209.18]) by orsmga101.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 08 Aug 2019 06:31:41 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.64,361,1559545200"; d="scan'208";a="258708822" Received: from shwde7172.ccr.corp.intel.com ([10.239.158.22]) by orsmga001.jf.intel.com with ESMTP; 08 Aug 2019 06:31:35 -0700 From: "Liming Gao" To: devel@edk2.groups.io Cc: Jian J Wang , Hao A Wu , Cinnamon Shia Subject: [Patch] MdeModulePkg RegularExpressionDxe: Update Oniguruma from v6.9.0 to v6.9.3 Date: Thu, 8 Aug 2019 21:31:17 +0800 Message-Id: <1565271078-7716-1-git-send-email-liming.gao@intel.com> X-Mailer: git-send-email 2.8.0.windows.1 BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=2066 Update Oniguruma to the latest version v6.9.3. Oniguruma https://github.com/kkos/oniguruma This release is the security fix release. It includes the changes: Fixed CVE-2019-13224 Fixed CVE-2019-13225 Fixed many problems (found by libfuzzer programs) Verify VS2015, GCC5 build. Verify RegularExpressionProtocol GetInfo() and Match() function. Cc: Jian J Wang Cc: Hao A Wu Cc: Cinnamon Shia Signed-off-by: Liming Gao --- MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/ascii.c | 2 +- MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regcomp.c | 2433 +++++++++++-------- MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regenc.c | 82 +- MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regerror.c | 63 +- MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regexec.c | 2672 +++++++++++---------- MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/reggnu.c | 22 +- MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regparse.c | 702 +++--- MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regposerr.c | 12 +- MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regposix.c | 16 +- MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regsyntax.c | 12 +- MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode.c | 289 ++- MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_egcb_data.c | 31 +- MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_fold1_key.c | 2689 ++++++++++----------- MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_fold2_key.c | 4 +- MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_fold3_key.c | 4 +- MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_fold_data.c | 2256 +++++++++--------- MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_property_data.c | 8545 +++++++++++++++++++++++++++++++++++-------------------------------- MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_property_data_posix.c | 410 ++-- MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_unfold_key.c | 3253 +++++++++++++------------- MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_wb_data.c | 1023 ++++++++ MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/utf16_le.c | 36 +- MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/oniguruma.h | 21 +- MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regenc.h | 23 +- MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regint.h | 438 ++-- MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regparse.h | 313 ++- 25 files changed, 14055 insertions(+), 11296 deletions(-) diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/ascii.c b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/ascii.c index ef961c94d5..2527c02b32 100644 --- a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/ascii.c +++ b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/ascii.c @@ -113,6 +113,6 @@ OnigEncodingType OnigEncodingASCII = { init, 0, /* is_initialized */ onigenc_always_true_is_valid_mbc_string, - ENC_FLAG_ASCII_COMPATIBLE, + ENC_FLAG_ASCII_COMPATIBLE|ENC_FLAG_SKIP_OFFSET_1, 0, 0 }; diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regcomp.c b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regcomp.c index f5db3ea6e8..d847ca4233 100644 --- a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regcomp.c +++ b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regcomp.c @@ -2,7 +2,7 @@ regcomp.c - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2002-2018 K.Kosako + * Copyright (c) 2002-2019 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -29,6 +29,8 @@ #include "regparse.h" +#define OPS_INIT_SIZE 8 + OnigCaseFoldType OnigDefaultCaseFoldFlag = ONIGENC_CASE_FOLD_MIN; #if 0 @@ -78,7 +80,7 @@ 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); + int* nv = (int* )xrealloc(s->v, sizeof(int) * new_size, sizeof(int) * s->alloc); if (IS_NULL(nv)) return ONIGERR_MEMORY; s->alloc = new_size; @@ -108,6 +110,280 @@ int_stack_pop(int_stack* s) } #endif +static int +ops_init(regex_t* reg, int init_alloc_size) +{ + Operation* p; + size_t size; + + if (init_alloc_size > 0) { + size = sizeof(Operation) * init_alloc_size; + p = (Operation* )xmalloc(size); + CHECK_NULL_RETURN_MEMERR(p); +#ifdef USE_DIRECT_THREADED_CODE + { + enum OpCode* cp; + size = sizeof(enum OpCode) * init_alloc_size; + cp = (enum OpCode* )xmalloc(size); + CHECK_NULL_RETURN_MEMERR(cp); + reg->ocs = cp; + } +#endif + } + else { + p = (Operation* )0; +#ifdef USE_DIRECT_THREADED_CODE + reg->ocs = (enum OpCode* )0; +#endif + } + + reg->ops = p; + reg->ops_curr = 0; /* !!! not yet done ops_new() */ + reg->ops_alloc = init_alloc_size; + reg->ops_used = 0; + + return ONIG_NORMAL; +} + +static int +ops_expand(regex_t* reg, int n) +{ +#define MIN_OPS_EXPAND_SIZE 4 + +#ifdef USE_DIRECT_THREADED_CODE + enum OpCode* cp; +#endif + Operation* p; + size_t size; + + if (n <= 0) n = MIN_OPS_EXPAND_SIZE; + + n += reg->ops_alloc; + + size = sizeof(Operation) * n; + p = (Operation* )xrealloc(reg->ops, size, sizeof(Operation) * reg->ops_alloc); + CHECK_NULL_RETURN_MEMERR(p); + +#ifdef USE_DIRECT_THREADED_CODE + size = sizeof(enum OpCode) * n; + cp = (enum OpCode* )xrealloc(reg->ocs, size, sizeof(enum OpCode) * reg->ops_alloc); + CHECK_NULL_RETURN_MEMERR(cp); + reg->ocs = cp; +#endif + + reg->ops = p; + reg->ops_alloc = n; + if (reg->ops_used == 0) + reg->ops_curr = 0; + else + reg->ops_curr = reg->ops + (reg->ops_used - 1); + + return ONIG_NORMAL; +} + +static int +ops_new(regex_t* reg) +{ + int r; + + if (reg->ops_used >= reg->ops_alloc) { + r = ops_expand(reg, reg->ops_alloc); + if (r != ONIG_NORMAL) return r; + } + + reg->ops_curr = reg->ops + reg->ops_used; + reg->ops_used++; + + xmemset(reg->ops_curr, 0, sizeof(Operation)); + return ONIG_NORMAL; +} + +static int +is_in_string_pool(regex_t* reg, UChar* s) +{ + return (s >= reg->string_pool && s < reg->string_pool_end); +} + +static void +ops_free(regex_t* reg) +{ + int i; + + if (IS_NULL(reg->ops)) return ; + + for (i = 0; i < (int )reg->ops_used; i++) { + enum OpCode opcode; + Operation* op; + + op = reg->ops + i; + +#ifdef USE_DIRECT_THREADED_CODE + opcode = *(reg->ocs + i); +#else + opcode = op->opcode; +#endif + + switch (opcode) { + case OP_EXACTMBN: + if (! is_in_string_pool(reg, op->exact_len_n.s)) + xfree(op->exact_len_n.s); + break; + case OP_EXACTN: case OP_EXACTMB2N: case OP_EXACTMB3N: case OP_EXACTN_IC: + if (! is_in_string_pool(reg, op->exact_n.s)) + xfree(op->exact_n.s); + break; + case OP_EXACT1: case OP_EXACT2: case OP_EXACT3: case OP_EXACT4: + case OP_EXACT5: case OP_EXACTMB2N1: case OP_EXACTMB2N2: + case OP_EXACTMB2N3: case OP_EXACT1_IC: + break; + + case OP_CCLASS_NOT: case OP_CCLASS: + xfree(op->cclass.bsp); + break; + + case OP_CCLASS_MB_NOT: case OP_CCLASS_MB: + xfree(op->cclass_mb.mb); + break; + case OP_CCLASS_MIX_NOT: case OP_CCLASS_MIX: + xfree(op->cclass_mix.mb); + xfree(op->cclass_mix.bsp); + break; + + case OP_BACKREF1: case OP_BACKREF2: case OP_BACKREF_N: case OP_BACKREF_N_IC: + break; + case OP_BACKREF_MULTI: case OP_BACKREF_MULTI_IC: + case OP_BACKREF_WITH_LEVEL: + case OP_BACKREF_WITH_LEVEL_IC: + case OP_BACKREF_CHECK: + case OP_BACKREF_CHECK_WITH_LEVEL: + if (op->backref_general.num != 1) + xfree(op->backref_general.ns); + break; + + default: + break; + } + } + + xfree(reg->ops); +#ifdef USE_DIRECT_THREADED_CODE + xfree(reg->ocs); + reg->ocs = 0; +#endif + + reg->ops = 0; + reg->ops_curr = 0; + reg->ops_alloc = 0; + reg->ops_used = 0; +} + +static int +ops_calc_size_of_string_pool(regex_t* reg) +{ + int i; + int total; + + if (IS_NULL(reg->ops)) return 0; + + total = 0; + for (i = 0; i < (int )reg->ops_used; i++) { + enum OpCode opcode; + Operation* op; + + op = reg->ops + i; +#ifdef USE_DIRECT_THREADED_CODE + opcode = *(reg->ocs + i); +#else + opcode = op->opcode; +#endif + + switch (opcode) { + case OP_EXACTMBN: + total += op->exact_len_n.len * op->exact_len_n.n; + break; + case OP_EXACTN: + case OP_EXACTN_IC: + total += op->exact_n.n; + break; + case OP_EXACTMB2N: + total += op->exact_n.n * 2; + break; + case OP_EXACTMB3N: + total += op->exact_n.n * 3; + break; + + default: + break; + } + } + + return total; +} + +static int +ops_make_string_pool(regex_t* reg) +{ + int i; + int len; + int size; + UChar* pool; + UChar* curr; + + size = ops_calc_size_of_string_pool(reg); + if (size <= 0) { + return 0; + } + + curr = pool = (UChar* )xmalloc((size_t )size); + CHECK_NULL_RETURN_MEMERR(pool); + + for (i = 0; i < (int )reg->ops_used; i++) { + enum OpCode opcode; + Operation* op; + + op = reg->ops + i; +#ifdef USE_DIRECT_THREADED_CODE + opcode = *(reg->ocs + i); +#else + opcode = op->opcode; +#endif + + switch (opcode) { + case OP_EXACTMBN: + len = op->exact_len_n.len * op->exact_len_n.n; + xmemcpy(curr, op->exact_len_n.s, len); + xfree(op->exact_len_n.s); + op->exact_len_n.s = curr; + curr += len; + break; + case OP_EXACTN: + case OP_EXACTN_IC: + len = op->exact_n.n; + copy: + xmemcpy(curr, op->exact_n.s, len); + xfree(op->exact_n.s); + op->exact_n.s = curr; + curr += len; + break; + case OP_EXACTMB2N: + len = op->exact_n.n * 2; + goto copy; + break; + case OP_EXACTMB3N: + len = op->exact_n.n * 3; + goto copy; + break; + + default: + break; + } + } + + reg->string_pool = pool; + reg->string_pool_end = pool + size; + return 0; +} + extern OnigCaseFoldType onig_get_default_case_fold_flag(void) { @@ -138,10 +414,17 @@ int_multiply_cmp(int x, int y, int v) return 1; } +extern int +onig_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; +} -#ifndef PLATFORM_UNALIGNED_WORD_ACCESS -static unsigned char PadBuf[WORD_ALIGNMENT_SIZE]; -#endif static void swap_node(Node* a, Node* b) @@ -152,7 +435,7 @@ swap_node(Node* a, Node* b) if (NODE_TYPE(a) == NODE_STRING) { StrNode* sn = STR_(a); - if (sn->capa == 0) { + if (sn->capacity == 0) { int len = (int )(sn->end - sn->s); sn->s = sn->buf; sn->end = sn->s + len; @@ -161,7 +444,7 @@ swap_node(Node* a, Node* b) if (NODE_TYPE(b) == NODE_STRING) { StrNode* sn = STR_(b); - if (sn->capa == 0) { + if (sn->capacity == 0) { int len = (int )(sn->end - sn->s); sn->s = sn->buf; sn->end = sn->s + len; @@ -202,24 +485,6 @@ bitset_is_empty(BitSetRef bs) return 1; } -extern int -onig_bbuf_init(BBuf* buf, int size) -{ - if (size <= 0) { - size = 0; - buf->p = NULL; - } - else { - buf->p = (UChar* )xmalloc(size); - if (IS_NULL(buf->p)) return(ONIGERR_MEMORY); - } - - buf->alloc = size; - buf->used = 0; - return 0; -} - - #ifdef USE_CALL static int @@ -264,113 +529,19 @@ unset_addr_list_add(UnsetAddrList* list, int offset, struct _Node* node) static int -add_opcode(regex_t* reg, int opcode) -{ - BB_ADD1(reg, opcode); - return 0; -} - -static int -add_rel_addr(regex_t* reg, int addr) -{ - RelAddrType ra = (RelAddrType )addr; - - BB_ADD(reg, &ra, SIZE_RELADDR); - return 0; -} - -static int -add_abs_addr(regex_t* reg, int addr) -{ - AbsAddrType ra = (AbsAddrType )addr; - - BB_ADD(reg, &ra, SIZE_ABSADDR); - return 0; -} - -static int -add_length(regex_t* reg, int len) -{ - LengthType l = (LengthType )len; - - BB_ADD(reg, &l, SIZE_LENGTH); - return 0; -} - -static int -add_mem_num(regex_t* reg, int num) -{ - MemNumType n = (MemNumType )num; - - BB_ADD(reg, &n, SIZE_MEMNUM); - return 0; -} - -#if 0 -static int -add_pointer(regex_t* reg, void* addr) -{ - PointerType ptr = (PointerType )addr; - - BB_ADD(reg, &ptr, SIZE_POINTER); - return 0; -} -#endif - -static int -add_option(regex_t* reg, OnigOptionType option) -{ - BB_ADD(reg, &option, SIZE_OPTION); - return 0; -} - -static int -add_save_type(regex_t* reg, enum SaveType type) -{ - SaveType t = (SaveType )type; - - BB_ADD(reg, &t, SIZE_SAVE_TYPE); - return 0; -} - -static int -add_update_var_type(regex_t* reg, enum UpdateVarType type) -{ - UpdateVarType t = (UpdateVarType )type; - - BB_ADD(reg, &t, SIZE_UPDATE_VAR_TYPE); - return 0; -} - -static int -add_mode(regex_t* reg, ModeType mode) -{ - BB_ADD(reg, &mode, SIZE_MODE); - return 0; -} - -static int -add_opcode_rel_addr(regex_t* reg, int opcode, int addr) +add_op(regex_t* reg, int opcode) { int r; - r = add_opcode(reg, opcode); - if (r != 0) return r; - r = add_rel_addr(reg, addr); - return r; -} + r = ops_new(reg); + if (r != ONIG_NORMAL) return r; -static int -add_bytes(regex_t* reg, UChar* bytes, int len) -{ - BB_ADD(reg, bytes, len); - return 0; -} +#ifdef USE_DIRECT_THREADED_CODE + *(reg->ocs + (reg->ops_curr - reg->ops)) = opcode; +#else + reg->ops_curr->opcode = opcode; +#endif -static int -add_bitset(regex_t* reg, BitSetRef bs) -{ - BB_ADD(reg, bs, SIZE_BITSET); return 0; } @@ -428,32 +599,53 @@ 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, ScanEnv* env) +is_strict_real_node(Node* node) +{ + switch (NODE_TYPE(node)) { + case NODE_STRING: + { + StrNode* sn = STR_(node); + return (sn->end != sn->s); + } + break; + + case NODE_CCLASS: + case NODE_CTYPE: + return 1; + break; + + default: + return 0; + break; + } +} + +static int +compile_tree_empty_check(Node* node, regex_t* reg, int emptiness, ScanEnv* env) { int r; int saved_num_null_check = reg->num_null_check; - 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 (emptiness != BODY_IS_NOT_EMPTY) { + r = add_op(reg, OP_EMPTY_CHECK_START); if (r != 0) return r; + COP(reg)->empty_check_start.mem = reg->num_null_check; /* NULL CHECK ID */ reg->num_null_check++; } r = compile_tree(node, reg, env); if (r != 0) return r; - 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 (emptiness != BODY_IS_NOT_EMPTY) { + if (emptiness == BODY_IS_EMPTY_POSSIBILITY) + r = add_op(reg, OP_EMPTY_CHECK_END); + else if (emptiness == BODY_IS_EMPTY_POSSIBILITY_MEM) + r = add_op(reg, OP_EMPTY_CHECK_END_MEMST); + else if (emptiness == BODY_IS_EMPTY_POSSIBILITY_REC) + r = add_op(reg, OP_EMPTY_CHECK_END_MEMST_PUSH); if (r != 0) return r; - r = add_mem_num(reg, saved_num_null_check); /* NULL CHECK ID */ + COP(reg)->empty_check_end.mem = saved_num_null_check; /* NULL CHECK ID */ } return r; } @@ -463,13 +655,15 @@ static int compile_call(CallNode* node, regex_t* reg, ScanEnv* env) { int r; + int offset; - r = add_opcode(reg, OP_CALL); + r = add_op(reg, OP_CALL); 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.*/); + + COP(reg)->call.addr = 0; /* dummy addr. */ + + offset = COP_CURR_OFFSET_BYTES(reg, call.addr); + r = unset_addr_list_add(env->unset_addr_list, offset, NODE_CALL_BODY(node)); return r; } #endif @@ -490,41 +684,53 @@ static int add_compile_string_length(UChar* s ARG_UNUSED, int mb_len, int str_len, regex_t* reg ARG_UNUSED, int ignore_case) { - int len; - int op = select_str_opcode(mb_len, str_len, ignore_case); - - len = SIZE_OPCODE; - - if (op == OP_EXACTMBN) len += SIZE_LENGTH; - if (IS_NEED_STR_LEN_OP_EXACT(op)) - len += SIZE_LENGTH; - - len += mb_len * str_len; - return len; + return 1; } static int add_compile_string(UChar* s, int mb_len, int str_len, regex_t* reg, int ignore_case) { - int op = select_str_opcode(mb_len, str_len, ignore_case); - add_opcode(reg, op); + int op; + int r; + int byte_len; + UChar* p; + UChar* end; + + op = select_str_opcode(mb_len, str_len, ignore_case); + r = add_op(reg, op); + if (r != 0) return r; + + byte_len = mb_len * str_len; + end = s + byte_len; - if (op == OP_EXACTMBN) - add_length(reg, mb_len); + if (op == OP_EXACTMBN) { + p = onigenc_strdup(reg->enc, s, end); + CHECK_NULL_RETURN_MEMERR(p); + + COP(reg)->exact_len_n.len = mb_len; + COP(reg)->exact_len_n.n = str_len; + COP(reg)->exact_len_n.s = p; + } + else if (IS_NEED_STR_LEN_OP_EXACT(op)) { + p = onigenc_strdup(reg->enc, s, end); + CHECK_NULL_RETURN_MEMERR(p); - if (IS_NEED_STR_LEN_OP_EXACT(op)) { if (op == OP_EXACTN_IC) - add_length(reg, mb_len * str_len); + COP(reg)->exact_n.n = byte_len; else - add_length(reg, str_len); + COP(reg)->exact_n.n = str_len; + + COP(reg)->exact_n.s = p; + } + else { + xmemcpy(COP(reg)->exact.s, s, (size_t )byte_len); + COP(reg)->exact.s[byte_len] = '\0'; } - add_bytes(reg, s, mb_len * str_len); return 0; } - static int compile_length_string_node(Node* node, regex_t* reg) { @@ -624,52 +830,24 @@ compile_string_raw_node(StrNode* sn, regex_t* reg) return add_compile_string(sn->s, 1 /* sb */, (int )(sn->end - sn->s), reg, 0); } -static int -add_multi_byte_cclass(BBuf* mbuf, regex_t* reg) +static void* +set_multi_byte_cclass(BBuf* mbuf, regex_t* reg) { -#ifdef PLATFORM_UNALIGNED_WORD_ACCESS - add_length(reg, mbuf->used); - return add_bytes(reg, mbuf->p, mbuf->used); -#else - int r, pad_size; - 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)); - if (pad_size != 0) add_bytes(reg, PadBuf, pad_size); + size_t len; + void* p; - r = add_bytes(reg, mbuf->p, mbuf->used); + len = (size_t )mbuf->used; + p = xmalloc(len); + if (IS_NULL(p)) return NULL; - /* padding for return value from compile_length_cclass_node() to be fix. */ - pad_size = (WORD_ALIGNMENT_SIZE - 1) - pad_size; - if (pad_size != 0) add_bytes(reg, PadBuf, pad_size); - return r; -#endif + xmemcpy(p, mbuf->p, len); + return p; } static int compile_length_cclass_node(CClassNode* cc, regex_t* reg) { - int len; - - if (IS_NULL(cc->mbuf)) { - len = SIZE_OPCODE + SIZE_BITSET; - } - else { - if (ONIGENC_MBC_MINLEN(reg->enc) > 1 || bitset_is_empty(cc->bs)) { - len = SIZE_OPCODE; - } - else { - len = SIZE_OPCODE + SIZE_BITSET; - } -#ifdef PLATFORM_UNALIGNED_WORD_ACCESS - len += SIZE_LENGTH + cc->mbuf->used; -#else - len += SIZE_LENGTH + cc->mbuf->used + (WORD_ALIGNMENT_SIZE - 1); -#endif - } - - return len; + return 1; } static int @@ -678,35 +856,39 @@ compile_cclass_node(CClassNode* cc, regex_t* reg) int r; if (IS_NULL(cc->mbuf)) { - if (IS_NCCLASS_NOT(cc)) - add_opcode(reg, OP_CCLASS_NOT); - else - add_opcode(reg, OP_CCLASS); + r = add_op(reg, IS_NCCLASS_NOT(cc) ? OP_CCLASS_NOT : OP_CCLASS); + if (r != 0) return r; - r = add_bitset(reg, cc->bs); + COP(reg)->cclass.bsp = xmalloc(SIZE_BITSET); + CHECK_NULL_RETURN_MEMERR(COP(reg)->cclass.bsp); + xmemcpy(COP(reg)->cclass.bsp, cc->bs, SIZE_BITSET); } else { + void* p; + if (ONIGENC_MBC_MINLEN(reg->enc) > 1 || bitset_is_empty(cc->bs)) { - if (IS_NCCLASS_NOT(cc)) - add_opcode(reg, OP_CCLASS_MB_NOT); - else - add_opcode(reg, OP_CCLASS_MB); + r = add_op(reg, IS_NCCLASS_NOT(cc) ? OP_CCLASS_MB_NOT : OP_CCLASS_MB); + if (r != 0) return r; - r = add_multi_byte_cclass(cc->mbuf, reg); + p = set_multi_byte_cclass(cc->mbuf, reg); + CHECK_NULL_RETURN_MEMERR(p); + COP(reg)->cclass_mb.mb = p; } else { - if (IS_NCCLASS_NOT(cc)) - add_opcode(reg, OP_CCLASS_MIX_NOT); - else - add_opcode(reg, OP_CCLASS_MIX); - - r = add_bitset(reg, cc->bs); + r = add_op(reg, IS_NCCLASS_NOT(cc) ? OP_CCLASS_MIX_NOT : OP_CCLASS_MIX); if (r != 0) return r; - r = add_multi_byte_cclass(cc->mbuf, reg); + + COP(reg)->cclass_mix.bsp = xmalloc(SIZE_BITSET); + CHECK_NULL_RETURN_MEMERR(COP(reg)->cclass_mix.bsp); + xmemcpy(COP(reg)->cclass_mix.bsp, cc->bs, SIZE_BITSET); + + p = set_multi_byte_cclass(cc->mbuf, reg); + CHECK_NULL_RETURN_MEMERR(p); + COP(reg)->cclass_mix.mb = p; } } - return r; + return 0; } static int @@ -737,29 +919,27 @@ entry_repeat_range(regex_t* reg, int id, int lower, int upper) } p[id].lower = lower; - p[id].upper = (IS_REPEAT_INFINITE(upper) ? 0x7fffffff : upper); + p[id].upper = (IS_INFINITE_REPEAT(upper) ? 0x7fffffff : upper); return 0; } static int -compile_range_repeat_node(QuantNode* qn, int target_len, int empty_info, +compile_range_repeat_node(QuantNode* qn, int target_len, int emptiness, regex_t* reg, ScanEnv* env) { int r; - int num_repeat = reg->num_repeat; + int num_repeat = reg->num_repeat++; - r = add_opcode(reg, qn->greedy ? OP_REPEAT : OP_REPEAT_NG); - if (r != 0) return r; - r = add_mem_num(reg, num_repeat); /* OP_REPEAT ID */ - reg->num_repeat++; - if (r != 0) return r; - r = add_rel_addr(reg, target_len + SIZE_OP_REPEAT_INC); + r = add_op(reg, qn->greedy ? OP_REPEAT : OP_REPEAT_NG); if (r != 0) return r; + COP(reg)->repeat.id = num_repeat; + COP(reg)->repeat.addr = SIZE_INC_OP + target_len + SIZE_OP_REPEAT_INC; + r = entry_repeat_range(reg, num_repeat, qn->lower, qn->upper); if (r != 0) return r; - r = compile_tree_empty_check(NODE_QUANT_BODY(qn), reg, empty_info, env); + r = compile_tree_empty_check(NODE_QUANT_BODY(qn), reg, emptiness, env); if (r != 0) return r; if ( @@ -767,35 +947,36 @@ compile_range_repeat_node(QuantNode* qn, int target_len, int empty_info, NODE_IS_IN_MULTI_ENTRY(qn) || #endif NODE_IS_IN_REAL_REPEAT(qn)) { - r = add_opcode(reg, qn->greedy ? OP_REPEAT_INC_SG : OP_REPEAT_INC_NG_SG); + r = add_op(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); + r = add_op(reg, qn->greedy ? OP_REPEAT_INC : OP_REPEAT_INC_NG); } if (r != 0) return r; - r = add_mem_num(reg, num_repeat); /* OP_REPEAT ID */ + + COP(reg)->repeat_inc.id = num_repeat; return r; } static int is_anychar_infinite_greedy(QuantNode* qn) { - if (qn->greedy && IS_REPEAT_INFINITE(qn->upper) && + if (qn->greedy && IS_INFINITE_REPEAT(qn->upper) && NODE_IS_ANYCHAR(NODE_QUANT_BODY(qn))) return 1; else return 0; } -#define QUANTIFIER_EXPAND_LIMIT_SIZE 50 +#define QUANTIFIER_EXPAND_LIMIT_SIZE 10 #define CKN_ON (ckn > 0) static int compile_length_quantifier_node(QuantNode* qn, regex_t* reg) { int len, mod_tlen; - int infinite = IS_REPEAT_INFINITE(qn->upper); - enum QuantBodyEmpty empty_info = qn->body_empty_info; + int infinite = IS_INFINITE_REPEAT(qn->upper); + enum BodyEmptyType emptiness = qn->emptiness; int tlen = compile_length_tree(NODE_QUANT_BODY(qn), reg); if (tlen < 0) return tlen; @@ -812,10 +993,9 @@ compile_length_quantifier_node(QuantNode* qn, regex_t* reg) } } - 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); + mod_tlen = tlen; + if (emptiness != BODY_IS_NOT_EMPTY) + mod_tlen += SIZE_OP_EMPTY_CHECK_START + SIZE_OP_EMPTY_CHECK_END; if (infinite && (qn->lower <= 1 || @@ -828,9 +1008,12 @@ compile_length_quantifier_node(QuantNode* qn, regex_t* reg) } if (qn->greedy) { +#ifdef USE_OP_PUSH_OR_JUMP_EXACT if (IS_NOT_NULL(qn->head_exact)) len += SIZE_OP_PUSH_OR_JUMP_EXACT1 + mod_tlen + SIZE_OP_JUMP; - else if (IS_NOT_NULL(qn->next_head_exact)) + else +#endif + if (IS_NOT_NULL(qn->next_head_exact)) len += SIZE_OP_PUSH_IF_PEEK_NEXT + mod_tlen + SIZE_OP_JUMP; else len += SIZE_OP_PUSH + mod_tlen + SIZE_OP_JUMP; @@ -838,8 +1021,12 @@ compile_length_quantifier_node(QuantNode* qn, regex_t* reg) else len += SIZE_OP_JUMP + mod_tlen + SIZE_OP_PUSH; } - else if (qn->upper == 0 && qn->is_refered != 0) { /* /(?..){0}/ */ - len = SIZE_OP_JUMP + tlen; + else if (qn->upper == 0) { + if (qn->is_refered != 0) { /* /(?..){0}/ */ + len = SIZE_OP_JUMP + tlen; + } + else + len = 0; } else if (!infinite && qn->greedy && (qn->upper == 1 || @@ -852,8 +1039,7 @@ compile_length_quantifier_node(QuantNode* qn, regex_t* reg) len = SIZE_OP_PUSH + SIZE_OP_JUMP + tlen; } else { - len = SIZE_OP_REPEAT_INC - + mod_tlen + SIZE_OPCODE + SIZE_RELADDR + SIZE_MEMNUM; + len = SIZE_OP_REPEAT_INC + mod_tlen + SIZE_OP_REPEAT; } return len; @@ -863,8 +1049,8 @@ static int compile_quantifier_node(QuantNode* qn, regex_t* reg, ScanEnv* env) { int i, r, mod_tlen; - int infinite = IS_REPEAT_INFINITE(qn->upper); - enum QuantBodyEmpty empty_info = qn->body_empty_info; + int infinite = IS_INFINITE_REPEAT(qn->upper); + enum BodyEmptyType emptiness = qn->emptiness; int tlen = compile_length_tree(NODE_QUANT_BODY(qn), reg); if (tlen < 0) return tlen; @@ -876,42 +1062,48 @@ compile_quantifier_node(QuantNode* qn, regex_t* reg, ScanEnv* env) 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(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); + r = add_op(reg, + IS_MULTILINE(CTYPE_OPTION(NODE_QUANT_BODY(qn), reg)) ? + OP_ANYCHAR_ML_STAR_PEEK_NEXT : OP_ANYCHAR_STAR_PEEK_NEXT); if (r != 0) return r; - return add_bytes(reg, STR_(qn->next_head_exact)->s, 1); + + COP(reg)->anychar_star_peek_next.c = STR_(qn->next_head_exact)->s[0]; + return 0; } else { - 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); + r = add_op(reg, + IS_MULTILINE(CTYPE_OPTION(NODE_QUANT_BODY(qn), reg)) ? + OP_ANYCHAR_ML_STAR : OP_ANYCHAR_STAR); + return r; } } - 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); + mod_tlen = tlen; + if (emptiness != BODY_IS_NOT_EMPTY) + mod_tlen += SIZE_OP_EMPTY_CHECK_START + SIZE_OP_EMPTY_CHECK_END; if (infinite && (qn->lower <= 1 || int_multiply_cmp(tlen, qn->lower, QUANTIFIER_EXPAND_LIMIT_SIZE) <= 0)) { + int addr; + if (qn->lower == 1 && tlen > QUANTIFIER_EXPAND_LIMIT_SIZE) { + r = add_op(reg, OP_JUMP); + if (r != 0) return r; if (qn->greedy) { +#ifdef USE_OP_PUSH_OR_JUMP_EXACT 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); + COP(reg)->jump.addr = SIZE_OP_PUSH_OR_JUMP_EXACT1 + SIZE_INC_OP; + else +#endif + if (IS_NOT_NULL(qn->next_head_exact)) + COP(reg)->jump.addr = SIZE_OP_PUSH_IF_PEEK_NEXT + SIZE_INC_OP; else - r = add_opcode_rel_addr(reg, OP_JUMP, SIZE_OP_PUSH); + COP(reg)->jump.addr = SIZE_OP_PUSH + SIZE_INC_OP; } else { - r = add_opcode_rel_addr(reg, OP_JUMP, SIZE_OP_JUMP); + COP(reg)->jump.addr = SIZE_OP_JUMP + SIZE_INC_OP; } - if (r != 0) return r; } else { r = compile_tree_n_times(NODE_QUANT_BODY(qn), qn->lower, reg, env); @@ -919,48 +1111,72 @@ compile_quantifier_node(QuantNode* qn, regex_t* reg, ScanEnv* env) } if (qn->greedy) { +#ifdef USE_OP_PUSH_OR_JUMP_EXACT if (IS_NOT_NULL(qn->head_exact)) { - r = add_opcode_rel_addr(reg, OP_PUSH_OR_JUMP_EXACT1, - mod_tlen + SIZE_OP_JUMP); + r = add_op(reg, OP_PUSH_OR_JUMP_EXACT1); 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); + COP(reg)->push_or_jump_exact1.addr = SIZE_INC_OP + mod_tlen + SIZE_OP_JUMP; + COP(reg)->push_or_jump_exact1.c = STR_(qn->head_exact)->s[0]; + + r = compile_tree_empty_check(NODE_QUANT_BODY(qn), reg, emptiness, 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)); + + addr = -(mod_tlen + (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); + else +#endif + if (IS_NOT_NULL(qn->next_head_exact)) { + r = add_op(reg, OP_PUSH_IF_PEEK_NEXT); 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); + COP(reg)->push_if_peek_next.addr = SIZE_INC_OP + mod_tlen + SIZE_OP_JUMP; + COP(reg)->push_if_peek_next.c = STR_(qn->next_head_exact)->s[0]; + + r = compile_tree_empty_check(NODE_QUANT_BODY(qn), reg, emptiness, 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)); + + addr = -(mod_tlen + (int )SIZE_OP_PUSH_IF_PEEK_NEXT); } else { - r = add_opcode_rel_addr(reg, OP_PUSH, mod_tlen + SIZE_OP_JUMP); + r = add_op(reg, OP_PUSH); if (r != 0) return r; - r = compile_tree_empty_check(NODE_QUANT_BODY(qn), reg, empty_info, env); + COP(reg)->push.addr = SIZE_INC_OP + mod_tlen + SIZE_OP_JUMP; + + r = compile_tree_empty_check(NODE_QUANT_BODY(qn), reg, emptiness, env); if (r != 0) return r; - r = add_opcode_rel_addr(reg, OP_JUMP, - -(mod_tlen + (int )SIZE_OP_JUMP + (int )SIZE_OP_PUSH)); + + addr = -(mod_tlen + (int )SIZE_OP_PUSH); } + + r = add_op(reg, OP_JUMP); + if (r != 0) return r; + COP(reg)->jump.addr = addr; } else { - r = add_opcode_rel_addr(reg, OP_JUMP, mod_tlen); + r = add_op(reg, OP_JUMP); if (r != 0) return r; - r = compile_tree_empty_check(NODE_QUANT_BODY(qn), reg, empty_info, env); + COP(reg)->jump.addr = mod_tlen + SIZE_INC_OP; + + r = compile_tree_empty_check(NODE_QUANT_BODY(qn), reg, emptiness, env); + if (r != 0) return r; + + r = add_op(reg, OP_PUSH); + if (r != 0) return r; + COP(reg)->push.addr = -mod_tlen; + } + } + else if (qn->upper == 0) { + if (qn->is_refered != 0) { /* /(?..){0}/ */ + r = add_op(reg, OP_JUMP); if (r != 0) return r; - r = add_opcode_rel_addr(reg, OP_PUSH, -(mod_tlen + (int )SIZE_OP_PUSH)); + COP(reg)->jump.addr = tlen + SIZE_INC_OP; + + r = compile_tree(NODE_QUANT_BODY(qn), reg, env); + } + else { + /* Nothing output */ + r = 0; } } - else if (qn->upper == 0 && qn->is_refered != 0) { /* /(?..){0}/ */ - r = add_opcode_rel_addr(reg, OP_JUMP, tlen); - if (r != 0) return r; - r = compile_tree(NODE_QUANT_BODY(qn), reg, env); - } else if (! infinite && qn->greedy && (qn->upper == 1 || int_multiply_cmp(tlen + SIZE_OP_PUSH, qn->upper, @@ -971,70 +1187,78 @@ compile_quantifier_node(QuantNode* qn, regex_t* reg, ScanEnv* 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); + int v = onig_positive_int_multiply(n - i, tlen + SIZE_OP_PUSH); + if (v < 0) return ONIGERR_TOO_BIG_NUMBER_FOR_REPEAT_RANGE; + + r = add_op(reg, OP_PUSH); if (r != 0) return r; + COP(reg)->push.addr = v; + r = compile_tree(NODE_QUANT_BODY(qn), reg, env); if (r != 0) return r; } } else if (! qn->greedy && qn->upper == 1 && qn->lower == 0) { /* '??' */ - r = add_opcode_rel_addr(reg, OP_PUSH, SIZE_OP_JUMP); + r = add_op(reg, OP_PUSH); if (r != 0) return r; - r = add_opcode_rel_addr(reg, OP_JUMP, tlen); + COP(reg)->push.addr = SIZE_INC_OP + SIZE_OP_JUMP; + + r = add_op(reg, OP_JUMP); if (r != 0) return r; + COP(reg)->jump.addr = tlen + SIZE_INC_OP; + r = compile_tree(NODE_QUANT_BODY(qn), reg, env); } else { - r = compile_range_repeat_node(qn, mod_tlen, empty_info, reg, env); + r = compile_range_repeat_node(qn, mod_tlen, emptiness, reg, env); } return r; } static int -compile_length_option_node(EnclosureNode* node, regex_t* reg) +compile_length_option_node(BagNode* node, regex_t* reg) { int tlen; OnigOptionType prev = reg->options; reg->options = node->o.options; - tlen = compile_length_tree(NODE_ENCLOSURE_BODY(node), reg); + tlen = compile_length_tree(NODE_BAG_BODY(node), reg); reg->options = prev; return tlen; } static int -compile_option_node(EnclosureNode* node, regex_t* reg, ScanEnv* env) +compile_option_node(BagNode* node, regex_t* reg, ScanEnv* env) { int r; OnigOptionType prev = reg->options; reg->options = node->o.options; - r = compile_tree(NODE_ENCLOSURE_BODY(node), reg, env); + r = compile_tree(NODE_BAG_BODY(node), reg, env); reg->options = prev; return r; } static int -compile_length_enclosure_node(EnclosureNode* node, regex_t* reg) +compile_length_bag_node(BagNode* node, regex_t* reg) { int len; int tlen; - if (node->type == ENCLOSURE_OPTION) + if (node->type == BAG_OPTION) return compile_length_option_node(node, reg); - if (NODE_ENCLOSURE_BODY(node)) { - tlen = compile_length_tree(NODE_ENCLOSURE_BODY(node), reg); + if (NODE_BAG_BODY(node)) { + tlen = compile_length_tree(NODE_BAG_BODY(node), reg); if (tlen < 0) return tlen; } else tlen = 0; switch (node->type) { - case ENCLOSURE_MEMORY: + case BAG_MEMORY: #ifdef USE_CALL if (node->m.regnum == 0 && NODE_IS_CALLED(node)) { @@ -1070,23 +1294,27 @@ compile_length_enclosure_node(EnclosureNode* node, regex_t* reg) } break; - case ENCLOSURE_STOP_BACKTRACK: - if (NODE_IS_STOP_BT_SIMPLE_REPEAT(node)) { - QuantNode* qn = QUANT_(NODE_ENCLOSURE_BODY(node)); + case BAG_STOP_BACKTRACK: + if (NODE_IS_STRICT_REAL_REPEAT(node)) { + int v; + QuantNode* qn; + + qn = QUANT_(NODE_BAG_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_OUT + SIZE_OP_JUMP; + v = onig_positive_int_multiply(qn->lower, tlen); + if (v < 0) return ONIGERR_TOO_BIG_NUMBER_FOR_REPEAT_RANGE; + len = v + SIZE_OP_PUSH + tlen + SIZE_OP_POP_OUT + SIZE_OP_JUMP; } else { len = SIZE_OP_ATOMIC_START + tlen + SIZE_OP_ATOMIC_END; } break; - case ENCLOSURE_IF_ELSE: + case BAG_IF_ELSE: { - Node* cond = NODE_ENCLOSURE_BODY(node); + Node* cond = NODE_BAG_BODY(node); Node* Then = node->te.Then; Node* Else = node->te.Else; @@ -1101,8 +1329,9 @@ compile_length_enclosure_node(EnclosureNode* node, regex_t* reg) len += tlen; } + len += SIZE_OP_JUMP + SIZE_OP_ATOMIC_END; + if (IS_NOT_NULL(Else)) { - len += SIZE_OP_JUMP; tlen = compile_length_tree(Else, reg); if (tlen < 0) return tlen; len += tlen; @@ -1110,146 +1339,151 @@ compile_length_enclosure_node(EnclosureNode* node, regex_t* reg) } break; - default: - return ONIGERR_TYPE_BUG; + case BAG_OPTION: + /* never come here, but set for escape warning */ + len = 0; break; } return len; } -static int get_char_length_tree(Node* node, regex_t* reg, int* len); +static int get_char_len_node(Node* node, regex_t* reg, int* len); static int -compile_enclosure_memory_node(EnclosureNode* node, regex_t* reg, ScanEnv* env) +compile_bag_memory_node(BagNode* node, regex_t* reg, ScanEnv* env) { int r; int len; #ifdef USE_CALL - if (node->m.regnum == 0 && NODE_IS_CALLED(node)) { - r = add_opcode(reg, OP_CALL); + if (NODE_IS_CALLED(node)) { + r = add_op(reg, OP_CALL); if (r != 0) return r; - node->m.called_addr = BB_GET_OFFSET_POS(reg) + SIZE_ABSADDR + SIZE_OP_JUMP; + + node->m.called_addr = COP_CURR_OFFSET(reg) + 1 + 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; + COP(reg)->call.addr = (int )node->m.called_addr; - r = compile_tree(NODE_ENCLOSURE_BODY(node), reg, env); - if (r != 0) return r; - r = add_opcode(reg, OP_RETURN); - return r; - } + if (node->m.regnum == 0) { + len = compile_length_tree(NODE_BAG_BODY(node), reg); + len += SIZE_OP_RETURN; - 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_op(reg, OP_JUMP); + if (r != 0) return r; + COP(reg)->jump.addr = len + SIZE_INC_OP; - r = add_opcode_rel_addr(reg, OP_JUMP, len); - if (r != 0) return r; + r = compile_tree(NODE_BAG_BODY(node), reg, env); + if (r != 0) return r; + + r = add_op(reg, OP_RETURN); + return r; + } + else { + len = compile_length_tree(NODE_BAG_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_op(reg, OP_JUMP); + if (r != 0) return r; + COP(reg)->jump.addr = len + SIZE_INC_OP; + } } #endif if (MEM_STATUS_AT0(reg->bt_mem_start, node->m.regnum)) - r = add_opcode(reg, OP_MEMORY_START_PUSH); + r = add_op(reg, OP_MEMORY_START_PUSH); else - r = add_opcode(reg, OP_MEMORY_START); + r = add_op(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); + COP(reg)->memory_start.num = node->m.regnum; + + r = compile_tree(NODE_BAG_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)); + r = add_op(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)); + r = add_op(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); + COP(reg)->memory_end.num = node->m.regnum; + if (NODE_IS_CALLED(node)) { if (r != 0) return r; - r = add_opcode(reg, OP_RETURN); + r = add_op(reg, OP_RETURN); } #else if (MEM_STATUS_AT0(reg->bt_mem_end, node->m.regnum)) - r = add_opcode(reg, OP_MEMORY_END_PUSH); + r = add_op(reg, OP_MEMORY_END_PUSH); else - r = add_opcode(reg, OP_MEMORY_END); + r = add_op(reg, OP_MEMORY_END); if (r != 0) return r; - r = add_mem_num(reg, node->m.regnum); + COP(reg)->memory_end.num = node->m.regnum; #endif return r; } static int -compile_enclosure_node(EnclosureNode* node, regex_t* reg, ScanEnv* env) +compile_bag_node(BagNode* node, regex_t* reg, ScanEnv* env) { int r, len; switch (node->type) { - case ENCLOSURE_MEMORY: - r = compile_enclosure_memory_node(node, reg, env); + case BAG_MEMORY: + r = compile_bag_memory_node(node, reg, env); break; - case ENCLOSURE_OPTION: + case BAG_OPTION: r = compile_option_node(node, reg, env); break; - case ENCLOSURE_STOP_BACKTRACK: - if (NODE_IS_STOP_BT_SIMPLE_REPEAT(node)) { - QuantNode* qn = QUANT_(NODE_ENCLOSURE_BODY(node)); + case BAG_STOP_BACKTRACK: + if (NODE_IS_STRICT_REAL_REPEAT(node)) { + QuantNode* qn = QUANT_(NODE_BAG_BODY(node)); r = compile_tree_n_times(NODE_QUANT_BODY(qn), qn->lower, reg, env); if (r != 0) return r; 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_OUT + SIZE_OP_JUMP); + r = add_op(reg, OP_PUSH); if (r != 0) return r; + COP(reg)->push.addr = SIZE_INC_OP + len + SIZE_OP_POP_OUT + SIZE_OP_JUMP; + r = compile_tree(NODE_QUANT_BODY(qn), reg, env); if (r != 0) return r; - r = add_opcode(reg, OP_POP_OUT); + r = add_op(reg, OP_POP_OUT); + if (r != 0) return r; + + r = add_op(reg, OP_JUMP); if (r != 0) return r; - r = add_opcode_rel_addr(reg, OP_JUMP, - -((int )SIZE_OP_PUSH + len + (int )SIZE_OP_POP_OUT + (int )SIZE_OP_JUMP)); + COP(reg)->jump.addr = -((int )SIZE_OP_PUSH + len + (int )SIZE_OP_POP_OUT); } else { - r = add_opcode(reg, OP_ATOMIC_START); + r = add_op(reg, OP_ATOMIC_START); if (r != 0) return r; - r = compile_tree(NODE_ENCLOSURE_BODY(node), reg, env); + r = compile_tree(NODE_BAG_BODY(node), reg, env); if (r != 0) return r; - r = add_opcode(reg, OP_ATOMIC_END); + r = add_op(reg, OP_ATOMIC_END); } break; - case ENCLOSURE_IF_ELSE: + case BAG_IF_ELSE: { - int cond_len, then_len, jump_len; - Node* cond = NODE_ENCLOSURE_BODY(node); + int cond_len, then_len, else_len, jump_len; + Node* cond = NODE_BAG_BODY(node); Node* Then = node->te.Then; Node* Else = node->te.Else; - r = add_opcode(reg, OP_ATOMIC_START); + r = add_op(reg, OP_ATOMIC_START); if (r != 0) return r; cond_len = compile_length_tree(cond, reg); @@ -1261,14 +1495,15 @@ compile_enclosure_node(EnclosureNode* node, regex_t* reg, ScanEnv* env) else then_len = 0; - jump_len = cond_len + then_len + SIZE_OP_ATOMIC_END; - if (IS_NOT_NULL(Else)) jump_len += SIZE_OP_JUMP; + jump_len = cond_len + then_len + SIZE_OP_ATOMIC_END + SIZE_OP_JUMP; - r = add_opcode_rel_addr(reg, OP_PUSH, jump_len); + r = add_op(reg, OP_PUSH); if (r != 0) return r; + COP(reg)->push.addr = SIZE_INC_OP + jump_len; + r = compile_tree(cond, reg, env); if (r != 0) return r; - r = add_opcode(reg, OP_ATOMIC_END); + r = add_op(reg, OP_ATOMIC_END); if (r != 0) return r; if (IS_NOT_NULL(Then)) { @@ -1277,17 +1512,24 @@ compile_enclosure_node(EnclosureNode* node, regex_t* reg, ScanEnv* env) } 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; + else_len = compile_length_tree(Else, reg); + if (else_len < 0) return else_len; + } + else + else_len = 0; + + r = add_op(reg, OP_JUMP); + if (r != 0) return r; + COP(reg)->jump.addr = SIZE_OP_ATOMIC_END + else_len + SIZE_INC_OP; + + r = add_op(reg, OP_ATOMIC_END); + if (r != 0) return r; + + if (IS_NOT_NULL(Else)) { r = compile_tree(Else, reg, env); } } break; - - default: - return ONIGERR_TYPE_BUG; - break; } return r; @@ -1305,30 +1547,30 @@ compile_length_anchor_node(AnchorNode* node, regex_t* reg) } switch (node->type) { - case ANCHOR_PREC_READ: + case ANCR_PREC_READ: len = SIZE_OP_PREC_READ_START + tlen + SIZE_OP_PREC_READ_END; break; - case ANCHOR_PREC_READ_NOT: + case ANCR_PREC_READ_NOT: len = SIZE_OP_PREC_READ_NOT_START + tlen + SIZE_OP_PREC_READ_NOT_END; break; - case ANCHOR_LOOK_BEHIND: + case ANCR_LOOK_BEHIND: len = SIZE_OP_LOOK_BEHIND + tlen; break; - case ANCHOR_LOOK_BEHIND_NOT: + case ANCR_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: + case ANCR_WORD_BOUNDARY: + case ANCR_NO_WORD_BOUNDARY: #ifdef USE_WORD_BEGIN_END - case ANCHOR_WORD_BEGIN: - case ANCHOR_WORD_END: + case ANCR_WORD_BEGIN: + case ANCR_WORD_END: #endif len = SIZE_OP_WORD_BOUNDARY; break; - case ANCHOR_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY: - case ANCHOR_NO_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY: + case ANCR_TEXT_SEGMENT_BOUNDARY: + case ANCR_NO_TEXT_SEGMENT_BOUNDARY: len = SIZE_OPCODE; break; @@ -1347,96 +1589,111 @@ compile_anchor_node(AnchorNode* node, regex_t* reg, ScanEnv* env) enum OpCode op; switch (node->type) { - case ANCHOR_BEGIN_BUF: r = add_opcode(reg, OP_BEGIN_BUF); break; - case ANCHOR_END_BUF: r = add_opcode(reg, OP_END_BUF); break; - case ANCHOR_BEGIN_LINE: r = add_opcode(reg, OP_BEGIN_LINE); break; - case ANCHOR_END_LINE: r = add_opcode(reg, OP_END_LINE); break; - 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_BOUNDARY: + case ANCR_BEGIN_BUF: r = add_op(reg, OP_BEGIN_BUF); break; + case ANCR_END_BUF: r = add_op(reg, OP_END_BUF); break; + case ANCR_BEGIN_LINE: r = add_op(reg, OP_BEGIN_LINE); break; + case ANCR_END_LINE: r = add_op(reg, OP_END_LINE); break; + case ANCR_SEMI_END_BUF: r = add_op(reg, OP_SEMI_END_BUF); break; + case ANCR_BEGIN_POSITION: r = add_op(reg, OP_BEGIN_POSITION); break; + + case ANCR_WORD_BOUNDARY: op = OP_WORD_BOUNDARY; word: - r = add_opcode(reg, op); + r = add_op(reg, op); if (r != 0) return r; - r = add_mode(reg, (ModeType )node->ascii_mode); + COP(reg)->word_boundary.mode = (ModeType )node->ascii_mode; break; - case ANCHOR_NO_WORD_BOUNDARY: + case ANCR_NO_WORD_BOUNDARY: op = OP_NO_WORD_BOUNDARY; goto word; break; #ifdef USE_WORD_BEGIN_END - case ANCHOR_WORD_BEGIN: + case ANCR_WORD_BEGIN: op = OP_WORD_BEGIN; goto word; break; - case ANCHOR_WORD_END: + case ANCR_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 ANCR_TEXT_SEGMENT_BOUNDARY: + case ANCR_NO_TEXT_SEGMENT_BOUNDARY: + { + enum TextSegmentBoundaryType type; - case ANCHOR_NO_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY: - r = add_opcode(reg, OP_NO_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY); + r = add_op(reg, OP_TEXT_SEGMENT_BOUNDARY); + if (r != 0) return r; + + type = EXTENDED_GRAPHEME_CLUSTER_BOUNDARY; +#ifdef USE_UNICODE_WORD_BREAK + if (ONIG_IS_OPTION_ON(reg->options, ONIG_OPTION_TEXT_SEGMENT_WORD)) + type = WORD_BOUNDARY; +#endif + + COP(reg)->text_segment_boundary.type = type; + COP(reg)->text_segment_boundary.not = + (node->type == ANCR_NO_TEXT_SEGMENT_BOUNDARY ? 1 : 0); + } break; - case ANCHOR_PREC_READ: - r = add_opcode(reg, OP_PREC_READ_START); + case ANCR_PREC_READ: + r = add_op(reg, OP_PREC_READ_START); if (r != 0) return r; r = compile_tree(NODE_ANCHOR_BODY(node), reg, env); if (r != 0) return r; - r = add_opcode(reg, OP_PREC_READ_END); + r = add_op(reg, OP_PREC_READ_END); break; - case ANCHOR_PREC_READ_NOT: + case ANCR_PREC_READ_NOT: len = compile_length_tree(NODE_ANCHOR_BODY(node), reg); if (len < 0) return len; - r = add_opcode_rel_addr(reg, OP_PREC_READ_NOT_START, len + SIZE_OP_PREC_READ_NOT_END); + + r = add_op(reg, OP_PREC_READ_NOT_START); if (r != 0) return r; + COP(reg)->prec_read_not_start.addr = SIZE_INC_OP + len + SIZE_OP_PREC_READ_NOT_END; r = compile_tree(NODE_ANCHOR_BODY(node), reg, env); if (r != 0) return r; - r = add_opcode(reg, OP_PREC_READ_NOT_END); + r = add_op(reg, OP_PREC_READ_NOT_END); break; - case ANCHOR_LOOK_BEHIND: + case ANCR_LOOK_BEHIND: { int n; - r = add_opcode(reg, OP_LOOK_BEHIND); + r = add_op(reg, OP_LOOK_BEHIND); if (r != 0) return r; if (node->char_len < 0) { - r = get_char_length_tree(NODE_ANCHOR_BODY(node), reg, &n); + r = get_char_len_node(NODE_ANCHOR_BODY(node), reg, &n); if (r != 0) return ONIGERR_INVALID_LOOK_BEHIND_PATTERN; } else n = node->char_len; - r = add_length(reg, n); - if (r != 0) return r; + COP(reg)->look_behind.len = n; r = compile_tree(NODE_ANCHOR_BODY(node), reg, env); } break; - case ANCHOR_LOOK_BEHIND_NOT: + case ANCR_LOOK_BEHIND_NOT: { int n; 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); + r = add_op(reg, OP_LOOK_BEHIND_NOT_START); if (r != 0) return r; + COP(reg)->look_behind_not_start.addr = SIZE_INC_OP + len + SIZE_OP_LOOK_BEHIND_NOT_END; + if (node->char_len < 0) { - r = get_char_length_tree(NODE_ANCHOR_BODY(node), reg, &n); + r = get_char_len_node(NODE_ANCHOR_BODY(node), reg, &n); if (r != 0) return ONIGERR_INVALID_LOOK_BEHIND_PATTERN; } else n = node->char_len; - r = add_length(reg, n); - if (r != 0) return r; + + COP(reg)->look_behind_not_start.len = n; + r = compile_tree(NODE_ANCHOR_BODY(node), reg, env); if (r != 0) return r; - r = add_opcode(reg, OP_LOOK_BEHIND_NOT_END); + r = add_op(reg, OP_LOOK_BEHIND_NOT_END); } break; @@ -1455,31 +1712,21 @@ compile_gimmick_node(GimmickNode* node, regex_t* reg) 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); + r = add_op(reg, OP_FAIL); 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); + r = add_op(reg, OP_PUSH_SAVE_VAL); if (r != 0) return r; - r = add_mem_num(reg, node->id); + COP(reg)->push_save_val.type = node->detail_type; + COP(reg)->push_save_val.id = node->id; break; case GIMMICK_UPDATE_VAR: - r = add_opcode(reg, OP_UPDATE_VAR); + r = add_op(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); + COP(reg)->update_var.type = node->detail_type; + COP(reg)->update_var.id = node->id; break; #ifdef USE_CALLOUT @@ -1488,15 +1735,17 @@ compile_gimmick_node(GimmickNode* node, regex_t* reg) 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); + r = add_op(reg, OP_CALLOUT_NAME); if (r != 0) return r; + COP(reg)->callout_name.id = node->id; + COP(reg)->callout_name.num = node->num; + } + else { + r = add_op(reg, OP_CALLOUT_CONTENTS); + if (r != 0) return r; + COP(reg)->callout_contents.num = node->num; } - r = add_mem_num(reg, node->num); - if (r != 0) return r; } break; @@ -1520,7 +1769,6 @@ compile_length_gimmick_node(GimmickNode* node, regex_t* reg) len = SIZE_OP_FAIL; break; - case GIMMICK_KEEP: case GIMMICK_SAVE: len = SIZE_OP_PUSH_SAVE_VAL; break; @@ -1595,35 +1843,7 @@ compile_length_tree(Node* node, regex_t* reg) break; case NODE_BACKREF: - { - BackRefNode* br = BACKREF_(node); - - if (NODE_IS_CHECKER(node)) { -#ifdef USE_BACKREF_WITH_LEVEL - if (NODE_IS_NEST_LEVEL(node)) { - r = SIZE_OPCODE + SIZE_LENGTH + SIZE_LENGTH + (SIZE_MEMNUM * br->back_num); - } - else -#endif - r = SIZE_OPCODE + SIZE_LENGTH + (SIZE_MEMNUM * br->back_num); - } - else { -#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); - } - } - } + r = SIZE_OP_BACKREF; break; #ifdef USE_CALL @@ -1636,8 +1856,8 @@ compile_length_tree(Node* node, regex_t* reg) r = compile_length_quantifier_node(QUANT_(node), reg); break; - case NODE_ENCLOSURE: - r = compile_length_enclosure_node(ENCLOSURE_(node), reg); + case NODE_BAG: + r = compile_length_bag_node(BAG_(node), reg); break; case NODE_ANCHOR: @@ -1678,21 +1898,23 @@ compile_tree(Node* node, regex_t* reg, ScanEnv* env) len += SIZE_OP_PUSH + SIZE_OP_JUMP; } } while (IS_NOT_NULL(x = NODE_CDR(x))); - pos = reg->used + len; /* goal position */ + pos = COP_CURR_OFFSET(reg) + 1 + len; /* goal position */ do { 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); + r = add_op(reg, push); if (r != 0) break; + COP(reg)->push.addr = SIZE_INC_OP + len + SIZE_OP_JUMP; } 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); + len = pos - (COP_CURR_OFFSET(reg) + 1); + r = add_op(reg, OP_JUMP); if (r != 0) break; + COP(reg)->jump.addr = len; } } while (IS_NOT_NULL(node = NODE_CDR(node))); } @@ -1715,10 +1937,8 @@ compile_tree(Node* node, regex_t* reg, ScanEnv* env) 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); + r = add_op(reg, IS_MULTILINE(CTYPE_OPTION(node, reg)) ? + OP_ANYCHAR_ML : OP_ANYCHAR); break; case ONIGENC_CTYPE_WORD: @@ -1728,7 +1948,7 @@ compile_tree(Node* node, regex_t* reg, ScanEnv* env) else { op = CTYPE_(node)->not != 0 ? OP_NO_WORD_ASCII : OP_WORD_ASCII; } - r = add_opcode(reg, op); + r = add_op(reg, op); break; default: @@ -1745,30 +1965,28 @@ compile_tree(Node* node, regex_t* reg, ScanEnv* env) if (NODE_IS_CHECKER(node)) { #ifdef USE_BACKREF_WITH_LEVEL 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); + r = add_op(reg, OP_BACKREF_CHECK_WITH_LEVEL); if (r != 0) return r; + COP(reg)->backref_general.nest_level = br->nest_level; } else #endif { - r = add_opcode(reg, OP_BACKREF_CHECK); + r = add_op(reg, OP_BACKREF_CHECK); if (r != 0) return r; } - goto add_bacref_mems; } else { #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; + if ((reg->options & ONIG_OPTION_IGNORECASE) != 0) + r = add_op(reg, OP_BACKREF_WITH_LEVEL_IC); + else + r = add_op(reg, OP_BACKREF_WITH_LEVEL); + if (r != 0) return r; + COP(reg)->backref_general.nest_level = br->nest_level; goto add_bacref_mems; } else @@ -1776,41 +1994,47 @@ compile_tree(Node* node, regex_t* reg, ScanEnv* env) if (br->back_num == 1) { n = br->back_static[0]; if (IS_IGNORECASE(reg->options)) { - r = add_opcode(reg, OP_BACKREF_N_IC); + r = add_op(reg, OP_BACKREF_N_IC); if (r != 0) return r; - r = add_mem_num(reg, n); + COP(reg)->backref_n.n1 = n; } else { switch (n) { - case 1: r = add_opcode(reg, OP_BACKREF1); break; - case 2: r = add_opcode(reg, OP_BACKREF2); break; + case 1: r = add_op(reg, OP_BACKREF1); break; + case 2: r = add_op(reg, OP_BACKREF2); break; default: - r = add_opcode(reg, OP_BACKREF_N); + r = add_op(reg, OP_BACKREF_N); if (r != 0) return r; - r = add_mem_num(reg, n); + COP(reg)->backref_n.n1 = n; break; } } } else { - int i; + int num; int* p; - if (IS_IGNORECASE(reg->options)) { - r = add_opcode(reg, OP_BACKREF_MULTI_IC); - } - else { - r = add_opcode(reg, OP_BACKREF_MULTI); - } + r = add_op(reg, IS_IGNORECASE(reg->options) ? + OP_BACKREF_MULTI_IC : 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; + num = br->back_num; + COP(reg)->backref_general.num = num; + if (num == 1) { + COP(reg)->backref_general.n1 = br->back_static[0]; + } + else { + int i, j; + MemNumType* ns; + + ns = xmalloc(sizeof(MemNumType) * num); + CHECK_NULL_RETURN_MEMERR(ns); + COP(reg)->backref_general.ns = ns; + p = BACKREFS_P(br); + for (i = num - 1, j = 0; i >= 0; i--, j++) { + ns[j] = p[i]; + } } } } @@ -1827,8 +2051,8 @@ compile_tree(Node* node, regex_t* reg, ScanEnv* env) r = compile_quantifier_node(QUANT_(node), reg, env); break; - case NODE_ENCLOSURE: - r = compile_enclosure_node(ENCLOSURE_(node), reg, env); + case NODE_BAG: + r = compile_bag_node(BAG_(node), reg, env); break; case NODE_ANCHOR: @@ -1874,10 +2098,10 @@ noname_disable_map(Node** plink, GroupNumRemap* map, int* counter) } break; - case NODE_ENCLOSURE: + case NODE_BAG: { - EnclosureNode* en = ENCLOSURE_(node); - if (en->type == ENCLOSURE_MEMORY) { + BagNode* en = BAG_(node); + if (en->type == BAG_MEMORY) { if (NODE_IS_NAMED_GROUP(node)) { (*counter)++; map[en->m.regnum].new_val = *counter; @@ -1891,8 +2115,8 @@ noname_disable_map(Node** plink, GroupNumRemap* map, int* counter) r = noname_disable_map(plink, map, counter); } } - else if (en->type == ENCLOSURE_IF_ELSE) { - r = noname_disable_map(&(NODE_ENCLOSURE_BODY(en)), map, counter); + else if (en->type == BAG_IF_ELSE) { + r = noname_disable_map(&(NODE_BAG_BODY(en)), map, counter); if (r != 0) return r; if (IS_NOT_NULL(en->te.Then)) { r = noname_disable_map(&(en->te.Then), map, counter); @@ -1965,14 +2189,14 @@ renumber_by_map(Node* node, GroupNumRemap* map) r = renumber_by_map(NODE_BODY(node), map); break; - case NODE_ENCLOSURE: + case NODE_BAG: { - EnclosureNode* en = ENCLOSURE_(node); + BagNode* en = BAG_(node); r = renumber_by_map(NODE_BODY(node), map); if (r != 0) return r; - if (en->type == ENCLOSURE_IF_ELSE) { + if (en->type == BAG_IF_ELSE) { if (IS_NOT_NULL(en->te.Then)) { r = renumber_by_map(en->te.Then, map); if (r != 0) return r; @@ -2022,14 +2246,14 @@ numbered_ref_check(Node* node) r = numbered_ref_check(NODE_BODY(node)); break; - case NODE_ENCLOSURE: + case NODE_BAG: { - EnclosureNode* en = ENCLOSURE_(node); + BagNode* en = BAG_(node); r = numbered_ref_check(NODE_BODY(node)); if (r != 0) return r; - if (en->type == ENCLOSURE_IF_ELSE) { + if (en->type == BAG_IF_ELSE) { if (IS_NOT_NULL(en->te.Then)) { r = numbered_ref_check(en->te.Then); if (r != 0) return r; @@ -2102,18 +2326,20 @@ static int fix_unset_addr_list(UnsetAddrList* uslist, regex_t* reg) { int i, offset; - EnclosureNode* en; + BagNode* en; AbsAddrType addr; + AbsAddrType* paddr; for (i = 0; i < uslist->num; i++) { if (! NODE_IS_ADDR_FIXED(uslist->us[i].target)) return ONIGERR_PARSER_BUG; - en = ENCLOSURE_(uslist->us[i].target); + en = BAG_(uslist->us[i].target); addr = en->m.called_addr; offset = uslist->us[i].offset; - BB_WRITE(reg, offset, &addr, SIZE_ABSADDR); + paddr = (AbsAddrType* )((char* )reg->ops + offset); + *paddr = addr; } return 0; } @@ -2125,7 +2351,7 @@ fix_unset_addr_list(UnsetAddrList* uslist, regex_t* reg) /* fixed size pattern node only */ static int -get_char_length_tree1(Node* node, regex_t* reg, int* len, int level) +get_char_len_node1(Node* node, regex_t* reg, int* len, int level) { int tlen; int r = 0; @@ -2135,7 +2361,7 @@ get_char_length_tree1(Node* node, regex_t* reg, int* len, int level) switch (NODE_TYPE(node)) { case NODE_LIST: do { - r = get_char_length_tree1(NODE_CAR(node), reg, &tlen, level); + r = get_char_len_node1(NODE_CAR(node), reg, &tlen, level); if (r == 0) *len = distance_add(*len, tlen); } while (r == 0 && IS_NOT_NULL(node = NODE_CDR(node))); @@ -2146,9 +2372,9 @@ get_char_length_tree1(Node* node, regex_t* reg, int* len, int level) int tlen2; int varlen = 0; - r = get_char_length_tree1(NODE_CAR(node), reg, &tlen, level); + r = get_char_len_node1(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); + r = get_char_len_node1(NODE_CAR(node), reg, &tlen2, level); if (r == 0) { if (tlen != tlen2) varlen = 1; @@ -2188,7 +2414,7 @@ get_char_length_tree1(Node* node, regex_t* reg, int* len, int level) *len = 0; } else { - r = get_char_length_tree1(NODE_BODY(node), reg, &tlen, level); + r = get_char_len_node1(NODE_BODY(node), reg, &tlen, level); if (r == 0) *len = distance_multiply(tlen, qn->lower); } @@ -2201,7 +2427,7 @@ get_char_length_tree1(Node* node, regex_t* reg, int* len, int level) #ifdef USE_CALL case NODE_CALL: if (! NODE_IS_RECURSION(node)) - r = get_char_length_tree1(NODE_BODY(node), reg, len, level); + r = get_char_len_node1(NODE_BODY(node), reg, len, level); else r = GET_CHAR_LEN_VARLEN; break; @@ -2212,17 +2438,17 @@ get_char_length_tree1(Node* node, regex_t* reg, int* len, int level) *len = 1; break; - case NODE_ENCLOSURE: + case NODE_BAG: { - EnclosureNode* en = ENCLOSURE_(node); + BagNode* en = BAG_(node); switch (en->type) { - case ENCLOSURE_MEMORY: + case BAG_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); + r = get_char_len_node1(NODE_BODY(node), reg, len, level); if (r == 0) { en->char_len = *len; NODE_STATUS_ADD(node, CLEN_FIXED); @@ -2230,23 +2456,23 @@ get_char_length_tree1(Node* node, regex_t* reg, int* len, int level) } break; #endif - case ENCLOSURE_OPTION: - case ENCLOSURE_STOP_BACKTRACK: - r = get_char_length_tree1(NODE_BODY(node), reg, len, level); + case BAG_OPTION: + case BAG_STOP_BACKTRACK: + r = get_char_len_node1(NODE_BODY(node), reg, len, level); break; - case ENCLOSURE_IF_ELSE: + case BAG_IF_ELSE: { int clen, elen; - r = get_char_length_tree1(NODE_BODY(node), reg, &clen, level); + r = get_char_len_node1(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); + r = get_char_len_node1(en->te.Then, reg, &tlen, level); if (r != 0) break; } else tlen = 0; if (IS_NOT_NULL(en->te.Else)) { - r = get_char_length_tree1(en->te.Else, reg, &elen, level); + r = get_char_len_node1(en->te.Else, reg, &elen, level); if (r != 0) break; } else elen = 0; @@ -2260,9 +2486,6 @@ get_char_length_tree1(Node* node, regex_t* reg, int* len, int level) } } break; - - default: - break; } } break; @@ -2284,9 +2507,9 @@ get_char_length_tree1(Node* node, regex_t* reg, int* len, int level) } static int -get_char_length_tree(Node* node, regex_t* reg, int* len) +get_char_len_node(Node* node, regex_t* reg, int* len) { - return get_char_length_tree1(node, reg, len, 0); + return get_char_len_node1(node, reg, len, 0); } /* x is not included y ==> 1 : 0 */ @@ -2453,7 +2676,7 @@ is_exclusive(Node* x, Node* y, regex_t* reg) code = ONIGENC_MBC_TO_CODE(reg->enc, xs->s, xs->s + ONIGENC_MBC_MAXLEN(reg->enc)); - return (onig_is_code_in_cc(reg->enc, code, cc) != 0 ? 0 : 1); + return onig_is_code_in_cc(reg->enc, code, cc) == 0; } break; @@ -2523,10 +2746,8 @@ get_head_value_node(Node* node, int exact, regex_t* reg) if (sn->end <= sn->s) break; - if (exact != 0 && - !NODE_STRING_IS_RAW(node) && IS_IGNORECASE(reg->options)) { - } - else { + if (exact == 0 || + ! IS_IGNORECASE(reg->options) || NODE_STRING_IS_RAW(node)) { n = node; } } @@ -2544,23 +2765,23 @@ get_head_value_node(Node* node, int exact, regex_t* reg) } break; - case NODE_ENCLOSURE: + case NODE_BAG: { - EnclosureNode* en = ENCLOSURE_(node); + BagNode* en = BAG_(node); switch (en->type) { - case ENCLOSURE_OPTION: + case BAG_OPTION: { OnigOptionType options = reg->options; - reg->options = ENCLOSURE_(node)->o.options; + reg->options = BAG_(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: + case BAG_MEMORY: + case BAG_STOP_BACKTRACK: + case BAG_IF_ELSE: n = get_head_value_node(NODE_BODY(node), exact, reg); break; } @@ -2568,7 +2789,7 @@ get_head_value_node(Node* node, int exact, regex_t* reg) break; case NODE_ANCHOR: - if (ANCHOR_(node)->type == ANCHOR_PREC_READ) + if (ANCHOR_(node)->type == ANCR_PREC_READ) n = get_head_value_node(NODE_BODY(node), exact, reg); break; @@ -2581,7 +2802,7 @@ get_head_value_node(Node* node, int exact, regex_t* reg) } static int -check_type_tree(Node* node, int type_mask, int enclosure_mask, int anchor_mask) +check_type_tree(Node* node, int type_mask, int bag_mask, int anchor_mask) { NodeType type; int r = 0; @@ -2594,29 +2815,28 @@ check_type_tree(Node* node, int type_mask, int enclosure_mask, int anchor_mask) case NODE_LIST: case NODE_ALT: do { - r = check_type_tree(NODE_CAR(node), type_mask, enclosure_mask, - anchor_mask); + r = check_type_tree(NODE_CAR(node), type_mask, bag_mask, anchor_mask); } while (r == 0 && IS_NOT_NULL(node = NODE_CDR(node))); break; case NODE_QUANT: - r = check_type_tree(NODE_BODY(node), type_mask, enclosure_mask, anchor_mask); + r = check_type_tree(NODE_BODY(node), type_mask, bag_mask, anchor_mask); break; - case NODE_ENCLOSURE: + case NODE_BAG: { - EnclosureNode* en = ENCLOSURE_(node); - if (((1<type) & enclosure_mask) == 0) + BagNode* en = BAG_(node); + if (((1<type) & bag_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) { + r = check_type_tree(NODE_BODY(node), type_mask, bag_mask, anchor_mask); + if (r == 0 && en->type == BAG_IF_ELSE) { if (IS_NOT_NULL(en->te.Then)) { - r = check_type_tree(en->te.Then, type_mask, enclosure_mask, anchor_mask); + r = check_type_tree(en->te.Then, type_mask, bag_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); + r = check_type_tree(en->te.Else, type_mask, bag_mask, anchor_mask); } } } @@ -2628,7 +2848,7 @@ check_type_tree(Node* node, int type_mask, int enclosure_mask, int anchor_mask) return 1; if (IS_NOT_NULL(NODE_BODY(node))) - r = check_type_tree(NODE_BODY(node), type_mask, enclosure_mask, anchor_mask); + r = check_type_tree(NODE_BODY(node), type_mask, bag_mask, anchor_mask); break; case NODE_GIMMICK: @@ -2669,7 +2889,7 @@ tree_min_len(Node* node, ScanEnv* env) Node* t = NODE_BODY(node); if (NODE_IS_RECURSION(node)) { if (NODE_IS_MIN_FIXED(t)) - len = ENCLOSURE_(t)->min_len; + len = BAG_(t)->min_len; } else len = tree_min_len(t, env); @@ -2720,11 +2940,11 @@ tree_min_len(Node* node, ScanEnv* env) } break; - case NODE_ENCLOSURE: + case NODE_BAG: { - EnclosureNode* en = ENCLOSURE_(node); + BagNode* en = BAG_(node); switch (en->type) { - case ENCLOSURE_MEMORY: + case BAG_MEMORY: if (NODE_IS_MIN_FIXED(node)) len = en->min_len; else { @@ -2741,11 +2961,11 @@ tree_min_len(Node* node, ScanEnv* env) } break; - case ENCLOSURE_OPTION: - case ENCLOSURE_STOP_BACKTRACK: + case BAG_OPTION: + case BAG_STOP_BACKTRACK: len = tree_min_len(NODE_BODY(node), env); break; - case ENCLOSURE_IF_ELSE: + case BAG_IF_ELSE: { OnigLen elen; @@ -2848,7 +3068,7 @@ tree_max_len(Node* node, ScanEnv* env) if (qn->upper != 0) { len = tree_max_len(NODE_BODY(node), env); if (len != 0) { - if (! IS_REPEAT_INFINITE(qn->upper)) + if (! IS_INFINITE_REPEAT(qn->upper)) len = distance_multiply(len, qn->upper); else len = INFINITE_LEN; @@ -2857,11 +3077,11 @@ tree_max_len(Node* node, ScanEnv* env) } break; - case NODE_ENCLOSURE: + case NODE_BAG: { - EnclosureNode* en = ENCLOSURE_(node); + BagNode* en = BAG_(node); switch (en->type) { - case ENCLOSURE_MEMORY: + case BAG_MEMORY: if (NODE_IS_MAX_FIXED(node)) len = en->max_len; else { @@ -2878,11 +3098,11 @@ tree_max_len(Node* node, ScanEnv* env) } break; - case ENCLOSURE_OPTION: - case ENCLOSURE_STOP_BACKTRACK: + case BAG_OPTION: + case BAG_STOP_BACKTRACK: len = tree_max_len(NODE_BODY(node), env); break; - case ENCLOSURE_IF_ELSE: + case BAG_IF_ELSE: { OnigLen tlen, elen; @@ -2934,12 +3154,12 @@ check_backrefs(Node* node, ScanEnv* env) r = check_backrefs(NODE_BODY(node), env); break; - case NODE_ENCLOSURE: + case NODE_BAG: r = check_backrefs(NODE_BODY(node), env); { - EnclosureNode* en = ENCLOSURE_(node); + BagNode* en = BAG_(node); - if (en->type == ENCLOSURE_IF_ELSE) { + if (en->type == BAG_IF_ELSE) { if (r != 0) return r; if (IS_NOT_NULL(en->te.Then)) { r = check_backrefs(en->te.Then, env); @@ -3042,11 +3262,11 @@ infinite_recursive_call_check(Node* node, ScanEnv* env, int head) r = infinite_recursive_call_check(NODE_BODY(node), env, head); break; - case NODE_ENCLOSURE: + case NODE_BAG: { - EnclosureNode* en = ENCLOSURE_(node); + BagNode* en = BAG_(node); - if (en->type == ENCLOSURE_MEMORY) { + if (en->type == BAG_MEMORY) { if (NODE_IS_MARK2(node)) return 0; else if (NODE_IS_MARK1(node)) @@ -3058,7 +3278,7 @@ infinite_recursive_call_check(Node* node, ScanEnv* env, int head) NODE_STATUS_REMOVE(node, MARK2); } } - else if (en->type == ENCLOSURE_IF_ELSE) { + else if (en->type == BAG_IF_ELSE) { int eret; ret = infinite_recursive_call_check(NODE_BODY(node), env, head); @@ -3119,11 +3339,11 @@ infinite_recursive_call_check_trav(Node* node, ScanEnv* env) r = infinite_recursive_call_check_trav(NODE_BODY(node), env); break; - case NODE_ENCLOSURE: + case NODE_BAG: { - EnclosureNode* en = ENCLOSURE_(node); + BagNode* en = BAG_(node); - if (en->type == ENCLOSURE_MEMORY) { + if (en->type == BAG_MEMORY) { if (NODE_IS_RECURSION(node) && NODE_IS_CALLED(node)) { int ret; @@ -3137,7 +3357,7 @@ infinite_recursive_call_check_trav(Node* node, ScanEnv* env) NODE_STATUS_REMOVE(node, MARK1); } } - else if (en->type == ENCLOSURE_IF_ELSE) { + else if (en->type == BAG_IF_ELSE) { if (IS_NOT_NULL(en->te.Then)) { r = infinite_recursive_call_check_trav(en->te.Then, env); if (r != 0) return r; @@ -3192,11 +3412,11 @@ recursive_call_check(Node* node) } break; - case NODE_ENCLOSURE: + case NODE_BAG: { - EnclosureNode* en = ENCLOSURE_(node); + BagNode* en = BAG_(node); - if (en->type == ENCLOSURE_MEMORY) { + if (en->type == BAG_MEMORY) { if (NODE_IS_MARK2(node)) return 0; else if (NODE_IS_MARK1(node)) @@ -3207,7 +3427,7 @@ recursive_call_check(Node* node) NODE_STATUS_REMOVE(node, MARK2); } } - else if (en->type == ENCLOSURE_IF_ELSE) { + else if (en->type == BAG_IF_ELSE) { r = 0; if (IS_NOT_NULL(en->te.Then)) { r |= recursive_call_check(en->te.Then); @@ -3268,13 +3488,13 @@ recursive_call_check_trav(Node* node, ScanEnv* env, int state) } break; - case NODE_ENCLOSURE: + case NODE_BAG: { int ret; int state1; - EnclosureNode* en = ENCLOSURE_(node); + BagNode* en = BAG_(node); - if (en->type == ENCLOSURE_MEMORY) { + if (en->type == BAG_MEMORY) { if (NODE_IS_CALLED(node) || (state & IN_RECURSION) != 0) { if (! NODE_IS_RECURSION(node)) { NODE_STATUS_ADD(node, MARK1); @@ -3297,7 +3517,7 @@ recursive_call_check_trav(Node* node, ScanEnv* env, int state) if (ret == FOUND_CALLED_NODE) r = FOUND_CALLED_NODE; - if (en->type == ENCLOSURE_IF_ELSE) { + if (en->type == BAG_IF_ELSE) { if (IS_NOT_NULL(en->te.Then)) { ret = recursive_call_check_trav(en->te.Then, env, state1); if (ret == FOUND_CALLED_NODE) @@ -3321,6 +3541,15 @@ recursive_call_check_trav(Node* node, ScanEnv* env, int state) #endif +#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) +#define IN_LOOK_BEHIND (1<<6) + + /* divide different length alternatives in look-behind. (?<=A|B) ==> (?<=A)|(?<=B) (? (? list */ @@ -3361,7 +3590,7 @@ setup_look_behind(Node* node, regex_t* reg, ScanEnv* env) int r, len; AnchorNode* an = ANCHOR_(node); - r = get_char_length_tree(NODE_ANCHOR_BODY(an), reg, &len); + r = get_char_len_node(NODE_ANCHOR_BODY(an), reg, &len); if (r == 0) an->char_len = len; else if (r == GET_CHAR_LEN_VARLEN) @@ -3385,7 +3614,7 @@ next_setup(Node* node, Node* next_node, regex_t* reg) type = NODE_TYPE(node); if (type == NODE_QUANT) { QuantNode* qn = QUANT_(node); - if (qn->greedy && IS_REPEAT_INFINITE(qn->upper)) { + if (qn->greedy && IS_INFINITE_REPEAT(qn->upper)) { #ifdef USE_QUANT_PEEK_NEXT Node* n = get_head_value_node(next_node, 1, reg); /* '\0': for UTF-16BE etc... */ @@ -3395,15 +3624,15 @@ next_setup(Node* node, Node* next_node, regex_t* reg) #endif /* automatic posseivation a*b ==> (?>a*)b */ if (qn->lower <= 1) { - if (NODE_IS_SIMPLE_TYPE(NODE_BODY(node))) { + if (is_strict_real_node(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); + Node* en = onig_node_new_bag(BAG_STOP_BACKTRACK); CHECK_NULL_RETURN_MEMERR(en); - NODE_STATUS_ADD(en, STOP_BT_SIMPLE_REPEAT); + NODE_STATUS_ADD(en, STRICT_REAL_REPEAT); swap_node(node, en); NODE_BODY(node) = en; } @@ -3412,9 +3641,9 @@ next_setup(Node* node, Node* next_node, regex_t* reg) } } } - else if (type == NODE_ENCLOSURE) { - EnclosureNode* en = ENCLOSURE_(node); - if (en->type == ENCLOSURE_MEMORY) { + else if (type == NODE_BAG) { + BagNode* en = BAG_(node); + if (en->type == BAG_MEMORY) { node = NODE_BODY(node); goto retry; } @@ -3530,7 +3759,7 @@ expand_case_fold_string_alt(int item_num, OnigCaseFoldCodeItem items[], UChar *p for (i = 0; i < item_num; i++) { snode = onig_node_new_str(NULL, NULL); if (IS_NULL(snode)) goto mem_err; - + for (j = 0; j < items[i].code_len; j++) { len = ONIGENC_CODE_TO_MBC(reg->enc, items[i].code[j], buf); if (len < 0) { @@ -3603,37 +3832,69 @@ expand_case_fold_string_alt(int item_num, OnigCaseFoldCodeItem items[], UChar *p } static int -expand_case_fold_string(Node* node, regex_t* reg) +is_good_case_fold_items_for_search(OnigEncoding enc, int slen, + int n, OnigCaseFoldCodeItem items[]) { + int i, len; + UChar buf[ONIGENC_MBC_CASE_FOLD_MAXLEN]; + + for (i = 0; i < n; i++) { + OnigCaseFoldCodeItem* item = items + i; + + if (item->code_len != 1) return 0; + if (item->byte_len != slen) return 0; + len = ONIGENC_CODE_TO_MBC(enc, item->code[0], buf); + if (len != slen) return 0; + } + + return 1; +} + #define THRESHOLD_CASE_FOLD_ALT_FOR_EXPANSION 8 +static int +expand_case_fold_string(Node* node, regex_t* reg, int state) +{ int r, n, len, alt_num; + int fold_len; + int prev_is_ambig, prev_is_good, is_good, is_in_look_behind; UChar *start, *end, *p; + UChar* foldp; Node *top_root, *root, *snode, *prev_node; OnigCaseFoldCodeItem items[ONIGENC_GET_CASE_FOLD_CODES_MAX_NUM]; - StrNode* sn = STR_(node); + UChar buf[ONIGENC_MBC_CASE_FOLD_MAXLEN]; + StrNode* sn; if (NODE_STRING_IS_AMBIG(node)) return 0; + sn = STR_(node); + start = sn->s; end = sn->end; if (start >= end) return 0; + is_in_look_behind = (state & IN_LOOK_BEHIND) != 0; + r = 0; top_root = root = prev_node = snode = NULL_NODE; 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; } len = enclen(reg->enc, p); + is_good = is_good_case_fold_items_for_search(reg->enc, len, n, items); - if (n == 0) { + if (is_in_look_behind || + (IS_NOT_NULL(snode) || + (is_good + /* expand single char case: ex. /(?i:a)/ */ + && !(p == start && p + len >= end)))) { if (IS_NULL(snode)) { if (IS_NULL(root) && IS_NOT_NULL(prev_node)) { top_root = root = onig_node_list_add(NULL_NODE, prev_node); @@ -3651,10 +3912,49 @@ expand_case_fold_string(Node* node, regex_t* reg) goto mem_err; } } + + prev_is_ambig = -1; /* -1: new */ + prev_is_good = 0; /* escape compiler warning */ + } + else { + prev_is_ambig = NODE_STRING_IS_AMBIG(snode); + prev_is_good = NODE_STRING_IS_GOOD_AMBIG(snode); } - r = onig_node_str_cat(snode, p, p + len); - if (r != 0) goto err; + if (n != 0) { + foldp = p; + fold_len = ONIGENC_MBC_CASE_FOLD(reg->enc, reg->case_fold_flag, + &foldp, end, buf); + foldp = buf; + } + else { + foldp = p; fold_len = len; + } + + if ((prev_is_ambig == 0 && n != 0) || + (prev_is_ambig > 0 && (n == 0 || prev_is_good != is_good))) { + 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(foldp, foldp + fold_len); + if (IS_NULL(snode)) goto mem_err; + if (IS_NULL(onig_node_list_add(root, snode))) { + onig_node_free(snode); + goto mem_err; + } + } + else { + r = onig_node_str_cat(snode, foldp, foldp + fold_len); + if (r != 0) goto err; + } + + if (n != 0) NODE_STRING_SET_AMBIG(snode); + if (is_good != 0) NODE_STRING_SET_GOOD_AMBIG(snode); } else { alt_num *= (n + 1); @@ -3738,11 +4038,11 @@ expand_case_fold_string(Node* node, regex_t* reg) return r; } -#ifdef USE_INSISTENT_CHECK_CAPTURES_IN_EMPTY_REPEAT -static enum QuantBodyEmpty +#ifdef USE_STUBBORN_CHECK_CAPTURES_IN_EMPTY_REPEAT +static enum BodyEmptyType quantifiers_memory_node_info(Node* node) { - int r = QUANT_BODY_IS_EMPTY; + int r = BODY_IS_EMPTY_POSSIBILITY; switch (NODE_TYPE(node)) { case NODE_LIST: @@ -3759,7 +4059,7 @@ quantifiers_memory_node_info(Node* node) #ifdef USE_CALL case NODE_CALL: if (NODE_IS_RECURSION(node)) { - return QUANT_BODY_IS_EMPTY_REC; /* tiny version */ + return BODY_IS_EMPTY_POSSIBILITY_REC; /* tiny version */ } else r = quantifiers_memory_node_info(NODE_BODY(node)); @@ -3775,22 +4075,22 @@ quantifiers_memory_node_info(Node* node) } break; - case NODE_ENCLOSURE: + case NODE_BAG: { - EnclosureNode* en = ENCLOSURE_(node); + BagNode* en = BAG_(node); switch (en->type) { - case ENCLOSURE_MEMORY: + case BAG_MEMORY: if (NODE_IS_RECURSION(node)) { - return QUANT_BODY_IS_EMPTY_REC; + return BODY_IS_EMPTY_POSSIBILITY_REC; } - return QUANT_BODY_IS_EMPTY_MEM; + return BODY_IS_EMPTY_POSSIBILITY_MEM; break; - case ENCLOSURE_OPTION: - case ENCLOSURE_STOP_BACKTRACK: + case BAG_OPTION: + case BAG_STOP_BACKTRACK: r = quantifiers_memory_node_info(NODE_BODY(node)); break; - case ENCLOSURE_IF_ELSE: + case BAG_IF_ELSE: { int v; r = quantifiers_memory_node_info(NODE_BODY(node)); @@ -3804,8 +4104,6 @@ quantifiers_memory_node_info(Node* node) } } break; - default: - break; } } break; @@ -3822,15 +4120,8 @@ quantifiers_memory_node_info(Node* node) return r; } -#endif /* USE_INSISTENT_CHECK_CAPTURES_IN_EMPTY_REPEAT */ - +#endif /* USE_STUBBORN_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 @@ -3908,18 +4199,18 @@ setup_call2_call(Node* node) setup_call2_call(NODE_BODY(node)); break; - case NODE_ENCLOSURE: + case NODE_BAG: { - EnclosureNode* en = ENCLOSURE_(node); + BagNode* en = BAG_(node); - if (en->type == ENCLOSURE_MEMORY) { + if (en->type == BAG_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) { + else if (en->type == BAG_IF_ELSE) { setup_call2_call(NODE_BODY(node)); if (IS_NOT_NULL(en->te.Then)) setup_call2_call(en->te.Then); @@ -3942,7 +4233,7 @@ setup_call2_call(Node* node) cn->entry_count++; NODE_STATUS_ADD(called, CALLED); - ENCLOSURE_(called)->m.entry_count++; + BAG_(called)->m.entry_count++; setup_call2_call(called); } NODE_STATUS_REMOVE(node, MARK1); @@ -3981,18 +4272,18 @@ setup_call(Node* node, ScanEnv* env, int state) r = 0; break; - case NODE_ENCLOSURE: + case NODE_BAG: { - EnclosureNode* en = ENCLOSURE_(node); + BagNode* en = BAG_(node); - if (en->type == ENCLOSURE_MEMORY) { + if (en->type == BAG_MEMORY) { if ((state & IN_ZERO_REPEAT) != 0) { NODE_STATUS_ADD(node, IN_ZERO_REPEAT); - ENCLOSURE_(node)->m.entry_count--; + BAG_(node)->m.entry_count--; } r = setup_call(NODE_BODY(node), env, state); } - else if (en->type == ENCLOSURE_IF_ELSE) { + else if (en->type == BAG_IF_ELSE) { r = setup_call(NODE_BODY(node), env, state); if (r != 0) return r; if (IS_NOT_NULL(en->te.Then)) { @@ -4047,15 +4338,15 @@ setup_call2(Node* node) r = setup_call2(NODE_BODY(node)); break; - case NODE_ENCLOSURE: + case NODE_BAG: if (! NODE_IS_IN_ZERO_REPEAT(node)) r = setup_call2(NODE_BODY(node)); { - EnclosureNode* en = ENCLOSURE_(node); + BagNode* en = BAG_(node); if (r != 0) return r; - if (en->type == ENCLOSURE_IF_ELSE) { + if (en->type == BAG_IF_ELSE) { if (IS_NOT_NULL(en->te.Then)) { r = setup_call2(en->te.Then); if (r != 0) return r; @@ -4097,7 +4388,7 @@ setup_called_state_call(Node* node, int state) { QuantNode* qn = QUANT_(node); - if (IS_REPEAT_INFINITE(qn->upper) || qn->upper >= 2) + if (IS_INFINITE_REPEAT(qn->upper) || qn->upper >= 2) state |= IN_REAL_REPEAT; if (qn->lower != qn->upper) state |= IN_VAR_REPEAT; @@ -4111,12 +4402,12 @@ setup_called_state_call(Node* node, int state) AnchorNode* an = ANCHOR_(node); switch (an->type) { - case ANCHOR_PREC_READ_NOT: - case ANCHOR_LOOK_BEHIND_NOT: + case ANCR_PREC_READ_NOT: + case ANCR_LOOK_BEHIND_NOT: state |= IN_NOT; /* fall */ - case ANCHOR_PREC_READ: - case ANCHOR_LOOK_BEHIND: + case ANCR_PREC_READ: + case ANCR_LOOK_BEHIND: setup_called_state_call(NODE_ANCHOR_BODY(an), state); break; default: @@ -4125,11 +4416,11 @@ setup_called_state_call(Node* node, int state) } break; - case NODE_ENCLOSURE: + case NODE_BAG: { - EnclosureNode* en = ENCLOSURE_(node); + BagNode* en = BAG_(node); - if (en->type == ENCLOSURE_MEMORY) { + if (en->type == BAG_MEMORY) { if (NODE_IS_MARK1(node)) { if ((~en->m.called_state & state) != 0) { en->m.called_state |= state; @@ -4143,7 +4434,7 @@ setup_called_state_call(Node* node, int state) NODE_STATUS_REMOVE(node, MARK1); } } - else if (en->type == ENCLOSURE_IF_ELSE) { + else if (en->type == BAG_IF_ELSE) { if (IS_NOT_NULL(en->te.Then)) { setup_called_state_call(en->te.Then, state); } @@ -4184,22 +4475,22 @@ setup_called_state(Node* node, int state) break; #endif - case NODE_ENCLOSURE: + case NODE_BAG: { - EnclosureNode* en = ENCLOSURE_(node); + BagNode* en = BAG_(node); switch (en->type) { - case ENCLOSURE_MEMORY: + case BAG_MEMORY: if (en->m.entry_count > 1) state |= IN_MULTI_ENTRY; en->m.called_state |= state; /* fall */ - case ENCLOSURE_OPTION: - case ENCLOSURE_STOP_BACKTRACK: + case BAG_OPTION: + case BAG_STOP_BACKTRACK: setup_called_state(NODE_BODY(node), state); break; - case ENCLOSURE_IF_ELSE: + case BAG_IF_ELSE: setup_called_state(NODE_BODY(node), state); if (IS_NOT_NULL(en->te.Then)) setup_called_state(en->te.Then, state); @@ -4214,7 +4505,7 @@ setup_called_state(Node* node, int state) { QuantNode* qn = QUANT_(node); - if (IS_REPEAT_INFINITE(qn->upper) || qn->upper >= 2) + if (IS_INFINITE_REPEAT(qn->upper) || qn->upper >= 2) state |= IN_REAL_REPEAT; if (qn->lower != qn->upper) state |= IN_VAR_REPEAT; @@ -4228,12 +4519,12 @@ setup_called_state(Node* node, int state) AnchorNode* an = ANCHOR_(node); switch (an->type) { - case ANCHOR_PREC_READ_NOT: - case ANCHOR_LOOK_BEHIND_NOT: + case ANCR_PREC_READ_NOT: + case ANCR_LOOK_BEHIND_NOT: state |= IN_NOT; /* fall */ - case ANCHOR_PREC_READ: - case ANCHOR_LOOK_BEHIND: + case ANCR_PREC_READ: + case ANCR_LOOK_BEHIND: setup_called_state(NODE_ANCHOR_BODY(an), state); break; default: @@ -4266,56 +4557,55 @@ 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_CTYPE | NODE_BIT_ANCHOR | NODE_BIT_BAG | NODE_BIT_QUANT \ | NODE_BIT_CALL | NODE_BIT_GIMMICK) -#define ALLOWED_ENCLOSURE_IN_LB ( 1<type) { - case ANCHOR_PREC_READ: + case ANCR_PREC_READ: r = setup_tree(NODE_ANCHOR_BODY(an), reg, state, env); break; - case ANCHOR_PREC_READ_NOT: + case ANCR_PREC_READ_NOT: r = setup_tree(NODE_ANCHOR_BODY(an), reg, (state | IN_NOT), env); break; - case ANCHOR_LOOK_BEHIND: + case ANCR_LOOK_BEHIND: { r = check_type_tree(NODE_ANCHOR_BODY(an), ALLOWED_TYPE_IN_LB, - ALLOWED_ENCLOSURE_IN_LB, ALLOWED_ANCHOR_IN_LB); + ALLOWED_BAG_IN_LB, ALLOWED_ANCHOR_IN_LB); if (r < 0) return r; if (r > 0) return ONIGERR_INVALID_LOOK_BEHIND_PATTERN; - r = setup_tree(NODE_ANCHOR_BODY(an), reg, state, env); + r = setup_tree(NODE_ANCHOR_BODY(an), reg, (state|IN_LOOK_BEHIND), env); if (r != 0) return r; r = setup_look_behind(node, reg, env); } break; - case ANCHOR_LOOK_BEHIND_NOT: + case ANCR_LOOK_BEHIND_NOT: { r = check_type_tree(NODE_ANCHOR_BODY(an), ALLOWED_TYPE_IN_LB, - ALLOWED_ENCLOSURE_IN_LB_NOT, ALLOWED_ANCHOR_IN_LB_NOT); + ALLOWED_BAG_IN_LB_NOT, ALLOWED_ANCHOR_IN_LB_NOT); if (r < 0) return r; if (r > 0) return ONIGERR_INVALID_LOOK_BEHIND_PATTERN; - r = setup_tree(NODE_ANCHOR_BODY(an), reg, (state | IN_NOT), env); + r = setup_tree(NODE_ANCHOR_BODY(an), reg, (state|IN_NOT|IN_LOOK_BEHIND), + env); if (r != 0) return r; r = setup_look_behind(node, reg, env); } @@ -4347,24 +4637,24 @@ setup_quant(Node* node, regex_t* reg, int state, ScanEnv* env) NODE_STATUS_ADD(node, IN_MULTI_ENTRY); } - if (IS_REPEAT_INFINITE(qn->upper) || qn->upper >= 1) { + if (IS_INFINITE_REPEAT(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); +#ifdef USE_STUBBORN_CHECK_CAPTURES_IN_EMPTY_REPEAT + qn->emptiness = quantifiers_memory_node_info(body); + if (qn->emptiness == BODY_IS_EMPTY_POSSIBILITY_REC) { + if (NODE_TYPE(body) == NODE_BAG && + BAG_(body)->type == BAG_MEMORY) { + MEM_STATUS_ON(env->bt_mem_end, BAG_(body)->m.regnum); } } #else - qn->body_empty_info = QUANT_BODY_IS_EMPTY; + qn->emptiness = BODY_IS_EMPTY_POSSIBILITY; #endif } } - if (IS_REPEAT_INFINITE(qn->upper) || qn->upper >= 2) + if (IS_INFINITE_REPEAT(qn->upper) || qn->upper >= 2) state |= IN_REAL_REPEAT; if (qn->lower != qn->upper) state |= IN_VAR_REPEAT; @@ -4375,7 +4665,7 @@ setup_quant(Node* node, regex_t* reg, int state, ScanEnv* env) /* expand string */ #define EXPAND_STRING_MAX_LENGTH 100 if (NODE_TYPE(body) == NODE_STRING) { - if (!IS_REPEAT_INFINITE(qn->lower) && qn->lower == qn->upper && + if (!IS_INFINITE_REPEAT(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); @@ -4393,8 +4683,7 @@ setup_quant(Node* node, regex_t* reg, int state, ScanEnv* env) } } -#ifdef USE_OP_PUSH_OR_JUMP_EXACT - if (qn->greedy && (qn->body_empty_info != QUANT_BODY_IS_NOT_EMPTY)) { + if (qn->greedy && (qn->emptiness == BODY_IS_NOT_EMPTY)) { if (NODE_TYPE(body) == NODE_QUANT) { QuantNode* tqn = QUANT_(body); if (IS_NOT_NULL(tqn->head_exact)) { @@ -4406,13 +4695,12 @@ setup_quant(Node* node, regex_t* reg, int state, ScanEnv* env) qn->head_exact = get_head_value_node(NODE_BODY(node), 1, reg); } } -#endif return r; } /* setup_tree does the following work. - 1. check empty loop. (set qn->body_empty_info) + 1. check empty loop. (set qn->emptiness) 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]. @@ -4446,7 +4734,7 @@ setup_tree(Node* node, regex_t* reg, int state, ScanEnv* env) case NODE_STRING: if (IS_IGNORECASE(reg->options) && !NODE_STRING_IS_RAW(node)) { - r = expand_case_fold_string(node, reg); + r = expand_case_fold_string(node, reg, state); } break; @@ -4469,21 +4757,21 @@ setup_tree(Node* node, regex_t* reg, int state, ScanEnv* env) } break; - case NODE_ENCLOSURE: + case NODE_BAG: { - EnclosureNode* en = ENCLOSURE_(node); + BagNode* en = BAG_(node); switch (en->type) { - case ENCLOSURE_OPTION: + case BAG_OPTION: { OnigOptionType options = reg->options; - reg->options = ENCLOSURE_(node)->o.options; + reg->options = BAG_(node)->o.options; r = setup_tree(NODE_BODY(node), reg, state, env); reg->options = options; } break; - case ENCLOSURE_MEMORY: + case BAG_MEMORY: #ifdef USE_CALL state |= en->m.called_state; #endif @@ -4495,22 +4783,22 @@ setup_tree(Node* node, regex_t* reg, int state, ScanEnv* env) r = setup_tree(NODE_BODY(node), reg, state, env); break; - case ENCLOSURE_STOP_BACKTRACK: + case BAG_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 && + if (IS_INFINITE_REPEAT(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); + if (is_strict_real_node(NODE_BODY(target))) + NODE_STATUS_ADD(node, STRICT_REAL_REPEAT); } } } break; - case ENCLOSURE_IF_ELSE: + case BAG_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)) { @@ -4545,35 +4833,83 @@ setup_tree(Node* node, regex_t* reg, int state, ScanEnv* env) return r; } -/* 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) +set_sunday_quick_search_or_bmh_skip_table(regex_t* reg, int case_expand, + UChar* s, UChar* end, + UChar skip[], int* roffset) { - int i, len; + int i, j, k, len, offset; + int n, clen; + UChar* p; + OnigEncoding enc; + OnigCaseFoldCodeItem items[ONIGENC_GET_CASE_FOLD_CODES_MAX_NUM]; + UChar buf[ONIGENC_MBC_CASE_FOLD_MAXLEN]; + + enc = reg->enc; + offset = ENC_GET_SKIP_OFFSET(enc); + if (offset == ENC_SKIP_OFFSET_1_OR_0) { + UChar* p = s; + while (1) { + len = enclen(enc, p); + if (p + len >= end) { + if (len == 1) offset = 1; + else offset = 0; + break; + } + p += len; + } + } len = (int )(end - s); - if (len < ONIG_CHAR_TABLE_SIZE) { - for (i = 0; i < ONIG_CHAR_TABLE_SIZE; i++) skip[i] = len; + if (len + offset >= 255) + return ONIGERR_PARSER_BUG; - for (i = 0; i < len - 1; i++) - skip[s[i]] = len - 1 - i; + *roffset = offset; + + for (i = 0; i < CHAR_MAP_SIZE; i++) { + skip[i] = (UChar )(len + offset); } - else { - if (IS_NULL(*int_skip)) { - *int_skip = (int* )xmalloc(sizeof(int) * ONIG_CHAR_TABLE_SIZE); - if (IS_NULL(*int_skip)) return ONIGERR_MEMORY; + + for (p = s; p < end; ) { + int z; + + clen = enclen(enc, p); + if (p + clen > end) clen = (int )(end - p); + + len = (int )(end - p); + for (j = 0; j < clen; j++) { + z = len - j + (offset - 1); + if (z <= 0) break; + skip[p[j]] = z; + } + + if (case_expand != 0) { + n = ONIGENC_GET_CASE_FOLD_CODES_BY_STR(enc, reg->case_fold_flag, + p, end, items); + for (k = 0; k < n; k++) { + ONIGENC_CODE_TO_MBC(enc, items[k].code[0], buf); + for (j = 0; j < clen; j++) { + z = len - j + (offset - 1); + if (z <= 0) break; + if (skip[buf[j]] > z) + skip[buf[j]] = z; + } + } } - for (i = 0; i < ONIG_CHAR_TABLE_SIZE; i++) (*int_skip)[i] = len; - for (i = 0; i < len - 1; i++) - (*int_skip)[s[i]] = len - 1 - i; + p += clen; } + return 0; } + #define OPT_EXACT_MAXLEN 24 +#if OPT_EXACT_MAXLEN >= 255 +#error Too big OPT_EXACT_MAXLEN +#endif + typedef struct { OnigLen min; /* min byte length */ OnigLen max; /* max byte length */ @@ -4596,26 +4932,27 @@ typedef struct { MinMax mmd; /* position */ OptAnc anc; int reach_end; - int ignore_case; + int case_fold; + int good_case_fold; int len; UChar s[OPT_EXACT_MAXLEN]; -} OptExact; +} OptStr; typedef struct { MinMax mmd; /* position */ OptAnc anc; int value; /* weighted value */ - UChar map[ONIG_CHAR_TABLE_SIZE]; + UChar map[CHAR_MAP_SIZE]; } OptMap; typedef struct { - MinMax len; - OptAnc anc; - OptExact exb; /* boundary */ - OptExact exm; /* middle */ - OptExact expr; /* prec read (?=...) */ - OptMap map; /* boundary */ -} NodeOpt; + MinMax len; + OptAnc anc; + OptStr sb; /* boundary */ + OptStr sm; /* middle */ + OptStr spr; /* prec read (?=...) */ + OptMap map; /* boundary */ +} OptNode; static int @@ -4647,15 +4984,15 @@ distance_value(MinMax* mm) { /* 1000 / (min-max-dist + 1) */ static const short int dist_vals[] = { - 1000, 500, 333, 250, 200, 167, 143, 125, 111, 100, - 91, 83, 77, 71, 67, 63, 59, 56, 53, 50, - 48, 45, 43, 42, 40, 38, 37, 36, 34, 33, - 32, 31, 30, 29, 29, 28, 27, 26, 26, 25, - 24, 24, 23, 23, 22, 22, 21, 21, 20, 20, - 20, 19, 19, 19, 18, 18, 18, 17, 17, 17, - 16, 16, 16, 16, 15, 15, 15, 15, 14, 14, - 14, 14, 14, 14, 13, 13, 13, 13, 13, 13, - 12, 12, 12, 12, 12, 12, 11, 11, 11, 11, + 1000, 500, 333, 250, 200, 167, 143, 125, 111, 100, + 91, 83, 77, 71, 67, 63, 59, 56, 53, 50, + 48, 45, 43, 42, 40, 38, 37, 36, 34, 33, + 32, 31, 30, 29, 29, 28, 27, 26, 26, 25, + 24, 24, 23, 23, 22, 22, 21, 21, 20, 20, + 20, 19, 19, 19, 18, 18, 18, 17, 17, 17, + 16, 16, 16, 16, 15, 15, 15, 15, 14, 14, + 14, 14, 14, 14, 13, 13, 13, 13, 13, 13, + 12, 12, 12, 12, 12, 12, 11, 11, 11, 11, 11, 11, 11, 11, 11, 10, 10, 10, 10, 10 }; @@ -4691,7 +5028,7 @@ comp_distance_value(MinMax* d1, MinMax* d2, int v1, int v2) static int is_equal_mml(MinMax* a, MinMax* b) { - return (a->min == b->min && a->max == b->max) ? 1 : 0; + return a->min == b->min && a->max == b->max; } static void @@ -4763,15 +5100,15 @@ concat_opt_anc_info(OptAnc* to, OptAnc* left, OptAnc* right, to->right |= left->right; } else { - to->right |= (left->right & ANCHOR_PREC_READ_NOT); + to->right |= (left->right & ANCR_PREC_READ_NOT); } } static int is_left(int a) { - if (a == ANCHOR_END_BUF || a == ANCHOR_SEMI_END_BUF || - a == ANCHOR_END_LINE || a == ANCHOR_PREC_READ || a == ANCHOR_PREC_READ_NOT) + if (a == ANCR_END_BUF || a == ANCR_SEMI_END_BUF || + a == ANCR_END_LINE || a == ANCR_PREC_READ || a == ANCR_PREC_READ_NOT) return 0; return 1; @@ -4811,39 +5148,47 @@ alt_merge_opt_anc_info(OptAnc* to, OptAnc* add) } static int -is_full_opt_exact(OptExact* e) +is_full_opt_exact(OptStr* e) { - return (e->len >= OPT_EXACT_MAXLEN ? 1 : 0); + return e->len >= OPT_EXACT_MAXLEN; } static void -clear_opt_exact(OptExact* e) +clear_opt_exact(OptStr* e) { 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'; + e->reach_end = 0; + e->case_fold = 0; + e->good_case_fold = 0; + e->len = 0; + e->s[0] = '\0'; } static void -copy_opt_exact(OptExact* to, OptExact* from) +copy_opt_exact(OptStr* to, OptStr* from) { *to = *from; } static int -concat_opt_exact(OptExact* to, OptExact* add, OnigEncoding enc) +concat_opt_exact(OptStr* to, OptStr* add, OnigEncoding enc) { int i, j, len, r; UChar *p, *end; OptAnc tanc; - if (! to->ignore_case && add->ignore_case) { - if (to->len >= add->len) return 0; /* avoid */ + if (add->case_fold != 0) { + if (! to->case_fold) { + if (to->len > 1 || to->len >= add->len) return 0; /* avoid */ - to->ignore_case = 1; + to->case_fold = 1; + } + else { + if (to->good_case_fold != 0) { + if (add->good_case_fold == 0) return 0; + } + } } r = 0; @@ -4870,7 +5215,7 @@ concat_opt_exact(OptExact* to, OptExact* add, OnigEncoding enc) } static void -concat_opt_exact_str(OptExact* to, UChar* s, UChar* end, OnigEncoding enc) +concat_opt_exact_str(OptStr* to, UChar* s, UChar* end, OnigEncoding enc) { int i, j, len; UChar *p; @@ -4883,10 +5228,13 @@ concat_opt_exact_str(OptExact* to, UChar* s, UChar* end, OnigEncoding enc) } to->len = i; + + if (p >= end && to->len == (int )(end - s)) + to->reach_end = 1; } static void -alt_merge_opt_exact(OptExact* to, OptExact* add, OptEnv* env) +alt_merge_opt_exact(OptStr* to, OptStr* add, OptEnv* env) { int i, j, len; @@ -4915,14 +5263,17 @@ alt_merge_opt_exact(OptExact* to, OptExact* add, OptEnv* env) to->reach_end = 0; } to->len = i; - to->ignore_case |= add->ignore_case; + if (add->case_fold != 0) + to->case_fold = 1; + if (add->good_case_fold == 0) + to->good_case_fold = 0; alt_merge_opt_anc_info(&to->anc, &add->anc); if (! to->reach_end) to->anc.right = 0; } static void -select_opt_exact(OnigEncoding enc, OptExact* now, OptExact* alt) +select_opt_exact(OnigEncoding enc, OptStr* now, OptStr* alt) { int vn, va; @@ -4945,8 +5296,11 @@ select_opt_exact(OnigEncoding enc, OptExact* now, OptExact* alt) if (alt->len > 1) va += 5; } - if (now->ignore_case == 0) vn *= 2; - if (alt->ignore_case == 0) va *= 2; + if (now->case_fold == 0) vn *= 2; + if (alt->case_fold == 0) va *= 2; + + if (now->good_case_fold != 0) vn *= 4; + if (alt->good_case_fold != 0) va *= 4; if (comp_distance_value(&now->mmd, &alt->mmd, vn, va) > 0) copy_opt_exact(now, alt); @@ -5037,14 +5391,24 @@ select_opt_map(OptMap* now, OptMap* alt) } static int -comp_opt_exact_or_map(OptExact* e, OptMap* m) +comp_opt_exact_or_map(OptStr* e, OptMap* m) { #define COMP_EM_BASE 20 int ae, am; + int case_value; if (m->value <= 0) return -1; - ae = COMP_EM_BASE * e->len * (e->ignore_case ? 1 : 2); + if (e->case_fold != 0) { + if (e->good_case_fold != 0) + case_value = 2; + else + case_value = 1; + } + else + case_value = 3; + + ae = COMP_EM_BASE * e->len * case_value; am = COMP_EM_BASE * 5 * 2 / m->value; return comp_distance_value(&e->mmd, &m->mmd, ae, am); } @@ -5064,7 +5428,7 @@ alt_merge_opt_map(OnigEncoding enc, OptMap* to, OptMap* add) alt_merge_mml(&to->mmd, &add->mmd); val = 0; - for (i = 0; i < ONIG_CHAR_TABLE_SIZE; i++) { + for (i = 0; i < CHAR_MAP_SIZE; i++) { if (add->map[i]) to->map[i] = 1; @@ -5077,42 +5441,42 @@ alt_merge_opt_map(OnigEncoding enc, OptMap* to, OptMap* add) } static void -set_bound_node_opt_info(NodeOpt* opt, MinMax* plen) +set_bound_node_opt_info(OptNode* opt, MinMax* plen) { - copy_mml(&(opt->exb.mmd), plen); - copy_mml(&(opt->expr.mmd), plen); - copy_mml(&(opt->map.mmd), plen); + copy_mml(&(opt->sb.mmd), plen); + copy_mml(&(opt->spr.mmd), plen); + copy_mml(&(opt->map.mmd), plen); } static void -clear_node_opt_info(NodeOpt* opt) +clear_node_opt_info(OptNode* opt) { clear_mml(&opt->len); clear_opt_anc_info(&opt->anc); - clear_opt_exact(&opt->exb); - clear_opt_exact(&opt->exm); - clear_opt_exact(&opt->expr); + clear_opt_exact(&opt->sb); + clear_opt_exact(&opt->sm); + clear_opt_exact(&opt->spr); clear_opt_map(&opt->map); } static void -copy_node_opt_info(NodeOpt* to, NodeOpt* from) +copy_node_opt_info(OptNode* to, OptNode* from) { - xmemcpy(to,from,sizeof(NodeOpt)); + xmemcpy(to,from,sizeof(OptNode)); } static void -concat_left_node_opt_info(OnigEncoding enc, NodeOpt* to, NodeOpt* add) +concat_left_node_opt_info(OnigEncoding enc, OptNode* to, OptNode* add) { - int exb_reach, exm_reach; + int sb_reach, sm_reach; 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); - copy_opt_anc_info(&add->exb.anc, &tanc); + if (add->sb.len > 0 && to->len.max == 0) { + concat_opt_anc_info(&tanc, &to->anc, &add->sb.anc, to->len.max, add->len.max); + copy_opt_anc_info(&add->sb.anc, &tanc); } if (add->map.value > 0 && to->len.max == 0) { @@ -5120,38 +5484,38 @@ concat_left_node_opt_info(OnigEncoding enc, NodeOpt* to, NodeOpt* add) add->map.anc.left |= to->anc.left; } - exb_reach = to->exb.reach_end; - exm_reach = to->exm.reach_end; + sb_reach = to->sb.reach_end; + sm_reach = to->sm.reach_end; if (add->len.max != 0) - to->exb.reach_end = to->exm.reach_end = 0; + to->sb.reach_end = to->sm.reach_end = 0; - if (add->exb.len > 0) { - if (exb_reach) { - concat_opt_exact(&to->exb, &add->exb, enc); - clear_opt_exact(&add->exb); + if (add->sb.len > 0) { + if (sb_reach) { + concat_opt_exact(&to->sb, &add->sb, enc); + clear_opt_exact(&add->sb); } - else if (exm_reach) { - concat_opt_exact(&to->exm, &add->exb, enc); - clear_opt_exact(&add->exb); + else if (sm_reach) { + concat_opt_exact(&to->sm, &add->sb, enc); + clear_opt_exact(&add->sb); } } - select_opt_exact(enc, &to->exm, &add->exb); - select_opt_exact(enc, &to->exm, &add->exm); + select_opt_exact(enc, &to->sm, &add->sb); + select_opt_exact(enc, &to->sm, &add->sm); - if (to->expr.len > 0) { + if (to->spr.len > 0) { if (add->len.max > 0) { - if (to->expr.len > (int )add->len.max) - to->expr.len = add->len.max; + if (to->spr.len > (int )add->len.max) + to->spr.len = add->len.max; - if (to->expr.mmd.max == 0) - select_opt_exact(enc, &to->exb, &to->expr); + if (to->spr.mmd.max == 0) + select_opt_exact(enc, &to->sb, &to->spr); else - select_opt_exact(enc, &to->exm, &to->expr); + select_opt_exact(enc, &to->sm, &to->spr); } } - else if (add->expr.len > 0) { - copy_opt_exact(&to->expr, &add->expr); + else if (add->spr.len > 0) { + copy_opt_exact(&to->spr, &add->spr); } select_opt_map(&to->map, &add->map); @@ -5159,12 +5523,12 @@ concat_left_node_opt_info(OnigEncoding enc, NodeOpt* to, NodeOpt* add) } static void -alt_merge_node_opt_info(NodeOpt* to, NodeOpt* add, OptEnv* env) +alt_merge_node_opt_info(OptNode* to, OptNode* add, OptEnv* env) { 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_exact(&to->sb, &add->sb, env); + alt_merge_opt_exact(&to->sm, &add->sm, env); + alt_merge_opt_exact(&to->spr, &add->spr, env); alt_merge_opt_map(env->enc, &to->map, &add->map); alt_merge_mml(&to->len, &add->len); @@ -5174,11 +5538,11 @@ alt_merge_node_opt_info(NodeOpt* to, NodeOpt* add, OptEnv* env) #define MAX_NODE_OPT_INFO_REF_COUNT 5 static int -optimize_nodes(Node* node, NodeOpt* opt, OptEnv* env) +optimize_nodes(Node* node, OptNode* opt, OptEnv* env) { int i; int r; - NodeOpt xo; + OptNode xo; OnigEncoding enc; r = 0; @@ -5224,7 +5588,7 @@ optimize_nodes(Node* node, NodeOpt* opt, OptEnv* env) /* 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); + concat_opt_exact_str(&opt->sb, sn->s, sn->end, enc); if (slen > 0) { add_char_opt_map(&opt->map, *(sn->s), enc); } @@ -5238,8 +5602,10 @@ optimize_nodes(Node* node, NodeOpt* opt, OptEnv* env) max = ONIGENC_MBC_MAXLEN_DIST(enc) * n; } else { - concat_opt_exact_str(&opt->exb, sn->s, sn->end, enc); - opt->exb.ignore_case = 1; + concat_opt_exact_str(&opt->sb, sn->s, sn->end, enc); + opt->sb.case_fold = 1; + if (NODE_STRING_IS_GOOD_AMBIG(node)) + opt->sb.good_case_fold = 1; if (slen > 0) { r = add_char_amb_opt_map(&opt->map, sn->s, sn->end, @@ -5252,9 +5618,6 @@ optimize_nodes(Node* node, NodeOpt* opt, OptEnv* env) set_mml(&opt->len, slen, max); } - - if (opt->exb.len == slen) - opt->exb.reach_end = 1; } break; @@ -5328,27 +5691,27 @@ optimize_nodes(Node* node, NodeOpt* opt, OptEnv* env) 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: - case ANCHOR_PREC_READ_NOT: - case ANCHOR_LOOK_BEHIND: + case ANCR_BEGIN_BUF: + case ANCR_BEGIN_POSITION: + case ANCR_BEGIN_LINE: + case ANCR_END_BUF: + case ANCR_SEMI_END_BUF: + case ANCR_END_LINE: + case ANCR_PREC_READ_NOT: + case ANCR_LOOK_BEHIND: add_opt_anc_info(&opt->anc, ANCHOR_(node)->type); break; - case ANCHOR_PREC_READ: + case ANCR_PREC_READ: { 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); + if (xo.sb.len > 0) + copy_opt_exact(&opt->spr, &xo.sb); + else if (xo.sm.len > 0) + copy_opt_exact(&opt->spr, &xo.sm); - opt->expr.reach_end = 0; + opt->spr.reach_end = 0; if (xo.map.value > 0) copy_opt_map(&opt->map, &xo.map); @@ -5356,7 +5719,7 @@ optimize_nodes(Node* node, NodeOpt* opt, OptEnv* env) } break; - case ANCHOR_LOOK_BEHIND_NOT: + case ANCR_LOOK_BEHIND_NOT: break; } break; @@ -5391,7 +5754,7 @@ optimize_nodes(Node* node, NodeOpt* opt, OptEnv* env) set_mml(&opt->len, 0, INFINITE_LEN); else { OnigOptionType save = env->options; - env->options = ENCLOSURE_(NODE_BODY(node))->o.options; + env->options = BAG_(NODE_BODY(node))->o.options; r = optimize_nodes(NODE_BODY(node), opt, env); env->options = save; } @@ -5408,31 +5771,31 @@ optimize_nodes(Node* node, NodeOpt* opt, OptEnv* env) 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 (xo.sb.len > 0) { + if (xo.sb.reach_end) { + for (i = 2; i <= qn->lower && ! is_full_opt_exact(&opt->sb); i++) { + int rc = concat_opt_exact(&opt->sb, &xo.sb, enc); if (rc > 0) break; } - if (i < qn->lower) opt->exb.reach_end = 0; + if (i < qn->lower) opt->sb.reach_end = 0; } } if (qn->lower != qn->upper) { - opt->exb.reach_end = 0; - opt->exm.reach_end = 0; + opt->sb.reach_end = 0; + opt->sm.reach_end = 0; } if (qn->lower > 1) - opt->exm.reach_end = 0; + opt->sm.reach_end = 0; } - if (IS_REPEAT_INFINITE(qn->upper)) { + if (IS_INFINITE_REPEAT(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); + add_opt_anc_info(&opt->anc, ANCR_ANYCHAR_INF_ML); else - add_opt_anc_info(&opt->anc, ANCHOR_ANYCHAR_INF); + add_opt_anc_info(&opt->anc, ANCR_ANYCHAR_INF); } max = (xo.len.max > 0 ? INFINITE_LEN : 0); @@ -5446,12 +5809,12 @@ optimize_nodes(Node* node, NodeOpt* opt, OptEnv* env) } break; - case NODE_ENCLOSURE: + case NODE_BAG: { - EnclosureNode* en = ENCLOSURE_(node); + BagNode* en = BAG_(node); switch (en->type) { - case ENCLOSURE_OPTION: + case BAG_OPTION: { OnigOptionType save = env->options; @@ -5461,7 +5824,7 @@ optimize_nodes(Node* node, NodeOpt* opt, OptEnv* env) } break; - case ENCLOSURE_MEMORY: + case BAG_MEMORY: #ifdef USE_CALL en->opt_count++; if (en->opt_count > MAX_NODE_OPT_INFO_REF_COUNT) { @@ -5477,23 +5840,23 @@ optimize_nodes(Node* node, NodeOpt* opt, OptEnv* env) #endif { r = optimize_nodes(NODE_BODY(node), opt, env); - if (is_set_opt_anc_info(&opt->anc, ANCHOR_ANYCHAR_INF_MASK)) { + if (is_set_opt_anc_info(&opt->anc, ANCR_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); + remove_opt_anc_info(&opt->anc, ANCR_ANYCHAR_INF_MASK); } } break; - case ENCLOSURE_STOP_BACKTRACK: + case BAG_STOP_BACKTRACK: r = optimize_nodes(NODE_BODY(node), opt, env); break; - case ENCLOSURE_IF_ELSE: + case BAG_IF_ELSE: { OptEnv nenv; copy_opt_env(&nenv, env); - r = optimize_nodes(NODE_ENCLOSURE_BODY(en), &xo, &nenv); + r = optimize_nodes(NODE_BAG_BODY(en), &xo, &nenv); if (r == 0) { add_mml(&nenv.mmd, &xo.len); concat_left_node_opt_info(enc, opt, &xo); @@ -5531,39 +5894,47 @@ optimize_nodes(Node* node, NodeOpt* opt, OptEnv* env) } static int -set_optimize_exact(regex_t* reg, OptExact* e) +set_optimize_exact(regex_t* reg, OptStr* e) { int r; if (e->len == 0) return 0; - if (e->ignore_case) { - reg->exact = (UChar* )xmalloc(e->len); - CHECK_NULL_RETURN_MEMERR(reg->exact); - xmemcpy(reg->exact, e->s, e->len); - reg->exact_end = reg->exact + e->len; - reg->optimize = OPTIMIZE_EXACT_IC; + reg->exact = (UChar* )xmalloc(e->len); + CHECK_NULL_RETURN_MEMERR(reg->exact); + xmemcpy(reg->exact, e->s, e->len); + reg->exact_end = reg->exact + e->len; + + if (e->case_fold) { + reg->optimize = OPTIMIZE_STR_CASE_FOLD; + if (e->good_case_fold != 0) { + if (e->len >= 2) { + r = set_sunday_quick_search_or_bmh_skip_table(reg, 1, + reg->exact, reg->exact_end, + reg->map, &(reg->map_offset)); + if (r != 0) return r; + reg->optimize = OPTIMIZE_STR_CASE_FOLD_FAST; + } + } } else { int allow_reverse; - 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); - 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 (e->len >= 2 || (e->len >= 1 && allow_reverse)) { + r = set_sunday_quick_search_or_bmh_skip_table(reg, 0, + reg->exact, reg->exact_end, + reg->map, &(reg->map_offset)); if (r != 0) return r; reg->optimize = (allow_reverse != 0 - ? OPTIMIZE_EXACT_BM : OPTIMIZE_EXACT_BM_NO_REV); + ? OPTIMIZE_STR_FAST + : OPTIMIZE_STR_FAST_STEP_FORWARD); } else { - reg->optimize = OPTIMIZE_EXACT; + reg->optimize = OPTIMIZE_STR; } } @@ -5582,7 +5953,7 @@ set_optimize_map(regex_t* reg, OptMap* m) { int i; - for (i = 0; i < ONIG_CHAR_TABLE_SIZE; i++) + for (i = 0; i < CHAR_MAP_SIZE; i++) reg->map[i] = m->map[i]; reg->optimize = OPTIMIZE_MAP; @@ -5597,8 +5968,8 @@ set_optimize_map(regex_t* reg, OptMap* m) static void set_sub_anchor(regex_t* reg, OptAnc* anc) { - reg->sub_anchor |= anc->left & ANCHOR_BEGIN_LINE; - reg->sub_anchor |= anc->right & ANCHOR_END_LINE; + reg->sub_anchor |= anc->left & ANCR_BEGIN_LINE; + reg->sub_anchor |= anc->right & ANCR_END_LINE; } #if defined(ONIG_DEBUG_COMPILE) || defined(ONIG_DEBUG_MATCH) @@ -5609,7 +5980,7 @@ static int set_optimize_info_from_tree(Node* node, regex_t* reg, ScanEnv* scan_env) { int r; - NodeOpt opt; + OptNode opt; OptEnv env; env.enc = reg->enc; @@ -5621,29 +5992,29 @@ set_optimize_info_from_tree(Node* node, regex_t* reg, ScanEnv* scan_env) 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 & (ANCR_BEGIN_BUF | + ANCR_BEGIN_POSITION | ANCR_ANYCHAR_INF | ANCR_ANYCHAR_INF_ML | + ANCR_LOOK_BEHIND); - if ((opt.anc.left & (ANCHOR_LOOK_BEHIND | ANCHOR_PREC_READ_NOT)) != 0) - reg->anchor &= ~ANCHOR_ANYCHAR_INF_ML; + if ((opt.anc.left & (ANCR_LOOK_BEHIND | ANCR_PREC_READ_NOT)) != 0) + reg->anchor &= ~ANCR_ANYCHAR_INF_ML; - reg->anchor |= opt.anc.right & (ANCHOR_END_BUF | ANCHOR_SEMI_END_BUF | - ANCHOR_PREC_READ_NOT); + reg->anchor |= opt.anc.right & (ANCR_END_BUF | ANCR_SEMI_END_BUF | + ANCR_PREC_READ_NOT); - if (reg->anchor & (ANCHOR_END_BUF | ANCHOR_SEMI_END_BUF)) { + if (reg->anchor & (ANCR_END_BUF | ANCR_SEMI_END_BUF)) { reg->anchor_dmin = opt.len.min; reg->anchor_dmax = opt.len.max; } - if (opt.exb.len > 0 || opt.exm.len > 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) { + if (opt.sb.len > 0 || opt.sm.len > 0) { + select_opt_exact(reg->enc, &opt.sb, &opt.sm); + if (opt.map.value > 0 && comp_opt_exact_or_map(&opt.sb, &opt.map) > 0) { goto set_map; } else { - r = set_optimize_exact(reg, &opt.exb); - set_sub_anchor(reg, &opt.exb.anc); + r = set_optimize_exact(reg, &opt.sb); + set_sub_anchor(reg, &opt.sb.anc); } } else if (opt.map.value > 0) { @@ -5652,9 +6023,9 @@ set_optimize_info_from_tree(Node* node, regex_t* reg, ScanEnv* scan_env) set_sub_anchor(reg, &opt.map.anc); } else { - reg->sub_anchor |= opt.anc.left & ANCHOR_BEGIN_LINE; + reg->sub_anchor |= opt.anc.left & ANCR_BEGIN_LINE; if (opt.len.max == 0) - reg->sub_anchor |= opt.anc.right & ANCHOR_END_LINE; + reg->sub_anchor |= opt.anc.right & ANCR_END_LINE; } #if defined(ONIG_DEBUG_COMPILE) || defined(ONIG_DEBUG_MATCH) @@ -5672,6 +6043,7 @@ clear_optimize_info(regex_t* reg) reg->anchor_dmax = 0; reg->sub_anchor = 0; reg->exact_end = (UChar* )NULL; + reg->map_offset = 0; reg->threshold_len = 0; if (IS_NOT_NULL(reg->exact)) { xfree(reg->exact); @@ -5740,41 +6112,41 @@ print_anchor(FILE* f, int anchor) fprintf(f, "["); - if (anchor & ANCHOR_BEGIN_BUF) { + if (anchor & ANCR_BEGIN_BUF) { fprintf(f, "begin-buf"); q = 1; } - if (anchor & ANCHOR_BEGIN_LINE) { + if (anchor & ANCR_BEGIN_LINE) { if (q) fprintf(f, ", "); q = 1; fprintf(f, "begin-line"); } - if (anchor & ANCHOR_BEGIN_POSITION) { + if (anchor & ANCR_BEGIN_POSITION) { if (q) fprintf(f, ", "); q = 1; fprintf(f, "begin-pos"); } - if (anchor & ANCHOR_END_BUF) { + if (anchor & ANCR_END_BUF) { if (q) fprintf(f, ", "); q = 1; fprintf(f, "end-buf"); } - if (anchor & ANCHOR_SEMI_END_BUF) { + if (anchor & ANCR_SEMI_END_BUF) { if (q) fprintf(f, ", "); q = 1; fprintf(f, "semi-end-buf"); } - if (anchor & ANCHOR_END_LINE) { + if (anchor & ANCR_END_LINE) { if (q) fprintf(f, ", "); q = 1; fprintf(f, "end-line"); } - if (anchor & ANCHOR_ANYCHAR_INF) { + if (anchor & ANCR_ANYCHAR_INF) { if (q) fprintf(f, ", "); q = 1; fprintf(f, "anychar-inf"); } - if (anchor & ANCHOR_ANYCHAR_INF_ML) { + if (anchor & ANCR_ANYCHAR_INF_ML) { if (q) fprintf(f, ", "); fprintf(f, "anychar-inf-ml"); } @@ -5785,12 +6157,13 @@ print_anchor(FILE* f, int anchor) static void print_optimize_info(FILE* f, regex_t* reg) { - static const char* on[] = { "NONE", "EXACT", "EXACT_BM", "EXACT_BM_NOT_REV", - "EXACT_IC", "MAP" }; + static const char* on[] = { "NONE", "STR", + "STR_FAST", "STR_FAST_STEP_FORWARD", + "STR_CASE_FOLD_FAST", "STR_CASE_FOLD", "MAP" }; fprintf(f, "optimize: %s\n", on[reg->optimize]); fprintf(f, " anchor: "); print_anchor(f, reg->anchor); - if ((reg->anchor & ANCHOR_END_BUF_MASK) != 0) + if ((reg->anchor & ANCR_END_BUF_MASK) != 0) print_distance_range(f, reg->anchor_dmin, reg->anchor_dmax); fprintf(f, "\n"); @@ -5811,14 +6184,14 @@ print_optimize_info(FILE* f, regex_t* reg) else if (reg->optimize & OPTIMIZE_MAP) { int c, i, n = 0; - for (i = 0; i < ONIG_CHAR_TABLE_SIZE; i++) + for (i = 0; i < CHAR_MAP_SIZE; i++) if (reg->map[i]) n++; fprintf(f, "map: n=%d\n", n); if (n > 0) { c = 0; fputc('[', f); - for (i = 0; i < ONIG_CHAR_TABLE_SIZE; i++) { + for (i = 0; i < CHAR_MAP_SIZE; i++) { if (reg->map[i] != 0) { if (c > 0) fputs(", ", f); c++; @@ -5839,7 +6212,7 @@ print_optimize_info(FILE* f, regex_t* reg) extern RegexExt* onig_get_regex_ext(regex_t* reg) { - if (IS_NULL(REG_EXTP(reg))) { + if (IS_NULL(reg->extp)) { RegexExt* ext = (RegexExt* )xmalloc(sizeof(*ext)); if (IS_NULL(ext)) return 0; @@ -5852,10 +6225,10 @@ onig_get_regex_ext(regex_t* reg) ext->callout_list = 0; #endif - REG_EXTPL(reg) = (void* )ext; + reg->extp = ext; } - return REG_EXTP(reg); + return reg->extp; } static void @@ -5895,19 +6268,20 @@ onig_ext_set_pattern(regex_t* reg, const UChar* pattern, const UChar* pattern_en return ONIG_NORMAL; } - extern void onig_free_body(regex_t* reg) { if (IS_NOT_NULL(reg)) { - if (IS_NOT_NULL(reg->p)) xfree(reg->p); + ops_free(reg); + if (IS_NOT_NULL(reg->string_pool)) { + xfree(reg->string_pool); + reg->string_pool_end = reg->string_pool = 0; + } if (IS_NOT_NULL(reg->exact)) xfree(reg->exact); - 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_EXTP(reg))) { - free_regex_ext(REG_EXTP(reg)); - REG_EXTPL(reg) = 0; + if (IS_NOT_NULL(reg->extp)) { + free_regex_ext(reg->extp); + reg->extp = 0; } onig_names_free(reg); @@ -5923,30 +6297,18 @@ onig_free(regex_t* reg) } } -#define REGEX_TRANSFER(to,from) do {\ - onig_free_body(to);\ - xmemcpy(to, from, sizeof(regex_t));\ - xfree(from);\ -} while (0) - -extern void -onig_transfer(regex_t* to, regex_t* from) -{ - REGEX_TRANSFER(to, from); -} - #ifdef ONIG_DEBUG_PARSE static void print_tree P_((FILE* f, Node* node)); #endif +extern int onig_init_for_match_at(regex_t* reg); + extern int onig_compile(regex_t* reg, const UChar* pattern, const UChar* pattern_end, OnigErrorInfo* einfo) { -#define COMPILE_INIT_SIZE 20 - - int r, init_size; + int r; Node* root; ScanEnv scan_env; #ifdef USE_CALL @@ -5963,15 +6325,15 @@ onig_compile(regex_t* reg, const UChar* pattern, const UChar* pattern_end, print_enc_string(stderr, reg->enc, pattern, pattern_end); #endif - if (reg->alloc == 0) { - init_size = (int )(pattern_end - pattern) * 2; - if (init_size <= 0) init_size = COMPILE_INIT_SIZE; - r = BB_INIT(reg, init_size); + if (reg->ops_alloc == 0) { + r = ops_init(reg, OPS_INIT_SIZE); if (r != 0) goto end; } else - reg->used = 0; + reg->ops_used = 0; + reg->string_pool = 0; + reg->string_pool_end = 0; reg->num_mem = 0; reg->num_repeat = 0; reg->num_null_check = 0; @@ -6048,15 +6410,16 @@ onig_compile(regex_t* reg, const UChar* pattern, const UChar* pattern_end, 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 */); + r = add_op(reg, OP_UPDATE_VAR); if (r != 0) goto err; + + COP(reg)->update_var.type = UPDATE_VAR_KEEP_FROM_STACK_LAST; + COP(reg)->update_var.id = 0; /* not used */ } - r = add_opcode(reg, OP_END); + r = add_op(reg, OP_END); + if (r != 0) goto err; + #ifdef USE_CALL if (scan_env.num_call > 0) { r = fix_unset_addr_list(&uslist, reg); @@ -6067,7 +6430,7 @@ onig_compile(regex_t* reg, const UChar* pattern, const UChar* pattern_end, 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) + || (IS_NOT_NULL(reg->extp) && reg->extp->callout_num != 0) #endif ) reg->stack_pop_level = STACK_POP_LEVEL_ALL; @@ -6077,6 +6440,9 @@ onig_compile(regex_t* reg, const UChar* pattern, const UChar* pattern_end, else reg->stack_pop_level = STACK_POP_LEVEL_FREE; } + + r = ops_make_string_pool(reg); + if (r != 0) goto err; } #ifdef USE_CALL else if (scan_env.num_call > 0) { @@ -6090,6 +6456,11 @@ onig_compile(regex_t* reg, const UChar* pattern, const UChar* pattern_end, onig_print_compiled_byte_code_list(stderr, reg); #endif +#ifdef USE_DIRECT_THREADED_CODE + /* opcode -> opaddr */ + onig_init_for_match_at(reg); +#endif + end: return r; @@ -6159,13 +6530,12 @@ onig_reg_init(regex_t* reg, OnigOptionType option, OnigCaseFoldType case_fold_fl (reg)->syntax = syntax; (reg)->optimize = 0; (reg)->exact = (UChar* )NULL; - (reg)->int_map = (int* )NULL; - (reg)->int_map_backward = (int* )NULL; - REG_EXTPL(reg) = NULL; + (reg)->extp = (RegexExt* )NULL; - (reg)->p = (UChar* )NULL; - (reg)->alloc = 0; - (reg)->used = 0; + (reg)->ops = (Operation* )NULL; + (reg)->ops_curr = (Operation* )NULL; + (reg)->ops_used = 0; + (reg)->ops_alloc = 0; (reg)->name_table = (void* )NULL; (reg)->case_fold_flag = case_fold_flag; @@ -6316,11 +6686,11 @@ onig_is_code_in_cc_len(int elen, OnigCodePoint code, /* CClassNode* */ void* cc_ found = 0; } else { - found = (onig_is_in_code_range(cc->mbuf->p, code) != 0 ? 1 : 0); + found = onig_is_in_code_range(cc->mbuf->p, code) != 0; } } else { - found = (BITSET_AT(cc->bs, code) == 0 ? 0 : 1); + found = BITSET_AT(cc->bs, code) != 0; } if (IS_NCCLASS_NOT(cc)) @@ -6339,6 +6709,7 @@ onig_is_code_in_cc(OnigEncoding enc, OnigCodePoint code, CClassNode* cc) } else { len = ONIGENC_CODE_TO_MBCLEN(enc, code); + if (len < 0) return 0; } return onig_is_code_in_cc_len(len, code, cc); } @@ -6394,12 +6765,35 @@ print_indent_tree(FILE* f, Node* node, int indent) break; 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); - else { - fprintf(f, " 0x%02x", *p); + { + char* mode; + char* dont; + char* good; + + if (NODE_STRING_IS_RAW(node)) + mode = "-raw"; + else if (NODE_STRING_IS_AMBIG(node)) + mode = "-ambig"; + else + mode = ""; + + if (NODE_STRING_IS_GOOD_AMBIG(node)) + good = "-good"; + else + good = ""; + + if (NODE_STRING_IS_DONT_GET_OPT_INFO(node)) + dont = " (dont-opt)"; + else + dont = ""; + + fprintf(f, "", mode, good, dont, node); + for (p = STR_(node)->s; p < STR_(node)->end; p++) { + if (*p >= 0x20 && *p < 0x7f) + fputc(*p, f); + else { + fprintf(f, " 0x%02x", *p); + } } } break; @@ -6443,36 +6837,36 @@ print_indent_tree(FILE* f, Node* node, int indent) 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_BOUNDARY: fputs("word boundary", f); break; - case ANCHOR_NO_WORD_BOUNDARY: fputs("not word boundary", f); break; + case ANCR_BEGIN_BUF: fputs("begin buf", f); break; + case ANCR_END_BUF: fputs("end buf", f); break; + case ANCR_BEGIN_LINE: fputs("begin line", f); break; + case ANCR_END_LINE: fputs("end line", f); break; + case ANCR_SEMI_END_BUF: fputs("semi end buf", f); break; + case ANCR_BEGIN_POSITION: fputs("begin position", f); break; + + case ANCR_WORD_BOUNDARY: fputs("word boundary", f); break; + case ANCR_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 ANCR_WORD_BEGIN: fputs("word begin", f); break; + case ANCR_WORD_END: fputs("word end", f); break; #endif - 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: + case ANCR_TEXT_SEGMENT_BOUNDARY: + fputs("text-segment boundary", f); break; + case ANCR_NO_TEXT_SEGMENT_BOUNDARY: + fputs("no text-segment boundary", f); break; + case ANCR_PREC_READ: fprintf(f, "prec read\n"); print_indent_tree(f, NODE_BODY(node), indent + add); break; - case ANCHOR_PREC_READ_NOT: + case ANCR_PREC_READ_NOT: fprintf(f, "prec read not\n"); print_indent_tree(f, NODE_BODY(node), indent + add); break; - case ANCHOR_LOOK_BEHIND: + case ANCR_LOOK_BEHIND: fprintf(f, "look behind\n"); print_indent_tree(f, NODE_BODY(node), indent + add); break; - case ANCHOR_LOOK_BEHIND_NOT: + case ANCR_LOOK_BEHIND_NOT: fprintf(f, "look behind not\n"); print_indent_tree(f, NODE_BODY(node), indent + add); break; @@ -6513,20 +6907,20 @@ print_indent_tree(FILE* f, Node* node, int indent) print_indent_tree(f, NODE_BODY(node), indent + add); break; - case NODE_ENCLOSURE: - fprintf(f, " ", node); - switch (ENCLOSURE_(node)->type) { - case ENCLOSURE_OPTION: - fprintf(f, "option:%d", ENCLOSURE_(node)->o.options); + case NODE_BAG: + fprintf(f, " ", node); + switch (BAG_(node)->type) { + case BAG_OPTION: + fprintf(f, "option:%d", BAG_(node)->o.options); break; - case ENCLOSURE_MEMORY: - fprintf(f, "memory:%d", ENCLOSURE_(node)->m.regnum); + case BAG_MEMORY: + fprintf(f, "memory:%d", BAG_(node)->m.regnum); break; - case ENCLOSURE_STOP_BACKTRACK: + case BAG_STOP_BACKTRACK: fprintf(f, "stop-bt"); break; - - default: + case BAG_IF_ELSE: + fprintf(f, "if-else"); break; } fprintf(f, "\n"); @@ -6539,9 +6933,6 @@ print_indent_tree(FILE* f, Node* node, int indent) 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; @@ -6568,7 +6959,7 @@ print_indent_tree(FILE* f, Node* node, int indent) } if (type != NODE_LIST && type != NODE_ALT && type != NODE_QUANT && - type != NODE_ENCLOSURE) + type != NODE_BAG) fprintf(f, "\n"); fflush(f); } diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regenc.c b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regenc.c index 90547d359e..079cd01f29 100644 --- a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regenc.c +++ b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regenc.c @@ -2,7 +2,7 @@ regenc.c - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2002-2018 K.Kosako + * Copyright (c) 2002-2019 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -77,6 +77,17 @@ enc_is_inited(OnigEncoding enc) return 0; } +static int OnigEncInited; + +extern int +onigenc_init(void) +{ + if (OnigEncInited != 0) return 0; + + OnigEncInited = 1; + return 0; +} + extern int onigenc_end(void) { @@ -86,15 +97,10 @@ onigenc_end(void) InitedList[i].enc = 0; InitedList[i].inited = 0; } - InitedListNum = 0; - return ONIG_NORMAL; -} -extern int -onigenc_init(void) -{ - return 0; + OnigEncInited = 0; + return ONIG_NORMAL; } extern int @@ -167,7 +173,7 @@ onigenc_get_right_adjust_char_head(OnigEncoding enc, const UChar* start, const U extern UChar* onigenc_get_right_adjust_char_head_with_prev(OnigEncoding enc, - const UChar* start, const UChar* s, const UChar** prev) + const UChar* start, const UChar* s, const UChar** prev) { UChar* p = ONIGENC_LEFT_ADJUST_CHAR_HEAD(enc, start, s); @@ -231,7 +237,7 @@ onigenc_strlen(OnigEncoding enc, const UChar* p, const UChar* end) { int n = 0; UChar* q = (UChar* )p; - + while (q < end) { q += ONIGENC_MBC_ENC_LEN(enc, q); n++; @@ -244,7 +250,7 @@ onigenc_strlen_null(OnigEncoding enc, const UChar* s) { int n = 0; UChar* p = (UChar* )s; - + while (1) { if (*p == '\0') { UChar* q; @@ -511,7 +517,7 @@ const OnigPairCaseFoldCodes OnigAsciiLowerMap[] = { extern int onigenc_ascii_apply_all_case_fold(OnigCaseFoldType flag ARG_UNUSED, - OnigApplyAllCaseFoldFunc f, void* arg) + OnigApplyAllCaseFoldFunc f, void* arg) { OnigCodePoint code; int i, r; @@ -533,8 +539,8 @@ onigenc_ascii_apply_all_case_fold(OnigCaseFoldType flag ARG_UNUSED, extern int onigenc_ascii_get_case_fold_codes_by_str(OnigCaseFoldType flag ARG_UNUSED, - const OnigUChar* p, const OnigUChar* end ARG_UNUSED, - OnigCaseFoldCodeItem items[]) + const OnigUChar* p, const OnigUChar* end ARG_UNUSED, + OnigCaseFoldCodeItem items[]) { if (0x41 <= *p && *p <= 0x5a) { items[0].byte_len = 1; @@ -554,7 +560,7 @@ onigenc_ascii_get_case_fold_codes_by_str(OnigCaseFoldType flag ARG_UNUSED, static int ss_apply_all_case_fold(OnigCaseFoldType flag ARG_UNUSED, - OnigApplyAllCaseFoldFunc f, void* arg) + OnigApplyAllCaseFoldFunc f, void* arg) { static OnigCodePoint ss[] = { 0x73, 0x73 }; @@ -600,7 +606,7 @@ onigenc_get_case_fold_codes_by_str_with_map(int map_size, items[0].code_len = 1; items[0].code[0] = (OnigCodePoint )(*p + 0x20); if (*p == 0x53 && ess_tsett_flag != 0 && end > p + 1 - && (*(p+1) == 0x53 || *(p+1) == 0x73)) { + && (*(p+1) == 0x53 || *(p+1) == 0x73)) { /* SS */ items[1].byte_len = 2; items[1].code_len = 1; @@ -615,7 +621,7 @@ onigenc_get_case_fold_codes_by_str_with_map(int map_size, items[0].code_len = 1; items[0].code[0] = (OnigCodePoint )(*p - 0x20); if (*p == 0x73 && ess_tsett_flag != 0 && end > p + 1 - && (*(p+1) == 0x73 || *(p+1) == 0x53)) { + && (*(p+1) == 0x73 || *(p+1) == 0x53)) { /* ss */ items[1].byte_len = 2; items[1].code_len = 1; @@ -653,16 +659,16 @@ onigenc_get_case_fold_codes_by_str_with_map(int map_size, for (i = 0; i < map_size; i++) { if (*p == map[i].from) { - items[0].byte_len = 1; - items[0].code_len = 1; - items[0].code[0] = map[i].to; - return 1; + items[0].byte_len = 1; + items[0].code_len = 1; + items[0].code[0] = map[i].to; + return 1; } else if (*p == map[i].to) { - items[0].byte_len = 1; - items[0].code_len = 1; - items[0].code[0] = map[i].from; - return 1; + items[0].byte_len = 1; + items[0].code_len = 1; + items[0].code[0] = map[i].from; + return 1; } } } @@ -673,8 +679,8 @@ onigenc_get_case_fold_codes_by_str_with_map(int map_size, extern int onigenc_not_support_get_ctype_code_range(OnigCtype ctype ARG_UNUSED, - OnigCodePoint* sb_out ARG_UNUSED, - const OnigCodePoint* ranges[] ARG_UNUSED) + OnigCodePoint* sb_out ARG_UNUSED, + const OnigCodePoint* ranges[] ARG_UNUSED) { return ONIG_NO_SUPPORT_CONFIG; } @@ -691,7 +697,7 @@ onigenc_is_mbc_newline_0x0a(const UChar* p, const UChar* end) /* for single byte encodings */ extern int onigenc_ascii_mbc_case_fold(OnigCaseFoldType flag ARG_UNUSED, const UChar** p, - const UChar*end ARG_UNUSED, UChar* lower) + const UChar*end ARG_UNUSED, UChar* lower) { *lower = ONIGENC_ASCII_CODE_TO_LOWER_CASE(**p); @@ -702,7 +708,7 @@ onigenc_ascii_mbc_case_fold(OnigCaseFoldType flag ARG_UNUSED, const UChar** p, #if 0 extern int onigenc_ascii_is_mbc_ambiguous(OnigCaseFoldType flag, - const UChar** pp, const UChar* end) + const UChar** pp, const UChar* end) { const UChar* p = *pp; @@ -738,35 +744,35 @@ onigenc_single_byte_code_to_mbc(OnigCodePoint code, UChar *buf) extern UChar* onigenc_single_byte_left_adjust_char_head(const UChar* start ARG_UNUSED, - const UChar* s) + const UChar* s) { return (UChar* )s; } extern int onigenc_always_true_is_allowed_reverse_match(const UChar* s ARG_UNUSED, - const UChar* end ARG_UNUSED) + const UChar* end ARG_UNUSED) { return TRUE; } extern int onigenc_always_false_is_allowed_reverse_match(const UChar* s ARG_UNUSED, - const UChar* end ARG_UNUSED) + const UChar* end ARG_UNUSED) { return FALSE; } extern int onigenc_always_true_is_valid_mbc_string(const UChar* s ARG_UNUSED, - const UChar* end 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) + const UChar* p, const UChar* end) { while (p < end) { p += enclen(enc, p); @@ -805,7 +811,7 @@ onigenc_mbn_mbc_to_code(OnigEncoding enc, const UChar* p, const UChar* end) extern int onigenc_mbn_mbc_case_fold(OnigEncoding enc, OnigCaseFoldType flag ARG_UNUSED, const UChar** pp, const UChar* end ARG_UNUSED, - UChar* lower) + UChar* lower) { int len; const UChar *p = *pp; @@ -847,6 +853,8 @@ onigenc_mbn_is_mbc_ambiguous(OnigEncoding enc, OnigCaseFoldType flag, extern int onigenc_mb2_code_to_mbclen(OnigCodePoint code) { + if ((code & (~0xffff)) != 0) return ONIGERR_INVALID_CODE_POINT_VALUE; + if ((code & 0xff00) != 0) return 2; else return 1; } @@ -946,7 +954,7 @@ onigenc_is_mbc_word_ascii(OnigEncoding enc, UChar* s, const UChar* end) extern int onigenc_mb2_is_code_ctype(OnigEncoding enc, OnigCodePoint code, - unsigned int ctype) + unsigned int ctype) { if (code < 128) return ONIGENC_IS_ASCII_CODE_CTYPE(code, ctype); @@ -961,7 +969,7 @@ onigenc_mb2_is_code_ctype(OnigEncoding enc, OnigCodePoint code, extern int onigenc_mb4_is_code_ctype(OnigEncoding enc, OnigCodePoint code, - unsigned int ctype) + unsigned int ctype) { if (code < 128) return ONIGENC_IS_ASCII_CODE_CTYPE(code, ctype); diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regerror.c b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regerror.c index d92b61e229..0dca34a8ad 100644 --- a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regerror.c +++ b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regerror.c @@ -2,7 +2,7 @@ regerror.c - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2002-2018 K.Kosako + * Copyright (c) 2002-2019 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -31,13 +31,7 @@ #if 0 #include /* for vsnprintf() */ -#ifdef HAVE_STDARG_PROTOTYPES #include -#define va_init_list(a,b) va_start(a,b) -#else -#include -#define va_init_list(a,b) va_start(a) -#endif #endif extern UChar* @@ -213,13 +207,17 @@ static void sprint_byte_with_x(char* s, unsigned int v) } static int to_ascii(OnigEncoding enc, UChar *s, UChar *end, - UChar buf[], int buf_size, int *is_over) + UChar buf[], int buf_size, int *is_over) { int len; UChar *p; OnigCodePoint code; - if (ONIGENC_MBC_MINLEN(enc) > 1) { + if (!s) { + len = 0; + *is_over = 0; + } + else if (ONIGENC_MBC_MINLEN(enc) > 1) { p = s; len = 0; while (p < end) { @@ -249,7 +247,7 @@ static int to_ascii(OnigEncoding enc, UChar *s, UChar *end, if (len >= buf_size) break; } - *is_over = ((p < end) ? 1 : 0); + *is_over = p < end; } else { len = MIN((int )(end - s), buf_size); @@ -261,19 +259,27 @@ static int to_ascii(OnigEncoding enc, UChar *s, UChar *end, } +extern int +onig_is_error_code_needs_param(int code) +{ + switch (code) { + case ONIGERR_UNDEFINED_NAME_REFERENCE: + case ONIGERR_UNDEFINED_GROUP_REFERENCE: + case ONIGERR_MULTIPLEX_DEFINED_NAME: + case ONIGERR_MULTIPLEX_DEFINITION_NAME_CALL: + case ONIGERR_INVALID_GROUP_NAME: + case ONIGERR_INVALID_CHAR_IN_GROUP_NAME: + case ONIGERR_INVALID_CHAR_PROPERTY_NAME: + return 1; + default: + return 0; + } +} + /* for ONIG_MAX_ERROR_MESSAGE_LEN */ #define MAX_ERROR_PAR_LEN 30 -extern int -EFIAPI -#ifdef HAVE_STDARG_PROTOTYPES -onig_error_code_to_str(UChar* s, int code, ...) -#else -onig_error_code_to_str(s, code, va_alist) - UChar* s; - int code; - va_dcl -#endif +extern int EFIAPI onig_error_code_to_str(UChar* s, int code, ...) { UChar *p, *q; OnigErrorInfo* einfo; @@ -333,21 +339,8 @@ onig_error_code_to_str(s, code, va_alist) } -void -EFIAPI -#ifdef HAVE_STDARG_PROTOTYPES -onig_snprintf_with_pattern(UChar buf[], int bufsize, OnigEncoding enc, - UChar* pat, UChar* pat_end, const UChar *fmt, ...) -#else -onig_snprintf_with_pattern(buf, bufsize, enc, pat, pat_end, fmt, va_alist) - UChar buf[]; - int bufsize; - OnigEncoding enc; - UChar* pat; - UChar* pat_end; - const UChar *fmt; - va_dcl -#endif +void EFIAPI onig_snprintf_with_pattern(UChar buf[], int bufsize, OnigEncoding enc, + UChar* pat, UChar* pat_end, const UChar *fmt, ...) { int n, need, len; UChar *p, *s, *bp; diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regexec.c b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regexec.c index 6a55045d64..5ce859b39b 100644 --- a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regexec.c +++ b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regexec.c @@ -2,7 +2,7 @@ regexec.c - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2002-2018 K.Kosako + * Copyright (c) 2002-2019 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -112,7 +112,6 @@ onig_set_callout_user_data_of_match_param(OnigMatchParam* param, void* user_data } - typedef struct { void* stack_p; int stack_n; @@ -134,120 +133,118 @@ typedef struct { /* 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 + 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 }, + { OP_FINISH, "finish" }, + { OP_END, "end" }, + { OP_EXACT1, "exact1" }, + { OP_EXACT2, "exact2" }, + { OP_EXACT3, "exact3" }, + { OP_EXACT4, "exact4" }, + { OP_EXACT5, "exact5" }, + { OP_EXACTN, "exactn" }, + { OP_EXACTMB2N1, "exactmb2-n1" }, + { OP_EXACTMB2N2, "exactmb2-n2" }, + { OP_EXACTMB2N3, "exactmb2-n3" }, + { OP_EXACTMB2N, "exactmb2-n" }, + { OP_EXACTMB3N, "exactmb3n" }, + { OP_EXACTMBN, "exactmbn" }, + { OP_EXACT1_IC, "exact1-ic" }, + { OP_EXACTN_IC, "exactn-ic" }, + { OP_CCLASS, "cclass" }, + { OP_CCLASS_MB, "cclass-mb" }, + { OP_CCLASS_MIX, "cclass-mix" }, + { OP_CCLASS_NOT, "cclass-not" }, + { OP_CCLASS_MB_NOT, "cclass-mb-not" }, + { OP_CCLASS_MIX_NOT, "cclass-mix-not" }, + { OP_ANYCHAR, "anychar" }, + { OP_ANYCHAR_ML, "anychar-ml" }, + { OP_ANYCHAR_STAR, "anychar*" }, + { OP_ANYCHAR_ML_STAR, "anychar-ml*" }, + { OP_ANYCHAR_STAR_PEEK_NEXT, "anychar*-peek-next" }, + { OP_ANYCHAR_ML_STAR_PEEK_NEXT, "anychar-ml*-peek-next" }, + { OP_WORD, "word" }, + { OP_WORD_ASCII, "word-ascii" }, + { OP_NO_WORD, "not-word" }, + { OP_NO_WORD_ASCII, "not-word-ascii" }, + { OP_WORD_BOUNDARY, "word-boundary" }, + { OP_NO_WORD_BOUNDARY, "not-word-boundary" }, + { OP_WORD_BEGIN, "word-begin" }, + { OP_WORD_END, "word-end" }, + { OP_TEXT_SEGMENT_BOUNDARY, "text-segment-boundary" }, + { OP_BEGIN_BUF, "begin-buf" }, + { OP_END_BUF, "end-buf" }, + { OP_BEGIN_LINE, "begin-line" }, + { OP_END_LINE, "end-line" }, + { OP_SEMI_END_BUF, "semi-end-buf" }, + { OP_BEGIN_POSITION, "begin-position" }, + { OP_BACKREF1, "backref1" }, + { OP_BACKREF2, "backref2" }, + { OP_BACKREF_N, "backref-n" }, + { OP_BACKREF_N_IC, "backref-n-ic" }, + { OP_BACKREF_MULTI, "backref_multi" }, + { OP_BACKREF_MULTI_IC, "backref_multi-ic" }, + { OP_BACKREF_WITH_LEVEL, "backref_with_level" }, + { OP_BACKREF_WITH_LEVEL_IC, "backref_with_level-c" }, + { OP_BACKREF_CHECK, "backref_check" }, + { OP_BACKREF_CHECK_WITH_LEVEL, "backref_check_with_level" }, + { OP_MEMORY_START_PUSH, "mem-start-push" }, + { OP_MEMORY_START, "mem-start" }, + { OP_MEMORY_END_PUSH, "mem-end-push" }, + { OP_MEMORY_END_PUSH_REC, "mem-end-push-rec" }, + { OP_MEMORY_END, "mem-end" }, + { OP_MEMORY_END_REC, "mem-end-rec" }, + { OP_FAIL, "fail" }, + { OP_JUMP, "jump" }, + { OP_PUSH, "push" }, + { OP_PUSH_SUPER, "push-super" }, + { OP_POP_OUT, "pop-out" }, +#ifdef USE_OP_PUSH_OR_JUMP_EXACT + { OP_PUSH_OR_JUMP_EXACT1, "push-or-jump-e1" }, #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 }, + { OP_PUSH_IF_PEEK_NEXT, "push-if-peek-next" }, + { OP_REPEAT, "repeat" }, + { OP_REPEAT_NG, "repeat-ng" }, + { OP_REPEAT_INC, "repeat-inc" }, + { OP_REPEAT_INC_NG, "repeat-inc-ng" }, + { OP_REPEAT_INC_SG, "repeat-inc-sg" }, + { OP_REPEAT_INC_NG_SG, "repeat-inc-ng-sg" }, + { OP_EMPTY_CHECK_START, "empty-check-start" }, + { OP_EMPTY_CHECK_END, "empty-check-end" }, + { OP_EMPTY_CHECK_END_MEMST, "empty-check-end-memst" }, + { OP_EMPTY_CHECK_END_MEMST_PUSH,"empty-check-end-memst-push" }, + { OP_PREC_READ_START, "push-pos" }, + { OP_PREC_READ_END, "pop-pos" }, + { OP_PREC_READ_NOT_START, "prec-read-not-start" }, + { OP_PREC_READ_NOT_END, "prec-read-not-end" }, + { OP_ATOMIC_START, "atomic-start" }, + { OP_ATOMIC_END, "atomic-end" }, + { OP_LOOK_BEHIND, "look-behind" }, + { OP_LOOK_BEHIND_NOT_START, "look-behind-not-start" }, + { OP_LOOK_BEHIND_NOT_END, "look-behind-not-end" }, + { OP_CALL, "call" }, + { OP_RETURN, "return" }, + { OP_PUSH_SAVE_VAL, "push-save-val" }, + { OP_UPDATE_VAR, "update-var" }, #ifdef USE_CALLOUT - { OP_CALLOUT_CONTENTS, "callout-contents", ARG_SPECIAL }, - { OP_CALLOUT_NAME, "callout-name", ARG_SPECIAL }, + { OP_CALLOUT_CONTENTS, "callout-contents" }, + { OP_CALLOUT_NAME, "callout-name" }, #endif - { -1, "", ARG_NON } + { -1, "" } }; static char* @@ -256,22 +253,10 @@ op2name(int opcode) int i; for (i = 0; OpInfo[i].opcode >= 0; i++) { - if (opcode == OpInfo[i].opcode) - return OpInfo[i].name; + 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; + return ""; } static void @@ -291,7 +276,7 @@ p_len_string(FILE* f, LengthType len, int mb_len, UChar* s) } static void -p_rel_addr(FILE* f, RelAddrType rel_addr, UChar* p, UChar* start) +p_rel_addr(FILE* f, RelAddrType rel_addr, Operation* p, Operation* start) { RelAddrType curr = (RelAddrType )(p - start); @@ -307,288 +292,328 @@ bitset_on_num(BitSetRef bs) 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) +static void +print_compiled_byte_code(FILE* f, regex_t* reg, int index, + Operation* start, OnigEncoding enc) { int i, n; - OpArgType arg_type; RelAddrType addr; LengthType len; MemNumType mem; - OnigCodePoint code; - OnigOptionType option; + OnigCodePoint code; ModeType mode; UChar *q; + Operation* p; + enum OpCode opcode; - 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; + p = reg->ops + index; - 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; +#ifdef USE_DIRECT_THREADED_CODE + opcode = reg->ocs[index]; +#else + opcode = p->opcode; +#endif - case OP_CCLASS: - n = bitset_on_num((BitSetRef )bp); - bp += SIZE_BITSET; - fprintf(f, ":%d", n); - break; + fprintf(f, "%s", op2name(opcode)); + switch (opcode) { + case OP_EXACT1: + p_string(f, 1, p->exact.s); break; + case OP_EXACT2: + p_string(f, 2, p->exact.s); break; + case OP_EXACT3: + p_string(f, 3, p->exact.s); break; + case OP_EXACT4: + p_string(f, 4, p->exact.s); break; + case OP_EXACT5: + p_string(f, 5, p->exact.s); break; + case OP_EXACTN: + len = p->exact_n.n; + p_string(f, len, p->exact_n.s); break; + case OP_EXACTMB2N1: + p_string(f, 2, p->exact.s); break; + case OP_EXACTMB2N2: + p_string(f, 4, p->exact.s); break; + case OP_EXACTMB2N3: + p_string(f, 3, p->exact.s); break; + case OP_EXACTMB2N: + len = p->exact_n.n; + p_len_string(f, len, 2, p->exact_n.s); break; + case OP_EXACTMB3N: + len = p->exact_n.n; + p_len_string(f, len, 3, p->exact_n.s); break; + case OP_EXACTMBN: + { + int mb_len; + + mb_len = p->exact_len_n.len; + len = p->exact_len_n.n; + q = p->exact_len_n.s; + fprintf(f, ":%d:%d:", mb_len, len); + n = len * mb_len; + while (n-- > 0) { fputc(*q++, f); } + } + break; + case OP_EXACT1_IC: + len = enclen(enc, p->exact.s); + p_string(f, len, p->exact.s); + break; + case OP_EXACTN_IC: + len = p->exact_n.n; + p_len_string(f, len, 1, p->exact_n.s); + break; - case OP_CCLASS_NOT: - n = bitset_on_num((BitSetRef )bp); - bp += SIZE_BITSET; - fprintf(f, ":%d", n); - break; + case OP_CCLASS: + case OP_CCLASS_NOT: + n = bitset_on_num(p->cclass.bsp); + fprintf(f, ":%d", n); + break; + case OP_CCLASS_MB: + case OP_CCLASS_MB_NOT: + { + OnigCodePoint ncode; + OnigCodePoint* codes; + + codes = (OnigCodePoint* )p->cclass_mb.mb; + GET_CODE_POINT(ncode, codes); + codes++; + GET_CODE_POINT(code, codes); + fprintf(f, ":%u:%u", code, ncode); + } + break; + case OP_CCLASS_MIX: + case OP_CCLASS_MIX_NOT: + { + OnigCodePoint ncode; + OnigCodePoint* codes; - 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; + codes = (OnigCodePoint* )p->cclass_mix.mb; + n = bitset_on_num(p->cclass_mix.bsp); - 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; + GET_CODE_POINT(ncode, codes); + codes++; + GET_CODE_POINT(code, codes); + fprintf(f, ":%d:%u:%u", n, code, ncode); + } + break; -#ifdef USE_OP_CCLASS_NODE - case OP_CCLASS_NODE: - { - CClassNode *cc; + case OP_ANYCHAR_STAR_PEEK_NEXT: + case OP_ANYCHAR_ML_STAR_PEEK_NEXT: + p_string(f, 1, &(p->anychar_star_peek_next.c)); + break; - GET_POINTER_INC(cc, bp); - n = bitset_on_num(cc->bs); - fprintf(f, ":%p:%d", cc, n); - } - break; -#endif + case OP_WORD_BOUNDARY: + case OP_NO_WORD_BOUNDARY: + case OP_WORD_BEGIN: + case OP_WORD_END: + mode = p->word_boundary.mode; + fprintf(f, ":%d", mode); + break; - case OP_BACKREF_N_IC: - mem = *((MemNumType* )bp); - bp += SIZE_MEMNUM; - fprintf(f, ":%d", mem); - break; + case OP_BACKREF_N: + case OP_BACKREF_N_IC: + mem = p->backref_n.n1; + fprintf(f, ":%d", mem); + break; + case OP_BACKREF_MULTI_IC: + case OP_BACKREF_MULTI: + case OP_BACKREF_CHECK: + fputs(" ", f); + n = p->backref_general.num; + for (i = 0; i < n; i++) { + mem = (n == 1) ? p->backref_general.n1 : p->backref_general.ns[i]; + if (i > 0) fputs(", ", f); + fprintf(f, "%d", mem); + } + break; + case OP_BACKREF_WITH_LEVEL: + case OP_BACKREF_WITH_LEVEL_IC: + case OP_BACKREF_CHECK_WITH_LEVEL: + { + LengthType level; - case OP_BACKREF_MULTI_IC: - case OP_BACKREF_MULTI: - case OP_BACKREF_CHECK: + level = p->backref_general.nest_level; + fprintf(f, ":%d", level); fputs(" ", f); - GET_LENGTH_INC(len, bp); - for (i = 0; i < len; i++) { - GET_MEMNUM_INC(mem, bp); + n = p->backref_general.num; + for (i = 0; i < n; i++) { + mem = (n == 1) ? p->backref_general.n1 : p->backref_general.ns[i]; if (i > 0) fputs(", ", f); fprintf(f, "%d", mem); } - break; + } + break; - case OP_BACKREF_WITH_LEVEL: - GET_OPTION_INC(option, bp); - fprintf(f, ":%d", option); - /* fall */ - case OP_BACKREF_CHECK_WITH_LEVEL: - { - LengthType level; + case OP_MEMORY_START: + case OP_MEMORY_START_PUSH: + mem = p->memory_start.num; + fprintf(f, ":%d", mem); + break; + case OP_MEMORY_END_PUSH: + case OP_MEMORY_END_PUSH_REC: + case OP_MEMORY_END: + case OP_MEMORY_END_REC: + mem = p->memory_end.num; + fprintf(f, ":%d", mem); + break; - GET_LENGTH_INC(level, bp); - fprintf(f, ":%d", level); + case OP_JUMP: + addr = p->jump.addr; + fputc(':', f); + p_rel_addr(f, addr, p, start); + break; - 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_PUSH: + case OP_PUSH_SUPER: + addr = p->push.addr; + fputc(':', f); + p_rel_addr(f, addr, p, start); + 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; +#ifdef USE_OP_PUSH_OR_JUMP_EXACT + case OP_PUSH_OR_JUMP_EXACT1: + addr = p->push_or_jump_exact1.addr; + fputc(':', f); + p_rel_addr(f, addr, p, start); + p_string(f, 1, &(p->push_or_jump_exact1.c)); + break; +#endif - 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_PUSH_IF_PEEK_NEXT: + addr = p->push_if_peek_next.addr; + fputc(':', f); + p_rel_addr(f, addr, p, start); + p_string(f, 1, &(p->push_if_peek_next.c)); + break; - case OP_LOOK_BEHIND: - GET_LENGTH_INC(len, bp); - fprintf(f, ":%d", len); - break; + case OP_REPEAT: + case OP_REPEAT_NG: + mem = p->repeat.id; + addr = p->repeat.addr; + fprintf(f, ":%d:", mem); + p_rel_addr(f, addr, p, start); + 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_REPEAT_INC: + case OP_REPEAT_INC_NG: + case OP_REPEAT_INC_SG: + case OP_REPEAT_INC_NG_SG: + mem = p->repeat.id; + fprintf(f, ":%d", mem); + 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_EMPTY_CHECK_START: + mem = p->empty_check_start.mem; + fprintf(f, ":%d", mem); + break; + case OP_EMPTY_CHECK_END: + case OP_EMPTY_CHECK_END_MEMST: + case OP_EMPTY_CHECK_END_MEMST_PUSH: + mem = p->empty_check_end.mem; + fprintf(f, ":%d", 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; + case OP_PREC_READ_NOT_START: + addr = p->prec_read_not_start.addr; + fputc(':', f); + p_rel_addr(f, addr, p, start); + break; -#ifdef USE_CALLOUT - case OP_CALLOUT_CONTENTS: - { - GET_MEMNUM_INC(mem, bp); /* number */ - fprintf(f, ":%d", mem); - } - break; + case OP_LOOK_BEHIND: + len = p->look_behind.len; + fprintf(f, ":%d", len); + break; - case OP_CALLOUT_NAME: - { - int id; + case OP_LOOK_BEHIND_NOT_START: + addr = p->look_behind_not_start.addr; + len = p->look_behind_not_start.len; + fprintf(f, ":%d:", len); + p_rel_addr(f, addr, p, start); + break; + + case OP_CALL: + addr = p->call.addr; + fprintf(f, ":{/%d}", addr); + break; - GET_MEMNUM_INC(id, bp); /* id */ - GET_MEMNUM_INC(mem, bp); /* number */ + case OP_PUSH_SAVE_VAL: + { + SaveType type; - fprintf(f, ":%d:%d", id, mem); - } - break; -#endif + type = p->push_save_val.type; + mem = p->push_save_val.id; + fprintf(f, ":%d:%d", type, mem); + } + break; - default: - fprintf(stderr, "onig_print_compiled_byte_code: undefined code %d\n", *--bp); + case OP_UPDATE_VAR: + { + UpdateVarType type; + + type = p->update_var.type; + mem = p->update_var.id; + fprintf(f, ":%d:%d", type, mem); + } + break; + +#ifdef USE_CALLOUT + case OP_CALLOUT_CONTENTS: + mem = p->callout_contents.num; + fprintf(f, ":%d", mem); + break; + + case OP_CALLOUT_NAME: + { + int id; + + id = p->callout_name.id; + mem = p->callout_name.num; + fprintf(f, ":%d:%d", id, mem); } + break; +#endif + + case OP_TEXT_SEGMENT_BOUNDARY: + if (p->text_segment_boundary.not != 0) + fprintf(f, ":not"); + break; + + case OP_FINISH: + case OP_END: + case OP_ANYCHAR: + case OP_ANYCHAR_ML: + case OP_ANYCHAR_STAR: + case OP_ANYCHAR_ML_STAR: + case OP_WORD: + case OP_WORD_ASCII: + case OP_NO_WORD: + case OP_NO_WORD_ASCII: + case OP_BEGIN_BUF: + case OP_END_BUF: + case OP_BEGIN_LINE: + case OP_END_LINE: + case OP_SEMI_END_BUF: + case OP_BEGIN_POSITION: + case OP_BACKREF1: + case OP_BACKREF2: + case OP_FAIL: + case OP_POP_OUT: + case OP_PREC_READ_START: + case OP_PREC_READ_END: + case OP_PREC_READ_NOT_END: + case OP_ATOMIC_START: + case OP_ATOMIC_END: + case OP_LOOK_BEHIND_NOT_END: + case OP_RETURN: + break; + + default: + fprintf(stderr, "print_compiled_byte_code: undefined code %d\n", opcode); + break; } - if (nextp) *nextp = bp; } #endif /* ONIG_DEBUG */ @@ -596,21 +621,22 @@ onig_print_compiled_byte_code(FILE* f, UChar* bp, UChar** nextp, UChar* start, 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; + Operation* bp; + Operation* start = reg->ops; + Operation* end = reg->ops + reg->ops_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); + fprintf(f, "code-length: %d\n", reg->ops_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); + print_compiled_byte_code(f, reg, pos, start, reg->enc); fprintf(f, "\n"); + bp++; } fprintf(f, "\n"); } @@ -625,36 +651,38 @@ history_tree_clear(OnigCaptureTreeNode* node) { int i; - if (IS_NOT_NULL(node)) { - for (i = 0; i < node->num_childs; i++) { - if (IS_NOT_NULL(node->childs[i])) { - history_tree_free(node->childs[i]); - } - } - for (i = 0; i < node->allocated; i++) { - node->childs[i] = (OnigCaptureTreeNode* )0; + if (IS_NULL(node)) return ; + + for (i = 0; i < node->num_childs; i++) { + if (IS_NOT_NULL(node->childs[i])) { + history_tree_free(node->childs[i]); } - node->num_childs = 0; - node->beg = ONIG_REGION_NOTPOS; - node->end = ONIG_REGION_NOTPOS; - node->group = -1; } + for (i = 0; i < node->allocated; i++) { + node->childs[i] = (OnigCaptureTreeNode* )0; + } + node->num_childs = 0; + node->beg = ONIG_REGION_NOTPOS; + node->end = ONIG_REGION_NOTPOS; + node->group = -1; } static void history_tree_free(OnigCaptureTreeNode* node) { history_tree_clear(node); + if (IS_NOT_NULL(node->childs)) xfree(node->childs); + xfree(node); } static void history_root_free(OnigRegion* r) { - if (IS_NOT_NULL(r->history_root)) { - history_tree_free(r->history_root); - r->history_root = (OnigCaptureTreeNode* )0; - } + if (IS_NULL(r->history_root)) return ; + + history_tree_free(r->history_root); + r->history_root = (OnigCaptureTreeNode* )0; } static OnigCaptureTreeNode* @@ -664,9 +692,10 @@ history_node_new(void) node = (OnigCaptureTreeNode* )xmalloc(sizeof(OnigCaptureTreeNode)); CHECK_NULL_RETURN(node); + node->childs = (OnigCaptureTreeNode** )0; - node->allocated = 0; - node->num_childs = 0; + node->allocated = 0; + node->num_childs = 0; node->group = -1; node->beg = ONIG_REGION_NOTPOS; node->end = ONIG_REGION_NOTPOS; @@ -685,14 +714,14 @@ history_tree_add_child(OnigCaptureTreeNode* parent, OnigCaptureTreeNode* child) if (IS_NULL(parent->childs)) { n = HISTORY_TREE_INIT_ALLOC_SIZE; parent->childs = - (OnigCaptureTreeNode** )xmalloc(sizeof(OnigCaptureTreeNode*) * n); + (OnigCaptureTreeNode** )xmalloc(sizeof(parent->childs[0]) * n); } else { n = parent->allocated * 2; parent->childs = (OnigCaptureTreeNode** )xrealloc(parent->childs, - sizeof(OnigCaptureTreeNode*) * n, - sizeof(OnigCaptureTreeNode*) * parent->allocated); + sizeof(parent->childs[0]) * n, + sizeof(parent->childs[0]) * parent->allocated); } CHECK_NULL_RETURN_MEMERR(parent->childs); for (i = parent->allocated; i < n; i++) { @@ -783,13 +812,13 @@ static int onig_region_resize_clear(OnigRegion* region, int n) { int r; - + r = onig_region_resize(region, n); if (r != 0) return r; onig_region_clear(region); return 0; } - + extern int onig_region_set(OnigRegion* region, int at, int beg, int end) { @@ -799,7 +828,7 @@ onig_region_set(OnigRegion* region, int at, int beg, int end) int r = onig_region_resize(region, at + 1); if (r < 0) return r; } - + region->beg[at] = beg; region->end[at] = end; return 0; @@ -952,6 +981,8 @@ onig_region_copy(OnigRegion* to, OnigRegion* from) #define STK_CALL_FRAME 0x0400 #define STK_RETURN 0x0500 #define STK_SAVE_VAL 0x0600 +#define STK_PREC_READ_START 0x0700 +#define STK_PREC_READ_END 0x0800 /* stack type check mask */ #define STK_MASK_POP_USED STK_ALT_FLAG @@ -967,13 +998,13 @@ typedef struct _StackType { int zid; union { struct { - UChar *pcode; /* byte code position */ - UChar *pstr; /* string position */ - UChar *pstr_prev; /* previous char position of pstr */ + Operation* 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) */ + int count; /* for OP_REPEAT_INC, OP_REPEAT_INC_NG */ + Operation* pcode; /* byte code position (head of repeated target) */ } repeat; struct { StackIndex si; /* index of stack */ @@ -989,8 +1020,8 @@ typedef struct _StackType { } empty_check; #ifdef USE_CALL struct { - UChar *ret_addr; /* byte code position */ - UChar *pstr; /* string position */ + Operation *ret_addr; /* byte code position */ + UChar *pstr; /* string position */ } call_frame; #endif struct { @@ -1165,8 +1196,10 @@ onig_set_retry_limit_in_match(unsigned long size) #endif } +#ifdef USE_CALLOUT static OnigCalloutFunc DefaultProgressCallout; static OnigCalloutFunc DefaultRetractionCallout; +#endif extern OnigMatchParam* onig_new_match_param(void) @@ -1208,10 +1241,10 @@ onig_initialize_match_param(OnigMatchParam* mp) #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->progress_callout_of_contents = DefaultProgressCallout; + mp->retraction_callout_of_contents = DefaultRetractionCallout; mp->match_at_call_counter = 0; mp->callout_user_data = 0; mp->callout_data = 0; @@ -1226,7 +1259,7 @@ onig_initialize_match_param(OnigMatchParam* mp) static int adjust_match_param(regex_t* reg, OnigMatchParam* mp) { - RegexExt* ext = REG_EXTP(reg); + RegexExt* ext = reg->extp; mp->match_at_call_counter = 0; @@ -1514,8 +1547,8 @@ stack_double(int is_alloca, char** arg_alloc_base, #define STACK_PUSH_ALT(pat,s,sprev) STACK_PUSH(STK_ALT,pat,s,sprev) #define STACK_PUSH_SUPER_ALT(pat,s,sprev) STACK_PUSH(STK_SUPER_ALT,pat,s,sprev) -#define STACK_PUSH_POS(s,sprev) \ - STACK_PUSH(STK_TO_VOID_START,NULL_UCHARP,s,sprev) +#define STACK_PUSH_PREC_READ_START(s,sprev) \ + STACK_PUSH(STK_PREC_READ_START,(Operation* )0,s,sprev) #define STACK_PUSH_ALT_PREC_READ_NOT(pat,s,sprev) \ STACK_PUSH(STK_ALT_PREC_READ_NOT,pat,s,sprev) #define STACK_PUSH_TO_VOID_START STACK_PUSH_TYPE(STK_TO_VOID_START) @@ -1857,6 +1890,27 @@ stack_double(int is_alloca, char** arg_alloc_base, }\ } while(0) +#define STACK_GET_PREC_READ_START(k) do {\ + int level = 0;\ + k = stk;\ + while (1) {\ + k--;\ + STACK_BASE_CHECK(k, "STACK_GET_PREC_READ_START");\ + if (IS_TO_VOID_TARGET(k)) {\ + k->type = STK_VOID;\ + }\ + else if (k->type == STK_PREC_READ_START) {\ + if (level == 0) {\ + break;\ + }\ + level--;\ + }\ + else if (k->type == STK_PREC_READ_END) {\ + level++;\ + }\ + }\ +} while(0) + #define STACK_EMPTY_CHECK(isnull,sid,s) do {\ StackType* k = stk;\ while (1) {\ @@ -1883,7 +1937,7 @@ stack_double(int is_alloca, char** arg_alloc_base, }\ } while (0) -#ifdef USE_INSISTENT_CHECK_CAPTURES_IN_EMPTY_REPEAT +#ifdef USE_STUBBORN_CHECK_CAPTURES_IN_EMPTY_REPEAT #define STACK_EMPTY_CHECK_MEM(isnull,sid,s,reg) do {\ StackType* k = stk;\ while (1) {\ @@ -1897,9 +1951,10 @@ stack_double(int is_alloca, char** arg_alloc_base, }\ else {\ UChar* endp;\ + int level = 0;\ (isnull) = 1;\ while (k < stk) {\ - if (k->type == STK_MEM_START) {\ + if (k->type == STK_MEM_START && level == 0) {\ STACK_MEM_START_GET_PREV_END_ADDR(k, reg, endp);\ if (endp == 0) {\ (isnull) = 0; break;\ @@ -1911,6 +1966,12 @@ stack_double(int is_alloca, char** arg_alloc_base, (isnull) = -1; /* empty, but position changed */ \ }\ }\ + else if (k->type == STK_PREC_READ_START) {\ + level++;\ + }\ + else if (k->type == STK_PREC_READ_END) {\ + level--;\ + }\ k++;\ }\ break;\ @@ -1935,10 +1996,11 @@ stack_double(int is_alloca, char** arg_alloc_base, }\ else {\ UChar* endp;\ + int prec_level = 0;\ (isnull) = 1;\ while (k < stk) {\ if (k->type == STK_MEM_START) {\ - if (level == 0) {\ + if (level == 0 && prec_level == 0) {\ STACK_MEM_START_GET_PREV_END_ADDR(k, reg, endp);\ if (endp == 0) {\ (isnull) = 0; break;\ @@ -1957,6 +2019,12 @@ stack_double(int is_alloca, char** arg_alloc_base, else if (k->type == STK_EMPTY_CHECK_END) {\ if (k->zid == (sid)) level--;\ }\ + else if (k->type == STK_PREC_READ_START) {\ + prec_level++;\ + }\ + else if (k->type == STK_PREC_READ_END) {\ + prec_level--;\ + }\ k++;\ }\ break;\ @@ -1993,7 +2061,7 @@ stack_double(int is_alloca, char** arg_alloc_base, }\ }\ } while(0) -#endif /* USE_INSISTENT_CHECK_CAPTURES_IN_EMPTY_REPEAT */ +#endif /* USE_STUBBORN_CHECK_CAPTURES_IN_EMPTY_REPEAT */ #define STACK_GET_REPEAT(sid, k) do {\ int level = 0;\ @@ -2140,14 +2208,12 @@ make_capture_history_tree(OnigCaptureTreeNode* node, StackType** kp, #endif #ifdef USE_BACKREF_WITH_LEVEL -static int mem_is_in_memp(int mem, int num, UChar* memp) +static int mem_is_in_memp(int mem, int num, MemNumType* memp) { int i; - MemNumType m; for (i = 0; i < num; i++) { - GET_MEMNUM_INC(m, memp); - if (mem == (int )m) return 1; + if (mem == (int )memp[i]) return 1; } return 0; } @@ -2156,7 +2222,7 @@ 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, + int nest, int mem_num, MemNumType* memp, UChar** s, const UChar* send) { UChar *ss, *p, *pstart, *pend = NULL_UCHARP; @@ -2213,7 +2279,7 @@ backref_match_at_nested_level(regex_t* reg, static int backref_check_at_nested_level(regex_t* reg, StackType* top, StackType* stk_base, - int nest, int mem_num, UChar* memp) + int nest, int mem_num, MemNumType* memp) { int level; StackType* k; @@ -2338,6 +2404,85 @@ typedef struct { regoff_t rm_eo; } posix_regmatch_t; + + +#ifdef USE_THREADED_CODE + +#define BYTECODE_INTERPRETER_START GOTO_OP; +#define BYTECODE_INTERPRETER_END +#define CASE_OP(x) L_##x: SOP_IN(OP_##x); sbegin = s; MATCH_DEBUG_OUT(0) +#define DEFAULT_OP /* L_DEFAULT: */ +#define NEXT_OP sprev = sbegin; JUMP_OP +#define JUMP_OP GOTO_OP +#ifdef USE_DIRECT_THREADED_CODE +#define GOTO_OP goto *(p->opaddr) +#else +#define GOTO_OP goto *opcode_to_label[p->opcode] +#endif +#define BREAK_OP /* Nothing */ + +#else + +#define BYTECODE_INTERPRETER_START \ + while (1) {\ + MATCH_DEBUG_OUT(0)\ + sbegin = s;\ + switch (p->opcode) { +#define BYTECODE_INTERPRETER_END } sprev = sbegin; } +#define CASE_OP(x) case OP_##x: SOP_IN(OP_##x); +#define DEFAULT_OP default: +#define NEXT_OP break +#define JUMP_OP GOTO_OP +#define GOTO_OP continue; break +#define BREAK_OP break + +#endif /* USE_THREADED_CODE */ + +#define INC_OP p++ +#define NEXT_OUT SOP_OUT; NEXT_OP +#define JUMP_OUT SOP_OUT; JUMP_OP +#define BREAK_OUT SOP_OUT; BREAK_OP +#define CHECK_INTERRUPT_JUMP_OUT SOP_OUT; CHECK_INTERRUPT_IN_MATCH; JUMP_OP + + +#ifdef ONIG_DEBUG_MATCH +#define MATCH_DEBUG_OUT(offset) do {\ + Operation *xp;\ + UChar *q, *bp, buf[50];\ + int len, spos;\ + spos = IS_NOT_NULL(s) ? (int )(s - str) : -1;\ + xp = p - (offset);\ + fprintf(stderr, "%7u: %7ld: %4d> \"",\ + counter, GET_STACK_INDEX(stk), spos);\ + counter++;\ + bp = buf;\ + if (IS_NOT_NULL(s)) {\ + for (i = 0, q = s; i < 7 && q < end; i++) {\ + len = enclen(encode, q);\ + while (len-- > 0) *bp++ = *q++;\ + }\ + if (q < end) { xmemcpy(bp, "...\"", 4); bp += 4; }\ + else { xmemcpy(bp, "\"", 1); bp += 1; }\ + }\ + else {\ + xmemcpy(bp, "\"", 1); bp += 1;\ + }\ + *bp = 0;\ + fputs((char* )buf, stderr);\ + for (i = 0; i < 20 - (bp - buf); i++) fputc(' ', stderr);\ + if (xp == FinishCode)\ + fprintf(stderr, "----: finish");\ + else {\ + fprintf(stderr, "%4d: ", (int )(xp - reg->ops));\ + print_compiled_byte_code(stderr, reg, (int )(xp - reg->ops), reg->ops, encode);\ + }\ + fprintf(stderr, "\n");\ + } while(0); +#else +#define MATCH_DEBUG_OUT(offset) +#endif + + /* match data(str - end) from position (sstart). */ /* if sstart == str then set sprev to NULL. */ static int @@ -2345,13 +2490,118 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, const UChar* in_right_range, const UChar* sstart, UChar* sprev, MatchArg* msa) { - static UChar FinishCode[] = { OP_FINISH }; + +#if defined(USE_DIRECT_THREADED_CODE) + static Operation FinishCode[] = { { .opaddr=&&L_FINISH } }; +#else + static Operation FinishCode[] = { { OP_FINISH } }; +#endif + +#ifdef USE_THREADED_CODE + static const void *opcode_to_label[] = { + &&L_FINISH, + &&L_END, + &&L_EXACT1, + &&L_EXACT2, + &&L_EXACT3, + &&L_EXACT4, + &&L_EXACT5, + &&L_EXACTN, + &&L_EXACTMB2N1, + &&L_EXACTMB2N2, + &&L_EXACTMB2N3, + &&L_EXACTMB2N, + &&L_EXACTMB3N, + &&L_EXACTMBN, + &&L_EXACT1_IC, + &&L_EXACTN_IC, + &&L_CCLASS, + &&L_CCLASS_MB, + &&L_CCLASS_MIX, + &&L_CCLASS_NOT, + &&L_CCLASS_MB_NOT, + &&L_CCLASS_MIX_NOT, + &&L_ANYCHAR, + &&L_ANYCHAR_ML, + &&L_ANYCHAR_STAR, + &&L_ANYCHAR_ML_STAR, + &&L_ANYCHAR_STAR_PEEK_NEXT, + &&L_ANYCHAR_ML_STAR_PEEK_NEXT, + &&L_WORD, + &&L_WORD_ASCII, + &&L_NO_WORD, + &&L_NO_WORD_ASCII, + &&L_WORD_BOUNDARY, + &&L_NO_WORD_BOUNDARY, + &&L_WORD_BEGIN, + &&L_WORD_END, + &&L_TEXT_SEGMENT_BOUNDARY, + &&L_BEGIN_BUF, + &&L_END_BUF, + &&L_BEGIN_LINE, + &&L_END_LINE, + &&L_SEMI_END_BUF, + &&L_BEGIN_POSITION, + &&L_BACKREF1, + &&L_BACKREF2, + &&L_BACKREF_N, + &&L_BACKREF_N_IC, + &&L_BACKREF_MULTI, + &&L_BACKREF_MULTI_IC, + &&L_BACKREF_WITH_LEVEL, + &&L_BACKREF_WITH_LEVEL_IC, + &&L_BACKREF_CHECK, + &&L_BACKREF_CHECK_WITH_LEVEL, + &&L_MEMORY_START, + &&L_MEMORY_START_PUSH, + &&L_MEMORY_END_PUSH, + &&L_MEMORY_END_PUSH_REC, + &&L_MEMORY_END, + &&L_MEMORY_END_REC, + &&L_FAIL, + &&L_JUMP, + &&L_PUSH, + &&L_PUSH_SUPER, + &&L_POP_OUT, +#ifdef USE_OP_PUSH_OR_JUMP_EXACT + &&L_PUSH_OR_JUMP_EXACT1, +#endif + &&L_PUSH_IF_PEEK_NEXT, + &&L_REPEAT, + &&L_REPEAT_NG, + &&L_REPEAT_INC, + &&L_REPEAT_INC_NG, + &&L_REPEAT_INC_SG, + &&L_REPEAT_INC_NG_SG, + &&L_EMPTY_CHECK_START, + &&L_EMPTY_CHECK_END, + &&L_EMPTY_CHECK_END_MEMST, + &&L_EMPTY_CHECK_END_MEMST_PUSH, + &&L_PREC_READ_START, + &&L_PREC_READ_END, + &&L_PREC_READ_NOT_START, + &&L_PREC_READ_NOT_END, + &&L_ATOMIC_START, + &&L_ATOMIC_END, + &&L_LOOK_BEHIND, + &&L_LOOK_BEHIND_NOT_START, + &&L_LOOK_BEHIND_NOT_END, + &&L_CALL, + &&L_RETURN, + &&L_PUSH_SAVE_VAL, + &&L_UPDATE_VAR, +#ifdef USE_CALLOUT + &&L_CALLOUT_CONTENTS, + &&L_CALLOUT_NAME, +#endif + }; +#endif int i, n, num_mem, best_len, pop_level; LengthType tlen, tlen2; MemNumType mem; RelAddrType addr; - UChar *s, *q, *sbegin; + UChar *s, *q, *ps, *sbegin; UChar *right_range; int is_alloca; char *alloc_base; @@ -2370,11 +2620,27 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, int of; #endif - UChar *p = reg->p; + Operation* p = reg->ops; OnigOptionType option = reg->options; OnigEncoding encode = reg->enc; OnigCaseFoldType case_fold_flag = reg->case_fold_flag; +#ifdef ONIG_DEBUG_MATCH + static unsigned int counter = 1; +#endif + +#ifdef USE_DIRECT_THREADED_CODE + if (IS_NULL(msa)) { + for (i = 0; i < reg->ops_used; i++) { + const void* addr; + addr = opcode_to_label[reg->ocs[i]]; + p->opaddr = addr; + p++; + } + return ONIG_NORMAL; + } +#endif + #ifdef USE_CALLOUT msa->mp->match_at_call_counter++; #endif @@ -2407,40 +2673,8 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, 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, "%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++; - } - 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); - 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: SOP_IN(OP_END); + BYTECODE_INTERPRETER_START { + CASE_OP(END) n = (int )(s - sstart); if (n > best_len) { OnigRegion* region; @@ -2552,16 +2786,16 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, /* default behavior: return first-matching result. */ goto finish; - break; - case OP_EXACT1: SOP_IN(OP_EXACT1); + CASE_OP(EXACT1) DATA_ENSURE(1); - if (*p != *s) goto fail; - p++; s++; - SOP_OUT; - break; + ps = p->exact.s; + if (*ps != *s) goto fail; + s++; + INC_OP; + NEXT_OUT; - case OP_EXACT1_IC: SOP_IN(OP_EXACT1_IC); + CASE_OP(EXACT1_IC) { int len; UChar *q, lowbuf[ONIGENC_MBC_CASE_FOLD_MAXLEN]; @@ -2573,92 +2807,91 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, &s, end, lowbuf); DATA_ENSURE(0); q = lowbuf; + ps = p->exact.s; while (len-- > 0) { - if (*p != *q) { - goto fail; - } - p++; q++; + if (*ps != *q) goto fail; + ps++; q++; } } - SOP_OUT; - break; + INC_OP; + NEXT_OUT; - case OP_EXACT2: SOP_IN(OP_EXACT2); + CASE_OP(EXACT2) DATA_ENSURE(2); - if (*p != *s) goto fail; - p++; s++; - if (*p != *s) goto fail; + ps = p->exact.s; + if (*ps != *s) goto fail; + ps++; s++; + if (*ps != *s) goto fail; sprev = s; - p++; s++; - SOP_OUT; - continue; - break; + s++; + INC_OP; + JUMP_OUT; - case OP_EXACT3: SOP_IN(OP_EXACT3); + CASE_OP(EXACT3) DATA_ENSURE(3); - if (*p != *s) goto fail; - p++; s++; - if (*p != *s) goto fail; - p++; s++; - if (*p != *s) goto fail; + ps = p->exact.s; + if (*ps != *s) goto fail; + ps++; s++; + if (*ps != *s) goto fail; + ps++; s++; + if (*ps != *s) goto fail; sprev = s; - p++; s++; - SOP_OUT; - continue; - break; + s++; + INC_OP; + JUMP_OUT; - case OP_EXACT4: SOP_IN(OP_EXACT4); + CASE_OP(EXACT4) DATA_ENSURE(4); - 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; + ps = p->exact.s; + if (*ps != *s) goto fail; + ps++; s++; + if (*ps != *s) goto fail; + ps++; s++; + if (*ps != *s) goto fail; + ps++; s++; + if (*ps != *s) goto fail; sprev = s; - p++; s++; - SOP_OUT; - continue; - break; + s++; + INC_OP; + JUMP_OUT; - case OP_EXACT5: SOP_IN(OP_EXACT5); + CASE_OP(EXACT5) DATA_ENSURE(5); - 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; + ps = p->exact.s; + if (*ps != *s) goto fail; + ps++; s++; + if (*ps != *s) goto fail; + ps++; s++; + if (*ps != *s) goto fail; + ps++; s++; + if (*ps != *s) goto fail; + ps++; s++; + if (*ps != *s) goto fail; sprev = s; - p++; s++; - SOP_OUT; - continue; - break; + s++; + INC_OP; + JUMP_OUT; - case OP_EXACTN: SOP_IN(OP_EXACTN); - GET_LENGTH_INC(tlen, p); + CASE_OP(EXACTN) + tlen = p->exact_n.n; DATA_ENSURE(tlen); + ps = p->exact_n.s; while (tlen-- > 0) { - if (*p++ != *s++) goto fail; + if (*ps++ != *s++) goto fail; } sprev = s - 1; - SOP_OUT; - continue; - break; + INC_OP; + JUMP_OUT; - case OP_EXACTN_IC: SOP_IN(OP_EXACTN_IC); + CASE_OP(EXACTN_IC) { int len; UChar *q, *endp, lowbuf[ONIGENC_MBC_CASE_FOLD_MAXLEN]; - GET_LENGTH_INC(tlen, p); - endp = p + tlen; - - while (p < endp) { + tlen = p->exact_n.n; + ps = p->exact_n.s; + endp = ps + tlen; + while (ps < endp) { sprev = s; DATA_ENSURE(1); len = ONIGENC_MBC_CASE_FOLD(encode, @@ -2668,116 +2901,115 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, DATA_ENSURE(0); q = lowbuf; while (len-- > 0) { - if (*p != *q) goto fail; - p++; q++; + if (*ps != *q) goto fail; + ps++; q++; } } } - SOP_OUT; - continue; - break; + INC_OP; + JUMP_OUT; - case OP_EXACTMB2N1: SOP_IN(OP_EXACTMB2N1); + CASE_OP(EXACTMB2N1) DATA_ENSURE(2); - if (*p != *s) goto fail; - p++; s++; - if (*p != *s) goto fail; - p++; s++; - SOP_OUT; - break; - - case OP_EXACTMB2N2: SOP_IN(OP_EXACTMB2N2); + ps = p->exact.s; + if (*ps != *s) goto fail; + ps++; s++; + if (*ps != *s) goto fail; + s++; + INC_OP; + NEXT_OUT; + + CASE_OP(EXACTMB2N2) DATA_ENSURE(4); - if (*p != *s) goto fail; - p++; s++; - if (*p != *s) goto fail; - p++; s++; + ps = p->exact.s; + if (*ps != *s) goto fail; + ps++; s++; + if (*ps != *s) goto fail; + ps++; s++; sprev = s; - if (*p != *s) goto fail; - p++; s++; - if (*p != *s) goto fail; - p++; s++; - SOP_OUT; - continue; - break; - - case OP_EXACTMB2N3: SOP_IN(OP_EXACTMB2N3); + if (*ps != *s) goto fail; + ps++; s++; + if (*ps != *s) goto fail; + s++; + INC_OP; + JUMP_OUT; + + CASE_OP(EXACTMB2N3) DATA_ENSURE(6); - 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++; + ps = p->exact.s; + if (*ps != *s) goto fail; + ps++; s++; + if (*ps != *s) goto fail; + ps++; s++; + if (*ps != *s) goto fail; + ps++; s++; + if (*ps != *s) goto fail; + ps++; s++; sprev = s; - if (*p != *s) goto fail; - p++; s++; - if (*p != *s) goto fail; - p++; s++; - SOP_OUT; - continue; - break; - - case OP_EXACTMB2N: SOP_IN(OP_EXACTMB2N); - GET_LENGTH_INC(tlen, p); + if (*ps != *s) goto fail; + ps++; s++; + if (*ps != *s) goto fail; + ps++; s++; + INC_OP; + JUMP_OUT; + + CASE_OP(EXACTMB2N) + tlen = p->exact_n.n; DATA_ENSURE(tlen * 2); + ps = p->exact_n.s; while (tlen-- > 0) { - if (*p != *s) goto fail; - p++; s++; - if (*p != *s) goto fail; - p++; s++; + if (*ps != *s) goto fail; + ps++; s++; + if (*ps != *s) goto fail; + ps++; s++; } sprev = s - 2; - SOP_OUT; - continue; - break; + INC_OP; + JUMP_OUT; - case OP_EXACTMB3N: SOP_IN(OP_EXACTMB3N); - GET_LENGTH_INC(tlen, p); + CASE_OP(EXACTMB3N) + tlen = p->exact_n.n; DATA_ENSURE(tlen * 3); + ps = p->exact_n.s; 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 (*ps != *s) goto fail; + ps++; s++; + if (*ps != *s) goto fail; + ps++; s++; + if (*ps != *s) goto fail; + ps++; s++; } sprev = s - 3; - SOP_OUT; - continue; - break; + INC_OP; + JUMP_OUT; - case OP_EXACTMBN: SOP_IN(OP_EXACTMBN); - GET_LENGTH_INC(tlen, p); /* mb-len */ - GET_LENGTH_INC(tlen2, p); /* string len */ + CASE_OP(EXACTMBN) + tlen = p->exact_len_n.len; /* mb byte len */ + tlen2 = p->exact_len_n.n; /* number of chars */ tlen2 *= tlen; DATA_ENSURE(tlen2); + ps = p->exact_len_n.s; while (tlen2-- > 0) { - if (*p != *s) goto fail; - p++; s++; + if (*ps != *s) goto fail; + ps++; s++; } sprev = s - tlen; - SOP_OUT; - continue; - break; + INC_OP; + JUMP_OUT; - case OP_CCLASS: SOP_IN(OP_CCLASS); + CASE_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 */ - SOP_OUT; - break; + if (BITSET_AT(p->cclass.bsp, *s) == 0) goto fail; + s++; + INC_OP; + NEXT_OUT; - case OP_CCLASS_MB: SOP_IN(OP_CCLASS_MB); + CASE_OP(CCLASS_MB) + DATA_ENSURE(1); if (! ONIGENC_IS_MBC_HEAD(encode, s)) goto fail; cclass_mb: - GET_LENGTH_INC(tlen, p); { OnigCodePoint code; UChar *ss; @@ -2789,56 +3021,40 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, 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; -#else - q = p; - ALIGNMENT_RIGHT(q); - if (! onig_is_in_code_range(q, code)) goto fail; -#endif + if (! onig_is_in_code_range(p->cclass_mb.mb, code)) goto fail; } - p += tlen; - SOP_OUT; - break; + INC_OP; + NEXT_OUT; - case OP_CCLASS_MIX: SOP_IN(OP_CCLASS_MIX); + CASE_OP(CCLASS_MIX) DATA_ENSURE(1); if (ONIGENC_IS_MBC_HEAD(encode, s)) { - p += SIZE_BITSET; goto cclass_mb; } else { - if (BITSET_AT(((BitSetRef )p), *s) == 0) + if (BITSET_AT(p->cclass_mix.bsp, *s) == 0) goto fail; - p += SIZE_BITSET; - GET_LENGTH_INC(tlen, p); - p += tlen; s++; } - SOP_OUT; - break; + INC_OP; + NEXT_OUT; - case OP_CCLASS_NOT: SOP_IN(OP_CCLASS_NOT); + CASE_OP(CCLASS_NOT) DATA_ENSURE(1); - if (BITSET_AT(((BitSetRef )p), *s) != 0) goto fail; - p += SIZE_BITSET; + if (BITSET_AT(p->cclass.bsp, *s) != 0) goto fail; s += enclen(encode, s); - SOP_OUT; - break; + INC_OP; + NEXT_OUT; - case OP_CCLASS_MB_NOT: SOP_IN(OP_CCLASS_MB_NOT); + CASE_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; } cclass_mb_not: - GET_LENGTH_INC(tlen, p); { OnigCodePoint code; UChar *ss; @@ -2847,85 +3063,52 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, if (! DATA_ENSURE_CHECK(mb_len)) { DATA_ENSURE(1); s = (UChar* )end; - p += tlen; goto cc_mb_not_success; } 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; -#else - q = p; - ALIGNMENT_RIGHT(q); - if (onig_is_in_code_range(q, code)) goto fail; -#endif + if (onig_is_in_code_range(p->cclass_mb.mb, code)) goto fail; } - p += tlen; cc_mb_not_success: - SOP_OUT; - break; + INC_OP; + NEXT_OUT; - case OP_CCLASS_MIX_NOT: SOP_IN(OP_CCLASS_MIX_NOT); + CASE_OP(CCLASS_MIX_NOT) DATA_ENSURE(1); if (ONIGENC_IS_MBC_HEAD(encode, s)) { - p += SIZE_BITSET; goto cclass_mb_not; } else { - if (BITSET_AT(((BitSetRef )p), *s) != 0) + if (BITSET_AT(p->cclass_mix.bsp, *s) != 0) goto fail; - p += SIZE_BITSET; - GET_LENGTH_INC(tlen, p); - p += tlen; s++; } - SOP_OUT; - break; - -#ifdef USE_OP_CCLASS_NODE - case OP_CCLASS_NODE: SOP_IN(OP_CCLASS_NODE); - { - 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; - } - SOP_OUT; - break; -#endif + INC_OP; + NEXT_OUT; - case OP_ANYCHAR: SOP_IN(OP_ANYCHAR); + CASE_OP(ANYCHAR) DATA_ENSURE(1); n = enclen(encode, s); DATA_ENSURE(n); if (ONIGENC_IS_MBC_NEWLINE(encode, s, end)) goto fail; s += n; - SOP_OUT; - break; + INC_OP; + NEXT_OUT; - case OP_ANYCHAR_ML: SOP_IN(OP_ANYCHAR_ML); + CASE_OP(ANYCHAR_ML) DATA_ENSURE(1); n = enclen(encode, s); DATA_ENSURE(n); s += n; - SOP_OUT; - break; + INC_OP; + NEXT_OUT; - case OP_ANYCHAR_STAR: SOP_IN(OP_ANYCHAR_STAR); + CASE_OP(ANYCHAR_STAR) + INC_OP; while (DATA_ENSURE_CHECK1) { STACK_PUSH_ALT(p, s, sprev); n = enclen(encode, s); @@ -2934,11 +3117,10 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, sprev = s; s += n; } - SOP_OUT; - continue; - break; + JUMP_OUT; - case OP_ANYCHAR_ML_STAR: SOP_IN(OP_ANYCHAR_ML_STAR); + CASE_OP(ANYCHAR_ML_STAR) + INC_OP; while (DATA_ENSURE_CHECK1) { STACK_PUSH_ALT(p, s, sprev); n = enclen(encode, s); @@ -2952,86 +3134,92 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, s++; } } - SOP_OUT; - continue; - break; + JUMP_OUT; - 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); - DATA_ENSURE(n); - if (ONIGENC_IS_MBC_NEWLINE(encode, s, end)) goto fail; - sprev = s; - s += n; - } - p++; - SOP_OUT; - break; + CASE_OP(ANYCHAR_STAR_PEEK_NEXT) + { + UChar c; - 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) { + c = p->anychar_star_peek_next.c; + INC_OP; + while (DATA_ENSURE_CHECK1) { + if (c == *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; } - else { - sprev = s; - s++; + } + NEXT_OUT; + + CASE_OP(ANYCHAR_ML_STAR_PEEK_NEXT) + { + UChar c; + + c = p->anychar_star_peek_next.c; + INC_OP; + while (DATA_ENSURE_CHECK1) { + if (c == *s) { + STACK_PUSH_ALT(p, s, sprev); + } + n = enclen(encode, s); + if (n > 1) { + DATA_ENSURE(n); + sprev = s; + s += n; + } + else { + sprev = s; + s++; + } } } - p++; - SOP_OUT; - break; + NEXT_OUT; - case OP_WORD: SOP_IN(OP_WORD); + CASE_OP(WORD) DATA_ENSURE(1); if (! ONIGENC_IS_MBC_WORD(encode, s, end)) goto fail; s += enclen(encode, s); - SOP_OUT; - break; + INC_OP; + NEXT_OUT; - case OP_WORD_ASCII: SOP_IN(OP_WORD_ASCII); + CASE_OP(WORD_ASCII) DATA_ENSURE(1); if (! ONIGENC_IS_MBC_WORD_ASCII(encode, s, end)) goto fail; s += enclen(encode, s); - SOP_OUT; - break; + INC_OP; + NEXT_OUT; - case OP_NO_WORD: SOP_IN(OP_NO_WORD); + CASE_OP(NO_WORD) DATA_ENSURE(1); if (ONIGENC_IS_MBC_WORD(encode, s, end)) goto fail; s += enclen(encode, s); - SOP_OUT; - break; + INC_OP; + NEXT_OUT; - case OP_NO_WORD_ASCII: SOP_IN(OP_NO_WORD_ASCII); + CASE_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; + INC_OP; + NEXT_OUT; - case OP_WORD_BOUNDARY: SOP_IN(OP_WORD_BOUNDARY); + CASE_OP(WORD_BOUNDARY) { ModeType mode; - GET_MODE_INC(mode, p); /* ascii_mode */ + mode = p->word_boundary.mode; if (ON_STR_BEGIN(s)) { DATA_ENSURE(1); if (! IS_MBC_WORD_ASCII_MODE(encode, s, end, mode)) @@ -3047,15 +3235,14 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, goto fail; } } - SOP_OUT; - continue; - break; + INC_OP; + JUMP_OUT; - case OP_NO_WORD_BOUNDARY: SOP_IN(OP_NO_WORD_BOUNDARY); + CASE_OP(NO_WORD_BOUNDARY) { ModeType mode; - GET_MODE_INC(mode, p); /* ascii_mode */ + mode = p->word_boundary.mode; if (ON_STR_BEGIN(s)) { if (DATA_ENSURE_CHECK1 && IS_MBC_WORD_ASCII_MODE(encode, s, end, mode)) goto fail; @@ -3070,190 +3257,189 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, goto fail; } } - SOP_OUT; - continue; - break; + INC_OP; + JUMP_OUT; #ifdef USE_WORD_BEGIN_END - case OP_WORD_BEGIN: SOP_IN(OP_WORD_BEGIN); + CASE_OP(WORD_BEGIN) { ModeType mode; - GET_MODE_INC(mode, p); /* ascii_mode */ + mode = p->word_boundary.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; + INC_OP; + JUMP_OUT; } } } goto fail; - break; - case OP_WORD_END: SOP_IN(OP_WORD_END); + CASE_OP(WORD_END) { ModeType mode; - GET_MODE_INC(mode, p); /* ascii_mode */ + mode = p->word_boundary.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; + INC_OP; + JUMP_OUT; } } } goto fail; - break; #endif - 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(TEXT_SEGMENT_BOUNDARY) + { + int is_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; + switch (p->text_segment_boundary.type) { + case EXTENDED_GRAPHEME_CLUSTER_BOUNDARY: + is_break = onigenc_egcb_is_break_position(encode, s, sprev, str, end); + break; +#ifdef USE_UNICODE_WORD_BREAK + case WORD_BOUNDARY: + is_break = onigenc_wb_is_break_position(encode, s, sprev, str, end); + break; +#endif + default: + goto bytecode_error; + break; + } - SOP_OUT; - continue; - break; + if (p->text_segment_boundary.not != 0) + is_break = ! is_break; - case OP_BEGIN_BUF: SOP_IN(OP_BEGIN_BUF); + if (is_break != 0) { + INC_OP; + JUMP_OUT; + } + else { + goto fail; + } + } + + CASE_OP(BEGIN_BUF) if (! ON_STR_BEGIN(s)) goto fail; - SOP_OUT; - continue; - break; + INC_OP; + JUMP_OUT; - case OP_END_BUF: SOP_IN(OP_END_BUF); + CASE_OP(END_BUF) if (! ON_STR_END(s)) goto fail; - SOP_OUT; - continue; - break; + INC_OP; + JUMP_OUT; - case OP_BEGIN_LINE: SOP_IN(OP_BEGIN_LINE); + CASE_OP(BEGIN_LINE) if (ON_STR_BEGIN(s)) { if (IS_NOTBOL(msa->options)) goto fail; - SOP_OUT; - continue; + INC_OP; + JUMP_OUT; } else if (ONIGENC_IS_MBC_NEWLINE(encode, sprev, end) && !ON_STR_END(s)) { - SOP_OUT; - continue; + INC_OP; + JUMP_OUT; } goto fail; - break; - case OP_END_LINE: SOP_IN(OP_END_LINE); + CASE_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)) { #endif if (IS_NOTEOL(msa->options)) goto fail; - SOP_OUT; - continue; + INC_OP; + JUMP_OUT; #ifndef USE_NEWLINE_AT_END_OF_STRING_HAS_EMPTY_LINE } #endif } else if (ONIGENC_IS_MBC_NEWLINE(encode, s, end)) { - SOP_OUT; - continue; + INC_OP; + JUMP_OUT; } #ifdef USE_CRNL_AS_LINE_TERMINATOR else if (ONIGENC_IS_MBC_CRNL(encode, s, end)) { - SOP_OUT; - continue; + INC_OP; + JUMP_OUT; } #endif goto fail; - break; - case OP_SEMI_END_BUF: SOP_IN(OP_SEMI_END_BUF); + CASE_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)) { #endif if (IS_NOTEOL(msa->options)) goto fail; - SOP_OUT; - continue; + INC_OP; + JUMP_OUT; #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))) { - SOP_OUT; - continue; + INC_OP; + JUMP_OUT; } #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); if (ON_STR_END(ss)) { - SOP_OUT; - continue; + INC_OP; + JUMP_OUT; } } #endif goto fail; - break; - case OP_BEGIN_POSITION: SOP_IN(OP_BEGIN_POSITION); + CASE_OP(BEGIN_POSITION) if (s != msa->start) goto fail; - SOP_OUT; - continue; - break; + INC_OP; + JUMP_OUT; - case OP_MEMORY_START_PUSH: SOP_IN(OP_MEMORY_START_PUSH); - GET_MEMNUM_INC(mem, p); + CASE_OP(MEMORY_START_PUSH) + mem = p->memory_start.num; STACK_PUSH_MEM_START(mem, s); - SOP_OUT; - continue; - break; + INC_OP; + JUMP_OUT; - case OP_MEMORY_START: SOP_IN(OP_MEMORY_START); - GET_MEMNUM_INC(mem, p); + CASE_OP(MEMORY_START) + mem = p->memory_start.num; mem_start_stk[mem] = (StackIndex )((void* )s); - SOP_OUT; - continue; - break; + INC_OP; + JUMP_OUT; - case OP_MEMORY_END_PUSH: SOP_IN(OP_MEMORY_END_PUSH); - GET_MEMNUM_INC(mem, p); + CASE_OP(MEMORY_END_PUSH) + mem = p->memory_end.num; STACK_PUSH_MEM_END(mem, s); - SOP_OUT; - continue; - break; + INC_OP; + JUMP_OUT; - case OP_MEMORY_END: SOP_IN(OP_MEMORY_END); - GET_MEMNUM_INC(mem, p); + CASE_OP(MEMORY_END) + mem = p->memory_end.num; mem_end_stk[mem] = (StackIndex )((void* )s); - SOP_OUT; - continue; - break; + INC_OP; + JUMP_OUT; #ifdef USE_CALL - case OP_MEMORY_END_PUSH_REC: SOP_IN(OP_MEMORY_END_PUSH_REC); - GET_MEMNUM_INC(mem, p); + CASE_OP(MEMORY_END_PUSH_REC) + mem = p->memory_end.num; STACK_GET_MEM_START(mem, stkp); /* should be before push mem-end. */ + si = GET_STACK_INDEX(stkp); STACK_PUSH_MEM_END(mem, s); - mem_start_stk[mem] = GET_STACK_INDEX(stkp); - SOP_OUT; - continue; - break; + mem_start_stk[mem] = si; + INC_OP; + JUMP_OUT; - case OP_MEMORY_END_REC: SOP_IN(OP_MEMORY_END_REC); - GET_MEMNUM_INC(mem, p); + CASE_OP(MEMORY_END_REC) + mem = p->memory_end.num; mem_end_stk[mem] = (StackIndex )((void* )s); STACK_GET_MEM_START(mem, stkp); @@ -3263,23 +3449,20 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, mem_start_stk[mem] = (StackIndex )((void* )stkp->u.mem.pstr); STACK_PUSH_MEM_END_MARK(mem); - SOP_OUT; - continue; - break; + INC_OP; + JUMP_OUT; #endif - case OP_BACKREF1: SOP_IN(OP_BACKREF1); + CASE_OP(BACKREF1) mem = 1; goto backref; - break; - case OP_BACKREF2: SOP_IN(OP_BACKREF2); + CASE_OP(BACKREF2) mem = 2; goto backref; - break; - case OP_BACKREF_N: SOP_IN(OP_BACKREF_N); - GET_MEMNUM_INC(mem, p); + CASE_OP(BACKREF_N) + mem = p->backref_n.n1; backref: { int len; @@ -3297,19 +3480,19 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, ? 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; - - SOP_OUT; - continue; + if (n != 0) { + DATA_ENSURE(n); + sprev = s; + STRING_CMP(s, pstart, n); + while (sprev + (len = enclen(encode, sprev)) < s) + sprev += len; + } } - break; + INC_OP; + JUMP_OUT; - case OP_BACKREF_N_IC: SOP_IN(OP_BACKREF_N_IC); - GET_MEMNUM_INC(mem, p); + CASE_OP(BACKREF_N_IC) + mem = p->backref_n.n1; { int len; UChar *pstart, *pend; @@ -3326,25 +3509,25 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, ? 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; - - SOP_OUT; - continue; + if (n != 0) { + DATA_ENSURE(n); + sprev = s; + STRING_CMP_IC(case_fold_flag, pstart, &s, n); + while (sprev + (len = enclen(encode, sprev)) < s) + sprev += len; + } } - break; + INC_OP; + JUMP_OUT; - case OP_BACKREF_MULTI: SOP_IN(OP_BACKREF_MULTI); + CASE_OP(BACKREF_MULTI) { int len, is_fail; UChar *pstart, *pend, *swork; - GET_LENGTH_INC(tlen, p); + tlen = p->backref_general.num; for (i = 0; i < tlen; i++) { - GET_MEMNUM_INC(mem, p); + mem = tlen == 1 ? p->backref_general.n1 : p->backref_general.ns[i]; if (mem_end_stk[mem] == INVALID_STACK_INDEX) continue; if (mem_start_stk[mem] == INVALID_STACK_INDEX) continue; @@ -3358,32 +3541,31 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, ? 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)); + if (n != 0) { + DATA_ENSURE(n); + sprev = s; + swork = s; + STRING_CMP_VALUE(swork, pstart, n, is_fail); + if (is_fail) continue; + s = swork; + while (sprev + (len = enclen(encode, sprev)) < s) + sprev += len; + } break; /* success */ } if (i == tlen) goto fail; - SOP_OUT; - continue; } - break; + INC_OP; + JUMP_OUT; - case OP_BACKREF_MULTI_IC: SOP_IN(OP_BACKREF_MULTI_IC); + CASE_OP(BACKREF_MULTI_IC) { int len, is_fail; UChar *pstart, *pend, *swork; - GET_LENGTH_INC(tlen, p); + tlen = p->backref_general.num; for (i = 0; i < tlen; i++) { - GET_MEMNUM_INC(mem, p); + mem = tlen == 1 ? p->backref_general.n1 : p->backref_general.ns[i]; if (mem_end_stk[mem] == INVALID_STACK_INDEX) continue; if (mem_start_stk[mem] == INVALID_STACK_INDEX) continue; @@ -3397,139 +3579,140 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, ? 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)); + if (n != 0) { + 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; + } break; /* success */ } if (i == tlen) goto fail; - SOP_OUT; - continue; } - break; + INC_OP; + JUMP_OUT; #ifdef USE_BACKREF_WITH_LEVEL - case OP_BACKREF_WITH_LEVEL: + CASE_OP(BACKREF_WITH_LEVEL_IC) + n = 1; /* ignore case */ + goto 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); - - 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) { + int level; + MemNumType* mems; + UChar* ssave; + + n = 0; + backref_with_level: + level = p->backref_general.nest_level; + tlen = p->backref_general.num; + mems = tlen == 1 ? &(p->backref_general.n1) : p->backref_general.ns; + + ssave = s; + if (backref_match_at_nested_level(reg, stk, stk_base, n, + case_fold_flag, level, (int )tlen, mems, &s, end)) { + if (ssave != s) { + sprev = ssave; while (sprev + (len = enclen(encode, sprev)) < s) sprev += len; } - p += (SIZE_MEMNUM * tlen); } else goto fail; - - SOP_OUT; - continue; } - break; + INC_OP; + JUMP_OUT; #endif - case OP_BACKREF_CHECK: SOP_IN(OP_BACKREF_CHECK); + CASE_OP(BACKREF_CHECK) { - GET_LENGTH_INC(tlen, p); - for (i = 0; i < tlen; i++) { - GET_MEMNUM_INC(mem, p); + MemNumType* mems; + + tlen = p->backref_general.num; + mems = tlen == 1 ? &(p->backref_general.n1) : p->backref_general.ns; + for (i = 0; i < tlen; i++) { + mem = mems[i]; 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; + INC_OP; + JUMP_OUT; #ifdef USE_BACKREF_WITH_LEVEL - case OP_BACKREF_CHECK_WITH_LEVEL: + CASE_OP(BACKREF_CHECK_WITH_LEVEL) { LengthType level; + MemNumType* mems; - GET_LENGTH_INC(level, p); - GET_LENGTH_INC(tlen, p); + level = p->backref_general.nest_level; + tlen = p->backref_general.num; + mems = tlen == 1 ? &(p->backref_general.n1) : p->backref_general.ns; if (backref_check_at_nested_level(reg, stk, stk_base, - (int )level, (int )tlen, p) != 0) { - p += (SIZE_MEMNUM * tlen); - } - else + (int )level, (int )tlen, mems) == 0) goto fail; - - SOP_OUT; - continue; } - break; + INC_OP; + JUMP_OUT; #endif - case OP_EMPTY_CHECK_START: SOP_IN(OP_EMPTY_CHECK_START); - GET_MEMNUM_INC(mem, p); /* mem: null check id */ + CASE_OP(EMPTY_CHECK_START) + mem = p->empty_check_start.mem; /* mem: null check id */ STACK_PUSH_EMPTY_CHECK_START(mem, s); - SOP_OUT; - continue; - break; + INC_OP; + JUMP_OUT; - case OP_EMPTY_CHECK_END: SOP_IN(OP_EMPTY_CHECK_END); + CASE_OP(EMPTY_CHECK_END) { int is_empty; - GET_MEMNUM_INC(mem, p); /* mem: null check id */ + mem = p->empty_check_end.mem; /* mem: null check id */ STACK_EMPTY_CHECK(is_empty, mem, s); + INC_OP; if (is_empty) { #ifdef ONIG_DEBUG_MATCH 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++) { +#if defined(ONIG_DEBUG) && !defined(USE_DIRECT_THREADED_CODE) + switch (p->opcode) { 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; + INC_OP; break; default: goto unexpected_bytecode_error; break; } +#else + INC_OP; +#endif } } - SOP_OUT; - continue; - break; + JUMP_OUT; -#ifdef USE_INSISTENT_CHECK_CAPTURES_IN_EMPTY_REPEAT - case OP_EMPTY_CHECK_END_MEMST: SOP_IN(OP_EMPTY_CHECK_END_MEMST); +#ifdef USE_STUBBORN_CHECK_CAPTURES_IN_EMPTY_REPEAT + CASE_OP(EMPTY_CHECK_END_MEMST) { int is_empty; - GET_MEMNUM_INC(mem, p); /* mem: null check id */ + mem = p->empty_check_end.mem; /* mem: null check id */ STACK_EMPTY_CHECK_MEM(is_empty, mem, s, reg); + INC_OP; if (is_empty) { #ifdef ONIG_DEBUG_MATCH fprintf(stderr, "EMPTY_CHECK_END_MEM: skip id:%d, s:%p\n", (int)mem, s); @@ -3538,23 +3721,21 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, goto empty_check_found; } } - SOP_OUT; - continue; - break; + JUMP_OUT; #endif #ifdef USE_CALL - case OP_EMPTY_CHECK_END_MEMST_PUSH: - SOP_IN(OP_EMPTY_CHECK_END_MEMST_PUSH); + CASE_OP(EMPTY_CHECK_END_MEMST_PUSH) { int is_empty; - GET_MEMNUM_INC(mem, p); /* mem: null check id */ -#ifdef USE_INSISTENT_CHECK_CAPTURES_IN_EMPTY_REPEAT + mem = p->empty_check_end.mem; /* mem: null check id */ +#ifdef USE_STUBBORN_CHECK_CAPTURES_IN_EMPTY_REPEAT STACK_EMPTY_CHECK_MEM_REC(is_empty, mem, s, reg); #else STACK_EMPTY_CHECK_REC(is_empty, mem, s); #endif + INC_OP; if (is_empty) { #ifdef ONIG_DEBUG_MATCH fprintf(stderr, "EMPTY_CHECK_END_MEM_PUSH: skip id:%d, s:%p\n", @@ -3567,113 +3748,108 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, STACK_PUSH_EMPTY_CHECK_END(mem); } } - SOP_OUT; - continue; - break; + JUMP_OUT; #endif - case OP_JUMP: SOP_IN(OP_JUMP); - GET_RELADDR_INC(addr, p); + CASE_OP(JUMP) + addr = p->jump.addr; p += addr; - SOP_OUT; - CHECK_INTERRUPT_IN_MATCH; - continue; - break; + CHECK_INTERRUPT_JUMP_OUT; - case OP_PUSH: SOP_IN(OP_PUSH); - GET_RELADDR_INC(addr, p); + CASE_OP(PUSH) + addr = p->push.addr; STACK_PUSH_ALT(p + addr, s, sprev); - SOP_OUT; - continue; - break; + INC_OP; + JUMP_OUT; - case OP_PUSH_SUPER: SOP_IN(OP_PUSH_SUPER); - GET_RELADDR_INC(addr, p); + CASE_OP(PUSH_SUPER) + addr = p->push.addr; STACK_PUSH_SUPER_ALT(p + addr, s, sprev); - SOP_OUT; - continue; - break; + INC_OP; + JUMP_OUT; - case OP_POP_OUT: SOP_IN(OP_POP_OUT); + CASE_OP(POP_OUT) STACK_POP_ONE; /* for stop backtrack */ /* CHECK_RETRY_LIMIT_IN_MATCH; */ - SOP_OUT; - continue; - break; + INC_OP; + JUMP_OUT; - 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); - SOP_OUT; - continue; - } - p += (addr + 1); - SOP_OUT; - continue; - break; + #ifdef USE_OP_PUSH_OR_JUMP_EXACT + CASE_OP(PUSH_OR_JUMP_EXACT1) + { + UChar c; - 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); - SOP_OUT; - continue; + addr = p->push_or_jump_exact1.addr; + c = p->push_or_jump_exact1.c; + if (DATA_ENSURE_CHECK1 && c == *s) { + STACK_PUSH_ALT(p + addr, s, sprev); + INC_OP; + JUMP_OUT; + } } - p++; - SOP_OUT; - continue; - break; + p += addr; + JUMP_OUT; +#endif - case OP_REPEAT: SOP_IN(OP_REPEAT); + CASE_OP(PUSH_IF_PEEK_NEXT) { - 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); + UChar c; - if (reg->repeat_range[mem].lower == 0) { + addr = p->push_if_peek_next.addr; + c = p->push_if_peek_next.c; + if (c == *s) { STACK_PUSH_ALT(p + addr, s, sprev); + INC_OP; + JUMP_OUT; } } - SOP_OUT; - continue; - break; + INC_OP; + JUMP_OUT; - case OP_REPEAT_NG: SOP_IN(OP_REPEAT_NG); - { - GET_MEMNUM_INC(mem, p); /* mem: OP_REPEAT ID */ - GET_RELADDR_INC(addr, p); + CASE_OP(REPEAT) + mem = p->repeat.id; /* mem: OP_REPEAT ID */ + addr = p->repeat.addr; - 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 + 1); - 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 + addr, s, sprev); } - SOP_OUT; - continue; - break; + INC_OP; + JUMP_OUT; - case OP_REPEAT_INC: SOP_IN(OP_REPEAT_INC); - GET_MEMNUM_INC(mem, p); /* mem: OP_REPEAT ID */ - si = repeat_stk[mem]; + CASE_OP(REPEAT_NG) + mem = p->repeat.id; /* mem: OP_REPEAT ID */ + addr = p->repeat.addr; + + STACK_ENSURE(1); + repeat_stk[mem] = GET_STACK_INDEX(stk); + STACK_PUSH_REPEAT(mem, p + 1); + + if (reg->repeat_range[mem].lower == 0) { + STACK_PUSH_ALT(p + 1, s, sprev); + p += addr; + } + else + INC_OP; + JUMP_OUT; + + CASE_OP(REPEAT_INC) + mem = p->repeat_inc.id; /* mem: OP_REPEAT ID */ + si = repeat_stk[mem]; stkp = STACK_AT(si); repeat_inc: stkp->u.repeat.count++; if (stkp->u.repeat.count >= reg->repeat_range[mem].upper) { /* end of repeat. Nothing to do. */ + INC_OP; } else if (stkp->u.repeat.count >= reg->repeat_range[mem].lower) { + INC_OP; STACK_PUSH_ALT(p, s, sprev); p = STACK_AT(si)->u.repeat.pcode; /* Don't use stkp after PUSH. */ } @@ -3681,20 +3857,16 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, p = stkp->u.repeat.pcode; } STACK_PUSH_REPEAT_INC(si); - SOP_OUT; - CHECK_INTERRUPT_IN_MATCH; - continue; - break; + CHECK_INTERRUPT_JUMP_OUT; - case OP_REPEAT_INC_SG: SOP_IN(OP_REPEAT_INC_SG); - GET_MEMNUM_INC(mem, p); /* mem: OP_REPEAT ID */ + CASE_OP(REPEAT_INC_SG) + mem = p->repeat_inc.id; /* mem: OP_REPEAT ID */ STACK_GET_REPEAT(mem, stkp); si = GET_STACK_INDEX(stkp); goto repeat_inc; - break; - case OP_REPEAT_INC_NG: SOP_IN(OP_REPEAT_INC_NG); - GET_MEMNUM_INC(mem, p); /* mem: OP_REPEAT ID */ + CASE_OP(REPEAT_INC_NG) + mem = p->repeat_inc.id; /* mem: OP_REPEAT ID */ si = repeat_stk[mem]; stkp = STACK_AT(si); @@ -3702,10 +3874,11 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, stkp->u.repeat.count++; if (stkp->u.repeat.count < reg->repeat_range[mem].upper) { if (stkp->u.repeat.count >= reg->repeat_range[mem].lower) { - UChar* pcode = stkp->u.repeat.pcode; + Operation* pcode = stkp->u.repeat.pcode; STACK_PUSH_REPEAT_INC(si); STACK_PUSH_ALT(pcode, s, sprev); + INC_OP; } else { p = stkp->u.repeat.pcode; @@ -3714,71 +3887,60 @@ 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); + INC_OP; } - SOP_OUT; - CHECK_INTERRUPT_IN_MATCH; - continue; - break; + CHECK_INTERRUPT_JUMP_OUT; - case OP_REPEAT_INC_NG_SG: SOP_IN(OP_REPEAT_INC_NG_SG); - GET_MEMNUM_INC(mem, p); /* mem: OP_REPEAT ID */ + CASE_OP(REPEAT_INC_NG_SG) + mem = p->repeat_inc.id; /* mem: OP_REPEAT ID */ STACK_GET_REPEAT(mem, stkp); si = GET_STACK_INDEX(stkp); goto repeat_inc_ng; - break; - - case OP_PREC_READ_START: SOP_IN(OP_PREC_READ_START); - STACK_PUSH_POS(s, sprev); - SOP_OUT; - continue; - break; - case OP_PREC_READ_END: SOP_IN(OP_PREC_READ_END); - { - STACK_EXEC_TO_VOID(stkp); - s = stkp->u.state.pstr; - sprev = stkp->u.state.pstr_prev; - } - SOP_OUT; - continue; - break; - - case OP_PREC_READ_NOT_START: SOP_IN(OP_PREC_READ_NOT_START); - GET_RELADDR_INC(addr, p); + CASE_OP(PREC_READ_START) + STACK_PUSH_PREC_READ_START(s, sprev); + INC_OP; + JUMP_OUT; + + CASE_OP(PREC_READ_END) + STACK_GET_PREC_READ_START(stkp); + s = stkp->u.state.pstr; + sprev = stkp->u.state.pstr_prev; + STACK_PUSH(STK_PREC_READ_END,0,0,0); + INC_OP; + JUMP_OUT; + + CASE_OP(PREC_READ_NOT_START) + addr = p->prec_read_not_start.addr; STACK_PUSH_ALT_PREC_READ_NOT(p + addr, s, sprev); - SOP_OUT; - continue; - break; + INC_OP; + JUMP_OUT; - case OP_PREC_READ_NOT_END: SOP_IN(OP_PREC_READ_NOT_END); + CASE_OP(PREC_READ_NOT_END) STACK_POP_TIL_ALT_PREC_READ_NOT; goto fail; - break; - case OP_ATOMIC_START: SOP_IN(OP_ATOMIC_START); + CASE_OP(ATOMIC_START) STACK_PUSH_TO_VOID_START; - SOP_OUT; - continue; - break; + INC_OP; + JUMP_OUT; - case OP_ATOMIC_END: SOP_IN(OP_ATOMIC_END); + CASE_OP(ATOMIC_END) STACK_EXEC_TO_VOID(stkp); - SOP_OUT; - continue; - break; + INC_OP; + JUMP_OUT; - case OP_LOOK_BEHIND: SOP_IN(OP_LOOK_BEHIND); - GET_LENGTH_INC(tlen, p); + CASE_OP(LOOK_BEHIND) + tlen = p->look_behind.len; 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); - SOP_OUT; - continue; - break; + INC_OP; + JUMP_OUT; - case OP_LOOK_BEHIND_NOT_START: SOP_IN(OP_LOOK_BEHIND_NOT_START); - GET_RELADDR_INC(addr, p); - GET_LENGTH_INC(tlen, p); + CASE_OP(LOOK_BEHIND_NOT_START) + addr = p->look_behind_not_start.addr; + tlen = p->look_behind_not_start.len; q = (UChar* )ONIGENC_STEP_BACK(encode, str, s, (int )tlen); if (IS_NULL(q)) { /* too short case -> success. ex. /(?p + addr; - SOP_OUT; - continue; - break; + CASE_OP(CALL) + addr = p->call.addr; + INC_OP; STACK_PUSH_CALL_FRAME(p); + p = reg->ops + addr; + JUMP_OUT; - case OP_RETURN: SOP_IN(OP_RETURN); + CASE_OP(RETURN) STACK_RETURN(p); STACK_PUSH_RETURN; - SOP_OUT; - continue; - break; + JUMP_OUT; #endif - case OP_PUSH_SAVE_VAL: SOP_IN(OP_PUSH_SAVE_VAL); + CASE_OP(PUSH_SAVE_VAL) { SaveType type; - GET_SAVE_TYPE_INC(type, p); - GET_MEMNUM_INC(mem, p); /* mem: save id */ + + type = p->push_save_val.type; + mem = p->push_save_val.id; /* mem: save id */ switch ((enum SaveType )type) { case SAVE_KEEP: STACK_PUSH_SAVE_VAL(mem, type, s); @@ -3836,17 +3994,17 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, break; } } - SOP_OUT; - continue; - break; + INC_OP; + JUMP_OUT; - case OP_UPDATE_VAR: SOP_IN(OP_UPDATE_VAR); + CASE_OP(UPDATE_VAR) { UpdateVarType type; enum SaveType save_type; - GET_UPDATE_VAR_TYPE_INC(type, p); - GET_MEMNUM_INC(mem, p); /* mem: save id */ + type = p->update_var.type; + mem = p->update_var.id; /* mem: save id */ + switch ((enum UpdateVarType )type) { case UPDATE_VAR_KEEP_FROM_STACK_LAST: STACK_GET_SAVE_VAL_TYPE_LAST(SAVE_KEEP, keep); @@ -3868,38 +4026,34 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, break; } } - SOP_OUT; - continue; - break; + INC_OP; + JUMP_OUT; #ifdef USE_CALLOUT - case OP_CALLOUT_CONTENTS: SOP_IN(OP_CALLOUT_CONTENTS); + CASE_OP(CALLOUT_CONTENTS) of = ONIG_CALLOUT_OF_CONTENTS; + mem = p->callout_contents.num; goto callout_common_entry; + BREAK_OUT; - SOP_OUT; - continue; - break; - - case OP_CALLOUT_NAME: SOP_IN(OP_CALLOUT_NAME); + CASE_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); + name_id = p->callout_name.id; + mem = p->callout_name.num; callout_common_entry: - GET_MEMNUM_INC(num, p); - e = onig_reg_callout_list_at(reg, num); + e = onig_reg_callout_list_at(reg, mem); in = e->in; if (of == ONIG_CALLOUT_OF_NAME) { - func = onig_get_callout_start_func(reg, num); + func = onig_get_callout_start_func(reg, mem); } else { name_id = ONIG_NON_NAME_ID; @@ -3908,7 +4062,7 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, 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); + (int )mem, msa->mp->callout_user_data, args, call_result); switch (call_result) { case ONIG_CALLOUT_FAIL: goto fail; @@ -3930,46 +4084,47 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, 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); + STACK_PUSH_CALLOUT_NAME(name_id, mem, func); } } else { func = msa->mp->retraction_callout_of_contents; if (IS_NOT_NULL(func)) { - STACK_PUSH_CALLOUT_CONTENTS(num, func); + STACK_PUSH_CALLOUT_CONTENTS(mem, func); } } } } } - SOP_OUT; - continue; - break; + INC_OP; + JUMP_OUT; #endif - case OP_FINISH: + CASE_OP(FINISH) goto finish; - break; +#ifdef ONIG_DEBUG_STATISTICS fail: SOP_OUT; - /* fall */ - case OP_FAIL: SOP_IN(OP_FAIL); + goto fail2; +#endif + CASE_OP(FAIL) +#ifdef ONIG_DEBUG_STATISTICS + fail2: +#else + fail: +#endif STACK_POP; p = stk->u.state.pcode; s = stk->u.state.pstr; sprev = stk->u.state.pstr_prev; CHECK_RETRY_LIMIT_IN_MATCH; - SOP_OUT; - continue; - break; + JUMP_OUT; - default: + DEFAULT_OP goto bytecode_error; - } /* end of switch */ - sprev = sbegin; - } /* end of while(1) */ + } BYTECODE_INTERPRETER_END; finish: STACK_SAVE; @@ -3985,9 +4140,11 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, STACK_SAVE; return ONIGERR_UNDEFINED_BYTECODE; +#if defined(ONIG_DEBUG) && !defined(USE_DIRECT_THREADED_CODE) unexpected_bytecode_error: STACK_SAVE; return ONIGERR_UNEXPECTED_BYTECODE; +#endif #ifdef USE_RETRY_LIMIT_IN_MATCH retry_limit_in_match_over: @@ -4136,150 +4293,143 @@ slow_search_backward_ic(OnigEncoding enc, int case_fold_flag, return (UChar* )NULL; } + 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) +sunday_quick_search_step_forward(regex_t* reg, + const UChar* target, const UChar* target_end, + const UChar* text, const UChar* text_end, + const UChar* text_range) { const UChar *s, *se, *t, *p, *end; const UChar *tail; int skip, tlen1; + int map_offset; + OnigEncoding enc; #ifdef ONIG_DEBUG_SEARCH - fprintf(stderr, "bm_search_notrev: text: %p, text_end: %p, text_range: %p\n", - text, text_end, text_range); + fprintf(stderr, + "sunday_quick_search_step_forward: text: %p, text_end: %p, text_range: %p\n", text, text_end, text_range); #endif + enc = reg->enc; + tail = target_end - 1; tlen1 = (int )(tail - target); end = text_range; if (end + tlen1 > text_end) end = text_end - tlen1; + map_offset = reg->map_offset; s = text; - if (IS_NULL(reg->int_map)) { - while (s < end) { - p = se = s + tlen1; - t = tail; - while (*p == *t) { - if (t == target) return (UChar* )s; - p--; t--; - } - skip = reg->map[*se]; - t = s; - do { - s += enclen(reg->enc, s); - } while ((s - t) < skip && s < end); - } - } - else { - while (s < end) { - p = se = s + tlen1; - t = tail; - while (*p == *t) { - if (t == target) return (UChar* )s; - p--; t--; - } - skip = reg->int_map[*se]; - t = s; - do { - s += enclen(reg->enc, s); - } while ((s - t) < skip && s < end); + while (s < end) { + p = se = s + tlen1; + t = tail; + while (*p == *t) { + if (t == target) return (UChar* )s; + p--; t--; } + if (se + map_offset >= text_end) break; + skip = reg->map[*(se + map_offset)]; +#if 0 + t = s; + do { + s += enclen(enc, s); + } while ((s - t) < skip && s < end); +#else + s += skip; + if (s < end) + s = onigenc_get_right_adjust_char_head(enc, text, s); +#endif } return (UChar* )NULL; } 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) +sunday_quick_search(regex_t* reg, const UChar* target, const UChar* target_end, + const UChar* text, const UChar* text_end, + const UChar* text_range) { const UChar *s, *t, *p, *end; const UChar *tail; + int map_offset; - end = text_range + (target_end - target) - 1; + end = text_range + (target_end - target); if (end > text_end) end = text_end; + map_offset = reg->map_offset; tail = target_end - 1; - s = text + (target_end - target) - 1; - if (IS_NULL(reg->int_map)) { - while (s < end) { - p = s; - t = tail; - while (*p == *t) { - if (t == target) return (UChar* )p; - p--; t--; - } - s += reg->map[*s]; - } - } - else { /* see int_map[] */ - while (s < end) { - p = s; - t = tail; - while (*p == *t) { - if (t == target) return (UChar* )p; - p--; t--; - } - s += reg->int_map[*s]; + s = text + (tail - target); + + while (s < end) { + p = s; + t = tail; + while (*p == *t) { + if (t == target) return (UChar* )p; + p--; t--; } + if (s + map_offset >= text_end) break; + s += reg->map[*(s + map_offset)]; } + return (UChar* )NULL; } -#ifdef USE_INT_MAP_BACKWARD -static int -set_bm_backward_skip(UChar* s, UChar* end, OnigEncoding enc ARG_UNUSED, int** skip) +static UChar* +sunday_quick_search_case_fold(regex_t* reg, + const UChar* target, const UChar* target_end, + const UChar* text, const UChar* text_end, + const UChar* text_range) { - int i, len; - - if (IS_NULL(*skip)) { - *skip = (int* )xmalloc(sizeof(int) * ONIG_CHAR_TABLE_SIZE); - if (IS_NULL(*skip)) return ONIGERR_MEMORY; - } - - len = end - s; - for (i = 0; i < ONIG_CHAR_TABLE_SIZE; i++) - (*skip)[i] = len; + const UChar *s, *se, *end; + const UChar *tail; + int skip, tlen1; + int map_offset; + int case_fold_flag; + OnigEncoding enc; - for (i = len - 1; i > 0; i--) - (*skip)[s[i]] = i; +#ifdef ONIG_DEBUG_SEARCH + fprintf(stderr, + "sunday_quick_search_case_fold: text: %p, text_end: %p, text_range: %p\n", text, text_end, text_range); +#endif - return 0; -} + enc = reg->enc; + case_fold_flag = reg->case_fold_flag; -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 *s, *t, *p; + tail = target_end - 1; + tlen1 = (int )(tail - target); + end = text_range; + if (end + tlen1 > text_end) + end = text_end - tlen1; - s = text_end - (target_end - target); - if (text_start < s) - s = text_start; - else - s = ONIGENC_LEFT_ADJUST_CHAR_HEAD(reg->enc, adjust_text, s); + map_offset = reg->map_offset; + s = text; - while (s >= text) { - p = s; - t = target; - while (t < target_end && *p == *t) { - p++; t++; - } - if (t == target_end) + while (s < end) { + if (str_lower_case_match(enc, case_fold_flag, target, target_end, + s, text_end)) return (UChar* )s; - s -= reg->int_map_backward[*s]; - s = ONIGENC_LEFT_ADJUST_CHAR_HEAD(reg->enc, adjust_text, s); + se = s + tlen1; + if (se + map_offset >= text_end) break; + skip = reg->map[*(se + map_offset)]; +#if 0 + p = s; + do { + s += enclen(enc, s); + } while ((s - p) < skip && s < end); +#else + /* This is faster than prev code for long text. ex: /(?i)Twain/ */ + s += skip; + if (s < end) + s = onigenc_get_right_adjust_char_head(enc, text, s); +#endif } return (UChar* )NULL; } -#endif static UChar* map_search(OnigEncoding enc, UChar map[], @@ -4391,20 +4541,26 @@ forward_search_range(regex_t* reg, const UChar* str, const UChar* end, UChar* s, retry: switch (reg->optimize) { - case OPTIMIZE_EXACT: + case OPTIMIZE_STR: p = slow_search(reg->enc, reg->exact, reg->exact_end, p, end, range); break; - case OPTIMIZE_EXACT_IC: + case OPTIMIZE_STR_CASE_FOLD: p = slow_search_ic(reg->enc, reg->case_fold_flag, reg->exact, reg->exact_end, p, end, range); break; - case OPTIMIZE_EXACT_BM: - p = bm_search(reg, reg->exact, reg->exact_end, p, end, range); + case OPTIMIZE_STR_CASE_FOLD_FAST: + p = sunday_quick_search_case_fold(reg, reg->exact, reg->exact_end, p, end, + range); break; - case OPTIMIZE_EXACT_BM_NO_REV: - p = bm_search_notrev(reg, reg->exact, reg->exact_end, p, end, range); + case OPTIMIZE_STR_FAST: + p = sunday_quick_search(reg, reg->exact, reg->exact_end, p, end, range); + break; + + case OPTIMIZE_STR_FAST_STEP_FORWARD: + p = sunday_quick_search_step_forward(reg, reg->exact, reg->exact_end, + p, end, range); break; case OPTIMIZE_MAP: @@ -4424,7 +4580,7 @@ forward_search_range(regex_t* reg, const UChar* str, const UChar* end, UChar* s, UChar* prev; switch (reg->sub_anchor) { - case ANCHOR_BEGIN_LINE: + case ANCR_BEGIN_LINE: if (!ON_STR_BEGIN(p)) { prev = onigenc_get_prev_char_head(reg->enc, (pprev ? pprev : str), p); @@ -4433,7 +4589,7 @@ forward_search_range(regex_t* reg, const UChar* str, const UChar* end, UChar* s, } break; - case ANCHOR_END_LINE: + case ANCR_END_LINE: if (ON_STR_END(p)) { #ifndef USE_NEWLINE_AT_END_OF_STRING_HAS_EMPTY_LINE prev = (UChar* )onigenc_get_prev_char_head(reg->enc, @@ -4501,50 +4657,36 @@ forward_search_range(regex_t* reg, const UChar* str, const UChar* end, UChar* s, } -#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 *p; + if (range == 0) goto fail; + range += reg->dmin; p = s; retry: switch (reg->optimize) { - case OPTIMIZE_EXACT: + case OPTIMIZE_STR: exact_method: p = slow_search_backward(reg->enc, reg->exact, reg->exact_end, range, adjrange, end, p); break; - case OPTIMIZE_EXACT_IC: + case OPTIMIZE_STR_CASE_FOLD: + case OPTIMIZE_STR_CASE_FOLD_FAST: p = slow_search_backward_ic(reg->enc, reg->case_fold_flag, reg->exact, reg->exact_end, range, adjrange, end, p); break; - 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; - - r = set_bm_backward_skip(reg->exact, reg->exact_end, reg->enc, - &(reg->int_map_backward)); - if (r != 0) return r; - } - p = bm_search_backward(reg, reg->exact, reg->exact_end, range, adjrange, - end, p); -#else + case OPTIMIZE_STR_FAST: + case OPTIMIZE_STR_FAST_STEP_FORWARD: goto exact_method; -#endif break; case OPTIMIZE_MAP: @@ -4557,7 +4699,7 @@ backward_search_range(regex_t* reg, const UChar* str, const UChar* end, UChar* prev; switch (reg->sub_anchor) { - case ANCHOR_BEGIN_LINE: + case ANCR_BEGIN_LINE: if (!ON_STR_BEGIN(p)) { prev = onigenc_get_prev_char_head(reg->enc, str, p); if (IS_NOT_NULL(prev) && !ONIGENC_IS_MBC_NEWLINE(reg->enc, prev, end)) { @@ -4567,7 +4709,7 @@ backward_search_range(regex_t* reg, const UChar* str, const UChar* end, } break; - case ANCHOR_END_LINE: + case ANCR_END_LINE: 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); @@ -4693,7 +4835,7 @@ onig_search_with_param(regex_t* reg, const UChar* str, const UChar* end, if (reg->anchor != 0 && str < end) { UChar *min_semi_end, *max_semi_end; - if (reg->anchor & ANCHOR_BEGIN_POSITION) { + if (reg->anchor & ANCR_BEGIN_POSITION) { /* search start-position only */ begin_position: if (range > start) @@ -4701,7 +4843,7 @@ onig_search_with_param(regex_t* reg, const UChar* str, const UChar* end, else range = start; } - else if (reg->anchor & ANCHOR_BEGIN_BUF) { + else if (reg->anchor & ANCR_BEGIN_BUF) { /* search str-position only */ if (range > start) { if (start != str) goto mismatch_no_msa; @@ -4716,7 +4858,7 @@ onig_search_with_param(regex_t* reg, const UChar* str, const UChar* end, goto mismatch_no_msa; } } - else if (reg->anchor & ANCHOR_END_BUF) { + else if (reg->anchor & ANCR_END_BUF) { min_semi_end = max_semi_end = (UChar* )end; end_buf: @@ -4748,8 +4890,7 @@ onig_search_with_param(regex_t* reg, const UChar* str, const UChar* end, if (range > start) goto mismatch_no_msa; } } - else if (reg->anchor & ANCHOR_SEMI_END_BUF) { - + else if (reg->anchor & ANCR_SEMI_END_BUF) { UChar* pre_end = ONIGENC_STEP_BACK(reg->enc, str, end, 1); max_semi_end = (UChar* )end; @@ -4776,7 +4917,7 @@ onig_search_with_param(regex_t* reg, const UChar* str, const UChar* end, goto end_buf; } } - else if ((reg->anchor & ANCHOR_ANYCHAR_INF_ML)) { + else if ((reg->anchor & ANCR_ANYCHAR_INF_ML)) { goto begin_position; } } @@ -4849,13 +4990,13 @@ onig_search_with_param(regex_t* reg, const UChar* str, const UChar* end, if (! forward_search_range(reg, str, end, s, sch_range, &low, &high, (UChar** )NULL)) goto mismatch; - if ((reg->anchor & ANCHOR_ANYCHAR_INF) != 0) { + if ((reg->anchor & ANCR_ANYCHAR_INF) != 0) { do { MATCH_AND_RETURN_CHECK(orig_range); prev = s; s += enclen(reg->enc, s); - if ((reg->anchor & (ANCHOR_LOOK_BEHIND | ANCHOR_PREC_READ_NOT)) == 0) { + if ((reg->anchor & (ANCR_LOOK_BEHIND | ANCR_PREC_READ_NOT)) == 0) { while (!ONIGENC_IS_MBC_NEWLINE(reg->enc, prev, end) && s < range) { prev = s; s += enclen(reg->enc, s); @@ -4878,6 +5019,8 @@ onig_search_with_param(regex_t* reg, const UChar* str, const UChar* end, } } else { /* backward search */ + if (range < str) goto mismatch; + if (orig_start < end) orig_start += enclen(reg->enc, orig_start); /* is upper range */ @@ -5092,6 +5235,16 @@ onig_copy_encoding(OnigEncoding to, OnigEncoding from) *to = *from; } +#ifdef USE_DIRECT_THREADED_CODE +extern int +onig_init_for_match_at(regex_t* reg) +{ + return match_at(reg, (const UChar* )NULL, (const UChar* )NULL, + (const UChar* )NULL, (const UChar* )NULL, (UChar* )NULL, + (MatchArg* )NULL); +} +#endif + /* for callout functions */ @@ -5362,6 +5515,9 @@ onig_builtin_error(OnigCalloutArgs* args, void* user_data ARG_UNUSED) if (n >= 0) { n = ONIGERR_INVALID_CALLOUT_BODY; } + else if (onig_is_error_code_needs_param(n)) { + n = ONIGERR_INVALID_CALLOUT_BODY; + } return n; } diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/reggnu.c b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/reggnu.c index fb1537eccb..25bcbc2a2f 100644 --- a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/reggnu.c +++ b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/reggnu.c @@ -2,7 +2,7 @@ reggnu.c - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2002-2018 K.Kosako + * Copyright (c) 2002-2019 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -39,7 +39,7 @@ re_free_registers(OnigRegion* r) extern int re_adjust_startpos(regex_t* reg, const char* string, int size, - int startpos, int range) + int startpos, int range) { if (startpos > 0 && ONIGENC_MBC_MAXLEN(reg->enc) != 1 && startpos < size) { UChar *p; @@ -59,20 +59,20 @@ re_adjust_startpos(regex_t* reg, const char* string, int size, extern int re_match(regex_t* reg, const char* str, int size, int pos, - struct re_registers* regs) + struct re_registers* regs) { return onig_match(reg, (UChar* )str, (UChar* )(str + size), - (UChar* )(str + pos), regs, ONIG_OPTION_NONE); + (UChar* )(str + pos), regs, ONIG_OPTION_NONE); } extern int re_search(regex_t* bufp, const char* string, int size, int startpos, int range, - struct re_registers* regs) + struct re_registers* regs) { return onig_search(bufp, (UChar* )string, (UChar* )(string + size), - (UChar* )(string + startpos), - (UChar* )(string + startpos + range), - regs, ONIG_OPTION_NONE); + (UChar* )(string + startpos), + (UChar* )(string + startpos + range), + regs, ONIG_OPTION_NONE); } extern int @@ -103,9 +103,9 @@ re_alloc_pattern(regex_t** reg) if (IS_NULL(*reg)) return ONIGERR_MEMORY; return onig_reg_init(*reg, ONIG_OPTION_DEFAULT, - ONIGENC_CASE_FOLD_DEFAULT, - OnigEncDefaultCharEncoding, - OnigDefaultSyntax); + ONIGENC_CASE_FOLD_DEFAULT, + OnigEncDefaultCharEncoding, + OnigDefaultSyntax); } extern void diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regparse.c b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regparse.c index 0a2d6f89e5..4605d40bd1 100644 --- a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regparse.c +++ b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regparse.c @@ -2,7 +2,7 @@ regparse.c - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2002-2018 K.Kosako + * Copyright (c) 2002-2019 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -54,13 +54,13 @@ OnigSyntaxType OnigSyntaxOniguruma = { 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_OPTION_ONIGURUMA | 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_X_Y_TEXT_SEGMENT | ONIG_SYN_OP2_ESC_CAPITAL_R_GENERAL_NEWLINE | ONIG_SYN_OP2_ESC_CAPITAL_N_O_SUPER_DOT | ONIG_SYN_OP2_ESC_CAPITAL_K_KEEP | @@ -71,12 +71,13 @@ OnigSyntaxType OnigSyntaxOniguruma = { 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 | + , ( 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_ALLOW_INVALID_CODE_END_OF_RANGE_IN_CC | ONIG_SYN_WARN_CC_OP_NOT_ESCAPED | ONIG_SYN_WARN_REDUNDANT_NESTED_REPEAT ) , ONIG_OPTION_NONE @@ -103,7 +104,7 @@ OnigSyntaxType OnigSyntaxRuby = { 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_X_Y_TEXT_SEGMENT | ONIG_SYN_OP2_ESC_CAPITAL_R_GENERAL_NEWLINE | ONIG_SYN_OP2_ESC_CAPITAL_K_KEEP | ONIG_SYN_OP2_ESC_G_SUBEXP_CALL | @@ -113,7 +114,7 @@ OnigSyntaxType OnigSyntaxRuby = { 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 | + , ( SYN_GNU_REGEX_BV | ONIG_SYN_ALLOW_INTERVAL_LOW_ABBREV | ONIG_SYN_DIFFERENT_LEN_ALT_LOOK_BEHIND | ONIG_SYN_CAPTURE_ONLY_NAMED_GROUP | @@ -199,14 +200,20 @@ onig_set_parse_depth_limit(unsigned int depth) } static int -positive_int_multiply(int x, int y) +bbuf_init(BBuf* buf, int size) { - if (x == 0 || y == 0) return 0; + if (size <= 0) { + size = 0; + buf->p = NULL; + } + else { + buf->p = (UChar* )xmalloc(size); + if (IS_NULL(buf->p)) return(ONIGERR_MEMORY); + } - if (x < INT_MAX / y) - return x * y; - else - return -1; + buf->alloc = size; + buf->used = 0; + return 0; } static void @@ -523,6 +530,8 @@ onig_st_insert_strend(hash_table_type* table, const UChar* str_key, } +#ifdef USE_CALLOUT + typedef struct { OnigEncoding enc; int type; /* callout type: single or not */ @@ -621,6 +630,7 @@ st_insert_callout_name_table(hash_table_type* table, } return result; } +#endif #endif /* USE_ST_LIBRARY */ @@ -1084,6 +1094,35 @@ onig_name_to_group_numbers(regex_t* reg, const UChar* name, return e->back_num; } +static int +name_to_group_numbers(ScanEnv* env, const UChar* name, const UChar* name_end, + int** nums) +{ + regex_t* reg; + NameEntry* e; + + reg = env->reg; + e = name_find(reg, name, name_end); + + if (IS_NULL(e)) { + onig_scan_env_set_error_string(env, ONIGERR_UNDEFINED_NAME_REFERENCE, + (UChar* )name, (UChar* )name_end); + return ONIGERR_UNDEFINED_NAME_REFERENCE; + } + + switch (e->back_num) { + case 0: + break; + case 1: + *nums = &(e->back_ref1); + break; + default: + *nums = e->back_refs; + break; + } + return e->back_num; +} + extern int onig_name_to_backref_number(regex_t* reg, const UChar* name, const UChar* name_end, OnigRegion *region) @@ -1574,8 +1613,13 @@ onig_set_callout_of_name(OnigEncoding enc, OnigCalloutType callout_type, for (i = arg_num - opt_arg_num, j = 0; i < arg_num; i++, j++) { if(IS_NULL(opt_defaults))return ONIGERR_INVALID_ARGUMENT; if (fe->arg_types[i] == ONIG_TYPE_STRING) { - OnigValue* val = opt_defaults + j; - UChar* ds = onigenc_strdup(enc, val->s.start, val->s.end); + OnigValue* val; + UChar* ds; + + if (IS_NULL(opt_defaults)) return ONIGERR_INVALID_ARGUMENT; + + val = opt_defaults + j; + ds = onigenc_strdup(enc, val->s.start, val->s.end); CHECK_NULL_RETURN_MEMERR(ds); fe->opt_defaults[i].s.start = ds; @@ -1742,7 +1786,7 @@ setup_ext_callout_list_values(regex_t* reg) int i, j; RegexExt* ext; - ext = REG_EXTP(reg); + ext = reg->extp; if (IS_NOT_NULL(ext->tag_table)) { onig_st_foreach((CalloutTagTable *)ext->tag_table, i_callout_callout_list_set, (st_data_t )ext); @@ -1772,13 +1816,13 @@ setup_ext_callout_list_values(regex_t* reg) extern int onig_callout_tag_is_exist_at_callout_num(regex_t* reg, int callout_num) { - RegexExt* ext = REG_EXTP(reg); + RegexExt* ext = reg->extp; if (IS_NULL(ext) || IS_NULL(ext->callout_list)) return 0; if (callout_num > ext->callout_num) return 0; return (ext->callout_list[callout_num].flag & - CALLOUT_TAG_LIST_FLAG_TAG_EXIST) != 0 ? 1 : 0; + CALLOUT_TAG_LIST_FLAG_TAG_EXIST) != 0; } static int @@ -1820,7 +1864,7 @@ onig_get_callout_num_by_tag(regex_t* reg, RegexExt* ext; CalloutTagVal e; - ext = REG_EXTP(reg); + ext = reg->extp; if (IS_NULL(ext) || IS_NULL(ext->tag_table)) return ONIGERR_INVALID_CALLOUT_TAG_NAME; @@ -1856,8 +1900,8 @@ callout_tag_table_new(CalloutTagTable** rt) } static int -callout_tag_entry_raw(CalloutTagTable* t, UChar* name, UChar* name_end, - CalloutTagVal entry_val) +callout_tag_entry_raw(ScanEnv* env, CalloutTagTable* t, UChar* name, + UChar* name_end, CalloutTagVal entry_val) { int r; CalloutTagVal val; @@ -1866,8 +1910,11 @@ callout_tag_entry_raw(CalloutTagTable* t, UChar* name, UChar* name_end, return ONIGERR_INVALID_CALLOUT_TAG_NAME; val = callout_tag_find(t, name, name_end); - if (val >= 0) + if (val >= 0) { + onig_scan_env_set_error_string(env, ONIGERR_MULTIPLEX_DEFINED_NAME, + name, name_end); return ONIGERR_MULTIPLEX_DEFINED_NAME; + } r = onig_st_insert_strend(t, name, name_end, (HashDataType )entry_val); if (r < 0) return r; @@ -1896,7 +1943,7 @@ ext_ensure_tag_table(regex_t* reg) } static int -callout_tag_entry(regex_t* reg, UChar* name, UChar* name_end, +callout_tag_entry(ScanEnv* env, regex_t* reg, UChar* name, UChar* name_end, CalloutTagVal entry_val) { int r; @@ -1908,7 +1955,7 @@ callout_tag_entry(regex_t* reg, UChar* name, UChar* name_end, ext = onig_get_regex_ext(reg); CHECK_NULL_RETURN_MEMERR(ext); - r = callout_tag_entry_raw(ext->tag_table, name, name_end, entry_val); + r = callout_tag_entry_raw(env, ext->tag_table, name, name_end, entry_val); e = onig_reg_callout_list_at(reg, (int )entry_val); CHECK_NULL_RETURN_MEMERR(e); @@ -2016,7 +2063,7 @@ onig_node_free(Node* node) switch (NODE_TYPE(node)) { case NODE_STRING: - if (STR_(node)->capa != 0 && + if (STR_(node)->capacity != 0 && IS_NOT_NULL(STR_(node)->s) && STR_(node)->s != STR_(node)->buf) { xfree(STR_(node)->s); } @@ -2048,13 +2095,13 @@ onig_node_free(Node* node) xfree(BACKREF_(node)->back_dynamic); break; - case NODE_ENCLOSURE: + case NODE_BAG: if (NODE_BODY(node)) onig_node_free(NODE_BODY(node)); { - EnclosureNode* en = ENCLOSURE_(node); - if (en->type == ENCLOSURE_IF_ELSE) { + BagNode* en = BAG_(node); + if (en->type == BAG_IF_ELSE) { onig_node_free(en->te.Then); onig_node_free(en->te.Else); } @@ -2378,10 +2425,10 @@ node_new_quantifier(int lower, int upper, int by_number) 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)->lower = lower; + QUANT_(node)->upper = upper; + QUANT_(node)->greedy = 1; + QUANT_(node)->emptiness = BODY_IS_NOT_EMPTY; QUANT_(node)->head_exact = NULL_NODE; QUANT_(node)->next_head_exact = NULL_NODE; QUANT_(node)->is_refered = 0; @@ -2392,62 +2439,62 @@ node_new_quantifier(int lower, int upper, int by_number) } static Node* -node_new_enclosure(enum EnclosureType type) +node_new_bag(enum BagType type) { Node* node = node_new(); CHECK_NULL_RETURN(node); - NODE_SET_TYPE(node, NODE_ENCLOSURE); - ENCLOSURE_(node)->type = type; + NODE_SET_TYPE(node, NODE_BAG); + BAG_(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; + case BAG_MEMORY: + BAG_(node)->m.regnum = 0; + BAG_(node)->m.called_addr = -1; + BAG_(node)->m.entry_count = 1; + BAG_(node)->m.called_state = 0; break; - case ENCLOSURE_OPTION: - ENCLOSURE_(node)->o.options = 0; + case BAG_OPTION: + BAG_(node)->o.options = 0; break; - case ENCLOSURE_STOP_BACKTRACK: + case BAG_STOP_BACKTRACK: break; - case ENCLOSURE_IF_ELSE: - ENCLOSURE_(node)->te.Then = 0; - ENCLOSURE_(node)->te.Else = 0; + case BAG_IF_ELSE: + BAG_(node)->te.Then = 0; + BAG_(node)->te.Else = 0; break; } - ENCLOSURE_(node)->opt_count = 0; + BAG_(node)->opt_count = 0; return node; } extern Node* -onig_node_new_enclosure(int type) +onig_node_new_bag(enum BagType type) { - return node_new_enclosure(type); + return node_new_bag(type); } static Node* -node_new_enclosure_if_else(Node* cond, Node* Then, Node* Else) +node_new_bag_if_else(Node* cond, Node* Then, Node* Else) { Node* n; - n = node_new_enclosure(ENCLOSURE_IF_ELSE); + n = node_new_bag(BAG_IF_ELSE); CHECK_NULL_RETURN(n); NODE_BODY(n) = cond; - ENCLOSURE_(n)->te.Then = Then; - ENCLOSURE_(n)->te.Else = Else; + BAG_(n)->te.Then = Then; + BAG_(n)->te.Else = Else; return n; } static Node* node_new_memory(int is_named) { - Node* node = node_new_enclosure(ENCLOSURE_MEMORY); + Node* node = node_new_bag(BAG_MEMORY); CHECK_NULL_RETURN(node); if (is_named != 0) NODE_STATUS_ADD(node, NAMED_GROUP); @@ -2458,12 +2505,37 @@ node_new_memory(int is_named) static Node* node_new_option(OnigOptionType option) { - Node* node = node_new_enclosure(ENCLOSURE_OPTION); + Node* node = node_new_bag(BAG_OPTION); + CHECK_NULL_RETURN(node); + BAG_(node)->o.options = option; + return node; +} + +static Node* +node_new_group(Node* content) +{ + Node* node; + + node = node_new(); CHECK_NULL_RETURN(node); - ENCLOSURE_(node)->o.options = option; + NODE_SET_TYPE(node, NODE_LIST); + NODE_CAR(node) = content; + NODE_CDR(node) = NULL_NODE; + return node; } +static Node* +node_drop_group(Node* group) +{ + Node* content; + + content = NODE_CAR(group); + NODE_CAR(group) = NULL_NODE; + onig_node_free(group); + return content; +} + static int node_new_fail(Node** node, ScanEnv* env) { @@ -2554,7 +2626,7 @@ onig_free_reg_callout_list(int n, CalloutListEntry* list) extern CalloutListEntry* onig_reg_callout_list_at(regex_t* reg, int num) { - RegexExt* ext = REG_EXTP(reg); + RegexExt* ext = reg->extp; CHECK_NULL_RETURN(ext); if (num <= 0 || num > ext->callout_num) @@ -2634,7 +2706,7 @@ node_new_callout(Node** node, OnigCalloutOf callout_of, int num, int id, #endif static int -make_extended_grapheme_cluster(Node** node, ScanEnv* env) +make_text_segment(Node** node, ScanEnv* env) { int r; int i; @@ -2646,7 +2718,7 @@ make_extended_grapheme_cluster(Node** node, ScanEnv* env) ns[1] = NULL_NODE; r = ONIGERR_MEMORY; - ns[0] = onig_node_new_anchor(ANCHOR_NO_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY, 0); + ns[0] = onig_node_new_anchor(ANCR_NO_TEXT_SEGMENT_BOUNDARY, 0); if (IS_NULL(ns[0])) goto err; r = node_new_true_anychar(&ns[1], env); @@ -2657,7 +2729,7 @@ make_extended_grapheme_cluster(Node** node, ScanEnv* env) ns[0] = x; ns[1] = NULL_NODE; - x = node_new_quantifier(0, REPEAT_INFINITE, 1); + x = node_new_quantifier(0, INFINITE_REPEAT, 1); if (IS_NULL(x)) goto err; NODE_BODY(x) = ns[0]; @@ -2673,7 +2745,7 @@ make_extended_grapheme_cluster(Node** node, ScanEnv* env) ns[0] = x; ns[1] = NULL_NODE; - x = node_new_enclosure(ENCLOSURE_STOP_BACKTRACK); + x = node_new_bag(BAG_STOP_BACKTRACK); if (IS_NULL(x)) goto err; NODE_BODY(x) = ns[0]; @@ -2733,7 +2805,7 @@ make_absent_engine(Node** node, int pre_save_right_id, Node* absent, ns[0] = x; if (possessive != 0) { - x = node_new_enclosure(ENCLOSURE_STOP_BACKTRACK); + x = node_new_bag(BAG_STOP_BACKTRACK); if (IS_NULL(x)) goto err0; NODE_BODY(x) = ns[0]; @@ -2885,11 +2957,11 @@ is_simple_one_char_repeat(Node* node, Node** rquant, Node** rbody, quant = node; } else { - if (NODE_TYPE(node) == NODE_ENCLOSURE) { - EnclosureNode* en = ENCLOSURE_(node); - if (en->type == ENCLOSURE_STOP_BACKTRACK) { + if (NODE_TYPE(node) == NODE_BAG) { + BagNode* en = BAG_(node); + if (en->type == BAG_STOP_BACKTRACK) { *is_possessive = 1; - quant = NODE_ENCLOSURE_BODY(en); + quant = NODE_BAG_BODY(en); if (NODE_TYPE(quant) != NODE_QUANT) return 0; } @@ -3007,7 +3079,7 @@ make_absent_tree(Node** node, Node* absent, Node* expr, int is_range_cutter, if (expr == NULL_NODE) { /* default expr \O* */ - quant = node_new_quantifier(0, REPEAT_INFINITE, 0); + quant = node_new_quantifier(0, INFINITE_REPEAT, 0); if (IS_NULL(quant)) goto err0; r = node_new_true_anychar(&body, env); @@ -3049,7 +3121,7 @@ make_absent_tree(Node** node, Node* absent, Node* expr, int is_range_cutter, if (r != 0) goto err; possessive = 1; - r = make_absent_engine(&ns[2], id1, absent, ns[3], 0, REPEAT_INFINITE, + r = make_absent_engine(&ns[2], id1, absent, ns[3], 0, INFINITE_REPEAT, possessive, is_range_cutter, env); if (r != 0) goto err; @@ -3066,7 +3138,7 @@ make_absent_tree(Node** node, Node* absent, Node* expr, int is_range_cutter, 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; } @@ -3078,7 +3150,7 @@ make_absent_tree(Node** node, Node* absent, Node* expr, int is_range_cutter, r = ONIGERR_MEMORY; err: for (i = 0; i < 7; i++) onig_node_free(ns[i]); - return r; + return r; } extern int @@ -3089,11 +3161,11 @@ onig_node_str_cat(Node* node, const UChar* s, const UChar* end) if (addlen > 0) { int len = (int )(STR_(node)->end - STR_(node)->s); - if (STR_(node)->capa > 0 || (len + addlen > NODE_STRING_BUF_SIZE - 1)) { + if (STR_(node)->capacity > 0 || (len + addlen > NODE_STRING_BUF_SIZE - 1)) { UChar* p; int capa = len + addlen + NODE_STRING_MARGIN; - if (capa <= STR_(node)->capa) { + if (capa <= STR_(node)->capacity) { onig_strcpy(STR_(node)->s + len, s, end); } else { @@ -3101,11 +3173,11 @@ onig_node_str_cat(Node* node, const UChar* s, const UChar* end) 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); + p = strcat_capa(STR_(node)->s, STR_(node)->end, s, end, capa, STR_(node)->capacity); CHECK_NULL_RETURN_MEMERR(p); - STR_(node)->s = p; - STR_(node)->capa = capa; + STR_(node)->s = p; + STR_(node)->capacity = capa; } } else { @@ -3137,24 +3209,24 @@ 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; + STR_(node)->flag = flag; + STR_(node)->capacity = 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 && + if (STR_(node)->capacity != 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; + STR_(node)->capacity = 0; + STR_(node)->flag = 0; + STR_(node)->s = STR_(node)->buf; + STR_(node)->end = STR_(node)->buf; } static Node* @@ -3164,10 +3236,10 @@ node_new_str(const UChar* s, const UChar* end) 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; + STR_(node)->capacity = 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; @@ -3199,10 +3271,18 @@ node_new_empty(void) static Node* node_new_str_raw_char(UChar c) { + int i; UChar p[1]; + Node* node; p[0] = c; - return node_new_str_raw(p, p + 1); + node = node_new_str_raw(p, p + 1); + + /* clear buf tail */ + for (i = 1; i < NODE_STRING_BUF_SIZE; i++) + STR_(node)->buf[i] = '\0'; + + return node; } static Node* @@ -3238,24 +3318,6 @@ str_node_can_be_split(Node* node, OnigEncoding enc) 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) { @@ -3809,7 +3871,7 @@ is_invalid_quantifier_target(Node* node) return 1; break; - case NODE_ENCLOSURE: + case NODE_BAG: /* allow enclosed elements */ /* return is_invalid_quantifier_target(NODE_BODY(node)); */ break; @@ -3840,19 +3902,19 @@ quantifier_type_num(QuantNode* q) if (q->greedy) { if (q->lower == 0) { if (q->upper == 1) return 0; - else if (IS_REPEAT_INFINITE(q->upper)) return 1; + else if (IS_INFINITE_REPEAT(q->upper)) return 1; } else if (q->lower == 1) { - if (IS_REPEAT_INFINITE(q->upper)) return 2; + if (IS_INFINITE_REPEAT(q->upper)) return 2; } } else { if (q->lower == 0) { if (q->upper == 1) return 3; - else if (IS_REPEAT_INFINITE(q->upper)) return 4; + else if (IS_INFINITE_REPEAT(q->upper)) return 4; } else if (q->lower == 1) { - if (IS_REPEAT_INFINITE(q->upper)) return 5; + if (IS_INFINITE_REPEAT(q->upper)) return 5; } } return -1; @@ -3889,9 +3951,9 @@ onig_reduce_nested_quantifier(Node* pnode, Node* 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 ((p->lower == p->upper) && ! IS_INFINITE_REPEAT(p->upper)) { + if ((c->lower == c->upper) && ! IS_INFINITE_REPEAT(c->upper)) { + int n = onig_positive_int_multiply(p->lower, c->lower); if (n >= 0) { p->lower = p->upper = n; NODE_BODY(pnode) = NODE_BODY(cnode); @@ -3909,11 +3971,11 @@ onig_reduce_nested_quantifier(Node* pnode, Node* cnode) break; case RQ_A: NODE_BODY(pnode) = NODE_BODY(cnode); - p->lower = 0; p->upper = REPEAT_INFINITE; p->greedy = 1; + p->lower = 0; p->upper = INFINITE_REPEAT; p->greedy = 1; break; case RQ_AQ: NODE_BODY(pnode) = NODE_BODY(cnode); - p->lower = 0; p->upper = REPEAT_INFINITE; p->greedy = 0; + p->lower = 0; p->upper = INFINITE_REPEAT; p->greedy = 0; break; case RQ_QQ: NODE_BODY(pnode) = NODE_BODY(cnode); @@ -3922,13 +3984,13 @@ onig_reduce_nested_quantifier(Node* pnode, Node* cnode) case RQ_P_QQ: NODE_BODY(pnode) = cnode; p->lower = 0; p->upper = 1; p->greedy = 0; - c->lower = 1; c->upper = REPEAT_INFINITE; c->greedy = 1; + c->lower = 1; c->upper = INFINITE_REPEAT; c->greedy = 1; return ; break; case RQ_PQ_Q: NODE_BODY(pnode) = cnode; p->lower = 0; p->upper = 1; p->greedy = 1; - c->lower = 1; c->upper = REPEAT_INFINITE; c->greedy = 0; + c->lower = 1; c->upper = INFINITE_REPEAT; c->greedy = 0; return ; break; case RQ_ASIS: @@ -3986,7 +4048,7 @@ node_new_general_newline(Node** node, ScanEnv* env) if (r != 0) goto err1; } - x = node_new_enclosure_if_else(crnl, 0, ncc); + x = node_new_bag_if_else(crnl, 0, ncc); if (IS_NULL(x)) goto err1; *node = x; @@ -4004,7 +4066,7 @@ enum TokenSyms { TK_BACKREF, TK_CALL, TK_ANCHOR, - TK_OP_REPEAT, + TK_REPEAT, TK_INTERVAL, TK_ANYCHAR_ANYTIME, /* SQL '%' == .* */ TK_ALT, @@ -4017,7 +4079,7 @@ enum TokenSyms { TK_GENERAL_NEWLINE, /* \R */ TK_NO_NEWLINE, /* \N */ TK_TRUE_ANYCHAR, /* \O */ - TK_EXTENDED_GRAPHEME_CLUSTER, /* \X */ + TK_TEXT_SEGMENT, /* \X */ /* in cc */ TK_CC_CLOSE, @@ -4065,11 +4127,11 @@ typedef struct { int not; } prop; } u; -} OnigToken; +} PToken; static int -fetch_range_quantifier(UChar** src, UChar* end, OnigToken* tok, ScanEnv* env) +fetch_interval_quantifier(UChar** src, UChar* end, PToken* tok, ScanEnv* env) { int low, up, syn_allow, non_low = 0; int r = 0; @@ -4121,7 +4183,7 @@ fetch_range_quantifier(UChar** src, UChar* end, OnigToken* tok, ScanEnv* env) if (p == prev) { if (non_low != 0) goto invalid; - up = REPEAT_INFINITE; /* {n,} : {n,infinite} */ + up = INFINITE_REPEAT; /* {n,} : {n,infinite} */ } } else { @@ -4141,9 +4203,19 @@ fetch_range_quantifier(UChar** src, UChar* end, OnigToken* tok, ScanEnv* env) } if (c != '}') goto invalid; - if (!IS_REPEAT_INFINITE(up) && low > up) { - return ONIGERR_UPPER_SMALLER_THAN_LOWER_IN_REPEAT_RANGE; + if (!IS_INFINITE_REPEAT(up) && low > up) { + /* {n,m}+ supported case */ + if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_PLUS_POSSESSIVE_INTERVAL)) + return ONIGERR_UPPER_SMALLER_THAN_LOWER_IN_REPEAT_RANGE; + + tok->u.repeat.possessive = 1; + { + int tmp; + tmp = low; low = up; up = tmp; + } } + else + tok->u.repeat.possessive = 0; tok->type = TK_INTERVAL; tok->u.repeat.lower = low; @@ -4232,7 +4304,7 @@ fetch_escaped_value(UChar** src, UChar* end, ScanEnv* env, OnigCodePoint* val) return 0; } -static int fetch_token(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env); +static int fetch_token(PToken* tok, UChar** src, UChar* end, ScanEnv* env); static OnigCodePoint get_name_end_code_point(OnigCodePoint start) @@ -4566,7 +4638,7 @@ find_str_position(OnigCodePoint s[], int n, UChar* from, UChar* to, OnigCodePoint x; UChar *q; UChar *p = from; - + while (p < to) { x = ONIGENC_MBC_TO_CODE(enc, p, to); q = p + enclen(enc, p); @@ -4626,7 +4698,7 @@ str_exist_check_with_esc(OnigCodePoint s[], int n, UChar* from, UChar* to, } static int -fetch_token_in_cc(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env) +fetch_token_in_cc(PToken* tok, UChar** src, UChar* end, ScanEnv* env) { int num; OnigCodePoint c, c2; @@ -4715,12 +4787,12 @@ fetch_token_in_cc(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env) 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); + tok->u.prop.not = c == 'P'; 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); + tok->u.prop.not = tok->u.prop.not == 0; } else PUNFETCH; @@ -4878,7 +4950,7 @@ fetch_token_in_cc(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env) } static int -fetch_token(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env) +fetch_token(PToken* tok, UChar** src, UChar* end, ScanEnv* env) { int r, num; OnigCodePoint c; @@ -4910,60 +4982,60 @@ fetch_token(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env) switch (c) { case '*': if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_ASTERISK_ZERO_INF)) break; - tok->type = TK_OP_REPEAT; + tok->type = TK_REPEAT; tok->u.repeat.lower = 0; - tok->u.repeat.upper = REPEAT_INFINITE; + tok->u.repeat.upper = INFINITE_REPEAT; goto greedy_check; break; case '+': if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_PLUS_ONE_INF)) break; - tok->type = TK_OP_REPEAT; + tok->type = TK_REPEAT; tok->u.repeat.lower = 1; - tok->u.repeat.upper = REPEAT_INFINITE; + tok->u.repeat.upper = INFINITE_REPEAT; goto greedy_check; break; case '?': if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_QMARK_ZERO_ONE)) break; - tok->type = TK_OP_REPEAT; + tok->type = TK_REPEAT; tok->u.repeat.lower = 0; tok->u.repeat.upper = 1; greedy_check: + tok->u.repeat.possessive = 0; + greedy_check2: if (!PEND && PPEEK_IS('?') && - IS_SYNTAX_OP(syn, ONIG_SYN_OP_QMARK_NON_GREEDY)) { + IS_SYNTAX_OP(syn, ONIG_SYN_OP_QMARK_NON_GREEDY) && + tok->u.repeat.possessive == 0) { PFETCH(c); - tok->u.repeat.greedy = 0; + tok->u.repeat.greedy = 0; tok->u.repeat.possessive = 0; } else { possessive_check: + tok->u.repeat.greedy = 1; 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))) { + tok->type == TK_INTERVAL)) && + tok->u.repeat.possessive == 0) { PFETCH(c); - tok->u.repeat.greedy = 1; tok->u.repeat.possessive = 1; } - else { - tok->u.repeat.greedy = 1; - tok->u.repeat.possessive = 0; - } } break; case '{': if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_BRACE_INTERVAL)) break; - r = fetch_range_quantifier(&p, end, tok, env); + r = fetch_interval_quantifier(&p, end, tok, env); if (r < 0) return r; /* error */ - if (r == 0) goto greedy_check; + if (r == 0) goto greedy_check2; else if (r == 2) { /* {n} */ if (IS_SYNTAX_BV(syn, ONIG_SYN_FIXED_INTERVAL_IS_GREEDY_ONLY)) goto possessive_check; - goto greedy_check; + goto greedy_check2; } /* r == 1 : normal char */ break; @@ -5000,38 +5072,38 @@ 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_BOUNDARY; + tok->u.anchor = ANCR_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_NO_WORD_BOUNDARY; + tok->u.anchor = ANCR_NO_WORD_BOUNDARY; break; case 'y': - if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP2_ESC_X_Y_GRAPHEME_CLUSTER)) break; + if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP2_ESC_X_Y_TEXT_SEGMENT)) break; tok->type = TK_ANCHOR; - tok->u.anchor = ANCHOR_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY; + tok->u.anchor = ANCR_TEXT_SEGMENT_BOUNDARY; break; case 'Y': - if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP2_ESC_X_Y_GRAPHEME_CLUSTER)) break; + if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP2_ESC_X_Y_TEXT_SEGMENT)) break; tok->type = TK_ANCHOR; - tok->u.anchor = ANCHOR_NO_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY; + tok->u.anchor = ANCR_NO_TEXT_SEGMENT_BOUNDARY; break; #ifdef USE_WORD_BEGIN_END case '<': if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_LTGT_WORD_BEGIN_END)) break; tok->type = TK_ANCHOR; - tok->u.anchor = ANCHOR_WORD_BEGIN; + tok->u.anchor = ANCR_WORD_BEGIN; break; case '>': if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_LTGT_WORD_BEGIN_END)) break; tok->type = TK_ANCHOR; - tok->u.anchor = ANCHOR_WORD_END; + tok->u.anchor = ANCR_WORD_END; break; #endif @@ -5098,34 +5170,34 @@ fetch_token(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env) break; case 'X': - if (! IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_X_Y_GRAPHEME_CLUSTER)) break; - tok->type = TK_EXTENDED_GRAPHEME_CLUSTER; + if (! IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_X_Y_TEXT_SEGMENT)) break; + tok->type = TK_TEXT_SEGMENT; break; case 'A': if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_AZ_BUF_ANCHOR)) break; begin_buf: tok->type = TK_ANCHOR; - tok->u.subtype = ANCHOR_BEGIN_BUF; + tok->u.subtype = ANCR_BEGIN_BUF; break; case 'Z': if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_AZ_BUF_ANCHOR)) break; tok->type = TK_ANCHOR; - tok->u.subtype = ANCHOR_SEMI_END_BUF; + tok->u.subtype = ANCR_SEMI_END_BUF; break; case 'z': if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_AZ_BUF_ANCHOR)) break; end_buf: tok->type = TK_ANCHOR; - tok->u.subtype = ANCHOR_END_BUF; + tok->u.subtype = ANCR_END_BUF; break; case 'G': if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_CAPITAL_G_BEGIN_ANCHOR)) break; tok->type = TK_ANCHOR; - tok->u.subtype = ANCHOR_BEGIN_POSITION; + tok->u.subtype = ANCR_BEGIN_POSITION; break; case '`': @@ -5228,7 +5300,7 @@ fetch_token(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env) goto skip_backref; } - if (IS_SYNTAX_OP(syn, ONIG_SYN_OP_DECIMAL_BACKREF) && + 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_MEMENV(env)[num].node)) @@ -5311,10 +5383,8 @@ fetch_token(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env) tok->u.backref.ref1 = back_num; } else { - num = onig_name_to_group_numbers(env->reg, prev, name_end, &backs); + num = name_to_group_numbers(env, 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)) { @@ -5396,13 +5466,13 @@ fetch_token(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env) 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); + tok->u.prop.not = c == 'P'; 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); + tok->u.prop.not = tok->u.prop.not == 0; } else PUNFETCH; @@ -5465,9 +5535,9 @@ fetch_token(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env) #ifdef USE_VARIABLE_META_CHARS anytime: #endif - tok->type = TK_OP_REPEAT; + tok->type = TK_REPEAT; tok->u.repeat.lower = 0; - tok->u.repeat.upper = REPEAT_INFINITE; + tok->u.repeat.upper = INFINITE_REPEAT; goto greedy_check; break; @@ -5476,9 +5546,9 @@ fetch_token(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env) #ifdef USE_VARIABLE_META_CHARS one_or_more_time: #endif - tok->type = TK_OP_REPEAT; + tok->type = TK_REPEAT; tok->u.repeat.lower = 1; - tok->u.repeat.upper = REPEAT_INFINITE; + tok->u.repeat.upper = INFINITE_REPEAT; goto greedy_check; break; @@ -5487,7 +5557,7 @@ fetch_token(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env) #ifdef USE_VARIABLE_META_CHARS zero_or_one_time: #endif - tok->type = TK_OP_REPEAT; + tok->type = TK_REPEAT; tok->u.repeat.lower = 0; tok->u.repeat.upper = 1; goto greedy_check; @@ -5495,14 +5565,14 @@ fetch_token(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env) case '{': if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_BRACE_INTERVAL)) break; - r = fetch_range_quantifier(&p, end, tok, env); + r = fetch_interval_quantifier(&p, end, tok, env); if (r < 0) return r; /* error */ - if (r == 0) goto greedy_check; + if (r == 0) goto greedy_check2; else if (r == 2) { /* {n} */ if (IS_SYNTAX_BV(syn, ONIG_SYN_FIXED_INTERVAL_IS_GREEDY_ONLY)) goto possessive_check; - goto greedy_check; + goto greedy_check2; } /* r == 1 : normal char */ break; @@ -5561,7 +5631,7 @@ fetch_token(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env) tok->u.call.gnum = 0; tok->u.call.name = p; PINC; - if (! PPEEK_IS(')')) return ONIGERR_INVALID_GROUP_NAME; + if (! PPEEK_IS(')')) return ONIGERR_UNDEFINED_GROUP_OPTION; tok->u.call.name_end = p; break; @@ -5620,14 +5690,14 @@ fetch_token(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env) if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_LINE_ANCHOR)) break; tok->type = TK_ANCHOR; tok->u.subtype = (IS_SINGLELINE(env->options) - ? ANCHOR_BEGIN_BUF : ANCHOR_BEGIN_LINE); + ? ANCR_BEGIN_BUF : ANCR_BEGIN_LINE); break; case '$': if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_LINE_ANCHOR)) break; tok->type = TK_ANCHOR; tok->u.subtype = (IS_SINGLELINE(env->options) - ? ANCHOR_SEMI_END_BUF : ANCHOR_END_LINE); + ? ANCR_SEMI_END_BUF : ANCR_END_LINE); break; case '[': @@ -6035,7 +6105,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, PToken* tok, UChar** src, UChar* end, ScanEnv* env) { int r, ctype; CClassNode* cc; @@ -6185,7 +6255,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, PToken* tok, UChar** src, UChar* end, ScanEnv* env) { int r, neg, len, fetched, and_start; OnigCodePoint v, vs; @@ -6202,6 +6272,7 @@ parse_char_class(Node** np, OnigToken* tok, UChar** src, UChar* end, ScanEnv* en 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) { @@ -6254,10 +6325,11 @@ parse_char_class(Node** np, OnigToken* tok, UChar** src, UChar* end, ScanEnv* en case TK_RAW_BYTE: /* tok->base != 0 : octal or hexadec. */ if (! ONIGENC_IS_SINGLEBYTE(env->enc) && tok->base != 0) { + int i, j; UChar buf[ONIGENC_CODE_TO_MBC_MAXLEN]; UChar* bufe = buf + ONIGENC_CODE_TO_MBC_MAXLEN; UChar* psave = p; - int i, base = tok->base; + int base = tok->base; buf[0] = tok->u.c; for (i = 1; i < ONIGENC_MBC_MAXLEN(env->enc); i++) { @@ -6275,6 +6347,9 @@ parse_char_class(Node** np, OnigToken* tok, UChar** src, UChar* end, ScanEnv* en goto err; } + /* clear buf tail */ + for (j = i; j < ONIGENC_CODE_TO_MBC_MAXLEN; j++) buf[j] = '\0'; + len = enclen(env->enc, buf); if (i < len) { r = ONIGERR_TOO_SHORT_MULTI_BYTE_STRING; @@ -6312,8 +6387,13 @@ parse_char_class(Node** np, OnigToken* tok, UChar** src, UChar* end, ScanEnv* en val_entry: len = ONIGENC_CODE_TO_MBCLEN(env->enc, v); if (len < 0) { - r = len; - goto err; + if (state != CCS_RANGE || + ! IS_SYNTAX_BV(env->syntax, + ONIG_SYN_ALLOW_INVALID_CODE_END_OF_RANGE_IN_CC) || + v < 0x100 || ONIGENC_MBC_MAXLEN(env->enc) == 1) { + r = len; + goto err; + } } in_type = (len == 1 ? CCV_SB : CCV_CODE_POINT); val_entry2: @@ -6522,8 +6602,8 @@ parse_char_class(Node** np, OnigToken* tok, UChar** src, UChar* end, ScanEnv* en return r; } -static int parse_subexp(Node** top, OnigToken* tok, int term, - UChar** src, UChar* end, ScanEnv* env); +static int parse_subexp(Node** top, PToken* tok, int term, + UChar** src, UChar* end, ScanEnv* env, int group_head); #ifdef USE_CALLOUT @@ -6580,7 +6660,7 @@ parse_callout_of_contents(Node** np, int cterm, UChar** src, UChar* end, ScanEnv PFETCH_S(c); if (c == '[') { if (PEND) return ONIGERR_END_PATTERN_IN_GROUP; - tag_start = p; + tag_end = tag_start = p; while (! PEND) { if (PEND) return ONIGERR_END_PATTERN_IN_GROUP; tag_end = p; @@ -6626,7 +6706,7 @@ parse_callout_of_contents(Node** np, int cterm, UChar** src, UChar* end, ScanEnv } if (tag_start != tag_end) { - r = callout_tag_entry(env->reg, tag_start, tag_end, num); + r = callout_tag_entry(env, env->reg, tag_start, tag_end, num); if (r != ONIG_NORMAL) return r; } @@ -6870,7 +6950,7 @@ parse_callout_of_name(Node** np, int cterm, UChar** src, UChar* end, ScanEnv* en if (c == '[') { if (PEND) return ONIGERR_END_PATTERN_IN_GROUP; - tag_start = p; + tag_end = tag_start = p; while (! PEND) { if (PEND) return ONIGERR_END_PATTERN_IN_GROUP; tag_end = p; @@ -6947,7 +7027,7 @@ parse_callout_of_name(Node** np, int cterm, UChar** src, UChar* end, ScanEnv* en } if (tag_start != tag_end) { - r = callout_tag_entry(env->reg, tag_start, tag_end, num); + r = callout_tag_entry(env, env->reg, tag_start, tag_end, num); if (r != ONIG_NORMAL) return r; } @@ -6980,8 +7060,8 @@ parse_callout_of_name(Node** np, int cterm, UChar** src, UChar* end, ScanEnv* en #endif static int -parse_enclosure(Node** np, OnigToken* tok, int term, UChar** src, UChar* end, - ScanEnv* env) +parse_bag(Node** np, PToken* tok, int term, UChar** src, UChar* end, + ScanEnv* env) { int r, num; Node *target; @@ -7008,20 +7088,20 @@ parse_enclosure(Node** np, OnigToken* tok, int term, UChar** src, UChar* end, group: r = fetch_token(tok, &p, end, env); if (r < 0) return r; - r = parse_subexp(np, tok, term, &p, end, env); + r = parse_subexp(np, tok, term, &p, end, env, 0); if (r < 0) return r; *src = p; return 1; /* group */ break; case '=': - *np = onig_node_new_anchor(ANCHOR_PREC_READ, 0); + *np = onig_node_new_anchor(ANCR_PREC_READ, 0); break; case '!': /* preceding read */ - *np = onig_node_new_anchor(ANCHOR_PREC_READ_NOT, 0); + *np = onig_node_new_anchor(ANCR_PREC_READ_NOT, 0); break; case '>': /* (?>...) stop backtrack */ - *np = node_new_enclosure(ENCLOSURE_STOP_BACKTRACK); + *np = node_new_bag(BAG_STOP_BACKTRACK); break; case '\'': @@ -7036,9 +7116,9 @@ parse_enclosure(Node** np, OnigToken* tok, int term, UChar** src, UChar* end, if (PEND) return ONIGERR_END_PATTERN_WITH_UNMATCHED_PARENTHESIS; PFETCH(c); if (c == '=') - *np = onig_node_new_anchor(ANCHOR_LOOK_BEHIND, 0); + *np = onig_node_new_anchor(ANCR_LOOK_BEHIND, 0); else if (c == '!') - *np = onig_node_new_anchor(ANCHOR_LOOK_BEHIND_NOT, 0); + *np = onig_node_new_anchor(ANCR_LOOK_BEHIND_NOT, 0); else { if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_QMARK_LT_NAMED_GROUP)) { UChar *name; @@ -7066,7 +7146,7 @@ parse_enclosure(Node** np, OnigToken* tok, int term, UChar** src, UChar* end, if (r != 0) return r; *np = node_new_memory(1); CHECK_NULL_RETURN_MEMERR(*np); - ENCLOSURE_(*np)->m.regnum = num; + BAG_(*np)->m.regnum = num; if (list_capture != 0) MEM_STATUS_ON_SIMPLE(env->capture_history, num); env->num_named++; @@ -7103,7 +7183,7 @@ parse_enclosure(Node** np, OnigToken* tok, int term, UChar** src, UChar* end, r = fetch_token(tok, &p, end, env); if (r < 0) return r; - r = parse_subexp(&absent, tok, term, &p, end, env); + r = parse_subexp(&absent, tok, term, &p, end, env, 1); if (r < 0) { onig_node_free(absent); return r; @@ -7224,10 +7304,8 @@ parse_enclosure(Node** np, OnigToken* tok, int term, UChar** src, UChar* end, int num; int* backs; - num = onig_name_to_group_numbers(env->reg, prev, name_end, &backs); + num = name_to_group_numbers(env, 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)) { @@ -7281,14 +7359,16 @@ parse_enclosure(Node** np, OnigToken* tok, int term, UChar** src, UChar* end, 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); + r = parse_subexp(&condition, tok, term, &p, end, env, 0); if (r < 0) { onig_node_free(condition); return r; } } +#ifdef USE_CALLOUT end_condition: +#endif CHECK_NULL_RETURN_MEMERR(condition); if (PEND) { @@ -7309,9 +7389,9 @@ parse_enclosure(Node** np, OnigToken* tok, int term, UChar** src, UChar* end, int then_is_empty; Node *Then, *Else; + Then = 0; if (PPEEK_IS('|')) { PFETCH(c); - Then = 0; then_is_empty = 1; } else @@ -7322,7 +7402,7 @@ parse_enclosure(Node** np, OnigToken* tok, int term, UChar** src, UChar* end, onig_node_free(condition); return r; } - r = parse_subexp(&target, tok, term, &p, end, env); + r = parse_subexp(&target, tok, term, &p, end, env, 1); if (r < 0) { onig_node_free(condition); onig_node_free(target); @@ -7350,7 +7430,7 @@ parse_enclosure(Node** np, OnigToken* tok, int term, UChar** src, UChar* end, } } - *np = node_new_enclosure_if_else(condition, Then, Else); + *np = node_new_bag_if_else(condition, Then, Else); if (IS_NULL(*np)) { onig_node_free(condition); onig_node_free(Then); @@ -7365,6 +7445,7 @@ parse_enclosure(Node** np, OnigToken* tok, int term, UChar** src, UChar* end, } break; +#ifdef USE_CAPTURE_HISTORY case '@': if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_ATMARK_CAPTURE_HISTORY)) { if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_QMARK_LT_NAMED_GROUP)) { @@ -7385,19 +7466,21 @@ parse_enclosure(Node** np, OnigToken* tok, int term, UChar** src, UChar* end, else if (num >= (int )MEM_STATUS_BITS_NUM) { return ONIGERR_GROUP_NUMBER_OVER_FOR_CAPTURE_HISTORY; } - ENCLOSURE_(*np)->m.regnum = num; + BAG_(*np)->m.regnum = num; MEM_STATUS_ON_SIMPLE(env->capture_history, num); } else { return ONIGERR_UNDEFINED_GROUP_OPTION; } break; +#endif #ifdef USE_POSIXLINE_OPTION case 'p': #endif case '-': case 'i': case 'm': case 's': case 'x': case 'W': case 'D': case 'S': case 'P': + case 'y': { int neg = 0; @@ -7422,7 +7505,8 @@ parse_enclosure(Node** np, OnigToken* tok, int term, UChar** src, UChar* end, 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)) { + else if (IS_SYNTAX_OP2(env->syntax, + ONIG_SYN_OP2_OPTION_ONIGURUMA|ONIG_SYN_OP2_OPTION_RUBY)) { OPTION_NEGATE(option, ONIG_OPTION_MULTILINE, neg); } else @@ -7438,6 +7522,46 @@ parse_enclosure(Node** np, OnigToken* tok, int term, UChar** src, UChar* end, case 'S': OPTION_NEGATE(option, ONIG_OPTION_SPACE_IS_ASCII, neg); break; case 'P': OPTION_NEGATE(option, ONIG_OPTION_POSIX_IS_ASCII, neg); break; + case 'y': /* y{g}, y{w} */ + { + if (! IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_OPTION_ONIGURUMA)) + return ONIGERR_UNDEFINED_GROUP_OPTION; + + if (neg != 0) return ONIGERR_UNDEFINED_GROUP_OPTION; + + if (PEND) return ONIGERR_END_PATTERN_IN_GROUP; + if (! PPEEK_IS('{')) return ONIGERR_UNDEFINED_GROUP_OPTION; + PFETCH(c); + if (PEND) return ONIGERR_END_PATTERN_IN_GROUP; + PFETCH(c); + switch (c) { + case 'g': + if (! ONIGENC_IS_UNICODE_ENCODING(enc)) + return ONIGERR_UNDEFINED_GROUP_OPTION; + + OPTION_NEGATE(option, ONIG_OPTION_TEXT_SEGMENT_EXTENDED_GRAPHEME_CLUSTER, 0); + OPTION_NEGATE(option, ONIG_OPTION_TEXT_SEGMENT_WORD, 1); + break; +#ifdef USE_UNICODE_WORD_BREAK + case 'w': + if (! ONIGENC_IS_UNICODE_ENCODING(enc)) + return ONIGERR_UNDEFINED_GROUP_OPTION; + + OPTION_NEGATE(option, ONIG_OPTION_TEXT_SEGMENT_WORD, 0); + OPTION_NEGATE(option, ONIG_OPTION_TEXT_SEGMENT_EXTENDED_GRAPHEME_CLUSTER, 1); + break; +#endif + default: + return ONIGERR_UNDEFINED_GROUP_OPTION; + break; + } + if (PEND) return ONIGERR_END_PATTERN_IN_GROUP; + PFETCH(c); + if (c != '}') + return ONIGERR_UNDEFINED_GROUP_OPTION; + break; + } /* case 'y' */ + default: return ONIGERR_UNDEFINED_GROUP_OPTION; } @@ -7454,7 +7578,7 @@ parse_enclosure(Node** np, OnigToken* tok, int term, UChar** src, UChar* end, env->options = option; r = fetch_token(tok, &p, end, env); if (r < 0) return r; - r = parse_subexp(&target, tok, term, &p, end, env); + r = parse_subexp(&target, tok, term, &p, end, env, 0); env->options = prev; if (r < 0) { onig_node_free(target); @@ -7469,7 +7593,7 @@ parse_enclosure(Node** np, OnigToken* tok, int term, UChar** src, UChar* end, if (PEND) return ONIGERR_END_PATTERN_IN_GROUP; PFETCH(c); - } + } /* while (1) */ } break; @@ -7495,13 +7619,13 @@ parse_enclosure(Node** np, OnigToken* tok, int term, UChar** src, UChar* end, CHECK_NULL_RETURN_MEMERR(*np); num = scan_env_add_mem_entry(env); if (num < 0) return num; - ENCLOSURE_(*np)->m.regnum = num; + BAG_(*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); + r = parse_subexp(&target, tok, term, &p, end, env, 0); if (r < 0) { onig_node_free(target); return r; @@ -7509,10 +7633,10 @@ parse_enclosure(Node** np, OnigToken* tok, int term, UChar** src, UChar* end, NODE_BODY(*np) = target; - if (NODE_TYPE(*np) == NODE_ENCLOSURE) { - if (ENCLOSURE_(*np)->type == ENCLOSURE_MEMORY) { + if (NODE_TYPE(*np) == NODE_BAG) { + if (BAG_(*np)->type == BAG_MEMORY) { /* Don't move this to previous of parse_subexp() */ - r = scan_env_set_mem_node(env, ENCLOSURE_(*np)->m.regnum, *np); + r = scan_env_set_mem_node(env, BAG_(*np)->m.regnum, *np); if (r != 0) return r; } } @@ -7541,7 +7665,7 @@ set_quantifier(Node* qnode, Node* target, int group, ScanEnv* env) switch (NODE_TYPE(target)) { case NODE_STRING: - if (! group) { + if (group == 0) { if (str_node_can_be_split(target, env->enc)) { Node* n = str_node_split_last_char(target, env->enc); if (IS_NOT_NULL(n)) { @@ -7597,7 +7721,7 @@ set_quantifier(Node* qnode, Node* target, int group, ScanEnv* env) 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) { + if (! IS_INFINITE_REPEAT(qn->upper) && qn->upper > 1 && qn->greedy) { qn->upper = (qn->lower == 0 ? 1 : qn->lower); } } @@ -7732,17 +7856,21 @@ i_apply_case_fold(OnigCodePoint from, OnigCodePoint to[], int to_len, void* arg) } static int -parse_exp(Node** np, OnigToken* tok, int term, UChar** src, UChar* end, - ScanEnv* env) +parse_exp(Node** np, PToken* tok, int term, UChar** src, UChar* end, + ScanEnv* env, int group_head) { - int r, len, group = 0; + int r, len, group; Node* qn; - Node** targetp; + Node** tp; + unsigned int parse_depth; + group = 0; *np = NULL; if (tok->type == (enum TokenSyms )term) goto end_of_token; + parse_depth = env->parse_depth; + switch (tok->type) { case TK_ALT: case TK_EOT: @@ -7753,17 +7881,29 @@ parse_exp(Node** np, OnigToken* tok, int term, UChar** src, UChar* end, break; case TK_SUBEXP_OPEN: - r = parse_enclosure(np, tok, TK_SUBEXP_CLOSE, src, end, env); + r = parse_bag(np, tok, TK_SUBEXP_CLOSE, src, end, env); if (r < 0) return r; - if (r == 1) group = 1; + if (r == 1) { /* group */ + if (group_head == 0) + group = 1; + else { + Node* target = *np; + *np = node_new_group(target); + if (IS_NULL(*np)) { + onig_node_free(target); + return ONIGERR_MEMORY; + } + group = 2; + } + } else if (r == 2) { /* option only */ Node* target; OnigOptionType prev = env->options; - env->options = ENCLOSURE_(*np)->o.options; + env->options = BAG_(*np)->o.options; r = fetch_token(tok, src, end, env); if (r < 0) return r; - r = parse_subexp(&target, tok, term, src, end, env); + r = parse_subexp(&target, tok, term, src, end, env, 0); env->options = prev; if (r < 0) { onig_node_free(target); @@ -7798,7 +7938,7 @@ parse_exp(Node** np, OnigToken* tok, int term, UChar** src, UChar* end, } string_end: - targetp = np; + tp = np; goto repeat; } break; @@ -7811,48 +7951,41 @@ parse_exp(Node** np, OnigToken* tok, int term, UChar** src, UChar* end, len = 1; while (1) { if (len >= ONIGENC_MBC_MINLEN(env->enc)) { - if (len == enclen(env->enc, STR_(*np)->s)) {/* should not enclen_end() */ + if (len == enclen(env->enc, STR_(*np)->s)) { r = fetch_token(tok, src, end, env); - NODE_STRING_CLEAR_RAW(*np); - goto string_end; + goto tk_raw_byte_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(STR_(*np), rem, (UChar )0); - if (len + rem == enclen(env->enc, STR_(*np)->s)) { - NODE_STRING_CLEAR_RAW(*np); - goto string_end; - } - } -#endif + if (r != TK_RAW_BYTE) return ONIGERR_TOO_SHORT_MULTI_BYTE_STRING; - } r = node_str_cat_char(*np, (UChar )tok->u.c); if (r < 0) return r; len++; } + + tk_raw_byte_end: + if (! ONIGENC_IS_VALID_MBC_STRING(env->enc, STR_(*np)->s, STR_(*np)->end)) + return ONIGERR_INVALID_WIDE_CHAR_VALUE; + + NODE_STRING_CLEAR_RAW(*np); + goto string_end; } break; case TK_CODE_POINT: { UChar buf[ONIGENC_CODE_TO_MBC_MAXLEN]; - int num = ONIGENC_CODE_TO_MBC(env->enc, tok->u.code, buf); - if (num < 0) return num; + len = ONIGENC_CODE_TO_MBC(env->enc, tok->u.code, buf); + if (len < 0) return len; #ifdef NUMBERED_CHAR_IS_NOT_CASE_AMBIG - *np = node_new_str_raw(buf, buf + num); + *np = node_new_str_raw(buf, buf + len); #else - *np = node_new_str(buf, buf + num); + *np = node_new_str(buf, buf + len); #endif CHECK_NULL_RETURN_MEMERR(*np); } @@ -7952,7 +8085,7 @@ parse_exp(Node** np, OnigToken* tok, int term, UChar** src, UChar* end, case TK_ANYCHAR_ANYTIME: *np = node_new_anychar(); CHECK_NULL_RETURN_MEMERR(*np); - qn = node_new_quantifier(0, REPEAT_INFINITE, 0); + qn = node_new_quantifier(0, INFINITE_REPEAT, 0); CHECK_NULL_RETURN_MEMERR(qn); NODE_BODY(qn) = *np; *np = qn; @@ -7992,11 +8125,11 @@ parse_exp(Node** np, OnigToken* tok, int term, UChar** src, UChar* end, int ascii_mode = IS_WORD_ASCII(env->options) && IS_WORD_ANCHOR_TYPE(tok->u.anchor) ? 1 : 0; *np = onig_node_new_anchor(tok->u.anchor, ascii_mode); - CHECK_NULL_RETURN_MEMERR(*np); + CHECK_NULL_RETURN_MEMERR(*np); } break; - case TK_OP_REPEAT: + case TK_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)) @@ -8031,8 +8164,8 @@ parse_exp(Node** np, OnigToken* tok, int term, UChar** src, UChar* end, if (r < 0) return r; break; - case TK_EXTENDED_GRAPHEME_CLUSTER: - r = make_extended_grapheme_cluster(np, env); + case TK_TEXT_SEGMENT: + r = make_text_segment(np, env); if (r < 0) return r; break; @@ -8042,22 +8175,35 @@ parse_exp(Node** np, OnigToken* tok, int term, UChar** src, UChar* end, } { - targetp = np; + tp = np; re_entry: r = fetch_token(tok, src, end, env); if (r < 0) return r; repeat: - if (r == TK_OP_REPEAT || r == TK_INTERVAL) { - if (is_invalid_quantifier_target(*targetp)) + if (r == TK_REPEAT || r == TK_INTERVAL) { + Node* target; + + if (is_invalid_quantifier_target(*tp)) return ONIGERR_TARGET_OF_REPEAT_OPERATOR_INVALID; + parse_depth++; + if (parse_depth > ParseDepthLimit) + return ONIGERR_PARSE_DEPTH_LIMIT_OVER; + qn = node_new_quantifier(tok->u.repeat.lower, tok->u.repeat.upper, - (r == TK_INTERVAL ? 1 : 0)); + r == TK_INTERVAL); CHECK_NULL_RETURN_MEMERR(qn); QUANT_(qn)->greedy = tok->u.repeat.greedy; - r = set_quantifier(qn, *targetp, group, env); + if (group == 2) { + target = node_drop_group(*tp); + *tp = NULL_NODE; + } + else { + target = *tp; + } + r = set_quantifier(qn, target, group, env); if (r < 0) { onig_node_free(qn); return r; @@ -8065,7 +8211,7 @@ parse_exp(Node** np, OnigToken* tok, int term, UChar** src, UChar* end, if (tok->u.repeat.possessive != 0) { Node* en; - en = node_new_enclosure(ENCLOSURE_STOP_BACKTRACK); + en = node_new_bag(BAG_STOP_BACKTRACK); if (IS_NULL(en)) { onig_node_free(qn); return ONIGERR_MEMORY; @@ -8075,26 +8221,28 @@ parse_exp(Node** np, OnigToken* tok, int term, UChar** src, UChar* end, } if (r == 0) { - *targetp = qn; + *tp = qn; } - else if (r == 1) { + else if (r == 1) { /* x{1,1} ==> x */ onig_node_free(qn); + *tp = target; } else if (r == 2) { /* split case: /abc+/ */ Node *tmp; - *targetp = node_new_list(*targetp, NULL); - if (IS_NULL(*targetp)) { + *tp = node_new_list(*tp, NULL); + if (IS_NULL(*tp)) { onig_node_free(qn); return ONIGERR_MEMORY; } - tmp = NODE_CDR(*targetp) = node_new_list(qn, NULL); + tmp = NODE_CDR(*tp) = node_new_list(qn, NULL); if (IS_NULL(tmp)) { onig_node_free(qn); return ONIGERR_MEMORY; } - targetp = &(NODE_CAR(tmp)); + tp = &(NODE_CAR(tmp)); } + group = 0; goto re_entry; } } @@ -8103,14 +8251,14 @@ parse_exp(Node** np, OnigToken* tok, int term, UChar** src, UChar* end, } static int -parse_branch(Node** top, OnigToken* tok, int term, UChar** src, UChar* end, - ScanEnv* env) +parse_branch(Node** top, PToken* tok, int term, UChar** src, UChar* end, + ScanEnv* env, int group_head) { int r; Node *node, **headp; *top = NULL; - r = parse_exp(&node, tok, term, src, end, env); + r = parse_exp(&node, tok, term, src, end, env, group_head); if (r < 0) { onig_node_free(node); return r; @@ -8128,7 +8276,7 @@ parse_branch(Node** top, OnigToken* tok, int term, UChar** src, UChar* end, headp = &(NODE_CDR(*top)); while (r != TK_EOT && r != term && r != TK_ALT) { - r = parse_exp(&node, tok, term, src, end, env); + r = parse_exp(&node, tok, term, src, end, env, 0); if (r < 0) { onig_node_free(node); return r; @@ -8151,8 +8299,8 @@ parse_branch(Node** top, OnigToken* tok, int term, UChar** src, UChar* end, /* 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, PToken* tok, int term, UChar** src, UChar* end, + ScanEnv* env, int group_head) { int r; Node *node, **headp; @@ -8162,7 +8310,7 @@ parse_subexp(Node** top, OnigToken* tok, int term, UChar** src, UChar* end, if (env->parse_depth > ParseDepthLimit) return ONIGERR_PARSE_DEPTH_LIMIT_OVER; - r = parse_branch(&node, tok, term, src, end, env); + r = parse_branch(&node, tok, term, src, end, env, group_head); if (r < 0) { onig_node_free(node); return r; @@ -8182,7 +8330,7 @@ parse_subexp(Node** top, OnigToken* tok, int term, UChar** src, UChar* end, 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); + r = parse_branch(&node, tok, term, src, end, env, 0); if (r < 0) { onig_node_free(node); return r; @@ -8217,11 +8365,11 @@ static int parse_regexp(Node** top, UChar** src, UChar* end, ScanEnv* env) { int r; - OnigToken tok; + PToken tok; r = fetch_token(&tok, src, end, env); if (r < 0) return r; - r = parse_subexp(top, &tok, TK_EOT, src, end, env); + r = parse_subexp(top, &tok, TK_EOT, src, end, env, 0); if (r < 0) return r; return 0; @@ -8237,7 +8385,7 @@ make_call_zero_body(Node* node, ScanEnv* env, Node** rnode) CHECK_NULL_RETURN_MEMERR(x); NODE_BODY(x) = node; - ENCLOSURE_(x)->m.regnum = 0; + BAG_(x)->m.regnum = 0; r = scan_env_set_mem_node(env, 0, x); if (r != 0) { onig_node_free(x); @@ -8293,7 +8441,7 @@ onig_parse_tree(Node** root, const UChar* pattern, const UChar* end, reg->num_mem = env->num_mem; #ifdef USE_CALLOUT - ext = REG_EXTP(reg); + ext = reg->extp; if (IS_NOT_NULL(ext) && ext->callout_num > 0) { r = setup_ext_callout_list_values(reg); } diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regposerr.c b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regposerr.c index a396df2acf..55b01fba4b 100644 --- a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regposerr.c +++ b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regposerr.c @@ -2,7 +2,7 @@ regposerr.c - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2002-2018 K.Kosako + * Copyright (c) 2002-2019 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -37,13 +37,7 @@ //#include "config.h" #include "onigposix.h" -#if 0 -#ifdef HAVE_STRING_H -# include -#else -# include -#endif -#endif +//#include #if defined(__GNUC__) # define ARG_UNUSED __attribute__ ((unused)) @@ -86,7 +80,7 @@ static char* ESTRING[] = { extern size_t regerror(int posix_ecode, const regex_t* reg ARG_UNUSED, char* buf, - size_t size) + size_t size) { char* s; char tbuf[35]; diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regposix.c b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regposix.c index 54d456424d..2bfe073ad0 100644 --- a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regposix.c +++ b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regposix.c @@ -2,7 +2,7 @@ regposix.c - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2002-2018 K.Kosako + * Copyright (c) 2002-2019 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -30,6 +30,7 @@ #define regex_t onig_regex_t #include "regint.h" #undef regex_t + #include "onigposix.h" #define ONIG_C(reg) ((onig_regex_t* )((reg)->onig)) @@ -148,6 +149,8 @@ regcomp(regex_t* reg, const char* pattern, int posix_options) OnigSyntaxType* syntax = OnigDefaultSyntax; OnigOptionType options; + reg->onig = (void* )0; + if ((posix_options & REG_EXTENDED) == 0) syntax = ONIG_SYNTAX_POSIX_BASIC; @@ -163,8 +166,8 @@ regcomp(regex_t* reg, const char* pattern, int posix_options) ENC_STRING_LEN(OnigEncDefaultCharEncoding, pattern, len); r = onig_new(PONIG_C(reg), (UChar* )pattern, (UChar* )(pattern + len), - options, OnigEncDefaultCharEncoding, syntax, - (OnigErrorInfo* )NULL); + options, OnigEncDefaultCharEncoding, syntax, + (OnigErrorInfo* )NULL); if (r != ONIG_NORMAL) { return onig2posix_error_code(r); } @@ -175,7 +178,7 @@ regcomp(regex_t* reg, const char* pattern, int posix_options) extern int regexec(regex_t* reg, const char* str, size_t nmatch, - regmatch_t pmatch[], int posix_options) + regmatch_t pmatch[], int posix_options) { int r, i, len; UChar* end; @@ -203,7 +206,7 @@ regexec(regex_t* reg, const char* str, size_t nmatch, ENC_STRING_LEN(ONIG_C(reg)->enc, str, len); end = (UChar* )(str + len); r = onig_search(ONIG_C(reg), (UChar* )str, end, (UChar* )str, end, - (OnigRegion* )pm, options); + (OnigRegion* )pm, options); if (r >= 0) { r = 0; /* Match */ @@ -235,6 +238,7 @@ extern void regfree(regex_t* reg) { onig_free(ONIG_C(reg)); + reg->onig = (void* )0; } @@ -272,7 +276,7 @@ typedef struct { static int i_wrapper(const UChar* name, const UChar* name_end, int ng, int* gs, - onig_regex_t* reg ARG_UNUSED, void* arg) + onig_regex_t* reg ARG_UNUSED, void* arg) { i_wrap* warg = (i_wrap* )arg; diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regsyntax.c b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regsyntax.c index 95a4434e64..c9506d49bf 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-2018 K.Kosako + * Copyright (c) 2002-2019 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -67,8 +67,8 @@ OnigSyntaxType OnigSyntaxPosixExtended = { ONIG_SYN_OP_BRACE_INTERVAL | ONIG_SYN_OP_PLUS_ONE_INF | ONIG_SYN_OP_QMARK_ZERO_ONE | ONIG_SYN_OP_VBAR_ALT ) , 0 - , ( ONIG_SYN_CONTEXT_INDEP_ANCHORS | - ONIG_SYN_CONTEXT_INDEP_REPEAT_OPS | ONIG_SYN_CONTEXT_INVALID_REPEAT_OPS | + , ( ONIG_SYN_CONTEXT_INDEP_ANCHORS | + ONIG_SYN_CONTEXT_INDEP_REPEAT_OPS | ONIG_SYN_CONTEXT_INVALID_REPEAT_OPS | ONIG_SYN_ALLOW_UNMATCHED_CLOSE_SUBEXP | ONIG_SYN_ALLOW_DOUBLE_RANGE_OP_IN_CC ) , ( ONIG_OPTION_SINGLELINE | ONIG_OPTION_MULTILINE ) @@ -174,11 +174,12 @@ OnigSyntaxType OnigSyntaxPerl = { & ~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_PLUS_POSSESSIVE_REPEAT | ONIG_SYN_OP2_PLUS_POSSESSIVE_INTERVAL | 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_X_Y_TEXT_SEGMENT | ONIG_SYN_OP2_ESC_P_BRACE_CHAR_PROPERTY | ONIG_SYN_OP2_ESC_P_BRACE_CIRCUMFLEX_NOT | ONIG_SYN_OP2_ESC_CAPITAL_K_KEEP | @@ -207,11 +208,12 @@ OnigSyntaxType OnigSyntaxPerl_NG = { & ~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_PLUS_POSSESSIVE_REPEAT | ONIG_SYN_OP2_PLUS_POSSESSIVE_INTERVAL | 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_X_Y_TEXT_SEGMENT | ONIG_SYN_OP2_ESC_P_BRACE_CHAR_PROPERTY | ONIG_SYN_OP2_ESC_P_BRACE_CIRCUMFLEX_NOT | ONIG_SYN_OP2_QMARK_LT_NAMED_GROUP | diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode.c b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode.c index 16c34b62ce..d252090917 100644 --- a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode.c +++ b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode.c @@ -2,7 +2,7 @@ unicode.c - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2002-2018 K.Kosako + * Copyright (c) 2002-2019 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -504,6 +504,281 @@ onigenc_unicode_get_case_fold_codes_by_str(OnigEncoding enc, #endif +#ifdef USE_UNICODE_WORD_BREAK + +enum WB_TYPE { + WB_Any = 0, + WB_ALetter, + WB_CR, + WB_Double_Quote, + WB_Extend, + WB_ExtendNumLet, + WB_Format, + WB_Hebrew_Letter, + WB_Katakana, + WB_LF, + WB_MidLetter, + WB_MidNum, + WB_MidNumLet, + WB_Newline, + WB_Numeric, + WB_Regional_Indicator, + WB_Single_Quote, + WB_WSegSpace, + WB_ZWJ, +}; + +typedef struct { + OnigCodePoint start; + OnigCodePoint end; + enum WB_TYPE type; +} WB_RANGE_TYPE; + +#include "unicode_wb_data.c" + +static enum WB_TYPE +wb_get_type(OnigCodePoint code) +{ + OnigCodePoint low, high, x; + enum WB_TYPE type; + + for (low = 0, high = (OnigCodePoint )WB_RANGE_NUM; low < high; ) { + x = (low + high) >> 1; + if (code > WB_RANGES[x].end) + low = x + 1; + else + high = x; + } + + type = (low < (OnigCodePoint )WB_RANGE_NUM && + code >= WB_RANGES[low].start) ? + WB_RANGES[low].type : WB_Any; + + return type; +} + +#define IS_WB_IGNORE_TAIL(t) ((t) == WB_Extend || (t) == WB_Format || (t) == WB_ZWJ) +#define IS_WB_AHLetter(t) ((t) == WB_ALetter || (t) == WB_Hebrew_Letter) +#define IS_WB_MidNumLetQ(t) ((t) == WB_MidNumLet || (t) == WB_Single_Quote) + +static int +wb_get_next_main_code(OnigEncoding enc, UChar* p, const UChar* end, + OnigCodePoint* rcode, enum WB_TYPE* rtype) +{ + OnigCodePoint code; + enum WB_TYPE type; + + while (TRUE) { + p += enclen(enc, p); + if (p >= end) break; + + code = ONIGENC_MBC_TO_CODE(enc, p, end); + type = wb_get_type(code); + if (! IS_WB_IGNORE_TAIL(type)) { + *rcode = code; + *rtype = type; + return 1; + } + } + + return 0; +} + +extern int +onigenc_wb_is_break_position(OnigEncoding enc, UChar* p, UChar* prev, + const UChar* start, const UChar* end) +{ + int r; + UChar* pp; + OnigCodePoint cfrom; + OnigCodePoint cfrom2; + OnigCodePoint cto; + OnigCodePoint cto2; + enum WB_TYPE from; + enum WB_TYPE from2; + enum WB_TYPE to; + enum WB_TYPE to2; + + /* WB1: sot / Any */ + if (p == start) return TRUE; + /* WB2: Any / eot */ + if (p == end) return TRUE; + + if (IS_NULL(prev)) { + prev = onigenc_get_prev_char_head(enc, start, p); + if (IS_NULL(prev)) return TRUE; + } + + cfrom = ONIGENC_MBC_TO_CODE(enc, prev, end); + cto = ONIGENC_MBC_TO_CODE(enc, p, end); + + from = wb_get_type(cfrom); + to = wb_get_type(cto); + + /* short cut */ + if (from == 0 && to == 0) goto WB999; + + /* WB3: CR + LF */ + if (from == WB_CR && to == WB_LF) return FALSE; + + /* WB3a: (Newline|CR|LF) / */ + if (from == WB_Newline || from == WB_CR || from == WB_LF) return TRUE; + /* WB3b: / (Newline|CR|LF) */ + if (to == WB_Newline || to == WB_CR || to == WB_LF) return TRUE; + + /* WB3c: ZWJ + {Extended_Pictographic} */ + if (from == WB_ZWJ) { + if (onigenc_unicode_is_code_ctype(cto, PROP_INDEX_EXTENDEDPICTOGRAPHIC)) + return FALSE; + } + + /* WB3d: WSegSpace + WSegSpace */ + if (from == WB_WSegSpace && to == WB_WSegSpace) return FALSE; + + /* WB4: X (Extend|Format|ZWJ)* -> X */ + if (IS_WB_IGNORE_TAIL(to)) return FALSE; + if (IS_WB_IGNORE_TAIL(from)) { + while ((pp = onigenc_get_prev_char_head(enc, start, prev)) != NULL) { + prev = pp; + cfrom = ONIGENC_MBC_TO_CODE(enc, prev, end); + from = wb_get_type(cfrom); + if (! IS_WB_IGNORE_TAIL(from)) + break; + } + } + + if (IS_WB_AHLetter(from)) { + /* WB5: AHLetter + AHLetter */ + if (IS_WB_AHLetter(to)) return FALSE; + + /* WB6: AHLetter + (MidLetter | MidNumLetQ) AHLetter */ + if (to == WB_MidLetter || IS_WB_MidNumLetQ(to)) { + r = wb_get_next_main_code(enc, p, end, &cto2, &to2); + if (r == 1) { + if (IS_WB_AHLetter(to2)) return FALSE; + } + } + } + + /* WB7: AHLetter (MidLetter | MidNumLetQ) + AHLetter */ + if (from == WB_MidLetter || IS_WB_MidNumLetQ(from)) { + if (IS_WB_AHLetter(to)) { + from2 = WB_Any; + while ((pp = onigenc_get_prev_char_head(enc, start, prev)) != NULL) { + prev = pp; + cfrom2 = ONIGENC_MBC_TO_CODE(enc, prev, end); + from2 = wb_get_type(cfrom2); + if (! IS_WB_IGNORE_TAIL(from2)) + break; + } + + if (IS_WB_AHLetter(from2)) return FALSE; + } + } + + if (from == WB_Hebrew_Letter) { + /* WB7a: Hebrew_Letter + Single_Quote */ + if (to == WB_Single_Quote) return FALSE; + + /* WB7b: Hebrew_Letter + Double_Quote Hebrew_Letter */ + if (to == WB_Double_Quote) { + r = wb_get_next_main_code(enc, p, end, &cto2, &to2); + if (r == 1) { + if (to2 == WB_Hebrew_Letter) return FALSE; + } + } + } + + /* WB7c: Hebrew_Letter Double_Quote + Hebrew_Letter */ + if (from == WB_Double_Quote) { + if (to == WB_Hebrew_Letter) { + from2 = WB_Any; + while ((pp = onigenc_get_prev_char_head(enc, start, prev)) != NULL) { + prev = pp; + cfrom2 = ONIGENC_MBC_TO_CODE(enc, prev, end); + from2 = wb_get_type(cfrom2); + if (! IS_WB_IGNORE_TAIL(from2)) + break; + } + + if (from2 == WB_Hebrew_Letter) return FALSE; + } + } + + if (to == WB_Numeric) { + /* WB8: Numeric + Numeric */ + if (from == WB_Numeric) return FALSE; + + /* WB9: AHLetter + Numeric */ + if (IS_WB_AHLetter(from)) return FALSE; + + /* WB11: Numeric (MidNum | MidNumLetQ) + Numeric */ + if (from == WB_MidNum || IS_WB_MidNumLetQ(from)) { + from2 = WB_Any; + while ((pp = onigenc_get_prev_char_head(enc, start, prev)) != NULL) { + prev = pp; + cfrom2 = ONIGENC_MBC_TO_CODE(enc, prev, end); + from2 = wb_get_type(cfrom2); + if (! IS_WB_IGNORE_TAIL(from2)) + break; + } + + if (from2 == WB_Numeric) return FALSE; + } + } + + if (from == WB_Numeric) { + /* WB10: Numeric + AHLetter */ + if (IS_WB_AHLetter(to)) return FALSE; + + /* WB12: Numeric + (MidNum | MidNumLetQ) Numeric */ + if (to == WB_MidNum || IS_WB_MidNumLetQ(to)) { + r = wb_get_next_main_code(enc, p, end, &cto2, &to2); + if (r == 1) { + if (to2 == WB_Numeric) return FALSE; + } + } + } + + /* WB13: Katakana + Katakana */ + if (from == WB_Katakana && to == WB_Katakana) return FALSE; + + /* WB13a: (AHLetter | Numeric | Katakana | ExtendNumLet) + ExtendNumLet */ + if (IS_WB_AHLetter(from) || from == WB_Numeric || from == WB_Katakana + || from == WB_ExtendNumLet) { + if (to == WB_ExtendNumLet) return FALSE; + } + + /* WB13b: ExtendNumLet + (AHLetter | Numeric | Katakana) */ + if (from == WB_ExtendNumLet) { + if (IS_WB_AHLetter(to) || to == WB_Numeric || to == WB_Katakana) + return FALSE; + } + + + /* WB15: sot (RI RI)* RI + RI */ + /* WB16: [^RI] (RI RI)* RI + RI */ + if (from == WB_Regional_Indicator && to == WB_Regional_Indicator) { + int n = 0; + while ((prev = onigenc_get_prev_char_head(enc, start, prev)) != NULL) { + cfrom2 = ONIGENC_MBC_TO_CODE(enc, prev, end); + from2 = wb_get_type(cfrom2); + if (from2 != WB_Regional_Indicator) + break; + + n++; + } + if ((n % 2) == 0) return FALSE; + } + + WB999: + /* WB999: Any / Any */ + return TRUE; +} + +#endif /* USE_UNICODE_WORD_BREAK */ + + #ifdef USE_UNICODE_EXTENDED_GRAPHEME_CLUSTER enum EGCB_BREAK_TYPE { @@ -657,8 +932,7 @@ onigenc_egcb_is_break_position(OnigEncoding enc, UChar* p, UChar* prev, #ifdef USE_UNICODE_EXTENDED_GRAPHEME_CLUSTER if (! ONIGENC_IS_UNICODE_ENCODING(enc)) { - if (from == 0x000d && to == 0x000a) return 0; - else return 1; + return from != 0x000d || to != 0x000a; } btype = unicode_egcb_is_break_2code(from, to); @@ -701,8 +975,7 @@ onigenc_egcb_is_break_position(OnigEncoding enc, UChar* p, UChar* prev, return 1; #else - if (from == 0x000d && to == 0x000a) return 0; - else return 1; + return from != 0x000d || to != 0x000a; #endif /* USE_UNICODE_EXTENDED_GRAPHEME_CLUSTER */ } @@ -729,6 +1002,7 @@ onig_unicode_define_user_property(const char* name, OnigCodePoint* ranges) int len; int c; char* s; + UChar* uname; if (UserDefinedPropertyNum >= USER_DEFINED_PROPERTY_MAX_NUM) return ONIGERR_TOO_MANY_USER_DEFINED_OBJECTS; @@ -741,10 +1015,11 @@ onig_unicode_define_user_property(const char* name, OnigCodePoint* ranges) if (s == 0) return ONIGERR_MEMORY; + uname = (UChar* )name; n = 0; for (i = 0; i < len; i++) { - c = name[i]; - if (c <= 0 || c >= 0x80) { + c = uname[i]; + if (c < 0x20 || c >= 0x80) { xfree(s); 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 index d1edb1cae2..6a7503a4fd 100644 --- a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_egcb_data.c +++ b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_egcb_data.c @@ -25,7 +25,7 @@ * SUCH DAMAGE. */ -#define GRAPHEME_BREAK_PROPERTY_VERSION 11_0_0 +#define GRAPHEME_BREAK_PROPERTY_VERSION 12_1_0 /* CR @@ -43,7 +43,7 @@ V ZWJ */ -static int EGCB_RANGE_NUM = 1321; +static int EGCB_RANGE_NUM = 1326; static EGCB_RANGE_TYPE EGCB_RANGES[] = { {0x000000, 0x000009, EGCB_Control }, {0x00000a, 0x00000a, EGCB_LF }, @@ -197,8 +197,7 @@ static EGCB_RANGE_TYPE EGCB_RANGES[] = { {0x000e47, 0x000e4e, EGCB_Extend }, {0x000eb1, 0x000eb1, EGCB_Extend }, {0x000eb3, 0x000eb3, EGCB_SpacingMark }, - {0x000eb4, 0x000eb9, EGCB_Extend }, - {0x000ebb, 0x000ebc, EGCB_Extend }, + {0x000eb4, 0x000ebc, EGCB_Extend }, {0x000ec8, 0x000ecd, EGCB_Extend }, {0x000f18, 0x000f19, EGCB_Extend }, {0x000f35, 0x000f35, EGCB_Extend }, @@ -271,9 +270,7 @@ static EGCB_RANGE_TYPE EGCB_RANGES[] = { {0x001ab0, 0x001abe, EGCB_Extend }, {0x001b00, 0x001b03, EGCB_Extend }, {0x001b04, 0x001b04, EGCB_SpacingMark }, - {0x001b34, 0x001b34, EGCB_Extend }, - {0x001b35, 0x001b35, EGCB_SpacingMark }, - {0x001b36, 0x001b3a, EGCB_Extend }, + {0x001b34, 0x001b3a, EGCB_Extend }, {0x001b3b, 0x001b3b, EGCB_SpacingMark }, {0x001b3c, 0x001b3c, EGCB_Extend }, {0x001b3d, 0x001b41, EGCB_SpacingMark }, @@ -305,7 +302,6 @@ static EGCB_RANGE_TYPE EGCB_RANGES[] = { {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 }, @@ -348,8 +344,8 @@ static EGCB_RANGE_TYPE EGCB_RANGES[] = { {0x00a9b4, 0x00a9b5, EGCB_SpacingMark }, {0x00a9b6, 0x00a9b9, EGCB_Extend }, {0x00a9ba, 0x00a9bb, EGCB_SpacingMark }, - {0x00a9bc, 0x00a9bc, EGCB_Extend }, - {0x00a9bd, 0x00a9c0, EGCB_SpacingMark }, + {0x00a9bc, 0x00a9bd, EGCB_Extend }, + {0x00a9be, 0x00a9c0, EGCB_SpacingMark }, {0x00a9e5, 0x00a9e5, EGCB_Extend }, {0x00aa29, 0x00aa2e, EGCB_Extend }, {0x00aa2f, 0x00aa30, EGCB_SpacingMark }, @@ -1177,7 +1173,6 @@ static EGCB_RANGE_TYPE EGCB_RANGES[] = { {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 }, @@ -1291,6 +1286,12 @@ static EGCB_RANGE_TYPE EGCB_RANGES[] = { {0x01182f, 0x011837, EGCB_Extend }, {0x011838, 0x011838, EGCB_SpacingMark }, {0x011839, 0x01183a, EGCB_Extend }, + {0x0119d1, 0x0119d3, EGCB_SpacingMark }, + {0x0119d4, 0x0119d7, EGCB_Extend }, + {0x0119da, 0x0119db, EGCB_Extend }, + {0x0119dc, 0x0119df, EGCB_SpacingMark }, + {0x0119e0, 0x0119e0, EGCB_Extend }, + {0x0119e4, 0x0119e4, EGCB_SpacingMark }, {0x011a01, 0x011a0a, EGCB_Extend }, {0x011a33, 0x011a38, EGCB_Extend }, {0x011a39, 0x011a39, EGCB_SpacingMark }, @@ -1300,7 +1301,7 @@ static EGCB_RANGE_TYPE EGCB_RANGES[] = { {0x011a51, 0x011a56, EGCB_Extend }, {0x011a57, 0x011a58, EGCB_SpacingMark }, {0x011a59, 0x011a5b, EGCB_Extend }, - {0x011a86, 0x011a89, EGCB_Prepend }, + {0x011a84, 0x011a89, EGCB_Prepend }, {0x011a8a, 0x011a96, EGCB_Extend }, {0x011a97, 0x011a97, EGCB_SpacingMark }, {0x011a98, 0x011a99, EGCB_Extend }, @@ -1330,9 +1331,11 @@ static EGCB_RANGE_TYPE EGCB_RANGES[] = { {0x011d97, 0x011d97, EGCB_Extend }, {0x011ef3, 0x011ef4, EGCB_Extend }, {0x011ef5, 0x011ef6, EGCB_SpacingMark }, + {0x013430, 0x013438, EGCB_Control }, {0x016af0, 0x016af4, EGCB_Extend }, {0x016b30, 0x016b36, EGCB_Extend }, - {0x016f51, 0x016f7e, EGCB_SpacingMark }, + {0x016f4f, 0x016f4f, EGCB_Extend }, + {0x016f51, 0x016f87, EGCB_SpacingMark }, {0x016f8f, 0x016f92, EGCB_Extend }, {0x01bc9d, 0x01bc9e, EGCB_Extend }, {0x01bca0, 0x01bca3, EGCB_Control }, @@ -1357,6 +1360,8 @@ static EGCB_RANGE_TYPE EGCB_RANGES[] = { {0x01e01b, 0x01e021, EGCB_Extend }, {0x01e023, 0x01e024, EGCB_Extend }, {0x01e026, 0x01e02a, EGCB_Extend }, + {0x01e130, 0x01e136, EGCB_Extend }, + {0x01e2ec, 0x01e2ef, EGCB_Extend }, {0x01e8d0, 0x01e8d6, EGCB_Extend }, {0x01e944, 0x01e94a, EGCB_Extend }, {0x01f1e6, 0x01f1ff, EGCB_Regional_Indicator }, diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_fold1_key.c b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_fold1_key.c index 553f0e748c..7dbd6a5995 100644 --- a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_fold1_key.c +++ b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_fold1_key.c @@ -1,7 +1,7 @@ /* 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 */ +/* Command-line: /usr/local/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' */ @@ -36,12 +36,12 @@ //#include #include "regenc.h" -#define TOTAL_KEYWORDS 1346 +#define TOTAL_KEYWORDS 1353 #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 */ +#define MAX_HASH_VALUE 1791 +/* maximum key range = 1789, duplicates = 0 */ #ifdef __GNUC__ __inline @@ -56,32 +56,32 @@ 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 + 4, 2, 147, 16, 1, 13, 1228, 725, 1224, 638, + 1204, 95, 9, 82, 1403, 80, 8, 68, 1391, 6, + 1203, 602, 1200, 320, 151, 67, 1385, 61, 1384, 158, + 0, 11, 1252, 3, 733, 278, 23, 425, 660, 424, + 640, 20, 635, 105, 5, 29, 916, 34, 630, 0, + 906, 1378, 899, 1377, 470, 1363, 623, 902, 610, 230, + 1193, 1358, 1190, 779, 986, 1336, 890, 883, 456, 597, + 285, 158, 590, 477, 583, 42, 576, 1447, 447, 1440, + 440, 1353, 426, 1429, 400, 1417, 327, 1407, 567, 1389, + 386, 1207, 458, 724, 854, 979, 1016, 66, 232, 413, + 204, 1431, 226, 1317, 190, 1167, 379, 1319, 198, 1270, + 175, 209, 561, 362, 528, 1323, 257, 1099, 240, 1309, + 508, 1172, 484, 1306, 699, 865, 850, 488, 679, 755, + 420, 639, 1149, 105, 691, 789, 1125, 46, 809, 652, + 1293, 3, 1262, 166, 1426, 0, 1424, 1792, 1220, 460, + 706, 1, 367, 1792, 1341, 1792, 1151, 56, 1235, 1792, + 384, 345, 965, 40, 1168, 33, 218, 180, 1159, 20, + 1296, 276, 1243, 14, 1401, 777, 1142, 682, 1284, 129, + 1135, 610, 1181, 871, 1123, 858, 1042, 510, 842, 499, + 999, 346, 830, 0, 823, 1288, 1115, 768, 732, 1272, + 1101, 1098, 1082, 1270, 811, 177, 1078, 1074, 1061, 1058, + 1050, 789, 353, 1018, 548, 1006, 517, 988, 334, 765, + 166, 753, 138, 743, 100, 969, 87, 720, 49, 975, + 75, 965, 62, 411, 126, 955, 113, 1262, 317, 943, + 304, 679, 293, 1252, 714, 937, 275, 490, 263, 469, + 395, 1345, 931, 208, 921, 80, 542, 11, 246 }; return asso_values[(unsigned char)onig_codes_byte_at(codes, 2)+3] + asso_values[(unsigned char)onig_codes_byte_at(codes, 1)] + asso_values[(unsigned char)onig_codes_byte_at(codes, 0)]; } @@ -93,549 +93,550 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) { -1, -1, -1, - 3408, + 3429, - 1900, + 1906, - 1861, + 1867, 210, 171, - 3393, + 3414, - 1921, + 1927, - 1687, + 1690, 231, - 1879, + 1885, - 1873, + 1879, 189, 183, - 2234, + 2240, - 1312, + 1315, - 1273, + 1276, 165, - 789, + 792, - 2255, + 2261, - 1333, + 1336, - 1591, + 1594, - 1627, + 1630, - 1291, + 1294, - 1285, + 1288, - 1909, + 1915, - 2237, + 2243, 219, - 3402, + 1618, - 2231, + 2237, - 3396, + 3417, - 2975, + 2981, - 2897, + 2903, - 2291, + 2297, - 2984, + 2990, - 3390, + 3423, - 2276, + 2282, - 2942, + 2948, - 1321, + 1324, - 2933, + 2939, - 2921, + 2927, - 1615, + 1606, - 2978, + 2984, - 3486, + 3507, - 2900, + 2906, - 971, + 974, 273, - 2894, + 2900, - 1603, + 1600, - 2642, + 2648, - 3537, + 3558, - 2183, + 2189, - 1225, + 1228, 459, - 2993, + 2999, 80, - 2879, - - 1792, + 2885, - 3717, + 1795, - 1510, + 3738, - 1597, + 1513, 378, - 2432, + 1459, - 3549, + 2438, - 2189, + 3570, - 1231, + 2195, + + 1234, 465, - 857, + 860, 92, - 1038, + 1041, - 1804, + 1807, - 3729, + 3750, - 1522, + 1525, - 2708, + 2714, - 2543, + 2549, - 2435, + 2441, - 3543, + 3564, - 2186, + 2192, - 1228, + 1231, 462, - 863, + 866, 86, - 2882, + 2888, - 1798, + 1801, - 3723, + 3744, - 1516, + 1519, 159, - 2555, + 2561, - 3531, + 3552, - 2180, + 2186, - 1222, + 1225, 456, - 1456, - - 860, + 2972, - 2876, + 863, - 1786, + 2882, - 3711, + 1789, - 1504, + 3732, - 1444, + 1507, 2966, - 2549, + 2942, - 3525, + 2555, - 2177, + 3546, - 1219, + 2183, + + 1222, 453, - 854, + 857, - 2960, + 3411, - 2873, + 2879, - 1780, + 1783, - 3705, + 3726, - 1498, + 1501, 2936, - 2537, + 2543, 2930, - 3561, + 3582, - 2195, + 2201, - 1237, + 1240, 471, - 851, + 854, 105, - 2924, + 1447, - 1816, + 1819, - 3741, + 3762, - 1534, + 1537, - 3333, + 3354, - 2531, + 2537, - 2918, + 2924, - 3555, + 3576, - 2192, + 2198, - 1234, + 1237, 468, - 869, + 872, 99, 399, - 1810, + 1813, - 3735, + 3756, - 1528, + 1531, - 1645, + 1648, - 2567, + 2573, - 3519, + 3540, - 2174, + 2180, - 1216, + 1219, - 2417, + 2423, -1, - 866, + 869, - 2870, + 2876, - 1774, + 1777, - 3699, + 3720, - 1492, + 1495, 541, 502, - 2561, + 2567, - 694, + 697, - 1891, + 1897, 559, 201, - 848, + 851, 520, 514, - 3474, - -1, + 3495, - 959, + 1864, + + 962, 267, - 2525, + 2531, - 2270, + 2276, - 2630, + 2636, - 1303, + 1306, - 3513, + 3534, - 2171, + 2177, - 1213, + 1216, 366, - 2333, + 2339, -1, - 2867, + 2873, - 1768, + 1771, - 3693, + 3714, - 1486, + 1489, - 2021, + 2027, - 1060, + 1063, 324, - 1189, + 1192, 27, - 2957, - -1, + 2963, - 845, + 3276, - 1723, + 848, - 3648, + 1726, - 3135, + 3669, - 1609, + 3141, - 1681, + 1612, - 1375, + 2978, - 2519, + 1378, + + 2525, - 2012, + 2018, - 1051, + 1054, 315, - 827, + 830, 12, - 2714, - -1, - - 782, + 2720, + -1, -1, - 2018, + 2024, - 1057, + 1060, 321, - 2366, + 2372, - 4065, + 4086, - 1357, + 1360, - 2005, + 2011, - 1044, + 1047, 309, - 3612, + 3633, 0, - 2711, + 2717, -1, - 1369, + 1372, 153, 31, - 2726, + 2732, - 2354, + 2360, - 1585, + 1588, - 1345, + 1348, - 2090, + 2096, - 1132, + 1135, 387, -1, - 1378, + 1381, - 2786, + 2792, - 1606, + 1609, -1, - 2009, + 2015, - 1047, + 1050, 312, - 3438, + 3459, 6, - 919, + 922, - 2002, + 2008, - 1041, + 1044, 306, - 2594, + 2600, - 3864, + 3885, - 2360, + 2366, - 3321, + 3342, - 1351, + 1354, - 2033, + 2039, - 1072, + 1075, 336, - 2450, + 2456, 52, - 2729, + 2735, - 2228, + 2234, - 1270, + 1273, 499, - 3858, + 3879, 168, - 2384, - -1, + 2390, - 1399, + 682, - 1594, + 1402, + + 1597, -1, - 715, + 718, - 2030, + 2036, - 1069, + 1072, 333, - 2444, + 2450, 46, - 3597, + 3618, - 2213, + 2219, - 1255, + 1258, 487, -1, 141, - 2378, + 2384, - 1852, + 1855, - 1393, + 1396, - 1570, + 1573, -1, - 712, + 715, - 3591, + 3612, - 2210, + 2216, - 1252, + 1255, 483, @@ -643,377 +644,376 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 135, - 2891, + 2897, - 1846, + 1849, - 1621, + 1624, - 1564, + 1567, - 3471, + 3492, - 1960, + 1966, - 956, + 959, - 3852, + 3873, -1, - 2273, + 2279, - 2627, + 2633, - 884, + 887, - 3579, + 3600, - 2204, + 2210, - 1246, + 1249, 480, - 2330, + 2336, 123, 532, - 1834, + 1837, - 3759, + 3780, - 1552, + 1555, -1, - 3573, + 3594, - 2201, + 2207, - 1243, + 1246, 477, - 2990, + 2996, 117, - 878, + 881, - 1828, + 1831, - 3753, + 3774, - 1546, + 1549, - 700, + 703, -1, - 3846, + 3867, - 3567, + 3588, - 2198, + 2204, - 1240, + 1243, 474, - 875, + 878, 111, 658, - 1822, + 1825, - 3747, + 3768, - 1540, + 1543, - 3801, + 3822, - 1984, + 1990, - 1005, + 1008, 288, -1, - 2285, + 2273, - 2675, + 2681, - 872, + 875, - 2168, + 2174, - 1210, + 1213, -1, 643, - 2342, + 2348, - 2864, + 2870, - 1762, + 1765, - 3687, + 3708, - 1480, + 1483, -1, -1, 652, - 3261, + 3267, 381, - 3900, + 3921, - 3002, + 2960, - 842, + 845, 637, - 1675, + 1684, - 2159, + 2165, - 1201, + 1204, - 3231, + 3237, 661, - 2513, + 2519, - 2855, + 2861, - 1744, + 1747, - 3669, + 3690, - 1462, + 1465, - 775, + 785, - 3882, + 3903, - 2426, + 2432, - 3318, + 3339, 37, - 2084, + 2090, - 1111, + 1114, 372, - 3222, + 3228, - 3894, + 3915, - 2765, + 2771, 640, -1, - 1384, + 1387, - 2495, + 2501, - 3870, + 3891, - 3228, + 3234, - 2015, + 2021, - 1054, + 1057, 318, - 3903, + 3924, 18, - 3216, + 3222, - 1123, + 1126, - 1990, + 1996, - 1017, + 1020, 294, - 2777, + 2783, - 2372, + 2378, - 2687, + 2693, - 1363, + 1366, - 3078, + 3084, - 3603, + 3624, - 2216, + 2222, - 1258, + 1261, - 2348, + 2354, - 3288, + 3297, - 3876, + 3897, - 1981, + 1987, - 999, + 1002, 285, - 1576, + 1579, 667, - 2669, + 2675, - 3219, + 3225, - 3366, + 3387, - 3069, + 3075, - 3999, + 4020, - 3552, + 3573, - 2339, + 2345, - 3213, + 3219, - 3924, + 3945, - 3984, + 4005, 96, - 3075, + 3081, - 1807, + 1810, - 3732, + 3753, - 1525, + 1528, - 2051, + 2057, - 1090, + 1093, - 3063, + 3069, - 2486, + 2492, - 2351, + 2357, - 3507, + 3528, - 1978, + 1984, - 993, + 996, 282, - 3975, + 3996, - 3918, + 3939, - 2663, + 2669, -1, - 1435, + 1438, - 2558, + 2564, - 2279, + 2291, - 3993, + 2285, -1, - 3987, + 4008, - 3501, + 3522, - 1975, + 1981, - 987, + 990, 279, - 3981, + 4014, - 3066, + 3072, - 2657, + 2663, - 3495, + 3516, - 1972, + 1978, - 981, + 984, 276, - 3060, + 3066, -1, - 2651, + 2657, - 2996, + 3008, - 1669, + 3002, - 3465, + 3486, - 1957, + 1963, - 947, + 950, - 1993, + 1999, - 1023, + 1026, 297, - 2621, + 2627, 369, - 2693, - - 765, + 2699, + -1, - 3171, + 3177, - 3378, + 3399, - 2324, + 2330, - 3600, + 3621, - 3423, + 3444, - 1936, + 1942, - 903, + 906, 243, @@ -1021,1923 +1021,1931 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) 613, - 2579, + 2585, - 3480, + 3501, - 1573, + 1576, - 965, + 968, 270, - 3360, + 3381, - 2306, + 2312, - 2636, + 2642, - 3840, + 3861, - 2039, + 2045, - 1078, + 1081, 342, - 2462, + 2468, 65, - 3594, + 3615, 348, - 2477, - - 709, + 2483, - 2972, + 712, + -1, 138, - 2396, + 2402, - 1849, + 1852, - 1411, + 1414, - 1567, + 1570, - 2411, + 2417, - 718, + 721, - 1426, + 1429, - 3822, + 3843, - 3017, + 3023, - 724, - -1, + 727, - 3354, + 1678, - 3195, + 3375, - 2036, + 3201, - 1075, + 2042, + + 1078, 339, - 2456, + 2462, 59, - -1, -1, + -1, - 351, + 4002, - 2483, + 778, - 2165, + 1672, - 1207, + 2171, - 2390, + 1210, - 3348, + 2396, - 1405, + 3369, - 2861, + 1408, - 1756, + 2867, - 3681, + 1759, - 1474, + 3702, - 1432, + 1477, - 3342, + 768, - 2027, + 3363, - 1066, + 2033, + + 1069, 330, - 706, + 709, 40, 622, -1, - 3909, + 3930, - 3312, + 3333, -1, - 3384, - - 363, + 3405, + -1, - 2507, + 2513, - 1387, + 1390, - 2225, + 2231, - 1267, + 1270, 496, - 3042, + 3048, 162, 607, - 2162, + 2168, - 1204, + 1207, - 1588, + 1591, -1, - 3888, + 3909, - 2858, + 2864, - 1750, + 1753, - 3675, + 3696, - 1468, + 1471, - 3327, + 3348, -1, - 3225, + 3231, 634, - 2024, + 2030, - 1063, + 1066, 327, - 3279, + 3288, 34, - 3201, + 3207, - 1987, + 1993, - 1011, + 1014, 291, -1, - 2501, + 2507, - 2681, + 2687, 601, - 1381, + 1384, - 3489, + 3510, - 1969, + 1975, - 974, + 977, - 2345, + 2351, -1, - 3192, + 3198, - 2645, + 2651, - 3483, + 3504, - 1966, + 1972, - 968, + 971, - 3114, + 3120, - 3867, + 3888, 598, - 2639, + 2645, - 3477, + 3498, - 1963, + 1969, - 962, + 965, -1, - 3960, + 3981, 595, - 2633, + 2639, - 3468, + 3489, - 3072, + 3078, - 951, + 954, 264, - 3246, + 3252, - 2336, + 2342, - 2624, + 2630, - 3309, + 3330, - 3048, + 3054, 625, - 3189, + 3195, - 703, + 706, - 2327, + 2333, - 3435, + 3456, - 1942, + 1948, - 916, + 919, 249, 2267, -1, - 2591, + 2597, - 1651, + 1654, 574, - 3039, + 3045, -1, - 3186, + 3192, - 2318, + 2324, - 3429, + 3450, - 1939, + 1945, - 910, + 913, 246, - 745, + 748, - 3183, + 3189, - 2585, + 2591, - 3405, + 3426, - 1927, + 1933, 2954, 237, -1, - 2312, + 2318, - 1918, + 1924, - 3168, + 3174, 228, - 3204, + 3210, - 4029, + 4050, - 1915, + 1921, 354, 225, - 1339, + 1342, - 3036, + 3042, -1, - 2294, + 2300, - 3372, + 3393, - 1330, + 1333, - 2261, + 2255, - 3147, + 3153, - 2288, + 2294, - 1438, + 1441, - 1327, + 1330, - 2249, + 363, 673, - 3336, + 3357, - 3936, + 3957, - 3033, + 3039, - 3011, + 3017, - 1912, + 1918, - 3951, + 3972, 222, - 3330, + 3351, - 3008, + 3014, - 3029, + 3035, - 3834, + 3855, - 2948, + 2918, - 3243, + 3249, - 3005, - - 3324, + 3011, - 2282, + 3345, - 2912, + 2288, + -1, - 1324, + 1327, - 3014, + 3020, 664, - 3051, - - 3315, - -1, + 3057, - 2048, + 3336, - 1087, + 3597, - 3930, + 2054, - 2480, + 1090, - 2057, + 3951, - 688, + 2486, - 357, + 120, - 3957, + 2894, - 1126, + 1834, - 2738, + 3777, - 2999, + 1552, - 2414, + 1642, - 2780, + 3005, - 1429, + 2420, - 2243, + 2063, - 4062, + 1432, - 727, + 357, - 1447, + 4083, - 3828, - -1, + 730, - 2042, + 2744, - 1081, + 3849, - 3912, + 739, - 2468, + 2048, - 71, + 1084, - 1996, + 3933, - 1029, + 2474, - 300, + 71, - 1639, + 1450, + -1, - 3237, + 2087, - 2699, + 1111, - 2402, + 3243, + -1, - 2906, + 2408, - 1417, + 2768, - 3585, + 1420, - 2207, + 3606, - 1249, - -1, + 2213, - 736, + 1252, + -1, -1, 129, - 3534, + 3555, - 1840, + 1843, - 3765, + 3786, - 1558, + 1561, 592, 77, - 1633, + 1029, - 1789, + 1792, - 3714, + 3735, - 1507, + 1510, - 3969, + 2702, 589, - 2429, - -1, -1, + 2435, - 3906, + 2144, - 730, - -1, + 1912, - 345, + 3927, - 2471, + 216, - 74, + 2249, + + 2840, + + 1705, + + 3648, -1, - 3234, + 3240, - 3522, + 3543, - 2540, + 2546, 586, 450, - 2405, + 1321, - 3198, + 3204, - 1420, + 806, - 1777, + 1780, - 3702, + 3723, - 1495, + 1498, - 3516, - -1, -1, + 3537, + -1, + + 2912, 447, - 3180, + 3186, - 2081, + 351, - 1108, + 2489, - 1771, + 1774, - 3696, + 3717, - 1489, + 1492, - 2762, + 2993, - 3177, + 3183, - 3510, + 3531, -1, - 2528, + 2534, 444, - -1, - 1177, + 1435, - 3174, + 1180, - 1765, + 3180, - 3690, + 1768, - 1483, + 3711, - 1699, + 1486, - 3624, + 1702, - 2522, + 3645, + + 2528, 565, - 3450, + 3471, - 3081, + 3087, - 931, + 934, 255, 556, - -1, - 2606, + 1636, - 3045, + 2612, + + 3051, 679, 553, - 2516, + 2522, -1, - 3153, + 3159, 432, - 1693, + 2495, - 3618, + 733, - 3026, + 3032, - 1741, + 1744, - 3666, + 3687, - 1459, + 1462, -1, - 1186, - - 2423, + 691, - 3023, + 2429, - 795, + 3029, - 3150, + 1453, - 1717, + 3156, - 3642, - -1, + 3408, + -1, -1, 550, - 3020, + 3026, - 2489, + 2069, - 3141, + 3147, - 2147, + 2153, - 2492, + 2498, 421, - 820, + 2750, - 3132, + 3138, - 2843, + 2849, - 1720, - - 3645, + 1723, - 1450, + 3666, + -1, - 3129, + 3135, -1, -1, - 2123, + 2138, - 1165, + 1177, - 408, + 414, 676, - 823, - - 2819, + 826, - 1672, + 2834, - 682, + 1693, - 2045, + 2135, - 1084, + 1174, - 3963, + 411, - 2474, + 3990, - 3459, + 3984, - 1954, + 2831, - 941, - -1, + 1687, - 770, + 1861, - 3126, + 685, - 2615, + 795, - 2408, + 3132, + -1, - 3462, + 2129, - 1423, + 1168, - 944, + 408, + -1, - 261, + 789, - 721, - -1, + 2825, - 2618, + 1675, -1, - 628, + 2051, - 3954, + 1087, - 3411, + 3975, - 1930, + 2480, - 2321, + 2002, - 240, + 1032, - 1026, - -1, + 300, - 3399, + 1858, - 1924, + 773, - 2696, + 2705, - 234, + 405, - 3252, + 2414, -1, - 4056, - - 3282, + 1426, - 1342, - -1, + 1666, - 3417, + 4077, - 1933, + 724, - 896, + 345, - 3942, + 2477, - 1336, + 74, -1, - 2573, + 3258, - 405, + 3963, - 2126, + 402, - 1168, + 762, + -1, - 4014, + 2411, - 1663, + 1660, - 2300, + 1423, - 2822, + 4035, - 1678, + 547, - 3207, + 3801, + + 3483, -1, - 3615, + 947, - 2222, + 261, - 1264, + 3273, - 493, + 755, - 759, + 2624, - 156, + 3480, - 3855, + 1960, + + 944, - 779, + 3876, -1, - 3609, + 2327, - 2219, + 2621, + -1, -1, - 1261, + 3438, - 490, - -1, + 1939, - 150, + 899, - 3087, + 3453, - 3849, + 3870, - 890, + 916, - 1582, - -1, -1, -1, + 2579, - 3945, + 3432, - 1117, + 1936, - 375, + 2594, - 3588, - -1, + 240, - 2771, + 3093, - 3843, + 2306, + -1, - 3240, + 3327, - 132, + 2321, - 3777, + 3864, - 1843, + 3420, - 3768, + 1930, - 1561, + 3798, - 3504, + 234, - 3054, + 1345, - 990, + 3636, - 3576, + 2228, - 2438, + 1267, - 577, + 493, - 2660, + 3117, - 881, + 156, - 120, + 577, + -1, - 2888, + 3978, - 1831, + 1339, - 3756, + 3630, - 1549, + 2225, - 3570, + 1264, - 3771, + 490, + -1, - 3387, + 150, - 3267, + 3609, - 3819, + 893, - 114, + 3840, - 2885, + 1585, + -1, - 1825, + 132, - 3750, + 3591, - 1543, + 1846, - 3558, - -1, -1, + 3789, - 3795, + 1564, -1, - 102, + 114, - 3546, + 2891, - 1813, + 1828, - 3738, + 3771, - 1531, + 1546, -1, - 89, + 884, - 3540, + 3579, + -1, - 1801, + 688, + -1, -1, - 3726, - - 1519, - - 3798, - - 83, + 102, - 3528, + 3819, - 1795, + 1816, - 3720, + 3759, - 1513, - -1, -1, + 1534, - 2564, + 3567, + -1, - 1783, + 1129, + -1, - 3708, + 3549, - 1501, + 89, - 441, - -1, + 2786, - 2552, + 1804, - 3111, + 3747, - 1759, + 1522, - 3684, + 3561, - 1477, + 1786, - 3456, + 3729, - 2546, + 1504, - 937, + 2570, - 258, + 83, - 580, + 1035, - 438, + 1798, - 2612, + 3741, - 2534, - -1, + 1516, - 1753, + 2708, - 3678, + 3474, - 1471, + 1957, - 583, + 937, - 435, + 2558, - 2510, + 3264, - 1195, + 441, - 429, + 2615, - 1747, + 2540, + -1, - 3672, + 1762, - 1465, + 3705, - 1735, + 1480, + -1, - 3660, + 2552, - 568, + 2132, - 3351, + 1171, - 3306, + 628, + -1, - 3948, + 3324, - 2504, + 2828, - 4059, + 1681, - 562, + 4080, -1, - 839, + 438, + -1, - 1999, + 3321, - 1035, + 2516, - 303, + 1756, - 2498, - -1, + 3699, - 2705, + 1474, - 3165, + 782, - 571, - -1, + 2005, - 4026, + 1038, - 2156, + 303, - 1198, - -1, + 4047, - 1192, + 435, - 425, + 2711, - 2852, + 3315, - 1738, + 3969, - 3663, + 1750, - 1729, + 3693, - 3654, + 1468, - 2153, + 3099, -1, - 4020, + 2510, + + 583, -1, - 3144, + 4041, + -1, - 2849, + 3213, + -1, -1, - 1732, + 580, - 3657, + 3966, - 833, + 4017, + -1, - 3996, + 2504, - 3138, + 2126, - 3453, + 1165, - 1951, + 3999, - 934, + 3246, - 3978, + 571, - 2150, + 2822, - 836, + 1669, - 2609, + 3993, - 2144, + 2162, - 3972, + 1201, + -1, - 2846, + 568, + -1, - 1726, + 2858, - 3651, + 1741, - 2840, + 3684, - 1714, + 765, - 3639, - -1, + 1198, - 1183, + 429, - 417, + 2159, -1, - 2141, + 562, - 830, + 1738, - 1711, + 3681, - 3636, + 2855, - 817, + 1735, - 2837, + 3678, - 1708, + 3987, - 3633, + 3171, + -1, - 2138, + 3060, + -1, - 3966, - -1, -1, + 842, - 813, + 1195, - 2834, + 425, - 1702, + 839, - 3627, + 2156, + -1, - 810, + 1732, - 2132, + 3675, - 1174, + 2150, - 414, + 2852, - 2135, - -1, + 1729, - 2828, + 3672, - 1690, + 3150, - 803, + 2846, - 2831, + 1717, - 1696, + 3660, - 3621, + 836, + -1, -1, -1, - 3273, + 833, + -1, - 2129, + 3144, + -1, - 1171, + 820, - 411, - -1, + 1186, - 792, + 417, - 2825, + 2147, - 1684, + 2453, + + 49, - 799, + 1714, - 2120, + 3657, - 1162, + 2843, - 15, + 1711, - 2717, + 3654, -1, - 2816, + 2387, + -1, - 1666, + 1399, -1, - 786, + 816, - 2369, + 2141, -1, - 1360, - - 2117, + 813, - 1159, + 3882, -1, - 3861, + 2837, - 762, + 1699, - 2813, + 3642, - 1660, + 2123, - 2111, + 1162, - 1153, + 2066, - 3498, + 631, - 3837, + 360, - 984, + 2819, - 2807, + 1663, - 1648, - -1, + 2747, - 2654, + 802, + -1, -1, -1, - 755, + 2117, - 3120, + 1156, - 2420, + 3858, - 2105, + 1456, - 1147, + 758, - 396, + 2813, - 3831, + 1651, - 742, + 2111, - 2801, + 1150, - 1636, + 396, - 2093, + 3291, - 1135, + 2426, - 390, - -1, + 2807, - 3825, + 1639, - 2789, + 2060, - 1612, + 1096, - 3813, + 745, - 1858, + 1120, - 733, + 375, - 2087, + 2741, - 1129, + 3852, - 384, + 2777, + -1, - 2054, + 736, - 1093, + 2099, - 2783, + 1138, - 1600, + 390, - 2060, + 1444, + -1, - 2735, + 2795, - 360, - -1, -1, + 1615, - 2741, + 3168, - 3447, + 3846, - 1948, + 2093, - 928, + 1132, - 1441, - -1, + 384, - 1855, + 15, - 2603, + 2723, - 1453, + 2789, - 2459, + 1603, + + 2465, 62, - 2732, + 2738, - 3816, + 2375, - 2063, + 3318, - 3807, + 1363, - 2447, + 2120, - 49, + 1159, - 2393, + 2399, + -1, - 2744, + 1411, - 1408, - -1, -1, + 2816, - 3810, + 1657, - 2381, + 4062, - 1180, + 3468, - 1396, + 1954, - 3441, + 931, - 1945, + 3462, - 922, + 1951, - 1705, + 925, - 3630, + 2609, - 4041, + 3216, - 2597, + 752, - 3210, + 2603, - 1888, + 3837, + + 1894, -1, 198, - 3804, - -1, + 1891, - 807, + 1876, - 3792, - -1, + 195, - 3345, + 180, + + 3834, + + 1023, -1, - 1885, + 3831, + + 2270, + + 2696, + + 1303, 2264, - 195, + 2258, 1300, - 3789, + 1285, + -1, -1, - 2078, + 2084, - 1105, + 1108, - 1870, + 3312, - 3786, + 3828, - 180, + 1873, - 2759, + 2765, - 2258, + 177, - 2066, + 3825, - 1297, + 1870, - 24, + 2957, - 2723, + 174, - 3780, + 3813, - 2747, + 2951, + + 2921, + + 3063, 2252, - 2951, + 1123, 1282, - - 3162, -1, - 1372, + 2246, - 1867, + 2780, + + 1279, -1, - 177, + 2105, - 3057, + 1144, + -1, - 3774, + 670, - 2945, + 3810, - 2465, + 2801, - 68, + 1627, - 1864, - -1, + 3807, - 174, + 3603, - 2246, + 1909, 2915, - 1279, - - 2399, + 213, -1, - 1414, + 126, - 646, + 2909, - 3582, + 1840, - 2240, + 3783, - 4050, + 1558, - 1276, - -1, + 3585, - 126, - -1, + 2075, - 1837, + 1099, - 3762, + 3795, - 1555, + 1318, - 4053, + 108, - 2909, + 2756, - 2114, + 1822, - 1156, + 3765, - 21, + 1540, - 2720, - -1, + 1189, - 2810, + 3942, - 1654, + 1183, - 2903, + 24, - 4002, - -1, + 2729, - 3564, + 1720, - 1366, - -1, + 3663, - 3885, + 1708, - 3990, + 3651, + -1, - 108, + 2987, + -1, - 749, + 1375, - 1819, + 2114, - 3744, + 1153, - 1537, + 823, - 2108, + 3402, - 1150, + 810, - 3303, + 2810, + + 1645, -1, - 4008, + 4074, - 2804, + 2072, - 1642, + 1696, - 2099, + 3639, - 1141, - -1, + 2102, - 2069, + 1141, - 1096, + 2753, - 2795, + 4071, - 1624, + 742, - 3300, + 2798, - 2750, + 1621, - 739, + 3309, - 2096, + 798, - 1138, + 3261, + -1, -1, - 2453, + 4029, - 56, + 2471, - 3606, + 68, - 2792, + 4044, - 1618, + 2459, - 2441, + 56, - 43, + 646, - 147, + 4023, + -1, - 2387, + 2405, -1, - 1402, + 1417, - 1579, - -1, + 2393, - 2375, + 9, - 3444, + 1405, - 1390, + 21, - 925, + 2726, - 252, - -1, + 4011, - 887, + 2447, - 2600, + 43, - 3291, + 2369, - 670, + 3255, - 685, + 1357, - 3432, + 3282, + + 1369, -1, - 913, + 2381, - 3426, + 3477, - 1120, + 1393, - 906, + 940, - 2588, + 258, - 3285, + 3300, - 2774, + 3906, - 2582, + 2618, - 3249, + 1117, - 3783, + 3096, - 2315, - -1, + 3627, - 3255, + 3954, - 2309, - -1, + 2774, - 3420, + 529, - 3933, + 3294, - 899, + 147, - 529, + 526, - 3159, + 511, - 1114, + 3525, - 2576, + 1582, - 3921, + 993, -1, - 2768, + 2444, - 402, - -1, + 3465, - 2303, + 2666, - 526, + 928, - 1657, + 252, - 3258, + 890, - 3414, + 3447, - 1906, + 2606, - 893, + 909, + -1, -1, - 216, + 3090, - 511, - -1, + 2588, - 2570, + 3126, - 655, + 3165, - 752, + 508, + -1, - 691, - -1, -1, + 3162, - 2297, + 2315, - 3156, + 505, - 1318, + 3441, - 3084, - -1, -1, + 3435, - 1903, + 902, - 3090, + 896, + -1, -1, - 213, + 2582, - 508, - -1, + 2576, + + 1903, - 1897, - -1, + 1900, 207, - 1894, - -1, - 204, - 505, - - 2987, + 2309, - 1315, + 2303, - 1882, + 1017, - 3897, + 1888, + -1, 192, - 3264, + 2690, + + 4065, + -1, + + 1312, 1309, - 3093, + 544, - 4047, + 3270, - 1306, + 2108, - 1876, - -1, + 1147, - 186, + 1882, - 2075, + 1297, - 1102, + 186, - 1294, - -1, + 2804, - 2981, + 1633, - 2756, + 1011, - 649, + 700, + -1, -1, - 3939, - -1, + 2684, + + 2975, 2969, - 1288, - -1, + 3285, - 2963, - -1, + 1291, - 2102, + 655, - 1144, + 1005, - 2072, + 3816, - 1099, + 2945, - 2939, + 3804, - 2798, + 2678, - 1630, + 3306, - 2753, + 2081, - 9, - -1, + 1105, - 1014, + 2078, + + 1102, -1, - 2927, + 2762, - 3, + 999, - 2684, + 2759, - 2363, + 2933, - 3108, + 3372, - 1354, + 2672, - 3891, + 3, -1, - 2357, - - 1008, + 3792, - 1348, + 3114, - 3096, + 3519, - 697, + 694, - 2678, + 987, - 1002, + 2363, - 996, + 3918, - 1032, - -1, + 1351, - 2672, + 2660, - 2666, + 3513, + -1, - 2702, + 980, + -1, -1, -1, - 3492, - -1, + 2654, - 977, + 3129, + -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, - 1020, + 649, -1, -1, - 2648, + 3396, + -1, -1, -1, -1, -1, -1, - 2690, + 3303, -1, -1, - 4044, - -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, + 3960, - 3297, + 3105, -1, - 3927, + 3948, -1, -1, -1, -1, - 3915, + 3390, -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, + 3900, -1, - 3099, - -1, -1, -1, -1, + 3912, + -1, -1, -1, - 3369, - -1, -1, -1, -1, + 3936, - 3363, + 3384, + -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, - 3357, + 3378, -1, - 544, + 3102, + -1, -1, -1, -1, -1, -1, -1, -1, - 3270, - -1, + 3366, - 538, + 3279, + -1, -1, -1, -1, -1, - 3339, + 3360, + -1, -1, -1, - 3381, + 538, 535, - -1, -1, -1, -1, -1, + -1, -1, -1, - 523, - -1, -1, -1, -1, -1, -1, + 619, -1, - 517, - - 3123, - -1, -1, -1, -1, -1, -1, + 523, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 3117, - -1, -1, -1, -1, -1, -1, - - 619, + 517, -1, -1, -1, - 4038, - -1, -1, -1, -1, -1, -1, - 616, -1, -1, -1, -1, + 3123, + -1, -1, -1, -1, + 610, + -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 604, - - 631, - -1, -1, - - 3879, + -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 3873, + 4059, -1, -1, - 4032, + 4053, + -1, + + 3894, -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, + -1, -1, -1, -1, -1, -1, + -1, - 3102, + 3111, + -1, + + 3108, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -2952,26 +2960,27 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, - 4035, + 4068, + -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 4023, - -1, -1, + 4056, + -1, -1, -1, -1, - 4017, + 4038, -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, + 4032, - 4005 + 4026 }; if (0 == 0) @@ -2988,5 +2997,3 @@ onigenc_unicode_fold1_key(OnigCodePoint codes[]) } return -1; } - - diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_fold2_key.c b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_fold2_key.c index 1926b2569f..3d93e2417a 100644 --- a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_fold2_key.c +++ b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_fold2_key.c @@ -1,7 +1,7 @@ /* 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 */ +/* Command-line: /usr/local/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' */ @@ -225,5 +225,3 @@ onigenc_unicode_fold2_key(OnigCodePoint codes[]) } return -1; } - - diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_fold3_key.c b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_fold3_key.c index 9c4415af59..bdd5667c6a 100644 --- a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_fold3_key.c +++ b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_fold3_key.c @@ -1,7 +1,7 @@ /* 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 */ +/* Command-line: /usr/local/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' */ @@ -135,5 +135,3 @@ onigenc_unicode_fold3_key(OnigCodePoint codes[]) } return -1; } - - diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_fold_data.c b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_fold_data.c index 87d0be7e73..400975b523 100644 --- a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_fold_data.c +++ b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_fold_data.c @@ -1,7 +1,7 @@ /* This file was generated by make_unicode_fold_data.py. */ #include "regenc.h" -#define UNICODE_CASEFOLD_VERSION 11_0_0 +#define UNICODE_CASEFOLD_VERSION 12_1_0 OnigCodePoint OnigUnicodeFolds1[] = { @@ -230,1130 +230,1137 @@ OnigCodePoint OnigUnicodeFolds1[] = { /* 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 + /* 682*/ 0x0282, 1, 0xa7c5, /* LATIN CAPITAL LETTER S WITH HOOK */ + /* 685*/ 0x0283, 1, 0x01a9, /* LATIN CAPITAL LETTER ESH */ + /* 688*/ 0x0287, 1, 0xa7b1, /* LATIN CAPITAL LETTER TURNED T */ + /* 691*/ 0x0288, 1, 0x01ae, /* LATIN CAPITAL LETTER T WITH RETRO.. */ + /* 694*/ 0x0289, 1, 0x0244, /* LATIN CAPITAL LETTER U BAR */ + /* 697*/ 0x028a, 1, 0x01b1, /* LATIN CAPITAL LETTER UPSILON */ + /* 700*/ 0x028b, 1, 0x01b2, /* LATIN CAPITAL LETTER V WITH HOOK */ + /* 703*/ 0x028c, 1, 0x0245, /* LATIN CAPITAL LETTER TURNED V */ + /* 706*/ 0x0292, 1, 0x01b7, /* LATIN CAPITAL LETTER EZH */ + /* 709*/ 0x029d, 1, 0xa7b2, /* LATIN CAPITAL LETTER J WITH CROSS.. */ + /* 712*/ 0x029e, 1, 0xa7b0, /* LATIN CAPITAL LETTER TURNED K */ + /* 715*/ 0x0371, 1, 0x0370, /* GREEK CAPITAL LETTER HETA */ + /* 718*/ 0x0373, 1, 0x0372, /* GREEK CAPITAL LETTER ARCHAIC SAMPI */ + /* 721*/ 0x0377, 1, 0x0376, /* GREEK CAPITAL LETTER PAMPHYLIAN D.. */ + /* 724*/ 0x037b, 1, 0x03fd, /* GREEK CAPITAL REVERSED LUNATE SIG.. */ + /* 727*/ 0x037c, 1, 0x03fe, /* GREEK CAPITAL DOTTED LUNATE SIGMA.. */ + /* 730*/ 0x037d, 1, 0x03ff, /* GREEK CAPITAL REVERSED DOTTED LUN.. */ + /* 733*/ 0x03ac, 1, 0x0386, /* GREEK CAPITAL LETTER ALPHA WITH T.. */ + /* 736*/ 0x03ad, 1, 0x0388, /* GREEK CAPITAL LETTER EPSILON WITH.. */ + /* 739*/ 0x03ae, 1, 0x0389, /* GREEK CAPITAL LETTER ETA WITH TON.. */ + /* 742*/ 0x03af, 1, 0x038a, /* GREEK CAPITAL LETTER IOTA WITH TO.. */ + /* 745*/ 0x03b1, 1, 0x0391, /* GREEK CAPITAL LETTER ALPHA */ + /* 748*/ 0x03b2, 2, 0x0392, 0x03d0, /* GREEK CAPITAL LETTER BETA */ + /* 752*/ 0x03b3, 1, 0x0393, /* GREEK CAPITAL LETTER GAMMA */ + /* 755*/ 0x03b4, 1, 0x0394, /* GREEK CAPITAL LETTER DELTA */ + /* 758*/ 0x03b5, 2, 0x0395, 0x03f5, /* GREEK CAPITAL LETTER EPSILON */ + /* 762*/ 0x03b6, 1, 0x0396, /* GREEK CAPITAL LETTER ZETA */ + /* 765*/ 0x03b7, 1, 0x0397, /* GREEK CAPITAL LETTER ETA */ + /* 768*/ 0x03b8, 3, 0x0398, 0x03d1, 0x03f4, /* GREEK CAPITAL LETTER THETA */ + /* 773*/ 0x03b9, 3, 0x0345, 0x0399, 0x1fbe, /* COMBINING GREEK YPOGEGRAMMENI */ + /* 778*/ 0x03ba, 2, 0x039a, 0x03f0, /* GREEK CAPITAL LETTER KAPPA */ + /* 782*/ 0x03bb, 1, 0x039b, /* GREEK CAPITAL LETTER LAMDA */ + /* 785*/ 0x03bc, 2, 0x00b5, 0x039c, /* MICRO SIGN */ + /* 789*/ 0x03bd, 1, 0x039d, /* GREEK CAPITAL LETTER NU */ + /* 792*/ 0x03be, 1, 0x039e, /* GREEK CAPITAL LETTER XI */ + /* 795*/ 0x03bf, 1, 0x039f, /* GREEK CAPITAL LETTER OMICRON */ + /* 798*/ 0x03c0, 2, 0x03a0, 0x03d6, /* GREEK CAPITAL LETTER PI */ + /* 802*/ 0x03c1, 2, 0x03a1, 0x03f1, /* GREEK CAPITAL LETTER RHO */ + /* 806*/ 0x03c3, 2, 0x03a3, 0x03c2, /* GREEK CAPITAL LETTER SIGMA */ + /* 810*/ 0x03c4, 1, 0x03a4, /* GREEK CAPITAL LETTER TAU */ + /* 813*/ 0x03c5, 1, 0x03a5, /* GREEK CAPITAL LETTER UPSILON */ + /* 816*/ 0x03c6, 2, 0x03a6, 0x03d5, /* GREEK CAPITAL LETTER PHI */ + /* 820*/ 0x03c7, 1, 0x03a7, /* GREEK CAPITAL LETTER CHI */ + /* 823*/ 0x03c8, 1, 0x03a8, /* GREEK CAPITAL LETTER PSI */ + /* 826*/ 0x03c9, 2, 0x03a9, 0x2126, /* GREEK CAPITAL LETTER OMEGA */ + /* 830*/ 0x03ca, 1, 0x03aa, /* GREEK CAPITAL LETTER IOTA WITH DI.. */ + /* 833*/ 0x03cb, 1, 0x03ab, /* GREEK CAPITAL LETTER UPSILON WITH.. */ + /* 836*/ 0x03cc, 1, 0x038c, /* GREEK CAPITAL LETTER OMICRON WITH.. */ + /* 839*/ 0x03cd, 1, 0x038e, /* GREEK CAPITAL LETTER UPSILON WITH.. */ + /* 842*/ 0x03ce, 1, 0x038f, /* GREEK CAPITAL LETTER OMEGA WITH T.. */ + /* 845*/ 0x03d7, 1, 0x03cf, /* GREEK CAPITAL KAI SYMBOL */ + /* 848*/ 0x03d9, 1, 0x03d8, /* GREEK LETTER ARCHAIC KOPPA */ + /* 851*/ 0x03db, 1, 0x03da, /* GREEK LETTER STIGMA */ + /* 854*/ 0x03dd, 1, 0x03dc, /* GREEK LETTER DIGAMMA */ + /* 857*/ 0x03df, 1, 0x03de, /* GREEK LETTER KOPPA */ + /* 860*/ 0x03e1, 1, 0x03e0, /* GREEK LETTER SAMPI */ + /* 863*/ 0x03e3, 1, 0x03e2, /* COPTIC CAPITAL LETTER SHEI */ + /* 866*/ 0x03e5, 1, 0x03e4, /* COPTIC CAPITAL LETTER FEI */ + /* 869*/ 0x03e7, 1, 0x03e6, /* COPTIC CAPITAL LETTER KHEI */ + /* 872*/ 0x03e9, 1, 0x03e8, /* COPTIC CAPITAL LETTER HORI */ + /* 875*/ 0x03eb, 1, 0x03ea, /* COPTIC CAPITAL LETTER GANGIA */ + /* 878*/ 0x03ed, 1, 0x03ec, /* COPTIC CAPITAL LETTER SHIMA */ + /* 881*/ 0x03ef, 1, 0x03ee, /* COPTIC CAPITAL LETTER DEI */ + /* 884*/ 0x03f2, 1, 0x03f9, /* GREEK CAPITAL LUNATE SIGMA SYMBOL */ + /* 887*/ 0x03f3, 1, 0x037f, /* GREEK CAPITAL LETTER YOT */ + /* 890*/ 0x03f8, 1, 0x03f7, /* GREEK CAPITAL LETTER SHO */ + /* 893*/ 0x03fb, 1, 0x03fa, /* GREEK CAPITAL LETTER SAN */ + /* 896*/ 0x0430, 1, 0x0410, /* CYRILLIC CAPITAL LETTER A */ + /* 899*/ 0x0431, 1, 0x0411, /* CYRILLIC CAPITAL LETTER BE */ + /* 902*/ 0x0432, 2, 0x0412, 0x1c80, /* CYRILLIC CAPITAL LETTER VE */ + /* 906*/ 0x0433, 1, 0x0413, /* CYRILLIC CAPITAL LETTER GHE */ + /* 909*/ 0x0434, 2, 0x0414, 0x1c81, /* CYRILLIC CAPITAL LETTER DE */ + /* 913*/ 0x0435, 1, 0x0415, /* CYRILLIC CAPITAL LETTER IE */ + /* 916*/ 0x0436, 1, 0x0416, /* CYRILLIC CAPITAL LETTER ZHE */ + /* 919*/ 0x0437, 1, 0x0417, /* CYRILLIC CAPITAL LETTER ZE */ + /* 922*/ 0x0438, 1, 0x0418, /* CYRILLIC CAPITAL LETTER I */ + /* 925*/ 0x0439, 1, 0x0419, /* CYRILLIC CAPITAL LETTER SHORT I */ + /* 928*/ 0x043a, 1, 0x041a, /* CYRILLIC CAPITAL LETTER KA */ + /* 931*/ 0x043b, 1, 0x041b, /* CYRILLIC CAPITAL LETTER EL */ + /* 934*/ 0x043c, 1, 0x041c, /* CYRILLIC CAPITAL LETTER EM */ + /* 937*/ 0x043d, 1, 0x041d, /* CYRILLIC CAPITAL LETTER EN */ + /* 940*/ 0x043e, 2, 0x041e, 0x1c82, /* CYRILLIC CAPITAL LETTER O */ + /* 944*/ 0x043f, 1, 0x041f, /* CYRILLIC CAPITAL LETTER PE */ + /* 947*/ 0x0440, 1, 0x0420, /* CYRILLIC CAPITAL LETTER ER */ + /* 950*/ 0x0441, 2, 0x0421, 0x1c83, /* CYRILLIC CAPITAL LETTER ES */ + /* 954*/ 0x0442, 3, 0x0422, 0x1c84, 0x1c85, /* CYRILLIC CAPITAL LETTER TE */ + /* 959*/ 0x0443, 1, 0x0423, /* CYRILLIC CAPITAL LETTER U */ + /* 962*/ 0x0444, 1, 0x0424, /* CYRILLIC CAPITAL LETTER EF */ + /* 965*/ 0x0445, 1, 0x0425, /* CYRILLIC CAPITAL LETTER HA */ + /* 968*/ 0x0446, 1, 0x0426, /* CYRILLIC CAPITAL LETTER TSE */ + /* 971*/ 0x0447, 1, 0x0427, /* CYRILLIC CAPITAL LETTER CHE */ + /* 974*/ 0x0448, 1, 0x0428, /* CYRILLIC CAPITAL LETTER SHA */ + /* 977*/ 0x0449, 1, 0x0429, /* CYRILLIC CAPITAL LETTER SHCHA */ + /* 980*/ 0x044a, 2, 0x042a, 0x1c86, /* CYRILLIC CAPITAL LETTER HARD SIGN */ + /* 984*/ 0x044b, 1, 0x042b, /* CYRILLIC CAPITAL LETTER YERU */ + /* 987*/ 0x044c, 1, 0x042c, /* CYRILLIC CAPITAL LETTER SOFT SIGN */ + /* 990*/ 0x044d, 1, 0x042d, /* CYRILLIC CAPITAL LETTER E */ + /* 993*/ 0x044e, 1, 0x042e, /* CYRILLIC CAPITAL LETTER YU */ + /* 996*/ 0x044f, 1, 0x042f, /* CYRILLIC CAPITAL LETTER YA */ + /* 999*/ 0x0450, 1, 0x0400, /* CYRILLIC CAPITAL LETTER IE WITH G.. */ + /*1002*/ 0x0451, 1, 0x0401, /* CYRILLIC CAPITAL LETTER IO */ + /*1005*/ 0x0452, 1, 0x0402, /* CYRILLIC CAPITAL LETTER DJE */ + /*1008*/ 0x0453, 1, 0x0403, /* CYRILLIC CAPITAL LETTER GJE */ + /*1011*/ 0x0454, 1, 0x0404, /* CYRILLIC CAPITAL LETTER UKRAINIAN.. */ + /*1014*/ 0x0455, 1, 0x0405, /* CYRILLIC CAPITAL LETTER DZE */ + /*1017*/ 0x0456, 1, 0x0406, /* CYRILLIC CAPITAL LETTER BYELORUSS.. */ + /*1020*/ 0x0457, 1, 0x0407, /* CYRILLIC CAPITAL LETTER YI */ + /*1023*/ 0x0458, 1, 0x0408, /* CYRILLIC CAPITAL LETTER JE */ + /*1026*/ 0x0459, 1, 0x0409, /* CYRILLIC CAPITAL LETTER LJE */ + /*1029*/ 0x045a, 1, 0x040a, /* CYRILLIC CAPITAL LETTER NJE */ + /*1032*/ 0x045b, 1, 0x040b, /* CYRILLIC CAPITAL LETTER TSHE */ + /*1035*/ 0x045c, 1, 0x040c, /* CYRILLIC CAPITAL LETTER KJE */ + /*1038*/ 0x045d, 1, 0x040d, /* CYRILLIC CAPITAL LETTER I WITH GR.. */ + /*1041*/ 0x045e, 1, 0x040e, /* CYRILLIC CAPITAL LETTER SHORT U */ + /*1044*/ 0x045f, 1, 0x040f, /* CYRILLIC CAPITAL LETTER DZHE */ + /*1047*/ 0x0461, 1, 0x0460, /* CYRILLIC CAPITAL LETTER OMEGA */ + /*1050*/ 0x0463, 2, 0x0462, 0x1c87, /* CYRILLIC CAPITAL LETTER YAT */ + /*1054*/ 0x0465, 1, 0x0464, /* CYRILLIC CAPITAL LETTER IOTIFIED E */ + /*1057*/ 0x0467, 1, 0x0466, /* CYRILLIC CAPITAL LETTER LITTLE YUS */ + /*1060*/ 0x0469, 1, 0x0468, /* CYRILLIC CAPITAL LETTER IOTIFIED .. */ + /*1063*/ 0x046b, 1, 0x046a, /* CYRILLIC CAPITAL LETTER BIG YUS */ + /*1066*/ 0x046d, 1, 0x046c, /* CYRILLIC CAPITAL LETTER IOTIFIED .. */ + /*1069*/ 0x046f, 1, 0x046e, /* CYRILLIC CAPITAL LETTER KSI */ + /*1072*/ 0x0471, 1, 0x0470, /* CYRILLIC CAPITAL LETTER PSI */ + /*1075*/ 0x0473, 1, 0x0472, /* CYRILLIC CAPITAL LETTER FITA */ + /*1078*/ 0x0475, 1, 0x0474, /* CYRILLIC CAPITAL LETTER IZHITSA */ + /*1081*/ 0x0477, 1, 0x0476, /* CYRILLIC CAPITAL LETTER IZHITSA W.. */ + /*1084*/ 0x0479, 1, 0x0478, /* CYRILLIC CAPITAL LETTER UK */ + /*1087*/ 0x047b, 1, 0x047a, /* CYRILLIC CAPITAL LETTER ROUND OME.. */ + /*1090*/ 0x047d, 1, 0x047c, /* CYRILLIC CAPITAL LETTER OMEGA WIT.. */ + /*1093*/ 0x047f, 1, 0x047e, /* CYRILLIC CAPITAL LETTER OT */ + /*1096*/ 0x0481, 1, 0x0480, /* CYRILLIC CAPITAL LETTER KOPPA */ + /*1099*/ 0x048b, 1, 0x048a, /* CYRILLIC CAPITAL LETTER SHORT I W.. */ + /*1102*/ 0x048d, 1, 0x048c, /* CYRILLIC CAPITAL LETTER SEMISOFT .. */ + /*1105*/ 0x048f, 1, 0x048e, /* CYRILLIC CAPITAL LETTER ER WITH T.. */ + /*1108*/ 0x0491, 1, 0x0490, /* CYRILLIC CAPITAL LETTER GHE WITH .. */ + /*1111*/ 0x0493, 1, 0x0492, /* CYRILLIC CAPITAL LETTER GHE WITH .. */ + /*1114*/ 0x0495, 1, 0x0494, /* CYRILLIC CAPITAL LETTER GHE WITH .. */ + /*1117*/ 0x0497, 1, 0x0496, /* CYRILLIC CAPITAL LETTER ZHE WITH .. */ + /*1120*/ 0x0499, 1, 0x0498, /* CYRILLIC CAPITAL LETTER ZE WITH D.. */ + /*1123*/ 0x049b, 1, 0x049a, /* CYRILLIC CAPITAL LETTER KA WITH D.. */ + /*1126*/ 0x049d, 1, 0x049c, /* CYRILLIC CAPITAL LETTER KA WITH V.. */ + /*1129*/ 0x049f, 1, 0x049e, /* CYRILLIC CAPITAL LETTER KA WITH S.. */ + /*1132*/ 0x04a1, 1, 0x04a0, /* CYRILLIC CAPITAL LETTER BASHKIR KA */ + /*1135*/ 0x04a3, 1, 0x04a2, /* CYRILLIC CAPITAL LETTER EN WITH D.. */ + /*1138*/ 0x04a5, 1, 0x04a4, /* CYRILLIC CAPITAL LIGATURE EN GHE */ + /*1141*/ 0x04a7, 1, 0x04a6, /* CYRILLIC CAPITAL LETTER PE WITH M.. */ + /*1144*/ 0x04a9, 1, 0x04a8, /* CYRILLIC CAPITAL LETTER ABKHASIAN.. */ + /*1147*/ 0x04ab, 1, 0x04aa, /* CYRILLIC CAPITAL LETTER ES WITH D.. */ + /*1150*/ 0x04ad, 1, 0x04ac, /* CYRILLIC CAPITAL LETTER TE WITH D.. */ + /*1153*/ 0x04af, 1, 0x04ae, /* CYRILLIC CAPITAL LETTER STRAIGHT U */ + /*1156*/ 0x04b1, 1, 0x04b0, /* CYRILLIC CAPITAL LETTER STRAIGHT .. */ + /*1159*/ 0x04b3, 1, 0x04b2, /* CYRILLIC CAPITAL LETTER HA WITH D.. */ + /*1162*/ 0x04b5, 1, 0x04b4, /* CYRILLIC CAPITAL LIGATURE TE TSE */ + /*1165*/ 0x04b7, 1, 0x04b6, /* CYRILLIC CAPITAL LETTER CHE WITH .. */ + /*1168*/ 0x04b9, 1, 0x04b8, /* CYRILLIC CAPITAL LETTER CHE WITH .. */ + /*1171*/ 0x04bb, 1, 0x04ba, /* CYRILLIC CAPITAL LETTER SHHA */ + /*1174*/ 0x04bd, 1, 0x04bc, /* CYRILLIC CAPITAL LETTER ABKHASIAN.. */ + /*1177*/ 0x04bf, 1, 0x04be, /* CYRILLIC CAPITAL LETTER ABKHASIAN.. */ + /*1180*/ 0x04c2, 1, 0x04c1, /* CYRILLIC CAPITAL LETTER ZHE WITH .. */ + /*1183*/ 0x04c4, 1, 0x04c3, /* CYRILLIC CAPITAL LETTER KA WITH H.. */ + /*1186*/ 0x04c6, 1, 0x04c5, /* CYRILLIC CAPITAL LETTER EL WITH T.. */ + /*1189*/ 0x04c8, 1, 0x04c7, /* CYRILLIC CAPITAL LETTER EN WITH H.. */ + /*1192*/ 0x04ca, 1, 0x04c9, /* CYRILLIC CAPITAL LETTER EN WITH T.. */ + /*1195*/ 0x04cc, 1, 0x04cb, /* CYRILLIC CAPITAL LETTER KHAKASSIA.. */ + /*1198*/ 0x04ce, 1, 0x04cd, /* CYRILLIC CAPITAL LETTER EM WITH T.. */ + /*1201*/ 0x04cf, 1, 0x04c0, /* CYRILLIC LETTER PALOCHKA */ + /*1204*/ 0x04d1, 1, 0x04d0, /* CYRILLIC CAPITAL LETTER A WITH BR.. */ + /*1207*/ 0x04d3, 1, 0x04d2, /* CYRILLIC CAPITAL LETTER A WITH DI.. */ + /*1210*/ 0x04d5, 1, 0x04d4, /* CYRILLIC CAPITAL LIGATURE A IE */ + /*1213*/ 0x04d7, 1, 0x04d6, /* CYRILLIC CAPITAL LETTER IE WITH B.. */ + /*1216*/ 0x04d9, 1, 0x04d8, /* CYRILLIC CAPITAL LETTER SCHWA */ + /*1219*/ 0x04db, 1, 0x04da, /* CYRILLIC CAPITAL LETTER SCHWA WIT.. */ + /*1222*/ 0x04dd, 1, 0x04dc, /* CYRILLIC CAPITAL LETTER ZHE WITH .. */ + /*1225*/ 0x04df, 1, 0x04de, /* CYRILLIC CAPITAL LETTER ZE WITH D.. */ + /*1228*/ 0x04e1, 1, 0x04e0, /* CYRILLIC CAPITAL LETTER ABKHASIAN.. */ + /*1231*/ 0x04e3, 1, 0x04e2, /* CYRILLIC CAPITAL LETTER I WITH MA.. */ + /*1234*/ 0x04e5, 1, 0x04e4, /* CYRILLIC CAPITAL LETTER I WITH DI.. */ + /*1237*/ 0x04e7, 1, 0x04e6, /* CYRILLIC CAPITAL LETTER O WITH DI.. */ + /*1240*/ 0x04e9, 1, 0x04e8, /* CYRILLIC CAPITAL LETTER BARRED O */ + /*1243*/ 0x04eb, 1, 0x04ea, /* CYRILLIC CAPITAL LETTER BARRED O .. */ + /*1246*/ 0x04ed, 1, 0x04ec, /* CYRILLIC CAPITAL LETTER E WITH DI.. */ + /*1249*/ 0x04ef, 1, 0x04ee, /* CYRILLIC CAPITAL LETTER U WITH MA.. */ + /*1252*/ 0x04f1, 1, 0x04f0, /* CYRILLIC CAPITAL LETTER U WITH DI.. */ + /*1255*/ 0x04f3, 1, 0x04f2, /* CYRILLIC CAPITAL LETTER U WITH DO.. */ + /*1258*/ 0x04f5, 1, 0x04f4, /* CYRILLIC CAPITAL LETTER CHE WITH .. */ + /*1261*/ 0x04f7, 1, 0x04f6, /* CYRILLIC CAPITAL LETTER GHE WITH .. */ + /*1264*/ 0x04f9, 1, 0x04f8, /* CYRILLIC CAPITAL LETTER YERU WITH.. */ + /*1267*/ 0x04fb, 1, 0x04fa, /* CYRILLIC CAPITAL LETTER GHE WITH .. */ + /*1270*/ 0x04fd, 1, 0x04fc, /* CYRILLIC CAPITAL LETTER HA WITH H.. */ + /*1273*/ 0x04ff, 1, 0x04fe, /* CYRILLIC CAPITAL LETTER HA WITH S.. */ + /*1276*/ 0x0501, 1, 0x0500, /* CYRILLIC CAPITAL LETTER KOMI DE */ + /*1279*/ 0x0503, 1, 0x0502, /* CYRILLIC CAPITAL LETTER KOMI DJE */ + /*1282*/ 0x0505, 1, 0x0504, /* CYRILLIC CAPITAL LETTER KOMI ZJE */ + /*1285*/ 0x0507, 1, 0x0506, /* CYRILLIC CAPITAL LETTER KOMI DZJE */ + /*1288*/ 0x0509, 1, 0x0508, /* CYRILLIC CAPITAL LETTER KOMI LJE */ + /*1291*/ 0x050b, 1, 0x050a, /* CYRILLIC CAPITAL LETTER KOMI NJE */ + /*1294*/ 0x050d, 1, 0x050c, /* CYRILLIC CAPITAL LETTER KOMI SJE */ + /*1297*/ 0x050f, 1, 0x050e, /* CYRILLIC CAPITAL LETTER KOMI TJE */ + /*1300*/ 0x0511, 1, 0x0510, /* CYRILLIC CAPITAL LETTER REVERSED .. */ + /*1303*/ 0x0513, 1, 0x0512, /* CYRILLIC CAPITAL LETTER EL WITH H.. */ + /*1306*/ 0x0515, 1, 0x0514, /* CYRILLIC CAPITAL LETTER LHA */ + /*1309*/ 0x0517, 1, 0x0516, /* CYRILLIC CAPITAL LETTER RHA */ + /*1312*/ 0x0519, 1, 0x0518, /* CYRILLIC CAPITAL LETTER YAE */ + /*1315*/ 0x051b, 1, 0x051a, /* CYRILLIC CAPITAL LETTER QA */ + /*1318*/ 0x051d, 1, 0x051c, /* CYRILLIC CAPITAL LETTER WE */ + /*1321*/ 0x051f, 1, 0x051e, /* CYRILLIC CAPITAL LETTER ALEUT KA */ + /*1324*/ 0x0521, 1, 0x0520, /* CYRILLIC CAPITAL LETTER EL WITH M.. */ + /*1327*/ 0x0523, 1, 0x0522, /* CYRILLIC CAPITAL LETTER EN WITH M.. */ + /*1330*/ 0x0525, 1, 0x0524, /* CYRILLIC CAPITAL LETTER PE WITH D.. */ + /*1333*/ 0x0527, 1, 0x0526, /* CYRILLIC CAPITAL LETTER SHHA WITH.. */ + /*1336*/ 0x0529, 1, 0x0528, /* CYRILLIC CAPITAL LETTER EN WITH L.. */ + /*1339*/ 0x052b, 1, 0x052a, /* CYRILLIC CAPITAL LETTER DZZHE */ + /*1342*/ 0x052d, 1, 0x052c, /* CYRILLIC CAPITAL LETTER DCHE */ + /*1345*/ 0x052f, 1, 0x052e, /* CYRILLIC CAPITAL LETTER EL WITH D.. */ + /*1348*/ 0x0561, 1, 0x0531, /* ARMENIAN CAPITAL LETTER AYB */ + /*1351*/ 0x0562, 1, 0x0532, /* ARMENIAN CAPITAL LETTER BEN */ + /*1354*/ 0x0563, 1, 0x0533, /* ARMENIAN CAPITAL LETTER GIM */ + /*1357*/ 0x0564, 1, 0x0534, /* ARMENIAN CAPITAL LETTER DA */ + /*1360*/ 0x0565, 1, 0x0535, /* ARMENIAN CAPITAL LETTER ECH */ + /*1363*/ 0x0566, 1, 0x0536, /* ARMENIAN CAPITAL LETTER ZA */ + /*1366*/ 0x0567, 1, 0x0537, /* ARMENIAN CAPITAL LETTER EH */ + /*1369*/ 0x0568, 1, 0x0538, /* ARMENIAN CAPITAL LETTER ET */ + /*1372*/ 0x0569, 1, 0x0539, /* ARMENIAN CAPITAL LETTER TO */ + /*1375*/ 0x056a, 1, 0x053a, /* ARMENIAN CAPITAL LETTER ZHE */ + /*1378*/ 0x056b, 1, 0x053b, /* ARMENIAN CAPITAL LETTER INI */ + /*1381*/ 0x056c, 1, 0x053c, /* ARMENIAN CAPITAL LETTER LIWN */ + /*1384*/ 0x056d, 1, 0x053d, /* ARMENIAN CAPITAL LETTER XEH */ + /*1387*/ 0x056e, 1, 0x053e, /* ARMENIAN CAPITAL LETTER CA */ + /*1390*/ 0x056f, 1, 0x053f, /* ARMENIAN CAPITAL LETTER KEN */ + /*1393*/ 0x0570, 1, 0x0540, /* ARMENIAN CAPITAL LETTER HO */ + /*1396*/ 0x0571, 1, 0x0541, /* ARMENIAN CAPITAL LETTER JA */ + /*1399*/ 0x0572, 1, 0x0542, /* ARMENIAN CAPITAL LETTER GHAD */ + /*1402*/ 0x0573, 1, 0x0543, /* ARMENIAN CAPITAL LETTER CHEH */ + /*1405*/ 0x0574, 1, 0x0544, /* ARMENIAN CAPITAL LETTER MEN */ + /*1408*/ 0x0575, 1, 0x0545, /* ARMENIAN CAPITAL LETTER YI */ + /*1411*/ 0x0576, 1, 0x0546, /* ARMENIAN CAPITAL LETTER NOW */ + /*1414*/ 0x0577, 1, 0x0547, /* ARMENIAN CAPITAL LETTER SHA */ + /*1417*/ 0x0578, 1, 0x0548, /* ARMENIAN CAPITAL LETTER VO */ + /*1420*/ 0x0579, 1, 0x0549, /* ARMENIAN CAPITAL LETTER CHA */ + /*1423*/ 0x057a, 1, 0x054a, /* ARMENIAN CAPITAL LETTER PEH */ + /*1426*/ 0x057b, 1, 0x054b, /* ARMENIAN CAPITAL LETTER JHEH */ + /*1429*/ 0x057c, 1, 0x054c, /* ARMENIAN CAPITAL LETTER RA */ + /*1432*/ 0x057d, 1, 0x054d, /* ARMENIAN CAPITAL LETTER SEH */ + /*1435*/ 0x057e, 1, 0x054e, /* ARMENIAN CAPITAL LETTER VEW */ + /*1438*/ 0x057f, 1, 0x054f, /* ARMENIAN CAPITAL LETTER TIWN */ + /*1441*/ 0x0580, 1, 0x0550, /* ARMENIAN CAPITAL LETTER REH */ + /*1444*/ 0x0581, 1, 0x0551, /* ARMENIAN CAPITAL LETTER CO */ + /*1447*/ 0x0582, 1, 0x0552, /* ARMENIAN CAPITAL LETTER YIWN */ + /*1450*/ 0x0583, 1, 0x0553, /* ARMENIAN CAPITAL LETTER PIWR */ + /*1453*/ 0x0584, 1, 0x0554, /* ARMENIAN CAPITAL LETTER KEH */ + /*1456*/ 0x0585, 1, 0x0555, /* ARMENIAN CAPITAL LETTER OH */ + /*1459*/ 0x0586, 1, 0x0556, /* ARMENIAN CAPITAL LETTER FEH */ + /*1462*/ 0x10d0, 1, 0x1c90, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1465*/ 0x10d1, 1, 0x1c91, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1468*/ 0x10d2, 1, 0x1c92, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1471*/ 0x10d3, 1, 0x1c93, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1474*/ 0x10d4, 1, 0x1c94, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1477*/ 0x10d5, 1, 0x1c95, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1480*/ 0x10d6, 1, 0x1c96, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1483*/ 0x10d7, 1, 0x1c97, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1486*/ 0x10d8, 1, 0x1c98, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1489*/ 0x10d9, 1, 0x1c99, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1492*/ 0x10da, 1, 0x1c9a, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1495*/ 0x10db, 1, 0x1c9b, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1498*/ 0x10dc, 1, 0x1c9c, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1501*/ 0x10dd, 1, 0x1c9d, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1504*/ 0x10de, 1, 0x1c9e, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1507*/ 0x10df, 1, 0x1c9f, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1510*/ 0x10e0, 1, 0x1ca0, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1513*/ 0x10e1, 1, 0x1ca1, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1516*/ 0x10e2, 1, 0x1ca2, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1519*/ 0x10e3, 1, 0x1ca3, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1522*/ 0x10e4, 1, 0x1ca4, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1525*/ 0x10e5, 1, 0x1ca5, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1528*/ 0x10e6, 1, 0x1ca6, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1531*/ 0x10e7, 1, 0x1ca7, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1534*/ 0x10e8, 1, 0x1ca8, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1537*/ 0x10e9, 1, 0x1ca9, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1540*/ 0x10ea, 1, 0x1caa, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1543*/ 0x10eb, 1, 0x1cab, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1546*/ 0x10ec, 1, 0x1cac, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1549*/ 0x10ed, 1, 0x1cad, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1552*/ 0x10ee, 1, 0x1cae, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1555*/ 0x10ef, 1, 0x1caf, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1558*/ 0x10f0, 1, 0x1cb0, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1561*/ 0x10f1, 1, 0x1cb1, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1564*/ 0x10f2, 1, 0x1cb2, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1567*/ 0x10f3, 1, 0x1cb3, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1570*/ 0x10f4, 1, 0x1cb4, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1573*/ 0x10f5, 1, 0x1cb5, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1576*/ 0x10f6, 1, 0x1cb6, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1579*/ 0x10f7, 1, 0x1cb7, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1582*/ 0x10f8, 1, 0x1cb8, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1585*/ 0x10f9, 1, 0x1cb9, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1588*/ 0x10fa, 1, 0x1cba, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1591*/ 0x10fd, 1, 0x1cbd, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1594*/ 0x10fe, 1, 0x1cbe, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1597*/ 0x10ff, 1, 0x1cbf, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */ + /*1600*/ 0x13a0, 1, 0xab70, /* CHEROKEE SMALL LETTER A */ + /*1603*/ 0x13a1, 1, 0xab71, /* CHEROKEE SMALL LETTER E */ + /*1606*/ 0x13a2, 1, 0xab72, /* CHEROKEE SMALL LETTER I */ + /*1609*/ 0x13a3, 1, 0xab73, /* CHEROKEE SMALL LETTER O */ + /*1612*/ 0x13a4, 1, 0xab74, /* CHEROKEE SMALL LETTER U */ + /*1615*/ 0x13a5, 1, 0xab75, /* CHEROKEE SMALL LETTER V */ + /*1618*/ 0x13a6, 1, 0xab76, /* CHEROKEE SMALL LETTER GA */ + /*1621*/ 0x13a7, 1, 0xab77, /* CHEROKEE SMALL LETTER KA */ + /*1624*/ 0x13a8, 1, 0xab78, /* CHEROKEE SMALL LETTER GE */ + /*1627*/ 0x13a9, 1, 0xab79, /* CHEROKEE SMALL LETTER GI */ + /*1630*/ 0x13aa, 1, 0xab7a, /* CHEROKEE SMALL LETTER GO */ + /*1633*/ 0x13ab, 1, 0xab7b, /* CHEROKEE SMALL LETTER GU */ + /*1636*/ 0x13ac, 1, 0xab7c, /* CHEROKEE SMALL LETTER GV */ + /*1639*/ 0x13ad, 1, 0xab7d, /* CHEROKEE SMALL LETTER HA */ + /*1642*/ 0x13ae, 1, 0xab7e, /* CHEROKEE SMALL LETTER HE */ + /*1645*/ 0x13af, 1, 0xab7f, /* CHEROKEE SMALL LETTER HI */ + /*1648*/ 0x13b0, 1, 0xab80, /* CHEROKEE SMALL LETTER HO */ + /*1651*/ 0x13b1, 1, 0xab81, /* CHEROKEE SMALL LETTER HU */ + /*1654*/ 0x13b2, 1, 0xab82, /* CHEROKEE SMALL LETTER HV */ + /*1657*/ 0x13b3, 1, 0xab83, /* CHEROKEE SMALL LETTER LA */ + /*1660*/ 0x13b4, 1, 0xab84, /* CHEROKEE SMALL LETTER LE */ + /*1663*/ 0x13b5, 1, 0xab85, /* CHEROKEE SMALL LETTER LI */ + /*1666*/ 0x13b6, 1, 0xab86, /* CHEROKEE SMALL LETTER LO */ + /*1669*/ 0x13b7, 1, 0xab87, /* CHEROKEE SMALL LETTER LU */ + /*1672*/ 0x13b8, 1, 0xab88, /* CHEROKEE SMALL LETTER LV */ + /*1675*/ 0x13b9, 1, 0xab89, /* CHEROKEE SMALL LETTER MA */ + /*1678*/ 0x13ba, 1, 0xab8a, /* CHEROKEE SMALL LETTER ME */ + /*1681*/ 0x13bb, 1, 0xab8b, /* CHEROKEE SMALL LETTER MI */ + /*1684*/ 0x13bc, 1, 0xab8c, /* CHEROKEE SMALL LETTER MO */ + /*1687*/ 0x13bd, 1, 0xab8d, /* CHEROKEE SMALL LETTER MU */ + /*1690*/ 0x13be, 1, 0xab8e, /* CHEROKEE SMALL LETTER NA */ + /*1693*/ 0x13bf, 1, 0xab8f, /* CHEROKEE SMALL LETTER HNA */ + /*1696*/ 0x13c0, 1, 0xab90, /* CHEROKEE SMALL LETTER NAH */ + /*1699*/ 0x13c1, 1, 0xab91, /* CHEROKEE SMALL LETTER NE */ + /*1702*/ 0x13c2, 1, 0xab92, /* CHEROKEE SMALL LETTER NI */ + /*1705*/ 0x13c3, 1, 0xab93, /* CHEROKEE SMALL LETTER NO */ + /*1708*/ 0x13c4, 1, 0xab94, /* CHEROKEE SMALL LETTER NU */ + /*1711*/ 0x13c5, 1, 0xab95, /* CHEROKEE SMALL LETTER NV */ + /*1714*/ 0x13c6, 1, 0xab96, /* CHEROKEE SMALL LETTER QUA */ + /*1717*/ 0x13c7, 1, 0xab97, /* CHEROKEE SMALL LETTER QUE */ + /*1720*/ 0x13c8, 1, 0xab98, /* CHEROKEE SMALL LETTER QUI */ + /*1723*/ 0x13c9, 1, 0xab99, /* CHEROKEE SMALL LETTER QUO */ + /*1726*/ 0x13ca, 1, 0xab9a, /* CHEROKEE SMALL LETTER QUU */ + /*1729*/ 0x13cb, 1, 0xab9b, /* CHEROKEE SMALL LETTER QUV */ + /*1732*/ 0x13cc, 1, 0xab9c, /* CHEROKEE SMALL LETTER SA */ + /*1735*/ 0x13cd, 1, 0xab9d, /* CHEROKEE SMALL LETTER S */ + /*1738*/ 0x13ce, 1, 0xab9e, /* CHEROKEE SMALL LETTER SE */ + /*1741*/ 0x13cf, 1, 0xab9f, /* CHEROKEE SMALL LETTER SI */ + /*1744*/ 0x13d0, 1, 0xaba0, /* CHEROKEE SMALL LETTER SO */ + /*1747*/ 0x13d1, 1, 0xaba1, /* CHEROKEE SMALL LETTER SU */ + /*1750*/ 0x13d2, 1, 0xaba2, /* CHEROKEE SMALL LETTER SV */ + /*1753*/ 0x13d3, 1, 0xaba3, /* CHEROKEE SMALL LETTER DA */ + /*1756*/ 0x13d4, 1, 0xaba4, /* CHEROKEE SMALL LETTER TA */ + /*1759*/ 0x13d5, 1, 0xaba5, /* CHEROKEE SMALL LETTER DE */ + /*1762*/ 0x13d6, 1, 0xaba6, /* CHEROKEE SMALL LETTER TE */ + /*1765*/ 0x13d7, 1, 0xaba7, /* CHEROKEE SMALL LETTER DI */ + /*1768*/ 0x13d8, 1, 0xaba8, /* CHEROKEE SMALL LETTER TI */ + /*1771*/ 0x13d9, 1, 0xaba9, /* CHEROKEE SMALL LETTER DO */ + /*1774*/ 0x13da, 1, 0xabaa, /* CHEROKEE SMALL LETTER DU */ + /*1777*/ 0x13db, 1, 0xabab, /* CHEROKEE SMALL LETTER DV */ + /*1780*/ 0x13dc, 1, 0xabac, /* CHEROKEE SMALL LETTER DLA */ + /*1783*/ 0x13dd, 1, 0xabad, /* CHEROKEE SMALL LETTER TLA */ + /*1786*/ 0x13de, 1, 0xabae, /* CHEROKEE SMALL LETTER TLE */ + /*1789*/ 0x13df, 1, 0xabaf, /* CHEROKEE SMALL LETTER TLI */ + /*1792*/ 0x13e0, 1, 0xabb0, /* CHEROKEE SMALL LETTER TLO */ + /*1795*/ 0x13e1, 1, 0xabb1, /* CHEROKEE SMALL LETTER TLU */ + /*1798*/ 0x13e2, 1, 0xabb2, /* CHEROKEE SMALL LETTER TLV */ + /*1801*/ 0x13e3, 1, 0xabb3, /* CHEROKEE SMALL LETTER TSA */ + /*1804*/ 0x13e4, 1, 0xabb4, /* CHEROKEE SMALL LETTER TSE */ + /*1807*/ 0x13e5, 1, 0xabb5, /* CHEROKEE SMALL LETTER TSI */ + /*1810*/ 0x13e6, 1, 0xabb6, /* CHEROKEE SMALL LETTER TSO */ + /*1813*/ 0x13e7, 1, 0xabb7, /* CHEROKEE SMALL LETTER TSU */ + /*1816*/ 0x13e8, 1, 0xabb8, /* CHEROKEE SMALL LETTER TSV */ + /*1819*/ 0x13e9, 1, 0xabb9, /* CHEROKEE SMALL LETTER WA */ + /*1822*/ 0x13ea, 1, 0xabba, /* CHEROKEE SMALL LETTER WE */ + /*1825*/ 0x13eb, 1, 0xabbb, /* CHEROKEE SMALL LETTER WI */ + /*1828*/ 0x13ec, 1, 0xabbc, /* CHEROKEE SMALL LETTER WO */ + /*1831*/ 0x13ed, 1, 0xabbd, /* CHEROKEE SMALL LETTER WU */ + /*1834*/ 0x13ee, 1, 0xabbe, /* CHEROKEE SMALL LETTER WV */ + /*1837*/ 0x13ef, 1, 0xabbf, /* CHEROKEE SMALL LETTER YA */ + /*1840*/ 0x13f0, 1, 0x13f8, /* CHEROKEE SMALL LETTER YE */ + /*1843*/ 0x13f1, 1, 0x13f9, /* CHEROKEE SMALL LETTER YI */ + /*1846*/ 0x13f2, 1, 0x13fa, /* CHEROKEE SMALL LETTER YO */ + /*1849*/ 0x13f3, 1, 0x13fb, /* CHEROKEE SMALL LETTER YU */ + /*1852*/ 0x13f4, 1, 0x13fc, /* CHEROKEE SMALL LETTER YV */ + /*1855*/ 0x13f5, 1, 0x13fd, /* CHEROKEE SMALL LETTER MV */ + /*1858*/ 0x1d79, 1, 0xa77d, /* LATIN CAPITAL LETTER INSULAR G */ + /*1861*/ 0x1d7d, 1, 0x2c63, /* LATIN CAPITAL LETTER P WITH STROKE */ + /*1864*/ 0x1d8e, 1, 0xa7c6, /* LATIN CAPITAL LETTER Z WITH PALAT.. */ + /*1867*/ 0x1e01, 1, 0x1e00, /* LATIN CAPITAL LETTER A WITH RING .. */ + /*1870*/ 0x1e03, 1, 0x1e02, /* LATIN CAPITAL LETTER B WITH DOT A.. */ + /*1873*/ 0x1e05, 1, 0x1e04, /* LATIN CAPITAL LETTER B WITH DOT B.. */ + /*1876*/ 0x1e07, 1, 0x1e06, /* LATIN CAPITAL LETTER B WITH LINE .. */ + /*1879*/ 0x1e09, 1, 0x1e08, /* LATIN CAPITAL LETTER C WITH CEDIL.. */ + /*1882*/ 0x1e0b, 1, 0x1e0a, /* LATIN CAPITAL LETTER D WITH DOT A.. */ + /*1885*/ 0x1e0d, 1, 0x1e0c, /* LATIN CAPITAL LETTER D WITH DOT B.. */ + /*1888*/ 0x1e0f, 1, 0x1e0e, /* LATIN CAPITAL LETTER D WITH LINE .. */ + /*1891*/ 0x1e11, 1, 0x1e10, /* LATIN CAPITAL LETTER D WITH CEDIL.. */ + /*1894*/ 0x1e13, 1, 0x1e12, /* LATIN CAPITAL LETTER D WITH CIRCU.. */ + /*1897*/ 0x1e15, 1, 0x1e14, /* LATIN CAPITAL LETTER E WITH MACRO.. */ + /*1900*/ 0x1e17, 1, 0x1e16, /* LATIN CAPITAL LETTER E WITH MACRO.. */ + /*1903*/ 0x1e19, 1, 0x1e18, /* LATIN CAPITAL LETTER E WITH CIRCU.. */ + /*1906*/ 0x1e1b, 1, 0x1e1a, /* LATIN CAPITAL LETTER E WITH TILDE.. */ + /*1909*/ 0x1e1d, 1, 0x1e1c, /* LATIN CAPITAL LETTER E WITH CEDIL.. */ + /*1912*/ 0x1e1f, 1, 0x1e1e, /* LATIN CAPITAL LETTER F WITH DOT A.. */ + /*1915*/ 0x1e21, 1, 0x1e20, /* LATIN CAPITAL LETTER G WITH MACRON */ + /*1918*/ 0x1e23, 1, 0x1e22, /* LATIN CAPITAL LETTER H WITH DOT A.. */ + /*1921*/ 0x1e25, 1, 0x1e24, /* LATIN CAPITAL LETTER H WITH DOT B.. */ + /*1924*/ 0x1e27, 1, 0x1e26, /* LATIN CAPITAL LETTER H WITH DIAER.. */ + /*1927*/ 0x1e29, 1, 0x1e28, /* LATIN CAPITAL LETTER H WITH CEDIL.. */ + /*1930*/ 0x1e2b, 1, 0x1e2a, /* LATIN CAPITAL LETTER H WITH BREVE.. */ + /*1933*/ 0x1e2d, 1, 0x1e2c, /* LATIN CAPITAL LETTER I WITH TILDE.. */ + /*1936*/ 0x1e2f, 1, 0x1e2e, /* LATIN CAPITAL LETTER I WITH DIAER.. */ + /*1939*/ 0x1e31, 1, 0x1e30, /* LATIN CAPITAL LETTER K WITH ACUTE */ + /*1942*/ 0x1e33, 1, 0x1e32, /* LATIN CAPITAL LETTER K WITH DOT B.. */ + /*1945*/ 0x1e35, 1, 0x1e34, /* LATIN CAPITAL LETTER K WITH LINE .. */ + /*1948*/ 0x1e37, 1, 0x1e36, /* LATIN CAPITAL LETTER L WITH DOT B.. */ + /*1951*/ 0x1e39, 1, 0x1e38, /* LATIN CAPITAL LETTER L WITH DOT B.. */ + /*1954*/ 0x1e3b, 1, 0x1e3a, /* LATIN CAPITAL LETTER L WITH LINE .. */ + /*1957*/ 0x1e3d, 1, 0x1e3c, /* LATIN CAPITAL LETTER L WITH CIRCU.. */ + /*1960*/ 0x1e3f, 1, 0x1e3e, /* LATIN CAPITAL LETTER M WITH ACUTE */ + /*1963*/ 0x1e41, 1, 0x1e40, /* LATIN CAPITAL LETTER M WITH DOT A.. */ + /*1966*/ 0x1e43, 1, 0x1e42, /* LATIN CAPITAL LETTER M WITH DOT B.. */ + /*1969*/ 0x1e45, 1, 0x1e44, /* LATIN CAPITAL LETTER N WITH DOT A.. */ + /*1972*/ 0x1e47, 1, 0x1e46, /* LATIN CAPITAL LETTER N WITH DOT B.. */ + /*1975*/ 0x1e49, 1, 0x1e48, /* LATIN CAPITAL LETTER N WITH LINE .. */ + /*1978*/ 0x1e4b, 1, 0x1e4a, /* LATIN CAPITAL LETTER N WITH CIRCU.. */ + /*1981*/ 0x1e4d, 1, 0x1e4c, /* LATIN CAPITAL LETTER O WITH TILDE.. */ + /*1984*/ 0x1e4f, 1, 0x1e4e, /* LATIN CAPITAL LETTER O WITH TILDE.. */ + /*1987*/ 0x1e51, 1, 0x1e50, /* LATIN CAPITAL LETTER O WITH MACRO.. */ + /*1990*/ 0x1e53, 1, 0x1e52, /* LATIN CAPITAL LETTER O WITH MACRO.. */ + /*1993*/ 0x1e55, 1, 0x1e54, /* LATIN CAPITAL LETTER P WITH ACUTE */ + /*1996*/ 0x1e57, 1, 0x1e56, /* LATIN CAPITAL LETTER P WITH DOT A.. */ + /*1999*/ 0x1e59, 1, 0x1e58, /* LATIN CAPITAL LETTER R WITH DOT A.. */ + /*2002*/ 0x1e5b, 1, 0x1e5a, /* LATIN CAPITAL LETTER R WITH DOT B.. */ + /*2005*/ 0x1e5d, 1, 0x1e5c, /* LATIN CAPITAL LETTER R WITH DOT B.. */ + /*2008*/ 0x1e5f, 1, 0x1e5e, /* LATIN CAPITAL LETTER R WITH LINE .. */ + /*2011*/ 0x1e61, 2, 0x1e60, 0x1e9b, /* LATIN CAPITAL LETTER S WITH DOT A.. */ + /*2015*/ 0x1e63, 1, 0x1e62, /* LATIN CAPITAL LETTER S WITH DOT B.. */ + /*2018*/ 0x1e65, 1, 0x1e64, /* LATIN CAPITAL LETTER S WITH ACUTE.. */ + /*2021*/ 0x1e67, 1, 0x1e66, /* LATIN CAPITAL LETTER S WITH CARON.. */ + /*2024*/ 0x1e69, 1, 0x1e68, /* LATIN CAPITAL LETTER S WITH DOT B.. */ + /*2027*/ 0x1e6b, 1, 0x1e6a, /* LATIN CAPITAL LETTER T WITH DOT A.. */ + /*2030*/ 0x1e6d, 1, 0x1e6c, /* LATIN CAPITAL LETTER T WITH DOT B.. */ + /*2033*/ 0x1e6f, 1, 0x1e6e, /* LATIN CAPITAL LETTER T WITH LINE .. */ + /*2036*/ 0x1e71, 1, 0x1e70, /* LATIN CAPITAL LETTER T WITH CIRCU.. */ + /*2039*/ 0x1e73, 1, 0x1e72, /* LATIN CAPITAL LETTER U WITH DIAER.. */ + /*2042*/ 0x1e75, 1, 0x1e74, /* LATIN CAPITAL LETTER U WITH TILDE.. */ + /*2045*/ 0x1e77, 1, 0x1e76, /* LATIN CAPITAL LETTER U WITH CIRCU.. */ + /*2048*/ 0x1e79, 1, 0x1e78, /* LATIN CAPITAL LETTER U WITH TILDE.. */ + /*2051*/ 0x1e7b, 1, 0x1e7a, /* LATIN CAPITAL LETTER U WITH MACRO.. */ + /*2054*/ 0x1e7d, 1, 0x1e7c, /* LATIN CAPITAL LETTER V WITH TILDE */ + /*2057*/ 0x1e7f, 1, 0x1e7e, /* LATIN CAPITAL LETTER V WITH DOT B.. */ + /*2060*/ 0x1e81, 1, 0x1e80, /* LATIN CAPITAL LETTER W WITH GRAVE */ + /*2063*/ 0x1e83, 1, 0x1e82, /* LATIN CAPITAL LETTER W WITH ACUTE */ + /*2066*/ 0x1e85, 1, 0x1e84, /* LATIN CAPITAL LETTER W WITH DIAER.. */ + /*2069*/ 0x1e87, 1, 0x1e86, /* LATIN CAPITAL LETTER W WITH DOT A.. */ + /*2072*/ 0x1e89, 1, 0x1e88, /* LATIN CAPITAL LETTER W WITH DOT B.. */ + /*2075*/ 0x1e8b, 1, 0x1e8a, /* LATIN CAPITAL LETTER X WITH DOT A.. */ + /*2078*/ 0x1e8d, 1, 0x1e8c, /* LATIN CAPITAL LETTER X WITH DIAER.. */ + /*2081*/ 0x1e8f, 1, 0x1e8e, /* LATIN CAPITAL LETTER Y WITH DOT A.. */ + /*2084*/ 0x1e91, 1, 0x1e90, /* LATIN CAPITAL LETTER Z WITH CIRCU.. */ + /*2087*/ 0x1e93, 1, 0x1e92, /* LATIN CAPITAL LETTER Z WITH DOT B.. */ + /*2090*/ 0x1e95, 1, 0x1e94, /* LATIN CAPITAL LETTER Z WITH LINE .. */ + /*2093*/ 0x1ea1, 1, 0x1ea0, /* LATIN CAPITAL LETTER A WITH DOT B.. */ + /*2096*/ 0x1ea3, 1, 0x1ea2, /* LATIN CAPITAL LETTER A WITH HOOK .. */ + /*2099*/ 0x1ea5, 1, 0x1ea4, /* LATIN CAPITAL LETTER A WITH CIRCU.. */ + /*2102*/ 0x1ea7, 1, 0x1ea6, /* LATIN CAPITAL LETTER A WITH CIRCU.. */ + /*2105*/ 0x1ea9, 1, 0x1ea8, /* LATIN CAPITAL LETTER A WITH CIRCU.. */ + /*2108*/ 0x1eab, 1, 0x1eaa, /* LATIN CAPITAL LETTER A WITH CIRCU.. */ + /*2111*/ 0x1ead, 1, 0x1eac, /* LATIN CAPITAL LETTER A WITH CIRCU.. */ + /*2114*/ 0x1eaf, 1, 0x1eae, /* LATIN CAPITAL LETTER A WITH BREVE.. */ + /*2117*/ 0x1eb1, 1, 0x1eb0, /* LATIN CAPITAL LETTER A WITH BREVE.. */ + /*2120*/ 0x1eb3, 1, 0x1eb2, /* LATIN CAPITAL LETTER A WITH BREVE.. */ + /*2123*/ 0x1eb5, 1, 0x1eb4, /* LATIN CAPITAL LETTER A WITH BREVE.. */ + /*2126*/ 0x1eb7, 1, 0x1eb6, /* LATIN CAPITAL LETTER A WITH BREVE.. */ + /*2129*/ 0x1eb9, 1, 0x1eb8, /* LATIN CAPITAL LETTER E WITH DOT B.. */ + /*2132*/ 0x1ebb, 1, 0x1eba, /* LATIN CAPITAL LETTER E WITH HOOK .. */ + /*2135*/ 0x1ebd, 1, 0x1ebc, /* LATIN CAPITAL LETTER E WITH TILDE */ + /*2138*/ 0x1ebf, 1, 0x1ebe, /* LATIN CAPITAL LETTER E WITH CIRCU.. */ + /*2141*/ 0x1ec1, 1, 0x1ec0, /* LATIN CAPITAL LETTER E WITH CIRCU.. */ + /*2144*/ 0x1ec3, 1, 0x1ec2, /* LATIN CAPITAL LETTER E WITH CIRCU.. */ + /*2147*/ 0x1ec5, 1, 0x1ec4, /* LATIN CAPITAL LETTER E WITH CIRCU.. */ + /*2150*/ 0x1ec7, 1, 0x1ec6, /* LATIN CAPITAL LETTER E WITH CIRCU.. */ + /*2153*/ 0x1ec9, 1, 0x1ec8, /* LATIN CAPITAL LETTER I WITH HOOK .. */ + /*2156*/ 0x1ecb, 1, 0x1eca, /* LATIN CAPITAL LETTER I WITH DOT B.. */ + /*2159*/ 0x1ecd, 1, 0x1ecc, /* LATIN CAPITAL LETTER O WITH DOT B.. */ + /*2162*/ 0x1ecf, 1, 0x1ece, /* LATIN CAPITAL LETTER O WITH HOOK .. */ + /*2165*/ 0x1ed1, 1, 0x1ed0, /* LATIN CAPITAL LETTER O WITH CIRCU.. */ + /*2168*/ 0x1ed3, 1, 0x1ed2, /* LATIN CAPITAL LETTER O WITH CIRCU.. */ + /*2171*/ 0x1ed5, 1, 0x1ed4, /* LATIN CAPITAL LETTER O WITH CIRCU.. */ + /*2174*/ 0x1ed7, 1, 0x1ed6, /* LATIN CAPITAL LETTER O WITH CIRCU.. */ + /*2177*/ 0x1ed9, 1, 0x1ed8, /* LATIN CAPITAL LETTER O WITH CIRCU.. */ + /*2180*/ 0x1edb, 1, 0x1eda, /* LATIN CAPITAL LETTER O WITH HORN .. */ + /*2183*/ 0x1edd, 1, 0x1edc, /* LATIN CAPITAL LETTER O WITH HORN .. */ + /*2186*/ 0x1edf, 1, 0x1ede, /* LATIN CAPITAL LETTER O WITH HORN .. */ + /*2189*/ 0x1ee1, 1, 0x1ee0, /* LATIN CAPITAL LETTER O WITH HORN .. */ + /*2192*/ 0x1ee3, 1, 0x1ee2, /* LATIN CAPITAL LETTER O WITH HORN .. */ + /*2195*/ 0x1ee5, 1, 0x1ee4, /* LATIN CAPITAL LETTER U WITH DOT B.. */ + /*2198*/ 0x1ee7, 1, 0x1ee6, /* LATIN CAPITAL LETTER U WITH HOOK .. */ + /*2201*/ 0x1ee9, 1, 0x1ee8, /* LATIN CAPITAL LETTER U WITH HORN .. */ + /*2204*/ 0x1eeb, 1, 0x1eea, /* LATIN CAPITAL LETTER U WITH HORN .. */ + /*2207*/ 0x1eed, 1, 0x1eec, /* LATIN CAPITAL LETTER U WITH HORN .. */ + /*2210*/ 0x1eef, 1, 0x1eee, /* LATIN CAPITAL LETTER U WITH HORN .. */ + /*2213*/ 0x1ef1, 1, 0x1ef0, /* LATIN CAPITAL LETTER U WITH HORN .. */ + /*2216*/ 0x1ef3, 1, 0x1ef2, /* LATIN CAPITAL LETTER Y WITH GRAVE */ + /*2219*/ 0x1ef5, 1, 0x1ef4, /* LATIN CAPITAL LETTER Y WITH DOT B.. */ + /*2222*/ 0x1ef7, 1, 0x1ef6, /* LATIN CAPITAL LETTER Y WITH HOOK .. */ + /*2225*/ 0x1ef9, 1, 0x1ef8, /* LATIN CAPITAL LETTER Y WITH TILDE */ + /*2228*/ 0x1efb, 1, 0x1efa, /* LATIN CAPITAL LETTER MIDDLE-WELSH.. */ + /*2231*/ 0x1efd, 1, 0x1efc, /* LATIN CAPITAL LETTER MIDDLE-WELSH.. */ + /*2234*/ 0x1eff, 1, 0x1efe, /* LATIN CAPITAL LETTER Y WITH LOOP */ + /*2237*/ 0x1f00, 1, 0x1f08, /* GREEK CAPITAL LETTER ALPHA WITH P.. */ + /*2240*/ 0x1f01, 1, 0x1f09, /* GREEK CAPITAL LETTER ALPHA WITH D.. */ + /*2243*/ 0x1f02, 1, 0x1f0a, /* GREEK CAPITAL LETTER ALPHA WITH P.. */ + /*2246*/ 0x1f03, 1, 0x1f0b, /* GREEK CAPITAL LETTER ALPHA WITH D.. */ + /*2249*/ 0x1f04, 1, 0x1f0c, /* GREEK CAPITAL LETTER ALPHA WITH P.. */ + /*2252*/ 0x1f05, 1, 0x1f0d, /* GREEK CAPITAL LETTER ALPHA WITH D.. */ + /*2255*/ 0x1f06, 1, 0x1f0e, /* GREEK CAPITAL LETTER ALPHA WITH P.. */ + /*2258*/ 0x1f07, 1, 0x1f0f, /* GREEK CAPITAL LETTER ALPHA WITH D.. */ + /*2261*/ 0x1f10, 1, 0x1f18, /* GREEK CAPITAL LETTER EPSILON WITH.. */ + /*2264*/ 0x1f11, 1, 0x1f19, /* GREEK CAPITAL LETTER EPSILON WITH.. */ + /*2267*/ 0x1f12, 1, 0x1f1a, /* GREEK CAPITAL LETTER EPSILON WITH.. */ + /*2270*/ 0x1f13, 1, 0x1f1b, /* GREEK CAPITAL LETTER EPSILON WITH.. */ + /*2273*/ 0x1f14, 1, 0x1f1c, /* GREEK CAPITAL LETTER EPSILON WITH.. */ + /*2276*/ 0x1f15, 1, 0x1f1d, /* GREEK CAPITAL LETTER EPSILON WITH.. */ + /*2279*/ 0x1f20, 1, 0x1f28, /* GREEK CAPITAL LETTER ETA WITH PSI.. */ + /*2282*/ 0x1f21, 1, 0x1f29, /* GREEK CAPITAL LETTER ETA WITH DAS.. */ + /*2285*/ 0x1f22, 1, 0x1f2a, /* GREEK CAPITAL LETTER ETA WITH PSI.. */ + /*2288*/ 0x1f23, 1, 0x1f2b, /* GREEK CAPITAL LETTER ETA WITH DAS.. */ + /*2291*/ 0x1f24, 1, 0x1f2c, /* GREEK CAPITAL LETTER ETA WITH PSI.. */ + /*2294*/ 0x1f25, 1, 0x1f2d, /* GREEK CAPITAL LETTER ETA WITH DAS.. */ + /*2297*/ 0x1f26, 1, 0x1f2e, /* GREEK CAPITAL LETTER ETA WITH PSI.. */ + /*2300*/ 0x1f27, 1, 0x1f2f, /* GREEK CAPITAL LETTER ETA WITH DAS.. */ + /*2303*/ 0x1f30, 1, 0x1f38, /* GREEK CAPITAL LETTER IOTA WITH PS.. */ + /*2306*/ 0x1f31, 1, 0x1f39, /* GREEK CAPITAL LETTER IOTA WITH DA.. */ + /*2309*/ 0x1f32, 1, 0x1f3a, /* GREEK CAPITAL LETTER IOTA WITH PS.. */ + /*2312*/ 0x1f33, 1, 0x1f3b, /* GREEK CAPITAL LETTER IOTA WITH DA.. */ + /*2315*/ 0x1f34, 1, 0x1f3c, /* GREEK CAPITAL LETTER IOTA WITH PS.. */ + /*2318*/ 0x1f35, 1, 0x1f3d, /* GREEK CAPITAL LETTER IOTA WITH DA.. */ + /*2321*/ 0x1f36, 1, 0x1f3e, /* GREEK CAPITAL LETTER IOTA WITH PS.. */ + /*2324*/ 0x1f37, 1, 0x1f3f, /* GREEK CAPITAL LETTER IOTA WITH DA.. */ + /*2327*/ 0x1f40, 1, 0x1f48, /* GREEK CAPITAL LETTER OMICRON WITH.. */ + /*2330*/ 0x1f41, 1, 0x1f49, /* GREEK CAPITAL LETTER OMICRON WITH.. */ + /*2333*/ 0x1f42, 1, 0x1f4a, /* GREEK CAPITAL LETTER OMICRON WITH.. */ + /*2336*/ 0x1f43, 1, 0x1f4b, /* GREEK CAPITAL LETTER OMICRON WITH.. */ + /*2339*/ 0x1f44, 1, 0x1f4c, /* GREEK CAPITAL LETTER OMICRON WITH.. */ + /*2342*/ 0x1f45, 1, 0x1f4d, /* GREEK CAPITAL LETTER OMICRON WITH.. */ + /*2345*/ 0x1f51, 1, 0x1f59, /* GREEK CAPITAL LETTER UPSILON WITH.. */ + /*2348*/ 0x1f53, 1, 0x1f5b, /* GREEK CAPITAL LETTER UPSILON WITH.. */ + /*2351*/ 0x1f55, 1, 0x1f5d, /* GREEK CAPITAL LETTER UPSILON WITH.. */ + /*2354*/ 0x1f57, 1, 0x1f5f, /* GREEK CAPITAL LETTER UPSILON WITH.. */ + /*2357*/ 0x1f60, 1, 0x1f68, /* GREEK CAPITAL LETTER OMEGA WITH P.. */ + /*2360*/ 0x1f61, 1, 0x1f69, /* GREEK CAPITAL LETTER OMEGA WITH D.. */ + /*2363*/ 0x1f62, 1, 0x1f6a, /* GREEK CAPITAL LETTER OMEGA WITH P.. */ + /*2366*/ 0x1f63, 1, 0x1f6b, /* GREEK CAPITAL LETTER OMEGA WITH D.. */ + /*2369*/ 0x1f64, 1, 0x1f6c, /* GREEK CAPITAL LETTER OMEGA WITH P.. */ + /*2372*/ 0x1f65, 1, 0x1f6d, /* GREEK CAPITAL LETTER OMEGA WITH D.. */ + /*2375*/ 0x1f66, 1, 0x1f6e, /* GREEK CAPITAL LETTER OMEGA WITH P.. */ + /*2378*/ 0x1f67, 1, 0x1f6f, /* GREEK CAPITAL LETTER OMEGA WITH D.. */ + /*2381*/ 0x1f70, 1, 0x1fba, /* GREEK CAPITAL LETTER ALPHA WITH V.. */ + /*2384*/ 0x1f71, 1, 0x1fbb, /* GREEK CAPITAL LETTER ALPHA WITH O.. */ + /*2387*/ 0x1f72, 1, 0x1fc8, /* GREEK CAPITAL LETTER EPSILON WITH.. */ + /*2390*/ 0x1f73, 1, 0x1fc9, /* GREEK CAPITAL LETTER EPSILON WITH.. */ + /*2393*/ 0x1f74, 1, 0x1fca, /* GREEK CAPITAL LETTER ETA WITH VAR.. */ + /*2396*/ 0x1f75, 1, 0x1fcb, /* GREEK CAPITAL LETTER ETA WITH OXIA */ + /*2399*/ 0x1f76, 1, 0x1fda, /* GREEK CAPITAL LETTER IOTA WITH VA.. */ + /*2402*/ 0x1f77, 1, 0x1fdb, /* GREEK CAPITAL LETTER IOTA WITH OX.. */ + /*2405*/ 0x1f78, 1, 0x1ff8, /* GREEK CAPITAL LETTER OMICRON WITH.. */ + /*2408*/ 0x1f79, 1, 0x1ff9, /* GREEK CAPITAL LETTER OMICRON WITH.. */ + /*2411*/ 0x1f7a, 1, 0x1fea, /* GREEK CAPITAL LETTER UPSILON WITH.. */ + /*2414*/ 0x1f7b, 1, 0x1feb, /* GREEK CAPITAL LETTER UPSILON WITH.. */ + /*2417*/ 0x1f7c, 1, 0x1ffa, /* GREEK CAPITAL LETTER OMEGA WITH V.. */ + /*2420*/ 0x1f7d, 1, 0x1ffb, /* GREEK CAPITAL LETTER OMEGA WITH O.. */ + /*2423*/ 0x1fb0, 1, 0x1fb8, /* GREEK CAPITAL LETTER ALPHA WITH V.. */ + /*2426*/ 0x1fb1, 1, 0x1fb9, /* GREEK CAPITAL LETTER ALPHA WITH M.. */ + /*2429*/ 0x1fd0, 1, 0x1fd8, /* GREEK CAPITAL LETTER IOTA WITH VR.. */ + /*2432*/ 0x1fd1, 1, 0x1fd9, /* GREEK CAPITAL LETTER IOTA WITH MA.. */ + /*2435*/ 0x1fe0, 1, 0x1fe8, /* GREEK CAPITAL LETTER UPSILON WITH.. */ + /*2438*/ 0x1fe1, 1, 0x1fe9, /* GREEK CAPITAL LETTER UPSILON WITH.. */ + /*2441*/ 0x1fe5, 1, 0x1fec, /* GREEK CAPITAL LETTER RHO WITH DAS.. */ + /*2444*/ 0x214e, 1, 0x2132, /* TURNED CAPITAL F */ + /*2447*/ 0x2170, 1, 0x2160, /* ROMAN NUMERAL ONE */ + /*2450*/ 0x2171, 1, 0x2161, /* ROMAN NUMERAL TWO */ + /*2453*/ 0x2172, 1, 0x2162, /* ROMAN NUMERAL THREE */ + /*2456*/ 0x2173, 1, 0x2163, /* ROMAN NUMERAL FOUR */ + /*2459*/ 0x2174, 1, 0x2164, /* ROMAN NUMERAL FIVE */ + /*2462*/ 0x2175, 1, 0x2165, /* ROMAN NUMERAL SIX */ + /*2465*/ 0x2176, 1, 0x2166, /* ROMAN NUMERAL SEVEN */ + /*2468*/ 0x2177, 1, 0x2167, /* ROMAN NUMERAL EIGHT */ + /*2471*/ 0x2178, 1, 0x2168, /* ROMAN NUMERAL NINE */ + /*2474*/ 0x2179, 1, 0x2169, /* ROMAN NUMERAL TEN */ + /*2477*/ 0x217a, 1, 0x216a, /* ROMAN NUMERAL ELEVEN */ + /*2480*/ 0x217b, 1, 0x216b, /* ROMAN NUMERAL TWELVE */ + /*2483*/ 0x217c, 1, 0x216c, /* ROMAN NUMERAL FIFTY */ + /*2486*/ 0x217d, 1, 0x216d, /* ROMAN NUMERAL ONE HUNDRED */ + /*2489*/ 0x217e, 1, 0x216e, /* ROMAN NUMERAL FIVE HUNDRED */ + /*2492*/ 0x217f, 1, 0x216f, /* ROMAN NUMERAL ONE THOUSAND */ + /*2495*/ 0x2184, 1, 0x2183, /* ROMAN NUMERAL REVERSED ONE HUNDRED */ + /*2498*/ 0x24d0, 1, 0x24b6, /* CIRCLED LATIN CAPITAL LETTER A */ + /*2501*/ 0x24d1, 1, 0x24b7, /* CIRCLED LATIN CAPITAL LETTER B */ + /*2504*/ 0x24d2, 1, 0x24b8, /* CIRCLED LATIN CAPITAL LETTER C */ + /*2507*/ 0x24d3, 1, 0x24b9, /* CIRCLED LATIN CAPITAL LETTER D */ + /*2510*/ 0x24d4, 1, 0x24ba, /* CIRCLED LATIN CAPITAL LETTER E */ + /*2513*/ 0x24d5, 1, 0x24bb, /* CIRCLED LATIN CAPITAL LETTER F */ + /*2516*/ 0x24d6, 1, 0x24bc, /* CIRCLED LATIN CAPITAL LETTER G */ + /*2519*/ 0x24d7, 1, 0x24bd, /* CIRCLED LATIN CAPITAL LETTER H */ + /*2522*/ 0x24d8, 1, 0x24be, /* CIRCLED LATIN CAPITAL LETTER I */ + /*2525*/ 0x24d9, 1, 0x24bf, /* CIRCLED LATIN CAPITAL LETTER J */ + /*2528*/ 0x24da, 1, 0x24c0, /* CIRCLED LATIN CAPITAL LETTER K */ + /*2531*/ 0x24db, 1, 0x24c1, /* CIRCLED LATIN CAPITAL LETTER L */ + /*2534*/ 0x24dc, 1, 0x24c2, /* CIRCLED LATIN CAPITAL LETTER M */ + /*2537*/ 0x24dd, 1, 0x24c3, /* CIRCLED LATIN CAPITAL LETTER N */ + /*2540*/ 0x24de, 1, 0x24c4, /* CIRCLED LATIN CAPITAL LETTER O */ + /*2543*/ 0x24df, 1, 0x24c5, /* CIRCLED LATIN CAPITAL LETTER P */ + /*2546*/ 0x24e0, 1, 0x24c6, /* CIRCLED LATIN CAPITAL LETTER Q */ + /*2549*/ 0x24e1, 1, 0x24c7, /* CIRCLED LATIN CAPITAL LETTER R */ + /*2552*/ 0x24e2, 1, 0x24c8, /* CIRCLED LATIN CAPITAL LETTER S */ + /*2555*/ 0x24e3, 1, 0x24c9, /* CIRCLED LATIN CAPITAL LETTER T */ + /*2558*/ 0x24e4, 1, 0x24ca, /* CIRCLED LATIN CAPITAL LETTER U */ + /*2561*/ 0x24e5, 1, 0x24cb, /* CIRCLED LATIN CAPITAL LETTER V */ + /*2564*/ 0x24e6, 1, 0x24cc, /* CIRCLED LATIN CAPITAL LETTER W */ + /*2567*/ 0x24e7, 1, 0x24cd, /* CIRCLED LATIN CAPITAL LETTER X */ + /*2570*/ 0x24e8, 1, 0x24ce, /* CIRCLED LATIN CAPITAL LETTER Y */ + /*2573*/ 0x24e9, 1, 0x24cf, /* CIRCLED LATIN CAPITAL LETTER Z */ + /*2576*/ 0x2c30, 1, 0x2c00, /* GLAGOLITIC CAPITAL LETTER AZU */ + /*2579*/ 0x2c31, 1, 0x2c01, /* GLAGOLITIC CAPITAL LETTER BUKY */ + /*2582*/ 0x2c32, 1, 0x2c02, /* GLAGOLITIC CAPITAL LETTER VEDE */ + /*2585*/ 0x2c33, 1, 0x2c03, /* GLAGOLITIC CAPITAL LETTER GLAGOLI */ + /*2588*/ 0x2c34, 1, 0x2c04, /* GLAGOLITIC CAPITAL LETTER DOBRO */ + /*2591*/ 0x2c35, 1, 0x2c05, /* GLAGOLITIC CAPITAL LETTER YESTU */ + /*2594*/ 0x2c36, 1, 0x2c06, /* GLAGOLITIC CAPITAL LETTER ZHIVETE */ + /*2597*/ 0x2c37, 1, 0x2c07, /* GLAGOLITIC CAPITAL LETTER DZELO */ + /*2600*/ 0x2c38, 1, 0x2c08, /* GLAGOLITIC CAPITAL LETTER ZEMLJA */ + /*2603*/ 0x2c39, 1, 0x2c09, /* GLAGOLITIC CAPITAL LETTER IZHE */ + /*2606*/ 0x2c3a, 1, 0x2c0a, /* GLAGOLITIC CAPITAL LETTER INITIAL.. */ + /*2609*/ 0x2c3b, 1, 0x2c0b, /* GLAGOLITIC CAPITAL LETTER I */ + /*2612*/ 0x2c3c, 1, 0x2c0c, /* GLAGOLITIC CAPITAL LETTER DJERVI */ + /*2615*/ 0x2c3d, 1, 0x2c0d, /* GLAGOLITIC CAPITAL LETTER KAKO */ + /*2618*/ 0x2c3e, 1, 0x2c0e, /* GLAGOLITIC CAPITAL LETTER LJUDIJE */ + /*2621*/ 0x2c3f, 1, 0x2c0f, /* GLAGOLITIC CAPITAL LETTER MYSLITE */ + /*2624*/ 0x2c40, 1, 0x2c10, /* GLAGOLITIC CAPITAL LETTER NASHI */ + /*2627*/ 0x2c41, 1, 0x2c11, /* GLAGOLITIC CAPITAL LETTER ONU */ + /*2630*/ 0x2c42, 1, 0x2c12, /* GLAGOLITIC CAPITAL LETTER POKOJI */ + /*2633*/ 0x2c43, 1, 0x2c13, /* GLAGOLITIC CAPITAL LETTER RITSI */ + /*2636*/ 0x2c44, 1, 0x2c14, /* GLAGOLITIC CAPITAL LETTER SLOVO */ + /*2639*/ 0x2c45, 1, 0x2c15, /* GLAGOLITIC CAPITAL LETTER TVRIDO */ + /*2642*/ 0x2c46, 1, 0x2c16, /* GLAGOLITIC CAPITAL LETTER UKU */ + /*2645*/ 0x2c47, 1, 0x2c17, /* GLAGOLITIC CAPITAL LETTER FRITU */ + /*2648*/ 0x2c48, 1, 0x2c18, /* GLAGOLITIC CAPITAL LETTER HERU */ + /*2651*/ 0x2c49, 1, 0x2c19, /* GLAGOLITIC CAPITAL LETTER OTU */ + /*2654*/ 0x2c4a, 1, 0x2c1a, /* GLAGOLITIC CAPITAL LETTER PE */ + /*2657*/ 0x2c4b, 1, 0x2c1b, /* GLAGOLITIC CAPITAL LETTER SHTA */ + /*2660*/ 0x2c4c, 1, 0x2c1c, /* GLAGOLITIC CAPITAL LETTER TSI */ + /*2663*/ 0x2c4d, 1, 0x2c1d, /* GLAGOLITIC CAPITAL LETTER CHRIVI */ + /*2666*/ 0x2c4e, 1, 0x2c1e, /* GLAGOLITIC CAPITAL LETTER SHA */ + /*2669*/ 0x2c4f, 1, 0x2c1f, /* GLAGOLITIC CAPITAL LETTER YERU */ + /*2672*/ 0x2c50, 1, 0x2c20, /* GLAGOLITIC CAPITAL LETTER YERI */ + /*2675*/ 0x2c51, 1, 0x2c21, /* GLAGOLITIC CAPITAL LETTER YATI */ + /*2678*/ 0x2c52, 1, 0x2c22, /* GLAGOLITIC CAPITAL LETTER SPIDERY.. */ + /*2681*/ 0x2c53, 1, 0x2c23, /* GLAGOLITIC CAPITAL LETTER YU */ + /*2684*/ 0x2c54, 1, 0x2c24, /* GLAGOLITIC CAPITAL LETTER SMALL Y.. */ + /*2687*/ 0x2c55, 1, 0x2c25, /* GLAGOLITIC CAPITAL LETTER SMALL Y.. */ + /*2690*/ 0x2c56, 1, 0x2c26, /* GLAGOLITIC CAPITAL LETTER YO */ + /*2693*/ 0x2c57, 1, 0x2c27, /* GLAGOLITIC CAPITAL LETTER IOTATED.. */ + /*2696*/ 0x2c58, 1, 0x2c28, /* GLAGOLITIC CAPITAL LETTER BIG YUS */ + /*2699*/ 0x2c59, 1, 0x2c29, /* GLAGOLITIC CAPITAL LETTER IOTATED.. */ + /*2702*/ 0x2c5a, 1, 0x2c2a, /* GLAGOLITIC CAPITAL LETTER FITA */ + /*2705*/ 0x2c5b, 1, 0x2c2b, /* GLAGOLITIC CAPITAL LETTER IZHITSA */ + /*2708*/ 0x2c5c, 1, 0x2c2c, /* GLAGOLITIC CAPITAL LETTER SHTAPIC */ + /*2711*/ 0x2c5d, 1, 0x2c2d, /* GLAGOLITIC CAPITAL LETTER TROKUTA.. */ + /*2714*/ 0x2c5e, 1, 0x2c2e, /* GLAGOLITIC CAPITAL LETTER LATINAT.. */ + /*2717*/ 0x2c61, 1, 0x2c60, /* LATIN CAPITAL LETTER L WITH DOUBL.. */ + /*2720*/ 0x2c65, 1, 0x023a, /* LATIN CAPITAL LETTER A WITH STROKE */ + /*2723*/ 0x2c66, 1, 0x023e, /* LATIN CAPITAL LETTER T WITH DIAGO.. */ + /*2726*/ 0x2c68, 1, 0x2c67, /* LATIN CAPITAL LETTER H WITH DESCE.. */ + /*2729*/ 0x2c6a, 1, 0x2c69, /* LATIN CAPITAL LETTER K WITH DESCE.. */ + /*2732*/ 0x2c6c, 1, 0x2c6b, /* LATIN CAPITAL LETTER Z WITH DESCE.. */ + /*2735*/ 0x2c73, 1, 0x2c72, /* LATIN CAPITAL LETTER W WITH HOOK */ + /*2738*/ 0x2c76, 1, 0x2c75, /* LATIN CAPITAL LETTER HALF H */ + /*2741*/ 0x2c81, 1, 0x2c80, /* COPTIC CAPITAL LETTER ALFA */ + /*2744*/ 0x2c83, 1, 0x2c82, /* COPTIC CAPITAL LETTER VIDA */ + /*2747*/ 0x2c85, 1, 0x2c84, /* COPTIC CAPITAL LETTER GAMMA */ + /*2750*/ 0x2c87, 1, 0x2c86, /* COPTIC CAPITAL LETTER DALDA */ + /*2753*/ 0x2c89, 1, 0x2c88, /* COPTIC CAPITAL LETTER EIE */ + /*2756*/ 0x2c8b, 1, 0x2c8a, /* COPTIC CAPITAL LETTER SOU */ + /*2759*/ 0x2c8d, 1, 0x2c8c, /* COPTIC CAPITAL LETTER ZATA */ + /*2762*/ 0x2c8f, 1, 0x2c8e, /* COPTIC CAPITAL LETTER HATE */ + /*2765*/ 0x2c91, 1, 0x2c90, /* COPTIC CAPITAL LETTER THETHE */ + /*2768*/ 0x2c93, 1, 0x2c92, /* COPTIC CAPITAL LETTER IAUDA */ + /*2771*/ 0x2c95, 1, 0x2c94, /* COPTIC CAPITAL LETTER KAPA */ + /*2774*/ 0x2c97, 1, 0x2c96, /* COPTIC CAPITAL LETTER LAULA */ + /*2777*/ 0x2c99, 1, 0x2c98, /* COPTIC CAPITAL LETTER MI */ + /*2780*/ 0x2c9b, 1, 0x2c9a, /* COPTIC CAPITAL LETTER NI */ + /*2783*/ 0x2c9d, 1, 0x2c9c, /* COPTIC CAPITAL LETTER KSI */ + /*2786*/ 0x2c9f, 1, 0x2c9e, /* COPTIC CAPITAL LETTER O */ + /*2789*/ 0x2ca1, 1, 0x2ca0, /* COPTIC CAPITAL LETTER PI */ + /*2792*/ 0x2ca3, 1, 0x2ca2, /* COPTIC CAPITAL LETTER RO */ + /*2795*/ 0x2ca5, 1, 0x2ca4, /* COPTIC CAPITAL LETTER SIMA */ + /*2798*/ 0x2ca7, 1, 0x2ca6, /* COPTIC CAPITAL LETTER TAU */ + /*2801*/ 0x2ca9, 1, 0x2ca8, /* COPTIC CAPITAL LETTER UA */ + /*2804*/ 0x2cab, 1, 0x2caa, /* COPTIC CAPITAL LETTER FI */ + /*2807*/ 0x2cad, 1, 0x2cac, /* COPTIC CAPITAL LETTER KHI */ + /*2810*/ 0x2caf, 1, 0x2cae, /* COPTIC CAPITAL LETTER PSI */ + /*2813*/ 0x2cb1, 1, 0x2cb0, /* COPTIC CAPITAL LETTER OOU */ + /*2816*/ 0x2cb3, 1, 0x2cb2, /* COPTIC CAPITAL LETTER DIALECT-P A.. */ + /*2819*/ 0x2cb5, 1, 0x2cb4, /* COPTIC CAPITAL LETTER OLD COPTIC .. */ + /*2822*/ 0x2cb7, 1, 0x2cb6, /* COPTIC CAPITAL LETTER CRYPTOGRAMM.. */ + /*2825*/ 0x2cb9, 1, 0x2cb8, /* COPTIC CAPITAL LETTER DIALECT-P K.. */ + /*2828*/ 0x2cbb, 1, 0x2cba, /* COPTIC CAPITAL LETTER DIALECT-P NI */ + /*2831*/ 0x2cbd, 1, 0x2cbc, /* COPTIC CAPITAL LETTER CRYPTOGRAMM.. */ + /*2834*/ 0x2cbf, 1, 0x2cbe, /* COPTIC CAPITAL LETTER OLD COPTIC .. */ + /*2837*/ 0x2cc1, 1, 0x2cc0, /* COPTIC CAPITAL LETTER SAMPI */ + /*2840*/ 0x2cc3, 1, 0x2cc2, /* COPTIC CAPITAL LETTER CROSSED SHEI */ + /*2843*/ 0x2cc5, 1, 0x2cc4, /* COPTIC CAPITAL LETTER OLD COPTIC .. */ + /*2846*/ 0x2cc7, 1, 0x2cc6, /* COPTIC CAPITAL LETTER OLD COPTIC .. */ + /*2849*/ 0x2cc9, 1, 0x2cc8, /* COPTIC CAPITAL LETTER AKHMIMIC KH.. */ + /*2852*/ 0x2ccb, 1, 0x2cca, /* COPTIC CAPITAL LETTER DIALECT-P H.. */ + /*2855*/ 0x2ccd, 1, 0x2ccc, /* COPTIC CAPITAL LETTER OLD COPTIC .. */ + /*2858*/ 0x2ccf, 1, 0x2cce, /* COPTIC CAPITAL LETTER OLD COPTIC .. */ + /*2861*/ 0x2cd1, 1, 0x2cd0, /* COPTIC CAPITAL LETTER L-SHAPED HA */ + /*2864*/ 0x2cd3, 1, 0x2cd2, /* COPTIC CAPITAL LETTER OLD COPTIC .. */ + /*2867*/ 0x2cd5, 1, 0x2cd4, /* COPTIC CAPITAL LETTER OLD COPTIC .. */ + /*2870*/ 0x2cd7, 1, 0x2cd6, /* COPTIC CAPITAL LETTER OLD COPTIC .. */ + /*2873*/ 0x2cd9, 1, 0x2cd8, /* COPTIC CAPITAL LETTER OLD COPTIC .. */ + /*2876*/ 0x2cdb, 1, 0x2cda, /* COPTIC CAPITAL LETTER OLD COPTIC .. */ + /*2879*/ 0x2cdd, 1, 0x2cdc, /* COPTIC CAPITAL LETTER OLD NUBIAN .. */ + /*2882*/ 0x2cdf, 1, 0x2cde, /* COPTIC CAPITAL LETTER OLD NUBIAN .. */ + /*2885*/ 0x2ce1, 1, 0x2ce0, /* COPTIC CAPITAL LETTER OLD NUBIAN .. */ + /*2888*/ 0x2ce3, 1, 0x2ce2, /* COPTIC CAPITAL LETTER OLD NUBIAN .. */ + /*2891*/ 0x2cec, 1, 0x2ceb, /* COPTIC CAPITAL LETTER CRYPTOGRAMM.. */ + /*2894*/ 0x2cee, 1, 0x2ced, /* COPTIC CAPITAL LETTER CRYPTOGRAMM.. */ + /*2897*/ 0x2cf3, 1, 0x2cf2, /* COPTIC CAPITAL LETTER BOHAIRIC KH.. */ + /*2900*/ 0x2d00, 1, 0x10a0, /* GEORGIAN CAPITAL LETTER AN */ + /*2903*/ 0x2d01, 1, 0x10a1, /* GEORGIAN CAPITAL LETTER BAN */ + /*2906*/ 0x2d02, 1, 0x10a2, /* GEORGIAN CAPITAL LETTER GAN */ + /*2909*/ 0x2d03, 1, 0x10a3, /* GEORGIAN CAPITAL LETTER DON */ + /*2912*/ 0x2d04, 1, 0x10a4, /* GEORGIAN CAPITAL LETTER EN */ + /*2915*/ 0x2d05, 1, 0x10a5, /* GEORGIAN CAPITAL LETTER VIN */ + /*2918*/ 0x2d06, 1, 0x10a6, /* GEORGIAN CAPITAL LETTER ZEN */ + /*2921*/ 0x2d07, 1, 0x10a7, /* GEORGIAN CAPITAL LETTER TAN */ + /*2924*/ 0x2d08, 1, 0x10a8, /* GEORGIAN CAPITAL LETTER IN */ + /*2927*/ 0x2d09, 1, 0x10a9, /* GEORGIAN CAPITAL LETTER KAN */ + /*2930*/ 0x2d0a, 1, 0x10aa, /* GEORGIAN CAPITAL LETTER LAS */ + /*2933*/ 0x2d0b, 1, 0x10ab, /* GEORGIAN CAPITAL LETTER MAN */ + /*2936*/ 0x2d0c, 1, 0x10ac, /* GEORGIAN CAPITAL LETTER NAR */ + /*2939*/ 0x2d0d, 1, 0x10ad, /* GEORGIAN CAPITAL LETTER ON */ + /*2942*/ 0x2d0e, 1, 0x10ae, /* GEORGIAN CAPITAL LETTER PAR */ + /*2945*/ 0x2d0f, 1, 0x10af, /* GEORGIAN CAPITAL LETTER ZHAR */ + /*2948*/ 0x2d10, 1, 0x10b0, /* GEORGIAN CAPITAL LETTER RAE */ + /*2951*/ 0x2d11, 1, 0x10b1, /* GEORGIAN CAPITAL LETTER SAN */ + /*2954*/ 0x2d12, 1, 0x10b2, /* GEORGIAN CAPITAL LETTER TAR */ + /*2957*/ 0x2d13, 1, 0x10b3, /* GEORGIAN CAPITAL LETTER UN */ + /*2960*/ 0x2d14, 1, 0x10b4, /* GEORGIAN CAPITAL LETTER PHAR */ + /*2963*/ 0x2d15, 1, 0x10b5, /* GEORGIAN CAPITAL LETTER KHAR */ + /*2966*/ 0x2d16, 1, 0x10b6, /* GEORGIAN CAPITAL LETTER GHAN */ + /*2969*/ 0x2d17, 1, 0x10b7, /* GEORGIAN CAPITAL LETTER QAR */ + /*2972*/ 0x2d18, 1, 0x10b8, /* GEORGIAN CAPITAL LETTER SHIN */ + /*2975*/ 0x2d19, 1, 0x10b9, /* GEORGIAN CAPITAL LETTER CHIN */ + /*2978*/ 0x2d1a, 1, 0x10ba, /* GEORGIAN CAPITAL LETTER CAN */ + /*2981*/ 0x2d1b, 1, 0x10bb, /* GEORGIAN CAPITAL LETTER JIL */ + /*2984*/ 0x2d1c, 1, 0x10bc, /* GEORGIAN CAPITAL LETTER CIL */ + /*2987*/ 0x2d1d, 1, 0x10bd, /* GEORGIAN CAPITAL LETTER CHAR */ + /*2990*/ 0x2d1e, 1, 0x10be, /* GEORGIAN CAPITAL LETTER XAN */ + /*2993*/ 0x2d1f, 1, 0x10bf, /* GEORGIAN CAPITAL LETTER JHAN */ + /*2996*/ 0x2d20, 1, 0x10c0, /* GEORGIAN CAPITAL LETTER HAE */ + /*2999*/ 0x2d21, 1, 0x10c1, /* GEORGIAN CAPITAL LETTER HE */ + /*3002*/ 0x2d22, 1, 0x10c2, /* GEORGIAN CAPITAL LETTER HIE */ + /*3005*/ 0x2d23, 1, 0x10c3, /* GEORGIAN CAPITAL LETTER WE */ + /*3008*/ 0x2d24, 1, 0x10c4, /* GEORGIAN CAPITAL LETTER HAR */ + /*3011*/ 0x2d25, 1, 0x10c5, /* GEORGIAN CAPITAL LETTER HOE */ + /*3014*/ 0x2d27, 1, 0x10c7, /* GEORGIAN CAPITAL LETTER YN */ + /*3017*/ 0x2d2d, 1, 0x10cd, /* GEORGIAN CAPITAL LETTER AEN */ + /*3020*/ 0xa641, 1, 0xa640, /* CYRILLIC CAPITAL LETTER ZEMLYA */ + /*3023*/ 0xa643, 1, 0xa642, /* CYRILLIC CAPITAL LETTER DZELO */ + /*3026*/ 0xa645, 1, 0xa644, /* CYRILLIC CAPITAL LETTER REVERSED .. */ + /*3029*/ 0xa647, 1, 0xa646, /* CYRILLIC CAPITAL LETTER IOTA */ + /*3032*/ 0xa649, 1, 0xa648, /* CYRILLIC CAPITAL LETTER DJERV */ + /*3035*/ 0xa64b, 2, 0x1c88, 0xa64a, /* CYRILLIC SMALL LETTER UNBLENDED UK */ + /*3039*/ 0xa64d, 1, 0xa64c, /* CYRILLIC CAPITAL LETTER BROAD OME.. */ + /*3042*/ 0xa64f, 1, 0xa64e, /* CYRILLIC CAPITAL LETTER NEUTRAL Y.. */ + /*3045*/ 0xa651, 1, 0xa650, /* CYRILLIC CAPITAL LETTER YERU WITH.. */ + /*3048*/ 0xa653, 1, 0xa652, /* CYRILLIC CAPITAL LETTER IOTIFIED .. */ + /*3051*/ 0xa655, 1, 0xa654, /* CYRILLIC CAPITAL LETTER REVERSED .. */ + /*3054*/ 0xa657, 1, 0xa656, /* CYRILLIC CAPITAL LETTER IOTIFIED A */ + /*3057*/ 0xa659, 1, 0xa658, /* CYRILLIC CAPITAL LETTER CLOSED LI.. */ + /*3060*/ 0xa65b, 1, 0xa65a, /* CYRILLIC CAPITAL LETTER BLENDED Y.. */ + /*3063*/ 0xa65d, 1, 0xa65c, /* CYRILLIC CAPITAL LETTER IOTIFIED .. */ + /*3066*/ 0xa65f, 1, 0xa65e, /* CYRILLIC CAPITAL LETTER YN */ + /*3069*/ 0xa661, 1, 0xa660, /* CYRILLIC CAPITAL LETTER REVERSED .. */ + /*3072*/ 0xa663, 1, 0xa662, /* CYRILLIC CAPITAL LETTER SOFT DE */ + /*3075*/ 0xa665, 1, 0xa664, /* CYRILLIC CAPITAL LETTER SOFT EL */ + /*3078*/ 0xa667, 1, 0xa666, /* CYRILLIC CAPITAL LETTER SOFT EM */ + /*3081*/ 0xa669, 1, 0xa668, /* CYRILLIC CAPITAL LETTER MONOCULAR.. */ + /*3084*/ 0xa66b, 1, 0xa66a, /* CYRILLIC CAPITAL LETTER BINOCULAR.. */ + /*3087*/ 0xa66d, 1, 0xa66c, /* CYRILLIC CAPITAL LETTER DOUBLE MO.. */ + /*3090*/ 0xa681, 1, 0xa680, /* CYRILLIC CAPITAL LETTER DWE */ + /*3093*/ 0xa683, 1, 0xa682, /* CYRILLIC CAPITAL LETTER DZWE */ + /*3096*/ 0xa685, 1, 0xa684, /* CYRILLIC CAPITAL LETTER ZHWE */ + /*3099*/ 0xa687, 1, 0xa686, /* CYRILLIC CAPITAL LETTER CCHE */ + /*3102*/ 0xa689, 1, 0xa688, /* CYRILLIC CAPITAL LETTER DZZE */ + /*3105*/ 0xa68b, 1, 0xa68a, /* CYRILLIC CAPITAL LETTER TE WITH M.. */ + /*3108*/ 0xa68d, 1, 0xa68c, /* CYRILLIC CAPITAL LETTER TWE */ + /*3111*/ 0xa68f, 1, 0xa68e, /* CYRILLIC CAPITAL LETTER TSWE */ + /*3114*/ 0xa691, 1, 0xa690, /* CYRILLIC CAPITAL LETTER TSSE */ + /*3117*/ 0xa693, 1, 0xa692, /* CYRILLIC CAPITAL LETTER TCHE */ + /*3120*/ 0xa695, 1, 0xa694, /* CYRILLIC CAPITAL LETTER HWE */ + /*3123*/ 0xa697, 1, 0xa696, /* CYRILLIC CAPITAL LETTER SHWE */ + /*3126*/ 0xa699, 1, 0xa698, /* CYRILLIC CAPITAL LETTER DOUBLE O */ + /*3129*/ 0xa69b, 1, 0xa69a, /* CYRILLIC CAPITAL LETTER CROSSED O */ + /*3132*/ 0xa723, 1, 0xa722, /* LATIN CAPITAL LETTER EGYPTOLOGICA.. */ + /*3135*/ 0xa725, 1, 0xa724, /* LATIN CAPITAL LETTER EGYPTOLOGICA.. */ + /*3138*/ 0xa727, 1, 0xa726, /* LATIN CAPITAL LETTER HENG */ + /*3141*/ 0xa729, 1, 0xa728, /* LATIN CAPITAL LETTER TZ */ + /*3144*/ 0xa72b, 1, 0xa72a, /* LATIN CAPITAL LETTER TRESILLO */ + /*3147*/ 0xa72d, 1, 0xa72c, /* LATIN CAPITAL LETTER CUATRILLO */ + /*3150*/ 0xa72f, 1, 0xa72e, /* LATIN CAPITAL LETTER CUATRILLO WI.. */ + /*3153*/ 0xa733, 1, 0xa732, /* LATIN CAPITAL LETTER AA */ + /*3156*/ 0xa735, 1, 0xa734, /* LATIN CAPITAL LETTER AO */ + /*3159*/ 0xa737, 1, 0xa736, /* LATIN CAPITAL LETTER AU */ + /*3162*/ 0xa739, 1, 0xa738, /* LATIN CAPITAL LETTER AV */ + /*3165*/ 0xa73b, 1, 0xa73a, /* LATIN CAPITAL LETTER AV WITH HORI.. */ + /*3168*/ 0xa73d, 1, 0xa73c, /* LATIN CAPITAL LETTER AY */ + /*3171*/ 0xa73f, 1, 0xa73e, /* LATIN CAPITAL LETTER REVERSED C W.. */ + /*3174*/ 0xa741, 1, 0xa740, /* LATIN CAPITAL LETTER K WITH STROKE */ + /*3177*/ 0xa743, 1, 0xa742, /* LATIN CAPITAL LETTER K WITH DIAGO.. */ + /*3180*/ 0xa745, 1, 0xa744, /* LATIN CAPITAL LETTER K WITH STROK.. */ + /*3183*/ 0xa747, 1, 0xa746, /* LATIN CAPITAL LETTER BROKEN L */ + /*3186*/ 0xa749, 1, 0xa748, /* LATIN CAPITAL LETTER L WITH HIGH .. */ + /*3189*/ 0xa74b, 1, 0xa74a, /* LATIN CAPITAL LETTER O WITH LONG .. */ + /*3192*/ 0xa74d, 1, 0xa74c, /* LATIN CAPITAL LETTER O WITH LOOP */ + /*3195*/ 0xa74f, 1, 0xa74e, /* LATIN CAPITAL LETTER OO */ + /*3198*/ 0xa751, 1, 0xa750, /* LATIN CAPITAL LETTER P WITH STROK.. */ + /*3201*/ 0xa753, 1, 0xa752, /* LATIN CAPITAL LETTER P WITH FLOUR.. */ + /*3204*/ 0xa755, 1, 0xa754, /* LATIN CAPITAL LETTER P WITH SQUIR.. */ + /*3207*/ 0xa757, 1, 0xa756, /* LATIN CAPITAL LETTER Q WITH STROK.. */ + /*3210*/ 0xa759, 1, 0xa758, /* LATIN CAPITAL LETTER Q WITH DIAGO.. */ + /*3213*/ 0xa75b, 1, 0xa75a, /* LATIN CAPITAL LETTER R ROTUNDA */ + /*3216*/ 0xa75d, 1, 0xa75c, /* LATIN CAPITAL LETTER RUM ROTUNDA */ + /*3219*/ 0xa75f, 1, 0xa75e, /* LATIN CAPITAL LETTER V WITH DIAGO.. */ + /*3222*/ 0xa761, 1, 0xa760, /* LATIN CAPITAL LETTER VY */ + /*3225*/ 0xa763, 1, 0xa762, /* LATIN CAPITAL LETTER VISIGOTHIC Z */ + /*3228*/ 0xa765, 1, 0xa764, /* LATIN CAPITAL LETTER THORN WITH S.. */ + /*3231*/ 0xa767, 1, 0xa766, /* LATIN CAPITAL LETTER THORN WITH S.. */ + /*3234*/ 0xa769, 1, 0xa768, /* LATIN CAPITAL LETTER VEND */ + /*3237*/ 0xa76b, 1, 0xa76a, /* LATIN CAPITAL LETTER ET */ + /*3240*/ 0xa76d, 1, 0xa76c, /* LATIN CAPITAL LETTER IS */ + /*3243*/ 0xa76f, 1, 0xa76e, /* LATIN CAPITAL LETTER CON */ + /*3246*/ 0xa77a, 1, 0xa779, /* LATIN CAPITAL LETTER INSULAR D */ + /*3249*/ 0xa77c, 1, 0xa77b, /* LATIN CAPITAL LETTER INSULAR F */ + /*3252*/ 0xa77f, 1, 0xa77e, /* LATIN CAPITAL LETTER TURNED INSUL.. */ + /*3255*/ 0xa781, 1, 0xa780, /* LATIN CAPITAL LETTER TURNED L */ + /*3258*/ 0xa783, 1, 0xa782, /* LATIN CAPITAL LETTER INSULAR R */ + /*3261*/ 0xa785, 1, 0xa784, /* LATIN CAPITAL LETTER INSULAR S */ + /*3264*/ 0xa787, 1, 0xa786, /* LATIN CAPITAL LETTER INSULAR T */ + /*3267*/ 0xa78c, 1, 0xa78b, /* LATIN CAPITAL LETTER SALTILLO */ + /*3270*/ 0xa791, 1, 0xa790, /* LATIN CAPITAL LETTER N WITH DESCE.. */ + /*3273*/ 0xa793, 1, 0xa792, /* LATIN CAPITAL LETTER C WITH BAR */ + /*3276*/ 0xa794, 1, 0xa7c4, /* LATIN CAPITAL LETTER C WITH PALAT.. */ + /*3279*/ 0xa797, 1, 0xa796, /* LATIN CAPITAL LETTER B WITH FLOUR.. */ + /*3282*/ 0xa799, 1, 0xa798, /* LATIN CAPITAL LETTER F WITH STROKE */ + /*3285*/ 0xa79b, 1, 0xa79a, /* LATIN CAPITAL LETTER VOLAPUK AE */ + /*3288*/ 0xa79d, 1, 0xa79c, /* LATIN CAPITAL LETTER VOLAPUK OE */ + /*3291*/ 0xa79f, 1, 0xa79e, /* LATIN CAPITAL LETTER VOLAPUK UE */ + /*3294*/ 0xa7a1, 1, 0xa7a0, /* LATIN CAPITAL LETTER G WITH OBLIQ.. */ + /*3297*/ 0xa7a3, 1, 0xa7a2, /* LATIN CAPITAL LETTER K WITH OBLIQ.. */ + /*3300*/ 0xa7a5, 1, 0xa7a4, /* LATIN CAPITAL LETTER N WITH OBLIQ.. */ + /*3303*/ 0xa7a7, 1, 0xa7a6, /* LATIN CAPITAL LETTER R WITH OBLIQ.. */ + /*3306*/ 0xa7a9, 1, 0xa7a8, /* LATIN CAPITAL LETTER S WITH OBLIQ.. */ + /*3309*/ 0xa7b5, 1, 0xa7b4, /* LATIN CAPITAL LETTER BETA */ + /*3312*/ 0xa7b7, 1, 0xa7b6, /* LATIN CAPITAL LETTER OMEGA */ + /*3315*/ 0xa7b9, 1, 0xa7b8, /* LATIN CAPITAL LETTER U WITH STROKE */ + /*3318*/ 0xa7bb, 1, 0xa7ba, /* LATIN CAPITAL LETTER GLOTTAL A */ + /*3321*/ 0xa7bd, 1, 0xa7bc, /* LATIN CAPITAL LETTER GLOTTAL I */ + /*3324*/ 0xa7bf, 1, 0xa7be, /* LATIN CAPITAL LETTER GLOTTAL U */ + /*3327*/ 0xa7c3, 1, 0xa7c2, /* LATIN CAPITAL LETTER ANGLICANA W */ + /*3330*/ 0xab53, 1, 0xa7b3, /* LATIN CAPITAL LETTER CHI */ + /*3333*/ 0xff41, 1, 0xff21, /* FULLWIDTH LATIN CAPITAL LETTER A */ + /*3336*/ 0xff42, 1, 0xff22, /* FULLWIDTH LATIN CAPITAL LETTER B */ + /*3339*/ 0xff43, 1, 0xff23, /* FULLWIDTH LATIN CAPITAL LETTER C */ + /*3342*/ 0xff44, 1, 0xff24, /* FULLWIDTH LATIN CAPITAL LETTER D */ + /*3345*/ 0xff45, 1, 0xff25, /* FULLWIDTH LATIN CAPITAL LETTER E */ + /*3348*/ 0xff46, 1, 0xff26, /* FULLWIDTH LATIN CAPITAL LETTER F */ + /*3351*/ 0xff47, 1, 0xff27, /* FULLWIDTH LATIN CAPITAL LETTER G */ + /*3354*/ 0xff48, 1, 0xff28, /* FULLWIDTH LATIN CAPITAL LETTER H */ + /*3357*/ 0xff49, 1, 0xff29, /* FULLWIDTH LATIN CAPITAL LETTER I */ + /*3360*/ 0xff4a, 1, 0xff2a, /* FULLWIDTH LATIN CAPITAL LETTER J */ + /*3363*/ 0xff4b, 1, 0xff2b, /* FULLWIDTH LATIN CAPITAL LETTER K */ + /*3366*/ 0xff4c, 1, 0xff2c, /* FULLWIDTH LATIN CAPITAL LETTER L */ + /*3369*/ 0xff4d, 1, 0xff2d, /* FULLWIDTH LATIN CAPITAL LETTER M */ + /*3372*/ 0xff4e, 1, 0xff2e, /* FULLWIDTH LATIN CAPITAL LETTER N */ + /*3375*/ 0xff4f, 1, 0xff2f, /* FULLWIDTH LATIN CAPITAL LETTER O */ + /*3378*/ 0xff50, 1, 0xff30, /* FULLWIDTH LATIN CAPITAL LETTER P */ + /*3381*/ 0xff51, 1, 0xff31, /* FULLWIDTH LATIN CAPITAL LETTER Q */ + /*3384*/ 0xff52, 1, 0xff32, /* FULLWIDTH LATIN CAPITAL LETTER R */ + /*3387*/ 0xff53, 1, 0xff33, /* FULLWIDTH LATIN CAPITAL LETTER S */ + /*3390*/ 0xff54, 1, 0xff34, /* FULLWIDTH LATIN CAPITAL LETTER T */ + /*3393*/ 0xff55, 1, 0xff35, /* FULLWIDTH LATIN CAPITAL LETTER U */ + /*3396*/ 0xff56, 1, 0xff36, /* FULLWIDTH LATIN CAPITAL LETTER V */ + /*3399*/ 0xff57, 1, 0xff37, /* FULLWIDTH LATIN CAPITAL LETTER W */ + /*3402*/ 0xff58, 1, 0xff38, /* FULLWIDTH LATIN CAPITAL LETTER X */ + /*3405*/ 0xff59, 1, 0xff39, /* FULLWIDTH LATIN CAPITAL LETTER Y */ + /*3408*/ 0xff5a, 1, 0xff3a, /* FULLWIDTH LATIN CAPITAL LETTER Z */ + /*3411*/ 0x010428, 1, 0x010400, /* DESERET CAPITAL LETTER LONG I */ + /*3414*/ 0x010429, 1, 0x010401, /* DESERET CAPITAL LETTER LONG E */ + /*3417*/ 0x01042a, 1, 0x010402, /* DESERET CAPITAL LETTER LONG A */ + /*3420*/ 0x01042b, 1, 0x010403, /* DESERET CAPITAL LETTER LONG AH */ + /*3423*/ 0x01042c, 1, 0x010404, /* DESERET CAPITAL LETTER LONG O */ + /*3426*/ 0x01042d, 1, 0x010405, /* DESERET CAPITAL LETTER LONG OO */ + /*3429*/ 0x01042e, 1, 0x010406, /* DESERET CAPITAL LETTER SHORT I */ + /*3432*/ 0x01042f, 1, 0x010407, /* DESERET CAPITAL LETTER SHORT E */ + /*3435*/ 0x010430, 1, 0x010408, /* DESERET CAPITAL LETTER SHORT A */ + /*3438*/ 0x010431, 1, 0x010409, /* DESERET CAPITAL LETTER SHORT AH */ + /*3441*/ 0x010432, 1, 0x01040a, /* DESERET CAPITAL LETTER SHORT O */ + /*3444*/ 0x010433, 1, 0x01040b, /* DESERET CAPITAL LETTER SHORT OO */ + /*3447*/ 0x010434, 1, 0x01040c, /* DESERET CAPITAL LETTER AY */ + /*3450*/ 0x010435, 1, 0x01040d, /* DESERET CAPITAL LETTER OW */ + /*3453*/ 0x010436, 1, 0x01040e, /* DESERET CAPITAL LETTER WU */ + /*3456*/ 0x010437, 1, 0x01040f, /* DESERET CAPITAL LETTER YEE */ + /*3459*/ 0x010438, 1, 0x010410, /* DESERET CAPITAL LETTER H */ + /*3462*/ 0x010439, 1, 0x010411, /* DESERET CAPITAL LETTER PEE */ + /*3465*/ 0x01043a, 1, 0x010412, /* DESERET CAPITAL LETTER BEE */ + /*3468*/ 0x01043b, 1, 0x010413, /* DESERET CAPITAL LETTER TEE */ + /*3471*/ 0x01043c, 1, 0x010414, /* DESERET CAPITAL LETTER DEE */ + /*3474*/ 0x01043d, 1, 0x010415, /* DESERET CAPITAL LETTER CHEE */ + /*3477*/ 0x01043e, 1, 0x010416, /* DESERET CAPITAL LETTER JEE */ + /*3480*/ 0x01043f, 1, 0x010417, /* DESERET CAPITAL LETTER KAY */ + /*3483*/ 0x010440, 1, 0x010418, /* DESERET CAPITAL LETTER GAY */ + /*3486*/ 0x010441, 1, 0x010419, /* DESERET CAPITAL LETTER EF */ + /*3489*/ 0x010442, 1, 0x01041a, /* DESERET CAPITAL LETTER VEE */ + /*3492*/ 0x010443, 1, 0x01041b, /* DESERET CAPITAL LETTER ETH */ + /*3495*/ 0x010444, 1, 0x01041c, /* DESERET CAPITAL LETTER THEE */ + /*3498*/ 0x010445, 1, 0x01041d, /* DESERET CAPITAL LETTER ES */ + /*3501*/ 0x010446, 1, 0x01041e, /* DESERET CAPITAL LETTER ZEE */ + /*3504*/ 0x010447, 1, 0x01041f, /* DESERET CAPITAL LETTER ESH */ + /*3507*/ 0x010448, 1, 0x010420, /* DESERET CAPITAL LETTER ZHEE */ + /*3510*/ 0x010449, 1, 0x010421, /* DESERET CAPITAL LETTER ER */ + /*3513*/ 0x01044a, 1, 0x010422, /* DESERET CAPITAL LETTER EL */ + /*3516*/ 0x01044b, 1, 0x010423, /* DESERET CAPITAL LETTER EM */ + /*3519*/ 0x01044c, 1, 0x010424, /* DESERET CAPITAL LETTER EN */ + /*3522*/ 0x01044d, 1, 0x010425, /* DESERET CAPITAL LETTER ENG */ + /*3525*/ 0x01044e, 1, 0x010426, /* DESERET CAPITAL LETTER OI */ + /*3528*/ 0x01044f, 1, 0x010427, /* DESERET CAPITAL LETTER EW */ + /*3531*/ 0x0104d8, 1, 0x0104b0, /* OSAGE CAPITAL LETTER A */ + /*3534*/ 0x0104d9, 1, 0x0104b1, /* OSAGE CAPITAL LETTER AI */ + /*3537*/ 0x0104da, 1, 0x0104b2, /* OSAGE CAPITAL LETTER AIN */ + /*3540*/ 0x0104db, 1, 0x0104b3, /* OSAGE CAPITAL LETTER AH */ + /*3543*/ 0x0104dc, 1, 0x0104b4, /* OSAGE CAPITAL LETTER BRA */ + /*3546*/ 0x0104dd, 1, 0x0104b5, /* OSAGE CAPITAL LETTER CHA */ + /*3549*/ 0x0104de, 1, 0x0104b6, /* OSAGE CAPITAL LETTER EHCHA */ + /*3552*/ 0x0104df, 1, 0x0104b7, /* OSAGE CAPITAL LETTER E */ + /*3555*/ 0x0104e0, 1, 0x0104b8, /* OSAGE CAPITAL LETTER EIN */ + /*3558*/ 0x0104e1, 1, 0x0104b9, /* OSAGE CAPITAL LETTER HA */ + /*3561*/ 0x0104e2, 1, 0x0104ba, /* OSAGE CAPITAL LETTER HYA */ + /*3564*/ 0x0104e3, 1, 0x0104bb, /* OSAGE CAPITAL LETTER I */ + /*3567*/ 0x0104e4, 1, 0x0104bc, /* OSAGE CAPITAL LETTER KA */ + /*3570*/ 0x0104e5, 1, 0x0104bd, /* OSAGE CAPITAL LETTER EHKA */ + /*3573*/ 0x0104e6, 1, 0x0104be, /* OSAGE CAPITAL LETTER KYA */ + /*3576*/ 0x0104e7, 1, 0x0104bf, /* OSAGE CAPITAL LETTER LA */ + /*3579*/ 0x0104e8, 1, 0x0104c0, /* OSAGE CAPITAL LETTER MA */ + /*3582*/ 0x0104e9, 1, 0x0104c1, /* OSAGE CAPITAL LETTER NA */ + /*3585*/ 0x0104ea, 1, 0x0104c2, /* OSAGE CAPITAL LETTER O */ + /*3588*/ 0x0104eb, 1, 0x0104c3, /* OSAGE CAPITAL LETTER OIN */ + /*3591*/ 0x0104ec, 1, 0x0104c4, /* OSAGE CAPITAL LETTER PA */ + /*3594*/ 0x0104ed, 1, 0x0104c5, /* OSAGE CAPITAL LETTER EHPA */ + /*3597*/ 0x0104ee, 1, 0x0104c6, /* OSAGE CAPITAL LETTER SA */ + /*3600*/ 0x0104ef, 1, 0x0104c7, /* OSAGE CAPITAL LETTER SHA */ + /*3603*/ 0x0104f0, 1, 0x0104c8, /* OSAGE CAPITAL LETTER TA */ + /*3606*/ 0x0104f1, 1, 0x0104c9, /* OSAGE CAPITAL LETTER EHTA */ + /*3609*/ 0x0104f2, 1, 0x0104ca, /* OSAGE CAPITAL LETTER TSA */ + /*3612*/ 0x0104f3, 1, 0x0104cb, /* OSAGE CAPITAL LETTER EHTSA */ + /*3615*/ 0x0104f4, 1, 0x0104cc, /* OSAGE CAPITAL LETTER TSHA */ + /*3618*/ 0x0104f5, 1, 0x0104cd, /* OSAGE CAPITAL LETTER DHA */ + /*3621*/ 0x0104f6, 1, 0x0104ce, /* OSAGE CAPITAL LETTER U */ + /*3624*/ 0x0104f7, 1, 0x0104cf, /* OSAGE CAPITAL LETTER WA */ + /*3627*/ 0x0104f8, 1, 0x0104d0, /* OSAGE CAPITAL LETTER KHA */ + /*3630*/ 0x0104f9, 1, 0x0104d1, /* OSAGE CAPITAL LETTER GHA */ + /*3633*/ 0x0104fa, 1, 0x0104d2, /* OSAGE CAPITAL LETTER ZA */ + /*3636*/ 0x0104fb, 1, 0x0104d3, /* OSAGE CAPITAL LETTER ZHA */ + /*3639*/ 0x010cc0, 1, 0x010c80, /* OLD HUNGARIAN CAPITAL LETTER A */ + /*3642*/ 0x010cc1, 1, 0x010c81, /* OLD HUNGARIAN CAPITAL LETTER AA */ + /*3645*/ 0x010cc2, 1, 0x010c82, /* OLD HUNGARIAN CAPITAL LETTER EB */ + /*3648*/ 0x010cc3, 1, 0x010c83, /* OLD HUNGARIAN CAPITAL LETTER AMB */ + /*3651*/ 0x010cc4, 1, 0x010c84, /* OLD HUNGARIAN CAPITAL LETTER EC */ + /*3654*/ 0x010cc5, 1, 0x010c85, /* OLD HUNGARIAN CAPITAL LETTER ENC */ + /*3657*/ 0x010cc6, 1, 0x010c86, /* OLD HUNGARIAN CAPITAL LETTER ECS */ + /*3660*/ 0x010cc7, 1, 0x010c87, /* OLD HUNGARIAN CAPITAL LETTER ED */ + /*3663*/ 0x010cc8, 1, 0x010c88, /* OLD HUNGARIAN CAPITAL LETTER AND */ + /*3666*/ 0x010cc9, 1, 0x010c89, /* OLD HUNGARIAN CAPITAL LETTER E */ + /*3669*/ 0x010cca, 1, 0x010c8a, /* OLD HUNGARIAN CAPITAL LETTER CLOS.. */ + /*3672*/ 0x010ccb, 1, 0x010c8b, /* OLD HUNGARIAN CAPITAL LETTER EE */ + /*3675*/ 0x010ccc, 1, 0x010c8c, /* OLD HUNGARIAN CAPITAL LETTER EF */ + /*3678*/ 0x010ccd, 1, 0x010c8d, /* OLD HUNGARIAN CAPITAL LETTER EG */ + /*3681*/ 0x010cce, 1, 0x010c8e, /* OLD HUNGARIAN CAPITAL LETTER EGY */ + /*3684*/ 0x010ccf, 1, 0x010c8f, /* OLD HUNGARIAN CAPITAL LETTER EH */ + /*3687*/ 0x010cd0, 1, 0x010c90, /* OLD HUNGARIAN CAPITAL LETTER I */ + /*3690*/ 0x010cd1, 1, 0x010c91, /* OLD HUNGARIAN CAPITAL LETTER II */ + /*3693*/ 0x010cd2, 1, 0x010c92, /* OLD HUNGARIAN CAPITAL LETTER EJ */ + /*3696*/ 0x010cd3, 1, 0x010c93, /* OLD HUNGARIAN CAPITAL LETTER EK */ + /*3699*/ 0x010cd4, 1, 0x010c94, /* OLD HUNGARIAN CAPITAL LETTER AK */ + /*3702*/ 0x010cd5, 1, 0x010c95, /* OLD HUNGARIAN CAPITAL LETTER UNK */ + /*3705*/ 0x010cd6, 1, 0x010c96, /* OLD HUNGARIAN CAPITAL LETTER EL */ + /*3708*/ 0x010cd7, 1, 0x010c97, /* OLD HUNGARIAN CAPITAL LETTER ELY */ + /*3711*/ 0x010cd8, 1, 0x010c98, /* OLD HUNGARIAN CAPITAL LETTER EM */ + /*3714*/ 0x010cd9, 1, 0x010c99, /* OLD HUNGARIAN CAPITAL LETTER EN */ + /*3717*/ 0x010cda, 1, 0x010c9a, /* OLD HUNGARIAN CAPITAL LETTER ENY */ + /*3720*/ 0x010cdb, 1, 0x010c9b, /* OLD HUNGARIAN CAPITAL LETTER O */ + /*3723*/ 0x010cdc, 1, 0x010c9c, /* OLD HUNGARIAN CAPITAL LETTER OO */ + /*3726*/ 0x010cdd, 1, 0x010c9d, /* OLD HUNGARIAN CAPITAL LETTER NIKO.. */ + /*3729*/ 0x010cde, 1, 0x010c9e, /* OLD HUNGARIAN CAPITAL LETTER RUDI.. */ + /*3732*/ 0x010cdf, 1, 0x010c9f, /* OLD HUNGARIAN CAPITAL LETTER OEE */ + /*3735*/ 0x010ce0, 1, 0x010ca0, /* OLD HUNGARIAN CAPITAL LETTER EP */ + /*3738*/ 0x010ce1, 1, 0x010ca1, /* OLD HUNGARIAN CAPITAL LETTER EMP */ + /*3741*/ 0x010ce2, 1, 0x010ca2, /* OLD HUNGARIAN CAPITAL LETTER ER */ + /*3744*/ 0x010ce3, 1, 0x010ca3, /* OLD HUNGARIAN CAPITAL LETTER SHOR.. */ + /*3747*/ 0x010ce4, 1, 0x010ca4, /* OLD HUNGARIAN CAPITAL LETTER ES */ + /*3750*/ 0x010ce5, 1, 0x010ca5, /* OLD HUNGARIAN CAPITAL LETTER ESZ */ + /*3753*/ 0x010ce6, 1, 0x010ca6, /* OLD HUNGARIAN CAPITAL LETTER ET */ + /*3756*/ 0x010ce7, 1, 0x010ca7, /* OLD HUNGARIAN CAPITAL LETTER ENT */ + /*3759*/ 0x010ce8, 1, 0x010ca8, /* OLD HUNGARIAN CAPITAL LETTER ETY */ + /*3762*/ 0x010ce9, 1, 0x010ca9, /* OLD HUNGARIAN CAPITAL LETTER ECH */ + /*3765*/ 0x010cea, 1, 0x010caa, /* OLD HUNGARIAN CAPITAL LETTER U */ + /*3768*/ 0x010ceb, 1, 0x010cab, /* OLD HUNGARIAN CAPITAL LETTER UU */ + /*3771*/ 0x010cec, 1, 0x010cac, /* OLD HUNGARIAN CAPITAL LETTER NIKO.. */ + /*3774*/ 0x010ced, 1, 0x010cad, /* OLD HUNGARIAN CAPITAL LETTER RUDI.. */ + /*3777*/ 0x010cee, 1, 0x010cae, /* OLD HUNGARIAN CAPITAL LETTER EV */ + /*3780*/ 0x010cef, 1, 0x010caf, /* OLD HUNGARIAN CAPITAL LETTER EZ */ + /*3783*/ 0x010cf0, 1, 0x010cb0, /* OLD HUNGARIAN CAPITAL LETTER EZS */ + /*3786*/ 0x010cf1, 1, 0x010cb1, /* OLD HUNGARIAN CAPITAL LETTER ENT-.. */ + /*3789*/ 0x010cf2, 1, 0x010cb2, /* OLD HUNGARIAN CAPITAL LETTER US */ + /*3792*/ 0x0118c0, 1, 0x0118a0, /* WARANG CITI CAPITAL LETTER NGAA */ + /*3795*/ 0x0118c1, 1, 0x0118a1, /* WARANG CITI CAPITAL LETTER A */ + /*3798*/ 0x0118c2, 1, 0x0118a2, /* WARANG CITI CAPITAL LETTER WI */ + /*3801*/ 0x0118c3, 1, 0x0118a3, /* WARANG CITI CAPITAL LETTER YU */ + /*3804*/ 0x0118c4, 1, 0x0118a4, /* WARANG CITI CAPITAL LETTER YA */ + /*3807*/ 0x0118c5, 1, 0x0118a5, /* WARANG CITI CAPITAL LETTER YO */ + /*3810*/ 0x0118c6, 1, 0x0118a6, /* WARANG CITI CAPITAL LETTER II */ + /*3813*/ 0x0118c7, 1, 0x0118a7, /* WARANG CITI CAPITAL LETTER UU */ + /*3816*/ 0x0118c8, 1, 0x0118a8, /* WARANG CITI CAPITAL LETTER E */ + /*3819*/ 0x0118c9, 1, 0x0118a9, /* WARANG CITI CAPITAL LETTER O */ + /*3822*/ 0x0118ca, 1, 0x0118aa, /* WARANG CITI CAPITAL LETTER ANG */ + /*3825*/ 0x0118cb, 1, 0x0118ab, /* WARANG CITI CAPITAL LETTER GA */ + /*3828*/ 0x0118cc, 1, 0x0118ac, /* WARANG CITI CAPITAL LETTER KO */ + /*3831*/ 0x0118cd, 1, 0x0118ad, /* WARANG CITI CAPITAL LETTER ENY */ + /*3834*/ 0x0118ce, 1, 0x0118ae, /* WARANG CITI CAPITAL LETTER YUJ */ + /*3837*/ 0x0118cf, 1, 0x0118af, /* WARANG CITI CAPITAL LETTER UC */ + /*3840*/ 0x0118d0, 1, 0x0118b0, /* WARANG CITI CAPITAL LETTER ENN */ + /*3843*/ 0x0118d1, 1, 0x0118b1, /* WARANG CITI CAPITAL LETTER ODD */ + /*3846*/ 0x0118d2, 1, 0x0118b2, /* WARANG CITI CAPITAL LETTER TTE */ + /*3849*/ 0x0118d3, 1, 0x0118b3, /* WARANG CITI CAPITAL LETTER NUNG */ + /*3852*/ 0x0118d4, 1, 0x0118b4, /* WARANG CITI CAPITAL LETTER DA */ + /*3855*/ 0x0118d5, 1, 0x0118b5, /* WARANG CITI CAPITAL LETTER AT */ + /*3858*/ 0x0118d6, 1, 0x0118b6, /* WARANG CITI CAPITAL LETTER AM */ + /*3861*/ 0x0118d7, 1, 0x0118b7, /* WARANG CITI CAPITAL LETTER BU */ + /*3864*/ 0x0118d8, 1, 0x0118b8, /* WARANG CITI CAPITAL LETTER PU */ + /*3867*/ 0x0118d9, 1, 0x0118b9, /* WARANG CITI CAPITAL LETTER HIYO */ + /*3870*/ 0x0118da, 1, 0x0118ba, /* WARANG CITI CAPITAL LETTER HOLO */ + /*3873*/ 0x0118db, 1, 0x0118bb, /* WARANG CITI CAPITAL LETTER HORR */ + /*3876*/ 0x0118dc, 1, 0x0118bc, /* WARANG CITI CAPITAL LETTER HAR */ + /*3879*/ 0x0118dd, 1, 0x0118bd, /* WARANG CITI CAPITAL LETTER SSUU */ + /*3882*/ 0x0118de, 1, 0x0118be, /* WARANG CITI CAPITAL LETTER SII */ + /*3885*/ 0x0118df, 1, 0x0118bf, /* WARANG CITI CAPITAL LETTER VIYO */ + /*3888*/ 0x016e60, 1, 0x016e40, /* MEDEFAIDRIN CAPITAL LETTER M */ + /*3891*/ 0x016e61, 1, 0x016e41, /* MEDEFAIDRIN CAPITAL LETTER S */ + /*3894*/ 0x016e62, 1, 0x016e42, /* MEDEFAIDRIN CAPITAL LETTER V */ + /*3897*/ 0x016e63, 1, 0x016e43, /* MEDEFAIDRIN CAPITAL LETTER W */ + /*3900*/ 0x016e64, 1, 0x016e44, /* MEDEFAIDRIN CAPITAL LETTER ATIU */ + /*3903*/ 0x016e65, 1, 0x016e45, /* MEDEFAIDRIN CAPITAL LETTER Z */ + /*3906*/ 0x016e66, 1, 0x016e46, /* MEDEFAIDRIN CAPITAL LETTER KP */ + /*3909*/ 0x016e67, 1, 0x016e47, /* MEDEFAIDRIN CAPITAL LETTER P */ + /*3912*/ 0x016e68, 1, 0x016e48, /* MEDEFAIDRIN CAPITAL LETTER T */ + /*3915*/ 0x016e69, 1, 0x016e49, /* MEDEFAIDRIN CAPITAL LETTER G */ + /*3918*/ 0x016e6a, 1, 0x016e4a, /* MEDEFAIDRIN CAPITAL LETTER F */ + /*3921*/ 0x016e6b, 1, 0x016e4b, /* MEDEFAIDRIN CAPITAL LETTER I */ + /*3924*/ 0x016e6c, 1, 0x016e4c, /* MEDEFAIDRIN CAPITAL LETTER K */ + /*3927*/ 0x016e6d, 1, 0x016e4d, /* MEDEFAIDRIN CAPITAL LETTER A */ + /*3930*/ 0x016e6e, 1, 0x016e4e, /* MEDEFAIDRIN CAPITAL LETTER J */ + /*3933*/ 0x016e6f, 1, 0x016e4f, /* MEDEFAIDRIN CAPITAL LETTER E */ + /*3936*/ 0x016e70, 1, 0x016e50, /* MEDEFAIDRIN CAPITAL LETTER B */ + /*3939*/ 0x016e71, 1, 0x016e51, /* MEDEFAIDRIN CAPITAL LETTER C */ + /*3942*/ 0x016e72, 1, 0x016e52, /* MEDEFAIDRIN CAPITAL LETTER U */ + /*3945*/ 0x016e73, 1, 0x016e53, /* MEDEFAIDRIN CAPITAL LETTER YU */ + /*3948*/ 0x016e74, 1, 0x016e54, /* MEDEFAIDRIN CAPITAL LETTER L */ + /*3951*/ 0x016e75, 1, 0x016e55, /* MEDEFAIDRIN CAPITAL LETTER Q */ + /*3954*/ 0x016e76, 1, 0x016e56, /* MEDEFAIDRIN CAPITAL LETTER HP */ + /*3957*/ 0x016e77, 1, 0x016e57, /* MEDEFAIDRIN CAPITAL LETTER NY */ + /*3960*/ 0x016e78, 1, 0x016e58, /* MEDEFAIDRIN CAPITAL LETTER X */ + /*3963*/ 0x016e79, 1, 0x016e59, /* MEDEFAIDRIN CAPITAL LETTER D */ + /*3966*/ 0x016e7a, 1, 0x016e5a, /* MEDEFAIDRIN CAPITAL LETTER OE */ + /*3969*/ 0x016e7b, 1, 0x016e5b, /* MEDEFAIDRIN CAPITAL LETTER N */ + /*3972*/ 0x016e7c, 1, 0x016e5c, /* MEDEFAIDRIN CAPITAL LETTER R */ + /*3975*/ 0x016e7d, 1, 0x016e5d, /* MEDEFAIDRIN CAPITAL LETTER O */ + /*3978*/ 0x016e7e, 1, 0x016e5e, /* MEDEFAIDRIN CAPITAL LETTER AI */ + /*3981*/ 0x016e7f, 1, 0x016e5f, /* MEDEFAIDRIN CAPITAL LETTER Y */ + /*3984*/ 0x01e922, 1, 0x01e900, /* ADLAM CAPITAL LETTER ALIF */ + /*3987*/ 0x01e923, 1, 0x01e901, /* ADLAM CAPITAL LETTER DAALI */ + /*3990*/ 0x01e924, 1, 0x01e902, /* ADLAM CAPITAL LETTER LAAM */ + /*3993*/ 0x01e925, 1, 0x01e903, /* ADLAM CAPITAL LETTER MIIM */ + /*3996*/ 0x01e926, 1, 0x01e904, /* ADLAM CAPITAL LETTER BA */ + /*3999*/ 0x01e927, 1, 0x01e905, /* ADLAM CAPITAL LETTER SINNYIIYHE */ + /*4002*/ 0x01e928, 1, 0x01e906, /* ADLAM CAPITAL LETTER PE */ + /*4005*/ 0x01e929, 1, 0x01e907, /* ADLAM CAPITAL LETTER BHE */ + /*4008*/ 0x01e92a, 1, 0x01e908, /* ADLAM CAPITAL LETTER RA */ + /*4011*/ 0x01e92b, 1, 0x01e909, /* ADLAM CAPITAL LETTER E */ + /*4014*/ 0x01e92c, 1, 0x01e90a, /* ADLAM CAPITAL LETTER FA */ + /*4017*/ 0x01e92d, 1, 0x01e90b, /* ADLAM CAPITAL LETTER I */ + /*4020*/ 0x01e92e, 1, 0x01e90c, /* ADLAM CAPITAL LETTER O */ + /*4023*/ 0x01e92f, 1, 0x01e90d, /* ADLAM CAPITAL LETTER DHA */ + /*4026*/ 0x01e930, 1, 0x01e90e, /* ADLAM CAPITAL LETTER YHE */ + /*4029*/ 0x01e931, 1, 0x01e90f, /* ADLAM CAPITAL LETTER WAW */ + /*4032*/ 0x01e932, 1, 0x01e910, /* ADLAM CAPITAL LETTER NUN */ + /*4035*/ 0x01e933, 1, 0x01e911, /* ADLAM CAPITAL LETTER KAF */ + /*4038*/ 0x01e934, 1, 0x01e912, /* ADLAM CAPITAL LETTER YA */ + /*4041*/ 0x01e935, 1, 0x01e913, /* ADLAM CAPITAL LETTER U */ + /*4044*/ 0x01e936, 1, 0x01e914, /* ADLAM CAPITAL LETTER JIIM */ + /*4047*/ 0x01e937, 1, 0x01e915, /* ADLAM CAPITAL LETTER CHI */ + /*4050*/ 0x01e938, 1, 0x01e916, /* ADLAM CAPITAL LETTER HA */ + /*4053*/ 0x01e939, 1, 0x01e917, /* ADLAM CAPITAL LETTER QAAF */ + /*4056*/ 0x01e93a, 1, 0x01e918, /* ADLAM CAPITAL LETTER GA */ + /*4059*/ 0x01e93b, 1, 0x01e919, /* ADLAM CAPITAL LETTER NYA */ + /*4062*/ 0x01e93c, 1, 0x01e91a, /* ADLAM CAPITAL LETTER TU */ + /*4065*/ 0x01e93d, 1, 0x01e91b, /* ADLAM CAPITAL LETTER NHA */ + /*4068*/ 0x01e93e, 1, 0x01e91c, /* ADLAM CAPITAL LETTER VA */ + /*4071*/ 0x01e93f, 1, 0x01e91d, /* ADLAM CAPITAL LETTER KHA */ + /*4074*/ 0x01e940, 1, 0x01e91e, /* ADLAM CAPITAL LETTER GBE */ + /*4077*/ 0x01e941, 1, 0x01e91f, /* ADLAM CAPITAL LETTER ZAL */ + /*4080*/ 0x01e942, 1, 0x01e920, /* ADLAM CAPITAL LETTER KPO */ + /*4083*/ 0x01e943, 1, 0x01e921, /* ADLAM CAPITAL LETTER SHA */ +#define FOLDS1_NORMAL_END_INDEX 4086 /* ----- LOCALE ----- */ - /*4065*/ 0x0069, 1, 0x0049, /* LATIN CAPITAL LETTER I */ -#define FOLDS1_END_INDEX 4068 + /*4086*/ 0x0069, 1, 0x0049, /* LATIN CAPITAL LETTER I */ +#define FOLDS1_END_INDEX 4089 }; OnigCodePoint OnigUnicodeFolds2[] = { @@ -1513,4 +1520,3 @@ OnigCodePoint OnigUnicodeFolds3[] = { /* ----- 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 index 06f6f13bdd..b06997b831 100644 --- a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_property_data.c +++ b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_property_data.c @@ -1,5 +1,5 @@ /* 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 */ +/* Command-line: /usr/local/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) \ @@ -42,7 +42,7 @@ CR_NEWLINE[] = { 1, /* PROPERTY: 'Alpha': POSIX [[:Alpha:]] */ static const OnigCodePoint -CR_Alpha[] = { 676, +CR_Alpha[] = { 679, 0x0041, 0x005a, 0x0061, 0x007a, 0x00aa, 0x00aa, @@ -226,16 +226,10 @@ CR_Alpha[] = { 676, 0x0e4d, 0x0e4d, 0x0e81, 0x0e82, 0x0e84, 0x0e84, -0x0e87, 0x0e88, -0x0e8a, 0x0e8a, -0x0e8d, 0x0e8d, -0x0e94, 0x0e97, -0x0e99, 0x0e9f, -0x0ea1, 0x0ea3, +0x0e86, 0x0e8a, +0x0e8c, 0x0ea3, 0x0ea5, 0x0ea5, -0x0ea7, 0x0ea7, -0x0eaa, 0x0eab, -0x0ead, 0x0eb9, +0x0ea7, 0x0eb9, 0x0ebb, 0x0ebd, 0x0ec0, 0x0ec4, 0x0ec6, 0x0ec6, @@ -250,11 +244,8 @@ CR_Alpha[] = { 676, 0x1000, 0x1036, 0x1038, 0x1038, 0x103b, 0x103f, -0x1050, 0x1062, -0x1065, 0x1068, -0x106e, 0x1086, -0x108e, 0x108e, -0x109c, 0x109d, +0x1050, 0x108f, +0x109a, 0x109d, 0x10a0, 0x10c5, 0x10c7, 0x10c7, 0x10cd, 0x10cd, @@ -275,7 +266,6 @@ CR_Alpha[] = { 676, 0x12d8, 0x1310, 0x1312, 0x1315, 0x1318, 0x135a, -0x135f, 0x135f, 0x1380, 0x138f, 0x13a0, 0x13f5, 0x13f8, 0x13fd, @@ -316,7 +306,7 @@ CR_Alpha[] = { 676, 0x1bac, 0x1baf, 0x1bba, 0x1be5, 0x1be7, 0x1bf1, -0x1c00, 0x1c35, +0x1c00, 0x1c36, 0x1c4d, 0x1c4f, 0x1c5a, 0x1c7d, 0x1c80, 0x1c88, @@ -325,6 +315,7 @@ CR_Alpha[] = { 676, 0x1ce9, 0x1cec, 0x1cee, 0x1cf3, 0x1cf5, 0x1cf6, +0x1cfa, 0x1cfa, 0x1d00, 0x1dbf, 0x1de7, 0x1df4, 0x1e00, 0x1f15, @@ -409,31 +400,28 @@ CR_Alpha[] = { 676, 0xa67f, 0xa6ef, 0xa717, 0xa71f, 0xa722, 0xa788, -0xa78b, 0xa7b9, -0xa7f7, 0xa801, -0xa803, 0xa805, -0xa807, 0xa80a, -0xa80c, 0xa827, +0xa78b, 0xa7bf, +0xa7c2, 0xa7c6, +0xa7f7, 0xa805, +0xa807, 0xa827, 0xa840, 0xa873, 0xa880, 0xa8c3, 0xa8c5, 0xa8c5, 0xa8f2, 0xa8f7, 0xa8fb, 0xa8fb, -0xa8fd, 0xa8fe, +0xa8fd, 0xa8ff, 0xa90a, 0xa92a, 0xa930, 0xa952, 0xa960, 0xa97c, 0xa980, 0xa9b2, 0xa9b4, 0xa9bf, 0xa9cf, 0xa9cf, -0xa9e0, 0xa9e4, -0xa9e6, 0xa9ef, +0xa9e0, 0xa9ef, 0xa9fa, 0xa9fe, 0xaa00, 0xaa36, 0xaa40, 0xaa4d, 0xaa60, 0xaa76, -0xaa7a, 0xaa7a, -0xaa7e, 0xaabe, +0xaa7a, 0xaabe, 0xaac0, 0xaac0, 0xaac2, 0xaac2, 0xaadb, 0xaadd, @@ -445,7 +433,7 @@ CR_Alpha[] = { 676, 0xab20, 0xab26, 0xab28, 0xab2e, 0xab30, 0xab5a, -0xab5c, 0xab65, +0xab5c, 0xab67, 0xab70, 0xabea, 0xac00, 0xd7a3, 0xd7b0, 0xd7c6, @@ -533,6 +521,7 @@ CR_Alpha[] = { 676, 0x10f00, 0x10f1c, 0x10f27, 0x10f27, 0x10f30, 0x10f45, +0x10fe0, 0x10ff6, 0x11000, 0x11045, 0x11082, 0x110b8, 0x110d0, 0x110e8, @@ -570,6 +559,7 @@ CR_Alpha[] = { 676, 0x11400, 0x11441, 0x11443, 0x11445, 0x11447, 0x1144a, +0x1145f, 0x1145f, 0x11480, 0x114c1, 0x114c4, 0x114c5, 0x114c7, 0x114c7, @@ -580,15 +570,20 @@ CR_Alpha[] = { 676, 0x11640, 0x11640, 0x11644, 0x11644, 0x11680, 0x116b5, +0x116b8, 0x116b8, 0x11700, 0x1171a, 0x1171d, 0x1172a, 0x11800, 0x11838, 0x118a0, 0x118df, 0x118ff, 0x118ff, +0x119a0, 0x119a7, +0x119aa, 0x119d7, +0x119da, 0x119df, +0x119e1, 0x119e1, +0x119e3, 0x119e4, 0x11a00, 0x11a32, 0x11a35, 0x11a3e, -0x11a50, 0x11a83, -0x11a86, 0x11a97, +0x11a50, 0x11a97, 0x11a9d, 0x11a9d, 0x11ac0, 0x11af8, 0x11c00, 0x11c08, @@ -621,18 +616,21 @@ CR_Alpha[] = { 676, 0x16800, 0x16a38, 0x16a40, 0x16a5e, 0x16ad0, 0x16aed, -0x16b00, 0x16b36, +0x16b00, 0x16b2f, 0x16b40, 0x16b43, 0x16b63, 0x16b77, 0x16b7d, 0x16b8f, 0x16e40, 0x16e7f, -0x16f00, 0x16f44, -0x16f50, 0x16f7e, -0x16f93, 0x16f9f, +0x16f00, 0x16f4a, +0x16f4f, 0x16f87, +0x16f8f, 0x16f9f, 0x16fe0, 0x16fe1, -0x17000, 0x187f1, +0x16fe3, 0x16fe3, +0x17000, 0x187f7, 0x18800, 0x18af2, 0x1b000, 0x1b11e, +0x1b150, 0x1b152, +0x1b164, 0x1b167, 0x1b170, 0x1b2fb, 0x1bc00, 0x1bc6a, 0x1bc70, 0x1bc7c, @@ -674,9 +672,14 @@ CR_Alpha[] = { 676, 0x1e01b, 0x1e021, 0x1e023, 0x1e024, 0x1e026, 0x1e02a, +0x1e100, 0x1e12c, +0x1e137, 0x1e13d, +0x1e14e, 0x1e14e, +0x1e2c0, 0x1e2eb, 0x1e800, 0x1e8c4, 0x1e900, 0x1e943, 0x1e947, 0x1e947, +0x1e94b, 0x1e94b, 0x1ee00, 0x1ee03, 0x1ee05, 0x1ee1f, 0x1ee21, 0x1ee22, @@ -743,7 +746,7 @@ CR_Cntrl[] = { 2, /* PROPERTY: 'Digit': POSIX [[:Digit:]] */ static const OnigCodePoint -CR_Digit[] = { 57, +CR_Digit[] = { 59, 0x0030, 0x0039, 0x0660, 0x0669, 0x06f0, 0x06f9, @@ -800,12 +803,14 @@ CR_Digit[] = { 57, 0x16a60, 0x16a69, 0x16b50, 0x16b59, 0x1d7ce, 0x1d7ff, +0x1e140, 0x1e149, +0x1e2f0, 0x1e2f9, 0x1e950, 0x1e959, }; /* END of CR_Digit */ /* PROPERTY: 'Graph': POSIX [[:Graph:]] */ static const OnigCodePoint -CR_Graph[] = { 663, +CR_Graph[] = { 671, 0x0021, 0x007e, 0x00a1, 0x0377, 0x037a, 0x037f, @@ -916,7 +921,7 @@ CR_Graph[] = { 663, 0x0c58, 0x0c5a, 0x0c60, 0x0c63, 0x0c66, 0x0c6f, -0x0c78, 0x0c8c, +0x0c77, 0x0c8c, 0x0c8e, 0x0c90, 0x0c92, 0x0ca8, 0x0caa, 0x0cb3, @@ -953,17 +958,10 @@ CR_Graph[] = { 663, 0x0e3f, 0x0e5b, 0x0e81, 0x0e82, 0x0e84, 0x0e84, -0x0e87, 0x0e88, -0x0e8a, 0x0e8a, -0x0e8d, 0x0e8d, -0x0e94, 0x0e97, -0x0e99, 0x0e9f, -0x0ea1, 0x0ea3, +0x0e86, 0x0e8a, +0x0e8c, 0x0ea3, 0x0ea5, 0x0ea5, -0x0ea7, 0x0ea7, -0x0eaa, 0x0eab, -0x0ead, 0x0eb9, -0x0ebb, 0x0ebd, +0x0ea7, 0x0ebd, 0x0ec0, 0x0ec4, 0x0ec6, 0x0ec6, 0x0ec8, 0x0ecd, @@ -1040,7 +1038,7 @@ CR_Graph[] = { 663, 0x1c4d, 0x1c88, 0x1c90, 0x1cba, 0x1cbd, 0x1cc7, -0x1cd0, 0x1cf9, +0x1cd0, 0x1cfa, 0x1d00, 0x1df9, 0x1dfb, 0x1f15, 0x1f18, 0x1f1d, @@ -1072,9 +1070,7 @@ CR_Graph[] = { 663, 0x2440, 0x244a, 0x2460, 0x2b73, 0x2b76, 0x2b95, -0x2b98, 0x2bc8, -0x2bca, 0x2bfe, -0x2c00, 0x2c2e, +0x2b98, 0x2c2e, 0x2c30, 0x2c5e, 0x2c60, 0x2cf3, 0x2cf9, 0x2d25, @@ -1091,7 +1087,7 @@ CR_Graph[] = { 663, 0x2dc8, 0x2dce, 0x2dd0, 0x2dd6, 0x2dd8, 0x2dde, -0x2de0, 0x2e4e, +0x2de0, 0x2e4f, 0x2e80, 0x2e99, 0x2e9b, 0x2ef3, 0x2f00, 0x2fd5, @@ -1104,14 +1100,14 @@ CR_Graph[] = { 663, 0x3190, 0x31ba, 0x31c0, 0x31e3, 0x31f0, 0x321e, -0x3220, 0x32fe, -0x3300, 0x4db5, +0x3220, 0x4db5, 0x4dc0, 0x9fef, 0xa000, 0xa48c, 0xa490, 0xa4c6, 0xa4d0, 0xa62b, 0xa640, 0xa6f7, -0xa700, 0xa7b9, +0xa700, 0xa7bf, +0xa7c2, 0xa7c6, 0xa7f7, 0xa82b, 0xa830, 0xa839, 0xa840, 0xa877, @@ -1132,7 +1128,7 @@ CR_Graph[] = { 663, 0xab11, 0xab16, 0xab20, 0xab26, 0xab28, 0xab2e, -0xab30, 0xab65, +0xab30, 0xab67, 0xab70, 0xabed, 0xabf0, 0xabf9, 0xac00, 0xd7a3, @@ -1239,6 +1235,7 @@ CR_Graph[] = { 663, 0x10e60, 0x10e7e, 0x10f00, 0x10f27, 0x10f30, 0x10f59, +0x10fe0, 0x10ff6, 0x11000, 0x1104d, 0x11052, 0x1106f, 0x1107f, 0x110c1, @@ -1277,7 +1274,7 @@ CR_Graph[] = { 663, 0x11370, 0x11374, 0x11400, 0x11459, 0x1145b, 0x1145b, -0x1145d, 0x1145e, +0x1145d, 0x1145f, 0x11480, 0x114c7, 0x114d0, 0x114d9, 0x11580, 0x115b5, @@ -1285,7 +1282,7 @@ CR_Graph[] = { 663, 0x11600, 0x11644, 0x11650, 0x11659, 0x11660, 0x1166c, -0x11680, 0x116b7, +0x11680, 0x116b8, 0x116c0, 0x116c9, 0x11700, 0x1171a, 0x1171d, 0x1172b, @@ -1293,9 +1290,11 @@ CR_Graph[] = { 663, 0x11800, 0x1183b, 0x118a0, 0x118f2, 0x118ff, 0x118ff, +0x119a0, 0x119a7, +0x119aa, 0x119d7, +0x119da, 0x119e4, 0x11a00, 0x11a47, -0x11a50, 0x11a83, -0x11a86, 0x11aa2, +0x11a50, 0x11aa2, 0x11ac0, 0x11af8, 0x11c00, 0x11c08, 0x11c0a, 0x11c36, @@ -1318,11 +1317,13 @@ CR_Graph[] = { 663, 0x11d93, 0x11d98, 0x11da0, 0x11da9, 0x11ee0, 0x11ef8, -0x12000, 0x12399, +0x11fc0, 0x11ff1, +0x11fff, 0x12399, 0x12400, 0x1246e, 0x12470, 0x12474, 0x12480, 0x12543, 0x13000, 0x1342e, +0x13430, 0x13438, 0x14400, 0x14646, 0x16800, 0x16a38, 0x16a40, 0x16a5e, @@ -1336,13 +1337,15 @@ CR_Graph[] = { 663, 0x16b63, 0x16b77, 0x16b7d, 0x16b8f, 0x16e40, 0x16e9a, -0x16f00, 0x16f44, -0x16f50, 0x16f7e, +0x16f00, 0x16f4a, +0x16f4f, 0x16f87, 0x16f8f, 0x16f9f, -0x16fe0, 0x16fe1, -0x17000, 0x187f1, +0x16fe0, 0x16fe3, +0x17000, 0x187f7, 0x18800, 0x18af2, 0x1b000, 0x1b11e, +0x1b150, 0x1b152, +0x1b164, 0x1b167, 0x1b170, 0x1b2fb, 0x1bc00, 0x1bc6a, 0x1bc70, 0x1bc7c, @@ -1384,12 +1387,19 @@ CR_Graph[] = { 663, 0x1e01b, 0x1e021, 0x1e023, 0x1e024, 0x1e026, 0x1e02a, +0x1e100, 0x1e12c, +0x1e130, 0x1e13d, +0x1e140, 0x1e149, +0x1e14e, 0x1e14f, +0x1e2c0, 0x1e2f9, +0x1e2ff, 0x1e2ff, 0x1e800, 0x1e8c4, 0x1e8c7, 0x1e8d6, -0x1e900, 0x1e94a, +0x1e900, 0x1e94b, 0x1e950, 0x1e959, 0x1e95e, 0x1e95f, 0x1ec71, 0x1ecb4, +0x1ed01, 0x1ed3d, 0x1ee00, 0x1ee03, 0x1ee05, 0x1ee1f, 0x1ee21, 0x1ee22, @@ -1431,33 +1441,36 @@ CR_Graph[] = { 663, 0x1f0c1, 0x1f0cf, 0x1f0d1, 0x1f0f5, 0x1f100, 0x1f10c, -0x1f110, 0x1f16b, +0x1f110, 0x1f16c, 0x1f170, 0x1f1ac, 0x1f1e6, 0x1f202, 0x1f210, 0x1f23b, 0x1f240, 0x1f248, 0x1f250, 0x1f251, 0x1f260, 0x1f265, -0x1f300, 0x1f6d4, +0x1f300, 0x1f6d5, 0x1f6e0, 0x1f6ec, -0x1f6f0, 0x1f6f9, +0x1f6f0, 0x1f6fa, 0x1f700, 0x1f773, 0x1f780, 0x1f7d8, +0x1f7e0, 0x1f7eb, 0x1f800, 0x1f80b, 0x1f810, 0x1f847, 0x1f850, 0x1f859, 0x1f860, 0x1f887, 0x1f890, 0x1f8ad, 0x1f900, 0x1f90b, -0x1f910, 0x1f93e, -0x1f940, 0x1f970, +0x1f90d, 0x1f971, 0x1f973, 0x1f976, -0x1f97a, 0x1f97a, -0x1f97c, 0x1f9a2, -0x1f9b0, 0x1f9b9, -0x1f9c0, 0x1f9c2, -0x1f9d0, 0x1f9ff, +0x1f97a, 0x1f9a2, +0x1f9a5, 0x1f9aa, +0x1f9ae, 0x1f9ca, +0x1f9cd, 0x1fa53, 0x1fa60, 0x1fa6d, +0x1fa70, 0x1fa73, +0x1fa78, 0x1fa7a, +0x1fa80, 0x1fa82, +0x1fa90, 0x1fa95, 0x20000, 0x2a6d6, 0x2a700, 0x2b734, 0x2b740, 0x2b81d, @@ -1473,7 +1486,7 @@ CR_Graph[] = { 663, /* PROPERTY: 'Lower': POSIX [[:Lower:]] */ static const OnigCodePoint -CR_Lower[] = { 645, +CR_Lower[] = { 649, 0x0061, 0x007a, 0x00aa, 0x00aa, 0x00b5, 0x00b5, @@ -2078,9 +2091,13 @@ CR_Lower[] = { 645, 0xa7b5, 0xa7b5, 0xa7b7, 0xa7b7, 0xa7b9, 0xa7b9, +0xa7bb, 0xa7bb, +0xa7bd, 0xa7bd, +0xa7bf, 0xa7bf, +0xa7c3, 0xa7c3, 0xa7f8, 0xa7fa, 0xab30, 0xab5a, -0xab5c, 0xab65, +0xab5c, 0xab67, 0xab70, 0xabbf, 0xfb00, 0xfb06, 0xfb13, 0xfb17, @@ -2123,7 +2140,7 @@ CR_Lower[] = { 645, /* PROPERTY: 'Print': POSIX [[:Print:]] */ static const OnigCodePoint -CR_Print[] = { 660, +CR_Print[] = { 668, 0x0020, 0x007e, 0x00a0, 0x0377, 0x037a, 0x037f, @@ -2234,7 +2251,7 @@ CR_Print[] = { 660, 0x0c58, 0x0c5a, 0x0c60, 0x0c63, 0x0c66, 0x0c6f, -0x0c78, 0x0c8c, +0x0c77, 0x0c8c, 0x0c8e, 0x0c90, 0x0c92, 0x0ca8, 0x0caa, 0x0cb3, @@ -2271,17 +2288,10 @@ CR_Print[] = { 660, 0x0e3f, 0x0e5b, 0x0e81, 0x0e82, 0x0e84, 0x0e84, -0x0e87, 0x0e88, -0x0e8a, 0x0e8a, -0x0e8d, 0x0e8d, -0x0e94, 0x0e97, -0x0e99, 0x0e9f, -0x0ea1, 0x0ea3, +0x0e86, 0x0e8a, +0x0e8c, 0x0ea3, 0x0ea5, 0x0ea5, -0x0ea7, 0x0ea7, -0x0eaa, 0x0eab, -0x0ead, 0x0eb9, -0x0ebb, 0x0ebd, +0x0ea7, 0x0ebd, 0x0ec0, 0x0ec4, 0x0ec6, 0x0ec6, 0x0ec8, 0x0ecd, @@ -2357,7 +2367,7 @@ CR_Print[] = { 660, 0x1c4d, 0x1c88, 0x1c90, 0x1cba, 0x1cbd, 0x1cc7, -0x1cd0, 0x1cf9, +0x1cd0, 0x1cfa, 0x1d00, 0x1df9, 0x1dfb, 0x1f15, 0x1f18, 0x1f1d, @@ -2387,9 +2397,7 @@ CR_Print[] = { 660, 0x2440, 0x244a, 0x2460, 0x2b73, 0x2b76, 0x2b95, -0x2b98, 0x2bc8, -0x2bca, 0x2bfe, -0x2c00, 0x2c2e, +0x2b98, 0x2c2e, 0x2c30, 0x2c5e, 0x2c60, 0x2cf3, 0x2cf9, 0x2d25, @@ -2406,7 +2414,7 @@ CR_Print[] = { 660, 0x2dc8, 0x2dce, 0x2dd0, 0x2dd6, 0x2dd8, 0x2dde, -0x2de0, 0x2e4e, +0x2de0, 0x2e4f, 0x2e80, 0x2e99, 0x2e9b, 0x2ef3, 0x2f00, 0x2fd5, @@ -2419,14 +2427,14 @@ CR_Print[] = { 660, 0x3190, 0x31ba, 0x31c0, 0x31e3, 0x31f0, 0x321e, -0x3220, 0x32fe, -0x3300, 0x4db5, +0x3220, 0x4db5, 0x4dc0, 0x9fef, 0xa000, 0xa48c, 0xa490, 0xa4c6, 0xa4d0, 0xa62b, 0xa640, 0xa6f7, -0xa700, 0xa7b9, +0xa700, 0xa7bf, +0xa7c2, 0xa7c6, 0xa7f7, 0xa82b, 0xa830, 0xa839, 0xa840, 0xa877, @@ -2447,7 +2455,7 @@ CR_Print[] = { 660, 0xab11, 0xab16, 0xab20, 0xab26, 0xab28, 0xab2e, -0xab30, 0xab65, +0xab30, 0xab67, 0xab70, 0xabed, 0xabf0, 0xabf9, 0xac00, 0xd7a3, @@ -2554,6 +2562,7 @@ CR_Print[] = { 660, 0x10e60, 0x10e7e, 0x10f00, 0x10f27, 0x10f30, 0x10f59, +0x10fe0, 0x10ff6, 0x11000, 0x1104d, 0x11052, 0x1106f, 0x1107f, 0x110c1, @@ -2592,7 +2601,7 @@ CR_Print[] = { 660, 0x11370, 0x11374, 0x11400, 0x11459, 0x1145b, 0x1145b, -0x1145d, 0x1145e, +0x1145d, 0x1145f, 0x11480, 0x114c7, 0x114d0, 0x114d9, 0x11580, 0x115b5, @@ -2600,7 +2609,7 @@ CR_Print[] = { 660, 0x11600, 0x11644, 0x11650, 0x11659, 0x11660, 0x1166c, -0x11680, 0x116b7, +0x11680, 0x116b8, 0x116c0, 0x116c9, 0x11700, 0x1171a, 0x1171d, 0x1172b, @@ -2608,9 +2617,11 @@ CR_Print[] = { 660, 0x11800, 0x1183b, 0x118a0, 0x118f2, 0x118ff, 0x118ff, +0x119a0, 0x119a7, +0x119aa, 0x119d7, +0x119da, 0x119e4, 0x11a00, 0x11a47, -0x11a50, 0x11a83, -0x11a86, 0x11aa2, +0x11a50, 0x11aa2, 0x11ac0, 0x11af8, 0x11c00, 0x11c08, 0x11c0a, 0x11c36, @@ -2633,11 +2644,13 @@ CR_Print[] = { 660, 0x11d93, 0x11d98, 0x11da0, 0x11da9, 0x11ee0, 0x11ef8, -0x12000, 0x12399, +0x11fc0, 0x11ff1, +0x11fff, 0x12399, 0x12400, 0x1246e, 0x12470, 0x12474, 0x12480, 0x12543, 0x13000, 0x1342e, +0x13430, 0x13438, 0x14400, 0x14646, 0x16800, 0x16a38, 0x16a40, 0x16a5e, @@ -2651,13 +2664,15 @@ CR_Print[] = { 660, 0x16b63, 0x16b77, 0x16b7d, 0x16b8f, 0x16e40, 0x16e9a, -0x16f00, 0x16f44, -0x16f50, 0x16f7e, +0x16f00, 0x16f4a, +0x16f4f, 0x16f87, 0x16f8f, 0x16f9f, -0x16fe0, 0x16fe1, -0x17000, 0x187f1, +0x16fe0, 0x16fe3, +0x17000, 0x187f7, 0x18800, 0x18af2, 0x1b000, 0x1b11e, +0x1b150, 0x1b152, +0x1b164, 0x1b167, 0x1b170, 0x1b2fb, 0x1bc00, 0x1bc6a, 0x1bc70, 0x1bc7c, @@ -2699,12 +2714,19 @@ CR_Print[] = { 660, 0x1e01b, 0x1e021, 0x1e023, 0x1e024, 0x1e026, 0x1e02a, +0x1e100, 0x1e12c, +0x1e130, 0x1e13d, +0x1e140, 0x1e149, +0x1e14e, 0x1e14f, +0x1e2c0, 0x1e2f9, +0x1e2ff, 0x1e2ff, 0x1e800, 0x1e8c4, 0x1e8c7, 0x1e8d6, -0x1e900, 0x1e94a, +0x1e900, 0x1e94b, 0x1e950, 0x1e959, 0x1e95e, 0x1e95f, 0x1ec71, 0x1ecb4, +0x1ed01, 0x1ed3d, 0x1ee00, 0x1ee03, 0x1ee05, 0x1ee1f, 0x1ee21, 0x1ee22, @@ -2746,33 +2768,36 @@ CR_Print[] = { 660, 0x1f0c1, 0x1f0cf, 0x1f0d1, 0x1f0f5, 0x1f100, 0x1f10c, -0x1f110, 0x1f16b, +0x1f110, 0x1f16c, 0x1f170, 0x1f1ac, 0x1f1e6, 0x1f202, 0x1f210, 0x1f23b, 0x1f240, 0x1f248, 0x1f250, 0x1f251, 0x1f260, 0x1f265, -0x1f300, 0x1f6d4, +0x1f300, 0x1f6d5, 0x1f6e0, 0x1f6ec, -0x1f6f0, 0x1f6f9, +0x1f6f0, 0x1f6fa, 0x1f700, 0x1f773, 0x1f780, 0x1f7d8, +0x1f7e0, 0x1f7eb, 0x1f800, 0x1f80b, 0x1f810, 0x1f847, 0x1f850, 0x1f859, 0x1f860, 0x1f887, 0x1f890, 0x1f8ad, 0x1f900, 0x1f90b, -0x1f910, 0x1f93e, -0x1f940, 0x1f970, +0x1f90d, 0x1f971, 0x1f973, 0x1f976, -0x1f97a, 0x1f97a, -0x1f97c, 0x1f9a2, -0x1f9b0, 0x1f9b9, -0x1f9c0, 0x1f9c2, -0x1f9d0, 0x1f9ff, +0x1f97a, 0x1f9a2, +0x1f9a5, 0x1f9aa, +0x1f9ae, 0x1f9ca, +0x1f9cd, 0x1fa53, 0x1fa60, 0x1fa6d, +0x1fa70, 0x1fa73, +0x1fa78, 0x1fa7a, +0x1fa80, 0x1fa82, +0x1fa90, 0x1fa95, 0x20000, 0x2a6d6, 0x2a700, 0x2b734, 0x2b740, 0x2b81d, @@ -2788,7 +2813,7 @@ CR_Print[] = { 660, /* PROPERTY: 'Punct': POSIX [[:Punct:]] */ static const OnigCodePoint -CR_Punct[] = { 178, +CR_Punct[] = { 182, 0x0021, 0x0023, 0x0025, 0x002a, 0x002c, 0x002f, @@ -2828,6 +2853,7 @@ CR_Punct[] = { 178, 0x09fd, 0x09fd, 0x0a76, 0x0a76, 0x0af0, 0x0af0, +0x0c77, 0x0c77, 0x0c84, 0x0c84, 0x0df4, 0x0df4, 0x0e4f, 0x0e4f, @@ -2842,7 +2868,7 @@ CR_Punct[] = { 178, 0x10fb, 0x10fb, 0x1360, 0x1368, 0x1400, 0x1400, -0x166d, 0x166e, +0x166e, 0x166e, 0x169b, 0x169c, 0x16eb, 0x16ed, 0x1735, 0x1736, @@ -2877,7 +2903,7 @@ CR_Punct[] = { 178, 0x2cfe, 0x2cff, 0x2d70, 0x2d70, 0x2e00, 0x2e2e, -0x2e30, 0x2e4e, +0x2e30, 0x2e4f, 0x3001, 0x3003, 0x3008, 0x3011, 0x3014, 0x301f, @@ -2952,18 +2978,21 @@ CR_Punct[] = { 178, 0x11660, 0x1166c, 0x1173c, 0x1173e, 0x1183b, 0x1183b, +0x119e2, 0x119e2, 0x11a3f, 0x11a46, 0x11a9a, 0x11a9c, 0x11a9e, 0x11aa2, 0x11c41, 0x11c45, 0x11c70, 0x11c71, 0x11ef7, 0x11ef8, +0x11fff, 0x11fff, 0x12470, 0x12474, 0x16a6e, 0x16a6f, 0x16af5, 0x16af5, 0x16b37, 0x16b3b, 0x16b44, 0x16b44, 0x16e97, 0x16e9a, +0x16fe2, 0x16fe2, 0x1bc9f, 0x1bc9f, 0x1da87, 0x1da8b, 0x1e95e, 0x1e95f, @@ -2986,7 +3015,7 @@ CR_Space[] = { 10, /* PROPERTY: 'Upper': POSIX [[:Upper:]] */ static const OnigCodePoint -CR_Upper[] = { 636, +CR_Upper[] = { 641, 0x0041, 0x005a, 0x00c0, 0x00d6, 0x00d8, 0x00de, @@ -3582,6 +3611,11 @@ CR_Upper[] = { 636, 0xa7b0, 0xa7b4, 0xa7b6, 0xa7b6, 0xa7b8, 0xa7b8, +0xa7ba, 0xa7ba, +0xa7bc, 0xa7bc, +0xa7be, 0xa7be, +0xa7c2, 0xa7c2, +0xa7c4, 0xa7c6, 0xff21, 0xff3a, 0x10400, 0x10427, 0x104b0, 0x104d3, @@ -3635,7 +3669,7 @@ CR_XDigit[] = { 3, /* PROPERTY: 'Word': POSIX [[:Word:]] */ static const OnigCodePoint -CR_Word[] = { 710, +CR_Word[] = { 716, 0x0030, 0x0039, 0x0041, 0x005a, 0x005f, 0x005f, @@ -3820,17 +3854,10 @@ CR_Word[] = { 710, 0x0e50, 0x0e59, 0x0e81, 0x0e82, 0x0e84, 0x0e84, -0x0e87, 0x0e88, -0x0e8a, 0x0e8a, -0x0e8d, 0x0e8d, -0x0e94, 0x0e97, -0x0e99, 0x0e9f, -0x0ea1, 0x0ea3, +0x0e86, 0x0e8a, +0x0e8c, 0x0ea3, 0x0ea5, 0x0ea5, -0x0ea7, 0x0ea7, -0x0eaa, 0x0eab, -0x0ead, 0x0eb9, -0x0ebb, 0x0ebd, +0x0ea7, 0x0ebd, 0x0ec0, 0x0ec4, 0x0ec6, 0x0ec6, 0x0ec8, 0x0ecd, @@ -3921,7 +3948,7 @@ CR_Word[] = { 710, 0x1c90, 0x1cba, 0x1cbd, 0x1cbf, 0x1cd0, 0x1cd2, -0x1cd4, 0x1cf9, +0x1cd4, 0x1cfa, 0x1d00, 0x1df9, 0x1dfb, 0x1f15, 0x1f18, 0x1f1d, @@ -4007,7 +4034,8 @@ CR_Word[] = { 710, 0xa67f, 0xa6f1, 0xa717, 0xa71f, 0xa722, 0xa788, -0xa78b, 0xa7b9, +0xa78b, 0xa7bf, +0xa7c2, 0xa7c6, 0xa7f7, 0xa827, 0xa840, 0xa873, 0xa880, 0xa8c5, @@ -4034,7 +4062,7 @@ CR_Word[] = { 710, 0xab20, 0xab26, 0xab28, 0xab2e, 0xab30, 0xab5a, -0xab5c, 0xab65, +0xab5c, 0xab67, 0xab70, 0xabea, 0xabec, 0xabed, 0xabf0, 0xabf9, @@ -4136,6 +4164,7 @@ CR_Word[] = { 710, 0x10f00, 0x10f1c, 0x10f27, 0x10f27, 0x10f30, 0x10f50, +0x10fe0, 0x10ff6, 0x11000, 0x11046, 0x11066, 0x1106f, 0x1107f, 0x110ba, @@ -4177,7 +4206,7 @@ CR_Word[] = { 710, 0x11370, 0x11374, 0x11400, 0x1144a, 0x11450, 0x11459, -0x1145e, 0x1145e, +0x1145e, 0x1145f, 0x11480, 0x114c5, 0x114c7, 0x114c7, 0x114d0, 0x114d9, @@ -4187,7 +4216,7 @@ CR_Word[] = { 710, 0x11600, 0x11640, 0x11644, 0x11644, 0x11650, 0x11659, -0x11680, 0x116b7, +0x11680, 0x116b8, 0x116c0, 0x116c9, 0x11700, 0x1171a, 0x1171d, 0x1172b, @@ -4195,10 +4224,13 @@ CR_Word[] = { 710, 0x11800, 0x1183a, 0x118a0, 0x118e9, 0x118ff, 0x118ff, +0x119a0, 0x119a7, +0x119aa, 0x119d7, +0x119da, 0x119e1, +0x119e3, 0x119e4, 0x11a00, 0x11a3e, 0x11a47, 0x11a47, -0x11a50, 0x11a83, -0x11a86, 0x11a99, +0x11a50, 0x11a99, 0x11a9d, 0x11a9d, 0x11ac0, 0x11af8, 0x11c00, 0x11c08, @@ -4238,13 +4270,16 @@ CR_Word[] = { 710, 0x16b63, 0x16b77, 0x16b7d, 0x16b8f, 0x16e40, 0x16e7f, -0x16f00, 0x16f44, -0x16f50, 0x16f7e, +0x16f00, 0x16f4a, +0x16f4f, 0x16f87, 0x16f8f, 0x16f9f, 0x16fe0, 0x16fe1, -0x17000, 0x187f1, +0x16fe3, 0x16fe3, +0x17000, 0x187f7, 0x18800, 0x18af2, 0x1b000, 0x1b11e, +0x1b150, 0x1b152, +0x1b164, 0x1b167, 0x1b170, 0x1b2fb, 0x1bc00, 0x1bc6a, 0x1bc70, 0x1bc7c, @@ -4299,9 +4334,14 @@ CR_Word[] = { 710, 0x1e01b, 0x1e021, 0x1e023, 0x1e024, 0x1e026, 0x1e02a, +0x1e100, 0x1e12c, +0x1e130, 0x1e13d, +0x1e140, 0x1e149, +0x1e14e, 0x1e14e, +0x1e2c0, 0x1e2f9, 0x1e800, 0x1e8c4, 0x1e8d0, 0x1e8d6, -0x1e900, 0x1e94a, +0x1e900, 0x1e94b, 0x1e950, 0x1e959, 0x1ee00, 0x1ee03, 0x1ee05, 0x1ee1f, @@ -4350,7 +4390,7 @@ CR_Word[] = { 710, /* PROPERTY: 'Alnum': POSIX [[:Alnum:]] */ static const OnigCodePoint -CR_Alnum[] = { 713, +CR_Alnum[] = { 715, 0x0030, 0x0039, 0x0041, 0x005a, 0x0061, 0x007a, @@ -4543,16 +4583,10 @@ CR_Alnum[] = { 713, 0x0e50, 0x0e59, 0x0e81, 0x0e82, 0x0e84, 0x0e84, -0x0e87, 0x0e88, -0x0e8a, 0x0e8a, -0x0e8d, 0x0e8d, -0x0e94, 0x0e97, -0x0e99, 0x0e9f, -0x0ea1, 0x0ea3, +0x0e86, 0x0e8a, +0x0e8c, 0x0ea3, 0x0ea5, 0x0ea5, -0x0ea7, 0x0ea7, -0x0eaa, 0x0eab, -0x0ead, 0x0eb9, +0x0ea7, 0x0eb9, 0x0ebb, 0x0ebd, 0x0ec0, 0x0ec4, 0x0ec6, 0x0ec6, @@ -4569,12 +4603,7 @@ CR_Alnum[] = { 713, 0x1000, 0x1036, 0x1038, 0x1038, 0x103b, 0x1049, -0x1050, 0x1062, -0x1065, 0x1068, -0x106e, 0x1086, -0x108e, 0x108e, -0x1090, 0x1099, -0x109c, 0x109d, +0x1050, 0x109d, 0x10a0, 0x10c5, 0x10c7, 0x10c7, 0x10cd, 0x10cd, @@ -4595,7 +4624,6 @@ CR_Alnum[] = { 713, 0x12d8, 0x1310, 0x1312, 0x1315, 0x1318, 0x135a, -0x135f, 0x135f, 0x1380, 0x138f, 0x13a0, 0x13f5, 0x13f8, 0x13fd, @@ -4641,7 +4669,7 @@ CR_Alnum[] = { 713, 0x1b80, 0x1ba9, 0x1bac, 0x1be5, 0x1be7, 0x1bf1, -0x1c00, 0x1c35, +0x1c00, 0x1c36, 0x1c40, 0x1c49, 0x1c4d, 0x1c7d, 0x1c80, 0x1c88, @@ -4650,6 +4678,7 @@ CR_Alnum[] = { 713, 0x1ce9, 0x1cec, 0x1cee, 0x1cf3, 0x1cf5, 0x1cf6, +0x1cfa, 0x1cfa, 0x1d00, 0x1dbf, 0x1de7, 0x1df4, 0x1e00, 0x1f15, @@ -4733,32 +4762,28 @@ CR_Alnum[] = { 713, 0xa67f, 0xa6ef, 0xa717, 0xa71f, 0xa722, 0xa788, -0xa78b, 0xa7b9, -0xa7f7, 0xa801, -0xa803, 0xa805, -0xa807, 0xa80a, -0xa80c, 0xa827, +0xa78b, 0xa7bf, +0xa7c2, 0xa7c6, +0xa7f7, 0xa805, +0xa807, 0xa827, 0xa840, 0xa873, 0xa880, 0xa8c3, 0xa8c5, 0xa8c5, 0xa8d0, 0xa8d9, 0xa8f2, 0xa8f7, 0xa8fb, 0xa8fb, -0xa8fd, 0xa8fe, -0xa900, 0xa92a, +0xa8fd, 0xa92a, 0xa930, 0xa952, 0xa960, 0xa97c, 0xa980, 0xa9b2, 0xa9b4, 0xa9bf, 0xa9cf, 0xa9d9, -0xa9e0, 0xa9e4, -0xa9e6, 0xa9fe, +0xa9e0, 0xa9fe, 0xaa00, 0xaa36, 0xaa40, 0xaa4d, 0xaa50, 0xaa59, 0xaa60, 0xaa76, -0xaa7a, 0xaa7a, -0xaa7e, 0xaabe, +0xaa7a, 0xaabe, 0xaac0, 0xaac0, 0xaac2, 0xaac2, 0xaadb, 0xaadd, @@ -4770,7 +4795,7 @@ CR_Alnum[] = { 713, 0xab20, 0xab26, 0xab28, 0xab2e, 0xab30, 0xab5a, -0xab5c, 0xab65, +0xab5c, 0xab67, 0xab70, 0xabea, 0xabf0, 0xabf9, 0xac00, 0xd7a3, @@ -4862,6 +4887,7 @@ CR_Alnum[] = { 713, 0x10f00, 0x10f1c, 0x10f27, 0x10f27, 0x10f30, 0x10f45, +0x10fe0, 0x10ff6, 0x11000, 0x11045, 0x11066, 0x1106f, 0x11082, 0x110b8, @@ -4904,6 +4930,7 @@ CR_Alnum[] = { 713, 0x11443, 0x11445, 0x11447, 0x1144a, 0x11450, 0x11459, +0x1145f, 0x1145f, 0x11480, 0x114c1, 0x114c4, 0x114c5, 0x114c7, 0x114c7, @@ -4916,6 +4943,7 @@ CR_Alnum[] = { 713, 0x11644, 0x11644, 0x11650, 0x11659, 0x11680, 0x116b5, +0x116b8, 0x116b8, 0x116c0, 0x116c9, 0x11700, 0x1171a, 0x1171d, 0x1172a, @@ -4923,10 +4951,14 @@ CR_Alnum[] = { 713, 0x11800, 0x11838, 0x118a0, 0x118e9, 0x118ff, 0x118ff, +0x119a0, 0x119a7, +0x119aa, 0x119d7, +0x119da, 0x119df, +0x119e1, 0x119e1, +0x119e3, 0x119e4, 0x11a00, 0x11a32, 0x11a35, 0x11a3e, -0x11a50, 0x11a83, -0x11a86, 0x11a97, +0x11a50, 0x11a97, 0x11a9d, 0x11a9d, 0x11ac0, 0x11af8, 0x11c00, 0x11c08, @@ -4963,19 +4995,22 @@ CR_Alnum[] = { 713, 0x16a40, 0x16a5e, 0x16a60, 0x16a69, 0x16ad0, 0x16aed, -0x16b00, 0x16b36, +0x16b00, 0x16b2f, 0x16b40, 0x16b43, 0x16b50, 0x16b59, 0x16b63, 0x16b77, 0x16b7d, 0x16b8f, 0x16e40, 0x16e7f, -0x16f00, 0x16f44, -0x16f50, 0x16f7e, -0x16f93, 0x16f9f, +0x16f00, 0x16f4a, +0x16f4f, 0x16f87, +0x16f8f, 0x16f9f, 0x16fe0, 0x16fe1, -0x17000, 0x187f1, +0x16fe3, 0x16fe3, +0x17000, 0x187f7, 0x18800, 0x18af2, 0x1b000, 0x1b11e, +0x1b150, 0x1b152, +0x1b164, 0x1b167, 0x1b170, 0x1b2fb, 0x1bc00, 0x1bc6a, 0x1bc70, 0x1bc7c, @@ -5018,9 +5053,16 @@ CR_Alnum[] = { 713, 0x1e01b, 0x1e021, 0x1e023, 0x1e024, 0x1e026, 0x1e02a, +0x1e100, 0x1e12c, +0x1e137, 0x1e13d, +0x1e140, 0x1e149, +0x1e14e, 0x1e14e, +0x1e2c0, 0x1e2eb, +0x1e2f0, 0x1e2f9, 0x1e800, 0x1e8c4, 0x1e900, 0x1e943, 0x1e947, 0x1e947, +0x1e94b, 0x1e94b, 0x1e950, 0x1e959, 0x1ee00, 0x1ee03, 0x1ee05, 0x1ee1f, @@ -5079,7 +5121,7 @@ CR_ASCII[] = { 1, /* PROPERTY: 'Adlam': Script */ static const OnigCodePoint CR_Adlam[] = { 3, -0x1e900, 0x1e94a, +0x1e900, 0x1e94b, 0x1e950, 0x1e959, 0x1e95e, 0x1e95f, }; /* END of CR_Adlam */ @@ -5181,7 +5223,7 @@ CR_Armenian[] = { 5, /* PROPERTY: 'Assigned': - */ static const OnigCodePoint -CR_Assigned[] = { 658, +CR_Assigned[] = { 666, 0x0000, 0x0377, 0x037a, 0x037f, 0x0384, 0x038a, @@ -5291,7 +5333,7 @@ CR_Assigned[] = { 658, 0x0c58, 0x0c5a, 0x0c60, 0x0c63, 0x0c66, 0x0c6f, -0x0c78, 0x0c8c, +0x0c77, 0x0c8c, 0x0c8e, 0x0c90, 0x0c92, 0x0ca8, 0x0caa, 0x0cb3, @@ -5328,17 +5370,10 @@ CR_Assigned[] = { 658, 0x0e3f, 0x0e5b, 0x0e81, 0x0e82, 0x0e84, 0x0e84, -0x0e87, 0x0e88, -0x0e8a, 0x0e8a, -0x0e8d, 0x0e8d, -0x0e94, 0x0e97, -0x0e99, 0x0e9f, -0x0ea1, 0x0ea3, +0x0e86, 0x0e8a, +0x0e8c, 0x0ea3, 0x0ea5, 0x0ea5, -0x0ea7, 0x0ea7, -0x0eaa, 0x0eab, -0x0ead, 0x0eb9, -0x0ebb, 0x0ebd, +0x0ea7, 0x0ebd, 0x0ec0, 0x0ec4, 0x0ec6, 0x0ec6, 0x0ec8, 0x0ecd, @@ -5414,7 +5449,7 @@ CR_Assigned[] = { 658, 0x1c4d, 0x1c88, 0x1c90, 0x1cba, 0x1cbd, 0x1cc7, -0x1cd0, 0x1cf9, +0x1cd0, 0x1cfa, 0x1d00, 0x1df9, 0x1dfb, 0x1f15, 0x1f18, 0x1f1d, @@ -5443,9 +5478,7 @@ CR_Assigned[] = { 658, 0x2440, 0x244a, 0x2460, 0x2b73, 0x2b76, 0x2b95, -0x2b98, 0x2bc8, -0x2bca, 0x2bfe, -0x2c00, 0x2c2e, +0x2b98, 0x2c2e, 0x2c30, 0x2c5e, 0x2c60, 0x2cf3, 0x2cf9, 0x2d25, @@ -5462,7 +5495,7 @@ CR_Assigned[] = { 658, 0x2dc8, 0x2dce, 0x2dd0, 0x2dd6, 0x2dd8, 0x2dde, -0x2de0, 0x2e4e, +0x2de0, 0x2e4f, 0x2e80, 0x2e99, 0x2e9b, 0x2ef3, 0x2f00, 0x2fd5, @@ -5475,14 +5508,14 @@ CR_Assigned[] = { 658, 0x3190, 0x31ba, 0x31c0, 0x31e3, 0x31f0, 0x321e, -0x3220, 0x32fe, -0x3300, 0x4db5, +0x3220, 0x4db5, 0x4dc0, 0x9fef, 0xa000, 0xa48c, 0xa490, 0xa4c6, 0xa4d0, 0xa62b, 0xa640, 0xa6f7, -0xa700, 0xa7b9, +0xa700, 0xa7bf, +0xa7c2, 0xa7c6, 0xa7f7, 0xa82b, 0xa830, 0xa839, 0xa840, 0xa877, @@ -5503,7 +5536,7 @@ CR_Assigned[] = { 658, 0xab11, 0xab16, 0xab20, 0xab26, 0xab28, 0xab2e, -0xab30, 0xab65, +0xab30, 0xab67, 0xab70, 0xabed, 0xabf0, 0xabf9, 0xac00, 0xd7a3, @@ -5610,6 +5643,7 @@ CR_Assigned[] = { 658, 0x10e60, 0x10e7e, 0x10f00, 0x10f27, 0x10f30, 0x10f59, +0x10fe0, 0x10ff6, 0x11000, 0x1104d, 0x11052, 0x1106f, 0x1107f, 0x110c1, @@ -5648,7 +5682,7 @@ CR_Assigned[] = { 658, 0x11370, 0x11374, 0x11400, 0x11459, 0x1145b, 0x1145b, -0x1145d, 0x1145e, +0x1145d, 0x1145f, 0x11480, 0x114c7, 0x114d0, 0x114d9, 0x11580, 0x115b5, @@ -5656,7 +5690,7 @@ CR_Assigned[] = { 658, 0x11600, 0x11644, 0x11650, 0x11659, 0x11660, 0x1166c, -0x11680, 0x116b7, +0x11680, 0x116b8, 0x116c0, 0x116c9, 0x11700, 0x1171a, 0x1171d, 0x1172b, @@ -5664,9 +5698,11 @@ CR_Assigned[] = { 658, 0x11800, 0x1183b, 0x118a0, 0x118f2, 0x118ff, 0x118ff, +0x119a0, 0x119a7, +0x119aa, 0x119d7, +0x119da, 0x119e4, 0x11a00, 0x11a47, -0x11a50, 0x11a83, -0x11a86, 0x11aa2, +0x11a50, 0x11aa2, 0x11ac0, 0x11af8, 0x11c00, 0x11c08, 0x11c0a, 0x11c36, @@ -5689,11 +5725,13 @@ CR_Assigned[] = { 658, 0x11d93, 0x11d98, 0x11da0, 0x11da9, 0x11ee0, 0x11ef8, -0x12000, 0x12399, +0x11fc0, 0x11ff1, +0x11fff, 0x12399, 0x12400, 0x1246e, 0x12470, 0x12474, 0x12480, 0x12543, 0x13000, 0x1342e, +0x13430, 0x13438, 0x14400, 0x14646, 0x16800, 0x16a38, 0x16a40, 0x16a5e, @@ -5707,13 +5745,15 @@ CR_Assigned[] = { 658, 0x16b63, 0x16b77, 0x16b7d, 0x16b8f, 0x16e40, 0x16e9a, -0x16f00, 0x16f44, -0x16f50, 0x16f7e, +0x16f00, 0x16f4a, +0x16f4f, 0x16f87, 0x16f8f, 0x16f9f, -0x16fe0, 0x16fe1, -0x17000, 0x187f1, +0x16fe0, 0x16fe3, +0x17000, 0x187f7, 0x18800, 0x18af2, 0x1b000, 0x1b11e, +0x1b150, 0x1b152, +0x1b164, 0x1b167, 0x1b170, 0x1b2fb, 0x1bc00, 0x1bc6a, 0x1bc70, 0x1bc7c, @@ -5755,12 +5795,19 @@ CR_Assigned[] = { 658, 0x1e01b, 0x1e021, 0x1e023, 0x1e024, 0x1e026, 0x1e02a, +0x1e100, 0x1e12c, +0x1e130, 0x1e13d, +0x1e140, 0x1e149, +0x1e14e, 0x1e14f, +0x1e2c0, 0x1e2f9, +0x1e2ff, 0x1e2ff, 0x1e800, 0x1e8c4, 0x1e8c7, 0x1e8d6, -0x1e900, 0x1e94a, +0x1e900, 0x1e94b, 0x1e950, 0x1e959, 0x1e95e, 0x1e95f, 0x1ec71, 0x1ecb4, +0x1ed01, 0x1ed3d, 0x1ee00, 0x1ee03, 0x1ee05, 0x1ee1f, 0x1ee21, 0x1ee22, @@ -5802,33 +5849,36 @@ CR_Assigned[] = { 658, 0x1f0c1, 0x1f0cf, 0x1f0d1, 0x1f0f5, 0x1f100, 0x1f10c, -0x1f110, 0x1f16b, +0x1f110, 0x1f16c, 0x1f170, 0x1f1ac, 0x1f1e6, 0x1f202, 0x1f210, 0x1f23b, 0x1f240, 0x1f248, 0x1f250, 0x1f251, 0x1f260, 0x1f265, -0x1f300, 0x1f6d4, +0x1f300, 0x1f6d5, 0x1f6e0, 0x1f6ec, -0x1f6f0, 0x1f6f9, +0x1f6f0, 0x1f6fa, 0x1f700, 0x1f773, 0x1f780, 0x1f7d8, +0x1f7e0, 0x1f7eb, 0x1f800, 0x1f80b, 0x1f810, 0x1f847, 0x1f850, 0x1f859, 0x1f860, 0x1f887, 0x1f890, 0x1f8ad, 0x1f900, 0x1f90b, -0x1f910, 0x1f93e, -0x1f940, 0x1f970, +0x1f90d, 0x1f971, 0x1f973, 0x1f976, -0x1f97a, 0x1f97a, -0x1f97c, 0x1f9a2, -0x1f9b0, 0x1f9b9, -0x1f9c0, 0x1f9c2, -0x1f9d0, 0x1f9ff, +0x1f97a, 0x1f9a2, +0x1f9a5, 0x1f9aa, +0x1f9ae, 0x1f9ca, +0x1f9cd, 0x1fa53, 0x1fa60, 0x1fa6d, +0x1fa70, 0x1fa73, +0x1fa78, 0x1fa7a, +0x1fa80, 0x1fa82, +0x1fa90, 0x1fa95, 0x20000, 0x2a6d6, 0x2a700, 0x2b734, 0x2b740, 0x2b81d, @@ -5951,7 +6001,7 @@ CR_Buhid[] = { 1, /* PROPERTY: 'C': Major Category */ static const OnigCodePoint -CR_C[] = { 661, +CR_C[] = { 668, 0x0000, 0x001f, 0x007f, 0x009f, 0x00ad, 0x00ad, @@ -6065,7 +6115,7 @@ CR_C[] = { 661, 0x0c57, 0x0c57, 0x0c5b, 0x0c5f, 0x0c64, 0x0c65, -0x0c70, 0x0c77, +0x0c70, 0x0c76, 0x0c8d, 0x0c8d, 0x0c91, 0x0c91, 0x0ca9, 0x0ca9, @@ -6102,17 +6152,10 @@ CR_C[] = { 661, 0x0e3b, 0x0e3e, 0x0e5c, 0x0e80, 0x0e83, 0x0e83, -0x0e85, 0x0e86, -0x0e89, 0x0e89, -0x0e8b, 0x0e8c, -0x0e8e, 0x0e93, -0x0e98, 0x0e98, -0x0ea0, 0x0ea0, +0x0e85, 0x0e85, +0x0e8b, 0x0e8b, 0x0ea4, 0x0ea4, 0x0ea6, 0x0ea6, -0x0ea8, 0x0ea9, -0x0eac, 0x0eac, -0x0eba, 0x0eba, 0x0ebe, 0x0ebf, 0x0ec5, 0x0ec5, 0x0ec7, 0x0ec7, @@ -6189,7 +6232,7 @@ CR_C[] = { 661, 0x1c89, 0x1c8f, 0x1cbb, 0x1cbc, 0x1cc8, 0x1ccf, -0x1cfa, 0x1cff, +0x1cfb, 0x1cff, 0x1dfa, 0x1dfa, 0x1f16, 0x1f17, 0x1f1e, 0x1f1f, @@ -6220,8 +6263,6 @@ CR_C[] = { 661, 0x244b, 0x245f, 0x2b74, 0x2b75, 0x2b96, 0x2b97, -0x2bc9, 0x2bc9, -0x2bff, 0x2bff, 0x2c2f, 0x2c2f, 0x2c5f, 0x2c5f, 0x2cf4, 0x2cf8, @@ -6239,7 +6280,7 @@ CR_C[] = { 661, 0x2dcf, 0x2dcf, 0x2dd7, 0x2dd7, 0x2ddf, 0x2ddf, -0x2e4f, 0x2e7f, +0x2e50, 0x2e7f, 0x2e9a, 0x2e9a, 0x2ef4, 0x2eff, 0x2fd6, 0x2fef, @@ -6252,14 +6293,14 @@ CR_C[] = { 661, 0x31bb, 0x31bf, 0x31e4, 0x31ef, 0x321f, 0x321f, -0x32ff, 0x32ff, 0x4db6, 0x4dbf, 0x9ff0, 0x9fff, 0xa48d, 0xa48f, 0xa4c7, 0xa4cf, 0xa62c, 0xa63f, 0xa6f8, 0xa6ff, -0xa7ba, 0xa7f6, +0xa7c0, 0xa7c1, +0xa7c7, 0xa7f6, 0xa82c, 0xa82f, 0xa83a, 0xa83f, 0xa878, 0xa87f, @@ -6280,7 +6321,7 @@ CR_C[] = { 661, 0xab17, 0xab1f, 0xab27, 0xab27, 0xab2f, 0xab2f, -0xab66, 0xab6f, +0xab68, 0xab6f, 0xabee, 0xabef, 0xabfa, 0xabff, 0xd7a4, 0xd7af, @@ -6385,7 +6426,8 @@ CR_C[] = { 661, 0x10d3a, 0x10e5f, 0x10e7f, 0x10eff, 0x10f28, 0x10f2f, -0x10f5a, 0x10fff, +0x10f5a, 0x10fdf, +0x10ff7, 0x10fff, 0x1104e, 0x11051, 0x11070, 0x1107e, 0x110bd, 0x110bd, @@ -6424,7 +6466,7 @@ CR_C[] = { 661, 0x11375, 0x113ff, 0x1145a, 0x1145a, 0x1145c, 0x1145c, -0x1145f, 0x1147f, +0x11460, 0x1147f, 0x114c8, 0x114cf, 0x114da, 0x1157f, 0x115b6, 0x115b7, @@ -6432,16 +6474,18 @@ CR_C[] = { 661, 0x11645, 0x1164f, 0x1165a, 0x1165f, 0x1166d, 0x1167f, -0x116b8, 0x116bf, +0x116b9, 0x116bf, 0x116ca, 0x116ff, 0x1171b, 0x1171c, 0x1172c, 0x1172f, 0x11740, 0x117ff, 0x1183c, 0x1189f, 0x118f3, 0x118fe, -0x11900, 0x119ff, +0x11900, 0x1199f, +0x119a8, 0x119a9, +0x119d8, 0x119d9, +0x119e5, 0x119ff, 0x11a48, 0x11a4f, -0x11a84, 0x11a85, 0x11aa3, 0x11abf, 0x11af9, 0x11bff, 0x11c09, 0x11c09, @@ -6464,7 +6508,8 @@ CR_C[] = { 661, 0x11d92, 0x11d92, 0x11d99, 0x11d9f, 0x11daa, 0x11edf, -0x11ef9, 0x11fff, +0x11ef9, 0x11fbf, +0x11ff2, 0x11ffe, 0x1239a, 0x123ff, 0x1246f, 0x1246f, 0x12475, 0x1247f, @@ -6483,13 +6528,15 @@ CR_C[] = { 661, 0x16b78, 0x16b7c, 0x16b90, 0x16e3f, 0x16e9b, 0x16eff, -0x16f45, 0x16f4f, -0x16f7f, 0x16f8e, +0x16f4b, 0x16f4e, +0x16f88, 0x16f8e, 0x16fa0, 0x16fdf, -0x16fe2, 0x16fff, -0x187f2, 0x187ff, +0x16fe4, 0x16fff, +0x187f8, 0x187ff, 0x18af3, 0x1afff, -0x1b11f, 0x1b16f, +0x1b11f, 0x1b14f, +0x1b153, 0x1b163, +0x1b168, 0x1b16f, 0x1b2fc, 0x1bbff, 0x1bc6b, 0x1bc6f, 0x1bc7d, 0x1bc7f, @@ -6531,13 +6578,20 @@ CR_C[] = { 661, 0x1e019, 0x1e01a, 0x1e022, 0x1e022, 0x1e025, 0x1e025, -0x1e02b, 0x1e7ff, +0x1e02b, 0x1e0ff, +0x1e12d, 0x1e12f, +0x1e13e, 0x1e13f, +0x1e14a, 0x1e14d, +0x1e150, 0x1e2bf, +0x1e2fa, 0x1e2fe, +0x1e300, 0x1e7ff, 0x1e8c5, 0x1e8c6, 0x1e8d7, 0x1e8ff, -0x1e94b, 0x1e94f, +0x1e94c, 0x1e94f, 0x1e95a, 0x1e95d, 0x1e960, 0x1ec70, -0x1ecb5, 0x1edff, +0x1ecb5, 0x1ed00, +0x1ed3e, 0x1edff, 0x1ee04, 0x1ee04, 0x1ee20, 0x1ee20, 0x1ee23, 0x1ee23, @@ -6579,33 +6633,36 @@ CR_C[] = { 661, 0x1f0d0, 0x1f0d0, 0x1f0f6, 0x1f0ff, 0x1f10d, 0x1f10f, -0x1f16c, 0x1f16f, +0x1f16d, 0x1f16f, 0x1f1ad, 0x1f1e5, 0x1f203, 0x1f20f, 0x1f23c, 0x1f23f, 0x1f249, 0x1f24f, 0x1f252, 0x1f25f, 0x1f266, 0x1f2ff, -0x1f6d5, 0x1f6df, +0x1f6d6, 0x1f6df, 0x1f6ed, 0x1f6ef, -0x1f6fa, 0x1f6ff, +0x1f6fb, 0x1f6ff, 0x1f774, 0x1f77f, -0x1f7d9, 0x1f7ff, +0x1f7d9, 0x1f7df, +0x1f7ec, 0x1f7ff, 0x1f80c, 0x1f80f, 0x1f848, 0x1f84f, 0x1f85a, 0x1f85f, 0x1f888, 0x1f88f, 0x1f8ae, 0x1f8ff, -0x1f90c, 0x1f90f, -0x1f93f, 0x1f93f, -0x1f971, 0x1f972, +0x1f90c, 0x1f90c, +0x1f972, 0x1f972, 0x1f977, 0x1f979, -0x1f97b, 0x1f97b, -0x1f9a3, 0x1f9af, -0x1f9ba, 0x1f9bf, -0x1f9c3, 0x1f9cf, -0x1fa00, 0x1fa5f, -0x1fa6e, 0x1ffff, +0x1f9a3, 0x1f9a4, +0x1f9ab, 0x1f9ad, +0x1f9cb, 0x1f9cc, +0x1fa54, 0x1fa5f, +0x1fa6e, 0x1fa6f, +0x1fa74, 0x1fa77, +0x1fa7b, 0x1fa7f, +0x1fa83, 0x1fa8f, +0x1fa96, 0x1ffff, 0x2a6d7, 0x2a6ff, 0x2b735, 0x2b73f, 0x2b81e, 0x2b81f, @@ -6630,7 +6687,7 @@ CR_Carian[] = { 1, /* PROPERTY: 'Case_Ignorable': Derived Property */ static const OnigCodePoint -CR_Case_Ignorable[] = { 394, +CR_Case_Ignorable[] = { 401, 0x0027, 0x0027, 0x002e, 0x002e, 0x003a, 0x003a, @@ -6736,8 +6793,7 @@ CR_Case_Ignorable[] = { 394, 0x0e34, 0x0e3a, 0x0e46, 0x0e4e, 0x0eb1, 0x0eb1, -0x0eb4, 0x0eb9, -0x0ebb, 0x0ebc, +0x0eb4, 0x0ebc, 0x0ec6, 0x0ec6, 0x0ec8, 0x0ecd, 0x0f18, 0x0f19, @@ -6872,7 +6928,7 @@ CR_Case_Ignorable[] = { 394, 0xa980, 0xa982, 0xa9b3, 0xa9b3, 0xa9b6, 0xa9b9, -0xa9bc, 0xa9bc, +0xa9bc, 0xa9bd, 0xa9cf, 0xa9cf, 0xa9e5, 0xa9e6, 0xaa29, 0xaa2e, @@ -6972,6 +7028,9 @@ CR_Case_Ignorable[] = { 394, 0x11727, 0x1172b, 0x1182f, 0x11837, 0x11839, 0x1183a, +0x119d4, 0x119d7, +0x119da, 0x119db, +0x119e0, 0x119e0, 0x11a01, 0x11a0a, 0x11a33, 0x11a38, 0x11a3b, 0x11a3e, @@ -6996,11 +7055,14 @@ CR_Case_Ignorable[] = { 394, 0x11d95, 0x11d95, 0x11d97, 0x11d97, 0x11ef3, 0x11ef4, +0x13430, 0x13438, 0x16af0, 0x16af4, 0x16b30, 0x16b36, 0x16b40, 0x16b43, +0x16f4f, 0x16f4f, 0x16f8f, 0x16f9f, 0x16fe0, 0x16fe1, +0x16fe3, 0x16fe3, 0x1bc9d, 0x1bc9e, 0x1bca0, 0x1bca3, 0x1d167, 0x1d169, @@ -7019,8 +7081,10 @@ CR_Case_Ignorable[] = { 394, 0x1e01b, 0x1e021, 0x1e023, 0x1e024, 0x1e026, 0x1e02a, +0x1e130, 0x1e13d, +0x1e2ec, 0x1e2ef, 0x1e8d0, 0x1e8d6, -0x1e944, 0x1e94a, +0x1e944, 0x1e94b, 0x1f3fb, 0x1f3ff, 0xe0001, 0xe0001, 0xe0020, 0xe007f, @@ -7029,7 +7093,7 @@ CR_Case_Ignorable[] = { 394, /* PROPERTY: 'Cased': Derived Property */ static const OnigCodePoint -CR_Cased[] = { 139, +CR_Cased[] = { 140, 0x0041, 0x005a, 0x0061, 0x007a, 0x00aa, 0x00aa, @@ -7119,10 +7183,11 @@ CR_Cased[] = { 139, 0xa680, 0xa69d, 0xa722, 0xa787, 0xa78b, 0xa78e, -0xa790, 0xa7b9, +0xa790, 0xa7bf, +0xa7c2, 0xa7c6, 0xa7f8, 0xa7fa, 0xab30, 0xab5a, -0xab5c, 0xab65, +0xab5c, 0xab67, 0xab70, 0xabbf, 0xfb00, 0xfb06, 0xfb13, 0xfb17, @@ -7183,7 +7248,7 @@ CR_Caucasian_Albanian[] = { 2, /* PROPERTY: 'Cf': General Category */ static const OnigCodePoint -CR_Cf[] = { 19, +CR_Cf[] = { 20, 0x00ad, 0x00ad, 0x0600, 0x0605, 0x061c, 0x061c, @@ -7199,6 +7264,7 @@ CR_Cf[] = { 19, 0xfff9, 0xfffb, 0x110bd, 0x110bd, 0x110cd, 0x110cd, +0x13430, 0x13438, 0x1bca0, 0x1bca3, 0x1d173, 0x1d17a, 0xe0001, 0xe0001, @@ -7223,7 +7289,7 @@ CR_Cham[] = { 4, /* PROPERTY: 'Changes_When_Casefolded': Derived Property */ static const OnigCodePoint -CR_Changes_When_Casefolded[] = { 607, +CR_Changes_When_Casefolded[] = { 612, 0x0041, 0x005a, 0x00b5, 0x00b5, 0x00c0, 0x00d6, @@ -7821,6 +7887,11 @@ CR_Changes_When_Casefolded[] = { 607, 0xa7b0, 0xa7b4, 0xa7b6, 0xa7b6, 0xa7b8, 0xa7b8, +0xa7ba, 0xa7ba, +0xa7bc, 0xa7bc, +0xa7be, 0xa7be, +0xa7c2, 0xa7c2, +0xa7c4, 0xa7c6, 0xab70, 0xabbf, 0xfb00, 0xfb06, 0xfb13, 0xfb17, @@ -7835,7 +7906,7 @@ CR_Changes_When_Casefolded[] = { 607, /* PROPERTY: 'Changes_When_Casemapped': Derived Property */ static const OnigCodePoint -CR_Changes_When_Casemapped[] = { 121, +CR_Changes_When_Casemapped[] = { 123, 0x0041, 0x005a, 0x0061, 0x007a, 0x00b5, 0x00b5, @@ -7863,7 +7934,7 @@ CR_Changes_When_Casemapped[] = { 121, 0x0275, 0x0275, 0x027d, 0x027d, 0x0280, 0x0280, -0x0283, 0x0283, +0x0282, 0x0283, 0x0287, 0x028c, 0x0292, 0x0292, 0x029d, 0x029e, @@ -7895,6 +7966,7 @@ CR_Changes_When_Casemapped[] = { 121, 0x1cbd, 0x1cbf, 0x1d79, 0x1d79, 0x1d7d, 0x1d7d, +0x1d8e, 0x1d8e, 0x1e00, 0x1e9b, 0x1e9e, 0x1e9e, 0x1ea0, 0x1f15, @@ -7940,9 +8012,10 @@ CR_Changes_When_Casemapped[] = { 121, 0xa732, 0xa76f, 0xa779, 0xa787, 0xa78b, 0xa78d, -0xa790, 0xa793, +0xa790, 0xa794, 0xa796, 0xa7ae, -0xa7b0, 0xa7b9, +0xa7b0, 0xa7bf, +0xa7c2, 0xa7c6, 0xab53, 0xab53, 0xab70, 0xabbf, 0xfb00, 0xfb06, @@ -7961,7 +8034,7 @@ CR_Changes_When_Casemapped[] = { 121, /* PROPERTY: 'Changes_When_Lowercased': Derived Property */ static const OnigCodePoint -CR_Changes_When_Lowercased[] = { 594, +CR_Changes_When_Lowercased[] = { 599, 0x0041, 0x005a, 0x00c0, 0x00d6, 0x00d8, 0x00de, @@ -8549,6 +8622,11 @@ CR_Changes_When_Lowercased[] = { 594, 0xa7b0, 0xa7b4, 0xa7b6, 0xa7b6, 0xa7b8, 0xa7b8, +0xa7ba, 0xa7ba, +0xa7bc, 0xa7bc, +0xa7be, 0xa7be, +0xa7c2, 0xa7c2, +0xa7c4, 0xa7c6, 0xff21, 0xff3a, 0x10400, 0x10427, 0x104b0, 0x104d3, @@ -8560,7 +8638,7 @@ CR_Changes_When_Lowercased[] = { 594, /* PROPERTY: 'Changes_When_Titlecased': Derived Property */ static const OnigCodePoint -CR_Changes_When_Titlecased[] = { 610, +CR_Changes_When_Titlecased[] = { 615, 0x0061, 0x007a, 0x00b5, 0x00b5, 0x00df, 0x00f6, @@ -8718,7 +8796,7 @@ CR_Changes_When_Titlecased[] = { 610, 0x0275, 0x0275, 0x027d, 0x027d, 0x0280, 0x0280, -0x0283, 0x0283, +0x0282, 0x0283, 0x0287, 0x028c, 0x0292, 0x0292, 0x029d, 0x029e, @@ -8851,6 +8929,7 @@ CR_Changes_When_Titlecased[] = { 610, 0x1c80, 0x1c88, 0x1d79, 0x1d79, 0x1d7d, 0x1d7d, +0x1d8e, 0x1d8e, 0x1e01, 0x1e01, 0x1e03, 0x1e03, 0x1e05, 0x1e05, @@ -9146,7 +9225,7 @@ CR_Changes_When_Titlecased[] = { 610, 0xa787, 0xa787, 0xa78c, 0xa78c, 0xa791, 0xa791, -0xa793, 0xa793, +0xa793, 0xa794, 0xa797, 0xa797, 0xa799, 0xa799, 0xa79b, 0xa79b, @@ -9160,6 +9239,10 @@ CR_Changes_When_Titlecased[] = { 610, 0xa7b5, 0xa7b5, 0xa7b7, 0xa7b7, 0xa7b9, 0xa7b9, +0xa7bb, 0xa7bb, +0xa7bd, 0xa7bd, +0xa7bf, 0xa7bf, +0xa7c3, 0xa7c3, 0xab53, 0xab53, 0xab70, 0xabbf, 0xfb00, 0xfb06, @@ -9175,7 +9258,7 @@ CR_Changes_When_Titlecased[] = { 610, /* PROPERTY: 'Changes_When_Uppercased': Derived Property */ static const OnigCodePoint -CR_Changes_When_Uppercased[] = { 611, +CR_Changes_When_Uppercased[] = { 616, 0x0061, 0x007a, 0x00b5, 0x00b5, 0x00df, 0x00f6, @@ -9332,7 +9415,7 @@ CR_Changes_When_Uppercased[] = { 611, 0x0275, 0x0275, 0x027d, 0x027d, 0x0280, 0x0280, -0x0283, 0x0283, +0x0282, 0x0283, 0x0287, 0x028c, 0x0292, 0x0292, 0x029d, 0x029e, @@ -9467,6 +9550,7 @@ CR_Changes_When_Uppercased[] = { 611, 0x1c80, 0x1c88, 0x1d79, 0x1d79, 0x1d7d, 0x1d7d, +0x1d8e, 0x1d8e, 0x1e01, 0x1e01, 0x1e03, 0x1e03, 0x1e05, 0x1e05, @@ -9762,7 +9846,7 @@ CR_Changes_When_Uppercased[] = { 611, 0xa787, 0xa787, 0xa78c, 0xa78c, 0xa791, 0xa791, -0xa793, 0xa793, +0xa793, 0xa794, 0xa797, 0xa797, 0xa799, 0xa799, 0xa79b, 0xa79b, @@ -9776,6 +9860,10 @@ CR_Changes_When_Uppercased[] = { 611, 0xa7b5, 0xa7b5, 0xa7b7, 0xa7b7, 0xa7b9, 0xa7b9, +0xa7bb, 0xa7bb, +0xa7bd, 0xa7bd, +0xa7bf, 0xa7bf, +0xa7c3, 0xa7c3, 0xab53, 0xab53, 0xab70, 0xabbf, 0xfb00, 0xfb06, @@ -9799,7 +9887,7 @@ CR_Cherokee[] = { 3, /* PROPERTY: 'Cn': General Category */ static const OnigCodePoint -CR_Cn[] = { 658, +CR_Cn[] = { 666, 0x0378, 0x0379, 0x0380, 0x0383, 0x038b, 0x038b, @@ -9908,7 +9996,7 @@ CR_Cn[] = { 658, 0x0c57, 0x0c57, 0x0c5b, 0x0c5f, 0x0c64, 0x0c65, -0x0c70, 0x0c77, +0x0c70, 0x0c76, 0x0c8d, 0x0c8d, 0x0c91, 0x0c91, 0x0ca9, 0x0ca9, @@ -9945,17 +10033,10 @@ CR_Cn[] = { 658, 0x0e3b, 0x0e3e, 0x0e5c, 0x0e80, 0x0e83, 0x0e83, -0x0e85, 0x0e86, -0x0e89, 0x0e89, -0x0e8b, 0x0e8c, -0x0e8e, 0x0e93, -0x0e98, 0x0e98, -0x0ea0, 0x0ea0, +0x0e85, 0x0e85, +0x0e8b, 0x0e8b, 0x0ea4, 0x0ea4, 0x0ea6, 0x0ea6, -0x0ea8, 0x0ea9, -0x0eac, 0x0eac, -0x0eba, 0x0eba, 0x0ebe, 0x0ebf, 0x0ec5, 0x0ec5, 0x0ec7, 0x0ec7, @@ -10032,7 +10113,7 @@ CR_Cn[] = { 658, 0x1c89, 0x1c8f, 0x1cbb, 0x1cbc, 0x1cc8, 0x1ccf, -0x1cfa, 0x1cff, +0x1cfb, 0x1cff, 0x1dfa, 0x1dfa, 0x1f16, 0x1f17, 0x1f1e, 0x1f1f, @@ -10061,8 +10142,6 @@ CR_Cn[] = { 658, 0x244b, 0x245f, 0x2b74, 0x2b75, 0x2b96, 0x2b97, -0x2bc9, 0x2bc9, -0x2bff, 0x2bff, 0x2c2f, 0x2c2f, 0x2c5f, 0x2c5f, 0x2cf4, 0x2cf8, @@ -10080,7 +10159,7 @@ CR_Cn[] = { 658, 0x2dcf, 0x2dcf, 0x2dd7, 0x2dd7, 0x2ddf, 0x2ddf, -0x2e4f, 0x2e7f, +0x2e50, 0x2e7f, 0x2e9a, 0x2e9a, 0x2ef4, 0x2eff, 0x2fd6, 0x2fef, @@ -10093,14 +10172,14 @@ CR_Cn[] = { 658, 0x31bb, 0x31bf, 0x31e4, 0x31ef, 0x321f, 0x321f, -0x32ff, 0x32ff, 0x4db6, 0x4dbf, 0x9ff0, 0x9fff, 0xa48d, 0xa48f, 0xa4c7, 0xa4cf, 0xa62c, 0xa63f, 0xa6f8, 0xa6ff, -0xa7ba, 0xa7f6, +0xa7c0, 0xa7c1, +0xa7c7, 0xa7f6, 0xa82c, 0xa82f, 0xa83a, 0xa83f, 0xa878, 0xa87f, @@ -10121,7 +10200,7 @@ CR_Cn[] = { 658, 0xab17, 0xab1f, 0xab27, 0xab27, 0xab2f, 0xab2f, -0xab66, 0xab6f, +0xab68, 0xab6f, 0xabee, 0xabef, 0xabfa, 0xabff, 0xd7a4, 0xd7af, @@ -10227,7 +10306,8 @@ CR_Cn[] = { 658, 0x10d3a, 0x10e5f, 0x10e7f, 0x10eff, 0x10f28, 0x10f2f, -0x10f5a, 0x10fff, +0x10f5a, 0x10fdf, +0x10ff7, 0x10fff, 0x1104e, 0x11051, 0x11070, 0x1107e, 0x110c2, 0x110cc, @@ -10266,7 +10346,7 @@ CR_Cn[] = { 658, 0x11375, 0x113ff, 0x1145a, 0x1145a, 0x1145c, 0x1145c, -0x1145f, 0x1147f, +0x11460, 0x1147f, 0x114c8, 0x114cf, 0x114da, 0x1157f, 0x115b6, 0x115b7, @@ -10274,16 +10354,18 @@ CR_Cn[] = { 658, 0x11645, 0x1164f, 0x1165a, 0x1165f, 0x1166d, 0x1167f, -0x116b8, 0x116bf, +0x116b9, 0x116bf, 0x116ca, 0x116ff, 0x1171b, 0x1171c, 0x1172c, 0x1172f, 0x11740, 0x117ff, 0x1183c, 0x1189f, 0x118f3, 0x118fe, -0x11900, 0x119ff, +0x11900, 0x1199f, +0x119a8, 0x119a9, +0x119d8, 0x119d9, +0x119e5, 0x119ff, 0x11a48, 0x11a4f, -0x11a84, 0x11a85, 0x11aa3, 0x11abf, 0x11af9, 0x11bff, 0x11c09, 0x11c09, @@ -10306,12 +10388,14 @@ CR_Cn[] = { 658, 0x11d92, 0x11d92, 0x11d99, 0x11d9f, 0x11daa, 0x11edf, -0x11ef9, 0x11fff, +0x11ef9, 0x11fbf, +0x11ff2, 0x11ffe, 0x1239a, 0x123ff, 0x1246f, 0x1246f, 0x12475, 0x1247f, 0x12544, 0x12fff, -0x1342f, 0x143ff, +0x1342f, 0x1342f, +0x13439, 0x143ff, 0x14647, 0x167ff, 0x16a39, 0x16a3f, 0x16a5f, 0x16a5f, @@ -10325,13 +10409,15 @@ CR_Cn[] = { 658, 0x16b78, 0x16b7c, 0x16b90, 0x16e3f, 0x16e9b, 0x16eff, -0x16f45, 0x16f4f, -0x16f7f, 0x16f8e, +0x16f4b, 0x16f4e, +0x16f88, 0x16f8e, 0x16fa0, 0x16fdf, -0x16fe2, 0x16fff, -0x187f2, 0x187ff, +0x16fe4, 0x16fff, +0x187f8, 0x187ff, 0x18af3, 0x1afff, -0x1b11f, 0x1b16f, +0x1b11f, 0x1b14f, +0x1b153, 0x1b163, +0x1b168, 0x1b16f, 0x1b2fc, 0x1bbff, 0x1bc6b, 0x1bc6f, 0x1bc7d, 0x1bc7f, @@ -10372,13 +10458,20 @@ CR_Cn[] = { 658, 0x1e019, 0x1e01a, 0x1e022, 0x1e022, 0x1e025, 0x1e025, -0x1e02b, 0x1e7ff, +0x1e02b, 0x1e0ff, +0x1e12d, 0x1e12f, +0x1e13e, 0x1e13f, +0x1e14a, 0x1e14d, +0x1e150, 0x1e2bf, +0x1e2fa, 0x1e2fe, +0x1e300, 0x1e7ff, 0x1e8c5, 0x1e8c6, 0x1e8d7, 0x1e8ff, -0x1e94b, 0x1e94f, +0x1e94c, 0x1e94f, 0x1e95a, 0x1e95d, 0x1e960, 0x1ec70, -0x1ecb5, 0x1edff, +0x1ecb5, 0x1ed00, +0x1ed3e, 0x1edff, 0x1ee04, 0x1ee04, 0x1ee20, 0x1ee20, 0x1ee23, 0x1ee23, @@ -10420,33 +10513,36 @@ CR_Cn[] = { 658, 0x1f0d0, 0x1f0d0, 0x1f0f6, 0x1f0ff, 0x1f10d, 0x1f10f, -0x1f16c, 0x1f16f, +0x1f16d, 0x1f16f, 0x1f1ad, 0x1f1e5, 0x1f203, 0x1f20f, 0x1f23c, 0x1f23f, 0x1f249, 0x1f24f, 0x1f252, 0x1f25f, 0x1f266, 0x1f2ff, -0x1f6d5, 0x1f6df, +0x1f6d6, 0x1f6df, 0x1f6ed, 0x1f6ef, -0x1f6fa, 0x1f6ff, +0x1f6fb, 0x1f6ff, 0x1f774, 0x1f77f, -0x1f7d9, 0x1f7ff, +0x1f7d9, 0x1f7df, +0x1f7ec, 0x1f7ff, 0x1f80c, 0x1f80f, 0x1f848, 0x1f84f, 0x1f85a, 0x1f85f, 0x1f888, 0x1f88f, 0x1f8ae, 0x1f8ff, -0x1f90c, 0x1f90f, -0x1f93f, 0x1f93f, -0x1f971, 0x1f972, +0x1f90c, 0x1f90c, +0x1f972, 0x1f972, 0x1f977, 0x1f979, -0x1f97b, 0x1f97b, -0x1f9a3, 0x1f9af, -0x1f9ba, 0x1f9bf, -0x1f9c3, 0x1f9cf, -0x1fa00, 0x1fa5f, -0x1fa6e, 0x1ffff, +0x1f9a3, 0x1f9a4, +0x1f9ab, 0x1f9ad, +0x1f9cb, 0x1f9cc, +0x1fa54, 0x1fa5f, +0x1fa6e, 0x1fa6f, +0x1fa74, 0x1fa77, +0x1fa7b, 0x1fa7f, +0x1fa83, 0x1fa8f, +0x1fa96, 0x1ffff, 0x2a6d7, 0x2a6ff, 0x2b735, 0x2b73f, 0x2b81e, 0x2b81f, @@ -10470,7 +10566,7 @@ CR_Co[] = { 3, /* PROPERTY: 'Common': Script */ static const OnigCodePoint -CR_Common[] = { 166, +CR_Common[] = { 172, 0x0000, 0x0040, 0x005b, 0x0060, 0x007b, 0x00a9, @@ -10506,6 +10602,7 @@ CR_Common[] = { 166, 0x1ce9, 0x1cec, 0x1cee, 0x1cf3, 0x1cf5, 0x1cf7, +0x1cfa, 0x1cfa, 0x2000, 0x200b, 0x200e, 0x2064, 0x2066, 0x2070, @@ -10523,9 +10620,8 @@ CR_Common[] = { 166, 0x2460, 0x27ff, 0x2900, 0x2b73, 0x2b76, 0x2b95, -0x2b98, 0x2bc8, -0x2bca, 0x2bfe, -0x2e00, 0x2e4e, +0x2b98, 0x2bff, +0x2e00, 0x2e4f, 0x2ff0, 0x2ffb, 0x3000, 0x3004, 0x3006, 0x3006, @@ -10539,6 +10635,7 @@ CR_Common[] = { 166, 0x31c0, 0x31e3, 0x3220, 0x325f, 0x327f, 0x32cf, +0x32ff, 0x32ff, 0x3358, 0x33ff, 0x4dc0, 0x4dff, 0xa700, 0xa721, @@ -10567,6 +10664,7 @@ CR_Common[] = { 166, 0x10190, 0x1019b, 0x101d0, 0x101fc, 0x102e1, 0x102fb, +0x16fe2, 0x16fe3, 0x1bca0, 0x1bca3, 0x1d000, 0x1d0f5, 0x1d100, 0x1d126, @@ -10600,6 +10698,7 @@ CR_Common[] = { 166, 0x1d6a8, 0x1d7cb, 0x1d7ce, 0x1d7ff, 0x1ec71, 0x1ecb4, +0x1ed01, 0x1ed3d, 0x1f000, 0x1f02b, 0x1f030, 0x1f093, 0x1f0a0, 0x1f0ae, @@ -10607,7 +10706,7 @@ CR_Common[] = { 166, 0x1f0c1, 0x1f0cf, 0x1f0d1, 0x1f0f5, 0x1f100, 0x1f10c, -0x1f110, 0x1f16b, +0x1f110, 0x1f16c, 0x1f170, 0x1f1ac, 0x1f1e6, 0x1f1ff, 0x1f201, 0x1f202, @@ -10615,26 +10714,29 @@ CR_Common[] = { 166, 0x1f240, 0x1f248, 0x1f250, 0x1f251, 0x1f260, 0x1f265, -0x1f300, 0x1f6d4, +0x1f300, 0x1f6d5, 0x1f6e0, 0x1f6ec, -0x1f6f0, 0x1f6f9, +0x1f6f0, 0x1f6fa, 0x1f700, 0x1f773, 0x1f780, 0x1f7d8, +0x1f7e0, 0x1f7eb, 0x1f800, 0x1f80b, 0x1f810, 0x1f847, 0x1f850, 0x1f859, 0x1f860, 0x1f887, 0x1f890, 0x1f8ad, 0x1f900, 0x1f90b, -0x1f910, 0x1f93e, -0x1f940, 0x1f970, +0x1f90d, 0x1f971, 0x1f973, 0x1f976, -0x1f97a, 0x1f97a, -0x1f97c, 0x1f9a2, -0x1f9b0, 0x1f9b9, -0x1f9c0, 0x1f9c2, -0x1f9d0, 0x1f9ff, +0x1f97a, 0x1f9a2, +0x1f9a5, 0x1f9aa, +0x1f9ae, 0x1f9ca, +0x1f9cd, 0x1fa53, 0x1fa60, 0x1fa6d, +0x1fa70, 0x1fa73, +0x1fa78, 0x1fa7a, +0x1fa80, 0x1fa82, +0x1fa90, 0x1fa95, 0xe0001, 0xe0001, 0xe0020, 0xe007f, }; /* END of CR_Common */ @@ -10757,14 +10859,14 @@ CR_Deseret[] = { 1, static const OnigCodePoint CR_Devanagari[] = { 4, 0x0900, 0x0950, -0x0953, 0x0963, +0x0955, 0x0963, 0x0966, 0x097f, 0xa8e0, 0xa8ff, }; /* END of CR_Devanagari */ /* PROPERTY: 'Diacritic': Binary Property */ static const OnigCodePoint -CR_Diacritic[] = { 163, +CR_Diacritic[] = { 171, 0x005e, 0x005e, 0x0060, 0x0060, 0x00a8, 0x00a8, @@ -10816,6 +10918,7 @@ CR_Diacritic[] = { 163, 0x0dca, 0x0dca, 0x0e47, 0x0e4c, 0x0e4e, 0x0e4e, +0x0eba, 0x0eba, 0x0ec8, 0x0ecc, 0x0f18, 0x0f19, 0x0f35, 0x0f35, @@ -10827,9 +10930,12 @@ CR_Diacritic[] = { 163, 0x0fc6, 0x0fc6, 0x1037, 0x1037, 0x1039, 0x103a, +0x1063, 0x1064, +0x1069, 0x106d, 0x1087, 0x108d, 0x108f, 0x108f, 0x109a, 0x109b, +0x135d, 0x135f, 0x17c9, 0x17d3, 0x17dd, 0x17dd, 0x1939, 0x193b, @@ -10866,8 +10972,8 @@ CR_Diacritic[] = { 163, 0xa67f, 0xa67f, 0xa69c, 0xa69d, 0xa6f0, 0xa6f1, -0xa717, 0xa721, -0xa788, 0xa788, +0xa700, 0xa721, +0xa788, 0xa78a, 0xa7f8, 0xa7f9, 0xa8c4, 0xa8c4, 0xa8e0, 0xa8f1, @@ -10911,6 +11017,7 @@ CR_Diacritic[] = { 163, 0x116b6, 0x116b7, 0x1172b, 0x1172b, 0x11839, 0x1183a, +0x119e0, 0x119e0, 0x11a34, 0x11a34, 0x11a47, 0x11a47, 0x11a99, 0x11a99, @@ -10919,12 +11026,15 @@ CR_Diacritic[] = { 163, 0x11d44, 0x11d45, 0x11d97, 0x11d97, 0x16af0, 0x16af4, +0x16b30, 0x16b36, 0x16f8f, 0x16f9f, 0x1d167, 0x1d169, 0x1d16d, 0x1d172, 0x1d17b, 0x1d182, 0x1d185, 0x1d18b, 0x1d1aa, 0x1d1ad, +0x1e130, 0x1e136, +0x1e2ec, 0x1e2ef, 0x1e8d0, 0x1e8d6, 0x1e944, 0x1e946, 0x1e948, 0x1e94a, @@ -10948,8 +11058,9 @@ CR_Duployan[] = { 5, /* PROPERTY: 'Egyptian_Hieroglyphs': Script */ static const OnigCodePoint -CR_Egyptian_Hieroglyphs[] = { 1, +CR_Egyptian_Hieroglyphs[] = { 2, 0x13000, 0x1342e, +0x13430, 0x13438, }; /* END of CR_Egyptian_Hieroglyphs */ /* PROPERTY: 'Elbasan': Script */ @@ -10958,9 +11069,15 @@ CR_Elbasan[] = { 1, 0x10500, 0x10527, }; /* END of CR_Elbasan */ +/* PROPERTY: 'Elymaic': Script */ +static const OnigCodePoint +CR_Elymaic[] = { 1, +0x10fe0, 0x10ff6, +}; /* END of CR_Elymaic */ + /* PROPERTY: 'Emoji': Emoji Property */ static const OnigCodePoint -CR_Emoji[] = { 147, +CR_Emoji[] = { 151, 0x0023, 0x0023, 0x002a, 0x002a, 0x0030, 0x0039, @@ -11093,21 +11210,25 @@ CR_Emoji[] = { 147, 0x1f5fa, 0x1f64f, 0x1f680, 0x1f6c5, 0x1f6cb, 0x1f6d2, +0x1f6d5, 0x1f6d5, 0x1f6e0, 0x1f6e5, 0x1f6e9, 0x1f6e9, 0x1f6eb, 0x1f6ec, 0x1f6f0, 0x1f6f0, -0x1f6f3, 0x1f6f9, -0x1f910, 0x1f93a, -0x1f93c, 0x1f93e, -0x1f940, 0x1f945, -0x1f947, 0x1f970, +0x1f6f3, 0x1f6fa, +0x1f7e0, 0x1f7eb, +0x1f90d, 0x1f93a, +0x1f93c, 0x1f945, +0x1f947, 0x1f971, 0x1f973, 0x1f976, -0x1f97a, 0x1f97a, -0x1f97c, 0x1f9a2, -0x1f9b0, 0x1f9b9, -0x1f9c0, 0x1f9c2, -0x1f9d0, 0x1f9ff, +0x1f97a, 0x1f9a2, +0x1f9a5, 0x1f9aa, +0x1f9ae, 0x1f9ca, +0x1f9cd, 0x1f9ff, +0x1fa70, 0x1fa73, +0x1fa78, 0x1fa7a, +0x1fa80, 0x1fa82, +0x1fa90, 0x1fa95, }; /* END of CR_Emoji */ /* PROPERTY: 'Emoji_Component': Emoji Property */ @@ -11133,7 +11254,7 @@ CR_Emoji_Modifier[] = { 1, /* PROPERTY: 'Emoji_Modifier_Base': Emoji Property */ static const OnigCodePoint -CR_Emoji_Modifier_Base[] = { 34, +CR_Emoji_Modifier_Base[] = { 36, 0x261d, 0x261d, 0x26f9, 0x26f9, 0x270a, 0x270d, @@ -11143,12 +11264,12 @@ CR_Emoji_Modifier_Base[] = { 34, 0x1f3ca, 0x1f3cc, 0x1f442, 0x1f443, 0x1f446, 0x1f450, -0x1f466, 0x1f469, -0x1f46e, 0x1f46e, -0x1f470, 0x1f478, +0x1f466, 0x1f478, 0x1f47c, 0x1f47c, 0x1f481, 0x1f483, 0x1f485, 0x1f487, +0x1f48f, 0x1f48f, +0x1f491, 0x1f491, 0x1f4aa, 0x1f4aa, 0x1f574, 0x1f575, 0x1f57a, 0x1f57a, @@ -11160,19 +11281,21 @@ CR_Emoji_Modifier_Base[] = { 34, 0x1f6b4, 0x1f6b6, 0x1f6c0, 0x1f6c0, 0x1f6cc, 0x1f6cc, -0x1f918, 0x1f91c, -0x1f91e, 0x1f91f, +0x1f90f, 0x1f90f, +0x1f918, 0x1f91f, 0x1f926, 0x1f926, 0x1f930, 0x1f939, -0x1f93d, 0x1f93e, +0x1f93c, 0x1f93e, 0x1f9b5, 0x1f9b6, 0x1f9b8, 0x1f9b9, +0x1f9bb, 0x1f9bb, +0x1f9cd, 0x1f9cf, 0x1f9d1, 0x1f9dd, }; /* END of CR_Emoji_Modifier_Base */ /* PROPERTY: 'Emoji_Presentation': Emoji Property */ static const OnigCodePoint -CR_Emoji_Presentation[] = { 77, +CR_Emoji_Presentation[] = { 81, 0x231a, 0x231b, 0x23e9, 0x23ec, 0x23f0, 0x23f0, @@ -11238,18 +11361,22 @@ CR_Emoji_Presentation[] = { 77, 0x1f680, 0x1f6c5, 0x1f6cc, 0x1f6cc, 0x1f6d0, 0x1f6d2, +0x1f6d5, 0x1f6d5, 0x1f6eb, 0x1f6ec, -0x1f6f4, 0x1f6f9, -0x1f910, 0x1f93a, -0x1f93c, 0x1f93e, -0x1f940, 0x1f945, -0x1f947, 0x1f970, +0x1f6f4, 0x1f6fa, +0x1f7e0, 0x1f7eb, +0x1f90d, 0x1f93a, +0x1f93c, 0x1f945, +0x1f947, 0x1f971, 0x1f973, 0x1f976, -0x1f97a, 0x1f97a, -0x1f97c, 0x1f9a2, -0x1f9b0, 0x1f9b9, -0x1f9c0, 0x1f9c2, -0x1f9d0, 0x1f9ff, +0x1f97a, 0x1f9a2, +0x1f9a5, 0x1f9aa, +0x1f9ae, 0x1f9ca, +0x1f9cd, 0x1f9ff, +0x1fa70, 0x1fa73, +0x1fa78, 0x1fa7a, +0x1fa80, 0x1fa82, +0x1fa90, 0x1fa95, }; /* END of CR_Emoji_Presentation */ /* PROPERTY: 'Ethiopic': Script */ @@ -11373,7 +11500,7 @@ CR_Extended_Pictographic[] = { 77, /* PROPERTY: 'Extender': Binary Property */ static const OnigCodePoint -CR_Extender[] = { 29, +CR_Extender[] = { 31, 0x00b7, 0x00b7, 0x02d0, 0x02d1, 0x0640, 0x0640, @@ -11402,6 +11529,8 @@ CR_Extender[] = { 29, 0x11a98, 0x11a98, 0x16b42, 0x16b43, 0x16fe0, 0x16fe1, +0x16fe3, 0x16fe3, +0x1e13c, 0x1e13d, 0x1e944, 0x1e946, }; /* END of CR_Extender */ @@ -11460,7 +11589,7 @@ CR_Grantha[] = { 15, /* PROPERTY: 'Grapheme_Base': Derived Property */ static const OnigCodePoint -CR_Grapheme_Base[] = { 806, +CR_Grapheme_Base[] = { 819, 0x0020, 0x007e, 0x00a0, 0x00ac, 0x00ae, 0x02ff, @@ -11595,7 +11724,7 @@ CR_Grapheme_Base[] = { 806, 0x0c58, 0x0c5a, 0x0c60, 0x0c61, 0x0c66, 0x0c6f, -0x0c78, 0x0c80, +0x0c77, 0x0c80, 0x0c82, 0x0c8c, 0x0c8e, 0x0c90, 0x0c92, 0x0ca8, @@ -11638,16 +11767,10 @@ CR_Grapheme_Base[] = { 806, 0x0e4f, 0x0e5b, 0x0e81, 0x0e82, 0x0e84, 0x0e84, -0x0e87, 0x0e88, -0x0e8a, 0x0e8a, -0x0e8d, 0x0e8d, -0x0e94, 0x0e97, -0x0e99, 0x0e9f, -0x0ea1, 0x0ea3, +0x0e86, 0x0e8a, +0x0e8c, 0x0ea3, 0x0ea5, 0x0ea5, -0x0ea7, 0x0ea7, -0x0eaa, 0x0eab, -0x0ead, 0x0eb0, +0x0ea7, 0x0eb0, 0x0eb2, 0x0eb3, 0x0ebd, 0x0ebd, 0x0ec0, 0x0ec4, @@ -11745,7 +11868,6 @@ CR_Grapheme_Base[] = { 806, 0x1a90, 0x1a99, 0x1aa0, 0x1aad, 0x1b04, 0x1b33, -0x1b35, 0x1b35, 0x1b3b, 0x1b3b, 0x1b3d, 0x1b41, 0x1b43, 0x1b4b, @@ -11770,6 +11892,7 @@ CR_Grapheme_Base[] = { 806, 0x1ce9, 0x1cec, 0x1cee, 0x1cf3, 0x1cf5, 0x1cf7, +0x1cfa, 0x1cfa, 0x1d00, 0x1dbf, 0x1e00, 0x1f15, 0x1f18, 0x1f1d, @@ -11799,9 +11922,7 @@ CR_Grapheme_Base[] = { 806, 0x2440, 0x244a, 0x2460, 0x2b73, 0x2b76, 0x2b95, -0x2b98, 0x2bc8, -0x2bca, 0x2bfe, -0x2c00, 0x2c2e, +0x2b98, 0x2c2e, 0x2c30, 0x2c5e, 0x2c60, 0x2cee, 0x2cf2, 0x2cf3, @@ -11819,7 +11940,7 @@ CR_Grapheme_Base[] = { 806, 0x2dc8, 0x2dce, 0x2dd0, 0x2dd6, 0x2dd8, 0x2dde, -0x2e00, 0x2e4e, +0x2e00, 0x2e4f, 0x2e80, 0x2e99, 0x2e9b, 0x2ef3, 0x2f00, 0x2fd5, @@ -11833,8 +11954,7 @@ CR_Grapheme_Base[] = { 806, 0x3190, 0x31ba, 0x31c0, 0x31e3, 0x31f0, 0x321e, -0x3220, 0x32fe, -0x3300, 0x4db5, +0x3220, 0x4db5, 0x4dc0, 0x9fef, 0xa000, 0xa48c, 0xa490, 0xa4c6, @@ -11844,7 +11964,8 @@ CR_Grapheme_Base[] = { 806, 0xa67e, 0xa69d, 0xa6a0, 0xa6ef, 0xa6f2, 0xa6f7, -0xa700, 0xa7b9, +0xa700, 0xa7bf, +0xa7c2, 0xa7c6, 0xa7f7, 0xa801, 0xa803, 0xa805, 0xa807, 0xa80a, @@ -11862,7 +11983,7 @@ CR_Grapheme_Base[] = { 806, 0xa983, 0xa9b2, 0xa9b4, 0xa9b5, 0xa9ba, 0xa9bb, -0xa9bd, 0xa9cd, +0xa9be, 0xa9cd, 0xa9cf, 0xa9d9, 0xa9de, 0xa9e4, 0xa9e6, 0xa9fe, @@ -11887,7 +12008,7 @@ CR_Grapheme_Base[] = { 806, 0xab11, 0xab16, 0xab20, 0xab26, 0xab28, 0xab2e, -0xab30, 0xab65, +0xab30, 0xab67, 0xab70, 0xabe4, 0xabe6, 0xabe7, 0xabe9, 0xabec, @@ -11996,6 +12117,7 @@ CR_Grapheme_Base[] = { 806, 0x10f00, 0x10f27, 0x10f30, 0x10f45, 0x10f51, 0x10f59, +0x10fe0, 0x10ff6, 0x11000, 0x11000, 0x11002, 0x11037, 0x11047, 0x1104d, @@ -12049,6 +12171,7 @@ CR_Grapheme_Base[] = { 806, 0x11447, 0x11459, 0x1145b, 0x1145b, 0x1145d, 0x1145d, +0x1145f, 0x1145f, 0x11480, 0x114af, 0x114b1, 0x114b2, 0x114b9, 0x114b9, @@ -12072,6 +12195,7 @@ CR_Grapheme_Base[] = { 806, 0x116ac, 0x116ac, 0x116ae, 0x116af, 0x116b6, 0x116b6, +0x116b8, 0x116b8, 0x116c0, 0x116c9, 0x11700, 0x1171a, 0x11720, 0x11721, @@ -12082,14 +12206,17 @@ CR_Grapheme_Base[] = { 806, 0x1183b, 0x1183b, 0x118a0, 0x118f2, 0x118ff, 0x118ff, +0x119a0, 0x119a7, +0x119aa, 0x119d3, +0x119dc, 0x119df, +0x119e1, 0x119e4, 0x11a00, 0x11a00, 0x11a0b, 0x11a32, 0x11a39, 0x11a3a, 0x11a3f, 0x11a46, 0x11a50, 0x11a50, 0x11a57, 0x11a58, -0x11a5c, 0x11a83, -0x11a86, 0x11a89, +0x11a5c, 0x11a89, 0x11a97, 0x11a97, 0x11a9a, 0x11aa2, 0x11ac0, 0x11af8, @@ -12116,7 +12243,8 @@ CR_Grapheme_Base[] = { 806, 0x11da0, 0x11da9, 0x11ee0, 0x11ef2, 0x11ef5, 0x11ef8, -0x12000, 0x12399, +0x11fc0, 0x11ff1, +0x11fff, 0x12399, 0x12400, 0x1246e, 0x12470, 0x12474, 0x12480, 0x12543, @@ -12135,13 +12263,15 @@ CR_Grapheme_Base[] = { 806, 0x16b63, 0x16b77, 0x16b7d, 0x16b8f, 0x16e40, 0x16e9a, -0x16f00, 0x16f44, -0x16f50, 0x16f7e, +0x16f00, 0x16f4a, +0x16f50, 0x16f87, 0x16f93, 0x16f9f, -0x16fe0, 0x16fe1, -0x17000, 0x187f1, +0x16fe0, 0x16fe3, +0x17000, 0x187f7, 0x18800, 0x18af2, 0x1b000, 0x1b11e, +0x1b150, 0x1b152, +0x1b164, 0x1b167, 0x1b170, 0x1b2fb, 0x1bc00, 0x1bc6a, 0x1bc70, 0x1bc7c, @@ -12187,12 +12317,21 @@ CR_Grapheme_Base[] = { 806, 0x1da6d, 0x1da74, 0x1da76, 0x1da83, 0x1da85, 0x1da8b, +0x1e100, 0x1e12c, +0x1e137, 0x1e13d, +0x1e140, 0x1e149, +0x1e14e, 0x1e14f, +0x1e2c0, 0x1e2eb, +0x1e2f0, 0x1e2f9, +0x1e2ff, 0x1e2ff, 0x1e800, 0x1e8c4, 0x1e8c7, 0x1e8cf, 0x1e900, 0x1e943, +0x1e94b, 0x1e94b, 0x1e950, 0x1e959, 0x1e95e, 0x1e95f, 0x1ec71, 0x1ecb4, +0x1ed01, 0x1ed3d, 0x1ee00, 0x1ee03, 0x1ee05, 0x1ee1f, 0x1ee21, 0x1ee22, @@ -12234,33 +12373,36 @@ CR_Grapheme_Base[] = { 806, 0x1f0c1, 0x1f0cf, 0x1f0d1, 0x1f0f5, 0x1f100, 0x1f10c, -0x1f110, 0x1f16b, +0x1f110, 0x1f16c, 0x1f170, 0x1f1ac, 0x1f1e6, 0x1f202, 0x1f210, 0x1f23b, 0x1f240, 0x1f248, 0x1f250, 0x1f251, 0x1f260, 0x1f265, -0x1f300, 0x1f6d4, +0x1f300, 0x1f6d5, 0x1f6e0, 0x1f6ec, -0x1f6f0, 0x1f6f9, +0x1f6f0, 0x1f6fa, 0x1f700, 0x1f773, 0x1f780, 0x1f7d8, +0x1f7e0, 0x1f7eb, 0x1f800, 0x1f80b, 0x1f810, 0x1f847, 0x1f850, 0x1f859, 0x1f860, 0x1f887, 0x1f890, 0x1f8ad, 0x1f900, 0x1f90b, -0x1f910, 0x1f93e, -0x1f940, 0x1f970, +0x1f90d, 0x1f971, 0x1f973, 0x1f976, -0x1f97a, 0x1f97a, -0x1f97c, 0x1f9a2, -0x1f9b0, 0x1f9b9, -0x1f9c0, 0x1f9c2, -0x1f9d0, 0x1f9ff, +0x1f97a, 0x1f9a2, +0x1f9a5, 0x1f9aa, +0x1f9ae, 0x1f9ca, +0x1f9cd, 0x1fa53, 0x1fa60, 0x1fa6d, +0x1fa70, 0x1fa73, +0x1fa78, 0x1fa7a, +0x1fa80, 0x1fa82, +0x1fa90, 0x1fa95, 0x20000, 0x2a6d6, 0x2a700, 0x2b734, 0x2b740, 0x2b81d, @@ -12271,7 +12413,7 @@ CR_Grapheme_Base[] = { 806, /* PROPERTY: 'Grapheme_Extend': Derived Property */ static const OnigCodePoint -CR_Grapheme_Extend[] = { 331, +CR_Grapheme_Extend[] = { 335, 0x0300, 0x036f, 0x0483, 0x0489, 0x0591, 0x05bd, @@ -12370,8 +12512,7 @@ CR_Grapheme_Extend[] = { 331, 0x0e34, 0x0e3a, 0x0e47, 0x0e4e, 0x0eb1, 0x0eb1, -0x0eb4, 0x0eb9, -0x0ebb, 0x0ebc, +0x0eb4, 0x0ebc, 0x0ec8, 0x0ecd, 0x0f18, 0x0f19, 0x0f35, 0x0f35, @@ -12422,8 +12563,7 @@ CR_Grapheme_Extend[] = { 331, 0x1a7f, 0x1a7f, 0x1ab0, 0x1abe, 0x1b00, 0x1b03, -0x1b34, 0x1b34, -0x1b36, 0x1b3a, +0x1b34, 0x1b3a, 0x1b3c, 0x1b3c, 0x1b42, 0x1b42, 0x1b6b, 0x1b73, @@ -12468,7 +12608,7 @@ CR_Grapheme_Extend[] = { 331, 0xa980, 0xa982, 0xa9b3, 0xa9b3, 0xa9b6, 0xa9b9, -0xa9bc, 0xa9bc, +0xa9bc, 0xa9bd, 0xa9e5, 0xa9e5, 0xaa29, 0xaa2e, 0xaa31, 0xaa32, @@ -12553,6 +12693,9 @@ CR_Grapheme_Extend[] = { 331, 0x11727, 0x1172b, 0x1182f, 0x11837, 0x11839, 0x1183a, +0x119d4, 0x119d7, +0x119da, 0x119db, +0x119e0, 0x119e0, 0x11a01, 0x11a0a, 0x11a33, 0x11a38, 0x11a3b, 0x11a3e, @@ -12579,6 +12722,7 @@ CR_Grapheme_Extend[] = { 331, 0x11ef3, 0x11ef4, 0x16af0, 0x16af4, 0x16b30, 0x16b36, +0x16f4f, 0x16f4f, 0x16f8f, 0x16f92, 0x1bc9d, 0x1bc9e, 0x1d165, 0x1d165, @@ -12599,6 +12743,8 @@ CR_Grapheme_Extend[] = { 331, 0x1e01b, 0x1e021, 0x1e023, 0x1e024, 0x1e026, 0x1e02a, +0x1e130, 0x1e136, +0x1e2ec, 0x1e2ef, 0x1e8d0, 0x1e8d6, 0x1e944, 0x1e94a, 0xe0020, 0xe007f, @@ -12607,7 +12753,7 @@ CR_Grapheme_Extend[] = { 331, /* PROPERTY: 'Grapheme_Link': Derived Property */ static const OnigCodePoint -CR_Grapheme_Link[] = { 50, +CR_Grapheme_Link[] = { 52, 0x094d, 0x094d, 0x09cd, 0x09cd, 0x0a4d, 0x0a4d, @@ -12620,6 +12766,7 @@ CR_Grapheme_Link[] = { 50, 0x0d4d, 0x0d4d, 0x0dca, 0x0dca, 0x0e3a, 0x0e3a, +0x0eba, 0x0eba, 0x0f84, 0x0f84, 0x1039, 0x103a, 0x1714, 0x1714, @@ -12652,6 +12799,7 @@ CR_Grapheme_Link[] = { 50, 0x116b6, 0x116b6, 0x1172b, 0x1172b, 0x11839, 0x11839, +0x119e0, 0x119e0, 0x11a34, 0x11a34, 0x11a47, 0x11a47, 0x11a99, 0x11a99, @@ -12841,10 +12989,11 @@ CR_Hex_Digit[] = { 6, /* PROPERTY: 'Hiragana': Script */ static const OnigCodePoint -CR_Hiragana[] = { 4, +CR_Hiragana[] = { 5, 0x3041, 0x3096, 0x309d, 0x309f, 0x1b001, 0x1b11e, +0x1b150, 0x1b152, 0x1f200, 0x1f200, }; /* END of CR_Hiragana */ @@ -12878,7 +13027,7 @@ CR_IDS_Trinary_Operator[] = { 1, /* PROPERTY: 'ID_Continue': Derived Property */ static const OnigCodePoint -CR_ID_Continue[] = { 707, +CR_ID_Continue[] = { 713, 0x0030, 0x0039, 0x0041, 0x005a, 0x005f, 0x005f, @@ -13064,17 +13213,10 @@ CR_ID_Continue[] = { 707, 0x0e50, 0x0e59, 0x0e81, 0x0e82, 0x0e84, 0x0e84, -0x0e87, 0x0e88, -0x0e8a, 0x0e8a, -0x0e8d, 0x0e8d, -0x0e94, 0x0e97, -0x0e99, 0x0e9f, -0x0ea1, 0x0ea3, +0x0e86, 0x0e8a, +0x0e8c, 0x0ea3, 0x0ea5, 0x0ea5, -0x0ea7, 0x0ea7, -0x0eaa, 0x0eab, -0x0ead, 0x0eb9, -0x0ebb, 0x0ebd, +0x0ea7, 0x0ebd, 0x0ec0, 0x0ec4, 0x0ec6, 0x0ec6, 0x0ec8, 0x0ecd, @@ -13166,7 +13308,7 @@ CR_ID_Continue[] = { 707, 0x1c90, 0x1cba, 0x1cbd, 0x1cbf, 0x1cd0, 0x1cd2, -0x1cd4, 0x1cf9, +0x1cd4, 0x1cfa, 0x1d00, 0x1df9, 0x1dfb, 0x1f15, 0x1f18, 0x1f1d, @@ -13250,7 +13392,8 @@ CR_ID_Continue[] = { 707, 0xa67f, 0xa6f1, 0xa717, 0xa71f, 0xa722, 0xa788, -0xa78b, 0xa7b9, +0xa78b, 0xa7bf, +0xa7c2, 0xa7c6, 0xa7f7, 0xa827, 0xa840, 0xa873, 0xa880, 0xa8c5, @@ -13277,7 +13420,7 @@ CR_ID_Continue[] = { 707, 0xab20, 0xab26, 0xab28, 0xab2e, 0xab30, 0xab5a, -0xab5c, 0xab65, +0xab5c, 0xab67, 0xab70, 0xabea, 0xabec, 0xabed, 0xabf0, 0xabf9, @@ -13379,6 +13522,7 @@ CR_ID_Continue[] = { 707, 0x10f00, 0x10f1c, 0x10f27, 0x10f27, 0x10f30, 0x10f50, +0x10fe0, 0x10ff6, 0x11000, 0x11046, 0x11066, 0x1106f, 0x1107f, 0x110ba, @@ -13420,7 +13564,7 @@ CR_ID_Continue[] = { 707, 0x11370, 0x11374, 0x11400, 0x1144a, 0x11450, 0x11459, -0x1145e, 0x1145e, +0x1145e, 0x1145f, 0x11480, 0x114c5, 0x114c7, 0x114c7, 0x114d0, 0x114d9, @@ -13430,7 +13574,7 @@ CR_ID_Continue[] = { 707, 0x11600, 0x11640, 0x11644, 0x11644, 0x11650, 0x11659, -0x11680, 0x116b7, +0x11680, 0x116b8, 0x116c0, 0x116c9, 0x11700, 0x1171a, 0x1171d, 0x1172b, @@ -13438,10 +13582,13 @@ CR_ID_Continue[] = { 707, 0x11800, 0x1183a, 0x118a0, 0x118e9, 0x118ff, 0x118ff, +0x119a0, 0x119a7, +0x119aa, 0x119d7, +0x119da, 0x119e1, +0x119e3, 0x119e4, 0x11a00, 0x11a3e, 0x11a47, 0x11a47, -0x11a50, 0x11a83, -0x11a86, 0x11a99, +0x11a50, 0x11a99, 0x11a9d, 0x11a9d, 0x11ac0, 0x11af8, 0x11c00, 0x11c08, @@ -13481,13 +13628,16 @@ CR_ID_Continue[] = { 707, 0x16b63, 0x16b77, 0x16b7d, 0x16b8f, 0x16e40, 0x16e7f, -0x16f00, 0x16f44, -0x16f50, 0x16f7e, +0x16f00, 0x16f4a, +0x16f4f, 0x16f87, 0x16f8f, 0x16f9f, 0x16fe0, 0x16fe1, -0x17000, 0x187f1, +0x16fe3, 0x16fe3, +0x17000, 0x187f7, 0x18800, 0x18af2, 0x1b000, 0x1b11e, +0x1b150, 0x1b152, +0x1b164, 0x1b167, 0x1b170, 0x1b2fb, 0x1bc00, 0x1bc6a, 0x1bc70, 0x1bc7c, @@ -13542,9 +13692,14 @@ CR_ID_Continue[] = { 707, 0x1e01b, 0x1e021, 0x1e023, 0x1e024, 0x1e026, 0x1e02a, +0x1e100, 0x1e12c, +0x1e130, 0x1e13d, +0x1e140, 0x1e149, +0x1e14e, 0x1e14e, +0x1e2c0, 0x1e2f9, 0x1e800, 0x1e8c4, 0x1e8d0, 0x1e8d6, -0x1e900, 0x1e94a, +0x1e900, 0x1e94b, 0x1e950, 0x1e959, 0x1ee00, 0x1ee03, 0x1ee05, 0x1ee1f, @@ -13590,7 +13745,7 @@ CR_ID_Continue[] = { 707, /* PROPERTY: 'ID_Start': Derived Property */ static const OnigCodePoint -CR_ID_Start[] = { 599, +CR_ID_Start[] = { 609, 0x0041, 0x005a, 0x0061, 0x007a, 0x00aa, 0x00aa, @@ -13735,16 +13890,10 @@ CR_ID_Start[] = { 599, 0x0e40, 0x0e46, 0x0e81, 0x0e82, 0x0e84, 0x0e84, -0x0e87, 0x0e88, -0x0e8a, 0x0e8a, -0x0e8d, 0x0e8d, -0x0e94, 0x0e97, -0x0e99, 0x0e9f, -0x0ea1, 0x0ea3, +0x0e86, 0x0e8a, +0x0e8c, 0x0ea3, 0x0ea5, 0x0ea5, -0x0ea7, 0x0ea7, -0x0eaa, 0x0eab, -0x0ead, 0x0eb0, +0x0ea7, 0x0eb0, 0x0eb2, 0x0eb3, 0x0ebd, 0x0ebd, 0x0ec0, 0x0ec4, @@ -13824,8 +13973,9 @@ CR_ID_Start[] = { 599, 0x1c90, 0x1cba, 0x1cbd, 0x1cbf, 0x1ce9, 0x1cec, -0x1cee, 0x1cf1, +0x1cee, 0x1cf3, 0x1cf5, 0x1cf6, +0x1cfa, 0x1cfa, 0x1d00, 0x1dbf, 0x1e00, 0x1f15, 0x1f18, 0x1f1d, @@ -13905,7 +14055,8 @@ CR_ID_Start[] = { 599, 0xa6a0, 0xa6ef, 0xa717, 0xa71f, 0xa722, 0xa788, -0xa78b, 0xa7b9, +0xa78b, 0xa7bf, +0xa7c2, 0xa7c6, 0xa7f7, 0xa801, 0xa803, 0xa805, 0xa807, 0xa80a, @@ -13943,7 +14094,7 @@ CR_ID_Start[] = { 599, 0xab20, 0xab26, 0xab28, 0xab2e, 0xab30, 0xab5a, -0xab5c, 0xab65, +0xab5c, 0xab67, 0xab70, 0xabe2, 0xac00, 0xd7a3, 0xd7b0, 0xd7c6, @@ -14031,6 +14182,7 @@ CR_ID_Start[] = { 599, 0x10f00, 0x10f1c, 0x10f27, 0x10f27, 0x10f30, 0x10f45, +0x10fe0, 0x10ff6, 0x11003, 0x11037, 0x11083, 0x110af, 0x110d0, 0x110e8, @@ -14061,6 +14213,7 @@ CR_ID_Start[] = { 599, 0x1135d, 0x11361, 0x11400, 0x11434, 0x11447, 0x1144a, +0x1145f, 0x1145f, 0x11480, 0x114af, 0x114c4, 0x114c5, 0x114c7, 0x114c7, @@ -14069,16 +14222,20 @@ CR_ID_Start[] = { 599, 0x11600, 0x1162f, 0x11644, 0x11644, 0x11680, 0x116aa, +0x116b8, 0x116b8, 0x11700, 0x1171a, 0x11800, 0x1182b, 0x118a0, 0x118df, 0x118ff, 0x118ff, +0x119a0, 0x119a7, +0x119aa, 0x119d0, +0x119e1, 0x119e1, +0x119e3, 0x119e3, 0x11a00, 0x11a00, 0x11a0b, 0x11a32, 0x11a3a, 0x11a3a, 0x11a50, 0x11a50, -0x11a5c, 0x11a83, -0x11a86, 0x11a89, +0x11a5c, 0x11a89, 0x11a9d, 0x11a9d, 0x11ac0, 0x11af8, 0x11c00, 0x11c08, @@ -14107,13 +14264,16 @@ CR_ID_Start[] = { 599, 0x16b63, 0x16b77, 0x16b7d, 0x16b8f, 0x16e40, 0x16e7f, -0x16f00, 0x16f44, +0x16f00, 0x16f4a, 0x16f50, 0x16f50, 0x16f93, 0x16f9f, 0x16fe0, 0x16fe1, -0x17000, 0x187f1, +0x16fe3, 0x16fe3, +0x17000, 0x187f7, 0x18800, 0x18af2, 0x1b000, 0x1b11e, +0x1b150, 0x1b152, +0x1b164, 0x1b167, 0x1b170, 0x1b2fb, 0x1bc00, 0x1bc6a, 0x1bc70, 0x1bc7c, @@ -14149,8 +14309,13 @@ CR_ID_Start[] = { 599, 0x1d78a, 0x1d7a8, 0x1d7aa, 0x1d7c2, 0x1d7c4, 0x1d7cb, +0x1e100, 0x1e12c, +0x1e137, 0x1e13d, +0x1e14e, 0x1e14e, +0x1e2c0, 0x1e2eb, 0x1e800, 0x1e8c4, 0x1e900, 0x1e943, +0x1e94b, 0x1e94b, 0x1ee00, 0x1ee03, 0x1ee05, 0x1ee1f, 0x1ee21, 0x1ee22, @@ -14202,7 +14367,7 @@ CR_Ideographic[] = { 16, 0x4e00, 0x9fef, 0xf900, 0xfa6d, 0xfa70, 0xfad9, -0x17000, 0x187f1, +0x17000, 0x187f7, 0x18800, 0x18af2, 0x1b170, 0x1b2fb, 0x20000, 0x2a6d6, @@ -14227,7 +14392,7 @@ CR_Inherited[] = { 28, 0x0485, 0x0486, 0x064b, 0x0655, 0x0670, 0x0670, -0x0951, 0x0952, +0x0951, 0x0954, 0x1ab0, 0x1abe, 0x1cd0, 0x1cd2, 0x1cd4, 0x1ce0, @@ -14308,7 +14473,7 @@ CR_Kannada[] = { 13, /* PROPERTY: 'Katakana': Script */ static const OnigCodePoint -CR_Katakana[] = { 8, +CR_Katakana[] = { 9, 0x30a1, 0x30fa, 0x30fd, 0x30ff, 0x31f0, 0x31ff, @@ -14317,6 +14482,7 @@ CR_Katakana[] = { 8, 0xff66, 0xff6f, 0xff71, 0xff9d, 0x1b000, 0x1b000, +0x1b164, 0x1b167, }; /* END of CR_Katakana */ /* PROPERTY: 'Kayah_Li': Script */ @@ -14364,7 +14530,7 @@ CR_Khudawadi[] = { 2, /* PROPERTY: 'L': Major Category */ static const OnigCodePoint -CR_L[] = { 599, +CR_L[] = { 609, 0x0041, 0x005a, 0x0061, 0x007a, 0x00aa, 0x00aa, @@ -14509,16 +14675,10 @@ CR_L[] = { 599, 0x0e40, 0x0e46, 0x0e81, 0x0e82, 0x0e84, 0x0e84, -0x0e87, 0x0e88, -0x0e8a, 0x0e8a, -0x0e8d, 0x0e8d, -0x0e94, 0x0e97, -0x0e99, 0x0e9f, -0x0ea1, 0x0ea3, +0x0e86, 0x0e8a, +0x0e8c, 0x0ea3, 0x0ea5, 0x0ea5, -0x0ea7, 0x0ea7, -0x0eaa, 0x0eab, -0x0ead, 0x0eb0, +0x0ea7, 0x0eb0, 0x0eb2, 0x0eb3, 0x0ebd, 0x0ebd, 0x0ec0, 0x0ec4, @@ -14599,8 +14759,9 @@ CR_L[] = { 599, 0x1c90, 0x1cba, 0x1cbd, 0x1cbf, 0x1ce9, 0x1cec, -0x1cee, 0x1cf1, +0x1cee, 0x1cf3, 0x1cf5, 0x1cf6, +0x1cfa, 0x1cfa, 0x1d00, 0x1dbf, 0x1e00, 0x1f15, 0x1f18, 0x1f1d, @@ -14681,7 +14842,8 @@ CR_L[] = { 599, 0xa6a0, 0xa6e5, 0xa717, 0xa71f, 0xa722, 0xa788, -0xa78b, 0xa7b9, +0xa78b, 0xa7bf, +0xa7c2, 0xa7c6, 0xa7f7, 0xa801, 0xa803, 0xa805, 0xa807, 0xa80a, @@ -14719,7 +14881,7 @@ CR_L[] = { 599, 0xab20, 0xab26, 0xab28, 0xab2e, 0xab30, 0xab5a, -0xab5c, 0xab65, +0xab5c, 0xab67, 0xab70, 0xabe2, 0xac00, 0xd7a3, 0xd7b0, 0xd7c6, @@ -14806,6 +14968,7 @@ CR_L[] = { 599, 0x10f00, 0x10f1c, 0x10f27, 0x10f27, 0x10f30, 0x10f45, +0x10fe0, 0x10ff6, 0x11003, 0x11037, 0x11083, 0x110af, 0x110d0, 0x110e8, @@ -14836,6 +14999,7 @@ CR_L[] = { 599, 0x1135d, 0x11361, 0x11400, 0x11434, 0x11447, 0x1144a, +0x1145f, 0x1145f, 0x11480, 0x114af, 0x114c4, 0x114c5, 0x114c7, 0x114c7, @@ -14844,16 +15008,20 @@ CR_L[] = { 599, 0x11600, 0x1162f, 0x11644, 0x11644, 0x11680, 0x116aa, +0x116b8, 0x116b8, 0x11700, 0x1171a, 0x11800, 0x1182b, 0x118a0, 0x118df, 0x118ff, 0x118ff, +0x119a0, 0x119a7, +0x119aa, 0x119d0, +0x119e1, 0x119e1, +0x119e3, 0x119e3, 0x11a00, 0x11a00, 0x11a0b, 0x11a32, 0x11a3a, 0x11a3a, 0x11a50, 0x11a50, -0x11a5c, 0x11a83, -0x11a86, 0x11a89, +0x11a5c, 0x11a89, 0x11a9d, 0x11a9d, 0x11ac0, 0x11af8, 0x11c00, 0x11c08, @@ -14881,13 +15049,16 @@ CR_L[] = { 599, 0x16b63, 0x16b77, 0x16b7d, 0x16b8f, 0x16e40, 0x16e7f, -0x16f00, 0x16f44, +0x16f00, 0x16f4a, 0x16f50, 0x16f50, 0x16f93, 0x16f9f, 0x16fe0, 0x16fe1, -0x17000, 0x187f1, +0x16fe3, 0x16fe3, +0x17000, 0x187f7, 0x18800, 0x18af2, 0x1b000, 0x1b11e, +0x1b150, 0x1b152, +0x1b164, 0x1b167, 0x1b170, 0x1b2fb, 0x1bc00, 0x1bc6a, 0x1bc70, 0x1bc7c, @@ -14923,8 +15094,13 @@ CR_L[] = { 599, 0x1d78a, 0x1d7a8, 0x1d7aa, 0x1d7c2, 0x1d7c4, 0x1d7cb, +0x1e100, 0x1e12c, +0x1e137, 0x1e13d, +0x1e14e, 0x1e14e, +0x1e2c0, 0x1e2eb, 0x1e800, 0x1e8c4, 0x1e900, 0x1e943, +0x1e94b, 0x1e94b, 0x1ee00, 0x1ee03, 0x1ee05, 0x1ee1f, 0x1ee21, 0x1ee22, @@ -14968,7 +15144,7 @@ CR_L[] = { 599, /* PROPERTY: 'LC': General Category */ static const OnigCodePoint -CR_LC[] = { 130, +CR_LC[] = { 131, 0x0041, 0x005a, 0x0061, 0x007a, 0x00b5, 0x00b5, @@ -15052,10 +15228,11 @@ CR_LC[] = { 130, 0xa722, 0xa76f, 0xa771, 0xa787, 0xa78b, 0xa78e, -0xa790, 0xa7b9, +0xa790, 0xa7bf, +0xa7c2, 0xa7c6, 0xa7fa, 0xa7fa, 0xab30, 0xab5a, -0xab60, 0xab65, +0xab60, 0xab67, 0xab70, 0xabbf, 0xfb00, 0xfb06, 0xfb13, 0xfb17, @@ -15103,20 +15280,13 @@ CR_LC[] = { 130, /* PROPERTY: 'Lao': Script */ static const OnigCodePoint -CR_Lao[] = { 18, +CR_Lao[] = { 11, 0x0e81, 0x0e82, 0x0e84, 0x0e84, -0x0e87, 0x0e88, -0x0e8a, 0x0e8a, -0x0e8d, 0x0e8d, -0x0e94, 0x0e97, -0x0e99, 0x0e9f, -0x0ea1, 0x0ea3, +0x0e86, 0x0e8a, +0x0e8c, 0x0ea3, 0x0ea5, 0x0ea5, -0x0ea7, 0x0ea7, -0x0eaa, 0x0eab, -0x0ead, 0x0eb9, -0x0ebb, 0x0ebd, +0x0ea7, 0x0ebd, 0x0ec0, 0x0ec4, 0x0ec6, 0x0ec6, 0x0ec8, 0x0ecd, @@ -15126,7 +15296,7 @@ CR_Lao[] = { 18, /* PROPERTY: 'Latin': Script */ static const OnigCodePoint -CR_Latin[] = { 30, +CR_Latin[] = { 32, 0x0041, 0x005a, 0x0061, 0x007a, 0x00aa, 0x00aa, @@ -15150,10 +15320,12 @@ CR_Latin[] = { 30, 0x2160, 0x2188, 0x2c60, 0x2c7f, 0xa722, 0xa787, -0xa78b, 0xa7b9, +0xa78b, 0xa7bf, +0xa7c2, 0xa7c6, 0xa7f7, 0xa7ff, 0xab30, 0xab5a, 0xab5c, 0xab64, +0xab66, 0xab67, 0xfb00, 0xfb06, 0xff21, 0xff3a, 0xff41, 0xff5a, @@ -15205,7 +15377,7 @@ CR_Lisu[] = { 1, /* PROPERTY: 'Ll': General Category */ static const OnigCodePoint -CR_Ll[] = { 638, +CR_Ll[] = { 642, 0x0061, 0x007a, 0x00b5, 0x00b5, 0x00df, 0x00f6, @@ -15803,9 +15975,13 @@ CR_Ll[] = { 638, 0xa7b5, 0xa7b5, 0xa7b7, 0xa7b7, 0xa7b9, 0xa7b9, +0xa7bb, 0xa7bb, +0xa7bd, 0xa7bd, +0xa7bf, 0xa7bf, +0xa7c3, 0xa7c3, 0xa7fa, 0xa7fa, 0xab30, 0xab5a, -0xab60, 0xab65, +0xab60, 0xab67, 0xab70, 0xabbf, 0xfb00, 0xfb06, 0xfb13, 0xfb17, @@ -15848,7 +16024,7 @@ CR_Ll[] = { 638, /* PROPERTY: 'Lm': General Category */ static const OnigCodePoint -CR_Lm[] = { 57, +CR_Lm[] = { 60, 0x02b0, 0x02c1, 0x02c6, 0x02d1, 0x02e0, 0x02e4, @@ -15906,11 +16082,14 @@ CR_Lm[] = { 57, 0x16b40, 0x16b43, 0x16f93, 0x16f9f, 0x16fe0, 0x16fe1, +0x16fe3, 0x16fe3, +0x1e137, 0x1e13d, +0x1e94b, 0x1e94b, }; /* END of CR_Lm */ /* PROPERTY: 'Lo': General Category */ static const OnigCodePoint -CR_Lo[] = { 470, +CR_Lo[] = { 476, 0x00aa, 0x00aa, 0x00ba, 0x00ba, 0x01bb, 0x01bb, @@ -16029,16 +16208,10 @@ CR_Lo[] = { 470, 0x0e40, 0x0e45, 0x0e81, 0x0e82, 0x0e84, 0x0e84, -0x0e87, 0x0e88, -0x0e8a, 0x0e8a, -0x0e8d, 0x0e8d, -0x0e94, 0x0e97, -0x0e99, 0x0e9f, -0x0ea1, 0x0ea3, +0x0e86, 0x0e8a, +0x0e8c, 0x0ea3, 0x0ea5, 0x0ea5, -0x0ea7, 0x0ea7, -0x0eaa, 0x0eab, -0x0ead, 0x0eb0, +0x0ea7, 0x0eb0, 0x0eb2, 0x0eb3, 0x0ebd, 0x0ebd, 0x0ec0, 0x0ec4, @@ -16108,8 +16281,9 @@ CR_Lo[] = { 470, 0x1c4d, 0x1c4f, 0x1c5a, 0x1c77, 0x1ce9, 0x1cec, -0x1cee, 0x1cf1, +0x1cee, 0x1cf3, 0x1cf5, 0x1cf6, +0x1cfa, 0x1cfa, 0x2135, 0x2138, 0x2d30, 0x2d67, 0x2d80, 0x2d96, @@ -16259,6 +16433,7 @@ CR_Lo[] = { 470, 0x10f00, 0x10f1c, 0x10f27, 0x10f27, 0x10f30, 0x10f45, +0x10fe0, 0x10ff6, 0x11003, 0x11037, 0x11083, 0x110af, 0x110d0, 0x110e8, @@ -16289,6 +16464,7 @@ CR_Lo[] = { 470, 0x1135d, 0x11361, 0x11400, 0x11434, 0x11447, 0x1144a, +0x1145f, 0x1145f, 0x11480, 0x114af, 0x114c4, 0x114c5, 0x114c7, 0x114c7, @@ -16297,15 +16473,19 @@ CR_Lo[] = { 470, 0x11600, 0x1162f, 0x11644, 0x11644, 0x11680, 0x116aa, +0x116b8, 0x116b8, 0x11700, 0x1171a, 0x11800, 0x1182b, 0x118ff, 0x118ff, +0x119a0, 0x119a7, +0x119aa, 0x119d0, +0x119e1, 0x119e1, +0x119e3, 0x119e3, 0x11a00, 0x11a00, 0x11a0b, 0x11a32, 0x11a3a, 0x11a3a, 0x11a50, 0x11a50, -0x11a5c, 0x11a83, -0x11a86, 0x11a89, +0x11a5c, 0x11a89, 0x11a9d, 0x11a9d, 0x11ac0, 0x11af8, 0x11c00, 0x11c08, @@ -16331,16 +16511,21 @@ CR_Lo[] = { 470, 0x16b00, 0x16b2f, 0x16b63, 0x16b77, 0x16b7d, 0x16b8f, -0x16f00, 0x16f44, +0x16f00, 0x16f4a, 0x16f50, 0x16f50, -0x17000, 0x187f1, +0x17000, 0x187f7, 0x18800, 0x18af2, 0x1b000, 0x1b11e, +0x1b150, 0x1b152, +0x1b164, 0x1b167, 0x1b170, 0x1b2fb, 0x1bc00, 0x1bc6a, 0x1bc70, 0x1bc7c, 0x1bc80, 0x1bc88, 0x1bc90, 0x1bc99, +0x1e100, 0x1e12c, +0x1e14e, 0x1e14e, +0x1e2c0, 0x1e2eb, 0x1e800, 0x1e8c4, 0x1ee00, 0x1ee03, 0x1ee05, 0x1ee1f, @@ -16415,7 +16600,7 @@ CR_Lt[] = { 10, /* PROPERTY: 'Lu': General Category */ static const OnigCodePoint -CR_Lu[] = { 631, +CR_Lu[] = { 636, 0x0041, 0x005a, 0x00c0, 0x00d6, 0x00d8, 0x00de, @@ -17009,6 +17194,11 @@ CR_Lu[] = { 631, 0xa7b0, 0xa7b4, 0xa7b6, 0xa7b6, 0xa7b8, 0xa7b8, +0xa7ba, 0xa7ba, +0xa7bc, 0xa7bc, +0xa7be, 0xa7be, +0xa7c2, 0xa7c2, +0xa7c4, 0xa7c6, 0xff21, 0xff3a, 0x10400, 0x10427, 0x104b0, 0x104d3, @@ -17064,7 +17254,7 @@ CR_Lydian[] = { 2, /* PROPERTY: 'M': Major Category */ static const OnigCodePoint -CR_M[] = { 275, +CR_M[] = { 280, 0x0300, 0x036f, 0x0483, 0x0489, 0x0591, 0x05bd, @@ -17160,8 +17350,7 @@ CR_M[] = { 275, 0x0e34, 0x0e3a, 0x0e47, 0x0e4e, 0x0eb1, 0x0eb1, -0x0eb4, 0x0eb9, -0x0ebb, 0x0ebc, +0x0eb4, 0x0ebc, 0x0ec8, 0x0ecd, 0x0f18, 0x0f19, 0x0f35, 0x0f35, @@ -17209,7 +17398,7 @@ CR_M[] = { 275, 0x1cd0, 0x1cd2, 0x1cd4, 0x1ce8, 0x1ced, 0x1ced, -0x1cf2, 0x1cf4, +0x1cf4, 0x1cf4, 0x1cf7, 0x1cf9, 0x1dc0, 0x1df9, 0x1dfb, 0x1dff, @@ -17296,6 +17485,9 @@ CR_M[] = { 275, 0x116ab, 0x116b7, 0x1171d, 0x1172b, 0x1182c, 0x1183a, +0x119d1, 0x119d7, +0x119da, 0x119e0, +0x119e4, 0x119e4, 0x11a01, 0x11a0a, 0x11a33, 0x11a39, 0x11a3b, 0x11a3e, @@ -17317,7 +17509,8 @@ CR_M[] = { 275, 0x11ef3, 0x11ef6, 0x16af0, 0x16af4, 0x16b30, 0x16b36, -0x16f51, 0x16f7e, +0x16f4f, 0x16f4f, +0x16f51, 0x16f87, 0x16f8f, 0x16f92, 0x1bc9d, 0x1bc9e, 0x1d165, 0x1d169, @@ -17337,6 +17530,8 @@ CR_M[] = { 275, 0x1e01b, 0x1e021, 0x1e023, 0x1e024, 0x1e026, 0x1e02a, +0x1e130, 0x1e136, +0x1e2ec, 0x1e2ef, 0x1e8d0, 0x1e8d6, 0x1e944, 0x1e94a, 0xe0100, 0xe01ef, @@ -17546,7 +17741,7 @@ CR_Math[] = { 138, /* PROPERTY: 'Mc': General Category */ static const OnigCodePoint -CR_Mc[] = { 166, +CR_Mc[] = { 168, 0x0903, 0x0903, 0x093b, 0x093b, 0x093e, 0x0940, @@ -17633,7 +17828,6 @@ CR_Mc[] = { 166, 0x1c24, 0x1c2b, 0x1c34, 0x1c35, 0x1ce1, 0x1ce1, -0x1cf2, 0x1cf3, 0x1cf7, 0x1cf7, 0x302e, 0x302f, 0xa823, 0xa824, @@ -17644,7 +17838,7 @@ CR_Mc[] = { 166, 0xa983, 0xa983, 0xa9b4, 0xa9b5, 0xa9ba, 0xa9bb, -0xa9bd, 0xa9c0, +0xa9be, 0xa9c0, 0xaa2f, 0xaa30, 0xaa33, 0xaa34, 0xaa4d, 0xaa4d, @@ -17698,6 +17892,9 @@ CR_Mc[] = { 166, 0x11726, 0x11726, 0x1182c, 0x1182e, 0x11838, 0x11838, +0x119d1, 0x119d3, +0x119dc, 0x119df, +0x119e4, 0x119e4, 0x11a39, 0x11a39, 0x11a57, 0x11a58, 0x11a97, 0x11a97, @@ -17710,7 +17907,7 @@ CR_Mc[] = { 166, 0x11d93, 0x11d94, 0x11d96, 0x11d96, 0x11ef5, 0x11ef6, -0x16f51, 0x16f7e, +0x16f51, 0x16f87, 0x1d165, 0x1d166, 0x1d16d, 0x1d172, }; /* END of CR_Mc */ @@ -17763,14 +17960,14 @@ CR_Meroitic_Hieroglyphs[] = { 1, /* PROPERTY: 'Miao': Script */ static const OnigCodePoint CR_Miao[] = { 3, -0x16f00, 0x16f44, -0x16f50, 0x16f7e, +0x16f00, 0x16f4a, +0x16f4f, 0x16f87, 0x16f8f, 0x16f9f, }; /* END of CR_Miao */ /* PROPERTY: 'Mn': General Category */ static const OnigCodePoint -CR_Mn[] = { 313, +CR_Mn[] = { 318, 0x0300, 0x036f, 0x0483, 0x0487, 0x0591, 0x05bd, @@ -17859,8 +18056,7 @@ CR_Mn[] = { 313, 0x0e34, 0x0e3a, 0x0e47, 0x0e4e, 0x0eb1, 0x0eb1, -0x0eb4, 0x0eb9, -0x0ebb, 0x0ebc, +0x0eb4, 0x0ebc, 0x0ec8, 0x0ecd, 0x0f18, 0x0f19, 0x0f35, 0x0f35, @@ -17958,7 +18154,7 @@ CR_Mn[] = { 313, 0xa980, 0xa982, 0xa9b3, 0xa9b3, 0xa9b6, 0xa9b9, -0xa9bc, 0xa9bc, +0xa9bc, 0xa9bd, 0xa9e5, 0xa9e5, 0xaa29, 0xaa2e, 0xaa31, 0xaa32, @@ -18037,6 +18233,9 @@ CR_Mn[] = { 313, 0x11727, 0x1172b, 0x1182f, 0x11837, 0x11839, 0x1183a, +0x119d4, 0x119d7, +0x119da, 0x119db, +0x119e0, 0x119e0, 0x11a01, 0x11a0a, 0x11a33, 0x11a38, 0x11a3b, 0x11a3e, @@ -18063,6 +18262,7 @@ CR_Mn[] = { 313, 0x11ef3, 0x11ef4, 0x16af0, 0x16af4, 0x16b30, 0x16b36, +0x16f4f, 0x16f4f, 0x16f8f, 0x16f92, 0x1bc9d, 0x1bc9e, 0x1d167, 0x1d169, @@ -18081,6 +18281,8 @@ CR_Mn[] = { 313, 0x1e01b, 0x1e021, 0x1e023, 0x1e024, 0x1e026, 0x1e02a, +0x1e130, 0x1e136, +0x1e2ec, 0x1e2ef, 0x1e8d0, 0x1e8d6, 0x1e944, 0x1e94a, 0xe0100, 0xe01ef, @@ -18133,7 +18335,7 @@ CR_Myanmar[] = { 3, /* PROPERTY: 'N': Major Category */ static const OnigCodePoint -CR_N[] = { 125, +CR_N[] = { 130, 0x0030, 0x0039, 0x00b2, 0x00b3, 0x00b9, 0x00b9, @@ -18245,6 +18447,7 @@ CR_N[] = { 125, 0x11c50, 0x11c6c, 0x11d50, 0x11d59, 0x11da0, 0x11da9, +0x11fc0, 0x11fd4, 0x12400, 0x1246e, 0x16a60, 0x16a69, 0x16b50, 0x16b59, @@ -18253,11 +18456,15 @@ CR_N[] = { 125, 0x1d2e0, 0x1d2f3, 0x1d360, 0x1d378, 0x1d7ce, 0x1d7ff, +0x1e140, 0x1e149, +0x1e2f0, 0x1e2f9, 0x1e8c7, 0x1e8cf, 0x1e950, 0x1e959, 0x1ec71, 0x1ecab, 0x1ecad, 0x1ecaf, 0x1ecb1, 0x1ecb4, +0x1ed01, 0x1ed2d, +0x1ed2f, 0x1ed3d, 0x1f100, 0x1f10c, }; /* END of CR_N */ @@ -18268,6 +18475,14 @@ CR_Nabataean[] = { 2, 0x108a7, 0x108af, }; /* END of CR_Nabataean */ +/* PROPERTY: 'Nandinagari': Script */ +static const OnigCodePoint +CR_Nandinagari[] = { 3, +0x119a0, 0x119a7, +0x119aa, 0x119d7, +0x119da, 0x119e4, +}; /* END of CR_Nandinagari */ + /* PROPERTY: 'Nd': General Category */ #define CR_Nd CR_Digit @@ -18285,7 +18500,7 @@ static const OnigCodePoint CR_Newa[] = { 3, 0x11400, 0x11459, 0x1145b, 0x1145b, -0x1145d, 0x1145e, +0x1145d, 0x1145f, }; /* END of CR_Newa */ /* PROPERTY: 'Nko': Script */ @@ -18314,7 +18529,7 @@ CR_Nl[] = { 12, /* PROPERTY: 'No': General Category */ static const OnigCodePoint -CR_No[] = { 67, +CR_No[] = { 70, 0x00b2, 0x00b3, 0x00b9, 0x00b9, 0x00bc, 0x00be, @@ -18373,6 +18588,7 @@ CR_No[] = { 67, 0x1173a, 0x1173b, 0x118ea, 0x118f2, 0x11c5a, 0x11c6c, +0x11fc0, 0x11fd4, 0x16b5b, 0x16b61, 0x16e80, 0x16e96, 0x1d2e0, 0x1d2f3, @@ -18381,6 +18597,8 @@ CR_No[] = { 67, 0x1ec71, 0x1ecab, 0x1ecad, 0x1ecaf, 0x1ecb1, 0x1ecb4, +0x1ed01, 0x1ed2d, +0x1ed2f, 0x1ed3d, 0x1f100, 0x1f10c, }; /* END of CR_No */ @@ -18414,6 +18632,15 @@ CR_Nushu[] = { 2, 0x1b170, 0x1b2fb, }; /* END of CR_Nushu */ +/* PROPERTY: 'Nyiakeng_Puachue_Hmong': Script */ +static const OnigCodePoint +CR_Nyiakeng_Puachue_Hmong[] = { 4, +0x1e100, 0x1e12c, +0x1e130, 0x1e13d, +0x1e140, 0x1e149, +0x1e14e, 0x1e14f, +}; /* END of CR_Nyiakeng_Puachue_Hmong */ + /* PROPERTY: 'Ogham': Script */ static const OnigCodePoint CR_Ogham[] = { 1, @@ -18513,7 +18740,7 @@ CR_Osmanya[] = { 2, /* PROPERTY: 'Other_Alphabetic': Binary Property */ static const OnigCodePoint -CR_Other_Alphabetic[] = { 213, +CR_Other_Alphabetic[] = { 221, 0x0345, 0x0345, 0x05b0, 0x05bd, 0x05bf, 0x05bf, @@ -18611,12 +18838,12 @@ CR_Other_Alphabetic[] = { 213, 0x103b, 0x103e, 0x1056, 0x1059, 0x105e, 0x1060, -0x1062, 0x1062, -0x1067, 0x1068, +0x1062, 0x1064, +0x1067, 0x106d, 0x1071, 0x1074, -0x1082, 0x1086, -0x109c, 0x109d, -0x135f, 0x135f, +0x1082, 0x108d, +0x108f, 0x108f, +0x109a, 0x109d, 0x1712, 0x1713, 0x1732, 0x1733, 0x1752, 0x1753, @@ -18635,24 +18862,28 @@ CR_Other_Alphabetic[] = { 213, 0x1ba1, 0x1ba9, 0x1bac, 0x1bad, 0x1be7, 0x1bf1, -0x1c24, 0x1c35, -0x1cf2, 0x1cf3, +0x1c24, 0x1c36, 0x1de7, 0x1df4, 0x24b6, 0x24e9, 0x2de0, 0x2dff, 0xa674, 0xa67b, 0xa69e, 0xa69f, +0xa802, 0xa802, +0xa80b, 0xa80b, 0xa823, 0xa827, 0xa880, 0xa881, 0xa8b4, 0xa8c3, 0xa8c5, 0xa8c5, +0xa8ff, 0xa8ff, 0xa926, 0xa92a, 0xa947, 0xa952, 0xa980, 0xa983, 0xa9b4, 0xa9bf, +0xa9e5, 0xa9e5, 0xaa29, 0xaa36, 0xaa43, 0xaa43, 0xaa4c, 0xaa4d, +0xaa7b, 0xaa7d, 0xaab0, 0xaab0, 0xaab2, 0xaab4, 0xaab7, 0xaab8, @@ -18696,6 +18927,9 @@ CR_Other_Alphabetic[] = { 213, 0x116ab, 0x116b5, 0x1171d, 0x1172a, 0x1182c, 0x11838, +0x119d1, 0x119d7, +0x119da, 0x119df, +0x119e4, 0x119e4, 0x11a01, 0x11a0a, 0x11a35, 0x11a39, 0x11a3b, 0x11a3e, @@ -18715,8 +18949,9 @@ CR_Other_Alphabetic[] = { 213, 0x11d90, 0x11d91, 0x11d93, 0x11d96, 0x11ef3, 0x11ef6, -0x16b30, 0x16b36, -0x16f51, 0x16f7e, +0x16f4f, 0x16f4f, +0x16f51, 0x16f87, +0x16f8f, 0x16f92, 0x1bc9e, 0x1bc9e, 0x1e000, 0x1e006, 0x1e008, 0x1e018, @@ -18747,7 +18982,7 @@ CR_Other_Default_Ignorable_Code_Point[] = { 11, /* PROPERTY: 'Other_Grapheme_Extend': Binary Property */ static const OnigCodePoint -CR_Other_Grapheme_Extend[] = { 23, +CR_Other_Grapheme_Extend[] = { 24, 0x09be, 0x09be, 0x09d7, 0x09d7, 0x0b3e, 0x0b3e, @@ -18760,6 +18995,7 @@ CR_Other_Grapheme_Extend[] = { 23, 0x0d57, 0x0d57, 0x0dcf, 0x0dcf, 0x0ddf, 0x0ddf, +0x1b35, 0x1b35, 0x200c, 0x200c, 0x302e, 0x302f, 0xff9e, 0xff9f, @@ -19189,7 +19425,7 @@ CR_Pi[] = { 11, /* PROPERTY: 'Po': General Category */ static const OnigCodePoint -CR_Po[] = { 175, +CR_Po[] = { 179, 0x0021, 0x0023, 0x0025, 0x0027, 0x002a, 0x002a, @@ -19225,6 +19461,7 @@ CR_Po[] = { 175, 0x09fd, 0x09fd, 0x0a76, 0x0a76, 0x0af0, 0x0af0, +0x0c77, 0x0c77, 0x0c84, 0x0c84, 0x0df4, 0x0df4, 0x0e4f, 0x0e4f, @@ -19237,7 +19474,7 @@ CR_Po[] = { 175, 0x104a, 0x104f, 0x10fb, 0x10fb, 0x1360, 0x1368, -0x166d, 0x166e, +0x166e, 0x166e, 0x16eb, 0x16ed, 0x1735, 0x1736, 0x17d4, 0x17d6, @@ -19276,7 +19513,7 @@ CR_Po[] = { 175, 0x2e30, 0x2e39, 0x2e3c, 0x2e3f, 0x2e41, 0x2e41, -0x2e43, 0x2e4e, +0x2e43, 0x2e4f, 0x3001, 0x3003, 0x303d, 0x303d, 0x30fb, 0x30fb, @@ -19350,18 +19587,21 @@ CR_Po[] = { 175, 0x11660, 0x1166c, 0x1173c, 0x1173e, 0x1183b, 0x1183b, +0x119e2, 0x119e2, 0x11a3f, 0x11a46, 0x11a9a, 0x11a9c, 0x11a9e, 0x11aa2, 0x11c41, 0x11c45, 0x11c70, 0x11c71, 0x11ef7, 0x11ef8, +0x11fff, 0x11fff, 0x12470, 0x12474, 0x16a6e, 0x16a6f, 0x16af5, 0x16af5, 0x16b37, 0x16b3b, 0x16b44, 0x16b44, 0x16e97, 0x16e9a, +0x16fe2, 0x16fe2, 0x1bc9f, 0x1bc9f, 0x1da87, 0x1da8b, 0x1e95e, 0x1e95f, @@ -19514,7 +19754,7 @@ CR_Runic[] = { 2, /* PROPERTY: 'S': Major Category */ static const OnigCodePoint -CR_S[] = { 220, +CR_S[] = { 226, 0x0024, 0x0024, 0x002b, 0x002b, 0x003c, 0x003e, @@ -19570,6 +19810,7 @@ CR_S[] = { 220, 0x0fd5, 0x0fd8, 0x109e, 0x109f, 0x1390, 0x1399, +0x166d, 0x166d, 0x17db, 0x17db, 0x1940, 0x1940, 0x19de, 0x19ff, @@ -19614,8 +19855,7 @@ CR_S[] = { 220, 0x29dc, 0x29fb, 0x29fe, 0x2b73, 0x2b76, 0x2b95, -0x2b98, 0x2bc8, -0x2bca, 0x2bfe, +0x2b98, 0x2bff, 0x2ce5, 0x2cea, 0x2e80, 0x2e99, 0x2e9b, 0x2ef3, @@ -19635,8 +19875,7 @@ CR_S[] = { 220, 0x3250, 0x3250, 0x3260, 0x327f, 0x328a, 0x32b0, -0x32c0, 0x32fe, -0x3300, 0x33ff, +0x32c0, 0x33ff, 0x4dc0, 0x4dff, 0xa490, 0xa4c6, 0xa700, 0xa716, @@ -19671,6 +19910,7 @@ CR_S[] = { 220, 0x10877, 0x10878, 0x10ac8, 0x10ac8, 0x1173f, 0x1173f, +0x11fd5, 0x11ff1, 0x16b3c, 0x16b3f, 0x16b45, 0x16b45, 0x1bc9c, 0x1bc9c, @@ -19699,8 +19939,11 @@ CR_S[] = { 220, 0x1da6d, 0x1da74, 0x1da76, 0x1da83, 0x1da85, 0x1da86, +0x1e14f, 0x1e14f, +0x1e2ff, 0x1e2ff, 0x1ecac, 0x1ecac, 0x1ecb0, 0x1ecb0, +0x1ed2e, 0x1ed2e, 0x1eef0, 0x1eef1, 0x1f000, 0x1f02b, 0x1f030, 0x1f093, @@ -19708,33 +19951,36 @@ CR_S[] = { 220, 0x1f0b1, 0x1f0bf, 0x1f0c1, 0x1f0cf, 0x1f0d1, 0x1f0f5, -0x1f110, 0x1f16b, +0x1f110, 0x1f16c, 0x1f170, 0x1f1ac, 0x1f1e6, 0x1f202, 0x1f210, 0x1f23b, 0x1f240, 0x1f248, 0x1f250, 0x1f251, 0x1f260, 0x1f265, -0x1f300, 0x1f6d4, +0x1f300, 0x1f6d5, 0x1f6e0, 0x1f6ec, -0x1f6f0, 0x1f6f9, +0x1f6f0, 0x1f6fa, 0x1f700, 0x1f773, 0x1f780, 0x1f7d8, +0x1f7e0, 0x1f7eb, 0x1f800, 0x1f80b, 0x1f810, 0x1f847, 0x1f850, 0x1f859, 0x1f860, 0x1f887, 0x1f890, 0x1f8ad, 0x1f900, 0x1f90b, -0x1f910, 0x1f93e, -0x1f940, 0x1f970, +0x1f90d, 0x1f971, 0x1f973, 0x1f976, -0x1f97a, 0x1f97a, -0x1f97c, 0x1f9a2, -0x1f9b0, 0x1f9b9, -0x1f9c0, 0x1f9c2, -0x1f9d0, 0x1f9ff, +0x1f97a, 0x1f9a2, +0x1f9a5, 0x1f9aa, +0x1f9ae, 0x1f9ca, +0x1f9cd, 0x1fa53, 0x1fa60, 0x1fa6d, +0x1fa70, 0x1fa73, +0x1fa78, 0x1fa7a, +0x1fa80, 0x1fa82, +0x1fa90, 0x1fa95, }; /* END of CR_S */ /* PROPERTY: 'Samaritan': Script */ @@ -19753,7 +19999,7 @@ CR_Saurashtra[] = { 2, /* PROPERTY: 'Sc': General Category */ static const OnigCodePoint -CR_Sc[] = { 19, +CR_Sc[] = { 21, 0x0024, 0x0024, 0x00a2, 0x00a5, 0x058f, 0x058f, @@ -19772,6 +20018,8 @@ CR_Sc[] = { 19, 0xff04, 0xff04, 0xffe0, 0xffe1, 0xffe5, 0xffe6, +0x11fdd, 0x11fe0, +0x1e2ff, 0x1e2ff, 0x1ecb0, 0x1ecb0, }; /* END of CR_Sc */ @@ -20005,7 +20253,7 @@ CR_Sm[] = { 64, /* PROPERTY: 'So': General Category */ static const OnigCodePoint -CR_So[] = { 174, +CR_So[] = { 180, 0x00a6, 0x00a6, 0x00a9, 0x00a9, 0x00ae, 0x00ae, @@ -20037,6 +20285,7 @@ CR_So[] = { 174, 0x0fd5, 0x0fd8, 0x109e, 0x109f, 0x1390, 0x1399, +0x166d, 0x166d, 0x1940, 0x1940, 0x19de, 0x19ff, 0x1b61, 0x1b6a, @@ -20085,8 +20334,7 @@ CR_So[] = { 174, 0x2b45, 0x2b46, 0x2b4d, 0x2b73, 0x2b76, 0x2b95, -0x2b98, 0x2bc8, -0x2bca, 0x2bfe, +0x2b98, 0x2bff, 0x2ce5, 0x2cea, 0x2e80, 0x2e99, 0x2e9b, 0x2ef3, @@ -20105,8 +20353,7 @@ CR_So[] = { 174, 0x3250, 0x3250, 0x3260, 0x327f, 0x328a, 0x32b0, -0x32c0, 0x32fe, -0x3300, 0x33ff, +0x32c0, 0x33ff, 0x4dc0, 0x4dff, 0xa490, 0xa4c6, 0xa828, 0xa82b, @@ -20127,6 +20374,8 @@ CR_So[] = { 174, 0x10877, 0x10878, 0x10ac8, 0x10ac8, 0x1173f, 0x1173f, +0x11fd5, 0x11fdc, +0x11fe1, 0x11ff1, 0x16b3c, 0x16b3f, 0x16b45, 0x16b45, 0x1bc9c, 0x1bc9c, @@ -20145,14 +20394,16 @@ CR_So[] = { 174, 0x1da6d, 0x1da74, 0x1da76, 0x1da83, 0x1da85, 0x1da86, +0x1e14f, 0x1e14f, 0x1ecac, 0x1ecac, +0x1ed2e, 0x1ed2e, 0x1f000, 0x1f02b, 0x1f030, 0x1f093, 0x1f0a0, 0x1f0ae, 0x1f0b1, 0x1f0bf, 0x1f0c1, 0x1f0cf, 0x1f0d1, 0x1f0f5, -0x1f110, 0x1f16b, +0x1f110, 0x1f16c, 0x1f170, 0x1f1ac, 0x1f1e6, 0x1f202, 0x1f210, 0x1f23b, @@ -20160,26 +20411,29 @@ CR_So[] = { 174, 0x1f250, 0x1f251, 0x1f260, 0x1f265, 0x1f300, 0x1f3fa, -0x1f400, 0x1f6d4, +0x1f400, 0x1f6d5, 0x1f6e0, 0x1f6ec, -0x1f6f0, 0x1f6f9, +0x1f6f0, 0x1f6fa, 0x1f700, 0x1f773, 0x1f780, 0x1f7d8, +0x1f7e0, 0x1f7eb, 0x1f800, 0x1f80b, 0x1f810, 0x1f847, 0x1f850, 0x1f859, 0x1f860, 0x1f887, 0x1f890, 0x1f8ad, 0x1f900, 0x1f90b, -0x1f910, 0x1f93e, -0x1f940, 0x1f970, +0x1f90d, 0x1f971, 0x1f973, 0x1f976, -0x1f97a, 0x1f97a, -0x1f97c, 0x1f9a2, -0x1f9b0, 0x1f9b9, -0x1f9c0, 0x1f9c2, -0x1f9d0, 0x1f9ff, +0x1f97a, 0x1f9a2, +0x1f9a5, 0x1f9aa, +0x1f9ae, 0x1f9ca, +0x1f9cd, 0x1fa53, 0x1fa60, 0x1fa6d, +0x1fa70, 0x1fa73, +0x1fa78, 0x1fa7a, +0x1fa80, 0x1fa82, +0x1fa90, 0x1fa95, }; /* END of CR_So */ /* PROPERTY: 'Soft_Dotted': Binary Property */ @@ -20233,9 +20487,8 @@ CR_Sora_Sompeng[] = { 2, /* PROPERTY: 'Soyombo': Script */ static const OnigCodePoint -CR_Soyombo[] = { 2, -0x11a50, 0x11a83, -0x11a86, 0x11aa2, +CR_Soyombo[] = { 1, +0x11a50, 0x11aa2, }; /* END of CR_Soyombo */ /* PROPERTY: 'Sundanese': Script */ @@ -20302,13 +20555,13 @@ CR_Tai_Viet[] = { 2, /* PROPERTY: 'Takri': Script */ static const OnigCodePoint CR_Takri[] = { 2, -0x11680, 0x116b7, +0x11680, 0x116b8, 0x116c0, 0x116c9, }; /* END of CR_Takri */ /* PROPERTY: 'Tamil': Script */ static const OnigCodePoint -CR_Tamil[] = { 16, +CR_Tamil[] = { 18, 0x0b82, 0x0b83, 0x0b85, 0x0b8a, 0x0b8e, 0x0b90, @@ -20325,13 +20578,15 @@ CR_Tamil[] = { 16, 0x0bd0, 0x0bd0, 0x0bd7, 0x0bd7, 0x0be6, 0x0bfa, +0x11fc0, 0x11ff1, +0x11fff, 0x11fff, }; /* END of CR_Tamil */ /* PROPERTY: 'Tangut': Script */ static const OnigCodePoint CR_Tangut[] = { 3, 0x16fe0, 0x16fe0, -0x17000, 0x187f1, +0x17000, 0x187f7, 0x18800, 0x18af2, }; /* END of CR_Tangut */ @@ -20349,7 +20604,7 @@ CR_Telugu[] = { 12, 0x0c58, 0x0c5a, 0x0c60, 0x0c63, 0x0c66, 0x0c6f, -0x0c78, 0x0c7f, +0x0c77, 0x0c7f, }; /* END of CR_Telugu */ /* PROPERTY: 'Terminal_Punctuation': Binary Property */ @@ -20379,7 +20634,7 @@ CR_Terminal_Punctuation[] = { 102, 0x0f0d, 0x0f12, 0x104a, 0x104b, 0x1361, 0x1368, -0x166d, 0x166e, +0x166e, 0x166e, 0x16eb, 0x16ed, 0x1735, 0x1736, 0x17d4, 0x17d6, @@ -20398,7 +20653,7 @@ CR_Terminal_Punctuation[] = { 102, 0x2e3c, 0x2e3c, 0x2e41, 0x2e41, 0x2e4c, 0x2e4c, -0x2e4e, 0x2e4e, +0x2e4e, 0x2e4f, 0x3001, 0x3002, 0xa4fe, 0xa4ff, 0xa60d, 0xa60f, @@ -20527,7 +20782,7 @@ CR_Unified_Ideograph[] = { 14, /* PROPERTY: 'Unknown': Script */ static const OnigCodePoint -CR_Unknown[] = { 656, +CR_Unknown[] = { 664, 0x0378, 0x0379, 0x0380, 0x0383, 0x038b, 0x038b, @@ -20636,7 +20891,7 @@ CR_Unknown[] = { 656, 0x0c57, 0x0c57, 0x0c5b, 0x0c5f, 0x0c64, 0x0c65, -0x0c70, 0x0c77, +0x0c70, 0x0c76, 0x0c8d, 0x0c8d, 0x0c91, 0x0c91, 0x0ca9, 0x0ca9, @@ -20673,17 +20928,10 @@ CR_Unknown[] = { 656, 0x0e3b, 0x0e3e, 0x0e5c, 0x0e80, 0x0e83, 0x0e83, -0x0e85, 0x0e86, -0x0e89, 0x0e89, -0x0e8b, 0x0e8c, -0x0e8e, 0x0e93, -0x0e98, 0x0e98, -0x0ea0, 0x0ea0, +0x0e85, 0x0e85, +0x0e8b, 0x0e8b, 0x0ea4, 0x0ea4, 0x0ea6, 0x0ea6, -0x0ea8, 0x0ea9, -0x0eac, 0x0eac, -0x0eba, 0x0eba, 0x0ebe, 0x0ebf, 0x0ec5, 0x0ec5, 0x0ec7, 0x0ec7, @@ -20760,7 +21008,7 @@ CR_Unknown[] = { 656, 0x1c89, 0x1c8f, 0x1cbb, 0x1cbc, 0x1cc8, 0x1ccf, -0x1cfa, 0x1cff, +0x1cfb, 0x1cff, 0x1dfa, 0x1dfa, 0x1f16, 0x1f17, 0x1f1e, 0x1f1f, @@ -20789,8 +21037,6 @@ CR_Unknown[] = { 656, 0x244b, 0x245f, 0x2b74, 0x2b75, 0x2b96, 0x2b97, -0x2bc9, 0x2bc9, -0x2bff, 0x2bff, 0x2c2f, 0x2c2f, 0x2c5f, 0x2c5f, 0x2cf4, 0x2cf8, @@ -20808,7 +21054,7 @@ CR_Unknown[] = { 656, 0x2dcf, 0x2dcf, 0x2dd7, 0x2dd7, 0x2ddf, 0x2ddf, -0x2e4f, 0x2e7f, +0x2e50, 0x2e7f, 0x2e9a, 0x2e9a, 0x2ef4, 0x2eff, 0x2fd6, 0x2fef, @@ -20821,14 +21067,14 @@ CR_Unknown[] = { 656, 0x31bb, 0x31bf, 0x31e4, 0x31ef, 0x321f, 0x321f, -0x32ff, 0x32ff, 0x4db6, 0x4dbf, 0x9ff0, 0x9fff, 0xa48d, 0xa48f, 0xa4c7, 0xa4cf, 0xa62c, 0xa63f, 0xa6f8, 0xa6ff, -0xa7ba, 0xa7f6, +0xa7c0, 0xa7c1, +0xa7c7, 0xa7f6, 0xa82c, 0xa82f, 0xa83a, 0xa83f, 0xa878, 0xa87f, @@ -20849,7 +21095,7 @@ CR_Unknown[] = { 656, 0xab17, 0xab1f, 0xab27, 0xab27, 0xab2f, 0xab2f, -0xab66, 0xab6f, +0xab68, 0xab6f, 0xabee, 0xabef, 0xabfa, 0xabff, 0xd7a4, 0xd7af, @@ -20955,7 +21201,8 @@ CR_Unknown[] = { 656, 0x10d3a, 0x10e5f, 0x10e7f, 0x10eff, 0x10f28, 0x10f2f, -0x10f5a, 0x10fff, +0x10f5a, 0x10fdf, +0x10ff7, 0x10fff, 0x1104e, 0x11051, 0x11070, 0x1107e, 0x110c2, 0x110cc, @@ -20994,7 +21241,7 @@ CR_Unknown[] = { 656, 0x11375, 0x113ff, 0x1145a, 0x1145a, 0x1145c, 0x1145c, -0x1145f, 0x1147f, +0x11460, 0x1147f, 0x114c8, 0x114cf, 0x114da, 0x1157f, 0x115b6, 0x115b7, @@ -21002,16 +21249,18 @@ CR_Unknown[] = { 656, 0x11645, 0x1164f, 0x1165a, 0x1165f, 0x1166d, 0x1167f, -0x116b8, 0x116bf, +0x116b9, 0x116bf, 0x116ca, 0x116ff, 0x1171b, 0x1171c, 0x1172c, 0x1172f, 0x11740, 0x117ff, 0x1183c, 0x1189f, 0x118f3, 0x118fe, -0x11900, 0x119ff, +0x11900, 0x1199f, +0x119a8, 0x119a9, +0x119d8, 0x119d9, +0x119e5, 0x119ff, 0x11a48, 0x11a4f, -0x11a84, 0x11a85, 0x11aa3, 0x11abf, 0x11af9, 0x11bff, 0x11c09, 0x11c09, @@ -21034,12 +21283,14 @@ CR_Unknown[] = { 656, 0x11d92, 0x11d92, 0x11d99, 0x11d9f, 0x11daa, 0x11edf, -0x11ef9, 0x11fff, +0x11ef9, 0x11fbf, +0x11ff2, 0x11ffe, 0x1239a, 0x123ff, 0x1246f, 0x1246f, 0x12475, 0x1247f, 0x12544, 0x12fff, -0x1342f, 0x143ff, +0x1342f, 0x1342f, +0x13439, 0x143ff, 0x14647, 0x167ff, 0x16a39, 0x16a3f, 0x16a5f, 0x16a5f, @@ -21053,13 +21304,15 @@ CR_Unknown[] = { 656, 0x16b78, 0x16b7c, 0x16b90, 0x16e3f, 0x16e9b, 0x16eff, -0x16f45, 0x16f4f, -0x16f7f, 0x16f8e, +0x16f4b, 0x16f4e, +0x16f88, 0x16f8e, 0x16fa0, 0x16fdf, -0x16fe2, 0x16fff, -0x187f2, 0x187ff, +0x16fe4, 0x16fff, +0x187f8, 0x187ff, 0x18af3, 0x1afff, -0x1b11f, 0x1b16f, +0x1b11f, 0x1b14f, +0x1b153, 0x1b163, +0x1b168, 0x1b16f, 0x1b2fc, 0x1bbff, 0x1bc6b, 0x1bc6f, 0x1bc7d, 0x1bc7f, @@ -21100,13 +21353,20 @@ CR_Unknown[] = { 656, 0x1e019, 0x1e01a, 0x1e022, 0x1e022, 0x1e025, 0x1e025, -0x1e02b, 0x1e7ff, +0x1e02b, 0x1e0ff, +0x1e12d, 0x1e12f, +0x1e13e, 0x1e13f, +0x1e14a, 0x1e14d, +0x1e150, 0x1e2bf, +0x1e2fa, 0x1e2fe, +0x1e300, 0x1e7ff, 0x1e8c5, 0x1e8c6, 0x1e8d7, 0x1e8ff, -0x1e94b, 0x1e94f, +0x1e94c, 0x1e94f, 0x1e95a, 0x1e95d, 0x1e960, 0x1ec70, -0x1ecb5, 0x1edff, +0x1ecb5, 0x1ed00, +0x1ed3e, 0x1edff, 0x1ee04, 0x1ee04, 0x1ee20, 0x1ee20, 0x1ee23, 0x1ee23, @@ -21148,33 +21408,36 @@ CR_Unknown[] = { 656, 0x1f0d0, 0x1f0d0, 0x1f0f6, 0x1f0ff, 0x1f10d, 0x1f10f, -0x1f16c, 0x1f16f, +0x1f16d, 0x1f16f, 0x1f1ad, 0x1f1e5, 0x1f203, 0x1f20f, 0x1f23c, 0x1f23f, 0x1f249, 0x1f24f, 0x1f252, 0x1f25f, 0x1f266, 0x1f2ff, -0x1f6d5, 0x1f6df, +0x1f6d6, 0x1f6df, 0x1f6ed, 0x1f6ef, -0x1f6fa, 0x1f6ff, +0x1f6fb, 0x1f6ff, 0x1f774, 0x1f77f, -0x1f7d9, 0x1f7ff, +0x1f7d9, 0x1f7df, +0x1f7ec, 0x1f7ff, 0x1f80c, 0x1f80f, 0x1f848, 0x1f84f, 0x1f85a, 0x1f85f, 0x1f888, 0x1f88f, 0x1f8ae, 0x1f8ff, -0x1f90c, 0x1f90f, -0x1f93f, 0x1f93f, -0x1f971, 0x1f972, +0x1f90c, 0x1f90c, +0x1f972, 0x1f972, 0x1f977, 0x1f979, -0x1f97b, 0x1f97b, -0x1f9a3, 0x1f9af, -0x1f9ba, 0x1f9bf, -0x1f9c3, 0x1f9cf, -0x1fa00, 0x1fa5f, -0x1fa6e, 0x1ffff, +0x1f9a3, 0x1f9a4, +0x1f9ab, 0x1f9ad, +0x1f9cb, 0x1f9cc, +0x1fa54, 0x1fa5f, +0x1fa6e, 0x1fa6f, +0x1fa74, 0x1fa77, +0x1fa7b, 0x1fa7f, +0x1fa83, 0x1fa8f, +0x1fa96, 0x1ffff, 0x2a6d7, 0x2a6ff, 0x2b735, 0x2b73f, 0x2b81e, 0x2b81f, @@ -21203,6 +21466,13 @@ CR_Variation_Selector[] = { 3, 0xe0100, 0xe01ef, }; /* END of CR_Variation_Selector */ +/* PROPERTY: 'Wancho': Script */ +static const OnigCodePoint +CR_Wancho[] = { 2, +0x1e2c0, 0x1e2f9, +0x1e2ff, 0x1e2ff, +}; /* END of CR_Wancho */ + /* PROPERTY: 'Warang_Citi': Script */ static const OnigCodePoint CR_Warang_Citi[] = { 2, @@ -21215,7 +21485,7 @@ CR_Warang_Citi[] = { 2, /* PROPERTY: 'XID_Continue': Derived Property */ static const OnigCodePoint -CR_XID_Continue[] = { 714, +CR_XID_Continue[] = { 720, 0x0030, 0x0039, 0x0041, 0x005a, 0x005f, 0x005f, @@ -21401,17 +21671,10 @@ CR_XID_Continue[] = { 714, 0x0e50, 0x0e59, 0x0e81, 0x0e82, 0x0e84, 0x0e84, -0x0e87, 0x0e88, -0x0e8a, 0x0e8a, -0x0e8d, 0x0e8d, -0x0e94, 0x0e97, -0x0e99, 0x0e9f, -0x0ea1, 0x0ea3, +0x0e86, 0x0e8a, +0x0e8c, 0x0ea3, 0x0ea5, 0x0ea5, -0x0ea7, 0x0ea7, -0x0eaa, 0x0eab, -0x0ead, 0x0eb9, -0x0ebb, 0x0ebd, +0x0ea7, 0x0ebd, 0x0ec0, 0x0ec4, 0x0ec6, 0x0ec6, 0x0ec8, 0x0ecd, @@ -21503,7 +21766,7 @@ CR_XID_Continue[] = { 714, 0x1c90, 0x1cba, 0x1cbd, 0x1cbf, 0x1cd0, 0x1cd2, -0x1cd4, 0x1cf9, +0x1cd4, 0x1cfa, 0x1d00, 0x1df9, 0x1dfb, 0x1f15, 0x1f18, 0x1f1d, @@ -21588,7 +21851,8 @@ CR_XID_Continue[] = { 714, 0xa67f, 0xa6f1, 0xa717, 0xa71f, 0xa722, 0xa788, -0xa78b, 0xa7b9, +0xa78b, 0xa7bf, +0xa7c2, 0xa7c6, 0xa7f7, 0xa827, 0xa840, 0xa873, 0xa880, 0xa8c5, @@ -21615,7 +21879,7 @@ CR_XID_Continue[] = { 714, 0xab20, 0xab26, 0xab28, 0xab2e, 0xab30, 0xab5a, -0xab5c, 0xab65, +0xab5c, 0xab67, 0xab70, 0xabea, 0xabec, 0xabed, 0xabf0, 0xabf9, @@ -21723,6 +21987,7 @@ CR_XID_Continue[] = { 714, 0x10f00, 0x10f1c, 0x10f27, 0x10f27, 0x10f30, 0x10f50, +0x10fe0, 0x10ff6, 0x11000, 0x11046, 0x11066, 0x1106f, 0x1107f, 0x110ba, @@ -21764,7 +22029,7 @@ CR_XID_Continue[] = { 714, 0x11370, 0x11374, 0x11400, 0x1144a, 0x11450, 0x11459, -0x1145e, 0x1145e, +0x1145e, 0x1145f, 0x11480, 0x114c5, 0x114c7, 0x114c7, 0x114d0, 0x114d9, @@ -21774,7 +22039,7 @@ CR_XID_Continue[] = { 714, 0x11600, 0x11640, 0x11644, 0x11644, 0x11650, 0x11659, -0x11680, 0x116b7, +0x11680, 0x116b8, 0x116c0, 0x116c9, 0x11700, 0x1171a, 0x1171d, 0x1172b, @@ -21782,10 +22047,13 @@ CR_XID_Continue[] = { 714, 0x11800, 0x1183a, 0x118a0, 0x118e9, 0x118ff, 0x118ff, +0x119a0, 0x119a7, +0x119aa, 0x119d7, +0x119da, 0x119e1, +0x119e3, 0x119e4, 0x11a00, 0x11a3e, 0x11a47, 0x11a47, -0x11a50, 0x11a83, -0x11a86, 0x11a99, +0x11a50, 0x11a99, 0x11a9d, 0x11a9d, 0x11ac0, 0x11af8, 0x11c00, 0x11c08, @@ -21825,13 +22093,16 @@ CR_XID_Continue[] = { 714, 0x16b63, 0x16b77, 0x16b7d, 0x16b8f, 0x16e40, 0x16e7f, -0x16f00, 0x16f44, -0x16f50, 0x16f7e, +0x16f00, 0x16f4a, +0x16f4f, 0x16f87, 0x16f8f, 0x16f9f, 0x16fe0, 0x16fe1, -0x17000, 0x187f1, +0x16fe3, 0x16fe3, +0x17000, 0x187f7, 0x18800, 0x18af2, 0x1b000, 0x1b11e, +0x1b150, 0x1b152, +0x1b164, 0x1b167, 0x1b170, 0x1b2fb, 0x1bc00, 0x1bc6a, 0x1bc70, 0x1bc7c, @@ -21886,9 +22157,14 @@ CR_XID_Continue[] = { 714, 0x1e01b, 0x1e021, 0x1e023, 0x1e024, 0x1e026, 0x1e02a, +0x1e100, 0x1e12c, +0x1e130, 0x1e13d, +0x1e140, 0x1e149, +0x1e14e, 0x1e14e, +0x1e2c0, 0x1e2f9, 0x1e800, 0x1e8c4, 0x1e8d0, 0x1e8d6, -0x1e900, 0x1e94a, +0x1e900, 0x1e94b, 0x1e950, 0x1e959, 0x1ee00, 0x1ee03, 0x1ee05, 0x1ee1f, @@ -21934,7 +22210,7 @@ CR_XID_Continue[] = { 714, /* PROPERTY: 'XID_Start': Derived Property */ static const OnigCodePoint -CR_XID_Start[] = { 606, +CR_XID_Start[] = { 616, 0x0041, 0x005a, 0x0061, 0x007a, 0x00aa, 0x00aa, @@ -22079,16 +22355,10 @@ CR_XID_Start[] = { 606, 0x0e40, 0x0e46, 0x0e81, 0x0e82, 0x0e84, 0x0e84, -0x0e87, 0x0e88, -0x0e8a, 0x0e8a, -0x0e8d, 0x0e8d, -0x0e94, 0x0e97, -0x0e99, 0x0e9f, -0x0ea1, 0x0ea3, +0x0e86, 0x0e8a, +0x0e8c, 0x0ea3, 0x0ea5, 0x0ea5, -0x0ea7, 0x0ea7, -0x0eaa, 0x0eab, -0x0ead, 0x0eb0, +0x0ea7, 0x0eb0, 0x0eb2, 0x0eb2, 0x0ebd, 0x0ebd, 0x0ec0, 0x0ec4, @@ -22168,8 +22438,9 @@ CR_XID_Start[] = { 606, 0x1c90, 0x1cba, 0x1cbd, 0x1cbf, 0x1ce9, 0x1cec, -0x1cee, 0x1cf1, +0x1cee, 0x1cf3, 0x1cf5, 0x1cf6, +0x1cfa, 0x1cfa, 0x1d00, 0x1dbf, 0x1e00, 0x1f15, 0x1f18, 0x1f1d, @@ -22249,7 +22520,8 @@ CR_XID_Start[] = { 606, 0xa6a0, 0xa6ef, 0xa717, 0xa71f, 0xa722, 0xa788, -0xa78b, 0xa7b9, +0xa78b, 0xa7bf, +0xa7c2, 0xa7c6, 0xa7f7, 0xa801, 0xa803, 0xa805, 0xa807, 0xa80a, @@ -22287,7 +22559,7 @@ CR_XID_Start[] = { 606, 0xab20, 0xab26, 0xab28, 0xab2e, 0xab30, 0xab5a, -0xab5c, 0xab65, +0xab5c, 0xab67, 0xab70, 0xabe2, 0xac00, 0xd7a3, 0xd7b0, 0xd7c6, @@ -22382,6 +22654,7 @@ CR_XID_Start[] = { 606, 0x10f00, 0x10f1c, 0x10f27, 0x10f27, 0x10f30, 0x10f45, +0x10fe0, 0x10ff6, 0x11003, 0x11037, 0x11083, 0x110af, 0x110d0, 0x110e8, @@ -22412,6 +22685,7 @@ CR_XID_Start[] = { 606, 0x1135d, 0x11361, 0x11400, 0x11434, 0x11447, 0x1144a, +0x1145f, 0x1145f, 0x11480, 0x114af, 0x114c4, 0x114c5, 0x114c7, 0x114c7, @@ -22420,16 +22694,20 @@ CR_XID_Start[] = { 606, 0x11600, 0x1162f, 0x11644, 0x11644, 0x11680, 0x116aa, +0x116b8, 0x116b8, 0x11700, 0x1171a, 0x11800, 0x1182b, 0x118a0, 0x118df, 0x118ff, 0x118ff, +0x119a0, 0x119a7, +0x119aa, 0x119d0, +0x119e1, 0x119e1, +0x119e3, 0x119e3, 0x11a00, 0x11a00, 0x11a0b, 0x11a32, 0x11a3a, 0x11a3a, 0x11a50, 0x11a50, -0x11a5c, 0x11a83, -0x11a86, 0x11a89, +0x11a5c, 0x11a89, 0x11a9d, 0x11a9d, 0x11ac0, 0x11af8, 0x11c00, 0x11c08, @@ -22458,13 +22736,16 @@ CR_XID_Start[] = { 606, 0x16b63, 0x16b77, 0x16b7d, 0x16b8f, 0x16e40, 0x16e7f, -0x16f00, 0x16f44, +0x16f00, 0x16f4a, 0x16f50, 0x16f50, 0x16f93, 0x16f9f, 0x16fe0, 0x16fe1, -0x17000, 0x187f1, +0x16fe3, 0x16fe3, +0x17000, 0x187f7, 0x18800, 0x18af2, 0x1b000, 0x1b11e, +0x1b150, 0x1b152, +0x1b164, 0x1b167, 0x1b170, 0x1b2fb, 0x1bc00, 0x1bc6a, 0x1bc70, 0x1bc7c, @@ -22500,8 +22781,13 @@ CR_XID_Start[] = { 606, 0x1d78a, 0x1d7a8, 0x1d7aa, 0x1d7c2, 0x1d7c4, 0x1d7cb, +0x1e100, 0x1e12c, +0x1e137, 0x1e13d, +0x1e14e, 0x1e14e, +0x1e2c0, 0x1e2eb, 0x1e800, 0x1e8c4, 0x1e900, 0x1e943, +0x1e94b, 0x1e94b, 0x1ee00, 0x1ee03, 0x1ee05, 0x1ee1f, 0x1ee21, 0x1ee22, @@ -23805,6 +24091,12 @@ CR_In_Sogdian[] = { 1, 0x10f30, 0x10f6f, }; /* END of CR_In_Sogdian */ +/* PROPERTY: 'In_Elymaic': Block */ +static const OnigCodePoint +CR_In_Elymaic[] = { 1, +0x10fe0, 0x10fff, +}; /* END of CR_In_Elymaic */ + /* PROPERTY: 'In_Brahmi': Block */ static const OnigCodePoint CR_In_Brahmi[] = { 1, @@ -23925,6 +24217,12 @@ CR_In_Warang_Citi[] = { 1, 0x118a0, 0x118ff, }; /* END of CR_In_Warang_Citi */ +/* PROPERTY: 'In_Nandinagari': Block */ +static const OnigCodePoint +CR_In_Nandinagari[] = { 1, +0x119a0, 0x119ff, +}; /* END of CR_In_Nandinagari */ + /* PROPERTY: 'In_Zanabazar_Square': Block */ static const OnigCodePoint CR_In_Zanabazar_Square[] = { 1, @@ -23973,6 +24271,12 @@ CR_In_Makasar[] = { 1, 0x11ee0, 0x11eff, }; /* END of CR_In_Makasar */ +/* PROPERTY: 'In_Tamil_Supplement': Block */ +static const OnigCodePoint +CR_In_Tamil_Supplement[] = { 1, +0x11fc0, 0x11fff, +}; /* END of CR_In_Tamil_Supplement */ + /* PROPERTY: 'In_Cuneiform': Block */ static const OnigCodePoint CR_In_Cuneiform[] = { 1, @@ -23997,6 +24301,12 @@ CR_In_Egyptian_Hieroglyphs[] = { 1, 0x13000, 0x1342f, }; /* END of CR_In_Egyptian_Hieroglyphs */ +/* PROPERTY: 'In_Egyptian_Hieroglyph_Format_Controls': Block */ +static const OnigCodePoint +CR_In_Egyptian_Hieroglyph_Format_Controls[] = { 1, +0x13430, 0x1343f, +}; /* END of CR_In_Egyptian_Hieroglyph_Format_Controls */ + /* PROPERTY: 'In_Anatolian_Hieroglyphs': Block */ static const OnigCodePoint CR_In_Anatolian_Hieroglyphs[] = { 1, @@ -24069,6 +24379,12 @@ CR_In_Kana_Extended_A[] = { 1, 0x1b100, 0x1b12f, }; /* END of CR_In_Kana_Extended_A */ +/* PROPERTY: 'In_Small_Kana_Extension': Block */ +static const OnigCodePoint +CR_In_Small_Kana_Extension[] = { 1, +0x1b130, 0x1b16f, +}; /* END of CR_In_Small_Kana_Extension */ + /* PROPERTY: 'In_Nushu': Block */ static const OnigCodePoint CR_In_Nushu[] = { 1, @@ -24141,6 +24457,18 @@ CR_In_Glagolitic_Supplement[] = { 1, 0x1e000, 0x1e02f, }; /* END of CR_In_Glagolitic_Supplement */ +/* PROPERTY: 'In_Nyiakeng_Puachue_Hmong': Block */ +static const OnigCodePoint +CR_In_Nyiakeng_Puachue_Hmong[] = { 1, +0x1e100, 0x1e14f, +}; /* END of CR_In_Nyiakeng_Puachue_Hmong */ + +/* PROPERTY: 'In_Wancho': Block */ +static const OnigCodePoint +CR_In_Wancho[] = { 1, +0x1e2c0, 0x1e2ff, +}; /* END of CR_In_Wancho */ + /* PROPERTY: 'In_Mende_Kikakui': Block */ static const OnigCodePoint CR_In_Mende_Kikakui[] = { 1, @@ -24159,6 +24487,12 @@ CR_In_Indic_Siyaq_Numbers[] = { 1, 0x1ec70, 0x1ecbf, }; /* END of CR_In_Indic_Siyaq_Numbers */ +/* PROPERTY: 'In_Ottoman_Siyaq_Numbers': Block */ +static const OnigCodePoint +CR_In_Ottoman_Siyaq_Numbers[] = { 1, +0x1ed00, 0x1ed4f, +}; /* END of CR_In_Ottoman_Siyaq_Numbers */ + /* PROPERTY: 'In_Arabic_Mathematical_Alphabetic_Symbols': Block */ static const OnigCodePoint CR_In_Arabic_Mathematical_Alphabetic_Symbols[] = { 1, @@ -24249,6 +24583,12 @@ CR_In_Chess_Symbols[] = { 1, 0x1fa00, 0x1fa6f, }; /* END of CR_In_Chess_Symbols */ +/* PROPERTY: 'In_Symbols_and_Pictographs_Extended_A': Block */ +static const OnigCodePoint +CR_In_Symbols_and_Pictographs_Extended_A[] = { 1, +0x1fa70, 0x1faff, +}; /* END of CR_In_Symbols_and_Pictographs_Extended_A */ + /* PROPERTY: 'In_CJK_Unified_Ideographs_Extension_B': Block */ static const OnigCodePoint CR_In_CJK_Unified_Ideographs_Extension_B[] = { 1, @@ -24311,7 +24651,7 @@ CR_In_Supplementary_Private_Use_Area_B[] = { 1, /* PROPERTY: 'In_No_Block': Block */ static const OnigCodePoint -CR_In_No_Block[] = { 51, +CR_In_No_Block[] = { 53, 0x0870, 0x089f, 0x2fe0, 0x2fef, 0x10200, 0x1027f, @@ -24325,39 +24665,41 @@ CR_In_No_Block[] = { 51, 0x10c50, 0x10c7f, 0x10d40, 0x10e5f, 0x10e80, 0x10eff, -0x10f70, 0x10fff, +0x10f70, 0x10fdf, 0x11250, 0x1127f, 0x11380, 0x113ff, 0x114e0, 0x1157f, 0x116d0, 0x116ff, 0x11740, 0x117ff, 0x11850, 0x1189f, -0x11900, 0x119ff, +0x11900, 0x1199f, 0x11ab0, 0x11abf, 0x11b00, 0x11bff, 0x11cc0, 0x11cff, 0x11db0, 0x11edf, -0x11f00, 0x11fff, +0x11f00, 0x11fbf, 0x12550, 0x12fff, -0x13430, 0x143ff, +0x13440, 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, +0x1e030, 0x1e0ff, +0x1e150, 0x1e2bf, +0x1e300, 0x1e7ff, 0x1e8e0, 0x1e8ff, 0x1e960, 0x1ec6f, -0x1ecc0, 0x1edff, +0x1ecc0, 0x1ecff, +0x1ed50, 0x1edff, 0x1ef00, 0x1efff, -0x1fa70, 0x1ffff, +0x1fb00, 0x1ffff, 0x2a6e0, 0x2a6ff, 0x2ebf0, 0x2f7ff, 0x2fa20, 0xdffff, @@ -24438,6 +24780,7 @@ const CodeRanges[] = { CR_Duployan, CR_Egyptian_Hieroglyphs, CR_Elbasan, + CR_Elymaic, CR_Emoji, CR_Emoji_Component, CR_Emoji_Modifier, @@ -24528,6 +24871,7 @@ const CodeRanges[] = { CR_Myanmar, CR_N, CR_Nabataean, + CR_Nandinagari, CR_Nd, CR_New_Tai_Lue, CR_Newa, @@ -24536,6 +24880,7 @@ const CodeRanges[] = { CR_No, CR_Noncharacter_Code_Point, CR_Nushu, + CR_Nyiakeng_Puachue_Hmong, CR_Ogham, CR_Ol_Chiki, CR_Old_Hungarian, @@ -24620,6 +24965,7 @@ const CodeRanges[] = { CR_Uppercase, CR_Vai, CR_Variation_Selector, + CR_Wancho, CR_Warang_Citi, CR_White_Space, CR_XID_Continue, @@ -24837,6 +25183,7 @@ const CodeRanges[] = { CR_In_Rumi_Numeral_Symbols, CR_In_Old_Sogdian, CR_In_Sogdian, + CR_In_Elymaic, CR_In_Brahmi, CR_In_Kaithi, CR_In_Sora_Sompeng, @@ -24857,6 +25204,7 @@ const CodeRanges[] = { CR_In_Ahom, CR_In_Dogra, CR_In_Warang_Citi, + CR_In_Nandinagari, CR_In_Zanabazar_Square, CR_In_Soyombo, CR_In_Pau_Cin_Hau, @@ -24865,10 +25213,12 @@ const CodeRanges[] = { CR_In_Masaram_Gondi, CR_In_Gunjala_Gondi, CR_In_Makasar, + CR_In_Tamil_Supplement, CR_In_Cuneiform, CR_In_Cuneiform_Numbers_and_Punctuation, CR_In_Early_Dynastic_Cuneiform, CR_In_Egyptian_Hieroglyphs, + CR_In_Egyptian_Hieroglyph_Format_Controls, CR_In_Anatolian_Hieroglyphs, CR_In_Bamum_Supplement, CR_In_Mro, @@ -24881,6 +25231,7 @@ const CodeRanges[] = { CR_In_Tangut_Components, CR_In_Kana_Supplement, CR_In_Kana_Extended_A, + CR_In_Small_Kana_Extension, CR_In_Nushu, CR_In_Duployan, CR_In_Shorthand_Format_Controls, @@ -24893,9 +25244,12 @@ const CodeRanges[] = { CR_In_Mathematical_Alphanumeric_Symbols, CR_In_Sutton_SignWriting, CR_In_Glagolitic_Supplement, + CR_In_Nyiakeng_Puachue_Hmong, + CR_In_Wancho, CR_In_Mende_Kikakui, CR_In_Adlam, CR_In_Indic_Siyaq_Numbers, + CR_In_Ottoman_Siyaq_Numbers, CR_In_Arabic_Mathematical_Alphabetic_Symbols, CR_In_Mahjong_Tiles, CR_In_Domino_Tiles, @@ -24911,6 +25265,7 @@ const CodeRanges[] = { CR_In_Supplemental_Arrows_C, CR_In_Supplemental_Symbols_and_Pictographs, CR_In_Chess_Symbols, + CR_In_Symbols_and_Pictographs_Extended_A, CR_In_CJK_Unified_Ideographs_Extension_B, CR_In_CJK_Unified_Ideographs_Extension_C, CR_In_CJK_Unified_Ideographs_Extension_D, @@ -24927,12 +25282,12 @@ const CodeRanges[] = { #define pool_offset(s) offsetof(struct unicode_prop_name_pool_t, unicode_prop_name_pool_str##s) -#define TOTAL_KEYWORDS 784 +#define TOTAL_KEYWORDS 801 #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 */ +#define MAX_HASH_VALUE 5809 +/* maximum key range = 5800, duplicates = 0 */ #ifndef GPERF_DOWNCASE #define GPERF_DOWNCASE 1 @@ -24991,32 +25346,32 @@ 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 + 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, + 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, + 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, + 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, + 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, + 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, + 5810, 5810, 5810, 5810, 5810, 0, 1121, 136, 394, 19, + 417, 1048, 958, 7, 856, 8, 415, 103, 3, 16, + 1380, 1068, 56, 181, 326, 631, 1151, 930, 358, 1083, + 8, 0, 5, 5810, 5810, 5810, 5810, 0, 1121, 136, + 394, 19, 417, 1048, 958, 7, 856, 8, 415, 103, + 3, 16, 1380, 1068, 56, 181, 326, 631, 1151, 930, + 358, 1083, 8, 0, 5, 5810, 5810, 5810, 5810, 5810, + 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, + 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, + 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, + 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, + 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, + 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, + 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, + 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, + 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, + 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, + 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, + 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, + 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810 }; register unsigned int hval = (unsigned int )len; @@ -25059,1574 +25414,1608 @@ hash (register const char *str, register size_t len) struct unicode_prop_name_pool_t { char unicode_prop_name_pool_str10[sizeof("lana")]; + char unicode_prop_name_pool_str14[sizeof("z")]; + char unicode_prop_name_pool_str16[sizeof("yi")]; char unicode_prop_name_pool_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_str24[sizeof("mn")]; + char unicode_prop_name_pool_str25[sizeof("yiii")]; + char unicode_prop_name_pool_str27[sizeof("cn")]; + char unicode_prop_name_pool_str28[sizeof("maka")]; + char unicode_prop_name_pool_str30[sizeof("mani")]; + char unicode_prop_name_pool_str33[sizeof("zzzz")]; + char unicode_prop_name_pool_str34[sizeof("inkannada")]; + char unicode_prop_name_pool_str35[sizeof("ci")]; + char unicode_prop_name_pool_str37[sizeof("lo")]; + char unicode_prop_name_pool_str38[sizeof("lao")]; + char unicode_prop_name_pool_str39[sizeof("laoo")]; + char unicode_prop_name_pool_str43[sizeof("miao")]; + char unicode_prop_name_pool_str51[sizeof("innko")]; + char unicode_prop_name_pool_str53[sizeof("co")]; + char unicode_prop_name_pool_str56[sizeof("me")]; + char unicode_prop_name_pool_str60[sizeof("loe")]; + char unicode_prop_name_pool_str70[sizeof("gran")]; + char unicode_prop_name_pool_str72[sizeof("pi")]; + char unicode_prop_name_pool_str76[sizeof("lineara")]; + char unicode_prop_name_pool_str84[sizeof("mark")]; + char unicode_prop_name_pool_str86[sizeof("cari")]; + char unicode_prop_name_pool_str87[sizeof("carian")]; + char unicode_prop_name_pool_str90[sizeof("po")]; + char unicode_prop_name_pool_str91[sizeof("mendekikakui")]; + char unicode_prop_name_pool_str94[sizeof("grek")]; + char unicode_prop_name_pool_str96[sizeof("pe")]; + char unicode_prop_name_pool_str99[sizeof("meeteimayek")]; + char unicode_prop_name_pool_str101[sizeof("inkharoshthi")]; + char unicode_prop_name_pool_str102[sizeof("geor")]; + char unicode_prop_name_pool_str103[sizeof("greek")]; + char unicode_prop_name_pool_str107[sizeof("mro")]; + char unicode_prop_name_pool_str108[sizeof("mroo")]; + char unicode_prop_name_pool_str110[sizeof("kana")]; 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")]; + char unicode_prop_name_pool_str120[sizeof("m")]; + char unicode_prop_name_pool_str133[sizeof("gonm")]; + char unicode_prop_name_pool_str134[sizeof("cakm")]; + char unicode_prop_name_pool_str139[sizeof("inosmanya")]; + char unicode_prop_name_pool_str142[sizeof("inmanichaean")]; + char unicode_prop_name_pool_str146[sizeof("inarmenian")]; + char unicode_prop_name_pool_str151[sizeof("inmro")]; + char unicode_prop_name_pool_str152[sizeof("inmiao")]; + char unicode_prop_name_pool_str156[sizeof("c")]; + char unicode_prop_name_pool_str163[sizeof("inchakma")]; + char unicode_prop_name_pool_str166[sizeof("common")]; + char unicode_prop_name_pool_str169[sizeof("mandaic")]; + char unicode_prop_name_pool_str182[sizeof("inmyanmar")]; + char unicode_prop_name_pool_str187[sizeof("inmakasar")]; + char unicode_prop_name_pool_str192[sizeof("qaai")]; + char unicode_prop_name_pool_str200[sizeof("inideographicsymbolsandpunctuation")]; + char unicode_prop_name_pool_str204[sizeof("inkhmer")]; + char unicode_prop_name_pool_str207[sizeof("cans")]; + char unicode_prop_name_pool_str209[sizeof("prependedconcatenationmark")]; + char unicode_prop_name_pool_str211[sizeof("lm")]; + char unicode_prop_name_pool_str212[sizeof("marc")]; + char unicode_prop_name_pool_str219[sizeof("connectorpunctuation")]; + char unicode_prop_name_pool_str220[sizeof("inrunic")]; + char unicode_prop_name_pool_str221[sizeof("incarian")]; + char unicode_prop_name_pool_str223[sizeof("inavestan")]; + char unicode_prop_name_pool_str225[sizeof("combiningmark")]; + char unicode_prop_name_pool_str226[sizeof("incuneiformnumbersandpunctuation")]; + char unicode_prop_name_pool_str231[sizeof("merc")]; + char unicode_prop_name_pool_str238[sizeof("perm")]; + char unicode_prop_name_pool_str239[sizeof("inahom")]; + char unicode_prop_name_pool_str240[sizeof("inipaextensions")]; + char unicode_prop_name_pool_str251[sizeof("incherokee")]; + char unicode_prop_name_pool_str257[sizeof("insharada")]; + char unicode_prop_name_pool_str268[sizeof("makasar")]; + char unicode_prop_name_pool_str272[sizeof("inarrows")]; + char unicode_prop_name_pool_str277[sizeof("lc")]; + char unicode_prop_name_pool_str279[sizeof("masaramgondi")]; + char unicode_prop_name_pool_str283[sizeof("incuneiform")]; + char unicode_prop_name_pool_str290[sizeof("mc")]; + char unicode_prop_name_pool_str293[sizeof("cc")]; + char unicode_prop_name_pool_str295[sizeof("inzanabazarsquare")]; + char unicode_prop_name_pool_str298[sizeof("lineseparator")]; + char unicode_prop_name_pool_str302[sizeof("armn")]; + char unicode_prop_name_pool_str305[sizeof("qmark")]; + char unicode_prop_name_pool_str306[sizeof("armi")]; + char unicode_prop_name_pool_str309[sizeof("insamaritan")]; + char unicode_prop_name_pool_str316[sizeof("armenian")]; + char unicode_prop_name_pool_str318[sizeof("inmarchen")]; + char unicode_prop_name_pool_str319[sizeof("inmasaramgondi")]; + char unicode_prop_name_pool_str321[sizeof("qaac")]; + char unicode_prop_name_pool_str330[sizeof("pc")]; + char unicode_prop_name_pool_str335[sizeof("inscriptionalparthian")]; + char unicode_prop_name_pool_str336[sizeof("latn")]; + char unicode_prop_name_pool_str340[sizeof("latin")]; + char unicode_prop_name_pool_str342[sizeof("ri")]; + char unicode_prop_name_pool_str345[sizeof("inthaana")]; + char unicode_prop_name_pool_str352[sizeof("inkhmersymbols")]; + char unicode_prop_name_pool_str355[sizeof("inkatakana")]; + char unicode_prop_name_pool_str356[sizeof("incyrillic")]; + char unicode_prop_name_pool_str357[sizeof("inthai")]; + char unicode_prop_name_pool_str359[sizeof("incham")]; + char unicode_prop_name_pool_str367[sizeof("inkaithi")]; + char unicode_prop_name_pool_str369[sizeof("zs")]; + char unicode_prop_name_pool_str372[sizeof("mtei")]; + char unicode_prop_name_pool_str375[sizeof("vai")]; + char unicode_prop_name_pool_str376[sizeof("vaii")]; + char unicode_prop_name_pool_str379[sizeof("initialpunctuation")]; + char unicode_prop_name_pool_str383[sizeof("cs")]; + char unicode_prop_name_pool_str399[sizeof("insyriac")]; + char unicode_prop_name_pool_str401[sizeof("pcm")]; + char unicode_prop_name_pool_str415[sizeof("intakri")]; + char unicode_prop_name_pool_str417[sizeof("mand")]; + char unicode_prop_name_pool_str419[sizeof("l")]; + char unicode_prop_name_pool_str420[sizeof("ps")]; + char unicode_prop_name_pool_str427[sizeof("dia")]; + char unicode_prop_name_pool_str431[sizeof("inkanaextendeda")]; + char unicode_prop_name_pool_str433[sizeof("di")]; + char unicode_prop_name_pool_str436[sizeof("mend")]; + char unicode_prop_name_pool_str437[sizeof("modi")]; + char unicode_prop_name_pool_str441[sizeof("ideo")]; + char unicode_prop_name_pool_str445[sizeof("katakana")]; + char unicode_prop_name_pool_str449[sizeof("prti")]; + char unicode_prop_name_pool_str456[sizeof("inideographicdescriptioncharacters")]; + char unicode_prop_name_pool_str457[sizeof("inlineara")]; + char unicode_prop_name_pool_str458[sizeof("xidcontinue")]; + char unicode_prop_name_pool_str461[sizeof("brai")]; + char unicode_prop_name_pool_str463[sizeof("inlao")]; + char unicode_prop_name_pool_str472[sizeof("ascii")]; + char unicode_prop_name_pool_str474[sizeof("privateuse")]; + char unicode_prop_name_pool_str477[sizeof("arabic")]; + char unicode_prop_name_pool_str478[sizeof("mongolian")]; + char unicode_prop_name_pool_str480[sizeof("inmyanmarextendeda")]; + char unicode_prop_name_pool_str481[sizeof("inruminumeralsymbols")]; + char unicode_prop_name_pool_str485[sizeof("letter")]; + char unicode_prop_name_pool_str487[sizeof("innandinagari")]; + char unicode_prop_name_pool_str499[sizeof("inmeeteimayek")]; + char unicode_prop_name_pool_str500[sizeof("inoldnortharabian")]; + char unicode_prop_name_pool_str503[sizeof("grlink")]; + char unicode_prop_name_pool_str504[sizeof("knda")]; + char unicode_prop_name_pool_str507[sizeof("kannada")]; + char unicode_prop_name_pool_str509[sizeof("incjkcompatibilityforms")]; + char unicode_prop_name_pool_str514[sizeof("incjkcompatibilityideographs")]; + char unicode_prop_name_pool_str528[sizeof("inmodi")]; + char unicode_prop_name_pool_str529[sizeof("kali")]; + char unicode_prop_name_pool_str532[sizeof("control")]; + char unicode_prop_name_pool_str536[sizeof("inadlam")]; + char unicode_prop_name_pool_str538[sizeof("inspecials")]; + char unicode_prop_name_pool_str540[sizeof("inmendekikakui")]; + char unicode_prop_name_pool_str545[sizeof("intransportandmapsymbols")]; + char unicode_prop_name_pool_str547[sizeof("letternumber")]; + char unicode_prop_name_pool_str549[sizeof("xidc")]; + char unicode_prop_name_pool_str550[sizeof("inmedefaidrin")]; + char unicode_prop_name_pool_str558[sizeof("inchesssymbols")]; + char unicode_prop_name_pool_str564[sizeof("inemoticons")]; + char unicode_prop_name_pool_str573[sizeof("brahmi")]; + char unicode_prop_name_pool_str575[sizeof("inolditalic")]; + char unicode_prop_name_pool_str578[sizeof("palm")]; + char unicode_prop_name_pool_str580[sizeof("inlycian")]; + char unicode_prop_name_pool_str588[sizeof("inmiscellaneousmathematicalsymbolsa")]; + char unicode_prop_name_pool_str594[sizeof("xids")]; + char unicode_prop_name_pool_str603[sizeof("psalterpahlavi")]; + char unicode_prop_name_pool_str619[sizeof("insundanese")]; + char unicode_prop_name_pool_str620[sizeof("inoldsogdian")]; + char unicode_prop_name_pool_str632[sizeof("diacritic")]; + char unicode_prop_name_pool_str634[sizeof("gothic")]; + char unicode_prop_name_pool_str635[sizeof("inancientsymbols")]; + char unicode_prop_name_pool_str639[sizeof("meroiticcursive")]; + char unicode_prop_name_pool_str643[sizeof("inmalayalam")]; + char unicode_prop_name_pool_str648[sizeof("patternwhitespace")]; + char unicode_prop_name_pool_str649[sizeof("sk")]; + char unicode_prop_name_pool_str652[sizeof("insmallkanaextension")]; + char unicode_prop_name_pool_str656[sizeof("inmandaic")]; + char unicode_prop_name_pool_str657[sizeof("lt")]; + char unicode_prop_name_pool_str665[sizeof("so")]; + char unicode_prop_name_pool_str666[sizeof("inlinearbideograms")]; + char unicode_prop_name_pool_str668[sizeof("incommonindicnumberforms")]; + char unicode_prop_name_pool_str669[sizeof("incjkcompatibilityideographssupplement")]; + char unicode_prop_name_pool_str677[sizeof("idc")]; + char unicode_prop_name_pool_str678[sizeof("inoldsoutharabian")]; + char unicode_prop_name_pool_str699[sizeof("insylotinagri")]; + char unicode_prop_name_pool_str701[sizeof("idsbinaryoperator")]; + char unicode_prop_name_pool_str707[sizeof("sora")]; + char unicode_prop_name_pool_str708[sizeof("bamum")]; + char unicode_prop_name_pool_str709[sizeof("inkanasupplement")]; + char unicode_prop_name_pool_str710[sizeof("incjkstrokes")]; + char unicode_prop_name_pool_str715[sizeof("joinc")]; + char unicode_prop_name_pool_str718[sizeof("inopticalcharacterrecognition")]; + char unicode_prop_name_pool_str722[sizeof("vs")]; + char unicode_prop_name_pool_str728[sizeof("indominotiles")]; + char unicode_prop_name_pool_str732[sizeof("batk")]; + char unicode_prop_name_pool_str739[sizeof("grext")]; + char unicode_prop_name_pool_str741[sizeof("batak")]; + char unicode_prop_name_pool_str749[sizeof("patws")]; + char unicode_prop_name_pool_str752[sizeof("inmodifiertoneletters")]; + char unicode_prop_name_pool_str753[sizeof("ital")]; + char unicode_prop_name_pool_str760[sizeof("bass")]; + char unicode_prop_name_pool_str763[sizeof("decimalnumber")]; + char unicode_prop_name_pool_str765[sizeof("alnum")]; + char unicode_prop_name_pool_str767[sizeof("ids")]; + char unicode_prop_name_pool_str776[sizeof("print")]; + char unicode_prop_name_pool_str778[sizeof("inlatinextendeda")]; + char unicode_prop_name_pool_str782[sizeof("intaitham")]; + char unicode_prop_name_pool_str783[sizeof("inmusicalsymbols")]; + char unicode_prop_name_pool_str785[sizeof("intaile")]; + char unicode_prop_name_pool_str794[sizeof("samr")]; + char unicode_prop_name_pool_str809[sizeof("samaritan")]; + char unicode_prop_name_pool_str813[sizeof("s")]; + char unicode_prop_name_pool_str816[sizeof("inlatinextendede")]; + char unicode_prop_name_pool_str820[sizeof("bali")]; + char unicode_prop_name_pool_str826[sizeof("lisu")]; + char unicode_prop_name_pool_str827[sizeof("pauc")]; + char unicode_prop_name_pool_str828[sizeof("patternsyntax")]; + char unicode_prop_name_pool_str829[sizeof("incontrolpictures")]; + char unicode_prop_name_pool_str830[sizeof("blank")]; + char unicode_prop_name_pool_str834[sizeof("inmiscellaneoussymbols")]; + char unicode_prop_name_pool_str835[sizeof("ll")]; + char unicode_prop_name_pool_str836[sizeof("inancientgreekmusicalnotation")]; + char unicode_prop_name_pool_str837[sizeof("zl")]; + char unicode_prop_name_pool_str838[sizeof("inlydian")]; + char unicode_prop_name_pool_str839[sizeof("sm")]; + char unicode_prop_name_pool_str843[sizeof("inmiscellaneoussymbolsandarrows")]; + char unicode_prop_name_pool_str844[sizeof("inugaritic")]; + char unicode_prop_name_pool_str845[sizeof("bengali")]; + char unicode_prop_name_pool_str846[sizeof("pd")]; + char unicode_prop_name_pool_str848[sizeof("inmiscellaneoussymbolsandpictographs")]; + char unicode_prop_name_pool_str850[sizeof("medf")]; + char unicode_prop_name_pool_str855[sizeof("cf")]; + char unicode_prop_name_pool_str858[sizeof("balinese")]; + char unicode_prop_name_pool_str860[sizeof("medefaidrin")]; + char unicode_prop_name_pool_str865[sizeof("han")]; + char unicode_prop_name_pool_str869[sizeof("intamil")]; + char unicode_prop_name_pool_str870[sizeof("hani")]; + char unicode_prop_name_pool_str871[sizeof("inmultani")]; + char unicode_prop_name_pool_str879[sizeof("hano")]; + char unicode_prop_name_pool_str887[sizeof("inshorthandformatcontrols")]; + char unicode_prop_name_pool_str891[sizeof("insaurashtra")]; + char unicode_prop_name_pool_str892[sizeof("pf")]; + char unicode_prop_name_pool_str894[sizeof("inoldturkic")]; + char unicode_prop_name_pool_str896[sizeof("idcontinue")]; + char unicode_prop_name_pool_str901[sizeof("hanunoo")]; + char unicode_prop_name_pool_str905[sizeof("sc")]; + char unicode_prop_name_pool_str906[sizeof("inkhojki")]; + char unicode_prop_name_pool_str913[sizeof("idst")]; + char unicode_prop_name_pool_str915[sizeof("canadianaboriginal")]; + char unicode_prop_name_pool_str923[sizeof("hira")]; + char unicode_prop_name_pool_str925[sizeof("plrd")]; + char unicode_prop_name_pool_str939[sizeof("incaucasianalbanian")]; + char unicode_prop_name_pool_str940[sizeof("indeseret")]; + char unicode_prop_name_pool_str945[sizeof("inearlydynasticcuneiform")]; + char unicode_prop_name_pool_str946[sizeof("inspacingmodifierletters")]; + char unicode_prop_name_pool_str950[sizeof("innewa")]; + char unicode_prop_name_pool_str972[sizeof("idstart")]; + char unicode_prop_name_pool_str977[sizeof("zinh")]; + char unicode_prop_name_pool_str981[sizeof("incyrillicextendeda")]; + char unicode_prop_name_pool_str984[sizeof("dsrt")]; + char unicode_prop_name_pool_str993[sizeof("cased")]; + char unicode_prop_name_pool_str999[sizeof("glagolitic")]; + char unicode_prop_name_pool_str1002[sizeof("inhanifirohingya")]; + char unicode_prop_name_pool_str1006[sizeof("inancientgreeknumbers")]; + char unicode_prop_name_pool_str1008[sizeof("inmeeteimayekextensions")]; + char unicode_prop_name_pool_str1009[sizeof("intaixuanjingsymbols")]; + char unicode_prop_name_pool_str1016[sizeof("joincontrol")]; + char unicode_prop_name_pool_str1020[sizeof("runr")]; + char unicode_prop_name_pool_str1023[sizeof("inwarangciti")]; + char unicode_prop_name_pool_str1025[sizeof("deseret")]; + char unicode_prop_name_pool_str1035[sizeof("inhiragana")]; + char unicode_prop_name_pool_str1039[sizeof("sind")]; + char unicode_prop_name_pool_str1047[sizeof("cherokee")]; + char unicode_prop_name_pool_str1050[sizeof("inlatinextendedc")]; + char unicode_prop_name_pool_str1052[sizeof("adlm")]; + char unicode_prop_name_pool_str1053[sizeof("phoenician")]; + char unicode_prop_name_pool_str1056[sizeof("cher")]; + char unicode_prop_name_pool_str1059[sizeof("marchen")]; + char unicode_prop_name_pool_str1062[sizeof("inkhudawadi")]; + char unicode_prop_name_pool_str1063[sizeof("sinhala")]; + char unicode_prop_name_pool_str1066[sizeof("lower")]; + char unicode_prop_name_pool_str1068[sizeof("graphemelink")]; + char unicode_prop_name_pool_str1069[sizeof("xidstart")]; + char unicode_prop_name_pool_str1071[sizeof("ingrantha")]; + char unicode_prop_name_pool_str1072[sizeof("bidic")]; + char unicode_prop_name_pool_str1074[sizeof("xdigit")]; + char unicode_prop_name_pool_str1076[sizeof("casedletter")]; + char unicode_prop_name_pool_str1078[sizeof("gong")]; + char unicode_prop_name_pool_str1079[sizeof("multani")]; + char unicode_prop_name_pool_str1082[sizeof("gunjalagondi")]; + char unicode_prop_name_pool_str1084[sizeof("cham")]; + char unicode_prop_name_pool_str1086[sizeof("chakma")]; + char unicode_prop_name_pool_str1087[sizeof("mong")]; + char unicode_prop_name_pool_str1088[sizeof("kaithi")]; + char unicode_prop_name_pool_str1089[sizeof("inmahajani")]; + char unicode_prop_name_pool_str1090[sizeof("graphemebase")]; + char unicode_prop_name_pool_str1092[sizeof("insiddham")]; + char unicode_prop_name_pool_str1095[sizeof("inogham")]; + char unicode_prop_name_pool_str1101[sizeof("inosage")]; + char unicode_prop_name_pool_str1102[sizeof("incountingrodnumerals")]; + char unicode_prop_name_pool_str1104[sizeof("inwancho")]; + char unicode_prop_name_pool_str1105[sizeof("khojki")]; + char unicode_prop_name_pool_str1107[sizeof("ingeneralpunctuation")]; + char unicode_prop_name_pool_str1108[sizeof("georgian")]; + char unicode_prop_name_pool_str1117[sizeof("incyrillicextendedc")]; + char unicode_prop_name_pool_str1118[sizeof("inkayahli")]; + char unicode_prop_name_pool_str1121[sizeof("khar")]; + char unicode_prop_name_pool_str1124[sizeof("inoriya")]; + char unicode_prop_name_pool_str1126[sizeof("manichaean")]; + char unicode_prop_name_pool_str1132[sizeof("bamu")]; + char unicode_prop_name_pool_str1133[sizeof("zanb")]; + char unicode_prop_name_pool_str1136[sizeof("oriya")]; + char unicode_prop_name_pool_str1137[sizeof("inolchiki")]; + char unicode_prop_name_pool_str1138[sizeof("linb")]; + char unicode_prop_name_pool_str1141[sizeof("inethiopic")]; + char unicode_prop_name_pool_str1143[sizeof("wara")]; + char unicode_prop_name_pool_str1144[sizeof("ingeorgian")]; + char unicode_prop_name_pool_str1149[sizeof("innabataean")]; + char unicode_prop_name_pool_str1154[sizeof("inkanbun")]; + char unicode_prop_name_pool_str1156[sizeof("adlam")]; + char unicode_prop_name_pool_str1157[sizeof("inbhaiksuki")]; + char unicode_prop_name_pool_str1162[sizeof("insinhala")]; + char unicode_prop_name_pool_str1163[sizeof("inelbasan")]; + char unicode_prop_name_pool_str1169[sizeof("lowercase")]; + char unicode_prop_name_pool_str1178[sizeof("takri")]; + char unicode_prop_name_pool_str1179[sizeof("inmongolian")]; + char unicode_prop_name_pool_str1181[sizeof("invai")]; + char unicode_prop_name_pool_str1182[sizeof("xsux")]; + char unicode_prop_name_pool_str1183[sizeof("cntrl")]; + char unicode_prop_name_pool_str1186[sizeof("emoji")]; + char unicode_prop_name_pool_str1187[sizeof("sterm")]; + char unicode_prop_name_pool_str1189[sizeof("cuneiform")]; + char unicode_prop_name_pool_str1192[sizeof("cwcm")]; + char unicode_prop_name_pool_str1194[sizeof("hatran")]; + char unicode_prop_name_pool_str1197[sizeof("linearb")]; + char unicode_prop_name_pool_str1201[sizeof("taile")]; + char unicode_prop_name_pool_str1202[sizeof("inlatinextendedadditional")]; + char unicode_prop_name_pool_str1203[sizeof("inenclosedalphanumerics")]; + char unicode_prop_name_pool_str1205[sizeof("anatolianhieroglyphs")]; + char unicode_prop_name_pool_str1206[sizeof("incyrillicsupplement")]; + char unicode_prop_name_pool_str1208[sizeof("intamilsupplement")]; + char unicode_prop_name_pool_str1215[sizeof("inmiscellaneoustechnical")]; + char unicode_prop_name_pool_str1217[sizeof("ahom")]; + char unicode_prop_name_pool_str1218[sizeof("incherokeesupplement")]; + char unicode_prop_name_pool_str1219[sizeof("takr")]; + char unicode_prop_name_pool_str1224[sizeof("khmr")]; + char unicode_prop_name_pool_str1228[sizeof("incjkunifiedideographsextensiona")]; + char unicode_prop_name_pool_str1231[sizeof("quotationmark")]; + char unicode_prop_name_pool_str1233[sizeof("lyci")]; + char unicode_prop_name_pool_str1234[sizeof("lycian")]; + char unicode_prop_name_pool_str1235[sizeof("ingurmukhi")]; + char unicode_prop_name_pool_str1237[sizeof("runic")]; + char unicode_prop_name_pool_str1238[sizeof("limb")]; + char unicode_prop_name_pool_str1240[sizeof("inscriptionalpahlavi")]; + char unicode_prop_name_pool_str1242[sizeof("hatr")]; + char unicode_prop_name_pool_str1244[sizeof("variationselector")]; + char unicode_prop_name_pool_str1246[sizeof("modifierletter")]; + char unicode_prop_name_pool_str1247[sizeof("incjkunifiedideographsextensione")]; + char unicode_prop_name_pool_str1262[sizeof("mymr")]; + char unicode_prop_name_pool_str1265[sizeof("myanmar")]; + char unicode_prop_name_pool_str1267[sizeof("lu")]; + char unicode_prop_name_pool_str1275[sizeof("kharoshthi")]; + char unicode_prop_name_pool_str1276[sizeof("inarabic")]; + char unicode_prop_name_pool_str1278[sizeof("radical")]; + char unicode_prop_name_pool_str1281[sizeof("khmer")]; + char unicode_prop_name_pool_str1286[sizeof("inunifiedcanadianaboriginalsyllabics")]; + char unicode_prop_name_pool_str1292[sizeof("osage")]; + char unicode_prop_name_pool_str1296[sizeof("sundanese")]; + char unicode_prop_name_pool_str1300[sizeof("innewtailue")]; + char unicode_prop_name_pool_str1302[sizeof("logicalorderexception")]; + char unicode_prop_name_pool_str1304[sizeof("math")]; + char unicode_prop_name_pool_str1306[sizeof("braille")]; + char unicode_prop_name_pool_str1311[sizeof("goth")]; + char unicode_prop_name_pool_str1312[sizeof("insorasompeng")]; + char unicode_prop_name_pool_str1316[sizeof("insoyombo")]; + char unicode_prop_name_pool_str1317[sizeof("arab")]; + char unicode_prop_name_pool_str1322[sizeof("saur")]; + char unicode_prop_name_pool_str1329[sizeof("guru")]; + char unicode_prop_name_pool_str1333[sizeof("term")]; + char unicode_prop_name_pool_str1337[sizeof("paucinhau")]; + char unicode_prop_name_pool_str1338[sizeof("inbasiclatin")]; + char unicode_prop_name_pool_str1339[sizeof("inarabicpresentationformsa")]; + char unicode_prop_name_pool_str1347[sizeof("punct")]; + char unicode_prop_name_pool_str1348[sizeof("gurmukhi")]; + char unicode_prop_name_pool_str1354[sizeof("grantha")]; + char unicode_prop_name_pool_str1355[sizeof("inshavian")]; + char unicode_prop_name_pool_str1356[sizeof("osma")]; + char unicode_prop_name_pool_str1357[sizeof("inenclosedalphanumericsupplement")]; + char unicode_prop_name_pool_str1360[sizeof("intirhuta")]; + char unicode_prop_name_pool_str1361[sizeof("inelymaic")]; + char unicode_prop_name_pool_str1362[sizeof("inhatran")]; + char unicode_prop_name_pool_str1364[sizeof("incjkunifiedideographsextensionc")]; + char unicode_prop_name_pool_str1365[sizeof("emojimodifier")]; + char unicode_prop_name_pool_str1368[sizeof("uideo")]; + char unicode_prop_name_pool_str1373[sizeof("bidicontrol")]; + char unicode_prop_name_pool_str1379[sizeof("phnx")]; + char unicode_prop_name_pool_str1380[sizeof("limbu")]; + char unicode_prop_name_pool_str1384[sizeof("n")]; + char unicode_prop_name_pool_str1388[sizeof("inenclosedideographicsupplement")]; + char unicode_prop_name_pool_str1392[sizeof("mult")]; + char unicode_prop_name_pool_str1398[sizeof("kthi")]; + char unicode_prop_name_pool_str1399[sizeof("incjkunifiedideographs")]; + char unicode_prop_name_pool_str1401[sizeof("ingreekandcoptic")]; + char unicode_prop_name_pool_str1403[sizeof("inoldhungarian")]; + char unicode_prop_name_pool_str1406[sizeof("incjkcompatibility")]; + char unicode_prop_name_pool_str1409[sizeof("grbase")]; + char unicode_prop_name_pool_str1411[sizeof("nandinagari")]; + char unicode_prop_name_pool_str1412[sizeof("brah")]; + char unicode_prop_name_pool_str1414[sizeof("no")]; + char unicode_prop_name_pool_str1421[sizeof("sd")]; + char unicode_prop_name_pool_str1423[sizeof("nko")]; + char unicode_prop_name_pool_str1424[sizeof("nkoo")]; + char unicode_prop_name_pool_str1427[sizeof("xpeo")]; + char unicode_prop_name_pool_str1430[sizeof("sidd")]; + char unicode_prop_name_pool_str1435[sizeof("inherited")]; + char unicode_prop_name_pool_str1437[sizeof("p")]; + char unicode_prop_name_pool_str1440[sizeof("phli")]; + char unicode_prop_name_pool_str1443[sizeof("inmeroitichieroglyphs")]; + char unicode_prop_name_pool_str1444[sizeof("inphoenician")]; + char unicode_prop_name_pool_str1449[sizeof("inmayannumerals")]; + char unicode_prop_name_pool_str1453[sizeof("saurashtra")]; + char unicode_prop_name_pool_str1455[sizeof("inkangxiradicals")]; + char unicode_prop_name_pool_str1461[sizeof("enclosingmark")]; + char unicode_prop_name_pool_str1467[sizeof("graphemeextend")]; + char unicode_prop_name_pool_str1468[sizeof("beng")]; + char unicode_prop_name_pool_str1473[sizeof("inbatak")]; + char unicode_prop_name_pool_str1474[sizeof("glag")]; + char unicode_prop_name_pool_str1475[sizeof("ahex")]; + char unicode_prop_name_pool_str1477[sizeof("patsyn")]; + char unicode_prop_name_pool_str1479[sizeof("odi")]; + char unicode_prop_name_pool_str1486[sizeof("dogra")]; + char unicode_prop_name_pool_str1489[sizeof("intibetan")]; + char unicode_prop_name_pool_str1491[sizeof("lydi")]; + char unicode_prop_name_pool_str1492[sizeof("lydian")]; + char unicode_prop_name_pool_str1499[sizeof("inblockelements")]; + char unicode_prop_name_pool_str1506[sizeof("cwcf")]; + char unicode_prop_name_pool_str1507[sizeof("inunifiedcanadianaboriginalsyllabicsextended")]; + char unicode_prop_name_pool_str1508[sizeof("regionalindicator")]; + char unicode_prop_name_pool_str1509[sizeof("ingreekextended")]; + char unicode_prop_name_pool_str1513[sizeof("emojimodifierbase")]; + char unicode_prop_name_pool_str1514[sizeof("inanatolianhieroglyphs")]; + char unicode_prop_name_pool_str1516[sizeof("indogra")]; + char unicode_prop_name_pool_str1517[sizeof("taiviet")]; + char unicode_prop_name_pool_str1524[sizeof("inyiradicals")]; + char unicode_prop_name_pool_str1525[sizeof("unassigned")]; + char unicode_prop_name_pool_str1532[sizeof("insundanesesupplement")]; + char unicode_prop_name_pool_str1535[sizeof("innumberforms")]; + char unicode_prop_name_pool_str1538[sizeof("lowercaseletter")]; + char unicode_prop_name_pool_str1541[sizeof("dogr")]; + char unicode_prop_name_pool_str1542[sizeof("lepc")]; + char unicode_prop_name_pool_str1545[sizeof("bhks")]; + char unicode_prop_name_pool_str1553[sizeof("word")]; + char unicode_prop_name_pool_str1554[sizeof("gujr")]; + char unicode_prop_name_pool_str1555[sizeof("inphaistosdisc")]; + char unicode_prop_name_pool_str1557[sizeof("bhaiksuki")]; + char unicode_prop_name_pool_str1560[sizeof("dash")]; + char unicode_prop_name_pool_str1562[sizeof("inarabicextendeda")]; + char unicode_prop_name_pool_str1565[sizeof("gujarati")]; + char unicode_prop_name_pool_str1566[sizeof("inlatinextendedd")]; + char unicode_prop_name_pool_str1567[sizeof("innoblock")]; + char unicode_prop_name_pool_str1570[sizeof("java")]; + char unicode_prop_name_pool_str1576[sizeof("ingeometricshapes")]; + char unicode_prop_name_pool_str1577[sizeof("cyrl")]; + char unicode_prop_name_pool_str1582[sizeof("indevanagari")]; + char unicode_prop_name_pool_str1583[sizeof("inbalinese")]; + char unicode_prop_name_pool_str1585[sizeof("inbyzantinemusicalsymbols")]; + char unicode_prop_name_pool_str1589[sizeof("tale")]; + char unicode_prop_name_pool_str1591[sizeof("deva")]; + char unicode_prop_name_pool_str1594[sizeof("hex")]; + char unicode_prop_name_pool_str1601[sizeof("inmyanmarextendedb")]; + char unicode_prop_name_pool_str1603[sizeof("sinh")]; + char unicode_prop_name_pool_str1604[sizeof("cwt")]; + char unicode_prop_name_pool_str1606[sizeof("shavian")]; + char unicode_prop_name_pool_str1607[sizeof("devanagari")]; + char unicode_prop_name_pool_str1609[sizeof("oidc")]; + char unicode_prop_name_pool_str1615[sizeof("javanese")]; + char unicode_prop_name_pool_str1621[sizeof("mlym")]; + char unicode_prop_name_pool_str1622[sizeof("incjkunifiedideographsextensiond")]; + char unicode_prop_name_pool_str1624[sizeof("sentenceterminal")]; + char unicode_prop_name_pool_str1626[sizeof("malayalam")]; + char unicode_prop_name_pool_str1628[sizeof("inhanunoo")]; + char unicode_prop_name_pool_str1629[sizeof("insinhalaarchaicnumbers")]; + char unicode_prop_name_pool_str1631[sizeof("olck")]; + char unicode_prop_name_pool_str1633[sizeof("inimperialaramaic")]; + char unicode_prop_name_pool_str1636[sizeof("olower")]; + char unicode_prop_name_pool_str1638[sizeof("palmyrene")]; + char unicode_prop_name_pool_str1642[sizeof("avestan")]; + char unicode_prop_name_pool_str1645[sizeof("incjkunifiedideographsextensionf")]; + char unicode_prop_name_pool_str1646[sizeof("insogdian")]; + char unicode_prop_name_pool_str1647[sizeof("indingbats")]; + char unicode_prop_name_pool_str1648[sizeof("olchiki")]; + char unicode_prop_name_pool_str1654[sizeof("oids")]; + char unicode_prop_name_pool_str1661[sizeof("punctuation")]; + char unicode_prop_name_pool_str1663[sizeof("sund")]; + char unicode_prop_name_pool_str1666[sizeof("inbraillepatterns")]; + char unicode_prop_name_pool_str1669[sizeof("emojicomponent")]; + char unicode_prop_name_pool_str1672[sizeof("ideographic")]; + char unicode_prop_name_pool_str1673[sizeof("taml")]; + char unicode_prop_name_pool_str1688[sizeof("format")]; + char unicode_prop_name_pool_str1694[sizeof("inornamentaldingbats")]; + char unicode_prop_name_pool_str1700[sizeof("coptic")]; + char unicode_prop_name_pool_str1702[sizeof("caseignorable")]; + char unicode_prop_name_pool_str1708[sizeof("idsb")]; + char unicode_prop_name_pool_str1709[sizeof("inmiscellaneousmathematicalsymbolsb")]; + char unicode_prop_name_pool_str1712[sizeof("sogdian")]; + char unicode_prop_name_pool_str1715[sizeof("sogo")]; + char unicode_prop_name_pool_str1720[sizeof("terminalpunctuation")]; + char unicode_prop_name_pool_str1722[sizeof("intangut")]; + char unicode_prop_name_pool_str1729[sizeof("intifinagh")]; + char unicode_prop_name_pool_str1733[sizeof("inlowsurrogates")]; + char unicode_prop_name_pool_str1743[sizeof("invariationselectors")]; + char unicode_prop_name_pool_str1745[sizeof("copt")]; + char unicode_prop_name_pool_str1750[sizeof("soyo")]; + char unicode_prop_name_pool_str1753[sizeof("intags")]; + char unicode_prop_name_pool_str1756[sizeof("inverticalforms")]; + char unicode_prop_name_pool_str1757[sizeof("ininscriptionalparthian")]; + char unicode_prop_name_pool_str1760[sizeof("ininscriptionalpahlavi")]; + char unicode_prop_name_pool_str1763[sizeof("meroitichieroglyphs")]; + char unicode_prop_name_pool_str1764[sizeof("asciihexdigit")]; + char unicode_prop_name_pool_str1766[sizeof("inethiopicextendeda")]; + char unicode_prop_name_pool_str1767[sizeof("invedicextensions")]; + char unicode_prop_name_pool_str1781[sizeof("nand")]; + char unicode_prop_name_pool_str1782[sizeof("cwl")]; + char unicode_prop_name_pool_str1785[sizeof("cprt")]; + char unicode_prop_name_pool_str1791[sizeof("innushu")]; + char unicode_prop_name_pool_str1794[sizeof("zanabazarsquare")]; + char unicode_prop_name_pool_str1797[sizeof("ingeometricshapesextended")]; + char unicode_prop_name_pool_str1798[sizeof("avst")]; + char unicode_prop_name_pool_str1808[sizeof("imperialaramaic")]; + char unicode_prop_name_pool_str1810[sizeof("bopo")]; + char unicode_prop_name_pool_str1812[sizeof("sarb")]; + char unicode_prop_name_pool_str1819[sizeof("inoldpersian")]; + char unicode_prop_name_pool_str1830[sizeof("intaiviet")]; + char unicode_prop_name_pool_str1834[sizeof("mahj")]; + char unicode_prop_name_pool_str1838[sizeof("inkatakanaphoneticextensions")]; + char unicode_prop_name_pool_str1845[sizeof("mahajani")]; + char unicode_prop_name_pool_str1871[sizeof("closepunctuation")]; + char unicode_prop_name_pool_str1875[sizeof("inlisu")]; + char unicode_prop_name_pool_str1878[sizeof("softdotted")]; + char unicode_prop_name_pool_str1897[sizeof("unknown")]; + char unicode_prop_name_pool_str1898[sizeof("invariationselectorssupplement")]; + char unicode_prop_name_pool_str1910[sizeof("syrc")]; + char unicode_prop_name_pool_str1911[sizeof("hang")]; + char unicode_prop_name_pool_str1926[sizeof("incjksymbolsandpunctuation")]; + char unicode_prop_name_pool_str1932[sizeof("ingujarati")]; + char unicode_prop_name_pool_str1933[sizeof("bopomofo")]; + char unicode_prop_name_pool_str1936[sizeof("alpha")]; + char unicode_prop_name_pool_str1937[sizeof("khoj")]; + char unicode_prop_name_pool_str1939[sizeof("inpalmyrene")]; + char unicode_prop_name_pool_str1942[sizeof("ingunjalagondi")]; + char unicode_prop_name_pool_str1948[sizeof("inoldpermic")]; + char unicode_prop_name_pool_str1950[sizeof("inlepcha")]; + char unicode_prop_name_pool_str1951[sizeof("assigned")]; + char unicode_prop_name_pool_str1955[sizeof("incurrencysymbols")]; + char unicode_prop_name_pool_str1958[sizeof("insmallformvariants")]; + char unicode_prop_name_pool_str1959[sizeof("sorasompeng")]; + char unicode_prop_name_pool_str1964[sizeof("inlinearbsyllabary")]; + char unicode_prop_name_pool_str1965[sizeof("oldpersian")]; + char unicode_prop_name_pool_str1972[sizeof("caucasianalbanian")]; + char unicode_prop_name_pool_str1973[sizeof("inenclosedcjklettersandmonths")]; + char unicode_prop_name_pool_str1975[sizeof("hiragana")]; + char unicode_prop_name_pool_str1976[sizeof("inbamum")]; + char unicode_prop_name_pool_str1979[sizeof("inrejang")]; + char unicode_prop_name_pool_str1984[sizeof("graph")]; + char unicode_prop_name_pool_str1990[sizeof("sharada")]; + char unicode_prop_name_pool_str1991[sizeof("inethiopicsupplement")]; + char unicode_prop_name_pool_str1996[sizeof("indevanagariextended")]; + char unicode_prop_name_pool_str1997[sizeof("incoptic")]; + char unicode_prop_name_pool_str1998[sizeof("insyriacsupplement")]; + char unicode_prop_name_pool_str2004[sizeof("inmeroiticcursive")]; + char unicode_prop_name_pool_str2014[sizeof("hmng")]; + char unicode_prop_name_pool_str2022[sizeof("intelugu")]; + char unicode_prop_name_pool_str2029[sizeof("incombiningdiacriticalmarks")]; + char unicode_prop_name_pool_str2031[sizeof("mathsymbol")]; + char unicode_prop_name_pool_str2036[sizeof("titlecaseletter")]; + char unicode_prop_name_pool_str2038[sizeof("ugar")]; + char unicode_prop_name_pool_str2039[sizeof("incombiningdiacriticalmarksforsymbols")]; + char unicode_prop_name_pool_str2040[sizeof("spacingmark")]; + char unicode_prop_name_pool_str2043[sizeof("shrd")]; + char unicode_prop_name_pool_str2047[sizeof("injavanese")]; + char unicode_prop_name_pool_str2048[sizeof("syriac")]; + char unicode_prop_name_pool_str2054[sizeof("space")]; + char unicode_prop_name_pool_str2056[sizeof("hebr")]; + char unicode_prop_name_pool_str2061[sizeof("ext")]; + char unicode_prop_name_pool_str2064[sizeof("inhanguljamo")]; + char unicode_prop_name_pool_str2066[sizeof("phag")]; + char unicode_prop_name_pool_str2076[sizeof("inhanguljamoextendeda")]; + char unicode_prop_name_pool_str2082[sizeof("wancho")]; + char unicode_prop_name_pool_str2084[sizeof("bugi")]; + char unicode_prop_name_pool_str2089[sizeof("tamil")]; + char unicode_prop_name_pool_str2093[sizeof("sogd")]; + char unicode_prop_name_pool_str2094[sizeof("orkh")]; + char unicode_prop_name_pool_str2097[sizeof("oldpermic")]; + char unicode_prop_name_pool_str2100[sizeof("siddham")]; + char unicode_prop_name_pool_str2102[sizeof("incyrillicextendedb")]; + char unicode_prop_name_pool_str2105[sizeof("inbrahmi")]; + char unicode_prop_name_pool_str2108[sizeof("inmongoliansupplement")]; + char unicode_prop_name_pool_str2113[sizeof("thaa")]; + char unicode_prop_name_pool_str2118[sizeof("thaana")]; + char unicode_prop_name_pool_str2120[sizeof("thai")]; + char unicode_prop_name_pool_str2122[sizeof("buginese")]; + char unicode_prop_name_pool_str2127[sizeof("ingeorgiansupplement")]; + char unicode_prop_name_pool_str2129[sizeof("digit")]; + char unicode_prop_name_pool_str2132[sizeof("cyrillic")]; + char unicode_prop_name_pool_str2149[sizeof("sylo")]; + char unicode_prop_name_pool_str2150[sizeof("inphoneticextensions")]; + char unicode_prop_name_pool_str2151[sizeof("separator")]; + char unicode_prop_name_pool_str2159[sizeof("inethiopicextended")]; + char unicode_prop_name_pool_str2163[sizeof("inmathematicalalphanumericsymbols")]; + char unicode_prop_name_pool_str2168[sizeof("insymbolsandpictographsextendeda")]; + char unicode_prop_name_pool_str2170[sizeof("nd")]; + char unicode_prop_name_pool_str2176[sizeof("tirh")]; + char unicode_prop_name_pool_str2178[sizeof("tirhuta")]; + char unicode_prop_name_pool_str2184[sizeof("incombiningdiacriticalmarkssupplement")]; + char unicode_prop_name_pool_str2193[sizeof("extender")]; + char unicode_prop_name_pool_str2197[sizeof("wcho")]; + char unicode_prop_name_pool_str2199[sizeof("inbengali")]; + char unicode_prop_name_pool_str2201[sizeof("talu")]; + char unicode_prop_name_pool_str2206[sizeof("tang")]; + char unicode_prop_name_pool_str2207[sizeof("warangciti")]; + char unicode_prop_name_pool_str2210[sizeof("tagbanwa")]; + char unicode_prop_name_pool_str2211[sizeof("orya")]; + char unicode_prop_name_pool_str2212[sizeof("nl")]; + char unicode_prop_name_pool_str2213[sizeof("induployan")]; + char unicode_prop_name_pool_str2214[sizeof("cwu")]; + char unicode_prop_name_pool_str2216[sizeof("inbuginese")]; + char unicode_prop_name_pool_str2220[sizeof("telu")]; + char unicode_prop_name_pool_str2223[sizeof("ogam")]; + char unicode_prop_name_pool_str2226[sizeof("taitham")]; + char unicode_prop_name_pool_str2237[sizeof("rjng")]; + char unicode_prop_name_pool_str2240[sizeof("insuttonsignwriting")]; + char unicode_prop_name_pool_str2250[sizeof("incombiningdiacriticalmarksextended")]; + char unicode_prop_name_pool_str2251[sizeof("number")]; + char unicode_prop_name_pool_str2264[sizeof("inyijinghexagramsymbols")]; + char unicode_prop_name_pool_str2277[sizeof("whitespace")]; + char unicode_prop_name_pool_str2278[sizeof("currencysymbol")]; + char unicode_prop_name_pool_str2285[sizeof("inottomansiyaqnumbers")]; + char unicode_prop_name_pool_str2288[sizeof("inlimbu")]; + char unicode_prop_name_pool_str2293[sizeof("incopticepactnumbers")]; + char unicode_prop_name_pool_str2295[sizeof("ingeorgianextended")]; + char unicode_prop_name_pool_str2305[sizeof("inphoneticextensionssupplement")]; + char unicode_prop_name_pool_str2308[sizeof("any")]; + char unicode_prop_name_pool_str2320[sizeof("osge")]; + char unicode_prop_name_pool_str2325[sizeof("defaultignorablecodepoint")]; + char unicode_prop_name_pool_str2326[sizeof("hangul")]; + char unicode_prop_name_pool_str2333[sizeof("newa")]; + char unicode_prop_name_pool_str2343[sizeof("ethi")]; + char unicode_prop_name_pool_str2345[sizeof("hanifirohingya")]; + char unicode_prop_name_pool_str2346[sizeof("hmnp")]; + char unicode_prop_name_pool_str2348[sizeof("olditalic")]; + char unicode_prop_name_pool_str2349[sizeof("incjkunifiedideographsextensionb")]; + char unicode_prop_name_pool_str2352[sizeof("rohg")]; + char unicode_prop_name_pool_str2353[sizeof("innyiakengpuachuehmong")]; + char unicode_prop_name_pool_str2355[sizeof("incjkradicalssupplement")]; + char unicode_prop_name_pool_str2364[sizeof("newtailue")]; + char unicode_prop_name_pool_str2365[sizeof("newline")]; + char unicode_prop_name_pool_str2366[sizeof("lepcha")]; + char unicode_prop_name_pool_str2375[sizeof("deprecated")]; + char unicode_prop_name_pool_str2381[sizeof("buhd")]; + char unicode_prop_name_pool_str2391[sizeof("inglagolitic")]; + char unicode_prop_name_pool_str2395[sizeof("inaegeannumbers")]; + char unicode_prop_name_pool_str2400[sizeof("modifiersymbol")]; + char unicode_prop_name_pool_str2410[sizeof("surrogate")]; + char unicode_prop_name_pool_str2418[sizeof("inletterlikesymbols")]; + char unicode_prop_name_pool_str2426[sizeof("idstrinaryoperator")]; + char unicode_prop_name_pool_str2442[sizeof("intagalog")]; + char unicode_prop_name_pool_str2443[sizeof("tangut")]; + char unicode_prop_name_pool_str2445[sizeof("osmanya")]; + char unicode_prop_name_pool_str2447[sizeof("oalpha")]; + char unicode_prop_name_pool_str2448[sizeof("inphagspa")]; + char unicode_prop_name_pool_str2455[sizeof("ugaritic")]; + char unicode_prop_name_pool_str2456[sizeof("otheridcontinue")]; + char unicode_prop_name_pool_str2460[sizeof("inarabicpresentationformsb")]; + char unicode_prop_name_pool_str2462[sizeof("inbassavah")]; + char unicode_prop_name_pool_str2469[sizeof("other")]; + char unicode_prop_name_pool_str2478[sizeof("othernumber")]; + char unicode_prop_name_pool_str2480[sizeof("sylotinagri")]; + char unicode_prop_name_pool_str2487[sizeof("ingothic")]; + char unicode_prop_name_pool_str2498[sizeof("inbuhid")]; + char unicode_prop_name_pool_str2502[sizeof("inlatin1supplement")]; + char unicode_prop_name_pool_str2516[sizeof("intagbanwa")]; + char unicode_prop_name_pool_str2523[sizeof("shaw")]; + char unicode_prop_name_pool_str2529[sizeof("oldhungarian")]; + char unicode_prop_name_pool_str2538[sizeof("inmahjongtiles")]; + char unicode_prop_name_pool_str2542[sizeof("hung")]; + char unicode_prop_name_pool_str2544[sizeof("tifinagh")]; + char unicode_prop_name_pool_str2554[sizeof("inbopomofo")]; + char unicode_prop_name_pool_str2561[sizeof("narb")]; + char unicode_prop_name_pool_str2571[sizeof("inyisyllables")]; + char unicode_prop_name_pool_str2573[sizeof("kayahli")]; + char unicode_prop_name_pool_str2578[sizeof("otheralphabetic")]; + char unicode_prop_name_pool_str2582[sizeof("phagspa")]; + char unicode_prop_name_pool_str2584[sizeof("inprivateusearea")]; + char unicode_prop_name_pool_str2588[sizeof("elba")]; + char unicode_prop_name_pool_str2591[sizeof("nchar")]; + char unicode_prop_name_pool_str2607[sizeof("spaceseparator")]; + char unicode_prop_name_pool_str2609[sizeof("tibt")]; + char unicode_prop_name_pool_str2611[sizeof("extendedpictographic")]; + char unicode_prop_name_pool_str2615[sizeof("tibetan")]; + char unicode_prop_name_pool_str2616[sizeof("sgnw")]; + char unicode_prop_name_pool_str2622[sizeof("hexdigit")]; + char unicode_prop_name_pool_str2623[sizeof("tfng")]; + char unicode_prop_name_pool_str2627[sizeof("inbamumsupplement")]; + char unicode_prop_name_pool_str2632[sizeof("tavt")]; + char unicode_prop_name_pool_str2633[sizeof("incombininghalfmarks")]; + char unicode_prop_name_pool_str2634[sizeof("inarabicmathematicalalphabeticsymbols")]; + char unicode_prop_name_pool_str2638[sizeof("khudawadi")]; + char unicode_prop_name_pool_str2641[sizeof("inhalfwidthandfullwidthforms")]; + char unicode_prop_name_pool_str2652[sizeof("inhangulsyllables")]; + char unicode_prop_name_pool_str2653[sizeof("elym")]; + char unicode_prop_name_pool_str2669[sizeof("symbol")]; + char unicode_prop_name_pool_str2692[sizeof("bassavah")]; + char unicode_prop_name_pool_str2696[sizeof("elymaic")]; + char unicode_prop_name_pool_str2698[sizeof("changeswhencasemapped")]; + char unicode_prop_name_pool_str2709[sizeof("oldturkic")]; + char unicode_prop_name_pool_str2725[sizeof("inplayingcards")]; + char unicode_prop_name_pool_str2767[sizeof("zp")]; + char unicode_prop_name_pool_str2775[sizeof("elbasan")]; + char unicode_prop_name_pool_str2776[sizeof("buhid")]; + char unicode_prop_name_pool_str2779[sizeof("noncharactercodepoint")]; + char unicode_prop_name_pool_str2785[sizeof("finalpunctuation")]; + char unicode_prop_name_pool_str2794[sizeof("inpsalterpahlavi")]; + char unicode_prop_name_pool_str2800[sizeof("inpaucinhau")]; + char unicode_prop_name_pool_str2801[sizeof("nonspacingmark")]; + char unicode_prop_name_pool_str2804[sizeof("changeswhentitlecased")]; + char unicode_prop_name_pool_str2808[sizeof("inindicsiyaqnumbers")]; + char unicode_prop_name_pool_str2813[sizeof("phlp")]; + char unicode_prop_name_pool_str2824[sizeof("wspace")]; + char unicode_prop_name_pool_str2831[sizeof("nbat")]; + char unicode_prop_name_pool_str2836[sizeof("hluw")]; + char unicode_prop_name_pool_str2838[sizeof("cypriot")]; + char unicode_prop_name_pool_str2839[sizeof("nabataean")]; + char unicode_prop_name_pool_str2841[sizeof("inalchemicalsymbols")]; + char unicode_prop_name_pool_str2847[sizeof("dupl")]; + char unicode_prop_name_pool_str2856[sizeof("otherlowercase")]; + char unicode_prop_name_pool_str2875[sizeof("inarabicsupplement")]; + char unicode_prop_name_pool_str2876[sizeof("inalphabeticpresentationforms")]; + char unicode_prop_name_pool_str2890[sizeof("otherletter")]; + char unicode_prop_name_pool_str2916[sizeof("emojipresentation")]; + char unicode_prop_name_pool_str2930[sizeof("changeswhenlowercased")]; + char unicode_prop_name_pool_str2953[sizeof("dashpunctuation")]; + char unicode_prop_name_pool_str2954[sizeof("oldsogdian")]; + char unicode_prop_name_pool_str2970[sizeof("intangutcomponents")]; + char unicode_prop_name_pool_str2977[sizeof("soyombo")]; + char unicode_prop_name_pool_str2996[sizeof("paragraphseparator")]; + char unicode_prop_name_pool_str3012[sizeof("changeswhencasefolded")]; + char unicode_prop_name_pool_str3015[sizeof("othersymbol")]; + char unicode_prop_name_pool_str3020[sizeof("inlatinextendedb")]; + char unicode_prop_name_pool_str3072[sizeof("otheruppercase")]; + char unicode_prop_name_pool_str3079[sizeof("otheridstart")]; + char unicode_prop_name_pool_str3084[sizeof("inhebrew")]; + char unicode_prop_name_pool_str3088[sizeof("oldnortharabian")]; + char unicode_prop_name_pool_str3092[sizeof("omath")]; + char unicode_prop_name_pool_str3099[sizeof("incypriotsyllabary")]; + char unicode_prop_name_pool_str3118[sizeof("inmathematicaloperators")]; + char unicode_prop_name_pool_str3146[sizeof("changeswhenuppercased")]; + char unicode_prop_name_pool_str3154[sizeof("nshu")]; + char unicode_prop_name_pool_str3182[sizeof("insuperscriptsandsubscripts")]; + char unicode_prop_name_pool_str3188[sizeof("ogrext")]; + char unicode_prop_name_pool_str3197[sizeof("inhanguljamoextendedb")]; + char unicode_prop_name_pool_str3198[sizeof("alphabetic")]; + char unicode_prop_name_pool_str3199[sizeof("dep")]; + char unicode_prop_name_pool_str3216[sizeof("oupper")]; + char unicode_prop_name_pool_str3258[sizeof("zyyy")]; + char unicode_prop_name_pool_str3267[sizeof("aghb")]; + char unicode_prop_name_pool_str3285[sizeof("ogham")]; + char unicode_prop_name_pool_str3306[sizeof("rejang")]; + char unicode_prop_name_pool_str3324[sizeof("tagb")]; + char unicode_prop_name_pool_str3350[sizeof("hyphen")]; + char unicode_prop_name_pool_str3355[sizeof("insupplementalarrowsa")]; + char unicode_prop_name_pool_str3413[sizeof("inpahawhhmong")]; + char unicode_prop_name_pool_str3459[sizeof("nushu")]; + char unicode_prop_name_pool_str3478[sizeof("othermath")]; + char unicode_prop_name_pool_str3491[sizeof("insupplementalarrowsc")]; + char unicode_prop_name_pool_str3494[sizeof("insupplementalmathematicaloperators")]; + char unicode_prop_name_pool_str3500[sizeof("otherdefaultignorablecodepoint")]; + char unicode_prop_name_pool_str3527[sizeof("inhighprivateusesurrogates")]; + char unicode_prop_name_pool_str3538[sizeof("duployan")]; + char unicode_prop_name_pool_str3663[sizeof("oldsoutharabian")]; + char unicode_prop_name_pool_str3666[sizeof("tglg")]; + char unicode_prop_name_pool_str3685[sizeof("tagalog")]; + char unicode_prop_name_pool_str3692[sizeof("inbopomofoextended")]; + char unicode_prop_name_pool_str3731[sizeof("signwriting")]; + char unicode_prop_name_pool_str3750[sizeof("inegyptianhieroglyphs")]; + char unicode_prop_name_pool_str3763[sizeof("inegyptianhieroglyphformatcontrols")]; + char unicode_prop_name_pool_str3807[sizeof("upper")]; + char unicode_prop_name_pool_str3810[sizeof("otherpunctuation")]; + char unicode_prop_name_pool_str3872[sizeof("ethiopic")]; + char unicode_prop_name_pool_str3881[sizeof("hebrew")]; + char unicode_prop_name_pool_str3901[sizeof("telugu")]; + char unicode_prop_name_pool_str3910[sizeof("uppercase")]; + char unicode_prop_name_pool_str3937[sizeof("insupplementalpunctuation")]; + char unicode_prop_name_pool_str3946[sizeof("unifiedideograph")]; + char unicode_prop_name_pool_str3961[sizeof("pahawhhmong")]; + char unicode_prop_name_pool_str3971[sizeof("inglagoliticsupplement")]; + char unicode_prop_name_pool_str3992[sizeof("inboxdrawing")]; + char unicode_prop_name_pool_str4279[sizeof("uppercaseletter")]; + char unicode_prop_name_pool_str4298[sizeof("othergraphemeextend")]; + char unicode_prop_name_pool_str4401[sizeof("inhighsurrogates")]; + char unicode_prop_name_pool_str4476[sizeof("insupplementalarrowsb")]; + char unicode_prop_name_pool_str4562[sizeof("inhangulcompatibilityjamo")]; + char unicode_prop_name_pool_str4563[sizeof("egyp")]; + char unicode_prop_name_pool_str4577[sizeof("insupplementalsymbolsandpictographs")]; + char unicode_prop_name_pool_str4659[sizeof("nyiakengpuachuehmong")]; + char unicode_prop_name_pool_str4688[sizeof("insupplementaryprivateuseareaa")]; + char unicode_prop_name_pool_str4822[sizeof("openpunctuation")]; + char unicode_prop_name_pool_str4851[sizeof("egyptianhieroglyphs")]; + char unicode_prop_name_pool_str5809[sizeof("insupplementaryprivateuseareab")]; }; static const struct unicode_prop_name_pool_t unicode_prop_name_pool_contents = { "lana", - "lina", - "yi", - "cn", "z", + "yi", + "lina", "mn", "yiii", - "ci", + "cn", + "maka", "mani", + "zzzz", + "inkannada", + "ci", "lo", "lao", "laoo", "miao", - "maka", - "me", + "innko", "co", + "me", "loe", - "inkannada", - "innko", - "zzzz", "gran", "pi", "lineara", + "mark", "cari", "carian", - "pe", "po", - "kana", "mendekikakui", - "geor", - "meeteimayek", - "mark", - "m", "grek", - "mero", + "pe", + "meeteimayek", + "inkharoshthi", + "geor", + "greek", "mro", "mroo", + "kana", + "mero", + "m", "gonm", - "c", "cakm", - "greek", - "inkharoshthi", - "mandaic", "inosmanya", - "inarmenian", "inmanichaean", - "common", + "inarmenian", "inmro", "inmiao", - "qaai", + "c", "inchakma", + "common", + "mandaic", + "inmyanmar", + "inmakasar", + "qaai", + "inideographicsymbolsandpunctuation", + "inkhmer", "cans", - "connectorpunctuation", + "prependedconcatenationmark", "lm", "marc", - "inmyanmar", - "vai", - "vaii", - "inideographicsymbolsandpunctuation", - "merc", - "inavestan", - "incuneiformnumbersandpunctuation", - "inmakasar", + "connectorpunctuation", "inrunic", "incarian", - "prependedconcatenationmark", - "lc", - "inipaextensions", - "inkhmer", - "perm", + "inavestan", "combiningmark", + "incuneiformnumbersandpunctuation", + "merc", + "perm", "inahom", - "cc", + "inipaextensions", "incherokee", - "mc", "insharada", - "masaramgondi", - "incuneiform", "makasar", - "qaac", "inarrows", - "armn", + "lc", + "masaramgondi", + "incuneiform", + "mc", + "cc", + "inzanabazarsquare", "lineseparator", + "armn", + "qmark", "armi", - "pc", - "armenian", "insamaritan", - "inmasaramgondi", - "inzanabazarsquare", - "qmark", + "armenian", "inmarchen", - "zs", - "cs", - "incyrillic", - "incham", - "latn", + "inmasaramgondi", + "qaac", + "pc", "inscriptionalparthian", + "latn", "latin", "ri", - "inkhmersymbols", - "pcm", "inthaana", + "inkhmersymbols", + "inkatakana", + "incyrillic", + "inthai", + "incham", + "inkaithi", + "zs", "mtei", + "vai", + "vaii", + "initialpunctuation", + "cs", "insyriac", - "ps", - "inthai", + "pcm", + "intakri", + "mand", "l", - "innewa", - "inkatakana", - "ascii", - "initialpunctuation", - "inkaithi", - "arabic", - "inideographicdescriptioncharacters", - "inlineara", - "mand", - "mongolian", - "inlao", - "katakana", + "ps", + "dia", + "inkanaextendeda", + "di", "mend", - "intakri", - "inruminumeralsymbols", - "prti", "modi", - "inwarangciti", - "incjkcompatibilityforms", - "inspecials", - "incjkcompatibilityideographs", "ideo", + "katakana", + "prti", + "inideographicdescriptioncharacters", + "inlineara", + "xidcontinue", + "brai", + "inlao", + "ascii", "privateuse", - "kali", + "arabic", + "mongolian", "inmyanmarextendeda", + "inruminumeralsymbols", "letter", - "brai", - "inkanaextendeda", - "vs", - "xidcontinue", - "lower", - "inchesssymbols", - "control", - "inadlam", + "innandinagari", + "inmeeteimayek", + "inoldnortharabian", "grlink", "knda", - "inmeeteimayek", "kannada", - "inmiscellaneousmathematicalsymbolsa", - "palm", - "inlycian", + "incjkcompatibilityforms", + "incjkcompatibilityideographs", + "inmodi", + "kali", + "control", + "inadlam", + "inspecials", + "inmendekikakui", "intransportandmapsymbols", - "inoldnortharabian", - "inemoticons", "letternumber", - "inmodi", "xidc", - "lowercase", - "inancientsymbols", - "cwcm", "inmedefaidrin", - "psalterpahlavi", - "gothic", - "inmendekikakui", + "inchesssymbols", + "inemoticons", "brahmi", "inolditalic", - "inmalayalam", + "palm", + "inlycian", + "inmiscellaneousmathematicalsymbolsa", "xids", - "incommonindicnumberforms", - "meroiticcursive", - "inlinearbideograms", - "patternwhitespace", + "psalterpahlavi", "insundanese", - "joinc", "inoldsogdian", - "incjkstrokes", - "so", - "patternsyntax", + "diacritic", + "gothic", + "inancientsymbols", + "meroiticcursive", + "inmalayalam", + "patternwhitespace", + "sk", + "insmallkanaextension", + "inmandaic", "lt", + "so", + "inlinearbideograms", + "incommonindicnumberforms", "incjkcompatibilityideographssupplement", - "inmandaic", - "insylotinagri", "idc", - "sk", - "alnum", - "sora", - "bamum", "inoldsoutharabian", - "patws", - "inmusicalsymbols", + "insylotinagri", "idsbinaryoperator", - "indominotiles", - "bass", - "innewtailue", - "ital", - "inmiscellaneoussymbols", + "sora", + "bamum", + "inkanasupplement", + "incjkstrokes", + "joinc", "inopticalcharacterrecognition", + "vs", + "indominotiles", + "batk", "grext", - "inkanasupplement", - "inmiscellaneoussymbolsandarrows", - "inmiscellaneoussymbolsandpictographs", - "unknown", + "batak", + "patws", "inmodifiertoneletters", + "ital", + "bass", + "decimalnumber", + "alnum", "ids", - "zl", + "print", "inlatinextendeda", - "ll", + "intaitham", + "inmusicalsymbols", "intaile", - "incontrolpictures", - "s", - "batk", "samr", - "lisu", - "print", "samaritan", + "s", "inlatinextendede", - "intaitham", - "pauc", - "batak", - "sm", "bali", + "lisu", + "pauc", + "patternsyntax", + "incontrolpictures", + "blank", + "inmiscellaneoussymbols", + "ll", "inancientgreekmusicalnotation", - "uideo", - "intaixuanjingsymbols", - "oriya", - "incyrillicextendeda", - "bengali", + "zl", + "inlydian", + "sm", + "inmiscellaneoussymbolsandarrows", "inugaritic", + "bengali", + "pd", + "inmiscellaneoussymbolsandpictographs", + "medf", + "cf", "balinese", - "sc", + "medefaidrin", + "han", "intamil", - "inlydian", + "hani", "inmultani", - "gong", - "blank", - "ingrantha", - "mong", - "inearlydynasticcuneiform", + "hano", + "inshorthandformatcontrols", "insaurashtra", - "georgian", - "zinh", - "inosage", - "ingeneralpunctuation", - "incaucasianalbanian", - "pd", - "canadianaboriginal", - "glagolitic", - "inspacingmodifierletters", - "idcontinue", + "pf", "inoldturkic", - "plrd", - "joincontrol", + "idcontinue", + "hanunoo", + "sc", + "inkhojki", "idst", - "inhanifirohingya", - "osage", - "incyrillicextendedc", - "ingeorgian", - "unassigned", - "lowercaseletter", - "emoji", + "canadianaboriginal", + "hira", + "plrd", + "incaucasianalbanian", "indeseret", + "inearlydynasticcuneiform", + "inspacingmodifierletters", + "innewa", + "idstart", + "zinh", + "incyrillicextendeda", + "dsrt", + "cased", + "glagolitic", + "inhanifirohingya", "inancientgreeknumbers", - "inmongolian", - "cher", - "cherokee", + "inmeeteimayekextensions", + "intaixuanjingsymbols", + "joincontrol", + "runr", + "inwarangciti", + "deseret", "inhiragana", + "sind", + "cherokee", + "inlatinextendedc", + "adlm", "phoenician", + "cher", "marchen", - "xsux", + "inkhudawadi", + "sinhala", + "lower", + "graphemelink", + "xidstart", + "ingrantha", + "bidic", + "xdigit", + "casedletter", + "gong", + "multani", + "gunjalagondi", "cham", "chakma", - "inmeeteimayekextensions", - "inlatinextendedc", + "mong", "kaithi", - "graphemebase", - "idstart", - "osma", - "adlm", "inmahajani", - "cased", - "runr", - "sinhala", - "manichaean", + "graphemebase", + "insiddham", "inogham", - "graphemelink", - "ingurmukhi", - "cwt", + "inosage", + "incountingrodnumerals", + "inwancho", "khojki", - "khar", - "multani", - "gunjalagondi", - "casedletter", - "inethiopic", + "ingeneralpunctuation", + "georgian", + "incyrillicextendedc", + "inkayahli", + "khar", + "inoriya", + "manichaean", + "bamu", + "zanb", + "oriya", "inolchiki", - "variationselector", - "sind", - "incountingrodnumerals", - "logicalorderexception", - "insinhala", - "bidic", - "dia", - "insorasompeng", - "anatolianhieroglyphs", - "inlowsurrogates", - "di", - "ahom", - "inenclosedalphanumerics", + "linb", + "inethiopic", + "wara", + "ingeorgian", + "innabataean", + "inkanbun", "adlam", - "inkhudawadi", + "inbhaiksuki", + "insinhala", + "inelbasan", + "lowercase", + "takri", + "inmongolian", + "invai", + "xsux", "cntrl", - "xidstart", - "xdigit", - "phnx", - "emojimodifier", - "khmr", - "insiddham", - "cwl", - "bamu", - "ingreekandcoptic", - "inmiscellaneoustechnical", + "emoji", "sterm", - "inscriptionalpahlavi", + "cuneiform", + "cwcm", + "hatran", + "linearb", + "taile", "inlatinextendedadditional", - "kharoshthi", - "runic", - "odi", - "ahex", - "khmer", + "inenclosedalphanumerics", + "anatolianhieroglyphs", "incyrillicsupplement", + "intamilsupplement", + "inmiscellaneoustechnical", + "ahom", "incherokeesupplement", - "inmeroitichieroglyphs", - "enclosingmark", - "glag", - "inkangxiradicals", - "math", + "takr", + "khmr", + "incjkunifiedideographsextensiona", "quotationmark", - "goth", - "emojimodifierbase", - "ugar", + "lyci", + "lycian", + "ingurmukhi", + "runic", + "limb", + "inscriptionalpahlavi", + "hatr", + "variationselector", + "modifierletter", + "incjkunifiedideographsextensione", + "mymr", + "myanmar", "lu", + "kharoshthi", + "inarabic", "radical", - "incjkunifiedideographsextensiona", - "beng", - "braille", - "n", + "khmer", + "inunifiedcanadianaboriginalsyllabics", + "osage", "sundanese", - "olck", - "incjkunifiedideographsextensione", - "diacritic", + "innewtailue", + "logicalorderexception", + "math", + "braille", + "goth", + "insorasompeng", + "insoyombo", + "arab", + "saur", + "guru", + "term", + "paucinhau", + "inbasiclatin", + "inarabicpresentationformsa", + "punct", + "gurmukhi", "grantha", + "inshavian", + "osma", "inenclosedalphanumericsupplement", - "olchiki", - "oidc", - "olower", - "regionalindicator", - "no", "intirhuta", + "inelymaic", "inhatran", - "saur", + "incjkunifiedideographsextensionc", + "emojimodifier", + "uideo", + "bidicontrol", + "phnx", + "limbu", + "n", + "inenclosedideographicsupplement", + "mult", "kthi", - "ingeometricshapes", - "guru", - "ingreekextended", - "paucinhau", + "incjkunifiedideographs", + "ingreekandcoptic", + "inoldhungarian", + "incjkcompatibility", + "grbase", + "nandinagari", + "brah", + "no", + "sd", + "nko", + "nkoo", "xpeo", + "sidd", + "inherited", "p", "phli", - "nko", - "nkoo", - "oids", - "indogra", + "inmeroitichieroglyphs", "inphoenician", - "punct", - "limbu", - "gurmukhi", - "mult", - "brah", - "taile", - "inoldhungarian", - "takri", - "bidicontrol", - "invai", - "incjkunifiedideographsextensionc", - "inenclosedideographicsupplement", - "decimalnumber", - "lepc", - "inherited", - "incjkunifiedideographs", - "graphemeextend", + "inmayannumerals", "saurashtra", - "caseignorable", - "emojicomponent", - "takr", + "inkangxiradicals", + "enclosingmark", + "graphemeextend", + "beng", + "inbatak", + "glag", + "ahex", + "patsyn", + "odi", + "dogra", + "intibetan", + "lydi", + "lydian", + "inblockelements", + "cwcf", + "inunifiedcanadianaboriginalsyllabicsextended", + "regionalindicator", + "ingreekextended", + "emojimodifierbase", "inanatolianhieroglyphs", - "inornamentaldingbats", - "inphaistosdisc", - "insogdian", - "indingbats", - "sd", - "zanb", - "insinhalaarchaicnumbers", - "ideographic", - "sidd", - "linb", - "sogdian", + "indogra", + "taiviet", + "inyiradicals", + "unassigned", + "insundanesesupplement", + "innumberforms", + "lowercaseletter", + "dogr", + "lepc", "bhks", - "sogo", + "word", + "gujr", + "inphaistosdisc", "bhaiksuki", - "term", - "insundanesesupplement", - "intags", - "innabataean", + "dash", + "inarabicextendeda", + "gujarati", + "inlatinextendedd", + "innoblock", + "java", + "ingeometricshapes", + "cyrl", + "indevanagari", + "inbalinese", + "inbyzantinemusicalsymbols", + "tale", + "deva", + "hex", + "inmyanmarextendedb", "sinh", + "cwt", "shavian", - "inbhaiksuki", - "inelbasan", - "inimperialaramaic", - "inshavian", - "intangut", - "inshorthandformatcontrols", - "inkanbun", + "devanagari", + "oidc", + "javanese", + "mlym", + "incjkunifiedideographsextensiond", "sentenceterminal", - "medf", - "coptic", - "linearb", - "medefaidrin", - "inethiopicextendeda", + "malayalam", "inhanunoo", - "han", - "cwcf", - "hani", - "limb", - "hano", - "ingeometricshapesextended", - "hanunoo", - "inlatinextendedd", - "inarabic", - "cwu", - "asciihexdigit", - "ininscriptionalparthian", - "format", - "ininscriptionalpahlavi", - "hira", - "dsrt", - "copt", - "ugaritic", - "newa", - "arab", - "inkhojki", - "oldpersian", + "insinhalaarchaicnumbers", + "olck", + "inimperialaramaic", + "olower", + "palmyrene", + "avestan", + "incjkunifiedideographsextensionf", + "insogdian", + "indingbats", + "olchiki", + "oids", "punctuation", - "deseret", - "newtailue", - "newline", - "ext", "sund", - "ogam", - "inbasiclatin", - "inarabicpresentationformsa", + "inbraillepatterns", + "emojicomponent", + "ideographic", + "taml", + "format", + "inornamentaldingbats", + "coptic", + "caseignorable", + "idsb", + "inmiscellaneousmathematicalsymbolsb", + "sogdian", + "sogo", + "terminalpunctuation", + "intangut", + "intifinagh", + "inlowsurrogates", + "invariationselectors", + "copt", + "soyo", + "intags", + "inverticalforms", + "ininscriptionalparthian", + "ininscriptionalpahlavi", + "meroitichieroglyphs", + "asciihexdigit", + "inethiopicextendeda", + "invedicextensions", + "nand", + "cwl", "cprt", - "imperialaramaic", - "incjkunifiedideographsextensiond", - "assigned", - "taiviet", "innushu", - "inoriya", - "wara", - "java", - "sorasompeng", - "inkayahli", - "orkh", - "closepunctuation", - "grbase", - "tale", + "zanabazarsquare", + "ingeometricshapesextended", + "avst", + "imperialaramaic", "bopo", - "javanese", - "osge", - "oldpermic", + "sarb", "inoldpersian", - "phag", - "alpha", - "lyci", - "lycian", + "intaiviet", + "mahj", "inkatakanaphoneticextensions", - "incjksymbolsandpunctuation", - "inhanguljamo", - "inhanguljamoextendeda", - "avestan", - "inpalmyrene", - "inlepcha", - "indevanagari", - "taml", - "sgnw", - "inblockelements", + "mahajani", + "closepunctuation", "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", + "softdotted", + "unknown", "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", + "syrc", "hang", - "nchar", - "oldsogdian", - "deva", + "incjksymbolsandpunctuation", "ingujarati", - "otherlowercase", + "bopomofo", + "alpha", + "khoj", + "inpalmyrene", "ingunjalagondi", - "devanagari", - "syrc", - "mahj", - "hiragana", - "orya", - "mahajani", + "inoldpermic", + "inlepcha", + "assigned", "incurrencysymbols", - "spaceseparator", - "otherletter", + "insmallformvariants", + "sorasompeng", "inlinearbsyllabary", + "oldpersian", + "caucasianalbanian", + "inenclosedcjklettersandmonths", + "hiragana", + "inbamum", "inrejang", + "graph", + "sharada", + "inethiopicsupplement", + "indevanagariextended", + "incoptic", + "insyriacsupplement", + "inmeroiticcursive", "hmng", - "ogrext", - "inaegeannumbers", - "changeswhentitlecased", - "zp", + "intelugu", + "incombiningdiacriticalmarks", "mathsymbol", - "khoj", - "incombiningdiacriticalmarkssupplement", - "warangciti", + "titlecaseletter", + "ugar", + "incombiningdiacriticalmarksforsymbols", + "spacingmark", + "shrd", + "injavanese", "syriac", - "finalpunctuation", - "othersymbol", - "currencysymbol", + "space", + "hebr", + "ext", + "inhanguljamo", + "phag", + "inhanguljamoextendeda", + "wancho", + "bugi", + "tamil", + "sogd", + "orkh", + "oldpermic", + "siddham", + "incyrillicextendedb", + "inbrahmi", + "inmongoliansupplement", + "thaa", + "thaana", + "thai", + "buginese", + "ingeorgiansupplement", "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", + "inphoneticextensions", + "separator", + "inethiopicextended", + "inmathematicalalphanumericsymbols", + "insymbolsandpictographsextendeda", + "nd", + "tirh", + "tirhuta", + "incombiningdiacriticalmarkssupplement", + "extender", + "wcho", + "inbengali", + "talu", + "tang", + "warangciti", + "tagbanwa", + "orya", + "nl", + "induployan", + "cwu", + "inbuginese", + "telu", + "ogam", + "taitham", "rjng", + "insuttonsignwriting", + "incombiningdiacriticalmarksextended", + "number", + "inyijinghexagramsymbols", "whitespace", + "currencysymbol", + "inottomansiyaqnumbers", + "inlimbu", + "incopticepactnumbers", + "ingeorgianextended", + "inphoneticextensionssupplement", + "any", + "osge", + "defaultignorablecodepoint", + "hangul", + "newa", + "ethi", + "hanifirohingya", + "hmnp", + "olditalic", "incjkunifiedideographsextensionb", - "inletterlikesymbols", - "buhid", - "oupper", - "bassavah", - "inhebrew", - "narb", - "inbuhid", - "inbopomofo", - "elbasan", - "incombininghalfmarks", - "inindicsiyaqnumbers", - "changeswhenuppercased", - "inmathematicaloperators", - "inarabicmathematicalalphabeticsymbols", - "hluw", - "hexdigit", + "rohg", + "innyiakengpuachuehmong", + "incjkradicalssupplement", + "newtailue", + "newline", + "lepcha", "deprecated", - "insuperscriptsandsubscripts", - "nshu", - "injavanese", - "inbamumsupplement", - "hangul", - "unifiedideograph", - "tavt", - "othermath", - "pahawhhmong", + "buhd", + "inglagolitic", + "inaegeannumbers", + "modifiersymbol", + "surrogate", + "inletterlikesymbols", + "idstrinaryoperator", + "intagalog", + "tangut", + "osmanya", + "oalpha", + "inphagspa", + "ugaritic", + "otheridcontinue", + "inarabicpresentationformsb", + "inbassavah", + "other", + "othernumber", "sylotinagri", + "ingothic", + "inbuhid", + "inlatin1supplement", + "intagbanwa", + "shaw", + "oldhungarian", + "inmahjongtiles", "hung", + "tifinagh", + "inbopomofo", + "narb", + "inyisyllables", "kayahli", - "inpahawhhmong", - "upper", - "inalchemicalsymbols", - "nbat", - "nabataean", - "uppercase", - "hebr", - "inmahjongtiles", - "oldnortharabian", - "inarabicsupplement", + "otheralphabetic", + "phagspa", + "inprivateusearea", + "elba", + "nchar", + "spaceseparator", "tibt", + "extendedpictographic", "tibetan", - "inhighprivateusesurrogates", - "insupplementalarrowsa", - "inarabicpresentationformsb", - "otherdefaultignorablecodepoint", + "sgnw", + "hexdigit", + "tfng", + "inbamumsupplement", + "tavt", + "incombininghalfmarks", + "inarabicmathematicalalphabeticsymbols", + "khudawadi", + "inhalfwidthandfullwidthforms", + "inhangulsyllables", + "elym", "symbol", + "bassavah", + "elymaic", + "changeswhencasemapped", + "oldturkic", "inplayingcards", - "inhalfwidthandfullwidthforms", + "zp", + "elbasan", + "buhid", + "noncharactercodepoint", + "finalpunctuation", + "inpsalterpahlavi", + "inpaucinhau", + "nonspacingmark", + "changeswhentitlecased", + "inindicsiyaqnumbers", + "phlp", "wspace", - "tfng", - "insupplementalmathematicaloperators", - "insupplementalarrowsc", - "inhanguljamoextendedb", - "aghb", + "nbat", + "hluw", "cypriot", - "nushu", - "tifinagh", - "otherpunctuation", - "alphabetic", + "nabataean", + "inalchemicalsymbols", "dupl", - "tglg", - "changeswhencasefolded", - "tagalog", - "modifiersymbol", - "any", - "inglagoliticsupplement", - "ethiopic", - "uppercaseletter", + "otherlowercase", + "inarabicsupplement", + "inalphabeticpresentationforms", + "otherletter", + "emojipresentation", + "changeswhenlowercased", "dashpunctuation", - "hanifirohingya", - "inyijinghexagramsymbols", + "oldsogdian", + "intangutcomponents", + "soyombo", + "paragraphseparator", + "changeswhencasefolded", + "othersymbol", + "inlatinextendedb", + "otheruppercase", + "otheridstart", + "inhebrew", + "oldnortharabian", + "omath", "incypriotsyllabary", + "inmathematicaloperators", + "changeswhenuppercased", + "nshu", + "insuperscriptsandsubscripts", + "ogrext", + "inhanguljamoextendedb", + "alphabetic", + "dep", + "oupper", + "zyyy", + "aghb", + "ogham", "rejang", - "defaultignorablecodepoint", "tagb", - "dep", - "inyisyllables", + "hyphen", + "insupplementalarrowsa", + "inpahawhhmong", + "nushu", + "othermath", + "insupplementalarrowsc", + "insupplementalmathematicaloperators", + "otherdefaultignorablecodepoint", + "inhighprivateusesurrogates", + "duployan", "oldsoutharabian", - "inlatinextendedb", - "insupplementalpunctuation", - "othergraphemeextend", + "tglg", + "tagalog", + "inbopomofoextended", + "signwriting", + "inegyptianhieroglyphs", + "inegyptianhieroglyphformatcontrols", + "upper", + "otherpunctuation", + "ethiopic", "hebrew", + "telugu", + "uppercase", + "insupplementalpunctuation", + "unifiedideograph", + "pahawhhmong", + "inglagoliticsupplement", "inboxdrawing", + "uppercaseletter", + "othergraphemeextend", "inhighsurrogates", - "telugu", - "inbopomofoextended", - "soyombo", - "inegyptianhieroglyphs", - "openpunctuation", - "insupplementaryprivateuseareaa", - "hyphen", + "insupplementalarrowsb", "inhangulcompatibilityjamo", "egyp", - "insupplementalarrowsb", - "duployan", "insupplementalsymbolsandpictographs", - "zyyy", + "nyiakengpuachuehmong", + "insupplementaryprivateuseareaa", + "openpunctuation", "egyptianhieroglyphs", "insupplementaryprivateuseareab" }; @@ -26639,2216 +27028,2305 @@ unicode_lookup_property_name (register const char *str, register size_t len) {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(10), 235}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(10), 238}, + {-1}, {-1}, {-1}, - {pool_offset(17), 124}, + {pool_offset(14), 262}, + {-1}, - {pool_offset(18), 257}, - {-1}, {-1}, {-1}, + {pool_offset(16), 261}, + + {pool_offset(17), 125}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(22), 53}, + {pool_offset(24), 154}, + + {pool_offset(25), 261}, {-1}, - {pool_offset(24), 258}, + {pool_offset(27), 53}, - {pool_offset(25), 153}, + {pool_offset(28), 139}, {-1}, - {pool_offset(27), 257}, + {pool_offset(30), 142}, {-1}, {-1}, - {pool_offset(30), 40}, + {pool_offset(33), 252}, - {pool_offset(31), 141}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(34), 295}, + + {pool_offset(35), 40}, + {-1}, - {pool_offset(39), 129}, + {pool_offset(37), 130}, - {pool_offset(40), 120}, + {pool_offset(38), 121}, - {pool_offset(41), 120}, + {pool_offset(39), 121}, {-1}, {-1}, {-1}, - {pool_offset(45), 152}, + {pool_offset(43), 153}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(46), 138}, + {pool_offset(51), 283}, + {-1}, - {pool_offset(47), 146}, + {pool_offset(53), 54}, {-1}, {-1}, - {pool_offset(50), 54}, + {pool_offset(56), 147}, + {-1}, {-1}, {-1}, - {pool_offset(51), 130}, + {pool_offset(60), 131}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(68), 291}, + {pool_offset(70), 83}, {-1}, - {pool_offset(70), 279}, - - {pool_offset(71), 249}, - {-1}, - - {pool_offset(73), 82}, - {-1}, - - {pool_offset(75), 202}, + {pool_offset(72), 205}, {-1}, {-1}, {-1}, - {pool_offset(79), 124}, - {-1}, {-1}, {-1}, {-1}, + {pool_offset(76), 125}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(84), 39}, + {pool_offset(84), 137}, + {-1}, - {pool_offset(85), 39}, - {-1}, {-1}, {-1}, + {pool_offset(86), 39}, - {pool_offset(89), 198}, - {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(87), 39}, + {-1}, {-1}, - {pool_offset(95), 203}, + {pool_offset(90), 206}, - {pool_offset(96), 112}, + {pool_offset(91), 150}, {-1}, {-1}, - {pool_offset(99), 149}, + {pool_offset(94), 87}, {-1}, - {pool_offset(101), 79}, - - {pool_offset(102), 148}, + {pool_offset(96), 201}, {-1}, {-1}, - {pool_offset(105), 136}, + {pool_offset(99), 149}, {-1}, - {pool_offset(107), 136}, - {-1}, - - {pool_offset(109), 86}, - {-1}, + {pool_offset(101), 460}, - {pool_offset(111), 151}, - {-1}, + {pool_offset(102), 80}, - {pool_offset(113), 156}, + {pool_offset(103), 87}, + {-1}, {-1}, {-1}, - {pool_offset(114), 156}, - {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(107), 157}, - {pool_offset(120), 143}, + {pool_offset(108), 157}, {-1}, - {pool_offset(122), 37}, + {pool_offset(110), 113}, + + {pool_offset(111), 152}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(120), 137}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, - {pool_offset(132), 45}, - {-1}, {-1}, + {pool_offset(133), 144}, - {pool_offset(135), 86}, - {-1}, {-1}, + {pool_offset(134), 45}, + {-1}, {-1}, {-1}, {-1}, - {pool_offset(138), 456}, + {pool_offset(139), 446}, {-1}, {-1}, - {pool_offset(141), 140}, - {-1}, + {pool_offset(142), 463}, + {-1}, {-1}, {-1}, - {pool_offset(143), 442}, + {pool_offset(146), 277}, + {-1}, {-1}, {-1}, {-1}, - {pool_offset(144), 273}, + {pool_offset(151), 512}, - {pool_offset(145), 459}, + {pool_offset(152), 516}, {-1}, {-1}, {-1}, - {pool_offset(149), 55}, + {pool_offset(156), 37}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(156), 504}, + {pool_offset(163), 478}, + {-1}, {-1}, - {pool_offset(157), 508}, + {pool_offset(166), 55}, {-1}, {-1}, - {pool_offset(160), 105}, + {pool_offset(169), 141}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, + + {pool_offset(182), 301}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(187), 503}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(192), 106}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(168), 473}, - {-1}, + {pool_offset(200), 517}, + {-1}, {-1}, {-1}, - {pool_offset(170), 38}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, + {pool_offset(204), 314}, + {-1}, {-1}, - {pool_offset(181), 196}, + {pool_offset(207), 38}, {-1}, - {pool_offset(183), 128}, - {-1}, {-1}, {-1}, + {pool_offset(209), 207}, + {-1}, - {pool_offset(187), 142}, + {pool_offset(211), 129}, - {pool_offset(188), 297}, + {pool_offset(212), 143}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(189), 251}, + {pool_offset(219), 199}, - {pool_offset(190), 251}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(220), 309}, - {pool_offset(199), 509}, + {pool_offset(221), 437}, {-1}, - {pool_offset(201), 150}, + {pool_offset(223), 464}, {-1}, - {pool_offset(203), 460}, + {pool_offset(225), 137}, - {pool_offset(204), 499}, - {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(226), 506}, + {-1}, {-1}, {-1}, {-1}, - {pool_offset(210), 497}, + {pool_offset(231), 151}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(211), 305}, + {pool_offset(238), 177}, - {pool_offset(212), 433}, - {-1}, {-1}, {-1}, {-1}, + {pool_offset(239), 492}, - {pool_offset(217), 204}, + {pool_offset(240), 271}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(219), 119}, + {pool_offset(251), 306}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(220), 267}, + {pool_offset(257), 480}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(222), 310}, - {-1}, {-1}, + {pool_offset(268), 139}, + {-1}, {-1}, {-1}, - {pool_offset(225), 174}, - {-1}, + {pool_offset(272), 344}, + {-1}, {-1}, {-1}, {-1}, - {pool_offset(227), 136}, + {pool_offset(277), 120}, {-1}, - {pool_offset(229), 487}, + {pool_offset(279), 144}, + {-1}, {-1}, {-1}, - {pool_offset(230), 43}, - {-1}, + {pool_offset(283), 505}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(290), 146}, + {-1}, {-1}, - {pool_offset(232), 302}, + {pool_offset(293), 43}, + {-1}, - {pool_offset(233), 145}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(295), 496}, {-1}, {-1}, - {pool_offset(245), 475}, - {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(298), 264}, + {-1}, {-1}, {-1}, - {pool_offset(251), 143}, + {pool_offset(302), 22}, + {-1}, {-1}, - {pool_offset(252), 498}, - {-1}, {-1}, {-1}, {-1}, + {pool_offset(305), 210}, - {pool_offset(257), 138}, + {pool_offset(306), 105}, {-1}, {-1}, - {pool_offset(260), 56}, + {pool_offset(309), 284}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(261), 340}, + {pool_offset(316), 22}, + {-1}, - {pool_offset(262), 22}, - {-1}, {-1}, + {pool_offset(318), 500}, - {pool_offset(265), 260}, + {pool_offset(319), 501}, + {-1}, - {pool_offset(266), 104}, + {pool_offset(321), 56}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(275), 196}, + {pool_offset(330), 199}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(335), 108}, - {pool_offset(276), 22}, + {pool_offset(336), 122}, {-1}, {-1}, {-1}, - {pool_offset(280), 280}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - - {pool_offset(290), 495}, + {pool_offset(340), 122}, {-1}, - {pool_offset(292), 490}, + {pool_offset(342), 212}, + {-1}, {-1}, - {pool_offset(293), 207}, - {-1}, + {pool_offset(345), 282}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(295), 494}, - {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(352), 320}, + {-1}, {-1}, - {pool_offset(301), 262}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, + {pool_offset(355), 375}, - {pool_offset(314), 57}, - {-1}, {-1}, {-1}, + {pool_offset(356), 275}, + + {pool_offset(357), 298}, + {-1}, - {pool_offset(318), 271}, + {pool_offset(359), 405}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(319), 401}, - {-1}, {-1}, {-1}, + {pool_offset(367), 476}, + {-1}, - {pool_offset(323), 121}, + {pool_offset(369), 266}, {-1}, {-1}, - {pool_offset(326), 107}, + {pool_offset(372), 149}, + {-1}, {-1}, - {pool_offset(327), 121}, - {-1}, + {pool_offset(375), 254}, + + {pool_offset(376), 254}, + {-1}, {-1}, - {pool_offset(329), 209}, + {pool_offset(379), 205}, + {-1}, {-1}, {-1}, + + {pool_offset(383), 57}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(336), 316}, + {pool_offset(399), 280}, + {-1}, + + {pool_offset(401), 207}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(415), 491}, {-1}, - {pool_offset(347), 204}, + {pool_offset(417), 141}, {-1}, - {pool_offset(349), 278}, - {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(419), 119}, - {pool_offset(355), 148}, - {-1}, {-1}, + {pool_offset(420), 208}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(358), 276}, + {pool_offset(427), 66}, + {-1}, {-1}, {-1}, - {pool_offset(359), 205}, + {pool_offset(431), 521}, {-1}, - {pool_offset(361), 294}, - {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(433), 62}, + {-1}, {-1}, - {pool_offset(367), 118}, - {-1}, {-1}, {-1}, + {pool_offset(436), 150}, - {pool_offset(371), 481}, - {-1}, {-1}, {-1}, {-1}, + {pool_offset(437), 155}, + {-1}, {-1}, {-1}, - {pool_offset(376), 371}, - {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(441), 104}, + {-1}, {-1}, {-1}, - {pool_offset(382), 14}, + {pool_offset(445), 113}, + {-1}, {-1}, {-1}, - {pool_offset(383), 202}, - {-1}, {-1}, {-1}, {-1}, + {pool_offset(449), 108}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(388), 471}, - {-1}, {-1}, {-1}, {-1}, + {pool_offset(456), 372}, - {pool_offset(393), 21}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, + {pool_offset(457), 450}, - {pool_offset(405), 368}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(458), 259}, {-1}, {-1}, - {pool_offset(417), 446}, - {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(461), 34}, + {-1}, - {pool_offset(423), 140}, - {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(463), 299}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(429), 155}, + {pool_offset(472), 14}, + {-1}, - {pool_offset(430), 295}, - {-1}, {-1}, {-1}, {-1}, + {pool_offset(474), 54}, + {-1}, {-1}, - {pool_offset(435), 112}, - {-1}, + {pool_offset(477), 21}, - {pool_offset(437), 149}, + {pool_offset(478), 156}, {-1}, - {pool_offset(439), 486}, - {-1}, + {pool_offset(480), 406}, - {pool_offset(441), 467}, + {pool_offset(481), 471}, + {-1}, {-1}, {-1}, - {pool_offset(442), 107}, + {pool_offset(485), 119}, {-1}, - {pool_offset(444), 154}, + {pool_offset(487), 495}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(447), 489}, - {-1}, {-1}, {-1}, {-1}, {-1}, - - {pool_offset(453), 421}, - {-1}, {-1}, {-1}, + {pool_offset(499), 412}, - {pool_offset(457), 425}, + {pool_offset(500), 462}, + {-1}, {-1}, - {pool_offset(458), 415}, + {pool_offset(503), 86}, - {pool_offset(459), 103}, + {pool_offset(504), 112}, {-1}, {-1}, - {pool_offset(462), 54}, - - {pool_offset(463), 113}, + {pool_offset(507), 112}, {-1}, - {pool_offset(465), 402}, - {-1}, {-1}, + {pool_offset(509), 425}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(514), 419}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, - {pool_offset(468), 118}, + {pool_offset(528), 489}, + + {pool_offset(529), 114}, + {-1}, {-1}, - {pool_offset(469), 34}, + {pool_offset(532), 43}, + {-1}, {-1}, {-1}, - {pool_offset(470), 513}, + {pool_offset(536), 538}, {-1}, - {pool_offset(472), 252}, + {pool_offset(538), 429}, + {-1}, - {pool_offset(473), 255}, - {-1}, {-1}, {-1}, + {pool_offset(540), 537}, + {-1}, {-1}, {-1}, {-1}, - {pool_offset(477), 6}, + {pool_offset(545), 550}, + {-1}, - {pool_offset(478), 543}, + {pool_offset(547), 167}, {-1}, - {pool_offset(480), 43}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(549), 259}, - {pool_offset(487), 527}, + {pool_offset(550), 515}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(488), 85}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(558), 555}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(495), 111}, + {pool_offset(564), 548}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(496), 408}, + {pool_offset(573), 33}, {-1}, - {pool_offset(498), 111}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, + {pool_offset(575), 439}, + {-1}, {-1}, - {pool_offset(511), 351}, - {-1}, {-1}, {-1}, + {pool_offset(578), 195}, + {-1}, - {pool_offset(515), 192}, + {pool_offset(580), 436}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(516), 432}, + {pool_offset(588), 355}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(517), 538}, + {pool_offset(594), 260}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(526), 458}, - {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(603), 209}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(532), 536}, + {pool_offset(619), 325}, - {pool_offset(533), 165}, + {pool_offset(620), 472}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(536), 484}, - {-1}, {-1}, + {pool_offset(632), 66}, + {-1}, - {pool_offset(539), 255}, - {-1}, {-1}, {-1}, + {pool_offset(634), 82}, - {pool_offset(543), 131}, - {-1}, + {pool_offset(635), 434}, + {-1}, {-1}, {-1}, - {pool_offset(545), 430}, - {-1}, {-1}, + {pool_offset(639), 151}, + {-1}, {-1}, {-1}, - {pool_offset(548), 48}, + {pool_offset(643), 296}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(553), 507}, + {pool_offset(648), 197}, + + {pool_offset(649), 225}, {-1}, {-1}, - {pool_offset(556), 206}, + {pool_offset(652), 522}, + {-1}, {-1}, {-1}, + + {pool_offset(656), 285}, + + {pool_offset(657), 133}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(564), 81}, + {pool_offset(665), 227}, - {pool_offset(565), 526}, + {pool_offset(666), 431}, {-1}, - {pool_offset(567), 33}, - {-1}, + {pool_offset(668), 396}, - {pool_offset(569), 435}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, + {pool_offset(669), 562}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(580), 292}, + {pool_offset(677), 102}, - {pool_offset(581), 256}, + {pool_offset(678), 461}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, - {pool_offset(582), 392}, - {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(699), 395}, + {-1}, - {pool_offset(588), 150}, + {pool_offset(701), 100}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(589), 427}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(707), 230}, - {pool_offset(597), 194}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(708), 26}, - {pool_offset(604), 321}, - {-1}, + {pool_offset(709), 520}, - {pool_offset(606), 109}, + {pool_offset(710), 380}, {-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(715), 110}, + {-1}, {-1}, - {pool_offset(626), 224}, + {pool_offset(718), 348}, {-1}, {-1}, {-1}, - {pool_offset(630), 193}, - - {pool_offset(631), 132}, - - {pool_offset(632), 549}, - {-1}, {-1}, + {pool_offset(722), 255}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(635), 281}, + {pool_offset(728), 543}, + {-1}, {-1}, {-1}, - {pool_offset(636), 391}, - {-1}, {-1}, {-1}, {-1}, + {pool_offset(732), 28}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(641), 101}, + {pool_offset(739), 85}, + {-1}, - {pool_offset(642), 222}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, + {pool_offset(741), 28}, + {-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(749), 197}, + {-1}, {-1}, - {pool_offset(670), 227}, + {pool_offset(752), 393}, - {pool_offset(671), 26}, + {pool_offset(753), 175}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(672), 457}, + {pool_offset(760), 27}, {-1}, {-1}, - {pool_offset(675), 194}, + {pool_offset(763), 163}, + {-1}, - {pool_offset(676), 518}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, + {pool_offset(765), 13}, + {-1}, - {pool_offset(690), 99}, + {pool_offset(767), 103}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(699), 531}, + {pool_offset(776), 7}, {-1}, - {pool_offset(701), 27}, - {-1}, + {pool_offset(778), 269}, + {-1}, {-1}, {-1}, - {pool_offset(703), 315}, - {-1}, + {pool_offset(782), 322}, - {pool_offset(705), 172}, + {pool_offset(783), 527}, {-1}, - {pool_offset(707), 349}, + {pool_offset(785), 318}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(794), 216}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(809), 216}, + {-1}, {-1}, {-1}, + + {pool_offset(813), 215}, {-1}, {-1}, - {pool_offset(710), 344}, + {pool_offset(816), 410}, + {-1}, {-1}, {-1}, + + {pool_offset(820), 25}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(826), 127}, + + {pool_offset(827), 198}, + + {pool_offset(828), 196}, - {pool_offset(711), 84}, + {pool_offset(829), 347}, - {pool_offset(712), 512}, + {pool_offset(830), 2}, {-1}, {-1}, {-1}, - {pool_offset(716), 357}, - {-1}, {-1}, {-1}, {-1}, + {pool_offset(834), 353}, - {pool_offset(721), 535}, - {-1}, + {pool_offset(835), 128}, - {pool_offset(723), 249}, + {pool_offset(836), 528}, - {pool_offset(724), 389}, + {pool_offset(837), 264}, - {pool_offset(725), 102}, + {pool_offset(838), 457}, + + {pool_offset(839), 226}, {-1}, {-1}, {-1}, - {pool_offset(729), 260}, + {pool_offset(843), 361}, - {pool_offset(730), 265}, + {pool_offset(844), 442}, - {pool_offset(731), 127}, + {pool_offset(845), 29}, - {pool_offset(732), 314}, - {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(846), 200}, + {-1}, - {pool_offset(738), 343}, + {pool_offset(848), 547}, {-1}, - {pool_offset(740), 212}, + {pool_offset(850), 148}, + {-1}, {-1}, {-1}, {-1}, - {pool_offset(741), 28}, + {pool_offset(855), 44}, + {-1}, {-1}, - {pool_offset(742), 213}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(858), 25}, {-1}, - {pool_offset(753), 126}, - {-1}, {-1}, + {pool_offset(860), 148}, + {-1}, {-1}, {-1}, {-1}, - {pool_offset(756), 7}, + {pool_offset(865), 91}, + {-1}, {-1}, {-1}, - {pool_offset(757), 213}, + {pool_offset(869), 293}, - {pool_offset(758), 406}, + {pool_offset(870), 91}, - {pool_offset(759), 318}, + {pool_offset(871), 483}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(760), 195}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(879), 94}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(767), 28}, - {-1}, {-1}, + {pool_offset(887), 525}, + {-1}, {-1}, {-1}, - {pool_offset(770), 223}, - {-1}, {-1}, + {pool_offset(891), 398}, + + {pool_offset(892), 202}, + {-1}, + + {pool_offset(894), 468}, + {-1}, - {pool_offset(773), 25}, + {pool_offset(896), 102}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(778), 519}, + {pool_offset(901), 94}, + {-1}, {-1}, {-1}, + + {pool_offset(905), 218}, - {pool_offset(779), 248}, - {-1}, + {pool_offset(906), 482}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(781), 521}, + {pool_offset(913), 101}, + {-1}, - {pool_offset(782), 179}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(915), 38}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(791), 364}, + {pool_offset(923), 98}, {-1}, - {pool_offset(793), 29}, + {pool_offset(925), 153}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, - {pool_offset(794), 438}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(939), 449}, - {pool_offset(801), 25}, + {pool_offset(940), 444}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(806), 215}, + {pool_offset(945), 507}, - {pool_offset(807), 289}, + {pool_offset(946), 272}, + {-1}, {-1}, {-1}, - {pool_offset(808), 453}, + {pool_offset(950), 486}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, - {pool_offset(809), 478}, + {pool_offset(972), 103}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(814), 88}, + {pool_offset(977), 106}, + {-1}, {-1}, {-1}, + + {pool_offset(981), 368}, {-1}, {-1}, - {pool_offset(817), 2}, + {pool_offset(984), 64}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(993), 41}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(823), 480}, + {pool_offset(999), 81}, + {-1}, {-1}, - {pool_offset(824), 155}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(1002), 470}, + {-1}, {-1}, {-1}, - {pool_offset(833), 500}, - {-1}, {-1}, {-1}, {-1}, + {pool_offset(1006), 433}, + {-1}, - {pool_offset(838), 394}, + {pool_offset(1008), 408}, - {pool_offset(839), 79}, + {pool_offset(1009), 530}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(846), 105}, + {pool_offset(1016), 110}, + {-1}, {-1}, {-1}, + + {pool_offset(1020), 214}, {-1}, {-1}, - {pool_offset(849), 443}, - {-1}, {-1}, {-1}, {-1}, + {pool_offset(1023), 494}, + {-1}, - {pool_offset(854), 334}, + {pool_offset(1025), 64}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1035), 374}, + {-1}, {-1}, {-1}, + + {pool_offset(1039), 118}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1047), 52}, {-1}, {-1}, - {pool_offset(857), 445}, + {pool_offset(1050), 363}, {-1}, - {pool_offset(859), 197}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(1052), 16}, - {pool_offset(866), 38}, + {pool_offset(1053), 204}, + {-1}, {-1}, - {pool_offset(867), 80}, + {pool_offset(1056), 52}, {-1}, {-1}, - {pool_offset(870), 268}, + {pool_offset(1059), 143}, + {-1}, {-1}, - {pool_offset(871), 101}, - {-1}, {-1}, {-1}, + {pool_offset(1062), 484}, - {pool_offset(875), 464}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(1063), 224}, + {-1}, {-1}, - {pool_offset(884), 152}, + {pool_offset(1066), 6}, + {-1}, - {pool_offset(885), 109}, - {-1}, {-1}, {-1}, {-1}, + {pool_offset(1068), 86}, - {pool_offset(890), 100}, + {pool_offset(1069), 260}, {-1}, - {pool_offset(892), 466}, + {pool_offset(1071), 485}, - {pool_offset(893), 180}, - {-1}, {-1}, {-1}, {-1}, + {pool_offset(1072), 31}, + {-1}, - {pool_offset(898), 325}, + {pool_offset(1074), 11}, {-1}, - {pool_offset(900), 298}, + {pool_offset(1076), 120}, {-1}, - {pool_offset(902), 53}, - {-1}, {-1}, {-1}, {-1}, + {pool_offset(1078), 89}, - {pool_offset(907), 127}, + {pool_offset(1079), 158}, + {-1}, {-1}, - {pool_offset(908), 71}, - {-1}, {-1}, {-1}, + {pool_offset(1082), 89}, + {-1}, - {pool_offset(912), 440}, - {-1}, {-1}, {-1}, + {pool_offset(1084), 46}, + {-1}, - {pool_offset(916), 429}, + {pool_offset(1086), 45}, - {pool_offset(917), 311}, - {-1}, {-1}, {-1}, {-1}, + {pool_offset(1087), 156}, - {pool_offset(922), 52}, + {pool_offset(1088), 111}, - {pool_offset(923), 52}, - {-1}, {-1}, {-1}, {-1}, + {pool_offset(1089), 479}, - {pool_offset(928), 370}, + {pool_offset(1090), 84}, {-1}, - {pool_offset(930), 201}, + {pool_offset(1092), 488}, + {-1}, {-1}, - {pool_offset(931), 142}, + {pool_offset(1095), 308}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(937), 58}, + {pool_offset(1101), 447}, - {pool_offset(938), 46}, + {pool_offset(1102), 531}, {-1}, - {pool_offset(940), 45}, - {-1}, {-1}, + {pool_offset(1104), 536}, + + {pool_offset(1105), 117}, + {-1}, - {pool_offset(943), 404}, + {pool_offset(1107), 338}, - {pool_offset(944), 359}, + {pool_offset(1108), 80}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1117), 329}, + + {pool_offset(1118), 400}, {-1}, {-1}, - {pool_offset(947), 110}, - {-1}, {-1}, {-1}, + {pool_offset(1121), 115}, + {-1}, {-1}, - {pool_offset(951), 83}, + {pool_offset(1124), 292}, + {-1}, - {pool_offset(952), 102}, + {pool_offset(1126), 142}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(953), 181}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(1132), 26}, - {pool_offset(962), 16}, + {pool_offset(1133), 263}, {-1}, {-1}, - {pool_offset(965), 474}, + {pool_offset(1136), 182}, - {pool_offset(966), 41}, + {pool_offset(1137), 328}, + + {pool_offset(1138), 126}, {-1}, {-1}, - {pool_offset(969), 211}, + {pool_offset(1141), 304}, + {-1}, - {pool_offset(970), 221}, + {pool_offset(1143), 257}, - {pool_offset(971), 141}, + {pool_offset(1144), 302}, + {-1}, {-1}, {-1}, {-1}, - {pool_offset(972), 304}, + {pool_offset(1149), 454}, + {-1}, {-1}, {-1}, {-1}, - {pool_offset(973), 85}, - {-1}, {-1}, + {pool_offset(1154), 378}, + {-1}, - {pool_offset(976), 286}, + {pool_offset(1156), 16}, - {pool_offset(977), 50}, + {pool_offset(1157), 499}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(982), 116}, + {pool_offset(1162), 297}, - {pool_offset(983), 114}, - {-1}, {-1}, {-1}, + {pool_offset(1163), 448}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(987), 157}, - {-1}, + {pool_offset(1169), 132}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(989), 88}, - {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(1178), 240}, - {pool_offset(995), 119}, + {pool_offset(1179), 315}, {-1}, - {pool_offset(997), 300}, - {-1}, + {pool_offset(1181), 390}, - {pool_offset(999), 324}, + {pool_offset(1182), 58}, - {pool_offset(1000), 252}, + {pool_offset(1183), 3}, {-1}, {-1}, - {pool_offset(1003), 117}, + {pool_offset(1186), 72}, - {pool_offset(1004), 522}, - {-1}, {-1}, + {pool_offset(1187), 219}, + {-1}, - {pool_offset(1007), 130}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, + {pool_offset(1189), 58}, + {-1}, {-1}, - {pool_offset(1020), 293}, - {-1}, {-1}, {-1}, + {pool_offset(1192), 48}, + {-1}, - {pool_offset(1024), 31}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(1194), 95}, + {-1}, {-1}, - {pool_offset(1034), 66}, + {pool_offset(1197), 126}, + {-1}, {-1}, {-1}, - {pool_offset(1035), 472}, + {pool_offset(1201), 237}, - {pool_offset(1036), 19}, - {-1}, + {pool_offset(1202), 336}, - {pool_offset(1038), 413}, + {pool_offset(1203), 349}, {-1}, - {pool_offset(1040), 62}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - - {pool_offset(1048), 17}, - {-1}, + {pool_offset(1205), 19}, - {pool_offset(1050), 345}, + {pool_offset(1206), 276}, {-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(1208), 504}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1067), 11}, + {pool_offset(1215), 346}, {-1}, - {pool_offset(1069), 201}, - {-1}, + {pool_offset(1217), 17}, - {pool_offset(1071), 73}, + {pool_offset(1218), 411}, - {pool_offset(1072), 115}, + {pool_offset(1219), 240}, + {-1}, {-1}, {-1}, {-1}, - {pool_offset(1073), 483}, + {pool_offset(1224), 116}, {-1}, {-1}, {-1}, - {pool_offset(1077), 49}, - {-1}, {-1}, {-1}, {-1}, + {pool_offset(1228), 384}, + {-1}, {-1}, - {pool_offset(1082), 26}, - {-1}, {-1}, {-1}, + {pool_offset(1231), 210}, + {-1}, - {pool_offset(1086), 270}, + {pool_offset(1233), 135}, - {pool_offset(1087), 342}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, + {pool_offset(1234), 135}, - {pool_offset(1100), 216}, + {pool_offset(1235), 290}, + {-1}, - {pool_offset(1101), 106}, + {pool_offset(1237), 214}, - {pool_offset(1102), 332}, + {pool_offset(1238), 124}, + {-1}, - {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(1240), 107}, + {-1}, - {pool_offset(1125), 211}, + {pool_offset(1242), 95}, {-1}, - {pool_offset(1127), 183}, + {pool_offset(1244), 255}, + {-1}, - {pool_offset(1128), 15}, - {-1}, {-1}, {-1}, + {pool_offset(1246), 129}, - {pool_offset(1132), 115}, + {pool_offset(1247), 560}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1138), 272}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(1262), 159}, + {-1}, {-1}, + + {pool_offset(1265), 159}, + {-1}, - {pool_offset(1145), 407}, + {pool_offset(1267), 134}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1153), 454}, - {-1}, {-1}, + {pool_offset(1275), 115}, - {pool_offset(1156), 146}, + {pool_offset(1276), 279}, + {-1}, - {pool_offset(1157), 80}, + {pool_offset(1278), 211}, {-1}, {-1}, - {pool_offset(1160), 367}, + {pool_offset(1281), 116}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1165), 144}, - - {pool_offset(1166), 207}, + {pool_offset(1286), 307}, {-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}, + {pool_offset(1292), 183}, {-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(1296), 232}, + {-1}, {-1}, {-1}, - {pool_offset(1203), 29}, + {pool_offset(1300), 319}, {-1}, - {pool_offset(1205), 34}, + {pool_offset(1302), 131}, {-1}, - {pool_offset(1207), 159}, + {pool_offset(1304), 145}, {-1}, - {pool_offset(1209), 229}, - - {pool_offset(1210), 170}, - {-1}, + {pool_offset(1306), 34}, + {-1}, {-1}, {-1}, {-1}, - {pool_offset(1212), 547}, + {pool_offset(1311), 82}, - {pool_offset(1213), 66}, + {pool_offset(1312), 477}, {-1}, {-1}, {-1}, - {pool_offset(1217), 82}, - {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(1316), 497}, + + {pool_offset(1317), 21}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1322), 217}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1223), 533}, + {pool_offset(1329), 90}, {-1}, {-1}, {-1}, - {pool_offset(1227), 170}, + {pool_offset(1333), 244}, + {-1}, {-1}, {-1}, - {pool_offset(1228), 185}, + {pool_offset(1337), 198}, - {pool_offset(1229), 187}, + {pool_offset(1338), 267}, - {pool_offset(1230), 209}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(1339), 421}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1239), 166}, + {pool_offset(1347), 8}, - {pool_offset(1240), 482}, - {-1}, + {pool_offset(1348), 90}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1242), 451}, + {pool_offset(1354), 83}, - {pool_offset(1243), 214}, + {pool_offset(1355), 445}, - {pool_offset(1244), 110}, - {-1}, + {pool_offset(1356), 184}, - {pool_offset(1246), 348}, - {-1}, {-1}, {-1}, + {pool_offset(1357), 545}, + {-1}, {-1}, - {pool_offset(1250), 89}, - {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(1360), 487}, - {pool_offset(1256), 333}, - {-1}, + {pool_offset(1361), 474}, - {pool_offset(1258), 195}, + {pool_offset(1362), 455}, {-1}, - {pool_offset(1260), 175}, + {pool_offset(1364), 558}, + + {pool_offset(1365), 74}, {-1}, {-1}, - {pool_offset(1263), 190}, + {pool_offset(1368), 251}, + {-1}, {-1}, {-1}, {-1}, - {pool_offset(1264), 106}, + {pool_offset(1373), 31}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1265), 164}, + {pool_offset(1379), 204}, - {pool_offset(1266), 164}, + {pool_offset(1380), 124}, {-1}, {-1}, {-1}, - {pool_offset(1270), 186}, - {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(1384), 160}, + {-1}, {-1}, {-1}, - {pool_offset(1276), 488}, + {pool_offset(1388), 546}, {-1}, {-1}, {-1}, - {pool_offset(1280), 452}, - {-1}, {-1}, + {pool_offset(1392), 158}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1283), 8}, + {pool_offset(1398), 111}, - {pool_offset(1284), 123}, + {pool_offset(1399), 386}, {-1}, - {pool_offset(1286), 89}, + {pool_offset(1401), 274}, + {-1}, - {pool_offset(1287), 157}, - {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(1403), 469}, + {-1}, {-1}, - {pool_offset(1293), 33}, - {-1}, {-1}, {-1}, + {pool_offset(1406), 383}, + {-1}, {-1}, - {pool_offset(1297), 234}, + {pool_offset(1409), 84}, {-1}, - {pool_offset(1299), 465}, + {pool_offset(1411), 162}, + + {pool_offset(1412), 33}, {-1}, - {pool_offset(1301), 237}, + {pool_offset(1414), 168}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1421), 228}, {-1}, - {pool_offset(1303), 31}, + {pool_offset(1423), 166}, - {pool_offset(1304), 386}, + {pool_offset(1424), 166}, + {-1}, {-1}, - {pool_offset(1305), 545}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(1427), 178}, + {-1}, {-1}, - {pool_offset(1314), 534}, - {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(1430), 222}, + {-1}, {-1}, {-1}, {-1}, - {pool_offset(1320), 161}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(1435), 106}, {-1}, - {pool_offset(1331), 122}, - {-1}, + {pool_offset(1437), 193}, + {-1}, {-1}, - {pool_offset(1333), 105}, - {-1}, {-1}, {-1}, + {pool_offset(1440), 107}, + {-1}, {-1}, - {pool_offset(1337), 382}, + {pool_offset(1443), 458}, - {pool_offset(1338), 84}, + {pool_offset(1444), 456}, + {-1}, {-1}, {-1}, {-1}, - {pool_offset(1339), 214}, + {pool_offset(1449), 529}, {-1}, {-1}, {-1}, - {pool_offset(1343), 40}, - - {pool_offset(1344), 72}, + {pool_offset(1453), 217}, + {-1}, - {pool_offset(1345), 237}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(1455), 371}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1360), 502}, - {-1}, {-1}, + {pool_offset(1461), 147}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1363), 537}, - {-1}, {-1}, + {pool_offset(1467), 85}, - {pool_offset(1366), 431}, + {pool_offset(1468), 29}, {-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(1473), 326}, - {pool_offset(1390), 225}, - {-1}, {-1}, {-1}, {-1}, + {pool_offset(1474), 81}, - {pool_offset(1395), 259}, + {pool_offset(1475), 15}, {-1}, - {pool_offset(1397), 476}, - - {pool_offset(1398), 103}, + {pool_offset(1477), 196}, + {-1}, - {pool_offset(1399), 219}, - {-1}, {-1}, {-1}, {-1}, + {pool_offset(1479), 186}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1404), 125}, + {pool_offset(1486), 67}, {-1}, {-1}, - {pool_offset(1407), 226}, + {pool_offset(1489), 300}, + {-1}, + + {pool_offset(1491), 136}, - {pool_offset(1408), 30}, - {-1}, {-1}, + {pool_offset(1492), 136}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1411), 176}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(1499), 351}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1420), 30}, - {-1}, {-1}, + {pool_offset(1506), 47}, - {pool_offset(1423), 241}, - {-1}, + {pool_offset(1507), 316}, - {pool_offset(1425), 327}, - {-1}, {-1}, + {pool_offset(1508), 212}, - {pool_offset(1428), 550}, + {pool_offset(1509), 337}, {-1}, {-1}, {-1}, - {pool_offset(1432), 450}, - {-1}, {-1}, - - {pool_offset(1435), 221}, - {-1}, {-1}, + {pool_offset(1513), 75}, - {pool_offset(1438), 218}, + {pool_offset(1514), 510}, {-1}, - {pool_offset(1440), 493}, + {pool_offset(1516), 493}, - {pool_offset(1441), 444}, + {pool_offset(1517), 239}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1442), 448}, - {-1}, {-1}, {-1}, + {pool_offset(1524), 388}, - {pool_offset(1446), 441}, - {-1}, + {pool_offset(1525), 53}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1448), 510}, + {pool_offset(1532), 331}, {-1}, {-1}, - {pool_offset(1451), 516}, + {pool_offset(1535), 343}, {-1}, {-1}, - {pool_offset(1454), 374}, - - {pool_offset(1455), 216}, + {pool_offset(1538), 128}, {-1}, {-1}, - {pool_offset(1458), 147}, + {pool_offset(1541), 67}, + + {pool_offset(1542), 123}, {-1}, {-1}, - {pool_offset(1461), 56}, - {-1}, {-1}, {-1}, {-1}, + {pool_offset(1545), 30}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1466), 125}, - {-1}, + {pool_offset(1553), 12}, - {pool_offset(1468), 147}, + {pool_offset(1554), 88}, + + {pool_offset(1555), 435}, {-1}, - {pool_offset(1470), 405}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(1557), 30}, + {-1}, {-1}, - {pool_offset(1478), 307}, - {-1}, {-1}, {-1}, + {pool_offset(1560), 61}, + {-1}, + + {pool_offset(1562), 287}, + {-1}, {-1}, - {pool_offset(1482), 90}, + {pool_offset(1565), 88}, - {pool_offset(1483), 47}, - {-1}, {-1}, {-1}, + {pool_offset(1566), 394}, - {pool_offset(1487), 90}, + {pool_offset(1567), 567}, {-1}, {-1}, - {pool_offset(1490), 123}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(1570), 109}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1497), 93}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(1576), 352}, - {pool_offset(1504), 540}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(1577), 60}, + {-1}, {-1}, {-1}, {-1}, - {pool_offset(1520), 93}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(1582), 288}, - {pool_offset(1528), 390}, + {pool_offset(1583), 324}, {-1}, - {pool_offset(1530), 275}, - - {pool_offset(1531), 51}, - {-1}, {-1}, - - {pool_offset(1534), 15}, - {-1}, {-1}, + {pool_offset(1585), 526}, + {-1}, {-1}, {-1}, - {pool_offset(1537), 461}, + {pool_offset(1589), 237}, {-1}, - {pool_offset(1539), 44}, - - {pool_offset(1540), 462}, + {pool_offset(1591), 65}, {-1}, {-1}, - {pool_offset(1543), 97}, - {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(1594), 97}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1549), 64}, + {pool_offset(1601), 404}, {-1}, - {pool_offset(1551), 56}, + {pool_offset(1603), 224}, - {pool_offset(1552), 247}, - {-1}, {-1}, + {pool_offset(1604), 50}, + {-1}, + + {pool_offset(1606), 221}, - {pool_offset(1555), 163}, + {pool_offset(1607), 65}, {-1}, - {pool_offset(1557), 21}, + {pool_offset(1609), 188}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1615), 109}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1558), 477}, + {pool_offset(1621), 140}, - {pool_offset(1559), 175}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(1622), 559}, + {-1}, - {pool_offset(1569), 190}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(1624), 219}, {-1}, - {pool_offset(1580), 64}, + {pool_offset(1626), 140}, + {-1}, - {pool_offset(1581), 162}, + {pool_offset(1628), 311}, - {pool_offset(1582), 0}, + {pool_offset(1629), 481}, {-1}, - {pool_offset(1584), 78}, + {pool_offset(1631), 173}, {-1}, - {pool_offset(1586), 229}, + {pool_offset(1633), 452}, + {-1}, {-1}, - {pool_offset(1587), 169}, + {pool_offset(1636), 190}, {-1}, - {pool_offset(1589), 263}, + {pool_offset(1638), 195}, + {-1}, {-1}, {-1}, - {pool_offset(1590), 417}, + {pool_offset(1642), 24}, {-1}, {-1}, - {pool_offset(1593), 59}, + {pool_offset(1645), 561}, - {pool_offset(1594), 104}, - {-1}, {-1}, + {pool_offset(1646), 473}, - {pool_offset(1597), 546}, + {pool_offset(1647), 354}, - {pool_offset(1598), 23}, + {pool_offset(1648), 173}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1654), 189}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1605), 236}, + {pool_offset(1661), 193}, + {-1}, + + {pool_offset(1663), 232}, + {-1}, {-1}, + + {pool_offset(1666), 357}, + {-1}, {-1}, + + {pool_offset(1669), 73}, {-1}, {-1}, - {pool_offset(1608), 514}, + {pool_offset(1672), 104}, + + {pool_offset(1673), 241}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1618), 288}, - {-1}, {-1}, {-1}, + {pool_offset(1688), 44}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1622), 253}, - {-1}, + {pool_offset(1694), 549}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1624), 108}, + {pool_offset(1700), 56}, {-1}, - {pool_offset(1626), 227}, - {-1}, + {pool_offset(1702), 40}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1628), 396}, - {-1}, + {pool_offset(1708), 100}, - {pool_offset(1630), 178}, + {pool_offset(1709), 359}, {-1}, {-1}, - {pool_offset(1633), 198}, + {pool_offset(1712), 229}, {-1}, {-1}, - {pool_offset(1636), 83}, - {-1}, + {pool_offset(1715), 179}, + {-1}, {-1}, {-1}, {-1}, - {pool_offset(1638), 234}, + {pool_offset(1720), 244}, {-1}, - {pool_offset(1640), 32}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(1722), 518}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(1729), 366}, + {-1}, {-1}, {-1}, + + {pool_offset(1733), 417}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1659), 108}, + {pool_offset(1743), 422}, {-1}, - {pool_offset(1661), 180}, + {pool_offset(1745), 56}, + {-1}, {-1}, {-1}, {-1}, - {pool_offset(1662), 174}, + {pool_offset(1750), 231}, {-1}, {-1}, - {pool_offset(1665), 439}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(1753), 563}, {-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(1756), 423}, - {pool_offset(1687), 377}, + {pool_offset(1757), 465}, {-1}, {-1}, - {pool_offset(1690), 369}, + {pool_offset(1760), 466}, + {-1}, {-1}, - {pool_offset(1691), 299}, - {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(1763), 152}, - {pool_offset(1697), 398}, - {-1}, {-1}, {-1}, + {pool_offset(1764), 15}, + {-1}, - {pool_offset(1701), 24}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(1766), 409}, - {pool_offset(1708), 449}, + {pool_offset(1767), 332}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, - {pool_offset(1709), 323}, + {pool_offset(1781), 162}, - {pool_offset(1710), 284}, + {pool_offset(1782), 49}, {-1}, {-1}, - {pool_offset(1713), 238}, + {pool_offset(1785), 59}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1714), 220}, + {pool_offset(1791), 523}, {-1}, {-1}, - {pool_offset(1717), 347}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - - {pool_offset(1726), 385}, - {-1}, - - {pool_offset(1728), 158}, + {pool_offset(1794), 263}, {-1}, {-1}, - {pool_offset(1731), 158}, - {-1}, + {pool_offset(1797), 552}, - {pool_offset(1733), 5}, - {-1}, {-1}, + {pool_offset(1798), 24}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1736), 58}, + {pool_offset(1808), 105}, + {-1}, - {pool_offset(1737), 78}, - {-1}, {-1}, {-1}, + {pool_offset(1810), 32}, + {-1}, - {pool_offset(1741), 329}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(1812), 180}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1749), 485}, + {pool_offset(1819), 443}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, - {pool_offset(1750), 32}, + {pool_offset(1830), 407}, {-1}, {-1}, {-1}, - {pool_offset(1754), 296}, + {pool_offset(1834), 138}, {-1}, {-1}, {-1}, - {pool_offset(1758), 339}, + {pool_offset(1838), 381}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1759), 218}, + {pool_offset(1845), 138}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1760), 322}, - {-1}, {-1}, {-1}, {-1}, + {pool_offset(1871), 201}, + {-1}, {-1}, {-1}, - {pool_offset(1765), 437}, + {pool_offset(1875), 389}, + {-1}, {-1}, - {pool_offset(1766), 360}, + {pool_offset(1878), 228}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1776), 418}, - {-1}, {-1}, + {pool_offset(1897), 252}, - {pool_offset(1779), 491}, + {pool_offset(1898), 564}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1782), 241}, - - {pool_offset(1783), 35}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - - {pool_offset(1791), 282}, - {-1}, + {pool_offset(1910), 234}, - {pool_offset(1793), 226}, - {-1}, {-1}, {-1}, {-1}, + {pool_offset(1911), 92}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1798), 94}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(1926), 373}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1807), 517}, - {-1}, + {pool_offset(1932), 291}, - {pool_offset(1809), 320}, - {-1}, + {pool_offset(1933), 32}, + {-1}, {-1}, - {pool_offset(1811), 35}, - {-1}, {-1}, {-1}, + {pool_offset(1936), 1}, - {pool_offset(1815), 554}, + {pool_offset(1937), 117}, {-1}, - {pool_offset(1817), 301}, + {pool_offset(1939), 453}, {-1}, {-1}, - {pool_offset(1820), 358}, - {-1}, {-1}, {-1}, - - {pool_offset(1824), 361}, - {-1}, - - {pool_offset(1826), 9}, + {pool_offset(1942), 502}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1827), 217}, + {pool_offset(1948), 441}, {-1}, - {pool_offset(1829), 67}, + {pool_offset(1950), 327}, - {pool_offset(1830), 24}, + {pool_offset(1951), 23}, {-1}, {-1}, {-1}, - {pool_offset(1834), 96}, + {pool_offset(1955), 340}, {-1}, {-1}, - {pool_offset(1837), 303}, + {pool_offset(1958), 426}, - {pool_offset(1838), 419}, + {pool_offset(1959), 230}, + {-1}, {-1}, {-1}, {-1}, - {pool_offset(1839), 145}, - {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(1964), 430}, - {pool_offset(1845), 283}, - {-1}, {-1}, {-1}, + {pool_offset(1965), 178}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1849), 94}, + {pool_offset(1972), 42}, - {pool_offset(1850), 128}, + {pool_offset(1973), 382}, {-1}, - {pool_offset(1852), 400}, - {-1}, {-1}, {-1}, {-1}, {-1}, - - {pool_offset(1858), 379}, - {-1}, + {pool_offset(1975), 98}, - {pool_offset(1860), 117}, + {pool_offset(1976), 392}, {-1}, {-1}, - {pool_offset(1863), 328}, + {pool_offset(1979), 401}, {-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(1984), 5}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1883), 217}, - {-1}, {-1}, {-1}, + {pool_offset(1990), 220}, - {pool_offset(1887), 67}, + {pool_offset(1991), 305}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1892), 290}, - {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(1996), 399}, - {pool_offset(1898), 355}, + {pool_offset(1997), 364}, - {pool_offset(1899), 520}, - {-1}, {-1}, + {pool_offset(1998), 286}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1902), 172}, - {-1}, + {pool_offset(2004), 459}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1904), 353}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(2014), 194}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1911), 182}, - {-1}, + {pool_offset(2022), 294}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1913), 523}, + {pool_offset(2029), 273}, {-1}, - {pool_offset(1915), 330}, - - {pool_offset(1916), 306}, + {pool_offset(2031), 226}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1921), 524}, + {pool_offset(2036), 133}, {-1}, - {pool_offset(1923), 219}, - {-1}, {-1}, {-1}, + {pool_offset(2038), 250}, - {pool_offset(1927), 403}, - {-1}, {-1}, {-1}, + {pool_offset(2039), 341}, - {pool_offset(1931), 165}, + {pool_offset(2040), 146}, {-1}, {-1}, - {pool_offset(1934), 258}, + {pool_offset(2043), 220}, {-1}, {-1}, {-1}, - {pool_offset(1938), 76}, - {-1}, {-1}, {-1}, {-1}, + {pool_offset(2047), 403}, - {pool_offset(1943), 193}, - {-1}, {-1}, {-1}, {-1}, + {pool_offset(2048), 234}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1948), 92}, + {pool_offset(2054), 9}, {-1}, - {pool_offset(1950), 551}, - {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(2056), 96}, + {-1}, {-1}, {-1}, {-1}, - {pool_offset(1956), 384}, + {pool_offset(2061), 79}, + {-1}, {-1}, - {pool_offset(1957), 185}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(2064), 303}, + {-1}, - {pool_offset(1964), 99}, + {pool_offset(2066), 203}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1965), 422}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(2076), 402}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(1972), 135}, + {pool_offset(2082), 256}, + {-1}, - {pool_offset(1973), 135}, + {pool_offset(2084), 35}, {-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}, + {pool_offset(2089), 241}, {-1}, {-1}, {-1}, - {pool_offset(2003), 161}, + {pool_offset(2093), 229}, + + {pool_offset(2094), 181}, {-1}, {-1}, - {pool_offset(2006), 515}, - {-1}, + {pool_offset(2097), 177}, + {-1}, {-1}, - {pool_offset(2008), 61}, + {pool_offset(2100), 222}, {-1}, - {pool_offset(2010), 259}, - {-1}, {-1}, {-1}, {-1}, {-1}, - - {pool_offset(2016), 434}, - {-1}, {-1}, {-1}, + {pool_offset(2102), 391}, + {-1}, {-1}, - {pool_offset(2020), 159}, + {pool_offset(2105), 475}, {-1}, {-1}, - {pool_offset(2023), 393}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(2108), 490}, + {-1}, {-1}, {-1}, {-1}, - {pool_offset(2032), 139}, + {pool_offset(2113), 245}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(2037), 139}, + {pool_offset(2118), 245}, + {-1}, - {pool_offset(2038), 12}, + {pool_offset(2120), 246}, {-1}, - {pool_offset(2040), 177}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(2122), 35}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2127), 365}, + {-1}, - {pool_offset(2047), 239}, + {pool_offset(2129), 4}, {-1}, {-1}, - {pool_offset(2050), 182}, + {pool_offset(2132), 60}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(2051), 233}, - {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(2149), 233}, - {pool_offset(2057), 122}, - {-1}, {-1}, {-1}, {-1}, + {pool_offset(2150), 333}, - {pool_offset(2062), 57}, + {pool_offset(2151), 262}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(2063), 192}, + {pool_offset(2159), 367}, + {-1}, {-1}, {-1}, - {pool_offset(2064), 44}, - {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(2163), 532}, + {-1}, {-1}, {-1}, {-1}, - {pool_offset(2070), 436}, + {pool_offset(2168), 556}, + {-1}, - {pool_offset(2071), 455}, + {pool_offset(2170), 163}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(2077), 238}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(2176), 249}, + {-1}, - {pool_offset(2084), 171}, + {pool_offset(2178), 249}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(2085), 132}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(2184), 335}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(2092), 242}, - {-1}, {-1}, + {pool_offset(2193), 79}, + {-1}, {-1}, {-1}, - {pool_offset(2095), 312}, + {pool_offset(2197), 256}, {-1}, - {pool_offset(2097), 242}, + {pool_offset(2199), 289}, {-1}, - {pool_offset(2099), 243}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(2201), 164}, + {-1}, {-1}, {-1}, {-1}, - {pool_offset(2109), 199}, + {pool_offset(2206), 242}, - {pool_offset(2110), 77}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(2207), 257}, + {-1}, {-1}, + + {pool_offset(2210), 236}, + + {pool_offset(2211), 182}, + + {pool_offset(2212), 167}, + + {pool_offset(2213), 524}, + + {pool_offset(2214), 51}, {-1}, - {pool_offset(2121), 366}, + {pool_offset(2216), 321}, + {-1}, {-1}, {-1}, + + {pool_offset(2220), 243}, {-1}, {-1}, - {pool_offset(2124), 395}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(2223), 172}, + {-1}, {-1}, - {pool_offset(2133), 87}, + {pool_offset(2226), 238}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(2144), 87}, + {pool_offset(2237), 213}, + {-1}, {-1}, + + {pool_offset(2240), 533}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, - {pool_offset(2158), 246}, - {-1}, + {pool_offset(2250), 323}, - {pool_offset(2160), 42}, + {pool_offset(2251), 160}, {-1}, {-1}, {-1}, {-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(2264), 385}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, - {pool_offset(2187), 228}, + {pool_offset(2277), 258}, - {pool_offset(2188), 409}, - {-1}, + {pool_offset(2278), 218}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(2190), 388}, + {pool_offset(2285), 540}, + {-1}, {-1}, - {pool_offset(2191), 235}, + {pool_offset(2288), 317}, {-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(2293), 438}, + {-1}, - {pool_offset(2213), 362}, + {pool_offset(2295), 330}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(2214), 162}, + {pool_offset(2305), 334}, {-1}, {-1}, - {pool_offset(2217), 285}, - {-1}, {-1}, {-1}, {-1}, - - {pool_offset(2222), 548}, + {pool_offset(2308), 20}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, - {pool_offset(2223), 36}, + {pool_offset(2320), 183}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(2228), 240}, + {pool_offset(2325), 62}, - {pool_offset(2229), 317}, - {-1}, {-1}, + {pool_offset(2326), 92}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(2232), 100}, + {pool_offset(2333), 165}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(2233), 246}, - {-1}, {-1}, {-1}, {-1}, + {pool_offset(2343), 77}, + {-1}, - {pool_offset(2238), 178}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(2345), 93}, - {pool_offset(2245), 269}, - {-1}, {-1}, {-1}, + {pool_offset(2346), 171}, + {-1}, - {pool_offset(2249), 200}, - {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(2348), 175}, - {pool_offset(2255), 337}, + {pool_offset(2349), 557}, {-1}, {-1}, - {pool_offset(2258), 48}, + {pool_offset(2352), 93}, - {pool_offset(2259), 264}, + {pool_offset(2353), 535}, {-1}, - {pool_offset(2261), 470}, - {-1}, + {pool_offset(2355), 370}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(2263), 91}, + {pool_offset(2364), 164}, - {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(2365), 0}, + + {pool_offset(2366), 123}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2375), 63}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(2286), 176}, + {pool_offset(2381), 36}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2391), 362}, {-1}, {-1}, {-1}, - {pool_offset(2299), 65}, - {-1}, + {pool_offset(2395), 432}, + {-1}, {-1}, {-1}, {-1}, - {pool_offset(2301), 287}, - {-1}, {-1}, {-1}, + {pool_offset(2400), 225}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(2305), 187}, - {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(2410), 57}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(2311), 496}, - {-1}, {-1}, {-1}, + {pool_offset(2418), 342}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(2315), 65}, - {-1}, {-1}, {-1}, + {pool_offset(2426), 101}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(2319), 231}, - {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(2442), 310}, - {pool_offset(2325), 137}, - {-1}, {-1}, {-1}, {-1}, + {pool_offset(2443), 242}, + {-1}, - {pool_offset(2330), 97}, - {-1}, {-1}, + {pool_offset(2445), 184}, + {-1}, - {pool_offset(2333), 179}, - {-1}, {-1}, + {pool_offset(2447), 185}, - {pool_offset(2336), 137}, - {-1}, {-1}, {-1}, {-1}, + {pool_offset(2448), 397}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(2341), 336}, + {pool_offset(2455), 250}, - {pool_offset(2342), 262}, - {-1}, {-1}, {-1}, {-1}, + {pool_offset(2456), 188}, + {-1}, {-1}, {-1}, - {pool_offset(2347), 129}, + {pool_offset(2460), 427}, + {-1}, - {pool_offset(2348), 426}, - {-1}, {-1}, + {pool_offset(2462), 513}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(2351), 397}, + {pool_offset(2469), 37}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(2352), 191}, - {-1}, {-1}, {-1}, {-1}, + {pool_offset(2478), 168}, + {-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(2480), 233}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(2376), 428}, + {pool_offset(2487), 440}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, + + {pool_offset(2498), 312}, {-1}, {-1}, {-1}, - {pool_offset(2389), 50}, + {pool_offset(2502), 268}, {-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(2409), 261}, - {-1}, + {pool_offset(2516), 313}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(2411), 223}, - {-1}, {-1}, + {pool_offset(2523), 221}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(2414), 116}, - {-1}, {-1}, {-1}, {-1}, + {pool_offset(2529), 174}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2538), 542}, + {-1}, {-1}, {-1}, - {pool_offset(2419), 331}, + {pool_offset(2542), 174}, {-1}, - {pool_offset(2421), 253}, + {pool_offset(2544), 248}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2554), 376}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(2428), 231}, - - {pool_offset(2429), 199}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(2561), 176}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(2437), 224}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(2571), 387}, + {-1}, - {pool_offset(2444), 215}, + {pool_offset(2573), 114}, + {-1}, {-1}, {-1}, {-1}, - {pool_offset(2445), 4}, + {pool_offset(2578), 185}, {-1}, {-1}, {-1}, - {pool_offset(2449), 75}, - {-1}, {-1}, {-1}, {-1}, {-1}, - - {pool_offset(2455), 463}, + {pool_offset(2582), 203}, + {-1}, - {pool_offset(2456), 225}, + {pool_offset(2584), 418}, {-1}, {-1}, {-1}, - {pool_offset(2460), 206}, - - {pool_offset(2461), 167}, + {pool_offset(2588), 70}, {-1}, {-1}, - {pool_offset(2464), 313}, + {pool_offset(2591), 169}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(2465), 153}, + {pool_offset(2607), 266}, {-1}, - {pool_offset(2467), 188}, - {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(2609), 247}, + {-1}, - {pool_offset(2473), 60}, - {-1}, {-1}, + {pool_offset(2611), 78}, + {-1}, {-1}, {-1}, - {pool_offset(2476), 378}, - {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(2615), 247}, - {pool_offset(2482), 239}, - {-1}, + {pool_offset(2616), 223}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(2484), 49}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, + {pool_offset(2622), 97}, - {pool_offset(2496), 416}, + {pool_offset(2623), 248}, {-1}, {-1}, {-1}, - {pool_offset(2500), 511}, - {-1}, {-1}, - - {pool_offset(2503), 319}, + {pool_offset(2627), 511}, {-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(2632), 239}, - {pool_offset(2521), 309}, - {-1}, {-1}, {-1}, + {pool_offset(2633), 424}, - {pool_offset(2525), 414}, + {pool_offset(2634), 541}, {-1}, {-1}, {-1}, - {pool_offset(2529), 492}, + {pool_offset(2638), 118}, {-1}, {-1}, - {pool_offset(2532), 189}, + {pool_offset(2641), 428}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, - {pool_offset(2533), 230}, - {-1}, {-1}, {-1}, + {pool_offset(2652), 413}, - {pool_offset(2537), 70}, + {pool_offset(2653), 71}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(2553), 261}, - - {pool_offset(2554), 505}, + {pool_offset(2669), 215}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-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(2692), 27}, + {-1}, {-1}, {-1}, - {pool_offset(2576), 210}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(2696), 71}, + {-1}, - {pool_offset(2584), 254}, + {pool_offset(2698), 48}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, - {pool_offset(2585), 544}, + {pool_offset(2709), 181}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(2586), 338}, + {pool_offset(2725), 544}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-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(2767), 265}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(2642), 189}, - {-1}, + {pool_offset(2775), 70}, - {pool_offset(2644), 27}, + {pool_offset(2776), 36}, {-1}, {-1}, - {pool_offset(2647), 274}, + {pool_offset(2779), 169}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(2653), 173}, + {pool_offset(2785), 202}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2794), 467}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(2659), 308}, - {-1}, {-1}, + {pool_offset(2800), 498}, - {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}, + {pool_offset(2801), 154}, {-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}, + {pool_offset(2804), 50}, {-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}, + {pool_offset(2808), 539}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(2743), 341}, - {-1}, - - {pool_offset(2745), 529}, + {pool_offset(2813), 209}, {-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}, + {-1}, - {pool_offset(2770), 96}, + {pool_offset(2824), 258}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(2771), 63}, + {pool_offset(2831), 161}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(2776), 335}, + {pool_offset(2836), 19}, + {-1}, - {pool_offset(2777), 168}, - {-1}, {-1}, {-1}, {-1}, + {pool_offset(2838), 59}, - {pool_offset(2782), 399}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(2839), 161}, + {-1}, - {pool_offset(2790), 503}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(2841), 551}, + {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(2798), 91}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(2847), 68}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2856), 190}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(2826), 248}, - {-1}, {-1}, {-1}, {-1}, + {pool_offset(2875), 281}, - {pool_offset(2831), 236}, + {pool_offset(2876), 420}, {-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}, + {pool_offset(2890), 130}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(2884), 539}, + {pool_offset(2916), 76}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(2930), 49}, {-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(2953), 200}, - {pool_offset(2915), 160}, + {pool_offset(2954), 179}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-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(2970), 519}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(2937), 95}, + {pool_offset(2977), 231}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(2947), 530}, + {pool_offset(2996), 265}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(2954), 173}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(3012), 47}, + {-1}, {-1}, - {pool_offset(2963), 277}, + {pool_offset(3015), 227}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(2968), 244}, - {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(3020), 270}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-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(2974), 244}, + {pool_offset(3072), 192}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(2975), 412}, + {pool_offset(3079), 189}, + {-1}, {-1}, {-1}, {-1}, - {pool_offset(2976), 352}, + {pool_offset(3084), 278}, + {-1}, {-1}, {-1}, - {pool_offset(2977), 423}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(3088), 176}, + {-1}, {-1}, {-1}, - {pool_offset(2986), 183}, + {pool_offset(3092), 191}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(2987), 212}, + {pool_offset(3099), 451}, {-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}, + {pool_offset(3118), 345}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, - {pool_offset(3052), 254}, + {pool_offset(3146), 51}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(3154), 170}, + {-1}, {-1}, {-1}, {-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(3071), 245}, + {pool_offset(3182), 339}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(3188), 187}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(3080), 356}, - {-1}, {-1}, + {pool_offset(3197), 414}, - {pool_offset(3083), 541}, + {pool_offset(3198), 18}, - {pool_offset(3084), 410}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(3199), 63}, {-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}, + {pool_offset(3216), 192}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-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(3258), 55}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(3210), 232}, + {pool_offset(3267), 42}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(3228), 222}, + {pool_offset(3285), 172}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(3231), 20}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(3306), 213}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(3239), 525}, + {pool_offset(3324), 236}, {-1}, {-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(3350), 99}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(3262), 76}, + {pool_offset(3355), 356}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-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(3413), 514}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-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(3304), 92}, + {pool_offset(3459), 170}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(3478), 191}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, + + {pool_offset(3491), 553}, + {-1}, {-1}, + + {pool_offset(3494), 360}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(3328), 381}, + {pool_offset(3500), 186}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(3337), 447}, + {pool_offset(3527), 416}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, + + {pool_offset(3538), 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}, - - {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}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-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(3663), 180}, + {-1}, {-1}, - {pool_offset(3431), 233}, + {pool_offset(3666), 235}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(3685), 235}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(3447), 63}, + {pool_offset(3692), 379}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, - - {pool_offset(3471), 383}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, - {pool_offset(3485), 177}, + {pool_offset(3731), 223}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(3504), 266}, + {pool_offset(3750), 508}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, - {pool_offset(3514), 365}, - {-1}, {-1}, - - {pool_offset(3517), 184}, + {pool_offset(3763), 509}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-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}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(3564), 346}, - {-1}, {-1}, {-1}, {-1}, {-1}, + {pool_offset(3807), 10}, + {-1}, {-1}, - {pool_offset(3570), 411}, + {pool_offset(3810), 206}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(3872), 77}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(3603), 240}, + {pool_offset(3881), 96}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(3623), 375}, + {pool_offset(3901), 243}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(3910), 253}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(3937), 369}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(3946), 251}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(3961), 194}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {pool_offset(3666), 228}, + {pool_offset(3971), 534}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, + + {pool_offset(3992), 350}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, @@ -28857,9 +29335,6 @@ unicode_lookup_property_name (register const char *str, register size_t len) {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - - {pool_offset(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}, @@ -28883,33 +29358,38 @@ unicode_lookup_property_name (register const char *str, register size_t len) {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(4279), 134}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(4298), 187}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-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}, + + {pool_offset(4401), 415}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, - - {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}, + + {pool_offset(4476), 358}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, @@ -28919,34 +29399,32 @@ unicode_lookup_property_name (register const char *str, register size_t len) {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, + + {pool_offset(4562), 377}, - {pool_offset(4261), 98}, + {pool_offset(4563), 69}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, - {pool_offset(4277), 373}, + {pool_offset(4577), 554}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-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}, + {pool_offset(4659), 171}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-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}, + {pool_offset(4688), 565}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, @@ -28961,9 +29439,15 @@ unicode_lookup_property_name (register const char *str, register size_t len) {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + + {pool_offset(4822), 208}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, + + {pool_offset(4851), 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}, @@ -28973,15 +29457,10 @@ unicode_lookup_property_name (register const char *str, register size_t len) {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - - {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}, @@ -29042,9 +29521,6 @@ unicode_lookup_property_name (register const char *str, register size_t len) {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - - {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}, @@ -29076,9 +29552,11 @@ unicode_lookup_property_name (register const char *str, register size_t len) {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, - {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, - {pool_offset(5516), 553} + {pool_offset(5809), 566} }; if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH) @@ -29102,10 +29580,10 @@ unicode_lookup_property_name (register const char *str, register size_t len) -#define UNICODE_PROPERTY_VERSION 11_0_0 +#define UNICODE_PROPERTY_VERSION 12_1_0 #define PROPERTY_NAME_MAX_SIZE 59 -#define CODE_RANGES_NUM 555 +#define CODE_RANGES_NUM 568 #define PROP_INDEX_NEWLINE 0 #define PROP_INDEX_ALPHA 1 @@ -29131,8 +29609,8 @@ unicode_lookup_property_name (register const char *str, register size_t len) #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_ARAB 21 #define PROP_INDEX_ARMN 22 #define PROP_INDEX_ARMENIAN 22 #define PROP_INDEX_ASSIGNED 23 @@ -29228,666 +29706,683 @@ unicode_lookup_property_name (register const char *str, register size_t len) #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 +#define PROP_INDEX_ELYM 71 +#define PROP_INDEX_ELYMAIC 71 +#define PROP_INDEX_EMOJI 72 +#define PROP_INDEX_EMOJICOMPONENT 73 +#define PROP_INDEX_EMOJIMODIFIER 74 +#define PROP_INDEX_EMOJIMODIFIERBASE 75 +#define PROP_INDEX_EMOJIPRESENTATION 76 +#define PROP_INDEX_ETHIOPIC 77 +#define PROP_INDEX_ETHI 77 +#define PROP_INDEX_EXTENDEDPICTOGRAPHIC 78 +#define PROP_INDEX_EXT 79 +#define PROP_INDEX_EXTENDER 79 +#define PROP_INDEX_GEORGIAN 80 +#define PROP_INDEX_GEOR 80 +#define PROP_INDEX_GLAG 81 +#define PROP_INDEX_GLAGOLITIC 81 +#define PROP_INDEX_GOTH 82 +#define PROP_INDEX_GOTHIC 82 +#define PROP_INDEX_GRAN 83 +#define PROP_INDEX_GRANTHA 83 +#define PROP_INDEX_GRBASE 84 +#define PROP_INDEX_GRAPHEMEBASE 84 +#define PROP_INDEX_GREXT 85 +#define PROP_INDEX_GRAPHEMEEXTEND 85 +#define PROP_INDEX_GRAPHEMELINK 86 +#define PROP_INDEX_GRLINK 86 +#define PROP_INDEX_GREEK 87 +#define PROP_INDEX_GREK 87 +#define PROP_INDEX_GUJARATI 88 +#define PROP_INDEX_GUJR 88 +#define PROP_INDEX_GUNJALAGONDI 89 +#define PROP_INDEX_GONG 89 +#define PROP_INDEX_GURU 90 +#define PROP_INDEX_GURMUKHI 90 +#define PROP_INDEX_HANI 91 +#define PROP_INDEX_HAN 91 +#define PROP_INDEX_HANG 92 +#define PROP_INDEX_HANGUL 92 +#define PROP_INDEX_HANIFIROHINGYA 93 +#define PROP_INDEX_ROHG 93 +#define PROP_INDEX_HANUNOO 94 +#define PROP_INDEX_HANO 94 +#define PROP_INDEX_HATR 95 +#define PROP_INDEX_HATRAN 95 +#define PROP_INDEX_HEBREW 96 +#define PROP_INDEX_HEBR 96 +#define PROP_INDEX_HEXDIGIT 97 +#define PROP_INDEX_HEX 97 +#define PROP_INDEX_HIRAGANA 98 +#define PROP_INDEX_HIRA 98 +#define PROP_INDEX_HYPHEN 99 +#define PROP_INDEX_IDSB 100 +#define PROP_INDEX_IDSBINARYOPERATOR 100 +#define PROP_INDEX_IDST 101 +#define PROP_INDEX_IDSTRINARYOPERATOR 101 +#define PROP_INDEX_IDCONTINUE 102 +#define PROP_INDEX_IDC 102 +#define PROP_INDEX_IDS 103 +#define PROP_INDEX_IDSTART 103 +#define PROP_INDEX_IDEO 104 +#define PROP_INDEX_IDEOGRAPHIC 104 +#define PROP_INDEX_ARMI 105 +#define PROP_INDEX_IMPERIALARAMAIC 105 +#define PROP_INDEX_ZINH 106 +#define PROP_INDEX_INHERITED 106 +#define PROP_INDEX_QAAI 106 +#define PROP_INDEX_PHLI 107 +#define PROP_INDEX_INSCRIPTIONALPAHLAVI 107 +#define PROP_INDEX_INSCRIPTIONALPARTHIAN 108 +#define PROP_INDEX_PRTI 108 +#define PROP_INDEX_JAVANESE 109 +#define PROP_INDEX_JAVA 109 +#define PROP_INDEX_JOINC 110 +#define PROP_INDEX_JOINCONTROL 110 +#define PROP_INDEX_KAITHI 111 +#define PROP_INDEX_KTHI 111 +#define PROP_INDEX_KNDA 112 +#define PROP_INDEX_KANNADA 112 +#define PROP_INDEX_KATAKANA 113 +#define PROP_INDEX_KANA 113 +#define PROP_INDEX_KAYAHLI 114 +#define PROP_INDEX_KALI 114 +#define PROP_INDEX_KHAROSHTHI 115 +#define PROP_INDEX_KHAR 115 +#define PROP_INDEX_KHMR 116 +#define PROP_INDEX_KHMER 116 +#define PROP_INDEX_KHOJ 117 +#define PROP_INDEX_KHOJKI 117 +#define PROP_INDEX_KHUDAWADI 118 +#define PROP_INDEX_SIND 118 +#define PROP_INDEX_L 119 +#define PROP_INDEX_LETTER 119 +#define PROP_INDEX_LC 120 +#define PROP_INDEX_CASEDLETTER 120 +#define PROP_INDEX_LAO 121 +#define PROP_INDEX_LAOO 121 +#define PROP_INDEX_LATN 122 +#define PROP_INDEX_LATIN 122 +#define PROP_INDEX_LEPC 123 +#define PROP_INDEX_LEPCHA 123 +#define PROP_INDEX_LIMBU 124 +#define PROP_INDEX_LIMB 124 +#define PROP_INDEX_LINA 125 +#define PROP_INDEX_LINEARA 125 +#define PROP_INDEX_LINB 126 +#define PROP_INDEX_LINEARB 126 +#define PROP_INDEX_LISU 127 +#define PROP_INDEX_LOWERCASELETTER 128 +#define PROP_INDEX_LL 128 +#define PROP_INDEX_LM 129 +#define PROP_INDEX_MODIFIERLETTER 129 +#define PROP_INDEX_LO 130 +#define PROP_INDEX_OTHERLETTER 130 +#define PROP_INDEX_LOGICALORDEREXCEPTION 131 +#define PROP_INDEX_LOE 131 +#define PROP_INDEX_LOWERCASE 132 +#define PROP_INDEX_LT 133 +#define PROP_INDEX_TITLECASELETTER 133 +#define PROP_INDEX_UPPERCASELETTER 134 +#define PROP_INDEX_LU 134 +#define PROP_INDEX_LYCI 135 +#define PROP_INDEX_LYCIAN 135 +#define PROP_INDEX_LYDI 136 +#define PROP_INDEX_LYDIAN 136 +#define PROP_INDEX_M 137 +#define PROP_INDEX_COMBININGMARK 137 +#define PROP_INDEX_MARK 137 +#define PROP_INDEX_MAHJ 138 +#define PROP_INDEX_MAHAJANI 138 +#define PROP_INDEX_MAKASAR 139 +#define PROP_INDEX_MAKA 139 +#define PROP_INDEX_MALAYALAM 140 +#define PROP_INDEX_MLYM 140 +#define PROP_INDEX_MAND 141 +#define PROP_INDEX_MANDAIC 141 +#define PROP_INDEX_MANI 142 +#define PROP_INDEX_MANICHAEAN 142 +#define PROP_INDEX_MARC 143 +#define PROP_INDEX_MARCHEN 143 +#define PROP_INDEX_MASARAMGONDI 144 +#define PROP_INDEX_GONM 144 +#define PROP_INDEX_MATH 145 +#define PROP_INDEX_MC 146 +#define PROP_INDEX_SPACINGMARK 146 +#define PROP_INDEX_ENCLOSINGMARK 147 +#define PROP_INDEX_ME 147 +#define PROP_INDEX_MEDEFAIDRIN 148 +#define PROP_INDEX_MEDF 148 +#define PROP_INDEX_MEETEIMAYEK 149 +#define PROP_INDEX_MTEI 149 +#define PROP_INDEX_MENDEKIKAKUI 150 +#define PROP_INDEX_MEND 150 +#define PROP_INDEX_MEROITICCURSIVE 151 +#define PROP_INDEX_MERC 151 +#define PROP_INDEX_MEROITICHIEROGLYPHS 152 +#define PROP_INDEX_MERO 152 +#define PROP_INDEX_PLRD 153 +#define PROP_INDEX_MIAO 153 +#define PROP_INDEX_MN 154 +#define PROP_INDEX_NONSPACINGMARK 154 +#define PROP_INDEX_MODI 155 +#define PROP_INDEX_MONGOLIAN 156 +#define PROP_INDEX_MONG 156 +#define PROP_INDEX_MRO 157 +#define PROP_INDEX_MROO 157 +#define PROP_INDEX_MULT 158 +#define PROP_INDEX_MULTANI 158 +#define PROP_INDEX_MYANMAR 159 +#define PROP_INDEX_MYMR 159 +#define PROP_INDEX_NUMBER 160 +#define PROP_INDEX_N 160 +#define PROP_INDEX_NABATAEAN 161 +#define PROP_INDEX_NBAT 161 +#define PROP_INDEX_NAND 162 +#define PROP_INDEX_NANDINAGARI 162 +#define PROP_INDEX_DECIMALNUMBER 163 +#define PROP_INDEX_ND 163 +#define PROP_INDEX_TALU 164 +#define PROP_INDEX_NEWTAILUE 164 +#define PROP_INDEX_NEWA 165 +#define PROP_INDEX_NKO 166 +#define PROP_INDEX_NKOO 166 +#define PROP_INDEX_LETTERNUMBER 167 +#define PROP_INDEX_NL 167 +#define PROP_INDEX_OTHERNUMBER 168 +#define PROP_INDEX_NO 168 +#define PROP_INDEX_NONCHARACTERCODEPOINT 169 +#define PROP_INDEX_NCHAR 169 +#define PROP_INDEX_NSHU 170 +#define PROP_INDEX_NUSHU 170 +#define PROP_INDEX_HMNP 171 +#define PROP_INDEX_NYIAKENGPUACHUEHMONG 171 +#define PROP_INDEX_OGHAM 172 +#define PROP_INDEX_OGAM 172 +#define PROP_INDEX_OLCK 173 +#define PROP_INDEX_OLCHIKI 173 +#define PROP_INDEX_HUNG 174 +#define PROP_INDEX_OLDHUNGARIAN 174 +#define PROP_INDEX_ITAL 175 +#define PROP_INDEX_OLDITALIC 175 +#define PROP_INDEX_NARB 176 +#define PROP_INDEX_OLDNORTHARABIAN 176 +#define PROP_INDEX_OLDPERMIC 177 +#define PROP_INDEX_PERM 177 +#define PROP_INDEX_OLDPERSIAN 178 +#define PROP_INDEX_XPEO 178 +#define PROP_INDEX_SOGO 179 +#define PROP_INDEX_OLDSOGDIAN 179 +#define PROP_INDEX_SARB 180 +#define PROP_INDEX_OLDSOUTHARABIAN 180 +#define PROP_INDEX_OLDTURKIC 181 +#define PROP_INDEX_ORKH 181 +#define PROP_INDEX_ORYA 182 +#define PROP_INDEX_ORIYA 182 +#define PROP_INDEX_OSAGE 183 +#define PROP_INDEX_OSGE 183 +#define PROP_INDEX_OSMANYA 184 +#define PROP_INDEX_OSMA 184 +#define PROP_INDEX_OTHERALPHABETIC 185 +#define PROP_INDEX_OALPHA 185 +#define PROP_INDEX_ODI 186 +#define PROP_INDEX_OTHERDEFAULTIGNORABLECODEPOINT 186 +#define PROP_INDEX_OGREXT 187 +#define PROP_INDEX_OTHERGRAPHEMEEXTEND 187 +#define PROP_INDEX_OIDC 188 +#define PROP_INDEX_OTHERIDCONTINUE 188 +#define PROP_INDEX_OTHERIDSTART 189 +#define PROP_INDEX_OIDS 189 +#define PROP_INDEX_OTHERLOWERCASE 190 +#define PROP_INDEX_OLOWER 190 +#define PROP_INDEX_OTHERMATH 191 +#define PROP_INDEX_OMATH 191 +#define PROP_INDEX_OTHERUPPERCASE 192 +#define PROP_INDEX_OUPPER 192 +#define PROP_INDEX_P 193 +#define PROP_INDEX_PUNCTUATION 193 +#define PROP_INDEX_PAHAWHHMONG 194 +#define PROP_INDEX_HMNG 194 +#define PROP_INDEX_PALMYRENE 195 +#define PROP_INDEX_PALM 195 +#define PROP_INDEX_PATTERNSYNTAX 196 +#define PROP_INDEX_PATSYN 196 +#define PROP_INDEX_PATWS 197 +#define PROP_INDEX_PATTERNWHITESPACE 197 +#define PROP_INDEX_PAUCINHAU 198 +#define PROP_INDEX_PAUC 198 +#define PROP_INDEX_CONNECTORPUNCTUATION 199 +#define PROP_INDEX_PC 199 +#define PROP_INDEX_DASHPUNCTUATION 200 +#define PROP_INDEX_PD 200 +#define PROP_INDEX_PE 201 +#define PROP_INDEX_CLOSEPUNCTUATION 201 +#define PROP_INDEX_FINALPUNCTUATION 202 +#define PROP_INDEX_PF 202 +#define PROP_INDEX_PHAG 203 +#define PROP_INDEX_PHAGSPA 203 +#define PROP_INDEX_PHOENICIAN 204 +#define PROP_INDEX_PHNX 204 +#define PROP_INDEX_PI 205 +#define PROP_INDEX_INITIALPUNCTUATION 205 +#define PROP_INDEX_OTHERPUNCTUATION 206 +#define PROP_INDEX_PO 206 +#define PROP_INDEX_PREPENDEDCONCATENATIONMARK 207 +#define PROP_INDEX_PCM 207 +#define PROP_INDEX_PS 208 +#define PROP_INDEX_OPENPUNCTUATION 208 +#define PROP_INDEX_PHLP 209 +#define PROP_INDEX_PSALTERPAHLAVI 209 +#define PROP_INDEX_QUOTATIONMARK 210 +#define PROP_INDEX_QMARK 210 +#define PROP_INDEX_RADICAL 211 +#define PROP_INDEX_RI 212 +#define PROP_INDEX_REGIONALINDICATOR 212 +#define PROP_INDEX_REJANG 213 +#define PROP_INDEX_RJNG 213 +#define PROP_INDEX_RUNIC 214 +#define PROP_INDEX_RUNR 214 +#define PROP_INDEX_S 215 +#define PROP_INDEX_SYMBOL 215 +#define PROP_INDEX_SAMARITAN 216 +#define PROP_INDEX_SAMR 216 +#define PROP_INDEX_SAURASHTRA 217 +#define PROP_INDEX_SAUR 217 +#define PROP_INDEX_SC 218 +#define PROP_INDEX_CURRENCYSYMBOL 218 +#define PROP_INDEX_SENTENCETERMINAL 219 +#define PROP_INDEX_STERM 219 +#define PROP_INDEX_SHARADA 220 +#define PROP_INDEX_SHRD 220 +#define PROP_INDEX_SHAVIAN 221 +#define PROP_INDEX_SHAW 221 +#define PROP_INDEX_SIDDHAM 222 +#define PROP_INDEX_SIDD 222 +#define PROP_INDEX_SIGNWRITING 223 +#define PROP_INDEX_SGNW 223 +#define PROP_INDEX_SINH 224 +#define PROP_INDEX_SINHALA 224 +#define PROP_INDEX_SK 225 +#define PROP_INDEX_MODIFIERSYMBOL 225 +#define PROP_INDEX_MATHSYMBOL 226 +#define PROP_INDEX_SM 226 +#define PROP_INDEX_SO 227 +#define PROP_INDEX_OTHERSYMBOL 227 +#define PROP_INDEX_SD 228 +#define PROP_INDEX_SOFTDOTTED 228 +#define PROP_INDEX_SOGD 229 +#define PROP_INDEX_SOGDIAN 229 +#define PROP_INDEX_SORASOMPENG 230 +#define PROP_INDEX_SORA 230 +#define PROP_INDEX_SOYO 231 +#define PROP_INDEX_SOYOMBO 231 +#define PROP_INDEX_SUND 232 +#define PROP_INDEX_SUNDANESE 232 +#define PROP_INDEX_SYLO 233 +#define PROP_INDEX_SYLOTINAGRI 233 +#define PROP_INDEX_SYRC 234 +#define PROP_INDEX_SYRIAC 234 +#define PROP_INDEX_TGLG 235 +#define PROP_INDEX_TAGALOG 235 +#define PROP_INDEX_TAGBANWA 236 +#define PROP_INDEX_TAGB 236 +#define PROP_INDEX_TAILE 237 +#define PROP_INDEX_TALE 237 +#define PROP_INDEX_TAITHAM 238 +#define PROP_INDEX_LANA 238 +#define PROP_INDEX_TAIVIET 239 +#define PROP_INDEX_TAVT 239 +#define PROP_INDEX_TAKRI 240 +#define PROP_INDEX_TAKR 240 +#define PROP_INDEX_TAMIL 241 +#define PROP_INDEX_TAML 241 +#define PROP_INDEX_TANG 242 +#define PROP_INDEX_TANGUT 242 +#define PROP_INDEX_TELUGU 243 +#define PROP_INDEX_TELU 243 +#define PROP_INDEX_TERM 244 +#define PROP_INDEX_TERMINALPUNCTUATION 244 +#define PROP_INDEX_THAA 245 +#define PROP_INDEX_THAANA 245 +#define PROP_INDEX_THAI 246 +#define PROP_INDEX_TIBT 247 +#define PROP_INDEX_TIBETAN 247 +#define PROP_INDEX_TFNG 248 +#define PROP_INDEX_TIFINAGH 248 +#define PROP_INDEX_TIRHUTA 249 +#define PROP_INDEX_TIRH 249 +#define PROP_INDEX_UGAR 250 +#define PROP_INDEX_UGARITIC 250 +#define PROP_INDEX_UNIFIEDIDEOGRAPH 251 +#define PROP_INDEX_UIDEO 251 +#define PROP_INDEX_ZZZZ 252 +#define PROP_INDEX_UNKNOWN 252 +#define PROP_INDEX_UPPERCASE 253 +#define PROP_INDEX_VAII 254 +#define PROP_INDEX_VAI 254 +#define PROP_INDEX_VARIATIONSELECTOR 255 +#define PROP_INDEX_VS 255 +#define PROP_INDEX_WCHO 256 +#define PROP_INDEX_WANCHO 256 +#define PROP_INDEX_WARANGCITI 257 +#define PROP_INDEX_WARA 257 +#define PROP_INDEX_WHITESPACE 258 +#define PROP_INDEX_WSPACE 258 +#define PROP_INDEX_XIDC 259 +#define PROP_INDEX_XIDCONTINUE 259 +#define PROP_INDEX_XIDS 260 +#define PROP_INDEX_XIDSTART 260 +#define PROP_INDEX_YI 261 +#define PROP_INDEX_YIII 261 +#define PROP_INDEX_SEPARATOR 262 +#define PROP_INDEX_Z 262 +#define PROP_INDEX_ZANABAZARSQUARE 263 +#define PROP_INDEX_ZANB 263 +#define PROP_INDEX_ZL 264 +#define PROP_INDEX_LINESEPARATOR 264 +#define PROP_INDEX_ZP 265 +#define PROP_INDEX_PARAGRAPHSEPARATOR 265 +#define PROP_INDEX_ZS 266 +#define PROP_INDEX_SPACESEPARATOR 266 +#define PROP_INDEX_INBASICLATIN 267 +#define PROP_INDEX_INLATIN1SUPPLEMENT 268 +#define PROP_INDEX_INLATINEXTENDEDA 269 +#define PROP_INDEX_INLATINEXTENDEDB 270 +#define PROP_INDEX_INIPAEXTENSIONS 271 +#define PROP_INDEX_INSPACINGMODIFIERLETTERS 272 +#define PROP_INDEX_INCOMBININGDIACRITICALMARKS 273 +#define PROP_INDEX_INGREEKANDCOPTIC 274 +#define PROP_INDEX_INCYRILLIC 275 +#define PROP_INDEX_INCYRILLICSUPPLEMENT 276 +#define PROP_INDEX_INARMENIAN 277 +#define PROP_INDEX_INHEBREW 278 +#define PROP_INDEX_INARABIC 279 +#define PROP_INDEX_INSYRIAC 280 +#define PROP_INDEX_INARABICSUPPLEMENT 281 +#define PROP_INDEX_INTHAANA 282 +#define PROP_INDEX_INNKO 283 +#define PROP_INDEX_INSAMARITAN 284 +#define PROP_INDEX_INMANDAIC 285 +#define PROP_INDEX_INSYRIACSUPPLEMENT 286 +#define PROP_INDEX_INARABICEXTENDEDA 287 +#define PROP_INDEX_INDEVANAGARI 288 +#define PROP_INDEX_INBENGALI 289 +#define PROP_INDEX_INGURMUKHI 290 +#define PROP_INDEX_INGUJARATI 291 +#define PROP_INDEX_INORIYA 292 +#define PROP_INDEX_INTAMIL 293 +#define PROP_INDEX_INTELUGU 294 +#define PROP_INDEX_INKANNADA 295 +#define PROP_INDEX_INMALAYALAM 296 +#define PROP_INDEX_INSINHALA 297 +#define PROP_INDEX_INTHAI 298 +#define PROP_INDEX_INLAO 299 +#define PROP_INDEX_INTIBETAN 300 +#define PROP_INDEX_INMYANMAR 301 +#define PROP_INDEX_INGEORGIAN 302 +#define PROP_INDEX_INHANGULJAMO 303 +#define PROP_INDEX_INETHIOPIC 304 +#define PROP_INDEX_INETHIOPICSUPPLEMENT 305 +#define PROP_INDEX_INCHEROKEE 306 +#define PROP_INDEX_INUNIFIEDCANADIANABORIGINALSYLLABICS 307 +#define PROP_INDEX_INOGHAM 308 +#define PROP_INDEX_INRUNIC 309 +#define PROP_INDEX_INTAGALOG 310 +#define PROP_INDEX_INHANUNOO 311 +#define PROP_INDEX_INBUHID 312 +#define PROP_INDEX_INTAGBANWA 313 +#define PROP_INDEX_INKHMER 314 +#define PROP_INDEX_INMONGOLIAN 315 +#define PROP_INDEX_INUNIFIEDCANADIANABORIGINALSYLLABICSEXTENDED 316 +#define PROP_INDEX_INLIMBU 317 +#define PROP_INDEX_INTAILE 318 +#define PROP_INDEX_INNEWTAILUE 319 +#define PROP_INDEX_INKHMERSYMBOLS 320 +#define PROP_INDEX_INBUGINESE 321 +#define PROP_INDEX_INTAITHAM 322 +#define PROP_INDEX_INCOMBININGDIACRITICALMARKSEXTENDED 323 +#define PROP_INDEX_INBALINESE 324 +#define PROP_INDEX_INSUNDANESE 325 +#define PROP_INDEX_INBATAK 326 +#define PROP_INDEX_INLEPCHA 327 +#define PROP_INDEX_INOLCHIKI 328 +#define PROP_INDEX_INCYRILLICEXTENDEDC 329 +#define PROP_INDEX_INGEORGIANEXTENDED 330 +#define PROP_INDEX_INSUNDANESESUPPLEMENT 331 +#define PROP_INDEX_INVEDICEXTENSIONS 332 +#define PROP_INDEX_INPHONETICEXTENSIONS 333 +#define PROP_INDEX_INPHONETICEXTENSIONSSUPPLEMENT 334 +#define PROP_INDEX_INCOMBININGDIACRITICALMARKSSUPPLEMENT 335 +#define PROP_INDEX_INLATINEXTENDEDADDITIONAL 336 +#define PROP_INDEX_INGREEKEXTENDED 337 +#define PROP_INDEX_INGENERALPUNCTUATION 338 +#define PROP_INDEX_INSUPERSCRIPTSANDSUBSCRIPTS 339 +#define PROP_INDEX_INCURRENCYSYMBOLS 340 +#define PROP_INDEX_INCOMBININGDIACRITICALMARKSFORSYMBOLS 341 +#define PROP_INDEX_INLETTERLIKESYMBOLS 342 +#define PROP_INDEX_INNUMBERFORMS 343 +#define PROP_INDEX_INARROWS 344 +#define PROP_INDEX_INMATHEMATICALOPERATORS 345 +#define PROP_INDEX_INMISCELLANEOUSTECHNICAL 346 +#define PROP_INDEX_INCONTROLPICTURES 347 +#define PROP_INDEX_INOPTICALCHARACTERRECOGNITION 348 +#define PROP_INDEX_INENCLOSEDALPHANUMERICS 349 +#define PROP_INDEX_INBOXDRAWING 350 +#define PROP_INDEX_INBLOCKELEMENTS 351 +#define PROP_INDEX_INGEOMETRICSHAPES 352 +#define PROP_INDEX_INMISCELLANEOUSSYMBOLS 353 +#define PROP_INDEX_INDINGBATS 354 +#define PROP_INDEX_INMISCELLANEOUSMATHEMATICALSYMBOLSA 355 +#define PROP_INDEX_INSUPPLEMENTALARROWSA 356 +#define PROP_INDEX_INBRAILLEPATTERNS 357 +#define PROP_INDEX_INSUPPLEMENTALARROWSB 358 +#define PROP_INDEX_INMISCELLANEOUSMATHEMATICALSYMBOLSB 359 +#define PROP_INDEX_INSUPPLEMENTALMATHEMATICALOPERATORS 360 +#define PROP_INDEX_INMISCELLANEOUSSYMBOLSANDARROWS 361 +#define PROP_INDEX_INGLAGOLITIC 362 +#define PROP_INDEX_INLATINEXTENDEDC 363 +#define PROP_INDEX_INCOPTIC 364 +#define PROP_INDEX_INGEORGIANSUPPLEMENT 365 +#define PROP_INDEX_INTIFINAGH 366 +#define PROP_INDEX_INETHIOPICEXTENDED 367 +#define PROP_INDEX_INCYRILLICEXTENDEDA 368 +#define PROP_INDEX_INSUPPLEMENTALPUNCTUATION 369 +#define PROP_INDEX_INCJKRADICALSSUPPLEMENT 370 +#define PROP_INDEX_INKANGXIRADICALS 371 +#define PROP_INDEX_INIDEOGRAPHICDESCRIPTIONCHARACTERS 372 +#define PROP_INDEX_INCJKSYMBOLSANDPUNCTUATION 373 +#define PROP_INDEX_INHIRAGANA 374 +#define PROP_INDEX_INKATAKANA 375 +#define PROP_INDEX_INBOPOMOFO 376 +#define PROP_INDEX_INHANGULCOMPATIBILITYJAMO 377 +#define PROP_INDEX_INKANBUN 378 +#define PROP_INDEX_INBOPOMOFOEXTENDED 379 +#define PROP_INDEX_INCJKSTROKES 380 +#define PROP_INDEX_INKATAKANAPHONETICEXTENSIONS 381 +#define PROP_INDEX_INENCLOSEDCJKLETTERSANDMONTHS 382 +#define PROP_INDEX_INCJKCOMPATIBILITY 383 +#define PROP_INDEX_INCJKUNIFIEDIDEOGRAPHSEXTENSIONA 384 +#define PROP_INDEX_INYIJINGHEXAGRAMSYMBOLS 385 +#define PROP_INDEX_INCJKUNIFIEDIDEOGRAPHS 386 +#define PROP_INDEX_INYISYLLABLES 387 +#define PROP_INDEX_INYIRADICALS 388 +#define PROP_INDEX_INLISU 389 +#define PROP_INDEX_INVAI 390 +#define PROP_INDEX_INCYRILLICEXTENDEDB 391 +#define PROP_INDEX_INBAMUM 392 +#define PROP_INDEX_INMODIFIERTONELETTERS 393 +#define PROP_INDEX_INLATINEXTENDEDD 394 +#define PROP_INDEX_INSYLOTINAGRI 395 +#define PROP_INDEX_INCOMMONINDICNUMBERFORMS 396 +#define PROP_INDEX_INPHAGSPA 397 +#define PROP_INDEX_INSAURASHTRA 398 +#define PROP_INDEX_INDEVANAGARIEXTENDED 399 +#define PROP_INDEX_INKAYAHLI 400 +#define PROP_INDEX_INREJANG 401 +#define PROP_INDEX_INHANGULJAMOEXTENDEDA 402 +#define PROP_INDEX_INJAVANESE 403 +#define PROP_INDEX_INMYANMAREXTENDEDB 404 +#define PROP_INDEX_INCHAM 405 +#define PROP_INDEX_INMYANMAREXTENDEDA 406 +#define PROP_INDEX_INTAIVIET 407 +#define PROP_INDEX_INMEETEIMAYEKEXTENSIONS 408 +#define PROP_INDEX_INETHIOPICEXTENDEDA 409 +#define PROP_INDEX_INLATINEXTENDEDE 410 +#define PROP_INDEX_INCHEROKEESUPPLEMENT 411 +#define PROP_INDEX_INMEETEIMAYEK 412 +#define PROP_INDEX_INHANGULSYLLABLES 413 +#define PROP_INDEX_INHANGULJAMOEXTENDEDB 414 +#define PROP_INDEX_INHIGHSURROGATES 415 +#define PROP_INDEX_INHIGHPRIVATEUSESURROGATES 416 +#define PROP_INDEX_INLOWSURROGATES 417 +#define PROP_INDEX_INPRIVATEUSEAREA 418 +#define PROP_INDEX_INCJKCOMPATIBILITYIDEOGRAPHS 419 +#define PROP_INDEX_INALPHABETICPRESENTATIONFORMS 420 +#define PROP_INDEX_INARABICPRESENTATIONFORMSA 421 +#define PROP_INDEX_INVARIATIONSELECTORS 422 +#define PROP_INDEX_INVERTICALFORMS 423 +#define PROP_INDEX_INCOMBININGHALFMARKS 424 +#define PROP_INDEX_INCJKCOMPATIBILITYFORMS 425 +#define PROP_INDEX_INSMALLFORMVARIANTS 426 +#define PROP_INDEX_INARABICPRESENTATIONFORMSB 427 +#define PROP_INDEX_INHALFWIDTHANDFULLWIDTHFORMS 428 +#define PROP_INDEX_INSPECIALS 429 +#define PROP_INDEX_INLINEARBSYLLABARY 430 +#define PROP_INDEX_INLINEARBIDEOGRAMS 431 +#define PROP_INDEX_INAEGEANNUMBERS 432 +#define PROP_INDEX_INANCIENTGREEKNUMBERS 433 +#define PROP_INDEX_INANCIENTSYMBOLS 434 +#define PROP_INDEX_INPHAISTOSDISC 435 +#define PROP_INDEX_INLYCIAN 436 +#define PROP_INDEX_INCARIAN 437 +#define PROP_INDEX_INCOPTICEPACTNUMBERS 438 +#define PROP_INDEX_INOLDITALIC 439 +#define PROP_INDEX_INGOTHIC 440 +#define PROP_INDEX_INOLDPERMIC 441 +#define PROP_INDEX_INUGARITIC 442 +#define PROP_INDEX_INOLDPERSIAN 443 +#define PROP_INDEX_INDESERET 444 +#define PROP_INDEX_INSHAVIAN 445 +#define PROP_INDEX_INOSMANYA 446 +#define PROP_INDEX_INOSAGE 447 +#define PROP_INDEX_INELBASAN 448 +#define PROP_INDEX_INCAUCASIANALBANIAN 449 +#define PROP_INDEX_INLINEARA 450 +#define PROP_INDEX_INCYPRIOTSYLLABARY 451 +#define PROP_INDEX_INIMPERIALARAMAIC 452 +#define PROP_INDEX_INPALMYRENE 453 +#define PROP_INDEX_INNABATAEAN 454 +#define PROP_INDEX_INHATRAN 455 +#define PROP_INDEX_INPHOENICIAN 456 +#define PROP_INDEX_INLYDIAN 457 +#define PROP_INDEX_INMEROITICHIEROGLYPHS 458 +#define PROP_INDEX_INMEROITICCURSIVE 459 +#define PROP_INDEX_INKHAROSHTHI 460 +#define PROP_INDEX_INOLDSOUTHARABIAN 461 +#define PROP_INDEX_INOLDNORTHARABIAN 462 +#define PROP_INDEX_INMANICHAEAN 463 +#define PROP_INDEX_INAVESTAN 464 +#define PROP_INDEX_ININSCRIPTIONALPARTHIAN 465 +#define PROP_INDEX_ININSCRIPTIONALPAHLAVI 466 +#define PROP_INDEX_INPSALTERPAHLAVI 467 +#define PROP_INDEX_INOLDTURKIC 468 +#define PROP_INDEX_INOLDHUNGARIAN 469 +#define PROP_INDEX_INHANIFIROHINGYA 470 +#define PROP_INDEX_INRUMINUMERALSYMBOLS 471 +#define PROP_INDEX_INOLDSOGDIAN 472 +#define PROP_INDEX_INSOGDIAN 473 +#define PROP_INDEX_INELYMAIC 474 +#define PROP_INDEX_INBRAHMI 475 +#define PROP_INDEX_INKAITHI 476 +#define PROP_INDEX_INSORASOMPENG 477 +#define PROP_INDEX_INCHAKMA 478 +#define PROP_INDEX_INMAHAJANI 479 +#define PROP_INDEX_INSHARADA 480 +#define PROP_INDEX_INSINHALAARCHAICNUMBERS 481 +#define PROP_INDEX_INKHOJKI 482 +#define PROP_INDEX_INMULTANI 483 +#define PROP_INDEX_INKHUDAWADI 484 +#define PROP_INDEX_INGRANTHA 485 +#define PROP_INDEX_INNEWA 486 +#define PROP_INDEX_INTIRHUTA 487 +#define PROP_INDEX_INSIDDHAM 488 +#define PROP_INDEX_INMODI 489 +#define PROP_INDEX_INMONGOLIANSUPPLEMENT 490 +#define PROP_INDEX_INTAKRI 491 +#define PROP_INDEX_INAHOM 492 +#define PROP_INDEX_INDOGRA 493 +#define PROP_INDEX_INWARANGCITI 494 +#define PROP_INDEX_INNANDINAGARI 495 +#define PROP_INDEX_INZANABAZARSQUARE 496 +#define PROP_INDEX_INSOYOMBO 497 +#define PROP_INDEX_INPAUCINHAU 498 +#define PROP_INDEX_INBHAIKSUKI 499 +#define PROP_INDEX_INMARCHEN 500 +#define PROP_INDEX_INMASARAMGONDI 501 +#define PROP_INDEX_INGUNJALAGONDI 502 +#define PROP_INDEX_INMAKASAR 503 +#define PROP_INDEX_INTAMILSUPPLEMENT 504 +#define PROP_INDEX_INCUNEIFORM 505 +#define PROP_INDEX_INCUNEIFORMNUMBERSANDPUNCTUATION 506 +#define PROP_INDEX_INEARLYDYNASTICCUNEIFORM 507 +#define PROP_INDEX_INEGYPTIANHIEROGLYPHS 508 +#define PROP_INDEX_INEGYPTIANHIEROGLYPHFORMATCONTROLS 509 +#define PROP_INDEX_INANATOLIANHIEROGLYPHS 510 +#define PROP_INDEX_INBAMUMSUPPLEMENT 511 +#define PROP_INDEX_INMRO 512 +#define PROP_INDEX_INBASSAVAH 513 +#define PROP_INDEX_INPAHAWHHMONG 514 +#define PROP_INDEX_INMEDEFAIDRIN 515 +#define PROP_INDEX_INMIAO 516 +#define PROP_INDEX_INIDEOGRAPHICSYMBOLSANDPUNCTUATION 517 +#define PROP_INDEX_INTANGUT 518 +#define PROP_INDEX_INTANGUTCOMPONENTS 519 +#define PROP_INDEX_INKANASUPPLEMENT 520 +#define PROP_INDEX_INKANAEXTENDEDA 521 +#define PROP_INDEX_INSMALLKANAEXTENSION 522 +#define PROP_INDEX_INNUSHU 523 +#define PROP_INDEX_INDUPLOYAN 524 +#define PROP_INDEX_INSHORTHANDFORMATCONTROLS 525 +#define PROP_INDEX_INBYZANTINEMUSICALSYMBOLS 526 +#define PROP_INDEX_INMUSICALSYMBOLS 527 +#define PROP_INDEX_INANCIENTGREEKMUSICALNOTATION 528 +#define PROP_INDEX_INMAYANNUMERALS 529 +#define PROP_INDEX_INTAIXUANJINGSYMBOLS 530 +#define PROP_INDEX_INCOUNTINGRODNUMERALS 531 +#define PROP_INDEX_INMATHEMATICALALPHANUMERICSYMBOLS 532 +#define PROP_INDEX_INSUTTONSIGNWRITING 533 +#define PROP_INDEX_INGLAGOLITICSUPPLEMENT 534 +#define PROP_INDEX_INNYIAKENGPUACHUEHMONG 535 +#define PROP_INDEX_INWANCHO 536 +#define PROP_INDEX_INMENDEKIKAKUI 537 +#define PROP_INDEX_INADLAM 538 +#define PROP_INDEX_ININDICSIYAQNUMBERS 539 +#define PROP_INDEX_INOTTOMANSIYAQNUMBERS 540 +#define PROP_INDEX_INARABICMATHEMATICALALPHABETICSYMBOLS 541 +#define PROP_INDEX_INMAHJONGTILES 542 +#define PROP_INDEX_INDOMINOTILES 543 +#define PROP_INDEX_INPLAYINGCARDS 544 +#define PROP_INDEX_INENCLOSEDALPHANUMERICSUPPLEMENT 545 +#define PROP_INDEX_INENCLOSEDIDEOGRAPHICSUPPLEMENT 546 +#define PROP_INDEX_INMISCELLANEOUSSYMBOLSANDPICTOGRAPHS 547 +#define PROP_INDEX_INEMOTICONS 548 +#define PROP_INDEX_INORNAMENTALDINGBATS 549 +#define PROP_INDEX_INTRANSPORTANDMAPSYMBOLS 550 +#define PROP_INDEX_INALCHEMICALSYMBOLS 551 +#define PROP_INDEX_INGEOMETRICSHAPESEXTENDED 552 +#define PROP_INDEX_INSUPPLEMENTALARROWSC 553 +#define PROP_INDEX_INSUPPLEMENTALSYMBOLSANDPICTOGRAPHS 554 +#define PROP_INDEX_INCHESSSYMBOLS 555 +#define PROP_INDEX_INSYMBOLSANDPICTOGRAPHSEXTENDEDA 556 +#define PROP_INDEX_INCJKUNIFIEDIDEOGRAPHSEXTENSIONB 557 +#define PROP_INDEX_INCJKUNIFIEDIDEOGRAPHSEXTENSIONC 558 +#define PROP_INDEX_INCJKUNIFIEDIDEOGRAPHSEXTENSIOND 559 +#define PROP_INDEX_INCJKUNIFIEDIDEOGRAPHSEXTENSIONE 560 +#define PROP_INDEX_INCJKUNIFIEDIDEOGRAPHSEXTENSIONF 561 +#define PROP_INDEX_INCJKCOMPATIBILITYIDEOGRAPHSSUPPLEMENT 562 +#define PROP_INDEX_INTAGS 563 +#define PROP_INDEX_INVARIATIONSELECTORSSUPPLEMENT 564 +#define PROP_INDEX_INSUPPLEMENTARYPRIVATEUSEAREAA 565 +#define PROP_INDEX_INSUPPLEMENTARYPRIVATEUSEAREAB 566 +#define PROP_INDEX_INNOBLOCK 567 diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_property_data_posix.c b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_property_data_posix.c index b3b72729e2..205b9c0159 100644 --- a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_property_data_posix.c +++ b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_property_data_posix.c @@ -1,5 +1,5 @@ /* 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 */ +/* Command-line: /usr/local/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) \ @@ -42,7 +42,7 @@ CR_NEWLINE[] = { 1, /* PROPERTY: 'Alpha': POSIX [[:Alpha:]] */ static const OnigCodePoint -CR_Alpha[] = { 676, +CR_Alpha[] = { 679, 0x0041, 0x005a, 0x0061, 0x007a, 0x00aa, 0x00aa, @@ -226,16 +226,10 @@ CR_Alpha[] = { 676, 0x0e4d, 0x0e4d, 0x0e81, 0x0e82, 0x0e84, 0x0e84, -0x0e87, 0x0e88, -0x0e8a, 0x0e8a, -0x0e8d, 0x0e8d, -0x0e94, 0x0e97, -0x0e99, 0x0e9f, -0x0ea1, 0x0ea3, +0x0e86, 0x0e8a, +0x0e8c, 0x0ea3, 0x0ea5, 0x0ea5, -0x0ea7, 0x0ea7, -0x0eaa, 0x0eab, -0x0ead, 0x0eb9, +0x0ea7, 0x0eb9, 0x0ebb, 0x0ebd, 0x0ec0, 0x0ec4, 0x0ec6, 0x0ec6, @@ -250,11 +244,8 @@ CR_Alpha[] = { 676, 0x1000, 0x1036, 0x1038, 0x1038, 0x103b, 0x103f, -0x1050, 0x1062, -0x1065, 0x1068, -0x106e, 0x1086, -0x108e, 0x108e, -0x109c, 0x109d, +0x1050, 0x108f, +0x109a, 0x109d, 0x10a0, 0x10c5, 0x10c7, 0x10c7, 0x10cd, 0x10cd, @@ -275,7 +266,6 @@ CR_Alpha[] = { 676, 0x12d8, 0x1310, 0x1312, 0x1315, 0x1318, 0x135a, -0x135f, 0x135f, 0x1380, 0x138f, 0x13a0, 0x13f5, 0x13f8, 0x13fd, @@ -316,7 +306,7 @@ CR_Alpha[] = { 676, 0x1bac, 0x1baf, 0x1bba, 0x1be5, 0x1be7, 0x1bf1, -0x1c00, 0x1c35, +0x1c00, 0x1c36, 0x1c4d, 0x1c4f, 0x1c5a, 0x1c7d, 0x1c80, 0x1c88, @@ -325,6 +315,7 @@ CR_Alpha[] = { 676, 0x1ce9, 0x1cec, 0x1cee, 0x1cf3, 0x1cf5, 0x1cf6, +0x1cfa, 0x1cfa, 0x1d00, 0x1dbf, 0x1de7, 0x1df4, 0x1e00, 0x1f15, @@ -409,31 +400,28 @@ CR_Alpha[] = { 676, 0xa67f, 0xa6ef, 0xa717, 0xa71f, 0xa722, 0xa788, -0xa78b, 0xa7b9, -0xa7f7, 0xa801, -0xa803, 0xa805, -0xa807, 0xa80a, -0xa80c, 0xa827, +0xa78b, 0xa7bf, +0xa7c2, 0xa7c6, +0xa7f7, 0xa805, +0xa807, 0xa827, 0xa840, 0xa873, 0xa880, 0xa8c3, 0xa8c5, 0xa8c5, 0xa8f2, 0xa8f7, 0xa8fb, 0xa8fb, -0xa8fd, 0xa8fe, +0xa8fd, 0xa8ff, 0xa90a, 0xa92a, 0xa930, 0xa952, 0xa960, 0xa97c, 0xa980, 0xa9b2, 0xa9b4, 0xa9bf, 0xa9cf, 0xa9cf, -0xa9e0, 0xa9e4, -0xa9e6, 0xa9ef, +0xa9e0, 0xa9ef, 0xa9fa, 0xa9fe, 0xaa00, 0xaa36, 0xaa40, 0xaa4d, 0xaa60, 0xaa76, -0xaa7a, 0xaa7a, -0xaa7e, 0xaabe, +0xaa7a, 0xaabe, 0xaac0, 0xaac0, 0xaac2, 0xaac2, 0xaadb, 0xaadd, @@ -445,7 +433,7 @@ CR_Alpha[] = { 676, 0xab20, 0xab26, 0xab28, 0xab2e, 0xab30, 0xab5a, -0xab5c, 0xab65, +0xab5c, 0xab67, 0xab70, 0xabea, 0xac00, 0xd7a3, 0xd7b0, 0xd7c6, @@ -533,6 +521,7 @@ CR_Alpha[] = { 676, 0x10f00, 0x10f1c, 0x10f27, 0x10f27, 0x10f30, 0x10f45, +0x10fe0, 0x10ff6, 0x11000, 0x11045, 0x11082, 0x110b8, 0x110d0, 0x110e8, @@ -570,6 +559,7 @@ CR_Alpha[] = { 676, 0x11400, 0x11441, 0x11443, 0x11445, 0x11447, 0x1144a, +0x1145f, 0x1145f, 0x11480, 0x114c1, 0x114c4, 0x114c5, 0x114c7, 0x114c7, @@ -580,15 +570,20 @@ CR_Alpha[] = { 676, 0x11640, 0x11640, 0x11644, 0x11644, 0x11680, 0x116b5, +0x116b8, 0x116b8, 0x11700, 0x1171a, 0x1171d, 0x1172a, 0x11800, 0x11838, 0x118a0, 0x118df, 0x118ff, 0x118ff, +0x119a0, 0x119a7, +0x119aa, 0x119d7, +0x119da, 0x119df, +0x119e1, 0x119e1, +0x119e3, 0x119e4, 0x11a00, 0x11a32, 0x11a35, 0x11a3e, -0x11a50, 0x11a83, -0x11a86, 0x11a97, +0x11a50, 0x11a97, 0x11a9d, 0x11a9d, 0x11ac0, 0x11af8, 0x11c00, 0x11c08, @@ -621,18 +616,21 @@ CR_Alpha[] = { 676, 0x16800, 0x16a38, 0x16a40, 0x16a5e, 0x16ad0, 0x16aed, -0x16b00, 0x16b36, +0x16b00, 0x16b2f, 0x16b40, 0x16b43, 0x16b63, 0x16b77, 0x16b7d, 0x16b8f, 0x16e40, 0x16e7f, -0x16f00, 0x16f44, -0x16f50, 0x16f7e, -0x16f93, 0x16f9f, +0x16f00, 0x16f4a, +0x16f4f, 0x16f87, +0x16f8f, 0x16f9f, 0x16fe0, 0x16fe1, -0x17000, 0x187f1, +0x16fe3, 0x16fe3, +0x17000, 0x187f7, 0x18800, 0x18af2, 0x1b000, 0x1b11e, +0x1b150, 0x1b152, +0x1b164, 0x1b167, 0x1b170, 0x1b2fb, 0x1bc00, 0x1bc6a, 0x1bc70, 0x1bc7c, @@ -674,9 +672,14 @@ CR_Alpha[] = { 676, 0x1e01b, 0x1e021, 0x1e023, 0x1e024, 0x1e026, 0x1e02a, +0x1e100, 0x1e12c, +0x1e137, 0x1e13d, +0x1e14e, 0x1e14e, +0x1e2c0, 0x1e2eb, 0x1e800, 0x1e8c4, 0x1e900, 0x1e943, 0x1e947, 0x1e947, +0x1e94b, 0x1e94b, 0x1ee00, 0x1ee03, 0x1ee05, 0x1ee1f, 0x1ee21, 0x1ee22, @@ -743,7 +746,7 @@ CR_Cntrl[] = { 2, /* PROPERTY: 'Digit': POSIX [[:Digit:]] */ static const OnigCodePoint -CR_Digit[] = { 57, +CR_Digit[] = { 59, 0x0030, 0x0039, 0x0660, 0x0669, 0x06f0, 0x06f9, @@ -800,12 +803,14 @@ CR_Digit[] = { 57, 0x16a60, 0x16a69, 0x16b50, 0x16b59, 0x1d7ce, 0x1d7ff, +0x1e140, 0x1e149, +0x1e2f0, 0x1e2f9, 0x1e950, 0x1e959, }; /* END of CR_Digit */ /* PROPERTY: 'Graph': POSIX [[:Graph:]] */ static const OnigCodePoint -CR_Graph[] = { 663, +CR_Graph[] = { 671, 0x0021, 0x007e, 0x00a1, 0x0377, 0x037a, 0x037f, @@ -916,7 +921,7 @@ CR_Graph[] = { 663, 0x0c58, 0x0c5a, 0x0c60, 0x0c63, 0x0c66, 0x0c6f, -0x0c78, 0x0c8c, +0x0c77, 0x0c8c, 0x0c8e, 0x0c90, 0x0c92, 0x0ca8, 0x0caa, 0x0cb3, @@ -953,17 +958,10 @@ CR_Graph[] = { 663, 0x0e3f, 0x0e5b, 0x0e81, 0x0e82, 0x0e84, 0x0e84, -0x0e87, 0x0e88, -0x0e8a, 0x0e8a, -0x0e8d, 0x0e8d, -0x0e94, 0x0e97, -0x0e99, 0x0e9f, -0x0ea1, 0x0ea3, +0x0e86, 0x0e8a, +0x0e8c, 0x0ea3, 0x0ea5, 0x0ea5, -0x0ea7, 0x0ea7, -0x0eaa, 0x0eab, -0x0ead, 0x0eb9, -0x0ebb, 0x0ebd, +0x0ea7, 0x0ebd, 0x0ec0, 0x0ec4, 0x0ec6, 0x0ec6, 0x0ec8, 0x0ecd, @@ -1040,7 +1038,7 @@ CR_Graph[] = { 663, 0x1c4d, 0x1c88, 0x1c90, 0x1cba, 0x1cbd, 0x1cc7, -0x1cd0, 0x1cf9, +0x1cd0, 0x1cfa, 0x1d00, 0x1df9, 0x1dfb, 0x1f15, 0x1f18, 0x1f1d, @@ -1072,9 +1070,7 @@ CR_Graph[] = { 663, 0x2440, 0x244a, 0x2460, 0x2b73, 0x2b76, 0x2b95, -0x2b98, 0x2bc8, -0x2bca, 0x2bfe, -0x2c00, 0x2c2e, +0x2b98, 0x2c2e, 0x2c30, 0x2c5e, 0x2c60, 0x2cf3, 0x2cf9, 0x2d25, @@ -1091,7 +1087,7 @@ CR_Graph[] = { 663, 0x2dc8, 0x2dce, 0x2dd0, 0x2dd6, 0x2dd8, 0x2dde, -0x2de0, 0x2e4e, +0x2de0, 0x2e4f, 0x2e80, 0x2e99, 0x2e9b, 0x2ef3, 0x2f00, 0x2fd5, @@ -1104,14 +1100,14 @@ CR_Graph[] = { 663, 0x3190, 0x31ba, 0x31c0, 0x31e3, 0x31f0, 0x321e, -0x3220, 0x32fe, -0x3300, 0x4db5, +0x3220, 0x4db5, 0x4dc0, 0x9fef, 0xa000, 0xa48c, 0xa490, 0xa4c6, 0xa4d0, 0xa62b, 0xa640, 0xa6f7, -0xa700, 0xa7b9, +0xa700, 0xa7bf, +0xa7c2, 0xa7c6, 0xa7f7, 0xa82b, 0xa830, 0xa839, 0xa840, 0xa877, @@ -1132,7 +1128,7 @@ CR_Graph[] = { 663, 0xab11, 0xab16, 0xab20, 0xab26, 0xab28, 0xab2e, -0xab30, 0xab65, +0xab30, 0xab67, 0xab70, 0xabed, 0xabf0, 0xabf9, 0xac00, 0xd7a3, @@ -1239,6 +1235,7 @@ CR_Graph[] = { 663, 0x10e60, 0x10e7e, 0x10f00, 0x10f27, 0x10f30, 0x10f59, +0x10fe0, 0x10ff6, 0x11000, 0x1104d, 0x11052, 0x1106f, 0x1107f, 0x110c1, @@ -1277,7 +1274,7 @@ CR_Graph[] = { 663, 0x11370, 0x11374, 0x11400, 0x11459, 0x1145b, 0x1145b, -0x1145d, 0x1145e, +0x1145d, 0x1145f, 0x11480, 0x114c7, 0x114d0, 0x114d9, 0x11580, 0x115b5, @@ -1285,7 +1282,7 @@ CR_Graph[] = { 663, 0x11600, 0x11644, 0x11650, 0x11659, 0x11660, 0x1166c, -0x11680, 0x116b7, +0x11680, 0x116b8, 0x116c0, 0x116c9, 0x11700, 0x1171a, 0x1171d, 0x1172b, @@ -1293,9 +1290,11 @@ CR_Graph[] = { 663, 0x11800, 0x1183b, 0x118a0, 0x118f2, 0x118ff, 0x118ff, +0x119a0, 0x119a7, +0x119aa, 0x119d7, +0x119da, 0x119e4, 0x11a00, 0x11a47, -0x11a50, 0x11a83, -0x11a86, 0x11aa2, +0x11a50, 0x11aa2, 0x11ac0, 0x11af8, 0x11c00, 0x11c08, 0x11c0a, 0x11c36, @@ -1318,11 +1317,13 @@ CR_Graph[] = { 663, 0x11d93, 0x11d98, 0x11da0, 0x11da9, 0x11ee0, 0x11ef8, -0x12000, 0x12399, +0x11fc0, 0x11ff1, +0x11fff, 0x12399, 0x12400, 0x1246e, 0x12470, 0x12474, 0x12480, 0x12543, 0x13000, 0x1342e, +0x13430, 0x13438, 0x14400, 0x14646, 0x16800, 0x16a38, 0x16a40, 0x16a5e, @@ -1336,13 +1337,15 @@ CR_Graph[] = { 663, 0x16b63, 0x16b77, 0x16b7d, 0x16b8f, 0x16e40, 0x16e9a, -0x16f00, 0x16f44, -0x16f50, 0x16f7e, +0x16f00, 0x16f4a, +0x16f4f, 0x16f87, 0x16f8f, 0x16f9f, -0x16fe0, 0x16fe1, -0x17000, 0x187f1, +0x16fe0, 0x16fe3, +0x17000, 0x187f7, 0x18800, 0x18af2, 0x1b000, 0x1b11e, +0x1b150, 0x1b152, +0x1b164, 0x1b167, 0x1b170, 0x1b2fb, 0x1bc00, 0x1bc6a, 0x1bc70, 0x1bc7c, @@ -1384,12 +1387,19 @@ CR_Graph[] = { 663, 0x1e01b, 0x1e021, 0x1e023, 0x1e024, 0x1e026, 0x1e02a, +0x1e100, 0x1e12c, +0x1e130, 0x1e13d, +0x1e140, 0x1e149, +0x1e14e, 0x1e14f, +0x1e2c0, 0x1e2f9, +0x1e2ff, 0x1e2ff, 0x1e800, 0x1e8c4, 0x1e8c7, 0x1e8d6, -0x1e900, 0x1e94a, +0x1e900, 0x1e94b, 0x1e950, 0x1e959, 0x1e95e, 0x1e95f, 0x1ec71, 0x1ecb4, +0x1ed01, 0x1ed3d, 0x1ee00, 0x1ee03, 0x1ee05, 0x1ee1f, 0x1ee21, 0x1ee22, @@ -1431,33 +1441,36 @@ CR_Graph[] = { 663, 0x1f0c1, 0x1f0cf, 0x1f0d1, 0x1f0f5, 0x1f100, 0x1f10c, -0x1f110, 0x1f16b, +0x1f110, 0x1f16c, 0x1f170, 0x1f1ac, 0x1f1e6, 0x1f202, 0x1f210, 0x1f23b, 0x1f240, 0x1f248, 0x1f250, 0x1f251, 0x1f260, 0x1f265, -0x1f300, 0x1f6d4, +0x1f300, 0x1f6d5, 0x1f6e0, 0x1f6ec, -0x1f6f0, 0x1f6f9, +0x1f6f0, 0x1f6fa, 0x1f700, 0x1f773, 0x1f780, 0x1f7d8, +0x1f7e0, 0x1f7eb, 0x1f800, 0x1f80b, 0x1f810, 0x1f847, 0x1f850, 0x1f859, 0x1f860, 0x1f887, 0x1f890, 0x1f8ad, 0x1f900, 0x1f90b, -0x1f910, 0x1f93e, -0x1f940, 0x1f970, +0x1f90d, 0x1f971, 0x1f973, 0x1f976, -0x1f97a, 0x1f97a, -0x1f97c, 0x1f9a2, -0x1f9b0, 0x1f9b9, -0x1f9c0, 0x1f9c2, -0x1f9d0, 0x1f9ff, +0x1f97a, 0x1f9a2, +0x1f9a5, 0x1f9aa, +0x1f9ae, 0x1f9ca, +0x1f9cd, 0x1fa53, 0x1fa60, 0x1fa6d, +0x1fa70, 0x1fa73, +0x1fa78, 0x1fa7a, +0x1fa80, 0x1fa82, +0x1fa90, 0x1fa95, 0x20000, 0x2a6d6, 0x2a700, 0x2b734, 0x2b740, 0x2b81d, @@ -1473,7 +1486,7 @@ CR_Graph[] = { 663, /* PROPERTY: 'Lower': POSIX [[:Lower:]] */ static const OnigCodePoint -CR_Lower[] = { 645, +CR_Lower[] = { 649, 0x0061, 0x007a, 0x00aa, 0x00aa, 0x00b5, 0x00b5, @@ -2078,9 +2091,13 @@ CR_Lower[] = { 645, 0xa7b5, 0xa7b5, 0xa7b7, 0xa7b7, 0xa7b9, 0xa7b9, +0xa7bb, 0xa7bb, +0xa7bd, 0xa7bd, +0xa7bf, 0xa7bf, +0xa7c3, 0xa7c3, 0xa7f8, 0xa7fa, 0xab30, 0xab5a, -0xab5c, 0xab65, +0xab5c, 0xab67, 0xab70, 0xabbf, 0xfb00, 0xfb06, 0xfb13, 0xfb17, @@ -2123,7 +2140,7 @@ CR_Lower[] = { 645, /* PROPERTY: 'Print': POSIX [[:Print:]] */ static const OnigCodePoint -CR_Print[] = { 660, +CR_Print[] = { 668, 0x0020, 0x007e, 0x00a0, 0x0377, 0x037a, 0x037f, @@ -2234,7 +2251,7 @@ CR_Print[] = { 660, 0x0c58, 0x0c5a, 0x0c60, 0x0c63, 0x0c66, 0x0c6f, -0x0c78, 0x0c8c, +0x0c77, 0x0c8c, 0x0c8e, 0x0c90, 0x0c92, 0x0ca8, 0x0caa, 0x0cb3, @@ -2271,17 +2288,10 @@ CR_Print[] = { 660, 0x0e3f, 0x0e5b, 0x0e81, 0x0e82, 0x0e84, 0x0e84, -0x0e87, 0x0e88, -0x0e8a, 0x0e8a, -0x0e8d, 0x0e8d, -0x0e94, 0x0e97, -0x0e99, 0x0e9f, -0x0ea1, 0x0ea3, +0x0e86, 0x0e8a, +0x0e8c, 0x0ea3, 0x0ea5, 0x0ea5, -0x0ea7, 0x0ea7, -0x0eaa, 0x0eab, -0x0ead, 0x0eb9, -0x0ebb, 0x0ebd, +0x0ea7, 0x0ebd, 0x0ec0, 0x0ec4, 0x0ec6, 0x0ec6, 0x0ec8, 0x0ecd, @@ -2357,7 +2367,7 @@ CR_Print[] = { 660, 0x1c4d, 0x1c88, 0x1c90, 0x1cba, 0x1cbd, 0x1cc7, -0x1cd0, 0x1cf9, +0x1cd0, 0x1cfa, 0x1d00, 0x1df9, 0x1dfb, 0x1f15, 0x1f18, 0x1f1d, @@ -2387,9 +2397,7 @@ CR_Print[] = { 660, 0x2440, 0x244a, 0x2460, 0x2b73, 0x2b76, 0x2b95, -0x2b98, 0x2bc8, -0x2bca, 0x2bfe, -0x2c00, 0x2c2e, +0x2b98, 0x2c2e, 0x2c30, 0x2c5e, 0x2c60, 0x2cf3, 0x2cf9, 0x2d25, @@ -2406,7 +2414,7 @@ CR_Print[] = { 660, 0x2dc8, 0x2dce, 0x2dd0, 0x2dd6, 0x2dd8, 0x2dde, -0x2de0, 0x2e4e, +0x2de0, 0x2e4f, 0x2e80, 0x2e99, 0x2e9b, 0x2ef3, 0x2f00, 0x2fd5, @@ -2419,14 +2427,14 @@ CR_Print[] = { 660, 0x3190, 0x31ba, 0x31c0, 0x31e3, 0x31f0, 0x321e, -0x3220, 0x32fe, -0x3300, 0x4db5, +0x3220, 0x4db5, 0x4dc0, 0x9fef, 0xa000, 0xa48c, 0xa490, 0xa4c6, 0xa4d0, 0xa62b, 0xa640, 0xa6f7, -0xa700, 0xa7b9, +0xa700, 0xa7bf, +0xa7c2, 0xa7c6, 0xa7f7, 0xa82b, 0xa830, 0xa839, 0xa840, 0xa877, @@ -2447,7 +2455,7 @@ CR_Print[] = { 660, 0xab11, 0xab16, 0xab20, 0xab26, 0xab28, 0xab2e, -0xab30, 0xab65, +0xab30, 0xab67, 0xab70, 0xabed, 0xabf0, 0xabf9, 0xac00, 0xd7a3, @@ -2554,6 +2562,7 @@ CR_Print[] = { 660, 0x10e60, 0x10e7e, 0x10f00, 0x10f27, 0x10f30, 0x10f59, +0x10fe0, 0x10ff6, 0x11000, 0x1104d, 0x11052, 0x1106f, 0x1107f, 0x110c1, @@ -2592,7 +2601,7 @@ CR_Print[] = { 660, 0x11370, 0x11374, 0x11400, 0x11459, 0x1145b, 0x1145b, -0x1145d, 0x1145e, +0x1145d, 0x1145f, 0x11480, 0x114c7, 0x114d0, 0x114d9, 0x11580, 0x115b5, @@ -2600,7 +2609,7 @@ CR_Print[] = { 660, 0x11600, 0x11644, 0x11650, 0x11659, 0x11660, 0x1166c, -0x11680, 0x116b7, +0x11680, 0x116b8, 0x116c0, 0x116c9, 0x11700, 0x1171a, 0x1171d, 0x1172b, @@ -2608,9 +2617,11 @@ CR_Print[] = { 660, 0x11800, 0x1183b, 0x118a0, 0x118f2, 0x118ff, 0x118ff, +0x119a0, 0x119a7, +0x119aa, 0x119d7, +0x119da, 0x119e4, 0x11a00, 0x11a47, -0x11a50, 0x11a83, -0x11a86, 0x11aa2, +0x11a50, 0x11aa2, 0x11ac0, 0x11af8, 0x11c00, 0x11c08, 0x11c0a, 0x11c36, @@ -2633,11 +2644,13 @@ CR_Print[] = { 660, 0x11d93, 0x11d98, 0x11da0, 0x11da9, 0x11ee0, 0x11ef8, -0x12000, 0x12399, +0x11fc0, 0x11ff1, +0x11fff, 0x12399, 0x12400, 0x1246e, 0x12470, 0x12474, 0x12480, 0x12543, 0x13000, 0x1342e, +0x13430, 0x13438, 0x14400, 0x14646, 0x16800, 0x16a38, 0x16a40, 0x16a5e, @@ -2651,13 +2664,15 @@ CR_Print[] = { 660, 0x16b63, 0x16b77, 0x16b7d, 0x16b8f, 0x16e40, 0x16e9a, -0x16f00, 0x16f44, -0x16f50, 0x16f7e, +0x16f00, 0x16f4a, +0x16f4f, 0x16f87, 0x16f8f, 0x16f9f, -0x16fe0, 0x16fe1, -0x17000, 0x187f1, +0x16fe0, 0x16fe3, +0x17000, 0x187f7, 0x18800, 0x18af2, 0x1b000, 0x1b11e, +0x1b150, 0x1b152, +0x1b164, 0x1b167, 0x1b170, 0x1b2fb, 0x1bc00, 0x1bc6a, 0x1bc70, 0x1bc7c, @@ -2699,12 +2714,19 @@ CR_Print[] = { 660, 0x1e01b, 0x1e021, 0x1e023, 0x1e024, 0x1e026, 0x1e02a, +0x1e100, 0x1e12c, +0x1e130, 0x1e13d, +0x1e140, 0x1e149, +0x1e14e, 0x1e14f, +0x1e2c0, 0x1e2f9, +0x1e2ff, 0x1e2ff, 0x1e800, 0x1e8c4, 0x1e8c7, 0x1e8d6, -0x1e900, 0x1e94a, +0x1e900, 0x1e94b, 0x1e950, 0x1e959, 0x1e95e, 0x1e95f, 0x1ec71, 0x1ecb4, +0x1ed01, 0x1ed3d, 0x1ee00, 0x1ee03, 0x1ee05, 0x1ee1f, 0x1ee21, 0x1ee22, @@ -2746,33 +2768,36 @@ CR_Print[] = { 660, 0x1f0c1, 0x1f0cf, 0x1f0d1, 0x1f0f5, 0x1f100, 0x1f10c, -0x1f110, 0x1f16b, +0x1f110, 0x1f16c, 0x1f170, 0x1f1ac, 0x1f1e6, 0x1f202, 0x1f210, 0x1f23b, 0x1f240, 0x1f248, 0x1f250, 0x1f251, 0x1f260, 0x1f265, -0x1f300, 0x1f6d4, +0x1f300, 0x1f6d5, 0x1f6e0, 0x1f6ec, -0x1f6f0, 0x1f6f9, +0x1f6f0, 0x1f6fa, 0x1f700, 0x1f773, 0x1f780, 0x1f7d8, +0x1f7e0, 0x1f7eb, 0x1f800, 0x1f80b, 0x1f810, 0x1f847, 0x1f850, 0x1f859, 0x1f860, 0x1f887, 0x1f890, 0x1f8ad, 0x1f900, 0x1f90b, -0x1f910, 0x1f93e, -0x1f940, 0x1f970, +0x1f90d, 0x1f971, 0x1f973, 0x1f976, -0x1f97a, 0x1f97a, -0x1f97c, 0x1f9a2, -0x1f9b0, 0x1f9b9, -0x1f9c0, 0x1f9c2, -0x1f9d0, 0x1f9ff, +0x1f97a, 0x1f9a2, +0x1f9a5, 0x1f9aa, +0x1f9ae, 0x1f9ca, +0x1f9cd, 0x1fa53, 0x1fa60, 0x1fa6d, +0x1fa70, 0x1fa73, +0x1fa78, 0x1fa7a, +0x1fa80, 0x1fa82, +0x1fa90, 0x1fa95, 0x20000, 0x2a6d6, 0x2a700, 0x2b734, 0x2b740, 0x2b81d, @@ -2788,7 +2813,7 @@ CR_Print[] = { 660, /* PROPERTY: 'Punct': POSIX [[:Punct:]] */ static const OnigCodePoint -CR_Punct[] = { 178, +CR_Punct[] = { 182, 0x0021, 0x0023, 0x0025, 0x002a, 0x002c, 0x002f, @@ -2828,6 +2853,7 @@ CR_Punct[] = { 178, 0x09fd, 0x09fd, 0x0a76, 0x0a76, 0x0af0, 0x0af0, +0x0c77, 0x0c77, 0x0c84, 0x0c84, 0x0df4, 0x0df4, 0x0e4f, 0x0e4f, @@ -2842,7 +2868,7 @@ CR_Punct[] = { 178, 0x10fb, 0x10fb, 0x1360, 0x1368, 0x1400, 0x1400, -0x166d, 0x166e, +0x166e, 0x166e, 0x169b, 0x169c, 0x16eb, 0x16ed, 0x1735, 0x1736, @@ -2877,7 +2903,7 @@ CR_Punct[] = { 178, 0x2cfe, 0x2cff, 0x2d70, 0x2d70, 0x2e00, 0x2e2e, -0x2e30, 0x2e4e, +0x2e30, 0x2e4f, 0x3001, 0x3003, 0x3008, 0x3011, 0x3014, 0x301f, @@ -2952,18 +2978,21 @@ CR_Punct[] = { 178, 0x11660, 0x1166c, 0x1173c, 0x1173e, 0x1183b, 0x1183b, +0x119e2, 0x119e2, 0x11a3f, 0x11a46, 0x11a9a, 0x11a9c, 0x11a9e, 0x11aa2, 0x11c41, 0x11c45, 0x11c70, 0x11c71, 0x11ef7, 0x11ef8, +0x11fff, 0x11fff, 0x12470, 0x12474, 0x16a6e, 0x16a6f, 0x16af5, 0x16af5, 0x16b37, 0x16b3b, 0x16b44, 0x16b44, 0x16e97, 0x16e9a, +0x16fe2, 0x16fe2, 0x1bc9f, 0x1bc9f, 0x1da87, 0x1da8b, 0x1e95e, 0x1e95f, @@ -2986,7 +3015,7 @@ CR_Space[] = { 10, /* PROPERTY: 'Upper': POSIX [[:Upper:]] */ static const OnigCodePoint -CR_Upper[] = { 636, +CR_Upper[] = { 641, 0x0041, 0x005a, 0x00c0, 0x00d6, 0x00d8, 0x00de, @@ -3582,6 +3611,11 @@ CR_Upper[] = { 636, 0xa7b0, 0xa7b4, 0xa7b6, 0xa7b6, 0xa7b8, 0xa7b8, +0xa7ba, 0xa7ba, +0xa7bc, 0xa7bc, +0xa7be, 0xa7be, +0xa7c2, 0xa7c2, +0xa7c4, 0xa7c6, 0xff21, 0xff3a, 0x10400, 0x10427, 0x104b0, 0x104d3, @@ -3635,7 +3669,7 @@ CR_XDigit[] = { 3, /* PROPERTY: 'Word': POSIX [[:Word:]] */ static const OnigCodePoint -CR_Word[] = { 710, +CR_Word[] = { 716, 0x0030, 0x0039, 0x0041, 0x005a, 0x005f, 0x005f, @@ -3820,17 +3854,10 @@ CR_Word[] = { 710, 0x0e50, 0x0e59, 0x0e81, 0x0e82, 0x0e84, 0x0e84, -0x0e87, 0x0e88, -0x0e8a, 0x0e8a, -0x0e8d, 0x0e8d, -0x0e94, 0x0e97, -0x0e99, 0x0e9f, -0x0ea1, 0x0ea3, +0x0e86, 0x0e8a, +0x0e8c, 0x0ea3, 0x0ea5, 0x0ea5, -0x0ea7, 0x0ea7, -0x0eaa, 0x0eab, -0x0ead, 0x0eb9, -0x0ebb, 0x0ebd, +0x0ea7, 0x0ebd, 0x0ec0, 0x0ec4, 0x0ec6, 0x0ec6, 0x0ec8, 0x0ecd, @@ -3921,7 +3948,7 @@ CR_Word[] = { 710, 0x1c90, 0x1cba, 0x1cbd, 0x1cbf, 0x1cd0, 0x1cd2, -0x1cd4, 0x1cf9, +0x1cd4, 0x1cfa, 0x1d00, 0x1df9, 0x1dfb, 0x1f15, 0x1f18, 0x1f1d, @@ -4007,7 +4034,8 @@ CR_Word[] = { 710, 0xa67f, 0xa6f1, 0xa717, 0xa71f, 0xa722, 0xa788, -0xa78b, 0xa7b9, +0xa78b, 0xa7bf, +0xa7c2, 0xa7c6, 0xa7f7, 0xa827, 0xa840, 0xa873, 0xa880, 0xa8c5, @@ -4034,7 +4062,7 @@ CR_Word[] = { 710, 0xab20, 0xab26, 0xab28, 0xab2e, 0xab30, 0xab5a, -0xab5c, 0xab65, +0xab5c, 0xab67, 0xab70, 0xabea, 0xabec, 0xabed, 0xabf0, 0xabf9, @@ -4136,6 +4164,7 @@ CR_Word[] = { 710, 0x10f00, 0x10f1c, 0x10f27, 0x10f27, 0x10f30, 0x10f50, +0x10fe0, 0x10ff6, 0x11000, 0x11046, 0x11066, 0x1106f, 0x1107f, 0x110ba, @@ -4177,7 +4206,7 @@ CR_Word[] = { 710, 0x11370, 0x11374, 0x11400, 0x1144a, 0x11450, 0x11459, -0x1145e, 0x1145e, +0x1145e, 0x1145f, 0x11480, 0x114c5, 0x114c7, 0x114c7, 0x114d0, 0x114d9, @@ -4187,7 +4216,7 @@ CR_Word[] = { 710, 0x11600, 0x11640, 0x11644, 0x11644, 0x11650, 0x11659, -0x11680, 0x116b7, +0x11680, 0x116b8, 0x116c0, 0x116c9, 0x11700, 0x1171a, 0x1171d, 0x1172b, @@ -4195,10 +4224,13 @@ CR_Word[] = { 710, 0x11800, 0x1183a, 0x118a0, 0x118e9, 0x118ff, 0x118ff, +0x119a0, 0x119a7, +0x119aa, 0x119d7, +0x119da, 0x119e1, +0x119e3, 0x119e4, 0x11a00, 0x11a3e, 0x11a47, 0x11a47, -0x11a50, 0x11a83, -0x11a86, 0x11a99, +0x11a50, 0x11a99, 0x11a9d, 0x11a9d, 0x11ac0, 0x11af8, 0x11c00, 0x11c08, @@ -4238,13 +4270,16 @@ CR_Word[] = { 710, 0x16b63, 0x16b77, 0x16b7d, 0x16b8f, 0x16e40, 0x16e7f, -0x16f00, 0x16f44, -0x16f50, 0x16f7e, +0x16f00, 0x16f4a, +0x16f4f, 0x16f87, 0x16f8f, 0x16f9f, 0x16fe0, 0x16fe1, -0x17000, 0x187f1, +0x16fe3, 0x16fe3, +0x17000, 0x187f7, 0x18800, 0x18af2, 0x1b000, 0x1b11e, +0x1b150, 0x1b152, +0x1b164, 0x1b167, 0x1b170, 0x1b2fb, 0x1bc00, 0x1bc6a, 0x1bc70, 0x1bc7c, @@ -4299,9 +4334,14 @@ CR_Word[] = { 710, 0x1e01b, 0x1e021, 0x1e023, 0x1e024, 0x1e026, 0x1e02a, +0x1e100, 0x1e12c, +0x1e130, 0x1e13d, +0x1e140, 0x1e149, +0x1e14e, 0x1e14e, +0x1e2c0, 0x1e2f9, 0x1e800, 0x1e8c4, 0x1e8d0, 0x1e8d6, -0x1e900, 0x1e94a, +0x1e900, 0x1e94b, 0x1e950, 0x1e959, 0x1ee00, 0x1ee03, 0x1ee05, 0x1ee1f, @@ -4350,7 +4390,7 @@ CR_Word[] = { 710, /* PROPERTY: 'Alnum': POSIX [[:Alnum:]] */ static const OnigCodePoint -CR_Alnum[] = { 713, +CR_Alnum[] = { 715, 0x0030, 0x0039, 0x0041, 0x005a, 0x0061, 0x007a, @@ -4543,16 +4583,10 @@ CR_Alnum[] = { 713, 0x0e50, 0x0e59, 0x0e81, 0x0e82, 0x0e84, 0x0e84, -0x0e87, 0x0e88, -0x0e8a, 0x0e8a, -0x0e8d, 0x0e8d, -0x0e94, 0x0e97, -0x0e99, 0x0e9f, -0x0ea1, 0x0ea3, +0x0e86, 0x0e8a, +0x0e8c, 0x0ea3, 0x0ea5, 0x0ea5, -0x0ea7, 0x0ea7, -0x0eaa, 0x0eab, -0x0ead, 0x0eb9, +0x0ea7, 0x0eb9, 0x0ebb, 0x0ebd, 0x0ec0, 0x0ec4, 0x0ec6, 0x0ec6, @@ -4569,12 +4603,7 @@ CR_Alnum[] = { 713, 0x1000, 0x1036, 0x1038, 0x1038, 0x103b, 0x1049, -0x1050, 0x1062, -0x1065, 0x1068, -0x106e, 0x1086, -0x108e, 0x108e, -0x1090, 0x1099, -0x109c, 0x109d, +0x1050, 0x109d, 0x10a0, 0x10c5, 0x10c7, 0x10c7, 0x10cd, 0x10cd, @@ -4595,7 +4624,6 @@ CR_Alnum[] = { 713, 0x12d8, 0x1310, 0x1312, 0x1315, 0x1318, 0x135a, -0x135f, 0x135f, 0x1380, 0x138f, 0x13a0, 0x13f5, 0x13f8, 0x13fd, @@ -4641,7 +4669,7 @@ CR_Alnum[] = { 713, 0x1b80, 0x1ba9, 0x1bac, 0x1be5, 0x1be7, 0x1bf1, -0x1c00, 0x1c35, +0x1c00, 0x1c36, 0x1c40, 0x1c49, 0x1c4d, 0x1c7d, 0x1c80, 0x1c88, @@ -4650,6 +4678,7 @@ CR_Alnum[] = { 713, 0x1ce9, 0x1cec, 0x1cee, 0x1cf3, 0x1cf5, 0x1cf6, +0x1cfa, 0x1cfa, 0x1d00, 0x1dbf, 0x1de7, 0x1df4, 0x1e00, 0x1f15, @@ -4733,32 +4762,28 @@ CR_Alnum[] = { 713, 0xa67f, 0xa6ef, 0xa717, 0xa71f, 0xa722, 0xa788, -0xa78b, 0xa7b9, -0xa7f7, 0xa801, -0xa803, 0xa805, -0xa807, 0xa80a, -0xa80c, 0xa827, +0xa78b, 0xa7bf, +0xa7c2, 0xa7c6, +0xa7f7, 0xa805, +0xa807, 0xa827, 0xa840, 0xa873, 0xa880, 0xa8c3, 0xa8c5, 0xa8c5, 0xa8d0, 0xa8d9, 0xa8f2, 0xa8f7, 0xa8fb, 0xa8fb, -0xa8fd, 0xa8fe, -0xa900, 0xa92a, +0xa8fd, 0xa92a, 0xa930, 0xa952, 0xa960, 0xa97c, 0xa980, 0xa9b2, 0xa9b4, 0xa9bf, 0xa9cf, 0xa9d9, -0xa9e0, 0xa9e4, -0xa9e6, 0xa9fe, +0xa9e0, 0xa9fe, 0xaa00, 0xaa36, 0xaa40, 0xaa4d, 0xaa50, 0xaa59, 0xaa60, 0xaa76, -0xaa7a, 0xaa7a, -0xaa7e, 0xaabe, +0xaa7a, 0xaabe, 0xaac0, 0xaac0, 0xaac2, 0xaac2, 0xaadb, 0xaadd, @@ -4770,7 +4795,7 @@ CR_Alnum[] = { 713, 0xab20, 0xab26, 0xab28, 0xab2e, 0xab30, 0xab5a, -0xab5c, 0xab65, +0xab5c, 0xab67, 0xab70, 0xabea, 0xabf0, 0xabf9, 0xac00, 0xd7a3, @@ -4862,6 +4887,7 @@ CR_Alnum[] = { 713, 0x10f00, 0x10f1c, 0x10f27, 0x10f27, 0x10f30, 0x10f45, +0x10fe0, 0x10ff6, 0x11000, 0x11045, 0x11066, 0x1106f, 0x11082, 0x110b8, @@ -4904,6 +4930,7 @@ CR_Alnum[] = { 713, 0x11443, 0x11445, 0x11447, 0x1144a, 0x11450, 0x11459, +0x1145f, 0x1145f, 0x11480, 0x114c1, 0x114c4, 0x114c5, 0x114c7, 0x114c7, @@ -4916,6 +4943,7 @@ CR_Alnum[] = { 713, 0x11644, 0x11644, 0x11650, 0x11659, 0x11680, 0x116b5, +0x116b8, 0x116b8, 0x116c0, 0x116c9, 0x11700, 0x1171a, 0x1171d, 0x1172a, @@ -4923,10 +4951,14 @@ CR_Alnum[] = { 713, 0x11800, 0x11838, 0x118a0, 0x118e9, 0x118ff, 0x118ff, +0x119a0, 0x119a7, +0x119aa, 0x119d7, +0x119da, 0x119df, +0x119e1, 0x119e1, +0x119e3, 0x119e4, 0x11a00, 0x11a32, 0x11a35, 0x11a3e, -0x11a50, 0x11a83, -0x11a86, 0x11a97, +0x11a50, 0x11a97, 0x11a9d, 0x11a9d, 0x11ac0, 0x11af8, 0x11c00, 0x11c08, @@ -4963,19 +4995,22 @@ CR_Alnum[] = { 713, 0x16a40, 0x16a5e, 0x16a60, 0x16a69, 0x16ad0, 0x16aed, -0x16b00, 0x16b36, +0x16b00, 0x16b2f, 0x16b40, 0x16b43, 0x16b50, 0x16b59, 0x16b63, 0x16b77, 0x16b7d, 0x16b8f, 0x16e40, 0x16e7f, -0x16f00, 0x16f44, -0x16f50, 0x16f7e, -0x16f93, 0x16f9f, +0x16f00, 0x16f4a, +0x16f4f, 0x16f87, +0x16f8f, 0x16f9f, 0x16fe0, 0x16fe1, -0x17000, 0x187f1, +0x16fe3, 0x16fe3, +0x17000, 0x187f7, 0x18800, 0x18af2, 0x1b000, 0x1b11e, +0x1b150, 0x1b152, +0x1b164, 0x1b167, 0x1b170, 0x1b2fb, 0x1bc00, 0x1bc6a, 0x1bc70, 0x1bc7c, @@ -5018,9 +5053,16 @@ CR_Alnum[] = { 713, 0x1e01b, 0x1e021, 0x1e023, 0x1e024, 0x1e026, 0x1e02a, +0x1e100, 0x1e12c, +0x1e137, 0x1e13d, +0x1e140, 0x1e149, +0x1e14e, 0x1e14e, +0x1e2c0, 0x1e2eb, +0x1e2f0, 0x1e2f9, 0x1e800, 0x1e8c4, 0x1e900, 0x1e943, 0x1e947, 0x1e947, +0x1e94b, 0x1e94b, 0x1e950, 0x1e959, 0x1ee00, 0x1ee03, 0x1ee05, 0x1ee1f, diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_unfold_key.c b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_unfold_key.c index 37a147e9db..10f7889ea3 100644 --- a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_unfold_key.c +++ b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_unfold_key.c @@ -1,7 +1,7 @@ /* 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 */ +/* Command-line: /usr/local/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' */ @@ -36,12 +36,12 @@ //#include #include "regenc.h" -#define TOTAL_KEYWORDS 1480 +#define TOTAL_KEYWORDS 1487 #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 */ +#define MAX_HASH_VALUE 1958 +/* maximum key range = 1949, duplicates = 0 */ #ifdef __GNUC__ __inline @@ -56,36 +56,36 @@ 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 + 9, 5, 2, 111, 176, 1, 110, 1959, 1959, 1959, + 1959, 1959, 1959, 13, 1959, 1959, 1959, 77, 1959, 1959, + 63, 1959, 1959, 1959, 1959, 86, 1959, 1959, 1959, 7, + 1959, 0, 3, 1959, 191, 624, 1536, 132, 1519, 613, + 1513, 607, 1602, 586, 1505, 4, 1497, 570, 1492, 554, + 1482, 907, 1601, 898, 1469, 595, 1468, 405, 1463, 546, + 1458, 538, 1453, 474, 1444, 890, 1596, 877, 1419, 725, + 1590, 698, 1588, 635, 1160, 682, 1021, 338, 1122, 671, + 812, 559, 819, 1580, 756, 1082, 744, 1438, 637, 1428, + 266, 1429, 1502, 1285, 1440, 1578, 467, 1419, 873, 490, + 1380, 779, 731, 1057, 1261, 1034, 1567, 762, 1389, 495, + 1510, 156, 648, 805, 1537, 862, 1523, 853, 1469, 845, + 1252, 796, 342, 1297, 801, 1287, 542, 1408, 477, 1400, + 237, 1109, 20, 1099, 548, 1067, 1, 1280, 326, 1043, + 767, 1030, 756, 938, 598, 254, 26, 1275, 165, 1270, + 149, 1575, 15, 1368, 133, 1202, 625, 403, 408, 373, + 296, 1397, 283, 519, 1381, 503, 1372, 18, 6, 415, + 1253, 769, 8, 484, 1358, 658, 1565, 464, 427, 244, + 1241, 360, 1233, 390, 1350, 219, 377, 206, 1223, 328, + 1211, 145, 1198, 454, 135, 73, 1020, 103, 1012, 63, + 995, 53, 748, 196, 573, 116, 684, 93, 983, 83, + 1004, 182, 735, 31, 713, 319, 977, 306, 706, 44, + 836, 293, 1187, 280, 1135, 268, 671, 976, 1350, 447, + 1182, 437, 964, 946, 351, 932, 1349, 923, 1090, 1194, + 1175, 827, 1299, 1165, 1410, 1155, 1522, 1557, 313, 1146, + 424, 1136, 233, 1130, 161, 1316, 93, 167, 134, 618, + 1959, 1118, 128, 1342, 1959, 1335, 124, 1331, 75, 1327, + 191, 1308, 45, 1545, 1959, 1534, 1, 230, 9, 643, + 5, 1564, 40, 1553, 65, 531, 55, 993, 25, 1476, + 2 }; return asso_values[(unsigned char)onig_codes_byte_at(codes, 2)+35] + asso_values[(unsigned char)onig_codes_byte_at(codes, 1)+1] + asso_values[(unsigned char)onig_codes_byte_at(codes, 0)]; } @@ -98,21 +98,20 @@ onigenc_unicode_unfold_key(OnigCodePoint code) {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, - {0x1040a, 3420, 1}, - - {0x01d7, 444, 1}, + {0x1040a, 3441, 1}, + {0xffffffff, -1, 0}, - {0x1fd7, 31, 3}, + {0x01f1, 483, 1}, - {0x1e0a, 1876, 1}, + {0x1e0a, 1882, 1}, - {0x040a, 1026, 1}, + {0x040a, 1029, 1}, {0x010a, 186, 1}, - {0x1f0a, 2237, 1}, + {0x1f0a, 2243, 1}, - {0x2c0a, 2600, 1}, + {0x2c0a, 2606, 1}, {0x1f85, 154, 2}, @@ -120,3133 +119,3154 @@ onigenc_unicode_unfold_key(OnigCodePoint code) {0x1f89, 134, 2}, - {0x2c67, 2720, 1}, + {0x1ff3, 96, 2}, - {0x1c85, 951, 1}, + {0x1c85, 954, 1}, - {0xab85, 1660, 1}, + {0xab85, 1663, 1}, - {0x10c85, 3633, 1}, + {0x10c85, 3654, 1}, - {0xab89, 1672, 1}, + {0xab89, 1675, 1}, - {0x10c89, 3645, 1}, + {0x10c89, 3666, 1}, - {0x1e84, 2060, 1}, + {0x1e84, 2066, 1}, - {0x2c75, 2732, 1}, + {0x2c75, 2738, 1}, {0x0184, 360, 1}, {0x1f84, 149, 2}, - {0x2c84, 2741, 1}, + {0x2c84, 2747, 1}, - {0xab75, 1612, 1}, + {0xab75, 1615, 1}, - {0xa784, 3255, 1}, + {0xa784, 3261, 1}, - {0x1c84, 951, 1}, + {0x1c84, 954, 1}, - {0xab84, 1657, 1}, + {0xab84, 1660, 1}, - {0x10c84, 3630, 1}, + {0x10c84, 3651, 1}, - {0x104b2, 3516, 1}, + {0x104b2, 3537, 1}, - {0x1ff3, 96, 2}, + {0x1f6f, 2378, 1}, - {0x1ffb, 2414, 1}, + {0x2c6f, 604, 1}, - {0x1eb2, 2114, 1}, + {0x1eb2, 2120, 1}, - {0x04b2, 1156, 1}, + {0x04b2, 1159, 1}, - {0x01b2, 697, 1}, + {0x01b2, 700, 1}, {0x1fb2, 249, 2}, - {0x2cb2, 2810, 1}, + {0x2cb2, 2816, 1}, - {0xa684, 3090, 1}, + {0xa684, 3096, 1}, - {0xa7b2, 706, 1}, + {0xa7b2, 709, 1}, - {0x1cb2, 1561, 1}, + {0x1cb2, 1564, 1}, - {0xabb2, 1795, 1}, + {0xabb2, 1798, 1}, - {0x10cb2, 3768, 1}, + {0x10cb2, 3789, 1}, - {0x104b8, 3534, 1}, + {0x104b8, 3555, 1}, {0x01f7, 414, 1}, {0x1ff7, 67, 3}, - {0x1eb8, 2123, 1}, + {0x1eb8, 2129, 1}, - {0x04b8, 1165, 1}, + {0x04b8, 1168, 1}, {0x01b8, 408, 1}, - {0x1fb8, 2417, 1}, + {0x1fb8, 2423, 1}, - {0x2cb8, 2819, 1}, + {0x2cb8, 2825, 1}, - {0x2ced, 2888, 1}, + {0x2ced, 2894, 1}, - {0xa7b8, 3306, 1}, + {0xa7b8, 3315, 1}, - {0x1cb8, 1579, 1}, + {0x1cb8, 1582, 1}, - {0xabb8, 1813, 1}, + {0xabb8, 1816, 1}, - {0x1ea6, 2096, 1}, + {0x1ea6, 2102, 1}, - {0x04a6, 1138, 1}, + {0x04a6, 1141, 1}, {0x01a6, 679, 1}, {0x1fa6, 239, 2}, - {0x2ca6, 2792, 1}, + {0x2ca6, 2798, 1}, - {0x2167, 2462, 1}, + {0x1ffb, 2420, 1}, - {0xa7a6, 3294, 1}, + {0xa7a6, 3303, 1}, - {0x1ca6, 1525, 1}, + {0x1ca6, 1528, 1}, - {0xaba6, 1759, 1}, + {0xaba6, 1762, 1}, - {0x10ca6, 3732, 1}, + {0x10ca6, 3753, 1}, - {0x1ea4, 2093, 1}, + {0x1ea4, 2099, 1}, - {0x04a4, 1135, 1}, + {0x04a4, 1138, 1}, {0x01a4, 390, 1}, {0x1fa4, 229, 2}, - {0x2ca4, 2789, 1}, + {0x2ca4, 2795, 1}, - {0x1fe9, 2432, 1}, + {0x1ff9, 2408, 1}, - {0xa7a4, 3291, 1}, + {0xa7a4, 3300, 1}, - {0x1ca4, 1519, 1}, + {0x1ca4, 1522, 1}, - {0xaba4, 1753, 1}, + {0xaba4, 1756, 1}, - {0x10ca4, 3726, 1}, + {0x10ca4, 3747, 1}, - {0x1ea0, 2087, 1}, + {0x1ea0, 2093, 1}, - {0x04a0, 1129, 1}, + {0x04a0, 1132, 1}, {0x01a0, 384, 1}, {0x1fa0, 209, 2}, - {0x2ca0, 2783, 1}, + {0x2ca0, 2789, 1}, - {0x1fe7, 47, 3}, + {0x1fe9, 2438, 1}, - {0xa7a0, 3285, 1}, + {0xa7a0, 3294, 1}, - {0x1ca0, 1507, 1}, + {0x1ca0, 1510, 1}, - {0xaba0, 1741, 1}, + {0xaba0, 1744, 1}, - {0x10ca0, 3714, 1}, + {0x10ca0, 3735, 1}, - {0x1eae, 2108, 1}, + {0x1eae, 2114, 1}, - {0x04ae, 1150, 1}, + {0x04ae, 1153, 1}, - {0x01ae, 688, 1}, + {0x01ae, 691, 1}, {0x1fae, 239, 2}, - {0x2cae, 2804, 1}, + {0x2cae, 2810, 1}, - {0x0057, 65, 1}, + {0x13fd, 1855, 1}, {0xa7ae, 655, 1}, - {0x1cae, 1549, 1}, + {0x1cae, 1552, 1}, - {0xabae, 1783, 1}, + {0xabae, 1786, 1}, - {0x10cae, 3756, 1}, + {0x10cae, 3777, 1}, - {0x1eac, 2105, 1}, + {0x1eac, 2111, 1}, - {0x04ac, 1147, 1}, + {0x04ac, 1150, 1}, {0x01ac, 396, 1}, {0x1fac, 229, 2}, - {0x2cac, 2801, 1}, + {0x2cac, 2807, 1}, - {0x13fb, 1846, 1}, + {0x00dd, 162, 1}, {0xa7ac, 637, 1}, - {0x1cac, 1543, 1}, + {0x1cac, 1546, 1}, - {0xabac, 1777, 1}, + {0xabac, 1780, 1}, - {0x10cac, 3750, 1}, + {0x10cac, 3771, 1}, - {0x1ea2, 2090, 1}, + {0x1ea2, 2096, 1}, - {0x04a2, 1132, 1}, + {0x04a2, 1135, 1}, {0x01a2, 387, 1}, {0x1fa2, 219, 2}, - {0x2ca2, 2786, 1}, + {0x2ca2, 2792, 1}, - {0x10b2, 2948, 1}, + {0x10b2, 2954, 1}, - {0xa7a2, 3288, 1}, + {0xa7a2, 3297, 1}, - {0x1ca2, 1513, 1}, + {0x1ca2, 1516, 1}, - {0xaba2, 1747, 1}, + {0xaba2, 1750, 1}, - {0x10ca2, 3720, 1}, + {0x10ca2, 3741, 1}, - {0x118b2, 3825, 1}, + {0x118b2, 3846, 1}, - {0x050a, 1288, 1}, + {0x050a, 1291, 1}, - {0x1fe3, 41, 3}, + {0x020a, 517, 1}, - {0x1eaa, 2102, 1}, + {0x1eaa, 2108, 1}, - {0x04aa, 1144, 1}, + {0x04aa, 1147, 1}, - {0x00df, 24, 2}, + {0x13fb, 1849, 1}, {0x1faa, 219, 2}, - {0x2caa, 2798, 1}, + {0x2caa, 2804, 1}, - {0x10b8, 2966, 1}, + {0x10b8, 2972, 1}, {0xa7aa, 646, 1}, - {0x1caa, 1537, 1}, + {0x1caa, 1540, 1}, - {0xabaa, 1771, 1}, + {0xabaa, 1774, 1}, - {0x10caa, 3744, 1}, + {0x10caa, 3765, 1}, - {0x118b8, 3843, 1}, + {0x118b8, 3864, 1}, - {0x1ff9, 2402, 1}, + {0x1fe7, 47, 3}, - {0xab77, 1618, 1}, + {0x13f9, 1843, 1}, - {0x10402, 3396, 1}, + {0x10402, 3417, 1}, - {0x10a6, 2912, 1}, + {0x10a6, 2918, 1}, - {0x0537, 1363, 1}, + {0x1fe3, 41, 3}, - {0x1e02, 1864, 1}, + {0x1e02, 1870, 1}, - {0x0402, 1002, 1}, + {0x0402, 1005, 1}, {0x0102, 174, 1}, - {0x118a6, 3789, 1}, + {0x118a6, 3810, 1}, - {0x2c02, 2576, 1}, + {0x2c02, 2582, 1}, - {0x1efe, 2228, 1}, + {0x019f, 673, 1}, - {0x04fe, 1270, 1}, + {0x1f9f, 204, 2}, - {0x01fe, 499, 1}, + {0x00df, 24, 2}, + + {0x10a4, 2912, 1}, + + {0xab77, 1621, 1}, + + {0x1c9f, 1507, 1}, + + {0xab9f, 1741, 1}, - {0x10a4, 2906, 1}, + {0x10c9f, 3732, 1}, - {0x049c, 1123, 1}, + {0x118a4, 3804, 1}, + + {0x049c, 1126, 1}, {0x019c, 664, 1}, {0x1f9c, 189, 2}, - {0x2c9c, 2777, 1}, + {0x2c9c, 2783, 1}, - {0x118a4, 3783, 1}, + {0x10a0, 2900, 1}, - {0xa79c, 3279, 1}, + {0xa79c, 3288, 1}, - {0x1c9c, 1495, 1}, + {0x1c9c, 1498, 1}, - {0xab9c, 1729, 1}, + {0xab9c, 1732, 1}, - {0x10c9c, 3702, 1}, + {0x10c9c, 3723, 1}, - {0x10a0, 2894, 1}, + {0x118a0, 3792, 1}, - {0x1e4c, 1975, 1}, + {0x1e4c, 1981, 1}, - {0x00dd, 162, 1}, + {0xab73, 1609, 1}, {0x014c, 279, 1}, - {0x1f4c, 2333, 1}, + {0x1f4c, 2339, 1}, - {0x118a0, 3771, 1}, + {0x10ae, 2942, 1}, {0x004c, 31, 1}, - {0xa74c, 3186, 1}, + {0xa74c, 3192, 1}, {0x01db, 450, 1}, - {0x1fdb, 2396, 1}, + {0x1fdb, 2402, 1}, - {0x10ae, 2936, 1}, + {0x118ae, 3834, 1}, {0x00db, 156, 1}, - {0x13fd, 1852, 1}, - - {0x1e8c, 2072, 1}, - - {0x048c, 1099, 1}, - - {0x118ae, 3813, 1}, - - {0x1f8c, 149, 2}, - - {0x2c8c, 2753, 1}, + {0x1ede, 2186, 1}, - {0xff37, 3378, 1}, + {0x04de, 1225, 1}, - {0xa64c, 3033, 1}, - - {0x10ac, 2930, 1}, + {0x01de, 456, 1}, - {0xab8c, 1681, 1}, + {0x10ac, 2936, 1}, - {0x10c8c, 3654, 1}, + {0x2cde, 2882, 1}, - {0x1ed4, 2165, 1}, + {0x00de, 165, 1}, - {0x04d4, 1207, 1}, + {0xab71, 1603, 1}, - {0x118ac, 3807, 1}, + {0xa64c, 3039, 1}, - {0x24b8, 2498, 1}, + {0x118ac, 3828, 1}, - {0x2cd4, 2861, 1}, + {0x24b8, 2504, 1}, - {0x00d4, 138, 1}, + {0x03f1, 802, 1}, - {0x104b0, 3510, 1}, + {0x03ff, 730, 1}, - {0x10a2, 2900, 1}, + {0x104b0, 3531, 1}, - {0xa68c, 3102, 1}, + {0x10a2, 2906, 1}, - {0x1eb0, 2111, 1}, + {0x03f5, 758, 1}, - {0x04b0, 1153, 1}, + {0x1eb0, 2117, 1}, - {0x0389, 736, 1}, + {0x04b0, 1156, 1}, - {0x118a2, 3777, 1}, + {0x0389, 739, 1}, - {0x2cb0, 2807, 1}, + {0x118a2, 3798, 1}, - {0x1f5f, 2348, 1}, + {0x2cb0, 2813, 1}, + {0xffffffff, -1, 0}, - {0xa7b0, 709, 1}, + {0xa7b0, 712, 1}, - {0x1cb0, 1555, 1}, + {0x1cb0, 1558, 1}, - {0xabb0, 1789, 1}, + {0xabb0, 1792, 1}, - {0x10cb0, 3762, 1}, + {0x10cb0, 3783, 1}, - {0x03ff, 727, 1}, + {0x2165, 2462, 1}, - {0x10aa, 2924, 1}, + {0x10aa, 2930, 1}, - {0x03f5, 755, 1}, + {0x1feb, 2414, 1}, - {0x13f9, 1840, 1}, + {0x2ceb, 2891, 1}, - {0x1ea8, 2099, 1}, + {0x1ea8, 2105, 1}, - {0x04a8, 1141, 1}, + {0x04a8, 1144, 1}, - {0x118aa, 3801, 1}, + {0x118aa, 3822, 1}, {0x1fa8, 209, 2}, - {0x2ca8, 2795, 1}, + {0x2ca8, 2801, 1}, - {0xab73, 1606, 1}, + {0x03fd, 724, 1}, - {0xa7a8, 3297, 1}, + {0xa7a8, 3306, 1}, - {0x1ca8, 1531, 1}, + {0x1ca8, 1534, 1}, - {0xaba8, 1765, 1}, + {0xaba8, 1768, 1}, - {0x10ca8, 3738, 1}, + {0x10ca8, 3759, 1}, {0x1e98, 38, 2}, - {0x0498, 1117, 1}, + {0x0498, 1120, 1}, {0x0198, 375, 1}, {0x1f98, 169, 2}, - {0x2c98, 2771, 1}, - - {0xab71, 1600, 1}, + {0x2c98, 2777, 1}, - {0xa798, 3273, 1}, + {0x2161, 2450, 1}, - {0x1c98, 1483, 1}, + {0xa798, 3282, 1}, - {0xab98, 1717, 1}, + {0x1c98, 1486, 1}, - {0x10c98, 3690, 1}, + {0xab98, 1720, 1}, - {0x03f7, 887, 1}, + {0x10c98, 3711, 1}, - {0x0055, 59, 1}, + {0x03f7, 890, 1}, - {0x020a, 517, 1}, + {0x216f, 2492, 1}, + {0xffffffff, -1, 0}, {0x1e96, 16, 2}, - {0x0496, 1114, 1}, + {0x0496, 1117, 1}, {0x0196, 652, 1}, {0x1f96, 199, 2}, - {0x2c96, 2768, 1}, + {0x2c96, 2774, 1}, - {0xa698, 3120, 1}, + {0xa698, 3126, 1}, - {0xa796, 3270, 1}, + {0xa796, 3279, 1}, - {0x1c96, 1477, 1}, + {0x1c96, 1480, 1}, - {0xab96, 1711, 1}, + {0xab96, 1714, 1}, - {0x10c96, 3684, 1}, + {0x10c96, 3705, 1}, - {0x03a6, 813, 1}, + {0x03a6, 816, 1}, - {0x16e57, 3936, 1}, + {0x1ef2, 2216, 1}, - {0x10416, 3456, 1}, + {0x04f2, 1255, 1}, - {0x1e7c, 2048, 1}, + {0x01f2, 483, 1}, - {0x047c, 1087, 1}, + {0x1ff2, 257, 2}, - {0x1e16, 1894, 1}, + {0x2cf2, 2897, 1}, - {0x0416, 913, 1}, + {0x01d9, 447, 1}, - {0x0116, 204, 1}, + {0x1fd9, 2432, 1}, - {0xa696, 3117, 1}, + {0xa696, 3123, 1}, - {0x2c16, 2636, 1}, + {0x00d9, 150, 1}, - {0x03a4, 807, 1}, + {0x03a4, 810, 1}, - {0xab7c, 1633, 1}, + {0x1f5f, 2354, 1}, - {0x01f1, 483, 1}, + {0x03f9, 884, 1}, - {0x0502, 1276, 1}, + {0x0502, 1279, 1}, - {0x2165, 2456, 1}, + {0x0202, 505, 1}, - {0x1e90, 2078, 1}, + {0x1e90, 2084, 1}, - {0x0490, 1105, 1}, + {0x0490, 1108, 1}, {0x0190, 628, 1}, {0x1f90, 169, 2}, - {0x2c90, 2759, 1}, + {0x2c90, 2765, 1}, - {0x03a0, 795, 1}, + {0x03a0, 798, 1}, - {0xa790, 3264, 1}, + {0xa790, 3270, 1}, - {0x1c90, 1459, 1}, + {0x1c90, 1462, 1}, - {0xab90, 1693, 1}, + {0xab90, 1696, 1}, - {0x10c90, 3666, 1}, + {0x10c90, 3687, 1}, - {0x1e6e, 2027, 1}, + {0x1e6e, 2033, 1}, - {0x046e, 1066, 1}, + {0x046e, 1069, 1}, {0x016e, 330, 1}, - {0x1f6e, 2369, 1}, + {0x1f6e, 2375, 1}, {0x2c6e, 667, 1}, - {0x10b0, 2942, 1}, + {0x10b0, 2948, 1}, - {0xa76e, 3237, 1}, - - {0x054c, 1426, 1}, + {0xa76e, 3243, 1}, + {0xffffffff, -1, 0}, - {0xa690, 3108, 1}, + {0xa690, 3114, 1}, + {0xffffffff, -1, 0}, - {0x0147, 273, 1}, + {0x118b0, 3840, 1}, - {0x118b0, 3819, 1}, + {0x104be, 3573, 1}, - {0x104b6, 3528, 1}, + {0x054c, 1429, 1}, - {0x0047, 18, 1}, + {0x024c, 598, 1}, - {0x03fd, 721, 1}, + {0x1ebe, 2138, 1}, - {0x1eb6, 2120, 1}, + {0x04be, 1177, 1}, + {0xffffffff, -1, 0}, - {0x04b6, 1162, 1}, + {0x1fbe, 773, 1}, - {0x0535, 1357, 1}, + {0x2cbe, 2834, 1}, - {0x1fb6, 58, 2}, + {0x10a8, 2924, 1}, - {0x2cb6, 2816, 1}, + {0xa7be, 3324, 1}, - {0x10a8, 2918, 1}, + {0x1cbe, 1594, 1}, - {0xa7b6, 3303, 1}, + {0xabbe, 1834, 1}, - {0x1cb6, 1573, 1}, + {0x104bc, 3567, 1}, - {0xabb6, 1807, 1}, + {0x118a8, 3816, 1}, + {0xffffffff, -1, 0}, - {0x104be, 3552, 1}, + {0x1ebc, 2135, 1}, - {0x118a8, 3795, 1}, + {0x04bc, 1174, 1}, - {0x2c63, 1858, 1}, + {0x01bc, 411, 1}, - {0x1ebe, 2132, 1}, + {0x1fbc, 62, 2}, - {0x04be, 1174, 1}, + {0x2cbc, 2831, 1}, - {0x10421, 3489, 1}, + {0x017f, 52, 1}, - {0x1fbe, 770, 1}, + {0xa7bc, 3321, 1}, - {0x2cbe, 2828, 1}, + {0x2c7f, 583, 1}, - {0x2161, 2444, 1}, + {0xabbc, 1828, 1}, + {0xffffffff, -1, 0}, - {0x0421, 947, 1}, + {0x104ba, 3561, 1}, - {0x1cbe, 1591, 1}, + {0xab7f, 1645, 1}, - {0xabbe, 1831, 1}, + {0x03aa, 830, 1}, - {0x2c21, 2669, 1}, + {0x1eba, 2132, 1}, - {0x104bc, 3546, 1}, + {0x04ba, 1171, 1}, {0xffffffff, -1, 0}, - {0x03aa, 827, 1}, + {0x1fba, 2381, 1}, - {0x1ebc, 2129, 1}, + {0x2cba, 2828, 1}, - {0x04bc, 1171, 1}, + {0x017d, 351, 1}, - {0x01bc, 411, 1}, + {0xa7ba, 3318, 1}, - {0x1fbc, 62, 2}, + {0x1cba, 1588, 1}, + + {0xabba, 1822, 1}, - {0x2cbc, 2825, 1}, + {0xa77d, 1858, 1}, - {0x16e4c, 3903, 1}, + {0x104b6, 3549, 1}, - {0x104ba, 3540, 1}, + {0xab7d, 1639, 1}, + {0xffffffff, -1, 0}, - {0x03f9, 881, 1}, + {0x1eb6, 2126, 1}, - {0xabbc, 1825, 1}, + {0x04b6, 1165, 1}, - {0x1eba, 2126, 1}, + {0x16e4c, 3924, 1}, - {0x04ba, 1168, 1}, + {0x1fb6, 58, 2}, - {0x216e, 2483, 1}, + {0x2cb6, 2822, 1}, - {0x1fba, 2375, 1}, + {0x039f, 795, 1}, - {0x2cba, 2822, 1}, + {0xa7b6, 3312, 1}, - {0xff35, 3372, 1}, + {0x1cb6, 1576, 1}, - {0x104b4, 3522, 1}, + {0xabb6, 1810, 1}, - {0x1cba, 1585, 1}, + {0x01d5, 441, 1}, - {0xabba, 1819, 1}, + {0x104b4, 3543, 1}, + {0xffffffff, -1, 0}, - {0x1eb4, 2117, 1}, + {0x00d5, 141, 1}, - {0x04b4, 1159, 1}, + {0x1eb4, 2123, 1}, - {0x03fe, 724, 1}, + {0x04b4, 1162, 1}, - {0x1fb4, 50, 2}, + {0x039c, 785, 1}, - {0x2cb4, 2813, 1}, + {0x1fb4, 50, 2}, - {0x039c, 782, 1}, + {0x2cb4, 2819, 1}, + {0xffffffff, -1, 0}, - {0xa7b4, 3300, 1}, + {0xa7b4, 3309, 1}, - {0x1cb4, 1567, 1}, + {0x1cb4, 1570, 1}, - {0xabb4, 1801, 1}, + {0xabb4, 1804, 1}, {0x1e9a, 0, 2}, - {0x049a, 1120, 1}, + {0x049a, 1123, 1}, - {0x0555, 1453, 1}, + {0x2c67, 2726, 1}, {0x1f9a, 179, 2}, - {0x2c9a, 2774, 1}, + {0x2c9a, 2780, 1}, + {0xffffffff, -1, 0}, + + {0xa79a, 3285, 1}, - {0x2163, 2450, 1}, + {0x1c9a, 1492, 1}, - {0xa79a, 3276, 1}, + {0xab9a, 1726, 1}, - {0x1c9a, 1489, 1}, + {0x10c9a, 3717, 1}, - {0xab9a, 1723, 1}, + {0x1e2a, 1930, 1}, - {0x10c9a, 3696, 1}, + {0x042a, 980, 1}, - {0x1f4d, 2336, 1}, + {0x012a, 234, 1}, - {0x16e5f, 3960, 1}, + {0x1f2a, 2285, 1}, - {0x004d, 34, 1}, + {0x2c2a, 2702, 1}, - {0x1e94, 2084, 1}, + {0x03de, 857, 1}, - {0x0494, 1111, 1}, + {0xa72a, 3144, 1}, - {0x0194, 640, 1}, + {0x10be, 2990, 1}, - {0x1f94, 189, 2}, + {0xa69a, 3129, 1}, - {0x2c94, 2765, 1}, + {0x0057, 65, 1}, + + {0x104c7, 3600, 1}, + {0xffffffff, -1, 0}, - {0xa69a, 3123, 1}, + {0x118be, 3882, 1}, - {0x038c, 833, 1}, + {0x1e90a, 4014, 1}, - {0x1c94, 1471, 1}, + {0x04c7, 1189, 1}, - {0xab94, 1705, 1}, + {0x01c7, 421, 1}, - {0x10c94, 3678, 1}, + {0x1fc7, 15, 3}, {0xffffffff, -1, 0}, - {0x0516, 1306, 1}, + {0x00c7, 99, 1}, - {0x10b6, 2960, 1}, + {0x10bc, 2984, 1}, - {0x0202, 505, 1}, + {0x03b0, 41, 3}, - {0x1f6f, 2372, 1}, + {0xff37, 3399, 1}, - {0x2c6f, 604, 1}, + {0x1e92, 2087, 1}, - {0x1041c, 3474, 1}, + {0x0492, 1111, 1}, - {0x118b6, 3837, 1}, + {0x118bc, 3876, 1}, - {0xa694, 3114, 1}, + {0x1f92, 179, 2}, - {0x1e1c, 1903, 1}, + {0x2c92, 2768, 1}, - {0x041c, 931, 1}, + {0xfb02, 12, 2}, - {0x011c, 213, 1}, + {0xa792, 3273, 1}, - {0x1f1c, 2267, 1}, + {0x1c92, 1468, 1}, - {0x2c1c, 2654, 1}, + {0xab92, 1702, 1}, - {0x10be, 2984, 1}, + {0x10c92, 3693, 1}, - {0x03b0, 41, 3}, + {0x10ba, 2978, 1}, + {0xffffffff, -1, 0}, - {0x16e55, 3930, 1}, + {0x03a8, 823, 1}, - {0x1e92, 2081, 1}, + {0x1e7c, 2054, 1}, - {0x0492, 1108, 1}, + {0x047c, 1090, 1}, - {0x118be, 3861, 1}, + {0x118ba, 3870, 1}, - {0x1f92, 179, 2}, + {0x0537, 1366, 1}, + + {0x1e97, 34, 2}, - {0x2c92, 2762, 1}, + {0xa692, 3117, 1}, - {0x024c, 598, 1}, + {0x0197, 649, 1}, - {0xa792, 3267, 1}, + {0x1f97, 204, 2}, - {0x1c92, 1465, 1}, + {0xab7c, 1636, 1}, - {0xab92, 1699, 1}, + {0x0398, 768, 1}, - {0x10c92, 3672, 1}, + {0x10b6, 2966, 1}, - {0x10bc, 2978, 1}, + {0x1c97, 1483, 1}, - {0x0547, 1411, 1}, + {0xab97, 1717, 1}, - {0x03a8, 820, 1}, + {0x10c97, 3708, 1}, + {0xffffffff, -1, 0}, - {0x01d9, 447, 1}, + {0x118b6, 3858, 1}, - {0x1fd9, 2426, 1}, + {0x16e5f, 3981, 1}, - {0x118bc, 3855, 1}, + {0x1e94, 2090, 1}, - {0x00d9, 150, 1}, + {0x0494, 1114, 1}, - {0x01d5, 441, 1}, + {0x0194, 640, 1}, - {0xa692, 3111, 1}, + {0x1f94, 189, 2}, - {0x10ba, 2972, 1}, + {0x2c94, 2771, 1}, - {0x00d5, 141, 1}, - {0xffffffff, -1, 0}, + {0x0396, 762, 1}, - {0x0398, 765, 1}, + {0x10b4, 2960, 1}, - {0x1e86, 2063, 1}, + {0x1c94, 1474, 1}, - {0x118ba, 3849, 1}, + {0xab94, 1708, 1}, - {0x0186, 616, 1}, + {0x10c94, 3699, 1}, - {0x1f86, 159, 2}, + {0x24be, 2522, 1}, - {0x2c86, 2744, 1}, + {0x118b4, 3852, 1}, - {0x10b4, 2954, 1}, + {0x10416, 3477, 1}, - {0xa786, 3258, 1}, + {0x1e7a, 2051, 1}, - {0x1c86, 977, 1}, + {0x047a, 1087, 1}, - {0xab86, 1663, 1}, + {0x1e16, 1900, 1}, - {0x10c86, 3636, 1}, + {0x0416, 916, 1}, + + {0x0116, 204, 1}, - {0x118b4, 3831, 1}, + {0xa694, 3120, 1}, - {0x216f, 2486, 1}, + {0x2c16, 2642, 1}, - {0x0396, 759, 1}, + {0x017b, 348, 1}, - {0x1f6d, 2366, 1}, + {0xab7a, 1630, 1}, - {0x2c6d, 607, 1}, + {0x24bc, 2516, 1}, {0xffffffff, -1, 0}, - {0x104c7, 3579, 1}, + {0xa77b, 3249, 1}, - {0x24b6, 2492, 1}, + {0x1e86, 2069, 1}, - {0xa686, 3093, 1}, + {0xab7b, 1633, 1}, - {0x1e90a, 3993, 1}, + {0x0186, 616, 1}, - {0x04c7, 1186, 1}, + {0x1f86, 159, 2}, - {0x01c7, 421, 1}, + {0x2c86, 2750, 1}, - {0x1fc7, 15, 3}, - {0xffffffff, -1, 0}, + {0x0390, 25, 3}, - {0x00c7, 99, 1}, + {0xa786, 3264, 1}, - {0x16e47, 3888, 1}, - {0xffffffff, -1, 0}, + {0x1c86, 980, 1}, - {0x1e9e, 24, 2}, + {0xab86, 1666, 1}, - {0x049e, 1126, 1}, + {0x10c86, 3657, 1}, - {0x24be, 2516, 1}, + {0x24ba, 2510, 1}, - {0x1f9e, 199, 2}, + {0x01d7, 444, 1}, - {0x2c9e, 2780, 1}, + {0x1fd7, 31, 3}, - {0x03f1, 799, 1}, + {0x10c7, 3014, 1}, - {0xa79e, 3282, 1}, + {0x018f, 625, 1}, - {0x1c9e, 1501, 1}, + {0x1f8f, 164, 2}, - {0xab9e, 1735, 1}, + {0xff2a, 3360, 1}, + {0xffffffff, -1, 0}, - {0x10c9e, 3708, 1}, + {0xa686, 3099, 1}, - {0x0390, 25, 3}, + {0x104c4, 3591, 1}, - {0x1efa, 2222, 1}, + {0xab8f, 1693, 1}, - {0x04fa, 1264, 1}, + {0x10c8f, 3684, 1}, - {0x01fa, 493, 1}, + {0x1ec4, 2147, 1}, - {0x1ffa, 2411, 1}, + {0x24b6, 2498, 1}, - {0x24bc, 2510, 1}, - {0xffffffff, -1, 0}, + {0x01c4, 417, 1}, - {0x1e8e, 2075, 1}, + {0x1fc4, 54, 2}, - {0x048e, 1102, 1}, + {0x2cc4, 2843, 1}, - {0x018e, 453, 1}, + {0x00c4, 89, 1}, - {0x1f8e, 159, 2}, + {0xa7c4, 3276, 1}, - {0x2c8e, 2756, 1}, + {0x104c2, 3585, 1}, - {0xff21, 3312, 1}, + {0x216e, 2489, 1}, {0xffffffff, -1, 0}, - {0x24ba, 2504, 1}, + {0x1ec2, 2144, 1}, + + {0x052a, 1339, 1}, - {0xab8e, 1687, 1}, + {0x022a, 562, 1}, - {0x10c8e, 3660, 1}, + {0x1fc2, 253, 2}, - {0x054d, 1429, 1}, + {0x2cc2, 2840, 1}, - {0x1e8a, 2069, 1}, + {0x00c2, 83, 1}, - {0x048a, 1096, 1}, + {0xa7c2, 3327, 1}, - {0x018a, 622, 1}, + {0x1e9e, 24, 2}, - {0x1f8a, 139, 2}, + {0x049e, 1129, 1}, + {0xffffffff, -1, 0}, - {0x2c8a, 2750, 1}, + {0x1f9e, 199, 2}, - {0x216d, 2480, 1}, + {0x2c9e, 2786, 1}, - {0x104d3, 3615, 1}, + {0x037f, 887, 1}, - {0xa68e, 3105, 1}, + {0xa79e, 3291, 1}, - {0xab8a, 1675, 1}, + {0x1c9e, 1504, 1}, - {0x10c8a, 3648, 1}, + {0xab9e, 1738, 1}, - {0x0216, 535, 1}, + {0x10c9e, 3729, 1}, - {0x01d3, 438, 1}, + {0x1e8e, 2081, 1}, - {0x1fd3, 25, 3}, + {0x048e, 1105, 1}, - {0x1e82, 2057, 1}, + {0x018e, 453, 1}, - {0x00d3, 135, 1}, + {0x1f8e, 159, 2}, - {0x0182, 357, 1}, + {0x2c8e, 2762, 1}, - {0x1f82, 139, 2}, + {0x013d, 258, 1}, - {0x2c82, 2738, 1}, + {0x1f3d, 2318, 1}, - {0xa68a, 3099, 1}, + {0x1041c, 3495, 1}, - {0xa782, 3252, 1}, + {0xab8e, 1690, 1}, - {0x1c82, 937, 1}, + {0x10c8e, 3681, 1}, - {0xab82, 1651, 1}, + {0x1e1c, 1909, 1}, - {0x10c82, 3624, 1}, + {0x041c, 934, 1}, - {0x1e30, 1933, 1}, + {0x011c, 213, 1}, - {0x051c, 1315, 1}, + {0x1f1c, 2273, 1}, - {0x0130, 261, 2}, + {0x2c1c, 2660, 1}, - {0x1e80, 2054, 1}, + {0x1e902, 3990, 1}, - {0x0480, 1093, 1}, + {0x1f5d, 2351, 1}, {0xffffffff, -1, 0}, - {0x1f80, 129, 2}, + {0xa68e, 3111, 1}, - {0x2c80, 2735, 1}, + {0x24c7, 2549, 1}, - {0xa682, 3087, 1}, + {0x1e8a, 2075, 1}, - {0xa780, 3249, 1}, + {0x048a, 1099, 1}, - {0x1c80, 899, 1}, + {0x018a, 622, 1}, - {0xab80, 1645, 1}, + {0x1f8a, 139, 2}, - {0x10c80, 3618, 1}, + {0x2c8a, 2756, 1}, - {0x16e4d, 3906, 1}, + {0x03d5, 816, 1}, - {0x1e4a, 1972, 1}, + {0x1e40, 1963, 1}, {0xffffffff, -1, 0}, - {0x014a, 276, 1}, - - {0x1f4a, 2327, 1}, + {0xab8a, 1678, 1}, - {0x10c7, 3008, 1}, + {0x10c8a, 3669, 1}, - {0x004a, 24, 1}, + {0x16e57, 3957, 1}, - {0xa74a, 3183, 1}, + {0x1e4a, 1978, 1}, - {0xa680, 3084, 1}, + {0xa740, 3174, 1}, - {0x1041a, 3468, 1}, + {0x014a, 276, 1}, - {0x013d, 258, 1}, + {0x1f4a, 2333, 1}, + {0xffffffff, -1, 0}, - {0x1f3d, 2312, 1}, + {0x004a, 24, 1}, - {0x1e1a, 1900, 1}, + {0xa74a, 3189, 1}, - {0x041a, 925, 1}, + {0xa68a, 3105, 1}, - {0x011a, 210, 1}, + {0x1e82, 2063, 1}, - {0x1f1a, 2261, 1}, + {0x039a, 778, 1}, - {0x2c1a, 2648, 1}, - {0xffffffff, -1, 0}, + {0x0182, 357, 1}, - {0x13fa, 1843, 1}, + {0x1f82, 139, 2}, - {0xa64a, 3029, 1}, + {0x2c82, 2744, 1}, - {0x10418, 3462, 1}, - {0xffffffff, -1, 0}, + {0xa640, 3020, 1}, - {0x039a, 775, 1}, + {0xa782, 3258, 1}, - {0x1e18, 1897, 1}, + {0x1c82, 940, 1}, - {0x0418, 919, 1}, + {0xab82, 1654, 1}, - {0x0118, 207, 1}, + {0x10c82, 3645, 1}, - {0x1f18, 2255, 1}, + {0xa64a, 3035, 1}, - {0x2c18, 2642, 1}, - {0xffffffff, -1, 0}, + {0x10c4, 3008, 1}, - {0xfb02, 12, 2}, + {0x0516, 1309, 1}, - {0x1ee0, 2183, 1}, + {0x0216, 535, 1}, - {0x04e0, 1225, 1}, + {0x2167, 2468, 1}, + {0xffffffff, -1, 0}, - {0x01e0, 459, 1}, + {0x1e80, 2060, 1}, - {0x1040e, 3432, 1}, + {0x0480, 1096, 1}, - {0x2ce0, 2879, 1}, + {0xa682, 3093, 1}, - {0x0394, 752, 1}, + {0x1f80, 129, 2}, - {0x1e0e, 1882, 1}, + {0x2c80, 2741, 1}, - {0x040e, 1038, 1}, + {0x10c2, 3002, 1}, - {0x010e, 192, 1}, + {0xa780, 3255, 1}, - {0x1f0e, 2249, 1}, + {0x1c80, 902, 1}, - {0x2c0e, 2612, 1}, + {0xab80, 1648, 1}, - {0x1040c, 3426, 1}, + {0x10c80, 3639, 1}, - {0x1f6b, 2360, 1}, + {0x212a, 27, 1}, + {0xffffffff, -1, 0}, - {0x2c6b, 2726, 1}, + {0x1efa, 2228, 1}, - {0x1e0c, 1879, 1}, + {0x04fa, 1267, 1}, - {0x040c, 1032, 1}, + {0x01fa, 493, 1}, - {0x010c, 189, 1}, + {0x1ffa, 2417, 1}, - {0x1f0c, 2243, 1}, + {0x1041a, 3489, 1}, - {0x2c0c, 2606, 1}, + {0x0392, 748, 1}, - {0x1f5d, 2345, 1}, + {0xa680, 3090, 1}, - {0x10414, 3450, 1}, + {0x1e1a, 1906, 1}, - {0x1e7a, 2045, 1}, + {0x041a, 928, 1}, - {0x047a, 1084, 1}, + {0x011a, 210, 1}, - {0x1e14, 1891, 1}, + {0x1f1a, 2267, 1}, - {0x0414, 906, 1}, + {0x2c1a, 2654, 1}, - {0x0114, 201, 1}, + {0x10418, 3483, 1}, + {0xffffffff, -1, 0}, - {0x1e902, 3969, 1}, + {0x1f5b, 2348, 1}, - {0x2c14, 2630, 1}, + {0x1e18, 1903, 1}, - {0x1f5b, 2342, 1}, + {0x0418, 922, 1}, - {0xab7a, 1627, 1}, + {0x0118, 207, 1}, - {0x24c7, 2543, 1}, + {0x1f18, 2261, 1}, - {0x10408, 3414, 1}, + {0x2c18, 2648, 1}, - {0x0392, 745, 1}, + {0x1040e, 3453, 1}, - {0x0533, 1351, 1}, + {0x2c63, 1861, 1}, - {0x1e08, 1873, 1}, + {0x0397, 765, 1}, - {0x0408, 1020, 1}, + {0x1e0e, 1888, 1}, - {0x0108, 183, 1}, + {0x040e, 1041, 1}, - {0x1f08, 2231, 1}, + {0x010e, 192, 1}, - {0x2c08, 2594, 1}, + {0x1f0e, 2255, 1}, - {0x10406, 3408, 1}, + {0x2c0e, 2618, 1}, - {0x0053, 52, 1}, - {0xffffffff, -1, 0}, + {0x1e2e, 1936, 1}, - {0x1e06, 1870, 1}, + {0x042e, 993, 1}, - {0x0406, 1014, 1}, + {0x012e, 240, 1}, - {0x0106, 180, 1}, + {0x1f2e, 2297, 1}, - {0x10404, 3402, 1}, + {0x2c2e, 2714, 1}, + {0xffffffff, -1, 0}, - {0x2c06, 2588, 1}, + {0xa72e, 3150, 1}, - {0x03d5, 813, 1}, + {0x0394, 755, 1}, - {0x1e04, 1867, 1}, + {0x1040c, 3447, 1}, + {0xffffffff, -1, 0}, - {0x0404, 1008, 1}, + {0x24c4, 2540, 1}, - {0x0104, 177, 1}, - {0xffffffff, -1, 0}, + {0x1e0c, 1885, 1}, - {0x2c04, 2582, 1}, + {0x040c, 1035, 1}, - {0x10400, 3390, 1}, - {0xffffffff, -1, 0}, + {0x010c, 189, 1}, - {0x0386, 730, 1}, + {0x1f0c, 2249, 1}, - {0x1e00, 1861, 1}, + {0x2c0c, 2612, 1}, - {0x0400, 996, 1}, + {0x01a9, 685, 1}, - {0x0100, 171, 1}, + {0x1fa9, 214, 2}, - {0x216b, 2474, 1}, + {0x053d, 1384, 1}, - {0x2c00, 2570, 1}, - {0xffffffff, -1, 0}, + {0x023d, 378, 1}, - {0x021c, 544, 1}, + {0x24c2, 2534, 1}, - {0x1e2a, 1924, 1}, + {0x1ca9, 1537, 1}, - {0x042a, 977, 1}, + {0xaba9, 1771, 1}, - {0x012a, 234, 1}, + {0x10ca9, 3762, 1}, - {0x1f2a, 2279, 1}, + {0x10408, 3435, 1}, - {0x2c2a, 2696, 1}, + {0x051c, 1318, 1}, - {0x10426, 3504, 1}, + {0x021c, 544, 1}, - {0xa72a, 3138, 1}, + {0x1e08, 1879, 1}, - {0xff33, 3366, 1}, + {0x0408, 1023, 1}, - {0x1e26, 1918, 1}, + {0x0108, 183, 1}, - {0x0426, 965, 1}, + {0x1f08, 2237, 1}, - {0x0126, 228, 1}, + {0x2c08, 2600, 1}, - {0x1f95, 194, 2}, + {0x0386, 733, 1}, - {0x2c26, 2684, 1}, + {0x10414, 3471, 1}, {0xffffffff, -1, 0}, - {0xa726, 3132, 1}, + {0x13fa, 1846, 1}, - {0x1c95, 1474, 1}, + {0x1e14, 1897, 1}, - {0xab95, 1708, 1}, + {0x0414, 909, 1}, - {0x10c95, 3681, 1}, + {0x0114, 201, 1}, + {0xffffffff, -1, 0}, - {0x054a, 1420, 1}, + {0x2c14, 2636, 1}, - {0x039e, 789, 1}, + {0x0540, 1393, 1}, - {0x1e2e, 1930, 1}, + {0x1f6d, 2372, 1}, - {0x042e, 990, 1}, + {0x2c6d, 607, 1}, - {0x012e, 240, 1}, + {0x038f, 842, 1}, - {0x1f2e, 2291, 1}, + {0x10406, 3429, 1}, - {0x2c2e, 2708, 1}, + {0x054a, 1423, 1}, - {0x053d, 1381, 1}, + {0x024a, 595, 1}, - {0xa72e, 3144, 1}, + {0x1e06, 1876, 1}, - {0x1feb, 2408, 1}, + {0x0406, 1017, 1}, - {0x2ceb, 2885, 1}, + {0x0106, 180, 1}, - {0x051a, 1312, 1}, + {0x10404, 3423, 1}, - {0x03fa, 890, 1}, + {0x2c06, 2594, 1}, + {0xffffffff, -1, 0}, - {0x1e2c, 1927, 1}, + {0x1e04, 1873, 1}, - {0x042c, 984, 1}, + {0x0404, 1011, 1}, - {0x012c, 237, 1}, + {0x0104, 177, 1}, + {0xffffffff, -1, 0}, - {0x1f2c, 2285, 1}, + {0x2c04, 2588, 1}, - {0x2c2c, 2702, 1}, + {0x1ee0, 2189, 1}, - {0x038e, 836, 1}, + {0x04e0, 1228, 1}, - {0xa72c, 3141, 1}, + {0x01e0, 459, 1}, - {0xfb16, 125, 2}, - {0xffffffff, -1, 0}, + {0x10400, 3411, 1}, - {0x0518, 1309, 1}, + {0x2ce0, 2885, 1}, - {0xff30, 3357, 1}, + {0x03c2, 806, 1}, - {0x1e28, 1921, 1}, + {0x1e00, 1867, 1}, - {0x0428, 971, 1}, + {0x0400, 999, 1}, - {0x0128, 231, 1}, + {0x0100, 171, 1}, - {0x1f28, 2273, 1}, + {0x0179, 345, 1}, - {0x2c28, 2690, 1}, + {0x2c00, 2576, 1}, - {0x038a, 739, 1}, + {0x16e5d, 3975, 1}, - {0xa728, 3135, 1}, - {0xffffffff, -1, 0}, + {0x039e, 792, 1}, - {0x212a, 27, 1}, - {0xffffffff, -1, 0}, + {0xa779, 3246, 1}, - {0x104cd, 3597, 1}, + {0x10426, 3525, 1}, - {0x050e, 1294, 1}, + {0xab79, 1627, 1}, {0xffffffff, -1, 0}, - {0x16e4a, 3897, 1}, - - {0x04cd, 1195, 1}, + {0x1e26, 1924, 1}, - {0x01cd, 429, 1}, + {0x0426, 968, 1}, - {0x2126, 823, 1}, + {0x0126, 228, 1}, - {0x10424, 3498, 1}, + {0xfb16, 125, 2}, - {0x00cd, 117, 1}, + {0x2c26, 2690, 1}, - {0x050c, 1291, 1}, + {0x038e, 839, 1}, - {0x1e24, 1915, 1}, + {0xa726, 3138, 1}, - {0x0424, 959, 1}, + {0x16e40, 3888, 1}, - {0x0124, 225, 1}, + {0x1ef4, 2219, 1}, - {0x1e916, 4029, 1}, + {0x04f4, 1258, 1}, - {0x2c24, 2678, 1}, - {0xffffffff, -1, 0}, + {0x01f4, 487, 1}, - {0xa724, 3129, 1}, + {0x1ff4, 101, 2}, - {0x10422, 3492, 1}, + {0x16e4a, 3918, 1}, - {0x0514, 1303, 1}, + {0x051a, 1315, 1}, - {0x104c9, 3585, 1}, + {0x021a, 541, 1}, - {0x1e22, 1912, 1}, + {0x10a9, 2927, 1}, - {0x0422, 951, 1}, + {0x1f4d, 2342, 1}, - {0x0122, 222, 1}, + {0xff2e, 3372, 1}, - {0x04c9, 1189, 1}, + {0x004d, 34, 1}, + {0xffffffff, -1, 0}, - {0x2c22, 2672, 1}, + {0x118a9, 3819, 1}, - {0x1fc9, 2384, 1}, + {0x0518, 1312, 1}, - {0xa722, 3126, 1}, + {0x0218, 538, 1}, - {0x00c9, 105, 1}, + {0x1e8c, 2078, 1}, - {0x104c4, 3570, 1}, + {0x048c, 1102, 1}, - {0x0508, 1285, 1}, + {0x038a, 742, 1}, - {0x0553, 1447, 1}, + {0x1f8c, 149, 2}, - {0x1ec4, 2141, 1}, + {0x2c8c, 2759, 1}, {0xffffffff, -1, 0}, - {0x01c4, 417, 1}, + {0x050e, 1297, 1}, - {0x1fc4, 54, 2}, + {0x020e, 523, 1}, - {0x2cc4, 2837, 1}, + {0xab8c, 1684, 1}, - {0x00c4, 89, 1}, + {0x10c8c, 3675, 1}, - {0x0506, 1282, 1}, + {0x104bf, 3576, 1}, - {0x104c2, 3564, 1}, + {0x052e, 1345, 1}, - {0x1f69, 2354, 1}, + {0x022e, 568, 1}, - {0x2c69, 2723, 1}, + {0x1e2c, 1933, 1}, - {0x1ec2, 2138, 1}, + {0x042c, 987, 1}, - {0x104d1, 3609, 1}, + {0x012c, 237, 1}, - {0x0504, 1279, 1}, + {0x1f2c, 2291, 1}, - {0x1fc2, 253, 2}, + {0x2c2c, 2708, 1}, - {0x2cc2, 2834, 1}, + {0xa68c, 3108, 1}, - {0x00c2, 83, 1}, + {0xa72c, 3147, 1}, - {0x01d1, 435, 1}, + {0x1cbf, 1597, 1}, - {0x16e5d, 3954, 1}, + {0xabbf, 1837, 1}, - {0x104b7, 3531, 1}, + {0x050c, 1294, 1}, - {0x00d1, 129, 1}, + {0x020c, 520, 1}, - {0x0500, 1273, 1}, + {0x1e28, 1927, 1}, - {0x013f, 261, 1}, - - {0x1f3f, 2318, 1}, - - {0x01b7, 703, 1}, - - {0x1fb7, 10, 3}, - - {0x0230, 571, 1}, - - {0x16e5b, 3948, 1}, + {0x0428, 974, 1}, - {0x052a, 1336, 1}, - - {0x1cb7, 1576, 1}, + {0x0128, 231, 1}, - {0xabb7, 1810, 1}, + {0x1f28, 2279, 1}, - {0x03e0, 857, 1}, - {0xffffffff, -1, 0}, + {0x2c28, 2696, 1}, - {0x104b3, 3519, 1}, + {0x1fab, 224, 2}, - {0x1e921, 4062, 1}, + {0xa728, 3141, 1}, {0xffffffff, -1, 0}, - {0x0526, 1330, 1}, - - {0x16e53, 3924, 1}, - - {0x01b3, 402, 1}, - - {0x1fb3, 62, 2}, - - {0x024a, 595, 1}, - {0xffffffff, -1, 0}, + {0xa7ab, 631, 1}, - {0xa7b3, 3309, 1}, + {0x1cab, 1543, 1}, - {0x1cb3, 1564, 1}, + {0xabab, 1777, 1}, - {0xabb3, 1798, 1}, - {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0x10cab, 3768, 1}, - {0x023d, 378, 1}, + {0x16e5b, 3969, 1}, - {0x052e, 1342, 1}, + {0x10424, 3519, 1}, - {0x1fab, 224, 2}, + {0x0508, 1288, 1}, - {0x10cd, 3011, 1}, + {0x0208, 514, 1}, - {0x021a, 541, 1}, + {0x1e24, 1921, 1}, - {0xa7ab, 631, 1}, + {0x0424, 962, 1}, - {0x1cab, 1540, 1}, + {0x0124, 225, 1}, + {0xffffffff, -1, 0}, - {0xabab, 1774, 1}, + {0x2c24, 2684, 1}, - {0x10cab, 3747, 1}, + {0x104b7, 3552, 1}, - {0x2169, 2468, 1}, - {0xffffffff, -1, 0}, + {0xa724, 3135, 1}, - {0x1e56, 1990, 1}, + {0x0514, 1306, 1}, - {0x052c, 1339, 1}, + {0x0214, 532, 1}, - {0x0156, 294, 1}, + {0x03fa, 893, 1}, - {0x1f56, 62, 3}, + {0x01b7, 706, 1}, - {0x0218, 538, 1}, + {0x1fb7, 10, 3}, - {0x0056, 62, 1}, + {0x104b3, 3540, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, - {0xa756, 3201, 1}, + {0x1cb7, 1579, 1}, - {0xff2a, 3339, 1}, + {0xabb7, 1813, 1}, - {0x1e54, 1987, 1}, - {0xffffffff, -1, 0}, + {0x01b3, 402, 1}, - {0x0154, 291, 1}, + {0x1fb3, 62, 2}, - {0x1f54, 57, 3}, + {0x0506, 1285, 1}, - {0x0528, 1333, 1}, + {0x0206, 511, 1}, - {0x0054, 56, 1}, + {0xa7b3, 3330, 1}, - {0xa754, 3198, 1}, + {0x1cb3, 1567, 1}, - {0xff26, 3327, 1}, + {0xabb3, 1801, 1}, - {0x104ca, 3588, 1}, + {0x10422, 3513, 1}, - {0x020e, 523, 1}, + {0x0504, 1282, 1}, - {0xa656, 3048, 1}, + {0x0204, 508, 1}, - {0x1eca, 2150, 1}, + {0x1e22, 1918, 1}, - {0x10c4, 3002, 1}, + {0x0422, 954, 1}, - {0x01ca, 425, 1}, + {0x0122, 222, 1}, - {0x1fca, 2387, 1}, + {0xff26, 3348, 1}, - {0x2cca, 2846, 1}, + {0x2c22, 2678, 1}, - {0x00ca, 108, 1}, + {0xff35, 3393, 1}, - {0x020c, 520, 1}, + {0xa722, 3132, 1}, - {0xa654, 3045, 1}, + {0x104b1, 3534, 1}, - {0xff2e, 3351, 1}, + {0x0143, 267, 1}, - {0x1e9b, 2005, 1}, + {0x0500, 1276, 1}, - {0x0051, 46, 1}, + {0x0200, 502, 1}, - {0x10c2, 2996, 1}, + {0x0043, 6, 1}, - {0x1f9b, 184, 2}, + {0x01b1, 697, 1}, + {0xffffffff, -1, 0}, - {0x0524, 1327, 1}, + {0x2163, 2456, 1}, {0xffffffff, -1, 0}, - {0x0214, 532, 1}, + {0xa7b1, 688, 1}, - {0x1c9b, 1492, 1}, + {0x1cb1, 1561, 1}, - {0xab9b, 1726, 1}, + {0xabb1, 1795, 1}, - {0x10c9b, 3699, 1}, + {0x10cb1, 3786, 1}, - {0xff2c, 3345, 1}, - {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0x0526, 1333, 1}, - {0x10b7, 2963, 1}, + {0x0226, 556, 1}, - {0x0522, 1324, 1}, + {0x0535, 1360, 1}, - {0x1e91c, 4047, 1}, + {0x10bf, 2993, 1}, - {0x0395, 755, 1}, + {0x03a9, 826, 1}, - {0x0208, 514, 1}, + {0x01a7, 393, 1}, + + {0x1fa7, 244, 2}, - {0x118b7, 3840, 1}, + {0x1e916, 4050, 1}, - {0x24cd, 2561, 1}, + {0x118bf, 3885, 1}, {0xffffffff, -1, 0}, - {0xff28, 3333, 1}, + {0x1ca7, 1531, 1}, - {0x104c3, 3567, 1}, - {0xffffffff, -1, 0}, + {0xaba7, 1765, 1}, - {0x104b1, 3513, 1}, + {0x10ca7, 3756, 1}, - {0x0206, 511, 1}, + {0x054d, 1432, 1}, - {0x04c3, 1180, 1}, + {0x1f6b, 2366, 1}, - {0x10b3, 2951, 1}, + {0x2c6b, 2732, 1}, - {0x1fc3, 71, 2}, + {0x10ab, 2933, 1}, - {0x01b1, 694, 1}, + {0x1e48, 1975, 1}, + {0xffffffff, -1, 0}, - {0x00c3, 86, 1}, + {0xff2c, 3366, 1}, - {0x0204, 508, 1}, + {0x1f48, 2327, 1}, - {0x118b3, 3828, 1}, + {0x118ab, 3825, 1}, - {0xa7b1, 685, 1}, + {0x0048, 21, 1}, - {0x1cb1, 1558, 1}, + {0xa748, 3186, 1}, - {0xabb1, 1792, 1}, + {0x1e88, 2072, 1}, - {0x10cb1, 3765, 1}, + {0x1f69, 2360, 1}, - {0x10ab, 2927, 1}, + {0x2c69, 2729, 1}, - {0x24c9, 2549, 1}, + {0x1f88, 129, 2}, - {0x0200, 502, 1}, + {0x2c88, 2753, 1}, {0xffffffff, -1, 0}, - {0xff24, 3321, 1}, + {0xff28, 3354, 1}, - {0x118ab, 3804, 1}, + {0x1c88, 3035, 1}, - {0x0531, 1345, 1}, + {0xab88, 1672, 1}, - {0x053f, 1387, 1}, + {0x10c88, 3663, 1}, - {0x10420, 3486, 1}, + {0x1e42, 1966, 1}, - {0x022a, 562, 1}, - - {0x24c4, 2534, 1}, + {0xa648, 3032, 1}, - {0x1e20, 1909, 1}, + {0x052c, 1342, 1}, - {0x0420, 944, 1}, + {0x022c, 565, 1}, - {0x0120, 219, 1}, + {0x10b7, 2969, 1}, - {0xff22, 3315, 1}, + {0x0042, 3, 1}, - {0x2c20, 2666, 1}, + {0xa742, 3177, 1}, {0xffffffff, -1, 0}, - {0x0226, 556, 1}, + {0xa688, 3102, 1}, - {0x01a9, 682, 1}, + {0x118b7, 3861, 1}, - {0x1fa9, 214, 2}, + {0x216d, 2486, 1}, - {0x24c2, 2528, 1}, + {0x10b3, 2957, 1}, - {0x01a7, 393, 1}, + {0xff24, 3342, 1}, - {0x1fa7, 244, 2}, + {0x0528, 1336, 1}, - {0x1ca9, 1534, 1}, + {0x0228, 559, 1}, - {0xaba9, 1768, 1}, + {0x03e0, 860, 1}, - {0x10ca9, 3741, 1}, + {0x118b3, 3849, 1}, - {0x1ca7, 1528, 1}, + {0x1e56, 1996, 1}, - {0xaba7, 1762, 1}, + {0xa642, 3023, 1}, - {0x10ca7, 3735, 1}, + {0x0156, 294, 1}, - {0x022e, 568, 1}, + {0x1f56, 62, 3}, - {0x1e88, 2066, 1}, + {0x16e4d, 3927, 1}, - {0x24b7, 2495, 1}, - {0xffffffff, -1, 0}, + {0x0056, 62, 1}, - {0x1f88, 129, 2}, + {0xa756, 3207, 1}, - {0x2c88, 2747, 1}, - {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0x24bf, 2525, 1}, - {0x1c88, 3029, 1}, + {0x1f59, 2345, 1}, - {0xab88, 1669, 1}, + {0x1e4e, 1984, 1}, - {0x10c88, 3642, 1}, + {0x0059, 71, 1}, - {0x022c, 565, 1}, - {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0x014e, 282, 1}, - {0xff31, 3360, 1}, + {0x0524, 1330, 1}, - {0x1e52, 1984, 1}, + {0x0224, 553, 1}, - {0x0556, 1456, 1}, + {0x004e, 37, 1}, - {0x0152, 288, 1}, + {0xa74e, 3195, 1}, - {0x1f52, 52, 3}, + {0x10b1, 2951, 1}, - {0xa688, 3096, 1}, + {0x042d, 990, 1}, - {0x0052, 49, 1}, + {0xa656, 3054, 1}, - {0xa752, 3195, 1}, + {0x1f2d, 2294, 1}, - {0x0228, 559, 1}, + {0x2c2d, 2711, 1}, - {0x1e50, 1981, 1}, + {0x118b1, 3843, 1}, - {0x0554, 1450, 1}, + {0xff22, 3336, 1}, - {0x0150, 285, 1}, + {0x03f4, 768, 1}, - {0x1f50, 84, 2}, + {0x042f, 996, 1}, - {0x1041e, 3480, 1}, + {0x1e91c, 4068, 1}, - {0x0050, 43, 1}, + {0x1f2f, 2300, 1}, - {0xa750, 3192, 1}, + {0xa64e, 3042, 1}, - {0x1e1e, 1906, 1}, + {0x104ce, 3621, 1}, - {0x041e, 937, 1}, + {0x10a7, 2921, 1}, - {0x011e, 216, 1}, + {0x2126, 826, 1}, - {0xa652, 3042, 1}, + {0x1ece, 2162, 1}, - {0x2c1e, 2660, 1}, + {0xfb14, 109, 2}, + {0xffffffff, -1, 0}, - {0x03c2, 803, 1}, + {0x118a7, 3813, 1}, - {0x10c3, 2999, 1}, - {0xffffffff, -1, 0}, + {0x2cce, 2858, 1}, - {0x10b1, 2945, 1}, + {0x00ce, 120, 1}, - {0x03d1, 765, 1}, + {0x104b9, 3558, 1}, - {0x0551, 1441, 1}, + {0x038c, 836, 1}, - {0xa650, 3039, 1}, + {0x0522, 1327, 1}, - {0x0224, 553, 1}, + {0x0222, 550, 1}, - {0x118b1, 3822, 1}, + {0xff33, 3387, 1}, - {0x1e4e, 1978, 1}, - {0xffffffff, -1, 0}, + {0x24b7, 2501, 1}, - {0x014e, 282, 1}, - {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0x1fb9, 2426, 1}, - {0x004e, 37, 1}, + {0xfb06, 29, 2}, - {0xa74e, 3189, 1}, + {0x0543, 1402, 1}, - {0x10412, 3444, 1}, + {0x0243, 354, 1}, - {0x0222, 550, 1}, + {0x1cb9, 1585, 1}, - {0x16e56, 3933, 1}, + {0xabb9, 1819, 1}, - {0x1e12, 1888, 1}, + {0x1e54, 1993, 1}, - {0x0412, 899, 1}, + {0xfb04, 5, 3}, - {0x0112, 198, 1}, + {0x0154, 291, 1}, + + {0x1f54, 57, 3}, - {0x24ca, 2552, 1}, + {0xff31, 3381, 1}, - {0x2c12, 2624, 1}, + {0x0054, 56, 1}, - {0x018f, 625, 1}, + {0xa754, 3204, 1}, + {0xffffffff, -1, 0}, - {0x1f8f, 164, 2}, + {0x1e52, 1990, 1}, - {0x16e54, 3927, 1}, + {0x0533, 1354, 1}, - {0xa64e, 3036, 1}, + {0x0152, 288, 1}, - {0x004f, 40, 1}, + {0x1f52, 52, 3}, - {0x10a9, 2921, 1}, + {0xfb00, 4, 2}, - {0xab8f, 1690, 1}, + {0x0052, 49, 1}, - {0x10c8f, 3663, 1}, + {0xa752, 3201, 1}, - {0x10a7, 2915, 1}, + {0x03ab, 833, 1}, + {0xffffffff, -1, 0}, - {0x1e48, 1969, 1}, + {0x1e50, 1987, 1}, - {0x118a9, 3798, 1}, + {0xa654, 3051, 1}, - {0x03ab, 830, 1}, + {0x0150, 285, 1}, - {0x1f48, 2321, 1}, + {0x1f50, 84, 2}, - {0x118a7, 3792, 1}, + {0x0531, 1348, 1}, - {0x0048, 21, 1}, + {0x0050, 43, 1}, - {0xa748, 3180, 1}, + {0xa750, 3198, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, - {0x10410, 3438, 1}, - {0xffffffff, -1, 0}, + {0xa652, 3048, 1}, - {0x16e51, 3918, 1}, + {0x0548, 1417, 1}, - {0x1e10, 1885, 1}, + {0x0248, 592, 1}, - {0x0410, 893, 1}, + {0x10420, 3507, 1}, - {0x0110, 195, 1}, + {0x013f, 261, 1}, - {0x104c0, 3558, 1}, + {0x1f3f, 2324, 1}, - {0x2c10, 2618, 1}, + {0x1e20, 1915, 1}, - {0x1e91a, 4041, 1}, + {0x0420, 947, 1}, - {0x1ec0, 2135, 1}, + {0x0120, 219, 1}, - {0x04c0, 1198, 1}, + {0xa650, 3045, 1}, - {0xa648, 3026, 1}, + {0x2c20, 2672, 1}, {0xffffffff, -1, 0}, - {0x2cc0, 2831, 1}, + {0x16e43, 3897, 1}, + {0xffffffff, -1, 0}, - {0x00c0, 77, 1}, + {0x1e91a, 4062, 1}, {0xffffffff, -1, 0}, - {0x24c3, 2531, 1}, + {0x1041e, 3501, 1}, + {0xffffffff, -1, 0}, - {0x0520, 1321, 1}, + {0x0542, 1399, 1}, - {0x104c8, 3582, 1}, + {0x1e1e, 1912, 1}, - {0x1e918, 4035, 1}, - {0xffffffff, -1, 0}, + {0x041e, 940, 1}, - {0x1ec8, 2147, 1}, + {0x011e, 216, 1}, - {0xfb14, 109, 2}, + {0x1e918, 4056, 1}, - {0x01c8, 421, 1}, + {0x2c1e, 2666, 1}, - {0x1fc8, 2381, 1}, + {0x10412, 3465, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, - {0x2cc8, 2843, 1}, + {0x1e12, 1894, 1}, - {0x00c8, 102, 1}, + {0x0412, 902, 1}, - {0x104b9, 3537, 1}, + {0x0112, 198, 1}, - {0x1efc, 2225, 1}, + {0x1e90e, 4026, 1}, - {0x04fc, 1267, 1}, + {0x2c12, 2630, 1}, + {0xffffffff, -1, 0}, - {0x01fc, 496, 1}, + {0x10410, 3459, 1}, - {0x1ffc, 96, 2}, + {0xff2d, 3369, 1}, - {0x1e90e, 4005, 1}, + {0x0556, 1459, 1}, - {0x1fb9, 2420, 1}, + {0x1e10, 1891, 1}, - {0x104b5, 3525, 1}, + {0x0410, 896, 1}, - {0x039b, 779, 1}, + {0x0110, 195, 1}, {0xffffffff, -1, 0}, - {0x1cb9, 1582, 1}, + {0x2c10, 2624, 1}, - {0xabb9, 1816, 1}, + {0xff2f, 3375, 1}, - {0x01b5, 405, 1}, + {0x10b9, 2975, 1}, - {0x1e90c, 3999, 1}, + {0x16e48, 3912, 1}, - {0xfb06, 29, 2}, + {0x054e, 1435, 1}, - {0x00b5, 782, 1}, - {0xffffffff, -1, 0}, + {0x024e, 601, 1}, - {0x1cb5, 1570, 1}, + {0x1e90c, 4020, 1}, - {0xabb5, 1804, 1}, + {0x118b9, 3867, 1}, {0xffffffff, -1, 0}, - {0xfb04, 5, 3}, + {0x104ca, 3609, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, - {0x1fad, 234, 2}, + {0x1eca, 2156, 1}, - {0x1e914, 4023, 1}, + {0x03a7, 820, 1}, - {0x0552, 1444, 1}, + {0x01ca, 425, 1}, - {0xa7ad, 661, 1}, + {0x1fca, 2393, 1}, - {0x1cad, 1546, 1}, + {0x2cca, 2852, 1}, - {0xabad, 1780, 1}, + {0x00ca, 108, 1}, - {0x10cad, 3753, 1}, + {0x104c8, 3603, 1}, + {0xffffffff, -1, 0}, - {0xfb00, 4, 2}, + {0x16e42, 3894, 1}, - {0x01af, 399, 1}, + {0x1ec8, 2153, 1}, - {0x1faf, 244, 2}, + {0x1e908, 4008, 1}, - {0x0550, 1438, 1}, - {0xffffffff, -1, 0}, + {0x01c8, 421, 1}, - {0x1e908, 3987, 1}, + {0x1fc8, 2387, 1}, - {0x1caf, 1552, 1}, + {0x2cc8, 2849, 1}, - {0xabaf, 1786, 1}, + {0x00c8, 102, 1}, - {0x10caf, 3759, 1}, - {0xffffffff, -1, 0}, + {0x1e6c, 2030, 1}, - {0x051e, 1318, 1}, + {0x046c, 1066, 1}, - {0x018b, 366, 1}, + {0x016c, 327, 1}, - {0x1f8b, 144, 2}, + {0x1f6c, 2369, 1}, - {0x1e906, 3981, 1}, - {0xffffffff, -1, 0}, + {0x1e914, 4044, 1}, - {0xa78b, 3261, 1}, + {0x104c6, 3597, 1}, - {0x1fa5, 234, 2}, + {0xa76c, 3240, 1}, - {0xab8b, 1678, 1}, + {0x0388, 736, 1}, - {0x10c8b, 3651, 1}, + {0x1ec6, 2150, 1}, - {0x1e904, 3975, 1}, + {0x216b, 2480, 1}, - {0x1ca5, 1522, 1}, + {0x16e56, 3954, 1}, - {0xaba5, 1756, 1}, + {0x1fc6, 67, 2}, - {0x10ca5, 3729, 1}, - {0xffffffff, -1, 0}, + {0x2cc6, 2846, 1}, - {0x054e, 1432, 1}, + {0x00c6, 96, 1}, - {0x1eda, 2174, 1}, + {0xa7c6, 1864, 1}, - {0x04da, 1216, 1}, + {0x16e59, 3963, 1}, - {0x1e900, 3963, 1}, + {0x1e906, 4002, 1}, - {0x1fda, 2393, 1}, + {0x0554, 1453, 1}, - {0x2cda, 2870, 1}, + {0xa66c, 3087, 1}, - {0x00da, 153, 1}, + {0x16e4e, 3930, 1}, - {0x10c0, 2990, 1}, + {0x2169, 2474, 1}, - {0x16e52, 3921, 1}, + {0x24ce, 2570, 1}, - {0x03a9, 823, 1}, + {0x1e904, 3996, 1}, - {0x0512, 1300, 1}, + {0x104c5, 3594, 1}, {0xffffffff, -1, 0}, - {0x03a7, 817, 1}, + {0x0552, 1447, 1}, + {0xffffffff, -1, 0}, - {0x1fa3, 224, 2}, + {0x04c5, 1186, 1}, - {0x054f, 1435, 1}, + {0x01c5, 417, 1}, {0xffffffff, -1, 0}, - {0x16e50, 3915, 1}, + {0x24b9, 2507, 1}, + + {0x00c5, 92, 1}, - {0x1ca3, 1516, 1}, + {0xa7c5, 682, 1}, - {0xaba3, 1750, 1}, + {0x1e900, 3984, 1}, - {0x10ca3, 3723, 1}, + {0x0550, 1441, 1}, - {0x13fc, 1849, 1}, + {0x104c0, 3579, 1}, - {0x1fa1, 214, 2}, + {0x104b5, 3546, 1}, {0xffffffff, -1, 0}, - {0x0388, 733, 1}, + {0x1ec0, 2141, 1}, - {0x0548, 1414, 1}, + {0x04c0, 1201, 1}, + {0xffffffff, -1, 0}, - {0x1ca1, 1510, 1}, + {0x01b5, 405, 1}, - {0xaba1, 1744, 1}, + {0x2cc0, 2837, 1}, - {0x10ca1, 3717, 1}, + {0x00c0, 77, 1}, - {0x10b9, 2969, 1}, + {0x00b5, 785, 1}, - {0x1ef4, 2213, 1}, + {0x053f, 1390, 1}, - {0x04f4, 1255, 1}, + {0x1cb5, 1573, 1}, - {0x01f4, 487, 1}, + {0xabb5, 1807, 1}, - {0x1ff4, 101, 2}, + {0x1fad, 234, 2}, - {0x118b9, 3846, 1}, + {0x0520, 1324, 1}, - {0x0510, 1297, 1}, + {0x0220, 381, 1}, - {0x10b5, 2957, 1}, + {0xa7ad, 661, 1}, - {0x104cf, 3603, 1}, + {0x1cad, 1549, 1}, - {0x16e4e, 3909, 1}, - {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xabad, 1783, 1}, - {0x118b5, 3834, 1}, + {0x10cad, 3774, 1}, - {0x01cf, 432, 1}, + {0x1efc, 2231, 1}, - {0x0220, 381, 1}, + {0x04fc, 1270, 1}, - {0x10ad, 2933, 1}, + {0x01fc, 496, 1}, - {0x00cf, 123, 1}, - {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0x1ffc, 96, 2}, - {0x1e97, 34, 2}, + {0x16e54, 3948, 1}, - {0x118ad, 3810, 1}, + {0x1fa5, 234, 2}, + {0xffffffff, -1, 0}, - {0x0197, 649, 1}, + {0x051e, 1321, 1}, - {0x1f97, 204, 2}, + {0x021e, 547, 1}, - {0x16e4f, 3912, 1}, + {0x1ca5, 1525, 1}, - {0x10af, 2939, 1}, - {0xffffffff, -1, 0}, + {0xaba5, 1759, 1}, - {0x1c97, 1480, 1}, + {0x10ca5, 3750, 1}, - {0xab97, 1714, 1}, + {0x16e52, 3942, 1}, - {0x10c97, 3687, 1}, + {0x01af, 399, 1}, - {0x118af, 3816, 1}, + {0x1faf, 244, 2}, - {0x0181, 613, 1}, + {0x0512, 1303, 1}, - {0x1f81, 134, 2}, + {0x0212, 529, 1}, {0xffffffff, -1, 0}, - {0x16e48, 3891, 1}, + {0x1caf, 1555, 1}, - {0x24c0, 2522, 1}, + {0xabaf, 1789, 1}, - {0x1c81, 906, 1}, + {0x10caf, 3780, 1}, - {0xab81, 1648, 1}, + {0x16e50, 3936, 1}, - {0x10c81, 3621, 1}, + {0x1fa3, 224, 2}, + {0xffffffff, -1, 0}, - {0x10a5, 2909, 1}, + {0x0510, 1300, 1}, - {0x1e6c, 2024, 1}, + {0x0210, 526, 1}, - {0x046c, 1063, 1}, + {0x1ca3, 1519, 1}, - {0x016c, 327, 1}, + {0xaba3, 1753, 1}, - {0x1f6c, 2363, 1}, + {0x10ca3, 3744, 1}, - {0x118a5, 3786, 1}, - {0xffffffff, -1, 0}, + {0x0429, 977, 1}, - {0xa76c, 3234, 1}, + {0x1fa1, 214, 2}, - {0x24c8, 2546, 1}, + {0x1f29, 2282, 1}, - {0x1e6a, 2021, 1}, + {0x2c29, 2699, 1}, + {0xffffffff, -1, 0}, - {0x046a, 1060, 1}, + {0x1ca1, 1513, 1}, - {0x016a, 324, 1}, + {0xaba1, 1747, 1}, - {0x1f6a, 2357, 1}, + {0x10ca1, 3738, 1}, - {0x038f, 839, 1}, + {0x1e6a, 2027, 1}, - {0x1e32, 1936, 1}, + {0x046a, 1063, 1}, - {0xa76a, 3231, 1}, + {0x016a, 324, 1}, - {0x0132, 243, 1}, + {0x1f6a, 2363, 1}, - {0x24b9, 2501, 1}, + {0x1e46, 1972, 1}, {0xffffffff, -1, 0}, - {0xa66c, 3081, 1}, + {0xa76a, 3237, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, - {0xa732, 3147, 1}, + {0x0046, 15, 1}, - {0x10a3, 2903, 1}, - {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xa746, 3183, 1}, - {0x021e, 547, 1}, + {0x10c5, 3011, 1}, {0xffffffff, -1, 0}, - {0x118a3, 3780, 1}, + {0x1e68, 2024, 1}, - {0xa66a, 3078, 1}, + {0x0468, 1060, 1}, - {0x1f59, 2339, 1}, + {0x0168, 321, 1}, - {0x10a1, 2897, 1}, + {0x1f68, 2357, 1}, + {0xffffffff, -1, 0}, - {0x0059, 71, 1}, + {0xa66a, 3084, 1}, - {0x1e64, 2012, 1}, + {0xa768, 3234, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, - {0x0464, 1051, 1}, + {0xa646, 3029, 1}, - {0x0164, 315, 1}, + {0x10c0, 2996, 1}, - {0x118a1, 3774, 1}, + {0x10b5, 2963, 1}, - {0x2c64, 676, 1}, - {0xffffffff, -1, 0}, + {0x24ca, 2558, 1}, - {0xa764, 3222, 1}, + {0x13fc, 1852, 1}, - {0x024e, 601, 1}, + {0x1e44, 1969, 1}, + {0xffffffff, -1, 0}, - {0x1e68, 2018, 1}, + {0x118b5, 3855, 1}, - {0x0468, 1057, 1}, + {0x10ad, 2939, 1}, - {0x0168, 321, 1}, + {0xa668, 3081, 1}, - {0x1f68, 2351, 1}, + {0x0044, 9, 1}, - {0x10417, 3459, 1}, + {0xa744, 3180, 1}, - {0x042f, 993, 1}, + {0x24c8, 2552, 1}, - {0xa768, 3228, 1}, + {0x118ad, 3831, 1}, + {0xffffffff, -1, 0}, - {0x1f2f, 2294, 1}, + {0x1e64, 2018, 1}, - {0x0417, 916, 1}, + {0x0464, 1054, 1}, - {0x0212, 529, 1}, + {0x0164, 315, 1}, + {0xffffffff, -1, 0}, - {0xa664, 3069, 1}, + {0x2c64, 676, 1}, - {0x2c17, 2639, 1}, + {0x10a5, 2915, 1}, - {0x216c, 2477, 1}, + {0xa764, 3228, 1}, + {0xffffffff, -1, 0}, - {0x1e62, 2009, 1}, + {0xa644, 3026, 1}, + {0xffffffff, -1, 0}, - {0x0462, 1047, 1}, + {0x118a5, 3807, 1}, - {0x0162, 312, 1}, + {0x24c6, 2546, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, - {0x1e46, 1966, 1}, + {0x10af, 2945, 1}, - {0x2c62, 658, 1}, + {0x1e32, 1942, 1}, + {0xffffffff, -1, 0}, - {0xa668, 3075, 1}, + {0x0132, 243, 1}, - {0xa762, 3219, 1}, + {0xa664, 3075, 1}, - {0x216a, 2471, 1}, + {0x118af, 3837, 1}, - {0x0046, 15, 1}, + {0x104cb, 3612, 1}, - {0xa746, 3177, 1}, + {0xa732, 3153, 1}, - {0x0248, 592, 1}, + {0x10a3, 2909, 1}, {0xffffffff, -1, 0}, - {0x2132, 2438, 1}, + {0x04cb, 1195, 1}, - {0x1e60, 2005, 1}, + {0x01cb, 425, 1}, - {0x0460, 1044, 1}, + {0x1fcb, 2396, 1}, - {0x0160, 309, 1}, + {0x118a3, 3801, 1}, + + {0x00cb, 111, 1}, + + {0x24c5, 2543, 1}, + + {0x10a1, 2903, 1}, {0xffffffff, -1, 0}, - {0x2c60, 2711, 1}, + {0x1e62, 2015, 1}, - {0xa662, 3066, 1}, + {0x0462, 1050, 1}, - {0xa760, 3216, 1}, + {0x0162, 312, 1}, - {0x0210, 526, 1}, + {0x118a1, 3795, 1}, - {0xa646, 3023, 1}, + {0x2c62, 658, 1}, + {0xffffffff, -1, 0}, - {0x1e44, 1963, 1}, + {0xa762, 3225, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, - {0x1eec, 2201, 1}, + {0x24c0, 2528, 1}, - {0x04ec, 1243, 1}, + {0x1e60, 2011, 1}, - {0x01ec, 477, 1}, + {0x0460, 1047, 1}, - {0x1fec, 2435, 1}, + {0x0160, 309, 1}, + {0xffffffff, -1, 0}, - {0x0044, 9, 1}, + {0x2c60, 2717, 1}, - {0xa744, 3174, 1}, + {0xff29, 3357, 1}, - {0x2164, 2453, 1}, + {0xa760, 3222, 1}, {0xffffffff, -1, 0}, - {0xa660, 3063, 1}, + {0xa662, 3072, 1}, - {0x1ee2, 2186, 1}, + {0x1ee2, 2192, 1}, - {0x04e2, 1228, 1}, + {0x04e2, 1231, 1}, {0x01e2, 462, 1}, {0x1fe2, 36, 3}, - {0x2ce2, 2882, 1}, + {0x2ce2, 2888, 1}, - {0x2168, 2465, 1}, + {0x042b, 984, 1}, + {0xffffffff, -1, 0}, - {0x1ed8, 2171, 1}, + {0x1f2b, 2288, 1}, - {0x04d8, 1213, 1}, + {0x2c2b, 2705, 1}, - {0xa644, 3020, 1}, + {0xa660, 3069, 1}, + {0xffffffff, -1, 0}, - {0x1fd8, 2423, 1}, + {0x216c, 2483, 1}, - {0x2cd8, 2867, 1}, + {0x1eda, 2180, 1}, - {0x00d8, 147, 1}, + {0x04da, 1219, 1}, - {0x1ede, 2180, 1}, + {0x104bd, 3570, 1}, - {0x04de, 1222, 1}, + {0x1fda, 2399, 1}, - {0x01de, 456, 1}, + {0x2cda, 2876, 1}, - {0x03a5, 810, 1}, + {0x00da, 153, 1}, - {0x2cde, 2876, 1}, + {0x1ed8, 2177, 1}, - {0x00de, 165, 1}, + {0x04d8, 1216, 1}, + {0xffffffff, -1, 0}, - {0x2162, 2447, 1}, + {0x1fd8, 2429, 1}, - {0x1ed6, 2168, 1}, + {0x2cd8, 2873, 1}, - {0x04d6, 1210, 1}, + {0x00d8, 147, 1}, - {0x24cf, 2567, 1}, + {0x1cbd, 1591, 1}, - {0x1fd6, 76, 2}, + {0xabbd, 1831, 1}, - {0x2cd6, 2864, 1}, + {0x0546, 1411, 1}, - {0x00d6, 144, 1}, - {0xffffffff, -1, 0}, + {0x0246, 589, 1}, - {0x104d2, 3612, 1}, + {0x1ed6, 2174, 1}, - {0x03da, 848, 1}, + {0x04d6, 1213, 1}, {0xffffffff, -1, 0}, - {0x1ed2, 2162, 1}, + {0x1fd6, 76, 2}, - {0x04d2, 1204, 1}, + {0x2cd6, 2870, 1}, - {0x2160, 2441, 1}, + {0x00d6, 144, 1}, - {0x1fd2, 20, 3}, + {0x104d2, 3633, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, - {0x2cd2, 2858, 1}, + {0x1ed2, 2168, 1}, - {0x00d2, 132, 1}, + {0x04d2, 1207, 1}, - {0x104d0, 3606, 1}, + {0x10427, 3528, 1}, - {0x03a3, 803, 1}, - {0xffffffff, -1, 0}, + {0x1fd2, 20, 3}, + + {0x2cd2, 2864, 1}, - {0x1ed0, 2159, 1}, + {0x00d2, 132, 1}, - {0x04d0, 1201, 1}, + {0x0427, 971, 1}, - {0x0532, 1348, 1}, + {0x104d0, 3627, 1}, {0xffffffff, -1, 0}, - {0x2cd0, 2855, 1}, - - {0x00d0, 126, 1}, + {0x2c27, 2693, 1}, - {0x03a1, 799, 1}, + {0x1ed0, 2165, 1}, - {0x104cc, 3594, 1}, + {0x04d0, 1204, 1}, - {0x104bf, 3555, 1}, + {0x0544, 1405, 1}, - {0x042d, 987, 1}, + {0x0244, 694, 1}, - {0x1ecc, 2153, 1}, + {0x2cd0, 2861, 1}, - {0x1f2d, 2288, 1}, + {0x00d0, 126, 1}, - {0x2c2d, 2705, 1}, + {0x03a5, 813, 1}, - {0x1fcc, 71, 2}, + {0x104cd, 3618, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, - {0x2ccc, 2849, 1}, + {0xff32, 3384, 1}, - {0x00cc, 114, 1}, + {0x04cd, 1198, 1}, - {0x104cb, 3591, 1}, + {0x01cd, 429, 1}, + {0xffffffff, -1, 0}, - {0x03f4, 765, 1}, + {0x104c3, 3588, 1}, - {0x1cbf, 1594, 1}, + {0x00cd, 117, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, - {0xabbf, 1834, 1}, + {0x04c3, 1183, 1}, - {0x04cb, 1192, 1}, + {0x104bb, 3564, 1}, - {0x01cb, 425, 1}, + {0x1fc3, 71, 2}, - {0x1fcb, 2390, 1}, + {0x16e46, 3906, 1}, - {0x104c6, 3576, 1}, + {0x00c3, 86, 1}, - {0x00cb, 111, 1}, + {0x03a3, 806, 1}, {0xffffffff, -1, 0}, - {0x1ec6, 2144, 1}, + {0x1fbb, 2384, 1}, - {0x03cf, 842, 1}, + {0x104cc, 3615, 1}, - {0x104c5, 3573, 1}, + {0x0532, 1351, 1}, - {0x1fc6, 67, 2}, - - {0x2cc6, 2840, 1}, - - {0x00c6, 96, 1}, + {0x0232, 574, 1}, - {0x04c5, 1183, 1}, + {0x1ecc, 2159, 1}, - {0x01c5, 417, 1}, + {0xabbb, 1825, 1}, - {0x104bd, 3549, 1}, + {0x03a1, 802, 1}, - {0x0397, 762, 1}, + {0x1fcc, 71, 2}, - {0x00c5, 92, 1}, - {0xffffffff, -1, 0}, + {0x2ccc, 2855, 1}, - {0x1e920, 4059, 1}, + {0x00cc, 114, 1}, - {0xff32, 3363, 1}, + {0x019d, 670, 1}, - {0x104bb, 3543, 1}, - {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0x1f9d, 194, 2}, - {0x0546, 1408, 1}, + {0x1e78, 2048, 1}, - {0x1cbd, 1588, 1}, + {0x0478, 1084, 1}, - {0xabbd, 1828, 1}, + {0x0178, 168, 1}, - {0x1fbb, 2378, 1}, + {0x1c9d, 1501, 1}, - {0x019f, 673, 1}, + {0xab9d, 1735, 1}, - {0x1f9f, 204, 2}, + {0x10c9d, 3726, 1}, {0xffffffff, -1, 0}, - {0x16e59, 3942, 1}, - - {0xabbb, 1822, 1}, + {0x16e44, 3900, 1}, - {0x1c9f, 1504, 1}, + {0xab78, 1624, 1}, - {0xab9f, 1738, 1}, + {0x1e9b, 2011, 1}, - {0x10c9f, 3711, 1}, + {0x10bd, 2987, 1}, + {0xffffffff, -1, 0}, - {0x1ef0, 2207, 1}, + {0x1f9b, 184, 2}, - {0x04f0, 1249, 1}, + {0xff2b, 3363, 1}, + {0xffffffff, -1, 0}, - {0x01f0, 20, 2}, + {0x118bd, 3879, 1}, - {0x019d, 670, 1}, + {0x1c9b, 1495, 1}, - {0x1f9d, 194, 2}, - {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xab9b, 1729, 1}, - {0x0544, 1402, 1}, + {0x10c9b, 3720, 1}, - {0x1c9d, 1498, 1}, + {0x216a, 2477, 1}, - {0xab9d, 1732, 1}, - - {0x10c9d, 3705, 1}, + {0x24cb, 2561, 1}, {0x1e99, 42, 2}, - {0xffffffff, -1, 0}, - {0xff2f, 3354, 1}, + {0x1e920, 4080, 1}, + {0xffffffff, -1, 0}, {0x1f99, 174, 2}, - {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, - {0x0193, 634, 1}, + {0x1c99, 1489, 1}, - {0x1f93, 184, 2}, + {0xab99, 1723, 1}, - {0x1c99, 1486, 1}, + {0x10c99, 3714, 1}, + {0xffffffff, -1, 0}, - {0xab99, 1720, 1}, + {0x2168, 2471, 1}, - {0x10c99, 3693, 1}, + {0x0193, 634, 1}, - {0x1c93, 1468, 1}, + {0x1f93, 184, 2}, - {0xab93, 1702, 1}, + {0x1e91e, 4074, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, - {0x10c93, 3675, 1}, + {0x1c93, 1471, 1}, - {0x0145, 270, 1}, + {0xab93, 1705, 1}, - {0x16e46, 3885, 1}, - {0xffffffff, -1, 0}, - - {0x0045, 12, 1}, - {0xffffffff, -1, 0}, + {0x10c93, 3696, 1}, {0x0191, 369, 1}, {0x1f91, 174, 2}, - {0x1e91e, 4053, 1}, - {0xffffffff, -1, 0}, - - {0x10bf, 2987, 1}, + {0x1e912, 4038, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, - {0x1c91, 1462, 1}, + {0x1c91, 1465, 1}, - {0xab91, 1696, 1}, + {0xab91, 1699, 1}, - {0x10c91, 3669, 1}, + {0x10c91, 3690, 1}, {0xffffffff, -1, 0}, - {0x118bf, 3864, 1}, - {0xffffffff, -1, 0}, + {0x10cd, 3017, 1}, - {0x0187, 363, 1}, + {0xff27, 3351, 1}, - {0x1f87, 164, 2}, - {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0x1e910, 4032, 1}, - {0x16e44, 3879, 1}, + {0x0187, 363, 1}, - {0x1c87, 1047, 1}, + {0x1f87, 164, 2}, - {0xab87, 1666, 1}, + {0x0055, 59, 1}, - {0x10c87, 3639, 1}, + {0x2164, 2459, 1}, - {0x1e72, 2033, 1}, + {0x10c3, 3005, 1}, - {0x0472, 1072, 1}, + {0x1c87, 1050, 1}, - {0x0172, 336, 1}, + {0xab87, 1669, 1}, - {0x0232, 574, 1}, + {0x10c87, 3660, 1}, - {0x2c72, 2729, 1}, + {0x0145, 270, 1}, - {0x10c5, 3005, 1}, + {0x10bb, 2981, 1}, {0xffffffff, -1, 0}, - {0x1e912, 4017, 1}, - - {0xab72, 1603, 1}, - - {0x0139, 252, 1}, - - {0x1f39, 2300, 1}, + {0x0045, 12, 1}, - {0x10bd, 2981, 1}, + {0x24bd, 2519, 1}, + {0xffffffff, -1, 0}, - {0x1e66, 2015, 1}, + {0x118bb, 3873, 1}, - {0x0466, 1054, 1}, + {0x1e72, 2039, 1}, - {0x0166, 318, 1}, - {0xffffffff, -1, 0}, + {0x0472, 1075, 1}, - {0x118bd, 3858, 1}, + {0x0172, 336, 1}, - {0x10bb, 2975, 1}, + {0x2132, 2444, 1}, - {0xa766, 3225, 1}, + {0x2c72, 2735, 1}, - {0x1e70, 2030, 1}, + {0x1e70, 2036, 1}, - {0x0470, 1069, 1}, + {0x0470, 1072, 1}, {0x0170, 333, 1}, - {0x118bb, 3852, 1}, + {0xab72, 1606, 1}, {0x2c70, 610, 1}, - {0x1edc, 2177, 1}, + {0x1e66, 2021, 1}, - {0x04dc, 1219, 1}, + {0x0466, 1057, 1}, - {0x03ec, 875, 1}, - - {0xab70, 1597, 1}, - - {0x2cdc, 2873, 1}, + {0x0166, 318, 1}, - {0x00dc, 159, 1}, + {0xab70, 1600, 1}, + {0xffffffff, -1, 0}, - {0xa666, 3072, 1}, + {0x1e3a, 1954, 1}, - {0x1e910, 4011, 1}, + {0xa766, 3231, 1}, - {0x1e5a, 1996, 1}, + {0x1e5a, 2002, 1}, - {0x0143, 267, 1}, + {0x1f3a, 2309, 1}, {0x015a, 300, 1}, - {0x03e2, 860, 1}, + {0x2162, 2453, 1}, - {0x0043, 6, 1}, + {0xa73a, 3165, 1}, {0x005a, 74, 1}, - {0xa75a, 3207, 1}, + {0xa75a, 3213, 1}, - {0x24cc, 2558, 1}, + {0x03e2, 863, 1}, + {0xffffffff, -1, 0}, - {0x24bf, 2519, 1}, + {0x104cf, 3624, 1}, - {0x03d8, 845, 1}, - {0xffffffff, -1, 0}, + {0x1e58, 1999, 1}, - {0x1e3a, 1948, 1}, + {0xa666, 3078, 1}, - {0x0246, 589, 1}, - {0xffffffff, -1, 0}, + {0x0158, 297, 1}, - {0x1f3a, 2303, 1}, + {0x2160, 2447, 1}, - {0x03de, 854, 1}, + {0x01cf, 432, 1}, - {0x24cb, 2555, 1}, + {0x0058, 68, 1}, - {0xa73a, 3159, 1}, + {0xa758, 3210, 1}, - {0xa65a, 3054, 1}, + {0x00cf, 123, 1}, - {0x1e58, 1993, 1}, + {0xa65a, 3060, 1}, - {0xff2d, 3348, 1}, + {0x03da, 851, 1}, - {0x0158, 297, 1}, + {0x24cd, 2567, 1}, - {0x03d6, 795, 1}, + {0x1eec, 2207, 1}, - {0x24c6, 2540, 1}, + {0x04ec, 1246, 1}, - {0x0058, 68, 1}, + {0x01ec, 477, 1}, - {0xa758, 3204, 1}, + {0x1fec, 2441, 1}, - {0x0141, 264, 1}, + {0x03d8, 848, 1}, - {0x1e42, 1960, 1}, + {0x212b, 92, 1}, - {0x24c5, 2537, 1}, + {0x24c3, 2537, 1}, - {0x0041, 0, 1}, + {0xa658, 3057, 1}, - {0x2166, 2459, 1}, + {0x1edc, 2183, 1}, - {0x0244, 691, 1}, + {0x04dc, 1222, 1}, + {0xffffffff, -1, 0}, - {0x0042, 3, 1}, + {0x24bb, 2513, 1}, - {0xa742, 3171, 1}, + {0x2cdc, 2879, 1}, - {0x24bd, 2513, 1}, + {0x00dc, 159, 1}, - {0x104ce, 3600, 1}, - {0xffffffff, -1, 0}, + {0x03d6, 798, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, - {0xa658, 3051, 1}, + {0x24cc, 2564, 1}, - {0x1ece, 2156, 1}, - {0xffffffff, -1, 0}, + {0x1eea, 2204, 1}, - {0x24bb, 2507, 1}, + {0x04ea, 1243, 1}, - {0x03d0, 745, 1}, + {0x01ea, 474, 1}, - {0x2cce, 2852, 1}, + {0x1fea, 2411, 1}, - {0x00ce, 120, 1}, - {0xffffffff, -1, 0}, + {0x1ee8, 2201, 1}, - {0xa642, 3017, 1}, + {0x04e8, 1240, 1}, - {0x1ef2, 2210, 1}, + {0x01e8, 471, 1}, - {0x04f2, 1252, 1}, + {0x1fe8, 2435, 1}, - {0x01f2, 483, 1}, + {0x1ee6, 2198, 1}, - {0x1ff2, 257, 2}, + {0x04e6, 1237, 1}, - {0x2cf2, 2891, 1}, - {0xffffffff, -1, 0}, + {0x01e6, 468, 1}, - {0x0545, 1405, 1}, + {0x1fe6, 88, 2}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, - {0x1eea, 2198, 1}, + {0x03d0, 748, 1}, - {0x04ea, 1240, 1}, + {0x1ee4, 2195, 1}, - {0x01ea, 474, 1}, + {0x04e4, 1234, 1}, - {0x1fea, 2405, 1}, + {0x01e4, 465, 1}, - {0x1ee8, 2195, 1}, + {0x1fe4, 80, 2}, - {0x04e8, 1237, 1}, + {0x104c9, 3606, 1}, - {0x01e8, 471, 1}, + {0x104c1, 3582, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, - {0x1fe8, 2429, 1}, + {0x04c9, 1192, 1}, - {0x1ee6, 2192, 1}, + {0x04c1, 1180, 1}, - {0x04e6, 1234, 1}, + {0x1fc9, 2390, 1}, - {0x01e6, 468, 1}, + {0x1f95, 194, 2}, - {0x1fe6, 88, 2}, + {0x00c9, 105, 1}, - {0x1f4b, 2330, 1}, + {0x00c1, 80, 1}, {0xffffffff, -1, 0}, - {0x004b, 27, 1}, + {0x1c95, 1477, 1}, - {0x0587, 105, 2}, + {0xab95, 1711, 1}, - {0x1ee4, 2189, 1}, + {0x10c95, 3702, 1}, - {0x04e4, 1231, 1}, + {0x018b, 366, 1}, - {0x01e4, 465, 1}, + {0x1f8b, 144, 2}, - {0x1fe4, 80, 2}, + {0x0555, 1456, 1}, - {0x104c1, 3561, 1}, + {0x0587, 105, 2}, - {0x1e5e, 2002, 1}, + {0xa78b, 3267, 1}, {0xffffffff, -1, 0}, - {0x015e, 306, 1}, + {0xab8b, 1681, 1}, - {0x04c1, 1177, 1}, + {0x10c8b, 3672, 1}, - {0x1f83, 144, 2}, - {0xffffffff, -1, 0}, + {0x1e76, 2045, 1}, - {0xa75e, 3213, 1}, + {0x0476, 1081, 1}, - {0x00c1, 80, 1}, + {0x0176, 342, 1}, - {0x1c83, 947, 1}, + {0x0545, 1408, 1}, - {0xab83, 1654, 1}, + {0x0245, 703, 1}, + {0xffffffff, -1, 0}, + + {0x039d, 789, 1}, - {0x10c83, 3627, 1}, + {0x1f83, 144, 2}, - {0x0539, 1369, 1}, + {0xab76, 1618, 1}, + {0xffffffff, -1, 0}, - {0x039f, 792, 1}, + {0xff3a, 3408, 1}, - {0x1e7e, 2051, 1}, + {0x1c83, 950, 1}, - {0x047e, 1090, 1}, + {0xab83, 1657, 1}, - {0x16e45, 3882, 1}, - {0xffffffff, -1, 0}, + {0x10c83, 3648, 1}, - {0x2c7e, 580, 1}, + {0x0141, 264, 1}, - {0xa65e, 3060, 1}, + {0x0181, 613, 1}, - {0xa77e, 3246, 1}, + {0x1f81, 134, 2}, + + {0x0041, 0, 1}, {0xffffffff, -1, 0}, - {0xab7e, 1639, 1}, + {0x039b, 782, 1}, - {0x03f0, 775, 1}, + {0x1c81, 909, 1}, - {0x039d, 786, 1}, + {0xab81, 1651, 1}, - {0x1e76, 2039, 1}, + {0x10c81, 3642, 1}, - {0x0476, 1078, 1}, + {0x0149, 46, 2}, - {0x0176, 342, 1}, + {0x1f49, 2330, 1}, {0xffffffff, -1, 0}, - {0x1e5c, 1999, 1}, - {0xffffffff, -1, 0}, + {0x0049, 4086, 1}, - {0x015c, 303, 1}, - {0xffffffff, -1, 0}, + {0x053a, 1375, 1}, - {0xab76, 1615, 1}, + {0x023a, 2720, 1}, - {0x0399, 770, 1}, + {0x1e7e, 2057, 1}, - {0xa75c, 3210, 1}, + {0x047e, 1093, 1}, - {0x0543, 1399, 1}, + {0x0399, 773, 1}, - {0x0393, 749, 1}, + {0x1e5e, 2008, 1}, - {0x0149, 46, 2}, + {0x2c7e, 580, 1}, - {0x1f49, 2324, 1}, + {0x015e, 306, 1}, - {0x1e40, 1957, 1}, + {0xa77e, 3252, 1}, - {0x0049, 4065, 1}, + {0x16e55, 3951, 1}, - {0x1eee, 2204, 1}, + {0xab7e, 1642, 1}, - {0x04ee, 1246, 1}, + {0xa75e, 3219, 1}, - {0x01ee, 480, 1}, + {0x104d1, 3630, 1}, - {0x0345, 770, 1}, + {0x1e5c, 2005, 1}, - {0xa740, 3168, 1}, + {0x0393, 752, 1}, - {0xa65c, 3057, 1}, + {0x015c, 303, 1}, + {0xffffffff, -1, 0}, + + {0x01d1, 435, 1}, + + {0x16e45, 3903, 1}, - {0x053a, 1372, 1}, + {0xa75c, 3216, 1}, - {0xff39, 3384, 1}, + {0x00d1, 129, 1}, - {0x0391, 742, 1}, + {0x10421, 3510, 1}, - {0x1e3e, 1954, 1}, + {0x0391, 745, 1}, - {0x2183, 2489, 1}, + {0xa65e, 3066, 1}, - {0x1e38, 1945, 1}, + {0x1e3e, 1960, 1}, - {0x1f3e, 2315, 1}, + {0x0421, 950, 1}, {0xffffffff, -1, 0}, - {0x1f38, 2297, 1}, + {0x1f3e, 2321, 1}, - {0xa73e, 3165, 1}, + {0x2c21, 2675, 1}, + {0xffffffff, -1, 0}, + + {0xa73e, 3171, 1}, - {0xa640, 3014, 1}, + {0xa65c, 3063, 1}, - {0xa738, 3156, 1}, + {0x10c1, 2999, 1}, - {0x1e36, 1942, 1}, + {0x1e36, 1948, 1}, - {0x0541, 1393, 1}, + {0x1e38, 1951, 1}, {0x0136, 249, 1}, - {0x1e34, 1939, 1}, + {0x24cf, 2573, 1}, + + {0x1f38, 2303, 1}, + {0xffffffff, -1, 0}, + + {0xa736, 3159, 1}, + + {0xa738, 3162, 1}, + {0xffffffff, -1, 0}, + + {0x0345, 773, 1}, + + {0x1e34, 1945, 1}, - {0x0542, 1396, 1}, + {0x16e5a, 3966, 1}, {0x0134, 246, 1}, - {0xa736, 3153, 1}, + {0x1041d, 3498, 1}, {0x013b, 255, 1}, - {0x1f3b, 2306, 1}, + {0x1f3b, 2312, 1}, - {0xa734, 3150, 1}, - {0xffffffff, -1, 0}, - - {0x0372, 715, 1}, + {0xa734, 3156, 1}, - {0x10415, 3453, 1}, + {0x041d, 937, 1}, - {0x16e43, 3876, 1}, + {0x0372, 718, 1}, - {0x16e5a, 3945, 1}, + {0x1f1d, 2276, 1}, - {0x042b, 981, 1}, + {0x2c1d, 2663, 1}, - {0x0415, 910, 1}, + {0x16e58, 3960, 1}, - {0x1f2b, 2282, 1}, + {0x1041b, 3492, 1}, - {0x2c2b, 2699, 1}, + {0x0370, 715, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, - {0x2c15, 2633, 1}, + {0x041b, 931, 1}, - {0x10c1, 2993, 1}, - {0xffffffff, -1, 0}, + {0x10419, 3486, 1}, - {0x1041d, 3477, 1}, + {0x1f1b, 2270, 1}, - {0x0245, 700, 1}, + {0x2c1b, 2657, 1}, {0xffffffff, -1, 0}, - {0xff3a, 3387, 1}, + {0x0419, 925, 1}, - {0x041d, 934, 1}, + {0x10417, 3480, 1}, - {0xfb17, 117, 2}, + {0x1f19, 2264, 1}, + + {0x2c19, 2651, 1}, + {0xffffffff, -1, 0}, - {0x1f1d, 2270, 1}, + {0x0417, 919, 1}, - {0x2c1d, 2657, 1}, + {0x10415, 3474, 1}, - {0x0370, 712, 1}, - {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0x10413, 3468, 1}, - {0x16e58, 3939, 1}, + {0x2c17, 2645, 1}, {0xffffffff, -1, 0}, - {0x03dc, 851, 1}, + {0x0415, 913, 1}, - {0x1041b, 3471, 1}, + {0x0413, 906, 1}, - {0x24ce, 2564, 1}, + {0x2166, 2465, 1}, - {0x16e41, 3870, 1}, + {0x2c15, 2639, 1}, - {0x054b, 1423, 1}, + {0x2c13, 2633, 1}, - {0x041b, 928, 1}, + {0x0053, 52, 1}, - {0x16e42, 3873, 1}, + {0x03cf, 845, 1}, - {0x1f1b, 2264, 1}, + {0x1efe, 2234, 1}, - {0x2c1b, 2651, 1}, + {0x04fe, 1273, 1}, - {0x10419, 3465, 1}, + {0x01fe, 499, 1}, - {0x10413, 3447, 1}, - {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0x1040f, 3456, 1}, + {0xffffffff, -1, 0}, - {0x0419, 922, 1}, + {0x24c9, 2555, 1}, - {0x0413, 903, 1}, + {0x24c1, 2531, 1}, - {0x1f19, 2258, 1}, + {0x040f, 1044, 1}, - {0x2c19, 2645, 1}, + {0x03ec, 878, 1}, - {0x2c13, 2627, 1}, + {0x1f0f, 2258, 1}, - {0x1040f, 3435, 1}, + {0x2c0f, 2621, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, - {0x1e917, 4032, 1}, - {0xffffffff, -1, 0}, + {0x1040d, 3450, 1}, - {0x017f, 52, 1}, + {0x0541, 1396, 1}, - {0x040f, 1041, 1}, + {0x0241, 586, 1}, - {0x2c7f, 583, 1}, + {0x03dc, 854, 1}, - {0x1f0f, 2252, 1}, + {0x040d, 1038, 1}, - {0x2c0f, 2615, 1}, + {0x1040b, 3444, 1}, - {0x1040d, 3429, 1}, + {0x1f0d, 2252, 1}, - {0xab7f, 1642, 1}, + {0x2c0d, 2615, 1}, {0xffffffff, -1, 0}, - {0x212b, 92, 1}, + {0x040b, 1032, 1}, - {0x040d, 1035, 1}, + {0x0549, 1420, 1}, - {0x1040b, 3423, 1}, + {0x1f0b, 2246, 1}, - {0x1f0d, 2246, 1}, + {0x2c0b, 2609, 1}, - {0x2c0d, 2609, 1}, - {0xffffffff, -1, 0}, + {0x10409, 3438, 1}, - {0x040b, 1029, 1}, - {0xffffffff, -1, 0}, + {0x03ea, 875, 1}, - {0x1f0b, 2240, 1}, + {0x0139, 252, 1}, - {0x2c0b, 2603, 1}, - {0xffffffff, -1, 0}, + {0x1f39, 2306, 1}, - {0x24c1, 2525, 1}, + {0x0409, 1026, 1}, - {0x16e4b, 3900, 1}, + {0x03e8, 872, 1}, - {0x10409, 3417, 1}, + {0x1f09, 2240, 1}, - {0x10405, 3405, 1}, - {0xffffffff, -1, 0}, + {0x2c09, 2603, 1}, - {0x0243, 354, 1}, + {0x10405, 3426, 1}, - {0x0409, 1023, 1}, + {0x03e6, 869, 1}, - {0x0405, 1011, 1}, + {0xff21, 3333, 1}, - {0x1f09, 2234, 1}, + {0x1f4b, 2336, 1}, - {0x2c09, 2597, 1}, + {0x0405, 1014, 1}, - {0x2c05, 2585, 1}, + {0x004b, 27, 1}, - {0x0549, 1417, 1}, + {0x10403, 3420, 1}, - {0x10403, 3399, 1}, + {0x2c05, 2591, 1}, - {0x16e5e, 3957, 1}, - {0xffffffff, -1, 0}, + {0x03e4, 866, 1}, - {0x0540, 1390, 1}, + {0x104d3, 3636, 1}, - {0x0403, 1005, 1}, + {0x0403, 1008, 1}, - {0x023a, 2714, 1}, - {0xffffffff, -1, 0}, + {0xff36, 3396, 1}, - {0x2c03, 2579, 1}, + {0xff38, 3402, 1}, - {0x10401, 3393, 1}, + {0x2c03, 2585, 1}, - {0x03ea, 872, 1}, - {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0x01d3, 438, 1}, - {0x0401, 999, 1}, + {0x1fd3, 25, 3}, - {0x03e8, 869, 1}, + {0x0395, 758, 1}, - {0x053e, 1384, 1}, + {0x00d3, 135, 1}, - {0x2c01, 2573, 1}, + {0x0051, 46, 1}, - {0x0538, 1366, 1}, + {0x053e, 1387, 1}, - {0x03e6, 866, 1}, + {0x023e, 2723, 1}, - {0x0241, 586, 1}, + {0xff34, 3390, 1}, - {0x1ef8, 2219, 1}, + {0x16e41, 3891, 1}, - {0x04f8, 1261, 1}, + {0x10401, 3414, 1}, - {0x01f8, 490, 1}, + {0x1ef0, 2213, 1}, - {0x1ff8, 2399, 1}, + {0x04f0, 1252, 1}, - {0x0536, 1360, 1}, - {0xffffffff, -1, 0}, + {0x01f0, 20, 2}, - {0x03e4, 863, 1}, + {0x0401, 1002, 1}, - {0x0534, 1354, 1}, - {0xffffffff, -1, 0}, + {0x0536, 1363, 1}, + + {0x0538, 1369, 1}, + + {0x2c01, 2579, 1}, - {0x053b, 1375, 1}, + {0x16e49, 3915, 1}, - {0x16e5c, 3951, 1}, + {0x004f, 40, 1}, + {0xffffffff, -1, 0}, - {0x1ef6, 2216, 1}, + {0x0376, 721, 1}, - {0x04f6, 1258, 1}, + {0x1eee, 2210, 1}, - {0x01f6, 372, 1}, + {0x04ee, 1249, 1}, - {0x1ff6, 92, 2}, - {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0x01ee, 480, 1}, - {0x16e49, 3894, 1}, + {0x0534, 1357, 1}, {0xffffffff, -1, 0}, - {0x1f8d, 154, 2}, + {0x053b, 1378, 1}, - {0x1e3c, 1951, 1}, + {0x023b, 577, 1}, - {0x16e40, 3867, 1}, + {0x16e5e, 3978, 1}, - {0xa78d, 643, 1}, + {0x1ef8, 2225, 1}, - {0x1f3c, 2309, 1}, + {0x04f8, 1264, 1}, - {0xab8d, 1684, 1}, + {0x01f8, 490, 1}, + + {0x1ff8, 2405, 1}, - {0x10c8d, 3657, 1}, + {0x1ed4, 2171, 1}, - {0xa73c, 3162, 1}, + {0x04d4, 1210, 1}, {0xffffffff, -1, 0}, - {0x1e78, 2042, 1}, + {0x16e5c, 3972, 1}, - {0x0478, 1081, 1}, + {0x2cd4, 2867, 1}, - {0x0178, 168, 1}, + {0x00d4, 138, 1}, - {0x1e74, 2036, 1}, + {0x2183, 2495, 1}, - {0x0474, 1075, 1}, + {0x1ef6, 2222, 1}, - {0x0174, 339, 1}, + {0x04f6, 1261, 1}, - {0xff38, 3381, 1}, + {0x01f6, 372, 1}, - {0x0376, 718, 1}, + {0x1ff6, 92, 2}, - {0xab78, 1621, 1}, - {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0x1f8d, 154, 2}, - {0xab74, 1609, 1}, + {0x0147, 273, 1}, + {0xffffffff, -1, 0}, - {0x0429, 974, 1}, + {0xa78d, 643, 1}, - {0xff36, 3375, 1}, + {0x0047, 18, 1}, - {0x1f29, 2276, 1}, + {0xab8d, 1687, 1}, - {0x2c29, 2693, 1}, + {0x10c8d, 3678, 1}, - {0xff34, 3369, 1}, - {0xffffffff, -1, 0}, + {0x1e74, 2042, 1}, - {0x10427, 3507, 1}, + {0x0474, 1078, 1}, - {0x10425, 3501, 1}, - {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0x0174, 339, 1}, - {0x0427, 968, 1}, + {0x1e3c, 1957, 1}, - {0x0425, 962, 1}, + {0x0553, 1450, 1}, - {0x03ee, 878, 1}, + {0x1e30, 1939, 1}, - {0x2c27, 2687, 1}, + {0x1f3c, 2315, 1}, - {0x2c25, 2681, 1}, + {0x0130, 261, 2}, - {0xff2b, 3342, 1}, + {0xab74, 1612, 1}, - {0x10423, 3495, 1}, + {0xa73c, 3168, 1}, - {0x1041f, 3483, 1}, + {0x10425, 3522, 1}, - {0x10411, 3441, 1}, - {0xffffffff, -1, 0}, + {0x03d1, 768, 1}, - {0x0423, 956, 1}, + {0x10423, 3516, 1}, + {0xffffffff, -1, 0}, - {0x041f, 941, 1}, + {0x0425, 965, 1}, + {0xffffffff, -1, 0}, - {0x0411, 896, 1}, + {0x0423, 959, 1}, - {0x2c23, 2675, 1}, + {0x2c25, 2687, 1}, - {0x2c1f, 2663, 1}, + {0x1041f, 3504, 1}, - {0x2c11, 2621, 1}, + {0x2c23, 2681, 1}, - {0x10407, 3411, 1}, + {0xff39, 3405, 1}, {0xffffffff, -1, 0}, - {0x017d, 351, 1}, - {0xffffffff, -1, 0}, + {0x041f, 944, 1}, - {0x0407, 1017, 1}, + {0x10411, 3462, 1}, - {0x13f8, 1837, 1}, + {0x10407, 3432, 1}, - {0xa77d, 1855, 1}, + {0x2c1f, 2669, 1}, + {0xffffffff, -1, 0}, - {0x2c07, 2591, 1}, + {0x0411, 899, 1}, - {0xab7d, 1636, 1}, + {0x0407, 1020, 1}, + {0xffffffff, -1, 0}, - {0x017b, 348, 1}, + {0x2c11, 2627, 1}, - {0x0179, 345, 1}, - {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0x2c07, 2597, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, - {0xa77b, 3243, 1}, + {0x0539, 1372, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, - {0xa779, 3240, 1}, + {0x13f8, 1840, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, - {0xab7b, 1630, 1}, + {0x054b, 1426, 1}, - {0xab79, 1624, 1}, - {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0x16e53, 3945, 1}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, - {0x023e, 2717, 1}, + {0x0551, 1444, 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}, + {0x054f, 1438, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, - {0x037f, 884, 1}, + {0x03fe, 727, 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}, - {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}, + {0x16e4b, 3921, 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}, - {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}, + {0xff30, 3378, 1}, + {0xffffffff, -1, 0}, - {0xff27, 3330, 1}, + {0x16e51, 3939, 1}, + {0xffffffff, -1, 0}, - {0xff25, 3324, 1}, - {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0x0547, 1414, 1}, {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}, + {0xff25, 3345, 1}, + {0xffffffff, -1, 0}, + + {0xff23, 3339, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + + {0x053c, 1381, 1}, + + {0x16e4f, 3933, 1}, + {0xffffffff, -1, 0}, + + {0x0230, 571, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + + {0xfb17, 117, 2}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + + {0xfb15, 113, 2}, + + {0xfb13, 121, 2}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + + {0x03f0, 778, 1}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + + {0x16e47, 3909, 1}, + {0xffffffff, -1, 0}, + + {0x03ee, 881, 1}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + + {0xfb05, 29, 2}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + + {0xfb03, 0, 3}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {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}, + {0x1e921, 4083, 1}, + {0xffffffff, -1, 0}, {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}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {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}, + {0x1e91d, 4071, 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}, - {0x1e91b, 4044, 1}, - {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, - {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0x1e91b, 4065, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, - {0x1e919, 4038, 1}, + {0x1e919, 4059, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, - {0x1e913, 4020, 1}, - {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0x1e917, 4053, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, - {0xfb05, 29, 2}, - {0xffffffff, -1, 0}, + {0x1e915, 4047, 1}, - {0x1e90f, 4008, 1}, + {0x1e913, 4041, 1}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, - {0xffffffff, -1, 0}, - - {0xfb03, 0, 3}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, - {0x1e90d, 4002, 1}, + {0x1e90f, 4029, 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}, - {0x1e90b, 3996, 1}, - {0xffffffff, -1, 0}, + {0x1e90d, 4023, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, - {0xfb01, 8, 2}, + {0x1e90b, 4017, 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}, - - {0x1e909, 3990, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, - {0x1e905, 3978, 1}, + {0x1e909, 4011, 1}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, - {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, - {0x1e903, 3972, 1}, + {0x1e905, 3999, 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}, + {0x1e903, 3993, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, + + {0x1e901, 3987, 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}, @@ -3258,15 +3278,14 @@ onigenc_unicode_unfold_key(OnigCodePoint code) {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, - {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, - {0x1e91f, 4056, 1}, + {0x1e91f, 4077, 1}, + {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, - {0x1e911, 4014, 1}, - {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, - {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, + {0x1e911, 4035, 1}, - {0x1e907, 3984, 1} + {0x1e907, 4005, 1} }; if (0 == 0) @@ -3283,5 +3302,3 @@ onigenc_unicode_unfold_key(OnigCodePoint code) } return 0; } - - diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_wb_data.c b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_wb_data.c new file mode 100644 index 0000000000..ed7537f4d6 --- /dev/null +++ b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/unicode_wb_data.c @@ -0,0 +1,1023 @@ +/* unicode_wb_data.c: Generated by make_unicode_wb_data.py. */ +/*- + * Copyright (c) 2019 K.Kosako + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#define WORD_BREAK_PROPERTY_VERSION 12_1_0 + +/* +ALetter +CR +Double_Quote +Extend +ExtendNumLet +Format +Hebrew_Letter +Katakana +LF +MidLetter +MidNum +MidNumLet +Newline +Numeric +Regional_Indicator +Single_Quote +WSegSpace +ZWJ +*/ + +static int WB_RANGE_NUM = 970; +static WB_RANGE_TYPE WB_RANGES[] = { + {0x00000a, 0x00000a, WB_LF }, + {0x00000b, 0x00000c, WB_Newline }, + {0x00000d, 0x00000d, WB_CR }, + {0x000020, 0x000020, WB_WSegSpace }, + {0x000022, 0x000022, WB_Double_Quote }, + {0x000027, 0x000027, WB_Single_Quote }, + {0x00002c, 0x00002c, WB_MidNum }, + {0x00002e, 0x00002e, WB_MidNumLet }, + {0x000030, 0x000039, WB_Numeric }, + {0x00003a, 0x00003a, WB_MidLetter }, + {0x00003b, 0x00003b, WB_MidNum }, + {0x000041, 0x00005a, WB_ALetter }, + {0x00005f, 0x00005f, WB_ExtendNumLet }, + {0x000061, 0x00007a, WB_ALetter }, + {0x000085, 0x000085, WB_Newline }, + {0x0000aa, 0x0000aa, WB_ALetter }, + {0x0000ad, 0x0000ad, WB_Format }, + {0x0000b5, 0x0000b5, WB_ALetter }, + {0x0000b7, 0x0000b7, WB_MidLetter }, + {0x0000ba, 0x0000ba, WB_ALetter }, + {0x0000c0, 0x0000d6, WB_ALetter }, + {0x0000d8, 0x0000f6, WB_ALetter }, + {0x0000f8, 0x0002d7, WB_ALetter }, + {0x0002de, 0x0002e4, WB_ALetter }, + {0x0002ec, 0x0002ff, WB_ALetter }, + {0x000300, 0x00036f, WB_Extend }, + {0x000370, 0x000374, WB_ALetter }, + {0x000376, 0x000377, WB_ALetter }, + {0x00037a, 0x00037d, WB_ALetter }, + {0x00037e, 0x00037e, WB_MidNum }, + {0x00037f, 0x00037f, WB_ALetter }, + {0x000386, 0x000386, WB_ALetter }, + {0x000387, 0x000387, WB_MidLetter }, + {0x000388, 0x00038a, WB_ALetter }, + {0x00038c, 0x00038c, WB_ALetter }, + {0x00038e, 0x0003a1, WB_ALetter }, + {0x0003a3, 0x0003f5, WB_ALetter }, + {0x0003f7, 0x000481, WB_ALetter }, + {0x000483, 0x000489, WB_Extend }, + {0x00048a, 0x00052f, WB_ALetter }, + {0x000531, 0x000556, WB_ALetter }, + {0x000559, 0x000559, WB_ALetter }, + {0x00055b, 0x00055c, WB_ALetter }, + {0x00055e, 0x00055e, WB_ALetter }, + {0x000560, 0x000588, WB_ALetter }, + {0x000589, 0x000589, WB_MidNum }, + {0x000591, 0x0005bd, WB_Extend }, + {0x0005bf, 0x0005bf, WB_Extend }, + {0x0005c1, 0x0005c2, WB_Extend }, + {0x0005c4, 0x0005c5, WB_Extend }, + {0x0005c7, 0x0005c7, WB_Extend }, + {0x0005d0, 0x0005ea, WB_Hebrew_Letter }, + {0x0005ef, 0x0005f2, WB_Hebrew_Letter }, + {0x0005f3, 0x0005f3, WB_ALetter }, + {0x0005f4, 0x0005f4, WB_MidLetter }, + {0x000600, 0x000605, WB_Format }, + {0x00060c, 0x00060d, WB_MidNum }, + {0x000610, 0x00061a, WB_Extend }, + {0x00061c, 0x00061c, WB_Format }, + {0x000620, 0x00064a, WB_ALetter }, + {0x00064b, 0x00065f, WB_Extend }, + {0x000660, 0x000669, WB_Numeric }, + {0x00066b, 0x00066b, WB_Numeric }, + {0x00066c, 0x00066c, WB_MidNum }, + {0x00066e, 0x00066f, WB_ALetter }, + {0x000670, 0x000670, WB_Extend }, + {0x000671, 0x0006d3, WB_ALetter }, + {0x0006d5, 0x0006d5, WB_ALetter }, + {0x0006d6, 0x0006dc, WB_Extend }, + {0x0006dd, 0x0006dd, WB_Format }, + {0x0006df, 0x0006e4, WB_Extend }, + {0x0006e5, 0x0006e6, WB_ALetter }, + {0x0006e7, 0x0006e8, WB_Extend }, + {0x0006ea, 0x0006ed, WB_Extend }, + {0x0006ee, 0x0006ef, WB_ALetter }, + {0x0006f0, 0x0006f9, WB_Numeric }, + {0x0006fa, 0x0006fc, WB_ALetter }, + {0x0006ff, 0x0006ff, WB_ALetter }, + {0x00070f, 0x00070f, WB_Format }, + {0x000710, 0x000710, WB_ALetter }, + {0x000711, 0x000711, WB_Extend }, + {0x000712, 0x00072f, WB_ALetter }, + {0x000730, 0x00074a, WB_Extend }, + {0x00074d, 0x0007a5, WB_ALetter }, + {0x0007a6, 0x0007b0, WB_Extend }, + {0x0007b1, 0x0007b1, WB_ALetter }, + {0x0007c0, 0x0007c9, WB_Numeric }, + {0x0007ca, 0x0007ea, WB_ALetter }, + {0x0007eb, 0x0007f3, WB_Extend }, + {0x0007f4, 0x0007f5, WB_ALetter }, + {0x0007f8, 0x0007f8, WB_MidNum }, + {0x0007fa, 0x0007fa, WB_ALetter }, + {0x0007fd, 0x0007fd, WB_Extend }, + {0x000800, 0x000815, WB_ALetter }, + {0x000816, 0x000819, WB_Extend }, + {0x00081a, 0x00081a, WB_ALetter }, + {0x00081b, 0x000823, WB_Extend }, + {0x000824, 0x000824, WB_ALetter }, + {0x000825, 0x000827, WB_Extend }, + {0x000828, 0x000828, WB_ALetter }, + {0x000829, 0x00082d, WB_Extend }, + {0x000840, 0x000858, WB_ALetter }, + {0x000859, 0x00085b, WB_Extend }, + {0x000860, 0x00086a, WB_ALetter }, + {0x0008a0, 0x0008b4, WB_ALetter }, + {0x0008b6, 0x0008bd, WB_ALetter }, + {0x0008d3, 0x0008e1, WB_Extend }, + {0x0008e2, 0x0008e2, WB_Format }, + {0x0008e3, 0x000903, WB_Extend }, + {0x000904, 0x000939, WB_ALetter }, + {0x00093a, 0x00093c, WB_Extend }, + {0x00093d, 0x00093d, WB_ALetter }, + {0x00093e, 0x00094f, WB_Extend }, + {0x000950, 0x000950, WB_ALetter }, + {0x000951, 0x000957, WB_Extend }, + {0x000958, 0x000961, WB_ALetter }, + {0x000962, 0x000963, WB_Extend }, + {0x000966, 0x00096f, WB_Numeric }, + {0x000971, 0x000980, WB_ALetter }, + {0x000981, 0x000983, WB_Extend }, + {0x000985, 0x00098c, WB_ALetter }, + {0x00098f, 0x000990, WB_ALetter }, + {0x000993, 0x0009a8, WB_ALetter }, + {0x0009aa, 0x0009b0, WB_ALetter }, + {0x0009b2, 0x0009b2, WB_ALetter }, + {0x0009b6, 0x0009b9, WB_ALetter }, + {0x0009bc, 0x0009bc, WB_Extend }, + {0x0009bd, 0x0009bd, WB_ALetter }, + {0x0009be, 0x0009c4, WB_Extend }, + {0x0009c7, 0x0009c8, WB_Extend }, + {0x0009cb, 0x0009cd, WB_Extend }, + {0x0009ce, 0x0009ce, WB_ALetter }, + {0x0009d7, 0x0009d7, WB_Extend }, + {0x0009dc, 0x0009dd, WB_ALetter }, + {0x0009df, 0x0009e1, WB_ALetter }, + {0x0009e2, 0x0009e3, WB_Extend }, + {0x0009e6, 0x0009ef, WB_Numeric }, + {0x0009f0, 0x0009f1, WB_ALetter }, + {0x0009fc, 0x0009fc, WB_ALetter }, + {0x0009fe, 0x0009fe, WB_Extend }, + {0x000a01, 0x000a03, WB_Extend }, + {0x000a05, 0x000a0a, WB_ALetter }, + {0x000a0f, 0x000a10, WB_ALetter }, + {0x000a13, 0x000a28, WB_ALetter }, + {0x000a2a, 0x000a30, WB_ALetter }, + {0x000a32, 0x000a33, WB_ALetter }, + {0x000a35, 0x000a36, WB_ALetter }, + {0x000a38, 0x000a39, WB_ALetter }, + {0x000a3c, 0x000a3c, WB_Extend }, + {0x000a3e, 0x000a42, WB_Extend }, + {0x000a47, 0x000a48, WB_Extend }, + {0x000a4b, 0x000a4d, WB_Extend }, + {0x000a51, 0x000a51, WB_Extend }, + {0x000a59, 0x000a5c, WB_ALetter }, + {0x000a5e, 0x000a5e, WB_ALetter }, + {0x000a66, 0x000a6f, WB_Numeric }, + {0x000a70, 0x000a71, WB_Extend }, + {0x000a72, 0x000a74, WB_ALetter }, + {0x000a75, 0x000a75, WB_Extend }, + {0x000a81, 0x000a83, WB_Extend }, + {0x000a85, 0x000a8d, WB_ALetter }, + {0x000a8f, 0x000a91, WB_ALetter }, + {0x000a93, 0x000aa8, WB_ALetter }, + {0x000aaa, 0x000ab0, WB_ALetter }, + {0x000ab2, 0x000ab3, WB_ALetter }, + {0x000ab5, 0x000ab9, WB_ALetter }, + {0x000abc, 0x000abc, WB_Extend }, + {0x000abd, 0x000abd, WB_ALetter }, + {0x000abe, 0x000ac5, WB_Extend }, + {0x000ac7, 0x000ac9, WB_Extend }, + {0x000acb, 0x000acd, WB_Extend }, + {0x000ad0, 0x000ad0, WB_ALetter }, + {0x000ae0, 0x000ae1, WB_ALetter }, + {0x000ae2, 0x000ae3, WB_Extend }, + {0x000ae6, 0x000aef, WB_Numeric }, + {0x000af9, 0x000af9, WB_ALetter }, + {0x000afa, 0x000aff, WB_Extend }, + {0x000b01, 0x000b03, WB_Extend }, + {0x000b05, 0x000b0c, WB_ALetter }, + {0x000b0f, 0x000b10, WB_ALetter }, + {0x000b13, 0x000b28, WB_ALetter }, + {0x000b2a, 0x000b30, WB_ALetter }, + {0x000b32, 0x000b33, WB_ALetter }, + {0x000b35, 0x000b39, WB_ALetter }, + {0x000b3c, 0x000b3c, WB_Extend }, + {0x000b3d, 0x000b3d, WB_ALetter }, + {0x000b3e, 0x000b44, WB_Extend }, + {0x000b47, 0x000b48, WB_Extend }, + {0x000b4b, 0x000b4d, WB_Extend }, + {0x000b56, 0x000b57, WB_Extend }, + {0x000b5c, 0x000b5d, WB_ALetter }, + {0x000b5f, 0x000b61, WB_ALetter }, + {0x000b62, 0x000b63, WB_Extend }, + {0x000b66, 0x000b6f, WB_Numeric }, + {0x000b71, 0x000b71, WB_ALetter }, + {0x000b82, 0x000b82, WB_Extend }, + {0x000b83, 0x000b83, WB_ALetter }, + {0x000b85, 0x000b8a, WB_ALetter }, + {0x000b8e, 0x000b90, WB_ALetter }, + {0x000b92, 0x000b95, WB_ALetter }, + {0x000b99, 0x000b9a, WB_ALetter }, + {0x000b9c, 0x000b9c, WB_ALetter }, + {0x000b9e, 0x000b9f, WB_ALetter }, + {0x000ba3, 0x000ba4, WB_ALetter }, + {0x000ba8, 0x000baa, WB_ALetter }, + {0x000bae, 0x000bb9, WB_ALetter }, + {0x000bbe, 0x000bc2, WB_Extend }, + {0x000bc6, 0x000bc8, WB_Extend }, + {0x000bca, 0x000bcd, WB_Extend }, + {0x000bd0, 0x000bd0, WB_ALetter }, + {0x000bd7, 0x000bd7, WB_Extend }, + {0x000be6, 0x000bef, WB_Numeric }, + {0x000c00, 0x000c04, WB_Extend }, + {0x000c05, 0x000c0c, WB_ALetter }, + {0x000c0e, 0x000c10, WB_ALetter }, + {0x000c12, 0x000c28, WB_ALetter }, + {0x000c2a, 0x000c39, WB_ALetter }, + {0x000c3d, 0x000c3d, WB_ALetter }, + {0x000c3e, 0x000c44, WB_Extend }, + {0x000c46, 0x000c48, WB_Extend }, + {0x000c4a, 0x000c4d, WB_Extend }, + {0x000c55, 0x000c56, WB_Extend }, + {0x000c58, 0x000c5a, WB_ALetter }, + {0x000c60, 0x000c61, WB_ALetter }, + {0x000c62, 0x000c63, WB_Extend }, + {0x000c66, 0x000c6f, WB_Numeric }, + {0x000c80, 0x000c80, WB_ALetter }, + {0x000c81, 0x000c83, WB_Extend }, + {0x000c85, 0x000c8c, WB_ALetter }, + {0x000c8e, 0x000c90, WB_ALetter }, + {0x000c92, 0x000ca8, WB_ALetter }, + {0x000caa, 0x000cb3, WB_ALetter }, + {0x000cb5, 0x000cb9, WB_ALetter }, + {0x000cbc, 0x000cbc, WB_Extend }, + {0x000cbd, 0x000cbd, WB_ALetter }, + {0x000cbe, 0x000cc4, WB_Extend }, + {0x000cc6, 0x000cc8, WB_Extend }, + {0x000cca, 0x000ccd, WB_Extend }, + {0x000cd5, 0x000cd6, WB_Extend }, + {0x000cde, 0x000cde, WB_ALetter }, + {0x000ce0, 0x000ce1, WB_ALetter }, + {0x000ce2, 0x000ce3, WB_Extend }, + {0x000ce6, 0x000cef, WB_Numeric }, + {0x000cf1, 0x000cf2, WB_ALetter }, + {0x000d00, 0x000d03, WB_Extend }, + {0x000d05, 0x000d0c, WB_ALetter }, + {0x000d0e, 0x000d10, WB_ALetter }, + {0x000d12, 0x000d3a, WB_ALetter }, + {0x000d3b, 0x000d3c, WB_Extend }, + {0x000d3d, 0x000d3d, WB_ALetter }, + {0x000d3e, 0x000d44, WB_Extend }, + {0x000d46, 0x000d48, WB_Extend }, + {0x000d4a, 0x000d4d, WB_Extend }, + {0x000d4e, 0x000d4e, WB_ALetter }, + {0x000d54, 0x000d56, WB_ALetter }, + {0x000d57, 0x000d57, WB_Extend }, + {0x000d5f, 0x000d61, WB_ALetter }, + {0x000d62, 0x000d63, WB_Extend }, + {0x000d66, 0x000d6f, WB_Numeric }, + {0x000d7a, 0x000d7f, WB_ALetter }, + {0x000d82, 0x000d83, WB_Extend }, + {0x000d85, 0x000d96, WB_ALetter }, + {0x000d9a, 0x000db1, WB_ALetter }, + {0x000db3, 0x000dbb, WB_ALetter }, + {0x000dbd, 0x000dbd, WB_ALetter }, + {0x000dc0, 0x000dc6, WB_ALetter }, + {0x000dca, 0x000dca, WB_Extend }, + {0x000dcf, 0x000dd4, WB_Extend }, + {0x000dd6, 0x000dd6, WB_Extend }, + {0x000dd8, 0x000ddf, WB_Extend }, + {0x000de6, 0x000def, WB_Numeric }, + {0x000df2, 0x000df3, WB_Extend }, + {0x000e31, 0x000e31, WB_Extend }, + {0x000e34, 0x000e3a, WB_Extend }, + {0x000e47, 0x000e4e, WB_Extend }, + {0x000e50, 0x000e59, WB_Numeric }, + {0x000eb1, 0x000eb1, WB_Extend }, + {0x000eb4, 0x000ebc, WB_Extend }, + {0x000ec8, 0x000ecd, WB_Extend }, + {0x000ed0, 0x000ed9, WB_Numeric }, + {0x000f00, 0x000f00, WB_ALetter }, + {0x000f18, 0x000f19, WB_Extend }, + {0x000f20, 0x000f29, WB_Numeric }, + {0x000f35, 0x000f35, WB_Extend }, + {0x000f37, 0x000f37, WB_Extend }, + {0x000f39, 0x000f39, WB_Extend }, + {0x000f3e, 0x000f3f, WB_Extend }, + {0x000f40, 0x000f47, WB_ALetter }, + {0x000f49, 0x000f6c, WB_ALetter }, + {0x000f71, 0x000f84, WB_Extend }, + {0x000f86, 0x000f87, WB_Extend }, + {0x000f88, 0x000f8c, WB_ALetter }, + {0x000f8d, 0x000f97, WB_Extend }, + {0x000f99, 0x000fbc, WB_Extend }, + {0x000fc6, 0x000fc6, WB_Extend }, + {0x00102b, 0x00103e, WB_Extend }, + {0x001040, 0x001049, WB_Numeric }, + {0x001056, 0x001059, WB_Extend }, + {0x00105e, 0x001060, WB_Extend }, + {0x001062, 0x001064, WB_Extend }, + {0x001067, 0x00106d, WB_Extend }, + {0x001071, 0x001074, WB_Extend }, + {0x001082, 0x00108d, WB_Extend }, + {0x00108f, 0x00108f, WB_Extend }, + {0x001090, 0x001099, WB_Numeric }, + {0x00109a, 0x00109d, WB_Extend }, + {0x0010a0, 0x0010c5, WB_ALetter }, + {0x0010c7, 0x0010c7, WB_ALetter }, + {0x0010cd, 0x0010cd, WB_ALetter }, + {0x0010d0, 0x0010fa, WB_ALetter }, + {0x0010fc, 0x001248, WB_ALetter }, + {0x00124a, 0x00124d, WB_ALetter }, + {0x001250, 0x001256, WB_ALetter }, + {0x001258, 0x001258, WB_ALetter }, + {0x00125a, 0x00125d, WB_ALetter }, + {0x001260, 0x001288, WB_ALetter }, + {0x00128a, 0x00128d, WB_ALetter }, + {0x001290, 0x0012b0, WB_ALetter }, + {0x0012b2, 0x0012b5, WB_ALetter }, + {0x0012b8, 0x0012be, WB_ALetter }, + {0x0012c0, 0x0012c0, WB_ALetter }, + {0x0012c2, 0x0012c5, WB_ALetter }, + {0x0012c8, 0x0012d6, WB_ALetter }, + {0x0012d8, 0x001310, WB_ALetter }, + {0x001312, 0x001315, WB_ALetter }, + {0x001318, 0x00135a, WB_ALetter }, + {0x00135d, 0x00135f, WB_Extend }, + {0x001380, 0x00138f, WB_ALetter }, + {0x0013a0, 0x0013f5, WB_ALetter }, + {0x0013f8, 0x0013fd, WB_ALetter }, + {0x001401, 0x00166c, WB_ALetter }, + {0x00166f, 0x00167f, WB_ALetter }, + {0x001680, 0x001680, WB_WSegSpace }, + {0x001681, 0x00169a, WB_ALetter }, + {0x0016a0, 0x0016ea, WB_ALetter }, + {0x0016ee, 0x0016f8, WB_ALetter }, + {0x001700, 0x00170c, WB_ALetter }, + {0x00170e, 0x001711, WB_ALetter }, + {0x001712, 0x001714, WB_Extend }, + {0x001720, 0x001731, WB_ALetter }, + {0x001732, 0x001734, WB_Extend }, + {0x001740, 0x001751, WB_ALetter }, + {0x001752, 0x001753, WB_Extend }, + {0x001760, 0x00176c, WB_ALetter }, + {0x00176e, 0x001770, WB_ALetter }, + {0x001772, 0x001773, WB_Extend }, + {0x0017b4, 0x0017d3, WB_Extend }, + {0x0017dd, 0x0017dd, WB_Extend }, + {0x0017e0, 0x0017e9, WB_Numeric }, + {0x00180b, 0x00180d, WB_Extend }, + {0x00180e, 0x00180e, WB_Format }, + {0x001810, 0x001819, WB_Numeric }, + {0x001820, 0x001878, WB_ALetter }, + {0x001880, 0x001884, WB_ALetter }, + {0x001885, 0x001886, WB_Extend }, + {0x001887, 0x0018a8, WB_ALetter }, + {0x0018a9, 0x0018a9, WB_Extend }, + {0x0018aa, 0x0018aa, WB_ALetter }, + {0x0018b0, 0x0018f5, WB_ALetter }, + {0x001900, 0x00191e, WB_ALetter }, + {0x001920, 0x00192b, WB_Extend }, + {0x001930, 0x00193b, WB_Extend }, + {0x001946, 0x00194f, WB_Numeric }, + {0x0019d0, 0x0019d9, WB_Numeric }, + {0x001a00, 0x001a16, WB_ALetter }, + {0x001a17, 0x001a1b, WB_Extend }, + {0x001a55, 0x001a5e, WB_Extend }, + {0x001a60, 0x001a7c, WB_Extend }, + {0x001a7f, 0x001a7f, WB_Extend }, + {0x001a80, 0x001a89, WB_Numeric }, + {0x001a90, 0x001a99, WB_Numeric }, + {0x001ab0, 0x001abe, WB_Extend }, + {0x001b00, 0x001b04, WB_Extend }, + {0x001b05, 0x001b33, WB_ALetter }, + {0x001b34, 0x001b44, WB_Extend }, + {0x001b45, 0x001b4b, WB_ALetter }, + {0x001b50, 0x001b59, WB_Numeric }, + {0x001b6b, 0x001b73, WB_Extend }, + {0x001b80, 0x001b82, WB_Extend }, + {0x001b83, 0x001ba0, WB_ALetter }, + {0x001ba1, 0x001bad, WB_Extend }, + {0x001bae, 0x001baf, WB_ALetter }, + {0x001bb0, 0x001bb9, WB_Numeric }, + {0x001bba, 0x001be5, WB_ALetter }, + {0x001be6, 0x001bf3, WB_Extend }, + {0x001c00, 0x001c23, WB_ALetter }, + {0x001c24, 0x001c37, WB_Extend }, + {0x001c40, 0x001c49, WB_Numeric }, + {0x001c4d, 0x001c4f, WB_ALetter }, + {0x001c50, 0x001c59, WB_Numeric }, + {0x001c5a, 0x001c7d, WB_ALetter }, + {0x001c80, 0x001c88, WB_ALetter }, + {0x001c90, 0x001cba, WB_ALetter }, + {0x001cbd, 0x001cbf, WB_ALetter }, + {0x001cd0, 0x001cd2, WB_Extend }, + {0x001cd4, 0x001ce8, WB_Extend }, + {0x001ce9, 0x001cec, WB_ALetter }, + {0x001ced, 0x001ced, WB_Extend }, + {0x001cee, 0x001cf3, WB_ALetter }, + {0x001cf4, 0x001cf4, WB_Extend }, + {0x001cf5, 0x001cf6, WB_ALetter }, + {0x001cf7, 0x001cf9, WB_Extend }, + {0x001cfa, 0x001cfa, WB_ALetter }, + {0x001d00, 0x001dbf, WB_ALetter }, + {0x001dc0, 0x001df9, WB_Extend }, + {0x001dfb, 0x001dff, WB_Extend }, + {0x001e00, 0x001f15, WB_ALetter }, + {0x001f18, 0x001f1d, WB_ALetter }, + {0x001f20, 0x001f45, WB_ALetter }, + {0x001f48, 0x001f4d, WB_ALetter }, + {0x001f50, 0x001f57, WB_ALetter }, + {0x001f59, 0x001f59, WB_ALetter }, + {0x001f5b, 0x001f5b, WB_ALetter }, + {0x001f5d, 0x001f5d, WB_ALetter }, + {0x001f5f, 0x001f7d, WB_ALetter }, + {0x001f80, 0x001fb4, WB_ALetter }, + {0x001fb6, 0x001fbc, WB_ALetter }, + {0x001fbe, 0x001fbe, WB_ALetter }, + {0x001fc2, 0x001fc4, WB_ALetter }, + {0x001fc6, 0x001fcc, WB_ALetter }, + {0x001fd0, 0x001fd3, WB_ALetter }, + {0x001fd6, 0x001fdb, WB_ALetter }, + {0x001fe0, 0x001fec, WB_ALetter }, + {0x001ff2, 0x001ff4, WB_ALetter }, + {0x001ff6, 0x001ffc, WB_ALetter }, + {0x002000, 0x002006, WB_WSegSpace }, + {0x002008, 0x00200a, WB_WSegSpace }, + {0x00200c, 0x00200c, WB_Extend }, + {0x00200d, 0x00200d, WB_ZWJ }, + {0x00200e, 0x00200f, WB_Format }, + {0x002018, 0x002019, WB_MidNumLet }, + {0x002024, 0x002024, WB_MidNumLet }, + {0x002027, 0x002027, WB_MidLetter }, + {0x002028, 0x002029, WB_Newline }, + {0x00202a, 0x00202e, WB_Format }, + {0x00202f, 0x00202f, WB_ExtendNumLet }, + {0x00203f, 0x002040, WB_ExtendNumLet }, + {0x002044, 0x002044, WB_MidNum }, + {0x002054, 0x002054, WB_ExtendNumLet }, + {0x00205f, 0x00205f, WB_WSegSpace }, + {0x002060, 0x002064, WB_Format }, + {0x002066, 0x00206f, WB_Format }, + {0x002071, 0x002071, WB_ALetter }, + {0x00207f, 0x00207f, WB_ALetter }, + {0x002090, 0x00209c, WB_ALetter }, + {0x0020d0, 0x0020f0, WB_Extend }, + {0x002102, 0x002102, WB_ALetter }, + {0x002107, 0x002107, WB_ALetter }, + {0x00210a, 0x002113, WB_ALetter }, + {0x002115, 0x002115, WB_ALetter }, + {0x002119, 0x00211d, WB_ALetter }, + {0x002124, 0x002124, WB_ALetter }, + {0x002126, 0x002126, WB_ALetter }, + {0x002128, 0x002128, WB_ALetter }, + {0x00212a, 0x00212d, WB_ALetter }, + {0x00212f, 0x002139, WB_ALetter }, + {0x00213c, 0x00213f, WB_ALetter }, + {0x002145, 0x002149, WB_ALetter }, + {0x00214e, 0x00214e, WB_ALetter }, + {0x002160, 0x002188, WB_ALetter }, + {0x0024b6, 0x0024e9, WB_ALetter }, + {0x002c00, 0x002c2e, WB_ALetter }, + {0x002c30, 0x002c5e, WB_ALetter }, + {0x002c60, 0x002ce4, WB_ALetter }, + {0x002ceb, 0x002cee, WB_ALetter }, + {0x002cef, 0x002cf1, WB_Extend }, + {0x002cf2, 0x002cf3, WB_ALetter }, + {0x002d00, 0x002d25, WB_ALetter }, + {0x002d27, 0x002d27, WB_ALetter }, + {0x002d2d, 0x002d2d, WB_ALetter }, + {0x002d30, 0x002d67, WB_ALetter }, + {0x002d6f, 0x002d6f, WB_ALetter }, + {0x002d7f, 0x002d7f, WB_Extend }, + {0x002d80, 0x002d96, WB_ALetter }, + {0x002da0, 0x002da6, WB_ALetter }, + {0x002da8, 0x002dae, WB_ALetter }, + {0x002db0, 0x002db6, WB_ALetter }, + {0x002db8, 0x002dbe, WB_ALetter }, + {0x002dc0, 0x002dc6, WB_ALetter }, + {0x002dc8, 0x002dce, WB_ALetter }, + {0x002dd0, 0x002dd6, WB_ALetter }, + {0x002dd8, 0x002dde, WB_ALetter }, + {0x002de0, 0x002dff, WB_Extend }, + {0x002e2f, 0x002e2f, WB_ALetter }, + {0x003000, 0x003000, WB_WSegSpace }, + {0x003005, 0x003005, WB_ALetter }, + {0x00302a, 0x00302f, WB_Extend }, + {0x003031, 0x003035, WB_Katakana }, + {0x00303b, 0x00303c, WB_ALetter }, + {0x003099, 0x00309a, WB_Extend }, + {0x00309b, 0x00309c, WB_Katakana }, + {0x0030a0, 0x0030fa, WB_Katakana }, + {0x0030fc, 0x0030ff, WB_Katakana }, + {0x003105, 0x00312f, WB_ALetter }, + {0x003131, 0x00318e, WB_ALetter }, + {0x0031a0, 0x0031ba, WB_ALetter }, + {0x0031f0, 0x0031ff, WB_Katakana }, + {0x0032d0, 0x0032fe, WB_Katakana }, + {0x003300, 0x003357, WB_Katakana }, + {0x00a000, 0x00a48c, WB_ALetter }, + {0x00a4d0, 0x00a4fd, WB_ALetter }, + {0x00a500, 0x00a60c, WB_ALetter }, + {0x00a610, 0x00a61f, WB_ALetter }, + {0x00a620, 0x00a629, WB_Numeric }, + {0x00a62a, 0x00a62b, WB_ALetter }, + {0x00a640, 0x00a66e, WB_ALetter }, + {0x00a66f, 0x00a672, WB_Extend }, + {0x00a674, 0x00a67d, WB_Extend }, + {0x00a67f, 0x00a69d, WB_ALetter }, + {0x00a69e, 0x00a69f, WB_Extend }, + {0x00a6a0, 0x00a6ef, WB_ALetter }, + {0x00a6f0, 0x00a6f1, WB_Extend }, + {0x00a717, 0x00a7bf, WB_ALetter }, + {0x00a7c2, 0x00a7c6, WB_ALetter }, + {0x00a7f7, 0x00a801, WB_ALetter }, + {0x00a802, 0x00a802, WB_Extend }, + {0x00a803, 0x00a805, WB_ALetter }, + {0x00a806, 0x00a806, WB_Extend }, + {0x00a807, 0x00a80a, WB_ALetter }, + {0x00a80b, 0x00a80b, WB_Extend }, + {0x00a80c, 0x00a822, WB_ALetter }, + {0x00a823, 0x00a827, WB_Extend }, + {0x00a840, 0x00a873, WB_ALetter }, + {0x00a880, 0x00a881, WB_Extend }, + {0x00a882, 0x00a8b3, WB_ALetter }, + {0x00a8b4, 0x00a8c5, WB_Extend }, + {0x00a8d0, 0x00a8d9, WB_Numeric }, + {0x00a8e0, 0x00a8f1, WB_Extend }, + {0x00a8f2, 0x00a8f7, WB_ALetter }, + {0x00a8fb, 0x00a8fb, WB_ALetter }, + {0x00a8fd, 0x00a8fe, WB_ALetter }, + {0x00a8ff, 0x00a8ff, WB_Extend }, + {0x00a900, 0x00a909, WB_Numeric }, + {0x00a90a, 0x00a925, WB_ALetter }, + {0x00a926, 0x00a92d, WB_Extend }, + {0x00a930, 0x00a946, WB_ALetter }, + {0x00a947, 0x00a953, WB_Extend }, + {0x00a960, 0x00a97c, WB_ALetter }, + {0x00a980, 0x00a983, WB_Extend }, + {0x00a984, 0x00a9b2, WB_ALetter }, + {0x00a9b3, 0x00a9c0, WB_Extend }, + {0x00a9cf, 0x00a9cf, WB_ALetter }, + {0x00a9d0, 0x00a9d9, WB_Numeric }, + {0x00a9e5, 0x00a9e5, WB_Extend }, + {0x00a9f0, 0x00a9f9, WB_Numeric }, + {0x00aa00, 0x00aa28, WB_ALetter }, + {0x00aa29, 0x00aa36, WB_Extend }, + {0x00aa40, 0x00aa42, WB_ALetter }, + {0x00aa43, 0x00aa43, WB_Extend }, + {0x00aa44, 0x00aa4b, WB_ALetter }, + {0x00aa4c, 0x00aa4d, WB_Extend }, + {0x00aa50, 0x00aa59, WB_Numeric }, + {0x00aa7b, 0x00aa7d, WB_Extend }, + {0x00aab0, 0x00aab0, WB_Extend }, + {0x00aab2, 0x00aab4, WB_Extend }, + {0x00aab7, 0x00aab8, WB_Extend }, + {0x00aabe, 0x00aabf, WB_Extend }, + {0x00aac1, 0x00aac1, WB_Extend }, + {0x00aae0, 0x00aaea, WB_ALetter }, + {0x00aaeb, 0x00aaef, WB_Extend }, + {0x00aaf2, 0x00aaf4, WB_ALetter }, + {0x00aaf5, 0x00aaf6, WB_Extend }, + {0x00ab01, 0x00ab06, WB_ALetter }, + {0x00ab09, 0x00ab0e, WB_ALetter }, + {0x00ab11, 0x00ab16, WB_ALetter }, + {0x00ab20, 0x00ab26, WB_ALetter }, + {0x00ab28, 0x00ab2e, WB_ALetter }, + {0x00ab30, 0x00ab67, WB_ALetter }, + {0x00ab70, 0x00abe2, WB_ALetter }, + {0x00abe3, 0x00abea, WB_Extend }, + {0x00abec, 0x00abed, WB_Extend }, + {0x00abf0, 0x00abf9, WB_Numeric }, + {0x00ac00, 0x00d7a3, WB_ALetter }, + {0x00d7b0, 0x00d7c6, WB_ALetter }, + {0x00d7cb, 0x00d7fb, WB_ALetter }, + {0x00fb00, 0x00fb06, WB_ALetter }, + {0x00fb13, 0x00fb17, WB_ALetter }, + {0x00fb1d, 0x00fb1d, WB_Hebrew_Letter }, + {0x00fb1e, 0x00fb1e, WB_Extend }, + {0x00fb1f, 0x00fb28, WB_Hebrew_Letter }, + {0x00fb2a, 0x00fb36, WB_Hebrew_Letter }, + {0x00fb38, 0x00fb3c, WB_Hebrew_Letter }, + {0x00fb3e, 0x00fb3e, WB_Hebrew_Letter }, + {0x00fb40, 0x00fb41, WB_Hebrew_Letter }, + {0x00fb43, 0x00fb44, WB_Hebrew_Letter }, + {0x00fb46, 0x00fb4f, WB_Hebrew_Letter }, + {0x00fb50, 0x00fbb1, WB_ALetter }, + {0x00fbd3, 0x00fd3d, WB_ALetter }, + {0x00fd50, 0x00fd8f, WB_ALetter }, + {0x00fd92, 0x00fdc7, WB_ALetter }, + {0x00fdf0, 0x00fdfb, WB_ALetter }, + {0x00fe00, 0x00fe0f, WB_Extend }, + {0x00fe10, 0x00fe10, WB_MidNum }, + {0x00fe13, 0x00fe13, WB_MidLetter }, + {0x00fe14, 0x00fe14, WB_MidNum }, + {0x00fe20, 0x00fe2f, WB_Extend }, + {0x00fe33, 0x00fe34, WB_ExtendNumLet }, + {0x00fe4d, 0x00fe4f, WB_ExtendNumLet }, + {0x00fe50, 0x00fe50, WB_MidNum }, + {0x00fe52, 0x00fe52, WB_MidNumLet }, + {0x00fe54, 0x00fe54, WB_MidNum }, + {0x00fe55, 0x00fe55, WB_MidLetter }, + {0x00fe70, 0x00fe74, WB_ALetter }, + {0x00fe76, 0x00fefc, WB_ALetter }, + {0x00feff, 0x00feff, WB_Format }, + {0x00ff07, 0x00ff07, WB_MidNumLet }, + {0x00ff0c, 0x00ff0c, WB_MidNum }, + {0x00ff0e, 0x00ff0e, WB_MidNumLet }, + {0x00ff10, 0x00ff19, WB_Numeric }, + {0x00ff1a, 0x00ff1a, WB_MidLetter }, + {0x00ff1b, 0x00ff1b, WB_MidNum }, + {0x00ff21, 0x00ff3a, WB_ALetter }, + {0x00ff3f, 0x00ff3f, WB_ExtendNumLet }, + {0x00ff41, 0x00ff5a, WB_ALetter }, + {0x00ff66, 0x00ff9d, WB_Katakana }, + {0x00ff9e, 0x00ff9f, WB_Extend }, + {0x00ffa0, 0x00ffbe, WB_ALetter }, + {0x00ffc2, 0x00ffc7, WB_ALetter }, + {0x00ffca, 0x00ffcf, WB_ALetter }, + {0x00ffd2, 0x00ffd7, WB_ALetter }, + {0x00ffda, 0x00ffdc, WB_ALetter }, + {0x00fff9, 0x00fffb, WB_Format }, + {0x010000, 0x01000b, WB_ALetter }, + {0x01000d, 0x010026, WB_ALetter }, + {0x010028, 0x01003a, WB_ALetter }, + {0x01003c, 0x01003d, WB_ALetter }, + {0x01003f, 0x01004d, WB_ALetter }, + {0x010050, 0x01005d, WB_ALetter }, + {0x010080, 0x0100fa, WB_ALetter }, + {0x010140, 0x010174, WB_ALetter }, + {0x0101fd, 0x0101fd, WB_Extend }, + {0x010280, 0x01029c, WB_ALetter }, + {0x0102a0, 0x0102d0, WB_ALetter }, + {0x0102e0, 0x0102e0, WB_Extend }, + {0x010300, 0x01031f, WB_ALetter }, + {0x01032d, 0x01034a, WB_ALetter }, + {0x010350, 0x010375, WB_ALetter }, + {0x010376, 0x01037a, WB_Extend }, + {0x010380, 0x01039d, WB_ALetter }, + {0x0103a0, 0x0103c3, WB_ALetter }, + {0x0103c8, 0x0103cf, WB_ALetter }, + {0x0103d1, 0x0103d5, WB_ALetter }, + {0x010400, 0x01049d, WB_ALetter }, + {0x0104a0, 0x0104a9, WB_Numeric }, + {0x0104b0, 0x0104d3, WB_ALetter }, + {0x0104d8, 0x0104fb, WB_ALetter }, + {0x010500, 0x010527, WB_ALetter }, + {0x010530, 0x010563, WB_ALetter }, + {0x010600, 0x010736, WB_ALetter }, + {0x010740, 0x010755, WB_ALetter }, + {0x010760, 0x010767, WB_ALetter }, + {0x010800, 0x010805, WB_ALetter }, + {0x010808, 0x010808, WB_ALetter }, + {0x01080a, 0x010835, WB_ALetter }, + {0x010837, 0x010838, WB_ALetter }, + {0x01083c, 0x01083c, WB_ALetter }, + {0x01083f, 0x010855, WB_ALetter }, + {0x010860, 0x010876, WB_ALetter }, + {0x010880, 0x01089e, WB_ALetter }, + {0x0108e0, 0x0108f2, WB_ALetter }, + {0x0108f4, 0x0108f5, WB_ALetter }, + {0x010900, 0x010915, WB_ALetter }, + {0x010920, 0x010939, WB_ALetter }, + {0x010980, 0x0109b7, WB_ALetter }, + {0x0109be, 0x0109bf, WB_ALetter }, + {0x010a00, 0x010a00, WB_ALetter }, + {0x010a01, 0x010a03, WB_Extend }, + {0x010a05, 0x010a06, WB_Extend }, + {0x010a0c, 0x010a0f, WB_Extend }, + {0x010a10, 0x010a13, WB_ALetter }, + {0x010a15, 0x010a17, WB_ALetter }, + {0x010a19, 0x010a35, WB_ALetter }, + {0x010a38, 0x010a3a, WB_Extend }, + {0x010a3f, 0x010a3f, WB_Extend }, + {0x010a60, 0x010a7c, WB_ALetter }, + {0x010a80, 0x010a9c, WB_ALetter }, + {0x010ac0, 0x010ac7, WB_ALetter }, + {0x010ac9, 0x010ae4, WB_ALetter }, + {0x010ae5, 0x010ae6, WB_Extend }, + {0x010b00, 0x010b35, WB_ALetter }, + {0x010b40, 0x010b55, WB_ALetter }, + {0x010b60, 0x010b72, WB_ALetter }, + {0x010b80, 0x010b91, WB_ALetter }, + {0x010c00, 0x010c48, WB_ALetter }, + {0x010c80, 0x010cb2, WB_ALetter }, + {0x010cc0, 0x010cf2, WB_ALetter }, + {0x010d00, 0x010d23, WB_ALetter }, + {0x010d24, 0x010d27, WB_Extend }, + {0x010d30, 0x010d39, WB_Numeric }, + {0x010f00, 0x010f1c, WB_ALetter }, + {0x010f27, 0x010f27, WB_ALetter }, + {0x010f30, 0x010f45, WB_ALetter }, + {0x010f46, 0x010f50, WB_Extend }, + {0x010fe0, 0x010ff6, WB_ALetter }, + {0x011000, 0x011002, WB_Extend }, + {0x011003, 0x011037, WB_ALetter }, + {0x011038, 0x011046, WB_Extend }, + {0x011066, 0x01106f, WB_Numeric }, + {0x01107f, 0x011082, WB_Extend }, + {0x011083, 0x0110af, WB_ALetter }, + {0x0110b0, 0x0110ba, WB_Extend }, + {0x0110bd, 0x0110bd, WB_Format }, + {0x0110cd, 0x0110cd, WB_Format }, + {0x0110d0, 0x0110e8, WB_ALetter }, + {0x0110f0, 0x0110f9, WB_Numeric }, + {0x011100, 0x011102, WB_Extend }, + {0x011103, 0x011126, WB_ALetter }, + {0x011127, 0x011134, WB_Extend }, + {0x011136, 0x01113f, WB_Numeric }, + {0x011144, 0x011144, WB_ALetter }, + {0x011145, 0x011146, WB_Extend }, + {0x011150, 0x011172, WB_ALetter }, + {0x011173, 0x011173, WB_Extend }, + {0x011176, 0x011176, WB_ALetter }, + {0x011180, 0x011182, WB_Extend }, + {0x011183, 0x0111b2, WB_ALetter }, + {0x0111b3, 0x0111c0, WB_Extend }, + {0x0111c1, 0x0111c4, WB_ALetter }, + {0x0111c9, 0x0111cc, WB_Extend }, + {0x0111d0, 0x0111d9, WB_Numeric }, + {0x0111da, 0x0111da, WB_ALetter }, + {0x0111dc, 0x0111dc, WB_ALetter }, + {0x011200, 0x011211, WB_ALetter }, + {0x011213, 0x01122b, WB_ALetter }, + {0x01122c, 0x011237, WB_Extend }, + {0x01123e, 0x01123e, WB_Extend }, + {0x011280, 0x011286, WB_ALetter }, + {0x011288, 0x011288, WB_ALetter }, + {0x01128a, 0x01128d, WB_ALetter }, + {0x01128f, 0x01129d, WB_ALetter }, + {0x01129f, 0x0112a8, WB_ALetter }, + {0x0112b0, 0x0112de, WB_ALetter }, + {0x0112df, 0x0112ea, WB_Extend }, + {0x0112f0, 0x0112f9, WB_Numeric }, + {0x011300, 0x011303, WB_Extend }, + {0x011305, 0x01130c, WB_ALetter }, + {0x01130f, 0x011310, WB_ALetter }, + {0x011313, 0x011328, WB_ALetter }, + {0x01132a, 0x011330, WB_ALetter }, + {0x011332, 0x011333, WB_ALetter }, + {0x011335, 0x011339, WB_ALetter }, + {0x01133b, 0x01133c, WB_Extend }, + {0x01133d, 0x01133d, WB_ALetter }, + {0x01133e, 0x011344, WB_Extend }, + {0x011347, 0x011348, WB_Extend }, + {0x01134b, 0x01134d, WB_Extend }, + {0x011350, 0x011350, WB_ALetter }, + {0x011357, 0x011357, WB_Extend }, + {0x01135d, 0x011361, WB_ALetter }, + {0x011362, 0x011363, WB_Extend }, + {0x011366, 0x01136c, WB_Extend }, + {0x011370, 0x011374, WB_Extend }, + {0x011400, 0x011434, WB_ALetter }, + {0x011435, 0x011446, WB_Extend }, + {0x011447, 0x01144a, WB_ALetter }, + {0x011450, 0x011459, WB_Numeric }, + {0x01145e, 0x01145e, WB_Extend }, + {0x01145f, 0x01145f, WB_ALetter }, + {0x011480, 0x0114af, WB_ALetter }, + {0x0114b0, 0x0114c3, WB_Extend }, + {0x0114c4, 0x0114c5, WB_ALetter }, + {0x0114c7, 0x0114c7, WB_ALetter }, + {0x0114d0, 0x0114d9, WB_Numeric }, + {0x011580, 0x0115ae, WB_ALetter }, + {0x0115af, 0x0115b5, WB_Extend }, + {0x0115b8, 0x0115c0, WB_Extend }, + {0x0115d8, 0x0115db, WB_ALetter }, + {0x0115dc, 0x0115dd, WB_Extend }, + {0x011600, 0x01162f, WB_ALetter }, + {0x011630, 0x011640, WB_Extend }, + {0x011644, 0x011644, WB_ALetter }, + {0x011650, 0x011659, WB_Numeric }, + {0x011680, 0x0116aa, WB_ALetter }, + {0x0116ab, 0x0116b7, WB_Extend }, + {0x0116b8, 0x0116b8, WB_ALetter }, + {0x0116c0, 0x0116c9, WB_Numeric }, + {0x01171d, 0x01172b, WB_Extend }, + {0x011730, 0x011739, WB_Numeric }, + {0x011800, 0x01182b, WB_ALetter }, + {0x01182c, 0x01183a, WB_Extend }, + {0x0118a0, 0x0118df, WB_ALetter }, + {0x0118e0, 0x0118e9, WB_Numeric }, + {0x0118ff, 0x0118ff, WB_ALetter }, + {0x0119a0, 0x0119a7, WB_ALetter }, + {0x0119aa, 0x0119d0, WB_ALetter }, + {0x0119d1, 0x0119d7, WB_Extend }, + {0x0119da, 0x0119e0, WB_Extend }, + {0x0119e1, 0x0119e1, WB_ALetter }, + {0x0119e3, 0x0119e3, WB_ALetter }, + {0x0119e4, 0x0119e4, WB_Extend }, + {0x011a00, 0x011a00, WB_ALetter }, + {0x011a01, 0x011a0a, WB_Extend }, + {0x011a0b, 0x011a32, WB_ALetter }, + {0x011a33, 0x011a39, WB_Extend }, + {0x011a3a, 0x011a3a, WB_ALetter }, + {0x011a3b, 0x011a3e, WB_Extend }, + {0x011a47, 0x011a47, WB_Extend }, + {0x011a50, 0x011a50, WB_ALetter }, + {0x011a51, 0x011a5b, WB_Extend }, + {0x011a5c, 0x011a89, WB_ALetter }, + {0x011a8a, 0x011a99, WB_Extend }, + {0x011a9d, 0x011a9d, WB_ALetter }, + {0x011ac0, 0x011af8, WB_ALetter }, + {0x011c00, 0x011c08, WB_ALetter }, + {0x011c0a, 0x011c2e, WB_ALetter }, + {0x011c2f, 0x011c36, WB_Extend }, + {0x011c38, 0x011c3f, WB_Extend }, + {0x011c40, 0x011c40, WB_ALetter }, + {0x011c50, 0x011c59, WB_Numeric }, + {0x011c72, 0x011c8f, WB_ALetter }, + {0x011c92, 0x011ca7, WB_Extend }, + {0x011ca9, 0x011cb6, WB_Extend }, + {0x011d00, 0x011d06, WB_ALetter }, + {0x011d08, 0x011d09, WB_ALetter }, + {0x011d0b, 0x011d30, WB_ALetter }, + {0x011d31, 0x011d36, WB_Extend }, + {0x011d3a, 0x011d3a, WB_Extend }, + {0x011d3c, 0x011d3d, WB_Extend }, + {0x011d3f, 0x011d45, WB_Extend }, + {0x011d46, 0x011d46, WB_ALetter }, + {0x011d47, 0x011d47, WB_Extend }, + {0x011d50, 0x011d59, WB_Numeric }, + {0x011d60, 0x011d65, WB_ALetter }, + {0x011d67, 0x011d68, WB_ALetter }, + {0x011d6a, 0x011d89, WB_ALetter }, + {0x011d8a, 0x011d8e, WB_Extend }, + {0x011d90, 0x011d91, WB_Extend }, + {0x011d93, 0x011d97, WB_Extend }, + {0x011d98, 0x011d98, WB_ALetter }, + {0x011da0, 0x011da9, WB_Numeric }, + {0x011ee0, 0x011ef2, WB_ALetter }, + {0x011ef3, 0x011ef6, WB_Extend }, + {0x012000, 0x012399, WB_ALetter }, + {0x012400, 0x01246e, WB_ALetter }, + {0x012480, 0x012543, WB_ALetter }, + {0x013000, 0x01342e, WB_ALetter }, + {0x013430, 0x013438, WB_Format }, + {0x014400, 0x014646, WB_ALetter }, + {0x016800, 0x016a38, WB_ALetter }, + {0x016a40, 0x016a5e, WB_ALetter }, + {0x016a60, 0x016a69, WB_Numeric }, + {0x016ad0, 0x016aed, WB_ALetter }, + {0x016af0, 0x016af4, WB_Extend }, + {0x016b00, 0x016b2f, WB_ALetter }, + {0x016b30, 0x016b36, WB_Extend }, + {0x016b40, 0x016b43, WB_ALetter }, + {0x016b50, 0x016b59, WB_Numeric }, + {0x016b63, 0x016b77, WB_ALetter }, + {0x016b7d, 0x016b8f, WB_ALetter }, + {0x016e40, 0x016e7f, WB_ALetter }, + {0x016f00, 0x016f4a, WB_ALetter }, + {0x016f4f, 0x016f4f, WB_Extend }, + {0x016f50, 0x016f50, WB_ALetter }, + {0x016f51, 0x016f87, WB_Extend }, + {0x016f8f, 0x016f92, WB_Extend }, + {0x016f93, 0x016f9f, WB_ALetter }, + {0x016fe0, 0x016fe1, WB_ALetter }, + {0x016fe3, 0x016fe3, WB_ALetter }, + {0x01b000, 0x01b000, WB_Katakana }, + {0x01b164, 0x01b167, WB_Katakana }, + {0x01bc00, 0x01bc6a, WB_ALetter }, + {0x01bc70, 0x01bc7c, WB_ALetter }, + {0x01bc80, 0x01bc88, WB_ALetter }, + {0x01bc90, 0x01bc99, WB_ALetter }, + {0x01bc9d, 0x01bc9e, WB_Extend }, + {0x01bca0, 0x01bca3, WB_Format }, + {0x01d165, 0x01d169, WB_Extend }, + {0x01d16d, 0x01d172, WB_Extend }, + {0x01d173, 0x01d17a, WB_Format }, + {0x01d17b, 0x01d182, WB_Extend }, + {0x01d185, 0x01d18b, WB_Extend }, + {0x01d1aa, 0x01d1ad, WB_Extend }, + {0x01d242, 0x01d244, WB_Extend }, + {0x01d400, 0x01d454, WB_ALetter }, + {0x01d456, 0x01d49c, WB_ALetter }, + {0x01d49e, 0x01d49f, WB_ALetter }, + {0x01d4a2, 0x01d4a2, WB_ALetter }, + {0x01d4a5, 0x01d4a6, WB_ALetter }, + {0x01d4a9, 0x01d4ac, WB_ALetter }, + {0x01d4ae, 0x01d4b9, WB_ALetter }, + {0x01d4bb, 0x01d4bb, WB_ALetter }, + {0x01d4bd, 0x01d4c3, WB_ALetter }, + {0x01d4c5, 0x01d505, WB_ALetter }, + {0x01d507, 0x01d50a, WB_ALetter }, + {0x01d50d, 0x01d514, WB_ALetter }, + {0x01d516, 0x01d51c, WB_ALetter }, + {0x01d51e, 0x01d539, WB_ALetter }, + {0x01d53b, 0x01d53e, WB_ALetter }, + {0x01d540, 0x01d544, WB_ALetter }, + {0x01d546, 0x01d546, WB_ALetter }, + {0x01d54a, 0x01d550, WB_ALetter }, + {0x01d552, 0x01d6a5, WB_ALetter }, + {0x01d6a8, 0x01d6c0, WB_ALetter }, + {0x01d6c2, 0x01d6da, WB_ALetter }, + {0x01d6dc, 0x01d6fa, WB_ALetter }, + {0x01d6fc, 0x01d714, WB_ALetter }, + {0x01d716, 0x01d734, WB_ALetter }, + {0x01d736, 0x01d74e, WB_ALetter }, + {0x01d750, 0x01d76e, WB_ALetter }, + {0x01d770, 0x01d788, WB_ALetter }, + {0x01d78a, 0x01d7a8, WB_ALetter }, + {0x01d7aa, 0x01d7c2, WB_ALetter }, + {0x01d7c4, 0x01d7cb, WB_ALetter }, + {0x01d7ce, 0x01d7ff, WB_Numeric }, + {0x01da00, 0x01da36, WB_Extend }, + {0x01da3b, 0x01da6c, WB_Extend }, + {0x01da75, 0x01da75, WB_Extend }, + {0x01da84, 0x01da84, WB_Extend }, + {0x01da9b, 0x01da9f, WB_Extend }, + {0x01daa1, 0x01daaf, WB_Extend }, + {0x01e000, 0x01e006, WB_Extend }, + {0x01e008, 0x01e018, WB_Extend }, + {0x01e01b, 0x01e021, WB_Extend }, + {0x01e023, 0x01e024, WB_Extend }, + {0x01e026, 0x01e02a, WB_Extend }, + {0x01e100, 0x01e12c, WB_ALetter }, + {0x01e130, 0x01e136, WB_Extend }, + {0x01e137, 0x01e13d, WB_ALetter }, + {0x01e140, 0x01e149, WB_Numeric }, + {0x01e14e, 0x01e14e, WB_ALetter }, + {0x01e2c0, 0x01e2eb, WB_ALetter }, + {0x01e2ec, 0x01e2ef, WB_Extend }, + {0x01e2f0, 0x01e2f9, WB_Numeric }, + {0x01e800, 0x01e8c4, WB_ALetter }, + {0x01e8d0, 0x01e8d6, WB_Extend }, + {0x01e900, 0x01e943, WB_ALetter }, + {0x01e944, 0x01e94a, WB_Extend }, + {0x01e94b, 0x01e94b, WB_ALetter }, + {0x01e950, 0x01e959, WB_Numeric }, + {0x01ee00, 0x01ee03, WB_ALetter }, + {0x01ee05, 0x01ee1f, WB_ALetter }, + {0x01ee21, 0x01ee22, WB_ALetter }, + {0x01ee24, 0x01ee24, WB_ALetter }, + {0x01ee27, 0x01ee27, WB_ALetter }, + {0x01ee29, 0x01ee32, WB_ALetter }, + {0x01ee34, 0x01ee37, WB_ALetter }, + {0x01ee39, 0x01ee39, WB_ALetter }, + {0x01ee3b, 0x01ee3b, WB_ALetter }, + {0x01ee42, 0x01ee42, WB_ALetter }, + {0x01ee47, 0x01ee47, WB_ALetter }, + {0x01ee49, 0x01ee49, WB_ALetter }, + {0x01ee4b, 0x01ee4b, WB_ALetter }, + {0x01ee4d, 0x01ee4f, WB_ALetter }, + {0x01ee51, 0x01ee52, WB_ALetter }, + {0x01ee54, 0x01ee54, WB_ALetter }, + {0x01ee57, 0x01ee57, WB_ALetter }, + {0x01ee59, 0x01ee59, WB_ALetter }, + {0x01ee5b, 0x01ee5b, WB_ALetter }, + {0x01ee5d, 0x01ee5d, WB_ALetter }, + {0x01ee5f, 0x01ee5f, WB_ALetter }, + {0x01ee61, 0x01ee62, WB_ALetter }, + {0x01ee64, 0x01ee64, WB_ALetter }, + {0x01ee67, 0x01ee6a, WB_ALetter }, + {0x01ee6c, 0x01ee72, WB_ALetter }, + {0x01ee74, 0x01ee77, WB_ALetter }, + {0x01ee79, 0x01ee7c, WB_ALetter }, + {0x01ee7e, 0x01ee7e, WB_ALetter }, + {0x01ee80, 0x01ee89, WB_ALetter }, + {0x01ee8b, 0x01ee9b, WB_ALetter }, + {0x01eea1, 0x01eea3, WB_ALetter }, + {0x01eea5, 0x01eea9, WB_ALetter }, + {0x01eeab, 0x01eebb, WB_ALetter }, + {0x01f130, 0x01f149, WB_ALetter }, + {0x01f150, 0x01f169, WB_ALetter }, + {0x01f170, 0x01f189, WB_ALetter }, + {0x01f1e6, 0x01f1ff, WB_Regional_Indicator }, + {0x01f3fb, 0x01f3ff, WB_Extend }, + {0x0e0001, 0x0e0001, WB_Format }, + {0x0e0020, 0x0e007f, WB_Extend }, + {0x0e0100, 0x0e01ef, WB_Extend } +}; diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/utf16_le.c b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/utf16_le.c index b139f83ff0..535713852f 100644 --- a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/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-2018 K.Kosako + * Copyright (c) 2002-2019 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -95,7 +95,15 @@ static const int EncLen_UTF16[] = { static int utf16le_code_to_mbclen(OnigCodePoint code) { - return (code > 0xffff ? 4 : 2); + if (code > 0xffff) { + if (code > 0x10ffff) + return ONIGERR_INVALID_CODE_POINT_VALUE; + else + return 4; + } + else { + return 2; + } } static int @@ -110,7 +118,16 @@ is_valid_mbc_string(const UChar* p, const UChar* end) const UChar* end1 = end - 1; while (p < end1) { - p += utf16le_mbc_enc_len(p); + int len = utf16le_mbc_enc_len(p); + if (len == 4) { + if (p + 3 < end && ! UTF16_IS_SURROGATE_SECOND(*(p + 3))) + return FALSE; + } + else + if (UTF16_IS_SURROGATE_SECOND(*(p + 1))) + return FALSE; + + p += len; } if (p != end) @@ -184,7 +201,7 @@ utf16le_code_to_mbc(OnigCodePoint code, UChar *buf) static int utf16le_mbc_case_fold(OnigCaseFoldType flag, - const UChar** pp, const UChar* end, UChar* fold) + const UChar** pp, const UChar* end, UChar* fold) { const UChar* p = *pp; @@ -207,13 +224,13 @@ utf16le_mbc_case_fold(OnigCaseFoldType flag, } else return onigenc_unicode_mbc_case_fold(ONIG_ENCODING_UTF16_LE, flag, pp, end, - fold); + fold); } #if 0 static int utf16le_is_mbc_ambiguous(OnigCaseFoldType flag, const UChar** pp, - const UChar* end) + const UChar* end) { const UChar* p = *pp; @@ -252,7 +269,8 @@ utf16le_left_adjust_char_head(const UChar* start, const UChar* s) s--; } - if (UTF16_IS_SURROGATE_SECOND(*(s+1)) && s > start + 1) + if (UTF16_IS_SURROGATE_SECOND(*(s+1)) && s > start + 1 && + UTF16_IS_SURROGATE_FIRST(*(s-1))) s -= 2; return (UChar* )s; @@ -263,7 +281,7 @@ utf16le_get_case_fold_codes_by_str(OnigCaseFoldType flag, const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[]) { return onigenc_unicode_get_case_fold_codes_by_str(ONIG_ENCODING_UTF16_LE, - flag, p, end, items); + flag, p, end, items); } OnigEncodingType OnigEncodingUTF16_LE = { @@ -286,6 +304,6 @@ OnigEncodingType OnigEncodingUTF16_LE = { init, 0, /* is_initialized */ is_valid_mbc_string, - ENC_FLAG_UNICODE, + ENC_FLAG_UNICODE|ENC_FLAG_SKIP_OFFSET_1, 0, 0 }; diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/oniguruma.h b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/oniguruma.h index 5f31a91c67..a2158e5cf9 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-2018 K.Kosako + * Copyright (c) 2002-2019 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -38,9 +38,9 @@ extern "C" { #define ONIGURUMA #define ONIGURUMA_VERSION_MAJOR 6 #define ONIGURUMA_VERSION_MINOR 9 -#define ONIGURUMA_VERSION_TEENY 0 +#define ONIGURUMA_VERSION_TEENY 3 -#define ONIGURUMA_VERSION_INT 60900 +#define ONIGURUMA_VERSION_INT 60903 #ifndef P_ #if defined(__STDC__) || defined(_WIN32) @@ -54,6 +54,7 @@ extern "C" { # define PV_(args) args #endif +#ifndef ONIG_STATIC #ifndef ONIG_EXTERN #if defined(_WIN32) && !defined(__GNUC__) #if defined(ONIGURUMA_EXPORT) @@ -67,6 +68,9 @@ extern "C" { #ifndef ONIG_EXTERN #define ONIG_EXTERN extern #endif +#else +#define ONIG_EXTERN extern +#endif /* PART: character encoding */ @@ -387,8 +391,10 @@ typedef unsigned int OnigOptionType; #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_TEXT_SEGMENT_EXTENDED_GRAPHEME_CLUSTER (ONIG_OPTION_POSIX_IS_ASCII << 1) +#define ONIG_OPTION_TEXT_SEGMENT_WORD (ONIG_OPTION_TEXT_SEGMENT_EXTENDED_GRAPHEME_CLUSTER << 1) -#define ONIG_OPTION_MAXBIT ONIG_OPTION_POSIX_IS_ASCII /* limit */ +#define ONIG_OPTION_MAXBIT ONIG_OPTION_TEXT_SEGMENT_WORD /* limit */ #define ONIG_OPTION_ON(options,regopt) ((options) |= (regopt)) #define ONIG_OPTION_OFF(options,regopt) ((options) &= ~(regopt)) @@ -492,10 +498,12 @@ ONIG_EXTERN OnigSyntaxType* OnigDefaultSyntax; #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_ESC_X_Y_GRAPHEME_CLUSTER (1U<<26) /* obsoleted: use next */ +#define ONIG_SYN_OP2_ESC_X_Y_TEXT_SEGMENT (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,..}) */ +#define ONIG_SYN_OP2_OPTION_ONIGURUMA (1U<<30) /* (?imxWDSPy) */ /* syntax (behavior) */ #define ONIG_SYN_CONTEXT_INDEP_ANCHORS (1U<<31) /* not implemented */ @@ -515,6 +523,7 @@ ONIG_EXTERN OnigSyntaxType* OnigDefaultSyntax; #define ONIG_SYN_BACKSLASH_ESCAPE_IN_CC (1U<<21) /* [..\w..] etc.. */ #define ONIG_SYN_ALLOW_EMPTY_RANGE_IN_CC (1U<<22) #define ONIG_SYN_ALLOW_DOUBLE_RANGE_OP_IN_CC (1U<<23) /* [0-9-a]=[0-9\-a] */ +#define ONIG_SYN_ALLOW_INVALID_CODE_END_OF_RANGE_IN_CC (1U<<26) /* syntax (behavior) warning */ #define ONIG_SYN_WARN_CC_OP_NOT_ESCAPED (1U<<24) /* [,-,] */ #define ONIG_SYN_WARN_REDUNDANT_NESTED_REPEAT (1U<<25) /* (?:a*)+ */ @@ -764,6 +773,8 @@ int onig_init P_((void)); ONIG_EXTERN int EFIAPI onig_error_code_to_str PV_((OnigUChar* s, int err_code, ...)); ONIG_EXTERN +int onig_is_error_code_needs_param PV_((int code)); +ONIG_EXTERN void onig_set_warn_func P_((OnigWarnFunc f)); ONIG_EXTERN void onig_set_verb_warn_func P_((OnigWarnFunc f)); diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regenc.h b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regenc.h index 46a51421e9..fc0e96bc61 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-2018 K.Kosako + * Copyright (c) 2002-2019 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -114,6 +114,7 @@ struct PropertyNameCtype { /* #define USE_CRNL_AS_LINE_TERMINATOR */ #define USE_UNICODE_PROPERTIES #define USE_UNICODE_EXTENDED_GRAPHEME_CLUSTER +#define USE_UNICODE_WORD_BREAK /* #define USE_UNICODE_CASE_FOLD_TURKISH_AZERI */ /* #define USE_UNICODE_ALL_LINE_TERMINATORS */ /* see Unicode.org UTS #18 */ @@ -121,8 +122,20 @@ struct PropertyNameCtype { #define ONIG_ENCODING_INIT_DEFAULT ONIG_ENCODING_ASCII +#define ENC_SKIP_OFFSET_1_OR_0 7 + #define ENC_FLAG_ASCII_COMPATIBLE (1<<0) #define ENC_FLAG_UNICODE (1<<1) +#define ENC_FLAG_SKIP_OFFSET_MASK (7<<2) +#define ENC_FLAG_SKIP_OFFSET_0 0 +#define ENC_FLAG_SKIP_OFFSET_1 (1<<2) +#define ENC_FLAG_SKIP_OFFSET_2 (2<<2) +#define ENC_FLAG_SKIP_OFFSET_3 (3<<2) +#define ENC_FLAG_SKIP_OFFSET_4 (4<<2) +#define ENC_FLAG_SKIP_OFFSET_1_OR_0 (ENC_SKIP_OFFSET_1_OR_0<<2) + +#define ENC_GET_SKIP_OFFSET(enc) \ + (((enc)->flag & ENC_FLAG_SKIP_OFFSET_MASK)>>2) /* for encoding system implementation (internal) */ @@ -162,15 +175,19 @@ extern int onigenc_mb4_is_code_ctype P_((OnigEncoding enc, OnigCodePoint code, u 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 */ +/* in unicode.c */ 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)); +#ifdef USE_UNICODE_WORD_BREAK +extern int onigenc_wb_is_break_position P_((OnigEncoding enc, UChar* p, UChar* prev, const UChar* start, const UChar* end)); +#endif #define UTF16_IS_SURROGATE_FIRST(c) (((c) & 0xfc) == 0xd8) #define UTF16_IS_SURROGATE_SECOND(c) (((c) & 0xfc) == 0xdc) @@ -252,7 +269,7 @@ extern const unsigned short OnigEncAsciiCtypeTable[]; #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) diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regint.h b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regint.h index acfd1792ef..87704f2be8 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-2018 K.Kosako + * Copyright (c) 2002-2019 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -54,43 +54,36 @@ #define PLATFORM_UNALIGNED_WORD_ACCESS #endif +#ifdef __GNUC__ +#define USE_GOTO_LABELS_AS_VALUES +#endif + /* config */ /* spec. config */ #define USE_CALL #define USE_CALLOUT #define USE_BACKREF_WITH_LEVEL /* \k, \k */ -#define USE_INSISTENT_CHECK_CAPTURES_IN_EMPTY_REPEAT /* /(?:()|())*\2/ */ +#define USE_STUBBORN_CHECK_CAPTURES_IN_EMPTY_REPEAT /* /(?:()|())*\2/ */ #define USE_NEWLINE_AT_END_OF_STRING_HAS_EMPTY_LINE /* /\n$/ =~ "\n" */ #define USE_WARNING_REDUNDANT_NESTED_REPEAT_OPERATOR - #define USE_RETRY_LIMIT_IN_MATCH +#ifdef USE_GOTO_LABELS_AS_VALUES +#define USE_THREADED_CODE +#define USE_DIRECT_THREADED_CODE +#endif /* internal config */ #define USE_OP_PUSH_OR_JUMP_EXACT #define USE_QUANT_PEEK_NEXT #define USE_ST_LIBRARY -#include "regenc.h" - -#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 USE_WORD_BEGIN_END /* "\<", "\>" */ +#define USE_CAPTURE_HISTORY +#define USE_VARIABLE_META_CHARS +#define USE_POSIX_API_REGION_OPTION +#define USE_FIND_LONGEST_SEARCH_ALL_OF_RANGE +#include "regenc.h" #define INIT_MATCH_STACK_SIZE 160 #define DEFAULT_MATCH_STACK_LIMIT_SIZE 0 /* unlimited */ @@ -103,12 +96,6 @@ #undef ONIG_ESCAPE_UCHAR_COLLISION #endif -#define USE_WORD_BEGIN_END /* "\<", "\>" */ -#define USE_CAPTURE_HISTORY -#define USE_VARIABLE_META_CHARS -#define USE_POSIX_API_REGION_OPTION -#define USE_FIND_LONGEST_SEARCH_ALL_OF_RANGE - #define xmalloc malloc #define xrealloc realloc #define xcalloc calloc @@ -150,17 +137,10 @@ #define xstrcat(dest,src,size) strcat(dest,src) #endif - -// #include - -#ifdef HAVE_LIMITS_H -#include -#endif - #if 0 -#ifdef HAVE_STDLIB_H +#include +#include #include -#endif #ifdef HAVE_STDINT_H #include @@ -170,11 +150,7 @@ #include #endif -#ifdef HAVE_STRING_H -# include -#else -# include -#endif +#include #include #ifdef HAVE_SYS_TYPES_H @@ -226,6 +202,7 @@ typedef UINTN uintptr_t; #define CHECK_NULL_RETURN_MEMERR(p) if (IS_NULL(p)) return ONIGERR_MEMORY #define NULL_UCHARP ((UChar* )0) +#define CHAR_MAP_SIZE 256 #define INFINITE_LEN ONIG_INFINITE_DISTANCE #ifdef PLATFORM_UNALIGNED_WORD_ACCESS @@ -290,64 +267,6 @@ typedef struct { #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 */ enum StackPopLevel { STACK_POP_LEVEL_FREE = 0, @@ -357,12 +276,13 @@ enum StackPopLevel { /* optimize flags */ 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 */ + OPTIMIZE_NONE = 0, + OPTIMIZE_STR, /* Slow Search */ + OPTIMIZE_STR_FAST, /* Sunday quick search / BMH */ + OPTIMIZE_STR_FAST_STEP_FORWARD, /* Sunday quick search / BMH */ + OPTIMIZE_STR_CASE_FOLD_FAST, /* Sunday quick search / BMH (ignore case) */ + OPTIMIZE_STR_CASE_FOLD, /* Slow Search (ignore case) */ + OPTIMIZE_MAP /* char map */ }; /* bit status */ @@ -436,8 +356,8 @@ typedef unsigned int MemStatusType; #define DISABLE_CASE_FOLD_MULTI_CHAR(case_fold_flag) \ ((case_fold_flag) & ~INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) -#define REPEAT_INFINITE -1 -#define IS_REPEAT_INFINITE(n) ((n) == REPEAT_INFINITE) +#define INFINITE_REPEAT -1 +#define IS_INFINITE_REPEAT(n) ((n) == INFINITE_REPEAT) /* bitset */ #define BITS_PER_BYTE 8 @@ -475,7 +395,7 @@ typedef struct _BBuf { unsigned int alloc; } BBuf; -#define BB_INIT(buf,size) onig_bbuf_init((BBuf* )(buf), (size)) +#define BB_INIT(buf,size) bbuf_init((BBuf* )(buf), (size)) #define BB_SIZE_INC(buf,inc) do{\ (buf)->alloc += (inc);\ @@ -551,32 +471,32 @@ typedef struct _BBuf { /* 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) +#define ANCR_PREC_READ (1<<0) +#define ANCR_PREC_READ_NOT (1<<1) +#define ANCR_LOOK_BEHIND (1<<2) +#define ANCR_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 ANCR_BEGIN_BUF (1<<4) +#define ANCR_BEGIN_LINE (1<<5) +#define ANCR_BEGIN_POSITION (1<<6) +#define ANCR_END_BUF (1<<7) +#define ANCR_SEMI_END_BUF (1<<8) +#define ANCR_END_LINE (1<<9) +#define ANCR_WORD_BOUNDARY (1<<10) +#define ANCR_NO_WORD_BOUNDARY (1<<11) +#define ANCR_WORD_BEGIN (1<<12) +#define ANCR_WORD_END (1<<13) +#define ANCR_ANYCHAR_INF (1<<14) +#define ANCR_ANYCHAR_INF_ML (1<<15) +#define ANCR_TEXT_SEGMENT_BOUNDARY (1<<16) +#define ANCR_NO_TEXT_SEGMENT_BOUNDARY (1<<17) + + +#define ANCHOR_HAS_BODY(a) ((a)->type < ANCR_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) + ((type) == ANCR_WORD_BOUNDARY || (type) == ANCR_NO_WORD_BOUNDARY || \ + (type) == ANCR_WORD_BEGIN || (type) == ANCR_WORD_END) /* operation code */ enum OpCode { @@ -605,9 +525,6 @@ 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 */ @@ -625,8 +542,7 @@ enum OpCode { OP_WORD_BEGIN, OP_WORD_END, - OP_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY, - OP_NO_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY, + OP_TEXT_SEGMENT_BOUNDARY, OP_BEGIN_BUF, OP_END_BUF, @@ -642,6 +558,7 @@ enum OpCode { OP_BACKREF_MULTI, OP_BACKREF_MULTI_IC, OP_BACKREF_WITH_LEVEL, /* \k, \k */ + OP_BACKREF_WITH_LEVEL_IC, /* \k, \k */ OP_BACKREF_CHECK, /* (?(n)), (?('name')) */ OP_BACKREF_CHECK_WITH_LEVEL, /* (?(n-level)), (?('name-level')) */ @@ -657,7 +574,9 @@ enum OpCode { OP_PUSH, OP_PUSH_SUPER, OP_POP_OUT, +#ifdef USE_OP_PUSH_OR_JUMP_EXACT OP_PUSH_OR_JUMP_EXACT1, /* if match exact then push, else jump. */ +#endif OP_PUSH_IF_PEEK_NEXT, /* if match exact then push, else none. */ OP_REPEAT, /* {n,m} */ OP_REPEAT_NG, /* {n,m}? (non greedy) */ @@ -704,6 +623,11 @@ enum UpdateVarType { UPDATE_VAR_RIGHT_RANGE_INIT = 4, }; +enum TextSegmentBoundaryType { + EXTENDED_GRAPHEME_CLUSTER_BOUNDARY = 0, + WORD_BOUNDARY = 1, +}; + typedef int RelAddrType; typedef int AbsAddrType; typedef int LengthType; @@ -747,13 +671,16 @@ typedef int ModeType; /* op-code + arg size */ +#if 0 #define SIZE_OP_ANYCHAR_STAR SIZE_OPCODE #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_PUSH_SUPER (SIZE_OPCODE + SIZE_RELADDR) #define SIZE_OP_POP_OUT SIZE_OPCODE +#ifdef USE_OP_PUSH_OR_JUMP_EXACT #define SIZE_OP_PUSH_OR_JUMP_EXACT1 (SIZE_OPCODE + SIZE_RELADDR + 1) +#endif #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) @@ -786,6 +713,56 @@ typedef int ModeType; #define SIZE_OP_CALLOUT_NAME (SIZE_OPCODE + SIZE_MEMNUM + SIZE_MEMNUM) #endif +#else /* if 0 */ + +/* for relative address increment to go next op. */ +#define SIZE_INC_OP 1 + +#define SIZE_OP_ANYCHAR_STAR 1 +#define SIZE_OP_ANYCHAR_STAR_PEEK_NEXT 1 +#define SIZE_OP_JUMP 1 +#define SIZE_OP_PUSH 1 +#define SIZE_OP_PUSH_SUPER 1 +#define SIZE_OP_POP_OUT 1 +#ifdef USE_OP_PUSH_OR_JUMP_EXACT +#define SIZE_OP_PUSH_OR_JUMP_EXACT1 1 +#endif +#define SIZE_OP_PUSH_IF_PEEK_NEXT 1 +#define SIZE_OP_REPEAT 1 +#define SIZE_OP_REPEAT_INC 1 +#define SIZE_OP_REPEAT_INC_NG 1 +#define SIZE_OP_WORD_BOUNDARY 1 +#define SIZE_OP_PREC_READ_START 1 +#define SIZE_OP_PREC_READ_NOT_START 1 +#define SIZE_OP_PREC_READ_END 1 +#define SIZE_OP_PREC_READ_NOT_END 1 +#define SIZE_OP_BACKREF 1 +#define SIZE_OP_FAIL 1 +#define SIZE_OP_MEMORY_START 1 +#define SIZE_OP_MEMORY_START_PUSH 1 +#define SIZE_OP_MEMORY_END_PUSH 1 +#define SIZE_OP_MEMORY_END_PUSH_REC 1 +#define SIZE_OP_MEMORY_END 1 +#define SIZE_OP_MEMORY_END_REC 1 +#define SIZE_OP_ATOMIC_START 1 +#define SIZE_OP_ATOMIC_END 1 +#define SIZE_OP_EMPTY_CHECK_START 1 +#define SIZE_OP_EMPTY_CHECK_END 1 +#define SIZE_OP_LOOK_BEHIND 1 +#define SIZE_OP_LOOK_BEHIND_NOT_START 1 +#define SIZE_OP_LOOK_BEHIND_NOT_END 1 +#define SIZE_OP_CALL 1 +#define SIZE_OP_RETURN 1 +#define SIZE_OP_PUSH_SAVE_VAL 1 +#define SIZE_OP_UPDATE_VAR 1 + +#ifdef USE_CALLOUT +#define SIZE_OP_CALLOUT_CONTENTS 1 +#define SIZE_OP_CALLOUT_NAME 1 +#endif +#endif /* if 0 */ + + #define MC_ESC(syn) (syn)->meta_char_table.esc #define MC_ANYCHAR(syn) (syn)->meta_char_table.anychar #define MC_ANYTIME(syn) (syn)->meta_char_table.anytime @@ -837,8 +814,186 @@ typedef int ModeType; #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) -extern void onig_add_end_call(void (*func)(void)); +typedef struct { +#ifdef USE_DIRECT_THREADED_CODE + const void* opaddr; +#else + enum OpCode opcode; +#endif + union { + struct { + UChar s[16]; /* Now used first 7 bytes only. */ + } exact; + struct { + UChar* s; + LengthType n; /* number of chars */ + } exact_n; /* EXACTN, EXACTN_IC, EXACTMB2N, EXACTMB3N */ + struct { + UChar* s; + LengthType n; /* number of chars */ + LengthType len; /* char byte length */ + } exact_len_n; /* EXACTMBN */ + struct { + BitSetRef bsp; + } cclass; + struct { + void* mb; + } cclass_mb; + struct { + void* mb; /* mb must be same position with cclass_mb for match_at(). */ + BitSetRef bsp; + } cclass_mix; + struct { + UChar c; + } anychar_star_peek_next; + struct { + ModeType mode; + } word_boundary; /* OP_WORD_BOUNDARY, OP_NO_WORD_BOUNDARY, OP_WORD_BEGIN, OP_WORD_END */ + struct { + enum TextSegmentBoundaryType type; + int not; + } text_segment_boundary; + struct { + union { + MemNumType n1; /* num == 1 */ + MemNumType* ns; /* num > 1 */ + }; + int num; + int nest_level; + } backref_general; /* BACKREF_MULTI, BACKREF_MULTI_IC, BACKREF_WITH_LEVEL, BACKREF_CHECK, BACKREF_CHECK_WITH_LEVEL, */ + struct { + MemNumType n1; + } backref_n; /* BACKREF_N, BACKREF_N_IC */ + struct { + MemNumType num; + } memory_start; /* MEMORY_START, MEMORY_START_PUSH */ + struct { + MemNumType num; + } memory_end; /* MEMORY_END, MEMORY_END_REC, MEMORY_END_PUSH, MEMORY_END_PUSH_REC */ + struct { + RelAddrType addr; + } jump; + struct { + RelAddrType addr; + } push; + struct { + RelAddrType addr; + UChar c; + } push_or_jump_exact1; + struct { + RelAddrType addr; + UChar c; + } push_if_peek_next; + struct { + MemNumType id; + RelAddrType addr; + } repeat; /* REPEAT, REPEAT_NG */ + struct { + MemNumType id; + } repeat_inc; /* REPEAT_INC, REPEAT_INC_SG, REPEAT_INC_NG, REPEAT_INC_NG_SG */ + struct { + MemNumType mem; + } empty_check_start; + struct { + MemNumType mem; + } empty_check_end; /* EMPTY_CHECK_END, EMPTY_CHECK_END_MEMST, EMPTY_CHECK_END_MEMST_PUSH */ + struct { + RelAddrType addr; + } prec_read_not_start; + struct { + LengthType len; + } look_behind; + struct { + LengthType len; + RelAddrType addr; + } look_behind_not_start; + struct { + AbsAddrType addr; + } call; + struct { + SaveType type; + MemNumType id; + } push_save_val; + struct { + UpdateVarType type; + MemNumType id; + } update_var; +#ifdef USE_CALLOUT + struct { + MemNumType num; + } callout_contents; + struct { + MemNumType num; + MemNumType id; + } callout_name; +#endif + }; +} Operation; + +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; + +struct re_pattern_buffer { + /* common members of BBuf(bytes-buffer) */ + Operation* ops; +#ifdef USE_DIRECT_THREADED_CODE + enum OpCode* ocs; +#endif + Operation* ops_curr; + unsigned int ops_used; /* used space for ops */ + unsigned int ops_alloc; /* allocated space for ops */ + unsigned char* string_pool; + unsigned char* string_pool_end; + + 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_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[CHAR_MAP_SIZE]; /* used as BMH skip or char-map */ + int map_offset; + OnigLen dmin; /* min-distance of exact or map */ + OnigLen dmax; /* max-distance of exact or map */ + RegexExt* extp; +}; + +#define COP(reg) ((reg)->ops_curr) +#define COP_CURR_OFFSET(reg) ((reg)->ops_used - 1) +#define COP_CURR_OFFSET_BYTES(reg, p) \ + ((int )((char* )(&((reg)->ops_curr->p)) - (char* )((reg)->ops))) + + +extern void onig_add_end_call(void (*func)(void)); #ifdef ONIG_DEBUG @@ -854,13 +1009,12 @@ extern int onig_print_statistics P_((FILE* f)); 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 void EFIAPI onig_snprintf_with_pattern PV_((UChar buf[], int bufsize, OnigEncoding enc, UChar* pat, UChar* pat_end, const UChar *fmt, ...)); extern int onig_compile P_((regex_t* reg, const UChar* pattern, const UChar* pattern_end, OnigErrorInfo* einfo)); -extern 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); +extern int onig_positive_int_multiply(int x, int y); #ifdef USE_CALLOUT diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regparse.h b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regparse.h index e0086cd6c9..29e64341df 100644 --- a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regparse.h +++ b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regparse.h @@ -4,7 +4,7 @@ regparse.h - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2002-2018 K.Kosako + * Copyright (c) 2002-2019 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -31,6 +31,10 @@ #include "regint.h" +#define NODE_STRING_MARGIN 16 +#define NODE_STRING_BUF_SIZE 24 /* sizeof(CClassNode) - sizeof(int)*4 */ +#define NODE_BACKREFS_SIZE 6 + /* node type */ typedef enum { NODE_STRING = 0, @@ -38,7 +42,7 @@ typedef enum { NODE_CTYPE = 2, NODE_BACKREF = 3, NODE_QUANT = 4, - NODE_ENCLOSURE = 5, + NODE_BAG = 5, NODE_ANCHOR = 6, NODE_LIST = 7, NODE_ALT = 8, @@ -46,161 +50,29 @@ typedef enum { NODE_GIMMICK = 10 } NodeType; +enum BagType { + BAG_MEMORY = 0, + BAG_OPTION = 1, + BAG_STOP_BACKTRACK = 2, + BAG_IF_ELSE = 3, +}; + enum GimmickType { - GIMMICK_FAIL = 0, - GIMMICK_KEEP = 1, - GIMMICK_SAVE = 2, - GIMMICK_UPDATE_VAR = 3, + GIMMICK_FAIL = 0, + GIMMICK_SAVE = 1, + GIMMICK_UPDATE_VAR = 2, #ifdef USE_CALLOUT - GIMMICK_CALLOUT = 4, + GIMMICK_CALLOUT = 3, #endif }; - -/* node type bit */ -#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) - -enum EnclosureType { - ENCLOSURE_MEMORY = 0, - ENCLOSURE_OPTION = 1, - ENCLOSURE_STOP_BACKTRACK = 2, - ENCLOSURE_IF_ELSE = 3, +enum BodyEmptyType { + BODY_IS_NOT_EMPTY = 0, + BODY_IS_EMPTY_POSSIBILITY = 1, + BODY_IS_EMPTY_POSSIBILITY_MEM = 2, + BODY_IS_EMPTY_POSSIBILITY_REC = 3 }; -#define NODE_STRING_MARGIN 16 -#define NODE_STRING_BUF_SIZE 24 /* sizeof(CClassNode) - sizeof(int)*4 */ -#define NODE_BACKREFS_SIZE 6 - -#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) - -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 { NodeType node_type; int status; @@ -208,7 +80,7 @@ typedef struct { UChar* s; UChar* end; unsigned int flag; - int capa; /* (allocated size - 1) or 0: use buf[] */ + int capacity; /* (allocated size - 1) or 0: use buf[] */ UChar buf[NODE_STRING_BUF_SIZE]; } StrNode; @@ -229,7 +101,7 @@ typedef struct { int lower; int upper; int greedy; - enum QuantBodyEmpty body_empty_info; + enum BodyEmptyType emptiness; struct _Node* head_exact; struct _Node* next_head_exact; int is_refered; /* include called node. don't eliminate even if {0} */ @@ -240,7 +112,7 @@ typedef struct { int status; struct _Node* body; - enum EnclosureType type; + enum BagType type; union { struct { int regnum; @@ -262,7 +134,7 @@ typedef struct { OnigLen max_len; /* max length (byte) */ int char_len; /* character length */ int opt_count; /* referenced count in optimize_nodes() */ -} EnclosureNode; +} BagNode; #ifdef USE_CALL @@ -280,7 +152,7 @@ typedef struct { typedef struct { NodeType node_type; int status; - struct _Node* body; /* to EnclosureNode : ENCLOSURE_MEMORY */ + struct _Node* body; /* to BagNode : BAG_MEMORY */ int by_number; int group_num; @@ -350,7 +222,7 @@ typedef struct _Node { StrNode str; CClassNode cclass; QuantNode quant; - EnclosureNode enclosure; + BagNode bag; BackRefNode backref; AnchorNode anchor; ConsAltNode cons; @@ -362,9 +234,134 @@ typedef struct _Node { } u; } Node; - #define NULL_NODE ((Node* )0) + +/* node type bit */ +#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_BAG NODE_TYPE2BIT(NODE_BAG) +#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_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 BAG_(node) (&((node)->u.bag)) +#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 ANCR_ANYCHAR_INF_MASK (ANCR_ANYCHAR_INF | ANCR_ANYCHAR_INF_ML) +#define ANCR_END_BUF_MASK (ANCR_END_BUF | ANCR_SEMI_END_BUF) + +#define NODE_STRING_RAW (1<<0) /* by backslashed number */ +#define NODE_STRING_AMBIG (1<<1) +#define NODE_STRING_GOOD_AMBIG (1<<2) +#define NODE_STRING_DONT_GET_OPT_INFO (1<<3) + +#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_GOOD_AMBIG(node) (node)->u.str.flag |= NODE_STRING_GOOD_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_GOOD_AMBIG(node) \ + (((node)->u.str.flag & NODE_STRING_GOOD_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) + +/* node status bits */ +#define NODE_ST_MIN_FIXED (1<<0) +#define NODE_ST_MAX_FIXED (1<<1) +#define NODE_ST_CLEN_FIXED (1<<2) +#define NODE_ST_MARK1 (1<<3) +#define NODE_ST_MARK2 (1<<4) +#define NODE_ST_STRICT_REAL_REPEAT (1<<5) +#define NODE_ST_RECURSION (1<<6) +#define NODE_ST_CALLED (1<<7) +#define NODE_ST_ADDR_FIXED (1<<8) +#define NODE_ST_NAMED_GROUP (1<<9) +#define NODE_ST_IN_REAL_REPEAT (1<<10) /* STK_REPEAT is nested in stack. */ +#define NODE_ST_IN_ZERO_REPEAT (1<<11) /* (....){0} */ +#define NODE_ST_IN_MULTI_ENTRY (1<<12) +#define NODE_ST_NEST_LEVEL (1<<13) +#define NODE_ST_BY_NUMBER (1<<14) /* {n,m} */ +#define NODE_ST_BY_NAME (1<<15) /* backref by name */ +#define NODE_ST_BACKREF (1<<16) +#define NODE_ST_CHECKER (1<<17) +#define NODE_ST_FIXED_OPTION (1<<18) +#define NODE_ST_PROHIBIT_RECURSION (1<<19) +#define NODE_ST_SUPER (1<<20) + + +#define NODE_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_STRICT_REAL_REPEAT(node) \ + ((NODE_STATUS(node) & NODE_ST_STRICT_REAL_REPEAT) != 0) + +#define NODE_BODY(node) ((node)->u.base.body) +#define NODE_QUANT_BODY(node) ((node)->body) +#define NODE_BAG_BODY(node) ((node)->body) +#define NODE_CALL_BODY(node) ((node)->body) +#define NODE_ANCHOR_BODY(node) ((node)->body) + #define SCANENV_MEMENV_SIZE 8 #define SCANENV_MEMENV(senv) \ (IS_NOT_NULL((senv)->mem_env_dynamic) ? \ @@ -434,7 +431,7 @@ 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_enclosure P_((int type)); +extern Node* onig_node_new_bag P_((enum BagType type)); extern Node* onig_node_new_anchor P_((int type, int ascii_mode)); extern Node* onig_node_new_str P_((const UChar* s, const UChar* end)); extern Node* onig_node_new_list P_((Node* left, Node* right)); -- 2.13.0.windows.1