Ignore:
Timestamp:
Jan 21, 2018, 12:10:09 AM (6 years ago)
Author:
coas-nagasima
Message:

prototoolに関連するプロジェクトをnewlibからmuslを使うよう変更・更新
ntshellをnewlibの下位の実装から、muslのsyscallの実装に変更・更新
以下のOSSをアップデート
・mruby-1.3.0
・musl-1.1.18
・onigmo-6.1.3
・tcc-0.9.27
以下のOSSを追加
・openssl-1.1.0e
・curl-7.57.0
・zlib-1.2.11
以下のmrbgemsを追加
・iij/mruby-digest
・iij/mruby-env
・iij/mruby-errno
・iij/mruby-iijson
・iij/mruby-ipaddr
・iij/mruby-mock
・iij/mruby-require
・iij/mruby-tls-openssl

Location:
EcnlProtoTool/trunk/onigmo-6.1.3
Files:
4 deleted
25 edited
4 copied
1 moved

Legend:

Unmodified
Added
Removed
  • EcnlProtoTool/trunk/onigmo-6.1.3/.cproject

    r279 r331  
    2020                                                        <builder buildPath="${workspace_loc:/onigmo}/Debug" id="com.renesas.cdt.rz.library.project.debug.win32.builder.Id.648387239" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.renesas.cdt.rz.library.project.debug.win32.builder.Id"/>
    2121                                                        <tool id="com.renesas.cdt.rz.libraryProject.debug.win32.tool.compiler.Id.1403906573" name="Compiler" superClass="com.renesas.cdt.rz.libraryProject.debug.win32.tool.compiler.Id">
    22                                                                 <option defaultValue="true" id="com.renesas.cdt.core.Compiler.option.misc2.893295126" name="標準システム・ディレクトリーでヘッダー・ファイルを検索しない (-nostdinc)" superClass="com.renesas.cdt.core.Compiler.option.misc2" value="false" valueType="boolean"/>
     22                                                                <option defaultValue="true" id="com.renesas.cdt.core.Compiler.option.misc2.893295126" name="標準システム・ディレクトリーでヘッダー・ファイルを検索しない (-nostdinc)" superClass="com.renesas.cdt.core.Compiler.option.misc2" value="true" valueType="boolean"/>
    2323                                                                <option id="com.renesas.cdt.rz.Debug.Compiler.option.library.dataEndian.830168116" name="エンディアン" superClass="com.renesas.cdt.rz.Debug.Compiler.option.library.dataEndian" value="Little-endian" valueType="enumerated"/>
    2424                                                                <option id="com.renesas.cdt.rz.Debug.Compiler.option.library.instructionset.181932475" name="命令セット" superClass="com.renesas.cdt.rz.Debug.Compiler.option.library.instructionset" value="ARM" valueType="enumerated"/>
     
    3030                                                                <option id="com.renesas.cdt.rz.Debug.Compiler.option.library.architecture.2113164712" name="アーキテクチャー" superClass="com.renesas.cdt.rz.Debug.Compiler.option.library.architecture" value="armv7-a" valueType="enumerated"/>
    3131                                                                <option id="com.renesas.cdt.rz.Debug.Compiler.option.library.cpuType.1970460770" name="CPU タイプ" superClass="com.renesas.cdt.rz.Debug.Compiler.option.library.cpuType" value="cortex-a9" valueType="enumerated"/>
    32                                                                 <option id="com.renesas.cdt.core.Compiler.option.stackSizeInDecimal.79407894" name="Decimal representation of '-Wsatck-usage'" superClass="com.renesas.cdt.core.Compiler.option.stackSizeInDecimal" value="256" valueType="string"/>
     32                                                                <option id="com.renesas.cdt.core.Compiler.option.stackSizeInDecimal.79407894" name="Decimal representation of '-Wstack-usage'" superClass="com.renesas.cdt.core.Compiler.option.stackSizeInDecimal" value="256" valueType="string"/>
    3333                                                                <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.renesas.cdt.rz.Debug.Compiler.option.library.macroDefines.614908404" name="マクロ定義" superClass="com.renesas.cdt.rz.Debug.Compiler.option.library.macroDefines" valueType="definedSymbols">
    3434                                                                        <listOptionValue builtIn="false" value="ONIG_EXTERN=extern"/>
    3535                                                                </option>
    3636                                                                <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.renesas.cdt.core.Compiler.option.includeFileDir.46425275" name="インクルード・ファイル・ディレクトリー" superClass="com.renesas.cdt.core.Compiler.option.includeFileDir" valueType="includePath">
     37                                                                        <listOptionValue builtIn="false" value="&quot;${workspace_loc:/musl-1.1.18/include}&quot;"/>
    3738                                                                        <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/src}&quot;"/>
     39                                                                        <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/src/enc/unicode}&quot;"/>
    3840                                                                </option>
    3941                                                                <inputType id="%Base.Compiler.C.InputType.Id.884982235" name="C å
  • EcnlProtoTool/trunk/onigmo-6.1.3/.info

    r279 r331  
    44GCC_STRING=5.2-GNUARM-NONE_v16.01
    55VERSION_IDE=
    6 E2STUDIO_VERSION=5.3.1.002
     6E2STUDIO_VERSION=5.4.0.018
    77ACTIVE_CONFIGURATION=Debug
  • EcnlProtoTool/trunk/onigmo-6.1.3/.project

    r279 r331  
    11<?xml version="1.0" encoding="UTF-8"?>
    22<projectDescription>
    3         <name>onigmo-5.15.0</name>
     3        <name>onigmo-6.1.3</name>
    44        <comment></comment>
    55        <projects>
  • EcnlProtoTool/trunk/onigmo-6.1.3/README

    r279 r331  
    1 README  2014/07/18
     1README  2016/11/30
    22
    33Onigmo (Oniguruma-mod)  --  (C) K.Takata <kentkt AT csc DOT jp>
     
    66
    77Onigmo is a regular expressions library forked from Oniguruma.
    8 Some of new features introduced in Perl 5.10+ can be used.
    9 
    10 Some patches are merged from Ruby 2.x.
     8It focuses to support new expressions like `\K`, `\R`, `(?(cond)yes|no)`
     9and etc. which are supported in Perl 5.10+.
     10
     11Since Onigmo is used as the default regexp library of Ruby 2.0 or later,
     12many patches are backported from Ruby 2.x.
    1113
    1214See also the Wiki page:
     
    2426
    2527  Encoding:
    26     CP932
     28    CP932, CP1250, CP1251, CP1252, CP1253, CP1254, CP1257
    2729
    2830  Syntax:
     
    3133
    3234New Source Files:
    33   enc/cp932.c                   CP932 encoding.
    3435  enc/jis/props.h               JIS character properties data.
    3536  enc/jis/props.kwd             JIS character properties data.
    3637  enc/unicode/casefold.h        Unicode case folding data.
    3738  enc/unicode/name2ctype.h      Unicode properties data.
    38 
    39   onig.py                       onig.dll/libonig.so loader.
     39  enc/windows_*.c               CP* encoding
     40
     41  onigmo.py                     onigmo.dll/libonigmo.so loader.
    4042  testpy.py                     test program.
    4143
     
    4749
    4850  win32/Makefile.mingw          Makefile for Win32 (MinGW)
    49   win32/makedef.py              creates onig.def.
    50   win32/onig.rc                 resource file for onig.dll.
     51  win32/makedef.py              creates onigmo.def.
     52  win32/onigmo.rc               resource file for onigmo.dll.
    5153
    5254
  • EcnlProtoTool/trunk/onigmo-6.1.3/src/config.h

    r321 r331  
    1 /* config.h.in.  Generated from configure.in by autoheader.  */
     1/* config.h.in.  Generated from configure.ac by autoheader.  */
    22
    33/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP
     
    2222#define HAVE_INTTYPES_H
    2323
    24 /* Define to 1 if you have the `pthread' library (-lpthread). */
    25 #define HAVE_LIBPTHREAD
    26 
    2724/* Define to 1 if you have the <memory.h> header file. */
    2825#define HAVE_MEMORY_H
    29 
    30 /* Define if compilerr supports prototypes */
    31 #define HAVE_PROTOTYPES
    32 
    33 /* Define to 1 if you have the <pthread.h> header file. */
    34 #define HAVE_PTHREAD_H
    35 
    36 /* Define if compiler supports stdarg prototypes */
    37 #define HAVE_STDARG_PROTOTYPES
    3826
    3927/* Define to 1 if you have the <stdint.h> header file. */
     
    9381/* The size of `int', as computed by sizeof. */
    9482#undef SIZEOF_INT
    95 #define SIZEOF_INT sizeof(int)
     83#define SIZEOF_INT 4
    9684
    9785/* The size of `long', as computed by sizeof. */
    9886#undef SIZEOF_LONG
    99 #define SIZEOF_LONG sizeof(long)
     87#define SIZEOF_LONG 4
    10088
    10189/* The size of `short', as computed by sizeof. */
    10290#undef SIZEOF_SHORT
     91#define SIZEOF_SHORT 2
     92
     93/* The size of `void*', as computed by sizeof. */
     94#undef SIZEOF_VOIDP
     95#define SIZEOF_VOIDP 4
    10396
    10497/* If using the C implementation of alloca, define if you know the
     
    122115#undef USE_CRNL_AS_LINE_TERMINATOR
    123116
    124 /* Define if enable the default multithread system */
    125 #undef USE_DEFAULT_MULTI_THREAD_SYSTEM
    126 
    127 /* Define if enbale multithread support */
    128 #undef USE_MULTI_THREAD_SYSTEM
    129 
    130117/* Version number of package */
    131118#undef VERSION
  • EcnlProtoTool/trunk/onigmo-6.1.3/src/enc/ascii.c

    r321 r331  
    3030
    3131#include "regenc.h"
     32#ifdef RUBY
     33# include "encindex.h"
     34#endif
    3235
    33 OnigEncodingType OnigEncodingASCII = {
     36#ifndef ENCINDEX_ASCII
     37# define ENCINDEX_ASCII 0
     38#endif
     39
     40OnigEncodingDefine(ascii, ASCII) = {
    3441  onigenc_single_byte_mbc_enc_len,
    35   "US-ASCII",  /* name */
     42  "ASCII-8BIT",/* name */
    3643  1,           /* max byte length */
    3744  1,           /* min byte length */
     
    4855  onigenc_single_byte_left_adjust_char_head,
    4956  onigenc_always_true_is_allowed_reverse_match,
     57  onigenc_single_byte_ascii_only_case_map,
     58  ENCINDEX_ASCII,
    5059  ONIGENC_FLAG_NONE,
    5160};
     61ENC_ALIAS("BINARY", "ASCII-8BIT")
     62ENC_REPLICATE("IBM437", "ASCII-8BIT")
     63ENC_ALIAS("CP437", "IBM437")
     64ENC_REPLICATE("IBM737", "ASCII-8BIT")
     65ENC_ALIAS("CP737", "IBM737")
     66ENC_REPLICATE("IBM775", "ASCII-8BIT")
     67ENC_ALIAS("CP775", "IBM775")
     68ENC_REPLICATE("CP850", "ASCII-8BIT")
     69ENC_ALIAS("IBM850", "CP850")
     70ENC_REPLICATE("IBM852", "ASCII-8BIT")
     71ENC_REPLICATE("CP852", "IBM852")
     72ENC_REPLICATE("IBM855", "ASCII-8BIT")
     73ENC_REPLICATE("CP855", "IBM855")
     74ENC_REPLICATE("IBM857", "ASCII-8BIT")
     75ENC_ALIAS("CP857", "IBM857")
     76ENC_REPLICATE("IBM860", "ASCII-8BIT")
     77ENC_ALIAS("CP860", "IBM860")
     78ENC_REPLICATE("IBM861", "ASCII-8BIT")
     79ENC_ALIAS("CP861", "IBM861")
     80ENC_REPLICATE("IBM862", "ASCII-8BIT")
     81ENC_ALIAS("CP862", "IBM862")
     82ENC_REPLICATE("IBM863", "ASCII-8BIT")
     83ENC_ALIAS("CP863", "IBM863")
     84ENC_REPLICATE("IBM864", "ASCII-8BIT")
     85ENC_ALIAS("CP864", "IBM864")
     86ENC_REPLICATE("IBM865", "ASCII-8BIT")
     87ENC_ALIAS("CP865", "IBM865")
     88ENC_REPLICATE("IBM866", "ASCII-8BIT")
     89ENC_ALIAS("CP866", "IBM866")
     90ENC_REPLICATE("IBM869", "ASCII-8BIT")
     91ENC_ALIAS("CP869", "IBM869")
     92ENC_REPLICATE("Windows-1258", "ASCII-8BIT")
     93ENC_ALIAS("CP1258", "Windows-1258")
     94ENC_REPLICATE("GB1988", "ASCII-8BIT")
     95ENC_REPLICATE("macCentEuro", "ASCII-8BIT")
     96ENC_REPLICATE("macCroatian", "ASCII-8BIT")
     97ENC_REPLICATE("macCyrillic", "ASCII-8BIT")
     98ENC_REPLICATE("macGreek", "ASCII-8BIT")
     99ENC_REPLICATE("macIceland", "ASCII-8BIT")
     100ENC_REPLICATE("macRoman", "ASCII-8BIT")
     101ENC_REPLICATE("macRomania", "ASCII-8BIT")
     102ENC_REPLICATE("macThai", "ASCII-8BIT")
     103ENC_REPLICATE("macTurkish", "ASCII-8BIT")
     104ENC_REPLICATE("macUkraine", "ASCII-8BIT")
  • EcnlProtoTool/trunk/onigmo-6.1.3/src/enc/unicode.c

    r321 r331  
    138138}
    139139
    140 #include "enc/unicode/casefold.h"
    141 
    142 #include "enc/unicode/name2ctype.h"
     140/* macros related to ONIGENC_CASE flags */
     141/* defined here because not used in other files */
     142#define ONIGENC_CASE_SPECIALS       (ONIGENC_CASE_TITLECASE | ONIGENC_CASE_IS_TITLECASE | ONIGENC_CASE_UP_SPECIAL | ONIGENC_CASE_DOWN_SPECIAL)
     143
     144/* macros for length in CaseMappingSpecials array in enc/unicode/casefold.h */
     145#define SpecialsLengthOffset 25  /* needs to be higher than the 22 bits used for Unicode codepoints */
     146#define SpecialsLengthExtract(n)    ((n) >> SpecialsLengthOffset)
     147#define SpecialsCodepointExtract(n) ((n) & ((1 << SpecialsLengthOffset) - 1))
     148#define SpecialsLengthEncode(n)     ((n) << SpecialsLengthOffset)
     149
     150#define OnigSpecialIndexMask        (((1 << OnigSpecialIndexWidth) - 1) << OnigSpecialIndexShift)
     151#define OnigSpecialIndexEncode(n)   ((n) << OnigSpecialIndexShift)
     152#define OnigSpecialIndexDecode(n)   (((n) & OnigSpecialIndexMask) >> OnigSpecialIndexShift)
     153
     154/* macros to shorten "enc/unicode/casefold.h", undefined immediately after including the file */
     155#define U ONIGENC_CASE_UPCASE
     156#define D ONIGENC_CASE_DOWNCASE
     157#define F ONIGENC_CASE_FOLD
     158#define ST ONIGENC_CASE_TITLECASE
     159#define SU ONIGENC_CASE_UP_SPECIAL
     160#define SL ONIGENC_CASE_DOWN_SPECIAL
     161#define IT ONIGENC_CASE_IS_TITLECASE
     162#define I(n) OnigSpecialIndexEncode(n)
     163#define L(n) SpecialsLengthEncode(n)
     164
     165#include "casefold.h"
     166
     167#undef U
     168#undef D
     169#undef F
     170#undef ST
     171#undef SU
     172#undef SL
     173#undef IT
     174#undef I
     175#undef L
     176
     177#include "name2ctype.h"
    143178
    144179#define CODE_RANGES_NUM numberof(CodeRanges)
    145180
    146181extern int
    147 onigenc_unicode_is_code_ctype(OnigCodePoint code, unsigned int ctype)
     182onigenc_unicode_is_code_ctype(OnigCodePoint code, unsigned int ctype, OnigEncoding enc ARG_UNUSED)
    148183{
    149184  if (
     
    177212extern int
    178213onigenc_utf16_32_get_ctype_code_range(OnigCtype ctype, OnigCodePoint* sb_out,
    179                                       const OnigCodePoint* ranges[])
     214                                      const OnigCodePoint* ranges[],
     215                                      OnigEncoding enc ARG_UNUSED)
    180216{
    181217  *sb_out = 0x00;
     
    183219}
    184220
    185 #include "st.h"
    186 
    187221#define PROPERTY_NAME_MAX_SIZE    (MAX_WORD_LENGTH + 1)
    188222
    189223extern int
    190 onigenc_unicode_property_name_to_ctype(OnigEncoding enc, UChar* name, UChar* end)
     224onigenc_unicode_property_name_to_ctype(OnigEncoding enc, const UChar* name, const UChar* end)
    191225{
    192226  int len;
    193227  int ctype;
    194228  UChar buf[PROPERTY_NAME_MAX_SIZE];
    195   UChar *p;
     229  const UChar *p;
    196230  OnigCodePoint code;
    197231
    198232  len = 0;
    199   for (p = name; p < end; p += enclen(enc, p)) {
     233  for (p = name; p < end; p += enclen(enc, p, end)) {
    200234    code = ONIGENC_MBC_TO_CODE(enc, p, end);
    201235    if (code == ' ' || code == '-' || code == '_')
     
    223257#define onigenc_unicode_unfold3_lookup onigenc_unicode_CaseUnfold_13_lookup
    224258
     259enum {
     260  I_WITH_DOT_ABOVE = 0x0130,
     261  DOTLESS_i = 0x0131,
     262  DOT_ABOVE = 0x0307
     263};
     264
    225265extern int
    226266onigenc_unicode_mbc_case_fold(OnigEncoding enc,
     
    234274
    235275  code = ONIGENC_MBC_TO_CODE(enc, p, end);
    236   len = enclen(enc, p);
     276  len = enclen(enc, p, end);
    237277  *pp += len;
    238278
    239279#ifdef USE_UNICODE_CASE_FOLD_TURKISH_AZERI
    240280  if ((flag & ONIGENC_CASE_FOLD_TURKISH_AZERI) != 0) {
    241     if (code == 0x0049) {
    242       return ONIGENC_CODE_TO_MBC(enc, 0x0131, fold);
    243     }
    244     else if (code == 0x0130) {
    245       return ONIGENC_CODE_TO_MBC(enc, 0x0069, fold);
     281    if (code == 'I') {
     282      return ONIGENC_CODE_TO_MBC(enc, DOTLESS_i, fold);
     283    }
     284    else if (code == I_WITH_DOT_ABOVE) {
     285      return ONIGENC_CODE_TO_MBC(enc, 'i', fold);
    246286    }
    247287  }
     
    249289
    250290  if ((to = onigenc_unicode_fold_lookup(code)) != 0) {
    251     if (to->n == 1) {
     291    if (OnigCodePointCount(to->n) == 1) {
    252292      return ONIGENC_CODE_TO_MBC(enc, to->code[0], fold);
    253293    }
     
    260300    {
    261301      rlen = 0;
    262       for (i = 0; i < to->n; i++) {
     302      for (i = 0; i < OnigCodePointCount(to->n); i++) {
    263303        len = ONIGENC_CODE_TO_MBC(enc, to->code[i], fold);
    264304        fold += len;
     
    277317extern int
    278318onigenc_unicode_apply_all_case_fold(OnigCaseFoldType flag,
    279                                     OnigApplyAllCaseFoldFunc f, void* arg)
     319                                    OnigApplyAllCaseFoldFunc f, void* arg,
     320                                    OnigEncoding enc ARG_UNUSED)
    280321{
    281322  const CaseUnfold_11_Type* p11;
     
    285326  for (i = 0; i < numberof(CaseUnfold_11); i++) {
    286327    p11 = &CaseUnfold_11[i];
    287     for (j = 0; j < p11->to.n; j++) {
     328    for (j = 0; j < OnigCodePointCount(p11->to.n); j++) {
    288329      code = p11->from;
    289330      r = (*f)(p11->to.code[j], &code, 1, arg);
     
    306347#ifdef USE_UNICODE_CASE_FOLD_TURKISH_AZERI
    307348  if ((flag & ONIGENC_CASE_FOLD_TURKISH_AZERI) != 0) {
    308     code = 0x0131;
    309     r = (*f)(0x0049, &code, 1, arg);
     349    code = DOTLESS_i;
     350    r = (*f)('I', &code, 1, arg);
    310351    if (r != 0) return r;
    311     code = 0x0049;
    312     r = (*f)(0x0131, &code, 1, arg);
     352    code = 'I';
     353    r = (*f)(DOTLESS_i, &code, 1, arg);
    313354    if (r != 0) return r;
    314355
    315     code = 0x0130;
    316     r = (*f)(0x0069, &code, 1, arg);
     356    code = I_WITH_DOT_ABOVE;
     357    r = (*f)('i', &code, 1, arg);
    317358    if (r != 0) return r;
    318     code = 0x0069;
    319     r = (*f)(0x0130, &code, 1, arg);
     359    code = 'i';
     360    r = (*f)(I_WITH_DOT_ABOVE, &code, 1, arg);
    320361    if (r != 0) return r;
    321362  }
     
    324365    for (i = 0; i < numberof(CaseUnfold_11_Locale); i++) {
    325366      p11 = &CaseUnfold_11_Locale[i];
    326       for (j = 0; j < p11->to.n; j++) {
     367      for (j = 0; j < OnigCodePointCount(p11->to.n); j++) {
    327368        code = p11->from;
    328369        r = (*f)(p11->to.code[j], &code, 1, arg);
     
    350391  if ((flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) != 0) {
    351392    for (i = 0; i < numberof(CaseUnfold_12); i++) {
    352       for (j = 0; j < CaseUnfold_12[i].to.n; j++) {
     393      for (j = 0; j < OnigCodePointCount(CaseUnfold_12[i].to.n); j++) {
    353394        r = (*f)(CaseUnfold_12[i].to.code[j],
    354395                 (OnigCodePoint* )CaseUnfold_12[i].from, 2, arg);
    355396        if (r != 0) return r;
    356397
    357         for (k = 0; k < CaseUnfold_12[i].to.n; k++) {
     398        for (k = 0; k < OnigCodePointCount(CaseUnfold_12[i].to.n); k++) {
    358399          if (k == j) continue;
    359400
     
    369410#endif
    370411      for (i = 0; i < numberof(CaseUnfold_12_Locale); i++) {
    371         for (j = 0; j < CaseUnfold_12_Locale[i].to.n; j++) {
     412        for (j = 0; j < OnigCodePointCount(CaseUnfold_12_Locale[i].to.n); j++) {
    372413          r = (*f)(CaseUnfold_12_Locale[i].to.code[j],
    373414                   (OnigCodePoint* )CaseUnfold_12_Locale[i].from, 2, arg);
    374415          if (r != 0) return r;
    375416
    376           for (k = 0; k < CaseUnfold_12_Locale[i].to.n; k++) {
     417          for (k = 0; k < OnigCodePointCount(CaseUnfold_12_Locale[i].to.n); k++) {
    377418            if (k == j) continue;
    378419
     
    389430
    390431    for (i = 0; i < numberof(CaseUnfold_13); i++) {
    391       for (j = 0; j < CaseUnfold_13[i].to.n; j++) {
     432      for (j = 0; j < OnigCodePointCount(CaseUnfold_13[i].to.n); j++) {
    392433        r = (*f)(CaseUnfold_13[i].to.code[j],
    393434                 (OnigCodePoint* )CaseUnfold_13[i].from, 3, arg);
    394435        if (r != 0) return r;
    395436
    396         for (k = 0; k < CaseUnfold_13[i].to.n; k++) {
     437        for (k = 0; k < OnigCodePointCount(CaseUnfold_13[i].to.n); k++) {
    397438          if (k == j) continue;
    398439
     
    407448  return 0;
    408449}
     450
     451#define CodePointListValidP(x) (OnigCodePointCount((x)->n) <= numberof((x)->code))
    409452
    410453extern int
     
    421464
    422465  code = ONIGENC_MBC_TO_CODE(enc, p, end);
    423   len = enclen(enc, p);
     466  len = enclen(enc, p, end);
    424467
    425468#ifdef USE_UNICODE_CASE_FOLD_TURKISH_AZERI
    426469  if ((flag & ONIGENC_CASE_FOLD_TURKISH_AZERI) != 0) {
    427     if (code == 0x0049) {
     470    switch (code) {
     471    case 'I':
    428472      items[0].byte_len = len;
    429473      items[0].code_len = 1;
    430       items[0].code[0]  = 0x0131;
     474      items[0].code[0]  = DOTLESS_i;
    431475      return 1;
    432     }
    433     else if (code == 0x0130) {
     476    case I_WITH_DOT_ABOVE:
    434477      items[0].byte_len = len;
    435478      items[0].code_len = 1;
    436       items[0].code[0]  = 0x0069;
     479      items[0].code[0]  = 'i';
    437480      return 1;
    438     }
    439     else if (code == 0x0131) {
     481    case DOTLESS_i:
    440482      items[0].byte_len = len;
    441483      items[0].code_len = 1;
    442       items[0].code[0]  = 0x0049;
     484      items[0].code[0]  = 'I';
    443485      return 1;
    444     }
    445     else if (code == 0x0069) {
     486    case 'i':
    446487      items[0].byte_len = len;
    447488      items[0].code_len = 1;
    448       items[0].code[0]  = 0x0130;
     489      items[0].code[0]  = I_WITH_DOT_ABOVE;
    449490      return 1;
    450491    }
     
    453494
    454495  if ((to = onigenc_unicode_fold_lookup(code)) != 0) {
    455     if (to->n == 1) {
     496    if (OnigCodePointCount(to->n) == 1) {
    456497      OnigCodePoint orig_code = code;
    457498
     
    462503
    463504      code = to->code[0];
    464       if ((to = onigenc_unicode_unfold1_lookup(code)) != 0) {
    465         for (i = 0; i < to->n; i++) {
     505      if ((to = onigenc_unicode_unfold1_lookup(code)) != 0 &&
     506          CodePointListValidP(to)) {
     507        for (i = 0; i < OnigCodePointCount(to->n); i++) {
    466508          if (to->code[i] != orig_code) {
    467509            items[n].byte_len = len;
     
    477519      int fn, ncs[3];
    478520
    479       for (fn = 0; fn < to->n; fn++) {
     521      for (fn = 0; fn < OnigCodePointCount(to->n); fn++) {
    480522        cs[fn][0] = to->code[fn];
    481523        if ((z3 = onigenc_unicode_unfold1_lookup(cs[fn][0])) != 0) {
    482           for (i = 0; i < z3->n; i++) {
     524          for (i = 0; i < OnigCodePointCount(z3->n); i++) {
    483525            cs[fn][i+1] = z3->code[i];
    484526          }
    485           ncs[fn] = z3->n + 1;
     527          ncs[fn] = OnigCodePointCount(z3->n) + 1;
    486528        }
    487529        else
     
    500542        }
    501543
    502         if ((z2 = onigenc_unicode_unfold2_lookup(to->code)) != 0) {
    503           for (i = 0; i < z2->n; i++) {
     544        if ((z2 = onigenc_unicode_unfold2_lookup(to->code)) != 0 &&
     545            CodePointListValidP(z2)) {
     546          for (i = 0; i < OnigCodePointCount(z2->n); i++) {
    504547            if (z2->code[i] == code) continue;
    505548
     
    525568        }
    526569
    527         if ((z2 = onigenc_unicode_unfold3_lookup(to->code)) != 0) {
    528           for (i = 0; i < z2->n; i++) {
     570        if ((z2 = onigenc_unicode_unfold3_lookup(to->code)) != 0 &&
     571            CodePointListValidP(z2)) {
     572          for (i = 0; i < OnigCodePointCount(z2->n); i++) {
    529573            if (z2->code[i] == code) continue;
    530574
     
    542586  }
    543587  else {
    544     if ((to = onigenc_unicode_unfold1_lookup(code)) != 0) {
    545       for (i = 0; i < to->n; i++) {
     588    if ((to = onigenc_unicode_unfold1_lookup(code)) != 0 &&
     589        CodePointListValidP(to)) {
     590      for (i = 0; i < OnigCodePointCount(to->n); i++) {
    546591        items[n].byte_len = len;
    547592        items[n].code_len = 1;
     
    561606      code = ONIGENC_MBC_TO_CODE(enc, p, end);
    562607      if ((to = onigenc_unicode_fold_lookup(code)) != 0
    563           && to->n == 1) {
     608          && OnigCodePointCount(to->n) == 1) {
    564609        codes[1] = to->code[0];
    565610      }
     
    567612        codes[1] = code;
    568613
    569       clen = enclen(enc, p);
     614      clen = enclen(enc, p, end);
    570615      len += clen;
    571       if ((z2 = onigenc_unicode_unfold2_lookup(codes)) != 0) {
    572         for (i = 0; i < z2->n; i++) {
     616      if ((z2 = onigenc_unicode_unfold2_lookup(codes)) != 0 &&
     617          CodePointListValidP(z2)) {
     618        for (i = 0; i < OnigCodePointCount(z2->n); i++) {
    573619          items[n].byte_len = len;
    574620          items[n].code_len = 1;
     
    582628        code = ONIGENC_MBC_TO_CODE(enc, p, end);
    583629        if ((to = onigenc_unicode_fold_lookup(code)) != 0
    584             && to->n == 1) {
     630            && OnigCodePointCount(to->n) == 1) {
    585631          codes[2] = to->code[0];
    586632        }
     
    588634          codes[2] = code;
    589635
    590         clen = enclen(enc, p);
     636        clen = enclen(enc, p, end);
    591637        len += clen;
    592         if ((z2 = onigenc_unicode_unfold3_lookup(codes)) != 0) {
    593           for (i = 0; i < z2->n; i++) {
     638        if ((z2 = onigenc_unicode_unfold3_lookup(codes)) != 0 &&
     639            CodePointListValidP(z2)) {
     640          for (i = 0; i < OnigCodePointCount(z2->n); i++) {
    594641            items[n].byte_len = len;
    595642            items[n].code_len = 1;
     
    604651  return n;
    605652}
     653
     654/* length in bytes for three characters in UTF-32; e.g. needed for ffi (U+FB03) */
     655#define CASE_MAPPING_SLACK 12
     656#define MODIFIED (flags |= ONIGENC_CASE_MODIFIED)
     657extern int
     658onigenc_unicode_case_map(OnigCaseFoldType* flagP,
     659    const OnigUChar** pp, const OnigUChar* end,
     660    OnigUChar* to, OnigUChar* to_end,
     661    const struct OnigEncodingTypeST* enc)
     662{
     663  OnigCodePoint code;
     664  OnigUChar *to_start = to;
     665  OnigCaseFoldType flags = *flagP;
     666  int codepoint_length;
     667
     668  to_end -= CASE_MAPPING_SLACK;
     669  /* copy flags ONIGENC_CASE_UPCASE     and ONIGENC_CASE_DOWNCASE over to
     670   *            ONIGENC_CASE_UP_SPECIAL and ONIGENC_CASE_DOWN_SPECIAL */
     671  flags |= (flags & (ONIGENC_CASE_UPCASE | ONIGENC_CASE_DOWNCASE)) << ONIGENC_CASE_SPECIAL_OFFSET;
     672
     673  while (*pp < end && to <= to_end) {
     674    codepoint_length = ONIGENC_PRECISE_MBC_ENC_LEN(enc, *pp, end);
     675    if (codepoint_length < 0)
     676      return codepoint_length; /* encoding invalid */
     677    code = ONIGENC_MBC_TO_CODE(enc, *pp, end);
     678    *pp += codepoint_length;
     679
     680    if (code <= 'z') { /* ASCII comes first */
     681      if (code >= 'a' && code <= 'z') {
     682        if (flags & ONIGENC_CASE_UPCASE) {
     683          MODIFIED;
     684          if (flags & ONIGENC_CASE_FOLD_TURKISH_AZERI && code == 'i')
     685            code = I_WITH_DOT_ABOVE;
     686          else
     687            code += 'A' - 'a';
     688        }
     689      }
     690      else if (code >= 'A' && code <= 'Z') {
     691        if (flags & (ONIGENC_CASE_DOWNCASE | ONIGENC_CASE_FOLD)) {
     692          MODIFIED;
     693          if (flags & ONIGENC_CASE_FOLD_TURKISH_AZERI && code == 'I')
     694            code = DOTLESS_i;
     695          else
     696            code += 'a' - 'A';
     697        }
     698      }
     699    }
     700    else if (!(flags & ONIGENC_CASE_ASCII_ONLY) && code >= 0x00B5) { /* deal with non-ASCII; micron sign (U+00B5) is lowest affected */
     701      const CodePointList3 *folded;
     702
     703      if (code == I_WITH_DOT_ABOVE) {
     704        if (flags & (ONIGENC_CASE_DOWNCASE | ONIGENC_CASE_FOLD)) {
     705          MODIFIED;
     706          code = 'i';
     707          if (!(flags & ONIGENC_CASE_FOLD_TURKISH_AZERI)) { /* make dot above explicit */
     708            to += ONIGENC_CODE_TO_MBC(enc, code, to);
     709            code = DOT_ABOVE;
     710          }
     711        }
     712      }
     713      else if (code == DOTLESS_i) { /* handle this manually, because it isn't involved in folding */
     714        if (flags & ONIGENC_CASE_UPCASE) {
     715          MODIFIED;
     716          code = 'I';
     717        }
     718      }
     719      else if ((folded = onigenc_unicode_fold_lookup(code)) != 0) { /* data about character found in CaseFold_11_Table */
     720        if ((flags & ONIGENC_CASE_TITLECASE)                                 /* Titlecase needed, */
     721            && (OnigCaseFoldFlags(folded->n) & ONIGENC_CASE_IS_TITLECASE)) { /* but already Titlecase  */
     722          /* already Titlecase, no changes needed */
     723        }
     724        else if (flags & OnigCaseFoldFlags(folded->n)) { /* needs and data availability match */
     725          const OnigCodePoint *next;
     726          int count;
     727
     728          MODIFIED;
     729          if (flags & OnigCaseFoldFlags(folded->n) & ONIGENC_CASE_SPECIALS) { /* special */
     730            const OnigCodePoint *SpecialsStart = CaseMappingSpecials + OnigSpecialIndexDecode(folded->n);
     731
     732            if (OnigCaseFoldFlags(folded->n) & ONIGENC_CASE_IS_TITLECASE) { /* swapCASE available */
     733              if ((flags & (ONIGENC_CASE_UPCASE | ONIGENC_CASE_DOWNCASE))
     734                  == (ONIGENC_CASE_UPCASE | ONIGENC_CASE_DOWNCASE)) /* swapCASE needed */
     735                goto SpecialsCopy;
     736              else /* swapCASE not needed */
     737                SpecialsStart += SpecialsLengthExtract(*SpecialsStart);
     738            }
     739            if (OnigCaseFoldFlags(folded->n) & ONIGENC_CASE_TITLECASE) { /* Titlecase available */
     740              if (flags & ONIGENC_CASE_TITLECASE) /* Titlecase needed, but not yet Titlecase */
     741                goto SpecialsCopy;
     742              else /* Titlecase not needed */
     743                SpecialsStart += SpecialsLengthExtract(*SpecialsStart);
     744            }
     745            if (OnigCaseFoldFlags(folded->n) & ONIGENC_CASE_DOWN_SPECIAL) {
     746              if (!(flags & ONIGENC_CASE_DOWN_SPECIAL))
     747                SpecialsStart += SpecialsLengthExtract(*SpecialsStart);
     748            }
     749            /* here, we know we use ONIGENC_CASE_UP_SPECIAL, and the position is right */
     750SpecialsCopy:
     751            count = SpecialsLengthExtract(*SpecialsStart);
     752            next = SpecialsStart;
     753            code = SpecialsCodepointExtract(*next++);
     754          }
     755          else { /* no specials */
     756            count = OnigCodePointCount(folded->n);
     757            next = folded->code;
     758            code = *next++;
     759          }
     760          if (count == 1)
     761            ;
     762          else if (count == 2) {
     763            to += ONIGENC_CODE_TO_MBC(enc, code, to);
     764            code = *next;
     765          }
     766          else { /* count == 3 */
     767            to += ONIGENC_CODE_TO_MBC(enc, code, to);
     768            to += ONIGENC_CODE_TO_MBC(enc, *next++, to);
     769            code = *next;
     770          }
     771        }
     772      }
     773      else if ((folded = onigenc_unicode_unfold1_lookup(code)) != 0  /* data about character found in CaseUnfold_11_Table */
     774          && flags & OnigCaseFoldFlags(folded->n)) { /* needs and data availability match */
     775        MODIFIED;
     776        code = folded->code[(flags & OnigCaseFoldFlags(folded->n) & ONIGENC_CASE_TITLECASE) ? 1 : 0];
     777      }
     778    }
     779    to += ONIGENC_CODE_TO_MBC(enc, code, to);
     780    /* switch from titlecase to lowercase for capitalize */
     781    if (flags & ONIGENC_CASE_TITLECASE)
     782      flags ^= (ONIGENC_CASE_UPCASE | ONIGENC_CASE_DOWNCASE | ONIGENC_CASE_TITLECASE |
     783          ONIGENC_CASE_UP_SPECIAL | ONIGENC_CASE_DOWN_SPECIAL);
     784  }
     785  *flagP = flags;
     786  return (int )(to - to_start);
     787}
     788
     789#if 0
     790const char onigenc_unicode_version_string[] =
     791#ifdef ONIG_UNICODE_VERSION_STRING
     792    ONIG_UNICODE_VERSION_STRING
     793#endif
     794    "";
     795
     796const int onigenc_unicode_version_number[3] = {
     797#ifdef ONIG_UNICODE_VERSION_MAJOR
     798    ONIG_UNICODE_VERSION_MAJOR,
     799    ONIG_UNICODE_VERSION_MINOR,
     800    ONIG_UNICODE_VERSION_TEENY,
     801#else
     802    0
     803#endif
     804};
     805#endif
  • EcnlProtoTool/trunk/onigmo-6.1.3/src/enc/unicode/casefold.h

    r321 r331  
    22/* Generated by tool/case-folding.rb */
    33
     4#if defined ONIG_UNICODE_VERSION_STRING && !( \
     5      ONIG_UNICODE_VERSION_MAJOR == 10 && \
     6      ONIG_UNICODE_VERSION_MINOR == 0 && \
     7      ONIG_UNICODE_VERSION_TEENY == 0 && \
     8      1)
     9# error ONIG_UNICODE_VERSION_STRING mismatch
     10#endif
     11#define ONIG_UNICODE_VERSION_STRING "10.0.0"
     12#define ONIG_UNICODE_VERSION_MAJOR 10
     13#define ONIG_UNICODE_VERSION_MINOR 0
     14#define ONIG_UNICODE_VERSION_TEENY 0
     15
    416static const CaseFold_11_Type CaseFold_11_Table[] = {
    5 #define CaseFold (*(CaseFold_11_Type (*)[1178])(CaseFold_11_Table+0))
    6   {0x0041, {1, {0x0061}}},
    7   {0x0042, {1, {0x0062}}},
    8   {0x0043, {1, {0x0063}}},
    9   {0x0044, {1, {0x0064}}},
    10   {0x0045, {1, {0x0065}}},
    11   {0x0046, {1, {0x0066}}},
    12   {0x0047, {1, {0x0067}}},
    13   {0x0048, {1, {0x0068}}},
    14   {0x004a, {1, {0x006a}}},
    15   {0x004b, {1, {0x006b}}},
    16   {0x004c, {1, {0x006c}}},
    17   {0x004d, {1, {0x006d}}},
    18   {0x004e, {1, {0x006e}}},
    19   {0x004f, {1, {0x006f}}},
    20   {0x0050, {1, {0x0070}}},
    21   {0x0051, {1, {0x0071}}},
    22   {0x0052, {1, {0x0072}}},
    23   {0x0053, {1, {0x0073}}},
    24   {0x0054, {1, {0x0074}}},
    25   {0x0055, {1, {0x0075}}},
    26   {0x0056, {1, {0x0076}}},
    27   {0x0057, {1, {0x0077}}},
    28   {0x0058, {1, {0x0078}}},
    29   {0x0059, {1, {0x0079}}},
    30   {0x005a, {1, {0x007a}}},
    31   {0x00b5, {1, {0x03bc}}},
    32   {0x00c0, {1, {0x00e0}}},
    33   {0x00c1, {1, {0x00e1}}},
    34   {0x00c2, {1, {0x00e2}}},
    35   {0x00c3, {1, {0x00e3}}},
    36   {0x00c4, {1, {0x00e4}}},
    37   {0x00c5, {1, {0x00e5}}},
    38   {0x00c6, {1, {0x00e6}}},
    39   {0x00c7, {1, {0x00e7}}},
    40   {0x00c8, {1, {0x00e8}}},
    41   {0x00c9, {1, {0x00e9}}},
    42   {0x00ca, {1, {0x00ea}}},
    43   {0x00cb, {1, {0x00eb}}},
    44   {0x00cc, {1, {0x00ec}}},
    45   {0x00cd, {1, {0x00ed}}},
    46   {0x00ce, {1, {0x00ee}}},
    47   {0x00cf, {1, {0x00ef}}},
    48   {0x00d0, {1, {0x00f0}}},
    49   {0x00d1, {1, {0x00f1}}},
    50   {0x00d2, {1, {0x00f2}}},
    51   {0x00d3, {1, {0x00f3}}},
    52   {0x00d4, {1, {0x00f4}}},
    53   {0x00d5, {1, {0x00f5}}},
    54   {0x00d6, {1, {0x00f6}}},
    55   {0x00d8, {1, {0x00f8}}},
    56   {0x00d9, {1, {0x00f9}}},
    57   {0x00da, {1, {0x00fa}}},
    58   {0x00db, {1, {0x00fb}}},
    59   {0x00dc, {1, {0x00fc}}},
    60   {0x00dd, {1, {0x00fd}}},
    61   {0x00de, {1, {0x00fe}}},
    62   {0x00df, {2, {0x0073, 0x0073}}},
    63   {0x0100, {1, {0x0101}}},
    64   {0x0102, {1, {0x0103}}},
    65   {0x0104, {1, {0x0105}}},
    66   {0x0106, {1, {0x0107}}},
    67   {0x0108, {1, {0x0109}}},
    68   {0x010a, {1, {0x010b}}},
    69   {0x010c, {1, {0x010d}}},
    70   {0x010e, {1, {0x010f}}},
    71   {0x0110, {1, {0x0111}}},
    72   {0x0112, {1, {0x0113}}},
    73   {0x0114, {1, {0x0115}}},
    74   {0x0116, {1, {0x0117}}},
    75   {0x0118, {1, {0x0119}}},
    76   {0x011a, {1, {0x011b}}},
    77   {0x011c, {1, {0x011d}}},
    78   {0x011e, {1, {0x011f}}},
    79   {0x0120, {1, {0x0121}}},
    80   {0x0122, {1, {0x0123}}},
    81   {0x0124, {1, {0x0125}}},
    82   {0x0126, {1, {0x0127}}},
    83   {0x0128, {1, {0x0129}}},
    84   {0x012a, {1, {0x012b}}},
    85   {0x012c, {1, {0x012d}}},
    86   {0x012e, {1, {0x012f}}},
    87   {0x0132, {1, {0x0133}}},
    88   {0x0134, {1, {0x0135}}},
    89   {0x0136, {1, {0x0137}}},
    90   {0x0139, {1, {0x013a}}},
    91   {0x013b, {1, {0x013c}}},
    92   {0x013d, {1, {0x013e}}},
    93   {0x013f, {1, {0x0140}}},
    94   {0x0141, {1, {0x0142}}},
    95   {0x0143, {1, {0x0144}}},
    96   {0x0145, {1, {0x0146}}},
    97   {0x0147, {1, {0x0148}}},
    98   {0x0149, {2, {0x02bc, 0x006e}}},
    99   {0x014a, {1, {0x014b}}},
    100   {0x014c, {1, {0x014d}}},
    101   {0x014e, {1, {0x014f}}},
    102   {0x0150, {1, {0x0151}}},
    103   {0x0152, {1, {0x0153}}},
    104   {0x0154, {1, {0x0155}}},
    105   {0x0156, {1, {0x0157}}},
    106   {0x0158, {1, {0x0159}}},
    107   {0x015a, {1, {0x015b}}},
    108   {0x015c, {1, {0x015d}}},
    109   {0x015e, {1, {0x015f}}},
    110   {0x0160, {1, {0x0161}}},
    111   {0x0162, {1, {0x0163}}},
    112   {0x0164, {1, {0x0165}}},
    113   {0x0166, {1, {0x0167}}},
    114   {0x0168, {1, {0x0169}}},
    115   {0x016a, {1, {0x016b}}},
    116   {0x016c, {1, {0x016d}}},
    117   {0x016e, {1, {0x016f}}},
    118   {0x0170, {1, {0x0171}}},
    119   {0x0172, {1, {0x0173}}},
    120   {0x0174, {1, {0x0175}}},
    121   {0x0176, {1, {0x0177}}},
    122   {0x0178, {1, {0x00ff}}},
    123   {0x0179, {1, {0x017a}}},
    124   {0x017b, {1, {0x017c}}},
    125   {0x017d, {1, {0x017e}}},
    126   {0x017f, {1, {0x0073}}},
    127   {0x0181, {1, {0x0253}}},
    128   {0x0182, {1, {0x0183}}},
    129   {0x0184, {1, {0x0185}}},
    130   {0x0186, {1, {0x0254}}},
    131   {0x0187, {1, {0x0188}}},
    132   {0x0189, {1, {0x0256}}},
    133   {0x018a, {1, {0x0257}}},
    134   {0x018b, {1, {0x018c}}},
    135   {0x018e, {1, {0x01dd}}},
    136   {0x018f, {1, {0x0259}}},
    137   {0x0190, {1, {0x025b}}},
    138   {0x0191, {1, {0x0192}}},
    139   {0x0193, {1, {0x0260}}},
    140   {0x0194, {1, {0x0263}}},
    141   {0x0196, {1, {0x0269}}},
    142   {0x0197, {1, {0x0268}}},
    143   {0x0198, {1, {0x0199}}},
    144   {0x019c, {1, {0x026f}}},
    145   {0x019d, {1, {0x0272}}},
    146   {0x019f, {1, {0x0275}}},
    147   {0x01a0, {1, {0x01a1}}},
    148   {0x01a2, {1, {0x01a3}}},
    149   {0x01a4, {1, {0x01a5}}},
    150   {0x01a6, {1, {0x0280}}},
    151   {0x01a7, {1, {0x01a8}}},
    152   {0x01a9, {1, {0x0283}}},
    153   {0x01ac, {1, {0x01ad}}},
    154   {0x01ae, {1, {0x0288}}},
    155   {0x01af, {1, {0x01b0}}},
    156   {0x01b1, {1, {0x028a}}},
    157   {0x01b2, {1, {0x028b}}},
    158   {0x01b3, {1, {0x01b4}}},
    159   {0x01b5, {1, {0x01b6}}},
    160   {0x01b7, {1, {0x0292}}},
    161   {0x01b8, {1, {0x01b9}}},
    162   {0x01bc, {1, {0x01bd}}},
    163   {0x01c4, {1, {0x01c6}}},
    164   {0x01c5, {1, {0x01c6}}},
    165   {0x01c7, {1, {0x01c9}}},
    166   {0x01c8, {1, {0x01c9}}},
    167   {0x01ca, {1, {0x01cc}}},
    168   {0x01cb, {1, {0x01cc}}},
    169   {0x01cd, {1, {0x01ce}}},
    170   {0x01cf, {1, {0x01d0}}},
    171   {0x01d1, {1, {0x01d2}}},
    172   {0x01d3, {1, {0x01d4}}},
    173   {0x01d5, {1, {0x01d6}}},
    174   {0x01d7, {1, {0x01d8}}},
    175   {0x01d9, {1, {0x01da}}},
    176   {0x01db, {1, {0x01dc}}},
    177   {0x01de, {1, {0x01df}}},
    178   {0x01e0, {1, {0x01e1}}},
    179   {0x01e2, {1, {0x01e3}}},
    180   {0x01e4, {1, {0x01e5}}},
    181   {0x01e6, {1, {0x01e7}}},
    182   {0x01e8, {1, {0x01e9}}},
    183   {0x01ea, {1, {0x01eb}}},
    184   {0x01ec, {1, {0x01ed}}},
    185   {0x01ee, {1, {0x01ef}}},
    186   {0x01f0, {2, {0x006a, 0x030c}}},
    187   {0x01f1, {1, {0x01f3}}},
    188   {0x01f2, {1, {0x01f3}}},
    189   {0x01f4, {1, {0x01f5}}},
    190   {0x01f6, {1, {0x0195}}},
    191   {0x01f7, {1, {0x01bf}}},
    192   {0x01f8, {1, {0x01f9}}},
    193   {0x01fa, {1, {0x01fb}}},
    194   {0x01fc, {1, {0x01fd}}},
    195   {0x01fe, {1, {0x01ff}}},
    196   {0x0200, {1, {0x0201}}},
    197   {0x0202, {1, {0x0203}}},
    198   {0x0204, {1, {0x0205}}},
    199   {0x0206, {1, {0x0207}}},
    200   {0x0208, {1, {0x0209}}},
    201   {0x020a, {1, {0x020b}}},
    202   {0x020c, {1, {0x020d}}},
    203   {0x020e, {1, {0x020f}}},
    204   {0x0210, {1, {0x0211}}},
    205   {0x0212, {1, {0x0213}}},
    206   {0x0214, {1, {0x0215}}},
    207   {0x0216, {1, {0x0217}}},
    208   {0x0218, {1, {0x0219}}},
    209   {0x021a, {1, {0x021b}}},
    210   {0x021c, {1, {0x021d}}},
    211   {0x021e, {1, {0x021f}}},
    212   {0x0220, {1, {0x019e}}},
    213   {0x0222, {1, {0x0223}}},
    214   {0x0224, {1, {0x0225}}},
    215   {0x0226, {1, {0x0227}}},
    216   {0x0228, {1, {0x0229}}},
    217   {0x022a, {1, {0x022b}}},
    218   {0x022c, {1, {0x022d}}},
    219   {0x022e, {1, {0x022f}}},
    220   {0x0230, {1, {0x0231}}},
    221   {0x0232, {1, {0x0233}}},
    222   {0x023a, {1, {0x2c65}}},
    223   {0x023b, {1, {0x023c}}},
    224   {0x023d, {1, {0x019a}}},
    225   {0x023e, {1, {0x2c66}}},
    226   {0x0241, {1, {0x0242}}},
    227   {0x0243, {1, {0x0180}}},
    228   {0x0244, {1, {0x0289}}},
    229   {0x0245, {1, {0x028c}}},
    230   {0x0246, {1, {0x0247}}},
    231   {0x0248, {1, {0x0249}}},
    232   {0x024a, {1, {0x024b}}},
    233   {0x024c, {1, {0x024d}}},
    234   {0x024e, {1, {0x024f}}},
    235   {0x0345, {1, {0x03b9}}},
    236   {0x0370, {1, {0x0371}}},
    237   {0x0372, {1, {0x0373}}},
    238   {0x0376, {1, {0x0377}}},
    239   {0x037f, {1, {0x03f3}}},
    240   {0x0386, {1, {0x03ac}}},
    241   {0x0388, {1, {0x03ad}}},
    242   {0x0389, {1, {0x03ae}}},
    243   {0x038a, {1, {0x03af}}},
    244   {0x038c, {1, {0x03cc}}},
    245   {0x038e, {1, {0x03cd}}},
    246   {0x038f, {1, {0x03ce}}},
    247   {0x0390, {3, {0x03b9, 0x0308, 0x0301}}},
    248   {0x0391, {1, {0x03b1}}},
    249   {0x0392, {1, {0x03b2}}},
    250   {0x0393, {1, {0x03b3}}},
    251   {0x0394, {1, {0x03b4}}},
    252   {0x0395, {1, {0x03b5}}},
    253   {0x0396, {1, {0x03b6}}},
    254   {0x0397, {1, {0x03b7}}},
    255   {0x0398, {1, {0x03b8}}},
    256   {0x0399, {1, {0x03b9}}},
    257   {0x039a, {1, {0x03ba}}},
    258   {0x039b, {1, {0x03bb}}},
    259   {0x039c, {1, {0x03bc}}},
    260   {0x039d, {1, {0x03bd}}},
    261   {0x039e, {1, {0x03be}}},
    262   {0x039f, {1, {0x03bf}}},
    263   {0x03a0, {1, {0x03c0}}},
    264   {0x03a1, {1, {0x03c1}}},
    265   {0x03a3, {1, {0x03c3}}},
    266   {0x03a4, {1, {0x03c4}}},
    267   {0x03a5, {1, {0x03c5}}},
    268   {0x03a6, {1, {0x03c6}}},
    269   {0x03a7, {1, {0x03c7}}},
    270   {0x03a8, {1, {0x03c8}}},
    271   {0x03a9, {1, {0x03c9}}},
    272   {0x03aa, {1, {0x03ca}}},
    273   {0x03ab, {1, {0x03cb}}},
    274   {0x03b0, {3, {0x03c5, 0x0308, 0x0301}}},
    275   {0x03c2, {1, {0x03c3}}},
    276   {0x03cf, {1, {0x03d7}}},
    277   {0x03d0, {1, {0x03b2}}},
    278   {0x03d1, {1, {0x03b8}}},
    279   {0x03d5, {1, {0x03c6}}},
    280   {0x03d6, {1, {0x03c0}}},
    281   {0x03d8, {1, {0x03d9}}},
    282   {0x03da, {1, {0x03db}}},
    283   {0x03dc, {1, {0x03dd}}},
    284   {0x03de, {1, {0x03df}}},
    285   {0x03e0, {1, {0x03e1}}},
    286   {0x03e2, {1, {0x03e3}}},
    287   {0x03e4, {1, {0x03e5}}},
    288   {0x03e6, {1, {0x03e7}}},
    289   {0x03e8, {1, {0x03e9}}},
    290   {0x03ea, {1, {0x03eb}}},
    291   {0x03ec, {1, {0x03ed}}},
    292   {0x03ee, {1, {0x03ef}}},
    293   {0x03f0, {1, {0x03ba}}},
    294   {0x03f1, {1, {0x03c1}}},
    295   {0x03f4, {1, {0x03b8}}},
    296   {0x03f5, {1, {0x03b5}}},
    297   {0x03f7, {1, {0x03f8}}},
    298   {0x03f9, {1, {0x03f2}}},
    299   {0x03fa, {1, {0x03fb}}},
    300   {0x03fd, {1, {0x037b}}},
    301   {0x03fe, {1, {0x037c}}},
    302   {0x03ff, {1, {0x037d}}},
    303   {0x0400, {1, {0x0450}}},
    304   {0x0401, {1, {0x0451}}},
    305   {0x0402, {1, {0x0452}}},
    306   {0x0403, {1, {0x0453}}},
    307   {0x0404, {1, {0x0454}}},
    308   {0x0405, {1, {0x0455}}},
    309   {0x0406, {1, {0x0456}}},
    310   {0x0407, {1, {0x0457}}},
    311   {0x0408, {1, {0x0458}}},
    312   {0x0409, {1, {0x0459}}},
    313   {0x040a, {1, {0x045a}}},
    314   {0x040b, {1, {0x045b}}},
    315   {0x040c, {1, {0x045c}}},
    316   {0x040d, {1, {0x045d}}},
    317   {0x040e, {1, {0x045e}}},
    318   {0x040f, {1, {0x045f}}},
    319   {0x0410, {1, {0x0430}}},
    320   {0x0411, {1, {0x0431}}},
    321   {0x0412, {1, {0x0432}}},
    322   {0x0413, {1, {0x0433}}},
    323   {0x0414, {1, {0x0434}}},
    324   {0x0415, {1, {0x0435}}},
    325   {0x0416, {1, {0x0436}}},
    326   {0x0417, {1, {0x0437}}},
    327   {0x0418, {1, {0x0438}}},
    328   {0x0419, {1, {0x0439}}},
    329   {0x041a, {1, {0x043a}}},
    330   {0x041b, {1, {0x043b}}},
    331   {0x041c, {1, {0x043c}}},
    332   {0x041d, {1, {0x043d}}},
    333   {0x041e, {1, {0x043e}}},
    334   {0x041f, {1, {0x043f}}},
    335   {0x0420, {1, {0x0440}}},
    336   {0x0421, {1, {0x0441}}},
    337   {0x0422, {1, {0x0442}}},
    338   {0x0423, {1, {0x0443}}},
    339   {0x0424, {1, {0x0444}}},
    340   {0x0425, {1, {0x0445}}},
    341   {0x0426, {1, {0x0446}}},
    342   {0x0427, {1, {0x0447}}},
    343   {0x0428, {1, {0x0448}}},
    344   {0x0429, {1, {0x0449}}},
    345   {0x042a, {1, {0x044a}}},
    346   {0x042b, {1, {0x044b}}},
    347   {0x042c, {1, {0x044c}}},
    348   {0x042d, {1, {0x044d}}},
    349   {0x042e, {1, {0x044e}}},
    350   {0x042f, {1, {0x044f}}},
    351   {0x0460, {1, {0x0461}}},
    352   {0x0462, {1, {0x0463}}},
    353   {0x0464, {1, {0x0465}}},
    354   {0x0466, {1, {0x0467}}},
    355   {0x0468, {1, {0x0469}}},
    356   {0x046a, {1, {0x046b}}},
    357   {0x046c, {1, {0x046d}}},
    358   {0x046e, {1, {0x046f}}},
    359   {0x0470, {1, {0x0471}}},
    360   {0x0472, {1, {0x0473}}},
    361   {0x0474, {1, {0x0475}}},
    362   {0x0476, {1, {0x0477}}},
    363   {0x0478, {1, {0x0479}}},
    364   {0x047a, {1, {0x047b}}},
    365   {0x047c, {1, {0x047d}}},
    366   {0x047e, {1, {0x047f}}},
    367   {0x0480, {1, {0x0481}}},
    368   {0x048a, {1, {0x048b}}},
    369   {0x048c, {1, {0x048d}}},
    370   {0x048e, {1, {0x048f}}},
    371   {0x0490, {1, {0x0491}}},
    372   {0x0492, {1, {0x0493}}},
    373   {0x0494, {1, {0x0495}}},
    374   {0x0496, {1, {0x0497}}},
    375   {0x0498, {1, {0x0499}}},
    376   {0x049a, {1, {0x049b}}},
    377   {0x049c, {1, {0x049d}}},
    378   {0x049e, {1, {0x049f}}},
    379   {0x04a0, {1, {0x04a1}}},
    380   {0x04a2, {1, {0x04a3}}},
    381   {0x04a4, {1, {0x04a5}}},
    382   {0x04a6, {1, {0x04a7}}},
    383   {0x04a8, {1, {0x04a9}}},
    384   {0x04aa, {1, {0x04ab}}},
    385   {0x04ac, {1, {0x04ad}}},
    386   {0x04ae, {1, {0x04af}}},
    387   {0x04b0, {1, {0x04b1}}},
    388   {0x04b2, {1, {0x04b3}}},
    389   {0x04b4, {1, {0x04b5}}},
    390   {0x04b6, {1, {0x04b7}}},
    391   {0x04b8, {1, {0x04b9}}},
    392   {0x04ba, {1, {0x04bb}}},
    393   {0x04bc, {1, {0x04bd}}},
    394   {0x04be, {1, {0x04bf}}},
    395   {0x04c0, {1, {0x04cf}}},
    396   {0x04c1, {1, {0x04c2}}},
    397   {0x04c3, {1, {0x04c4}}},
    398   {0x04c5, {1, {0x04c6}}},
    399   {0x04c7, {1, {0x04c8}}},
    400   {0x04c9, {1, {0x04ca}}},
    401   {0x04cb, {1, {0x04cc}}},
    402   {0x04cd, {1, {0x04ce}}},
    403   {0x04d0, {1, {0x04d1}}},
    404   {0x04d2, {1, {0x04d3}}},
    405   {0x04d4, {1, {0x04d5}}},
    406   {0x04d6, {1, {0x04d7}}},
    407   {0x04d8, {1, {0x04d9}}},
    408   {0x04da, {1, {0x04db}}},
    409   {0x04dc, {1, {0x04dd}}},
    410   {0x04de, {1, {0x04df}}},
    411   {0x04e0, {1, {0x04e1}}},
    412   {0x04e2, {1, {0x04e3}}},
    413   {0x04e4, {1, {0x04e5}}},
    414   {0x04e6, {1, {0x04e7}}},
    415   {0x04e8, {1, {0x04e9}}},
    416   {0x04ea, {1, {0x04eb}}},
    417   {0x04ec, {1, {0x04ed}}},
    418   {0x04ee, {1, {0x04ef}}},
    419   {0x04f0, {1, {0x04f1}}},
    420   {0x04f2, {1, {0x04f3}}},
    421   {0x04f4, {1, {0x04f5}}},
    422   {0x04f6, {1, {0x04f7}}},
    423   {0x04f8, {1, {0x04f9}}},
    424   {0x04fa, {1, {0x04fb}}},
    425   {0x04fc, {1, {0x04fd}}},
    426   {0x04fe, {1, {0x04ff}}},
    427   {0x0500, {1, {0x0501}}},
    428   {0x0502, {1, {0x0503}}},
    429   {0x0504, {1, {0x0505}}},
    430   {0x0506, {1, {0x0507}}},
    431   {0x0508, {1, {0x0509}}},
    432   {0x050a, {1, {0x050b}}},
    433   {0x050c, {1, {0x050d}}},
    434   {0x050e, {1, {0x050f}}},
    435   {0x0510, {1, {0x0511}}},
    436   {0x0512, {1, {0x0513}}},
    437   {0x0514, {1, {0x0515}}},
    438   {0x0516, {1, {0x0517}}},
    439   {0x0518, {1, {0x0519}}},
    440   {0x051a, {1, {0x051b}}},
    441   {0x051c, {1, {0x051d}}},
    442   {0x051e, {1, {0x051f}}},
    443   {0x0520, {1, {0x0521}}},
    444   {0x0522, {1, {0x0523}}},
    445   {0x0524, {1, {0x0525}}},
    446   {0x0526, {1, {0x0527}}},
    447   {0x0528, {1, {0x0529}}},
    448   {0x052a, {1, {0x052b}}},
    449   {0x052c, {1, {0x052d}}},
    450   {0x052e, {1, {0x052f}}},
    451   {0x0531, {1, {0x0561}}},
    452   {0x0532, {1, {0x0562}}},
    453   {0x0533, {1, {0x0563}}},
    454   {0x0534, {1, {0x0564}}},
    455   {0x0535, {1, {0x0565}}},
    456   {0x0536, {1, {0x0566}}},
    457   {0x0537, {1, {0x0567}}},
    458   {0x0538, {1, {0x0568}}},
    459   {0x0539, {1, {0x0569}}},
    460   {0x053a, {1, {0x056a}}},
    461   {0x053b, {1, {0x056b}}},
    462   {0x053c, {1, {0x056c}}},
    463   {0x053d, {1, {0x056d}}},
    464   {0x053e, {1, {0x056e}}},
    465   {0x053f, {1, {0x056f}}},
    466   {0x0540, {1, {0x0570}}},
    467   {0x0541, {1, {0x0571}}},
    468   {0x0542, {1, {0x0572}}},
    469   {0x0543, {1, {0x0573}}},
    470   {0x0544, {1, {0x0574}}},
    471   {0x0545, {1, {0x0575}}},
    472   {0x0546, {1, {0x0576}}},
    473   {0x0547, {1, {0x0577}}},
    474   {0x0548, {1, {0x0578}}},
    475   {0x0549, {1, {0x0579}}},
    476   {0x054a, {1, {0x057a}}},
    477   {0x054b, {1, {0x057b}}},
    478   {0x054c, {1, {0x057c}}},
    479   {0x054d, {1, {0x057d}}},
    480   {0x054e, {1, {0x057e}}},
    481   {0x054f, {1, {0x057f}}},
    482   {0x0550, {1, {0x0580}}},
    483   {0x0551, {1, {0x0581}}},
    484   {0x0552, {1, {0x0582}}},
    485   {0x0553, {1, {0x0583}}},
    486   {0x0554, {1, {0x0584}}},
    487   {0x0555, {1, {0x0585}}},
    488   {0x0556, {1, {0x0586}}},
    489   {0x0587, {2, {0x0565, 0x0582}}},
    490   {0x10a0, {1, {0x2d00}}},
    491   {0x10a1, {1, {0x2d01}}},
    492   {0x10a2, {1, {0x2d02}}},
    493   {0x10a3, {1, {0x2d03}}},
    494   {0x10a4, {1, {0x2d04}}},
    495   {0x10a5, {1, {0x2d05}}},
    496   {0x10a6, {1, {0x2d06}}},
    497   {0x10a7, {1, {0x2d07}}},
    498   {0x10a8, {1, {0x2d08}}},
    499   {0x10a9, {1, {0x2d09}}},
    500   {0x10aa, {1, {0x2d0a}}},
    501   {0x10ab, {1, {0x2d0b}}},
    502   {0x10ac, {1, {0x2d0c}}},
    503   {0x10ad, {1, {0x2d0d}}},
    504   {0x10ae, {1, {0x2d0e}}},
    505   {0x10af, {1, {0x2d0f}}},
    506   {0x10b0, {1, {0x2d10}}},
    507   {0x10b1, {1, {0x2d11}}},
    508   {0x10b2, {1, {0x2d12}}},
    509   {0x10b3, {1, {0x2d13}}},
    510   {0x10b4, {1, {0x2d14}}},
    511   {0x10b5, {1, {0x2d15}}},
    512   {0x10b6, {1, {0x2d16}}},
    513   {0x10b7, {1, {0x2d17}}},
    514   {0x10b8, {1, {0x2d18}}},
    515   {0x10b9, {1, {0x2d19}}},
    516   {0x10ba, {1, {0x2d1a}}},
    517   {0x10bb, {1, {0x2d1b}}},
    518   {0x10bc, {1, {0x2d1c}}},
    519   {0x10bd, {1, {0x2d1d}}},
    520   {0x10be, {1, {0x2d1e}}},
    521   {0x10bf, {1, {0x2d1f}}},
    522   {0x10c0, {1, {0x2d20}}},
    523   {0x10c1, {1, {0x2d21}}},
    524   {0x10c2, {1, {0x2d22}}},
    525   {0x10c3, {1, {0x2d23}}},
    526   {0x10c4, {1, {0x2d24}}},
    527   {0x10c5, {1, {0x2d25}}},
    528   {0x10c7, {1, {0x2d27}}},
    529   {0x10cd, {1, {0x2d2d}}},
    530   {0x1e00, {1, {0x1e01}}},
    531   {0x1e02, {1, {0x1e03}}},
    532   {0x1e04, {1, {0x1e05}}},
    533   {0x1e06, {1, {0x1e07}}},
    534   {0x1e08, {1, {0x1e09}}},
    535   {0x1e0a, {1, {0x1e0b}}},
    536   {0x1e0c, {1, {0x1e0d}}},
    537   {0x1e0e, {1, {0x1e0f}}},
    538   {0x1e10, {1, {0x1e11}}},
    539   {0x1e12, {1, {0x1e13}}},
    540   {0x1e14, {1, {0x1e15}}},
    541   {0x1e16, {1, {0x1e17}}},
    542   {0x1e18, {1, {0x1e19}}},
    543   {0x1e1a, {1, {0x1e1b}}},
    544   {0x1e1c, {1, {0x1e1d}}},
    545   {0x1e1e, {1, {0x1e1f}}},
    546   {0x1e20, {1, {0x1e21}}},
    547   {0x1e22, {1, {0x1e23}}},
    548   {0x1e24, {1, {0x1e25}}},
    549   {0x1e26, {1, {0x1e27}}},
    550   {0x1e28, {1, {0x1e29}}},
    551   {0x1e2a, {1, {0x1e2b}}},
    552   {0x1e2c, {1, {0x1e2d}}},
    553   {0x1e2e, {1, {0x1e2f}}},
    554   {0x1e30, {1, {0x1e31}}},
    555   {0x1e32, {1, {0x1e33}}},
    556   {0x1e34, {1, {0x1e35}}},
    557   {0x1e36, {1, {0x1e37}}},
    558   {0x1e38, {1, {0x1e39}}},
    559   {0x1e3a, {1, {0x1e3b}}},
    560   {0x1e3c, {1, {0x1e3d}}},
    561   {0x1e3e, {1, {0x1e3f}}},
    562   {0x1e40, {1, {0x1e41}}},
    563   {0x1e42, {1, {0x1e43}}},
    564   {0x1e44, {1, {0x1e45}}},
    565   {0x1e46, {1, {0x1e47}}},
    566   {0x1e48, {1, {0x1e49}}},
    567   {0x1e4a, {1, {0x1e4b}}},
    568   {0x1e4c, {1, {0x1e4d}}},
    569   {0x1e4e, {1, {0x1e4f}}},
    570   {0x1e50, {1, {0x1e51}}},
    571   {0x1e52, {1, {0x1e53}}},
    572   {0x1e54, {1, {0x1e55}}},
    573   {0x1e56, {1, {0x1e57}}},
    574   {0x1e58, {1, {0x1e59}}},
    575   {0x1e5a, {1, {0x1e5b}}},
    576   {0x1e5c, {1, {0x1e5d}}},
    577   {0x1e5e, {1, {0x1e5f}}},
    578   {0x1e60, {1, {0x1e61}}},
    579   {0x1e62, {1, {0x1e63}}},
    580   {0x1e64, {1, {0x1e65}}},
    581   {0x1e66, {1, {0x1e67}}},
    582   {0x1e68, {1, {0x1e69}}},
    583   {0x1e6a, {1, {0x1e6b}}},
    584   {0x1e6c, {1, {0x1e6d}}},
    585   {0x1e6e, {1, {0x1e6f}}},
    586   {0x1e70, {1, {0x1e71}}},
    587   {0x1e72, {1, {0x1e73}}},
    588   {0x1e74, {1, {0x1e75}}},
    589   {0x1e76, {1, {0x1e77}}},
    590   {0x1e78, {1, {0x1e79}}},
    591   {0x1e7a, {1, {0x1e7b}}},
    592   {0x1e7c, {1, {0x1e7d}}},
    593   {0x1e7e, {1, {0x1e7f}}},
    594   {0x1e80, {1, {0x1e81}}},
    595   {0x1e82, {1, {0x1e83}}},
    596   {0x1e84, {1, {0x1e85}}},
    597   {0x1e86, {1, {0x1e87}}},
    598   {0x1e88, {1, {0x1e89}}},
    599   {0x1e8a, {1, {0x1e8b}}},
    600   {0x1e8c, {1, {0x1e8d}}},
    601   {0x1e8e, {1, {0x1e8f}}},
    602   {0x1e90, {1, {0x1e91}}},
    603   {0x1e92, {1, {0x1e93}}},
    604   {0x1e94, {1, {0x1e95}}},
    605   {0x1e96, {2, {0x0068, 0x0331}}},
    606   {0x1e97, {2, {0x0074, 0x0308}}},
    607   {0x1e98, {2, {0x0077, 0x030a}}},
    608   {0x1e99, {2, {0x0079, 0x030a}}},
    609   {0x1e9a, {2, {0x0061, 0x02be}}},
    610   {0x1e9b, {1, {0x1e61}}},
    611   {0x1e9e, {2, {0x0073, 0x0073}}},
    612   {0x1ea0, {1, {0x1ea1}}},
    613   {0x1ea2, {1, {0x1ea3}}},
    614   {0x1ea4, {1, {0x1ea5}}},
    615   {0x1ea6, {1, {0x1ea7}}},
    616   {0x1ea8, {1, {0x1ea9}}},
    617   {0x1eaa, {1, {0x1eab}}},
    618   {0x1eac, {1, {0x1ead}}},
    619   {0x1eae, {1, {0x1eaf}}},
    620   {0x1eb0, {1, {0x1eb1}}},
    621   {0x1eb2, {1, {0x1eb3}}},
    622   {0x1eb4, {1, {0x1eb5}}},
    623   {0x1eb6, {1, {0x1eb7}}},
    624   {0x1eb8, {1, {0x1eb9}}},
    625   {0x1eba, {1, {0x1ebb}}},
    626   {0x1ebc, {1, {0x1ebd}}},
    627   {0x1ebe, {1, {0x1ebf}}},
    628   {0x1ec0, {1, {0x1ec1}}},
    629   {0x1ec2, {1, {0x1ec3}}},
    630   {0x1ec4, {1, {0x1ec5}}},
    631   {0x1ec6, {1, {0x1ec7}}},
    632   {0x1ec8, {1, {0x1ec9}}},
    633   {0x1eca, {1, {0x1ecb}}},
    634   {0x1ecc, {1, {0x1ecd}}},
    635   {0x1ece, {1, {0x1ecf}}},
    636   {0x1ed0, {1, {0x1ed1}}},
    637   {0x1ed2, {1, {0x1ed3}}},
    638   {0x1ed4, {1, {0x1ed5}}},
    639   {0x1ed6, {1, {0x1ed7}}},
    640   {0x1ed8, {1, {0x1ed9}}},
    641   {0x1eda, {1, {0x1edb}}},
    642   {0x1edc, {1, {0x1edd}}},
    643   {0x1ede, {1, {0x1edf}}},
    644   {0x1ee0, {1, {0x1ee1}}},
    645   {0x1ee2, {1, {0x1ee3}}},
    646   {0x1ee4, {1, {0x1ee5}}},
    647   {0x1ee6, {1, {0x1ee7}}},
    648   {0x1ee8, {1, {0x1ee9}}},
    649   {0x1eea, {1, {0x1eeb}}},
    650   {0x1eec, {1, {0x1eed}}},
    651   {0x1eee, {1, {0x1eef}}},
    652   {0x1ef0, {1, {0x1ef1}}},
    653   {0x1ef2, {1, {0x1ef3}}},
    654   {0x1ef4, {1, {0x1ef5}}},
    655   {0x1ef6, {1, {0x1ef7}}},
    656   {0x1ef8, {1, {0x1ef9}}},
    657   {0x1efa, {1, {0x1efb}}},
    658   {0x1efc, {1, {0x1efd}}},
    659   {0x1efe, {1, {0x1eff}}},
    660   {0x1f08, {1, {0x1f00}}},
    661   {0x1f09, {1, {0x1f01}}},
    662   {0x1f0a, {1, {0x1f02}}},
    663   {0x1f0b, {1, {0x1f03}}},
    664   {0x1f0c, {1, {0x1f04}}},
    665   {0x1f0d, {1, {0x1f05}}},
    666   {0x1f0e, {1, {0x1f06}}},
    667   {0x1f0f, {1, {0x1f07}}},
    668   {0x1f18, {1, {0x1f10}}},
    669   {0x1f19, {1, {0x1f11}}},
    670   {0x1f1a, {1, {0x1f12}}},
    671   {0x1f1b, {1, {0x1f13}}},
    672   {0x1f1c, {1, {0x1f14}}},
    673   {0x1f1d, {1, {0x1f15}}},
    674   {0x1f28, {1, {0x1f20}}},
    675   {0x1f29, {1, {0x1f21}}},
    676   {0x1f2a, {1, {0x1f22}}},
    677   {0x1f2b, {1, {0x1f23}}},
    678   {0x1f2c, {1, {0x1f24}}},
    679   {0x1f2d, {1, {0x1f25}}},
    680   {0x1f2e, {1, {0x1f26}}},
    681   {0x1f2f, {1, {0x1f27}}},
    682   {0x1f38, {1, {0x1f30}}},
    683   {0x1f39, {1, {0x1f31}}},
    684   {0x1f3a, {1, {0x1f32}}},
    685   {0x1f3b, {1, {0x1f33}}},
    686   {0x1f3c, {1, {0x1f34}}},
    687   {0x1f3d, {1, {0x1f35}}},
    688   {0x1f3e, {1, {0x1f36}}},
    689   {0x1f3f, {1, {0x1f37}}},
    690   {0x1f48, {1, {0x1f40}}},
    691   {0x1f49, {1, {0x1f41}}},
    692   {0x1f4a, {1, {0x1f42}}},
    693   {0x1f4b, {1, {0x1f43}}},
    694   {0x1f4c, {1, {0x1f44}}},
    695   {0x1f4d, {1, {0x1f45}}},
    696   {0x1f50, {2, {0x03c5, 0x0313}}},
    697   {0x1f52, {3, {0x03c5, 0x0313, 0x0300}}},
    698   {0x1f54, {3, {0x03c5, 0x0313, 0x0301}}},
    699   {0x1f56, {3, {0x03c5, 0x0313, 0x0342}}},
    700   {0x1f59, {1, {0x1f51}}},
    701   {0x1f5b, {1, {0x1f53}}},
    702   {0x1f5d, {1, {0x1f55}}},
    703   {0x1f5f, {1, {0x1f57}}},
    704   {0x1f68, {1, {0x1f60}}},
    705   {0x1f69, {1, {0x1f61}}},
    706   {0x1f6a, {1, {0x1f62}}},
    707   {0x1f6b, {1, {0x1f63}}},
    708   {0x1f6c, {1, {0x1f64}}},
    709   {0x1f6d, {1, {0x1f65}}},
    710   {0x1f6e, {1, {0x1f66}}},
    711   {0x1f6f, {1, {0x1f67}}},
    712   {0x1f80, {2, {0x1f00, 0x03b9}}},
    713   {0x1f81, {2, {0x1f01, 0x03b9}}},
    714   {0x1f82, {2, {0x1f02, 0x03b9}}},
    715   {0x1f83, {2, {0x1f03, 0x03b9}}},
    716   {0x1f84, {2, {0x1f04, 0x03b9}}},
    717   {0x1f85, {2, {0x1f05, 0x03b9}}},
    718   {0x1f86, {2, {0x1f06, 0x03b9}}},
    719   {0x1f87, {2, {0x1f07, 0x03b9}}},
    720   {0x1f88, {2, {0x1f00, 0x03b9}}},
    721   {0x1f89, {2, {0x1f01, 0x03b9}}},
    722   {0x1f8a, {2, {0x1f02, 0x03b9}}},
    723   {0x1f8b, {2, {0x1f03, 0x03b9}}},
    724   {0x1f8c, {2, {0x1f04, 0x03b9}}},
    725   {0x1f8d, {2, {0x1f05, 0x03b9}}},
    726   {0x1f8e, {2, {0x1f06, 0x03b9}}},
    727   {0x1f8f, {2, {0x1f07, 0x03b9}}},
    728   {0x1f90, {2, {0x1f20, 0x03b9}}},
    729   {0x1f91, {2, {0x1f21, 0x03b9}}},
    730   {0x1f92, {2, {0x1f22, 0x03b9}}},
    731   {0x1f93, {2, {0x1f23, 0x03b9}}},
    732   {0x1f94, {2, {0x1f24, 0x03b9}}},
    733   {0x1f95, {2, {0x1f25, 0x03b9}}},
    734   {0x1f96, {2, {0x1f26, 0x03b9}}},
    735   {0x1f97, {2, {0x1f27, 0x03b9}}},
    736   {0x1f98, {2, {0x1f20, 0x03b9}}},
    737   {0x1f99, {2, {0x1f21, 0x03b9}}},
    738   {0x1f9a, {2, {0x1f22, 0x03b9}}},
    739   {0x1f9b, {2, {0x1f23, 0x03b9}}},
    740   {0x1f9c, {2, {0x1f24, 0x03b9}}},
    741   {0x1f9d, {2, {0x1f25, 0x03b9}}},
    742   {0x1f9e, {2, {0x1f26, 0x03b9}}},
    743   {0x1f9f, {2, {0x1f27, 0x03b9}}},
    744   {0x1fa0, {2, {0x1f60, 0x03b9}}},
    745   {0x1fa1, {2, {0x1f61, 0x03b9}}},
    746   {0x1fa2, {2, {0x1f62, 0x03b9}}},
    747   {0x1fa3, {2, {0x1f63, 0x03b9}}},
    748   {0x1fa4, {2, {0x1f64, 0x03b9}}},
    749   {0x1fa5, {2, {0x1f65, 0x03b9}}},
    750   {0x1fa6, {2, {0x1f66, 0x03b9}}},
    751   {0x1fa7, {2, {0x1f67, 0x03b9}}},
    752   {0x1fa8, {2, {0x1f60, 0x03b9}}},
    753   {0x1fa9, {2, {0x1f61, 0x03b9}}},
    754   {0x1faa, {2, {0x1f62, 0x03b9}}},
    755   {0x1fab, {2, {0x1f63, 0x03b9}}},
    756   {0x1fac, {2, {0x1f64, 0x03b9}}},
    757   {0x1fad, {2, {0x1f65, 0x03b9}}},
    758   {0x1fae, {2, {0x1f66, 0x03b9}}},
    759   {0x1faf, {2, {0x1f67, 0x03b9}}},
    760   {0x1fb2, {2, {0x1f70, 0x03b9}}},
    761   {0x1fb3, {2, {0x03b1, 0x03b9}}},
    762   {0x1fb4, {2, {0x03ac, 0x03b9}}},
    763   {0x1fb6, {2, {0x03b1, 0x0342}}},
    764   {0x1fb7, {3, {0x03b1, 0x0342, 0x03b9}}},
    765   {0x1fb8, {1, {0x1fb0}}},
    766   {0x1fb9, {1, {0x1fb1}}},
    767   {0x1fba, {1, {0x1f70}}},
    768   {0x1fbb, {1, {0x1f71}}},
    769   {0x1fbc, {2, {0x03b1, 0x03b9}}},
    770   {0x1fbe, {1, {0x03b9}}},
    771   {0x1fc2, {2, {0x1f74, 0x03b9}}},
    772   {0x1fc3, {2, {0x03b7, 0x03b9}}},
    773   {0x1fc4, {2, {0x03ae, 0x03b9}}},
    774   {0x1fc6, {2, {0x03b7, 0x0342}}},
    775   {0x1fc7, {3, {0x03b7, 0x0342, 0x03b9}}},
    776   {0x1fc8, {1, {0x1f72}}},
    777   {0x1fc9, {1, {0x1f73}}},
    778   {0x1fca, {1, {0x1f74}}},
    779   {0x1fcb, {1, {0x1f75}}},
    780   {0x1fcc, {2, {0x03b7, 0x03b9}}},
    781   {0x1fd2, {3, {0x03b9, 0x0308, 0x0300}}},
    782   {0x1fd3, {3, {0x03b9, 0x0308, 0x0301}}},
    783   {0x1fd6, {2, {0x03b9, 0x0342}}},
    784   {0x1fd7, {3, {0x03b9, 0x0308, 0x0342}}},
    785   {0x1fd8, {1, {0x1fd0}}},
    786   {0x1fd9, {1, {0x1fd1}}},
    787   {0x1fda, {1, {0x1f76}}},
    788   {0x1fdb, {1, {0x1f77}}},
    789   {0x1fe2, {3, {0x03c5, 0x0308, 0x0300}}},
    790   {0x1fe3, {3, {0x03c5, 0x0308, 0x0301}}},
    791   {0x1fe4, {2, {0x03c1, 0x0313}}},
    792   {0x1fe6, {2, {0x03c5, 0x0342}}},
    793   {0x1fe7, {3, {0x03c5, 0x0308, 0x0342}}},
    794   {0x1fe8, {1, {0x1fe0}}},
    795   {0x1fe9, {1, {0x1fe1}}},
    796   {0x1fea, {1, {0x1f7a}}},
    797   {0x1feb, {1, {0x1f7b}}},
    798   {0x1fec, {1, {0x1fe5}}},
    799   {0x1ff2, {2, {0x1f7c, 0x03b9}}},
    800   {0x1ff3, {2, {0x03c9, 0x03b9}}},
    801   {0x1ff4, {2, {0x03ce, 0x03b9}}},
    802   {0x1ff6, {2, {0x03c9, 0x0342}}},
    803   {0x1ff7, {3, {0x03c9, 0x0342, 0x03b9}}},
    804   {0x1ff8, {1, {0x1f78}}},
    805   {0x1ff9, {1, {0x1f79}}},
    806   {0x1ffa, {1, {0x1f7c}}},
    807   {0x1ffb, {1, {0x1f7d}}},
    808   {0x1ffc, {2, {0x03c9, 0x03b9}}},
    809   {0x2126, {1, {0x03c9}}},
    810   {0x212a, {1, {0x006b}}},
    811   {0x212b, {1, {0x00e5}}},
    812   {0x2132, {1, {0x214e}}},
    813   {0x2160, {1, {0x2170}}},
    814   {0x2161, {1, {0x2171}}},
    815   {0x2162, {1, {0x2172}}},
    816   {0x2163, {1, {0x2173}}},
    817   {0x2164, {1, {0x2174}}},
    818   {0x2165, {1, {0x2175}}},
    819   {0x2166, {1, {0x2176}}},
    820   {0x2167, {1, {0x2177}}},
    821   {0x2168, {1, {0x2178}}},
    822   {0x2169, {1, {0x2179}}},
    823   {0x216a, {1, {0x217a}}},
    824   {0x216b, {1, {0x217b}}},
    825   {0x216c, {1, {0x217c}}},
    826   {0x216d, {1, {0x217d}}},
    827   {0x216e, {1, {0x217e}}},
    828   {0x216f, {1, {0x217f}}},
    829   {0x2183, {1, {0x2184}}},
    830   {0x24b6, {1, {0x24d0}}},
    831   {0x24b7, {1, {0x24d1}}},
    832   {0x24b8, {1, {0x24d2}}},
    833   {0x24b9, {1, {0x24d3}}},
    834   {0x24ba, {1, {0x24d4}}},
    835   {0x24bb, {1, {0x24d5}}},
    836   {0x24bc, {1, {0x24d6}}},
    837   {0x24bd, {1, {0x24d7}}},
    838   {0x24be, {1, {0x24d8}}},
    839   {0x24bf, {1, {0x24d9}}},
    840   {0x24c0, {1, {0x24da}}},
    841   {0x24c1, {1, {0x24db}}},
    842   {0x24c2, {1, {0x24dc}}},
    843   {0x24c3, {1, {0x24dd}}},
    844   {0x24c4, {1, {0x24de}}},
    845   {0x24c5, {1, {0x24df}}},
    846   {0x24c6, {1, {0x24e0}}},
    847   {0x24c7, {1, {0x24e1}}},
    848   {0x24c8, {1, {0x24e2}}},
    849   {0x24c9, {1, {0x24e3}}},
    850   {0x24ca, {1, {0x24e4}}},
    851   {0x24cb, {1, {0x24e5}}},
    852   {0x24cc, {1, {0x24e6}}},
    853   {0x24cd, {1, {0x24e7}}},
    854   {0x24ce, {1, {0x24e8}}},
    855   {0x24cf, {1, {0x24e9}}},
    856   {0x2c00, {1, {0x2c30}}},
    857   {0x2c01, {1, {0x2c31}}},
    858   {0x2c02, {1, {0x2c32}}},
    859   {0x2c03, {1, {0x2c33}}},
    860   {0x2c04, {1, {0x2c34}}},
    861   {0x2c05, {1, {0x2c35}}},
    862   {0x2c06, {1, {0x2c36}}},
    863   {0x2c07, {1, {0x2c37}}},
    864   {0x2c08, {1, {0x2c38}}},
    865   {0x2c09, {1, {0x2c39}}},
    866   {0x2c0a, {1, {0x2c3a}}},
    867   {0x2c0b, {1, {0x2c3b}}},
    868   {0x2c0c, {1, {0x2c3c}}},
    869   {0x2c0d, {1, {0x2c3d}}},
    870   {0x2c0e, {1, {0x2c3e}}},
    871   {0x2c0f, {1, {0x2c3f}}},
    872   {0x2c10, {1, {0x2c40}}},
    873   {0x2c11, {1, {0x2c41}}},
    874   {0x2c12, {1, {0x2c42}}},
    875   {0x2c13, {1, {0x2c43}}},
    876   {0x2c14, {1, {0x2c44}}},
    877   {0x2c15, {1, {0x2c45}}},
    878   {0x2c16, {1, {0x2c46}}},
    879   {0x2c17, {1, {0x2c47}}},
    880   {0x2c18, {1, {0x2c48}}},
    881   {0x2c19, {1, {0x2c49}}},
    882   {0x2c1a, {1, {0x2c4a}}},
    883   {0x2c1b, {1, {0x2c4b}}},
    884   {0x2c1c, {1, {0x2c4c}}},
    885   {0x2c1d, {1, {0x2c4d}}},
    886   {0x2c1e, {1, {0x2c4e}}},
    887   {0x2c1f, {1, {0x2c4f}}},
    888   {0x2c20, {1, {0x2c50}}},
    889   {0x2c21, {1, {0x2c51}}},
    890   {0x2c22, {1, {0x2c52}}},
    891   {0x2c23, {1, {0x2c53}}},
    892   {0x2c24, {1, {0x2c54}}},
    893   {0x2c25, {1, {0x2c55}}},
    894   {0x2c26, {1, {0x2c56}}},
    895   {0x2c27, {1, {0x2c57}}},
    896   {0x2c28, {1, {0x2c58}}},
    897   {0x2c29, {1, {0x2c59}}},
    898   {0x2c2a, {1, {0x2c5a}}},
    899   {0x2c2b, {1, {0x2c5b}}},
    900   {0x2c2c, {1, {0x2c5c}}},
    901   {0x2c2d, {1, {0x2c5d}}},
    902   {0x2c2e, {1, {0x2c5e}}},
    903   {0x2c60, {1, {0x2c61}}},
    904   {0x2c62, {1, {0x026b}}},
    905   {0x2c63, {1, {0x1d7d}}},
    906   {0x2c64, {1, {0x027d}}},
    907   {0x2c67, {1, {0x2c68}}},
    908   {0x2c69, {1, {0x2c6a}}},
    909   {0x2c6b, {1, {0x2c6c}}},
    910   {0x2c6d, {1, {0x0251}}},
    911   {0x2c6e, {1, {0x0271}}},
    912   {0x2c6f, {1, {0x0250}}},
    913   {0x2c70, {1, {0x0252}}},
    914   {0x2c72, {1, {0x2c73}}},
    915   {0x2c75, {1, {0x2c76}}},
    916   {0x2c7e, {1, {0x023f}}},
    917   {0x2c7f, {1, {0x0240}}},
    918   {0x2c80, {1, {0x2c81}}},
    919   {0x2c82, {1, {0x2c83}}},
    920   {0x2c84, {1, {0x2c85}}},
    921   {0x2c86, {1, {0x2c87}}},
    922   {0x2c88, {1, {0x2c89}}},
    923   {0x2c8a, {1, {0x2c8b}}},
    924   {0x2c8c, {1, {0x2c8d}}},
    925   {0x2c8e, {1, {0x2c8f}}},
    926   {0x2c90, {1, {0x2c91}}},
    927   {0x2c92, {1, {0x2c93}}},
    928   {0x2c94, {1, {0x2c95}}},
    929   {0x2c96, {1, {0x2c97}}},
    930   {0x2c98, {1, {0x2c99}}},
    931   {0x2c9a, {1, {0x2c9b}}},
    932   {0x2c9c, {1, {0x2c9d}}},
    933   {0x2c9e, {1, {0x2c9f}}},
    934   {0x2ca0, {1, {0x2ca1}}},
    935   {0x2ca2, {1, {0x2ca3}}},
    936   {0x2ca4, {1, {0x2ca5}}},
    937   {0x2ca6, {1, {0x2ca7}}},
    938   {0x2ca8, {1, {0x2ca9}}},
    939   {0x2caa, {1, {0x2cab}}},
    940   {0x2cac, {1, {0x2cad}}},
    941   {0x2cae, {1, {0x2caf}}},
    942   {0x2cb0, {1, {0x2cb1}}},
    943   {0x2cb2, {1, {0x2cb3}}},
    944   {0x2cb4, {1, {0x2cb5}}},
    945   {0x2cb6, {1, {0x2cb7}}},
    946   {0x2cb8, {1, {0x2cb9}}},
    947   {0x2cba, {1, {0x2cbb}}},
    948   {0x2cbc, {1, {0x2cbd}}},
    949   {0x2cbe, {1, {0x2cbf}}},
    950   {0x2cc0, {1, {0x2cc1}}},
    951   {0x2cc2, {1, {0x2cc3}}},
    952   {0x2cc4, {1, {0x2cc5}}},
    953   {0x2cc6, {1, {0x2cc7}}},
    954   {0x2cc8, {1, {0x2cc9}}},
    955   {0x2cca, {1, {0x2ccb}}},
    956   {0x2ccc, {1, {0x2ccd}}},
    957   {0x2cce, {1, {0x2ccf}}},
    958   {0x2cd0, {1, {0x2cd1}}},
    959   {0x2cd2, {1, {0x2cd3}}},
    960   {0x2cd4, {1, {0x2cd5}}},
    961   {0x2cd6, {1, {0x2cd7}}},
    962   {0x2cd8, {1, {0x2cd9}}},
    963   {0x2cda, {1, {0x2cdb}}},
    964   {0x2cdc, {1, {0x2cdd}}},
    965   {0x2cde, {1, {0x2cdf}}},
    966   {0x2ce0, {1, {0x2ce1}}},
    967   {0x2ce2, {1, {0x2ce3}}},
    968   {0x2ceb, {1, {0x2cec}}},
    969   {0x2ced, {1, {0x2cee}}},
    970   {0x2cf2, {1, {0x2cf3}}},
    971   {0xa640, {1, {0xa641}}},
    972   {0xa642, {1, {0xa643}}},
    973   {0xa644, {1, {0xa645}}},
    974   {0xa646, {1, {0xa647}}},
    975   {0xa648, {1, {0xa649}}},
    976   {0xa64a, {1, {0xa64b}}},
    977   {0xa64c, {1, {0xa64d}}},
    978   {0xa64e, {1, {0xa64f}}},
    979   {0xa650, {1, {0xa651}}},
    980   {0xa652, {1, {0xa653}}},
    981   {0xa654, {1, {0xa655}}},
    982   {0xa656, {1, {0xa657}}},
    983   {0xa658, {1, {0xa659}}},
    984   {0xa65a, {1, {0xa65b}}},
    985   {0xa65c, {1, {0xa65d}}},
    986   {0xa65e, {1, {0xa65f}}},
    987   {0xa660, {1, {0xa661}}},
    988   {0xa662, {1, {0xa663}}},
    989   {0xa664, {1, {0xa665}}},
    990   {0xa666, {1, {0xa667}}},
    991   {0xa668, {1, {0xa669}}},
    992   {0xa66a, {1, {0xa66b}}},
    993   {0xa66c, {1, {0xa66d}}},
    994   {0xa680, {1, {0xa681}}},
    995   {0xa682, {1, {0xa683}}},
    996   {0xa684, {1, {0xa685}}},
    997   {0xa686, {1, {0xa687}}},
    998   {0xa688, {1, {0xa689}}},
    999   {0xa68a, {1, {0xa68b}}},
    1000   {0xa68c, {1, {0xa68d}}},
    1001   {0xa68e, {1, {0xa68f}}},
    1002   {0xa690, {1, {0xa691}}},
    1003   {0xa692, {1, {0xa693}}},
    1004   {0xa694, {1, {0xa695}}},
    1005   {0xa696, {1, {0xa697}}},
    1006   {0xa698, {1, {0xa699}}},
    1007   {0xa69a, {1, {0xa69b}}},
    1008   {0xa722, {1, {0xa723}}},
    1009   {0xa724, {1, {0xa725}}},
    1010   {0xa726, {1, {0xa727}}},
    1011   {0xa728, {1, {0xa729}}},
    1012   {0xa72a, {1, {0xa72b}}},
    1013   {0xa72c, {1, {0xa72d}}},
    1014   {0xa72e, {1, {0xa72f}}},
    1015   {0xa732, {1, {0xa733}}},
    1016   {0xa734, {1, {0xa735}}},
    1017   {0xa736, {1, {0xa737}}},
    1018   {0xa738, {1, {0xa739}}},
    1019   {0xa73a, {1, {0xa73b}}},
    1020   {0xa73c, {1, {0xa73d}}},
    1021   {0xa73e, {1, {0xa73f}}},
    1022   {0xa740, {1, {0xa741}}},
    1023   {0xa742, {1, {0xa743}}},
    1024   {0xa744, {1, {0xa745}}},
    1025   {0xa746, {1, {0xa747}}},
    1026   {0xa748, {1, {0xa749}}},
    1027   {0xa74a, {1, {0xa74b}}},
    1028   {0xa74c, {1, {0xa74d}}},
    1029   {0xa74e, {1, {0xa74f}}},
    1030   {0xa750, {1, {0xa751}}},
    1031   {0xa752, {1, {0xa753}}},
    1032   {0xa754, {1, {0xa755}}},
    1033   {0xa756, {1, {0xa757}}},
    1034   {0xa758, {1, {0xa759}}},
    1035   {0xa75a, {1, {0xa75b}}},
    1036   {0xa75c, {1, {0xa75d}}},
    1037   {0xa75e, {1, {0xa75f}}},
    1038   {0xa760, {1, {0xa761}}},
    1039   {0xa762, {1, {0xa763}}},
    1040   {0xa764, {1, {0xa765}}},
    1041   {0xa766, {1, {0xa767}}},
    1042   {0xa768, {1, {0xa769}}},
    1043   {0xa76a, {1, {0xa76b}}},
    1044   {0xa76c, {1, {0xa76d}}},
    1045   {0xa76e, {1, {0xa76f}}},
    1046   {0xa779, {1, {0xa77a}}},
    1047   {0xa77b, {1, {0xa77c}}},
    1048   {0xa77d, {1, {0x1d79}}},
    1049   {0xa77e, {1, {0xa77f}}},
    1050   {0xa780, {1, {0xa781}}},
    1051   {0xa782, {1, {0xa783}}},
    1052   {0xa784, {1, {0xa785}}},
    1053   {0xa786, {1, {0xa787}}},
    1054   {0xa78b, {1, {0xa78c}}},
    1055   {0xa78d, {1, {0x0265}}},
    1056   {0xa790, {1, {0xa791}}},
    1057   {0xa792, {1, {0xa793}}},
    1058   {0xa796, {1, {0xa797}}},
    1059   {0xa798, {1, {0xa799}}},
    1060   {0xa79a, {1, {0xa79b}}},
    1061   {0xa79c, {1, {0xa79d}}},
    1062   {0xa79e, {1, {0xa79f}}},
    1063   {0xa7a0, {1, {0xa7a1}}},
    1064   {0xa7a2, {1, {0xa7a3}}},
    1065   {0xa7a4, {1, {0xa7a5}}},
    1066   {0xa7a6, {1, {0xa7a7}}},
    1067   {0xa7a8, {1, {0xa7a9}}},
    1068   {0xa7aa, {1, {0x0266}}},
    1069   {0xa7ab, {1, {0x025c}}},
    1070   {0xa7ac, {1, {0x0261}}},
    1071   {0xa7ad, {1, {0x026c}}},
    1072   {0xa7b0, {1, {0x029e}}},
    1073   {0xa7b1, {1, {0x0287}}},
    1074   {0xfb00, {2, {0x0066, 0x0066}}},
    1075   {0xfb01, {2, {0x0066, 0x0069}}},
    1076   {0xfb02, {2, {0x0066, 0x006c}}},
    1077   {0xfb03, {3, {0x0066, 0x0066, 0x0069}}},
    1078   {0xfb04, {3, {0x0066, 0x0066, 0x006c}}},
    1079   {0xfb05, {2, {0x0073, 0x0074}}},
    1080   {0xfb06, {2, {0x0073, 0x0074}}},
    1081   {0xfb13, {2, {0x0574, 0x0576}}},
    1082   {0xfb14, {2, {0x0574, 0x0565}}},
    1083   {0xfb15, {2, {0x0574, 0x056b}}},
    1084   {0xfb16, {2, {0x057e, 0x0576}}},
    1085   {0xfb17, {2, {0x0574, 0x056d}}},
    1086   {0xff21, {1, {0xff41}}},
    1087   {0xff22, {1, {0xff42}}},
    1088   {0xff23, {1, {0xff43}}},
    1089   {0xff24, {1, {0xff44}}},
    1090   {0xff25, {1, {0xff45}}},
    1091   {0xff26, {1, {0xff46}}},
    1092   {0xff27, {1, {0xff47}}},
    1093   {0xff28, {1, {0xff48}}},
    1094   {0xff29, {1, {0xff49}}},
    1095   {0xff2a, {1, {0xff4a}}},
    1096   {0xff2b, {1, {0xff4b}}},
    1097   {0xff2c, {1, {0xff4c}}},
    1098   {0xff2d, {1, {0xff4d}}},
    1099   {0xff2e, {1, {0xff4e}}},
    1100   {0xff2f, {1, {0xff4f}}},
    1101   {0xff30, {1, {0xff50}}},
    1102   {0xff31, {1, {0xff51}}},
    1103   {0xff32, {1, {0xff52}}},
    1104   {0xff33, {1, {0xff53}}},
    1105   {0xff34, {1, {0xff54}}},
    1106   {0xff35, {1, {0xff55}}},
    1107   {0xff36, {1, {0xff56}}},
    1108   {0xff37, {1, {0xff57}}},
    1109   {0xff38, {1, {0xff58}}},
    1110   {0xff39, {1, {0xff59}}},
    1111   {0xff3a, {1, {0xff5a}}},
    1112   {0x10400, {1, {0x10428}}},
    1113   {0x10401, {1, {0x10429}}},
    1114   {0x10402, {1, {0x1042a}}},
    1115   {0x10403, {1, {0x1042b}}},
    1116   {0x10404, {1, {0x1042c}}},
    1117   {0x10405, {1, {0x1042d}}},
    1118   {0x10406, {1, {0x1042e}}},
    1119   {0x10407, {1, {0x1042f}}},
    1120   {0x10408, {1, {0x10430}}},
    1121   {0x10409, {1, {0x10431}}},
    1122   {0x1040a, {1, {0x10432}}},
    1123   {0x1040b, {1, {0x10433}}},
    1124   {0x1040c, {1, {0x10434}}},
    1125   {0x1040d, {1, {0x10435}}},
    1126   {0x1040e, {1, {0x10436}}},
    1127   {0x1040f, {1, {0x10437}}},
    1128   {0x10410, {1, {0x10438}}},
    1129   {0x10411, {1, {0x10439}}},
    1130   {0x10412, {1, {0x1043a}}},
    1131   {0x10413, {1, {0x1043b}}},
    1132   {0x10414, {1, {0x1043c}}},
    1133   {0x10415, {1, {0x1043d}}},
    1134   {0x10416, {1, {0x1043e}}},
    1135   {0x10417, {1, {0x1043f}}},
    1136   {0x10418, {1, {0x10440}}},
    1137   {0x10419, {1, {0x10441}}},
    1138   {0x1041a, {1, {0x10442}}},
    1139   {0x1041b, {1, {0x10443}}},
    1140   {0x1041c, {1, {0x10444}}},
    1141   {0x1041d, {1, {0x10445}}},
    1142   {0x1041e, {1, {0x10446}}},
    1143   {0x1041f, {1, {0x10447}}},
    1144   {0x10420, {1, {0x10448}}},
    1145   {0x10421, {1, {0x10449}}},
    1146   {0x10422, {1, {0x1044a}}},
    1147   {0x10423, {1, {0x1044b}}},
    1148   {0x10424, {1, {0x1044c}}},
    1149   {0x10425, {1, {0x1044d}}},
    1150   {0x10426, {1, {0x1044e}}},
    1151   {0x10427, {1, {0x1044f}}},
    1152   {0x118a0, {1, {0x118c0}}},
    1153   {0x118a1, {1, {0x118c1}}},
    1154   {0x118a2, {1, {0x118c2}}},
    1155   {0x118a3, {1, {0x118c3}}},
    1156   {0x118a4, {1, {0x118c4}}},
    1157   {0x118a5, {1, {0x118c5}}},
    1158   {0x118a6, {1, {0x118c6}}},
    1159   {0x118a7, {1, {0x118c7}}},
    1160   {0x118a8, {1, {0x118c8}}},
    1161   {0x118a9, {1, {0x118c9}}},
    1162   {0x118aa, {1, {0x118ca}}},
    1163   {0x118ab, {1, {0x118cb}}},
    1164   {0x118ac, {1, {0x118cc}}},
    1165   {0x118ad, {1, {0x118cd}}},
    1166   {0x118ae, {1, {0x118ce}}},
    1167   {0x118af, {1, {0x118cf}}},
    1168   {0x118b0, {1, {0x118d0}}},
    1169   {0x118b1, {1, {0x118d1}}},
    1170   {0x118b2, {1, {0x118d2}}},
    1171   {0x118b3, {1, {0x118d3}}},
    1172   {0x118b4, {1, {0x118d4}}},
    1173   {0x118b5, {1, {0x118d5}}},
    1174   {0x118b6, {1, {0x118d6}}},
    1175   {0x118b7, {1, {0x118d7}}},
    1176   {0x118b8, {1, {0x118d8}}},
    1177   {0x118b9, {1, {0x118d9}}},
    1178   {0x118ba, {1, {0x118da}}},
    1179   {0x118bb, {1, {0x118db}}},
    1180   {0x118bc, {1, {0x118dc}}},
    1181   {0x118bd, {1, {0x118dd}}},
    1182   {0x118be, {1, {0x118de}}},
    1183   {0x118bf, {1, {0x118df}}},
    1184 #define CaseFold_Locale (*(CaseFold_11_Type (*)[2])(CaseFold_11_Table+1178))
    1185   {0x0049, {1, {0x0069}}},
    1186   {0x0130, {2, {0x0069, 0x0307}}},
     17#define CaseFold (*(CaseFold_11_Type (*)[1399])(CaseFold_11_Table+0))
     18  {0x0041, {1|F|D, {0x0061}}},
     19  {0x0042, {1|F|D, {0x0062}}},
     20  {0x0043, {1|F|D, {0x0063}}},
     21  {0x0044, {1|F|D, {0x0064}}},
     22  {0x0045, {1|F|D, {0x0065}}},
     23  {0x0046, {1|F|D, {0x0066}}},
     24  {0x0047, {1|F|D, {0x0067}}},
     25  {0x0048, {1|F|D, {0x0068}}},
     26  {0x004a, {1|F|D, {0x006a}}},
     27  {0x004b, {1|F|D, {0x006b}}},
     28  {0x004c, {1|F|D, {0x006c}}},
     29  {0x004d, {1|F|D, {0x006d}}},
     30  {0x004e, {1|F|D, {0x006e}}},
     31  {0x004f, {1|F|D, {0x006f}}},
     32  {0x0050, {1|F|D, {0x0070}}},
     33  {0x0051, {1|F|D, {0x0071}}},
     34  {0x0052, {1|F|D, {0x0072}}},
     35  {0x0053, {1|F|D, {0x0073}}},
     36  {0x0054, {1|F|D, {0x0074}}},
     37  {0x0055, {1|F|D, {0x0075}}},
     38  {0x0056, {1|F|D, {0x0076}}},
     39  {0x0057, {1|F|D, {0x0077}}},
     40  {0x0058, {1|F|D, {0x0078}}},
     41  {0x0059, {1|F|D, {0x0079}}},
     42  {0x005a, {1|F|D, {0x007a}}},
     43  {0x00b5, {1|F|SU|I(0), {0x03bc}}},
     44  {0x00c0, {1|F|D, {0x00e0}}},
     45  {0x00c1, {1|F|D, {0x00e1}}},
     46  {0x00c2, {1|F|D, {0x00e2}}},
     47  {0x00c3, {1|F|D, {0x00e3}}},
     48  {0x00c4, {1|F|D, {0x00e4}}},
     49  {0x00c5, {1|F|D, {0x00e5}}},
     50  {0x00c6, {1|F|D, {0x00e6}}},
     51  {0x00c7, {1|F|D, {0x00e7}}},
     52  {0x00c8, {1|F|D, {0x00e8}}},
     53  {0x00c9, {1|F|D, {0x00e9}}},
     54  {0x00ca, {1|F|D, {0x00ea}}},
     55  {0x00cb, {1|F|D, {0x00eb}}},
     56  {0x00cc, {1|F|D, {0x00ec}}},
     57  {0x00cd, {1|F|D, {0x00ed}}},
     58  {0x00ce, {1|F|D, {0x00ee}}},
     59  {0x00cf, {1|F|D, {0x00ef}}},
     60  {0x00d0, {1|F|D, {0x00f0}}},
     61  {0x00d1, {1|F|D, {0x00f1}}},
     62  {0x00d2, {1|F|D, {0x00f2}}},
     63  {0x00d3, {1|F|D, {0x00f3}}},
     64  {0x00d4, {1|F|D, {0x00f4}}},
     65  {0x00d5, {1|F|D, {0x00f5}}},
     66  {0x00d6, {1|F|D, {0x00f6}}},
     67  {0x00d8, {1|F|D, {0x00f8}}},
     68  {0x00d9, {1|F|D, {0x00f9}}},
     69  {0x00da, {1|F|D, {0x00fa}}},
     70  {0x00db, {1|F|D, {0x00fb}}},
     71  {0x00dc, {1|F|D, {0x00fc}}},
     72  {0x00dd, {1|F|D, {0x00fd}}},
     73  {0x00de, {1|F|D, {0x00fe}}},
     74  {0x00df, {2|F|ST|SU|I(1), {0x0073, 0x0073}}},
     75  {0x0100, {1|F|D, {0x0101}}},
     76  {0x0102, {1|F|D, {0x0103}}},
     77  {0x0104, {1|F|D, {0x0105}}},
     78  {0x0106, {1|F|D, {0x0107}}},
     79  {0x0108, {1|F|D, {0x0109}}},
     80  {0x010a, {1|F|D, {0x010b}}},
     81  {0x010c, {1|F|D, {0x010d}}},
     82  {0x010e, {1|F|D, {0x010f}}},
     83  {0x0110, {1|F|D, {0x0111}}},
     84  {0x0112, {1|F|D, {0x0113}}},
     85  {0x0114, {1|F|D, {0x0115}}},
     86  {0x0116, {1|F|D, {0x0117}}},
     87  {0x0118, {1|F|D, {0x0119}}},
     88  {0x011a, {1|F|D, {0x011b}}},
     89  {0x011c, {1|F|D, {0x011d}}},
     90  {0x011e, {1|F|D, {0x011f}}},
     91  {0x0120, {1|F|D, {0x0121}}},
     92  {0x0122, {1|F|D, {0x0123}}},
     93  {0x0124, {1|F|D, {0x0125}}},
     94  {0x0126, {1|F|D, {0x0127}}},
     95  {0x0128, {1|F|D, {0x0129}}},
     96  {0x012a, {1|F|D, {0x012b}}},
     97  {0x012c, {1|F|D, {0x012d}}},
     98  {0x012e, {1|F|D, {0x012f}}},
     99  {0x0132, {1|F|D, {0x0133}}},
     100  {0x0134, {1|F|D, {0x0135}}},
     101  {0x0136, {1|F|D, {0x0137}}},
     102  {0x0139, {1|F|D, {0x013a}}},
     103  {0x013b, {1|F|D, {0x013c}}},
     104  {0x013d, {1|F|D, {0x013e}}},
     105  {0x013f, {1|F|D, {0x0140}}},
     106  {0x0141, {1|F|D, {0x0142}}},
     107  {0x0143, {1|F|D, {0x0144}}},
     108  {0x0145, {1|F|D, {0x0146}}},
     109  {0x0147, {1|F|D, {0x0148}}},
     110  {0x0149, {2|F|SU|I(5), {0x02bc, 0x006e}}},
     111  {0x014a, {1|F|D, {0x014b}}},
     112  {0x014c, {1|F|D, {0x014d}}},
     113  {0x014e, {1|F|D, {0x014f}}},
     114  {0x0150, {1|F|D, {0x0151}}},
     115  {0x0152, {1|F|D, {0x0153}}},
     116  {0x0154, {1|F|D, {0x0155}}},
     117  {0x0156, {1|F|D, {0x0157}}},
     118  {0x0158, {1|F|D, {0x0159}}},
     119  {0x015a, {1|F|D, {0x015b}}},
     120  {0x015c, {1|F|D, {0x015d}}},
     121  {0x015e, {1|F|D, {0x015f}}},
     122  {0x0160, {1|F|D, {0x0161}}},
     123  {0x0162, {1|F|D, {0x0163}}},
     124  {0x0164, {1|F|D, {0x0165}}},
     125  {0x0166, {1|F|D, {0x0167}}},
     126  {0x0168, {1|F|D, {0x0169}}},
     127  {0x016a, {1|F|D, {0x016b}}},
     128  {0x016c, {1|F|D, {0x016d}}},
     129  {0x016e, {1|F|D, {0x016f}}},
     130  {0x0170, {1|F|D, {0x0171}}},
     131  {0x0172, {1|F|D, {0x0173}}},
     132  {0x0174, {1|F|D, {0x0175}}},
     133  {0x0176, {1|F|D, {0x0177}}},
     134  {0x0178, {1|F|D, {0x00ff}}},
     135  {0x0179, {1|F|D, {0x017a}}},
     136  {0x017b, {1|F|D, {0x017c}}},
     137  {0x017d, {1|F|D, {0x017e}}},
     138  {0x017f, {1|F|SU|I(7), {0x0073}}},
     139  {0x0181, {1|F|D, {0x0253}}},
     140  {0x0182, {1|F|D, {0x0183}}},
     141  {0x0184, {1|F|D, {0x0185}}},
     142  {0x0186, {1|F|D, {0x0254}}},
     143  {0x0187, {1|F|D, {0x0188}}},
     144  {0x0189, {1|F|D, {0x0256}}},
     145  {0x018a, {1|F|D, {0x0257}}},
     146  {0x018b, {1|F|D, {0x018c}}},
     147  {0x018e, {1|F|D, {0x01dd}}},
     148  {0x018f, {1|F|D, {0x0259}}},
     149  {0x0190, {1|F|D, {0x025b}}},
     150  {0x0191, {1|F|D, {0x0192}}},
     151  {0x0193, {1|F|D, {0x0260}}},
     152  {0x0194, {1|F|D, {0x0263}}},
     153  {0x0196, {1|F|D, {0x0269}}},
     154  {0x0197, {1|F|D, {0x0268}}},
     155  {0x0198, {1|F|D, {0x0199}}},
     156  {0x019c, {1|F|D, {0x026f}}},
     157  {0x019d, {1|F|D, {0x0272}}},
     158  {0x019f, {1|F|D, {0x0275}}},
     159  {0x01a0, {1|F|D, {0x01a1}}},
     160  {0x01a2, {1|F|D, {0x01a3}}},
     161  {0x01a4, {1|F|D, {0x01a5}}},
     162  {0x01a6, {1|F|D, {0x0280}}},
     163  {0x01a7, {1|F|D, {0x01a8}}},
     164  {0x01a9, {1|F|D, {0x0283}}},
     165  {0x01ac, {1|F|D, {0x01ad}}},
     166  {0x01ae, {1|F|D, {0x0288}}},
     167  {0x01af, {1|F|D, {0x01b0}}},
     168  {0x01b1, {1|F|D, {0x028a}}},
     169  {0x01b2, {1|F|D, {0x028b}}},
     170  {0x01b3, {1|F|D, {0x01b4}}},
     171  {0x01b5, {1|F|D, {0x01b6}}},
     172  {0x01b7, {1|F|D, {0x0292}}},
     173  {0x01b8, {1|F|D, {0x01b9}}},
     174  {0x01bc, {1|F|D, {0x01bd}}},
     175  {0x01c4, {1|F|D|ST|I(8), {0x01c6}}},
     176  {0x01c5, {1|F|D|IT|SU|I(9), {0x01c6}}},
     177  {0x01c7, {1|F|D|ST|I(12), {0x01c9}}},
     178  {0x01c8, {1|F|D|IT|SU|I(13), {0x01c9}}},
     179  {0x01ca, {1|F|D|ST|I(16), {0x01cc}}},
     180  {0x01cb, {1|F|D|IT|SU|I(17), {0x01cc}}},
     181  {0x01cd, {1|F|D, {0x01ce}}},
     182  {0x01cf, {1|F|D, {0x01d0}}},
     183  {0x01d1, {1|F|D, {0x01d2}}},
     184  {0x01d3, {1|F|D, {0x01d4}}},
     185  {0x01d5, {1|F|D, {0x01d6}}},
     186  {0x01d7, {1|F|D, {0x01d8}}},
     187  {0x01d9, {1|F|D, {0x01da}}},
     188  {0x01db, {1|F|D, {0x01dc}}},
     189  {0x01de, {1|F|D, {0x01df}}},
     190  {0x01e0, {1|F|D, {0x01e1}}},
     191  {0x01e2, {1|F|D, {0x01e3}}},
     192  {0x01e4, {1|F|D, {0x01e5}}},
     193  {0x01e6, {1|F|D, {0x01e7}}},
     194  {0x01e8, {1|F|D, {0x01e9}}},
     195  {0x01ea, {1|F|D, {0x01eb}}},
     196  {0x01ec, {1|F|D, {0x01ed}}},
     197  {0x01ee, {1|F|D, {0x01ef}}},
     198  {0x01f0, {2|F|SU|I(20), {0x006a, 0x030c}}},
     199  {0x01f1, {1|F|D|ST|I(22), {0x01f3}}},
     200  {0x01f2, {1|F|D|IT|SU|I(23), {0x01f3}}},
     201  {0x01f4, {1|F|D, {0x01f5}}},
     202  {0x01f6, {1|F|D, {0x0195}}},
     203  {0x01f7, {1|F|D, {0x01bf}}},
     204  {0x01f8, {1|F|D, {0x01f9}}},
     205  {0x01fa, {1|F|D, {0x01fb}}},
     206  {0x01fc, {1|F|D, {0x01fd}}},
     207  {0x01fe, {1|F|D, {0x01ff}}},
     208  {0x0200, {1|F|D, {0x0201}}},
     209  {0x0202, {1|F|D, {0x0203}}},
     210  {0x0204, {1|F|D, {0x0205}}},
     211  {0x0206, {1|F|D, {0x0207}}},
     212  {0x0208, {1|F|D, {0x0209}}},
     213  {0x020a, {1|F|D, {0x020b}}},
     214  {0x020c, {1|F|D, {0x020d}}},
     215  {0x020e, {1|F|D, {0x020f}}},
     216  {0x0210, {1|F|D, {0x0211}}},
     217  {0x0212, {1|F|D, {0x0213}}},
     218  {0x0214, {1|F|D, {0x0215}}},
     219  {0x0216, {1|F|D, {0x0217}}},
     220  {0x0218, {1|F|D, {0x0219}}},
     221  {0x021a, {1|F|D, {0x021b}}},
     222  {0x021c, {1|F|D, {0x021d}}},
     223  {0x021e, {1|F|D, {0x021f}}},
     224  {0x0220, {1|F|D, {0x019e}}},
     225  {0x0222, {1|F|D, {0x0223}}},
     226  {0x0224, {1|F|D, {0x0225}}},
     227  {0x0226, {1|F|D, {0x0227}}},
     228  {0x0228, {1|F|D, {0x0229}}},
     229  {0x022a, {1|F|D, {0x022b}}},
     230  {0x022c, {1|F|D, {0x022d}}},
     231  {0x022e, {1|F|D, {0x022f}}},
     232  {0x0230, {1|F|D, {0x0231}}},
     233  {0x0232, {1|F|D, {0x0233}}},
     234  {0x023a, {1|F|D, {0x2c65}}},
     235  {0x023b, {1|F|D, {0x023c}}},
     236  {0x023d, {1|F|D, {0x019a}}},
     237  {0x023e, {1|F|D, {0x2c66}}},
     238  {0x0241, {1|F|D, {0x0242}}},
     239  {0x0243, {1|F|D, {0x0180}}},
     240  {0x0244, {1|F|D, {0x0289}}},
     241  {0x0245, {1|F|D, {0x028c}}},
     242  {0x0246, {1|F|D, {0x0247}}},
     243  {0x0248, {1|F|D, {0x0249}}},
     244  {0x024a, {1|F|D, {0x024b}}},
     245  {0x024c, {1|F|D, {0x024d}}},
     246  {0x024e, {1|F|D, {0x024f}}},
     247  {0x0345, {1|F|SU|I(26), {0x03b9}}},
     248  {0x0370, {1|F|D, {0x0371}}},
     249  {0x0372, {1|F|D, {0x0373}}},
     250  {0x0376, {1|F|D, {0x0377}}},
     251  {0x037f, {1|F|D, {0x03f3}}},
     252  {0x0386, {1|F|D, {0x03ac}}},
     253  {0x0388, {1|F|D, {0x03ad}}},
     254  {0x0389, {1|F|D, {0x03ae}}},
     255  {0x038a, {1|F|D, {0x03af}}},
     256  {0x038c, {1|F|D, {0x03cc}}},
     257  {0x038e, {1|F|D, {0x03cd}}},
     258  {0x038f, {1|F|D, {0x03ce}}},
     259  {0x0390, {3|F|SU|I(27), {0x03b9, 0x0308, 0x0301}}},
     260  {0x0391, {1|F|D, {0x03b1}}},
     261  {0x0392, {1|F|D, {0x03b2}}},
     262  {0x0393, {1|F|D, {0x03b3}}},
     263  {0x0394, {1|F|D, {0x03b4}}},
     264  {0x0395, {1|F|D, {0x03b5}}},
     265  {0x0396, {1|F|D, {0x03b6}}},
     266  {0x0397, {1|F|D, {0x03b7}}},
     267  {0x0398, {1|F|D, {0x03b8}}},
     268  {0x0399, {1|F|D, {0x03b9}}},
     269  {0x039a, {1|F|D, {0x03ba}}},
     270  {0x039b, {1|F|D, {0x03bb}}},
     271  {0x039c, {1|F|D, {0x03bc}}},
     272  {0x039d, {1|F|D, {0x03bd}}},
     273  {0x039e, {1|F|D, {0x03be}}},
     274  {0x039f, {1|F|D, {0x03bf}}},
     275  {0x03a0, {1|F|D, {0x03c0}}},
     276  {0x03a1, {1|F|D, {0x03c1}}},
     277  {0x03a3, {1|F|D, {0x03c3}}},
     278  {0x03a4, {1|F|D, {0x03c4}}},
     279  {0x03a5, {1|F|D, {0x03c5}}},
     280  {0x03a6, {1|F|D, {0x03c6}}},
     281  {0x03a7, {1|F|D, {0x03c7}}},
     282  {0x03a8, {1|F|D, {0x03c8}}},
     283  {0x03a9, {1|F|D, {0x03c9}}},
     284  {0x03aa, {1|F|D, {0x03ca}}},
     285  {0x03ab, {1|F|D, {0x03cb}}},
     286  {0x03b0, {3|F|SU|I(30), {0x03c5, 0x0308, 0x0301}}},
     287  {0x03c2, {1|F|SU|I(33), {0x03c3}}},
     288  {0x03cf, {1|F|D, {0x03d7}}},
     289  {0x03d0, {1|F|SU|I(34), {0x03b2}}},
     290  {0x03d1, {1|F|SU|I(35), {0x03b8}}},
     291  {0x03d5, {1|F|SU|I(36), {0x03c6}}},
     292  {0x03d6, {1|F|SU|I(37), {0x03c0}}},
     293  {0x03d8, {1|F|D, {0x03d9}}},
     294  {0x03da, {1|F|D, {0x03db}}},
     295  {0x03dc, {1|F|D, {0x03dd}}},
     296  {0x03de, {1|F|D, {0x03df}}},
     297  {0x03e0, {1|F|D, {0x03e1}}},
     298  {0x03e2, {1|F|D, {0x03e3}}},
     299  {0x03e4, {1|F|D, {0x03e5}}},
     300  {0x03e6, {1|F|D, {0x03e7}}},
     301  {0x03e8, {1|F|D, {0x03e9}}},
     302  {0x03ea, {1|F|D, {0x03eb}}},
     303  {0x03ec, {1|F|D, {0x03ed}}},
     304  {0x03ee, {1|F|D, {0x03ef}}},
     305  {0x03f0, {1|F|SU|I(38), {0x03ba}}},
     306  {0x03f1, {1|F|SU|I(39), {0x03c1}}},
     307  {0x03f4, {1|F|D, {0x03b8}}},
     308  {0x03f5, {1|F|SU|I(40), {0x03b5}}},
     309  {0x03f7, {1|F|D, {0x03f8}}},
     310  {0x03f9, {1|F|D, {0x03f2}}},
     311  {0x03fa, {1|F|D, {0x03fb}}},
     312  {0x03fd, {1|F|D, {0x037b}}},
     313  {0x03fe, {1|F|D, {0x037c}}},
     314  {0x03ff, {1|F|D, {0x037d}}},
     315  {0x0400, {1|F|D, {0x0450}}},
     316  {0x0401, {1|F|D, {0x0451}}},
     317  {0x0402, {1|F|D, {0x0452}}},
     318  {0x0403, {1|F|D, {0x0453}}},
     319  {0x0404, {1|F|D, {0x0454}}},
     320  {0x0405, {1|F|D, {0x0455}}},
     321  {0x0406, {1|F|D, {0x0456}}},
     322  {0x0407, {1|F|D, {0x0457}}},
     323  {0x0408, {1|F|D, {0x0458}}},
     324  {0x0409, {1|F|D, {0x0459}}},
     325  {0x040a, {1|F|D, {0x045a}}},
     326  {0x040b, {1|F|D, {0x045b}}},
     327  {0x040c, {1|F|D, {0x045c}}},
     328  {0x040d, {1|F|D, {0x045d}}},
     329  {0x040e, {1|F|D, {0x045e}}},
     330  {0x040f, {1|F|D, {0x045f}}},
     331  {0x0410, {1|F|D, {0x0430}}},
     332  {0x0411, {1|F|D, {0x0431}}},
     333  {0x0412, {1|F|D, {0x0432}}},
     334  {0x0413, {1|F|D, {0x0433}}},
     335  {0x0414, {1|F|D, {0x0434}}},
     336  {0x0415, {1|F|D, {0x0435}}},
     337  {0x0416, {1|F|D, {0x0436}}},
     338  {0x0417, {1|F|D, {0x0437}}},
     339  {0x0418, {1|F|D, {0x0438}}},
     340  {0x0419, {1|F|D, {0x0439}}},
     341  {0x041a, {1|F|D, {0x043a}}},
     342  {0x041b, {1|F|D, {0x043b}}},
     343  {0x041c, {1|F|D, {0x043c}}},
     344  {0x041d, {1|F|D, {0x043d}}},
     345  {0x041e, {1|F|D, {0x043e}}},
     346  {0x041f, {1|F|D, {0x043f}}},
     347  {0x0420, {1|F|D, {0x0440}}},
     348  {0x0421, {1|F|D, {0x0441}}},
     349  {0x0422, {1|F|D, {0x0442}}},
     350  {0x0423, {1|F|D, {0x0443}}},
     351  {0x0424, {1|F|D, {0x0444}}},
     352  {0x0425, {1|F|D, {0x0445}}},
     353  {0x0426, {1|F|D, {0x0446}}},
     354  {0x0427, {1|F|D, {0x0447}}},
     355  {0x0428, {1|F|D, {0x0448}}},
     356  {0x0429, {1|F|D, {0x0449}}},
     357  {0x042a, {1|F|D, {0x044a}}},
     358  {0x042b, {1|F|D, {0x044b}}},
     359  {0x042c, {1|F|D, {0x044c}}},
     360  {0x042d, {1|F|D, {0x044d}}},
     361  {0x042e, {1|F|D, {0x044e}}},
     362  {0x042f, {1|F|D, {0x044f}}},
     363  {0x0460, {1|F|D, {0x0461}}},
     364  {0x0462, {1|F|D, {0x0463}}},
     365  {0x0464, {1|F|D, {0x0465}}},
     366  {0x0466, {1|F|D, {0x0467}}},
     367  {0x0468, {1|F|D, {0x0469}}},
     368  {0x046a, {1|F|D, {0x046b}}},
     369  {0x046c, {1|F|D, {0x046d}}},
     370  {0x046e, {1|F|D, {0x046f}}},
     371  {0x0470, {1|F|D, {0x0471}}},
     372  {0x0472, {1|F|D, {0x0473}}},
     373  {0x0474, {1|F|D, {0x0475}}},
     374  {0x0476, {1|F|D, {0x0477}}},
     375  {0x0478, {1|F|D, {0x0479}}},
     376  {0x047a, {1|F|D, {0x047b}}},
     377  {0x047c, {1|F|D, {0x047d}}},
     378  {0x047e, {1|F|D, {0x047f}}},
     379  {0x0480, {1|F|D, {0x0481}}},
     380  {0x048a, {1|F|D, {0x048b}}},
     381  {0x048c, {1|F|D, {0x048d}}},
     382  {0x048e, {1|F|D, {0x048f}}},
     383  {0x0490, {1|F|D, {0x0491}}},
     384  {0x0492, {1|F|D, {0x0493}}},
     385  {0x0494, {1|F|D, {0x0495}}},
     386  {0x0496, {1|F|D, {0x0497}}},
     387  {0x0498, {1|F|D, {0x0499}}},
     388  {0x049a, {1|F|D, {0x049b}}},
     389  {0x049c, {1|F|D, {0x049d}}},
     390  {0x049e, {1|F|D, {0x049f}}},
     391  {0x04a0, {1|F|D, {0x04a1}}},
     392  {0x04a2, {1|F|D, {0x04a3}}},
     393  {0x04a4, {1|F|D, {0x04a5}}},
     394  {0x04a6, {1|F|D, {0x04a7}}},
     395  {0x04a8, {1|F|D, {0x04a9}}},
     396  {0x04aa, {1|F|D, {0x04ab}}},
     397  {0x04ac, {1|F|D, {0x04ad}}},
     398  {0x04ae, {1|F|D, {0x04af}}},
     399  {0x04b0, {1|F|D, {0x04b1}}},
     400  {0x04b2, {1|F|D, {0x04b3}}},
     401  {0x04b4, {1|F|D, {0x04b5}}},
     402  {0x04b6, {1|F|D, {0x04b7}}},
     403  {0x04b8, {1|F|D, {0x04b9}}},
     404  {0x04ba, {1|F|D, {0x04bb}}},
     405  {0x04bc, {1|F|D, {0x04bd}}},
     406  {0x04be, {1|F|D, {0x04bf}}},
     407  {0x04c0, {1|F|D, {0x04cf}}},
     408  {0x04c1, {1|F|D, {0x04c2}}},
     409  {0x04c3, {1|F|D, {0x04c4}}},
     410  {0x04c5, {1|F|D, {0x04c6}}},
     411  {0x04c7, {1|F|D, {0x04c8}}},
     412  {0x04c9, {1|F|D, {0x04ca}}},
     413  {0x04cb, {1|F|D, {0x04cc}}},
     414  {0x04cd, {1|F|D, {0x04ce}}},
     415  {0x04d0, {1|F|D, {0x04d1}}},
     416  {0x04d2, {1|F|D, {0x04d3}}},
     417  {0x04d4, {1|F|D, {0x04d5}}},
     418  {0x04d6, {1|F|D, {0x04d7}}},
     419  {0x04d8, {1|F|D, {0x04d9}}},
     420  {0x04da, {1|F|D, {0x04db}}},
     421  {0x04dc, {1|F|D, {0x04dd}}},
     422  {0x04de, {1|F|D, {0x04df}}},
     423  {0x04e0, {1|F|D, {0x04e1}}},
     424  {0x04e2, {1|F|D, {0x04e3}}},
     425  {0x04e4, {1|F|D, {0x04e5}}},
     426  {0x04e6, {1|F|D, {0x04e7}}},
     427  {0x04e8, {1|F|D, {0x04e9}}},
     428  {0x04ea, {1|F|D, {0x04eb}}},
     429  {0x04ec, {1|F|D, {0x04ed}}},
     430  {0x04ee, {1|F|D, {0x04ef}}},
     431  {0x04f0, {1|F|D, {0x04f1}}},
     432  {0x04f2, {1|F|D, {0x04f3}}},
     433  {0x04f4, {1|F|D, {0x04f5}}},
     434  {0x04f6, {1|F|D, {0x04f7}}},
     435  {0x04f8, {1|F|D, {0x04f9}}},
     436  {0x04fa, {1|F|D, {0x04fb}}},
     437  {0x04fc, {1|F|D, {0x04fd}}},
     438  {0x04fe, {1|F|D, {0x04ff}}},
     439  {0x0500, {1|F|D, {0x0501}}},
     440  {0x0502, {1|F|D, {0x0503}}},
     441  {0x0504, {1|F|D, {0x0505}}},
     442  {0x0506, {1|F|D, {0x0507}}},
     443  {0x0508, {1|F|D, {0x0509}}},
     444  {0x050a, {1|F|D, {0x050b}}},
     445  {0x050c, {1|F|D, {0x050d}}},
     446  {0x050e, {1|F|D, {0x050f}}},
     447  {0x0510, {1|F|D, {0x0511}}},
     448  {0x0512, {1|F|D, {0x0513}}},
     449  {0x0514, {1|F|D, {0x0515}}},
     450  {0x0516, {1|F|D, {0x0517}}},
     451  {0x0518, {1|F|D, {0x0519}}},
     452  {0x051a, {1|F|D, {0x051b}}},
     453  {0x051c, {1|F|D, {0x051d}}},
     454  {0x051e, {1|F|D, {0x051f}}},
     455  {0x0520, {1|F|D, {0x0521}}},
     456  {0x0522, {1|F|D, {0x0523}}},
     457  {0x0524, {1|F|D, {0x0525}}},
     458  {0x0526, {1|F|D, {0x0527}}},
     459  {0x0528, {1|F|D, {0x0529}}},
     460  {0x052a, {1|F|D, {0x052b}}},
     461  {0x052c, {1|F|D, {0x052d}}},
     462  {0x052e, {1|F|D, {0x052f}}},
     463  {0x0531, {1|F|D, {0x0561}}},
     464  {0x0532, {1|F|D, {0x0562}}},
     465  {0x0533, {1|F|D, {0x0563}}},
     466  {0x0534, {1|F|D, {0x0564}}},
     467  {0x0535, {1|F|D, {0x0565}}},
     468  {0x0536, {1|F|D, {0x0566}}},
     469  {0x0537, {1|F|D, {0x0567}}},
     470  {0x0538, {1|F|D, {0x0568}}},
     471  {0x0539, {1|F|D, {0x0569}}},
     472  {0x053a, {1|F|D, {0x056a}}},
     473  {0x053b, {1|F|D, {0x056b}}},
     474  {0x053c, {1|F|D, {0x056c}}},
     475  {0x053d, {1|F|D, {0x056d}}},
     476  {0x053e, {1|F|D, {0x056e}}},
     477  {0x053f, {1|F|D, {0x056f}}},
     478  {0x0540, {1|F|D, {0x0570}}},
     479  {0x0541, {1|F|D, {0x0571}}},
     480  {0x0542, {1|F|D, {0x0572}}},
     481  {0x0543, {1|F|D, {0x0573}}},
     482  {0x0544, {1|F|D, {0x0574}}},
     483  {0x0545, {1|F|D, {0x0575}}},
     484  {0x0546, {1|F|D, {0x0576}}},
     485  {0x0547, {1|F|D, {0x0577}}},
     486  {0x0548, {1|F|D, {0x0578}}},
     487  {0x0549, {1|F|D, {0x0579}}},
     488  {0x054a, {1|F|D, {0x057a}}},
     489  {0x054b, {1|F|D, {0x057b}}},
     490  {0x054c, {1|F|D, {0x057c}}},
     491  {0x054d, {1|F|D, {0x057d}}},
     492  {0x054e, {1|F|D, {0x057e}}},
     493  {0x054f, {1|F|D, {0x057f}}},
     494  {0x0550, {1|F|D, {0x0580}}},
     495  {0x0551, {1|F|D, {0x0581}}},
     496  {0x0552, {1|F|D, {0x0582}}},
     497  {0x0553, {1|F|D, {0x0583}}},
     498  {0x0554, {1|F|D, {0x0584}}},
     499  {0x0555, {1|F|D, {0x0585}}},
     500  {0x0556, {1|F|D, {0x0586}}},
     501  {0x0587, {2|F|ST|SU|I(41), {0x0565, 0x0582}}},
     502  {0x10a0, {1|F|D, {0x2d00}}},
     503  {0x10a1, {1|F|D, {0x2d01}}},
     504  {0x10a2, {1|F|D, {0x2d02}}},
     505  {0x10a3, {1|F|D, {0x2d03}}},
     506  {0x10a4, {1|F|D, {0x2d04}}},
     507  {0x10a5, {1|F|D, {0x2d05}}},
     508  {0x10a6, {1|F|D, {0x2d06}}},
     509  {0x10a7, {1|F|D, {0x2d07}}},
     510  {0x10a8, {1|F|D, {0x2d08}}},
     511  {0x10a9, {1|F|D, {0x2d09}}},
     512  {0x10aa, {1|F|D, {0x2d0a}}},
     513  {0x10ab, {1|F|D, {0x2d0b}}},
     514  {0x10ac, {1|F|D, {0x2d0c}}},
     515  {0x10ad, {1|F|D, {0x2d0d}}},
     516  {0x10ae, {1|F|D, {0x2d0e}}},
     517  {0x10af, {1|F|D, {0x2d0f}}},
     518  {0x10b0, {1|F|D, {0x2d10}}},
     519  {0x10b1, {1|F|D, {0x2d11}}},
     520  {0x10b2, {1|F|D, {0x2d12}}},
     521  {0x10b3, {1|F|D, {0x2d13}}},
     522  {0x10b4, {1|F|D, {0x2d14}}},
     523  {0x10b5, {1|F|D, {0x2d15}}},
     524  {0x10b6, {1|F|D, {0x2d16}}},
     525  {0x10b7, {1|F|D, {0x2d17}}},
     526  {0x10b8, {1|F|D, {0x2d18}}},
     527  {0x10b9, {1|F|D, {0x2d19}}},
     528  {0x10ba, {1|F|D, {0x2d1a}}},
     529  {0x10bb, {1|F|D, {0x2d1b}}},
     530  {0x10bc, {1|F|D, {0x2d1c}}},
     531  {0x10bd, {1|F|D, {0x2d1d}}},
     532  {0x10be, {1|F|D, {0x2d1e}}},
     533  {0x10bf, {1|F|D, {0x2d1f}}},
     534  {0x10c0, {1|F|D, {0x2d20}}},
     535  {0x10c1, {1|F|D, {0x2d21}}},
     536  {0x10c2, {1|F|D, {0x2d22}}},
     537  {0x10c3, {1|F|D, {0x2d23}}},
     538  {0x10c4, {1|F|D, {0x2d24}}},
     539  {0x10c5, {1|F|D, {0x2d25}}},
     540  {0x10c7, {1|F|D, {0x2d27}}},
     541  {0x10cd, {1|F|D, {0x2d2d}}},
     542  {0x13f8, {1|F|U, {0x13f0}}},
     543  {0x13f9, {1|F|U, {0x13f1}}},
     544  {0x13fa, {1|F|U, {0x13f2}}},
     545  {0x13fb, {1|F|U, {0x13f3}}},
     546  {0x13fc, {1|F|U, {0x13f4}}},
     547  {0x13fd, {1|F|U, {0x13f5}}},
     548  {0x1c80, {1|F|SU|I(45), {0x0432}}},
     549  {0x1c81, {1|F|SU|I(46), {0x0434}}},
     550  {0x1c82, {1|F|SU|I(47), {0x043e}}},
     551  {0x1c83, {1|F|SU|I(48), {0x0441}}},
     552  {0x1c84, {1|F|SU|I(49), {0x0442}}},
     553  {0x1c85, {1|F|SU|I(50), {0x0442}}},
     554  {0x1c86, {1|F|SU|I(51), {0x044a}}},
     555  {0x1c87, {1|F|SU|I(52), {0x0463}}},
     556  {0x1c88, {1|F|SU|I(53), {0xa64b}}},
     557  {0x1e00, {1|F|D, {0x1e01}}},
     558  {0x1e02, {1|F|D, {0x1e03}}},
     559  {0x1e04, {1|F|D, {0x1e05}}},
     560  {0x1e06, {1|F|D, {0x1e07}}},
     561  {0x1e08, {1|F|D, {0x1e09}}},
     562  {0x1e0a, {1|F|D, {0x1e0b}}},
     563  {0x1e0c, {1|F|D, {0x1e0d}}},
     564  {0x1e0e, {1|F|D, {0x1e0f}}},
     565  {0x1e10, {1|F|D, {0x1e11}}},
     566  {0x1e12, {1|F|D, {0x1e13}}},
     567  {0x1e14, {1|F|D, {0x1e15}}},
     568  {0x1e16, {1|F|D, {0x1e17}}},
     569  {0x1e18, {1|F|D, {0x1e19}}},
     570  {0x1e1a, {1|F|D, {0x1e1b}}},
     571  {0x1e1c, {1|F|D, {0x1e1d}}},
     572  {0x1e1e, {1|F|D, {0x1e1f}}},
     573  {0x1e20, {1|F|D, {0x1e21}}},
     574  {0x1e22, {1|F|D, {0x1e23}}},
     575  {0x1e24, {1|F|D, {0x1e25}}},
     576  {0x1e26, {1|F|D, {0x1e27}}},
     577  {0x1e28, {1|F|D, {0x1e29}}},
     578  {0x1e2a, {1|F|D, {0x1e2b}}},
     579  {0x1e2c, {1|F|D, {0x1e2d}}},
     580  {0x1e2e, {1|F|D, {0x1e2f}}},
     581  {0x1e30, {1|F|D, {0x1e31}}},
     582  {0x1e32, {1|F|D, {0x1e33}}},
     583  {0x1e34, {1|F|D, {0x1e35}}},
     584  {0x1e36, {1|F|D, {0x1e37}}},
     585  {0x1e38, {1|F|D, {0x1e39}}},
     586  {0x1e3a, {1|F|D, {0x1e3b}}},
     587  {0x1e3c, {1|F|D, {0x1e3d}}},
     588  {0x1e3e, {1|F|D, {0x1e3f}}},
     589  {0x1e40, {1|F|D, {0x1e41}}},
     590  {0x1e42, {1|F|D, {0x1e43}}},
     591  {0x1e44, {1|F|D, {0x1e45}}},
     592  {0x1e46, {1|F|D, {0x1e47}}},
     593  {0x1e48, {1|F|D, {0x1e49}}},
     594  {0x1e4a, {1|F|D, {0x1e4b}}},
     595  {0x1e4c, {1|F|D, {0x1e4d}}},
     596  {0x1e4e, {1|F|D, {0x1e4f}}},
     597  {0x1e50, {1|F|D, {0x1e51}}},
     598  {0x1e52, {1|F|D, {0x1e53}}},
     599  {0x1e54, {1|F|D, {0x1e55}}},
     600  {0x1e56, {1|F|D, {0x1e57}}},
     601  {0x1e58, {1|F|D, {0x1e59}}},
     602  {0x1e5a, {1|F|D, {0x1e5b}}},
     603  {0x1e5c, {1|F|D, {0x1e5d}}},
     604  {0x1e5e, {1|F|D, {0x1e5f}}},
     605  {0x1e60, {1|F|D, {0x1e61}}},
     606  {0x1e62, {1|F|D, {0x1e63}}},
     607  {0x1e64, {1|F|D, {0x1e65}}},
     608  {0x1e66, {1|F|D, {0x1e67}}},
     609  {0x1e68, {1|F|D, {0x1e69}}},
     610  {0x1e6a, {1|F|D, {0x1e6b}}},
     611  {0x1e6c, {1|F|D, {0x1e6d}}},
     612  {0x1e6e, {1|F|D, {0x1e6f}}},
     613  {0x1e70, {1|F|D, {0x1e71}}},
     614  {0x1e72, {1|F|D, {0x1e73}}},
     615  {0x1e74, {1|F|D, {0x1e75}}},
     616  {0x1e76, {1|F|D, {0x1e77}}},
     617  {0x1e78, {1|F|D, {0x1e79}}},
     618  {0x1e7a, {1|F|D, {0x1e7b}}},
     619  {0x1e7c, {1|F|D, {0x1e7d}}},
     620  {0x1e7e, {1|F|D, {0x1e7f}}},
     621  {0x1e80, {1|F|D, {0x1e81}}},
     622  {0x1e82, {1|F|D, {0x1e83}}},
     623  {0x1e84, {1|F|D, {0x1e85}}},
     624  {0x1e86, {1|F|D, {0x1e87}}},
     625  {0x1e88, {1|F|D, {0x1e89}}},
     626  {0x1e8a, {1|F|D, {0x1e8b}}},
     627  {0x1e8c, {1|F|D, {0x1e8d}}},
     628  {0x1e8e, {1|F|D, {0x1e8f}}},
     629  {0x1e90, {1|F|D, {0x1e91}}},
     630  {0x1e92, {1|F|D, {0x1e93}}},
     631  {0x1e94, {1|F|D, {0x1e95}}},
     632  {0x1e96, {2|F|SU|I(54), {0x0068, 0x0331}}},
     633  {0x1e97, {2|F|SU|I(56), {0x0074, 0x0308}}},
     634  {0x1e98, {2|F|SU|I(58), {0x0077, 0x030a}}},
     635  {0x1e99, {2|F|SU|I(60), {0x0079, 0x030a}}},
     636  {0x1e9a, {2|F|SU|I(62), {0x0061, 0x02be}}},
     637  {0x1e9b, {1|F|SU|I(64), {0x1e61}}},
     638  {0x1e9e, {2|F|SL|I(65), {0x0073, 0x0073}}},
     639  {0x1ea0, {1|F|D, {0x1ea1}}},
     640  {0x1ea2, {1|F|D, {0x1ea3}}},
     641  {0x1ea4, {1|F|D, {0x1ea5}}},
     642  {0x1ea6, {1|F|D, {0x1ea7}}},
     643  {0x1ea8, {1|F|D, {0x1ea9}}},
     644  {0x1eaa, {1|F|D, {0x1eab}}},
     645  {0x1eac, {1|F|D, {0x1ead}}},
     646  {0x1eae, {1|F|D, {0x1eaf}}},
     647  {0x1eb0, {1|F|D, {0x1eb1}}},
     648  {0x1eb2, {1|F|D, {0x1eb3}}},
     649  {0x1eb4, {1|F|D, {0x1eb5}}},
     650  {0x1eb6, {1|F|D, {0x1eb7}}},
     651  {0x1eb8, {1|F|D, {0x1eb9}}},
     652  {0x1eba, {1|F|D, {0x1ebb}}},
     653  {0x1ebc, {1|F|D, {0x1ebd}}},
     654  {0x1ebe, {1|F|D, {0x1ebf}}},
     655  {0x1ec0, {1|F|D, {0x1ec1}}},
     656  {0x1ec2, {1|F|D, {0x1ec3}}},
     657  {0x1ec4, {1|F|D, {0x1ec5}}},
     658  {0x1ec6, {1|F|D, {0x1ec7}}},
     659  {0x1ec8, {1|F|D, {0x1ec9}}},
     660  {0x1eca, {1|F|D, {0x1ecb}}},
     661  {0x1ecc, {1|F|D, {0x1ecd}}},
     662  {0x1ece, {1|F|D, {0x1ecf}}},
     663  {0x1ed0, {1|F|D, {0x1ed1}}},
     664  {0x1ed2, {1|F|D, {0x1ed3}}},
     665  {0x1ed4, {1|F|D, {0x1ed5}}},
     666  {0x1ed6, {1|F|D, {0x1ed7}}},
     667  {0x1ed8, {1|F|D, {0x1ed9}}},
     668  {0x1eda, {1|F|D, {0x1edb}}},
     669  {0x1edc, {1|F|D, {0x1edd}}},
     670  {0x1ede, {1|F|D, {0x1edf}}},
     671  {0x1ee0, {1|F|D, {0x1ee1}}},
     672  {0x1ee2, {1|F|D, {0x1ee3}}},
     673  {0x1ee4, {1|F|D, {0x1ee5}}},
     674  {0x1ee6, {1|F|D, {0x1ee7}}},
     675  {0x1ee8, {1|F|D, {0x1ee9}}},
     676  {0x1eea, {1|F|D, {0x1eeb}}},
     677  {0x1eec, {1|F|D, {0x1eed}}},
     678  {0x1eee, {1|F|D, {0x1eef}}},
     679  {0x1ef0, {1|F|D, {0x1ef1}}},
     680  {0x1ef2, {1|F|D, {0x1ef3}}},
     681  {0x1ef4, {1|F|D, {0x1ef5}}},
     682  {0x1ef6, {1|F|D, {0x1ef7}}},
     683  {0x1ef8, {1|F|D, {0x1ef9}}},
     684  {0x1efa, {1|F|D, {0x1efb}}},
     685  {0x1efc, {1|F|D, {0x1efd}}},
     686  {0x1efe, {1|F|D, {0x1eff}}},
     687  {0x1f08, {1|F|D, {0x1f00}}},
     688  {0x1f09, {1|F|D, {0x1f01}}},
     689  {0x1f0a, {1|F|D, {0x1f02}}},
     690  {0x1f0b, {1|F|D, {0x1f03}}},
     691  {0x1f0c, {1|F|D, {0x1f04}}},
     692  {0x1f0d, {1|F|D, {0x1f05}}},
     693  {0x1f0e, {1|F|D, {0x1f06}}},
     694  {0x1f0f, {1|F|D, {0x1f07}}},
     695  {0x1f18, {1|F|D, {0x1f10}}},
     696  {0x1f19, {1|F|D, {0x1f11}}},
     697  {0x1f1a, {1|F|D, {0x1f12}}},
     698  {0x1f1b, {1|F|D, {0x1f13}}},
     699  {0x1f1c, {1|F|D, {0x1f14}}},
     700  {0x1f1d, {1|F|D, {0x1f15}}},
     701  {0x1f28, {1|F|D, {0x1f20}}},
     702  {0x1f29, {1|F|D, {0x1f21}}},
     703  {0x1f2a, {1|F|D, {0x1f22}}},
     704  {0x1f2b, {1|F|D, {0x1f23}}},
     705  {0x1f2c, {1|F|D, {0x1f24}}},
     706  {0x1f2d, {1|F|D, {0x1f25}}},
     707  {0x1f2e, {1|F|D, {0x1f26}}},
     708  {0x1f2f, {1|F|D, {0x1f27}}},
     709  {0x1f38, {1|F|D, {0x1f30}}},
     710  {0x1f39, {1|F|D, {0x1f31}}},
     711  {0x1f3a, {1|F|D, {0x1f32}}},
     712  {0x1f3b, {1|F|D, {0x1f33}}},
     713  {0x1f3c, {1|F|D, {0x1f34}}},
     714  {0x1f3d, {1|F|D, {0x1f35}}},
     715  {0x1f3e, {1|F|D, {0x1f36}}},
     716  {0x1f3f, {1|F|D, {0x1f37}}},
     717  {0x1f48, {1|F|D, {0x1f40}}},
     718  {0x1f49, {1|F|D, {0x1f41}}},
     719  {0x1f4a, {1|F|D, {0x1f42}}},
     720  {0x1f4b, {1|F|D, {0x1f43}}},
     721  {0x1f4c, {1|F|D, {0x1f44}}},
     722  {0x1f4d, {1|F|D, {0x1f45}}},
     723  {0x1f50, {2|F|SU|I(66), {0x03c5, 0x0313}}},
     724  {0x1f52, {3|F|SU|I(68), {0x03c5, 0x0313, 0x0300}}},
     725  {0x1f54, {3|F|SU|I(71), {0x03c5, 0x0313, 0x0301}}},
     726  {0x1f56, {3|F|SU|I(74), {0x03c5, 0x0313, 0x0342}}},
     727  {0x1f59, {1|F|D, {0x1f51}}},
     728  {0x1f5b, {1|F|D, {0x1f53}}},
     729  {0x1f5d, {1|F|D, {0x1f55}}},
     730  {0x1f5f, {1|F|D, {0x1f57}}},
     731  {0x1f68, {1|F|D, {0x1f60}}},
     732  {0x1f69, {1|F|D, {0x1f61}}},
     733  {0x1f6a, {1|F|D, {0x1f62}}},
     734  {0x1f6b, {1|F|D, {0x1f63}}},
     735  {0x1f6c, {1|F|D, {0x1f64}}},
     736  {0x1f6d, {1|F|D, {0x1f65}}},
     737  {0x1f6e, {1|F|D, {0x1f66}}},
     738  {0x1f6f, {1|F|D, {0x1f67}}},
     739  {0x1f80, {2|F|ST|SU|I(77), {0x1f00, 0x03b9}}},
     740  {0x1f81, {2|F|ST|SU|I(80), {0x1f01, 0x03b9}}},
     741  {0x1f82, {2|F|ST|SU|I(83), {0x1f02, 0x03b9}}},
     742  {0x1f83, {2|F|ST|SU|I(86), {0x1f03, 0x03b9}}},
     743  {0x1f84, {2|F|ST|SU|I(89), {0x1f04, 0x03b9}}},
     744  {0x1f85, {2|F|ST|SU|I(92), {0x1f05, 0x03b9}}},
     745  {0x1f86, {2|F|ST|SU|I(95), {0x1f06, 0x03b9}}},
     746  {0x1f87, {2|F|ST|SU|I(98), {0x1f07, 0x03b9}}},
     747  {0x1f88, {2|F|IT|SL|SU|I(101), {0x1f00, 0x03b9}}},
     748  {0x1f89, {2|F|IT|SL|SU|I(106), {0x1f01, 0x03b9}}},
     749  {0x1f8a, {2|F|IT|SL|SU|I(111), {0x1f02, 0x03b9}}},
     750  {0x1f8b, {2|F|IT|SL|SU|I(116), {0x1f03, 0x03b9}}},
     751  {0x1f8c, {2|F|IT|SL|SU|I(121), {0x1f04, 0x03b9}}},
     752  {0x1f8d, {2|F|IT|SL|SU|I(126), {0x1f05, 0x03b9}}},
     753  {0x1f8e, {2|F|IT|SL|SU|I(131), {0x1f06, 0x03b9}}},
     754  {0x1f8f, {2|F|IT|SL|SU|I(136), {0x1f07, 0x03b9}}},
     755  {0x1f90, {2|F|ST|SU|I(141), {0x1f20, 0x03b9}}},
     756  {0x1f91, {2|F|ST|SU|I(144), {0x1f21, 0x03b9}}},
     757  {0x1f92, {2|F|ST|SU|I(147), {0x1f22, 0x03b9}}},
     758  {0x1f93, {2|F|ST|SU|I(150), {0x1f23, 0x03b9}}},
     759  {0x1f94, {2|F|ST|SU|I(153), {0x1f24, 0x03b9}}},
     760  {0x1f95, {2|F|ST|SU|I(156), {0x1f25, 0x03b9}}},
     761  {0x1f96, {2|F|ST|SU|I(159), {0x1f26, 0x03b9}}},
     762  {0x1f97, {2|F|ST|SU|I(162), {0x1f27, 0x03b9}}},
     763  {0x1f98, {2|F|IT|SL|SU|I(165), {0x1f20, 0x03b9}}},
     764  {0x1f99, {2|F|IT|SL|SU|I(170), {0x1f21, 0x03b9}}},
     765  {0x1f9a, {2|F|IT|SL|SU|I(175), {0x1f22, 0x03b9}}},
     766  {0x1f9b, {2|F|IT|SL|SU|I(180), {0x1f23, 0x03b9}}},
     767  {0x1f9c, {2|F|IT|SL|SU|I(185), {0x1f24, 0x03b9}}},
     768  {0x1f9d, {2|F|IT|SL|SU|I(190), {0x1f25, 0x03b9}}},
     769  {0x1f9e, {2|F|IT|SL|SU|I(195), {0x1f26, 0x03b9}}},
     770  {0x1f9f, {2|F|IT|SL|SU|I(200), {0x1f27, 0x03b9}}},
     771  {0x1fa0, {2|F|ST|SU|I(205), {0x1f60, 0x03b9}}},
     772  {0x1fa1, {2|F|ST|SU|I(208), {0x1f61, 0x03b9}}},
     773  {0x1fa2, {2|F|ST|SU|I(211), {0x1f62, 0x03b9}}},
     774  {0x1fa3, {2|F|ST|SU|I(214), {0x1f63, 0x03b9}}},
     775  {0x1fa4, {2|F|ST|SU|I(217), {0x1f64, 0x03b9}}},
     776  {0x1fa5, {2|F|ST|SU|I(220), {0x1f65, 0x03b9}}},
     777  {0x1fa6, {2|F|ST|SU|I(223), {0x1f66, 0x03b9}}},
     778  {0x1fa7, {2|F|ST|SU|I(226), {0x1f67, 0x03b9}}},
     779  {0x1fa8, {2|F|IT|SL|SU|I(229), {0x1f60, 0x03b9}}},
     780  {0x1fa9, {2|F|IT|SL|SU|I(234), {0x1f61, 0x03b9}}},
     781  {0x1faa, {2|F|IT|SL|SU|I(239), {0x1f62, 0x03b9}}},
     782  {0x1fab, {2|F|IT|SL|SU|I(244), {0x1f63, 0x03b9}}},
     783  {0x1fac, {2|F|IT|SL|SU|I(249), {0x1f64, 0x03b9}}},
     784  {0x1fad, {2|F|IT|SL|SU|I(254), {0x1f65, 0x03b9}}},
     785  {0x1fae, {2|F|IT|SL|SU|I(259), {0x1f66, 0x03b9}}},
     786  {0x1faf, {2|F|IT|SL|SU|I(264), {0x1f67, 0x03b9}}},
     787  {0x1fb2, {2|F|ST|SU|I(269), {0x1f70, 0x03b9}}},
     788  {0x1fb3, {2|F|ST|SU|I(273), {0x03b1, 0x03b9}}},
     789  {0x1fb4, {2|F|ST|SU|I(276), {0x03ac, 0x03b9}}},
     790  {0x1fb6, {2|F|SU|I(280), {0x03b1, 0x0342}}},
     791  {0x1fb7, {3|F|ST|SU|I(282), {0x03b1, 0x0342, 0x03b9}}},
     792  {0x1fb8, {1|F|D, {0x1fb0}}},
     793  {0x1fb9, {1|F|D, {0x1fb1}}},
     794  {0x1fba, {1|F|D, {0x1f70}}},
     795  {0x1fbb, {1|F|D, {0x1f71}}},
     796  {0x1fbc, {2|F|IT|SL|SU|I(288), {0x03b1, 0x03b9}}},
     797  {0x1fbe, {1|F|SU|I(293), {0x03b9}}},
     798  {0x1fc2, {2|F|ST|SU|I(294), {0x1f74, 0x03b9}}},
     799  {0x1fc3, {2|F|ST|SU|I(298), {0x03b7, 0x03b9}}},
     800  {0x1fc4, {2|F|ST|SU|I(301), {0x03ae, 0x03b9}}},
     801  {0x1fc6, {2|F|SU|I(305), {0x03b7, 0x0342}}},
     802  {0x1fc7, {3|F|ST|SU|I(307), {0x03b7, 0x0342, 0x03b9}}},
     803  {0x1fc8, {1|F|D, {0x1f72}}},
     804  {0x1fc9, {1|F|D, {0x1f73}}},
     805  {0x1fca, {1|F|D, {0x1f74}}},
     806  {0x1fcb, {1|F|D, {0x1f75}}},
     807  {0x1fcc, {2|F|IT|SL|SU|I(313), {0x03b7, 0x03b9}}},
     808  {0x1fd2, {3|F|SU|I(318), {0x03b9, 0x0308, 0x0300}}},
     809  {0x1fd3, {3|F|SU|I(321), {0x03b9, 0x0308, 0x0301}}},
     810  {0x1fd6, {2|F|SU|I(324), {0x03b9, 0x0342}}},
     811  {0x1fd7, {3|F|SU|I(326), {0x03b9, 0x0308, 0x0342}}},
     812  {0x1fd8, {1|F|D, {0x1fd0}}},
     813  {0x1fd9, {1|F|D, {0x1fd1}}},
     814  {0x1fda, {1|F|D, {0x1f76}}},
     815  {0x1fdb, {1|F|D, {0x1f77}}},
     816  {0x1fe2, {3|F|SU|I(329), {0x03c5, 0x0308, 0x0300}}},
     817  {0x1fe3, {3|F|SU|I(332), {0x03c5, 0x0308, 0x0301}}},
     818  {0x1fe4, {2|F|SU|I(335), {0x03c1, 0x0313}}},
     819  {0x1fe6, {2|F|SU|I(337), {0x03c5, 0x0342}}},
     820  {0x1fe7, {3|F|SU|I(339), {0x03c5, 0x0308, 0x0342}}},
     821  {0x1fe8, {1|F|D, {0x1fe0}}},
     822  {0x1fe9, {1|F|D, {0x1fe1}}},
     823  {0x1fea, {1|F|D, {0x1f7a}}},
     824  {0x1feb, {1|F|D, {0x1f7b}}},
     825  {0x1fec, {1|F|D, {0x1fe5}}},
     826  {0x1ff2, {2|F|ST|SU|I(342), {0x1f7c, 0x03b9}}},
     827  {0x1ff3, {2|F|ST|SU|I(346), {0x03c9, 0x03b9}}},
     828  {0x1ff4, {2|F|ST|SU|I(349), {0x03ce, 0x03b9}}},
     829  {0x1ff6, {2|F|SU|I(353), {0x03c9, 0x0342}}},
     830  {0x1ff7, {3|F|ST|SU|I(355), {0x03c9, 0x0342, 0x03b9}}},
     831  {0x1ff8, {1|F|D, {0x1f78}}},
     832  {0x1ff9, {1|F|D, {0x1f79}}},
     833  {0x1ffa, {1|F|D, {0x1f7c}}},
     834  {0x1ffb, {1|F|D, {0x1f7d}}},
     835  {0x1ffc, {2|F|IT|SL|SU|I(361), {0x03c9, 0x03b9}}},
     836  {0x2126, {1|F|D, {0x03c9}}},
     837  {0x212a, {1|F|D, {0x006b}}},
     838  {0x212b, {1|F|D, {0x00e5}}},
     839  {0x2132, {1|F|D, {0x214e}}},
     840  {0x2160, {1|F|D, {0x2170}}},
     841  {0x2161, {1|F|D, {0x2171}}},
     842  {0x2162, {1|F|D, {0x2172}}},
     843  {0x2163, {1|F|D, {0x2173}}},
     844  {0x2164, {1|F|D, {0x2174}}},
     845  {0x2165, {1|F|D, {0x2175}}},
     846  {0x2166, {1|F|D, {0x2176}}},
     847  {0x2167, {1|F|D, {0x2177}}},
     848  {0x2168, {1|F|D, {0x2178}}},
     849  {0x2169, {1|F|D, {0x2179}}},
     850  {0x216a, {1|F|D, {0x217a}}},
     851  {0x216b, {1|F|D, {0x217b}}},
     852  {0x216c, {1|F|D, {0x217c}}},
     853  {0x216d, {1|F|D, {0x217d}}},
     854  {0x216e, {1|F|D, {0x217e}}},
     855  {0x216f, {1|F|D, {0x217f}}},
     856  {0x2183, {1|F|D, {0x2184}}},
     857  {0x24b6, {1|F|D, {0x24d0}}},
     858  {0x24b7, {1|F|D, {0x24d1}}},
     859  {0x24b8, {1|F|D, {0x24d2}}},
     860  {0x24b9, {1|F|D, {0x24d3}}},
     861  {0x24ba, {1|F|D, {0x24d4}}},
     862  {0x24bb, {1|F|D, {0x24d5}}},
     863  {0x24bc, {1|F|D, {0x24d6}}},
     864  {0x24bd, {1|F|D, {0x24d7}}},
     865  {0x24be, {1|F|D, {0x24d8}}},
     866  {0x24bf, {1|F|D, {0x24d9}}},
     867  {0x24c0, {1|F|D, {0x24da}}},
     868  {0x24c1, {1|F|D, {0x24db}}},
     869  {0x24c2, {1|F|D, {0x24dc}}},
     870  {0x24c3, {1|F|D, {0x24dd}}},
     871  {0x24c4, {1|F|D, {0x24de}}},
     872  {0x24c5, {1|F|D, {0x24df}}},
     873  {0x24c6, {1|F|D, {0x24e0}}},
     874  {0x24c7, {1|F|D, {0x24e1}}},
     875  {0x24c8, {1|F|D, {0x24e2}}},
     876  {0x24c9, {1|F|D, {0x24e3}}},
     877  {0x24ca, {1|F|D, {0x24e4}}},
     878  {0x24cb, {1|F|D, {0x24e5}}},
     879  {0x24cc, {1|F|D, {0x24e6}}},
     880  {0x24cd, {1|F|D, {0x24e7}}},
     881  {0x24ce, {1|F|D, {0x24e8}}},
     882  {0x24cf, {1|F|D, {0x24e9}}},
     883  {0x2c00, {1|F|D, {0x2c30}}},
     884  {0x2c01, {1|F|D, {0x2c31}}},
     885  {0x2c02, {1|F|D, {0x2c32}}},
     886  {0x2c03, {1|F|D, {0x2c33}}},
     887  {0x2c04, {1|F|D, {0x2c34}}},
     888  {0x2c05, {1|F|D, {0x2c35}}},
     889  {0x2c06, {1|F|D, {0x2c36}}},
     890  {0x2c07, {1|F|D, {0x2c37}}},
     891  {0x2c08, {1|F|D, {0x2c38}}},
     892  {0x2c09, {1|F|D, {0x2c39}}},
     893  {0x2c0a, {1|F|D, {0x2c3a}}},
     894  {0x2c0b, {1|F|D, {0x2c3b}}},
     895  {0x2c0c, {1|F|D, {0x2c3c}}},
     896  {0x2c0d, {1|F|D, {0x2c3d}}},
     897  {0x2c0e, {1|F|D, {0x2c3e}}},
     898  {0x2c0f, {1|F|D, {0x2c3f}}},
     899  {0x2c10, {1|F|D, {0x2c40}}},
     900  {0x2c11, {1|F|D, {0x2c41}}},
     901  {0x2c12, {1|F|D, {0x2c42}}},
     902  {0x2c13, {1|F|D, {0x2c43}}},
     903  {0x2c14, {1|F|D, {0x2c44}}},
     904  {0x2c15, {1|F|D, {0x2c45}}},
     905  {0x2c16, {1|F|D, {0x2c46}}},
     906  {0x2c17, {1|F|D, {0x2c47}}},
     907  {0x2c18, {1|F|D, {0x2c48}}},
     908  {0x2c19, {1|F|D, {0x2c49}}},
     909  {0x2c1a, {1|F|D, {0x2c4a}}},
     910  {0x2c1b, {1|F|D, {0x2c4b}}},
     911  {0x2c1c, {1|F|D, {0x2c4c}}},
     912  {0x2c1d, {1|F|D, {0x2c4d}}},
     913  {0x2c1e, {1|F|D, {0x2c4e}}},
     914  {0x2c1f, {1|F|D, {0x2c4f}}},
     915  {0x2c20, {1|F|D, {0x2c50}}},
     916  {0x2c21, {1|F|D, {0x2c51}}},
     917  {0x2c22, {1|F|D, {0x2c52}}},
     918  {0x2c23, {1|F|D, {0x2c53}}},
     919  {0x2c24, {1|F|D, {0x2c54}}},
     920  {0x2c25, {1|F|D, {0x2c55}}},
     921  {0x2c26, {1|F|D, {0x2c56}}},
     922  {0x2c27, {1|F|D, {0x2c57}}},
     923  {0x2c28, {1|F|D, {0x2c58}}},
     924  {0x2c29, {1|F|D, {0x2c59}}},
     925  {0x2c2a, {1|F|D, {0x2c5a}}},
     926  {0x2c2b, {1|F|D, {0x2c5b}}},
     927  {0x2c2c, {1|F|D, {0x2c5c}}},
     928  {0x2c2d, {1|F|D, {0x2c5d}}},
     929  {0x2c2e, {1|F|D, {0x2c5e}}},
     930  {0x2c60, {1|F|D, {0x2c61}}},
     931  {0x2c62, {1|F|D, {0x026b}}},
     932  {0x2c63, {1|F|D, {0x1d7d}}},
     933  {0x2c64, {1|F|D, {0x027d}}},
     934  {0x2c67, {1|F|D, {0x2c68}}},
     935  {0x2c69, {1|F|D, {0x2c6a}}},
     936  {0x2c6b, {1|F|D, {0x2c6c}}},
     937  {0x2c6d, {1|F|D, {0x0251}}},
     938  {0x2c6e, {1|F|D, {0x0271}}},
     939  {0x2c6f, {1|F|D, {0x0250}}},
     940  {0x2c70, {1|F|D, {0x0252}}},
     941  {0x2c72, {1|F|D, {0x2c73}}},
     942  {0x2c75, {1|F|D, {0x2c76}}},
     943  {0x2c7e, {1|F|D, {0x023f}}},
     944  {0x2c7f, {1|F|D, {0x0240}}},
     945  {0x2c80, {1|F|D, {0x2c81}}},
     946  {0x2c82, {1|F|D, {0x2c83}}},
     947  {0x2c84, {1|F|D, {0x2c85}}},
     948  {0x2c86, {1|F|D, {0x2c87}}},
     949  {0x2c88, {1|F|D, {0x2c89}}},
     950  {0x2c8a, {1|F|D, {0x2c8b}}},
     951  {0x2c8c, {1|F|D, {0x2c8d}}},
     952  {0x2c8e, {1|F|D, {0x2c8f}}},
     953  {0x2c90, {1|F|D, {0x2c91}}},
     954  {0x2c92, {1|F|D, {0x2c93}}},
     955  {0x2c94, {1|F|D, {0x2c95}}},
     956  {0x2c96, {1|F|D, {0x2c97}}},
     957  {0x2c98, {1|F|D, {0x2c99}}},
     958  {0x2c9a, {1|F|D, {0x2c9b}}},
     959  {0x2c9c, {1|F|D, {0x2c9d}}},
     960  {0x2c9e, {1|F|D, {0x2c9f}}},
     961  {0x2ca0, {1|F|D, {0x2ca1}}},
     962  {0x2ca2, {1|F|D, {0x2ca3}}},
     963  {0x2ca4, {1|F|D, {0x2ca5}}},
     964  {0x2ca6, {1|F|D, {0x2ca7}}},
     965  {0x2ca8, {1|F|D, {0x2ca9}}},
     966  {0x2caa, {1|F|D, {0x2cab}}},
     967  {0x2cac, {1|F|D, {0x2cad}}},
     968  {0x2cae, {1|F|D, {0x2caf}}},
     969  {0x2cb0, {1|F|D, {0x2cb1}}},
     970  {0x2cb2, {1|F|D, {0x2cb3}}},
     971  {0x2cb4, {1|F|D, {0x2cb5}}},
     972  {0x2cb6, {1|F|D, {0x2cb7}}},
     973  {0x2cb8, {1|F|D, {0x2cb9}}},
     974  {0x2cba, {1|F|D, {0x2cbb}}},
     975  {0x2cbc, {1|F|D, {0x2cbd}}},
     976  {0x2cbe, {1|F|D, {0x2cbf}}},
     977  {0x2cc0, {1|F|D, {0x2cc1}}},
     978  {0x2cc2, {1|F|D, {0x2cc3}}},
     979  {0x2cc4, {1|F|D, {0x2cc5}}},
     980  {0x2cc6, {1|F|D, {0x2cc7}}},
     981  {0x2cc8, {1|F|D, {0x2cc9}}},
     982  {0x2cca, {1|F|D, {0x2ccb}}},
     983  {0x2ccc, {1|F|D, {0x2ccd}}},
     984  {0x2cce, {1|F|D, {0x2ccf}}},
     985  {0x2cd0, {1|F|D, {0x2cd1}}},
     986  {0x2cd2, {1|F|D, {0x2cd3}}},
     987  {0x2cd4, {1|F|D, {0x2cd5}}},
     988  {0x2cd6, {1|F|D, {0x2cd7}}},
     989  {0x2cd8, {1|F|D, {0x2cd9}}},
     990  {0x2cda, {1|F|D, {0x2cdb}}},
     991  {0x2cdc, {1|F|D, {0x2cdd}}},
     992  {0x2cde, {1|F|D, {0x2cdf}}},
     993  {0x2ce0, {1|F|D, {0x2ce1}}},
     994  {0x2ce2, {1|F|D, {0x2ce3}}},
     995  {0x2ceb, {1|F|D, {0x2cec}}},
     996  {0x2ced, {1|F|D, {0x2cee}}},
     997  {0x2cf2, {1|F|D, {0x2cf3}}},
     998  {0xa640, {1|F|D, {0xa641}}},
     999  {0xa642, {1|F|D, {0xa643}}},
     1000  {0xa644, {1|F|D, {0xa645}}},
     1001  {0xa646, {1|F|D, {0xa647}}},
     1002  {0xa648, {1|F|D, {0xa649}}},
     1003  {0xa64a, {1|F|D, {0xa64b}}},
     1004  {0xa64c, {1|F|D, {0xa64d}}},
     1005  {0xa64e, {1|F|D, {0xa64f}}},
     1006  {0xa650, {1|F|D, {0xa651}}},
     1007  {0xa652, {1|F|D, {0xa653}}},
     1008  {0xa654, {1|F|D, {0xa655}}},
     1009  {0xa656, {1|F|D, {0xa657}}},
     1010  {0xa658, {1|F|D, {0xa659}}},
     1011  {0xa65a, {1|F|D, {0xa65b}}},
     1012  {0xa65c, {1|F|D, {0xa65d}}},
     1013  {0xa65e, {1|F|D, {0xa65f}}},
     1014  {0xa660, {1|F|D, {0xa661}}},
     1015  {0xa662, {1|F|D, {0xa663}}},
     1016  {0xa664, {1|F|D, {0xa665}}},
     1017  {0xa666, {1|F|D, {0xa667}}},
     1018  {0xa668, {1|F|D, {0xa669}}},
     1019  {0xa66a, {1|F|D, {0xa66b}}},
     1020  {0xa66c, {1|F|D, {0xa66d}}},
     1021  {0xa680, {1|F|D, {0xa681}}},
     1022  {0xa682, {1|F|D, {0xa683}}},
     1023  {0xa684, {1|F|D, {0xa685}}},
     1024  {0xa686, {1|F|D, {0xa687}}},
     1025  {0xa688, {1|F|D, {0xa689}}},
     1026  {0xa68a, {1|F|D, {0xa68b}}},
     1027  {0xa68c, {1|F|D, {0xa68d}}},
     1028  {0xa68e, {1|F|D, {0xa68f}}},
     1029  {0xa690, {1|F|D, {0xa691}}},
     1030  {0xa692, {1|F|D, {0xa693}}},
     1031  {0xa694, {1|F|D, {0xa695}}},
     1032  {0xa696, {1|F|D, {0xa697}}},
     1033  {0xa698, {1|F|D, {0xa699}}},
     1034  {0xa69a, {1|F|D, {0xa69b}}},
     1035  {0xa722, {1|F|D, {0xa723}}},
     1036  {0xa724, {1|F|D, {0xa725}}},
     1037  {0xa726, {1|F|D, {0xa727}}},
     1038  {0xa728, {1|F|D, {0xa729}}},
     1039  {0xa72a, {1|F|D, {0xa72b}}},
     1040  {0xa72c, {1|F|D, {0xa72d}}},
     1041  {0xa72e, {1|F|D, {0xa72f}}},
     1042  {0xa732, {1|F|D, {0xa733}}},
     1043  {0xa734, {1|F|D, {0xa735}}},
     1044  {0xa736, {1|F|D, {0xa737}}},
     1045  {0xa738, {1|F|D, {0xa739}}},
     1046  {0xa73a, {1|F|D, {0xa73b}}},
     1047  {0xa73c, {1|F|D, {0xa73d}}},
     1048  {0xa73e, {1|F|D, {0xa73f}}},
     1049  {0xa740, {1|F|D, {0xa741}}},
     1050  {0xa742, {1|F|D, {0xa743}}},
     1051  {0xa744, {1|F|D, {0xa745}}},
     1052  {0xa746, {1|F|D, {0xa747}}},
     1053  {0xa748, {1|F|D, {0xa749}}},
     1054  {0xa74a, {1|F|D, {0xa74b}}},
     1055  {0xa74c, {1|F|D, {0xa74d}}},
     1056  {0xa74e, {1|F|D, {0xa74f}}},
     1057  {0xa750, {1|F|D, {0xa751}}},
     1058  {0xa752, {1|F|D, {0xa753}}},
     1059  {0xa754, {1|F|D, {0xa755}}},
     1060  {0xa756, {1|F|D, {0xa757}}},
     1061  {0xa758, {1|F|D, {0xa759}}},
     1062  {0xa75a, {1|F|D, {0xa75b}}},
     1063  {0xa75c, {1|F|D, {0xa75d}}},
     1064  {0xa75e, {1|F|D, {0xa75f}}},
     1065  {0xa760, {1|F|D, {0xa761}}},
     1066  {0xa762, {1|F|D, {0xa763}}},
     1067  {0xa764, {1|F|D, {0xa765}}},
     1068  {0xa766, {1|F|D, {0xa767}}},
     1069  {0xa768, {1|F|D, {0xa769}}},
     1070  {0xa76a, {1|F|D, {0xa76b}}},
     1071  {0xa76c, {1|F|D, {0xa76d}}},
     1072  {0xa76e, {1|F|D, {0xa76f}}},
     1073  {0xa779, {1|F|D, {0xa77a}}},
     1074  {0xa77b, {1|F|D, {0xa77c}}},
     1075  {0xa77d, {1|F|D, {0x1d79}}},
     1076  {0xa77e, {1|F|D, {0xa77f}}},
     1077  {0xa780, {1|F|D, {0xa781}}},
     1078  {0xa782, {1|F|D, {0xa783}}},
     1079  {0xa784, {1|F|D, {0xa785}}},
     1080  {0xa786, {1|F|D, {0xa787}}},
     1081  {0xa78b, {1|F|D, {0xa78c}}},
     1082  {0xa78d, {1|F|D, {0x0265}}},
     1083  {0xa790, {1|F|D, {0xa791}}},
     1084  {0xa792, {1|F|D, {0xa793}}},
     1085  {0xa796, {1|F|D, {0xa797}}},
     1086  {0xa798, {1|F|D, {0xa799}}},
     1087  {0xa79a, {1|F|D, {0xa79b}}},
     1088  {0xa79c, {1|F|D, {0xa79d}}},
     1089  {0xa79e, {1|F|D, {0xa79f}}},
     1090  {0xa7a0, {1|F|D, {0xa7a1}}},
     1091  {0xa7a2, {1|F|D, {0xa7a3}}},
     1092  {0xa7a4, {1|F|D, {0xa7a5}}},
     1093  {0xa7a6, {1|F|D, {0xa7a7}}},
     1094  {0xa7a8, {1|F|D, {0xa7a9}}},
     1095  {0xa7aa, {1|F|D, {0x0266}}},
     1096  {0xa7ab, {1|F|D, {0x025c}}},
     1097  {0xa7ac, {1|F|D, {0x0261}}},
     1098  {0xa7ad, {1|F|D, {0x026c}}},
     1099  {0xa7ae, {1|F|D, {0x026a}}},
     1100  {0xa7b0, {1|F|D, {0x029e}}},
     1101  {0xa7b1, {1|F|D, {0x0287}}},
     1102  {0xa7b2, {1|F|D, {0x029d}}},
     1103  {0xa7b3, {1|F|D, {0xab53}}},
     1104  {0xa7b4, {1|F|D, {0xa7b5}}},
     1105  {0xa7b6, {1|F|D, {0xa7b7}}},
     1106  {0xab70, {1|F|U, {0x13a0}}},
     1107  {0xab71, {1|F|U, {0x13a1}}},
     1108  {0xab72, {1|F|U, {0x13a2}}},
     1109  {0xab73, {1|F|U, {0x13a3}}},
     1110  {0xab74, {1|F|U, {0x13a4}}},
     1111  {0xab75, {1|F|U, {0x13a5}}},
     1112  {0xab76, {1|F|U, {0x13a6}}},
     1113  {0xab77, {1|F|U, {0x13a7}}},
     1114  {0xab78, {1|F|U, {0x13a8}}},
     1115  {0xab79, {1|F|U, {0x13a9}}},
     1116  {0xab7a, {1|F|U, {0x13aa}}},
     1117  {0xab7b, {1|F|U, {0x13ab}}},
     1118  {0xab7c, {1|F|U, {0x13ac}}},
     1119  {0xab7d, {1|F|U, {0x13ad}}},
     1120  {0xab7e, {1|F|U, {0x13ae}}},
     1121  {0xab7f, {1|F|U, {0x13af}}},
     1122  {0xab80, {1|F|U, {0x13b0}}},
     1123  {0xab81, {1|F|U, {0x13b1}}},
     1124  {0xab82, {1|F|U, {0x13b2}}},
     1125  {0xab83, {1|F|U, {0x13b3}}},
     1126  {0xab84, {1|F|U, {0x13b4}}},
     1127  {0xab85, {1|F|U, {0x13b5}}},
     1128  {0xab86, {1|F|U, {0x13b6}}},
     1129  {0xab87, {1|F|U, {0x13b7}}},
     1130  {0xab88, {1|F|U, {0x13b8}}},
     1131  {0xab89, {1|F|U, {0x13b9}}},
     1132  {0xab8a, {1|F|U, {0x13ba}}},
     1133  {0xab8b, {1|F|U, {0x13bb}}},
     1134  {0xab8c, {1|F|U, {0x13bc}}},
     1135  {0xab8d, {1|F|U, {0x13bd}}},
     1136  {0xab8e, {1|F|U, {0x13be}}},
     1137  {0xab8f, {1|F|U, {0x13bf}}},
     1138  {0xab90, {1|F|U, {0x13c0}}},
     1139  {0xab91, {1|F|U, {0x13c1}}},
     1140  {0xab92, {1|F|U, {0x13c2}}},
     1141  {0xab93, {1|F|U, {0x13c3}}},
     1142  {0xab94, {1|F|U, {0x13c4}}},
     1143  {0xab95, {1|F|U, {0x13c5}}},
     1144  {0xab96, {1|F|U, {0x13c6}}},
     1145  {0xab97, {1|F|U, {0x13c7}}},
     1146  {0xab98, {1|F|U, {0x13c8}}},
     1147  {0xab99, {1|F|U, {0x13c9}}},
     1148  {0xab9a, {1|F|U, {0x13ca}}},
     1149  {0xab9b, {1|F|U, {0x13cb}}},
     1150  {0xab9c, {1|F|U, {0x13cc}}},
     1151  {0xab9d, {1|F|U, {0x13cd}}},
     1152  {0xab9e, {1|F|U, {0x13ce}}},
     1153  {0xab9f, {1|F|U, {0x13cf}}},
     1154  {0xaba0, {1|F|U, {0x13d0}}},
     1155  {0xaba1, {1|F|U, {0x13d1}}},
     1156  {0xaba2, {1|F|U, {0x13d2}}},
     1157  {0xaba3, {1|F|U, {0x13d3}}},
     1158  {0xaba4, {1|F|U, {0x13d4}}},
     1159  {0xaba5, {1|F|U, {0x13d5}}},
     1160  {0xaba6, {1|F|U, {0x13d6}}},
     1161  {0xaba7, {1|F|U, {0x13d7}}},
     1162  {0xaba8, {1|F|U, {0x13d8}}},
     1163  {0xaba9, {1|F|U, {0x13d9}}},
     1164  {0xabaa, {1|F|U, {0x13da}}},
     1165  {0xabab, {1|F|U, {0x13db}}},
     1166  {0xabac, {1|F|U, {0x13dc}}},
     1167  {0xabad, {1|F|U, {0x13dd}}},
     1168  {0xabae, {1|F|U, {0x13de}}},
     1169  {0xabaf, {1|F|U, {0x13df}}},
     1170  {0xabb0, {1|F|U, {0x13e0}}},
     1171  {0xabb1, {1|F|U, {0x13e1}}},
     1172  {0xabb2, {1|F|U, {0x13e2}}},
     1173  {0xabb3, {1|F|U, {0x13e3}}},
     1174  {0xabb4, {1|F|U, {0x13e4}}},
     1175  {0xabb5, {1|F|U, {0x13e5}}},
     1176  {0xabb6, {1|F|U, {0x13e6}}},
     1177  {0xabb7, {1|F|U, {0x13e7}}},
     1178  {0xabb8, {1|F|U, {0x13e8}}},
     1179  {0xabb9, {1|F|U, {0x13e9}}},
     1180  {0xabba, {1|F|U, {0x13ea}}},
     1181  {0xabbb, {1|F|U, {0x13eb}}},
     1182  {0xabbc, {1|F|U, {0x13ec}}},
     1183  {0xabbd, {1|F|U, {0x13ed}}},
     1184  {0xabbe, {1|F|U, {0x13ee}}},
     1185  {0xabbf, {1|F|U, {0x13ef}}},
     1186  {0xfb00, {2|F|ST|SU|I(366), {0x0066, 0x0066}}},
     1187  {0xfb01, {2|F|ST|SU|I(370), {0x0066, 0x0069}}},
     1188  {0xfb02, {2|F|ST|SU|I(374), {0x0066, 0x006c}}},
     1189  {0xfb03, {3|F|ST|SU|I(378), {0x0066, 0x0066, 0x0069}}},
     1190  {0xfb04, {3|F|ST|SU|I(384), {0x0066, 0x0066, 0x006c}}},
     1191  {0xfb05, {2|F|ST|SU|I(390), {0x0073, 0x0074}}},
     1192  {0xfb06, {2|F|ST|SU|I(394), {0x0073, 0x0074}}},
     1193  {0xfb13, {2|F|ST|SU|I(398), {0x0574, 0x0576}}},
     1194  {0xfb14, {2|F|ST|SU|I(402), {0x0574, 0x0565}}},
     1195  {0xfb15, {2|F|ST|SU|I(406), {0x0574, 0x056b}}},
     1196  {0xfb16, {2|F|ST|SU|I(410), {0x057e, 0x0576}}},
     1197  {0xfb17, {2|F|ST|SU|I(414), {0x0574, 0x056d}}},
     1198  {0xff21, {1|F|D, {0xff41}}},
     1199  {0xff22, {1|F|D, {0xff42}}},
     1200  {0xff23, {1|F|D, {0xff43}}},
     1201  {0xff24, {1|F|D, {0xff44}}},
     1202  {0xff25, {1|F|D, {0xff45}}},
     1203  {0xff26, {1|F|D, {0xff46}}},
     1204  {0xff27, {1|F|D, {0xff47}}},
     1205  {0xff28, {1|F|D, {0xff48}}},
     1206  {0xff29, {1|F|D, {0xff49}}},
     1207  {0xff2a, {1|F|D, {0xff4a}}},
     1208  {0xff2b, {1|F|D, {0xff4b}}},
     1209  {0xff2c, {1|F|D, {0xff4c}}},
     1210  {0xff2d, {1|F|D, {0xff4d}}},
     1211  {0xff2e, {1|F|D, {0xff4e}}},
     1212  {0xff2f, {1|F|D, {0xff4f}}},
     1213  {0xff30, {1|F|D, {0xff50}}},
     1214  {0xff31, {1|F|D, {0xff51}}},
     1215  {0xff32, {1|F|D, {0xff52}}},
     1216  {0xff33, {1|F|D, {0xff53}}},
     1217  {0xff34, {1|F|D, {0xff54}}},
     1218  {0xff35, {1|F|D, {0xff55}}},
     1219  {0xff36, {1|F|D, {0xff56}}},
     1220  {0xff37, {1|F|D, {0xff57}}},
     1221  {0xff38, {1|F|D, {0xff58}}},
     1222  {0xff39, {1|F|D, {0xff59}}},
     1223  {0xff3a, {1|F|D, {0xff5a}}},
     1224  {0x10400, {1|F|D, {0x10428}}},
     1225  {0x10401, {1|F|D, {0x10429}}},
     1226  {0x10402, {1|F|D, {0x1042a}}},
     1227  {0x10403, {1|F|D, {0x1042b}}},
     1228  {0x10404, {1|F|D, {0x1042c}}},
     1229  {0x10405, {1|F|D, {0x1042d}}},
     1230  {0x10406, {1|F|D, {0x1042e}}},
     1231  {0x10407, {1|F|D, {0x1042f}}},
     1232  {0x10408, {1|F|D, {0x10430}}},
     1233  {0x10409, {1|F|D, {0x10431}}},
     1234  {0x1040a, {1|F|D, {0x10432}}},
     1235  {0x1040b, {1|F|D, {0x10433}}},
     1236  {0x1040c, {1|F|D, {0x10434}}},
     1237  {0x1040d, {1|F|D, {0x10435}}},
     1238  {0x1040e, {1|F|D, {0x10436}}},
     1239  {0x1040f, {1|F|D, {0x10437}}},
     1240  {0x10410, {1|F|D, {0x10438}}},
     1241  {0x10411, {1|F|D, {0x10439}}},
     1242  {0x10412, {1|F|D, {0x1043a}}},
     1243  {0x10413, {1|F|D, {0x1043b}}},
     1244  {0x10414, {1|F|D, {0x1043c}}},
     1245  {0x10415, {1|F|D, {0x1043d}}},
     1246  {0x10416, {1|F|D, {0x1043e}}},
     1247  {0x10417, {1|F|D, {0x1043f}}},
     1248  {0x10418, {1|F|D, {0x10440}}},
     1249  {0x10419, {1|F|D, {0x10441}}},
     1250  {0x1041a, {1|F|D, {0x10442}}},
     1251  {0x1041b, {1|F|D, {0x10443}}},
     1252  {0x1041c, {1|F|D, {0x10444}}},
     1253  {0x1041d, {1|F|D, {0x10445}}},
     1254  {0x1041e, {1|F|D, {0x10446}}},
     1255  {0x1041f, {1|F|D, {0x10447}}},
     1256  {0x10420, {1|F|D, {0x10448}}},
     1257  {0x10421, {1|F|D, {0x10449}}},
     1258  {0x10422, {1|F|D, {0x1044a}}},
     1259  {0x10423, {1|F|D, {0x1044b}}},
     1260  {0x10424, {1|F|D, {0x1044c}}},
     1261  {0x10425, {1|F|D, {0x1044d}}},
     1262  {0x10426, {1|F|D, {0x1044e}}},
     1263  {0x10427, {1|F|D, {0x1044f}}},
     1264  {0x104b0, {1|F|D, {0x104d8}}},
     1265  {0x104b1, {1|F|D, {0x104d9}}},
     1266  {0x104b2, {1|F|D, {0x104da}}},
     1267  {0x104b3, {1|F|D, {0x104db}}},
     1268  {0x104b4, {1|F|D, {0x104dc}}},
     1269  {0x104b5, {1|F|D, {0x104dd}}},
     1270  {0x104b6, {1|F|D, {0x104de}}},
     1271  {0x104b7, {1|F|D, {0x104df}}},
     1272  {0x104b8, {1|F|D, {0x104e0}}},
     1273  {0x104b9, {1|F|D, {0x104e1}}},
     1274  {0x104ba, {1|F|D, {0x104e2}}},
     1275  {0x104bb, {1|F|D, {0x104e3}}},
     1276  {0x104bc, {1|F|D, {0x104e4}}},
     1277  {0x104bd, {1|F|D, {0x104e5}}},
     1278  {0x104be, {1|F|D, {0x104e6}}},
     1279  {0x104bf, {1|F|D, {0x104e7}}},
     1280  {0x104c0, {1|F|D, {0x104e8}}},
     1281  {0x104c1, {1|F|D, {0x104e9}}},
     1282  {0x104c2, {1|F|D, {0x104ea}}},
     1283  {0x104c3, {1|F|D, {0x104eb}}},
     1284  {0x104c4, {1|F|D, {0x104ec}}},
     1285  {0x104c5, {1|F|D, {0x104ed}}},
     1286  {0x104c6, {1|F|D, {0x104ee}}},
     1287  {0x104c7, {1|F|D, {0x104ef}}},
     1288  {0x104c8, {1|F|D, {0x104f0}}},
     1289  {0x104c9, {1|F|D, {0x104f1}}},
     1290  {0x104ca, {1|F|D, {0x104f2}}},
     1291  {0x104cb, {1|F|D, {0x104f3}}},
     1292  {0x104cc, {1|F|D, {0x104f4}}},
     1293  {0x104cd, {1|F|D, {0x104f5}}},
     1294  {0x104ce, {1|F|D, {0x104f6}}},
     1295  {0x104cf, {1|F|D, {0x104f7}}},
     1296  {0x104d0, {1|F|D, {0x104f8}}},
     1297  {0x104d1, {1|F|D, {0x104f9}}},
     1298  {0x104d2, {1|F|D, {0x104fa}}},
     1299  {0x104d3, {1|F|D, {0x104fb}}},
     1300  {0x10c80, {1|F|D, {0x10cc0}}},
     1301  {0x10c81, {1|F|D, {0x10cc1}}},
     1302  {0x10c82, {1|F|D, {0x10cc2}}},
     1303  {0x10c83, {1|F|D, {0x10cc3}}},
     1304  {0x10c84, {1|F|D, {0x10cc4}}},
     1305  {0x10c85, {1|F|D, {0x10cc5}}},
     1306  {0x10c86, {1|F|D, {0x10cc6}}},
     1307  {0x10c87, {1|F|D, {0x10cc7}}},
     1308  {0x10c88, {1|F|D, {0x10cc8}}},
     1309  {0x10c89, {1|F|D, {0x10cc9}}},
     1310  {0x10c8a, {1|F|D, {0x10cca}}},
     1311  {0x10c8b, {1|F|D, {0x10ccb}}},
     1312  {0x10c8c, {1|F|D, {0x10ccc}}},
     1313  {0x10c8d, {1|F|D, {0x10ccd}}},
     1314  {0x10c8e, {1|F|D, {0x10cce}}},
     1315  {0x10c8f, {1|F|D, {0x10ccf}}},
     1316  {0x10c90, {1|F|D, {0x10cd0}}},
     1317  {0x10c91, {1|F|D, {0x10cd1}}},
     1318  {0x10c92, {1|F|D, {0x10cd2}}},
     1319  {0x10c93, {1|F|D, {0x10cd3}}},
     1320  {0x10c94, {1|F|D, {0x10cd4}}},
     1321  {0x10c95, {1|F|D, {0x10cd5}}},
     1322  {0x10c96, {1|F|D, {0x10cd6}}},
     1323  {0x10c97, {1|F|D, {0x10cd7}}},
     1324  {0x10c98, {1|F|D, {0x10cd8}}},
     1325  {0x10c99, {1|F|D, {0x10cd9}}},
     1326  {0x10c9a, {1|F|D, {0x10cda}}},
     1327  {0x10c9b, {1|F|D, {0x10cdb}}},
     1328  {0x10c9c, {1|F|D, {0x10cdc}}},
     1329  {0x10c9d, {1|F|D, {0x10cdd}}},
     1330  {0x10c9e, {1|F|D, {0x10cde}}},
     1331  {0x10c9f, {1|F|D, {0x10cdf}}},
     1332  {0x10ca0, {1|F|D, {0x10ce0}}},
     1333  {0x10ca1, {1|F|D, {0x10ce1}}},
     1334  {0x10ca2, {1|F|D, {0x10ce2}}},
     1335  {0x10ca3, {1|F|D, {0x10ce3}}},
     1336  {0x10ca4, {1|F|D, {0x10ce4}}},
     1337  {0x10ca5, {1|F|D, {0x10ce5}}},
     1338  {0x10ca6, {1|F|D, {0x10ce6}}},
     1339  {0x10ca7, {1|F|D, {0x10ce7}}},
     1340  {0x10ca8, {1|F|D, {0x10ce8}}},
     1341  {0x10ca9, {1|F|D, {0x10ce9}}},
     1342  {0x10caa, {1|F|D, {0x10cea}}},
     1343  {0x10cab, {1|F|D, {0x10ceb}}},
     1344  {0x10cac, {1|F|D, {0x10cec}}},
     1345  {0x10cad, {1|F|D, {0x10ced}}},
     1346  {0x10cae, {1|F|D, {0x10cee}}},
     1347  {0x10caf, {1|F|D, {0x10cef}}},
     1348  {0x10cb0, {1|F|D, {0x10cf0}}},
     1349  {0x10cb1, {1|F|D, {0x10cf1}}},
     1350  {0x10cb2, {1|F|D, {0x10cf2}}},
     1351  {0x118a0, {1|F|D, {0x118c0}}},
     1352  {0x118a1, {1|F|D, {0x118c1}}},
     1353  {0x118a2, {1|F|D, {0x118c2}}},
     1354  {0x118a3, {1|F|D, {0x118c3}}},
     1355  {0x118a4, {1|F|D, {0x118c4}}},
     1356  {0x118a5, {1|F|D, {0x118c5}}},
     1357  {0x118a6, {1|F|D, {0x118c6}}},
     1358  {0x118a7, {1|F|D, {0x118c7}}},
     1359  {0x118a8, {1|F|D, {0x118c8}}},
     1360  {0x118a9, {1|F|D, {0x118c9}}},
     1361  {0x118aa, {1|F|D, {0x118ca}}},
     1362  {0x118ab, {1|F|D, {0x118cb}}},
     1363  {0x118ac, {1|F|D, {0x118cc}}},
     1364  {0x118ad, {1|F|D, {0x118cd}}},
     1365  {0x118ae, {1|F|D, {0x118ce}}},
     1366  {0x118af, {1|F|D, {0x118cf}}},
     1367  {0x118b0, {1|F|D, {0x118d0}}},
     1368  {0x118b1, {1|F|D, {0x118d1}}},
     1369  {0x118b2, {1|F|D, {0x118d2}}},
     1370  {0x118b3, {1|F|D, {0x118d3}}},
     1371  {0x118b4, {1|F|D, {0x118d4}}},
     1372  {0x118b5, {1|F|D, {0x118d5}}},
     1373  {0x118b6, {1|F|D, {0x118d6}}},
     1374  {0x118b7, {1|F|D, {0x118d7}}},
     1375  {0x118b8, {1|F|D, {0x118d8}}},
     1376  {0x118b9, {1|F|D, {0x118d9}}},
     1377  {0x118ba, {1|F|D, {0x118da}}},
     1378  {0x118bb, {1|F|D, {0x118db}}},
     1379  {0x118bc, {1|F|D, {0x118dc}}},
     1380  {0x118bd, {1|F|D, {0x118dd}}},
     1381  {0x118be, {1|F|D, {0x118de}}},
     1382  {0x118bf, {1|F|D, {0x118df}}},
     1383  {0x1e900, {1|F|D, {0x1e922}}},
     1384  {0x1e901, {1|F|D, {0x1e923}}},
     1385  {0x1e902, {1|F|D, {0x1e924}}},
     1386  {0x1e903, {1|F|D, {0x1e925}}},
     1387  {0x1e904, {1|F|D, {0x1e926}}},
     1388  {0x1e905, {1|F|D, {0x1e927}}},
     1389  {0x1e906, {1|F|D, {0x1e928}}},
     1390  {0x1e907, {1|F|D, {0x1e929}}},
     1391  {0x1e908, {1|F|D, {0x1e92a}}},
     1392  {0x1e909, {1|F|D, {0x1e92b}}},
     1393  {0x1e90a, {1|F|D, {0x1e92c}}},
     1394  {0x1e90b, {1|F|D, {0x1e92d}}},
     1395  {0x1e90c, {1|F|D, {0x1e92e}}},
     1396  {0x1e90d, {1|F|D, {0x1e92f}}},
     1397  {0x1e90e, {1|F|D, {0x1e930}}},
     1398  {0x1e90f, {1|F|D, {0x1e931}}},
     1399  {0x1e910, {1|F|D, {0x1e932}}},
     1400  {0x1e911, {1|F|D, {0x1e933}}},
     1401  {0x1e912, {1|F|D, {0x1e934}}},
     1402  {0x1e913, {1|F|D, {0x1e935}}},
     1403  {0x1e914, {1|F|D, {0x1e936}}},
     1404  {0x1e915, {1|F|D, {0x1e937}}},
     1405  {0x1e916, {1|F|D, {0x1e938}}},
     1406  {0x1e917, {1|F|D, {0x1e939}}},
     1407  {0x1e918, {1|F|D, {0x1e93a}}},
     1408  {0x1e919, {1|F|D, {0x1e93b}}},
     1409  {0x1e91a, {1|F|D, {0x1e93c}}},
     1410  {0x1e91b, {1|F|D, {0x1e93d}}},
     1411  {0x1e91c, {1|F|D, {0x1e93e}}},
     1412  {0x1e91d, {1|F|D, {0x1e93f}}},
     1413  {0x1e91e, {1|F|D, {0x1e940}}},
     1414  {0x1e91f, {1|F|D, {0x1e941}}},
     1415  {0x1e920, {1|F|D, {0x1e942}}},
     1416  {0x1e921, {1|F|D, {0x1e943}}},
     1417#define CaseFold_Locale (*(CaseFold_11_Type (*)[2])(CaseFold_11_Table+1399))
     1418  {0x0049, {1|F|D, {0x0069}}},
     1419  {0x0130, {2|F|D, {0x0069, 0x0307}}},
    11871420};
    11881421
    1189 /* C code produced by gperf version 3.0.3 */
     1422/* ANSI-C code produced by gperf version 3.1 */
    11901423/* Command-line: gperf -7 -k1,2,3 -F,-1 -c -j1 -i1 -t -T -E -C -H onigenc_unicode_CaseFold_11_hash -N onigenc_unicode_CaseFold_11_lookup -n  */
    11911424
    1192 /* maximum key range = 1867, duplicates = 0 */
     1425/* maximum key range = 3623, duplicates = 0 */
    11931426
    11941427#ifdef __GNUC__
     
    12051438  static const unsigned short asso_values[] =
    12061439    {
    1207         12,  212,    5,  217,    6, 1878,  173,   13,    2,   11,
    1208        123,    5, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878,
    1209       1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878,
    1210       1878, 1878, 1878,  220, 1878, 1878, 1878, 1878, 1878, 1878,
    1211       1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878,  382,
    1212       1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878, 1878,
    1213          8,    4,  219,    1, 1878,  343,  607,  274, 1202,  305,
    1214       1362,  209,  259,  412, 1443,  174,  290,   35,  442,   21,
    1215       1434,   70, 1472,  105,  362,  193,  591,   51,    3,    7,
    1216       1414,   86, 1391,  371, 1358,  398, 1456,  149, 1266,  245,
    1217       1263,  135, 1231,  121, 1096,  446,  932,  323, 1033,  428,
    1218       1155,  466, 1084,  991, 1160,  474, 1131,  977,  298,  749,
    1219        990,  491, 1010,  482, 1021,  696,  161,  729,   46,  966,
    1220       1209,  813, 1043,  616,  848,  917, 1019,  594, 1201,  526,
    1221       1127,  540,  943,  900,  171,  774, 1283,  760,  626,  935,
    1222       1025,  554,  288,  955,  103,  788,  423, 1113,   24, 1005,
    1223         20,  711,    9,  573,  358,  668,    5,  885,  228,  649,
    1224        102,  628,  612,  515,  800,  871,   77, 1132,   17, 1072,
    1225          1, 1188,   47, 1276,  244, 1326,  887, 1289,  202,  740,
    1226        258, 1168,  222
     1440         1, 3627,    2,   28,    3,  303,  218,    5,   21,  167,
     1441         2,  199,  194,    7, 3627, 3627, 3627, 3627, 3627, 3627,
     1442      3627, 3627, 3627, 3627, 3627, 3627, 3627,   28, 3627, 3627,
     1443      3627, 3627, 3627, 3627, 3627,  282, 3627, 3627, 3627, 3627,
     1444      3627,  113, 3627, 3627, 3627, 3627, 3627, 3627, 3627, 3627,
     1445      3627,  318, 3627, 3627, 3627, 3627, 3627, 3627, 3627, 1197,
     1446      3627, 3627,  149,   73,  513,    1, 3627, 3627,  267,   17,
     1447      3627, 3627, 3627, 3627, 3627,  286, 3627, 3627,  289,  617,
     1448       291,   28, 1163,  444,   36,  430,  954,  110, 1767,    5,
     1449        11,   22, 1761,  486, 1921,  250, 1746,  122, 1905,  163,
     1450      1716,  262, 1880,   80, 1503,   68, 1704,  157, 1681,  376,
     1451      1673,  209, 1822,  203, 1406,  498, 1622,  362, 1588,  316,
     1452       475,  599, 1228,  538, 1160,  585, 1510,  544,  331,  685,
     1453      1672,  603, 1536,  840, 1684,  786, 1594,  743, 1380,  700,
     1454       142,  839, 1302,  865, 1173, 1329, 1730, 1043, 1449,  969,
     1455      1437, 1108, 1360,  925, 1497,  723,  154,  810,  391, 1083,
     1456      1777, 1047,  436, 1051,   47, 1342,    8,  974,   98, 1318,
     1457       781, 1314,  148, 1403,   39, 1357,   18, 1265,   11,  928,
     1458        92, 1205,    2, 1295,    3, 1181,  187, 1151,  385, 1132,
     1459       107, 1280,    8, 1678,   41,  511,   42, 1655,   78,  294,
     1460       134, 1857,   17,  784,    2, 1113,   57,  496,   52
    12271461    };
    1228   return asso_values[bits_of(code, 2)+65] + asso_values[bits_of(code, 1)] + asso_values[bits_of(code, 0)];
     1462  return asso_values[bits_of(code, 2)+81] + asso_values[bits_of(code, 1)+2] + asso_values[bits_of(code, 0)];
    12291463}
    12301464
    1231 #ifdef __GNUC__
    1232 __inline
    1233 #ifdef __GNUC_STDC_INLINE__
    1234 __attribute__ ((__gnu_inline__))
    1235 #endif
    1236 #endif
    12371465static const CodePointList3 *
    12381466onigenc_unicode_CaseFold_11_lookup(const OnigCodePoint code)
     
    12411469    {
    12421470      MIN_CODE_VALUE = 0x41,
    1243       MAX_CODE_VALUE = 0x118bf,
    1244       TOTAL_KEYWORDS = 1180,
     1471      MAX_CODE_VALUE = 0x1e921,
     1472      TOTAL_KEYWORDS = 1401,
    12451473      MIN_WORD_LENGTH = 3,
    12461474      MAX_WORD_LENGTH = 3,
    1247       MIN_HASH_VALUE = 11,
    1248       MAX_HASH_VALUE = 1877
     1475      MIN_HASH_VALUE = 4,
     1476      MAX_HASH_VALUE = 3626
    12491477    };
    12501478
    12511479  static const short wordlist[] =
    12521480    {
    1253       -1, -1, -1, -1, -1, -1,
     1481      -1, -1, -1, -1,
     1482      /*0x1ffb*/ 816,
     1483      /*0x1fe7*/ 802,
     1484      /*0x017b*/ 118,
     1485      /*0x1f88*/ 729,
     1486      /*0x0408*/ 305,
     1487      /*0x0108*/ 61,
     1488      /*0x10408*/ 1214,
     1489      /*0x0055*/ 19,
     1490      /*0xab88*/ 1112,
     1491      /*0x1f89*/ 730,
     1492      /*0x0409*/ 306,
     1493      /*0x2c67*/ 916,
     1494      /*0x10409*/ 1215,
     1495      /*0x2c08*/ 873,
     1496      /*0xab89*/ 1113,
     1497      /*0x1ff9*/ 814,
     1498      /*0x2c6f*/ 921,
     1499      /*0x0179*/ 117,
     1500      -1,
     1501      /*0x2c09*/ 874,
     1502      /*0x1f8a*/ 731,
     1503      /*0x040a*/ 307,
     1504      /*0x010a*/ 62,
     1505      /*0x1040a*/ 1216,
     1506      /*0x2c88*/ 931,
     1507      /*0xab8a*/ 1114,
     1508      /*0x1f80*/ 721,
     1509      /*0x0400*/ 297,
     1510      /*0x0100*/ 57,
     1511      /*0x10400*/ 1206,
     1512      /*0x2c0a*/ 875,
     1513      /*0xab80*/ 1104,
     1514      /*0x10c88*/ 1290,
     1515      /*0x00d5*/ 47,
     1516      /*0x1f83*/ 724,
     1517      /*0x0403*/ 300,
     1518      /*0x2c00*/ 865,
     1519      /*0x10403*/ 1209,
     1520      /*0x10c89*/ 1291,
     1521      /*0xab83*/ 1107,
     1522      /*0x1ff3*/ 809,
     1523      /*0x2c8a*/ 932,
     1524      /*0x1e908*/ 1373,
     1525      /*0x00df*/ 56,
     1526      /*0x2c03*/ 868,
     1527      /*0x1fd3*/ 791,
     1528      /*0x0053*/ 17,
     1529      /*0x2c80*/ 927,
     1530      /*0x1e909*/ 1374,
     1531      /*0x10c8a*/ 1292,
     1532      /*0x2183*/ 838,
     1533      -1,
     1534      /*0x017f*/ 120,
     1535      -1,
     1536      /*0xa780*/ 1059,
     1537      /*0x10c80*/ 1282,
     1538      -1,
     1539      /*0x017d*/ 119,
     1540      -1,
     1541      /*0x1e90a*/ 1375,
     1542      /*0x2c7f*/ 926,
     1543      -1, -1,
     1544      /*0x10c83*/ 1285,
     1545      /*0x00dd*/ 54,
     1546      /*0x1e900*/ 1365,
     1547      /*0x1f98*/ 745,
     1548      /*0x0418*/ 321,
     1549      /*0x0118*/ 69,
     1550      /*0x10418*/ 1230,
     1551      /*0x037f*/ 233,
     1552      /*0xab98*/ 1128,
     1553      /*0x00d3*/ 45,
     1554      /*0x1e903*/ 1368,
     1555      -1,
     1556      /*0x1e88*/ 607,
     1557      /*0x2c18*/ 889,
     1558      -1,
     1559      /*0x1f96*/ 743,
     1560      /*0x0416*/ 319,
     1561      /*0x0116*/ 68,
     1562      /*0x10416*/ 1228,
     1563      -1,
     1564      /*0xab96*/ 1126,
     1565      -1, -1,
     1566      /*0x2c75*/ 924,
     1567      /*0x2c98*/ 939,
     1568      /*0x2c16*/ 887,
     1569      -1,
     1570      /*0x1fe3*/ 799,
     1571      -1,
     1572      /*0x1e8a*/ 608,
     1573      -1,
     1574      /*0xa798*/ 1068,
     1575      /*0x10c98*/ 1306,
     1576      /*0x1fd7*/ 793,
     1577      /*0x0057*/ 21,
     1578      /*0x1e80*/ 603,
     1579      /*0x2c96*/ 938,
     1580      /*0x2c63*/ 914,
     1581      -1, -1, -1, -1,
     1582      /*0x1e918*/ 1389,
     1583      /*0xa796*/ 1067,
     1584      /*0x10c96*/ 1304,
     1585      /*0x1f86*/ 727,
     1586      /*0x0406*/ 303,
     1587      /*0x0106*/ 60,
     1588      /*0x10406*/ 1212,
     1589      /*0x13fb*/ 527,
     1590      /*0xab86*/ 1110,
     1591      -1,
     1592      /*0x2c6d*/ 919,
     1593      -1,
     1594      /*0x1e916*/ 1387,
     1595      /*0x2c06*/ 871,
     1596      -1,
     1597      /*0x1f90*/ 737,
     1598      /*0x0410*/ 313,
     1599      /*0x0110*/ 65,
     1600      /*0x10410*/ 1222,
     1601      -1,
     1602      /*0xab90*/ 1120,
     1603      /*0x2ced*/ 978,
     1604      /*0x13f9*/ 525,
     1605      -1,
     1606      /*0x2c86*/ 930,
     1607      /*0x2c10*/ 881,
     1608      -1,
     1609      /*0x1ff7*/ 812,
     1610      -1, -1, -1,
     1611      /*0xa786*/ 1062,
     1612      /*0x10c86*/ 1288,
     1613      /*0x1e98*/ 616,
     1614      -1,
     1615      /*0x1fbb*/ 777,
     1616      /*0x2c90*/ 935,
     1617      /*0x013b*/ 85,
     1618      -1, -1,
     1619      /*0xabbb*/ 1163,
     1620      /*0x1fdb*/ 797,
     1621      /*0x1e906*/ 1371,
     1622      /*0xa790*/ 1065,
     1623      /*0x10c90*/ 1298,
     1624      /*0x1e96*/ 614,
     1625      /*0x1e08*/ 543,
     1626      /*0x1fcb*/ 788,
     1627      /*0x004b*/ 9,
     1628      -1,
     1629      /*0x1f9a*/ 747,
     1630      /*0x041a*/ 323,
     1631      /*0x011a*/ 70,
     1632      /*0x1041a*/ 1232,
     1633      /*0x1e910*/ 1381,
     1634      /*0xab9a*/ 1130,
     1635      /*0x1f92*/ 739,
     1636      /*0x0412*/ 315,
     1637      /*0x0112*/ 66,
     1638      /*0x10412*/ 1224,
     1639      /*0x2c1a*/ 891,
     1640      /*0xab92*/ 1122,
     1641      /*0x13fd*/ 529,
     1642      /*0x1e0a*/ 544,
     1643      /*0x0388*/ 235,
     1644      -1,
     1645      /*0x2c12*/ 883,
     1646      /*0x03d5*/ 273,
     1647      /*0x00db*/ 52,
     1648      /*0x1e00*/ 539,
     1649      /*0x0389*/ 236,
     1650      /*0x2c9a*/ 940,
     1651      -1, -1,
     1652      /*0x00cb*/ 37,
     1653      /*0x1e86*/ 606,
     1654      /*0x03f9*/ 292,
     1655      /*0x2c92*/ 936,
     1656      /*0xa79a*/ 1069,
     1657      /*0x10c9a*/ 1308,
     1658      /*0x1fe9*/ 804,
     1659      /*0x038a*/ 237,
     1660      -1, -1,
     1661      /*0xa792*/ 1066,
     1662      /*0x10c92*/ 1300,
     1663      -1,
     1664      /*0x1e90*/ 611,
     1665      -1,
     1666      /*0x1e91a*/ 1391,
     1667      /*0x2c69*/ 917,
     1668      /*0x0508*/ 425,
     1669      -1, -1,
     1670      /*0x0555*/ 481,
     1671      /*0x1e912*/ 1383,
     1672      /*0x1fa0*/ 753,
     1673      /*0x0420*/ 329,
     1674      /*0x0120*/ 73,
     1675      /*0x10420*/ 1238,
     1676      /*0x03f1*/ 288,
     1677      /*0xaba0*/ 1136,
     1678      /*0x1f9e*/ 751,
     1679      /*0x041e*/ 327,
     1680      /*0x011e*/ 72,
     1681      /*0x1041e*/ 1236,
     1682      /*0x2c20*/ 897,
     1683      /*0xab9e*/ 1134,
     1684      /*0x050a*/ 426,
     1685      /*0x1e18*/ 551,
     1686      -1,
     1687      /*0x03ff*/ 296,
     1688      /*0x2c1e*/ 895,
     1689      /*0x048a*/ 362,
     1690      /*0x0500*/ 421,
     1691      /*0x0208*/ 194,
     1692      /*0x03fd*/ 294,
     1693      /*0x2ca0*/ 943,
     1694      -1,
     1695      /*0x0480*/ 361,
     1696      -1,
     1697      /*0x1e16*/ 550,
     1698      /*0x1e9a*/ 618,
     1699      /*0x2c9e*/ 942,
     1700      /*0xa7a0*/ 1072,
     1701      /*0x10ca0*/ 1314,
     1702      -1,
     1703      /*0x0398*/ 249,
     1704      /*0x1e92*/ 612,
     1705      -1,
     1706      /*0xa79e*/ 1071,
     1707      /*0x10c9e*/ 1312,
     1708      /*0x020a*/ 195,
     1709      /*0x0553*/ 479,
     1710      -1,
     1711      /*0x1e920*/ 1397,
     1712      -1,
     1713      /*0x03f5*/ 290,
     1714      /*0x0200*/ 190,
     1715      /*0x0396*/ 247,
     1716      /*0x104d3*/ 1281,
     1717      /*0x1e91e*/ 1395,
     1718      -1,
     1719      /*0x1f8e*/ 735,
     1720      /*0x040e*/ 311,
     1721      /*0x010e*/ 64,
     1722      /*0x1040e*/ 1220,
     1723      -1,
     1724      /*0xab8e*/ 1118,
     1725      -1, -1,
     1726      /*0x1e06*/ 542,
     1727      -1,
     1728      /*0x2c0e*/ 879,
     1729      /*0x0518*/ 433,
     1730      /*0x1f94*/ 741,
     1731      /*0x0414*/ 317,
     1732      /*0x0114*/ 67,
     1733      /*0x10414*/ 1226,
     1734      /*0x0498*/ 369,
     1735      /*0xab94*/ 1124,
     1736      /*0x2165*/ 827,
     1737      /*0x2167*/ 829,
     1738      /*0x1e10*/ 547,
     1739      /*0x2c8e*/ 934,
     1740      /*0x2c14*/ 885,
     1741      /*0x0516*/ 432,
     1742      /*0x216f*/ 837,
     1743      /*0x1ea0*/ 621,
     1744      /*0x0386*/ 234,
     1745      /*0x2161*/ 823,
     1746      /*0x0496*/ 368,
     1747      /*0x10c8e*/ 1296,
     1748      -1,
     1749      /*0x1e9e*/ 620,
     1750      -1,
     1751      /*0x2c94*/ 937,
     1752      -1,
     1753      /*0x0218*/ 202,
     1754      -1, -1,
     1755      /*0x0390*/ 241,
     1756      /*0x1e90e*/ 1379,
     1757      -1,
     1758      /*0x10c94*/ 1302,
     1759      -1,
     1760      /*0xa77b*/ 1056,
     1761      /*0x1ff6*/ 811,
     1762      /*0x0476*/ 356,
     1763      /*0x0176*/ 115,
     1764      /*0x0216*/ 201,
     1765      -1, -1,
     1766      /*0x03f7*/ 291,
     1767      /*0x1e914*/ 1385,
     1768      -1,
     1769      /*0x0506*/ 424,
     1770      -1,
     1771      /*0x1e1a*/ 552,
     1772      -1, -1,
     1773      /*0xa779*/ 1055,
     1774      -1,
     1775      /*0x01d5*/ 167,
     1776      /*0x1e12*/ 548,
     1777      -1,
     1778      /*0x0189*/ 126,
     1779      /*0x0376*/ 232,
     1780      /*0x0510*/ 429,
     1781      /*0x1fa6*/ 759,
     1782      /*0x0426*/ 335,
     1783      /*0x0126*/ 76,
     1784      /*0x10426*/ 1244,
     1785      /*0x0490*/ 365,
     1786      /*0xaba6*/ 1142,
     1787      /*0x1e8e*/ 610,
     1788      /*0x039a*/ 251,
     1789      /*0x018a*/ 127,
     1790      -1,
     1791      /*0x2c26*/ 903,
     1792      /*0x0206*/ 193,
     1793      -1,
     1794      /*0x0392*/ 243,
     1795      -1,
     1796      /*0x1faf*/ 768,
     1797      /*0x042f*/ 344,
     1798      -1,
     1799      /*0x1e94*/ 613,
     1800      /*0x053b*/ 455,
     1801      /*0xabaf*/ 1151,
     1802      /*0x2ca6*/ 946,
     1803      -1,
     1804      /*0x0210*/ 198,
     1805      -1, -1,
     1806      /*0x104bb*/ 1257,
     1807      /*0x01f1*/ 181,
     1808      /*0xa7a6*/ 1075,
     1809      /*0x10ca6*/ 1320,
     1810      -1,
     1811      /*0x054b*/ 471,
     1812      /*0xa77d*/ 1057,
     1813      /*0x01d3*/ 166,
     1814      /*0x051a*/ 434,
     1815      /*0x1e20*/ 555,
     1816      /*0x04cb*/ 395,
     1817      -1,
     1818      /*0x104cb*/ 1273,
     1819      /*0x049a*/ 370,
     1820      /*0x0512*/ 430,
     1821      /*0x1e1e*/ 554,
     1822      /*0x2163*/ 825,
     1823      /*0x023b*/ 217,
     1824      /*0x10caf*/ 1329,
     1825      /*0x0492*/ 366,
     1826      /*0x1fa4*/ 757,
     1827      /*0x0424*/ 333,
     1828      /*0x0124*/ 75,
     1829      /*0x10424*/ 1242,
     1830      /*0x1ef6*/ 664,
     1831      /*0xaba4*/ 1140,
     1832      -1,
     1833      /*0x03a0*/ 257,
     1834      /*0x0198*/ 137,
     1835      -1,
     1836      /*0x2c24*/ 901,
     1837      /*0x216d*/ 835,
     1838      /*0x021a*/ 203,
     1839      /*0x039e*/ 255,
     1840      /*0x1f9c*/ 749,
     1841      /*0x041c*/ 325,
     1842      /*0x011c*/ 71,
     1843      /*0x1041c*/ 1234,
     1844      /*0x0212*/ 199,
     1845      /*0xab9c*/ 1132,
     1846      /*0x0196*/ 135,
     1847      /*0x2ca4*/ 945,
     1848      -1,
     1849      /*0x1feb*/ 806,
     1850      /*0x2c1c*/ 893,
     1851      -1,
     1852      /*0x1ea6*/ 624,
     1853      -1,
     1854      /*0xa7a4*/ 1074,
     1855      /*0x10ca4*/ 1318,
     1856      /*0x004d*/ 11,
     1857      -1, -1,
     1858      /*0x2c6b*/ 918,
     1859      /*0x0520*/ 437,
     1860      /*0x2c9c*/ 941,
     1861      /*0x1e0e*/ 546,
     1862      -1,
     1863      /*0x01d7*/ 168,
     1864      /*0x04a0*/ 373,
     1865      /*0x051e*/ 436,
     1866      -1,
     1867      /*0xa79c*/ 1070,
     1868      /*0x10c9c*/ 1310,
     1869      /*0x2ceb*/ 977,
     1870      /*0x049e*/ 372,
     1871      -1, -1,
     1872      /*0x1e14*/ 549,
     1873      -1,
     1874      /*0x0186*/ 124,
     1875      -1, -1,
     1876      /*0x1e91c*/ 1393,
     1877      /*0x038e*/ 239,
     1878      -1,
     1879      /*0x00cd*/ 39,
     1880      -1,
     1881      /*0x0220*/ 206,
     1882      -1, -1,
     1883      /*0x10bb*/ 511,
     1884      /*0x0190*/ 131,
     1885      -1,
     1886      /*0x021e*/ 205,
     1887      /*0x24bb*/ 844,
     1888      /*0x0394*/ 245,
     1889      -1,
     1890      /*0x1f84*/ 725,
     1891      /*0x0404*/ 301,
     1892      /*0x0104*/ 59,
     1893      /*0x10404*/ 1210,
     1894      /*0x1ea4*/ 623,
     1895      /*0xab84*/ 1108,
     1896      /*0x01f7*/ 185,
     1897      /*0x0051*/ 15,
     1898      -1,
     1899      /*0x24cb*/ 860,
     1900      /*0x2c04*/ 869,
     1901      -1,
     1902      /*0x1e76*/ 598,
     1903      /*0x050e*/ 428,
     1904      /*0x1f82*/ 723,
     1905      /*0x0402*/ 299,
     1906      /*0x0102*/ 58,
     1907      /*0x10402*/ 1208,
     1908      /*0x048e*/ 364,
     1909      /*0xab82*/ 1106,
     1910      /*0x01db*/ 170,
     1911      /*0x2c84*/ 929,
     1912      -1,
     1913      /*0x2169*/ 831,
     1914      /*0x2c02*/ 867,
     1915      /*0x0514*/ 431,
     1916      /*0x01cb*/ 162,
     1917      -1,
     1918      /*0xa784*/ 1061,
     1919      /*0x10c84*/ 1286,
     1920      /*0x0494*/ 367,
     1921      /*0x118bb*/ 1360,
     1922      -1,
     1923      /*0x00d1*/ 43,
     1924      /*0x1e26*/ 558,
     1925      /*0x2c82*/ 928,
     1926      -1,
     1927      /*0x020e*/ 197,
     1928      -1,
     1929      /*0x1e904*/ 1369,
     1930      -1, -1,
     1931      /*0xa782*/ 1060,
     1932      /*0x10c82*/ 1284,
     1933      -1,
     1934      /*0x1fa7*/ 760,
     1935      /*0x0427*/ 336,
     1936      -1,
     1937      /*0x10427*/ 1245,
     1938      /*0x0214*/ 200,
     1939      /*0xaba7*/ 1143,
     1940      -1,
     1941      /*0x03a6*/ 262,
     1942      /*0x1e902*/ 1367,
     1943      /*0x10a0*/ 484,
     1944      /*0x2c27*/ 904,
     1945      /*0x1f8c*/ 733,
     1946      /*0x040c*/ 309,
     1947      /*0x010c*/ 63,
     1948      /*0x1040c*/ 1218,
     1949      -1,
     1950      /*0xab8c*/ 1116,
     1951      /*0x04f6*/ 416,
     1952      -1, -1, -1,
     1953      /*0x2c0c*/ 877,
     1954      /*0x047e*/ 360,
     1955      /*0x1fa2*/ 755,
     1956      /*0x0422*/ 331,
     1957      /*0x0122*/ 74,
     1958      /*0x10422*/ 1240,
     1959      /*0x1e84*/ 605,
     1960      /*0xaba2*/ 1138,
     1961      /*0x10ca7*/ 1321,
     1962      /*0x01a0*/ 141,
     1963      /*0x2c7e*/ 925,
     1964      /*0x2c8c*/ 933,
     1965      /*0x2c22*/ 899,
     1966      /*0x0526*/ 440,
     1967      /*0x1e24*/ 557,
     1968      /*0x1ff2*/ 808,
     1969      /*0x0472*/ 354,
     1970      /*0x0172*/ 113,
     1971      /*0x04a6*/ 376,
     1972      /*0x10c8c*/ 1294,
     1973      /*0x1e82*/ 604,
     1974      /*0x1f08*/ 669,
     1975      -1,
     1976      /*0x2ca2*/ 944,
     1977      /*0x1f6f*/ 720,
     1978      /*0x2c72*/ 923,
     1979      /*0x118a0*/ 1333,
     1980      /*0x1f09*/ 670,
     1981      /*0x1e1c*/ 553,
     1982      /*0x1e90c*/ 1377,
     1983      /*0xa7a2*/ 1073,
     1984      /*0x10ca2*/ 1316,
     1985      /*0x03a4*/ 260,
     1986      /*0xfb00*/ 1168,
     1987      /*0x1f5f*/ 712,
     1988      /*0x0372*/ 231,
     1989      /*0x2cf2*/ 979,
     1990      /*0x0226*/ 209,
     1991      /*0x1f0a*/ 671,
     1992      -1, -1,
     1993      /*0xfb03*/ 1171,
     1994      /*0x1faa*/ 763,
     1995      /*0x042a*/ 339,
     1996      /*0x012a*/ 78,
     1997      -1,
     1998      /*0x039c*/ 253,
     1999      /*0xabaa*/ 1146,
     2000      /*0x1fae*/ 767,
     2001      /*0x042e*/ 343,
     2002      /*0x012e*/ 80,
     2003      -1,
     2004      /*0x2c2a*/ 907,
     2005      /*0xabae*/ 1150,
     2006      -1,
     2007      /*0x1f5d*/ 711,
     2008      /*0x018e*/ 129,
     2009      -1,
     2010      /*0x2c2e*/ 911,
     2011      /*0x0524*/ 439,
     2012      -1, -1,
     2013      /*0x1e8c*/ 609,
     2014      /*0x2caa*/ 948,
     2015      /*0x04a4*/ 375,
     2016      -1, -1, -1,
     2017      /*0x0194*/ 134,
     2018      /*0x2cae*/ 950,
     2019      /*0xa7aa*/ 1077,
     2020      /*0x10caa*/ 1324,
     2021      /*0x1efe*/ 668,
     2022      /*0x051c*/ 435,
     2023      /*0x1ea2*/ 622,
     2024      -1,
     2025      /*0xa7ae*/ 1081,
     2026      /*0x10cae*/ 1328,
     2027      /*0x049c*/ 371,
     2028      -1, -1, -1,
     2029      /*0x1e04*/ 541,
     2030      /*0x0224*/ 208,
     2031      /*0x1f18*/ 677,
     2032      /*0xfb16*/ 1178,
     2033      /*0x2126*/ 818,
     2034      /*0x1ef2*/ 662,
     2035      /*0x054d*/ 473,
     2036      /*0x1fac*/ 765,
     2037      /*0x042c*/ 341,
     2038      /*0x012c*/ 79,
     2039      -1,
     2040      /*0x04cd*/ 396,
     2041      /*0xabac*/ 1148,
     2042      /*0x104cd*/ 1275,
     2043      /*0x1e02*/ 540,
     2044      /*0x021c*/ 204,
     2045      -1,
     2046      /*0x2c2c*/ 909,
     2047      /*0x01f6*/ 184,
     2048      /*0x10a6*/ 490,
     2049      -1,
     2050      /*0x1fa8*/ 761,
     2051      /*0x0428*/ 337,
     2052      /*0x0128*/ 77,
     2053      /*0x03d1*/ 272,
     2054      /*0x1fb2*/ 769,
     2055      /*0xaba8*/ 1144,
     2056      /*0x0132*/ 81,
     2057      /*0x2cac*/ 949,
     2058      /*0xa726*/ 1019,
     2059      /*0xabb2*/ 1154,
     2060      /*0x2c28*/ 905,
     2061      /*0x1eaa*/ 626,
     2062      /*0xfb06*/ 1174,
     2063      /*0x10af*/ 499,
     2064      /*0xa7ac*/ 1079,
     2065      /*0x10cac*/ 1326,
     2066      -1,
     2067      /*0x1eae*/ 628,
     2068      -1,
     2069      /*0x01a6*/ 144,
     2070      /*0x1f6d*/ 718,
     2071      /*0x2ca8*/ 947,
     2072      -1,
     2073      /*0xa688*/ 1007,
     2074      /*0x0504*/ 423,
     2075      /*0x2cb2*/ 952,
     2076      -1, -1,
     2077      /*0xa7a8*/ 1076,
     2078      /*0x10ca8*/ 1322,
     2079      /*0x0551*/ 477,
     2080      -1,
     2081      /*0xa7b2*/ 1084,
     2082      /*0x10cb2*/ 1332,
     2083      /*0x01af*/ 149,
     2084      /*0x1e0c*/ 545,
     2085      /*0x118a6*/ 1339,
     2086      /*0x104d1*/ 1279,
     2087      /*0x0502*/ 422,
     2088      -1,
     2089      /*0xa68a*/ 1008,
     2090      -1,
     2091      /*0x03a7*/ 263,
     2092      -1,
     2093      /*0x10a4*/ 488,
     2094      /*0x1e7e*/ 602,
     2095      /*0xa680*/ 1003,
     2096      /*0x1e22*/ 556,
     2097      /*0x0204*/ 192,
     2098      -1, -1,
     2099      /*0x118af*/ 1348,
     2100      /*0x216b*/ 833,
     2101      /*0x038c*/ 238,
     2102      /*0xa724*/ 1018,
     2103      /*0x1f3b*/ 694,
     2104      -1, -1,
     2105      /*0x1eac*/ 627,
     2106      -1,
     2107      /*0x1e72*/ 596,
     2108      /*0x1f5b*/ 710,
     2109      /*0x0202*/ 191,
     2110      /*0x03fe*/ 295,
     2111      -1,
     2112      /*0x01a4*/ 143,
     2113      -1,
     2114      /*0x1f4b*/ 702,
     2115      -1, -1,
     2116      /*0x1f1a*/ 679,
     2117      -1,
     2118      /*0x1ea8*/ 625,
     2119      /*0x10cd*/ 523,
     2120      /*0xff26*/ 1185,
     2121      -1,
     2122      /*0x1eb2*/ 630,
     2123      /*0x24cd*/ 862,
     2124      -1,
     2125      /*0x019c*/ 138,
     2126      /*0x050c*/ 427,
     2127      -1,
     2128      /*0x118a4*/ 1337,
     2129      -1, -1,
     2130      /*0x048c*/ 363,
     2131      /*0xa698*/ 1015,
     2132      /*0x1e2a*/ 560,
     2133      /*0x0130*/ 1400,
     2134      /*0xff2f*/ 1194,
     2135      -1,
     2136      /*0xabb0*/ 1152,
     2137      /*0x0522*/ 438,
     2138      /*0x1e2e*/ 562,
     2139      /*0x01cd*/ 163,
     2140      /*0x04fe*/ 420,
     2141      -1,
     2142      /*0x04a2*/ 374,
     2143      /*0xa696*/ 1014,
     2144      -1,
     2145      /*0x1f69*/ 714,
     2146      /*0x1fba*/ 776,
     2147      -1, -1,
     2148      /*0x020c*/ 196,
     2149      /*0x03aa*/ 266,
     2150      /*0xabba*/ 1162,
     2151      /*0x2cb0*/ 951,
     2152      -1, -1,
     2153      /*0x04f2*/ 414,
     2154      -1, -1, -1,
     2155      /*0xa7b0*/ 1082,
     2156      /*0x10cb0*/ 1330,
     2157      /*0x0222*/ 207,
     2158      -1, -1, -1,
     2159      /*0xff24*/ 1183,
     2160      -1,
     2161      /*0x2cba*/ 956,
     2162      -1,
     2163      /*0x1fca*/ 787,
     2164      /*0x004a*/ 8,
     2165      /*0x014a*/ 93,
     2166      -1,
     2167      /*0xa686*/ 1006,
     2168      -1, -1, -1,
     2169      /*0x052a*/ 442,
     2170      /*0x0184*/ 123,
     2171      /*0x1e2c*/ 561,
     2172      -1, -1,
     2173      /*0x04aa*/ 378,
     2174      /*0x052e*/ 444,
     2175      /*0x01d1*/ 165,
     2176      /*0xa690*/ 1011,
     2177      -1, -1,
     2178      /*0x04ae*/ 380,
     2179      /*0x1fb8*/ 774,
     2180      /*0x2cca*/ 964,
     2181      -1,
     2182      /*0x0182*/ 122,
     2183      /*0x1e28*/ 559,
     2184      /*0xabb8*/ 1160,
     2185      -1,
     2186      /*0x00ca*/ 36,
     2187      /*0x1e32*/ 564,
     2188      -1, -1, -1,
     2189      /*0x022a*/ 211,
     2190      /*0x10a7*/ 491,
     2191      /*0x1eb0*/ 629,
     2192      -1, -1, -1,
     2193      /*0x022e*/ 213,
     2194      /*0x1f0e*/ 675,
     2195      /*0xfb14*/ 1176,
     2196      /*0x2cb8*/ 955,
     2197      /*0x03a8*/ 264,
     2198      -1, -1, -1, -1, -1, -1,
     2199      /*0x1eba*/ 634,
     2200      -1,
     2201      /*0xa69a*/ 1016,
     2202      -1, -1,
     2203      /*0x01a7*/ 145,
     2204      /*0x052c*/ 443,
     2205      /*0x10a2*/ 486,
     2206      /*0xa692*/ 1012,
     2207      /*0x1fd9*/ 795,
     2208      /*0x0059*/ 23,
     2209      /*0x04ac*/ 379,
     2210      /*0x1ffa*/ 815,
     2211      /*0x047a*/ 358,
     2212      /*0x1fb6*/ 772,
     2213      /*0xa77e*/ 1058,
     2214      /*0x0136*/ 83,
     2215      /*0xa722*/ 1017,
     2216      -1,
     2217      /*0xabb6*/ 1158,
     2218      /*0x0528*/ 441,
     2219      -1,
     2220      /*0x118a7*/ 1340,
     2221      /*0x1eca*/ 642,
     2222      /*0x0532*/ 446,
     2223      /*0x04a8*/ 377,
     2224      /*0x01fe*/ 189,
     2225      -1,
     2226      /*0x01a2*/ 142,
     2227      /*0x04b2*/ 382,
     2228      /*0x022c*/ 212,
     2229      /*0x104b2*/ 1248,
     2230      /*0x212a*/ 819,
     2231      -1, -1,
     2232      /*0x2cb6*/ 954,
     2233      /*0x00d9*/ 50,
     2234      -1,
     2235      /*0x1fcc*/ 789,
     2236      /*0x004c*/ 10,
     2237      /*0x014c*/ 94,
     2238      /*0x01f2*/ 182,
     2239      /*0xa7b6*/ 1087,
     2240      /*0x1eb8*/ 633,
     2241      /*0x0228*/ 210,
     2242      /*0x118a2*/ 1335,
     2243      -1,
     2244      /*0x10aa*/ 494,
     2245      /*0x0232*/ 215,
     2246      -1, -1, -1, -1,
     2247      /*0x10ae*/ 498,
     2248      -1, -1, -1,
     2249      /*0xa72a*/ 1021,
     2250      -1,
     2251      /*0x2ccc*/ 965,
     2252      /*0xff27*/ 1186,
     2253      /*0x1e30*/ 563,
     2254      -1,
     2255      /*0xa72e*/ 1023,
     2256      -1,
     2257      /*0x00cc*/ 38,
     2258      -1,
     2259      /*0x1fbc*/ 778,
     2260      /*0x1fb4*/ 771,
     2261      -1,
     2262      /*0x0134*/ 82,
     2263      /*0x1f2f*/ 690,
     2264      /*0xabbc*/ 1164,
     2265      /*0xabb4*/ 1156,
     2266      /*0x01ae*/ 148,
     2267      -1,
     2268      /*0x1e3a*/ 568,
     2269      -1, -1,
     2270      /*0x03b0*/ 268,
     2271      -1, -1, -1,
     2272      /*0xff22*/ 1181,
     2273      /*0x1efa*/ 666,
     2274      /*0x118aa*/ 1343,
     2275      /*0x1eb6*/ 632,
     2276      -1,
     2277      /*0x2cbc*/ 957,
     2278      /*0x2cb4*/ 953,
     2279      -1,
     2280      /*0x118ae*/ 1347,
     2281      -1,
     2282      /*0x1fbe*/ 779,
     2283      /*0x10ac*/ 496,
     2284      /*0xa68e*/ 1010,
     2285      /*0xa7b4*/ 1086,
     2286      /*0x2132*/ 821,
     2287      /*0xabbe*/ 1166,
     2288      /*0x1e4a*/ 576,
     2289      -1, -1, -1, -1,
     2290      /*0xa72c*/ 1022,
     2291      -1, -1,
     2292      /*0xa694*/ 1013,
     2293      /*0x10a8*/ 492,
     2294      -1,
     2295      /*0x1ecc*/ 643,
     2296      /*0x04b0*/ 381,
     2297      /*0x10b2*/ 502,
     2298      /*0x104b0*/ 1246,
     2299      /*0x2cbe*/ 958,
     2300      /*0x01ac*/ 147,
     2301      /*0x1f1c*/ 681,
     2302      -1,
     2303      /*0xa728*/ 1020,
     2304      /*0x1e38*/ 567,
     2305      -1,
     2306      /*0x053a*/ 454,
     2307      /*0xa732*/ 1024,
     2308      /*0xff2a*/ 1189,
     2309      /*0x13fa*/ 526,
     2310      /*0x1f6b*/ 716,
     2311      /*0x04ba*/ 386,
     2312      -1,
     2313      /*0x104ba*/ 1256,
     2314      /*0xff2e*/ 1193,
     2315      /*0x0230*/ 214,
     2316      /*0x1f4d*/ 704,
     2317      /*0x118ac*/ 1345,
     2318      /*0x01b2*/ 151,
    12542319      -1, -1, -1, -1, -1,
    1255       /*0x10417*/ 1129,
    1256       -1, -1,
    1257       /*0x1ff3*/ 794,
    1258       /*0x10418*/ 1130,
    1259       /*0x1f97*/ 729,
     2320      /*0x1ebc*/ 635,
     2321      /*0x1eb4*/ 631,
     2322      -1, -1, -1,
     2323      /*0x054a*/ 470,
     2324      /*0x023a*/ 216,
     2325      /*0x118a8*/ 1341,
     2326      -1, -1, -1,
     2327      /*0x118b2*/ 1351,
     2328      /*0x104ca*/ 1272,
     2329      -1,
     2330      /*0x1fc8*/ 785,
     2331      /*0x0048*/ 7,
     2332      -1,
     2333      /*0x1fe2*/ 798,
     2334      /*0x0462*/ 346,
     2335      /*0x0162*/ 105,
     2336      /*0xfb04*/ 1172,
     2337      /*0x1e7a*/ 600,
     2338      -1,
     2339      /*0x1e36*/ 566,
     2340      -1,
     2341      /*0x0538*/ 452,
     2342      /*0x1ebe*/ 636,
     2343      /*0x2c62*/ 913,
     2344      -1,
     2345      /*0x024a*/ 226,
     2346      /*0x04b8*/ 385,
     2347      /*0xff2c*/ 1191,
     2348      /*0x104b8*/ 1254,
     2349      -1,
     2350      /*0xfb02*/ 1170,
     2351      /*0x2cc8*/ 963,
     2352      -1, -1,
     2353      /*0x2ce2*/ 976,
     2354      /*0x03fa*/ 293,
     2355      -1,
     2356      /*0x00c8*/ 34,
     2357      -1,
     2358      /*0x1f85*/ 726,
     2359      /*0x0405*/ 302,
     2360      /*0xff28*/ 1187,
     2361      /*0x10405*/ 1211,
     2362      /*0x1e4c*/ 577,
     2363      /*0xab85*/ 1109,
     2364      /*0xff32*/ 1197,
     2365      -1, -1, -1,
     2366      /*0x2c05*/ 870,
     2367      -1,
     2368      /*0x10b0*/ 500,
     2369      -1, -1,
     2370      /*0x1fc4*/ 782,
     2371      /*0x0044*/ 3,
     2372      -1, -1, -1,
     2373      /*0x1fd6*/ 792,
     2374      /*0x0056*/ 20,
     2375      /*0x0156*/ 99,
     2376      -1, -1,
     2377      /*0x0536*/ 450,
     2378      -1,
     2379      /*0x10ba*/ 510,
     2380      /*0x04fa*/ 418,
     2381      /*0x10c85*/ 1287,
     2382      /*0x04b6*/ 384,
     2383      /*0x24ba*/ 843,
     2384      /*0x104b6*/ 1252,
     2385      /*0x1e3c*/ 569,
     2386      /*0x1e34*/ 565,
     2387      -1,
     2388      /*0x2cc4*/ 961,
     2389      /*0xa73a*/ 1028,
     2390      -1,
     2391      /*0x1e905*/ 1370,
     2392      -1,
     2393      /*0x2cd6*/ 970,
     2394      /*0x00c4*/ 30,
     2395      /*0x1ec8*/ 641,
     2396      /*0x1f0c*/ 673,
     2397      -1,
     2398      /*0x1ee2*/ 654,
     2399      /*0x00d6*/ 48,
     2400      -1,
     2401      /*0x054c*/ 472,
     2402      /*0x118b0*/ 1349,
     2403      -1, -1, -1,
     2404      /*0x24ca*/ 859,
     2405      -1,
     2406      /*0x104cc*/ 1274,
     2407      -1,
     2408      /*0xa64a*/ 985,
     2409      /*0x1e3e*/ 570,
     2410      /*0xa74a*/ 1036,
     2411      -1, -1, -1, -1,
     2412      /*0x118ba*/ 1359,
     2413      -1, -1, -1, -1,
     2414      /*0x10b8*/ 508,
     2415      /*0x01ca*/ 161,
     2416      -1,
     2417      /*0x024c*/ 227,
     2418      /*0x24b8*/ 841,
     2419      -1, -1, -1,
     2420      /*0x053c*/ 456,
     2421      /*0x0534*/ 448,
     2422      /*0xa738*/ 1027,
     2423      -1, -1,
     2424      /*0x04bc*/ 387,
     2425      /*0x04b4*/ 383,
     2426      /*0x104bc*/ 1258,
     2427      /*0x104b4*/ 1250,
     2428      /*0x1ec4*/ 639,
     2429      /*0xff30*/ 1195,
     2430      /*0x1fc2*/ 780,
     2431      /*0x0042*/ 1,
     2432      /*0x01b8*/ 155,
     2433      /*0x1ed6*/ 648,
     2434      /*0xa684*/ 1005,
     2435      /*0x0050*/ 14,
     2436      /*0x0150*/ 96,
     2437      /*0x1f2a*/ 685,
     2438      /*0x1fd2*/ 790,
     2439      /*0x0052*/ 16,
     2440      /*0x0152*/ 97,
     2441      -1, -1,
     2442      /*0x1f2e*/ 689,
     2443      /*0xff3a*/ 1205,
     2444      /*0x053e*/ 458,
     2445      -1, -1,
     2446      /*0xa682*/ 1004,
     2447      /*0x118b8*/ 1357,
     2448      /*0x04be*/ 388,
     2449      /*0x2cc2*/ 960,
     2450      /*0x104be*/ 1260,
     2451      -1,
     2452      /*0x10b6*/ 506,
     2453      /*0x2cd0*/ 967,
     2454      -1,
     2455      /*0x00c2*/ 28,
     2456      /*0x24b6*/ 839,
     2457      /*0x2cd2*/ 968,
     2458      /*0x1e48*/ 575,
     2459      /*0x00d0*/ 42,
     2460      -1,
     2461      /*0x1e62*/ 588,
     2462      /*0xa736*/ 1026,
     2463      /*0x00d2*/ 44,
     2464      -1, -1, -1,
     2465      /*0x023e*/ 219,
     2466      /*0x01d9*/ 169,
     2467      /*0x004e*/ 12,
     2468      /*0x014e*/ 95,
     2469      /*0x01fa*/ 187,
     2470      -1, -1, -1, -1, -1, -1,
     2471      -1,
     2472      /*0x03e2*/ 280,
     2473      /*0x24cc*/ 861,
     2474      -1,
     2475      /*0x1f2c*/ 687,
     2476      -1,
     2477      /*0xa64c*/ 986,
     2478      /*0xff38*/ 1203,
     2479      /*0xa74c*/ 1037,
     2480      -1,
     2481      /*0xa68c*/ 1009,
     2482      /*0x2cce*/ 966,
     2483      /*0x118b6*/ 1355,
     2484      -1, -1,
     2485      /*0x1fc6*/ 783,
     2486      /*0x0046*/ 5,
     2487      /*0x00ce*/ 40,
     2488      /*0x1f28*/ 683,
     2489      -1,
     2490      /*0x1ffc*/ 817,
     2491      /*0x047c*/ 359,
     2492      /*0x1ec2*/ 638,
     2493      -1,
     2494      /*0x1e44*/ 573,
     2495      /*0x0548*/ 468,
     2496      /*0x1ed0*/ 645,
     2497      /*0x10bc*/ 512,
     2498      /*0x10b4*/ 504,
     2499      /*0x1e56*/ 582,
     2500      /*0x1ed2*/ 646,
     2501      /*0x24bc*/ 845,
     2502      /*0x104c8*/ 1270,
     2503      /*0x04e2*/ 406,
     2504      -1, -1,
     2505      /*0x2cc6*/ 962,
     2506      /*0xa73c*/ 1029,
     2507      /*0xa734*/ 1025,
     2508      /*0x1fec*/ 807,
     2509      /*0x046c*/ 351,
     2510      /*0x016c*/ 110,
     2511      /*0x00c6*/ 32,
     2512      -1, -1, -1, -1,
     2513      /*0x03d6*/ 274,
     2514      /*0x01bc*/ 156,
     2515      /*0x0248*/ 225,
     2516      /*0xff36*/ 1201,
     2517      -1, -1,
     2518      /*0x10be*/ 514,
     2519      -1, -1, -1,
     2520      /*0x24be*/ 847,
     2521      /*0x1fea*/ 805,
     2522      /*0x046a*/ 350,
     2523      /*0x016a*/ 109,
     2524      -1,
     2525      /*0x1ece*/ 644,
     2526      /*0xa73e*/ 1030,
     2527      -1,
     2528      /*0x118bc*/ 1361,
     2529      /*0x118b4*/ 1353,
     2530      /*0x1fab*/ 764,
     2531      /*0x042b*/ 340,
     2532      /*0x0544*/ 464,
     2533      /*0x1f81*/ 722,
     2534      /*0x0401*/ 298,
     2535      /*0xabab*/ 1147,
     2536      /*0x10401*/ 1207,
     2537      /*0x0556*/ 482,
     2538      /*0xab81*/ 1105,
     2539      /*0x104c4*/ 1266,
     2540      /*0x2c2b*/ 908,
     2541      -1,
     2542      /*0x04d6*/ 400,
     2543      /*0x2c01*/ 866,
     2544      -1,
     2545      /*0x013f*/ 87,
     2546      -1, -1,
     2547      /*0xabbf*/ 1167,
     2548      -1,
     2549      /*0x1ec6*/ 640,
     2550      /*0x1fe8*/ 803,
     2551      /*0x0468*/ 349,
     2552      /*0x0168*/ 108,
     2553      /*0x118be*/ 1363,
     2554      /*0x1efc*/ 667,
     2555      /*0x0244*/ 222,
     2556      -1,
     2557      /*0xa7ab*/ 1078,
     2558      /*0x10cab*/ 1325,
     2559      -1,
     2560      /*0x1e42*/ 572,
     2561      /*0x10c81*/ 1283,
     2562      -1,
     2563      /*0x2162*/ 824,
     2564      /*0x1e50*/ 579,
     2565      -1,
     2566      /*0xff34*/ 1199,
     2567      -1,
     2568      /*0x1e52*/ 580,
     2569      -1,
     2570      /*0x1c88*/ 538,
     2571      /*0x1e901*/ 1366,
     2572      -1,
     2573      /*0x1eec*/ 659,
     2574      /*0x1fe4*/ 800,
     2575      /*0x0464*/ 347,
     2576      /*0x0164*/ 106,
     2577      -1,
     2578      /*0x03c2*/ 269,
     2579      /*0x24c8*/ 857,
     2580      -1,
     2581      /*0x1f3a*/ 693,
     2582      /*0x03d0*/ 271,
     2583      /*0xa648*/ 984,
     2584      /*0x2c64*/ 915,
     2585      /*0xa748*/ 1035,
     2586      /*0xa662*/ 997,
     2587      -1,
     2588      /*0xa762*/ 1048,
     2589      -1, -1, -1,
     2590      /*0x1eea*/ 658,
     2591      /*0x1c80*/ 530,
     2592      /*0x13fc*/ 528,
     2593      -1,
     2594      /*0x01c8*/ 160,
     2595      /*0x1fa9*/ 762,
     2596      /*0x0429*/ 338,
     2597      /*0x01e2*/ 173,
     2598      /*0x1e4e*/ 578,
     2599      /*0x1c83*/ 533,
     2600      /*0xaba9*/ 1145,
     2601      -1,
     2602      /*0x1f4a*/ 701,
     2603      /*0x0542*/ 462,
     2604      -1,
     2605      /*0x2c29*/ 906,
     2606      -1,
     2607      /*0x0550*/ 476,
     2608      -1, -1,
     2609      /*0x104c2*/ 1264,
     2610      /*0x0552*/ 478,
     2611      /*0x04d0*/ 397,
     2612      -1,
     2613      /*0x104d0*/ 1278,
     2614      -1,
     2615      /*0x04d2*/ 398,
     2616      /*0x10c4*/ 520,
     2617      /*0x104d2*/ 1280,
     2618      -1,
     2619      /*0x1ee8*/ 657,
     2620      /*0x24c4*/ 853,
     2621      /*0x1f38*/ 691,
     2622      /*0x1e46*/ 574,
     2623      /*0x10ca9*/ 1323,
     2624      /*0xa644*/ 982,
     2625      -1,
     2626      /*0xa744*/ 1033,
     2627      /*0x1e7c*/ 601,
     2628      -1,
     2629      /*0xa656*/ 991,
     2630      -1,
     2631      /*0xa756*/ 1042,
     2632      /*0x0460*/ 345,
     2633      /*0x0160*/ 104,
     2634      -1, -1, -1,
     2635      /*0x01c4*/ 157,
     2636      -1, -1, -1,
     2637      /*0x2c60*/ 912,
     2638      /*0x054e*/ 474,
     2639      /*0x1ee4*/ 655,
     2640      -1, -1,
     2641      /*0x1e6c*/ 593,
     2642      /*0x046e*/ 352,
     2643      /*0x016e*/ 111,
     2644      /*0x104ce*/ 1276,
     2645      -1, -1,
     2646      /*0x2ce0*/ 975,
     2647      -1, -1, -1,
     2648      /*0x2c6e*/ 920,
     2649      -1, -1,
     2650      /*0x1f59*/ 709,
     2651      -1,
     2652      /*0x1fe6*/ 801,
     2653      /*0x0466*/ 348,
     2654      /*0x0166*/ 107,
     2655      /*0x03ec*/ 285,
     2656      /*0x1e6a*/ 592,
     2657      /*0x024e*/ 228,
     2658      /*0x0546*/ 466,
     2659      -1, -1,
     2660      /*0x013d*/ 86,
     2661      -1,
     2662      /*0x1c86*/ 536,
     2663      /*0xabbd*/ 1165,
     2664      /*0x104c6*/ 1268,
     2665      -1, -1,
     2666      /*0x04fc*/ 419,
     2667      -1, -1,
     2668      /*0x1fda*/ 796,
     2669      /*0x005a*/ 24,
     2670      /*0x015a*/ 101,
     2671      /*0x03ea*/ 284,
     2672      /*0x1fd8*/ 794,
     2673      /*0x0058*/ 22,
     2674      /*0x0158*/ 100,
     2675      -1,
     2676      /*0x1f4c*/ 703,
     2677      -1,
     2678      /*0x10c2*/ 518,
     2679      /*0x0246*/ 224,
     2680      /*0x03ab*/ 267,
     2681      -1,
     2682      /*0x24c2*/ 851,
     2683      /*0x1e68*/ 591,
     2684      /*0x04ec*/ 411,
     2685      -1,
     2686      /*0xa642*/ 981,
     2687      -1,
     2688      /*0xa742*/ 1032,
     2689      /*0x2cda*/ 972,
     2690      /*0xa650*/ 988,
     2691      /*0x1ee0*/ 653,
     2692      /*0xa750*/ 1039,
     2693      /*0x2cd8*/ 971,
     2694      /*0xa652*/ 989,
     2695      /*0x00da*/ 51,
     2696      /*0xa752*/ 1040,
     2697      /*0x0054*/ 18,
     2698      /*0x0154*/ 98,
     2699      /*0x00d8*/ 49,
     2700      -1,
     2701      /*0x03e8*/ 283,
     2702      -1,
     2703      /*0x04ea*/ 410,
     2704      /*0x2cc0*/ 959,
     2705      /*0x1f3c*/ 695,
     2706      /*0x1eee*/ 660,
     2707      /*0x1e64*/ 589,
     2708      -1, -1,
     2709      /*0x00c0*/ 26,
     2710      -1, -1,
     2711      /*0x015e*/ 103,
     2712      /*0x1fc7*/ 784,
     2713      /*0x0047*/ 6,
     2714      /*0x0147*/ 91,
     2715      /*0x2cd4*/ 969,
     2716      -1, -1,
     2717      /*0x053f*/ 459,
     2718      /*0x1ee6*/ 656,
     2719      /*0x24ce*/ 863,
     2720      /*0x00d4*/ 46,
     2721      -1,
     2722      /*0x03e4*/ 281,
     2723      /*0xa64e*/ 987,
     2724      /*0x104bf*/ 1261,
     2725      /*0xa74e*/ 1038,
     2726      -1, -1,
     2727      /*0x1f3e*/ 697,
     2728      /*0x2cde*/ 974,
     2729      /*0x04e8*/ 409,
     2730      /*0x1fb9*/ 775,
     2731      -1,
     2732      /*0x0139*/ 84,
     2733      -1,
     2734      /*0x00de*/ 55,
     2735      /*0xabb9*/ 1161,
     2736      /*0x1eda*/ 650,
     2737      /*0x00c7*/ 33,
     2738      -1, -1,
     2739      /*0x1ed8*/ 649,
     2740      -1, -1,
     2741      /*0x24c6*/ 855,
     2742      /*0x03a9*/ 265,
     2743      -1, -1,
     2744      /*0xa646*/ 983,
     2745      /*0x216c*/ 834,
     2746      /*0xa746*/ 1034,
     2747      -1,
     2748      /*0x1ec0*/ 637,
     2749      -1,
     2750      /*0x04e4*/ 407,
     2751      -1,
     2752      /*0x015c*/ 102,
     2753      /*0x1fa1*/ 754,
     2754      /*0x0421*/ 330,
     2755      -1,
     2756      /*0x10421*/ 1239,
     2757      -1,
     2758      /*0xaba1*/ 1137,
     2759      -1,
     2760      /*0x1e60*/ 587,
     2761      /*0x1ed4*/ 647,
     2762      /*0x01fc*/ 188,
     2763      /*0x2c21*/ 898,
     2764      /*0x216a*/ 832,
     2765      -1, -1, -1,
     2766      /*0xa66c*/ 1002,
     2767      -1,
     2768      /*0xa76c*/ 1053,
     2769      /*0x2cdc*/ 973,
     2770      -1,
     2771      /*0x212b*/ 820,
     2772      -1,
     2773      /*0x1e6e*/ 594,
     2774      /*0x1ede*/ 652,
     2775      /*0x00dc*/ 53,
     2776      /*0x03e0*/ 279,
     2777      -1, -1,
     2778      /*0x01ec*/ 178,
     2779      /*0x10ca1*/ 1315,
     2780      -1,
     2781      /*0x1f48*/ 699,
     2782      /*0x0045*/ 4,
     2783      /*0x0145*/ 90,
     2784      /*0xa66a*/ 1001,
     2785      /*0x10ab*/ 495,
     2786      /*0xa76a*/ 1052,
     2787      /*0x1e66*/ 590,
     2788      -1,
     2789      /*0x1e921*/ 1398,
     2790      /*0x03ee*/ 286,
     2791      /*0x2168*/ 830,
     2792      -1,
     2793      /*0x1fc3*/ 781,
     2794      /*0x0043*/ 2,
     2795      /*0x0143*/ 89,
     2796      -1,
     2797      /*0x01ea*/ 177,
     2798      /*0x10bf*/ 515,
     2799      /*0xfb05*/ 1173,
     2800      -1,
     2801      /*0x0345*/ 229,
     2802      /*0x24bf*/ 848,
     2803      -1, -1,
     2804      /*0x03e6*/ 282,
     2805      /*0x1e5a*/ 584,
     2806      /*0x04e0*/ 405,
     2807      /*0x00c5*/ 31,
     2808      /*0x0181*/ 121,
     2809      /*0x1e58*/ 583,
     2810      -1, -1, -1,
     2811      /*0xa668*/ 1000,
     2812      /*0x2164*/ 826,
     2813      /*0xa768*/ 1051,
     2814      -1, -1,
     2815      /*0x1edc*/ 651,
     2816      /*0x00c3*/ 29,
     2817      /*0x1e40*/ 571,
     2818      /*0x04ee*/ 412,
     2819      /*0x118ab*/ 1344,
     2820      /*0x03da*/ 276,
     2821      -1, -1,
     2822      /*0x01e8*/ 176,
     2823      /*0x03d8*/ 275,
     2824      -1,
     2825      /*0x1f56*/ 708,
     2826      -1, -1, -1,
     2827      /*0x1e54*/ 581,
     2828      -1,
     2829      /*0x118bf*/ 1364,
     2830      /*0x04e6*/ 408,
     2831      /*0xa664*/ 998,
     2832      /*0x053d*/ 457,
     2833      /*0xa764*/ 1049,
     2834      /*0x1fc9*/ 786,
     2835      /*0x0049*/ 1399,
     2836      /*0x0149*/ 92,
     2837      -1, -1,
     2838      /*0x104bd*/ 1259,
     2839      /*0x1f97*/ 744,
    12602840      /*0x0417*/ 320,
    1261       /*0x2c17*/ 873,
    1262       /*0x1e97*/ 600,
    1263       /*0x1f98*/ 730,
    1264       /*0x0418*/ 321,
    1265       /*0x2c18*/ 874,
    1266       /*0x1e98*/ 601,
    1267       /*0x0118*/ 69,
    1268       /*0x0218*/ 202,
    1269       /*0x2c98*/ 924,
    1270       /*0x1e18*/ 536,
     2841      /*0x1e5e*/ 586,
     2842      /*0x10417*/ 1229,
     2843      /*0x01e4*/ 174,
     2844      /*0xab97*/ 1127,
     2845      /*0x10a9*/ 493,
     2846      /*0x1fad*/ 766,
     2847      /*0x042d*/ 342,
     2848      /*0x04da*/ 402,
     2849      /*0x2c17*/ 888,
     2850      -1,
     2851      /*0xabad*/ 1149,
     2852      /*0x04d8*/ 401,
     2853      /*0xff2b*/ 1190,
     2854      -1,
     2855      /*0x023d*/ 218,
     2856      /*0x2c2d*/ 910,
     2857      -1,
     2858      /*0x0540*/ 460,
     2859      /*0x03de*/ 278,
     2860      /*0x00c9*/ 35,
     2861      -1, -1,
     2862      /*0x04c0*/ 389,
     2863      -1,
     2864      /*0x104c0*/ 1262,
     2865      /*0x01a9*/ 146,
     2866      /*0x2160*/ 822,
     2867      /*0x10c97*/ 1305,
     2868      -1, -1,
     2869      /*0x0554*/ 480,
     2870      /*0x1fb3*/ 770,
     2871      -1,
     2872      /*0xa7ad*/ 1080,
     2873      /*0x10cad*/ 1327,
     2874      /*0x04d4*/ 399,
     2875      /*0xabb3*/ 1155,
     2876      /*0x1e917*/ 1388,
     2877      -1, -1, -1,
     2878      /*0x216e*/ 836,
     2879      /*0x118a9*/ 1342,
     2880      -1, -1, -1,
     2881      /*0x1e5c*/ 585,
     2882      -1,
     2883      /*0x0547*/ 467,
     2884      /*0xa660*/ 996,
     2885      /*0x04de*/ 404,
     2886      /*0xa760*/ 1047,
     2887      -1,
     2888      /*0x04c7*/ 393,
     2889      /*0x1f50*/ 705,
     2890      /*0x104c7*/ 1269,
     2891      /*0x2166*/ 828,
     2892      -1,
     2893      /*0x1f52*/ 706,
     2894      /*0xa7b3*/ 1085,
     2895      -1, -1,
     2896      /*0x01e0*/ 172,
     2897      -1,
     2898      /*0x03dc*/ 277,
     2899      -1,
     2900      /*0xa76e*/ 1054,
     2901      /*0x03a1*/ 258,
     2902      /*0x0539*/ 453,
     2903      -1,
     2904      /*0x1e97*/ 615,
     2905      -1, -1, -1, -1,
     2906      /*0x104b9*/ 1255,
     2907      -1,
     2908      /*0x01ee*/ 179,
     2909      /*0x10bd*/ 513,
     2910      /*0xa666*/ 999,
     2911      /*0xff29*/ 1188,
     2912      /*0xa766*/ 1050,
     2913      /*0x24bd*/ 846,
     2914      /*0x1fa5*/ 758,
     2915      /*0x0425*/ 334,
     2916      -1,
     2917      /*0x10425*/ 1243,
     2918      -1,
     2919      /*0xaba5*/ 1141,
     2920      /*0x1fb7*/ 773,
     2921      -1, -1,
     2922      /*0x01e6*/ 175,
     2923      /*0x2c25*/ 902,
     2924      /*0xabb7*/ 1159,
     2925      -1,
     2926      /*0x04dc*/ 403,
     2927      -1,
     2928      /*0xa65a*/ 993,
     2929      -1,
     2930      /*0xa75a*/ 1044,
     2931      -1,
     2932      /*0xa658*/ 992,
     2933      -1,
     2934      /*0xa758*/ 1043,
     2935      /*0x10c0*/ 516,
     2936      -1, -1, -1,
     2937      /*0x24c0*/ 849,
     2938      -1, -1,
     2939      /*0x10ca5*/ 1319,
     2940      /*0xa640*/ 980,
     2941      -1,
     2942      /*0xa740*/ 1031,
     2943      /*0x118bd*/ 1362,
     2944      /*0x1fa3*/ 756,
     2945      /*0x0423*/ 332,
     2946      -1,
     2947      /*0x10423*/ 1241,
     2948      /*0x1c84*/ 534,
     2949      /*0xaba3*/ 1139,
     2950      -1, -1,
     2951      /*0x0545*/ 465,
     2952      /*0xa654*/ 990,
     2953      /*0x2c23*/ 900,
     2954      /*0xa754*/ 1041,
     2955      -1,
     2956      /*0x04c5*/ 392,
     2957      -1,
     2958      /*0x104c5*/ 1267,
     2959      -1, -1,
     2960      /*0x1c82*/ 532,
     2961      /*0x10c7*/ 522,
     2962      /*0x0543*/ 463,
     2963      -1,
     2964      /*0x1f6c*/ 717,
     2965      /*0x24c7*/ 856,
     2966      /*0xa65e*/ 995,
     2967      /*0x04c3*/ 391,
     2968      /*0xa75e*/ 1046,
     2969      /*0x104c3*/ 1265,
     2970      -1,
     2971      /*0x10ca3*/ 1317,
     2972      -1, -1,
     2973      /*0x0245*/ 223,
     2974      /*0x1ff4*/ 810,
     2975      /*0x0474*/ 355,
     2976      /*0x0174*/ 114,
     2977      -1,
     2978      /*0x01de*/ 171,
     2979      -1,
     2980      /*0x10b9*/ 509,
     2981      /*0x01c7*/ 159,
     2982      /*0x1f6a*/ 715,
     2983      /*0xfb01*/ 1169,
     2984      /*0x24b9*/ 842,
     2985      /*0x0243*/ 221,
     2986      -1, -1,
    12712987      /*0x0397*/ 248,
    1272       /*0x1040e*/ 1120,
    1273       /*0x0498*/ 369,
    1274       -1,
    1275       /*0x0398*/ 249,
    1276       /*0xa798*/ 1053,
    1277       /*0x1f8e*/ 720,
    1278       /*0x040e*/ 311,
    1279       /*0x2c0e*/ 864,
    1280       /*0x1e8e*/ 595,
    1281       /*0x010e*/ 64,
    1282       /*0x020e*/ 197,
    1283       /*0x2c8e*/ 919,
    1284       /*0x1e0e*/ 531,
    1285       /*0x03f1*/ 288,
    1286       /*0x1040c*/ 1118,
    1287       /*0x048e*/ 364,
    1288       -1,
    1289       /*0x038e*/ 239,
    1290       /*0xa698*/ 1000,
    1291       /*0x1f8c*/ 718,
    1292       /*0x040c*/ 309,
    1293       /*0x2c0c*/ 862,
    1294       /*0x1e8c*/ 594,
    1295       /*0x010c*/ 63,
    1296       /*0x020c*/ 196,
    1297       /*0x2c8c*/ 918,
    1298       /*0x1e0c*/ 530,
    1299       -1, -1,
    1300       /*0x048c*/ 363,
    1301       /*0x10416*/ 1128,
    1302       /*0x038c*/ 238,
    1303       /*0xa68e*/ 995,
    1304       /*0x2c75*/ 909,
    1305       /*0x013f*/ 87,
    1306       /*0x1f96*/ 728,
    1307       /*0x0416*/ 319,
    1308       /*0x2c16*/ 872,
    1309       /*0x1e96*/ 599,
    1310       /*0x0116*/ 68,
    1311       /*0x0216*/ 201,
    1312       /*0x2c96*/ 923,
    1313       /*0x1e16*/ 535,
    1314       /*0x03f5*/ 290,
    1315       -1,
    1316       /*0x0496*/ 368,
    1317       /*0xa68c*/ 994,
    1318       /*0x0396*/ 247,
    1319       /*0xa796*/ 1052,
    1320       /*0x10410*/ 1122,
     2988      -1, -1,
     2989      /*0x1f2b*/ 686,
     2990      /*0x1f9d*/ 750,
     2991      /*0x041d*/ 326,
     2992      -1,
     2993      /*0x1041d*/ 1235,
     2994      /*0xabb1*/ 1153,
     2995      /*0xab9d*/ 1133,
     2996      /*0x0470*/ 353,
     2997      /*0x0170*/ 112,
     2998      /*0x1f9b*/ 748,
     2999      /*0x041b*/ 324,
     3000      /*0x2c1d*/ 894,
     3001      /*0x1041b*/ 1233,
     3002      /*0x1f3f*/ 698,
     3003      /*0xab9b*/ 1131,
     3004      /*0x10a1*/ 485,
     3005      /*0x2c70*/ 922,
     3006      /*0xabb5*/ 1157,
     3007      /*0x0549*/ 469,
     3008      /*0x2c1b*/ 892,
     3009      /*0xa65c*/ 994,
     3010      /*0x1f68*/ 713,
     3011      /*0xa75c*/ 1045,
     3012      /*0x04c9*/ 394,
     3013      -1,
     3014      /*0x104c9*/ 1271,
     3015      /*0x0370*/ 230,
     3016      /*0x118b9*/ 1358,
     3017      /*0xa7b1*/ 1083,
     3018      /*0x10cb1*/ 1331,
     3019      /*0x10c9d*/ 1311,
     3020      -1,
     3021      /*0x1f99*/ 746,
     3022      /*0x0419*/ 322,
     3023      -1,
     3024      /*0x10419*/ 1231,
     3025      -1,
     3026      /*0xab99*/ 1129,
     3027      /*0x10c9b*/ 1309,
     3028      /*0x00b5*/ 25,
     3029      /*0x1e91d*/ 1394,
     3030      -1,
     3031      /*0x2c19*/ 890,
     3032      -1,
     3033      /*0x1f93*/ 740,
     3034      /*0x0413*/ 316,
     3035      /*0x10c5*/ 521,
     3036      /*0x10413*/ 1225,
     3037      /*0x1e91b*/ 1392,
     3038      /*0xab93*/ 1123,
     3039      /*0x24c5*/ 854,
     3040      -1, -1,
     3041      /*0x118a1*/ 1334,
     3042      /*0x2c13*/ 884,
     3043      /*0x1ef4*/ 663,
     3044      -1,
     3045      /*0x0533*/ 447,
     3046      /*0x10c3*/ 519,
     3047      /*0x0041*/ 0,
     3048      /*0x0141*/ 88,
     3049      /*0x10c99*/ 1307,
     3050      /*0x24c3*/ 852,
     3051      -1,
     3052      /*0x104b3*/ 1249,
     3053      /*0xff39*/ 1204,
     3054      -1,
     3055      /*0x01c5*/ 158,
     3056      /*0x1f29*/ 684,
     3057      -1, -1,
     3058      /*0x1e919*/ 1390,
     3059      -1,
     3060      /*0x10c93*/ 1301,
     3061      /*0x1f8f*/ 736,
     3062      /*0x040f*/ 312,
     3063      -1,
     3064      /*0x1040f*/ 1221,
     3065      /*0x1ef0*/ 661,
     3066      /*0xab8f*/ 1119,
     3067      -1,
     3068      /*0x1e9b*/ 619,
     3069      /*0x03a5*/ 261,
     3070      /*0x1e913*/ 1384,
     3071      /*0x2c0f*/ 880,
     3072      /*0x00c1*/ 27,
     3073      -1, -1, -1,
     3074      /*0x1f8b*/ 732,
     3075      /*0x040b*/ 308,
     3076      /*0xff21*/ 1180,
     3077      /*0x1040b*/ 1217,
     3078      -1,
     3079      /*0xab8b*/ 1115,
     3080      /*0x1f87*/ 728,
     3081      /*0x0407*/ 304,
     3082      /*0xab7b*/ 1099,
     3083      /*0x10407*/ 1213,
     3084      /*0x2c0b*/ 876,
     3085      /*0xab87*/ 1111,
     3086      /*0x0587*/ 483,
     3087      -1,
     3088      /*0x10c8f*/ 1297,
     3089      /*0x1e99*/ 617,
     3090      /*0x2c07*/ 872,
     3091      /*0x004f*/ 13,
     3092      -1, -1, -1,
     3093      /*0x24c9*/ 858,
     3094      -1,
     3095      /*0xab79*/ 1097,
     3096      /*0x1e90f*/ 1380,
     3097      -1,
     3098      /*0x0537*/ 451,
     3099      /*0x03a3*/ 259,
     3100      /*0xa78b*/ 1063,
     3101      /*0x10c8b*/ 1293,
     3102      /*0x10ad*/ 497,
     3103      /*0x1f6e*/ 719,
     3104      -1,
     3105      /*0x104b7*/ 1253,
     3106      -1,
     3107      /*0x10c87*/ 1289,
     3108      -1, -1, -1,
     3109      /*0x1e90b*/ 1376,
     3110      -1, -1,
     3111      /*0x1e74*/ 597,
     3112      /*0x00cf*/ 41,
     3113      /*0x0197*/ 136,
     3114      /*0x1e907*/ 1372,
     3115      -1,
     3116      /*0xab71*/ 1089,
     3117      /*0xab73*/ 1091,
    13213118      -1, -1, -1, -1,
    1322       /*0x1f90*/ 722,
    1323       /*0x0410*/ 313,
    1324       /*0x2c10*/ 866,
    1325       /*0x1e90*/ 596,
    1326       /*0x0110*/ 65,
    1327       /*0x0210*/ 198,
    1328       /*0x2c90*/ 920,
    1329       /*0x1e10*/ 532,
    1330       /*0xa696*/ 999,
    1331       /*0x2c6f*/ 906,
    1332       /*0x0490*/ 365,
    1333       /*0x1041a*/ 1132,
    1334       /*0x0390*/ 241,
    1335       /*0xa790*/ 1050,
    1336       -1, -1,
    1337       /*0x1f9a*/ 732,
    1338       /*0x041a*/ 323,
    1339       /*0x2c1a*/ 876,
    1340       /*0x1e9a*/ 603,
    1341       /*0x011a*/ 70,
    1342       /*0x021a*/ 203,
    1343       /*0x2c9a*/ 925,
    1344       /*0x1e1a*/ 537,
    1345       -1, -1,
    1346       /*0x049a*/ 370,
    1347       /*0xa690*/ 996,
    1348       /*0x039a*/ 251,
    1349       /*0xa79a*/ 1054,
    1350       /*0x10412*/ 1124,
    1351       -1,
    1352       /*0x1fe9*/ 789,
    1353       /*0x1fd9*/ 780,
    1354       /*0x2c69*/ 902,
    1355       /*0x1f92*/ 724,
    1356       /*0x0412*/ 315,
    1357       /*0x2c12*/ 868,
    1358       /*0x1e92*/ 597,
    1359       /*0x0112*/ 66,
    1360       /*0x0212*/ 199,
    1361       /*0x2c92*/ 921,
    1362       /*0x1e12*/ 533,
    1363       /*0xa69a*/ 1001,
    1364       /*0x0059*/ 23,
    1365       /*0x0492*/ 366,
    1366       /*0x10426*/ 1144,
    1367       /*0x0392*/ 243,
    1368       /*0xa792*/ 1051,
    1369       -1, -1,
    1370       /*0x1fa6*/ 744,
    1371       /*0x0426*/ 335,
    1372       /*0x2c26*/ 888,
    1373       /*0x1ea6*/ 609,
    1374       /*0x0126*/ 76,
    1375       /*0x0226*/ 209,
    1376       /*0x2ca6*/ 931,
    1377       /*0x1e26*/ 543,
    1378       /*0x0518*/ 433,
    1379       /*0x10424*/ 1142,
    1380       /*0x04a6*/ 376,
    1381       /*0xa692*/ 997,
    1382       /*0x03a6*/ 262,
    1383       /*0xa7a6*/ 1060,
    1384       /*0x1fa4*/ 742,
    1385       /*0x0424*/ 333,
    1386       /*0x2c24*/ 886,
    1387       /*0x1ea4*/ 608,
    1388       /*0x0124*/ 75,
    1389       /*0x0224*/ 208,
    1390       /*0x2ca4*/ 930,
    1391       /*0x1e24*/ 542,
    1392       /*0x050e*/ 428,
    1393       /*0x10420*/ 1138,
    1394       /*0x04a4*/ 375,
    1395       -1,
    1396       /*0x03a4*/ 260,
    1397       /*0xa7a4*/ 1059,
    1398       /*0x1fa0*/ 738,
    1399       /*0x0420*/ 329,
    1400       /*0x2c20*/ 882,
    1401       /*0x1ea0*/ 606,
    1402       /*0x0120*/ 73,
    1403       /*0x0220*/ 206,
    1404       /*0x2ca0*/ 928,
    1405       /*0x1e20*/ 540,
    1406       /*0x050c*/ 427,
    1407       -1,
    1408       /*0x04a0*/ 373,
    1409       -1,
    1410       /*0x03a0*/ 257,
    1411       /*0xa7a0*/ 1057,
    1412       -1, -1,
    1413       /*0x013d*/ 86,
    1414       /*0x023d*/ 218,
    1415       -1,
    1416       /*0x053f*/ 459,
    1417       /*0x1040a*/ 1116,
    1418       -1, -1, -1,
    1419       /*0x0516*/ 432,
    1420       /*0x1f8a*/ 716,
    1421       /*0x040a*/ 307,
    1422       /*0x2c0a*/ 860,
    1423       /*0x1e8a*/ 593,
    1424       /*0x010a*/ 62,
    1425       /*0x020a*/ 195,
    1426       /*0x2c8a*/ 917,
    1427       /*0x1e0a*/ 529,
    1428       /*0x004f*/ 13,
     3119      /*0x1f3d*/ 696,
     3120      -1, -1,
     3121      /*0x10b3*/ 503,
     3122      -1,
     3123      /*0xab7f*/ 1103,
     3124      -1,
     3125      /*0x03f4*/ 289,
     3126      /*0x1f9f*/ 752,
     3127      /*0x041f*/ 328,
     3128      /*0xab7d*/ 1101,
     3129      /*0x1041f*/ 1237,
     3130      /*0x1e70*/ 595,
     3131      /*0xab9f*/ 1135,
     3132      -1,
     3133      /*0x118ad*/ 1346,
     3134      -1, -1,
     3135      /*0x2c1f*/ 896,
     3136      -1, -1, -1, -1, -1,
     3137      /*0x01b3*/ 152,
     3138      /*0x039d*/ 254,
     3139      -1, -1, -1, -1,
     3140      /*0x03f0*/ 287,
     3141      /*0xab75*/ 1093,
     3142      -1,
     3143      /*0x039b*/ 252,
     3144      -1, -1, -1,
     3145      /*0x10c9f*/ 1313,
     3146      -1,
     3147      /*0x04f4*/ 415,
     3148      /*0x1f54*/ 707,
     3149      /*0x118b3*/ 1352,
     3150      -1,
     3151      /*0x1ff8*/ 813,
     3152      /*0x0478*/ 357,
     3153      /*0x0178*/ 116,
     3154      -1,
     3155      /*0x1e91f*/ 1396,
     3156      -1, -1, -1,
     3157      /*0x0531*/ 445,
     3158      -1,
     3159      /*0xff2d*/ 1192,
     3160      -1,
     3161      /*0x10a5*/ 489,
     3162      /*0x0399*/ 250,
     3163      -1,
     3164      /*0x104b1*/ 1247,
     3165      -1, -1,
     3166      /*0x10b7*/ 507,
     3167      /*0x04f0*/ 413,
     3168      /*0x0535*/ 449,
     3169      -1,
     3170      /*0x24b7*/ 840,
     3171      /*0x1f95*/ 742,
     3172      /*0x0415*/ 318,
     3173      /*0x0393*/ 244,
     3174      /*0x10415*/ 1227,
     3175      /*0x104b5*/ 1251,
     3176      /*0xab95*/ 1125,
     3177      -1, -1, -1, -1,
     3178      /*0x2c15*/ 886,
     3179      -1,
     3180      /*0x1f39*/ 692,
     3181      /*0xff33*/ 1198,
     3182      -1, -1,
     3183      /*0x01b7*/ 154,
     3184      -1, -1, -1, -1,
     3185      /*0xab77*/ 1095,
     3186      -1,
     3187      /*0x10a3*/ 487,
     3188      -1,
     3189      /*0x1f91*/ 738,
     3190      /*0x0411*/ 314,
     3191      /*0x118a5*/ 1338,
     3192      /*0x10411*/ 1223,
     3193      /*0x10c95*/ 1303,
     3194      /*0xab91*/ 1121,
     3195      -1,
     3196      /*0x038f*/ 240,
     3197      /*0x118b7*/ 1356,
     3198      -1,
     3199      /*0x2c11*/ 882,
     3200      -1, -1, -1,
     3201      /*0x1e915*/ 1386,
     3202      -1,
     3203      /*0x1f8d*/ 734,
     3204      /*0x040d*/ 310,
     3205      /*0x0541*/ 461,
     3206      /*0x1040d*/ 1219,
     3207      -1,
     3208      /*0xab8d*/ 1117,
     3209      -1,
     3210      /*0x04c1*/ 390,
     3211      /*0x1ef8*/ 665,
     3212      /*0x104c1*/ 1263,
     3213      /*0x2c0d*/ 878,
     3214      -1, -1,
     3215      /*0x10c91*/ 1299,
     3216      -1, -1, -1, -1, -1, -1,
     3217      /*0x118a3*/ 1336,
     3218      -1,
    14293219      /*0x03cf*/ 270,
    1430       /*0x048a*/ 362,
    1431       -1,
    1432       /*0x038a*/ 237,
    1433       -1,
    1434       /*0x10414*/ 1126,
    1435       -1, -1, -1,
    1436       /*0x0510*/ 429,
    1437       /*0x1f94*/ 726,
    1438       /*0x0414*/ 317,
    1439       /*0x2c14*/ 870,
    1440       /*0x1e94*/ 598,
    1441       /*0x0114*/ 67,
    1442       /*0x0214*/ 200,
    1443       /*0x2c94*/ 922,
    1444       /*0x1e14*/ 534,
    1445       /*0xa68a*/ 993,
    1446       /*0x1ffb*/ 801,
    1447       /*0x0494*/ 367,
    1448       /*0x10406*/ 1112,
    1449       /*0x0394*/ 245,
    1450       /*0x017b*/ 118,
    1451       -1,
    1452       /*0x051a*/ 434,
    1453       /*0x1f86*/ 712,
    1454       /*0x0406*/ 303,
    1455       /*0x2c06*/ 856,
    1456       /*0x1e86*/ 591,
    1457       /*0x0106*/ 60,
    1458       /*0x0206*/ 193,
    1459       /*0x2c86*/ 915,
    1460       /*0x1e06*/ 527,
    1461       -1, -1,
    1462       /*0x0197*/ 136,
    1463       /*0xa694*/ 998,
    1464       /*0x0386*/ 234,
    1465       /*0xa786*/ 1047,
    1466       /*0x0198*/ 137,
    1467       /*0x2c7f*/ 911,
    1468       /*0x1f18*/ 662,
    1469       /*0x017f*/ 120,
    1470       /*0x0512*/ 430,
    1471       /*0x1fe7*/ 787,
    1472       -1,
    1473       /*0x2c67*/ 901,
    1474       /*0x00df*/ 56,
    1475       -1,
    1476       /*0x01f1*/ 181,
    1477       /*0x03ff*/ 296,
    1478       /*0x00dd*/ 54,
    1479       /*0xa686*/ 991,
    1480       /*0x018e*/ 129,
    1481       /*0x1f5f*/ 697,
    1482       /*0x1f0e*/ 660,
    1483       /*0x10422*/ 1140,
    1484       -1,
    1485       /*0x1f5d*/ 696,
    1486       /*0x0526*/ 440,
    1487       /*0x1ff7*/ 797,
    1488       /*0x1fa2*/ 740,
    1489       /*0x0422*/ 331,
    1490       /*0x2c22*/ 884,
    1491       /*0x1ea2*/ 607,
    1492       /*0x0122*/ 74,
    1493       /*0x0222*/ 207,
    1494       /*0x2ca2*/ 929,
    1495       /*0x1e22*/ 541,
    1496       /*0x1f0c*/ 658,
    1497       /*0x10407*/ 1113,
    1498       /*0x04a2*/ 374,
    1499       /*0x03f7*/ 291,
    1500       /*0x0524*/ 439,
    1501       /*0xa7a2*/ 1058,
    1502       /*0x1f87*/ 713,
    1503       /*0x0407*/ 304,
    1504       /*0x2c07*/ 857,
    1505       /*0x017d*/ 119,
    1506       /*0x0587*/ 483,
    1507       /*0x1f3f*/ 683,
    1508       /*0x10bf*/ 515,
    1509       -1,
    1510       /*0x0196*/ 135,
    1511       -1,
    1512       /*0x10402*/ 1108,
    1513       /*0x03fd*/ 294,
    1514       /*0x0520*/ 437,
    1515       -1, -1,
    1516       /*0x1f82*/ 708,
    1517       /*0x0402*/ 299,
    1518       /*0x2c02*/ 852,
    1519       /*0x1e82*/ 589,
    1520       /*0x0102*/ 58,
    1521       /*0x0202*/ 191,
    1522       /*0x2c82*/ 913,
    1523       /*0x1e02*/ 525,
    1524       -1,
    1525       /*0x053d*/ 457,
    1526       -1,
    1527       /*0x1040b*/ 1117,
    1528       /*0x0190*/ 131,
    1529       /*0xa782*/ 1045,
    1530       /*0x1fd7*/ 778,
    1531       -1,
    1532       /*0x1f8b*/ 717,
    1533       /*0x040b*/ 308,
    1534       /*0x2c0b*/ 861,
     3220      /*0x1e911*/ 1382,
     3221      /*0xff25*/ 1184,
     3222      -1,
     3223      /*0x0241*/ 220,
     3224      -1,
     3225      /*0xa78d*/ 1064,
     3226      /*0x10c8d*/ 1295,
     3227      /*0xff37*/ 1202,
     3228      -1,
     3229      /*0x10b1*/ 501,
     3230      -1, -1, -1,
     3231      /*0x01f4*/ 183,
     3232      -1, -1,
     3233      /*0x1e90d*/ 1378,
     3234      -1, -1, -1, -1,
     3235      /*0x10b5*/ 505,
     3236      -1, -1, -1,
     3237      /*0x13f8*/ 524,
    15353238      /*0x054f*/ 475,
    1536       -1,
    1537       /*0x1f6f*/ 705,
    1538       /*0x050a*/ 426,
    1539       -1, -1,
    1540       /*0x0057*/ 21,
    1541       /*0x10404*/ 1110,
    1542       /*0xa682*/ 989,
    1543       -1,
    1544       /*0xa78b*/ 1048,
    1545       /*0x1f1a*/ 664,
    1546       /*0x1f84*/ 710,
    1547       /*0x0404*/ 301,
    1548       /*0x2c04*/ 854,
    1549       /*0x1e84*/ 590,
    1550       /*0x0104*/ 59,
    1551       /*0x0204*/ 192,
    1552       /*0x2c84*/ 914,
    1553       /*0x1e04*/ 526,
    1554       -1,
    1555       /*0x00d9*/ 50,
    1556       /*0x0514*/ 431,
    1557       -1, -1,
    1558       /*0xa784*/ 1046,
    1559       /*0x01d9*/ 169,
    1560       /*0x1f69*/ 699,
    1561       /*0x1f59*/ 694,
    1562       -1,
    1563       /*0x1faa*/ 748,
    1564       /*0x042a*/ 339,
    1565       /*0x2c2a*/ 892,
    1566       /*0x1eaa*/ 611,
    1567       /*0x012a*/ 78,
    1568       /*0x022a*/ 211,
    1569       /*0x2caa*/ 933,
    1570       /*0x1e2a*/ 545,
    1571       /*0x0506*/ 424,
    1572       /*0xa684*/ 990,
    1573       /*0x04aa*/ 378,
    1574       -1,
    1575       /*0x03aa*/ 266,
    1576       /*0xa7aa*/ 1062,
    1577       /*0x01a6*/ 144,
    1578       /*0x10400*/ 1106,
    1579       -1,
    1580       /*0x10a6*/ 490,
    1581       -1, -1,
    1582       /*0x1f80*/ 706,
    1583       /*0x0400*/ 297,
    1584       /*0x2c00*/ 850,
    1585       /*0x1e80*/ 588,
    1586       /*0x0100*/ 57,
    1587       /*0x0200*/ 190,
    1588       /*0x2c80*/ 912,
    1589       /*0x1e00*/ 524,
    1590       /*0x01a4*/ 143,
    1591       -1,
    1592       /*0x0480*/ 361,
    1593       /*0x10a4*/ 488,
    1594       -1,
    1595       /*0xa780*/ 1044,
    1596       /*0x10413*/ 1125,
    1597       /*0x1fe3*/ 784,
    1598       -1,
    1599       /*0x2c63*/ 899,
    1600       -1,
    1601       /*0x1f93*/ 725,
    1602       /*0x0413*/ 316,
    1603       /*0x2c13*/ 869,
    1604       /*0x01a0*/ 141,
    1605       /*0x1041c*/ 1134,
    1606       /*0x0522*/ 438,
    1607       /*0x10a0*/ 484,
    1608       -1,
    1609       /*0xa680*/ 988,
    1610       /*0x1f9c*/ 734,
    1611       /*0x041c*/ 325,
    1612       /*0x2c1c*/ 878,
    1613       /*0x0393*/ 244,
    1614       /*0x011c*/ 71,
    1615       /*0x021c*/ 204,
    1616       /*0x2c9c*/ 926,
    1617       /*0x1e1c*/ 538,
    1618       /*0x1f3d*/ 681,
    1619       /*0x10bd*/ 513,
    1620       /*0x049c*/ 371,
    1621       /*0x00cf*/ 41,
    1622       /*0x039c*/ 253,
    1623       /*0xa79c*/ 1055,
    1624       -1, -1,
     3239      -1, -1, -1,
     3240      /*0x01b1*/ 150,
     3241      /*0x019d*/ 139,
     3242      -1,
     3243      /*0x104cf*/ 1277,
     3244      -1,
     3245      /*0xff23*/ 1182,
     3246      /*0x01f0*/ 180,
     3247      -1, -1, -1, -1, -1,
     3248      /*0x01b5*/ 153,
     3249      -1,
     3250      /*0x039f*/ 256,
     3251      -1, -1,
     3252      /*0x118b1*/ 1350,
     3253      -1, -1, -1, -1, -1, -1,
     3254      -1, -1, -1, -1, -1,
     3255      /*0x118b5*/ 1354,
     3256      /*0xfb17*/ 1179,
     3257      /*0x1e78*/ 599,
     3258      -1, -1, -1,
     3259      /*0x1f49*/ 700,
     3260      -1,
     3261      /*0x10c1*/ 517,
     3262      -1, -1, -1,
     3263      /*0x24c1*/ 850,
     3264      -1, -1,
     3265      /*0x0193*/ 133,
     3266      -1, -1, -1,
     3267      /*0x1f2d*/ 688,
     3268      -1, -1, -1, -1, -1, -1,
     3269      /*0xff31*/ 1196,
     3270      -1, -1, -1, -1, -1, -1,
     3271      -1, -1, -1, -1, -1,
     3272      /*0xff35*/ 1200,
     3273      -1, -1, -1, -1,
     3274      /*0x0395*/ 246,
     3275      -1,
     3276      /*0x018f*/ 130,
     3277      -1, -1, -1, -1, -1, -1,
     3278      /*0x04f8*/ 417,
     3279      -1, -1, -1, -1, -1,
     3280      /*0xab76*/ 1094,
     3281      /*0x24cf*/ 864,
     3282      /*0x018b*/ 128,
     3283      -1, -1, -1, -1, -1,
     3284      /*0x0187*/ 125,
     3285      -1,
     3286      /*0x0391*/ 242,
     3287      -1, -1, -1, -1, -1, -1,
     3288      -1,
    16253289      /*0x01cf*/ 164,
    1626       -1, -1,
    1627       /*0x018a*/ 127,
    1628       -1,
    1629       /*0x1f0a*/ 656,
    1630       /*0x1041e*/ 1136,
    1631       /*0x037f*/ 233,
    1632       -1,
    1633       /*0x0502*/ 422,
    1634       -1,
    1635       /*0x1f9e*/ 736,
    1636       /*0x041e*/ 327,
    1637       /*0x2c1e*/ 880,
    1638       /*0x1e9e*/ 605,
    1639       /*0x011e*/ 72,
    1640       /*0x021e*/ 205,
    1641       /*0x2c9e*/ 927,
    1642       /*0x1e1e*/ 539,
    1643       -1,
    1644       /*0x10408*/ 1114,
    1645       /*0x049e*/ 372,
    1646       /*0x0194*/ 134,
    1647       /*0x039e*/ 255,
    1648       /*0xa79e*/ 1056,
    1649       /*0x1f88*/ 714,
    1650       /*0x0408*/ 305,
    1651       /*0x2c08*/ 858,
    1652       /*0x1e88*/ 592,
    1653       /*0x0108*/ 61,
    1654       /*0x0208*/ 194,
    1655       /*0x2c88*/ 916,
    1656       /*0x1e08*/ 528,
    1657       /*0x0535*/ 449,
    1658       /*0x118bf*/ 1177,
    1659       -1,
    1660       /*0x1fdb*/ 782,
    1661       /*0x0388*/ 235,
    1662       /*0x0186*/ 124,
    1663       -1,
    1664       /*0x0504*/ 423,
    1665       /*0x1fac*/ 750,
    1666       /*0x042c*/ 341,
    1667       /*0x2c2c*/ 894,
    1668       /*0x1eac*/ 612,
    1669       /*0x012c*/ 79,
    1670       /*0x022c*/ 212,
    1671       /*0x2cac*/ 934,
    1672       /*0x1e2c*/ 546,
    1673       -1,
    1674       /*0x1040d*/ 1119,
    1675       /*0x04ac*/ 379,
    1676       /*0xa688*/ 992,
    1677       -1,
    1678       /*0xa7ac*/ 1064,
    1679       /*0x1f8d*/ 719,
    1680       /*0x040d*/ 310,
    1681       /*0x2c0d*/ 863,
    1682       /*0x052a*/ 442,
    1683       /*0x1fa8*/ 746,
    1684       /*0x0428*/ 337,
    1685       /*0x2c28*/ 890,
    1686       /*0x1ea8*/ 610,
    1687       /*0x0128*/ 77,
    1688       /*0x0228*/ 210,
    1689       /*0x2ca8*/ 932,
    1690       /*0x1e28*/ 544,
    1691       -1,
    1692       /*0xa78d*/ 1049,
    1693       /*0x04a8*/ 377,
    1694       /*0x24bf*/ 833,
    1695       /*0x03a8*/ 264,
    1696       /*0xa7a8*/ 1061,
    1697       /*0x01f7*/ 185,
    1698       /*0x01a2*/ 142,
    1699       -1, -1,
    1700       /*0x10a2*/ 486,
    1701       /*0x0500*/ 421,
    1702       /*0x1fae*/ 752,
    1703       /*0x042e*/ 343,
    1704       /*0x2c2e*/ 896,
    1705       /*0x1eae*/ 613,
    1706       /*0x012e*/ 80,
    1707       /*0x022e*/ 213,
    1708       /*0x2cae*/ 935,
    1709       /*0x1e2e*/ 547,
    1710       /*0x1fb2*/ 754,
    1711       /*0x0187*/ 125,
    1712       /*0x04ae*/ 380,
    1713       /*0x1eb2*/ 615,
    1714       /*0x0132*/ 81,
    1715       /*0x0232*/ 215,
    1716       /*0x2cb2*/ 937,
    1717       /*0x1e32*/ 549,
    1718       /*0x1fba*/ 761,
    1719       -1,
    1720       /*0x04b2*/ 382,
    1721       /*0x1eba*/ 619,
    1722       /*0xff26*/ 1085,
    1723       /*0x023a*/ 216,
    1724       /*0x2cba*/ 941,
    1725       /*0x1e3a*/ 553,
    1726       /*0x0182*/ 122,
    1727       /*0x1fb8*/ 759,
    1728       /*0x04ba*/ 386,
    1729       /*0x051c*/ 435,
    1730       /*0x1eb8*/ 618,
    1731       -1,
    1732       /*0x118a6*/ 1152,
    1733       /*0x2cb8*/ 940,
    1734       /*0x1e38*/ 552,
    1735       -1,
    1736       /*0xff24*/ 1083,
    1737       /*0x04b8*/ 385,
    1738       -1, -1,
    1739       /*0x01d7*/ 168,
    1740       /*0xfb17*/ 1079,
    1741       /*0x018b*/ 128,
    1742       -1,
    1743       /*0x1f0b*/ 657,
    1744       /*0x00b5*/ 25,
    1745       /*0x118a4*/ 1150,
    1746       -1, -1, -1,
    1747       /*0x01b5*/ 153,
    1748       /*0x1fec*/ 792,
    1749       /*0x046c*/ 351,
    1750       /*0x10b5*/ 505,
    1751       /*0x1eec*/ 644,
    1752       /*0x016c*/ 110,
    1753       /*0x051e*/ 436,
    1754       /*0x0184*/ 123,
    1755       /*0x1e6c*/ 578,
    1756       -1,
    1757       /*0x118a0*/ 1146,
    1758       /*0x04ec*/ 411,
    1759       /*0x1fca*/ 772,
    1760       /*0x03ec*/ 285,
    1761       -1,
    1762       /*0x1eca*/ 627,
    1763       /*0x014a*/ 93,
    1764       /*0x024a*/ 226,
    1765       /*0x2cca*/ 949,
    1766       /*0x1e4a*/ 561,
    1767       /*0x0508*/ 425,
    1768       -1,
    1769       /*0x118bd*/ 1175,
    1770       /*0x004a*/ 8,
    1771       -1, -1,
    1772       /*0x1fcc*/ 774,
    1773       /*0x1f2a*/ 670,
    1774       /*0x10aa*/ 494,
    1775       /*0x1ecc*/ 628,
    1776       /*0x014c*/ 94,
    1777       /*0x024c*/ 227,
    1778       /*0x2ccc*/ 950,
    1779       /*0x1e4c*/ 562,
    1780       -1, -1,
    1781       /*0x052c*/ 443,
    1782       /*0x004c*/ 10,
    1783       -1,
    1784       /*0xfb16*/ 1078,
    1785       /*0x1fd6*/ 777,
    1786       /*0xa726*/ 1004,
    1787       -1,
    1788       /*0x1ed6*/ 633,
    1789       /*0x0156*/ 99,
    1790       -1,
    1791       /*0x2cd6*/ 955,
    1792       /*0x1e56*/ 567,
    1793       -1, -1,
    1794       /*0x04d6*/ 400,
    1795       /*0x0056*/ 20,
    1796       /*0x03d6*/ 274,
    1797       -1,
    1798       /*0x0528*/ 441,
    1799       /*0xa724*/ 1003,
    1800       -1, -1,
    1801       /*0x24bd*/ 831,
    1802       /*0x1fe2*/ 783,
    1803       /*0x0462*/ 346,
    1804       /*0x2c62*/ 898,
    1805       /*0x1ee2*/ 639,
    1806       /*0x0162*/ 105,
    1807       /*0x0193*/ 133,
    1808       /*0x2ce2*/ 961,
    1809       /*0x1e62*/ 573,
    1810       -1,
    1811       /*0x24cf*/ 849,
    1812       /*0x04e2*/ 406,
    1813       -1,
    1814       /*0x03e2*/ 280,
    1815       /*0x10415*/ 1127,
    1816       /*0x019c*/ 138,
    1817       /*0x052e*/ 444,
    1818       /*0x1f1c*/ 666,
    1819       -1,
    1820       /*0x1f95*/ 727,
    1821       /*0x0415*/ 318,
    1822       /*0x2c15*/ 871,
    1823       /*0x1fc8*/ 770,
    1824       -1,
    1825       /*0x0532*/ 446,
    1826       /*0x1ec8*/ 626,
    1827       -1,
    1828       /*0x0248*/ 225,
    1829       /*0x2cc8*/ 948,
    1830       /*0x1e48*/ 560,
    1831       /*0x10401*/ 1107,
    1832       /*0x0395*/ 246,
    1833       /*0x053a*/ 454,
    1834       /*0x0048*/ 7,
    1835       -1,
    1836       /*0x1f81*/ 707,
    1837       /*0x0401*/ 298,
    1838       /*0x2c01*/ 851,
    1839       /*0xff22*/ 1081,
    1840       /*0x2165*/ 812,
    1841       /*0x1feb*/ 791,
    1842       /*0x0538*/ 452,
    1843       /*0x2c6b*/ 903,
    1844       /*0x2161*/ 808,
    1845       /*0x1fc4*/ 767,
    1846       -1,
    1847       /*0x2ceb*/ 962,
    1848       /*0x1ec4*/ 624,
    1849       /*0x118a2*/ 1148,
    1850       /*0x0244*/ 222,
    1851       /*0x2cc4*/ 946,
    1852       /*0x1e44*/ 558,
    1853       -1, -1,
    1854       /*0x1fd3*/ 776,
    1855       /*0x0044*/ 3,
    1856       /*0x1fea*/ 790,
    1857       /*0x046a*/ 350,
    1858       /*0x1f08*/ 654,
    1859       /*0x1eea*/ 643,
    1860       /*0x016a*/ 109,
    1861       -1,
    1862       /*0x00db*/ 52,
    1863       /*0x1e6a*/ 577,
    1864       /*0xa77b*/ 1041,
    1865       /*0x0053*/ 17,
    1866       /*0x04ea*/ 410,
    1867       /*0x01db*/ 170,
    1868       /*0x03ea*/ 284,
    1869       /*0x1f5b*/ 695,
    1870       -1, -1,
    1871       /*0x01ac*/ 147,
    1872       -1,
    1873       /*0x1f2c*/ 672,
    1874       /*0x10ac*/ 496,
    1875       /*0x054a*/ 470,
    1876       /*0x1fe8*/ 788,
    1877       /*0x0468*/ 349,
    1878       -1,
    1879       /*0x1ee8*/ 642,
    1880       /*0x0168*/ 108,
    1881       -1, -1,
    1882       /*0x1e68*/ 576,
    1883       -1, -1,
    1884       /*0x04e8*/ 409,
    1885       /*0x1f0d*/ 659,
    1886       /*0x03e8*/ 283,
    1887       /*0x054c*/ 472,
    1888       /*0xff35*/ 1100,
    1889       /*0x1f28*/ 668,
    1890       /*0x10a8*/ 492,
    1891       -1, -1,
    1892       /*0x1fe4*/ 785,
    1893       /*0x0464*/ 347,
    1894       /*0x2c64*/ 900,
    1895       /*0x1ee4*/ 640,
    1896       /*0x0164*/ 106,
    1897       /*0x118b5*/ 1167,
    1898       -1,
    1899       /*0x1e64*/ 574,
    1900       /*0x0556*/ 482,
    1901       -1,
    1902       /*0x04e4*/ 407,
    1903       /*0xa722*/ 1002,
    1904       /*0x03e4*/ 281,
    1905       -1,
    1906       /*0x01ae*/ 148,
    1907       /*0x216f*/ 822,
    1908       /*0x1f2e*/ 674,
    1909       /*0x10ae*/ 498,
    1910       -1, -1,
    1911       /*0xff2a*/ 1089,
    1912       -1,
    1913       /*0x01b2*/ 151,
    1914       -1,
    1915       /*0xa77d*/ 1042,
    1916       /*0x10b2*/ 502,
    1917       -1,
    1918       /*0xfb14*/ 1076,
    1919       /*0x1fbc*/ 763,
    1920       -1,
    1921       /*0x118aa*/ 1156,
    1922       /*0x1ebc*/ 620,
    1923       /*0x1f3a*/ 678,
    1924       /*0x10ba*/ 510,
    1925       /*0x2cbc*/ 942,
    1926       /*0x1e3c*/ 554,
    1927       -1, -1,
    1928       /*0x04bc*/ 387,
    1929       /*0x01b8*/ 155,
    1930       /*0x2169*/ 816,
    1931       /*0x1f38*/ 676,
    1932       /*0x10b8*/ 508,
    1933       /*0xfb06*/ 1074,
    1934       /*0x0460*/ 345,
    1935       /*0x2c60*/ 897,
    1936       /*0x1ee0*/ 638,
    1937       /*0x0160*/ 104,
    1938       /*0x0548*/ 468,
    1939       /*0x2ce0*/ 960,
    1940       /*0x1e60*/ 572,
    1941       -1, -1,
    1942       /*0x04e0*/ 405,
    1943       -1,
    1944       /*0x03e0*/ 279,
    1945       -1, -1, -1,
    1946       /*0x2126*/ 803,
    1947       -1,
    1948       /*0x1fbe*/ 764,
    1949       -1,
    1950       /*0x01ec*/ 178,
    1951       /*0x1ebe*/ 621,
    1952       /*0x1f6c*/ 702,
    1953       /*0x023e*/ 219,
    1954       /*0x2cbe*/ 943,
    1955       /*0x1e3e*/ 555,
    1956       /*0x00ca*/ 36,
    1957       /*0x0544*/ 464,
    1958       /*0x04be*/ 388,
    1959       /*0x1ffc*/ 802,
    1960       /*0x047c*/ 359,
    1961       /*0x01ca*/ 161,
    1962       /*0x1efc*/ 652,
    1963       /*0x1f4a*/ 686,
    1964       -1, -1,
    1965       /*0x1e7c*/ 586,
    1966       /*0x0553*/ 479,
    1967       /*0x1fb6*/ 757,
    1968       /*0x04fc*/ 419,
    1969       /*0x00cc*/ 38,
    1970       /*0x1eb6*/ 617,
    1971       /*0x0136*/ 83,
    1972       -1,
    1973       /*0x2cb6*/ 939,
    1974       /*0x1e36*/ 551,
    1975       /*0xa72a*/ 1006,
    1976       /*0x1f4c*/ 688,
    1977       /*0x04b6*/ 384,
    1978       /*0x1fd2*/ 775,
    1979       -1, -1,
    1980       /*0x1ed2*/ 631,
    1981       /*0x0152*/ 97,
    1982       /*0x00d6*/ 48,
    1983       /*0x2cd2*/ 953,
    1984       /*0x1e52*/ 565,
    1985       -1, -1,
    1986       /*0x04d2*/ 398,
    1987       /*0x0052*/ 16,
    1988       /*0x1f56*/ 693,
    1989       -1, -1, -1,
    1990       /*0xfb02*/ 1070,
    1991       /*0x1ed0*/ 630,
    1992       /*0x0150*/ 96,
    1993       -1,
    1994       /*0x2cd0*/ 952,
    1995       /*0x1e50*/ 564,
    1996       -1, -1,
    1997       /*0x04d0*/ 397,
    1998       /*0x0050*/ 14,
    1999       /*0x03d0*/ 271,
    2000       -1,
    2001       /*0x1fda*/ 781,
    2002       /*0x01e2*/ 173,
    2003       -1,
    2004       /*0x1eda*/ 635,
    2005       /*0x015a*/ 101,
    2006       /*0xff2c*/ 1091,
    2007       /*0x2cda*/ 957,
    2008       /*0x1e5a*/ 569,
    2009       -1,
    2010       /*0xa66c*/ 987,
    2011       /*0x04da*/ 402,
    2012       /*0x005a*/ 24,
    2013       /*0x03da*/ 276,
    2014       -1,
    2015       /*0x2c6d*/ 904,
    2016       /*0x118ac*/ 1158,
    2017       -1,
    2018       /*0x00c8*/ 34,
    2019       /*0x2ced*/ 963,
    2020       /*0xfb04*/ 1072,
    2021       /*0xa64a*/ 970,
    2022       -1,
    2023       /*0x01c8*/ 160,
    2024       /*0xff28*/ 1087,
    2025       /*0x1f48*/ 684,
    2026       /*0x1fc2*/ 765,
    2027       -1, -1,
    2028       /*0x1ec2*/ 623,
    2029       -1,
    2030       /*0x053c*/ 456,
    2031       /*0x2cc2*/ 945,
    2032       /*0x1e42*/ 557,
    2033       /*0x118a8*/ 1154,
    2034       /*0xa64c*/ 971,
    2035       /*0x0181*/ 121,
    2036       /*0x0042*/ 1,
    2037       /*0x03c2*/ 269,
    2038       -1,
    2039       /*0x00c4*/ 30,
    2040       -1, -1,
    2041       /*0x1f6b*/ 701,
    2042       /*0xff2e*/ 1093,
    2043       /*0x01c4*/ 157,
    2044       -1,
    2045       /*0x2167*/ 814,
    2046       /*0x10c4*/ 520,
    2047       /*0xa656*/ 976,
    2048       /*0x00d3*/ 45,
    2049       -1,
    2050       /*0xff32*/ 1097,
    2051       -1,
    2052       /*0x118ae*/ 1160,
    2053       /*0x01d3*/ 166,
    2054       -1,
    2055       /*0x01ea*/ 177,
    2056       /*0xfb00*/ 1068,
    2057       /*0x1f6a*/ 700,
    2058       /*0xff3a*/ 1105,
    2059       -1,
    2060       /*0x118b2*/ 1164,
    2061       -1,
    2062       /*0x053e*/ 458,
    2063       /*0x0145*/ 90,
    2064       /*0x0245*/ 223,
    2065       -1,
    2066       /*0xa662*/ 982,
    2067       /*0xff38*/ 1103,
    2068       /*0x118ba*/ 1172,
    2069       /*0x04c5*/ 392,
    2070       /*0x0045*/ 4,
    2071       -1, -1,
    2072       /*0xa72c*/ 1007,
    2073       -1,
    2074       /*0xfb13*/ 1075,
    2075       /*0x01e8*/ 176,
    2076       /*0x118b8*/ 1170,
    2077       /*0x1f68*/ 698,
    2078       -1, -1, -1,
    2079       /*0x0536*/ 450,
    2080       /*0x046e*/ 352,
    2081       /*0x2c6e*/ 905,
    2082       /*0x1eee*/ 645,
    2083       /*0x016e*/ 111,
    2084       /*0xa648*/ 969,
    2085       -1,
    2086       /*0x1e6e*/ 579,
    2087       -1,
    2088       /*0xa728*/ 1005,
    2089       /*0x04ee*/ 412,
    2090       /*0x0552*/ 478,
    2091       /*0x03ee*/ 286,
    2092       /*0x01e4*/ 174,
    2093       /*0x1fe6*/ 786,
    2094       /*0x0466*/ 348,
    2095       /*0x1ff9*/ 799,
    2096       /*0x1ee6*/ 641,
    2097       /*0x0166*/ 107,
    2098       -1,
    2099       /*0x0179*/ 117,
    2100       /*0x1e66*/ 575,
    2101       /*0x24ba*/ 828,
    2102       -1,
    2103       /*0x04e6*/ 408,
    2104       /*0x0550*/ 476,
    2105       /*0x03e6*/ 282,
    2106       /*0xa644*/ 967,
    2107       /*0x03f9*/ 292,
    2108       /*0xa72e*/ 1008,
    2109       -1,
    2110       /*0x24b8*/ 826,
    2111       /*0x1ece*/ 629,
    2112       /*0x014e*/ 95,
    2113       /*0x024e*/ 228,
    2114       /*0x2cce*/ 951,
    2115       /*0x1e4e*/ 563,
    2116       /*0xa732*/ 1009,
    2117       -1,
    2118       /*0xa66a*/ 986,
    2119       /*0x004e*/ 12,
    2120       /*0x01bc*/ 156,
    2121       -1,
    2122       /*0x1f3c*/ 680,
    2123       /*0x10bc*/ 512,
    2124       /*0xa73a*/ 1013,
    2125       /*0x1fc6*/ 768,
    2126       -1, -1,
    2127       /*0x1ec6*/ 625,
    2128       -1,
    2129       /*0x0246*/ 224,
    2130       /*0x2cc6*/ 947,
    2131       /*0x1e46*/ 559,
    2132       /*0xa738*/ 1012,
    2133       -1,
    2134       /*0x01e0*/ 172,
    2135       /*0x0046*/ 5,
    2136       /*0x212a*/ 804,
    2137       -1,
    2138       /*0xa668*/ 985,
    2139       /*0x1fa9*/ 747,
    2140       /*0x0429*/ 338,
    2141       /*0x2c29*/ 891,
    2142       /*0x0542*/ 462,
    2143       -1,
    2144       /*0x24ca*/ 844,
    2145       /*0x1ed4*/ 632,
    2146       /*0x0154*/ 98,
    2147       -1,
    2148       /*0x2cd4*/ 954,
    2149       /*0x1e54*/ 566,
    2150       -1,
    2151       /*0x03a9*/ 265,
    2152       /*0x04d4*/ 399,
    2153       /*0x0054*/ 18,
    2154       /*0x1f3e*/ 682,
    2155       /*0x10be*/ 514,
    2156       /*0xa76c*/ 1038,
    2157       /*0xa664*/ 983,
    2158       /*0x24cc*/ 846,
    2159       -1,
    2160       /*0x04cd*/ 396,
    2161       /*0x004d*/ 11,
    2162       /*0x1fd8*/ 779,
    2163       /*0x01fc*/ 188,
    2164       -1,
    2165       /*0x1ed8*/ 634,
    2166       /*0x0158*/ 100,
    2167       /*0xa74a*/ 1021,
    2168       /*0x2cd8*/ 956,
    2169       /*0x1e58*/ 568,
    2170       -1,
    2171       /*0x2163*/ 810,
    2172       /*0x04d8*/ 401,
    2173       /*0x0058*/ 22,
    2174       /*0x03d8*/ 275,
    2175       /*0x10b6*/ 506,
    2176       /*0x1ec0*/ 622,
    2177       /*0x0545*/ 465,
    2178       /*0x00d2*/ 44,
    2179       /*0x2cc0*/ 944,
    2180       /*0x1e40*/ 556,
    2181       /*0xa74c*/ 1022,
    2182       -1,
    2183       /*0x04c0*/ 389,
    2184       /*0x1fb4*/ 756,
    2185       /*0x1f52*/ 691,
    2186       -1,
    2187       /*0x1eb4*/ 616,
    2188       /*0x0134*/ 82,
    2189       -1,
    2190       /*0x2cb4*/ 938,
    2191       /*0x1e34*/ 550,
    2192       /*0x00d0*/ 42,
    2193       -1,
    2194       /*0x04b4*/ 383,
    2195       /*0xa756*/ 1027,
    2196       -1,
    2197       /*0x1fb7*/ 758,
    2198       -1,
    2199       /*0x1f50*/ 690,
    2200       /*0xa660*/ 981,
    2201       /*0x1eb0*/ 614,
    2202       /*0x0130*/ 1179,
    2203       /*0x0230*/ 214,
    2204       /*0x2cb0*/ 936,
    2205       /*0x1e30*/ 548,
    2206       /*0x00da*/ 51,
    2207       -1,
    2208       /*0x04b0*/ 381,
    2209       -1,
    2210       /*0x03b0*/ 268,
    2211       /*0xa7b0*/ 1066,
    2212       /*0x24c8*/ 842,
    2213       -1,
    2214       /*0xa762*/ 1033,
    2215       /*0x1ede*/ 637,
    2216       /*0x015e*/ 103,
    2217       /*0x1fb9*/ 760,
    2218       /*0x2cde*/ 959,
    2219       /*0x1e5e*/ 571,
    2220       -1,
    2221       /*0x0139*/ 84,
    2222       /*0x04de*/ 404,
    2223       -1,
    2224       /*0x03de*/ 278,
    2225       /*0x1f6d*/ 703,
    2226       /*0x1fc7*/ 769,
    2227       /*0x0345*/ 229,
    2228       /*0x1fbb*/ 762,
    2229       /*0x054e*/ 474,
    2230       /*0x0147*/ 91,
    2231       /*0x00c2*/ 28,
    2232       /*0x013b*/ 85,
    2233       /*0x023b*/ 217,
    2234       /*0x24c4*/ 838,
    2235       /*0xa748*/ 1020,
    2236       /*0x04c7*/ 393,
    2237       /*0x0047*/ 6,
    2238       -1,
    2239       /*0x10c2*/ 518,
    2240       /*0x1fab*/ 749,
    2241       /*0x042b*/ 340,
    2242       /*0x2c2b*/ 893,
    2243       /*0x0055*/ 19,
    2244       /*0x03d5*/ 273,
    2245       -1,
    2246       /*0x0546*/ 466,
    2247       -1, -1,
    2248       /*0xa652*/ 974,
    2249       /*0x1fc3*/ 766,
    2250       -1,
    2251       /*0x03ab*/ 267,
    2252       /*0xa7ab*/ 1063,
    2253       /*0x0143*/ 89,
    2254       /*0x0243*/ 221,
    2255       -1,
    2256       /*0xa744*/ 1018,
    2257       -1, -1,
    2258       /*0x04c3*/ 391,
    2259       /*0x0043*/ 2,
    2260       -1,
    2261       /*0xa650*/ 973,
    2262       /*0x0554*/ 480,
    2263       -1,
    2264       /*0x00c5*/ 31,
    2265       -1, -1,
    2266       /*0xa76a*/ 1037,
    2267       -1,
    2268       /*0x01c5*/ 158,
    2269       /*0x054d*/ 473,
    2270       -1,
    2271       /*0x10c5*/ 521,
    2272       -1, -1,
    2273       /*0xa65a*/ 978,
    2274       /*0x118bc*/ 1174,
    2275       /*0x1ff2*/ 793,
    2276       /*0x0472*/ 354,
    2277       /*0x2c72*/ 908,
    2278       /*0x1ef2*/ 647,
    2279       /*0x0172*/ 113,
    2280       -1,
    2281       /*0x2cf2*/ 964,
    2282       /*0x1e72*/ 581,
    2283       /*0x2132*/ 806,
    2284       -1,
    2285       /*0x04f2*/ 414,
    2286       /*0xa768*/ 1036,
    2287       /*0x1faf*/ 753,
    2288       /*0x042f*/ 344,
    2289       -1,
    2290       /*0x01ee*/ 179,
    2291       /*0x0540*/ 460,
    2292       /*0x1f6e*/ 704,
    2293       -1,
    2294       /*0x10427*/ 1145,
    2295       -1,
    2296       /*0xfb15*/ 1077,
    2297       -1,
    2298       /*0xa642*/ 966,
    2299       /*0x1fa7*/ 745,
    2300       /*0x0427*/ 336,
    2301       /*0x2c27*/ 889,
    2302       /*0x0534*/ 448,
    2303       -1,
    2304       /*0x01e6*/ 175,
    2305       /*0xa764*/ 1034,
    2306       -1,
    2307       /*0x118be*/ 1176,
    2308       -1, -1,
    2309       /*0x24bc*/ 830,
    2310       /*0x03a7*/ 263,
    2311       /*0xfb01*/ 1069,
    2312       -1,
    2313       /*0x00ce*/ 40,
    2314       /*0x0537*/ 451,
    2315       -1,
    2316       /*0xff36*/ 1101,
    2317       -1,
    2318       /*0x1edc*/ 636,
    2319       /*0x015c*/ 102,
    2320       -1,
    2321       /*0x2cdc*/ 958,
    2322       /*0x1e5c*/ 570,
    2323       /*0x216c*/ 819,
    2324       -1,
    2325       /*0x04dc*/ 403,
    2326       /*0x118b6*/ 1168,
    2327       /*0x03dc*/ 277,
    2328       -1,
    2329       /*0x1fcb*/ 773,
    2330       /*0x00c6*/ 32,
    2331       -1,
    2332       /*0xa73c*/ 1014,
    2333       /*0x1fb3*/ 755,
    2334       /*0x0539*/ 453,
    2335       /*0x0470*/ 353,
    2336       /*0x2c70*/ 907,
    2337       /*0x1ef0*/ 646,
    2338       /*0x0170*/ 112,
    2339       /*0x04cb*/ 395,
    2340       /*0x004b*/ 9,
    2341       /*0x1e70*/ 580,
    2342       /*0x24be*/ 832,
    2343       /*0x0547*/ 467,
    2344       /*0x04f0*/ 413,
    2345       /*0x053b*/ 455,
    2346       /*0x03f0*/ 287,
    2347       /*0xa760*/ 1032,
    2348       /*0x00d4*/ 46,
    2349       /*0x0555*/ 481,
    2350       /*0x01a9*/ 146,
    2351       -1,
    2352       /*0x1f29*/ 669,
    2353       /*0x10a9*/ 493,
    2354       -1,
    2355       /*0x1f54*/ 692,
    2356       /*0x00cd*/ 39,
    2357       /*0x1fad*/ 751,
    2358       /*0x042d*/ 342,
    2359       /*0x2c2d*/ 895,
    2360       -1,
    2361       /*0x01cd*/ 163,
    2362       /*0x24b6*/ 824,
    2363       /*0x1f4d*/ 689,
    2364       /*0x10cd*/ 523,
    2365       /*0xa73e*/ 1015,
    2366       -1,
    2367       /*0x0543*/ 463,
    2368       /*0x00d8*/ 49,
    2369       /*0xa666*/ 984,
    2370       /*0xa7ad*/ 1065,
    2371       /*0x047e*/ 360,
    2372       /*0x2c7e*/ 910,
    2373       /*0x1efe*/ 653,
    2374       -1,
    2375       /*0xa7b1*/ 1067,
    2376       -1,
    2377       /*0x1e7e*/ 587,
    2378       -1,
    2379       /*0x00c0*/ 26,
    2380       /*0x04fe*/ 420,
    2381       /*0x2162*/ 809,
    2382       /*0x03fe*/ 295,
    2383       -1,
    2384       /*0xa64e*/ 972,
    2385       /*0xa736*/ 1011,
    2386       -1,
    2387       /*0x10c0*/ 516,
    2388       -1, -1,
    2389       /*0x1ff4*/ 795,
    2390       /*0x0474*/ 355,
    2391       -1,
    2392       /*0x1ef4*/ 648,
    2393       /*0x0174*/ 114,
    2394       -1,
    2395       /*0xa752*/ 1025,
    2396       /*0x1e74*/ 582,
    2397       /*0x10b4*/ 504,
    2398       /*0x10403*/ 1109,
    2399       /*0x04f4*/ 415,
    2400       /*0xa646*/ 968,
    2401       /*0x03f4*/ 289,
    2402       /*0x1fc9*/ 771,
    2403       /*0x1f83*/ 709,
    2404       /*0x0403*/ 300,
    2405       /*0x2c03*/ 853,
    2406       /*0x0149*/ 92,
    2407       /*0x01b7*/ 154,
    2408       -1,
    2409       /*0xa750*/ 1024,
    2410       /*0x10b7*/ 507,
    2411       /*0x10b0*/ 500,
    2412       /*0x04c9*/ 394,
    2413       /*0x0049*/ 1178,
    2414       /*0x0141*/ 88,
    2415       /*0x0241*/ 220,
    2416       -1,
    2417       /*0x00de*/ 55,
    2418       /*0xa654*/ 975,
    2419       /*0x216b*/ 818,
    2420       /*0x04c1*/ 390,
    2421       /*0x0041*/ 0,
    2422       /*0x01de*/ 171,
    2423       /*0xa75a*/ 1029,
    2424       -1,
    2425       /*0x24c2*/ 836,
    2426       -1,
    2427       /*0x10425*/ 1143,
    2428       -1,
    2429       /*0x1f39*/ 677,
    2430       /*0x10b9*/ 509,
    2431       /*0x00c7*/ 33,
    2432       /*0x1fa5*/ 743,
    2433       /*0x0425*/ 334,
    2434       /*0x2c25*/ 887,
    2435       /*0x216a*/ 817,
    2436       /*0x01c7*/ 159,
    2437       /*0x00d5*/ 47,
    2438       /*0xa658*/ 977,
    2439       /*0x10c7*/ 522,
    2440       /*0x1f3b*/ 679,
    2441       /*0x10bb*/ 511,
    2442       /*0x01d5*/ 167,
    2443       -1,
    2444       /*0x03a5*/ 261,
    2445       /*0x0372*/ 231,
    2446       -1, -1,
    2447       /*0xa742*/ 1017,
    2448       /*0xa640*/ 965,
    2449       /*0x054b*/ 471,
    2450       -1,
    2451       /*0x1f2b*/ 671,
    2452       /*0x10ab*/ 495,
    2453       /*0x0533*/ 447,
    2454       /*0x00c3*/ 29,
    2455       /*0x2168*/ 815,
    2456       -1, -1,
    2457       /*0x10423*/ 1141,
    2458       /*0x24c5*/ 839,
    2459       -1,
    2460       /*0x10421*/ 1139,
    2461       /*0x10c3*/ 519,
    2462       /*0x1fa3*/ 741,
    2463       /*0x0423*/ 332,
    2464       /*0x2c23*/ 885,
    2465       /*0x1fa1*/ 739,
    2466       /*0x0421*/ 330,
    2467       /*0x2c21*/ 883,
    2468       -1, -1, -1, -1, -1,
    2469       /*0x2164*/ 811,
    2470       /*0x03a3*/ 259,
    2471       /*0x1ff6*/ 796,
    2472       /*0x0476*/ 356,
    2473       /*0x03a1*/ 258,
    2474       /*0x1ef6*/ 649,
    2475       /*0x0176*/ 115,
    2476       -1,
    2477       /*0x0531*/ 445,
    2478       /*0x1e76*/ 583,
    2479       -1, -1,
    2480       /*0x04f6*/ 416,
    2481       /*0xa65e*/ 980,
    2482       /*0x01f2*/ 182,
    2483       /*0x1ffa*/ 800,
    2484       /*0x047a*/ 358,
    2485       -1,
    2486       /*0x1efa*/ 651,
    2487       -1,
    2488       /*0x0051*/ 15,
    2489       /*0x03d1*/ 272,
    2490       /*0x1e7a*/ 585,
    2491       /*0xff29*/ 1088,
    2492       -1,
    2493       /*0x04fa*/ 418,
    2494       /*0x01af*/ 149,
    2495       /*0x03fa*/ 293,
    2496       /*0x1f2f*/ 675,
    2497       /*0x10af*/ 499,
    2498       /*0x0370*/ 230,
    2499       /*0xa76e*/ 1039,
    2500       -1,
    2501       /*0x118a9*/ 1155,
    2502       -1, -1, -1,
    2503       /*0x24ce*/ 848,
    2504       /*0x01a7*/ 145,
    2505       -1, -1,
    2506       /*0x10a7*/ 491,
    2507       -1,
    2508       /*0x2160*/ 807,
    2509       -1,
    2510       /*0xa766*/ 1035,
    2511       -1,
    2512       /*0xa779*/ 1040,
    2513       -1,
    2514       /*0x0549*/ 469,
    2515       /*0x00dc*/ 53,
    2516       -1,
    2517       /*0x1ff8*/ 798,
    2518       /*0x0478*/ 357,
    2519       /*0x24c6*/ 840,
    2520       /*0x1ef8*/ 650,
    2521       /*0x0178*/ 116,
    2522       /*0x0541*/ 461,
    2523       -1,
    2524       /*0x1e78*/ 584,
    2525       /*0xa74e*/ 1023,
    2526       -1,
    2527       /*0x04f8*/ 417,
    2528       -1,
    2529       /*0x00cb*/ 37,
    2530       -1, -1, -1,
    2531       /*0xff34*/ 1099,
    2532       /*0x01cb*/ 162,
    2533       -1,
    2534       /*0x1f4b*/ 687,
    2535       -1,
    2536       /*0x01b3*/ 152,
    2537       /*0x01f0*/ 180,
    2538       -1,
    2539       /*0x10b3*/ 503,
    2540       /*0xa746*/ 1019,
    2541       /*0x118b4*/ 1166,
    2542       /*0x1041d*/ 1135,
    2543       /*0x24cd*/ 847,
    2544       /*0xff37*/ 1102,
    2545       /*0xff30*/ 1095,
    2546       /*0x10405*/ 1111,
    2547       /*0x1f9d*/ 735,
    2548       /*0x041d*/ 326,
    2549       /*0x2c1d*/ 879,
    2550       -1,
    2551       /*0x1f85*/ 711,
    2552       /*0x0405*/ 302,
    2553       /*0x2c05*/ 855,
    2554       /*0x118b7*/ 1169,
    2555       /*0x118b0*/ 1162,
    2556       -1, -1,
    2557       /*0xa754*/ 1026,
    2558       /*0x039d*/ 254,
    2559       -1, -1,
    2560       /*0x1f2d*/ 673,
    2561       /*0x10ad*/ 497,
    2562       /*0xff39*/ 1104,
    2563       /*0x01b1*/ 150,
    2564       /*0x24c0*/ 834,
    2565       -1,
    2566       /*0x10b1*/ 501,
     3290      -1, -1, -1, -1, -1, -1,
     3291      -1, -1, -1, -1, -1, -1,
     3292      -1, -1, -1, -1, -1, -1,
     3293      -1, -1, -1, -1, -1, -1,
     3294      -1, -1, -1, -1, -1, -1,
     3295      -1, -1, -1, -1, -1, -1,
     3296      -1, -1, -1, -1, -1, -1,
     3297      -1, -1,
     3298      /*0x019f*/ 140,
     3299      -1, -1, -1, -1, -1, -1,
     3300      -1, -1, -1, -1, -1, -1,
     3301      -1, -1, -1, -1, -1, -1,
     3302      -1, -1, -1, -1, -1, -1,
     3303      -1,
     3304      /*0x1c85*/ 535,
     3305      -1, -1, -1, -1, -1, -1,
     3306      -1, -1,
     3307      /*0x01f8*/ 186,
     3308      -1, -1, -1, -1, -1, -1,
     3309      -1, -1, -1, -1, -1, -1,
     3310      -1, -1, -1, -1, -1, -1,
     3311      -1, -1, -1, -1, -1, -1,
     3312      -1,
     3313      /*0x1f1d*/ 682,
     3314      -1, -1, -1, -1, -1, -1,
     3315      -1,
     3316      /*0x1f1b*/ 680,
     3317      -1, -1, -1, -1, -1, -1,
     3318      -1, -1, -1, -1, -1, -1,
     3319      -1,
     3320      /*0x0191*/ 132,
     3321      -1, -1, -1, -1, -1, -1,
     3322      -1, -1,
     3323      /*0x1f19*/ 678,
     3324      /*0xfb13*/ 1175,
     3325      -1, -1, -1, -1, -1, -1,
     3326      -1, -1, -1, -1, -1, -1,
     3327      -1, -1, -1, -1, -1, -1,
     3328      -1, -1, -1, -1, -1, -1,
     3329      -1, -1, -1, -1, -1, -1,
     3330      -1, -1, -1, -1, -1, -1,
    25673331      -1, -1, -1, -1,
    2568       /*0x01fe*/ 189,
    2569       /*0x118b9*/ 1171,
    2570       /*0x1041b*/ 1133,
    2571       -1, -1,
    2572       /*0xa758*/ 1028,
    2573       -1,
    2574       /*0x1f9b*/ 733,
    2575       /*0x041b*/ 324,
    2576       /*0x2c1b*/ 877,
    2577       /*0x1e9b*/ 604,
    2578       /*0xa65c*/ 979,
    2579       /*0x118bb*/ 1173,
    2580       -1,
    2581       /*0xff2b*/ 1090,
    2582       -1,
    2583       /*0xa740*/ 1016,
    2584       /*0x24b7*/ 825,
    2585       -1,
    2586       /*0x039b*/ 252,
    2587       /*0x01f4*/ 183,
    2588       /*0x0551*/ 477,
    2589       /*0x216d*/ 820,
    2590       -1,
    2591       /*0x118ab*/ 1157,
    2592       /*0x10419*/ 1131,
    2593       -1,
    2594       /*0xa734*/ 1010,
    2595       /*0x00c9*/ 35,
    2596       -1,
    2597       /*0x1f99*/ 731,
    2598       /*0x0419*/ 322,
    2599       /*0x2c19*/ 875,
    2600       /*0x1e99*/ 602,
    2601       -1,
    2602       /*0x1f49*/ 685,
    2603       /*0x00c1*/ 27,
    2604       /*0x24b9*/ 827,
     3332      /*0x1f0f*/ 676,
    26053333      -1, -1, -1, -1,
    2606       /*0x0399*/ 250,
    2607       -1,
    2608       /*0x10c1*/ 517,
    2609       /*0x1040f*/ 1121,
    2610       /*0x24c7*/ 841,
    2611       -1,
    2612       /*0x24bb*/ 829,
    2613       -1,
    2614       /*0x1f8f*/ 721,
    2615       /*0x040f*/ 312,
    2616       /*0x2c0f*/ 865,
    2617       -1,
    2618       /*0x10409*/ 1115,
    2619       /*0xa75e*/ 1031,
    2620       -1, -1, -1,
    2621       /*0x1f89*/ 715,
    2622       /*0x0409*/ 306,
    2623       /*0x2c09*/ 859,
    2624       /*0x038f*/ 240,
    2625       -1,
    2626       /*0x0376*/ 232,
    2627       /*0xff2f*/ 1094,
    2628       /*0x10a5*/ 489,
    2629       /*0x1041f*/ 1137,
    2630       -1, -1,
    2631       /*0x24c3*/ 837,
    2632       /*0x0389*/ 236,
    2633       /*0x1f9f*/ 737,
    2634       /*0x041f*/ 328,
    2635       /*0x2c1f*/ 881,
    2636       /*0x118af*/ 1161,
    2637       -1,
    2638       /*0xff27*/ 1086,
    2639       -1, -1, -1, -1, -1,
    2640       /*0x10411*/ 1123,
    2641       /*0x039f*/ 256,
    2642       -1, -1,
    2643       /*0x118a7*/ 1153,
    2644       /*0x1f91*/ 723,
    2645       /*0x0411*/ 314,
    2646       /*0x2c11*/ 867,
    2647       /*0x2183*/ 823,
    2648       -1,
    2649       /*0x216e*/ 821,
     3334      /*0xab7e*/ 1102,
     3335      -1, -1, -1, -1, -1, -1,
     3336      -1, -1, -1,
     3337      /*0x1f0b*/ 672,
    26503338      -1, -1, -1, -1,
    2651       /*0x10a3*/ 487,
    2652       -1,
    2653       /*0x0391*/ 242,
    2654       /*0x10a1*/ 485,
    2655       -1, -1, -1, -1, -1,
    2656       /*0x2166*/ 813,
    2657       /*0x01f6*/ 184,
    2658       -1,
    2659       /*0x00d1*/ 43,
    2660       -1,
    2661       /*0xff33*/ 1098,
    2662       -1, -1,
    2663       /*0x01d1*/ 165,
    2664       -1, -1, -1, -1, -1,
    2665       /*0x01fa*/ 187,
    2666       /*0x118b3*/ 1165,
    2667       -1, -1, -1, -1, -1, -1,
    2668       -1, -1, -1, -1, -1, -1,
    2669       -1,
    2670       /*0xff2d*/ 1092,
     3339      /*0xab72*/ 1090,
     3340      -1, -1, -1, -1, -1, -1,
     3341      -1, -1, -1, -1, -1, -1,
     3342      -1, -1, -1, -1, -1, -1,
     3343      -1, -1, -1, -1, -1, -1,
     3344      -1, -1, -1, -1, -1, -1,
     3345      -1, -1, -1, -1, -1, -1,
     3346      -1, -1, -1, -1, -1, -1,
     3347      -1, -1, -1, -1, -1, -1,
     3348      -1, -1, -1, -1, -1, -1,
     3349      -1, -1, -1, -1, -1, -1,
     3350      -1, -1, -1, -1, -1, -1,
     3351      -1, -1, -1, -1, -1, -1,
     3352      -1, -1, -1, -1, -1, -1,
     3353      -1, -1,
     3354      /*0x1c81*/ 531,
     3355      -1, -1, -1, -1, -1, -1,
     3356      -1, -1, -1, -1, -1, -1,
     3357      -1, -1, -1, -1, -1, -1,
     3358      -1, -1, -1,
     3359      /*0xfb15*/ 1177,
     3360      -1, -1, -1, -1, -1, -1,
     3361      -1, -1, -1, -1, -1, -1,
     3362      -1, -1, -1, -1, -1, -1,
     3363      -1, -1, -1, -1, -1, -1,
     3364      -1, -1, -1, -1, -1, -1,
     3365      -1, -1, -1, -1, -1, -1,
     3366      -1, -1, -1, -1, -1, -1,
     3367      -1, -1, -1, -1, -1, -1,
     3368      -1, -1, -1,
     3369      /*0x1f0d*/ 674,
     3370      -1, -1, -1, -1, -1, -1,
     3371      -1, -1, -1, -1, -1, -1,
     3372      -1, -1, -1, -1, -1, -1,
     3373      -1, -1, -1, -1, -1, -1,
     3374      -1, -1, -1, -1, -1, -1,
     3375      -1, -1, -1, -1, -1, -1,
     3376      -1, -1, -1, -1, -1, -1,
     3377      -1, -1, -1, -1, -1, -1,
     3378      -1, -1, -1, -1, -1, -1,
     3379      -1, -1, -1, -1, -1, -1,
     3380      -1, -1, -1, -1, -1, -1,
     3381      -1, -1, -1, -1, -1, -1,
     3382      -1, -1, -1, -1, -1, -1,
     3383      -1, -1, -1, -1, -1, -1,
     3384      -1, -1, -1, -1, -1, -1,
     3385      -1, -1, -1, -1, -1, -1,
     3386      -1, -1, -1, -1, -1, -1,
     3387      -1, -1, -1, -1, -1, -1,
     3388      -1, -1, -1, -1, -1, -1,
     3389      -1, -1, -1,
     3390      /*0xab7a*/ 1098,
     3391      -1, -1, -1, -1, -1, -1,
     3392      -1, -1, -1, -1, -1, -1,
     3393      -1, -1, -1, -1, -1, -1,
     3394      -1, -1, -1, -1, -1, -1,
     3395      -1, -1, -1, -1, -1, -1,
     3396      -1, -1, -1, -1, -1, -1,
     3397      -1, -1, -1, -1, -1, -1,
     3398      -1, -1, -1, -1, -1, -1,
     3399      -1, -1, -1, -1, -1, -1,
     3400      -1, -1, -1, -1, -1, -1,
     3401      -1, -1, -1, -1, -1, -1,
     3402      -1, -1, -1, -1, -1, -1,
     3403      -1, -1, -1, -1, -1, -1,
     3404      -1, -1, -1, -1, -1, -1,
     3405      -1, -1, -1, -1, -1, -1,
     3406      -1, -1, -1, -1, -1, -1,
     3407      -1, -1, -1, -1, -1, -1,
     3408      -1, -1, -1, -1, -1, -1,
     3409      -1, -1, -1, -1, -1, -1,
     3410      -1, -1, -1, -1, -1, -1,
     3411      -1, -1, -1, -1, -1, -1,
     3412      -1, -1, -1, -1, -1, -1,
     3413      -1, -1, -1, -1, -1, -1,
     3414      -1, -1, -1, -1, -1, -1,
     3415      -1, -1, -1, -1, -1, -1,
     3416      -1, -1, -1, -1, -1, -1,
     3417      -1, -1, -1, -1, -1, -1,
     3418      -1, -1, -1, -1, -1, -1,
     3419      -1, -1, -1, -1, -1, -1,
     3420      -1, -1, -1, -1, -1, -1,
     3421      -1, -1, -1, -1, -1, -1,
     3422      -1, -1, -1, -1, -1, -1,
     3423      -1, -1, -1, -1, -1, -1,
     3424      -1, -1, -1, -1, -1, -1,
     3425      -1, -1, -1, -1, -1, -1,
     3426      -1, -1, -1, -1, -1, -1,
     3427      -1, -1, -1, -1, -1, -1,
     3428      -1, -1, -1, -1, -1, -1,
     3429      -1, -1, -1, -1, -1, -1,
     3430      -1, -1, -1, -1, -1, -1,
     3431      -1, -1, -1, -1, -1, -1,
     3432      -1, -1, -1, -1, -1, -1,
     3433      -1, -1, -1, -1, -1, -1,
     3434      -1, -1, -1, -1, -1, -1,
     3435      -1, -1, -1, -1, -1, -1,
     3436      -1, -1, -1, -1, -1, -1,
     3437      -1, -1, -1, -1, -1, -1,
     3438      -1, -1, -1, -1, -1, -1,
     3439      -1, -1, -1, -1, -1, -1,
     3440      -1, -1, -1, -1, -1, -1,
     3441      -1, -1, -1, -1, -1, -1,
     3442      -1, -1, -1, -1, -1, -1,
     3443      -1, -1, -1, -1, -1, -1,
     3444      -1, -1, -1, -1, -1, -1,
    26713445      -1, -1, -1, -1,
    2672       /*0xff31*/ 1096,
     3446      /*0xab7c*/ 1100,
     3447      -1, -1, -1, -1, -1, -1,
     3448      -1, -1, -1, -1, -1, -1,
     3449      -1, -1, -1, -1, -1, -1,
     3450      -1, -1, -1, -1, -1, -1,
     3451      -1, -1, -1, -1, -1, -1,
     3452      -1, -1, -1, -1, -1, -1,
     3453      -1, -1, -1, -1, -1, -1,
     3454      -1, -1, -1, -1, -1, -1,
     3455      -1, -1, -1, -1, -1, -1,
     3456      -1, -1, -1, -1, -1, -1,
     3457      -1, -1, -1, -1, -1, -1,
     3458      -1, -1, -1, -1, -1, -1,
     3459      -1, -1, -1, -1, -1, -1,
    26733460      -1, -1, -1, -1,
    2674       /*0x118ad*/ 1159,
     3461      /*0x1c87*/ 537,
     3462      -1, -1, -1, -1, -1, -1,
     3463      -1, -1, -1, -1, -1, -1,
     3464      -1, -1, -1, -1, -1, -1,
     3465      -1, -1, -1, -1, -1, -1,
     3466      -1, -1, -1, -1, -1, -1,
     3467      -1, -1, -1, -1, -1, -1,
     3468      -1, -1, -1, -1, -1, -1,
     3469      -1, -1, -1, -1, -1, -1,
     3470      -1, -1, -1, -1, -1, -1,
     3471      -1, -1, -1, -1, -1, -1,
     3472      -1, -1, -1, -1, -1, -1,
     3473      -1, -1, -1, -1, -1, -1,
     3474      -1, -1, -1, -1, -1, -1,
     3475      -1, -1, -1, -1, -1, -1,
     3476      -1, -1, -1, -1, -1, -1,
     3477      -1, -1, -1, -1, -1, -1,
     3478      -1, -1, -1, -1, -1, -1,
     3479      -1, -1, -1, -1, -1, -1,
     3480      -1, -1, -1, -1, -1, -1,
     3481      -1, -1, -1, -1, -1, -1,
     3482      -1, -1, -1, -1, -1, -1,
     3483      -1, -1, -1, -1, -1, -1,
     3484      -1, -1, -1, -1, -1, -1,
     3485      -1, -1, -1, -1, -1, -1,
     3486      -1, -1, -1, -1, -1, -1,
     3487      -1, -1, -1, -1, -1, -1,
     3488      -1, -1, -1, -1, -1, -1,
     3489      -1, -1, -1, -1, -1, -1,
     3490      -1, -1, -1, -1, -1, -1,
     3491      -1, -1, -1, -1, -1, -1,
     3492      -1, -1, -1, -1, -1, -1,
     3493      -1, -1, -1, -1, -1, -1,
     3494      -1, -1, -1, -1, -1, -1,
     3495      -1, -1, -1, -1, -1, -1,
     3496      -1, -1, -1, -1, -1, -1,
     3497      -1, -1, -1, -1, -1, -1,
     3498      -1, -1, -1, -1, -1, -1,
     3499      -1, -1, -1, -1, -1, -1,
     3500      -1, -1, -1, -1, -1, -1,
     3501      -1, -1, -1, -1, -1, -1,
     3502      -1, -1, -1, -1, -1, -1,
     3503      -1, -1, -1, -1, -1, -1,
     3504      -1, -1, -1, -1, -1, -1,
     3505      -1, -1, -1, -1, -1, -1,
     3506      -1, -1, -1, -1, -1, -1,
     3507      -1, -1, -1, -1, -1, -1,
     3508      -1, -1, -1, -1, -1, -1,
     3509      -1, -1, -1, -1, -1, -1,
     3510      -1, -1, -1, -1, -1, -1,
     3511      -1, -1, -1, -1, -1, -1,
     3512      -1, -1, -1, -1, -1, -1,
     3513      -1, -1, -1, -1, -1, -1,
     3514      -1, -1, -1, -1, -1, -1,
     3515      -1, -1, -1, -1, -1, -1,
     3516      -1, -1, -1, -1, -1, -1,
     3517      -1, -1, -1, -1, -1, -1,
     3518      -1, -1, -1, -1, -1, -1,
     3519      -1, -1, -1, -1, -1, -1,
     3520      -1, -1, -1, -1, -1, -1,
     3521      -1, -1, -1, -1, -1, -1,
     3522      -1, -1, -1, -1, -1, -1,
     3523      -1, -1, -1, -1, -1, -1,
     3524      -1, -1, -1, -1, -1, -1,
     3525      -1, -1, -1, -1, -1, -1,
     3526      -1, -1, -1, -1, -1, -1,
     3527      -1, -1, -1, -1, -1, -1,
     3528      -1, -1, -1, -1, -1, -1,
     3529      -1, -1, -1, -1, -1, -1,
     3530      -1, -1, -1, -1, -1, -1,
     3531      -1, -1, -1, -1, -1, -1,
     3532      -1, -1, -1, -1, -1, -1,
     3533      -1, -1, -1, -1, -1, -1,
     3534      -1, -1, -1, -1, -1, -1,
     3535      -1, -1, -1, -1, -1, -1,
     3536      -1, -1, -1, -1, -1, -1,
     3537      -1, -1, -1, -1, -1, -1,
     3538      -1, -1,
     3539      /*0xab74*/ 1092,
     3540      -1, -1, -1, -1, -1, -1,
     3541      -1, -1, -1, -1, -1, -1,
     3542      -1, -1, -1, -1, -1, -1,
    26753543      -1, -1, -1, -1,
    2676       /*0x118b1*/ 1163,
    2677       -1, -1,
    2678       /*0x24cb*/ 845,
    2679       -1, -1, -1,
    2680       /*0x01f8*/ 186,
     3544      /*0xab70*/ 1088,
     3545      -1, -1, -1, -1, -1, -1,
     3546      -1, -1, -1, -1, -1, -1,
     3547      -1, -1, -1, -1, -1, -1,
     3548      -1, -1, -1, -1, -1, -1,
     3549      -1, -1, -1, -1, -1, -1,
     3550      -1, -1, -1, -1, -1, -1,
     3551      -1, -1, -1, -1, -1, -1,
     3552      -1, -1, -1, -1, -1, -1,
     3553      -1, -1, -1, -1, -1, -1,
     3554      -1, -1, -1, -1, -1, -1,
     3555      -1, -1, -1, -1, -1, -1,
     3556      -1, -1, -1, -1, -1, -1,
     3557      -1, -1, -1, -1, -1, -1,
     3558      -1, -1, -1, -1, -1, -1,
     3559      -1, -1, -1, -1, -1, -1,
     3560      -1, -1, -1, -1, -1, -1,
     3561      -1, -1, -1, -1, -1, -1,
     3562      -1, -1, -1, -1, -1, -1,
     3563      -1, -1, -1, -1, -1, -1,
     3564      -1, -1, -1, -1, -1, -1,
     3565      -1, -1, -1, -1, -1, -1,
     3566      -1, -1, -1, -1, -1, -1,
     3567      -1, -1, -1, -1, -1, -1,
     3568      -1, -1, -1, -1, -1, -1,
     3569      -1, -1, -1, -1, -1, -1,
     3570      -1, -1, -1, -1, -1, -1,
     3571      -1, -1, -1, -1, -1, -1,
     3572      -1, -1, -1, -1, -1, -1,
     3573      -1, -1, -1, -1, -1, -1,
    26813574      -1, -1, -1, -1,
    2682       /*0xa75c*/ 1030,
    2683       -1, -1, -1, -1, -1, -1,
    2684       -1, -1, -1, -1, -1, -1,
    2685       -1, -1, -1, -1, -1, -1,
    2686       -1, -1, -1, -1, -1, -1,
    2687       -1, -1,
    2688       /*0x019d*/ 139,
    2689       -1,
    2690       /*0x1f1d*/ 667,
    2691       -1, -1, -1, -1, -1, -1,
    2692       -1, -1, -1, -1, -1, -1,
    2693       -1, -1, -1, -1, -1, -1,
    2694       -1,
    2695       /*0xff25*/ 1084,
    2696       -1, -1, -1, -1, -1,
    2697       /*0xa77e*/ 1043,
    2698       -1, -1, -1,
    2699       /*0x118a5*/ 1151,
    2700       -1, -1,
    2701       /*0x1f1b*/ 665,
    2702       -1, -1,
    2703       /*0x24c9*/ 843,
    2704       -1, -1, -1, -1, -1, -1,
    2705       -1,
    2706       /*0x24c1*/ 835,
    2707       -1, -1, -1, -1, -1, -1,
    2708       -1,
    2709       /*0xff23*/ 1082,
    2710       -1, -1,
    2711       /*0xff21*/ 1080,
    2712       /*0x1f19*/ 663,
    2713       -1, -1, -1, -1, -1,
    2714       /*0x118a3*/ 1149,
    2715       /*0x212b*/ 805,
    2716       -1,
    2717       /*0x118a1*/ 1147,
    2718       -1, -1, -1, -1, -1, -1,
    2719       -1, -1,
    2720       /*0x018f*/ 130,
    2721       -1,
    2722       /*0x1f0f*/ 661,
    2723       -1, -1, -1, -1, -1, -1,
    2724       /*0x0189*/ 126,
    2725       -1,
    2726       /*0x1f09*/ 655,
    2727       -1, -1, -1, -1, -1, -1,
    2728       -1, -1, -1, -1,
    2729       /*0x019f*/ 140,
    2730       -1, -1, -1, -1, -1, -1,
    2731       -1, -1, -1, -1, -1, -1,
    2732       -1, -1, -1,
    2733       /*0x0191*/ 132,
    2734       -1, -1, -1, -1, -1, -1,
    2735       -1, -1, -1, -1, -1, -1,
    2736       -1, -1, -1,
    2737       /*0xfb03*/ 1071,
    2738       -1, -1, -1, -1, -1, -1,
    2739       -1, -1, -1, -1, -1, -1,
    2740       -1, -1, -1, -1, -1, -1,
    2741       -1, -1, -1, -1, -1, -1,
    2742       -1, -1, -1, -1, -1, -1,
    2743       -1, -1, -1, -1, -1, -1,
    2744       -1, -1, -1, -1, -1, -1,
    2745       -1, -1, -1, -1, -1, -1,
    2746       -1, -1, -1, -1, -1, -1,
    2747       -1, -1, -1, -1, -1, -1,
    2748       -1, -1, -1, -1, -1, -1,
    2749       -1, -1, -1, -1, -1, -1,
    2750       -1, -1, -1, -1, -1, -1,
    2751       -1, -1, -1, -1, -1, -1,
    2752       -1, -1, -1, -1, -1, -1,
    2753       -1, -1, -1, -1, -1, -1,
    2754       -1, -1, -1, -1, -1, -1,
    2755       -1, -1, -1, -1, -1, -1,
    2756       -1, -1, -1, -1, -1, -1,
    2757       -1, -1, -1, -1, -1, -1,
    2758       -1, -1, -1, -1, -1, -1,
    2759       -1, -1, -1, -1, -1, -1,
    2760       -1, -1, -1, -1, -1, -1,
    2761       -1, -1, -1, -1, -1, -1,
    2762       -1, -1, -1, -1, -1, -1,
    2763       -1, -1, -1, -1, -1, -1,
    2764       -1, -1, -1,
    2765       /*0xfb05*/ 1073
     3575      /*0xab78*/ 1096
    27663576    };
    27673577
    27683578  if (code <= MAX_CODE_VALUE && code >= MIN_CODE_VALUE)
    27693579    {
    2770       register int key = onigenc_unicode_CaseFold_11_hash(code);
     3580      register unsigned int key = onigenc_unicode_CaseFold_11_hash(code);
    27713581
    2772       if (key <= MAX_HASH_VALUE && key >= 0)
     3582      if (key <= MAX_HASH_VALUE)
    27733583        {
    27743584          register short s = wordlist[key];
     
    27823592
    27833593static const CaseUnfold_11_Type CaseUnfold_11_Table[] = {
    2784 #define CaseUnfold_11 (*(CaseUnfold_11_Type (*)[1054])(CaseUnfold_11_Table+0))
    2785   {0x0061, {1, {0x0041}}},
    2786   {0x0062, {1, {0x0042}}},
    2787   {0x0063, {1, {0x0043}}},
    2788   {0x0064, {1, {0x0044}}},
    2789   {0x0065, {1, {0x0045}}},
    2790   {0x0066, {1, {0x0046}}},
    2791   {0x0067, {1, {0x0047}}},
    2792   {0x0068, {1, {0x0048}}},
    2793   {0x006a, {1, {0x004a}}},
    2794   {0x006b, {2, {0x004b, 0x212a}}},
    2795   {0x006c, {1, {0x004c}}},
    2796   {0x006d, {1, {0x004d}}},
    2797   {0x006e, {1, {0x004e}}},
    2798   {0x006f, {1, {0x004f}}},
    2799   {0x0070, {1, {0x0050}}},
    2800   {0x0071, {1, {0x0051}}},
    2801   {0x0072, {1, {0x0052}}},
    2802   {0x0073, {2, {0x0053, 0x017f}}},
    2803   {0x0074, {1, {0x0054}}},
    2804   {0x0075, {1, {0x0055}}},
    2805   {0x0076, {1, {0x0056}}},
    2806   {0x0077, {1, {0x0057}}},
    2807   {0x0078, {1, {0x0058}}},
    2808   {0x0079, {1, {0x0059}}},
    2809   {0x007a, {1, {0x005a}}},
    2810   {0x00e0, {1, {0x00c0}}},
    2811   {0x00e1, {1, {0x00c1}}},
    2812   {0x00e2, {1, {0x00c2}}},
    2813   {0x00e3, {1, {0x00c3}}},
    2814   {0x00e4, {1, {0x00c4}}},
    2815   {0x00e5, {2, {0x00c5, 0x212b}}},
    2816   {0x00e6, {1, {0x00c6}}},
    2817   {0x00e7, {1, {0x00c7}}},
    2818   {0x00e8, {1, {0x00c8}}},
    2819   {0x00e9, {1, {0x00c9}}},
    2820   {0x00ea, {1, {0x00ca}}},
    2821   {0x00eb, {1, {0x00cb}}},
    2822   {0x00ec, {1, {0x00cc}}},
    2823   {0x00ed, {1, {0x00cd}}},
    2824   {0x00ee, {1, {0x00ce}}},
    2825   {0x00ef, {1, {0x00cf}}},
    2826   {0x00f0, {1, {0x00d0}}},
    2827   {0x00f1, {1, {0x00d1}}},
    2828   {0x00f2, {1, {0x00d2}}},
    2829   {0x00f3, {1, {0x00d3}}},
    2830   {0x00f4, {1, {0x00d4}}},
    2831   {0x00f5, {1, {0x00d5}}},
    2832   {0x00f6, {1, {0x00d6}}},
    2833   {0x00f8, {1, {0x00d8}}},
    2834   {0x00f9, {1, {0x00d9}}},
    2835   {0x00fa, {1, {0x00da}}},
    2836   {0x00fb, {1, {0x00db}}},
    2837   {0x00fc, {1, {0x00dc}}},
    2838   {0x00fd, {1, {0x00dd}}},
    2839   {0x00fe, {1, {0x00de}}},
    2840   {0x00ff, {1, {0x0178}}},
    2841   {0x0101, {1, {0x0100}}},
    2842   {0x0103, {1, {0x0102}}},
    2843   {0x0105, {1, {0x0104}}},
    2844   {0x0107, {1, {0x0106}}},
    2845   {0x0109, {1, {0x0108}}},
    2846   {0x010b, {1, {0x010a}}},
    2847   {0x010d, {1, {0x010c}}},
    2848   {0x010f, {1, {0x010e}}},
    2849   {0x0111, {1, {0x0110}}},
    2850   {0x0113, {1, {0x0112}}},
    2851   {0x0115, {1, {0x0114}}},
    2852   {0x0117, {1, {0x0116}}},
    2853   {0x0119, {1, {0x0118}}},
    2854   {0x011b, {1, {0x011a}}},
    2855   {0x011d, {1, {0x011c}}},
    2856   {0x011f, {1, {0x011e}}},
    2857   {0x0121, {1, {0x0120}}},
    2858   {0x0123, {1, {0x0122}}},
    2859   {0x0125, {1, {0x0124}}},
    2860   {0x0127, {1, {0x0126}}},
    2861   {0x0129, {1, {0x0128}}},
    2862   {0x012b, {1, {0x012a}}},
    2863   {0x012d, {1, {0x012c}}},
    2864   {0x012f, {1, {0x012e}}},
    2865   {0x0133, {1, {0x0132}}},
    2866   {0x0135, {1, {0x0134}}},
    2867   {0x0137, {1, {0x0136}}},
    2868   {0x013a, {1, {0x0139}}},
    2869   {0x013c, {1, {0x013b}}},
    2870   {0x013e, {1, {0x013d}}},
    2871   {0x0140, {1, {0x013f}}},
    2872   {0x0142, {1, {0x0141}}},
    2873   {0x0144, {1, {0x0143}}},
    2874   {0x0146, {1, {0x0145}}},
    2875   {0x0148, {1, {0x0147}}},
    2876   {0x014b, {1, {0x014a}}},
    2877   {0x014d, {1, {0x014c}}},
    2878   {0x014f, {1, {0x014e}}},
    2879   {0x0151, {1, {0x0150}}},
    2880   {0x0153, {1, {0x0152}}},
    2881   {0x0155, {1, {0x0154}}},
    2882   {0x0157, {1, {0x0156}}},
    2883   {0x0159, {1, {0x0158}}},
    2884   {0x015b, {1, {0x015a}}},
    2885   {0x015d, {1, {0x015c}}},
    2886   {0x015f, {1, {0x015e}}},
    2887   {0x0161, {1, {0x0160}}},
    2888   {0x0163, {1, {0x0162}}},
    2889   {0x0165, {1, {0x0164}}},
    2890   {0x0167, {1, {0x0166}}},
    2891   {0x0169, {1, {0x0168}}},
    2892   {0x016b, {1, {0x016a}}},
    2893   {0x016d, {1, {0x016c}}},
    2894   {0x016f, {1, {0x016e}}},
    2895   {0x0171, {1, {0x0170}}},
    2896   {0x0173, {1, {0x0172}}},
    2897   {0x0175, {1, {0x0174}}},
    2898   {0x0177, {1, {0x0176}}},
    2899   {0x017a, {1, {0x0179}}},
    2900   {0x017c, {1, {0x017b}}},
    2901   {0x017e, {1, {0x017d}}},
    2902   {0x0180, {1, {0x0243}}},
    2903   {0x0183, {1, {0x0182}}},
    2904   {0x0185, {1, {0x0184}}},
    2905   {0x0188, {1, {0x0187}}},
    2906   {0x018c, {1, {0x018b}}},
    2907   {0x0192, {1, {0x0191}}},
    2908   {0x0195, {1, {0x01f6}}},
    2909   {0x0199, {1, {0x0198}}},
    2910   {0x019a, {1, {0x023d}}},
    2911   {0x019e, {1, {0x0220}}},
    2912   {0x01a1, {1, {0x01a0}}},
    2913   {0x01a3, {1, {0x01a2}}},
    2914   {0x01a5, {1, {0x01a4}}},
    2915   {0x01a8, {1, {0x01a7}}},
    2916   {0x01ad, {1, {0x01ac}}},
    2917   {0x01b0, {1, {0x01af}}},
    2918   {0x01b4, {1, {0x01b3}}},
    2919   {0x01b6, {1, {0x01b5}}},
    2920   {0x01b9, {1, {0x01b8}}},
    2921   {0x01bd, {1, {0x01bc}}},
    2922   {0x01bf, {1, {0x01f7}}},
    2923   {0x01c6, {2, {0x01c4, 0x01c5}}},
    2924   {0x01c9, {2, {0x01c7, 0x01c8}}},
    2925   {0x01cc, {2, {0x01ca, 0x01cb}}},
    2926   {0x01ce, {1, {0x01cd}}},
    2927   {0x01d0, {1, {0x01cf}}},
    2928   {0x01d2, {1, {0x01d1}}},
    2929   {0x01d4, {1, {0x01d3}}},
    2930   {0x01d6, {1, {0x01d5}}},
    2931   {0x01d8, {1, {0x01d7}}},
    2932   {0x01da, {1, {0x01d9}}},
    2933   {0x01dc, {1, {0x01db}}},
    2934   {0x01dd, {1, {0x018e}}},
    2935   {0x01df, {1, {0x01de}}},
    2936   {0x01e1, {1, {0x01e0}}},
    2937   {0x01e3, {1, {0x01e2}}},
    2938   {0x01e5, {1, {0x01e4}}},
    2939   {0x01e7, {1, {0x01e6}}},
    2940   {0x01e9, {1, {0x01e8}}},
    2941   {0x01eb, {1, {0x01ea}}},
    2942   {0x01ed, {1, {0x01ec}}},
    2943   {0x01ef, {1, {0x01ee}}},
    2944   {0x01f3, {2, {0x01f1, 0x01f2}}},
    2945   {0x01f5, {1, {0x01f4}}},
    2946   {0x01f9, {1, {0x01f8}}},
    2947   {0x01fb, {1, {0x01fa}}},
    2948   {0x01fd, {1, {0x01fc}}},
    2949   {0x01ff, {1, {0x01fe}}},
    2950   {0x0201, {1, {0x0200}}},
    2951   {0x0203, {1, {0x0202}}},
    2952   {0x0205, {1, {0x0204}}},
    2953   {0x0207, {1, {0x0206}}},
    2954   {0x0209, {1, {0x0208}}},
    2955   {0x020b, {1, {0x020a}}},
    2956   {0x020d, {1, {0x020c}}},
    2957   {0x020f, {1, {0x020e}}},
    2958   {0x0211, {1, {0x0210}}},
    2959   {0x0213, {1, {0x0212}}},
    2960   {0x0215, {1, {0x0214}}},
    2961   {0x0217, {1, {0x0216}}},
    2962   {0x0219, {1, {0x0218}}},
    2963   {0x021b, {1, {0x021a}}},
    2964   {0x021d, {1, {0x021c}}},
    2965   {0x021f, {1, {0x021e}}},
    2966   {0x0223, {1, {0x0222}}},
    2967   {0x0225, {1, {0x0224}}},
    2968   {0x0227, {1, {0x0226}}},
    2969   {0x0229, {1, {0x0228}}},
    2970   {0x022b, {1, {0x022a}}},
    2971   {0x022d, {1, {0x022c}}},
    2972   {0x022f, {1, {0x022e}}},
    2973   {0x0231, {1, {0x0230}}},
    2974   {0x0233, {1, {0x0232}}},
    2975   {0x023c, {1, {0x023b}}},
    2976   {0x023f, {1, {0x2c7e}}},
    2977   {0x0240, {1, {0x2c7f}}},
    2978   {0x0242, {1, {0x0241}}},
    2979   {0x0247, {1, {0x0246}}},
    2980   {0x0249, {1, {0x0248}}},
    2981   {0x024b, {1, {0x024a}}},
    2982   {0x024d, {1, {0x024c}}},
    2983   {0x024f, {1, {0x024e}}},
    2984   {0x0250, {1, {0x2c6f}}},
    2985   {0x0251, {1, {0x2c6d}}},
    2986   {0x0252, {1, {0x2c70}}},
    2987   {0x0253, {1, {0x0181}}},
    2988   {0x0254, {1, {0x0186}}},
    2989   {0x0256, {1, {0x0189}}},
    2990   {0x0257, {1, {0x018a}}},
    2991   {0x0259, {1, {0x018f}}},
    2992   {0x025b, {1, {0x0190}}},
    2993   {0x025c, {1, {0xa7ab}}},
    2994   {0x0260, {1, {0x0193}}},
    2995   {0x0261, {1, {0xa7ac}}},
    2996   {0x0263, {1, {0x0194}}},
    2997   {0x0265, {1, {0xa78d}}},
    2998   {0x0266, {1, {0xa7aa}}},
    2999   {0x0268, {1, {0x0197}}},
    3000   {0x0269, {1, {0x0196}}},
    3001   {0x026b, {1, {0x2c62}}},
    3002   {0x026c, {1, {0xa7ad}}},
    3003   {0x026f, {1, {0x019c}}},
    3004   {0x0271, {1, {0x2c6e}}},
    3005   {0x0272, {1, {0x019d}}},
    3006   {0x0275, {1, {0x019f}}},
    3007   {0x027d, {1, {0x2c64}}},
    3008   {0x0280, {1, {0x01a6}}},
    3009   {0x0283, {1, {0x01a9}}},
    3010   {0x0287, {1, {0xa7b1}}},
    3011   {0x0288, {1, {0x01ae}}},
    3012   {0x0289, {1, {0x0244}}},
    3013   {0x028a, {1, {0x01b1}}},
    3014   {0x028b, {1, {0x01b2}}},
    3015   {0x028c, {1, {0x0245}}},
    3016   {0x0292, {1, {0x01b7}}},
    3017   {0x029e, {1, {0xa7b0}}},
    3018   {0x0371, {1, {0x0370}}},
    3019   {0x0373, {1, {0x0372}}},
    3020   {0x0377, {1, {0x0376}}},
    3021   {0x037b, {1, {0x03fd}}},
    3022   {0x037c, {1, {0x03fe}}},
    3023   {0x037d, {1, {0x03ff}}},
    3024   {0x03ac, {1, {0x0386}}},
    3025   {0x03ad, {1, {0x0388}}},
    3026   {0x03ae, {1, {0x0389}}},
    3027   {0x03af, {1, {0x038a}}},
    3028   {0x03b1, {1, {0x0391}}},
    3029   {0x03b2, {2, {0x0392, 0x03d0}}},
    3030   {0x03b3, {1, {0x0393}}},
    3031   {0x03b4, {1, {0x0394}}},
    3032   {0x03b5, {2, {0x0395, 0x03f5}}},
    3033   {0x03b6, {1, {0x0396}}},
    3034   {0x03b7, {1, {0x0397}}},
    3035   {0x03b8, {3, {0x0398, 0x03d1, 0x03f4}}},
    3036   {0x03b9, {3, {0x0345, 0x0399, 0x1fbe}}},
    3037   {0x03ba, {2, {0x039a, 0x03f0}}},
    3038   {0x03bb, {1, {0x039b}}},
    3039   {0x03bc, {2, {0x00b5, 0x039c}}},
    3040   {0x03bd, {1, {0x039d}}},
    3041   {0x03be, {1, {0x039e}}},
    3042   {0x03bf, {1, {0x039f}}},
    3043   {0x03c0, {2, {0x03a0, 0x03d6}}},
    3044   {0x03c1, {2, {0x03a1, 0x03f1}}},
    3045   {0x03c3, {2, {0x03a3, 0x03c2}}},
    3046   {0x03c4, {1, {0x03a4}}},
    3047   {0x03c5, {1, {0x03a5}}},
    3048   {0x03c6, {2, {0x03a6, 0x03d5}}},
    3049   {0x03c7, {1, {0x03a7}}},
    3050   {0x03c8, {1, {0x03a8}}},
    3051   {0x03c9, {2, {0x03a9, 0x2126}}},
    3052   {0x03ca, {1, {0x03aa}}},
    3053   {0x03cb, {1, {0x03ab}}},
    3054   {0x03cc, {1, {0x038c}}},
    3055   {0x03cd, {1, {0x038e}}},
    3056   {0x03ce, {1, {0x038f}}},
    3057   {0x03d7, {1, {0x03cf}}},
    3058   {0x03d9, {1, {0x03d8}}},
    3059   {0x03db, {1, {0x03da}}},
    3060   {0x03dd, {1, {0x03dc}}},
    3061   {0x03df, {1, {0x03de}}},
    3062   {0x03e1, {1, {0x03e0}}},
    3063   {0x03e3, {1, {0x03e2}}},
    3064   {0x03e5, {1, {0x03e4}}},
    3065   {0x03e7, {1, {0x03e6}}},
    3066   {0x03e9, {1, {0x03e8}}},
    3067   {0x03eb, {1, {0x03ea}}},
    3068   {0x03ed, {1, {0x03ec}}},
    3069   {0x03ef, {1, {0x03ee}}},
    3070   {0x03f2, {1, {0x03f9}}},
    3071   {0x03f3, {1, {0x037f}}},
    3072   {0x03f8, {1, {0x03f7}}},
    3073   {0x03fb, {1, {0x03fa}}},
    3074   {0x0430, {1, {0x0410}}},
    3075   {0x0431, {1, {0x0411}}},
    3076   {0x0432, {1, {0x0412}}},
    3077   {0x0433, {1, {0x0413}}},
    3078   {0x0434, {1, {0x0414}}},
    3079   {0x0435, {1, {0x0415}}},
    3080   {0x0436, {1, {0x0416}}},
    3081   {0x0437, {1, {0x0417}}},
    3082   {0x0438, {1, {0x0418}}},
    3083   {0x0439, {1, {0x0419}}},
    3084   {0x043a, {1, {0x041a}}},
    3085   {0x043b, {1, {0x041b}}},
    3086   {0x043c, {1, {0x041c}}},
    3087   {0x043d, {1, {0x041d}}},
    3088   {0x043e, {1, {0x041e}}},
    3089   {0x043f, {1, {0x041f}}},
    3090   {0x0440, {1, {0x0420}}},
    3091   {0x0441, {1, {0x0421}}},
    3092   {0x0442, {1, {0x0422}}},
    3093   {0x0443, {1, {0x0423}}},
    3094   {0x0444, {1, {0x0424}}},
    3095   {0x0445, {1, {0x0425}}},
    3096   {0x0446, {1, {0x0426}}},
    3097   {0x0447, {1, {0x0427}}},
    3098   {0x0448, {1, {0x0428}}},
    3099   {0x0449, {1, {0x0429}}},
    3100   {0x044a, {1, {0x042a}}},
    3101   {0x044b, {1, {0x042b}}},
    3102   {0x044c, {1, {0x042c}}},
    3103   {0x044d, {1, {0x042d}}},
    3104   {0x044e, {1, {0x042e}}},
    3105   {0x044f, {1, {0x042f}}},
    3106   {0x0450, {1, {0x0400}}},
    3107   {0x0451, {1, {0x0401}}},
    3108   {0x0452, {1, {0x0402}}},
    3109   {0x0453, {1, {0x0403}}},
    3110   {0x0454, {1, {0x0404}}},
    3111   {0x0455, {1, {0x0405}}},
    3112   {0x0456, {1, {0x0406}}},
    3113   {0x0457, {1, {0x0407}}},
    3114   {0x0458, {1, {0x0408}}},
    3115   {0x0459, {1, {0x0409}}},
    3116   {0x045a, {1, {0x040a}}},
    3117   {0x045b, {1, {0x040b}}},
    3118   {0x045c, {1, {0x040c}}},
    3119   {0x045d, {1, {0x040d}}},
    3120   {0x045e, {1, {0x040e}}},
    3121   {0x045f, {1, {0x040f}}},
    3122   {0x0461, {1, {0x0460}}},
    3123   {0x0463, {1, {0x0462}}},
    3124   {0x0465, {1, {0x0464}}},
    3125   {0x0467, {1, {0x0466}}},
    3126   {0x0469, {1, {0x0468}}},
    3127   {0x046b, {1, {0x046a}}},
    3128   {0x046d, {1, {0x046c}}},
    3129   {0x046f, {1, {0x046e}}},
    3130   {0x0471, {1, {0x0470}}},
    3131   {0x0473, {1, {0x0472}}},
    3132   {0x0475, {1, {0x0474}}},
    3133   {0x0477, {1, {0x0476}}},
    3134   {0x0479, {1, {0x0478}}},
    3135   {0x047b, {1, {0x047a}}},
    3136   {0x047d, {1, {0x047c}}},
    3137   {0x047f, {1, {0x047e}}},
    3138   {0x0481, {1, {0x0480}}},
    3139   {0x048b, {1, {0x048a}}},
    3140   {0x048d, {1, {0x048c}}},
    3141   {0x048f, {1, {0x048e}}},
    3142   {0x0491, {1, {0x0490}}},
    3143   {0x0493, {1, {0x0492}}},
    3144   {0x0495, {1, {0x0494}}},
    3145   {0x0497, {1, {0x0496}}},
    3146   {0x0499, {1, {0x0498}}},
    3147   {0x049b, {1, {0x049a}}},
    3148   {0x049d, {1, {0x049c}}},
    3149   {0x049f, {1, {0x049e}}},
    3150   {0x04a1, {1, {0x04a0}}},
    3151   {0x04a3, {1, {0x04a2}}},
    3152   {0x04a5, {1, {0x04a4}}},
    3153   {0x04a7, {1, {0x04a6}}},
    3154   {0x04a9, {1, {0x04a8}}},
    3155   {0x04ab, {1, {0x04aa}}},
    3156   {0x04ad, {1, {0x04ac}}},
    3157   {0x04af, {1, {0x04ae}}},
    3158   {0x04b1, {1, {0x04b0}}},
    3159   {0x04b3, {1, {0x04b2}}},
    3160   {0x04b5, {1, {0x04b4}}},
    3161   {0x04b7, {1, {0x04b6}}},
    3162   {0x04b9, {1, {0x04b8}}},
    3163   {0x04bb, {1, {0x04ba}}},
    3164   {0x04bd, {1, {0x04bc}}},
    3165   {0x04bf, {1, {0x04be}}},
    3166   {0x04c2, {1, {0x04c1}}},
    3167   {0x04c4, {1, {0x04c3}}},
    3168   {0x04c6, {1, {0x04c5}}},
    3169   {0x04c8, {1, {0x04c7}}},
    3170   {0x04ca, {1, {0x04c9}}},
    3171   {0x04cc, {1, {0x04cb}}},
    3172   {0x04ce, {1, {0x04cd}}},
    3173   {0x04cf, {1, {0x04c0}}},
    3174   {0x04d1, {1, {0x04d0}}},
    3175   {0x04d3, {1, {0x04d2}}},
    3176   {0x04d5, {1, {0x04d4}}},
    3177   {0x04d7, {1, {0x04d6}}},
    3178   {0x04d9, {1, {0x04d8}}},
    3179   {0x04db, {1, {0x04da}}},
    3180   {0x04dd, {1, {0x04dc}}},
    3181   {0x04df, {1, {0x04de}}},
    3182   {0x04e1, {1, {0x04e0}}},
    3183   {0x04e3, {1, {0x04e2}}},
    3184   {0x04e5, {1, {0x04e4}}},
    3185   {0x04e7, {1, {0x04e6}}},
    3186   {0x04e9, {1, {0x04e8}}},
    3187   {0x04eb, {1, {0x04ea}}},
    3188   {0x04ed, {1, {0x04ec}}},
    3189   {0x04ef, {1, {0x04ee}}},
    3190   {0x04f1, {1, {0x04f0}}},
    3191   {0x04f3, {1, {0x04f2}}},
    3192   {0x04f5, {1, {0x04f4}}},
    3193   {0x04f7, {1, {0x04f6}}},
    3194   {0x04f9, {1, {0x04f8}}},
    3195   {0x04fb, {1, {0x04fa}}},
    3196   {0x04fd, {1, {0x04fc}}},
    3197   {0x04ff, {1, {0x04fe}}},
    3198   {0x0501, {1, {0x0500}}},
    3199   {0x0503, {1, {0x0502}}},
    3200   {0x0505, {1, {0x0504}}},
    3201   {0x0507, {1, {0x0506}}},
    3202   {0x0509, {1, {0x0508}}},
    3203   {0x050b, {1, {0x050a}}},
    3204   {0x050d, {1, {0x050c}}},
    3205   {0x050f, {1, {0x050e}}},
    3206   {0x0511, {1, {0x0510}}},
    3207   {0x0513, {1, {0x0512}}},
    3208   {0x0515, {1, {0x0514}}},
    3209   {0x0517, {1, {0x0516}}},
    3210   {0x0519, {1, {0x0518}}},
    3211   {0x051b, {1, {0x051a}}},
    3212   {0x051d, {1, {0x051c}}},
    3213   {0x051f, {1, {0x051e}}},
    3214   {0x0521, {1, {0x0520}}},
    3215   {0x0523, {1, {0x0522}}},
    3216   {0x0525, {1, {0x0524}}},
    3217   {0x0527, {1, {0x0526}}},
    3218   {0x0529, {1, {0x0528}}},
    3219   {0x052b, {1, {0x052a}}},
    3220   {0x052d, {1, {0x052c}}},
    3221   {0x052f, {1, {0x052e}}},
    3222   {0x0561, {1, {0x0531}}},
    3223   {0x0562, {1, {0x0532}}},
    3224   {0x0563, {1, {0x0533}}},
    3225   {0x0564, {1, {0x0534}}},
    3226   {0x0565, {1, {0x0535}}},
    3227   {0x0566, {1, {0x0536}}},
    3228   {0x0567, {1, {0x0537}}},
    3229   {0x0568, {1, {0x0538}}},
    3230   {0x0569, {1, {0x0539}}},
    3231   {0x056a, {1, {0x053a}}},
    3232   {0x056b, {1, {0x053b}}},
    3233   {0x056c, {1, {0x053c}}},
    3234   {0x056d, {1, {0x053d}}},
    3235   {0x056e, {1, {0x053e}}},
    3236   {0x056f, {1, {0x053f}}},
    3237   {0x0570, {1, {0x0540}}},
    3238   {0x0571, {1, {0x0541}}},
    3239   {0x0572, {1, {0x0542}}},
    3240   {0x0573, {1, {0x0543}}},
    3241   {0x0574, {1, {0x0544}}},
    3242   {0x0575, {1, {0x0545}}},
    3243   {0x0576, {1, {0x0546}}},
    3244   {0x0577, {1, {0x0547}}},
    3245   {0x0578, {1, {0x0548}}},
    3246   {0x0579, {1, {0x0549}}},
    3247   {0x057a, {1, {0x054a}}},
    3248   {0x057b, {1, {0x054b}}},
    3249   {0x057c, {1, {0x054c}}},
    3250   {0x057d, {1, {0x054d}}},
    3251   {0x057e, {1, {0x054e}}},
    3252   {0x057f, {1, {0x054f}}},
    3253   {0x0580, {1, {0x0550}}},
    3254   {0x0581, {1, {0x0551}}},
    3255   {0x0582, {1, {0x0552}}},
    3256   {0x0583, {1, {0x0553}}},
    3257   {0x0584, {1, {0x0554}}},
    3258   {0x0585, {1, {0x0555}}},
    3259   {0x0586, {1, {0x0556}}},
    3260   {0x1d79, {1, {0xa77d}}},
    3261   {0x1d7d, {1, {0x2c63}}},
    3262   {0x1e01, {1, {0x1e00}}},
    3263   {0x1e03, {1, {0x1e02}}},
    3264   {0x1e05, {1, {0x1e04}}},
    3265   {0x1e07, {1, {0x1e06}}},
    3266   {0x1e09, {1, {0x1e08}}},
    3267   {0x1e0b, {1, {0x1e0a}}},
    3268   {0x1e0d, {1, {0x1e0c}}},
    3269   {0x1e0f, {1, {0x1e0e}}},
    3270   {0x1e11, {1, {0x1e10}}},
    3271   {0x1e13, {1, {0x1e12}}},
    3272   {0x1e15, {1, {0x1e14}}},
    3273   {0x1e17, {1, {0x1e16}}},
    3274   {0x1e19, {1, {0x1e18}}},
    3275   {0x1e1b, {1, {0x1e1a}}},
    3276   {0x1e1d, {1, {0x1e1c}}},
    3277   {0x1e1f, {1, {0x1e1e}}},
    3278   {0x1e21, {1, {0x1e20}}},
    3279   {0x1e23, {1, {0x1e22}}},
    3280   {0x1e25, {1, {0x1e24}}},
    3281   {0x1e27, {1, {0x1e26}}},
    3282   {0x1e29, {1, {0x1e28}}},
    3283   {0x1e2b, {1, {0x1e2a}}},
    3284   {0x1e2d, {1, {0x1e2c}}},
    3285   {0x1e2f, {1, {0x1e2e}}},
    3286   {0x1e31, {1, {0x1e30}}},
    3287   {0x1e33, {1, {0x1e32}}},
    3288   {0x1e35, {1, {0x1e34}}},
    3289   {0x1e37, {1, {0x1e36}}},
    3290   {0x1e39, {1, {0x1e38}}},
    3291   {0x1e3b, {1, {0x1e3a}}},
    3292   {0x1e3d, {1, {0x1e3c}}},
    3293   {0x1e3f, {1, {0x1e3e}}},
    3294   {0x1e41, {1, {0x1e40}}},
    3295   {0x1e43, {1, {0x1e42}}},
    3296   {0x1e45, {1, {0x1e44}}},
    3297   {0x1e47, {1, {0x1e46}}},
    3298   {0x1e49, {1, {0x1e48}}},
    3299   {0x1e4b, {1, {0x1e4a}}},
    3300   {0x1e4d, {1, {0x1e4c}}},
    3301   {0x1e4f, {1, {0x1e4e}}},
    3302   {0x1e51, {1, {0x1e50}}},
    3303   {0x1e53, {1, {0x1e52}}},
    3304   {0x1e55, {1, {0x1e54}}},
    3305   {0x1e57, {1, {0x1e56}}},
    3306   {0x1e59, {1, {0x1e58}}},
    3307   {0x1e5b, {1, {0x1e5a}}},
    3308   {0x1e5d, {1, {0x1e5c}}},
    3309   {0x1e5f, {1, {0x1e5e}}},
    3310   {0x1e61, {2, {0x1e60, 0x1e9b}}},
    3311   {0x1e63, {1, {0x1e62}}},
    3312   {0x1e65, {1, {0x1e64}}},
    3313   {0x1e67, {1, {0x1e66}}},
    3314   {0x1e69, {1, {0x1e68}}},
    3315   {0x1e6b, {1, {0x1e6a}}},
    3316   {0x1e6d, {1, {0x1e6c}}},
    3317   {0x1e6f, {1, {0x1e6e}}},
    3318   {0x1e71, {1, {0x1e70}}},
    3319   {0x1e73, {1, {0x1e72}}},
    3320   {0x1e75, {1, {0x1e74}}},
    3321   {0x1e77, {1, {0x1e76}}},
    3322   {0x1e79, {1, {0x1e78}}},
    3323   {0x1e7b, {1, {0x1e7a}}},
    3324   {0x1e7d, {1, {0x1e7c}}},
    3325   {0x1e7f, {1, {0x1e7e}}},
    3326   {0x1e81, {1, {0x1e80}}},
    3327   {0x1e83, {1, {0x1e82}}},
    3328   {0x1e85, {1, {0x1e84}}},
    3329   {0x1e87, {1, {0x1e86}}},
    3330   {0x1e89, {1, {0x1e88}}},
    3331   {0x1e8b, {1, {0x1e8a}}},
    3332   {0x1e8d, {1, {0x1e8c}}},
    3333   {0x1e8f, {1, {0x1e8e}}},
    3334   {0x1e91, {1, {0x1e90}}},
    3335   {0x1e93, {1, {0x1e92}}},
    3336   {0x1e95, {1, {0x1e94}}},
    3337   {0x1ea1, {1, {0x1ea0}}},
    3338   {0x1ea3, {1, {0x1ea2}}},
    3339   {0x1ea5, {1, {0x1ea4}}},
    3340   {0x1ea7, {1, {0x1ea6}}},
    3341   {0x1ea9, {1, {0x1ea8}}},
    3342   {0x1eab, {1, {0x1eaa}}},
    3343   {0x1ead, {1, {0x1eac}}},
    3344   {0x1eaf, {1, {0x1eae}}},
    3345   {0x1eb1, {1, {0x1eb0}}},
    3346   {0x1eb3, {1, {0x1eb2}}},
    3347   {0x1eb5, {1, {0x1eb4}}},
    3348   {0x1eb7, {1, {0x1eb6}}},
    3349   {0x1eb9, {1, {0x1eb8}}},
    3350   {0x1ebb, {1, {0x1eba}}},
    3351   {0x1ebd, {1, {0x1ebc}}},
    3352   {0x1ebf, {1, {0x1ebe}}},
    3353   {0x1ec1, {1, {0x1ec0}}},
    3354   {0x1ec3, {1, {0x1ec2}}},
    3355   {0x1ec5, {1, {0x1ec4}}},
    3356   {0x1ec7, {1, {0x1ec6}}},
    3357   {0x1ec9, {1, {0x1ec8}}},
    3358   {0x1ecb, {1, {0x1eca}}},
    3359   {0x1ecd, {1, {0x1ecc}}},
    3360   {0x1ecf, {1, {0x1ece}}},
    3361   {0x1ed1, {1, {0x1ed0}}},
    3362   {0x1ed3, {1, {0x1ed2}}},
    3363   {0x1ed5, {1, {0x1ed4}}},
    3364   {0x1ed7, {1, {0x1ed6}}},
    3365   {0x1ed9, {1, {0x1ed8}}},
    3366   {0x1edb, {1, {0x1eda}}},
    3367   {0x1edd, {1, {0x1edc}}},
    3368   {0x1edf, {1, {0x1ede}}},
    3369   {0x1ee1, {1, {0x1ee0}}},
    3370   {0x1ee3, {1, {0x1ee2}}},
    3371   {0x1ee5, {1, {0x1ee4}}},
    3372   {0x1ee7, {1, {0x1ee6}}},
    3373   {0x1ee9, {1, {0x1ee8}}},
    3374   {0x1eeb, {1, {0x1eea}}},
    3375   {0x1eed, {1, {0x1eec}}},
    3376   {0x1eef, {1, {0x1eee}}},
    3377   {0x1ef1, {1, {0x1ef0}}},
    3378   {0x1ef3, {1, {0x1ef2}}},
    3379   {0x1ef5, {1, {0x1ef4}}},
    3380   {0x1ef7, {1, {0x1ef6}}},
    3381   {0x1ef9, {1, {0x1ef8}}},
    3382   {0x1efb, {1, {0x1efa}}},
    3383   {0x1efd, {1, {0x1efc}}},
    3384   {0x1eff, {1, {0x1efe}}},
    3385   {0x1f00, {1, {0x1f08}}},
    3386   {0x1f01, {1, {0x1f09}}},
    3387   {0x1f02, {1, {0x1f0a}}},
    3388   {0x1f03, {1, {0x1f0b}}},
    3389   {0x1f04, {1, {0x1f0c}}},
    3390   {0x1f05, {1, {0x1f0d}}},
    3391   {0x1f06, {1, {0x1f0e}}},
    3392   {0x1f07, {1, {0x1f0f}}},
    3393   {0x1f10, {1, {0x1f18}}},
    3394   {0x1f11, {1, {0x1f19}}},
    3395   {0x1f12, {1, {0x1f1a}}},
    3396   {0x1f13, {1, {0x1f1b}}},
    3397   {0x1f14, {1, {0x1f1c}}},
    3398   {0x1f15, {1, {0x1f1d}}},
    3399   {0x1f20, {1, {0x1f28}}},
    3400   {0x1f21, {1, {0x1f29}}},
    3401   {0x1f22, {1, {0x1f2a}}},
    3402   {0x1f23, {1, {0x1f2b}}},
    3403   {0x1f24, {1, {0x1f2c}}},
    3404   {0x1f25, {1, {0x1f2d}}},
    3405   {0x1f26, {1, {0x1f2e}}},
    3406   {0x1f27, {1, {0x1f2f}}},
    3407   {0x1f30, {1, {0x1f38}}},
    3408   {0x1f31, {1, {0x1f39}}},
    3409   {0x1f32, {1, {0x1f3a}}},
    3410   {0x1f33, {1, {0x1f3b}}},
    3411   {0x1f34, {1, {0x1f3c}}},
    3412   {0x1f35, {1, {0x1f3d}}},
    3413   {0x1f36, {1, {0x1f3e}}},
    3414   {0x1f37, {1, {0x1f3f}}},
    3415   {0x1f40, {1, {0x1f48}}},
    3416   {0x1f41, {1, {0x1f49}}},
    3417   {0x1f42, {1, {0x1f4a}}},
    3418   {0x1f43, {1, {0x1f4b}}},
    3419   {0x1f44, {1, {0x1f4c}}},
    3420   {0x1f45, {1, {0x1f4d}}},
    3421   {0x1f51, {1, {0x1f59}}},
    3422   {0x1f53, {1, {0x1f5b}}},
    3423   {0x1f55, {1, {0x1f5d}}},
    3424   {0x1f57, {1, {0x1f5f}}},
    3425   {0x1f60, {1, {0x1f68}}},
    3426   {0x1f61, {1, {0x1f69}}},
    3427   {0x1f62, {1, {0x1f6a}}},
    3428   {0x1f63, {1, {0x1f6b}}},
    3429   {0x1f64, {1, {0x1f6c}}},
    3430   {0x1f65, {1, {0x1f6d}}},
    3431   {0x1f66, {1, {0x1f6e}}},
    3432   {0x1f67, {1, {0x1f6f}}},
    3433   {0x1f70, {1, {0x1fba}}},
    3434   {0x1f71, {1, {0x1fbb}}},
    3435   {0x1f72, {1, {0x1fc8}}},
    3436   {0x1f73, {1, {0x1fc9}}},
    3437   {0x1f74, {1, {0x1fca}}},
    3438   {0x1f75, {1, {0x1fcb}}},
    3439   {0x1f76, {1, {0x1fda}}},
    3440   {0x1f77, {1, {0x1fdb}}},
    3441   {0x1f78, {1, {0x1ff8}}},
    3442   {0x1f79, {1, {0x1ff9}}},
    3443   {0x1f7a, {1, {0x1fea}}},
    3444   {0x1f7b, {1, {0x1feb}}},
    3445   {0x1f7c, {1, {0x1ffa}}},
    3446   {0x1f7d, {1, {0x1ffb}}},
    3447   {0x1fb0, {1, {0x1fb8}}},
    3448   {0x1fb1, {1, {0x1fb9}}},
    3449   {0x1fd0, {1, {0x1fd8}}},
    3450   {0x1fd1, {1, {0x1fd9}}},
    3451   {0x1fe0, {1, {0x1fe8}}},
    3452   {0x1fe1, {1, {0x1fe9}}},
    3453   {0x1fe5, {1, {0x1fec}}},
    3454   {0x214e, {1, {0x2132}}},
    3455   {0x2170, {1, {0x2160}}},
    3456   {0x2171, {1, {0x2161}}},
    3457   {0x2172, {1, {0x2162}}},
    3458   {0x2173, {1, {0x2163}}},
    3459   {0x2174, {1, {0x2164}}},
    3460   {0x2175, {1, {0x2165}}},
    3461   {0x2176, {1, {0x2166}}},
    3462   {0x2177, {1, {0x2167}}},
    3463   {0x2178, {1, {0x2168}}},
    3464   {0x2179, {1, {0x2169}}},
    3465   {0x217a, {1, {0x216a}}},
    3466   {0x217b, {1, {0x216b}}},
    3467   {0x217c, {1, {0x216c}}},
    3468   {0x217d, {1, {0x216d}}},
    3469   {0x217e, {1, {0x216e}}},
    3470   {0x217f, {1, {0x216f}}},
    3471   {0x2184, {1, {0x2183}}},
    3472   {0x24d0, {1, {0x24b6}}},
    3473   {0x24d1, {1, {0x24b7}}},
    3474   {0x24d2, {1, {0x24b8}}},
    3475   {0x24d3, {1, {0x24b9}}},
    3476   {0x24d4, {1, {0x24ba}}},
    3477   {0x24d5, {1, {0x24bb}}},
    3478   {0x24d6, {1, {0x24bc}}},
    3479   {0x24d7, {1, {0x24bd}}},
    3480   {0x24d8, {1, {0x24be}}},
    3481   {0x24d9, {1, {0x24bf}}},
    3482   {0x24da, {1, {0x24c0}}},
    3483   {0x24db, {1, {0x24c1}}},
    3484   {0x24dc, {1, {0x24c2}}},
    3485   {0x24dd, {1, {0x24c3}}},
    3486   {0x24de, {1, {0x24c4}}},
    3487   {0x24df, {1, {0x24c5}}},
    3488   {0x24e0, {1, {0x24c6}}},
    3489   {0x24e1, {1, {0x24c7}}},
    3490   {0x24e2, {1, {0x24c8}}},
    3491   {0x24e3, {1, {0x24c9}}},
    3492   {0x24e4, {1, {0x24ca}}},
    3493   {0x24e5, {1, {0x24cb}}},
    3494   {0x24e6, {1, {0x24cc}}},
    3495   {0x24e7, {1, {0x24cd}}},
    3496   {0x24e8, {1, {0x24ce}}},
    3497   {0x24e9, {1, {0x24cf}}},
    3498   {0x2c30, {1, {0x2c00}}},
    3499   {0x2c31, {1, {0x2c01}}},
    3500   {0x2c32, {1, {0x2c02}}},
    3501   {0x2c33, {1, {0x2c03}}},
    3502   {0x2c34, {1, {0x2c04}}},
    3503   {0x2c35, {1, {0x2c05}}},
    3504   {0x2c36, {1, {0x2c06}}},
    3505   {0x2c37, {1, {0x2c07}}},
    3506   {0x2c38, {1, {0x2c08}}},
    3507   {0x2c39, {1, {0x2c09}}},
    3508   {0x2c3a, {1, {0x2c0a}}},
    3509   {0x2c3b, {1, {0x2c0b}}},
    3510   {0x2c3c, {1, {0x2c0c}}},
    3511   {0x2c3d, {1, {0x2c0d}}},
    3512   {0x2c3e, {1, {0x2c0e}}},
    3513   {0x2c3f, {1, {0x2c0f}}},
    3514   {0x2c40, {1, {0x2c10}}},
    3515   {0x2c41, {1, {0x2c11}}},
    3516   {0x2c42, {1, {0x2c12}}},
    3517   {0x2c43, {1, {0x2c13}}},
    3518   {0x2c44, {1, {0x2c14}}},
    3519   {0x2c45, {1, {0x2c15}}},
    3520   {0x2c46, {1, {0x2c16}}},
    3521   {0x2c47, {1, {0x2c17}}},
    3522   {0x2c48, {1, {0x2c18}}},
    3523   {0x2c49, {1, {0x2c19}}},
    3524   {0x2c4a, {1, {0x2c1a}}},
    3525   {0x2c4b, {1, {0x2c1b}}},
    3526   {0x2c4c, {1, {0x2c1c}}},
    3527   {0x2c4d, {1, {0x2c1d}}},
    3528   {0x2c4e, {1, {0x2c1e}}},
    3529   {0x2c4f, {1, {0x2c1f}}},
    3530   {0x2c50, {1, {0x2c20}}},
    3531   {0x2c51, {1, {0x2c21}}},
    3532   {0x2c52, {1, {0x2c22}}},
    3533   {0x2c53, {1, {0x2c23}}},
    3534   {0x2c54, {1, {0x2c24}}},
    3535   {0x2c55, {1, {0x2c25}}},
    3536   {0x2c56, {1, {0x2c26}}},
    3537   {0x2c57, {1, {0x2c27}}},
    3538   {0x2c58, {1, {0x2c28}}},
    3539   {0x2c59, {1, {0x2c29}}},
    3540   {0x2c5a, {1, {0x2c2a}}},
    3541   {0x2c5b, {1, {0x2c2b}}},
    3542   {0x2c5c, {1, {0x2c2c}}},
    3543   {0x2c5d, {1, {0x2c2d}}},
    3544   {0x2c5e, {1, {0x2c2e}}},
    3545   {0x2c61, {1, {0x2c60}}},
    3546   {0x2c65, {1, {0x023a}}},
    3547   {0x2c66, {1, {0x023e}}},
    3548   {0x2c68, {1, {0x2c67}}},
    3549   {0x2c6a, {1, {0x2c69}}},
    3550   {0x2c6c, {1, {0x2c6b}}},
    3551   {0x2c73, {1, {0x2c72}}},
    3552   {0x2c76, {1, {0x2c75}}},
    3553   {0x2c81, {1, {0x2c80}}},
    3554   {0x2c83, {1, {0x2c82}}},
    3555   {0x2c85, {1, {0x2c84}}},
    3556   {0x2c87, {1, {0x2c86}}},
    3557   {0x2c89, {1, {0x2c88}}},
    3558   {0x2c8b, {1, {0x2c8a}}},
    3559   {0x2c8d, {1, {0x2c8c}}},
    3560   {0x2c8f, {1, {0x2c8e}}},
    3561   {0x2c91, {1, {0x2c90}}},
    3562   {0x2c93, {1, {0x2c92}}},
    3563   {0x2c95, {1, {0x2c94}}},
    3564   {0x2c97, {1, {0x2c96}}},
    3565   {0x2c99, {1, {0x2c98}}},
    3566   {0x2c9b, {1, {0x2c9a}}},
    3567   {0x2c9d, {1, {0x2c9c}}},
    3568   {0x2c9f, {1, {0x2c9e}}},
    3569   {0x2ca1, {1, {0x2ca0}}},
    3570   {0x2ca3, {1, {0x2ca2}}},
    3571   {0x2ca5, {1, {0x2ca4}}},
    3572   {0x2ca7, {1, {0x2ca6}}},
    3573   {0x2ca9, {1, {0x2ca8}}},
    3574   {0x2cab, {1, {0x2caa}}},
    3575   {0x2cad, {1, {0x2cac}}},
    3576   {0x2caf, {1, {0x2cae}}},
    3577   {0x2cb1, {1, {0x2cb0}}},
    3578   {0x2cb3, {1, {0x2cb2}}},
    3579   {0x2cb5, {1, {0x2cb4}}},
    3580   {0x2cb7, {1, {0x2cb6}}},
    3581   {0x2cb9, {1, {0x2cb8}}},
    3582   {0x2cbb, {1, {0x2cba}}},
    3583   {0x2cbd, {1, {0x2cbc}}},
    3584   {0x2cbf, {1, {0x2cbe}}},
    3585   {0x2cc1, {1, {0x2cc0}}},
    3586   {0x2cc3, {1, {0x2cc2}}},
    3587   {0x2cc5, {1, {0x2cc4}}},
    3588   {0x2cc7, {1, {0x2cc6}}},
    3589   {0x2cc9, {1, {0x2cc8}}},
    3590   {0x2ccb, {1, {0x2cca}}},
    3591   {0x2ccd, {1, {0x2ccc}}},
    3592   {0x2ccf, {1, {0x2cce}}},
    3593   {0x2cd1, {1, {0x2cd0}}},
    3594   {0x2cd3, {1, {0x2cd2}}},
    3595   {0x2cd5, {1, {0x2cd4}}},
    3596   {0x2cd7, {1, {0x2cd6}}},
    3597   {0x2cd9, {1, {0x2cd8}}},
    3598   {0x2cdb, {1, {0x2cda}}},
    3599   {0x2cdd, {1, {0x2cdc}}},
    3600   {0x2cdf, {1, {0x2cde}}},
    3601   {0x2ce1, {1, {0x2ce0}}},
    3602   {0x2ce3, {1, {0x2ce2}}},
    3603   {0x2cec, {1, {0x2ceb}}},
    3604   {0x2cee, {1, {0x2ced}}},
    3605   {0x2cf3, {1, {0x2cf2}}},
    3606   {0x2d00, {1, {0x10a0}}},
    3607   {0x2d01, {1, {0x10a1}}},
    3608   {0x2d02, {1, {0x10a2}}},
    3609   {0x2d03, {1, {0x10a3}}},
    3610   {0x2d04, {1, {0x10a4}}},
    3611   {0x2d05, {1, {0x10a5}}},
    3612   {0x2d06, {1, {0x10a6}}},
    3613   {0x2d07, {1, {0x10a7}}},
    3614   {0x2d08, {1, {0x10a8}}},
    3615   {0x2d09, {1, {0x10a9}}},
    3616   {0x2d0a, {1, {0x10aa}}},
    3617   {0x2d0b, {1, {0x10ab}}},
    3618   {0x2d0c, {1, {0x10ac}}},
    3619   {0x2d0d, {1, {0x10ad}}},
    3620   {0x2d0e, {1, {0x10ae}}},
    3621   {0x2d0f, {1, {0x10af}}},
    3622   {0x2d10, {1, {0x10b0}}},
    3623   {0x2d11, {1, {0x10b1}}},
    3624   {0x2d12, {1, {0x10b2}}},
    3625   {0x2d13, {1, {0x10b3}}},
    3626   {0x2d14, {1, {0x10b4}}},
    3627   {0x2d15, {1, {0x10b5}}},
    3628   {0x2d16, {1, {0x10b6}}},
    3629   {0x2d17, {1, {0x10b7}}},
    3630   {0x2d18, {1, {0x10b8}}},
    3631   {0x2d19, {1, {0x10b9}}},
    3632   {0x2d1a, {1, {0x10ba}}},
    3633   {0x2d1b, {1, {0x10bb}}},
    3634   {0x2d1c, {1, {0x10bc}}},
    3635   {0x2d1d, {1, {0x10bd}}},
    3636   {0x2d1e, {1, {0x10be}}},
    3637   {0x2d1f, {1, {0x10bf}}},
    3638   {0x2d20, {1, {0x10c0}}},
    3639   {0x2d21, {1, {0x10c1}}},
    3640   {0x2d22, {1, {0x10c2}}},
    3641   {0x2d23, {1, {0x10c3}}},
    3642   {0x2d24, {1, {0x10c4}}},
    3643   {0x2d25, {1, {0x10c5}}},
    3644   {0x2d27, {1, {0x10c7}}},
    3645   {0x2d2d, {1, {0x10cd}}},
    3646   {0xa641, {1, {0xa640}}},
    3647   {0xa643, {1, {0xa642}}},
    3648   {0xa645, {1, {0xa644}}},
    3649   {0xa647, {1, {0xa646}}},
    3650   {0xa649, {1, {0xa648}}},
    3651   {0xa64b, {1, {0xa64a}}},
    3652   {0xa64d, {1, {0xa64c}}},
    3653   {0xa64f, {1, {0xa64e}}},
    3654   {0xa651, {1, {0xa650}}},
    3655   {0xa653, {1, {0xa652}}},
    3656   {0xa655, {1, {0xa654}}},
    3657   {0xa657, {1, {0xa656}}},
    3658   {0xa659, {1, {0xa658}}},
    3659   {0xa65b, {1, {0xa65a}}},
    3660   {0xa65d, {1, {0xa65c}}},
    3661   {0xa65f, {1, {0xa65e}}},
    3662   {0xa661, {1, {0xa660}}},
    3663   {0xa663, {1, {0xa662}}},
    3664   {0xa665, {1, {0xa664}}},
    3665   {0xa667, {1, {0xa666}}},
    3666   {0xa669, {1, {0xa668}}},
    3667   {0xa66b, {1, {0xa66a}}},
    3668   {0xa66d, {1, {0xa66c}}},
    3669   {0xa681, {1, {0xa680}}},
    3670   {0xa683, {1, {0xa682}}},
    3671   {0xa685, {1, {0xa684}}},
    3672   {0xa687, {1, {0xa686}}},
    3673   {0xa689, {1, {0xa688}}},
    3674   {0xa68b, {1, {0xa68a}}},
    3675   {0xa68d, {1, {0xa68c}}},
    3676   {0xa68f, {1, {0xa68e}}},
    3677   {0xa691, {1, {0xa690}}},
    3678   {0xa693, {1, {0xa692}}},
    3679   {0xa695, {1, {0xa694}}},
    3680   {0xa697, {1, {0xa696}}},
    3681   {0xa699, {1, {0xa698}}},
    3682   {0xa69b, {1, {0xa69a}}},
    3683   {0xa723, {1, {0xa722}}},
    3684   {0xa725, {1, {0xa724}}},
    3685   {0xa727, {1, {0xa726}}},
    3686   {0xa729, {1, {0xa728}}},
    3687   {0xa72b, {1, {0xa72a}}},
    3688   {0xa72d, {1, {0xa72c}}},
    3689   {0xa72f, {1, {0xa72e}}},
    3690   {0xa733, {1, {0xa732}}},
    3691   {0xa735, {1, {0xa734}}},
    3692   {0xa737, {1, {0xa736}}},
    3693   {0xa739, {1, {0xa738}}},
    3694   {0xa73b, {1, {0xa73a}}},
    3695   {0xa73d, {1, {0xa73c}}},
    3696   {0xa73f, {1, {0xa73e}}},
    3697   {0xa741, {1, {0xa740}}},
    3698   {0xa743, {1, {0xa742}}},
    3699   {0xa745, {1, {0xa744}}},
    3700   {0xa747, {1, {0xa746}}},
    3701   {0xa749, {1, {0xa748}}},
    3702   {0xa74b, {1, {0xa74a}}},
    3703   {0xa74d, {1, {0xa74c}}},
    3704   {0xa74f, {1, {0xa74e}}},
    3705   {0xa751, {1, {0xa750}}},
    3706   {0xa753, {1, {0xa752}}},
    3707   {0xa755, {1, {0xa754}}},
    3708   {0xa757, {1, {0xa756}}},
    3709   {0xa759, {1, {0xa758}}},
    3710   {0xa75b, {1, {0xa75a}}},
    3711   {0xa75d, {1, {0xa75c}}},
    3712   {0xa75f, {1, {0xa75e}}},
    3713   {0xa761, {1, {0xa760}}},
    3714   {0xa763, {1, {0xa762}}},
    3715   {0xa765, {1, {0xa764}}},
    3716   {0xa767, {1, {0xa766}}},
    3717   {0xa769, {1, {0xa768}}},
    3718   {0xa76b, {1, {0xa76a}}},
    3719   {0xa76d, {1, {0xa76c}}},
    3720   {0xa76f, {1, {0xa76e}}},
    3721   {0xa77a, {1, {0xa779}}},
    3722   {0xa77c, {1, {0xa77b}}},
    3723   {0xa77f, {1, {0xa77e}}},
    3724   {0xa781, {1, {0xa780}}},
    3725   {0xa783, {1, {0xa782}}},
    3726   {0xa785, {1, {0xa784}}},
    3727   {0xa787, {1, {0xa786}}},
    3728   {0xa78c, {1, {0xa78b}}},
    3729   {0xa791, {1, {0xa790}}},
    3730   {0xa793, {1, {0xa792}}},
    3731   {0xa797, {1, {0xa796}}},
    3732   {0xa799, {1, {0xa798}}},
    3733   {0xa79b, {1, {0xa79a}}},
    3734   {0xa79d, {1, {0xa79c}}},
    3735   {0xa79f, {1, {0xa79e}}},
    3736   {0xa7a1, {1, {0xa7a0}}},
    3737   {0xa7a3, {1, {0xa7a2}}},
    3738   {0xa7a5, {1, {0xa7a4}}},
    3739   {0xa7a7, {1, {0xa7a6}}},
    3740   {0xa7a9, {1, {0xa7a8}}},
    3741   {0xff41, {1, {0xff21}}},
    3742   {0xff42, {1, {0xff22}}},
    3743   {0xff43, {1, {0xff23}}},
    3744   {0xff44, {1, {0xff24}}},
    3745   {0xff45, {1, {0xff25}}},
    3746   {0xff46, {1, {0xff26}}},
    3747   {0xff47, {1, {0xff27}}},
    3748   {0xff48, {1, {0xff28}}},
    3749   {0xff49, {1, {0xff29}}},
    3750   {0xff4a, {1, {0xff2a}}},
    3751   {0xff4b, {1, {0xff2b}}},
    3752   {0xff4c, {1, {0xff2c}}},
    3753   {0xff4d, {1, {0xff2d}}},
    3754   {0xff4e, {1, {0xff2e}}},
    3755   {0xff4f, {1, {0xff2f}}},
    3756   {0xff50, {1, {0xff30}}},
    3757   {0xff51, {1, {0xff31}}},
    3758   {0xff52, {1, {0xff32}}},
    3759   {0xff53, {1, {0xff33}}},
    3760   {0xff54, {1, {0xff34}}},
    3761   {0xff55, {1, {0xff35}}},
    3762   {0xff56, {1, {0xff36}}},
    3763   {0xff57, {1, {0xff37}}},
    3764   {0xff58, {1, {0xff38}}},
    3765   {0xff59, {1, {0xff39}}},
    3766   {0xff5a, {1, {0xff3a}}},
    3767   {0x10428, {1, {0x10400}}},
    3768   {0x10429, {1, {0x10401}}},
    3769   {0x1042a, {1, {0x10402}}},
    3770   {0x1042b, {1, {0x10403}}},
    3771   {0x1042c, {1, {0x10404}}},
    3772   {0x1042d, {1, {0x10405}}},
    3773   {0x1042e, {1, {0x10406}}},
    3774   {0x1042f, {1, {0x10407}}},
    3775   {0x10430, {1, {0x10408}}},
    3776   {0x10431, {1, {0x10409}}},
    3777   {0x10432, {1, {0x1040a}}},
    3778   {0x10433, {1, {0x1040b}}},
    3779   {0x10434, {1, {0x1040c}}},
    3780   {0x10435, {1, {0x1040d}}},
    3781   {0x10436, {1, {0x1040e}}},
    3782   {0x10437, {1, {0x1040f}}},
    3783   {0x10438, {1, {0x10410}}},
    3784   {0x10439, {1, {0x10411}}},
    3785   {0x1043a, {1, {0x10412}}},
    3786   {0x1043b, {1, {0x10413}}},
    3787   {0x1043c, {1, {0x10414}}},
    3788   {0x1043d, {1, {0x10415}}},
    3789   {0x1043e, {1, {0x10416}}},
    3790   {0x1043f, {1, {0x10417}}},
    3791   {0x10440, {1, {0x10418}}},
    3792   {0x10441, {1, {0x10419}}},
    3793   {0x10442, {1, {0x1041a}}},
    3794   {0x10443, {1, {0x1041b}}},
    3795   {0x10444, {1, {0x1041c}}},
    3796   {0x10445, {1, {0x1041d}}},
    3797   {0x10446, {1, {0x1041e}}},
    3798   {0x10447, {1, {0x1041f}}},
    3799   {0x10448, {1, {0x10420}}},
    3800   {0x10449, {1, {0x10421}}},
    3801   {0x1044a, {1, {0x10422}}},
    3802   {0x1044b, {1, {0x10423}}},
    3803   {0x1044c, {1, {0x10424}}},
    3804   {0x1044d, {1, {0x10425}}},
    3805   {0x1044e, {1, {0x10426}}},
    3806   {0x1044f, {1, {0x10427}}},
    3807   {0x118c0, {1, {0x118a0}}},
    3808   {0x118c1, {1, {0x118a1}}},
    3809   {0x118c2, {1, {0x118a2}}},
    3810   {0x118c3, {1, {0x118a3}}},
    3811   {0x118c4, {1, {0x118a4}}},
    3812   {0x118c5, {1, {0x118a5}}},
    3813   {0x118c6, {1, {0x118a6}}},
    3814   {0x118c7, {1, {0x118a7}}},
    3815   {0x118c8, {1, {0x118a8}}},
    3816   {0x118c9, {1, {0x118a9}}},
    3817   {0x118ca, {1, {0x118aa}}},
    3818   {0x118cb, {1, {0x118ab}}},
    3819   {0x118cc, {1, {0x118ac}}},
    3820   {0x118cd, {1, {0x118ad}}},
    3821   {0x118ce, {1, {0x118ae}}},
    3822   {0x118cf, {1, {0x118af}}},
    3823   {0x118d0, {1, {0x118b0}}},
    3824   {0x118d1, {1, {0x118b1}}},
    3825   {0x118d2, {1, {0x118b2}}},
    3826   {0x118d3, {1, {0x118b3}}},
    3827   {0x118d4, {1, {0x118b4}}},
    3828   {0x118d5, {1, {0x118b5}}},
    3829   {0x118d6, {1, {0x118b6}}},
    3830   {0x118d7, {1, {0x118b7}}},
    3831   {0x118d8, {1, {0x118b8}}},
    3832   {0x118d9, {1, {0x118b9}}},
    3833   {0x118da, {1, {0x118ba}}},
    3834   {0x118db, {1, {0x118bb}}},
    3835   {0x118dc, {1, {0x118bc}}},
    3836   {0x118dd, {1, {0x118bd}}},
    3837   {0x118de, {1, {0x118be}}},
    3838   {0x118df, {1, {0x118bf}}},
    3839 #define CaseUnfold_11_Locale (*(CaseUnfold_11_Type (*)[1])(CaseUnfold_11_Table+1054))
    3840   {0x0069, {1, {0x0049}}},
     3594#define CaseUnfold_11 (*(CaseUnfold_11_Type (*)[1266])(CaseUnfold_11_Table+0))
     3595  {0x0061, {1|U, {0x0041}}},
     3596  {0x0062, {1|U, {0x0042}}},
     3597  {0x0063, {1|U, {0x0043}}},
     3598  {0x0064, {1|U, {0x0044}}},
     3599  {0x0065, {1|U, {0x0045}}},
     3600  {0x0066, {1|U, {0x0046}}},
     3601  {0x0067, {1|U, {0x0047}}},
     3602  {0x0068, {1|U, {0x0048}}},
     3603  {0x006a, {1|U, {0x004a}}},
     3604  {0x006b, {2|U, {0x004b, 0x212a}}},
     3605  {0x006c, {1|U, {0x004c}}},
     3606  {0x006d, {1|U, {0x004d}}},
     3607  {0x006e, {1|U, {0x004e}}},
     3608  {0x006f, {1|U, {0x004f}}},
     3609  {0x0070, {1|U, {0x0050}}},
     3610  {0x0071, {1|U, {0x0051}}},
     3611  {0x0072, {1|U, {0x0052}}},
     3612  {0x0073, {2|U, {0x0053, 0x017f}}},
     3613  {0x0074, {1|U, {0x0054}}},
     3614  {0x0075, {1|U, {0x0055}}},
     3615  {0x0076, {1|U, {0x0056}}},
     3616  {0x0077, {1|U, {0x0057}}},
     3617  {0x0078, {1|U, {0x0058}}},
     3618  {0x0079, {1|U, {0x0059}}},
     3619  {0x007a, {1|U, {0x005a}}},
     3620  {0x00e0, {1|U, {0x00c0}}},
     3621  {0x00e1, {1|U, {0x00c1}}},
     3622  {0x00e2, {1|U, {0x00c2}}},
     3623  {0x00e3, {1|U, {0x00c3}}},
     3624  {0x00e4, {1|U, {0x00c4}}},
     3625  {0x00e5, {2|U, {0x00c5, 0x212b}}},
     3626  {0x00e6, {1|U, {0x00c6}}},
     3627  {0x00e7, {1|U, {0x00c7}}},
     3628  {0x00e8, {1|U, {0x00c8}}},
     3629  {0x00e9, {1|U, {0x00c9}}},
     3630  {0x00ea, {1|U, {0x00ca}}},
     3631  {0x00eb, {1|U, {0x00cb}}},
     3632  {0x00ec, {1|U, {0x00cc}}},
     3633  {0x00ed, {1|U, {0x00cd}}},
     3634  {0x00ee, {1|U, {0x00ce}}},
     3635  {0x00ef, {1|U, {0x00cf}}},
     3636  {0x00f0, {1|U, {0x00d0}}},
     3637  {0x00f1, {1|U, {0x00d1}}},
     3638  {0x00f2, {1|U, {0x00d2}}},
     3639  {0x00f3, {1|U, {0x00d3}}},
     3640  {0x00f4, {1|U, {0x00d4}}},
     3641  {0x00f5, {1|U, {0x00d5}}},
     3642  {0x00f6, {1|U, {0x00d6}}},
     3643  {0x00f8, {1|U, {0x00d8}}},
     3644  {0x00f9, {1|U, {0x00d9}}},
     3645  {0x00fa, {1|U, {0x00da}}},
     3646  {0x00fb, {1|U, {0x00db}}},
     3647  {0x00fc, {1|U, {0x00dc}}},
     3648  {0x00fd, {1|U, {0x00dd}}},
     3649  {0x00fe, {1|U, {0x00de}}},
     3650  {0x00ff, {1|U, {0x0178}}},
     3651  {0x0101, {1|U, {0x0100}}},
     3652  {0x0103, {1|U, {0x0102}}},
     3653  {0x0105, {1|U, {0x0104}}},
     3654  {0x0107, {1|U, {0x0106}}},
     3655  {0x0109, {1|U, {0x0108}}},
     3656  {0x010b, {1|U, {0x010a}}},
     3657  {0x010d, {1|U, {0x010c}}},
     3658  {0x010f, {1|U, {0x010e}}},
     3659  {0x0111, {1|U, {0x0110}}},
     3660  {0x0113, {1|U, {0x0112}}},
     3661  {0x0115, {1|U, {0x0114}}},
     3662  {0x0117, {1|U, {0x0116}}},
     3663  {0x0119, {1|U, {0x0118}}},
     3664  {0x011b, {1|U, {0x011a}}},
     3665  {0x011d, {1|U, {0x011c}}},
     3666  {0x011f, {1|U, {0x011e}}},
     3667  {0x0121, {1|U, {0x0120}}},
     3668  {0x0123, {1|U, {0x0122}}},
     3669  {0x0125, {1|U, {0x0124}}},
     3670  {0x0127, {1|U, {0x0126}}},
     3671  {0x0129, {1|U, {0x0128}}},
     3672  {0x012b, {1|U, {0x012a}}},
     3673  {0x012d, {1|U, {0x012c}}},
     3674  {0x012f, {1|U, {0x012e}}},
     3675  {0x0133, {1|U, {0x0132}}},
     3676  {0x0135, {1|U, {0x0134}}},
     3677  {0x0137, {1|U, {0x0136}}},
     3678  {0x013a, {1|U, {0x0139}}},
     3679  {0x013c, {1|U, {0x013b}}},
     3680  {0x013e, {1|U, {0x013d}}},
     3681  {0x0140, {1|U, {0x013f}}},
     3682  {0x0142, {1|U, {0x0141}}},
     3683  {0x0144, {1|U, {0x0143}}},
     3684  {0x0146, {1|U, {0x0145}}},
     3685  {0x0148, {1|U, {0x0147}}},
     3686  {0x014b, {1|U, {0x014a}}},
     3687  {0x014d, {1|U, {0x014c}}},
     3688  {0x014f, {1|U, {0x014e}}},
     3689  {0x0151, {1|U, {0x0150}}},
     3690  {0x0153, {1|U, {0x0152}}},
     3691  {0x0155, {1|U, {0x0154}}},
     3692  {0x0157, {1|U, {0x0156}}},
     3693  {0x0159, {1|U, {0x0158}}},
     3694  {0x015b, {1|U, {0x015a}}},
     3695  {0x015d, {1|U, {0x015c}}},
     3696  {0x015f, {1|U, {0x015e}}},
     3697  {0x0161, {1|U, {0x0160}}},
     3698  {0x0163, {1|U, {0x0162}}},
     3699  {0x0165, {1|U, {0x0164}}},
     3700  {0x0167, {1|U, {0x0166}}},
     3701  {0x0169, {1|U, {0x0168}}},
     3702  {0x016b, {1|U, {0x016a}}},
     3703  {0x016d, {1|U, {0x016c}}},
     3704  {0x016f, {1|U, {0x016e}}},
     3705  {0x0171, {1|U, {0x0170}}},
     3706  {0x0173, {1|U, {0x0172}}},
     3707  {0x0175, {1|U, {0x0174}}},
     3708  {0x0177, {1|U, {0x0176}}},
     3709  {0x017a, {1|U, {0x0179}}},
     3710  {0x017c, {1|U, {0x017b}}},
     3711  {0x017e, {1|U, {0x017d}}},
     3712  {0x0180, {1|U, {0x0243}}},
     3713  {0x0183, {1|U, {0x0182}}},
     3714  {0x0185, {1|U, {0x0184}}},
     3715  {0x0188, {1|U, {0x0187}}},
     3716  {0x018c, {1|U, {0x018b}}},
     3717  {0x0192, {1|U, {0x0191}}},
     3718  {0x0195, {1|U, {0x01f6}}},
     3719  {0x0199, {1|U, {0x0198}}},
     3720  {0x019a, {1|U, {0x023d}}},
     3721  {0x019e, {1|U, {0x0220}}},
     3722  {0x01a1, {1|U, {0x01a0}}},
     3723  {0x01a3, {1|U, {0x01a2}}},
     3724  {0x01a5, {1|U, {0x01a4}}},
     3725  {0x01a8, {1|U, {0x01a7}}},
     3726  {0x01ad, {1|U, {0x01ac}}},
     3727  {0x01b0, {1|U, {0x01af}}},
     3728  {0x01b4, {1|U, {0x01b3}}},
     3729  {0x01b6, {1|U, {0x01b5}}},
     3730  {0x01b9, {1|U, {0x01b8}}},
     3731  {0x01bd, {1|U, {0x01bc}}},
     3732  {0x01bf, {1|U, {0x01f7}}},
     3733  {0x01c6, {2|U|ST, {0x01c4, 0x01c5}}},
     3734  {0x01c9, {2|U|ST, {0x01c7, 0x01c8}}},
     3735  {0x01cc, {2|U|ST, {0x01ca, 0x01cb}}},
     3736  {0x01ce, {1|U, {0x01cd}}},
     3737  {0x01d0, {1|U, {0x01cf}}},
     3738  {0x01d2, {1|U, {0x01d1}}},
     3739  {0x01d4, {1|U, {0x01d3}}},
     3740  {0x01d6, {1|U, {0x01d5}}},
     3741  {0x01d8, {1|U, {0x01d7}}},
     3742  {0x01da, {1|U, {0x01d9}}},
     3743  {0x01dc, {1|U, {0x01db}}},
     3744  {0x01dd, {1|U, {0x018e}}},
     3745  {0x01df, {1|U, {0x01de}}},
     3746  {0x01e1, {1|U, {0x01e0}}},
     3747  {0x01e3, {1|U, {0x01e2}}},
     3748  {0x01e5, {1|U, {0x01e4}}},
     3749  {0x01e7, {1|U, {0x01e6}}},
     3750  {0x01e9, {1|U, {0x01e8}}},
     3751  {0x01eb, {1|U, {0x01ea}}},
     3752  {0x01ed, {1|U, {0x01ec}}},
     3753  {0x01ef, {1|U, {0x01ee}}},
     3754  {0x01f3, {2|U|ST, {0x01f1, 0x01f2}}},
     3755  {0x01f5, {1|U, {0x01f4}}},
     3756  {0x01f9, {1|U, {0x01f8}}},
     3757  {0x01fb, {1|U, {0x01fa}}},
     3758  {0x01fd, {1|U, {0x01fc}}},
     3759  {0x01ff, {1|U, {0x01fe}}},
     3760  {0x0201, {1|U, {0x0200}}},
     3761  {0x0203, {1|U, {0x0202}}},
     3762  {0x0205, {1|U, {0x0204}}},
     3763  {0x0207, {1|U, {0x0206}}},
     3764  {0x0209, {1|U, {0x0208}}},
     3765  {0x020b, {1|U, {0x020a}}},
     3766  {0x020d, {1|U, {0x020c}}},
     3767  {0x020f, {1|U, {0x020e}}},
     3768  {0x0211, {1|U, {0x0210}}},
     3769  {0x0213, {1|U, {0x0212}}},
     3770  {0x0215, {1|U, {0x0214}}},
     3771  {0x0217, {1|U, {0x0216}}},
     3772  {0x0219, {1|U, {0x0218}}},
     3773  {0x021b, {1|U, {0x021a}}},
     3774  {0x021d, {1|U, {0x021c}}},
     3775  {0x021f, {1|U, {0x021e}}},
     3776  {0x0223, {1|U, {0x0222}}},
     3777  {0x0225, {1|U, {0x0224}}},
     3778  {0x0227, {1|U, {0x0226}}},
     3779  {0x0229, {1|U, {0x0228}}},
     3780  {0x022b, {1|U, {0x022a}}},
     3781  {0x022d, {1|U, {0x022c}}},
     3782  {0x022f, {1|U, {0x022e}}},
     3783  {0x0231, {1|U, {0x0230}}},
     3784  {0x0233, {1|U, {0x0232}}},
     3785  {0x023c, {1|U, {0x023b}}},
     3786  {0x023f, {1|U, {0x2c7e}}},
     3787  {0x0240, {1|U, {0x2c7f}}},
     3788  {0x0242, {1|U, {0x0241}}},
     3789  {0x0247, {1|U, {0x0246}}},
     3790  {0x0249, {1|U, {0x0248}}},
     3791  {0x024b, {1|U, {0x024a}}},
     3792  {0x024d, {1|U, {0x024c}}},
     3793  {0x024f, {1|U, {0x024e}}},
     3794  {0x0250, {1|U, {0x2c6f}}},
     3795  {0x0251, {1|U, {0x2c6d}}},
     3796  {0x0252, {1|U, {0x2c70}}},
     3797  {0x0253, {1|U, {0x0181}}},
     3798  {0x0254, {1|U, {0x0186}}},
     3799  {0x0256, {1|U, {0x0189}}},
     3800  {0x0257, {1|U, {0x018a}}},
     3801  {0x0259, {1|U, {0x018f}}},
     3802  {0x025b, {1|U, {0x0190}}},
     3803  {0x025c, {1|U, {0xa7ab}}},
     3804  {0x0260, {1|U, {0x0193}}},
     3805  {0x0261, {1|U, {0xa7ac}}},
     3806  {0x0263, {1|U, {0x0194}}},
     3807  {0x0265, {1|U, {0xa78d}}},
     3808  {0x0266, {1|U, {0xa7aa}}},
     3809  {0x0268, {1|U, {0x0197}}},
     3810  {0x0269, {1|U, {0x0196}}},
     3811  {0x026a, {1|U, {0xa7ae}}},
     3812  {0x026b, {1|U, {0x2c62}}},
     3813  {0x026c, {1|U, {0xa7ad}}},
     3814  {0x026f, {1|U, {0x019c}}},
     3815  {0x0271, {1|U, {0x2c6e}}},
     3816  {0x0272, {1|U, {0x019d}}},
     3817  {0x0275, {1|U, {0x019f}}},
     3818  {0x027d, {1|U, {0x2c64}}},
     3819  {0x0280, {1|U, {0x01a6}}},
     3820  {0x0283, {1|U, {0x01a9}}},
     3821  {0x0287, {1|U, {0xa7b1}}},
     3822  {0x0288, {1|U, {0x01ae}}},
     3823  {0x0289, {1|U, {0x0244}}},
     3824  {0x028a, {1|U, {0x01b1}}},
     3825  {0x028b, {1|U, {0x01b2}}},
     3826  {0x028c, {1|U, {0x0245}}},
     3827  {0x0292, {1|U, {0x01b7}}},
     3828  {0x029d, {1|U, {0xa7b2}}},
     3829  {0x029e, {1|U, {0xa7b0}}},
     3830  {0x0371, {1|U, {0x0370}}},
     3831  {0x0373, {1|U, {0x0372}}},
     3832  {0x0377, {1|U, {0x0376}}},
     3833  {0x037b, {1|U, {0x03fd}}},
     3834  {0x037c, {1|U, {0x03fe}}},
     3835  {0x037d, {1|U, {0x03ff}}},
     3836  {0x03ac, {1|U, {0x0386}}},
     3837  {0x03ad, {1|U, {0x0388}}},
     3838  {0x03ae, {1|U, {0x0389}}},
     3839  {0x03af, {1|U, {0x038a}}},
     3840  {0x03b1, {1|U, {0x0391}}},
     3841  {0x03b2, {2|U, {0x0392, 0x03d0}}},
     3842  {0x03b3, {1|U, {0x0393}}},
     3843  {0x03b4, {1|U, {0x0394}}},
     3844  {0x03b5, {2|U, {0x0395, 0x03f5}}},
     3845  {0x03b6, {1|U, {0x0396}}},
     3846  {0x03b7, {1|U, {0x0397}}},
     3847  {0x03b8, {3|U, {0x0398, 0x03d1, 0x03f4}}},
     3848  {0x03b9, {3|U, {0x0399, 0x0345, 0x1fbe}}},
     3849  {0x03ba, {2|U, {0x039a, 0x03f0}}},
     3850  {0x03bb, {1|U, {0x039b}}},
     3851  {0x03bc, {2|U, {0x039c, 0x00b5}}},
     3852  {0x03bd, {1|U, {0x039d}}},
     3853  {0x03be, {1|U, {0x039e}}},
     3854  {0x03bf, {1|U, {0x039f}}},
     3855  {0x03c0, {2|U, {0x03a0, 0x03d6}}},
     3856  {0x03c1, {2|U, {0x03a1, 0x03f1}}},
     3857  {0x03c3, {2|U, {0x03a3, 0x03c2}}},
     3858  {0x03c4, {1|U, {0x03a4}}},
     3859  {0x03c5, {1|U, {0x03a5}}},
     3860  {0x03c6, {2|U, {0x03a6, 0x03d5}}},
     3861  {0x03c7, {1|U, {0x03a7}}},
     3862  {0x03c8, {1|U, {0x03a8}}},
     3863  {0x03c9, {2|U, {0x03a9, 0x2126}}},
     3864  {0x03ca, {1|U, {0x03aa}}},
     3865  {0x03cb, {1|U, {0x03ab}}},
     3866  {0x03cc, {1|U, {0x038c}}},
     3867  {0x03cd, {1|U, {0x038e}}},
     3868  {0x03ce, {1|U, {0x038f}}},
     3869  {0x03d7, {1|U, {0x03cf}}},
     3870  {0x03d9, {1|U, {0x03d8}}},
     3871  {0x03db, {1|U, {0x03da}}},
     3872  {0x03dd, {1|U, {0x03dc}}},
     3873  {0x03df, {1|U, {0x03de}}},
     3874  {0x03e1, {1|U, {0x03e0}}},
     3875  {0x03e3, {1|U, {0x03e2}}},
     3876  {0x03e5, {1|U, {0x03e4}}},
     3877  {0x03e7, {1|U, {0x03e6}}},
     3878  {0x03e9, {1|U, {0x03e8}}},
     3879  {0x03eb, {1|U, {0x03ea}}},
     3880  {0x03ed, {1|U, {0x03ec}}},
     3881  {0x03ef, {1|U, {0x03ee}}},
     3882  {0x03f2, {1|U, {0x03f9}}},
     3883  {0x03f3, {1|U, {0x037f}}},
     3884  {0x03f8, {1|U, {0x03f7}}},
     3885  {0x03fb, {1|U, {0x03fa}}},
     3886  {0x0430, {1|U, {0x0410}}},
     3887  {0x0431, {1|U, {0x0411}}},
     3888  {0x0432, {2|U, {0x0412, 0x1c80}}},
     3889  {0x0433, {1|U, {0x0413}}},
     3890  {0x0434, {2|U, {0x0414, 0x1c81}}},
     3891  {0x0435, {1|U, {0x0415}}},
     3892  {0x0436, {1|U, {0x0416}}},
     3893  {0x0437, {1|U, {0x0417}}},
     3894  {0x0438, {1|U, {0x0418}}},
     3895  {0x0439, {1|U, {0x0419}}},
     3896  {0x043a, {1|U, {0x041a}}},
     3897  {0x043b, {1|U, {0x041b}}},
     3898  {0x043c, {1|U, {0x041c}}},
     3899  {0x043d, {1|U, {0x041d}}},
     3900  {0x043e, {2|U, {0x041e, 0x1c82}}},
     3901  {0x043f, {1|U, {0x041f}}},
     3902  {0x0440, {1|U, {0x0420}}},
     3903  {0x0441, {2|U, {0x0421, 0x1c83}}},
     3904  {0x0442, {3|U, {0x0422, 0x1c84, 0x1c85}}},
     3905  {0x0443, {1|U, {0x0423}}},
     3906  {0x0444, {1|U, {0x0424}}},
     3907  {0x0445, {1|U, {0x0425}}},
     3908  {0x0446, {1|U, {0x0426}}},
     3909  {0x0447, {1|U, {0x0427}}},
     3910  {0x0448, {1|U, {0x0428}}},
     3911  {0x0449, {1|U, {0x0429}}},
     3912  {0x044a, {2|U, {0x042a, 0x1c86}}},
     3913  {0x044b, {1|U, {0x042b}}},
     3914  {0x044c, {1|U, {0x042c}}},
     3915  {0x044d, {1|U, {0x042d}}},
     3916  {0x044e, {1|U, {0x042e}}},
     3917  {0x044f, {1|U, {0x042f}}},
     3918  {0x0450, {1|U, {0x0400}}},
     3919  {0x0451, {1|U, {0x0401}}},
     3920  {0x0452, {1|U, {0x0402}}},
     3921  {0x0453, {1|U, {0x0403}}},
     3922  {0x0454, {1|U, {0x0404}}},
     3923  {0x0455, {1|U, {0x0405}}},
     3924  {0x0456, {1|U, {0x0406}}},
     3925  {0x0457, {1|U, {0x0407}}},
     3926  {0x0458, {1|U, {0x0408}}},
     3927  {0x0459, {1|U, {0x0409}}},
     3928  {0x045a, {1|U, {0x040a}}},
     3929  {0x045b, {1|U, {0x040b}}},
     3930  {0x045c, {1|U, {0x040c}}},
     3931  {0x045d, {1|U, {0x040d}}},
     3932  {0x045e, {1|U, {0x040e}}},
     3933  {0x045f, {1|U, {0x040f}}},
     3934  {0x0461, {1|U, {0x0460}}},
     3935  {0x0463, {2|U, {0x0462, 0x1c87}}},
     3936  {0x0465, {1|U, {0x0464}}},
     3937  {0x0467, {1|U, {0x0466}}},
     3938  {0x0469, {1|U, {0x0468}}},
     3939  {0x046b, {1|U, {0x046a}}},
     3940  {0x046d, {1|U, {0x046c}}},
     3941  {0x046f, {1|U, {0x046e}}},
     3942  {0x0471, {1|U, {0x0470}}},
     3943  {0x0473, {1|U, {0x0472}}},
     3944  {0x0475, {1|U, {0x0474}}},
     3945  {0x0477, {1|U, {0x0476}}},
     3946  {0x0479, {1|U, {0x0478}}},
     3947  {0x047b, {1|U, {0x047a}}},
     3948  {0x047d, {1|U, {0x047c}}},
     3949  {0x047f, {1|U, {0x047e}}},
     3950  {0x0481, {1|U, {0x0480}}},
     3951  {0x048b, {1|U, {0x048a}}},
     3952  {0x048d, {1|U, {0x048c}}},
     3953  {0x048f, {1|U, {0x048e}}},
     3954  {0x0491, {1|U, {0x0490}}},
     3955  {0x0493, {1|U, {0x0492}}},
     3956  {0x0495, {1|U, {0x0494}}},
     3957  {0x0497, {1|U, {0x0496}}},
     3958  {0x0499, {1|U, {0x0498}}},
     3959  {0x049b, {1|U, {0x049a}}},
     3960  {0x049d, {1|U, {0x049c}}},
     3961  {0x049f, {1|U, {0x049e}}},
     3962  {0x04a1, {1|U, {0x04a0}}},
     3963  {0x04a3, {1|U, {0x04a2}}},
     3964  {0x04a5, {1|U, {0x04a4}}},
     3965  {0x04a7, {1|U, {0x04a6}}},
     3966  {0x04a9, {1|U, {0x04a8}}},
     3967  {0x04ab, {1|U, {0x04aa}}},
     3968  {0x04ad, {1|U, {0x04ac}}},
     3969  {0x04af, {1|U, {0x04ae}}},
     3970  {0x04b1, {1|U, {0x04b0}}},
     3971  {0x04b3, {1|U, {0x04b2}}},
     3972  {0x04b5, {1|U, {0x04b4}}},
     3973  {0x04b7, {1|U, {0x04b6}}},
     3974  {0x04b9, {1|U, {0x04b8}}},
     3975  {0x04bb, {1|U, {0x04ba}}},
     3976  {0x04bd, {1|U, {0x04bc}}},
     3977  {0x04bf, {1|U, {0x04be}}},
     3978  {0x04c2, {1|U, {0x04c1}}},
     3979  {0x04c4, {1|U, {0x04c3}}},
     3980  {0x04c6, {1|U, {0x04c5}}},
     3981  {0x04c8, {1|U, {0x04c7}}},
     3982  {0x04ca, {1|U, {0x04c9}}},
     3983  {0x04cc, {1|U, {0x04cb}}},
     3984  {0x04ce, {1|U, {0x04cd}}},
     3985  {0x04cf, {1|U, {0x04c0}}},
     3986  {0x04d1, {1|U, {0x04d0}}},
     3987  {0x04d3, {1|U, {0x04d2}}},
     3988  {0x04d5, {1|U, {0x04d4}}},
     3989  {0x04d7, {1|U, {0x04d6}}},
     3990  {0x04d9, {1|U, {0x04d8}}},
     3991  {0x04db, {1|U, {0x04da}}},
     3992  {0x04dd, {1|U, {0x04dc}}},
     3993  {0x04df, {1|U, {0x04de}}},
     3994  {0x04e1, {1|U, {0x04e0}}},
     3995  {0x04e3, {1|U, {0x04e2}}},
     3996  {0x04e5, {1|U, {0x04e4}}},
     3997  {0x04e7, {1|U, {0x04e6}}},
     3998  {0x04e9, {1|U, {0x04e8}}},
     3999  {0x04eb, {1|U, {0x04ea}}},
     4000  {0x04ed, {1|U, {0x04ec}}},
     4001  {0x04ef, {1|U, {0x04ee}}},
     4002  {0x04f1, {1|U, {0x04f0}}},
     4003  {0x04f3, {1|U, {0x04f2}}},
     4004  {0x04f5, {1|U, {0x04f4}}},
     4005  {0x04f7, {1|U, {0x04f6}}},
     4006  {0x04f9, {1|U, {0x04f8}}},
     4007  {0x04fb, {1|U, {0x04fa}}},
     4008  {0x04fd, {1|U, {0x04fc}}},
     4009  {0x04ff, {1|U, {0x04fe}}},
     4010  {0x0501, {1|U, {0x0500}}},
     4011  {0x0503, {1|U, {0x0502}}},
     4012  {0x0505, {1|U, {0x0504}}},
     4013  {0x0507, {1|U, {0x0506}}},
     4014  {0x0509, {1|U, {0x0508}}},
     4015  {0x050b, {1|U, {0x050a}}},
     4016  {0x050d, {1|U, {0x050c}}},
     4017  {0x050f, {1|U, {0x050e}}},
     4018  {0x0511, {1|U, {0x0510}}},
     4019  {0x0513, {1|U, {0x0512}}},
     4020  {0x0515, {1|U, {0x0514}}},
     4021  {0x0517, {1|U, {0x0516}}},
     4022  {0x0519, {1|U, {0x0518}}},
     4023  {0x051b, {1|U, {0x051a}}},
     4024  {0x051d, {1|U, {0x051c}}},
     4025  {0x051f, {1|U, {0x051e}}},
     4026  {0x0521, {1|U, {0x0520}}},
     4027  {0x0523, {1|U, {0x0522}}},
     4028  {0x0525, {1|U, {0x0524}}},
     4029  {0x0527, {1|U, {0x0526}}},
     4030  {0x0529, {1|U, {0x0528}}},
     4031  {0x052b, {1|U, {0x052a}}},
     4032  {0x052d, {1|U, {0x052c}}},
     4033  {0x052f, {1|U, {0x052e}}},
     4034  {0x0561, {1|U, {0x0531}}},
     4035  {0x0562, {1|U, {0x0532}}},
     4036  {0x0563, {1|U, {0x0533}}},
     4037  {0x0564, {1|U, {0x0534}}},
     4038  {0x0565, {1|U, {0x0535}}},
     4039  {0x0566, {1|U, {0x0536}}},
     4040  {0x0567, {1|U, {0x0537}}},
     4041  {0x0568, {1|U, {0x0538}}},
     4042  {0x0569, {1|U, {0x0539}}},
     4043  {0x056a, {1|U, {0x053a}}},
     4044  {0x056b, {1|U, {0x053b}}},
     4045  {0x056c, {1|U, {0x053c}}},
     4046  {0x056d, {1|U, {0x053d}}},
     4047  {0x056e, {1|U, {0x053e}}},
     4048  {0x056f, {1|U, {0x053f}}},
     4049  {0x0570, {1|U, {0x0540}}},
     4050  {0x0571, {1|U, {0x0541}}},
     4051  {0x0572, {1|U, {0x0542}}},
     4052  {0x0573, {1|U, {0x0543}}},
     4053  {0x0574, {1|U, {0x0544}}},
     4054  {0x0575, {1|U, {0x0545}}},
     4055  {0x0576, {1|U, {0x0546}}},
     4056  {0x0577, {1|U, {0x0547}}},
     4057  {0x0578, {1|U, {0x0548}}},
     4058  {0x0579, {1|U, {0x0549}}},
     4059  {0x057a, {1|U, {0x054a}}},
     4060  {0x057b, {1|U, {0x054b}}},
     4061  {0x057c, {1|U, {0x054c}}},
     4062  {0x057d, {1|U, {0x054d}}},
     4063  {0x057e, {1|U, {0x054e}}},
     4064  {0x057f, {1|U, {0x054f}}},
     4065  {0x0580, {1|U, {0x0550}}},
     4066  {0x0581, {1|U, {0x0551}}},
     4067  {0x0582, {1|U, {0x0552}}},
     4068  {0x0583, {1|U, {0x0553}}},
     4069  {0x0584, {1|U, {0x0554}}},
     4070  {0x0585, {1|U, {0x0555}}},
     4071  {0x0586, {1|U, {0x0556}}},
     4072  {0x13a0, {1|D, {0xab70}}},
     4073  {0x13a1, {1|D, {0xab71}}},
     4074  {0x13a2, {1|D, {0xab72}}},
     4075  {0x13a3, {1|D, {0xab73}}},
     4076  {0x13a4, {1|D, {0xab74}}},
     4077  {0x13a5, {1|D, {0xab75}}},
     4078  {0x13a6, {1|D, {0xab76}}},
     4079  {0x13a7, {1|D, {0xab77}}},
     4080  {0x13a8, {1|D, {0xab78}}},
     4081  {0x13a9, {1|D, {0xab79}}},
     4082  {0x13aa, {1|D, {0xab7a}}},
     4083  {0x13ab, {1|D, {0xab7b}}},
     4084  {0x13ac, {1|D, {0xab7c}}},
     4085  {0x13ad, {1|D, {0xab7d}}},
     4086  {0x13ae, {1|D, {0xab7e}}},
     4087  {0x13af, {1|D, {0xab7f}}},
     4088  {0x13b0, {1|D, {0xab80}}},
     4089  {0x13b1, {1|D, {0xab81}}},
     4090  {0x13b2, {1|D, {0xab82}}},
     4091  {0x13b3, {1|D, {0xab83}}},
     4092  {0x13b4, {1|D, {0xab84}}},
     4093  {0x13b5, {1|D, {0xab85}}},
     4094  {0x13b6, {1|D, {0xab86}}},
     4095  {0x13b7, {1|D, {0xab87}}},
     4096  {0x13b8, {1|D, {0xab88}}},
     4097  {0x13b9, {1|D, {0xab89}}},
     4098  {0x13ba, {1|D, {0xab8a}}},
     4099  {0x13bb, {1|D, {0xab8b}}},
     4100  {0x13bc, {1|D, {0xab8c}}},
     4101  {0x13bd, {1|D, {0xab8d}}},
     4102  {0x13be, {1|D, {0xab8e}}},
     4103  {0x13bf, {1|D, {0xab8f}}},
     4104  {0x13c0, {1|D, {0xab90}}},
     4105  {0x13c1, {1|D, {0xab91}}},
     4106  {0x13c2, {1|D, {0xab92}}},
     4107  {0x13c3, {1|D, {0xab93}}},
     4108  {0x13c4, {1|D, {0xab94}}},
     4109  {0x13c5, {1|D, {0xab95}}},
     4110  {0x13c6, {1|D, {0xab96}}},
     4111  {0x13c7, {1|D, {0xab97}}},
     4112  {0x13c8, {1|D, {0xab98}}},
     4113  {0x13c9, {1|D, {0xab99}}},
     4114  {0x13ca, {1|D, {0xab9a}}},
     4115  {0x13cb, {1|D, {0xab9b}}},
     4116  {0x13cc, {1|D, {0xab9c}}},
     4117  {0x13cd, {1|D, {0xab9d}}},
     4118  {0x13ce, {1|D, {0xab9e}}},
     4119  {0x13cf, {1|D, {0xab9f}}},
     4120  {0x13d0, {1|D, {0xaba0}}},
     4121  {0x13d1, {1|D, {0xaba1}}},
     4122  {0x13d2, {1|D, {0xaba2}}},
     4123  {0x13d3, {1|D, {0xaba3}}},
     4124  {0x13d4, {1|D, {0xaba4}}},
     4125  {0x13d5, {1|D, {0xaba5}}},
     4126  {0x13d6, {1|D, {0xaba6}}},
     4127  {0x13d7, {1|D, {0xaba7}}},
     4128  {0x13d8, {1|D, {0xaba8}}},
     4129  {0x13d9, {1|D, {0xaba9}}},
     4130  {0x13da, {1|D, {0xabaa}}},
     4131  {0x13db, {1|D, {0xabab}}},
     4132  {0x13dc, {1|D, {0xabac}}},
     4133  {0x13dd, {1|D, {0xabad}}},
     4134  {0x13de, {1|D, {0xabae}}},
     4135  {0x13df, {1|D, {0xabaf}}},
     4136  {0x13e0, {1|D, {0xabb0}}},
     4137  {0x13e1, {1|D, {0xabb1}}},
     4138  {0x13e2, {1|D, {0xabb2}}},
     4139  {0x13e3, {1|D, {0xabb3}}},
     4140  {0x13e4, {1|D, {0xabb4}}},
     4141  {0x13e5, {1|D, {0xabb5}}},
     4142  {0x13e6, {1|D, {0xabb6}}},
     4143  {0x13e7, {1|D, {0xabb7}}},
     4144  {0x13e8, {1|D, {0xabb8}}},
     4145  {0x13e9, {1|D, {0xabb9}}},
     4146  {0x13ea, {1|D, {0xabba}}},
     4147  {0x13eb, {1|D, {0xabbb}}},
     4148  {0x13ec, {1|D, {0xabbc}}},
     4149  {0x13ed, {1|D, {0xabbd}}},
     4150  {0x13ee, {1|D, {0xabbe}}},
     4151  {0x13ef, {1|D, {0xabbf}}},
     4152  {0x13f0, {1|D, {0x13f8}}},
     4153  {0x13f1, {1|D, {0x13f9}}},
     4154  {0x13f2, {1|D, {0x13fa}}},
     4155  {0x13f3, {1|D, {0x13fb}}},
     4156  {0x13f4, {1|D, {0x13fc}}},
     4157  {0x13f5, {1|D, {0x13fd}}},
     4158  {0x1d79, {1|U, {0xa77d}}},
     4159  {0x1d7d, {1|U, {0x2c63}}},
     4160  {0x1e01, {1|U, {0x1e00}}},
     4161  {0x1e03, {1|U, {0x1e02}}},
     4162  {0x1e05, {1|U, {0x1e04}}},
     4163  {0x1e07, {1|U, {0x1e06}}},
     4164  {0x1e09, {1|U, {0x1e08}}},
     4165  {0x1e0b, {1|U, {0x1e0a}}},
     4166  {0x1e0d, {1|U, {0x1e0c}}},
     4167  {0x1e0f, {1|U, {0x1e0e}}},
     4168  {0x1e11, {1|U, {0x1e10}}},
     4169  {0x1e13, {1|U, {0x1e12}}},
     4170  {0x1e15, {1|U, {0x1e14}}},
     4171  {0x1e17, {1|U, {0x1e16}}},
     4172  {0x1e19, {1|U, {0x1e18}}},
     4173  {0x1e1b, {1|U, {0x1e1a}}},
     4174  {0x1e1d, {1|U, {0x1e1c}}},
     4175  {0x1e1f, {1|U, {0x1e1e}}},
     4176  {0x1e21, {1|U, {0x1e20}}},
     4177  {0x1e23, {1|U, {0x1e22}}},
     4178  {0x1e25, {1|U, {0x1e24}}},
     4179  {0x1e27, {1|U, {0x1e26}}},
     4180  {0x1e29, {1|U, {0x1e28}}},
     4181  {0x1e2b, {1|U, {0x1e2a}}},
     4182  {0x1e2d, {1|U, {0x1e2c}}},
     4183  {0x1e2f, {1|U, {0x1e2e}}},
     4184  {0x1e31, {1|U, {0x1e30}}},
     4185  {0x1e33, {1|U, {0x1e32}}},
     4186  {0x1e35, {1|U, {0x1e34}}},
     4187  {0x1e37, {1|U, {0x1e36}}},
     4188  {0x1e39, {1|U, {0x1e38}}},
     4189  {0x1e3b, {1|U, {0x1e3a}}},
     4190  {0x1e3d, {1|U, {0x1e3c}}},
     4191  {0x1e3f, {1|U, {0x1e3e}}},
     4192  {0x1e41, {1|U, {0x1e40}}},
     4193  {0x1e43, {1|U, {0x1e42}}},
     4194  {0x1e45, {1|U, {0x1e44}}},
     4195  {0x1e47, {1|U, {0x1e46}}},
     4196  {0x1e49, {1|U, {0x1e48}}},
     4197  {0x1e4b, {1|U, {0x1e4a}}},
     4198  {0x1e4d, {1|U, {0x1e4c}}},
     4199  {0x1e4f, {1|U, {0x1e4e}}},
     4200  {0x1e51, {1|U, {0x1e50}}},
     4201  {0x1e53, {1|U, {0x1e52}}},
     4202  {0x1e55, {1|U, {0x1e54}}},
     4203  {0x1e57, {1|U, {0x1e56}}},
     4204  {0x1e59, {1|U, {0x1e58}}},
     4205  {0x1e5b, {1|U, {0x1e5a}}},
     4206  {0x1e5d, {1|U, {0x1e5c}}},
     4207  {0x1e5f, {1|U, {0x1e5e}}},
     4208  {0x1e61, {2|U, {0x1e60, 0x1e9b}}},
     4209  {0x1e63, {1|U, {0x1e62}}},
     4210  {0x1e65, {1|U, {0x1e64}}},
     4211  {0x1e67, {1|U, {0x1e66}}},
     4212  {0x1e69, {1|U, {0x1e68}}},
     4213  {0x1e6b, {1|U, {0x1e6a}}},
     4214  {0x1e6d, {1|U, {0x1e6c}}},
     4215  {0x1e6f, {1|U, {0x1e6e}}},
     4216  {0x1e71, {1|U, {0x1e70}}},
     4217  {0x1e73, {1|U, {0x1e72}}},
     4218  {0x1e75, {1|U, {0x1e74}}},
     4219  {0x1e77, {1|U, {0x1e76}}},
     4220  {0x1e79, {1|U, {0x1e78}}},
     4221  {0x1e7b, {1|U, {0x1e7a}}},
     4222  {0x1e7d, {1|U, {0x1e7c}}},
     4223  {0x1e7f, {1|U, {0x1e7e}}},
     4224  {0x1e81, {1|U, {0x1e80}}},
     4225  {0x1e83, {1|U, {0x1e82}}},
     4226  {0x1e85, {1|U, {0x1e84}}},
     4227  {0x1e87, {1|U, {0x1e86}}},
     4228  {0x1e89, {1|U, {0x1e88}}},
     4229  {0x1e8b, {1|U, {0x1e8a}}},
     4230  {0x1e8d, {1|U, {0x1e8c}}},
     4231  {0x1e8f, {1|U, {0x1e8e}}},
     4232  {0x1e91, {1|U, {0x1e90}}},
     4233  {0x1e93, {1|U, {0x1e92}}},
     4234  {0x1e95, {1|U, {0x1e94}}},
     4235  {0x1ea1, {1|U, {0x1ea0}}},
     4236  {0x1ea3, {1|U, {0x1ea2}}},
     4237  {0x1ea5, {1|U, {0x1ea4}}},
     4238  {0x1ea7, {1|U, {0x1ea6}}},
     4239  {0x1ea9, {1|U, {0x1ea8}}},
     4240  {0x1eab, {1|U, {0x1eaa}}},
     4241  {0x1ead, {1|U, {0x1eac}}},
     4242  {0x1eaf, {1|U, {0x1eae}}},
     4243  {0x1eb1, {1|U, {0x1eb0}}},
     4244  {0x1eb3, {1|U, {0x1eb2}}},
     4245  {0x1eb5, {1|U, {0x1eb4}}},
     4246  {0x1eb7, {1|U, {0x1eb6}}},
     4247  {0x1eb9, {1|U, {0x1eb8}}},
     4248  {0x1ebb, {1|U, {0x1eba}}},
     4249  {0x1ebd, {1|U, {0x1ebc}}},
     4250  {0x1ebf, {1|U, {0x1ebe}}},
     4251  {0x1ec1, {1|U, {0x1ec0}}},
     4252  {0x1ec3, {1|U, {0x1ec2}}},
     4253  {0x1ec5, {1|U, {0x1ec4}}},
     4254  {0x1ec7, {1|U, {0x1ec6}}},
     4255  {0x1ec9, {1|U, {0x1ec8}}},
     4256  {0x1ecb, {1|U, {0x1eca}}},
     4257  {0x1ecd, {1|U, {0x1ecc}}},
     4258  {0x1ecf, {1|U, {0x1ece}}},
     4259  {0x1ed1, {1|U, {0x1ed0}}},
     4260  {0x1ed3, {1|U, {0x1ed2}}},
     4261  {0x1ed5, {1|U, {0x1ed4}}},
     4262  {0x1ed7, {1|U, {0x1ed6}}},
     4263  {0x1ed9, {1|U, {0x1ed8}}},
     4264  {0x1edb, {1|U, {0x1eda}}},
     4265  {0x1edd, {1|U, {0x1edc}}},
     4266  {0x1edf, {1|U, {0x1ede}}},
     4267  {0x1ee1, {1|U, {0x1ee0}}},
     4268  {0x1ee3, {1|U, {0x1ee2}}},
     4269  {0x1ee5, {1|U, {0x1ee4}}},
     4270  {0x1ee7, {1|U, {0x1ee6}}},
     4271  {0x1ee9, {1|U, {0x1ee8}}},
     4272  {0x1eeb, {1|U, {0x1eea}}},
     4273  {0x1eed, {1|U, {0x1eec}}},
     4274  {0x1eef, {1|U, {0x1eee}}},
     4275  {0x1ef1, {1|U, {0x1ef0}}},
     4276  {0x1ef3, {1|U, {0x1ef2}}},
     4277  {0x1ef5, {1|U, {0x1ef4}}},
     4278  {0x1ef7, {1|U, {0x1ef6}}},
     4279  {0x1ef9, {1|U, {0x1ef8}}},
     4280  {0x1efb, {1|U, {0x1efa}}},
     4281  {0x1efd, {1|U, {0x1efc}}},
     4282  {0x1eff, {1|U, {0x1efe}}},
     4283  {0x1f00, {1|U, {0x1f08}}},
     4284  {0x1f01, {1|U, {0x1f09}}},
     4285  {0x1f02, {1|U, {0x1f0a}}},
     4286  {0x1f03, {1|U, {0x1f0b}}},
     4287  {0x1f04, {1|U, {0x1f0c}}},
     4288  {0x1f05, {1|U, {0x1f0d}}},
     4289  {0x1f06, {1|U, {0x1f0e}}},
     4290  {0x1f07, {1|U, {0x1f0f}}},
     4291  {0x1f10, {1|U, {0x1f18}}},
     4292  {0x1f11, {1|U, {0x1f19}}},
     4293  {0x1f12, {1|U, {0x1f1a}}},
     4294  {0x1f13, {1|U, {0x1f1b}}},
     4295  {0x1f14, {1|U, {0x1f1c}}},
     4296  {0x1f15, {1|U, {0x1f1d}}},
     4297  {0x1f20, {1|U, {0x1f28}}},
     4298  {0x1f21, {1|U, {0x1f29}}},
     4299  {0x1f22, {1|U, {0x1f2a}}},
     4300  {0x1f23, {1|U, {0x1f2b}}},
     4301  {0x1f24, {1|U, {0x1f2c}}},
     4302  {0x1f25, {1|U, {0x1f2d}}},
     4303  {0x1f26, {1|U, {0x1f2e}}},
     4304  {0x1f27, {1|U, {0x1f2f}}},
     4305  {0x1f30, {1|U, {0x1f38}}},
     4306  {0x1f31, {1|U, {0x1f39}}},
     4307  {0x1f32, {1|U, {0x1f3a}}},
     4308  {0x1f33, {1|U, {0x1f3b}}},
     4309  {0x1f34, {1|U, {0x1f3c}}},
     4310  {0x1f35, {1|U, {0x1f3d}}},
     4311  {0x1f36, {1|U, {0x1f3e}}},
     4312  {0x1f37, {1|U, {0x1f3f}}},
     4313  {0x1f40, {1|U, {0x1f48}}},
     4314  {0x1f41, {1|U, {0x1f49}}},
     4315  {0x1f42, {1|U, {0x1f4a}}},
     4316  {0x1f43, {1|U, {0x1f4b}}},
     4317  {0x1f44, {1|U, {0x1f4c}}},
     4318  {0x1f45, {1|U, {0x1f4d}}},
     4319  {0x1f51, {1|U, {0x1f59}}},
     4320  {0x1f53, {1|U, {0x1f5b}}},
     4321  {0x1f55, {1|U, {0x1f5d}}},
     4322  {0x1f57, {1|U, {0x1f5f}}},
     4323  {0x1f60, {1|U, {0x1f68}}},
     4324  {0x1f61, {1|U, {0x1f69}}},
     4325  {0x1f62, {1|U, {0x1f6a}}},
     4326  {0x1f63, {1|U, {0x1f6b}}},
     4327  {0x1f64, {1|U, {0x1f6c}}},
     4328  {0x1f65, {1|U, {0x1f6d}}},
     4329  {0x1f66, {1|U, {0x1f6e}}},
     4330  {0x1f67, {1|U, {0x1f6f}}},
     4331  {0x1f70, {1|U, {0x1fba}}},
     4332  {0x1f71, {1|U, {0x1fbb}}},
     4333  {0x1f72, {1|U, {0x1fc8}}},
     4334  {0x1f73, {1|U, {0x1fc9}}},
     4335  {0x1f74, {1|U, {0x1fca}}},
     4336  {0x1f75, {1|U, {0x1fcb}}},
     4337  {0x1f76, {1|U, {0x1fda}}},
     4338  {0x1f77, {1|U, {0x1fdb}}},
     4339  {0x1f78, {1|U, {0x1ff8}}},
     4340  {0x1f79, {1|U, {0x1ff9}}},
     4341  {0x1f7a, {1|U, {0x1fea}}},
     4342  {0x1f7b, {1|U, {0x1feb}}},
     4343  {0x1f7c, {1|U, {0x1ffa}}},
     4344  {0x1f7d, {1|U, {0x1ffb}}},
     4345  {0x1fb0, {1|U, {0x1fb8}}},
     4346  {0x1fb1, {1|U, {0x1fb9}}},
     4347  {0x1fd0, {1|U, {0x1fd8}}},
     4348  {0x1fd1, {1|U, {0x1fd9}}},
     4349  {0x1fe0, {1|U, {0x1fe8}}},
     4350  {0x1fe1, {1|U, {0x1fe9}}},
     4351  {0x1fe5, {1|U, {0x1fec}}},
     4352  {0x214e, {1|U, {0x2132}}},
     4353  {0x2170, {1|U, {0x2160}}},
     4354  {0x2171, {1|U, {0x2161}}},
     4355  {0x2172, {1|U, {0x2162}}},
     4356  {0x2173, {1|U, {0x2163}}},
     4357  {0x2174, {1|U, {0x2164}}},
     4358  {0x2175, {1|U, {0x2165}}},
     4359  {0x2176, {1|U, {0x2166}}},
     4360  {0x2177, {1|U, {0x2167}}},
     4361  {0x2178, {1|U, {0x2168}}},
     4362  {0x2179, {1|U, {0x2169}}},
     4363  {0x217a, {1|U, {0x216a}}},
     4364  {0x217b, {1|U, {0x216b}}},
     4365  {0x217c, {1|U, {0x216c}}},
     4366  {0x217d, {1|U, {0x216d}}},
     4367  {0x217e, {1|U, {0x216e}}},
     4368  {0x217f, {1|U, {0x216f}}},
     4369  {0x2184, {1|U, {0x2183}}},
     4370  {0x24d0, {1|U, {0x24b6}}},
     4371  {0x24d1, {1|U, {0x24b7}}},
     4372  {0x24d2, {1|U, {0x24b8}}},
     4373  {0x24d3, {1|U, {0x24b9}}},
     4374  {0x24d4, {1|U, {0x24ba}}},
     4375  {0x24d5, {1|U, {0x24bb}}},
     4376  {0x24d6, {1|U, {0x24bc}}},
     4377  {0x24d7, {1|U, {0x24bd}}},
     4378  {0x24d8, {1|U, {0x24be}}},
     4379  {0x24d9, {1|U, {0x24bf}}},
     4380  {0x24da, {1|U, {0x24c0}}},
     4381  {0x24db, {1|U, {0x24c1}}},
     4382  {0x24dc, {1|U, {0x24c2}}},
     4383  {0x24dd, {1|U, {0x24c3}}},
     4384  {0x24de, {1|U, {0x24c4}}},
     4385  {0x24df, {1|U, {0x24c5}}},
     4386  {0x24e0, {1|U, {0x24c6}}},
     4387  {0x24e1, {1|U, {0x24c7}}},
     4388  {0x24e2, {1|U, {0x24c8}}},
     4389  {0x24e3, {1|U, {0x24c9}}},
     4390  {0x24e4, {1|U, {0x24ca}}},
     4391  {0x24e5, {1|U, {0x24cb}}},
     4392  {0x24e6, {1|U, {0x24cc}}},
     4393  {0x24e7, {1|U, {0x24cd}}},
     4394  {0x24e8, {1|U, {0x24ce}}},
     4395  {0x24e9, {1|U, {0x24cf}}},
     4396  {0x2c30, {1|U, {0x2c00}}},
     4397  {0x2c31, {1|U, {0x2c01}}},
     4398  {0x2c32, {1|U, {0x2c02}}},
     4399  {0x2c33, {1|U, {0x2c03}}},
     4400  {0x2c34, {1|U, {0x2c04}}},
     4401  {0x2c35, {1|U, {0x2c05}}},
     4402  {0x2c36, {1|U, {0x2c06}}},
     4403  {0x2c37, {1|U, {0x2c07}}},
     4404  {0x2c38, {1|U, {0x2c08}}},
     4405  {0x2c39, {1|U, {0x2c09}}},
     4406  {0x2c3a, {1|U, {0x2c0a}}},
     4407  {0x2c3b, {1|U, {0x2c0b}}},
     4408  {0x2c3c, {1|U, {0x2c0c}}},
     4409  {0x2c3d, {1|U, {0x2c0d}}},
     4410  {0x2c3e, {1|U, {0x2c0e}}},
     4411  {0x2c3f, {1|U, {0x2c0f}}},
     4412  {0x2c40, {1|U, {0x2c10}}},
     4413  {0x2c41, {1|U, {0x2c11}}},
     4414  {0x2c42, {1|U, {0x2c12}}},
     4415  {0x2c43, {1|U, {0x2c13}}},
     4416  {0x2c44, {1|U, {0x2c14}}},
     4417  {0x2c45, {1|U, {0x2c15}}},
     4418  {0x2c46, {1|U, {0x2c16}}},
     4419  {0x2c47, {1|U, {0x2c17}}},
     4420  {0x2c48, {1|U, {0x2c18}}},
     4421  {0x2c49, {1|U, {0x2c19}}},
     4422  {0x2c4a, {1|U, {0x2c1a}}},
     4423  {0x2c4b, {1|U, {0x2c1b}}},
     4424  {0x2c4c, {1|U, {0x2c1c}}},
     4425  {0x2c4d, {1|U, {0x2c1d}}},
     4426  {0x2c4e, {1|U, {0x2c1e}}},
     4427  {0x2c4f, {1|U, {0x2c1f}}},
     4428  {0x2c50, {1|U, {0x2c20}}},
     4429  {0x2c51, {1|U, {0x2c21}}},
     4430  {0x2c52, {1|U, {0x2c22}}},
     4431  {0x2c53, {1|U, {0x2c23}}},
     4432  {0x2c54, {1|U, {0x2c24}}},
     4433  {0x2c55, {1|U, {0x2c25}}},
     4434  {0x2c56, {1|U, {0x2c26}}},
     4435  {0x2c57, {1|U, {0x2c27}}},
     4436  {0x2c58, {1|U, {0x2c28}}},
     4437  {0x2c59, {1|U, {0x2c29}}},
     4438  {0x2c5a, {1|U, {0x2c2a}}},
     4439  {0x2c5b, {1|U, {0x2c2b}}},
     4440  {0x2c5c, {1|U, {0x2c2c}}},
     4441  {0x2c5d, {1|U, {0x2c2d}}},
     4442  {0x2c5e, {1|U, {0x2c2e}}},
     4443  {0x2c61, {1|U, {0x2c60}}},
     4444  {0x2c65, {1|U, {0x023a}}},
     4445  {0x2c66, {1|U, {0x023e}}},
     4446  {0x2c68, {1|U, {0x2c67}}},
     4447  {0x2c6a, {1|U, {0x2c69}}},
     4448  {0x2c6c, {1|U, {0x2c6b}}},
     4449  {0x2c73, {1|U, {0x2c72}}},
     4450  {0x2c76, {1|U, {0x2c75}}},
     4451  {0x2c81, {1|U, {0x2c80}}},
     4452  {0x2c83, {1|U, {0x2c82}}},
     4453  {0x2c85, {1|U, {0x2c84}}},
     4454  {0x2c87, {1|U, {0x2c86}}},
     4455  {0x2c89, {1|U, {0x2c88}}},
     4456  {0x2c8b, {1|U, {0x2c8a}}},
     4457  {0x2c8d, {1|U, {0x2c8c}}},
     4458  {0x2c8f, {1|U, {0x2c8e}}},
     4459  {0x2c91, {1|U, {0x2c90}}},
     4460  {0x2c93, {1|U, {0x2c92}}},
     4461  {0x2c95, {1|U, {0x2c94}}},
     4462  {0x2c97, {1|U, {0x2c96}}},
     4463  {0x2c99, {1|U, {0x2c98}}},
     4464  {0x2c9b, {1|U, {0x2c9a}}},
     4465  {0x2c9d, {1|U, {0x2c9c}}},
     4466  {0x2c9f, {1|U, {0x2c9e}}},
     4467  {0x2ca1, {1|U, {0x2ca0}}},
     4468  {0x2ca3, {1|U, {0x2ca2}}},
     4469  {0x2ca5, {1|U, {0x2ca4}}},
     4470  {0x2ca7, {1|U, {0x2ca6}}},
     4471  {0x2ca9, {1|U, {0x2ca8}}},
     4472  {0x2cab, {1|U, {0x2caa}}},
     4473  {0x2cad, {1|U, {0x2cac}}},
     4474  {0x2caf, {1|U, {0x2cae}}},
     4475  {0x2cb1, {1|U, {0x2cb0}}},
     4476  {0x2cb3, {1|U, {0x2cb2}}},
     4477  {0x2cb5, {1|U, {0x2cb4}}},
     4478  {0x2cb7, {1|U, {0x2cb6}}},
     4479  {0x2cb9, {1|U, {0x2cb8}}},
     4480  {0x2cbb, {1|U, {0x2cba}}},
     4481  {0x2cbd, {1|U, {0x2cbc}}},
     4482  {0x2cbf, {1|U, {0x2cbe}}},
     4483  {0x2cc1, {1|U, {0x2cc0}}},
     4484  {0x2cc3, {1|U, {0x2cc2}}},
     4485  {0x2cc5, {1|U, {0x2cc4}}},
     4486  {0x2cc7, {1|U, {0x2cc6}}},
     4487  {0x2cc9, {1|U, {0x2cc8}}},
     4488  {0x2ccb, {1|U, {0x2cca}}},
     4489  {0x2ccd, {1|U, {0x2ccc}}},
     4490  {0x2ccf, {1|U, {0x2cce}}},
     4491  {0x2cd1, {1|U, {0x2cd0}}},
     4492  {0x2cd3, {1|U, {0x2cd2}}},
     4493  {0x2cd5, {1|U, {0x2cd4}}},
     4494  {0x2cd7, {1|U, {0x2cd6}}},
     4495  {0x2cd9, {1|U, {0x2cd8}}},
     4496  {0x2cdb, {1|U, {0x2cda}}},
     4497  {0x2cdd, {1|U, {0x2cdc}}},
     4498  {0x2cdf, {1|U, {0x2cde}}},
     4499  {0x2ce1, {1|U, {0x2ce0}}},
     4500  {0x2ce3, {1|U, {0x2ce2}}},
     4501  {0x2cec, {1|U, {0x2ceb}}},
     4502  {0x2cee, {1|U, {0x2ced}}},
     4503  {0x2cf3, {1|U, {0x2cf2}}},
     4504  {0x2d00, {1|U, {0x10a0}}},
     4505  {0x2d01, {1|U, {0x10a1}}},
     4506  {0x2d02, {1|U, {0x10a2}}},
     4507  {0x2d03, {1|U, {0x10a3}}},
     4508  {0x2d04, {1|U, {0x10a4}}},
     4509  {0x2d05, {1|U, {0x10a5}}},
     4510  {0x2d06, {1|U, {0x10a6}}},
     4511  {0x2d07, {1|U, {0x10a7}}},
     4512  {0x2d08, {1|U, {0x10a8}}},
     4513  {0x2d09, {1|U, {0x10a9}}},
     4514  {0x2d0a, {1|U, {0x10aa}}},
     4515  {0x2d0b, {1|U, {0x10ab}}},
     4516  {0x2d0c, {1|U, {0x10ac}}},
     4517  {0x2d0d, {1|U, {0x10ad}}},
     4518  {0x2d0e, {1|U, {0x10ae}}},
     4519  {0x2d0f, {1|U, {0x10af}}},
     4520  {0x2d10, {1|U, {0x10b0}}},
     4521  {0x2d11, {1|U, {0x10b1}}},
     4522  {0x2d12, {1|U, {0x10b2}}},
     4523  {0x2d13, {1|U, {0x10b3}}},
     4524  {0x2d14, {1|U, {0x10b4}}},
     4525  {0x2d15, {1|U, {0x10b5}}},
     4526  {0x2d16, {1|U, {0x10b6}}},
     4527  {0x2d17, {1|U, {0x10b7}}},
     4528  {0x2d18, {1|U, {0x10b8}}},
     4529  {0x2d19, {1|U, {0x10b9}}},
     4530  {0x2d1a, {1|U, {0x10ba}}},
     4531  {0x2d1b, {1|U, {0x10bb}}},
     4532  {0x2d1c, {1|U, {0x10bc}}},
     4533  {0x2d1d, {1|U, {0x10bd}}},
     4534  {0x2d1e, {1|U, {0x10be}}},
     4535  {0x2d1f, {1|U, {0x10bf}}},
     4536  {0x2d20, {1|U, {0x10c0}}},
     4537  {0x2d21, {1|U, {0x10c1}}},
     4538  {0x2d22, {1|U, {0x10c2}}},
     4539  {0x2d23, {1|U, {0x10c3}}},
     4540  {0x2d24, {1|U, {0x10c4}}},
     4541  {0x2d25, {1|U, {0x10c5}}},
     4542  {0x2d27, {1|U, {0x10c7}}},
     4543  {0x2d2d, {1|U, {0x10cd}}},
     4544  {0xa641, {1|U, {0xa640}}},
     4545  {0xa643, {1|U, {0xa642}}},
     4546  {0xa645, {1|U, {0xa644}}},
     4547  {0xa647, {1|U, {0xa646}}},
     4548  {0xa649, {1|U, {0xa648}}},
     4549  {0xa64b, {2|U, {0xa64a, 0x1c88}}},
     4550  {0xa64d, {1|U, {0xa64c}}},
     4551  {0xa64f, {1|U, {0xa64e}}},
     4552  {0xa651, {1|U, {0xa650}}},
     4553  {0xa653, {1|U, {0xa652}}},
     4554  {0xa655, {1|U, {0xa654}}},
     4555  {0xa657, {1|U, {0xa656}}},
     4556  {0xa659, {1|U, {0xa658}}},
     4557  {0xa65b, {1|U, {0xa65a}}},
     4558  {0xa65d, {1|U, {0xa65c}}},
     4559  {0xa65f, {1|U, {0xa65e}}},
     4560  {0xa661, {1|U, {0xa660}}},
     4561  {0xa663, {1|U, {0xa662}}},
     4562  {0xa665, {1|U, {0xa664}}},
     4563  {0xa667, {1|U, {0xa666}}},
     4564  {0xa669, {1|U, {0xa668}}},
     4565  {0xa66b, {1|U, {0xa66a}}},
     4566  {0xa66d, {1|U, {0xa66c}}},
     4567  {0xa681, {1|U, {0xa680}}},
     4568  {0xa683, {1|U, {0xa682}}},
     4569  {0xa685, {1|U, {0xa684}}},
     4570  {0xa687, {1|U, {0xa686}}},
     4571  {0xa689, {1|U, {0xa688}}},
     4572  {0xa68b, {1|U, {0xa68a}}},
     4573  {0xa68d, {1|U, {0xa68c}}},
     4574  {0xa68f, {1|U, {0xa68e}}},
     4575  {0xa691, {1|U, {0xa690}}},
     4576  {0xa693, {1|U, {0xa692}}},
     4577  {0xa695, {1|U, {0xa694}}},
     4578  {0xa697, {1|U, {0xa696}}},
     4579  {0xa699, {1|U, {0xa698}}},
     4580  {0xa69b, {1|U, {0xa69a}}},
     4581  {0xa723, {1|U, {0xa722}}},
     4582  {0xa725, {1|U, {0xa724}}},
     4583  {0xa727, {1|U, {0xa726}}},
     4584  {0xa729, {1|U, {0xa728}}},
     4585  {0xa72b, {1|U, {0xa72a}}},
     4586  {0xa72d, {1|U, {0xa72c}}},
     4587  {0xa72f, {1|U, {0xa72e}}},
     4588  {0xa733, {1|U, {0xa732}}},
     4589  {0xa735, {1|U, {0xa734}}},
     4590  {0xa737, {1|U, {0xa736}}},
     4591  {0xa739, {1|U, {0xa738}}},
     4592  {0xa73b, {1|U, {0xa73a}}},
     4593  {0xa73d, {1|U, {0xa73c}}},
     4594  {0xa73f, {1|U, {0xa73e}}},
     4595  {0xa741, {1|U, {0xa740}}},
     4596  {0xa743, {1|U, {0xa742}}},
     4597  {0xa745, {1|U, {0xa744}}},
     4598  {0xa747, {1|U, {0xa746}}},
     4599  {0xa749, {1|U, {0xa748}}},
     4600  {0xa74b, {1|U, {0xa74a}}},
     4601  {0xa74d, {1|U, {0xa74c}}},
     4602  {0xa74f, {1|U, {0xa74e}}},
     4603  {0xa751, {1|U, {0xa750}}},
     4604  {0xa753, {1|U, {0xa752}}},
     4605  {0xa755, {1|U, {0xa754}}},
     4606  {0xa757, {1|U, {0xa756}}},
     4607  {0xa759, {1|U, {0xa758}}},
     4608  {0xa75b, {1|U, {0xa75a}}},
     4609  {0xa75d, {1|U, {0xa75c}}},
     4610  {0xa75f, {1|U, {0xa75e}}},
     4611  {0xa761, {1|U, {0xa760}}},
     4612  {0xa763, {1|U, {0xa762}}},
     4613  {0xa765, {1|U, {0xa764}}},
     4614  {0xa767, {1|U, {0xa766}}},
     4615  {0xa769, {1|U, {0xa768}}},
     4616  {0xa76b, {1|U, {0xa76a}}},
     4617  {0xa76d, {1|U, {0xa76c}}},
     4618  {0xa76f, {1|U, {0xa76e}}},
     4619  {0xa77a, {1|U, {0xa779}}},
     4620  {0xa77c, {1|U, {0xa77b}}},
     4621  {0xa77f, {1|U, {0xa77e}}},
     4622  {0xa781, {1|U, {0xa780}}},
     4623  {0xa783, {1|U, {0xa782}}},
     4624  {0xa785, {1|U, {0xa784}}},
     4625  {0xa787, {1|U, {0xa786}}},
     4626  {0xa78c, {1|U, {0xa78b}}},
     4627  {0xa791, {1|U, {0xa790}}},
     4628  {0xa793, {1|U, {0xa792}}},
     4629  {0xa797, {1|U, {0xa796}}},
     4630  {0xa799, {1|U, {0xa798}}},
     4631  {0xa79b, {1|U, {0xa79a}}},
     4632  {0xa79d, {1|U, {0xa79c}}},
     4633  {0xa79f, {1|U, {0xa79e}}},
     4634  {0xa7a1, {1|U, {0xa7a0}}},
     4635  {0xa7a3, {1|U, {0xa7a2}}},
     4636  {0xa7a5, {1|U, {0xa7a4}}},
     4637  {0xa7a7, {1|U, {0xa7a6}}},
     4638  {0xa7a9, {1|U, {0xa7a8}}},
     4639  {0xa7b5, {1|U, {0xa7b4}}},
     4640  {0xa7b7, {1|U, {0xa7b6}}},
     4641  {0xab53, {1|U, {0xa7b3}}},
     4642  {0xff41, {1|U, {0xff21}}},
     4643  {0xff42, {1|U, {0xff22}}},
     4644  {0xff43, {1|U, {0xff23}}},
     4645  {0xff44, {1|U, {0xff24}}},
     4646  {0xff45, {1|U, {0xff25}}},
     4647  {0xff46, {1|U, {0xff26}}},
     4648  {0xff47, {1|U, {0xff27}}},
     4649  {0xff48, {1|U, {0xff28}}},
     4650  {0xff49, {1|U, {0xff29}}},
     4651  {0xff4a, {1|U, {0xff2a}}},
     4652  {0xff4b, {1|U, {0xff2b}}},
     4653  {0xff4c, {1|U, {0xff2c}}},
     4654  {0xff4d, {1|U, {0xff2d}}},
     4655  {0xff4e, {1|U, {0xff2e}}},
     4656  {0xff4f, {1|U, {0xff2f}}},
     4657  {0xff50, {1|U, {0xff30}}},
     4658  {0xff51, {1|U, {0xff31}}},
     4659  {0xff52, {1|U, {0xff32}}},
     4660  {0xff53, {1|U, {0xff33}}},
     4661  {0xff54, {1|U, {0xff34}}},
     4662  {0xff55, {1|U, {0xff35}}},
     4663  {0xff56, {1|U, {0xff36}}},
     4664  {0xff57, {1|U, {0xff37}}},
     4665  {0xff58, {1|U, {0xff38}}},
     4666  {0xff59, {1|U, {0xff39}}},
     4667  {0xff5a, {1|U, {0xff3a}}},
     4668  {0x10428, {1|U, {0x10400}}},
     4669  {0x10429, {1|U, {0x10401}}},
     4670  {0x1042a, {1|U, {0x10402}}},
     4671  {0x1042b, {1|U, {0x10403}}},
     4672  {0x1042c, {1|U, {0x10404}}},
     4673  {0x1042d, {1|U, {0x10405}}},
     4674  {0x1042e, {1|U, {0x10406}}},
     4675  {0x1042f, {1|U, {0x10407}}},
     4676  {0x10430, {1|U, {0x10408}}},
     4677  {0x10431, {1|U, {0x10409}}},
     4678  {0x10432, {1|U, {0x1040a}}},
     4679  {0x10433, {1|U, {0x1040b}}},
     4680  {0x10434, {1|U, {0x1040c}}},
     4681  {0x10435, {1|U, {0x1040d}}},
     4682  {0x10436, {1|U, {0x1040e}}},
     4683  {0x10437, {1|U, {0x1040f}}},
     4684  {0x10438, {1|U, {0x10410}}},
     4685  {0x10439, {1|U, {0x10411}}},
     4686  {0x1043a, {1|U, {0x10412}}},
     4687  {0x1043b, {1|U, {0x10413}}},
     4688  {0x1043c, {1|U, {0x10414}}},
     4689  {0x1043d, {1|U, {0x10415}}},
     4690  {0x1043e, {1|U, {0x10416}}},
     4691  {0x1043f, {1|U, {0x10417}}},
     4692  {0x10440, {1|U, {0x10418}}},
     4693  {0x10441, {1|U, {0x10419}}},
     4694  {0x10442, {1|U, {0x1041a}}},
     4695  {0x10443, {1|U, {0x1041b}}},
     4696  {0x10444, {1|U, {0x1041c}}},
     4697  {0x10445, {1|U, {0x1041d}}},
     4698  {0x10446, {1|U, {0x1041e}}},
     4699  {0x10447, {1|U, {0x1041f}}},
     4700  {0x10448, {1|U, {0x10420}}},
     4701  {0x10449, {1|U, {0x10421}}},
     4702  {0x1044a, {1|U, {0x10422}}},
     4703  {0x1044b, {1|U, {0x10423}}},
     4704  {0x1044c, {1|U, {0x10424}}},
     4705  {0x1044d, {1|U, {0x10425}}},
     4706  {0x1044e, {1|U, {0x10426}}},
     4707  {0x1044f, {1|U, {0x10427}}},
     4708  {0x104d8, {1|U, {0x104b0}}},
     4709  {0x104d9, {1|U, {0x104b1}}},
     4710  {0x104da, {1|U, {0x104b2}}},
     4711  {0x104db, {1|U, {0x104b3}}},
     4712  {0x104dc, {1|U, {0x104b4}}},
     4713  {0x104dd, {1|U, {0x104b5}}},
     4714  {0x104de, {1|U, {0x104b6}}},
     4715  {0x104df, {1|U, {0x104b7}}},
     4716  {0x104e0, {1|U, {0x104b8}}},
     4717  {0x104e1, {1|U, {0x104b9}}},
     4718  {0x104e2, {1|U, {0x104ba}}},
     4719  {0x104e3, {1|U, {0x104bb}}},
     4720  {0x104e4, {1|U, {0x104bc}}},
     4721  {0x104e5, {1|U, {0x104bd}}},
     4722  {0x104e6, {1|U, {0x104be}}},
     4723  {0x104e7, {1|U, {0x104bf}}},
     4724  {0x104e8, {1|U, {0x104c0}}},
     4725  {0x104e9, {1|U, {0x104c1}}},
     4726  {0x104ea, {1|U, {0x104c2}}},
     4727  {0x104eb, {1|U, {0x104c3}}},
     4728  {0x104ec, {1|U, {0x104c4}}},
     4729  {0x104ed, {1|U, {0x104c5}}},
     4730  {0x104ee, {1|U, {0x104c6}}},
     4731  {0x104ef, {1|U, {0x104c7}}},
     4732  {0x104f0, {1|U, {0x104c8}}},
     4733  {0x104f1, {1|U, {0x104c9}}},
     4734  {0x104f2, {1|U, {0x104ca}}},
     4735  {0x104f3, {1|U, {0x104cb}}},
     4736  {0x104f4, {1|U, {0x104cc}}},
     4737  {0x104f5, {1|U, {0x104cd}}},
     4738  {0x104f6, {1|U, {0x104ce}}},
     4739  {0x104f7, {1|U, {0x104cf}}},
     4740  {0x104f8, {1|U, {0x104d0}}},
     4741  {0x104f9, {1|U, {0x104d1}}},
     4742  {0x104fa, {1|U, {0x104d2}}},
     4743  {0x104fb, {1|U, {0x104d3}}},
     4744  {0x10cc0, {1|U, {0x10c80}}},
     4745  {0x10cc1, {1|U, {0x10c81}}},
     4746  {0x10cc2, {1|U, {0x10c82}}},
     4747  {0x10cc3, {1|U, {0x10c83}}},
     4748  {0x10cc4, {1|U, {0x10c84}}},
     4749  {0x10cc5, {1|U, {0x10c85}}},
     4750  {0x10cc6, {1|U, {0x10c86}}},
     4751  {0x10cc7, {1|U, {0x10c87}}},
     4752  {0x10cc8, {1|U, {0x10c88}}},
     4753  {0x10cc9, {1|U, {0x10c89}}},
     4754  {0x10cca, {1|U, {0x10c8a}}},
     4755  {0x10ccb, {1|U, {0x10c8b}}},
     4756  {0x10ccc, {1|U, {0x10c8c}}},
     4757  {0x10ccd, {1|U, {0x10c8d}}},
     4758  {0x10cce, {1|U, {0x10c8e}}},
     4759  {0x10ccf, {1|U, {0x10c8f}}},
     4760  {0x10cd0, {1|U, {0x10c90}}},
     4761  {0x10cd1, {1|U, {0x10c91}}},
     4762  {0x10cd2, {1|U, {0x10c92}}},
     4763  {0x10cd3, {1|U, {0x10c93}}},
     4764  {0x10cd4, {1|U, {0x10c94}}},
     4765  {0x10cd5, {1|U, {0x10c95}}},
     4766  {0x10cd6, {1|U, {0x10c96}}},
     4767  {0x10cd7, {1|U, {0x10c97}}},
     4768  {0x10cd8, {1|U, {0x10c98}}},
     4769  {0x10cd9, {1|U, {0x10c99}}},
     4770  {0x10cda, {1|U, {0x10c9a}}},
     4771  {0x10cdb, {1|U, {0x10c9b}}},
     4772  {0x10cdc, {1|U, {0x10c9c}}},
     4773  {0x10cdd, {1|U, {0x10c9d}}},
     4774  {0x10cde, {1|U, {0x10c9e}}},
     4775  {0x10cdf, {1|U, {0x10c9f}}},
     4776  {0x10ce0, {1|U, {0x10ca0}}},
     4777  {0x10ce1, {1|U, {0x10ca1}}},
     4778  {0x10ce2, {1|U, {0x10ca2}}},
     4779  {0x10ce3, {1|U, {0x10ca3}}},
     4780  {0x10ce4, {1|U, {0x10ca4}}},
     4781  {0x10ce5, {1|U, {0x10ca5}}},
     4782  {0x10ce6, {1|U, {0x10ca6}}},
     4783  {0x10ce7, {1|U, {0x10ca7}}},
     4784  {0x10ce8, {1|U, {0x10ca8}}},
     4785  {0x10ce9, {1|U, {0x10ca9}}},
     4786  {0x10cea, {1|U, {0x10caa}}},
     4787  {0x10ceb, {1|U, {0x10cab}}},
     4788  {0x10cec, {1|U, {0x10cac}}},
     4789  {0x10ced, {1|U, {0x10cad}}},
     4790  {0x10cee, {1|U, {0x10cae}}},
     4791  {0x10cef, {1|U, {0x10caf}}},
     4792  {0x10cf0, {1|U, {0x10cb0}}},
     4793  {0x10cf1, {1|U, {0x10cb1}}},
     4794  {0x10cf2, {1|U, {0x10cb2}}},
     4795  {0x118c0, {1|U, {0x118a0}}},
     4796  {0x118c1, {1|U, {0x118a1}}},
     4797  {0x118c2, {1|U, {0x118a2}}},
     4798  {0x118c3, {1|U, {0x118a3}}},
     4799  {0x118c4, {1|U, {0x118a4}}},
     4800  {0x118c5, {1|U, {0x118a5}}},
     4801  {0x118c6, {1|U, {0x118a6}}},
     4802  {0x118c7, {1|U, {0x118a7}}},
     4803  {0x118c8, {1|U, {0x118a8}}},
     4804  {0x118c9, {1|U, {0x118a9}}},
     4805  {0x118ca, {1|U, {0x118aa}}},
     4806  {0x118cb, {1|U, {0x118ab}}},
     4807  {0x118cc, {1|U, {0x118ac}}},
     4808  {0x118cd, {1|U, {0x118ad}}},
     4809  {0x118ce, {1|U, {0x118ae}}},
     4810  {0x118cf, {1|U, {0x118af}}},
     4811  {0x118d0, {1|U, {0x118b0}}},
     4812  {0x118d1, {1|U, {0x118b1}}},
     4813  {0x118d2, {1|U, {0x118b2}}},
     4814  {0x118d3, {1|U, {0x118b3}}},
     4815  {0x118d4, {1|U, {0x118b4}}},
     4816  {0x118d5, {1|U, {0x118b5}}},
     4817  {0x118d6, {1|U, {0x118b6}}},
     4818  {0x118d7, {1|U, {0x118b7}}},
     4819  {0x118d8, {1|U, {0x118b8}}},
     4820  {0x118d9, {1|U, {0x118b9}}},
     4821  {0x118da, {1|U, {0x118ba}}},
     4822  {0x118db, {1|U, {0x118bb}}},
     4823  {0x118dc, {1|U, {0x118bc}}},
     4824  {0x118dd, {1|U, {0x118bd}}},
     4825  {0x118de, {1|U, {0x118be}}},
     4826  {0x118df, {1|U, {0x118bf}}},
     4827  {0x1e922, {1|U, {0x1e900}}},
     4828  {0x1e923, {1|U, {0x1e901}}},
     4829  {0x1e924, {1|U, {0x1e902}}},
     4830  {0x1e925, {1|U, {0x1e903}}},
     4831  {0x1e926, {1|U, {0x1e904}}},
     4832  {0x1e927, {1|U, {0x1e905}}},
     4833  {0x1e928, {1|U, {0x1e906}}},
     4834  {0x1e929, {1|U, {0x1e907}}},
     4835  {0x1e92a, {1|U, {0x1e908}}},
     4836  {0x1e92b, {1|U, {0x1e909}}},
     4837  {0x1e92c, {1|U, {0x1e90a}}},
     4838  {0x1e92d, {1|U, {0x1e90b}}},
     4839  {0x1e92e, {1|U, {0x1e90c}}},
     4840  {0x1e92f, {1|U, {0x1e90d}}},
     4841  {0x1e930, {1|U, {0x1e90e}}},
     4842  {0x1e931, {1|U, {0x1e90f}}},
     4843  {0x1e932, {1|U, {0x1e910}}},
     4844  {0x1e933, {1|U, {0x1e911}}},
     4845  {0x1e934, {1|U, {0x1e912}}},
     4846  {0x1e935, {1|U, {0x1e913}}},
     4847  {0x1e936, {1|U, {0x1e914}}},
     4848  {0x1e937, {1|U, {0x1e915}}},
     4849  {0x1e938, {1|U, {0x1e916}}},
     4850  {0x1e939, {1|U, {0x1e917}}},
     4851  {0x1e93a, {1|U, {0x1e918}}},
     4852  {0x1e93b, {1|U, {0x1e919}}},
     4853  {0x1e93c, {1|U, {0x1e91a}}},
     4854  {0x1e93d, {1|U, {0x1e91b}}},
     4855  {0x1e93e, {1|U, {0x1e91c}}},
     4856  {0x1e93f, {1|U, {0x1e91d}}},
     4857  {0x1e940, {1|U, {0x1e91e}}},
     4858  {0x1e941, {1|U, {0x1e91f}}},
     4859  {0x1e942, {1|U, {0x1e920}}},
     4860  {0x1e943, {1|U, {0x1e921}}},
     4861#define CaseUnfold_11_Locale (*(CaseUnfold_11_Type (*)[1])(CaseUnfold_11_Table+1266))
     4862  {0x0069, {1|U, {0x0049}}},
    38414863};
    38424864
    3843 /* C code produced by gperf version 3.0.3 */
     4865/* ANSI-C code produced by gperf version 3.1 */
    38444866/* Command-line: gperf -7 -k1,2,3 -F,-1 -c -j1 -i1 -t -T -E -C -H onigenc_unicode_CaseUnfold_11_hash -N onigenc_unicode_CaseUnfold_11_lookup -n  */
    38454867
    3846 /* maximum key range = 1907, duplicates = 0 */
     4868/* maximum key range = 2216, duplicates = 0 */
    38474869
    38484870#ifdef __GNUC__
     
    38594881  static const unsigned short asso_values[] =
    38604882    {
    3861          1, 1915,    4,   12,  199,  716,    4,  230,    6,  134,
    3862        355,  116,    9,    3,    7,   13, 1915, 1915, 1915, 1915,
    3863       1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915,
    3864       1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915,
    3865       1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915, 1915,
    3866       1915, 1915, 1915,   40, 1915, 1915, 1915, 1915, 1915, 1915,
    3867       1915, 1915,   21, 1915,    2,    1,   11,   49,   50,  667,
    3868        131,  651,   26,  872,  251, 1136,   24,   42,  295, 1145,
    3869        111,   27,   47,   12,  812,  806,  107,  786,   21, 1070,
    3870         13,  967,   41,    5,  523, 1152,   71, 1077,   73,  948,
    3871         14,  601,   10,  575,   15,  764,    1,  929,   27, 1057,
    3872         23,  498,   15,  918, 1208,  753, 1211,  512, 1180,  736,
    3873       1082,  711,  441,  898,  410, 1028,  277,  887,  238,  684,
    3874        336,  425,  740,  406, 1016,  360,  972,  382, 1006,  354,
    3875       1168,  302,  999,  286,  901,  252,  546,  106, 1159,  148,
    3876       1121,  224, 1061,  132, 1152,  182,  871,  210, 1163,  235,
    3877       1183,  371, 1197,   64,  954,   90,  339,   79,  604,  168,
    3878        982,  159,  448,  328,  525,  634,  195,  620,  261,  852,
    3879        934,  312,  210,  836,  668,  983,  586,  823,  460,  955,
    3880       1176,  697,  119,  998
     4883         1, 2219,    2,   14,    4,  807,    9,  379,   10,  179,
     4884        70,  161,    2,    3,  411,    4, 2219, 2219, 2219, 2219,
     4885      2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219,   80,
     4886      2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219,
     4887      2219, 2219, 2219,    1, 2219, 2219, 2219, 2219, 2219, 2219,
     4888      2219, 2219, 2219,  210, 2219, 2219, 2219, 2219, 2219, 2219,
     4889      2219, 2219,   53, 2219,    7,    8,  306,  607,  169,  844,
     4890       431,  722,  125, 1047,  489, 1394,   15,   16,  324, 1361,
     4891       140,  521,   47,  461,  221,  985,   70,  965,    9, 1085,
     4892        51, 1029,  223,   11,  430, 1168,  122, 1457,  344,  930,
     4893        91,  711,   31,  651,  157,  772,  224,  876,  262,  900,
     4894       254,  686,  221,  830, 1335,  755,  432,  623, 1382,  675,
     4895      1275,  587,   99,  821, 1530,  958,  195,  810, 1518,  739,
     4896       330,  361,  767,  313,  941,  400,  925,  384, 1142,  295,
     4897      1295,  242, 1103,  229, 1082,  206, 1066,  104, 1317,  137,
     4898      1249,  263, 1229,  115, 1154,   71,  135,   60, 1211,  158,
     4899      1472,  175, 1232,    1, 1345,   27, 1269,   38, 1111,   87,
     4900      1189,   49, 1256,  503, 1157,  574, 1410,  556, 1200,  787,
     4901       948,  486, 1316,  797, 1218, 1044, 1282, 1007, 1126,  996,
     4902       818, 1019,  218, 1072
    38814903    };
    38824904  return asso_values[bits_of(code, 2)+66] + asso_values[bits_of(code, 1)+4] + asso_values[bits_of(code, 0)];
    38834905}
    38844906
    3885 #ifdef __GNUC__
    3886 __inline
    3887 #ifdef __GNUC_STDC_INLINE__
    3888 __attribute__ ((__gnu_inline__))
    3889 #endif
    3890 #endif
    38914907static const CodePointList3 *
    38924908onigenc_unicode_CaseUnfold_11_lookup(const OnigCodePoint code)
     
    38954911    {
    38964912      MIN_CODE_VALUE = 0x61,
    3897       MAX_CODE_VALUE = 0x118df,
    3898       TOTAL_KEYWORDS = 1055,
     4913      MAX_CODE_VALUE = 0x1e943,
     4914      TOTAL_KEYWORDS = 1267,
    38994915      MIN_WORD_LENGTH = 3,
    39004916      MAX_WORD_LENGTH = 3,
    3901       MIN_HASH_VALUE = 8,
    3902       MAX_HASH_VALUE = 1914
     4917      MIN_HASH_VALUE = 3,
     4918      MAX_HASH_VALUE = 2218
    39034919    };
    39044920
    39054921  static const short wordlist[] =
    39064922    {
    3907       -1, -1, -1, -1, -1, -1,
    3908       -1, -1,
    3909       /*0x1e1b*/ 490,
    3910       /*0x049b*/ 362,
     4923      -1, -1, -1,
     4924      /*0x13e1*/ 542,
     4925      /*0x0461*/ 339,
     4926      /*0x04e1*/ 399,
     4927      /*0x0061*/ 0,
     4928      -1,
     4929      /*0x104e1*/ 1122,
     4930      /*0x1e61*/ 613,
     4931      /*0x1ee1*/ 672,
     4932      /*0x0161*/ 102,
     4933      /*0x0261*/ 210,
     4934      /*0x2ce1*/ 904,
     4935      -1,
     4936      /*0x049b*/ 364,
     4937      -1, -1,
     4938      /*0x24e1*/ 792,
     4939      /*0x1e1b*/ 578,
     4940      /*0x048b*/ 356,
    39114941      /*0x011b*/ 69,
    3912       /*0x2c9b*/ 781,
    39134942      /*0x021b*/ 178,
    3914       /*0x051b*/ 426,
    3915       /*0x1e91*/ 549,
    3916       /*0x1e11*/ 485,
    3917       /*0x0491*/ 357,
     4943      /*0x2c9b*/ 869,
     4944      /*0x1e0b*/ 570,
     4945      /*0x1e8b*/ 634,
     4946      /*0x010b*/ 61,
     4947      /*0x020b*/ 170,
     4948      /*0x2c8b*/ 861,
     4949      /*0x13e3*/ 544,
     4950      /*0x0463*/ 340,
     4951      /*0x04e3*/ 400,
     4952      /*0x0063*/ 2,
     4953      /*0x13a4*/ 481,
     4954      /*0x104e3*/ 1124,
     4955      /*0x1e63*/ 614,
     4956      /*0x1ee3*/ 673,
     4957      /*0x0163*/ 103,
     4958      /*0x0263*/ 211,
     4959      /*0x2ce3*/ 905,
     4960      /*0x13e5*/ 546,
     4961      /*0x0465*/ 341,
     4962      /*0x04e5*/ 401,
     4963      /*0x0065*/ 4,
     4964      /*0x24e3*/ 794,
     4965      /*0x104e5*/ 1126,
     4966      /*0x1e65*/ 615,
     4967      /*0x1ee5*/ 674,
     4968      /*0x0165*/ 104,
     4969      /*0x0265*/ 212,
     4970      /*0xa761*/ 1016,
     4971      /*0x13e9*/ 550,
     4972      /*0x0469*/ 343,
     4973      /*0x04e9*/ 403,
     4974      /*0x0069*/ 1266,
     4975      /*0x24e5*/ 796,
     4976      /*0x104e9*/ 1130,
     4977      /*0x1e69*/ 617,
     4978      /*0x1ee9*/ 676,
     4979      /*0x0169*/ 106,
     4980      /*0x0269*/ 215,
     4981      -1,
     4982      /*0x13db*/ 536,
     4983      /*0x045b*/ 334,
     4984      /*0x04db*/ 396,
     4985      -1,
     4986      /*0x24e9*/ 800,
     4987      /*0x104db*/ 1116,
     4988      /*0x1e5b*/ 610,
     4989      /*0x1edb*/ 669,
     4990      /*0x015b*/ 99,
     4991      /*0x025b*/ 207,
     4992      /*0x2cdb*/ 901,
     4993      /*0x13d9*/ 534,
     4994      /*0x0459*/ 332,
     4995      /*0x04d9*/ 395,
     4996      /*0xa763*/ 1017,
     4997      /*0x24db*/ 786,
     4998      /*0x104d9*/ 1114,
     4999      /*0x1e59*/ 609,
     5000      /*0x1ed9*/ 668,
     5001      /*0x0159*/ 98,
     5002      /*0x0259*/ 206,
     5003      /*0x2cd9*/ 900,
     5004      -1,
     5005      /*0x10ce1*/ 1182,
     5006      -1,
     5007      /*0xa765*/ 1018,
     5008      /*0x24d9*/ 784,
     5009      /*0x13e7*/ 548,
     5010      /*0x0467*/ 342,
     5011      /*0x04e7*/ 402,
     5012      /*0x0067*/ 6,
     5013      /*0x13a2*/ 479,
     5014      /*0x104e7*/ 1128,
     5015      /*0x1e67*/ 616,
     5016      /*0x1ee7*/ 675,
     5017      /*0x0167*/ 105,
     5018      /*0xa769*/ 1020,
     5019      -1, -1,
     5020      /*0x13b8*/ 501,
     5021      /*0x0438*/ 299,
     5022      -1,
     5023      /*0x24e7*/ 798,
     5024      /*0x10438*/ 1089,
     5025      /*0x13d1*/ 526,
     5026      /*0x0451*/ 324,
     5027      /*0x04d1*/ 391,
     5028      /*0xa75b*/ 1013,
     5029      -1,
     5030      /*0x10ce3*/ 1184,
     5031      /*0x1e51*/ 605,
     5032      /*0x1ed1*/ 664,
     5033      /*0x0151*/ 94,
     5034      /*0x0251*/ 200,
     5035      /*0x2cd1*/ 896,
     5036      /*0x13d7*/ 532,
     5037      /*0x0457*/ 330,
     5038      /*0x04d7*/ 394,
     5039      /*0xa759*/ 1012,
     5040      /*0x24d1*/ 776,
     5041      /*0x10ce5*/ 1186,
     5042      /*0x1e57*/ 608,
     5043      /*0x1ed7*/ 667,
     5044      /*0x0157*/ 97,
     5045      /*0x0257*/ 205,
     5046      /*0x2cd7*/ 899,
     5047      -1, -1,
     5048      /*0x0586*/ 476,
     5049      -1,
     5050      /*0x24d7*/ 782,
     5051      /*0x10ce9*/ 1190,
     5052      -1, -1,
     5053      /*0xa767*/ 1019,
     5054      /*0x13da*/ 535,
     5055      /*0x045a*/ 333,
     5056      /*0x13d3*/ 528,
     5057      /*0x0453*/ 326,
     5058      /*0x04d3*/ 392,
     5059      /*0x104da*/ 1115,
     5060      /*0xa661*/ 965,
     5061      /*0x10cdb*/ 1176,
     5062      /*0x1e53*/ 606,
     5063      /*0x1ed3*/ 665,
     5064      /*0x0153*/ 95,
     5065      /*0x0253*/ 202,
     5066      /*0x2cd3*/ 897,
     5067      -1, -1,
     5068      /*0x24da*/ 785,
     5069      /*0xa751*/ 1008,
     5070      /*0x24d3*/ 778,
     5071      /*0x10cd9*/ 1174,
     5072      -1, -1, -1,
     5073      /*0x13a6*/ 483,
     5074      /*0x13dd*/ 538,
     5075      /*0x045d*/ 336,
     5076      /*0x04dd*/ 397,
     5077      /*0x03e1*/ 279,
     5078      /*0xa757*/ 1011,
     5079      /*0x104dd*/ 1118,
     5080      /*0x1e5d*/ 611,
     5081      /*0x1edd*/ 670,
     5082      /*0x015d*/ 100,
     5083      /*0xa663*/ 966,
     5084      /*0x2cdd*/ 902,
     5085      /*0x10ce7*/ 1188,
     5086      -1, -1,
     5087      /*0x0582*/ 472,
     5088      /*0x24dd*/ 788,
     5089      -1,
     5090      /*0x13df*/ 540,
     5091      /*0x045f*/ 338,
     5092      /*0x04df*/ 398,
     5093      /*0xa665*/ 967,
     5094      -1,
     5095      /*0x104df*/ 1120,
     5096      /*0x1e5f*/ 612,
     5097      /*0x1edf*/ 671,
     5098      /*0x015f*/ 101,
     5099      /*0xa753*/ 1009,
     5100      /*0x2cdf*/ 903,
     5101      /*0x10cd1*/ 1166,
     5102      /*0x03e3*/ 280,
     5103      /*0xab53*/ 1046,
     5104      /*0xa669*/ 969,
     5105      /*0x24df*/ 790,
     5106      -1, -1,
     5107      /*0x028a*/ 229,
     5108      /*0x028b*/ 230,
     5109      /*0x13bc*/ 505,
     5110      /*0x043c*/ 303,
     5111      /*0x10cd7*/ 1172,
     5112      /*0x03e5*/ 281,
     5113      /*0x1043c*/ 1093,
     5114      /*0xa65b*/ 962,
     5115      -1, -1,
     5116      /*0x013c*/ 84,
     5117      /*0x023c*/ 190,
     5118      /*0xa75d*/ 1014,
     5119      /*0x13cf*/ 524,
     5120      /*0x044f*/ 322,
     5121      /*0x04cf*/ 390,
     5122      /*0x03e9*/ 283,
     5123      /*0x1044f*/ 1112,
     5124      /*0xa659*/ 961,
     5125      /*0x1e4f*/ 604,
     5126      /*0x1ecf*/ 663,
     5127      /*0x014f*/ 93,
     5128      /*0x024f*/ 198,
     5129      /*0x2ccf*/ 895,
     5130      /*0x10cda*/ 1175,
     5131      -1,
     5132      /*0x10cd3*/ 1168,
     5133      /*0x03db*/ 276,
     5134      /*0x13ae*/ 491,
     5135      /*0xa75f*/ 1015,
     5136      /*0x2c61*/ 848,
     5137      /*0x13a8*/ 485,
     5138      /*0x1042e*/ 1079,
     5139      /*0x017e*/ 116,
     5140      /*0xa667*/ 968,
     5141      /*0x10428*/ 1073,
     5142      /*0x13cd*/ 522,
     5143      /*0x044d*/ 320,
     5144      /*0x03d9*/ 275,
     5145      -1,
     5146      /*0x1044d*/ 1110,
     5147      -1,
     5148      /*0x1e4d*/ 603,
     5149      /*0x1ecd*/ 662,
     5150      /*0x014d*/ 92,
     5151      /*0x024d*/ 197,
     5152      /*0x2ccd*/ 894,
     5153      /*0x10cdd*/ 1178,
     5154      -1,
     5155      /*0x13cb*/ 520,
     5156      /*0x044b*/ 318,
     5157      /*0xa651*/ 957,
     5158      -1,
     5159      /*0x1044b*/ 1108,
     5160      /*0x03e7*/ 282,
     5161      /*0x1e4b*/ 602,
     5162      /*0x1ecb*/ 661,
     5163      /*0x014b*/ 91,
     5164      /*0x024b*/ 196,
     5165      /*0x2ccb*/ 893,
     5166      /*0xa74f*/ 1007,
     5167      /*0x13ac*/ 489,
     5168      /*0xa657*/ 960,
     5169      -1,
     5170      /*0x10cdf*/ 1180,
     5171      /*0x1042c*/ 1077,
     5172      /*0x03b8*/ 252,
     5173      /*0x2c65*/ 849,
     5174      -1,
     5175      /*0x13aa*/ 487,
     5176      /*0x13d5*/ 530,
     5177      /*0x0455*/ 328,
     5178      /*0x04d5*/ 393,
     5179      /*0x1042a*/ 1075,
     5180      -1, -1,
     5181      /*0x1e55*/ 607,
     5182      /*0x1ed5*/ 666,
     5183      /*0x0155*/ 96,
     5184      /*0x118db*/ 1227,
     5185      /*0x2cd5*/ 898,
     5186      -1,
     5187      /*0x03d7*/ 274,
     5188      /*0xa74d*/ 1006,
     5189      /*0xa653*/ 958,
     5190      /*0x24d5*/ 780,
     5191      -1, -1, -1,
     5192      /*0x2c5b*/ 844,
     5193      /*0x118d9*/ 1225,
     5194      -1, -1, -1, -1,
     5195      /*0x10ccf*/ 1164,
     5196      /*0xa74b*/ 1005,
     5197      -1, -1, -1,
     5198      /*0x2c59*/ 842,
     5199      -1,
     5200      /*0x13c9*/ 518,
     5201      /*0x0449*/ 316,
     5202      -1,
     5203      /*0xa65d*/ 963,
     5204      /*0x10449*/ 1106,
     5205      /*0x029e*/ 234,
     5206      /*0x1e49*/ 601,
     5207      /*0x1ec9*/ 660,
     5208      -1,
     5209      /*0x0249*/ 195,
     5210      /*0x2cc9*/ 892,
     5211      /*0x1f61*/ 729,
     5212      -1, -1,
     5213      /*0x0580*/ 470,
     5214      /*0xa755*/ 1010,
     5215      /*0x10ccd*/ 1162,
     5216      -1,
     5217      /*0x13c3*/ 512,
     5218      /*0x0443*/ 310,
     5219      /*0xa65f*/ 964,
     5220      /*0x118d1*/ 1217,
     5221      /*0x10443*/ 1100,
     5222      /*0x03dd*/ 277,
     5223      /*0x1e43*/ 598,
     5224      /*0x1ec3*/ 657,
     5225      /*0x2c38*/ 809,
     5226      -1,
     5227      /*0x2cc3*/ 889,
     5228      /*0x10ccb*/ 1160,
     5229      -1,
     5230      /*0x2c51*/ 834,
     5231      /*0x118d7*/ 1223,
     5232      -1, -1,
     5233      /*0x13c0*/ 509,
     5234      /*0x0440*/ 307,
     5235      /*0x1f63*/ 731,
     5236      -1,
     5237      /*0x10440*/ 1097,
     5238      /*0x03df*/ 278,
     5239      /*0x1f24*/ 706,
     5240      /*0x2c57*/ 840,
     5241      /*0x0140*/ 86,
     5242      /*0x0240*/ 192,
     5243      -1, -1,
     5244      /*0xa749*/ 1004,
     5245      /*0x1f65*/ 733,
     5246      /*0x13a0*/ 477,
     5247      /*0x10cd5*/ 1170,
     5248      /*0xa64f*/ 956,
     5249      /*0x118da*/ 1226,
     5250      -1,
     5251      /*0x118d3*/ 1219,
     5252      -1, -1,
     5253      /*0x1f10*/ 696,
     5254      -1, -1,
     5255      /*0x03bc*/ 256,
     5256      -1,
     5257      /*0x2c5a*/ 843,
     5258      -1,
     5259      /*0x2c53*/ 836,
     5260      /*0xa743*/ 1001,
     5261      /*0x13c1*/ 510,
     5262      /*0x0441*/ 308,
     5263      -1, -1,
     5264      /*0x10441*/ 1098,
     5265      -1,
     5266      /*0x1e41*/ 597,
     5267      /*0x1ec1*/ 656,
     5268      /*0xa64d*/ 955,
     5269      /*0x118dd*/ 1229,
     5270      /*0x2cc1*/ 888,
     5271      -1, -1, -1,
     5272      /*0x1f14*/ 700,
     5273      -1,
     5274      /*0x10cc9*/ 1158,
     5275      -1,
     5276      /*0x01e1*/ 151,
     5277      /*0x2c5d*/ 846,
     5278      /*0x03ae*/ 243,
     5279      /*0xa64b*/ 954,
     5280      -1,
     5281      /*0x13c7*/ 516,
     5282      /*0x0447*/ 314,
     5283      -1,
     5284      /*0x118df*/ 1231,
     5285      /*0x10447*/ 1104,
     5286      /*0x03cd*/ 272,
     5287      /*0x1e47*/ 600,
     5288      /*0x1ec7*/ 659,
     5289      /*0x1f67*/ 735,
     5290      /*0x0247*/ 194,
     5291      /*0x2cc7*/ 891,
     5292      /*0x10cc3*/ 1152,
     5293      /*0x1f22*/ 704,
     5294      -1, -1,
     5295      /*0x0292*/ 232,
     5296      /*0x13c5*/ 514,
     5297      /*0x0445*/ 312,
     5298      /*0x03cb*/ 270,
     5299      /*0xa655*/ 959,
     5300      /*0x10445*/ 1102,
     5301      /*0x01e3*/ 152,
     5302      /*0x1e45*/ 599,
     5303      /*0x1ec5*/ 658,
     5304      /*0xa741*/ 1000,
     5305      /*0x1f51*/ 724,
     5306      /*0x2cc5*/ 890,
     5307      /*0x0561*/ 439,
     5308      /*0x10cc0*/ 1149,
     5309      /*0xff59*/ 1071,
     5310      /*0x03ac*/ 241,
     5311      -1,
     5312      /*0x01e5*/ 153,
     5313      /*0x2c3c*/ 813,
     5314      /*0x118cf*/ 1215,
     5315      -1,
     5316      /*0x1f57*/ 727,
     5317      /*0x051b*/ 428,
     5318      -1, -1, -1, -1,
     5319      /*0x050b*/ 420,
     5320      /*0x01e9*/ 155,
     5321      /*0x2c4f*/ 832,
     5322      -1,
     5323      /*0x1f06*/ 694,
     5324      /*0xa747*/ 1003,
     5325      /*0x13b2*/ 495,
     5326      /*0x0432*/ 293,
     5327      /*0x0584*/ 474,
     5328      /*0xa649*/ 953,
     5329      /*0x10432*/ 1083,
     5330      /*0x0563*/ 441,
     5331      /*0x2d16*/ 931,
     5332      -1,
     5333      /*0x2d1b*/ 936,
     5334      /*0x118cd*/ 1213,
     5335      /*0x1f53*/ 725,
     5336      /*0x10cc1*/ 1150,
     5337      /*0x2d0a*/ 919,
     5338      /*0x2d0b*/ 920,
     5339      /*0xff51*/ 1063,
     5340      /*0xa745*/ 1002,
     5341      /*0x0565*/ 443,
     5342      -1, -1,
     5343      /*0x2c4d*/ 830,
     5344      -1,
     5345      /*0xa643*/ 950,
     5346      /*0x118cb*/ 1211,
     5347      /*0x03c9*/ 268,
     5348      -1,
     5349      /*0xff57*/ 1069,
     5350      -1,
     5351      /*0x0569*/ 447,
     5352      /*0x2d24*/ 945,
     5353      -1,
     5354      /*0x1f26*/ 708,
     5355      /*0x0491*/ 359,
     5356      /*0x2c4b*/ 828,
     5357      /*0x01e7*/ 154,
     5358      /*0x10cc7*/ 1156,
     5359      /*0x1e11*/ 573,
     5360      /*0x1e91*/ 637,
    39185361      /*0x0111*/ 64,
    3919       /*0x2c91*/ 776,
    39205362      /*0x0211*/ 173,
    3921       /*0x0511*/ 421,
    3922       /*0xa79b*/ 948,
    3923       /*0x1f24*/ 618,
    3924       /*0x1f00*/ 600,
    3925       /*0x1f11*/ 609,
    3926       /*0x0580*/ 468,
    3927       /*0x1f22*/ 616,
    3928       /*0x1f26*/ 620,
    3929       /*0xa791*/ 944,
    3930       /*0x1e8f*/ 548,
    3931       /*0x1e0f*/ 484,
    3932       /*0x048f*/ 356,
     5363      /*0x2c91*/ 864,
     5364      /*0xa79b*/ 1036,
     5365      /*0x03c3*/ 262,
     5366      /*0x1f02*/ 690,
     5367      /*0x118d5*/ 1221,
     5368      /*0x2d10*/ 925,
     5369      /*0xff5a*/ 1072,
     5370      /*0x1e924*/ 1234,
     5371      /*0xff53*/ 1065,
     5372      /*0x2d18*/ 933,
     5373      -1,
     5374      /*0x10cc5*/ 1154,
     5375      -1,
     5376      /*0x0280*/ 224,
     5377      /*0x2c55*/ 838,
     5378      /*0x13f3*/ 560,
     5379      /*0x0473*/ 348,
     5380      /*0x04f3*/ 408,
     5381      /*0x0073*/ 17,
     5382      /*0x03c0*/ 260,
     5383      /*0x104f3*/ 1140,
     5384      /*0x1e73*/ 622,
     5385      /*0x1ef3*/ 681,
     5386      /*0x0173*/ 111,
     5387      -1,
     5388      /*0x2cf3*/ 908,
     5389      /*0x0567*/ 445,
     5390      -1,
     5391      /*0x2d14*/ 929,
     5392      /*0x019e*/ 126,
     5393      /*0xa641*/ 949,
     5394      /*0x028c*/ 231,
     5395      /*0x13eb*/ 552,
     5396      /*0x046b*/ 344,
     5397      /*0x04eb*/ 404,
     5398      /*0x006b*/ 9,
     5399      /*0x118c9*/ 1209,
     5400      /*0x104eb*/ 1132,
     5401      /*0x1e6b*/ 618,
     5402      /*0x1eeb*/ 677,
     5403      /*0x016b*/ 107,
     5404      /*0x026b*/ 217,
     5405      /*0x01da*/ 147,
     5406      -1, -1, -1,
     5407      /*0x2c49*/ 826,
     5408      -1, -1,
     5409      /*0x2d22*/ 943,
     5410      /*0x03c1*/ 261,
     5411      -1,
     5412      /*0x048f*/ 358,
     5413      /*0xa647*/ 952,
     5414      /*0x118c3*/ 1203,
     5415      /*0x1f12*/ 698,
     5416      /*0x1e0f*/ 572,
     5417      /*0x1e8f*/ 636,
    39335418      /*0x010f*/ 63,
    3934       /*0x2c8f*/ 775,
    39355419      /*0x020f*/ 172,
    3936       /*0x050f*/ 420,
    3937       /*0xa69b*/ 897,
    3938       -1,
    3939       /*0x1f06*/ 606,
    3940       -1,
    3941       /*0x0586*/ 474,
    3942       -1, -1,
    3943       /*0xa691*/ 892,
    3944       /*0x1e8b*/ 546,
    3945       /*0x1e0b*/ 482,
    3946       /*0x048b*/ 354,
    3947       /*0x010b*/ 61,
    3948       /*0x2c8b*/ 773,
    3949       /*0x020b*/ 170,
    3950       /*0x050b*/ 418,
    3951       /*0x1e81*/ 541,
    3952       /*0x1e01*/ 477,
    3953       /*0x0481*/ 353,
     5420      /*0x2c8f*/ 863,
     5421      /*0xa69b*/ 985,
     5422      -1, -1,
     5423      /*0x2c43*/ 820,
     5424      /*0x01dd*/ 149,
     5425      /*0xa68b*/ 977,
     5426      /*0x1e922*/ 1232,
     5427      -1,
     5428      /*0xa645*/ 951,
     5429      -1,
     5430      /*0x118c0*/ 1200,
     5431      -1,
     5432      /*0x03c7*/ 266,
     5433      -1,
     5434      /*0x1e938*/ 1254,
     5435      -1,
     5436      /*0xff4f*/ 1061,
     5437      -1,
     5438      /*0xa76b*/ 1021,
     5439      /*0x2d1e*/ 939,
     5440      /*0x2c40*/ 817,
     5441      /*0x01df*/ 150,
     5442      /*0x2d06*/ 915,
     5443      /*0x0373*/ 236,
     5444      /*0x13ef*/ 556,
     5445      /*0x046f*/ 346,
     5446      /*0x04ef*/ 406,
     5447      /*0x006f*/ 13,
     5448      /*0x03c5*/ 264,
     5449      /*0x104ef*/ 1136,
     5450      /*0x1e6f*/ 620,
     5451      /*0x1eef*/ 679,
     5452      /*0x016f*/ 109,
     5453      /*0x026f*/ 219,
     5454      -1, -1,
     5455      /*0x1f55*/ 726,
     5456      /*0x2d0e*/ 923,
     5457      -1,
     5458      /*0xff4d*/ 1059,
     5459      -1,
     5460      /*0x118c1*/ 1201,
     5461      /*0x13ed*/ 554,
     5462      /*0x046d*/ 345,
     5463      /*0x04ed*/ 405,
     5464      /*0x006d*/ 11,
     5465      -1,
     5466      /*0x104ed*/ 1134,
     5467      /*0x1e6d*/ 619,
     5468      /*0x1eed*/ 678,
     5469      /*0x016d*/ 108,
     5470      /*0x2c41*/ 818,
     5471      /*0xff4b*/ 1057,
     5472      /*0x10ceb*/ 1192,
     5473      -1,
     5474      /*0x13b7*/ 500,
     5475      /*0x0437*/ 298,
     5476      /*0x04b7*/ 378,
     5477      -1,
     5478      /*0x10437*/ 1088,
     5479      /*0x03b2*/ 246,
     5480      /*0x1e37*/ 592,
     5481      /*0x1eb7*/ 651,
     5482      /*0x0137*/ 82,
     5483      /*0x118c7*/ 1207,
     5484      /*0x2cb7*/ 883,
     5485      /*0x2d02*/ 911,
     5486      /*0x0192*/ 122,
     5487      -1,
     5488      /*0x019a*/ 125,
     5489      /*0x01a8*/ 130,
     5490      /*0xa76f*/ 1023,
     5491      /*0x1e926*/ 1236,
     5492      /*0xff55*/ 1067,
     5493      /*0x2c47*/ 824,
     5494      /*0x1fe1*/ 755,
     5495      -1,
     5496      /*0x0481*/ 355,
     5497      /*0x0581*/ 471,
     5498      /*0x1f00*/ 688,
     5499      /*0x118c5*/ 1205,
     5500      /*0x1e01*/ 565,
     5501      /*0x1e81*/ 629,
    39545502      /*0x0101*/ 56,
    3955       /*0x2c81*/ 768,
    39565503      /*0x0201*/ 165,
    3957       /*0x0501*/ 413,
    3958       /*0xa68f*/ 891,
    3959       /*0x1f10*/ 608,
    3960       -1,
    3961       /*0x1f01*/ 601,
    3962       /*0x1f02*/ 602,
    3963       /*0x0581*/ 469,
    3964       /*0x0582*/ 470,
    3965       /*0xa781*/ 939,
    3966       /*0x1ee1*/ 584,
    3967       /*0x1e61*/ 525,
    3968       /*0x04e1*/ 397,
    3969       /*0x0161*/ 102,
    3970       /*0x2ce1*/ 816,
    3971       /*0x0261*/ 210,
    3972       /*0x0561*/ 437,
    3973       /*0xa68b*/ 889,
    3974       /*0x0461*/ 337,
    3975       -1,
    3976       /*0x1f61*/ 641,
    3977       -1, -1, -1,
    3978       /*0xa681*/ 884,
    3979       /*0x1ee5*/ 586,
    3980       /*0x1e65*/ 527,
    3981       /*0x04e5*/ 399,
    3982       /*0x0165*/ 104,
    3983       /*0x1f20*/ 614,
    3984       /*0x0265*/ 212,
    3985       /*0x0565*/ 441,
    3986       -1,
    3987       /*0x0465*/ 339,
    3988       -1,
    3989       /*0x1f65*/ 645,
    3990       /*0x1ee3*/ 585,
    3991       /*0x1e63*/ 526,
    3992       /*0x04e3*/ 398,
    3993       /*0x0163*/ 103,
    3994       /*0x2ce3*/ 817,
    3995       /*0x0263*/ 211,
    3996       /*0x0563*/ 439,
    3997       -1,
    3998       /*0x0463*/ 338,
    3999       -1,
    4000       /*0x1f63*/ 643,
    4001       -1, -1, -1,
    4002       /*0x2c61*/ 760,
    4003       /*0x24e1*/ 704,
    4004       /*0x1ed1*/ 576,
    4005       /*0x1e51*/ 517,
    4006       /*0x04d1*/ 389,
    4007       /*0x0151*/ 94,
    4008       /*0x2cd1*/ 808,
    4009       /*0x0251*/ 200,
    4010       /*0x1fe1*/ 667,
    4011       /*0xa761*/ 928,
    4012       /*0x0451*/ 322,
    4013       -1,
    4014       /*0x1f51*/ 636,
    4015       /*0x1f14*/ 612,
    4016       -1,
    4017       /*0x2c65*/ 761,
    4018       /*0x24e5*/ 708,
    4019       -1,
    4020       /*0x017e*/ 116,
    4021       -1, -1,
    4022       /*0x057e*/ 466,
    4023       -1,
    4024       /*0x1fe5*/ 668,
    4025       /*0xa765*/ 930,
    4026       -1,
    4027       /*0x03ae*/ 241,
    4028       /*0x24e3*/ 706,
    4029       /*0x1ed7*/ 579,
    4030       /*0x1e57*/ 520,
    4031       /*0x04d7*/ 392,
    4032       /*0x0157*/ 97,
    4033       /*0x2cd7*/ 811,
    4034       /*0x0257*/ 205,
    4035       /*0x03ac*/ 239,
    4036       /*0xa763*/ 929,
    4037       /*0x0457*/ 328,
    4038       /*0x1f04*/ 604,
    4039       /*0x1f57*/ 639,
    4040       /*0x0584*/ 472,
    4041       /*0x0280*/ 223,
    4042       -1,
    4043       /*0x2c51*/ 746,
    4044       /*0x24d1*/ 688,
    4045       /*0x1ed3*/ 577,
    4046       /*0x1e53*/ 518,
    4047       /*0x04d3*/ 390,
    4048       /*0x0153*/ 95,
    4049       /*0x2cd3*/ 809,
    4050       /*0x0253*/ 202,
    4051       /*0x1fd1*/ 665,
    4052       /*0xa751*/ 920,
    4053       /*0x0453*/ 324,
    4054       /*0x028a*/ 228,
    4055       /*0x1f53*/ 637,
    4056       /*0x1ee9*/ 588,
    4057       /*0x1e69*/ 529,
    4058       /*0x04e9*/ 401,
    4059       /*0x0169*/ 106,
    4060       -1,
    4061       /*0x0269*/ 215,
    4062       /*0x0569*/ 445,
    4063       -1,
    4064       /*0x0469*/ 341,
    4065       /*0x1ee7*/ 587,
    4066       /*0x1e67*/ 528,
    4067       /*0x04e7*/ 400,
    4068       /*0x0167*/ 105,
    4069       /*0x2c57*/ 752,
    4070       /*0x24d7*/ 694,
    4071       /*0x0567*/ 443,
    4072       /*0x028b*/ 229,
    4073       /*0x0467*/ 340,
    4074       /*0xa661*/ 877,
    4075       /*0x1f67*/ 647,
    4076       /*0x03e1*/ 277,
    4077       -1,
    4078       /*0xa757*/ 923,
    4079       /*0x1ed9*/ 580,
    4080       /*0x1e59*/ 521,
    4081       /*0x04d9*/ 393,
    4082       /*0x0159*/ 98,
    4083       /*0x2cd9*/ 812,
    4084       /*0x0259*/ 206,
    4085       /*0x2c53*/ 748,
    4086       /*0x24d3*/ 690,
    4087       /*0x0459*/ 330,
    4088       -1,
    4089       /*0xa665*/ 879,
    4090       -1,
    4091       /*0x03e5*/ 279,
    4092       -1, -1,
    4093       /*0xa753*/ 921,
    4094       -1,
    4095       /*0x2cee*/ 819,
    4096       /*0x24e9*/ 712,
    4097       /*0x056e*/ 450,
    4098       -1,
    4099       /*0xa663*/ 878,
    4100       /*0x029e*/ 232,
    4101       /*0x03e3*/ 278,
    4102       -1,
    4103       /*0x10428*/ 982,
    4104       /*0xa769*/ 932,
    4105       /*0x24e7*/ 710,
    4106       /*0x1edb*/ 581,
    4107       /*0x1e5b*/ 522,
    4108       /*0x04db*/ 394,
    4109       /*0x015b*/ 99,
    4110       /*0x2cdb*/ 813,
    4111       /*0x025b*/ 207,
    4112       /*0x0574*/ 456,
    4113       /*0xa767*/ 931,
    4114       /*0x045b*/ 332,
    4115       /*0xa651*/ 869,
    4116       /*0x1f74*/ 652,
    4117       /*0x1042e*/ 988,
    4118       /*0x2c59*/ 754,
    4119       /*0x24d9*/ 696,
    4120       /*0x1ed5*/ 578,
    4121       /*0x1e55*/ 519,
    4122       /*0x04d5*/ 391,
    4123       /*0x0155*/ 96,
    4124       /*0x2cd5*/ 810,
    4125       /*0x1042c*/ 986,
    4126       /*0x01a8*/ 130,
    4127       /*0xa759*/ 924,
    4128       /*0x0455*/ 326,
    4129       /*0x1042a*/ 984,
    4130       /*0x1f55*/ 638,
    4131       /*0x1edd*/ 582,
    4132       /*0x1e5d*/ 523,
    4133       /*0x04dd*/ 395,
    4134       /*0x015d*/ 100,
    4135       /*0x2cdd*/ 814,
     5504      /*0x2c81*/ 856,
     5505      /*0x1f43*/ 721,
     5506      -1, -1,
     5507      /*0xa76d*/ 1022,
     5508      /*0x2c45*/ 822,
     5509      /*0x13b3*/ 496,
     5510      /*0x0433*/ 294,
     5511      /*0x04b3*/ 376,
     5512      -1,
     5513      /*0x10433*/ 1084,
     5514      /*0x057e*/ 468,
     5515      /*0x1e33*/ 590,
     5516      /*0x1eb3*/ 649,
     5517      /*0x0133*/ 80,
     5518      /*0x0233*/ 189,
     5519      /*0x2cb3*/ 881,
     5520      /*0xa737*/ 995,
     5521      /*0x1f40*/ 718,
     5522      -1,
     5523      /*0xff49*/ 1055,
     5524      /*0x10cef*/ 1196,
     5525      -1, -1, -1,
     5526      /*0x1e93c*/ 1258,
     5527      /*0xa66b*/ 970,
     5528      /*0x1fe5*/ 756,
     5529      -1,
     5530      /*0x03f3*/ 288,
     5531      -1,
     5532      /*0x217e*/ 772,
     5533      /*0x1f20*/ 702,
     5534      /*0x2d12*/ 927,
     5535      /*0x13a5*/ 482,
     5536      /*0x2d1a*/ 935,
     5537      /*0x04a5*/ 369,
     5538      /*0x2c32*/ 803,
     5539      /*0xff43*/ 1049,
     5540      /*0x10ced*/ 1194,
     5541      /*0x1e25*/ 583,
     5542      /*0x1ea5*/ 642,
     5543      /*0x0125*/ 74,
     5544      /*0x0225*/ 182,
     5545      /*0x2ca5*/ 874,
     5546      -1,
     5547      /*0x03eb*/ 284,
     5548      -1, -1,
     5549      /*0x1f41*/ 719,
     5550      /*0x0288*/ 227,
     5551      /*0x1e92e*/ 1244,
     5552      -1,
     5553      /*0xa733*/ 993,
     5554      /*0x1e928*/ 1238,
     5555      -1,
     5556      /*0x01c9*/ 139,
     5557      -1,
     5558      /*0x13b5*/ 498,
     5559      /*0x0435*/ 296,
     5560      /*0x04b5*/ 377,
     5561      -1,
     5562      /*0x10435*/ 1086,
     5563      -1,
     5564      /*0x1e35*/ 591,
     5565      /*0x1eb5*/ 650,
     5566      /*0x0135*/ 81,
    41365567      /*0x0180*/ 117,
     5568      /*0x2cb5*/ 882,
     5569      /*0x13ad*/ 490,
     5570      -1,
     5571      /*0x04ad*/ 373,
     5572      -1,
     5573      /*0x1042d*/ 1078,
     5574      -1,
     5575      /*0x1e2d*/ 587,
     5576      /*0x1ead*/ 646,
     5577      /*0x012d*/ 78,
     5578      /*0x022d*/ 186,
     5579      /*0x2cad*/ 878,
     5580      -1,
     5581      /*0xa725*/ 987,
     5582      -1, -1,
     5583      /*0x1e92c*/ 1242,
     5584      /*0x018c*/ 121,
     5585      /*0xff41*/ 1047,
     5586      -1,
     5587      /*0x1f45*/ 723,
     5588      -1, -1,
     5589      /*0x2c73*/ 854,
     5590      /*0x1e92a*/ 1240,
     5591      /*0x1fd1*/ 753,
     5592      /*0x13a3*/ 480,
     5593      -1,
     5594      /*0x04a3*/ 368,
     5595      /*0xa66d*/ 971,
     5596      -1,
     5597      /*0x03ef*/ 286,
     5598      /*0x1e23*/ 582,
     5599      /*0x1ea3*/ 641,
     5600      /*0x0123*/ 73,
     5601      /*0x0223*/ 181,
     5602      /*0x2ca3*/ 873,
     5603      /*0xa735*/ 994,
     5604      -1, -1,
     5605      /*0x0585*/ 475,
     5606      /*0xff47*/ 1053,
     5607      -1,
     5608      /*0x1e05*/ 567,
     5609      /*0x1e85*/ 631,
     5610      /*0x0105*/ 58,
     5611      /*0x0205*/ 167,
     5612      /*0x2c85*/ 858,
     5613      /*0xa72d*/ 991,
     5614      /*0x03ed*/ 285,
     5615      /*0x2d00*/ 909,
     5616      /*0x1f04*/ 692,
     5617      /*0x1f32*/ 712,
     5618      -1,
     5619      /*0x13bf*/ 508,
     5620      /*0x043f*/ 306,
     5621      /*0x04bf*/ 382,
     5622      /*0xff45*/ 1051,
     5623      /*0x1043f*/ 1096,
     5624      -1,
     5625      /*0x1e3f*/ 596,
     5626      /*0x1ebf*/ 655,
     5627      /*0x03b7*/ 251,
     5628      /*0x023f*/ 191,
     5629      /*0x2cbf*/ 887,
     5630      -1, -1, -1,
     5631      /*0x2d0c*/ 921,
     5632      -1,
     5633      /*0x13b1*/ 494,
     5634      /*0x0431*/ 292,
     5635      /*0x04b1*/ 375,
     5636      /*0xa723*/ 986,
     5637      /*0x10431*/ 1082,
     5638      /*0x1e943*/ 1265,
     5639      /*0x1e31*/ 589,
     5640      /*0x1eb1*/ 648,
     5641      -1,
     5642      /*0x0231*/ 188,
     5643      /*0x2cb1*/ 880,
     5644      /*0x1f11*/ 697,
     5645      /*0x13c2*/ 511,
     5646      /*0x0442*/ 309,
     5647      /*0x04c2*/ 383,
     5648      -1,
     5649      /*0x10442*/ 1099,
     5650      /*0x13a7*/ 484,
     5651      /*0x2d20*/ 941,
     5652      /*0x04a7*/ 370,
     5653      /*0x0142*/ 87,
     5654      /*0x0242*/ 193,
     5655      /*0x1e940*/ 1262,
     5656      /*0x1e27*/ 584,
     5657      /*0x1ea7*/ 643,
     5658      /*0x0127*/ 75,
     5659      /*0x0227*/ 183,
     5660      /*0x2ca7*/ 875,
     5661      /*0x03b3*/ 247,
     5662      -1,
     5663      /*0xa78c*/ 1031,
     5664      /*0xa73f*/ 999,
     5665      /*0x13f1*/ 558,
     5666      /*0x0471*/ 347,
     5667      /*0x04f1*/ 407,
     5668      /*0x0071*/ 15,
     5669      /*0x1f73*/ 739,
     5670      /*0x104f1*/ 1138,
     5671      /*0x1e71*/ 621,
     5672      /*0x1ef1*/ 680,
     5673      /*0x0171*/ 110,
     5674      /*0x0271*/ 220,
     5675      /*0x13f5*/ 562,
     5676      /*0x0475*/ 349,
     5677      /*0x04f5*/ 409,
     5678      /*0x0075*/ 19,
     5679      -1,
     5680      /*0x104f5*/ 1142,
     5681      /*0x1e75*/ 623,
     5682      /*0x1ef5*/ 682,
     5683      /*0x0175*/ 112,
     5684      /*0x0275*/ 222,
     5685      /*0x00e1*/ 26,
     5686      /*0x1e941*/ 1263,
     5687      /*0x2c37*/ 808,
     5688      /*0x13bd*/ 506,
     5689      /*0x043d*/ 304,
     5690      /*0x04bd*/ 381,
     5691      -1,
     5692      /*0x1043d*/ 1094,
     5693      -1,
     5694      /*0x1e3d*/ 595,
     5695      /*0x1ebd*/ 654,
     5696      -1,
     5697      /*0xa727*/ 988,
     5698      /*0x2cbd*/ 886,
     5699      /*0x13b9*/ 502,
     5700      /*0x0439*/ 300,
     5701      /*0x04b9*/ 379,
     5702      -1,
     5703      /*0x10439*/ 1090,
     5704      /*0x017c*/ 115,
     5705      /*0x1e39*/ 593,
     5706      /*0x1eb9*/ 652,
     5707      -1,
     5708      /*0x13af*/ 492,
     5709      /*0x2cb9*/ 884,
     5710      /*0x04af*/ 374,
     5711      /*0x00e3*/ 28,
     5712      /*0x1042f*/ 1080,
     5713      /*0x03b5*/ 249,
     5714      /*0x1e2f*/ 588,
     5715      /*0x1eaf*/ 647,
     5716      /*0x012f*/ 79,
     5717      /*0x022f*/ 187,
     5718      /*0x2caf*/ 879,
     5719      -1, -1, -1,
     5720      /*0x00e5*/ 30,
     5721      /*0x2c33*/ 804,
     5722      /*0x03ad*/ 242,
     5723      /*0x0583*/ 473,
     5724      -1,
     5725      /*0x10cc2*/ 1151,
     5726      /*0x1e03*/ 566,
     5727      /*0x1e83*/ 630,
     5728      /*0x0103*/ 57,
     5729      /*0x0203*/ 166,
     5730      /*0x2c83*/ 857,
     5731      /*0x00e9*/ 34,
     5732      /*0x0371*/ 235,
     5733      /*0xa73d*/ 998,
     5734      -1,
     5735      /*0x2d1c*/ 937,
     5736      /*0x2d04*/ 913,
     5737      -1, -1, -1,
     5738      /*0x01f3*/ 159,
     5739      /*0xa77c*/ 1025,
     5740      -1,
     5741      /*0x0188*/ 120,
     5742      /*0xa739*/ 996,
     5743      /*0x10cf1*/ 1198,
     5744      -1,
     5745      /*0x0511*/ 423,
     5746      -1, -1, -1, -1,
     5747      /*0x13a9*/ 486,
     5748      /*0xa72f*/ 992,
     5749      /*0x04a9*/ 371,
     5750      /*0x1e932*/ 1248,
     5751      /*0x10429*/ 1074,
     5752      /*0x01eb*/ 156,
     5753      /*0x1e29*/ 585,
     5754      /*0x1ea9*/ 644,
     5755      /*0x0129*/ 76,
     5756      /*0x0229*/ 184,
     5757      /*0x2ca9*/ 876,
     5758      /*0x037c*/ 239,
     5759      -1, -1,
     5760      /*0x2d11*/ 926,
     5761      -1,
     5762      /*0x1f37*/ 717,
     5763      /*0x00e7*/ 32,
     5764      -1, -1,
     5765      /*0x0573*/ 457,
     5766      /*0x2c35*/ 806,
     5767      -1,
     5768      /*0x03bf*/ 259,
     5769      /*0x13ab*/ 488,
     5770      -1,
     5771      /*0x04ab*/ 372,
     5772      -1,
     5773      /*0x1042b*/ 1076,
     5774      -1,
     5775      /*0x1e2b*/ 586,
     5776      /*0x1eab*/ 645,
     5777      /*0x012b*/ 77,
     5778      /*0x022b*/ 185,
     5779      /*0x2cab*/ 877,
     5780      -1,
     5781      /*0x1f01*/ 689,
     5782      /*0x056b*/ 449,
     5783      -1,
     5784      /*0x03b1*/ 245,
     5785      /*0x2173*/ 761,
     5786      -1,
     5787      /*0x2d08*/ 917,
     5788      -1, -1, -1,
     5789      /*0xa791*/ 1032,
     5790      /*0xa729*/ 989,
     5791      -1,
     5792      /*0x13c6*/ 515,
     5793      /*0x0446*/ 313,
     5794      /*0x04c6*/ 385,
     5795      /*0x1f33*/ 713,
     5796      /*0x10446*/ 1103,
     5797      /*0x13a1*/ 478,
     5798      /*0x050f*/ 422,
     5799      /*0x04a1*/ 367,
     5800      /*0x0146*/ 89,
     5801      /*0x01ef*/ 158,
     5802      -1,
     5803      /*0x1e21*/ 581,
     5804      /*0x1ea1*/ 640,
     5805      /*0x0121*/ 72,
     5806      -1,
     5807      /*0x2ca1*/ 872,
     5808      /*0x13c4*/ 513,
     5809      /*0x0444*/ 311,
     5810      /*0x04c4*/ 384,
     5811      -1,
     5812      /*0x10444*/ 1101,
     5813      -1,
     5814      /*0xa72b*/ 990,
     5815      /*0x13f2*/ 559,
     5816      /*0x0144*/ 88,
     5817      /*0x2d0f*/ 924,
     5818      /*0x0072*/ 16,
     5819      /*0x01ed*/ 157,
     5820      /*0x104f2*/ 1139,
     5821      -1, -1,
     5822      /*0x1f25*/ 707,
     5823      /*0x0272*/ 221,
     5824      /*0x13bb*/ 504,
     5825      /*0x043b*/ 302,
     5826      /*0x04bb*/ 380,
     5827      /*0x2c3f*/ 816,
     5828      /*0x1043b*/ 1092,
     5829      -1,
     5830      /*0x1e3b*/ 594,
     5831      /*0x1ebb*/ 653,
     5832      /*0x056f*/ 453,
     5833      /*0x0495*/ 361,
     5834      /*0x2cbb*/ 885,
     5835      -1,
     5836      /*0x03bd*/ 257,
     5837      /*0x1e15*/ 575,
     5838      /*0x1e95*/ 639,
     5839      /*0x0115*/ 66,
     5840      /*0x0215*/ 175,
     5841      /*0x2c95*/ 866,
     5842      -1,
     5843      /*0x2c31*/ 802,
     5844      -1,
     5845      /*0x118c2*/ 1202,
     5846      /*0x1f35*/ 715,
     5847      /*0x03b9*/ 253,
     5848      /*0xa691*/ 980,
     5849      -1,
     5850      /*0x056d*/ 451,
     5851      -1, -1,
     5852      /*0x0493*/ 360,
     5853      -1,
     5854      /*0x2c42*/ 819,
     5855      /*0x03af*/ 244,
     5856      /*0x1e13*/ 574,
     5857      /*0x1e93*/ 638,
     5858      /*0x0113*/ 65,
     5859      /*0x0213*/ 174,
     5860      /*0x2c93*/ 865,
     5861      -1,
     5862      /*0x047b*/ 352,
     5863      /*0x04fb*/ 412,
     5864      -1, -1,
     5865      /*0x104fb*/ 1148,
     5866      /*0x1e7b*/ 626,
     5867      /*0x1efb*/ 685,
     5868      -1,
     5869      /*0xa73b*/ 997,
     5870      -1,
     5871      /*0x10cc6*/ 1155,
     5872      /*0x0479*/ 351,
     5873      /*0x04f9*/ 411,
     5874      /*0x0079*/ 23,
     5875      -1,
     5876      /*0x104f9*/ 1146,
     5877      /*0x1e79*/ 625,
     5878      /*0x1ef9*/ 684,
     5879      -1,
     5880      /*0x1f23*/ 705,
     5881      /*0x0501*/ 415,
     5882      -1, -1,
     5883      /*0x047d*/ 353,
     5884      /*0x04fd*/ 413,
     5885      /*0x0283*/ 225,
     5886      /*0x10cc4*/ 1153,
     5887      /*0x00fe*/ 54,
     5888      /*0x1e7d*/ 627,
     5889      /*0x1efd*/ 686,
     5890      /*0x1f05*/ 693,
     5891      /*0x027d*/ 223,
     5892      /*0x01a5*/ 129,
     5893      /*0x10cf2*/ 1199,
     5894      /*0x0499*/ 363,
     5895      /*0x2c3d*/ 814,
     5896      -1,
     5897      /*0x1e937*/ 1253,
     5898      /*0x1e19*/ 577,
     5899      /*0x2d01*/ 910,
     5900      /*0x0119*/ 68,
     5901      /*0x0219*/ 177,
     5902      /*0x2c99*/ 868,
     5903      -1, -1,
     5904      /*0xa68f*/ 979,
     5905      /*0x2c39*/ 810,
     5906      -1,
     5907      /*0x0477*/ 350,
     5908      /*0x04f7*/ 410,
     5909      /*0x0077*/ 21,
     5910      /*0xa7b7*/ 1045,
     5911      /*0x104f7*/ 1144,
     5912      /*0x1e77*/ 624,
     5913      /*0x1ef7*/ 683,
     5914      /*0x0177*/ 113,
     5915      /*0x1e07*/ 568,
     5916      /*0x1e87*/ 632,
     5917      /*0x0107*/ 59,
     5918      /*0x0207*/ 168,
     5919      /*0x2c87*/ 859,
     5920      -1,
     5921      /*0x1d79*/ 563,
     5922      /*0x1f31*/ 711,
     5923      /*0x0525*/ 433,
     5924      -1, -1,
     5925      /*0x01ad*/ 131,
     5926      /*0x037b*/ 238,
     5927      /*0x13d0*/ 525,
     5928      /*0x0450*/ 323,
     5929      /*0xa781*/ 1027,
     5930      -1,
     5931      /*0x1e933*/ 1249,
     5932      /*0x1d7d*/ 564,
     5933      /*0x1f42*/ 720,
     5934      /*0x047f*/ 354,
     5935      /*0x04ff*/ 414,
     5936      /*0x0250*/ 199,
     5937      -1,
     5938      /*0x1f27*/ 709,
     5939      /*0x1e7f*/ 628,
     5940      /*0x1eff*/ 687,
     5941      /*0x2d25*/ 946,
     5942      /*0x24d0*/ 775,
     5943      /*0x13ce*/ 523,
     5944      /*0x044e*/ 321,
     5945      /*0x04ce*/ 389,
     5946      /*0x03c6*/ 265,
     5947      /*0x1044e*/ 1111,
     5948      /*0x0497*/ 362,
     5949      /*0x037d*/ 240,
     5950      /*0x01a3*/ 128,
     5951      -1,
     5952      /*0x1e17*/ 576,
     5953      /*0x1f71*/ 737,
     5954      /*0x0117*/ 67,
     5955      /*0x0217*/ 176,
     5956      /*0x2c97*/ 867,
     5957      /*0x052d*/ 437,
     5958      -1,
     5959      /*0x1e925*/ 1235,
     5960      -1,
     5961      /*0x0185*/ 119,
     5962      /*0x03c4*/ 263,
     5963      /*0x1f75*/ 741,
     5964      /*0x13cc*/ 521,
     5965      /*0x044c*/ 319,
     5966      /*0x04cc*/ 388,
     5967      -1,
     5968      /*0x1044c*/ 1109,
     5969      /*0x03f2*/ 287,
     5970      /*0xff42*/ 1048,
     5971      -1,
     5972      /*0x13e6*/ 547,
     5973      /*0xa7a5*/ 1041,
     5974      /*0x0377*/ 237,
     5975      /*0x0066*/ 5,
     5976      /*0x2d2d*/ 948,
     5977      /*0x104e6*/ 1127,
     5978      /*0x01bf*/ 137,
     5979      /*0x03bb*/ 255,
     5980      /*0xa77f*/ 1026,
     5981      /*0x0266*/ 213,
     5982      /*0x0523*/ 432,
     5983      /*0x1e935*/ 1251,
     5984      /*0x1f7c*/ 748,
     5985      -1, -1,
     5986      /*0x24e6*/ 797,
     5987      -1,
     5988      /*0xa681*/ 972,
     5989      /*0x007a*/ 24,
     5990      -1,
     5991      /*0x104fa*/ 1147,
     5992      /*0x0505*/ 417,
     5993      /*0x1e92d*/ 1243,
     5994      /*0x017a*/ 114,
     5995      -1,
     5996      /*0xa7b5*/ 1044,
     5997      /*0x118c6*/ 1206,
     5998      -1, -1,
     5999      /*0x2d23*/ 944,
     6000      -1,
     6001      /*0x13c8*/ 517,
     6002      /*0x0448*/ 315,
     6003      /*0x04c8*/ 386,
     6004      -1,
     6005      /*0x10448*/ 1105,
     6006      /*0x2c46*/ 823,
     6007      /*0x10cd0*/ 1165,
     6008      /*0x1f03*/ 691,
     6009      /*0x0148*/ 90,
     6010      /*0x2d05*/ 914,
     6011      /*0x2184*/ 774,
     6012      /*0x118c4*/ 1204,
     6013      /*0x13d8*/ 533,
     6014      /*0x0458*/ 331,
     6015      /*0x03fb*/ 290,
     6016      /*0x13ec*/ 553,
     6017      /*0x1e923*/ 1233,
     6018      /*0x104d8*/ 1113,
     6019      /*0x006c*/ 10,
     6020      -1,
     6021      /*0x104ec*/ 1133,
     6022      /*0x2c44*/ 821,
     6023      /*0x10cce*/ 1163,
     6024      -1,
     6025      /*0x026c*/ 218,
     6026      /*0x2cec*/ 906,
     6027      -1,
     6028      /*0x24d8*/ 783,
     6029      /*0x049d*/ 365,
     6030      -1,
     6031      /*0xa7a3*/ 1040,
     6032      /*0xa77a*/ 1024,
     6033      /*0x1e1d*/ 579,
     6034      /*0x01f5*/ 160,
     6035      /*0x011d*/ 70,
     6036      /*0x021d*/ 179,
     6037      /*0x2c9d*/ 870,
     6038      -1,
     6039      /*0x2c3b*/ 812,
     6040      -1,
     6041      /*0x0527*/ 434,
     6042      /*0xa785*/ 1029,
     6043      -1,
     6044      /*0x10ccc*/ 1161,
     6045      /*0x1e93f*/ 1261,
     6046      -1,
     6047      /*0x01bd*/ 136,
     6048      /*0x13e8*/ 549,
     6049      -1, -1,
     6050      /*0x0068*/ 7,
     6051      /*0x10ce6*/ 1187,
     6052      /*0x104e8*/ 1129,
     6053      -1, -1,
     6054      /*0x0571*/ 455,
     6055      /*0x0268*/ 214,
     6056      /*0x01b9*/ 135,
     6057      /*0x13f0*/ 557,
     6058      /*0x2d27*/ 947,
     6059      /*0x1e931*/ 1247,
     6060      /*0x0070*/ 14,
     6061      /*0x24e8*/ 799,
     6062      /*0x104f0*/ 1137,
     6063      -1,
     6064      /*0x0575*/ 459,
     6065      -1, -1, -1,
     6066      /*0x13dc*/ 537,
     6067      /*0x045c*/ 335,
     6068      -1,
     6069      /*0x1e942*/ 1264,
     6070      -1,
     6071      /*0x104dc*/ 1117,
     6072      /*0x2171*/ 759,
     6073      -1,
     6074      /*0x1e927*/ 1237,
     6075      /*0x025c*/ 208,
     6076      /*0x0076*/ 20,
     6077      /*0x0183*/ 118,
     6078      /*0x104f6*/ 1143,
     6079      /*0x10cc8*/ 1157,
     6080      /*0x0287*/ 226,
     6081      /*0x24dc*/ 787,
     6082      /*0x2175*/ 763,
     6083      /*0x057c*/ 466,
     6084      /*0x13d6*/ 531,
     6085      /*0x0456*/ 329,
     6086      -1,
     6087      /*0x13e0*/ 541,
     6088      /*0xa7a7*/ 1042,
     6089      -1,
     6090      /*0x1f21*/ 703,
     6091      /*0x10cd8*/ 1173,
     6092      /*0x104e0*/ 1121,
     6093      /*0x0256*/ 204,
     6094      /*0x10cec*/ 1193,
     6095      /*0x052f*/ 438,
     6096      /*0x0260*/ 209,
     6097      /*0x03ce*/ 273,
     6098      /*0xa685*/ 974,
     6099      /*0x24d6*/ 781,
     6100      -1,
     6101      /*0x1f44*/ 722,
     6102      /*0x24e0*/ 791,
     6103      /*0x217c*/ 770,
     6104      /*0x13d4*/ 529,
     6105      /*0x0454*/ 327,
     6106      -1, -1,
     6107      /*0x1f72*/ 738,
     6108      /*0x0503*/ 416,
     6109      -1,
     6110      /*0x13ea*/ 551,
     6111      /*0x1e93d*/ 1259,
     6112      /*0x0254*/ 203,
     6113      /*0x006a*/ 8,
     6114      -1,
     6115      /*0x104ea*/ 1131,
     6116      -1,
     6117      /*0x03cc*/ 271,
     6118      /*0x24d4*/ 779,
     6119      /*0x026a*/ 216,
     6120      -1,
     6121      /*0xff46*/ 1052,
     6122      /*0x1e939*/ 1255,
     6123      /*0x13e4*/ 545,
     6124      /*0x1f15*/ 701,
     6125      /*0x10ce8*/ 1189,
     6126      /*0x0064*/ 3,
     6127      /*0x2d03*/ 912,
     6128      /*0x104e4*/ 1125,
     6129      /*0x13b6*/ 499,
     6130      /*0x0436*/ 297,
     6131      /*0x1e92f*/ 1245,
     6132      /*0x118d0*/ 1216,
     6133      /*0x10436*/ 1087,
     6134      -1, -1,
     6135      /*0x10cf0*/ 1197,
     6136      /*0xff44*/ 1050,
     6137      /*0x24e4*/ 795,
     6138      /*0x0078*/ 22,
     6139      /*0x0529*/ 435,
     6140      /*0x104f8*/ 1145,
     6141      /*0x2c50*/ 833,
     6142      -1,
     6143      /*0x1f13*/ 699,
     6144      -1,
     6145      /*0x00f3*/ 44,
     6146      /*0x10cdc*/ 1177,
     6147      /*0x118ce*/ 1214,
     6148      /*0x13ca*/ 519,
     6149      /*0x044a*/ 317,
     6150      /*0x04ca*/ 387,
     6151      -1,
     6152      /*0x1044a*/ 1107,
     6153      -1,
     6154      /*0x1f7b*/ 747,
     6155      /*0x03c8*/ 267,
     6156      /*0x01c6*/ 138,
     6157      /*0x2c4e*/ 831,
     6158      /*0xa783*/ 1028,
     6159      -1, -1,
     6160      /*0x01a1*/ 127,
     6161      /*0x00eb*/ 36,
     6162      /*0x052b*/ 436,
     6163      /*0x10cd6*/ 1171,
     6164      /*0x1f79*/ 745,
     6165      -1,
     6166      /*0x10ce0*/ 1181,
     6167      /*0x118cc*/ 1212,
     6168      /*0x13f4*/ 561,
     6169      /*0x13d2*/ 527,
     6170      /*0x0452*/ 325,
     6171      /*0x0074*/ 18,
     6172      -1,
     6173      /*0x104f4*/ 1141,
     6174      -1,
     6175      /*0x1e929*/ 1239,
     6176      /*0x1f7d*/ 749,
     6177      /*0x2c4c*/ 829,
     6178      /*0x0252*/ 201,
     6179      -1, -1, -1, -1,
     6180      /*0x10cd4*/ 1169,
     6181      /*0x24d2*/ 777,
     6182      /*0x2c66*/ 850,
     6183      -1,
     6184      /*0x13b0*/ 493,
     6185      /*0x0430*/ 291,
     6186      /*0xa7a9*/ 1043,
     6187      /*0x10cea*/ 1191,
     6188      /*0x10430*/ 1081,
     6189      /*0x0521*/ 431,
     6190      -1, -1,
     6191      /*0x0195*/ 123,
     6192      -1,
     6193      /*0x13e2*/ 543,
     6194      /*0x029d*/ 233,
     6195      /*0x1e92b*/ 1241,
     6196      /*0x0062*/ 1,
     6197      /*0x1f77*/ 743,
     6198      /*0x104e2*/ 1123,
     6199      /*0x10ce4*/ 1185,
     6200      /*0x1f07*/ 695,
     6201      -1,
     6202      /*0x118c8*/ 1208,
     6203      -1, -1, -1,
     6204      /*0x0572*/ 456,
     6205      /*0x2d21*/ 942,
     6206      /*0x24e2*/ 793,
     6207      /*0x1fb1*/ 751,
     6208      /*0x00ef*/ 40,
     6209      /*0x048d*/ 357,
     6210      /*0x2c48*/ 825,
     6211      /*0xa683*/ 973,
     6212      /*0x118d8*/ 1224,
     6213      /*0x1e0d*/ 571,
     6214      /*0x1e8d*/ 635,
     6215      /*0x010d*/ 62,
     6216      /*0x020d*/ 171,
     6217      /*0x2c8d*/ 862,
     6218      -1, -1,
     6219      /*0x01fb*/ 162,
     6220      /*0x0515*/ 425,
     6221      /*0x2c58*/ 841,
     6222      /*0x10cca*/ 1159,
     6223      /*0x2172*/ 760,
     6224      /*0x2c6c*/ 853,
     6225      /*0x00ed*/ 38,
     6226      -1,
     6227      /*0x13b4*/ 497,
     6228      /*0x0434*/ 295,
     6229      -1,
     6230      /*0x01f9*/ 161,
     6231      /*0x10434*/ 1085,
     6232      -1, -1, -1, -1,
     6233      /*0xa7a1*/ 1039,
     6234      -1, -1,
     6235      /*0x2d15*/ 930,
     6236      /*0x0513*/ 424,
     6237      -1,
     6238      /*0x01fd*/ 163,
     6239      -1,
     6240      /*0x10cd2*/ 1167,
     6241      /*0x1e09*/ 569,
     6242      /*0x1e89*/ 633,
     6243      /*0x0109*/ 60,
     6244      /*0x0209*/ 169,
     6245      /*0x2c89*/ 860,
     6246      /*0x1e93b*/ 1257,
     6247      /*0x057b*/ 465,
     6248      /*0x0199*/ 124,
     6249      /*0xff50*/ 1062,
     6250      -1,
     6251      /*0x13ee*/ 555,
     6252      /*0x2c68*/ 851,
     6253      -1,
     6254      /*0x006e*/ 12,
     6255      /*0x2d13*/ 928,
     6256      /*0x104ee*/ 1135,
     6257      /*0x1f66*/ 734,
     6258      /*0x0579*/ 463,
     6259      -1, -1,
     6260      /*0x2cee*/ 907,
     6261      -1, -1,
     6262      /*0x118dc*/ 1228,
     6263      /*0xff4e*/ 1060,
     6264      -1,
     6265      /*0x217b*/ 769,
     6266      /*0x10ce2*/ 1183,
     6267      -1,
     6268      /*0x057d*/ 467,
     6269      -1,
     6270      /*0x1f7a*/ 746,
     6271      -1,
     6272      /*0x2c5c*/ 845,
     6273      -1,
     6274      /*0x03b6*/ 250,
     6275      -1,
     6276      /*0x2179*/ 767,
     6277      -1,
     6278      /*0x0519*/ 427,
     6279      /*0x2c76*/ 855,
     6280      /*0x118d6*/ 1222,
     6281      /*0x03f8*/ 289,
     6282      -1,
     6283      /*0x01d0*/ 142,
     6284      /*0xff4c*/ 1058,
     6285      /*0xa793*/ 1033,
     6286      -1, -1,
     6287      /*0x217d*/ 771,
     6288      /*0x01ff*/ 164,
     6289      /*0x2c56*/ 839,
     6290      -1, -1,
     6291      /*0x0577*/ 461,
     6292      /*0x03ca*/ 269,
     6293      -1,
     6294      /*0x0507*/ 418,
     6295      /*0x2d19*/ 934,
     6296      /*0x049f*/ 366,
     6297      /*0x01ce*/ 141,
     6298      /*0x118d4*/ 1220,
     6299      -1,
     6300      /*0x1e1f*/ 580,
     6301      -1,
     6302      /*0x011f*/ 71,
     6303      /*0x021f*/ 180,
     6304      /*0x2c9f*/ 871,
     6305      -1, -1, -1,
     6306      /*0x2c54*/ 837,
     6307      /*0x13de*/ 539,
     6308      /*0x045e*/ 337,
     6309      /*0x2177*/ 765,
     6310      -1,
     6311      /*0x2d07*/ 916,
     6312      /*0x104de*/ 1119,
     6313      /*0x2c6a*/ 852,
     6314      -1, -1,
     6315      /*0x01cc*/ 140,
     6316      /*0x057f*/ 469,
     6317      -1,
     6318      /*0xff48*/ 1054,
     6319      -1,
     6320      /*0xa695*/ 982,
     6321      /*0x24de*/ 789,
     6322      -1, -1,
     6323      /*0xa799*/ 1035,
     6324      -1,
     6325      /*0x10cee*/ 1195,
     6326      -1, -1,
     6327      /*0x0517*/ 426,
     6328      /*0xff58*/ 1070,
     6329      /*0x2c36*/ 807,
     6330      -1, -1, -1, -1,
     6331      /*0x217f*/ 773,
     6332      -1, -1,
     6333      /*0x1f70*/ 736,
     6334      /*0xa693*/ 981,
     6335      /*0x118ca*/ 1210,
     6336      /*0xa787*/ 1030,
     6337      -1, -1, -1,
     6338      /*0x214e*/ 757,
     6339      -1,
     6340      /*0x2d17*/ 932,
     6341      -1, -1,
     6342      /*0x2c4a*/ 827,
     6343      /*0x13be*/ 507,
     6344      /*0x043e*/ 305,
     6345      -1,
     6346      /*0x0566*/ 444,
     6347      /*0x1043e*/ 1095,
     6348      /*0x1f76*/ 742,
     6349      -1, -1,
    41376350      /*0x013e*/ 85,
    4138       -1,
    4139       /*0x045d*/ 334,
    4140       -1,
    4141       /*0xa657*/ 872,
    4142       /*0x043e*/ 303,
    4143       /*0x03d7*/ 272,
    4144       -1,
    4145       /*0x217e*/ 684,
    4146       /*0x2c5b*/ 756,
    4147       /*0x24db*/ 698,
    4148       /*0x1ecf*/ 575,
    4149       /*0x1e4f*/ 516,
    4150       /*0x04cf*/ 388,
    4151       /*0x014f*/ 93,
    4152       /*0x2ccf*/ 807,
    4153       /*0x024f*/ 198,
    4154       -1,
    4155       /*0xa75b*/ 925,
    4156       /*0x044f*/ 320,
    4157       /*0xa653*/ 870,
    4158       /*0x0061*/ 0,
    4159       -1,
    4160       /*0x2c55*/ 750,
    4161       /*0x24d5*/ 692,
    4162       -1,
    4163       /*0x0570*/ 452,
    4164       -1, -1,
    4165       /*0x019a*/ 125,
    4166       /*0x1f70*/ 648,
    4167       /*0xa669*/ 881,
    4168       /*0xa755*/ 922,
    4169       /*0x03e9*/ 281,
    4170       /*0x2c5d*/ 758,
    4171       /*0x24dd*/ 700,
    4172       /*0x0065*/ 4,
    4173       /*0x2c3e*/ 727,
    4174       -1,
    4175       /*0x013c*/ 84,
    4176       /*0xa667*/ 880,
    4177       /*0x023c*/ 190,
    4178       /*0x03e7*/ 280,
    4179       /*0xa75d*/ 926,
    4180       /*0x043c*/ 301,
    4181       /*0x1ecd*/ 574,
    4182       /*0x1e4d*/ 515,
    4183       /*0x0063*/ 2,
    4184       /*0x014d*/ 92,
    4185       /*0x2ccd*/ 806,
    4186       /*0x024d*/ 197,
    4187       /*0x2c4f*/ 744,
    4188       /*0x01e1*/ 151,
    4189       /*0x044d*/ 318,
    4190       /*0xa659*/ 873,
    4191       -1,
    4192       /*0x03d9*/ 273,
    4193       -1, -1,
    4194       /*0x019e*/ 126,
    4195       /*0xa74f*/ 919,
    4196       /*0x1ecb*/ 573,
    4197       /*0x1e4b*/ 514,
    4198       -1,
    4199       /*0x014b*/ 91,
    4200       /*0x2ccb*/ 805,
    4201       /*0x024b*/ 196,
    4202       /*0x01e5*/ 153,
    4203       /*0xa78c*/ 943,
    4204       /*0x044b*/ 316,
    4205       -1,
    4206       /*0x1ef3*/ 593,
    4207       /*0x1e73*/ 534,
    4208       /*0x04f3*/ 406,
    4209       /*0x0173*/ 111,
    4210       /*0x2cf3*/ 820,
    4211       /*0x2c3c*/ 725,
    4212       /*0x0573*/ 455,
    4213       /*0x01e3*/ 152,
    4214       /*0x0473*/ 346,
    4215       -1,
    4216       /*0x1f73*/ 651,
    4217       /*0xa65b*/ 874,
    4218       -1,
    4219       /*0x03db*/ 274,
    4220       /*0x2c4d*/ 742,
    4221       -1,
    4222       /*0x1eeb*/ 589,
    4223       /*0x1e6b*/ 530,
    4224       /*0x04eb*/ 402,
    4225       /*0x016b*/ 107,
    4226       -1,
    4227       /*0x026b*/ 216,
    4228       /*0x056b*/ 447,
    4229       /*0xa74d*/ 918,
    4230       /*0x046b*/ 342,
    4231       /*0xa655*/ 871,
    4232       -1,
    4233       /*0x0140*/ 86,
    4234       /*0x2174*/ 674,
    4235       /*0x0240*/ 192,
    4236       /*0x2c4b*/ 740,
    4237       /*0x118d1*/ 1039,
    4238       /*0x0440*/ 305,
    4239       /*0x0564*/ 440,
    4240       /*0x1f40*/ 630,
    4241       -1,
    4242       /*0xa65d*/ 875,
    4243       /*0x1f64*/ 644,
    4244       /*0x03dd*/ 275,
    4245       /*0xa74b*/ 917,
    4246       /*0x2c73*/ 766,
    4247       /*0x03be*/ 256,
    4248       /*0x1ec9*/ 572,
    4249       /*0x1e49*/ 513,
    4250       -1,
    4251       /*0x0069*/ 1054,
    4252       /*0x2cc9*/ 804,
    4253       /*0x0249*/ 195,
    4254       /*0x1ec5*/ 570,
    4255       /*0x1e45*/ 511,
    4256       /*0x0449*/ 314,
    4257       -1,
    4258       /*0x2cc5*/ 802,
    4259       /*0xa64f*/ 868,
    4260       /*0x0067*/ 6,
    4261       -1,
    4262       /*0x0445*/ 310,
    4263       /*0x118d7*/ 1045,
    4264       /*0x1f45*/ 635,
    4265       /*0x1edf*/ 583,
    4266       /*0x1e5f*/ 524,
    4267       /*0x04df*/ 396,
    4268       /*0x015f*/ 101,
    4269       /*0x2cdf*/ 815,
    4270       /*0x2c40*/ 729,
    4271       /*0xa76b*/ 933,
    4272       -1,
    4273       /*0x045f*/ 336,
    4274       /*0x24e4*/ 707,
    4275       -1,
    4276       /*0x1ec7*/ 571,
    4277       /*0x1e47*/ 512,
    4278       /*0x0288*/ 226,
    4279       /*0x118d3*/ 1041,
    4280       /*0x2cc7*/ 803,
    4281       /*0x0247*/ 194,
    4282       /*0x01e9*/ 155,
    4283       -1,
    4284       /*0x0447*/ 312,
    4285       /*0x2170*/ 670,
    4286       /*0x03bc*/ 254,
    4287       /*0x006e*/ 12,
    4288       /*0x2c49*/ 738,
    4289       -1, -1,
    4290       /*0x01e7*/ 154,
    4291       -1,
    4292       /*0xa64d*/ 867,
    4293       /*0x2c45*/ 734,
    4294       /*0x03cd*/ 270,
    4295       -1,
    4296       /*0xa749*/ 916,
    4297       -1, -1,
    4298       /*0x1ec3*/ 569,
    4299       /*0x1e43*/ 510,
    4300       /*0x0074*/ 18,
    4301       /*0xa745*/ 914,
    4302       /*0x2cc3*/ 801,
    4303       -1,
    4304       /*0x24df*/ 702,
     6351      -1, -1,
     6352      /*0x118d2*/ 1218,
     6353      /*0x13ba*/ 503,
     6354      /*0x043a*/ 301,
     6355      /*0x01d8*/ 146,
     6356      -1,
     6357      /*0x1043a*/ 1091,
     6358      -1,
     6359      /*0x057a*/ 464,
     6360      /*0x1f60*/ 728,
    43056361      /*0x013a*/ 83,
    4306       /*0x0443*/ 308,
    4307       /*0xa64b*/ 866,
    4308       /*0x1f43*/ 633,
    4309       /*0x03cb*/ 268,
    4310       /*0x043a*/ 299,
    4311       /*0x118d9*/ 1047,
    4312       /*0xa75f*/ 927,
    4313       -1,
    4314       /*0x2c47*/ 736,
    4315       -1, -1,
    4316       /*0x1ec1*/ 568,
    4317       /*0x1e41*/ 509,
    4318       /*0x03f3*/ 286,
    4319       /*0x028c*/ 230,
    4320       /*0x2cc1*/ 800,
    4321       -1,
    4322       /*0xa747*/ 915,
    4323       -1,
    4324       /*0x0441*/ 306,
    4325       -1,
    4326       /*0x1f41*/ 631,
     6362      /*0x2c52*/ 835,
     6363      -1, -1,
     6364      /*0x03b4*/ 248,
     6365      -1, -1, -1,
     6366      /*0xa797*/ 1034,
     6367      -1, -1, -1,
     6368      /*0xa699*/ 984,
     6369      -1, -1, -1,
     6370      /*0x10cde*/ 1179,
     6371      -1,
     6372      /*0x217a*/ 768,
     6373      /*0x2c30*/ 801,
     6374      -1, -1, -1, -1, -1, -1,
     6375      -1, -1, -1,
     6376      /*0x056c*/ 450,
     6377      /*0xa687*/ 975,
     6378      -1, -1,
     6379      /*0xff56*/ 1068,
     6380      /*0x0289*/ 228,
     6381      -1,
     6382      /*0x1f64*/ 732,
     6383      -1, -1, -1,
     6384      /*0x051d*/ 429,
     6385      -1,
     6386      /*0x1f36*/ 716,
     6387      -1, -1, -1, -1, -1, -1,
     6388      /*0x1f78*/ 744,
     6389      -1,
     6390      /*0x01dc*/ 148,
     6391      -1,
     6392      /*0xff54*/ 1066,
     6393      -1,
     6394      /*0x00f1*/ 42,
     6395      -1, -1, -1,
     6396      /*0x2d1d*/ 938,
     6397      -1,
     6398      /*0x0568*/ 446,
     6399      -1, -1, -1,
     6400      /*0x00f5*/ 46,
     6401      /*0x2c34*/ 805,
     6402      -1,
     6403      /*0xa697*/ 983,
     6404      /*0x01d6*/ 145,
     6405      -1, -1,
     6406      /*0x0570*/ 454,
     6407      -1, -1, -1, -1, -1, -1,
     6408      -1, -1, -1, -1,
     6409      /*0x1f74*/ 740,
     6410      -1, -1,
     6411      /*0x00fc*/ 52,
     6412      -1, -1,
     6413      /*0x01d4*/ 144,
     6414      /*0x0576*/ 460,
     6415      /*0xa79d*/ 1037,
     6416      /*0x2170*/ 758,
     6417      -1, -1, -1, -1, -1, -1,
     6418      /*0xff4a*/ 1056,
     6419      -1, -1,
     6420      /*0x1f30*/ 710,
     6421      -1, -1, -1, -1, -1, -1,
     6422      -1,
     6423      /*0x2176*/ 764,
     6424      -1,
     6425      /*0x1f62*/ 730,
     6426      -1, -1,
     6427      /*0x01b6*/ 134,
    43276428      -1, -1, -1, -1, -1,
    4328       /*0xa66b*/ 882,
    4329       /*0x2173*/ 673,
    4330       /*0x03eb*/ 282,
    4331       /*0x1043e*/ 1004,
    4332       -1,
    4333       /*0x2c43*/ 732,
    4334       /*0x118db*/ 1049,
    4335       -1,
    4336       /*0x0438*/ 297,
    4337       /*0x2c3a*/ 723,
    4338       /*0x03c0*/ 258,
    4339       /*0xff51*/ 972,
    4340       -1,
    4341       /*0x056a*/ 446,
    4342       /*0xa743*/ 913,
    4343       -1, -1,
    4344       /*0x1044f*/ 1021,
    4345       /*0x0070*/ 14,
    4346       -1,
    4347       /*0x118d5*/ 1043,
    4348       -1,
    4349       /*0x017a*/ 114,
    4350       /*0x01dd*/ 149,
    4351       /*0x2c41*/ 730,
    4352       /*0x057a*/ 462,
    4353       /*0xa649*/ 865,
    4354       -1,
    4355       /*0x03c9*/ 266,
    4356       /*0x1f7a*/ 658,
    4357       -1,
    4358       /*0x118dd*/ 1051,
    4359       /*0xa645*/ 863,
    4360       /*0xa741*/ 912,
    4361       /*0x03c5*/ 262,
    4362       -1, -1,
    4363       /*0xff57*/ 978,
    4364       -1,
    4365       /*0x0188*/ 120,
    4366       /*0x2c38*/ 721,
    4367       -1,
    4368       /*0x1043c*/ 1002,
    4369       /*0xa65f*/ 876,
    4370       -1,
    4371       /*0x03df*/ 276,
    4372       -1,
    4373       /*0x2c6a*/ 764,
    4374       /*0x118cf*/ 1037,
    4375       -1, -1,
    4376       /*0x1044d*/ 1019,
    4377       -1,
    4378       /*0xff53*/ 974,
    4379       /*0xa647*/ 864,
    4380       -1,
    4381       /*0x03c7*/ 264,
    4382       /*0x1ead*/ 558,
    4383       /*0x1e2d*/ 499,
    4384       /*0x04ad*/ 371,
    4385       /*0x012d*/ 78,
    4386       /*0x2cad*/ 790,
    4387       /*0x022d*/ 186,
    4388       /*0x052d*/ 435,
    4389       -1, -1, -1,
    4390       /*0x1044b*/ 1017,
    4391       /*0xa77a*/ 936,
    4392       /*0x0073*/ 17,
    4393       -1,
    4394       /*0x1eb3*/ 561,
    4395       /*0x1e33*/ 502,
    4396       /*0x04b3*/ 374,
    4397       /*0x0133*/ 80,
    4398       /*0x2cb3*/ 793,
    4399       /*0x0233*/ 189,
    4400       -1,
    4401       /*0xa643*/ 862,
    4402       /*0x0433*/ 292,
    4403       /*0x03c3*/ 260,
    4404       /*0x1f33*/ 625,
    4405       /*0x118cd*/ 1035,
    4406       /*0x018c*/ 121,
    4407       /*0x03ba*/ 252,
    4408       /*0x006b*/ 9,
    4409       /*0x2d1b*/ 848,
    4410       /*0xff59*/ 980,
    4411       /*0x2cec*/ 818,
    4412       /*0x026c*/ 217,
    4413       /*0x056c*/ 448,
    4414       /*0x2d24*/ 857,
    4415       /*0x2d00*/ 821,
    4416       /*0x2d11*/ 838,
    4417       /*0x2d18*/ 845,
    4418       /*0x2d22*/ 855,
    4419       /*0x0064*/ 3,
    4420       /*0xa641*/ 861,
    4421       /*0x118cb*/ 1033,
    4422       /*0x03c1*/ 259,
    4423       /*0x01f3*/ 159,
    4424       /*0x10440*/ 1006,
    4425       /*0x2d16*/ 843,
    4426       -1, -1,
    4427       /*0x2d0a*/ 831,
    4428       /*0xa72d*/ 903,
    4429       /*0x2d06*/ 827,
    4430       /*0x2d0f*/ 836,
    4431       -1,
    4432       /*0x0250*/ 199,
    4433       /*0x2c33*/ 716,
    4434       -1,
    4435       /*0x0450*/ 321,
    4436       -1,
    4437       /*0x03b8*/ 250,
    4438       /*0x01eb*/ 156,
    4439       -1, -1,
    4440       /*0x10449*/ 1015,
    4441       /*0xa733*/ 905,
    4442       -1,
    4443       /*0x2d1a*/ 847,
    4444       /*0x2d0b*/ 832,
    4445       /*0x2c6c*/ 765,
    4446       /*0x10445*/ 1011,
    4447       -1, -1,
    4448       /*0x2d10*/ 837,
    4449       /*0xff55*/ 976,
    4450       /*0x2d01*/ 822,
    4451       /*0x2d02*/ 823,
    4452       /*0x118c0*/ 1022,
    4453       -1,
    4454       /*0x1ea5*/ 554,
    4455       /*0x1e25*/ 495,
    4456       /*0x04a5*/ 367,
    4457       /*0x0125*/ 74,
    4458       /*0x2ca5*/ 786,
    4459       /*0x0225*/ 182,
    4460       /*0x0525*/ 431,
    4461       -1,
    4462       /*0x01c9*/ 139,
    4463       -1,
    4464       /*0x1f25*/ 619,
    4465       /*0x2c50*/ 745,
    4466       /*0x24d0*/ 687,
    4467       /*0x10447*/ 1013,
    4468       /*0xa7a5*/ 953,
    4469       /*0x217a*/ 680,
    4470       /*0x118c9*/ 1031,
    4471       /*0x0578*/ 460,
    4472       /*0x2d1e*/ 851,
    4473       /*0x1fd0*/ 664,
    4474       /*0x2d20*/ 853,
    4475       /*0x1f78*/ 656,
    4476       /*0x118c5*/ 1027,
    4477       /*0xff4f*/ 970,
    4478       -1,
    4479       /*0x01df*/ 150,
    4480       /*0x1ea3*/ 553,
    4481       /*0x1e23*/ 494,
    4482       /*0x04a3*/ 366,
    4483       /*0x0123*/ 73,
    4484       /*0x2ca3*/ 785,
    4485       /*0x0223*/ 181,
    4486       /*0x0523*/ 430,
    4487       /*0x118df*/ 1053,
    4488       /*0x0266*/ 213,
    4489       /*0x0566*/ 442,
    4490       /*0x1f23*/ 617,
    4491       /*0x10443*/ 1009,
    4492       /*0x03ad*/ 240,
    4493       /*0x1f66*/ 646,
    4494       /*0xa7a3*/ 952,
    4495       /*0x1043a*/ 1000,
    4496       -1, -1,
    4497       /*0x118c7*/ 1029,
    4498       /*0x1eef*/ 591,
    4499       /*0x1e6f*/ 532,
    4500       /*0x04ef*/ 404,
    4501       /*0x016f*/ 109,
    4502       /*0xa725*/ 899,
    4503       /*0x026f*/ 218,
    4504       /*0x056f*/ 451,
    4505       /*0x03b3*/ 245,
    4506       /*0x046f*/ 344,
    4507       /*0x2d14*/ 841,
    4508       -1,
    4509       /*0x10441*/ 1007,
    4510       /*0xff4d*/ 968,
    4511       /*0x2d0e*/ 835,
    4512       /*0x1eed*/ 590,
    4513       /*0x1e6d*/ 531,
    4514       /*0x04ed*/ 403,
    4515       /*0x016d*/ 108,
    4516       -1, -1,
    4517       /*0x056d*/ 449,
    4518       -1,
    4519       /*0x046d*/ 343,
    4520       /*0x118c3*/ 1025,
    4521       /*0x2c66*/ 762,
    4522       /*0x24e6*/ 709,
    4523       /*0x006a*/ 8,
    4524       /*0x10438*/ 998,
    4525       /*0xff4b*/ 966,
    4526       -1,
    4527       /*0xa723*/ 898,
    4528       /*0x1e85*/ 543,
    4529       /*0x1e05*/ 479,
    4530       /*0x2d04*/ 825,
    4531       /*0x0105*/ 58,
    4532       /*0x2c85*/ 770,
    4533       /*0x0205*/ 167,
    4534       /*0x0505*/ 415,
    4535       /*0x007a*/ 24,
    4536       -1, -1,
    4537       /*0x1f05*/ 605,
    4538       /*0x118c1*/ 1023,
    4539       /*0x0585*/ 473,
    4540       -1,
    4541       /*0xa785*/ 941,
    4542       /*0x0373*/ 234,
    4543       /*0x1e83*/ 542,
    4544       /*0x1e03*/ 478,
    4545       /*0xa76f*/ 935,
    4546       /*0x0103*/ 57,
    4547       /*0x2c83*/ 769,
    4548       /*0x0203*/ 166,
    4549       /*0x0503*/ 414,
    4550       /*0x0576*/ 458,
    4551       -1, -1,
    4552       /*0x1f03*/ 603,
    4553       /*0x1f76*/ 654,
    4554       /*0x0583*/ 471,
    4555       /*0xa685*/ 886,
    4556       /*0xa783*/ 940,
    4557       -1,
    4558       /*0xa76d*/ 934,
    4559       /*0x1ebf*/ 567,
    4560       /*0x1e3f*/ 508,
    4561       /*0x04bf*/ 380,
    4562       -1,
    4563       /*0x2cbf*/ 799,
    4564       /*0x023f*/ 191,
    4565       -1, -1,
    4566       /*0x043f*/ 304,
    4567       -1, -1, -1,
    4568       /*0xa683*/ 885,
    4569       /*0x1efd*/ 598,
    4570       /*0x1e7d*/ 539,
    4571       /*0x04fd*/ 411,
    4572       /*0xff49*/ 964,
    4573       /*0x03f8*/ 287,
    4574       /*0x027d*/ 222,
    4575       /*0x057d*/ 465,
    4576       /*0x1042d*/ 987,
    4577       /*0x047d*/ 351,
    4578       /*0xff45*/ 960,
    4579       /*0x1f7d*/ 661,
    4580       /*0x2c76*/ 767,
    4581       -1, -1,
    4582       /*0x1eb7*/ 563,
    4583       /*0x1e37*/ 504,
    4584       /*0x04b7*/ 376,
    4585       /*0x0137*/ 82,
    4586       /*0x2cb7*/ 795,
    4587       /*0x2178*/ 678,
    4588       /*0x1d7d*/ 476,
    4589       /*0x10433*/ 993,
    4590       /*0x0437*/ 296,
    4591       -1,
    4592       /*0x1f37*/ 629,
    4593       -1,
    4594       /*0x006c*/ 10,
    4595       /*0x2c3f*/ 728,
    4596       -1, -1,
    4597       /*0x01ad*/ 131,
    4598       /*0xff47*/ 962,
     6429      /*0xff52*/ 1064,
     6430      -1, -1, -1, -1, -1, -1,
     6431      /*0x056a*/ 448,
     6432      -1, -1, -1, -1, -1,
     6433      /*0x1fd0*/ 752,
     6434      -1, -1, -1, -1, -1,
     6435      /*0x03be*/ 258,
     6436      /*0x0564*/ 442,
    45996437      -1, -1, -1, -1,
    4600       /*0xa73f*/ 911,
    4601       -1,
    4602       /*0x03ef*/ 284,
    4603       /*0x1eb5*/ 562,
    4604       /*0x1e35*/ 503,
    4605       /*0x04b5*/ 375,
    4606       /*0x0135*/ 81,
    4607       /*0x2cb5*/ 794,
    4608       -1,
    4609       /*0x04c2*/ 381,
    4610       /*0x0142*/ 87,
    4611       /*0x0435*/ 294,
    4612       /*0x0242*/ 193,
    4613       /*0x1f35*/ 627,
    4614       /*0xa66d*/ 883,
    4615       /*0x0442*/ 307,
    4616       /*0x03ed*/ 283,
    4617       /*0x1f42*/ 632,
    4618       /*0x2c37*/ 720,
    4619       /*0xff43*/ 958,
    4620       /*0x1eb1*/ 560,
    4621       /*0x1e31*/ 501,
    4622       /*0x04b1*/ 373,
    4623       -1,
    4624       /*0x2cb1*/ 792,
    4625       /*0x0231*/ 188,
    4626       -1,
    4627       /*0xa737*/ 907,
    4628       /*0x0431*/ 290,
    4629       -1,
    4630       /*0x1f31*/ 623,
    4631       /*0x1ea7*/ 555,
    4632       /*0x1e27*/ 496,
    4633       /*0x04a7*/ 368,
    4634       /*0x0127*/ 75,
    4635       /*0x2ca7*/ 787,
    4636       /*0x0227*/ 183,
    4637       /*0x0527*/ 432,
    4638       /*0xff41*/ 956,
    4639       -1,
    4640       /*0x2d08*/ 829,
    4641       /*0x1f27*/ 621,
    4642       /*0x01d0*/ 142,
    4643       /*0x2c35*/ 718,
    4644       -1,
    4645       /*0xa7a7*/ 954,
    4646       /*0x00e1*/ 26,
    4647       /*0x2c42*/ 731,
    4648       /*0x2184*/ 686,
    4649       -1,
    4650       /*0x118d0*/ 1038,
    4651       /*0x0078*/ 22,
    4652       /*0xa735*/ 906,
    4653       /*0x1e95*/ 551,
    4654       /*0x1e15*/ 487,
    4655       /*0x0495*/ 359,
    4656       /*0x0115*/ 66,
    4657       /*0x2c95*/ 778,
    4658       /*0x0215*/ 175,
    4659       /*0x0515*/ 423,
    4660       /*0x2c31*/ 714,
    4661       /*0x00e5*/ 30,
    4662       -1,
    4663       /*0x1f15*/ 613,
    4664       -1,
    4665       /*0x2176*/ 676,
    4666       /*0x03bf*/ 257,
    4667       /*0x0283*/ 224,
    4668       /*0x1fb1*/ 663,
    4669       /*0x0066*/ 5,
    4670       -1,
    4671       /*0x01a5*/ 129,
    4672       /*0x00e3*/ 28,
    4673       /*0x1e93*/ 550,
    4674       /*0x1e13*/ 486,
    4675       /*0x0493*/ 358,
    4676       /*0x0113*/ 65,
    4677       /*0x2c93*/ 777,
    4678       /*0x0213*/ 174,
    4679       /*0x0513*/ 422,
    4680       /*0xa727*/ 900,
    4681       -1,
    4682       /*0xa695*/ 894,
    4683       /*0x1f13*/ 611,
    4684       /*0x2d0c*/ 833,
    4685       /*0x006f*/ 13,
    4686       -1,
    4687       /*0xa793*/ 945,
    4688       -1,
    4689       /*0x1f12*/ 610,
    4690       /*0x1ef9*/ 596,
    4691       /*0x1e79*/ 537,
    4692       /*0x04f9*/ 409,
    4693       /*0x03b7*/ 249,
    4694       /*0x217d*/ 683,
    4695       -1,
    4696       /*0x0579*/ 461,
    4697       /*0x01a3*/ 128,
    4698       /*0x0479*/ 349,
    4699       /*0x006d*/ 11,
    4700       /*0x1f79*/ 657,
    4701       /*0x00fe*/ 54,
    4702       /*0xa693*/ 893,
    4703       /*0x1ef5*/ 594,
    4704       /*0x1e75*/ 535,
    4705       /*0x04f5*/ 407,
    4706       /*0x0175*/ 112,
    4707       -1,
    4708       /*0x0275*/ 221,
    4709       /*0x0575*/ 457,
    4710       /*0x1d79*/ 475,
    4711       /*0x0475*/ 347,
    4712       -1,
    4713       /*0x1f75*/ 653,
    4714       -1, -1,
    4715       /*0x01ef*/ 158,
    4716       -1,
    4717       /*0x03b5*/ 247,
    4718       /*0x1ef1*/ 592,
    4719       /*0x1e71*/ 533,
    4720       /*0x04f1*/ 405,
    4721       /*0x0171*/ 110,
    4722       -1,
    4723       /*0x0271*/ 219,
    4724       /*0x0571*/ 453,
    4725       -1,
    4726       /*0x0471*/ 345,
    4727       -1,
    4728       /*0x1f71*/ 649,
    4729       /*0x01ed*/ 157,
    4730       -1, -1,
    4731       /*0x0076*/ 20,
    4732       -1,
    4733       /*0x03b1*/ 243,
    4734       -1, -1, -1,
    4735       /*0x1e87*/ 544,
    4736       /*0x1e07*/ 480,
    4737       /*0x00e9*/ 34,
    4738       /*0x0107*/ 59,
    4739       /*0x2c87*/ 771,
    4740       /*0x0207*/ 168,
    4741       /*0x0507*/ 416,
    4742       /*0x045a*/ 331,
    4743       /*0x0185*/ 119,
    4744       -1,
    4745       /*0x1f07*/ 607,
    4746       /*0x00e7*/ 32,
    4747       -1, -1,
    4748       /*0xa787*/ 942,
    4749       /*0x1ebd*/ 566,
    4750       /*0x1e3d*/ 507,
    4751       /*0x04bd*/ 379,
    4752       /*0x1043f*/ 1005,
    4753       /*0x2cbd*/ 798,
    4754       /*0xff50*/ 971,
    4755       -1, -1,
    4756       /*0x043d*/ 302,
    4757       /*0x0183*/ 118,
    4758       -1,
    4759       /*0x1eb9*/ 564,
    4760       /*0x1e39*/ 505,
    4761       /*0x04b9*/ 377,
    4762       /*0xa687*/ 887,
    4763       /*0x2cb9*/ 796,
    4764       /*0x04ce*/ 387,
    4765       -1, -1,
    4766       /*0x0439*/ 298,
    4767       -1, -1,
    4768       /*0x044e*/ 319,
    4769       /*0x00ee*/ 39,
    4770       /*0x2c5a*/ 755,
    4771       /*0x24da*/ 697,
    4772       /*0x01bf*/ 137,
    4773       -1, -1, -1,
    4774       /*0x10437*/ 997,
    4775       /*0x1eaf*/ 559,
    4776       /*0x1e2f*/ 500,
    4777       /*0x04af*/ 372,
    4778       /*0x012f*/ 79,
    4779       /*0x2caf*/ 791,
    4780       /*0x022f*/ 187,
    4781       /*0x052f*/ 436,
     6438      /*0x118de*/ 1230,
     6439      -1, -1,
     6440      /*0x1f34*/ 714,
     6441      -1, -1,
     6442      /*0x03ba*/ 254,
     6443      -1,
     6444      /*0x0578*/ 462,
     6445      -1,
     6446      /*0x2c5e*/ 847,
     6447      /*0x01d2*/ 143,
     6448      -1, -1, -1, -1, -1, -1,
     6449      -1, -1, -1, -1, -1, -1,
     6450      -1, -1, -1, -1,
     6451      /*0x2178*/ 766,
     6452      /*0x01b0*/ 132,
     6453      -1, -1, -1, -1, -1, -1,
     6454      -1, -1,
     6455      /*0x1e936*/ 1252,
     6456      -1, -1, -1,
     6457      /*0x0574*/ 458,
     6458      -1, -1, -1, -1, -1, -1,
     6459      -1, -1, -1, -1, -1, -1,
     6460      -1,
     6461      /*0x2c3e*/ 815,
     6462      -1, -1, -1, -1, -1,
     6463      /*0x2174*/ 762,
     6464      -1, -1, -1, -1, -1,
     6465      /*0x2c3a*/ 811,
     6466      -1,
     6467      /*0x00f2*/ 43,
     6468      /*0x0562*/ 440,
     6469      -1, -1, -1, -1,
     6470      /*0x01b4*/ 133,
     6471      -1, -1, -1, -1, -1, -1,
     6472      -1, -1, -1, -1,
     6473      /*0x050d*/ 421,
     6474      -1, -1, -1, -1, -1, -1,
     6475      -1, -1, -1, -1,
     6476      /*0x1e930*/ 1246,
     6477      -1, -1, -1, -1, -1, -1,
     6478      -1,
     6479      /*0x2d0d*/ 922,
     6480      -1, -1, -1, -1, -1, -1,
     6481      -1, -1, -1, -1, -1,
     6482      /*0x00fb*/ 51,
     6483      -1,
     6484      /*0x0509*/ 419,
     6485      -1, -1, -1, -1, -1, -1,
     6486      -1, -1,
     6487      /*0x00f9*/ 49,
     6488      -1, -1, -1, -1, -1, -1,
     6489      /*0x056e*/ 452,
     6490      -1, -1,
     6491      /*0x2d09*/ 918,
     6492      -1,
     6493      /*0x00fd*/ 53,
     6494      -1, -1, -1,
     6495      /*0x1e934*/ 1250,
     6496      -1, -1, -1, -1, -1, -1,
     6497      -1, -1,
     6498      /*0x1fe0*/ 754,
     6499      -1, -1, -1, -1, -1, -1,
     6500      -1, -1, -1, -1, -1, -1,
     6501      -1, -1, -1, -1, -1, -1,
     6502      -1, -1, -1, -1, -1, -1,
     6503      -1, -1, -1, -1,
     6504      /*0x051f*/ 430,
     6505      -1, -1, -1, -1, -1, -1,
     6506      -1, -1, -1, -1,
     6507      /*0x00ff*/ 55,
     6508      -1, -1, -1,
     6509      /*0xa68d*/ 978,
     6510      -1, -1, -1,
     6511      /*0x2d1f*/ 940,
     6512      -1, -1, -1, -1, -1, -1,
     6513      -1, -1, -1, -1, -1, -1,
     6514      -1, -1, -1, -1, -1, -1,
     6515      -1, -1, -1, -1, -1, -1,
     6516      -1, -1, -1, -1,
     6517      /*0xa689*/ 976,
     6518      -1,
     6519      /*0x00e6*/ 31,
     6520      /*0xa79f*/ 1038,
     6521      -1, -1, -1, -1, -1, -1,
     6522      -1, -1, -1, -1, -1, -1,
     6523      -1,
     6524      /*0x00fa*/ 50,
     6525      -1, -1, -1, -1, -1, -1,
     6526      -1, -1,
     6527      /*0x1fb0*/ 750,
     6528      -1, -1, -1, -1, -1, -1,
     6529      -1, -1, -1, -1, -1, -1,
     6530      -1, -1, -1, -1, -1, -1,
     6531      -1, -1, -1,
     6532      /*0x00ec*/ 37,
     6533      -1,
     6534      /*0x1e93e*/ 1260,
     6535      -1, -1, -1, -1, -1, -1,
     6536      -1, -1, -1, -1, -1,
     6537      /*0x1e93a*/ 1256,
     6538      -1, -1, -1, -1, -1, -1,
     6539      -1, -1, -1, -1, -1, -1,
     6540      -1, -1, -1, -1, -1,
     6541      /*0x00e8*/ 33,
     6542      -1, -1, -1, -1, -1, -1,
     6543      -1, -1, -1, -1,
     6544      /*0x00f0*/ 41,
     6545      -1, -1, -1, -1, -1, -1,
     6546      -1, -1, -1, -1, -1, -1,
     6547      -1, -1, -1, -1, -1,
     6548      /*0x00f6*/ 47,
     6549      -1, -1, -1, -1, -1, -1,
     6550      -1, -1, -1, -1, -1, -1,
     6551      -1,
     6552      /*0x00e0*/ 25,
     6553      -1, -1, -1, -1, -1, -1,
     6554      -1, -1, -1, -1, -1, -1,
     6555      -1, -1, -1, -1, -1, -1,
     6556      -1, -1, -1, -1, -1,
     6557      /*0x00ea*/ 35,
     6558      -1, -1, -1, -1, -1, -1,
     6559      -1, -1, -1, -1, -1, -1,
     6560      /*0x00e4*/ 29,
     6561      -1, -1, -1, -1, -1, -1,
     6562      -1, -1, -1, -1, -1, -1,
     6563      /*0x00f8*/ 48,
     6564      -1, -1, -1, -1, -1, -1,
     6565      -1, -1, -1, -1, -1, -1,
     6566      -1, -1, -1, -1, -1, -1,
     6567      -1, -1, -1, -1, -1, -1,
     6568      -1, -1, -1, -1, -1, -1,
     6569      -1, -1, -1,
    47826570      /*0x00f4*/ 45,
    4783       /*0x01fd*/ 163,
    4784       /*0x2c3d*/ 726,
    4785       -1,
    4786       /*0x1ea9*/ 556,
    4787       /*0x1e29*/ 497,
    4788       /*0x04a9*/ 369,
    4789       /*0x0129*/ 76,
    4790       /*0x2ca9*/ 788,
    4791       /*0x0229*/ 184,
    4792       /*0x0529*/ 433,
    4793       /*0xa73d*/ 910,
    4794       -1,
    4795       /*0x2c39*/ 722,
    4796       /*0x0272*/ 220,
    4797       /*0x0572*/ 454,
    4798       /*0x2c4e*/ 743,
    4799       /*0x10435*/ 995,
    4800       /*0xa7a9*/ 955,
    4801       /*0x1f72*/ 650,
    4802       /*0x0292*/ 231,
    4803       /*0x10442*/ 1008,
    4804       /*0xa739*/ 908,
    4805       /*0x1ea1*/ 552,
    4806       /*0x1e21*/ 493,
    4807       /*0x04a1*/ 365,
    4808       /*0x0121*/ 72,
    4809       /*0x2ca1*/ 784,
    4810       /*0x2179*/ 679,
    4811       /*0x0521*/ 429,
    4812       /*0x1efb*/ 597,
    4813       /*0x1e7b*/ 538,
    4814       /*0x04fb*/ 410,
    4815       /*0x1f21*/ 615,
    4816       /*0x10431*/ 991,
    4817       /*0x0562*/ 438,
    4818       /*0x057b*/ 463,
    4819       /*0xa7a1*/ 951,
    4820       /*0x047b*/ 350,
    4821       /*0x1f62*/ 642,
    4822       /*0x1f7b*/ 659,
    4823       /*0x2175*/ 675,
    4824       /*0xa72f*/ 904,
    4825       /*0x1e19*/ 489,
    4826       /*0x0499*/ 361,
    4827       /*0x0119*/ 68,
    4828       /*0x2c99*/ 780,
    4829       /*0x0219*/ 177,
    4830       /*0x0519*/ 425,
    4831       /*0x04c6*/ 383,
    4832       /*0x0146*/ 89,
    4833       /*0x00f0*/ 41,
    4834       /*0x118c2*/ 1024,
    4835       /*0xa729*/ 901,
    4836       -1,
    4837       /*0x0446*/ 311,
    4838       /*0xa799*/ 947,
    4839       /*0x2171*/ 671,
    4840       /*0x1ef7*/ 595,
    4841       /*0x1e77*/ 536,
    4842       /*0x04f7*/ 408,
    4843       /*0x0177*/ 113,
    4844       /*0x0268*/ 214,
    4845       /*0x0568*/ 444,
    4846       /*0x0577*/ 459,
    4847       -1,
    4848       /*0x0477*/ 348,
    4849       -1,
    4850       /*0x1f77*/ 655,
    4851       -1,
    4852       /*0x24e2*/ 705,
    4853       /*0xa699*/ 896,
    4854       -1,
    4855       /*0x1eff*/ 599,
    4856       /*0x1e7f*/ 540,
    4857       /*0x04ff*/ 412,
    4858       /*0x04cc*/ 386,
    4859       /*0x03bd*/ 255,
    4860       -1,
    4861       /*0x057f*/ 467,
    4862       /*0x0287*/ 225,
    4863       /*0x047f*/ 352,
    4864       /*0x044c*/ 317,
    4865       /*0x04c8*/ 384,
    4866       /*0x0148*/ 90,
    4867       -1, -1,
    4868       /*0x2c46*/ 735,
    4869       /*0x03b9*/ 251,
    4870       /*0x0448*/ 313,
    4871       /*0x0195*/ 123,
    4872       /*0x03ce*/ 271,
    4873       -1,
    4874       /*0x04c4*/ 382,
    4875       /*0x0144*/ 88,
    4876       /*0x2d2d*/ 860,
    4877       /*0x0079*/ 23,
    4878       /*0x2c68*/ 763,
    4879       /*0x24e8*/ 711,
    4880       /*0x0444*/ 309,
    4881       -1,
    4882       /*0x1f44*/ 634,
    4883       /*0x00f3*/ 44,
    4884       /*0x1ebb*/ 565,
    4885       /*0x1e3b*/ 506,
    4886       /*0x04bb*/ 378,
    4887       /*0x214e*/ 669,
    4888       /*0x2cbb*/ 797,
    4889       /*0x03af*/ 242,
    4890       /*0x0075*/ 19,
    4891       -1,
    4892       /*0x043b*/ 300,
    4893       -1, -1,
    4894       /*0x2c4c*/ 741,
    4895       -1,
    4896       /*0x0192*/ 122,
    4897       -1,
    4898       /*0x00eb*/ 36,
    4899       -1,
    4900       /*0x2d1c*/ 849,
    4901       /*0x2c48*/ 737,
    4902       /*0xa77f*/ 938,
    4903       -1,
    4904       /*0x03f2*/ 285,
    4905       /*0x0071*/ 15,
    4906       /*0x037d*/ 238,
    4907       /*0x01f9*/ 161,
    4908       -1,
    4909       /*0x00e4*/ 29,
    4910       -1,
    4911       /*0x2c44*/ 733,
    4912       /*0x1eab*/ 557,
    4913       /*0x1e2b*/ 498,
    4914       /*0x04ab*/ 370,
    4915       /*0x012b*/ 77,
    4916       /*0x2cab*/ 789,
    4917       /*0x022b*/ 185,
    4918       /*0x052b*/ 434,
    4919       /*0x2172*/ 672,
    4920       /*0x01f5*/ 160,
    4921       /*0x0256*/ 204,
    4922       -1,
    4923       /*0x2c3b*/ 724,
    4924       /*0x0456*/ 327,
    4925       /*0x03fb*/ 288,
    4926       /*0x1e17*/ 488,
    4927       /*0x0497*/ 360,
    4928       /*0x0117*/ 67,
    4929       /*0x2c97*/ 779,
    4930       /*0x0217*/ 176,
    4931       /*0x0517*/ 424,
    4932       /*0xa73b*/ 909,
    4933       /*0x1e1f*/ 492,
    4934       /*0x049f*/ 364,
    4935       /*0x011f*/ 71,
    4936       /*0x2c9f*/ 783,
    4937       /*0x021f*/ 180,
    4938       /*0x051f*/ 428,
    4939       /*0xa797*/ 946,
    4940       /*0x217b*/ 681,
    4941       /*0xff42*/ 957,
    4942       /*0x03c6*/ 263,
    4943       -1, -1,
    4944       /*0x0436*/ 295,
    4945       /*0xa79f*/ 950,
    4946       /*0x1f36*/ 628,
    4947       /*0x1043d*/ 1003,
    4948       -1, -1, -1,
    4949       /*0x2d25*/ 858,
    4950       -1,
    4951       /*0xa697*/ 895,
    4952       /*0x01da*/ 147,
    4953       /*0x2c56*/ 751,
    4954       /*0x24d6*/ 693,
    4955       -1,
    4956       /*0x10439*/ 999,
    4957       -1,
    4958       /*0xa72b*/ 902,
    4959       /*0x1044e*/ 1020,
    4960       /*0x118da*/ 1048,
     6571      -1, -1, -1, -1, -1, -1,
     6572      -1, -1, -1, -1, -1, -1,
     6573      -1, -1, -1, -1, -1, -1,
     6574      -1, -1, -1, -1, -1, -1,
    49616575      -1, -1, -1, -1,
    4962       /*0x2177*/ 677,
    4963       /*0x03cc*/ 269,
    4964       -1,
    4965       /*0x01bd*/ 136,
     6576      /*0x00e2*/ 27,
     6577      -1, -1, -1, -1, -1, -1,
     6578      -1, -1, -1, -1, -1, -1,
     6579      -1, -1, -1, -1, -1, -1,
     6580      -1, -1, -1, -1, -1, -1,
     6581      -1, -1, -1, -1, -1, -1,
     6582      -1, -1, -1, -1, -1, -1,
     6583      -1, -1, -1, -1, -1, -1,
     6584      -1, -1, -1, -1, -1, -1,
     6585      -1, -1, -1, -1, -1, -1,
     6586      -1, -1, -1, -1, -1, -1,
    49666587      -1, -1, -1, -1,
    4967       /*0x03c8*/ 265,
    4968       /*0x2c36*/ 719,
    4969       /*0x2d23*/ 856,
    4970       /*0x1042f*/ 989,
    4971       -1,
    4972       /*0x0254*/ 203,
    4973       /*0x01b9*/ 135,
    4974       /*0x217f*/ 685,
    4975       /*0x0454*/ 325,
    4976       /*0x01ce*/ 141,
    4977       /*0x03c4*/ 261,
    4978       /*0x0072*/ 16,
    4979       -1, -1,
    4980       /*0x10429*/ 983,
    4981       /*0x1e89*/ 545,
    4982       /*0x1e09*/ 481,
    4983       /*0x118ce*/ 1036,
    4984       /*0x0109*/ 60,
    4985       /*0x2c89*/ 772,
    4986       /*0x0209*/ 169,
    4987       /*0x0509*/ 417,
    4988       /*0x03bb*/ 253,
    4989       -1,
    4990       /*0x1e8d*/ 547,
    4991       /*0x1e0d*/ 483,
    4992       /*0x048d*/ 355,
    4993       /*0x010d*/ 62,
    4994       /*0x2c8d*/ 774,
    4995       /*0x020d*/ 171,
    4996       /*0x050d*/ 419,
    4997       /*0x0062*/ 1,
    4998       /*0x1e1d*/ 491,
    4999       /*0x049d*/ 363,
    5000       /*0x011d*/ 70,
    5001       /*0x2c9d*/ 782,
    5002       /*0x021d*/ 179,
    5003       /*0x051d*/ 427,
    5004       -1,
    5005       /*0x0458*/ 329,
    5006       /*0x2c54*/ 749,
    5007       /*0x24d4*/ 691,
    5008       /*0x00ea*/ 35,
    5009       /*0x0252*/ 201,
    5010       /*0xa689*/ 888,
    5011       /*0xa79d*/ 949,
    5012       /*0x0452*/ 323,
    5013       /*0x025c*/ 208,
    5014       -1,
    5015       /*0x04ca*/ 385,
    5016       /*0x045c*/ 333,
    5017       -1,
    5018       /*0x2d05*/ 826,
    5019       /*0xa68d*/ 890,
    5020       /*0x00fa*/ 50,
    5021       /*0x044a*/ 315,
    5022       /*0x01a1*/ 127,
    5023       /*0x10446*/ 1012,
    5024       /*0x017c*/ 115,
    5025       /*0x0068*/ 7,
    5026       /*0x0077*/ 21,
    5027       /*0x057c*/ 464,
    5028       -1,
    5029       /*0x01fb*/ 162,
    5030       -1,
    5031       /*0x1f7c*/ 660,
    5032       -1,
    5033       /*0x0434*/ 293,
    5034       /*0x2d03*/ 824,
    5035       /*0x1f34*/ 626,
    5036       /*0x045e*/ 335,
    5037       /*0x2c58*/ 753,
    5038       /*0x24d8*/ 695,
    5039       -1, -1,
    5040       /*0x0199*/ 124,
    5041       /*0x03b6*/ 248,
    5042       -1,
    5043       /*0x2c52*/ 747,
    5044       /*0x24d2*/ 689,
    5045       /*0x01c6*/ 138,
    5046       /*0x0260*/ 209,
    5047       /*0x2c5c*/ 757,
    5048       /*0x24dc*/ 699,
    5049       /*0x1044c*/ 1018,
    5050       /*0x0371*/ 233,
    5051       /*0x1f60*/ 640,
    5052       /*0x2c4a*/ 739,
    5053       /*0x118c6*/ 1028,
    5054       -1, -1,
    5055       /*0x10448*/ 1014,
    5056       -1, -1, -1,
    5057       /*0x0430*/ 289,
    5058       /*0xff5a*/ 981,
    5059       /*0x1f30*/ 622,
    5060       /*0x0432*/ 291,
    5061       /*0x2c34*/ 717,
    5062       /*0x1f32*/ 624,
    5063       /*0x10444*/ 1010,
    5064       /*0x2c5e*/ 759,
    5065       /*0x24de*/ 701,
    5066       /*0xa77c*/ 937,
    5067       -1,
    5068       /*0x01ff*/ 164,
    5069       /*0x01cc*/ 140,
    5070       -1, -1, -1, -1, -1,
    5071       /*0x1043b*/ 1001,
    5072       -1,
    5073       /*0x118cc*/ 1034,
    5074       -1,
    5075       /*0x24e0*/ 703,
    5076       -1,
    5077       /*0x00ec*/ 37,
    5078       -1, -1,
    5079       /*0x118c8*/ 1030,
    5080       -1,
    5081       /*0x1fe0*/ 666,
    5082       -1,
    5083       /*0xff4e*/ 969,
    5084       /*0x2c30*/ 713,
    5085       -1, -1,
    5086       /*0x2c32*/ 715,
    5087       -1,
    5088       /*0x118c4*/ 1026,
    5089       -1, -1,
    5090       /*0x1fb0*/ 662,
    5091       -1, -1, -1, -1, -1, -1,
    5092       /*0x1042b*/ 985,
    5093       -1, -1, -1, -1, -1,
    5094       /*0x0289*/ 227,
    5095       -1, -1, -1, -1, -1, -1,
    5096       -1, -1, -1, -1, -1, -1,
    5097       -1,
    5098       /*0x03ca*/ 267,
    5099       -1, -1,
    5100       /*0x2d27*/ 859,
    5101       -1,
    5102       /*0x10436*/ 996,
    5103       -1,
    5104       /*0x01d6*/ 145,
    5105       -1, -1, -1, -1,
    5106       /*0x03b4*/ 246,
    5107       -1, -1,
    5108       /*0x118d6*/ 1044,
    5109       -1, -1,
    5110       /*0x00f8*/ 48,
    5111       -1, -1, -1, -1,
    5112       /*0x217c*/ 682,
    5113       -1,
    5114       /*0x2d15*/ 842,
    5115       /*0x037b*/ 236,
    5116       -1,
    5117       /*0x01b6*/ 134,
    5118       -1, -1, -1, -1, -1, -1,
    5119       /*0xff46*/ 961,
    5120       /*0x00e6*/ 31,
    5121       -1, -1, -1, -1, -1, -1,
    5122       /*0x03b2*/ 244,
    5123       -1,
    5124       /*0x2d13*/ 840,
    5125       -1, -1, -1, -1, -1,
    5126       /*0x2d12*/ 839,
    5127       /*0x00ef*/ 40,
    5128       -1,
    5129       /*0x0377*/ 235,
    5130       -1, -1, -1, -1, -1, -1,
    5131       -1,
    5132       /*0xff4c*/ 967,
    5133       -1, -1, -1,
    5134       /*0x00ed*/ 38,
    5135       /*0x01d4*/ 144,
    5136       -1,
    5137       /*0xff48*/ 963,
    5138       -1, -1, -1, -1, -1,
    5139       /*0x118d4*/ 1042,
    5140       -1, -1, -1,
    5141       /*0xff44*/ 959,
    5142       -1, -1, -1, -1, -1, -1,
    5143       -1, -1, -1, -1, -1,
    5144       /*0x1044a*/ 1016,
    5145       -1, -1, -1, -1, -1, -1,
    5146       /*0x01d8*/ 146,
    5147       -1,
    5148       /*0x00f6*/ 47,
    5149       -1, -1,
    5150       /*0x10434*/ 994,
    5151       -1,
    5152       /*0x01d2*/ 143,
    5153       /*0x118d8*/ 1046,
    5154       -1, -1,
    5155       /*0x01dc*/ 148,
    5156       -1,
    5157       /*0x2d07*/ 828,
    5158       -1,
    5159       /*0x118d2*/ 1040,
    5160       -1, -1, -1,
    5161       /*0x118dc*/ 1050,
    5162       -1, -1, -1, -1,
    5163       /*0x118ca*/ 1032,
    5164       -1,
    5165       /*0xff56*/ 977,
    5166       -1,
    5167       /*0x01b4*/ 133,
    5168       -1, -1,
    5169       /*0x00fd*/ 53,
    5170       -1,
    5171       /*0x10430*/ 990,
    5172       -1, -1,
    5173       /*0x10432*/ 992,
    5174       -1, -1,
    5175       /*0x118de*/ 1052,
    5176       -1, -1, -1, -1, -1, -1,
    5177       -1, -1, -1, -1, -1, -1,
    5178       -1, -1, -1, -1,
    5179       /*0x01b0*/ 132,
    5180       -1, -1, -1, -1, -1, -1,
    5181       -1, -1, -1, -1, -1, -1,
    5182       -1, -1, -1, -1, -1, -1,
    5183       -1, -1, -1, -1, -1, -1,
    5184       -1, -1, -1, -1, -1,
    5185       /*0xff54*/ 975,
    5186       -1, -1,
    5187       /*0x2d21*/ 854,
    5188       -1, -1, -1, -1, -1, -1,
    5189       -1, -1, -1, -1, -1, -1,
    5190       -1, -1, -1, -1, -1, -1,
    5191       /*0x2d19*/ 846,
    5192       -1, -1, -1, -1, -1, -1,
    5193       -1, -1,
    5194       /*0xff58*/ 979,
    5195       -1, -1, -1, -1, -1, -1,
    5196       /*0xff52*/ 973,
    5197       -1, -1, -1, -1, -1, -1,
    5198       -1, -1,
    5199       /*0xff4a*/ 965,
    5200       -1, -1, -1, -1, -1, -1,
    5201       -1, -1, -1, -1, -1, -1,
    5202       -1, -1, -1,
    5203       /*0x037c*/ 237,
    5204       -1, -1, -1, -1, -1, -1,
    5205       -1,
    5206       /*0x00f9*/ 49,
    5207       -1, -1, -1, -1, -1, -1,
    5208       -1, -1, -1, -1, -1, -1,
    5209       /*0x00f5*/ 46,
    5210       -1, -1, -1, -1, -1, -1,
    5211       -1, -1, -1, -1, -1, -1,
    5212       -1, -1, -1,
    5213       /*0x00f1*/ 42,
    5214       -1, -1, -1, -1, -1, -1,
    5215       -1, -1, -1, -1, -1, -1,
    5216       -1, -1, -1, -1, -1, -1,
    5217       -1, -1, -1, -1, -1, -1,
    5218       /*0x2d17*/ 844,
    5219       -1, -1, -1, -1, -1, -1,
    5220       /*0x2d1f*/ 852,
    5221       -1, -1, -1, -1, -1, -1,
    5222       -1, -1, -1, -1, -1, -1,
    5223       -1, -1, -1, -1, -1, -1,
    5224       -1, -1, -1, -1, -1, -1,
    5225       -1, -1, -1, -1, -1, -1,
    5226       -1, -1, -1, -1, -1, -1,
    5227       -1, -1, -1, -1, -1, -1,
    5228       -1, -1, -1, -1, -1, -1,
    5229       -1,
    5230       /*0x00f2*/ 43,
    5231       -1, -1, -1, -1, -1, -1,
    5232       -1, -1,
    5233       /*0x2d09*/ 830,
    5234       -1, -1, -1, -1, -1, -1,
    5235       -1, -1,
    5236       /*0x2d0d*/ 834,
    5237       -1,
    5238       /*0x00e2*/ 27,
    5239       /*0x00fb*/ 51,
    5240       -1, -1, -1,
    5241       /*0x2d1d*/ 850,
    5242       -1, -1, -1, -1, -1, -1,
    5243       -1, -1, -1, -1, -1, -1,
    5244       -1, -1, -1, -1, -1, -1,
    5245       -1, -1, -1, -1,
    5246       /*0x00e8*/ 33,
    5247       -1, -1, -1, -1, -1, -1,
    5248       -1, -1, -1, -1, -1, -1,
    5249       -1, -1, -1,
    5250       /*0x00ff*/ 55,
    5251       -1, -1, -1, -1, -1, -1,
    5252       -1, -1, -1, -1, -1, -1,
    5253       -1, -1, -1, -1, -1, -1,
    5254       -1, -1, -1, -1, -1, -1,
    5255       -1, -1, -1, -1, -1, -1,
    5256       -1, -1, -1, -1, -1, -1,
    5257       -1, -1, -1, -1, -1, -1,
    5258       -1, -1, -1, -1, -1, -1,
    5259       -1, -1, -1, -1, -1, -1,
    5260       -1, -1, -1, -1, -1, -1,
    5261       -1, -1, -1, -1, -1, -1,
    5262       -1, -1, -1, -1, -1, -1,
    5263       -1, -1, -1, -1, -1, -1,
    5264       -1, -1, -1, -1, -1, -1,
    5265       -1, -1, -1, -1, -1, -1,
    5266       -1, -1, -1, -1, -1, -1,
    5267       -1, -1, -1, -1, -1, -1,
    5268       -1, -1, -1, -1, -1, -1,
    5269       -1, -1, -1, -1, -1, -1,
    5270       -1, -1, -1, -1, -1, -1,
    5271       -1, -1, -1, -1, -1, -1,
    5272       -1, -1, -1, -1, -1, -1,
    5273       -1, -1, -1, -1, -1, -1,
    5274       -1, -1, -1, -1, -1, -1,
    5275       -1, -1, -1, -1, -1, -1,
    5276       -1, -1, -1, -1, -1, -1,
    5277       -1, -1, -1, -1, -1, -1,
    5278       -1, -1, -1, -1, -1, -1,
    5279       -1, -1, -1, -1, -1, -1,
    5280       -1, -1, -1,
    5281       /*0x00fc*/ 52,
    5282       -1, -1, -1, -1, -1, -1,
    5283       -1, -1, -1, -1, -1, -1,
    5284       -1, -1, -1, -1, -1, -1,
    5285       -1, -1,
    5286       /*0x00e0*/ 25
     6588      /*0x00ee*/ 39
    52876589    };
    52886590
    52896591  if (code <= MAX_CODE_VALUE && code >= MIN_CODE_VALUE)
    52906592    {
    5291       register int key = onigenc_unicode_CaseUnfold_11_hash(code);
     6593      register unsigned int key = onigenc_unicode_CaseUnfold_11_hash(code);
    52926594
    5293       if (key <= MAX_HASH_VALUE && key >= 0)
     6595      if (key <= MAX_HASH_VALUE)
    52946596        {
    52956597          register short s = wordlist[key];
     
    53666668};
    53676669
    5368 /* C code produced by gperf version 3.0.3 */
     6670/* ANSI-C code produced by gperf version 3.1 */
    53696671/* Command-line: gperf -7 -k1,2,3,4,5,6 -F,-1 -c -j1 -i1 -t -T -E -C -H onigenc_unicode_CaseUnfold_12_hash -N onigenc_unicode_CaseUnfold_12_lookup -n  */
    53706672
     
    54016703}
    54026704
    5403 #ifdef __GNUC__
    5404 __inline
    5405 #ifdef __GNUC_STDC_INLINE__
    5406 __attribute__ ((__gnu_inline__))
    5407 #endif
    5408 #endif
    54096705static const CodePointList2 *
    54106706onigenc_unicode_CaseUnfold_12_lookup(const OnigCodePoint *codes)
     
    54916787      codes[1] <= MAX_CODE_VALUE && codes[1] >= MIN_CODE_VALUE)
    54926788    {
    5493       register int key = onigenc_unicode_CaseUnfold_12_hash(codes);
     6789      register unsigned int key = onigenc_unicode_CaseUnfold_12_hash(codes);
    54946790
    5495       if (key <= MAX_HASH_VALUE && key >= 0)
     6791      if (key <= MAX_HASH_VALUE)
    54966792        {
    54976793          register short s = wordlist[key];
     
    55226818};
    55236819
    5524 /* C code produced by gperf version 3.0.3 */
     6820/* ANSI-C code produced by gperf version 3.1 */
    55256821/* Command-line: gperf -7 -k1,2,3,4,5,6,7,8,9 -F,-1 -c -j1 -i1 -t -T -E -C -H onigenc_unicode_CaseUnfold_13_hash -N onigenc_unicode_CaseUnfold_13_lookup -n  */
    55266822
     
    55576853}
    55586854
    5559 #ifdef __GNUC__
    5560 __inline
    5561 #ifdef __GNUC_STDC_INLINE__
    5562 __attribute__ ((__gnu_inline__))
    5563 #endif
    5564 #endif
    55656855static const CodePointList2 *
    55666856onigenc_unicode_CaseUnfold_13_lookup(const OnigCodePoint *codes)
     
    56056895      codes[2] <= MAX_CODE_VALUE && codes[2] >= MIN_CODE_VALUE)
    56066896    {
    5607       register int key = onigenc_unicode_CaseUnfold_13_hash(codes);
     6897      register unsigned int key = onigenc_unicode_CaseUnfold_13_hash(codes);
    56086898
    5609       if (key <= MAX_HASH_VALUE && key >= 0)
     6899      if (key <= MAX_HASH_VALUE)
    56106900        {
    56116901          register short s = wordlist[key];
     
    56186908}
    56196909
     6910static const OnigCodePoint CaseMappingSpecials[] = {
     6911    L(1)|0x039C,
     6912    L(2)|0x0053, 0x0073, L(2)|0x0053, 0x0053,
     6913    L(2)|0x02BC, 0x004E,
     6914    L(1)|0x0053,
     6915    L(1)|0x01C5,
     6916    L(2)|0x0064, 0x017D, L(1)|0x01C4,
     6917    L(1)|0x01C8,
     6918    L(2)|0x006C, 0x004A, L(1)|0x01C7,
     6919    L(1)|0x01CB,
     6920    L(2)|0x006E, 0x004A, L(1)|0x01CA,
     6921    L(2)|0x004A, 0x030C,
     6922    L(1)|0x01F2,
     6923    L(2)|0x0064, 0x005A, L(1)|0x01F1,
     6924    L(1)|0x0399,
     6925    L(3)|0x0399, 0x0308, 0x0301,
     6926    L(3)|0x03A5, 0x0308, 0x0301,
     6927    L(1)|0x03A3,
     6928    L(1)|0x0392,
     6929    L(1)|0x0398,
     6930    L(1)|0x03A6,
     6931    L(1)|0x03A0,
     6932    L(1)|0x039A,
     6933    L(1)|0x03A1,
     6934    L(1)|0x0395,
     6935    L(2)|0x0535, 0x0582, L(2)|0x0535, 0x0552,
     6936    L(1)|0x0412,
     6937    L(1)|0x0414,
     6938    L(1)|0x041E,
     6939    L(1)|0x0421,
     6940    L(1)|0x0422,
     6941    L(1)|0x0422,
     6942    L(1)|0x042A,
     6943    L(1)|0x0462,
     6944    L(1)|0xA64A,
     6945    L(2)|0x0048, 0x0331,
     6946    L(2)|0x0054, 0x0308,
     6947    L(2)|0x0057, 0x030A,
     6948    L(2)|0x0059, 0x030A,
     6949    L(2)|0x0041, 0x02BE,
     6950    L(1)|0x1E60,
     6951    L(1)|0x00DF,
     6952    L(2)|0x03A5, 0x0313,
     6953    L(3)|0x03A5, 0x0313, 0x0300,
     6954    L(3)|0x03A5, 0x0313, 0x0301,
     6955    L(3)|0x03A5, 0x0313, 0x0342,
     6956    L(1)|0x1F88, L(2)|0x1F08, 0x0399,
     6957    L(1)|0x1F89, L(2)|0x1F09, 0x0399,
     6958    L(1)|0x1F8A, L(2)|0x1F0A, 0x0399,
     6959    L(1)|0x1F8B, L(2)|0x1F0B, 0x0399,
     6960    L(1)|0x1F8C, L(2)|0x1F0C, 0x0399,
     6961    L(1)|0x1F8D, L(2)|0x1F0D, 0x0399,
     6962    L(1)|0x1F8E, L(2)|0x1F0E, 0x0399,
     6963    L(1)|0x1F8F, L(2)|0x1F0F, 0x0399,
     6964    L(2)|0x1F00, 0x0399, L(1)|0x1F80, L(2)|0x1F08, 0x0399,
     6965    L(2)|0x1F01, 0x0399, L(1)|0x1F81, L(2)|0x1F09, 0x0399,
     6966    L(2)|0x1F02, 0x0399, L(1)|0x1F82, L(2)|0x1F0A, 0x0399,
     6967    L(2)|0x1F03, 0x0399, L(1)|0x1F83, L(2)|0x1F0B, 0x0399,
     6968    L(2)|0x1F04, 0x0399, L(1)|0x1F84, L(2)|0x1F0C, 0x0399,
     6969    L(2)|0x1F05, 0x0399, L(1)|0x1F85, L(2)|0x1F0D, 0x0399,
     6970    L(2)|0x1F06, 0x0399, L(1)|0x1F86, L(2)|0x1F0E, 0x0399,
     6971    L(2)|0x1F07, 0x0399, L(1)|0x1F87, L(2)|0x1F0F, 0x0399,
     6972    L(1)|0x1F98, L(2)|0x1F28, 0x0399,
     6973    L(1)|0x1F99, L(2)|0x1F29, 0x0399,
     6974    L(1)|0x1F9A, L(2)|0x1F2A, 0x0399,
     6975    L(1)|0x1F9B, L(2)|0x1F2B, 0x0399,
     6976    L(1)|0x1F9C, L(2)|0x1F2C, 0x0399,
     6977    L(1)|0x1F9D, L(2)|0x1F2D, 0x0399,
     6978    L(1)|0x1F9E, L(2)|0x1F2E, 0x0399,
     6979    L(1)|0x1F9F, L(2)|0x1F2F, 0x0399,
     6980    L(2)|0x1F20, 0x0399, L(1)|0x1F90, L(2)|0x1F28, 0x0399,
     6981    L(2)|0x1F21, 0x0399, L(1)|0x1F91, L(2)|0x1F29, 0x0399,
     6982    L(2)|0x1F22, 0x0399, L(1)|0x1F92, L(2)|0x1F2A, 0x0399,
     6983    L(2)|0x1F23, 0x0399, L(1)|0x1F93, L(2)|0x1F2B, 0x0399,
     6984    L(2)|0x1F24, 0x0399, L(1)|0x1F94, L(2)|0x1F2C, 0x0399,
     6985    L(2)|0x1F25, 0x0399, L(1)|0x1F95, L(2)|0x1F2D, 0x0399,
     6986    L(2)|0x1F26, 0x0399, L(1)|0x1F96, L(2)|0x1F2E, 0x0399,
     6987    L(2)|0x1F27, 0x0399, L(1)|0x1F97, L(2)|0x1F2F, 0x0399,
     6988    L(1)|0x1FA8, L(2)|0x1F68, 0x0399,
     6989    L(1)|0x1FA9, L(2)|0x1F69, 0x0399,
     6990    L(1)|0x1FAA, L(2)|0x1F6A, 0x0399,
     6991    L(1)|0x1FAB, L(2)|0x1F6B, 0x0399,
     6992    L(1)|0x1FAC, L(2)|0x1F6C, 0x0399,
     6993    L(1)|0x1FAD, L(2)|0x1F6D, 0x0399,
     6994    L(1)|0x1FAE, L(2)|0x1F6E, 0x0399,
     6995    L(1)|0x1FAF, L(2)|0x1F6F, 0x0399,
     6996    L(2)|0x1F60, 0x0399, L(1)|0x1FA0, L(2)|0x1F68, 0x0399,
     6997    L(2)|0x1F61, 0x0399, L(1)|0x1FA1, L(2)|0x1F69, 0x0399,
     6998    L(2)|0x1F62, 0x0399, L(1)|0x1FA2, L(2)|0x1F6A, 0x0399,
     6999    L(2)|0x1F63, 0x0399, L(1)|0x1FA3, L(2)|0x1F6B, 0x0399,
     7000    L(2)|0x1F64, 0x0399, L(1)|0x1FA4, L(2)|0x1F6C, 0x0399,
     7001    L(2)|0x1F65, 0x0399, L(1)|0x1FA5, L(2)|0x1F6D, 0x0399,
     7002    L(2)|0x1F66, 0x0399, L(1)|0x1FA6, L(2)|0x1F6E, 0x0399,
     7003    L(2)|0x1F67, 0x0399, L(1)|0x1FA7, L(2)|0x1F6F, 0x0399,
     7004    L(2)|0x1FBA, 0x0345, L(2)|0x1FBA, 0x0399,
     7005    L(1)|0x1FBC, L(2)|0x0391, 0x0399,
     7006    L(2)|0x0386, 0x0345, L(2)|0x0386, 0x0399,
     7007    L(2)|0x0391, 0x0342,
     7008    L(3)|0x0391, 0x0342, 0x0345, L(3)|0x0391, 0x0342, 0x0399,
     7009    L(2)|0x03B1, 0x0399, L(1)|0x1FB3, L(2)|0x0391, 0x0399,
     7010    L(1)|0x0399,
     7011    L(2)|0x1FCA, 0x0345, L(2)|0x1FCA, 0x0399,
     7012    L(1)|0x1FCC, L(2)|0x0397, 0x0399,
     7013    L(2)|0x0389, 0x0345, L(2)|0x0389, 0x0399,
     7014    L(2)|0x0397, 0x0342,
     7015    L(3)|0x0397, 0x0342, 0x0345, L(3)|0x0397, 0x0342, 0x0399,
     7016    L(2)|0x03B7, 0x0399, L(1)|0x1FC3, L(2)|0x0397, 0x0399,
     7017    L(3)|0x0399, 0x0308, 0x0300,
     7018    L(3)|0x0399, 0x0308, 0x0301,
     7019    L(2)|0x0399, 0x0342,
     7020    L(3)|0x0399, 0x0308, 0x0342,
     7021    L(3)|0x03A5, 0x0308, 0x0300,
     7022    L(3)|0x03A5, 0x0308, 0x0301,
     7023    L(2)|0x03A1, 0x0313,
     7024    L(2)|0x03A5, 0x0342,
     7025    L(3)|0x03A5, 0x0308, 0x0342,
     7026    L(2)|0x1FFA, 0x0345, L(2)|0x1FFA, 0x0399,
     7027    L(1)|0x1FFC, L(2)|0x03A9, 0x0399,
     7028    L(2)|0x038F, 0x0345, L(2)|0x038F, 0x0399,
     7029    L(2)|0x03A9, 0x0342,
     7030    L(3)|0x03A9, 0x0342, 0x0345, L(3)|0x03A9, 0x0342, 0x0399,
     7031    L(2)|0x03C9, 0x0399, L(1)|0x1FF3, L(2)|0x03A9, 0x0399,
     7032    L(2)|0x0046, 0x0066, L(2)|0x0046, 0x0046,
     7033    L(2)|0x0046, 0x0069, L(2)|0x0046, 0x0049,
     7034    L(2)|0x0046, 0x006C, L(2)|0x0046, 0x004C,
     7035    L(3)|0x0046, 0x0066, 0x0069, L(3)|0x0046, 0x0046, 0x0049,
     7036    L(3)|0x0046, 0x0066, 0x006C, L(3)|0x0046, 0x0046, 0x004C,
     7037    L(2)|0x0053, 0x0074, L(2)|0x0053, 0x0054,
     7038    L(2)|0x0053, 0x0074, L(2)|0x0053, 0x0054,
     7039    L(2)|0x0544, 0x0576, L(2)|0x0544, 0x0546,
     7040    L(2)|0x0544, 0x0565, L(2)|0x0544, 0x0535,
     7041    L(2)|0x0544, 0x056B, L(2)|0x0544, 0x053B,
     7042    L(2)|0x054E, 0x0576, L(2)|0x054E, 0x0546,
     7043    L(2)|0x0544, 0x056D, L(2)|0x0544, 0x053D,
     7044};
  • EcnlProtoTool/trunk/onigmo-6.1.3/src/enc/unicode/name2ctype.h

    r321 r331  
    1 /* C code produced by gperf version 3.0.3 */
     1/* C code produced by gperf version 3.0.4 */
    22/* Command-line: gperf -7 -c -j1 -i1 -t -C -P -T -H uniname2ctype_hash -Q uniname2ctype_pool -N uniname2ctype_p  */
    33#ifndef USE_UNICODE_PROPERTIES
     
    3535
    3636
    37 #define long size_t
    3837
    3938/* 'NEWLINE': [[:NEWLINE:]] */
     
    4544/* 'Alpha': [[:Alpha:]] */
    4645static const OnigCodePoint CR_Alpha[] = {
    47         600,
     46        660,
    4847        0x0041, 0x005a,
    4948        0x0061, 0x007a,
     
    9796        0x081a, 0x082c,
    9897        0x0840, 0x0858,
    99         0x08a0, 0x08b2,
    100         0x08e4, 0x08e9,
     98        0x0860, 0x086a,
     99        0x08a0, 0x08b4,
     100        0x08b6, 0x08bd,
     101        0x08d4, 0x08df,
     102        0x08e3, 0x08e9,
    101103        0x08f0, 0x093b,
    102104        0x093d, 0x094c,
     
    118120        0x09df, 0x09e3,
    119121        0x09f0, 0x09f1,
     122        0x09fc, 0x09fc,
    120123        0x0a01, 0x0a03,
    121124        0x0a05, 0x0a0a,
     
    145148        0x0ad0, 0x0ad0,
    146149        0x0ae0, 0x0ae3,
     150        0x0af9, 0x0afc,
    147151        0x0b01, 0x0b03,
    148152        0x0b05, 0x0b0c,
     
    183187        0x0c4a, 0x0c4c,
    184188        0x0c55, 0x0c56,
    185         0x0c58, 0x0c59,
     189        0x0c58, 0x0c5a,
    186190        0x0c60, 0x0c63,
    187         0x0c81, 0x0c83,
     191        0x0c80, 0x0c83,
    188192        0x0c85, 0x0c8c,
    189193        0x0c8e, 0x0c90,
     
    198202        0x0ce0, 0x0ce3,
    199203        0x0cf1, 0x0cf2,
    200         0x0d01, 0x0d03,
     204        0x0d00, 0x0d03,
    201205        0x0d05, 0x0d0c,
    202206        0x0d0e, 0x0d10,
     
    206210        0x0d4a, 0x0d4c,
    207211        0x0d4e, 0x0d4e,
    208         0x0d57, 0x0d57,
    209         0x0d60, 0x0d63,
     212        0x0d54, 0x0d57,
     213        0x0d5f, 0x0d63,
    210214        0x0d7a, 0x0d7f,
    211215        0x0d82, 0x0d83,
     
    275279        0x135f, 0x135f,
    276280        0x1380, 0x138f,
    277         0x13a0, 0x13f4,
     281        0x13a0, 0x13f5,
     282        0x13f8, 0x13fd,
    278283        0x1401, 0x166c,
    279284        0x166f, 0x167f,
     
    316321        0x1c4d, 0x1c4f,
    317322        0x1c5a, 0x1c7d,
     323        0x1c80, 0x1c88,
    318324        0x1ce9, 0x1cec,
    319325        0x1cee, 0x1cf3,
     
    387393        0x30a1, 0x30fa,
    388394        0x30fc, 0x30ff,
    389         0x3105, 0x312d,
     395        0x3105, 0x312e,
    390396        0x3131, 0x318e,
    391397        0x31a0, 0x31ba,
    392398        0x31f0, 0x31ff,
    393399        0x3400, 0x4db5,
    394         0x4e00, 0x9fcc,
     400        0x4e00, 0x9fea,
    395401        0xa000, 0xa48c,
    396402        0xa4d0, 0xa4fd,
     
    400406        0xa640, 0xa66e,
    401407        0xa674, 0xa67b,
    402         0xa67f, 0xa69d,
    403         0xa69f, 0xa6ef,
     408        0xa67f, 0xa6ef,
    404409        0xa717, 0xa71f,
    405410        0xa722, 0xa788,
    406         0xa78b, 0xa78e,
    407         0xa790, 0xa7ad,
    408         0xa7b0, 0xa7b1,
     411        0xa78b, 0xa7ae,
     412        0xa7b0, 0xa7b7,
    409413        0xa7f7, 0xa801,
    410414        0xa803, 0xa805,
     
    413417        0xa840, 0xa873,
    414418        0xa880, 0xa8c3,
     419        0xa8c5, 0xa8c5,
    415420        0xa8f2, 0xa8f7,
    416421        0xa8fb, 0xa8fb,
     422        0xa8fd, 0xa8fd,
    417423        0xa90a, 0xa92a,
    418424        0xa930, 0xa952,
     
    440446        0xab28, 0xab2e,
    441447        0xab30, 0xab5a,
    442         0xab5c, 0xab5f,
    443         0xab64, 0xab65,
    444         0xabc0, 0xabea,
     448        0xab5c, 0xab65,
     449        0xab70, 0xabea,
    445450        0xac00, 0xd7a3,
    446451        0xd7b0, 0xd7c6,
     
    481486        0x102a0, 0x102d0,
    482487        0x10300, 0x1031f,
    483         0x10330, 0x1034a,
     488        0x1032d, 0x1034a,
    484489        0x10350, 0x1037a,
    485490        0x10380, 0x1039d,
     
    488493        0x103d1, 0x103d5,
    489494        0x10400, 0x1049d,
     495        0x104b0, 0x104d3,
     496        0x104d8, 0x104fb,
    490497        0x10500, 0x10527,
    491498        0x10530, 0x10563,
     
    501508        0x10860, 0x10876,
    502509        0x10880, 0x1089e,
     510        0x108e0, 0x108f2,
     511        0x108f4, 0x108f5,
    503512        0x10900, 0x10915,
    504513        0x10920, 0x10939,
     
    519528        0x10b80, 0x10b91,
    520529        0x10c00, 0x10c48,
     530        0x10c80, 0x10cb2,
     531        0x10cc0, 0x10cf2,
    521532        0x11000, 0x11045,
    522533        0x11082, 0x110b8,
     
    528539        0x111c1, 0x111c4,
    529540        0x111da, 0x111da,
     541        0x111dc, 0x111dc,
    530542        0x11200, 0x11211,
    531543        0x11213, 0x11234,
    532544        0x11237, 0x11237,
     545        0x1123e, 0x1123e,
     546        0x11280, 0x11286,
     547        0x11288, 0x11288,
     548        0x1128a, 0x1128d,
     549        0x1128f, 0x1129d,
     550        0x1129f, 0x112a8,
    533551        0x112b0, 0x112e8,
    534         0x11301, 0x11303,
     552        0x11300, 0x11303,
    535553        0x11305, 0x1130c,
    536554        0x1130f, 0x11310,
     
    542560        0x11347, 0x11348,
    543561        0x1134b, 0x1134c,
     562        0x11350, 0x11350,
    544563        0x11357, 0x11357,
    545564        0x1135d, 0x11363,
     565        0x11400, 0x11441,
     566        0x11443, 0x11445,
     567        0x11447, 0x1144a,
    546568        0x11480, 0x114c1,
    547569        0x114c4, 0x114c5,
     
    549571        0x11580, 0x115b5,
    550572        0x115b8, 0x115be,
     573        0x115d8, 0x115dd,
    551574        0x11600, 0x1163e,
    552575        0x11640, 0x11640,
    553576        0x11644, 0x11644,
    554577        0x11680, 0x116b5,
     578        0x11700, 0x11719,
     579        0x1171d, 0x1172a,
    555580        0x118a0, 0x118df,
    556581        0x118ff, 0x118ff,
     582        0x11a00, 0x11a32,
     583        0x11a35, 0x11a3e,
     584        0x11a50, 0x11a83,
     585        0x11a86, 0x11a97,
    557586        0x11ac0, 0x11af8,
    558         0x12000, 0x12398,
     587        0x11c00, 0x11c08,
     588        0x11c0a, 0x11c36,
     589        0x11c38, 0x11c3e,
     590        0x11c40, 0x11c40,
     591        0x11c72, 0x11c8f,
     592        0x11c92, 0x11ca7,
     593        0x11ca9, 0x11cb6,
     594        0x11d00, 0x11d06,
     595        0x11d08, 0x11d09,
     596        0x11d0b, 0x11d36,
     597        0x11d3a, 0x11d3a,
     598        0x11d3c, 0x11d3d,
     599        0x11d3f, 0x11d41,
     600        0x11d43, 0x11d43,
     601        0x11d46, 0x11d47,
     602        0x12000, 0x12399,
    559603        0x12400, 0x1246e,
     604        0x12480, 0x12543,
    560605        0x13000, 0x1342e,
     606        0x14400, 0x14646,
    561607        0x16800, 0x16a38,
    562608        0x16a40, 0x16a5e,
     
    569615        0x16f50, 0x16f7e,
    570616        0x16f93, 0x16f9f,
    571         0x1b000, 0x1b001,
     617        0x16fe0, 0x16fe1,
     618        0x17000, 0x187ec,
     619        0x18800, 0x18af2,
     620        0x1b000, 0x1b11e,
     621        0x1b170, 0x1b2fb,
    572622        0x1bc00, 0x1bc6a,
    573623        0x1bc70, 0x1bc7c,
     
    605655        0x1d7aa, 0x1d7c2,
    606656        0x1d7c4, 0x1d7cb,
     657        0x1e000, 0x1e006,
     658        0x1e008, 0x1e018,
     659        0x1e01b, 0x1e021,
     660        0x1e023, 0x1e024,
     661        0x1e026, 0x1e02a,
    607662        0x1e800, 0x1e8c4,
     663        0x1e900, 0x1e943,
     664        0x1e947, 0x1e947,
    608665        0x1ee00, 0x1ee03,
    609666        0x1ee05, 0x1ee1f,
     
    645702        0x2a700, 0x2b734,
    646703        0x2b740, 0x2b81d,
     704        0x2b820, 0x2cea1,
     705        0x2ceb0, 0x2ebe0,
    647706        0x2f800, 0x2fa1d,
    648707}; /* CR_Alpha */
     
    670729/* 'Digit': [[:Digit:]] */
    671730static const OnigCodePoint CR_Digit[] = {
    672         50,
     731        55,
    673732        0x0030, 0x0039,
    674733        0x0660, 0x0669,
     
    714773        0x111d0, 0x111d9,
    715774        0x112f0, 0x112f9,
     775        0x11450, 0x11459,
    716776        0x114d0, 0x114d9,
    717777        0x11650, 0x11659,
    718778        0x116c0, 0x116c9,
     779        0x11730, 0x11739,
    719780        0x118e0, 0x118e9,
     781        0x11c50, 0x11c59,
     782        0x11d50, 0x11d59,
    720783        0x16a60, 0x16a69,
    721784        0x16b50, 0x16b59,
    722785        0x1d7ce, 0x1d7ff,
     786        0x1e950, 0x1e959,
    723787}; /* CR_Digit */
    724788
    725789/* 'Graph': [[:Graph:]] */
    726790static const OnigCodePoint CR_Graph[] = {
    727         605,
     791        654,
    728792        0x0021, 0x007e,
    729793        0x00a1, 0x0377,
     
    750814        0x0840, 0x085b,
    751815        0x085e, 0x085e,
    752         0x08a0, 0x08b2,
    753         0x08e4, 0x0983,
     816        0x0860, 0x086a,
     817        0x08a0, 0x08b4,
     818        0x08b6, 0x08bd,
     819        0x08d4, 0x0983,
    754820        0x0985, 0x098c,
    755821        0x098f, 0x0990,
     
    764830        0x09dc, 0x09dd,
    765831        0x09df, 0x09e3,
    766         0x09e6, 0x09fb,
     832        0x09e6, 0x09fd,
    767833        0x0a01, 0x0a03,
    768834        0x0a05, 0x0a0a,
     
    794860        0x0ae0, 0x0ae3,
    795861        0x0ae6, 0x0af1,
     862        0x0af9, 0x0aff,
    796863        0x0b01, 0x0b03,
    797864        0x0b05, 0x0b0c,
     
    833900        0x0c4a, 0x0c4d,
    834901        0x0c55, 0x0c56,
    835         0x0c58, 0x0c59,
     902        0x0c58, 0x0c5a,
    836903        0x0c60, 0x0c63,
    837904        0x0c66, 0x0c6f,
    838         0x0c78, 0x0c7f,
    839         0x0c81, 0x0c83,
     905        0x0c78, 0x0c83,
    840906        0x0c85, 0x0c8c,
    841907        0x0c8e, 0x0c90,
     
    851917        0x0ce6, 0x0cef,
    852918        0x0cf1, 0x0cf2,
    853         0x0d01, 0x0d03,
     919        0x0d00, 0x0d03,
    854920        0x0d05, 0x0d0c,
    855921        0x0d0e, 0x0d10,
    856         0x0d12, 0x0d3a,
    857         0x0d3d, 0x0d44,
     922        0x0d12, 0x0d44,
    858923        0x0d46, 0x0d48,
    859         0x0d4a, 0x0d4e,
    860         0x0d57, 0x0d57,
    861         0x0d60, 0x0d63,
    862         0x0d66, 0x0d75,
    863         0x0d79, 0x0d7f,
     924        0x0d4a, 0x0d4f,
     925        0x0d54, 0x0d63,
     926        0x0d66, 0x0d7f,
    864927        0x0d82, 0x0d83,
    865928        0x0d85, 0x0d96,
     
    921984        0x135d, 0x137c,
    922985        0x1380, 0x1399,
    923         0x13a0, 0x13f4,
     986        0x13a0, 0x13f5,
     987        0x13f8, 0x13fd,
    924988        0x1400, 0x167f,
    925989        0x1681, 0x169c,
     
    9611025        0x1bfc, 0x1c37,
    9621026        0x1c3b, 0x1c49,
    963         0x1c4d, 0x1c7f,
     1027        0x1c4d, 0x1c88,
    9641028        0x1cc0, 0x1cc7,
    965         0x1cd0, 0x1cf6,
    966         0x1cf8, 0x1cf9,
    967         0x1d00, 0x1df5,
    968         0x1dfc, 0x1f15,
     1029        0x1cd0, 0x1cf9,
     1030        0x1d00, 0x1df9,
     1031        0x1dfb, 0x1f15,
    9691032        0x1f18, 0x1f1d,
    9701033        0x1f20, 0x1f45,
     
    9891052        0x2074, 0x208e,
    9901053        0x2090, 0x209c,
    991         0x20a0, 0x20bd,
     1054        0x20a0, 0x20bf,
    9921055        0x20d0, 0x20f0,
    993         0x2100, 0x2189,
    994         0x2190, 0x23fa,
    995         0x2400, 0x2426,
     1056        0x2100, 0x218b,
     1057        0x2190, 0x2426,
    9961058        0x2440, 0x244a,
    9971059        0x2460, 0x2b73,
     
    9991061        0x2b98, 0x2bb9,
    10001062        0x2bbd, 0x2bc8,
    1001         0x2bca, 0x2bd1,
     1063        0x2bca, 0x2bd2,
     1064        0x2bec, 0x2bef,
    10021065        0x2c00, 0x2c2e,
    10031066        0x2c30, 0x2c5e,
     
    10171080        0x2dd0, 0x2dd6,
    10181081        0x2dd8, 0x2dde,
    1019         0x2de0, 0x2e42,
     1082        0x2de0, 0x2e49,
    10201083        0x2e80, 0x2e99,
    10211084        0x2e9b, 0x2ef3,
     
    10251088        0x3041, 0x3096,
    10261089        0x3099, 0x30ff,
    1027         0x3105, 0x312d,
     1090        0x3105, 0x312e,
    10281091        0x3131, 0x318e,
    10291092        0x3190, 0x31ba,
     
    10321095        0x3220, 0x32fe,
    10331096        0x3300, 0x4db5,
    1034         0x4dc0, 0x9fcc,
     1097        0x4dc0, 0x9fea,
    10351098        0xa000, 0xa48c,
    10361099        0xa490, 0xa4c6,
    10371100        0xa4d0, 0xa62b,
    1038         0xa640, 0xa69d,
    1039         0xa69f, 0xa6f7,
    1040         0xa700, 0xa78e,
    1041         0xa790, 0xa7ad,
    1042         0xa7b0, 0xa7b1,
     1101        0xa640, 0xa6f7,
     1102        0xa700, 0xa7ae,
     1103        0xa7b0, 0xa7b7,
    10431104        0xa7f7, 0xa82b,
    10441105        0xa830, 0xa839,
    10451106        0xa840, 0xa877,
    1046         0xa880, 0xa8c4,
     1107        0xa880, 0xa8c5,
    10471108        0xa8ce, 0xa8d9,
    1048         0xa8e0, 0xa8fb,
     1109        0xa8e0, 0xa8fd,
    10491110        0xa900, 0xa953,
    10501111        0xa95f, 0xa97c,
     
    10621123        0xab20, 0xab26,
    10631124        0xab28, 0xab2e,
    1064         0xab30, 0xab5f,
    1065         0xab64, 0xab65,
    1066         0xabc0, 0xabed,
     1125        0xab30, 0xab65,
     1126        0xab70, 0xabed,
    10671127        0xabf0, 0xabf9,
    10681128        0xac00, 0xd7a3,
     
    10841144        0xfdf0, 0xfdfd,
    10851145        0xfe00, 0xfe19,
    1086         0xfe20, 0xfe2d,
    1087         0xfe30, 0xfe52,
     1146        0xfe20, 0xfe52,
    10881147        0xfe54, 0xfe66,
    10891148        0xfe68, 0xfe6b,
     
    11081167        0x10100, 0x10102,
    11091168        0x10107, 0x10133,
    1110         0x10137, 0x1018c,
     1169        0x10137, 0x1018e,
    11111170        0x10190, 0x1019b,
    11121171        0x101a0, 0x101a0,
     
    11161175        0x102e0, 0x102fb,
    11171176        0x10300, 0x10323,
    1118         0x10330, 0x1034a,
     1177        0x1032d, 0x1034a,
    11191178        0x10350, 0x1037a,
    11201179        0x10380, 0x1039d,
     
    11231182        0x10400, 0x1049d,
    11241183        0x104a0, 0x104a9,
     1184        0x104b0, 0x104d3,
     1185        0x104d8, 0x104fb,
    11251186        0x10500, 0x10527,
    11261187        0x10530, 0x10563,
     
    11371198        0x10857, 0x1089e,
    11381199        0x108a7, 0x108af,
    1139         0x10900, 0x1091b,
     1200        0x108e0, 0x108f2,
     1201        0x108f4, 0x108f5,
     1202        0x108fb, 0x1091b,
    11401203        0x1091f, 0x10939,
    11411204        0x1093f, 0x1093f,
    11421205        0x10980, 0x109b7,
    1143         0x109be, 0x109bf,
    1144         0x10a00, 0x10a03,
     1206        0x109bc, 0x109cf,
     1207        0x109d2, 0x10a03,
    11451208        0x10a05, 0x10a06,
    11461209        0x10a0c, 0x10a13,
     
    11601223        0x10ba9, 0x10baf,
    11611224        0x10c00, 0x10c48,
     1225        0x10c80, 0x10cb2,
     1226        0x10cc0, 0x10cf2,
     1227        0x10cfa, 0x10cff,
    11621228        0x10e60, 0x10e7e,
    11631229        0x11000, 0x1104d,
     
    11691235        0x11136, 0x11143,
    11701236        0x11150, 0x11176,
    1171         0x11180, 0x111c8,
    1172         0x111cd, 0x111cd,
    1173         0x111d0, 0x111da,
     1237        0x11180, 0x111cd,
     1238        0x111d0, 0x111df,
    11741239        0x111e1, 0x111f4,
    11751240        0x11200, 0x11211,
    1176         0x11213, 0x1123d,
     1241        0x11213, 0x1123e,
     1242        0x11280, 0x11286,
     1243        0x11288, 0x11288,
     1244        0x1128a, 0x1128d,
     1245        0x1128f, 0x1129d,
     1246        0x1129f, 0x112a9,
    11771247        0x112b0, 0x112ea,
    11781248        0x112f0, 0x112f9,
    1179         0x11301, 0x11303,
     1249        0x11300, 0x11303,
    11801250        0x11305, 0x1130c,
    11811251        0x1130f, 0x11310,
     
    11871257        0x11347, 0x11348,
    11881258        0x1134b, 0x1134d,
     1259        0x11350, 0x11350,
    11891260        0x11357, 0x11357,
    11901261        0x1135d, 0x11363,
    11911262        0x11366, 0x1136c,
    11921263        0x11370, 0x11374,
     1264        0x11400, 0x11459,
     1265        0x1145b, 0x1145b,
     1266        0x1145d, 0x1145d,
    11931267        0x11480, 0x114c7,
    11941268        0x114d0, 0x114d9,
    11951269        0x11580, 0x115b5,
    1196         0x115b8, 0x115c9,
     1270        0x115b8, 0x115dd,
    11971271        0x11600, 0x11644,
    11981272        0x11650, 0x11659,
     1273        0x11660, 0x1166c,
    11991274        0x11680, 0x116b7,
    12001275        0x116c0, 0x116c9,
     1276        0x11700, 0x11719,
     1277        0x1171d, 0x1172b,
     1278        0x11730, 0x1173f,
    12011279        0x118a0, 0x118f2,
    12021280        0x118ff, 0x118ff,
     1281        0x11a00, 0x11a47,
     1282        0x11a50, 0x11a83,
     1283        0x11a86, 0x11a9c,
     1284        0x11a9e, 0x11aa2,
    12031285        0x11ac0, 0x11af8,
    1204         0x12000, 0x12398,
     1286        0x11c00, 0x11c08,
     1287        0x11c0a, 0x11c36,
     1288        0x11c38, 0x11c45,
     1289        0x11c50, 0x11c6c,
     1290        0x11c70, 0x11c8f,
     1291        0x11c92, 0x11ca7,
     1292        0x11ca9, 0x11cb6,
     1293        0x11d00, 0x11d06,
     1294        0x11d08, 0x11d09,
     1295        0x11d0b, 0x11d36,
     1296        0x11d3a, 0x11d3a,
     1297        0x11d3c, 0x11d3d,
     1298        0x11d3f, 0x11d47,
     1299        0x11d50, 0x11d59,
     1300        0x12000, 0x12399,
    12051301        0x12400, 0x1246e,
    12061302        0x12470, 0x12474,
     1303        0x12480, 0x12543,
    12071304        0x13000, 0x1342e,
     1305        0x14400, 0x14646,
    12081306        0x16800, 0x16a38,
    12091307        0x16a40, 0x16a5e,
     
    12201318        0x16f50, 0x16f7e,
    12211319        0x16f8f, 0x16f9f,
    1222         0x1b000, 0x1b001,
     1320        0x16fe0, 0x16fe1,
     1321        0x17000, 0x187ec,
     1322        0x18800, 0x18af2,
     1323        0x1b000, 0x1b11e,
     1324        0x1b170, 0x1b2fb,
    12231325        0x1bc00, 0x1bc6a,
    12241326        0x1bc70, 0x1bc7c,
     
    12281330        0x1d000, 0x1d0f5,
    12291331        0x1d100, 0x1d126,
    1230         0x1d129, 0x1d1dd,
     1332        0x1d129, 0x1d1e8,
    12311333        0x1d200, 0x1d245,
    12321334        0x1d300, 0x1d356,
     
    12521354        0x1d552, 0x1d6a5,
    12531355        0x1d6a8, 0x1d7cb,
    1254         0x1d7ce, 0x1d7ff,
     1356        0x1d7ce, 0x1da8b,
     1357        0x1da9b, 0x1da9f,
     1358        0x1daa1, 0x1daaf,
     1359        0x1e000, 0x1e006,
     1360        0x1e008, 0x1e018,
     1361        0x1e01b, 0x1e021,
     1362        0x1e023, 0x1e024,
     1363        0x1e026, 0x1e02a,
    12551364        0x1e800, 0x1e8c4,
    12561365        0x1e8c7, 0x1e8d6,
     1366        0x1e900, 0x1e94a,
     1367        0x1e950, 0x1e959,
     1368        0x1e95e, 0x1e95f,
    12571369        0x1ee00, 0x1ee03,
    12581370        0x1ee05, 0x1ee1f,
     
    12981410        0x1f110, 0x1f12e,
    12991411        0x1f130, 0x1f16b,
    1300         0x1f170, 0x1f19a,
     1412        0x1f170, 0x1f1ac,
    13011413        0x1f1e6, 0x1f202,
    1302         0x1f210, 0x1f23a,
     1414        0x1f210, 0x1f23b,
    13031415        0x1f240, 0x1f248,
    13041416        0x1f250, 0x1f251,
    1305         0x1f300, 0x1f32c,
    1306         0x1f330, 0x1f37d,
    1307         0x1f380, 0x1f3ce,
    1308         0x1f3d4, 0x1f3f7,
    1309         0x1f400, 0x1f4fe,
    1310         0x1f500, 0x1f54a,
    1311         0x1f550, 0x1f579,
    1312         0x1f57b, 0x1f5a3,
    1313         0x1f5a5, 0x1f642,
    1314         0x1f645, 0x1f6cf,
     1417        0x1f260, 0x1f265,
     1418        0x1f300, 0x1f6d4,
    13151419        0x1f6e0, 0x1f6ec,
    1316         0x1f6f0, 0x1f6f3,
     1420        0x1f6f0, 0x1f6f8,
    13171421        0x1f700, 0x1f773,
    13181422        0x1f780, 0x1f7d4,
     
    13221426        0x1f860, 0x1f887,
    13231427        0x1f890, 0x1f8ad,
     1428        0x1f900, 0x1f90b,
     1429        0x1f910, 0x1f93e,
     1430        0x1f940, 0x1f94c,
     1431        0x1f950, 0x1f96b,
     1432        0x1f980, 0x1f997,
     1433        0x1f9c0, 0x1f9c0,
     1434        0x1f9d0, 0x1f9e6,
    13241435        0x20000, 0x2a6d6,
    13251436        0x2a700, 0x2b734,
    13261437        0x2b740, 0x2b81d,
     1438        0x2b820, 0x2cea1,
     1439        0x2ceb0, 0x2ebe0,
    13271440        0x2f800, 0x2fa1d,
    13281441        0xe0001, 0xe0001,
     
    13351448/* 'Lower': [[:Lower:]] */
    13361449static const OnigCodePoint CR_Lower[] = {
    1337         633,
     1450        640,
    13381451        0x0061, 0x007a,
    13391452        0x00aa, 0x00aa,
     
    16111724        0x052f, 0x052f,
    16121725        0x0561, 0x0587,
     1726        0x13f8, 0x13fd,
     1727        0x1c80, 0x1c88,
    16131728        0x1d00, 0x1dbf,
    16141729        0x1e01, 0x1e01,
     
    19322047        0xa7a7, 0xa7a7,
    19332048        0xa7a9, 0xa7a9,
     2049        0xa7b5, 0xa7b5,
     2050        0xa7b7, 0xa7b7,
    19342051        0xa7f8, 0xa7fa,
    19352052        0xab30, 0xab5a,
    1936         0xab5c, 0xab5f,
    1937         0xab64, 0xab65,
     2053        0xab5c, 0xab65,
     2054        0xab70, 0xabbf,
    19382055        0xfb00, 0xfb06,
    19392056        0xfb13, 0xfb17,
    19402057        0xff41, 0xff5a,
    19412058        0x10428, 0x1044f,
     2059        0x104d8, 0x104fb,
     2060        0x10cc0, 0x10cf2,
    19422061        0x118c0, 0x118df,
    19432062        0x1d41a, 0x1d433,
     
    19692088        0x1d7c4, 0x1d7c9,
    19702089        0x1d7cb, 0x1d7cb,
     2090        0x1e922, 0x1e943,
    19712091}; /* CR_Lower */
    19722092
    19732093/* 'Print': [[:Print:]] */
    19742094static const OnigCodePoint CR_Print[] = {
    1975         602,
     2095        651,
    19762096        0x0020, 0x007e,
    19772097        0x00a0, 0x0377,
     
    19982118        0x0840, 0x085b,
    19992119        0x085e, 0x085e,
    2000         0x08a0, 0x08b2,
    2001         0x08e4, 0x0983,
     2120        0x0860, 0x086a,
     2121        0x08a0, 0x08b4,
     2122        0x08b6, 0x08bd,
     2123        0x08d4, 0x0983,
    20022124        0x0985, 0x098c,
    20032125        0x098f, 0x0990,
     
    20122134        0x09dc, 0x09dd,
    20132135        0x09df, 0x09e3,
    2014         0x09e6, 0x09fb,
     2136        0x09e6, 0x09fd,
    20152137        0x0a01, 0x0a03,
    20162138        0x0a05, 0x0a0a,
     
    20422164        0x0ae0, 0x0ae3,
    20432165        0x0ae6, 0x0af1,
     2166        0x0af9, 0x0aff,
    20442167        0x0b01, 0x0b03,
    20452168        0x0b05, 0x0b0c,
     
    20812204        0x0c4a, 0x0c4d,
    20822205        0x0c55, 0x0c56,
    2083         0x0c58, 0x0c59,
     2206        0x0c58, 0x0c5a,
    20842207        0x0c60, 0x0c63,
    20852208        0x0c66, 0x0c6f,
    2086         0x0c78, 0x0c7f,
    2087         0x0c81, 0x0c83,
     2209        0x0c78, 0x0c83,
    20882210        0x0c85, 0x0c8c,
    20892211        0x0c8e, 0x0c90,
     
    20992221        0x0ce6, 0x0cef,
    21002222        0x0cf1, 0x0cf2,
    2101         0x0d01, 0x0d03,
     2223        0x0d00, 0x0d03,
    21022224        0x0d05, 0x0d0c,
    21032225        0x0d0e, 0x0d10,
    2104         0x0d12, 0x0d3a,
    2105         0x0d3d, 0x0d44,
     2226        0x0d12, 0x0d44,
    21062227        0x0d46, 0x0d48,
    2107         0x0d4a, 0x0d4e,
    2108         0x0d57, 0x0d57,
    2109         0x0d60, 0x0d63,
    2110         0x0d66, 0x0d75,
    2111         0x0d79, 0x0d7f,
     2228        0x0d4a, 0x0d4f,
     2229        0x0d54, 0x0d63,
     2230        0x0d66, 0x0d7f,
    21122231        0x0d82, 0x0d83,
    21132232        0x0d85, 0x0d96,
     
    21692288        0x135d, 0x137c,
    21702289        0x1380, 0x1399,
    2171         0x13a0, 0x13f4,
     2290        0x13a0, 0x13f5,
     2291        0x13f8, 0x13fd,
    21722292        0x1400, 0x169c,
    21732293        0x16a0, 0x16f8,
     
    22082328        0x1bfc, 0x1c37,
    22092329        0x1c3b, 0x1c49,
    2210         0x1c4d, 0x1c7f,
     2330        0x1c4d, 0x1c88,
    22112331        0x1cc0, 0x1cc7,
    2212         0x1cd0, 0x1cf6,
    2213         0x1cf8, 0x1cf9,
    2214         0x1d00, 0x1df5,
    2215         0x1dfc, 0x1f15,
     2332        0x1cd0, 0x1cf9,
     2333        0x1d00, 0x1df9,
     2334        0x1dfb, 0x1f15,
    22162335        0x1f18, 0x1f1d,
    22172336        0x1f20, 0x1f45,
     
    22342353        0x2074, 0x208e,
    22352354        0x2090, 0x209c,
    2236         0x20a0, 0x20bd,
     2355        0x20a0, 0x20bf,
    22372356        0x20d0, 0x20f0,
    2238         0x2100, 0x2189,
    2239         0x2190, 0x23fa,
    2240         0x2400, 0x2426,
     2357        0x2100, 0x218b,
     2358        0x2190, 0x2426,
    22412359        0x2440, 0x244a,
    22422360        0x2460, 0x2b73,
     
    22442362        0x2b98, 0x2bb9,
    22452363        0x2bbd, 0x2bc8,
    2246         0x2bca, 0x2bd1,
     2364        0x2bca, 0x2bd2,
     2365        0x2bec, 0x2bef,
    22472366        0x2c00, 0x2c2e,
    22482367        0x2c30, 0x2c5e,
     
    22622381        0x2dd0, 0x2dd6,
    22632382        0x2dd8, 0x2dde,
    2264         0x2de0, 0x2e42,
     2383        0x2de0, 0x2e49,
    22652384        0x2e80, 0x2e99,
    22662385        0x2e9b, 0x2ef3,
     
    22702389        0x3041, 0x3096,
    22712390        0x3099, 0x30ff,
    2272         0x3105, 0x312d,
     2391        0x3105, 0x312e,
    22732392        0x3131, 0x318e,
    22742393        0x3190, 0x31ba,
     
    22772396        0x3220, 0x32fe,
    22782397        0x3300, 0x4db5,
    2279         0x4dc0, 0x9fcc,
     2398        0x4dc0, 0x9fea,
    22802399        0xa000, 0xa48c,
    22812400        0xa490, 0xa4c6,
    22822401        0xa4d0, 0xa62b,
    2283         0xa640, 0xa69d,
    2284         0xa69f, 0xa6f7,
    2285         0xa700, 0xa78e,
    2286         0xa790, 0xa7ad,
    2287         0xa7b0, 0xa7b1,
     2402        0xa640, 0xa6f7,
     2403        0xa700, 0xa7ae,
     2404        0xa7b0, 0xa7b7,
    22882405        0xa7f7, 0xa82b,
    22892406        0xa830, 0xa839,
    22902407        0xa840, 0xa877,
    2291         0xa880, 0xa8c4,
     2408        0xa880, 0xa8c5,
    22922409        0xa8ce, 0xa8d9,
    2293         0xa8e0, 0xa8fb,
     2410        0xa8e0, 0xa8fd,
    22942411        0xa900, 0xa953,
    22952412        0xa95f, 0xa97c,
     
    23072424        0xab20, 0xab26,
    23082425        0xab28, 0xab2e,
    2309         0xab30, 0xab5f,
    2310         0xab64, 0xab65,
    2311         0xabc0, 0xabed,
     2426        0xab30, 0xab65,
     2427        0xab70, 0xabed,
    23122428        0xabf0, 0xabf9,
    23132429        0xac00, 0xd7a3,
     
    23292445        0xfdf0, 0xfdfd,
    23302446        0xfe00, 0xfe19,
    2331         0xfe20, 0xfe2d,
    2332         0xfe30, 0xfe52,
     2447        0xfe20, 0xfe52,
    23332448        0xfe54, 0xfe66,
    23342449        0xfe68, 0xfe6b,
     
    23532468        0x10100, 0x10102,
    23542469        0x10107, 0x10133,
    2355         0x10137, 0x1018c,
     2470        0x10137, 0x1018e,
    23562471        0x10190, 0x1019b,
    23572472        0x101a0, 0x101a0,
     
    23612476        0x102e0, 0x102fb,
    23622477        0x10300, 0x10323,
    2363         0x10330, 0x1034a,
     2478        0x1032d, 0x1034a,
    23642479        0x10350, 0x1037a,
    23652480        0x10380, 0x1039d,
     
    23682483        0x10400, 0x1049d,
    23692484        0x104a0, 0x104a9,
     2485        0x104b0, 0x104d3,
     2486        0x104d8, 0x104fb,
    23702487        0x10500, 0x10527,
    23712488        0x10530, 0x10563,
     
    23822499        0x10857, 0x1089e,
    23832500        0x108a7, 0x108af,
    2384         0x10900, 0x1091b,
     2501        0x108e0, 0x108f2,
     2502        0x108f4, 0x108f5,
     2503        0x108fb, 0x1091b,
    23852504        0x1091f, 0x10939,
    23862505        0x1093f, 0x1093f,
    23872506        0x10980, 0x109b7,
    2388         0x109be, 0x109bf,
    2389         0x10a00, 0x10a03,
     2507        0x109bc, 0x109cf,
     2508        0x109d2, 0x10a03,
    23902509        0x10a05, 0x10a06,
    23912510        0x10a0c, 0x10a13,
     
    24052524        0x10ba9, 0x10baf,
    24062525        0x10c00, 0x10c48,
     2526        0x10c80, 0x10cb2,
     2527        0x10cc0, 0x10cf2,
     2528        0x10cfa, 0x10cff,
    24072529        0x10e60, 0x10e7e,
    24082530        0x11000, 0x1104d,
     
    24142536        0x11136, 0x11143,
    24152537        0x11150, 0x11176,
    2416         0x11180, 0x111c8,
    2417         0x111cd, 0x111cd,
    2418         0x111d0, 0x111da,
     2538        0x11180, 0x111cd,
     2539        0x111d0, 0x111df,
    24192540        0x111e1, 0x111f4,
    24202541        0x11200, 0x11211,
    2421         0x11213, 0x1123d,
     2542        0x11213, 0x1123e,
     2543        0x11280, 0x11286,
     2544        0x11288, 0x11288,
     2545        0x1128a, 0x1128d,
     2546        0x1128f, 0x1129d,
     2547        0x1129f, 0x112a9,
    24222548        0x112b0, 0x112ea,
    24232549        0x112f0, 0x112f9,
    2424         0x11301, 0x11303,
     2550        0x11300, 0x11303,
    24252551        0x11305, 0x1130c,
    24262552        0x1130f, 0x11310,
     
    24322558        0x11347, 0x11348,
    24332559        0x1134b, 0x1134d,
     2560        0x11350, 0x11350,
    24342561        0x11357, 0x11357,
    24352562        0x1135d, 0x11363,
    24362563        0x11366, 0x1136c,
    24372564        0x11370, 0x11374,
     2565        0x11400, 0x11459,
     2566        0x1145b, 0x1145b,
     2567        0x1145d, 0x1145d,
    24382568        0x11480, 0x114c7,
    24392569        0x114d0, 0x114d9,
    24402570        0x11580, 0x115b5,
    2441         0x115b8, 0x115c9,
     2571        0x115b8, 0x115dd,
    24422572        0x11600, 0x11644,
    24432573        0x11650, 0x11659,
     2574        0x11660, 0x1166c,
    24442575        0x11680, 0x116b7,
    24452576        0x116c0, 0x116c9,
     2577        0x11700, 0x11719,
     2578        0x1171d, 0x1172b,
     2579        0x11730, 0x1173f,
    24462580        0x118a0, 0x118f2,
    24472581        0x118ff, 0x118ff,
     2582        0x11a00, 0x11a47,
     2583        0x11a50, 0x11a83,
     2584        0x11a86, 0x11a9c,
     2585        0x11a9e, 0x11aa2,
    24482586        0x11ac0, 0x11af8,
    2449         0x12000, 0x12398,
     2587        0x11c00, 0x11c08,
     2588        0x11c0a, 0x11c36,
     2589        0x11c38, 0x11c45,
     2590        0x11c50, 0x11c6c,
     2591        0x11c70, 0x11c8f,
     2592        0x11c92, 0x11ca7,
     2593        0x11ca9, 0x11cb6,
     2594        0x11d00, 0x11d06,
     2595        0x11d08, 0x11d09,
     2596        0x11d0b, 0x11d36,
     2597        0x11d3a, 0x11d3a,
     2598        0x11d3c, 0x11d3d,
     2599        0x11d3f, 0x11d47,
     2600        0x11d50, 0x11d59,
     2601        0x12000, 0x12399,
    24502602        0x12400, 0x1246e,
    24512603        0x12470, 0x12474,
     2604        0x12480, 0x12543,
    24522605        0x13000, 0x1342e,
     2606        0x14400, 0x14646,
    24532607        0x16800, 0x16a38,
    24542608        0x16a40, 0x16a5e,
     
    24652619        0x16f50, 0x16f7e,
    24662620        0x16f8f, 0x16f9f,
    2467         0x1b000, 0x1b001,
     2621        0x16fe0, 0x16fe1,
     2622        0x17000, 0x187ec,
     2623        0x18800, 0x18af2,
     2624        0x1b000, 0x1b11e,
     2625        0x1b170, 0x1b2fb,
    24682626        0x1bc00, 0x1bc6a,
    24692627        0x1bc70, 0x1bc7c,
     
    24732631        0x1d000, 0x1d0f5,
    24742632        0x1d100, 0x1d126,
    2475         0x1d129, 0x1d1dd,
     2633        0x1d129, 0x1d1e8,
    24762634        0x1d200, 0x1d245,
    24772635        0x1d300, 0x1d356,
     
    24972655        0x1d552, 0x1d6a5,
    24982656        0x1d6a8, 0x1d7cb,
    2499         0x1d7ce, 0x1d7ff,
     2657        0x1d7ce, 0x1da8b,
     2658        0x1da9b, 0x1da9f,
     2659        0x1daa1, 0x1daaf,
     2660        0x1e000, 0x1e006,
     2661        0x1e008, 0x1e018,
     2662        0x1e01b, 0x1e021,
     2663        0x1e023, 0x1e024,
     2664        0x1e026, 0x1e02a,
    25002665        0x1e800, 0x1e8c4,
    25012666        0x1e8c7, 0x1e8d6,
     2667        0x1e900, 0x1e94a,
     2668        0x1e950, 0x1e959,
     2669        0x1e95e, 0x1e95f,
    25022670        0x1ee00, 0x1ee03,
    25032671        0x1ee05, 0x1ee1f,
     
    25432711        0x1f110, 0x1f12e,
    25442712        0x1f130, 0x1f16b,
    2545         0x1f170, 0x1f19a,
     2713        0x1f170, 0x1f1ac,
    25462714        0x1f1e6, 0x1f202,
    2547         0x1f210, 0x1f23a,
     2715        0x1f210, 0x1f23b,
    25482716        0x1f240, 0x1f248,
    25492717        0x1f250, 0x1f251,
    2550         0x1f300, 0x1f32c,
    2551         0x1f330, 0x1f37d,
    2552         0x1f380, 0x1f3ce,
    2553         0x1f3d4, 0x1f3f7,
    2554         0x1f400, 0x1f4fe,
    2555         0x1f500, 0x1f54a,
    2556         0x1f550, 0x1f579,
    2557         0x1f57b, 0x1f5a3,
    2558         0x1f5a5, 0x1f642,
    2559         0x1f645, 0x1f6cf,
     2718        0x1f260, 0x1f265,
     2719        0x1f300, 0x1f6d4,
    25602720        0x1f6e0, 0x1f6ec,
    2561         0x1f6f0, 0x1f6f3,
     2721        0x1f6f0, 0x1f6f8,
    25622722        0x1f700, 0x1f773,
    25632723        0x1f780, 0x1f7d4,
     
    25672727        0x1f860, 0x1f887,
    25682728        0x1f890, 0x1f8ad,
     2729        0x1f900, 0x1f90b,
     2730        0x1f910, 0x1f93e,
     2731        0x1f940, 0x1f94c,
     2732        0x1f950, 0x1f96b,
     2733        0x1f980, 0x1f997,
     2734        0x1f9c0, 0x1f9c0,
     2735        0x1f9d0, 0x1f9e6,
    25692736        0x20000, 0x2a6d6,
    25702737        0x2a700, 0x2b734,
    25712738        0x2b740, 0x2b81d,
     2739        0x2b820, 0x2cea1,
     2740        0x2ceb0, 0x2ebe0,
    25722741        0x2f800, 0x2fa1d,
    25732742        0xe0001, 0xe0001,
     
    25782747}; /* CR_Print */
    25792748
    2580 /* 'Punct': [[:Punct:]] */
    2581 static const OnigCodePoint CR_Punct[] = {
    2582         155,
    2583         0x0021, 0x0023,
    2584         0x0025, 0x002a,
    2585         0x002c, 0x002f,
    2586         0x003a, 0x003b,
    2587         0x003f, 0x0040,
    2588         0x005b, 0x005d,
    2589         0x005f, 0x005f,
    2590         0x007b, 0x007b,
    2591         0x007d, 0x007d,
     2749/* 'XPosixPunct': [[:Punct:]] */
     2750static const OnigCodePoint CR_XPosixPunct[] = {
     2751        167,
     2752        0x0021, 0x002f,
     2753        0x003a, 0x0040,
     2754        0x005b, 0x0060,
     2755        0x007b, 0x007e,
    25922756        0x00a1, 0x00a1,
    25932757        0x00a7, 0x00a7,
     
    26172781        0x0964, 0x0965,
    26182782        0x0970, 0x0970,
     2783        0x09fd, 0x09fd,
    26192784        0x0af0, 0x0af0,
    26202785        0x0df4, 0x0df4,
     
    26662831        0x2d70, 0x2d70,
    26672832        0x2e00, 0x2e2e,
    2668         0x2e30, 0x2e42,
     2833        0x2e30, 0x2e49,
    26692834        0x3001, 0x3003,
    26702835        0x3008, 0x3011,
     
    26822847        0xa8ce, 0xa8cf,
    26832848        0xa8f8, 0xa8fa,
     2849        0xa8fc, 0xa8fc,
    26842850        0xa92e, 0xa92f,
    26852851        0xa95f, 0xa95f,
     
    27242890        0x11140, 0x11143,
    27252891        0x11174, 0x11175,
    2726         0x111c5, 0x111c8,
     2892        0x111c5, 0x111c9,
    27272893        0x111cd, 0x111cd,
     2894        0x111db, 0x111db,
     2895        0x111dd, 0x111df,
    27282896        0x11238, 0x1123d,
     2897        0x112a9, 0x112a9,
     2898        0x1144b, 0x1144f,
     2899        0x1145b, 0x1145b,
     2900        0x1145d, 0x1145d,
    27292901        0x114c6, 0x114c6,
    2730         0x115c1, 0x115c9,
     2902        0x115c1, 0x115d7,
    27312903        0x11641, 0x11643,
     2904        0x11660, 0x1166c,
     2905        0x1173c, 0x1173e,
     2906        0x11a3f, 0x11a46,
     2907        0x11a9a, 0x11a9c,
     2908        0x11a9e, 0x11aa2,
     2909        0x11c41, 0x11c45,
     2910        0x11c70, 0x11c71,
    27322911        0x12470, 0x12474,
    27332912        0x16a6e, 0x16a6f,
     
    27362915        0x16b44, 0x16b44,
    27372916        0x1bc9f, 0x1bc9f,
    2738 }; /* CR_Punct */
     2917        0x1da87, 0x1da8b,
     2918        0x1e95e, 0x1e95f,
     2919}; /* CR_XPosixPunct */
    27392920
    27402921/* 'Space': [[:Space:]] */
     
    27552936/* 'Upper': [[:Upper:]] */
    27562937static const OnigCodePoint CR_Upper[] = {
    2757         627,
     2938        632,
    27582939        0x0041, 0x005a,
    27592940        0x00c0, 0x00d6,
     
    30313212        0x10c7, 0x10c7,
    30323213        0x10cd, 0x10cd,
     3214        0x13a0, 0x13f5,
    30333215        0x1e00, 0x1e00,
    30343216        0x1e02, 0x1e02,
     
    33443526        0xa7a6, 0xa7a6,
    33453527        0xa7a8, 0xa7a8,
    3346         0xa7aa, 0xa7ad,
    3347         0xa7b0, 0xa7b1,
     3528        0xa7aa, 0xa7ae,
     3529        0xa7b0, 0xa7b4,
     3530        0xa7b6, 0xa7b6,
    33483531        0xff21, 0xff3a,
    33493532        0x10400, 0x10427,
     3533        0x104b0, 0x104d3,
     3534        0x10c80, 0x10cb2,
    33503535        0x118a0, 0x118bf,
    33513536        0x1d400, 0x1d419,
     
    33803565        0x1d790, 0x1d7a8,
    33813566        0x1d7ca, 0x1d7ca,
     3567        0x1e900, 0x1e921,
    33823568        0x1f130, 0x1f149,
    33833569        0x1f150, 0x1f169,
     
    33953581/* 'Word': [[:Word:]] */
    33963582static const OnigCodePoint CR_Word[] = {
    3397         629,
     3583        692,
    33983584        0x0030, 0x0039,
    33993585        0x0041, 0x005a,
     
    34443630        0x0800, 0x082d,
    34453631        0x0840, 0x085b,
    3446         0x08a0, 0x08b2,
    3447         0x08e4, 0x0963,
     3632        0x0860, 0x086a,
     3633        0x08a0, 0x08b4,
     3634        0x08b6, 0x08bd,
     3635        0x08d4, 0x08e1,
     3636        0x08e3, 0x0963,
    34483637        0x0966, 0x096f,
    34493638        0x0971, 0x0983,
     
    34613650        0x09df, 0x09e3,
    34623651        0x09e6, 0x09f1,
     3652        0x09fc, 0x09fc,
    34633653        0x0a01, 0x0a03,
    34643654        0x0a05, 0x0a0a,
     
    34903680        0x0ae0, 0x0ae3,
    34913681        0x0ae6, 0x0aef,
     3682        0x0af9, 0x0aff,
    34923683        0x0b01, 0x0b03,
    34933684        0x0b05, 0x0b0c,
     
    35303721        0x0c4a, 0x0c4d,
    35313722        0x0c55, 0x0c56,
    3532         0x0c58, 0x0c59,
     3723        0x0c58, 0x0c5a,
    35333724        0x0c60, 0x0c63,
    35343725        0x0c66, 0x0c6f,
    3535         0x0c81, 0x0c83,
     3726        0x0c80, 0x0c83,
    35363727        0x0c85, 0x0c8c,
    35373728        0x0c8e, 0x0c90,
     
    35473738        0x0ce6, 0x0cef,
    35483739        0x0cf1, 0x0cf2,
    3549         0x0d01, 0x0d03,
     3740        0x0d00, 0x0d03,
    35503741        0x0d05, 0x0d0c,
    35513742        0x0d0e, 0x0d10,
    3552         0x0d12, 0x0d3a,
    3553         0x0d3d, 0x0d44,
     3743        0x0d12, 0x0d44,
    35543744        0x0d46, 0x0d48,
    35553745        0x0d4a, 0x0d4e,
    3556         0x0d57, 0x0d57,
    3557         0x0d60, 0x0d63,
     3746        0x0d54, 0x0d57,
     3747        0x0d5f, 0x0d63,
    35583748        0x0d66, 0x0d6f,
    35593749        0x0d7a, 0x0d7f,
     
    36273817        0x135d, 0x135f,
    36283818        0x1380, 0x138f,
    3629         0x13a0, 0x13f4,
     3819        0x13a0, 0x13f5,
     3820        0x13f8, 0x13fd,
    36303821        0x1401, 0x166c,
    36313822        0x166f, 0x167f,
     
    36713862        0x1c40, 0x1c49,
    36723863        0x1c4d, 0x1c7d,
     3864        0x1c80, 0x1c88,
    36733865        0x1cd0, 0x1cd2,
    3674         0x1cd4, 0x1cf6,
    3675         0x1cf8, 0x1cf9,
    3676         0x1d00, 0x1df5,
    3677         0x1dfc, 0x1f15,
     3866        0x1cd4, 0x1cf9,
     3867        0x1d00, 0x1df9,
     3868        0x1dfb, 0x1f15,
    36783869        0x1f18, 0x1f1d,
    36793870        0x1f20, 0x1f45,
     
    37443935        0x30a1, 0x30fa,
    37453936        0x30fc, 0x30ff,
    3746         0x3105, 0x312d,
     3937        0x3105, 0x312e,
    37473938        0x3131, 0x318e,
    37483939        0x31a0, 0x31ba,
    37493940        0x31f0, 0x31ff,
    37503941        0x3400, 0x4db5,
    3751         0x4e00, 0x9fcc,
     3942        0x4e00, 0x9fea,
    37523943        0xa000, 0xa48c,
    37533944        0xa4d0, 0xa4fd,
     
    37563947        0xa640, 0xa672,
    37573948        0xa674, 0xa67d,
    3758         0xa67f, 0xa69d,
    3759         0xa69f, 0xa6f1,
     3949        0xa67f, 0xa6f1,
    37603950        0xa717, 0xa71f,
    37613951        0xa722, 0xa788,
    3762         0xa78b, 0xa78e,
    3763         0xa790, 0xa7ad,
    3764         0xa7b0, 0xa7b1,
     3952        0xa78b, 0xa7ae,
     3953        0xa7b0, 0xa7b7,
    37653954        0xa7f7, 0xa827,
    37663955        0xa840, 0xa873,
    3767         0xa880, 0xa8c4,
     3956        0xa880, 0xa8c5,
    37683957        0xa8d0, 0xa8d9,
    37693958        0xa8e0, 0xa8f7,
    37703959        0xa8fb, 0xa8fb,
     3960        0xa8fd, 0xa8fd,
    37713961        0xa900, 0xa92d,
    37723962        0xa930, 0xa953,
     
    37893979        0xab28, 0xab2e,
    37903980        0xab30, 0xab5a,
    3791         0xab5c, 0xab5f,
    3792         0xab64, 0xab65,
    3793         0xabc0, 0xabea,
     3981        0xab5c, 0xab65,
     3982        0xab70, 0xabea,
    37943983        0xabec, 0xabed,
    37953984        0xabf0, 0xabf9,
     
    38134002        0xfdf0, 0xfdfb,
    38144003        0xfe00, 0xfe0f,
    3815         0xfe20, 0xfe2d,
     4004        0xfe20, 0xfe2f,
    38164005        0xfe33, 0xfe34,
    38174006        0xfe4d, 0xfe4f,
     
    38404029        0x102e0, 0x102e0,
    38414030        0x10300, 0x1031f,
    3842         0x10330, 0x1034a,
     4031        0x1032d, 0x1034a,
    38434032        0x10350, 0x1037a,
    38444033        0x10380, 0x1039d,
     
    38484037        0x10400, 0x1049d,
    38494038        0x104a0, 0x104a9,
     4039        0x104b0, 0x104d3,
     4040        0x104d8, 0x104fb,
    38504041        0x10500, 0x10527,
    38514042        0x10530, 0x10563,
     
    38614052        0x10860, 0x10876,
    38624053        0x10880, 0x1089e,
     4054        0x108e0, 0x108f2,
     4055        0x108f4, 0x108f5,
    38634056        0x10900, 0x10915,
    38644057        0x10920, 0x10939,
     
    38814074        0x10b80, 0x10b91,
    38824075        0x10c00, 0x10c48,
     4076        0x10c80, 0x10cb2,
     4077        0x10cc0, 0x10cf2,
    38834078        0x11000, 0x11046,
    38844079        0x11066, 0x1106f,
     
    38914086        0x11176, 0x11176,
    38924087        0x11180, 0x111c4,
     4088        0x111ca, 0x111cc,
    38934089        0x111d0, 0x111da,
     4090        0x111dc, 0x111dc,
    38944091        0x11200, 0x11211,
    38954092        0x11213, 0x11237,
     4093        0x1123e, 0x1123e,
     4094        0x11280, 0x11286,
     4095        0x11288, 0x11288,
     4096        0x1128a, 0x1128d,
     4097        0x1128f, 0x1129d,
     4098        0x1129f, 0x112a8,
    38964099        0x112b0, 0x112ea,
    38974100        0x112f0, 0x112f9,
    3898         0x11301, 0x11303,
     4101        0x11300, 0x11303,
    38994102        0x11305, 0x1130c,
    39004103        0x1130f, 0x11310,
     
    39064109        0x11347, 0x11348,
    39074110        0x1134b, 0x1134d,
     4111        0x11350, 0x11350,
    39084112        0x11357, 0x11357,
    39094113        0x1135d, 0x11363,
    39104114        0x11366, 0x1136c,
    39114115        0x11370, 0x11374,
     4116        0x11400, 0x1144a,
     4117        0x11450, 0x11459,
    39124118        0x11480, 0x114c5,
    39134119        0x114c7, 0x114c7,
     
    39154121        0x11580, 0x115b5,
    39164122        0x115b8, 0x115c0,
     4123        0x115d8, 0x115dd,
    39174124        0x11600, 0x11640,
    39184125        0x11644, 0x11644,
     
    39204127        0x11680, 0x116b7,
    39214128        0x116c0, 0x116c9,
     4129        0x11700, 0x11719,
     4130        0x1171d, 0x1172b,
     4131        0x11730, 0x11739,
    39224132        0x118a0, 0x118e9,
    39234133        0x118ff, 0x118ff,
     4134        0x11a00, 0x11a3e,
     4135        0x11a47, 0x11a47,
     4136        0x11a50, 0x11a83,
     4137        0x11a86, 0x11a99,
    39244138        0x11ac0, 0x11af8,
    3925         0x12000, 0x12398,
     4139        0x11c00, 0x11c08,
     4140        0x11c0a, 0x11c36,
     4141        0x11c38, 0x11c40,
     4142        0x11c50, 0x11c59,
     4143        0x11c72, 0x11c8f,
     4144        0x11c92, 0x11ca7,
     4145        0x11ca9, 0x11cb6,
     4146        0x11d00, 0x11d06,
     4147        0x11d08, 0x11d09,
     4148        0x11d0b, 0x11d36,
     4149        0x11d3a, 0x11d3a,
     4150        0x11d3c, 0x11d3d,
     4151        0x11d3f, 0x11d47,
     4152        0x11d50, 0x11d59,
     4153        0x12000, 0x12399,
    39264154        0x12400, 0x1246e,
     4155        0x12480, 0x12543,
    39274156        0x13000, 0x1342e,
     4157        0x14400, 0x14646,
    39284158        0x16800, 0x16a38,
    39294159        0x16a40, 0x16a5e,
     
    39394169        0x16f50, 0x16f7e,
    39404170        0x16f8f, 0x16f9f,
    3941         0x1b000, 0x1b001,
     4171        0x16fe0, 0x16fe1,
     4172        0x17000, 0x187ec,
     4173        0x18800, 0x18af2,
     4174        0x1b000, 0x1b11e,
     4175        0x1b170, 0x1b2fb,
    39424176        0x1bc00, 0x1bc6a,
    39434177        0x1bc70, 0x1bc7c,
     
    39824216        0x1d7c4, 0x1d7cb,
    39834217        0x1d7ce, 0x1d7ff,
     4218        0x1da00, 0x1da36,
     4219        0x1da3b, 0x1da6c,
     4220        0x1da75, 0x1da75,
     4221        0x1da84, 0x1da84,
     4222        0x1da9b, 0x1da9f,
     4223        0x1daa1, 0x1daaf,
     4224        0x1e000, 0x1e006,
     4225        0x1e008, 0x1e018,
     4226        0x1e01b, 0x1e021,
     4227        0x1e023, 0x1e024,
     4228        0x1e026, 0x1e02a,
    39844229        0x1e800, 0x1e8c4,
    39854230        0x1e8d0, 0x1e8d6,
     4231        0x1e900, 0x1e94a,
     4232        0x1e950, 0x1e959,
    39864233        0x1ee00, 0x1ee03,
    39874234        0x1ee05, 0x1ee1f,
     
    40234270        0x2a700, 0x2b734,
    40244271        0x2b740, 0x2b81d,
     4272        0x2b820, 0x2cea1,
     4273        0x2ceb0, 0x2ebe0,
    40254274        0x2f800, 0x2fa1d,
    40264275        0xe0100, 0xe01ef,
     
    40294278/* 'Alnum': [[:Alnum:]] */
    40304279static const OnigCodePoint CR_Alnum[] = {
    4031         630,
     4280        695,
    40324281        0x0030, 0x0039,
    40334282        0x0041, 0x005a,
     
    40814330        0x081a, 0x082c,
    40824331        0x0840, 0x0858,
    4083         0x08a0, 0x08b2,
    4084         0x08e4, 0x08e9,
     4332        0x0860, 0x086a,
     4333        0x08a0, 0x08b4,
     4334        0x08b6, 0x08bd,
     4335        0x08d4, 0x08df,
     4336        0x08e3, 0x08e9,
    40854337        0x08f0, 0x093b,
    40864338        0x093d, 0x094c,
     
    41034355        0x09df, 0x09e3,
    41044356        0x09e6, 0x09f1,
     4357        0x09fc, 0x09fc,
    41054358        0x0a01, 0x0a03,
    41064359        0x0a05, 0x0a0a,
     
    41314384        0x0ae0, 0x0ae3,
    41324385        0x0ae6, 0x0aef,
     4386        0x0af9, 0x0afc,
    41334387        0x0b01, 0x0b03,
    41344388        0x0b05, 0x0b0c,
     
    41714425        0x0c4a, 0x0c4c,
    41724426        0x0c55, 0x0c56,
    4173         0x0c58, 0x0c59,
     4427        0x0c58, 0x0c5a,
    41744428        0x0c60, 0x0c63,
    41754429        0x0c66, 0x0c6f,
    4176         0x0c81, 0x0c83,
     4430        0x0c80, 0x0c83,
    41774431        0x0c85, 0x0c8c,
    41784432        0x0c8e, 0x0c90,
     
    41884442        0x0ce6, 0x0cef,
    41894443        0x0cf1, 0x0cf2,
    4190         0x0d01, 0x0d03,
     4444        0x0d00, 0x0d03,
    41914445        0x0d05, 0x0d0c,
    41924446        0x0d0e, 0x0d10,
     
    41964450        0x0d4a, 0x0d4c,
    41974451        0x0d4e, 0x0d4e,
    4198         0x0d57, 0x0d57,
    4199         0x0d60, 0x0d63,
     4452        0x0d54, 0x0d57,
     4453        0x0d5f, 0x0d63,
    42004454        0x0d66, 0x0d6f,
    42014455        0x0d7a, 0x0d7f,
     
    42714525        0x135f, 0x135f,
    42724526        0x1380, 0x138f,
    4273         0x13a0, 0x13f4,
     4527        0x13a0, 0x13f5,
     4528        0x13f8, 0x13fd,
    42744529        0x1401, 0x166c,
    42754530        0x166f, 0x167f,
     
    43174572        0x1c40, 0x1c49,
    43184573        0x1c4d, 0x1c7d,
     4574        0x1c80, 0x1c88,
    43194575        0x1ce9, 0x1cec,
    43204576        0x1cee, 0x1cf3,
     
    43884644        0x30a1, 0x30fa,
    43894645        0x30fc, 0x30ff,
    4390         0x3105, 0x312d,
     4646        0x3105, 0x312e,
    43914647        0x3131, 0x318e,
    43924648        0x31a0, 0x31ba,
    43934649        0x31f0, 0x31ff,
    43944650        0x3400, 0x4db5,
    4395         0x4e00, 0x9fcc,
     4651        0x4e00, 0x9fea,
    43964652        0xa000, 0xa48c,
    43974653        0xa4d0, 0xa4fd,
     
    44004656        0xa640, 0xa66e,
    44014657        0xa674, 0xa67b,
    4402         0xa67f, 0xa69d,
    4403         0xa69f, 0xa6ef,
     4658        0xa67f, 0xa6ef,
    44044659        0xa717, 0xa71f,
    44054660        0xa722, 0xa788,
    4406         0xa78b, 0xa78e,
    4407         0xa790, 0xa7ad,
    4408         0xa7b0, 0xa7b1,
     4661        0xa78b, 0xa7ae,
     4662        0xa7b0, 0xa7b7,
    44094663        0xa7f7, 0xa801,
    44104664        0xa803, 0xa805,
     
    44134667        0xa840, 0xa873,
    44144668        0xa880, 0xa8c3,
     4669        0xa8c5, 0xa8c5,
    44154670        0xa8d0, 0xa8d9,
    44164671        0xa8f2, 0xa8f7,
    44174672        0xa8fb, 0xa8fb,
     4673        0xa8fd, 0xa8fd,
    44184674        0xa900, 0xa92a,
    44194675        0xa930, 0xa952,
     
    44414697        0xab28, 0xab2e,
    44424698        0xab30, 0xab5a,
    4443         0xab5c, 0xab5f,
    4444         0xab64, 0xab65,
    4445         0xabc0, 0xabea,
     4699        0xab5c, 0xab65,
     4700        0xab70, 0xabea,
    44464701        0xabf0, 0xabf9,
    44474702        0xac00, 0xd7a3,
     
    44844739        0x102a0, 0x102d0,
    44854740        0x10300, 0x1031f,
    4486         0x10330, 0x1034a,
     4741        0x1032d, 0x1034a,
    44874742        0x10350, 0x1037a,
    44884743        0x10380, 0x1039d,
     
    44924747        0x10400, 0x1049d,
    44934748        0x104a0, 0x104a9,
     4749        0x104b0, 0x104d3,
     4750        0x104d8, 0x104fb,
    44944751        0x10500, 0x10527,
    44954752        0x10530, 0x10563,
     
    45054762        0x10860, 0x10876,
    45064763        0x10880, 0x1089e,
     4764        0x108e0, 0x108f2,
     4765        0x108f4, 0x108f5,
    45074766        0x10900, 0x10915,
    45084767        0x10920, 0x10939,
     
    45234782        0x10b80, 0x10b91,
    45244783        0x10c00, 0x10c48,
     4784        0x10c80, 0x10cb2,
     4785        0x10cc0, 0x10cf2,
    45254786        0x11000, 0x11045,
    45264787        0x11066, 0x1106f,
     
    45354796        0x111c1, 0x111c4,
    45364797        0x111d0, 0x111da,
     4798        0x111dc, 0x111dc,
    45374799        0x11200, 0x11211,
    45384800        0x11213, 0x11234,
    45394801        0x11237, 0x11237,
     4802        0x1123e, 0x1123e,
     4803        0x11280, 0x11286,
     4804        0x11288, 0x11288,
     4805        0x1128a, 0x1128d,
     4806        0x1128f, 0x1129d,
     4807        0x1129f, 0x112a8,
    45404808        0x112b0, 0x112e8,
    45414809        0x112f0, 0x112f9,
    4542         0x11301, 0x11303,
     4810        0x11300, 0x11303,
    45434811        0x11305, 0x1130c,
    45444812        0x1130f, 0x11310,
     
    45504818        0x11347, 0x11348,
    45514819        0x1134b, 0x1134c,
     4820        0x11350, 0x11350,
    45524821        0x11357, 0x11357,
    45534822        0x1135d, 0x11363,
     4823        0x11400, 0x11441,
     4824        0x11443, 0x11445,
     4825        0x11447, 0x1144a,
     4826        0x11450, 0x11459,
    45544827        0x11480, 0x114c1,
    45554828        0x114c4, 0x114c5,
     
    45584831        0x11580, 0x115b5,
    45594832        0x115b8, 0x115be,
     4833        0x115d8, 0x115dd,
    45604834        0x11600, 0x1163e,
    45614835        0x11640, 0x11640,
     
    45644838        0x11680, 0x116b5,
    45654839        0x116c0, 0x116c9,
     4840        0x11700, 0x11719,
     4841        0x1171d, 0x1172a,
     4842        0x11730, 0x11739,
    45664843        0x118a0, 0x118e9,
    45674844        0x118ff, 0x118ff,
     4845        0x11a00, 0x11a32,
     4846        0x11a35, 0x11a3e,
     4847        0x11a50, 0x11a83,
     4848        0x11a86, 0x11a97,
    45684849        0x11ac0, 0x11af8,
    4569         0x12000, 0x12398,
     4850        0x11c00, 0x11c08,
     4851        0x11c0a, 0x11c36,
     4852        0x11c38, 0x11c3e,
     4853        0x11c40, 0x11c40,
     4854        0x11c50, 0x11c59,
     4855        0x11c72, 0x11c8f,
     4856        0x11c92, 0x11ca7,
     4857        0x11ca9, 0x11cb6,
     4858        0x11d00, 0x11d06,
     4859        0x11d08, 0x11d09,
     4860        0x11d0b, 0x11d36,
     4861        0x11d3a, 0x11d3a,
     4862        0x11d3c, 0x11d3d,
     4863        0x11d3f, 0x11d41,
     4864        0x11d43, 0x11d43,
     4865        0x11d46, 0x11d47,
     4866        0x11d50, 0x11d59,
     4867        0x12000, 0x12399,
    45704868        0x12400, 0x1246e,
     4869        0x12480, 0x12543,
    45714870        0x13000, 0x1342e,
     4871        0x14400, 0x14646,
    45724872        0x16800, 0x16a38,
    45734873        0x16a40, 0x16a5e,
     
    45824882        0x16f50, 0x16f7e,
    45834883        0x16f93, 0x16f9f,
    4584         0x1b000, 0x1b001,
     4884        0x16fe0, 0x16fe1,
     4885        0x17000, 0x187ec,
     4886        0x18800, 0x18af2,
     4887        0x1b000, 0x1b11e,
     4888        0x1b170, 0x1b2fb,
    45854889        0x1bc00, 0x1bc6a,
    45864890        0x1bc70, 0x1bc7c,
     
    46194923        0x1d7c4, 0x1d7cb,
    46204924        0x1d7ce, 0x1d7ff,
     4925        0x1e000, 0x1e006,
     4926        0x1e008, 0x1e018,
     4927        0x1e01b, 0x1e021,
     4928        0x1e023, 0x1e024,
     4929        0x1e026, 0x1e02a,
    46214930        0x1e800, 0x1e8c4,
     4931        0x1e900, 0x1e943,
     4932        0x1e947, 0x1e947,
     4933        0x1e950, 0x1e959,
    46224934        0x1ee00, 0x1ee03,
    46234935        0x1ee05, 0x1ee1f,
     
    46594971        0x2a700, 0x2b734,
    46604972        0x2b740, 0x2b81d,
     4973        0x2b820, 0x2cea1,
     4974        0x2ceb0, 0x2ebe0,
    46614975        0x2f800, 0x2fa1d,
    46624976}; /* CR_Alnum */
     
    46674981        0x0000, 0x007f,
    46684982}; /* CR_ASCII */
     4983
     4984/* 'Punct' */
     4985static const OnigCodePoint CR_Punct[] = {
     4986        172,
     4987        0x0021, 0x0023,
     4988        0x0025, 0x002a,
     4989        0x002c, 0x002f,
     4990        0x003a, 0x003b,
     4991        0x003f, 0x0040,
     4992        0x005b, 0x005d,
     4993        0x005f, 0x005f,
     4994        0x007b, 0x007b,
     4995        0x007d, 0x007d,
     4996        0x00a1, 0x00a1,
     4997        0x00a7, 0x00a7,
     4998        0x00ab, 0x00ab,
     4999        0x00b6, 0x00b7,
     5000        0x00bb, 0x00bb,
     5001        0x00bf, 0x00bf,
     5002        0x037e, 0x037e,
     5003        0x0387, 0x0387,
     5004        0x055a, 0x055f,
     5005        0x0589, 0x058a,
     5006        0x05be, 0x05be,
     5007        0x05c0, 0x05c0,
     5008        0x05c3, 0x05c3,
     5009        0x05c6, 0x05c6,
     5010        0x05f3, 0x05f4,
     5011        0x0609, 0x060a,
     5012        0x060c, 0x060d,
     5013        0x061b, 0x061b,
     5014        0x061e, 0x061f,
     5015        0x066a, 0x066d,
     5016        0x06d4, 0x06d4,
     5017        0x0700, 0x070d,
     5018        0x07f7, 0x07f9,
     5019        0x0830, 0x083e,
     5020        0x085e, 0x085e,
     5021        0x0964, 0x0965,
     5022        0x0970, 0x0970,
     5023        0x09fd, 0x09fd,
     5024        0x0af0, 0x0af0,
     5025        0x0df4, 0x0df4,
     5026        0x0e4f, 0x0e4f,
     5027        0x0e5a, 0x0e5b,
     5028        0x0f04, 0x0f12,
     5029        0x0f14, 0x0f14,
     5030        0x0f3a, 0x0f3d,
     5031        0x0f85, 0x0f85,
     5032        0x0fd0, 0x0fd4,
     5033        0x0fd9, 0x0fda,
     5034        0x104a, 0x104f,
     5035        0x10fb, 0x10fb,
     5036        0x1360, 0x1368,
     5037        0x1400, 0x1400,
     5038        0x166d, 0x166e,
     5039        0x169b, 0x169c,
     5040        0x16eb, 0x16ed,
     5041        0x1735, 0x1736,
     5042        0x17d4, 0x17d6,
     5043        0x17d8, 0x17da,
     5044        0x1800, 0x180a,
     5045        0x1944, 0x1945,
     5046        0x1a1e, 0x1a1f,
     5047        0x1aa0, 0x1aa6,
     5048        0x1aa8, 0x1aad,
     5049        0x1b5a, 0x1b60,
     5050        0x1bfc, 0x1bff,
     5051        0x1c3b, 0x1c3f,
     5052        0x1c7e, 0x1c7f,
     5053        0x1cc0, 0x1cc7,
     5054        0x1cd3, 0x1cd3,
     5055        0x2010, 0x2027,
     5056        0x2030, 0x2043,
     5057        0x2045, 0x2051,
     5058        0x2053, 0x205e,
     5059        0x207d, 0x207e,
     5060        0x208d, 0x208e,
     5061        0x2308, 0x230b,
     5062        0x2329, 0x232a,
     5063        0x2768, 0x2775,
     5064        0x27c5, 0x27c6,
     5065        0x27e6, 0x27ef,
     5066        0x2983, 0x2998,
     5067        0x29d8, 0x29db,
     5068        0x29fc, 0x29fd,
     5069        0x2cf9, 0x2cfc,
     5070        0x2cfe, 0x2cff,
     5071        0x2d70, 0x2d70,
     5072        0x2e00, 0x2e2e,
     5073        0x2e30, 0x2e49,
     5074        0x3001, 0x3003,
     5075        0x3008, 0x3011,
     5076        0x3014, 0x301f,
     5077        0x3030, 0x3030,
     5078        0x303d, 0x303d,
     5079        0x30a0, 0x30a0,
     5080        0x30fb, 0x30fb,
     5081        0xa4fe, 0xa4ff,
     5082        0xa60d, 0xa60f,
     5083        0xa673, 0xa673,
     5084        0xa67e, 0xa67e,
     5085        0xa6f2, 0xa6f7,
     5086        0xa874, 0xa877,
     5087        0xa8ce, 0xa8cf,
     5088        0xa8f8, 0xa8fa,
     5089        0xa8fc, 0xa8fc,
     5090        0xa92e, 0xa92f,
     5091        0xa95f, 0xa95f,
     5092        0xa9c1, 0xa9cd,
     5093        0xa9de, 0xa9df,
     5094        0xaa5c, 0xaa5f,
     5095        0xaade, 0xaadf,
     5096        0xaaf0, 0xaaf1,
     5097        0xabeb, 0xabeb,
     5098        0xfd3e, 0xfd3f,
     5099        0xfe10, 0xfe19,
     5100        0xfe30, 0xfe52,
     5101        0xfe54, 0xfe61,
     5102        0xfe63, 0xfe63,
     5103        0xfe68, 0xfe68,
     5104        0xfe6a, 0xfe6b,
     5105        0xff01, 0xff03,
     5106        0xff05, 0xff0a,
     5107        0xff0c, 0xff0f,
     5108        0xff1a, 0xff1b,
     5109        0xff1f, 0xff20,
     5110        0xff3b, 0xff3d,
     5111        0xff3f, 0xff3f,
     5112        0xff5b, 0xff5b,
     5113        0xff5d, 0xff5d,
     5114        0xff5f, 0xff65,
     5115        0x10100, 0x10102,
     5116        0x1039f, 0x1039f,
     5117        0x103d0, 0x103d0,
     5118        0x1056f, 0x1056f,
     5119        0x10857, 0x10857,
     5120        0x1091f, 0x1091f,
     5121        0x1093f, 0x1093f,
     5122        0x10a50, 0x10a58,
     5123        0x10a7f, 0x10a7f,
     5124        0x10af0, 0x10af6,
     5125        0x10b39, 0x10b3f,
     5126        0x10b99, 0x10b9c,
     5127        0x11047, 0x1104d,
     5128        0x110bb, 0x110bc,
     5129        0x110be, 0x110c1,
     5130        0x11140, 0x11143,
     5131        0x11174, 0x11175,
     5132        0x111c5, 0x111c9,
     5133        0x111cd, 0x111cd,
     5134        0x111db, 0x111db,
     5135        0x111dd, 0x111df,
     5136        0x11238, 0x1123d,
     5137        0x112a9, 0x112a9,
     5138        0x1144b, 0x1144f,
     5139        0x1145b, 0x1145b,
     5140        0x1145d, 0x1145d,
     5141        0x114c6, 0x114c6,
     5142        0x115c1, 0x115d7,
     5143        0x11641, 0x11643,
     5144        0x11660, 0x1166c,
     5145        0x1173c, 0x1173e,
     5146        0x11a3f, 0x11a46,
     5147        0x11a9a, 0x11a9c,
     5148        0x11a9e, 0x11aa2,
     5149        0x11c41, 0x11c45,
     5150        0x11c70, 0x11c71,
     5151        0x12470, 0x12474,
     5152        0x16a6e, 0x16a6f,
     5153        0x16af5, 0x16af5,
     5154        0x16b37, 0x16b3b,
     5155        0x16b44, 0x16b44,
     5156        0x1bc9f, 0x1bc9f,
     5157        0x1da87, 0x1da8b,
     5158        0x1e95e, 0x1e95f,
     5159}; /* CR_Punct */
    46695160
    46705161#ifdef USE_UNICODE_PROPERTIES
     
    46775168/* 'Assigned': - */
    46785169static const OnigCodePoint CR_Assigned[] = {
    4679         600,
     5170        649,
    46805171        0x0000, 0x0377,
    46815172        0x037a, 0x037f,
     
    47015192        0x0840, 0x085b,
    47025193        0x085e, 0x085e,
    4703         0x08a0, 0x08b2,
    4704         0x08e4, 0x0983,
     5194        0x0860, 0x086a,
     5195        0x08a0, 0x08b4,
     5196        0x08b6, 0x08bd,
     5197        0x08d4, 0x0983,
    47055198        0x0985, 0x098c,
    47065199        0x098f, 0x0990,
     
    47155208        0x09dc, 0x09dd,
    47165209        0x09df, 0x09e3,
    4717         0x09e6, 0x09fb,
     5210        0x09e6, 0x09fd,
    47185211        0x0a01, 0x0a03,
    47195212        0x0a05, 0x0a0a,
     
    47455238        0x0ae0, 0x0ae3,
    47465239        0x0ae6, 0x0af1,
     5240        0x0af9, 0x0aff,
    47475241        0x0b01, 0x0b03,
    47485242        0x0b05, 0x0b0c,
     
    47845278        0x0c4a, 0x0c4d,
    47855279        0x0c55, 0x0c56,
    4786         0x0c58, 0x0c59,
     5280        0x0c58, 0x0c5a,
    47875281        0x0c60, 0x0c63,
    47885282        0x0c66, 0x0c6f,
    4789         0x0c78, 0x0c7f,
    4790         0x0c81, 0x0c83,
     5283        0x0c78, 0x0c83,
    47915284        0x0c85, 0x0c8c,
    47925285        0x0c8e, 0x0c90,
     
    48025295        0x0ce6, 0x0cef,
    48035296        0x0cf1, 0x0cf2,
    4804         0x0d01, 0x0d03,
     5297        0x0d00, 0x0d03,
    48055298        0x0d05, 0x0d0c,
    48065299        0x0d0e, 0x0d10,
    4807         0x0d12, 0x0d3a,
    4808         0x0d3d, 0x0d44,
     5300        0x0d12, 0x0d44,
    48095301        0x0d46, 0x0d48,
    4810         0x0d4a, 0x0d4e,
    4811         0x0d57, 0x0d57,
    4812         0x0d60, 0x0d63,
    4813         0x0d66, 0x0d75,
    4814         0x0d79, 0x0d7f,
     5302        0x0d4a, 0x0d4f,
     5303        0x0d54, 0x0d63,
     5304        0x0d66, 0x0d7f,
    48155305        0x0d82, 0x0d83,
    48165306        0x0d85, 0x0d96,
     
    48725362        0x135d, 0x137c,
    48735363        0x1380, 0x1399,
    4874         0x13a0, 0x13f4,
     5364        0x13a0, 0x13f5,
     5365        0x13f8, 0x13fd,
    48755366        0x1400, 0x169c,
    48765367        0x16a0, 0x16f8,
     
    49115402        0x1bfc, 0x1c37,
    49125403        0x1c3b, 0x1c49,
    4913         0x1c4d, 0x1c7f,
     5404        0x1c4d, 0x1c88,
    49145405        0x1cc0, 0x1cc7,
    4915         0x1cd0, 0x1cf6,
    4916         0x1cf8, 0x1cf9,
    4917         0x1d00, 0x1df5,
    4918         0x1dfc, 0x1f15,
     5406        0x1cd0, 0x1cf9,
     5407        0x1d00, 0x1df9,
     5408        0x1dfb, 0x1f15,
    49195409        0x1f18, 0x1f1d,
    49205410        0x1f20, 0x1f45,
     
    49365426        0x2074, 0x208e,
    49375427        0x2090, 0x209c,
    4938         0x20a0, 0x20bd,
     5428        0x20a0, 0x20bf,
    49395429        0x20d0, 0x20f0,
    4940         0x2100, 0x2189,
    4941         0x2190, 0x23fa,
    4942         0x2400, 0x2426,
     5430        0x2100, 0x218b,
     5431        0x2190, 0x2426,
    49435432        0x2440, 0x244a,
    49445433        0x2460, 0x2b73,
     
    49465435        0x2b98, 0x2bb9,
    49475436        0x2bbd, 0x2bc8,
    4948         0x2bca, 0x2bd1,
     5437        0x2bca, 0x2bd2,
     5438        0x2bec, 0x2bef,
    49495439        0x2c00, 0x2c2e,
    49505440        0x2c30, 0x2c5e,
     
    49645454        0x2dd0, 0x2dd6,
    49655455        0x2dd8, 0x2dde,
    4966         0x2de0, 0x2e42,
     5456        0x2de0, 0x2e49,
    49675457        0x2e80, 0x2e99,
    49685458        0x2e9b, 0x2ef3,
     
    49725462        0x3041, 0x3096,
    49735463        0x3099, 0x30ff,
    4974         0x3105, 0x312d,
     5464        0x3105, 0x312e,
    49755465        0x3131, 0x318e,
    49765466        0x3190, 0x31ba,
     
    49795469        0x3220, 0x32fe,
    49805470        0x3300, 0x4db5,
    4981         0x4dc0, 0x9fcc,
     5471        0x4dc0, 0x9fea,
    49825472        0xa000, 0xa48c,
    49835473        0xa490, 0xa4c6,
    49845474        0xa4d0, 0xa62b,
    4985         0xa640, 0xa69d,
    4986         0xa69f, 0xa6f7,
    4987         0xa700, 0xa78e,
    4988         0xa790, 0xa7ad,
    4989         0xa7b0, 0xa7b1,
     5475        0xa640, 0xa6f7,
     5476        0xa700, 0xa7ae,
     5477        0xa7b0, 0xa7b7,
    49905478        0xa7f7, 0xa82b,
    49915479        0xa830, 0xa839,
    49925480        0xa840, 0xa877,
    4993         0xa880, 0xa8c4,
     5481        0xa880, 0xa8c5,
    49945482        0xa8ce, 0xa8d9,
    4995         0xa8e0, 0xa8fb,
     5483        0xa8e0, 0xa8fd,
    49965484        0xa900, 0xa953,
    49975485        0xa95f, 0xa97c,
     
    50095497        0xab20, 0xab26,
    50105498        0xab28, 0xab2e,
    5011         0xab30, 0xab5f,
    5012         0xab64, 0xab65,
    5013         0xabc0, 0xabed,
     5499        0xab30, 0xab65,
     5500        0xab70, 0xabed,
    50145501        0xabf0, 0xabf9,
    50155502        0xac00, 0xd7a3,
     
    50315518        0xfdf0, 0xfdfd,
    50325519        0xfe00, 0xfe19,
    5033         0xfe20, 0xfe2d,
    5034         0xfe30, 0xfe52,
     5520        0xfe20, 0xfe52,
    50355521        0xfe54, 0xfe66,
    50365522        0xfe68, 0xfe6b,
     
    50555541        0x10100, 0x10102,
    50565542        0x10107, 0x10133,
    5057         0x10137, 0x1018c,
     5543        0x10137, 0x1018e,
    50585544        0x10190, 0x1019b,
    50595545        0x101a0, 0x101a0,
     
    50635549        0x102e0, 0x102fb,
    50645550        0x10300, 0x10323,
    5065         0x10330, 0x1034a,
     5551        0x1032d, 0x1034a,
    50665552        0x10350, 0x1037a,
    50675553        0x10380, 0x1039d,
     
    50705556        0x10400, 0x1049d,
    50715557        0x104a0, 0x104a9,
     5558        0x104b0, 0x104d3,
     5559        0x104d8, 0x104fb,
    50725560        0x10500, 0x10527,
    50735561        0x10530, 0x10563,
     
    50845572        0x10857, 0x1089e,
    50855573        0x108a7, 0x108af,
    5086         0x10900, 0x1091b,
     5574        0x108e0, 0x108f2,
     5575        0x108f4, 0x108f5,
     5576        0x108fb, 0x1091b,
    50875577        0x1091f, 0x10939,
    50885578        0x1093f, 0x1093f,
    50895579        0x10980, 0x109b7,
    5090         0x109be, 0x109bf,
    5091         0x10a00, 0x10a03,
     5580        0x109bc, 0x109cf,
     5581        0x109d2, 0x10a03,
    50925582        0x10a05, 0x10a06,
    50935583        0x10a0c, 0x10a13,
     
    51075597        0x10ba9, 0x10baf,
    51085598        0x10c00, 0x10c48,
     5599        0x10c80, 0x10cb2,
     5600        0x10cc0, 0x10cf2,
     5601        0x10cfa, 0x10cff,
    51095602        0x10e60, 0x10e7e,
    51105603        0x11000, 0x1104d,
     
    51165609        0x11136, 0x11143,
    51175610        0x11150, 0x11176,
    5118         0x11180, 0x111c8,
    5119         0x111cd, 0x111cd,
    5120         0x111d0, 0x111da,
     5611        0x11180, 0x111cd,
     5612        0x111d0, 0x111df,
    51215613        0x111e1, 0x111f4,
    51225614        0x11200, 0x11211,
    5123         0x11213, 0x1123d,
     5615        0x11213, 0x1123e,
     5616        0x11280, 0x11286,
     5617        0x11288, 0x11288,
     5618        0x1128a, 0x1128d,
     5619        0x1128f, 0x1129d,
     5620        0x1129f, 0x112a9,
    51245621        0x112b0, 0x112ea,
    51255622        0x112f0, 0x112f9,
    5126         0x11301, 0x11303,
     5623        0x11300, 0x11303,
    51275624        0x11305, 0x1130c,
    51285625        0x1130f, 0x11310,
     
    51345631        0x11347, 0x11348,
    51355632        0x1134b, 0x1134d,
     5633        0x11350, 0x11350,
    51365634        0x11357, 0x11357,
    51375635        0x1135d, 0x11363,
    51385636        0x11366, 0x1136c,
    51395637        0x11370, 0x11374,
     5638        0x11400, 0x11459,
     5639        0x1145b, 0x1145b,
     5640        0x1145d, 0x1145d,
    51405641        0x11480, 0x114c7,
    51415642        0x114d0, 0x114d9,
    51425643        0x11580, 0x115b5,
    5143         0x115b8, 0x115c9,
     5644        0x115b8, 0x115dd,
    51445645        0x11600, 0x11644,
    51455646        0x11650, 0x11659,
     5647        0x11660, 0x1166c,
    51465648        0x11680, 0x116b7,
    51475649        0x116c0, 0x116c9,
     5650        0x11700, 0x11719,
     5651        0x1171d, 0x1172b,
     5652        0x11730, 0x1173f,
    51485653        0x118a0, 0x118f2,
    51495654        0x118ff, 0x118ff,
     5655        0x11a00, 0x11a47,
     5656        0x11a50, 0x11a83,
     5657        0x11a86, 0x11a9c,
     5658        0x11a9e, 0x11aa2,
    51505659        0x11ac0, 0x11af8,
    5151         0x12000, 0x12398,
     5660        0x11c00, 0x11c08,
     5661        0x11c0a, 0x11c36,
     5662        0x11c38, 0x11c45,
     5663        0x11c50, 0x11c6c,
     5664        0x11c70, 0x11c8f,
     5665        0x11c92, 0x11ca7,
     5666        0x11ca9, 0x11cb6,
     5667        0x11d00, 0x11d06,
     5668        0x11d08, 0x11d09,
     5669        0x11d0b, 0x11d36,
     5670        0x11d3a, 0x11d3a,
     5671        0x11d3c, 0x11d3d,
     5672        0x11d3f, 0x11d47,
     5673        0x11d50, 0x11d59,
     5674        0x12000, 0x12399,
    51525675        0x12400, 0x1246e,
    51535676        0x12470, 0x12474,
     5677        0x12480, 0x12543,
    51545678        0x13000, 0x1342e,
     5679        0x14400, 0x14646,
    51555680        0x16800, 0x16a38,
    51565681        0x16a40, 0x16a5e,
     
    51675692        0x16f50, 0x16f7e,
    51685693        0x16f8f, 0x16f9f,
    5169         0x1b000, 0x1b001,
     5694        0x16fe0, 0x16fe1,
     5695        0x17000, 0x187ec,
     5696        0x18800, 0x18af2,
     5697        0x1b000, 0x1b11e,
     5698        0x1b170, 0x1b2fb,
    51705699        0x1bc00, 0x1bc6a,
    51715700        0x1bc70, 0x1bc7c,
     
    51755704        0x1d000, 0x1d0f5,
    51765705        0x1d100, 0x1d126,
    5177         0x1d129, 0x1d1dd,
     5706        0x1d129, 0x1d1e8,
    51785707        0x1d200, 0x1d245,
    51795708        0x1d300, 0x1d356,
     
    51995728        0x1d552, 0x1d6a5,
    52005729        0x1d6a8, 0x1d7cb,
    5201         0x1d7ce, 0x1d7ff,
     5730        0x1d7ce, 0x1da8b,
     5731        0x1da9b, 0x1da9f,
     5732        0x1daa1, 0x1daaf,
     5733        0x1e000, 0x1e006,
     5734        0x1e008, 0x1e018,
     5735        0x1e01b, 0x1e021,
     5736        0x1e023, 0x1e024,
     5737        0x1e026, 0x1e02a,
    52025738        0x1e800, 0x1e8c4,
    52035739        0x1e8c7, 0x1e8d6,
     5740        0x1e900, 0x1e94a,
     5741        0x1e950, 0x1e959,
     5742        0x1e95e, 0x1e95f,
    52045743        0x1ee00, 0x1ee03,
    52055744        0x1ee05, 0x1ee1f,
     
    52455784        0x1f110, 0x1f12e,
    52465785        0x1f130, 0x1f16b,
    5247         0x1f170, 0x1f19a,
     5786        0x1f170, 0x1f1ac,
    52485787        0x1f1e6, 0x1f202,
    5249         0x1f210, 0x1f23a,
     5788        0x1f210, 0x1f23b,
    52505789        0x1f240, 0x1f248,
    52515790        0x1f250, 0x1f251,
    5252         0x1f300, 0x1f32c,
    5253         0x1f330, 0x1f37d,
    5254         0x1f380, 0x1f3ce,
    5255         0x1f3d4, 0x1f3f7,
    5256         0x1f400, 0x1f4fe,
    5257         0x1f500, 0x1f54a,
    5258         0x1f550, 0x1f579,
    5259         0x1f57b, 0x1f5a3,
    5260         0x1f5a5, 0x1f642,
    5261         0x1f645, 0x1f6cf,
     5791        0x1f260, 0x1f265,
     5792        0x1f300, 0x1f6d4,
    52625793        0x1f6e0, 0x1f6ec,
    5263         0x1f6f0, 0x1f6f3,
     5794        0x1f6f0, 0x1f6f8,
    52645795        0x1f700, 0x1f773,
    52655796        0x1f780, 0x1f7d4,
     
    52695800        0x1f860, 0x1f887,
    52705801        0x1f890, 0x1f8ad,
     5802        0x1f900, 0x1f90b,
     5803        0x1f910, 0x1f93e,
     5804        0x1f940, 0x1f94c,
     5805        0x1f950, 0x1f96b,
     5806        0x1f980, 0x1f997,
     5807        0x1f9c0, 0x1f9c0,
     5808        0x1f9d0, 0x1f9e6,
    52715809        0x20000, 0x2a6d6,
    52725810        0x2a700, 0x2b734,
    52735811        0x2b740, 0x2b81d,
     5812        0x2b820, 0x2cea1,
     5813        0x2ceb0, 0x2ebe0,
    52745814        0x2f800, 0x2fa1d,
    52755815        0xe0001, 0xe0001,
     
    52825822/* 'C': Major Category */
    52835823static const OnigCodePoint CR_C[] = {
    5284         603,
     5824        653,
    52855825        0x0000, 0x001f,
    52865826        0x007f, 0x009f,
     
    53095849        0x083f, 0x083f,
    53105850        0x085c, 0x085d,
    5311         0x085f, 0x089f,
    5312         0x08b3, 0x08e3,
     5851        0x085f, 0x085f,
     5852        0x086b, 0x089f,
     5853        0x08b5, 0x08b5,
     5854        0x08be, 0x08d3,
     5855        0x08e2, 0x08e2,
    53135856        0x0984, 0x0984,
    53145857        0x098d, 0x098e,
     
    53245867        0x09de, 0x09de,
    53255868        0x09e4, 0x09e5,
    5326         0x09fc, 0x0a00,
     5869        0x09fe, 0x0a00,
    53275870        0x0a04, 0x0a04,
    53285871        0x0a0b, 0x0a0e,
     
    53535896        0x0ad1, 0x0adf,
    53545897        0x0ae4, 0x0ae5,
    5355         0x0af2, 0x0b00,
     5898        0x0af2, 0x0af8,
     5899        0x0b00, 0x0b00,
    53565900        0x0b04, 0x0b04,
    53575901        0x0b0d, 0x0b0e,
     
    53935937        0x0c4e, 0x0c54,
    53945938        0x0c57, 0x0c57,
    5395         0x0c5a, 0x0c5f,
     5939        0x0c5b, 0x0c5f,
    53965940        0x0c64, 0x0c65,
    53975941        0x0c70, 0x0c77,
    5398         0x0c80, 0x0c80,
    53995942        0x0c84, 0x0c84,
    54005943        0x0c8d, 0x0c8d,
     
    54105953        0x0ce4, 0x0ce5,
    54115954        0x0cf0, 0x0cf0,
    5412         0x0cf3, 0x0d00,
     5955        0x0cf3, 0x0cff,
    54135956        0x0d04, 0x0d04,
    54145957        0x0d0d, 0x0d0d,
    54155958        0x0d11, 0x0d11,
    5416         0x0d3b, 0x0d3c,
    54175959        0x0d45, 0x0d45,
    54185960        0x0d49, 0x0d49,
    5419         0x0d4f, 0x0d56,
    5420         0x0d58, 0x0d5f,
     5961        0x0d50, 0x0d53,
    54215962        0x0d64, 0x0d65,
    5422         0x0d76, 0x0d78,
    54235963        0x0d80, 0x0d81,
    54245964        0x0d84, 0x0d84,
     
    54816021        0x137d, 0x137f,
    54826022        0x139a, 0x139f,
    5483         0x13f5, 0x13ff,
     6023        0x13f6, 0x13f7,
     6024        0x13fe, 0x13ff,
    54846025        0x169d, 0x169f,
    54856026        0x16f9, 0x16ff,
     
    55206061        0x1c38, 0x1c3a,
    55216062        0x1c4a, 0x1c4c,
    5522         0x1c80, 0x1cbf,
     6063        0x1c89, 0x1cbf,
    55236064        0x1cc8, 0x1ccf,
    5524         0x1cf7, 0x1cf7,
    55256065        0x1cfa, 0x1cff,
    5526         0x1df6, 0x1dfb,
     6066        0x1dfa, 0x1dfa,
    55276067        0x1f16, 0x1f17,
    55286068        0x1f1e, 0x1f1f,
     
    55476087        0x208f, 0x208f,
    55486088        0x209d, 0x209f,
    5549         0x20be, 0x20cf,
     6089        0x20c0, 0x20cf,
    55506090        0x20f1, 0x20ff,
    5551         0x218a, 0x218f,
    5552         0x23fb, 0x23ff,
     6091        0x218c, 0x218f,
    55536092        0x2427, 0x243f,
    55546093        0x244b, 0x245f,
     
    55576096        0x2bba, 0x2bbc,
    55586097        0x2bc9, 0x2bc9,
    5559         0x2bd2, 0x2bff,
     6098        0x2bd3, 0x2beb,
     6099        0x2bf0, 0x2bff,
    55606100        0x2c2f, 0x2c2f,
    55616101        0x2c5f, 0x2c5f,
     
    55756115        0x2dd7, 0x2dd7,
    55766116        0x2ddf, 0x2ddf,
    5577         0x2e43, 0x2e7f,
     6117        0x2e4a, 0x2e7f,
    55786118        0x2e9a, 0x2e9a,
    55796119        0x2ef4, 0x2eff,
     
    55836123        0x3097, 0x3098,
    55846124        0x3100, 0x3104,
    5585         0x312e, 0x3130,
     6125        0x312f, 0x3130,
    55866126        0x318f, 0x318f,
    55876127        0x31bb, 0x31bf,
     
    55906130        0x32ff, 0x32ff,
    55916131        0x4db6, 0x4dbf,
    5592         0x9fcd, 0x9fff,
     6132        0x9feb, 0x9fff,
    55936133        0xa48d, 0xa48f,
    55946134        0xa4c7, 0xa4cf,
    55956135        0xa62c, 0xa63f,
    5596         0xa69e, 0xa69e,
    55976136        0xa6f8, 0xa6ff,
    5598         0xa78f, 0xa78f,
    5599         0xa7ae, 0xa7af,
    5600         0xa7b2, 0xa7f6,
     6137        0xa7af, 0xa7af,
     6138        0xa7b8, 0xa7f6,
    56016139        0xa82c, 0xa82f,
    56026140        0xa83a, 0xa83f,
    56036141        0xa878, 0xa87f,
    5604         0xa8c5, 0xa8cd,
     6142        0xa8c6, 0xa8cd,
    56056143        0xa8da, 0xa8df,
    5606         0xa8fc, 0xa8ff,
     6144        0xa8fe, 0xa8ff,
    56076145        0xa954, 0xa95e,
    56086146        0xa97d, 0xa97f,
     
    56206158        0xab27, 0xab27,
    56216159        0xab2f, 0xab2f,
    5622         0xab60, 0xab63,
    5623         0xab66, 0xabbf,
     6160        0xab66, 0xab6f,
    56246161        0xabee, 0xabef,
    56256162        0xabfa, 0xabff,
     
    56426179        0xfdfe, 0xfdff,
    56436180        0xfe1a, 0xfe1f,
    5644         0xfe2e, 0xfe2f,
    56456181        0xfe53, 0xfe53,
    56466182        0xfe67, 0xfe67,
     
    56656201        0x10103, 0x10106,
    56666202        0x10134, 0x10136,
    5667         0x1018d, 0x1018f,
     6203        0x1018f, 0x1018f,
    56686204        0x1019c, 0x1019f,
    56696205        0x101a1, 0x101cf,
     
    56726208        0x102d1, 0x102df,
    56736209        0x102fc, 0x102ff,
    5674         0x10324, 0x1032f,
     6210        0x10324, 0x1032c,
    56756211        0x1034b, 0x1034f,
    56766212        0x1037b, 0x1037f,
     
    56796215        0x103d6, 0x103ff,
    56806216        0x1049e, 0x1049f,
    5681         0x104aa, 0x104ff,
     6217        0x104aa, 0x104af,
     6218        0x104d4, 0x104d7,
     6219        0x104fc, 0x104ff,
    56826220        0x10528, 0x1052f,
    56836221        0x10564, 0x1056e,
     
    56936231        0x10856, 0x10856,
    56946232        0x1089f, 0x108a6,
    5695         0x108b0, 0x108ff,
     6233        0x108b0, 0x108df,
     6234        0x108f3, 0x108f3,
     6235        0x108f6, 0x108fa,
    56966236        0x1091c, 0x1091e,
    56976237        0x1093a, 0x1093e,
    56986238        0x10940, 0x1097f,
    5699         0x109b8, 0x109bd,
    5700         0x109c0, 0x109ff,
     6239        0x109b8, 0x109bb,
     6240        0x109d0, 0x109d1,
    57016241        0x10a04, 0x10a04,
    57026242        0x10a07, 0x10a0b,
     
    57166256        0x10b9d, 0x10ba8,
    57176257        0x10bb0, 0x10bff,
    5718         0x10c49, 0x10e5f,
     6258        0x10c49, 0x10c7f,
     6259        0x10cb3, 0x10cbf,
     6260        0x10cf3, 0x10cf9,
     6261        0x10d00, 0x10e5f,
    57196262        0x10e7f, 0x10fff,
    57206263        0x1104e, 0x11051,
     
    57276270        0x11144, 0x1114f,
    57286271        0x11177, 0x1117f,
    5729         0x111c9, 0x111cc,
    57306272        0x111ce, 0x111cf,
    5731         0x111db, 0x111e0,
     6273        0x111e0, 0x111e0,
    57326274        0x111f5, 0x111ff,
    57336275        0x11212, 0x11212,
    5734         0x1123e, 0x112af,
     6276        0x1123f, 0x1127f,
     6277        0x11287, 0x11287,
     6278        0x11289, 0x11289,
     6279        0x1128e, 0x1128e,
     6280        0x1129e, 0x1129e,
     6281        0x112aa, 0x112af,
    57356282        0x112eb, 0x112ef,
    5736         0x112fa, 0x11300,
     6283        0x112fa, 0x112ff,
    57376284        0x11304, 0x11304,
    57386285        0x1130d, 0x1130e,
     
    57446291        0x11345, 0x11346,
    57456292        0x11349, 0x1134a,
    5746         0x1134e, 0x11356,
     6293        0x1134e, 0x1134f,
     6294        0x11351, 0x11356,
    57476295        0x11358, 0x1135c,
    57486296        0x11364, 0x11365,
    57496297        0x1136d, 0x1136f,
    5750         0x11375, 0x1147f,
     6298        0x11375, 0x113ff,
     6299        0x1145a, 0x1145a,
     6300        0x1145c, 0x1145c,
     6301        0x1145e, 0x1147f,
    57516302        0x114c8, 0x114cf,
    57526303        0x114da, 0x1157f,
    57536304        0x115b6, 0x115b7,
    5754         0x115ca, 0x115ff,
     6305        0x115de, 0x115ff,
    57556306        0x11645, 0x1164f,
    5756         0x1165a, 0x1167f,
     6307        0x1165a, 0x1165f,
     6308        0x1166d, 0x1167f,
    57576309        0x116b8, 0x116bf,
    5758         0x116ca, 0x1189f,
     6310        0x116ca, 0x116ff,
     6311        0x1171a, 0x1171c,
     6312        0x1172c, 0x1172f,
     6313        0x11740, 0x1189f,
    57596314        0x118f3, 0x118fe,
    5760         0x11900, 0x11abf,
    5761         0x11af9, 0x11fff,
    5762         0x12399, 0x123ff,
     6315        0x11900, 0x119ff,
     6316        0x11a48, 0x11a4f,
     6317        0x11a84, 0x11a85,
     6318        0x11a9d, 0x11a9d,
     6319        0x11aa3, 0x11abf,
     6320        0x11af9, 0x11bff,
     6321        0x11c09, 0x11c09,
     6322        0x11c37, 0x11c37,
     6323        0x11c46, 0x11c4f,
     6324        0x11c6d, 0x11c6f,
     6325        0x11c90, 0x11c91,
     6326        0x11ca8, 0x11ca8,
     6327        0x11cb7, 0x11cff,
     6328        0x11d07, 0x11d07,
     6329        0x11d0a, 0x11d0a,
     6330        0x11d37, 0x11d39,
     6331        0x11d3b, 0x11d3b,
     6332        0x11d3e, 0x11d3e,
     6333        0x11d48, 0x11d4f,
     6334        0x11d5a, 0x11fff,
     6335        0x1239a, 0x123ff,
    57636336        0x1246f, 0x1246f,
    5764         0x12475, 0x12fff,
    5765         0x1342f, 0x167ff,
     6337        0x12475, 0x1247f,
     6338        0x12544, 0x12fff,
     6339        0x1342f, 0x143ff,
     6340        0x14647, 0x167ff,
    57666341        0x16a39, 0x16a3f,
    57676342        0x16a5f, 0x16a5f,
     
    57776352        0x16f45, 0x16f4f,
    57786353        0x16f7f, 0x16f8e,
    5779         0x16fa0, 0x1afff,
    5780         0x1b002, 0x1bbff,
     6354        0x16fa0, 0x16fdf,
     6355        0x16fe2, 0x16fff,
     6356        0x187ed, 0x187ff,
     6357        0x18af3, 0x1afff,
     6358        0x1b11f, 0x1b16f,
     6359        0x1b2fc, 0x1bbff,
    57816360        0x1bc6b, 0x1bc6f,
    57826361        0x1bc7d, 0x1bc7f,
     
    57876366        0x1d127, 0x1d128,
    57886367        0x1d173, 0x1d17a,
    5789         0x1d1de, 0x1d1ff,
     6368        0x1d1e9, 0x1d1ff,
    57906369        0x1d246, 0x1d2ff,
    57916370        0x1d357, 0x1d35f,
     
    58116390        0x1d6a6, 0x1d6a7,
    58126391        0x1d7cc, 0x1d7cd,
    5813         0x1d800, 0x1e7ff,
     6392        0x1da8c, 0x1da9a,
     6393        0x1daa0, 0x1daa0,
     6394        0x1dab0, 0x1dfff,
     6395        0x1e007, 0x1e007,
     6396        0x1e019, 0x1e01a,
     6397        0x1e022, 0x1e022,
     6398        0x1e025, 0x1e025,
     6399        0x1e02b, 0x1e7ff,
    58146400        0x1e8c5, 0x1e8c6,
    5815         0x1e8d7, 0x1edff,
     6401        0x1e8d7, 0x1e8ff,
     6402        0x1e94b, 0x1e94f,
     6403        0x1e95a, 0x1e95d,
     6404        0x1e960, 0x1edff,
    58166405        0x1ee04, 0x1ee04,
    58176406        0x1ee20, 0x1ee20,
     
    58576446        0x1f12f, 0x1f12f,
    58586447        0x1f16c, 0x1f16f,
    5859         0x1f19b, 0x1f1e5,
     6448        0x1f1ad, 0x1f1e5,
    58606449        0x1f203, 0x1f20f,
    5861         0x1f23b, 0x1f23f,
     6450        0x1f23c, 0x1f23f,
    58626451        0x1f249, 0x1f24f,
    5863         0x1f252, 0x1f2ff,
    5864         0x1f32d, 0x1f32f,
    5865         0x1f37e, 0x1f37f,
    5866         0x1f3cf, 0x1f3d3,
    5867         0x1f3f8, 0x1f3ff,
    5868         0x1f4ff, 0x1f4ff,
    5869         0x1f54b, 0x1f54f,
    5870         0x1f57a, 0x1f57a,
    5871         0x1f5a4, 0x1f5a4,
    5872         0x1f643, 0x1f644,
    5873         0x1f6d0, 0x1f6df,
     6452        0x1f252, 0x1f25f,
     6453        0x1f266, 0x1f2ff,
     6454        0x1f6d5, 0x1f6df,
    58746455        0x1f6ed, 0x1f6ef,
    5875         0x1f6f4, 0x1f6ff,
     6456        0x1f6f9, 0x1f6ff,
    58766457        0x1f774, 0x1f77f,
    58776458        0x1f7d5, 0x1f7ff,
     
    58806461        0x1f85a, 0x1f85f,
    58816462        0x1f888, 0x1f88f,
    5882         0x1f8ae, 0x1ffff,
     6463        0x1f8ae, 0x1f8ff,
     6464        0x1f90c, 0x1f90f,
     6465        0x1f93f, 0x1f93f,
     6466        0x1f94d, 0x1f94f,
     6467        0x1f96c, 0x1f97f,
     6468        0x1f998, 0x1f9bf,
     6469        0x1f9c1, 0x1f9cf,
     6470        0x1f9e7, 0x1ffff,
    58836471        0x2a6d7, 0x2a6ff,
    58846472        0x2b735, 0x2b73f,
    5885         0x2b81e, 0x2f7ff,
     6473        0x2b81e, 0x2b81f,
     6474        0x2cea2, 0x2ceaf,
     6475        0x2ebe1, 0x2f7ff,
    58866476        0x2fa1e, 0xe00ff,
    58876477        0xe01f0, 0x10ffff,
     
    58936483/* 'Cf': General Category */
    58946484static const OnigCodePoint CR_Cf[] = {
    5895         17,
     6485        18,
    58966486        0x00ad, 0x00ad,
    58976487        0x0600, 0x0605,
     
    58996489        0x06dd, 0x06dd,
    59006490        0x070f, 0x070f,
     6491        0x08e2, 0x08e2,
    59016492        0x180e, 0x180e,
    59026493        0x200b, 0x200f,
     
    59156506/* 'Cn': General Category */
    59166507static const OnigCodePoint CR_Cn[] = {
    5917         600,
     6508        649,
    59186509        0x0378, 0x0379,
    59196510        0x0380, 0x0383,
     
    59386529        0x083f, 0x083f,
    59396530        0x085c, 0x085d,
    5940         0x085f, 0x089f,
    5941         0x08b3, 0x08e3,
     6531        0x085f, 0x085f,
     6532        0x086b, 0x089f,
     6533        0x08b5, 0x08b5,
     6534        0x08be, 0x08d3,
    59426535        0x0984, 0x0984,
    59436536        0x098d, 0x098e,
     
    59536546        0x09de, 0x09de,
    59546547        0x09e4, 0x09e5,
    5955         0x09fc, 0x0a00,
     6548        0x09fe, 0x0a00,
    59566549        0x0a04, 0x0a04,
    59576550        0x0a0b, 0x0a0e,
     
    59826575        0x0ad1, 0x0adf,
    59836576        0x0ae4, 0x0ae5,
    5984         0x0af2, 0x0b00,
     6577        0x0af2, 0x0af8,
     6578        0x0b00, 0x0b00,
    59856579        0x0b04, 0x0b04,
    59866580        0x0b0d, 0x0b0e,
     
    60226616        0x0c4e, 0x0c54,
    60236617        0x0c57, 0x0c57,
    6024         0x0c5a, 0x0c5f,
     6618        0x0c5b, 0x0c5f,
    60256619        0x0c64, 0x0c65,
    60266620        0x0c70, 0x0c77,
    6027         0x0c80, 0x0c80,
    60286621        0x0c84, 0x0c84,
    60296622        0x0c8d, 0x0c8d,
     
    60396632        0x0ce4, 0x0ce5,
    60406633        0x0cf0, 0x0cf0,
    6041         0x0cf3, 0x0d00,
     6634        0x0cf3, 0x0cff,
    60426635        0x0d04, 0x0d04,
    60436636        0x0d0d, 0x0d0d,
    60446637        0x0d11, 0x0d11,
    6045         0x0d3b, 0x0d3c,
    60466638        0x0d45, 0x0d45,
    60476639        0x0d49, 0x0d49,
    6048         0x0d4f, 0x0d56,
    6049         0x0d58, 0x0d5f,
     6640        0x0d50, 0x0d53,
    60506641        0x0d64, 0x0d65,
    6051         0x0d76, 0x0d78,
    60526642        0x0d80, 0x0d81,
    60536643        0x0d84, 0x0d84,
     
    61106700        0x137d, 0x137f,
    61116701        0x139a, 0x139f,
    6112         0x13f5, 0x13ff,
     6702        0x13f6, 0x13f7,
     6703        0x13fe, 0x13ff,
    61136704        0x169d, 0x169f,
    61146705        0x16f9, 0x16ff,
     
    61496740        0x1c38, 0x1c3a,
    61506741        0x1c4a, 0x1c4c,
    6151         0x1c80, 0x1cbf,
     6742        0x1c89, 0x1cbf,
    61526743        0x1cc8, 0x1ccf,
    6153         0x1cf7, 0x1cf7,
    61546744        0x1cfa, 0x1cff,
    6155         0x1df6, 0x1dfb,
     6745        0x1dfa, 0x1dfa,
    61566746        0x1f16, 0x1f17,
    61576747        0x1f1e, 0x1f1f,
     
    61746764        0x208f, 0x208f,
    61756765        0x209d, 0x209f,
    6176         0x20be, 0x20cf,
     6766        0x20c0, 0x20cf,
    61776767        0x20f1, 0x20ff,
    6178         0x218a, 0x218f,
    6179         0x23fb, 0x23ff,
     6768        0x218c, 0x218f,
    61806769        0x2427, 0x243f,
    61816770        0x244b, 0x245f,
     
    61846773        0x2bba, 0x2bbc,
    61856774        0x2bc9, 0x2bc9,
    6186         0x2bd2, 0x2bff,
     6775        0x2bd3, 0x2beb,
     6776        0x2bf0, 0x2bff,
    61876777        0x2c2f, 0x2c2f,
    61886778        0x2c5f, 0x2c5f,
     
    62026792        0x2dd7, 0x2dd7,
    62036793        0x2ddf, 0x2ddf,
    6204         0x2e43, 0x2e7f,
     6794        0x2e4a, 0x2e7f,
    62056795        0x2e9a, 0x2e9a,
    62066796        0x2ef4, 0x2eff,
     
    62106800        0x3097, 0x3098,
    62116801        0x3100, 0x3104,
    6212         0x312e, 0x3130,
     6802        0x312f, 0x3130,
    62136803        0x318f, 0x318f,
    62146804        0x31bb, 0x31bf,
     
    62176807        0x32ff, 0x32ff,
    62186808        0x4db6, 0x4dbf,
    6219         0x9fcd, 0x9fff,
     6809        0x9feb, 0x9fff,
    62206810        0xa48d, 0xa48f,
    62216811        0xa4c7, 0xa4cf,
    62226812        0xa62c, 0xa63f,
    6223         0xa69e, 0xa69e,
    62246813        0xa6f8, 0xa6ff,
    6225         0xa78f, 0xa78f,
    6226         0xa7ae, 0xa7af,
    6227         0xa7b2, 0xa7f6,
     6814        0xa7af, 0xa7af,
     6815        0xa7b8, 0xa7f6,
    62286816        0xa82c, 0xa82f,
    62296817        0xa83a, 0xa83f,
    62306818        0xa878, 0xa87f,
    6231         0xa8c5, 0xa8cd,
     6819        0xa8c6, 0xa8cd,
    62326820        0xa8da, 0xa8df,
    6233         0xa8fc, 0xa8ff,
     6821        0xa8fe, 0xa8ff,
    62346822        0xa954, 0xa95e,
    62356823        0xa97d, 0xa97f,
     
    62476835        0xab27, 0xab27,
    62486836        0xab2f, 0xab2f,
    6249         0xab60, 0xab63,
    6250         0xab66, 0xabbf,
     6837        0xab66, 0xab6f,
    62516838        0xabee, 0xabef,
    62526839        0xabfa, 0xabff,
     
    62696856        0xfdfe, 0xfdff,
    62706857        0xfe1a, 0xfe1f,
    6271         0xfe2e, 0xfe2f,
    62726858        0xfe53, 0xfe53,
    62736859        0xfe67, 0xfe67,
     
    62936879        0x10103, 0x10106,
    62946880        0x10134, 0x10136,
    6295         0x1018d, 0x1018f,
     6881        0x1018f, 0x1018f,
    62966882        0x1019c, 0x1019f,
    62976883        0x101a1, 0x101cf,
     
    63006886        0x102d1, 0x102df,
    63016887        0x102fc, 0x102ff,
    6302         0x10324, 0x1032f,
     6888        0x10324, 0x1032c,
    63036889        0x1034b, 0x1034f,
    63046890        0x1037b, 0x1037f,
     
    63076893        0x103d6, 0x103ff,
    63086894        0x1049e, 0x1049f,
    6309         0x104aa, 0x104ff,
     6895        0x104aa, 0x104af,
     6896        0x104d4, 0x104d7,
     6897        0x104fc, 0x104ff,
    63106898        0x10528, 0x1052f,
    63116899        0x10564, 0x1056e,
     
    63216909        0x10856, 0x10856,
    63226910        0x1089f, 0x108a6,
    6323         0x108b0, 0x108ff,
     6911        0x108b0, 0x108df,
     6912        0x108f3, 0x108f3,
     6913        0x108f6, 0x108fa,
    63246914        0x1091c, 0x1091e,
    63256915        0x1093a, 0x1093e,
    63266916        0x10940, 0x1097f,
    6327         0x109b8, 0x109bd,
    6328         0x109c0, 0x109ff,
     6917        0x109b8, 0x109bb,
     6918        0x109d0, 0x109d1,
    63296919        0x10a04, 0x10a04,
    63306920        0x10a07, 0x10a0b,
     
    63446934        0x10b9d, 0x10ba8,
    63456935        0x10bb0, 0x10bff,
    6346         0x10c49, 0x10e5f,
     6936        0x10c49, 0x10c7f,
     6937        0x10cb3, 0x10cbf,
     6938        0x10cf3, 0x10cf9,
     6939        0x10d00, 0x10e5f,
    63476940        0x10e7f, 0x10fff,
    63486941        0x1104e, 0x11051,
     
    63546947        0x11144, 0x1114f,
    63556948        0x11177, 0x1117f,
    6356         0x111c9, 0x111cc,
    63576949        0x111ce, 0x111cf,
    6358         0x111db, 0x111e0,
     6950        0x111e0, 0x111e0,
    63596951        0x111f5, 0x111ff,
    63606952        0x11212, 0x11212,
    6361         0x1123e, 0x112af,
     6953        0x1123f, 0x1127f,
     6954        0x11287, 0x11287,
     6955        0x11289, 0x11289,
     6956        0x1128e, 0x1128e,
     6957        0x1129e, 0x1129e,
     6958        0x112aa, 0x112af,
    63626959        0x112eb, 0x112ef,
    6363         0x112fa, 0x11300,
     6960        0x112fa, 0x112ff,
    63646961        0x11304, 0x11304,
    63656962        0x1130d, 0x1130e,
     
    63716968        0x11345, 0x11346,
    63726969        0x11349, 0x1134a,
    6373         0x1134e, 0x11356,
     6970        0x1134e, 0x1134f,
     6971        0x11351, 0x11356,
    63746972        0x11358, 0x1135c,
    63756973        0x11364, 0x11365,
    63766974        0x1136d, 0x1136f,
    6377         0x11375, 0x1147f,
     6975        0x11375, 0x113ff,
     6976        0x1145a, 0x1145a,
     6977        0x1145c, 0x1145c,
     6978        0x1145e, 0x1147f,
    63786979        0x114c8, 0x114cf,
    63796980        0x114da, 0x1157f,
    63806981        0x115b6, 0x115b7,
    6381         0x115ca, 0x115ff,
     6982        0x115de, 0x115ff,
    63826983        0x11645, 0x1164f,
    6383         0x1165a, 0x1167f,
     6984        0x1165a, 0x1165f,
     6985        0x1166d, 0x1167f,
    63846986        0x116b8, 0x116bf,
    6385         0x116ca, 0x1189f,
     6987        0x116ca, 0x116ff,
     6988        0x1171a, 0x1171c,
     6989        0x1172c, 0x1172f,
     6990        0x11740, 0x1189f,
    63866991        0x118f3, 0x118fe,
    6387         0x11900, 0x11abf,
    6388         0x11af9, 0x11fff,
    6389         0x12399, 0x123ff,
     6992        0x11900, 0x119ff,
     6993        0x11a48, 0x11a4f,
     6994        0x11a84, 0x11a85,
     6995        0x11a9d, 0x11a9d,
     6996        0x11aa3, 0x11abf,
     6997        0x11af9, 0x11bff,
     6998        0x11c09, 0x11c09,
     6999        0x11c37, 0x11c37,
     7000        0x11c46, 0x11c4f,
     7001        0x11c6d, 0x11c6f,
     7002        0x11c90, 0x11c91,
     7003        0x11ca8, 0x11ca8,
     7004        0x11cb7, 0x11cff,
     7005        0x11d07, 0x11d07,
     7006        0x11d0a, 0x11d0a,
     7007        0x11d37, 0x11d39,
     7008        0x11d3b, 0x11d3b,
     7009        0x11d3e, 0x11d3e,
     7010        0x11d48, 0x11d4f,
     7011        0x11d5a, 0x11fff,
     7012        0x1239a, 0x123ff,
    63907013        0x1246f, 0x1246f,
    6391         0x12475, 0x12fff,
    6392         0x1342f, 0x167ff,
     7014        0x12475, 0x1247f,
     7015        0x12544, 0x12fff,
     7016        0x1342f, 0x143ff,
     7017        0x14647, 0x167ff,
    63937018        0x16a39, 0x16a3f,
    63947019        0x16a5f, 0x16a5f,
     
    64047029        0x16f45, 0x16f4f,
    64057030        0x16f7f, 0x16f8e,
    6406         0x16fa0, 0x1afff,
    6407         0x1b002, 0x1bbff,
     7031        0x16fa0, 0x16fdf,
     7032        0x16fe2, 0x16fff,
     7033        0x187ed, 0x187ff,
     7034        0x18af3, 0x1afff,
     7035        0x1b11f, 0x1b16f,
     7036        0x1b2fc, 0x1bbff,
    64087037        0x1bc6b, 0x1bc6f,
    64097038        0x1bc7d, 0x1bc7f,
     
    64137042        0x1d0f6, 0x1d0ff,
    64147043        0x1d127, 0x1d128,
    6415         0x1d1de, 0x1d1ff,
     7044        0x1d1e9, 0x1d1ff,
    64167045        0x1d246, 0x1d2ff,
    64177046        0x1d357, 0x1d35f,
     
    64377066        0x1d6a6, 0x1d6a7,
    64387067        0x1d7cc, 0x1d7cd,
    6439         0x1d800, 0x1e7ff,
     7068        0x1da8c, 0x1da9a,
     7069        0x1daa0, 0x1daa0,
     7070        0x1dab0, 0x1dfff,
     7071        0x1e007, 0x1e007,
     7072        0x1e019, 0x1e01a,
     7073        0x1e022, 0x1e022,
     7074        0x1e025, 0x1e025,
     7075        0x1e02b, 0x1e7ff,
    64407076        0x1e8c5, 0x1e8c6,
    6441         0x1e8d7, 0x1edff,
     7077        0x1e8d7, 0x1e8ff,
     7078        0x1e94b, 0x1e94f,
     7079        0x1e95a, 0x1e95d,
     7080        0x1e960, 0x1edff,
    64427081        0x1ee04, 0x1ee04,
    64437082        0x1ee20, 0x1ee20,
     
    64837122        0x1f12f, 0x1f12f,
    64847123        0x1f16c, 0x1f16f,
    6485         0x1f19b, 0x1f1e5,
     7124        0x1f1ad, 0x1f1e5,
    64867125        0x1f203, 0x1f20f,
    6487         0x1f23b, 0x1f23f,
     7126        0x1f23c, 0x1f23f,
    64887127        0x1f249, 0x1f24f,
    6489         0x1f252, 0x1f2ff,
    6490         0x1f32d, 0x1f32f,
    6491         0x1f37e, 0x1f37f,
    6492         0x1f3cf, 0x1f3d3,
    6493         0x1f3f8, 0x1f3ff,
    6494         0x1f4ff, 0x1f4ff,
    6495         0x1f54b, 0x1f54f,
    6496         0x1f57a, 0x1f57a,
    6497         0x1f5a4, 0x1f5a4,
    6498         0x1f643, 0x1f644,
    6499         0x1f6d0, 0x1f6df,
     7128        0x1f252, 0x1f25f,
     7129        0x1f266, 0x1f2ff,
     7130        0x1f6d5, 0x1f6df,
    65007131        0x1f6ed, 0x1f6ef,
    6501         0x1f6f4, 0x1f6ff,
     7132        0x1f6f9, 0x1f6ff,
    65027133        0x1f774, 0x1f77f,
    65037134        0x1f7d5, 0x1f7ff,
     
    65067137        0x1f85a, 0x1f85f,
    65077138        0x1f888, 0x1f88f,
    6508         0x1f8ae, 0x1ffff,
     7139        0x1f8ae, 0x1f8ff,
     7140        0x1f90c, 0x1f90f,
     7141        0x1f93f, 0x1f93f,
     7142        0x1f94d, 0x1f94f,
     7143        0x1f96c, 0x1f97f,
     7144        0x1f998, 0x1f9bf,
     7145        0x1f9c1, 0x1f9cf,
     7146        0x1f9e7, 0x1ffff,
    65097147        0x2a6d7, 0x2a6ff,
    65107148        0x2b735, 0x2b73f,
    6511         0x2b81e, 0x2f7ff,
     7149        0x2b81e, 0x2b81f,
     7150        0x2cea2, 0x2ceaf,
     7151        0x2ebe1, 0x2f7ff,
    65127152        0x2fa1e, 0xe0000,
    65137153        0xe0002, 0xe001f,
     
    65347174/* 'L': Major Category */
    65357175static const OnigCodePoint CR_L[] = {
    6536         537,
     7176        585,
    65377177        0x0041, 0x005a,
    65387178        0x0061, 0x007a,
     
    65837223        0x0828, 0x0828,
    65847224        0x0840, 0x0858,
    6585         0x08a0, 0x08b2,
     7225        0x0860, 0x086a,
     7226        0x08a0, 0x08b4,
     7227        0x08b6, 0x08bd,
    65867228        0x0904, 0x0939,
    65877229        0x093d, 0x093d,
     
    66007242        0x09df, 0x09e1,
    66017243        0x09f0, 0x09f1,
     7244        0x09fc, 0x09fc,
    66027245        0x0a05, 0x0a0a,
    66037246        0x0a0f, 0x0a10,
     
    66197262        0x0ad0, 0x0ad0,
    66207263        0x0ae0, 0x0ae1,
     7264        0x0af9, 0x0af9,
    66217265        0x0b05, 0x0b0c,
    66227266        0x0b0f, 0x0b10,
     
    66457289        0x0c2a, 0x0c39,
    66467290        0x0c3d, 0x0c3d,
    6647         0x0c58, 0x0c59,
     7291        0x0c58, 0x0c5a,
    66487292        0x0c60, 0x0c61,
     7293        0x0c80, 0x0c80,
    66497294        0x0c85, 0x0c8c,
    66507295        0x0c8e, 0x0c90,
     
    66617306        0x0d3d, 0x0d3d,
    66627307        0x0d4e, 0x0d4e,
    6663         0x0d60, 0x0d61,
     7308        0x0d54, 0x0d56,
     7309        0x0d5f, 0x0d61,
    66647310        0x0d7a, 0x0d7f,
    66657311        0x0d85, 0x0d96,
     
    67227368        0x1318, 0x135a,
    67237369        0x1380, 0x138f,
    6724         0x13a0, 0x13f4,
     7370        0x13a0, 0x13f5,
     7371        0x13f8, 0x13fd,
    67257372        0x1401, 0x166c,
    67267373        0x166f, 0x167f,
     
    67387385        0x17dc, 0x17dc,
    67397386        0x1820, 0x1877,
    6740         0x1880, 0x18a8,
     7387        0x1880, 0x1884,
     7388        0x1887, 0x18a8,
    67417389        0x18aa, 0x18aa,
    67427390        0x18b0, 0x18f5,
     
    67457393        0x1970, 0x1974,
    67467394        0x1980, 0x19ab,
    6747         0x19c1, 0x19c7,
     7395        0x19b0, 0x19c9,
    67487396        0x1a00, 0x1a16,
    67497397        0x1a20, 0x1a54,
     
    67577405        0x1c4d, 0x1c4f,
    67587406        0x1c5a, 0x1c7d,
     7407        0x1c80, 0x1c88,
    67597408        0x1ce9, 0x1cec,
    67607409        0x1cee, 0x1cf1,
     
    68247473        0x30a1, 0x30fa,
    68257474        0x30fc, 0x30ff,
    6826         0x3105, 0x312d,
     7475        0x3105, 0x312e,
    68277476        0x3131, 0x318e,
    68287477        0x31a0, 0x31ba,
    68297478        0x31f0, 0x31ff,
    68307479        0x3400, 0x4db5,
    6831         0x4e00, 0x9fcc,
     7480        0x4e00, 0x9fea,
    68327481        0xa000, 0xa48c,
    68337482        0xa4d0, 0xa4fd,
     
    68407489        0xa717, 0xa71f,
    68417490        0xa722, 0xa788,
    6842         0xa78b, 0xa78e,
    6843         0xa790, 0xa7ad,
    6844         0xa7b0, 0xa7b1,
     7491        0xa78b, 0xa7ae,
     7492        0xa7b0, 0xa7b7,
    68457493        0xa7f7, 0xa801,
    68467494        0xa803, 0xa805,
     
    68517499        0xa8f2, 0xa8f7,
    68527500        0xa8fb, 0xa8fb,
     7501        0xa8fd, 0xa8fd,
    68537502        0xa90a, 0xa925,
    68547503        0xa930, 0xa946,
     
    68797528        0xab28, 0xab2e,
    68807529        0xab30, 0xab5a,
    6881         0xab5c, 0xab5f,
    6882         0xab64, 0xab65,
    6883         0xabc0, 0xabe2,
     7530        0xab5c, 0xab65,
     7531        0xab70, 0xabe2,
    68847532        0xac00, 0xd7a3,
    68857533        0xd7b0, 0xd7c6,
     
    69207568        0x102a0, 0x102d0,
    69217569        0x10300, 0x1031f,
    6922         0x10330, 0x10340,
     7570        0x1032d, 0x10340,
    69237571        0x10342, 0x10349,
    69247572        0x10350, 0x10375,
     
    69277575        0x103c8, 0x103cf,
    69287576        0x10400, 0x1049d,
     7577        0x104b0, 0x104d3,
     7578        0x104d8, 0x104fb,
    69297579        0x10500, 0x10527,
    69307580        0x10530, 0x10563,
     
    69407590        0x10860, 0x10876,
    69417591        0x10880, 0x1089e,
     7592        0x108e0, 0x108f2,
     7593        0x108f4, 0x108f5,
    69427594        0x10900, 0x10915,
    69437595        0x10920, 0x10939,
     
    69577609        0x10b80, 0x10b91,
    69587610        0x10c00, 0x10c48,
     7611        0x10c80, 0x10cb2,
     7612        0x10cc0, 0x10cf2,
    69597613        0x11003, 0x11037,
    69607614        0x11083, 0x110af,
     
    69667620        0x111c1, 0x111c4,
    69677621        0x111da, 0x111da,
     7622        0x111dc, 0x111dc,
    69687623        0x11200, 0x11211,
    69697624        0x11213, 0x1122b,
     7625        0x11280, 0x11286,
     7626        0x11288, 0x11288,
     7627        0x1128a, 0x1128d,
     7628        0x1128f, 0x1129d,
     7629        0x1129f, 0x112a8,
    69707630        0x112b0, 0x112de,
    69717631        0x11305, 0x1130c,
     
    69767636        0x11335, 0x11339,
    69777637        0x1133d, 0x1133d,
     7638        0x11350, 0x11350,
    69787639        0x1135d, 0x11361,
     7640        0x11400, 0x11434,
     7641        0x11447, 0x1144a,
    69797642        0x11480, 0x114af,
    69807643        0x114c4, 0x114c5,
    69817644        0x114c7, 0x114c7,
    69827645        0x11580, 0x115ae,
     7646        0x115d8, 0x115db,
    69837647        0x11600, 0x1162f,
    69847648        0x11644, 0x11644,
    69857649        0x11680, 0x116aa,
     7650        0x11700, 0x11719,
    69867651        0x118a0, 0x118df,
    69877652        0x118ff, 0x118ff,
     7653        0x11a00, 0x11a00,
     7654        0x11a0b, 0x11a32,
     7655        0x11a3a, 0x11a3a,
     7656        0x11a50, 0x11a50,
     7657        0x11a5c, 0x11a83,
     7658        0x11a86, 0x11a89,
    69887659        0x11ac0, 0x11af8,
    6989         0x12000, 0x12398,
     7660        0x11c00, 0x11c08,
     7661        0x11c0a, 0x11c2e,
     7662        0x11c40, 0x11c40,
     7663        0x11c72, 0x11c8f,
     7664        0x11d00, 0x11d06,
     7665        0x11d08, 0x11d09,
     7666        0x11d0b, 0x11d30,
     7667        0x11d46, 0x11d46,
     7668        0x12000, 0x12399,
     7669        0x12480, 0x12543,
    69907670        0x13000, 0x1342e,
     7671        0x14400, 0x14646,
    69917672        0x16800, 0x16a38,
    69927673        0x16a40, 0x16a5e,
     
    69997680        0x16f50, 0x16f50,
    70007681        0x16f93, 0x16f9f,
    7001         0x1b000, 0x1b001,
     7682        0x16fe0, 0x16fe1,
     7683        0x17000, 0x187ec,
     7684        0x18800, 0x18af2,
     7685        0x1b000, 0x1b11e,
     7686        0x1b170, 0x1b2fb,
    70027687        0x1bc00, 0x1bc6a,
    70037688        0x1bc70, 0x1bc7c,
     
    70357720        0x1d7c4, 0x1d7cb,
    70367721        0x1e800, 0x1e8c4,
     7722        0x1e900, 0x1e943,
    70377723        0x1ee00, 0x1ee03,
    70387724        0x1ee05, 0x1ee1f,
     
    70717757        0x2a700, 0x2b734,
    70727758        0x2b740, 0x2b81d,
     7759        0x2b820, 0x2cea1,
     7760        0x2ceb0, 0x2ebe0,
    70737761        0x2f800, 0x2fa1d,
    70747762}; /* CR_L */
     
    70767764/* 'LC': General Category */
    70777765static const OnigCodePoint CR_LC[] = {
    7078         117,
     7766        126,
    70797767        0x0041, 0x005a,
    70807768        0x0061, 0x007a,
     
    71027790        0x10c7, 0x10c7,
    71037791        0x10cd, 0x10cd,
     7792        0x13a0, 0x13f5,
     7793        0x13f8, 0x13fd,
     7794        0x1c80, 0x1c88,
    71047795        0x1d00, 0x1d2b,
    71057796        0x1d6b, 0x1d77,
     
    71537844        0xa771, 0xa787,
    71547845        0xa78b, 0xa78e,
    7155         0xa790, 0xa7ad,
    7156         0xa7b0, 0xa7b1,
     7846        0xa790, 0xa7ae,
     7847        0xa7b0, 0xa7b7,
    71577848        0xa7fa, 0xa7fa,
    71587849        0xab30, 0xab5a,
    7159         0xab64, 0xab65,
     7850        0xab60, 0xab65,
     7851        0xab70, 0xabbf,
    71607852        0xfb00, 0xfb06,
    71617853        0xfb13, 0xfb17,
     
    71637855        0xff41, 0xff5a,
    71647856        0x10400, 0x1044f,
     7857        0x104b0, 0x104d3,
     7858        0x104d8, 0x104fb,
     7859        0x10c80, 0x10cb2,
     7860        0x10cc0, 0x10cf2,
    71657861        0x118a0, 0x118df,
    71667862        0x1d400, 0x1d454,
     
    71947890        0x1d7aa, 0x1d7c2,
    71957891        0x1d7c4, 0x1d7cb,
     7892        0x1e900, 0x1e943,
    71967893}; /* CR_LC */
    71977894
    71987895/* 'Ll': General Category */
    71997896static const OnigCodePoint CR_Ll[] = {
    7200         625,
     7897        633,
    72017898        0x0061, 0x007a,
    72027899        0x00b5, 0x00b5,
     
    74698166        0x052f, 0x052f,
    74708167        0x0561, 0x0587,
     8168        0x13f8, 0x13fd,
     8169        0x1c80, 0x1c88,
    74718170        0x1d00, 0x1d2b,
    74728171        0x1d6b, 0x1d77,
     
    77888487        0xa7a7, 0xa7a7,
    77898488        0xa7a9, 0xa7a9,
     8489        0xa7b5, 0xa7b5,
     8490        0xa7b7, 0xa7b7,
    77908491        0xa7fa, 0xa7fa,
    77918492        0xab30, 0xab5a,
    7792         0xab64, 0xab65,
     8493        0xab60, 0xab65,
     8494        0xab70, 0xabbf,
    77938495        0xfb00, 0xfb06,
    77948496        0xfb13, 0xfb17,
    77958497        0xff41, 0xff5a,
    77968498        0x10428, 0x1044f,
     8499        0x104d8, 0x104fb,
     8500        0x10cc0, 0x10cf2,
    77978501        0x118c0, 0x118df,
    77988502        0x1d41a, 0x1d433,
     
    78248528        0x1d7c4, 0x1d7c9,
    78258529        0x1d7cb, 0x1d7cb,
     8530        0x1e922, 0x1e943,
    78268531}; /* CR_Ll */
    78278532
    78288533/* 'Lm': General Category */
    78298534static const OnigCodePoint CR_Lm[] = {
    7830         56,
     8535        57,
    78318536        0x02b0, 0x02c1,
    78328537        0x02c6, 0x02d1,
     
    78858590        0x16b40, 0x16b43,
    78868591        0x16f93, 0x16f9f,
     8592        0x16fe0, 0x16fe1,
    78878593}; /* CR_Lm */
    78888594
    78898595/* 'Lo': General Category */
    78908596static const OnigCodePoint CR_Lo[] = {
    7891         417,
     8597        459,
    78928598        0x00aa, 0x00aa,
    78938599        0x00ba, 0x00ba,
     
    79128618        0x0800, 0x0815,
    79138619        0x0840, 0x0858,
    7914         0x08a0, 0x08b2,
     8620        0x0860, 0x086a,
     8621        0x08a0, 0x08b4,
     8622        0x08b6, 0x08bd,
    79158623        0x0904, 0x0939,
    79168624        0x093d, 0x093d,
     
    79298637        0x09df, 0x09e1,
    79308638        0x09f0, 0x09f1,
     8639        0x09fc, 0x09fc,
    79318640        0x0a05, 0x0a0a,
    79328641        0x0a0f, 0x0a10,
     
    79488657        0x0ad0, 0x0ad0,
    79498658        0x0ae0, 0x0ae1,
     8659        0x0af9, 0x0af9,
    79508660        0x0b05, 0x0b0c,
    79518661        0x0b0f, 0x0b10,
     
    79748684        0x0c2a, 0x0c39,
    79758685        0x0c3d, 0x0c3d,
    7976         0x0c58, 0x0c59,
     8686        0x0c58, 0x0c5a,
    79778687        0x0c60, 0x0c61,
     8688        0x0c80, 0x0c80,
    79788689        0x0c85, 0x0c8c,
    79798690        0x0c8e, 0x0c90,
     
    79908701        0x0d3d, 0x0d3d,
    79918702        0x0d4e, 0x0d4e,
    7992         0x0d60, 0x0d61,
     8703        0x0d54, 0x0d56,
     8704        0x0d5f, 0x0d61,
    79938705        0x0d7a, 0x0d7f,
    79948706        0x0d85, 0x0d96,
     
    80478759        0x1318, 0x135a,
    80488760        0x1380, 0x138f,
    8049         0x13a0, 0x13f4,
    80508761        0x1401, 0x166c,
    80518762        0x166f, 0x167f,
     
    80638774        0x1820, 0x1842,
    80648775        0x1844, 0x1877,
    8065         0x1880, 0x18a8,
     8776        0x1880, 0x1884,
     8777        0x1887, 0x18a8,
    80668778        0x18aa, 0x18aa,
    80678779        0x18b0, 0x18f5,
     
    80708782        0x1970, 0x1974,
    80718783        0x1980, 0x19ab,
    8072         0x19c1, 0x19c7,
     8784        0x19b0, 0x19c9,
    80738785        0x1a00, 0x1a16,
    80748786        0x1a20, 0x1a54,
     
    81018813        0x30a1, 0x30fa,
    81028814        0x30ff, 0x30ff,
    8103         0x3105, 0x312d,
     8815        0x3105, 0x312e,
    81048816        0x3131, 0x318e,
    81058817        0x31a0, 0x31ba,
    81068818        0x31f0, 0x31ff,
    81078819        0x3400, 0x4db5,
    8108         0x4e00, 0x9fcc,
     8820        0x4e00, 0x9fea,
    81098821        0xa000, 0xa014,
    81108822        0xa016, 0xa48c,
     
    81158827        0xa66e, 0xa66e,
    81168828        0xa6a0, 0xa6e5,
     8829        0xa78f, 0xa78f,
    81178830        0xa7f7, 0xa7f7,
    81188831        0xa7fb, 0xa801,
     
    81248837        0xa8f2, 0xa8f7,
    81258838        0xa8fb, 0xa8fb,
     8839        0xa8fd, 0xa8fd,
    81268840        0xa90a, 0xa925,
    81278841        0xa930, 0xa946,
     
    81888902        0x102a0, 0x102d0,
    81898903        0x10300, 0x1031f,
    8190         0x10330, 0x10340,
     8904        0x1032d, 0x10340,
    81918905        0x10342, 0x10349,
    81928906        0x10350, 0x10375,
     
    82088922        0x10860, 0x10876,
    82098923        0x10880, 0x1089e,
     8924        0x108e0, 0x108f2,
     8925        0x108f4, 0x108f5,
    82108926        0x10900, 0x10915,
    82118927        0x10920, 0x10939,
     
    82348950        0x111c1, 0x111c4,
    82358951        0x111da, 0x111da,
     8952        0x111dc, 0x111dc,
    82368953        0x11200, 0x11211,
    82378954        0x11213, 0x1122b,
     8955        0x11280, 0x11286,
     8956        0x11288, 0x11288,
     8957        0x1128a, 0x1128d,
     8958        0x1128f, 0x1129d,
     8959        0x1129f, 0x112a8,
    82388960        0x112b0, 0x112de,
    82398961        0x11305, 0x1130c,
     
    82448966        0x11335, 0x11339,
    82458967        0x1133d, 0x1133d,
     8968        0x11350, 0x11350,
    82468969        0x1135d, 0x11361,
     8970        0x11400, 0x11434,
     8971        0x11447, 0x1144a,
    82478972        0x11480, 0x114af,
    82488973        0x114c4, 0x114c5,
    82498974        0x114c7, 0x114c7,
    82508975        0x11580, 0x115ae,
     8976        0x115d8, 0x115db,
    82518977        0x11600, 0x1162f,
    82528978        0x11644, 0x11644,
    82538979        0x11680, 0x116aa,
     8980        0x11700, 0x11719,
    82548981        0x118ff, 0x118ff,
     8982        0x11a00, 0x11a00,
     8983        0x11a0b, 0x11a32,
     8984        0x11a3a, 0x11a3a,
     8985        0x11a50, 0x11a50,
     8986        0x11a5c, 0x11a83,
     8987        0x11a86, 0x11a89,
    82558988        0x11ac0, 0x11af8,
    8256         0x12000, 0x12398,
     8989        0x11c00, 0x11c08,
     8990        0x11c0a, 0x11c2e,
     8991        0x11c40, 0x11c40,
     8992        0x11c72, 0x11c8f,
     8993        0x11d00, 0x11d06,
     8994        0x11d08, 0x11d09,
     8995        0x11d0b, 0x11d30,
     8996        0x11d46, 0x11d46,
     8997        0x12000, 0x12399,
     8998        0x12480, 0x12543,
    82578999        0x13000, 0x1342e,
     9000        0x14400, 0x14646,
    82589001        0x16800, 0x16a38,
    82599002        0x16a40, 0x16a5e,
     
    82649007        0x16f00, 0x16f44,
    82659008        0x16f50, 0x16f50,
    8266         0x1b000, 0x1b001,
     9009        0x17000, 0x187ec,
     9010        0x18800, 0x18af2,
     9011        0x1b000, 0x1b11e,
     9012        0x1b170, 0x1b2fb,
    82679013        0x1bc00, 0x1bc6a,
    82689014        0x1bc70, 0x1bc7c,
     
    83069052        0x2a700, 0x2b734,
    83079053        0x2b740, 0x2b81d,
     9054        0x2b820, 0x2cea1,
     9055        0x2ceb0, 0x2ebe0,
    83089056        0x2f800, 0x2fa1d,
    83099057}; /* CR_Lo */
     
    83269074/* 'Lu': General Category */
    83279075static const OnigCodePoint CR_Lu[] = {
    8328         622,
     9076        627,
    83299077        0x0041, 0x005a,
    83309078        0x00c0, 0x00d6,
     
    86029350        0x10c7, 0x10c7,
    86039351        0x10cd, 0x10cd,
     9352        0x13a0, 0x13f5,
    86049353        0x1e00, 0x1e00,
    86059354        0x1e02, 0x1e02,
     
    89139662        0xa7a6, 0xa7a6,
    89149663        0xa7a8, 0xa7a8,
    8915         0xa7aa, 0xa7ad,
    8916         0xa7b0, 0xa7b1,
     9664        0xa7aa, 0xa7ae,
     9665        0xa7b0, 0xa7b4,
     9666        0xa7b6, 0xa7b6,
    89179667        0xff21, 0xff3a,
    89189668        0x10400, 0x10427,
     9669        0x104b0, 0x104d3,
     9670        0x10c80, 0x10cb2,
    89199671        0x118a0, 0x118bf,
    89209672        0x1d400, 0x1d419,
     
    89499701        0x1d790, 0x1d7a8,
    89509702        0x1d7ca, 0x1d7ca,
     9703        0x1e900, 0x1e921,
    89519704}; /* CR_Lu */
    89529705
    89539706/* 'M': Major Category */
    89549707static const OnigCodePoint CR_M[] = {
    8955         229,
     9708        263,
    89569709        0x0300, 0x036f,
    89579710        0x0483, 0x0489,
     
    89779730        0x0829, 0x082d,
    89789731        0x0859, 0x085b,
    8979         0x08e4, 0x0903,
     9732        0x08d4, 0x08e1,
     9733        0x08e3, 0x0903,
    89809734        0x093a, 0x093c,
    89819735        0x093e, 0x094f,
     
    90039757        0x0acb, 0x0acd,
    90049758        0x0ae2, 0x0ae3,
     9759        0x0afa, 0x0aff,
    90059760        0x0b01, 0x0b03,
    90069761        0x0b3c, 0x0b3c,
     
    90289783        0x0cd5, 0x0cd6,
    90299784        0x0ce2, 0x0ce3,
    9030         0x0d01, 0x0d03,
     9785        0x0d00, 0x0d03,
     9786        0x0d3b, 0x0d3c,
    90319787        0x0d3e, 0x0d44,
    90329788        0x0d46, 0x0d48,
     
    90749830        0x17dd, 0x17dd,
    90759831        0x180b, 0x180d,
     9832        0x1885, 0x1886,
    90769833        0x18a9, 0x18a9,
    90779834        0x1920, 0x192b,
    90789835        0x1930, 0x193b,
    9079         0x19b0, 0x19c0,
    9080         0x19c8, 0x19c9,
    90819836        0x1a17, 0x1a1b,
    90829837        0x1a55, 0x1a5e,
     
    90959850        0x1ced, 0x1ced,
    90969851        0x1cf2, 0x1cf4,
    9097         0x1cf8, 0x1cf9,
    9098         0x1dc0, 0x1df5,
    9099         0x1dfc, 0x1dff,
     9852        0x1cf7, 0x1cf9,
     9853        0x1dc0, 0x1df9,
     9854        0x1dfb, 0x1dff,
    91009855        0x20d0, 0x20f0,
    91019856        0x2cef, 0x2cf1,
     
    91069861        0xa66f, 0xa672,
    91079862        0xa674, 0xa67d,
    9108         0xa69f, 0xa69f,
     9863        0xa69e, 0xa69f,
    91099864        0xa6f0, 0xa6f1,
    91109865        0xa802, 0xa802,
     
    91139868        0xa823, 0xa827,
    91149869        0xa880, 0xa881,
    9115         0xa8b4, 0xa8c4,
     9870        0xa8b4, 0xa8c5,
    91169871        0xa8e0, 0xa8f1,
    91179872        0xa926, 0xa92d,
     
    91359890        0xfb1e, 0xfb1e,
    91369891        0xfe00, 0xfe0f,
    9137         0xfe20, 0xfe2d,
     9892        0xfe20, 0xfe2f,
    91389893        0x101fd, 0x101fd,
    91399894        0x102e0, 0x102e0,
     
    91549909        0x11180, 0x11182,
    91559910        0x111b3, 0x111c0,
     9911        0x111ca, 0x111cc,
    91569912        0x1122c, 0x11237,
     9913        0x1123e, 0x1123e,
    91579914        0x112df, 0x112ea,
    9158         0x11301, 0x11303,
     9915        0x11300, 0x11303,
    91599916        0x1133c, 0x1133c,
    91609917        0x1133e, 0x11344,
     
    91659922        0x11366, 0x1136c,
    91669923        0x11370, 0x11374,
     9924        0x11435, 0x11446,
    91679925        0x114b0, 0x114c3,
    91689926        0x115af, 0x115b5,
    91699927        0x115b8, 0x115c0,
     9928        0x115dc, 0x115dd,
    91709929        0x11630, 0x11640,
    91719930        0x116ab, 0x116b7,
     9931        0x1171d, 0x1172b,
     9932        0x11a01, 0x11a0a,
     9933        0x11a33, 0x11a39,
     9934        0x11a3b, 0x11a3e,
     9935        0x11a47, 0x11a47,
     9936        0x11a51, 0x11a5b,
     9937        0x11a8a, 0x11a99,
     9938        0x11c2f, 0x11c36,
     9939        0x11c38, 0x11c3f,
     9940        0x11c92, 0x11ca7,
     9941        0x11ca9, 0x11cb6,
     9942        0x11d31, 0x11d36,
     9943        0x11d3a, 0x11d3a,
     9944        0x11d3c, 0x11d3d,
     9945        0x11d3f, 0x11d45,
     9946        0x11d47, 0x11d47,
    91729947        0x16af0, 0x16af4,
    91739948        0x16b30, 0x16b36,
     
    91819956        0x1d1aa, 0x1d1ad,
    91829957        0x1d242, 0x1d244,
     9958        0x1da00, 0x1da36,
     9959        0x1da3b, 0x1da6c,
     9960        0x1da75, 0x1da75,
     9961        0x1da84, 0x1da84,
     9962        0x1da9b, 0x1da9f,
     9963        0x1daa1, 0x1daaf,
     9964        0x1e000, 0x1e006,
     9965        0x1e008, 0x1e018,
     9966        0x1e01b, 0x1e021,
     9967        0x1e023, 0x1e024,
     9968        0x1e026, 0x1e02a,
    91839969        0x1e8d0, 0x1e8d6,
     9970        0x1e944, 0x1e94a,
    91849971        0xe0100, 0xe01ef,
    91859972}; /* CR_M */
     
    91879974/* 'Mc': General Category */
    91889975static const OnigCodePoint CR_Mc[] = {
    9189         147,
     9976        160,
    91909977        0x0903, 0x0903,
    91919978        0x093b, 0x093b,
     
    925210039        0x1930, 0x1931,
    925310040        0x1933, 0x1938,
    9254         0x19b0, 0x19c0,
    9255         0x19c8, 0x19c9,
    925610041        0x1a19, 0x1a1a,
    925710042        0x1a55, 0x1a55,
     
    927710062        0x1ce1, 0x1ce1,
    927810063        0x1cf2, 0x1cf3,
     10064        0x1cf7, 0x1cf7,
    927910065        0x302e, 0x302f,
    928010066        0xa823, 0xa824,
     
    931910105        0x11357, 0x11357,
    932010106        0x11362, 0x11363,
     10107        0x11435, 0x11437,
     10108        0x11440, 0x11441,
     10109        0x11445, 0x11445,
    932110110        0x114b0, 0x114b2,
    932210111        0x114b9, 0x114b9,
     
    933210121        0x116ae, 0x116af,
    933310122        0x116b6, 0x116b6,
     10123        0x11720, 0x11721,
     10124        0x11726, 0x11726,
     10125        0x11a07, 0x11a08,
     10126        0x11a39, 0x11a39,
     10127        0x11a57, 0x11a58,
     10128        0x11a97, 0x11a97,
     10129        0x11c2f, 0x11c2f,
     10130        0x11c3e, 0x11c3e,
     10131        0x11ca9, 0x11ca9,
     10132        0x11cb1, 0x11cb1,
     10133        0x11cb4, 0x11cb4,
    933410134        0x16f51, 0x16f7e,
    933510135        0x1d165, 0x1d166,
     
    934910149/* 'Mn': General Category */
    935010150static const OnigCodePoint CR_Mn[] = {
    9351         255,
     10151        301,
    935210152        0x0300, 0x036f,
    935310153        0x0483, 0x0487,
     
    937310173        0x0829, 0x082d,
    937410174        0x0859, 0x085b,
    9375         0x08e4, 0x0902,
     10175        0x08d4, 0x08e1,
     10176        0x08e3, 0x0902,
    937610177        0x093a, 0x093a,
    937710178        0x093c, 0x093c,
     
    939910200        0x0acd, 0x0acd,
    940010201        0x0ae2, 0x0ae3,
     10202        0x0afa, 0x0aff,
    940110203        0x0b01, 0x0b01,
    940210204        0x0b3c, 0x0b3c,
     
    942110223        0x0ccc, 0x0ccd,
    942210224        0x0ce2, 0x0ce3,
    9423         0x0d01, 0x0d01,
     10225        0x0d00, 0x0d01,
     10226        0x0d3b, 0x0d3c,
    942410227        0x0d41, 0x0d44,
    942510228        0x0d4d, 0x0d4d,
     
    946710270        0x17dd, 0x17dd,
    946810271        0x180b, 0x180d,
     10272        0x1885, 0x1886,
    946910273        0x18a9, 0x18a9,
    947010274        0x1920, 0x1922,
     
    950410308        0x1cf4, 0x1cf4,
    950510309        0x1cf8, 0x1cf9,
    9506         0x1dc0, 0x1df5,
    9507         0x1dfc, 0x1dff,
     10310        0x1dc0, 0x1df9,
     10311        0x1dfb, 0x1dff,
    950810312        0x20d0, 0x20dc,
    950910313        0x20e1, 0x20e1,
     
    951610320        0xa66f, 0xa66f,
    951710321        0xa674, 0xa67d,
    9518         0xa69f, 0xa69f,
     10322        0xa69e, 0xa69f,
    951910323        0xa6f0, 0xa6f1,
    952010324        0xa802, 0xa802,
     
    952210326        0xa80b, 0xa80b,
    952310327        0xa825, 0xa826,
    9524         0xa8c4, 0xa8c4,
     10328        0xa8c4, 0xa8c5,
    952510329        0xa8e0, 0xa8f1,
    952610330        0xa926, 0xa92d,
     
    954910353        0xfb1e, 0xfb1e,
    955010354        0xfe00, 0xfe0f,
    9551         0xfe20, 0xfe2d,
     10355        0xfe20, 0xfe2f,
    955210356        0x101fd, 0x101fd,
    955310357        0x102e0, 0x102e0,
     
    957010374        0x11180, 0x11181,
    957110375        0x111b6, 0x111be,
     10376        0x111ca, 0x111cc,
    957210377        0x1122f, 0x11231,
    957310378        0x11234, 0x11234,
    957410379        0x11236, 0x11237,
     10380        0x1123e, 0x1123e,
    957510381        0x112df, 0x112df,
    957610382        0x112e3, 0x112ea,
    9577         0x11301, 0x11301,
     10383        0x11300, 0x11301,
    957810384        0x1133c, 0x1133c,
    957910385        0x11340, 0x11340,
    958010386        0x11366, 0x1136c,
    958110387        0x11370, 0x11374,
     10388        0x11438, 0x1143f,
     10389        0x11442, 0x11444,
     10390        0x11446, 0x11446,
    958210391        0x114b3, 0x114b8,
    958310392        0x114ba, 0x114ba,
     
    958710396        0x115bc, 0x115bd,
    958810397        0x115bf, 0x115c0,
     10398        0x115dc, 0x115dd,
    958910399        0x11633, 0x1163a,
    959010400        0x1163d, 0x1163d,
     
    959410404        0x116b0, 0x116b5,
    959510405        0x116b7, 0x116b7,
     10406        0x1171d, 0x1171f,
     10407        0x11722, 0x11725,
     10408        0x11727, 0x1172b,
     10409        0x11a01, 0x11a06,
     10410        0x11a09, 0x11a0a,
     10411        0x11a33, 0x11a38,
     10412        0x11a3b, 0x11a3e,
     10413        0x11a47, 0x11a47,
     10414        0x11a51, 0x11a56,
     10415        0x11a59, 0x11a5b,
     10416        0x11a8a, 0x11a96,
     10417        0x11a98, 0x11a99,
     10418        0x11c30, 0x11c36,
     10419        0x11c38, 0x11c3d,
     10420        0x11c3f, 0x11c3f,
     10421        0x11c92, 0x11ca7,
     10422        0x11caa, 0x11cb0,
     10423        0x11cb2, 0x11cb3,
     10424        0x11cb5, 0x11cb6,
     10425        0x11d31, 0x11d36,
     10426        0x11d3a, 0x11d3a,
     10427        0x11d3c, 0x11d3d,
     10428        0x11d3f, 0x11d45,
     10429        0x11d47, 0x11d47,
    959610430        0x16af0, 0x16af4,
    959710431        0x16b30, 0x16b36,
     
    960310437        0x1d1aa, 0x1d1ad,
    960410438        0x1d242, 0x1d244,
     10439        0x1da00, 0x1da36,
     10440        0x1da3b, 0x1da6c,
     10441        0x1da75, 0x1da75,
     10442        0x1da84, 0x1da84,
     10443        0x1da9b, 0x1da9f,
     10444        0x1daa1, 0x1daaf,
     10445        0x1e000, 0x1e006,
     10446        0x1e008, 0x1e018,
     10447        0x1e01b, 0x1e021,
     10448        0x1e023, 0x1e024,
     10449        0x1e026, 0x1e02a,
    960510450        0x1e8d0, 0x1e8d6,
     10451        0x1e944, 0x1e94a,
    960610452        0xe0100, 0xe01ef,
    960710453}; /* CR_Mn */
     
    960910455/* 'N': Major Category */
    961010456static const OnigCodePoint CR_N[] = {
    9611         105,
     10457        116,
    961210458        0x0030, 0x0039,
    961310459        0x00b2, 0x00b3,
     
    962810474        0x0c78, 0x0c7e,
    962910475        0x0ce6, 0x0cef,
    9630         0x0d66, 0x0d75,
     10476        0x0d58, 0x0d5e,
     10477        0x0d66, 0x0d78,
    963110478        0x0de6, 0x0def,
    963210479        0x0e50, 0x0e59,
     
    968810535        0x10879, 0x1087f,
    968910536        0x108a7, 0x108af,
     10537        0x108fb, 0x108ff,
    969010538        0x10916, 0x1091b,
     10539        0x109bc, 0x109bd,
     10540        0x109c0, 0x109cf,
     10541        0x109d2, 0x109ff,
    969110542        0x10a40, 0x10a47,
    969210543        0x10a7d, 0x10a7e,
     
    969610547        0x10b78, 0x10b7f,
    969710548        0x10ba9, 0x10baf,
     10549        0x10cfa, 0x10cff,
    969810550        0x10e60, 0x10e7e,
    969910551        0x11052, 0x1106f,
     
    970310555        0x111e1, 0x111f4,
    970410556        0x112f0, 0x112f9,
     10557        0x11450, 0x11459,
    970510558        0x114d0, 0x114d9,
    970610559        0x11650, 0x11659,
    970710560        0x116c0, 0x116c9,
     10561        0x11730, 0x1173b,
    970810562        0x118e0, 0x118f2,
     10563        0x11c50, 0x11c6c,
     10564        0x11d50, 0x11d59,
    970910565        0x12400, 0x1246e,
    971010566        0x16a60, 0x16a69,
     
    971410570        0x1d7ce, 0x1d7ff,
    971510571        0x1e8c7, 0x1e8cf,
     10572        0x1e950, 0x1e959,
    971610573        0x1f100, 0x1f10c,
    971710574}; /* CR_N */
     
    973910596/* 'No': General Category */
    974010597static const OnigCodePoint CR_No[] = {
    9741         52,
     10598        60,
    974210599        0x00b2, 0x00b3,
    974310600        0x00b9, 0x00b9,
     
    974710604        0x0bf0, 0x0bf2,
    974810605        0x0c78, 0x0c7e,
    9749         0x0d70, 0x0d75,
     10606        0x0d58, 0x0d5e,
     10607        0x0d70, 0x0d78,
    975010608        0x0f2a, 0x0f33,
    975110609        0x1369, 0x137c,
     
    977610634        0x10879, 0x1087f,
    977710635        0x108a7, 0x108af,
     10636        0x108fb, 0x108ff,
    977810637        0x10916, 0x1091b,
     10638        0x109bc, 0x109bd,
     10639        0x109c0, 0x109cf,
     10640        0x109d2, 0x109ff,
    977910641        0x10a40, 0x10a47,
    978010642        0x10a7d, 0x10a7e,
     
    978410646        0x10b78, 0x10b7f,
    978510647        0x10ba9, 0x10baf,
     10648        0x10cfa, 0x10cff,
    978610649        0x10e60, 0x10e7e,
    978710650        0x11052, 0x11065,
    978810651        0x111e1, 0x111f4,
     10652        0x1173a, 0x1173b,
    978910653        0x118ea, 0x118f2,
     10654        0x11c5a, 0x11c6c,
    979010655        0x16b5b, 0x16b61,
    979110656        0x1d360, 0x1d371,
     
    994010805/* 'Po': General Category */
    994110806static const OnigCodePoint CR_Po[] = {
    9942         151,
     10807        169,
    994310808        0x0021, 0x0023,
    994410809        0x0025, 0x0027,
     
    997310838        0x0964, 0x0965,
    997410839        0x0970, 0x0970,
     10840        0x09fd, 0x09fd,
    997510841        0x0af0, 0x0af0,
    997610842        0x0df4, 0x0df4,
     
    1002410890        0x2e3c, 0x2e3f,
    1002510891        0x2e41, 0x2e41,
     10892        0x2e43, 0x2e49,
    1002610893        0x3001, 0x3003,
    1002710894        0x303d, 0x303d,
     
    1003510902        0xa8ce, 0xa8cf,
    1003610903        0xa8f8, 0xa8fa,
     10904        0xa8fc, 0xa8fc,
    1003710905        0xa92e, 0xa92f,
    1003810906        0xa95f, 0xa95f,
     
    1008010948        0x11140, 0x11143,
    1008110949        0x11174, 0x11175,
    10082         0x111c5, 0x111c8,
     10950        0x111c5, 0x111c9,
    1008310951        0x111cd, 0x111cd,
     10952        0x111db, 0x111db,
     10953        0x111dd, 0x111df,
    1008410954        0x11238, 0x1123d,
     10955        0x112a9, 0x112a9,
     10956        0x1144b, 0x1144f,
     10957        0x1145b, 0x1145b,
     10958        0x1145d, 0x1145d,
    1008510959        0x114c6, 0x114c6,
    10086         0x115c1, 0x115c9,
     10960        0x115c1, 0x115d7,
    1008710961        0x11641, 0x11643,
     10962        0x11660, 0x1166c,
     10963        0x1173c, 0x1173e,
     10964        0x11a3f, 0x11a46,
     10965        0x11a9a, 0x11a9c,
     10966        0x11a9e, 0x11aa2,
     10967        0x11c41, 0x11c45,
     10968        0x11c70, 0x11c71,
    1008810969        0x12470, 0x12474,
    1008910970        0x16a6e, 0x16a6f,
     
    1009210973        0x16b44, 0x16b44,
    1009310974        0x1bc9f, 0x1bc9f,
     10975        0x1da87, 0x1da8b,
     10976        0x1e95e, 0x1e95f,
    1009410977}; /* CR_Po */
    1009510978
     
    1017611059/* 'S': Major Category */
    1017711060static const OnigCodePoint CR_S[] = {
    10178         210,
     11061        217,
    1017911062        0x0024, 0x0024,
    1018011063        0x002b, 0x002b,
     
    1021511098        0x0bf3, 0x0bfa,
    1021611099        0x0c7f, 0x0c7f,
     11100        0x0d4f, 0x0d4f,
    1021711101        0x0d79, 0x0d79,
    1021811102        0x0e3f, 0x0e3f,
     
    1024511129        0x207a, 0x207c,
    1024611130        0x208a, 0x208c,
    10247         0x20a0, 0x20bd,
     11131        0x20a0, 0x20bf,
    1024811132        0x2100, 0x2101,
    1024911133        0x2103, 0x2106,
     
    1026011144        0x214a, 0x214d,
    1026111145        0x214f, 0x214f,
     11146        0x218a, 0x218b,
    1026211147        0x2190, 0x2307,
    1026311148        0x230c, 0x2328,
    10264         0x232b, 0x23fa,
    10265         0x2400, 0x2426,
     11149        0x232b, 0x2426,
    1026611150        0x2440, 0x244a,
    1026711151        0x249c, 0x24e9,
     
    1027611160        0x2b98, 0x2bb9,
    1027711161        0x2bbd, 0x2bc8,
    10278         0x2bca, 0x2bd1,
     11162        0x2bca, 0x2bd2,
     11163        0x2bec, 0x2bef,
    1027911164        0x2ce5, 0x2cea,
    1028011165        0x2e80, 0x2e99,
     
    1032511210        0x10137, 0x1013f,
    1032611211        0x10179, 0x10189,
    10327         0x1018c, 0x1018c,
     11212        0x1018c, 0x1018e,
    1032811213        0x10190, 0x1019b,
    1032911214        0x101a0, 0x101a0,
     
    1033111216        0x10877, 0x10878,
    1033211217        0x10ac8, 0x10ac8,
     11218        0x1173f, 0x1173f,
    1033311219        0x16b3c, 0x16b3f,
    1033411220        0x16b45, 0x16b45,
     
    1034011226        0x1d183, 0x1d184,
    1034111227        0x1d18c, 0x1d1a9,
    10342         0x1d1ae, 0x1d1dd,
     11228        0x1d1ae, 0x1d1e8,
    1034311229        0x1d200, 0x1d241,
    1034411230        0x1d245, 0x1d245,
     
    1035411240        0x1d7a9, 0x1d7a9,
    1035511241        0x1d7c3, 0x1d7c3,
     11242        0x1d800, 0x1d9ff,
     11243        0x1da37, 0x1da3a,
     11244        0x1da6d, 0x1da74,
     11245        0x1da76, 0x1da83,
     11246        0x1da85, 0x1da86,
    1035611247        0x1eef0, 0x1eef1,
    1035711248        0x1f000, 0x1f02b,
     
    1036311254        0x1f110, 0x1f12e,
    1036411255        0x1f130, 0x1f16b,
    10365         0x1f170, 0x1f19a,
     11256        0x1f170, 0x1f1ac,
    1036611257        0x1f1e6, 0x1f202,
    10367         0x1f210, 0x1f23a,
     11258        0x1f210, 0x1f23b,
    1036811259        0x1f240, 0x1f248,
    1036911260        0x1f250, 0x1f251,
    10370         0x1f300, 0x1f32c,
    10371         0x1f330, 0x1f37d,
    10372         0x1f380, 0x1f3ce,
    10373         0x1f3d4, 0x1f3f7,
    10374         0x1f400, 0x1f4fe,
    10375         0x1f500, 0x1f54a,
    10376         0x1f550, 0x1f579,
    10377         0x1f57b, 0x1f5a3,
    10378         0x1f5a5, 0x1f642,
    10379         0x1f645, 0x1f6cf,
     11261        0x1f260, 0x1f265,
     11262        0x1f300, 0x1f6d4,
    1038011263        0x1f6e0, 0x1f6ec,
    10381         0x1f6f0, 0x1f6f3,
     11264        0x1f6f0, 0x1f6f8,
    1038211265        0x1f700, 0x1f773,
    1038311266        0x1f780, 0x1f7d4,
     
    1038711270        0x1f860, 0x1f887,
    1038811271        0x1f890, 0x1f8ad,
     11272        0x1f900, 0x1f90b,
     11273        0x1f910, 0x1f93e,
     11274        0x1f940, 0x1f94c,
     11275        0x1f950, 0x1f96b,
     11276        0x1f980, 0x1f997,
     11277        0x1f9c0, 0x1f9c0,
     11278        0x1f9d0, 0x1f9e6,
    1038911279}; /* CR_S */
    1039011280
     
    1040211292        0x0e3f, 0x0e3f,
    1040311293        0x17db, 0x17db,
    10404         0x20a0, 0x20bd,
     11294        0x20a0, 0x20bf,
    1040511295        0xa838, 0xa838,
    1040611296        0xfdfc, 0xfdfc,
     
    1041311303/* 'Sk': General Category */
    1041411304static const OnigCodePoint CR_Sk[] = {
    10415         28,
     11305        29,
    1041611306        0x005e, 0x005e,
    1041711307        0x0060, 0x0060,
     
    1044211332        0xff40, 0xff40,
    1044311333        0xffe3, 0xffe3,
     11334        0x1f3fb, 0x1f3ff,
    1044411335}; /* CR_Sk */
    1044511336
     
    1051511406/* 'So': General Category */
    1051611407static const OnigCodePoint CR_So[] = {
    10517         165,
     11408        173,
    1051811409        0x00a6, 0x00a6,
    1051911410        0x00a9, 0x00a9,
     
    1053211423        0x0bfa, 0x0bfa,
    1053311424        0x0c7f, 0x0c7f,
     11425        0x0d4f, 0x0d4f,
    1053411426        0x0d79, 0x0d79,
    1053511427        0x0f01, 0x0f03,
     
    1056411456        0x214c, 0x214d,
    1056511457        0x214f, 0x214f,
     11458        0x218a, 0x218b,
    1056611459        0x2195, 0x2199,
    1056711460        0x219c, 0x219f,
     
    1057911472        0x237d, 0x239a,
    1058011473        0x23b4, 0x23db,
    10581         0x23e2, 0x23fa,
    10582         0x2400, 0x2426,
     11474        0x23e2, 0x2426,
    1058311475        0x2440, 0x244a,
    1058411476        0x249c, 0x24e9,
     
    1059611488        0x2b98, 0x2bb9,
    1059711489        0x2bbd, 0x2bc8,
    10598         0x2bca, 0x2bd1,
     11490        0x2bca, 0x2bd2,
     11491        0x2bec, 0x2bef,
    1059911492        0x2ce5, 0x2cea,
    1060011493        0x2e80, 0x2e99,
     
    1063011523        0x10137, 0x1013f,
    1063111524        0x10179, 0x10189,
    10632         0x1018c, 0x1018c,
     11525        0x1018c, 0x1018e,
    1063311526        0x10190, 0x1019b,
    1063411527        0x101a0, 0x101a0,
     
    1063611529        0x10877, 0x10878,
    1063711530        0x10ac8, 0x10ac8,
     11531        0x1173f, 0x1173f,
    1063811532        0x16b3c, 0x16b3f,
    1063911533        0x16b45, 0x16b45,
     
    1064511539        0x1d183, 0x1d184,
    1064611540        0x1d18c, 0x1d1a9,
    10647         0x1d1ae, 0x1d1dd,
     11541        0x1d1ae, 0x1d1e8,
    1064811542        0x1d200, 0x1d241,
    1064911543        0x1d245, 0x1d245,
    1065011544        0x1d300, 0x1d356,
     11545        0x1d800, 0x1d9ff,
     11546        0x1da37, 0x1da3a,
     11547        0x1da6d, 0x1da74,
     11548        0x1da76, 0x1da83,
     11549        0x1da85, 0x1da86,
    1065111550        0x1f000, 0x1f02b,
    1065211551        0x1f030, 0x1f093,
     
    1065711556        0x1f110, 0x1f12e,
    1065811557        0x1f130, 0x1f16b,
    10659         0x1f170, 0x1f19a,
     11558        0x1f170, 0x1f1ac,
    1066011559        0x1f1e6, 0x1f202,
    10661         0x1f210, 0x1f23a,
     11560        0x1f210, 0x1f23b,
    1066211561        0x1f240, 0x1f248,
    1066311562        0x1f250, 0x1f251,
    10664         0x1f300, 0x1f32c,
    10665         0x1f330, 0x1f37d,
    10666         0x1f380, 0x1f3ce,
    10667         0x1f3d4, 0x1f3f7,
    10668         0x1f400, 0x1f4fe,
    10669         0x1f500, 0x1f54a,
    10670         0x1f550, 0x1f579,
    10671         0x1f57b, 0x1f5a3,
    10672         0x1f5a5, 0x1f642,
    10673         0x1f645, 0x1f6cf,
     11563        0x1f260, 0x1f265,
     11564        0x1f300, 0x1f3fa,
     11565        0x1f400, 0x1f6d4,
    1067411566        0x1f6e0, 0x1f6ec,
    10675         0x1f6f0, 0x1f6f3,
     11567        0x1f6f0, 0x1f6f8,
    1067611568        0x1f700, 0x1f773,
    1067711569        0x1f780, 0x1f7d4,
     
    1068111573        0x1f860, 0x1f887,
    1068211574        0x1f890, 0x1f8ad,
     11575        0x1f900, 0x1f90b,
     11576        0x1f910, 0x1f93e,
     11577        0x1f940, 0x1f94c,
     11578        0x1f950, 0x1f96b,
     11579        0x1f980, 0x1f997,
     11580        0x1f9c0, 0x1f9c0,
     11581        0x1f9d0, 0x1f9e6,
    1068311582}; /* CR_So */
    1068411583
     
    1087411773/* 'Cased': Derived Property */
    1087511774static const OnigCodePoint CR_Cased[] = {
    10876         127,
     11775        135,
    1087711776        0x0041, 0x005a,
    1087811777        0x0061, 0x007a,
     
    1090511804        0x10c7, 0x10c7,
    1090611805        0x10cd, 0x10cd,
     11806        0x13a0, 0x13f5,
     11807        0x13f8, 0x13fd,
     11808        0x1c80, 0x1c88,
    1090711809        0x1d00, 0x1dbf,
    1090811810        0x1e00, 0x1f15,
     
    1095711859        0xa722, 0xa787,
    1095811860        0xa78b, 0xa78e,
    10959         0xa790, 0xa7ad,
    10960         0xa7b0, 0xa7b1,
     11861        0xa790, 0xa7ae,
     11862        0xa7b0, 0xa7b7,
    1096111863        0xa7f8, 0xa7fa,
    1096211864        0xab30, 0xab5a,
    10963         0xab5c, 0xab5f,
    10964         0xab64, 0xab65,
     11865        0xab5c, 0xab65,
     11866        0xab70, 0xabbf,
    1096511867        0xfb00, 0xfb06,
    1096611868        0xfb13, 0xfb17,
     
    1096811870        0xff41, 0xff5a,
    1096911871        0x10400, 0x1044f,
     11872        0x104b0, 0x104d3,
     11873        0x104d8, 0x104fb,
     11874        0x10c80, 0x10cb2,
     11875        0x10cc0, 0x10cf2,
    1097011876        0x118a0, 0x118df,
    1097111877        0x1d400, 0x1d454,
     
    1099911905        0x1d7aa, 0x1d7c2,
    1100011906        0x1d7c4, 0x1d7cb,
     11907        0x1e900, 0x1e943,
    1100111908        0x1f130, 0x1f149,
    1100211909        0x1f150, 0x1f169,
     
    1100611913/* 'Case_Ignorable': Derived Property */
    1100711914static const OnigCodePoint CR_Case_Ignorable[] = {
    11008         335,
     11915        381,
    1100911916        0x0027, 0x0027,
    1101011917        0x002e, 0x002e,
     
    1104711954        0x0816, 0x082d,
    1104811955        0x0859, 0x085b,
    11049         0x08e4, 0x0902,
     11956        0x08d4, 0x0902,
    1105011957        0x093a, 0x093a,
    1105111958        0x093c, 0x093c,
     
    1107411981        0x0acd, 0x0acd,
    1107511982        0x0ae2, 0x0ae3,
     11983        0x0afa, 0x0aff,
    1107611984        0x0b01, 0x0b01,
    1107711985        0x0b3c, 0x0b3c,
     
    1109612004        0x0ccc, 0x0ccd,
    1109712005        0x0ce2, 0x0ce3,
    11098         0x0d01, 0x0d01,
     12006        0x0d00, 0x0d01,
     12007        0x0d3b, 0x0d3c,
    1109912008        0x0d41, 0x0d44,
    1110012009        0x0d4d, 0x0d4d,
     
    1114612055        0x180b, 0x180e,
    1114712056        0x1843, 0x1843,
     12057        0x1885, 0x1886,
    1114812058        0x18a9, 0x18a9,
    1114912059        0x1920, 0x1922,
     
    1118712097        0x1d2c, 0x1d6a,
    1118812098        0x1d78, 0x1d78,
    11189         0x1d9b, 0x1df5,
    11190         0x1dfc, 0x1dff,
     12099        0x1d9b, 0x1df9,
     12100        0x1dfb, 0x1dff,
    1119112101        0x1fbd, 0x1fbd,
    1119212102        0x1fbf, 0x1fc1,
     
    1122412134        0xa674, 0xa67d,
    1122512135        0xa67f, 0xa67f,
    11226         0xa69c, 0xa69d,
    11227         0xa69f, 0xa69f,
     12136        0xa69c, 0xa69f,
    1122812137        0xa6f0, 0xa6f1,
    1122912138        0xa700, 0xa721,
     
    1123512144        0xa80b, 0xa80b,
    1123612145        0xa825, 0xa826,
    11237         0xa8c4, 0xa8c4,
     12146        0xa8c4, 0xa8c5,
    1123812147        0xa8e0, 0xa8f1,
    1123912148        0xa926, 0xa92d,
     
    1126912178        0xfe00, 0xfe0f,
    1127012179        0xfe13, 0xfe13,
    11271         0xfe20, 0xfe2d,
     12180        0xfe20, 0xfe2f,
    1127212181        0xfe52, 0xfe52,
    1127312182        0xfe55, 0xfe55,
     
    1130312212        0x11180, 0x11181,
    1130412213        0x111b6, 0x111be,
     12214        0x111ca, 0x111cc,
    1130512215        0x1122f, 0x11231,
    1130612216        0x11234, 0x11234,
    1130712217        0x11236, 0x11237,
     12218        0x1123e, 0x1123e,
    1130812219        0x112df, 0x112df,
    1130912220        0x112e3, 0x112ea,
    11310         0x11301, 0x11301,
     12221        0x11300, 0x11301,
    1131112222        0x1133c, 0x1133c,
    1131212223        0x11340, 0x11340,
    1131312224        0x11366, 0x1136c,
    1131412225        0x11370, 0x11374,
     12226        0x11438, 0x1143f,
     12227        0x11442, 0x11444,
     12228        0x11446, 0x11446,
    1131512229        0x114b3, 0x114b8,
    1131612230        0x114ba, 0x114ba,
     
    1132012234        0x115bc, 0x115bd,
    1132112235        0x115bf, 0x115c0,
     12236        0x115dc, 0x115dd,
    1132212237        0x11633, 0x1163a,
    1132312238        0x1163d, 0x1163d,
     
    1132712242        0x116b0, 0x116b5,
    1132812243        0x116b7, 0x116b7,
     12244        0x1171d, 0x1171f,
     12245        0x11722, 0x11725,
     12246        0x11727, 0x1172b,
     12247        0x11a01, 0x11a06,
     12248        0x11a09, 0x11a0a,
     12249        0x11a33, 0x11a38,
     12250        0x11a3b, 0x11a3e,
     12251        0x11a47, 0x11a47,
     12252        0x11a51, 0x11a56,
     12253        0x11a59, 0x11a5b,
     12254        0x11a8a, 0x11a96,
     12255        0x11a98, 0x11a99,
     12256        0x11c30, 0x11c36,
     12257        0x11c38, 0x11c3d,
     12258        0x11c3f, 0x11c3f,
     12259        0x11c92, 0x11ca7,
     12260        0x11caa, 0x11cb0,
     12261        0x11cb2, 0x11cb3,
     12262        0x11cb5, 0x11cb6,
     12263        0x11d31, 0x11d36,
     12264        0x11d3a, 0x11d3a,
     12265        0x11d3c, 0x11d3d,
     12266        0x11d3f, 0x11d45,
     12267        0x11d47, 0x11d47,
    1132912268        0x16af0, 0x16af4,
    1133012269        0x16b30, 0x16b36,
    1133112270        0x16b40, 0x16b43,
    1133212271        0x16f8f, 0x16f9f,
     12272        0x16fe0, 0x16fe1,
    1133312273        0x1bc9d, 0x1bc9e,
    1133412274        0x1bca0, 0x1bca3,
     
    1133812278        0x1d1aa, 0x1d1ad,
    1133912279        0x1d242, 0x1d244,
     12280        0x1da00, 0x1da36,
     12281        0x1da3b, 0x1da6c,
     12282        0x1da75, 0x1da75,
     12283        0x1da84, 0x1da84,
     12284        0x1da9b, 0x1da9f,
     12285        0x1daa1, 0x1daaf,
     12286        0x1e000, 0x1e006,
     12287        0x1e008, 0x1e018,
     12288        0x1e01b, 0x1e021,
     12289        0x1e023, 0x1e024,
     12290        0x1e026, 0x1e02a,
    1134012291        0x1e8d0, 0x1e8d6,
     12292        0x1e944, 0x1e94a,
     12293        0x1f3fb, 0x1f3ff,
    1134112294        0xe0001, 0xe0001,
    1134212295        0xe0020, 0xe007f,
     
    1134612299/* 'Changes_When_Lowercased': Derived Property */
    1134712300static const OnigCodePoint CR_Changes_When_Lowercased[] = {
    11348         585,
     12301        590,
    1134912302        0x0041, 0x005a,
    1135012303        0x00c0, 0x00d6,
     
    1162112574        0x10c7, 0x10c7,
    1162212575        0x10cd, 0x10cd,
     12576        0x13a0, 0x13f5,
    1162312577        0x1e00, 0x1e00,
    1162412578        0x1e02, 0x1e02,
     
    1192712881        0xa7a6, 0xa7a6,
    1192812882        0xa7a8, 0xa7a8,
    11929         0xa7aa, 0xa7ad,
    11930         0xa7b0, 0xa7b1,
     12883        0xa7aa, 0xa7ae,
     12884        0xa7b0, 0xa7b4,
     12885        0xa7b6, 0xa7b6,
    1193112886        0xff21, 0xff3a,
    1193212887        0x10400, 0x10427,
     12888        0x104b0, 0x104d3,
     12889        0x10c80, 0x10cb2,
    1193312890        0x118a0, 0x118bf,
     12891        0x1e900, 0x1e921,
    1193412892}; /* CR_Changes_When_Lowercased */
    1193512893
    1193612894/* 'Changes_When_Uppercased': Derived Property */
    1193712895static const OnigCodePoint CR_Changes_When_Uppercased[] = {
    11938         599,
     12896        607,
    1193912897        0x0061, 0x007a,
    1194012898        0x00b5, 0x00b5,
     
    1208713045        0x0263, 0x0263,
    1208813046        0x0265, 0x0266,
    12089         0x0268, 0x0269,
    12090         0x026b, 0x026c,
     13047        0x0268, 0x026c,
    1209113048        0x026f, 0x026f,
    1209213049        0x0271, 0x0272,
     
    1209713054        0x0287, 0x028c,
    1209813055        0x0292, 0x0292,
    12099         0x029e, 0x029e,
     13056        0x029d, 0x029e,
    1210013057        0x0345, 0x0345,
    1210113058        0x0371, 0x0371,
     
    1222313180        0x052f, 0x052f,
    1222413181        0x0561, 0x0587,
     13182        0x13f8, 0x13fd,
     13183        0x1c80, 0x1c88,
    1222513184        0x1d79, 0x1d79,
    1222613185        0x1d7d, 0x1d7d,
     
    1253113490        0xa7a7, 0xa7a7,
    1253213491        0xa7a9, 0xa7a9,
     13492        0xa7b5, 0xa7b5,
     13493        0xa7b7, 0xa7b7,
     13494        0xab53, 0xab53,
     13495        0xab70, 0xabbf,
    1253313496        0xfb00, 0xfb06,
    1253413497        0xfb13, 0xfb17,
    1253513498        0xff41, 0xff5a,
    1253613499        0x10428, 0x1044f,
     13500        0x104d8, 0x104fb,
     13501        0x10cc0, 0x10cf2,
    1253713502        0x118c0, 0x118df,
     13503        0x1e922, 0x1e943,
    1253813504}; /* CR_Changes_When_Uppercased */
    1253913505
    1254013506/* 'Changes_When_Titlecased': Derived Property */
    1254113507static const OnigCodePoint CR_Changes_When_Titlecased[] = {
    12542         600,
     13508        608,
    1254313509        0x0061, 0x007a,
    1254413510        0x00b5, 0x00b5,
     
    1269213658        0x0263, 0x0263,
    1269313659        0x0265, 0x0266,
    12694         0x0268, 0x0269,
    12695         0x026b, 0x026c,
     13660        0x0268, 0x026c,
    1269613661        0x026f, 0x026f,
    1269713662        0x0271, 0x0272,
     
    1270213667        0x0287, 0x028c,
    1270313668        0x0292, 0x0292,
    12704         0x029e, 0x029e,
     13669        0x029d, 0x029e,
    1270513670        0x0345, 0x0345,
    1270613671        0x0371, 0x0371,
     
    1282813793        0x052f, 0x052f,
    1282913794        0x0561, 0x0587,
     13795        0x13f8, 0x13fd,
     13796        0x1c80, 0x1c88,
    1283013797        0x1d79, 0x1d79,
    1283113798        0x1d7d, 0x1d7d,
     
    1313614103        0xa7a7, 0xa7a7,
    1313714104        0xa7a9, 0xa7a9,
     14105        0xa7b5, 0xa7b5,
     14106        0xa7b7, 0xa7b7,
     14107        0xab53, 0xab53,
     14108        0xab70, 0xabbf,
    1313814109        0xfb00, 0xfb06,
    1313914110        0xfb13, 0xfb17,
    1314014111        0xff41, 0xff5a,
    1314114112        0x10428, 0x1044f,
     14113        0x104d8, 0x104fb,
     14114        0x10cc0, 0x10cf2,
    1314214115        0x118c0, 0x118df,
     14116        0x1e922, 0x1e943,
    1314314117}; /* CR_Changes_When_Titlecased */
    1314414118
    1314514119/* 'Changes_When_Casefolded': Derived Property */
    1314614120static const OnigCodePoint CR_Changes_When_Casefolded[] = {
    13147         596,
     14121        603,
    1314814122        0x0041, 0x005a,
    1314914123        0x00b5, 0x00b5,
     
    1342714401        0x10c7, 0x10c7,
    1342814402        0x10cd, 0x10cd,
     14403        0x13f8, 0x13fd,
     14404        0x1c80, 0x1c88,
    1342914405        0x1e00, 0x1e00,
    1343014406        0x1e02, 0x1e02,
     
    1373514711        0xa7a6, 0xa7a6,
    1373614712        0xa7a8, 0xa7a8,
    13737         0xa7aa, 0xa7ad,
    13738         0xa7b0, 0xa7b1,
     14713        0xa7aa, 0xa7ae,
     14714        0xa7b0, 0xa7b4,
     14715        0xa7b6, 0xa7b6,
     14716        0xab70, 0xabbf,
    1373914717        0xfb00, 0xfb06,
    1374014718        0xfb13, 0xfb17,
    1374114719        0xff21, 0xff3a,
    1374214720        0x10400, 0x10427,
     14721        0x104b0, 0x104d3,
     14722        0x10c80, 0x10cb2,
    1374314723        0x118a0, 0x118bf,
     14724        0x1e900, 0x1e921,
    1374414725}; /* CR_Changes_When_Casefolded */
    1374514726
    1374614727/* 'Changes_When_Casemapped': Derived Property */
    1374714728static const OnigCodePoint CR_Changes_When_Casemapped[] = {
    13748         107,
     14729        116,
    1374914730        0x0041, 0x005a,
    1375014731        0x0061, 0x007a,
     
    1376814749        0x0263, 0x0263,
    1376914750        0x0265, 0x0266,
    13770         0x0268, 0x0269,
    13771         0x026b, 0x026c,
     14751        0x0268, 0x026c,
    1377214752        0x026f, 0x026f,
    1377314753        0x0271, 0x0272,
     
    1377814758        0x0287, 0x028c,
    1377914759        0x0292, 0x0292,
    13780         0x029e, 0x029e,
     14760        0x029d, 0x029e,
    1378114761        0x0345, 0x0345,
    1378214762        0x0370, 0x0373,
     
    1379814778        0x10c7, 0x10c7,
    1379914779        0x10cd, 0x10cd,
     14780        0x13a0, 0x13f5,
     14781        0x13f8, 0x13fd,
     14782        0x1c80, 0x1c88,
    1380014783        0x1d79, 0x1d79,
    1380114784        0x1d7d, 0x1d7d,
     
    1384614829        0xa78b, 0xa78d,
    1384714830        0xa790, 0xa793,
    13848         0xa796, 0xa7ad,
    13849         0xa7b0, 0xa7b1,
     14831        0xa796, 0xa7ae,
     14832        0xa7b0, 0xa7b7,
     14833        0xab53, 0xab53,
     14834        0xab70, 0xabbf,
    1385014835        0xfb00, 0xfb06,
    1385114836        0xfb13, 0xfb17,
     
    1385314838        0xff41, 0xff5a,
    1385414839        0x10400, 0x1044f,
     14840        0x104b0, 0x104d3,
     14841        0x104d8, 0x104fb,
     14842        0x10c80, 0x10cb2,
     14843        0x10cc0, 0x10cf2,
    1385514844        0x118a0, 0x118df,
     14845        0x1e900, 0x1e943,
    1385614846}; /* CR_Changes_When_Casemapped */
    1385714847
    1385814848/* 'ID_Start': Derived Property */
    1385914849static const OnigCodePoint CR_ID_Start[] = {
    13860         538,
     14850        585,
    1386114851        0x0041, 0x005a,
    1386214852        0x0061, 0x007a,
     
    1390714897        0x0828, 0x0828,
    1390814898        0x0840, 0x0858,
    13909         0x08a0, 0x08b2,
     14899        0x0860, 0x086a,
     14900        0x08a0, 0x08b4,
     14901        0x08b6, 0x08bd,
    1391014902        0x0904, 0x0939,
    1391114903        0x093d, 0x093d,
     
    1392414916        0x09df, 0x09e1,
    1392514917        0x09f0, 0x09f1,
     14918        0x09fc, 0x09fc,
    1392614919        0x0a05, 0x0a0a,
    1392714920        0x0a0f, 0x0a10,
     
    1394314936        0x0ad0, 0x0ad0,
    1394414937        0x0ae0, 0x0ae1,
     14938        0x0af9, 0x0af9,
    1394514939        0x0b05, 0x0b0c,
    1394614940        0x0b0f, 0x0b10,
     
    1396914963        0x0c2a, 0x0c39,
    1397014964        0x0c3d, 0x0c3d,
    13971         0x0c58, 0x0c59,
     14965        0x0c58, 0x0c5a,
    1397214966        0x0c60, 0x0c61,
     14967        0x0c80, 0x0c80,
    1397314968        0x0c85, 0x0c8c,
    1397414969        0x0c8e, 0x0c90,
     
    1398514980        0x0d3d, 0x0d3d,
    1398614981        0x0d4e, 0x0d4e,
    13987         0x0d60, 0x0d61,
     14982        0x0d54, 0x0d56,
     14983        0x0d5f, 0x0d61,
    1398814984        0x0d7a, 0x0d7f,
    1398914985        0x0d85, 0x0d96,
     
    1404615042        0x1318, 0x135a,
    1404715043        0x1380, 0x138f,
    14048         0x13a0, 0x13f4,
     15044        0x13a0, 0x13f5,
     15045        0x13f8, 0x13fd,
    1404915046        0x1401, 0x166c,
    1405015047        0x166f, 0x167f,
     
    1406915066        0x1970, 0x1974,
    1407015067        0x1980, 0x19ab,
    14071         0x19c1, 0x19c7,
     15068        0x19b0, 0x19c9,
    1407215069        0x1a00, 0x1a16,
    1407315070        0x1a20, 0x1a54,
     
    1408115078        0x1c4d, 0x1c4f,
    1408215079        0x1c5a, 0x1c7d,
     15080        0x1c80, 0x1c88,
    1408315081        0x1ce9, 0x1cec,
    1408415082        0x1cee, 0x1cf1,
     
    1414715145        0x30a1, 0x30fa,
    1414815146        0x30fc, 0x30ff,
    14149         0x3105, 0x312d,
     15147        0x3105, 0x312e,
    1415015148        0x3131, 0x318e,
    1415115149        0x31a0, 0x31ba,
    1415215150        0x31f0, 0x31ff,
    1415315151        0x3400, 0x4db5,
    14154         0x4e00, 0x9fcc,
     15152        0x4e00, 0x9fea,
    1415515153        0xa000, 0xa48c,
    1415615154        0xa4d0, 0xa4fd,
     
    1416315161        0xa717, 0xa71f,
    1416415162        0xa722, 0xa788,
    14165         0xa78b, 0xa78e,
    14166         0xa790, 0xa7ad,
    14167         0xa7b0, 0xa7b1,
     15163        0xa78b, 0xa7ae,
     15164        0xa7b0, 0xa7b7,
    1416815165        0xa7f7, 0xa801,
    1416915166        0xa803, 0xa805,
     
    1417415171        0xa8f2, 0xa8f7,
    1417515172        0xa8fb, 0xa8fb,
     15173        0xa8fd, 0xa8fd,
    1417615174        0xa90a, 0xa925,
    1417715175        0xa930, 0xa946,
     
    1420215200        0xab28, 0xab2e,
    1420315201        0xab30, 0xab5a,
    14204         0xab5c, 0xab5f,
    14205         0xab64, 0xab65,
    14206         0xabc0, 0xabe2,
     15202        0xab5c, 0xab65,
     15203        0xab70, 0xabe2,
    1420715204        0xac00, 0xd7a3,
    1420815205        0xd7b0, 0xd7c6,
     
    1424415241        0x102a0, 0x102d0,
    1424515242        0x10300, 0x1031f,
    14246         0x10330, 0x1034a,
     15243        0x1032d, 0x1034a,
    1424715244        0x10350, 0x10375,
    1424815245        0x10380, 0x1039d,
     
    1425115248        0x103d1, 0x103d5,
    1425215249        0x10400, 0x1049d,
     15250        0x104b0, 0x104d3,
     15251        0x104d8, 0x104fb,
    1425315252        0x10500, 0x10527,
    1425415253        0x10530, 0x10563,
     
    1426415263        0x10860, 0x10876,
    1426515264        0x10880, 0x1089e,
     15265        0x108e0, 0x108f2,
     15266        0x108f4, 0x108f5,
    1426615267        0x10900, 0x10915,
    1426715268        0x10920, 0x10939,
     
    1428115282        0x10b80, 0x10b91,
    1428215283        0x10c00, 0x10c48,
     15284        0x10c80, 0x10cb2,
     15285        0x10cc0, 0x10cf2,
    1428315286        0x11003, 0x11037,
    1428415287        0x11083, 0x110af,
     
    1429015293        0x111c1, 0x111c4,
    1429115294        0x111da, 0x111da,
     15295        0x111dc, 0x111dc,
    1429215296        0x11200, 0x11211,
    1429315297        0x11213, 0x1122b,
     15298        0x11280, 0x11286,
     15299        0x11288, 0x11288,
     15300        0x1128a, 0x1128d,
     15301        0x1128f, 0x1129d,
     15302        0x1129f, 0x112a8,
    1429415303        0x112b0, 0x112de,
    1429515304        0x11305, 0x1130c,
     
    1430015309        0x11335, 0x11339,
    1430115310        0x1133d, 0x1133d,
     15311        0x11350, 0x11350,
    1430215312        0x1135d, 0x11361,
     15313        0x11400, 0x11434,
     15314        0x11447, 0x1144a,
    1430315315        0x11480, 0x114af,
    1430415316        0x114c4, 0x114c5,
    1430515317        0x114c7, 0x114c7,
    1430615318        0x11580, 0x115ae,
     15319        0x115d8, 0x115db,
    1430715320        0x11600, 0x1162f,
    1430815321        0x11644, 0x11644,
    1430915322        0x11680, 0x116aa,
     15323        0x11700, 0x11719,
    1431015324        0x118a0, 0x118df,
    1431115325        0x118ff, 0x118ff,
     15326        0x11a00, 0x11a00,
     15327        0x11a0b, 0x11a32,
     15328        0x11a3a, 0x11a3a,
     15329        0x11a50, 0x11a50,
     15330        0x11a5c, 0x11a83,
     15331        0x11a86, 0x11a89,
    1431215332        0x11ac0, 0x11af8,
    14313         0x12000, 0x12398,
     15333        0x11c00, 0x11c08,
     15334        0x11c0a, 0x11c2e,
     15335        0x11c40, 0x11c40,
     15336        0x11c72, 0x11c8f,
     15337        0x11d00, 0x11d06,
     15338        0x11d08, 0x11d09,
     15339        0x11d0b, 0x11d30,
     15340        0x11d46, 0x11d46,
     15341        0x12000, 0x12399,
    1431415342        0x12400, 0x1246e,
     15343        0x12480, 0x12543,
    1431515344        0x13000, 0x1342e,
     15345        0x14400, 0x14646,
    1431615346        0x16800, 0x16a38,
    1431715347        0x16a40, 0x16a5e,
     
    1432415354        0x16f50, 0x16f50,
    1432515355        0x16f93, 0x16f9f,
    14326         0x1b000, 0x1b001,
     15356        0x16fe0, 0x16fe1,
     15357        0x17000, 0x187ec,
     15358        0x18800, 0x18af2,
     15359        0x1b000, 0x1b11e,
     15360        0x1b170, 0x1b2fb,
    1432715361        0x1bc00, 0x1bc6a,
    1432815362        0x1bc70, 0x1bc7c,
     
    1436015394        0x1d7c4, 0x1d7cb,
    1436115395        0x1e800, 0x1e8c4,
     15396        0x1e900, 0x1e943,
    1436215397        0x1ee00, 0x1ee03,
    1436315398        0x1ee05, 0x1ee1f,
     
    1439615431        0x2a700, 0x2b734,
    1439715432        0x2b740, 0x2b81d,
     15433        0x2b820, 0x2cea1,
     15434        0x2ceb0, 0x2ebe0,
    1439815435        0x2f800, 0x2fa1d,
    1439915436}; /* CR_ID_Start */
     
    1440115438/* 'ID_Continue': Derived Property */
    1440215439static const OnigCodePoint CR_ID_Continue[] = {
    14403         626,
     15440        689,
    1440415441        0x0030, 0x0039,
    1440515442        0x0041, 0x005a,
     
    1445115488        0x0800, 0x082d,
    1445215489        0x0840, 0x085b,
    14453         0x08a0, 0x08b2,
    14454         0x08e4, 0x0963,
     15490        0x0860, 0x086a,
     15491        0x08a0, 0x08b4,
     15492        0x08b6, 0x08bd,
     15493        0x08d4, 0x08e1,
     15494        0x08e3, 0x0963,
    1445515495        0x0966, 0x096f,
    1445615496        0x0971, 0x0983,
     
    1446815508        0x09df, 0x09e3,
    1446915509        0x09e6, 0x09f1,
     15510        0x09fc, 0x09fc,
    1447015511        0x0a01, 0x0a03,
    1447115512        0x0a05, 0x0a0a,
     
    1449715538        0x0ae0, 0x0ae3,
    1449815539        0x0ae6, 0x0aef,
     15540        0x0af9, 0x0aff,
    1449915541        0x0b01, 0x0b03,
    1450015542        0x0b05, 0x0b0c,
     
    1453715579        0x0c4a, 0x0c4d,
    1453815580        0x0c55, 0x0c56,
    14539         0x0c58, 0x0c59,
     15581        0x0c58, 0x0c5a,
    1454015582        0x0c60, 0x0c63,
    1454115583        0x0c66, 0x0c6f,
    14542         0x0c81, 0x0c83,
     15584        0x0c80, 0x0c83,
    1454315585        0x0c85, 0x0c8c,
    1454415586        0x0c8e, 0x0c90,
     
    1455415596        0x0ce6, 0x0cef,
    1455515597        0x0cf1, 0x0cf2,
    14556         0x0d01, 0x0d03,
     15598        0x0d00, 0x0d03,
    1455715599        0x0d05, 0x0d0c,
    1455815600        0x0d0e, 0x0d10,
    14559         0x0d12, 0x0d3a,
    14560         0x0d3d, 0x0d44,
     15601        0x0d12, 0x0d44,
    1456115602        0x0d46, 0x0d48,
    1456215603        0x0d4a, 0x0d4e,
    14563         0x0d57, 0x0d57,
    14564         0x0d60, 0x0d63,
     15604        0x0d54, 0x0d57,
     15605        0x0d5f, 0x0d63,
    1456515606        0x0d66, 0x0d6f,
    1456615607        0x0d7a, 0x0d7f,
     
    1463515676        0x1369, 0x1371,
    1463615677        0x1380, 0x138f,
    14637         0x13a0, 0x13f4,
     15678        0x13a0, 0x13f5,
     15679        0x13f8, 0x13fd,
    1463815680        0x1401, 0x166c,
    1463915681        0x166f, 0x167f,
     
    1467915721        0x1c40, 0x1c49,
    1468015722        0x1c4d, 0x1c7d,
     15723        0x1c80, 0x1c88,
    1468115724        0x1cd0, 0x1cd2,
    14682         0x1cd4, 0x1cf6,
    14683         0x1cf8, 0x1cf9,
    14684         0x1d00, 0x1df5,
    14685         0x1dfc, 0x1f15,
     15725        0x1cd4, 0x1cf9,
     15726        0x1d00, 0x1df9,
     15727        0x1dfb, 0x1f15,
    1468615728        0x1f18, 0x1f1d,
    1468715729        0x1f20, 0x1f45,
     
    1475015792        0x30a1, 0x30fa,
    1475115793        0x30fc, 0x30ff,
    14752         0x3105, 0x312d,
     15794        0x3105, 0x312e,
    1475315795        0x3131, 0x318e,
    1475415796        0x31a0, 0x31ba,
    1475515797        0x31f0, 0x31ff,
    1475615798        0x3400, 0x4db5,
    14757         0x4e00, 0x9fcc,
     15799        0x4e00, 0x9fea,
    1475815800        0xa000, 0xa48c,
    1475915801        0xa4d0, 0xa4fd,
     
    1476215804        0xa640, 0xa66f,
    1476315805        0xa674, 0xa67d,
    14764         0xa67f, 0xa69d,
    14765         0xa69f, 0xa6f1,
     15806        0xa67f, 0xa6f1,
    1476615807        0xa717, 0xa71f,
    1476715808        0xa722, 0xa788,
    14768         0xa78b, 0xa78e,
    14769         0xa790, 0xa7ad,
    14770         0xa7b0, 0xa7b1,
     15809        0xa78b, 0xa7ae,
     15810        0xa7b0, 0xa7b7,
    1477115811        0xa7f7, 0xa827,
    1477215812        0xa840, 0xa873,
    14773         0xa880, 0xa8c4,
     15813        0xa880, 0xa8c5,
    1477415814        0xa8d0, 0xa8d9,
    1477515815        0xa8e0, 0xa8f7,
    1477615816        0xa8fb, 0xa8fb,
     15817        0xa8fd, 0xa8fd,
    1477715818        0xa900, 0xa92d,
    1477815819        0xa930, 0xa953,
     
    1479515836        0xab28, 0xab2e,
    1479615837        0xab30, 0xab5a,
    14797         0xab5c, 0xab5f,
    14798         0xab64, 0xab65,
    14799         0xabc0, 0xabea,
     15838        0xab5c, 0xab65,
     15839        0xab70, 0xabea,
    1480015840        0xabec, 0xabed,
    1480115841        0xabf0, 0xabf9,
     
    1481915859        0xfdf0, 0xfdfb,
    1482015860        0xfe00, 0xfe0f,
    14821         0xfe20, 0xfe2d,
     15861        0xfe20, 0xfe2f,
    1482215862        0xfe33, 0xfe34,
    1482315863        0xfe4d, 0xfe4f,
     
    1484615886        0x102e0, 0x102e0,
    1484715887        0x10300, 0x1031f,
    14848         0x10330, 0x1034a,
     15888        0x1032d, 0x1034a,
    1484915889        0x10350, 0x1037a,
    1485015890        0x10380, 0x1039d,
     
    1485415894        0x10400, 0x1049d,
    1485515895        0x104a0, 0x104a9,
     15896        0x104b0, 0x104d3,
     15897        0x104d8, 0x104fb,
    1485615898        0x10500, 0x10527,
    1485715899        0x10530, 0x10563,
     
    1486715909        0x10860, 0x10876,
    1486815910        0x10880, 0x1089e,
     15911        0x108e0, 0x108f2,
     15912        0x108f4, 0x108f5,
    1486915913        0x10900, 0x10915,
    1487015914        0x10920, 0x10939,
     
    1488715931        0x10b80, 0x10b91,
    1488815932        0x10c00, 0x10c48,
     15933        0x10c80, 0x10cb2,
     15934        0x10cc0, 0x10cf2,
    1488915935        0x11000, 0x11046,
    1489015936        0x11066, 0x1106f,
     
    1489715943        0x11176, 0x11176,
    1489815944        0x11180, 0x111c4,
     15945        0x111ca, 0x111cc,
    1489915946        0x111d0, 0x111da,
     15947        0x111dc, 0x111dc,
    1490015948        0x11200, 0x11211,
    1490115949        0x11213, 0x11237,
     15950        0x1123e, 0x1123e,
     15951        0x11280, 0x11286,
     15952        0x11288, 0x11288,
     15953        0x1128a, 0x1128d,
     15954        0x1128f, 0x1129d,
     15955        0x1129f, 0x112a8,
    1490215956        0x112b0, 0x112ea,
    1490315957        0x112f0, 0x112f9,
    14904         0x11301, 0x11303,
     15958        0x11300, 0x11303,
    1490515959        0x11305, 0x1130c,
    1490615960        0x1130f, 0x11310,
     
    1491215966        0x11347, 0x11348,
    1491315967        0x1134b, 0x1134d,
     15968        0x11350, 0x11350,
    1491415969        0x11357, 0x11357,
    1491515970        0x1135d, 0x11363,
    1491615971        0x11366, 0x1136c,
    1491715972        0x11370, 0x11374,
     15973        0x11400, 0x1144a,
     15974        0x11450, 0x11459,
    1491815975        0x11480, 0x114c5,
    1491915976        0x114c7, 0x114c7,
     
    1492115978        0x11580, 0x115b5,
    1492215979        0x115b8, 0x115c0,
     15980        0x115d8, 0x115dd,
    1492315981        0x11600, 0x11640,
    1492415982        0x11644, 0x11644,
     
    1492615984        0x11680, 0x116b7,
    1492715985        0x116c0, 0x116c9,
     15986        0x11700, 0x11719,
     15987        0x1171d, 0x1172b,
     15988        0x11730, 0x11739,
    1492815989        0x118a0, 0x118e9,
    1492915990        0x118ff, 0x118ff,
     15991        0x11a00, 0x11a3e,
     15992        0x11a47, 0x11a47,
     15993        0x11a50, 0x11a83,
     15994        0x11a86, 0x11a99,
    1493015995        0x11ac0, 0x11af8,
    14931         0x12000, 0x12398,
     15996        0x11c00, 0x11c08,
     15997        0x11c0a, 0x11c36,
     15998        0x11c38, 0x11c40,
     15999        0x11c50, 0x11c59,
     16000        0x11c72, 0x11c8f,
     16001        0x11c92, 0x11ca7,
     16002        0x11ca9, 0x11cb6,
     16003        0x11d00, 0x11d06,
     16004        0x11d08, 0x11d09,
     16005        0x11d0b, 0x11d36,
     16006        0x11d3a, 0x11d3a,
     16007        0x11d3c, 0x11d3d,
     16008        0x11d3f, 0x11d47,
     16009        0x11d50, 0x11d59,
     16010        0x12000, 0x12399,
    1493216011        0x12400, 0x1246e,
     16012        0x12480, 0x12543,
    1493316013        0x13000, 0x1342e,
     16014        0x14400, 0x14646,
    1493416015        0x16800, 0x16a38,
    1493516016        0x16a40, 0x16a5e,
     
    1494516026        0x16f50, 0x16f7e,
    1494616027        0x16f8f, 0x16f9f,
    14947         0x1b000, 0x1b001,
     16028        0x16fe0, 0x16fe1,
     16029        0x17000, 0x187ec,
     16030        0x18800, 0x18af2,
     16031        0x1b000, 0x1b11e,
     16032        0x1b170, 0x1b2fb,
    1494816033        0x1bc00, 0x1bc6a,
    1494916034        0x1bc70, 0x1bc7c,
     
    1498816073        0x1d7c4, 0x1d7cb,
    1498916074        0x1d7ce, 0x1d7ff,
     16075        0x1da00, 0x1da36,
     16076        0x1da3b, 0x1da6c,
     16077        0x1da75, 0x1da75,
     16078        0x1da84, 0x1da84,
     16079        0x1da9b, 0x1da9f,
     16080        0x1daa1, 0x1daaf,
     16081        0x1e000, 0x1e006,
     16082        0x1e008, 0x1e018,
     16083        0x1e01b, 0x1e021,
     16084        0x1e023, 0x1e024,
     16085        0x1e026, 0x1e02a,
    1499016086        0x1e800, 0x1e8c4,
    1499116087        0x1e8d0, 0x1e8d6,
     16088        0x1e900, 0x1e94a,
     16089        0x1e950, 0x1e959,
    1499216090        0x1ee00, 0x1ee03,
    1499316091        0x1ee05, 0x1ee1f,
     
    1502616124        0x2a700, 0x2b734,
    1502716125        0x2b740, 0x2b81d,
     16126        0x2b820, 0x2cea1,
     16127        0x2ceb0, 0x2ebe0,
    1502816128        0x2f800, 0x2fa1d,
    1502916129        0xe0100, 0xe01ef,
     
    1503216132/* 'XID_Start': Derived Property */
    1503316133static const OnigCodePoint CR_XID_Start[] = {
    15034         545,
     16134        592,
    1503516135        0x0041, 0x005a,
    1503616136        0x0061, 0x007a,
     
    1508116181        0x0828, 0x0828,
    1508216182        0x0840, 0x0858,
    15083         0x08a0, 0x08b2,
     16183        0x0860, 0x086a,
     16184        0x08a0, 0x08b4,
     16185        0x08b6, 0x08bd,
    1508416186        0x0904, 0x0939,
    1508516187        0x093d, 0x093d,
     
    1509816200        0x09df, 0x09e1,
    1509916201        0x09f0, 0x09f1,
     16202        0x09fc, 0x09fc,
    1510016203        0x0a05, 0x0a0a,
    1510116204        0x0a0f, 0x0a10,
     
    1511716220        0x0ad0, 0x0ad0,
    1511816221        0x0ae0, 0x0ae1,
     16222        0x0af9, 0x0af9,
    1511916223        0x0b05, 0x0b0c,
    1512016224        0x0b0f, 0x0b10,
     
    1514316247        0x0c2a, 0x0c39,
    1514416248        0x0c3d, 0x0c3d,
    15145         0x0c58, 0x0c59,
     16249        0x0c58, 0x0c5a,
    1514616250        0x0c60, 0x0c61,
     16251        0x0c80, 0x0c80,
    1514716252        0x0c85, 0x0c8c,
    1514816253        0x0c8e, 0x0c90,
     
    1515916264        0x0d3d, 0x0d3d,
    1516016265        0x0d4e, 0x0d4e,
    15161         0x0d60, 0x0d61,
     16266        0x0d54, 0x0d56,
     16267        0x0d5f, 0x0d61,
    1516216268        0x0d7a, 0x0d7f,
    1516316269        0x0d85, 0x0d96,
     
    1522016326        0x1318, 0x135a,
    1522116327        0x1380, 0x138f,
    15222         0x13a0, 0x13f4,
     16328        0x13a0, 0x13f5,
     16329        0x13f8, 0x13fd,
    1522316330        0x1401, 0x166c,
    1522416331        0x166f, 0x167f,
     
    1524316350        0x1970, 0x1974,
    1524416351        0x1980, 0x19ab,
    15245         0x19c1, 0x19c7,
     16352        0x19b0, 0x19c9,
    1524616353        0x1a00, 0x1a16,
    1524716354        0x1a20, 0x1a54,
     
    1525516362        0x1c4d, 0x1c4f,
    1525616363        0x1c5a, 0x1c7d,
     16364        0x1c80, 0x1c88,
    1525716365        0x1ce9, 0x1cec,
    1525816366        0x1cee, 0x1cf1,
     
    1532116429        0x30a1, 0x30fa,
    1532216430        0x30fc, 0x30ff,
    15323         0x3105, 0x312d,
     16431        0x3105, 0x312e,
    1532416432        0x3131, 0x318e,
    1532516433        0x31a0, 0x31ba,
    1532616434        0x31f0, 0x31ff,
    1532716435        0x3400, 0x4db5,
    15328         0x4e00, 0x9fcc,
     16436        0x4e00, 0x9fea,
    1532916437        0xa000, 0xa48c,
    1533016438        0xa4d0, 0xa4fd,
     
    1533716445        0xa717, 0xa71f,
    1533816446        0xa722, 0xa788,
    15339         0xa78b, 0xa78e,
    15340         0xa790, 0xa7ad,
    15341         0xa7b0, 0xa7b1,
     16447        0xa78b, 0xa7ae,
     16448        0xa7b0, 0xa7b7,
    1534216449        0xa7f7, 0xa801,
    1534316450        0xa803, 0xa805,
     
    1534816455        0xa8f2, 0xa8f7,
    1534916456        0xa8fb, 0xa8fb,
     16457        0xa8fd, 0xa8fd,
    1535016458        0xa90a, 0xa925,
    1535116459        0xa930, 0xa946,
     
    1537616484        0xab28, 0xab2e,
    1537716485        0xab30, 0xab5a,
    15378         0xab5c, 0xab5f,
    15379         0xab64, 0xab65,
    15380         0xabc0, 0xabe2,
     16486        0xab5c, 0xab65,
     16487        0xab70, 0xabe2,
    1538116488        0xac00, 0xd7a3,
    1538216489        0xd7b0, 0xd7c6,
     
    1542516532        0x102a0, 0x102d0,
    1542616533        0x10300, 0x1031f,
    15427         0x10330, 0x1034a,
     16534        0x1032d, 0x1034a,
    1542816535        0x10350, 0x10375,
    1542916536        0x10380, 0x1039d,
     
    1543216539        0x103d1, 0x103d5,
    1543316540        0x10400, 0x1049d,
     16541        0x104b0, 0x104d3,
     16542        0x104d8, 0x104fb,
    1543416543        0x10500, 0x10527,
    1543516544        0x10530, 0x10563,
     
    1544516554        0x10860, 0x10876,
    1544616555        0x10880, 0x1089e,
     16556        0x108e0, 0x108f2,
     16557        0x108f4, 0x108f5,
    1544716558        0x10900, 0x10915,
    1544816559        0x10920, 0x10939,
     
    1546216573        0x10b80, 0x10b91,
    1546316574        0x10c00, 0x10c48,
     16575        0x10c80, 0x10cb2,
     16576        0x10cc0, 0x10cf2,
    1546416577        0x11003, 0x11037,
    1546516578        0x11083, 0x110af,
     
    1547116584        0x111c1, 0x111c4,
    1547216585        0x111da, 0x111da,
     16586        0x111dc, 0x111dc,
    1547316587        0x11200, 0x11211,
    1547416588        0x11213, 0x1122b,
     16589        0x11280, 0x11286,
     16590        0x11288, 0x11288,
     16591        0x1128a, 0x1128d,
     16592        0x1128f, 0x1129d,
     16593        0x1129f, 0x112a8,
    1547516594        0x112b0, 0x112de,
    1547616595        0x11305, 0x1130c,
     
    1548116600        0x11335, 0x11339,
    1548216601        0x1133d, 0x1133d,
     16602        0x11350, 0x11350,
    1548316603        0x1135d, 0x11361,
     16604        0x11400, 0x11434,
     16605        0x11447, 0x1144a,
    1548416606        0x11480, 0x114af,
    1548516607        0x114c4, 0x114c5,
    1548616608        0x114c7, 0x114c7,
    1548716609        0x11580, 0x115ae,
     16610        0x115d8, 0x115db,
    1548816611        0x11600, 0x1162f,
    1548916612        0x11644, 0x11644,
    1549016613        0x11680, 0x116aa,
     16614        0x11700, 0x11719,
    1549116615        0x118a0, 0x118df,
    1549216616        0x118ff, 0x118ff,
     16617        0x11a00, 0x11a00,
     16618        0x11a0b, 0x11a32,
     16619        0x11a3a, 0x11a3a,
     16620        0x11a50, 0x11a50,
     16621        0x11a5c, 0x11a83,
     16622        0x11a86, 0x11a89,
    1549316623        0x11ac0, 0x11af8,
    15494         0x12000, 0x12398,
     16624        0x11c00, 0x11c08,
     16625        0x11c0a, 0x11c2e,
     16626        0x11c40, 0x11c40,
     16627        0x11c72, 0x11c8f,
     16628        0x11d00, 0x11d06,
     16629        0x11d08, 0x11d09,
     16630        0x11d0b, 0x11d30,
     16631        0x11d46, 0x11d46,
     16632        0x12000, 0x12399,
    1549516633        0x12400, 0x1246e,
     16634        0x12480, 0x12543,
    1549616635        0x13000, 0x1342e,
     16636        0x14400, 0x14646,
    1549716637        0x16800, 0x16a38,
    1549816638        0x16a40, 0x16a5e,
     
    1550516645        0x16f50, 0x16f50,
    1550616646        0x16f93, 0x16f9f,
    15507         0x1b000, 0x1b001,
     16647        0x16fe0, 0x16fe1,
     16648        0x17000, 0x187ec,
     16649        0x18800, 0x18af2,
     16650        0x1b000, 0x1b11e,
     16651        0x1b170, 0x1b2fb,
    1550816652        0x1bc00, 0x1bc6a,
    1550916653        0x1bc70, 0x1bc7c,
     
    1554116685        0x1d7c4, 0x1d7cb,
    1554216686        0x1e800, 0x1e8c4,
     16687        0x1e900, 0x1e943,
    1554316688        0x1ee00, 0x1ee03,
    1554416689        0x1ee05, 0x1ee1f,
     
    1557716722        0x2a700, 0x2b734,
    1557816723        0x2b740, 0x2b81d,
     16724        0x2b820, 0x2cea1,
     16725        0x2ceb0, 0x2ebe0,
    1557916726        0x2f800, 0x2fa1d,
    1558016727}; /* CR_XID_Start */
     
    1558216729/* 'XID_Continue': Derived Property */
    1558316730static const OnigCodePoint CR_XID_Continue[] = {
    15584         633,
     16731        696,
    1558516732        0x0030, 0x0039,
    1558616733        0x0041, 0x005a,
     
    1563216779        0x0800, 0x082d,
    1563316780        0x0840, 0x085b,
    15634         0x08a0, 0x08b2,
    15635         0x08e4, 0x0963,
     16781        0x0860, 0x086a,
     16782        0x08a0, 0x08b4,
     16783        0x08b6, 0x08bd,
     16784        0x08d4, 0x08e1,
     16785        0x08e3, 0x0963,
    1563616786        0x0966, 0x096f,
    1563716787        0x0971, 0x0983,
     
    1564916799        0x09df, 0x09e3,
    1565016800        0x09e6, 0x09f1,
     16801        0x09fc, 0x09fc,
    1565116802        0x0a01, 0x0a03,
    1565216803        0x0a05, 0x0a0a,
     
    1567816829        0x0ae0, 0x0ae3,
    1567916830        0x0ae6, 0x0aef,
     16831        0x0af9, 0x0aff,
    1568016832        0x0b01, 0x0b03,
    1568116833        0x0b05, 0x0b0c,
     
    1571816870        0x0c4a, 0x0c4d,
    1571916871        0x0c55, 0x0c56,
    15720         0x0c58, 0x0c59,
     16872        0x0c58, 0x0c5a,
    1572116873        0x0c60, 0x0c63,
    1572216874        0x0c66, 0x0c6f,
    15723         0x0c81, 0x0c83,
     16875        0x0c80, 0x0c83,
    1572416876        0x0c85, 0x0c8c,
    1572516877        0x0c8e, 0x0c90,
     
    1573516887        0x0ce6, 0x0cef,
    1573616888        0x0cf1, 0x0cf2,
    15737         0x0d01, 0x0d03,
     16889        0x0d00, 0x0d03,
    1573816890        0x0d05, 0x0d0c,
    1573916891        0x0d0e, 0x0d10,
    15740         0x0d12, 0x0d3a,
    15741         0x0d3d, 0x0d44,
     16892        0x0d12, 0x0d44,
    1574216893        0x0d46, 0x0d48,
    1574316894        0x0d4a, 0x0d4e,
    15744         0x0d57, 0x0d57,
    15745         0x0d60, 0x0d63,
     16895        0x0d54, 0x0d57,
     16896        0x0d5f, 0x0d63,
    1574616897        0x0d66, 0x0d6f,
    1574716898        0x0d7a, 0x0d7f,
     
    1581616967        0x1369, 0x1371,
    1581716968        0x1380, 0x138f,
    15818         0x13a0, 0x13f4,
     16969        0x13a0, 0x13f5,
     16970        0x13f8, 0x13fd,
    1581916971        0x1401, 0x166c,
    1582016972        0x166f, 0x167f,
     
    1586017012        0x1c40, 0x1c49,
    1586117013        0x1c4d, 0x1c7d,
     17014        0x1c80, 0x1c88,
    1586217015        0x1cd0, 0x1cd2,
    15863         0x1cd4, 0x1cf6,
    15864         0x1cf8, 0x1cf9,
    15865         0x1d00, 0x1df5,
    15866         0x1dfc, 0x1f15,
     17016        0x1cd4, 0x1cf9,
     17017        0x1d00, 0x1df9,
     17018        0x1dfb, 0x1f15,
    1586717019        0x1f18, 0x1f1d,
    1586817020        0x1f20, 0x1f45,
     
    1593217084        0x30a1, 0x30fa,
    1593317085        0x30fc, 0x30ff,
    15934         0x3105, 0x312d,
     17086        0x3105, 0x312e,
    1593517087        0x3131, 0x318e,
    1593617088        0x31a0, 0x31ba,
    1593717089        0x31f0, 0x31ff,
    1593817090        0x3400, 0x4db5,
    15939         0x4e00, 0x9fcc,
     17091        0x4e00, 0x9fea,
    1594017092        0xa000, 0xa48c,
    1594117093        0xa4d0, 0xa4fd,
     
    1594417096        0xa640, 0xa66f,
    1594517097        0xa674, 0xa67d,
    15946         0xa67f, 0xa69d,
    15947         0xa69f, 0xa6f1,
     17098        0xa67f, 0xa6f1,
    1594817099        0xa717, 0xa71f,
    1594917100        0xa722, 0xa788,
    15950         0xa78b, 0xa78e,
    15951         0xa790, 0xa7ad,
    15952         0xa7b0, 0xa7b1,
     17101        0xa78b, 0xa7ae,
     17102        0xa7b0, 0xa7b7,
    1595317103        0xa7f7, 0xa827,
    1595417104        0xa840, 0xa873,
    15955         0xa880, 0xa8c4,
     17105        0xa880, 0xa8c5,
    1595617106        0xa8d0, 0xa8d9,
    1595717107        0xa8e0, 0xa8f7,
    1595817108        0xa8fb, 0xa8fb,
     17109        0xa8fd, 0xa8fd,
    1595917110        0xa900, 0xa92d,
    1596017111        0xa930, 0xa953,
     
    1597717128        0xab28, 0xab2e,
    1597817129        0xab30, 0xab5a,
    15979         0xab5c, 0xab5f,
    15980         0xab64, 0xab65,
    15981         0xabc0, 0xabea,
     17130        0xab5c, 0xab65,
     17131        0xab70, 0xabea,
    1598217132        0xabec, 0xabed,
    1598317133        0xabf0, 0xabf9,
     
    1600217152        0xfdf0, 0xfdf9,
    1600317153        0xfe00, 0xfe0f,
    16004         0xfe20, 0xfe2d,
     17154        0xfe20, 0xfe2f,
    1600517155        0xfe33, 0xfe34,
    1600617156        0xfe4d, 0xfe4f,
     
    1603417184        0x102e0, 0x102e0,
    1603517185        0x10300, 0x1031f,
    16036         0x10330, 0x1034a,
     17186        0x1032d, 0x1034a,
    1603717187        0x10350, 0x1037a,
    1603817188        0x10380, 0x1039d,
     
    1604217192        0x10400, 0x1049d,
    1604317193        0x104a0, 0x104a9,
     17194        0x104b0, 0x104d3,
     17195        0x104d8, 0x104fb,
    1604417196        0x10500, 0x10527,
    1604517197        0x10530, 0x10563,
     
    1605517207        0x10860, 0x10876,
    1605617208        0x10880, 0x1089e,
     17209        0x108e0, 0x108f2,
     17210        0x108f4, 0x108f5,
    1605717211        0x10900, 0x10915,
    1605817212        0x10920, 0x10939,
     
    1607517229        0x10b80, 0x10b91,
    1607617230        0x10c00, 0x10c48,
     17231        0x10c80, 0x10cb2,
     17232        0x10cc0, 0x10cf2,
    1607717233        0x11000, 0x11046,
    1607817234        0x11066, 0x1106f,
     
    1608517241        0x11176, 0x11176,
    1608617242        0x11180, 0x111c4,
     17243        0x111ca, 0x111cc,
    1608717244        0x111d0, 0x111da,
     17245        0x111dc, 0x111dc,
    1608817246        0x11200, 0x11211,
    1608917247        0x11213, 0x11237,
     17248        0x1123e, 0x1123e,
     17249        0x11280, 0x11286,
     17250        0x11288, 0x11288,
     17251        0x1128a, 0x1128d,
     17252        0x1128f, 0x1129d,
     17253        0x1129f, 0x112a8,
    1609017254        0x112b0, 0x112ea,
    1609117255        0x112f0, 0x112f9,
    16092         0x11301, 0x11303,
     17256        0x11300, 0x11303,
    1609317257        0x11305, 0x1130c,
    1609417258        0x1130f, 0x11310,
     
    1610017264        0x11347, 0x11348,
    1610117265        0x1134b, 0x1134d,
     17266        0x11350, 0x11350,
    1610217267        0x11357, 0x11357,
    1610317268        0x1135d, 0x11363,
    1610417269        0x11366, 0x1136c,
    1610517270        0x11370, 0x11374,
     17271        0x11400, 0x1144a,
     17272        0x11450, 0x11459,
    1610617273        0x11480, 0x114c5,
    1610717274        0x114c7, 0x114c7,
     
    1610917276        0x11580, 0x115b5,
    1611017277        0x115b8, 0x115c0,
     17278        0x115d8, 0x115dd,
    1611117279        0x11600, 0x11640,
    1611217280        0x11644, 0x11644,
     
    1611417282        0x11680, 0x116b7,
    1611517283        0x116c0, 0x116c9,
     17284        0x11700, 0x11719,
     17285        0x1171d, 0x1172b,
     17286        0x11730, 0x11739,
    1611617287        0x118a0, 0x118e9,
    1611717288        0x118ff, 0x118ff,
     17289        0x11a00, 0x11a3e,
     17290        0x11a47, 0x11a47,
     17291        0x11a50, 0x11a83,
     17292        0x11a86, 0x11a99,
    1611817293        0x11ac0, 0x11af8,
    16119         0x12000, 0x12398,
     17294        0x11c00, 0x11c08,
     17295        0x11c0a, 0x11c36,
     17296        0x11c38, 0x11c40,
     17297        0x11c50, 0x11c59,
     17298        0x11c72, 0x11c8f,
     17299        0x11c92, 0x11ca7,
     17300        0x11ca9, 0x11cb6,
     17301        0x11d00, 0x11d06,
     17302        0x11d08, 0x11d09,
     17303        0x11d0b, 0x11d36,
     17304        0x11d3a, 0x11d3a,
     17305        0x11d3c, 0x11d3d,
     17306        0x11d3f, 0x11d47,
     17307        0x11d50, 0x11d59,
     17308        0x12000, 0x12399,
    1612017309        0x12400, 0x1246e,
     17310        0x12480, 0x12543,
    1612117311        0x13000, 0x1342e,
     17312        0x14400, 0x14646,
    1612217313        0x16800, 0x16a38,
    1612317314        0x16a40, 0x16a5e,
     
    1613317324        0x16f50, 0x16f7e,
    1613417325        0x16f8f, 0x16f9f,
    16135         0x1b000, 0x1b001,
     17326        0x16fe0, 0x16fe1,
     17327        0x17000, 0x187ec,
     17328        0x18800, 0x18af2,
     17329        0x1b000, 0x1b11e,
     17330        0x1b170, 0x1b2fb,
    1613617331        0x1bc00, 0x1bc6a,
    1613717332        0x1bc70, 0x1bc7c,
     
    1617617371        0x1d7c4, 0x1d7cb,
    1617717372        0x1d7ce, 0x1d7ff,
     17373        0x1da00, 0x1da36,
     17374        0x1da3b, 0x1da6c,
     17375        0x1da75, 0x1da75,
     17376        0x1da84, 0x1da84,
     17377        0x1da9b, 0x1da9f,
     17378        0x1daa1, 0x1daaf,
     17379        0x1e000, 0x1e006,
     17380        0x1e008, 0x1e018,
     17381        0x1e01b, 0x1e021,
     17382        0x1e023, 0x1e024,
     17383        0x1e026, 0x1e02a,
    1617817384        0x1e800, 0x1e8c4,
    1617917385        0x1e8d0, 0x1e8d6,
     17386        0x1e900, 0x1e94a,
     17387        0x1e950, 0x1e959,
    1618017388        0x1ee00, 0x1ee03,
    1618117389        0x1ee05, 0x1ee1f,
     
    1621417422        0x2a700, 0x2b734,
    1621517423        0x2b740, 0x2b81d,
     17424        0x2b820, 0x2cea1,
     17425        0x2ceb0, 0x2ebe0,
    1621617426        0x2f800, 0x2fa1d,
    1621717427        0xe0100, 0xe01ef,
     
    1624217452/* 'Grapheme_Extend': Derived Property */
    1624317453static const OnigCodePoint CR_Grapheme_Extend[] = {
    16244         272,
     17454        319,
    1624517455        0x0300, 0x036f,
    1624617456        0x0483, 0x0489,
     
    1626617476        0x0829, 0x082d,
    1626717477        0x0859, 0x085b,
    16268         0x08e4, 0x0902,
     17478        0x08d4, 0x08e1,
     17479        0x08e3, 0x0902,
    1626917480        0x093a, 0x093a,
    1627017481        0x093c, 0x093c,
     
    1629417505        0x0acd, 0x0acd,
    1629517506        0x0ae2, 0x0ae3,
     17507        0x0afa, 0x0aff,
    1629617508        0x0b01, 0x0b01,
    1629717509        0x0b3c, 0x0b3c,
     
    1632017532        0x0cd5, 0x0cd6,
    1632117533        0x0ce2, 0x0ce3,
    16322         0x0d01, 0x0d01,
     17534        0x0d00, 0x0d01,
     17535        0x0d3b, 0x0d3c,
    1632317536        0x0d3e, 0x0d3e,
    1632417537        0x0d41, 0x0d44,
     
    1637017583        0x17dd, 0x17dd,
    1637117584        0x180b, 0x180d,
     17585        0x1885, 0x1886,
    1637217586        0x18a9, 0x18a9,
    1637317587        0x1920, 0x1922,
     
    1640717621        0x1cf4, 0x1cf4,
    1640817622        0x1cf8, 0x1cf9,
    16409         0x1dc0, 0x1df5,
    16410         0x1dfc, 0x1dff,
    16411         0x200c, 0x200d,
     17623        0x1dc0, 0x1df9,
     17624        0x1dfb, 0x1dff,
     17625        0x200c, 0x200c,
    1641217626        0x20d0, 0x20f0,
    1641317627        0x2cef, 0x2cf1,
     
    1641817632        0xa66f, 0xa672,
    1641917633        0xa674, 0xa67d,
    16420         0xa69f, 0xa69f,
     17634        0xa69e, 0xa69f,
    1642117635        0xa6f0, 0xa6f1,
    1642217636        0xa802, 0xa802,
     
    1642417638        0xa80b, 0xa80b,
    1642517639        0xa825, 0xa826,
    16426         0xa8c4, 0xa8c4,
     17640        0xa8c4, 0xa8c5,
    1642717641        0xa8e0, 0xa8f1,
    1642817642        0xa926, 0xa92d,
     
    1645117665        0xfb1e, 0xfb1e,
    1645217666        0xfe00, 0xfe0f,
    16453         0xfe20, 0xfe2d,
     17667        0xfe20, 0xfe2f,
    1645417668        0xff9e, 0xff9f,
    1645517669        0x101fd, 0x101fd,
     
    1647317687        0x11180, 0x11181,
    1647417688        0x111b6, 0x111be,
     17689        0x111ca, 0x111cc,
    1647517690        0x1122f, 0x11231,
    1647617691        0x11234, 0x11234,
    1647717692        0x11236, 0x11237,
     17693        0x1123e, 0x1123e,
    1647817694        0x112df, 0x112df,
    1647917695        0x112e3, 0x112ea,
    16480         0x11301, 0x11301,
     17696        0x11300, 0x11301,
    1648117697        0x1133c, 0x1133c,
    1648217698        0x1133e, 0x1133e,
     
    1648517701        0x11366, 0x1136c,
    1648617702        0x11370, 0x11374,
     17703        0x11438, 0x1143f,
     17704        0x11442, 0x11444,
     17705        0x11446, 0x11446,
    1648717706        0x114b0, 0x114b0,
    1648817707        0x114b3, 0x114b8,
     
    1649517714        0x115bc, 0x115bd,
    1649617715        0x115bf, 0x115c0,
     17716        0x115dc, 0x115dd,
    1649717717        0x11633, 0x1163a,
    1649817718        0x1163d, 0x1163d,
     
    1650217722        0x116b0, 0x116b5,
    1650317723        0x116b7, 0x116b7,
     17724        0x1171d, 0x1171f,
     17725        0x11722, 0x11725,
     17726        0x11727, 0x1172b,
     17727        0x11a01, 0x11a06,
     17728        0x11a09, 0x11a0a,
     17729        0x11a33, 0x11a38,
     17730        0x11a3b, 0x11a3e,
     17731        0x11a47, 0x11a47,
     17732        0x11a51, 0x11a56,
     17733        0x11a59, 0x11a5b,
     17734        0x11a8a, 0x11a96,
     17735        0x11a98, 0x11a99,
     17736        0x11c30, 0x11c36,
     17737        0x11c38, 0x11c3d,
     17738        0x11c3f, 0x11c3f,
     17739        0x11c92, 0x11ca7,
     17740        0x11caa, 0x11cb0,
     17741        0x11cb2, 0x11cb3,
     17742        0x11cb5, 0x11cb6,
     17743        0x11d31, 0x11d36,
     17744        0x11d3a, 0x11d3a,
     17745        0x11d3c, 0x11d3d,
     17746        0x11d3f, 0x11d45,
     17747        0x11d47, 0x11d47,
    1650417748        0x16af0, 0x16af4,
    1650517749        0x16b30, 0x16b36,
     
    1651317757        0x1d1aa, 0x1d1ad,
    1651417758        0x1d242, 0x1d244,
     17759        0x1da00, 0x1da36,
     17760        0x1da3b, 0x1da6c,
     17761        0x1da75, 0x1da75,
     17762        0x1da84, 0x1da84,
     17763        0x1da9b, 0x1da9f,
     17764        0x1daa1, 0x1daaf,
     17765        0x1e000, 0x1e006,
     17766        0x1e008, 0x1e018,
     17767        0x1e01b, 0x1e021,
     17768        0x1e023, 0x1e024,
     17769        0x1e026, 0x1e02a,
    1651517770        0x1e8d0, 0x1e8d6,
     17771        0x1e944, 0x1e94a,
     17772        0xe0020, 0xe007f,
    1651617773        0xe0100, 0xe01ef,
    1651717774}; /* CR_Grapheme_Extend */
     
    1651917776/* 'Grapheme_Base': Derived Property */
    1652017777static const OnigCodePoint CR_Grapheme_Base[] = {
    16521         724,
     17778        791,
    1652217779        0x0020, 0x007e,
    1652317780        0x00a0, 0x00ac,
     
    1656317820        0x0840, 0x0858,
    1656417821        0x085e, 0x085e,
    16565         0x08a0, 0x08b2,
     17822        0x0860, 0x086a,
     17823        0x08a0, 0x08b4,
     17824        0x08b6, 0x08bd,
    1656617825        0x0903, 0x0939,
    1656717826        0x093b, 0x093b,
     
    1658517844        0x09dc, 0x09dd,
    1658617845        0x09df, 0x09e1,
    16587         0x09e6, 0x09fb,
     17846        0x09e6, 0x09fd,
    1658817847        0x0a03, 0x0a03,
    1658917848        0x0a05, 0x0a0a,
     
    1661217871        0x0ae0, 0x0ae1,
    1661317872        0x0ae6, 0x0af1,
     17873        0x0af9, 0x0af9,
    1661417874        0x0b02, 0x0b03,
    1661517875        0x0b05, 0x0b0c,
     
    1664917909        0x0c3d, 0x0c3d,
    1665017910        0x0c41, 0x0c44,
    16651         0x0c58, 0x0c59,
     17911        0x0c58, 0x0c5a,
    1665217912        0x0c60, 0x0c61,
    1665317913        0x0c66, 0x0c6f,
    16654         0x0c78, 0x0c7f,
     17914        0x0c78, 0x0c80,
    1665517915        0x0c82, 0x0c83,
    1665617916        0x0c85, 0x0c8c,
     
    1667617936        0x0d46, 0x0d48,
    1667717937        0x0d4a, 0x0d4c,
    16678         0x0d4e, 0x0d4e,
    16679         0x0d60, 0x0d61,
    16680         0x0d66, 0x0d75,
    16681         0x0d79, 0x0d7f,
     17938        0x0d4e, 0x0d4f,
     17939        0x0d54, 0x0d56,
     17940        0x0d58, 0x0d61,
     17941        0x0d66, 0x0d7f,
    1668217942        0x0d82, 0x0d83,
    1668317943        0x0d85, 0x0d96,
     
    1675618016        0x1360, 0x137c,
    1675718017        0x1380, 0x1399,
    16758         0x13a0, 0x13f4,
     18018        0x13a0, 0x13f5,
     18019        0x13f8, 0x13fd,
    1675918020        0x1400, 0x169c,
    1676018021        0x16a0, 0x16f8,
     
    1677618037        0x1810, 0x1819,
    1677718038        0x1820, 0x1877,
    16778         0x1880, 0x18a8,
     18039        0x1880, 0x1884,
     18040        0x1887, 0x18a8,
    1677918041        0x18aa, 0x18aa,
    1678018042        0x18b0, 0x18f5,
     
    1681818080        0x1c34, 0x1c35,
    1681918081        0x1c3b, 0x1c49,
    16820         0x1c4d, 0x1c7f,
     18082        0x1c4d, 0x1c88,
    1682118083        0x1cc0, 0x1cc7,
    1682218084        0x1cd3, 0x1cd3,
     
    1682418086        0x1ce9, 0x1cec,
    1682518087        0x1cee, 0x1cf3,
    16826         0x1cf5, 0x1cf6,
     18088        0x1cf5, 0x1cf7,
    1682718089        0x1d00, 0x1dbf,
    1682818090        0x1e00, 0x1f15,
     
    1684818110        0x2074, 0x208e,
    1684918111        0x2090, 0x209c,
    16850         0x20a0, 0x20bd,
    16851         0x2100, 0x2189,
    16852         0x2190, 0x23fa,
    16853         0x2400, 0x2426,
     18112        0x20a0, 0x20bf,
     18113        0x2100, 0x218b,
     18114        0x2190, 0x2426,
    1685418115        0x2440, 0x244a,
    1685518116        0x2460, 0x2b73,
     
    1685718118        0x2b98, 0x2bb9,
    1685818119        0x2bbd, 0x2bc8,
    16859         0x2bca, 0x2bd1,
     18120        0x2bca, 0x2bd2,
     18121        0x2bec, 0x2bef,
    1686018122        0x2c00, 0x2c2e,
    1686118123        0x2c30, 0x2c5e,
     
    1687618138        0x2dd0, 0x2dd6,
    1687718139        0x2dd8, 0x2dde,
    16878         0x2e00, 0x2e42,
     18140        0x2e00, 0x2e49,
    1687918141        0x2e80, 0x2e99,
    1688018142        0x2e9b, 0x2ef3,
     
    1688518147        0x3041, 0x3096,
    1688618148        0x309b, 0x30ff,
    16887         0x3105, 0x312d,
     18149        0x3105, 0x312e,
    1688818150        0x3131, 0x318e,
    1688918151        0x3190, 0x31ba,
     
    1689218154        0x3220, 0x32fe,
    1689318155        0x3300, 0x4db5,
    16894         0x4dc0, 0x9fcc,
     18156        0x4dc0, 0x9fea,
    1689518157        0xa000, 0xa48c,
    1689618158        0xa490, 0xa4c6,
     
    1690118163        0xa6a0, 0xa6ef,
    1690218164        0xa6f2, 0xa6f7,
    16903         0xa700, 0xa78e,
    16904         0xa790, 0xa7ad,
    16905         0xa7b0, 0xa7b1,
     18165        0xa700, 0xa7ae,
     18166        0xa7b0, 0xa7b7,
    1690618167        0xa7f7, 0xa801,
    1690718168        0xa803, 0xa805,
     
    1691318174        0xa880, 0xa8c3,
    1691418175        0xa8ce, 0xa8d9,
    16915         0xa8f2, 0xa8fb,
     18176        0xa8f2, 0xa8fd,
    1691618177        0xa900, 0xa925,
    1691718178        0xa92e, 0xa946,
     
    1694618207        0xab20, 0xab26,
    1694718208        0xab28, 0xab2e,
    16948         0xab30, 0xab5f,
    16949         0xab64, 0xab65,
    16950         0xabc0, 0xabe4,
     18209        0xab30, 0xab65,
     18210        0xab70, 0xabe4,
    1695118211        0xabe6, 0xabe7,
    1695218212        0xabe9, 0xabec,
     
    1699418254        0x10100, 0x10102,
    1699518255        0x10107, 0x10133,
    16996         0x10137, 0x1018c,
     18256        0x10137, 0x1018e,
    1699718257        0x10190, 0x1019b,
    1699818258        0x101a0, 0x101a0,
     
    1700218262        0x102e1, 0x102fb,
    1700318263        0x10300, 0x10323,
    17004         0x10330, 0x1034a,
     18264        0x1032d, 0x1034a,
    1700518265        0x10350, 0x10375,
    1700618266        0x10380, 0x1039d,
     
    1700918269        0x10400, 0x1049d,
    1701018270        0x104a0, 0x104a9,
     18271        0x104b0, 0x104d3,
     18272        0x104d8, 0x104fb,
    1701118273        0x10500, 0x10527,
    1701218274        0x10530, 0x10563,
     
    1702318285        0x10857, 0x1089e,
    1702418286        0x108a7, 0x108af,
    17025         0x10900, 0x1091b,
     18287        0x108e0, 0x108f2,
     18288        0x108f4, 0x108f5,
     18289        0x108fb, 0x1091b,
    1702618290        0x1091f, 0x10939,
    1702718291        0x1093f, 0x1093f,
    1702818292        0x10980, 0x109b7,
    17029         0x109be, 0x109bf,
    17030         0x10a00, 0x10a00,
     18293        0x109bc, 0x109cf,
     18294        0x109d2, 0x10a00,
    1703118295        0x10a10, 0x10a13,
    1703218296        0x10a15, 0x10a17,
     
    1704418308        0x10ba9, 0x10baf,
    1704518309        0x10c00, 0x10c48,
     18310        0x10c80, 0x10cb2,
     18311        0x10cc0, 0x10cf2,
     18312        0x10cfa, 0x10cff,
    1704618313        0x10e60, 0x10e7e,
    1704718314        0x11000, 0x11000,
     
    1706118328        0x11174, 0x11176,
    1706218329        0x11182, 0x111b5,
    17063         0x111bf, 0x111c8,
     18330        0x111bf, 0x111c9,
    1706418331        0x111cd, 0x111cd,
    17065         0x111d0, 0x111da,
     18332        0x111d0, 0x111df,
    1706618333        0x111e1, 0x111f4,
    1706718334        0x11200, 0x11211,
     
    1707018337        0x11235, 0x11235,
    1707118338        0x11238, 0x1123d,
     18339        0x11280, 0x11286,
     18340        0x11288, 0x11288,
     18341        0x1128a, 0x1128d,
     18342        0x1128f, 0x1129d,
     18343        0x1129f, 0x112a9,
    1707218344        0x112b0, 0x112de,
    1707318345        0x112e0, 0x112e2,
     
    1708518357        0x11347, 0x11348,
    1708618358        0x1134b, 0x1134d,
     18359        0x11350, 0x11350,
    1708718360        0x1135d, 0x11363,
     18361        0x11400, 0x11437,
     18362        0x11440, 0x11441,
     18363        0x11445, 0x11445,
     18364        0x11447, 0x11459,
     18365        0x1145b, 0x1145b,
     18366        0x1145d, 0x1145d,
    1708818367        0x11480, 0x114af,
    1708918368        0x114b1, 0x114b2,
     
    1709818377        0x115b8, 0x115bb,
    1709918378        0x115be, 0x115be,
    17100         0x115c1, 0x115c9,
     18379        0x115c1, 0x115db,
    1710118380        0x11600, 0x11632,
    1710218381        0x1163b, 0x1163c,
     
    1710418383        0x11641, 0x11644,
    1710518384        0x11650, 0x11659,
     18385        0x11660, 0x1166c,
    1710618386        0x11680, 0x116aa,
    1710718387        0x116ac, 0x116ac,
     
    1710918389        0x116b6, 0x116b6,
    1711018390        0x116c0, 0x116c9,
     18391        0x11700, 0x11719,
     18392        0x11720, 0x11721,
     18393        0x11726, 0x11726,
     18394        0x11730, 0x1173f,
    1711118395        0x118a0, 0x118f2,
    1711218396        0x118ff, 0x118ff,
     18397        0x11a00, 0x11a00,
     18398        0x11a07, 0x11a08,
     18399        0x11a0b, 0x11a32,
     18400        0x11a39, 0x11a3a,
     18401        0x11a3f, 0x11a46,
     18402        0x11a50, 0x11a50,
     18403        0x11a57, 0x11a58,
     18404        0x11a5c, 0x11a83,
     18405        0x11a86, 0x11a89,
     18406        0x11a97, 0x11a97,
     18407        0x11a9a, 0x11a9c,
     18408        0x11a9e, 0x11aa2,
    1711318409        0x11ac0, 0x11af8,
    17114         0x12000, 0x12398,
     18410        0x11c00, 0x11c08,
     18411        0x11c0a, 0x11c2f,
     18412        0x11c3e, 0x11c3e,
     18413        0x11c40, 0x11c45,
     18414        0x11c50, 0x11c6c,
     18415        0x11c70, 0x11c8f,
     18416        0x11ca9, 0x11ca9,
     18417        0x11cb1, 0x11cb1,
     18418        0x11cb4, 0x11cb4,
     18419        0x11d00, 0x11d06,
     18420        0x11d08, 0x11d09,
     18421        0x11d0b, 0x11d30,
     18422        0x11d46, 0x11d46,
     18423        0x11d50, 0x11d59,
     18424        0x12000, 0x12399,
    1711518425        0x12400, 0x1246e,
    1711618426        0x12470, 0x12474,
     18427        0x12480, 0x12543,
    1711718428        0x13000, 0x1342e,
     18429        0x14400, 0x14646,
    1711818430        0x16800, 0x16a38,
    1711918431        0x16a40, 0x16a5e,
     
    1713118443        0x16f50, 0x16f7e,
    1713218444        0x16f93, 0x16f9f,
    17133         0x1b000, 0x1b001,
     18445        0x16fe0, 0x16fe1,
     18446        0x17000, 0x187ec,
     18447        0x18800, 0x18af2,
     18448        0x1b000, 0x1b11e,
     18449        0x1b170, 0x1b2fb,
    1713418450        0x1bc00, 0x1bc6a,
    1713518451        0x1bc70, 0x1bc7c,
     
    1714518461        0x1d183, 0x1d184,
    1714618462        0x1d18c, 0x1d1a9,
    17147         0x1d1ae, 0x1d1dd,
     18463        0x1d1ae, 0x1d1e8,
    1714818464        0x1d200, 0x1d241,
    1714918465        0x1d245, 0x1d245,
     
    1717018486        0x1d552, 0x1d6a5,
    1717118487        0x1d6a8, 0x1d7cb,
    17172         0x1d7ce, 0x1d7ff,
     18488        0x1d7ce, 0x1d9ff,
     18489        0x1da37, 0x1da3a,
     18490        0x1da6d, 0x1da74,
     18491        0x1da76, 0x1da83,
     18492        0x1da85, 0x1da8b,
    1717318493        0x1e800, 0x1e8c4,
    1717418494        0x1e8c7, 0x1e8cf,
     18495        0x1e900, 0x1e943,
     18496        0x1e950, 0x1e959,
     18497        0x1e95e, 0x1e95f,
    1717518498        0x1ee00, 0x1ee03,
    1717618499        0x1ee05, 0x1ee1f,
     
    1721618539        0x1f110, 0x1f12e,
    1721718540        0x1f130, 0x1f16b,
    17218         0x1f170, 0x1f19a,
     18541        0x1f170, 0x1f1ac,
    1721918542        0x1f1e6, 0x1f202,
    17220         0x1f210, 0x1f23a,
     18543        0x1f210, 0x1f23b,
    1722118544        0x1f240, 0x1f248,
    1722218545        0x1f250, 0x1f251,
    17223         0x1f300, 0x1f32c,
    17224         0x1f330, 0x1f37d,
    17225         0x1f380, 0x1f3ce,
    17226         0x1f3d4, 0x1f3f7,
    17227         0x1f400, 0x1f4fe,
    17228         0x1f500, 0x1f54a,
    17229         0x1f550, 0x1f579,
    17230         0x1f57b, 0x1f5a3,
    17231         0x1f5a5, 0x1f642,
    17232         0x1f645, 0x1f6cf,
     18546        0x1f260, 0x1f265,
     18547        0x1f300, 0x1f6d4,
    1723318548        0x1f6e0, 0x1f6ec,
    17234         0x1f6f0, 0x1f6f3,
     18549        0x1f6f0, 0x1f6f8,
    1723518550        0x1f700, 0x1f773,
    1723618551        0x1f780, 0x1f7d4,
     
    1724018555        0x1f860, 0x1f887,
    1724118556        0x1f890, 0x1f8ad,
     18557        0x1f900, 0x1f90b,
     18558        0x1f910, 0x1f93e,
     18559        0x1f940, 0x1f94c,
     18560        0x1f950, 0x1f96b,
     18561        0x1f980, 0x1f997,
     18562        0x1f9c0, 0x1f9c0,
     18563        0x1f9d0, 0x1f9e6,
    1724218564        0x20000, 0x2a6d6,
    1724318565        0x2a700, 0x2b734,
    1724418566        0x2b740, 0x2b81d,
     18567        0x2b820, 0x2cea1,
     18568        0x2ceb0, 0x2ebe0,
    1724518569        0x2f800, 0x2fa1d,
    1724618570}; /* CR_Grapheme_Base */
     
    1724818572/* 'Grapheme_Link': Derived Property */
    1724918573static const OnigCodePoint CR_Grapheme_Link[] = {
    17250         40,
     18574        48,
    1725118575        0x094d, 0x094d,
    1725218576        0x09cd, 0x09cd,
     
    1725718581        0x0c4d, 0x0c4d,
    1725818582        0x0ccd, 0x0ccd,
     18583        0x0d3b, 0x0d3c,
    1725918584        0x0d4d, 0x0d4d,
    1726018585        0x0dca, 0x0dca,
     
    1728518610        0x112ea, 0x112ea,
    1728618611        0x1134d, 0x1134d,
     18612        0x11442, 0x11442,
    1728718613        0x114c2, 0x114c2,
    1728818614        0x115bf, 0x115bf,
    1728918615        0x1163f, 0x1163f,
    1729018616        0x116b6, 0x116b6,
     18617        0x1172b, 0x1172b,
     18618        0x11a34, 0x11a34,
     18619        0x11a47, 0x11a47,
     18620        0x11a99, 0x11a99,
     18621        0x11c3f, 0x11c3f,
     18622        0x11d44, 0x11d45,
    1729118623}; /* CR_Grapheme_Link */
    1729218624
    1729318625/* 'Common': Script */
    1729418626static const OnigCodePoint CR_Common[] = {
    17295         165,
     18627        164,
    1729618628        0x0000, 0x0040,
    1729718629        0x005b, 0x0060,
     
    1731118643        0x0605, 0x0605,
    1731218644        0x060c, 0x060c,
    17313         0x061b, 0x061c,
     18645        0x061b, 0x061b,
    1731418646        0x061f, 0x061f,
    1731518647        0x0640, 0x0640,
    17316         0x0660, 0x0669,
    1731718648        0x06dd, 0x06dd,
     18649        0x08e2, 0x08e2,
    1731818650        0x0964, 0x0965,
    1731918651        0x0e3f, 0x0e3f,
     
    1732818660        0x1ce9, 0x1cec,
    1732918661        0x1cee, 0x1cf3,
    17330         0x1cf5, 0x1cf6,
     18662        0x1cf5, 0x1cf7,
    1733118663        0x2000, 0x200b,
    1733218664        0x200e, 0x2064,
     
    1733418666        0x2074, 0x207e,
    1733518667        0x2080, 0x208e,
    17336         0x20a0, 0x20bd,
     18668        0x20a0, 0x20bf,
    1733718669        0x2100, 0x2125,
    1733818670        0x2127, 0x2129,
     
    1734018672        0x2133, 0x214d,
    1734118673        0x214f, 0x215f,
    17342         0x2189, 0x2189,
    17343         0x2190, 0x23fa,
    17344         0x2400, 0x2426,
     18674        0x2189, 0x218b,
     18675        0x2190, 0x2426,
    1734518676        0x2440, 0x244a,
    1734618677        0x2460, 0x27ff,
     
    1734918680        0x2b98, 0x2bb9,
    1735018681        0x2bbd, 0x2bc8,
    17351         0x2bca, 0x2bd1,
    17352         0x2e00, 0x2e42,
     18682        0x2bca, 0x2bd2,
     18683        0x2bec, 0x2bef,
     18684        0x2e00, 0x2e49,
    1735318685        0x2ff0, 0x2ffb,
    1735418686        0x3000, 0x3004,
     
    1739918731        0x1d183, 0x1d184,
    1740018732        0x1d18c, 0x1d1a9,
    17401         0x1d1ae, 0x1d1dd,
     18733        0x1d1ae, 0x1d1e8,
    1740218734        0x1d300, 0x1d356,
    1740318735        0x1d360, 0x1d371,
     
    1743218764        0x1f110, 0x1f12e,
    1743318765        0x1f130, 0x1f16b,
    17434         0x1f170, 0x1f19a,
     18766        0x1f170, 0x1f1ac,
    1743518767        0x1f1e6, 0x1f1ff,
    1743618768        0x1f201, 0x1f202,
    17437         0x1f210, 0x1f23a,
     18769        0x1f210, 0x1f23b,
    1743818770        0x1f240, 0x1f248,
    1743918771        0x1f250, 0x1f251,
    17440         0x1f300, 0x1f32c,
    17441         0x1f330, 0x1f37d,
    17442         0x1f380, 0x1f3ce,
    17443         0x1f3d4, 0x1f3f7,
    17444         0x1f400, 0x1f4fe,
    17445         0x1f500, 0x1f54a,
    17446         0x1f550, 0x1f579,
    17447         0x1f57b, 0x1f5a3,
    17448         0x1f5a5, 0x1f642,
    17449         0x1f645, 0x1f6cf,
     18772        0x1f260, 0x1f265,
     18773        0x1f300, 0x1f6d4,
    1745018774        0x1f6e0, 0x1f6ec,
    17451         0x1f6f0, 0x1f6f3,
     18775        0x1f6f0, 0x1f6f8,
    1745218776        0x1f700, 0x1f773,
    1745318777        0x1f780, 0x1f7d4,
     
    1745718781        0x1f860, 0x1f887,
    1745818782        0x1f890, 0x1f8ad,
     18783        0x1f900, 0x1f90b,
     18784        0x1f910, 0x1f93e,
     18785        0x1f940, 0x1f94c,
     18786        0x1f950, 0x1f96b,
     18787        0x1f980, 0x1f997,
     18788        0x1f9c0, 0x1f9c0,
     18789        0x1f9d0, 0x1f9e6,
    1745918790        0xe0001, 0xe0001,
    1746018791        0xe0020, 0xe007f,
     
    1746318794/* 'Latin': Script */
    1746418795static const OnigCodePoint CR_Latin[] = {
    17465         33,
     18796        31,
    1746618797        0x0041, 0x005a,
    1746718798        0x0061, 0x007a,
     
    1748718818        0x2c60, 0x2c7f,
    1748818819        0xa722, 0xa787,
    17489         0xa78b, 0xa78e,
    17490         0xa790, 0xa7ad,
    17491         0xa7b0, 0xa7b1,
     18820        0xa78b, 0xa7ae,
     18821        0xa7b0, 0xa7b7,
    1749218822        0xa7f7, 0xa7ff,
    1749318823        0xab30, 0xab5a,
    17494         0xab5c, 0xab5f,
    17495         0xab64, 0xab64,
     18824        0xab5c, 0xab64,
    1749618825        0xfb00, 0xfb06,
    1749718826        0xff21, 0xff3a,
     
    1753518864        0x2126, 0x2126,
    1753618865        0xab65, 0xab65,
    17537         0x10140, 0x1018c,
     18866        0x10140, 0x1018e,
    1753818867        0x101a0, 0x101a0,
    1753918868        0x1d200, 0x1d245,
     
    1754218871/* 'Cyrillic': Script */
    1754318872static const OnigCodePoint CR_Cyrillic[] = {
    17544         7,
     18873        8,
    1754518874        0x0400, 0x0484,
    1754618875        0x0487, 0x052f,
     18876        0x1c80, 0x1c88,
    1754718877        0x1d2b, 0x1d2b,
    1754818878        0x1d78, 0x1d78,
    1754918879        0x2de0, 0x2dff,
    17550         0xa640, 0xa69d,
    17551         0xa69f, 0xa69f,
     18880        0xa640, 0xa69f,
     18881        0xfe2e, 0xfe2f,
    1755218882}; /* CR_Cyrillic */
    1755318883
     
    1757918909/* 'Arabic': Script */
    1758018910static const OnigCodePoint CR_Arabic[] = {
    17581         55,
     18911        57,
    1758218912        0x0600, 0x0604,
    1758318913        0x0606, 0x060b,
    1758418914        0x060d, 0x061a,
     18915        0x061c, 0x061c,
    1758518916        0x061e, 0x061e,
    1758618917        0x0620, 0x063f,
    1758718918        0x0641, 0x064a,
    17588         0x0656, 0x065f,
    17589         0x066a, 0x066f,
     18919        0x0656, 0x066f,
    1759018920        0x0671, 0x06dc,
    1759118921        0x06de, 0x06ff,
    1759218922        0x0750, 0x077f,
    17593         0x08a0, 0x08b2,
    17594         0x08e4, 0x08ff,
     18923        0x08a0, 0x08b4,
     18924        0x08b6, 0x08bd,
     18925        0x08d4, 0x08e1,
     18926        0x08e3, 0x08ff,
    1759518927        0xfb50, 0xfbc1,
    1759618928        0xfbd3, 0xfd3d,
     
    1763918971/* 'Syriac': Script */
    1764018972static const OnigCodePoint CR_Syriac[] = {
    17641         3,
     18973        4,
    1764218974        0x0700, 0x070d,
    1764318975        0x070f, 0x074a,
    1764418976        0x074d, 0x074f,
     18977        0x0860, 0x086a,
    1764518978}; /* CR_Syriac */
    1764618979
     
    1765718990        0x0953, 0x0963,
    1765818991        0x0966, 0x097f,
    17659         0xa8e0, 0xa8fb,
     18992        0xa8e0, 0xa8fd,
    1766018993}; /* CR_Devanagari */
    1766118994
     
    1767619009        0x09dc, 0x09dd,
    1767719010        0x09df, 0x09e3,
    17678         0x09e6, 0x09fb,
     19011        0x09e6, 0x09fd,
    1767919012}; /* CR_Bengali */
    1768019013
     
    1770219035/* 'Gujarati': Script */
    1770319036static const OnigCodePoint CR_Gujarati[] = {
    17704         13,
     19037        14,
    1770519038        0x0a81, 0x0a83,
    1770619039        0x0a85, 0x0a8d,
     
    1771619049        0x0ae0, 0x0ae3,
    1771719050        0x0ae6, 0x0af1,
     19051        0x0af9, 0x0aff,
    1771819052}; /* CR_Gujarati */
    1771919053
     
    1777019104        0x0c4a, 0x0c4d,
    1777119105        0x0c55, 0x0c56,
    17772         0x0c58, 0x0c59,
     19106        0x0c58, 0x0c5a,
    1777319107        0x0c60, 0x0c63,
    1777419108        0x0c66, 0x0c6f,
     
    1777919113static const OnigCodePoint CR_Kannada[] = {
    1778019114        14,
    17781         0x0c81, 0x0c83,
     19115        0x0c80, 0x0c83,
    1778219116        0x0c85, 0x0c8c,
    1778319117        0x0c8e, 0x0c90,
     
    1779719131/* 'Malayalam': Script */
    1779819132static const OnigCodePoint CR_Malayalam[] = {
    17799         11,
    17800         0x0d01, 0x0d03,
     19133        8,
     19134        0x0d00, 0x0d03,
    1780119135        0x0d05, 0x0d0c,
    1780219136        0x0d0e, 0x0d10,
    17803         0x0d12, 0x0d3a,
    17804         0x0d3d, 0x0d44,
     19137        0x0d12, 0x0d44,
    1780519138        0x0d46, 0x0d48,
    17806         0x0d4a, 0x0d4e,
    17807         0x0d57, 0x0d57,
    17808         0x0d60, 0x0d63,
    17809         0x0d66, 0x0d75,
    17810         0x0d79, 0x0d7f,
     19139        0x0d4a, 0x0d4f,
     19140        0x0d54, 0x0d63,
     19141        0x0d66, 0x0d7f,
    1781119142}; /* CR_Malayalam */
    1781219143
     
    1795019281/* 'Cherokee': Script */
    1795119282static const OnigCodePoint CR_Cherokee[] = {
    17952         1,
    17953         0x13a0, 0x13f4,
     19283        3,
     19284        0x13a0, 0x13f5,
     19285        0x13f8, 0x13fd,
     19286        0xab70, 0xabbf,
    1795419287}; /* CR_Cherokee */
    1795519288
     
    1798519318/* 'Mongolian': Script */
    1798619319static const OnigCodePoint CR_Mongolian[] = {
    17987         6,
     19320        7,
    1798819321        0x1800, 0x1801,
    1798919322        0x1804, 0x1804,
     
    1799219325        0x1820, 0x1877,
    1799319326        0x1880, 0x18aa,
     19327        0x11660, 0x1166c,
    1799419328}; /* CR_Mongolian */
    1799519329
     
    1799919333        0x3041, 0x3096,
    1800019334        0x309d, 0x309f,
    18001         0x1b001, 0x1b001,
     19335        0x1b001, 0x1b11e,
    1800219336        0x1f200, 0x1f200,
    1800319337}; /* CR_Hiragana */
     
    1802019354        3,
    1802119355        0x02ea, 0x02eb,
    18022         0x3105, 0x312d,
     19356        0x3105, 0x312e,
    1802319357        0x31a0, 0x31ba,
    1802419358}; /* CR_Bopomofo */
     
    1802619360/* 'Han': Script */
    1802719361static const OnigCodePoint CR_Han[] = {
    18028         15,
     19362        17,
    1802919363        0x2e80, 0x2e99,
    1803019364        0x2e9b, 0x2ef3,
     
    1803519369        0x3038, 0x303b,
    1803619370        0x3400, 0x4db5,
    18037         0x4e00, 0x9fcc,
     19371        0x4e00, 0x9fea,
    1803819372        0xf900, 0xfa6d,
    1803919373        0xfa70, 0xfad9,
     
    1804119375        0x2a700, 0x2b734,
    1804219376        0x2b740, 0x2b81d,
     19377        0x2b820, 0x2cea1,
     19378        0x2ceb0, 0x2ebe0,
    1804319379        0x2f800, 0x2fa1d,
    1804419380}; /* CR_Han */
     
    1805319389/* 'Old_Italic': Script */
    1805419390static const OnigCodePoint CR_Old_Italic[] = {
    18055         1,
     19391        2,
    1805619392        0x10300, 0x10323,
     19393        0x1032d, 0x1032f,
    1805719394}; /* CR_Old_Italic */
    1805819395
     
    1808419421        0x1cf4, 0x1cf4,
    1808519422        0x1cf8, 0x1cf9,
    18086         0x1dc0, 0x1df5,
    18087         0x1dfc, 0x1dff,
     19423        0x1dc0, 0x1df9,
     19424        0x1dfb, 0x1dff,
    1808819425        0x200c, 0x200d,
    1808919426        0x20d0, 0x20f0,
     
    1822019557/* 'Glagolitic': Script */
    1822119558static const OnigCodePoint CR_Glagolitic[] = {
    18222         2,
     19559        7,
    1822319560        0x2c00, 0x2c2e,
    1822419561        0x2c30, 0x2c5e,
     19562        0x1e000, 0x1e006,
     19563        0x1e008, 0x1e018,
     19564        0x1e01b, 0x1e021,
     19565        0x1e023, 0x1e024,
     19566        0x1e026, 0x1e02a,
    1822519567}; /* CR_Glagolitic */
    1822619568
     
    1826819610/* 'Cuneiform': Script */
    1826919611static const OnigCodePoint CR_Cuneiform[] = {
    18270         3,
    18271         0x12000, 0x12398,
     19612        4,
     19613        0x12000, 0x12399,
    1827219614        0x12400, 0x1246e,
    1827319615        0x12470, 0x12474,
     19616        0x12480, 0x12543,
    1827419617}; /* CR_Cuneiform */
    1827519618
     
    1832319666static const OnigCodePoint CR_Saurashtra[] = {
    1832419667        2,
    18325         0xa880, 0xa8c4,
     19668        0xa880, 0xa8c5,
    1832619669        0xa8ce, 0xa8d9,
    1832719670}; /* CR_Saurashtra */
     
    1850519848/* 'Meroitic_Cursive': Script */
    1850619849static const OnigCodePoint CR_Meroitic_Cursive[] = {
    18507         2,
     19850        3,
    1850819851        0x109a0, 0x109b7,
    18509         0x109be, 0x109bf,
     19852        0x109bc, 0x109cf,
     19853        0x109d2, 0x109ff,
    1851019854}; /* CR_Meroitic_Cursive */
    1851119855
     
    1852619870/* 'Sharada': Script */
    1852719871static const OnigCodePoint CR_Sharada[] = {
    18528         3,
    18529         0x11180, 0x111c8,
    18530         0x111cd, 0x111cd,
    18531         0x111d0, 0x111da,
     19872        2,
     19873        0x11180, 0x111cd,
     19874        0x111d0, 0x111df,
    1853219875}; /* CR_Sharada */
    1853319876
     
    1857819921/* 'Grantha': Script */
    1857919922static const OnigCodePoint CR_Grantha[] = {
    18580         14,
    18581         0x11301, 0x11303,
     19923        15,
     19924        0x11300, 0x11303,
    1858219925        0x11305, 0x1130c,
    1858319926        0x1130f, 0x11310,
     
    1858919932        0x11347, 0x11348,
    1859019933        0x1134b, 0x1134d,
     19934        0x11350, 0x11350,
    1859119935        0x11357, 0x11357,
    1859219936        0x1135d, 0x11363,
     
    1860919953        2,
    1861019954        0x11200, 0x11211,
    18611         0x11213, 0x1123d,
     19955        0x11213, 0x1123e,
    1861219956}; /* CR_Khojki */
    1861319957
     
    1869820042        2,
    1869920043        0x11580, 0x115b5,
    18700         0x115b8, 0x115c9,
     20044        0x115b8, 0x115dd,
    1870120045}; /* CR_Siddham */
    1870220046
     
    1872120065        0x118ff, 0x118ff,
    1872220066}; /* CR_Warang_Citi */
     20067
     20068/* 'Ahom': Script */
     20069static const OnigCodePoint CR_Ahom[] = {
     20070        3,
     20071        0x11700, 0x11719,
     20072        0x1171d, 0x1172b,
     20073        0x11730, 0x1173f,
     20074}; /* CR_Ahom */
     20075
     20076/* 'Anatolian_Hieroglyphs': Script */
     20077static const OnigCodePoint CR_Anatolian_Hieroglyphs[] = {
     20078        1,
     20079        0x14400, 0x14646,
     20080}; /* CR_Anatolian_Hieroglyphs */
     20081
     20082/* 'Hatran': Script */
     20083static const OnigCodePoint CR_Hatran[] = {
     20084        3,
     20085        0x108e0, 0x108f2,
     20086        0x108f4, 0x108f5,
     20087        0x108fb, 0x108ff,
     20088}; /* CR_Hatran */
     20089
     20090/* 'Multani': Script */
     20091static const OnigCodePoint CR_Multani[] = {
     20092        5,
     20093        0x11280, 0x11286,
     20094        0x11288, 0x11288,
     20095        0x1128a, 0x1128d,
     20096        0x1128f, 0x1129d,
     20097        0x1129f, 0x112a9,
     20098}; /* CR_Multani */
     20099
     20100/* 'Old_Hungarian': Script */
     20101static const OnigCodePoint CR_Old_Hungarian[] = {
     20102        3,
     20103        0x10c80, 0x10cb2,
     20104        0x10cc0, 0x10cf2,
     20105        0x10cfa, 0x10cff,
     20106}; /* CR_Old_Hungarian */
     20107
     20108/* 'SignWriting': Script */
     20109static const OnigCodePoint CR_SignWriting[] = {
     20110        3,
     20111        0x1d800, 0x1da8b,
     20112        0x1da9b, 0x1da9f,
     20113        0x1daa1, 0x1daaf,
     20114}; /* CR_SignWriting */
     20115
     20116/* 'Adlam': Script */
     20117static const OnigCodePoint CR_Adlam[] = {
     20118        3,
     20119        0x1e900, 0x1e94a,
     20120        0x1e950, 0x1e959,
     20121        0x1e95e, 0x1e95f,
     20122}; /* CR_Adlam */
     20123
     20124/* 'Bhaiksuki': Script */
     20125static const OnigCodePoint CR_Bhaiksuki[] = {
     20126        4,
     20127        0x11c00, 0x11c08,
     20128        0x11c0a, 0x11c36,
     20129        0x11c38, 0x11c45,
     20130        0x11c50, 0x11c6c,
     20131}; /* CR_Bhaiksuki */
     20132
     20133/* 'Marchen': Script */
     20134static const OnigCodePoint CR_Marchen[] = {
     20135        3,
     20136        0x11c70, 0x11c8f,
     20137        0x11c92, 0x11ca7,
     20138        0x11ca9, 0x11cb6,
     20139}; /* CR_Marchen */
     20140
     20141/* 'Newa': Script */
     20142static const OnigCodePoint CR_Newa[] = {
     20143        3,
     20144        0x11400, 0x11459,
     20145        0x1145b, 0x1145b,
     20146        0x1145d, 0x1145d,
     20147}; /* CR_Newa */
     20148
     20149/* 'Osage': Script */
     20150static const OnigCodePoint CR_Osage[] = {
     20151        2,
     20152        0x104b0, 0x104d3,
     20153        0x104d8, 0x104fb,
     20154}; /* CR_Osage */
     20155
     20156/* 'Tangut': Script */
     20157static const OnigCodePoint CR_Tangut[] = {
     20158        3,
     20159        0x16fe0, 0x16fe0,
     20160        0x17000, 0x187ec,
     20161        0x18800, 0x18af2,
     20162}; /* CR_Tangut */
     20163
     20164/* 'Masaram_Gondi': Script */
     20165static const OnigCodePoint CR_Masaram_Gondi[] = {
     20166        7,
     20167        0x11d00, 0x11d06,
     20168        0x11d08, 0x11d09,
     20169        0x11d0b, 0x11d36,
     20170        0x11d3a, 0x11d3a,
     20171        0x11d3c, 0x11d3d,
     20172        0x11d3f, 0x11d47,
     20173        0x11d50, 0x11d59,
     20174}; /* CR_Masaram_Gondi */
     20175
     20176/* 'Nushu': Script */
     20177static const OnigCodePoint CR_Nushu[] = {
     20178        2,
     20179        0x16fe1, 0x16fe1,
     20180        0x1b170, 0x1b2fb,
     20181}; /* CR_Nushu */
     20182
     20183/* 'Soyombo': Script */
     20184static const OnigCodePoint CR_Soyombo[] = {
     20185        3,
     20186        0x11a50, 0x11a83,
     20187        0x11a86, 0x11a9c,
     20188        0x11a9e, 0x11aa2,
     20189}; /* CR_Soyombo */
     20190
     20191/* 'Zanabazar_Square': Script */
     20192static const OnigCodePoint CR_Zanabazar_Square[] = {
     20193        1,
     20194        0x11a00, 0x11a47,
     20195}; /* CR_Zanabazar_Square */
    1872320196
    1872420197/* 'White_Space': Binary Property */
     
    1880120274/* 'Terminal_Punctuation': Binary Property */
    1880220275static const OnigCodePoint CR_Terminal_Punctuation[] = {
    18803         86,
     20276        97,
    1880420277        0x0021, 0x0021,
    1880520278        0x002c, 0x002c,
     
    1887820351        0x111c5, 0x111c6,
    1887920352        0x111cd, 0x111cd,
     20353        0x111de, 0x111df,
    1888020354        0x11238, 0x1123c,
     20355        0x112a9, 0x112a9,
     20356        0x1144b, 0x1144d,
     20357        0x1145b, 0x1145b,
    1888120358        0x115c2, 0x115c5,
    18882         0x115c9, 0x115c9,
     20359        0x115c9, 0x115d7,
    1888320360        0x11641, 0x11642,
     20361        0x1173c, 0x1173e,
     20362        0x11a42, 0x11a43,
     20363        0x11a9b, 0x11a9c,
     20364        0x11aa1, 0x11aa2,
     20365        0x11c41, 0x11c43,
     20366        0x11c71, 0x11c71,
    1888420367        0x12470, 0x12474,
    1888520368        0x16a6e, 0x16a6f,
     
    1888820371        0x16b44, 0x16b44,
    1888920372        0x1bc9f, 0x1bc9f,
     20373        0x1da87, 0x1da8a,
    1889020374}; /* CR_Terminal_Punctuation */
    1889120375
     
    1904520529/* 'Other_Alphabetic': Binary Property */
    1904620530static const OnigCodePoint CR_Other_Alphabetic[] = {
    19047         178,
     20531        206,
    1904820532        0x0345, 0x0345,
    1904920533        0x05b0, 0x05bd,
     
    1906720551        0x0825, 0x0827,
    1906820552        0x0829, 0x082c,
    19069         0x08e4, 0x08e9,
     20553        0x08d4, 0x08df,
     20554        0x08e3, 0x08e9,
    1907020555        0x08f0, 0x0903,
    1907120556        0x093a, 0x093b,
     
    1909220577        0x0acb, 0x0acc,
    1909320578        0x0ae2, 0x0ae3,
     20579        0x0afa, 0x0afc,
    1909420580        0x0b01, 0x0b03,
    1909520581        0x0b3e, 0x0b44,
     
    1911520601        0x0cd5, 0x0cd6,
    1911620602        0x0ce2, 0x0ce3,
    19117         0x0d01, 0x0d03,
     20603        0x0d00, 0x0d03,
    1911820604        0x0d3e, 0x0d44,
    1911920605        0x0d46, 0x0d48,
     
    1915220638        0x1772, 0x1773,
    1915320639        0x17b6, 0x17c8,
     20640        0x1885, 0x1886,
    1915420641        0x18a9, 0x18a9,
    1915520642        0x1920, 0x192b,
    1915620643        0x1930, 0x1938,
    19157         0x19b0, 0x19c0,
    19158         0x19c8, 0x19c9,
    1915920644        0x1a17, 0x1a1b,
    1916020645        0x1a55, 0x1a5e,
     
    1917220657        0x2de0, 0x2dff,
    1917320658        0xa674, 0xa67b,
    19174         0xa69f, 0xa69f,
     20659        0xa69e, 0xa69f,
    1917520660        0xa823, 0xa827,
    1917620661        0xa880, 0xa881,
    1917720662        0xa8b4, 0xa8c3,
     20663        0xa8c5, 0xa8c5,
    1917820664        0xa926, 0xa92a,
    1917920665        0xa947, 0xa952,
     
    1920520691        0x1122c, 0x11234,
    1920620692        0x11237, 0x11237,
     20693        0x1123e, 0x1123e,
    1920720694        0x112df, 0x112e8,
    19208         0x11301, 0x11303,
     20695        0x11300, 0x11303,
    1920920696        0x1133e, 0x11344,
    1921020697        0x11347, 0x11348,
     
    1921220699        0x11357, 0x11357,
    1921320700        0x11362, 0x11363,
     20701        0x11435, 0x11441,
     20702        0x11443, 0x11445,
    1921420703        0x114b0, 0x114c1,
    1921520704        0x115af, 0x115b5,
    1921620705        0x115b8, 0x115be,
     20706        0x115dc, 0x115dd,
    1921720707        0x11630, 0x1163e,
    1921820708        0x11640, 0x11640,
    1921920709        0x116ab, 0x116b5,
     20710        0x1171d, 0x1172a,
     20711        0x11a01, 0x11a0a,
     20712        0x11a35, 0x11a39,
     20713        0x11a3b, 0x11a3e,
     20714        0x11a51, 0x11a5b,
     20715        0x11a8a, 0x11a97,
     20716        0x11c2f, 0x11c36,
     20717        0x11c38, 0x11c3e,
     20718        0x11c92, 0x11ca7,
     20719        0x11ca9, 0x11cb6,
     20720        0x11d31, 0x11d36,
     20721        0x11d3a, 0x11d3a,
     20722        0x11d3c, 0x11d3d,
     20723        0x11d3f, 0x11d41,
     20724        0x11d43, 0x11d43,
     20725        0x11d47, 0x11d47,
    1922020726        0x16b30, 0x16b36,
    1922120727        0x16f51, 0x16f7e,
    1922220728        0x1bc9e, 0x1bc9e,
     20729        0x1e000, 0x1e006,
     20730        0x1e008, 0x1e018,
     20731        0x1e01b, 0x1e021,
     20732        0x1e023, 0x1e024,
     20733        0x1e026, 0x1e02a,
     20734        0x1e947, 0x1e947,
    1922320735        0x1f130, 0x1f149,
    1922420736        0x1f150, 0x1f169,
     
    1922820740/* 'Ideographic': Binary Property */
    1922920741static const OnigCodePoint CR_Ideographic[] = {
    19230         11,
     20742        16,
    1923120743        0x3006, 0x3007,
    1923220744        0x3021, 0x3029,
    1923320745        0x3038, 0x303a,
    1923420746        0x3400, 0x4db5,
    19235         0x4e00, 0x9fcc,
     20747        0x4e00, 0x9fea,
    1923620748        0xf900, 0xfa6d,
    1923720749        0xfa70, 0xfad9,
     20750        0x17000, 0x187ec,
     20751        0x18800, 0x18af2,
     20752        0x1b170, 0x1b2fb,
    1923820753        0x20000, 0x2a6d6,
    1923920754        0x2a700, 0x2b734,
    1924020755        0x2b740, 0x2b81d,
     20756        0x2b820, 0x2cea1,
     20757        0x2ceb0, 0x2ebe0,
    1924120758        0x2f800, 0x2fa1d,
    1924220759}; /* CR_Ideographic */
     
    1924420761/* 'Diacritic': Binary Property */
    1924520762static const OnigCodePoint CR_Diacritic[] = {
    19246         145,
     20763        159,
    1924720764        0x005e, 0x005e,
    1924820765        0x0060, 0x0060,
     
    1927320790        0x07eb, 0x07f5,
    1927420791        0x0818, 0x0819,
    19275         0x08e4, 0x08fe,
     20792        0x08e3, 0x08fe,
    1927620793        0x093c, 0x093c,
    1927720794        0x094d, 0x094d,
     
    1928420801        0x0abc, 0x0abc,
    1928520802        0x0acd, 0x0acd,
     20803        0x0afd, 0x0aff,
    1928620804        0x0b3c, 0x0b3c,
    1928720805        0x0b4d, 0x0b4d,
     
    1929020808        0x0cbc, 0x0cbc,
    1929120809        0x0ccd, 0x0ccd,
     20810        0x0d3b, 0x0d3c,
    1929220811        0x0d4d, 0x0d4d,
    1929320812        0x0dca, 0x0dca,
     
    1932320842        0x1ced, 0x1ced,
    1932420843        0x1cf4, 0x1cf4,
    19325         0x1cf8, 0x1cf9,
     20844        0x1cf7, 0x1cf9,
    1932620845        0x1d2c, 0x1d6a,
    1932720846        0x1dc4, 0x1dcf,
    19328         0x1df5, 0x1df5,
     20847        0x1df5, 0x1df9,
    1932920848        0x1dfd, 0x1dff,
    1933020849        0x1fbd, 0x1fbd,
     
    1936020879        0xabec, 0xabed,
    1936120880        0xfb1e, 0xfb1e,
    19362         0xfe20, 0xfe2d,
     20881        0xfe20, 0xfe2f,
    1936320882        0xff3e, 0xff3e,
    1936420883        0xff40, 0xff40,
     
    1937220891        0x11173, 0x11173,
    1937320892        0x111c0, 0x111c0,
     20893        0x111ca, 0x111cc,
    1937420894        0x11235, 0x11236,
    1937520895        0x112e9, 0x112ea,
     
    1937820898        0x11366, 0x1136c,
    1937920899        0x11370, 0x11374,
     20900        0x11442, 0x11442,
     20901        0x11446, 0x11446,
    1938020902        0x114c2, 0x114c3,
    1938120903        0x115bf, 0x115c0,
    1938220904        0x1163f, 0x1163f,
    1938320905        0x116b6, 0x116b7,
     20906        0x1172b, 0x1172b,
     20907        0x11a34, 0x11a34,
     20908        0x11a47, 0x11a47,
     20909        0x11a99, 0x11a99,
     20910        0x11c3f, 0x11c3f,
     20911        0x11d42, 0x11d42,
     20912        0x11d44, 0x11d45,
    1938420913        0x16af0, 0x16af4,
    1938520914        0x16f8f, 0x16f9f,
     
    1939020919        0x1d1aa, 0x1d1ad,
    1939120920        0x1e8d0, 0x1e8d6,
     20921        0x1e944, 0x1e946,
     20922        0x1e948, 0x1e94a,
    1939220923}; /* CR_Diacritic */
    1939320924
    1939420925/* 'Extender': Binary Property */
    1939520926static const OnigCodePoint CR_Extender[] = {
    19396         26,
     20927        29,
    1939720928        0x00b7, 0x00b7,
    1939820929        0x02d0, 0x02d1,
     
    1942020951        0x1135d, 0x1135d,
    1942120952        0x115c6, 0x115c8,
     20953        0x11a98, 0x11a98,
    1942220954        0x16b42, 0x16b43,
     20955        0x16fe0, 0x16fe1,
     20956        0x1e944, 0x1e946,
    1942320957}; /* CR_Extender */
    1942420958
     
    1948321017/* 'Other_Grapheme_Extend': Binary Property */
    1948421018static const OnigCodePoint CR_Other_Grapheme_Extend[] = {
    19485         22,
     21019        23,
    1948621020        0x09be, 0x09be,
    1948721021        0x09d7, 0x09d7,
     
    1949621030        0x0dcf, 0x0dcf,
    1949721031        0x0ddf, 0x0ddf,
    19498         0x200c, 0x200d,
     21032        0x200c, 0x200c,
    1949921033        0x302e, 0x302f,
    1950021034        0xff9e, 0xff9f,
     
    1950621040        0x1d165, 0x1d165,
    1950721041        0x1d16e, 0x1d172,
     21042        0xe0020, 0xe007f,
    1950821043}; /* CR_Other_Grapheme_Extend */
    1950921044
     
    1953121066/* 'Unified_Ideograph': Binary Property */
    1953221067static const OnigCodePoint CR_Unified_Ideograph[] = {
    19533         12,
     21068        14,
    1953421069        0x3400, 0x4db5,
    19535         0x4e00, 0x9fcc,
     21070        0x4e00, 0x9fea,
    1953621071        0xfa0e, 0xfa0f,
    1953721072        0xfa11, 0xfa11,
     
    1954421079        0x2a700, 0x2b734,
    1954521080        0x2b740, 0x2b81d,
     21081        0x2b820, 0x2cea1,
     21082        0x2ceb0, 0x2ebe0,
    1954621083}; /* CR_Unified_Ideograph */
    1954721084
     
    1956421101/* 'Deprecated': Binary Property */
    1956521102static const OnigCodePoint CR_Deprecated[] = {
    19566         9,
     21103        8,
    1956721104        0x0149, 0x0149,
    1956821105        0x0673, 0x0673,
     
    1957321110        0x2329, 0x232a,
    1957421111        0xe0001, 0xe0001,
    19575         0xe0020, 0xe007f,
    1957621112}; /* CR_Deprecated */
    1957721113
     
    1961421150/* 'Logical_Order_Exception': Binary Property */
    1961521151static const OnigCodePoint CR_Logical_Order_Exception[] = {
    19616         5,
     21152        7,
    1961721153        0x0e40, 0x0e44,
    1961821154        0x0ec0, 0x0ec4,
     21155        0x19b5, 0x19b7,
     21156        0x19ba, 0x19ba,
    1961921157        0xaab5, 0xaab6,
    1962021158        0xaab9, 0xaab9,
     
    1962421162/* 'Other_ID_Start': Binary Property */
    1962521163static const OnigCodePoint CR_Other_ID_Start[] = {
    19626         3,
     21164        4,
     21165        0x1885, 0x1886,
    1962721166        0x2118, 0x2118,
    1962821167        0x212e, 0x212e,
     
    1963921178}; /* CR_Other_ID_Continue */
    1964021179
    19641 /* 'STerm': Binary Property */
    19642 static const OnigCodePoint CR_STerm[] = {
    19643         60,
     21180/* 'Sentence_Terminal': Binary Property */
     21181static const OnigCodePoint CR_Sentence_Terminal[] = {
     21182        68,
    1964421183        0x0021, 0x0021,
    1964521184        0x002e, 0x002e,
     
    1969221231        0x111c5, 0x111c6,
    1969321232        0x111cd, 0x111cd,
     21233        0x111de, 0x111df,
    1969421234        0x11238, 0x11239,
    1969521235        0x1123b, 0x1123c,
     21236        0x112a9, 0x112a9,
     21237        0x1144b, 0x1144c,
    1969621238        0x115c2, 0x115c3,
    19697         0x115c9, 0x115c9,
     21239        0x115c9, 0x115d7,
    1969821240        0x11641, 0x11642,
     21241        0x1173c, 0x1173e,
     21242        0x11a42, 0x11a43,
     21243        0x11a9b, 0x11a9c,
     21244        0x11c41, 0x11c42,
    1969921245        0x16a6e, 0x16a6f,
    1970021246        0x16af5, 0x16af5,
     
    1970221248        0x16b44, 0x16b44,
    1970321249        0x1bc9f, 0x1bc9f,
    19704 }; /* CR_STerm */
     21250        0x1da88, 0x1da88,
     21251}; /* CR_Sentence_Terminal */
    1970521252
    1970621253/* 'Variation_Selector': Binary Property */
     
    1975521302}; /* CR_Pattern_Syntax */
    1975621303
     21304/* 'Prepended_Concatenation_Mark': Binary Property */
     21305static const OnigCodePoint CR_Prepended_Concatenation_Mark[] = {
     21306        5,
     21307        0x0600, 0x0605,
     21308        0x06dd, 0x06dd,
     21309        0x070f, 0x070f,
     21310        0x08e2, 0x08e2,
     21311        0x110bd, 0x110bd,
     21312}; /* CR_Prepended_Concatenation_Mark */
     21313
     21314/* 'Regional_Indicator': Binary Property */
     21315static const OnigCodePoint CR_Regional_Indicator[] = {
     21316        1,
     21317        0x1f1e6, 0x1f1ff,
     21318}; /* CR_Regional_Indicator */
     21319
     21320/* 'Emoji': Emoji */
     21321static const OnigCodePoint CR_Emoji[] = {
     21322        145,
     21323        0x0023, 0x0023,
     21324        0x002a, 0x002a,
     21325        0x0030, 0x0039,
     21326        0x00a9, 0x00a9,
     21327        0x00ae, 0x00ae,
     21328        0x203c, 0x203c,
     21329        0x2049, 0x2049,
     21330        0x2122, 0x2122,
     21331        0x2139, 0x2139,
     21332        0x2194, 0x2199,
     21333        0x21a9, 0x21aa,
     21334        0x231a, 0x231b,
     21335        0x2328, 0x2328,
     21336        0x23cf, 0x23cf,
     21337        0x23e9, 0x23f3,
     21338        0x23f8, 0x23fa,
     21339        0x24c2, 0x24c2,
     21340        0x25aa, 0x25ab,
     21341        0x25b6, 0x25b6,
     21342        0x25c0, 0x25c0,
     21343        0x25fb, 0x25fe,
     21344        0x2600, 0x2604,
     21345        0x260e, 0x260e,
     21346        0x2611, 0x2611,
     21347        0x2614, 0x2615,
     21348        0x2618, 0x2618,
     21349        0x261d, 0x261d,
     21350        0x2620, 0x2620,
     21351        0x2622, 0x2623,
     21352        0x2626, 0x2626,
     21353        0x262a, 0x262a,
     21354        0x262e, 0x262f,
     21355        0x2638, 0x263a,
     21356        0x2640, 0x2640,
     21357        0x2642, 0x2642,
     21358        0x2648, 0x2653,
     21359        0x2660, 0x2660,
     21360        0x2663, 0x2663,
     21361        0x2665, 0x2666,
     21362        0x2668, 0x2668,
     21363        0x267b, 0x267b,
     21364        0x267f, 0x267f,
     21365        0x2692, 0x2697,
     21366        0x2699, 0x2699,
     21367        0x269b, 0x269c,
     21368        0x26a0, 0x26a1,
     21369        0x26aa, 0x26ab,
     21370        0x26b0, 0x26b1,
     21371        0x26bd, 0x26be,
     21372        0x26c4, 0x26c5,
     21373        0x26c8, 0x26c8,
     21374        0x26ce, 0x26cf,
     21375        0x26d1, 0x26d1,
     21376        0x26d3, 0x26d4,
     21377        0x26e9, 0x26ea,
     21378        0x26f0, 0x26f5,
     21379        0x26f7, 0x26fa,
     21380        0x26fd, 0x26fd,
     21381        0x2702, 0x2702,
     21382        0x2705, 0x2705,
     21383        0x2708, 0x270d,
     21384        0x270f, 0x270f,
     21385        0x2712, 0x2712,
     21386        0x2714, 0x2714,
     21387        0x2716, 0x2716,
     21388        0x271d, 0x271d,
     21389        0x2721, 0x2721,
     21390        0x2728, 0x2728,
     21391        0x2733, 0x2734,
     21392        0x2744, 0x2744,
     21393        0x2747, 0x2747,
     21394        0x274c, 0x274c,
     21395        0x274e, 0x274e,
     21396        0x2753, 0x2755,
     21397        0x2757, 0x2757,
     21398        0x2763, 0x2764,
     21399        0x2795, 0x2797,
     21400        0x27a1, 0x27a1,
     21401        0x27b0, 0x27b0,
     21402        0x27bf, 0x27bf,
     21403        0x2934, 0x2935,
     21404        0x2b05, 0x2b07,
     21405        0x2b1b, 0x2b1c,
     21406        0x2b50, 0x2b50,
     21407        0x2b55, 0x2b55,
     21408        0x3030, 0x3030,
     21409        0x303d, 0x303d,
     21410        0x3297, 0x3297,
     21411        0x3299, 0x3299,
     21412        0x1f004, 0x1f004,
     21413        0x1f0cf, 0x1f0cf,
     21414        0x1f170, 0x1f171,
     21415        0x1f17e, 0x1f17f,
     21416        0x1f18e, 0x1f18e,
     21417        0x1f191, 0x1f19a,
     21418        0x1f1e6, 0x1f1ff,
     21419        0x1f201, 0x1f202,
     21420        0x1f21a, 0x1f21a,
     21421        0x1f22f, 0x1f22f,
     21422        0x1f232, 0x1f23a,
     21423        0x1f250, 0x1f251,
     21424        0x1f300, 0x1f321,
     21425        0x1f324, 0x1f393,
     21426        0x1f396, 0x1f397,
     21427        0x1f399, 0x1f39b,
     21428        0x1f39e, 0x1f3f0,
     21429        0x1f3f3, 0x1f3f5,
     21430        0x1f3f7, 0x1f4fd,
     21431        0x1f4ff, 0x1f53d,
     21432        0x1f549, 0x1f54e,
     21433        0x1f550, 0x1f567,
     21434        0x1f56f, 0x1f570,
     21435        0x1f573, 0x1f57a,
     21436        0x1f587, 0x1f587,
     21437        0x1f58a, 0x1f58d,
     21438        0x1f590, 0x1f590,
     21439        0x1f595, 0x1f596,
     21440        0x1f5a4, 0x1f5a5,
     21441        0x1f5a8, 0x1f5a8,
     21442        0x1f5b1, 0x1f5b2,
     21443        0x1f5bc, 0x1f5bc,
     21444        0x1f5c2, 0x1f5c4,
     21445        0x1f5d1, 0x1f5d3,
     21446        0x1f5dc, 0x1f5de,
     21447        0x1f5e1, 0x1f5e1,
     21448        0x1f5e3, 0x1f5e3,
     21449        0x1f5e8, 0x1f5e8,
     21450        0x1f5ef, 0x1f5ef,
     21451        0x1f5f3, 0x1f5f3,
     21452        0x1f5fa, 0x1f64f,
     21453        0x1f680, 0x1f6c5,
     21454        0x1f6cb, 0x1f6d2,
     21455        0x1f6e0, 0x1f6e5,
     21456        0x1f6e9, 0x1f6e9,
     21457        0x1f6eb, 0x1f6ec,
     21458        0x1f6f0, 0x1f6f0,
     21459        0x1f6f3, 0x1f6f8,
     21460        0x1f910, 0x1f93a,
     21461        0x1f93c, 0x1f93e,
     21462        0x1f940, 0x1f945,
     21463        0x1f947, 0x1f94c,
     21464        0x1f950, 0x1f96b,
     21465        0x1f980, 0x1f997,
     21466        0x1f9c0, 0x1f9c0,
     21467        0x1f9d0, 0x1f9e6,
     21468}; /* CR_Emoji */
     21469
     21470/* 'Emoji_Presentation': Emoji */
     21471static const OnigCodePoint CR_Emoji_Presentation[] = {
     21472        75,
     21473        0x231a, 0x231b,
     21474        0x23e9, 0x23ec,
     21475        0x23f0, 0x23f0,
     21476        0x23f3, 0x23f3,
     21477        0x25fd, 0x25fe,
     21478        0x2614, 0x2615,
     21479        0x2648, 0x2653,
     21480        0x267f, 0x267f,
     21481        0x2693, 0x2693,
     21482        0x26a1, 0x26a1,
     21483        0x26aa, 0x26ab,
     21484        0x26bd, 0x26be,
     21485        0x26c4, 0x26c5,
     21486        0x26ce, 0x26ce,
     21487        0x26d4, 0x26d4,
     21488        0x26ea, 0x26ea,
     21489        0x26f2, 0x26f3,
     21490        0x26f5, 0x26f5,
     21491        0x26fa, 0x26fa,
     21492        0x26fd, 0x26fd,
     21493        0x2705, 0x2705,
     21494        0x270a, 0x270b,
     21495        0x2728, 0x2728,
     21496        0x274c, 0x274c,
     21497        0x274e, 0x274e,
     21498        0x2753, 0x2755,
     21499        0x2757, 0x2757,
     21500        0x2795, 0x2797,
     21501        0x27b0, 0x27b0,
     21502        0x27bf, 0x27bf,
     21503        0x2b1b, 0x2b1c,
     21504        0x2b50, 0x2b50,
     21505        0x2b55, 0x2b55,
     21506        0x1f004, 0x1f004,
     21507        0x1f0cf, 0x1f0cf,
     21508        0x1f18e, 0x1f18e,
     21509        0x1f191, 0x1f19a,
     21510        0x1f1e6, 0x1f1ff,
     21511        0x1f201, 0x1f201,
     21512        0x1f21a, 0x1f21a,
     21513        0x1f22f, 0x1f22f,
     21514        0x1f232, 0x1f236,
     21515        0x1f238, 0x1f23a,
     21516        0x1f250, 0x1f251,
     21517        0x1f300, 0x1f320,
     21518        0x1f32d, 0x1f335,
     21519        0x1f337, 0x1f37c,
     21520        0x1f37e, 0x1f393,
     21521        0x1f3a0, 0x1f3ca,
     21522        0x1f3cf, 0x1f3d3,
     21523        0x1f3e0, 0x1f3f0,
     21524        0x1f3f4, 0x1f3f4,
     21525        0x1f3f8, 0x1f43e,
     21526        0x1f440, 0x1f440,
     21527        0x1f442, 0x1f4fc,
     21528        0x1f4ff, 0x1f53d,
     21529        0x1f54b, 0x1f54e,
     21530        0x1f550, 0x1f567,
     21531        0x1f57a, 0x1f57a,
     21532        0x1f595, 0x1f596,
     21533        0x1f5a4, 0x1f5a4,
     21534        0x1f5fb, 0x1f64f,
     21535        0x1f680, 0x1f6c5,
     21536        0x1f6cc, 0x1f6cc,
     21537        0x1f6d0, 0x1f6d2,
     21538        0x1f6eb, 0x1f6ec,
     21539        0x1f6f4, 0x1f6f8,
     21540        0x1f910, 0x1f93a,
     21541        0x1f93c, 0x1f93e,
     21542        0x1f940, 0x1f945,
     21543        0x1f947, 0x1f94c,
     21544        0x1f950, 0x1f96b,
     21545        0x1f980, 0x1f997,
     21546        0x1f9c0, 0x1f9c0,
     21547        0x1f9d0, 0x1f9e6,
     21548}; /* CR_Emoji_Presentation */
     21549
     21550/* 'Emoji_Modifier': Emoji */
     21551static const OnigCodePoint CR_Emoji_Modifier[] = {
     21552        1,
     21553        0x1f3fb, 0x1f3ff,
     21554}; /* CR_Emoji_Modifier */
     21555
     21556/* 'Emoji_Modifier_Base': Emoji */
     21557static const OnigCodePoint CR_Emoji_Modifier_Base[] = {
     21558        32,
     21559        0x261d, 0x261d,
     21560        0x26f9, 0x26f9,
     21561        0x270a, 0x270d,
     21562        0x1f385, 0x1f385,
     21563        0x1f3c2, 0x1f3c4,
     21564        0x1f3c7, 0x1f3c7,
     21565        0x1f3ca, 0x1f3cc,
     21566        0x1f442, 0x1f443,
     21567        0x1f446, 0x1f450,
     21568        0x1f466, 0x1f469,
     21569        0x1f46e, 0x1f46e,
     21570        0x1f470, 0x1f478,
     21571        0x1f47c, 0x1f47c,
     21572        0x1f481, 0x1f483,
     21573        0x1f485, 0x1f487,
     21574        0x1f4aa, 0x1f4aa,
     21575        0x1f574, 0x1f575,
     21576        0x1f57a, 0x1f57a,
     21577        0x1f590, 0x1f590,
     21578        0x1f595, 0x1f596,
     21579        0x1f645, 0x1f647,
     21580        0x1f64b, 0x1f64f,
     21581        0x1f6a3, 0x1f6a3,
     21582        0x1f6b4, 0x1f6b6,
     21583        0x1f6c0, 0x1f6c0,
     21584        0x1f6cc, 0x1f6cc,
     21585        0x1f918, 0x1f91c,
     21586        0x1f91e, 0x1f91f,
     21587        0x1f926, 0x1f926,
     21588        0x1f930, 0x1f939,
     21589        0x1f93d, 0x1f93e,
     21590        0x1f9d1, 0x1f9dd,
     21591}; /* CR_Emoji_Modifier_Base */
     21592
     21593/* 'Emoji_Component': Emoji */
     21594static const OnigCodePoint CR_Emoji_Component[] = {
     21595        5,
     21596        0x0023, 0x0023,
     21597        0x002a, 0x002a,
     21598        0x0030, 0x0039,
     21599        0x1f1e6, 0x1f1ff,
     21600        0x1f3fb, 0x1f3ff,
     21601}; /* CR_Emoji_Component */
     21602
    1975721603/* 'Unknown': Script */
    1975821604static const OnigCodePoint CR_Unknown[] = {
    19759         598,
     21605        647,
    1976021606        0x0378, 0x0379,
    1976121607        0x0380, 0x0383,
     
    1978021626        0x083f, 0x083f,
    1978121627        0x085c, 0x085d,
    19782         0x085f, 0x089f,
    19783         0x08b3, 0x08e3,
     21628        0x085f, 0x085f,
     21629        0x086b, 0x089f,
     21630        0x08b5, 0x08b5,
     21631        0x08be, 0x08d3,
    1978421632        0x0984, 0x0984,
    1978521633        0x098d, 0x098e,
     
    1979521643        0x09de, 0x09de,
    1979621644        0x09e4, 0x09e5,
    19797         0x09fc, 0x0a00,
     21645        0x09fe, 0x0a00,
    1979821646        0x0a04, 0x0a04,
    1979921647        0x0a0b, 0x0a0e,
     
    1982421672        0x0ad1, 0x0adf,
    1982521673        0x0ae4, 0x0ae5,
    19826         0x0af2, 0x0b00,
     21674        0x0af2, 0x0af8,
     21675        0x0b00, 0x0b00,
    1982721676        0x0b04, 0x0b04,
    1982821677        0x0b0d, 0x0b0e,
     
    1986421713        0x0c4e, 0x0c54,
    1986521714        0x0c57, 0x0c57,
    19866         0x0c5a, 0x0c5f,
     21715        0x0c5b, 0x0c5f,
    1986721716        0x0c64, 0x0c65,
    1986821717        0x0c70, 0x0c77,
    19869         0x0c80, 0x0c80,
    1987021718        0x0c84, 0x0c84,
    1987121719        0x0c8d, 0x0c8d,
     
    1988121729        0x0ce4, 0x0ce5,
    1988221730        0x0cf0, 0x0cf0,
    19883         0x0cf3, 0x0d00,
     21731        0x0cf3, 0x0cff,
    1988421732        0x0d04, 0x0d04,
    1988521733        0x0d0d, 0x0d0d,
    1988621734        0x0d11, 0x0d11,
    19887         0x0d3b, 0x0d3c,
    1988821735        0x0d45, 0x0d45,
    1988921736        0x0d49, 0x0d49,
    19890         0x0d4f, 0x0d56,
    19891         0x0d58, 0x0d5f,
     21737        0x0d50, 0x0d53,
    1989221738        0x0d64, 0x0d65,
    19893         0x0d76, 0x0d78,
    1989421739        0x0d80, 0x0d81,
    1989521740        0x0d84, 0x0d84,
     
    1995221797        0x137d, 0x137f,
    1995321798        0x139a, 0x139f,
    19954         0x13f5, 0x13ff,
     21799        0x13f6, 0x13f7,
     21800        0x13fe, 0x13ff,
    1995521801        0x169d, 0x169f,
    1995621802        0x16f9, 0x16ff,
     
    1999121837        0x1c38, 0x1c3a,
    1999221838        0x1c4a, 0x1c4c,
    19993         0x1c80, 0x1cbf,
     21839        0x1c89, 0x1cbf,
    1999421840        0x1cc8, 0x1ccf,
    19995         0x1cf7, 0x1cf7,
    1999621841        0x1cfa, 0x1cff,
    19997         0x1df6, 0x1dfb,
     21842        0x1dfa, 0x1dfa,
    1999821843        0x1f16, 0x1f17,
    1999921844        0x1f1e, 0x1f1f,
     
    2001621861        0x208f, 0x208f,
    2001721862        0x209d, 0x209f,
    20018         0x20be, 0x20cf,
     21863        0x20c0, 0x20cf,
    2001921864        0x20f1, 0x20ff,
    20020         0x218a, 0x218f,
    20021         0x23fb, 0x23ff,
     21865        0x218c, 0x218f,
    2002221866        0x2427, 0x243f,
    2002321867        0x244b, 0x245f,
     
    2002621870        0x2bba, 0x2bbc,
    2002721871        0x2bc9, 0x2bc9,
    20028         0x2bd2, 0x2bff,
     21872        0x2bd3, 0x2beb,
     21873        0x2bf0, 0x2bff,
    2002921874        0x2c2f, 0x2c2f,
    2003021875        0x2c5f, 0x2c5f,
     
    2004421889        0x2dd7, 0x2dd7,
    2004521890        0x2ddf, 0x2ddf,
    20046         0x2e43, 0x2e7f,
     21891        0x2e4a, 0x2e7f,
    2004721892        0x2e9a, 0x2e9a,
    2004821893        0x2ef4, 0x2eff,
     
    2005221897        0x3097, 0x3098,
    2005321898        0x3100, 0x3104,
    20054         0x312e, 0x3130,
     21899        0x312f, 0x3130,
    2005521900        0x318f, 0x318f,
    2005621901        0x31bb, 0x31bf,
     
    2005921904        0x32ff, 0x32ff,
    2006021905        0x4db6, 0x4dbf,
    20061         0x9fcd, 0x9fff,
     21906        0x9feb, 0x9fff,
    2006221907        0xa48d, 0xa48f,
    2006321908        0xa4c7, 0xa4cf,
    2006421909        0xa62c, 0xa63f,
    20065         0xa69e, 0xa69e,
    2006621910        0xa6f8, 0xa6ff,
    20067         0xa78f, 0xa78f,
    20068         0xa7ae, 0xa7af,
    20069         0xa7b2, 0xa7f6,
     21911        0xa7af, 0xa7af,
     21912        0xa7b8, 0xa7f6,
    2007021913        0xa82c, 0xa82f,
    2007121914        0xa83a, 0xa83f,
    2007221915        0xa878, 0xa87f,
    20073         0xa8c5, 0xa8cd,
     21916        0xa8c6, 0xa8cd,
    2007421917        0xa8da, 0xa8df,
    20075         0xa8fc, 0xa8ff,
     21918        0xa8fe, 0xa8ff,
    2007621919        0xa954, 0xa95e,
    2007721920        0xa97d, 0xa97f,
     
    2008921932        0xab27, 0xab27,
    2009021933        0xab2f, 0xab2f,
    20091         0xab60, 0xab63,
    20092         0xab66, 0xabbf,
     21934        0xab66, 0xab6f,
    2009321935        0xabee, 0xabef,
    2009421936        0xabfa, 0xabff,
     
    2011121953        0xfdfe, 0xfdff,
    2011221954        0xfe1a, 0xfe1f,
    20113         0xfe2e, 0xfe2f,
    2011421955        0xfe53, 0xfe53,
    2011521956        0xfe67, 0xfe67,
     
    2013521976        0x10103, 0x10106,
    2013621977        0x10134, 0x10136,
    20137         0x1018d, 0x1018f,
     21978        0x1018f, 0x1018f,
    2013821979        0x1019c, 0x1019f,
    2013921980        0x101a1, 0x101cf,
     
    2014221983        0x102d1, 0x102df,
    2014321984        0x102fc, 0x102ff,
    20144         0x10324, 0x1032f,
     21985        0x10324, 0x1032c,
    2014521986        0x1034b, 0x1034f,
    2014621987        0x1037b, 0x1037f,
     
    2014921990        0x103d6, 0x103ff,
    2015021991        0x1049e, 0x1049f,
    20151         0x104aa, 0x104ff,
     21992        0x104aa, 0x104af,
     21993        0x104d4, 0x104d7,
     21994        0x104fc, 0x104ff,
    2015221995        0x10528, 0x1052f,
    2015321996        0x10564, 0x1056e,
     
    2016322006        0x10856, 0x10856,
    2016422007        0x1089f, 0x108a6,
    20165         0x108b0, 0x108ff,
     22008        0x108b0, 0x108df,
     22009        0x108f3, 0x108f3,
     22010        0x108f6, 0x108fa,
    2016622011        0x1091c, 0x1091e,
    2016722012        0x1093a, 0x1093e,
    2016822013        0x10940, 0x1097f,
    20169         0x109b8, 0x109bd,
    20170         0x109c0, 0x109ff,
     22014        0x109b8, 0x109bb,
     22015        0x109d0, 0x109d1,
    2017122016        0x10a04, 0x10a04,
    2017222017        0x10a07, 0x10a0b,
     
    2018622031        0x10b9d, 0x10ba8,
    2018722032        0x10bb0, 0x10bff,
    20188         0x10c49, 0x10e5f,
     22033        0x10c49, 0x10c7f,
     22034        0x10cb3, 0x10cbf,
     22035        0x10cf3, 0x10cf9,
     22036        0x10d00, 0x10e5f,
    2018922037        0x10e7f, 0x10fff,
    2019022038        0x1104e, 0x11051,
     
    2019622044        0x11144, 0x1114f,
    2019722045        0x11177, 0x1117f,
    20198         0x111c9, 0x111cc,
    2019922046        0x111ce, 0x111cf,
    20200         0x111db, 0x111e0,
     22047        0x111e0, 0x111e0,
    2020122048        0x111f5, 0x111ff,
    2020222049        0x11212, 0x11212,
    20203         0x1123e, 0x112af,
     22050        0x1123f, 0x1127f,
     22051        0x11287, 0x11287,
     22052        0x11289, 0x11289,
     22053        0x1128e, 0x1128e,
     22054        0x1129e, 0x1129e,
     22055        0x112aa, 0x112af,
    2020422056        0x112eb, 0x112ef,
    20205         0x112fa, 0x11300,
     22057        0x112fa, 0x112ff,
    2020622058        0x11304, 0x11304,
    2020722059        0x1130d, 0x1130e,
     
    2021322065        0x11345, 0x11346,
    2021422066        0x11349, 0x1134a,
    20215         0x1134e, 0x11356,
     22067        0x1134e, 0x1134f,
     22068        0x11351, 0x11356,
    2021622069        0x11358, 0x1135c,
    2021722070        0x11364, 0x11365,
    2021822071        0x1136d, 0x1136f,
    20219         0x11375, 0x1147f,
     22072        0x11375, 0x113ff,
     22073        0x1145a, 0x1145a,
     22074        0x1145c, 0x1145c,
     22075        0x1145e, 0x1147f,
    2022022076        0x114c8, 0x114cf,
    2022122077        0x114da, 0x1157f,
    2022222078        0x115b6, 0x115b7,
    20223         0x115ca, 0x115ff,
     22079        0x115de, 0x115ff,
    2022422080        0x11645, 0x1164f,
    20225         0x1165a, 0x1167f,
     22081        0x1165a, 0x1165f,
     22082        0x1166d, 0x1167f,
    2022622083        0x116b8, 0x116bf,
    20227         0x116ca, 0x1189f,
     22084        0x116ca, 0x116ff,
     22085        0x1171a, 0x1171c,
     22086        0x1172c, 0x1172f,
     22087        0x11740, 0x1189f,
    2022822088        0x118f3, 0x118fe,
    20229         0x11900, 0x11abf,
    20230         0x11af9, 0x11fff,
    20231         0x12399, 0x123ff,
     22089        0x11900, 0x119ff,
     22090        0x11a48, 0x11a4f,
     22091        0x11a84, 0x11a85,
     22092        0x11a9d, 0x11a9d,
     22093        0x11aa3, 0x11abf,
     22094        0x11af9, 0x11bff,
     22095        0x11c09, 0x11c09,
     22096        0x11c37, 0x11c37,
     22097        0x11c46, 0x11c4f,
     22098        0x11c6d, 0x11c6f,
     22099        0x11c90, 0x11c91,
     22100        0x11ca8, 0x11ca8,
     22101        0x11cb7, 0x11cff,
     22102        0x11d07, 0x11d07,
     22103        0x11d0a, 0x11d0a,
     22104        0x11d37, 0x11d39,
     22105        0x11d3b, 0x11d3b,
     22106        0x11d3e, 0x11d3e,
     22107        0x11d48, 0x11d4f,
     22108        0x11d5a, 0x11fff,
     22109        0x1239a, 0x123ff,
    2023222110        0x1246f, 0x1246f,
    20233         0x12475, 0x12fff,
    20234         0x1342f, 0x167ff,
     22111        0x12475, 0x1247f,
     22112        0x12544, 0x12fff,
     22113        0x1342f, 0x143ff,
     22114        0x14647, 0x167ff,
    2023522115        0x16a39, 0x16a3f,
    2023622116        0x16a5f, 0x16a5f,
     
    2024622126        0x16f45, 0x16f4f,
    2024722127        0x16f7f, 0x16f8e,
    20248         0x16fa0, 0x1afff,
    20249         0x1b002, 0x1bbff,
     22128        0x16fa0, 0x16fdf,
     22129        0x16fe2, 0x16fff,
     22130        0x187ed, 0x187ff,
     22131        0x18af3, 0x1afff,
     22132        0x1b11f, 0x1b16f,
     22133        0x1b2fc, 0x1bbff,
    2025022134        0x1bc6b, 0x1bc6f,
    2025122135        0x1bc7d, 0x1bc7f,
     
    2025522139        0x1d0f6, 0x1d0ff,
    2025622140        0x1d127, 0x1d128,
    20257         0x1d1de, 0x1d1ff,
     22141        0x1d1e9, 0x1d1ff,
    2025822142        0x1d246, 0x1d2ff,
    2025922143        0x1d357, 0x1d35f,
     
    2027922163        0x1d6a6, 0x1d6a7,
    2028022164        0x1d7cc, 0x1d7cd,
    20281         0x1d800, 0x1e7ff,
     22165        0x1da8c, 0x1da9a,
     22166        0x1daa0, 0x1daa0,
     22167        0x1dab0, 0x1dfff,
     22168        0x1e007, 0x1e007,
     22169        0x1e019, 0x1e01a,
     22170        0x1e022, 0x1e022,
     22171        0x1e025, 0x1e025,
     22172        0x1e02b, 0x1e7ff,
    2028222173        0x1e8c5, 0x1e8c6,
    20283         0x1e8d7, 0x1edff,
     22174        0x1e8d7, 0x1e8ff,
     22175        0x1e94b, 0x1e94f,
     22176        0x1e95a, 0x1e95d,
     22177        0x1e960, 0x1edff,
    2028422178        0x1ee04, 0x1ee04,
    2028522179        0x1ee20, 0x1ee20,
     
    2032522219        0x1f12f, 0x1f12f,
    2032622220        0x1f16c, 0x1f16f,
    20327         0x1f19b, 0x1f1e5,
     22221        0x1f1ad, 0x1f1e5,
    2032822222        0x1f203, 0x1f20f,
    20329         0x1f23b, 0x1f23f,
     22223        0x1f23c, 0x1f23f,
    2033022224        0x1f249, 0x1f24f,
    20331         0x1f252, 0x1f2ff,
    20332         0x1f32d, 0x1f32f,
    20333         0x1f37e, 0x1f37f,
    20334         0x1f3cf, 0x1f3d3,
    20335         0x1f3f8, 0x1f3ff,
    20336         0x1f4ff, 0x1f4ff,
    20337         0x1f54b, 0x1f54f,
    20338         0x1f57a, 0x1f57a,
    20339         0x1f5a4, 0x1f5a4,
    20340         0x1f643, 0x1f644,
    20341         0x1f6d0, 0x1f6df,
     22225        0x1f252, 0x1f25f,
     22226        0x1f266, 0x1f2ff,
     22227        0x1f6d5, 0x1f6df,
    2034222228        0x1f6ed, 0x1f6ef,
    20343         0x1f6f4, 0x1f6ff,
     22229        0x1f6f9, 0x1f6ff,
    2034422230        0x1f774, 0x1f77f,
    2034522231        0x1f7d5, 0x1f7ff,
     
    2034822234        0x1f85a, 0x1f85f,
    2034922235        0x1f888, 0x1f88f,
    20350         0x1f8ae, 0x1ffff,
     22236        0x1f8ae, 0x1f8ff,
     22237        0x1f90c, 0x1f90f,
     22238        0x1f93f, 0x1f93f,
     22239        0x1f94d, 0x1f94f,
     22240        0x1f96c, 0x1f97f,
     22241        0x1f998, 0x1f9bf,
     22242        0x1f9c1, 0x1f9cf,
     22243        0x1f9e7, 0x1ffff,
    2035122244        0x2a6d7, 0x2a6ff,
    2035222245        0x2b735, 0x2b73f,
    20353         0x2b81e, 0x2f7ff,
     22246        0x2b81e, 0x2b81f,
     22247        0x2cea2, 0x2ceaf,
     22248        0x2ebe1, 0x2f7ff,
    2035422249        0x2fa1e, 0xe0000,
    2035522250        0xe0002, 0xe001f,
     
    2751829413        0xefffe, 0x10ffff,
    2751929414}; /* CR_Age_7_0 */
     29415
     29416/* 'Age_8_0': Derived Age 8.0 */
     29417static const OnigCodePoint CR_Age_8_0[] = {
     29418        623,
     29419        0x0000, 0x0377,
     29420        0x037a, 0x037f,
     29421        0x0384, 0x038a,
     29422        0x038c, 0x038c,
     29423        0x038e, 0x03a1,
     29424        0x03a3, 0x052f,
     29425        0x0531, 0x0556,
     29426        0x0559, 0x055f,
     29427        0x0561, 0x0587,
     29428        0x0589, 0x058a,
     29429        0x058d, 0x058f,
     29430        0x0591, 0x05c7,
     29431        0x05d0, 0x05ea,
     29432        0x05f0, 0x05f4,
     29433        0x0600, 0x061c,
     29434        0x061e, 0x070d,
     29435        0x070f, 0x074a,
     29436        0x074d, 0x07b1,
     29437        0x07c0, 0x07fa,
     29438        0x0800, 0x082d,
     29439        0x0830, 0x083e,
     29440        0x0840, 0x085b,
     29441        0x085e, 0x085e,
     29442        0x08a0, 0x08b4,
     29443        0x08e3, 0x0983,
     29444        0x0985, 0x098c,
     29445        0x098f, 0x0990,
     29446        0x0993, 0x09a8,
     29447        0x09aa, 0x09b0,
     29448        0x09b2, 0x09b2,
     29449        0x09b6, 0x09b9,
     29450        0x09bc, 0x09c4,
     29451        0x09c7, 0x09c8,
     29452        0x09cb, 0x09ce,
     29453        0x09d7, 0x09d7,
     29454        0x09dc, 0x09dd,
     29455        0x09df, 0x09e3,
     29456        0x09e6, 0x09fb,
     29457        0x0a01, 0x0a03,
     29458        0x0a05, 0x0a0a,
     29459        0x0a0f, 0x0a10,
     29460        0x0a13, 0x0a28,
     29461        0x0a2a, 0x0a30,
     29462        0x0a32, 0x0a33,
     29463        0x0a35, 0x0a36,
     29464        0x0a38, 0x0a39,
     29465        0x0a3c, 0x0a3c,
     29466        0x0a3e, 0x0a42,
     29467        0x0a47, 0x0a48,
     29468        0x0a4b, 0x0a4d,
     29469        0x0a51, 0x0a51,
     29470        0x0a59, 0x0a5c,
     29471        0x0a5e, 0x0a5e,
     29472        0x0a66, 0x0a75,
     29473        0x0a81, 0x0a83,
     29474        0x0a85, 0x0a8d,
     29475        0x0a8f, 0x0a91,
     29476        0x0a93, 0x0aa8,
     29477        0x0aaa, 0x0ab0,
     29478        0x0ab2, 0x0ab3,
     29479        0x0ab5, 0x0ab9,
     29480        0x0abc, 0x0ac5,
     29481        0x0ac7, 0x0ac9,
     29482        0x0acb, 0x0acd,
     29483        0x0ad0, 0x0ad0,
     29484        0x0ae0, 0x0ae3,
     29485        0x0ae6, 0x0af1,
     29486        0x0af9, 0x0af9,
     29487        0x0b01, 0x0b03,
     29488        0x0b05, 0x0b0c,
     29489        0x0b0f, 0x0b10,
     29490        0x0b13, 0x0b28,
     29491        0x0b2a, 0x0b30,
     29492        0x0b32, 0x0b33,
     29493        0x0b35, 0x0b39,
     29494        0x0b3c, 0x0b44,
     29495        0x0b47, 0x0b48,
     29496        0x0b4b, 0x0b4d,
     29497        0x0b56, 0x0b57,
     29498        0x0b5c, 0x0b5d,
     29499        0x0b5f, 0x0b63,
     29500        0x0b66, 0x0b77,
     29501        0x0b82, 0x0b83,
     29502        0x0b85, 0x0b8a,
     29503        0x0b8e, 0x0b90,
     29504        0x0b92, 0x0b95,
     29505        0x0b99, 0x0b9a,
     29506        0x0b9c, 0x0b9c,
     29507        0x0b9e, 0x0b9f,
     29508        0x0ba3, 0x0ba4,
     29509        0x0ba8, 0x0baa,
     29510        0x0bae, 0x0bb9,
     29511        0x0bbe, 0x0bc2,
     29512        0x0bc6, 0x0bc8,
     29513        0x0bca, 0x0bcd,
     29514        0x0bd0, 0x0bd0,
     29515        0x0bd7, 0x0bd7,
     29516        0x0be6, 0x0bfa,
     29517        0x0c00, 0x0c03,
     29518        0x0c05, 0x0c0c,
     29519        0x0c0e, 0x0c10,
     29520        0x0c12, 0x0c28,
     29521        0x0c2a, 0x0c39,
     29522        0x0c3d, 0x0c44,
     29523        0x0c46, 0x0c48,
     29524        0x0c4a, 0x0c4d,
     29525        0x0c55, 0x0c56,
     29526        0x0c58, 0x0c5a,
     29527        0x0c60, 0x0c63,
     29528        0x0c66, 0x0c6f,
     29529        0x0c78, 0x0c7f,
     29530        0x0c81, 0x0c83,
     29531        0x0c85, 0x0c8c,
     29532        0x0c8e, 0x0c90,
     29533        0x0c92, 0x0ca8,
     29534        0x0caa, 0x0cb3,
     29535        0x0cb5, 0x0cb9,
     29536        0x0cbc, 0x0cc4,
     29537        0x0cc6, 0x0cc8,
     29538        0x0cca, 0x0ccd,
     29539        0x0cd5, 0x0cd6,
     29540        0x0cde, 0x0cde,
     29541        0x0ce0, 0x0ce3,
     29542        0x0ce6, 0x0cef,
     29543        0x0cf1, 0x0cf2,
     29544        0x0d01, 0x0d03,
     29545        0x0d05, 0x0d0c,
     29546        0x0d0e, 0x0d10,
     29547        0x0d12, 0x0d3a,
     29548        0x0d3d, 0x0d44,
     29549        0x0d46, 0x0d48,
     29550        0x0d4a, 0x0d4e,
     29551        0x0d57, 0x0d57,
     29552        0x0d5f, 0x0d63,
     29553        0x0d66, 0x0d75,
     29554        0x0d79, 0x0d7f,
     29555        0x0d82, 0x0d83,
     29556        0x0d85, 0x0d96,
     29557        0x0d9a, 0x0db1,
     29558        0x0db3, 0x0dbb,
     29559        0x0dbd, 0x0dbd,
     29560        0x0dc0, 0x0dc6,
     29561        0x0dca, 0x0dca,
     29562        0x0dcf, 0x0dd4,
     29563        0x0dd6, 0x0dd6,
     29564        0x0dd8, 0x0ddf,
     29565        0x0de6, 0x0def,
     29566        0x0df2, 0x0df4,
     29567        0x0e01, 0x0e3a,
     29568        0x0e3f, 0x0e5b,
     29569        0x0e81, 0x0e82,
     29570        0x0e84, 0x0e84,
     29571        0x0e87, 0x0e88,
     29572        0x0e8a, 0x0e8a,
     29573        0x0e8d, 0x0e8d,
     29574        0x0e94, 0x0e97,
     29575        0x0e99, 0x0e9f,
     29576        0x0ea1, 0x0ea3,
     29577        0x0ea5, 0x0ea5,
     29578        0x0ea7, 0x0ea7,
     29579        0x0eaa, 0x0eab,
     29580        0x0ead, 0x0eb9,
     29581        0x0ebb, 0x0ebd,
     29582        0x0ec0, 0x0ec4,
     29583        0x0ec6, 0x0ec6,
     29584        0x0ec8, 0x0ecd,
     29585        0x0ed0, 0x0ed9,
     29586        0x0edc, 0x0edf,
     29587        0x0f00, 0x0f47,
     29588        0x0f49, 0x0f6c,
     29589        0x0f71, 0x0f97,
     29590        0x0f99, 0x0fbc,
     29591        0x0fbe, 0x0fcc,
     29592        0x0fce, 0x0fda,
     29593        0x1000, 0x10c5,
     29594        0x10c7, 0x10c7,
     29595        0x10cd, 0x10cd,
     29596        0x10d0, 0x1248,
     29597        0x124a, 0x124d,
     29598        0x1250, 0x1256,
     29599        0x1258, 0x1258,
     29600        0x125a, 0x125d,
     29601        0x1260, 0x1288,
     29602        0x128a, 0x128d,
     29603        0x1290, 0x12b0,
     29604        0x12b2, 0x12b5,
     29605        0x12b8, 0x12be,
     29606        0x12c0, 0x12c0,
     29607        0x12c2, 0x12c5,
     29608        0x12c8, 0x12d6,
     29609        0x12d8, 0x1310,
     29610        0x1312, 0x1315,
     29611        0x1318, 0x135a,
     29612        0x135d, 0x137c,
     29613        0x1380, 0x1399,
     29614        0x13a0, 0x13f5,
     29615        0x13f8, 0x13fd,
     29616        0x1400, 0x169c,
     29617        0x16a0, 0x16f8,
     29618        0x1700, 0x170c,
     29619        0x170e, 0x1714,
     29620        0x1720, 0x1736,
     29621        0x1740, 0x1753,
     29622        0x1760, 0x176c,
     29623        0x176e, 0x1770,
     29624        0x1772, 0x1773,
     29625        0x1780, 0x17dd,
     29626        0x17e0, 0x17e9,
     29627        0x17f0, 0x17f9,
     29628        0x1800, 0x180e,
     29629        0x1810, 0x1819,
     29630        0x1820, 0x1877,
     29631        0x1880, 0x18aa,
     29632        0x18b0, 0x18f5,
     29633        0x1900, 0x191e,
     29634        0x1920, 0x192b,
     29635        0x1930, 0x193b,
     29636        0x1940, 0x1940,
     29637        0x1944, 0x196d,
     29638        0x1970, 0x1974,
     29639        0x1980, 0x19ab,
     29640        0x19b0, 0x19c9,
     29641        0x19d0, 0x19da,
     29642        0x19de, 0x1a1b,
     29643        0x1a1e, 0x1a5e,
     29644        0x1a60, 0x1a7c,
     29645        0x1a7f, 0x1a89,
     29646        0x1a90, 0x1a99,
     29647        0x1aa0, 0x1aad,
     29648        0x1ab0, 0x1abe,
     29649        0x1b00, 0x1b4b,
     29650        0x1b50, 0x1b7c,
     29651        0x1b80, 0x1bf3,
     29652        0x1bfc, 0x1c37,
     29653        0x1c3b, 0x1c49,
     29654        0x1c4d, 0x1c7f,
     29655        0x1cc0, 0x1cc7,
     29656        0x1cd0, 0x1cf6,
     29657        0x1cf8, 0x1cf9,
     29658        0x1d00, 0x1df5,
     29659        0x1dfc, 0x1f15,
     29660        0x1f18, 0x1f1d,
     29661        0x1f20, 0x1f45,
     29662        0x1f48, 0x1f4d,
     29663        0x1f50, 0x1f57,
     29664        0x1f59, 0x1f59,
     29665        0x1f5b, 0x1f5b,
     29666        0x1f5d, 0x1f5d,
     29667        0x1f5f, 0x1f7d,
     29668        0x1f80, 0x1fb4,
     29669        0x1fb6, 0x1fc4,
     29670        0x1fc6, 0x1fd3,
     29671        0x1fd6, 0x1fdb,
     29672        0x1fdd, 0x1fef,
     29673        0x1ff2, 0x1ff4,
     29674        0x1ff6, 0x1ffe,
     29675        0x2000, 0x2064,
     29676        0x2066, 0x2071,
     29677        0x2074, 0x208e,
     29678        0x2090, 0x209c,
     29679        0x20a0, 0x20be,
     29680        0x20d0, 0x20f0,
     29681        0x2100, 0x218b,
     29682        0x2190, 0x23fa,
     29683        0x2400, 0x2426,
     29684        0x2440, 0x244a,
     29685        0x2460, 0x2b73,
     29686        0x2b76, 0x2b95,
     29687        0x2b98, 0x2bb9,
     29688        0x2bbd, 0x2bc8,
     29689        0x2bca, 0x2bd1,
     29690        0x2bec, 0x2bef,
     29691        0x2c00, 0x2c2e,
     29692        0x2c30, 0x2c5e,
     29693        0x2c60, 0x2cf3,
     29694        0x2cf9, 0x2d25,
     29695        0x2d27, 0x2d27,
     29696        0x2d2d, 0x2d2d,
     29697        0x2d30, 0x2d67,
     29698        0x2d6f, 0x2d70,
     29699        0x2d7f, 0x2d96,
     29700        0x2da0, 0x2da6,
     29701        0x2da8, 0x2dae,
     29702        0x2db0, 0x2db6,
     29703        0x2db8, 0x2dbe,
     29704        0x2dc0, 0x2dc6,
     29705        0x2dc8, 0x2dce,
     29706        0x2dd0, 0x2dd6,
     29707        0x2dd8, 0x2dde,
     29708        0x2de0, 0x2e42,
     29709        0x2e80, 0x2e99,
     29710        0x2e9b, 0x2ef3,
     29711        0x2f00, 0x2fd5,
     29712        0x2ff0, 0x2ffb,
     29713        0x3000, 0x303f,
     29714        0x3041, 0x3096,
     29715        0x3099, 0x30ff,
     29716        0x3105, 0x312d,
     29717        0x3131, 0x318e,
     29718        0x3190, 0x31ba,
     29719        0x31c0, 0x31e3,
     29720        0x31f0, 0x321e,
     29721        0x3220, 0x32fe,
     29722        0x3300, 0x4db5,
     29723        0x4dc0, 0x9fd5,
     29724        0xa000, 0xa48c,
     29725        0xa490, 0xa4c6,
     29726        0xa4d0, 0xa62b,
     29727        0xa640, 0xa6f7,
     29728        0xa700, 0xa7ad,
     29729        0xa7b0, 0xa7b7,
     29730        0xa7f7, 0xa82b,
     29731        0xa830, 0xa839,
     29732        0xa840, 0xa877,
     29733        0xa880, 0xa8c4,
     29734        0xa8ce, 0xa8d9,
     29735        0xa8e0, 0xa8fd,
     29736        0xa900, 0xa953,
     29737        0xa95f, 0xa97c,
     29738        0xa980, 0xa9cd,
     29739        0xa9cf, 0xa9d9,
     29740        0xa9de, 0xa9fe,
     29741        0xaa00, 0xaa36,
     29742        0xaa40, 0xaa4d,
     29743        0xaa50, 0xaa59,
     29744        0xaa5c, 0xaac2,
     29745        0xaadb, 0xaaf6,
     29746        0xab01, 0xab06,
     29747        0xab09, 0xab0e,
     29748        0xab11, 0xab16,
     29749        0xab20, 0xab26,
     29750        0xab28, 0xab2e,
     29751        0xab30, 0xab65,
     29752        0xab70, 0xabed,
     29753        0xabf0, 0xabf9,
     29754        0xac00, 0xd7a3,
     29755        0xd7b0, 0xd7c6,
     29756        0xd7cb, 0xd7fb,
     29757        0xd800, 0xfa6d,
     29758        0xfa70, 0xfad9,
     29759        0xfb00, 0xfb06,
     29760        0xfb13, 0xfb17,
     29761        0xfb1d, 0xfb36,
     29762        0xfb38, 0xfb3c,
     29763        0xfb3e, 0xfb3e,
     29764        0xfb40, 0xfb41,
     29765        0xfb43, 0xfb44,
     29766        0xfb46, 0xfbc1,
     29767        0xfbd3, 0xfd3f,
     29768        0xfd50, 0xfd8f,
     29769        0xfd92, 0xfdc7,
     29770        0xfdd0, 0xfdfd,
     29771        0xfe00, 0xfe19,
     29772        0xfe20, 0xfe52,
     29773        0xfe54, 0xfe66,
     29774        0xfe68, 0xfe6b,
     29775        0xfe70, 0xfe74,
     29776        0xfe76, 0xfefc,
     29777        0xfeff, 0xfeff,
     29778        0xff01, 0xffbe,
     29779        0xffc2, 0xffc7,
     29780        0xffca, 0xffcf,
     29781        0xffd2, 0xffd7,
     29782        0xffda, 0xffdc,
     29783        0xffe0, 0xffe6,
     29784        0xffe8, 0xffee,
     29785        0xfff9, 0x1000b,
     29786        0x1000d, 0x10026,
     29787        0x10028, 0x1003a,
     29788        0x1003c, 0x1003d,
     29789        0x1003f, 0x1004d,
     29790        0x10050, 0x1005d,
     29791        0x10080, 0x100fa,
     29792        0x10100, 0x10102,
     29793        0x10107, 0x10133,
     29794        0x10137, 0x1018c,
     29795        0x10190, 0x1019b,
     29796        0x101a0, 0x101a0,
     29797        0x101d0, 0x101fd,
     29798        0x10280, 0x1029c,
     29799        0x102a0, 0x102d0,
     29800        0x102e0, 0x102fb,
     29801        0x10300, 0x10323,
     29802        0x10330, 0x1034a,
     29803        0x10350, 0x1037a,
     29804        0x10380, 0x1039d,
     29805        0x1039f, 0x103c3,
     29806        0x103c8, 0x103d5,
     29807        0x10400, 0x1049d,
     29808        0x104a0, 0x104a9,
     29809        0x10500, 0x10527,
     29810        0x10530, 0x10563,
     29811        0x1056f, 0x1056f,
     29812        0x10600, 0x10736,
     29813        0x10740, 0x10755,
     29814        0x10760, 0x10767,
     29815        0x10800, 0x10805,
     29816        0x10808, 0x10808,
     29817        0x1080a, 0x10835,
     29818        0x10837, 0x10838,
     29819        0x1083c, 0x1083c,
     29820        0x1083f, 0x10855,
     29821        0x10857, 0x1089e,
     29822        0x108a7, 0x108af,
     29823        0x108e0, 0x108f2,
     29824        0x108f4, 0x108f5,
     29825        0x108fb, 0x1091b,
     29826        0x1091f, 0x10939,
     29827        0x1093f, 0x1093f,
     29828        0x10980, 0x109b7,
     29829        0x109bc, 0x109cf,
     29830        0x109d2, 0x10a03,
     29831        0x10a05, 0x10a06,
     29832        0x10a0c, 0x10a13,
     29833        0x10a15, 0x10a17,
     29834        0x10a19, 0x10a33,
     29835        0x10a38, 0x10a3a,
     29836        0x10a3f, 0x10a47,
     29837        0x10a50, 0x10a58,
     29838        0x10a60, 0x10a9f,
     29839        0x10ac0, 0x10ae6,
     29840        0x10aeb, 0x10af6,
     29841        0x10b00, 0x10b35,
     29842        0x10b39, 0x10b55,
     29843        0x10b58, 0x10b72,
     29844        0x10b78, 0x10b91,
     29845        0x10b99, 0x10b9c,
     29846        0x10ba9, 0x10baf,
     29847        0x10c00, 0x10c48,
     29848        0x10c80, 0x10cb2,
     29849        0x10cc0, 0x10cf2,
     29850        0x10cfa, 0x10cff,
     29851        0x10e60, 0x10e7e,
     29852        0x11000, 0x1104d,
     29853        0x11052, 0x1106f,
     29854        0x1107f, 0x110c1,
     29855        0x110d0, 0x110e8,
     29856        0x110f0, 0x110f9,
     29857        0x11100, 0x11134,
     29858        0x11136, 0x11143,
     29859        0x11150, 0x11176,
     29860        0x11180, 0x111cd,
     29861        0x111d0, 0x111df,
     29862        0x111e1, 0x111f4,
     29863        0x11200, 0x11211,
     29864        0x11213, 0x1123d,
     29865        0x11280, 0x11286,
     29866        0x11288, 0x11288,
     29867        0x1128a, 0x1128d,
     29868        0x1128f, 0x1129d,
     29869        0x1129f, 0x112a9,
     29870        0x112b0, 0x112ea,
     29871        0x112f0, 0x112f9,
     29872        0x11300, 0x11303,
     29873        0x11305, 0x1130c,
     29874        0x1130f, 0x11310,
     29875        0x11313, 0x11328,
     29876        0x1132a, 0x11330,
     29877        0x11332, 0x11333,
     29878        0x11335, 0x11339,
     29879        0x1133c, 0x11344,
     29880        0x11347, 0x11348,
     29881        0x1134b, 0x1134d,
     29882        0x11350, 0x11350,
     29883        0x11357, 0x11357,
     29884        0x1135d, 0x11363,
     29885        0x11366, 0x1136c,
     29886        0x11370, 0x11374,
     29887        0x11480, 0x114c7,
     29888        0x114d0, 0x114d9,
     29889        0x11580, 0x115b5,
     29890        0x115b8, 0x115dd,
     29891        0x11600, 0x11644,
     29892        0x11650, 0x11659,
     29893        0x11680, 0x116b7,
     29894        0x116c0, 0x116c9,
     29895        0x11700, 0x11719,
     29896        0x1171d, 0x1172b,
     29897        0x11730, 0x1173f,
     29898        0x118a0, 0x118f2,
     29899        0x118ff, 0x118ff,
     29900        0x11ac0, 0x11af8,
     29901        0x12000, 0x12399,
     29902        0x12400, 0x1246e,
     29903        0x12470, 0x12474,
     29904        0x12480, 0x12543,
     29905        0x13000, 0x1342e,
     29906        0x14400, 0x14646,
     29907        0x16800, 0x16a38,
     29908        0x16a40, 0x16a5e,
     29909        0x16a60, 0x16a69,
     29910        0x16a6e, 0x16a6f,
     29911        0x16ad0, 0x16aed,
     29912        0x16af0, 0x16af5,
     29913        0x16b00, 0x16b45,
     29914        0x16b50, 0x16b59,
     29915        0x16b5b, 0x16b61,
     29916        0x16b63, 0x16b77,
     29917        0x16b7d, 0x16b8f,
     29918        0x16f00, 0x16f44,
     29919        0x16f50, 0x16f7e,
     29920        0x16f8f, 0x16f9f,
     29921        0x1b000, 0x1b001,
     29922        0x1bc00, 0x1bc6a,
     29923        0x1bc70, 0x1bc7c,
     29924        0x1bc80, 0x1bc88,
     29925        0x1bc90, 0x1bc99,
     29926        0x1bc9c, 0x1bca3,
     29927        0x1d000, 0x1d0f5,
     29928        0x1d100, 0x1d126,
     29929        0x1d129, 0x1d1e8,
     29930        0x1d200, 0x1d245,
     29931        0x1d300, 0x1d356,
     29932        0x1d360, 0x1d371,
     29933        0x1d400, 0x1d454,
     29934        0x1d456, 0x1d49c,
     29935        0x1d49e, 0x1d49f,
     29936        0x1d4a2, 0x1d4a2,
     29937        0x1d4a5, 0x1d4a6,
     29938        0x1d4a9, 0x1d4ac,
     29939        0x1d4ae, 0x1d4b9,
     29940        0x1d4bb, 0x1d4bb,
     29941        0x1d4bd, 0x1d4c3,
     29942        0x1d4c5, 0x1d505,
     29943        0x1d507, 0x1d50a,
     29944        0x1d50d, 0x1d514,
     29945        0x1d516, 0x1d51c,
     29946        0x1d51e, 0x1d539,
     29947        0x1d53b, 0x1d53e,
     29948        0x1d540, 0x1d544,
     29949        0x1d546, 0x1d546,
     29950        0x1d54a, 0x1d550,
     29951        0x1d552, 0x1d6a5,
     29952        0x1d6a8, 0x1d7cb,
     29953        0x1d7ce, 0x1da8b,
     29954        0x1da9b, 0x1da9f,
     29955        0x1daa1, 0x1daaf,
     29956        0x1e800, 0x1e8c4,
     29957        0x1e8c7, 0x1e8d6,
     29958        0x1ee00, 0x1ee03,
     29959        0x1ee05, 0x1ee1f,
     29960        0x1ee21, 0x1ee22,
     29961        0x1ee24, 0x1ee24,
     29962        0x1ee27, 0x1ee27,
     29963        0x1ee29, 0x1ee32,
     29964        0x1ee34, 0x1ee37,
     29965        0x1ee39, 0x1ee39,
     29966        0x1ee3b, 0x1ee3b,
     29967        0x1ee42, 0x1ee42,
     29968        0x1ee47, 0x1ee47,
     29969        0x1ee49, 0x1ee49,
     29970        0x1ee4b, 0x1ee4b,
     29971        0x1ee4d, 0x1ee4f,
     29972        0x1ee51, 0x1ee52,
     29973        0x1ee54, 0x1ee54,
     29974        0x1ee57, 0x1ee57,
     29975        0x1ee59, 0x1ee59,
     29976        0x1ee5b, 0x1ee5b,
     29977        0x1ee5d, 0x1ee5d,
     29978        0x1ee5f, 0x1ee5f,
     29979        0x1ee61, 0x1ee62,
     29980        0x1ee64, 0x1ee64,
     29981        0x1ee67, 0x1ee6a,
     29982        0x1ee6c, 0x1ee72,
     29983        0x1ee74, 0x1ee77,
     29984        0x1ee79, 0x1ee7c,
     29985        0x1ee7e, 0x1ee7e,
     29986        0x1ee80, 0x1ee89,
     29987        0x1ee8b, 0x1ee9b,
     29988        0x1eea1, 0x1eea3,
     29989        0x1eea5, 0x1eea9,
     29990        0x1eeab, 0x1eebb,
     29991        0x1eef0, 0x1eef1,
     29992        0x1f000, 0x1f02b,
     29993        0x1f030, 0x1f093,
     29994        0x1f0a0, 0x1f0ae,
     29995        0x1f0b1, 0x1f0bf,
     29996        0x1f0c1, 0x1f0cf,
     29997        0x1f0d1, 0x1f0f5,
     29998        0x1f100, 0x1f10c,
     29999        0x1f110, 0x1f12e,
     30000        0x1f130, 0x1f16b,
     30001        0x1f170, 0x1f19a,
     30002        0x1f1e6, 0x1f202,
     30003        0x1f210, 0x1f23a,
     30004        0x1f240, 0x1f248,
     30005        0x1f250, 0x1f251,
     30006        0x1f300, 0x1f579,
     30007        0x1f57b, 0x1f5a3,
     30008        0x1f5a5, 0x1f6d0,
     30009        0x1f6e0, 0x1f6ec,
     30010        0x1f6f0, 0x1f6f3,
     30011        0x1f700, 0x1f773,
     30012        0x1f780, 0x1f7d4,
     30013        0x1f800, 0x1f80b,
     30014        0x1f810, 0x1f847,
     30015        0x1f850, 0x1f859,
     30016        0x1f860, 0x1f887,
     30017        0x1f890, 0x1f8ad,
     30018        0x1f910, 0x1f918,
     30019        0x1f980, 0x1f984,
     30020        0x1f9c0, 0x1f9c0,
     30021        0x1fffe, 0x2a6d6,
     30022        0x2a700, 0x2b734,
     30023        0x2b740, 0x2b81d,
     30024        0x2b820, 0x2cea1,
     30025        0x2f800, 0x2fa1d,
     30026        0x2fffe, 0x2ffff,
     30027        0x3fffe, 0x3ffff,
     30028        0x4fffe, 0x4ffff,
     30029        0x5fffe, 0x5ffff,
     30030        0x6fffe, 0x6ffff,
     30031        0x7fffe, 0x7ffff,
     30032        0x8fffe, 0x8ffff,
     30033        0x9fffe, 0x9ffff,
     30034        0xafffe, 0xaffff,
     30035        0xbfffe, 0xbffff,
     30036        0xcfffe, 0xcffff,
     30037        0xdfffe, 0xdffff,
     30038        0xe0001, 0xe0001,
     30039        0xe0020, 0xe007f,
     30040        0xe0100, 0xe01ef,
     30041        0xefffe, 0x10ffff,
     30042}; /* CR_Age_8_0 */
     30043
     30044/* 'Age_9_0': Derived Age 9.0 */
     30045static const OnigCodePoint CR_Age_9_0[] = {
     30046        648,
     30047        0x0000, 0x0377,
     30048        0x037a, 0x037f,
     30049        0x0384, 0x038a,
     30050        0x038c, 0x038c,
     30051        0x038e, 0x03a1,
     30052        0x03a3, 0x052f,
     30053        0x0531, 0x0556,
     30054        0x0559, 0x055f,
     30055        0x0561, 0x0587,
     30056        0x0589, 0x058a,
     30057        0x058d, 0x058f,
     30058        0x0591, 0x05c7,
     30059        0x05d0, 0x05ea,
     30060        0x05f0, 0x05f4,
     30061        0x0600, 0x061c,
     30062        0x061e, 0x070d,
     30063        0x070f, 0x074a,
     30064        0x074d, 0x07b1,
     30065        0x07c0, 0x07fa,
     30066        0x0800, 0x082d,
     30067        0x0830, 0x083e,
     30068        0x0840, 0x085b,
     30069        0x085e, 0x085e,
     30070        0x08a0, 0x08b4,
     30071        0x08b6, 0x08bd,
     30072        0x08d4, 0x0983,
     30073        0x0985, 0x098c,
     30074        0x098f, 0x0990,
     30075        0x0993, 0x09a8,
     30076        0x09aa, 0x09b0,
     30077        0x09b2, 0x09b2,
     30078        0x09b6, 0x09b9,
     30079        0x09bc, 0x09c4,
     30080        0x09c7, 0x09c8,
     30081        0x09cb, 0x09ce,
     30082        0x09d7, 0x09d7,
     30083        0x09dc, 0x09dd,
     30084        0x09df, 0x09e3,
     30085        0x09e6, 0x09fb,
     30086        0x0a01, 0x0a03,
     30087        0x0a05, 0x0a0a,
     30088        0x0a0f, 0x0a10,
     30089        0x0a13, 0x0a28,
     30090        0x0a2a, 0x0a30,
     30091        0x0a32, 0x0a33,
     30092        0x0a35, 0x0a36,
     30093        0x0a38, 0x0a39,
     30094        0x0a3c, 0x0a3c,
     30095        0x0a3e, 0x0a42,
     30096        0x0a47, 0x0a48,
     30097        0x0a4b, 0x0a4d,
     30098        0x0a51, 0x0a51,
     30099        0x0a59, 0x0a5c,
     30100        0x0a5e, 0x0a5e,
     30101        0x0a66, 0x0a75,
     30102        0x0a81, 0x0a83,
     30103        0x0a85, 0x0a8d,
     30104        0x0a8f, 0x0a91,
     30105        0x0a93, 0x0aa8,
     30106        0x0aaa, 0x0ab0,
     30107        0x0ab2, 0x0ab3,
     30108        0x0ab5, 0x0ab9,
     30109        0x0abc, 0x0ac5,
     30110        0x0ac7, 0x0ac9,
     30111        0x0acb, 0x0acd,
     30112        0x0ad0, 0x0ad0,
     30113        0x0ae0, 0x0ae3,
     30114        0x0ae6, 0x0af1,
     30115        0x0af9, 0x0af9,
     30116        0x0b01, 0x0b03,
     30117        0x0b05, 0x0b0c,
     30118        0x0b0f, 0x0b10,
     30119        0x0b13, 0x0b28,
     30120        0x0b2a, 0x0b30,
     30121        0x0b32, 0x0b33,
     30122        0x0b35, 0x0b39,
     30123        0x0b3c, 0x0b44,
     30124        0x0b47, 0x0b48,
     30125        0x0b4b, 0x0b4d,
     30126        0x0b56, 0x0b57,
     30127        0x0b5c, 0x0b5d,
     30128        0x0b5f, 0x0b63,
     30129        0x0b66, 0x0b77,
     30130        0x0b82, 0x0b83,
     30131        0x0b85, 0x0b8a,
     30132        0x0b8e, 0x0b90,
     30133        0x0b92, 0x0b95,
     30134        0x0b99, 0x0b9a,
     30135        0x0b9c, 0x0b9c,
     30136        0x0b9e, 0x0b9f,
     30137        0x0ba3, 0x0ba4,
     30138        0x0ba8, 0x0baa,
     30139        0x0bae, 0x0bb9,
     30140        0x0bbe, 0x0bc2,
     30141        0x0bc6, 0x0bc8,
     30142        0x0bca, 0x0bcd,
     30143        0x0bd0, 0x0bd0,
     30144        0x0bd7, 0x0bd7,
     30145        0x0be6, 0x0bfa,
     30146        0x0c00, 0x0c03,
     30147        0x0c05, 0x0c0c,
     30148        0x0c0e, 0x0c10,
     30149        0x0c12, 0x0c28,
     30150        0x0c2a, 0x0c39,
     30151        0x0c3d, 0x0c44,
     30152        0x0c46, 0x0c48,
     30153        0x0c4a, 0x0c4d,
     30154        0x0c55, 0x0c56,
     30155        0x0c58, 0x0c5a,
     30156        0x0c60, 0x0c63,
     30157        0x0c66, 0x0c6f,
     30158        0x0c78, 0x0c83,
     30159        0x0c85, 0x0c8c,
     30160        0x0c8e, 0x0c90,
     30161        0x0c92, 0x0ca8,
     30162        0x0caa, 0x0cb3,
     30163        0x0cb5, 0x0cb9,
     30164        0x0cbc, 0x0cc4,
     30165        0x0cc6, 0x0cc8,
     30166        0x0cca, 0x0ccd,
     30167        0x0cd5, 0x0cd6,
     30168        0x0cde, 0x0cde,
     30169        0x0ce0, 0x0ce3,
     30170        0x0ce6, 0x0cef,
     30171        0x0cf1, 0x0cf2,
     30172        0x0d01, 0x0d03,
     30173        0x0d05, 0x0d0c,
     30174        0x0d0e, 0x0d10,
     30175        0x0d12, 0x0d3a,
     30176        0x0d3d, 0x0d44,
     30177        0x0d46, 0x0d48,
     30178        0x0d4a, 0x0d4f,
     30179        0x0d54, 0x0d63,
     30180        0x0d66, 0x0d7f,
     30181        0x0d82, 0x0d83,
     30182        0x0d85, 0x0d96,
     30183        0x0d9a, 0x0db1,
     30184        0x0db3, 0x0dbb,
     30185        0x0dbd, 0x0dbd,
     30186        0x0dc0, 0x0dc6,
     30187        0x0dca, 0x0dca,
     30188        0x0dcf, 0x0dd4,
     30189        0x0dd6, 0x0dd6,
     30190        0x0dd8, 0x0ddf,
     30191        0x0de6, 0x0def,
     30192        0x0df2, 0x0df4,
     30193        0x0e01, 0x0e3a,
     30194        0x0e3f, 0x0e5b,
     30195        0x0e81, 0x0e82,
     30196        0x0e84, 0x0e84,
     30197        0x0e87, 0x0e88,
     30198        0x0e8a, 0x0e8a,
     30199        0x0e8d, 0x0e8d,
     30200        0x0e94, 0x0e97,
     30201        0x0e99, 0x0e9f,
     30202        0x0ea1, 0x0ea3,
     30203        0x0ea5, 0x0ea5,
     30204        0x0ea7, 0x0ea7,
     30205        0x0eaa, 0x0eab,
     30206        0x0ead, 0x0eb9,
     30207        0x0ebb, 0x0ebd,
     30208        0x0ec0, 0x0ec4,
     30209        0x0ec6, 0x0ec6,
     30210        0x0ec8, 0x0ecd,
     30211        0x0ed0, 0x0ed9,
     30212        0x0edc, 0x0edf,
     30213        0x0f00, 0x0f47,
     30214        0x0f49, 0x0f6c,
     30215        0x0f71, 0x0f97,
     30216        0x0f99, 0x0fbc,
     30217        0x0fbe, 0x0fcc,
     30218        0x0fce, 0x0fda,
     30219        0x1000, 0x10c5,
     30220        0x10c7, 0x10c7,
     30221        0x10cd, 0x10cd,
     30222        0x10d0, 0x1248,
     30223        0x124a, 0x124d,
     30224        0x1250, 0x1256,
     30225        0x1258, 0x1258,
     30226        0x125a, 0x125d,
     30227        0x1260, 0x1288,
     30228        0x128a, 0x128d,
     30229        0x1290, 0x12b0,
     30230        0x12b2, 0x12b5,
     30231        0x12b8, 0x12be,
     30232        0x12c0, 0x12c0,
     30233        0x12c2, 0x12c5,
     30234        0x12c8, 0x12d6,
     30235        0x12d8, 0x1310,
     30236        0x1312, 0x1315,
     30237        0x1318, 0x135a,
     30238        0x135d, 0x137c,
     30239        0x1380, 0x1399,
     30240        0x13a0, 0x13f5,
     30241        0x13f8, 0x13fd,
     30242        0x1400, 0x169c,
     30243        0x16a0, 0x16f8,
     30244        0x1700, 0x170c,
     30245        0x170e, 0x1714,
     30246        0x1720, 0x1736,
     30247        0x1740, 0x1753,
     30248        0x1760, 0x176c,
     30249        0x176e, 0x1770,
     30250        0x1772, 0x1773,
     30251        0x1780, 0x17dd,
     30252        0x17e0, 0x17e9,
     30253        0x17f0, 0x17f9,
     30254        0x1800, 0x180e,
     30255        0x1810, 0x1819,
     30256        0x1820, 0x1877,
     30257        0x1880, 0x18aa,
     30258        0x18b0, 0x18f5,
     30259        0x1900, 0x191e,
     30260        0x1920, 0x192b,
     30261        0x1930, 0x193b,
     30262        0x1940, 0x1940,
     30263        0x1944, 0x196d,
     30264        0x1970, 0x1974,
     30265        0x1980, 0x19ab,
     30266        0x19b0, 0x19c9,
     30267        0x19d0, 0x19da,
     30268        0x19de, 0x1a1b,
     30269        0x1a1e, 0x1a5e,
     30270        0x1a60, 0x1a7c,
     30271        0x1a7f, 0x1a89,
     30272        0x1a90, 0x1a99,
     30273        0x1aa0, 0x1aad,
     30274        0x1ab0, 0x1abe,
     30275        0x1b00, 0x1b4b,
     30276        0x1b50, 0x1b7c,
     30277        0x1b80, 0x1bf3,
     30278        0x1bfc, 0x1c37,
     30279        0x1c3b, 0x1c49,
     30280        0x1c4d, 0x1c88,
     30281        0x1cc0, 0x1cc7,
     30282        0x1cd0, 0x1cf6,
     30283        0x1cf8, 0x1cf9,
     30284        0x1d00, 0x1df5,
     30285        0x1dfb, 0x1f15,
     30286        0x1f18, 0x1f1d,
     30287        0x1f20, 0x1f45,
     30288        0x1f48, 0x1f4d,
     30289        0x1f50, 0x1f57,
     30290        0x1f59, 0x1f59,
     30291        0x1f5b, 0x1f5b,
     30292        0x1f5d, 0x1f5d,
     30293        0x1f5f, 0x1f7d,
     30294        0x1f80, 0x1fb4,
     30295        0x1fb6, 0x1fc4,
     30296        0x1fc6, 0x1fd3,
     30297        0x1fd6, 0x1fdb,
     30298        0x1fdd, 0x1fef,
     30299        0x1ff2, 0x1ff4,
     30300        0x1ff6, 0x1ffe,
     30301        0x2000, 0x2064,
     30302        0x2066, 0x2071,
     30303        0x2074, 0x208e,
     30304        0x2090, 0x209c,
     30305        0x20a0, 0x20be,
     30306        0x20d0, 0x20f0,
     30307        0x2100, 0x218b,
     30308        0x2190, 0x23fe,
     30309        0x2400, 0x2426,
     30310        0x2440, 0x244a,
     30311        0x2460, 0x2b73,
     30312        0x2b76, 0x2b95,
     30313        0x2b98, 0x2bb9,
     30314        0x2bbd, 0x2bc8,
     30315        0x2bca, 0x2bd1,
     30316        0x2bec, 0x2bef,
     30317        0x2c00, 0x2c2e,
     30318        0x2c30, 0x2c5e,
     30319        0x2c60, 0x2cf3,
     30320        0x2cf9, 0x2d25,
     30321        0x2d27, 0x2d27,
     30322        0x2d2d, 0x2d2d,
     30323        0x2d30, 0x2d67,
     30324        0x2d6f, 0x2d70,
     30325        0x2d7f, 0x2d96,
     30326        0x2da0, 0x2da6,
     30327        0x2da8, 0x2dae,
     30328        0x2db0, 0x2db6,
     30329        0x2db8, 0x2dbe,
     30330        0x2dc0, 0x2dc6,
     30331        0x2dc8, 0x2dce,
     30332        0x2dd0, 0x2dd6,
     30333        0x2dd8, 0x2dde,
     30334        0x2de0, 0x2e44,
     30335        0x2e80, 0x2e99,
     30336        0x2e9b, 0x2ef3,
     30337        0x2f00, 0x2fd5,
     30338        0x2ff0, 0x2ffb,
     30339        0x3000, 0x303f,
     30340        0x3041, 0x3096,
     30341        0x3099, 0x30ff,
     30342        0x3105, 0x312d,
     30343        0x3131, 0x318e,
     30344        0x3190, 0x31ba,
     30345        0x31c0, 0x31e3,
     30346        0x31f0, 0x321e,
     30347        0x3220, 0x32fe,
     30348        0x3300, 0x4db5,
     30349        0x4dc0, 0x9fd5,
     30350        0xa000, 0xa48c,
     30351        0xa490, 0xa4c6,
     30352        0xa4d0, 0xa62b,
     30353        0xa640, 0xa6f7,
     30354        0xa700, 0xa7ae,
     30355        0xa7b0, 0xa7b7,
     30356        0xa7f7, 0xa82b,
     30357        0xa830, 0xa839,
     30358        0xa840, 0xa877,
     30359        0xa880, 0xa8c5,
     30360        0xa8ce, 0xa8d9,
     30361        0xa8e0, 0xa8fd,
     30362        0xa900, 0xa953,
     30363        0xa95f, 0xa97c,
     30364        0xa980, 0xa9cd,
     30365        0xa9cf, 0xa9d9,
     30366        0xa9de, 0xa9fe,
     30367        0xaa00, 0xaa36,
     30368        0xaa40, 0xaa4d,
     30369        0xaa50, 0xaa59,
     30370        0xaa5c, 0xaac2,
     30371        0xaadb, 0xaaf6,
     30372        0xab01, 0xab06,
     30373        0xab09, 0xab0e,
     30374        0xab11, 0xab16,
     30375        0xab20, 0xab26,
     30376        0xab28, 0xab2e,
     30377        0xab30, 0xab65,
     30378        0xab70, 0xabed,
     30379        0xabf0, 0xabf9,
     30380        0xac00, 0xd7a3,
     30381        0xd7b0, 0xd7c6,
     30382        0xd7cb, 0xd7fb,
     30383        0xd800, 0xfa6d,
     30384        0xfa70, 0xfad9,
     30385        0xfb00, 0xfb06,
     30386        0xfb13, 0xfb17,
     30387        0xfb1d, 0xfb36,
     30388        0xfb38, 0xfb3c,
     30389        0xfb3e, 0xfb3e,
     30390        0xfb40, 0xfb41,
     30391        0xfb43, 0xfb44,
     30392        0xfb46, 0xfbc1,
     30393        0xfbd3, 0xfd3f,
     30394        0xfd50, 0xfd8f,
     30395        0xfd92, 0xfdc7,
     30396        0xfdd0, 0xfdfd,
     30397        0xfe00, 0xfe19,
     30398        0xfe20, 0xfe52,
     30399        0xfe54, 0xfe66,
     30400        0xfe68, 0xfe6b,
     30401        0xfe70, 0xfe74,
     30402        0xfe76, 0xfefc,
     30403        0xfeff, 0xfeff,
     30404        0xff01, 0xffbe,
     30405        0xffc2, 0xffc7,
     30406        0xffca, 0xffcf,
     30407        0xffd2, 0xffd7,
     30408        0xffda, 0xffdc,
     30409        0xffe0, 0xffe6,
     30410        0xffe8, 0xffee,
     30411        0xfff9, 0x1000b,
     30412        0x1000d, 0x10026,
     30413        0x10028, 0x1003a,
     30414        0x1003c, 0x1003d,
     30415        0x1003f, 0x1004d,
     30416        0x10050, 0x1005d,
     30417        0x10080, 0x100fa,
     30418        0x10100, 0x10102,
     30419        0x10107, 0x10133,
     30420        0x10137, 0x1018e,
     30421        0x10190, 0x1019b,
     30422        0x101a0, 0x101a0,
     30423        0x101d0, 0x101fd,
     30424        0x10280, 0x1029c,
     30425        0x102a0, 0x102d0,
     30426        0x102e0, 0x102fb,
     30427        0x10300, 0x10323,
     30428        0x10330, 0x1034a,
     30429        0x10350, 0x1037a,
     30430        0x10380, 0x1039d,
     30431        0x1039f, 0x103c3,
     30432        0x103c8, 0x103d5,
     30433        0x10400, 0x1049d,
     30434        0x104a0, 0x104a9,
     30435        0x104b0, 0x104d3,
     30436        0x104d8, 0x104fb,
     30437        0x10500, 0x10527,
     30438        0x10530, 0x10563,
     30439        0x1056f, 0x1056f,
     30440        0x10600, 0x10736,
     30441        0x10740, 0x10755,
     30442        0x10760, 0x10767,
     30443        0x10800, 0x10805,
     30444        0x10808, 0x10808,
     30445        0x1080a, 0x10835,
     30446        0x10837, 0x10838,
     30447        0x1083c, 0x1083c,
     30448        0x1083f, 0x10855,
     30449        0x10857, 0x1089e,
     30450        0x108a7, 0x108af,
     30451        0x108e0, 0x108f2,
     30452        0x108f4, 0x108f5,
     30453        0x108fb, 0x1091b,
     30454        0x1091f, 0x10939,
     30455        0x1093f, 0x1093f,
     30456        0x10980, 0x109b7,
     30457        0x109bc, 0x109cf,
     30458        0x109d2, 0x10a03,
     30459        0x10a05, 0x10a06,
     30460        0x10a0c, 0x10a13,
     30461        0x10a15, 0x10a17,
     30462        0x10a19, 0x10a33,
     30463        0x10a38, 0x10a3a,
     30464        0x10a3f, 0x10a47,
     30465        0x10a50, 0x10a58,
     30466        0x10a60, 0x10a9f,
     30467        0x10ac0, 0x10ae6,
     30468        0x10aeb, 0x10af6,
     30469        0x10b00, 0x10b35,
     30470        0x10b39, 0x10b55,
     30471        0x10b58, 0x10b72,
     30472        0x10b78, 0x10b91,
     30473        0x10b99, 0x10b9c,
     30474        0x10ba9, 0x10baf,
     30475        0x10c00, 0x10c48,
     30476        0x10c80, 0x10cb2,
     30477        0x10cc0, 0x10cf2,
     30478        0x10cfa, 0x10cff,
     30479        0x10e60, 0x10e7e,
     30480        0x11000, 0x1104d,
     30481        0x11052, 0x1106f,
     30482        0x1107f, 0x110c1,
     30483        0x110d0, 0x110e8,
     30484        0x110f0, 0x110f9,
     30485        0x11100, 0x11134,
     30486        0x11136, 0x11143,
     30487        0x11150, 0x11176,
     30488        0x11180, 0x111cd,
     30489        0x111d0, 0x111df,
     30490        0x111e1, 0x111f4,
     30491        0x11200, 0x11211,
     30492        0x11213, 0x1123e,
     30493        0x11280, 0x11286,
     30494        0x11288, 0x11288,
     30495        0x1128a, 0x1128d,
     30496        0x1128f, 0x1129d,
     30497        0x1129f, 0x112a9,
     30498        0x112b0, 0x112ea,
     30499        0x112f0, 0x112f9,
     30500        0x11300, 0x11303,
     30501        0x11305, 0x1130c,
     30502        0x1130f, 0x11310,
     30503        0x11313, 0x11328,
     30504        0x1132a, 0x11330,
     30505        0x11332, 0x11333,
     30506        0x11335, 0x11339,
     30507        0x1133c, 0x11344,
     30508        0x11347, 0x11348,
     30509        0x1134b, 0x1134d,
     30510        0x11350, 0x11350,
     30511        0x11357, 0x11357,
     30512        0x1135d, 0x11363,
     30513        0x11366, 0x1136c,
     30514        0x11370, 0x11374,
     30515        0x11400, 0x11459,
     30516        0x1145b, 0x1145b,
     30517        0x1145d, 0x1145d,
     30518        0x11480, 0x114c7,
     30519        0x114d0, 0x114d9,
     30520        0x11580, 0x115b5,
     30521        0x115b8, 0x115dd,
     30522        0x11600, 0x11644,
     30523        0x11650, 0x11659,
     30524        0x11660, 0x1166c,
     30525        0x11680, 0x116b7,
     30526        0x116c0, 0x116c9,
     30527        0x11700, 0x11719,
     30528        0x1171d, 0x1172b,
     30529        0x11730, 0x1173f,
     30530        0x118a0, 0x118f2,
     30531        0x118ff, 0x118ff,
     30532        0x11ac0, 0x11af8,
     30533        0x11c00, 0x11c08,
     30534        0x11c0a, 0x11c36,
     30535        0x11c38, 0x11c45,
     30536        0x11c50, 0x11c6c,
     30537        0x11c70, 0x11c8f,
     30538        0x11c92, 0x11ca7,
     30539        0x11ca9, 0x11cb6,
     30540        0x12000, 0x12399,
     30541        0x12400, 0x1246e,
     30542        0x12470, 0x12474,
     30543        0x12480, 0x12543,
     30544        0x13000, 0x1342e,
     30545        0x14400, 0x14646,
     30546        0x16800, 0x16a38,
     30547        0x16a40, 0x16a5e,
     30548        0x16a60, 0x16a69,
     30549        0x16a6e, 0x16a6f,
     30550        0x16ad0, 0x16aed,
     30551        0x16af0, 0x16af5,
     30552        0x16b00, 0x16b45,
     30553        0x16b50, 0x16b59,
     30554        0x16b5b, 0x16b61,
     30555        0x16b63, 0x16b77,
     30556        0x16b7d, 0x16b8f,
     30557        0x16f00, 0x16f44,
     30558        0x16f50, 0x16f7e,
     30559        0x16f8f, 0x16f9f,
     30560        0x16fe0, 0x16fe0,
     30561        0x17000, 0x187ec,
     30562        0x18800, 0x18af2,
     30563        0x1b000, 0x1b001,
     30564        0x1bc00, 0x1bc6a,
     30565        0x1bc70, 0x1bc7c,
     30566        0x1bc80, 0x1bc88,
     30567        0x1bc90, 0x1bc99,
     30568        0x1bc9c, 0x1bca3,
     30569        0x1d000, 0x1d0f5,
     30570        0x1d100, 0x1d126,
     30571        0x1d129, 0x1d1e8,
     30572        0x1d200, 0x1d245,
     30573        0x1d300, 0x1d356,
     30574        0x1d360, 0x1d371,
     30575        0x1d400, 0x1d454,
     30576        0x1d456, 0x1d49c,
     30577        0x1d49e, 0x1d49f,
     30578        0x1d4a2, 0x1d4a2,
     30579        0x1d4a5, 0x1d4a6,
     30580        0x1d4a9, 0x1d4ac,
     30581        0x1d4ae, 0x1d4b9,
     30582        0x1d4bb, 0x1d4bb,
     30583        0x1d4bd, 0x1d4c3,
     30584        0x1d4c5, 0x1d505,
     30585        0x1d507, 0x1d50a,
     30586        0x1d50d, 0x1d514,
     30587        0x1d516, 0x1d51c,
     30588        0x1d51e, 0x1d539,
     30589        0x1d53b, 0x1d53e,
     30590        0x1d540, 0x1d544,
     30591        0x1d546, 0x1d546,
     30592        0x1d54a, 0x1d550,
     30593        0x1d552, 0x1d6a5,
     30594        0x1d6a8, 0x1d7cb,
     30595        0x1d7ce, 0x1da8b,
     30596        0x1da9b, 0x1da9f,
     30597        0x1daa1, 0x1daaf,
     30598        0x1e000, 0x1e006,
     30599        0x1e008, 0x1e018,
     30600        0x1e01b, 0x1e021,
     30601        0x1e023, 0x1e024,
     30602        0x1e026, 0x1e02a,
     30603        0x1e800, 0x1e8c4,
     30604        0x1e8c7, 0x1e8d6,
     30605        0x1e900, 0x1e94a,
     30606        0x1e950, 0x1e959,
     30607        0x1e95e, 0x1e95f,
     30608        0x1ee00, 0x1ee03,
     30609        0x1ee05, 0x1ee1f,
     30610        0x1ee21, 0x1ee22,
     30611        0x1ee24, 0x1ee24,
     30612        0x1ee27, 0x1ee27,
     30613        0x1ee29, 0x1ee32,
     30614        0x1ee34, 0x1ee37,
     30615        0x1ee39, 0x1ee39,
     30616        0x1ee3b, 0x1ee3b,
     30617        0x1ee42, 0x1ee42,
     30618        0x1ee47, 0x1ee47,
     30619        0x1ee49, 0x1ee49,
     30620        0x1ee4b, 0x1ee4b,
     30621        0x1ee4d, 0x1ee4f,
     30622        0x1ee51, 0x1ee52,
     30623        0x1ee54, 0x1ee54,
     30624        0x1ee57, 0x1ee57,
     30625        0x1ee59, 0x1ee59,
     30626        0x1ee5b, 0x1ee5b,
     30627        0x1ee5d, 0x1ee5d,
     30628        0x1ee5f, 0x1ee5f,
     30629        0x1ee61, 0x1ee62,
     30630        0x1ee64, 0x1ee64,
     30631        0x1ee67, 0x1ee6a,
     30632        0x1ee6c, 0x1ee72,
     30633        0x1ee74, 0x1ee77,
     30634        0x1ee79, 0x1ee7c,
     30635        0x1ee7e, 0x1ee7e,
     30636        0x1ee80, 0x1ee89,
     30637        0x1ee8b, 0x1ee9b,
     30638        0x1eea1, 0x1eea3,
     30639        0x1eea5, 0x1eea9,
     30640        0x1eeab, 0x1eebb,
     30641        0x1eef0, 0x1eef1,
     30642        0x1f000, 0x1f02b,
     30643        0x1f030, 0x1f093,
     30644        0x1f0a0, 0x1f0ae,
     30645        0x1f0b1, 0x1f0bf,
     30646        0x1f0c1, 0x1f0cf,
     30647        0x1f0d1, 0x1f0f5,
     30648        0x1f100, 0x1f10c,
     30649        0x1f110, 0x1f12e,
     30650        0x1f130, 0x1f16b,
     30651        0x1f170, 0x1f1ac,
     30652        0x1f1e6, 0x1f202,
     30653        0x1f210, 0x1f23b,
     30654        0x1f240, 0x1f248,
     30655        0x1f250, 0x1f251,
     30656        0x1f300, 0x1f6d2,
     30657        0x1f6e0, 0x1f6ec,
     30658        0x1f6f0, 0x1f6f6,
     30659        0x1f700, 0x1f773,
     30660        0x1f780, 0x1f7d4,
     30661        0x1f800, 0x1f80b,
     30662        0x1f810, 0x1f847,
     30663        0x1f850, 0x1f859,
     30664        0x1f860, 0x1f887,
     30665        0x1f890, 0x1f8ad,
     30666        0x1f910, 0x1f91e,
     30667        0x1f920, 0x1f927,
     30668        0x1f930, 0x1f930,
     30669        0x1f933, 0x1f93e,
     30670        0x1f940, 0x1f94b,
     30671        0x1f950, 0x1f95e,
     30672        0x1f980, 0x1f991,
     30673        0x1f9c0, 0x1f9c0,
     30674        0x1fffe, 0x2a6d6,
     30675        0x2a700, 0x2b734,
     30676        0x2b740, 0x2b81d,
     30677        0x2b820, 0x2cea1,
     30678        0x2f800, 0x2fa1d,
     30679        0x2fffe, 0x2ffff,
     30680        0x3fffe, 0x3ffff,
     30681        0x4fffe, 0x4ffff,
     30682        0x5fffe, 0x5ffff,
     30683        0x6fffe, 0x6ffff,
     30684        0x7fffe, 0x7ffff,
     30685        0x8fffe, 0x8ffff,
     30686        0x9fffe, 0x9ffff,
     30687        0xafffe, 0xaffff,
     30688        0xbfffe, 0xbffff,
     30689        0xcfffe, 0xcffff,
     30690        0xdfffe, 0xdffff,
     30691        0xe0001, 0xe0001,
     30692        0xe0020, 0xe007f,
     30693        0xe0100, 0xe01ef,
     30694        0xefffe, 0x10ffff,
     30695}; /* CR_Age_9_0 */
     30696
     30697/* 'Age_10_0': Derived Age 10.0 */
     30698static const OnigCodePoint CR_Age_10_0[] = {
     30699        659,
     30700        0x0000, 0x0377,
     30701        0x037a, 0x037f,
     30702        0x0384, 0x038a,
     30703        0x038c, 0x038c,
     30704        0x038e, 0x03a1,
     30705        0x03a3, 0x052f,
     30706        0x0531, 0x0556,
     30707        0x0559, 0x055f,
     30708        0x0561, 0x0587,
     30709        0x0589, 0x058a,
     30710        0x058d, 0x058f,
     30711        0x0591, 0x05c7,
     30712        0x05d0, 0x05ea,
     30713        0x05f0, 0x05f4,
     30714        0x0600, 0x061c,
     30715        0x061e, 0x070d,
     30716        0x070f, 0x074a,
     30717        0x074d, 0x07b1,
     30718        0x07c0, 0x07fa,
     30719        0x0800, 0x082d,
     30720        0x0830, 0x083e,
     30721        0x0840, 0x085b,
     30722        0x085e, 0x085e,
     30723        0x0860, 0x086a,
     30724        0x08a0, 0x08b4,
     30725        0x08b6, 0x08bd,
     30726        0x08d4, 0x0983,
     30727        0x0985, 0x098c,
     30728        0x098f, 0x0990,
     30729        0x0993, 0x09a8,
     30730        0x09aa, 0x09b0,
     30731        0x09b2, 0x09b2,
     30732        0x09b6, 0x09b9,
     30733        0x09bc, 0x09c4,
     30734        0x09c7, 0x09c8,
     30735        0x09cb, 0x09ce,
     30736        0x09d7, 0x09d7,
     30737        0x09dc, 0x09dd,
     30738        0x09df, 0x09e3,
     30739        0x09e6, 0x09fd,
     30740        0x0a01, 0x0a03,
     30741        0x0a05, 0x0a0a,
     30742        0x0a0f, 0x0a10,
     30743        0x0a13, 0x0a28,
     30744        0x0a2a, 0x0a30,
     30745        0x0a32, 0x0a33,
     30746        0x0a35, 0x0a36,
     30747        0x0a38, 0x0a39,
     30748        0x0a3c, 0x0a3c,
     30749        0x0a3e, 0x0a42,
     30750        0x0a47, 0x0a48,
     30751        0x0a4b, 0x0a4d,
     30752        0x0a51, 0x0a51,
     30753        0x0a59, 0x0a5c,
     30754        0x0a5e, 0x0a5e,
     30755        0x0a66, 0x0a75,
     30756        0x0a81, 0x0a83,
     30757        0x0a85, 0x0a8d,
     30758        0x0a8f, 0x0a91,
     30759        0x0a93, 0x0aa8,
     30760        0x0aaa, 0x0ab0,
     30761        0x0ab2, 0x0ab3,
     30762        0x0ab5, 0x0ab9,
     30763        0x0abc, 0x0ac5,
     30764        0x0ac7, 0x0ac9,
     30765        0x0acb, 0x0acd,
     30766        0x0ad0, 0x0ad0,
     30767        0x0ae0, 0x0ae3,
     30768        0x0ae6, 0x0af1,
     30769        0x0af9, 0x0aff,
     30770        0x0b01, 0x0b03,
     30771        0x0b05, 0x0b0c,
     30772        0x0b0f, 0x0b10,
     30773        0x0b13, 0x0b28,
     30774        0x0b2a, 0x0b30,
     30775        0x0b32, 0x0b33,
     30776        0x0b35, 0x0b39,
     30777        0x0b3c, 0x0b44,
     30778        0x0b47, 0x0b48,
     30779        0x0b4b, 0x0b4d,
     30780        0x0b56, 0x0b57,
     30781        0x0b5c, 0x0b5d,
     30782        0x0b5f, 0x0b63,
     30783        0x0b66, 0x0b77,
     30784        0x0b82, 0x0b83,
     30785        0x0b85, 0x0b8a,
     30786        0x0b8e, 0x0b90,
     30787        0x0b92, 0x0b95,
     30788        0x0b99, 0x0b9a,
     30789        0x0b9c, 0x0b9c,
     30790        0x0b9e, 0x0b9f,
     30791        0x0ba3, 0x0ba4,
     30792        0x0ba8, 0x0baa,
     30793        0x0bae, 0x0bb9,
     30794        0x0bbe, 0x0bc2,
     30795        0x0bc6, 0x0bc8,
     30796        0x0bca, 0x0bcd,
     30797        0x0bd0, 0x0bd0,
     30798        0x0bd7, 0x0bd7,
     30799        0x0be6, 0x0bfa,
     30800        0x0c00, 0x0c03,
     30801        0x0c05, 0x0c0c,
     30802        0x0c0e, 0x0c10,
     30803        0x0c12, 0x0c28,
     30804        0x0c2a, 0x0c39,
     30805        0x0c3d, 0x0c44,
     30806        0x0c46, 0x0c48,
     30807        0x0c4a, 0x0c4d,
     30808        0x0c55, 0x0c56,
     30809        0x0c58, 0x0c5a,
     30810        0x0c60, 0x0c63,
     30811        0x0c66, 0x0c6f,
     30812        0x0c78, 0x0c83,
     30813        0x0c85, 0x0c8c,
     30814        0x0c8e, 0x0c90,
     30815        0x0c92, 0x0ca8,
     30816        0x0caa, 0x0cb3,
     30817        0x0cb5, 0x0cb9,
     30818        0x0cbc, 0x0cc4,
     30819        0x0cc6, 0x0cc8,
     30820        0x0cca, 0x0ccd,
     30821        0x0cd5, 0x0cd6,
     30822        0x0cde, 0x0cde,
     30823        0x0ce0, 0x0ce3,
     30824        0x0ce6, 0x0cef,
     30825        0x0cf1, 0x0cf2,
     30826        0x0d00, 0x0d03,
     30827        0x0d05, 0x0d0c,
     30828        0x0d0e, 0x0d10,
     30829        0x0d12, 0x0d44,
     30830        0x0d46, 0x0d48,
     30831        0x0d4a, 0x0d4f,
     30832        0x0d54, 0x0d63,
     30833        0x0d66, 0x0d7f,
     30834        0x0d82, 0x0d83,
     30835        0x0d85, 0x0d96,
     30836        0x0d9a, 0x0db1,
     30837        0x0db3, 0x0dbb,
     30838        0x0dbd, 0x0dbd,
     30839        0x0dc0, 0x0dc6,
     30840        0x0dca, 0x0dca,
     30841        0x0dcf, 0x0dd4,
     30842        0x0dd6, 0x0dd6,
     30843        0x0dd8, 0x0ddf,
     30844        0x0de6, 0x0def,
     30845        0x0df2, 0x0df4,
     30846        0x0e01, 0x0e3a,
     30847        0x0e3f, 0x0e5b,
     30848        0x0e81, 0x0e82,
     30849        0x0e84, 0x0e84,
     30850        0x0e87, 0x0e88,
     30851        0x0e8a, 0x0e8a,
     30852        0x0e8d, 0x0e8d,
     30853        0x0e94, 0x0e97,
     30854        0x0e99, 0x0e9f,
     30855        0x0ea1, 0x0ea3,
     30856        0x0ea5, 0x0ea5,
     30857        0x0ea7, 0x0ea7,
     30858        0x0eaa, 0x0eab,
     30859        0x0ead, 0x0eb9,
     30860        0x0ebb, 0x0ebd,
     30861        0x0ec0, 0x0ec4,
     30862        0x0ec6, 0x0ec6,
     30863        0x0ec8, 0x0ecd,
     30864        0x0ed0, 0x0ed9,
     30865        0x0edc, 0x0edf,
     30866        0x0f00, 0x0f47,
     30867        0x0f49, 0x0f6c,
     30868        0x0f71, 0x0f97,
     30869        0x0f99, 0x0fbc,
     30870        0x0fbe, 0x0fcc,
     30871        0x0fce, 0x0fda,
     30872        0x1000, 0x10c5,
     30873        0x10c7, 0x10c7,
     30874        0x10cd, 0x10cd,
     30875        0x10d0, 0x1248,
     30876        0x124a, 0x124d,
     30877        0x1250, 0x1256,
     30878        0x1258, 0x1258,
     30879        0x125a, 0x125d,
     30880        0x1260, 0x1288,
     30881        0x128a, 0x128d,
     30882        0x1290, 0x12b0,
     30883        0x12b2, 0x12b5,
     30884        0x12b8, 0x12be,
     30885        0x12c0, 0x12c0,
     30886        0x12c2, 0x12c5,
     30887        0x12c8, 0x12d6,
     30888        0x12d8, 0x1310,
     30889        0x1312, 0x1315,
     30890        0x1318, 0x135a,
     30891        0x135d, 0x137c,
     30892        0x1380, 0x1399,
     30893        0x13a0, 0x13f5,
     30894        0x13f8, 0x13fd,
     30895        0x1400, 0x169c,
     30896        0x16a0, 0x16f8,
     30897        0x1700, 0x170c,
     30898        0x170e, 0x1714,
     30899        0x1720, 0x1736,
     30900        0x1740, 0x1753,
     30901        0x1760, 0x176c,
     30902        0x176e, 0x1770,
     30903        0x1772, 0x1773,
     30904        0x1780, 0x17dd,
     30905        0x17e0, 0x17e9,
     30906        0x17f0, 0x17f9,
     30907        0x1800, 0x180e,
     30908        0x1810, 0x1819,
     30909        0x1820, 0x1877,
     30910        0x1880, 0x18aa,
     30911        0x18b0, 0x18f5,
     30912        0x1900, 0x191e,
     30913        0x1920, 0x192b,
     30914        0x1930, 0x193b,
     30915        0x1940, 0x1940,
     30916        0x1944, 0x196d,
     30917        0x1970, 0x1974,
     30918        0x1980, 0x19ab,
     30919        0x19b0, 0x19c9,
     30920        0x19d0, 0x19da,
     30921        0x19de, 0x1a1b,
     30922        0x1a1e, 0x1a5e,
     30923        0x1a60, 0x1a7c,
     30924        0x1a7f, 0x1a89,
     30925        0x1a90, 0x1a99,
     30926        0x1aa0, 0x1aad,
     30927        0x1ab0, 0x1abe,
     30928        0x1b00, 0x1b4b,
     30929        0x1b50, 0x1b7c,
     30930        0x1b80, 0x1bf3,
     30931        0x1bfc, 0x1c37,
     30932        0x1c3b, 0x1c49,
     30933        0x1c4d, 0x1c88,
     30934        0x1cc0, 0x1cc7,
     30935        0x1cd0, 0x1cf9,
     30936        0x1d00, 0x1df9,
     30937        0x1dfb, 0x1f15,
     30938        0x1f18, 0x1f1d,
     30939        0x1f20, 0x1f45,
     30940        0x1f48, 0x1f4d,
     30941        0x1f50, 0x1f57,
     30942        0x1f59, 0x1f59,
     30943        0x1f5b, 0x1f5b,
     30944        0x1f5d, 0x1f5d,
     30945        0x1f5f, 0x1f7d,
     30946        0x1f80, 0x1fb4,
     30947        0x1fb6, 0x1fc4,
     30948        0x1fc6, 0x1fd3,
     30949        0x1fd6, 0x1fdb,
     30950        0x1fdd, 0x1fef,
     30951        0x1ff2, 0x1ff4,
     30952        0x1ff6, 0x1ffe,
     30953        0x2000, 0x2064,
     30954        0x2066, 0x2071,
     30955        0x2074, 0x208e,
     30956        0x2090, 0x209c,
     30957        0x20a0, 0x20bf,
     30958        0x20d0, 0x20f0,
     30959        0x2100, 0x218b,
     30960        0x2190, 0x2426,
     30961        0x2440, 0x244a,
     30962        0x2460, 0x2b73,
     30963        0x2b76, 0x2b95,
     30964        0x2b98, 0x2bb9,
     30965        0x2bbd, 0x2bc8,
     30966        0x2bca, 0x2bd2,
     30967        0x2bec, 0x2bef,
     30968        0x2c00, 0x2c2e,
     30969        0x2c30, 0x2c5e,
     30970        0x2c60, 0x2cf3,
     30971        0x2cf9, 0x2d25,
     30972        0x2d27, 0x2d27,
     30973        0x2d2d, 0x2d2d,
     30974        0x2d30, 0x2d67,
     30975        0x2d6f, 0x2d70,
     30976        0x2d7f, 0x2d96,
     30977        0x2da0, 0x2da6,
     30978        0x2da8, 0x2dae,
     30979        0x2db0, 0x2db6,
     30980        0x2db8, 0x2dbe,
     30981        0x2dc0, 0x2dc6,
     30982        0x2dc8, 0x2dce,
     30983        0x2dd0, 0x2dd6,
     30984        0x2dd8, 0x2dde,
     30985        0x2de0, 0x2e49,
     30986        0x2e80, 0x2e99,
     30987        0x2e9b, 0x2ef3,
     30988        0x2f00, 0x2fd5,
     30989        0x2ff0, 0x2ffb,
     30990        0x3000, 0x303f,
     30991        0x3041, 0x3096,
     30992        0x3099, 0x30ff,
     30993        0x3105, 0x312e,
     30994        0x3131, 0x318e,
     30995        0x3190, 0x31ba,
     30996        0x31c0, 0x31e3,
     30997        0x31f0, 0x321e,
     30998        0x3220, 0x32fe,
     30999        0x3300, 0x4db5,
     31000        0x4dc0, 0x9fea,
     31001        0xa000, 0xa48c,
     31002        0xa490, 0xa4c6,
     31003        0xa4d0, 0xa62b,
     31004        0xa640, 0xa6f7,
     31005        0xa700, 0xa7ae,
     31006        0xa7b0, 0xa7b7,
     31007        0xa7f7, 0xa82b,
     31008        0xa830, 0xa839,
     31009        0xa840, 0xa877,
     31010        0xa880, 0xa8c5,
     31011        0xa8ce, 0xa8d9,
     31012        0xa8e0, 0xa8fd,
     31013        0xa900, 0xa953,
     31014        0xa95f, 0xa97c,
     31015        0xa980, 0xa9cd,
     31016        0xa9cf, 0xa9d9,
     31017        0xa9de, 0xa9fe,
     31018        0xaa00, 0xaa36,
     31019        0xaa40, 0xaa4d,
     31020        0xaa50, 0xaa59,
     31021        0xaa5c, 0xaac2,
     31022        0xaadb, 0xaaf6,
     31023        0xab01, 0xab06,
     31024        0xab09, 0xab0e,
     31025        0xab11, 0xab16,
     31026        0xab20, 0xab26,
     31027        0xab28, 0xab2e,
     31028        0xab30, 0xab65,
     31029        0xab70, 0xabed,
     31030        0xabf0, 0xabf9,
     31031        0xac00, 0xd7a3,
     31032        0xd7b0, 0xd7c6,
     31033        0xd7cb, 0xd7fb,
     31034        0xd800, 0xfa6d,
     31035        0xfa70, 0xfad9,
     31036        0xfb00, 0xfb06,
     31037        0xfb13, 0xfb17,
     31038        0xfb1d, 0xfb36,
     31039        0xfb38, 0xfb3c,
     31040        0xfb3e, 0xfb3e,
     31041        0xfb40, 0xfb41,
     31042        0xfb43, 0xfb44,
     31043        0xfb46, 0xfbc1,
     31044        0xfbd3, 0xfd3f,
     31045        0xfd50, 0xfd8f,
     31046        0xfd92, 0xfdc7,
     31047        0xfdd0, 0xfdfd,
     31048        0xfe00, 0xfe19,
     31049        0xfe20, 0xfe52,
     31050        0xfe54, 0xfe66,
     31051        0xfe68, 0xfe6b,
     31052        0xfe70, 0xfe74,
     31053        0xfe76, 0xfefc,
     31054        0xfeff, 0xfeff,
     31055        0xff01, 0xffbe,
     31056        0xffc2, 0xffc7,
     31057        0xffca, 0xffcf,
     31058        0xffd2, 0xffd7,
     31059        0xffda, 0xffdc,
     31060        0xffe0, 0xffe6,
     31061        0xffe8, 0xffee,
     31062        0xfff9, 0x1000b,
     31063        0x1000d, 0x10026,
     31064        0x10028, 0x1003a,
     31065        0x1003c, 0x1003d,
     31066        0x1003f, 0x1004d,
     31067        0x10050, 0x1005d,
     31068        0x10080, 0x100fa,
     31069        0x10100, 0x10102,
     31070        0x10107, 0x10133,
     31071        0x10137, 0x1018e,
     31072        0x10190, 0x1019b,
     31073        0x101a0, 0x101a0,
     31074        0x101d0, 0x101fd,
     31075        0x10280, 0x1029c,
     31076        0x102a0, 0x102d0,
     31077        0x102e0, 0x102fb,
     31078        0x10300, 0x10323,
     31079        0x1032d, 0x1034a,
     31080        0x10350, 0x1037a,
     31081        0x10380, 0x1039d,
     31082        0x1039f, 0x103c3,
     31083        0x103c8, 0x103d5,
     31084        0x10400, 0x1049d,
     31085        0x104a0, 0x104a9,
     31086        0x104b0, 0x104d3,
     31087        0x104d8, 0x104fb,
     31088        0x10500, 0x10527,
     31089        0x10530, 0x10563,
     31090        0x1056f, 0x1056f,
     31091        0x10600, 0x10736,
     31092        0x10740, 0x10755,
     31093        0x10760, 0x10767,
     31094        0x10800, 0x10805,
     31095        0x10808, 0x10808,
     31096        0x1080a, 0x10835,
     31097        0x10837, 0x10838,
     31098        0x1083c, 0x1083c,
     31099        0x1083f, 0x10855,
     31100        0x10857, 0x1089e,
     31101        0x108a7, 0x108af,
     31102        0x108e0, 0x108f2,
     31103        0x108f4, 0x108f5,
     31104        0x108fb, 0x1091b,
     31105        0x1091f, 0x10939,
     31106        0x1093f, 0x1093f,
     31107        0x10980, 0x109b7,
     31108        0x109bc, 0x109cf,
     31109        0x109d2, 0x10a03,
     31110        0x10a05, 0x10a06,
     31111        0x10a0c, 0x10a13,
     31112        0x10a15, 0x10a17,
     31113        0x10a19, 0x10a33,
     31114        0x10a38, 0x10a3a,
     31115        0x10a3f, 0x10a47,
     31116        0x10a50, 0x10a58,
     31117        0x10a60, 0x10a9f,
     31118        0x10ac0, 0x10ae6,
     31119        0x10aeb, 0x10af6,
     31120        0x10b00, 0x10b35,
     31121        0x10b39, 0x10b55,
     31122        0x10b58, 0x10b72,
     31123        0x10b78, 0x10b91,
     31124        0x10b99, 0x10b9c,
     31125        0x10ba9, 0x10baf,
     31126        0x10c00, 0x10c48,
     31127        0x10c80, 0x10cb2,
     31128        0x10cc0, 0x10cf2,
     31129        0x10cfa, 0x10cff,
     31130        0x10e60, 0x10e7e,
     31131        0x11000, 0x1104d,
     31132        0x11052, 0x1106f,
     31133        0x1107f, 0x110c1,
     31134        0x110d0, 0x110e8,
     31135        0x110f0, 0x110f9,
     31136        0x11100, 0x11134,
     31137        0x11136, 0x11143,
     31138        0x11150, 0x11176,
     31139        0x11180, 0x111cd,
     31140        0x111d0, 0x111df,
     31141        0x111e1, 0x111f4,
     31142        0x11200, 0x11211,
     31143        0x11213, 0x1123e,
     31144        0x11280, 0x11286,
     31145        0x11288, 0x11288,
     31146        0x1128a, 0x1128d,
     31147        0x1128f, 0x1129d,
     31148        0x1129f, 0x112a9,
     31149        0x112b0, 0x112ea,
     31150        0x112f0, 0x112f9,
     31151        0x11300, 0x11303,
     31152        0x11305, 0x1130c,
     31153        0x1130f, 0x11310,
     31154        0x11313, 0x11328,
     31155        0x1132a, 0x11330,
     31156        0x11332, 0x11333,
     31157        0x11335, 0x11339,
     31158        0x1133c, 0x11344,
     31159        0x11347, 0x11348,
     31160        0x1134b, 0x1134d,
     31161        0x11350, 0x11350,
     31162        0x11357, 0x11357,
     31163        0x1135d, 0x11363,
     31164        0x11366, 0x1136c,
     31165        0x11370, 0x11374,
     31166        0x11400, 0x11459,
     31167        0x1145b, 0x1145b,
     31168        0x1145d, 0x1145d,
     31169        0x11480, 0x114c7,
     31170        0x114d0, 0x114d9,
     31171        0x11580, 0x115b5,
     31172        0x115b8, 0x115dd,
     31173        0x11600, 0x11644,
     31174        0x11650, 0x11659,
     31175        0x11660, 0x1166c,
     31176        0x11680, 0x116b7,
     31177        0x116c0, 0x116c9,
     31178        0x11700, 0x11719,
     31179        0x1171d, 0x1172b,
     31180        0x11730, 0x1173f,
     31181        0x118a0, 0x118f2,
     31182        0x118ff, 0x118ff,
     31183        0x11a00, 0x11a47,
     31184        0x11a50, 0x11a83,
     31185        0x11a86, 0x11a9c,
     31186        0x11a9e, 0x11aa2,
     31187        0x11ac0, 0x11af8,
     31188        0x11c00, 0x11c08,
     31189        0x11c0a, 0x11c36,
     31190        0x11c38, 0x11c45,
     31191        0x11c50, 0x11c6c,
     31192        0x11c70, 0x11c8f,
     31193        0x11c92, 0x11ca7,
     31194        0x11ca9, 0x11cb6,
     31195        0x11d00, 0x11d06,
     31196        0x11d08, 0x11d09,
     31197        0x11d0b, 0x11d36,
     31198        0x11d3a, 0x11d3a,
     31199        0x11d3c, 0x11d3d,
     31200        0x11d3f, 0x11d47,
     31201        0x11d50, 0x11d59,
     31202        0x12000, 0x12399,
     31203        0x12400, 0x1246e,
     31204        0x12470, 0x12474,
     31205        0x12480, 0x12543,
     31206        0x13000, 0x1342e,
     31207        0x14400, 0x14646,
     31208        0x16800, 0x16a38,
     31209        0x16a40, 0x16a5e,
     31210        0x16a60, 0x16a69,
     31211        0x16a6e, 0x16a6f,
     31212        0x16ad0, 0x16aed,
     31213        0x16af0, 0x16af5,
     31214        0x16b00, 0x16b45,
     31215        0x16b50, 0x16b59,
     31216        0x16b5b, 0x16b61,
     31217        0x16b63, 0x16b77,
     31218        0x16b7d, 0x16b8f,
     31219        0x16f00, 0x16f44,
     31220        0x16f50, 0x16f7e,
     31221        0x16f8f, 0x16f9f,
     31222        0x16fe0, 0x16fe1,
     31223        0x17000, 0x187ec,
     31224        0x18800, 0x18af2,
     31225        0x1b000, 0x1b11e,
     31226        0x1b170, 0x1b2fb,
     31227        0x1bc00, 0x1bc6a,
     31228        0x1bc70, 0x1bc7c,
     31229        0x1bc80, 0x1bc88,
     31230        0x1bc90, 0x1bc99,
     31231        0x1bc9c, 0x1bca3,
     31232        0x1d000, 0x1d0f5,
     31233        0x1d100, 0x1d126,
     31234        0x1d129, 0x1d1e8,
     31235        0x1d200, 0x1d245,
     31236        0x1d300, 0x1d356,
     31237        0x1d360, 0x1d371,
     31238        0x1d400, 0x1d454,
     31239        0x1d456, 0x1d49c,
     31240        0x1d49e, 0x1d49f,
     31241        0x1d4a2, 0x1d4a2,
     31242        0x1d4a5, 0x1d4a6,
     31243        0x1d4a9, 0x1d4ac,
     31244        0x1d4ae, 0x1d4b9,
     31245        0x1d4bb, 0x1d4bb,
     31246        0x1d4bd, 0x1d4c3,
     31247        0x1d4c5, 0x1d505,
     31248        0x1d507, 0x1d50a,
     31249        0x1d50d, 0x1d514,
     31250        0x1d516, 0x1d51c,
     31251        0x1d51e, 0x1d539,
     31252        0x1d53b, 0x1d53e,
     31253        0x1d540, 0x1d544,
     31254        0x1d546, 0x1d546,
     31255        0x1d54a, 0x1d550,
     31256        0x1d552, 0x1d6a5,
     31257        0x1d6a8, 0x1d7cb,
     31258        0x1d7ce, 0x1da8b,
     31259        0x1da9b, 0x1da9f,
     31260        0x1daa1, 0x1daaf,
     31261        0x1e000, 0x1e006,
     31262        0x1e008, 0x1e018,
     31263        0x1e01b, 0x1e021,
     31264        0x1e023, 0x1e024,
     31265        0x1e026, 0x1e02a,
     31266        0x1e800, 0x1e8c4,
     31267        0x1e8c7, 0x1e8d6,
     31268        0x1e900, 0x1e94a,
     31269        0x1e950, 0x1e959,
     31270        0x1e95e, 0x1e95f,
     31271        0x1ee00, 0x1ee03,
     31272        0x1ee05, 0x1ee1f,
     31273        0x1ee21, 0x1ee22,
     31274        0x1ee24, 0x1ee24,
     31275        0x1ee27, 0x1ee27,
     31276        0x1ee29, 0x1ee32,
     31277        0x1ee34, 0x1ee37,
     31278        0x1ee39, 0x1ee39,
     31279        0x1ee3b, 0x1ee3b,
     31280        0x1ee42, 0x1ee42,
     31281        0x1ee47, 0x1ee47,
     31282        0x1ee49, 0x1ee49,
     31283        0x1ee4b, 0x1ee4b,
     31284        0x1ee4d, 0x1ee4f,
     31285        0x1ee51, 0x1ee52,
     31286        0x1ee54, 0x1ee54,
     31287        0x1ee57, 0x1ee57,
     31288        0x1ee59, 0x1ee59,
     31289        0x1ee5b, 0x1ee5b,
     31290        0x1ee5d, 0x1ee5d,
     31291        0x1ee5f, 0x1ee5f,
     31292        0x1ee61, 0x1ee62,
     31293        0x1ee64, 0x1ee64,
     31294        0x1ee67, 0x1ee6a,
     31295        0x1ee6c, 0x1ee72,
     31296        0x1ee74, 0x1ee77,
     31297        0x1ee79, 0x1ee7c,
     31298        0x1ee7e, 0x1ee7e,
     31299        0x1ee80, 0x1ee89,
     31300        0x1ee8b, 0x1ee9b,
     31301        0x1eea1, 0x1eea3,
     31302        0x1eea5, 0x1eea9,
     31303        0x1eeab, 0x1eebb,
     31304        0x1eef0, 0x1eef1,
     31305        0x1f000, 0x1f02b,
     31306        0x1f030, 0x1f093,
     31307        0x1f0a0, 0x1f0ae,
     31308        0x1f0b1, 0x1f0bf,
     31309        0x1f0c1, 0x1f0cf,
     31310        0x1f0d1, 0x1f0f5,
     31311        0x1f100, 0x1f10c,
     31312        0x1f110, 0x1f12e,
     31313        0x1f130, 0x1f16b,
     31314        0x1f170, 0x1f1ac,
     31315        0x1f1e6, 0x1f202,
     31316        0x1f210, 0x1f23b,
     31317        0x1f240, 0x1f248,
     31318        0x1f250, 0x1f251,
     31319        0x1f260, 0x1f265,
     31320        0x1f300, 0x1f6d4,
     31321        0x1f6e0, 0x1f6ec,
     31322        0x1f6f0, 0x1f6f8,
     31323        0x1f700, 0x1f773,
     31324        0x1f780, 0x1f7d4,
     31325        0x1f800, 0x1f80b,
     31326        0x1f810, 0x1f847,
     31327        0x1f850, 0x1f859,
     31328        0x1f860, 0x1f887,
     31329        0x1f890, 0x1f8ad,
     31330        0x1f900, 0x1f90b,
     31331        0x1f910, 0x1f93e,
     31332        0x1f940, 0x1f94c,
     31333        0x1f950, 0x1f96b,
     31334        0x1f980, 0x1f997,
     31335        0x1f9c0, 0x1f9c0,
     31336        0x1f9d0, 0x1f9e6,
     31337        0x1fffe, 0x2a6d6,
     31338        0x2a700, 0x2b734,
     31339        0x2b740, 0x2b81d,
     31340        0x2b820, 0x2cea1,
     31341        0x2ceb0, 0x2ebe0,
     31342        0x2f800, 0x2fa1d,
     31343        0x2fffe, 0x2ffff,
     31344        0x3fffe, 0x3ffff,
     31345        0x4fffe, 0x4ffff,
     31346        0x5fffe, 0x5ffff,
     31347        0x6fffe, 0x6ffff,
     31348        0x7fffe, 0x7ffff,
     31349        0x8fffe, 0x8ffff,
     31350        0x9fffe, 0x9ffff,
     31351        0xafffe, 0xaffff,
     31352        0xbfffe, 0xbffff,
     31353        0xcfffe, 0xcffff,
     31354        0xdfffe, 0xdffff,
     31355        0xe0001, 0xe0001,
     31356        0xe0020, 0xe007f,
     31357        0xe0100, 0xe01ef,
     31358        0xefffe, 0x10ffff,
     31359}; /* CR_Age_10_0 */
     31360
    2752031361#endif /* USE_UNICODE_AGE_PROPERTIES */
     31362/* 'Grapheme_Cluster_Break_Prepend': Grapheme_Cluster_Break=Prepend */
     31363static const OnigCodePoint CR_Grapheme_Cluster_Break_Prepend[] = {
     31364        10,
     31365        0x0600, 0x0605,
     31366        0x06dd, 0x06dd,
     31367        0x070f, 0x070f,
     31368        0x08e2, 0x08e2,
     31369        0x0d4e, 0x0d4e,
     31370        0x110bd, 0x110bd,
     31371        0x111c2, 0x111c3,
     31372        0x11a3a, 0x11a3a,
     31373        0x11a86, 0x11a89,
     31374        0x11d46, 0x11d46,
     31375}; /* CR_Grapheme_Cluster_Break_Prepend */
     31376
     31377/* 'Grapheme_Cluster_Break_CR': Grapheme_Cluster_Break=CR */
     31378static const OnigCodePoint CR_Grapheme_Cluster_Break_CR[] = {
     31379        1,
     31380        0x000d, 0x000d,
     31381}; /* CR_Grapheme_Cluster_Break_CR */
     31382
     31383/* 'Grapheme_Cluster_Break_LF': Grapheme_Cluster_Break=LF */
     31384#define CR_Grapheme_Cluster_Break_LF CR_NEWLINE
     31385
     31386/* 'Grapheme_Cluster_Break_Control': Grapheme_Cluster_Break=Control */
     31387static const OnigCodePoint CR_Grapheme_Cluster_Break_Control[] = {
     31388        19,
     31389        0x0000, 0x0009,
     31390        0x000b, 0x000c,
     31391        0x000e, 0x001f,
     31392        0x007f, 0x009f,
     31393        0x00ad, 0x00ad,
     31394        0x061c, 0x061c,
     31395        0x180e, 0x180e,
     31396        0x200b, 0x200b,
     31397        0x200e, 0x200f,
     31398        0x2028, 0x202e,
     31399        0x2060, 0x206f,
     31400        0xd800, 0xdfff,
     31401        0xfeff, 0xfeff,
     31402        0xfff0, 0xfffb,
     31403        0x1bca0, 0x1bca3,
     31404        0x1d173, 0x1d17a,
     31405        0xe0000, 0xe001f,
     31406        0xe0080, 0xe00ff,
     31407        0xe01f0, 0xe0fff,
     31408}; /* CR_Grapheme_Cluster_Break_Control */
     31409
     31410/* 'Grapheme_Cluster_Break_Extend': Grapheme_Cluster_Break=Extend */
     31411#define CR_Grapheme_Cluster_Break_Extend CR_Grapheme_Extend
     31412
     31413/* 'Grapheme_Cluster_Break_Regional_Indicator': Grapheme_Cluster_Break=Regional_Indicator */
     31414#define CR_Grapheme_Cluster_Break_Regional_Indicator CR_Regional_Indicator
     31415
     31416/* 'Grapheme_Cluster_Break_SpacingMark': Grapheme_Cluster_Break=SpacingMark */
     31417static const OnigCodePoint CR_Grapheme_Cluster_Break_SpacingMark[] = {
     31418        145,
     31419        0x0903, 0x0903,
     31420        0x093b, 0x093b,
     31421        0x093e, 0x0940,
     31422        0x0949, 0x094c,
     31423        0x094e, 0x094f,
     31424        0x0982, 0x0983,
     31425        0x09bf, 0x09c0,
     31426        0x09c7, 0x09c8,
     31427        0x09cb, 0x09cc,
     31428        0x0a03, 0x0a03,
     31429        0x0a3e, 0x0a40,
     31430        0x0a83, 0x0a83,
     31431        0x0abe, 0x0ac0,
     31432        0x0ac9, 0x0ac9,
     31433        0x0acb, 0x0acc,
     31434        0x0b02, 0x0b03,
     31435        0x0b40, 0x0b40,
     31436        0x0b47, 0x0b48,
     31437        0x0b4b, 0x0b4c,
     31438        0x0bbf, 0x0bbf,
     31439        0x0bc1, 0x0bc2,
     31440        0x0bc6, 0x0bc8,
     31441        0x0bca, 0x0bcc,
     31442        0x0c01, 0x0c03,
     31443        0x0c41, 0x0c44,
     31444        0x0c82, 0x0c83,
     31445        0x0cbe, 0x0cbe,
     31446        0x0cc0, 0x0cc1,
     31447        0x0cc3, 0x0cc4,
     31448        0x0cc7, 0x0cc8,
     31449        0x0cca, 0x0ccb,
     31450        0x0d02, 0x0d03,
     31451        0x0d3f, 0x0d40,
     31452        0x0d46, 0x0d48,
     31453        0x0d4a, 0x0d4c,
     31454        0x0d82, 0x0d83,
     31455        0x0dd0, 0x0dd1,
     31456        0x0dd8, 0x0dde,
     31457        0x0df2, 0x0df3,
     31458        0x0e33, 0x0e33,
     31459        0x0eb3, 0x0eb3,
     31460        0x0f3e, 0x0f3f,
     31461        0x0f7f, 0x0f7f,
     31462        0x1031, 0x1031,
     31463        0x103b, 0x103c,
     31464        0x1056, 0x1057,
     31465        0x1084, 0x1084,
     31466        0x17b6, 0x17b6,
     31467        0x17be, 0x17c5,
     31468        0x17c7, 0x17c8,
     31469        0x1923, 0x1926,
     31470        0x1929, 0x192b,
     31471        0x1930, 0x1931,
     31472        0x1933, 0x1938,
     31473        0x1a19, 0x1a1a,
     31474        0x1a55, 0x1a55,
     31475        0x1a57, 0x1a57,
     31476        0x1a6d, 0x1a72,
     31477        0x1b04, 0x1b04,
     31478        0x1b35, 0x1b35,
     31479        0x1b3b, 0x1b3b,
     31480        0x1b3d, 0x1b41,
     31481        0x1b43, 0x1b44,
     31482        0x1b82, 0x1b82,
     31483        0x1ba1, 0x1ba1,
     31484        0x1ba6, 0x1ba7,
     31485        0x1baa, 0x1baa,
     31486        0x1be7, 0x1be7,
     31487        0x1bea, 0x1bec,
     31488        0x1bee, 0x1bee,
     31489        0x1bf2, 0x1bf3,
     31490        0x1c24, 0x1c2b,
     31491        0x1c34, 0x1c35,
     31492        0x1ce1, 0x1ce1,
     31493        0x1cf2, 0x1cf3,
     31494        0x1cf7, 0x1cf7,
     31495        0xa823, 0xa824,
     31496        0xa827, 0xa827,
     31497        0xa880, 0xa881,
     31498        0xa8b4, 0xa8c3,
     31499        0xa952, 0xa953,
     31500        0xa983, 0xa983,
     31501        0xa9b4, 0xa9b5,
     31502        0xa9ba, 0xa9bb,
     31503        0xa9bd, 0xa9c0,
     31504        0xaa2f, 0xaa30,
     31505        0xaa33, 0xaa34,
     31506        0xaa4d, 0xaa4d,
     31507        0xaaeb, 0xaaeb,
     31508        0xaaee, 0xaaef,
     31509        0xaaf5, 0xaaf5,
     31510        0xabe3, 0xabe4,
     31511        0xabe6, 0xabe7,
     31512        0xabe9, 0xabea,
     31513        0xabec, 0xabec,
     31514        0x11000, 0x11000,
     31515        0x11002, 0x11002,
     31516        0x11082, 0x11082,
     31517        0x110b0, 0x110b2,
     31518        0x110b7, 0x110b8,
     31519        0x1112c, 0x1112c,
     31520        0x11182, 0x11182,
     31521        0x111b3, 0x111b5,
     31522        0x111bf, 0x111c0,
     31523        0x1122c, 0x1122e,
     31524        0x11232, 0x11233,
     31525        0x11235, 0x11235,
     31526        0x112e0, 0x112e2,
     31527        0x11302, 0x11303,
     31528        0x1133f, 0x1133f,
     31529        0x11341, 0x11344,
     31530        0x11347, 0x11348,
     31531        0x1134b, 0x1134d,
     31532        0x11362, 0x11363,
     31533        0x11435, 0x11437,
     31534        0x11440, 0x11441,
     31535        0x11445, 0x11445,
     31536        0x114b1, 0x114b2,
     31537        0x114b9, 0x114b9,
     31538        0x114bb, 0x114bc,
     31539        0x114be, 0x114be,
     31540        0x114c1, 0x114c1,
     31541        0x115b0, 0x115b1,
     31542        0x115b8, 0x115bb,
     31543        0x115be, 0x115be,
     31544        0x11630, 0x11632,
     31545        0x1163b, 0x1163c,
     31546        0x1163e, 0x1163e,
     31547        0x116ac, 0x116ac,
     31548        0x116ae, 0x116af,
     31549        0x116b6, 0x116b6,
     31550        0x11720, 0x11721,
     31551        0x11726, 0x11726,
     31552        0x11a07, 0x11a08,
     31553        0x11a39, 0x11a39,
     31554        0x11a57, 0x11a58,
     31555        0x11a97, 0x11a97,
     31556        0x11c2f, 0x11c2f,
     31557        0x11c3e, 0x11c3e,
     31558        0x11ca9, 0x11ca9,
     31559        0x11cb1, 0x11cb1,
     31560        0x11cb4, 0x11cb4,
     31561        0x16f51, 0x16f7e,
     31562        0x1d166, 0x1d166,
     31563        0x1d16d, 0x1d16d,
     31564}; /* CR_Grapheme_Cluster_Break_SpacingMark */
     31565
     31566/* 'Grapheme_Cluster_Break_L': Grapheme_Cluster_Break=L */
     31567static const OnigCodePoint CR_Grapheme_Cluster_Break_L[] = {
     31568        2,
     31569        0x1100, 0x115f,
     31570        0xa960, 0xa97c,
     31571}; /* CR_Grapheme_Cluster_Break_L */
     31572
     31573/* 'Grapheme_Cluster_Break_V': Grapheme_Cluster_Break=V */
     31574static const OnigCodePoint CR_Grapheme_Cluster_Break_V[] = {
     31575        2,
     31576        0x1160, 0x11a7,
     31577        0xd7b0, 0xd7c6,
     31578}; /* CR_Grapheme_Cluster_Break_V */
     31579
     31580/* 'Grapheme_Cluster_Break_T': Grapheme_Cluster_Break=T */
     31581static const OnigCodePoint CR_Grapheme_Cluster_Break_T[] = {
     31582        2,
     31583        0x11a8, 0x11ff,
     31584        0xd7cb, 0xd7fb,
     31585}; /* CR_Grapheme_Cluster_Break_T */
     31586
     31587/* 'Grapheme_Cluster_Break_LV': Grapheme_Cluster_Break=LV */
     31588static const OnigCodePoint CR_Grapheme_Cluster_Break_LV[] = {
     31589        399,
     31590        0xac00, 0xac00,
     31591        0xac1c, 0xac1c,
     31592        0xac38, 0xac38,
     31593        0xac54, 0xac54,
     31594        0xac70, 0xac70,
     31595        0xac8c, 0xac8c,
     31596        0xaca8, 0xaca8,
     31597        0xacc4, 0xacc4,
     31598        0xace0, 0xace0,
     31599        0xacfc, 0xacfc,
     31600        0xad18, 0xad18,
     31601        0xad34, 0xad34,
     31602        0xad50, 0xad50,
     31603        0xad6c, 0xad6c,
     31604        0xad88, 0xad88,
     31605        0xada4, 0xada4,
     31606        0xadc0, 0xadc0,
     31607        0xaddc, 0xaddc,
     31608        0xadf8, 0xadf8,
     31609        0xae14, 0xae14,
     31610        0xae30, 0xae30,
     31611        0xae4c, 0xae4c,
     31612        0xae68, 0xae68,
     31613        0xae84, 0xae84,
     31614        0xaea0, 0xaea0,
     31615        0xaebc, 0xaebc,
     31616        0xaed8, 0xaed8,
     31617        0xaef4, 0xaef4,
     31618        0xaf10, 0xaf10,
     31619        0xaf2c, 0xaf2c,
     31620        0xaf48, 0xaf48,
     31621        0xaf64, 0xaf64,
     31622        0xaf80, 0xaf80,
     31623        0xaf9c, 0xaf9c,
     31624        0xafb8, 0xafb8,
     31625        0xafd4, 0xafd4,
     31626        0xaff0, 0xaff0,
     31627        0xb00c, 0xb00c,
     31628        0xb028, 0xb028,
     31629        0xb044, 0xb044,
     31630        0xb060, 0xb060,
     31631        0xb07c, 0xb07c,
     31632        0xb098, 0xb098,
     31633        0xb0b4, 0xb0b4,
     31634        0xb0d0, 0xb0d0,
     31635        0xb0ec, 0xb0ec,
     31636        0xb108, 0xb108,
     31637        0xb124, 0xb124,
     31638        0xb140, 0xb140,
     31639        0xb15c, 0xb15c,
     31640        0xb178, 0xb178,
     31641        0xb194, 0xb194,
     31642        0xb1b0, 0xb1b0,
     31643        0xb1cc, 0xb1cc,
     31644        0xb1e8, 0xb1e8,
     31645        0xb204, 0xb204,
     31646        0xb220, 0xb220,
     31647        0xb23c, 0xb23c,
     31648        0xb258, 0xb258,
     31649        0xb274, 0xb274,
     31650        0xb290, 0xb290,
     31651        0xb2ac, 0xb2ac,
     31652        0xb2c8, 0xb2c8,
     31653        0xb2e4, 0xb2e4,
     31654        0xb300, 0xb300,
     31655        0xb31c, 0xb31c,
     31656        0xb338, 0xb338,
     31657        0xb354, 0xb354,
     31658        0xb370, 0xb370,
     31659        0xb38c, 0xb38c,
     31660        0xb3a8, 0xb3a8,
     31661        0xb3c4, 0xb3c4,
     31662        0xb3e0, 0xb3e0,
     31663        0xb3fc, 0xb3fc,
     31664        0xb418, 0xb418,
     31665        0xb434, 0xb434,
     31666        0xb450, 0xb450,
     31667        0xb46c, 0xb46c,
     31668        0xb488, 0xb488,
     31669        0xb4a4, 0xb4a4,
     31670        0xb4c0, 0xb4c0,
     31671        0xb4dc, 0xb4dc,
     31672        0xb4f8, 0xb4f8,
     31673        0xb514, 0xb514,
     31674        0xb530, 0xb530,
     31675        0xb54c, 0xb54c,
     31676        0xb568, 0xb568,
     31677        0xb584, 0xb584,
     31678        0xb5a0, 0xb5a0,
     31679        0xb5bc, 0xb5bc,
     31680        0xb5d8, 0xb5d8,
     31681        0xb5f4, 0xb5f4,
     31682        0xb610, 0xb610,
     31683        0xb62c, 0xb62c,
     31684        0xb648, 0xb648,
     31685        0xb664, 0xb664,
     31686        0xb680, 0xb680,
     31687        0xb69c, 0xb69c,
     31688        0xb6b8, 0xb6b8,
     31689        0xb6d4, 0xb6d4,
     31690        0xb6f0, 0xb6f0,
     31691        0xb70c, 0xb70c,
     31692        0xb728, 0xb728,
     31693        0xb744, 0xb744,
     31694        0xb760, 0xb760,
     31695        0xb77c, 0xb77c,
     31696        0xb798, 0xb798,
     31697        0xb7b4, 0xb7b4,
     31698        0xb7d0, 0xb7d0,
     31699        0xb7ec, 0xb7ec,
     31700        0xb808, 0xb808,
     31701        0xb824, 0xb824,
     31702        0xb840, 0xb840,
     31703        0xb85c, 0xb85c,
     31704        0xb878, 0xb878,
     31705        0xb894, 0xb894,
     31706        0xb8b0, 0xb8b0,
     31707        0xb8cc, 0xb8cc,
     31708        0xb8e8, 0xb8e8,
     31709        0xb904, 0xb904,
     31710        0xb920, 0xb920,
     31711        0xb93c, 0xb93c,
     31712        0xb958, 0xb958,
     31713        0xb974, 0xb974,
     31714        0xb990, 0xb990,
     31715        0xb9ac, 0xb9ac,
     31716        0xb9c8, 0xb9c8,
     31717        0xb9e4, 0xb9e4,
     31718        0xba00, 0xba00,
     31719        0xba1c, 0xba1c,
     31720        0xba38, 0xba38,
     31721        0xba54, 0xba54,
     31722        0xba70, 0xba70,
     31723        0xba8c, 0xba8c,
     31724        0xbaa8, 0xbaa8,
     31725        0xbac4, 0xbac4,
     31726        0xbae0, 0xbae0,
     31727        0xbafc, 0xbafc,
     31728        0xbb18, 0xbb18,
     31729        0xbb34, 0xbb34,
     31730        0xbb50, 0xbb50,
     31731        0xbb6c, 0xbb6c,
     31732        0xbb88, 0xbb88,
     31733        0xbba4, 0xbba4,
     31734        0xbbc0, 0xbbc0,
     31735        0xbbdc, 0xbbdc,
     31736        0xbbf8, 0xbbf8,
     31737        0xbc14, 0xbc14,
     31738        0xbc30, 0xbc30,
     31739        0xbc4c, 0xbc4c,
     31740        0xbc68, 0xbc68,
     31741        0xbc84, 0xbc84,
     31742        0xbca0, 0xbca0,
     31743        0xbcbc, 0xbcbc,
     31744        0xbcd8, 0xbcd8,
     31745        0xbcf4, 0xbcf4,
     31746        0xbd10, 0xbd10,
     31747        0xbd2c, 0xbd2c,
     31748        0xbd48, 0xbd48,
     31749        0xbd64, 0xbd64,
     31750        0xbd80, 0xbd80,
     31751        0xbd9c, 0xbd9c,
     31752        0xbdb8, 0xbdb8,
     31753        0xbdd4, 0xbdd4,
     31754        0xbdf0, 0xbdf0,
     31755        0xbe0c, 0xbe0c,
     31756        0xbe28, 0xbe28,
     31757        0xbe44, 0xbe44,
     31758        0xbe60, 0xbe60,
     31759        0xbe7c, 0xbe7c,
     31760        0xbe98, 0xbe98,
     31761        0xbeb4, 0xbeb4,
     31762        0xbed0, 0xbed0,
     31763        0xbeec, 0xbeec,
     31764        0xbf08, 0xbf08,
     31765        0xbf24, 0xbf24,
     31766        0xbf40, 0xbf40,
     31767        0xbf5c, 0xbf5c,
     31768        0xbf78, 0xbf78,
     31769        0xbf94, 0xbf94,
     31770        0xbfb0, 0xbfb0,
     31771        0xbfcc, 0xbfcc,
     31772        0xbfe8, 0xbfe8,
     31773        0xc004, 0xc004,
     31774        0xc020, 0xc020,
     31775        0xc03c, 0xc03c,
     31776        0xc058, 0xc058,
     31777        0xc074, 0xc074,
     31778        0xc090, 0xc090,
     31779        0xc0ac, 0xc0ac,
     31780        0xc0c8, 0xc0c8,
     31781        0xc0e4, 0xc0e4,
     31782        0xc100, 0xc100,
     31783        0xc11c, 0xc11c,
     31784        0xc138, 0xc138,
     31785        0xc154, 0xc154,
     31786        0xc170, 0xc170,
     31787        0xc18c, 0xc18c,
     31788        0xc1a8, 0xc1a8,
     31789        0xc1c4, 0xc1c4,
     31790        0xc1e0, 0xc1e0,
     31791        0xc1fc, 0xc1fc,
     31792        0xc218, 0xc218,
     31793        0xc234, 0xc234,
     31794        0xc250, 0xc250,
     31795        0xc26c, 0xc26c,
     31796        0xc288, 0xc288,
     31797        0xc2a4, 0xc2a4,
     31798        0xc2c0, 0xc2c0,
     31799        0xc2dc, 0xc2dc,
     31800        0xc2f8, 0xc2f8,
     31801        0xc314, 0xc314,
     31802        0xc330, 0xc330,
     31803        0xc34c, 0xc34c,
     31804        0xc368, 0xc368,
     31805        0xc384, 0xc384,
     31806        0xc3a0, 0xc3a0,
     31807        0xc3bc, 0xc3bc,
     31808        0xc3d8, 0xc3d8,
     31809        0xc3f4, 0xc3f4,
     31810        0xc410, 0xc410,
     31811        0xc42c, 0xc42c,
     31812        0xc448, 0xc448,
     31813        0xc464, 0xc464,
     31814        0xc480, 0xc480,
     31815        0xc49c, 0xc49c,
     31816        0xc4b8, 0xc4b8,
     31817        0xc4d4, 0xc4d4,
     31818        0xc4f0, 0xc4f0,
     31819        0xc50c, 0xc50c,
     31820        0xc528, 0xc528,
     31821        0xc544, 0xc544,
     31822        0xc560, 0xc560,
     31823        0xc57c, 0xc57c,
     31824        0xc598, 0xc598,
     31825        0xc5b4, 0xc5b4,
     31826        0xc5d0, 0xc5d0,
     31827        0xc5ec, 0xc5ec,
     31828        0xc608, 0xc608,
     31829        0xc624, 0xc624,
     31830        0xc640, 0xc640,
     31831        0xc65c, 0xc65c,
     31832        0xc678, 0xc678,
     31833        0xc694, 0xc694,
     31834        0xc6b0, 0xc6b0,
     31835        0xc6cc, 0xc6cc,
     31836        0xc6e8, 0xc6e8,
     31837        0xc704, 0xc704,
     31838        0xc720, 0xc720,
     31839        0xc73c, 0xc73c,
     31840        0xc758, 0xc758,
     31841        0xc774, 0xc774,
     31842        0xc790, 0xc790,
     31843        0xc7ac, 0xc7ac,
     31844        0xc7c8, 0xc7c8,
     31845        0xc7e4, 0xc7e4,
     31846        0xc800, 0xc800,
     31847        0xc81c, 0xc81c,
     31848        0xc838, 0xc838,
     31849        0xc854, 0xc854,
     31850        0xc870, 0xc870,
     31851        0xc88c, 0xc88c,
     31852        0xc8a8, 0xc8a8,
     31853        0xc8c4, 0xc8c4,
     31854        0xc8e0, 0xc8e0,
     31855        0xc8fc, 0xc8fc,
     31856        0xc918, 0xc918,
     31857        0xc934, 0xc934,
     31858        0xc950, 0xc950,
     31859        0xc96c, 0xc96c,
     31860        0xc988, 0xc988,
     31861        0xc9a4, 0xc9a4,
     31862        0xc9c0, 0xc9c0,
     31863        0xc9dc, 0xc9dc,
     31864        0xc9f8, 0xc9f8,
     31865        0xca14, 0xca14,
     31866        0xca30, 0xca30,
     31867        0xca4c, 0xca4c,
     31868        0xca68, 0xca68,
     31869        0xca84, 0xca84,
     31870        0xcaa0, 0xcaa0,
     31871        0xcabc, 0xcabc,
     31872        0xcad8, 0xcad8,
     31873        0xcaf4, 0xcaf4,
     31874        0xcb10, 0xcb10,
     31875        0xcb2c, 0xcb2c,
     31876        0xcb48, 0xcb48,
     31877        0xcb64, 0xcb64,
     31878        0xcb80, 0xcb80,
     31879        0xcb9c, 0xcb9c,
     31880        0xcbb8, 0xcbb8,
     31881        0xcbd4, 0xcbd4,
     31882        0xcbf0, 0xcbf0,
     31883        0xcc0c, 0xcc0c,
     31884        0xcc28, 0xcc28,
     31885        0xcc44, 0xcc44,
     31886        0xcc60, 0xcc60,
     31887        0xcc7c, 0xcc7c,
     31888        0xcc98, 0xcc98,
     31889        0xccb4, 0xccb4,
     31890        0xccd0, 0xccd0,
     31891        0xccec, 0xccec,
     31892        0xcd08, 0xcd08,
     31893        0xcd24, 0xcd24,
     31894        0xcd40, 0xcd40,
     31895        0xcd5c, 0xcd5c,
     31896        0xcd78, 0xcd78,
     31897        0xcd94, 0xcd94,
     31898        0xcdb0, 0xcdb0,
     31899        0xcdcc, 0xcdcc,
     31900        0xcde8, 0xcde8,
     31901        0xce04, 0xce04,
     31902        0xce20, 0xce20,
     31903        0xce3c, 0xce3c,
     31904        0xce58, 0xce58,
     31905        0xce74, 0xce74,
     31906        0xce90, 0xce90,
     31907        0xceac, 0xceac,
     31908        0xcec8, 0xcec8,
     31909        0xcee4, 0xcee4,
     31910        0xcf00, 0xcf00,
     31911        0xcf1c, 0xcf1c,
     31912        0xcf38, 0xcf38,
     31913        0xcf54, 0xcf54,
     31914        0xcf70, 0xcf70,
     31915        0xcf8c, 0xcf8c,
     31916        0xcfa8, 0xcfa8,
     31917        0xcfc4, 0xcfc4,
     31918        0xcfe0, 0xcfe0,
     31919        0xcffc, 0xcffc,
     31920        0xd018, 0xd018,
     31921        0xd034, 0xd034,
     31922        0xd050, 0xd050,
     31923        0xd06c, 0xd06c,
     31924        0xd088, 0xd088,
     31925        0xd0a4, 0xd0a4,
     31926        0xd0c0, 0xd0c0,
     31927        0xd0dc, 0xd0dc,
     31928        0xd0f8, 0xd0f8,
     31929        0xd114, 0xd114,
     31930        0xd130, 0xd130,
     31931        0xd14c, 0xd14c,
     31932        0xd168, 0xd168,
     31933        0xd184, 0xd184,
     31934        0xd1a0, 0xd1a0,
     31935        0xd1bc, 0xd1bc,
     31936        0xd1d8, 0xd1d8,
     31937        0xd1f4, 0xd1f4,
     31938        0xd210, 0xd210,
     31939        0xd22c, 0xd22c,
     31940        0xd248, 0xd248,
     31941        0xd264, 0xd264,
     31942        0xd280, 0xd280,
     31943        0xd29c, 0xd29c,
     31944        0xd2b8, 0xd2b8,
     31945        0xd2d4, 0xd2d4,
     31946        0xd2f0, 0xd2f0,
     31947        0xd30c, 0xd30c,
     31948        0xd328, 0xd328,
     31949        0xd344, 0xd344,
     31950        0xd360, 0xd360,
     31951        0xd37c, 0xd37c,
     31952        0xd398, 0xd398,
     31953        0xd3b4, 0xd3b4,
     31954        0xd3d0, 0xd3d0,
     31955        0xd3ec, 0xd3ec,
     31956        0xd408, 0xd408,
     31957        0xd424, 0xd424,
     31958        0xd440, 0xd440,
     31959        0xd45c, 0xd45c,
     31960        0xd478, 0xd478,
     31961        0xd494, 0xd494,
     31962        0xd4b0, 0xd4b0,
     31963        0xd4cc, 0xd4cc,
     31964        0xd4e8, 0xd4e8,
     31965        0xd504, 0xd504,
     31966        0xd520, 0xd520,
     31967        0xd53c, 0xd53c,
     31968        0xd558, 0xd558,
     31969        0xd574, 0xd574,
     31970        0xd590, 0xd590,
     31971        0xd5ac, 0xd5ac,
     31972        0xd5c8, 0xd5c8,
     31973        0xd5e4, 0xd5e4,
     31974        0xd600, 0xd600,
     31975        0xd61c, 0xd61c,
     31976        0xd638, 0xd638,
     31977        0xd654, 0xd654,
     31978        0xd670, 0xd670,
     31979        0xd68c, 0xd68c,
     31980        0xd6a8, 0xd6a8,
     31981        0xd6c4, 0xd6c4,
     31982        0xd6e0, 0xd6e0,
     31983        0xd6fc, 0xd6fc,
     31984        0xd718, 0xd718,
     31985        0xd734, 0xd734,
     31986        0xd750, 0xd750,
     31987        0xd76c, 0xd76c,
     31988        0xd788, 0xd788,
     31989}; /* CR_Grapheme_Cluster_Break_LV */
     31990
     31991/* 'Grapheme_Cluster_Break_LVT': Grapheme_Cluster_Break=LVT */
     31992static const OnigCodePoint CR_Grapheme_Cluster_Break_LVT[] = {
     31993        399,
     31994        0xac01, 0xac1b,
     31995        0xac1d, 0xac37,
     31996        0xac39, 0xac53,
     31997        0xac55, 0xac6f,
     31998        0xac71, 0xac8b,
     31999        0xac8d, 0xaca7,
     32000        0xaca9, 0xacc3,
     32001        0xacc5, 0xacdf,
     32002        0xace1, 0xacfb,
     32003        0xacfd, 0xad17,
     32004        0xad19, 0xad33,
     32005        0xad35, 0xad4f,
     32006        0xad51, 0xad6b,
     32007        0xad6d, 0xad87,
     32008        0xad89, 0xada3,
     32009        0xada5, 0xadbf,
     32010        0xadc1, 0xaddb,
     32011        0xaddd, 0xadf7,
     32012        0xadf9, 0xae13,
     32013        0xae15, 0xae2f,
     32014        0xae31, 0xae4b,
     32015        0xae4d, 0xae67,
     32016        0xae69, 0xae83,
     32017        0xae85, 0xae9f,
     32018        0xaea1, 0xaebb,
     32019        0xaebd, 0xaed7,
     32020        0xaed9, 0xaef3,
     32021        0xaef5, 0xaf0f,
     32022        0xaf11, 0xaf2b,
     32023        0xaf2d, 0xaf47,
     32024        0xaf49, 0xaf63,
     32025        0xaf65, 0xaf7f,
     32026        0xaf81, 0xaf9b,
     32027        0xaf9d, 0xafb7,
     32028        0xafb9, 0xafd3,
     32029        0xafd5, 0xafef,
     32030        0xaff1, 0xb00b,
     32031        0xb00d, 0xb027,
     32032        0xb029, 0xb043,
     32033        0xb045, 0xb05f,
     32034        0xb061, 0xb07b,
     32035        0xb07d, 0xb097,
     32036        0xb099, 0xb0b3,
     32037        0xb0b5, 0xb0cf,
     32038        0xb0d1, 0xb0eb,
     32039        0xb0ed, 0xb107,
     32040        0xb109, 0xb123,
     32041        0xb125, 0xb13f,
     32042        0xb141, 0xb15b,
     32043        0xb15d, 0xb177,
     32044        0xb179, 0xb193,
     32045        0xb195, 0xb1af,
     32046        0xb1b1, 0xb1cb,
     32047        0xb1cd, 0xb1e7,
     32048        0xb1e9, 0xb203,
     32049        0xb205, 0xb21f,
     32050        0xb221, 0xb23b,
     32051        0xb23d, 0xb257,
     32052        0xb259, 0xb273,
     32053        0xb275, 0xb28f,
     32054        0xb291, 0xb2ab,
     32055        0xb2ad, 0xb2c7,
     32056        0xb2c9, 0xb2e3,
     32057        0xb2e5, 0xb2ff,
     32058        0xb301, 0xb31b,
     32059        0xb31d, 0xb337,
     32060        0xb339, 0xb353,
     32061        0xb355, 0xb36f,
     32062        0xb371, 0xb38b,
     32063        0xb38d, 0xb3a7,
     32064        0xb3a9, 0xb3c3,
     32065        0xb3c5, 0xb3df,
     32066        0xb3e1, 0xb3fb,
     32067        0xb3fd, 0xb417,
     32068        0xb419, 0xb433,
     32069        0xb435, 0xb44f,
     32070        0xb451, 0xb46b,
     32071        0xb46d, 0xb487,
     32072        0xb489, 0xb4a3,
     32073        0xb4a5, 0xb4bf,
     32074        0xb4c1, 0xb4db,
     32075        0xb4dd, 0xb4f7,
     32076        0xb4f9, 0xb513,
     32077        0xb515, 0xb52f,
     32078        0xb531, 0xb54b,
     32079        0xb54d, 0xb567,
     32080        0xb569, 0xb583,
     32081        0xb585, 0xb59f,
     32082        0xb5a1, 0xb5bb,
     32083        0xb5bd, 0xb5d7,
     32084        0xb5d9, 0xb5f3,
     32085        0xb5f5, 0xb60f,
     32086        0xb611, 0xb62b,
     32087        0xb62d, 0xb647,
     32088        0xb649, 0xb663,
     32089        0xb665, 0xb67f,
     32090        0xb681, 0xb69b,
     32091        0xb69d, 0xb6b7,
     32092        0xb6b9, 0xb6d3,
     32093        0xb6d5, 0xb6ef,
     32094        0xb6f1, 0xb70b,
     32095        0xb70d, 0xb727,
     32096        0xb729, 0xb743,
     32097        0xb745, 0xb75f,
     32098        0xb761, 0xb77b,
     32099        0xb77d, 0xb797,
     32100        0xb799, 0xb7b3,
     32101        0xb7b5, 0xb7cf,
     32102        0xb7d1, 0xb7eb,
     32103        0xb7ed, 0xb807,
     32104        0xb809, 0xb823,
     32105        0xb825, 0xb83f,
     32106        0xb841, 0xb85b,
     32107        0xb85d, 0xb877,
     32108        0xb879, 0xb893,
     32109        0xb895, 0xb8af,
     32110        0xb8b1, 0xb8cb,
     32111        0xb8cd, 0xb8e7,
     32112        0xb8e9, 0xb903,
     32113        0xb905, 0xb91f,
     32114        0xb921, 0xb93b,
     32115        0xb93d, 0xb957,
     32116        0xb959, 0xb973,
     32117        0xb975, 0xb98f,
     32118        0xb991, 0xb9ab,
     32119        0xb9ad, 0xb9c7,
     32120        0xb9c9, 0xb9e3,
     32121        0xb9e5, 0xb9ff,
     32122        0xba01, 0xba1b,
     32123        0xba1d, 0xba37,
     32124        0xba39, 0xba53,
     32125        0xba55, 0xba6f,
     32126        0xba71, 0xba8b,
     32127        0xba8d, 0xbaa7,
     32128        0xbaa9, 0xbac3,
     32129        0xbac5, 0xbadf,
     32130        0xbae1, 0xbafb,
     32131        0xbafd, 0xbb17,
     32132        0xbb19, 0xbb33,
     32133        0xbb35, 0xbb4f,
     32134        0xbb51, 0xbb6b,
     32135        0xbb6d, 0xbb87,
     32136        0xbb89, 0xbba3,
     32137        0xbba5, 0xbbbf,
     32138        0xbbc1, 0xbbdb,
     32139        0xbbdd, 0xbbf7,
     32140        0xbbf9, 0xbc13,
     32141        0xbc15, 0xbc2f,
     32142        0xbc31, 0xbc4b,
     32143        0xbc4d, 0xbc67,
     32144        0xbc69, 0xbc83,
     32145        0xbc85, 0xbc9f,
     32146        0xbca1, 0xbcbb,
     32147        0xbcbd, 0xbcd7,
     32148        0xbcd9, 0xbcf3,
     32149        0xbcf5, 0xbd0f,
     32150        0xbd11, 0xbd2b,
     32151        0xbd2d, 0xbd47,
     32152        0xbd49, 0xbd63,
     32153        0xbd65, 0xbd7f,
     32154        0xbd81, 0xbd9b,
     32155        0xbd9d, 0xbdb7,
     32156        0xbdb9, 0xbdd3,
     32157        0xbdd5, 0xbdef,
     32158        0xbdf1, 0xbe0b,
     32159        0xbe0d, 0xbe27,
     32160        0xbe29, 0xbe43,
     32161        0xbe45, 0xbe5f,
     32162        0xbe61, 0xbe7b,
     32163        0xbe7d, 0xbe97,
     32164        0xbe99, 0xbeb3,
     32165        0xbeb5, 0xbecf,
     32166        0xbed1, 0xbeeb,
     32167        0xbeed, 0xbf07,
     32168        0xbf09, 0xbf23,
     32169        0xbf25, 0xbf3f,
     32170        0xbf41, 0xbf5b,
     32171        0xbf5d, 0xbf77,
     32172        0xbf79, 0xbf93,
     32173        0xbf95, 0xbfaf,
     32174        0xbfb1, 0xbfcb,
     32175        0xbfcd, 0xbfe7,
     32176        0xbfe9, 0xc003,
     32177        0xc005, 0xc01f,
     32178        0xc021, 0xc03b,
     32179        0xc03d, 0xc057,
     32180        0xc059, 0xc073,
     32181        0xc075, 0xc08f,
     32182        0xc091, 0xc0ab,
     32183        0xc0ad, 0xc0c7,
     32184        0xc0c9, 0xc0e3,
     32185        0xc0e5, 0xc0ff,
     32186        0xc101, 0xc11b,
     32187        0xc11d, 0xc137,
     32188        0xc139, 0xc153,
     32189        0xc155, 0xc16f,
     32190        0xc171, 0xc18b,
     32191        0xc18d, 0xc1a7,
     32192        0xc1a9, 0xc1c3,
     32193        0xc1c5, 0xc1df,
     32194        0xc1e1, 0xc1fb,
     32195        0xc1fd, 0xc217,
     32196        0xc219, 0xc233,
     32197        0xc235, 0xc24f,
     32198        0xc251, 0xc26b,
     32199        0xc26d, 0xc287,
     32200        0xc289, 0xc2a3,
     32201        0xc2a5, 0xc2bf,
     32202        0xc2c1, 0xc2db,
     32203        0xc2dd, 0xc2f7,
     32204        0xc2f9, 0xc313,
     32205        0xc315, 0xc32f,
     32206        0xc331, 0xc34b,
     32207        0xc34d, 0xc367,
     32208        0xc369, 0xc383,
     32209        0xc385, 0xc39f,
     32210        0xc3a1, 0xc3bb,
     32211        0xc3bd, 0xc3d7,
     32212        0xc3d9, 0xc3f3,
     32213        0xc3f5, 0xc40f,
     32214        0xc411, 0xc42b,
     32215        0xc42d, 0xc447,
     32216        0xc449, 0xc463,
     32217        0xc465, 0xc47f,
     32218        0xc481, 0xc49b,
     32219        0xc49d, 0xc4b7,
     32220        0xc4b9, 0xc4d3,
     32221        0xc4d5, 0xc4ef,
     32222        0xc4f1, 0xc50b,
     32223        0xc50d, 0xc527,
     32224        0xc529, 0xc543,
     32225        0xc545, 0xc55f,
     32226        0xc561, 0xc57b,
     32227        0xc57d, 0xc597,
     32228        0xc599, 0xc5b3,
     32229        0xc5b5, 0xc5cf,
     32230        0xc5d1, 0xc5eb,
     32231        0xc5ed, 0xc607,
     32232        0xc609, 0xc623,
     32233        0xc625, 0xc63f,
     32234        0xc641, 0xc65b,
     32235        0xc65d, 0xc677,
     32236        0xc679, 0xc693,
     32237        0xc695, 0xc6af,
     32238        0xc6b1, 0xc6cb,
     32239        0xc6cd, 0xc6e7,
     32240        0xc6e9, 0xc703,
     32241        0xc705, 0xc71f,
     32242        0xc721, 0xc73b,
     32243        0xc73d, 0xc757,
     32244        0xc759, 0xc773,
     32245        0xc775, 0xc78f,
     32246        0xc791, 0xc7ab,
     32247        0xc7ad, 0xc7c7,
     32248        0xc7c9, 0xc7e3,
     32249        0xc7e5, 0xc7ff,
     32250        0xc801, 0xc81b,
     32251        0xc81d, 0xc837,
     32252        0xc839, 0xc853,
     32253        0xc855, 0xc86f,
     32254        0xc871, 0xc88b,
     32255        0xc88d, 0xc8a7,
     32256        0xc8a9, 0xc8c3,
     32257        0xc8c5, 0xc8df,
     32258        0xc8e1, 0xc8fb,
     32259        0xc8fd, 0xc917,
     32260        0xc919, 0xc933,
     32261        0xc935, 0xc94f,
     32262        0xc951, 0xc96b,
     32263        0xc96d, 0xc987,
     32264        0xc989, 0xc9a3,
     32265        0xc9a5, 0xc9bf,
     32266        0xc9c1, 0xc9db,
     32267        0xc9dd, 0xc9f7,
     32268        0xc9f9, 0xca13,
     32269        0xca15, 0xca2f,
     32270        0xca31, 0xca4b,
     32271        0xca4d, 0xca67,
     32272        0xca69, 0xca83,
     32273        0xca85, 0xca9f,
     32274        0xcaa1, 0xcabb,
     32275        0xcabd, 0xcad7,
     32276        0xcad9, 0xcaf3,
     32277        0xcaf5, 0xcb0f,
     32278        0xcb11, 0xcb2b,
     32279        0xcb2d, 0xcb47,
     32280        0xcb49, 0xcb63,
     32281        0xcb65, 0xcb7f,
     32282        0xcb81, 0xcb9b,
     32283        0xcb9d, 0xcbb7,
     32284        0xcbb9, 0xcbd3,
     32285        0xcbd5, 0xcbef,
     32286        0xcbf1, 0xcc0b,
     32287        0xcc0d, 0xcc27,
     32288        0xcc29, 0xcc43,
     32289        0xcc45, 0xcc5f,
     32290        0xcc61, 0xcc7b,
     32291        0xcc7d, 0xcc97,
     32292        0xcc99, 0xccb3,
     32293        0xccb5, 0xcccf,
     32294        0xccd1, 0xcceb,
     32295        0xcced, 0xcd07,
     32296        0xcd09, 0xcd23,
     32297        0xcd25, 0xcd3f,
     32298        0xcd41, 0xcd5b,
     32299        0xcd5d, 0xcd77,
     32300        0xcd79, 0xcd93,
     32301        0xcd95, 0xcdaf,
     32302        0xcdb1, 0xcdcb,
     32303        0xcdcd, 0xcde7,
     32304        0xcde9, 0xce03,
     32305        0xce05, 0xce1f,
     32306        0xce21, 0xce3b,
     32307        0xce3d, 0xce57,
     32308        0xce59, 0xce73,
     32309        0xce75, 0xce8f,
     32310        0xce91, 0xceab,
     32311        0xcead, 0xcec7,
     32312        0xcec9, 0xcee3,
     32313        0xcee5, 0xceff,
     32314        0xcf01, 0xcf1b,
     32315        0xcf1d, 0xcf37,
     32316        0xcf39, 0xcf53,
     32317        0xcf55, 0xcf6f,
     32318        0xcf71, 0xcf8b,
     32319        0xcf8d, 0xcfa7,
     32320        0xcfa9, 0xcfc3,
     32321        0xcfc5, 0xcfdf,
     32322        0xcfe1, 0xcffb,
     32323        0xcffd, 0xd017,
     32324        0xd019, 0xd033,
     32325        0xd035, 0xd04f,
     32326        0xd051, 0xd06b,
     32327        0xd06d, 0xd087,
     32328        0xd089, 0xd0a3,
     32329        0xd0a5, 0xd0bf,
     32330        0xd0c1, 0xd0db,
     32331        0xd0dd, 0xd0f7,
     32332        0xd0f9, 0xd113,
     32333        0xd115, 0xd12f,
     32334        0xd131, 0xd14b,
     32335        0xd14d, 0xd167,
     32336        0xd169, 0xd183,
     32337        0xd185, 0xd19f,
     32338        0xd1a1, 0xd1bb,
     32339        0xd1bd, 0xd1d7,
     32340        0xd1d9, 0xd1f3,
     32341        0xd1f5, 0xd20f,
     32342        0xd211, 0xd22b,
     32343        0xd22d, 0xd247,
     32344        0xd249, 0xd263,
     32345        0xd265, 0xd27f,
     32346        0xd281, 0xd29b,
     32347        0xd29d, 0xd2b7,
     32348        0xd2b9, 0xd2d3,
     32349        0xd2d5, 0xd2ef,
     32350        0xd2f1, 0xd30b,
     32351        0xd30d, 0xd327,
     32352        0xd329, 0xd343,
     32353        0xd345, 0xd35f,
     32354        0xd361, 0xd37b,
     32355        0xd37d, 0xd397,
     32356        0xd399, 0xd3b3,
     32357        0xd3b5, 0xd3cf,
     32358        0xd3d1, 0xd3eb,
     32359        0xd3ed, 0xd407,
     32360        0xd409, 0xd423,
     32361        0xd425, 0xd43f,
     32362        0xd441, 0xd45b,
     32363        0xd45d, 0xd477,
     32364        0xd479, 0xd493,
     32365        0xd495, 0xd4af,
     32366        0xd4b1, 0xd4cb,
     32367        0xd4cd, 0xd4e7,
     32368        0xd4e9, 0xd503,
     32369        0xd505, 0xd51f,
     32370        0xd521, 0xd53b,
     32371        0xd53d, 0xd557,
     32372        0xd559, 0xd573,
     32373        0xd575, 0xd58f,
     32374        0xd591, 0xd5ab,
     32375        0xd5ad, 0xd5c7,
     32376        0xd5c9, 0xd5e3,
     32377        0xd5e5, 0xd5ff,
     32378        0xd601, 0xd61b,
     32379        0xd61d, 0xd637,
     32380        0xd639, 0xd653,
     32381        0xd655, 0xd66f,
     32382        0xd671, 0xd68b,
     32383        0xd68d, 0xd6a7,
     32384        0xd6a9, 0xd6c3,
     32385        0xd6c5, 0xd6df,
     32386        0xd6e1, 0xd6fb,
     32387        0xd6fd, 0xd717,
     32388        0xd719, 0xd733,
     32389        0xd735, 0xd74f,
     32390        0xd751, 0xd76b,
     32391        0xd76d, 0xd787,
     32392        0xd789, 0xd7a3,
     32393}; /* CR_Grapheme_Cluster_Break_LVT */
     32394
     32395/* 'Grapheme_Cluster_Break_E_Base': Grapheme_Cluster_Break=E_Base */
     32396static const OnigCodePoint CR_Grapheme_Cluster_Break_E_Base[] = {
     32397        31,
     32398        0x261d, 0x261d,
     32399        0x26f9, 0x26f9,
     32400        0x270a, 0x270d,
     32401        0x1f385, 0x1f385,
     32402        0x1f3c2, 0x1f3c4,
     32403        0x1f3c7, 0x1f3c7,
     32404        0x1f3ca, 0x1f3cc,
     32405        0x1f442, 0x1f443,
     32406        0x1f446, 0x1f450,
     32407        0x1f46e, 0x1f46e,
     32408        0x1f470, 0x1f478,
     32409        0x1f47c, 0x1f47c,
     32410        0x1f481, 0x1f483,
     32411        0x1f485, 0x1f487,
     32412        0x1f4aa, 0x1f4aa,
     32413        0x1f574, 0x1f575,
     32414        0x1f57a, 0x1f57a,
     32415        0x1f590, 0x1f590,
     32416        0x1f595, 0x1f596,
     32417        0x1f645, 0x1f647,
     32418        0x1f64b, 0x1f64f,
     32419        0x1f6a3, 0x1f6a3,
     32420        0x1f6b4, 0x1f6b6,
     32421        0x1f6c0, 0x1f6c0,
     32422        0x1f6cc, 0x1f6cc,
     32423        0x1f918, 0x1f91c,
     32424        0x1f91e, 0x1f91f,
     32425        0x1f926, 0x1f926,
     32426        0x1f930, 0x1f939,
     32427        0x1f93d, 0x1f93e,
     32428        0x1f9d1, 0x1f9dd,
     32429}; /* CR_Grapheme_Cluster_Break_E_Base */
     32430
     32431/* 'Grapheme_Cluster_Break_E_Modifier': Grapheme_Cluster_Break=E_Modifier */
     32432#define CR_Grapheme_Cluster_Break_E_Modifier CR_Emoji_Modifier
     32433
     32434/* 'Grapheme_Cluster_Break_ZWJ': Grapheme_Cluster_Break=ZWJ */
     32435static const OnigCodePoint CR_Grapheme_Cluster_Break_ZWJ[] = {
     32436        1,
     32437        0x200d, 0x200d,
     32438}; /* CR_Grapheme_Cluster_Break_ZWJ */
     32439
     32440/* 'Grapheme_Cluster_Break_Glue_After_Zwj': Grapheme_Cluster_Break=Glue_After_Zwj */
     32441static const OnigCodePoint CR_Grapheme_Cluster_Break_Glue_After_Zwj[] = {
     32442        20,
     32443        0x2640, 0x2640,
     32444        0x2642, 0x2642,
     32445        0x2695, 0x2696,
     32446        0x2708, 0x2708,
     32447        0x2764, 0x2764,
     32448        0x1f308, 0x1f308,
     32449        0x1f33e, 0x1f33e,
     32450        0x1f373, 0x1f373,
     32451        0x1f393, 0x1f393,
     32452        0x1f3a4, 0x1f3a4,
     32453        0x1f3a8, 0x1f3a8,
     32454        0x1f3eb, 0x1f3eb,
     32455        0x1f3ed, 0x1f3ed,
     32456        0x1f48b, 0x1f48b,
     32457        0x1f4bb, 0x1f4bc,
     32458        0x1f527, 0x1f527,
     32459        0x1f52c, 0x1f52c,
     32460        0x1f5e8, 0x1f5e8,
     32461        0x1f680, 0x1f680,
     32462        0x1f692, 0x1f692,
     32463}; /* CR_Grapheme_Cluster_Break_Glue_After_Zwj */
     32464
     32465/* 'Grapheme_Cluster_Break_E_Base_GAZ': Grapheme_Cluster_Break=E_Base_GAZ */
     32466static const OnigCodePoint CR_Grapheme_Cluster_Break_E_Base_GAZ[] = {
     32467        1,
     32468        0x1f466, 0x1f469,
     32469}; /* CR_Grapheme_Cluster_Break_E_Base_GAZ */
    2752132470
    2752232471/* 'In_Basic_Latin': Block */
     
    2763132580}; /* CR_In_Mandaic */
    2763232581
     32582/* 'In_Syriac_Supplement': Block */
     32583static const OnigCodePoint CR_In_Syriac_Supplement[] = {
     32584        1,
     32585        0x0860, 0x086f,
     32586}; /* CR_In_Syriac_Supplement */
     32587
    2763332588/* 'In_Arabic_Extended_A': Block */
    2763432589static const OnigCodePoint CR_In_Arabic_Extended_A[] = {
     
    2788032835#define CR_In_Ol_Chiki CR_Ol_Chiki
    2788132836
     32837/* 'In_Cyrillic_Extended_C': Block */
     32838static const OnigCodePoint CR_In_Cyrillic_Extended_C[] = {
     32839        1,
     32840        0x1c80, 0x1c8f,
     32841}; /* CR_In_Cyrillic_Extended_C */
     32842
    2788232843/* 'In_Sundanese_Supplement': Block */
    2788332844static const OnigCodePoint CR_In_Sundanese_Supplement[] = {
     
    2835433315}; /* CR_In_Latin_Extended_E */
    2835533316
     33317/* 'In_Cherokee_Supplement': Block */
     33318static const OnigCodePoint CR_In_Cherokee_Supplement[] = {
     33319        1,
     33320        0xab70, 0xabbf,
     33321}; /* CR_In_Cherokee_Supplement */
     33322
    2835633323/* 'In_Meetei_Mayek': Block */
    2835733324static const OnigCodePoint CR_In_Meetei_Mayek[] = {
     
    2855833525}; /* CR_In_Osmanya */
    2855933526
     33527/* 'In_Osage': Block */
     33528static const OnigCodePoint CR_In_Osage[] = {
     33529        1,
     33530        0x104b0, 0x104ff,
     33531}; /* CR_In_Osage */
     33532
    2856033533/* 'In_Elbasan': Block */
    2856133534static const OnigCodePoint CR_In_Elbasan[] = {
     
    2859733570}; /* CR_In_Nabataean */
    2859833571
     33572/* 'In_Hatran': Block */
     33573static const OnigCodePoint CR_In_Hatran[] = {
     33574        1,
     33575        0x108e0, 0x108ff,
     33576}; /* CR_In_Hatran */
     33577
    2859933578/* 'In_Phoenician': Block */
    2860033579static const OnigCodePoint CR_In_Phoenician[] = {
     
    2866633645}; /* CR_In_Old_Turkic */
    2866733646
     33647/* 'In_Old_Hungarian': Block */
     33648static const OnigCodePoint CR_In_Old_Hungarian[] = {
     33649        1,
     33650        0x10c80, 0x10cff,
     33651}; /* CR_In_Old_Hungarian */
     33652
    2866833653/* 'In_Rumi_Numeral_Symbols': Block */
    2866933654static const OnigCodePoint CR_In_Rumi_Numeral_Symbols[] = {
     
    2872033705}; /* CR_In_Khojki */
    2872133706
     33707/* 'In_Multani': Block */
     33708static const OnigCodePoint CR_In_Multani[] = {
     33709        1,
     33710        0x11280, 0x112af,
     33711}; /* CR_In_Multani */
     33712
    2872233713/* 'In_Khudawadi': Block */
    2872333714static const OnigCodePoint CR_In_Khudawadi[] = {
     
    2873233723}; /* CR_In_Grantha */
    2873333724
     33725/* 'In_Newa': Block */
     33726static const OnigCodePoint CR_In_Newa[] = {
     33727        1,
     33728        0x11400, 0x1147f,
     33729}; /* CR_In_Newa */
     33730
    2873433731/* 'In_Tirhuta': Block */
    2873533732static const OnigCodePoint CR_In_Tirhuta[] = {
     
    2875033747}; /* CR_In_Modi */
    2875133748
     33749/* 'In_Mongolian_Supplement': Block */
     33750static const OnigCodePoint CR_In_Mongolian_Supplement[] = {
     33751        1,
     33752        0x11660, 0x1167f,
     33753}; /* CR_In_Mongolian_Supplement */
     33754
    2875233755/* 'In_Takri': Block */
    2875333756static const OnigCodePoint CR_In_Takri[] = {
     
    2875633759}; /* CR_In_Takri */
    2875733760
     33761/* 'In_Ahom': Block */
     33762static const OnigCodePoint CR_In_Ahom[] = {
     33763        1,
     33764        0x11700, 0x1173f,
     33765}; /* CR_In_Ahom */
     33766
    2875833767/* 'In_Warang_Citi': Block */
    2875933768static const OnigCodePoint CR_In_Warang_Citi[] = {
     
    2876233771}; /* CR_In_Warang_Citi */
    2876333772
     33773/* 'In_Zanabazar_Square': Block */
     33774static const OnigCodePoint CR_In_Zanabazar_Square[] = {
     33775        1,
     33776        0x11a00, 0x11a4f,
     33777}; /* CR_In_Zanabazar_Square */
     33778
     33779/* 'In_Soyombo': Block */
     33780static const OnigCodePoint CR_In_Soyombo[] = {
     33781        1,
     33782        0x11a50, 0x11aaf,
     33783}; /* CR_In_Soyombo */
     33784
    2876433785/* 'In_Pau_Cin_Hau': Block */
    2876533786static const OnigCodePoint CR_In_Pau_Cin_Hau[] = {
     
    2876833789}; /* CR_In_Pau_Cin_Hau */
    2876933790
     33791/* 'In_Bhaiksuki': Block */
     33792static const OnigCodePoint CR_In_Bhaiksuki[] = {
     33793        1,
     33794        0x11c00, 0x11c6f,
     33795}; /* CR_In_Bhaiksuki */
     33796
     33797/* 'In_Marchen': Block */
     33798static const OnigCodePoint CR_In_Marchen[] = {
     33799        1,
     33800        0x11c70, 0x11cbf,
     33801}; /* CR_In_Marchen */
     33802
     33803/* 'In_Masaram_Gondi': Block */
     33804static const OnigCodePoint CR_In_Masaram_Gondi[] = {
     33805        1,
     33806        0x11d00, 0x11d5f,
     33807}; /* CR_In_Masaram_Gondi */
     33808
    2877033809/* 'In_Cuneiform': Block */
    2877133810static const OnigCodePoint CR_In_Cuneiform[] = {
     
    2878033819}; /* CR_In_Cuneiform_Numbers_and_Punctuation */
    2878133820
     33821/* 'In_Early_Dynastic_Cuneiform': Block */
     33822static const OnigCodePoint CR_In_Early_Dynastic_Cuneiform[] = {
     33823        1,
     33824        0x12480, 0x1254f,
     33825}; /* CR_In_Early_Dynastic_Cuneiform */
     33826
    2878233827/* 'In_Egyptian_Hieroglyphs': Block */
    2878333828static const OnigCodePoint CR_In_Egyptian_Hieroglyphs[] = {
     
    2878633831}; /* CR_In_Egyptian_Hieroglyphs */
    2878733832
     33833/* 'In_Anatolian_Hieroglyphs': Block */
     33834static const OnigCodePoint CR_In_Anatolian_Hieroglyphs[] = {
     33835        1,
     33836        0x14400, 0x1467f,
     33837}; /* CR_In_Anatolian_Hieroglyphs */
     33838
    2878833839/* 'In_Bamum_Supplement': Block */
    2878933840static const OnigCodePoint CR_In_Bamum_Supplement[] = {
     
    2881633867}; /* CR_In_Miao */
    2881733868
     33869/* 'In_Ideographic_Symbols_and_Punctuation': Block */
     33870static const OnigCodePoint CR_In_Ideographic_Symbols_and_Punctuation[] = {
     33871        1,
     33872        0x16fe0, 0x16fff,
     33873}; /* CR_In_Ideographic_Symbols_and_Punctuation */
     33874
     33875/* 'In_Tangut': Block */
     33876static const OnigCodePoint CR_In_Tangut[] = {
     33877        1,
     33878        0x17000, 0x187ff,
     33879}; /* CR_In_Tangut */
     33880
     33881/* 'In_Tangut_Components': Block */
     33882static const OnigCodePoint CR_In_Tangut_Components[] = {
     33883        1,
     33884        0x18800, 0x18aff,
     33885}; /* CR_In_Tangut_Components */
     33886
    2881833887/* 'In_Kana_Supplement': Block */
    2881933888static const OnigCodePoint CR_In_Kana_Supplement[] = {
     
    2882233891}; /* CR_In_Kana_Supplement */
    2882333892
     33893/* 'In_Kana_Extended_A': Block */
     33894static const OnigCodePoint CR_In_Kana_Extended_A[] = {
     33895        1,
     33896        0x1b100, 0x1b12f,
     33897}; /* CR_In_Kana_Extended_A */
     33898
     33899/* 'In_Nushu': Block */
     33900static const OnigCodePoint CR_In_Nushu[] = {
     33901        1,
     33902        0x1b170, 0x1b2ff,
     33903}; /* CR_In_Nushu */
     33904
    2882433905/* 'In_Duployan': Block */
    2882533906static const OnigCodePoint CR_In_Duployan[] = {
     
    2887033951}; /* CR_In_Mathematical_Alphanumeric_Symbols */
    2887133952
     33953/* 'In_Sutton_SignWriting': Block */
     33954static const OnigCodePoint CR_In_Sutton_SignWriting[] = {
     33955        1,
     33956        0x1d800, 0x1daaf,
     33957}; /* CR_In_Sutton_SignWriting */
     33958
     33959/* 'In_Glagolitic_Supplement': Block */
     33960static const OnigCodePoint CR_In_Glagolitic_Supplement[] = {
     33961        1,
     33962        0x1e000, 0x1e02f,
     33963}; /* CR_In_Glagolitic_Supplement */
     33964
    2887233965/* 'In_Mende_Kikakui': Block */
    2887333966static const OnigCodePoint CR_In_Mende_Kikakui[] = {
     
    2887633969}; /* CR_In_Mende_Kikakui */
    2887733970
     33971/* 'In_Adlam': Block */
     33972static const OnigCodePoint CR_In_Adlam[] = {
     33973        1,
     33974        0x1e900, 0x1e95f,
     33975}; /* CR_In_Adlam */
     33976
    2887833977/* 'In_Arabic_Mathematical_Alphabetic_Symbols': Block */
    2887933978static const OnigCodePoint CR_In_Arabic_Mathematical_Alphabetic_Symbols[] = {
     
    2895434053}; /* CR_In_Supplemental_Arrows_C */
    2895534054
     34055/* 'In_Supplemental_Symbols_and_Pictographs': Block */
     34056static const OnigCodePoint CR_In_Supplemental_Symbols_and_Pictographs[] = {
     34057        1,
     34058        0x1f900, 0x1f9ff,
     34059}; /* CR_In_Supplemental_Symbols_and_Pictographs */
     34060
    2895634061/* 'In_CJK_Unified_Ideographs_Extension_B': Block */
    2895734062static const OnigCodePoint CR_In_CJK_Unified_Ideographs_Extension_B[] = {
     
    2897234077}; /* CR_In_CJK_Unified_Ideographs_Extension_D */
    2897334078
     34079/* 'In_CJK_Unified_Ideographs_Extension_E': Block */
     34080static const OnigCodePoint CR_In_CJK_Unified_Ideographs_Extension_E[] = {
     34081        1,
     34082        0x2b820, 0x2ceaf,
     34083}; /* CR_In_CJK_Unified_Ideographs_Extension_E */
     34084
     34085/* 'In_CJK_Unified_Ideographs_Extension_F': Block */
     34086static const OnigCodePoint CR_In_CJK_Unified_Ideographs_Extension_F[] = {
     34087        1,
     34088        0x2ceb0, 0x2ebef,
     34089}; /* CR_In_CJK_Unified_Ideographs_Extension_F */
     34090
    2897434091/* 'In_CJK_Compatibility_Ideographs_Supplement': Block */
    2897534092static const OnigCodePoint CR_In_CJK_Compatibility_Ideographs_Supplement[] = {
     
    2900434121/* 'In_No_Block': Block */
    2900534122static const OnigCodePoint CR_In_No_Block[] = {
    29006         40,
    29007         0x0860, 0x089f,
    29008         0x1c80, 0x1cbf,
     34123        47,
     34124        0x0870, 0x089f,
     34125        0x1c90, 0x1cbf,
    2900934126        0x2fe0, 0x2fef,
    29010         0xab70, 0xabbf,
    2901134127        0x10200, 0x1027f,
    2901234128        0x103e0, 0x103ff,
    29013         0x104b0, 0x104ff,
    2901434129        0x10570, 0x105ff,
    2901534130        0x10780, 0x107ff,
    29016         0x108b0, 0x108ff,
     34131        0x108b0, 0x108df,
    2901734132        0x10940, 0x1097f,
    2901834133        0x10aa0, 0x10abf,
    2901934134        0x10bb0, 0x10bff,
    29020         0x10c50, 0x10e5f,
     34135        0x10c50, 0x10c7f,
     34136        0x10d00, 0x10e5f,
    2902134137        0x10e80, 0x10fff,
    29022         0x11250, 0x112af,
    29023         0x11380, 0x1147f,
     34138        0x11250, 0x1127f,
     34139        0x11380, 0x113ff,
    2902434140        0x114e0, 0x1157f,
    29025         0x11660, 0x1167f,
    29026         0x116d0, 0x1189f,
    29027         0x11900, 0x11abf,
    29028         0x11b00, 0x11fff,
    29029         0x12480, 0x12fff,
    29030         0x13430, 0x167ff,
     34141        0x116d0, 0x116ff,
     34142        0x11740, 0x1189f,
     34143        0x11900, 0x119ff,
     34144        0x11ab0, 0x11abf,
     34145        0x11b00, 0x11bff,
     34146        0x11cc0, 0x11cff,
     34147        0x11d60, 0x11fff,
     34148        0x12550, 0x12fff,
     34149        0x13430, 0x143ff,
     34150        0x14680, 0x167ff,
    2903134151        0x16a70, 0x16acf,
    2903234152        0x16b90, 0x16eff,
    29033         0x16fa0, 0x1afff,
    29034         0x1b100, 0x1bbff,
     34153        0x16fa0, 0x16fdf,
     34154        0x18b00, 0x1afff,
     34155        0x1b130, 0x1b16f,
     34156        0x1b300, 0x1bbff,
    2903534157        0x1bcb0, 0x1cfff,
    2903634158        0x1d250, 0x1d2ff,
    2903734159        0x1d380, 0x1d3ff,
    29038         0x1d800, 0x1e7ff,
    29039         0x1e8e0, 0x1edff,
     34160        0x1dab0, 0x1dfff,
     34161        0x1e030, 0x1e7ff,
     34162        0x1e8e0, 0x1e8ff,
     34163        0x1e960, 0x1edff,
    2904034164        0x1ef00, 0x1efff,
    29041         0x1f900, 0x1ffff,
     34165        0x1fa00, 0x1ffff,
    2904234166        0x2a6e0, 0x2a6ff,
    29043         0x2b820, 0x2f7ff,
     34167        0x2ebf0, 0x2f7ff,
    2904434168        0x2fa20, 0xdffff,
    2904534169        0xe0080, 0xe00ff,
    2904634170        0xe01f0, 0xeffff,
    2904734171}; /* CR_In_No_Block */
     34172
    2904834173#endif /* USE_UNICODE_PROPERTIES */
    29049 
    2905034174static const OnigCodePoint* const CodeRanges[] = {
    2905134175  CR_NEWLINE,
     
    2905734181  CR_Lower,
    2905834182  CR_Print,
    29059   CR_Punct,
     34183  CR_XPosixPunct,
    2906034184  CR_Space,
    2906134185  CR_Upper,
     
    2906434188  CR_Alnum,
    2906534189  CR_ASCII,
     34190  CR_Punct,
    2906634191#ifdef USE_UNICODE_PROPERTIES
    2906734192  CR_Any,
     
    2924934374  CR_Tirhuta,
    2925034375  CR_Warang_Citi,
     34376  CR_Ahom,
     34377  CR_Anatolian_Hieroglyphs,
     34378  CR_Hatran,
     34379  CR_Multani,
     34380  CR_Old_Hungarian,
     34381  CR_SignWriting,
     34382  CR_Adlam,
     34383  CR_Bhaiksuki,
     34384  CR_Marchen,
     34385  CR_Newa,
     34386  CR_Osage,
     34387  CR_Tangut,
     34388  CR_Masaram_Gondi,
     34389  CR_Nushu,
     34390  CR_Soyombo,
     34391  CR_Zanabazar_Square,
    2925134392  CR_White_Space,
    2925234393  CR_Bidi_Control,
     
    2927734418  CR_Other_ID_Start,
    2927834419  CR_Other_ID_Continue,
    29279   CR_STerm,
     34420  CR_Sentence_Terminal,
    2928034421  CR_Variation_Selector,
    2928134422  CR_Pattern_White_Space,
    2928234423  CR_Pattern_Syntax,
     34424  CR_Prepended_Concatenation_Mark,
     34425  CR_Regional_Indicator,
     34426  CR_Emoji,
     34427  CR_Emoji_Presentation,
     34428  CR_Emoji_Modifier,
     34429  CR_Emoji_Modifier_Base,
     34430  CR_Emoji_Component,
    2928334431  CR_Unknown,
    2928434432#ifdef USE_UNICODE_AGE_PROPERTIES
     
    2929934447  CR_Age_6_3,
    2930034448  CR_Age_7_0,
     34449  CR_Age_8_0,
     34450  CR_Age_9_0,
     34451  CR_Age_10_0,
    2930134452#endif /* USE_UNICODE_AGE_PROPERTIES */
     34453  CR_Grapheme_Cluster_Break_Prepend,
     34454  CR_Grapheme_Cluster_Break_CR,
     34455  CR_Grapheme_Cluster_Break_LF,
     34456  CR_Grapheme_Cluster_Break_Control,
     34457  CR_Grapheme_Cluster_Break_Extend,
     34458  CR_Grapheme_Cluster_Break_Regional_Indicator,
     34459  CR_Grapheme_Cluster_Break_SpacingMark,
     34460  CR_Grapheme_Cluster_Break_L,
     34461  CR_Grapheme_Cluster_Break_V,
     34462  CR_Grapheme_Cluster_Break_T,
     34463  CR_Grapheme_Cluster_Break_LV,
     34464  CR_Grapheme_Cluster_Break_LVT,
     34465  CR_Grapheme_Cluster_Break_E_Base,
     34466  CR_Grapheme_Cluster_Break_E_Modifier,
     34467  CR_Grapheme_Cluster_Break_ZWJ,
     34468  CR_Grapheme_Cluster_Break_Glue_After_Zwj,
     34469  CR_Grapheme_Cluster_Break_E_Base_GAZ,
    2930234470  CR_In_Basic_Latin,
    2930334471  CR_In_Latin_1_Supplement,
     
    2931934487  CR_In_Samaritan,
    2932034488  CR_In_Mandaic,
     34489  CR_In_Syriac_Supplement,
    2932134490  CR_In_Arabic_Extended_A,
    2932234491  CR_In_Devanagari,
     
    2936134530  CR_In_Lepcha,
    2936234531  CR_In_Ol_Chiki,
     34532  CR_In_Cyrillic_Extended_C,
    2936334533  CR_In_Sundanese_Supplement,
    2936434534  CR_In_Vedic_Extensions,
     
    2944134611  CR_In_Ethiopic_Extended_A,
    2944234612  CR_In_Latin_Extended_E,
     34613  CR_In_Cherokee_Supplement,
    2944334614  CR_In_Meetei_Mayek,
    2944434615  CR_In_Hangul_Syllables,
     
    2947634647  CR_In_Shavian,
    2947734648  CR_In_Osmanya,
     34649  CR_In_Osage,
    2947834650  CR_In_Elbasan,
    2947934651  CR_In_Caucasian_Albanian,
     
    2948334655  CR_In_Palmyrene,
    2948434656  CR_In_Nabataean,
     34657  CR_In_Hatran,
    2948534658  CR_In_Phoenician,
    2948634659  CR_In_Lydian,
     
    2949634669  CR_In_Psalter_Pahlavi,
    2949734670  CR_In_Old_Turkic,
     34671  CR_In_Old_Hungarian,
    2949834672  CR_In_Rumi_Numeral_Symbols,
    2949934673  CR_In_Brahmi,
     
    2950534679  CR_In_Sinhala_Archaic_Numbers,
    2950634680  CR_In_Khojki,
     34681  CR_In_Multani,
    2950734682  CR_In_Khudawadi,
    2950834683  CR_In_Grantha,
     34684  CR_In_Newa,
    2950934685  CR_In_Tirhuta,
    2951034686  CR_In_Siddham,
    2951134687  CR_In_Modi,
     34688  CR_In_Mongolian_Supplement,
    2951234689  CR_In_Takri,
     34690  CR_In_Ahom,
    2951334691  CR_In_Warang_Citi,
     34692  CR_In_Zanabazar_Square,
     34693  CR_In_Soyombo,
    2951434694  CR_In_Pau_Cin_Hau,
     34695  CR_In_Bhaiksuki,
     34696  CR_In_Marchen,
     34697  CR_In_Masaram_Gondi,
    2951534698  CR_In_Cuneiform,
    2951634699  CR_In_Cuneiform_Numbers_and_Punctuation,
     34700  CR_In_Early_Dynastic_Cuneiform,
    2951734701  CR_In_Egyptian_Hieroglyphs,
     34702  CR_In_Anatolian_Hieroglyphs,
    2951834703  CR_In_Bamum_Supplement,
    2951934704  CR_In_Mro,
     
    2952134706  CR_In_Pahawh_Hmong,
    2952234707  CR_In_Miao,
     34708  CR_In_Ideographic_Symbols_and_Punctuation,
     34709  CR_In_Tangut,
     34710  CR_In_Tangut_Components,
    2952334711  CR_In_Kana_Supplement,
     34712  CR_In_Kana_Extended_A,
     34713  CR_In_Nushu,
    2952434714  CR_In_Duployan,
    2952534715  CR_In_Shorthand_Format_Controls,
     
    2953034720  CR_In_Counting_Rod_Numerals,
    2953134721  CR_In_Mathematical_Alphanumeric_Symbols,
     34722  CR_In_Sutton_SignWriting,
     34723  CR_In_Glagolitic_Supplement,
    2953234724  CR_In_Mende_Kikakui,
     34725  CR_In_Adlam,
    2953334726  CR_In_Arabic_Mathematical_Alphabetic_Symbols,
    2953434727  CR_In_Mahjong_Tiles,
     
    2954434737  CR_In_Geometric_Shapes_Extended,
    2954534738  CR_In_Supplemental_Arrows_C,
     34739  CR_In_Supplemental_Symbols_and_Pictographs,
    2954634740  CR_In_CJK_Unified_Ideographs_Extension_B,
    2954734741  CR_In_CJK_Unified_Ideographs_Extension_C,
    2954834742  CR_In_CJK_Unified_Ideographs_Extension_D,
     34743  CR_In_CJK_Unified_Ideographs_Extension_E,
     34744  CR_In_CJK_Unified_Ideographs_Extension_F,
    2954934745  CR_In_CJK_Compatibility_Ideographs_Supplement,
    2955034746  CR_In_Tags,
     
    2955634752};
    2955734753struct uniname2ctype_struct {
    29558   int name, ctype;
     34754  short name;
     34755  unsigned short ctype;
    2955934756};
     34757#define uniname2ctype_offset(str) offsetof(struct uniname2ctype_pool_t, uniname2ctype_pool_##str)
    2956034758
    2956134759static const struct uniname2ctype_struct *uniname2ctype_p(const char *, unsigned int);
    2956234760
    2956334761#ifndef USE_UNICODE_PROPERTIES
    29564 #define TOTAL_KEYWORDS 14
     34762#define TOTAL_KEYWORDS 15
    2956534763#define MIN_WORD_LENGTH 4
    29566 #define MAX_WORD_LENGTH 6
     34764#define MAX_WORD_LENGTH 11
    2956734765#define MIN_HASH_VALUE 6
    29568 #define MAX_HASH_VALUE 19
    29569 /* maximum key range = 14, duplicates = 0 */
     34766#define MAX_HASH_VALUE 20
     34767/* maximum key range = 15, duplicates = 0 */
    2957034768#else /* USE_UNICODE_PROPERTIES */
    2957134769#ifndef USE_UNICODE_AGE_PROPERTIES
    29572 #define TOTAL_KEYWORDS 689
     34770#define TOTAL_KEYWORDS 775
    2957334771#else /* USE_UNICODE_AGE_PROPERTIES */
    29574 #define TOTAL_KEYWORDS 705
     34772#define TOTAL_KEYWORDS 794
    2957534773#endif /* USE_UNICODE_AGE_PROPERTIES */
    2957634774#define MIN_WORD_LENGTH 1
    2957734775#define MAX_WORD_LENGTH 44
    29578 #define MIN_HASH_VALUE 3
    29579 #define MAX_HASH_VALUE 4322
    29580 /* maximum key range = 4320, duplicates = 0 */
     34776#define MIN_HASH_VALUE 10
     34777#define MAX_HASH_VALUE 6145
     34778/* maximum key range = 6136, duplicates = 0 */
    2958134779#endif /* USE_UNICODE_PROPERTIES */
    2958234780
     
    2960034798    {
    2960134799#ifndef USE_UNICODE_PROPERTIES
    29602       20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
    29603       20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
    29604       20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
    29605       20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
    29606       20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
    29607       20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
    29608       20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
    29609       20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
    29610       20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
    29611       20, 20, 20, 20, 20, 20, 20,  3, 11,  5,
    29612        4, 20, 20,  9, 20,  1, 20, 20, 10, 20,
    29613        2, 20,  1, 20,  1,  7,  4,  6, 20,  1,
    29614        4, 20, 20, 20, 20, 20, 20, 20
     34800      21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
     34801      21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
     34802      21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
     34803      21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
     34804      21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
     34805      21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
     34806      21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
     34807      21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
     34808      21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
     34809      21, 21, 21, 21, 21, 21, 21,  3, 12,  5,
     34810       4, 21, 21, 10, 21,  1, 21, 21, 11, 21,
     34811       2,  1,  1, 21,  1,  7,  4,  6, 21,  1,
     34812       4, 21, 21, 21, 21, 21, 21, 21
    2961534813#else /* USE_UNICODE_PROPERTIES */
    29616       4323, 4323, 4323, 4323, 4323, 4323, 4323, 4323, 4323, 4323,
    29617       4323, 4323, 4323, 4323, 4323, 4323, 4323, 4323, 4323, 4323,
    29618       4323, 4323, 4323, 4323, 4323, 4323, 4323, 4323, 4323, 4323,
    29619       4323, 4323, 4323, 4323, 4323, 4323, 4323, 4323, 4323, 4323,
     34814      6146, 6146, 6146, 6146, 6146, 6146, 6146, 6146, 6146, 6146,
     34815      6146, 6146, 6146, 6146, 6146, 6146, 6146, 6146, 6146, 6146,
     34816      6146, 6146, 6146, 6146, 6146, 6146, 6146, 6146, 6146, 6146,
     34817      6146, 6146, 6146, 6146, 6146, 6146, 6146, 6146, 6146, 6146,
    2962034818#ifndef USE_UNICODE_AGE_PROPERTIES
    29621       4323, 4323, 4323, 4323, 4323, 4323, 4323, 4323, 4323, 4323,
    29622       4323, 4323, 4323, 4323, 4323, 4323, 4323, 4323, 4323, 4323,
     34819      6146, 6146, 6146, 6146, 6146, 6146, 6146, 6146, 6146, 6146,
     34820      6146, 6146, 6146, 6146, 6146, 6146, 6146, 6146, 6146, 6146,
    2962334821#else /* USE_UNICODE_AGE_PROPERTIES */
    29624       4323, 4323, 4323, 4323, 4323, 4323,    1, 4323,   12,    1,
    29625          2,    9,   18,   11,    6,   10, 4323, 4323, 4323, 4323,
     34822      6146, 6146, 6146, 6146, 6146, 6146,    1, 6146,    2,    1,
     34823         5,   27,    2,   15,    7,   11,    9,    8, 6146, 6146,
    2962634824#endif /* USE_UNICODE_AGE_PROPERTIES */
    29627       4323, 4323, 4323, 4323, 4323, 4323, 4323, 4323, 4323, 4323,
    29628       4323, 4323, 4323, 4323, 4323, 4323, 4323, 4323, 4323, 4323,
    29629       4323, 4323, 4323, 4323, 4323, 4323, 4323, 4323, 4323, 4323,
    29630       4323, 4323, 4323, 4323, 4323, 4323, 4323,   13,  931,    6,
    29631        382,   25,  311,  891,  277,    4,  272, 1436,  120,    7,
    29632          1,  303,  456,    1,  232,   32,   65,  732, 1411,  163,
    29633        883, 1255,    8, 4323, 4323, 4323, 4323, 4323
     34825      6146, 6146, 6146, 6146, 6146, 6146, 6146, 6146, 6146, 6146,
     34826      6146, 6146, 6146, 6146, 6146, 6146, 6146, 6146, 6146, 6146,
     34827      6146, 6146, 6146, 6146, 6146, 6146, 6146, 6146, 6146, 6146,
     34828      6146, 6146, 6146, 6146, 6146, 6146, 6146,    5, 1058,  101,
     34829       332,    9,  777, 1271,  842,    3, 1142,   17,  491,   70,
     34830         1,   15,  741, 1115,   39,  174,  260,  566, 1127, 1473,
     34831       502, 1554,   13,    2,   12, 6146, 6146, 6146, 6146, 6146
    2963434832#endif /* USE_UNICODE_PROPERTIES */
    2963534833    };
     
    2966934867      /*FALLTHROUGH*/
    2967034868      case 1:
    29671         hval += asso_values[(unsigned char)str[0]];
     34869        hval += asso_values[(unsigned char)str[0]+2];
    2967234870        break;
    2967334871    }
     
    2968934887    char uniname2ctype_pool_str14[sizeof("cntrl")];
    2969034888    char uniname2ctype_pool_str15[sizeof("space")];
    29691     char uniname2ctype_pool_str16[sizeof("lower")];
    29692     char uniname2ctype_pool_str17[sizeof("graph")];
    29693     char uniname2ctype_pool_str18[sizeof("digit")];
    29694     char uniname2ctype_pool_str19[sizeof("blank")];
     34889    char uniname2ctype_pool_str16[sizeof("xposixpunct")];
     34890    char uniname2ctype_pool_str17[sizeof("lower")];
     34891    char uniname2ctype_pool_str18[sizeof("graph")];
     34892    char uniname2ctype_pool_str19[sizeof("digit")];
     34893    char uniname2ctype_pool_str20[sizeof("blank")];
    2969534894#else /* USE_UNICODE_PROPERTIES */
    29696     char uniname2ctype_pool_str3[sizeof("n")];
    29697     char uniname2ctype_pool_str10[sizeof("cn")];
    29698     char uniname2ctype_pool_str11[sizeof("mn")];
    29699     char uniname2ctype_pool_str13[sizeof("c")];
    29700     char uniname2ctype_pool_str15[sizeof("m")];
    29701     char uniname2ctype_pool_str16[sizeof("ci")];
    29702     char uniname2ctype_pool_str17[sizeof("z")];
    29703     char uniname2ctype_pool_str20[sizeof("cc")];
    29704     char uniname2ctype_pool_str21[sizeof("mc")];
    29705     char uniname2ctype_pool_str29[sizeof("mani")];
    29706     char uniname2ctype_pool_str31[sizeof("inmanichaean")];
    29707     char uniname2ctype_pool_str35[sizeof("qaai")];
    29708     char uniname2ctype_pool_str36[sizeof("zzzz")];
    29709     char uniname2ctype_pool_str37[sizeof("qaac")];
    29710     char uniname2ctype_pool_str44[sizeof("incham")];
    29711     char uniname2ctype_pool_str46[sizeof("sc")];
    29712     char uniname2ctype_pool_str48[sizeof("sm")];
    29713     char uniname2ctype_pool_str51[sizeof("mandaic")];
    29714     char uniname2ctype_pool_str55[sizeof("incuneiform")];
    29715     char uniname2ctype_pool_str56[sizeof("cans")];
    29716     char uniname2ctype_pool_str59[sizeof("me")];
    29717     char uniname2ctype_pool_str61[sizeof("inarmenian")];
    29718     char uniname2ctype_pool_str64[sizeof("ascii")];
    29719     char uniname2ctype_pool_str65[sizeof("s")];
    29720     char uniname2ctype_pool_str69[sizeof("insamaritan")];
    29721     char uniname2ctype_pool_str72[sizeof("cs")];
    29722     char uniname2ctype_pool_str74[sizeof("zs")];
    29723     char uniname2ctype_pool_str85[sizeof("inavestan")];
    29724     char uniname2ctype_pool_str92[sizeof("incommonindicnumberforms")];
    29725     char uniname2ctype_pool_str96[sizeof("incuneiformnumbersandpunctuation")];
    29726     char uniname2ctype_pool_str97[sizeof("inthai")];
    29727     char uniname2ctype_pool_str98[sizeof("inipaextensions")];
    29728     char uniname2ctype_pool_str105[sizeof("mtei")];
    29729     char uniname2ctype_pool_str110[sizeof("inspecials")];
    29730     char uniname2ctype_pool_str114[sizeof("initialpunctuation")];
    29731     char uniname2ctype_pool_str115[sizeof("inancientsymbols")];
    29732     char uniname2ctype_pool_str117[sizeof("inthaana")];
    29733     char uniname2ctype_pool_str130[sizeof("inmiscellaneousmathematicalsymbolsa")];
    29734     char uniname2ctype_pool_str134[sizeof("lc")];
    29735     char uniname2ctype_pool_str135[sizeof("inmusicalsymbols")];
    29736     char uniname2ctype_pool_str136[sizeof("lm")];
    29737     char uniname2ctype_pool_str137[sizeof("taile")];
    29738     char uniname2ctype_pool_str141[sizeof("sterm")];
    29739     char uniname2ctype_pool_str142[sizeof("lina")];
    29740     char uniname2ctype_pool_str144[sizeof("inlycian")];
    29741     char uniname2ctype_pool_str147[sizeof("inmyanmarextendeda")];
    29742     char uniname2ctype_pool_str151[sizeof("lana")];
    29743     char uniname2ctype_pool_str153[sizeof("alnum")];
    29744     char uniname2ctype_pool_str155[sizeof("intaitham")];
    29745     char uniname2ctype_pool_str157[sizeof("incontrolpictures")];
    29746     char uniname2ctype_pool_str161[sizeof("inmiscellaneoussymbols")];
    29747     char uniname2ctype_pool_str163[sizeof("inmalayalam")];
    29748     char uniname2ctype_pool_str166[sizeof("intransportandmapsymbols")];
    29749     char uniname2ctype_pool_str170[sizeof("inmiscellaneoussymbolsandarrows")];
    29750     char uniname2ctype_pool_str173[sizeof("inlineara")];
    29751     char uniname2ctype_pool_str175[sizeof("inmiscellaneoussymbolsandpictographs")];
    29752     char uniname2ctype_pool_str183[sizeof("taiviet")];
    29753     char uniname2ctype_pool_str186[sizeof("cwcm")];
    29754     char uniname2ctype_pool_str190[sizeof("sinhala")];
    29755     char uniname2ctype_pool_str203[sizeof("latn")];
    29756     char uniname2ctype_pool_str205[sizeof("latin")];
    29757     char uniname2ctype_pool_str206[sizeof("ital")];
    29758     char uniname2ctype_pool_str208[sizeof("intamil")];
    29759     char uniname2ctype_pool_str209[sizeof("taml")];
    29760     char uniname2ctype_pool_str223[sizeof("inlatinextendedc")];
    29761     char uniname2ctype_pool_str226[sizeof("intaile")];
    29762     char uniname2ctype_pool_str227[sizeof("tale")];
    29763     char uniname2ctype_pool_str237[sizeof("inlatinextendeda")];
    29764     char uniname2ctype_pool_str239[sizeof("inlinearbideograms")];
    29765     char uniname2ctype_pool_str240[sizeof("newtailue")];
    29766     char uniname2ctype_pool_str241[sizeof("l")];
    29767     char uniname2ctype_pool_str243[sizeof("nl")];
    29768     char uniname2ctype_pool_str247[sizeof("inmeeteimayekextensions")];
    29769     char uniname2ctype_pool_str250[sizeof("zl")];
    29770     char uniname2ctype_pool_str252[sizeof("lt")];
    29771     char uniname2ctype_pool_str255[sizeof("inrunic")];
    29772     char uniname2ctype_pool_str256[sizeof("incarian")];
    29773     char uniname2ctype_pool_str257[sizeof("armn")];
    29774     char uniname2ctype_pool_str259[sizeof("cari")];
    29775     char uniname2ctype_pool_str260[sizeof("armi")];
    29776     char uniname2ctype_pool_str261[sizeof("inlatinextendede")];
    29777     char uniname2ctype_pool_str263[sizeof("incyrillic")];
    29778     char uniname2ctype_pool_str266[sizeof("armenian")];
    29779     char uniname2ctype_pool_str267[sizeof("inmyanmar")];
    29780     char uniname2ctype_pool_str270[sizeof("innewtailue")];
    29781     char uniname2ctype_pool_str272[sizeof("carian")];
    29782     char uniname2ctype_pool_str274[sizeof("merc")];
    29783     char uniname2ctype_pool_str280[sizeof("arabic")];
    29784     char uniname2ctype_pool_str284[sizeof("inmiscellaneoustechnical")];
    29785     char uniname2ctype_pool_str287[sizeof("insyriac")];
    29786     char uniname2ctype_pool_str288[sizeof("samr")];
    29787     char uniname2ctype_pool_str294[sizeof("zinh")];
    29788     char uniname2ctype_pool_str295[sizeof("han")];
    29789     char uniname2ctype_pool_str298[sizeof("samaritan")];
    29790     char uniname2ctype_pool_str299[sizeof("hani")];
    29791     char uniname2ctype_pool_str302[sizeof("cwt")];
    29792     char uniname2ctype_pool_str303[sizeof("incherokee")];
    29793     char uniname2ctype_pool_str304[sizeof("insharada")];
    29794     char uniname2ctype_pool_str307[sizeof("cham")];
    29795     char uniname2ctype_pool_str315[sizeof("manichaean")];
    29796     char uniname2ctype_pool_str316[sizeof("inmahajani")];
    29797     char uniname2ctype_pool_str317[sizeof("cntrl")];
    29798     char uniname2ctype_pool_str318[sizeof("sinh")];
    29799     char uniname2ctype_pool_str320[sizeof("inruminumeralsymbols")];
    29800     char uniname2ctype_pool_str327[sizeof("inethiopic")];
    29801     char uniname2ctype_pool_str330[sizeof("tamil")];
    29802     char uniname2ctype_pool_str331[sizeof("miao")];
    29803     char uniname2ctype_pool_str332[sizeof("inenclosedalphanumerics")];
    29804     char uniname2ctype_pool_str333[sizeof("term")];
    29805     char uniname2ctype_pool_str335[sizeof("chakma")];
    29806     char uniname2ctype_pool_str337[sizeof("insinhala")];
    29807     char uniname2ctype_pool_str347[sizeof("shavian")];
    29808     char uniname2ctype_pool_str350[sizeof("inosmanya")];
    29809     char uniname2ctype_pool_str353[sizeof("inlatinextendedadditional")];
    29810     char uniname2ctype_pool_str359[sizeof("osma")];
    29811     char uniname2ctype_pool_str362[sizeof("ll")];
    29812     char uniname2ctype_pool_str363[sizeof("thai")];
    29813     char uniname2ctype_pool_str366[sizeof("math")];
    29814     char uniname2ctype_pool_str372[sizeof("thaa")];
    29815     char uniname2ctype_pool_str374[sizeof("inenclosedalphanumericsupplement")];
    29816     char uniname2ctype_pool_str375[sizeof("ethi")];
    29817     char uniname2ctype_pool_str376[sizeof("connectorpunctuation")];
    29818     char uniname2ctype_pool_str380[sizeof("inlowsurrogates")];
    29819     char uniname2ctype_pool_str382[sizeof("insinhalaarchaicnumbers")];
    29820     char uniname2ctype_pool_str386[sizeof("taitham")];
    29821     char uniname2ctype_pool_str388[sizeof("thaana")];
    29822     char uniname2ctype_pool_str390[sizeof("lineara")];
    29823     char uniname2ctype_pool_str392[sizeof("di")];
    29824     char uniname2ctype_pool_str401[sizeof("idc")];
    29825     char uniname2ctype_pool_str405[sizeof("meroiticcursive")];
    29826     char uniname2ctype_pool_str407[sizeof("mand")];
    29827     char uniname2ctype_pool_str408[sizeof("inmodi")];
    29828     char uniname2ctype_pool_str410[sizeof("inmandaic")];
    29829     char uniname2ctype_pool_str412[sizeof("cwl")];
    29830     char uniname2ctype_pool_str414[sizeof("asciihexdigit")];
    29831     char uniname2ctype_pool_str415[sizeof("dia")];
    29832     char uniname2ctype_pool_str418[sizeof("terminalpunctuation")];
    29833     char uniname2ctype_pool_str419[sizeof("mend")];
    29834     char uniname2ctype_pool_str423[sizeof("sind")];
    29835     char uniname2ctype_pool_str425[sizeof("wara")];
    29836     char uniname2ctype_pool_str433[sizeof("inwarangciti")];
    29837     char uniname2ctype_pool_str439[sizeof("inideographicdescriptioncharacters")];
    29838     char uniname2ctype_pool_str441[sizeof("inemoticons")];
    29839     char uniname2ctype_pool_str453[sizeof("ids")];
    29840     char uniname2ctype_pool_str456[sizeof("insundanese")];
    29841     char uniname2ctype_pool_str466[sizeof("pi")];
    29842     char uniname2ctype_pool_str468[sizeof("indominotiles")];
    29843     char uniname2ctype_pool_str470[sizeof("pc")];
    29844     char uniname2ctype_pool_str476[sizeof("loe")];
    29845     char uniname2ctype_pool_str477[sizeof("titlecaseletter")];
    29846     char uniname2ctype_pool_str485[sizeof("inopticalcharacterrecognition")];
    29847     char uniname2ctype_pool_str487[sizeof("idst")];
    29848     char uniname2ctype_pool_str489[sizeof("shaw")];
    29849     char uniname2ctype_pool_str490[sizeof("cwcf")];
    29850     char uniname2ctype_pool_str493[sizeof("idcontinue")];
    29851     char uniname2ctype_pool_str502[sizeof("inphaistosdisc")];
    29852     char uniname2ctype_pool_str508[sizeof("pe")];
    29853     char uniname2ctype_pool_str518[sizeof("indeseret")];
    29854     char uniname2ctype_pool_str519[sizeof("inspacingmodifierletters")];
    29855     char uniname2ctype_pool_str520[sizeof("inlydian")];
    29856     char uniname2ctype_pool_str522[sizeof("ps")];
    29857     char uniname2ctype_pool_str530[sizeof("hira")];
    29858     char uniname2ctype_pool_str536[sizeof("whitespace")];
    29859     char uniname2ctype_pool_str540[sizeof("inscriptionalparthian")];
    29860     char uniname2ctype_pool_str544[sizeof("cher")];
    29861     char uniname2ctype_pool_str545[sizeof("inmathematicalalphanumericsymbols")];
    29862     char uniname2ctype_pool_str546[sizeof("incoptic")];
    29863     char uniname2ctype_pool_str550[sizeof("inhiragana")];
    29864     char uniname2ctype_pool_str554[sizeof("inenclosedcjklettersandmonths")];
    29865     char uniname2ctype_pool_str556[sizeof("space")];
    29866     char uniname2ctype_pool_str570[sizeof("oriya")];
    29867     char uniname2ctype_pool_str571[sizeof("mero")];
    29868     char uniname2ctype_pool_str573[sizeof("mahj")];
    29869     char uniname2ctype_pool_str582[sizeof("tirh")];
    29870     char uniname2ctype_pool_str584[sizeof("sora")];
    29871     char uniname2ctype_pool_str587[sizeof("inscriptionalpahlavi")];
    29872     char uniname2ctype_pool_str593[sizeof("inarrows")];
    29873     char uniname2ctype_pool_str594[sizeof("mahajani")];
    29874     char uniname2ctype_pool_str596[sizeof("joinc")];
    29875     char uniname2ctype_pool_str597[sizeof("incopticepactnumbers")];
    29876     char uniname2ctype_pool_str598[sizeof("hano")];
    29877     char uniname2ctype_pool_str600[sizeof("palm")];
    29878     char uniname2ctype_pool_str601[sizeof("intirhuta")];
    29879     char uniname2ctype_pool_str603[sizeof("patws")];
    29880     char uniname2ctype_pool_str604[sizeof("inolchiki")];
    29881     char uniname2ctype_pool_str608[sizeof("inlepcha")];
    29882     char uniname2ctype_pool_str609[sizeof("no")];
    29883     char uniname2ctype_pool_str611[sizeof("lepc")];
    29884     char uniname2ctype_pool_str612[sizeof("inogham")];
    29885     char uniname2ctype_pool_str614[sizeof("co")];
    29886     char uniname2ctype_pool_str617[sizeof("innko")];
    29887     char uniname2ctype_pool_str620[sizeof("alpha")];
    29888     char uniname2ctype_pool_str622[sizeof("psalterpahlavi")];
    29889     char uniname2ctype_pool_str623[sizeof("inmro")];
    29890     char uniname2ctype_pool_str624[sizeof("inpalmyrene")];
    29891     char uniname2ctype_pool_str627[sizeof("common")];
    29892     char uniname2ctype_pool_str630[sizeof("cf")];
    29893     char uniname2ctype_pool_str637[sizeof("inmiao")];
    29894     char uniname2ctype_pool_str640[sizeof("so")];
    29895     char uniname2ctype_pool_str650[sizeof("diacritic")];
    29896     char uniname2ctype_pool_str658[sizeof("insundanesesupplement")];
    29897     char uniname2ctype_pool_str672[sizeof("intifinagh")];
    29898     char uniname2ctype_pool_str679[sizeof("tifinagh")];
    29899     char uniname2ctype_pool_str696[sizeof("odi")];
    29900     char uniname2ctype_pool_str699[sizeof("oidc")];
    29901     char uniname2ctype_pool_str700[sizeof("modi")];
    29902     char uniname2ctype_pool_str703[sizeof("decimalnumber")];
    29903     char uniname2ctype_pool_str705[sizeof("letter")];
    29904     char uniname2ctype_pool_str708[sizeof("dash")];
    29905     char uniname2ctype_pool_str709[sizeof("insylotinagri")];
    29906     char uniname2ctype_pool_str711[sizeof("inolditalic")];
    29907     char uniname2ctype_pool_str713[sizeof("wspace")];
    29908     char uniname2ctype_pool_str715[sizeof("dsrt")];
    29909     char uniname2ctype_pool_str718[sizeof("ideo")];
    29910     char uniname2ctype_pool_str722[sizeof("siddham")];
    29911     char uniname2ctype_pool_str724[sizeof("perm")];
    29912     char uniname2ctype_pool_str725[sizeof("oids")];
    29913     char uniname2ctype_pool_str727[sizeof("inmahjongtiles")];
    29914     char uniname2ctype_pool_str728[sizeof("lo")];
    29915     char uniname2ctype_pool_str730[sizeof("lineseparator")];
    29916     char uniname2ctype_pool_str731[sizeof("imperialaramaic")];
    29917     char uniname2ctype_pool_str735[sizeof("idstart")];
    29918     char uniname2ctype_pool_str736[sizeof("inlao")];
    29919     char uniname2ctype_pool_str737[sizeof("sharada")];
    29920     char uniname2ctype_pool_str742[sizeof("lao")];
    29921     char uniname2ctype_pool_str743[sizeof("laoo")];
    29922     char uniname2ctype_pool_str744[sizeof("mongolian")];
    29923     char uniname2ctype_pool_str745[sizeof("oalpha")];
    29924     char uniname2ctype_pool_str749[sizeof("inimperialaramaic")];
    29925     char uniname2ctype_pool_str753[sizeof("nchar")];
    29926     char uniname2ctype_pool_str758[sizeof("inlatin1supplement")];
    29927     char uniname2ctype_pool_str761[sizeof("prti")];
    29928     char uniname2ctype_pool_str763[sizeof("cprt")];
    29929     char uniname2ctype_pool_str767[sizeof("nd")];
    29930     char uniname2ctype_pool_str768[sizeof("deseret")];
    29931     char uniname2ctype_pool_str772[sizeof("inoldturkic")];
    29932     char uniname2ctype_pool_str773[sizeof("radical")];
    29933     char uniname2ctype_pool_str777[sizeof("canadianaboriginal")];
    29934     char uniname2ctype_pool_str779[sizeof("inmodifiertoneletters")];
    29935     char uniname2ctype_pool_str783[sizeof("incaucasianalbanian")];
    29936     char uniname2ctype_pool_str787[sizeof("coptic")];
    29937     char uniname2ctype_pool_str796[sizeof("casedletter")];
    29938     char uniname2ctype_pool_str798[sizeof("sd")];
    29939     char uniname2ctype_pool_str803[sizeof("inphoenician")];
    29940     char uniname2ctype_pool_str804[sizeof("sidd")];
    29941     char uniname2ctype_pool_str805[sizeof("privateuse")];
    29942     char uniname2ctype_pool_str813[sizeof("sundanese")];
    29943     char uniname2ctype_pool_str815[sizeof("inancientgreekmusicalnotation")];
    29944     char uniname2ctype_pool_str817[sizeof("insiddham")];
    29945     char uniname2ctype_pool_str820[sizeof("cased")];
    29946     char uniname2ctype_pool_str827[sizeof("print")];
    29947     char uniname2ctype_pool_str830[sizeof("ininscriptionalparthian")];
    29948     char uniname2ctype_pool_str832[sizeof("ininscriptionalpahlavi")];
    29949     char uniname2ctype_pool_str834[sizeof("copt")];
    29950     char uniname2ctype_pool_str838[sizeof("inancientgreeknumbers")];
    29951     char uniname2ctype_pool_str845[sizeof("saurashtra")];
    29952     char uniname2ctype_pool_str848[sizeof("mro")];
    29953     char uniname2ctype_pool_str849[sizeof("mroo")];
    29954     char uniname2ctype_pool_str850[sizeof("inalphabeticpresentationforms")];
    29955     char uniname2ctype_pool_str858[sizeof("lowercase")];
    29956     char uniname2ctype_pool_str861[sizeof("phli")];
    29957     char uniname2ctype_pool_str864[sizeof("patternwhitespace")];
    29958     char uniname2ctype_pool_str866[sizeof("inenclosedideographicsupplement")];
    29959     char uniname2ctype_pool_str869[sizeof("spaceseparator")];
    29960     char uniname2ctype_pool_str871[sizeof("inmathematicaloperators")];
    29961     char uniname2ctype_pool_str882[sizeof("omath")];
    29962     char uniname2ctype_pool_str892[sizeof("lisu")];
    29963     char uniname2ctype_pool_str895[sizeof("inpsalterpahlavi")];
    29964     char uniname2ctype_pool_str898[sizeof("olditalic")];
    29965     char uniname2ctype_pool_str905[sizeof("hanunoo")];
    29966     char uniname2ctype_pool_str909[sizeof("inherited")];
    29967     char uniname2ctype_pool_str910[sizeof("lepcha")];
    29968     char uniname2ctype_pool_str913[sizeof("p")];
    29969     char uniname2ctype_pool_str916[sizeof("inmongolian")];
    29970     char uniname2ctype_pool_str922[sizeof("zp")];
    29971     char uniname2ctype_pool_str923[sizeof("finalpunctuation")];
    29972     char uniname2ctype_pool_str925[sizeof("otheridcontinue")];
    29973     char uniname2ctype_pool_str927[sizeof("shrd")];
    29974     char uniname2ctype_pool_str932[sizeof("ingrantha")];
    29975     char uniname2ctype_pool_str934[sizeof("talu")];
    29976     char uniname2ctype_pool_str936[sizeof("otheralphabetic")];
    29977     char uniname2ctype_pool_str938[sizeof("noncharactercodepoint")];
     34895    char uniname2ctype_pool_str10[sizeof("yi")];
     34896    char uniname2ctype_pool_str13[sizeof("cn")];
     34897    char uniname2ctype_pool_str14[sizeof("lina")];
     34898    char uniname2ctype_pool_str15[sizeof("yiii")];
     34899    char uniname2ctype_pool_str16[sizeof("lana")];
     34900    char uniname2ctype_pool_str17[sizeof("ci")];
     34901    char uniname2ctype_pool_str19[sizeof("mn")];
     34902    char uniname2ctype_pool_str26[sizeof("z")];
     34903    char uniname2ctype_pool_str28[sizeof("mani")];
     34904    char uniname2ctype_pool_str33[sizeof("lo")];
     34905    char uniname2ctype_pool_str35[sizeof("me")];
     34906    char uniname2ctype_pool_str37[sizeof("loe")];
     34907    char uniname2ctype_pool_str39[sizeof("lao")];
     34908    char uniname2ctype_pool_str40[sizeof("laoo")];
     34909    char uniname2ctype_pool_str41[sizeof("co")];
     34910    char uniname2ctype_pool_str42[sizeof("miao")];
     34911    char uniname2ctype_pool_str47[sizeof("pi")];
     34912    char uniname2ctype_pool_str51[sizeof("inkannada")];
     34913    char uniname2ctype_pool_str52[sizeof("gran")];
     34914    char uniname2ctype_pool_str54[sizeof("innko")];
     34915    char uniname2ctype_pool_str55[sizeof("zzzz")];
     34916    char uniname2ctype_pool_str59[sizeof("pe")];
     34917    char uniname2ctype_pool_str60[sizeof("cari")];
     34918    char uniname2ctype_pool_str61[sizeof("lineara")];
     34919    char uniname2ctype_pool_str66[sizeof("carian")];
     34920    char uniname2ctype_pool_str69[sizeof("mendekikakui")];
     34921    char uniname2ctype_pool_str70[sizeof("geor")];
     34922    char uniname2ctype_pool_str71[sizeof("po")];
     34923    char uniname2ctype_pool_str72[sizeof("grek")];
     34924    char uniname2ctype_pool_str73[sizeof("meeteimayek")];
     34925    char uniname2ctype_pool_str80[sizeof("mark")];
     34926    char uniname2ctype_pool_str82[sizeof("mero")];
     34927    char uniname2ctype_pool_str85[sizeof("kana")];
     34928    char uniname2ctype_pool_str86[sizeof("m")];
     34929    char uniname2ctype_pool_str87[sizeof("mro")];
     34930    char uniname2ctype_pool_str88[sizeof("mroo")];
     34931    char uniname2ctype_pool_str90[sizeof("greek")];
     34932    char uniname2ctype_pool_str93[sizeof("gonm")];
     34933    char uniname2ctype_pool_str97[sizeof("inkharoshthi")];
     34934    char uniname2ctype_pool_str105[sizeof("cakm")];
     34935    char uniname2ctype_pool_str106[sizeof("inmanichaean")];
     34936    char uniname2ctype_pool_str111[sizeof("c")];
     34937    char uniname2ctype_pool_str113[sizeof("inarmenian")];
     34938    char uniname2ctype_pool_str117[sizeof("common")];
     34939    char uniname2ctype_pool_str122[sizeof("inosmanya")];
     34940    char uniname2ctype_pool_str123[sizeof("inmro")];
     34941    char uniname2ctype_pool_str129[sizeof("inmiao")];
     34942    char uniname2ctype_pool_str137[sizeof("mandaic")];
     34943    char uniname2ctype_pool_str142[sizeof("inmyanmar")];
     34944    char uniname2ctype_pool_str143[sizeof("lm")];
     34945    char uniname2ctype_pool_str150[sizeof("prependedconcatenationmark")];
     34946    char uniname2ctype_pool_str153[sizeof("inideographicsymbolsandpunctuation")];
     34947    char uniname2ctype_pool_str154[sizeof("inchakma")];
     34948    char uniname2ctype_pool_str160[sizeof("inkhmer")];
     34949    char uniname2ctype_pool_str161[sizeof("perm")];
     34950    char uniname2ctype_pool_str162[sizeof("connectorpunctuation")];
     34951    char uniname2ctype_pool_str164[sizeof("marc")];
     34952    char uniname2ctype_pool_str167[sizeof("combiningmark")];
     34953    char uniname2ctype_pool_str168[sizeof("merc")];
     34954    char uniname2ctype_pool_str169[sizeof("inrunic")];
     34955    char uniname2ctype_pool_str170[sizeof("incarian")];
     34956    char uniname2ctype_pool_str172[sizeof("incuneiformnumbersandpunctuation")];
     34957    char uniname2ctype_pool_str184[sizeof("inahom")];
     34958    char uniname2ctype_pool_str186[sizeof("incherokee")];
     34959    char uniname2ctype_pool_str191[sizeof("qaai")];
     34960    char uniname2ctype_pool_str193[sizeof("cans")];
     34961    char uniname2ctype_pool_str205[sizeof("lc")];
     34962    char uniname2ctype_pool_str210[sizeof("incuneiform")];
     34963    char uniname2ctype_pool_str213[sizeof("cc")];
     34964    char uniname2ctype_pool_str215[sizeof("armn")];
     34965    char uniname2ctype_pool_str216[sizeof("inavestan")];
     34966    char uniname2ctype_pool_str217[sizeof("armi")];
     34967    char uniname2ctype_pool_str219[sizeof("mc")];
     34968    char uniname2ctype_pool_str223[sizeof("armenian")];
     34969    char uniname2ctype_pool_str227[sizeof("inipaextensions")];
     34970    char uniname2ctype_pool_str238[sizeof("inmarchen")];
     34971    char uniname2ctype_pool_str243[sizeof("pc")];
     34972    char uniname2ctype_pool_str250[sizeof("insharada")];
     34973    char uniname2ctype_pool_str255[sizeof("lineseparator")];
     34974    char uniname2ctype_pool_str256[sizeof("masaramgondi")];
     34975    char uniname2ctype_pool_str259[sizeof("inarrows")];
     34976    char uniname2ctype_pool_str268[sizeof("ri")];
     34977    char uniname2ctype_pool_str270[sizeof("incham")];
     34978    char uniname2ctype_pool_str271[sizeof("latn")];
     34979    char uniname2ctype_pool_str272[sizeof("incyrillic")];
     34980    char uniname2ctype_pool_str273[sizeof("latin")];
     34981    char uniname2ctype_pool_str276[sizeof("inzanabazarsquare")];
     34982    char uniname2ctype_pool_str279[sizeof("insamaritan")];
     34983    char uniname2ctype_pool_str283[sizeof("pcm")];
     34984    char uniname2ctype_pool_str285[sizeof("inmasaramgondi")];
     34985    char uniname2ctype_pool_str288[sizeof("qmark")];
     34986    char uniname2ctype_pool_str289[sizeof("qaac")];
     34987    char uniname2ctype_pool_str291[sizeof("mtei")];
     34988    char uniname2ctype_pool_str295[sizeof("inthai")];
     34989    char uniname2ctype_pool_str300[sizeof("inscriptionalparthian")];
     34990    char uniname2ctype_pool_str301[sizeof("inthaana")];
     34991    char uniname2ctype_pool_str309[sizeof("inkaithi")];
     34992    char uniname2ctype_pool_str311[sizeof("initialpunctuation")];
     34993    char uniname2ctype_pool_str315[sizeof("inkatakana")];
     34994    char uniname2ctype_pool_str317[sizeof("inkhmersymbols")];
     34995    char uniname2ctype_pool_str343[sizeof("insyriac")];
     34996    char uniname2ctype_pool_str344[sizeof("intakri")];
     34997    char uniname2ctype_pool_str345[sizeof("prti")];
     34998    char uniname2ctype_pool_str356[sizeof("arabic")];
     34999    char uniname2ctype_pool_str357[sizeof("mand")];
     35000    char uniname2ctype_pool_str359[sizeof("cs")];
     35001    char uniname2ctype_pool_str361[sizeof("mend")];
     35002    char uniname2ctype_pool_str362[sizeof("zs")];
     35003    char uniname2ctype_pool_str363[sizeof("letter")];
     35004    char uniname2ctype_pool_str365[sizeof("privateuse")];
     35005    char uniname2ctype_pool_str369[sizeof("modi")];
     35006    char uniname2ctype_pool_str370[sizeof("katakana")];
     35007    char uniname2ctype_pool_str377[sizeof("ideo")];
     35008    char uniname2ctype_pool_str383[sizeof("brai")];
     35009    char uniname2ctype_pool_str384[sizeof("xidcontinue")];
     35010    char uniname2ctype_pool_str386[sizeof("inmyanmarextendeda")];
     35011    char uniname2ctype_pool_str387[sizeof("ascii")];
     35012    char uniname2ctype_pool_str389[sizeof("ps")];
     35013    char uniname2ctype_pool_str393[sizeof("inkanaextendeda")];
     35014    char uniname2ctype_pool_str396[sizeof("inmeeteimayek")];
     35015    char uniname2ctype_pool_str399[sizeof("inruminumeralsymbols")];
     35016    char uniname2ctype_pool_str408[sizeof("letternumber")];
     35017    char uniname2ctype_pool_str412[sizeof("knda")];
     35018    char uniname2ctype_pool_str425[sizeof("kannada")];
     35019    char uniname2ctype_pool_str428[sizeof("inoldnortharabian")];
     35020    char uniname2ctype_pool_str430[sizeof("inideographicdescriptioncharacters")];
     35021    char uniname2ctype_pool_str432[sizeof("inmodi")];
     35022    char uniname2ctype_pool_str440[sizeof("incjkcompatibilityforms")];
     35023    char uniname2ctype_pool_str445[sizeof("incjkcompatibilityideographs")];
     35024    char uniname2ctype_pool_str453[sizeof("xidc")];
     35025    char uniname2ctype_pool_str455[sizeof("inmendekikakui")];
     35026    char uniname2ctype_pool_str458[sizeof("brahmi")];
     35027    char uniname2ctype_pool_str480[sizeof("inolditalic")];
     35028    char uniname2ctype_pool_str482[sizeof("inmiscellaneousmathematicalsymbolsa")];
     35029    char uniname2ctype_pool_str486[sizeof("inspecials")];
     35030    char uniname2ctype_pool_str487[sizeof("inemoticons")];
     35031    char uniname2ctype_pool_str488[sizeof("patternwhitespace")];
     35032    char uniname2ctype_pool_str489[sizeof("gothic")];
     35033    char uniname2ctype_pool_str492[sizeof("intransportandmapsymbols")];
     35034    char uniname2ctype_pool_str493[sizeof("l")];
     35035    char uniname2ctype_pool_str509[sizeof("psalterpahlavi")];
     35036    char uniname2ctype_pool_str516[sizeof("vai")];
     35037    char uniname2ctype_pool_str517[sizeof("vaii")];
     35038    char uniname2ctype_pool_str523[sizeof("lt")];
     35039    char uniname2ctype_pool_str524[sizeof("meroiticcursive")];
     35040    char uniname2ctype_pool_str526[sizeof("xids")];
     35041    char uniname2ctype_pool_str530[sizeof("incommonindicnumberforms")];
     35042    char uniname2ctype_pool_str531[sizeof("inmandaic")];
     35043    char uniname2ctype_pool_str533[sizeof("inlineara")];
     35044    char uniname2ctype_pool_str541[sizeof("incjkcompatibilityideographssupplement")];
     35045    char uniname2ctype_pool_str544[sizeof("inlao")];
     35046    char uniname2ctype_pool_str545[sizeof("insundanese")];
     35047    char uniname2ctype_pool_str547[sizeof("mongolian")];
     35048    char uniname2ctype_pool_str552[sizeof("bamum")];
     35049    char uniname2ctype_pool_str554[sizeof("idc")];
     35050    char uniname2ctype_pool_str561[sizeof("inancientsymbols")];
     35051    char uniname2ctype_pool_str573[sizeof("kali")];
     35052    char uniname2ctype_pool_str574[sizeof("grlink")];
     35053    char uniname2ctype_pool_str576[sizeof("grext")];
     35054    char uniname2ctype_pool_str577[sizeof("control")];
     35055    char uniname2ctype_pool_str586[sizeof("inkanasupplement")];
     35056    char uniname2ctype_pool_str591[sizeof("inopticalcharacterrecognition")];
     35057    char uniname2ctype_pool_str596[sizeof("inadlam")];
     35058    char uniname2ctype_pool_str598[sizeof("so")];
     35059    char uniname2ctype_pool_str601[sizeof("inoldsoutharabian")];
     35060    char uniname2ctype_pool_str602[sizeof("sk")];
     35061    char uniname2ctype_pool_str606[sizeof("print")];
     35062    char uniname2ctype_pool_str607[sizeof("idsbinaryoperator")];
     35063    char uniname2ctype_pool_str609[sizeof("palm")];
     35064    char uniname2ctype_pool_str618[sizeof("batk")];
     35065    char uniname2ctype_pool_str619[sizeof("indominotiles")];
     35066    char uniname2ctype_pool_str620[sizeof("intaitham")];
     35067    char uniname2ctype_pool_str622[sizeof("inlycian")];
     35068    char uniname2ctype_pool_str629[sizeof("sora")];
     35069    char uniname2ctype_pool_str636[sizeof("batak")];
     35070    char uniname2ctype_pool_str642[sizeof("inmodifiertoneletters")];
     35071    char uniname2ctype_pool_str657[sizeof("patws")];
     35072    char uniname2ctype_pool_str665[sizeof("inmalayalam")];
     35073    char uniname2ctype_pool_str670[sizeof("incjkstrokes")];
     35074    char uniname2ctype_pool_str681[sizeof("incontrolpictures")];
     35075    char uniname2ctype_pool_str684[sizeof("samr")];
     35076    char uniname2ctype_pool_str689[sizeof("bass")];
     35077    char uniname2ctype_pool_str693[sizeof("samaritan")];
     35078    char uniname2ctype_pool_str699[sizeof("inmusicalsymbols")];
     35079    char uniname2ctype_pool_str700[sizeof("ids")];
     35080    char uniname2ctype_pool_str705[sizeof("pd")];
     35081    char uniname2ctype_pool_str708[sizeof("sm")];
     35082    char uniname2ctype_pool_str715[sizeof("pauc")];
     35083    char uniname2ctype_pool_str716[sizeof("joinc")];
     35084    char uniname2ctype_pool_str725[sizeof("inlinearbideograms")];
     35085    char uniname2ctype_pool_str730[sizeof("idcontinue")];
     35086    char uniname2ctype_pool_str732[sizeof("inancientgreekmusicalnotation")];
     35087    char uniname2ctype_pool_str737[sizeof("inoldturkic")];
     35088    char uniname2ctype_pool_str738[sizeof("alnum")];
     35089    char uniname2ctype_pool_str739[sizeof("inugaritic")];
     35090    char uniname2ctype_pool_str741[sizeof("s")];
     35091    char uniname2ctype_pool_str742[sizeof("inmiscellaneoussymbols")];
     35092    char uniname2ctype_pool_str743[sizeof("n")];
     35093    char uniname2ctype_pool_str748[sizeof("lisu")];
     35094    char uniname2ctype_pool_str751[sizeof("inmiscellaneoussymbolsandarrows")];
     35095    char uniname2ctype_pool_str753[sizeof("insylotinagri")];
     35096    char uniname2ctype_pool_str756[sizeof("inmiscellaneoussymbolsandpictographs")];
     35097    char uniname2ctype_pool_str770[sizeof("sc")];
     35098    char uniname2ctype_pool_str773[sizeof("no")];
     35099    char uniname2ctype_pool_str777[sizeof("ital")];
     35100    char uniname2ctype_pool_str781[sizeof("p")];
     35101    char uniname2ctype_pool_str782[sizeof("xpeo")];
     35102    char uniname2ctype_pool_str785[sizeof("di")];
     35103    char uniname2ctype_pool_str787[sizeof("idst")];
     35104    char uniname2ctype_pool_str788[sizeof("intaile")];
     35105    char uniname2ctype_pool_str791[sizeof("nko")];
     35106    char uniname2ctype_pool_str792[sizeof("nkoo")];
     35107    char uniname2ctype_pool_str793[sizeof("dia")];
     35108    char uniname2ctype_pool_str797[sizeof("inphoenician")];
     35109    char uniname2ctype_pool_str799[sizeof("inlatinextendeda")];
     35110    char uniname2ctype_pool_str802[sizeof("indeseret")];
     35111    char uniname2ctype_pool_str807[sizeof("inlatinextendede")];
     35112    char uniname2ctype_pool_str812[sizeof("incaucasianalbanian")];
     35113    char uniname2ctype_pool_str819[sizeof("insaurashtra")];
     35114    char uniname2ctype_pool_str823[sizeof("inmeeteimayekextensions")];
     35115    char uniname2ctype_pool_str834[sizeof("idstart")];
     35116    char uniname2ctype_pool_str835[sizeof("bali")];
     35117    char uniname2ctype_pool_str837[sizeof("inspacingmodifierletters")];
     35118    char uniname2ctype_pool_str848[sizeof("bengali")];
     35119    char uniname2ctype_pool_str849[sizeof("intamil")];
     35120    char uniname2ctype_pool_str851[sizeof("inmultani")];
     35121    char uniname2ctype_pool_str852[sizeof("vs")];
     35122    char uniname2ctype_pool_str853[sizeof("inlydian")];
     35123    char uniname2ctype_pool_str855[sizeof("balinese")];
     35124    char uniname2ctype_pool_str856[sizeof("lepc")];
     35125    char uniname2ctype_pool_str857[sizeof("cased")];
     35126    char uniname2ctype_pool_str862[sizeof("zinh")];
     35127    char uniname2ctype_pool_str867[sizeof("blank")];
     35128    char uniname2ctype_pool_str870[sizeof("runr")];
     35129    char uniname2ctype_pool_str872[sizeof("patternsyntax")];
     35130    char uniname2ctype_pool_str874[sizeof("bidic")];
     35131    char uniname2ctype_pool_str877[sizeof("xdigit")];
     35132    char uniname2ctype_pool_str881[sizeof("xidstart")];
     35133    char uniname2ctype_pool_str885[sizeof("inphaistosdisc")];
     35134    char uniname2ctype_pool_str897[sizeof("inancientgreeknumbers")];
     35135    char uniname2ctype_pool_str899[sizeof("canadianaboriginal")];
     35136    char uniname2ctype_pool_str903[sizeof("cher")];
     35137    char uniname2ctype_pool_str905[sizeof("plrd")];
     35138    char uniname2ctype_pool_str906[sizeof("sind")];
     35139    char uniname2ctype_pool_str909[sizeof("cherokee")];
     35140    char uniname2ctype_pool_str911[sizeof("phoenician")];
     35141    char uniname2ctype_pool_str918[sizeof("marchen")];
     35142    char uniname2ctype_pool_str919[sizeof("inhiragana")];
     35143    char uniname2ctype_pool_str926[sizeof("inearlydynasticcuneiform")];
     35144    char uniname2ctype_pool_str928[sizeof("graphemebase")];
     35145    char uniname2ctype_pool_str930[sizeof("cham")];
     35146    char uniname2ctype_pool_str931[sizeof("inimperialaramaic")];
     35147    char uniname2ctype_pool_str932[sizeof("kaithi")];
     35148    char uniname2ctype_pool_str935[sizeof("insiddham")];
     35149    char uniname2ctype_pool_str937[sizeof("diacritic")];
     35150    char uniname2ctype_pool_str942[sizeof("chakma")];
     35151    char uniname2ctype_pool_str944[sizeof("graphemelink")];
     35152    char uniname2ctype_pool_str947[sizeof("inkhudawadi")];
     35153    char uniname2ctype_pool_str948[sizeof("inmahajani")];
     35154    char uniname2ctype_pool_str956[sizeof("khojki")];
     35155    char uniname2ctype_pool_str957[sizeof("inogham")];
     35156    char uniname2ctype_pool_str960[sizeof("khar")];
     35157    char uniname2ctype_pool_str966[sizeof("incountingrodnumerals")];
     35158    char uniname2ctype_pool_str975[sizeof("manichaean")];
     35159    char uniname2ctype_pool_str976[sizeof("coptic")];
     35160    char uniname2ctype_pool_str977[sizeof("bamu")];
     35161    char uniname2ctype_pool_str980[sizeof("sterm")];
     35162    char uniname2ctype_pool_str983[sizeof("inethiopic")];
     35163    char uniname2ctype_pool_str985[sizeof("ll")];
     35164    char uniname2ctype_pool_str988[sizeof("inolchiki")];
     35165    char uniname2ctype_pool_str991[sizeof("inlatinextendedc")];
     35166    char uniname2ctype_pool_str996[sizeof("zl")];
     35167    char uniname2ctype_pool_str998[sizeof("adlm")];
     35168    char uniname2ctype_pool_str1016[sizeof("incyrillicsupplement")];
     35169    char uniname2ctype_pool_str1019[sizeof("incyrillicextendeda")];
     35170    char uniname2ctype_pool_str1022[sizeof("incherokeesupplement")];
     35171    char uniname2ctype_pool_str1023[sizeof("decimalnumber")];
     35172    char uniname2ctype_pool_str1025[sizeof("khmr")];
     35173    char uniname2ctype_pool_str1029[sizeof("copt")];
     35174    char uniname2ctype_pool_str1032[sizeof("ahom")];
     35175    char uniname2ctype_pool_str1034[sizeof("runic")];
     35176    char uniname2ctype_pool_str1048[sizeof("intaixuanjingsymbols")];
     35177    char uniname2ctype_pool_str1049[sizeof("insinhala")];
     35178    char uniname2ctype_pool_str1053[sizeof("cprt")];
     35179    char uniname2ctype_pool_str1056[sizeof("imperialaramaic")];
     35180    char uniname2ctype_pool_str1061[sizeof("casedletter")];
     35181    char uniname2ctype_pool_str1065[sizeof("khmer")];
     35182    char uniname2ctype_pool_str1067[sizeof("linb")];
     35183    char uniname2ctype_pool_str1069[sizeof("adlam")];
     35184    char uniname2ctype_pool_str1076[sizeof("ininscriptionalparthian")];
     35185    char uniname2ctype_pool_str1077[sizeof("ininscriptionalpahlavi")];
     35186    char uniname2ctype_pool_str1078[sizeof("sinhala")];
     35187    char uniname2ctype_pool_str1080[sizeof("zanb")];
     35188    char uniname2ctype_pool_str1086[sizeof("incjkunifiedideographsextensiona")];
     35189    char uniname2ctype_pool_str1088[sizeof("multani")];
     35190    char uniname2ctype_pool_str1089[sizeof("quotationmark")];
     35191    char uniname2ctype_pool_str1090[sizeof("incjkunifiedideographsextensione")];
     35192    char uniname2ctype_pool_str1094[sizeof("innabataean")];
     35193    char uniname2ctype_pool_str1098[sizeof("inbhaiksuki")];
     35194    char uniname2ctype_pool_str1100[sizeof("inelbasan")];
     35195    char uniname2ctype_pool_str1103[sizeof("inkanbun")];
     35196    char uniname2ctype_pool_str1104[sizeof("inscriptionalpahlavi")];
     35197    char uniname2ctype_pool_str1107[sizeof("bopo")];
     35198    char uniname2ctype_pool_str1114[sizeof("linearb")];
     35199    char uniname2ctype_pool_str1115[sizeof("incyrillicextendedc")];
     35200    char uniname2ctype_pool_str1116[sizeof("glagolitic")];
     35201    char uniname2ctype_pool_str1119[sizeof("kharoshthi")];
     35202    char uniname2ctype_pool_str1120[sizeof("inoldpersian")];
     35203    char uniname2ctype_pool_str1124[sizeof("goth")];
     35204    char uniname2ctype_pool_str1126[sizeof("math")];
     35205    char uniname2ctype_pool_str1127[sizeof("joincontrol")];
     35206    char uniname2ctype_pool_str1131[sizeof("punct")];
     35207    char uniname2ctype_pool_str1135[sizeof("lu")];
     35208    char uniname2ctype_pool_str1136[sizeof("limb")];
     35209    char uniname2ctype_pool_str1147[sizeof("inmiscellaneoustechnical")];
     35210    char uniname2ctype_pool_str1152[sizeof("han")];
     35211    char uniname2ctype_pool_str1155[sizeof("hani")];
     35212    char uniname2ctype_pool_str1156[sizeof("invai")];
     35213    char uniname2ctype_pool_str1157[sizeof("sundanese")];
     35214    char uniname2ctype_pool_str1158[sizeof("taile")];
     35215    char uniname2ctype_pool_str1160[sizeof("takri")];
     35216    char uniname2ctype_pool_str1161[sizeof("grantha")];
     35217    char uniname2ctype_pool_str1167[sizeof("hano")];
     35218    char uniname2ctype_pool_str1168[sizeof("inhatran")];
     35219    char uniname2ctype_pool_str1172[sizeof("oriya")];
     35220    char uniname2ctype_pool_str1173[sizeof("intirhuta")];
     35221    char uniname2ctype_pool_str1178[sizeof("guru")];
     35222    char uniname2ctype_pool_str1179[sizeof("kthi")];
     35223    char uniname2ctype_pool_str1180[sizeof("saur")];
     35224    char uniname2ctype_pool_str1182[sizeof("incjkunifiedideographsextensionc")];
     35225    char uniname2ctype_pool_str1186[sizeof("hanunoo")];
     35226    char uniname2ctype_pool_str1189[sizeof("paucinhau")];
     35227    char uniname2ctype_pool_str1192[sizeof("takr")];
     35228    char uniname2ctype_pool_str1193[sizeof("hira")];
     35229    char uniname2ctype_pool_str1195[sizeof("inarabic")];
     35230    char uniname2ctype_pool_str1196[sizeof("bopomofo")];
     35231    char uniname2ctype_pool_str1201[sizeof("radical")];
     35232    char uniname2ctype_pool_str1202[sizeof("gurmukhi")];
     35233    char uniname2ctype_pool_str1203[sizeof("inkhojki")];
     35234    char uniname2ctype_pool_str1207[sizeof("arab")];
     35235    char uniname2ctype_pool_str1211[sizeof("limbu")];
     35236    char uniname2ctype_pool_str1218[sizeof("inoldpermic")];
     35237    char uniname2ctype_pool_str1222[sizeof("brah")];
     35238    char uniname2ctype_pool_str1225[sizeof("inoldhungarian")];
     35239    char uniname2ctype_pool_str1227[sizeof("inshorthandformatcontrols")];
     35240    char uniname2ctype_pool_str1229[sizeof("incoptic")];
     35241    char uniname2ctype_pool_str1232[sizeof("sd")];
     35242    char uniname2ctype_pool_str1237[sizeof("sidd")];
     35243    char uniname2ctype_pool_str1243[sizeof("inherited")];
     35244    char uniname2ctype_pool_str1245[sizeof("incjkunifiedideographs")];
     35245    char uniname2ctype_pool_str1249[sizeof("term")];
     35246    char uniname2ctype_pool_str1252[sizeof("incjksymbolsandpunctuation")];
     35247    char uniname2ctype_pool_str1253[sizeof("graphemeextend")];
     35248    char uniname2ctype_pool_str1254[sizeof("dsrt")];
     35249    char uniname2ctype_pool_str1257[sizeof("cntrl")];
     35250    char uniname2ctype_pool_str1259[sizeof("xsux")];
     35251    char uniname2ctype_pool_str1262[sizeof("insyriacsupplement")];
     35252    char uniname2ctype_pool_str1267[sizeof("inbasiclatin")];
     35253    char uniname2ctype_pool_str1275[sizeof("deseret")];
     35254    char uniname2ctype_pool_str1281[sizeof("inenclosedideographicsupplement")];
     35255    char uniname2ctype_pool_str1285[sizeof("bidicontrol")];
     35256    char uniname2ctype_pool_str1288[sizeof("closepunctuation")];
     35257    char uniname2ctype_pool_str1294[sizeof("inlatinextendedadditional")];
     35258    char uniname2ctype_pool_str1296[sizeof("inarabicpresentationformsa")];
     35259    char uniname2ctype_pool_str1298[sizeof("grbase")];
     35260    char uniname2ctype_pool_str1306[sizeof("mong")];
     35261    char uniname2ctype_pool_str1307[sizeof("anatolianhieroglyphs")];
     35262    char uniname2ctype_pool_str1308[sizeof("inenclosedalphanumerics")];
     35263    char uniname2ctype_pool_str1309[sizeof("ingrantha")];
     35264    char uniname2ctype_pool_str1310[sizeof("georgian")];
     35265    char uniname2ctype_pool_str1317[sizeof("osage")];
     35266    char uniname2ctype_pool_str1325[sizeof("inosage")];
     35267    char uniname2ctype_pool_str1326[sizeof("ingeneralpunctuation")];
     35268    char uniname2ctype_pool_str1331[sizeof("saurashtra")];
     35269    char uniname2ctype_pool_str1334[sizeof("inshavian")];
     35270    char uniname2ctype_pool_str1335[sizeof("space")];
     35271    char uniname2ctype_pool_str1336[sizeof("mult")];
     35272    char uniname2ctype_pool_str1340[sizeof("inpalmyrene")];
     35273    char uniname2ctype_pool_str1341[sizeof("inanatolianhieroglyphs")];
     35274    char uniname2ctype_pool_str1344[sizeof("spacingmark")];
     35275    char uniname2ctype_pool_str1348[sizeof("alpha")];
     35276    char uniname2ctype_pool_str1354[sizeof("ingeorgian")];
     35277    char uniname2ctype_pool_str1355[sizeof("intibetan")];
     35278    char uniname2ctype_pool_str1364[sizeof("inlepcha")];
     35279    char uniname2ctype_pool_str1365[sizeof("inbatak")];
     35280    char uniname2ctype_pool_str1367[sizeof("emoji")];
     35281    char uniname2ctype_pool_str1368[sizeof("osma")];
     35282    char uniname2ctype_pool_str1369[sizeof("bhks")];
     35283    char uniname2ctype_pool_str1372[sizeof("inmongolian")];
     35284    char uniname2ctype_pool_str1373[sizeof("variationselector")];
     35285    char uniname2ctype_pool_str1374[sizeof("braille")];
     35286    char uniname2ctype_pool_str1379[sizeof("phli")];
     35287    char uniname2ctype_pool_str1382[sizeof("bhaiksuki")];
     35288    char uniname2ctype_pool_str1388[sizeof("phnx")];
     35289    char uniname2ctype_pool_str1390[sizeof("inblockelements")];
    2997835290#ifdef USE_UNICODE_AGE_PROPERTIES
    29979     char uniname2ctype_pool_str939[sizeof("age=1.1")];
    29980     char uniname2ctype_pool_str940[sizeof("age=2.1")];
     35291    char uniname2ctype_pool_str1391[sizeof("age=1.1")];
     35292    char uniname2ctype_pool_str1392[sizeof("age=4.1")];
     35293    char uniname2ctype_pool_str1393[sizeof("age=4.0")];
     35294    char uniname2ctype_pool_str1394[sizeof("age=10.0")];
     35295    char uniname2ctype_pool_str1395[sizeof("age=2.1")];
     35296    char uniname2ctype_pool_str1396[sizeof("age=2.0")];
     35297    char uniname2ctype_pool_str1397[sizeof("age=6.1")];
     35298    char uniname2ctype_pool_str1398[sizeof("age=6.0")];
     35299    char uniname2ctype_pool_str1399[sizeof("age=9.0")];
     35300    char uniname2ctype_pool_str1400[sizeof("age=8.0")];
     35301    char uniname2ctype_pool_str1401[sizeof("age=6.2")];
     35302    char uniname2ctype_pool_str1402[sizeof("age=7.0")];
    2998135303#endif /* USE_UNICODE_AGE_PROPERTIES */
    29982     char uniname2ctype_pool_str941[sizeof("closepunctuation")];
    29983     char uniname2ctype_pool_str943[sizeof("letternumber")];
     35304    char uniname2ctype_pool_str1403[sizeof("inenclosedalphanumericsupplement")];
     35305    char uniname2ctype_pool_str1404[sizeof("innumberforms")];
    2998435306#ifdef USE_UNICODE_AGE_PROPERTIES
    29985     char uniname2ctype_pool_str944[sizeof("age=6.1")];
    29986     char uniname2ctype_pool_str945[sizeof("age=6.2")];
     35307    char uniname2ctype_pool_str1405[sizeof("age=5.1")];
     35308    char uniname2ctype_pool_str1406[sizeof("age=5.0")];
    2998735309#endif /* USE_UNICODE_AGE_PROPERTIES */
    29988     char uniname2ctype_pool_str946[sizeof("telu")];
     35310    char uniname2ctype_pool_str1407[sizeof("nd")];
     35311    char uniname2ctype_pool_str1408[sizeof("separator")];
    2998935312#ifdef USE_UNICODE_AGE_PROPERTIES
    29990     char uniname2ctype_pool_str947[sizeof("age=3.1")];
    29991     char uniname2ctype_pool_str948[sizeof("age=3.2")];
    29992     char uniname2ctype_pool_str949[sizeof("age=5.1")];
    29993     char uniname2ctype_pool_str950[sizeof("age=5.2")];
    29994     char uniname2ctype_pool_str951[sizeof("age=2.0")];
    29995     char uniname2ctype_pool_str952[sizeof("age=6.3")];
     35313    char uniname2ctype_pool_str1409[sizeof("age=5.2")];
    2999635314#endif /* USE_UNICODE_AGE_PROPERTIES */
    29997     char uniname2ctype_pool_str953[sizeof("inshorthandformatcontrols")];
    29998     char uniname2ctype_pool_str954[sizeof("inoldnortharabian")];
     35315    char uniname2ctype_pool_str1411[sizeof("ingurmukhi")];
     35316    char uniname2ctype_pool_str1413[sizeof("incjkunifiedideographsextensiond")];
     35317    char uniname2ctype_pool_str1414[sizeof("taiviet")];
     35318    char uniname2ctype_pool_str1416[sizeof("sinh")];
    2999935319#ifdef USE_UNICODE_AGE_PROPERTIES
    30000     char uniname2ctype_pool_str955[sizeof("age=6.0")];
    30001     char uniname2ctype_pool_str956[sizeof("age=4.1")];
     35320    char uniname2ctype_pool_str1417[sizeof("age=3.1")];
     35321    char uniname2ctype_pool_str1418[sizeof("age=3.0")];
    3000235322#endif /* USE_UNICODE_AGE_PROPERTIES */
    30003     char uniname2ctype_pool_str957[sizeof("ingeneralpunctuation")];
     35323    char uniname2ctype_pool_str1420[sizeof("hatran")];
    3000435324#ifdef USE_UNICODE_AGE_PROPERTIES
    30005     char uniname2ctype_pool_str958[sizeof("age=3.0")];
    30006     char uniname2ctype_pool_str959[sizeof("age=7.0")];
    30007     char uniname2ctype_pool_str960[sizeof("age=5.0")];
     35325    char uniname2ctype_pool_str1421[sizeof("age=3.2")];
     35326    char uniname2ctype_pool_str1423[sizeof("age=6.3")];
    3000835327#endif /* USE_UNICODE_AGE_PROPERTIES */
    30009     char uniname2ctype_pool_str962[sizeof("innabataean")];
    30010 #ifdef USE_UNICODE_AGE_PROPERTIES
    30011     char uniname2ctype_pool_str967[sizeof("age=4.0")];
    30012 #endif /* USE_UNICODE_AGE_PROPERTIES */
    30013     char uniname2ctype_pool_str970[sizeof("bamum")];
    30014     char uniname2ctype_pool_str972[sizeof("control")];
    30015     char uniname2ctype_pool_str974[sizeof("induployan")];
    30016     char uniname2ctype_pool_str975[sizeof("inlatinextendedd")];
    30017     char uniname2ctype_pool_str976[sizeof("inarabic")];
    30018     char uniname2ctype_pool_str982[sizeof("runic")];
    30019     char uniname2ctype_pool_str984[sizeof("inelbasan")];
    30020     char uniname2ctype_pool_str985[sizeof("inoldsoutharabian")];
    30021     char uniname2ctype_pool_str986[sizeof("inbasiclatin")];
    30022     char uniname2ctype_pool_str995[sizeof("format")];
    30023     char uniname2ctype_pool_str996[sizeof("innumberforms")];
    30024     char uniname2ctype_pool_str998[sizeof("inugaritic")];
    30025     char uniname2ctype_pool_str999[sizeof("separator")];
    30026     char uniname2ctype_pool_str1000[sizeof("idsbinaryoperator")];
    30027     char uniname2ctype_pool_str1004[sizeof("tagbanwa")];
    30028     char uniname2ctype_pool_str1012[sizeof("bass")];
    30029     char uniname2ctype_pool_str1013[sizeof("saur")];
    30030     char uniname2ctype_pool_str1014[sizeof("nbat")];
    30031     char uniname2ctype_pool_str1017[sizeof("intaixuanjingsymbols")];
    30032     char uniname2ctype_pool_str1019[sizeof("joincontrol")];
    30033     char uniname2ctype_pool_str1023[sizeof("otheridstart")];
    30034     char uniname2ctype_pool_str1027[sizeof("inbyzantinemusicalsymbols")];
    30035     char uniname2ctype_pool_str1031[sizeof("intags")];
    30036     char uniname2ctype_pool_str1033[sizeof("nabataean")];
    30037     char uniname2ctype_pool_str1034[sizeof("insuperscriptsandsubscripts")];
    30038     char uniname2ctype_pool_str1036[sizeof("intibetan")];
    30039     char uniname2ctype_pool_str1039[sizeof("insaurashtra")];
    30040     char uniname2ctype_pool_str1040[sizeof("othersymbol")];
    30041     char uniname2ctype_pool_str1041[sizeof("ext")];
    30042     char uniname2ctype_pool_str1046[sizeof("inarabicpresentationformsa")];
    30043     char uniname2ctype_pool_str1048[sizeof("inmiscellaneousmathematicalsymbolsb")];
    30044     char uniname2ctype_pool_str1049[sizeof("otherlowercase")];
    30045     char uniname2ctype_pool_str1052[sizeof("phoenician")];
    30046     char uniname2ctype_pool_str1055[sizeof("lower")];
    30047     char uniname2ctype_pool_str1060[sizeof("linb")];
    30048     char uniname2ctype_pool_str1064[sizeof("po")];
    30049     char uniname2ctype_pool_str1065[sizeof("inmyanmarextendedb")];
    30050     char uniname2ctype_pool_str1066[sizeof("limb")];
    30051     char uniname2ctype_pool_str1068[sizeof("inbraillepatterns")];
    30052     char uniname2ctype_pool_str1069[sizeof("tibt")];
    30053     char uniname2ctype_pool_str1070[sizeof("cuneiform")];
    30054     char uniname2ctype_pool_str1072[sizeof("bali")];
    30055     char uniname2ctype_pool_str1073[sizeof("oldpersian")];
    30056     char uniname2ctype_pool_str1077[sizeof("oldpermic")];
    30057     char uniname2ctype_pool_str1080[sizeof("pf")];
    30058     char uniname2ctype_pool_str1084[sizeof("word")];
    30059     char uniname2ctype_pool_str1086[sizeof("tibetan")];
    30060     char uniname2ctype_pool_str1089[sizeof("incyrillicsupplement")];
    30061     char uniname2ctype_pool_str1093[sizeof("elba")];
    30062     char uniname2ctype_pool_str1094[sizeof("insupplementalmathematicaloperators")];
    30063     char uniname2ctype_pool_str1095[sizeof("inbalinese")];
    30064     char uniname2ctype_pool_str1101[sizeof("bengali")];
    30065     char uniname2ctype_pool_str1104[sizeof("caseignorable")];
    30066     char uniname2ctype_pool_str1107[sizeof("incountingrodnumerals")];
    30067     char uniname2ctype_pool_str1114[sizeof("other")];
    30068     char uniname2ctype_pool_str1118[sizeof("tirhuta")];
    30069     char uniname2ctype_pool_str1121[sizeof("othernumber")];
    30070     char uniname2ctype_pool_str1123[sizeof("balinese")];
    30071     char uniname2ctype_pool_str1129[sizeof("elbasan")];
    30072     char uniname2ctype_pool_str1134[sizeof("inunifiedcanadianaboriginalsyllabics")];
    30073     char uniname2ctype_pool_str1136[sizeof("lowercaseletter")];
    30074     char uniname2ctype_pool_str1140[sizeof("ethiopic")];
    30075     char uniname2ctype_pool_str1141[sizeof("gran")];
    30076     char uniname2ctype_pool_str1149[sizeof("ingurmukhi")];
    30077     char uniname2ctype_pool_str1151[sizeof("sund")];
    30078     char uniname2ctype_pool_str1153[sizeof("inethiopicsupplement")];
    30079     char uniname2ctype_pool_str1160[sizeof("inoldpersian")];
    30080     char uniname2ctype_pool_str1163[sizeof("inoldpermic")];
    30081     char uniname2ctype_pool_str1170[sizeof("othermath")];
    30082     char uniname2ctype_pool_str1174[sizeof("unassigned")];
    30083     char uniname2ctype_pool_str1180[sizeof("hmng")];
    30084     char uniname2ctype_pool_str1181[sizeof("narb")];
    30085     char uniname2ctype_pool_str1184[sizeof("brai")];
    30086     char uniname2ctype_pool_str1186[sizeof("hang")];
    30087     char uniname2ctype_pool_str1187[sizeof("insorasompeng")];
    30088     char uniname2ctype_pool_str1193[sizeof("arab")];
    30089     char uniname2ctype_pool_str1194[sizeof("plrd")];
    30090     char uniname2ctype_pool_str1195[sizeof("ingujarati")];
    30091     char uniname2ctype_pool_str1197[sizeof("brahmi")];
    30092     char uniname2ctype_pool_str1201[sizeof("runr")];
    30093     char uniname2ctype_pool_str1202[sizeof("ahex")];
    30094     char uniname2ctype_pool_str1206[sizeof("mong")];
    30095     char uniname2ctype_pool_str1211[sizeof("pauc")];
    30096     char uniname2ctype_pool_str1212[sizeof("sarb")];
    30097     char uniname2ctype_pool_str1218[sizeof("ogam")];
    30098     char uniname2ctype_pool_str1221[sizeof("olower")];
    30099     char uniname2ctype_pool_str1222[sizeof("pd")];
    30100     char uniname2ctype_pool_str1235[sizeof("number")];
    30101     char uniname2ctype_pool_str1238[sizeof("inbrahmi")];
    30102     char uniname2ctype_pool_str1240[sizeof("otherletter")];
    30103     char uniname2ctype_pool_str1252[sizeof("ingothic")];
    30104     char uniname2ctype_pool_str1254[sizeof("phagspa")];
    30105     char uniname2ctype_pool_str1262[sizeof("inletterlikesymbols")];
    30106     char uniname2ctype_pool_str1265[sizeof("yi")];
    30107     char uniname2ctype_pool_str1269[sizeof("hangul")];
    30108     char uniname2ctype_pool_str1271[sizeof("yiii")];
    30109     char uniname2ctype_pool_str1272[sizeof("tfng")];
    30110     char uniname2ctype_pool_str1273[sizeof("insupplementalarrowsc")];
    30111     char uniname2ctype_pool_str1277[sizeof("ingreekandcoptic")];
    30112     char uniname2ctype_pool_str1279[sizeof("xidc")];
    30113     char uniname2ctype_pool_str1280[sizeof("insupplementalarrowsa")];
    30114     char uniname2ctype_pool_str1281[sizeof("gothic")];
    30115     char uniname2ctype_pool_str1283[sizeof("grext")];
    30116     char uniname2ctype_pool_str1285[sizeof("incombininghalfmarks")];
    30117     char uniname2ctype_pool_str1286[sizeof("deprecated")];
    30118     char uniname2ctype_pool_str1287[sizeof("inbassavah")];
    30119     char uniname2ctype_pool_str1305[sizeof("xids")];
    30120     char uniname2ctype_pool_str1308[sizeof("linearb")];
    30121     char uniname2ctype_pool_str1312[sizeof("ingeometricshapes")];
    30122     char uniname2ctype_pool_str1313[sizeof("phlp")];
    30123     char uniname2ctype_pool_str1314[sizeof("warangciti")];
    30124     char uniname2ctype_pool_str1317[sizeof("inblockelements")];
    30125     char uniname2ctype_pool_str1318[sizeof("modifierletter")];
    30126     char uniname2ctype_pool_str1321[sizeof("indingbats")];
    30127     char uniname2ctype_pool_str1322[sizeof("dep")];
    30128     char uniname2ctype_pool_str1324[sizeof("punct")];
    30129     char uniname2ctype_pool_str1327[sizeof("inhanunoo")];
    30130     char uniname2ctype_pool_str1334[sizeof("bidic")];
    30131     char uniname2ctype_pool_str1344[sizeof("ingreekextended")];
    30132     char uniname2ctype_pool_str1353[sizeof("idsb")];
    30133     char uniname2ctype_pool_str1359[sizeof("assigned")];
    30134     char uniname2ctype_pool_str1364[sizeof("otherpunctuation")];
    30135     char uniname2ctype_pool_str1368[sizeof("inhangulsyllables")];
    30136     char uniname2ctype_pool_str1373[sizeof("inarabicmathematicalalphabeticsymbols")];
    30137     char uniname2ctype_pool_str1385[sizeof("inornamentaldingbats")];
    30138     char uniname2ctype_pool_str1387[sizeof("inphagspa")];
    30139     char uniname2ctype_pool_str1389[sizeof("lyci")];
    30140     char uniname2ctype_pool_str1393[sizeof("mlym")];
    30141     char uniname2ctype_pool_str1399[sizeof("inarabicextendeda")];
    30142     char uniname2ctype_pool_str1400[sizeof("rjng")];
    30143     char uniname2ctype_pool_str1402[sizeof("lycian")];
    30144     char uniname2ctype_pool_str1403[sizeof("inalchemicalsymbols")];
    30145     char uniname2ctype_pool_str1409[sizeof("xdigit")];
    30146     char uniname2ctype_pool_str1412[sizeof("digit")];
    30147     char uniname2ctype_pool_str1420[sizeof("xidstart")];
    30148     char uniname2ctype_pool_str1421[sizeof("inrejang")];
    30149     char uniname2ctype_pool_str1424[sizeof("malayalam")];
    30150     char uniname2ctype_pool_str1425[sizeof("idstrinaryoperator")];
    30151     char uniname2ctype_pool_str1429[sizeof("invai")];
    30152     char uniname2ctype_pool_str1435[sizeof("vai")];
    30153     char uniname2ctype_pool_str1436[sizeof("vaii")];
    30154     char uniname2ctype_pool_str1438[sizeof("hiragana")];
    30155     char uniname2ctype_pool_str1442[sizeof("ingeorgian")];
    30156     char uniname2ctype_pool_str1448[sizeof("braille")];
    30157     char uniname2ctype_pool_str1455[sizeof("geor")];
    30158     char uniname2ctype_pool_str1457[sizeof("brah")];
    30159     char uniname2ctype_pool_str1463[sizeof("glagolitic")];
    30160     char uniname2ctype_pool_str1465[sizeof("inkannada")];
    30161     char uniname2ctype_pool_str1466[sizeof("cakm")];
    30162     char uniname2ctype_pool_str1467[sizeof("kana")];
    30163     char uniname2ctype_pool_str1469[sizeof("hebr")];
    30164     char uniname2ctype_pool_str1471[sizeof("inshavian")];
    30165     char uniname2ctype_pool_str1477[sizeof("vs")];
    30166     char uniname2ctype_pool_str1481[sizeof("inchakma")];
    30167     char uniname2ctype_pool_str1490[sizeof("ogham")];
    30168     char uniname2ctype_pool_str1491[sizeof("sylotinagri")];
    30169     char uniname2ctype_pool_str1492[sizeof("inunifiedcanadianaboriginalsyllabicsextended")];
    30170     char uniname2ctype_pool_str1495[sizeof("inmeroitichieroglyphs")];
    30171     char uniname2ctype_pool_str1498[sizeof("grantha")];
    30172     char uniname2ctype_pool_str1500[sizeof("graphemebase")];
    30173     char uniname2ctype_pool_str1502[sizeof("mathsymbol")];
    30174     char uniname2ctype_pool_str1505[sizeof("mymr")];
    30175     char uniname2ctype_pool_str1513[sizeof("insupplementaryprivateuseareaa")];
    30176     char uniname2ctype_pool_str1514[sizeof("mendekikakui")];
    30177     char uniname2ctype_pool_str1516[sizeof("incjkcompatibilityforms")];
    30178     char uniname2ctype_pool_str1518[sizeof("inhalfwidthandfullwidthforms")];
    30179     char uniname2ctype_pool_str1521[sizeof("incjkcompatibilityideographs")];
    30180     char uniname2ctype_pool_str1522[sizeof("inkaithi")];
    30181     char uniname2ctype_pool_str1525[sizeof("avst")];
    30182     char uniname2ctype_pool_str1526[sizeof("inarabicsupplement")];
    30183     char uniname2ctype_pool_str1527[sizeof("takri")];
    30184     char uniname2ctype_pool_str1529[sizeof("syrc")];
    30185     char uniname2ctype_pool_str1533[sizeof("meeteimayek")];
    30186     char uniname2ctype_pool_str1534[sizeof("myanmar")];
    30187     char uniname2ctype_pool_str1535[sizeof("avestan")];
    30188     char uniname2ctype_pool_str1536[sizeof("inhanguljamoextendeda")];
    30189     char uniname2ctype_pool_str1540[sizeof("goth")];
    30190     char uniname2ctype_pool_str1542[sizeof("inkatakana")];
    30191     char uniname2ctype_pool_str1544[sizeof("incyrillicextendeda")];
    30192     char uniname2ctype_pool_str1549[sizeof("alphabetic")];
    30193     char uniname2ctype_pool_str1550[sizeof("syriac")];
    30194     char uniname2ctype_pool_str1551[sizeof("ideographic")];
    30195     char uniname2ctype_pool_str1555[sizeof("incjkstrokes")];
    30196     char uniname2ctype_pool_str1557[sizeof("inlinearbsyllabary")];
    30197     char uniname2ctype_pool_str1558[sizeof("tavt")];
    30198     char uniname2ctype_pool_str1559[sizeof("intaiviet")];
    30199     char uniname2ctype_pool_str1564[sizeof("incjkcompatibilityideographssupplement")];
    30200     char uniname2ctype_pool_str1576[sizeof("inmeeteimayek")];
    30201     char uniname2ctype_pool_str1577[sizeof("kali")];
    30202     char uniname2ctype_pool_str1581[sizeof("inyiradicals")];
    30203     char uniname2ctype_pool_str1586[sizeof("lu")];
    30204     char uniname2ctype_pool_str1587[sizeof("inoriya")];
    30205     char uniname2ctype_pool_str1590[sizeof("hebrew")];
    30206     char uniname2ctype_pool_str1596[sizeof("extender")];
    30207     char uniname2ctype_pool_str1598[sizeof("inhighprivateusesurrogates")];
    30208     char uniname2ctype_pool_str1600[sizeof("limbu")];
    30209     char uniname2ctype_pool_str1606[sizeof("inbuhid")];
    30210     char uniname2ctype_pool_str1608[sizeof("inethiopicextendeda")];
    30211     char uniname2ctype_pool_str1609[sizeof("xidcontinue")];
    30212     char uniname2ctype_pool_str1611[sizeof("inyijinghexagramsymbols")];
    30213     char uniname2ctype_pool_str1612[sizeof("logicalorderexception")];
    30214     char uniname2ctype_pool_str1616[sizeof("inhebrew")];
    30215     char uniname2ctype_pool_str1617[sizeof("cyrl")];
    30216     char uniname2ctype_pool_str1618[sizeof("osmanya")];
    30217     char uniname2ctype_pool_str1621[sizeof("phnx")];
    30218     char uniname2ctype_pool_str1622[sizeof("incombiningdiacriticalmarks")];
    30219     char uniname2ctype_pool_str1626[sizeof("inkanasupplement")];
    30220     char uniname2ctype_pool_str1627[sizeof("inlisu")];
    30221     char uniname2ctype_pool_str1628[sizeof("changeswhencasemapped")];
    30222     char uniname2ctype_pool_str1632[sizeof("incombiningdiacriticalmarksforsymbols")];
    30223     char uniname2ctype_pool_str1636[sizeof("cwu")];
    30224     char uniname2ctype_pool_str1641[sizeof("phag")];
    30225     char uniname2ctype_pool_str1645[sizeof("insmallformvariants")];
    30226     char uniname2ctype_pool_str1656[sizeof("inpahawhhmong")];
    30227     char uniname2ctype_pool_str1661[sizeof("otheruppercase")];
    30228     char uniname2ctype_pool_str1662[sizeof("intelugu")];
    30229     char uniname2ctype_pool_str1665[sizeof("incombiningdiacriticalmarkssupplement")];
    30230     char uniname2ctype_pool_str1670[sizeof("ingeometricshapesextended")];
    30231     char uniname2ctype_pool_str1671[sizeof("xpeo")];
    30232     char uniname2ctype_pool_str1687[sizeof("bamu")];
    30233     char uniname2ctype_pool_str1689[sizeof("inbamum")];
    30234     char uniname2ctype_pool_str1692[sizeof("mark")];
    30235     char uniname2ctype_pool_str1694[sizeof("dupl")];
    30236     char uniname2ctype_pool_str1695[sizeof("graph")];
    30237     char uniname2ctype_pool_str1696[sizeof("dashpunctuation")];
    30238     char uniname2ctype_pool_str1700[sizeof("patternsyntax")];
    30239     char uniname2ctype_pool_str1705[sizeof("changeswhentitlecased")];
    30240     char uniname2ctype_pool_str1706[sizeof("inkharoshthi")];
    30241     char uniname2ctype_pool_str1712[sizeof("inkhmer")];
    30242     char uniname2ctype_pool_str1713[sizeof("java")];
    30243     char uniname2ctype_pool_str1714[sizeof("sylo")];
    30244     char uniname2ctype_pool_str1719[sizeof("ugaritic")];
    30245     char uniname2ctype_pool_str1722[sizeof("otherdefaultignorablecodepoint")];
    30246     char uniname2ctype_pool_str1723[sizeof("softdotted")];
    30247     char uniname2ctype_pool_str1729[sizeof("uideo")];
    30248     char uniname2ctype_pool_str1732[sizeof("inphoneticextensions")];
    30249     char uniname2ctype_pool_str1736[sizeof("injavanese")];
    30250     char uniname2ctype_pool_str1742[sizeof("invariationselectors")];
    30251     char uniname2ctype_pool_str1744[sizeof("kaithi")];
    30252     char uniname2ctype_pool_str1747[sizeof("cyrillic")];
    30253     char uniname2ctype_pool_str1749[sizeof("intakri")];
    30254     char uniname2ctype_pool_str1750[sizeof("takr")];
    30255     char uniname2ctype_pool_str1755[sizeof("javanese")];
    30256     char uniname2ctype_pool_str1757[sizeof("bidicontrol")];
    30257     char uniname2ctype_pool_str1758[sizeof("caucasianalbanian")];
    30258     char uniname2ctype_pool_str1765[sizeof("lydi")];
    30259     char uniname2ctype_pool_str1772[sizeof("insupplementalpunctuation")];
    30260     char uniname2ctype_pool_str1775[sizeof("inphoneticextensionssupplement")];
    30261     char uniname2ctype_pool_str1778[sizeof("lydian")];
    30262     char uniname2ctype_pool_str1784[sizeof("oldturkic")];
    30263     char uniname2ctype_pool_str1785[sizeof("invariationselectorssupplement")];
    30264     char uniname2ctype_pool_str1786[sizeof("kthi")];
    30265     char uniname2ctype_pool_str1792[sizeof("inhanguljamo")];
    30266     char uniname2ctype_pool_str1797[sizeof("patsyn")];
    30267     char uniname2ctype_pool_str1802[sizeof("inlimbu")];
    30268     char uniname2ctype_pool_str1804[sizeof("sorasompeng")];
    30269     char uniname2ctype_pool_str1807[sizeof("orya")];
    30270     char uniname2ctype_pool_str1822[sizeof("inkhmersymbols")];
    30271     char uniname2ctype_pool_str1824[sizeof("inglagolitic")];
    30272     char uniname2ctype_pool_str1831[sizeof("indevanagari")];
    30273     char uniname2ctype_pool_str1835[sizeof("deva")];
    30274     char uniname2ctype_pool_str1836[sizeof("knda")];
    30275     char uniname2ctype_pool_str1841[sizeof("inbengali")];
    30276     char uniname2ctype_pool_str1843[sizeof("symbol")];
    30277     char uniname2ctype_pool_str1846[sizeof("devanagari")];
    30278     char uniname2ctype_pool_str1849[sizeof("inmendekikakui")];
    30279     char uniname2ctype_pool_str1852[sizeof("beng")];
    30280     char uniname2ctype_pool_str1853[sizeof("invedicextensions")];
    30281     char uniname2ctype_pool_str1859[sizeof("graphemeextend")];
    30282     char uniname2ctype_pool_str1865[sizeof("kannada")];
    30283     char uniname2ctype_pool_str1866[sizeof("inbuginese")];
    30284     char uniname2ctype_pool_str1869[sizeof("olck")];
    30285     char uniname2ctype_pool_str1871[sizeof("meroitichieroglyphs")];
    30286     char uniname2ctype_pool_str1872[sizeof("ugar")];
    30287     char uniname2ctype_pool_str1874[sizeof("intagalog")];
    30288     char uniname2ctype_pool_str1878[sizeof("inbamumsupplement")];
    30289     char uniname2ctype_pool_str1880[sizeof("olchiki")];
    30290     char uniname2ctype_pool_str1899[sizeof("incurrencysymbols")];
    30291     char uniname2ctype_pool_str1904[sizeof("tagb")];
    30292     char uniname2ctype_pool_str1912[sizeof("inaegeannumbers")];
    30293     char uniname2ctype_pool_str1915[sizeof("intagbanwa")];
    30294     char uniname2ctype_pool_str1916[sizeof("uppercase")];
    30295     char uniname2ctype_pool_str1917[sizeof("defaultignorablecodepoint")];
    30296     char uniname2ctype_pool_str1919[sizeof("glag")];
    30297     char uniname2ctype_pool_str1921[sizeof("inkatakanaphoneticextensions")];
    30298     char uniname2ctype_pool_str1932[sizeof("changeswhencasefolded")];
    30299     char uniname2ctype_pool_str1942[sizeof("inpaucinhau")];
    30300     char uniname2ctype_pool_str1943[sizeof("inprivateusearea")];
    30301     char uniname2ctype_pool_str1947[sizeof("paucinhau")];
    30302     char uniname2ctype_pool_str1953[sizeof("spacingmark")];
    30303     char uniname2ctype_pool_str1956[sizeof("khmr")];
    30304     char uniname2ctype_pool_str1962[sizeof("khar")];
    30305     char uniname2ctype_pool_str1964[sizeof("inarabicpresentationformsb")];
    30306     char uniname2ctype_pool_str1967[sizeof("changeswhenlowercased")];
    30307     char uniname2ctype_pool_str1971[sizeof("tglg")];
    30308     char uniname2ctype_pool_str1976[sizeof("inethiopicextended")];
    30309     char uniname2ctype_pool_str1980[sizeof("incombiningdiacriticalmarksextended")];
    30310     char uniname2ctype_pool_str1986[sizeof("oupper")];
    30311     char uniname2ctype_pool_str1994[sizeof("incjksymbolsandpunctuation")];
    30312     char uniname2ctype_pool_str1997[sizeof("bopo")];
    30313     char uniname2ctype_pool_str1998[sizeof("punctuation")];
    30314     char uniname2ctype_pool_str2002[sizeof("combiningmark")];
    30315     char uniname2ctype_pool_str2007[sizeof("inplayingcards")];
    30316     char uniname2ctype_pool_str2008[sizeof("inbopomofo")];
    30317     char uniname2ctype_pool_str2021[sizeof("hyphen")];
    30318     char uniname2ctype_pool_str2028[sizeof("inkhojki")];
    30319     char uniname2ctype_pool_str2046[sizeof("nko")];
    30320     char uniname2ctype_pool_str2047[sizeof("nkoo")];
    30321     char uniname2ctype_pool_str2048[sizeof("enclosingmark")];
    30322     char uniname2ctype_pool_str2053[sizeof("openpunctuation")];
    30323     char uniname2ctype_pool_str2061[sizeof("currencysymbol")];
    30324     char uniname2ctype_pool_str2063[sizeof("inverticalforms")];
    30325     char uniname2ctype_pool_str2071[sizeof("hex")];
    30326     char uniname2ctype_pool_str2072[sizeof("modifiersymbol")];
    30327     char uniname2ctype_pool_str2073[sizeof("inlatinextendedb")];
    30328     char uniname2ctype_pool_str2075[sizeof("kharoshthi")];
    30329     char uniname2ctype_pool_str2080[sizeof("cherokee")];
    30330     char uniname2ctype_pool_str2088[sizeof("pahawhhmong")];
    30331     char uniname2ctype_pool_str2096[sizeof("cypriot")];
    30332     char uniname2ctype_pool_str2105[sizeof("incypriotsyllabary")];
    30333     char uniname2ctype_pool_str2110[sizeof("palmyrene")];
    30334     char uniname2ctype_pool_str2113[sizeof("upper")];
    30335     char uniname2ctype_pool_str2116[sizeof("aghb")];
    30336     char uniname2ctype_pool_str2123[sizeof("georgian")];
    30337     char uniname2ctype_pool_str2131[sizeof("gujr")];
    30338     char uniname2ctype_pool_str2142[sizeof("grbase")];
    30339     char uniname2ctype_pool_str2152[sizeof("gujarati")];
    30340     char uniname2ctype_pool_str2153[sizeof("hexdigit")];
    30341     char uniname2ctype_pool_str2189[sizeof("khmer")];
    30342     char uniname2ctype_pool_str2194[sizeof("uppercaseletter")];
    30343     char uniname2ctype_pool_str2198[sizeof("insupplementalarrowsb")];
    30344     char uniname2ctype_pool_str2224[sizeof("surrogate")];
    30345     char uniname2ctype_pool_str2227[sizeof("unifiedideograph")];
    30346     char uniname2ctype_pool_str2237[sizeof("nonspacingmark")];
    30347     char uniname2ctype_pool_str2241[sizeof("othergraphemeextend")];
    30348     char uniname2ctype_pool_str2242[sizeof("indevanagariextended")];
    30349     char uniname2ctype_pool_str2252[sizeof("orkh")];
    30350     char uniname2ctype_pool_str2273[sizeof("ingeorgiansupplement")];
    30351     char uniname2ctype_pool_str2287[sizeof("oldnortharabian")];
    30352     char uniname2ctype_pool_str2290[sizeof("tagalog")];
    30353     char uniname2ctype_pool_str2292[sizeof("khoj")];
    30354     char uniname2ctype_pool_str2311[sizeof("bopomofo")];
    30355     char uniname2ctype_pool_str2318[sizeof("rejang")];
    30356     char uniname2ctype_pool_str2326[sizeof("buhd")];
    30357     char uniname2ctype_pool_str2343[sizeof("incjkradicalssupplement")];
    30358     char uniname2ctype_pool_str2382[sizeof("inkanbun")];
    30359     char uniname2ctype_pool_str2406[sizeof("variationselector")];
    30360     char uniname2ctype_pool_str2417[sizeof("inkangxiradicals")];
    30361     char uniname2ctype_pool_str2421[sizeof("inhighsurrogates")];
    30362     char uniname2ctype_pool_str2431[sizeof("insupplementaryprivateuseareab")];
    30363     char uniname2ctype_pool_str2445[sizeof("ogrext")];
    30364     char uniname2ctype_pool_str2449[sizeof("batk")];
    30365     char uniname2ctype_pool_str2454[sizeof("inhanguljamoextendedb")];
    30366     char uniname2ctype_pool_str2457[sizeof("inbatak")];
    30367     char uniname2ctype_pool_str2462[sizeof("incyrillicextendedb")];
    30368     char uniname2ctype_pool_str2502[sizeof("innoblock")];
    30369     char uniname2ctype_pool_str2527[sizeof("any")];
    30370     char uniname2ctype_pool_str2534[sizeof("xsux")];
    30371     char uniname2ctype_pool_str2562[sizeof("bugi")];
    30372     char uniname2ctype_pool_str2570[sizeof("inkhudawadi")];
    30373     char uniname2ctype_pool_str2571[sizeof("telugu")];
    30374     char uniname2ctype_pool_str2579[sizeof("changeswhenuppercased")];
    30375     char uniname2ctype_pool_str2588[sizeof("grek")];
    30376     char uniname2ctype_pool_str2591[sizeof("guru")];
    30377     char uniname2ctype_pool_str2595[sizeof("paragraphseparator")];
    30378     char uniname2ctype_pool_str2613[sizeof("buginese")];
    30379     char uniname2ctype_pool_str2617[sizeof("inyisyllables")];
    30380     char uniname2ctype_pool_str2631[sizeof("egyp")];
    30381     char uniname2ctype_pool_str2634[sizeof("khudawadi")];
    30382     char uniname2ctype_pool_str2643[sizeof("unknown")];
    30383     char uniname2ctype_pool_str2685[sizeof("bassavah")];
    30384     char uniname2ctype_pool_str2689[sizeof("inegyptianhieroglyphs")];
    30385     char uniname2ctype_pool_str2709[sizeof("buhid")];
    30386     char uniname2ctype_pool_str2722[sizeof("inkayahli")];
    30387     char uniname2ctype_pool_str2732[sizeof("inmeroiticcursive")];
    30388     char uniname2ctype_pool_str2734[sizeof("incjkcompatibility")];
    30389     char uniname2ctype_pool_str2787[sizeof("oldsoutharabian")];
    30390     char uniname2ctype_pool_str2795[sizeof("quotationmark")];
    30391     char uniname2ctype_pool_str2889[sizeof("inhangulcompatibilityjamo")];
    30392     char uniname2ctype_pool_str2898[sizeof("qmark")];
    30393     char uniname2ctype_pool_str2902[sizeof("incjkunifiedideographsextensionc")];
    30394     char uniname2ctype_pool_str2906[sizeof("sk")];
    30395     char uniname2ctype_pool_str2909[sizeof("incjkunifiedideographsextensiona")];
    30396     char uniname2ctype_pool_str2918[sizeof("incjkunifiedideographs")];
    30397     char uniname2ctype_pool_str2984[sizeof("katakana")];
    30398     char uniname2ctype_pool_str3112[sizeof("kayahli")];
    30399     char uniname2ctype_pool_str3137[sizeof("duployan")];
    30400     char uniname2ctype_pool_str3278[sizeof("incjkunifiedideographsextensiond")];
    30401     char uniname2ctype_pool_str3360[sizeof("inbopomofoextended")];
    30402     char uniname2ctype_pool_str3466[sizeof("khojki")];
    30403     char uniname2ctype_pool_str3777[sizeof("zyyy")];
    30404     char uniname2ctype_pool_str3778[sizeof("egyptianhieroglyphs")];
    30405     char uniname2ctype_pool_str3827[sizeof("incjkunifiedideographsextensionb")];
    30406     char uniname2ctype_pool_str3886[sizeof("batak")];
    30407     char uniname2ctype_pool_str3941[sizeof("blank")];
    30408     char uniname2ctype_pool_str3995[sizeof("inboxdrawing")];
    30409     char uniname2ctype_pool_str4025[sizeof("greek")];
    30410     char uniname2ctype_pool_str4035[sizeof("gurmukhi")];
    30411     char uniname2ctype_pool_str4122[sizeof("grlink")];
    30412     char uniname2ctype_pool_str4322[sizeof("graphemelink")];
     35328    char uniname2ctype_pool_str1427[sizeof("format")];
     35329    char uniname2ctype_pool_str1429[sizeof("shavian")];
     35330    char uniname2ctype_pool_str1434[sizeof("insinhalaarchaicnumbers")];
     35331    char uniname2ctype_pool_str1435[sizeof("cuneiform")];
     35332    char uniname2ctype_pool_str1439[sizeof("inmyanmarextendedb")];
     35333    char uniname2ctype_pool_str1444[sizeof("punctuation")];
     35334    char uniname2ctype_pool_str1449[sizeof("inarabicextendeda")];
     35335    char uniname2ctype_pool_str1450[sizeof("hatr")];
     35336    char uniname2ctype_pool_str1451[sizeof("inhanunoo")];
     35337    char uniname2ctype_pool_str1453[sizeof("inlatinextendedd")];
     35338    char uniname2ctype_pool_str1455[sizeof("modifierletter")];
     35339    char uniname2ctype_pool_str1456[sizeof("odi")];
     35340    char uniname2ctype_pool_str1458[sizeof("ahex")];
     35341    char uniname2ctype_pool_str1463[sizeof("logicalorderexception")];
     35342    char uniname2ctype_pool_str1464[sizeof("inbyzantinemusicalsymbols")];
     35343    char uniname2ctype_pool_str1469[sizeof("sund")];
     35344    char uniname2ctype_pool_str1470[sizeof("number")];
     35345    char uniname2ctype_pool_str1471[sizeof("insundanesesupplement")];
     35346    char uniname2ctype_pool_str1485[sizeof("incopticepactnumbers")];
     35347    char uniname2ctype_pool_str1490[sizeof("emojimodifier")];
     35348    char uniname2ctype_pool_str1496[sizeof("zp")];
     35349    char uniname2ctype_pool_str1497[sizeof("asciihexdigit")];
     35350    char uniname2ctype_pool_str1500[sizeof("indevanagari")];
     35351    char uniname2ctype_pool_str1508[sizeof("innewa")];
     35352    char uniname2ctype_pool_str1510[sizeof("avestan")];
     35353    char uniname2ctype_pool_str1521[sizeof("insorasompeng")];
     35354    char uniname2ctype_pool_str1535[sizeof("inmiscellaneousmathematicalsymbolsb")];
     35355    char uniname2ctype_pool_str1536[sizeof("inbraillepatterns")];
     35356    char uniname2ctype_pool_str1539[sizeof("nonspacingmark")];
     35357    char uniname2ctype_pool_str1540[sizeof("ingreekandcoptic")];
     35358    char uniname2ctype_pool_str1545[sizeof("xposixpunct")];
     35359    char uniname2ctype_pool_str1553[sizeof("inwarangciti")];
     35360    char uniname2ctype_pool_str1555[sizeof("oidc")];
     35361    char uniname2ctype_pool_str1560[sizeof("terminalpunctuation")];
     35362    char uniname2ctype_pool_str1565[sizeof("cf")];
     35363    char uniname2ctype_pool_str1572[sizeof("lower")];
     35364    char uniname2ctype_pool_str1580[sizeof("inunifiedcanadianaboriginalsyllabics")];
     35365    char uniname2ctype_pool_str1585[sizeof("idsb")];
     35366    char uniname2ctype_pool_str1589[sizeof("inbalinese")];
     35367    char uniname2ctype_pool_str1593[sizeof("induployan")];
     35368    char uniname2ctype_pool_str1594[sizeof("innoblock")];
     35369    char uniname2ctype_pool_str1595[sizeof("pf")];
     35370    char uniname2ctype_pool_str1602[sizeof("inoriya")];
     35371    char uniname2ctype_pool_str1604[sizeof("inkatakanaphoneticextensions")];
     35372    char uniname2ctype_pool_str1606[sizeof("inkayahli")];
     35373    char uniname2ctype_pool_str1607[sizeof("wara")];
     35374    char uniname2ctype_pool_str1608[sizeof("innushu")];
     35375    char uniname2ctype_pool_str1609[sizeof("lepcha")];
     35376    char uniname2ctype_pool_str1611[sizeof("inmeroitichieroglyphs")];
     35377    char uniname2ctype_pool_str1617[sizeof("beng")];
     35378    char uniname2ctype_pool_str1623[sizeof("idstrinaryoperator")];
     35379    char uniname2ctype_pool_str1628[sizeof("oids")];
     35380    char uniname2ctype_pool_str1630[sizeof("regionalindicator")];
     35381    char uniname2ctype_pool_str1631[sizeof("enclosingmark")];
     35382    char uniname2ctype_pool_str1632[sizeof("java")];
     35383    char uniname2ctype_pool_str1636[sizeof("tale")];
     35384    char uniname2ctype_pool_str1638[sizeof("emojimodifierbase")];
     35385    char uniname2ctype_pool_str1645[sizeof("inphoneticextensions")];
     35386    char uniname2ctype_pool_str1647[sizeof("lowercase")];
     35387    char uniname2ctype_pool_str1648[sizeof("inverticalforms")];
     35388    char uniname2ctype_pool_str1650[sizeof("javanese")];
     35389    char uniname2ctype_pool_str1654[sizeof("sentenceterminal")];
     35390    char uniname2ctype_pool_str1655[sizeof("ingreekextended")];
     35391    char uniname2ctype_pool_str1656[sizeof("invariationselectors")];
     35392    char uniname2ctype_pool_str1657[sizeof("cwcm")];
     35393    char uniname2ctype_pool_str1663[sizeof("lyci")];
     35394    char uniname2ctype_pool_str1666[sizeof("avst")];
     35395    char uniname2ctype_pool_str1669[sizeof("lycian")];
     35396    char uniname2ctype_pool_str1671[sizeof("zanabazarsquare")];
     35397    char uniname2ctype_pool_str1672[sizeof("sarb")];
     35398    char uniname2ctype_pool_str1673[sizeof("invedicextensions")];
     35399    char uniname2ctype_pool_str1674[sizeof("inkangxiradicals")];
     35400    char uniname2ctype_pool_str1677[sizeof("intaiviet")];
     35401    char uniname2ctype_pool_str1682[sizeof("mymr")];
     35402    char uniname2ctype_pool_str1690[sizeof("incjkradicalssupplement")];
     35403    char uniname2ctype_pool_str1695[sizeof("myanmar")];
     35404    char uniname2ctype_pool_str1697[sizeof("taml")];
     35405    char uniname2ctype_pool_str1714[sizeof("olower")];
     35406    char uniname2ctype_pool_str1725[sizeof("nl")];
     35407    char uniname2ctype_pool_str1727[sizeof("inethiopicsupplement")];
     35408    char uniname2ctype_pool_str1728[sizeof("olck")];
     35409    char uniname2ctype_pool_str1730[sizeof("inethiopicextendeda")];
     35410    char uniname2ctype_pool_str1736[sizeof("graph")];
     35411    char uniname2ctype_pool_str1737[sizeof("olchiki")];
     35412    char uniname2ctype_pool_str1741[sizeof("inphoneticextensionssupplement")];
     35413    char uniname2ctype_pool_str1743[sizeof("emojicomponent")];
     35414    char uniname2ctype_pool_str1746[sizeof("inunifiedcanadianaboriginalsyllabicsextended")];
     35415    char uniname2ctype_pool_str1748[sizeof("ingeometricshapes")];
     35416    char uniname2ctype_pool_str1752[sizeof("invariationselectorssupplement")];
     35417    char uniname2ctype_pool_str1754[sizeof("gujr")];
     35418    char uniname2ctype_pool_str1762[sizeof("sharada")];
     35419    char uniname2ctype_pool_str1766[sizeof("gujarati")];
     35420    char uniname2ctype_pool_str1767[sizeof("nchar")];
     35421    char uniname2ctype_pool_str1772[sizeof("innewtailue")];
     35422    char uniname2ctype_pool_str1774[sizeof("glag")];
     35423    char uniname2ctype_pool_str1780[sizeof("ideographic")];
     35424    char uniname2ctype_pool_str1783[sizeof("shrd")];
     35425    char uniname2ctype_pool_str1785[sizeof("insoyombo")];
     35426    char uniname2ctype_pool_str1789[sizeof("inbamum")];
     35427    char uniname2ctype_pool_str1800[sizeof("inlatin1supplement")];
     35428    char uniname2ctype_pool_str1802[sizeof("dash")];
     35429    char uniname2ctype_pool_str1806[sizeof("indingbats")];
     35430    char uniname2ctype_pool_str1808[sizeof("spaceseparator")];
     35431    char uniname2ctype_pool_str1813[sizeof("phagspa")];
     35432    char uniname2ctype_pool_str1814[sizeof("titlecaseletter")];
     35433    char uniname2ctype_pool_str1815[sizeof("incjkcompatibility")];
     35434    char uniname2ctype_pool_str1818[sizeof("intangut")];
     35435    char uniname2ctype_pool_str1819[sizeof("incombiningdiacriticalmarks")];
     35436    char uniname2ctype_pool_str1821[sizeof("inlisu")];
     35437    char uniname2ctype_pool_str1825[sizeof("siddham")];
     35438    char uniname2ctype_pool_str1829[sizeof("incombiningdiacriticalmarksforsymbols")];
     35439    char uniname2ctype_pool_str1840[sizeof("caucasianalbanian")];
     35440    char uniname2ctype_pool_str1843[sizeof("uideo")];
     35441    char uniname2ctype_pool_str1846[sizeof("indevanagariextended")];
     35442    char uniname2ctype_pool_str1847[sizeof("narb")];
     35443    char uniname2ctype_pool_str1857[sizeof("inbopomofo")];
     35444    char uniname2ctype_pool_str1858[sizeof("incjkunifiedideographsextensionf")];
     35445    char uniname2ctype_pool_str1861[sizeof("inmeroiticcursive")];
     35446    char uniname2ctype_pool_str1866[sizeof("patsyn")];
     35447    char uniname2ctype_pool_str1885[sizeof("insuperscriptsandsubscripts")];
     35448    char uniname2ctype_pool_str1894[sizeof("lydi")];
     35449    char uniname2ctype_pool_str1900[sizeof("lydian")];
     35450    char uniname2ctype_pool_str1903[sizeof("intags")];
     35451    char uniname2ctype_pool_str1909[sizeof("intelugu")];
     35452    char uniname2ctype_pool_str1910[sizeof("intifinagh")];
     35453    char uniname2ctype_pool_str1914[sizeof("ingeometricshapesextended")];
     35454    char uniname2ctype_pool_str1915[sizeof("incombiningdiacriticalmarkssupplement")];
     35455    char uniname2ctype_pool_str1922[sizeof("deva")];
     35456    char uniname2ctype_pool_str1924[sizeof("inprivateusearea")];
     35457    char uniname2ctype_pool_str1932[sizeof("devanagari")];
     35458    char uniname2ctype_pool_str1933[sizeof("noncharactercodepoint")];
     35459    char uniname2ctype_pool_str1934[sizeof("inbrahmi")];
     35460    char uniname2ctype_pool_str1943[sizeof("lowercaseletter")];
     35461    char uniname2ctype_pool_str1944[sizeof("word")];
     35462    char uniname2ctype_pool_str1975[sizeof("caseignorable")];
     35463    char uniname2ctype_pool_str1976[sizeof("inyiradicals")];
     35464    char uniname2ctype_pool_str1979[sizeof("deprecated")];
     35465    char uniname2ctype_pool_str1981[sizeof("thai")];
     35466    char uniname2ctype_pool_str1983[sizeof("thaa")];
     35467    char uniname2ctype_pool_str1985[sizeof("incombiningdiacriticalmarksextended")];
     35468    char uniname2ctype_pool_str1989[sizeof("inmathematicalalphanumericsymbols")];
     35469    char uniname2ctype_pool_str1991[sizeof("thaana")];
     35470    char uniname2ctype_pool_str1995[sizeof("inornamentaldingbats")];
     35471    char uniname2ctype_pool_str1997[sizeof("oldpersian")];
     35472    char uniname2ctype_pool_str1998[sizeof("unassigned")];
     35473    char uniname2ctype_pool_str1999[sizeof("insupplementalarrowsa")];
     35474    char uniname2ctype_pool_str2003[sizeof("inpaucinhau")];
     35475    char uniname2ctype_pool_str2005[sizeof("cwt")];
     35476    char uniname2ctype_pool_str2007[sizeof("tirhuta")];
     35477    char uniname2ctype_pool_str2008[sizeof("mahj")];
     35478    char uniname2ctype_pool_str2013[sizeof("insmallformvariants")];
     35479    char uniname2ctype_pool_str2015[sizeof("tirh")];
     35480    char uniname2ctype_pool_str2017[sizeof("orkh")];
     35481    char uniname2ctype_pool_str2020[sizeof("mahajani")];
     35482    char uniname2ctype_pool_str2047[sizeof("softdotted")];
     35483    char uniname2ctype_pool_str2049[sizeof("inphagspa")];
     35484    char uniname2ctype_pool_str2056[sizeof("inethiopicextended")];
     35485    char uniname2ctype_pool_str2059[sizeof("taitham")];
     35486    char uniname2ctype_pool_str2061[sizeof("assigned")];
     35487    char uniname2ctype_pool_str2068[sizeof("nbat")];
     35488    char uniname2ctype_pool_str2072[sizeof("incyrillicextendedb")];
     35489    char uniname2ctype_pool_str2073[sizeof("khoj")];
     35490    char uniname2ctype_pool_str2076[sizeof("buhd")];
     35491    char uniname2ctype_pool_str2079[sizeof("nabataean")];
     35492    char uniname2ctype_pool_str2084[sizeof("inalphabeticpresentationforms")];
     35493    char uniname2ctype_pool_str2091[sizeof("sorasompeng")];
     35494    char uniname2ctype_pool_str2095[sizeof("insupplementalarrowsc")];
     35495    char uniname2ctype_pool_str2096[sizeof("oldpermic")];
     35496    char uniname2ctype_pool_str2097[sizeof("cyrl")];
     35497    char uniname2ctype_pool_str2101[sizeof("finalpunctuation")];
     35498    char uniname2ctype_pool_str2112[sizeof("meroitichieroglyphs")];
     35499    char uniname2ctype_pool_str2114[sizeof("inarabicsupplement")];
     35500    char uniname2ctype_pool_str2117[sizeof("phlp")];
     35501    char uniname2ctype_pool_str2119[sizeof("inpsalterpahlavi")];
     35502    char uniname2ctype_pool_str2134[sizeof("mlym")];
     35503    char uniname2ctype_pool_str2139[sizeof("incjkunifiedideographsextensionb")];
     35504    char uniname2ctype_pool_str2146[sizeof("palmyrene")];
     35505    char uniname2ctype_pool_str2148[sizeof("insupplementalmathematicaloperators")];
     35506    char uniname2ctype_pool_str2149[sizeof("malayalam")];
     35507    char uniname2ctype_pool_str2154[sizeof("soyo")];
     35508    char uniname2ctype_pool_str2158[sizeof("hex")];
     35509    char uniname2ctype_pool_str2161[sizeof("phag")];
     35510    char uniname2ctype_pool_str2165[sizeof("graphemeclusterbreak=ebase")];
     35511    char uniname2ctype_pool_str2172[sizeof("graphemeclusterbreak=ebasegaz")];
     35512    char uniname2ctype_pool_str2174[sizeof("inhanguljamo")];
     35513    char uniname2ctype_pool_str2176[sizeof("bugi")];
     35514    char uniname2ctype_pool_str2179[sizeof("graphemeclusterbreak=spacingmark")];
     35515    char uniname2ctype_pool_str2182[sizeof("inhanguljamoextendeda")];
     35516    char uniname2ctype_pool_str2187[sizeof("currencysymbol")];
     35517    char uniname2ctype_pool_str2189[sizeof("tamil")];
     35518    char uniname2ctype_pool_str2192[sizeof("graphemeclusterbreak=cr")];
     35519    char uniname2ctype_pool_str2193[sizeof("talu")];
     35520    char uniname2ctype_pool_str2196[sizeof("buginese")];
     35521    char uniname2ctype_pool_str2197[sizeof("telu")];
     35522    char uniname2ctype_pool_str2198[sizeof("ingeorgiansupplement")];
     35523    char uniname2ctype_pool_str2199[sizeof("graphemeclusterbreak=emodifier")];
     35524    char uniname2ctype_pool_str2207[sizeof("graphemeclusterbreak=regionalindicator")];
     35525    char uniname2ctype_pool_str2210[sizeof("inlimbu")];
     35526    char uniname2ctype_pool_str2224[sizeof("inenclosedcjklettersandmonths")];
     35527    char uniname2ctype_pool_str2225[sizeof("tangut")];
     35528    char uniname2ctype_pool_str2229[sizeof("inmathematicaloperators")];
     35529    char uniname2ctype_pool_str2232[sizeof("newa")];
     35530    char uniname2ctype_pool_str2249[sizeof("newtailue")];
     35531    char uniname2ctype_pool_str2252[sizeof("hebr")];
     35532    char uniname2ctype_pool_str2260[sizeof("inbuhid")];
     35533    char uniname2ctype_pool_str2263[sizeof("insuttonsignwriting")];
     35534    char uniname2ctype_pool_str2264[sizeof("syrc")];
     35535    char uniname2ctype_pool_str2271[sizeof("dep")];
     35536    char uniname2ctype_pool_str2276[sizeof("inbassavah")];
     35537    char uniname2ctype_pool_str2286[sizeof("otheridcontinue")];
     35538    char uniname2ctype_pool_str2289[sizeof("inletterlikesymbols")];
     35539    char uniname2ctype_pool_str2296[sizeof("ext")];
     35540    char uniname2ctype_pool_str2300[sizeof("other")];
     35541    char uniname2ctype_pool_str2306[sizeof("inmongoliansupplement")];
     35542    char uniname2ctype_pool_str2307[sizeof("othernumber")];
     35543    char uniname2ctype_pool_str2311[sizeof("injavanese")];
     35544    char uniname2ctype_pool_str2313[sizeof("olditalic")];
     35545    char uniname2ctype_pool_str2327[sizeof("nshu")];
     35546    char uniname2ctype_pool_str2349[sizeof("inarabicpresentationformsb")];
     35547    char uniname2ctype_pool_str2350[sizeof("inlowsurrogates")];
     35548    char uniname2ctype_pool_str2353[sizeof("incombininghalfmarks")];
     35549    char uniname2ctype_pool_str2360[sizeof("inbengali")];
     35550    char uniname2ctype_pool_str2364[sizeof("cwcf")];
     35551    char uniname2ctype_pool_str2369[sizeof("inbuginese")];
     35552    char uniname2ctype_pool_str2372[sizeof("syriac")];
     35553    char uniname2ctype_pool_str2380[sizeof("ethi")];
     35554    char uniname2ctype_pool_str2386[sizeof("otheralphabetic")];
     35555    char uniname2ctype_pool_str2393[sizeof("emojipresentation")];
     35556    char uniname2ctype_pool_str2399[sizeof("inarabicmathematicalalphabeticsymbols")];
     35557    char uniname2ctype_pool_str2408[sizeof("tang")];
     35558    char uniname2ctype_pool_str2409[sizeof("buhid")];
     35559    char uniname2ctype_pool_str2412[sizeof("graphemeclusterbreak=t")];
     35560    char uniname2ctype_pool_str2413[sizeof("extender")];
     35561    char uniname2ctype_pool_str2414[sizeof("graphemeclusterbreak=lvt")];
     35562    char uniname2ctype_pool_str2422[sizeof("tagbanwa")];
     35563    char uniname2ctype_pool_str2423[sizeof("hang")];
     35564    char uniname2ctype_pool_str2433[sizeof("incurrencysymbols")];
     35565    char uniname2ctype_pool_str2449[sizeof("ingujarati")];
     35566    char uniname2ctype_pool_str2451[sizeof("paragraphseparator")];
     35567    char uniname2ctype_pool_str2452[sizeof("tibt")];
     35568    char uniname2ctype_pool_str2461[sizeof("tibetan")];
     35569    char uniname2ctype_pool_str2465[sizeof("ogam")];
     35570    char uniname2ctype_pool_str2467[sizeof("cwl")];
     35571    char uniname2ctype_pool_str2469[sizeof("oalpha")];
     35572    char uniname2ctype_pool_str2473[sizeof("hiragana")];
     35573    char uniname2ctype_pool_str2475[sizeof("surrogate")];
     35574    char uniname2ctype_pool_str2481[sizeof("inbamumsupplement")];
     35575    char uniname2ctype_pool_str2483[sizeof("inrejang")];
     35576    char uniname2ctype_pool_str2484[sizeof("intangutcomponents")];
     35577    char uniname2ctype_pool_str2488[sizeof("hmng")];
     35578    char uniname2ctype_pool_str2489[sizeof("graphemeclusterbreak=extend")];
     35579    char uniname2ctype_pool_str2490[sizeof("graphemeclusterbreak=prepend")];
     35580    char uniname2ctype_pool_str2493[sizeof("bassavah")];
     35581    char uniname2ctype_pool_str2500[sizeof("ingothic")];
     35582    char uniname2ctype_pool_str2507[sizeof("alphabetic")];
     35583    char uniname2ctype_pool_str2509[sizeof("mathsymbol")];
     35584    char uniname2ctype_pool_str2515[sizeof("oupper")];
     35585    char uniname2ctype_pool_str2519[sizeof("oldhungarian")];
     35586    char uniname2ctype_pool_str2523[sizeof("tavt")];
     35587    char uniname2ctype_pool_str2526[sizeof("insupplementalpunctuation")];
     35588    char uniname2ctype_pool_str2539[sizeof("dashpunctuation")];
     35589    char uniname2ctype_pool_str2545[sizeof("inplayingcards")];
     35590    char uniname2ctype_pool_str2550[sizeof("inaegeannumbers")];
     35591    char uniname2ctype_pool_str2573[sizeof("osge")];
     35592    char uniname2ctype_pool_str2576[sizeof("digit")];
     35593    char uniname2ctype_pool_str2579[sizeof("dupl")];
     35594    char uniname2ctype_pool_str2587[sizeof("inlinearbsyllabary")];
     35595    char uniname2ctype_pool_str2589[sizeof("cypriot")];
     35596    char uniname2ctype_pool_str2594[sizeof("wspace")];
     35597    char uniname2ctype_pool_str2601[sizeof("whitespace")];
     35598    char uniname2ctype_pool_str2617[sizeof("cwu")];
     35599    char uniname2ctype_pool_str2618[sizeof("nushu")];
     35600    char uniname2ctype_pool_str2622[sizeof("intagbanwa")];
     35601    char uniname2ctype_pool_str2630[sizeof("sylo")];
     35602    char uniname2ctype_pool_str2643[sizeof("graphemeclusterbreak=l")];
     35603    char uniname2ctype_pool_str2649[sizeof("graphemeclusterbreak=control")];
     35604    char uniname2ctype_pool_str2653[sizeof("oldturkic")];
     35605    char uniname2ctype_pool_str2660[sizeof("changeswhencasemapped")];
     35606    char uniname2ctype_pool_str2678[sizeof("rjng")];
     35607    char uniname2ctype_pool_str2693[sizeof("cyrillic")];
     35608    char uniname2ctype_pool_str2702[sizeof("hangul")];
     35609    char uniname2ctype_pool_str2705[sizeof("modifiersymbol")];
     35610    char uniname2ctype_pool_str2708[sizeof("inalchemicalsymbols")];
     35611    char uniname2ctype_pool_str2710[sizeof("insupplementaryprivateuseareaa")];
     35612    char uniname2ctype_pool_str2717[sizeof("orya")];
     35613    char uniname2ctype_pool_str2751[sizeof("inmahjongtiles")];
     35614    char uniname2ctype_pool_str2758[sizeof("changeswhentitlecased")];
     35615    char uniname2ctype_pool_str2763[sizeof("tifinagh")];
     35616    char uniname2ctype_pool_str2775[sizeof("otherlowercase")];
     35617    char uniname2ctype_pool_str2779[sizeof("inglagolitic")];
     35618    char uniname2ctype_pool_str2791[sizeof("otheridstart")];
     35619    char uniname2ctype_pool_str2792[sizeof("ugar")];
     35620    char uniname2ctype_pool_str2797[sizeof("otherletter")];
     35621    char uniname2ctype_pool_str2823[sizeof("inhangulsyllables")];
     35622    char uniname2ctype_pool_str2829[sizeof("elba")];
     35623    char uniname2ctype_pool_str2834[sizeof("intagalog")];
     35624    char uniname2ctype_pool_str2850[sizeof("otheruppercase")];
     35625    char uniname2ctype_pool_str2879[sizeof("omath")];
     35626    char uniname2ctype_pool_str2883[sizeof("warangciti")];
     35627    char uniname2ctype_pool_str2888[sizeof("sylotinagri")];
     35628    char uniname2ctype_pool_str2890[sizeof("shaw")];
     35629    char uniname2ctype_pool_str2891[sizeof("inpahawhhmong")];
     35630    char uniname2ctype_pool_str2901[sizeof("inhalfwidthandfullwidthforms")];
     35631    char uniname2ctype_pool_str2905[sizeof("inlatinextendedb")];
     35632    char uniname2ctype_pool_str2926[sizeof("osmanya")];
     35633    char uniname2ctype_pool_str2930[sizeof("graphemeclusterbreak=lf")];
     35634    char uniname2ctype_pool_str2932[sizeof("othersymbol")];
     35635    char uniname2ctype_pool_str2953[sizeof("defaultignorablecodepoint")];
     35636    char uniname2ctype_pool_str2967[sizeof("incypriotsyllabary")];
     35637    char uniname2ctype_pool_str2968[sizeof("khudawadi")];
     35638    char uniname2ctype_pool_str2972[sizeof("kayahli")];
     35639    char uniname2ctype_pool_str2984[sizeof("hung")];
     35640    char uniname2ctype_pool_str2987[sizeof("unknown")];
     35641    char uniname2ctype_pool_str2989[sizeof("inyijinghexagramsymbols")];
     35642    char uniname2ctype_pool_str3007[sizeof("elbasan")];
     35643    char uniname2ctype_pool_str3016[sizeof("inbopomofoextended")];
     35644    char uniname2ctype_pool_str3019[sizeof("changeswhenlowercased")];
     35645    char uniname2ctype_pool_str3020[sizeof("otherpunctuation")];
     35646    char uniname2ctype_pool_str3038[sizeof("upper")];
     35647    char uniname2ctype_pool_str3052[sizeof("insupplementalarrowsb")];
     35648    char uniname2ctype_pool_str3066[sizeof("oldnortharabian")];
     35649    char uniname2ctype_pool_str3094[sizeof("changeswhenuppercased")];
     35650    char uniname2ctype_pool_str3113[sizeof("uppercase")];
     35651    char uniname2ctype_pool_str3121[sizeof("ugaritic")];
     35652    char uniname2ctype_pool_str3153[sizeof("otherdefaultignorablecodepoint")];
     35653    char uniname2ctype_pool_str3177[sizeof("othermath")];
     35654    char uniname2ctype_pool_str3180[sizeof("tfng")];
     35655    char uniname2ctype_pool_str3193[sizeof("symbol")];
     35656    char uniname2ctype_pool_str3195[sizeof("hexdigit")];
     35657    char uniname2ctype_pool_str3213[sizeof("any")];
     35658    char uniname2ctype_pool_str3235[sizeof("inhanguljamoextendedb")];
     35659    char uniname2ctype_pool_str3238[sizeof("ethiopic")];
     35660    char uniname2ctype_pool_str3276[sizeof("aghb")];
     35661    char uniname2ctype_pool_str3279[sizeof("graphemeclusterbreak=v")];
     35662    char uniname2ctype_pool_str3280[sizeof("graphemeclusterbreak=lv")];
     35663    char uniname2ctype_pool_str3285[sizeof("soyombo")];
     35664    char uniname2ctype_pool_str3296[sizeof("graphemeclusterbreak=zwj")];
     35665    char uniname2ctype_pool_str3305[sizeof("graphemeclusterbreak=glueafterzwj")];
     35666    char uniname2ctype_pool_str3315[sizeof("sgnw")];
     35667    char uniname2ctype_pool_str3367[sizeof("changeswhencasefolded")];
     35668    char uniname2ctype_pool_str3373[sizeof("ogham")];
     35669    char uniname2ctype_pool_str3409[sizeof("uppercaseletter")];
     35670    char uniname2ctype_pool_str3438[sizeof("inhebrew")];
     35671    char uniname2ctype_pool_str3442[sizeof("inhighprivateusesurrogates")];
     35672    char uniname2ctype_pool_str3448[sizeof("openpunctuation")];
     35673    char uniname2ctype_pool_str3453[sizeof("ogrext")];
     35674    char uniname2ctype_pool_str3454[sizeof("hyphen")];
     35675    char uniname2ctype_pool_str3465[sizeof("tagb")];
     35676    char uniname2ctype_pool_str3496[sizeof("inyisyllables")];
     35677    char uniname2ctype_pool_str3593[sizeof("oldsoutharabian")];
     35678    char uniname2ctype_pool_str3662[sizeof("duployan")];
     35679    char uniname2ctype_pool_str3676[sizeof("hluw")];
     35680    char uniname2ctype_pool_str3689[sizeof("inglagoliticsupplement")];
     35681    char uniname2ctype_pool_str3697[sizeof("insupplementalsymbolsandpictographs")];
     35682    char uniname2ctype_pool_str3763[sizeof("insupplementaryprivateuseareab")];
     35683    char uniname2ctype_pool_str3791[sizeof("inegyptianhieroglyphs")];
     35684    char uniname2ctype_pool_str3960[sizeof("rejang")];
     35685    char uniname2ctype_pool_str3971[sizeof("inhangulcompatibilityjamo")];
     35686    char uniname2ctype_pool_str4036[sizeof("telugu")];
     35687    char uniname2ctype_pool_str4164[sizeof("tglg")];
     35688    char uniname2ctype_pool_str4187[sizeof("tagalog")];
     35689    char uniname2ctype_pool_str4208[sizeof("othergraphemeextend")];
     35690    char uniname2ctype_pool_str4460[sizeof("unifiedideograph")];
     35691    char uniname2ctype_pool_str4464[sizeof("inboxdrawing")];
     35692    char uniname2ctype_pool_str4483[sizeof("pahawhhmong")];
     35693    char uniname2ctype_pool_str4608[sizeof("inhighsurrogates")];
     35694    char uniname2ctype_pool_str4634[sizeof("signwriting")];
     35695    char uniname2ctype_pool_str4678[sizeof("zyyy")];
     35696    char uniname2ctype_pool_str4841[sizeof("egyp")];
     35697    char uniname2ctype_pool_str5170[sizeof("hebrew")];
     35698    char uniname2ctype_pool_str6145[sizeof("egyptianhieroglyphs")];
    3041335699#endif /* USE_UNICODE_PROPERTIES */
    3041435700  };
     
    3041735703#ifndef USE_UNICODE_PROPERTIES
    3041835704    "word",
     35705#else /* USE_UNICODE_PROPERTIES */
     35706    "yi",
     35707    "cn",
     35708    "lina",
     35709    "yiii",
     35710    "lana",
     35711    "ci",
     35712    "mn",
     35713    "z",
     35714    "mani",
     35715    "lo",
     35716    "me",
     35717    "loe",
     35718    "lao",
     35719    "laoo",
     35720    "co",
     35721    "miao",
     35722    "pi",
     35723    "inkannada",
     35724    "gran",
     35725    "innko",
     35726    "zzzz",
     35727    "pe",
     35728    "cari",
     35729    "lineara",
     35730    "carian",
     35731    "mendekikakui",
     35732    "geor",
     35733    "po",
     35734    "grek",
     35735    "meeteimayek",
     35736    "mark",
     35737    "mero",
     35738    "kana",
     35739    "m",
     35740    "mro",
     35741    "mroo",
     35742    "greek",
     35743    "gonm",
     35744    "inkharoshthi",
     35745    "cakm",
     35746    "inmanichaean",
     35747    "c",
     35748    "inarmenian",
     35749    "common",
     35750    "inosmanya",
     35751    "inmro",
     35752    "inmiao",
     35753    "mandaic",
     35754    "inmyanmar",
     35755    "lm",
     35756    "prependedconcatenationmark",
     35757    "inideographicsymbolsandpunctuation",
     35758    "inchakma",
     35759    "inkhmer",
     35760    "perm",
     35761    "connectorpunctuation",
     35762    "marc",
     35763    "combiningmark",
     35764    "merc",
     35765    "inrunic",
     35766    "incarian",
     35767    "incuneiformnumbersandpunctuation",
     35768    "inahom",
     35769    "incherokee",
     35770    "qaai",
     35771    "cans",
     35772    "lc",
     35773    "incuneiform",
     35774    "cc",
     35775    "armn",
     35776    "inavestan",
     35777    "armi",
     35778    "mc",
     35779    "armenian",
     35780    "inipaextensions",
     35781    "inmarchen",
     35782    "pc",
     35783    "insharada",
     35784    "lineseparator",
     35785    "masaramgondi",
     35786    "inarrows",
     35787    "ri",
     35788    "incham",
     35789    "latn",
     35790    "incyrillic",
     35791    "latin",
     35792    "inzanabazarsquare",
     35793    "insamaritan",
     35794    "pcm",
     35795    "inmasaramgondi",
     35796    "qmark",
     35797    "qaac",
     35798    "mtei",
     35799    "inthai",
     35800    "inscriptionalparthian",
     35801    "inthaana",
     35802    "inkaithi",
     35803    "initialpunctuation",
     35804    "inkatakana",
     35805    "inkhmersymbols",
     35806    "insyriac",
     35807    "intakri",
     35808    "prti",
     35809    "arabic",
     35810    "mand",
     35811    "cs",
     35812    "mend",
     35813    "zs",
     35814    "letter",
     35815    "privateuse",
     35816    "modi",
     35817    "katakana",
     35818    "ideo",
     35819    "brai",
     35820    "xidcontinue",
     35821    "inmyanmarextendeda",
     35822    "ascii",
     35823    "ps",
     35824    "inkanaextendeda",
     35825    "inmeeteimayek",
     35826    "inruminumeralsymbols",
     35827    "letternumber",
     35828    "knda",
     35829    "kannada",
     35830    "inoldnortharabian",
     35831    "inideographicdescriptioncharacters",
     35832    "inmodi",
     35833    "incjkcompatibilityforms",
     35834    "incjkcompatibilityideographs",
     35835    "xidc",
     35836    "inmendekikakui",
     35837    "brahmi",
     35838    "inolditalic",
     35839    "inmiscellaneousmathematicalsymbolsa",
     35840    "inspecials",
     35841    "inemoticons",
     35842    "patternwhitespace",
     35843    "gothic",
     35844    "intransportandmapsymbols",
     35845    "l",
     35846    "psalterpahlavi",
     35847    "vai",
     35848    "vaii",
     35849    "lt",
     35850    "meroiticcursive",
     35851    "xids",
     35852    "incommonindicnumberforms",
     35853    "inmandaic",
     35854    "inlineara",
     35855    "incjkcompatibilityideographssupplement",
     35856    "inlao",
     35857    "insundanese",
     35858    "mongolian",
     35859    "bamum",
     35860    "idc",
     35861    "inancientsymbols",
     35862    "kali",
     35863    "grlink",
     35864    "grext",
     35865    "control",
     35866    "inkanasupplement",
     35867    "inopticalcharacterrecognition",
     35868    "inadlam",
     35869    "so",
     35870    "inoldsoutharabian",
     35871    "sk",
     35872#endif /* USE_UNICODE_PROPERTIES */
    3041935873    "print",
     35874#ifndef USE_UNICODE_PROPERTIES
    3042035875    "punct",
    3042135876    "alpha",
     35877#else /* USE_UNICODE_PROPERTIES */
     35878    "idsbinaryoperator",
     35879    "palm",
     35880    "batk",
     35881    "indominotiles",
     35882    "intaitham",
     35883    "inlycian",
     35884    "sora",
     35885    "batak",
     35886    "inmodifiertoneletters",
     35887    "patws",
     35888    "inmalayalam",
     35889    "incjkstrokes",
     35890    "incontrolpictures",
     35891    "samr",
     35892    "bass",
     35893    "samaritan",
     35894    "inmusicalsymbols",
     35895    "ids",
     35896    "pd",
     35897    "sm",
     35898    "pauc",
     35899    "joinc",
     35900    "inlinearbideograms",
     35901    "idcontinue",
     35902    "inancientgreekmusicalnotation",
     35903    "inoldturkic",
     35904#endif /* USE_UNICODE_PROPERTIES */
    3042235905    "alnum",
     35906#ifdef USE_UNICODE_PROPERTIES
     35907    "inugaritic",
     35908    "s",
     35909    "inmiscellaneoussymbols",
     35910    "n",
     35911    "lisu",
     35912    "inmiscellaneoussymbolsandarrows",
     35913    "insylotinagri",
     35914    "inmiscellaneoussymbolsandpictographs",
     35915    "sc",
     35916    "no",
     35917    "ital",
     35918    "p",
     35919    "xpeo",
     35920    "di",
     35921    "idst",
     35922    "intaile",
     35923    "nko",
     35924    "nkoo",
     35925    "dia",
     35926    "inphoenician",
     35927    "inlatinextendeda",
     35928    "indeseret",
     35929    "inlatinextendede",
     35930    "incaucasianalbanian",
     35931    "insaurashtra",
     35932    "inmeeteimayekextensions",
     35933    "idstart",
     35934    "bali",
     35935    "inspacingmodifierletters",
     35936    "bengali",
     35937    "intamil",
     35938    "inmultani",
     35939    "vs",
     35940    "inlydian",
     35941    "balinese",
     35942    "lepc",
     35943    "cased",
     35944    "zinh",
     35945    "blank",
     35946    "runr",
     35947    "patternsyntax",
     35948    "bidic",
     35949#endif /* USE_UNICODE_PROPERTIES */
    3042335950    "xdigit",
     35951#ifndef USE_UNICODE_PROPERTIES
    3042435952    "upper",
     35953    "ascii",
    3042535954#else /* USE_UNICODE_PROPERTIES */
    30426     "n",
    30427     "cn",
    30428     "mn",
    30429     "c",
    30430     "m",
    30431     "ci",
    30432     "z",
    30433     "cc",
    30434     "mc",
    30435     "mani",
    30436     "inmanichaean",
    30437     "qaai",
    30438     "zzzz",
    30439     "qaac",
    30440     "incham",
    30441     "sc",
    30442     "sm",
    30443     "mandaic",
    30444     "incuneiform",
    30445     "cans",
    30446     "me",
    30447     "inarmenian",
    30448 #endif /* USE_UNICODE_PROPERTIES */
    30449     "ascii",
    30450 #ifdef USE_UNICODE_PROPERTIES
    30451     "s",
    30452     "insamaritan",
    30453     "cs",
    30454     "zs",
    30455     "inavestan",
    30456     "incommonindicnumberforms",
    30457     "incuneiformnumbersandpunctuation",
    30458     "inthai",
    30459     "inipaextensions",
    30460     "mtei",
    30461     "inspecials",
    30462     "initialpunctuation",
    30463     "inancientsymbols",
    30464     "inthaana",
    30465     "inmiscellaneousmathematicalsymbolsa",
    30466     "lc",
    30467     "inmusicalsymbols",
    30468     "lm",
     35955    "xidstart",
     35956    "inphaistosdisc",
     35957    "inancientgreeknumbers",
     35958    "canadianaboriginal",
     35959    "cher",
     35960    "plrd",
     35961    "sind",
     35962    "cherokee",
     35963    "phoenician",
     35964    "marchen",
     35965    "inhiragana",
     35966    "inearlydynasticcuneiform",
     35967    "graphemebase",
     35968    "cham",
     35969    "inimperialaramaic",
     35970    "kaithi",
     35971    "insiddham",
     35972    "diacritic",
     35973    "chakma",
     35974    "graphemelink",
     35975    "inkhudawadi",
     35976    "inmahajani",
     35977    "khojki",
     35978    "inogham",
     35979    "khar",
     35980    "incountingrodnumerals",
     35981    "manichaean",
     35982    "coptic",
     35983    "bamu",
     35984    "sterm",
     35985    "inethiopic",
     35986    "ll",
     35987    "inolchiki",
     35988    "inlatinextendedc",
     35989    "zl",
     35990    "adlm",
     35991    "incyrillicsupplement",
     35992    "incyrillicextendeda",
     35993    "incherokeesupplement",
     35994    "decimalnumber",
     35995    "khmr",
     35996    "copt",
     35997    "ahom",
     35998    "runic",
     35999    "intaixuanjingsymbols",
     36000    "insinhala",
     36001    "cprt",
     36002    "imperialaramaic",
     36003    "casedletter",
     36004    "khmer",
     36005    "linb",
     36006    "adlam",
     36007    "ininscriptionalparthian",
     36008    "ininscriptionalpahlavi",
     36009    "sinhala",
     36010    "zanb",
     36011    "incjkunifiedideographsextensiona",
     36012    "multani",
     36013    "quotationmark",
     36014    "incjkunifiedideographsextensione",
     36015    "innabataean",
     36016    "inbhaiksuki",
     36017    "inelbasan",
     36018    "inkanbun",
     36019    "inscriptionalpahlavi",
     36020    "bopo",
     36021    "linearb",
     36022    "incyrillicextendedc",
     36023    "glagolitic",
     36024    "kharoshthi",
     36025    "inoldpersian",
     36026    "goth",
     36027    "math",
     36028    "joincontrol",
     36029    "punct",
     36030    "lu",
     36031    "limb",
     36032    "inmiscellaneoustechnical",
     36033    "han",
     36034    "hani",
     36035    "invai",
     36036    "sundanese",
    3046936037    "taile",
    30470     "sterm",
    30471     "lina",
    30472     "inlycian",
    30473     "inmyanmarextendeda",
    30474     "lana",
    30475     "alnum",
    30476     "intaitham",
    30477     "incontrolpictures",
    30478     "inmiscellaneoussymbols",
    30479     "inmalayalam",
    30480     "intransportandmapsymbols",
    30481     "inmiscellaneoussymbolsandarrows",
    30482     "inlineara",
    30483     "inmiscellaneoussymbolsandpictographs",
    30484     "taiviet",
    30485     "cwcm",
    30486     "sinhala",
    30487     "latn",
    30488     "latin",
    30489     "ital",
    30490     "intamil",
    30491     "taml",
    30492     "inlatinextendedc",
    30493     "intaile",
    30494     "tale",
    30495     "inlatinextendeda",
    30496     "inlinearbideograms",
    30497     "newtailue",
    30498     "l",
    30499     "nl",
    30500     "inmeeteimayekextensions",
    30501     "zl",
    30502     "lt",
    30503     "inrunic",
    30504     "incarian",
    30505     "armn",
    30506     "cari",
    30507     "armi",
    30508     "inlatinextendede",
    30509     "incyrillic",
    30510     "armenian",
    30511     "inmyanmar",
    30512     "innewtailue",
    30513     "carian",
    30514     "merc",
    30515     "arabic",
    30516     "inmiscellaneoustechnical",
    30517     "insyriac",
    30518     "samr",
    30519     "zinh",
    30520     "han",
    30521     "samaritan",
    30522     "hani",
    30523     "cwt",
    30524     "incherokee",
    30525     "insharada",
    30526     "cham",
    30527     "manichaean",
    30528     "inmahajani",
     36038    "takri",
     36039    "grantha",
     36040    "hano",
     36041    "inhatran",
     36042    "oriya",
     36043    "intirhuta",
     36044    "guru",
     36045    "kthi",
     36046    "saur",
     36047    "incjkunifiedideographsextensionc",
     36048    "hanunoo",
     36049    "paucinhau",
     36050    "takr",
     36051    "hira",
     36052    "inarabic",
     36053    "bopomofo",
     36054    "radical",
     36055    "gurmukhi",
     36056    "inkhojki",
     36057    "arab",
     36058    "limbu",
     36059    "inoldpermic",
     36060    "brah",
     36061    "inoldhungarian",
     36062    "inshorthandformatcontrols",
     36063    "incoptic",
     36064    "sd",
     36065    "sidd",
     36066    "inherited",
     36067    "incjkunifiedideographs",
     36068    "term",
     36069    "incjksymbolsandpunctuation",
     36070    "graphemeextend",
     36071    "dsrt",
    3052936072#endif /* USE_UNICODE_PROPERTIES */
    3053036073    "cntrl",
    3053136074#ifdef USE_UNICODE_PROPERTIES
    30532     "sinh",
    30533     "inruminumeralsymbols",
    30534     "inethiopic",
    30535     "tamil",
    30536     "miao",
     36075    "xsux",
     36076    "insyriacsupplement",
     36077    "inbasiclatin",
     36078    "deseret",
     36079    "inenclosedideographicsupplement",
     36080    "bidicontrol",
     36081    "closepunctuation",
     36082    "inlatinextendedadditional",
     36083    "inarabicpresentationformsa",
     36084    "grbase",
     36085    "mong",
     36086    "anatolianhieroglyphs",
    3053736087    "inenclosedalphanumerics",
    30538     "term",
    30539     "chakma",
    30540     "insinhala",
    30541     "shavian",
    30542     "inosmanya",
    30543     "inlatinextendedadditional",
    30544     "osma",
    30545     "ll",
    30546     "thai",
    30547     "math",
    30548     "thaa",
    30549     "inenclosedalphanumericsupplement",
    30550     "ethi",
    30551     "connectorpunctuation",
    30552     "inlowsurrogates",
    30553     "insinhalaarchaicnumbers",
    30554     "taitham",
    30555     "thaana",
    30556     "lineara",
    30557     "di",
    30558     "idc",
    30559     "meroiticcursive",
    30560     "mand",
    30561     "inmodi",
    30562     "inmandaic",
    30563     "cwl",
    30564     "asciihexdigit",
    30565     "dia",
    30566     "terminalpunctuation",
    30567     "mend",
    30568     "sind",
    30569     "wara",
    30570     "inwarangciti",
    30571     "inideographicdescriptioncharacters",
    30572     "inemoticons",
    30573     "ids",
    30574     "insundanese",
    30575     "pi",
    30576     "indominotiles",
    30577     "pc",
    30578     "loe",
    30579     "titlecaseletter",
    30580     "inopticalcharacterrecognition",
    30581     "idst",
    30582     "shaw",
    30583     "cwcf",
    30584     "idcontinue",
    30585     "inphaistosdisc",
    30586     "pe",
    30587     "indeseret",
    30588     "inspacingmodifierletters",
    30589     "inlydian",
    30590     "ps",
    30591     "hira",
    30592     "whitespace",
    30593     "inscriptionalparthian",
    30594     "cher",
    30595     "inmathematicalalphanumericsymbols",
    30596     "incoptic",
    30597     "inhiragana",
    30598     "inenclosedcjklettersandmonths",
     36088    "ingrantha",
     36089    "georgian",
     36090    "osage",
     36091    "inosage",
     36092    "ingeneralpunctuation",
     36093    "saurashtra",
     36094    "inshavian",
    3059936095#endif /* USE_UNICODE_PROPERTIES */
    3060036096    "space",
    3060136097#ifdef USE_UNICODE_PROPERTIES
    30602     "oriya",
    30603     "mero",
    30604     "mahj",
    30605     "tirh",
    30606     "sora",
    30607     "inscriptionalpahlavi",
    30608     "inarrows",
    30609     "mahajani",
    30610     "joinc",
    30611     "incopticepactnumbers",
    30612     "hano",
    30613     "palm",
    30614     "intirhuta",
    30615     "patws",
    30616     "inolchiki",
     36098    "mult",
     36099    "inpalmyrene",
     36100    "inanatolianhieroglyphs",
     36101    "spacingmark",
     36102    "alpha",
     36103    "ingeorgian",
     36104    "intibetan",
    3061736105    "inlepcha",
    30618     "no",
    30619     "lepc",
    30620     "inogham",
    30621     "co",
    30622     "innko",
    30623     "alpha",
    30624     "psalterpahlavi",
    30625     "inmro",
    30626     "inpalmyrene",
    30627     "common",
    30628     "cf",
    30629     "inmiao",
    30630     "so",
    30631     "diacritic",
    30632     "insundanesesupplement",
    30633     "intifinagh",
    30634     "tifinagh",
    30635     "odi",
    30636     "oidc",
    30637     "modi",
    30638     "decimalnumber",
    30639     "letter",
    30640     "dash",
    30641     "insylotinagri",
    30642     "inolditalic",
    30643     "wspace",
    30644     "dsrt",
    30645     "ideo",
    30646     "siddham",
    30647     "perm",
    30648     "oids",
    30649     "inmahjongtiles",
    30650     "lo",
    30651     "lineseparator",
    30652     "imperialaramaic",
    30653     "idstart",
    30654     "inlao",
    30655     "sharada",
    30656     "lao",
    30657     "laoo",
    30658     "mongolian",
    30659     "oalpha",
    30660     "inimperialaramaic",
    30661     "nchar",
    30662     "inlatin1supplement",
    30663     "prti",
    30664     "cprt",
    30665     "nd",
    30666     "deseret",
    30667     "inoldturkic",
    30668     "radical",
    30669     "canadianaboriginal",
    30670     "inmodifiertoneletters",
    30671     "incaucasianalbanian",
    30672     "coptic",
    30673     "casedletter",
    30674     "sd",
    30675     "inphoenician",
    30676     "sidd",
    30677     "privateuse",
    30678     "sundanese",
    30679     "inancientgreekmusicalnotation",
    30680     "insiddham",
    30681     "cased",
    30682     "print",
    30683     "ininscriptionalparthian",
    30684     "ininscriptionalpahlavi",
    30685     "copt",
    30686     "inancientgreeknumbers",
    30687     "saurashtra",
    30688     "mro",
    30689     "mroo",
    30690     "inalphabeticpresentationforms",
    30691     "lowercase",
     36106    "inbatak",
     36107    "emoji",
     36108    "osma",
     36109    "bhks",
     36110    "inmongolian",
     36111    "variationselector",
     36112    "braille",
    3069236113    "phli",
    30693     "patternwhitespace",
    30694     "inenclosedideographicsupplement",
    30695     "spaceseparator",
    30696     "inmathematicaloperators",
    30697     "omath",
    30698     "lisu",
    30699     "inpsalterpahlavi",
    30700     "olditalic",
    30701     "hanunoo",
    30702     "inherited",
    30703     "lepcha",
    30704     "p",
    30705     "inmongolian",
    30706     "zp",
    30707     "finalpunctuation",
    30708     "otheridcontinue",
    30709     "shrd",
    30710     "ingrantha",
    30711     "talu",
    30712     "otheralphabetic",
    30713     "noncharactercodepoint",
     36114    "bhaiksuki",
     36115    "phnx",
     36116    "inblockelements",
    3071436117#ifdef USE_UNICODE_AGE_PROPERTIES
    3071536118    "age=1.1",
     36119    "age=4.1",
     36120    "age=4.0",
     36121    "age=10.0",
    3071636122    "age=2.1",
     36123    "age=2.0",
     36124    "age=6.1",
     36125    "age=6.0",
     36126    "age=9.0",
     36127    "age=8.0",
     36128    "age=6.2",
     36129    "age=7.0",
    3071736130#endif /* USE_UNICODE_AGE_PROPERTIES */
    30718     "closepunctuation",
    30719     "letternumber",
     36131    "inenclosedalphanumericsupplement",
     36132    "innumberforms",
    3072036133#ifdef USE_UNICODE_AGE_PROPERTIES
    30721     "age=6.1",
    30722     "age=6.2",
     36134    "age=5.1",
     36135    "age=5.0",
    3072336136#endif /* USE_UNICODE_AGE_PROPERTIES */
    30724     "telu",
     36137    "nd",
     36138    "separator",
     36139#ifdef USE_UNICODE_AGE_PROPERTIES
     36140    "age=5.2",
     36141#endif /* USE_UNICODE_AGE_PROPERTIES */
     36142    "ingurmukhi",
     36143    "incjkunifiedideographsextensiond",
     36144    "taiviet",
     36145    "sinh",
    3072536146#ifdef USE_UNICODE_AGE_PROPERTIES
    3072636147    "age=3.1",
     36148    "age=3.0",
     36149#endif /* USE_UNICODE_AGE_PROPERTIES */
     36150    "hatran",
     36151#ifdef USE_UNICODE_AGE_PROPERTIES
    3072736152    "age=3.2",
    30728     "age=5.1",
    30729     "age=5.2",
    30730     "age=2.0",
    3073136153    "age=6.3",
    3073236154#endif /* USE_UNICODE_AGE_PROPERTIES */
    30733     "inshorthandformatcontrols",
    30734     "inoldnortharabian",
    30735 #ifdef USE_UNICODE_AGE_PROPERTIES
    30736     "age=6.0",
    30737     "age=4.1",
    30738 #endif /* USE_UNICODE_AGE_PROPERTIES */
    30739     "ingeneralpunctuation",
    30740 #ifdef USE_UNICODE_AGE_PROPERTIES
    30741     "age=3.0",
    30742     "age=7.0",
    30743     "age=5.0",
    30744 #endif /* USE_UNICODE_AGE_PROPERTIES */
    30745     "innabataean",
    30746 #ifdef USE_UNICODE_AGE_PROPERTIES
    30747     "age=4.0",
    30748 #endif /* USE_UNICODE_AGE_PROPERTIES */
    30749     "bamum",
    30750     "control",
    30751     "induployan",
     36155    "format",
     36156    "shavian",
     36157    "insinhalaarchaicnumbers",
     36158    "cuneiform",
     36159    "inmyanmarextendedb",
     36160    "punctuation",
     36161    "inarabicextendeda",
     36162    "hatr",
     36163    "inhanunoo",
    3075236164    "inlatinextendedd",
    30753     "inarabic",
    30754     "runic",
    30755     "inelbasan",
    30756     "inoldsoutharabian",
    30757     "inbasiclatin",
    30758     "format",
    30759     "innumberforms",
    30760     "inugaritic",
    30761     "separator",
    30762     "idsbinaryoperator",
    30763     "tagbanwa",
    30764     "bass",
    30765     "saur",
    30766     "nbat",
    30767     "intaixuanjingsymbols",
    30768     "joincontrol",
    30769     "otheridstart",
     36165    "modifierletter",
     36166    "odi",
     36167    "ahex",
     36168    "logicalorderexception",
    3077036169    "inbyzantinemusicalsymbols",
    30771     "intags",
    30772     "nabataean",
    30773     "insuperscriptsandsubscripts",
    30774     "intibetan",
    30775     "insaurashtra",
    30776     "othersymbol",
    30777     "ext",
    30778     "inarabicpresentationformsa",
     36170    "sund",
     36171    "number",
     36172    "insundanesesupplement",
     36173    "incopticepactnumbers",
     36174    "emojimodifier",
     36175    "zp",
     36176    "asciihexdigit",
     36177    "indevanagari",
     36178    "innewa",
     36179    "avestan",
     36180    "insorasompeng",
    3077936181    "inmiscellaneousmathematicalsymbolsb",
    30780     "otherlowercase",
    30781     "phoenician",
     36182    "inbraillepatterns",
     36183    "nonspacingmark",
     36184    "ingreekandcoptic",
     36185#endif /* USE_UNICODE_PROPERTIES */
     36186    "xposixpunct",
     36187#ifdef USE_UNICODE_PROPERTIES
     36188    "inwarangciti",
     36189    "oidc",
     36190    "terminalpunctuation",
     36191    "cf",
    3078236192#endif /* USE_UNICODE_PROPERTIES */
    3078336193    "lower",
    30784 #ifndef USE_UNICODE_PROPERTIES
     36194#ifdef USE_UNICODE_PROPERTIES
     36195    "inunifiedcanadianaboriginalsyllabics",
     36196    "idsb",
     36197    "inbalinese",
     36198    "induployan",
     36199    "innoblock",
     36200    "pf",
     36201    "inoriya",
     36202    "inkatakanaphoneticextensions",
     36203    "inkayahli",
     36204    "wara",
     36205    "innushu",
     36206    "lepcha",
     36207    "inmeroitichieroglyphs",
     36208    "beng",
     36209    "idstrinaryoperator",
     36210    "oids",
     36211    "regionalindicator",
     36212    "enclosingmark",
     36213    "java",
     36214    "tale",
     36215    "emojimodifierbase",
     36216    "inphoneticextensions",
     36217    "lowercase",
     36218    "inverticalforms",
     36219    "javanese",
     36220    "sentenceterminal",
     36221    "ingreekextended",
     36222    "invariationselectors",
     36223    "cwcm",
     36224    "lyci",
     36225    "avst",
     36226    "lycian",
     36227    "zanabazarsquare",
     36228    "sarb",
     36229    "invedicextensions",
     36230    "inkangxiradicals",
     36231    "intaiviet",
     36232    "mymr",
     36233    "incjkradicalssupplement",
     36234    "myanmar",
     36235    "taml",
     36236    "olower",
     36237    "nl",
     36238    "inethiopicsupplement",
     36239    "olck",
     36240    "inethiopicextendeda",
     36241#endif /* USE_UNICODE_PROPERTIES */
    3078536242    "graph",
    30786 #else /* USE_UNICODE_PROPERTIES */
    30787     "linb",
    30788     "po",
    30789     "inmyanmarextendedb",
    30790     "limb",
    30791     "inbraillepatterns",
     36243#ifdef USE_UNICODE_PROPERTIES
     36244    "olchiki",
     36245    "inphoneticextensionssupplement",
     36246    "emojicomponent",
     36247    "inunifiedcanadianaboriginalsyllabicsextended",
     36248    "ingeometricshapes",
     36249    "invariationselectorssupplement",
     36250    "gujr",
     36251    "sharada",
     36252    "gujarati",
     36253    "nchar",
     36254    "innewtailue",
     36255    "glag",
     36256    "ideographic",
     36257    "shrd",
     36258    "insoyombo",
     36259    "inbamum",
     36260    "inlatin1supplement",
     36261    "dash",
     36262    "indingbats",
     36263    "spaceseparator",
     36264    "phagspa",
     36265    "titlecaseletter",
     36266    "incjkcompatibility",
     36267    "intangut",
     36268    "incombiningdiacriticalmarks",
     36269    "inlisu",
     36270    "siddham",
     36271    "incombiningdiacriticalmarksforsymbols",
     36272    "caucasianalbanian",
     36273    "uideo",
     36274    "indevanagariextended",
     36275    "narb",
     36276    "inbopomofo",
     36277    "incjkunifiedideographsextensionf",
     36278    "inmeroiticcursive",
     36279    "patsyn",
     36280    "insuperscriptsandsubscripts",
     36281    "lydi",
     36282    "lydian",
     36283    "intags",
     36284    "intelugu",
     36285    "intifinagh",
     36286    "ingeometricshapesextended",
     36287    "incombiningdiacriticalmarkssupplement",
     36288    "deva",
     36289    "inprivateusearea",
     36290    "devanagari",
     36291    "noncharactercodepoint",
     36292    "inbrahmi",
     36293    "lowercaseletter",
     36294    "word",
     36295    "caseignorable",
     36296    "inyiradicals",
     36297    "deprecated",
     36298    "thai",
     36299    "thaa",
     36300    "incombiningdiacriticalmarksextended",
     36301    "inmathematicalalphanumericsymbols",
     36302    "thaana",
     36303    "inornamentaldingbats",
     36304    "oldpersian",
     36305    "unassigned",
     36306    "insupplementalarrowsa",
     36307    "inpaucinhau",
     36308    "cwt",
     36309    "tirhuta",
     36310    "mahj",
     36311    "insmallformvariants",
     36312    "tirh",
     36313    "orkh",
     36314    "mahajani",
     36315    "softdotted",
     36316    "inphagspa",
     36317    "inethiopicextended",
     36318    "taitham",
     36319    "assigned",
     36320    "nbat",
     36321    "incyrillicextendedb",
     36322    "khoj",
     36323    "buhd",
     36324    "nabataean",
     36325    "inalphabeticpresentationforms",
     36326    "sorasompeng",
     36327    "insupplementalarrowsc",
     36328    "oldpermic",
     36329    "cyrl",
     36330    "finalpunctuation",
     36331    "meroitichieroglyphs",
     36332    "inarabicsupplement",
     36333    "phlp",
     36334    "inpsalterpahlavi",
     36335    "mlym",
     36336    "incjkunifiedideographsextensionb",
     36337    "palmyrene",
     36338    "insupplementalmathematicaloperators",
     36339    "malayalam",
     36340    "soyo",
     36341    "hex",
     36342    "phag",
     36343    "graphemeclusterbreak=ebase",
     36344    "graphemeclusterbreak=ebasegaz",
     36345    "inhanguljamo",
     36346    "bugi",
     36347    "graphemeclusterbreak=spacingmark",
     36348    "inhanguljamoextendeda",
     36349    "currencysymbol",
     36350    "tamil",
     36351    "graphemeclusterbreak=cr",
     36352    "talu",
     36353    "buginese",
     36354    "telu",
     36355    "ingeorgiansupplement",
     36356    "graphemeclusterbreak=emodifier",
     36357    "graphemeclusterbreak=regionalindicator",
     36358    "inlimbu",
     36359    "inenclosedcjklettersandmonths",
     36360    "tangut",
     36361    "inmathematicaloperators",
     36362    "newa",
     36363    "newtailue",
     36364    "hebr",
     36365    "inbuhid",
     36366    "insuttonsignwriting",
     36367    "syrc",
     36368    "dep",
     36369    "inbassavah",
     36370    "otheridcontinue",
     36371    "inletterlikesymbols",
     36372    "ext",
     36373    "other",
     36374    "inmongoliansupplement",
     36375    "othernumber",
     36376    "injavanese",
     36377    "olditalic",
     36378    "nshu",
     36379    "inarabicpresentationformsb",
     36380    "inlowsurrogates",
     36381    "incombininghalfmarks",
     36382    "inbengali",
     36383    "cwcf",
     36384    "inbuginese",
     36385    "syriac",
     36386    "ethi",
     36387    "otheralphabetic",
     36388    "emojipresentation",
     36389    "inarabicmathematicalalphabeticsymbols",
     36390    "tang",
     36391    "buhid",
     36392    "graphemeclusterbreak=t",
     36393    "extender",
     36394    "graphemeclusterbreak=lvt",
     36395    "tagbanwa",
     36396    "hang",
     36397    "incurrencysymbols",
     36398    "ingujarati",
     36399    "paragraphseparator",
    3079236400    "tibt",
    30793     "cuneiform",
    30794     "bali",
    30795     "oldpersian",
    30796     "oldpermic",
    30797     "pf",
    30798     "word",
    3079936401    "tibetan",
    30800     "incyrillicsupplement",
    30801     "elba",
    30802     "insupplementalmathematicaloperators",
    30803     "inbalinese",
    30804     "bengali",
    30805     "caseignorable",
    30806     "incountingrodnumerals",
    30807     "other",
    30808     "tirhuta",
    30809     "othernumber",
    30810     "balinese",
    30811     "elbasan",
    30812     "inunifiedcanadianaboriginalsyllabics",
    30813     "lowercaseletter",
    30814     "ethiopic",
    30815     "gran",
    30816     "ingurmukhi",
    30817     "sund",
    30818     "inethiopicsupplement",
    30819     "inoldpersian",
    30820     "inoldpermic",
    30821     "othermath",
    30822     "unassigned",
     36402    "ogam",
     36403    "cwl",
     36404    "oalpha",
     36405    "hiragana",
     36406    "surrogate",
     36407    "inbamumsupplement",
     36408    "inrejang",
     36409    "intangutcomponents",
    3082336410    "hmng",
    30824     "narb",
    30825     "brai",
    30826     "hang",
    30827     "insorasompeng",
    30828     "arab",
    30829     "plrd",
    30830     "ingujarati",
    30831     "brahmi",
    30832     "runr",
    30833     "ahex",
    30834     "mong",
    30835     "pauc",
    30836     "sarb",
    30837     "ogam",
    30838     "olower",
    30839     "pd",
    30840     "number",
    30841     "inbrahmi",
    30842     "otherletter",
     36411    "graphemeclusterbreak=extend",
     36412    "graphemeclusterbreak=prepend",
     36413    "bassavah",
    3084336414    "ingothic",
    30844     "phagspa",
    30845     "inletterlikesymbols",
    30846     "yi",
    30847     "hangul",
    30848     "yiii",
    30849     "tfng",
    30850     "insupplementalarrowsc",
    30851     "ingreekandcoptic",
    30852     "xidc",
    30853     "insupplementalarrowsa",
    30854     "gothic",
    30855     "grext",
    30856     "incombininghalfmarks",
    30857     "deprecated",
    30858     "inbassavah",
    30859     "xids",
    30860     "linearb",
    30861     "ingeometricshapes",
    30862     "phlp",
    30863     "warangciti",
    30864     "inblockelements",
    30865     "modifierletter",
    30866     "indingbats",
    30867     "dep",
    30868     "punct",
    30869     "inhanunoo",
    30870     "bidic",
    30871     "ingreekextended",
    30872     "idsb",
    30873     "assigned",
    30874     "otherpunctuation",
    30875     "inhangulsyllables",
    30876     "inarabicmathematicalalphabeticsymbols",
    30877     "inornamentaldingbats",
    30878     "inphagspa",
    30879     "lyci",
    30880     "mlym",
    30881     "inarabicextendeda",
    30882     "rjng",
    30883     "lycian",
    30884     "inalchemicalsymbols",
    30885     "xdigit",
     36415    "alphabetic",
     36416    "mathsymbol",
     36417    "oupper",
     36418    "oldhungarian",
     36419    "tavt",
     36420    "insupplementalpunctuation",
     36421    "dashpunctuation",
     36422    "inplayingcards",
     36423    "inaegeannumbers",
     36424    "osge",
    3088636425#endif /* USE_UNICODE_PROPERTIES */
    3088736426    "digit",
     
    3088936428    "blank"
    3089036429#else /* USE_UNICODE_PROPERTIES */
    30891     "xidstart",
    30892     "inrejang",
    30893     "malayalam",
    30894     "idstrinaryoperator",
    30895     "invai",
    30896     "vai",
    30897     "vaii",
    30898     "hiragana",
    30899     "ingeorgian",
    30900     "braille",
    30901     "geor",
    30902     "brah",
    30903     "glagolitic",
    30904     "inkannada",
    30905     "cakm",
    30906     "kana",
    30907     "hebr",
    30908     "inshavian",
    30909     "vs",
    30910     "inchakma",
    30911     "ogham",
     36430    "dupl",
     36431    "inlinearbsyllabary",
     36432    "cypriot",
     36433    "wspace",
     36434    "whitespace",
     36435    "cwu",
     36436    "nushu",
     36437    "intagbanwa",
     36438    "sylo",
     36439    "graphemeclusterbreak=l",
     36440    "graphemeclusterbreak=control",
     36441    "oldturkic",
     36442    "changeswhencasemapped",
     36443    "rjng",
     36444    "cyrillic",
     36445    "hangul",
     36446    "modifiersymbol",
     36447    "inalchemicalsymbols",
     36448    "insupplementaryprivateuseareaa",
     36449    "orya",
     36450    "inmahjongtiles",
     36451    "changeswhentitlecased",
     36452    "tifinagh",
     36453    "otherlowercase",
     36454    "inglagolitic",
     36455    "otheridstart",
     36456    "ugar",
     36457    "otherletter",
     36458    "inhangulsyllables",
     36459    "elba",
     36460    "intagalog",
     36461    "otheruppercase",
     36462    "omath",
     36463    "warangciti",
    3091236464    "sylotinagri",
    30913     "inunifiedcanadianaboriginalsyllabicsextended",
    30914     "inmeroitichieroglyphs",
    30915     "grantha",
    30916     "graphemebase",
    30917     "mathsymbol",
    30918     "mymr",
    30919     "insupplementaryprivateuseareaa",
    30920     "mendekikakui",
    30921     "incjkcompatibilityforms",
     36465    "shaw",
     36466    "inpahawhhmong",
    3092236467    "inhalfwidthandfullwidthforms",
    30923     "incjkcompatibilityideographs",
    30924     "inkaithi",
    30925     "avst",
    30926     "inarabicsupplement",
    30927     "takri",
    30928     "syrc",
    30929     "meeteimayek",
    30930     "myanmar",
    30931     "avestan",
    30932     "inhanguljamoextendeda",
    30933     "goth",
    30934     "inkatakana",
    30935     "incyrillicextendeda",
    30936     "alphabetic",
    30937     "syriac",
    30938     "ideographic",
    30939     "incjkstrokes",
    30940     "inlinearbsyllabary",
    30941     "tavt",
    30942     "intaiviet",
    30943     "incjkcompatibilityideographssupplement",
    30944     "inmeeteimayek",
    30945     "kali",
    30946     "inyiradicals",
    30947     "lu",
    30948     "inoriya",
    30949     "hebrew",
    30950     "extender",
    30951     "inhighprivateusesurrogates",
    30952     "limbu",
    30953     "inbuhid",
    30954     "inethiopicextendeda",
    30955     "xidcontinue",
     36468    "inlatinextendedb",
     36469    "osmanya",
     36470    "graphemeclusterbreak=lf",
     36471    "othersymbol",
     36472    "defaultignorablecodepoint",
     36473    "incypriotsyllabary",
     36474    "khudawadi",
     36475    "kayahli",
     36476    "hung",
     36477    "unknown",
    3095636478    "inyijinghexagramsymbols",
    30957     "logicalorderexception",
    30958     "inhebrew",
    30959     "cyrl",
    30960     "osmanya",
    30961     "phnx",
    30962     "incombiningdiacriticalmarks",
    30963     "inkanasupplement",
    30964     "inlisu",
    30965     "changeswhencasemapped",
    30966     "incombiningdiacriticalmarksforsymbols",
    30967     "cwu",
    30968     "phag",
    30969     "insmallformvariants",
    30970     "inpahawhhmong",
    30971     "otheruppercase",
    30972     "intelugu",
    30973     "incombiningdiacriticalmarkssupplement",
    30974     "ingeometricshapesextended",
    30975     "xpeo",
    30976     "bamu",
    30977     "inbamum",
    30978     "mark",
    30979     "dupl",
    30980     "graph",
    30981     "dashpunctuation",
    30982     "patternsyntax",
    30983     "changeswhentitlecased",
    30984     "inkharoshthi",
    30985     "inkhmer",
    30986     "java",
    30987     "sylo",
     36479    "elbasan",
     36480    "inbopomofoextended",
     36481    "changeswhenlowercased",
     36482    "otherpunctuation",
     36483    "upper",
     36484    "insupplementalarrowsb",
     36485    "oldnortharabian",
     36486    "changeswhenuppercased",
     36487    "uppercase",
    3098836488    "ugaritic",
    3098936489    "otherdefaultignorablecodepoint",
    30990     "softdotted",
    30991     "uideo",
    30992     "inphoneticextensions",
    30993     "injavanese",
    30994     "invariationselectors",
    30995     "kaithi",
    30996     "cyrillic",
    30997     "intakri",
    30998     "takr",
    30999     "javanese",
    31000     "bidicontrol",
    31001     "caucasianalbanian",
    31002     "lydi",
    31003     "insupplementalpunctuation",
    31004     "inphoneticextensionssupplement",
    31005     "lydian",
    31006     "oldturkic",
    31007     "invariationselectorssupplement",
    31008     "kthi",
    31009     "inhanguljamo",
    31010     "patsyn",
    31011     "inlimbu",
    31012     "sorasompeng",
    31013     "orya",
    31014     "inkhmersymbols",
    31015     "inglagolitic",
    31016     "indevanagari",
    31017     "deva",
    31018     "knda",
    31019     "inbengali",
     36490    "othermath",
     36491    "tfng",
    3102036492    "symbol",
    31021     "devanagari",
    31022     "inmendekikakui",
    31023     "beng",
    31024     "invedicextensions",
    31025     "graphemeextend",
    31026     "kannada",
    31027     "inbuginese",
    31028     "olck",
    31029     "meroitichieroglyphs",
    31030     "ugar",
    31031     "intagalog",
    31032     "inbamumsupplement",
    31033     "olchiki",
    31034     "incurrencysymbols",
     36493    "hexdigit",
     36494    "any",
     36495    "inhanguljamoextendedb",
     36496    "ethiopic",
     36497    "aghb",
     36498    "graphemeclusterbreak=v",
     36499    "graphemeclusterbreak=lv",
     36500    "soyombo",
     36501    "graphemeclusterbreak=zwj",
     36502    "graphemeclusterbreak=glueafterzwj",
     36503    "sgnw",
     36504    "changeswhencasefolded",
     36505    "ogham",
     36506    "uppercaseletter",
     36507    "inhebrew",
     36508    "inhighprivateusesurrogates",
     36509    "openpunctuation",
     36510    "ogrext",
     36511    "hyphen",
    3103536512    "tagb",
    31036     "inaegeannumbers",
    31037     "intagbanwa",
    31038     "uppercase",
    31039     "defaultignorablecodepoint",
    31040     "glag",
    31041     "inkatakanaphoneticextensions",
    31042     "changeswhencasefolded",
    31043     "inpaucinhau",
    31044     "inprivateusearea",
    31045     "paucinhau",
    31046     "spacingmark",
    31047     "khmr",
    31048     "khar",
    31049     "inarabicpresentationformsb",
    31050     "changeswhenlowercased",
     36513    "inyisyllables",
     36514    "oldsoutharabian",
     36515    "duployan",
     36516    "hluw",
     36517    "inglagoliticsupplement",
     36518    "insupplementalsymbolsandpictographs",
     36519    "insupplementaryprivateuseareab",
     36520    "inegyptianhieroglyphs",
     36521    "rejang",
     36522    "inhangulcompatibilityjamo",
     36523    "telugu",
    3105136524    "tglg",
    31052     "inethiopicextended",
    31053     "incombiningdiacriticalmarksextended",
    31054     "oupper",
    31055     "incjksymbolsandpunctuation",
    31056     "bopo",
    31057     "punctuation",
    31058     "combiningmark",
    31059     "inplayingcards",
    31060     "inbopomofo",
    31061     "hyphen",
    31062     "inkhojki",
    31063     "nko",
    31064     "nkoo",
    31065     "enclosingmark",
    31066     "openpunctuation",
    31067     "currencysymbol",
    31068     "inverticalforms",
    31069     "hex",
    31070     "modifiersymbol",
    31071     "inlatinextendedb",
    31072     "kharoshthi",
    31073     "cherokee",
     36525    "tagalog",
     36526    "othergraphemeextend",
     36527    "unifiedideograph",
     36528    "inboxdrawing",
    3107436529    "pahawhhmong",
    31075     "cypriot",
    31076     "incypriotsyllabary",
    31077     "palmyrene",
    31078     "upper",
    31079     "aghb",
    31080     "georgian",
    31081     "gujr",
    31082     "grbase",
    31083     "gujarati",
    31084     "hexdigit",
    31085     "khmer",
    31086     "uppercaseletter",
    31087     "insupplementalarrowsb",
    31088     "surrogate",
    31089     "unifiedideograph",
    31090     "nonspacingmark",
    31091     "othergraphemeextend",
    31092     "indevanagariextended",
    31093     "orkh",
    31094     "ingeorgiansupplement",
    31095     "oldnortharabian",
    31096     "tagalog",
    31097     "khoj",
    31098     "bopomofo",
    31099     "rejang",
    31100     "buhd",
    31101     "incjkradicalssupplement",
    31102     "inkanbun",
    31103     "variationselector",
    31104     "inkangxiradicals",
    3110536530    "inhighsurrogates",
    31106     "insupplementaryprivateuseareab",
    31107     "ogrext",
    31108     "batk",
    31109     "inhanguljamoextendedb",
    31110     "inbatak",
    31111     "incyrillicextendedb",
    31112     "innoblock",
    31113     "any",
    31114     "xsux",
    31115     "bugi",
    31116     "inkhudawadi",
    31117     "telugu",
    31118     "changeswhenuppercased",
    31119     "grek",
    31120     "guru",
    31121     "paragraphseparator",
    31122     "buginese",
    31123     "inyisyllables",
     36531    "signwriting",
     36532    "zyyy",
    3112436533    "egyp",
    31125     "khudawadi",
    31126     "unknown",
    31127     "bassavah",
    31128     "inegyptianhieroglyphs",
    31129     "buhid",
    31130     "inkayahli",
    31131     "inmeroiticcursive",
    31132     "incjkcompatibility",
    31133     "oldsoutharabian",
    31134     "quotationmark",
    31135     "inhangulcompatibilityjamo",
    31136     "qmark",
    31137     "incjkunifiedideographsextensionc",
    31138     "sk",
    31139     "incjkunifiedideographsextensiona",
    31140     "incjkunifiedideographs",
    31141     "katakana",
    31142     "kayahli",
    31143     "duployan",
    31144     "incjkunifiedideographsextensiond",
    31145     "inbopomofoextended",
    31146     "khojki",
    31147     "zyyy",
    31148     "egyptianhieroglyphs",
    31149     "incjkunifiedideographsextensionb",
    31150     "batak",
    31151     "blank",
    31152     "inboxdrawing",
    31153     "greek",
    31154     "gurmukhi",
    31155     "grlink",
    31156     "graphemelink"
     36534    "hebrew",
     36535    "egyptianhieroglyphs"
    3115736536#endif /* USE_UNICODE_PROPERTIES */
    3115836537  };
     
    3116036539#ifdef __GNUC__
    3116136540__inline
    31162 #ifdef __GNUC_STDC_INLINE__
     36541#if defined __GNUC_STDC_INLINE__ || defined __GNUC_GNU_INLINE__
    3116336542__attribute__ ((__gnu_inline__))
    3116436543#endif
     
    3117236551    {
    3117336552#ifdef USE_UNICODE_PROPERTIES
     36553      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     36554      {-1},
     36555      {uniname2ctype_offset(str10), 111},
     36556      {-1}, {-1},
     36557      {uniname2ctype_offset(str13), 21},
     36558      {uniname2ctype_offset(str14), 184},
     36559      {uniname2ctype_offset(str15), 111},
     36560      {uniname2ctype_offset(str16), 152},
     36561      {uniname2ctype_offset(str17), 61},
     36562      {-1},
     36563      {uniname2ctype_offset(str19), 34},
     36564      {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     36565      {uniname2ctype_offset(str26), 52},
     36566      {-1},
     36567      {uniname2ctype_offset(str28), 186},
     36568      {-1}, {-1}, {-1}, {-1},
     36569      {uniname2ctype_offset(str33), 28},
     36570      {-1},
     36571      {uniname2ctype_offset(str35), 33},
     36572      {-1},
     36573      {uniname2ctype_offset(str37), 241},
     36574      {-1},
     36575      {uniname2ctype_offset(str39), 95},
     36576      {uniname2ctype_offset(str40), 95},
     36577      {uniname2ctype_offset(str41), 22},
     36578      {uniname2ctype_offset(str42), 173},
     36579      {-1}, {-1}, {-1}, {-1},
     36580      {uniname2ctype_offset(str47), 44},
    3117436581      {-1}, {-1}, {-1},
    31175       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str3,                                        34},
     36582      {uniname2ctype_offset(str51), 320},
     36583      {uniname2ctype_offset(str52), 181},
     36584      {-1},
     36585      {uniname2ctype_offset(str54), 308},
     36586      {uniname2ctype_offset(str55), 255},
     36587      {-1}, {-1}, {-1},
     36588      {uniname2ctype_offset(str59), 42},
     36589      {uniname2ctype_offset(str60), 149},
     36590      {uniname2ctype_offset(str61), 184},
     36591      {-1}, {-1}, {-1}, {-1},
     36592      {uniname2ctype_offset(str66), 149},
     36593      {-1}, {-1},
     36594      {uniname2ctype_offset(str69), 187},
     36595      {uniname2ctype_offset(str70), 98},
     36596      {uniname2ctype_offset(str71), 45},
     36597      {uniname2ctype_offset(str72), 77},
     36598      {uniname2ctype_offset(str73), 160},
    3117636599      {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    31177       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str10,                                       20},
    31178       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str11,                                       33},
     36600      {uniname2ctype_offset(str80), 31},
    3117936601      {-1},
    31180       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str13,                                        17},
     36602      {uniname2ctype_offset(str82), 172},
     36603      {-1}, {-1},
     36604      {uniname2ctype_offset(str85), 108},
     36605      {uniname2ctype_offset(str86), 31},
     36606      {uniname2ctype_offset(str87), 189},
     36607      {uniname2ctype_offset(str88), 189},
    3118136608      {-1},
    31182       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str15,                                        30},
    31183       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str16,                                       60},
    31184       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str17,                                        51},
     36609      {uniname2ctype_offset(str90), 77},
    3118536610      {-1}, {-1},
    31186       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str20,                                       18},
    31187       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str21,                                       31},
     36611      {uniname2ctype_offset(str93), 212},
     36612      {-1}, {-1}, {-1},
     36613      {uniname2ctype_offset(str97), 484},
    3118836614      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    31189       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str29,                                    185},
     36615      {uniname2ctype_offset(str105), 170},
     36616      {uniname2ctype_offset(str106), 487},
     36617      {-1}, {-1}, {-1}, {-1},
     36618      {uniname2ctype_offset(str111), 18},
    3119036619      {-1},
    31191       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str31,                            438},
     36620      {uniname2ctype_offset(str113), 302},
    3119236621      {-1}, {-1}, {-1},
    31193       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str35,                                    114},
    31194       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str36,                                    231},
    31195       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str37,                                    128},
     36622      {uniname2ctype_offset(str117), 75},
     36623      {-1}, {-1}, {-1}, {-1},
     36624      {uniname2ctype_offset(str122), 470},
     36625      {uniname2ctype_offset(str123), 526},
     36626      {-1}, {-1}, {-1}, {-1}, {-1},
     36627      {uniname2ctype_offset(str129), 529},
     36628      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     36629      {uniname2ctype_offset(str137), 169},
     36630      {-1}, {-1}, {-1}, {-1},
     36631      {uniname2ctype_offset(str142), 326},
     36632      {uniname2ctype_offset(str143), 27},
    3119636633      {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    31197       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str44,                                  383},
     36634      {uniname2ctype_offset(str150), 248},
     36635      {-1}, {-1},
     36636      {uniname2ctype_offset(str153), 530},
     36637      {uniname2ctype_offset(str154), 498},
     36638      {-1}, {-1}, {-1}, {-1}, {-1},
     36639      {uniname2ctype_offset(str160), 339},
     36640      {uniname2ctype_offset(str161), 194},
     36641      {uniname2ctype_offset(str162), 40},
    3119836642      {-1},
    31199       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str46,                                       47},
     36643      {uniname2ctype_offset(str164), 208},
     36644      {-1}, {-1},
     36645      {uniname2ctype_offset(str167), 31},
     36646      {uniname2ctype_offset(str168), 171},
     36647      {uniname2ctype_offset(str169), 334},
     36648      {uniname2ctype_offset(str170), 461},
    3120036649      {-1},
    31201       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str48,                                       49},
     36650      {uniname2ctype_offset(str172), 521},
     36651      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    3120236652      {-1}, {-1},
    31203       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str51,                                 168},
     36653      {uniname2ctype_offset(str184), 512},
     36654      {-1},
     36655      {uniname2ctype_offset(str186), 331},
     36656      {-1}, {-1}, {-1}, {-1},
     36657      {uniname2ctype_offset(str191), 115},
     36658      {-1},
     36659      {uniname2ctype_offset(str193), 102},
     36660      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     36661      {-1}, {-1},
     36662      {uniname2ctype_offset(str205), 25},
     36663      {-1}, {-1}, {-1}, {-1},
     36664      {uniname2ctype_offset(str210), 520},
     36665      {-1}, {-1},
     36666      {uniname2ctype_offset(str213), 19},
     36667      {-1},
     36668      {uniname2ctype_offset(str215), 79},
     36669      {uniname2ctype_offset(str216), 488},
     36670      {uniname2ctype_offset(str217), 161},
     36671      {-1},
     36672      {uniname2ctype_offset(str219), 32},
    3120436673      {-1}, {-1}, {-1},
    31205       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str55,                             461},
    31206       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str56,                                    101},
     36674      {uniname2ctype_offset(str223), 79},
     36675      {-1}, {-1}, {-1},
     36676      {uniname2ctype_offset(str227), 296},
     36677      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     36678      {-1},
     36679      {uniname2ctype_offset(str238), 518},
     36680      {-1}, {-1}, {-1}, {-1},
     36681      {uniname2ctype_offset(str243), 40},
     36682      {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     36683      {uniname2ctype_offset(str250), 500},
     36684      {-1}, {-1}, {-1}, {-1},
     36685      {uniname2ctype_offset(str255), 53},
     36686      {uniname2ctype_offset(str256), 212},
    3120736687      {-1}, {-1},
    31208       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str59,                                       32},
     36688      {uniname2ctype_offset(str259), 368},
     36689      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     36690      {uniname2ctype_offset(str268), 249},
    3120936691      {-1},
    31210       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str61,                              258},
     36692      {uniname2ctype_offset(str270), 429},
     36693      {uniname2ctype_offset(str271), 76},
     36694      {uniname2ctype_offset(str272), 300},
     36695      {uniname2ctype_offset(str273), 76},
    3121136696      {-1}, {-1},
    31212       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str64,                                    14},
    31213       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str65,                                        46},
     36697      {uniname2ctype_offset(str276), 514},
     36698      {-1}, {-1},
     36699      {uniname2ctype_offset(str279), 309},
    3121436700      {-1}, {-1}, {-1},
    31215       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str69,                             265},
     36701      {uniname2ctype_offset(str283), 248},
     36702      {-1},
     36703      {uniname2ctype_offset(str285), 519},
    3121636704      {-1}, {-1},
    31217       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str72,                                       22},
     36705      {uniname2ctype_offset(str288), 221},
     36706      {uniname2ctype_offset(str289), 129},
    3121836707      {-1},
    31219       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str74,                                       54},
    31220       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     36708      {uniname2ctype_offset(str291), 160},
     36709      {-1}, {-1}, {-1},
     36710      {uniname2ctype_offset(str295), 323},
     36711      {-1}, {-1}, {-1}, {-1},
     36712      {uniname2ctype_offset(str300), 163},
     36713      {uniname2ctype_offset(str301), 307},
     36714      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     36715      {uniname2ctype_offset(str309), 496},
    3122136716      {-1},
    31222       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str85,                               439},
     36717      {uniname2ctype_offset(str311), 44},
     36718      {-1}, {-1}, {-1},
     36719      {uniname2ctype_offset(str315), 399},
     36720      {-1},
     36721      {uniname2ctype_offset(str317), 345},
     36722      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     36723      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     36724      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     36725      {uniname2ctype_offset(str343), 305},
     36726      {uniname2ctype_offset(str344), 511},
     36727      {uniname2ctype_offset(str345), 163},
     36728      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     36729      {-1},
     36730      {uniname2ctype_offset(str356), 81},
     36731      {uniname2ctype_offset(str357), 169},
     36732      {-1},
     36733      {uniname2ctype_offset(str359), 23},
     36734      {-1},
     36735      {uniname2ctype_offset(str361), 187},
     36736      {uniname2ctype_offset(str362), 55},
     36737      {uniname2ctype_offset(str363), 24},
     36738      {-1},
     36739      {uniname2ctype_offset(str365), 22},
     36740      {-1}, {-1}, {-1},
     36741      {uniname2ctype_offset(str369), 188},
     36742      {uniname2ctype_offset(str370), 108},
    3122336743      {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    31224       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str92,                374},
     36744      {uniname2ctype_offset(str377), 227},
     36745      {-1}, {-1}, {-1}, {-1}, {-1},
     36746      {uniname2ctype_offset(str383), 127},
     36747      {uniname2ctype_offset(str384), 70},
     36748      {-1},
     36749      {uniname2ctype_offset(str386), 430},
     36750      {uniname2ctype_offset(str387), 14},
     36751      {-1},
     36752      {uniname2ctype_offset(str389), 46},
    3122536753      {-1}, {-1}, {-1},
    31226       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str96,        462},
    31227       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str97,                                  278},
    31228       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str98,                         252},
     36754      {uniname2ctype_offset(str393), 534},
     36755      {-1}, {-1},
     36756      {uniname2ctype_offset(str396), 436},
     36757      {-1}, {-1},
     36758      {uniname2ctype_offset(str399), 494},
     36759      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     36760      {uniname2ctype_offset(str408), 37},
     36761      {-1}, {-1}, {-1},
     36762      {uniname2ctype_offset(str412), 91},
     36763      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     36764      {-1}, {-1}, {-1},
     36765      {uniname2ctype_offset(str425), 91},
     36766      {-1}, {-1},
     36767      {uniname2ctype_offset(str428), 486},
     36768      {-1},
     36769      {uniname2ctype_offset(str430), 396},
     36770      {-1},
     36771      {uniname2ctype_offset(str432), 509},
     36772      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     36773      {uniname2ctype_offset(str440), 449},
     36774      {-1}, {-1}, {-1}, {-1},
     36775      {uniname2ctype_offset(str445), 443},
     36776      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     36777      {uniname2ctype_offset(str453), 70},
     36778      {-1},
     36779      {uniname2ctype_offset(str455), 546},
     36780      {-1}, {-1},
     36781      {uniname2ctype_offset(str458), 168},
     36782      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     36783      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     36784      {-1}, {-1}, {-1},
     36785      {uniname2ctype_offset(str480), 463},
     36786      {-1},
     36787      {uniname2ctype_offset(str482), 379},
     36788      {-1}, {-1}, {-1},
     36789      {uniname2ctype_offset(str486), 453},
     36790      {uniname2ctype_offset(str487), 555},
     36791      {uniname2ctype_offset(str488), 246},
     36792      {uniname2ctype_offset(str489), 113},
     36793      {-1}, {-1},
     36794      {uniname2ctype_offset(str492), 557},
     36795      {uniname2ctype_offset(str493), 24},
     36796      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    3122936797      {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    31230       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str105,                                    159},
     36798      {uniname2ctype_offset(str509), 195},
     36799      {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     36800      {uniname2ctype_offset(str516), 144},
     36801      {uniname2ctype_offset(str517), 144},
     36802      {-1}, {-1}, {-1}, {-1}, {-1},
     36803      {uniname2ctype_offset(str523), 29},
     36804      {uniname2ctype_offset(str524), 171},
     36805      {-1},
     36806      {uniname2ctype_offset(str526), 69},
     36807      {-1}, {-1}, {-1},
     36808      {uniname2ctype_offset(str530), 420},
     36809      {uniname2ctype_offset(str531), 310},
     36810      {-1},
     36811      {uniname2ctype_offset(str533), 474},
     36812      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     36813      {uniname2ctype_offset(str541), 567},
     36814      {-1}, {-1},
     36815      {uniname2ctype_offset(str544), 324},
     36816      {uniname2ctype_offset(str545), 350},
     36817      {-1},
     36818      {uniname2ctype_offset(str547), 106},
    3123136819      {-1}, {-1}, {-1}, {-1},
    31232       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str110,                              406},
     36820      {uniname2ctype_offset(str552), 158},
     36821      {-1},
     36822      {uniname2ctype_offset(str554), 68},
     36823      {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     36824      {uniname2ctype_offset(str561), 458},
     36825      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     36826      {-1}, {-1},
     36827      {uniname2ctype_offset(str573), 146},
     36828      {uniname2ctype_offset(str574), 74},
     36829      {-1},
     36830      {uniname2ctype_offset(str576), 72},
     36831      {uniname2ctype_offset(str577), 19},
     36832      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     36833      {uniname2ctype_offset(str586), 533},
     36834      {-1}, {-1}, {-1}, {-1},
     36835      {uniname2ctype_offset(str591), 372},
     36836      {-1}, {-1}, {-1}, {-1},
     36837      {uniname2ctype_offset(str596), 547},
     36838      {-1},
     36839      {uniname2ctype_offset(str598), 51},
     36840      {-1}, {-1},
     36841      {uniname2ctype_offset(str601), 485},
     36842      {uniname2ctype_offset(str602), 49},
    3123336843      {-1}, {-1}, {-1},
    31234       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str114,                       43},
    31235       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str115,                        411},
     36844      {uniname2ctype_offset(str606), 7},
     36845      {uniname2ctype_offset(str607), 234},
    3123636846      {-1},
    31237       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str117,                                263},
    31238       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     36847      {uniname2ctype_offset(str609), 192},
     36848      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     36849      {uniname2ctype_offset(str618), 167},
     36850      {uniname2ctype_offset(str619), 550},
     36851      {uniname2ctype_offset(str620), 347},
     36852      {-1},
     36853      {uniname2ctype_offset(str622), 460},
     36854      {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     36855      {uniname2ctype_offset(str629), 175},
     36856      {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     36857      {uniname2ctype_offset(str636), 167},
     36858      {-1}, {-1}, {-1}, {-1}, {-1},
     36859      {uniname2ctype_offset(str642), 417},
     36860      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     36861      {-1}, {-1}, {-1}, {-1}, {-1},
     36862      {uniname2ctype_offset(str657), 246},
     36863      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     36864      {uniname2ctype_offset(str665), 321},
     36865      {-1}, {-1}, {-1}, {-1},
     36866      {uniname2ctype_offset(str670), 404},
     36867      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     36868      {-1},
     36869      {uniname2ctype_offset(str681), 371},
     36870      {-1}, {-1},
     36871      {uniname2ctype_offset(str684), 156},
     36872      {-1}, {-1}, {-1}, {-1},
     36873      {uniname2ctype_offset(str689), 178},
    3123936874      {-1}, {-1}, {-1},
    31240       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str130,     333},
     36875      {uniname2ctype_offset(str693), 156},
     36876      {-1}, {-1}, {-1}, {-1}, {-1},
     36877      {uniname2ctype_offset(str699), 539},
     36878      {uniname2ctype_offset(str700), 67},
     36879      {-1}, {-1}, {-1}, {-1},
     36880      {uniname2ctype_offset(str705), 41},
     36881      {-1}, {-1},
     36882      {uniname2ctype_offset(str708), 50},
     36883      {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     36884      {uniname2ctype_offset(str715), 193},
     36885      {uniname2ctype_offset(str716), 218},
     36886      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     36887      {uniname2ctype_offset(str725), 455},
     36888      {-1}, {-1}, {-1}, {-1},
     36889      {uniname2ctype_offset(str730), 68},
     36890      {-1},
     36891      {uniname2ctype_offset(str732), 540},
     36892      {-1}, {-1}, {-1}, {-1},
     36893      {uniname2ctype_offset(str737), 492},
     36894      {uniname2ctype_offset(str738), 13},
     36895      {uniname2ctype_offset(str739), 466},
     36896      {-1},
     36897      {uniname2ctype_offset(str741), 47},
     36898      {uniname2ctype_offset(str742), 377},
     36899      {uniname2ctype_offset(str743), 35},
     36900      {-1}, {-1}, {-1}, {-1},
     36901      {uniname2ctype_offset(str748), 157},
     36902      {-1}, {-1},
     36903      {uniname2ctype_offset(str751), 385},
     36904      {-1},
     36905      {uniname2ctype_offset(str753), 419},
     36906      {-1}, {-1},
     36907      {uniname2ctype_offset(str756), 554},
     36908      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     36909      {-1}, {-1}, {-1}, {-1},
     36910      {uniname2ctype_offset(str770), 48},
     36911      {-1}, {-1},
     36912      {uniname2ctype_offset(str773), 38},
    3124136913      {-1}, {-1}, {-1},
    31242       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str134,                                       24},
    31243       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str135,                        473},
    31244       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str136,                                       26},
    31245       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str137,                                   120},
     36914      {uniname2ctype_offset(str777), 112},
    3124636915      {-1}, {-1}, {-1},
    31247       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str141,                                   227},
    31248       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str142,                                    183},
     36916      {uniname2ctype_offset(str781), 39},
     36917      {uniname2ctype_offset(str782), 134},
     36918      {-1}, {-1},
     36919      {uniname2ctype_offset(str785), 71},
    3124936920      {-1},
    31250       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str144,                                413},
     36921      {uniname2ctype_offset(str787), 235},
     36922      {uniname2ctype_offset(str788), 343},
    3125136923      {-1}, {-1},
    31252       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str147,                      384},
     36924      {uniname2ctype_offset(str791), 140},
     36925      {uniname2ctype_offset(str792), 140},
     36926      {uniname2ctype_offset(str793), 228},
    3125336927      {-1}, {-1}, {-1},
    31254       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str151,                                    151},
     36928      {uniname2ctype_offset(str797), 480},
    3125536929      {-1},
    31256       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str153,                                    13},
     36930      {uniname2ctype_offset(str799), 294},
     36931      {-1}, {-1},
     36932      {uniname2ctype_offset(str802), 468},
     36933      {-1}, {-1}, {-1}, {-1},
     36934      {uniname2ctype_offset(str807), 434},
     36935      {-1}, {-1}, {-1}, {-1},
     36936      {uniname2ctype_offset(str812), 473},
     36937      {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     36938      {uniname2ctype_offset(str819), 422},
     36939      {-1}, {-1}, {-1},
     36940      {uniname2ctype_offset(str823), 432},
     36941      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    3125736942      {-1},
    31258       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str155,                               302},
     36943      {uniname2ctype_offset(str834), 67},
     36944      {uniname2ctype_offset(str835), 136},
    3125936945      {-1},
    31260       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str157,                       325},
     36946      {uniname2ctype_offset(str837), 297},
     36947      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     36948      {-1},
     36949      {uniname2ctype_offset(str848), 85},
     36950      {uniname2ctype_offset(str849), 318},
     36951      {-1},
     36952      {uniname2ctype_offset(str851), 503},
     36953      {uniname2ctype_offset(str852), 245},
     36954      {uniname2ctype_offset(str853), 481},
     36955      {-1},
     36956      {uniname2ctype_offset(str855), 136},
     36957      {uniname2ctype_offset(str856), 142},
     36958      {uniname2ctype_offset(str857), 60},
     36959      {-1}, {-1}, {-1}, {-1},
     36960      {uniname2ctype_offset(str862), 115},
     36961      {-1}, {-1}, {-1}, {-1},
     36962      {uniname2ctype_offset(str867), 2},
     36963      {-1}, {-1},
     36964      {uniname2ctype_offset(str870), 104},
     36965      {-1},
     36966      {uniname2ctype_offset(str872), 247},
     36967      {-1},
     36968      {uniname2ctype_offset(str874), 217},
     36969      {-1}, {-1},
     36970      {uniname2ctype_offset(str877), 11},
    3126136971      {-1}, {-1}, {-1},
    31262       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str161,                  331},
     36972      {uniname2ctype_offset(str881), 69},
     36973      {-1}, {-1}, {-1},
     36974      {uniname2ctype_offset(str885), 459},
     36975      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     36976      {-1}, {-1},
     36977      {uniname2ctype_offset(str897), 457},
    3126336978      {-1},
    31264       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str163,                             276},
     36979      {uniname2ctype_offset(str899), 102},
     36980      {-1}, {-1}, {-1},
     36981      {uniname2ctype_offset(str903), 101},
     36982      {-1},
     36983      {uniname2ctype_offset(str905), 173},
     36984      {uniname2ctype_offset(str906), 197},
    3126536985      {-1}, {-1},
    31266       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str166,                488},
     36986      {uniname2ctype_offset(str909), 101},
     36987      {-1},
     36988      {uniname2ctype_offset(str911), 138},
     36989      {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     36990      {uniname2ctype_offset(str918), 208},
     36991      {uniname2ctype_offset(str919), 398},
     36992      {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     36993      {uniname2ctype_offset(str926), 522},
     36994      {-1},
     36995      {uniname2ctype_offset(str928), 73},
     36996      {-1},
     36997      {uniname2ctype_offset(str930), 151},
     36998      {uniname2ctype_offset(str931), 476},
     36999      {uniname2ctype_offset(str932), 166},
     37000      {-1}, {-1},
     37001      {uniname2ctype_offset(str935), 508},
     37002      {-1},
     37003      {uniname2ctype_offset(str937), 228},
     37004      {-1}, {-1}, {-1}, {-1},
     37005      {uniname2ctype_offset(str942), 170},
     37006      {-1},
     37007      {uniname2ctype_offset(str944), 74},
     37008      {-1}, {-1},
     37009      {uniname2ctype_offset(str947), 504},
     37010      {uniname2ctype_offset(str948), 499},
     37011      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37012      {uniname2ctype_offset(str956), 183},
     37013      {uniname2ctype_offset(str957), 333},
     37014      {-1}, {-1},
     37015      {uniname2ctype_offset(str960), 135},
     37016      {-1}, {-1}, {-1}, {-1}, {-1},
     37017      {uniname2ctype_offset(str966), 542},
     37018      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37019      {uniname2ctype_offset(str975), 186},
     37020      {uniname2ctype_offset(str976), 129},
     37021      {uniname2ctype_offset(str977), 158},
     37022      {-1}, {-1},
     37023      {uniname2ctype_offset(str980), 244},
     37024      {-1}, {-1},
     37025      {uniname2ctype_offset(str983), 329},
     37026      {-1},
     37027      {uniname2ctype_offset(str985), 26},
     37028      {-1}, {-1},
     37029      {uniname2ctype_offset(str988), 353},
     37030      {-1}, {-1},
     37031      {uniname2ctype_offset(str991), 387},
     37032      {-1}, {-1}, {-1}, {-1},
     37033      {uniname2ctype_offset(str996), 53},
     37034      {-1},
     37035      {uniname2ctype_offset(str998), 206},
     37036      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37037      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37038      {uniname2ctype_offset(str1016), 301},
     37039      {-1}, {-1},
     37040      {uniname2ctype_offset(str1019), 392},
     37041      {-1}, {-1},
     37042      {uniname2ctype_offset(str1022), 435},
     37043      {uniname2ctype_offset(str1023), 36},
     37044      {-1},
     37045      {uniname2ctype_offset(str1025), 105},
    3126737046      {-1}, {-1}, {-1},
    31268       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str170,         339},
     37047      {uniname2ctype_offset(str1029), 129},
    3126937048      {-1}, {-1},
    31270       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str173,                               426},
     37049      {uniname2ctype_offset(str1032), 200},
    3127137050      {-1},
    31272       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str175,    485},
     37051      {uniname2ctype_offset(str1034), 104},
     37052      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37053      {-1}, {-1}, {-1}, {-1},
     37054      {uniname2ctype_offset(str1048), 541},
     37055      {uniname2ctype_offset(str1049), 322},
     37056      {-1}, {-1}, {-1},
     37057      {uniname2ctype_offset(str1053), 126},
     37058      {-1}, {-1},
     37059      {uniname2ctype_offset(str1056), 161},
     37060      {-1}, {-1}, {-1}, {-1},
     37061      {uniname2ctype_offset(str1061), 25},
     37062      {-1}, {-1}, {-1},
     37063      {uniname2ctype_offset(str1065), 105},
     37064      {-1},
     37065      {uniname2ctype_offset(str1067), 122},
     37066      {-1},
     37067      {uniname2ctype_offset(str1069), 206},
     37068      {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37069      {uniname2ctype_offset(str1076), 489},
     37070      {uniname2ctype_offset(str1077), 490},
     37071      {uniname2ctype_offset(str1078), 93},
     37072      {-1},
     37073      {uniname2ctype_offset(str1080), 215},
     37074      {-1}, {-1}, {-1}, {-1}, {-1},
     37075      {uniname2ctype_offset(str1086), 408},
     37076      {-1},
     37077      {uniname2ctype_offset(str1088), 203},
     37078      {uniname2ctype_offset(str1089), 221},
     37079      {uniname2ctype_offset(str1090), 565},
     37080      {-1}, {-1}, {-1},
     37081      {uniname2ctype_offset(str1094), 478},
     37082      {-1}, {-1}, {-1},
     37083      {uniname2ctype_offset(str1098), 517},
     37084      {-1},
     37085      {uniname2ctype_offset(str1100), 472},
     37086      {-1}, {-1},
     37087      {uniname2ctype_offset(str1103), 402},
     37088      {uniname2ctype_offset(str1104), 164},
     37089      {-1}, {-1},
     37090      {uniname2ctype_offset(str1107), 109},
     37091      {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37092      {uniname2ctype_offset(str1114), 122},
     37093      {uniname2ctype_offset(str1115), 354},
     37094      {uniname2ctype_offset(str1116), 131},
     37095      {-1}, {-1},
     37096      {uniname2ctype_offset(str1119), 135},
     37097      {uniname2ctype_offset(str1120), 467},
     37098      {-1}, {-1}, {-1},
     37099      {uniname2ctype_offset(str1124), 113},
     37100      {-1},
     37101      {uniname2ctype_offset(str1126), 56},
     37102      {uniname2ctype_offset(str1127), 218},
     37103      {-1}, {-1}, {-1},
     37104      {uniname2ctype_offset(str1131), 15},
     37105      {-1}, {-1}, {-1},
     37106      {uniname2ctype_offset(str1135), 30},
     37107      {uniname2ctype_offset(str1136), 120},
     37108      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37109      {-1},
     37110      {uniname2ctype_offset(str1147), 370},
     37111      {-1}, {-1}, {-1}, {-1},
     37112      {uniname2ctype_offset(str1152), 110},
     37113      {-1}, {-1},
     37114      {uniname2ctype_offset(str1155), 110},
     37115      {uniname2ctype_offset(str1156), 414},
     37116      {uniname2ctype_offset(str1157), 141},
     37117      {uniname2ctype_offset(str1158), 121},
     37118      {-1},
     37119      {uniname2ctype_offset(str1160), 176},
     37120      {uniname2ctype_offset(str1161), 181},
     37121      {-1}, {-1}, {-1}, {-1}, {-1},
     37122      {uniname2ctype_offset(str1167), 117},
     37123      {uniname2ctype_offset(str1168), 479},
     37124      {-1}, {-1}, {-1},
     37125      {uniname2ctype_offset(str1172), 88},
     37126      {uniname2ctype_offset(str1173), 507},
     37127      {-1}, {-1}, {-1}, {-1},
     37128      {uniname2ctype_offset(str1178), 86},
     37129      {uniname2ctype_offset(str1179), 166},
     37130      {uniname2ctype_offset(str1180), 145},
     37131      {-1},
     37132      {uniname2ctype_offset(str1182), 563},
     37133      {-1}, {-1}, {-1},
     37134      {uniname2ctype_offset(str1186), 117},
     37135      {-1}, {-1},
     37136      {uniname2ctype_offset(str1189), 193},
     37137      {-1}, {-1},
     37138      {uniname2ctype_offset(str1192), 176},
     37139      {uniname2ctype_offset(str1193), 107},
     37140      {-1},
     37141      {uniname2ctype_offset(str1195), 304},
     37142      {uniname2ctype_offset(str1196), 109},
     37143      {-1}, {-1}, {-1}, {-1},
     37144      {uniname2ctype_offset(str1201), 236},
     37145      {uniname2ctype_offset(str1202), 86},
     37146      {uniname2ctype_offset(str1203), 502},
     37147      {-1}, {-1}, {-1},
     37148      {uniname2ctype_offset(str1207), 81},
     37149      {-1}, {-1}, {-1},
     37150      {uniname2ctype_offset(str1211), 120},
     37151      {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37152      {uniname2ctype_offset(str1218), 465},
     37153      {-1}, {-1}, {-1},
     37154      {uniname2ctype_offset(str1222), 168},
     37155      {-1}, {-1},
     37156      {uniname2ctype_offset(str1225), 493},
     37157      {-1},
     37158      {uniname2ctype_offset(str1227), 537},
     37159      {-1},
     37160      {uniname2ctype_offset(str1229), 388},
     37161      {-1}, {-1},
     37162      {uniname2ctype_offset(str1232), 240},
     37163      {-1}, {-1}, {-1}, {-1},
     37164      {uniname2ctype_offset(str1237), 196},
     37165      {-1}, {-1}, {-1}, {-1}, {-1},
     37166      {uniname2ctype_offset(str1243), 115},
     37167      {-1},
     37168      {uniname2ctype_offset(str1245), 410},
     37169      {-1}, {-1}, {-1},
     37170      {uniname2ctype_offset(str1249), 222},
     37171      {-1}, {-1},
     37172      {uniname2ctype_offset(str1252), 397},
     37173      {uniname2ctype_offset(str1253), 72},
     37174      {uniname2ctype_offset(str1254), 114},
     37175      {-1}, {-1},
     37176      {uniname2ctype_offset(str1257), 3},
     37177      {-1},
     37178      {uniname2ctype_offset(str1259), 137},
     37179      {-1}, {-1},
     37180      {uniname2ctype_offset(str1262), 311},
     37181      {-1}, {-1}, {-1}, {-1},
     37182      {uniname2ctype_offset(str1267), 292},
    3127337183      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    31274       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str183,                                 152},
     37184      {uniname2ctype_offset(str1275), 114},
     37185      {-1}, {-1}, {-1}, {-1}, {-1},
     37186      {uniname2ctype_offset(str1281), 553},
     37187      {-1}, {-1}, {-1},
     37188      {uniname2ctype_offset(str1285), 217},
    3127537189      {-1}, {-1},
    31276       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str186,                                     65},
     37190      {uniname2ctype_offset(str1288), 42},
     37191      {-1}, {-1}, {-1}, {-1}, {-1},
     37192      {uniname2ctype_offset(str1294), 360},
     37193      {-1},
     37194      {uniname2ctype_offset(str1296), 445},
     37195      {-1},
     37196      {uniname2ctype_offset(str1298), 73},
     37197      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37198      {uniname2ctype_offset(str1306), 106},
     37199      {uniname2ctype_offset(str1307), 201},
     37200      {uniname2ctype_offset(str1308), 373},
     37201      {uniname2ctype_offset(str1309), 505},
     37202      {uniname2ctype_offset(str1310), 98},
     37203      {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37204      {uniname2ctype_offset(str1317), 210},
     37205      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37206      {uniname2ctype_offset(str1325), 471},
     37207      {uniname2ctype_offset(str1326), 362},
     37208      {-1}, {-1}, {-1}, {-1},
     37209      {uniname2ctype_offset(str1331), 145},
     37210      {-1}, {-1},
     37211      {uniname2ctype_offset(str1334), 469},
     37212      {uniname2ctype_offset(str1335), 9},
     37213      {uniname2ctype_offset(str1336), 203},
    3127737214      {-1}, {-1}, {-1},
    31278       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str190,                                  92},
    31279       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37215      {uniname2ctype_offset(str1340), 477},
     37216      {uniname2ctype_offset(str1341), 524},
     37217      {-1}, {-1},
     37218      {uniname2ctype_offset(str1344), 32},
    3128037219      {-1}, {-1}, {-1},
    31281       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str203,                                     75},
     37220      {uniname2ctype_offset(str1348), 1},
     37221      {-1}, {-1}, {-1}, {-1}, {-1},
     37222      {uniname2ctype_offset(str1354), 327},
     37223      {uniname2ctype_offset(str1355), 325},
     37224      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37225      {uniname2ctype_offset(str1364), 352},
     37226      {uniname2ctype_offset(str1365), 351},
    3128237227      {-1},
    31283       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str205,                                    75},
    31284       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str206,                                    111},
     37228      {uniname2ctype_offset(str1367), 250},
     37229      {uniname2ctype_offset(str1368), 125},
     37230      {uniname2ctype_offset(str1369), 207},
     37231      {-1}, {-1},
     37232      {uniname2ctype_offset(str1372), 340},
     37233      {uniname2ctype_offset(str1373), 245},
     37234      {uniname2ctype_offset(str1374), 127},
     37235      {-1}, {-1}, {-1}, {-1},
     37236      {uniname2ctype_offset(str1379), 164},
     37237      {-1}, {-1},
     37238      {uniname2ctype_offset(str1382), 207},
     37239      {-1}, {-1}, {-1}, {-1}, {-1},
     37240      {uniname2ctype_offset(str1388), 138},
    3128537241      {-1},
    31286       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str208,                                 273},
    31287       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str209,                                     88},
    31288       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    31289       {-1}, {-1}, {-1}, {-1},
    31290       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str223,                        341},
    31291       {-1}, {-1},
    31292       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str226,                                 298},
    31293       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str227,                                    120},
    31294       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    31295       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str237,                        250},
    31296       {-1},
    31297       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str239,                      408},
    31298       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str240,                               129},
    31299       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str241,                                        23},
    31300       {-1},
    31301       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str243,                                       36},
     37242      {uniname2ctype_offset(str1390), 375},
     37243#ifndef USE_UNICODE_AGE_PROPERTIES
     37244      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    3130237245      {-1}, {-1}, {-1},
    31303       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str247,                 386},
    31304       {-1}, {-1},
    31305       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str250,                                       52},
    31306       {-1},
    31307       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str252,                                       28},
    31308       {-1}, {-1},
    31309       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str255,                                 289},
    31310       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str256,                                414},
    31311       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str257,                                     78},
    31312       {-1},
    31313       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str259,                                    148},
    31314       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str260,                                    160},
    31315       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str261,                        388},
    31316       {-1},
    31317       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str263,                              256},
    31318       {-1}, {-1},
    31319       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str266,                                 78},
    31320       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str267,                               281},
    31321       {-1}, {-1},
    31322       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str270,                             299},
    31323       {-1},
    31324       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str272,                                  148},
    31325       {-1},
    31326       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str274,                                    170},
    31327       {-1}, {-1}, {-1}, {-1}, {-1},
    31328       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str280,                                   80},
    31329       {-1}, {-1}, {-1},
    31330       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str284,                324},
    31331       {-1}, {-1},
    31332       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str287,                                261},
    31333       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str288,                                    155},
    31334       {-1}, {-1}, {-1}, {-1}, {-1},
    31335       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str294,                                    114},
    31336       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str295,                                     109},
    31337       {-1}, {-1},
    31338       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str298,                               155},
    31339       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str299,                                    109},
    31340       {-1}, {-1},
    31341       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str302,                                      63},
    31342       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str303,                              286},
    31343       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str304,                               450},
    31344       {-1}, {-1},
    31345       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str307,                                    150},
    31346       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    31347       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str315,                              185},
    31348       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str316,                              449},
    31349       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str317,                                     3},
    31350       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str318,                                     92},
    31351       {-1},
    31352       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str320,                    444},
    31353       {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    31354       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str327,                              284},
    31355       {-1}, {-1},
    31356       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str330,                                    88},
    31357       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str331,                                    172},
    31358       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str332,                 327},
    31359       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str333,                                    205},
    31360       {-1},
    31361       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str335,                                  169},
    31362       {-1},
    31363       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str337,                               277},
    31364       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    31365       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str347,                                 123},
    31366       {-1}, {-1},
    31367       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str350,                               423},
    31368       {-1}, {-1},
    31369       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str353,               314},
    31370       {-1}, {-1}, {-1}, {-1}, {-1},
    31371       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str359,                                    124},
    31372       {-1}, {-1},
    31373       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str362,                                       25},
    31374       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str363,                                     93},
    31375       {-1}, {-1},
    31376       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str366,                                     55},
    31377       {-1}, {-1}, {-1}, {-1}, {-1},
    31378       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str372,                                     82},
    31379       {-1},
    31380       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str374,        483},
    31381       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str375,                                     99},
    31382       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str376,                     39},
    31383       {-1}, {-1}, {-1},
    31384       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str380,                         394},
    31385       {-1},
    31386       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str382,                 451},
    31387       {-1}, {-1}, {-1},
    31388       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str386,                                 151},
    31389       {-1},
    31390       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str388,                                   82},
    31391       {-1},
    31392       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str390,                                 183},
    31393       {-1},
    31394       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str392,                                       70},
    31395       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    31396       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str401,                                      67},
    31397       {-1}, {-1}, {-1},
    31398       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str405,                         170},
    31399       {-1},
    31400       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str407,                                    168},
    31401       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str408,                                  457},
    31402       {-1},
    31403       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str410,                               266},
    31404       {-1},
    31405       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str412,                                      61},
    31406       {-1},
    31407       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str414,                           208},
    31408       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str415,                                     211},
    31409       {-1}, {-1},
    31410       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str418,                     205},
    31411       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str419,                                    186},
    31412       {-1}, {-1}, {-1},
    31413       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str423,                                    196},
    31414       {-1},
    31415       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str425,                                    198},
    31416       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    31417       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str433,                            459},
    31418       {-1}, {-1}, {-1}, {-1}, {-1},
    31419       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str439,      350},
    31420       {-1},
    31421       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str441,                             486},
    31422       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    31423       {-1}, {-1},
    31424       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str453,                                      66},
    31425       {-1}, {-1},
    31426       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str456,                             305},
    31427       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    31428       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str466,                                       43},
    31429       {-1},
    31430       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str468,                           481},
    31431       {-1},
    31432       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str470,                                       39},
    31433       {-1}, {-1}, {-1}, {-1}, {-1},
    31434       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str476,                                     224},
    31435       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str477,                          28},
    31436       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    31437       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str485,           326},
    31438       {-1},
    31439       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str487,                                    218},
    31440       {-1},
    31441       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str489,                                    123},
    31442       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str490,                                     64},
    31443       {-1}, {-1},
    31444       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str493,                               67},
    31445       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    31446       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str502,                          412},
    31447       {-1}, {-1}, {-1}, {-1}, {-1},
    31448       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str508,                                       41},
    31449       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    31450       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str518,                               421},
    31451       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str519,                253},
    31452       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str520,                                432},
    31453       {-1},
    31454       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str522,                                       45},
    31455       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    31456       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str530,                                    106},
    31457       {-1}, {-1}, {-1}, {-1}, {-1},
    31458       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str536,                              199},
    31459       {-1}, {-1}, {-1},
    31460       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str540,                   162},
    31461       {-1}, {-1}, {-1},
    31462       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str544,                                    100},
    31463       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str545,       477},
    31464       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str546,                                342},
    31465       {-1}, {-1}, {-1},
    31466       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str550,                              352},
    31467       {-1}, {-1}, {-1},
    31468       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str554,           360},
    31469       {-1},
    31470       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str556,                                     9},
    31471       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    31472       {-1}, {-1}, {-1}, {-1},
    31473       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str570,                                    87},
    31474       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str571,                                    171},
    31475       {-1},
    31476       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str573,                                    184},
    31477       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    31478       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str582,                                    197},
    31479       {-1},
    31480       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str584,                                    174},
    31481       {-1}, {-1},
    31482       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str587,                    163},
    31483       {-1}, {-1}, {-1}, {-1}, {-1},
    31484       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str593,                                322},
    31485       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str594,                                184},
    31486       {-1},
    31487       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str596,                                   201},
    31488       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str597,                    415},
    31489       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str598,                                    116},
    31490       {-1},
    31491       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str600,                                    191},
    31492       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str601,                               455},
    31493       {-1},
    31494       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str603,                                   229},
    31495       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str604,                               308},
    31496       {-1}, {-1}, {-1},
    31497       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str608,                                307},
    31498       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str609,                                       37},
    31499       {-1},
    31500       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str611,                                    141},
    31501       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str612,                                 288},
    31502       {-1},
    31503       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str614,                                       21},
    31504       {-1}, {-1},
    31505       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str617,                                   264},
    31506       {-1}, {-1},
    31507       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str620,                                     1},
    31508       {-1},
    31509       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str622,                          194},
    31510       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str623,                                   465},
    31511       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str624,                             429},
    31512       {-1}, {-1},
    31513       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str627,                                   74},
    31514       {-1}, {-1},
    31515       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str630,                                       19},
    31516       {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    31517       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str637,                                  468},
    31518       {-1}, {-1},
    31519       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str640,                                       50},
    31520       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    31521       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str650,                               211},
    31522       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    31523       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str658,                   309},
    31524       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    31525       {-1}, {-1}, {-1}, {-1},
    31526       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str672,                              344},
    31527       {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    31528       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str679,                                131},
    31529       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    31530       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    31531       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str696,                                     221},
    31532       {-1}, {-1},
    31533       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str699,                                    226},
    31534       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str700,                                    187},
    31535       {-1}, {-1},
    31536       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str703,                            35},
    31537       {-1},
    31538       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str705,                                   23},
    31539       {-1}, {-1},
    31540       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str708,                                    202},
    31541       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str709,                           373},
    31542       {-1},
    31543       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str711,                             416},
    31544       {-1},
    31545       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str713,                                  199},
    31546       {-1},
    31547       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str715,                                    113},
    31548       {-1}, {-1},
    31549       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str718,                                    210},
    31550       {-1}, {-1}, {-1},
    31551       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str722,                                 195},
    31552       {-1},
    31553       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str724,                                    193},
    31554       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str725,                                    225},
    31555       {-1},
    31556       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str727,                          480},
    31557       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str728,                                       27},
    31558       {-1},
    31559       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str730,                            52},
    31560       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str731,                         160},
    31561       {-1}, {-1}, {-1},
    31562       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str735,                                  66},
    31563       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str736,                                   279},
    31564       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str737,                                 173},
    31565       {-1}, {-1}, {-1}, {-1},
    31566       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str742,                                      94},
    31567       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str743,                                     94},
    31568       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str744,                               105},
    31569       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str745,                                  209},
    31570       {-1}, {-1}, {-1},
    31571       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str749,                       428},
    31572       {-1}, {-1}, {-1},
    31573       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str753,                                   215},
    31574       {-1}, {-1}, {-1}, {-1},
    31575       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str758,                      249},
    31576       {-1}, {-1},
    31577       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str761,                                    162},
    31578       {-1},
    31579       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str763,                                    125},
    31580       {-1}, {-1}, {-1},
    31581       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str767,                                       35},
    31582       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str768,                                 113},
    31583       {-1}, {-1}, {-1},
    31584       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str772,                             443},
    31585       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str773,                                 219},
    31586       {-1}, {-1}, {-1},
    31587       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str777,                      101},
    31588       {-1},
    31589       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str779,                   371},
    31590       {-1}, {-1}, {-1},
    31591       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str783,                     425},
    31592       {-1}, {-1}, {-1},
    31593       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str787,                                  128},
    31594       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    31595       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str796,                              24},
    31596       {-1},
    31597       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str798,                                      223},
    31598       {-1}, {-1}, {-1}, {-1},
    31599       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str803,                            431},
    31600       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str804,                                    195},
    31601       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str805,                               21},
    31602       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    31603       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str813,                               140},
    31604       {-1},
    31605       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str815,           474},
    31606       {-1},
    31607       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str817,                               456},
    31608       {-1}, {-1},
    31609       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str820,                                    59},
    31610       {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    31611       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str827,                                     7},
    31612       {-1}, {-1},
    31613       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str830,                 440},
    31614       {-1},
    31615       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str832,                  441},
    31616       {-1},
    31617       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str834,                                    128},
    31618       {-1}, {-1}, {-1},
    31619       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str838,                   410},
    31620       {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    31621       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str845,                              144},
    31622       {-1}, {-1},
    31623       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str848,                                     188},
    31624       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str849,                                    188},
    31625       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str850,           397},
    31626       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    31627       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str858,                                57},
    31628       {-1}, {-1},
    31629       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str861,                                    163},
    31630       {-1}, {-1},
    31631       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str864,                       229},
    31632       {-1},
    31633       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str866,         484},
    31634       {-1}, {-1},
    31635       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str869,                           54},
    31636       {-1},
    31637       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str871,                 323},
    31638       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    31639       {-1},
    31640       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str882,                                   206},
    31641       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    31642       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str892,                                    156},
    31643       {-1}, {-1},
    31644       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str895,                        442},
    31645       {-1}, {-1},
    31646       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str898,                               111},
    31647       {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    31648       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str905,                                 116},
    31649       {-1}, {-1}, {-1},
    31650       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str909,                               114},
    31651       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str910,                                  141},
    31652       {-1}, {-1},
    31653       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str913,                                        38},
    31654       {-1}, {-1},
    31655       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str916,                             295},
    31656       {-1}, {-1}, {-1}, {-1}, {-1},
    31657       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str922,                                       53},
    31658       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str923,                         42},
    31659       {-1},
    31660       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str925,                         226},
    31661       {-1},
    31662       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str927,                                    173},
    31663       {-1}, {-1}, {-1}, {-1},
    31664       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str932,                               454},
    31665       {-1},
    31666       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str934,                                    129},
    31667       {-1},
    31668       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str936,                         209},
    31669       {-1},
    31670       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str938,                   215},
     37246#else /* USE_UNICODE_AGE_PROPERTIES */
     37247      {uniname2ctype_offset(str1391), 256},
     37248      {uniname2ctype_offset(str1392), 263},
     37249      {uniname2ctype_offset(str1393), 262},
     37250      {uniname2ctype_offset(str1394), 274},
     37251      {uniname2ctype_offset(str1395), 258},
     37252      {uniname2ctype_offset(str1396), 257},
     37253      {uniname2ctype_offset(str1397), 268},
     37254      {uniname2ctype_offset(str1398), 267},
     37255      {uniname2ctype_offset(str1399), 273},
     37256      {uniname2ctype_offset(str1400), 272},
     37257      {uniname2ctype_offset(str1401), 269},
     37258      {uniname2ctype_offset(str1402), 271},
     37259#endif /* USE_UNICODE_AGE_PROPERTIES */
     37260      {uniname2ctype_offset(str1403), 552},
     37261      {uniname2ctype_offset(str1404), 367},
    3167137262#ifndef USE_UNICODE_AGE_PROPERTIES
    3167237263      {-1}, {-1},
    3167337264#else /* USE_UNICODE_AGE_PROPERTIES */
    31674       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str939,                                 232},
    31675       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str940,                                 234},
     37265      {uniname2ctype_offset(str1405), 265},
     37266      {uniname2ctype_offset(str1406), 264},
    3167637267#endif /* USE_UNICODE_AGE_PROPERTIES */
    31677       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str941,                         41},
    31678       {-1},
    31679       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str943,                             36},
     37268      {uniname2ctype_offset(str1407), 36},
     37269      {uniname2ctype_offset(str1408), 52},
    3168037270#ifndef USE_UNICODE_AGE_PROPERTIES
    3168137271      {-1}, {-1},
    3168237272#else /* USE_UNICODE_AGE_PROPERTIES */
    31683       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str944,                                 244},
    31684       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str945,                                 245},
     37273      {uniname2ctype_offset(str1409), 266},
     37274      {-1},
    3168537275#endif /* USE_UNICODE_AGE_PROPERTIES */
    31686       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str946,                                     89},
     37276      {uniname2ctype_offset(str1411), 315},
     37277      {-1},
     37278      {uniname2ctype_offset(str1413), 564},
     37279      {uniname2ctype_offset(str1414), 153},
     37280      {-1},
     37281      {uniname2ctype_offset(str1416), 93},
     37282#ifndef USE_UNICODE_AGE_PROPERTIES
     37283      {-1}, {-1}, {-1},
     37284#else /* USE_UNICODE_AGE_PROPERTIES */
     37285      {uniname2ctype_offset(str1417), 260},
     37286      {uniname2ctype_offset(str1418), 259},
     37287      {-1},
     37288#endif /* USE_UNICODE_AGE_PROPERTIES */
     37289      {uniname2ctype_offset(str1420), 202},
    3168737290#ifndef USE_UNICODE_AGE_PROPERTIES
    3168837291      {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    3168937292#else /* USE_UNICODE_AGE_PROPERTIES */
    31690       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str947,                                 236},
    31691       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str948,                                 237},
    31692       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str949,                                 241},
    31693       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str950,                                 242},
    31694       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str951,                                 233},
    31695       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str952,                                 246},
     37293      {uniname2ctype_offset(str1421), 261},
     37294      {-1},
     37295      {uniname2ctype_offset(str1423), 270},
     37296      {-1}, {-1}, {-1},
    3169637297#endif /* USE_UNICODE_AGE_PROPERTIES */
    31697       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str953,               471},
    31698       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str954,                       437},
    31699 #ifndef USE_UNICODE_AGE_PROPERTIES
     37298      {uniname2ctype_offset(str1427), 20},
     37299      {-1},
     37300      {uniname2ctype_offset(str1429), 124},
     37301      {-1}, {-1}, {-1}, {-1},
     37302      {uniname2ctype_offset(str1434), 501},
     37303      {uniname2ctype_offset(str1435), 137},
     37304      {-1}, {-1}, {-1},
     37305      {uniname2ctype_offset(str1439), 428},
     37306      {-1}, {-1}, {-1}, {-1},
     37307      {uniname2ctype_offset(str1444), 39},
     37308      {-1}, {-1}, {-1}, {-1},
     37309      {uniname2ctype_offset(str1449), 312},
     37310      {uniname2ctype_offset(str1450), 202},
     37311      {uniname2ctype_offset(str1451), 336},
     37312      {-1},
     37313      {uniname2ctype_offset(str1453), 418},
     37314      {-1},
     37315      {uniname2ctype_offset(str1455), 27},
     37316      {uniname2ctype_offset(str1456), 238},
     37317      {-1},
     37318      {uniname2ctype_offset(str1458), 225},
     37319      {-1}, {-1}, {-1}, {-1},
     37320      {uniname2ctype_offset(str1463), 241},
     37321      {uniname2ctype_offset(str1464), 538},
     37322      {-1}, {-1}, {-1}, {-1},
     37323      {uniname2ctype_offset(str1469), 141},
     37324      {uniname2ctype_offset(str1470), 35},
     37325      {uniname2ctype_offset(str1471), 355},
     37326      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37327      {-1}, {-1}, {-1}, {-1},
     37328      {uniname2ctype_offset(str1485), 462},
     37329      {-1}, {-1}, {-1}, {-1},
     37330      {uniname2ctype_offset(str1490), 252},
     37331      {-1}, {-1}, {-1}, {-1}, {-1},
     37332      {uniname2ctype_offset(str1496), 54},
     37333      {uniname2ctype_offset(str1497), 225},
    3170037334      {-1}, {-1},
    31701 #else /* USE_UNICODE_AGE_PROPERTIES */
    31702       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str955,                                 243},
    31703       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str956,                                 239},
    31704 #endif /* USE_UNICODE_AGE_PROPERTIES */
    31705       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str957,                    316},
    31706 #ifndef USE_UNICODE_AGE_PROPERTIES
     37335      {uniname2ctype_offset(str1500), 313},
     37336      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37337      {uniname2ctype_offset(str1508), 506},
     37338      {-1},
     37339      {uniname2ctype_offset(str1510), 154},
     37340      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37341      {-1},
     37342      {uniname2ctype_offset(str1521), 497},
     37343      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    3170737344      {-1}, {-1}, {-1}, {-1},
    31708 #else /* USE_UNICODE_AGE_PROPERTIES */
    31709       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str958,                                 235},
    31710       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str959,                                 247},
    31711       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str960,                                 240},
     37345      {uniname2ctype_offset(str1535), 383},
     37346      {uniname2ctype_offset(str1536), 381},
     37347      {-1}, {-1},
     37348      {uniname2ctype_offset(str1539), 34},
     37349      {uniname2ctype_offset(str1540), 299},
     37350      {-1}, {-1}, {-1}, {-1},
     37351      {uniname2ctype_offset(str1545), 8},
     37352      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37353      {uniname2ctype_offset(str1553), 513},
    3171237354      {-1},
    31713 #endif /* USE_UNICODE_AGE_PROPERTIES */
    31714       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str962,                             430},
    31715 #ifndef USE_UNICODE_AGE_PROPERTIES
     37355      {uniname2ctype_offset(str1555), 243},
     37356      {-1}, {-1}, {-1}, {-1},
     37357      {uniname2ctype_offset(str1560), 222},
     37358      {-1}, {-1}, {-1}, {-1},
     37359      {uniname2ctype_offset(str1565), 20},
     37360      {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37361      {uniname2ctype_offset(str1572), 6},
    3171637362      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    31717 #else /* USE_UNICODE_AGE_PROPERTIES */
     37363      {uniname2ctype_offset(str1580), 332},
    3171837364      {-1}, {-1}, {-1}, {-1},
    31719       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str967,                                 238},
     37365      {uniname2ctype_offset(str1585), 234},
     37366      {-1}, {-1}, {-1},
     37367      {uniname2ctype_offset(str1589), 349},
     37368      {-1}, {-1}, {-1},
     37369      {uniname2ctype_offset(str1593), 536},
     37370      {uniname2ctype_offset(str1594), 572},
     37371      {uniname2ctype_offset(str1595), 43},
     37372      {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37373      {uniname2ctype_offset(str1602), 317},
     37374      {-1},
     37375      {uniname2ctype_offset(str1604), 405},
     37376      {-1},
     37377      {uniname2ctype_offset(str1606), 424},
     37378      {uniname2ctype_offset(str1607), 199},
     37379      {uniname2ctype_offset(str1608), 535},
     37380      {uniname2ctype_offset(str1609), 142},
     37381      {-1},
     37382      {uniname2ctype_offset(str1611), 482},
     37383      {-1}, {-1}, {-1}, {-1}, {-1},
     37384      {uniname2ctype_offset(str1617), 85},
     37385      {-1}, {-1}, {-1}, {-1}, {-1},
     37386      {uniname2ctype_offset(str1623), 235},
     37387      {-1}, {-1}, {-1}, {-1},
     37388      {uniname2ctype_offset(str1628), 242},
     37389      {-1},
     37390      {uniname2ctype_offset(str1630), 249},
     37391      {uniname2ctype_offset(str1631), 33},
     37392      {uniname2ctype_offset(str1632), 159},
     37393      {-1}, {-1}, {-1},
     37394      {uniname2ctype_offset(str1636), 121},
     37395      {-1},
     37396      {uniname2ctype_offset(str1638), 253},
     37397      {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37398      {uniname2ctype_offset(str1645), 357},
     37399      {-1},
     37400      {uniname2ctype_offset(str1647), 58},
     37401      {uniname2ctype_offset(str1648), 447},
     37402      {-1},
     37403      {uniname2ctype_offset(str1650), 159},
     37404      {-1}, {-1}, {-1},
     37405      {uniname2ctype_offset(str1654), 244},
     37406      {uniname2ctype_offset(str1655), 361},
     37407      {uniname2ctype_offset(str1656), 446},
     37408      {uniname2ctype_offset(str1657), 66},
     37409      {-1}, {-1}, {-1}, {-1}, {-1},
     37410      {uniname2ctype_offset(str1663), 148},
    3172037411      {-1}, {-1},
    31721 #endif /* USE_UNICODE_AGE_PROPERTIES */
    31722       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str970,                                   157},
     37412      {uniname2ctype_offset(str1666), 154},
     37413      {-1}, {-1},
     37414      {uniname2ctype_offset(str1669), 148},
    3172337415      {-1},
    31724       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str972,                                  18},
     37416      {uniname2ctype_offset(str1671), 215},
     37417      {uniname2ctype_offset(str1672), 162},
     37418      {uniname2ctype_offset(str1673), 356},
     37419      {uniname2ctype_offset(str1674), 395},
     37420      {-1}, {-1},
     37421      {uniname2ctype_offset(str1677), 431},
     37422      {-1}, {-1}, {-1}, {-1},
     37423      {uniname2ctype_offset(str1682), 97},
     37424      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37425      {uniname2ctype_offset(str1690), 394},
     37426      {-1}, {-1}, {-1}, {-1},
     37427      {uniname2ctype_offset(str1695), 97},
    3172537428      {-1},
    31726       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str974,                              470},
    31727       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str975,                        372},
    31728       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str976,                                260},
     37429      {uniname2ctype_offset(str1697), 89},
     37430      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37431      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37432      {uniname2ctype_offset(str1714), 230},
     37433      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37434      {-1},
     37435      {uniname2ctype_offset(str1725), 37},
     37436      {-1},
     37437      {uniname2ctype_offset(str1727), 330},
     37438      {uniname2ctype_offset(str1728), 143},
     37439      {-1},
     37440      {uniname2ctype_offset(str1730), 433},
    3172937441      {-1}, {-1}, {-1}, {-1}, {-1},
    31730       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str982,                                   103},
     37442      {uniname2ctype_offset(str1736), 5},
     37443      {uniname2ctype_offset(str1737), 143},
     37444      {-1}, {-1}, {-1},
     37445      {uniname2ctype_offset(str1741), 358},
    3173137446      {-1},
    31732       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str984,                               424},
    31733       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str985,                       436},
    31734       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str986,                            248},
     37447      {uniname2ctype_offset(str1743), 254},
     37448      {-1}, {-1},
     37449      {uniname2ctype_offset(str1746), 341},
     37450      {-1},
     37451      {uniname2ctype_offset(str1748), 376},
     37452      {-1}, {-1}, {-1},
     37453      {uniname2ctype_offset(str1752), 569},
     37454      {-1},
     37455      {uniname2ctype_offset(str1754), 87},
     37456      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37457      {uniname2ctype_offset(str1762), 174},
     37458      {-1}, {-1}, {-1},
     37459      {uniname2ctype_offset(str1766), 87},
     37460      {uniname2ctype_offset(str1767), 232},
     37461      {-1}, {-1}, {-1}, {-1},
     37462      {uniname2ctype_offset(str1772), 344},
     37463      {-1},
     37464      {uniname2ctype_offset(str1774), 131},
     37465      {-1}, {-1}, {-1}, {-1}, {-1},
     37466      {uniname2ctype_offset(str1780), 227},
     37467      {-1}, {-1},
     37468      {uniname2ctype_offset(str1783), 174},
     37469      {-1},
     37470      {uniname2ctype_offset(str1785), 515},
     37471      {-1}, {-1}, {-1},
     37472      {uniname2ctype_offset(str1789), 416},
     37473      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37474      {-1},
     37475      {uniname2ctype_offset(str1800), 293},
     37476      {-1},
     37477      {uniname2ctype_offset(str1802), 219},
     37478      {-1}, {-1}, {-1},
     37479      {uniname2ctype_offset(str1806), 378},
     37480      {-1},
     37481      {uniname2ctype_offset(str1808), 55},
     37482      {-1}, {-1}, {-1}, {-1},
     37483      {uniname2ctype_offset(str1813), 139},
     37484      {uniname2ctype_offset(str1814), 29},
     37485      {uniname2ctype_offset(str1815), 407},
     37486      {-1}, {-1},
     37487      {uniname2ctype_offset(str1818), 531},
     37488      {uniname2ctype_offset(str1819), 298},
     37489      {-1},
     37490      {uniname2ctype_offset(str1821), 413},
     37491      {-1}, {-1}, {-1},
     37492      {uniname2ctype_offset(str1825), 196},
     37493      {-1}, {-1}, {-1},
     37494      {uniname2ctype_offset(str1829), 365},
     37495      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37496      {-1},
     37497      {uniname2ctype_offset(str1840), 177},
     37498      {-1}, {-1},
     37499      {uniname2ctype_offset(str1843), 237},
     37500      {-1}, {-1},
     37501      {uniname2ctype_offset(str1846), 423},
     37502      {uniname2ctype_offset(str1847), 190},
     37503      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37504      {uniname2ctype_offset(str1857), 400},
     37505      {uniname2ctype_offset(str1858), 566},
     37506      {-1}, {-1},
     37507      {uniname2ctype_offset(str1861), 483},
     37508      {-1}, {-1}, {-1}, {-1},
     37509      {uniname2ctype_offset(str1866), 247},
     37510      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37511      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37512      {uniname2ctype_offset(str1885), 363},
    3173537513      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    31736       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str995,                                   19},
    31737       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str996,                           321},
     37514      {uniname2ctype_offset(str1894), 150},
     37515      {-1}, {-1}, {-1}, {-1}, {-1},
     37516      {uniname2ctype_offset(str1900), 150},
     37517      {-1}, {-1},
     37518      {uniname2ctype_offset(str1903), 568},
     37519      {-1}, {-1}, {-1}, {-1}, {-1},
     37520      {uniname2ctype_offset(str1909), 319},
     37521      {uniname2ctype_offset(str1910), 390},
     37522      {-1}, {-1}, {-1},
     37523      {uniname2ctype_offset(str1914), 559},
     37524      {uniname2ctype_offset(str1915), 359},
     37525      {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37526      {uniname2ctype_offset(str1922), 84},
    3173837527      {-1},
    31739       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str998,                              419},
    31740       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str999,                                51},
    31741       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1000,                       217},
     37528      {uniname2ctype_offset(str1924), 442},
     37529      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37530      {uniname2ctype_offset(str1932), 84},
     37531      {uniname2ctype_offset(str1933), 232},
     37532      {uniname2ctype_offset(str1934), 495},
     37533      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37534      {uniname2ctype_offset(str1943), 26},
     37535      {uniname2ctype_offset(str1944), 12},
     37536      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37537      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37538      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    3174237539      {-1}, {-1}, {-1},
    31743       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1004,                                118},
     37540      {uniname2ctype_offset(str1975), 61},
     37541      {uniname2ctype_offset(str1976), 412},
     37542      {-1}, {-1},
     37543      {uniname2ctype_offset(str1979), 239},
     37544      {-1},
     37545      {uniname2ctype_offset(str1981), 94},
     37546      {-1},
     37547      {uniname2ctype_offset(str1983), 83},
     37548      {-1},
     37549      {uniname2ctype_offset(str1985), 348},
     37550      {-1}, {-1}, {-1},
     37551      {uniname2ctype_offset(str1989), 543},
     37552      {-1},
     37553      {uniname2ctype_offset(str1991), 83},
     37554      {-1}, {-1}, {-1},
     37555      {uniname2ctype_offset(str1995), 556},
     37556      {-1},
     37557      {uniname2ctype_offset(str1997), 134},
     37558      {uniname2ctype_offset(str1998), 21},
     37559      {uniname2ctype_offset(str1999), 380},
     37560      {-1}, {-1}, {-1},
     37561      {uniname2ctype_offset(str2003), 516},
     37562      {-1},
     37563      {uniname2ctype_offset(str2005), 64},
     37564      {-1},
     37565      {uniname2ctype_offset(str2007), 198},
     37566      {uniname2ctype_offset(str2008), 185},
     37567      {-1}, {-1}, {-1}, {-1},
     37568      {uniname2ctype_offset(str2013), 450},
     37569      {-1},
     37570      {uniname2ctype_offset(str2015), 198},
     37571      {-1},
     37572      {uniname2ctype_offset(str2017), 165},
     37573      {-1}, {-1},
     37574      {uniname2ctype_offset(str2020), 185},
     37575      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37576      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37577      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37578      {uniname2ctype_offset(str2047), 240},
     37579      {-1},
     37580      {uniname2ctype_offset(str2049), 421},
     37581      {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37582      {uniname2ctype_offset(str2056), 391},
     37583      {-1}, {-1},
     37584      {uniname2ctype_offset(str2059), 152},
     37585      {-1},
     37586      {uniname2ctype_offset(str2061), 17},
     37587      {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37588      {uniname2ctype_offset(str2068), 191},
     37589      {-1}, {-1}, {-1},
     37590      {uniname2ctype_offset(str2072), 415},
     37591      {uniname2ctype_offset(str2073), 183},
     37592      {-1}, {-1},
     37593      {uniname2ctype_offset(str2076), 118},
     37594      {-1}, {-1},
     37595      {uniname2ctype_offset(str2079), 191},
     37596      {-1}, {-1}, {-1}, {-1},
     37597      {uniname2ctype_offset(str2084), 444},
     37598      {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37599      {uniname2ctype_offset(str2091), 175},
     37600      {-1}, {-1}, {-1},
     37601      {uniname2ctype_offset(str2095), 560},
     37602      {uniname2ctype_offset(str2096), 194},
     37603      {uniname2ctype_offset(str2097), 78},
     37604      {-1}, {-1}, {-1},
     37605      {uniname2ctype_offset(str2101), 43},
     37606      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37607      {-1},
     37608      {uniname2ctype_offset(str2112), 172},
     37609      {-1},
     37610      {uniname2ctype_offset(str2114), 306},
     37611      {-1}, {-1},
     37612      {uniname2ctype_offset(str2117), 195},
     37613      {-1},
     37614      {uniname2ctype_offset(str2119), 491},
     37615      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37616      {-1}, {-1}, {-1}, {-1}, {-1},
     37617      {uniname2ctype_offset(str2134), 92},
     37618      {-1}, {-1}, {-1}, {-1},
     37619      {uniname2ctype_offset(str2139), 562},
     37620      {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37621      {uniname2ctype_offset(str2146), 192},
     37622      {-1},
     37623      {uniname2ctype_offset(str2148), 384},
     37624      {uniname2ctype_offset(str2149), 92},
     37625      {-1}, {-1}, {-1}, {-1},
     37626      {uniname2ctype_offset(str2154), 214},
     37627      {-1}, {-1}, {-1},
     37628      {uniname2ctype_offset(str2158), 224},
     37629      {-1}, {-1},
     37630      {uniname2ctype_offset(str2161), 139},
     37631      {-1}, {-1}, {-1},
     37632      {uniname2ctype_offset(str2165), 287},
     37633      {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37634      {uniname2ctype_offset(str2172), 291},
     37635      {-1},
     37636      {uniname2ctype_offset(str2174), 328},
     37637      {-1},
     37638      {uniname2ctype_offset(str2176), 128},
     37639      {-1}, {-1},
     37640      {uniname2ctype_offset(str2179), 281},
     37641      {-1}, {-1},
     37642      {uniname2ctype_offset(str2182), 426},
     37643      {-1}, {-1}, {-1}, {-1},
     37644      {uniname2ctype_offset(str2187), 48},
     37645      {-1},
     37646      {uniname2ctype_offset(str2189), 89},
     37647      {-1}, {-1},
     37648      {uniname2ctype_offset(str2192), 276},
     37649      {uniname2ctype_offset(str2193), 130},
     37650      {-1}, {-1},
     37651      {uniname2ctype_offset(str2196), 128},
     37652      {uniname2ctype_offset(str2197), 90},
     37653      {uniname2ctype_offset(str2198), 389},
     37654      {uniname2ctype_offset(str2199), 288},
    3174437655      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    31745       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1012,                                    177},
    31746       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1013,                                    144},
    31747       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1014,                                    190},
     37656      {uniname2ctype_offset(str2207), 280},
    3174837657      {-1}, {-1},
    31749       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1017,                    475},
     37658      {uniname2ctype_offset(str2210), 342},
     37659      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37660      {-1}, {-1}, {-1}, {-1},
     37661      {uniname2ctype_offset(str2224), 406},
     37662      {uniname2ctype_offset(str2225), 211},
     37663      {-1}, {-1}, {-1},
     37664      {uniname2ctype_offset(str2229), 369},
     37665      {-1}, {-1},
     37666      {uniname2ctype_offset(str2232), 209},
     37667      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37668      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37669      {uniname2ctype_offset(str2249), 130},
     37670      {-1}, {-1},
     37671      {uniname2ctype_offset(str2252), 80},
     37672      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37673      {uniname2ctype_offset(str2260), 337},
     37674      {-1}, {-1},
     37675      {uniname2ctype_offset(str2263), 544},
     37676      {uniname2ctype_offset(str2264), 82},
     37677      {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37678      {uniname2ctype_offset(str2271), 239},
     37679      {-1}, {-1}, {-1}, {-1},
     37680      {uniname2ctype_offset(str2276), 527},
     37681      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37682      {uniname2ctype_offset(str2286), 243},
     37683      {-1}, {-1},
     37684      {uniname2ctype_offset(str2289), 366},
     37685      {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37686      {uniname2ctype_offset(str2296), 229},
     37687      {-1}, {-1}, {-1},
     37688      {uniname2ctype_offset(str2300), 18},
     37689      {-1}, {-1}, {-1}, {-1}, {-1},
     37690      {uniname2ctype_offset(str2306), 510},
     37691      {uniname2ctype_offset(str2307), 38},
     37692      {-1}, {-1}, {-1},
     37693      {uniname2ctype_offset(str2311), 427},
    3175037694      {-1},
    31751       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1019,                             201},
     37695      {uniname2ctype_offset(str2313), 112},
     37696      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37697      {-1}, {-1}, {-1}, {-1},
     37698      {uniname2ctype_offset(str2327), 213},
     37699      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37700      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    3175237701      {-1}, {-1}, {-1},
    31753       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1023,                            225},
     37702      {uniname2ctype_offset(str2349), 451},
     37703      {uniname2ctype_offset(str2350), 441},
     37704      {-1}, {-1},
     37705      {uniname2ctype_offset(str2353), 448},
     37706      {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37707      {uniname2ctype_offset(str2360), 314},
    3175437708      {-1}, {-1}, {-1},
    31755       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1027,               472},
     37709      {uniname2ctype_offset(str2364), 65},
     37710      {-1}, {-1}, {-1}, {-1},
     37711      {uniname2ctype_offset(str2369), 346},
     37712      {-1}, {-1},
     37713      {uniname2ctype_offset(str2372), 82},
     37714      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37715      {uniname2ctype_offset(str2380), 100},
     37716      {-1}, {-1}, {-1}, {-1}, {-1},
     37717      {uniname2ctype_offset(str2386), 226},
     37718      {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37719      {uniname2ctype_offset(str2393), 251},
     37720      {-1}, {-1}, {-1}, {-1}, {-1},
     37721      {uniname2ctype_offset(str2399), 548},
     37722      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37723      {uniname2ctype_offset(str2408), 211},
     37724      {uniname2ctype_offset(str2409), 118},
     37725      {-1}, {-1},
     37726      {uniname2ctype_offset(str2412), 284},
     37727      {uniname2ctype_offset(str2413), 229},
     37728      {uniname2ctype_offset(str2414), 286},
     37729      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37730      {uniname2ctype_offset(str2422), 119},
     37731      {uniname2ctype_offset(str2423), 99},
     37732      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37733      {uniname2ctype_offset(str2433), 364},
     37734      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37735      {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37736      {uniname2ctype_offset(str2449), 316},
     37737      {-1},
     37738      {uniname2ctype_offset(str2451), 54},
     37739      {uniname2ctype_offset(str2452), 96},
     37740      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37741      {uniname2ctype_offset(str2461), 96},
    3175637742      {-1}, {-1}, {-1},
    31757       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1031,                                  496},
     37743      {uniname2ctype_offset(str2465), 103},
    3175837744      {-1},
    31759       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1033,                               190},
    31760       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1034,             317},
     37745      {uniname2ctype_offset(str2467), 62},
    3176137746      {-1},
    31762       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1036,                               280},
     37747      {uniname2ctype_offset(str2469), 226},
     37748      {-1}, {-1}, {-1},
     37749      {uniname2ctype_offset(str2473), 107},
     37750      {-1},
     37751      {uniname2ctype_offset(str2475), 23},
     37752      {-1}, {-1}, {-1}, {-1}, {-1},
     37753      {uniname2ctype_offset(str2481), 525},
     37754      {-1},
     37755      {uniname2ctype_offset(str2483), 425},
     37756      {uniname2ctype_offset(str2484), 532},
     37757      {-1}, {-1}, {-1},
     37758      {uniname2ctype_offset(str2488), 182},
     37759      {uniname2ctype_offset(str2489), 279},
     37760      {uniname2ctype_offset(str2490), 275},
    3176337761      {-1}, {-1},
    31764       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1039,                            376},
    31765       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1040,                              50},
    31766       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1041,                                     212},
     37762      {uniname2ctype_offset(str2493), 178},
     37763      {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37764      {uniname2ctype_offset(str2500), 464},
     37765      {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37766      {uniname2ctype_offset(str2507), 57},
     37767      {-1},
     37768      {uniname2ctype_offset(str2509), 50},
     37769      {-1}, {-1}, {-1}, {-1}, {-1},
     37770      {uniname2ctype_offset(str2515), 231},
     37771      {-1}, {-1}, {-1},
     37772      {uniname2ctype_offset(str2519), 204},
     37773      {-1}, {-1}, {-1},
     37774      {uniname2ctype_offset(str2523), 153},
     37775      {-1}, {-1},
     37776      {uniname2ctype_offset(str2526), 393},
     37777      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37778      {-1}, {-1}, {-1},
     37779      {uniname2ctype_offset(str2539), 41},
     37780      {-1}, {-1}, {-1}, {-1}, {-1},
     37781      {uniname2ctype_offset(str2545), 551},
    3176737782      {-1}, {-1}, {-1}, {-1},
    31768       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1046,              398},
     37783      {uniname2ctype_offset(str2550), 456},
     37784      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37785      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37786      {-1}, {-1}, {-1}, {-1},
     37787      {uniname2ctype_offset(str2573), 210},
     37788      {-1}, {-1},
     37789      {uniname2ctype_offset(str2576), 4},
     37790      {-1}, {-1},
     37791      {uniname2ctype_offset(str2579), 179},
     37792      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37793      {uniname2ctype_offset(str2587), 454},
    3176937794      {-1},
    31770       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1048,     337},
    31771       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1049,                          213},
     37795      {uniname2ctype_offset(str2589), 126},
     37796      {-1}, {-1}, {-1}, {-1},
     37797      {uniname2ctype_offset(str2594), 216},
     37798      {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37799      {uniname2ctype_offset(str2601), 216},
     37800      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37801      {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37802      {uniname2ctype_offset(str2617), 63},
     37803      {uniname2ctype_offset(str2618), 213},
     37804      {-1}, {-1}, {-1},
     37805      {uniname2ctype_offset(str2622), 338},
     37806      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37807      {uniname2ctype_offset(str2630), 133},
     37808      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37809      {-1}, {-1}, {-1},
     37810      {uniname2ctype_offset(str2643), 282},
     37811      {-1}, {-1}, {-1}, {-1}, {-1},
     37812      {uniname2ctype_offset(str2649), 278},
     37813      {-1}, {-1}, {-1},
     37814      {uniname2ctype_offset(str2653), 165},
     37815      {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37816      {uniname2ctype_offset(str2660), 66},
     37817      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37818      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37819      {uniname2ctype_offset(str2678), 147},
     37820      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37821      {-1}, {-1}, {-1}, {-1}, {-1},
     37822      {uniname2ctype_offset(str2693), 78},
     37823      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37824      {uniname2ctype_offset(str2702), 99},
    3177237825      {-1}, {-1},
    31773       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1052,                              137},
     37826      {uniname2ctype_offset(str2705), 49},
    3177437827      {-1}, {-1},
    31775       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1055,                                     6},
     37828      {uniname2ctype_offset(str2708), 558},
     37829      {-1},
     37830      {uniname2ctype_offset(str2710), 570},
     37831      {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37832      {uniname2ctype_offset(str2717), 88},
     37833      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37834      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37835      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37836      {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37837      {uniname2ctype_offset(str2751), 549},
     37838      {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37839      {uniname2ctype_offset(str2758), 64},
    3177637840      {-1}, {-1}, {-1}, {-1},
    31777       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1060,                                    121},
     37841      {uniname2ctype_offset(str2763), 132},
     37842      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37843      {-1}, {-1},
     37844      {uniname2ctype_offset(str2775), 230},
    3177837845      {-1}, {-1}, {-1},
    31779       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1064,                                       44},
    31780       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1065,                      382},
    31781       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1066,                                    119},
     37846      {uniname2ctype_offset(str2779), 386},
     37847      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37848      {-1}, {-1},
     37849      {uniname2ctype_offset(str2791), 242},
     37850      {uniname2ctype_offset(str2792), 123},
     37851      {-1}, {-1}, {-1}, {-1},
     37852      {uniname2ctype_offset(str2797), 28},
     37853      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37854      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37855      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37856      {uniname2ctype_offset(str2823), 437},
     37857      {-1}, {-1}, {-1}, {-1}, {-1},
     37858      {uniname2ctype_offset(str2829), 180},
     37859      {-1}, {-1}, {-1}, {-1},
     37860      {uniname2ctype_offset(str2834), 335},
     37861      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37862      {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37863      {uniname2ctype_offset(str2850), 231},
     37864      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37865      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37866      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    3178237867      {-1},
    31783       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1068,                       335},
    31784       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1069,                                     95},
    31785       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1070,                               136},
     37868      {uniname2ctype_offset(str2879), 223},
     37869      {-1}, {-1}, {-1},
     37870      {uniname2ctype_offset(str2883), 199},
     37871      {-1}, {-1}, {-1}, {-1},
     37872      {uniname2ctype_offset(str2888), 133},
    3178637873      {-1},
    31787       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1072,                                    135},
    31788       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1073,                              133},
     37874      {uniname2ctype_offset(str2890), 124},
     37875      {uniname2ctype_offset(str2891), 528},
     37876      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37877      {uniname2ctype_offset(str2901), 452},
    3178937878      {-1}, {-1}, {-1},
    31790       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1077,                               193},
     37879      {uniname2ctype_offset(str2905), 295},
     37880      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37881      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    3179137882      {-1}, {-1},
    31792       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1080,                                       42},
     37883      {uniname2ctype_offset(str2926), 125},
    3179337884      {-1}, {-1}, {-1},
    31794       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1084,                                     12},
     37885      {uniname2ctype_offset(str2930), 277},
    3179537886      {-1},
    31796       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1086,                                  95},
     37887      {uniname2ctype_offset(str2932), 51},
     37888      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37889      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    3179737890      {-1}, {-1},
    31798       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1089,                    257},
     37891      {uniname2ctype_offset(str2953), 71},
     37892      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37893      {-1}, {-1}, {-1}, {-1},
     37894      {uniname2ctype_offset(str2967), 475},
     37895      {uniname2ctype_offset(str2968), 197},
    3179937896      {-1}, {-1}, {-1},
    31800       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1093,                                    179},
    31801       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1094,     338},
    31802       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1095,                              304},
     37897      {uniname2ctype_offset(str2972), 146},
     37898      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37899      {-1}, {-1},
     37900      {uniname2ctype_offset(str2984), 204},
     37901      {-1}, {-1},
     37902      {uniname2ctype_offset(str2987), 255},
     37903      {-1},
     37904      {uniname2ctype_offset(str2989), 409},
     37905      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37906      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37907      {uniname2ctype_offset(str3007), 180},
     37908      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37909      {uniname2ctype_offset(str3016), 403},
     37910      {-1}, {-1},
     37911      {uniname2ctype_offset(str3019), 62},
     37912      {uniname2ctype_offset(str3020), 45},
     37913      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37914      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37915      {uniname2ctype_offset(str3038), 10},
     37916      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37917      {-1}, {-1}, {-1}, {-1},
     37918      {uniname2ctype_offset(str3052), 382},
     37919      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37920      {-1}, {-1}, {-1}, {-1},
     37921      {uniname2ctype_offset(str3066), 190},
     37922      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37923      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37924      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37925      {uniname2ctype_offset(str3094), 63},
     37926      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37927      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37928      {uniname2ctype_offset(str3113), 59},
     37929      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37930      {uniname2ctype_offset(str3121), 123},
     37931      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37932      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37933      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37934      {-1}, {-1}, {-1}, {-1},
     37935      {uniname2ctype_offset(str3153), 238},
     37936      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37937      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    3180337938      {-1}, {-1}, {-1}, {-1}, {-1},
    31804       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1101,                                  84},
     37939      {uniname2ctype_offset(str3177), 223},
    3180537940      {-1}, {-1},
    31806       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1104,                            60},
     37941      {uniname2ctype_offset(str3180), 132},
     37942      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37943      {-1}, {-1}, {-1},
     37944      {uniname2ctype_offset(str3193), 47},
     37945      {-1},
     37946      {uniname2ctype_offset(str3195), 224},
     37947      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37948      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37949      {uniname2ctype_offset(str3213), 16},
     37950      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37951      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37952      {-1}, {-1}, {-1},
     37953      {uniname2ctype_offset(str3235), 438},
    3180737954      {-1}, {-1},
    31808       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1107,                   476},
     37955      {uniname2ctype_offset(str3238), 100},
     37956      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37957      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37958      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37959      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37960      {-1},
     37961      {uniname2ctype_offset(str3276), 177},
     37962      {-1}, {-1},
     37963      {uniname2ctype_offset(str3279), 283},
     37964      {uniname2ctype_offset(str3280), 285},
     37965      {-1}, {-1}, {-1}, {-1},
     37966      {uniname2ctype_offset(str3285), 214},
     37967      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37968      {-1},
     37969      {uniname2ctype_offset(str3296), 289},
     37970      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37971      {uniname2ctype_offset(str3305), 290},
     37972      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37973      {uniname2ctype_offset(str3315), 205},
     37974      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37975      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37976      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37977      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37978      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    3180937979      {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    31810       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1114,                                    17},
     37980      {uniname2ctype_offset(str3367), 65},
     37981      {-1}, {-1}, {-1}, {-1}, {-1},
     37982      {uniname2ctype_offset(str3373), 103},
     37983      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37984      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37985      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37986      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37987      {uniname2ctype_offset(str3409), 30},
     37988      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37989      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37990      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     37991      {-1},
     37992      {uniname2ctype_offset(str3438), 303},
    3181137993      {-1}, {-1}, {-1},
    31812       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1118,                                 197},
     37994      {uniname2ctype_offset(str3442), 440},
     37995      {-1}, {-1}, {-1}, {-1}, {-1},
     37996      {uniname2ctype_offset(str3448), 46},
     37997      {-1}, {-1}, {-1}, {-1},
     37998      {uniname2ctype_offset(str3453), 233},
     37999      {uniname2ctype_offset(str3454), 220},
     38000      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38001      {-1},
     38002      {uniname2ctype_offset(str3465), 119},
     38003      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38004      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38005      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38006      {-1}, {-1}, {-1},
     38007      {uniname2ctype_offset(str3496), 411},
     38008      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38009      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38010      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38011      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38012      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38013      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38014      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38015      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38016      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38017      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38018      {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38019      {uniname2ctype_offset(str3593), 162},
     38020      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38021      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38022      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38023      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38024      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38025      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38026      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38027      {-1}, {-1}, {-1}, {-1}, {-1},
     38028      {uniname2ctype_offset(str3662), 179},
     38029      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38030      {-1}, {-1}, {-1}, {-1},
     38031      {uniname2ctype_offset(str3676), 201},
     38032      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38033      {-1}, {-1}, {-1},
     38034      {uniname2ctype_offset(str3689), 545},
     38035      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38036      {uniname2ctype_offset(str3697), 561},
     38037      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38038      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38039      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38040      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38041      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38042      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38043      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    3181338044      {-1}, {-1},
    31814       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1121,                              37},
    31815       {-1},
    31816       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1123,                                135},
    31817       {-1}, {-1}, {-1}, {-1}, {-1},
    31818       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1129,                                 179},
    31819       {-1}, {-1}, {-1}, {-1},
    31820       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1134,    287},
    31821       {-1},
    31822       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1136,                          25},
    31823       {-1}, {-1}, {-1},
    31824       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1140,                                 99},
    31825       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1141,                                    180},
    31826       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    31827       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1149,                              270},
    31828       {-1},
    31829       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1151,                                    140},
    31830       {-1},
    31831       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1153,                    285},
    31832       {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    31833       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1160,                            420},
    31834       {-1}, {-1},
    31835       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1163,                             418},
    31836       {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    31837       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1170,                               206},
    31838       {-1}, {-1}, {-1},
    31839       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1174,                               20},
    31840       {-1}, {-1}, {-1}, {-1}, {-1},
    31841       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1180,                                    181},
    31842       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1181,                                    189},
    31843       {-1}, {-1},
    31844       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1184,                                    126},
    31845       {-1},
    31846       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1186,                                     98},
    31847       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1187,                           447},
    31848       {-1}, {-1}, {-1}, {-1}, {-1},
    31849       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1193,                                     80},
    31850       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1194,                                    172},
    31851       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1195,                              271},
    31852       {-1},
    31853       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1197,                                  167},
    31854       {-1}, {-1}, {-1},
    31855       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1201,                                    103},
    31856       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1202,                                    208},
    31857       {-1}, {-1}, {-1},
    31858       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1206,                                    105},
    31859       {-1}, {-1}, {-1}, {-1},
    31860       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1211,                                    192},
    31861       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1212,                                    161},
    31862       {-1}, {-1}, {-1}, {-1}, {-1},
    31863       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1218,                                    102},
    31864       {-1}, {-1},
    31865       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1221,                                  213},
    31866       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1222,                                       40},
    31867       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    31868       {-1}, {-1}, {-1},
    31869       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1235,                                   34},
    31870       {-1}, {-1},
    31871       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1238,                                445},
    31872       {-1},
    31873       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1240,                              27},
    31874       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    31875       {-1}, {-1},
    31876       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1252,                                417},
    31877       {-1},
    31878       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1254,                                 138},
    31879       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    31880       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1262,                     320},
    31881       {-1}, {-1},
    31882       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1265,                                      110},
    31883       {-1}, {-1}, {-1},
    31884       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1269,                                   98},
    31885       {-1},
    31886       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1271,                                    110},
    31887       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1272,                                    131},
    31888       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1273,                   491},
    31889       {-1}, {-1}, {-1},
    31890       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1277,                        255},
    31891       {-1},
    31892       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1279,                                     69},
    31893       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1280,                   334},
    31894       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1281,                                  112},
    31895       {-1},
    31896       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1283,                                    71},
    31897       {-1},
    31898       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1285,                    401},
    31899       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1286,                              222},
    31900       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1287,                              466},
    31901       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    31902       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    31903       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1305,                                     68},
    31904       {-1}, {-1},
    31905       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1308,                                 121},
    31906       {-1}, {-1}, {-1},
    31907       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1312,                       330},
    31908       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1313,                                    194},
    31909       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1314,                              198},
    31910       {-1}, {-1},
    31911       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1317,                         329},
    31912       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1318,                           26},
    31913       {-1}, {-1},
    31914       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1321,                              332},
    31915       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1322,                                     222},
    31916       {-1},
    31917       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1324,                                     8},
    31918       {-1}, {-1},
    31919       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1327,                               291},
    31920       {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    31921       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1334,                                   200},
    31922       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    31923       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1344,                         315},
    31924       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    31925       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1353,                                    217},
    31926       {-1}, {-1}, {-1}, {-1}, {-1},
    31927       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1359,                                 16},
    31928       {-1}, {-1}, {-1}, {-1},
    31929       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1364,                         44},
    31930       {-1}, {-1}, {-1},
    31931       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1368,                       390},
    31932       {-1}, {-1}, {-1}, {-1},
    31933       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1373,   479},
    31934       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    31935       {-1}, {-1},
    31936       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1385,                    487},
    31937       {-1},
    31938       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1387,                               375},
    31939       {-1},
    31940       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1389,                                    147},
    31941       {-1}, {-1}, {-1},
    31942       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1393,                                     91},
    31943       {-1}, {-1}, {-1}, {-1}, {-1},
    31944       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1399,                       267},
    31945       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1400,                                    146},
    31946       {-1},
    31947       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1402,                                  147},
    31948       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1403,                     489},
    31949       {-1}, {-1}, {-1}, {-1}, {-1},
    31950       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1409,                                   11},
    31951       {-1}, {-1},
    31952       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1412,                                     4},
    31953       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    31954       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1420,                                 68},
    31955       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1421,                                379},
    31956       {-1}, {-1},
    31957       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1424,                                91},
    31958       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1425,                      218},
    31959       {-1}, {-1}, {-1},
    31960       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1429,                                   368},
    31961       {-1}, {-1}, {-1}, {-1}, {-1},
    31962       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1435,                                     143},
    31963       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1436,                                    143},
    31964       {-1},
    31965       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1438,                                106},
    31966       {-1}, {-1}, {-1},
    31967       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1442,                              282},
    31968       {-1}, {-1}, {-1}, {-1}, {-1},
    31969       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1448,                                 126},
    31970       {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    31971       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1455,                                     97},
    31972       {-1},
    31973       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1457,                                    167},
    31974       {-1}, {-1}, {-1}, {-1}, {-1},
    31975       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1463,                              130},
    31976       {-1},
    31977       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1465,                               275},
    31978       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1466,                                    169},
    31979       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1467,                                    107},
    31980       {-1},
    31981       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1469,                                     79},
    31982       {-1},
    31983       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1471,                               422},
    31984       {-1}, {-1}, {-1}, {-1}, {-1},
    31985       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1477,                                      228},
    31986       {-1}, {-1}, {-1},
    31987       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1481,                                448},
    31988       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    31989       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1490,                                   102},
    31990       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1491,                             132},
    31991       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1492, 296},
    31992       {-1}, {-1},
    31993       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1495,                   433},
    31994       {-1}, {-1},
    31995       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1498,                                 180},
    31996       {-1},
    31997       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1500,                             72},
    31998       {-1},
    31999       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1502,                               49},
    32000       {-1}, {-1},
    32001       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1505,                                     96},
    32002       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32003       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1513,          498},
    32004       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1514,                            186},
    32005       {-1},
    32006       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1516,                 402},
    32007       {-1},
    32008       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1518,            405},
    32009       {-1}, {-1},
    32010       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1521,            396},
    32011       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1522,                                446},
    32012       {-1}, {-1},
    32013       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1525,                                    153},
    32014       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1526,                      262},
    32015       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1527,                                   175},
    32016       {-1},
    32017       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1529,                                     81},
    32018       {-1}, {-1}, {-1},
    32019       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1533,                             159},
    32020       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1534,                                  96},
    32021       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1535,                                 153},
    32022       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1536,                   380},
    32023       {-1}, {-1}, {-1},
    32024       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1540,                                    112},
    32025       {-1},
    32026       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1542,                              353},
    32027       {-1},
    32028       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1544,                     346},
    32029       {-1}, {-1}, {-1}, {-1},
    32030       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1549,                               56},
    32031       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1550,                                   81},
    32032       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1551,                             210},
    32033       {-1}, {-1}, {-1},
    32034       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1555,                            358},
    32035       {-1},
    32036       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1557,                      407},
    32037       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1558,                                    152},
    32038       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1559,                               385},
    32039       {-1}, {-1}, {-1}, {-1},
    32040       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1564,  495},
    32041       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32042       {-1}, {-1},
    32043       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1576,                           389},
    32044       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1577,                                    145},
    32045       {-1}, {-1}, {-1},
    32046       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1581,                            366},
    32047       {-1}, {-1}, {-1}, {-1},
    32048       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1586,                                       29},
    32049       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1587,                                 272},
    32050       {-1}, {-1},
    32051       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1590,                                   79},
    32052       {-1}, {-1}, {-1}, {-1}, {-1},
    32053       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1596,                                212},
    32054       {-1},
    32055       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1598,              393},
    32056       {-1},
    32057       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1600,                                   119},
    32058       {-1}, {-1}, {-1}, {-1}, {-1},
    32059       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1606,                                 292},
    32060       {-1},
    32061       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1608,                     387},
    32062       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1609,                              69},
    32063       {-1},
    32064       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1611,                 363},
    32065       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1612,                   224},
    32066       {-1}, {-1}, {-1},
    32067       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1616,                                259},
    32068       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1617,                                     77},
    32069       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1618,                                 124},
    32070       {-1}, {-1},
    32071       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1621,                                    137},
    32072       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1622,             254},
    32073       {-1}, {-1}, {-1},
    32074       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1626,                        469},
    32075       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1627,                                  367},
    32076       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1628,                    65},
    32077       {-1}, {-1}, {-1},
    32078       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1632,   319},
    32079       {-1}, {-1}, {-1},
    32080       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1636,                                      62},
    32081       {-1}, {-1}, {-1}, {-1},
    32082       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1641,                                    138},
    32083       {-1}, {-1}, {-1},
    32084       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1645,                     403},
    32085       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32086       {-1},
    32087       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1656,                           467},
    32088       {-1}, {-1}, {-1}, {-1},
    32089       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1661,                          214},
    32090       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1662,                                274},
    32091       {-1}, {-1},
    32092       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1665,   313},
    32093       {-1}, {-1}, {-1}, {-1},
    32094       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1670,               490},
    32095       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1671,                                    133},
    32096       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32097       {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32098       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1687,                                    157},
    32099       {-1},
    32100       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1689,                                 370},
    32101       {-1}, {-1},
    32102       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1692,                                     30},
    32103       {-1},
    32104       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1694,                                    178},
    32105       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1695,                                     5},
    32106       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1696,                          40},
    32107       {-1}, {-1}, {-1},
    32108       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1700,                           230},
    32109       {-1}, {-1}, {-1}, {-1},
    32110       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1705,                    63},
    32111       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1706,                            435},
    32112       {-1}, {-1}, {-1}, {-1}, {-1},
    32113       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1712,                                 294},
    32114       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1713,                                    158},
    32115       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1714,                                    132},
    32116       {-1}, {-1}, {-1}, {-1},
    32117       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1719,                                122},
    32118       {-1}, {-1},
    32119       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1722,          221},
    32120       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1723,                              223},
    32121       {-1}, {-1}, {-1}, {-1}, {-1},
    32122       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1729,                                   220},
    32123       {-1}, {-1},
    32124       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1732,                    311},
    32125       {-1}, {-1}, {-1},
    32126       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1736,                              381},
    32127       {-1}, {-1}, {-1}, {-1}, {-1},
    32128       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1742,                    399},
    32129       {-1},
    32130       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1744,                                  165},
    32131       {-1}, {-1},
    32132       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1747,                                 77},
    32133       {-1},
    32134       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1749,                                 458},
    32135       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1750,                                    175},
    32136       {-1}, {-1}, {-1}, {-1},
    32137       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1755,                                158},
    32138       {-1},
    32139       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1757,                             200},
    32140       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1758,                       176},
    32141       {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32142       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1765,                                    149},
    32143       {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32144       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1772,               347},
    32145       {-1}, {-1},
    32146       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1775,          312},
    32147       {-1}, {-1},
    32148       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1778,                                  149},
    32149       {-1}, {-1}, {-1}, {-1}, {-1},
    32150       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1784,                               164},
    32151       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1785,          497},
    32152       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1786,                                    165},
    32153       {-1}, {-1}, {-1}, {-1}, {-1},
    32154       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1792,                            283},
    32155       {-1}, {-1}, {-1}, {-1},
    32156       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1797,                                  230},
    32157       {-1}, {-1}, {-1}, {-1},
    32158       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1802,                                 297},
    32159       {-1},
    32160       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1804,                             174},
    32161       {-1}, {-1},
    32162       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1807,                                     87},
    32163       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32164       {-1}, {-1}, {-1}, {-1}, {-1},
    32165       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1822,                          300},
    32166       {-1},
    32167       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1824,                            340},
    32168       {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32169       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1831,                            268},
    32170       {-1}, {-1}, {-1},
    32171       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1835,                                     83},
    32172       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1836,                                     90},
    32173       {-1}, {-1}, {-1}, {-1},
    32174       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1841,                               269},
    32175       {-1},
    32176       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1843,                                   46},
    32177       {-1}, {-1},
    32178       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1846,                               83},
    32179       {-1}, {-1},
    32180       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1849,                          478},
    32181       {-1}, {-1},
    32182       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1852,                                     84},
    32183       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1853,                       310},
    32184       {-1}, {-1}, {-1}, {-1}, {-1},
    32185       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1859,                           71},
    32186       {-1}, {-1}, {-1}, {-1}, {-1},
    32187       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1865,                                  90},
    32188       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1866,                              301},
    32189       {-1}, {-1},
    32190       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1869,                                    142},
    32191       {-1},
    32192       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1871,                     171},
    32193       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1872,                                    122},
    32194       {-1},
    32195       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1874,                               290},
    32196       {-1}, {-1}, {-1},
    32197       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1878,                       464},
    32198       {-1},
    32199       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1880,                                 142},
    32200       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32201       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32202       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1899,                       318},
    32203       {-1}, {-1}, {-1}, {-1},
    32204       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1904,                                    118},
    32205       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32206       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1912,                         409},
    32207       {-1}, {-1},
    32208       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1915,                              293},
    32209       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1916,                                58},
    32210       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1917,                70},
    32211       {-1},
    32212       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1919,                                    130},
    32213       {-1},
    32214       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1921,            359},
    32215       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32216       {-1},
    32217       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1932,                    64},
    32218       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32219       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1942,                             460},
    32220       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1943,                        395},
    32221       {-1}, {-1}, {-1},
    32222       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1947,                               192},
    32223       {-1}, {-1}, {-1}, {-1}, {-1},
    32224       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1953,                              31},
    32225       {-1}, {-1},
    32226       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1956,                                    104},
    32227       {-1}, {-1}, {-1}, {-1}, {-1},
    32228       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1962,                                    134},
    32229       {-1},
    32230       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1964,              404},
    32231       {-1}, {-1},
    32232       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1967,                    61},
    32233       {-1}, {-1}, {-1},
    32234       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1971,                                    115},
    32235       {-1}, {-1}, {-1}, {-1},
    32236       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1976,                      345},
    32237       {-1}, {-1}, {-1},
    32238       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1980,     303},
    32239       {-1}, {-1}, {-1}, {-1}, {-1},
    32240       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1986,                                  214},
    32241       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32242       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1994,              351},
    32243       {-1}, {-1},
    32244       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1997,                                    108},
    32245       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1998,                              38},
    32246       {-1}, {-1}, {-1},
    32247       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2002,                            30},
    32248       {-1}, {-1}, {-1}, {-1},
    32249       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2007,                          482},
    32250       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2008,                              354},
    32251       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32252       {-1}, {-1}, {-1},
    32253       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2021,                                  203},
    32254       {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32255       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2028,                                452},
    32256       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32257       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32258       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2046,                                     139},
    32259       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2047,                                    139},
    32260       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2048,                            32},
    32261       {-1}, {-1}, {-1}, {-1},
    32262       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2053,                          45},
    32263       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32264       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2061,                           47},
    32265       {-1},
    32266       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2063,                         400},
    32267       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32268       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2071,                                     207},
    32269       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2072,                           48},
    32270       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2073,                        251},
    32271       {-1},
    32272       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2075,                              134},
    32273       {-1}, {-1}, {-1}, {-1},
    32274       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2080,                                100},
    32275       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32276       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2088,                             181},
    32277       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32278       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2096,                                 125},
    32279       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32280       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2105,                      427},
    32281       {-1}, {-1}, {-1}, {-1},
    32282       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2110,                               191},
    32283       {-1}, {-1},
    32284       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2113,                                    10},
    32285       {-1}, {-1},
    32286       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2116,                                    176},
    32287       {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32288       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2123,                                 97},
    32289       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32290       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2131,                                     86},
    32291       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32292       {-1},
    32293       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2142,                                   72},
    32294       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32295       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2152,                                 86},
    32296       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2153,                                207},
    32297       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32298       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32299       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32300       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32301       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2189,                                   104},
    32302       {-1}, {-1}, {-1}, {-1},
    32303       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2194,                          29},
    32304       {-1}, {-1}, {-1},
    32305       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2198,                   336},
    32306       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32307       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32308       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32309       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2224,                                22},
    32310       {-1}, {-1},
    32311       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2227,                        220},
    32312       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32313       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2237,                           33},
    32314       {-1}, {-1}, {-1},
    32315       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2241,                     216},
    32316       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2242,                    377},
    32317       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32318       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2252,                                    164},
    32319       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32320       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32321       {-1}, {-1},
    32322       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2273,                    343},
    32323       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32324       {-1}, {-1}, {-1}, {-1},
    32325       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2287,                         189},
    32326       {-1}, {-1},
    32327       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2290,                                 115},
    32328       {-1},
    32329       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2292,                                    182},
    32330       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32331       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32332       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2311,                                108},
    32333       {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32334       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2318,                                  146},
    32335       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32336       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2326,                                    117},
    32337       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32338       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32339       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2343,                 348},
    32340       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32341       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32342       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32343       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32344       {-1}, {-1},
    32345       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2382,                                356},
    32346       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32347       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32348       {-1}, {-1}, {-1}, {-1}, {-1},
    32349       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2406,                       228},
    32350       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32351       {-1},
    32352       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2417,                        349},
    32353       {-1}, {-1}, {-1},
    32354       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2421,                        392},
    32355       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32356       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2431,          499},
    32357       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32358       {-1}, {-1}, {-1}, {-1},
    32359       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2445,                                  216},
    32360       {-1}, {-1}, {-1},
    32361       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2449,                                    166},
    32362       {-1}, {-1}, {-1}, {-1},
    32363       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2454,                   391},
    32364       {-1}, {-1},
    32365       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2457,                                 306},
    32366       {-1}, {-1}, {-1}, {-1},
    32367       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2462,                     369},
    32368       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32369       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32370       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32371       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32372       {-1}, {-1}, {-1},
    32373       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2502,                               500},
    32374       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32375       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32376       {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32377       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2527,                                      15},
    32378       {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32379       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2534,                                    136},
    32380       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32381       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32382       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32383       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2562,                                    127},
    32384       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32385       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2570,                             453},
    32386       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2571,                                   89},
    32387       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32388       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2579,                    62},
    32389       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32390       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2588,                                     76},
    32391       {-1}, {-1},
    32392       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2591,                                     85},
    32393       {-1}, {-1}, {-1},
    32394       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2595,                       53},
    32395       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32396       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32397       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2613,                                127},
    32398       {-1}, {-1}, {-1},
    32399       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2617,                           365},
    32400       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32401       {-1}, {-1}, {-1}, {-1},
    32402       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2631,                                    154},
    32403       {-1}, {-1},
    32404       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2634,                               196},
    32405       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32406       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2643,                                 231},
    32407       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32408       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32409       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32410       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32411       {-1}, {-1}, {-1}, {-1}, {-1},
    32412       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2685,                                177},
    32413       {-1}, {-1}, {-1},
    32414       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2689,                   463},
    32415       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32416       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32417       {-1},
    32418       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2709,                                   117},
    32419       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32420       {-1}, {-1}, {-1},
    32421       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2722,                               378},
    32422       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32423       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2732,                       434},
    32424       {-1},
    32425       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2734,                      361},
    32426       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32427       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32428       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32429       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32430       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32431       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32432       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2787,                         161},
    32433       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32434       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2795,                           204},
    32435       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32436       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32437       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32438       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32439       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32440       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32441       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32442       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32443       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32444       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32445       {-1}, {-1}, {-1},
    32446       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2889,               355},
    32447       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32448       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2898,                                   204},
    32449       {-1}, {-1}, {-1},
    32450       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2902,        493},
    32451       {-1}, {-1}, {-1},
    32452       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2906,                                       48},
    32453       {-1}, {-1},
    32454       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2909,        362},
    32455       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32456       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2918,                  364},
    32457       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32458       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32459       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32460       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32461       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32462       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32463       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32464       {-1}, {-1},
    32465       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2984,                                107},
    32466       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32467       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32468       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32469       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32470       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32471       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32472       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32473       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32474       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32475       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32476       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32477       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32478       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32479       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32480       {-1},
    32481       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str3112,                                 145},
    32482       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32483       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32484       {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32485       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str3137,                                178},
    32486       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32487       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32488       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32489       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32490       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32491       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32492       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32493       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32494       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32495       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32496       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32497       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32498       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32499       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32500       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32501       {-1}, {-1}, {-1}, {-1}, {-1},
    32502       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str3278,        494},
    32503       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32504       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32505       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32506       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32507       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32508       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32509       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32510       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32511       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32512       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str3360,                      357},
     38045      {uniname2ctype_offset(str3763), 571},
     38046      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38047      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38048      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38049      {uniname2ctype_offset(str3791), 523},
     38050      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38051      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38052      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38053      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38054      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38055      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38056      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    3251338057      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    3251438058      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     
    3252538069      {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    3252638070#ifndef USE_UNICODE_PROPERTIES
    32527       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str6,                                     12},
    32528       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str7,                                     7},
    32529       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str8,                                     8},
    32530       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str9,                                     1},
    32531       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str10,                                    13},
    32532       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str11,                                   11},
    32533       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str12,                                    10},
    32534       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str13,                                    14},
    32535       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str14,                                     3},
    32536       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str15,                                     9},
    32537       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str16,                                     6},
    32538       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str17,                                     5},
    32539       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str18,                                     4},
    32540       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str19,                                     2}
     38071      {uniname2ctype_offset(str6), 12},
     38072      {uniname2ctype_offset(str7), 7},
     38073      {uniname2ctype_offset(str8), 15},
     38074      {uniname2ctype_offset(str9), 1},
     38075      {uniname2ctype_offset(str10), 13},
     38076      {uniname2ctype_offset(str11), 11},
     38077      {uniname2ctype_offset(str12), 10},
     38078      {uniname2ctype_offset(str13), 14},
     38079      {uniname2ctype_offset(str14), 3},
     38080      {uniname2ctype_offset(str15), 9},
     38081      {uniname2ctype_offset(str16), 8},
     38082      {uniname2ctype_offset(str17), 6},
     38083      {uniname2ctype_offset(str18), 5},
     38084      {uniname2ctype_offset(str19), 4},
     38085      {uniname2ctype_offset(str20), 2}
    3254138086#else /* USE_UNICODE_PROPERTIES */
    32542       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str3466,                                  182},
    32543       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32544       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32545       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32546       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32547       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32548       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32549       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32550       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32551       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32552       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32553       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32554       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32555       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32556       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32557       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32558       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32559       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32560       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32561       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32562       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32563       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32564       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32565       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32566       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32567       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32568       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32569       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32570       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32571       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32572       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32573       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32574       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38087      {uniname2ctype_offset(str3960), 147},
     38088      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38089      {-1},
     38090      {uniname2ctype_offset(str3971), 401},
     38091      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38092      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38093      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38094      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38095      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38096      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38097      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38098      {-1},
     38099      {uniname2ctype_offset(str4036), 90},
     38100      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38101      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38102      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38103      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38104      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38105      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38106      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38107      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38108      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38109      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38110      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38111      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38112      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38113      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38114      {-1},
     38115      {uniname2ctype_offset(str4164), 116},
    3257538116      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    3257638117      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    3257738118      {-1}, {-1}, {-1}, {-1},
    32578       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str3777,                                     74},
    32579       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str3778,                     154},
    32580       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32581       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32582       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32583       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32584       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38119      {uniname2ctype_offset(str4187), 116},
     38120      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38121      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38122      {-1}, {-1},
     38123      {uniname2ctype_offset(str4208), 233},
     38124      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38125      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38126      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38127      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38128      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38129      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38130      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38131      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38132      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38133      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38134      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38135      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38136      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38137      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38138      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38139      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38140      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38141      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38142      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38143      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38144      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38145      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38146      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38147      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38148      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38149      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38150      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38151      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38152      {uniname2ctype_offset(str4460), 237},
    3258538153      {-1}, {-1}, {-1},
    32586       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str3827,        492},
     38154      {uniname2ctype_offset(str4464), 374},
     38155      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38156      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38157      {uniname2ctype_offset(str4483), 182},
     38158      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38159      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38160      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38161      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38162      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38163      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38164      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38165      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38166      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38167      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38168      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38169      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38170      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38171      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38172      {uniname2ctype_offset(str4608), 439},
     38173      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38174      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38175      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38176      {uniname2ctype_offset(str4634), 205},
     38177      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38178      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38179      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38180      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38181      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38182      {uniname2ctype_offset(str4678), 75},
     38183      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38184      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38185      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38186      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38187      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38188      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38189      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38190      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38191      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38192      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38193      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38194      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38195      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38196      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38197      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38198      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38199      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38200      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38201      {uniname2ctype_offset(str4841), 155},
     38202      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38203      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38204      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38205      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38206      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38207      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38208      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38209      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38210      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38211      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38212      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38213      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38214      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38215      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38216      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38217      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38218      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38219      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38220      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38221      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38222      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38223      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38224      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38225      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38226      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38227      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38228      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38229      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38230      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38231      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    3258738232      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    3258838233      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     
    3259238237      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    3259338238      {-1}, {-1}, {-1}, {-1},
    32594       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str3886,                                   166},
    32595       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32596       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32597       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32598       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32599       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32600       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32601       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str3941,                                     2},
    32602       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32603       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32604       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32605       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32606       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32607       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32608       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str3995,                            328},
     38239      {uniname2ctype_offset(str5170), 80},
     38240      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38241      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38242      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38243      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38244      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38245      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38246      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38247      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38248      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38249      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38250      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38251      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38252      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38253      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38254      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38255      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38256      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38257      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38258      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38259      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38260      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38261      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38262      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38263      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38264      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38265      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38266      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38267      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38268      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38269      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38270      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38271      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38272      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38273      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38274      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38275      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38276      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38277      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38278      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38279      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38280      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38281      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38282      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38283      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38284      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38285      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38286      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38287      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38288      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38289      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38290      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38291      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38292      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38293      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38294      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38295      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38296      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38297      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38298      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38299      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38300      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38301      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38302      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38303      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38304      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38305      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38306      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38307      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38308      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38309      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38310      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38311      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38312      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38313      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38314      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38315      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38316      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38317      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38318      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38319      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38320      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38321      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38322      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38323      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38324      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38325      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38326      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38327      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38328      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38329      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38330      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38331      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38332      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38333      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38334      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38335      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38336      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38337      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38338      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38339      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38340      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38341      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38342      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38343      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
     38344      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    3260938345      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    3261038346      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    3261138347      {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    3261238348      {-1}, {-1},
    32613       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str4025,                                    76},
    32614       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32615       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str4035,                                 85},
    32616       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32617       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32618       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32619       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32620       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32621       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32622       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32623       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32624       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32625       {-1}, {-1}, {-1}, {-1}, {-1},
    32626       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str4122,                                   73},
    32627       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32628       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32629       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32630       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32631       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32632       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32633       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32634       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32635       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32636       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32637       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32638       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32639       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32640       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32641       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32642       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32643       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32644       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32645       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32646       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32647       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32648       {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
    32649       {-1},
    32650       {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str4322,                             73}
     38349      {uniname2ctype_offset(str6145), 155}
    3265138350#endif /* USE_UNICODE_PROPERTIES */
    3265238351    };
     
    3267838377  return -1;
    3267938378}
     38379#if defined ONIG_UNICODE_VERSION_STRING && !( \
     38380      ONIG_UNICODE_VERSION_MAJOR == 10 && \
     38381      ONIG_UNICODE_VERSION_MINOR == 0 && \
     38382      ONIG_UNICODE_VERSION_TEENY == 0 && \
     38383      1)
     38384# error ONIG_UNICODE_VERSION_STRING mismatch
     38385#endif
     38386#define ONIG_UNICODE_VERSION_STRING "10.0.0"
     38387#define ONIG_UNICODE_VERSION_MAJOR 10
     38388#define ONIG_UNICODE_VERSION_MINOR 0
     38389#define ONIG_UNICODE_VERSION_TEENY 0
  • EcnlProtoTool/trunk/onigmo-6.1.3/src/enc/utf_8.c

    r321 r331  
    11/**********************************************************************
    2   utf8.c -  Oniguruma (regular expression library)
     2  utf_8.c -  Oniguruma (regular expression library)
    33**********************************************************************/
    44/*-
     
    2929
    3030#include "regenc.h"
     31#ifdef RUBY
     32# include "encindex.h"
     33#endif
     34
     35#ifndef ENCINDEX_UTF_8
     36# define ENCINDEX_UTF_8 0
     37#endif
    3138
    3239#define USE_INVALID_CODE_SCHEME
     
    3441#ifdef USE_INVALID_CODE_SCHEME
    3542/* virtual codepoint values for invalid encoding byte 0xfe and 0xff */
    36 #define INVALID_CODE_FE   0xfffffffe
    37 #define INVALID_CODE_FF   0xffffffff
    38 #define VALID_CODE_LIMIT  0x7fffffff
    39 #endif
     43# define INVALID_CODE_FE  0xfffffffe
     44# define INVALID_CODE_FF  0xffffffff
     45#endif
     46#define VALID_CODE_LIMIT  0x0010ffff
    4047
    4148#define utf8_islead(c)     ((UChar )((c) & 0xc0) != 0x80)
     
    5764  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
    5865  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
    59   4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 1, 1
     66  4, 4, 4, 4, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
    6067};
    6168
    62 static int
    63 mbc_enc_len(const UChar* p)
    64 {
    65   return EncLen_UTF8[*p];
    66 }
    67 
    68 static int
    69 is_mbc_newline(const UChar* p, const UChar* end)
     69typedef enum {
     70  FAILURE = -2,
     71  ACCEPT,
     72  S0, S1, S2, S3,
     73  S4, S5, S6, S7
     74} state_t;
     75#define A ACCEPT
     76#define F FAILURE
     77static const signed char trans[][0x100] = {
     78  { /* S0   0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f */
     79    /* 0 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
     80    /* 1 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
     81    /* 2 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
     82    /* 3 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
     83    /* 4 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
     84    /* 5 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
     85    /* 6 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
     86    /* 7 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
     87    /* 8 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
     88    /* 9 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
     89    /* a */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
     90    /* b */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
     91    /* c */ F, F, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
     92    /* d */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
     93    /* e */ 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 3, 3,
     94    /* f */ 5, 6, 6, 6, 7, F, F, F, F, F, F, F, F, F, F, F
     95  },
     96  { /* S1   0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f */
     97    /* 0 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
     98    /* 1 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
     99    /* 2 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
     100    /* 3 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
     101    /* 4 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
     102    /* 5 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
     103    /* 6 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
     104    /* 7 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
     105    /* 8 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
     106    /* 9 */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
     107    /* a */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
     108    /* b */ A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A,
     109    /* c */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
     110    /* d */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
     111    /* e */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
     112    /* f */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F
     113  },
     114  { /* S2   0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f */
     115    /* 0 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
     116    /* 1 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
     117    /* 2 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
     118    /* 3 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
     119    /* 4 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
     120    /* 5 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
     121    /* 6 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
     122    /* 7 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
     123    /* 8 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
     124    /* 9 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
     125    /* a */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
     126    /* b */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
     127    /* c */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
     128    /* d */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
     129    /* e */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
     130    /* f */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F
     131  },
     132  { /* S3   0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f */
     133    /* 0 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
     134    /* 1 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
     135    /* 2 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
     136    /* 3 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
     137    /* 4 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
     138    /* 5 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
     139    /* 6 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
     140    /* 7 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
     141    /* 8 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
     142    /* 9 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
     143    /* a */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
     144    /* b */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
     145    /* c */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
     146    /* d */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
     147    /* e */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
     148    /* f */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F
     149  },
     150  { /* S4   0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f */
     151    /* 0 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
     152    /* 1 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
     153    /* 2 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
     154    /* 3 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
     155    /* 4 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
     156    /* 5 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
     157    /* 6 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
     158    /* 7 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
     159    /* 8 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
     160    /* 9 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
     161    /* a */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
     162    /* b */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
     163    /* c */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
     164    /* d */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
     165    /* e */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
     166    /* f */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F
     167  },
     168  { /* S5   0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f */
     169    /* 0 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
     170    /* 1 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
     171    /* 2 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
     172    /* 3 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
     173    /* 4 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
     174    /* 5 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
     175    /* 6 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
     176    /* 7 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
     177    /* 8 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
     178    /* 9 */ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
     179    /* a */ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
     180    /* b */ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
     181    /* c */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
     182    /* d */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
     183    /* e */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
     184    /* f */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F
     185  },
     186  { /* S6   0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f */
     187    /* 0 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
     188    /* 1 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
     189    /* 2 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
     190    /* 3 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
     191    /* 4 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
     192    /* 5 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
     193    /* 6 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
     194    /* 7 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
     195    /* 8 */ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
     196    /* 9 */ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
     197    /* a */ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
     198    /* b */ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
     199    /* c */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
     200    /* d */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
     201    /* e */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
     202    /* f */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F
     203  },
     204  { /* S7   0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f */
     205    /* 0 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
     206    /* 1 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
     207    /* 2 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
     208    /* 3 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
     209    /* 4 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
     210    /* 5 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
     211    /* 6 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
     212    /* 7 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
     213    /* 8 */ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
     214    /* 9 */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
     215    /* a */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
     216    /* b */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
     217    /* c */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
     218    /* d */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
     219    /* e */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F,
     220    /* f */ F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F
     221  },
     222};
     223#undef A
     224#undef F
     225
     226static int
     227mbc_enc_len(const UChar* p, const UChar* e, OnigEncoding enc ARG_UNUSED)
     228{
     229  int firstbyte = *p++;
     230  state_t s;
     231  s = trans[0][firstbyte];
     232  if (s < 0) return s == ACCEPT ? ONIGENC_CONSTRUCT_MBCLEN_CHARFOUND(1) :
     233                                  ONIGENC_CONSTRUCT_MBCLEN_INVALID();
     234
     235  if (p == e) return ONIGENC_CONSTRUCT_MBCLEN_NEEDMORE(EncLen_UTF8[firstbyte]-1);
     236  s = trans[s][*p++];
     237  if (s < 0) return s == ACCEPT ? ONIGENC_CONSTRUCT_MBCLEN_CHARFOUND(2) :
     238                                  ONIGENC_CONSTRUCT_MBCLEN_INVALID();
     239
     240  if (p == e) return ONIGENC_CONSTRUCT_MBCLEN_NEEDMORE(EncLen_UTF8[firstbyte]-2);
     241  s = trans[s][*p++];
     242  if (s < 0) return s == ACCEPT ? ONIGENC_CONSTRUCT_MBCLEN_CHARFOUND(3) :
     243                                  ONIGENC_CONSTRUCT_MBCLEN_INVALID();
     244
     245  if (p == e) return ONIGENC_CONSTRUCT_MBCLEN_NEEDMORE(EncLen_UTF8[firstbyte]-3);
     246  s = trans[s][*p++];
     247  return s == ACCEPT ? ONIGENC_CONSTRUCT_MBCLEN_CHARFOUND(4) :
     248                       ONIGENC_CONSTRUCT_MBCLEN_INVALID();
     249}
     250
     251static int
     252is_mbc_newline(const UChar* p, const UChar* end, OnigEncoding enc)
    70253{
    71254  if (p < end) {
     
    90273
    91274static OnigCodePoint
    92 mbc_to_code(const UChar* p, const UChar* end ARG_UNUSED)
     275mbc_to_code(const UChar* p, const UChar* end, OnigEncoding enc)
    93276{
    94277  int c, len;
    95278  OnigCodePoint n;
    96279
    97   len = mbc_enc_len(p);
     280  len = mbc_enc_len(p, end, enc);
    98281  c = *p++;
    99282  if (len > 1) {
     
    117300
    118301static int
    119 code_to_mbclen(OnigCodePoint code)
     302code_to_mbclen(OnigCodePoint code, OnigEncoding enc ARG_UNUSED)
    120303{
    121304  if      ((code & 0xffffff80) == 0) return 1;
    122305  else if ((code & 0xfffff800) == 0) return 2;
    123306  else if ((code & 0xffff0000) == 0) return 3;
    124   else if ((code & 0xffe00000) == 0) return 4;
    125   else if ((code & 0xfc000000) == 0) return 5;
    126   else if ((code & 0x80000000) == 0) return 6;
     307  else if (code <= VALID_CODE_LIMIT) return 4;
    127308#ifdef USE_INVALID_CODE_SCHEME
    128309  else if (code == INVALID_CODE_FE) return 1;
     
    130311#endif
    131312  else
    132     return ONIGERR_INVALID_CODE_POINT_VALUE;
    133 }
    134 
    135 static int
    136 code_to_mbc(OnigCodePoint code, UChar *buf)
     313    return ONIGERR_TOO_BIG_WIDE_CHAR_VALUE;
     314}
     315
     316static int
     317code_to_mbc(OnigCodePoint code, UChar *buf, OnigEncoding enc ARG_UNUSED)
    137318{
    138319#define UTF8_TRAILS(code, shift) (UChar )((((code) >> (shift)) & 0x3f) | 0x80)
     
    153334      *p++ = UTF8_TRAILS(code, 6);
    154335    }
    155     else if ((code & 0xffe00000) == 0) {
     336    else if (code <= VALID_CODE_LIMIT) {
    156337      *p++ = (UChar )(((code>>18) & 0x07) | 0xf0);
    157       *p++ = UTF8_TRAILS(code, 12);
    158       *p++ = UTF8_TRAILS(code,  6);
    159     }
    160     else if ((code & 0xfc000000) == 0) {
    161       *p++ = (UChar )(((code>>24) & 0x03) | 0xf8);
    162       *p++ = UTF8_TRAILS(code, 18);
    163       *p++ = UTF8_TRAILS(code, 12);
    164       *p++ = UTF8_TRAILS(code,  6);
    165     }
    166     else if ((code & 0x80000000) == 0) {
    167       *p++ = (UChar )(((code>>30) & 0x01) | 0xfc);
    168       *p++ = UTF8_TRAILS(code, 24);
    169       *p++ = UTF8_TRAILS(code, 18);
    170338      *p++ = UTF8_TRAILS(code, 12);
    171339      *p++ = UTF8_TRAILS(code,  6);
     
    192360static int
    193361mbc_case_fold(OnigCaseFoldType flag, const UChar** pp,
    194               const UChar* end, UChar* fold)
     362              const UChar* end, UChar* fold, OnigEncoding enc)
    195363{
    196364  const UChar* p = *pp;
     
    213381  }
    214382  else {
    215     return onigenc_unicode_mbc_case_fold(ONIG_ENCODING_UTF8, flag,
    216                                          pp, end, fold);
    217   }
    218 }
    219 
    220 #if 0
    221 static int
    222 is_mbc_ambiguous(OnigCaseFoldType flag, const UChar** pp, const UChar* end)
    223 {
    224   const UChar* p = *pp;
    225 
    226   if (ONIGENC_IS_MBC_ASCII(p)) {
    227     (*pp)++;
    228     return ONIGENC_IS_ASCII_CODE_CASE_AMBIG(*p);
    229   }
    230   else {
    231     (*pp) += mbc_enc_len(p);
    232 
    233     if (*p == 0xc3) {
    234       int c = *(p + 1);
    235       if (c >= 0x80) {
    236         if (c <= (UChar )0x9e) { /* upper */
    237           if (c == (UChar )0x97) return FALSE;
    238           return TRUE;
    239         }
    240         else if (c >= (UChar )0xa0 && c <= (UChar )0xbe) { /* lower */
    241           if (c == (UChar )'\267') return FALSE;
    242           return TRUE;
    243         }
    244         else if (c == (UChar )0x9f &&
    245                  (flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) != 0) {
    246           return TRUE;
    247         }
    248       }
    249     }
    250   }
    251 
    252   return FALSE;
    253 }
    254 #endif
     383    return onigenc_unicode_mbc_case_fold(enc, flag, pp, end, fold);
     384  }
     385}
    255386
    256387
    257388static int
    258389get_ctype_code_range(OnigCtype ctype, OnigCodePoint *sb_out,
    259                      const OnigCodePoint* ranges[])
     390                     const OnigCodePoint* ranges[], OnigEncoding enc ARG_UNUSED)
    260391{
    261392  *sb_out = 0x80;
     
    265396
    266397static UChar*
    267 left_adjust_char_head(const UChar* start, const UChar* s)
     398left_adjust_char_head(const UChar* start, const UChar* s, const UChar* end, OnigEncoding enc ARG_UNUSED)
    268399{
    269400  const UChar *p;
     
    278409static int
    279410get_case_fold_codes_by_str(OnigCaseFoldType flag,
    280     const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[])
    281 {
    282   return onigenc_unicode_get_case_fold_codes_by_str(ONIG_ENCODING_UTF8,
    283                                                     flag, p, end, items);
    284 }
    285 
    286 OnigEncodingType OnigEncodingUTF8 = {
     411    const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[],
     412    OnigEncoding enc)
     413{
     414  return onigenc_unicode_get_case_fold_codes_by_str(enc, flag, p, end, items);
     415}
     416
     417OnigEncodingDefine(utf_8, UTF_8) = {
    287418  mbc_enc_len,
    288419  "UTF-8",     /* name */
    289   6,           /* max byte length */
     420  4,           /* max byte length */
    290421  1,           /* min byte length */
    291422  is_mbc_newline,
     
    301432  left_adjust_char_head,
    302433  onigenc_always_true_is_allowed_reverse_match,
     434  onigenc_unicode_case_map,
     435  ENCINDEX_UTF_8,
    303436  ONIGENC_FLAG_UNICODE,
    304437};
     438ENC_ALIAS("CP65001", "UTF-8")
     439
     440/*
     441 * Name: UTF8-MAC
     442 * Link: http://developer.apple.com/documentation/MacOSX/Conceptual/BPFileSystem/BPFileSystem.html
     443 * Link: http://developer.apple.com/qa/qa2001/qa1235.html
     444 * Link: http://developer.apple.com/jp/qa/qa2001/qa1235.html
     445 * Link: http://www.gnu.org/software/emacs/NEWS.23.2
     446 */
     447ENC_REPLICATE("UTF8-MAC", "UTF-8")
     448ENC_ALIAS("UTF-8-MAC", "UTF8-MAC")
     449ENC_ALIAS("UTF-8-HFS", "UTF8-MAC") /* Emacs 23.2 */
  • EcnlProtoTool/trunk/onigmo-6.1.3/src/onigmo.h

    r321 r331  
    1 #ifndef ONIGURUMA_H
    2 #define ONIGURUMA_H
     1#ifndef ONIGMO_H
     2#define ONIGMO_H
    33/**********************************************************************
    4   oniguruma.h - Onigmo (Oniguruma-mod) (regular expression library)
     4  onigmo.h - Onigmo (Oniguruma-mod) (regular expression library)
    55**********************************************************************/
    66/*-
    77 * Copyright (c) 2002-2009  K.Kosako  <sndgk393 AT ybb DOT ne DOT jp>
    8  * Copyright (c) 2011-2014  K.Takata  <kentkt AT csc DOT jp>
     8 * Copyright (c) 2011-2017  K.Takata  <kentkt AT csc DOT jp>
    99 * All rights reserved.
    1010 *
     
    3333#ifdef __cplusplus
    3434extern "C" {
    35 #endif
    36 
    37 #define ONIGURUMA
    38 #define ONIGURUMA_VERSION_MAJOR   5
    39 #define ONIGURUMA_VERSION_MINOR   15
    40 #define ONIGURUMA_VERSION_TEENY   0
    41 
    42 #ifdef __cplusplus
    43 # ifndef  HAVE_PROTOTYPES
    44 #  define HAVE_PROTOTYPES 1
    45 # endif
    46 # ifndef  HAVE_STDARG_PROTOTYPES
    47 #  define HAVE_STDARG_PROTOTYPES 1
     35# if 0
     36} /* satisfy cc-mode */
    4837# endif
    4938#endif
    5039
    51 /* escape Mac OS X/Xcode 2.4/gcc 4.0.1 problem */
    52 #if defined(__APPLE__) && defined(__GNUC__) && __GNUC__ >= 4
    53 # ifndef  HAVE_STDARG_PROTOTYPES
    54 #  define HAVE_STDARG_PROTOTYPES 1
     40#define ONIGMO_VERSION_MAJOR   6
     41#define ONIGMO_VERSION_MINOR   1
     42#define ONIGMO_VERSION_TEENY   3
     43
     44#ifndef ONIG_EXTERN
     45# ifdef RUBY_EXTERN
     46#  define ONIG_EXTERN   RUBY_EXTERN
     47# else
     48#  if defined(_WIN32) && !defined(__GNUC__)
     49#   if defined(EXPORT) || defined(RUBY_EXPORT)
     50#    define ONIG_EXTERN   extern __declspec(dllexport)
     51#   else
     52#    define ONIG_EXTERN   extern __declspec(dllimport)
     53#   endif
     54#  endif
    5555# endif
    5656#endif
    5757
    58 #if defined(HAVE_STDARG_H) || defined(_WIN32)
    59 # ifndef  HAVE_STDARG_PROTOTYPES
    60 #  define HAVE_STDARG_PROTOTYPES 1
     58#ifndef ONIG_EXTERN
     59# define ONIG_EXTERN   extern
     60#endif
     61
     62#ifndef RUBY
     63# ifndef RUBY_SYMBOL_EXPORT_BEGIN
     64#  define RUBY_SYMBOL_EXPORT_BEGIN
     65#  define RUBY_SYMBOL_EXPORT_END
    6166# endif
    6267#endif
    6368
    64 #ifndef P_
    65 #if defined(__STDC__) || defined(_WIN32)
    66 # define P_(args) args
    67 #else
    68 # define P_(args) ()
    69 #endif
    70 #endif
    71 
    72 #ifndef PV_
    73 #ifdef HAVE_STDARG_PROTOTYPES
    74 # define PV_(args) args
    75 #else
    76 # define PV_(args) ()
    77 #endif
    78 #endif
    79 
    80 #ifndef ONIG_EXTERN
    81 #if defined(_WIN32) && !defined(__GNUC__)
    82 #if defined(EXPORT) || defined(RUBY_EXPORT)
    83 #define ONIG_EXTERN   extern __declspec(dllexport)
    84 #else
    85 #define ONIG_EXTERN   extern __declspec(dllimport)
    86 #endif
    87 #endif
    88 #endif
    89 
    90 #ifndef ONIG_EXTERN
    91 #define ONIG_EXTERN   extern
    92 #endif
     69RUBY_SYMBOL_EXPORT_BEGIN
    9370
    9471#include <stddef.h>             /* for size_t */
     
    9774
    9875#ifndef ONIG_ESCAPE_UCHAR_COLLISION
    99 #define UChar OnigUChar
     76# define UChar OnigUChar
    10077#endif
    10178
     
    10885#define ONIG_INFINITE_DISTANCE  ~((OnigDistance )0)
    10986
     87/*
     88 * Onig casefold/case mapping flags and related definitions
     89 *
     90 * Subfields (starting with 0 at LSB):
     91 *   0-2: Code point count in casefold.h
     92 *   3-12: Index into SpecialCaseMapping array in casefold.h
     93 *   13-22: Case folding/mapping flags
     94 */
    11095typedef unsigned int OnigCaseFoldType; /* case fold flag */
    11196
    11297ONIG_EXTERN OnigCaseFoldType OnigDefaultCaseFoldFlag;
    11398
    114 /* #define ONIGENC_CASE_FOLD_HIRAGANA_KATAKANA  (1<<1) */
    115 /* #define ONIGENC_CASE_FOLD_KATAKANA_WIDTH     (1<<2) */
    116 #define ONIGENC_CASE_FOLD_TURKISH_AZERI         (1<<20)
    117 #define INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR   (1<<30)
     99/* bits for actual code point count; 3 bits is more than enough, currently only 2 used */
     100#define OnigCodePointMaskWidth    3
     101#define OnigCodePointMask     ((1<<OnigCodePointMaskWidth)-1)
     102#define OnigCodePointCount(n) ((n)&OnigCodePointMask)
     103#define OnigCaseFoldFlags(n) ((n)&~OnigCodePointMask)
     104
     105/* #define ONIGENC_CASE_FOLD_HIRAGANA_KATAKANA  (1<<1) */ /* no longer usable with these values! */
     106/* #define ONIGENC_CASE_FOLD_KATAKANA_WIDTH     (1<<2) */ /* no longer usable with these values! */
     107
     108/* bits for index into table with separate titlecase mappings */
     109/* 10 bits provide 1024 values */
     110#define OnigSpecialIndexShift 3
     111#define OnigSpecialIndexWidth 10
     112
     113#define ONIGENC_CASE_UPCASE                     (1<<13) /* has/needs uppercase mapping */
     114#define ONIGENC_CASE_DOWNCASE                   (1<<14) /* has/needs lowercase mapping */
     115#define ONIGENC_CASE_TITLECASE                  (1<<15) /* has/needs (special) titlecase mapping */
     116#define ONIGENC_CASE_SPECIAL_OFFSET             3       /* offset in bits from ONIGENC_CASE to ONIGENC_CASE_SPECIAL */
     117#define ONIGENC_CASE_UP_SPECIAL                 (1<<16) /* has special upcase mapping */
     118#define ONIGENC_CASE_DOWN_SPECIAL               (1<<17) /* has special downcase mapping */
     119#define ONIGENC_CASE_MODIFIED                   (1<<18) /* data has been modified */
     120#define ONIGENC_CASE_FOLD                       (1<<19) /* has/needs case folding */
     121
     122#define ONIGENC_CASE_FOLD_TURKISH_AZERI         (1<<20) /* needs mapping specific to Turkic languages; better not change original value! */
     123
     124#define ONIGENC_CASE_FOLD_LITHUANIAN            (1<<21) /* needs Lithuanian-specific mapping */
     125#define ONIGENC_CASE_ASCII_ONLY                 (1<<22) /* only modify ASCII range */
     126#define ONIGENC_CASE_IS_TITLECASE               (1<<23) /* character itself is already titlecase */
     127
     128#define INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR   (1<<30) /* better not change original value! */
    118129
    119130#define ONIGENC_CASE_FOLD_MIN      INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR
     
    148159
    149160typedef struct OnigEncodingTypeST {
    150   int    (*mbc_enc_len)(const OnigUChar* p);
     161  int    (*precise_mbc_enc_len)(const OnigUChar* p,const OnigUChar* e, const struct OnigEncodingTypeST* enc);
    151162  const char*   name;
    152163  int           max_enc_len;
    153164  int           min_enc_len;
    154   int    (*is_mbc_newline)(const OnigUChar* p, const OnigUChar* end);
    155   OnigCodePoint (*mbc_to_code)(const OnigUChar* p, const OnigUChar* end);
    156   int    (*code_to_mbclen)(OnigCodePoint code);
    157   int    (*code_to_mbc)(OnigCodePoint code, OnigUChar *buf);
    158   int    (*mbc_case_fold)(OnigCaseFoldType flag, const OnigUChar** pp, const OnigUChar* end, OnigUChar* to);
    159   int    (*apply_all_case_fold)(OnigCaseFoldType flag, OnigApplyAllCaseFoldFunc f, void* arg);
    160   int    (*get_case_fold_codes_by_str)(OnigCaseFoldType flag, const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem acs[]);
    161   int    (*property_name_to_ctype)(struct OnigEncodingTypeST* enc, OnigUChar* p, OnigUChar* end);
    162   int    (*is_code_ctype)(OnigCodePoint code, OnigCtype ctype);
    163   int    (*get_ctype_code_range)(OnigCtype ctype, OnigCodePoint* sb_out, const OnigCodePoint* ranges[]);
    164   OnigUChar* (*left_adjust_char_head)(const OnigUChar* start, const OnigUChar* p);
    165   int    (*is_allowed_reverse_match)(const OnigUChar* p, const OnigUChar* end);
     165  int    (*is_mbc_newline)(const OnigUChar* p, const OnigUChar* end, const struct OnigEncodingTypeST* enc);
     166  OnigCodePoint (*mbc_to_code)(const OnigUChar* p, const OnigUChar* end, const struct OnigEncodingTypeST* enc);
     167  int    (*code_to_mbclen)(OnigCodePoint code, const struct OnigEncodingTypeST* enc);
     168  int    (*code_to_mbc)(OnigCodePoint code, OnigUChar *buf, const struct OnigEncodingTypeST* enc);
     169  int    (*mbc_case_fold)(OnigCaseFoldType flag, const OnigUChar** pp, const OnigUChar* end, OnigUChar* to, const struct OnigEncodingTypeST* enc);
     170  int    (*apply_all_case_fold)(OnigCaseFoldType flag, OnigApplyAllCaseFoldFunc f, void* arg, const struct OnigEncodingTypeST* enc);
     171  int    (*get_case_fold_codes_by_str)(OnigCaseFoldType flag, const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem acs[], const struct OnigEncodingTypeST* enc);
     172  int    (*property_name_to_ctype)(const struct OnigEncodingTypeST* enc, const OnigUChar* p, const OnigUChar* end);
     173  int    (*is_code_ctype)(OnigCodePoint code, OnigCtype ctype, const struct OnigEncodingTypeST* enc);
     174  int    (*get_ctype_code_range)(OnigCtype ctype, OnigCodePoint* sb_out, const OnigCodePoint* ranges[], const struct OnigEncodingTypeST* enc);
     175  OnigUChar* (*left_adjust_char_head)(const OnigUChar* start, const OnigUChar* p, const OnigUChar* end, const struct OnigEncodingTypeST* enc);
     176  int    (*is_allowed_reverse_match)(const OnigUChar* p, const OnigUChar* end, const struct OnigEncodingTypeST* enc);
     177  int    (*case_map)(OnigCaseFoldType* flagP, const OnigUChar** pp, const OnigUChar* end, OnigUChar* to, OnigUChar* to_end, const struct OnigEncodingTypeST* enc);
     178  int ruby_encoding_index;
    166179  unsigned int  flags;
    167180} OnigEncodingType;
    168181
    169 typedef OnigEncodingType* OnigEncoding;
    170 
    171 ONIG_EXTERN OnigEncodingType OnigEncodingASCII;
    172 ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_1;
    173 ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_2;
    174 ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_3;
    175 ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_4;
    176 ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_5;
    177 ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_6;
    178 ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_7;
    179 ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_8;
    180 ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_9;
    181 ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_10;
    182 ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_11;
    183 ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_13;
    184 ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_14;
    185 ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_15;
    186 ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_16;
    187 ONIG_EXTERN OnigEncodingType OnigEncodingUTF8;
    188 ONIG_EXTERN OnigEncodingType OnigEncodingUTF16_BE;
    189 ONIG_EXTERN OnigEncodingType OnigEncodingUTF16_LE;
    190 ONIG_EXTERN OnigEncodingType OnigEncodingUTF32_BE;
    191 ONIG_EXTERN OnigEncodingType OnigEncodingUTF32_LE;
    192 ONIG_EXTERN OnigEncodingType OnigEncodingEUC_JP;
    193 ONIG_EXTERN OnigEncodingType OnigEncodingEUC_TW;
    194 ONIG_EXTERN OnigEncodingType OnigEncodingEUC_KR;
    195 ONIG_EXTERN OnigEncodingType OnigEncodingEUC_CN;
    196 ONIG_EXTERN OnigEncodingType OnigEncodingSJIS;
    197 ONIG_EXTERN OnigEncodingType OnigEncodingCP932;
    198 ONIG_EXTERN OnigEncodingType OnigEncodingKOI8;
    199 ONIG_EXTERN OnigEncodingType OnigEncodingKOI8_R;
    200 ONIG_EXTERN OnigEncodingType OnigEncodingCP1251;
    201 ONIG_EXTERN OnigEncodingType OnigEncodingBIG5;
    202 ONIG_EXTERN OnigEncodingType OnigEncodingGB18030;
     182typedef const OnigEncodingType* OnigEncoding;
     183
     184ONIG_EXTERN const OnigEncodingType OnigEncodingASCII;
     185#ifndef RUBY
     186ONIG_EXTERN const OnigEncodingType OnigEncodingISO_8859_1;
     187ONIG_EXTERN const OnigEncodingType OnigEncodingISO_8859_2;
     188ONIG_EXTERN const OnigEncodingType OnigEncodingISO_8859_3;
     189ONIG_EXTERN const OnigEncodingType OnigEncodingISO_8859_4;
     190ONIG_EXTERN const OnigEncodingType OnigEncodingISO_8859_5;
     191ONIG_EXTERN const OnigEncodingType OnigEncodingISO_8859_6;
     192ONIG_EXTERN const OnigEncodingType OnigEncodingISO_8859_7;
     193ONIG_EXTERN const OnigEncodingType OnigEncodingISO_8859_8;
     194ONIG_EXTERN const OnigEncodingType OnigEncodingISO_8859_9;
     195ONIG_EXTERN const OnigEncodingType OnigEncodingISO_8859_10;
     196ONIG_EXTERN const OnigEncodingType OnigEncodingISO_8859_11;
     197ONIG_EXTERN const OnigEncodingType OnigEncodingISO_8859_13;
     198ONIG_EXTERN const OnigEncodingType OnigEncodingISO_8859_14;
     199ONIG_EXTERN const OnigEncodingType OnigEncodingISO_8859_15;
     200ONIG_EXTERN const OnigEncodingType OnigEncodingISO_8859_16;
     201ONIG_EXTERN const OnigEncodingType OnigEncodingUTF_8;
     202ONIG_EXTERN const OnigEncodingType OnigEncodingUTF_16BE;
     203ONIG_EXTERN const OnigEncodingType OnigEncodingUTF_16LE;
     204ONIG_EXTERN const OnigEncodingType OnigEncodingUTF_32BE;
     205ONIG_EXTERN const OnigEncodingType OnigEncodingUTF_32LE;
     206ONIG_EXTERN const OnigEncodingType OnigEncodingEUC_JP;
     207ONIG_EXTERN const OnigEncodingType OnigEncodingEUC_TW;
     208ONIG_EXTERN const OnigEncodingType OnigEncodingEUC_KR;
     209ONIG_EXTERN const OnigEncodingType OnigEncodingEUC_CN;
     210ONIG_EXTERN const OnigEncodingType OnigEncodingShift_JIS;
     211ONIG_EXTERN const OnigEncodingType OnigEncodingWindows_31J;
     212/* ONIG_EXTERN const OnigEncodingType OnigEncodingKOI8; */
     213ONIG_EXTERN const OnigEncodingType OnigEncodingKOI8_R;
     214ONIG_EXTERN const OnigEncodingType OnigEncodingKOI8_U;
     215ONIG_EXTERN const OnigEncodingType OnigEncodingWindows_1250;
     216ONIG_EXTERN const OnigEncodingType OnigEncodingWindows_1251;
     217ONIG_EXTERN const OnigEncodingType OnigEncodingWindows_1252;
     218ONIG_EXTERN const OnigEncodingType OnigEncodingWindows_1253;
     219ONIG_EXTERN const OnigEncodingType OnigEncodingWindows_1254;
     220ONIG_EXTERN const OnigEncodingType OnigEncodingWindows_1257;
     221ONIG_EXTERN const OnigEncodingType OnigEncodingBIG5;
     222ONIG_EXTERN const OnigEncodingType OnigEncodingGB18030;
     223#endif /* RUBY */
    203224
    204225#define ONIG_ENCODING_ASCII        (&OnigEncodingASCII)
    205 #define ONIG_ENCODING_ISO_8859_1   (&OnigEncodingISO_8859_1)
    206 #define ONIG_ENCODING_ISO_8859_2   (&OnigEncodingISO_8859_2)
    207 #define ONIG_ENCODING_ISO_8859_3   (&OnigEncodingISO_8859_3)
    208 #define ONIG_ENCODING_ISO_8859_4   (&OnigEncodingISO_8859_4)
    209 #define ONIG_ENCODING_ISO_8859_5   (&OnigEncodingISO_8859_5)
    210 #define ONIG_ENCODING_ISO_8859_6   (&OnigEncodingISO_8859_6)
    211 #define ONIG_ENCODING_ISO_8859_7   (&OnigEncodingISO_8859_7)
    212 #define ONIG_ENCODING_ISO_8859_8   (&OnigEncodingISO_8859_8)
    213 #define ONIG_ENCODING_ISO_8859_9   (&OnigEncodingISO_8859_9)
    214 #define ONIG_ENCODING_ISO_8859_10  (&OnigEncodingISO_8859_10)
    215 #define ONIG_ENCODING_ISO_8859_11  (&OnigEncodingISO_8859_11)
    216 #define ONIG_ENCODING_ISO_8859_13  (&OnigEncodingISO_8859_13)
    217 #define ONIG_ENCODING_ISO_8859_14  (&OnigEncodingISO_8859_14)
    218 #define ONIG_ENCODING_ISO_8859_15  (&OnigEncodingISO_8859_15)
    219 #define ONIG_ENCODING_ISO_8859_16  (&OnigEncodingISO_8859_16)
    220 #define ONIG_ENCODING_UTF8         (&OnigEncodingUTF8)
    221 #define ONIG_ENCODING_UTF16_BE     (&OnigEncodingUTF16_BE)
    222 #define ONIG_ENCODING_UTF16_LE     (&OnigEncodingUTF16_LE)
    223 #define ONIG_ENCODING_UTF32_BE     (&OnigEncodingUTF32_BE)
    224 #define ONIG_ENCODING_UTF32_LE     (&OnigEncodingUTF32_LE)
    225 #define ONIG_ENCODING_EUC_JP       (&OnigEncodingEUC_JP)
    226 #define ONIG_ENCODING_EUC_TW       (&OnigEncodingEUC_TW)
    227 #define ONIG_ENCODING_EUC_KR       (&OnigEncodingEUC_KR)
    228 #define ONIG_ENCODING_EUC_CN       (&OnigEncodingEUC_CN)
    229 #define ONIG_ENCODING_SJIS         (&OnigEncodingSJIS)
    230 #define ONIG_ENCODING_CP932        (&OnigEncodingCP932)
    231 #define ONIG_ENCODING_KOI8         (&OnigEncodingKOI8)
    232 #define ONIG_ENCODING_KOI8_R       (&OnigEncodingKOI8_R)
    233 #define ONIG_ENCODING_CP1251       (&OnigEncodingCP1251)
    234 #define ONIG_ENCODING_BIG5         (&OnigEncodingBIG5)
    235 #define ONIG_ENCODING_GB18030      (&OnigEncodingGB18030)
     226#ifndef RUBY
     227# define ONIG_ENCODING_ISO_8859_1   (&OnigEncodingISO_8859_1)
     228# define ONIG_ENCODING_ISO_8859_2   (&OnigEncodingISO_8859_2)
     229# define ONIG_ENCODING_ISO_8859_3   (&OnigEncodingISO_8859_3)
     230# define ONIG_ENCODING_ISO_8859_4   (&OnigEncodingISO_8859_4)
     231# define ONIG_ENCODING_ISO_8859_5   (&OnigEncodingISO_8859_5)
     232# define ONIG_ENCODING_ISO_8859_6   (&OnigEncodingISO_8859_6)
     233# define ONIG_ENCODING_ISO_8859_7   (&OnigEncodingISO_8859_7)
     234# define ONIG_ENCODING_ISO_8859_8   (&OnigEncodingISO_8859_8)
     235# define ONIG_ENCODING_ISO_8859_9   (&OnigEncodingISO_8859_9)
     236# define ONIG_ENCODING_ISO_8859_10  (&OnigEncodingISO_8859_10)
     237# define ONIG_ENCODING_ISO_8859_11  (&OnigEncodingISO_8859_11)
     238# define ONIG_ENCODING_ISO_8859_13  (&OnigEncodingISO_8859_13)
     239# define ONIG_ENCODING_ISO_8859_14  (&OnigEncodingISO_8859_14)
     240# define ONIG_ENCODING_ISO_8859_15  (&OnigEncodingISO_8859_15)
     241# define ONIG_ENCODING_ISO_8859_16  (&OnigEncodingISO_8859_16)
     242# define ONIG_ENCODING_UTF_8        (&OnigEncodingUTF_8)
     243# define ONIG_ENCODING_UTF_16BE     (&OnigEncodingUTF_16BE)
     244# define ONIG_ENCODING_UTF_16LE     (&OnigEncodingUTF_16LE)
     245# define ONIG_ENCODING_UTF_32BE     (&OnigEncodingUTF_32BE)
     246# define ONIG_ENCODING_UTF_32LE     (&OnigEncodingUTF_32LE)
     247# define ONIG_ENCODING_EUC_JP       (&OnigEncodingEUC_JP)
     248# define ONIG_ENCODING_EUC_TW       (&OnigEncodingEUC_TW)
     249# define ONIG_ENCODING_EUC_KR       (&OnigEncodingEUC_KR)
     250# define ONIG_ENCODING_EUC_CN       (&OnigEncodingEUC_CN)
     251# define ONIG_ENCODING_SHIFT_JIS    (&OnigEncodingShift_JIS)
     252# define ONIG_ENCODING_WINDOWS_31J  (&OnigEncodingWindows_31J)
     253/* # define ONIG_ENCODING_KOI8         (&OnigEncodingKOI8) */
     254# define ONIG_ENCODING_KOI8_R       (&OnigEncodingKOI8_R)
     255# define ONIG_ENCODING_KOI8_U       (&OnigEncodingKOI8_U)
     256# define ONIG_ENCODING_WINDOWS_1250 (&OnigEncodingWindows_1250)
     257# define ONIG_ENCODING_WINDOWS_1251 (&OnigEncodingWindows_1251)
     258# define ONIG_ENCODING_WINDOWS_1252 (&OnigEncodingWindows_1252)
     259# define ONIG_ENCODING_WINDOWS_1253 (&OnigEncodingWindows_1253)
     260# define ONIG_ENCODING_WINDOWS_1254 (&OnigEncodingWindows_1254)
     261# define ONIG_ENCODING_WINDOWS_1257 (&OnigEncodingWindows_1257)
     262# define ONIG_ENCODING_BIG5         (&OnigEncodingBIG5)
     263# define ONIG_ENCODING_GB18030      (&OnigEncodingGB18030)
     264
     265/* old names */
     266# define ONIG_ENCODING_SJIS         ONIG_ENCODING_SHIFT_JIS
     267# define ONIG_ENCODING_CP932        ONIG_ENCODING_WINDOWS_31J
     268# define ONIG_ENCODING_CP1250       ONIG_ENCODING_WINDOWS_1250
     269# define ONIG_ENCODING_CP1251       ONIG_ENCODING_WINDOWS_1251
     270# define ONIG_ENCODING_CP1252       ONIG_ENCODING_WINDOWS_1252
     271# define ONIG_ENCODING_CP1253       ONIG_ENCODING_WINDOWS_1253
     272# define ONIG_ENCODING_CP1254       ONIG_ENCODING_WINDOWS_1254
     273# define ONIG_ENCODING_CP1257       ONIG_ENCODING_WINDOWS_1257
     274# define ONIG_ENCODING_UTF8         ONIG_ENCODING_UTF_8
     275# define ONIG_ENCODING_UTF16_BE     ONIG_ENCODING_UTF_16BE
     276# define ONIG_ENCODING_UTF16_LE     ONIG_ENCODING_UTF_16LE
     277# define ONIG_ENCODING_UTF32_BE     ONIG_ENCODING_UTF_32BE
     278# define ONIG_ENCODING_UTF32_LE     ONIG_ENCODING_UTF_32LE
     279#endif /* RUBY */
    236280
    237281#define ONIG_ENCODING_UNDEF    ((OnigEncoding )0)
     282
     283/* this declaration needs to be here because it is used in string.c in Ruby */
     284ONIG_EXTERN
     285int onigenc_ascii_only_case_map(OnigCaseFoldType* flagP, const OnigUChar** pp, const OnigUChar* end, OnigUChar* to, OnigUChar* to_end, const struct OnigEncodingTypeST* enc);
    238286
    239287
     
    265313#define ONIGENC_FLAG_UNICODE    1U
    266314
    267 
    268 #define onig_enc_len(enc,p,end)        ONIGENC_MBC_ENC_LEN(enc,p)
     315#define onig_enc_len(enc,p,e)          ONIGENC_MBC_ENC_LEN(enc, p, e)
    269316
    270317#define ONIGENC_IS_UNDEF(enc)          ((enc) == ONIG_ENCODING_UNDEF)
    271318#define ONIGENC_IS_SINGLEBYTE(enc)     (ONIGENC_MBC_MAXLEN(enc) == 1)
    272 #define ONIGENC_IS_MBC_HEAD(enc,p)     (ONIGENC_MBC_ENC_LEN(enc,p) != 1)
     319#define ONIGENC_IS_MBC_HEAD(enc,p,e)   (ONIGENC_MBC_ENC_LEN(enc,p,e) != 1)
    273320#define ONIGENC_IS_MBC_ASCII(p)           (*(p)   < 128)
    274321#define ONIGENC_IS_CODE_ASCII(code)       ((code) < 128)
     
    277324#define ONIGENC_IS_MBC_ASCII_WORD(enc,s,end) \
    278325   onigenc_ascii_is_code_ctype( \
    279         ONIGENC_MBC_TO_CODE(enc,s,end),ONIGENC_CTYPE_WORD)
     326        ONIGENC_MBC_TO_CODE(enc,s,end),ONIGENC_CTYPE_WORD,enc)
    280327#define ONIGENC_IS_UNICODE(enc)        ((enc)->flags & ONIGENC_FLAG_UNICODE)
    281328
     
    284331
    285332#define ONIGENC_MBC_CASE_FOLD(enc,flag,pp,end,buf) \
    286   (enc)->mbc_case_fold(flag,(const OnigUChar** )pp,end,buf)
     333  (enc)->mbc_case_fold(flag,(const OnigUChar** )pp,end,buf,enc)
    287334#define ONIGENC_IS_ALLOWED_REVERSE_MATCH(enc,s,end) \
    288         (enc)->is_allowed_reverse_match(s,end)
    289 #define ONIGENC_LEFT_ADJUST_CHAR_HEAD(enc,start,s) \
    290         (enc)->left_adjust_char_head(start, s)
     335        (enc)->is_allowed_reverse_match(s,end,enc)
     336#define ONIGENC_LEFT_ADJUST_CHAR_HEAD(enc,start,s,end) \
     337        (enc)->left_adjust_char_head(start, s, end, enc)
    291338#define ONIGENC_APPLY_ALL_CASE_FOLD(enc,case_fold_flag,f,arg) \
    292         (enc)->apply_all_case_fold(case_fold_flag,f,arg)
     339        (enc)->apply_all_case_fold(case_fold_flag,f,arg,enc)
    293340#define ONIGENC_GET_CASE_FOLD_CODES_BY_STR(enc,case_fold_flag,p,end,acs) \
    294        (enc)->get_case_fold_codes_by_str(case_fold_flag,p,end,acs)
    295 #define ONIGENC_STEP_BACK(enc,start,s,n) \
    296         onigenc_step_back((enc),(start),(s),(n))
    297 
    298 #define ONIGENC_MBC_ENC_LEN(enc,p)             (enc)->mbc_enc_len(p)
     341       (enc)->get_case_fold_codes_by_str(case_fold_flag,p,end,acs,enc)
     342#define ONIGENC_STEP_BACK(enc,start,s,end,n) \
     343        onigenc_step_back((enc),(start),(s),(end),(n))
     344
     345#define ONIGENC_CONSTRUCT_MBCLEN_CHARFOUND(n)   (n)
     346#define ONIGENC_MBCLEN_CHARFOUND_P(r)           (0 < (r))
     347#define ONIGENC_MBCLEN_CHARFOUND_LEN(r)         (r)
     348
     349#define ONIGENC_CONSTRUCT_MBCLEN_INVALID()      (-1)
     350#define ONIGENC_MBCLEN_INVALID_P(r)             ((r) == -1)
     351
     352#define ONIGENC_CONSTRUCT_MBCLEN_NEEDMORE(n)    (-1-(n))
     353#define ONIGENC_MBCLEN_NEEDMORE_P(r)            ((r) < -1)
     354#define ONIGENC_MBCLEN_NEEDMORE_LEN(r)          (-1-(r))
     355
     356#define ONIGENC_PRECISE_MBC_ENC_LEN(enc,p,e)   (enc)->precise_mbc_enc_len(p,e,enc)
     357
     358ONIG_EXTERN
     359int onigenc_mbclen_approximate(const OnigUChar* p,const OnigUChar* e, const struct OnigEncodingTypeST* enc);
     360
     361#define ONIGENC_MBC_ENC_LEN(enc,p,e)           onigenc_mbclen_approximate(p,e,enc)
    299362#define ONIGENC_MBC_MAXLEN(enc)               ((enc)->max_enc_len)
    300363#define ONIGENC_MBC_MAXLEN_DIST(enc)           ONIGENC_MBC_MAXLEN(enc)
    301364#define ONIGENC_MBC_MINLEN(enc)               ((enc)->min_enc_len)
    302 #define ONIGENC_IS_MBC_NEWLINE(enc,p,end)      (enc)->is_mbc_newline((p),(end))
    303 #define ONIGENC_MBC_TO_CODE(enc,p,end)         (enc)->mbc_to_code((p),(end))
    304 #define ONIGENC_CODE_TO_MBCLEN(enc,code)       (enc)->code_to_mbclen(code)
    305 #define ONIGENC_CODE_TO_MBC(enc,code,buf)      (enc)->code_to_mbc(code,buf)
     365#define ONIGENC_IS_MBC_NEWLINE(enc,p,end)      (enc)->is_mbc_newline((p),(end),enc)
     366#define ONIGENC_MBC_TO_CODE(enc,p,end)         (enc)->mbc_to_code((p),(end),enc)
     367#define ONIGENC_CODE_TO_MBCLEN(enc,code)       (enc)->code_to_mbclen(code,enc)
     368#define ONIGENC_CODE_TO_MBC(enc,code,buf)      (enc)->code_to_mbc(code,buf,enc)
    306369#define ONIGENC_PROPERTY_NAME_TO_CTYPE(enc,p,end) \
    307370  (enc)->property_name_to_ctype(enc,p,end)
    308371
    309 #define ONIGENC_IS_CODE_CTYPE(enc,code,ctype)  (enc)->is_code_ctype(code,ctype)
     372#define ONIGENC_IS_CODE_CTYPE(enc,code,ctype)  (enc)->is_code_ctype(code,ctype,enc)
    310373
    311374#define ONIGENC_IS_CODE_NEWLINE(enc,code) \
     
    339402
    340403#define ONIGENC_GET_CTYPE_CODE_RANGE(enc,ctype,sbout,ranges) \
    341         (enc)->get_ctype_code_range(ctype,sbout,ranges)
    342 
    343 ONIG_EXTERN
    344 OnigUChar* onigenc_step_back P_((OnigEncoding enc, const OnigUChar* start, const OnigUChar* s, int n));
     404        (enc)->get_ctype_code_range(ctype,sbout,ranges,enc)
     405
     406ONIG_EXTERN
     407OnigUChar* onigenc_step_back(OnigEncoding enc, const OnigUChar* start, const OnigUChar* s, const OnigUChar* end, int n);
    345408
    346409
    347410/* encoding API */
    348411ONIG_EXTERN
    349 int onigenc_init P_((void));
    350 ONIG_EXTERN
    351 int onigenc_set_default_encoding P_((OnigEncoding enc));
    352 ONIG_EXTERN
    353 OnigEncoding onigenc_get_default_encoding P_((void));
    354 ONIG_EXTERN
    355 void  onigenc_set_default_caseconv_table P_((const OnigUChar* table));
    356 ONIG_EXTERN
    357 OnigUChar* onigenc_get_right_adjust_char_head_with_prev P_((OnigEncoding enc, const OnigUChar* start, const OnigUChar* s, const OnigUChar** prev));
    358 ONIG_EXTERN
    359 OnigUChar* onigenc_get_prev_char_head P_((OnigEncoding enc, const OnigUChar* start, const OnigUChar* s));
    360 ONIG_EXTERN
    361 OnigUChar* onigenc_get_left_adjust_char_head P_((OnigEncoding enc, const OnigUChar* start, const OnigUChar* s));
    362 ONIG_EXTERN
    363 OnigUChar* onigenc_get_right_adjust_char_head P_((OnigEncoding enc, const OnigUChar* start, const OnigUChar* s));
    364 ONIG_EXTERN
    365 int onigenc_strlen P_((OnigEncoding enc, const OnigUChar* p, const OnigUChar* end));
    366 ONIG_EXTERN
    367 int onigenc_strlen_null P_((OnigEncoding enc, const OnigUChar* p));
    368 ONIG_EXTERN
    369 int onigenc_str_bytelen_null P_((OnigEncoding enc, const OnigUChar* p));
     412int onigenc_init(void);
     413ONIG_EXTERN
     414int onigenc_set_default_encoding(OnigEncoding enc);
     415ONIG_EXTERN
     416OnigEncoding onigenc_get_default_encoding(void);
     417ONIG_EXTERN
     418OnigUChar* onigenc_get_right_adjust_char_head_with_prev(OnigEncoding enc, const OnigUChar* start, const OnigUChar* s, const OnigUChar* end, const OnigUChar** prev);
     419ONIG_EXTERN
     420OnigUChar* onigenc_get_prev_char_head(OnigEncoding enc, const OnigUChar* start, const OnigUChar* s, const OnigUChar* end);
     421ONIG_EXTERN
     422OnigUChar* onigenc_get_left_adjust_char_head(OnigEncoding enc, const OnigUChar* start, const OnigUChar* s, const OnigUChar* end);
     423ONIG_EXTERN
     424OnigUChar* onigenc_get_right_adjust_char_head(OnigEncoding enc, const OnigUChar* start, const OnigUChar* s, const OnigUChar* end);
     425ONIG_EXTERN
     426int onigenc_strlen(OnigEncoding enc, const OnigUChar* p, const OnigUChar* end);
     427ONIG_EXTERN
     428int onigenc_strlen_null(OnigEncoding enc, const OnigUChar* p);
     429ONIG_EXTERN
     430int onigenc_str_bytelen_null(OnigEncoding enc, const OnigUChar* p);
    370431
    371432
     
    375436/* config parameters */
    376437#define ONIG_NREGION                          10
     438#define ONIG_MAX_CAPTURE_GROUP_NUM         32767
    377439#define ONIG_MAX_BACKREF_NUM                1000
    378 #define ONIG_MAX_CAPTURE_GROUP_NUM         32767
    379440#define ONIG_MAX_REPEAT_NUM               100000
    380441#define ONIG_MAX_MULTI_BYTE_RANGES_NUM     10000
     
    401462#define ONIG_OPTION_NOTBOL               (ONIG_OPTION_CAPTURE_GROUP << 1)
    402463#define ONIG_OPTION_NOTEOL               (ONIG_OPTION_NOTBOL << 1)
    403 #define ONIG_OPTION_POSIX_REGION         (ONIG_OPTION_NOTEOL << 1)
     464#define ONIG_OPTION_NOTBOS               (ONIG_OPTION_NOTEOL << 1)
     465#define ONIG_OPTION_NOTEOS               (ONIG_OPTION_NOTBOS << 1)
    404466/* options (ctype range) */
    405 #define ONIG_OPTION_ASCII_RANGE          (ONIG_OPTION_POSIX_REGION << 1)
     467#define ONIG_OPTION_ASCII_RANGE          (ONIG_OPTION_NOTEOS << 1)
    406468#define ONIG_OPTION_POSIX_BRACKET_ALL_RANGE (ONIG_OPTION_ASCII_RANGE << 1)
    407469#define ONIG_OPTION_WORD_BOUND_ALL_RANGE    (ONIG_OPTION_POSIX_BRACKET_ALL_RANGE << 1)
    408470/* options (newline) */
    409471#define ONIG_OPTION_NEWLINE_CRLF         (ONIG_OPTION_WORD_BOUND_ALL_RANGE << 1)
    410 #define ONIG_OPTION_NOTBOS               (ONIG_OPTION_NEWLINE_CRLF << 1)
    411 #define ONIG_OPTION_NOTEOS               (ONIG_OPTION_NOTBOS << 1)
    412 #define ONIG_OPTION_MAXBIT               ONIG_OPTION_NOTEOS  /* limit */
     472#define ONIG_OPTION_MAXBIT               ONIG_OPTION_NEWLINE_CRLF  /* limit */
    413473
    414474#define ONIG_OPTION_ON(options,regopt)      ((options) |= (regopt))
     
    425485} OnigSyntaxType;
    426486
    427 ONIG_EXTERN OnigSyntaxType OnigSyntaxASIS;
    428 ONIG_EXTERN OnigSyntaxType OnigSyntaxPosixBasic;
    429 ONIG_EXTERN OnigSyntaxType OnigSyntaxPosixExtended;
    430 ONIG_EXTERN OnigSyntaxType OnigSyntaxEmacs;
    431 ONIG_EXTERN OnigSyntaxType OnigSyntaxGrep;
    432 ONIG_EXTERN OnigSyntaxType OnigSyntaxGnuRegex;
    433 ONIG_EXTERN OnigSyntaxType OnigSyntaxJava;
    434 ONIG_EXTERN OnigSyntaxType OnigSyntaxPerl58;
    435 ONIG_EXTERN OnigSyntaxType OnigSyntaxPerl58_NG;
    436 ONIG_EXTERN OnigSyntaxType OnigSyntaxPerl;
    437 ONIG_EXTERN OnigSyntaxType OnigSyntaxRuby;
    438 ONIG_EXTERN OnigSyntaxType OnigSyntaxPython;
     487ONIG_EXTERN const OnigSyntaxType OnigSyntaxASIS;
     488ONIG_EXTERN const OnigSyntaxType OnigSyntaxPosixBasic;
     489ONIG_EXTERN const OnigSyntaxType OnigSyntaxPosixExtended;
     490ONIG_EXTERN const OnigSyntaxType OnigSyntaxEmacs;
     491ONIG_EXTERN const OnigSyntaxType OnigSyntaxGrep;
     492ONIG_EXTERN const OnigSyntaxType OnigSyntaxGnuRegex;
     493ONIG_EXTERN const OnigSyntaxType OnigSyntaxJava;
     494ONIG_EXTERN const OnigSyntaxType OnigSyntaxPerl58;
     495ONIG_EXTERN const OnigSyntaxType OnigSyntaxPerl58_NG;
     496ONIG_EXTERN const OnigSyntaxType OnigSyntaxPerl;
     497ONIG_EXTERN const OnigSyntaxType OnigSyntaxRuby;
     498ONIG_EXTERN const OnigSyntaxType OnigSyntaxPython;
    439499
    440500/* predefined syntaxes (see regsyntax.c) */
     
    453513
    454514/* default syntax */
    455 ONIG_EXTERN OnigSyntaxType*   OnigDefaultSyntax;
     515ONIG_EXTERN const OnigSyntaxType*   OnigDefaultSyntax;
    456516#define ONIG_SYNTAX_DEFAULT   OnigDefaultSyntax
    457517
     
    488548#define ONIG_SYN_OP_ESC_X_HEX2                  (1U<<29)  /* \xHH */
    489549#define ONIG_SYN_OP_ESC_X_BRACE_HEX8            (1U<<30)  /* \x{7HHHHHHH} */
    490 #define ONIG_SYN_OP_ESC_O_BRACE_OCTAL           (1U<<31)  /* \o{OOO} */ /* NOTIMPL */
     550#define ONIG_SYN_OP_ESC_O_BRACE_OCTAL           (1U<<31)  /* \o{OOO} */
    491551
    492552#define ONIG_SYN_OP2_ESC_CAPITAL_Q_QUOTE        (1U<<0)  /* \Q...\E */
     
    512572#define ONIG_SYN_OP2_INEFFECTIVE_ESCAPE         (1U<<20) /* \ */
    513573#define ONIG_SYN_OP2_ESC_CAPITAL_R_LINEBREAK    (1U<<21) /* \R as (?>\x0D\x0A|[\x0A-\x0D\x{85}\x{2028}\x{2029}]) */
    514 #define ONIG_SYN_OP2_ESC_CAPITAL_X_EXTENDED_GRAPHEME_CLUSTER (1U<<22) /* \X as (?>\P{M}\p{M}*) */
     574#define ONIG_SYN_OP2_ESC_CAPITAL_X_EXTENDED_GRAPHEME_CLUSTER (1U<<22) /* \X */
    515575#define ONIG_SYN_OP2_ESC_V_VERTICAL_WHITESPACE   (1U<<23) /* \v, \V -- Perl */ /* NOTIMPL */
    516576#define ONIG_SYN_OP2_ESC_H_HORIZONTAL_WHITESPACE (1U<<24) /* \h, \H -- Perl */ /* NOTIMPL */
     
    521581#define ONIG_SYN_OP2_QMARK_LPAREN_CONDITION     (1U<<29) /* (?(cond)yes...|no...) */
    522582#define ONIG_SYN_OP2_QMARK_CAPITAL_P_NAMED_GROUP (1U<<30) /* (?P<name>...), (?P=name), (?P>name) -- Python/PCRE */
    523 #define ONIG_SYN_OP2_OPTION_JAVA                (1U<<31) /* (?idmsux), (?-idmsux) */ /* NOTIMPL */
     583#define ONIG_SYN_OP2_QMARK_TILDE_ABSENT         (1U<<31) /* (?~...) */
     584/* #define ONIG_SYN_OP2_OPTION_JAVA                (1U<<xx) */ /* (?idmsux), (?-idmsux) */ /* NOTIMPL */
    524585
    525586/* syntax (behavior) */
     
    536597#define ONIG_SYN_FIXED_INTERVAL_IS_GREEDY_ONLY   (1U<<9)  /* a{n}?=(?:a{n})? */
    537598#define ONIG_SYN_ALLOW_MULTIPLEX_DEFINITION_NAME_CALL (1U<<10)  /* (?<x>)(?<x>)(?&x) */
     599#define ONIG_SYN_USE_LEFT_MOST_NAMED_GROUP       (1U<<11) /* (?<x>)(?<x>)\k<x> */
    538600
    539601/* syntax (behavior) in char class [...] */
     
    545607#define ONIG_SYN_WARN_CC_OP_NOT_ESCAPED          (1U<<24) /* [,-,] */
    546608#define ONIG_SYN_WARN_REDUNDANT_NESTED_REPEAT    (1U<<25) /* (?:a*)+ */
     609#define ONIG_SYN_WARN_CC_DUP                     (1U<<26) /* [aa] */
    547610
    548611/* meta character specifiers (onig_set_meta_char()) */
     
    571634#define ONIGERR_UNEXPECTED_BYTECODE                           -14
    572635#define ONIGERR_MATCH_STACK_LIMIT_OVER                        -15
     636#define ONIGERR_PARSE_DEPTH_LIMIT_OVER                        -16
    573637#define ONIGERR_DEFAULT_ENCODING_IS_NOT_SET                   -21
    574638#define ONIGERR_SPECIFIED_ENCODING_CANT_CONVERT_TO_WIDE_CHAR  -22
     
    610674#define ONIGERR_INVALID_BACKREF                              -208
    611675#define ONIGERR_NUMBERED_BACKREF_OR_CALL_NOT_ALLOWED         -209
    612 #define ONIGERR_TOO_SHORT_DIGITS                             -210
     676#define ONIGERR_TOO_MANY_CAPTURE_GROUPS                      -210
     677#define ONIGERR_TOO_SHORT_DIGITS                             -211
    613678#define ONIGERR_TOO_LONG_WIDE_CHAR_VALUE                     -212
    614679#define ONIGERR_EMPTY_GROUP_NAME                             -214
     
    622687#define ONIGERR_GROUP_NUMBER_OVER_FOR_CAPTURE_HISTORY        -222
    623688#define ONIGERR_INVALID_CHAR_PROPERTY_NAME                   -223
    624 #define ONIGERR_TOO_MANY_CAPTURE_GROUPS                      -224
    625689#define ONIGERR_INVALID_CODE_POINT_VALUE                     -400
    626690#define ONIGERR_INVALID_WIDE_CHAR_VALUE                      -400
     
    630694
    631695/* errors related to thread */
    632 #define ONIGERR_OVER_THREAD_PASS_LIMIT_COUNT                -1001
     696/* #define ONIGERR_OVER_THREAD_PASS_LIMIT_COUNT                -1001 */
    633697
    634698
     
    679743} OnigRepeatRange;
    680744
    681 typedef void (*OnigWarnFunc) P_((const char* s));
    682 extern void onig_null_warn P_((const char* s));
     745typedef void (*OnigWarnFunc)(const char* s);
     746extern void onig_null_warn(const char* s);
    683747#define ONIG_NULL_WARN       onig_null_warn
    684748
    685749#define ONIG_CHAR_TABLE_SIZE   256
    686 
    687 /* regex_t state */
    688 #define ONIG_STATE_NORMAL              0
    689 #define ONIG_STATE_SEARCHING           1
    690 #define ONIG_STATE_COMPILING          -1
    691 #define ONIG_STATE_MODIFY             -2
    692 
    693 #define ONIG_STATE(reg) \
    694   ((reg)->state > 0 ? ONIG_STATE_SEARCHING : (reg)->state)
    695750
    696751typedef struct re_pattern_buffer {
     
    700755  unsigned int alloc;       /* allocated space for p */
    701756
    702   int state;                     /* normal, searching, compiling */
    703757  int num_mem;                   /* used memory(...) num counted from 1 */
    704758  int num_repeat;                /* OP_REPEAT/OP_REPEAT_NG id-counter */
     
    711765  int stack_pop_level;
    712766  int repeat_range_alloc;
     767
     768  OnigOptionType    options;
     769
    713770  OnigRepeatRange* repeat_range;
    714771
    715772  OnigEncoding      enc;
    716   OnigOptionType    options;
    717   OnigSyntaxType*   syntax;
     773  const OnigSyntaxType* syntax;
     774  void*             name_table;
    718775  OnigCaseFoldType  case_fold_flag;
    719   void*             name_table;
    720776
    721777  /* optimization info (string search, char-map and anchors) */
     
    741797
    742798#ifndef ONIG_ESCAPE_REGEX_T_COLLISION
    743   typedef OnigRegexType  regex_t;
     799typedef OnigRegexType  regex_t;
    744800#endif
    745801
     
    749805  OnigEncoding    pattern_enc;
    750806  OnigEncoding    target_enc;
    751   OnigSyntaxType* syntax;
     807  const OnigSyntaxType* syntax;
    752808  OnigOptionType  option;
    753809  OnigCaseFoldType   case_fold_flag;
     
    756812/* Oniguruma Native API */
    757813ONIG_EXTERN
    758 int onig_init P_((void));
    759 ONIG_EXTERN
    760 int onig_error_code_to_str PV_((OnigUChar* s, OnigPosition err_code, ...));
    761 ONIG_EXTERN
    762 void onig_set_warn_func P_((OnigWarnFunc f));
    763 ONIG_EXTERN
    764 void onig_set_verb_warn_func P_((OnigWarnFunc f));
    765 ONIG_EXTERN
    766 int onig_new P_((OnigRegex*, const OnigUChar* pattern, const OnigUChar* pattern_end, OnigOptionType option, OnigEncoding enc, OnigSyntaxType* syntax, OnigErrorInfo* einfo));
    767 ONIG_EXTERN
    768 int onig_reg_init P_((OnigRegex reg, OnigOptionType option, OnigCaseFoldType case_fold_flag, OnigEncoding enc, OnigSyntaxType* syntax));
    769 ONIG_EXTERN
    770 int onig_new_without_alloc P_((OnigRegex, const OnigUChar* pattern, const OnigUChar* pattern_end, OnigOptionType option, OnigEncoding enc, OnigSyntaxType* syntax, OnigErrorInfo* einfo));
    771 ONIG_EXTERN
    772 int onig_new_deluxe P_((OnigRegex* reg, const OnigUChar* pattern, const OnigUChar* pattern_end, OnigCompileInfo* ci, OnigErrorInfo* einfo));
    773 ONIG_EXTERN
    774 void onig_free P_((OnigRegex));
    775 ONIG_EXTERN
    776 void onig_free_body P_((OnigRegex));
    777 ONIG_EXTERN
    778 int onig_recompile P_((OnigRegex, const OnigUChar* pattern, const OnigUChar* pattern_end, OnigOptionType option, OnigEncoding enc, OnigSyntaxType* syntax, OnigErrorInfo* einfo));
    779 ONIG_EXTERN
    780 int onig_recompile_deluxe P_((OnigRegex reg, const OnigUChar* pattern, const OnigUChar* pattern_end, OnigCompileInfo* ci, OnigErrorInfo* einfo));
    781 ONIG_EXTERN
    782 OnigPosition onig_search P_((OnigRegex, const OnigUChar* str, const OnigUChar* end, const OnigUChar* start, const OnigUChar* range, OnigRegion* region, OnigOptionType option));
    783 ONIG_EXTERN
    784 OnigPosition onig_search_gpos P_((OnigRegex, const OnigUChar* str, const OnigUChar* end, const OnigUChar* global_pos, const OnigUChar* start, const OnigUChar* range, OnigRegion* region, OnigOptionType option));
    785 ONIG_EXTERN
    786 OnigPosition onig_match P_((OnigRegex, const OnigUChar* str, const OnigUChar* end, const OnigUChar* at, OnigRegion* region, OnigOptionType option));
    787 ONIG_EXTERN
    788 OnigRegion* onig_region_new P_((void));
    789 ONIG_EXTERN
    790 void onig_region_init P_((OnigRegion* region));
    791 ONIG_EXTERN
    792 void onig_region_free P_((OnigRegion* region, int free_self));
    793 ONIG_EXTERN
    794 void onig_region_copy P_((OnigRegion* to, OnigRegion* from));
    795 ONIG_EXTERN
    796 void onig_region_clear P_((OnigRegion* region));
    797 ONIG_EXTERN
    798 int onig_region_resize P_((OnigRegion* region, int n));
    799 ONIG_EXTERN
    800 int onig_region_set P_((OnigRegion* region, int at, int beg, int end));
    801 ONIG_EXTERN
    802 int onig_name_to_group_numbers P_((OnigRegex reg, const OnigUChar* name, const OnigUChar* name_end, int** nums));
    803 ONIG_EXTERN
    804 int onig_name_to_backref_number P_((OnigRegex reg, const OnigUChar* name, const OnigUChar* name_end, OnigRegion *region));
    805 ONIG_EXTERN
    806 int onig_foreach_name P_((OnigRegex reg, int (*func)(const OnigUChar*, const OnigUChar*,int,int*,OnigRegex,void*), void* arg));
    807 ONIG_EXTERN
    808 int onig_number_of_names P_((OnigRegex reg));
    809 ONIG_EXTERN
    810 int onig_number_of_captures P_((OnigRegex reg));
    811 ONIG_EXTERN
    812 int onig_number_of_capture_histories P_((OnigRegex reg));
    813 ONIG_EXTERN
    814 OnigCaptureTreeNode* onig_get_capture_tree P_((OnigRegion* region));
    815 ONIG_EXTERN
    816 int onig_capture_tree_traverse P_((OnigRegion* region, int at, int(*callback_func)(int,OnigPosition,OnigPosition,int,int,void*), void* arg));
    817 ONIG_EXTERN
    818 int onig_noname_group_capture_is_active P_((OnigRegex reg));
    819 ONIG_EXTERN
    820 OnigEncoding onig_get_encoding P_((OnigRegex reg));
    821 ONIG_EXTERN
    822 OnigOptionType onig_get_options P_((OnigRegex reg));
    823 ONIG_EXTERN
    824 OnigCaseFoldType onig_get_case_fold_flag P_((OnigRegex reg));
    825 ONIG_EXTERN
    826 OnigSyntaxType* onig_get_syntax P_((OnigRegex reg));
    827 ONIG_EXTERN
    828 int onig_set_default_syntax P_((OnigSyntaxType* syntax));
    829 ONIG_EXTERN
    830 void onig_copy_syntax P_((OnigSyntaxType* to, const OnigSyntaxType* from));
    831 ONIG_EXTERN
    832 unsigned int onig_get_syntax_op P_((OnigSyntaxType* syntax));
    833 ONIG_EXTERN
    834 unsigned int onig_get_syntax_op2 P_((OnigSyntaxType* syntax));
    835 ONIG_EXTERN
    836 unsigned int onig_get_syntax_behavior P_((OnigSyntaxType* syntax));
    837 ONIG_EXTERN
    838 OnigOptionType onig_get_syntax_options P_((OnigSyntaxType* syntax));
    839 ONIG_EXTERN
    840 void onig_set_syntax_op P_((OnigSyntaxType* syntax, unsigned int op));
    841 ONIG_EXTERN
    842 void onig_set_syntax_op2 P_((OnigSyntaxType* syntax, unsigned int op2));
    843 ONIG_EXTERN
    844 void onig_set_syntax_behavior P_((OnigSyntaxType* syntax, unsigned int behavior));
    845 ONIG_EXTERN
    846 void onig_set_syntax_options P_((OnigSyntaxType* syntax, OnigOptionType options));
    847 ONIG_EXTERN
    848 int onig_set_meta_char P_((OnigSyntaxType* syntax, unsigned int what, OnigCodePoint code));
    849 ONIG_EXTERN
    850 void onig_copy_encoding P_((OnigEncoding to, OnigEncoding from));
    851 ONIG_EXTERN
    852 OnigCaseFoldType onig_get_default_case_fold_flag P_((void));
    853 ONIG_EXTERN
    854 int onig_set_default_case_fold_flag P_((OnigCaseFoldType case_fold_flag));
    855 ONIG_EXTERN
    856 unsigned int onig_get_match_stack_limit_size P_((void));
    857 ONIG_EXTERN
    858 int onig_set_match_stack_limit_size P_((unsigned int size));
    859 ONIG_EXTERN
    860 int onig_end P_((void));
    861 ONIG_EXTERN
    862 const char* onig_version P_((void));
    863 ONIG_EXTERN
    864 const char* onig_copyright P_((void));
     814int onig_initialize(OnigEncoding encodings[], int n);
     815ONIG_EXTERN
     816int onig_init(void);
     817ONIG_EXTERN
     818int onig_error_code_to_str(OnigUChar* s, OnigPosition err_code, ...);
     819ONIG_EXTERN
     820void onig_set_warn_func(OnigWarnFunc f);
     821ONIG_EXTERN
     822void onig_set_verb_warn_func(OnigWarnFunc f);
     823ONIG_EXTERN
     824int onig_new(OnigRegex*, const OnigUChar* pattern, const OnigUChar* pattern_end, OnigOptionType option, OnigEncoding enc, const OnigSyntaxType* syntax, OnigErrorInfo* einfo);
     825ONIG_EXTERN
     826int onig_reg_init(OnigRegex reg, OnigOptionType option, OnigCaseFoldType case_fold_flag, OnigEncoding enc, const OnigSyntaxType* syntax);
     827ONIG_EXTERN
     828int onig_new_without_alloc(OnigRegex, const OnigUChar* pattern, const OnigUChar* pattern_end, OnigOptionType option, OnigEncoding enc, const OnigSyntaxType* syntax, OnigErrorInfo* einfo);
     829ONIG_EXTERN
     830int onig_new_deluxe(OnigRegex* reg, const OnigUChar* pattern, const OnigUChar* pattern_end, OnigCompileInfo* ci, OnigErrorInfo* einfo);
     831ONIG_EXTERN
     832void onig_free(OnigRegex);
     833ONIG_EXTERN
     834void onig_free_body(OnigRegex);
     835ONIG_EXTERN
     836OnigPosition onig_scan(OnigRegex reg, const OnigUChar* str, const OnigUChar* end, OnigRegion* region, OnigOptionType option, int (*scan_callback)(OnigPosition, OnigPosition, OnigRegion*, void*), void* callback_arg);
     837ONIG_EXTERN
     838OnigPosition onig_search(OnigRegex, const OnigUChar* str, const OnigUChar* end, const OnigUChar* start, const OnigUChar* range, OnigRegion* region, OnigOptionType option);
     839ONIG_EXTERN
     840OnigPosition onig_search_gpos(OnigRegex, const OnigUChar* str, const OnigUChar* end, const OnigUChar* global_pos, const OnigUChar* start, const OnigUChar* range, OnigRegion* region, OnigOptionType option);
     841ONIG_EXTERN
     842OnigPosition onig_match(OnigRegex, const OnigUChar* str, const OnigUChar* end, const OnigUChar* at, OnigRegion* region, OnigOptionType option);
     843ONIG_EXTERN
     844OnigRegion* onig_region_new(void);
     845ONIG_EXTERN
     846void onig_region_init(OnigRegion* region);
     847ONIG_EXTERN
     848void onig_region_free(OnigRegion* region, int free_self);
     849ONIG_EXTERN
     850void onig_region_copy(OnigRegion* to, const OnigRegion* from);
     851ONIG_EXTERN
     852void onig_region_clear(OnigRegion* region);
     853ONIG_EXTERN
     854int onig_region_resize(OnigRegion* region, int n);
     855ONIG_EXTERN
     856int onig_region_set(OnigRegion* region, int at, int beg, int end);
     857ONIG_EXTERN
     858int onig_name_to_group_numbers(OnigRegex reg, const OnigUChar* name, const OnigUChar* name_end, int** nums);
     859ONIG_EXTERN
     860int onig_name_to_backref_number(OnigRegex reg, const OnigUChar* name, const OnigUChar* name_end, const OnigRegion *region);
     861ONIG_EXTERN
     862int onig_foreach_name(OnigRegex reg, int (*func)(const OnigUChar*, const OnigUChar*,int,int*,OnigRegex,void*), void* arg);
     863ONIG_EXTERN
     864int onig_number_of_names(const OnigRegexType *reg);
     865ONIG_EXTERN
     866int onig_number_of_captures(const OnigRegexType *reg);
     867ONIG_EXTERN
     868int onig_number_of_capture_histories(const OnigRegexType *reg);
     869ONIG_EXTERN
     870OnigCaptureTreeNode* onig_get_capture_tree(OnigRegion* region);
     871ONIG_EXTERN
     872int onig_capture_tree_traverse(OnigRegion* region, int at, int(*callback_func)(int,OnigPosition,OnigPosition,int,int,void*), void* arg);
     873ONIG_EXTERN
     874int onig_noname_group_capture_is_active(const OnigRegexType *reg);
     875ONIG_EXTERN
     876OnigEncoding onig_get_encoding(const OnigRegexType *reg);
     877ONIG_EXTERN
     878OnigOptionType onig_get_options(const OnigRegexType *reg);
     879ONIG_EXTERN
     880OnigCaseFoldType onig_get_case_fold_flag(const OnigRegexType *reg);
     881ONIG_EXTERN
     882const OnigSyntaxType* onig_get_syntax(const OnigRegexType *reg);
     883ONIG_EXTERN
     884int onig_set_default_syntax(const OnigSyntaxType* syntax);
     885ONIG_EXTERN
     886void onig_copy_syntax(OnigSyntaxType* to, const OnigSyntaxType* from);
     887ONIG_EXTERN
     888unsigned int onig_get_syntax_op(const OnigSyntaxType* syntax);
     889ONIG_EXTERN
     890unsigned int onig_get_syntax_op2(const OnigSyntaxType* syntax);
     891ONIG_EXTERN
     892unsigned int onig_get_syntax_behavior(const OnigSyntaxType* syntax);
     893ONIG_EXTERN
     894OnigOptionType onig_get_syntax_options(const OnigSyntaxType* syntax);
     895ONIG_EXTERN
     896void onig_set_syntax_op(OnigSyntaxType* syntax, unsigned int op);
     897ONIG_EXTERN
     898void onig_set_syntax_op2(OnigSyntaxType* syntax, unsigned int op2);
     899ONIG_EXTERN
     900void onig_set_syntax_behavior(OnigSyntaxType* syntax, unsigned int behavior);
     901ONIG_EXTERN
     902void onig_set_syntax_options(OnigSyntaxType* syntax, OnigOptionType options);
     903ONIG_EXTERN
     904int onig_set_meta_char(OnigSyntaxType* syntax, unsigned int what, OnigCodePoint code);
     905ONIG_EXTERN
     906void onig_copy_encoding(OnigEncodingType *to, OnigEncoding from);
     907ONIG_EXTERN
     908OnigCaseFoldType onig_get_default_case_fold_flag(void);
     909ONIG_EXTERN
     910int onig_set_default_case_fold_flag(OnigCaseFoldType case_fold_flag);
     911ONIG_EXTERN
     912unsigned int onig_get_match_stack_limit_size(void);
     913ONIG_EXTERN
     914int onig_set_match_stack_limit_size(unsigned int size);
     915ONIG_EXTERN
     916unsigned int onig_get_parse_depth_limit(void);
     917ONIG_EXTERN
     918int onig_set_parse_depth_limit(unsigned int depth);
     919ONIG_EXTERN
     920int onig_end(void);
     921ONIG_EXTERN
     922const char* onig_version(void);
     923ONIG_EXTERN
     924const char* onig_copyright(void);
     925
     926RUBY_SYMBOL_EXPORT_END
    865927
    866928#ifdef __cplusplus
     929# if 0
     930{ /* satisfy cc-mode */
     931# endif
    867932}
    868933#endif
    869934
    870 #endif /* ONIGURUMA_H */
     935#endif /* ONIGMO_H */
  • EcnlProtoTool/trunk/onigmo-6.1.3/src/onigmognu.h

    r321 r331  
    1 #ifndef ONIGGNU_H
    2 #define ONIGGNU_H
     1#ifndef ONIGMOGNU_H
     2#define ONIGMOGNU_H
    33/**********************************************************************
    4   oniggnu.h - Oniguruma (regular expression library)
     4  onigmognu.h - Onigmo (Oniguruma-mod) (regular expression library)
    55**********************************************************************/
    66/*-
    77 * Copyright (c) 2002-2005  K.Kosako  <sndgk393 AT ybb DOT ne DOT jp>
     8 * Copyright (c) 2011-2016  K.Takata  <kentkt AT csc DOT jp>
    89 * All rights reserved.
    910 *
     
    3031 */
    3132
    32 #include "oniguruma.h"
     33#include "onigmo.h"
    3334
    3435#ifdef __cplusplus
     
    5960
    6061ONIG_EXTERN
    61 void re_mbcinit P_((int));
     62void re_mbcinit(int);
    6263ONIG_EXTERN
    63 int re_compile_pattern P_((const char*, int, struct re_pattern_buffer*, char* err_buf));
     64int re_compile_pattern(const char*, int, struct re_pattern_buffer*, char* err_buf);
    6465ONIG_EXTERN
    65 int re_recompile_pattern P_((const char*, int, struct re_pattern_buffer*, char* err_buf));
     66int re_recompile_pattern(const char*, int, struct re_pattern_buffer*, char* err_buf);
    6667ONIG_EXTERN
    67 void re_free_pattern P_((struct re_pattern_buffer*));
     68void re_free_pattern(struct re_pattern_buffer*);
    6869ONIG_EXTERN
    69 int re_adjust_startpos P_((struct re_pattern_buffer*, const char*, int, int, int));
     70int re_adjust_startpos(struct re_pattern_buffer*, const char*, int, int, int);
    7071ONIG_EXTERN
    71 int re_search P_((struct re_pattern_buffer*, const char*, int, int, int, struct re_registers*));
     72int re_search(struct re_pattern_buffer*, const char*, int, int, int, struct re_registers*);
    7273ONIG_EXTERN
    73 int re_match P_((struct re_pattern_buffer*, const char *, int, int, struct re_registers*));
     74int re_match(struct re_pattern_buffer*, const char *, int, int, struct re_registers*);
    7475ONIG_EXTERN
    75 void re_set_casetable P_((const char*));
     76void re_set_casetable(const char*);
    7677ONIG_EXTERN
    77 void re_free_registers P_((struct re_registers*));
     78void re_free_registers(struct re_registers*);
    7879ONIG_EXTERN
    79 int re_alloc_pattern P_((struct re_pattern_buffer**));  /* added */
     80int re_alloc_pattern(struct re_pattern_buffer**);  /* added */
    8081
    8182#ifdef __cplusplus
     
    8384#endif
    8485
    85 #endif /* ONIGGNU_H */
     86#endif /* ONIGMOGNU_H */
  • EcnlProtoTool/trunk/onigmo-6.1.3/src/onigmoposix.h

    r321 r331  
    1 #ifndef ONIGPOSIX_H
    2 #define ONIGPOSIX_H
     1#ifndef ONIGMOPOSIX_H
     2#define ONIGMOPOSIX_H
    33/**********************************************************************
    4   onigposix.h - Oniguruma (regular expression library)
     4  onigmoposix.h - Onigmo (Oniguruma-mod) (regular expression library)
    55**********************************************************************/
    66/*-
    77 * Copyright (c) 2002-2005  K.Kosako  <sndgk393 AT ybb DOT ne DOT jp>
     8 * Copyright (c) 2011-2016  K.Takata  <kentkt AT csc DOT jp>
    89 * All rights reserved.
    910 *
     
    6263#define REG_EONIG_BADWC     15
    6364#define REG_EONIG_BADARG    16
    64 #define REG_EONIG_THREAD    17
     65/* #define REG_EONIG_THREAD    17 */
    6566
    6667/* character encodings (for reg_set_encoding()) */
     
    8889
    8990
    90 #ifndef P_
    91 #if defined(__STDC__) || defined(_WIN32)
    92 # define P_(args) args
    93 #else
    94 # define P_(args) ()
    95 #endif
     91#ifndef ONIG_EXTERN
     92# if defined(_WIN32) && !defined(__GNUC__)
     93#  if defined(EXPORT)
     94#   define ONIG_EXTERN   extern __declspec(dllexport)
     95#  else
     96#   define ONIG_EXTERN   extern __declspec(dllimport)
     97#  endif
     98# endif
    9699#endif
    97100
    98101#ifndef ONIG_EXTERN
    99 #if defined(_WIN32) && !defined(__GNUC__)
    100 #if defined(EXPORT)
    101 #define ONIG_EXTERN   extern __declspec(dllexport)
    102 #else
    103 #define ONIG_EXTERN   extern __declspec(dllimport)
    104 #endif
    105 #endif
     102# define ONIG_EXTERN   extern
    106103#endif
    107104
    108 #ifndef ONIG_EXTERN
    109 #define ONIG_EXTERN   extern
    110 #endif
    111 
    112 #ifndef ONIGURUMA_H
     105#ifndef ONIGMO_H
    113106typedef unsigned int        OnigOptionType;
    114107
     
    121114} OnigSyntaxType;
    122115
    123 ONIG_EXTERN OnigSyntaxType OnigSyntaxPosixBasic;
    124 ONIG_EXTERN OnigSyntaxType OnigSyntaxPosixExtended;
    125 ONIG_EXTERN OnigSyntaxType OnigSyntaxEmacs;
    126 ONIG_EXTERN OnigSyntaxType OnigSyntaxGrep;
    127 ONIG_EXTERN OnigSyntaxType OnigSyntaxGnuRegex;
    128 ONIG_EXTERN OnigSyntaxType OnigSyntaxJava;
    129 ONIG_EXTERN OnigSyntaxType OnigSyntaxPerl;
    130 ONIG_EXTERN OnigSyntaxType OnigSyntaxRuby;
     116ONIG_EXTERN const OnigSyntaxType OnigSyntaxPosixBasic;
     117ONIG_EXTERN const OnigSyntaxType OnigSyntaxPosixExtended;
     118ONIG_EXTERN const OnigSyntaxType OnigSyntaxEmacs;
     119ONIG_EXTERN const OnigSyntaxType OnigSyntaxGrep;
     120ONIG_EXTERN const OnigSyntaxType OnigSyntaxGnuRegex;
     121ONIG_EXTERN const OnigSyntaxType OnigSyntaxJava;
     122ONIG_EXTERN const OnigSyntaxType OnigSyntaxPerl;
     123ONIG_EXTERN const OnigSyntaxType OnigSyntaxRuby;
    131124
    132125/* predefined syntaxes (see regsyntax.c) */
     
    142135#define ONIG_SYNTAX_DEFAULT             OnigDefaultSyntax
    143136
    144 ONIG_EXTERN OnigSyntaxType*  OnigDefaultSyntax;
     137ONIG_EXTERN const OnigSyntaxType*  OnigDefaultSyntax;
    145138
    146 ONIG_EXTERN int  onig_set_default_syntax P_((OnigSyntaxType* syntax));
    147 ONIG_EXTERN void onig_copy_syntax P_((OnigSyntaxType* to, OnigSyntaxType* from));
    148 ONIG_EXTERN const char* onig_version P_((void));
    149 ONIG_EXTERN const char* onig_copyright P_((void));
     139ONIG_EXTERN int  onig_set_default_syntax(const OnigSyntaxType* syntax);
     140ONIG_EXTERN void onig_copy_syntax(OnigSyntaxType* to, const OnigSyntaxType* from);
     141ONIG_EXTERN const char* onig_version(void);
     142ONIG_EXTERN const char* onig_copyright(void);
     143ONIG_EXTERN int onig_end(void);
    150144
    151 #endif /* ONIGURUMA_H */
     145#endif /* ONIGMO_H */
    152146
    153147
    154 ONIG_EXTERN int    regcomp P_((regex_t* reg, const char* pat, int options));
    155 ONIG_EXTERN int    regexec P_((regex_t* reg, const char* str, size_t nmatch, regmatch_t* matches, int options));
    156 ONIG_EXTERN void   regfree P_((regex_t* reg));
    157 ONIG_EXTERN size_t regerror P_((int code, const regex_t* reg, char* buf, size_t size));
     148ONIG_EXTERN int    regcomp(regex_t* reg, const char* pat, int options);
     149ONIG_EXTERN int    regexec(regex_t* reg, const char* str, size_t nmatch, regmatch_t* matches, int options);
     150ONIG_EXTERN void   regfree(regex_t* reg);
     151ONIG_EXTERN size_t regerror(int code, const regex_t* reg, char* buf, size_t size);
    158152
    159153/* extended API */
    160 ONIG_EXTERN void reg_set_encoding P_((int enc));
    161 ONIG_EXTERN int  reg_name_to_group_numbers P_((regex_t* reg, const unsigned char* name, const unsigned char* name_end, int** nums));
    162 ONIG_EXTERN int  reg_foreach_name P_((regex_t* reg, int (*func)(const unsigned char*, const unsigned char*,int,int*,regex_t*,void*), void* arg));
    163 ONIG_EXTERN int  reg_number_of_names P_((regex_t* reg));
     154ONIG_EXTERN void reg_set_encoding(int enc);
     155ONIG_EXTERN int  reg_name_to_group_numbers(regex_t* reg, const unsigned char* name, const unsigned char* name_end, int** nums);
     156ONIG_EXTERN int  reg_foreach_name(regex_t* reg, int (*func)(const unsigned char*, const unsigned char*,int,int*,regex_t*,void*), void* arg);
     157ONIG_EXTERN int  reg_number_of_names(regex_t* reg);
    164158
    165159#ifdef __cplusplus
     
    167161#endif
    168162
    169 #endif /* ONIGPOSIX_H */
     163#endif /* ONIGMOPOSIX_H */
  • EcnlProtoTool/trunk/onigmo-6.1.3/src/regcomp.c

    r321 r331  
    44/*-
    55 * Copyright (c) 2002-2013  K.Kosako  <sndgk393 AT ybb DOT ne DOT jp>
    6  * Copyright (c) 2011-2014  K.Takata  <kentkt AT csc DOT jp>
     6 * Copyright (c) 2011-2016  K.Takata  <kentkt AT csc DOT jp>
    77 * All rights reserved.
    88 *
     
    3131#include "regparse.h"
    3232
    33 #if defined(USE_MULTI_THREAD_SYSTEM) \
    34   && defined(USE_DEFAULT_MULTI_THREAD_SYSTEM)
    35 #ifdef _WIN32
    36 CRITICAL_SECTION gOnigMutex;
    37 #else
    38 pthread_mutex_t gOnigMutex;
    39 #endif
    40 #endif
    41 
    4233OnigCaseFoldType OnigDefaultCaseFoldFlag = ONIGENC_CASE_FOLD_MIN;
    4334
     
    264255}
    265256
     257#if 0
    266258static int
    267259add_pointer(regex_t* reg, void* addr)
     
    272264  return 0;
    273265}
     266#endif
    274267
    275268static int
     
    483476
    484477  p = prev = sn->s;
    485   prev_len = enclen(enc, p);
     478  prev_len = enclen(enc, p, sn->end);
    486479  p += prev_len;
    487480  blen = prev_len;
     
    489482
    490483  for (; p < sn->end; ) {
    491     len = enclen(enc, p);
     484    len = enclen(enc, p, sn->end);
    492485    if (len == prev_len || ambig) {
    493486      blen += len;
     
    532525
    533526  p = prev = sn->s;
    534   prev_len = enclen(enc, p);
     527  prev_len = enclen(enc, p, end);
    535528  p += prev_len;
    536529  blen = prev_len;
    537530
    538531  for (; p < end; ) {
    539     len = enclen(enc, p);
     532    len = enclen(enc, p, end);
    540533    if (len == prev_len || ambig) {
    541534      blen += len;
     
    592585  int len;
    593586
    594   if (IS_NCCLASS_SHARE(cc)) {
    595     len = SIZE_OPCODE + SIZE_POINTER;
    596     return len;
    597   }
    598 
    599587  if (IS_NULL(cc->mbuf)) {
    600588    len = SIZE_OPCODE + SIZE_BITSET;
     
    621609{
    622610  int r;
    623 
    624   if (IS_NCCLASS_SHARE(cc)) {
    625     add_opcode(reg, OP_CCLASS_NODE);
    626     r = add_pointer(reg, cc);
    627     return r;
    628   }
    629611
    630612  if (IS_NULL(cc->mbuf)) {
     
    639621    if (ONIGENC_MBC_MINLEN(reg->enc) > 1 || bitset_is_empty(cc->bs)) {
    640622      if (IS_NCCLASS_NOT(cc))
    641         add_opcode(reg, OP_CCLASS_MB_NOT);
     623        add_opcode(reg, OP_CCLASS_MB_NOT);
    642624      else
    643         add_opcode(reg, OP_CCLASS_MB);
     625        add_opcode(reg, OP_CCLASS_MB);
    644626
    645627      r = add_multi_byte_cclass(cc->mbuf, reg);
     
    647629    else {
    648630      if (IS_NCCLASS_NOT(cc))
    649         add_opcode(reg, OP_CCLASS_MIX_NOT);
     631        add_opcode(reg, OP_CCLASS_MIX_NOT);
    650632      else
    651         add_opcode(reg, OP_CCLASS_MIX);
     633        add_opcode(reg, OP_CCLASS_MIX);
    652634
    653635      r = add_bitset(reg, cc->bs);
     
    761743    if (qn->greedy && infinite) {
    762744      if (IS_NOT_NULL(qn->next_head_exact) && !CKN_ON)
    763         return SIZE_OP_ANYCHAR_STAR_PEEK_NEXT + tlen * qn->lower + cklen;
     745        return SIZE_OP_ANYCHAR_STAR_PEEK_NEXT + tlen * qn->lower + cklen;
    764746      else
    765         return SIZE_OP_ANYCHAR_STAR + tlen * qn->lower + cklen;
     747        return SIZE_OP_ANYCHAR_STAR + tlen * qn->lower + cklen;
    766748    }
    767749  }
     
    990972    if (qn->greedy && infinite) {
    991973      if (IS_NOT_NULL(qn->next_head_exact))
    992         return SIZE_OP_ANYCHAR_STAR_PEEK_NEXT + tlen * qn->lower;
     974        return SIZE_OP_ANYCHAR_STAR_PEEK_NEXT + tlen * qn->lower;
    993975      else
    994         return SIZE_OP_ANYCHAR_STAR + tlen * qn->lower;
     976        return SIZE_OP_ANYCHAR_STAR + tlen * qn->lower;
    995977    }
    996978  }
     
    1011993
    1012994    if (qn->greedy) {
     995#ifdef USE_OP_PUSH_OR_JUMP_EXACT
    1013996      if (IS_NOT_NULL(qn->head_exact))
    1014997        len += SIZE_OP_PUSH_OR_JUMP_EXACT1 + mod_tlen + SIZE_OP_JUMP;
    1015       else if (IS_NOT_NULL(qn->next_head_exact))
     998      else
     999#endif
     1000      if (IS_NOT_NULL(qn->next_head_exact))
    10161001        len += SIZE_OP_PUSH_IF_PEEK_NEXT + mod_tlen + SIZE_OP_JUMP;
    10171002      else
     
    10791064    if (qn->lower == 1 && tlen > QUANTIFIER_EXPAND_LIMIT_SIZE) {
    10801065      if (qn->greedy) {
     1066#ifdef USE_OP_PUSH_OR_JUMP_EXACT
    10811067        if (IS_NOT_NULL(qn->head_exact))
    10821068          r = add_opcode_rel_addr(reg, OP_JUMP, SIZE_OP_PUSH_OR_JUMP_EXACT1);
    1083         else if (IS_NOT_NULL(qn->next_head_exact))
     1069        else
     1070#endif
     1071        if (IS_NOT_NULL(qn->next_head_exact))
    10841072          r = add_opcode_rel_addr(reg, OP_JUMP, SIZE_OP_PUSH_IF_PEEK_NEXT);
    10851073        else
     
    10971085
    10981086    if (qn->greedy) {
     1087#ifdef USE_OP_PUSH_OR_JUMP_EXACT
    10991088      if (IS_NOT_NULL(qn->head_exact)) {
    11001089        r = add_opcode_rel_addr(reg, OP_PUSH_OR_JUMP_EXACT1,
     
    11071096        -(mod_tlen + (int )SIZE_OP_JUMP + (int )SIZE_OP_PUSH_OR_JUMP_EXACT1));
    11081097      }
    1109       else if (IS_NOT_NULL(qn->next_head_exact)) {
     1098      else
     1099#endif
     1100      if (IS_NOT_NULL(qn->next_head_exact)) {
    11101101        r = add_opcode_rel_addr(reg, OP_PUSH_IF_PEEK_NEXT,
    11111102                                mod_tlen + SIZE_OP_JUMP);
     
    12441235                ? SIZE_OP_MEMORY_END_REC : SIZE_OP_MEMORY_END);
    12451236    }
     1237    else if (IS_ENCLOSE_RECURSION(node)) {
     1238      len = SIZE_OP_MEMORY_START_PUSH;
     1239      len += tlen + (BIT_STATUS_AT(reg->bt_mem_end, node->regnum)
     1240                     ? SIZE_OP_MEMORY_END_PUSH_REC : SIZE_OP_MEMORY_END_REC);
     1241    }
    12461242    else
    12471243#endif
     
    12891285      return ONIGERR_PARSER_BUG;
    12901286    }
     1287    break;
     1288
     1289  case ENCLOSE_ABSENT:
     1290    len = SIZE_OP_PUSH_ABSENT_POS + SIZE_OP_ABSENT + tlen + SIZE_OP_ABSENT_END;
    12911291    break;
    12921292
     
    13551355      r = add_opcode(reg, OP_RETURN);
    13561356    }
     1357    else if (IS_ENCLOSE_RECURSION(node)) {
     1358      if (BIT_STATUS_AT(reg->bt_mem_end, node->regnum))
     1359        r = add_opcode(reg, OP_MEMORY_END_PUSH_REC);
     1360      else
     1361        r = add_opcode(reg, OP_MEMORY_END_REC);
     1362      if (r) return r;
     1363      r = add_mem_num(reg, node->regnum);
     1364    }
    13571365    else
    13581366#endif
     
    14271435    break;
    14281436
     1437  case ENCLOSE_ABSENT:
     1438    len = compile_length_tree(node->target, reg);
     1439    if (len < 0) return len;
     1440
     1441    r = add_opcode(reg, OP_PUSH_ABSENT_POS);
     1442    if (r) return r;
     1443    r = add_opcode_rel_addr(reg, OP_ABSENT, len + SIZE_OP_ABSENT_END);
     1444    if (r) return r;
     1445    r = compile_tree(node->target, reg);
     1446    if (r) return r;
     1447    r = add_opcode(reg, OP_ABSENT_END);
     1448    break;
     1449
    14291450  default:
    14301451    return ONIGERR_TYPE_BUG;
     
    14801501  case ANCHOR_SEMI_END_BUF:   r = add_opcode(reg, OP_SEMI_END_BUF);   break;
    14811502  case ANCHOR_BEGIN_POSITION: r = add_opcode(reg, OP_BEGIN_POSITION); break;
    1482 
    1483   /* used for implicit anchor optimization: /.*a/ ==> /(?:^|\G).*a/ */
    1484   case ANCHOR_ANYCHAR_STAR:   r = add_opcode(reg, OP_BEGIN_POS_OR_LINE); break;
    14851503
    14861504  case ANCHOR_WORD_BOUND:
     
    15901608      len = 0;
    15911609      do {
    1592         r = compile_length_tree(NCAR(node), reg);
    1593         if (r < 0) return r;
    1594         len += r;
    1595         n++;
     1610        r = compile_length_tree(NCAR(node), reg);
     1611        if (r < 0) return r;
     1612        len += r;
     1613        n++;
    15961614      } while (IS_NOT_NULL(node = NCDR(node)));
    15971615      r = len;
     
    16221640#ifdef USE_BACKREF_WITH_LEVEL
    16231641      if (IS_BACKREF_NEST_LEVEL(br)) {
    1624         r = SIZE_OPCODE + SIZE_OPTION + SIZE_LENGTH +
     1642        r = SIZE_OPCODE + SIZE_OPTION + SIZE_LENGTH +
    16251643            SIZE_LENGTH + (SIZE_MEMNUM * br->back_num);
    16261644      }
     
    17861804        int* p;
    17871805
    1788         if (IS_IGNORECASE(reg->options)) {
    1789           r = add_opcode(reg, OP_BACKREF_MULTI_IC);
    1790         }
    1791         else {
    1792           r = add_opcode(reg, OP_BACKREF_MULTI);
    1793         }
     1806        if (IS_IGNORECASE(reg->options)) {
     1807          r = add_opcode(reg, OP_BACKREF_MULTI_IC);
     1808        }
     1809        else {
     1810          r = add_opcode(reg, OP_BACKREF_MULTI);
     1811        }
    17941812        if (r) return r;
    17951813
     
    18851903
    18861904  case NT_ANCHOR:
    1887     {
    1888       AnchorNode* an = NANCHOR(node);
    1889       switch (an->type) {
    1890       case ANCHOR_PREC_READ:
    1891       case ANCHOR_PREC_READ_NOT:
    1892       case ANCHOR_LOOK_BEHIND:
    1893       case ANCHOR_LOOK_BEHIND_NOT:
    1894         r = noname_disable_map(&(an->target), map, counter);
    1895         break;
    1896       }
    1897     }
     1905    if (NANCHOR(node)->target)
     1906      r = noname_disable_map(&(NANCHOR(node)->target), map, counter);
    18981907    break;
    18991908
     
    19521961      EncloseNode* en = NENCLOSE(node);
    19531962      if (en->type == ENCLOSE_CONDITION)
    1954         en->regnum = map[en->regnum].new_val;
     1963        en->regnum = map[en->regnum].new_val;
    19551964      r = renumber_by_map(en->target, map);
    19561965    }
     
    19621971
    19631972  case NT_ANCHOR:
    1964     {
    1965       AnchorNode* an = NANCHOR(node);
    1966       switch (an->type) {
    1967       case ANCHOR_PREC_READ:
    1968       case ANCHOR_PREC_READ_NOT:
    1969       case ANCHOR_LOOK_BEHIND:
    1970       case ANCHOR_LOOK_BEHIND_NOT:
    1971         r = renumber_by_map(an->target, map);
    1972         break;
    1973       }
    1974     }
     1973    if (NANCHOR(node)->target)
     1974      r = renumber_by_map(NANCHOR(node)->target, map);
    19751975    break;
    19761976
     
    20062006    break;
    20072007
     2008  case NT_ANCHOR:
     2009    if (NANCHOR(node)->target)
     2010      r = numbered_ref_check(NANCHOR(node)->target);
     2011    break;
     2012
    20082013  default:
    20092014    break;
     
    20142019
    20152020static int
    2016 disable_noname_group_capture_(Node** root, regex_t* reg, ScanEnv* env, GroupNumRemap* map)
     2021disable_noname_group_capture(Node** root, regex_t* reg, ScanEnv* env)
    20172022{
    20182023  int r, i, pos, counter;
    20192024  BitStatusType loc;
    2020 
     2025  GroupNumRemap* map;
     2026
     2027  map = (GroupNumRemap* )xalloca(sizeof(GroupNumRemap) * (env->num_mem + 1));
    20212028  CHECK_NULL_RETURN_MEMERR(map);
    20222029  for (i = 1; i <= env->num_mem; i++) {
     
    20492056
    20502057  return onig_renumber_name_table(reg, map);
    2051 }
    2052 
    2053 static int
    2054 disable_noname_group_capture(Node** root, regex_t* reg, ScanEnv* env)
    2055 {
    2056         GroupNumRemap* map = (GroupNumRemap*)xmalloc(sizeof(GroupNumRemap) * (env->num_mem + 1));
    2057         int ret = disable_noname_group_capture_(root, reg, env, map);
    2058         xfree(map);
    2059         return ret;
    20602058}
    20612059#endif /* USE_NAMED_GROUP */
     
    20992097    break;
    21002098
    2101 #ifdef USE_SUBEXP_CALL
     2099# ifdef USE_SUBEXP_CALL
    21022100  case NT_CALL:
    21032101    if (IS_CALL_RECURSION(NCALL(node))) {
     
    21072105      r = quantifiers_memory_node_info(NCALL(node)->target);
    21082106    break;
    2109 #endif
     2107# endif
    21102108
    21112109  case NT_QTFR:
     
    21292127      case ENCLOSE_STOP_BACKTRACK:
    21302128      case ENCLOSE_CONDITION:
     2129      case ENCLOSE_ABSENT:
    21312130        r = quantifiers_memory_node_info(en->target);
    21322131        break;
     
    22462245      switch (en->type) {
    22472246      case ENCLOSE_MEMORY:
    2248 #ifdef USE_SUBEXP_CALL
    2249         if (IS_ENCLOSE_MIN_FIXED(en))
    2250           *min = en->min_len;
    2251         else {
    2252           r = get_min_match_length(en->target, min, env);
    2253           if (r == 0) {
    2254             en->min_len = *min;
    2255             SET_ENCLOSE_STATUS(node, NST_MIN_FIXED);
     2247        if (IS_ENCLOSE_MIN_FIXED(en))
     2248          *min = en->min_len;
     2249        else {
     2250          if (IS_ENCLOSE_MARK1(NENCLOSE(node)))
     2251            *min = 0;  /* recursive */
     2252          else {
     2253            SET_ENCLOSE_STATUS(node, NST_MARK1);
     2254            r = get_min_match_length(en->target, min, env);
     2255            CLEAR_ENCLOSE_STATUS(node, NST_MARK1);
     2256            if (r == 0) {
     2257              en->min_len = *min;
     2258              SET_ENCLOSE_STATUS(node, NST_MIN_FIXED);
     2259            }
    22562260          }
    2257         }
    2258         break;
    2259 #endif
     2261        }
     2262        break;
     2263
    22602264      case ENCLOSE_OPTION:
    22612265      case ENCLOSE_STOP_BACKTRACK:
    22622266      case ENCLOSE_CONDITION:
    22632267        r = get_min_match_length(en->target, min, env);
     2268        break;
     2269
     2270      case ENCLOSE_ABSENT:
    22642271        break;
    22652272      }
     
    23642371      switch (en->type) {
    23652372      case ENCLOSE_MEMORY:
    2366 #ifdef USE_SUBEXP_CALL
    23672373        if (IS_ENCLOSE_MAX_FIXED(en))
    23682374          *max = en->max_len;
    23692375        else {
    2370           r = get_max_match_length(en->target, max, env);
    2371           if (r == 0) {
    2372             en->max_len = *max;
    2373             SET_ENCLOSE_STATUS(node, NST_MAX_FIXED);
     2376          if (IS_ENCLOSE_MARK1(NENCLOSE(node)))
     2377            *max = ONIG_INFINITE_DISTANCE;
     2378          else {
     2379            SET_ENCLOSE_STATUS(node, NST_MARK1);
     2380            r = get_max_match_length(en->target, max, env);
     2381            CLEAR_ENCLOSE_STATUS(node, NST_MARK1);
     2382            if (r == 0) {
     2383              en->max_len = *max;
     2384              SET_ENCLOSE_STATUS(node, NST_MAX_FIXED);
     2385            }
    23742386          }
    23752387        }
    23762388        break;
    2377 #endif
     2389
    23782390      case ENCLOSE_OPTION:
    23792391      case ENCLOSE_STOP_BACKTRACK:
    23802392      case ENCLOSE_CONDITION:
    23812393        r = get_max_match_length(en->target, max, env);
     2394        break;
     2395
     2396      case ENCLOSE_ABSENT:
    23822397        break;
    23832398      }
     
    24452460      UChar *s = sn->s;
    24462461      while (s < sn->end) {
    2447         s += enclen(reg->enc, s);
     2462        s += enclen(reg->enc, s, sn->end);
    24482463        (*len)++;
    24492464      }
     
    25042519        r = get_char_length_tree1(en->target, reg, len, level);
    25052520        break;
     2521      case ENCLOSE_ABSENT:
    25062522      default:
    25072523        break;
     
    26302646            v = BITSET_AT(xc->bs, i);
    26312647            if ((v != 0 && !IS_NCCLASS_NOT(xc)) ||
    2632                 (v == 0 && IS_NCCLASS_NOT(xc))) {
     2648                (v == 0 && IS_NCCLASS_NOT(xc))) {
    26332649              v = BITSET_AT(yc->bs, i);
    26342650              if ((v != 0 && !IS_NCCLASS_NOT(yc)) ||
    2635                   (v == 0 && IS_NCCLASS_NOT(yc)))
     2651                  (v == 0 && IS_NCCLASS_NOT(yc)))
    26362652                return 0;
    26372653            }
     
    26832699
    26842700      case NT_CCLASS:
    2685         {
    2686           CClassNode* cc = NCCLASS(y);
    2687 
    2688           code = ONIGENC_MBC_TO_CODE(reg->enc, xs->s,
    2689                                      xs->s + ONIGENC_MBC_MAXLEN(reg->enc));
    2690           return (onig_is_code_in_cc(reg->enc, code, cc) != 0 ? 0 : 1);
    2691         }
    2692         break;
     2701        {
     2702          CClassNode* cc = NCCLASS(y);
     2703
     2704          code = ONIGENC_MBC_TO_CODE(reg->enc, xs->s,
     2705                                     xs->s + ONIGENC_MBC_MAXLEN(reg->enc));
     2706          return (onig_is_code_in_cc(reg->enc, code, cc) != 0 ? 0 : 1);
     2707        }
     2708        break;
    26932709
    26942710      case NT_STR:
    2695         {
    2696           UChar *q;
    2697           StrNode* ys = NSTR(y);
    2698           len = NSTRING_LEN(x);
    2699           if (len > NSTRING_LEN(y)) len = NSTRING_LEN(y);
    2700           if (NSTRING_IS_AMBIG(x) || NSTRING_IS_AMBIG(y)) {
    2701             /* tiny version */
    2702             return 0;
     2711        {
     2712          UChar *q;
     2713          StrNode* ys = NSTR(y);
     2714          len = NSTRING_LEN(x);
     2715          if (len > NSTRING_LEN(y)) len = NSTRING_LEN(y);
     2716          if (NSTRING_IS_AMBIG(x) || NSTRING_IS_AMBIG(y)) {
     2717            /* tiny version */
     2718            return 0;
    27032719          }
    27042720          else {
     
    27112727
    27122728      default:
    2713         break;
     2729        break;
    27142730      }
    27152731    }
     
    27682784      QtfrNode* qn = NQTFR(node);
    27692785      if (qn->lower > 0) {
     2786#ifdef USE_OP_PUSH_OR_JUMP_EXACT
    27702787        if (IS_NOT_NULL(qn->head_exact))
    27712788          n = qn->head_exact;
    27722789        else
     2790#endif
    27732791          n = get_head_value_node(qn->target, exact, reg);
    27742792      }
     
    27952813        n = get_head_value_node(en->target, exact, reg);
    27962814        break;
     2815
     2816      case ENCLOSE_ABSENT:
     2817        break;
    27972818      }
    27982819    }
     
    28622883#ifdef USE_SUBEXP_CALL
    28632884
    2864 #define RECURSION_EXIST       1
    2865 #define RECURSION_INFINITE    2
     2885# define RECURSION_EXIST       1
     2886# define RECURSION_INFINITE    2
    28662887
    28672888static int
     
    30633084subexp_recursive_check_trav(Node* node, ScanEnv* env)
    30643085{
    3065 #define FOUND_CALLED_NODE    1
     3086# define FOUND_CALLED_NODE    1
    30663087
    30673088  int type;
     
    31643185        int gnum = cn->group_num;
    31653186
    3166 #ifdef USE_NAMED_GROUP
     3187# ifdef USE_NAMED_GROUP
    31673188        if (env->num_named > 0 &&
    31683189            IS_SYNTAX_BV(env->syntax, ONIG_SYN_CAPTURE_ONLY_NAMED_GROUP) &&
     
    31703191          return ONIGERR_NUMBERED_BACKREF_OR_CALL_NOT_ALLOWED;
    31713192        }
    3172 #endif
     3193# endif
    31733194        if (gnum > env->num_mem) {
    31743195          onig_scan_env_set_error_string(env,
     
    31773198        }
    31783199
    3179 #ifdef USE_NAMED_GROUP
     3200# ifdef USE_NAMED_GROUP
    31803201      set_call_attr:
    3181 #endif
     3202# endif
    31823203        cn->target = nodes[cn->group_num];
    31833204        if (IS_NULL(cn->target)) {
     
    31903211        cn->unset_addr_list = env->unset_addr_list;
    31913212      }
    3192 #ifdef USE_NAMED_GROUP
    3193 #ifdef USE_PERL_SUBEXP_CALL
     3213# ifdef USE_NAMED_GROUP
     3214#  ifdef USE_PERL_SUBEXP_CALL
    31943215      else if (cn->name == cn->name_end) {
    31953216        goto set_call_attr;
    31963217      }
    3197 #endif
     3218#  endif
    31983219      else {
    31993220        int *refs;
     
    32173238        }
    32183239      }
    3219 #endif
     3240# endif
    32203241    }
    32213242    break;
     
    33003321
    33013322static int
    3302 next_setup(Node* node, Node* next_node, int in_root, regex_t* reg)
     3323next_setup(Node* node, Node* next_node, regex_t* reg)
    33033324{
    33043325  int type;
     
    33343355        }
    33353356      }
    3336 
    3337 #ifndef ONIG_DONT_OPTIMIZE
    3338       if (NTYPE(node) == NT_QTFR && /* the type may be changed by above block */
    3339           in_root && /* qn->lower == 0 && */
    3340           NTYPE(qn->target) == NT_CANY &&
    3341           ! IS_MULTILINE(reg->options)) {
    3342         /* implicit anchor: /.*a/ ==> /(?:^|\G).*a/ */
    3343         Node *np;
    3344         np = onig_node_new_list(NULL_NODE, NULL_NODE);
    3345         CHECK_NULL_RETURN_MEMERR(np);
    3346         swap_node(node, np);
    3347         NCDR(node) = onig_node_new_list(np, NULL_NODE);
    3348         if (IS_NULL(NCDR(node))) {
    3349           onig_node_free(np);
    3350           return ONIGERR_MEMORY;
    3351         }
    3352         np = onig_node_new_anchor(ANCHOR_ANYCHAR_STAR);   /* (?:^|\G) */
    3353         CHECK_NULL_RETURN_MEMERR(np);
    3354         NCAR(node) = np;
    3355       }
    3356 #endif
    33573357    }
    33583358  }
    33593359  else if (type == NT_ENCLOSE) {
    33603360    EncloseNode* en = NENCLOSE(node);
    3361     in_root = 0;
    33623361    if (en->type == ENCLOSE_MEMORY) {
    33633362      node = en->target;
     
    35163515
    35173516      if (q < end) {
    3518         r = expand_case_fold_make_rem_string(&rem, q, end, reg);
    3519         if (r != 0) {
    3520           onig_node_free(an);
    3521           goto mem_err2;
    3522         }
    3523 
    3524         xnode = onig_node_list_add(NULL_NODE, snode);
    3525         if (IS_NULL(xnode)) {
    3526           onig_node_free(an);
    3527           onig_node_free(rem);
    3528           goto mem_err2;
    3529         }
    3530         if (IS_NULL(onig_node_list_add(xnode, rem))) {
    3531           onig_node_free(an);
    3532           onig_node_free(xnode);
    3533           onig_node_free(rem);
    3534           goto mem_err;
    3535         }
    3536 
    3537         NCAR(an) = xnode;
     3517        r = expand_case_fold_make_rem_string(&rem, q, end, reg);
     3518        if (r != 0) {
     3519          onig_node_free(an);
     3520          goto mem_err2;
     3521        }
     3522
     3523        xnode = onig_node_list_add(NULL_NODE, snode);
     3524        if (IS_NULL(xnode)) {
     3525          onig_node_free(an);
     3526          onig_node_free(rem);
     3527          goto mem_err2;
     3528        }
     3529        if (IS_NULL(onig_node_list_add(xnode, rem))) {
     3530          onig_node_free(an);
     3531          onig_node_free(xnode);
     3532          onig_node_free(rem);
     3533          goto mem_err;
     3534        }
     3535
     3536        NCAR(an) = xnode;
    35383537      }
    35393538      else {
    3540         NCAR(an) = snode;
     3539        NCAR(an) = snode;
    35413540      }
    35423541
     
    35923591    }
    35933592
    3594     len = enclen(reg->enc, p);
     3593    len = enclen(reg->enc, p, end);
    35953594
    35963595    varlen = is_case_fold_variable_len(n, items, len);
     
    37153714#ifdef USE_COMBINATION_EXPLOSION_CHECK
    37163715
    3717 #define CEC_THRES_NUM_BIG_REPEAT         512
    3718 #define CEC_INFINITE_NUM          0x7fffffff
    3719 
    3720 #define CEC_IN_INFINITE_REPEAT    (1<<0)
    3721 #define CEC_IN_FINITE_REPEAT      (1<<1)
    3722 #define CEC_CONT_BIG_REPEAT       (1<<2)
     3716# define CEC_THRES_NUM_BIG_REPEAT         512
     3717# define CEC_INFINITE_NUM          0x7fffffff
     3718
     3719# define CEC_IN_INFINITE_REPEAT    (1<<0)
     3720# define CEC_IN_FINITE_REPEAT      (1<<1)
     3721# define CEC_CONT_BIG_REPEAT       (1<<2)
    37233722
    37243723static int
     
    38363835    break;
    38373836
    3838 #ifdef USE_SUBEXP_CALL
     3837# ifdef USE_SUBEXP_CALL
    38393838  case NT_CALL:
    38403839    if (IS_CALL_RECURSION(NCALL(node)))
     
    38433842      r = setup_comb_exp_check(NCALL(node)->target, state, env);
    38443843    break;
    3845 #endif
     3844# endif
    38463845
    38473846  default:
     
    38573856#define IN_REPEAT     (1<<2)
    38583857#define IN_VAR_REPEAT (1<<3)
    3859 #define IN_ROOT       (1<<4)
     3858#define IN_CALL       (1<<4)
     3859#define IN_RECCALL    (1<<5)
    38603860
    38613861/* setup_tree does the following work.
     
    38723872  int type;
    38733873  int r = 0;
    3874   int in_root = state & IN_ROOT;
    3875 
    3876   state &= ~IN_ROOT;
     3874
    38773875restart:
    38783876  type = NTYPE(node);
     
    38813879    {
    38823880      Node* prev = NULL_NODE;
    3883       int prev_in_root = 0;
    3884       state |= in_root;
    38853881      do {
    38863882        r = setup_tree(NCAR(node), reg, state, env);
    38873883        if (IS_NOT_NULL(prev) && r == 0) {
    3888           r = next_setup(prev, NCAR(node), prev_in_root, reg);
     3884          r = next_setup(prev, NCAR(node), reg);
    38893885        }
    38903886        prev = NCAR(node);
    3891         prev_in_root = state & IN_ROOT;
    3892         state &= ~IN_ROOT;
    38933887      } while (r == 0 && IS_NOT_NULL(node = NCDR(node)));
    38943888    }
     
    39473941
    39483942      if ((state & IN_REPEAT) != 0) {
    3949         qn->state |= NST_IN_REPEAT;
     3943        qn->state |= NST_IN_REPEAT;
    39503944      }
    39513945
     
    40544048        {
    40554049          OnigOptionType options = reg->options;
    4056           state |= in_root;
    40574050          reg->options = NENCLOSE(node)->option;
    40584051          r = setup_tree(NENCLOSE(node)->target, reg, state, env);
     
    40624055
    40634056      case ENCLOSE_MEMORY:
    4064         if ((state & (IN_ALT | IN_NOT | IN_VAR_REPEAT)) != 0) {
     4057        if ((state & (IN_ALT | IN_NOT | IN_VAR_REPEAT | IN_CALL)) != 0) {
    40654058          BIT_STATUS_ON_AT(env->bt_mem_start, en->regnum);
    40664059          /* SET_ENCLOSE_STATUS(node, NST_MEM_IN_ALT_NOT); */
    40674060        }
    4068         r = setup_tree(en->target, reg, state, env);
    4069         break;
     4061        if (IS_ENCLOSE_CALLED(en))
     4062          state |= IN_CALL;
     4063        if (IS_ENCLOSE_RECURSION(en))
     4064          state |= IN_RECCALL;
     4065        else if ((state & IN_RECCALL) != 0)
     4066          SET_CALL_RECURSION(node);
     4067        r = setup_tree(en->target, reg, state, env);
     4068        break;
    40704069
    40714070      case ENCLOSE_STOP_BACKTRACK:
     
    40944093        }
    40954094#endif
     4095        if (NENCLOSE(node)->regnum > env->num_mem)
     4096          return ONIGERR_INVALID_BACKREF;
     4097        r = setup_tree(NENCLOSE(node)->target, reg, state, env);
     4098        break;
     4099
     4100      case ENCLOSE_ABSENT:
    40964101        r = setup_tree(NENCLOSE(node)->target, reg, state, env);
    40974102        break;
     
    41374142          if (r < 0) return r;
    41384143          if (r > 0) return ONIGERR_INVALID_LOOK_BEHIND_PATTERN;
    4139           r = setup_look_behind(node, reg, env);
    4140           if (r != 0) return r;
    41414144          if (NTYPE(node) != NT_ANCHOR) goto restart;
    41424145          r = setup_tree(an->target, reg, state, env);
     4146          if (r != 0) return r;
     4147          r = setup_look_behind(node, reg, env);
    41434148        }
    41444149        break;
     
    41504155          if (r < 0) return r;
    41514156          if (r > 0) return ONIGERR_INVALID_LOOK_BEHIND_PATTERN;
    4152           r = setup_look_behind(node, reg, env);
    4153           if (r != 0) return r;
    41544157          if (NTYPE(node) != NT_ANCHOR) goto restart;
    41554158          r = setup_tree(an->target, reg, (state | IN_NOT), env);
     4159          if (r != 0) return r;
     4160          r = setup_look_behind(node, reg, env);
    41564161        }
    41574162        break;
     
    41894194        n = ONIGENC_GET_CASE_FOLD_CODES_BY_STR(enc, reg->case_fold_flag,
    41904195                                               p, end, items);
    4191       clen = enclen(enc, p);
     4196      clen = enclen(enc, p, end);
     4197      if (p + clen > end)
     4198        clen = (int )(end - p);
    41924199
    41934200      for (j = 0; j < n; j++) {
     
    42074214  }
    42084215  else {
     4216# if OPT_EXACT_MAXLEN < ONIG_CHAR_TABLE_SIZE
     4217    /* This should not happen. */
     4218    return ONIGERR_TYPE_BUG;
     4219# else
    42094220    if (IS_NULL(*int_skip)) {
    42104221      *int_skip = (int* )xmalloc(sizeof(int) * ONIG_CHAR_TABLE_SIZE);
     
    42194230        n = ONIGENC_GET_CASE_FOLD_CODES_BY_STR(enc, reg->case_fold_flag,
    42204231                                               p, end, items);
    4221       clen = enclen(enc, p);
     4232      clen = enclen(enc, p, end);
     4233      if (p + clen > end)
     4234        clen = (int )(end - p);
    42224235
    42234236      for (j = 0; j < n; j++) {
     
    42354248      }
    42364249    }
     4250# endif
    42374251  }
    42384252  return 0;
     
    42624276        n = ONIGENC_GET_CASE_FOLD_CODES_BY_STR(enc, reg->case_fold_flag,
    42634277                                               p, end, items);
    4264       clen = enclen(enc, p);
     4278      clen = enclen(enc, p, end);
     4279      if (p + clen > end)
     4280        clen = (int )(end - p);
    42654281
    42664282      for (j = 0; j < n; j++) {
     
    42804296  }
    42814297  else {
     4298# if OPT_EXACT_MAXLEN < ONIG_CHAR_TABLE_SIZE
     4299    /* This should not happen. */
     4300    return ONIGERR_TYPE_BUG;
     4301# else
    42824302    if (IS_NULL(*int_skip)) {
    42834303      *int_skip = (int* )xmalloc(sizeof(int) * ONIG_CHAR_TABLE_SIZE);
     
    42924312        n = ONIGENC_GET_CASE_FOLD_CODES_BY_STR(enc, reg->case_fold_flag,
    42934313                                               p, end, items);
    4294       clen = enclen(enc, p);
     4314      clen = enclen(enc, p, end);
     4315      if (p + clen > end)
     4316        clen = (int )(end - p);
    42954317
    42964318      for (j = 0; j < n; j++) {
     
    43084330      }
    43094331    }
     4332# endif
    43104333  }
    43114334  return 0;
    43124335}
    43134336#endif /* USE_SUNDAY_QUICK_SEARCH */
    4314 
    4315 #define OPT_EXACT_MAXLEN   24
    43164337
    43174338typedef struct {
     
    46044625  end = p + add->len;
    46054626  for (i = to->len; p < end; ) {
    4606     len = enclen(enc, p);
     4627    len = enclen(enc, p, end);
    46074628    if (i + len > OPT_EXACT_MAXLEN) break;
    46084629    for (j = 0; j < len && p < end; j++)
     
    46264647
    46274648  for (i = to->len, p = s; p < end && i < OPT_EXACT_MAXLEN; ) {
    4628     len = enclen(enc, p);
     4649    len = enclen(enc, p, end);
    46294650    if (i + len > OPT_EXACT_MAXLEN) break;
    46304651    for (j = 0; j < len && p < end; j++)
     
    46524673  for (i = 0; i < to->len && i < add->len; ) {
    46534674    if (to->s[i] != add->s[i]) break;
    4654     len = enclen(env->enc, to->s + i);
     4675    len = enclen(env->enc, to->s + i, to->s + to->len);
    46554676
    46564677    for (j = 1; j < len; j++) {
     
    49845005          add_char_opt_map_info(&opt->map, *(sn->s), env->enc);
    49855006        }
    4986         set_mml(&opt->len, slen, slen);
     5007        set_mml(&opt->len, slen, slen);
    49875008      }
    49885009      else {
    4989         OnigDistance max;
     5010        OnigDistance max;
    49905011
    49915012        if (NSTRING_IS_DONT_GET_OPT_INFO(node)) {
    4992           int n = onigenc_strlen(env->enc, sn->s, sn->end);
    4993           max = ONIGENC_MBC_MAXLEN_DIST(env->enc) * n;
     5013          int n = onigenc_strlen(env->enc, sn->s, sn->end);
     5014          max = ONIGENC_MBC_MAXLEN_DIST(env->enc) * n;
    49945015        }
    49955016        else {
     
    50075028        }
    50085029
    5009         set_mml(&opt->len, slen, max);
     5030        set_mml(&opt->len, slen, max);
    50105031      }
    50115032
     
    50235044
    50245045      if (IS_NOT_NULL(cc->mbuf) || IS_NCCLASS_NOT(cc)) {
    5025         OnigDistance min = ONIGENC_MBC_MINLEN(env->enc);
     5046        OnigDistance min = ONIGENC_MBC_MINLEN(env->enc);
    50265047        OnigDistance max = ONIGENC_MBC_MAXLEN_DIST(env->enc);
    50275048
     
    50295050      }
    50305051      else {
    5031         for (i = 0; i < SINGLE_BYTE_SIZE; i++) {
    5032           z = BITSET_AT(cc->bs, i);
    5033           if ((z && !IS_NCCLASS_NOT(cc)) || (!z && IS_NCCLASS_NOT(cc))) {
    5034             add_char_opt_map_info(&opt->map, (UChar )i, env->enc);
    5035           }
    5036         }
     5052        for (i = 0; i < SINGLE_BYTE_SIZE; i++) {
     5053          z = BITSET_AT(cc->bs, i);
     5054          if ((z && !IS_NCCLASS_NOT(cc)) || (!z && IS_NCCLASS_NOT(cc))) {
     5055            add_char_opt_map_info(&opt->map, (UChar )i, env->enc);
     5056          }
     5057        }
    50375058        set_mml(&opt->len, 1, 1);
    50385059      }
     
    50485069
    50495070      if (max == 1) {
    5050         min = 1;
     5071        min = 1;
    50515072
    50525073        maxcode = NCTYPE(node)->ascii_range ? 0x80 : SINGLE_BYTE_SIZE;
     
    50715092      }
    50725093      else {
    5073         min = ONIGENC_MBC_MINLEN(env->enc);
     5094        min = ONIGENC_MBC_MINLEN(env->enc);
    50745095      }
    50755096      set_mml(&opt->len, min, max);
     
    51905211            if (nopt.exb.reach_end) {
    51915212              for (i = 2; i <= qn->lower &&
    5192                           ! is_full_opt_exact_info(&opt->exb); i++) {
     5213                          ! is_full_opt_exact_info(&opt->exb); i++) {
    51935214                concat_opt_exact_info(&opt->exb, &nopt.exb, env->enc);
    51945215              }
     
    52615282        r = optimize_node_left(en->target, opt, env);
    52625283        break;
     5284
     5285      case ENCLOSE_ABSENT:
     5286        set_mml(&opt->len, 0, ONIG_INFINITE_DISTANCE);
     5287        break;
    52635288      }
    52645289    }
     
    53125337    if (e->len >= 3 || (e->len >= 2 && allow_reverse)) {
    53135338      r = set_bm_skip(reg->exact, reg->exact_end, reg,
    5314                       reg->map, &(reg->int_map), 0);
    5315       if (r) return r;
    5316 
    5317       reg->optimize = (allow_reverse != 0
     5339                      reg->map, &(reg->int_map), 0);
     5340      if (r == 0) {
     5341        reg->optimize = (allow_reverse != 0
    53185342                       ? ONIG_OPTIMIZE_EXACT_BM : ONIG_OPTIMIZE_EXACT_BM_NOT_REV);
     5343      }
     5344      else {
     5345        reg->optimize = ONIG_OPTIMIZE_EXACT;
     5346      }
    53195347    }
    53205348    else {
     
    53815409        ANCHOR_BEGIN_POSITION | ANCHOR_ANYCHAR_STAR | ANCHOR_ANYCHAR_STAR_ML |
    53825410        ANCHOR_LOOK_BEHIND);
     5411
     5412  if ((opt.anc.left_anchor & (ANCHOR_LOOK_BEHIND | ANCHOR_PREC_READ_NOT)) != 0)
     5413    reg->anchor &= ~ANCHOR_ANYCHAR_STAR_ML;
    53835414
    53845415  reg->anchor |= opt.anc.right_anchor & (ANCHOR_END_BUF | ANCHOR_SEMI_END_BUF |
     
    54555486      }
    54565487
    5457       p += enclen(enc, p);
     5488      p += enclen(enc, p, end);
    54585489    }
    54595490  }
     
    55745605      for (i = 0; i < ONIG_CHAR_TABLE_SIZE; i++) {
    55755606        if (reg->map[i] != 0) {
    5576           if (c > 0)  fputs(", ", f);
    5577           c++;
    5578           if (ONIGENC_MBC_MAXLEN(reg->enc) == 1 &&
    5579               ONIGENC_IS_CODE_PRINT(reg->enc, (OnigCodePoint )i))
    5580             fputc(i, f);
    5581           else
    5582             fprintf(f, "%d", i);
    5583         }
     5607          if (c > 0)  fputs(", ", f);
     5608          c++;
     5609          if (ONIGENC_MBC_MAXLEN(reg->enc) == 1 &&
     5610              ONIGENC_IS_CODE_PRINT(reg->enc, (OnigCodePoint )i))
     5611            fputc(i, f);
     5612          else
     5613            fprintf(f, "%d", i);
     5614        }
    55845615      }
    55855616      fprintf(f, "]\n");
     
    56165647}
    56175648
     5649#ifdef RUBY
    56185650size_t
    56195651onig_memsize(const regex_t *reg)
     
    56395671    return size;
    56405672}
     5673#endif
    56415674
    56425675#define REGEX_TRANSFER(to,from) do {\
    5643   (to)->state = ONIG_STATE_MODIFY;\
    56445676  onig_free_body(to);\
    56455677  xmemcpy(to, from, sizeof(regex_t));\
     
    56475679} while (0)
    56485680
     5681#if 0
    56495682extern void
    56505683onig_transfer(regex_t* to, regex_t* from)
    56515684{
    5652   THREAD_ATOMIC_START;
    56535685  REGEX_TRANSFER(to, from);
    5654   THREAD_ATOMIC_END;
    5655 }
    5656 
    5657 #define REGEX_CHAIN_HEAD(reg) do {\
    5658   while (IS_NOT_NULL((reg)->chain)) {\
    5659     (reg) = (reg)->chain;\
    5660   }\
    5661 } while (0)
    5662 
    5663 extern void
    5664 onig_chain_link_add(regex_t* to, regex_t* add)
    5665 {
    5666   THREAD_ATOMIC_START;
    5667   REGEX_CHAIN_HEAD(to);
    5668   to->chain = add;
    5669   THREAD_ATOMIC_END;
    5670 }
    5671 
    5672 extern void
    5673 onig_chain_reduce(regex_t* reg)
    5674 {
    5675   regex_t *head, *prev;
    5676 
    5677   prev = reg;
    5678   head = prev->chain;
    5679   if (IS_NOT_NULL(head)) {
    5680     reg->state = ONIG_STATE_MODIFY;
    5681     while (IS_NOT_NULL(head->chain)) {
    5682       prev = head;
    5683       head = head->chain;
    5684     }
    5685     prev->chain = (regex_t* )NULL;
    5686     REGEX_TRANSFER(reg, head);
    5687   }
    5688 }
     5686}
     5687#endif
    56895688
    56905689#ifdef ONIG_DEBUG_COMPILE
    5691 static void print_compiled_byte_code_list P_((FILE* f, regex_t* reg));
     5690static void print_compiled_byte_code_list(FILE* f, regex_t* reg);
    56925691#endif
    56935692#ifdef ONIG_DEBUG_PARSE_TREE
    5694 static void print_tree P_((FILE* f, Node* node));
    5695 #endif
    5696 
     5693static void print_tree(FILE* f, Node* node);
     5694#endif
     5695
     5696#ifdef RUBY
    56975697extern int
    56985698onig_compile(regex_t* reg, const UChar* pattern, const UChar* pattern_end,
    5699               OnigErrorInfo* einfo)
     5699             OnigErrorInfo* einfo)
     5700{
     5701  return onig_compile_ruby(reg, pattern, pattern_end, einfo, NULL, 0);
     5702}
     5703#endif
     5704
     5705#ifdef RUBY
     5706extern int
     5707onig_compile_ruby(regex_t* reg, const UChar* pattern, const UChar* pattern_end,
     5708              OnigErrorInfo* einfo, const char *sourcefile, int sourceline)
     5709#else
     5710extern int
     5711onig_compile(regex_t* reg, const UChar* pattern, const UChar* pattern_end,
     5712             OnigErrorInfo* einfo)
     5713#endif
    57005714{
    57015715#define COMPILE_INIT_SIZE  20
     
    57115725  if (IS_NOT_NULL(einfo)) einfo->par = (UChar* )NULL;
    57125726
    5713   reg->state = ONIG_STATE_COMPILING;
     5727#ifdef RUBY
     5728  scan_env.sourcefile = sourcefile;
     5729  scan_env.sourceline = sourceline;
     5730#endif
    57145731
    57155732#ifdef ONIG_DEBUG
     
    57375754  r = onig_parse_make_tree(&root, pattern, pattern_end, reg, &scan_env);
    57385755  if (r != 0) goto err;
     5756
     5757#ifdef ONIG_DEBUG_PARSE_TREE
     5758# if 0
     5759  fprintf(stderr, "ORIGINAL PARSE TREE:\n");
     5760  print_tree(stderr, root);
     5761# endif
     5762#endif
    57395763
    57405764#ifdef USE_NAMED_GROUP
     
    57705794#endif
    57715795
    5772   r = setup_tree(root, reg, IN_ROOT, &scan_env);
     5796  r = setup_tree(root, reg, 0, &scan_env);
    57735797  if (r != 0) goto err_unset;
    57745798
     
    57895813#ifdef USE_COMBINATION_EXPLOSION_CHECK
    57905814  if (scan_env.backrefed_mem == 0
    5791 #ifdef USE_SUBEXP_CALL
     5815# ifdef USE_SUBEXP_CALL
    57925816      || scan_env.num_call == 0
    5793 #endif
     5817# endif
    57945818      ) {
    57955819    setup_comb_exp_check(root, 0, &scan_env);
    5796 #ifdef USE_SUBEXP_CALL
     5820# ifdef USE_SUBEXP_CALL
    57975821    if (scan_env.has_recursion != 0) {
    57985822      scan_env.num_comb_exp_check = 0;
    57995823    }
    58005824    else
    5801 #endif
     5825# endif
    58025826    if (scan_env.comb_exp_max_regnum > 0) {
    58035827      int i;
     
    58535877
    58545878#ifdef ONIG_DEBUG_COMPILE
    5855 #ifdef USE_NAMED_GROUP
     5879# ifdef USE_NAMED_GROUP
    58565880  onig_print_names(stderr, reg);
    5857 #endif
     5881# endif
    58585882  print_compiled_byte_code_list(stderr, reg);
    58595883#endif
    58605884
    58615885 end:
    5862   reg->state = ONIG_STATE_NORMAL;
    58635886  return r;
    58645887
     
    58845907}
    58855908
    5886 #ifdef USE_RECOMPILE_API
    5887 extern int
    5888 onig_recompile(regex_t* reg, const UChar* pattern, const UChar* pattern_end,
    5889             OnigOptionType option, OnigEncoding enc, OnigSyntaxType* syntax,
    5890             OnigErrorInfo* einfo)
    5891 {
    5892   int r;
    5893   regex_t *new_reg;
    5894 
    5895   r = onig_new(&new_reg, pattern, pattern_end, option, enc, syntax, einfo);
    5896   if (r) return r;
    5897   if (ONIG_STATE(reg) == ONIG_STATE_NORMAL) {
    5898     onig_transfer(reg, new_reg);
    5899   }
    5900   else {
    5901     onig_chain_link_add(reg, new_reg);
    5902   }
    5903   return 0;
    5904 }
    5905 #endif
    5906 
    59075909static int onig_inited = 0;
    59085910
     
    59105912onig_reg_init(regex_t* reg, OnigOptionType option,
    59115913              OnigCaseFoldType case_fold_flag,
    5912               OnigEncoding enc, OnigSyntaxType* syntax)
     5914              OnigEncoding enc, const OnigSyntaxType* syntax)
    59135915{
    59145916  if (! onig_inited)
     
    59255927    return ONIGERR_INVALID_COMBINATION_OF_OPTIONS;
    59265928  }
    5927 
    5928   (reg)->state = ONIG_STATE_MODIFY;
    59295929
    59305930  if ((option & ONIG_OPTION_NEGATE_SINGLELINE) != 0) {
     
    59565956onig_new_without_alloc(regex_t* reg, const UChar* pattern,
    59575957          const UChar* pattern_end, OnigOptionType option, OnigEncoding enc,
    5958           OnigSyntaxType* syntax, OnigErrorInfo* einfo)
     5958          const OnigSyntaxType* syntax, OnigErrorInfo* einfo)
    59595959{
    59605960  int r;
     
    59695969extern int
    59705970onig_new(regex_t** reg, const UChar* pattern, const UChar* pattern_end,
    5971           OnigOptionType option, OnigEncoding enc, OnigSyntaxType* syntax,
     5971          OnigOptionType option, OnigEncoding enc, const OnigSyntaxType* syntax,
    59725972          OnigErrorInfo* einfo)
    59735973{
     
    59895989}
    59905990
     5991extern int
     5992onig_initialize(OnigEncoding encodings[] ARG_UNUSED, int n ARG_UNUSED)
     5993{
     5994  return onig_init();
     5995}
    59915996
    59925997extern int
     
    59966001    return 0;
    59976002
    5998   THREAD_SYSTEM_INIT;
    5999   THREAD_ATOMIC_START;
    6000 
    60016003  onig_inited = 1;
     6004
     6005#if defined(ONIG_DEBUG_MEMLEAK) && defined(_MSC_VER)
     6006  _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);
     6007#endif
    60026008
    60036009  onigenc_init();
     
    60086014#endif
    60096015
    6010   THREAD_ATOMIC_END;
    60116016  return 0;
    60126017}
     
    60476052onig_end(void)
    60486053{
    6049   THREAD_ATOMIC_START;
    6050 
    60516054  exec_end_call_list();
    60526055
     
    60556058#endif
    60566059
    6057 #ifdef USE_SHARED_CCLASS_TABLE
    6058   onig_free_shared_cclass_table();
    6059 #endif
    6060 
    6061 #ifdef USE_PARSE_TREE_NODE_RECYCLE
    6062   onig_free_node_list();
     6060#if defined(ONIG_DEBUG_MEMLEAK) && defined(_MSC_VER)
     6061  _CrtDumpMemoryLeaks();
    60636062#endif
    60646063
    60656064  onig_inited = 0;
    60666065
    6067   THREAD_ATOMIC_END;
    6068   THREAD_SYSTEM_END;
    60696066  return 0;
    60706067}
     
    61326129
    61336130/* arguments type */
    6134 #define ARG_SPECIAL     -1
    6135 #define ARG_NON          0
    6136 #define ARG_RELADDR      1
    6137 #define ARG_ABSADDR      2
    6138 #define ARG_LENGTH       3
    6139 #define ARG_MEMNUM       4
    6140 #define ARG_OPTION       5
    6141 #define ARG_STATE_CHECK  6
     6131# define ARG_SPECIAL     -1
     6132# define ARG_NON          0
     6133# define ARG_RELADDR      1
     6134# define ARG_ABSADDR      2
     6135# define ARG_LENGTH       3
     6136# define ARG_MEMNUM       4
     6137# define ARG_OPTION       5
     6138# define ARG_STATE_CHECK  6
    61426139
    61436140OnigOpInfoType OnigOpInfo[] = {
     
    61646161  { OP_CCLASS_MB_NOT,     "cclass-mb-not",   ARG_SPECIAL },
    61656162  { OP_CCLASS_MIX_NOT,    "cclass-mix-not",  ARG_SPECIAL },
    6166   { OP_CCLASS_NODE,       "cclass-node",     ARG_SPECIAL },
    61676163  { OP_ANYCHAR,           "anychar",         ARG_NON },
    61686164  { OP_ANYCHAR_ML,        "anychar-ml",      ARG_NON },
     
    61896185  { OP_SEMI_END_BUF,        "semi-end-buf",    ARG_NON },
    61906186  { OP_BEGIN_POSITION,      "begin-position",  ARG_NON },
    6191   { OP_BEGIN_POS_OR_LINE,   "begin-pos-or-line",    ARG_NON },
    61926187  { OP_BACKREF1,            "backref1",             ARG_NON },
    61936188  { OP_BACKREF2,            "backref2",             ARG_NON },
     
    62316226  { OP_PUSH_LOOK_BEHIND_NOT, "push-look-behind-not", ARG_SPECIAL },
    62326227  { OP_FAIL_LOOK_BEHIND_NOT, "fail-look-behind-not", ARG_NON },
     6228  { OP_PUSH_ABSENT_POS,      "push-absent-pos",      ARG_NON },
     6229  { OP_ABSENT,               "absent",               ARG_RELADDR },
     6230  { OP_ABSENT_END,           "absent-end",           ARG_NON },
    62336231  { OP_CALL,                 "call",                 ARG_ABSADDR },
    62346232  { OP_RETURN,               "return",               ARG_NON },
     
    62676265}
    62686266
    6269 #ifdef ONIG_DEBUG_PARSE_TREE
     6267# ifdef ONIG_DEBUG_PARSE_TREE
    62706268static void
    62716269Indent(FILE* f, int indent)
     
    62746272  for (i = 0; i < indent; i++) putc(' ', f);
    62756273}
    6276 #endif /* ONIG_DEBUG_PARSE_TREE */
     6274# endif /* ONIG_DEBUG_PARSE_TREE */
    62776275
    62786276static void
     
    62936291
    62946292extern void
    6295 onig_print_compiled_byte_code(FILE* f, UChar* bp, UChar** nextp,
     6293onig_print_compiled_byte_code(FILE* f, UChar* bp, UChar* bpend, UChar** nextp,
    62966294                              OnigEncoding enc)
    62976295{
     
    63136311    case ARG_RELADDR:
    63146312      GET_RELADDR_INC(addr, bp);
    6315       fprintf(f, ":(+%d)", addr);
     6313      fprintf(f, ":(%s%d)", (addr >= 0) ? "+" : "", addr);
    63166314      break;
    63176315    case ARG_ABSADDR:
     
    63926390
    63936391    case OP_EXACT1_IC:
    6394       len = enclen(enc, bp);
     6392      len = enclen(enc, bp, bpend);
    63956393      p_string(f, len, bp);
    63966394      bp += len;
     
    64186416      GET_LENGTH_INC(len, bp);
    64196417      q = bp;
    6420 #ifndef PLATFORM_UNALIGNED_WORD_ACCESS
     6418# ifndef PLATFORM_UNALIGNED_WORD_ACCESS
    64216419      ALIGNMENT_RIGHT(q);
    6422 #endif
     6420# endif
    64236421      GET_CODE_POINT(code, q);
    64246422      bp += len;
     
    64326430      GET_LENGTH_INC(len, bp);
    64336431      q = bp;
    6434 #ifndef PLATFORM_UNALIGNED_WORD_ACCESS
     6432# ifndef PLATFORM_UNALIGNED_WORD_ACCESS
    64356433      ALIGNMENT_RIGHT(q);
    6436 #endif
     6434# endif
    64376435      GET_CODE_POINT(code, q);
    64386436      bp += len;
    64396437      fprintf(f, ":%d:%d:%d", n, (int )code, len);
    6440       break;
    6441 
    6442     case OP_CCLASS_NODE:
    6443       {
    6444         CClassNode *cc;
    6445 
    6446         GET_POINTER_INC(cc, bp);
    6447         n = bitset_on_num(cc->bs);
    6448         fprintf(f, ":%"PRIuPTR":%d", (uintptr_t )cc, n);
    6449       }
    64506438      break;
    64516439
     
    65026490      addr = *((RelAddrType* )bp);
    65036491      bp += SIZE_RELADDR;
    6504       fprintf(f, ":(%d)", addr);
     6492      fprintf(f, ":(%s%d)", (addr >= 0) ? "+" : "", addr);
    65056493      p_string(f, 1, bp);
    65066494      bp += 1;
     
    65156503      GET_RELADDR_INC(addr, bp);
    65166504      GET_LENGTH_INC(len, bp);
    6517       fprintf(f, ":%d:(%d)", len, addr);
     6505      fprintf(f, ":%d:(%s%d)", len, (addr >= 0) ? "+" : "", addr);
    65186506      break;
    65196507
     
    65246512      addr = *((RelAddrType* )bp);
    65256513      bp += SIZE_RELADDR;
    6526       fprintf(f, ":%d:(%d)", scn, addr);
     6514      fprintf(f, ":%d:(%s%d)", scn, (addr >= 0) ? "+" : "", addr);
    65276515      break;
    65286516
     
    65306518      GET_MEMNUM_INC(mem, bp);
    65316519      GET_RELADDR_INC(addr, bp);
    6532       fprintf(f, ":%d:(%d)", mem, addr);
     6520      fprintf(f, ":%d:(%s%d)", mem, (addr >= 0) ? "+" : "", addr);
    65336521      break;
    65346522
    65356523    default:
    65366524      fprintf(stderr, "onig_print_compiled_byte_code: undefined code %d\n",
    6537               *--bp);
     6525              bp[-1]);
    65386526    }
    65396527  }
     
    65426530}
    65436531
    6544 #ifdef ONIG_DEBUG_COMPILE
     6532# ifdef ONIG_DEBUG_COMPILE
    65456533static void
    65466534print_compiled_byte_code_list(FILE* f, regex_t* reg)
     
    65596547    else
    65606548      fprintf(f, " %ld:", bp - reg->p);
    6561     onig_print_compiled_byte_code(f, bp, &bp, reg->enc);
     6549    onig_print_compiled_byte_code(f, bp, end, &bp, reg->enc);
    65626550  }
    65636551
    65646552  fprintf(f, "\n");
    65656553}
    6566 #endif /* ONIG_DEBUG_COMPILE */
    6567 
    6568 #ifdef ONIG_DEBUG_PARSE_TREE
     6554# endif /* ONIG_DEBUG_COMPILE */
     6555
     6556# ifdef ONIG_DEBUG_PARSE_TREE
    65696557static void
    65706558print_indent_tree(FILE* f, Node* node, int indent)
     
    66136601  case NT_CCLASS:
    66146602    fprintf(f, "<cclass:%"PRIxPTR">", (intptr_t )node);
    6615     if (IS_NCCLASS_NOT(NCCLASS(node))) fputs(" not", f);
     6603    if (IS_NCCLASS_NOT(NCCLASS(node))) fputs("not ", f);
    66166604    if (NCCLASS(node)->mbuf) {
    66176605      BBuf* bbuf = NCCLASS(node)->mbuf;
    6618       for (i = 0; i < (int )bbuf->used; i++) {
    6619         if (i > 0) fprintf(f, ",");
    6620         fprintf(f, "%0x", bbuf->p[i]);
     6606      OnigCodePoint* data = (OnigCodePoint* )bbuf->p;
     6607      OnigCodePoint* end = (OnigCodePoint* )(bbuf->p + bbuf->used);
     6608      fprintf(f, "%d", *data++);
     6609      for (; data < end; data+=2) {
     6610        fprintf(f, ",");
     6611        fprintf(f, "%04x-%04x", data[0], data[1]);
    66216612      }
    66226613    }
     
    66526643    case ANCHOR_SEMI_END_BUF:   fputs("semi end buf",   f); break;
    66536644    case ANCHOR_BEGIN_POSITION: fputs("begin position", f); break;
    6654     case ANCHOR_ANYCHAR_STAR:   fputs("begin position/line", f); break;
    66556645
    66566646    case ANCHOR_WORD_BOUND:      fputs("word bound",     f); break;
    66576647    case ANCHOR_NOT_WORD_BOUND:  fputs("not word bound", f); break;
    6658 #ifdef USE_WORD_BEGIN_END
     6648#  ifdef USE_WORD_BEGIN_END
    66596649    case ANCHOR_WORD_BEGIN:      fputs("word begin", f);     break;
    66606650    case ANCHOR_WORD_END:        fputs("word end", f);       break;
    6661 #endif
     6651#  endif
    66626652    case ANCHOR_PREC_READ:       fputs("prec read",      f); container_p = TRUE; break;
    66636653    case ANCHOR_PREC_READ_NOT:   fputs("prec read not",  f); container_p = TRUE; break;
     
    66856675    break;
    66866676
    6687 #ifdef USE_SUBEXP_CALL
     6677#  ifdef USE_SUBEXP_CALL
    66886678  case NT_CALL:
    66896679    {
     
    66936683    }
    66946684    break;
    6695 #endif
     6685#  endif
    66966686
    66976687  case NT_QTFR:
     
    67176707      fprintf(f, "condition:%d", NENCLOSE(node)->regnum);
    67186708      break;
     6709    case ENCLOSE_ABSENT:
     6710      fprintf(f, "absent");
     6711      break;
    67196712
    67206713    default:
     
    67446737  print_indent_tree(f, node, 0);
    67456738}
    6746 #endif /* ONIG_DEBUG_PARSE_TREE */
     6739# endif /* ONIG_DEBUG_PARSE_TREE */
    67476740#endif /* ONIG_DEBUG */
  • EcnlProtoTool/trunk/onigmo-6.1.3/src/regenc.c

    r321 r331  
    44/*-
    55 * Copyright (c) 2002-2007  K.Kosako  <sndgk393 AT ybb DOT ne DOT jp>
    6  * Copyright (c) 2011       K.Takata  <kentkt AT csc DOT jp>
     6 * Copyright (c) 2011-2016  K.Takata  <kentkt AT csc DOT jp>
    77 * All rights reserved.
    88 *
     
    5252}
    5353
     54extern int
     55onigenc_mbclen_approximate(const OnigUChar* p,const OnigUChar* e, OnigEncoding enc)
     56{
     57  int ret = ONIGENC_PRECISE_MBC_ENC_LEN(enc, p, e);
     58  if (ONIGENC_MBCLEN_CHARFOUND_P(ret))
     59    return ONIGENC_MBCLEN_CHARFOUND_LEN(ret);
     60  else if (ONIGENC_MBCLEN_NEEDMORE_P(ret))
     61    return (int )(e - p) + ONIGENC_MBCLEN_NEEDMORE_LEN(ret);
     62  return 1;
     63}
     64
    5465extern UChar*
    55 onigenc_get_right_adjust_char_head(OnigEncoding enc, const UChar* start, const UChar* s)
    56 {
    57   UChar* p = ONIGENC_LEFT_ADJUST_CHAR_HEAD(enc, start, s);
     66onigenc_get_right_adjust_char_head(OnigEncoding enc, const UChar* start, const UChar* s, const UChar* end)
     67{
     68  UChar* p = ONIGENC_LEFT_ADJUST_CHAR_HEAD(enc, start, s, end);
    5869  if (p < s) {
    59     p += enclen(enc, p);
     70    p += enclen(enc, p, end);
    6071  }
    6172  return p;
     
    6475extern UChar*
    6576onigenc_get_right_adjust_char_head_with_prev(OnigEncoding enc,
    66                                    const UChar* start, const UChar* s, const UChar** prev)
    67 {
    68   UChar* p = ONIGENC_LEFT_ADJUST_CHAR_HEAD(enc, start, s);
     77                                   const UChar* start, const UChar* s, const UChar* end, const UChar** prev)
     78{
     79  UChar* p = ONIGENC_LEFT_ADJUST_CHAR_HEAD(enc, start, s, end);
    6980
    7081  if (p < s) {
    7182    if (prev) *prev = (const UChar* )p;
    72     p += enclen(enc, p);
     83    p += enclen(enc, p, end);
    7384  }
    7485  else {
     
    7990
    8091extern UChar*
    81 onigenc_get_prev_char_head(OnigEncoding enc, const UChar* start, const UChar* s)
     92onigenc_get_prev_char_head(OnigEncoding enc, const UChar* start, const UChar* s, const UChar* end)
    8293{
    8394  if (s <= start)
    8495    return (UChar* )NULL;
    8596
    86   return ONIGENC_LEFT_ADJUST_CHAR_HEAD(enc, start, s - 1);
     97  return ONIGENC_LEFT_ADJUST_CHAR_HEAD(enc, start, s - 1, end);
    8798}
    8899
    89100extern UChar*
    90 onigenc_step_back(OnigEncoding enc, const UChar* start, const UChar* s, int n)
     101onigenc_step_back(OnigEncoding enc, const UChar* start, const UChar* s, const UChar* end, int n)
    91102{
    92103  while (ONIG_IS_NOT_NULL(s) && n-- > 0) {
     
    94105      return (UChar* )NULL;
    95106
    96     s = ONIGENC_LEFT_ADJUST_CHAR_HEAD(enc, start, s - 1);
     107    s = ONIGENC_LEFT_ADJUST_CHAR_HEAD(enc, start, s - 1, end);
    97108  }
    98109  return (UChar* )s;
     
    104115  UChar* q = (UChar* )p;
    105116  while (n-- > 0) {
    106     q += ONIGENC_MBC_ENC_LEN(enc, q);
     117    q += ONIGENC_MBC_ENC_LEN(enc, q, end);
    107118  }
    108119  return (q <= end ? q : NULL);
     
    116127
    117128  while (q < end) {
    118     q += ONIGENC_MBC_ENC_LEN(enc, q);
     129    q += ONIGENC_MBC_ENC_LEN(enc, q, end);
    119130    n++;
    120131  }
     
    127138  int n = 0;
    128139  UChar* p = (UChar* )s;
     140  UChar* e;
    129141
    130142  while (1) {
     
    142154      if (len == 1) return n;
    143155    }
    144     p += ONIGENC_MBC_ENC_LEN(enc, p);
     156    e = p + ONIGENC_MBC_MAXLEN(enc);
     157    p += ONIGENC_MBC_ENC_LEN(enc, p, e);
    145158    n++;
    146159  }
     
    152165  UChar* start = (UChar* )s;
    153166  UChar* p = (UChar* )s;
     167  UChar* e;
    154168
    155169  while (1) {
     
    167181      if (len == 1) return (int )(p - start);
    168182    }
    169     p += ONIGENC_MBC_ENC_LEN(enc, p);
     183    e = p + ONIGENC_MBC_MAXLEN(enc);
     184    p += ONIGENC_MBC_ENC_LEN(enc, p, e);
    170185  }
    171186}
     
    350365#endif
    351366
     367#if 0
    352368extern void
    353369onigenc_set_default_caseconv_table(const UChar* table ARG_UNUSED)
     
    356372  /* obsoleted. */
    357373}
     374#endif
    358375
    359376extern UChar*
    360 onigenc_get_left_adjust_char_head(OnigEncoding enc, const UChar* start, const UChar* s)
    361 {
    362   return ONIGENC_LEFT_ADJUST_CHAR_HEAD(enc, start, s);
     377onigenc_get_left_adjust_char_head(OnigEncoding enc, const UChar* start, const UChar* s, const UChar* end)
     378{
     379  return ONIGENC_LEFT_ADJUST_CHAR_HEAD(enc, start, s, end);
    363380}
    364381
     
    394411extern int
    395412onigenc_ascii_apply_all_case_fold(OnigCaseFoldType flag ARG_UNUSED,
    396                                   OnigApplyAllCaseFoldFunc f, void* arg)
     413                                  OnigApplyAllCaseFoldFunc f, void* arg,
     414                                  OnigEncoding enc ARG_UNUSED)
    397415{
    398416  OnigCodePoint code;
     
    415433onigenc_ascii_get_case_fold_codes_by_str(OnigCaseFoldType flag ARG_UNUSED,
    416434         const OnigUChar* p, const OnigUChar* end ARG_UNUSED,
    417          OnigCaseFoldCodeItem items[])
     435         OnigCaseFoldCodeItem items[], OnigEncoding enc ARG_UNUSED)
    418436{
    419437  if (0x41 <= *p && *p <= 0x5a) {
     
    451469  int i, r;
    452470
    453   r = onigenc_ascii_apply_all_case_fold(flag, f, arg);
     471  r = onigenc_ascii_apply_all_case_fold(flag, f, arg, 0);
    454472  if (r != 0) return r;
    455473
     
    555573onigenc_not_support_get_ctype_code_range(OnigCtype ctype ARG_UNUSED,
    556574         OnigCodePoint* sb_out ARG_UNUSED,
    557          const OnigCodePoint* ranges[] ARG_UNUSED)
     575         const OnigCodePoint* ranges[] ARG_UNUSED,
     576         OnigEncoding enc)
    558577{
    559578  return ONIG_NO_SUPPORT_CONFIG;
     
    561580
    562581extern int
    563 onigenc_is_mbc_newline_0x0a(const UChar* p, const UChar* end)
     582onigenc_is_mbc_newline_0x0a(const UChar* p, const UChar* end, OnigEncoding enc ARG_UNUSED)
    564583{
    565584  if (p < end) {
     
    572591extern int
    573592onigenc_ascii_mbc_case_fold(OnigCaseFoldType flag ARG_UNUSED, const UChar** p,
    574             const UChar*end ARG_UNUSED, UChar* lower)
     593                            const UChar* end, UChar* lower, OnigEncoding enc ARG_UNUSED)
    575594{
    576595  *lower = ONIGENC_ASCII_CODE_TO_LOWER_CASE(**p);
     
    593612
    594613extern int
    595 onigenc_single_byte_mbc_enc_len(const UChar* p ARG_UNUSED)
     614onigenc_single_byte_mbc_enc_len(const UChar* p ARG_UNUSED, const UChar* e ARG_UNUSED,
     615                                OnigEncoding enc ARG_UNUSED)
    596616{
    597617  return 1;
     
    599619
    600620extern OnigCodePoint
    601 onigenc_single_byte_mbc_to_code(const UChar* p, const UChar* end ARG_UNUSED)
     621onigenc_single_byte_mbc_to_code(const UChar* p, const UChar* end ARG_UNUSED,
     622                                OnigEncoding enc ARG_UNUSED)
    602623{
    603624  return (OnigCodePoint )(*p);
     
    605626
    606627extern int
    607 onigenc_single_byte_code_to_mbclen(OnigCodePoint code ARG_UNUSED)
    608 {
    609   return (code < 0x100 ? 1 : ONIGERR_INVALID_CODE_POINT_VALUE);
    610 }
    611 
    612 extern int
    613 onigenc_single_byte_code_to_mbc(OnigCodePoint code, UChar *buf)
    614 {
     628onigenc_single_byte_code_to_mbclen(OnigCodePoint code ARG_UNUSED, OnigEncoding enc ARG_UNUSED)
     629{
     630  return 1;
     631}
     632
     633extern int
     634onigenc_single_byte_code_to_mbc(OnigCodePoint code, UChar *buf, OnigEncoding enc ARG_UNUSED)
     635{
     636#ifdef RUBY
     637  if (code > 0xff)
     638    rb_raise(rb_eRangeError, "%u out of char range", code);
     639#endif
    615640  *buf = (UChar )(code & 0xff);
    616641  return 1;
     
    619644extern UChar*
    620645onigenc_single_byte_left_adjust_char_head(const UChar* start ARG_UNUSED,
    621                                           const UChar* s)
     646                                          const UChar* s,
     647                                          const UChar* end ARG_UNUSED,
     648                                          OnigEncoding enc ARG_UNUSED)
    622649{
    623650  return (UChar* )s;
     
    626653extern int
    627654onigenc_always_true_is_allowed_reverse_match(const UChar* s   ARG_UNUSED,
    628                                              const UChar* end ARG_UNUSED)
     655                                             const UChar* end ARG_UNUSED,
     656                                             OnigEncoding enc ARG_UNUSED)
    629657{
    630658  return TRUE;
     
    633661extern int
    634662onigenc_always_false_is_allowed_reverse_match(const UChar* s   ARG_UNUSED,
    635                                               const UChar* end ARG_UNUSED)
     663                                              const UChar* end ARG_UNUSED,
     664                                              OnigEncoding enc ARG_UNUSED)
    636665{
    637666  return FALSE;
     
    639668
    640669extern int
    641 onigenc_ascii_is_code_ctype(OnigCodePoint code, unsigned int ctype)
     670onigenc_ascii_is_code_ctype(OnigCodePoint code, unsigned int ctype,
     671                            OnigEncoding enc ARG_UNUSED)
    642672{
    643673  if (code < 128)
     
    653683  OnigCodePoint n;
    654684
    655   len = enclen(enc, p);
     685  len = enclen(enc, p, end);
    656686  n = (OnigCodePoint )(*p++);
    657687  if (len == 1) return n;
     
    681711    int i;
    682712
    683     len = enclen(enc, p);
     713    len = enclen(enc, p, end);
    684714    for (i = 0; i < len; i++) {
    685715      *lower++ = *p++;
     
    708738
    709739extern int
    710 onigenc_mb2_code_to_mbclen(OnigCodePoint code)
    711 {
    712   if ((code & 0xff00) != 0) return 2;
    713   else return 1;
    714 }
    715 
    716 extern int
    717 onigenc_mb4_code_to_mbclen(OnigCodePoint code)
     740onigenc_mb2_code_to_mbclen(OnigCodePoint code, OnigEncoding enc ARG_UNUSED)
     741{
     742  if (code <= 0xff) return 1;
     743  if (code <= 0xffff) return 2;
     744  return ONIGERR_TOO_BIG_WIDE_CHAR_VALUE;
     745}
     746
     747extern int
     748onigenc_mb4_code_to_mbclen(OnigCodePoint code, OnigEncoding enc ARG_UNUSED)
    718749{
    719750       if ((code & 0xff000000) != 0) return 4;
     
    734765
    735766#if 1
    736   if (enclen(enc, buf) != (p - buf))
     767  if (enclen(enc, buf, p) != (p - buf))
    737768    return ONIGERR_INVALID_CODE_POINT_VALUE;
    738769#endif
     
    757788
    758789#if 1
    759   if (enclen(enc, buf) != (p - buf))
     790  if (enclen(enc, buf, p) != (p - buf))
    760791    return ONIGERR_INVALID_CODE_POINT_VALUE;
    761792#endif
     
    764795
    765796extern int
    766 onigenc_minimum_property_name_to_ctype(OnigEncoding enc, UChar* p, UChar* end)
     797onigenc_minimum_property_name_to_ctype(OnigEncoding enc, const UChar* p, const UChar* end)
    767798{
    768799  static const PosixBracketEntryType PBS[] = {
     
    840871
    841872    sascii++;
    842     p += enclen(enc, p);
     873    p += enclen(enc, p, end);
    843874  }
    844875  return 0;
     
    861892
    862893    sascii++;
    863     p += enclen(enc, p);
     894    p += enclen(enc, p, end);
    864895  }
    865896  return 0;
    866897}
    867898
     899#if 0
    868900/* Property management */
    869901static int
     
    918950  return 0;
    919951}
    920 
    921 extern int
    922 onigenc_property_list_init(int (*f)(void))
    923 {
    924   int r;
    925 
    926   THREAD_ATOMIC_START;
    927 
    928   r = f();
    929 
    930   THREAD_ATOMIC_END;
    931   return r;
    932 }
     952#endif
     953
     954extern int
     955onigenc_ascii_only_case_map(OnigCaseFoldType* flagP, const OnigUChar** pp, const OnigUChar* end,
     956                            OnigUChar* to, OnigUChar* to_end, const struct OnigEncodingTypeST* enc)
     957{
     958  OnigCodePoint code;
     959  OnigUChar *to_start = to;
     960  OnigCaseFoldType flags = *flagP;
     961  int codepoint_length;
     962
     963  while (*pp < end && to < to_end) {
     964    codepoint_length = ONIGENC_PRECISE_MBC_ENC_LEN(enc, *pp, end);
     965    if (codepoint_length < 0)
     966      return codepoint_length; /* encoding invalid */
     967    code = ONIGENC_MBC_TO_CODE(enc, *pp, end);
     968    *pp += codepoint_length;
     969
     970    if (code >= 'a' && code <= 'z' && (flags & ONIGENC_CASE_UPCASE)) {
     971      flags |= ONIGENC_CASE_MODIFIED;
     972      code += 'A' - 'a';
     973    } else if (code >= 'A' && code <= 'Z' &&
     974        (flags & (ONIGENC_CASE_DOWNCASE | ONIGENC_CASE_FOLD))) {
     975      flags |= ONIGENC_CASE_MODIFIED;
     976      code += 'a' - 'A';
     977    }
     978    to += ONIGENC_CODE_TO_MBC(enc, code, to);
     979    if (flags & ONIGENC_CASE_TITLECASE)  /* switch from titlecase to lowercase for capitalize */
     980      flags ^= (ONIGENC_CASE_UPCASE | ONIGENC_CASE_DOWNCASE | ONIGENC_CASE_TITLECASE);
     981  }
     982  *flagP = flags;
     983  return (int )(to - to_start);
     984}
     985
     986extern int
     987onigenc_single_byte_ascii_only_case_map(OnigCaseFoldType* flagP, const OnigUChar** pp,
     988                                        const OnigUChar* end, OnigUChar* to, OnigUChar* to_end,
     989                                        const struct OnigEncodingTypeST* enc)
     990{
     991  OnigCodePoint code;
     992  OnigUChar *to_start = to;
     993  OnigCaseFoldType flags = *flagP;
     994
     995  while (*pp < end && to < to_end) {
     996    code = *(*pp)++;
     997
     998    if (code >= 'a' && code <= 'z' && (flags & ONIGENC_CASE_UPCASE)) {
     999      flags |= ONIGENC_CASE_MODIFIED;
     1000      code += 'A' - 'a';
     1001    } else if (code >= 'A' && code <= 'Z' &&
     1002        (flags & (ONIGENC_CASE_DOWNCASE | ONIGENC_CASE_FOLD))) {
     1003      flags |= ONIGENC_CASE_MODIFIED;
     1004      code += 'a' - 'A';
     1005    }
     1006    *to++ = code;
     1007    if (flags & ONIGENC_CASE_TITLECASE)  /* switch from titlecase to lowercase for capitalize */
     1008      flags ^= (ONIGENC_CASE_UPCASE | ONIGENC_CASE_DOWNCASE | ONIGENC_CASE_TITLECASE);
     1009  }
     1010  *flagP = flags;
     1011  return (int )(to - to_start);
     1012}
  • EcnlProtoTool/trunk/onigmo-6.1.3/src/regenc.h

    r321 r331  
    1 #ifndef REGENC_H
    2 #define REGENC_H
     1#ifndef ONIGMO_REGENC_H
     2#define ONIGMO_REGENC_H
    33/**********************************************************************
    44  regenc.h -  Onigmo (Oniguruma-mod) (regular expression library)
     
    66/*-
    77 * Copyright (c) 2002-2008  K.Kosako  <sndgk393 AT ybb DOT ne DOT jp>
    8  * Copyright (c) 2011       K.Takata  <kentkt AT csc DOT jp>
     8 * Copyright (c) 2011-2016  K.Takata  <kentkt AT csc DOT jp>
    99 * All rights reserved.
    1010 *
     
    3131 */
    3232
    33 #ifndef PACKAGE
     33#if !defined(RUBY) && (defined(RUBY_EXPORT) || defined(ONIG_ENC_REGISTER))
     34# define RUBY
     35#endif
     36#ifdef RUBY
     37# ifndef ONIGMO_REGINT_H
     38#  ifndef RUBY_EXTERN
     39#   include "ruby/config.h"
     40#   include "ruby/defines.h"
     41#  endif
     42# endif
     43#else /* RUBY */
     44# ifndef PACKAGE
    3445/* PACKAGE is defined in config.h */
    35 #include "config.h"
    36 #endif
     46#  include "config.h"
     47# endif
     48#endif /* RUBY */
    3749
    3850#ifdef ONIG_ESCAPE_UCHAR_COLLISION
    39 #undef ONIG_ESCAPE_UCHAR_COLLISION
    40 #endif
    41 
    42 #include "oniguruma.h"
     51# undef ONIG_ESCAPE_UCHAR_COLLISION
     52#endif
     53
     54#ifdef RUBY
     55# include "ruby/onigmo.h"
     56#else
     57# include "onigmo.h"
     58#endif
     59
     60RUBY_SYMBOL_EXPORT_BEGIN
    4361
    4462typedef struct {
     
    4967
    5068#ifndef NULL
    51 #define NULL   ((void* )0)
     69# define NULL   ((void* )0)
    5270#endif
    5371
    5472#ifndef TRUE
    55 #define TRUE    1
     73# define TRUE    1
    5674#endif
    5775
    5876#ifndef FALSE
    59 #define FALSE   0
     77# define FALSE   0
    6078#endif
    6179
    6280#ifndef ARG_UNUSED
    63 #if defined(__GNUC__)
     81# if defined(__GNUC__)
    6482#  define ARG_UNUSED  __attribute__ ((unused))
    65 #else
     83# else
    6684#  define ARG_UNUSED
    67 #endif
     85# endif
    6886#endif
    6987
     
    7391#define ONIG_CHECK_NULL_RETURN_VAL(p,val)  if (ONIG_IS_NULL(p)) return (val)
    7492
    75 #define enclen(enc,p)      ONIGENC_MBC_ENC_LEN(enc,p)
     93#define enclen(enc,p,e) ((enc->max_enc_len == enc->min_enc_len) ? enc->min_enc_len : ONIGENC_MBC_ENC_LEN(enc,p,e))
    7694
    7795/* character types bit flag */
     
    99117
    100118typedef struct {
    101   const UChar *name;
     119  short int len;
     120  const UChar name[6];
    102121  int       ctype;
    103   short int len;
    104122} PosixBracketEntryType;
    105123
    106124#define POSIX_BRACKET_ENTRY_INIT(name, ctype) \
    107   {(const UChar* )(name), (ctype), (short int )(sizeof(name) - 1)}
     125  {(short int )(sizeof(name) - 1), (name), (ctype)}
    108126
    109127#ifndef numberof
    110 #define numberof(array) (int )(sizeof(array) / sizeof((array)[0]))
     128# define numberof(array) (int )(sizeof(array) / sizeof((array)[0]))
    111129#endif
    112130
     
    119137
    120138
    121 #define ONIG_ENCODING_INIT_DEFAULT           ONIG_ENCODING_UTF8
     139#define ONIG_ENCODING_INIT_DEFAULT           ONIG_ENCODING_ASCII
    122140
    123141/* for encoding system implementation (internal) */
    124 ONIG_EXTERN int onigenc_ascii_apply_all_case_fold P_((OnigCaseFoldType flag, OnigApplyAllCaseFoldFunc f, void* arg));
    125 ONIG_EXTERN int onigenc_ascii_get_case_fold_codes_by_str P_((OnigCaseFoldType flag, const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[]));
    126 ONIG_EXTERN int onigenc_apply_all_case_fold_with_map P_((int map_size, const OnigPairCaseFoldCodes map[], int ess_tsett_flag, OnigCaseFoldType flag, OnigApplyAllCaseFoldFunc f, void* arg));
    127 ONIG_EXTERN int onigenc_get_case_fold_codes_by_str_with_map P_((int map_size, const OnigPairCaseFoldCodes map[], int ess_tsett_flag, OnigCaseFoldType flag, const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[]));
    128 ONIG_EXTERN int onigenc_not_support_get_ctype_code_range P_((OnigCtype ctype, OnigCodePoint* sb_out, const OnigCodePoint* ranges[]));
    129 ONIG_EXTERN int onigenc_is_mbc_newline_0x0a P_((const UChar* p, const UChar* end));
     142ONIG_EXTERN int onigenc_ascii_apply_all_case_fold(OnigCaseFoldType flag, OnigApplyAllCaseFoldFunc f, void* arg, OnigEncoding enc);
     143ONIG_EXTERN int onigenc_ascii_get_case_fold_codes_by_str(OnigCaseFoldType flag, const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[], OnigEncoding enc);
     144ONIG_EXTERN int onigenc_apply_all_case_fold_with_map(int map_size, const OnigPairCaseFoldCodes map[], int ess_tsett_flag, OnigCaseFoldType flag, OnigApplyAllCaseFoldFunc f, void* arg);
     145ONIG_EXTERN int onigenc_get_case_fold_codes_by_str_with_map(int map_size, const OnigPairCaseFoldCodes map[], int ess_tsett_flag, OnigCaseFoldType flag, const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[]);
     146ONIG_EXTERN int onigenc_not_support_get_ctype_code_range(OnigCtype ctype, OnigCodePoint* sb_out, const OnigCodePoint* ranges[], OnigEncoding enc);
     147ONIG_EXTERN int onigenc_is_mbc_newline_0x0a(const UChar* p, const UChar* end, OnigEncoding enc);
     148ONIG_EXTERN int    onigenc_single_byte_ascii_only_case_map(OnigCaseFoldType* flagP, const OnigUChar** pp, const OnigUChar* end, OnigUChar* to, OnigUChar* to_end, const struct OnigEncodingTypeST* enc);
    130149
    131150
    132151/* methods for single byte encoding */
    133 ONIG_EXTERN int onigenc_ascii_mbc_case_fold P_((OnigCaseFoldType flag, const UChar** p, const UChar* end, UChar* lower));
    134 ONIG_EXTERN int onigenc_single_byte_mbc_enc_len P_((const UChar* p));
    135 ONIG_EXTERN OnigCodePoint onigenc_single_byte_mbc_to_code P_((const UChar* p, const UChar* end));
    136 ONIG_EXTERN int onigenc_single_byte_code_to_mbclen P_((OnigCodePoint code));
    137 ONIG_EXTERN int onigenc_single_byte_code_to_mbc P_((OnigCodePoint code, UChar *buf));
    138 ONIG_EXTERN UChar* onigenc_single_byte_left_adjust_char_head P_((const UChar* start, const UChar* s));
    139 ONIG_EXTERN int onigenc_always_true_is_allowed_reverse_match P_((const UChar* s, const UChar* end));
    140 ONIG_EXTERN int onigenc_always_false_is_allowed_reverse_match P_((const UChar* s, const UChar* end));
    141 ONIG_EXTERN int onigenc_ascii_is_code_ctype P_((OnigCodePoint code, unsigned int ctype));
     152ONIG_EXTERN int onigenc_ascii_mbc_case_fold(OnigCaseFoldType flag, const UChar** p, const UChar* end, UChar* lower, OnigEncoding enc);
     153ONIG_EXTERN int onigenc_single_byte_mbc_enc_len(const UChar* p, const UChar* e, OnigEncoding enc);
     154ONIG_EXTERN OnigCodePoint onigenc_single_byte_mbc_to_code(const UChar* p, const UChar* end, OnigEncoding enc);
     155ONIG_EXTERN int onigenc_single_byte_code_to_mbclen(OnigCodePoint code, OnigEncoding enc);
     156ONIG_EXTERN int onigenc_single_byte_code_to_mbc(OnigCodePoint code, UChar *buf, OnigEncoding enc);
     157ONIG_EXTERN UChar* onigenc_single_byte_left_adjust_char_head(const UChar* start, const UChar* s, const OnigUChar* end, OnigEncoding enc);
     158ONIG_EXTERN int onigenc_always_true_is_allowed_reverse_match(const UChar* s, const UChar* end, OnigEncoding enc);
     159ONIG_EXTERN int onigenc_always_false_is_allowed_reverse_match(const UChar* s, const UChar* end, OnigEncoding enc);
     160ONIG_EXTERN int onigenc_ascii_is_code_ctype(OnigCodePoint code, unsigned int ctype, OnigEncoding enc);
    142161
    143162/* methods for multi byte encoding */
    144 ONIG_EXTERN OnigCodePoint onigenc_mbn_mbc_to_code P_((OnigEncoding enc, const UChar* p, const UChar* end));
    145 ONIG_EXTERN int onigenc_mbn_mbc_case_fold P_((OnigEncoding enc, OnigCaseFoldType flag, const UChar** p, const UChar* end, UChar* lower));
    146 ONIG_EXTERN int onigenc_mb2_code_to_mbclen P_((OnigCodePoint code));
    147 ONIG_EXTERN int onigenc_mb2_code_to_mbc P_((OnigEncoding enc, OnigCodePoint code, UChar *buf));
    148 ONIG_EXTERN int onigenc_minimum_property_name_to_ctype P_((OnigEncoding enc, UChar* p, UChar* end));
    149 ONIG_EXTERN int onigenc_unicode_property_name_to_ctype P_((OnigEncoding enc, UChar* p, UChar* end));
    150 ONIG_EXTERN int onigenc_mb2_is_code_ctype P_((OnigEncoding enc, OnigCodePoint code, unsigned int ctype));
    151 ONIG_EXTERN int onigenc_mb4_code_to_mbclen P_((OnigCodePoint code));
    152 ONIG_EXTERN int onigenc_mb4_code_to_mbc P_((OnigEncoding enc, OnigCodePoint code, UChar *buf));
    153 ONIG_EXTERN int onigenc_mb4_is_code_ctype P_((OnigEncoding enc, OnigCodePoint code, unsigned int ctype));
     163ONIG_EXTERN OnigCodePoint onigenc_mbn_mbc_to_code(OnigEncoding enc, const UChar* p, const UChar* end);
     164ONIG_EXTERN int onigenc_mbn_mbc_case_fold(OnigEncoding enc, OnigCaseFoldType flag, const UChar** p, const UChar* end, UChar* lower);
     165ONIG_EXTERN int onigenc_mb2_code_to_mbclen(OnigCodePoint code, OnigEncoding enc);
     166ONIG_EXTERN int onigenc_mb2_code_to_mbc(OnigEncoding enc, OnigCodePoint code, UChar *buf);
     167ONIG_EXTERN int onigenc_minimum_property_name_to_ctype(OnigEncoding enc, const UChar* p, const UChar* end);
     168ONIG_EXTERN int onigenc_unicode_property_name_to_ctype(OnigEncoding enc, const UChar* p, const UChar* end);
     169ONIG_EXTERN int onigenc_mb2_is_code_ctype(OnigEncoding enc, OnigCodePoint code, unsigned int ctype);
     170ONIG_EXTERN int onigenc_mb4_code_to_mbclen(OnigCodePoint code, OnigEncoding enc);
     171ONIG_EXTERN int onigenc_mb4_code_to_mbc(OnigEncoding enc, OnigCodePoint code, UChar *buf);
     172ONIG_EXTERN int onigenc_mb4_is_code_ctype(OnigEncoding enc, OnigCodePoint code, unsigned int ctype);
     173
     174ONIG_EXTERN int onigenc_unicode_case_map(OnigCaseFoldType* flagP, const OnigUChar** pp, const OnigUChar* end, OnigUChar* to, OnigUChar* to_end, const struct OnigEncodingTypeST* enc);
    154175
    155176
    156177/* in enc/unicode.c */
    157 ONIG_EXTERN int onigenc_unicode_is_code_ctype P_((OnigCodePoint code, unsigned int ctype));
    158 ONIG_EXTERN int onigenc_utf16_32_get_ctype_code_range P_((OnigCtype ctype, OnigCodePoint *sb_out, const OnigCodePoint* ranges[]));
    159 ONIG_EXTERN int onigenc_unicode_ctype_code_range P_((int ctype, const OnigCodePoint* ranges[]));
    160 ONIG_EXTERN int onigenc_unicode_get_case_fold_codes_by_str P_((OnigEncoding enc, OnigCaseFoldType flag, const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[]));
    161 ONIG_EXTERN int onigenc_unicode_mbc_case_fold P_((OnigEncoding enc, OnigCaseFoldType flag, const UChar** pp, const UChar* end, UChar* fold));
    162 ONIG_EXTERN int onigenc_unicode_apply_all_case_fold P_((OnigCaseFoldType flag, OnigApplyAllCaseFoldFunc f, void* arg));
     178ONIG_EXTERN int onigenc_unicode_is_code_ctype(OnigCodePoint code, unsigned int ctype, OnigEncoding enc);
     179ONIG_EXTERN int onigenc_utf16_32_get_ctype_code_range(OnigCtype ctype, OnigCodePoint *sb_out, const OnigCodePoint* ranges[], OnigEncoding enc);
     180ONIG_EXTERN int onigenc_unicode_ctype_code_range(int ctype, const OnigCodePoint* ranges[]);
     181ONIG_EXTERN int onigenc_unicode_get_case_fold_codes_by_str(OnigEncoding enc, OnigCaseFoldType flag, const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[]);
     182ONIG_EXTERN int onigenc_unicode_mbc_case_fold(OnigEncoding enc, OnigCaseFoldType flag, const UChar** pp, const UChar* end, UChar* fold);
     183ONIG_EXTERN int onigenc_unicode_apply_all_case_fold(OnigCaseFoldType flag, OnigApplyAllCaseFoldFunc f, void* arg, OnigEncoding enc);
    163184
    164185
    165186#define UTF16_IS_SURROGATE_FIRST(c)    (((c) & 0xfc) == 0xd8)
    166187#define UTF16_IS_SURROGATE_SECOND(c)   (((c) & 0xfc) == 0xdc)
     188#define UTF16_IS_SURROGATE(c)          (((c) & 0xf8) == 0xd8)
     189#define UNICODE_VALID_CODEPOINT_P(c) ( \
     190        ((c) <= 0x10ffff) && \
     191        !((c) < 0x10000 && UTF16_IS_SURROGATE((c) >> 8)))
    167192
    168193#define ONIGENC_ISO_8859_1_TO_LOWER_CASE(c) \
     
    175200
    176201ONIG_EXTERN int
    177 onigenc_with_ascii_strncmp P_((OnigEncoding enc, const UChar* p, const UChar* end, const UChar* sascii /* ascii */, int n));
     202onigenc_with_ascii_strncmp(OnigEncoding enc, const UChar* p, const UChar* end, const UChar* sascii /* ascii */, int n);
    178203ONIG_EXTERN int
    179 onigenc_with_ascii_strnicmp P_((OnigEncoding enc, const UChar* p, const UChar* end, const UChar* sascii /* ascii */, int n));
     204onigenc_with_ascii_strnicmp(OnigEncoding enc, const UChar* p, const UChar* end, const UChar* sascii /* ascii */, int n);
    180205ONIG_EXTERN UChar*
    181 onigenc_step P_((OnigEncoding enc, const UChar* p, const UChar* end, int n));
     206onigenc_step(OnigEncoding enc, const UChar* p, const UChar* end, int n);
    182207
    183208/* defined in regexec.c, but used in enc/xxx.c */
    184 extern int  onig_is_in_code_range P_((const UChar* p, OnigCodePoint code));
     209extern int  onig_is_in_code_range(const UChar* p, OnigCodePoint code);
    185210
    186211ONIG_EXTERN OnigEncoding  OnigEncDefaultCharEncoding;
     
    203228
    204229
    205 #endif /* REGENC_H */
     230#ifdef ONIG_ENC_REGISTER
     231extern int ONIG_ENC_REGISTER(const char *, OnigEncoding);
     232# define OnigEncodingName(n) encoding_##n
     233# define OnigEncodingDeclare(n) static const OnigEncodingType OnigEncodingName(n)
     234# define OnigEncodingDefine(f,n)                             \
     235    OnigEncodingDeclare(n);                          \
     236    void Init_##f(void) {                            \
     237        ONIG_ENC_REGISTER(OnigEncodingName(n).name,  \
     238                          &OnigEncodingName(n));     \
     239    }                                                \
     240    OnigEncodingDeclare(n)
     241#else
     242# define OnigEncodingName(n) OnigEncoding##n
     243# define OnigEncodingDeclare(n) const OnigEncodingType OnigEncodingName(n)
     244# define OnigEncodingDefine(f,n) OnigEncodingDeclare(n)
     245#endif
     246
     247/* macros for define replica encoding and encoding alias */
     248#define ENC_REPLICATE(name, orig)
     249#define ENC_ALIAS(name, orig)
     250#define ENC_DUMMY(name)
     251
     252RUBY_SYMBOL_EXPORT_END
     253
     254#endif /* ONIGMO_REGENC_H */
  • EcnlProtoTool/trunk/onigmo-6.1.3/src/regerror.c

    r321 r331  
    44/*-
    55 * Copyright (c) 2002-2007  K.Kosako  <sndgk393 AT ybb DOT ne DOT jp>
    6  * Copyright (c) 2011-2014  K.Takata  <kentkt AT csc DOT jp>
     6 * Copyright (c) 2011-2016  K.Takata  <kentkt AT csc DOT jp>
    77 * All rights reserved.
    88 *
     
    3232#include <stdio.h> /* for vsnprintf() */
    3333
    34 #ifdef HAVE_STDARG_PROTOTYPES
    3534#include <stdarg.h>
    36 #define va_init_list(a,b) va_start(a,b)
    37 #else
    38 #include <varargs.h>
    39 #define va_init_list(a,b) va_start(a)
    40 #endif
    4135
    4236extern UChar*
     
    6660  case ONIGERR_MATCH_STACK_LIMIT_OVER:
    6761    p = "match-stack limit over"; break;
     62  case ONIGERR_PARSE_DEPTH_LIMIT_OVER:
     63    p = "parse depth limit over"; break;
    6864  case ONIGERR_DEFAULT_ENCODING_IS_NOT_SET:
    6965    p = "default multibyte-encoding is not set"; break;
     
    180176  case ONIGERR_INVALID_COMBINATION_OF_OPTIONS:
    181177    p = "invalid combination of options"; break;
    182   case ONIGERR_OVER_THREAD_PASS_LIMIT_COUNT:
    183     p = "over thread pass limit count"; break;
    184178
    185179  default:
     
    192186static void sprint_byte(char* s, unsigned int v)
    193187{
    194   sprintf(s, "%02x", (v & 0377));
     188  xsnprintf(s, 3, "%02x", (v & 0377));
    195189}
    196190
    197191static void sprint_byte_with_x(char* s, unsigned int v)
    198192{
    199   sprintf(s, "\\x%02x", (v & 0377));
     193  xsnprintf(s, 5, "\\x%02x", (v & 0377));
    200194}
    201195
     
    233227      }
    234228
    235       p += enclen(enc, p);
     229      p += enclen(enc, p, end);
    236230      if (len >= buf_size) break;
    237231    }
     
    253247
    254248extern int
    255 #ifdef HAVE_STDARG_PROTOTYPES
    256249onig_error_code_to_str(UChar* s, OnigPosition code, ...)
    257 #else
    258 onig_error_code_to_str(s, code, va_alist)
    259   UChar* s;
    260   OnigPosition code;
    261   va_dcl
    262 #endif
    263250{
    264251  UChar *p, *q;
     
    269256  va_list vargs;
    270257
    271   va_init_list(vargs, code);
     258  va_start(vargs, code);
    272259
    273260  switch (code) {
     
    324311}
    325312
    326 
    327313void
    328 #ifdef HAVE_STDARG_PROTOTYPES
    329 onig_snprintf_with_pattern(UChar buf[], int bufsize, OnigEncoding enc,
    330                            UChar* pat, UChar* pat_end, const UChar *fmt, ...)
    331 #else
    332 onig_snprintf_with_pattern(buf, bufsize, enc, pat, pat_end, fmt, va_alist)
    333     UChar buf[];
    334     int bufsize;
    335     OnigEncoding enc;
    336     UChar* pat;
    337     UChar* pat_end;
    338     const UChar *fmt;
    339     va_dcl
    340 #endif
     314onig_vsnprintf_with_pattern(UChar buf[], int bufsize, OnigEncoding enc,
     315                           UChar* pat, UChar* pat_end, const UChar *fmt, va_list args)
    341316{
    342317  size_t need;
     
    344319  UChar *p, *s, *bp;
    345320  UChar bs[6];
    346   va_list args;
    347 
    348   va_init_list(args, fmt);
     321
    349322  n = xvsnprintf((char* )buf, bufsize, (const char* )fmt, args);
    350   va_end(args);
    351323
    352324  need = (pat_end - pat) * 4 + 4;
    353325
    354326  if (n + need < (size_t )bufsize) {
    355     strcat((char* )buf, ": /");
     327    static const char sep[] = ": /";
     328    memcpy((char* )buf + n, sep, sizeof(sep));
    356329    s = buf + onigenc_str_bytelen_null(ONIG_ENCODING_ASCII, buf);
    357330
    358331    p = pat;
    359332    while (p < pat_end) {
    360       if (*p == '\\') {
    361         *s++ = *p++;
    362         len = enclen(enc, p);
    363         while (len-- > 0) *s++ = *p++;
    364       }
    365       else if (*p == '/') {
    366         *s++ = (unsigned char )'\\';
    367         *s++ = *p++;
    368       }
    369       else if (ONIGENC_IS_MBC_HEAD(enc, p)) {
    370         len = enclen(enc, p);
     333      if (ONIGENC_IS_MBC_HEAD(enc, p, pat_end)) {
     334        len = enclen(enc, p, pat_end);
    371335        if (ONIGENC_MBC_MINLEN(enc) == 1) {
    372336          while (len-- > 0) *s++ = *p++;
    373337        }
    374         else { /* for UTF16 */
     338        else { /* for UTF16/32 */
    375339          int blen;
    376340
     
    383347        }
    384348      }
     349      else if (*p == '\\') {
     350        *s++ = *p++;
     351        len = enclen(enc, p, pat_end);
     352        while (len-- > 0) *s++ = *p++;
     353      }
     354      else if (*p == '/') {
     355        *s++ = (unsigned char )'\\';
     356        *s++ = *p++;
     357      }
    385358      else if (!ONIGENC_IS_CODE_PRINT(enc, *p) &&
    386359               !ONIGENC_IS_CODE_SPACE(enc, *p)) {
     
    399372  }
    400373}
     374
     375#if 0 /* unused */
     376void
     377onig_snprintf_with_pattern(UChar buf[], int bufsize, OnigEncoding enc,
     378                           UChar* pat, UChar* pat_end, const UChar *fmt, ...)
     379{
     380  va_list args;
     381  va_start(args, fmt);
     382  onig_vsnprintf_with_pattern(buf, bufsize, enc,
     383          pat, pat_end, fmt, args);
     384  va_end(args);
     385}
     386#endif
  • EcnlProtoTool/trunk/onigmo-6.1.3/src/regexec.c

    r321 r331  
    44/*-
    55 * Copyright (c) 2002-2008  K.Kosako  <sndgk393 AT ybb DOT ne DOT jp>
    6  * Copyright (c) 2011-2014  K.Takata  <kentkt AT csc DOT jp>
     6 * Copyright (c) 2011-2016  K.Takata  <kentkt AT csc DOT jp>
    77 * All rights reserved.
    88 *
     
    3131#include "regint.h"
    3232
    33 #define USE_MATCH_RANGE_MUST_BE_INSIDE_OF_SPECIFIED_RANGE
    34 
    35 #ifndef USE_DIRECT_THREADED_VM
     33#ifdef RUBY
     34# undef USE_MATCH_RANGE_MUST_BE_INSIDE_OF_SPECIFIED_RANGE
     35#else
     36# define USE_MATCH_RANGE_MUST_BE_INSIDE_OF_SPECIFIED_RANGE
     37#endif
     38
     39#ifndef USE_TOKEN_THREADED_VM
    3640# ifdef __GNUC__
    37  define USE_DIRECT_THREADED_VM 1
     41define USE_TOKEN_THREADED_VM 1
    3842# else
    39  define USE_DIRECT_THREADED_VM 0
     43define USE_TOKEN_THREADED_VM 0
    4044# endif
    4145#endif
    4246
     47#ifdef RUBY
     48# define ENC_DUMMY_FLAG (1<<24)
     49static inline int
     50rb_enc_asciicompat(OnigEncoding enc)
     51{
     52  return ONIGENC_MBC_MINLEN(enc)==1 && !((enc)->ruby_encoding_index & ENC_DUMMY_FLAG);
     53}
     54# undef ONIGENC_IS_MBC_ASCII_WORD
     55# define ONIGENC_IS_MBC_ASCII_WORD(enc,s,end) \
     56    (rb_enc_asciicompat(enc) ? (ISALNUM(*s) || *s=='_') : \
     57   onigenc_ascii_is_code_ctype( \
     58        ONIGENC_MBC_TO_CODE(enc,s,end),ONIGENC_CTYPE_WORD,enc))
     59#endif /* RUBY */
     60
    4361#ifdef USE_CRNL_AS_LINE_TERMINATOR
    44 #define ONIGENC_IS_MBC_CRNL(enc,p,end) \
     62# define ONIGENC_IS_MBC_CRNL(enc,p,end) \
    4563  (ONIGENC_MBC_TO_CODE(enc,p,end) == 13 && \
    46    ONIGENC_MBC_TO_CODE(enc,(p+enclen(enc,p)),end) == 10)
    47 #define ONIGENC_IS_MBC_NEWLINE_EX(enc,p,start,end,option,check_prev) \
     64   ONIGENC_MBC_TO_CODE(enc,(p+enclen(enc,p,end)),end) == 10)
     65# define ONIGENC_IS_MBC_NEWLINE_EX(enc,p,start,end,option,check_prev) \
    4866  is_mbc_newline_ex((enc),(p),(start),(end),(option),(check_prev))
    4967static int
     
    5472    if (ONIGENC_MBC_TO_CODE(enc, p, end) == 0x0a) {
    5573      if (check_prev) {
    56         const UChar *prev = onigenc_get_prev_char_head(enc, start, p);
     74        const UChar *prev = onigenc_get_prev_char_head(enc, start, p, end);
    5775        if ((prev != NULL) && ONIGENC_MBC_TO_CODE(enc, prev, end) == 0x0d)
    5876          return 0;
     
    6482    }
    6583    else {
    66       const UChar *pnext = p + enclen(enc, p);
     84      const UChar *pnext = p + enclen(enc, p, end);
    6785      if (pnext < end &&
    6886          ONIGENC_MBC_TO_CODE(enc, p, end) == 0x0d &&
     
    7997}
    8098#else /* USE_CRNL_AS_LINE_TERMINATOR */
    81 #define ONIGENC_IS_MBC_NEWLINE_EX(enc,p,start,end,option,check_prev) \
     99# define ONIGENC_IS_MBC_NEWLINE_EX(enc,p,start,end,option,check_prev) \
    82100  ONIGENC_IS_MBC_NEWLINE((enc), (p), (end))
    83101#endif /* USE_CRNL_AS_LINE_TERMINATOR */
     
    94112    for (i = 0; i < node->num_childs; i++) {
    95113      if (IS_NOT_NULL(node->childs[i])) {
    96         history_tree_free(node->childs[i]);
     114        history_tree_free(node->childs[i]);
    97115      }
    98116    }
     
    145163history_tree_add_child(OnigCaptureTreeNode* parent, OnigCaptureTreeNode* child)
    146164{
    147 #define HISTORY_TREE_INIT_ALLOC_SIZE  8
     165# define HISTORY_TREE_INIT_ALLOC_SIZE  8
    148166
    149167  if (parent->num_childs >= parent->allocated) {
     
    153171      n = HISTORY_TREE_INIT_ALLOC_SIZE;
    154172      parent->childs =
    155         (OnigCaptureTreeNode** )xmalloc(sizeof(OnigCaptureTreeNode*) * n);
     173        (OnigCaptureTreeNode** )xmalloc(sizeof(OnigCaptureTreeNode*) * n);
    156174      CHECK_NULL_RETURN_MEMERR(parent->childs);
    157175    }
     
    160178      n = parent->allocated * 2;
    161179      tmp =
    162         (OnigCaptureTreeNode** )xrealloc(parent->childs,
    163                                         sizeof(OnigCaptureTreeNode*) * n);
     180        (OnigCaptureTreeNode** )xrealloc(parent->childs,
     181                                        sizeof(OnigCaptureTreeNode*) * n);
    164182      if (tmp == 0) {
    165183        history_tree_clear(parent);
     
    337355
    338356extern void
    339 onig_region_copy(OnigRegion* to, OnigRegion* from)
     357onig_region_copy(OnigRegion* to, const OnigRegion* from)
    340358{
    341359#define RREGC_SIZE   (sizeof(int) * from->num_regs)
     
    386404#define STK_RETURN                 0x0900
    387405#define STK_VOID                   0x0a00  /* for fill a blank */
     406#define STK_ABSENT_POS             0x0b00  /* for absent */
     407#define STK_ABSENT                 0x0c00  /* absent inner loop marker */
    388408
    389409/* stack type check mask */
     
    393413
    394414#ifdef USE_FIND_LONGEST_SEARCH_ALL_OF_RANGE
    395 #define MATCH_ARG_INIT(msa, arg_option, arg_region, arg_start, arg_gpos) do {\
     415# define MATCH_ARG_INIT(msa, arg_option, arg_region, arg_start, arg_gpos) do {\
    396416  (msa).stack_p  = (void* )0;\
    397417  (msa).options  = (arg_option);\
     
    402422} while(0)
    403423#else
    404 #define MATCH_ARG_INIT(msa, arg_option, arg_region, arg_start, arg_gpos) do {\
     424# define MATCH_ARG_INIT(msa, arg_option, arg_region, arg_start, arg_gpos) do {\
    405425  (msa).stack_p  = (void* )0;\
    406426  (msa).options  = (arg_option);\
     
    413433#ifdef USE_COMBINATION_EXPLOSION_CHECK
    414434
    415 #define STATE_CHECK_BUFF_MALLOC_THRESHOLD_SIZE  16
    416 
    417 #define STATE_CHECK_BUFF_INIT(msa, str_len, offset, state_num) do {     \
     435# define STATE_CHECK_BUFF_MALLOC_THRESHOLD_SIZE  16
     436
     437# define STATE_CHECK_BUFF_INIT(msa, str_len, offset, state_num) do {    \
    418438  if ((state_num) > 0 && str_len >= STATE_CHECK_STRING_THRESHOLD_LEN) {\
    419439    unsigned int size = (unsigned int )(((str_len) + 1) * (state_num) + 7) >> 3;\
     
    441461  } while(0)
    442462
    443 #define MATCH_ARG_FREE(msa) do {\
     463# define MATCH_ARG_FREE(msa) do {\
    444464  if ((msa).stack_p) xfree((msa).stack_p);\
    445465  if ((msa).state_check_buff_size >= STATE_CHECK_BUFF_MALLOC_THRESHOLD_SIZE) { \
     
    448468} while(0)
    449469#else /* USE_COMBINATION_EXPLOSION_CHECK */
    450 #define STATE_CHECK_BUFF_INIT(msa, str_len, offset, state_num)
    451 #define MATCH_ARG_FREE(msa)  if ((msa).stack_p) xfree((msa).stack_p)
     470# define MATCH_ARG_FREE(msa)  if ((msa).stack_p) xfree((msa).stack_p)
    452471#endif /* USE_COMBINATION_EXPLOSION_CHECK */
    453472
     
    466485      stk_end   = stk_base + msa->stack_n;\
    467486    } else {\
    468       stk_alloc = (OnigStackType* )xmalloc(sizeof(OnigStackType) * (stack_num));\
     487      stk_alloc = (OnigStackType* )xalloca(sizeof(OnigStackType) * (stack_num));\
    469488      stk_base  = stk_alloc;\
    470489      stk       = stk_base;\
     
    472491    }\
    473492  } else if (msa->stack_p) {\
    474     alloc_addr = (char* )xmalloc(sizeof(OnigStackIndex) * (ptr_num));\
     493    alloc_addr = (char* )xalloca(sizeof(OnigStackIndex) * (ptr_num));\
    475494    heap_addr  = NULL;\
    476495    stk_alloc  = (OnigStackType* )(msa->stack_p);\
     
    480499  }\
    481500  else {\
    482     alloc_addr = (char* )xmalloc(sizeof(OnigStackIndex) * (ptr_num)\
     501    alloc_addr = (char* )xalloca(sizeof(OnigStackIndex) * (ptr_num)\
    483502                       + sizeof(OnigStackType) * (stack_num));\
    484503    heap_addr  = NULL;\
     
    538557    if (limit_size != 0 && n > limit_size) {
    539558      if ((unsigned int )(stk_end - stk_base) == limit_size)
    540         return ONIGERR_MATCH_STACK_LIMIT_OVER;
     559        return ONIGERR_MATCH_STACK_LIMIT_OVER;
    541560      else
    542         n = limit_size;
     561        n = limit_size;
    543562    }
    544563    x = (OnigStackType* )xrealloc(stk_base, sizeof(OnigStackType) * n);
     
    577596
    578597#ifdef USE_COMBINATION_EXPLOSION_CHECK
    579 #define STATE_CHECK_POS(s,snum) \
     598# define STATE_CHECK_POS(s,snum) \
    580599  (((s) - str) * num_comb_exp_check + ((snum) - 1))
    581 #define STATE_CHECK_VAL(v,snum) do {\
     600# define STATE_CHECK_VAL(v,snum) do {\
    582601  if (state_check_buff != NULL) {\
    583602    int x = STATE_CHECK_POS(s,snum);\
     
    588607
    589608
    590 #define ELSE_IF_STATE_CHECK_MARK(stk) \
     609# define ELSE_IF_STATE_CHECK_MARK(stk) \
    591610  else if ((stk)->type == STK_STATE_CHECK_MARK) { \
    592611    int x = STATE_CHECK_POS(stk->u.state.pstr, stk->u.state.state_check);\
     
    594613  }
    595614
    596 #define STACK_PUSH(stack_type,pat,s,sprev,keep) do {\
     615# define STACK_PUSH(stack_type,pat,s,sprev,keep) do {\
    597616  STACK_ENSURE(1);\
    598617  stk->type = (stack_type);\
     
    605624} while(0)
    606625
    607 #define STACK_PUSH_ENSURED(stack_type,pat) do {\
     626# define STACK_PUSH_ENSURED(stack_type,pat) do {\
    608627  stk->type = (stack_type);\
    609628  stk->u.state.pcode = (pat);\
     
    612631} while(0)
    613632
    614 #define STACK_PUSH_ALT_WITH_STATE_CHECK(pat,s,sprev,snum,keep) do {\
     633# define STACK_PUSH_ALT_WITH_STATE_CHECK(pat,s,sprev,snum,keep) do {\
    615634  STACK_ENSURE(1);\
    616635  stk->type = STK_ALT;\
     
    623642} while(0)
    624643
    625 #define STACK_PUSH_STATE_CHECK(s,snum) do {\
     644# define STACK_PUSH_STATE_CHECK(s,snum) do {\
    626645  if (state_check_buff != NULL) {\
    627646    STACK_ENSURE(1);\
     
    635654#else /* USE_COMBINATION_EXPLOSION_CHECK */
    636655
    637 #define ELSE_IF_STATE_CHECK_MARK(stk)
    638 
    639 #define STACK_PUSH(stack_type,pat,s,sprev,keep) do {\
     656# define ELSE_IF_STATE_CHECK_MARK(stk)
     657
     658# define STACK_PUSH(stack_type,pat,s,sprev,keep) do {\
    640659  STACK_ENSURE(1);\
    641660  stk->type = (stack_type);\
     
    647666} while(0)
    648667
    649 #define STACK_PUSH_ENSURED(stack_type,pat) do {\
     668# define STACK_PUSH_ENSURED(stack_type,pat) do {\
    650669  stk->type = (stack_type);\
    651670  stk->u.state.pcode = (pat);\
     
    657676#define STACK_PUSH_POS(s,sprev,keep)         STACK_PUSH(STK_POS,NULL_UCHARP,s,sprev,keep)
    658677#define STACK_PUSH_POS_NOT(pat,s,sprev,keep) STACK_PUSH(STK_POS_NOT,pat,s,sprev,keep)
    659 #define STACK_PUSH_STOP_BT              STACK_PUSH_TYPE(STK_STOP_BT)
     678#define STACK_PUSH_ABSENT                    STACK_PUSH_TYPE(STK_ABSENT)
     679#define STACK_PUSH_STOP_BT                   STACK_PUSH_TYPE(STK_STOP_BT)
    660680#define STACK_PUSH_LOOK_BEHIND_NOT(pat,s,sprev,keep) \
    661681        STACK_PUSH(STK_LOOK_BEHIND_NOT,pat,s,sprev,keep)
     
    769789} while(0)
    770790
     791#define STACK_PUSH_ABSENT_POS(start, end) do {\
     792  STACK_ENSURE(1);\
     793  stk->type = STK_ABSENT_POS;\
     794  stk->u.absent_pos.abs_pstr = (start);\
     795  stk->u.absent_pos.end_pstr = (end);\
     796  STACK_INC;\
     797} while(0)
     798
    771799
    772800#ifdef ONIG_DEBUG
    773 #define STACK_BASE_CHECK(p, at) \
     801# define STACK_BASE_CHECK(p, at) \
    774802  if ((p) < stk_base) {\
    775803    fprintf(stderr, "at %s\n", at);\
     
    777805  }
    778806#else
    779 #define STACK_BASE_CHECK(p, at)
     807# define STACK_BASE_CHECK(p, at)
    780808#endif
    781809
     
    867895    ELSE_IF_STATE_CHECK_MARK(stk);\
    868896  }\
     897} while(0)
     898
     899#define STACK_POP_TIL_ABSENT  do {\
     900  while (1) {\
     901    stk--;\
     902    STACK_BASE_CHECK(stk, "STACK_POP_TIL_ABSENT"); \
     903    if (stk->type == STK_ABSENT) break;\
     904    else if (stk->type == STK_MEM_START) {\
     905      mem_start_stk[stk->u.mem.num] = stk->u.mem.start;\
     906      mem_end_stk[stk->u.mem.num]   = stk->u.mem.end;\
     907    }\
     908    else if (stk->type == STK_REPEAT_INC) {\
     909      STACK_AT(stk->u.repeat_inc.si)->u.repeat.count--;\
     910    }\
     911    else if (stk->type == STK_MEM_END) {\
     912      mem_start_stk[stk->u.mem.num] = stk->u.mem.start;\
     913      mem_end_stk[stk->u.mem.num]   = stk->u.mem.end;\
     914    }\
     915    ELSE_IF_STATE_CHECK_MARK(stk);\
     916  }\
     917} while(0)
     918
     919#define STACK_POP_ABSENT_POS(start, end) do {\
     920  stk--;\
     921  STACK_BASE_CHECK(stk, "STACK_POP_ABSENT_POS"); \
     922  (start) = stk->u.absent_pos.abs_pstr;\
     923  (end) = stk->u.absent_pos.end_pstr;\
    869924} while(0)
    870925
     
    10641119} while(0)
    10651120
    1066 #define STRING_CMP_IC(case_fold_flag,s1,ps2,len) do {\
    1067   if (string_cmp_ic(encode, case_fold_flag, s1, ps2, len) == 0) \
     1121#define STRING_CMP_IC(case_fold_flag,s1,ps2,len,text_end) do {\
     1122  if (string_cmp_ic(encode, case_fold_flag, s1, ps2, len, text_end) == 0) \
    10681123    goto fail; \
    10691124} while(0)
    10701125
    10711126static int string_cmp_ic(OnigEncoding enc, int case_fold_flag,
    1072                          UChar* s1, UChar** ps2, OnigDistance mblen)
     1127                         UChar* s1, UChar** ps2, OnigDistance mblen, const UChar* text_end)
    10731128{
    10741129  UChar buf1[ONIGENC_MBC_CASE_FOLD_MAXLEN];
    10751130  UChar buf2[ONIGENC_MBC_CASE_FOLD_MAXLEN];
    1076   UChar *p1, *p2, *end1, *s2, *end2;
     1131  UChar *p1, *p2, *end1, *s2;
    10771132  int len1, len2;
    10781133
    10791134  s2   = *ps2;
    10801135  end1 = s1 + mblen;
    1081   end2 = s2 + mblen;
    10821136  while (s1 < end1) {
    1083     len1 = ONIGENC_MBC_CASE_FOLD(enc, case_fold_flag, &s1, end1, buf1);
    1084     len2 = ONIGENC_MBC_CASE_FOLD(enc, case_fold_flag, &s2, end2, buf2);
     1137    len1 = ONIGENC_MBC_CASE_FOLD(enc, case_fold_flag, &s1, text_end, buf1);
     1138    len2 = ONIGENC_MBC_CASE_FOLD(enc, case_fold_flag, &s2, text_end, buf2);
    10851139    if (len1 != len2) return 0;
    10861140    p1 = buf1;
     
    11061160} while(0)
    11071161
    1108 #define STRING_CMP_VALUE_IC(case_fold_flag,s1,ps2,len,is_fail) do {\
    1109   if (string_cmp_ic(encode, case_fold_flag, s1, ps2, len) == 0) \
     1162#define STRING_CMP_VALUE_IC(case_fold_flag,s1,ps2,len,text_end,is_fail) do {\
     1163  if (string_cmp_ic(encode, case_fold_flag, s1, ps2, len, text_end) == 0) \
    11101164    is_fail = 1; \
    11111165  else \
     
    11151169
    11161170#define IS_EMPTY_STR           (str == end)
    1117 #define ON_STR_BEGIN(s)       ((s) == str)
    1118 #define ON_STR_END(s)         ((s) == end)
     1171#define ON_STR_BEGIN(s)        ((s) == str)
     1172#define ON_STR_END(s)          ((s) == end)
    11191173#ifdef USE_MATCH_RANGE_MUST_BE_INSIDE_OF_SPECIFIED_RANGE
    1120 #define DATA_ENSURE_CHECK1     (s < right_range)
    1121 #define DATA_ENSURE_CHECK(n)   (s + (n) <= right_range)
    1122 #define DATA_ENSURE(n)         if (s + (n) > right_range) goto fail
     1174# define DATA_ENSURE_CHECK1    (s < right_range)
     1175# define DATA_ENSURE_CHECK(n)  (s + (n) <= right_range)
     1176# define DATA_ENSURE(n)        if (s + (n) > right_range) goto fail
     1177# define ABSENT_END_POS        right_range
    11231178#else
    1124 #define DATA_ENSURE_CHECK1     (s < end)
    1125 #define DATA_ENSURE_CHECK(n)   (s + (n) <= end)
    1126 #define DATA_ENSURE(n)         if (s + (n) > end) goto fail
     1179# define DATA_ENSURE_CHECK1    (s < end)
     1180# define DATA_ENSURE_CHECK(n)  (s + (n) <= end)
     1181# define DATA_ENSURE(n)        if (s + (n) > end) goto fail
     1182# define ABSENT_END_POS        end
    11271183#endif /* USE_MATCH_RANGE_MUST_BE_INSIDE_OF_SPECIFIED_RANGE */
    11281184
     
    11411197      n = k->u.mem.num;
    11421198      if (n <= ONIG_MAX_CAPTURE_HISTORY_GROUP &&
    1143           BIT_STATUS_AT(reg->capture_history, n) != 0) {
    1144         child = history_node_new();
    1145         CHECK_NULL_RETURN_MEMERR(child);
    1146         child->group = n;
    1147         child->beg = k->u.mem.pstr - str;
    1148         r = history_tree_add_child(node, child);
    1149         if (r != 0) {
    1150           history_tree_free(child);
    1151           return r;
    1152         }
    1153         *kp = (k + 1);
    1154         r = make_capture_history_tree(child, kp, stk_top, str, reg);
    1155         if (r != 0) return r;
    1156 
    1157         k = *kp;
    1158         child->end = k->u.mem.pstr - str;
     1199          BIT_STATUS_AT(reg->capture_history, n) != 0) {
     1200        child = history_node_new();
     1201        CHECK_NULL_RETURN_MEMERR(child);
     1202        child->group = n;
     1203        child->beg = k->u.mem.pstr - str;
     1204        r = history_tree_add_child(node, child);
     1205        if (r != 0) {
     1206          history_tree_free(child);
     1207          return r;
     1208        }
     1209        *kp = (k + 1);
     1210        r = make_capture_history_tree(child, kp, stk_top, str, reg);
     1211        if (r != 0) return r;
     1212
     1213        k = *kp;
     1214        child->end = k->u.mem.pstr - str;
    11591215      }
    11601216    }
    11611217    else if (k->type == STK_MEM_END) {
    11621218      if (k->u.mem.num == node->group) {
    1163         node->end = k->u.mem.pstr - str;
    1164         *kp = k;
    1165         return 0;
     1219        node->end = k->u.mem.pstr - str;
     1220        *kp = k;
     1221        return 0;
    11661222      }
    11671223    }
     
    11861242}
    11871243
    1188 static int backref_match_at_nested_level(regex_t* reg
    1189          , OnigStackType* top, OnigStackType* stk_base
    1190          , int ignore_case, int case_fold_flag
    1191          , int nest, int mem_num, UChar* memp, UChar** s, const UChar* send)
     1244static int backref_match_at_nested_level(regex_t* reg,
     1245         OnigStackType* top, OnigStackType* stk_base,
     1246         int ignore_case, int case_fold_flag,
     1247         int nest, int mem_num, UChar* memp, UChar** s, const UChar* send)
    11921248{
    11931249  UChar *ss, *p, *pstart, *pend = NULL_UCHARP;
     
    12161272            if (ignore_case != 0) {
    12171273              if (string_cmp_ic(reg->enc, case_fold_flag,
    1218                                 pstart, &ss, pend - pstart) == 0)
     1274                                pstart, &ss, pend - pstart, send) == 0)
    12191275                return 0; /* or goto next_mem; */
    12201276            }
     
    12461302#ifdef ONIG_DEBUG_STATISTICS
    12471303
    1248 #define USE_TIMEOFDAY
    1249 
    1250 #ifdef USE_TIMEOFDAY
    1251 #ifdef HAVE_SYS_TIME_H
    1252 #include <sys/time.h>
    1253 #endif
    1254 #ifdef HAVE_UNISTD_H
    1255 #include <unistd.h>
    1256 #endif
     1304# ifdef _WIN32
     1305#  include <windows.h>
     1306static LARGE_INTEGER ts, te, freq;
     1307#  define GETTIME(t)      QueryPerformanceCounter(&(t))
     1308#  define TIMEDIFF(te,ts) (unsigned long )(((te).QuadPart - (ts).QuadPart) \
     1309                            * 1000000 / freq.QuadPart)
     1310# else /* _WIN32 */
     1311
     1312#  define USE_TIMEOFDAY
     1313
     1314#  ifdef USE_TIMEOFDAY
     1315#   ifdef HAVE_SYS_TIME_H
     1316#    include <sys/time.h>
     1317#   endif
     1318#   ifdef HAVE_UNISTD_H
     1319#    include <unistd.h>
     1320#   endif
    12571321static struct timeval ts, te;
    1258 #define GETTIME(t)        gettimeofday(&(t), (struct timezone* )0)
    1259 #define TIMEDIFF(te,ts)  (((te).tv_usec - (ts).tv_usec) + \
    1260                            (((te).tv_sec - (ts).tv_sec)*1000000))
    1261 #else /* USE_TIMEOFDAY */
    1262 #ifdef HAVE_SYS_TIMES_H
    1263 #include <sys/times.h>
    1264 #endif
     1322#   define GETTIME(t)      gettimeofday(&(t), (struct timezone* )0)
     1323#   define TIMEDIFF(te,ts) (((te).tv_usec - (ts).tv_usec) + \
     1324                            (((te).tv_sec - (ts).tv_sec)*1000000))
     1325#  else /* USE_TIMEOFDAY */
     1326#   ifdef HAVE_SYS_TIMES_H
     1327#    include <sys/times.h>
     1328#   endif
    12651329static struct tms ts, te;
    1266 #define GETTIME(t)         times(&(t))
    1267 #define TIMEDIFF(te,ts)   ((te).tms_utime - (ts).tms_utime)
    1268 #endif /* USE_TIMEOFDAY */
     1330#   define GETTIME(t)       times(&(t))
     1331#   define TIMEDIFF(te,ts)  ((te).tms_utime - (ts).tms_utime)
     1332#  endif /* USE_TIMEOFDAY */
     1333
     1334# endif /* _WIN32 */
    12691335
    12701336static int OpCounter[256];
     
    12751341static int MaxStackDepth = 0;
    12761342
    1277 #define MOP_IN(opcode) do {\
     1343# define MOP_IN(opcode) do {\
    12781344  if (opcode == OpPrevTarget) OpPrevCounter[OpCurr]++;\
    12791345  OpCurr = opcode;\
     
    12821348} while(0)
    12831349
    1284 #define MOP_OUT do {\
     1350# define MOP_OUT do {\
    12851351  GETTIME(te);\
    12861352  OpTime[OpCurr] += TIMEDIFF(te, ts);\
     
    12951361  }
    12961362  MaxStackDepth = 0;
     1363# ifdef _WIN32
     1364  QueryPerformanceFrequency(&freq);
     1365# endif
    12971366}
    12981367
     
    13091378}
    13101379
    1311 #define STACK_INC do {\
     1380# define STACK_INC do {\
    13121381  stk++;\
    13131382  if (stk - stk_base > MaxStackDepth) \
     
    13161385
    13171386#else /* ONIG_DEBUG_STATISTICS */
    1318 #define STACK_INC     stk++
    1319 
    1320 #define MOP_IN(opcode)
    1321 #define MOP_OUT
     1387# define STACK_INC     stk++
     1388
     1389# define MOP_IN(opcode)
     1390# define MOP_OUT
    13221391#endif /* ONIG_DEBUG_STATISTICS */
    13231392
    13241393
    1325 
    1326 /* matching region of POSIX API */
    1327 typedef int regoff_t;
    1328 
    1329 typedef struct {
    1330   regoff_t  rm_so;
    1331   regoff_t  rm_eo;
    1332 } posix_regmatch_t;
     1394#ifdef ONIG_DEBUG_MATCH
     1395static char *
     1396stack_type_str(int stack_type)
     1397{
     1398  switch (stack_type) {
     1399    case STK_ALT:               return "Alt   ";
     1400    case STK_LOOK_BEHIND_NOT:   return "LBNot ";
     1401    case STK_POS_NOT:           return "PosNot";
     1402    case STK_MEM_START:         return "MemS  ";
     1403    case STK_MEM_END:           return "MemE  ";
     1404    case STK_REPEAT_INC:        return "RepInc";
     1405    case STK_STATE_CHECK_MARK:  return "StChMk";
     1406    case STK_NULL_CHECK_START:  return "NulChS";
     1407    case STK_NULL_CHECK_END:    return "NulChE";
     1408    case STK_MEM_END_MARK:      return "MemEMk";
     1409    case STK_POS:               return "Pos   ";
     1410    case STK_STOP_BT:           return "StopBt";
     1411    case STK_REPEAT:            return "Rep   ";
     1412    case STK_CALL_FRAME:        return "Call  ";
     1413    case STK_RETURN:            return "Ret   ";
     1414    case STK_VOID:              return "Void  ";
     1415    case STK_ABSENT_POS:        return "AbsPos";
     1416    case STK_ABSENT:            return "Absent";
     1417    default:                    return "      ";
     1418  }
     1419}
     1420#endif
    13331421
    13341422/* match data(str - end) from position (sstart). */
    13351423/* if sstart == str then set sprev to NULL. */
    13361424static OnigPosition
    1337 match_at_(regex_t* reg, const UChar* str, const UChar* end,
     1425match_at(regex_t* reg, const UChar* str, const UChar* end,
    13381426#ifdef USE_MATCH_RANGE_MUST_BE_INSIDE_OF_SPECIFIED_RANGE
    13391427         const UChar* right_range,
    13401428#endif
    1341          const UChar* sstart, UChar* sprev, OnigMatchArg* msa, char **palloca_base)
     1429         const UChar* sstart, UChar* sprev, OnigMatchArg* msa)
    13421430{
    13431431  static const UChar FinishCode[] = { OP_FINISH };
     
    13541442  UChar *p = reg->p;
    13551443  UChar *pkeep;
     1444  char *alloca_base;
    13561445  char *xmalloc_base = NULL;
    13571446  OnigStackType *stk_alloc, *stk_base, *stk, *stk_end;
     
    13661455#endif
    13671456
    1368 #if USE_DIRECT_THREADED_VM
    1369 #define VM_LOOP JUMP;
    1370 #define VM_LOOP_END
    1371 #define CASE(x) L_##x: sbegin = s; OPCODE_EXEC_HOOK;
    1372 #define DEFAULT L_DEFAULT:
    1373 #define NEXT sprev = sbegin; JUMP
    1374 #define JUMP goto *oplabels[*p++]
     1457#if USE_TOKEN_THREADED_VM
     1458# define OP_OFFSET  1
     1459# define VM_LOOP JUMP;
     1460# define VM_LOOP_END
     1461# define CASE(x) L_##x: sbegin = s; OPCODE_EXEC_HOOK;
     1462# define DEFAULT L_DEFAULT:
     1463# define NEXT sprev = sbegin; JUMP
     1464# define JUMP goto *oplabels[*p++]
    13751465
    13761466  static const void *oplabels[] = {
     
    14001490    &&L_OP_CCLASS_MB_NOT,
    14011491    &&L_OP_CCLASS_MIX_NOT,
    1402     &&L_OP_CCLASS_NODE,          /* pointer to CClassNode node */
    14031492
    14041493    &&L_OP_ANYCHAR,                 /* "."  */
     
    14131502    &&L_OP_WORD_BOUND,
    14141503    &&L_OP_NOT_WORD_BOUND,
    1415 #ifdef USE_WORD_BEGIN_END
     1504# ifdef USE_WORD_BEGIN_END
    14161505    &&L_OP_WORD_BEGIN,
    14171506    &&L_OP_WORD_END,
    1418 #else
     1507# else
    14191508    &&L_DEFAULT,
    14201509    &&L_DEFAULT,
    1421 #endif
     1510# endif
    14221511    &&L_OP_ASCII_WORD,
    14231512    &&L_OP_NOT_ASCII_WORD,
    14241513    &&L_OP_ASCII_WORD_BOUND,
    14251514    &&L_OP_NOT_ASCII_WORD_BOUND,
    1426 #ifdef USE_WORD_BEGIN_END
     1515# ifdef USE_WORD_BEGIN_END
    14271516    &&L_OP_ASCII_WORD_BEGIN,
    14281517    &&L_OP_ASCII_WORD_END,
    1429 #else
     1518# else
    14301519    &&L_DEFAULT,
    14311520    &&L_DEFAULT,
    1432 #endif
     1521# endif
    14331522
    14341523    &&L_OP_BEGIN_BUF,
     
    14381527    &&L_OP_SEMI_END_BUF,
    14391528    &&L_OP_BEGIN_POSITION,
    1440     &&L_OP_BEGIN_POS_OR_LINE,    /* used for implicit anchor optimization */
    14411529
    14421530    &&L_OP_BACKREF1,
     
    14461534    &&L_OP_BACKREF_MULTI,
    14471535    &&L_OP_BACKREF_MULTI_IC,
    1448 #ifdef USE_BACKREF_WITH_LEVEL
     1536# ifdef USE_BACKREF_WITH_LEVEL
    14491537    &&L_OP_BACKREF_WITH_LEVEL,   /* \k<xxx+n>, \k<xxx-n> */
    1450 #else
     1538# else
    14511539    &&L_DEFAULT,
    1452 #endif
     1540# endif
    14531541    &&L_OP_MEMORY_START,
    14541542    &&L_OP_MEMORY_START_PUSH,    /* push back-tracker to stack */
    14551543    &&L_OP_MEMORY_END_PUSH,      /* push back-tracker to stack */
    1456 #ifdef USE_SUBEXP_CALL
     1544# ifdef USE_SUBEXP_CALL
    14571545    &&L_OP_MEMORY_END_PUSH_REC,  /* push back-tracker to stack */
    1458 #else
     1546# else
    14591547    &&L_DEFAULT,
    1460 #endif
     1548# endif
    14611549    &&L_OP_MEMORY_END,
    1462 #ifdef USE_SUBEXP_CALL
     1550# ifdef USE_SUBEXP_CALL
    14631551    &&L_OP_MEMORY_END_REC,       /* push marker to stack */
    1464 #else
     1552# else
    14651553    &&L_DEFAULT,
    1466 #endif
     1554# endif
    14671555
    14681556    &&L_OP_KEEP,
     
    14721560    &&L_OP_PUSH,
    14731561    &&L_OP_POP,
     1562# ifdef USE_OP_PUSH_OR_JUMP_EXACT
    14741563    &&L_OP_PUSH_OR_JUMP_EXACT1,  /* if match exact then push, else jump. */
     1564# else
     1565    &&L_DEFAULT,
     1566# endif
    14751567    &&L_OP_PUSH_IF_PEEK_NEXT,    /* if match exact then push, else none. */
    14761568    &&L_OP_REPEAT,               /* {n,m} */
     
    14821574    &&L_OP_NULL_CHECK_START,     /* null loop checker start */
    14831575    &&L_OP_NULL_CHECK_END,       /* null loop checker end   */
    1484 #ifdef USE_MONOMANIAC_CHECK_CAPTURES_IN_ENDLESS_REPEAT
     1576# ifdef USE_MONOMANIAC_CHECK_CAPTURES_IN_ENDLESS_REPEAT
    14851577    &&L_OP_NULL_CHECK_END_MEMST, /* null loop checker end (with capture status) */
    1486 #else
     1578# else
    14871579    &&L_DEFAULT,
    1488 #endif
    1489 #ifdef USE_SUBEXP_CALL
     1580# endif
     1581# ifdef USE_SUBEXP_CALL
    14901582    &&L_OP_NULL_CHECK_END_MEMST_PUSH, /* with capture status and push check-end */
    1491 #else
     1583# else
    14921584    &&L_DEFAULT,
    1493 #endif
     1585# endif
    14941586
    14951587    &&L_OP_PUSH_POS,             /* (?=...)  start */
     
    15021594    &&L_OP_PUSH_LOOK_BEHIND_NOT, /* (?<!...) start */
    15031595    &&L_OP_FAIL_LOOK_BEHIND_NOT, /* (?<!...) end   */
    1504 
    1505 #ifdef USE_SUBEXP_CALL
     1596    &&L_OP_PUSH_ABSENT_POS,      /* (?~...)  start */
     1597    &&L_OP_ABSENT,               /* (?~...)  start of inner loop */
     1598    &&L_OP_ABSENT_END,           /* (?~...)  end   */
     1599
     1600# ifdef USE_SUBEXP_CALL
    15061601    &&L_OP_CALL,                 /* \g<name> */
    15071602    &&L_OP_RETURN,
    1508 #else
     1603# else
    15091604    &&L_DEFAULT,
    15101605    &&L_DEFAULT,
    1511 #endif
     1606# endif
    15121607    &&L_OP_CONDITION,
    15131608
    1514 #ifdef USE_COMBINATION_EXPLOSION_CHECK
     1609# ifdef USE_COMBINATION_EXPLOSION_CHECK
    15151610    &&L_OP_STATE_CHECK_PUSH,         /* combination explosion check and push */
    15161611    &&L_OP_STATE_CHECK_PUSH_OR_JUMP, /* check ok -> push, else jump  */
    15171612    &&L_OP_STATE_CHECK,              /* check only */
    1518 #else
     1613# else
    15191614    &&L_DEFAULT,
    15201615    &&L_DEFAULT,
    15211616    &&L_DEFAULT,
    1522 #endif
    1523 #ifdef USE_COMBINATION_EXPLOSION_CHECK
     1617# endif
     1618# ifdef USE_COMBINATION_EXPLOSION_CHECK
    15241619    &&L_OP_STATE_CHECK_ANYCHAR_STAR,
    15251620    &&L_OP_STATE_CHECK_ANYCHAR_ML_STAR,
    1526 #else
     1621# else
    15271622    &&L_DEFAULT,
    15281623    &&L_DEFAULT,
    1529 #endif
     1624# endif
    15301625    /* no need: IS_DYNAMIC_OPTION() == 0 */
    1531 #if 0   /* no need: IS_DYNAMIC_OPTION() == 0 */
     1626# if 0   /* no need: IS_DYNAMIC_OPTION() == 0 */
    15321627    &&L_OP_SET_OPTION_PUSH,    /* set option and push recover option */
    15331628    &&L_OP_SET_OPTION          /* set option */
    1534 #else
     1629# else
    15351630    &&L_DEFAULT,
    15361631    &&L_DEFAULT
    1537 #endif
     1632# endif
    15381633  };
    1539 #else
    1540 
    1541 #define VM_LOOP                                 \
     1634#else /* USE_TOKEN_THREADED_VM */
     1635
     1636# define OP_OFFSET  0
     1637# define VM_LOOP                                \
    15421638  while (1) {                                   \
    15431639  OPCODE_EXEC_HOOK;                             \
    15441640  sbegin = s;                                   \
    15451641  switch (*p++) {
    1546 #define VM_LOOP_END } sprev = sbegin; }
    1547 #define CASE(x) case x:
    1548 #define DEFAULT default:
    1549 #define NEXT break
    1550 #define JUMP continue; break
    1551 #endif
     1642# define VM_LOOP_END } sprev = sbegin; }
     1643# define CASE(x) case x:
     1644# define DEFAULT default:
     1645# define NEXT break
     1646# define JUMP continue; break
     1647#endif /* USE_TOKEN_THREADED_VM */
    15521648
    15531649
    15541650#ifdef USE_SUBEXP_CALL
    1555   /* Stack #0 is used to store the pattern itself and used for (?R), \g<0>, etc. */
    1556   n = reg->num_repeat + (reg->num_mem + 1) * 2;
    1557 
    1558   STACK_INIT(*palloca_base, xmalloc_base, n, INIT_MATCH_STACK_SIZE);
     1651/* Stack #0 is used to store the pattern itself and used for (?R), \g<0>,
     1652   etc. Additional space is required. */
     1653# define ADD_NUMMEM 1
     1654#else
     1655/* Stack #0 not is used. */
     1656# define ADD_NUMMEM 0
     1657#endif
     1658
     1659  n = reg->num_repeat + (reg->num_mem + ADD_NUMMEM) * 2;
     1660
     1661  STACK_INIT(alloca_base, xmalloc_base, n, INIT_MATCH_STACK_SIZE);
    15591662  pop_level = reg->stack_pop_level;
    15601663  num_mem = reg->num_mem;
    1561   repeat_stk = (OnigStackIndex* )*palloca_base;
     1664  repeat_stk = (OnigStackIndex* )alloca_base;
    15621665
    15631666  mem_start_stk = (OnigStackIndex* )(repeat_stk + reg->num_repeat);
    1564   mem_end_stk   = mem_start_stk + (num_mem + 1);
    1565 #else /* USE_SUBEXP_CALL */
    1566   /* Stack #0 not is used. */
    1567   n = reg->num_repeat + reg->num_mem * 2;
    1568 
    1569   STACK_INIT(*palloca_base, xmalloc_base, n, INIT_MATCH_STACK_SIZE);
    1570   pop_level = reg->stack_pop_level;
    1571   num_mem = reg->num_mem;
    1572   repeat_stk = (OnigStackIndex* )*palloca_base;
    1573 
    1574   mem_start_stk = (OnigStackIndex* )(repeat_stk + reg->num_repeat);
    1575   mem_end_stk   = mem_start_stk + num_mem;
     1667  mem_end_stk   = mem_start_stk + (num_mem + ADD_NUMMEM);
     1668  {
     1669    OnigStackIndex *pp = mem_start_stk;
     1670    for (; pp < repeat_stk + n; pp += 2) {
     1671      pp[0] = INVALID_STACK_INDEX;
     1672      pp[1] = INVALID_STACK_INDEX;
     1673    }
     1674  }
     1675#ifndef USE_SUBEXP_CALL
    15761676  mem_start_stk--; /* for index start from 1,
    15771677                      mem_start_stk[1]..mem_start_stk[num_mem] */
    15781678  mem_end_stk--;   /* for index start from 1,
    15791679                      mem_end_stk[1]..mem_end_stk[num_mem] */
    1580 #endif /* USE_SUBEXP_CALL */
    1581   {
    1582       OnigStackIndex *pp = mem_start_stk;
    1583       for (; pp < (repeat_stk + n); pp+=2) {
    1584           pp[0] = INVALID_STACK_INDEX;
    1585           pp[1] = INVALID_STACK_INDEX;
    1586       }
    1587   }
     1680#endif
    15881681
    15891682#ifdef ONIG_DEBUG_MATCH
    1590   fprintf(stderr, "match_at: str: %"PRIdPTR" (%p), end: %"PRIdPTR" (%p), start: %"PRIdPTR" (%p), sprev: %"PRIdPTR" (%p)\n",
    1591           (intptr_t )str, str, (intptr_t )end, end, (intptr_t )sstart, sstart, (intptr_t )sprev, sprev);
     1683  fprintf(stderr, "match_at: str: %"PRIuPTR" (%p), end: %"PRIuPTR" (%p), start: %"PRIuPTR" (%p), sprev: %"PRIuPTR" (%p)\n",
     1684          (uintptr_t )str, str, (uintptr_t )end, end, (uintptr_t )sstart, sstart, (uintptr_t )sprev, sprev);
    15921685  fprintf(stderr, "size: %d, start offset: %d\n",
    15931686          (int )(end - str), (int )(sstart - str));
     1687  fprintf(stderr, "\n ofs> str                   stk:type   addr:opcode\n");
    15941688#endif
    15951689
     
    16011695
    16021696#ifdef ONIG_DEBUG_MATCH
    1603 #define OPCODE_EXEC_HOOK                                                \
     1697# define OPCODE_EXEC_HOOK                                               \
    16041698    if (s) {                                                            \
    16051699      UChar *op, *q, *bp, buf[50];                                      \
    16061700      int len;                                                          \
    1607       op = p - 1;                                                       \
     1701      op = p - OP_OFFSET;                                               \
    16081702      fprintf(stderr, "%4"PRIdPTR"> \"", (*op == OP_FINISH) ? (ptrdiff_t )-1 : s - str); \
    16091703      bp = buf;                                                         \
     
    16111705      if (*op != OP_FINISH) {    /* s may not be a valid pointer if OP_FINISH. */ \
    16121706        for (i = 0; i < 7 && q < end; i++) {                            \
    1613           len = enclen(encode, q);                                      \
     1707          len = enclen(encode, q, end);                                 \
    16141708          while (len-- > 0) *bp++ = *q++;                               \
    16151709        }                                                               \
     1710        if (q < end) { xmemcpy(bp, "...", 3); bp += 3; }                \
    16161711      }                                                                 \
    1617       if (q < end) { xmemcpy(bp, "...\"", 4); bp += 4; }                \
    1618       else         { xmemcpy(bp, "\"",    1); bp += 1; }                \
     1712      xmemcpy(bp, "\"", 1); bp += 1;                                    \
    16191713      *bp = 0;                                                          \
    16201714      fputs((char* )buf, stderr);                                       \
    16211715      for (i = 0; i < 20 - (bp - buf); i++) fputc(' ', stderr);         \
    1622       fprintf(stderr, "%4"PRIdPTR":", (op == FinishCode) ? (ptrdiff_t )-1 : op - reg->p); \
    1623       onig_print_compiled_byte_code(stderr, op, NULL, encode);           \
     1716      fprintf(stderr, "%4"PRIdPTR":%s %4"PRIdPTR":",                    \
     1717          stk - stk_base - 1,                                           \
     1718          (stk > stk_base) ? stack_type_str(stk[-1].type) : "      ",   \
     1719          (op == FinishCode) ? (ptrdiff_t )-1 : op - reg->p);           \
     1720      onig_print_compiled_byte_code(stderr, op, reg->p+reg->used, NULL, encode); \
    16241721      fprintf(stderr, "\n");                                            \
    16251722    }
    16261723#else
    1627 #define OPCODE_EXEC_HOOK ((void) 0)
     1724# define OPCODE_EXEC_HOOK ((void) 0)
    16281725#endif
    16291726
     
    16421739          else
    16431740            goto end_best_len;
    1644         }
     1741        }
    16451742#endif
    16461743        best_len = n;
    16471744        region = msa->region;
    16481745        if (region) {
    1649 #ifdef USE_POSIX_API_REGION_OPTION
    1650           if (IS_POSIX_REGION(msa->options)) {
    1651             posix_regmatch_t* rmt = (posix_regmatch_t* )region;
    1652 
    1653             rmt[0].rm_so = (regoff_t )(((pkeep > s) ? s : pkeep) - str);
    1654             rmt[0].rm_eo = (regoff_t )(s - str);
    1655             for (i = 1; i <= num_mem; i++) {
    1656               if (mem_end_stk[i] != INVALID_STACK_INDEX) {
    1657                 if (BIT_STATUS_AT(reg->bt_mem_start, i))
    1658                   rmt[i].rm_so = (regoff_t )(STACK_AT(mem_start_stk[i])->u.mem.pstr - str);
    1659                 else
    1660                   rmt[i].rm_so = (regoff_t )((UChar* )((void* )(mem_start_stk[i])) - str);
    1661 
    1662                 rmt[i].rm_eo = (regoff_t )((BIT_STATUS_AT(reg->bt_mem_end, i)
     1746          region->beg[0] = ((pkeep > s) ? s : pkeep) - str;
     1747          region->end[0] = s - str;
     1748          for (i = 1; i <= num_mem; i++) {
     1749            if (mem_end_stk[i] != INVALID_STACK_INDEX) {
     1750              if (BIT_STATUS_AT(reg->bt_mem_start, i))
     1751                region->beg[i] = STACK_AT(mem_start_stk[i])->u.mem.pstr - str;
     1752              else
     1753                region->beg[i] = (UChar* )((void* )mem_start_stk[i]) - str;
     1754
     1755              region->end[i] = (BIT_STATUS_AT(reg->bt_mem_end, i)
    16631756                                ? STACK_AT(mem_end_stk[i])->u.mem.pstr
    1664                                 : (UChar* )((void* )mem_end_stk[i])) - str);
    1665               }
    1666               else {
    1667                 rmt[i].rm_so = rmt[i].rm_eo = ONIG_REGION_NOTPOS;
    1668               }
     1757                                : (UChar* )((void* )mem_end_stk[i])) - str;
     1758            }
     1759            else {
     1760              region->beg[i] = region->end[i] = ONIG_REGION_NOTPOS;
    16691761            }
    16701762          }
    1671           else {
    1672 #endif /* USE_POSIX_API_REGION_OPTION */
    1673             region->beg[0] = ((pkeep > s) ? s : pkeep) - str;
    1674             region->end[0] = s - str;
    1675             for (i = 1; i <= num_mem; i++) {
    1676               if (mem_end_stk[i] != INVALID_STACK_INDEX) {
    1677                 if (BIT_STATUS_AT(reg->bt_mem_start, i))
    1678                   region->beg[i] = STACK_AT(mem_start_stk[i])->u.mem.pstr - str;
    1679                 else
    1680                   region->beg[i] = (UChar* )((void* )mem_start_stk[i]) - str;
    1681 
    1682                 region->end[i] = (BIT_STATUS_AT(reg->bt_mem_end, i)
    1683                                   ? STACK_AT(mem_end_stk[i])->u.mem.pstr
    1684                                   : (UChar* )((void* )mem_end_stk[i])) - str;
    1685               }
    1686               else {
    1687                 region->beg[i] = region->end[i] = ONIG_REGION_NOTPOS;
    1688               }
     1763
     1764#ifdef USE_CAPTURE_HISTORY
     1765          if (reg->capture_history != 0) {
     1766            int r;
     1767            OnigCaptureTreeNode* node;
     1768
     1769            if (IS_NULL(region->history_root)) {
     1770              region->history_root = node = history_node_new();
     1771              CHECK_NULL_RETURN_MEMERR(node);
    16891772            }
    1690 
    1691 #ifdef USE_CAPTURE_HISTORY
    1692             if (reg->capture_history != 0) {
    1693               int r;
    1694               OnigCaptureTreeNode* node;
    1695 
    1696               if (IS_NULL(region->history_root)) {
    1697                 region->history_root = node = history_node_new();
    1698                 CHECK_NULL_RETURN_MEMERR(node);
    1699               }
    1700               else {
    1701                 node = region->history_root;
    1702                 history_tree_clear(node);
    1703               }
    1704 
    1705               node->group = 0;
    1706               node->beg   = ((pkeep > s) ? s : pkeep) - str;
    1707               node->end   = s - str;
    1708 
    1709               stkp = stk_base;
    1710               r = make_capture_history_tree(region->history_root, &stkp,
    1711                                             stk, (UChar* )str, reg);
    1712               if (r < 0) {
    1713                 best_len = r; /* error code */
    1714                 goto finish;
    1715               }
     1773            else {
     1774              node = region->history_root;
     1775              history_tree_clear(node);
    17161776            }
     1777
     1778            node->group = 0;
     1779            node->beg   = ((pkeep > s) ? s : pkeep) - str;
     1780            node->end   = s - str;
     1781
     1782            stkp = stk_base;
     1783            r = make_capture_history_tree(region->history_root, &stkp,
     1784                stk, (UChar* )str, reg);
     1785            if (r < 0) {
     1786              best_len = r; /* error code */
     1787              goto finish;
     1788            }
     1789          }
    17171790#endif /* USE_CAPTURE_HISTORY */
    1718 #ifdef USE_POSIX_API_REGION_OPTION
    1719           } /* else IS_POSIX_REGION() */
    1720 #endif
    17211791        } /* if (region) */
    17221792      } /* n > best_len */
     
    17421812
    17431813    CASE(OP_EXACT1)  MOP_IN(OP_EXACT1);
    1744 #if 0
    17451814      DATA_ENSURE(1);
    17461815      if (*p != *s) goto fail;
    17471816      p++; s++;
    1748 #endif
    1749       if (*p != *s++) goto fail;
    1750       DATA_ENSURE(0);
    1751       p++;
    17521817      MOP_OUT;
    17531818      NEXT;
     
    17671832        while (len-- > 0) {
    17681833          if (*p != *q) {
    1769             goto fail;
    1770           }
     1834            goto fail;
     1835          }
    17711836          p++; q++;
    17721837        }
     
    19502015      if (BITSET_AT(((BitSetRef )p), *s) == 0) goto fail;
    19512016      p += SIZE_BITSET;
    1952       s += enclen(encode, s);   /* OP_CCLASS can match mb-code. \D, \S */
     2017      s += enclen(encode, s, end);   /* OP_CCLASS can match mb-code. \D, \S */
    19532018      MOP_OUT;
    19542019      NEXT;
    19552020
    19562021    CASE(OP_CCLASS_MB)  MOP_IN(OP_CCLASS_MB);
    1957       if (! ONIGENC_IS_MBC_HEAD(encode, s)) goto fail;
     2022      if (! ONIGENC_IS_MBC_HEAD(encode, s, end)) goto fail;
    19582023
    19592024    cclass_mb:
     
    19652030
    19662031        DATA_ENSURE(1);
    1967         mb_len = enclen(encode, s);
     2032        mb_len = enclen(encode, s, end);
    19682033        DATA_ENSURE(mb_len);
    19692034        ss = s;
     
    19852050    CASE(OP_CCLASS_MIX)  MOP_IN(OP_CCLASS_MIX);
    19862051      DATA_ENSURE(1);
    1987       if (ONIGENC_IS_MBC_HEAD(encode, s)) {
     2052      if (ONIGENC_IS_MBC_HEAD(encode, s, end)) {
    19882053        p += SIZE_BITSET;
    19892054        goto cclass_mb;
     
    20052070      if (BITSET_AT(((BitSetRef )p), *s) != 0) goto fail;
    20062071      p += SIZE_BITSET;
    2007       s += enclen(encode, s);
     2072      s += enclen(encode, s, end);
    20082073      MOP_OUT;
    20092074      NEXT;
     
    20112076    CASE(OP_CCLASS_MB_NOT)  MOP_IN(OP_CCLASS_MB_NOT);
    20122077      DATA_ENSURE(1);
    2013       if (! ONIGENC_IS_MBC_HEAD(encode, s)) {
     2078      if (! ONIGENC_IS_MBC_HEAD(encode, s, end)) {
    20142079        s++;
    20152080        GET_LENGTH_INC(tlen, p);
     
    20232088        OnigCodePoint code;
    20242089        UChar *ss;
    2025         int mb_len = enclen(encode, s);
     2090        int mb_len = enclen(encode, s, end);
    20262091
    20272092        if (! DATA_ENSURE_CHECK(mb_len)) {
    2028           DATA_ENSURE(1);
     2093          DATA_ENSURE(1);
    20292094          s = (UChar* )end;
    20302095          p += tlen;
     
    20522117    CASE(OP_CCLASS_MIX_NOT)  MOP_IN(OP_CCLASS_MIX_NOT);
    20532118      DATA_ENSURE(1);
    2054       if (ONIGENC_IS_MBC_HEAD(encode, s)) {
     2119      if (ONIGENC_IS_MBC_HEAD(encode, s, end)) {
    20552120        p += SIZE_BITSET;
    20562121        goto cclass_mb_not;
     
    20682133      NEXT;
    20692134
    2070     CASE(OP_CCLASS_NODE)  MOP_IN(OP_CCLASS_NODE);
    2071       {
    2072         OnigCodePoint code;
    2073         void *node;
    2074         int mb_len;
    2075         UChar *ss;
    2076 
    2077         DATA_ENSURE(1);
    2078         GET_POINTER_INC(node, p);
    2079         mb_len = enclen(encode, s);
    2080         ss = s;
    2081         s += mb_len;
    2082         DATA_ENSURE(0);
    2083         code = ONIGENC_MBC_TO_CODE(encode, ss, s);
    2084         if (onig_is_code_in_cc_len(mb_len, code, node) == 0) goto fail;
    2085       }
    2086       MOP_OUT;
    2087       NEXT;
    2088 
    20892135    CASE(OP_ANYCHAR)  MOP_IN(OP_ANYCHAR);
    20902136      DATA_ENSURE(1);
    2091       n = enclen(encode, s);
     2137      n = enclen(encode, s, end);
    20922138      DATA_ENSURE(n);
    20932139      if (ONIGENC_IS_MBC_NEWLINE_EX(encode, s, str, end, option, 0)) goto fail;
     
    20982144    CASE(OP_ANYCHAR_ML)  MOP_IN(OP_ANYCHAR_ML);
    20992145      DATA_ENSURE(1);
    2100       n = enclen(encode, s);
     2146      n = enclen(encode, s, end);
    21012147      DATA_ENSURE(n);
    21022148      s += n;
     
    21072153      while (DATA_ENSURE_CHECK1) {
    21082154        STACK_PUSH_ALT(p, s, sprev, pkeep);
    2109         n = enclen(encode, s);
    2110         DATA_ENSURE(n);
    2111         if (ONIGENC_IS_MBC_NEWLINE_EX(encode, s, str, end, option, 0))  goto fail;
    2112         sprev = s;
    2113         s += n;
    2114       }
    2115       MOP_OUT;
    2116       NEXT;
     2155        n = enclen(encode, s, end);
     2156        DATA_ENSURE(n);
     2157        if (ONIGENC_IS_MBC_NEWLINE_EX(encode, s, str, end, option, 0))  goto fail;
     2158        sprev = s;
     2159        s += n;
     2160      }
     2161      MOP_OUT;
     2162      JUMP;
    21172163
    21182164    CASE(OP_ANYCHAR_ML_STAR)  MOP_IN(OP_ANYCHAR_ML_STAR);
    21192165      while (DATA_ENSURE_CHECK1) {
    21202166        STACK_PUSH_ALT(p, s, sprev, pkeep);
    2121         n = enclen(encode, s);
     2167        n = enclen(encode, s, end);
    21222168        if (n > 1) {
    21232169          DATA_ENSURE(n);
     
    21312177      }
    21322178      MOP_OUT;
    2133       NEXT;
     2179      JUMP;
    21342180
    21352181    CASE(OP_ANYCHAR_STAR_PEEK_NEXT)  MOP_IN(OP_ANYCHAR_STAR_PEEK_NEXT);
     
    21382184          STACK_PUSH_ALT(p + 1, s, sprev, pkeep);
    21392185        }
    2140         n = enclen(encode, s);
    2141         DATA_ENSURE(n);
    2142         if (ONIGENC_IS_MBC_NEWLINE_EX(encode, s, str, end, option, 0))  goto fail;
    2143         sprev = s;
    2144         s += n;
     2186        n = enclen(encode, s, end);
     2187        DATA_ENSURE(n);
     2188        if (ONIGENC_IS_MBC_NEWLINE_EX(encode, s, str, end, option, 0))  goto fail;
     2189        sprev = s;
     2190        s += n;
    21452191      }
    21462192      p++;
     
    21532199          STACK_PUSH_ALT(p + 1, s, sprev, pkeep);
    21542200        }
    2155         n = enclen(encode, s);
     2201        n = enclen(encode, s, end);
    21562202        if (n > 1) {
    21572203          DATA_ENSURE(n);
     
    21762222
    21772223        STACK_PUSH_ALT_WITH_STATE_CHECK(p, s, sprev, mem, pkeep);
    2178         n = enclen(encode, s);
    2179         DATA_ENSURE(n);
    2180         if (ONIGENC_IS_MBC_NEWLINE_EX(encode, s, str, end, option, 0))  goto fail;
    2181         sprev = s;
    2182         s += n;
     2224        n = enclen(encode, s, end);
     2225        DATA_ENSURE(n);
     2226        if (ONIGENC_IS_MBC_NEWLINE_EX(encode, s, str, end, option, 0))  goto fail;
     2227        sprev = s;
     2228        s += n;
    21832229      }
    21842230      MOP_OUT;
     
    21942240
    21952241        STACK_PUSH_ALT_WITH_STATE_CHECK(p, s, sprev, mem, pkeep);
    2196         n = enclen(encode, s);
     2242        n = enclen(encode, s, end);
    21972243        if (n > 1) {
    21982244          DATA_ENSURE(n);
     
    22142260        goto fail;
    22152261
    2216       s += enclen(encode, s);
     2262      s += enclen(encode, s, end);
    22172263      MOP_OUT;
    22182264      NEXT;
     
    22232269        goto fail;
    22242270
    2225       s += enclen(encode, s);
     2271      s += enclen(encode, s, end);
    22262272      MOP_OUT;
    22272273      NEXT;
     
    22322278        goto fail;
    22332279
    2234       s += enclen(encode, s);
     2280      s += enclen(encode, s, end);
    22352281      MOP_OUT;
    22362282      NEXT;
     
    22412287        goto fail;
    22422288
    2243       s += enclen(encode, s);
     2289      s += enclen(encode, s, end);
    22442290      MOP_OUT;
    22452291      NEXT;
     
    23722418
    23732419    CASE(OP_BEGIN_LINE)  MOP_IN(OP_BEGIN_LINE);
    2374     op_begin_line:
    23752420      if (ON_STR_BEGIN(s)) {
    23762421        if (IS_NOTBOL(msa->options)) goto fail;
     
    24222467      }
    24232468      else if (ONIGENC_IS_MBC_NEWLINE_EX(encode, s, str, end, option, 1)) {
    2424         UChar* ss = s + enclen(encode, s);
     2469        UChar* ss = s + enclen(encode, s, end);
    24252470        if (ON_STR_END(ss)) {
    24262471          MOP_OUT;
     
    24302475        else if (IS_NEWLINE_CRLF(option)
    24312476            && ONIGENC_IS_MBC_CRNL(encode, s, end)) {
    2432           ss += enclen(encode, ss);
     2477          ss += enclen(encode, ss, end);
    24332478          if (ON_STR_END(ss)) {
    24342479            MOP_OUT;
     
    24442489      if (s != msa->gpos)
    24452490        goto fail;
    2446 
    2447       MOP_OUT;
    2448       JUMP;
    2449 
    2450     CASE(OP_BEGIN_POS_OR_LINE)  MOP_IN(OP_BEGIN_POS_OR_LINE);
    2451       if (s != msa->gpos)
    2452         goto op_begin_line;
    24532491
    24542492      MOP_OUT;
     
    25432581        sprev = s;
    25442582        STRING_CMP(pstart, s, n);
    2545         while (sprev + (len = enclen(encode, sprev)) < s)
     2583        while (sprev + (len = enclen(encode, sprev, end)) < s)
    25462584          sprev += len;
    25472585
     
    25732611        DATA_ENSURE(n);
    25742612        sprev = s;
    2575         STRING_CMP_IC(case_fold_flag, pstart, &s, n);
    2576         while (sprev + (len = enclen(encode, sprev)) < s)
     2613        STRING_CMP_IC(case_fold_flag, pstart, &s, (int)n, end);
     2614        while (sprev + (len = enclen(encode, sprev, end)) < s)
    25772615          sprev += len;
    25782616
     
    26092647          if (is_fail) continue;
    26102648          s = swork;
    2611           while (sprev + (len = enclen(encode, sprev)) < s)
     2649          while (sprev + (len = enclen(encode, sprev, end)) < s)
    26122650            sprev += len;
    26132651
     
    26452683          sprev = s;
    26462684          swork = s;
    2647           STRING_CMP_VALUE_IC(case_fold_flag, pstart, &swork, n, is_fail);
     2685          STRING_CMP_VALUE_IC(case_fold_flag, pstart, &swork, n, end, is_fail);
    26482686          if (is_fail) continue;
    26492687          s = swork;
    2650           while (sprev + (len = enclen(encode, sprev)) < s)
     2688          while (sprev + (len = enclen(encode, sprev, end)) < s)
    26512689            sprev += len;
    26522690
     
    26712709
    26722710        sprev = s;
    2673         if (backref_match_at_nested_level(reg, stk, stk_base, ic
    2674                   , case_fold_flag, (int )level, (int )tlen, p, &s, end)) {
    2675           while (sprev + (len = enclen(encode, sprev)) < s)
     2711        if (backref_match_at_nested_level(reg, stk, stk_base, ic,
     2712                  case_fold_flag, (int )level, (int )tlen, p, &s, end)) {
     2713          while (sprev + (len = enclen(encode, sprev, end)) < s)
    26762714            sprev += len;
    26772715
     
    27152753        if (isnull) {
    27162754#ifdef ONIG_DEBUG_MATCH
    2717           fprintf(stderr, "NULL_CHECK_END: skip  id:%d, s:%"PRIdPTR" (%p)\n",
    2718                   (int )mem, (intptr_t )s, s);
     2755          fprintf(stderr, "NULL_CHECK_END: skip  id:%d, s:%"PRIuPTR" (%p)\n",
     2756                  (int )mem, (uintptr_t )s, s);
    27192757#endif
    27202758        null_check_found:
     
    27482786        STACK_NULL_CHECK_MEMST(isnull, mem, s, reg);
    27492787        if (isnull) {
    2750 #ifdef ONIG_DEBUG_MATCH
    2751           fprintf(stderr, "NULL_CHECK_END_MEMST: skip  id:%d, s:%"PRIdPTR" (%p)\n",
    2752                   (int )mem, (intptr_t )s, s);
    2753 #endif
     2788# ifdef ONIG_DEBUG_MATCH
     2789          fprintf(stderr, "NULL_CHECK_END_MEMST: skip  id:%d, s:%"PRIuPTR" (%p)\n",
     2790                  (int )mem, (uintptr_t )s, s);
     2791# endif
    27542792          if (isnull == -1) goto fail;
    27552793          goto null_check_found;
     
    27672805
    27682806        GET_MEMNUM_INC(mem, p); /* mem: null check id */
    2769 #ifdef USE_MONOMANIAC_CHECK_CAPTURES_IN_ENDLESS_REPEAT
     2807# ifdef USE_MONOMANIAC_CHECK_CAPTURES_IN_ENDLESS_REPEAT
    27702808        STACK_NULL_CHECK_MEMST_REC(isnull, mem, s, reg);
    2771 #else
     2809# else
    27722810        STACK_NULL_CHECK_REC(isnull, mem, s);
    2773 #endif
     2811# endif
    27742812        if (isnull) {
    2775 #ifdef ONIG_DEBUG_MATCH
    2776           fprintf(stderr, "NULL_CHECK_END_MEMST_PUSH: skip  id:%d, s:%"PRIdPTR" (%p)\n",
    2777                   (int )mem, (intptr_t )s, s);
    2778 #endif
     2813# ifdef ONIG_DEBUG_MATCH
     2814          fprintf(stderr, "NULL_CHECK_END_MEMST_PUSH: skip  id:%d, s:%"PRIuPTR" (%p)\n",
     2815                  (int )mem, (uintptr_t )s, s);
     2816# endif
    27792817          if (isnull == -1) goto fail;
    27802818          goto null_check_found;
     
    28402878      JUMP;
    28412879
     2880#ifdef USE_OP_PUSH_OR_JUMP_EXACT
    28422881    CASE(OP_PUSH_OR_JUMP_EXACT1)  MOP_IN(OP_PUSH_OR_JUMP_EXACT1);
    28432882      GET_RELADDR_INC(addr, p);
     
    28512890      MOP_OUT;
    28522891      JUMP;
     2892#endif
    28532893
    28542894    CASE(OP_PUSH_IF_PEEK_NEXT)  MOP_IN(OP_PUSH_IF_PEEK_NEXT);
     
    29052945      stkp->u.repeat.count++;
    29062946      if (stkp->u.repeat.count >= reg->repeat_range[mem].upper) {
    2907         /* end of repeat. Nothing to do. */
     2947        /* end of repeat. Nothing to do. */
    29082948      }
    29092949      else if (stkp->u.repeat.count >= reg->repeat_range[mem].lower) {
    2910         STACK_PUSH_ALT(p, s, sprev, pkeep);
    2911         p = STACK_AT(si)->u.repeat.pcode; /* Don't use stkp after PUSH. */
     2950        STACK_PUSH_ALT(p, s, sprev, pkeep);
     2951        p = STACK_AT(si)->u.repeat.pcode; /* Don't use stkp after PUSH. */
    29122952      }
    29132953      else {
    2914         p = stkp->u.repeat.pcode;
     2954        p = stkp->u.repeat.pcode;
    29152955      }
    29162956      STACK_PUSH_REPEAT_INC(si);
     
    29342974      stkp->u.repeat.count++;
    29352975      if (stkp->u.repeat.count < reg->repeat_range[mem].upper) {
    2936         if (stkp->u.repeat.count >= reg->repeat_range[mem].lower) {
    2937           UChar* pcode = stkp->u.repeat.pcode;
    2938 
    2939           STACK_PUSH_REPEAT_INC(si);
    2940           STACK_PUSH_ALT(pcode, s, sprev, pkeep);
    2941         }
    2942         else {
    2943           p = stkp->u.repeat.pcode;
    2944           STACK_PUSH_REPEAT_INC(si);
    2945         }
     2976        if (stkp->u.repeat.count >= reg->repeat_range[mem].lower) {
     2977          UChar* pcode = stkp->u.repeat.pcode;
     2978
     2979          STACK_PUSH_REPEAT_INC(si);
     2980          STACK_PUSH_ALT(pcode, s, sprev, pkeep);
     2981        }
     2982        else {
     2983          p = stkp->u.repeat.pcode;
     2984          STACK_PUSH_REPEAT_INC(si);
     2985        }
    29462986      }
    29472987      else if (stkp->u.repeat.count == reg->repeat_range[mem].upper) {
    2948         STACK_PUSH_REPEAT_INC(si);
     2988        STACK_PUSH_REPEAT_INC(si);
    29492989      }
    29502990      MOP_OUT;
     
    29963036    CASE(OP_LOOK_BEHIND)  MOP_IN(OP_LOOK_BEHIND);
    29973037      GET_LENGTH_INC(tlen, p);
    2998       s = (UChar* )ONIGENC_STEP_BACK(encode, str, s, (int )tlen);
     3038      s = (UChar* )ONIGENC_STEP_BACK(encode, str, s, end, (int )tlen);
    29993039      if (IS_NULL(s)) goto fail;
    3000       sprev = (UChar* )onigenc_get_prev_char_head(encode, str, s);
     3040      sprev = (UChar* )onigenc_get_prev_char_head(encode, str, s, end);
    30013041      MOP_OUT;
    30023042      JUMP;
     
    30053045      GET_RELADDR_INC(addr, p);
    30063046      GET_LENGTH_INC(tlen, p);
    3007       q = (UChar* )ONIGENC_STEP_BACK(encode, str, s, (int )tlen);
     3047      q = (UChar* )ONIGENC_STEP_BACK(encode, str, s, end, (int )tlen);
    30083048      if (IS_NULL(q)) {
    30093049        /* too short case -> success. ex. /(?<!XXX)a/.match("a")
     
    30153055        STACK_PUSH_LOOK_BEHIND_NOT(p + addr, s, sprev, pkeep);
    30163056        s = q;
    3017         sprev = (UChar* )onigenc_get_prev_char_head(encode, str, s);
     3057        sprev = (UChar* )onigenc_get_prev_char_head(encode, str, s, end);
    30183058      }
    30193059      MOP_OUT;
     
    30223062    CASE(OP_FAIL_LOOK_BEHIND_NOT)  MOP_IN(OP_FAIL_LOOK_BEHIND_NOT);
    30233063      STACK_POP_TIL_LOOK_BEHIND_NOT;
     3064      goto fail;
     3065      NEXT;
     3066
     3067    CASE(OP_PUSH_ABSENT_POS)  MOP_IN(OP_PUSH_ABSENT_POS);
     3068      /* Save the absent-start-pos and the original end-pos. */
     3069      STACK_PUSH_ABSENT_POS(s, ABSENT_END_POS);
     3070      MOP_OUT;
     3071      JUMP;
     3072
     3073    CASE(OP_ABSENT)  MOP_IN(OP_ABSENT);
     3074      {
     3075        const UChar* aend = ABSENT_END_POS;
     3076        UChar* absent;
     3077        UChar* selfp = p - 1;
     3078
     3079        STACK_POP_ABSENT_POS(absent, ABSENT_END_POS);  /* Restore end-pos. */
     3080        GET_RELADDR_INC(addr, p);
     3081#ifdef ONIG_DEBUG_MATCH
     3082        fprintf(stderr, "ABSENT: s:%p, end:%p, absent:%p, aend:%p\n", s, end, absent, aend);
     3083#endif
     3084        if ((absent > aend) && (s > absent)) {
     3085          /* An empty match occurred in (?~...) at the start point.
     3086           * Never match. */
     3087          STACK_POP;
     3088          goto fail;
     3089        }
     3090        else if ((s >= aend) && (s > absent)) {
     3091          if (s > aend) {
     3092            /* Only one (or less) character matched in the last iteration.
     3093             * This is not a possible point. */
     3094            goto fail;
     3095          }
     3096          /* All possible points were found. Try matching after (?~...). */
     3097          DATA_ENSURE(0);
     3098          p += addr;
     3099        }
     3100        else {
     3101          STACK_PUSH_ALT(p + addr, s, sprev, pkeep); /* Push possible point. */
     3102          n = enclen(encode, s, end);
     3103          STACK_PUSH_ABSENT_POS(absent, ABSENT_END_POS); /* Save the original pos. */
     3104          STACK_PUSH_ALT(selfp, s + n, s, pkeep); /* Next iteration. */
     3105          STACK_PUSH_ABSENT;
     3106          ABSENT_END_POS = aend;
     3107        }
     3108      }
     3109      MOP_OUT;
     3110      JUMP;
     3111
     3112    CASE(OP_ABSENT_END)  MOP_IN(OP_ABSENT_END);
     3113      /* The pattern inside (?~...) was matched.
     3114       * Set the end-pos temporary and go to next iteration. */
     3115      if (sprev < ABSENT_END_POS)
     3116        ABSENT_END_POS = sprev;
     3117#ifdef ONIG_DEBUG_MATCH
     3118      fprintf(stderr, "ABSENT_END: end:%p\n", ABSENT_END_POS);
     3119#endif
     3120      STACK_POP_TIL_ABSENT;
    30243121      goto fail;
    30253122      NEXT;
     
    30573154    CASE(OP_FAIL)
    30583155      if (0) {
    3059         /* fall */
     3156        /* fall */
    30603157      fail:
    3061         MOP_OUT;
     3158        MOP_OUT;
    30623159      }
    30633160      MOP_IN(OP_FAIL);
     
    30703167#ifdef USE_COMBINATION_EXPLOSION_CHECK
    30713168      if (stk->u.state.state_check != 0) {
    3072         stk->type = STK_STATE_CHECK_MARK;
    3073         stk++;
     3169        stk->type = STK_STATE_CHECK_MARK;
     3170        stk++;
    30743171      }
    30753172#endif
     
    31053202}
    31063203
    3107 static OnigPosition
    3108 match_at(regex_t* reg, const UChar* str, const UChar* end,
    3109 #ifdef USE_MATCH_RANGE_MUST_BE_INSIDE_OF_SPECIFIED_RANGE
    3110         const UChar* right_range,
    3111 #endif
    3112         const UChar* sstart, UChar* sprev, OnigMatchArg* msa)
    3113 {
    3114         char *alloca_base = NULL;
    3115         OnigPosition ret = match_at_(reg, str, end,
    3116 #ifdef USE_MATCH_RANGE_MUST_BE_INSIDE_OF_SPECIFIED_RANGE
    3117                 right_range,
    3118 #endif
    3119                 sstart, sprev, msa, &alloca_base);
    3120         if(alloca_base) xfree(alloca_base);
    3121         return ret;
    3122 }
    31233204
    31243205static UChar*
     
    31563237        return s;
    31573238    }
    3158     s += enclen(enc, s);
     3239    s += enclen(enc, s, text_end);
    31593240  }
    31603241
     
    31643245static int
    31653246str_lower_case_match(OnigEncoding enc, int case_fold_flag,
    3166                      const UChar* t, const UChar* tend,
     3247                     const UChar* t, const UChar* tend,
    31673248                     const UChar* p, const UChar* end)
    31683249{
     
    32013282      return s;
    32023283
    3203     s += enclen(enc, s);
     3284    s += enclen(enc, s, text_end);
    32043285  }
    32053286
     
    32193300    s = (UChar* )text_start;
    32203301  else
    3221     s = ONIGENC_LEFT_ADJUST_CHAR_HEAD(enc, adjust_text, s);
     3302    s = ONIGENC_LEFT_ADJUST_CHAR_HEAD(enc, adjust_text, s, text_end);
    32223303
    32233304  while (s >= text) {
     
    32333314        return s;
    32343315    }
    3235     s = (UChar* )onigenc_get_prev_char_head(enc, adjust_text, s);
     3316    s = (UChar* )onigenc_get_prev_char_head(enc, adjust_text, s, text_end);
    32363317  }
    32373318
     
    32523333    s = (UChar* )text_start;
    32533334  else
    3254     s = ONIGENC_LEFT_ADJUST_CHAR_HEAD(enc, adjust_text, s);
     3335    s = ONIGENC_LEFT_ADJUST_CHAR_HEAD(enc, adjust_text, s, text_end);
    32553336
    32563337  while (s >= text) {
    32573338    if (str_lower_case_match(enc, case_fold_flag,
    3258                              target, target_end, s, text_end))
     3339                             target, target_end, s, text_end))
    32593340      return s;
    32603341
    3261     s = (UChar* )onigenc_get_prev_char_head(enc, adjust_text, s);
     3342    s = (UChar* )onigenc_get_prev_char_head(enc, adjust_text, s, text_end);
    32623343  }
    32633344
     
    32763357  ptrdiff_t skip, tlen1;
    32773358
    3278 #ifdef ONIG_DEBUG_SEARCH
     3359# ifdef ONIG_DEBUG_SEARCH
    32793360  fprintf(stderr, "bm_search_notrev: text: %"PRIuPTR" (%p), text_end: %"PRIuPTR" (%p), text_range: %"PRIuPTR" (%p)\n",
    3280           text, text, text_end, text_end, text_range, text_range);
    3281 #endif
     3361          (uintptr_t )text, text, (uintptr_t )text_end, text_end, (uintptr_t )text_range, text_range);
     3362# endif
    32823363
    32833364  tail = target_end - 1;
     
    33003381      t = s;
    33013382      do {
    3302         s += enclen(reg->enc, s);
     3383        s += enclen(reg->enc, s, end);
    33033384      } while ((s - t) < skip && s < end);
    33043385    }
    33053386  }
    33063387  else {
     3388# if OPT_EXACT_MAXLEN >= ONIG_CHAR_TABLE_SIZE
    33073389    while (s < end) {
    33083390      p = se = s + tlen1;
     
    33153397      t = s;
    33163398      do {
    3317         s += enclen(reg->enc, s);
     3399        s += enclen(reg->enc, s, end);
    33183400      } while ((s - t) < skip && s < end);
    33193401    }
     3402# endif
    33203403  }
    33213404
     
    33313414  const UChar *tail;
    33323415
    3333 #ifdef ONIG_DEBUG_SEARCH
    3334   fprintf(stderr, "bm_search: text: %"PRIuPTR", text_end: %"PRIuPTR", text_range: %"PRIuPTR"\n",
    3335           text, text_end, text_range);
    3336 #endif
     3416# ifdef ONIG_DEBUG_SEARCH
     3417  fprintf(stderr, "bm_search: text: %"PRIuPTR" (%p), text_end: %"PRIuPTR" (%p), text_range: %"PRIuPTR" (%p)\n",
     3418          (uintptr_t )text, text, (uintptr_t )text_end, text_end, (uintptr_t )text_range, text_range);
     3419# endif
    33373420
    33383421  end = text_range + (target_end - target) - 1;
     
    33463429      p = s;
    33473430      t = tail;
    3348 #ifdef ONIG_DEBUG_SEARCH
     3431# ifdef ONIG_DEBUG_SEARCH
    33493432      fprintf(stderr, "bm_search_loop: pos: %"PRIdPTR" %s\n",
    33503433          (intptr_t )(s - text), s);
    3351 #endif
     3434# endif
    33523435      while (*p == *t) {
    33533436        if (t == target) return (UChar* )p;
     
    33583441  }
    33593442  else { /* see int_map[] */
     3443# if OPT_EXACT_MAXLEN >= ONIG_CHAR_TABLE_SIZE
    33603444    while (s < end) {
    33613445      p = s;
     
    33673451      s += reg->int_map[*s];
    33683452    }
     3453# endif
    33693454  }
    33703455  return (UChar* )NULL;
     
    33833468  int case_fold_flag = reg->case_fold_flag;
    33843469
    3385 #ifdef ONIG_DEBUG_SEARCH
     3470# ifdef ONIG_DEBUG_SEARCH
    33863471  fprintf(stderr, "bm_search_notrev_ic: text: %d (%p), text_end: %d (%p), text_range: %d (%p)\n",
    33873472          (int )text, text, (int )text_end, text_end, (int )text_range, text_range);
    3388 #endif
     3473# endif
    33893474
    33903475  tail = target_end - 1;
     
    34053490      t = s;
    34063491      do {
    3407         s += enclen(reg->enc, s);
     3492        s += enclen(reg->enc, s, end);
    34083493      } while ((s - t) < skip && s < end);
    34093494    }
    34103495  }
    34113496  else {
     3497# if OPT_EXACT_MAXLEN >= ONIG_CHAR_TABLE_SIZE
    34123498    while (s < end) {
    34133499      se = s + tlen1;
     
    34183504      t = s;
    34193505      do {
    3420         s += enclen(reg->enc, s);
     3506        s += enclen(reg->enc, s, end);
    34213507      } while ((s - t) < skip && s < end);
    34223508    }
     3509# endif
    34233510  }
    34243511
     
    34363523  int case_fold_flag = reg->case_fold_flag;
    34373524
    3438 #ifdef ONIG_DEBUG_SEARCH
     3525# ifdef ONIG_DEBUG_SEARCH
    34393526  fprintf(stderr, "bm_search_ic: text: %d (%p), text_end: %d (%p), text_range: %d (%p)\n",
    34403527          (int )text, text, (int )text_end, text_end, (int )text_range, text_range);
    3441 #endif
     3528# endif
    34423529
    34433530  end = text_range + (target_end - target) - 1;
     
    34573544  }
    34583545  else { /* see int_map[] */
     3546# if OPT_EXACT_MAXLEN >= ONIG_CHAR_TABLE_SIZE
    34593547    while (s < end) {
    34603548      p = s - (target_end - target) + 1;
     
    34643552      s += reg->int_map[*s];
    34653553    }
     3554# endif
    34663555  }
    34673556  return (UChar* )NULL;
     
    34803569  ptrdiff_t skip, tlen1;
    34813570  OnigEncoding enc = reg->enc;
    3482   int (*mbc_enc_len)(const OnigUChar* p) = enc->mbc_enc_len;
    3483 
    3484 #ifdef ONIG_DEBUG_SEARCH
    3485   fprintf(stderr, "bm_search_notrev: text: %"PRIdPTR" (%p), text_end: %"PRIdPTR" (%p), text_range: %"PRIdPTR" (%p)\n",
    3486           (intptr_t )text, text, (intptr_t )text_end, text_end, (intptr_t )text_range, text_range);
    3487 #endif
     3571
     3572# ifdef ONIG_DEBUG_SEARCH
     3573  fprintf(stderr, "bm_search_notrev: text: %"PRIuPTR" (%p), text_end: %"PRIuPTR" (%p), text_range: %"PRIuPTR" (%p)\n",
     3574          (uintptr_t )text, text, (uintptr_t )text_end, text_end, (uintptr_t )text_range, text_range);
     3575# endif
    34883576
    34893577  tail = target_end - 1;
     
    35073595      t = s;
    35083596      do {
    3509         s += mbc_enc_len(s);
     3597        s += enclen(enc, s, end);
    35103598      } while ((s - t) < skip && s < end);
    35113599    }
    35123600  }
    35133601  else {
     3602# if OPT_EXACT_MAXLEN >= ONIG_CHAR_TABLE_SIZE
    35143603    while (s < end) {
    35153604      p = se = s + tlen1;
     
    35233612      t = s;
    35243613      do {
    3525         s += mbc_enc_len(s);
     3614        s += enclen(enc, s, end);
    35263615      } while ((s - t) < skip && s < end);
    35273616    }
     3617# endif
    35283618  }
    35293619
     
    35393629  const UChar *tail;
    35403630  ptrdiff_t tlen1;
     3631
     3632# ifdef ONIG_DEBUG_SEARCH
     3633  fprintf(stderr, "bm_search: text: %"PRIuPTR" (%p), text_end: %"PRIuPTR" (%p), text_range: %"PRIuPTR" (%p)\n",
     3634          (uintptr_t )text, text, (uintptr_t )text_end, text_end, (uintptr_t )text_range, text_range);
     3635# endif
    35413636
    35423637  tail = target_end - 1;
     
    35603655  }
    35613656  else { /* see int_map[] */
     3657# if OPT_EXACT_MAXLEN >= ONIG_CHAR_TABLE_SIZE
    35623658    while (s < end) {
    35633659      p = s;
     
    35703666      s += reg->int_map[s[1]];
    35713667    }
     3668# endif
    35723669  }
    35733670  return (UChar* )NULL;
     
    35843681  ptrdiff_t skip, tlen1;
    35853682  OnigEncoding enc = reg->enc;
    3586   int (*mbc_enc_len)(const OnigUChar* p) = enc->mbc_enc_len;
    35873683  int case_fold_flag = reg->case_fold_flag;
    35883684
    3589 #ifdef ONIG_DEBUG_SEARCH
    3590   fprintf(stderr, "bm_search_notrev_ic: text: %"PRIdPTR" (%p), text_end: %"PRIdPTR" (%p), text_range: %"PRIdPTR" (%p)\n",
    3591           (intptr_t )text, text, (intptr_t )text_end, text_end, (intptr_t )text_range, text_range);
    3592 #endif
     3685# ifdef ONIG_DEBUG_SEARCH
     3686  fprintf(stderr, "bm_search_notrev_ic: text: %"PRIuPTR" (%p), text_end: %"PRIuPTR" (%p), text_range: %"PRIuPTR" (%p)\n",
     3687          (uintptr_t )text, text, (uintptr_t )text_end, text_end, (uintptr_t )text_range, text_range);
     3688# endif
    35933689
    35943690  tail = target_end - 1;
     
    36103706      t = s;
    36113707      do {
    3612         s += mbc_enc_len(s);
     3708        s += enclen(enc, s, end);
    36133709      } while ((s - t) < skip && s < end);
    36143710    }
    36153711  }
    36163712  else {
     3713# if OPT_EXACT_MAXLEN >= ONIG_CHAR_TABLE_SIZE
    36173714    while (s < end) {
    36183715      se = s + tlen1;
     
    36243721      t = s;
    36253722      do {
    3626         s += mbc_enc_len(s);
     3723        s += enclen(enc, s, end);
    36273724      } while ((s - t) < skip && s < end);
    36283725    }
     3726# endif
    36293727  }
    36303728
     
    36433741  int case_fold_flag = reg->case_fold_flag;
    36443742
    3645 #ifdef ONIG_DEBUG_SEARCH
    3646   fprintf(stderr, "bm_search_ic: text: %"PRIdPTR" (%p), text_end: %"PRIdPTR" (%p), text_range: %"PRIdPTR" (%p)\n",
    3647           (intptr_t )text, text, (intptr_t )text_end, text_end, (intptr_t )text_range, text_range);
    3648 #endif
     3743# ifdef ONIG_DEBUG_SEARCH
     3744  fprintf(stderr, "bm_search_ic: text: %"PRIuPTR" (%p), text_end: %"PRIuPTR" (%p), text_range: %"PRIuPTR" (%p)\n",
     3745          (uintptr_t )text, text, (uintptr_t )text_end, text_end, (uintptr_t )text_range, text_range);
     3746# endif
    36493747
    36503748  tail = target_end - 1;
     
    36663764  }
    36673765  else { /* see int_map[] */
     3766# if OPT_EXACT_MAXLEN >= ONIG_CHAR_TABLE_SIZE
    36683767    while (s < end) {
    36693768      p = s - tlen1;
     
    36743773      s += reg->int_map[s[1]];
    36753774    }
     3775# endif
    36763776  }
    36773777  return (UChar* )NULL;
     
    36793779#endif /* USE_SUNDAY_QUICK_SEARCH */
    36803780
     3781#ifdef USE_INT_MAP_BACKWARD
    36813782static int
    36823783set_bm_backward_skip(UChar* s, UChar* end, OnigEncoding enc ARG_UNUSED,
     
    37113812    s = text_start;
    37123813  else
    3713     s = ONIGENC_LEFT_ADJUST_CHAR_HEAD(reg->enc, adjust_text, s);
     3814    s = ONIGENC_LEFT_ADJUST_CHAR_HEAD(reg->enc, adjust_text, s, text_end);
    37143815
    37153816  while (s >= text) {
     
    37233824
    37243825    s -= reg->int_map_backward[*s];
    3725     s = ONIGENC_LEFT_ADJUST_CHAR_HEAD(reg->enc, adjust_text, s);
     3826    s = ONIGENC_LEFT_ADJUST_CHAR_HEAD(reg->enc, adjust_text, s, text_end);
    37263827  }
    37273828
    37283829  return (UChar* )NULL;
    37293830}
     3831#endif
    37303832
    37313833static UChar*
    37323834map_search(OnigEncoding enc, UChar map[],
    3733            const UChar* text, const UChar* text_range)
     3835           const UChar* text, const UChar* text_range, const UChar* text_end)
    37343836{
    37353837  const UChar *s = text;
     
    37383840    if (map[*s]) return (UChar* )s;
    37393841
    3740     s += enclen(enc, s);
     3842    s += enclen(enc, s, text_end);
    37413843  }
    37423844  return (UChar* )NULL;
     
    37463848map_search_backward(OnigEncoding enc, UChar map[],
    37473849                    const UChar* text, const UChar* adjust_text,
    3748                     const UChar* text_start)
     3850                    const UChar* text_start, const UChar* text_end)
    37493851{
    37503852  const UChar *s = text_start;
     
    37533855    if (map[*s]) return (UChar* )s;
    37543856
    3755     s = onigenc_get_prev_char_head(enc, adjust_text, s);
     3857    s = onigenc_get_prev_char_head(enc, adjust_text, s, text_end);
    37563858  }
    37573859  return (UChar* )NULL;
     
    37653867  UChar *prev;
    37663868  OnigMatchArg msa;
    3767 
    3768 #if defined(USE_RECOMPILE_API) && defined(USE_MULTI_THREAD_SYSTEM)
    3769  start:
    3770   THREAD_ATOMIC_START;
    3771   if (ONIG_STATE(reg) >= ONIG_STATE_NORMAL) {
    3772     ONIG_STATE_INC(reg);
    3773     if (IS_NOT_NULL(reg->chain) && ONIG_STATE(reg) == ONIG_STATE_NORMAL) {
    3774       onig_chain_reduce(reg);
    3775       ONIG_STATE_INC(reg);
    3776     }
    3777   }
    3778   else {
    3779     int n;
    3780 
    3781     THREAD_ATOMIC_END;
    3782     n = 0;
    3783     while (ONIG_STATE(reg) < ONIG_STATE_NORMAL) {
    3784       if (++n > THREAD_PASS_LIMIT_COUNT)
    3785         return ONIGERR_OVER_THREAD_PASS_LIMIT_COUNT;
    3786       THREAD_PASS;
    3787     }
    3788     goto start;
    3789   }
    3790   THREAD_ATOMIC_END;
    3791 #endif /* USE_RECOMPILE_API && USE_MULTI_THREAD_SYSTEM */
    37923869
    37933870  MATCH_ARG_INIT(msa, option, region, at, at);
     
    37993876#endif
    38003877
    3801   if (region
    3802 #ifdef USE_POSIX_API_REGION_OPTION
    3803       && !IS_POSIX_REGION(option)
    3804 #endif
    3805       ) {
     3878  if (region) {
    38063879    r = onig_region_resize_clear(region, reg->num_mem + 1);
    38073880  }
     
    38103883
    38113884  if (r == 0) {
    3812     prev = (UChar* )onigenc_get_prev_char_head(reg->enc, str, at);
     3885    prev = (UChar* )onigenc_get_prev_char_head(reg->enc, str, at, end);
    38133886    r = match_at(reg, str, end,
    38143887#ifdef USE_MATCH_RANGE_MUST_BE_INSIDE_OF_SPECIFIED_RANGE
     
    38193892
    38203893  MATCH_ARG_FREE(msa);
    3821   ONIG_STATE_DEC_THREAD(reg);
    38223894  return r;
    38233895}
     
    38313903#ifdef ONIG_DEBUG_SEARCH
    38323904  fprintf(stderr, "forward_search_range: str: %"PRIuPTR" (%p), end: %"PRIuPTR" (%p), s: %"PRIuPTR" (%p), range: %"PRIuPTR" (%p)\n",
    3833           (intptr_t )str, str, (intptr_t )end, end, (intptr_t )s, s, (intptr_t )range, range);
     3905          (uintptr_t )str, str, (uintptr_t )end, end, (uintptr_t )s, s, (uintptr_t )range, range);
    38343906#endif
    38353907
     
    38413913    else {
    38423914      UChar *q = p + reg->dmin;
    3843       while (p < q) p += enclen(reg->enc, p);
     3915
     3916      if (q >= end) return 0; /* fail */
     3917      while (p < q) p += enclen(reg->enc, p, end);
    38443918    }
    38453919  }
     
    38523926  case ONIG_OPTIMIZE_EXACT_IC:
    38533927    p = slow_search_ic(reg->enc, reg->case_fold_flag,
    3854                        reg->exact, reg->exact_end, p, end, range);
     3928                       reg->exact, reg->exact_end, p, end, range);
    38553929    break;
    38563930
     
    38723946
    38733947  case ONIG_OPTIMIZE_MAP:
    3874     p = map_search(reg->enc, reg->map, p, range);
     3948    p = map_search(reg->enc, reg->map, p, range, end);
    38753949    break;
    38763950  }
     
    38803954    retry_gate:
    38813955      pprev = p;
    3882       p += enclen(reg->enc, p);
     3956      p += enclen(reg->enc, p, end);
    38833957      goto retry;
    38843958    }
     
    38913965        if (!ON_STR_BEGIN(p)) {
    38923966          prev = onigenc_get_prev_char_head(reg->enc,
    3893                                             (pprev ? pprev : str), p);
     3967                                            (pprev ? pprev : str), p, end);
    38943968          if (!ONIGENC_IS_MBC_NEWLINE_EX(reg->enc, prev, str, end, reg->options, 0))
    38953969            goto retry_gate;
     
    39163990      if (low_prev) {
    39173991        if (*low > s)
    3918           *low_prev = onigenc_get_prev_char_head(reg->enc, s, p);
     3992          *low_prev = onigenc_get_prev_char_head(reg->enc, s, p, end);
    39193993        else
    39203994          *low_prev = onigenc_get_prev_char_head(reg->enc,
    3921                                                  (pprev ? pprev : str), p);
     3995                                                 (pprev ? pprev : str), p, end);
    39223996      }
    39233997    }
    39243998    else {
    39253999      if (reg->dmax != ONIG_INFINITE_DISTANCE) {
    3926         *low = p - reg->dmax;
    3927         if (*low > s) {
    3928           *low = onigenc_get_right_adjust_char_head_with_prev(reg->enc, s,
    3929                                                               *low, (const UChar** )low_prev);
    3930           if (low_prev && IS_NULL(*low_prev))
    3931             *low_prev = onigenc_get_prev_char_head(reg->enc,
    3932                                                    (pprev ? pprev : s), *low);
     4000        if (p < str + reg->dmax) {
     4001          *low = (UChar* )str;
     4002          if (low_prev)
     4003            *low_prev = onigenc_get_prev_char_head(reg->enc, str, *low, end);
    39334004        }
    39344005        else {
    3935           if (low_prev)
    3936             *low_prev = onigenc_get_prev_char_head(reg->enc,
    3937                                                (pprev ? pprev : str), *low);
     4006          *low = p - reg->dmax;
     4007          if (*low > s) {
     4008            *low = onigenc_get_right_adjust_char_head_with_prev(reg->enc, s,
     4009                                                                *low, end, (const UChar** )low_prev);
     4010            if (low_prev && IS_NULL(*low_prev))
     4011              *low_prev = onigenc_get_prev_char_head(reg->enc,
     4012                                                     (pprev ? pprev : s), *low, end);
     4013          }
     4014          else {
     4015            if (low_prev)
     4016              *low_prev = onigenc_get_prev_char_head(reg->enc,
     4017                                                 (pprev ? pprev : str), *low, end);
     4018          }
    39384019        }
    39394020      }
     
    39604041                      UChar** low, UChar** high)
    39614042{
    3962   int r;
    39634043  UChar *p;
    39644044
     
    39784058  case ONIG_OPTIMIZE_EXACT_BM_NOT_REV_IC:
    39794059    p = slow_search_backward_ic(reg->enc, reg->case_fold_flag,
    3980                                 reg->exact, reg->exact_end,
    3981                                 range, adjrange, end, p);
     4060                                reg->exact, reg->exact_end,
     4061                                range, adjrange, end, p);
    39824062    break;
    39834063
    39844064  case ONIG_OPTIMIZE_EXACT_BM:
    39854065  case ONIG_OPTIMIZE_EXACT_BM_NOT_REV:
     4066#ifdef USE_INT_MAP_BACKWARD
    39864067    if (IS_NULL(reg->int_map_backward)) {
     4068      int r;
    39874069      if (s - range < BM_BACKWARD_SEARCH_LENGTH_THRESHOLD)
    39884070        goto exact_method;
     
    39944076    p = bm_search_backward(reg, reg->exact, reg->exact_end, range, adjrange,
    39954077                           end, p);
     4078#else
     4079    goto exact_method;
     4080#endif
    39964081    break;
    39974082
    39984083  case ONIG_OPTIMIZE_MAP:
    3999     p = map_search_backward(reg->enc, reg->map, range, adjrange, p);
     4084    p = map_search_backward(reg->enc, reg->map, range, adjrange, p, end);
    40004085    break;
    40014086  }
     
    40084093      case ANCHOR_BEGIN_LINE:
    40094094        if (!ON_STR_BEGIN(p)) {
    4010           prev = onigenc_get_prev_char_head(reg->enc, str, p);
     4095          prev = onigenc_get_prev_char_head(reg->enc, str, p, end);
    40114096          if (!ONIGENC_IS_MBC_NEWLINE_EX(reg->enc, prev, str, end, reg->options, 0)) {
    40124097            p = prev;
     
    40284113        }
    40294114        else if (! ONIGENC_IS_MBC_NEWLINE_EX(reg->enc, p, str, end, reg->options, 1)) {
    4030           p = onigenc_get_prev_char_head(reg->enc, adjrange, p);
     4115          p = onigenc_get_prev_char_head(reg->enc, adjrange, p, end);
    40314116          if (IS_NULL(p)) goto fail;
    40324117          goto retry;
     
    40404125      *low  = p - reg->dmax;
    40414126      *high = p - reg->dmin;
    4042       *high = onigenc_get_right_adjust_char_head(reg->enc, adjrange, *high);
     4127      *high = onigenc_get_right_adjust_char_head(reg->enc, adjrange, *high, end);
    40434128    }
    40444129
     
    40784163#endif
    40794164
    4080 #if defined(USE_RECOMPILE_API) && defined(USE_MULTI_THREAD_SYSTEM)
    4081  start:
    4082   THREAD_ATOMIC_START;
    4083   if (ONIG_STATE(reg) >= ONIG_STATE_NORMAL) {
    4084     ONIG_STATE_INC(reg);
    4085     if (IS_NOT_NULL(reg->chain) && ONIG_STATE(reg) == ONIG_STATE_NORMAL) {
    4086       onig_chain_reduce(reg);
    4087       ONIG_STATE_INC(reg);
    4088     }
    4089   }
    4090   else {
    4091     int n;
    4092 
    4093     THREAD_ATOMIC_END;
    4094     n = 0;
    4095     while (ONIG_STATE(reg) < ONIG_STATE_NORMAL) {
    4096       if (++n > THREAD_PASS_LIMIT_COUNT)
    4097         return ONIGERR_OVER_THREAD_PASS_LIMIT_COUNT;
    4098       THREAD_PASS;
    4099     }
    4100     goto start;
    4101   }
    4102   THREAD_ATOMIC_END;
    4103 #endif /* USE_RECOMPILE_API && USE_MULTI_THREAD_SYSTEM */
    4104 
    41054165#ifdef ONIG_DEBUG_SEARCH
    41064166  fprintf(stderr,
    41074167     "onig_search (entry point): str: %"PRIuPTR" (%p), end: %"PRIuPTR", start: %"PRIuPTR", range: %"PRIuPTR"\n",
    4108      (intptr_t )str, str, end - str, start - str, range - str);
    4109 #endif
    4110 
    4111   if (region
    4112 #ifdef USE_POSIX_API_REGION_OPTION
    4113       && !IS_POSIX_REGION(option)
    4114 #endif
    4115       ) {
     4168     (uintptr_t )str, str, end - str, start - str, range - str);
     4169#endif
     4170
     4171  if (region) {
    41164172    r = onig_region_resize_clear(region, reg->num_mem + 1);
    41174173    if (r) goto finish_no_msa;
     
    41224178
    41234179#ifdef USE_MATCH_RANGE_MUST_BE_INSIDE_OF_SPECIFIED_RANGE
    4124 #ifdef USE_FIND_LONGEST_SEARCH_ALL_OF_RANGE
    4125 #define MATCH_AND_RETURN_CHECK(upper_range) \
     4180# ifdef USE_FIND_LONGEST_SEARCH_ALL_OF_RANGE
     4181#  define MATCH_AND_RETURN_CHECK(upper_range) \
    41264182  r = match_at(reg, str, end, (upper_range), s, prev, &msa); \
    41274183  if (r != ONIG_MISMATCH) {\
     
    41334189    else goto finish; /* error */ \
    41344190  }
    4135 #else
    4136 #define MATCH_AND_RETURN_CHECK(upper_range) \
     4191# else
     4192#  define MATCH_AND_RETURN_CHECK(upper_range) \
    41374193  r = match_at(reg, str, end, (upper_range), s, prev, &msa); \
    41384194  if (r != ONIG_MISMATCH) {\
     
    41424198    else goto finish; /* error */ \
    41434199  }
    4144 #endif /* USE_FIND_LONGEST_SEARCH_ALL_OF_RANGE */
     4200# endif /* USE_FIND_LONGEST_SEARCH_ALL_OF_RANGE */
    41454201#else
    4146 #ifdef USE_FIND_LONGEST_SEARCH_ALL_OF_RANGE
    4147 #define MATCH_AND_RETURN_CHECK(none) \
     4202# ifdef USE_FIND_LONGEST_SEARCH_ALL_OF_RANGE
     4203#  define MATCH_AND_RETURN_CHECK(none) \
    41484204  r = match_at(reg, str, end, s, prev, &msa);\
    41494205  if (r != ONIG_MISMATCH) {\
     
    41554211    else goto finish; /* error */ \
    41564212  }
    4157 #else
    4158 #define MATCH_AND_RETURN_CHECK(none) \
     4213# else
     4214#  define MATCH_AND_RETURN_CHECK(none) \
    41594215  r = match_at(reg, str, end, s, prev, &msa);\
    41604216  if (r != ONIG_MISMATCH) {\
     
    41644220    else goto finish; /* error */ \
    41654221  }
    4166 #endif /* USE_FIND_LONGEST_SEARCH_ALL_OF_RANGE */
     4222# endif /* USE_FIND_LONGEST_SEARCH_ALL_OF_RANGE */
    41674223#endif /* USE_MATCH_RANGE_MUST_BE_INSIDE_OF_SPECIFIED_RANGE */
    41684224
     
    41764232    begin_position:
    41774233      if (range > start)
    4178         range = start + 1;
     4234      {
     4235        if (global_pos > start)
     4236        {
     4237          if (global_pos < range)
     4238            range = global_pos + 1;
     4239        }
     4240        else
     4241          range = start + 1;
     4242      }
    41794243      else
    41804244        range = start;
     
    42064270          start = min_semi_end - reg->anchor_dmax;
    42074271          if (start < end)
    4208             start = onigenc_get_right_adjust_char_head(reg->enc, str, start);
     4272            start = onigenc_get_right_adjust_char_head(reg->enc, str, start, end);
    42094273        }
    42104274        if ((OnigDistance )(max_semi_end - (range - 1)) < reg->anchor_dmin) {
     
    42224286        if ((OnigDistance )(max_semi_end - start) < reg->anchor_dmin) {
    42234287          start = max_semi_end - reg->anchor_dmin;
    4224           start = ONIGENC_LEFT_ADJUST_CHAR_HEAD(reg->enc, str, start);
     4288          start = ONIGENC_LEFT_ADJUST_CHAR_HEAD(reg->enc, str, start, end);
    42254289        }
    42264290        if (range > start) goto mismatch_no_msa;
     
    42284292    }
    42294293    else if (reg->anchor & ANCHOR_SEMI_END_BUF) {
    4230       UChar* pre_end = ONIGENC_STEP_BACK(reg->enc, str, end, 1);
     4294      UChar* pre_end = ONIGENC_STEP_BACK(reg->enc, str, end, end, 1);
    42314295
    42324296      max_semi_end = (UChar* )end;
     
    42354299
    42364300#ifdef USE_CRNL_AS_LINE_TERMINATOR
    4237         pre_end = ONIGENC_STEP_BACK(reg->enc, str, pre_end, 1);
     4301        pre_end = ONIGENC_STEP_BACK(reg->enc, str, pre_end, end, 1);
    42384302        if (IS_NOT_NULL(pre_end) &&
    42394303            IS_NEWLINE_CRLF(reg->options) &&
     
    42524316    }
    42534317    else if ((reg->anchor & ANCHOR_ANYCHAR_STAR_ML)) {
    4254       if (! (reg->anchor & ANCHOR_LOOK_BEHIND)) {
    4255         goto begin_position;
    4256       }
     4318      goto begin_position;
    42574319    }
    42584320  }
     
    42964358  if (range > start) {   /* forward search */
    42974359    if (s > str)
    4298       prev = onigenc_get_prev_char_head(reg->enc, str, s);
     4360      prev = onigenc_get_prev_char_head(reg->enc, str, s, end);
    42994361    else
    43004362      prev = (UChar* )NULL;
     
    43144376
    43154377      if ((end - start) < reg->threshold_len)
    4316         goto mismatch;
     4378        goto mismatch;
    43174379
    43184380      if (reg->dmax != ONIG_INFINITE_DISTANCE) {
     
    43274389            MATCH_AND_RETURN_CHECK(orig_range);
    43284390            prev = s;
    4329             s += enclen(reg->enc, s);
     4391            s += enclen(reg->enc, s, end);
    43304392          }
    43314393        } while (s < range);
     
    43364398                                   &low, &high, (UChar** )NULL)) goto mismatch;
    43374399
    4338         if ((reg->anchor & ANCHOR_ANYCHAR_STAR) != 0) {
    4339           do {
    4340             if ((reg->anchor & ANCHOR_BEGIN_POSITION) == 0)
    4341               msa.gpos = s;     /* move \G position */
    4342             MATCH_AND_RETURN_CHECK(orig_range);
    4343             prev = s;
    4344             s += enclen(reg->enc, s);
    4345 
    4346             if ((reg->anchor & (ANCHOR_LOOK_BEHIND | ANCHOR_PREC_READ_NOT)) == 0) {
    4347               while (!ONIGENC_IS_MBC_NEWLINE_EX(reg->enc, prev, str, end, reg->options, 0)
    4348                      && s < range) {
    4349                 prev = s;
    4350                 s += enclen(reg->enc, s);
    4351               }
    4352             }
    4353           } while (s < range);
    4354           goto mismatch;
    4355         }
     4400        if ((reg->anchor & ANCHOR_ANYCHAR_STAR) != 0) {
     4401          do {
     4402            MATCH_AND_RETURN_CHECK(orig_range);
     4403            prev = s;
     4404            s += enclen(reg->enc, s, end);
     4405
     4406            if ((reg->anchor & (ANCHOR_LOOK_BEHIND | ANCHOR_PREC_READ_NOT)) == 0) {
     4407              while (!ONIGENC_IS_MBC_NEWLINE_EX(reg->enc, prev, str, end, reg->options, 0)
     4408                  && s < range) {
     4409                prev = s;
     4410                s += enclen(reg->enc, s, end);
     4411              }
     4412            }
     4413          } while (s < range);
     4414          goto mismatch;
     4415        }
    43564416      }
    43574417    }
     
    43604420      MATCH_AND_RETURN_CHECK(orig_range);
    43614421      prev = s;
    4362       s += enclen(reg->enc, s);
     4422      s += enclen(reg->enc, s, end);
    43634423    } while (s < range);
    43644424
     
    43724432
    43734433      if (range < end)
    4374         adjrange = ONIGENC_LEFT_ADJUST_CHAR_HEAD(reg->enc, str, range);
     4434        adjrange = ONIGENC_LEFT_ADJUST_CHAR_HEAD(reg->enc, str, range, end);
    43754435      else
    43764436        adjrange = (UChar* )end;
     
    43894449
    43904450          while (s >= low) {
    4391             prev = onigenc_get_prev_char_head(reg->enc, str, s);
     4451            prev = onigenc_get_prev_char_head(reg->enc, str, s, end);
    43924452            MATCH_AND_RETURN_CHECK(orig_start);
    43934453            s = prev;
     
    44084468            else
    44094469              sch_start = ONIGENC_LEFT_ADJUST_CHAR_HEAD(reg->enc,
    4410                                                     start, sch_start);
     4470                                                    start, sch_start, end);
    44114471          }
    44124472        }
     
    44174477
    44184478    do {
    4419       prev = onigenc_get_prev_char_head(reg->enc, str, s);
     4479      prev = onigenc_get_prev_char_head(reg->enc, str, s, end);
    44204480      MATCH_AND_RETURN_CHECK(orig_start);
    44214481      s = prev;
     
    44364496 finish:
    44374497  MATCH_ARG_FREE(msa);
    4438   ONIG_STATE_DEC_THREAD(reg);
    44394498
    44404499  /* If result is mismatch and no FIND_NOT_EMPTY option,
    44414500     then the region is not set in match_at(). */
    4442   if (IS_FIND_NOT_EMPTY(reg->options) && region
    4443 #ifdef USE_POSIX_API_REGION_OPTION
    4444       && !IS_POSIX_REGION(option)
    4445 #endif
    4446       ) {
     4501  if (IS_FIND_NOT_EMPTY(reg->options) && region) {
    44474502    onig_region_clear(region);
    44484503  }
     
    44504505#ifdef ONIG_DEBUG
    44514506  if (r != ONIG_MISMATCH)
    4452     fprintf(stderr, "onig_search: error %"PRIdPTR"\n", r);
     4507    fprintf(stderr, "onig_search: error %"PRIdPTRDIFF"\n", r);
    44534508#endif
    44544509  return r;
     
    44574512  r = ONIG_MISMATCH;
    44584513 finish_no_msa:
    4459   ONIG_STATE_DEC_THREAD(reg);
    44604514#ifdef ONIG_DEBUG
    44614515  if (r != ONIG_MISMATCH)
    4462     fprintf(stderr, "onig_search: error %"PRIdPTR"\n", r);
     4516    fprintf(stderr, "onig_search: error %"PRIdPTRDIFF"\n", r);
    44634517#endif
    44644518  return r;
    44654519
    44664520 match:
    4467   ONIG_STATE_DEC_THREAD(reg);
    44684521  MATCH_ARG_FREE(msa);
    44694522  return s - str;
    44704523}
    44714524
     4525extern OnigPosition
     4526onig_scan(regex_t* reg, const UChar* str, const UChar* end,
     4527          OnigRegion* region, OnigOptionType option,
     4528          int (*scan_callback)(OnigPosition, OnigPosition, OnigRegion*, void*),
     4529          void* callback_arg)
     4530{
     4531  OnigPosition r;
     4532  OnigPosition n;
     4533  int rs;
     4534  const UChar* start;
     4535
     4536  n = 0;
     4537  start = str;
     4538  while (1) {
     4539    r = onig_search(reg, str, end, start, end, region, option);
     4540    if (r >= 0) {
     4541      rs = scan_callback(n, r, region, callback_arg);
     4542      n++;
     4543      if (rs != 0)
     4544        return rs;
     4545
     4546      if (region->end[0] == start - str) {
     4547        if (start >= end) break;
     4548        start += enclen(reg->enc, start, end);
     4549      }
     4550      else
     4551        start = str + region->end[0];
     4552
     4553      if (start > end)
     4554        break;
     4555    }
     4556    else if (r == ONIG_MISMATCH) {
     4557      break;
     4558    }
     4559    else { /* error */
     4560      return r;
     4561    }
     4562  }
     4563
     4564  return n;
     4565}
     4566
    44724567extern OnigEncoding
    4473 onig_get_encoding(regex_t* reg)
     4568onig_get_encoding(const regex_t* reg)
    44744569{
    44754570  return reg->enc;
     
    44774572
    44784573extern OnigOptionType
    4479 onig_get_options(regex_t* reg)
     4574onig_get_options(const regex_t* reg)
    44804575{
    44814576  return reg->options;
     
    44834578
    44844579extern  OnigCaseFoldType
    4485 onig_get_case_fold_flag(regex_t* reg)
     4580onig_get_case_fold_flag(const regex_t* reg)
    44864581{
    44874582  return reg->case_fold_flag;
    44884583}
    44894584
    4490 extern OnigSyntaxType*
    4491 onig_get_syntax(regex_t* reg)
     4585extern const OnigSyntaxType*
     4586onig_get_syntax(const regex_t* reg)
    44924587{
    44934588  return reg->syntax;
     
    44954590
    44964591extern int
    4497 onig_number_of_captures(regex_t* reg)
     4592onig_number_of_captures(const regex_t* reg)
    44984593{
    44994594  return reg->num_mem;
     
    45014596
    45024597extern int
    4503 onig_number_of_capture_histories(regex_t* reg)
     4598onig_number_of_capture_histories(const regex_t* reg)
    45044599{
    45054600#ifdef USE_CAPTURE_HISTORY
     
    45184613
    45194614extern void
    4520 onig_copy_encoding(OnigEncoding to, OnigEncoding from)
     4615onig_copy_encoding(OnigEncodingType *to, OnigEncoding from)
    45214616{
    45224617  *to = *from;
  • EcnlProtoTool/trunk/onigmo-6.1.3/src/regext.c

    r321 r331  
    44/*-
    55 * Copyright (c) 2002-2008  K.Kosako  <sndgk393 AT ybb DOT ne DOT jp>
    6  * Copyright (c) 2011       K.Takata  <kentkt AT csc DOT jp>
     6 * Copyright (c) 2011-2016  K.Takata  <kentkt AT csc DOT jp>
    77 * All rights reserved.
    88 *
     
    202202  return r;
    203203}
    204 
    205 #ifdef USE_RECOMPILE_API
    206 extern int
    207 onig_recompile_deluxe(regex_t* reg, const UChar* pattern, const UChar* pattern_end,
    208                       OnigCompileInfo* ci, OnigErrorInfo* einfo)
    209 {
    210   int r;
    211   regex_t *new_reg;
    212 
    213   r = onig_new_deluxe(&new_reg, pattern, pattern_end, ci, einfo);
    214   if (r) return r;
    215   if (ONIG_STATE(reg) == ONIG_STATE_NORMAL) {
    216     onig_transfer(reg, new_reg);
    217   }
    218   else {
    219     onig_chain_link_add(reg, new_reg);
    220   }
    221   return 0;
    222 }
    223 #endif
  • EcnlProtoTool/trunk/onigmo-6.1.3/src/reggnu.c

    r321 r331  
    44/*-
    55 * Copyright (c) 2002-2008  K.Kosako  <sndgk393 AT ybb DOT ne DOT jp>
    6  * Copyright (c) 2011       K.Takata  <kentkt AT csc DOT jp>
     6 * Copyright (c) 2011-2016  K.Takata  <kentkt AT csc DOT jp>
    77 * All rights reserved.
    88 *
     
    3131#include "regint.h"
    3232
    33 #ifndef ONIGGNU_H
    34 #include "oniggnu.h"
     33#ifndef ONIGMOGNU_H
     34# include "onigmognu.h"
    3535#endif
    3636
     
    4949    UChar *p;
    5050    UChar *s = (UChar* )string + startpos;
     51    UChar *e = (UChar* )string + size;
    5152
    5253    if (range > 0) {
    53       p = onigenc_get_right_adjust_char_head(reg->enc, (UChar* )string, s);
     54      p = onigenc_get_right_adjust_char_head(reg->enc, (UChar* )string, s, e);
    5455    }
    5556    else {
    56       p = ONIGENC_LEFT_ADJUST_CHAR_HEAD(reg->enc, (UChar* )string, s);
     57      p = ONIGENC_LEFT_ADJUST_CHAR_HEAD(reg->enc, (UChar* )string, s, e);
    5758    }
    5859    return (int )(p - (UChar* )string);
     
    9596}
    9697
    97 #ifdef USE_RECOMPILE_API
    98 extern int
    99 re_recompile_pattern(const char* pattern, int size, regex_t* reg, char* ebuf)
    100 {
    101   int r;
    102   OnigErrorInfo einfo;
    103   OnigEncoding enc;
    104 
    105   /* I think encoding and options should be arguments of this function.
    106      But this is adapted to present re.c. (2002/11/29)
    107    */
    108   enc = OnigEncDefaultCharEncoding;
    109 
    110   r = onig_recompile(reg, (UChar* )pattern, (UChar* )(pattern + size),
    111                      reg->options, enc, OnigDefaultSyntax, &einfo);
    112   if (r != ONIG_NORMAL) {
    113     if (IS_NOT_NULL(ebuf))
    114       (void )onig_error_code_to_str((UChar* )ebuf, r, &einfo);
    115   }
    116   return r;
    117 }
    118 #endif
    119 
    12098extern void
    12199re_free_pattern(regex_t* reg)
     
    139117re_set_casetable(const char* table)
    140118{
    141   onigenc_set_default_caseconv_table((UChar* )table);
     119  /* onigenc_set_default_caseconv_table((UChar* )table); */
    142120}
    143121
     
    151129    enc = ONIG_ENCODING_ASCII;
    152130    break;
    153 #if 0
    154131  case RE_MBCTYPE_EUC:
    155132    enc = ONIG_ENCODING_EUC_JP;
     
    158135    enc = ONIG_ENCODING_SJIS;
    159136    break;
    160 #endif
    161137  case RE_MBCTYPE_UTF8:
    162138    enc = ONIG_ENCODING_UTF8;
  • EcnlProtoTool/trunk/onigmo-6.1.3/src/regint.h

    r321 r331  
    1 #ifndef REGINT_H
    2 #define REGINT_H
     1#ifndef ONIGMO_REGINT_H
     2#define ONIGMO_REGINT_H
    33/**********************************************************************
    44  regint.h -  Onigmo (Oniguruma-mod) (regular expression library)
     
    66/*-
    77 * Copyright (c) 2002-2013  K.Kosako  <sndgk393 AT ybb DOT ne DOT jp>
    8  * Copyright (c) 2011-2014  K.Takata  <kentkt AT csc DOT jp>
     8 * Copyright (c) 2011-2016  K.Takata  <kentkt AT csc DOT jp>
    99 * All rights reserved.
    1010 *
     
    3636/* #define ONIG_DEBUG_SEARCH */
    3737/* #define ONIG_DEBUG_MATCH */
     38/* #define ONIG_DEBUG_MEMLEAK */
    3839/* #define ONIG_DONT_OPTIMIZE */
    3940
     
    4344#if defined(ONIG_DEBUG_PARSE_TREE) || defined(ONIG_DEBUG_MATCH) || \
    4445    defined(ONIG_DEBUG_SEARCH) || defined(ONIG_DEBUG_COMPILE) || \
    45     defined(ONIG_DEBUG_STATISTICS)
    46 #ifndef ONIG_DEBUG
    47 #define ONIG_DEBUG
    48 #endif
     46    defined(ONIG_DEBUG_STATISTICS) || defined(ONIG_DEBUG_MEMLEAK)
     47# ifndef ONIG_DEBUG
     48#  define ONIG_DEBUG
     49# endif
    4950#endif
    5051
    5152#ifndef UNALIGNED_WORD_ACCESS
    52 #if defined(__i386) || defined(__i386__) || defined(_M_IX86) || \
    53     defined(__x86_64) || defined(__x86_64__) || defined(_M_AMD64) || \
    54     defined(__powerpc64__) || \
    55     defined(__mc68020__)
    56 #define UNALIGNED_WORD_ACCESS 1
    57 #else
    58 #define UNALIGNED_WORD_ACCESS 0
    59 #endif
     53# if defined(__i386) || defined(__i386__) || defined(_M_IX86) || \
     54     defined(__x86_64) || defined(__x86_64__) || defined(_M_AMD64) || \
     55     defined(__powerpc64__) || \
     56     defined(__mc68020__)
     57#  define UNALIGNED_WORD_ACCESS 1
     58# else
     59#  define UNALIGNED_WORD_ACCESS 0
     60# endif
    6061#endif
    6162
    6263#if UNALIGNED_WORD_ACCESS
    63 #define PLATFORM_UNALIGNED_WORD_ACCESS
     64# define PLATFORM_UNALIGNED_WORD_ACCESS
    6465#endif
    6566
     
    7475#define USE_NEWLINE_AT_END_OF_STRING_HAS_EMPTY_LINE     /* /\n$/ =~ "\n" */
    7576#define USE_WARNING_REDUNDANT_NESTED_REPEAT_OPERATOR
    76 /* #define USE_RECOMPILE_API */
    7777/* !!! moved to regenc.h. */ /* #define USE_CRNL_AS_LINE_TERMINATOR */
    7878#define USE_NO_INVALID_QUANTIFIER
    7979
    8080/* internal config */
    81 #define USE_PARSE_TREE_NODE_RECYCLE
    82 #define USE_OP_PUSH_OR_JUMP_EXACT
     81/* #define USE_OP_PUSH_OR_JUMP_EXACT */
    8382#define USE_QTFR_PEEK_NEXT
    8483#define USE_ST_LIBRARY
    85 #define USE_SHARED_CCLASS_TABLE
    8684#define USE_SUNDAY_QUICK_SEARCH
    8785
    8886#define INIT_MATCH_STACK_SIZE                     160
    8987#define DEFAULT_MATCH_STACK_LIMIT_SIZE              0 /* unlimited */
     88#define DEFAULT_PARSE_DEPTH_LIMIT                4096
     89
     90#define OPT_EXACT_MAXLEN   24
    9091
    9192/* check config */
    9293#if defined(USE_PERL_SUBEXP_CALL) || defined(USE_CAPITAL_P_NAMED_GROUP)
    93 #if !defined(USE_NAMED_GROUP) || !defined(USE_SUBEXP_CALL)
    94 #error USE_NAMED_GROUP and USE_SUBEXP_CALL must be defined.
    95 #endif
     94# if !defined(USE_NAMED_GROUP) || !defined(USE_SUBEXP_CALL)
     95#  error USE_NAMED_GROUP and USE_SUBEXP_CALL must be defined.
     96# endif
    9697#endif
    9798
    9899#if defined(__GNUC__)
    99 #  define ARG_UNUSED  __attribute__ ((unused))
     100# define ARG_UNUSED  __attribute__ ((unused))
    100101#else
    101 #  define ARG_UNUSED
    102 #endif
     102# define ARG_UNUSED
     103#endif
     104
     105#if !defined(RUBY) && defined(RUBY_EXPORT)
     106# define RUBY
     107#endif
     108#ifdef RUBY
     109# ifndef RUBY_DEFINES_H
     110#  include "ruby/ruby.h"
     111#  undef xmalloc
     112#  undef xrealloc
     113#  undef xcalloc
     114#  undef xfree
     115# endif
     116#else /* RUBY */
     117# include "config.h"
     118# if SIZEOF_LONG_LONG > 0
     119#  define LONG_LONG long long
     120# endif
     121#endif /* RUBY */
     122
     123#include <stdarg.h>
    103124
    104125/* */
    105126/* escape other system UChar definition */
    106 #include "config.h"
    107127#ifdef ONIG_ESCAPE_UCHAR_COLLISION
    108 #undef ONIG_ESCAPE_UCHAR_COLLISION
     128# undef ONIG_ESCAPE_UCHAR_COLLISION
    109129#endif
    110130
    111131#define USE_WORD_BEGIN_END          /* "\<": word-begin, "\>": word-end */
    112 #define USE_CAPTURE_HISTORY
     132#ifdef RUBY
     133# undef USE_CAPTURE_HISTORY
     134#else
     135# define USE_CAPTURE_HISTORY
     136#endif
    113137#define USE_VARIABLE_META_CHARS
    114 #define USE_POSIX_API_REGION_OPTION     /* needed for POSIX API support */
    115138#define USE_FIND_LONGEST_SEARCH_ALL_OF_RANGE
    116139/* #define USE_COMBINATION_EXPLOSION_CHECK */     /* (X*)* */
    117140
    118 /* multithread config */
    119 /* #define USE_MULTI_THREAD_SYSTEM */
    120 /* #define USE_DEFAULT_MULTI_THREAD_SYSTEM */
    121 
    122 #if defined(USE_MULTI_THREAD_SYSTEM) \
    123   && defined(USE_DEFAULT_MULTI_THREAD_SYSTEM)
    124 
    125 #if defined(_WIN32) && !defined(MUSL_LIBC)
    126 #define WIN32_LEAN_AND_MEAN
    127 #include <windows.h>
    128 extern CRITICAL_SECTION gOnigMutex;
    129 #define THREAD_SYSTEM_INIT      InitializeCriticalSection(&gOnigMutex)
    130 #define THREAD_SYSTEM_END       DeleteCriticalSection(&gOnigMutex)
    131 #define THREAD_ATOMIC_START     EnterCriticalSection(&gOnigMutex)
    132 #define THREAD_ATOMIC_END       LeaveCriticalSection(&gOnigMutex)
    133 #define THREAD_PASS             Sleep(0)
    134 #else /* _WIN32 */
    135 #include <pthread.h>
    136 #include <sched.h>
    137 extern pthread_mutex_t gOnigMutex;
    138 #define THREAD_SYSTEM_INIT      pthread_mutex_init(&gOnigMutex, NULL)
    139 #define THREAD_SYSTEM_END       pthread_mutex_destroy(&gOnigMutex)
    140 #define THREAD_ATOMIC_START     pthread_mutex_lock(&gOnigMutex)
    141 #define THREAD_ATOMIC_END       pthread_mutex_unlock(&gOnigMutex)
    142 #define THREAD_PASS             sched_yield()
    143 #endif /* _WIN32 */
    144 
    145 #else /* USE_DEFAULT_MULTI_THREAD_SYSTEM */
    146 
    147 #ifndef THREAD_SYSTEM_INIT
    148 #define THREAD_SYSTEM_INIT      /* depend on thread system */
    149 #endif
    150 #ifndef THREAD_SYSTEM_END
    151 #define THREAD_SYSTEM_END       /* depend on thread system */
    152 #endif
    153 #ifndef THREAD_ATOMIC_START
    154 #define THREAD_ATOMIC_START     /* depend on thread system */
    155 #endif
    156 #ifndef THREAD_ATOMIC_END
    157 #define THREAD_ATOMIC_END       /* depend on thread system */
    158 #endif
    159 #ifndef THREAD_PASS
    160 #define THREAD_PASS             /* depend on thread system */
    161 #endif
    162 
    163 #endif /* USE_DEFAULT_MULTI_THREAD_SYSTEM */
    164141
    165142#ifndef xmalloc
    166 #define xmalloc     malloc
    167 #define xrealloc    realloc
    168 #define xcalloc     calloc
    169 #define xfree       free
    170 #endif
    171 
    172 #define CHECK_INTERRUPT_IN_MATCH_AT
    173 
    174 #define st_init_table                  onig_st_init_table
    175 #define st_init_table_with_size        onig_st_init_table_with_size
    176 #define st_init_numtable               onig_st_init_numtable
    177 #define st_init_numtable_with_size     onig_st_init_numtable_with_size
    178 #define st_init_strtable               onig_st_init_strtable
    179 #define st_init_strtable_with_size     onig_st_init_strtable_with_size
    180 #define st_delete                      onig_st_delete
    181 #define st_delete_safe                 onig_st_delete_safe
    182 #define st_insert                      onig_st_insert
    183 #define st_lookup                      onig_st_lookup
    184 #define st_foreach                     onig_st_foreach
    185 #define st_add_direct                  onig_st_add_direct
    186 #define st_free_table                  onig_st_free_table
    187 #define st_cleanup_safe                onig_st_cleanup_safe
    188 #define st_copy                        onig_st_copy
    189 #define st_nothing_key_clone           onig_st_nothing_key_clone
    190 #define st_nothing_key_free            onig_st_nothing_key_free
     143# define xmalloc     malloc
     144# define xrealloc    realloc
     145# define xcalloc     calloc
     146# define xfree       free
     147#endif
     148
     149#ifdef RUBY
     150
     151# define CHECK_INTERRUPT_IN_MATCH_AT rb_thread_check_ints()
     152# define onig_st_init_table                  st_init_table
     153# define onig_st_init_table_with_size        st_init_table_with_size
     154# define onig_st_init_numtable               st_init_numtable
     155# define onig_st_init_numtable_with_size     st_init_numtable_with_size
     156# define onig_st_init_strtable               st_init_strtable
     157# define onig_st_init_strtable_with_size     st_init_strtable_with_size
     158# define onig_st_delete                      st_delete
     159# define onig_st_delete_safe                 st_delete_safe
     160# define onig_st_insert                      st_insert
     161# define onig_st_lookup                      st_lookup
     162# define onig_st_foreach                     st_foreach
     163# define onig_st_add_direct                  st_add_direct
     164# define onig_st_free_table                  st_free_table
     165# define onig_st_cleanup_safe                st_cleanup_safe
     166# define onig_st_copy                        st_copy
     167# define onig_st_nothing_key_clone           st_nothing_key_clone
     168# define onig_st_nothing_key_free            st_nothing_key_free
     169# define onig_st_is_member                   st_is_member
     170
     171# define USE_UPPER_CASE_TABLE
     172#else /* RUBY */
     173
     174# define CHECK_INTERRUPT_IN_MATCH_AT
     175
     176# define st_init_table                  onig_st_init_table
     177# define st_init_table_with_size        onig_st_init_table_with_size
     178# define st_init_numtable               onig_st_init_numtable
     179# define st_init_numtable_with_size     onig_st_init_numtable_with_size
     180# define st_init_strtable               onig_st_init_strtable
     181# define st_init_strtable_with_size     onig_st_init_strtable_with_size
     182# define st_delete                      onig_st_delete
     183# define st_delete_safe                 onig_st_delete_safe
     184# define st_insert                      onig_st_insert
     185# define st_lookup                      onig_st_lookup
     186# define st_foreach                     onig_st_foreach
     187# define st_add_direct                  onig_st_add_direct
     188# define st_free_table                  onig_st_free_table
     189# define st_cleanup_safe                onig_st_cleanup_safe
     190# define st_copy                        onig_st_copy
     191# define st_nothing_key_clone           onig_st_nothing_key_clone
     192# define st_nothing_key_free            onig_st_nothing_key_free
    191193/* */
    192 #define onig_st_is_member              st_is_member
     194# define onig_st_is_member              st_is_member
     195
     196#endif /* RUBY */
    193197
    194198#define STATE_CHECK_STRING_THRESHOLD_LEN             7
    195199#define STATE_CHECK_BUFF_MAX_SIZE               0x4000
    196200
    197 #define THREAD_PASS_LIMIT_COUNT     8
    198201#define xmemset     memset
    199202#define xmemcpy     memcpy
    200203#define xmemmove    memmove
    201204
    202 #if defined(_WIN32) && !defined(__GNUC__) && !defined(MUSL_LIBC)
    203 #define xalloca     _alloca
    204 #define xvsnprintf  _vsnprintf
     205#if ((defined(RUBY_MSVCRT_VERSION) && RUBY_MSVCRT_VERSION >= 90) \
     206        || (!defined(RUBY_MSVCRT_VERSION) && defined(_WIN32))) \
     207    && !defined(__GNUC__)
     208# define xalloca     _alloca
     209# define xvsnprintf(buf,size,fmt,args)  _vsnprintf_s(buf,size,_TRUNCATE,fmt,args)
     210# define xsnprintf   sprintf_s
     211# define xstrcat(dest,src,size)   strcat_s(dest,size,src)
    205212#else
    206 /*#define xalloca     alloca*/
    207 #define xvsnprintf  vsnprintf
    208 #endif
    209 
    210 
    211 #if defined(USE_RECOMPILE_API) && defined(USE_MULTI_THREAD_SYSTEM)
    212 #define ONIG_STATE_INC(reg) (reg)->state++
    213 #define ONIG_STATE_DEC(reg) (reg)->state--
    214 
    215 #define ONIG_STATE_INC_THREAD(reg) do {\
    216   THREAD_ATOMIC_START;\
    217   (reg)->state++;\
    218   THREAD_ATOMIC_END;\
    219 } while(0)
    220 #define ONIG_STATE_DEC_THREAD(reg) do {\
    221   THREAD_ATOMIC_START;\
    222   (reg)->state--;\
    223   THREAD_ATOMIC_END;\
    224 } while(0)
    225 #else
    226 #define ONIG_STATE_INC(reg)         /* Nothing */
    227 #define ONIG_STATE_DEC(reg)         /* Nothing */
    228 #define ONIG_STATE_INC_THREAD(reg)  /* Nothing */
    229 #define ONIG_STATE_DEC_THREAD(reg)  /* Nothing */
    230 #endif /* USE_RECOMPILE_API && USE_MULTI_THREAD_SYSTEM */
    231 
    232 #ifdef HAVE_STDLIB_H
     213# define xalloca     alloca
     214# define xvsnprintf  vsnprintf
     215# define xsnprintf   snprintf
     216# define xstrcat(dest,src,size)   strcat(dest,src)
     217#endif
     218
     219#if defined(ONIG_DEBUG_MEMLEAK) && defined(_MSC_VER)
     220# define _CRTDBG_MAP_ALLOC
     221# include <malloc.h>
     222# include <crtdbg.h>
     223#endif
     224
    233225#include <stdlib.h>
    234 #endif
    235226
    236227#if defined(HAVE_ALLOCA_H) && (defined(_AIX) || !defined(__GNUC__))
    237 #include <alloca.h>
    238 #endif
    239 
    240 #ifdef HAVE_STRING_H
    241 # include <string.h>
    242 #else
    243 # include <strings.h>
    244 #endif
     228# include <alloca.h>
     229#endif
     230
     231#include <string.h>
    245232
    246233#include <ctype.h>
    247234#ifdef HAVE_SYS_TYPES_H
    248 #include <sys/types.h>
     235# include <sys/types.h>
    249236#endif
    250237
     
    257244#endif
    258245
    259 #ifdef STDC_HEADERS
    260 # include <stddef.h>
    261 #endif
    262 
    263 #if defined(_WIN32) && !defined(MUSL_LIBC)
    264 #include <malloc.h>     /* for alloca() */
     246#include <stddef.h>
     247
     248#ifdef _WIN32
     249# include <malloc.h>    /* for alloca() */
    265250#endif
    266251
     
    269254#endif
    270255
    271 #if defined(_WIN32) && !defined(MUSL_LIBC)
    272 #if defined(_MSC_VER) && (_MSC_VER < 1300)
    273 #ifndef _INTPTR_T_DEFINED
    274 #define _INTPTR_T_DEFINED
     256#ifdef _WIN32
     257# if defined(_MSC_VER) && (_MSC_VER < 1300)
     258#  ifndef _INTPTR_T_DEFINED
     259#   define _INTPTR_T_DEFINED
    275260typedef int intptr_t;
    276 #endif
    277 #ifndef _UINTPTR_T_DEFINED
    278 #define _UINTPTR_T_DEFINED
     261#  endif
     262#  ifndef _UINTPTR_T_DEFINED
     263#   define _UINTPTR_T_DEFINED
    279264typedef unsigned int uintptr_t;
    280 #endif
    281 #endif
     265#  endif
     266# endif
    282267#endif /* _WIN32 */
    283268
    284269#ifndef PRIdPTR
    285 #ifdef _WIN64
    286 #define PRIdPTR "I64d"
    287 #define PRIuPTR "I64u"
    288 #define PRIxPTR "I64x"
    289 #else
    290 #define PRIdPTR "ld"
    291 #define PRIuPTR "lu"
    292 #define PRIxPTR "lx"
    293 #endif
     270# ifdef _WIN64
     271#  define PRIdPTR       "I64d"
     272#  define PRIuPTR       "I64u"
     273#  define PRIxPTR       "I64x"
     274# else
     275#  define PRIdPTR       "ld"
     276#  define PRIuPTR       "lu"
     277#  define PRIxPTR       "lx"
     278# endif
     279#endif
     280
     281#ifndef PRIdPTRDIFF
     282# define PRIdPTRDIFF PRIdPTR
    294283#endif
    295284
    296285#include "regenc.h"
    297286
     287RUBY_SYMBOL_EXPORT_BEGIN
     288
    298289#ifdef MIN
    299 #undef MIN
     290# undef MIN
    300291#endif
    301292#ifdef MAX
    302 #undef MAX
     293# undef MAX
    303294#endif
    304295#define MIN(a,b) (((a)>(b))?(b):(a))
     
    315306#ifdef PLATFORM_UNALIGNED_WORD_ACCESS
    316307
    317 #define PLATFORM_GET_INC(val,p,type) do{\
     308# define PLATFORM_GET_INC(val,p,type) do{\
    318309  val  = *(type* )p;\
    319310  (p) += sizeof(type);\
     
    322313#else
    323314
    324 #define PLATFORM_GET_INC(val,p,type) do{\
     315# define PLATFORM_GET_INC(val,p,type) do{\
    325316  xmemcpy(&val, (p), sizeof(type));\
    326317  (p) += sizeof(type);\
     
    328319
    329320/* sizeof(OnigCodePoint) */
    330 #define WORD_ALIGNMENT_SIZE     SIZEOF_LONG
    331 
    332 #define GET_ALIGNMENT_PAD_SIZE(addr,pad_size) do {\
     321# define WORD_ALIGNMENT_SIZE     SIZEOF_LONG
     322
     323# define GET_ALIGNMENT_PAD_SIZE(addr,pad_size) do {\
    333324  (pad_size) = WORD_ALIGNMENT_SIZE \
    334325               - ((uintptr_t )(addr) % WORD_ALIGNMENT_SIZE);\
     
    336327} while (0)
    337328
    338 #define ALIGNMENT_RIGHT(addr) do {\
     329# define ALIGNMENT_RIGHT(addr) do {\
    339330  (addr) += (WORD_ALIGNMENT_SIZE - 1);\
    340331  (addr) -= ((uintptr_t )(addr) % WORD_ALIGNMENT_SIZE);\
     
    400391#define IS_NOTBOS(option)         ((option) & ONIG_OPTION_NOTBOS)
    401392#define IS_NOTEOS(option)         ((option) & ONIG_OPTION_NOTEOS)
    402 #define IS_POSIX_REGION(option)   ((option) & ONIG_OPTION_POSIX_REGION)
    403393#define IS_ASCII_RANGE(option)    ((option) & ONIG_OPTION_ASCII_RANGE)
    404394#define IS_POSIX_BRACKET_ALL_RANGE(option)  ((option) & ONIG_OPTION_POSIX_BRACKET_ALL_RANGE)
     
    583573  OP_CCLASS_MB_NOT,
    584574  OP_CCLASS_MIX_NOT,
    585   OP_CCLASS_NODE,       /* pointer to CClassNode node */
    586575
    587576  OP_ANYCHAR,                 /* "."  */
     
    612601  OP_SEMI_END_BUF,
    613602  OP_BEGIN_POSITION,
    614   OP_BEGIN_POS_OR_LINE,   /* used for implicit anchor optimization */
    615603
    616604  OP_BACKREF1,
     
    657645  OP_PUSH_LOOK_BEHIND_NOT, /* (?<!...) start */
    658646  OP_FAIL_LOOK_BEHIND_NOT, /* (?<!...) end   */
     647  OP_PUSH_ABSENT_POS,      /* (?~...)  start */
     648  OP_ABSENT,               /* (?~...)  start of inner loop */
     649  OP_ABSENT_END,           /* (?~...)  end   */
    659650
    660651  OP_CALL,                 /* \g<name> */
     
    744735#define SIZE_OP_RETURN                  SIZE_OPCODE
    745736#define SIZE_OP_CONDITION              (SIZE_OPCODE + SIZE_MEMNUM + SIZE_RELADDR)
     737#define SIZE_OP_PUSH_ABSENT_POS         SIZE_OPCODE
     738#define SIZE_OP_ABSENT                 (SIZE_OPCODE + SIZE_RELADDR)
     739#define SIZE_OP_ABSENT_END              SIZE_OPCODE
    746740
    747741#ifdef USE_COMBINATION_EXPLOSION_CHECK
    748 #define SIZE_OP_STATE_CHECK            (SIZE_OPCODE + SIZE_STATE_CHECK_NUM)
    749 #define SIZE_OP_STATE_CHECK_PUSH       (SIZE_OPCODE + SIZE_STATE_CHECK_NUM + SIZE_RELADDR)
    750 #define SIZE_OP_STATE_CHECK_PUSH_OR_JUMP (SIZE_OPCODE + SIZE_STATE_CHECK_NUM + SIZE_RELADDR)
    751 #define SIZE_OP_STATE_CHECK_ANYCHAR_STAR (SIZE_OPCODE + SIZE_STATE_CHECK_NUM)
     742# define SIZE_OP_STATE_CHECK           (SIZE_OPCODE + SIZE_STATE_CHECK_NUM)
     743# define SIZE_OP_STATE_CHECK_PUSH      (SIZE_OPCODE + SIZE_STATE_CHECK_NUM + SIZE_RELADDR)
     744# define SIZE_OP_STATE_CHECK_PUSH_OR_JUMP (SIZE_OPCODE + SIZE_STATE_CHECK_NUM + SIZE_RELADDR)
     745# define SIZE_OP_STATE_CHECK_ANYCHAR_STAR (SIZE_OPCODE + SIZE_STATE_CHECK_NUM)
    752746#endif
    753747
     
    797791/* cclass node */
    798792#define FLAG_NCCLASS_NOT           (1<<0)
    799 #define FLAG_NCCLASS_SHARE         (1<<1)
    800793
    801794#define NCCLASS_SET_NOT(nd)     NCCLASS_FLAG_SET(nd, FLAG_NCCLASS_NOT)
    802 #define NCCLASS_SET_SHARE(nd)   NCCLASS_FLAG_SET(nd, FLAG_NCCLASS_SHARE)
    803795#define NCCLASS_CLEAR_NOT(nd)   NCCLASS_FLAG_CLEAR(nd, FLAG_NCCLASS_NOT)
    804796#define IS_NCCLASS_NOT(nd)      IS_NCCLASS_FLAG_ON(nd, FLAG_NCCLASS_NOT)
    805 #define IS_NCCLASS_SHARE(nd)    IS_NCCLASS_FLAG_ON(nd, FLAG_NCCLASS_SHARE)
    806797
    807798typedef struct {
     
    858849    } call_frame;
    859850#endif
     851    struct {
     852      UChar *abs_pstr;        /* absent start position */
     853      const UChar *end_pstr;  /* end position */
     854    } absent_pos;
    860855  } u;
    861856} OnigStackType;
     
    901896
    902897
    903 extern void onig_print_compiled_byte_code P_((FILE* f, UChar* bp, UChar** nextp, OnigEncoding enc));
    904 
    905 #ifdef ONIG_DEBUG_STATISTICS
    906 extern void onig_statistics_init P_((void));
    907 extern void onig_print_statistics P_((FILE* f));
    908 #endif
    909 #endif
    910 
    911 extern UChar* onig_error_code_to_format P_((OnigPosition code));
    912 extern void  onig_snprintf_with_pattern PV_((UChar buf[], int bufsize, OnigEncoding enc, UChar* pat, UChar* pat_end, const UChar *fmt, ...));
    913 extern int  onig_bbuf_init P_((BBuf* buf, OnigDistance size));
    914 extern int  onig_compile P_((regex_t* reg, const UChar* pattern, const UChar* pattern_end, OnigErrorInfo* einfo));
    915 extern void onig_chain_reduce P_((regex_t* reg));
    916 extern void onig_chain_link_add P_((regex_t* to, regex_t* add));
    917 extern void onig_transfer P_((regex_t* to, regex_t* from));
    918 extern int  onig_is_code_in_cc P_((OnigEncoding enc, OnigCodePoint code, CClassNode* cc));
    919 extern int  onig_is_code_in_cc_len P_((int enclen, OnigCodePoint code, CClassNode* cc));
     898extern void onig_print_compiled_byte_code(FILE* f, UChar* bp, UChar* bpend, UChar** nextp, OnigEncoding enc);
     899
     900# ifdef ONIG_DEBUG_STATISTICS
     901extern void onig_statistics_init(void);
     902extern void onig_print_statistics(FILE* f);
     903# endif
     904#endif
     905
     906extern UChar* onig_error_code_to_format(OnigPosition code);
     907extern void onig_vsnprintf_with_pattern(UChar buf[], int bufsize, OnigEncoding enc, UChar* pat, UChar* pat_end, const UChar *fmt, va_list args);
     908extern void onig_snprintf_with_pattern(UChar buf[], int bufsize, OnigEncoding enc, UChar* pat, UChar* pat_end, const UChar *fmt, ...);
     909extern int  onig_bbuf_init(BBuf* buf, OnigDistance size);
     910extern int  onig_compile(regex_t* reg, const UChar* pattern, const UChar* pattern_end, OnigErrorInfo* einfo);
     911#ifdef RUBY
     912extern int  onig_compile_ruby(regex_t* reg, const UChar* pattern, const UChar* pattern_end, OnigErrorInfo* einfo, const char *sourcefile, int sourceline);
     913#endif
     914extern void onig_transfer(regex_t* to, regex_t* from);
     915extern int  onig_is_code_in_cc(OnigEncoding enc, OnigCodePoint code, CClassNode* cc);
     916extern int  onig_is_code_in_cc_len(int enclen, OnigCodePoint code, CClassNode* cc);
    920917
    921918/* strend hash */
    922919typedef void hash_table_type;
    923 typedef uintptr_t hash_data_type;
    924 
    925 extern hash_table_type* onig_st_init_strend_table_with_size P_((int size));
    926 extern int onig_st_lookup_strend P_((hash_table_type* table, const UChar* str_key, const UChar* end_key, hash_data_type *value));
    927 extern int onig_st_insert_strend P_((hash_table_type* table, const UChar* str_key, const UChar* end_key, hash_data_type value));
    928 
    929 /* encoding property management */
    930 #define PROPERTY_LIST_ADD_PROP(Name, CR) \
    931   r = onigenc_property_list_add_property((UChar* )Name, CR,\
    932               &PropertyNameTable, &PropertyList, &PropertyListNum,\
    933               &PropertyListSize);\
    934   if (r != 0) goto end
    935 
    936 #define PROPERTY_LIST_INIT_CHECK \
    937   if (PropertyInited == 0) {\
    938     int r = onigenc_property_list_init(init_property_list);\
    939     if (r != 0) return r;\
    940   }
    941 
    942 extern int onigenc_property_list_add_property P_((UChar* name, const OnigCodePoint* prop, hash_table_type **table, const OnigCodePoint*** plist, int *pnum, int *psize));
    943 
    944 typedef int (*ONIGENC_INIT_PROPERTY_LIST_FUNC_TYPE)(void);
    945 
    946 extern int onigenc_property_list_init P_((ONIGENC_INIT_PROPERTY_LIST_FUNC_TYPE));
    947 
    948 extern size_t onig_memsize P_((const regex_t *reg));
    949 extern size_t onig_region_memsize P_((const struct re_registers *regs));
    950 
    951 #endif /* REGINT_H */
     920#ifdef RUBY
     921# include "ruby/st.h"
     922#else
     923# include "st.h"
     924#endif
     925typedef st_data_t hash_data_type;
     926
     927extern hash_table_type* onig_st_init_strend_table_with_size(st_index_t size);
     928extern int onig_st_lookup_strend(hash_table_type* table, const UChar* str_key, const UChar* end_key, hash_data_type *value);
     929extern int onig_st_insert_strend(hash_table_type* table, const UChar* str_key, const UChar* end_key, hash_data_type value);
     930
     931#ifdef RUBY
     932extern size_t onig_memsize(const regex_t *reg);
     933extern size_t onig_region_memsize(const struct re_registers *regs);
     934#endif
     935
     936RUBY_SYMBOL_EXPORT_END
     937
     938#endif /* ONIGMO_REGINT_H */
  • EcnlProtoTool/trunk/onigmo-6.1.3/src/regparse.c

    r321 r331  
    44/*-
    55 * Copyright (c) 2002-2008  K.Kosako  <sndgk393 AT ybb DOT ne DOT jp>
    6  * Copyright (c) 2011-2014  K.Takata  <kentkt AT csc DOT jp>
     6 * Copyright (c) 2011-2016  K.Takata  <kentkt AT csc DOT jp>
    77 * All rights reserved.
    88 *
     
    3030
    3131#include "regparse.h"
    32 #include "st.h"
     32#include <stdarg.h>
    3333
    3434#define WARN_BUFSIZE    256
     
    3737
    3838
    39 OnigSyntaxType OnigSyntaxRuby = {
     39const OnigSyntaxType OnigSyntaxRuby = {
    4040  (( SYN_GNU_REGEX_OP | ONIG_SYN_OP_QMARK_NON_GREEDY |
    4141     ONIG_SYN_OP_ESC_OCTAL3 | ONIG_SYN_OP_ESC_X_HEX2 |
     
    5353      ONIG_SYN_OP2_ESC_CAPITAL_M_BAR_META | ONIG_SYN_OP2_ESC_V_VTAB |
    5454      ONIG_SYN_OP2_ESC_H_XDIGIT |
     55#ifndef RUBY
     56      ONIG_SYN_OP2_ESC_U_HEX4 |
     57#endif
    5558      ONIG_SYN_OP2_ESC_CAPITAL_X_EXTENDED_GRAPHEME_CLUSTER |
    5659      ONIG_SYN_OP2_QMARK_LPAREN_CONDITION |
    5760      ONIG_SYN_OP2_ESC_CAPITAL_R_LINEBREAK |
    58       ONIG_SYN_OP2_ESC_CAPITAL_K_KEEP )
     61      ONIG_SYN_OP2_ESC_CAPITAL_K_KEEP |
     62      ONIG_SYN_OP2_QMARK_TILDE_ABSENT )
    5963  , ( SYN_GNU_REGEX_BV |
    6064      ONIG_SYN_ALLOW_INTERVAL_LOW_ABBREV |
     
    6468      ONIG_SYN_FIXED_INTERVAL_IS_GREEDY_ONLY |
    6569      ONIG_SYN_WARN_CC_OP_NOT_ESCAPED |
     70      ONIG_SYN_WARN_CC_DUP |
    6671      ONIG_SYN_WARN_REDUNDANT_NESTED_REPEAT )
    6772  , ( ONIG_OPTION_ASCII_RANGE | ONIG_OPTION_POSIX_BRACKET_ALL_RANGE |
     
    7883};
    7984
    80 OnigSyntaxType*  OnigDefaultSyntax = ONIG_SYNTAX_RUBY;
     85const OnigSyntaxType*  OnigDefaultSyntax = ONIG_SYNTAX_RUBY;
    8186
    8287extern void onig_null_warn(const char* s ARG_UNUSED) { }
     
    103108  onig_verb_warn = f;
    104109}
     110
     111static void CC_DUP_WARN(ScanEnv *env);
     112
     113
     114static unsigned int ParseDepthLimit = DEFAULT_PARSE_DEPTH_LIMIT;
     115
     116extern unsigned int
     117onig_get_parse_depth_limit(void)
     118{
     119  return ParseDepthLimit;
     120}
     121
     122extern int
     123onig_set_parse_depth_limit(unsigned int depth)
     124{
     125  if (depth == 0)
     126    ParseDepthLimit = DEFAULT_PARSE_DEPTH_LIMIT;
     127  else
     128    ParseDepthLimit = depth;
     129  return 0;
     130}
     131
    105132
    106133static void
     
    137164
    138165#define SET_ALL_MULTI_BYTE_RANGE(enc, pbuf) \
    139   add_code_range_to_buf(pbuf, MBCODE_START_POS(enc), ONIG_LAST_CODE_POINT)
     166  add_code_range_to_buf(pbuf, env, MBCODE_START_POS(enc), ONIG_LAST_CODE_POINT)
    140167
    141168#define ADD_ALL_MULTI_BYTE_RANGE(enc, mbuf) do {\
     
    146173} while (0)
    147174
     175
     176#define BITSET_SET_BIT_CHKDUP(bs, pos) do { \
     177  if (BITSET_AT(bs, pos)) CC_DUP_WARN(env); \
     178  BS_ROOM(bs, pos) |= BS_BIT(pos); \
     179} while (0)
    148180
    149181#define BITSET_IS_EMPTY(bs,empty) do {\
     
    158190
    159191static void
    160 bitset_set_range(BitSetRef bs, int from, int to)
     192bitset_set_range(ScanEnv *env, BitSetRef bs, int from, int to)
    161193{
    162194  int i;
    163195  for (i = from; i <= to && i < SINGLE_BYTE_SIZE; i++) {
    164     BITSET_SET_BIT(bs, i);
     196    BITSET_SET_BIT_CHKDUP(bs, i);
    165197  }
    166198}
     
    210242}
    211243
     244#if defined(USE_NAMED_GROUP) && !defined(USE_ST_LIBRARY)
    212245extern int
    213246onig_strncmp(const UChar* s1, const UChar* s2, int n)
     
    221254  return 0;
    222255}
     256#endif
    223257
    224258extern void
     
    259293#ifdef __GNUC__
    260294/* get rid of Wunused-but-set-variable and Wuninitialized */
    261 #define PFETCH_READY  UChar* pfetch_prev = NULL; (void)pfetch_prev
     295# define PFETCH_READY  UChar* pfetch_prev = NULL; (void)pfetch_prev
    262296#else
    263 #define PFETCH_READY  UChar* pfetch_prev
     297# define PFETCH_READY  UChar* pfetch_prev
    264298#endif
    265299#define PEND         (p < end ?  0 : 1)
     
    267301#define PINC       do { \
    268302  pfetch_prev = p; \
    269   p += ONIGENC_MBC_ENC_LEN(enc, p); \
     303  p += enclen(enc, p, end); \
    270304} while (0)
    271305#define PFETCH(c)  do { \
    272   c = ONIGENC_MBC_TO_CODE(enc, p, end); \
     306  c = ((enc->max_enc_len == 1) ? *p : ONIGENC_MBC_TO_CODE(enc, p, end)); \
    273307  pfetch_prev = p; \
    274   p += ONIGENC_MBC_ENC_LEN(enc, p); \
     308  p += enclen(enc, p, end); \
    275309} while (0)
    276310
    277311#define PINC_S     do { \
    278   p += ONIGENC_MBC_ENC_LEN(enc, p); \
     312  p += enclen(enc, p, end); \
    279313} while (0)
    280314#define PFETCH_S(c) do { \
    281   c = ONIGENC_MBC_TO_CODE(enc, p, end); \
    282   p += ONIGENC_MBC_ENC_LEN(enc, p); \
     315  c = ((enc->max_enc_len == 1) ? *p : ONIGENC_MBC_TO_CODE(enc, p, end)); \
     316  p += enclen(enc, p, end); \
    283317} while (0)
    284318
     
    319353#ifdef USE_ST_LIBRARY
    320354
     355# ifdef RUBY
     356#  include "ruby/st.h"
     357# else
     358#  include "st.h"
     359# endif
     360
    321361typedef struct {
    322   UChar* s;
    323   UChar* end;
     362  const UChar* s;
     363  const UChar* end;
    324364} st_str_end_key;
    325365
    326366static int
    327 str_end_cmp(st_str_end_key* x, st_str_end_key* y)
    328 {
    329   UChar *p, *q;
     367str_end_cmp(st_data_t xp, st_data_t yp)
     368{
     369  const st_str_end_key *x, *y;
     370  const UChar *p, *q;
    330371  int c;
    331372
     373  x = (const st_str_end_key *)xp;
     374  y = (const st_str_end_key *)yp;
    332375  if ((x->end - x->s) != (y->end - y->s))
    333376    return 1;
     
    345388}
    346389
    347 static int
    348 str_end_hash(st_str_end_key* x)
    349 {
    350   UChar *p;
    351   int val = 0;
     390static st_index_t
     391str_end_hash(st_data_t xp)
     392{
     393  const st_str_end_key *x = (const st_str_end_key *)xp;
     394  const UChar *p;
     395  st_index_t val = 0;
    352396
    353397  p = x->s;
     
    360404
    361405extern hash_table_type*
    362 onig_st_init_strend_table_with_size(int size)
    363 {
    364   static struct st_hash_type hashType = {
     406onig_st_init_strend_table_with_size(st_index_t size)
     407{
     408  static const struct st_hash_type hashType = {
    365409    str_end_cmp,
    366410    str_end_hash,
     
    405449#ifdef USE_NAMED_GROUP
    406450
    407 #define INIT_NAME_BACKREFS_ALLOC_NUM   8
     451# define INIT_NAME_BACKREFS_ALLOC_NUM   8
    408452
    409453typedef struct {
     
    416460} NameEntry;
    417461
    418 #ifdef USE_ST_LIBRARY
     462# ifdef USE_ST_LIBRARY
    419463
    420464typedef st_table  NameTable;
    421465typedef st_data_t HashDataType;   /* 1.6 st.h doesn't define st_data_t type */
    422466
    423 #ifdef ONIG_DEBUG
     467#  ifdef ONIG_DEBUG
    424468static int
    425469i_print_name_entry(UChar* key, NameEntry* e, void* arg)
     
    455499  return 0;
    456500}
    457 #endif /* ONIG_DEBUG */
     501#  endif /* ONIG_DEBUG */
    458502
    459503static int
     
    518562{
    519563  int r = (*(arg->func))(e->name,
    520                         e->name + e->name_len,
    521                         e->back_num,
     564                        e->name + e->name_len,
     565                        e->back_num,
    522566                         (e->back_num > 1 ? e->back_refs : &(e->back_ref1)),
    523567                         arg->reg, arg->arg);
     
    577621
    578622extern int
    579 onig_number_of_names(regex_t* reg)
     623onig_number_of_names(const regex_t* reg)
    580624{
    581625  NameTable* t = (NameTable* )reg->name_table;
    582626
    583627  if (IS_NOT_NULL(t))
    584     return t->num_entries;
     628    return (int )t->num_entries;
    585629  else
    586630    return 0;
    587631}
    588632
    589 #else  /* USE_ST_LIBRARY */
    590 
    591 #define INIT_NAMES_ALLOC_NUM    8
     633# else  /* USE_ST_LIBRARY */
     634
     635#  define INIT_NAMES_ALLOC_NUM    8
    592636
    593637typedef struct {
     
    597641} NameTable;
    598642
    599 #ifdef ONIG_DEBUG
     643#  ifdef ONIG_DEBUG
    600644extern int
    601645onig_print_names(FILE* fp, regex_t* reg)
     
    628672  return 0;
    629673}
    630 #endif
     674#  endif
    631675
    632676static int
     
    713757
    714758extern int
    715 onig_number_of_names(regex_t* reg)
     759onig_number_of_names(const regex_t* reg)
    716760{
    717761  NameTable* t = (NameTable* )reg->name_table;
     
    723767}
    724768
    725 #endif /* else USE_ST_LIBRARY */
     769# endif /* else USE_ST_LIBRARY */
    726770
    727771static int
     
    737781  e = name_find(reg, name, name_end);
    738782  if (IS_NULL(e)) {
    739 #ifdef USE_ST_LIBRARY
     783# ifdef USE_ST_LIBRARY
    740784    if (IS_NULL(t)) {
    741785      t = onig_st_init_strend_table_with_size(5);
     
    758802    e->back_refs  = (int* )NULL;
    759803
    760 #else
     804# else
    761805
    762806    if (IS_NULL(t)) {
     
    801845    if (IS_NULL(e->name)) return ONIGERR_MEMORY;
    802846    e->name_len = name_end - name;
    803 #endif
     847# endif
    804848  }
    805849
     
    864908extern int
    865909onig_name_to_backref_number(regex_t* reg, const UChar* name,
    866                             const UChar* name_end, OnigRegion *region)
     910                            const UChar* name_end, const OnigRegion *region)
    867911{
    868912  int i, n, *nums;
     
    897941extern int
    898942onig_name_to_backref_number(regex_t* reg, const UChar* name,
    899                             const UChar* name_end, OnigRegion* region)
     943                            const UChar* name_end, const OnigRegion* region)
    900944{
    901945  return ONIG_NO_SUPPORT_CONFIG;
     
    910954
    911955extern int
    912 onig_number_of_names(regex_t* reg)
     956onig_number_of_names(const regex_t* reg)
    913957{
    914958  return 0;
     
    917961
    918962extern int
    919 onig_noname_group_capture_is_active(regex_t* reg)
     963onig_noname_group_capture_is_active(const regex_t* reg)
    920964{
    921965  if (ONIG_IS_OPTION_ON(reg->options, ONIG_OPTION_DONT_CAPTURE_GROUP))
     
    9641008  env->has_recursion       = 0;
    9651009#endif
     1010  env->parse_depth         = 0;
     1011  env->warnings_flag       = 0;
    9661012}
    9671013
     
    9801026        alloc = INIT_SCANENV_MEMNODES_ALLOC_SIZE;
    9811027        p = (Node** )xmalloc(sizeof(Node*) * alloc);
     1028        CHECK_NULL_RETURN_MEMERR(p);
    9821029        xmemcpy(p, env->mem_nodes_static,
    9831030                sizeof(Node*) * SCANENV_MEMNODES_SIZE);
     
    9861033        alloc = env->mem_alloc * 2;
    9871034        p = (Node** )xrealloc(env->mem_nodes_dynamic, sizeof(Node*) * alloc);
    988       }
    989       CHECK_NULL_RETURN_MEMERR(p);
     1035        CHECK_NULL_RETURN_MEMERR(p);
     1036      }
    9901037
    9911038      for (i = env->num_mem + 1; i < alloc; i++)
     
    10121059
    10131060
    1014 #ifdef USE_PARSE_TREE_NODE_RECYCLE
    1015 typedef struct _FreeNode {
    1016   struct _FreeNode* next;
    1017 } FreeNode;
    1018 
    1019 static FreeNode* FreeNodeList = (FreeNode* )NULL;
    1020 #endif
    1021 
    10221061extern void
    10231062onig_node_free(Node* node)
     
    10401079      Node* next_node = NCDR(node);
    10411080
    1042 #ifdef USE_PARSE_TREE_NODE_RECYCLE
    1043       {
    1044         FreeNode* n = (FreeNode* )node;
    1045 
    1046         THREAD_ATOMIC_START;
    1047         n->next = FreeNodeList;
    1048         FreeNodeList = n;
    1049         THREAD_ATOMIC_END;
    1050       }
    1051 #else
    10521081      xfree(node);
    1053 #endif
    10541082      node = next_node;
    10551083      goto start;
     
    10611089      CClassNode* cc = NCCLASS(node);
    10621090
    1063       if (IS_NCCLASS_SHARE(cc)) return ;
    10641091      if (cc->mbuf)
    1065         bbuf_free(cc->mbuf);
     1092        bbuf_free(cc->mbuf);
    10661093    }
    10671094    break;
     
    10881115  }
    10891116
    1090 #ifdef USE_PARSE_TREE_NODE_RECYCLE
    1091   {
    1092     FreeNode* n = (FreeNode* )node;
    1093 
    1094     THREAD_ATOMIC_START;
    1095     n->next = FreeNodeList;
    1096     FreeNodeList = n;
    1097     THREAD_ATOMIC_END;
    1098   }
    1099 #else
    11001117  xfree(node);
    1101 #endif
    1102 }
    1103 
    1104 #ifdef USE_PARSE_TREE_NODE_RECYCLE
    1105 extern int
    1106 onig_free_node_list(void)
    1107 {
    1108   FreeNode* n;
    1109 
    1110   /* THREAD_ATOMIC_START; */
    1111   while (IS_NOT_NULL(FreeNodeList)) {
    1112     n = FreeNodeList;
    1113     FreeNodeList = FreeNodeList->next;
    1114     xfree(n);
    1115   }
    1116   /* THREAD_ATOMIC_END; */
    1117   return 0;
    1118 }
    1119 #endif
     1118}
    11201119
    11211120static Node*
     
    11231122{
    11241123  Node* node;
    1125 
    1126 #ifdef USE_PARSE_TREE_NODE_RECYCLE
    1127   THREAD_ATOMIC_START;
    1128   if (IS_NOT_NULL(FreeNodeList)) {
    1129     node = (Node* )FreeNodeList;
    1130     FreeNodeList = FreeNodeList->next;
    1131     THREAD_ATOMIC_END;
    1132     return node;
    1133   }
    1134   THREAD_ATOMIC_END;
    1135 #endif
    11361124
    11371125  node = (Node* )xmalloc(sizeof(Node));
     
    11391127  return node;
    11401128}
    1141 
    1142 #if defined(USE_MULTI_THREAD_SYSTEM) && \
    1143     defined(USE_SHARED_CCLASS_TABLE) && \
    1144     defined(USE_PARSE_TREE_NODE_RECYCLE)
    1145 static Node*
    1146 node_new_locked(void)
    1147 {
    1148   Node* node;
    1149 
    1150   if (IS_NOT_NULL(FreeNodeList)) {
    1151     node = (Node* )FreeNodeList;
    1152     FreeNodeList = FreeNodeList->next;
    1153     return node;
    1154   }
    1155 
    1156   node = (Node* )xmalloc(sizeof(Node));
    1157   /* xmemset(node, 0, sizeof(Node)); */
    1158   return node;
    1159 }
    1160 #endif
    11611129
    11621130static void
     
    11791147  return node;
    11801148}
    1181 
    1182 #if defined(USE_MULTI_THREAD_SYSTEM) && \
    1183     defined(USE_SHARED_CCLASS_TABLE) && \
    1184     defined(USE_PARSE_TREE_NODE_RECYCLE)
    1185 static Node*
    1186 node_new_cclass_locked(void)
    1187 {
    1188   Node* node = node_new_locked();
    1189   CHECK_NULL_RETURN(node);
    1190 
    1191   SET_NTYPE(node, NT_CCLASS);
    1192   initialize_cclass(NCCLASS(node));
    1193   return node;
    1194 }
    1195 #else
    1196 #define node_new_cclass_locked()  node_new_cclass()
    1197 #endif
    1198 
    1199 #ifdef USE_SHARED_CCLASS_TABLE
    1200 static Node*
    1201 node_new_cclass_by_codepoint_range(int not, OnigCodePoint sb_out,
    1202                                    const OnigCodePoint ranges[])
    1203 {
    1204   int n, i;
    1205   CClassNode* cc;
    1206   OnigCodePoint j;
    1207 
    1208   Node* node = node_new_cclass_locked();
    1209   CHECK_NULL_RETURN(node);
    1210 
    1211   cc = NCCLASS(node);
    1212   if (not != 0) NCCLASS_SET_NOT(cc);
    1213 
    1214   BITSET_CLEAR(cc->bs);
    1215   if (sb_out > 0 && IS_NOT_NULL(ranges)) {
    1216     n = ONIGENC_CODE_RANGE_NUM(ranges);
    1217     for (i = 0; i < n; i++) {
    1218       for (j  = ONIGENC_CODE_RANGE_FROM(ranges, i);
    1219            j <= (OnigCodePoint )ONIGENC_CODE_RANGE_TO(ranges, i); j++) {
    1220         if (j >= sb_out) goto sb_end;
    1221 
    1222         BITSET_SET_BIT(cc->bs, j);
    1223       }
    1224     }
    1225   }
    1226 
    1227  sb_end:
    1228   if (IS_NULL(ranges)) {
    1229   is_null:
    1230     cc->mbuf = NULL;
    1231   }
    1232   else {
    1233     BBuf* bbuf;
    1234 
    1235     n = ONIGENC_CODE_RANGE_NUM(ranges);
    1236     if (n == 0) goto is_null;
    1237 
    1238     bbuf = (BBuf* )xmalloc(sizeof(BBuf));
    1239     CHECK_NULL_RETURN(bbuf);
    1240     bbuf->alloc = n + 1;
    1241     bbuf->used  = n + 1;
    1242     bbuf->p     = (UChar* )((void* )ranges);
    1243 
    1244     cc->mbuf = bbuf;
    1245   }
    1246 
    1247   return node;
    1248 }
    1249 #endif /* USE_SHARED_CCLASS_TABLE */
    12501149
    12511150static Node*
     
    15351434}
    15361435
     1436#if 0
    15371437extern void
    15381438onig_node_conv_to_str_node(Node* node, int flag)
     
    15441444  NSTR(node)->end  = NSTR(node)->buf;
    15451445}
     1446#endif
    15461447
    15471448extern void
     
    16141515
    16151516  if (sn->end > sn->s) {
    1616     p = onigenc_get_prev_char_head(enc, sn->s, sn->end);
     1517    p = onigenc_get_prev_char_head(enc, sn->s, sn->end, sn->end);
    16171518    if (p && p > sn->s) { /* can be split. */
    16181519      n = node_new_str(p, sn->end);
     
    16291530{
    16301531  if (sn->end > sn->s) {
    1631     return ((enclen(enc, sn->s) < sn->end - sn->s)  ?  1 : 0);
     1532    return ((enclen(enc, sn->s, sn->end) < sn->end - sn->s)  ?  1 : 0);
    16321533  }
    16331534  return 0;
     
    17021603    else {
    17031604      PUNFETCH;
     1605      maxlen++;
    17041606      break;
    17051607    }
     
    17661668
    17671669static int
    1768 add_code_range_to_buf(BBuf** pbuf, OnigCodePoint from, OnigCodePoint to)
     1670add_code_range_to_buf0(BBuf** pbuf, ScanEnv* env, OnigCodePoint from, OnigCodePoint to,
     1671        int checkdup)
    17691672{
    17701673  int r, inc_n, pos;
     
    18071710      bound = x;
    18081711  }
     1712  /* data[(low-1)*2+1] << from <= data[low*2]
     1713   * data[(high-1)*2+1] <= to << data[high*2]
     1714   */
    18091715
    18101716  inc_n = low + 1 - high;
     
    18131719
    18141720  if (inc_n != 1) {
     1721    if (checkdup && from <= data[low*2+1]
     1722        && (data[low*2] <= from || data[low*2+1] <= to))
     1723      CC_DUP_WARN(env);
    18151724    if (from > data[low*2])
    18161725      from = data[low*2];
     
    18451754
    18461755static int
    1847 add_code_range(BBuf** pbuf, ScanEnv* env, OnigCodePoint from, OnigCodePoint to)
     1756add_code_range_to_buf(BBuf** pbuf, ScanEnv* env, OnigCodePoint from, OnigCodePoint to)
     1757{
     1758  return add_code_range_to_buf0(pbuf, env, from, to, 1);
     1759}
     1760
     1761static int
     1762add_code_range0(BBuf** pbuf, ScanEnv* env, OnigCodePoint from, OnigCodePoint to, int checkdup)
    18481763{
    18491764  if (from > to) {
     
    18541769  }
    18551770
    1856   return add_code_range_to_buf(pbuf, from, to);
     1771  return add_code_range_to_buf0(pbuf, env, from, to, checkdup);
    18571772}
    18581773
    18591774static int
    1860 not_code_range_buf(OnigEncoding enc, BBuf* bbuf, BBuf** pbuf)
     1775add_code_range(BBuf** pbuf, ScanEnv* env, OnigCodePoint from, OnigCodePoint to)
     1776{
     1777  return add_code_range0(pbuf, env, from, to, 1);
     1778}
     1779
     1780static int
     1781not_code_range_buf(OnigEncoding enc, BBuf* bbuf, BBuf** pbuf, ScanEnv* env)
    18611782{
    18621783  int r, i, n;
     
    18801801    to   = data[i*2+1];
    18811802    if (pre <= from - 1) {
    1882       r = add_code_range_to_buf(pbuf, pre, from - 1);
     1803      r = add_code_range_to_buf(pbuf, env, pre, from - 1);
    18831804      if (r != 0) return r;
    18841805    }
     
    18871808  }
    18881809  if (to < ONIG_LAST_CODE_POINT) {
    1889     r = add_code_range_to_buf(pbuf, to + 1, ONIG_LAST_CODE_POINT);
     1810    r = add_code_range_to_buf(pbuf, env, to + 1, ONIG_LAST_CODE_POINT);
    18901811  }
    18911812  return r;
     
    19011822static int
    19021823or_code_range_buf(OnigEncoding enc, BBuf* bbuf1, int not1,
    1903                   BBuf* bbuf2, int not2, BBuf** pbuf)
     1824                  BBuf* bbuf2, int not2, BBuf** pbuf, ScanEnv* env)
    19041825{
    19051826  int r;
     
    19271848      }
    19281849      else {
    1929         return not_code_range_buf(enc, bbuf2, pbuf);
     1850        return not_code_range_buf(enc, bbuf2, pbuf, env);
    19301851      }
    19311852    }
     
    19431864  }
    19441865  else if (not1 == 0) { /* 1 OR (not 2) */
    1945     r = not_code_range_buf(enc, bbuf2, pbuf);
     1866    r = not_code_range_buf(enc, bbuf2, pbuf, env);
    19461867  }
    19471868  if (r != 0) return r;
     
    19501871    from = data1[i*2];
    19511872    to   = data1[i*2+1];
    1952     r = add_code_range_to_buf(pbuf, from, to);
     1873    r = add_code_range_to_buf(pbuf, env, from, to);
    19531874    if (r != 0) return r;
    19541875  }
     
    19571878
    19581879static int
    1959 and_code_range1(BBuf** pbuf, OnigCodePoint from1, OnigCodePoint to1,
    1960                 OnigCodePoint* data, int n)
     1880and_code_range1(BBuf** pbuf, ScanEnv* env, OnigCodePoint from1, OnigCodePoint to1,
     1881                OnigCodePoint* data, int n)
    19611882{
    19621883  int i, r;
     
    19751896      if (to2 < to1) {
    19761897        if (from1 <= from2 - 1) {
    1977           r = add_code_range_to_buf(pbuf, from1, from2-1);
     1898          r = add_code_range_to_buf(pbuf, env, from1, from2-1);
    19781899          if (r != 0) return r;
    19791900        }
     
    19901911  }
    19911912  if (from1 <= to1) {
    1992     r = add_code_range_to_buf(pbuf, from1, to1);
     1913    r = add_code_range_to_buf(pbuf, env, from1, to1);
    19931914    if (r != 0) return r;
    19941915  }
     
    19971918
    19981919static int
    1999 and_code_range_buf(BBuf* bbuf1, int not1, BBuf* bbuf2, int not2, BBuf** pbuf)
     1920and_code_range_buf(BBuf* bbuf1, int not1, BBuf* bbuf2, int not2, BBuf** pbuf, ScanEnv* env)
    20001921{
    20011922  int r;
     
    20361957        from = MAX(from1, from2);
    20371958        to   = MIN(to1, to2);
    2038         r = add_code_range_to_buf(pbuf, from, to);
     1959        r = add_code_range_to_buf(pbuf, env, from, to);
    20391960        if (r != 0) return r;
    20401961      }
     
    20451966      from1 = data1[i*2];
    20461967      to1   = data1[i*2+1];
    2047       r = and_code_range1(pbuf, from1, to1, data2, n2);
     1968      r = and_code_range1(pbuf, env, from1, to1, data2, n2);
    20481969      if (r != 0) return r;
    20491970    }
     
    20541975
    20551976static int
    2056 and_cclass(CClassNode* dest, CClassNode* cc, OnigEncoding enc)
    2057 {
     1977and_cclass(CClassNode* dest, CClassNode* cc, ScanEnv* env)
     1978{
     1979  OnigEncoding enc = env->enc;
    20581980  int r, not1, not2;
    20591981  BBuf *buf1, *buf2, *pbuf = 0;
     
    20872009  if (! ONIGENC_IS_SINGLEBYTE(enc)) {
    20882010    if (not1 != 0 && not2 != 0) {
    2089       r = or_code_range_buf(enc, buf1, 0, buf2, 0, &pbuf);
     2011      r = or_code_range_buf(enc, buf1, 0, buf2, 0, &pbuf, env);
    20902012    }
    20912013    else {
    2092       r = and_code_range_buf(buf1, not1, buf2, not2, &pbuf);
     2014      r = and_code_range_buf(buf1, not1, buf2, not2, &pbuf, env);
    20932015      if (r == 0 && not1 != 0) {
    20942016        BBuf *tbuf = 0;
    2095         r = not_code_range_buf(enc, pbuf, &tbuf);
     2017        r = not_code_range_buf(enc, pbuf, &tbuf, env);
    20962018        bbuf_free(pbuf);
    20972019        pbuf = tbuf;
     
    21112033
    21122034static int
    2113 or_cclass(CClassNode* dest, CClassNode* cc, OnigEncoding enc)
    2114 {
     2035or_cclass(CClassNode* dest, CClassNode* cc, ScanEnv* env)
     2036{
     2037  OnigEncoding enc = env->enc;
    21152038  int r, not1, not2;
    21162039  BBuf *buf1, *buf2, *pbuf = 0;
     
    21442067  if (! ONIGENC_IS_SINGLEBYTE(enc)) {
    21452068    if (not1 != 0 && not2 != 0) {
    2146       r = and_code_range_buf(buf1, 0, buf2, 0, &pbuf);
     2069      r = and_code_range_buf(buf1, 0, buf2, 0, &pbuf, env);
    21472070    }
    21482071    else {
    2149       r = or_code_range_buf(enc, buf1, not1, buf2, not2, &pbuf);
     2072      r = or_code_range_buf(enc, buf1, not1, buf2, not2, &pbuf, env);
    21502073      if (r == 0 && not1 != 0) {
    21512074        BBuf *tbuf = 0;
    2152         r = not_code_range_buf(enc, pbuf, &tbuf);
     2075        r = not_code_range_buf(enc, pbuf, &tbuf, env);
    21532076        bbuf_free(pbuf);
    21542077        pbuf = tbuf;
     
    21682091}
    21692092
    2170 static int
    2171 conv_backslash_value(int c, ScanEnv* env)
     2093static void UNKNOWN_ESC_WARN(ScanEnv *env, int c);
     2094
     2095static OnigCodePoint
     2096conv_backslash_value(OnigCodePoint c, ScanEnv* env)
    21722097{
    21732098  if (IS_SYNTAX_OP(env->syntax, ONIG_SYN_OP_ESC_CONTROL_CHARS)) {
     
    21862111
    21872112    default:
     2113      if (('a' <= c && c <= 'z') || ('A' <= c && c <= 'Z'))
     2114          UNKNOWN_ESC_WARN(env, c);
    21882115      break;
    21892116    }
     
    21932120
    21942121#ifdef USE_NO_INVALID_QUANTIFIER
    2195 #define is_invalid_quantifier_target(node) 0
     2122# define is_invalid_quantifier_target(node) 0
    21962123#else
    21972124static int
     
    22652192
    22662193static enum ReduceType const ReduceTypeTable[6][6] = {
     2194/* '?',     '*',     '+',    '??',    '*?',    '+?'      p / c   */
    22672195  {RQ_DEL,  RQ_A,    RQ_A,   RQ_QQ,   RQ_AQ,   RQ_ASIS}, /* '?'  */
    22682196  {RQ_DEL,  RQ_DEL,  RQ_DEL, RQ_P_QQ, RQ_P_QQ, RQ_DEL},  /* '*'  */
     
    24672395  if (IS_SYNTAX_OP(env->syntax, ONIG_SYN_OP_ESC_BRACE_INTERVAL)) {
    24682396    if (c != MC_ESC(env->syntax)) goto invalid;
     2397    if (PEND) goto invalid;
    24692398    PFETCH(c);
    24702399  }
     
    24902419/* \M-, \C-, \c, or \... */
    24912420static int
    2492 fetch_escaped_value(UChar** src, UChar* end, ScanEnv* env)
     2421fetch_escaped_value(UChar** src, UChar* end, ScanEnv* env, OnigCodePoint* val)
    24932422{
    24942423  int v;
     
    25092438      PFETCH_S(c);
    25102439      if (c == MC_ESC(env->syntax)) {
    2511         v = fetch_escaped_value(&p, end, env);
    2512         if (v < 0) return v;
    2513         c = (OnigCodePoint )v;
     2440        v = fetch_escaped_value(&p, end, env, &c);
     2441        if (v < 0) return v;
    25142442      }
    25152443      c = ((c & 0xff) | 0x80);
     
    25352463      PFETCH_S(c);
    25362464      if (c == '?') {
    2537         c = 0177;
     2465        c = 0177;
    25382466      }
    25392467      else {
    2540         if (c == MC_ESC(env->syntax)) {
    2541           v = fetch_escaped_value(&p, end, env);
    2542           if (v < 0) return v;
    2543           c = (OnigCodePoint )v;
    2544         }
    2545         c &= 0x9f;
     2468        if (c == MC_ESC(env->syntax)) {
     2469          v = fetch_escaped_value(&p, end, env, &c);
     2470          if (v < 0) return v;
     2471        }
     2472        c &= 0x9f;
    25462473      }
    25472474      break;
     
    25582485
    25592486  *src = p;
    2560   return c;
     2487  *val = c;
     2488  return 0;
    25612489}
    25622490
     
    25792507
    25802508#ifdef USE_NAMED_GROUP
    2581 #ifdef USE_BACKREF_WITH_LEVEL
     2509# ifdef RUBY
     2510#  define ONIGENC_IS_CODE_NAME(enc, c)  TRUE
     2511# else
     2512#  define ONIGENC_IS_CODE_NAME(enc, c)  ONIGENC_IS_CODE_WORD(enc, c)
     2513# endif
     2514
     2515# ifdef USE_BACKREF_WITH_LEVEL
    25822516/*
    25832517   \k<name+n>, \k<name-n>
     
    26242558      pnum_head = p;
    26252559    }
    2626     else if (!ONIGENC_IS_CODE_WORD(enc, c)) {
     2560    else if (!ONIGENC_IS_CODE_NAME(enc, c)) {
    26272561      r = ONIGERR_INVALID_CHAR_IN_GROUP_NAME;
    26282562    }
     
    26392573    if (is_num != 0) {
    26402574      if (ONIGENC_IS_CODE_DIGIT(enc, c)) {
    2641         is_num = 1;
     2575        is_num = 1;
    26422576      }
    26432577      else {
    2644         r = ONIGERR_INVALID_GROUP_NAME;
    2645         is_num = 0;
    2646       }
    2647     }
    2648     else if (!ONIGENC_IS_CODE_WORD(enc, c)) {
     2578        r = ONIGERR_INVALID_GROUP_NAME;
     2579        is_num = 0;
     2580      }
     2581    }
     2582    else if (!ONIGENC_IS_CODE_NAME(enc, c)) {
    26492583      r = ONIGERR_INVALID_CHAR_IN_GROUP_NAME;
    26502584    }
     
    26562590      int flag = (c == '-' ? -1 : 1);
    26572591
     2592      if (PEND) {
     2593        r = ONIGERR_INVALID_CHAR_IN_GROUP_NAME;
     2594        goto end;
     2595      }
    26582596      PFETCH(c);
    26592597      if (! ONIGENC_IS_CODE_DIGIT(enc, c)) goto err;
     
    26642602      exist_level = 1;
    26652603
    2666       PFETCH(c);
    2667       if (c == end_code)
    2668         goto end;
     2604      if (!PEND) {
     2605        PFETCH(c);
     2606        if (c == end_code)
     2607          goto end;
     2608      }
    26692609    }
    26702610
     
    26932633  }
    26942634}
    2695 #endif /* USE_BACKREF_WITH_LEVEL */
     2635# endif /* USE_BACKREF_WITH_LEVEL */
    26962636
    26972637/*
     
    27302670    if (ONIGENC_IS_CODE_DIGIT(enc, c)) {
    27312671      if (ref == 1)
    2732         is_num = 1;
    2733       else {
    2734         r = ONIGERR_INVALID_GROUP_NAME;
    2735         is_num = 0;
    2736       }
    2737     }
    2738     else if (c == '-') {
    2739       if (ref == 1) {
    2740         is_num = 2;
    2741         sign = -1;
    2742         pnum_head = p;
    2743       }
     2672        is_num = 1;
    27442673      else {
    27452674        r = ONIGERR_INVALID_GROUP_NAME;
     
    27472676      }
    27482677    }
    2749     else if (!ONIGENC_IS_CODE_WORD(enc, c)) {
     2678    else if (c == '-') {
     2679      if (ref == 1) {
     2680        is_num = 2;
     2681        sign = -1;
     2682        pnum_head = p;
     2683      }
     2684      else {
     2685        r = ONIGERR_INVALID_GROUP_NAME;
     2686        is_num = 0;
     2687      }
     2688    }
     2689    else if (!ONIGENC_IS_CODE_NAME(enc, c)) {
    27502690      r = ONIGERR_INVALID_CHAR_IN_GROUP_NAME;
    27512691    }
     
    27572697      PFETCH_S(c);
    27582698      if (c == end_code || c == ')') {
    2759         if (is_num == 2) r = ONIGERR_INVALID_GROUP_NAME;
     2699        if (is_num == 2) {
     2700          r = ONIGERR_INVALID_GROUP_NAME;
     2701          goto teardown;
     2702        }
    27602703        break;
    27612704      }
    27622705
    27632706      if (is_num != 0) {
    2764         if (ONIGENC_IS_CODE_DIGIT(enc, c)) {
    2765           is_num = 1;
    2766         }
    2767         else {
    2768           if (!ONIGENC_IS_CODE_WORD(enc, c))
    2769             r = ONIGERR_INVALID_CHAR_IN_GROUP_NAME;
    2770           else
    2771             r = ONIGERR_INVALID_GROUP_NAME;
    2772           is_num = 0;
    2773         }
     2707        if (ONIGENC_IS_CODE_DIGIT(enc, c)) {
     2708          is_num = 1;
     2709        }
     2710        else {
     2711          if (!ONIGENC_IS_CODE_WORD(enc, c))
     2712            r = ONIGERR_INVALID_CHAR_IN_GROUP_NAME;
     2713          else
     2714            r = ONIGERR_INVALID_GROUP_NAME;
     2715          goto teardown;
     2716        }
    27742717      }
    27752718      else {
    2776         if (!ONIGENC_IS_CODE_WORD(enc, c)) {
    2777           r = ONIGERR_INVALID_CHAR_IN_GROUP_NAME;
    2778         }
     2719        if (!ONIGENC_IS_CODE_NAME(enc, c)) {
     2720          r = ONIGERR_INVALID_CHAR_IN_GROUP_NAME;
     2721          goto teardown;
     2722        }
    27792723      }
    27802724    }
     
    27832727      r = ONIGERR_INVALID_GROUP_NAME;
    27842728      name_end = end;
     2729      goto err;
    27852730    }
    27862731
     
    27892734      if (*rback_num < 0) return ONIGERR_TOO_BIG_NUMBER;
    27902735      else if (*rback_num == 0) {
    2791         r = ONIGERR_INVALID_GROUP_NAME;
    2792         goto err;
     2736        r = ONIGERR_INVALID_GROUP_NAME;
     2737        goto err;
    27932738      }
    27942739
     
    28012746  }
    28022747  else {
     2748teardown:
    28032749    while (!PEND) {
    28042750      name_end = p;
    28052751      PFETCH_S(c);
    28062752      if (c == end_code || c == ')')
    2807         break;
     2753        break;
    28082754    }
    28092755    if (PEND)
     
    28942840#endif /* USE_NAMED_GROUP */
    28952841
     2842
    28962843static void
    2897 CC_ESC_WARN(ScanEnv* env, UChar *c)
     2844onig_syntax_warn(ScanEnv *env, const char *fmt, ...)
     2845{
     2846    va_list args;
     2847    UChar buf[WARN_BUFSIZE];
     2848    va_start(args, fmt);
     2849    onig_vsnprintf_with_pattern(buf, WARN_BUFSIZE, env->enc,
     2850                env->pattern, env->pattern_end,
     2851                (const UChar *)fmt, args);
     2852    va_end(args);
     2853#ifdef RUBY
     2854    if (env->sourcefile == NULL)
     2855      rb_warn("%s", (char *)buf);
     2856    else
     2857      rb_compile_warn(env->sourcefile, env->sourceline, "%s", (char *)buf);
     2858#else
     2859    (*onig_warn)((char* )buf);
     2860#endif
     2861}
     2862
     2863static void
     2864CC_ESC_WARN(ScanEnv *env, UChar *c)
    28982865{
    28992866  if (onig_warn == onig_null_warn) return ;
     
    29012868  if (IS_SYNTAX_BV(env->syntax, ONIG_SYN_WARN_CC_OP_NOT_ESCAPED) &&
    29022869      IS_SYNTAX_BV(env->syntax, ONIG_SYN_BACKSLASH_ESCAPE_IN_CC)) {
    2903     UChar buf[WARN_BUFSIZE];
    2904     onig_snprintf_with_pattern(buf, WARN_BUFSIZE, env->enc,
    2905                 env->pattern, env->pattern_end,
    2906                 (UChar* )"character class has '%s' without escape", c);
    2907     (*onig_warn)((char* )buf);
     2870    onig_syntax_warn(env, "character class has '%s' without escape", c);
    29082871  }
    29092872}
     
    29152878
    29162879  if (IS_SYNTAX_BV(env->syntax, ONIG_SYN_WARN_CC_OP_NOT_ESCAPED)) {
    2917     UChar buf[WARN_BUFSIZE];
    2918     onig_snprintf_with_pattern(buf, WARN_BUFSIZE, env->enc,
    2919                 env->pattern, env->pattern_end,
    2920                 (UChar* )"regular expression has '%s' without escape", c);
    2921     (*onig_warn)((char* )buf);
    2922   }
     2880    onig_syntax_warn(env, "regular expression has '%s' without escape", c);
     2881  }
     2882}
     2883
     2884#ifndef RTEST
     2885# define RTEST(v)  1
     2886#endif
     2887
     2888static void
     2889CC_DUP_WARN(ScanEnv *env)
     2890{
     2891  if (onig_warn == onig_null_warn || !RTEST(ruby_verbose)) return ;
     2892
     2893  if (IS_SYNTAX_BV(env->syntax, ONIG_SYN_WARN_CC_DUP) &&
     2894      !(env->warnings_flag & ONIG_SYN_WARN_CC_DUP)) {
     2895    env->warnings_flag |= ONIG_SYN_WARN_CC_DUP;
     2896    onig_syntax_warn(env, "character class has duplicated range");
     2897  }
     2898}
     2899
     2900static void
     2901UNKNOWN_ESC_WARN(ScanEnv *env, int c)
     2902{
     2903  if (onig_warn == onig_null_warn || !RTEST(ruby_verbose)) return ;
     2904  onig_syntax_warn(env, "Unknown escape \\%c is ignored", c);
    29232905}
    29242906
     
    29342916  while (p < to) {
    29352917    x = ONIGENC_MBC_TO_CODE(enc, p, to);
    2936     q = p + enclen(enc, p);
     2918    q = p + enclen(enc, p, to);
    29372919    if (x == s[0]) {
    29382920      for (i = 1; i < n && q < to; i++) {
    29392921        x = ONIGENC_MBC_TO_CODE(enc, q, to);
    29402922        if (x != s[i]) break;
    2941         q += enclen(enc, q);
     2923        q += enclen(enc, q, to);
    29422924      }
    29432925      if (i >= n) {
     
    29542936static int
    29552937str_exist_check_with_esc(OnigCodePoint s[], int n, UChar* from, UChar* to,
    2956                  OnigCodePoint bad, OnigEncoding enc, OnigSyntaxType* syn)
     2938                 OnigCodePoint bad, OnigEncoding enc, const OnigSyntaxType* syn)
    29572939{
    29582940  int i, in_esc;
     
    29652947    if (in_esc) {
    29662948      in_esc = 0;
    2967       p += enclen(enc, p);
     2949      p += enclen(enc, p, to);
    29682950    }
    29692951    else {
    29702952      x = ONIGENC_MBC_TO_CODE(enc, p, to);
    2971       q = p + enclen(enc, p);
     2953      q = p + enclen(enc, p, to);
    29722954      if (x == s[0]) {
    29732955        for (i = 1; i < n && q < to; i++) {
    29742956          x = ONIGENC_MBC_TO_CODE(enc, q, to);
    29752957          if (x != s[i]) break;
    2976           q += enclen(enc, q);
     2958          q += enclen(enc, q, to);
    29772959        }
    29782960        if (i >= n) return 1;
    2979         p += enclen(enc, p);
     2961        p += enclen(enc, p, to);
    29802962      }
    29812963      else {
     
    29952977  int num;
    29962978  OnigCodePoint c, c2;
    2997   OnigSyntaxType* syn = env->syntax;
     2979  const OnigSyntaxType* syn = env->syntax;
    29982980  OnigEncoding enc = env->enc;
    29992981  UChar* prev;
     
    30733055    case 'p':
    30743056    case 'P':
     3057      if (PEND) break;
     3058
    30753059      c2 = PPEEK;
    30763060      if (c2 == '{' &&
     
    30803064        tok->u.prop.not = (c == 'P' ? 1 : 0);
    30813065
    3082         if (IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_P_BRACE_CIRCUMFLEX_NOT)) {
     3066        if (!PEND && IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_P_BRACE_CIRCUMFLEX_NOT)) {
    30833067          PFETCH(c2);
    30843068          if (c2 == '^') {
     
    30893073        }
    30903074      }
     3075      else {
     3076        onig_syntax_warn(env, "invalid Unicode Property \\%c", c);
     3077      }
    30913078      break;
    30923079
     
    31003087        if (num < 0) return ONIGERR_TOO_BIG_WIDE_CHAR_VALUE;
    31013088        if (!PEND) {
    3102           c2 = PPEEK;
    3103           if (ONIGENC_IS_CODE_XDIGIT(enc, c2))
    3104             return ONIGERR_TOO_LONG_WIDE_CHAR_VALUE;
    3105         }
    3106 
    3107         if (p > prev + enclen(enc, prev) && !PEND && (PPEEK_IS('}'))) {
     3089          c2 = PPEEK;
     3090          if (ONIGENC_IS_CODE_XDIGIT(enc, c2))
     3091            return ONIGERR_TOO_LONG_WIDE_CHAR_VALUE;
     3092        }
     3093
     3094        if (p > prev + enclen(enc, prev, end) && !PEND && (PPEEK_IS('}'))) {
    31083095          PINC;
    31093096          tok->type   = TK_CODE_POINT;
     
    31423129        tok->base   = 16;
    31433130        tok->u.code = (OnigCodePoint )num;
     3131      }
     3132      break;
     3133
     3134    case 'o':
     3135      if (PEND) break;
     3136
     3137      prev = p;
     3138      if (PPEEK_IS('{') && IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_O_BRACE_OCTAL)) {
     3139        PINC;
     3140        num = scan_unsigned_octal_number(&p, end, 11, enc);
     3141        if (num < 0) return ONIGERR_TOO_BIG_WIDE_CHAR_VALUE;
     3142        if (!PEND) {
     3143          c2 = PPEEK;
     3144          if (ONIGENC_IS_CODE_DIGIT(enc, c2) && c2 < '8')
     3145            return ONIGERR_TOO_LONG_WIDE_CHAR_VALUE;
     3146        }
     3147
     3148        if (p > prev + enclen(enc, prev, end) && !PEND && (PPEEK_IS('}'))) {
     3149          PINC;
     3150          tok->type   = TK_CODE_POINT;
     3151          tok->base   = 8;
     3152          tok->u.code = (OnigCodePoint )num;
     3153        }
     3154        else {
     3155          /* can't read nothing or invalid format */
     3156          p = prev;
     3157        }
    31443158      }
    31453159      break;
     
    31633177    default:
    31643178      PUNFETCH;
    3165       num = fetch_escaped_value(&p, end, env);
     3179      num = fetch_escaped_value(&p, end, env, &c2);
    31663180      if (num < 0) return num;
    3167       if (tok->u.c != num) {
    3168         tok->u.code = (OnigCodePoint )num;
     3181      if ((OnigCodePoint )tok->u.c != c2) {
     3182        tok->u.code = (OnigCodePoint )c2;
    31693183        tok->type   = TK_CODE_POINT;
    31703184      }
     
    32153229{
    32163230  int r, num;
    3217   OnigSyntaxType* syn = env->syntax;
     3231  const OnigSyntaxType* syn = env->syntax;
    32183232  UChar* prev;
    32193233  UChar* p = *src;
     
    32243238  prev = p;
    32253239
    3226 #ifdef USE_BACKREF_WITH_LEVEL
     3240# ifdef USE_BACKREF_WITH_LEVEL
    32273241  name_end = NULL_UCHARP; /* no need. escape gcc warning. */
    32283242  r = fetch_name_with_level(c, &p, end, &name_end,
     
    32303244  if (r == 1) tok->u.backref.exist_level = 1;
    32313245  else        tok->u.backref.exist_level = 0;
    3232 #else
     3246# else
    32333247  r = fetch_name(&p, end, &name_end, env, &back_num, 1);
    3234 #endif
     3248# endif
    32353249  if (r < 0) return r;
    32363250
     
    32703284    tok->type = TK_BACKREF;
    32713285    tok->u.backref.by_name = 1;
    3272     if (num == 1) {
     3286    if (num == 1 || IS_SYNTAX_BV(syn, ONIG_SYN_USE_LEFT_MOST_NAMED_GROUP)) {
    32733287      tok->u.backref.num  = 1;
    32743288      tok->u.backref.ref1 = backs[0];
     
    32903304  OnigCodePoint c;
    32913305  OnigEncoding enc = env->enc;
    3292   OnigSyntaxType* syn = env->syntax;
     3306  const OnigSyntaxType* syn = env->syntax;
    32933307  UChar* prev;
    32943308  UChar* p = *src;
     
    35233537        if (num < 0) return ONIGERR_TOO_BIG_WIDE_CHAR_VALUE;
    35243538        if (!PEND) {
    3525           if (ONIGENC_IS_CODE_XDIGIT(enc, PPEEK))
    3526             return ONIGERR_TOO_LONG_WIDE_CHAR_VALUE;
    3527         }
    3528 
    3529         if ((p > prev + enclen(enc, prev)) && !PEND && PPEEK_IS('}')) {
     3539          if (ONIGENC_IS_CODE_XDIGIT(enc, PPEEK))
     3540            return ONIGERR_TOO_LONG_WIDE_CHAR_VALUE;
     3541        }
     3542
     3543        if ((p > prev + enclen(enc, prev, end)) && !PEND && PPEEK_IS('}')) {
    35303544          PINC;
    35313545          tok->type   = TK_CODE_POINT;
     
    35663580      break;
    35673581
     3582    case 'o':
     3583      if (PEND) break;
     3584
     3585      prev = p;
     3586      if (PPEEK_IS('{') && IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_O_BRACE_OCTAL)) {
     3587        PINC;
     3588        num = scan_unsigned_octal_number(&p, end, 11, enc);
     3589        if (num < 0) return ONIGERR_TOO_BIG_WIDE_CHAR_VALUE;
     3590        if (!PEND) {
     3591          OnigCodePoint c = PPEEK;
     3592          if (ONIGENC_IS_CODE_DIGIT(enc, c) && c < '8')
     3593            return ONIGERR_TOO_LONG_WIDE_CHAR_VALUE;
     3594        }
     3595
     3596        if ((p > prev + enclen(enc, prev, end)) && !PEND && PPEEK_IS('}')) {
     3597          PINC;
     3598          tok->type   = TK_CODE_POINT;
     3599          tok->u.code = (OnigCodePoint )num;
     3600        }
     3601        else {
     3602          /* can't read nothing or invalid format */
     3603          p = prev;
     3604        }
     3605      }
     3606      break;
     3607
    35683608    case '1': case '2': case '3': case '4':
    35693609    case '5': case '6': case '7': case '8': case '9':
     
    35723612      num = onig_scan_unsigned_number(&p, end, enc);
    35733613      if (num < 0 || num > ONIG_MAX_BACKREF_NUM) {
    3574         goto skip_backref;
     3614        goto skip_backref;
    35753615      }
    35763616
     
    36053645        prev = p;
    36063646        num = scan_unsigned_octal_number(&p, end, (c == '0' ? 2:3), enc);
    3607         if (num < 0) return ONIGERR_TOO_BIG_NUMBER;
     3647        if (num < 0 || 0xff < num) return ONIGERR_TOO_BIG_NUMBER;
    36083648        if (p == prev) {  /* can't read nothing. */
    36093649          num = 0; /* but, it's not error */
     
    36203660#ifdef USE_NAMED_GROUP
    36213661    case 'k':
    3622       if (IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_K_NAMED_BACKREF)) {
     3662      if (!PEND && IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_K_NAMED_BACKREF)) {
    36233663        PFETCH(c);
    36243664        if (c == '<' || c == '\'') {
     
    36263666          if (r < 0) return r;
    36273667        }
    3628         else
     3668        else {
    36293669          PUNFETCH;
     3670          onig_syntax_warn(env, "invalid back reference");
     3671        }
    36303672      }
    36313673      break;
     
    36343676#if defined(USE_SUBEXP_CALL) || defined(USE_NAMED_GROUP)
    36353677    case 'g':
    3636 #ifdef USE_NAMED_GROUP
    3637       if (IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_G_BRACE_BACKREF)) {
     3678# ifdef USE_NAMED_GROUP
     3679      if (!PEND && IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_G_BRACE_BACKREF)) {
    36383680        PFETCH(c);
    36393681        if (c == '{') {
     
    36443686          PUNFETCH;
    36453687      }
    3646 #endif
    3647 #ifdef USE_SUBEXP_CALL
    3648       if (IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_G_SUBEXP_CALL)) {
     3688# endif
     3689# ifdef USE_SUBEXP_CALL
     3690      if (!PEND && IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_G_SUBEXP_CALL)) {
    36493691        PFETCH(c);
    36503692        if (c == '<' || c == '\'') {
     
    36783720          tok->u.call.rel      = rel;
    36793721        }
    3680         else
     3722        else {
     3723          onig_syntax_warn(env, "invalid subexp call");
    36813724          PUNFETCH;
    3682       }
    3683 #endif
     3725        }
     3726      }
     3727# endif
    36843728      break;
    36853729#endif
     
    36993743        tok->u.prop.not = (c == 'P' ? 1 : 0);
    37003744
    3701         if (IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_P_BRACE_CIRCUMFLEX_NOT)) {
     3745        if (!PEND && IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_P_BRACE_CIRCUMFLEX_NOT)) {
    37023746          PFETCH(c);
    37033747          if (c == '^') {
     
    37083752        }
    37093753      }
     3754      else {
     3755        onig_syntax_warn(env, "invalid Unicode Property \\%c", c);
     3756      }
    37103757      break;
    37113758
     
    37293776
    37303777    default:
    3731       PUNFETCH;
    3732       num = fetch_escaped_value(&p, end, env);
    3733       if (num < 0) return num;
    3734       /* set_raw: */
    3735       if (tok->u.c != num) {
    3736         tok->type = TK_CODE_POINT;
    3737         tok->u.code = (OnigCodePoint )num;
    3738       }
    3739       else { /* string */
    3740         p = tok->backp + enclen(enc, tok->backp);
     3778      {
     3779        OnigCodePoint c2;
     3780
     3781        PUNFETCH;
     3782        num = fetch_escaped_value(&p, end, env, &c2);
     3783        if (num < 0) return num;
     3784        /* set_raw: */
     3785        if ((OnigCodePoint )tok->u.c != c2) {
     3786          tok->type = TK_CODE_POINT;
     3787          tok->u.code = (OnigCodePoint )c2;
     3788        }
     3789        else { /* string */
     3790          p = tok->backp + enclen(enc, tok->backp, end);
     3791        }
    37413792      }
    37423793      break;
     
    38283879    case '(':
    38293880      if (PPEEK_IS('?') &&
    3830           IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_QMARK_GROUP_EFFECT)) {
    3831         PINC;
    3832         if (PPEEK_IS('#')) {
    3833           PFETCH(c);
    3834           while (1) {
    3835             if (PEND) return ONIGERR_END_PATTERN_IN_GROUP;
    3836             PFETCH(c);
    3837             if (c == MC_ESC(syn)) {
    3838               if (!PEND) PFETCH(c);
    3839             }
    3840             else {
    3841               if (c == ')') break;
    3842             }
    3843           }
    3844           goto start;
    3845         }
     3881          IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_QMARK_GROUP_EFFECT)) {
     3882        PINC;
     3883        if (PPEEK_IS('#')) {
     3884          PFETCH(c);
     3885          while (1) {
     3886            if (PEND) return ONIGERR_END_PATTERN_IN_GROUP;
     3887            PFETCH(c);
     3888            if (c == MC_ESC(syn)) {
     3889              if (!PEND) PFETCH(c);
     3890            }
     3891            else {
     3892              if (c == ')') break;
     3893            }
     3894          }
     3895          goto start;
     3896        }
    38463897#ifdef USE_PERL_SUBEXP_CALL
    38473898        /* (?&name), (?n), (?R), (?0), (?+n), (?-n) */
     
    39143965
    39153966          PINC;     /* skip 'P' */
     3967          if (PEND) return ONIGERR_UNDEFINED_GROUP_OPTION;
    39163968          PFETCH(c);
    39173969          if (c == '=') {       /* (?P=name): backref */
     
    39323984            break;
    39333985          }
    3934           PUNFETCH;
    39353986        }
    39363987#endif /* USE_CAPITAL_P_NAMED_GROUP */
    3937         PUNFETCH;
     3988        PUNFETCH;
    39383989      }
    39393990
     
    40034054static int
    40044055add_ctype_to_cc_by_range(CClassNode* cc, int ctype ARG_UNUSED, int not,
    4005                          OnigEncoding enc ARG_UNUSED,
     4056                         ScanEnv* env,
    40064057                         OnigCodePoint sb_out, const OnigCodePoint mbr[])
    40074058{
     
    40134064  if (not == 0) {
    40144065    for (i = 0; i < n; i++) {
    4015       for (j  = ONIGENC_CODE_RANGE_FROM(mbr, i);
    4016            j <= ONIGENC_CODE_RANGE_TO(mbr, i); j++) {
     4066      for (j = ONIGENC_CODE_RANGE_FROM(mbr, i);
     4067          j <= ONIGENC_CODE_RANGE_TO(mbr, i); j++) {
    40174068        if (j >= sb_out) {
    40184069          if (j > ONIGENC_CODE_RANGE_FROM(mbr, i)) {
    4019             r = add_code_range_to_buf(&(cc->mbuf), j,
     4070            r = add_code_range_to_buf(&(cc->mbuf), env, j,
    40204071                                      ONIGENC_CODE_RANGE_TO(mbr, i));
    40214072            if (r != 0) return r;
     
    40254076          goto sb_end;
    40264077        }
    4027         BITSET_SET_BIT(cc->bs, j);
     4078        BITSET_SET_BIT_CHKDUP(cc->bs, j);
    40284079      }
    40294080    }
     
    40314082  sb_end:
    40324083    for ( ; i < n; i++) {
    4033       r = add_code_range_to_buf(&(cc->mbuf),
     4084      r = add_code_range_to_buf(&(cc->mbuf), env,
    40344085                                ONIGENC_CODE_RANGE_FROM(mbr, i),
    40354086                                ONIGENC_CODE_RANGE_TO(mbr, i));
     
    40464097          goto sb_end2;
    40474098        }
    4048         BITSET_SET_BIT(cc->bs, j);
     4099        BITSET_SET_BIT_CHKDUP(cc->bs, j);
    40494100      }
    40504101      prev = ONIGENC_CODE_RANGE_TO(mbr, i) + 1;
    40514102    }
    40524103    for (j = prev; j < sb_out; j++) {
    4053       BITSET_SET_BIT(cc->bs, j);
     4104      BITSET_SET_BIT_CHKDUP(cc->bs, j);
    40544105    }
    40554106
     
    40594110    for (i = 0; i < n; i++) {
    40604111      if (prev < ONIGENC_CODE_RANGE_FROM(mbr, i)) {
    4061         r = add_code_range_to_buf(&(cc->mbuf), prev,
     4112        r = add_code_range_to_buf(&(cc->mbuf), env, prev,
    40624113                                  ONIGENC_CODE_RANGE_FROM(mbr, i) - 1);
    40634114        if (r != 0) return r;
     
    40664117    }
    40674118    if (prev < 0x7fffffff) {
    4068       r = add_code_range_to_buf(&(cc->mbuf), prev, 0x7fffffff);
     4119      r = add_code_range_to_buf(&(cc->mbuf), env, prev, 0x7fffffff);
    40694120      if (r != 0) return r;
    40704121    }
     
    40884139      CClassNode ccwork;
    40894140      initialize_cclass(&ccwork);
    4090       r = add_ctype_to_cc_by_range(&ccwork, ctype, not, env->enc, sb_out,
     4141      r = add_ctype_to_cc_by_range(&ccwork, ctype, not, env, sb_out,
    40914142                                   ranges);
    40924143      if (r == 0) {
    40934144        if (not) {
    4094           r = add_code_range_to_buf(&(ccwork.mbuf), 0x80, ONIG_LAST_CODE_POINT);
     4145          r = add_code_range_to_buf0(&(ccwork.mbuf), env, 0x80, ONIG_LAST_CODE_POINT, FALSE);
    40954146        }
    40964147        else {
     
    40984149          initialize_cclass(&ccascii);
    40994150          if (ONIGENC_MBC_MINLEN(env->enc) > 1) {
    4100             add_code_range(&(ccascii.mbuf), env, 0x00, 0x7F);
     4151            r = add_code_range(&(ccascii.mbuf), env, 0x00, 0x7F);
    41014152          }
    41024153          else {
    4103             bitset_set_range(ccascii.bs, 0x00, 0x7F);
     4154            bitset_set_range(env, ccascii.bs, 0x00, 0x7F);
     4155            r = 0;
    41044156          }
    4105           r = and_cclass(&ccwork, &ccascii, enc);
     4157          if (r == 0) {
     4158            r = and_cclass(&ccwork, &ccascii, env);
     4159          }
    41064160          if (IS_NOT_NULL(ccascii.mbuf)) bbuf_free(ccascii.mbuf);
    41074161        }
    41084162        if (r == 0) {
    4109           r = or_cclass(cc, &ccwork, enc);
     4163          r = or_cclass(cc, &ccwork, env);
    41104164        }
    41114165        if (IS_NOT_NULL(ccwork.mbuf)) bbuf_free(ccwork.mbuf);
     
    41134167    }
    41144168    else {
    4115       r = add_ctype_to_cc_by_range(cc, ctype, not, env->enc, sb_out, ranges);
     4169      r = add_ctype_to_cc_by_range(cc, ctype, not, env, sb_out, ranges);
    41164170    }
    41174171    return r;
     
    41384192      for (c = 0; c < SINGLE_BYTE_SIZE; c++) {
    41394193        if (! ONIGENC_IS_CODE_CTYPE(enc, (OnigCodePoint )c, ctype))
    4140           BITSET_SET_BIT(cc->bs, c);
     4194          BITSET_SET_BIT_CHKDUP(cc->bs, c);
    41414195      }
    41424196      ADD_ALL_MULTI_BYTE_RANGE(enc, cc->mbuf);
     
    41454199      for (c = 0; c < SINGLE_BYTE_SIZE; c++) {
    41464200        if (ONIGENC_IS_CODE_CTYPE(enc, (OnigCodePoint )c, ctype))
    4147           BITSET_SET_BIT(cc->bs, c);
     4201          BITSET_SET_BIT_CHKDUP(cc->bs, c);
    41484202      }
    41494203    }
     
    41564210        if (! ONIGENC_IS_CODE_CTYPE(enc, (OnigCodePoint )c, ctype)
    41574211            || c >= maxcode)
    4158           BITSET_SET_BIT(cc->bs, c);
     4212          BITSET_SET_BIT_CHKDUP(cc->bs, c);
    41594213      }
    41604214      if (ascii_range)
    4161         ADD_ALL_MULTI_BYTE_RANGE(enc, cc->mbuf);
     4215        ADD_ALL_MULTI_BYTE_RANGE(enc, cc->mbuf);
    41624216    }
    41634217    else {
    41644218      for (c = 0; c < maxcode; c++) {
    41654219        if (ONIGENC_IS_CODE_CTYPE(enc, (OnigCodePoint )c, ctype))
    4166           BITSET_SET_BIT(cc->bs, c);
     4220          BITSET_SET_BIT_CHKDUP(cc->bs, c);
    41674221      }
    41684222      if (! ascii_range)
    4169         ADD_ALL_MULTI_BYTE_RANGE(enc, cc->mbuf);
     4223        ADD_ALL_MULTI_BYTE_RANGE(enc, cc->mbuf);
    41704224    }
    41714225    break;
     
    41744228    if (not == 0) {
    41754229      for (c = 0; c < maxcode; c++) {
    4176         if (ONIGENC_IS_CODE_WORD(enc, c)) BITSET_SET_BIT(cc->bs, c);
     4230        if (ONIGENC_IS_CODE_WORD(enc, c)) BITSET_SET_BIT_CHKDUP(cc->bs, c);
    41774231      }
    41784232      if (! ascii_range)
    4179         ADD_ALL_MULTI_BYTE_RANGE(enc, cc->mbuf);
     4233        ADD_ALL_MULTI_BYTE_RANGE(enc, cc->mbuf);
    41804234    }
    41814235    else {
    41824236      for (c = 0; c < SINGLE_BYTE_SIZE; c++) {
    4183         if ((ONIGENC_CODE_TO_MBCLEN(enc, c) > 0) /* check invalid code point */
     4237        if ((ONIGENC_CODE_TO_MBCLEN(enc, c) > 0) /* check invalid code point */
    41844238            && (! ONIGENC_IS_CODE_WORD(enc, c) || c >= maxcode))
    4185           BITSET_SET_BIT(cc->bs, c);
     4239          BITSET_SET_BIT_CHKDUP(cc->bs, c);
    41864240      }
    41874241      if (ascii_range)
    4188         ADD_ALL_MULTI_BYTE_RANGE(enc, cc->mbuf);
     4242        ADD_ALL_MULTI_BYTE_RANGE(enc, cc->mbuf);
    41894243    }
    41904244    break;
     
    42454299      p = (UChar* )onigenc_step(enc, p, end, pb->len);
    42464300      if (onigenc_with_ascii_strncmp(enc, p, end, (UChar* )":]", 2) != 0)
    4247         return ONIGERR_INVALID_POSIX_BRACKET_TYPE;
     4301        return ONIGERR_INVALID_POSIX_BRACKET_TYPE;
    42484302
    42494303      r = add_ctype_to_cc(cc, pb->ctype, not, ascii_range, env);
     
    42764330      PFETCH_S(c);
    42774331      if (c == ']')
    4278         return ONIGERR_INVALID_POSIX_BRACKET_TYPE;
     4332        return ONIGERR_INVALID_POSIX_BRACKET_TYPE;
    42794333    }
    42804334  }
     
    43564410static int
    43574411next_state_class(CClassNode* cc, CClassNode* asc_cc,
    4358                 OnigCodePoint* vs, enum CCVALTYPE* type,
     4412                OnigCodePoint* vs, enum CCVALTYPE* type,
    43594413                 enum CCSTATE* state, ScanEnv* env)
    43604414{
     
    43664420  if (*state == CCS_VALUE && *type != CCV_CLASS) {
    43674421    if (*type == CCV_SB) {
    4368       BITSET_SET_BIT(cc->bs, (int )(*vs));
     4422      BITSET_SET_BIT_CHKDUP(cc->bs, (int )(*vs));
    43694423      if (IS_NOT_NULL(asc_cc))
    43704424        BITSET_SET_BIT(asc_cc->bs, (int )(*vs));
     
    43744428      if (r < 0) return r;
    43754429      if (IS_NOT_NULL(asc_cc)) {
    4376         r = add_code_range(&(asc_cc->mbuf), env, *vs, *vs);
     4430        r = add_code_range0(&(asc_cc->mbuf), env, *vs, *vs, 0);
    43774431        if (r < 0) return r;
    43784432      }
     
    43874441static int
    43884442next_state_val(CClassNode* cc, CClassNode* asc_cc,
    4389                OnigCodePoint *vs, OnigCodePoint v,
    4390                int* vs_israw, int v_israw,
     4443               OnigCodePoint *from, OnigCodePoint to,
     4444               int* from_israw, int to_israw,
    43914445               enum CCVALTYPE intype, enum CCVALTYPE* type,
    43924446               enum CCSTATE* state, ScanEnv* env)
     
    43974451  case CCS_VALUE:
    43984452    if (*type == CCV_SB) {
    4399       BITSET_SET_BIT(cc->bs, (int )(*vs));
     4453      BITSET_SET_BIT_CHKDUP(cc->bs, (int )(*from));
    44004454      if (IS_NOT_NULL(asc_cc))
    4401         BITSET_SET_BIT(asc_cc->bs, (int )(*vs));
     4455        BITSET_SET_BIT(asc_cc->bs, (int )(*from));
    44024456    }
    44034457    else if (*type == CCV_CODE_POINT) {
    4404       r = add_code_range(&(cc->mbuf), env, *vs, *vs);
     4458      r = add_code_range(&(cc->mbuf), env, *from, *from);
    44054459      if (r < 0) return r;
    44064460      if (IS_NOT_NULL(asc_cc)) {
    4407         r = add_code_range(&(asc_cc->mbuf), env, *vs, *vs);
     4461        r = add_code_range0(&(asc_cc->mbuf), env, *from, *from, 0);
    44084462        if (r < 0) return r;
    44094463      }
     
    44144468    if (intype == *type) {
    44154469      if (intype == CCV_SB) {
    4416         if (*vs > 0xff || v > 0xff)
    4417           return ONIGERR_INVALID_CODE_POINT_VALUE;
    4418 
    4419         if (*vs > v) {
     4470        if (*from > 0xff || to > 0xff)
     4471          return ONIGERR_INVALID_CODE_POINT_VALUE;
     4472
     4473        if (*from > to) {
    44204474          if (IS_SYNTAX_BV(env->syntax, ONIG_SYN_ALLOW_EMPTY_RANGE_IN_CC))
    44214475            goto ccs_range_end;
     
    44234477            return ONIGERR_EMPTY_RANGE_IN_CHAR_CLASS;
    44244478        }
    4425         bitset_set_range(cc->bs, (int )*vs, (int )v);
     4479        bitset_set_range(env, cc->bs, (int )*from, (int )to);
    44264480        if (IS_NOT_NULL(asc_cc))
    4427           bitset_set_range(asc_cc->bs, (int )*vs, (int )v);
     4481          bitset_set_range(env, asc_cc->bs, (int )*from, (int )to);
    44284482      }
    44294483      else {
    4430         r = add_code_range(&(cc->mbuf), env, *vs, v);
     4484        r = add_code_range(&(cc->mbuf), env, *from, to);
    44314485        if (r < 0) return r;
    44324486        if (IS_NOT_NULL(asc_cc)) {
    4433           r = add_code_range(&(asc_cc->mbuf), env, *vs, v);
     4487          r = add_code_range0(&(asc_cc->mbuf), env, *from, to, 0);
    44344488          if (r < 0) return r;
    44354489        }
     
    44374491    }
    44384492    else {
    4439 #if 0
    4440       if (intype == CCV_CODE_POINT && *type == CCV_SB) {
    4441 #endif
    4442         if (*vs > v) {
    4443           if (IS_SYNTAX_BV(env->syntax, ONIG_SYN_ALLOW_EMPTY_RANGE_IN_CC))
    4444             goto ccs_range_end;
    4445           else
    4446             return ONIGERR_EMPTY_RANGE_IN_CHAR_CLASS;
    4447         }
    4448         bitset_set_range(cc->bs, (int )*vs, (int )(v < 0xff ? v : 0xff));
    4449         r = add_code_range(&(cc->mbuf), env, (OnigCodePoint )*vs, v);
     4493      if (*from > to) {
     4494        if (IS_SYNTAX_BV(env->syntax, ONIG_SYN_ALLOW_EMPTY_RANGE_IN_CC))
     4495          goto ccs_range_end;
     4496        else
     4497          return ONIGERR_EMPTY_RANGE_IN_CHAR_CLASS;
     4498      }
     4499      bitset_set_range(env, cc->bs, (int )*from, (int )(to < 0xff ? to : 0xff));
     4500      r = add_code_range(&(cc->mbuf), env, (OnigCodePoint )*from, to);
     4501      if (r < 0) return r;
     4502      if (IS_NOT_NULL(asc_cc)) {
     4503        bitset_set_range(env, asc_cc->bs, (int )*from, (int )(to < 0xff ? to : 0xff));
     4504        r = add_code_range0(&(asc_cc->mbuf), env, (OnigCodePoint )*from, to, 0);
    44504505        if (r < 0) return r;
    4451         if (IS_NOT_NULL(asc_cc)) {
    4452           bitset_set_range(asc_cc->bs, (int )*vs, (int )(v < 0xff ? v : 0xff));
    4453           r = add_code_range(&(asc_cc->mbuf), env, (OnigCodePoint )*vs, v);
    4454           if (r < 0) return r;
    4455         }
    4456 #if 0
    4457       }
    4458       else
    4459         return ONIGERR_MISMATCH_CODE_LENGTH_IN_CLASS_RANGE;
    4460 #endif
     4506      }
    44614507    }
    44624508  ccs_range_end:
     
    44734519  }
    44744520
    4475   *vs_israw = v_israw;
    4476   *vs       = v;
    4477   *type     = intype;
     4521  *from_israw = to_israw;
     4522  *from       = to;
     4523  *type       = intype;
    44784524  return 0;
    44794525}
     
    45194565  int val_israw, in_israw;
    45204566
     4567  *np = *asc_np = NULL_NODE;
     4568  env->parse_depth++;
     4569  if (env->parse_depth > ParseDepthLimit)
     4570    return ONIGERR_PARSE_DEPTH_LIMIT_OVER;
    45214571  prev_cc = asc_prev_cc = (CClassNode* )NULL;
    4522   *np = *asc_np = NULL_NODE;
    45234572  r = fetch_token_in_cc(tok, src, end, env);
    45244573  if (r == TK_CHAR && tok->u.c == '^' && tok->escaped == 0) {
     
    46024651        }
    46034652
    4604         len = enclen(env->enc, buf);
     4653        len = enclen(env->enc, buf, buf + i);
    46054654        if (i < len) {
    46064655          r = ONIGERR_TOO_SHORT_MULTI_BYTE_STRING;
     
    46104659          p = psave;
    46114660          for (i = 1; i < len; i++) {
    4612             r = fetch_token_in_cc(tok, &p, end, env);
     4661            (void)fetch_token_in_cc(tok, &p, end, env);
     4662            /* no need to check the retun value (already checked above) */
    46134663          }
    46144664          fetched = 0;
     
    47104760          goto range_end_val;
    47114761        }
     4762
     4763        if (val_type == CCV_CLASS) {
     4764          r = ONIGERR_UNMATCHED_RANGE_SPECIFIER_IN_CHAR_CLASS;
     4765          goto err;
     4766        }
     4767
    47124768        state = CCS_RANGE;
    47134769      }
     
    47574813        if (r == 0) {
    47584814          acc = NCCLASS(anode);
    4759           r = or_cclass(cc, acc, env->enc);
     4815          r = or_cclass(cc, acc, env);
    47604816        }
    47614817        if (r == 0 && IS_NOT_NULL(aasc_node)) {
    47624818          acc = NCCLASS(aasc_node);
    4763           r = or_cclass(asc_cc, acc, env->enc);
     4819          r = or_cclass(asc_cc, acc, env);
    47644820        }
    47654821        onig_node_free(anode);
     
    47814837
    47824838        if (IS_NOT_NULL(prev_cc)) {
    4783           r = and_cclass(prev_cc, cc, env->enc);
     4839          r = and_cclass(prev_cc, cc, env);
    47844840          if (r != 0) goto err;
    47854841          bbuf_free(cc->mbuf);
    47864842          if (IS_NOT_NULL(asc_cc)) {
    4787             r = and_cclass(asc_prev_cc, asc_cc, env->enc);
     4843            r = and_cclass(asc_prev_cc, asc_cc, env);
    47884844            if (r != 0) goto err;
    47894845            bbuf_free(asc_cc->mbuf);
     
    48294885
    48304886  if (IS_NOT_NULL(prev_cc)) {
    4831     r = and_cclass(prev_cc, cc, env->enc);
     4887    r = and_cclass(prev_cc, cc, env);
    48324888    if (r != 0) goto err;
    48334889    bbuf_free(cc->mbuf);
    48344890    cc = prev_cc;
    48354891    if (IS_NOT_NULL(asc_cc)) {
    4836       r = and_cclass(asc_prev_cc, asc_cc, env->enc);
     4892      r = and_cclass(asc_prev_cc, asc_cc, env);
    48374893      if (r != 0) goto err;
    48384894      bbuf_free(asc_cc->mbuf);
     
    48634919
    48644920      if (ONIGENC_IS_CODE_NEWLINE(env->enc, NEWLINE_CODE)) {
    4865         if (ONIGENC_CODE_TO_MBCLEN(env->enc, NEWLINE_CODE) == 1)
    4866           BITSET_SET_BIT(cc->bs, NEWLINE_CODE);
    4867         else {
    4868           r = add_code_range(&(cc->mbuf), env, NEWLINE_CODE, NEWLINE_CODE);
    4869           if (r < 0) goto err;
    4870         }
     4921        if (ONIGENC_CODE_TO_MBCLEN(env->enc, NEWLINE_CODE) == 1)
     4922          BITSET_SET_BIT_CHKDUP(cc->bs, NEWLINE_CODE);
     4923        else {
     4924          r = add_code_range(&(cc->mbuf), env, NEWLINE_CODE, NEWLINE_CODE);
     4925          if (r < 0) goto err;
     4926        }
    48714927      }
    48724928    }
    48734929  }
    48744930  *src = p;
     4931  env->parse_depth--;
    48754932  return 0;
    48764933
     
    49334990      *np = node_new_enclose(ENCLOSE_STOP_BACKTRACK);
    49344991      break;
     4992    case '~':   /* (?~...) absent operator */
     4993      if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_QMARK_TILDE_ABSENT)) {
     4994        *np = node_new_enclose(ENCLOSE_ABSENT);
     4995      }
     4996      else {
     4997        return ONIGERR_UNDEFINED_GROUP_OPTION;
     4998      }
     4999      break;
    49355000
    49365001#ifdef USE_NAMED_GROUP
     
    49435008      break;
    49445009
    4945 #ifdef USE_CAPITAL_P_NAMED_GROUP
     5010# ifdef USE_CAPITAL_P_NAMED_GROUP
    49465011    case 'P':   /* (?P<name>...) */
    4947       if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_QMARK_CAPITAL_P_NAMED_GROUP)) {
     5012      if (!PEND &&
     5013          IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_QMARK_CAPITAL_P_NAMED_GROUP)) {
    49485014        PFETCH(c);
    49495015        if (c == '<') goto named_group1;
     
    49515017      return ONIGERR_UNDEFINED_GROUP_OPTION;
    49525018      break;
     5019# endif
    49535020#endif
    4954 #endif
    49555021
    49565022    case '<':   /* look behind (?<=...), (?<!...) */
     5023      if (PEND) return ONIGERR_END_PATTERN_WITH_UNMATCHED_PARENTHESIS;
    49575024      PFETCH(c);
    49585025      if (c == '=')
     
    49725039          list_capture = 0;
    49735040
     5041# ifdef USE_CAPTURE_HISTORY
    49745042        named_group2:
     5043# endif
    49755044          name = p;
    49765045          r = fetch_name((OnigCodePoint )c, &p, end, &name_end, env, &num, 0);
     
    50025071      break;
    50035072
     5073#ifdef USE_CAPTURE_HISTORY
    50045074    case '@':
    50055075      if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_ATMARK_CAPTURE_HISTORY)) {
    5006 #ifdef USE_NAMED_GROUP
    5007         if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_QMARK_LT_NAMED_GROUP)) {
     5076# ifdef USE_NAMED_GROUP
     5077        if (!PEND &&
     5078            IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_QMARK_LT_NAMED_GROUP)) {
    50085079          PFETCH(c);
    50095080          if (c == '<' || c == '\'') {
     
    50135084          PUNFETCH;
    50145085        }
    5015 #endif
     5086# endif
    50165087        *np = node_new_enclose_memory(env->option, 0);
    50175088        CHECK_NULL_RETURN_MEMERR(*np);
     
    50285099      }
    50295100      break;
     5101#endif /* USE_CAPTURE_HISTORY */
    50305102
    50315103    case '(':   /* conditional expression: (?(cond)yes), (?(cond)yes|no) */
    5032       if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_QMARK_LPAREN_CONDITION)) {
     5104      if (!PEND &&
     5105          IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_QMARK_LPAREN_CONDITION)) {
    50335106        UChar *name = NULL;
    50345107        UChar *name_end;
     
    50485121          if (IS_SYNTAX_BV(env->syntax, ONIG_SYN_STRICT_CHECK_BACKREF)) {
    50495122            if (num > env->num_mem ||
    5050                 IS_NULL(SCANENV_MEM_NODES(env)[num]))
     5123                IS_NULL(SCANENV_MEM_NODES(env)[num]))
    50515124            return ONIGERR_INVALID_BACKREF;
    50525125          }
     
    50545127#ifdef USE_NAMED_GROUP
    50555128        else if (c == '<' || c == '\'') {    /* (<name>), ('name') */
    5056           int nums;
    5057           int *backs;
    5058 
    50595129          name = p;
    5060           r = fetch_name((OnigCodePoint )c, &p, end, &name_end, env, &num, 0);
     5130          r = fetch_named_backref_token(c, tok, &p, end, env);
    50615131          if (r < 0) return r;
    5062           PFETCH(c);
    5063           if (c != ')') return ONIGERR_UNDEFINED_GROUP_OPTION;
    5064 
    5065           nums = onig_name_to_group_numbers(env->reg, name, name_end, &backs);
    5066           if (nums <= 0) {
    5067             onig_scan_env_set_error_string(env,
    5068                      ONIGERR_UNDEFINED_NAME_REFERENCE, name, name_end);
    5069             return ONIGERR_UNDEFINED_NAME_REFERENCE;
     5132          if (!PPEEK_IS(')')) return ONIGERR_UNDEFINED_GROUP_OPTION;
     5133          PINC;
     5134
     5135          if (IS_SYNTAX_BV(env->syntax, ONIG_SYN_USE_LEFT_MOST_NAMED_GROUP)) {
     5136            num = tok->u.backref.ref1;
    50705137          }
    5071           if (IS_SYNTAX_BV(env->syntax, ONIG_SYN_STRICT_CHECK_BACKREF)) {
    5072             int i;
    5073             for (i = 0; i < nums; i++) {
    5074               if (backs[i] > env->num_mem ||
    5075                   IS_NULL(SCANENV_MEM_NODES(env)[backs[i]]))
    5076               return ONIGERR_INVALID_BACKREF;
    5077             }
     5138          else {
     5139            /* FIXME:
     5140             * Use left most named group for now. This is the same as Perl.
     5141             * However this should use the same strategy as normal back-
     5142             * references on Ruby syntax; search right to left. */
     5143            int len = tok->u.backref.num;
     5144            num = len > 1 ? tok->u.backref.refs[0] : tok->u.backref.ref1;
    50785145          }
    5079           num = backs[0];       /* XXX: use left most named group as Perl */
    50805146        }
    50815147#endif
     
    51025168
    51035169    case '^':   /* loads default options */
    5104       if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_OPTION_PERL)) {
     5170      if (!PEND && IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_OPTION_PERL)) {
    51055171        /* d-imsx */
    51065172        ONOFF(option, ONIG_OPTION_ASCII_RANGE, 1);
     
    51125178      }
    51135179#if 0
    5114       else if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_OPTION_RUBY)) {
     5180      else if (!PEND && IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_OPTION_RUBY)) {
    51155181        /* d-imx */
    51165182        ONOFF(option, ONIG_OPTION_ASCII_RANGE, 0);
     
    51705236          case 'a':     /* limits \d, \s, \w and POSIX brackets to ASCII range */
    51715237            if ((IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_OPTION_PERL) ||
    5172                 IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_OPTION_RUBY)) &&
    5173                 (neg == 0)) {
     5238                IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_OPTION_RUBY)) &&
     5239                (neg == 0)) {
    51745240              ONOFF(option, ONIG_OPTION_ASCII_RANGE, 0);
    51755241              ONOFF(option, ONIG_OPTION_POSIX_BRACKET_ALL_RANGE, 1);
     
    51825248          case 'u':
    51835249            if ((IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_OPTION_PERL) ||
    5184                 IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_OPTION_RUBY)) &&
    5185                 (neg == 0)) {
     5250                IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_OPTION_RUBY)) &&
     5251                (neg == 0)) {
    51865252              ONOFF(option, ONIG_OPTION_ASCII_RANGE, 1);
    51875253              ONOFF(option, ONIG_OPTION_POSIX_BRACKET_ALL_RANGE, 1);
     
    51945260          case 'd':
    51955261            if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_OPTION_PERL) &&
    5196                 (neg == 0)) {
     5262                (neg == 0)) {
    51975263              ONOFF(option, ONIG_OPTION_ASCII_RANGE, 1);
    51985264            }
    51995265            else if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_OPTION_RUBY) &&
    5200                 (neg == 0)) {
     5266                (neg == 0)) {
    52015267              ONOFF(option, ONIG_OPTION_ASCII_RANGE, 0);
    52025268              ONOFF(option, ONIG_OPTION_POSIX_BRACKET_ALL_RANGE, 0);
     
    52285294            OnigOptionType prev = env->option;
    52295295
    5230             env->option     = option;
     5296            env->option = option;
    52315297            r = fetch_token(tok, &p, end, env);
    5232             if (r < 0) return r;
     5298            if (r < 0) {
     5299              env->option = prev;
     5300              return r;
     5301            }
    52335302            r = parse_subexp(&target, tok, term, &p, end, env);
    52345303            env->option = prev;
     
    53455414
    53465415#ifdef USE_WARNING_REDUNDANT_NESTED_REPEAT_OPERATOR
    5347       if (!IS_QUANTIFIER_BY_NUMBER(qn) && !IS_QUANTIFIER_BY_NUMBER(qnt) &&
     5416      if (nestq_num >= 0 && targetq_num >= 0 &&
    53485417          IS_SYNTAX_BV(env->syntax, ONIG_SYN_WARN_REDUNDANT_NESTED_REPEAT)) {
    5349         UChar buf[WARN_BUFSIZE];
    5350 
    5351         switch (ReduceTypeTable[targetq_num][nestq_num]) {
    5352         case RQ_ASIS:
    5353           break;
    5354 
    5355         case RQ_DEL:
    5356           if (onig_verb_warn != onig_null_warn) {
    5357             onig_snprintf_with_pattern(buf, WARN_BUFSIZE, env->enc,
    5358                                  env->pattern, env->pattern_end,
    5359                                  (UChar* )"redundant nested repeat operator");
    5360             (*onig_verb_warn)((char* )buf);
    5361           }
    5362           goto warn_exit;
    5363           break;
    5364 
    5365         default:
    5366           if (onig_verb_warn != onig_null_warn) {
    5367             onig_snprintf_with_pattern(buf, WARN_BUFSIZE, env->enc,
    5368                                        env->pattern, env->pattern_end,
    5369             (UChar* )"nested repeat operator %s and %s was replaced with '%s'",
    5370             PopularQStr[targetq_num], PopularQStr[nestq_num],
    5371             ReduceQStr[ReduceTypeTable[targetq_num][nestq_num]]);
    5372             (*onig_verb_warn)((char* )buf);
    5373           }
    5374           goto warn_exit;
    5375           break;
    5376         }
     5418        switch (ReduceTypeTable[targetq_num][nestq_num]) {
     5419        case RQ_ASIS:
     5420          break;
     5421
     5422        case RQ_DEL:
     5423          if (onig_warn != onig_null_warn) {
     5424            onig_syntax_warn(env, "regular expression has redundant nested repeat operator '%s'",
     5425                PopularQStr[targetq_num]);
     5426          }
     5427          goto warn_exit;
     5428          break;
     5429
     5430        default:
     5431          if (onig_warn != onig_null_warn) {
     5432            onig_syntax_warn(env, "nested repeat operator '%s' and '%s' was replaced with '%s' in regular expression",
     5433                PopularQStr[targetq_num], PopularQStr[nestq_num],
     5434                ReduceQStr[ReduceTypeTable[targetq_num][nestq_num]]);
     5435          }
     5436          goto warn_exit;
     5437          break;
     5438        }
    53775439      }
    53785440
     
    54025464  return 0;
    54035465}
    5404 
    5405 
    5406 #ifdef USE_SHARED_CCLASS_TABLE
    5407 
    5408 #define THRESHOLD_RANGE_NUM_FOR_SHARE_CCLASS     8
    5409 
    5410 /* for ctype node hash table */
    5411 
    5412 typedef struct {
    5413   OnigEncoding enc;
    5414   int not;
    5415   int type;
    5416 } type_cclass_key;
    5417 
    5418 static int type_cclass_cmp(type_cclass_key* x, type_cclass_key* y)
    5419 {
    5420   if (x->type != y->type) return 1;
    5421   if (x->enc  != y->enc)  return 1;
    5422   if (x->not  != y->not)  return 1;
    5423   return 0;
    5424 }
    5425 
    5426 static int type_cclass_hash(type_cclass_key* key)
    5427 {
    5428   int i, val;
    5429   UChar *p;
    5430 
    5431   val = 0;
    5432 
    5433   p = (UChar* )&(key->enc);
    5434   for (i = 0; i < (int )sizeof(key->enc); i++) {
    5435     val = val * 997 + (int )*p++;
    5436   }
    5437 
    5438   p = (UChar* )(&key->type);
    5439   for (i = 0; i < (int )sizeof(key->type); i++) {
    5440     val = val * 997 + (int )*p++;
    5441   }
    5442 
    5443   val += key->not;
    5444   return val + (val >> 5);
    5445 }
    5446 
    5447 static struct st_hash_type type_type_cclass_hash = {
    5448     type_cclass_cmp,
    5449     type_cclass_hash,
    5450 };
    5451 
    5452 static st_table* OnigTypeCClassTable;
    5453 
    5454 
    5455 static int
    5456 i_free_shared_class(type_cclass_key* key, Node* node, void* arg ARG_UNUSED)
    5457 {
    5458   if (IS_NOT_NULL(node)) {
    5459     CClassNode* cc = NCCLASS(node);
    5460     if (IS_NOT_NULL(cc->mbuf)) xfree(cc->mbuf);
    5461     xfree(node);
    5462   }
    5463 
    5464   if (IS_NOT_NULL(key)) xfree(key);
    5465   return ST_DELETE;
    5466 }
    5467 
    5468 extern int
    5469 onig_free_shared_cclass_table(void)
    5470 {
    5471   /* THREAD_ATOMIC_START; */
    5472   if (IS_NOT_NULL(OnigTypeCClassTable)) {
    5473     onig_st_foreach(OnigTypeCClassTable, i_free_shared_class, 0);
    5474     onig_st_free_table(OnigTypeCClassTable);
    5475     OnigTypeCClassTable = NULL;
    5476   }
    5477   /* THREAD_ATOMIC_END; */
    5478 
    5479   return 0;
    5480 }
    5481 
    5482 #endif /* USE_SHARED_CCLASS_TABLE */
    54835466
    54845467
     
    55255508  CClassNode* asc_cc;
    55265509  BitSetRef bs;
    5527   int add_flag;
     5510  int add_flag, r;
    55285511
    55295512  iarg = (IApplyCaseFoldArg* )arg;
     
    55525535      if (add_flag) {
    55535536        if (ONIGENC_MBC_MINLEN(env->enc) > 1 || *to >= SINGLE_BYTE_SIZE) {
    5554           add_code_range(&(cc->mbuf), env, *to, *to);
     5537          r = add_code_range0(&(cc->mbuf), env, *to, *to, 0);
     5538          if (r < 0) return r;
    55555539        }
    55565540        else {
     
    55645548        if (ONIGENC_MBC_MINLEN(env->enc) > 1 || *to >= SINGLE_BYTE_SIZE) {
    55655549          if (IS_NCCLASS_NOT(cc)) clear_not_flag_cclass(cc, env->enc);
    5566           add_code_range(&(cc->mbuf), env, *to, *to);
     5550          r = add_code_range0(&(cc->mbuf), env, *to, *to, 0);
     5551          if (r < 0) return r;
    55675552        }
    55685553        else {
     
    56545639  Node* target2 = NULL;
    56555640  CClassNode* cc;
    5656   int num1, num2;
     5641  int num1, num2, r;
    56575642  UChar buf[ONIGENC_CODE_TO_MBC_MAXLEN * 2];
    56585643
     
    56705655  cc = NCCLASS(right);
    56715656  if (ONIGENC_MBC_MINLEN(env->enc) > 1) {
    5672     add_code_range(&(cc->mbuf), env, 0x0A, 0x0D);
     5657    r = add_code_range(&(cc->mbuf), env, 0x0A, 0x0D);
     5658    if (r != 0) goto err;
    56735659  }
    56745660  else {
    5675     bitset_set_range(cc->bs, 0x0A, 0x0D);
     5661    bitset_set_range(env, cc->bs, 0x0A, 0x0D);
    56765662  }
    56775663
     
    56795665  if (ONIGENC_IS_UNICODE(env->enc)) {
    56805666    /* UTF-8, UTF-16BE/LE, UTF-32BE/LE */
    5681     add_code_range(&(cc->mbuf), env, 0x85, 0x85);
    5682     add_code_range(&(cc->mbuf), env, 0x2028, 0x2029);
     5667    r = add_code_range(&(cc->mbuf), env, 0x85, 0x85);
     5668    if (r != 0) goto err;
     5669    r = add_code_range(&(cc->mbuf), env, 0x2028, 0x2029);
     5670    if (r != 0) goto err;
    56835671  }
    56845672
     
    57075695
    57085696static int
     5697propname2ctype(ScanEnv* env, const char* propname)
     5698{
     5699  UChar* name = (UChar* )propname;
     5700  int ctype = env->enc->property_name_to_ctype(ONIG_ENCODING_ASCII,
     5701      name, name + strlen(propname));
     5702  return ctype;
     5703}
     5704
     5705static int
    57095706node_extended_grapheme_cluster(Node** np, ScanEnv* env)
    57105707{
    5711   /* same as (?>\P{M}\p{M}*) */
     5708  Node* tmp = NULL;
    57125709  Node* np1 = NULL;
    5713   Node* np2 = NULL;
    5714   Node* qn = NULL;
    5715   Node* list1 = NULL;
     5710  Node* list = NULL;
    57165711  Node* list2 = NULL;
     5712  Node* alt = NULL;
     5713  Node* alt2 = NULL;
     5714  BBuf *pbuf1 = NULL;
    57175715  int r = 0;
     5716  int num1;
     5717  UChar buf[ONIGENC_CODE_TO_MBC_MAXLEN * 2];
     5718  OnigOptionType option;
    57185719
    57195720#ifdef USE_UNICODE_PROPERTIES
    57205721  if (ONIGENC_IS_UNICODE(env->enc)) {
    57215722    /* UTF-8, UTF-16BE/LE, UTF-32BE/LE */
    5722     CClassNode* cc1;
    5723     CClassNode* cc2;
    5724     UChar* propname = (UChar* )"M";
    5725     int ctype = env->enc->property_name_to_ctype(ONIG_ENCODING_ASCII,
    5726         propname, propname + 1);
    5727     if (ctype >= 0) {
    5728       /* \P{M} */
    5729       np1 = node_new_cclass();
    5730       if (IS_NULL(np1)) goto err;
    5731       cc1 = NCCLASS(np1);
    5732       r = add_ctype_to_cc(cc1, ctype, 0, 0, env);
     5723    CClassNode* cc;
     5724    OnigCodePoint sb_out = (ONIGENC_MBC_MINLEN(env->enc) > 1) ? 0x00 : 0x80;
     5725    int extend = propname2ctype(env, "Grapheme_Cluster_Break=Extend");
     5726
     5727    /* Prepend*
     5728     * ( RI-sequence | Hangul-Syllable | !Control )
     5729     * ( Grapheme_Extend | SpacingMark )* */
     5730
     5731    /* ( Grapheme_Extend | SpacingMark )* */
     5732    np1 = node_new_cclass();
     5733    if (IS_NULL(np1)) goto err;
     5734    cc = NCCLASS(np1);
     5735    r = add_ctype_to_cc(cc, extend, 0, 0, env);
     5736    if (r != 0) goto err;
     5737    r = add_ctype_to_cc(cc, propname2ctype(env, "Grapheme_Cluster_Break=SpacingMark"), 0, 0, env);
     5738    if (r != 0) goto err;
     5739    r = add_code_range(&(cc->mbuf), env, 0x200D, 0x200D);
     5740    if (r != 0) goto err;
     5741
     5742    tmp = node_new_quantifier(0, REPEAT_INFINITE, 0);
     5743    if (IS_NULL(tmp)) goto err;
     5744    NQTFR(tmp)->target = np1;
     5745    np1 = tmp;
     5746
     5747    tmp = node_new_list(np1, NULL_NODE);
     5748    if (IS_NULL(tmp)) goto err;
     5749    list = tmp;
     5750    np1 = NULL;
     5751
     5752    /* ( RI-sequence | Hangul-Syllable | !Control ) */
     5753    /* !Control */
     5754    np1 = node_new_cclass();
     5755    if (IS_NULL(np1)) goto err;
     5756    cc = NCCLASS(np1);
     5757    r = add_ctype_to_cc(cc, propname2ctype(env, "Grapheme_Cluster_Break=Control"), 1, 0, env);
     5758    if (r != 0) goto err;
     5759    if (ONIGENC_MBC_MINLEN(env->enc) > 1) {
     5760      BBuf *pbuf2 = NULL;
     5761      r = add_code_range(&pbuf1, env, 0x0a, 0x0a);
    57335762      if (r != 0) goto err;
    5734       NCCLASS_SET_NOT(cc1);
    5735 
    5736       /* \p{M}* */
    5737       np2 = node_new_cclass();
    5738       if (IS_NULL(np2)) goto err;
    5739       cc2 = NCCLASS(np2);
    5740       r = add_ctype_to_cc(cc2, ctype, 0, 0, env);
     5763      r = add_code_range(&pbuf1, env, 0x0d, 0x0d);
    57415764      if (r != 0) goto err;
    5742 
    5743       qn = node_new_quantifier(0, REPEAT_INFINITE, 0);
    5744       if (IS_NULL(qn)) goto err;
    5745       NQTFR(qn)->target = np2;
    5746       np2 = NULL;
    5747 
    5748       /* \P{M}\p{M}* */
    5749       list2 = node_new_list(qn, NULL_NODE);
    5750       if (IS_NULL(list2)) goto err;
    5751       qn = NULL;
    5752       list1 = node_new_list(np1, list2);
    5753       if (IS_NULL(list1)) goto err;
    5754       np1 = NULL;
    5755       list2 = NULL;
    5756 
    5757       /* (?>...) */
    5758       *np = node_new_enclose(ENCLOSE_STOP_BACKTRACK);
    5759       if (IS_NULL(*np)) goto err;
    5760       NENCLOSE(*np)->target = list1;
    5761       return ONIG_NORMAL;
    5762     }
    5763   }
    5764 #endif /* USE_UNICODE_PROPERTIES */
    5765   if (IS_NULL(*np)) {
     5765      r = and_code_range_buf(cc->mbuf, 0, pbuf1, 1, &pbuf2, env);
     5766      if (r != 0) {
     5767        bbuf_free(pbuf2);
     5768        goto err;
     5769      }
     5770      bbuf_free(pbuf1);
     5771      pbuf1 = NULL;
     5772      bbuf_free(cc->mbuf);
     5773      cc->mbuf = pbuf2;
     5774    }
     5775    else {
     5776      BITSET_CLEAR_BIT(cc->bs, 0x0a);
     5777      BITSET_CLEAR_BIT(cc->bs, 0x0d);
     5778    }
     5779
     5780    tmp = onig_node_new_alt(np1, NULL_NODE);
     5781    if (IS_NULL(tmp)) goto err;
     5782    alt = tmp;
     5783    np1 = NULL;
     5784
     5785    /* Hangul-Syllable
     5786     *  := L* V+ T*
     5787     *  | L* LV V* T*
     5788     *  | L* LVT T*
     5789     *  | L+
     5790     *  | T+ */
     5791
     5792    /* T+ */
     5793    np1 = node_new_cclass();
     5794    if (IS_NULL(np1)) goto err;
     5795    cc = NCCLASS(np1);
     5796    r = add_ctype_to_cc(cc, propname2ctype(env, "Grapheme_Cluster_Break=T"), 0, 0, env);
     5797    if (r != 0) goto err;
     5798
     5799    tmp = node_new_quantifier(1, REPEAT_INFINITE, 0);
     5800    if (IS_NULL(tmp)) goto err;
     5801    NQTFR(tmp)->target = np1;
     5802    np1 = tmp;
     5803
     5804    tmp = onig_node_new_alt(np1, alt);
     5805    if (IS_NULL(tmp)) goto err;
     5806    alt = tmp;
     5807    np1 = NULL;
     5808
     5809    /* L+ */
     5810    np1 = node_new_cclass();
     5811    if (IS_NULL(np1)) goto err;
     5812    cc = NCCLASS(np1);
     5813    r = add_ctype_to_cc(cc, propname2ctype(env, "Grapheme_Cluster_Break=L"), 0, 0, env);
     5814    if (r != 0) goto err;
     5815
     5816    tmp = node_new_quantifier(1, REPEAT_INFINITE, 0);
     5817    if (IS_NULL(tmp)) goto err;
     5818    NQTFR(tmp)->target = np1;
     5819    np1 = tmp;
     5820
     5821    tmp = onig_node_new_alt(np1, alt);
     5822    if (IS_NULL(tmp)) goto err;
     5823    alt = tmp;
     5824    np1 = NULL;
     5825
     5826    /* L* LVT T* */
     5827    np1 = node_new_cclass();
     5828    if (IS_NULL(np1)) goto err;
     5829    cc = NCCLASS(np1);
     5830    r = add_ctype_to_cc(cc, propname2ctype(env, "Grapheme_Cluster_Break=T"), 0, 0, env);
     5831    if (r != 0) goto err;
     5832
     5833    tmp = node_new_quantifier(0, REPEAT_INFINITE, 0);
     5834    if (IS_NULL(tmp)) goto err;
     5835    NQTFR(tmp)->target = np1;
     5836    np1 = tmp;
     5837
     5838    tmp = node_new_list(np1, NULL_NODE);
     5839    if (IS_NULL(tmp)) goto err;
     5840    list2 = tmp;
     5841    np1 = NULL;
     5842
     5843    np1 = node_new_cclass();
     5844    if (IS_NULL(np1)) goto err;
     5845    cc = NCCLASS(np1);
     5846    r = add_ctype_to_cc(cc, propname2ctype(env, "Grapheme_Cluster_Break=LVT"), 0, 0, env);
     5847    if (r != 0) goto err;
     5848
     5849    tmp = node_new_list(np1, list2);
     5850    if (IS_NULL(tmp)) goto err;
     5851    list2 = tmp;
     5852    np1 = NULL;
     5853
     5854    np1 = node_new_cclass();
     5855    if (IS_NULL(np1)) goto err;
     5856    cc = NCCLASS(np1);
     5857    r = add_ctype_to_cc(cc, propname2ctype(env, "Grapheme_Cluster_Break=L"), 0, 0, env);
     5858    if (r != 0) goto err;
     5859
     5860    tmp = node_new_quantifier(0, REPEAT_INFINITE, 0);
     5861    if (IS_NULL(tmp)) goto err;
     5862    NQTFR(tmp)->target = np1;
     5863    np1 = tmp;
     5864
     5865    tmp = node_new_list(np1, list2);
     5866    if (IS_NULL(tmp)) goto err;
     5867    list2 = tmp;
     5868    np1 = NULL;
     5869
     5870    tmp = onig_node_new_alt(list2, alt);
     5871    if (IS_NULL(tmp)) goto err;
     5872    alt = tmp;
     5873    list2 = NULL;
     5874
     5875    /* L* LV V* T* */
     5876    np1 = node_new_cclass();
     5877    if (IS_NULL(np1)) goto err;
     5878    cc = NCCLASS(np1);
     5879    r = add_ctype_to_cc(cc, propname2ctype(env, "Grapheme_Cluster_Break=T"), 0, 0, env);
     5880    if (r != 0) goto err;
     5881
     5882    tmp = node_new_quantifier(0, REPEAT_INFINITE, 0);
     5883    if (IS_NULL(tmp)) goto err;
     5884    NQTFR(tmp)->target = np1;
     5885    np1 = tmp;
     5886
     5887    tmp = node_new_list(np1, NULL_NODE);
     5888    if (IS_NULL(tmp)) goto err;
     5889    list2 = tmp;
     5890    np1 = NULL;
     5891
     5892    np1 = node_new_cclass();
     5893    if (IS_NULL(np1)) goto err;
     5894    cc = NCCLASS(np1);
     5895    r = add_ctype_to_cc(cc, propname2ctype(env, "Grapheme_Cluster_Break=V"), 0, 0, env);
     5896    if (r != 0) goto err;
     5897
     5898    tmp = node_new_quantifier(0, REPEAT_INFINITE, 0);
     5899    if (IS_NULL(tmp)) goto err;
     5900    NQTFR(tmp)->target = np1;
     5901    np1 = tmp;
     5902
     5903    tmp = node_new_list(np1, list2);
     5904    if (IS_NULL(tmp)) goto err;
     5905    list2 = tmp;
     5906    np1 = NULL;
     5907
     5908    np1 = node_new_cclass();
     5909    if (IS_NULL(np1)) goto err;
     5910    cc = NCCLASS(np1);
     5911    r = add_ctype_to_cc(cc, propname2ctype(env, "Grapheme_Cluster_Break=LV"), 0, 0, env);
     5912    if (r != 0) goto err;
     5913
     5914    tmp = node_new_list(np1, list2);
     5915    if (IS_NULL(tmp)) goto err;
     5916    list2 = tmp;
     5917    np1 = NULL;
     5918
     5919    np1 = node_new_cclass();
     5920    if (IS_NULL(np1)) goto err;
     5921    cc = NCCLASS(np1);
     5922    r = add_ctype_to_cc(cc, propname2ctype(env, "Grapheme_Cluster_Break=L"), 0, 0, env);
     5923    if (r != 0) goto err;
     5924
     5925    tmp = node_new_quantifier(0, REPEAT_INFINITE, 0);
     5926    if (IS_NULL(tmp)) goto err;
     5927    NQTFR(tmp)->target = np1;
     5928    np1 = tmp;
     5929
     5930    tmp = node_new_list(np1, list2);
     5931    if (IS_NULL(tmp)) goto err;
     5932    list2 = tmp;
     5933    np1 = NULL;
     5934
     5935    tmp = onig_node_new_alt(list2, alt);
     5936    if (IS_NULL(tmp)) goto err;
     5937    alt = tmp;
     5938    list2 = NULL;
     5939
     5940    /* L* V+ T* */
     5941    np1 = node_new_cclass();
     5942    if (IS_NULL(np1)) goto err;
     5943    cc = NCCLASS(np1);
     5944    r = add_ctype_to_cc(cc, propname2ctype(env, "Grapheme_Cluster_Break=T"), 0, 0, env);
     5945    if (r != 0) goto err;
     5946
     5947    tmp = node_new_quantifier(0, REPEAT_INFINITE, 0);
     5948    if (IS_NULL(tmp)) goto err;
     5949    NQTFR(tmp)->target = np1;
     5950    np1 = tmp;
     5951
     5952    tmp = node_new_list(np1, NULL_NODE);
     5953    if (IS_NULL(tmp)) goto err;
     5954    list2 = tmp;
     5955    np1 = NULL;
     5956
     5957    np1 = node_new_cclass();
     5958    if (IS_NULL(np1)) goto err;
     5959    cc = NCCLASS(np1);
     5960    r = add_ctype_to_cc(cc, propname2ctype(env, "Grapheme_Cluster_Break=V"), 0, 0, env);
     5961    if (r != 0) goto err;
     5962
     5963    tmp = node_new_quantifier(1, REPEAT_INFINITE, 0);
     5964    if (IS_NULL(tmp)) goto err;
     5965    NQTFR(tmp)->target = np1;
     5966    np1 = tmp;
     5967
     5968    tmp = node_new_list(np1, list2);
     5969    if (IS_NULL(tmp)) goto err;
     5970    list2 = tmp;
     5971    np1 = NULL;
     5972
     5973    np1 = node_new_cclass();
     5974    if (IS_NULL(np1)) goto err;
     5975    cc = NCCLASS(np1);
     5976    r = add_ctype_to_cc(cc, propname2ctype(env, "Grapheme_Cluster_Break=L"), 0, 0, env);
     5977    if (r != 0) goto err;
     5978
     5979    tmp = node_new_quantifier(0, REPEAT_INFINITE, 0);
     5980    if (IS_NULL(tmp)) goto err;
     5981    NQTFR(tmp)->target = np1;
     5982    np1 = tmp;
     5983
     5984    tmp = node_new_list(np1, list2);
     5985    if (IS_NULL(tmp)) goto err;
     5986    list2 = tmp;
     5987    np1 = NULL;
     5988
     5989    tmp = onig_node_new_alt(list2, alt);
     5990    if (IS_NULL(tmp)) goto err;
     5991    alt = tmp;
     5992    list2 = NULL;
     5993
     5994    /* Emoji sequence := (E_Base | EBG) Extend* E_Modifier?
     5995     *                   (ZWJ (Glue_After_Zwj | EBG Extend* E_Modifier?) )* */
     5996
     5997    /* ZWJ (Glue_After_Zwj | E_Base_GAZ Extend* E_Modifier?) */
     5998    np1 = node_new_cclass();
     5999    if (IS_NULL(np1)) goto err;
     6000    cc = NCCLASS(np1);
     6001    r = add_ctype_to_cc(cc, propname2ctype(env, "Grapheme_Cluster_Break=E_Modifier"), 0, 0, env);
     6002    if (r != 0) goto err;
     6003
     6004    tmp = node_new_quantifier(0, 1, 0);
     6005    if (IS_NULL(tmp)) goto err;
     6006    NQTFR(tmp)->target = np1;
     6007    np1 = tmp;
     6008
     6009    tmp = node_new_list(np1, NULL_NODE);
     6010    if (IS_NULL(tmp)) goto err;
     6011    list2 = tmp;
     6012    np1 = NULL;
     6013
     6014    np1 = node_new_cclass();
     6015    if (IS_NULL(np1)) goto err;
     6016    cc = NCCLASS(np1);
     6017    r = add_ctype_to_cc(cc, extend, 0, 0, env);
     6018    if (r != 0) goto err;
     6019
     6020    tmp = node_new_quantifier(0, REPEAT_INFINITE, 0);
     6021    if (IS_NULL(tmp)) goto err;
     6022    NQTFR(tmp)->target = np1;
     6023    np1 = tmp;
     6024
     6025    tmp = node_new_list(np1, list2);
     6026    if (IS_NULL(tmp)) goto err;
     6027    list2 = tmp;
     6028    np1 = NULL;
     6029
     6030    np1 = node_new_cclass();
     6031    if (IS_NULL(np1)) goto err;
     6032    cc = NCCLASS(np1);
     6033    r = add_ctype_to_cc(cc, propname2ctype(env, "Grapheme_Cluster_Break=E_Base_GAZ"), 0, 0, env);
     6034    if (r != 0) goto err;
     6035
     6036    tmp = node_new_list(np1, list2);
     6037    if (IS_NULL(tmp)) goto err;
     6038    list2 = tmp;
     6039    np1 = NULL;
     6040
     6041    tmp = onig_node_new_alt(list2, NULL_NODE);
     6042    if (IS_NULL(tmp)) goto err;
     6043    alt2 = tmp;
     6044    list2 = NULL;
     6045
     6046    /* Glue_After_Zwj */
     6047    np1 = node_new_cclass();
     6048    if (IS_NULL(np1)) goto err;
     6049    cc = NCCLASS(np1);
     6050    r = add_ctype_to_cc(cc, extend, 0, 0, env);
     6051    if (r != 0) goto err;
     6052
     6053    tmp = node_new_quantifier(0, REPEAT_INFINITE, 0);
     6054    if (IS_NULL(tmp)) goto err;
     6055    NQTFR(tmp)->target = np1;
     6056    np1 = tmp;
     6057
     6058    tmp = node_new_list(np1, NULL_NODE);
     6059    if (IS_NULL(tmp)) goto err;
     6060    list2 = tmp;
     6061    np1 = NULL;
     6062
     6063    np1 = node_new_cclass();
     6064    if (IS_NULL(np1)) goto err;
     6065    cc = NCCLASS(np1);
     6066    {
     6067      static const OnigCodePoint ranges[] = {
     6068        13,
     6069        0x1F308, 0x1F308,
     6070        0x1F33E, 0x1F33E,
     6071        0x1F373, 0x1F373,
     6072        0x1F393, 0x1F393,
     6073        0x1F3A4, 0x1F3A4,
     6074        0x1F3A8, 0x1F3A8,
     6075        0x1F3EB, 0x1F3EB,
     6076        0x1F3ED, 0x1F3ED,
     6077        0x1F4BB, 0x1F4BC,
     6078        0x1F527, 0x1F527,
     6079        0x1F52C, 0x1F52C,
     6080        0x1F680, 0x1F680,
     6081        0x1F692, 0x1F692,
     6082      };
     6083      r = add_ctype_to_cc_by_range(cc, -1, 0, env, sb_out, ranges);
     6084      if (r != 0) goto err;
     6085    }
     6086    r = add_ctype_to_cc(cc, propname2ctype(env, "Grapheme_Cluster_Break=Glue_After_Zwj"), 0, 0, env);
     6087    if (r != 0) goto err;
     6088
     6089    tmp = node_new_list(np1, list2);
     6090    if (IS_NULL(tmp)) goto err;
     6091    list2 = tmp;
     6092    np1 = NULL;
     6093
     6094    tmp = onig_node_new_alt(list2, alt2);
     6095    if (IS_NULL(tmp)) goto err;
     6096    alt2 = tmp;
     6097    list2 = NULL;
     6098
     6099    /* Emoji variation sequence
     6100     * http://unicode.org/Public/emoji/4.0/emoji-zwj-sequences.txt
     6101     */
     6102    r = ONIGENC_CODE_TO_MBC(env->enc, 0xfe0f, buf);
     6103    if (r < 0) goto err;
     6104    np1 = node_new_str_raw(buf, buf + r);
     6105    if (IS_NULL(np1)) goto err;
     6106
     6107    tmp = node_new_quantifier(0, 1, 0);
     6108    if (IS_NULL(tmp)) goto err;
     6109    NQTFR(tmp)->target = np1;
     6110    np1 = tmp;
     6111
     6112    tmp = node_new_list(np1, NULL_NODE);
     6113    if (IS_NULL(tmp)) goto err;
     6114    list2 = tmp;
     6115    np1 = NULL;
     6116
     6117    np1 = node_new_cclass();
     6118    if (IS_NULL(np1)) goto err;
     6119    cc = NCCLASS(np1);
     6120    {
     6121      static const OnigCodePoint ranges[] = {
     6122        4,
     6123        0x2640, 0x2640,
     6124        0x2642, 0x2642,
     6125        0x2695, 0x2696,
     6126        0x2708, 0x2708,
     6127      };
     6128      r = add_ctype_to_cc_by_range(cc, -1, 0, env, sb_out, ranges);
     6129      if (r != 0) goto err;
     6130    }
     6131
     6132    tmp = node_new_list(np1, list2);
     6133    if (IS_NULL(tmp)) goto err;
     6134    list2 = tmp;
     6135    np1 = NULL;
     6136
     6137    tmp = onig_node_new_alt(list2, alt2);
     6138    if (IS_NULL(tmp)) goto err;
     6139    alt2 = tmp;
     6140    list2 = NULL;
     6141
     6142    tmp = node_new_list(alt2, NULL_NODE);
     6143    if (IS_NULL(tmp)) goto err;
     6144    list2 = tmp;
     6145    alt2 = NULL;
     6146
     6147    /* ZWJ */
     6148    r = ONIGENC_CODE_TO_MBC(env->enc, 0x200D, buf);
     6149    if (r < 0) goto err;
     6150    np1 = node_new_str_raw(buf, buf + r);
     6151    if (IS_NULL(np1)) goto err;
     6152
     6153    tmp = node_new_list(np1, list2);
     6154    if (IS_NULL(tmp)) goto err;
     6155    list2 = tmp;
     6156    np1 = NULL;
     6157
     6158    tmp = node_new_quantifier(0, REPEAT_INFINITE, 0);
     6159    if (IS_NULL(tmp)) goto err;
     6160    NQTFR(tmp)->target = list2;
     6161    np1 = tmp;
     6162    list2 = NULL;
     6163
     6164    tmp = node_new_list(np1, NULL_NODE);
     6165    if (IS_NULL(tmp)) goto err;
     6166    list2 = tmp;
     6167    np1 = NULL;
     6168
     6169    /* E_Modifier? */
     6170    np1 = node_new_cclass();
     6171    if (IS_NULL(np1)) goto err;
     6172    cc = NCCLASS(np1);
     6173    r = add_ctype_to_cc(cc, propname2ctype(env, "Grapheme_Cluster_Break=E_Modifier"), 0, 0, env);
     6174    if (r != 0) goto err;
     6175
     6176    tmp = node_new_quantifier(0, 1, 0);
     6177    if (IS_NULL(tmp)) goto err;
     6178    NQTFR(tmp)->target = np1;
     6179    np1 = tmp;
     6180
     6181    tmp = node_new_list(np1, list2);
     6182    if (IS_NULL(tmp)) goto err;
     6183    list2 = tmp;
     6184    np1 = NULL;
     6185
     6186    /* Extend* */
     6187    np1 = node_new_cclass();
     6188    if (IS_NULL(np1)) goto err;
     6189    cc = NCCLASS(np1);
     6190    r = add_ctype_to_cc(cc, extend, 0, 0, env);
     6191    if (r != 0) goto err;
     6192
     6193    tmp = node_new_quantifier(0, REPEAT_INFINITE, 0);
     6194    if (IS_NULL(tmp)) goto err;
     6195    NQTFR(tmp)->target = np1;
     6196    np1 = tmp;
     6197
     6198    tmp = node_new_list(np1, list2);
     6199    if (IS_NULL(tmp)) goto err;
     6200    list2 = tmp;
     6201    np1 = NULL;
     6202
     6203    /* (E_Base | EBG) */
     6204    np1 = node_new_cclass();
     6205    if (IS_NULL(np1)) goto err;
     6206    cc = NCCLASS(np1);
     6207    {
     6208      static const OnigCodePoint ranges[] = {
     6209        8,
     6210        0x1F3C2, 0x1F3C2,
     6211        0x1F3C7, 0x1F3C7,
     6212        0x1F3CC, 0x1F3CC,
     6213        0x1F3F3, 0x1F3F3,
     6214        0x1F441, 0x1F441,
     6215        0x1F46F, 0x1F46F,
     6216        0x1F574, 0x1F574,
     6217        0x1F6CC, 0x1F6CC,
     6218      };
     6219      r = add_ctype_to_cc_by_range(cc, -1, 0, env, sb_out, ranges);
     6220      if (r != 0) goto err;
     6221    }
     6222    r = add_ctype_to_cc(cc, propname2ctype(env, "Grapheme_Cluster_Break=E_Base"), 0, 0, env);
     6223    if (r != 0) goto err;
     6224    r = add_ctype_to_cc(cc, propname2ctype(env, "Grapheme_Cluster_Break=E_Base_GAZ"), 0, 0, env);
     6225    if (r != 0) goto err;
     6226
     6227    tmp = node_new_list(np1, list2);
     6228    if (IS_NULL(tmp)) goto err;
     6229    list2 = tmp;
     6230    np1 = NULL;
     6231
     6232    tmp = onig_node_new_alt(list2, alt);
     6233    if (IS_NULL(tmp)) goto err;
     6234    alt = tmp;
     6235    list2 = NULL;
     6236
     6237    /* ZWJ (E_Base_GAZ | Glue_After_Zwj) E_Modifier? */
     6238    /* a sequence starting with ZWJ seems artificial, but GraphemeBreakTest
     6239     * has such examples.
     6240     * http://www.unicode.org/Public/9.0.0/ucd/auxiliary/GraphemeBreakTest.html
     6241     */
     6242    np1 = node_new_cclass();
     6243    if (IS_NULL(np1)) goto err;
     6244    cc = NCCLASS(np1);
     6245    r = add_ctype_to_cc(cc, propname2ctype(env, "Grapheme_Cluster_Break=E_Modifier"), 0, 0, env);
     6246    if (r != 0) goto err;
     6247
     6248    tmp = node_new_quantifier(0, 1, 0);
     6249    if (IS_NULL(tmp)) goto err;
     6250    NQTFR(tmp)->target = np1;
     6251    np1 = tmp;
     6252
     6253    tmp = node_new_list(np1, NULL_NODE);
     6254    if (IS_NULL(tmp)) goto err;
     6255    list2 = tmp;
     6256    np1 = NULL;
     6257
     6258    np1 = node_new_cclass();
     6259    if (IS_NULL(np1)) goto err;
     6260    cc = NCCLASS(np1);
     6261    r = add_ctype_to_cc(cc, propname2ctype(env, "Grapheme_Cluster_Break=Glue_After_Zwj"), 0, 0, env);
     6262    if (r != 0) goto err;
     6263    r = add_ctype_to_cc(cc, propname2ctype(env, "Grapheme_Cluster_Break=E_Base_GAZ"), 0, 0, env);
     6264    if (r != 0) goto err;
     6265
     6266    tmp = node_new_list(np1, list2);
     6267    if (IS_NULL(tmp)) goto err;
     6268    list2 = tmp;
     6269    np1 = NULL;
     6270
     6271    r = ONIGENC_CODE_TO_MBC(env->enc, 0x200D, buf);
     6272    if (r < 0) goto err;
     6273    np1 = node_new_str_raw(buf, buf + r);
     6274    if (IS_NULL(np1)) goto err;
     6275
     6276    tmp = node_new_list(np1, list2);
     6277    if (IS_NULL(tmp)) goto err;
     6278    list2 = tmp;
     6279    np1 = NULL;
     6280
     6281    tmp = onig_node_new_alt(list2, alt);
     6282    if (IS_NULL(tmp)) goto err;
     6283    alt = tmp;
     6284    list2 = NULL;
     6285
     6286    /* RI-Sequence := Regional_Indicator{2} */
     6287    np1 = node_new_cclass();
     6288    if (IS_NULL(np1)) goto err;
     6289    cc = NCCLASS(np1);
     6290    r = add_code_range(&(cc->mbuf), env, 0x1F1E6, 0x1F1FF);
     6291    if (r != 0) goto err;
     6292
     6293    tmp = node_new_quantifier(2, 2, 0);
     6294    if (IS_NULL(tmp)) goto err;
     6295    NQTFR(tmp)->target = np1;
     6296    np1 = tmp;
     6297
     6298    tmp = node_new_list(np1, list2);
     6299    if (IS_NULL(tmp)) goto err;
     6300    list2 = tmp;
     6301    np1 = NULL;
     6302
     6303    tmp = onig_node_new_alt(list2, alt);
     6304    if (IS_NULL(tmp)) goto err;
     6305    alt = tmp;
     6306    list2 = NULL;
     6307
     6308    tmp = node_new_list(alt, list);
     6309    if (IS_NULL(tmp)) goto err;
     6310    list = tmp;
     6311    alt = NULL;
     6312
     6313    /* Prepend* */
     6314    np1 = node_new_cclass();
     6315    if (IS_NULL(np1)) goto err;
     6316    cc = NCCLASS(np1);
     6317    r = add_ctype_to_cc(cc, propname2ctype(env, "Grapheme_Cluster_Break=Prepend"), 0, 0, env);
     6318    if (r != 0) goto err;
     6319
     6320    tmp = node_new_quantifier(0, REPEAT_INFINITE, 0);
     6321    if (IS_NULL(tmp)) goto err;
     6322    NQTFR(tmp)->target = np1;
     6323    np1 = tmp;
     6324
     6325    tmp = node_new_list(np1, list);
     6326    if (IS_NULL(tmp)) goto err;
     6327    list = tmp;
     6328    np1 = NULL;
     6329
    57666330    /* PerlSyntax: (?s:.), RubySyntax: (?m:.) */
    5767     OnigOptionType option;
    57686331    np1 = node_new_anychar();
    57696332    if (IS_NULL(np1)) goto err;
     
    57716334    option = env->option;
    57726335    ONOFF(option, ONIG_OPTION_MULTILINE, 0);
     6336    tmp = node_new_option(option);
     6337    if (IS_NULL(tmp)) goto err;
     6338    NENCLOSE(tmp)->target = np1;
     6339    np1 = tmp;
     6340
     6341    tmp = onig_node_new_alt(np1, NULL_NODE);
     6342    if (IS_NULL(tmp)) goto err;
     6343    alt = tmp;
     6344    np1 = NULL;
     6345
     6346    /* Prepend+ */
     6347    r = ONIGENC_CODE_TO_MBC(env->enc, 0x200D, buf);
     6348    if (r < 0) goto err;
     6349    np1 = node_new_str_raw(buf, buf + r);
     6350    if (IS_NULL(np1)) goto err;
     6351
     6352    tmp = node_new_quantifier(0, 1, 0);
     6353    if (IS_NULL(tmp)) goto err;
     6354    NQTFR(tmp)->target = np1;
     6355    np1 = tmp;
     6356
     6357    tmp = node_new_list(np1, NULL_NODE);
     6358    if (IS_NULL(tmp)) goto err;
     6359    list2 = tmp;
     6360    np1 = NULL;
     6361
     6362    np1 = node_new_cclass();
     6363    if (IS_NULL(np1)) goto err;
     6364    cc = NCCLASS(np1);
     6365    r = add_ctype_to_cc(cc, propname2ctype(env, "Grapheme_Cluster_Break=Prepend"), 0, 0, env);
     6366    if (r != 0) goto err;
     6367
     6368    tmp = node_new_quantifier(1, REPEAT_INFINITE, 0);
     6369    if (IS_NULL(tmp)) goto err;
     6370    NQTFR(tmp)->target = np1;
     6371    np1 = tmp;
     6372
     6373    tmp = node_new_list(np1, list2);
     6374    if (IS_NULL(tmp)) goto err;
     6375    list2 = tmp;
     6376    np1 = NULL;
     6377
     6378    tmp = onig_node_new_alt(list2, alt);
     6379    if (IS_NULL(tmp)) goto err;
     6380    alt = tmp;
     6381    list2 = NULL;
     6382
     6383    tmp = onig_node_new_alt(list, alt);
     6384    if (IS_NULL(tmp)) goto err;
     6385    alt = tmp;
     6386    list = NULL;
     6387  }
     6388  else
     6389#endif /* USE_UNICODE_PROPERTIES */
     6390  {
     6391    /* PerlSyntax: (?s:.), RubySyntax: (?m:.) */
     6392    np1 = node_new_anychar();
     6393    if (IS_NULL(np1)) goto err;
     6394
     6395    option = env->option;
     6396    ONOFF(option, ONIG_OPTION_MULTILINE, 0);
     6397    tmp = node_new_option(option);
     6398    if (IS_NULL(tmp)) goto err;
     6399    NENCLOSE(tmp)->target = np1;
     6400    np1 = tmp;
     6401
     6402    alt = onig_node_new_alt(np1, NULL_NODE);
     6403    if (IS_NULL(alt)) goto err;
     6404    np1 = NULL;
     6405  }
     6406
     6407  /* \x0D\x0A */
     6408  r = ONIGENC_CODE_TO_MBC(env->enc, 0x0D, buf);
     6409  if (r < 0) goto err;
     6410  num1 = r;
     6411  r = ONIGENC_CODE_TO_MBC(env->enc, 0x0A, buf + num1);
     6412  if (r < 0) goto err;
     6413  np1 = node_new_str_raw(buf, buf + num1 + r);
     6414  if (IS_NULL(np1)) goto err;
     6415
     6416  tmp = onig_node_new_alt(np1, alt);
     6417  if (IS_NULL(tmp)) goto err;
     6418  alt = tmp;
     6419  np1 = NULL;
     6420
     6421  /* (?>\x0D\x0A|...) */
     6422  tmp = node_new_enclose(ENCLOSE_STOP_BACKTRACK);
     6423  if (IS_NULL(tmp)) goto err;
     6424  NENCLOSE(tmp)->target = alt;
     6425  np1 = tmp;
     6426
     6427#ifdef USE_UNICODE_PROPERTIES
     6428  if (ONIGENC_IS_UNICODE(env->enc)) {
     6429    /* Don't ignore case. */
     6430    option = env->option;
     6431    ONOFF(option, ONIG_OPTION_IGNORECASE, 1);
    57736432    *np = node_new_option(option);
    57746433    if (IS_NULL(*np)) goto err;
    57756434    NENCLOSE(*np)->target = np1;
    57766435  }
     6436  else
     6437#endif
     6438  {
     6439    *np = np1;
     6440  }
    57776441  return ONIG_NORMAL;
    57786442
    57796443 err:
    57806444  onig_node_free(np1);
    5781   onig_node_free(np2);
    5782   onig_node_free(qn);
    5783   onig_node_free(list1);
     6445  onig_node_free(list);
    57846446  onig_node_free(list2);
     6447  onig_node_free(alt);
     6448  onig_node_free(alt2);
     6449  bbuf_free(pbuf1);
    57856450  return (r == 0) ? ONIGERR_MEMORY : r;
    57866451}
     
    58156480      c = data[0];
    58166481      if (((c < SINGLE_BYTE_SIZE) && BITSET_AT(cc->bs, c))) {
    5817         /* skip if c is included in the bitset */
     6482        /* skip if c is included in the bitset */
    58186483        c = not_found;
    58196484      }
     
    58296494    if (b1 != 0) {
    58306495      if (((b1 & (b1 - 1)) == 0) && (c == not_found)) {
    5831         c = BITS_IN_ROOM * i + countbits(b1 - 1);
     6496        c = BITS_IN_ROOM * i + countbits(b1 - 1);
    58326497      } else {
    5833         return 0;  /* the character class contains multiple chars */
     6498        return 0;  /* the character class contains multiple chars */
    58346499      }
    58356500    }
     
    58766541      env->option = NENCLOSE(*np)->option;
    58776542      r = fetch_token(tok, src, end, env);
    5878       if (r < 0) return r;
     6543      if (r < 0) {
     6544        env->option = prev;
     6545        return r;
     6546      }
    58796547      r = parse_subexp(&target, tok, term, src, end, env);
    58806548      env->option = prev;
     
    59496617      while (1) {
    59506618        if (len >= ONIGENC_MBC_MINLEN(env->enc)) {
    5951           if (len == enclen(env->enc, NSTR(*np)->s)) {
     6619          if (len == enclen(env->enc, NSTR(*np)->s, NSTR(*np)->end)) {
    59526620            r = fetch_token(tok, src, end, env);
    59536621            NSTRING_CLEAR_RAW(*np);
     
    60296697          CClassNode* cc;
    60306698
    6031 #ifdef USE_SHARED_CCLASS_TABLE
    6032           const OnigCodePoint *mbr;
    6033           OnigCodePoint sb_out;
    6034 
    6035           r = ONIGENC_GET_CTYPE_CODE_RANGE(env->enc, tok->u.prop.ctype,
    6036                                            &sb_out, &mbr);
    6037           if (r == 0 &&
    6038               ! IS_ASCII_RANGE(env->option) &&
    6039               ONIGENC_CODE_RANGE_NUM(mbr)
    6040               >= THRESHOLD_RANGE_NUM_FOR_SHARE_CCLASS) {
    6041             type_cclass_key  key;
    6042             type_cclass_key* new_key;
    6043 
    6044             key.enc  = env->enc;
    6045             key.not  = tok->u.prop.not;
    6046             key.type = tok->u.prop.ctype;
    6047 
    6048             THREAD_ATOMIC_START;
    6049 
    6050             if (IS_NULL(OnigTypeCClassTable)) {
    6051               OnigTypeCClassTable
    6052                 = onig_st_init_table_with_size(&type_type_cclass_hash, 10);
    6053               if (IS_NULL(OnigTypeCClassTable)) {
    6054                 THREAD_ATOMIC_END;
    6055                 return ONIGERR_MEMORY;
    6056               }
    6057             }
    6058             else {
    6059               if (onig_st_lookup(OnigTypeCClassTable, (st_data_t )&key,
    6060                                  (st_data_t* )np)) {
    6061                 THREAD_ATOMIC_END;
    6062                 break;
    6063               }
    6064             }
    6065 
    6066             *np = node_new_cclass_by_codepoint_range(tok->u.prop.not,
    6067                                                      sb_out, mbr);
    6068             if (IS_NULL(*np)) {
    6069               THREAD_ATOMIC_END;
    6070               return ONIGERR_MEMORY;
    6071             }
    6072 
    6073             cc = NCCLASS(*np);
    6074             NCCLASS_SET_SHARE(cc);
    6075             new_key = (type_cclass_key* )xmalloc(sizeof(type_cclass_key));
    6076             xmemcpy(new_key, &key, sizeof(type_cclass_key));
    6077             onig_st_add_direct(OnigTypeCClassTable, (st_data_t )new_key,
    6078                                (st_data_t )*np);
    6079 
    6080             THREAD_ATOMIC_END;
    6081           }
    6082           else {
    6083 #endif
    6084             *np = node_new_cclass();
    6085             CHECK_NULL_RETURN_MEMERR(*np);
    6086             cc = NCCLASS(*np);
    6087             r = add_ctype_to_cc(cc, tok->u.prop.ctype, 0,
    6088                             IS_ASCII_RANGE(env->option), env);
    6089             if (r != 0) return r;
    6090             if (tok->u.prop.not != 0) NCCLASS_SET_NOT(cc);
    6091 #ifdef USE_SHARED_CCLASS_TABLE
    6092           }
    6093 #endif
     6699          *np = node_new_cclass();
     6700          CHECK_NULL_RETURN_MEMERR(*np);
     6701          cc = NCCLASS(*np);
     6702          r = add_ctype_to_cc(cc, tok->u.prop.ctype, 0,
     6703              IS_ASCII_RANGE(env->option), env);
     6704          if (r != 0) return r;
     6705          if (tok->u.prop.not != 0) NCCLASS_SET_NOT(cc);
    60946706        }
    60956707        break;
     
    63216933
    63226934  *top = NULL;
     6935  env->parse_depth++;
     6936  if (env->parse_depth > ParseDepthLimit)
     6937    return ONIGERR_PARSE_DEPTH_LIMIT_OVER;
    63236938  r = parse_branch(&node, tok, term, src, end, env);
    63246939  if (r < 0) {
     
    63586973  }
    63596974
     6975  env->parse_depth--;
    63606976  return r;
    63616977}
  • EcnlProtoTool/trunk/onigmo-6.1.3/src/regparse.h

    r321 r331  
    1 #ifndef REGPARSE_H
    2 #define REGPARSE_H
     1#ifndef ONIGMO_REGPARSE_H
     2#define ONIGMO_REGPARSE_H
    33/**********************************************************************
    44  regparse.h -  Onigmo (Oniguruma-mod) (regular expression library)
     
    66/*-
    77 * Copyright (c) 2002-2007  K.Kosako  <sndgk393 AT ybb DOT ne DOT jp>
    8  * Copyright (c) 2011       K.Takata  <kentkt AT csc DOT jp>
     8 * Copyright (c) 2011-2016  K.Takata  <kentkt AT csc DOT jp>
    99 * All rights reserved.
    1010 *
     
    3333#include "regint.h"
    3434
     35RUBY_SYMBOL_EXPORT_BEGIN
     36
    3537/* node type */
    3638#define NT_STR         0
     
    9496#define ENCLOSE_STOP_BACKTRACK   (1<<2)
    9597#define ENCLOSE_CONDITION        (1<<3)
     98#define ENCLOSE_ABSENT           (1<<4)
    9699
    97100#define NODE_STR_MARGIN         16
     
    289292  OnigCaseFoldType case_fold_flag;
    290293  OnigEncoding     enc;
    291   OnigSyntaxType* syntax;
     294  const OnigSyntaxType* syntax;
    292295  BitStatusType    capture_history;
    293296  BitStatusType    bt_mem_start;
     
    316319  int has_recursion;
    317320#endif
     321  unsigned int parse_depth;
     322  int warnings_flag;
     323#ifdef RUBY
     324  const char* sourcefile;
     325  int sourceline;
     326#endif
    318327} ScanEnv;
    319328
     
    328337} GroupNumRemap;
    329338
    330 extern int    onig_renumber_name_table P_((regex_t* reg, GroupNumRemap* map));
    331 #endif
    332 
    333 extern int    onig_strncmp P_((const UChar* s1, const UChar* s2, int n));
    334 extern void   onig_strcpy P_((UChar* dest, const UChar* src, const UChar* end));
    335 extern void   onig_scan_env_set_error_string P_((ScanEnv* env, int ecode, UChar* arg, UChar* arg_end));
    336 extern int    onig_scan_unsigned_number P_((UChar** src, const UChar* end, OnigEncoding enc));
    337 extern void   onig_reduce_nested_quantifier P_((Node* pnode, Node* cnode));
    338 extern void   onig_node_conv_to_str_node P_((Node* node, int raw));
    339 extern int    onig_node_str_cat P_((Node* node, const UChar* s, const UChar* end));
    340 extern int    onig_node_str_set P_((Node* node, const UChar* s, const UChar* end));
    341 extern void   onig_node_free P_((Node* node));
    342 extern Node*  onig_node_new_enclose P_((int type));
    343 extern Node*  onig_node_new_anchor P_((int type));
    344 extern Node*  onig_node_new_str P_((const UChar* s, const UChar* end));
    345 extern Node*  onig_node_new_list P_((Node* left, Node* right));
    346 extern Node*  onig_node_list_add P_((Node* list, Node* x));
    347 extern Node*  onig_node_new_alt P_((Node* left, Node* right));
    348 extern void   onig_node_str_clear P_((Node* node));
    349 extern int    onig_free_node_list P_((void));
    350 extern int    onig_names_free P_((regex_t* reg));
    351 extern int    onig_parse_make_tree P_((Node** root, const UChar* pattern, const UChar* end, regex_t* reg, ScanEnv* env));
    352 extern int    onig_free_shared_cclass_table P_((void));
     339extern int    onig_renumber_name_table(regex_t* reg, GroupNumRemap* map);
     340#endif
     341
     342extern int    onig_strncmp(const UChar* s1, const UChar* s2, int n);
     343extern void   onig_strcpy(UChar* dest, const UChar* src, const UChar* end);
     344extern void   onig_scan_env_set_error_string(ScanEnv* env, int ecode, UChar* arg, UChar* arg_end);
     345extern int    onig_scan_unsigned_number(UChar** src, const UChar* end, OnigEncoding enc);
     346extern void   onig_reduce_nested_quantifier(Node* pnode, Node* cnode);
     347extern void   onig_node_conv_to_str_node(Node* node, int raw);
     348extern int    onig_node_str_cat(Node* node, const UChar* s, const UChar* end);
     349extern int    onig_node_str_set(Node* node, const UChar* s, const UChar* end);
     350extern void   onig_node_free(Node* node);
     351extern Node*  onig_node_new_enclose(int type);
     352extern Node*  onig_node_new_anchor(int type);
     353extern Node*  onig_node_new_str(const UChar* s, const UChar* end);
     354extern Node*  onig_node_new_list(Node* left, Node* right);
     355extern Node*  onig_node_list_add(Node* list, Node* x);
     356extern Node*  onig_node_new_alt(Node* left, Node* right);
     357extern void   onig_node_str_clear(Node* node);
     358extern int    onig_names_free(regex_t* reg);
     359extern int    onig_parse_make_tree(Node** root, const UChar* pattern, const UChar* end, regex_t* reg, ScanEnv* env);
     360extern int    onig_free_shared_cclass_table(void);
    353361
    354362#ifdef ONIG_DEBUG
    355 #ifdef USE_NAMED_GROUP
     363# ifdef USE_NAMED_GROUP
    356364extern int onig_print_names(FILE*, regex_t*);
    357 #endif
    358 #endif
    359 
    360 #endif /* REGPARSE_H */
     365# endif
     366#endif
     367
     368RUBY_SYMBOL_EXPORT_END
     369
     370#endif /* ONIGMO_REGPARSE_H */
  • EcnlProtoTool/trunk/onigmo-6.1.3/src/regposerr.c

    r321 r331  
    11/**********************************************************************
    2   regposerr.c - Oniguruma (regular expression library)
     2  regposerr.c - Onigmo (Oniguruma-mod) (regular expression library)
    33**********************************************************************/
    44/*-
    55 * Copyright (c) 2002-2007  K.Kosako  <sndgk393 AT ybb DOT ne DOT jp>
     6 * Copyright (c) 2011-2016  K.Takata  <kentkt AT csc DOT jp>
    67 * All rights reserved.
    78 *
     
    2930
    3031#include "config.h"
    31 #include "onigposix.h"
     32#include "onigmoposix.h"
     33#include <string.h>
    3234
    33 #ifdef HAVE_STRING_H
    34 # include <string.h>
     35#if defined(__GNUC__)
     36# define ARG_UNUSED  __attribute__ ((unused))
    3537#else
    36 # include <strings.h>
     38# define ARG_UNUSED
    3739#endif
    3840
    39 #if defined(__GNUC__)
    40 #  define ARG_UNUSED  __attribute__ ((unused))
     41#if defined(_WIN32) && !defined(__GNUC__)
     42# define xsnprintf   sprintf_s
     43# define xstrncpy(dest,src,size)   strncpy_s(dest,size,src,_TRUNCATE)
    4144#else
    42 #  define ARG_UNUSED
     45# define xsnprintf   snprintf
     46# define xstrncpy    strncpy
    4347#endif
    4448
     
    6569  "invalid wide char value",                 /* REG_EONIG_BADWC    */
    6670  "invalid argument",                        /* REG_EONIG_BADARG   */
    67   "multi-thread error"                       /* REG_EONIG_THREAD   */
    6871};
    6972
     
    8790  }
    8891  else {
    89     sprintf(tbuf, "undefined error code (%d)", posix_ecode);
     92    xsnprintf(tbuf, sizeof(tbuf), "undefined error code (%d)", posix_ecode);
    9093    s = tbuf;
    9194  }
     
    9497
    9598  if (buf != NULL && size > 0) {
    96     strncpy(buf, s, size - 1);
     99    xstrncpy(buf, s, size - 1);
    97100    buf[size - 1] = '\0';
    98101  }
  • EcnlProtoTool/trunk/onigmo-6.1.3/src/regposix.c

    r321 r331  
    44/*-
    55 * Copyright (c) 2002-2008  K.Kosako  <sndgk393 AT ybb DOT ne DOT jp>
    6  * Copyright (c) 2011       K.Takata  <kentkt AT csc DOT jp>
     6 * Copyright (c) 2011-2016  K.Takata  <kentkt AT csc DOT jp>
    77 * All rights reserved.
    88 *
     
    3232#include "regint.h"
    3333#undef regex_t
    34 #include "onigposix.h"
     34#include "onigmoposix.h"
    3535
    3636#define ONIG_C(reg)    ((onig_regex_t* )((reg)->onig))
     
    116116    { ONIGERR_INVALID_CHAR_PROPERTY_NAME,                 REG_BADPAT },
    117117    { ONIGERR_NOT_SUPPORTED_ENCODING_COMBINATION,         REG_EONIG_BADARG },
    118     { ONIGERR_OVER_THREAD_PASS_LIMIT_COUNT,               REG_EONIG_THREAD }
    119118
    120119  };
     
    136135{
    137136  int r, len;
    138   OnigSyntaxType* syntax = OnigDefaultSyntax;
     137  const OnigSyntaxType* syntax = OnigDefaultSyntax;
    139138  OnigOptionType options;
    140139
     
    170169  int r, i, len;
    171170  UChar* end;
    172   regmatch_t* pm;
     171  OnigRegion* region = NULL;
    173172  OnigOptionType options;
    174173
    175   options = ONIG_OPTION_POSIX_REGION;
     174  options = ONIG_OPTION_NONE;
    176175  if ((posix_options & REG_NOTBOL) != 0) options |= ONIG_OPTION_NOTBOL;
    177176  if ((posix_options & REG_NOTEOL) != 0) options |= ONIG_OPTION_NOTEOL;
    178177
    179   if (nmatch == 0 || (reg->comp_options & REG_NOSUB) != 0) {
    180     pm = (regmatch_t* )NULL;
     178  if ((reg->comp_options & REG_NOSUB) != 0) {
    181179    nmatch = 0;
    182180  }
    183   else if ((int )nmatch < ONIG_C(reg)->num_mem + 1) {
    184     pm = (regmatch_t* )xmalloc(sizeof(regmatch_t)
    185                                * (ONIG_C(reg)->num_mem + 1));
    186     if (pm == NULL)
     181  else if (nmatch != 0) {
     182    region = onig_region_new();
     183    if (region == NULL)
    187184      return REG_ESPACE;
    188   }
    189   else {
    190     pm = pmatch;
    191185  }
    192186
     
    194188  end = (UChar* )(str + len);
    195189  r = (int )onig_search(ONIG_C(reg), (UChar* )str, end, (UChar* )str, end,
    196                   (OnigRegion* )pm, options);
     190                  region, options);
    197191
    198192  if (r >= 0) {
    199193    r = 0; /* Match */
    200     if (pm != pmatch && pm != NULL) {
    201       xmemcpy(pmatch, pm, sizeof(regmatch_t) * nmatch);
     194    for (i = 0; i < (int )nmatch; i++) {
     195      pmatch[i].rm_so = (regoff_t )region->beg[i];
     196      pmatch[i].rm_eo = (regoff_t )region->end[i];
    202197    }
    203198  }
     
    211206  }
    212207
    213   if (pm != pmatch && pm != NULL)
    214     xfree(pm);
     208  if (region != NULL)
     209    onig_region_free(region, 1);
    215210
    216211#if 0
     
    238233    enc = ONIG_ENCODING_ASCII;
    239234    break;
    240 #if 0
    241235  case REG_POSIX_ENCODING_EUC_JP:
    242236    enc = ONIG_ENCODING_EUC_JP;
     
    245239    enc = ONIG_ENCODING_SJIS;
    246240    break;
    247 #endif
    248241  case REG_POSIX_ENCODING_UTF8:
    249242    enc = ONIG_ENCODING_UTF8;
    250243    break;
    251 #if 0
    252244  case REG_POSIX_ENCODING_UTF16_BE:
    253245    enc = ONIG_ENCODING_UTF16_BE;
     
    256248    enc = ONIG_ENCODING_UTF16_LE;
    257249    break;
    258 #endif
     250
    259251  default:
    260252    return ;
  • EcnlProtoTool/trunk/onigmo-6.1.3/src/regsyntax.c

    r321 r331  
    44/*-
    55 * Copyright (c) 2002-2006  K.Kosako  <sndgk393 AT ybb DOT ne DOT jp>
    6  * Copyright (c) 2011-2012  K.Takata  <kentkt AT csc DOT jp>
     6 * Copyright (c) 2011-2016  K.Takata  <kentkt AT csc DOT jp>
    77 * All rights reserved.
    88 *
     
    3131#include "regint.h"
    3232
    33 OnigSyntaxType OnigSyntaxASIS = {
     33const OnigSyntaxType OnigSyntaxASIS = {
    3434    0
    3535  , ONIG_SYN_OP2_INEFFECTIVE_ESCAPE
     
    4747};
    4848
    49 OnigSyntaxType OnigSyntaxPosixBasic = {
     49const OnigSyntaxType OnigSyntaxPosixBasic = {
    5050  ( SYN_POSIX_COMMON_OP | ONIG_SYN_OP_ESC_LPAREN_SUBEXP |
    5151    ONIG_SYN_OP_ESC_BRACE_INTERVAL )
     
    6464};
    6565
    66 OnigSyntaxType OnigSyntaxPosixExtended = {
     66const OnigSyntaxType OnigSyntaxPosixExtended = {
    6767  ( SYN_POSIX_COMMON_OP | ONIG_SYN_OP_LPAREN_SUBEXP |
    6868    ONIG_SYN_OP_BRACE_INTERVAL |
     
    8585};
    8686
    87 OnigSyntaxType OnigSyntaxEmacs = {
     87const OnigSyntaxType OnigSyntaxEmacs = {
    8888  ( ONIG_SYN_OP_DOT_ANYCHAR | ONIG_SYN_OP_BRACKET_CC |
    8989    ONIG_SYN_OP_ESC_BRACE_INTERVAL |
     
    106106};
    107107
    108 OnigSyntaxType OnigSyntaxGrep = {
     108const OnigSyntaxType OnigSyntaxGrep = {
    109109  ( ONIG_SYN_OP_DOT_ANYCHAR | ONIG_SYN_OP_BRACKET_CC | ONIG_SYN_OP_POSIX_BRACKET |
    110110    ONIG_SYN_OP_ESC_BRACE_INTERVAL | ONIG_SYN_OP_ESC_LPAREN_SUBEXP |
     
    128128};
    129129
    130 OnigSyntaxType OnigSyntaxGnuRegex = {
     130const OnigSyntaxType OnigSyntaxGnuRegex = {
    131131  SYN_GNU_REGEX_OP
    132132  , 0
     
    144144};
    145145
    146 OnigSyntaxType OnigSyntaxJava = {
     146const OnigSyntaxType OnigSyntaxJava = {
    147147  (( SYN_GNU_REGEX_OP | ONIG_SYN_OP_QMARK_NON_GREEDY |
    148148     ONIG_SYN_OP_ESC_CONTROL_CHARS | ONIG_SYN_OP_ESC_C_CONTROL |
     
    169169
    170170/* Perl 5.8 */
    171 OnigSyntaxType OnigSyntaxPerl58 = {
     171const OnigSyntaxType OnigSyntaxPerl58 = {
    172172  (( SYN_GNU_REGEX_OP | ONIG_SYN_OP_QMARK_NON_GREEDY |
    173173     ONIG_SYN_OP_ESC_OCTAL3 | ONIG_SYN_OP_ESC_X_HEX2 |
     
    195195
    196196/* Perl 5.8 + named group */
    197 OnigSyntaxType OnigSyntaxPerl58_NG = {
     197const OnigSyntaxType OnigSyntaxPerl58_NG = {
    198198  (( SYN_GNU_REGEX_OP | ONIG_SYN_OP_QMARK_NON_GREEDY |
    199199     ONIG_SYN_OP_ESC_OCTAL3 | ONIG_SYN_OP_ESC_X_HEX2 |
     
    226226
    227227/* Perl 5.10+ */
    228 OnigSyntaxType OnigSyntaxPerl = {
     228const OnigSyntaxType OnigSyntaxPerl = {
    229229  (( SYN_GNU_REGEX_OP | ONIG_SYN_OP_QMARK_NON_GREEDY |
    230230     ONIG_SYN_OP_ESC_OCTAL3 | ONIG_SYN_OP_ESC_X_HEX2 |
    231231     ONIG_SYN_OP_ESC_X_BRACE_HEX8 | ONIG_SYN_OP_ESC_CONTROL_CHARS |
    232      ONIG_SYN_OP_ESC_C_CONTROL )
     232     ONIG_SYN_OP_ESC_O_BRACE_OCTAL | ONIG_SYN_OP_ESC_C_CONTROL )
    233233   & ~ONIG_SYN_OP_ESC_LTGT_WORD_BEGIN_END )
    234234  , ( ONIG_SYN_OP2_ESC_CAPITAL_Q_QUOTE |
     
    249249  , ( SYN_GNU_REGEX_BV |
    250250      ONIG_SYN_ALLOW_MULTIPLEX_DEFINITION_NAME |
    251       ONIG_SYN_ALLOW_MULTIPLEX_DEFINITION_NAME_CALL )
     251      ONIG_SYN_ALLOW_MULTIPLEX_DEFINITION_NAME_CALL |
     252      ONIG_SYN_USE_LEFT_MOST_NAMED_GROUP )
    252253  , ( ONIG_OPTION_SINGLELINE | ONIG_OPTION_CAPTURE_GROUP )
    253254  ,
     
    262263};
    263264
    264 OnigSyntaxType OnigSyntaxPython = {
     265const OnigSyntaxType OnigSyntaxPython = {
    265266  (( SYN_GNU_REGEX_OP | ONIG_SYN_OP_QMARK_NON_GREEDY |
    266267     ONIG_SYN_OP_ESC_OCTAL3 | ONIG_SYN_OP_ESC_X_HEX2 |
     
    293294
    294295extern int
    295 onig_set_default_syntax(OnigSyntaxType* syntax)
     296onig_set_default_syntax(const OnigSyntaxType* syntax)
    296297{
    297298  if (IS_NULL(syntax))
     
    333334
    334335extern unsigned int
    335 onig_get_syntax_op(OnigSyntaxType* syntax)
     336onig_get_syntax_op(const OnigSyntaxType* syntax)
    336337{
    337338  return syntax->op;
     
    339340
    340341extern unsigned int
    341 onig_get_syntax_op2(OnigSyntaxType* syntax)
     342onig_get_syntax_op2(const OnigSyntaxType* syntax)
    342343{
    343344  return syntax->op2;
     
    345346
    346347extern unsigned int
    347 onig_get_syntax_behavior(OnigSyntaxType* syntax)
     348onig_get_syntax_behavior(const OnigSyntaxType* syntax)
    348349{
    349350  return syntax->behavior;
     
    351352
    352353extern OnigOptionType
    353 onig_get_syntax_options(OnigSyntaxType* syntax)
     354onig_get_syntax_options(const OnigSyntaxType* syntax)
    354355{
    355356  return syntax->options;
  • EcnlProtoTool/trunk/onigmo-6.1.3/src/regversion.c

    r321 r331  
    33**********************************************************************/
    44/*-
    5  * Copyright (c) 2002-2009  K.Kosako  <sndgk393 AT ybb DOT ne DOT jp>
    6  * Copyright (c) 2011-2014  K.Takata  <kentkt AT csc DOT jp>
     5 * Copyright (c) 2002-2016  K.Kosako  <sndgk393 AT ybb DOT ne DOT jp>
     6 * Copyright (c) 2011-2017  K.Takata  <kentkt AT csc DOT jp>
    77 * All rights reserved.
    88 *
     
    2929 */
    3030
    31 #include "config.h"
    32 #include "oniguruma.h"
    33 #include <stdio.h>
     31#include "onigmo.h"
     32
     33#define TOSTR_(a)       #a
     34#define ONIG_VERSION_TOSTR_(a,b,c)      \
     35        TOSTR_(a) "." TOSTR_(b) "." TOSTR_(c)
     36#define ONIG_VERSION_STRING     \
     37        ONIG_VERSION_TOSTR_(ONIGMO_VERSION_MAJOR, ONIGMO_VERSION_MINOR, ONIGMO_VERSION_TEENY)
    3438
    3539extern const char*
    3640onig_version(void)
    3741{
    38   static char s[12];
     42  const char *s = ONIG_VERSION_STRING;
    3943
    40   sprintf(s, "%d.%d.%d",
    41           ONIGURUMA_VERSION_MAJOR,
    42           ONIGURUMA_VERSION_MINOR,
    43           ONIGURUMA_VERSION_TEENY);
    4444  return s;
    4545}
     
    4848onig_copyright(void)
    4949{
    50   static char s[80];
     50  const char *s =
     51    "Onigmo " ONIG_VERSION_STRING " : Copyright (C) 2002-2016 K.Kosako, "
     52    "2011-2017 K.Takata";
    5153
    52   sprintf(s, "Onigmo %d.%d.%d : Copyright (C) 2002-2009 K.Kosako, "
    53              "2011-2014 K.Takata",
    54           ONIGURUMA_VERSION_MAJOR,
    55           ONIGURUMA_VERSION_MINOR,
    56           ONIGURUMA_VERSION_TEENY);
    5754  return s;
    5855}
  • EcnlProtoTool/trunk/onigmo-6.1.3/src/st.c

    r321 r331  
    1 /* This is a public domain general purpose hash table package written by Peter Moore @ UCB. */
    2 
    3 /* static       char    sccsid[] = "@(#) st.c 5.1 89/12/14 Crucible"; */
     1/* This is a public domain general purpose hash table package
     2   originally written by Peter Moore @ UCB.
     3
     4   The hash table data structures were redesigned and the package was
     5   rewritten by Vladimir Makarov <vmakarov@redhat.com>.  */
     6
     7/* The original package implemented classic bucket-based hash tables
     8   with entries doubly linked for an access by their insertion order.
     9   To decrease pointer chasing and as a consequence to improve a data
     10   locality the current implementation is based on storing entries in
     11   an array and using hash tables with open addressing.  The current
     12   entries are more compact in comparison with the original ones and
     13   this also improves the data locality.
     14
     15   The hash table has two arrays called *bins* and *entries*.
     16
     17     bins:
     18    -------
     19   |       |                  entries array:
     20   |-------|            --------------------------------
     21   | index |           |      | entry:  |        |      |
     22   |-------|           |      |         |        |      |
     23   | ...   |           | ...  | hash    |  ...   | ...  |
     24   |-------|           |      | key     |        |      |
     25   | empty |           |      | record  |        |      |
     26   |-------|            --------------------------------
     27   | ...   |                   ^                  ^
     28   |-------|                   |_ entries start   |_ entries bound
     29   |deleted|
     30    -------
     31
     32   o The entry array contains table entries in the same order as they
     33     were inserted.
     34
     35     When the first entry is deleted, a variable containing index of
     36     the current first entry (*entries start*) is changed.  In all
     37     other cases of the deletion, we just mark the entry as deleted by
     38     using a reserved hash value.
     39
     40     Such organization of the entry storage makes operations of the
     41     table shift and the entries traversal very fast.
     42
     43   o The bins provide access to the entries by their keys.  The
     44     key hash is mapped to a bin containing *index* of the
     45     corresponding entry in the entry array.
     46
     47     The bin array size is always power of two, it makes mapping very
     48     fast by using the corresponding lower bits of the hash.
     49     Generally it is not a good idea to ignore some part of the hash.
     50     But alternative approach is worse.  For example, we could use a
     51     modulo operation for mapping and a prime number for the size of
     52     the bin array.  Unfortunately, the modulo operation for big
     53     64-bit numbers are extremely slow (it takes more than 100 cycles
     54     on modern Intel CPUs).
     55
     56     Still other bits of the hash value are used when the mapping
     57     results in a collision.  In this case we use a secondary hash
     58     value which is a result of a function of the collision bin
     59     index and the original hash value.  The function choice
     60     guarantees that we can traverse all bins and finally find the
     61     corresponding bin as after several iterations the function
     62     becomes a full cycle linear congruential generator because it
     63     satisfies requirements of the Hull-Dobell theorem.
     64
     65     When an entry is removed from the table besides marking the
     66     hash in the corresponding entry described above, we also mark
     67     the bin by a special value in order to find entries which had
     68     a collision with the removed entries.
     69
     70     There are two reserved values for the bins.  One denotes an
     71     empty bin, another one denotes a bin for a deleted entry.
     72
     73   o The length of the bin array is at least two times more than the
     74     entry array length.  This keeps the table load factor healthy.
     75     The trigger of rebuilding the table is always a case when we can
     76     not insert an entry anymore at the entries bound.  We could
     77     change the entries bound too in case of deletion but than we need
     78     a special code to count bins with corresponding deleted entries
     79     and reset the bin values when there are too many bins
     80     corresponding deleted entries
     81
     82     Table rebuilding is done by creation of a new entry array and
     83     bins of an appropriate size.  We also try to reuse the arrays
     84     in some cases by compacting the array and removing deleted
     85     entries.
     86
     87   o To save memory very small tables have no allocated arrays
     88     bins.  We use a linear search for an access by a key.
     89
     90   o To save more memory we use 8-, 16-, 32- and 64- bit indexes in
     91     bins depending on the current hash table size.
     92
     93   This implementation speeds up the Ruby hash table benchmarks in
     94   average by more 40% on Intel Haswell CPU.
     95
     96*/
     97
     98#ifdef RUBY
     99#include "internal.h"
     100#else
     101#include "regint.h"
     102#include "st.h"
     103#endif
    4104
    5105#include <stdio.h>
    6106#include <stdlib.h>
    7107#include <string.h>
    8 
    9 #ifdef _WIN32
    10 #include <malloc.h>
    11 #endif
    12 
    13 #include "regint.h"
    14 #include "st.h"
    15 
    16 typedef struct st_table_entry st_table_entry;
     108#include <assert.h>
     109
     110#ifdef __GNUC__
     111#define PREFETCH(addr, write_p) __builtin_prefetch(addr, write_p)
     112#define EXPECT(expr, val) __builtin_expect(expr, val)
     113#define ATTRIBUTE_UNUSED  __attribute__((unused))
     114#else
     115#define PREFETCH(addr, write_p)
     116#define EXPECT(expr, val) (expr)
     117#define ATTRIBUTE_UNUSED
     118#endif
     119
     120#ifdef ST_DEBUG
     121#define st_assert(cond) assert(cond)
     122#else
     123#define st_assert(cond) ((void)(0 && (cond)))
     124#endif
     125
     126/* The type of hashes.  */
     127typedef st_index_t st_hash_t;
    17128
    18129struct st_table_entry {
    19     unsigned int hash;
     130    st_hash_t hash;
    20131    st_data_t key;
    21132    st_data_t record;
    22     st_table_entry *next;
    23133};
    24134
    25 #define ST_DEFAULT_MAX_DENSITY 5
    26 #define ST_DEFAULT_INIT_TABLE_SIZE 11
    27 
    28     /*
    29      * DEFAULT_MAX_DENSITY is the default for the largest we allow the
    30      * average number of items per bin before increasing the number of
    31      * bins
    32      *
    33      * DEFAULT_INIT_TABLE_SIZE is the default for the number of bins
    34      * allocated initially
    35      *
    36      */
    37 
    38 static int numcmp(long, long);
    39 static int numhash(long);
    40 static struct st_hash_type type_numhash = {
    41     numcmp,
    42     numhash,
     135#ifdef RUBY
     136#define type_numhash st_hashtype_num
     137const struct st_hash_type st_hashtype_num = {
     138    st_numcmp,
     139    st_numhash,
    43140};
    44141
    45142/* extern int strcmp(const char *, const char *); */
    46 static int strhash(const char *);
    47 static struct st_hash_type type_strhash = {
     143static st_index_t strhash(st_data_t);
     144static const struct st_hash_type type_strhash = {
    48145    strcmp,
    49146    strhash,
    50147};
    51148
    52 static void rehash(st_table *);
    53 
    54 #define alloc(type) (type*)xmalloc((unsigned)sizeof(type))
    55 #define Calloc(n,s) (char*)xcalloc((n),(s))
    56 
    57 #define EQUAL(table,x,y) ((x)==(y) || (*table->type->compare)((x),(y)) == 0)
    58 
    59 #define do_hash(key,table) (unsigned int)(*(table)->type->hash)((key))
    60 #define do_hash_bin(key,table) (do_hash(key, table)%(table)->num_bins)
    61 
    62 /*
    63  * MINSIZE is the minimum size of a dictionary.
    64  */
    65 
    66 #define MINSIZE 8
    67 
    68 /*
    69 Table of prime numbers 2^n+a, 2<=n<=30.
    70 */
    71 static const long primes[] = {
    72         8 + 3,
    73         16 + 3,
    74         32 + 5,
    75         64 + 3,
    76         128 + 3,
    77         256 + 27,
    78         512 + 9,
    79         1024 + 9,
    80         2048 + 5,
    81         4096 + 3,
    82         8192 + 27,
    83         16384 + 43,
    84         32768 + 3,
    85         65536 + 45,
    86         131072 + 29,
    87         262144 + 3,
    88         524288 + 21,
    89         1048576 + 7,
    90         2097152 + 17,
    91         4194304 + 15,
    92         8388608 + 9,
    93         16777216 + 43,
    94         33554432 + 35,
    95         67108864 + 15,
    96         134217728 + 29,
    97         268435456 + 3,
    98         536870912 + 11,
    99         1073741824 + 85,
    100         0
     149static st_index_t strcasehash(st_data_t);
     150static const struct st_hash_type type_strcasehash = {
     151    st_locale_insensitive_strcasecmp,
     152    strcasehash,
    101153};
    102 
     154#endif /* RUBY */
     155
     156/* Value used to catch uninitialized entries/bins during debugging.
     157   There is a possibility for a false alarm, but its probability is
     158   extremely small.  */
     159#define ST_INIT_VAL 0xafafafafafafafaf
     160#define ST_INIT_VAL_BYTE 0xafa
     161
     162#ifdef RUBY
     163#undef malloc
     164#undef realloc
     165#undef calloc
     166#undef free
     167#define malloc ruby_xmalloc
     168#define calloc ruby_xcalloc
     169#define realloc ruby_xrealloc
     170#define free ruby_xfree
     171#else /* RUBY */
     172#define MEMCPY(p1,p2,type,n)  memcpy((p1), (p2), sizeof(type)*(n))
     173#endif /* RUBY */
     174
     175#define EQUAL(tab,x,y) ((x) == (y) || (*(tab)->type->compare)((x),(y)) == 0)
     176#define PTR_EQUAL(tab, ptr, hash_val, key_) \
     177    ((ptr)->hash == (hash_val) && EQUAL((tab), (key_), (ptr)->key))
     178
     179/* Features of a table.  */
     180struct st_features {
     181    /* Power of 2 used for number of allocated entries.  */
     182    unsigned char entry_power;
     183    /* Power of 2 used for number of allocated bins.  Depending on the
     184       table size, the number of bins is 2-4 times more than the
     185       number of entries.  */
     186    unsigned char bin_power;
     187    /* Enumeration of sizes of bins (8-bit, 16-bit etc).  */
     188    unsigned char size_ind;
     189    /* Bins are packed in words of type st_index_t.  The following is
     190       a size of bins counted by words.  */
     191    st_index_t bins_words;
     192};
     193
     194/* Features of all possible size tables.  */
     195#if SIZEOF_ST_INDEX_T == 8
     196#define MAX_POWER2 62
     197static const struct st_features features[] = {
     198    {0, 1, 0, 0x0},
     199    {1, 2, 0, 0x1},
     200    {2, 3, 0, 0x1},
     201    {3, 4, 0, 0x2},
     202    {4, 5, 0, 0x4},
     203    {5, 6, 0, 0x8},
     204    {6, 7, 0, 0x10},
     205    {7, 8, 0, 0x20},
     206    {8, 9, 1, 0x80},
     207    {9, 10, 1, 0x100},
     208    {10, 11, 1, 0x200},
     209    {11, 12, 1, 0x400},
     210    {12, 13, 1, 0x800},
     211    {13, 14, 1, 0x1000},
     212    {14, 15, 1, 0x2000},
     213    {15, 16, 1, 0x4000},
     214    {16, 17, 2, 0x10000},
     215    {17, 18, 2, 0x20000},
     216    {18, 19, 2, 0x40000},
     217    {19, 20, 2, 0x80000},
     218    {20, 21, 2, 0x100000},
     219    {21, 22, 2, 0x200000},
     220    {22, 23, 2, 0x400000},
     221    {23, 24, 2, 0x800000},
     222    {24, 25, 2, 0x1000000},
     223    {25, 26, 2, 0x2000000},
     224    {26, 27, 2, 0x4000000},
     225    {27, 28, 2, 0x8000000},
     226    {28, 29, 2, 0x10000000},
     227    {29, 30, 2, 0x20000000},
     228    {30, 31, 2, 0x40000000},
     229    {31, 32, 2, 0x80000000},
     230    {32, 33, 3, 0x200000000},
     231    {33, 34, 3, 0x400000000},
     232    {34, 35, 3, 0x800000000},
     233    {35, 36, 3, 0x1000000000},
     234    {36, 37, 3, 0x2000000000},
     235    {37, 38, 3, 0x4000000000},
     236    {38, 39, 3, 0x8000000000},
     237    {39, 40, 3, 0x10000000000},
     238    {40, 41, 3, 0x20000000000},
     239    {41, 42, 3, 0x40000000000},
     240    {42, 43, 3, 0x80000000000},
     241    {43, 44, 3, 0x100000000000},
     242    {44, 45, 3, 0x200000000000},
     243    {45, 46, 3, 0x400000000000},
     244    {46, 47, 3, 0x800000000000},
     245    {47, 48, 3, 0x1000000000000},
     246    {48, 49, 3, 0x2000000000000},
     247    {49, 50, 3, 0x4000000000000},
     248    {50, 51, 3, 0x8000000000000},
     249    {51, 52, 3, 0x10000000000000},
     250    {52, 53, 3, 0x20000000000000},
     251    {53, 54, 3, 0x40000000000000},
     252    {54, 55, 3, 0x80000000000000},
     253    {55, 56, 3, 0x100000000000000},
     254    {56, 57, 3, 0x200000000000000},
     255    {57, 58, 3, 0x400000000000000},
     256    {58, 59, 3, 0x800000000000000},
     257    {59, 60, 3, 0x1000000000000000},
     258    {60, 61, 3, 0x2000000000000000},
     259    {61, 62, 3, 0x4000000000000000},
     260    {62, 63, 3, 0x8000000000000000},
     261};
     262
     263#else
     264#define MAX_POWER2 30
     265
     266static const struct st_features features[] = {
     267    {0, 1, 0, 0x1},
     268    {1, 2, 0, 0x1},
     269    {2, 3, 0, 0x2},
     270    {3, 4, 0, 0x4},
     271    {4, 5, 0, 0x8},
     272    {5, 6, 0, 0x10},
     273    {6, 7, 0, 0x20},
     274    {7, 8, 0, 0x40},
     275    {8, 9, 1, 0x100},
     276    {9, 10, 1, 0x200},
     277    {10, 11, 1, 0x400},
     278    {11, 12, 1, 0x800},
     279    {12, 13, 1, 0x1000},
     280    {13, 14, 1, 0x2000},
     281    {14, 15, 1, 0x4000},
     282    {15, 16, 1, 0x8000},
     283    {16, 17, 2, 0x20000},
     284    {17, 18, 2, 0x40000},
     285    {18, 19, 2, 0x80000},
     286    {19, 20, 2, 0x100000},
     287    {20, 21, 2, 0x200000},
     288    {21, 22, 2, 0x400000},
     289    {22, 23, 2, 0x800000},
     290    {23, 24, 2, 0x1000000},
     291    {24, 25, 2, 0x2000000},
     292    {25, 26, 2, 0x4000000},
     293    {26, 27, 2, 0x8000000},
     294    {27, 28, 2, 0x10000000},
     295    {28, 29, 2, 0x20000000},
     296    {29, 30, 2, 0x40000000},
     297    {30, 31, 2, 0x80000000},
     298};
     299
     300#endif
     301
     302/* The reserved hash value and its substitution.  */
     303#define RESERVED_HASH_VAL (~(st_hash_t) 0)
     304#define RESERVED_HASH_SUBSTITUTION_VAL ((st_hash_t) 0)
     305
     306/* Return hash value of KEY for table TAB.  */
     307static inline st_hash_t
     308do_hash(st_data_t key, st_table *tab)
     309{
     310    st_hash_t hash = (st_hash_t)(tab->type->hash)(key);
     311
     312    /* RESERVED_HASH_VAL is used for a deleted entry.  Map it into
     313       another value.  Such mapping should be extremely rare.  */
     314    return hash == RESERVED_HASH_VAL ? RESERVED_HASH_SUBSTITUTION_VAL : hash;
     315}
     316
     317/* Power of 2 defining the minimal number of allocated entries.  */
     318#define MINIMAL_POWER2 2
     319
     320#if MINIMAL_POWER2 < 2
     321#error "MINIMAL_POWER2 should be >= 2"
     322#endif
     323
     324/* If the power2 of the allocated `entries` is less than the following
     325   value, don't allocate bins and use a linear search.  */
     326#define MAX_POWER2_FOR_TABLES_WITHOUT_BINS 4
     327
     328/* Return smallest n >= MINIMAL_POWER2 such 2^n > SIZE.  */
    103329static int
    104 new_size(size)
    105     int size;
    106 {
    107     int i;
    108 
    109 #if 0
    110     for (i=3; i<31; i++) {
    111         if ((1<<i) > size) return 1<<i;
    112     }
     330get_power2(st_index_t size)
     331{
     332    unsigned int n;
     333
     334    for (n = 0; size != 0; n++)
     335        size >>= 1;
     336    if (n <= MAX_POWER2)
     337        return n < MINIMAL_POWER2 ? MINIMAL_POWER2 : n;
     338#ifdef RUBY
     339    /* Ran out of the table entries */
     340    rb_raise(rb_eRuntimeError, "st_table too big");
     341#endif
     342    /* should raise exception */
    113343    return -1;
    114 #else
    115     int newsize;
    116 
    117     for (i = 0, newsize = MINSIZE;
    118          i < (int )(sizeof(primes)/sizeof(primes[0]));
    119          i++, newsize <<= 1)
     344}
     345
     346/* Return value of N-th bin in array BINS of table with bins size
     347   index S.  */
     348static inline st_index_t
     349get_bin(st_index_t *bins, int s, st_index_t n)
     350{
     351  return (s == 0 ? ((unsigned char *) bins)[n]
     352          : s == 1 ? ((unsigned short *) bins)[n]
     353          : s == 2 ? ((unsigned int *) bins)[n]
     354          : ((st_index_t *) bins)[n]);
     355}
     356
     357/* Set up N-th bin in array BINS of table with bins size index S to
     358   value V.  */
     359static inline void
     360set_bin(st_index_t *bins, int s, st_index_t n, st_index_t v)
     361{
     362    if (s == 0) ((unsigned char *) bins)[n] = (unsigned char) v;
     363    else if (s == 1) ((unsigned short *) bins)[n] = (unsigned short) v;
     364    else if (s == 2) ((unsigned int *) bins)[n] = (unsigned int) v;
     365    else ((st_index_t *) bins)[n] = v;
     366}
     367
     368/* These macros define reserved values for empty table bin and table
     369   bin which contains a deleted entry.  We will never use such values
     370   for an entry index in bins.  */
     371#define EMPTY_BIN    0
     372#define DELETED_BIN  1
     373/* Base of a real entry index in the bins.  */
     374#define ENTRY_BASE 2
     375
     376/* Mark I-th bin of table TAB as empty, in other words not
     377   corresponding to any entry.  */
     378#define MARK_BIN_EMPTY(tab, i) (set_bin((tab)->bins, get_size_ind(tab), i, EMPTY_BIN))
     379
     380/* Values used for not found entry and bin with given
     381   characteristics.  */
     382#define UNDEFINED_ENTRY_IND (~(st_index_t) 0)
     383#define UNDEFINED_BIN_IND (~(st_index_t) 0)
     384
     385/* Mark I-th bin of table TAB as corresponding to a deleted table
     386   entry.  Update number of entries in the table and number of bins
     387   corresponding to deleted entries. */
     388#define MARK_BIN_DELETED(tab, i)                                \
     389    do {                                                        \
     390        st_assert(i != UNDEFINED_BIN_IND);                      \
     391        st_assert(! IND_EMPTY_OR_DELETED_BIN_P(tab, i));        \
     392        set_bin((tab)->bins, get_size_ind(tab), i, DELETED_BIN); \
     393    } while (0)
     394
     395/* Macros to check that value B is used empty bins and bins
     396   corresponding deleted entries.  */
     397#define EMPTY_BIN_P(b) ((b) == EMPTY_BIN)
     398#define DELETED_BIN_P(b) ((b) == DELETED_BIN)
     399#define EMPTY_OR_DELETED_BIN_P(b) ((b) <= DELETED_BIN)
     400
     401/* Macros to check empty bins and bins corresponding to deleted
     402   entries.  Bins are given by their index I in table TAB.  */
     403#define IND_EMPTY_BIN_P(tab, i) (EMPTY_BIN_P(get_bin((tab)->bins, get_size_ind(tab), i)))
     404#define IND_DELETED_BIN_P(tab, i) (DELETED_BIN_P(get_bin((tab)->bins, get_size_ind(tab), i)))
     405#define IND_EMPTY_OR_DELETED_BIN_P(tab, i) (EMPTY_OR_DELETED_BIN_P(get_bin((tab)->bins, get_size_ind(tab), i)))
     406
     407/* Macros for marking and checking deleted entries given by their
     408   pointer E_PTR.  */
     409#define MARK_ENTRY_DELETED(e_ptr) ((e_ptr)->hash = RESERVED_HASH_VAL)
     410#define DELETED_ENTRY_P(e_ptr) ((e_ptr)->hash == RESERVED_HASH_VAL)
     411
     412/* Return bin size index of table TAB.  */
     413static inline unsigned int
     414get_size_ind(const st_table *tab)
     415{
     416    return tab->size_ind;
     417}
     418
     419/* Return the number of allocated bins of table TAB.  */
     420static inline st_index_t
     421get_bins_num(const st_table *tab)
     422{
     423    return ((st_index_t) 1)<<tab->bin_power;
     424}
     425
     426/* Return mask for a bin index in table TAB.  */
     427static inline st_index_t
     428bins_mask(const st_table *tab)
     429{
     430    return get_bins_num(tab) - 1;
     431}
     432
     433/* Return the index of table TAB bin corresponding to
     434   HASH_VALUE.  */
     435static inline st_index_t
     436hash_bin(st_hash_t hash_value, st_table *tab)
     437{
     438    return hash_value & bins_mask(tab);
     439}
     440
     441/* Return the number of allocated entries of table TAB.  */
     442static inline st_index_t
     443get_allocated_entries(const st_table *tab)
     444{
     445    return ((st_index_t) 1)<<tab->entry_power;
     446}
     447
     448/* Return size of the allocated bins of table TAB.  */
     449static inline st_index_t
     450bins_size(const st_table *tab)
     451{
     452    return features[tab->entry_power].bins_words * sizeof (st_index_t);
     453}
     454
     455/* Mark all bins of table TAB as empty.  */
     456static void
     457initialize_bins(st_table *tab)
     458{
     459    memset(tab->bins, 0, bins_size(tab));
     460}
     461
     462/* Make table TAB empty.  */
     463static void
     464make_tab_empty(st_table *tab)
     465{
     466    tab->num_entries = 0;
     467    tab->entries_start = tab->entries_bound = 0;
     468    if (tab->bins != NULL)
     469        initialize_bins(tab);
     470}
     471
     472#ifdef ST_DEBUG
     473/* Check the table T consistency.  It can be extremely slow.  So use
     474   it only for debugging.  */
     475static void
     476st_check(st_table *tab)
     477{
     478    st_index_t d, e, i, n, p;
     479
     480    for (p = get_allocated_entries(tab), i = 0; p > 1; i++, p>>=1)
     481        ;
     482    p = i;
     483    assert(p >= MINIMAL_POWER2);
     484    assert(tab->entries_bound <= get_allocated_entries(tab)
     485           && tab->entries_start <= tab->entries_bound);
     486    n = 0;
     487    return;
     488    if (tab->entries_bound != 0)
     489        for (i = tab->entries_start; i < tab->entries_bound; i++) {
     490            assert(tab->entries[i].hash != (st_hash_t) ST_INIT_VAL
     491                   && tab->entries[i].key != ST_INIT_VAL
     492                   && tab->entries[i].record != ST_INIT_VAL);
     493            if (! DELETED_ENTRY_P(&tab->entries[i]))
     494                n++;
     495        }
     496    assert(n == tab->num_entries);
     497    if (tab->bins == NULL)
     498        assert(p <= MAX_POWER2_FOR_TABLES_WITHOUT_BINS);
     499    else {
     500        assert(p > MAX_POWER2_FOR_TABLES_WITHOUT_BINS);
     501        for (n = d = i = 0; i < get_bins_num(tab); i++) {
     502            assert(get_bin(tab->bins, tab->size_ind, i) != ST_INIT_VAL);
     503            if (IND_DELETED_BIN_P(tab, i)) {
     504                d++;
     505                continue;
     506            }
     507            else if (IND_EMPTY_BIN_P(tab, i))
     508                continue;
     509            n++;
     510            e = get_bin(tab->bins, tab->size_ind, i) - ENTRY_BASE;
     511            assert(tab->entries_start <= e && e < tab->entries_bound);
     512            assert(! DELETED_ENTRY_P(&tab->entries[e]));
     513            assert(tab->entries[e].hash != (st_hash_t) ST_INIT_VAL
     514                   && tab->entries[e].key != ST_INIT_VAL
     515                   && tab->entries[e].record != ST_INIT_VAL);
     516        }
     517        assert(n == tab->num_entries);
     518        assert(n + d < get_bins_num(tab));
     519    }
     520}
     521#endif
     522
     523#ifdef HASH_LOG
     524#ifdef HAVE_UNISTD_H
     525#include <unistd.h>
     526#endif
     527static struct {
     528    int all, total, num, str, strcase;
     529}  collision;
     530
     531/* Flag switching off output of package statistics at the end of
     532   program.  */
     533static int init_st = 0;
     534
     535/* Output overall number of table searches and collisions into a
     536   temporary file.  */
     537static void
     538stat_col(void)
     539{
     540    char fname[10+sizeof(long)*3];
     541    FILE *f;
     542    if (!collision.total) return;
     543    f = fopen((snprintf(fname, sizeof(fname), "/tmp/col%ld", (long)getpid()), fname), "w");
     544    if (f == 0) return ;
     545
     546    fprintf(f, "collision: %d / %d (%6.2f)\n", collision.all, collision.total,
     547            ((double)collision.all / (collision.total)) * 100);
     548    fprintf(f, "num: %d, str: %d, strcase: %d\n", collision.num, collision.str, collision.strcase);
     549    fclose(f);
     550}
     551#endif
     552
     553/* Create and return table with TYPE which can hold at least SIZE
     554   entries.  The real number of entries which the table can hold is
     555   the nearest power of two for SIZE.  */
     556st_table *
     557st_init_table_with_size(const struct st_hash_type *type, st_index_t size)
     558{
     559    st_table *tab;
     560    int n;
     561
     562#ifdef HASH_LOG
     563#if HASH_LOG+0 < 0
    120564    {
    121         if (newsize > size) return primes[i];
    122     }
    123     /* Ran out of polynomials */
    124     return -1;                  /* should raise exception */
    125 #endif
    126 }
     565        const char *e = getenv("ST_HASH_LOG");
     566        if (!e || !*e) init_st = 1;
     567    }
     568#endif
     569    if (init_st == 0) {
     570        init_st = 1;
     571        atexit(stat_col);
     572    }
     573#endif
     574
     575    n = get_power2(size);
     576#ifndef RUBY
     577    if (n < 0)
     578        return NULL;
     579#endif
     580    tab = (st_table *) malloc(sizeof (st_table));
     581    if (tab == NULL)
     582        return NULL;
     583    tab->type = type;
     584    tab->entry_power = n;
     585    tab->bin_power = features[n].bin_power;
     586    tab->size_ind = features[n].size_ind;
     587    if (n <= MAX_POWER2_FOR_TABLES_WITHOUT_BINS)
     588        tab->bins = NULL;
     589    else {
     590        tab->bins = (st_index_t *) malloc(bins_size(tab));
     591        if (tab->bins == NULL) {
     592            free(tab);
     593            return NULL;
     594        }
     595    }
     596    tab->entries = (st_table_entry *) malloc(get_allocated_entries(tab)
     597                                             * sizeof(st_table_entry));
     598    if (tab->entries == NULL) {
     599        st_free_table(tab);
     600        return NULL;
     601    }
     602#ifdef ST_DEBUG
     603    memset(tab->entries, ST_INIT_VAL_BYTE,
     604           get_allocated_entries(tab) * sizeof(st_table_entry));
     605    if (tab->bins != NULL)
     606        memset(tab->bins, ST_INIT_VAL_BYTE, bins_size(tab));
     607#endif
     608    make_tab_empty(tab);
     609    tab->rebuilds_num = 0;
     610#ifdef ST_DEBUG
     611    st_check(tab);
     612#endif
     613    return tab;
     614}
     615
     616#ifdef RUBY
     617/* Create and return table with TYPE which can hold a minimal number
     618   of entries (see comments for get_power2).  */
     619st_table *
     620st_init_table(const struct st_hash_type *type)
     621{
     622    return st_init_table_with_size(type, 0);
     623}
     624
     625/* Create and return table which can hold a minimal number of
     626   numbers.  */
     627st_table *
     628st_init_numtable(void)
     629{
     630    return st_init_table(&type_numhash);
     631}
     632
     633/* Create and return table which can hold SIZE numbers.  */
     634st_table *
     635st_init_numtable_with_size(st_index_t size)
     636{
     637    return st_init_table_with_size(&type_numhash, size);
     638}
     639
     640/* Create and return table which can hold a minimal number of
     641   strings.  */
     642st_table *
     643st_init_strtable(void)
     644{
     645    return st_init_table(&type_strhash);
     646}
     647
     648/* Create and return table which can hold SIZE strings.  */
     649st_table *
     650st_init_strtable_with_size(st_index_t size)
     651{
     652    return st_init_table_with_size(&type_strhash, size);
     653}
     654
     655/* Create and return table which can hold a minimal number of strings
     656   whose character case is ignored.  */
     657st_table *
     658st_init_strcasetable(void)
     659{
     660    return st_init_table(&type_strcasehash);
     661}
     662
     663/* Create and return table which can hold SIZE strings whose character
     664   case is ignored.  */
     665st_table *
     666st_init_strcasetable_with_size(st_index_t size)
     667{
     668    return st_init_table_with_size(&type_strcasehash, size);
     669}
     670
     671/* Make table TAB empty.  */
     672void
     673st_clear(st_table *tab)
     674{
     675    make_tab_empty(tab);
     676    tab->rebuilds_num++;
     677#ifdef ST_DEBUG
     678    st_check(tab);
     679#endif
     680}
     681#endif /* RUBY */
     682
     683/* Free table TAB space.  */
     684void
     685st_free_table(st_table *tab)
     686{
     687    if (tab->bins != NULL)
     688        free(tab->bins);
     689    free(tab->entries);
     690    free(tab);
     691}
     692
     693#ifdef RUBY
     694/* Return byte size of memory allocted for table TAB.  */
     695size_t
     696st_memsize(const st_table *tab)
     697{
     698    return(sizeof(st_table)
     699           + (tab->bins == NULL ? 0 : bins_size(tab))
     700           + get_allocated_entries(tab) * sizeof(st_table_entry));
     701}
     702#endif /* RUBY */
     703
     704static st_index_t
     705find_table_entry_ind(st_table *tab, st_hash_t hash_value, st_data_t key);
     706
     707static st_index_t
     708find_table_bin_ind(st_table *tab, st_hash_t hash_value, st_data_t key);
     709
     710static st_index_t
     711find_table_bin_ind_direct(st_table *table, st_hash_t hash_value, st_data_t key);
     712
     713static st_index_t
     714find_table_bin_ptr_and_reserve(st_table *tab, st_hash_t *hash_value,
     715                               st_data_t key, st_index_t *bin_ind);
    127716
    128717#ifdef HASH_LOG
    129 static int collision = 0;
    130 static int init_st = 0;
    131 
    132718static void
    133 stat_col()
    134 {
    135     FILE *f = fopen("/tmp/col", "w");
    136     fprintf(f, "collision: %d\n", collision);
    137     fclose(f);
    138 }
    139 #endif
    140 
    141 st_table*
    142 st_init_table_with_size(type, size)
    143     struct st_hash_type *type;
    144     int size;
    145 {
    146     st_table *tbl;
    147 
    148 #ifdef HASH_LOG
    149     if (init_st == 0) {
    150         init_st = 1;
    151         atexit(stat_col);
    152     }
    153 #endif
    154 
    155     size = new_size(size);      /* round up to prime number */
    156 
    157     tbl = alloc(st_table);
    158     tbl->type = type;
    159     tbl->num_entries = 0;
    160     tbl->num_bins = size;
    161     tbl->bins = (st_table_entry **)Calloc(size, sizeof(st_table_entry*));
    162 
    163     return tbl;
    164 }
    165 
    166 st_table*
    167 st_init_table(type)
    168     struct st_hash_type *type;
    169 {
    170     return st_init_table_with_size(type, 0);
    171 }
    172 
    173 st_table*
    174 st_init_numtable(void)
    175 {
    176     return st_init_table(&type_numhash);
    177 }
    178 
    179 st_table*
    180 st_init_numtable_with_size(size)
    181     int size;
    182 {
    183     return st_init_table_with_size(&type_numhash, size);
    184 }
    185 
    186 st_table*
    187 st_init_strtable(void)
    188 {
    189     return st_init_table(&type_strhash);
    190 }
    191 
    192 st_table*
    193 st_init_strtable_with_size(size)
    194     int size;
    195 {
    196     return st_init_table_with_size(&type_strhash, size);
    197 }
    198 
     719count_collision(const struct st_hash_type *type)
     720{
     721    collision.all++;
     722    if (type == &type_numhash) {
     723        collision.num++;
     724    }
     725    else if (type == &type_strhash) {
     726        collision.strcase++;
     727    }
     728    else if (type == &type_strcasehash) {
     729        collision.str++;
     730    }
     731}
     732
     733#define COLLISION (collision_check ? count_collision(tab->type) : (void)0)
     734#define FOUND_BIN (collision_check ? collision.total++ : (void)0)
     735#define collision_check 0
     736#else
     737#define COLLISION
     738#define FOUND_BIN
     739#endif
     740
     741/* If the number of entries in the table is at least REBUILD_THRESHOLD
     742   times less than the entry array length, decrease the table
     743   size.  */
     744#define REBUILD_THRESHOLD 4
     745
     746#if REBUILD_THRESHOLD < 2
     747#error "REBUILD_THRESHOLD should be >= 2"
     748#endif
     749
     750/* Rebuild table TAB.  Rebuilding removes all deleted bins and entries
     751   and can change size of the table entries and bins arrays.
     752   Rebuilding is implemented by creation of a new table or by
     753   compaction of the existing one.  */
     754static void
     755rebuild_table(st_table *tab)
     756{
     757    st_index_t i, ni, bound;
     758    unsigned int size_ind;
     759    st_table *new_tab;
     760    st_table_entry *entries, *new_entries;
     761    st_table_entry *curr_entry_ptr;
     762    st_index_t *bins;
     763    st_index_t bin_ind;
     764
     765    st_assert(tab != NULL);
     766    bound = tab->entries_bound;
     767    entries = tab->entries;
     768    if ((2 * tab->num_entries <= get_allocated_entries(tab)
     769         && REBUILD_THRESHOLD * tab->num_entries > get_allocated_entries(tab))
     770        || tab->num_entries < (1 << MINIMAL_POWER2)) {
     771        /* Compaction: */
     772        tab->num_entries = 0;
     773        if (tab->bins != NULL)
     774            initialize_bins(tab);
     775        new_tab = tab;
     776        new_entries = entries;
     777    }
     778    else {
     779        new_tab = st_init_table_with_size(tab->type,
     780                                          2 * tab->num_entries - 1);
     781        new_entries = new_tab->entries;
     782    }
     783    ni = 0;
     784    bins = new_tab->bins;
     785    size_ind = get_size_ind(new_tab);
     786    for (i = tab->entries_start; i < bound; i++) {
     787        curr_entry_ptr = &entries[i];
     788        PREFETCH(entries + i + 1, 0);
     789        if (EXPECT(DELETED_ENTRY_P(curr_entry_ptr), 0))
     790            continue;
     791        if (&new_entries[ni] != curr_entry_ptr)
     792            new_entries[ni] = *curr_entry_ptr;
     793        if (EXPECT(bins != NULL, 1)) {
     794            bin_ind = find_table_bin_ind_direct(new_tab, curr_entry_ptr->hash,
     795                                                curr_entry_ptr->key);
     796            st_assert(bin_ind != UNDEFINED_BIN_IND
     797                      && (tab == new_tab || new_tab->rebuilds_num == 0)
     798                      && IND_EMPTY_BIN_P(new_tab, bin_ind));
     799            set_bin(bins, size_ind, bin_ind, ni + ENTRY_BASE);
     800        }
     801        new_tab->num_entries++;
     802        ni++;
     803    }
     804    if (new_tab != tab) {
     805        tab->entry_power = new_tab->entry_power;
     806        tab->bin_power = new_tab->bin_power;
     807        tab->size_ind = new_tab->size_ind;
     808        st_assert (tab->num_entries == ni && new_tab->num_entries == ni);
     809        if (tab->bins != NULL)
     810            free(tab->bins);
     811        tab->bins = new_tab->bins;
     812        free(tab->entries);
     813        tab->entries = new_tab->entries;
     814        free(new_tab);
     815    }
     816    tab->entries_start = 0;
     817    tab->entries_bound = tab->num_entries;
     818    tab->rebuilds_num++;
     819#ifdef ST_DEBUG
     820    st_check(tab);
     821#endif
     822}
     823
     824/* Return the next secondary hash index for table TAB using previous
     825   index IND and PERTERB.  Finally modulo of the function becomes a
     826   full *cycle linear congruential generator*, in other words it
     827   guarantees traversing all table bins in extreme case.
     828
     829   According the Hull-Dobell theorem a generator
     830   "Xnext = (a*Xprev + c) mod m" is a full cycle generator iff
     831     o m and c are relatively prime
     832     o a-1 is divisible by all prime factors of m
     833     o a-1 is divisible by 4 if m is divisible by 4.
     834
     835   For our case a is 5, c is 1, and m is a power of two.  */
     836static inline st_index_t
     837secondary_hash(st_index_t ind, st_table *tab, st_index_t *perterb)
     838{
     839    *perterb >>= 11;
     840    ind = (ind << 2) + ind + *perterb + 1;
     841    return hash_bin(ind, tab);
     842}
     843
     844/* Find an entry with HASH_VALUE and KEY in TABLE using a linear
     845   search.  Return the index of the found entry in array `entries`.
     846   If it is not found, return UNDEFINED_ENTRY_IND.  */
     847static inline st_index_t
     848find_entry(st_table *tab, st_hash_t hash_value, st_data_t key)
     849{
     850    st_index_t i, bound;
     851    st_table_entry *entries;
     852
     853    bound = tab->entries_bound;
     854    entries = tab->entries;
     855    for (i = tab->entries_start; i < bound; i++) {
     856        if (PTR_EQUAL(tab, &entries[i], hash_value, key))
     857            return i;
     858    }
     859    return UNDEFINED_ENTRY_IND;
     860}
     861
     862/* Use the quadratic probing.  The method has a better data locality
     863   but more collisions than the current approach.  In average it
     864   results in a bit slower search.  */
     865/*#define QUADRATIC_PROBE*/
     866
     867/* Return index of entry with HASH_VALUE and KEY in table TAB.  If
     868   there is no such entry, return UNDEFINED_ENTRY_IND.  */
     869static st_index_t
     870find_table_entry_ind(st_table *tab, st_hash_t hash_value, st_data_t key)
     871{
     872    st_index_t ind;
     873#ifdef QUADRATIC_PROBE
     874    st_index_t d;
     875#else
     876    st_index_t peterb;
     877#endif
     878    st_index_t bin;
     879    st_table_entry *entries = tab->entries;
     880
     881    st_assert(tab != NULL && tab->bins != NULL);
     882    ind = hash_bin(hash_value, tab);
     883#ifdef QUADRATIC_PROBE
     884    d = 1;
     885#else
     886    peterb = hash_value;
     887#endif
     888    FOUND_BIN;
     889    for (;;) {
     890        bin = get_bin(tab->bins, get_size_ind(tab), ind);
     891        if (! EMPTY_OR_DELETED_BIN_P(bin)
     892            && PTR_EQUAL(tab, &entries[bin - ENTRY_BASE], hash_value, key))
     893            break;
     894        else if (EMPTY_BIN_P(bin))
     895            return UNDEFINED_ENTRY_IND;
     896#ifdef QUADRATIC_PROBE
     897        ind = hash_bin(ind + d, tab);
     898        d++;
     899#else
     900        ind = secondary_hash(ind, tab, &peterb);
     901#endif
     902        COLLISION;
     903    }
     904    return bin;
     905}
     906
     907/* Find and return index of table TAB bin corresponding to an entry
     908   with HASH_VALUE and KEY.  If there is no such bin, return
     909   UNDEFINED_BIN_IND.  */
     910static st_index_t
     911find_table_bin_ind(st_table *tab, st_hash_t hash_value, st_data_t key)
     912{
     913    st_index_t ind;
     914#ifdef QUADRATIC_PROBE
     915    st_index_t d;
     916#else
     917    st_index_t peterb;
     918#endif
     919    st_index_t bin;
     920    st_table_entry *entries = tab->entries;
     921
     922    st_assert(tab != NULL && tab->bins != NULL);
     923    ind = hash_bin(hash_value, tab);
     924#ifdef QUADRATIC_PROBE
     925    d = 1;
     926#else
     927    peterb = hash_value;
     928#endif
     929    FOUND_BIN;
     930    for (;;) {
     931        bin = get_bin(tab->bins, get_size_ind(tab), ind);
     932        if (! EMPTY_OR_DELETED_BIN_P(bin)
     933            && PTR_EQUAL(tab, &entries[bin - ENTRY_BASE], hash_value, key))
     934            break;
     935        else if (EMPTY_BIN_P(bin))
     936            return UNDEFINED_BIN_IND;
     937#ifdef QUADRATIC_PROBE
     938        ind = hash_bin(ind + d, tab);
     939        d++;
     940#else
     941        ind = secondary_hash(ind, tab, &peterb);
     942#endif
     943        COLLISION;
     944    }
     945    return ind;
     946}
     947
     948/* Find and return index of table TAB bin corresponding to an entry
     949   with HASH_VALUE and KEY.  The entry should be in the table
     950   already.  */
     951static st_index_t
     952find_table_bin_ind_direct(st_table *tab, st_hash_t hash_value, st_data_t key)
     953{
     954    st_index_t ind;
     955#ifdef QUADRATIC_PROBE
     956    st_index_t d;
     957#else
     958    st_index_t peterb;
     959#endif
     960    st_index_t bin;
     961    st_table_entry *entries = tab->entries;
     962
     963    st_assert(tab != NULL && tab->bins != NULL);
     964    ind = hash_bin(hash_value, tab);
     965#ifdef QUADRATIC_PROBE
     966    d = 1;
     967#else
     968    peterb = hash_value;
     969#endif
     970    FOUND_BIN;
     971    for (;;) {
     972        bin = get_bin(tab->bins, get_size_ind(tab), ind);
     973        if (EMPTY_OR_DELETED_BIN_P(bin))
     974            return ind;
     975        st_assert (! PTR_EQUAL(tab, &entries[bin - ENTRY_BASE], hash_value, key));
     976#ifdef QUADRATIC_PROBE
     977        ind = hash_bin(ind + d, tab);
     978        d++;
     979#else
     980        ind = secondary_hash(ind, tab, &peterb);
     981#endif
     982        COLLISION;
     983    }
     984}
     985
     986/* Return index of table TAB bin for HASH_VALUE and KEY through
     987   BIN_IND and the pointed value as the function result.  Reserve the
     988   bin for inclusion of the corresponding entry into the table if it
     989   is not there yet.  We always find such bin as bins array length is
     990   bigger entries array.  Although we can reuse a deleted bin, the
     991   result bin value is always empty if the table has no entry with
     992   KEY.  Return the entries array index of the found entry or
     993   UNDEFINED_ENTRY_IND if it is not found.  */
     994static st_index_t
     995find_table_bin_ptr_and_reserve(st_table *tab, st_hash_t *hash_value,
     996                               st_data_t key, st_index_t *bin_ind) {
     997    st_index_t ind;
     998    st_hash_t curr_hash_value = *hash_value;
     999#ifdef QUADRATIC_PROBE
     1000    st_index_t d;
     1001#else
     1002    st_index_t peterb;
     1003#endif
     1004    st_index_t entry_index;
     1005    st_index_t first_deleted_bin_ind;
     1006    st_table_entry *entries;
     1007
     1008    st_assert(tab != NULL && tab->bins != NULL
     1009              && tab->entries_bound <= get_allocated_entries(tab)
     1010              && tab->entries_start <= tab->entries_bound);
     1011    ind = hash_bin(curr_hash_value, tab);
     1012#ifdef QUADRATIC_PROBE
     1013    d = 1;
     1014#else
     1015    peterb = curr_hash_value;
     1016#endif
     1017    FOUND_BIN;
     1018    first_deleted_bin_ind = UNDEFINED_BIN_IND;
     1019    entries = tab->entries;
     1020    for (;;) {
     1021        entry_index = get_bin(tab->bins, get_size_ind(tab), ind);
     1022        if (EMPTY_BIN_P(entry_index)) {
     1023            tab->num_entries++;
     1024            entry_index = UNDEFINED_ENTRY_IND;
     1025            if (first_deleted_bin_ind != UNDEFINED_BIN_IND) {
     1026                /* We can reuse bin of a deleted entry.  */
     1027                ind = first_deleted_bin_ind;
     1028                MARK_BIN_EMPTY(tab, ind);
     1029            }
     1030            break;
     1031        } else if (! DELETED_BIN_P(entry_index)) {
     1032            if (PTR_EQUAL(tab, &entries[entry_index - ENTRY_BASE], curr_hash_value, key))
     1033                break;
     1034        } else if (first_deleted_bin_ind == UNDEFINED_BIN_IND)
     1035            first_deleted_bin_ind = ind;
     1036#ifdef QUADRATIC_PROBE
     1037        ind = hash_bin(ind + d, tab);
     1038        d++;
     1039#else
     1040        ind = secondary_hash(ind, tab, &peterb);
     1041#endif
     1042        COLLISION;
     1043    }
     1044    *bin_ind = ind;
     1045    return entry_index;
     1046}
     1047
     1048/* Find an entry with KEY in table TAB.  Return non-zero if we found
     1049   it.  Set up *RECORD to the found entry record.  */
     1050int
     1051st_lookup(st_table *tab, st_data_t key, st_data_t *value)
     1052{
     1053    st_index_t bin;
     1054    st_hash_t hash = do_hash(key, tab);
     1055
     1056    if (tab->bins == NULL) {
     1057        bin = find_entry(tab, hash, key);
     1058        if (bin == UNDEFINED_ENTRY_IND)
     1059            return 0;
     1060    } else {
     1061        bin = find_table_entry_ind(tab, hash, key);
     1062        if (bin == UNDEFINED_ENTRY_IND)
     1063            return 0;
     1064        bin -= ENTRY_BASE;
     1065    }
     1066    if (value != 0)
     1067        *value = tab->entries[bin].record;
     1068    return 1;
     1069}
     1070
     1071#ifdef RUBY
     1072/* Find an entry with KEY in table TAB.  Return non-zero if we found
     1073   it.  Set up *RESULT to the found table entry key.  */
     1074int
     1075st_get_key(st_table *tab, st_data_t key, st_data_t *result)
     1076{
     1077    st_index_t bin;
     1078    st_hash_t hash = do_hash(key, tab);
     1079
     1080    if (tab->bins == NULL) {
     1081        bin = find_entry(tab, hash, key);
     1082        if (bin == UNDEFINED_ENTRY_IND)
     1083            return 0;
     1084    } else {
     1085        bin = find_table_entry_ind(tab, hash, key);
     1086        if (bin == UNDEFINED_ENTRY_IND)
     1087            return 0;
     1088        bin -= ENTRY_BASE;
     1089    }
     1090    if (result != 0)
     1091        *result = tab->entries[bin].key;
     1092    return 1;
     1093}
     1094#endif /* RUBY */
     1095
     1096/* Check the table and rebuild it if it is necessary.  */
     1097static inline void
     1098rebuild_table_if_necessary (st_table *tab)
     1099{
     1100    st_index_t bound = tab->entries_bound;
     1101
     1102    if (bound == get_allocated_entries(tab))
     1103        rebuild_table(tab);
     1104    st_assert(tab->entries_bound < get_allocated_entries(tab));
     1105}
     1106
     1107/* Insert (KEY, VALUE) into table TAB and return zero.  If there is
     1108   already entry with KEY in the table, return nonzero and and update
     1109   the value of the found entry.  */
     1110int
     1111st_insert(st_table *tab, st_data_t key, st_data_t value)
     1112{
     1113    st_table_entry *entry;
     1114    st_index_t bin;
     1115    st_index_t ind;
     1116    st_hash_t hash_value;
     1117    st_index_t bin_ind;
     1118    int new_p;
     1119
     1120    rebuild_table_if_necessary(tab);
     1121    hash_value = do_hash(key, tab);
     1122    if (tab->bins == NULL) {
     1123        bin = find_entry(tab, hash_value, key);
     1124        new_p = bin == UNDEFINED_ENTRY_IND;
     1125        if (new_p)
     1126            tab->num_entries++;
     1127        bin_ind = UNDEFINED_BIN_IND;
     1128    } else {
     1129        bin = find_table_bin_ptr_and_reserve(tab, &hash_value,
     1130                                             key, &bin_ind);
     1131        new_p = bin == UNDEFINED_ENTRY_IND;
     1132        bin -= ENTRY_BASE;
     1133    }
     1134    if (new_p) {
     1135        st_assert(tab->entries_bound < get_allocated_entries(tab));
     1136        ind = tab->entries_bound++;
     1137        entry = &tab->entries[ind];
     1138        entry->hash = hash_value;
     1139        entry->key = key;
     1140        entry->record = value;
     1141        if (bin_ind != UNDEFINED_BIN_IND)
     1142            set_bin(tab->bins, get_size_ind(tab), bin_ind, ind + ENTRY_BASE);
     1143#ifdef ST_DEBUG
     1144        st_check(tab);
     1145#endif
     1146        return 0;
     1147    }
     1148    tab->entries[bin].record = value;
     1149#ifdef ST_DEBUG
     1150    st_check(tab);
     1151#endif
     1152    return 1;
     1153}
     1154
     1155#ifdef RUBY
     1156/* Insert (KEY, VALUE, HASH) into table TAB.  The table should not have
     1157   entry with KEY before the insertion.  */
     1158static inline void
     1159st_add_direct_with_hash(st_table *tab,
     1160                        st_data_t key, st_data_t value, st_hash_t hash) {
     1161    st_table_entry *entry;
     1162    st_index_t ind;
     1163    st_index_t bin_ind;
     1164
     1165    rebuild_table_if_necessary(tab);
     1166    ind = tab->entries_bound++;
     1167    entry = &tab->entries[ind];
     1168    entry->hash = hash;
     1169    entry->key = key;
     1170    entry->record = value;
     1171    tab->num_entries++;
     1172    if (tab->bins != NULL) {
     1173        bin_ind = find_table_bin_ind_direct(tab, hash, key);
     1174        st_assert (bin_ind != UNDEFINED_BIN_IND);
     1175        set_bin(tab->bins, get_size_ind(tab), bin_ind, ind + ENTRY_BASE);
     1176    }
     1177#ifdef ST_DEBUG
     1178    st_check(tab);
     1179#endif
     1180}
     1181
     1182/* Insert (KEY, VALUE) into table TAB.  The table should not have
     1183   entry with KEY before the insertion.  */
    1991184void
    200 st_free_table(table)
    201     st_table *table;
    202 {
    203     register st_table_entry *ptr, *next;
    204     int i;
    205 
    206     for(i = 0; i < table->num_bins; i++) {
    207         ptr = table->bins[i];
    208         while (ptr != 0) {
    209             next = ptr->next;
    210             free(ptr);
    211             ptr = next;
     1185st_add_direct(st_table *tab, st_data_t key, st_data_t value)
     1186{
     1187    st_hash_t hash_value;
     1188
     1189    hash_value = do_hash(key, tab);
     1190    st_add_direct_with_hash(tab, key, value, hash_value);
     1191}
     1192
     1193/* Insert (FUNC(KEY), VALUE) into table TAB and return zero.  If
     1194   there is already entry with KEY in the table, return nonzero and
     1195   and update the value of the found entry.  */
     1196int
     1197st_insert2(st_table *tab, st_data_t key, st_data_t value,
     1198           st_data_t (*func)(st_data_t)) {
     1199    st_table_entry *entry;
     1200    st_index_t bin;
     1201    st_index_t ind, check;
     1202    st_hash_t hash_value;
     1203    st_index_t bin_ind;
     1204    int new_p;
     1205
     1206    rebuild_table_if_necessary (tab);
     1207    hash_value = do_hash(key, tab);
     1208    if (tab->bins == NULL) {
     1209        bin = find_entry(tab, hash_value, key);
     1210        new_p = bin == UNDEFINED_ENTRY_IND;
     1211        bin_ind = UNDEFINED_BIN_IND;
     1212    } else {
     1213        bin = find_table_bin_ptr_and_reserve(tab, &hash_value,
     1214                                             key, &bin_ind);
     1215        new_p = bin == UNDEFINED_ENTRY_IND;
     1216        bin -= ENTRY_BASE;
     1217    }
     1218    if (new_p) {
     1219        st_assert(tab->entries_bound < get_allocated_entries(tab));
     1220        check = tab->rebuilds_num;
     1221        key = (*func)(key);
     1222        st_assert(check == tab->rebuilds_num
     1223                  && do_hash(key, tab) == hash_value);
     1224        ind = tab->entries_bound++;
     1225        entry = &tab->entries[ind];
     1226        entry->hash = hash_value;
     1227        entry->key = key;
     1228        entry->record = value;
     1229        if (bin_ind != UNDEFINED_BIN_IND)
     1230            set_bin(tab->bins, get_size_ind(tab), bin_ind, ind + ENTRY_BASE);
     1231#ifdef ST_DEBUG
     1232        st_check(tab);
     1233#endif
     1234        return 0;
     1235    }
     1236    tab->entries[bin].record = value;
     1237#ifdef ST_DEBUG
     1238    st_check(tab);
     1239#endif
     1240    return 1;
     1241}
     1242
     1243/* Create and return a copy of table OLD_TAB.  */
     1244st_table *
     1245st_copy(st_table *old_tab)
     1246{
     1247    st_table *new_tab;
     1248
     1249    new_tab = (st_table *) malloc(sizeof(st_table));
     1250    if (new_tab == NULL)
     1251        return NULL;
     1252    *new_tab = *old_tab;
     1253    if (old_tab->bins == NULL)
     1254        new_tab->bins = NULL;
     1255    else {
     1256        new_tab->bins = (st_index_t *) malloc(bins_size(old_tab));
     1257        if (new_tab->bins == NULL) {
     1258            free(new_tab);
     1259            return NULL;
    2121260        }
    2131261    }
    214     free(table->bins);
    215     free(table);
    216 }
    217 
    218 #define PTR_NOT_EQUAL(table, ptr, hash_val, key) \
    219 ((ptr) != 0 && (ptr->hash != (hash_val) || !EQUAL((table), (key), (ptr)->key)))
    220 
    221 #ifdef HASH_LOG
    222 #define COLLISION collision++
    223 #else
    224 #define COLLISION
    225 #endif
    226 
    227 #define FIND_ENTRY(table, ptr, hash_val, bin_pos) do {\
    228     bin_pos = hash_val%(table)->num_bins;\
    229     ptr = (table)->bins[bin_pos];\
    230     if (PTR_NOT_EQUAL(table, ptr, hash_val, key)) {\
    231         COLLISION;\
    232         while (PTR_NOT_EQUAL(table, ptr->next, hash_val, key)) {\
    233             ptr = ptr->next;\
    234         }\
    235         ptr = ptr->next;\
    236     }\
    237 } while (0)
     1262    new_tab->entries = (st_table_entry *) malloc(get_allocated_entries(old_tab)
     1263                                                 * sizeof(st_table_entry));
     1264    if (new_tab->entries == NULL) {
     1265        st_free_table(new_tab);
     1266        return NULL;
     1267    }
     1268    MEMCPY(new_tab->entries, old_tab->entries, st_table_entry,
     1269           get_allocated_entries(old_tab));
     1270    if (old_tab->bins != NULL)
     1271        MEMCPY(new_tab->bins, old_tab->bins, char, bins_size(old_tab));
     1272#ifdef ST_DEBUG
     1273    st_check(new_tab);
     1274#endif
     1275    return new_tab;
     1276}
     1277#endif /* RUBY */
     1278
     1279/* Update the entries start of table TAB after removing an entry
     1280   with index N in the array entries.  */
     1281static inline void
     1282update_range_for_deleted(st_table *tab, st_index_t n)
     1283{
     1284    /* Do not update entries_bound here.  Otherwise, we can fill all
     1285       bins by deleted entry value before rebuilding the table.  */
     1286    if (tab->entries_start == n)
     1287        tab->entries_start = n + 1;
     1288}
     1289
     1290#ifdef RUBY
     1291/* Delete entry with KEY from table TAB, set up *VALUE (unless
     1292   VALUE is zero) from deleted table entry, and return non-zero.  If
     1293   there is no entry with KEY in the table, clear *VALUE (unless VALUE
     1294   is zero), and return zero.  */
     1295static int
     1296st_general_delete(st_table *tab, st_data_t *key, st_data_t *value)
     1297{
     1298    st_table_entry *entry;
     1299    st_index_t bin;
     1300    st_index_t bin_ind;
     1301    st_hash_t hash;
     1302
     1303    st_assert(tab != NULL);
     1304    hash = do_hash(*key, tab);
     1305    if (tab->bins == NULL) {
     1306        bin = find_entry(tab, hash, *key);
     1307        if (bin == UNDEFINED_ENTRY_IND) {
     1308            if (value != 0) *value = 0;
     1309            return 0;
     1310        }
     1311    } else {
     1312        bin_ind = find_table_bin_ind(tab, hash, *key);
     1313        if (bin_ind == UNDEFINED_BIN_IND) {
     1314            if (value != 0) *value = 0;
     1315            return 0;
     1316        }
     1317        bin = get_bin(tab->bins, get_size_ind(tab), bin_ind) - ENTRY_BASE;
     1318        MARK_BIN_DELETED(tab, bin_ind);
     1319    }
     1320    entry = &tab->entries[bin];
     1321    *key = entry->key;
     1322    if (value != 0) *value = entry->record;
     1323    MARK_ENTRY_DELETED(entry);
     1324    tab->num_entries--;
     1325    update_range_for_deleted(tab, bin);
     1326#ifdef ST_DEBUG
     1327    st_check(tab);
     1328#endif
     1329    return 1;
     1330}
    2381331
    2391332int
    240 st_lookup(table, key, value)
    241     st_table *table;
    242     register st_data_t key;
    243     st_data_t *value;
    244 {
    245     unsigned int hash_val, bin_pos;
    246     register st_table_entry *ptr;
    247 
    248     hash_val = do_hash(key, table);
    249     FIND_ENTRY(table, ptr, hash_val, bin_pos);
    250 
    251     if (ptr == 0) {
    252         return 0;
    253     }
    254     else {
    255         if (value != 0)  *value = ptr->record;
    256         return 1;
    257     }
    258 }
    259 
    260 #define ADD_DIRECT(table, key, value, hash_val, bin_pos)\
    261 do {\
    262     st_table_entry *entry;\
    263     if (table->num_entries/(table->num_bins) > ST_DEFAULT_MAX_DENSITY) {\
    264         rehash(table);\
    265         bin_pos = hash_val % table->num_bins;\
    266     }\
    267     \
    268     entry = alloc(st_table_entry);\
    269     \
    270     entry->hash = hash_val;\
    271     entry->key = key;\
    272     entry->record = value;\
    273     entry->next = table->bins[bin_pos];\
    274     table->bins[bin_pos] = entry;\
    275     table->num_entries++;\
    276 } while (0)
    277 
     1333st_delete(st_table *tab, st_data_t *key, st_data_t *value)
     1334{
     1335    return st_general_delete(tab, key, value);
     1336}
     1337
     1338/* The function and other functions with suffix '_safe' or '_check'
     1339   are originated from the previous implementation of the hash tables.
     1340   It was necessary for correct deleting entries during traversing
     1341   tables.  The current implementation permits deletion during
     1342   traversing without a specific way to do this.  */
    2781343int
    279 st_insert(table, key, value)
    280     register st_table *table;
    281     register st_data_t key;
    282     st_data_t value;
    283 {
    284     unsigned int hash_val, bin_pos;
    285     register st_table_entry *ptr;
    286 
    287     hash_val = do_hash(key, table);
    288     FIND_ENTRY(table, ptr, hash_val, bin_pos);
    289 
    290     if (ptr == 0) {
    291         ADD_DIRECT(table, key, value, hash_val, bin_pos);
    292         return 0;
    293     }
    294     else {
    295         ptr->record = value;
    296         return 1;
    297     }
    298 }
    299 
    300 void
    301 st_add_direct(table, key, value)
    302     st_table *table;
    303     st_data_t key;
    304     st_data_t value;
    305 {
    306     unsigned int hash_val, bin_pos;
    307 
    308     hash_val = do_hash(key, table);
    309     bin_pos = hash_val % table->num_bins;
    310     ADD_DIRECT(table, key, value, hash_val, bin_pos);
    311 }
    312 
    313 static void
    314 rehash(table)
    315     register st_table *table;
    316 {
    317     register st_table_entry *ptr, *next, **new_bins;
    318     int i, old_num_bins = table->num_bins, new_num_bins;
    319     unsigned int hash_val;
    320 
    321     new_num_bins = new_size(old_num_bins+1);
    322     new_bins = (st_table_entry**)Calloc(new_num_bins, sizeof(st_table_entry*));
    323 
    324     for(i = 0; i < old_num_bins; i++) {
    325         ptr = table->bins[i];
    326         while (ptr != 0) {
    327             next = ptr->next;
    328             hash_val = ptr->hash % new_num_bins;
    329             ptr->next = new_bins[hash_val];
    330             new_bins[hash_val] = ptr;
    331             ptr = next;
    332         }
    333     }
    334     free(table->bins);
    335     table->num_bins = new_num_bins;
    336     table->bins = new_bins;
    337 }
    338 
    339 st_table*
    340 st_copy(old_table)
    341     st_table *old_table;
    342 {
    343     st_table *new_table;
    344     st_table_entry *ptr, *entry;
    345     int i, num_bins = old_table->num_bins;
    346 
    347     new_table = alloc(st_table);
    348     if (new_table == 0) {
    349         return 0;
    350     }
    351 
    352     *new_table = *old_table;
    353     new_table->bins = (st_table_entry**)
    354         Calloc((unsigned)num_bins, sizeof(st_table_entry*));
    355 
    356     if (new_table->bins == 0) {
    357         free(new_table);
    358         return 0;
    359     }
    360 
    361     for(i = 0; i < num_bins; i++) {
    362         new_table->bins[i] = 0;
    363         ptr = old_table->bins[i];
    364         while (ptr != 0) {
    365             entry = alloc(st_table_entry);
    366             if (entry == 0) {
    367                 free(new_table->bins);
    368                 free(new_table);
    369                 return 0;
     1344st_delete_safe(st_table *tab, st_data_t *key, st_data_t *value,
     1345               st_data_t never ATTRIBUTE_UNUSED) {
     1346    return st_general_delete(tab, key, value);
     1347}
     1348
     1349/* If table TAB is empty, clear *VALUE (unless VALUE is zero), and
     1350   return zero.  Otherwise, remove the first entry in the table.
     1351   Return its key through KEY and its record through VALUE (unless
     1352   VALUE is zero).  */
     1353int
     1354st_shift(st_table *tab, st_data_t *key, st_data_t *value)
     1355{
     1356    st_index_t i, bound;
     1357    st_index_t bin;
     1358    st_table_entry *entries, *curr_entry_ptr;
     1359    st_index_t bin_ind;
     1360
     1361    entries = tab->entries;
     1362    bound = tab->entries_bound;
     1363    for (i = tab->entries_start; i < bound; i++) {
     1364        curr_entry_ptr = &entries[i];
     1365        if (! DELETED_ENTRY_P(curr_entry_ptr)) {
     1366            if (value != 0) *value = curr_entry_ptr->record;
     1367            *key = curr_entry_ptr->key;
     1368            if (tab->bins == NULL) {
     1369                bin = find_entry(tab, curr_entry_ptr->hash, curr_entry_ptr->key);
     1370                st_assert(bin != UNDEFINED_ENTRY_IND
     1371                          && &entries[bin] == curr_entry_ptr);
     1372            } else {
     1373                bin_ind = find_table_bin_ind(tab, curr_entry_ptr->hash,
     1374                                             curr_entry_ptr->key);
     1375                st_assert(bin_ind != UNDEFINED_BIN_IND
     1376                          && &entries[get_bin(tab->bins, get_size_ind(tab), bin_ind)
     1377                                      - ENTRY_BASE] == curr_entry_ptr);
     1378                MARK_BIN_DELETED(tab, bin_ind);
    3701379            }
    371             *entry = *ptr;
    372             entry->next = new_table->bins[i];
    373             new_table->bins[i] = entry;
    374             ptr = ptr->next;
    375         }
    376     }
    377     return new_table;
    378 }
    379 
    380 int
    381 st_delete(table, key, value)
    382     register st_table *table;
    383     register st_data_t *key;
    384     st_data_t *value;
    385 {
    386     unsigned int hash_val;
    387     st_table_entry *tmp;
    388     register st_table_entry *ptr;
    389 
    390     hash_val = do_hash_bin(*key, table);
    391     ptr = table->bins[hash_val];
    392 
    393     if (ptr == 0) {
    394         if (value != 0) *value = 0;
    395         return 0;
    396     }
    397 
    398     if (EQUAL(table, *key, ptr->key)) {
    399         table->bins[hash_val] = ptr->next;
    400         table->num_entries--;
    401         if (value != 0) *value = ptr->record;
    402         *key = ptr->key;
    403         free(ptr);
    404         return 1;
    405     }
    406 
    407     for(; ptr->next != 0; ptr = ptr->next) {
    408         if (EQUAL(table, ptr->next->key, *key)) {
    409             tmp = ptr->next;
    410             ptr->next = ptr->next->next;
    411             table->num_entries--;
    412             if (value != 0) *value = tmp->record;
    413             *key = tmp->key;
    414             free(tmp);
     1380            MARK_ENTRY_DELETED(curr_entry_ptr);
     1381            tab->num_entries--;
     1382            update_range_for_deleted(tab, i);
     1383#ifdef ST_DEBUG
     1384            st_check(tab);
     1385#endif
    4151386            return 1;
    4161387        }
    4171388    }
    418 
     1389    st_assert(tab->num_entries == 0);
     1390    tab->entries_start = tab->entries_bound = 0;
     1391    if (value != 0) *value = 0;
    4191392    return 0;
    4201393}
    4211394
     1395/* See comments for function st_delete_safe.  */
     1396void
     1397st_cleanup_safe(st_table *tab ATTRIBUTE_UNUSED,
     1398                st_data_t never ATTRIBUTE_UNUSED) {
     1399}
     1400
     1401/* Find entry with KEY in table TAB, call FUNC with the key and the
     1402   value of the found entry, and non-zero as the 3rd argument.  If the
     1403   entry is not found, call FUNC with KEY, and 2 zero arguments.  If
     1404   the call returns ST_CONTINUE, the table will have an entry with key
     1405   and value returned by FUNC through the 1st and 2nd parameters.  If
     1406   the call of FUNC returns ST_DELETE, the table will not have entry
     1407   with KEY.  The function returns flag of that the entry with KEY was
     1408   in the table before the call.  */
    4221409int
    423 st_delete_safe(table, key, value, never)
    424     register st_table *table;
    425     register st_data_t *key;
    426     st_data_t *value;
    427     st_data_t never;
    428 {
    429     unsigned int hash_val;
    430     register st_table_entry *ptr;
    431 
    432     hash_val = do_hash_bin(*key, table);
    433     ptr = table->bins[hash_val];
    434 
    435     if (ptr == 0) {
    436         if (value != 0) *value = 0;
    437         return 0;
    438     }
    439 
    440     for(; ptr != 0; ptr = ptr->next) {
    441         if ((ptr->key != never) && EQUAL(table, ptr->key, *key)) {
    442             table->num_entries--;
    443             *key = ptr->key;
    444             if (value != 0) *value = ptr->record;
    445             ptr->key = ptr->record = never;
    446             return 1;
     1410st_update(st_table *tab, st_data_t key,
     1411          st_update_callback_func *func, st_data_t arg) {
     1412    st_table_entry *entry = NULL; /* to avoid uninitialized value warning */
     1413    st_index_t bin = 0; /* Ditto */
     1414    st_table_entry *entries;
     1415    st_index_t bin_ind;
     1416    st_data_t value = 0, old_key;
     1417    st_index_t check;
     1418    int retval, existing;
     1419    st_hash_t hash = do_hash(key, tab);
     1420
     1421    entries = tab->entries;
     1422    if (tab->bins == NULL) {
     1423        bin = find_entry(tab, hash, key);
     1424        existing = bin != UNDEFINED_ENTRY_IND;
     1425        entry = &entries[bin];
     1426        bin_ind = UNDEFINED_BIN_IND;
     1427    } else {
     1428        bin_ind = find_table_bin_ind(tab, hash, key);
     1429        existing = bin_ind != UNDEFINED_BIN_IND;
     1430        if (existing) {
     1431            bin = get_bin(tab->bins, get_size_ind(tab), bin_ind) - ENTRY_BASE;
     1432            entry = &entries[bin];
    4471433        }
    4481434    }
    449 
     1435    if (existing) {
     1436        key = entry->key;
     1437        value = entry->record;
     1438    }
     1439    old_key = key;
     1440    check = tab->rebuilds_num;
     1441    retval = (*func)(&key, &value, arg, existing);
     1442    st_assert(check == tab->rebuilds_num);
     1443    switch (retval) {
     1444    case ST_CONTINUE:
     1445        if (! existing) {
     1446            st_add_direct_with_hash(tab, key, value, hash);
     1447            break;
     1448        }
     1449        if (old_key != key) {
     1450            entry->key = key;
     1451        }
     1452        entry->record = value;
     1453        break;
     1454    case ST_DELETE:
     1455        if (existing) {
     1456            if (bin_ind != UNDEFINED_BIN_IND)
     1457                MARK_BIN_DELETED(tab, bin_ind);
     1458            MARK_ENTRY_DELETED(entry);
     1459            tab->num_entries--;
     1460            update_range_for_deleted(tab, bin);
     1461#ifdef ST_DEBUG
     1462            st_check(tab);
     1463#endif
     1464        }
     1465        break;
     1466    }
     1467#ifdef ST_DEBUG
     1468    st_check(tab);
     1469#endif
     1470    return existing;
     1471}
     1472#endif /* RUBY */
     1473
     1474/* Traverse all entries in table TAB calling FUNC with current entry
     1475   key and value and zero.  If the call returns ST_STOP, stop
     1476   traversing.  If the call returns ST_DELETE, delete the current
     1477   entry from the table.  In case of ST_CHECK or ST_CONTINUE, continue
     1478   traversing.  The function returns zero unless an error is found.
     1479   CHECK_P is flag of st_foreach_check call.  The behavior is a bit
     1480   different for ST_CHECK and when the current element is removed
     1481   during traversing.  */
     1482static inline int
     1483st_general_foreach(st_table *tab, int (*func)(ANYARGS), st_data_t arg,
     1484                   int check_p) {
     1485    st_index_t bin;
     1486    st_index_t bin_ind;
     1487    st_table_entry *entries, *curr_entry_ptr;
     1488    enum st_retval retval;
     1489    st_index_t i, rebuilds_num;
     1490    st_hash_t hash;
     1491    st_data_t key;
     1492    int error_p, packed_p = tab->bins == NULL;
     1493
     1494    st_assert(tab->entries_start <= tab->entries_bound);
     1495    entries = tab->entries;
     1496    /* The bound can change inside the loop even without rebuilding
     1497       the table, e.g. by an entry inesrtion.  */
     1498    for (i = tab->entries_start; i < tab->entries_bound; i++) {
     1499        curr_entry_ptr = &entries[i];
     1500        if (EXPECT(DELETED_ENTRY_P(curr_entry_ptr), 0))
     1501            continue;
     1502        key = curr_entry_ptr->key;
     1503        rebuilds_num = tab->rebuilds_num;
     1504        hash = curr_entry_ptr->hash;
     1505        retval = (*func)(key, curr_entry_ptr->record, arg, 0);
     1506        if (rebuilds_num != tab->rebuilds_num) {
     1507            entries = tab->entries;
     1508            packed_p = tab->bins == NULL;
     1509            if (packed_p) {
     1510                i = find_entry(tab, hash, key);
     1511                error_p = i == UNDEFINED_ENTRY_IND;
     1512            } else {
     1513                i = find_table_entry_ind(tab, hash, key);
     1514                error_p = i == UNDEFINED_ENTRY_IND;
     1515                i -= ENTRY_BASE;
     1516            }
     1517            if (error_p && check_p) {
     1518                /* call func with error notice */
     1519                retval = (*func)(0, 0, arg, 1);
     1520#ifdef ST_DEBUG
     1521                st_check(tab);
     1522#endif
     1523                return 1;
     1524            }
     1525            curr_entry_ptr = &entries[i];
     1526        }
     1527        switch (retval) {
     1528        case ST_CONTINUE:
     1529            break;
     1530        case ST_CHECK:
     1531            if (check_p)
     1532                break;
     1533        case ST_STOP:
     1534#ifdef ST_DEBUG
     1535            st_check(tab);
     1536#endif
     1537            return 0;
     1538        case ST_DELETE:
     1539            if (packed_p) {
     1540                bin = find_entry(tab, hash, curr_entry_ptr->key);
     1541                if (bin == UNDEFINED_ENTRY_IND)
     1542                    break;
     1543            } else {
     1544                bin_ind = find_table_bin_ind(tab, hash, curr_entry_ptr->key);
     1545                if (bin_ind == UNDEFINED_BIN_IND)
     1546                    break;
     1547                bin = get_bin(tab->bins, get_size_ind(tab), bin_ind) - ENTRY_BASE;
     1548                MARK_BIN_DELETED(tab, bin_ind);
     1549            }
     1550            st_assert(&entries[bin] == curr_entry_ptr);
     1551            MARK_ENTRY_DELETED(curr_entry_ptr);
     1552            tab->num_entries--;
     1553            update_range_for_deleted(tab, bin);
     1554#ifdef ST_DEBUG
     1555            st_check(tab);
     1556#endif
     1557            break;
     1558        }
     1559    }
     1560#ifdef ST_DEBUG
     1561    st_check(tab);
     1562#endif
    4501563    return 0;
    4511564}
    4521565
    453 static int
    454 #if defined(__GNUC__)
    455 delete_never(st_data_t key __attribute__ ((unused)), st_data_t value,
    456              st_data_t never)
    457 #else
    458 delete_never(key, value, never)
    459     st_data_t key, value, never;
    460 #endif
    461 {
    462     if (value == never) return ST_DELETE;
    463     return ST_CONTINUE;
    464 }
    465 
    466 void
    467 st_cleanup_safe(table, never)
    468     st_table *table;
    469     st_data_t never;
    470 {
    471     int num_entries = table->num_entries;
    472 
    473     st_foreach(table, delete_never, never);
    474     table->num_entries = num_entries;
    475 }
    476 
    4771566int
    478 st_foreach(table, func, arg)
    479     st_table *table;
    480     int (*func)();
    481     st_data_t arg;
    482 {
    483     st_table_entry *ptr, *last, *tmp;
    484     enum st_retval retval;
    485     int i;
    486 
    487     for(i = 0; i < table->num_bins; i++) {
    488         last = 0;
    489         for(ptr = table->bins[i]; ptr != 0;) {
    490             retval = (*func)(ptr->key, ptr->record, arg);
    491             switch (retval) {
    492             case ST_CHECK:      /* check if hash is modified during iteration */
    493                 tmp = 0;
    494                 if (i < table->num_bins) {
    495                     for (tmp = table->bins[i]; tmp; tmp=tmp->next) {
    496                         if (tmp == ptr) break;
    497                     }
    498                 }
    499                 if (!tmp) {
    500                     /* call func with error notice */
    501                     return 1;
    502                 }
    503                 /* fall through */
    504             case ST_CONTINUE:
    505                 last = ptr;
    506                 ptr = ptr->next;
    507                 break;
    508             case ST_STOP:
    509                 return 0;
    510             case ST_DELETE:
    511                 tmp = ptr;
    512                 if (last == 0) {
    513                     table->bins[i] = ptr->next;
    514                 }
    515                 else {
    516                     last->next = ptr->next;
    517                 }
    518                 ptr = ptr->next;
    519                 free(tmp);
    520                 table->num_entries--;
     1567st_foreach(st_table *tab, int (*func)(ANYARGS), st_data_t arg)
     1568{
     1569  return st_general_foreach(tab, func, arg, FALSE);
     1570}
     1571
     1572#ifdef RUBY
     1573/* See comments for function st_delete_safe.  */
     1574int
     1575st_foreach_check(st_table *tab, int (*func)(ANYARGS), st_data_t arg,
     1576                 st_data_t never ATTRIBUTE_UNUSED) {
     1577  return st_general_foreach(tab, func, arg, TRUE);
     1578}
     1579
     1580/* Set up array KEYS by at most SIZE keys of head table TAB entries.
     1581   Return the number of keys set up in array KEYS.  */
     1582static inline st_index_t
     1583st_general_keys(st_table *tab, st_data_t *keys, st_index_t size)
     1584{
     1585    st_index_t i, bound;
     1586    st_data_t key, *keys_start, *keys_end;
     1587    st_table_entry *curr_entry_ptr, *entries = tab->entries;
     1588
     1589    bound = tab->entries_bound;
     1590    keys_start = keys;
     1591    keys_end = keys + size;
     1592    for (i = tab->entries_start; i < bound; i++) {
     1593        if (keys == keys_end)
     1594            break;
     1595        curr_entry_ptr = &entries[i];
     1596        key = curr_entry_ptr->key;
     1597        if (! DELETED_ENTRY_P(curr_entry_ptr))
     1598            *keys++ = key;
     1599    }
     1600
     1601    return keys - keys_start;
     1602}
     1603
     1604st_index_t
     1605st_keys(st_table *tab, st_data_t *keys, st_index_t size)
     1606{
     1607    return st_general_keys(tab, keys, size);
     1608}
     1609
     1610/* See comments for function st_delete_safe.  */
     1611st_index_t
     1612st_keys_check(st_table *tab, st_data_t *keys, st_index_t size,
     1613              st_data_t never ATTRIBUTE_UNUSED) {
     1614    return st_general_keys(tab, keys, size);
     1615}
     1616
     1617/* Set up array VALUES by at most SIZE values of head table TAB
     1618   entries.  Return the number of values set up in array VALUES.  */
     1619static inline st_index_t
     1620st_general_values(st_table *tab, st_data_t *values, st_index_t size)
     1621{
     1622    st_index_t i, bound;
     1623    st_data_t *values_start, *values_end;
     1624    st_table_entry *curr_entry_ptr, *entries = tab->entries;
     1625
     1626    values_start = values;
     1627    values_end = values + size;
     1628    bound = tab->entries_bound;
     1629    st_assert(bound != 0);
     1630    for (i = tab->entries_start; i < bound; i++) {
     1631        if (values == values_end)
     1632            break;
     1633        curr_entry_ptr = &entries[i];
     1634        if (! DELETED_ENTRY_P(curr_entry_ptr))
     1635            *values++ = curr_entry_ptr->record;
     1636    }
     1637
     1638    return values - values_start;
     1639}
     1640
     1641st_index_t
     1642st_values(st_table *tab, st_data_t *values, st_index_t size)
     1643{
     1644    return st_general_values(tab, values, size);
     1645}
     1646
     1647/* See comments for function st_delete_safe.  */
     1648st_index_t
     1649st_values_check(st_table *tab, st_data_t *values, st_index_t size,
     1650                st_data_t never ATTRIBUTE_UNUSED) {
     1651    return st_general_values(tab, values, size);
     1652}
     1653#endif /* RUBY */
     1654
     1655#ifdef RUBY
     1656#define FNV1_32A_INIT 0x811c9dc5
     1657
     1658/*
     1659 * 32 bit magic FNV-1a prime
     1660 */
     1661#define FNV_32_PRIME 0x01000193
     1662
     1663#ifndef UNALIGNED_WORD_ACCESS
     1664# if defined(__i386) || defined(__i386__) || defined(_M_IX86) || \
     1665     defined(__x86_64) || defined(__x86_64__) || defined(_M_AMD64) || \
     1666     defined(__powerpc64__) || \
     1667     defined(__mc68020__)
     1668#   define UNALIGNED_WORD_ACCESS 1
     1669# endif
     1670#endif
     1671#ifndef UNALIGNED_WORD_ACCESS
     1672# define UNALIGNED_WORD_ACCESS 0
     1673#endif
     1674
     1675/* This hash function is quite simplified MurmurHash3
     1676 * Simplification is legal, cause most of magic still happens in finalizator.
     1677 * And finalizator is almost the same as in MurmurHash3 */
     1678#define BIG_CONSTANT(x,y) ((st_index_t)(x)<<32|(st_index_t)(y))
     1679#define ROTL(x,n) ((x)<<(n)|(x)>>(SIZEOF_ST_INDEX_T*CHAR_BIT-(n)))
     1680
     1681#if ST_INDEX_BITS <= 32
     1682#define C1 (st_index_t)0xcc9e2d51
     1683#define C2 (st_index_t)0x1b873593
     1684#else
     1685#define C1 BIG_CONSTANT(0x87c37b91,0x114253d5);
     1686#define C2 BIG_CONSTANT(0x4cf5ad43,0x2745937f);
     1687#endif
     1688static inline st_index_t
     1689murmur_step(st_index_t h, st_index_t k)
     1690{
     1691#if ST_INDEX_BITS <= 32
     1692#define r1 (17)
     1693#define r2 (11)
     1694#else
     1695#define r1 (33)
     1696#define r2 (24)
     1697#endif
     1698    k *= C1;
     1699    h ^= ROTL(k, r1);
     1700    h *= C2;
     1701    h = ROTL(h, r2);
     1702    return h;
     1703}
     1704#undef r1
     1705#undef r2
     1706
     1707static inline st_index_t
     1708murmur_finish(st_index_t h)
     1709{
     1710#if ST_INDEX_BITS <= 32
     1711#define r1 (16)
     1712#define r2 (13)
     1713#define r3 (16)
     1714    const st_index_t c1 = 0x85ebca6b;
     1715    const st_index_t c2 = 0xc2b2ae35;
     1716#else
     1717/* values are taken from Mix13 on http://zimbry.blogspot.ru/2011/09/better-bit-mixing-improving-on.html */
     1718#define r1 (30)
     1719#define r2 (27)
     1720#define r3 (31)
     1721    const st_index_t c1 = BIG_CONSTANT(0xbf58476d,0x1ce4e5b9);
     1722    const st_index_t c2 = BIG_CONSTANT(0x94d049bb,0x133111eb);
     1723#endif
     1724#if ST_INDEX_BITS > 64
     1725    h ^= h >> 64;
     1726    h *= c2;
     1727    h ^= h >> 65;
     1728#endif
     1729    h ^= h >> r1;
     1730    h *= c1;
     1731    h ^= h >> r2;
     1732    h *= c2;
     1733    h ^= h >> r3;
     1734    return h;
     1735}
     1736#undef r1
     1737#undef r2
     1738#undef r3
     1739
     1740st_index_t
     1741st_hash(const void *ptr, size_t len, st_index_t h)
     1742{
     1743    const char *data = ptr;
     1744    st_index_t t = 0;
     1745    size_t l = len;
     1746
     1747#define data_at(n) (st_index_t)((unsigned char)data[(n)])
     1748#define UNALIGNED_ADD_4 UNALIGNED_ADD(2); UNALIGNED_ADD(1); UNALIGNED_ADD(0)
     1749#if SIZEOF_ST_INDEX_T > 4
     1750#define UNALIGNED_ADD_8 UNALIGNED_ADD(6); UNALIGNED_ADD(5); UNALIGNED_ADD(4); UNALIGNED_ADD(3); UNALIGNED_ADD_4
     1751#if SIZEOF_ST_INDEX_T > 8
     1752#define UNALIGNED_ADD_16 UNALIGNED_ADD(14); UNALIGNED_ADD(13); UNALIGNED_ADD(12); UNALIGNED_ADD(11); \
     1753    UNALIGNED_ADD(10); UNALIGNED_ADD(9); UNALIGNED_ADD(8); UNALIGNED_ADD(7); UNALIGNED_ADD_8
     1754#define UNALIGNED_ADD_ALL UNALIGNED_ADD_16
     1755#endif
     1756#define UNALIGNED_ADD_ALL UNALIGNED_ADD_8
     1757#else
     1758#define UNALIGNED_ADD_ALL UNALIGNED_ADD_4
     1759#endif
     1760#undef SKIP_TAIL
     1761    if (len >= sizeof(st_index_t)) {
     1762#if !UNALIGNED_WORD_ACCESS
     1763        int align = (int)((st_data_t)data % sizeof(st_index_t));
     1764        if (align) {
     1765            st_index_t d = 0;
     1766            int sl, sr, pack;
     1767
     1768            switch (align) {
     1769#ifdef WORDS_BIGENDIAN
     1770# define UNALIGNED_ADD(n) case SIZEOF_ST_INDEX_T - (n) - 1: \
     1771                t |= data_at(n) << CHAR_BIT*(SIZEOF_ST_INDEX_T - (n) - 2)
     1772#else
     1773# define UNALIGNED_ADD(n) case SIZEOF_ST_INDEX_T - (n) - 1:     \
     1774                t |= data_at(n) << CHAR_BIT*(n)
     1775#endif
     1776                UNALIGNED_ADD_ALL;
     1777#undef UNALIGNED_ADD
    5211778            }
     1779
     1780#ifdef WORDS_BIGENDIAN
     1781            t >>= (CHAR_BIT * align) - CHAR_BIT;
     1782#else
     1783            t <<= (CHAR_BIT * align);
     1784#endif
     1785
     1786            data += sizeof(st_index_t)-align;
     1787            len -= sizeof(st_index_t)-align;
     1788
     1789            sl = CHAR_BIT * (SIZEOF_ST_INDEX_T-align);
     1790            sr = CHAR_BIT * align;
     1791
     1792            while (len >= sizeof(st_index_t)) {
     1793                d = *(st_index_t *)data;
     1794#ifdef WORDS_BIGENDIAN
     1795                t = (t << sr) | (d >> sl);
     1796#else
     1797                t = (t >> sr) | (d << sl);
     1798#endif
     1799                h = murmur_step(h, t);
     1800                t = d;
     1801                data += sizeof(st_index_t);
     1802                len -= sizeof(st_index_t);
     1803            }
     1804
     1805            pack = len < (size_t)align ? (int)len : align;
     1806            d = 0;
     1807            switch (pack) {
     1808#ifdef WORDS_BIGENDIAN
     1809# define UNALIGNED_ADD(n) case (n) + 1: \
     1810                d |= data_at(n) << CHAR_BIT*(SIZEOF_ST_INDEX_T - (n) - 1)
     1811#else
     1812# define UNALIGNED_ADD(n) case (n) + 1: \
     1813                d |= data_at(n) << CHAR_BIT*(n)
     1814#endif
     1815                UNALIGNED_ADD_ALL;
     1816#undef UNALIGNED_ADD
     1817            }
     1818#ifdef WORDS_BIGENDIAN
     1819            t = (t << sr) | (d >> sl);
     1820#else
     1821            t = (t >> sr) | (d << sl);
     1822#endif
     1823
     1824            if (len < (size_t)align) goto skip_tail;
     1825# define SKIP_TAIL 1
     1826            h = murmur_step(h, t);
     1827            data += pack;
     1828            len -= pack;
    5221829        }
     1830        else
     1831#endif
     1832        {
     1833            do {
     1834                h = murmur_step(h, *(st_index_t *)data);
     1835                data += sizeof(st_index_t);
     1836                len -= sizeof(st_index_t);
     1837            } while (len >= sizeof(st_index_t));
     1838        }
     1839    }
     1840
     1841    t = 0;
     1842    switch (len) {
     1843#if UNALIGNED_WORD_ACCESS && SIZEOF_ST_INDEX_T <= 8 && CHAR_BIT == 8
     1844    /* in this case byteorder doesn't really matter */
     1845#if SIZEOF_ST_INDEX_T > 4
     1846        case 7: t |= data_at(6) << 48;
     1847        case 6: t |= data_at(5) << 40;
     1848        case 5: t |= data_at(4) << 32;
     1849        case 4:
     1850            t |= (st_index_t)*(uint32_t*)data;
     1851            goto skip_tail;
     1852# define SKIP_TAIL 1
     1853#endif
     1854        case 3: t |= data_at(2) << 16;
     1855        case 2: t |= data_at(1) << 8;
     1856        case 1: t |= data_at(0);
     1857#else
     1858#ifdef WORDS_BIGENDIAN
     1859# define UNALIGNED_ADD(n) case (n) + 1: \
     1860        t |= data_at(n) << CHAR_BIT*(SIZEOF_ST_INDEX_T - (n) - 1)
     1861#else
     1862# define UNALIGNED_ADD(n) case (n) + 1: \
     1863        t |= data_at(n) << CHAR_BIT*(n)
     1864#endif
     1865        UNALIGNED_ADD_ALL;
     1866#undef UNALIGNED_ADD
     1867#endif
     1868#ifdef SKIP_TAIL
     1869      skip_tail:
     1870#endif
     1871        h ^= t; h -= ROTL(t, 7);
     1872        h *= C2;
     1873    }
     1874    h ^= l;
     1875
     1876    return murmur_finish(h);
     1877}
     1878
     1879st_index_t
     1880st_hash_uint32(st_index_t h, uint32_t i)
     1881{
     1882    return murmur_step(h, i);
     1883}
     1884
     1885st_index_t
     1886st_hash_uint(st_index_t h, st_index_t i)
     1887{
     1888    i += h;
     1889/* no matter if it is BigEndian or LittleEndian,
     1890 * we hash just integers */
     1891#if SIZEOF_ST_INDEX_T*CHAR_BIT > 8*8
     1892    h = murmur_step(h, i >> 8*8);
     1893#endif
     1894    h = murmur_step(h, i);
     1895    return h;
     1896}
     1897
     1898st_index_t
     1899st_hash_end(st_index_t h)
     1900{
     1901    h = murmur_finish(h);
     1902    return h;
     1903}
     1904
     1905#undef st_hash_start
     1906st_index_t
     1907st_hash_start(st_index_t h)
     1908{
     1909    return h;
     1910}
     1911
     1912static st_index_t
     1913strhash(st_data_t arg)
     1914{
     1915    register const char *string = (const char *)arg;
     1916    return st_hash(string, strlen(string), FNV1_32A_INIT);
     1917}
     1918
     1919int
     1920st_locale_insensitive_strcasecmp(const char *s1, const char *s2)
     1921{
     1922    unsigned int c1, c2;
     1923
     1924    while (1) {
     1925        c1 = (unsigned char)*s1++;
     1926        c2 = (unsigned char)*s2++;
     1927        if (c1 == '\0' || c2 == '\0') {
     1928            if (c1 != '\0') return 1;
     1929            if (c2 != '\0') return -1;
     1930            return 0;
     1931        }
     1932        if ((unsigned int)(c1 - 'A') <= ('Z' - 'A')) c1 += 'a' - 'A';
     1933        if ((unsigned int)(c2 - 'A') <= ('Z' - 'A')) c2 += 'a' - 'A';
     1934        if (c1 != c2) {
     1935            if (c1 > c2)
     1936                return 1;
     1937            else
     1938                return -1;
     1939        }
     1940    }
     1941}
     1942
     1943int
     1944st_locale_insensitive_strncasecmp(const char *s1, const char *s2, size_t n)
     1945{
     1946    unsigned int c1, c2;
     1947
     1948    while (n--) {
     1949        c1 = (unsigned char)*s1++;
     1950        c2 = (unsigned char)*s2++;
     1951        if (c1 == '\0' || c2 == '\0') {
     1952            if (c1 != '\0') return 1;
     1953            if (c2 != '\0') return -1;
     1954            return 0;
     1955        }
     1956        if ((unsigned int)(c1 - 'A') <= ('Z' - 'A')) c1 += 'a' - 'A';
     1957        if ((unsigned int)(c2 - 'A') <= ('Z' - 'A')) c2 += 'a' - 'A';
     1958        if (c1 != c2) {
     1959            if (c1 > c2)
     1960                return 1;
     1961            else
     1962                return -1;
     1963        }
    5231964    }
    5241965    return 0;
    5251966}
    5261967
    527 static int
    528 strhash(string)
    529     register const char *string;
    530 {
    531     register int c;
    532 
    533 #ifdef HASH_ELFHASH
    534     register unsigned int h = 0, g;
    535 
    536     while ((c = *string++) != '\0') {
    537         h = ( h << 4 ) + c;
    538         if ( g = h & 0xF0000000 )
    539             h ^= g >> 24;
    540         h &= ~g;
    541     }
    542     return h;
    543 #elif HASH_PERL
    544     register int val = 0;
    545 
    546     while ((c = *string++) != '\0') {
    547         val += c;
    548         val += (val << 10);
    549         val ^= (val >> 6);
    550     }
    551     val += (val << 3);
    552     val ^= (val >> 11);
    553 
    554     return val + (val << 15);
    555 #else
    556     register int val = 0;
    557 
    558     while ((c = *string++) != '\0') {
    559         val = val*997 + c;
    560     }
    561 
    562     return val + (val>>5);
    563 #endif
    564 }
    565 
    566 static int
    567 numcmp(x, y)
    568     long x, y;
     1968static st_index_t
     1969strcasehash(st_data_t arg)
     1970{
     1971    register const char *string = (const char *)arg;
     1972    register st_index_t hval = FNV1_32A_INIT;
     1973
     1974    /*
     1975     * FNV-1a hash each octet in the buffer
     1976     */
     1977    while (*string) {
     1978        unsigned int c = (unsigned char)*string++;
     1979        if ((unsigned int)(c - 'A') <= ('Z' - 'A')) c += 'a' - 'A';
     1980        hval ^= c;
     1981
     1982        /* multiply by the 32 bit FNV magic prime mod 2^32 */
     1983        hval *= FNV_32_PRIME;
     1984    }
     1985    return hval;
     1986}
     1987
     1988int
     1989st_numcmp(st_data_t x, st_data_t y)
    5691990{
    5701991    return x != y;
    5711992}
    5721993
    573 static int
    574 numhash(n)
    575     long n;
    576 {
    577     return n;
    578 }
     1994st_index_t
     1995st_numhash(st_data_t n)
     1996{
     1997    enum {s1 = 11, s2 = 3};
     1998    return (st_index_t)((n>>s1|(n<<s2)) ^ (n>>s2));
     1999}
     2000#endif /* RUBY */
  • EcnlProtoTool/trunk/onigmo-6.1.3/src/st.h

    r321 r331  
    1 /* This is a public domain general purpose hash table package written by Peter Moore @ UCB. */
     1/* This is a public domain general purpose hash table package
     2   originally written by Peter Moore @ UCB.
    23
    3 /* @(#) st.h 5.1 89/12/14 */
     4   The hash table data strutures were redesigned and the package was
     5   rewritten by Vladimir Makarov <vmakarov@redhat.com>.  */
    46
    5 #ifndef ST_INCLUDED
     7#ifndef RUBY_ST_H
     8#define RUBY_ST_H 1
    69
    7 #define ST_INCLUDED
     10#if defined(__cplusplus)
     11extern "C" {
     12#if 0
     13} /* satisfy cc-mode */
     14#endif
     15#endif
    816
    9 typedef uintptr_t st_data_t;
     17#ifdef RUBY
     18#include "ruby/defines.h"
     19#else /* RUBY */
     20#ifndef RUBY_SYMBOL_EXPORT_BEGIN
     21#define RUBY_SYMBOL_EXPORT_BEGIN
     22#define RUBY_SYMBOL_EXPORT_END
     23#endif
     24#endif /* RUBY */
     25
     26RUBY_SYMBOL_EXPORT_BEGIN
     27
     28#if SIZEOF_LONG == SIZEOF_VOIDP
     29typedef unsigned long st_data_t;
     30#elif SIZEOF_LONG_LONG == SIZEOF_VOIDP
     31typedef unsigned LONG_LONG st_data_t;
     32#else
     33# error ---->> st.c requires sizeof(void*) == sizeof(long) or sizeof(LONG_LONG) to be compiled. <<----
     34#endif
    1035#define ST_DATA_T_DEFINED
    1136
    12 typedef struct st_table st_table;
    13 typedef int st_index_t;
    14 
    15 struct st_hash_type {
    16     int (*compare)();
    17     int (*hash)();
    18 };
    19 
    20 struct st_table {
    21     struct st_hash_type *type;
    22     int num_bins;
    23     int num_entries;
    24     struct st_table_entry **bins;
    25 };
    26 
    27 #define st_is_member(table,key) st_lookup(table,key,(st_data_t *)0)
    28 
    29 enum st_retval {ST_CONTINUE, ST_STOP, ST_DELETE, ST_CHECK};
    30 
     37#ifndef CHAR_BIT
     38# ifdef HAVE_LIMITS_H
     39#  include <limits.h>
     40# else
     41#  define CHAR_BIT 8
     42# endif
     43#endif
    3144#ifndef _
    3245# define _(args) args
     
    4053#endif
    4154
    42 st_table *st_init_table _((struct st_hash_type *));
    43 st_table *st_init_table_with_size _((struct st_hash_type *, int));
    44 st_table *st_init_numtable _((void));
    45 st_table *st_init_numtable_with_size _((int));
    46 st_table *st_init_strtable _((void));
    47 st_table *st_init_strtable_with_size _((int));
    48 int st_delete _((st_table *, st_data_t *, st_data_t *));
    49 int st_delete_safe _((st_table *, st_data_t *, st_data_t *, st_data_t));
    50 int st_insert _((st_table *, st_data_t, st_data_t));
    51 int st_lookup _((st_table *, st_data_t, st_data_t *));
    52 int st_foreach _((st_table *, int (*)(ANYARGS), st_data_t));
    53 void st_add_direct _((st_table *, st_data_t, st_data_t));
    54 void st_free_table _((st_table *));
    55 void st_cleanup_safe _((st_table *, st_data_t));
    56 st_table *st_copy _((st_table *));
     55typedef struct st_table st_table;
    5756
    58 #define ST_NUMCMP       ((int (*)()) 0)
    59 #define ST_NUMHASH      ((int (*)()) -2)
     57typedef st_data_t st_index_t;
    6058
    61 #define st_numcmp       ST_NUMCMP
    62 #define st_numhash      ST_NUMHASH
     59/* Maximal value of unsigned integer type st_index_t.  */
     60#define MAX_ST_INDEX_VAL (~(st_index_t) 0)
    6361
    64 #endif /* ST_INCLUDED */
     62typedef int st_compare_func(st_data_t, st_data_t);
     63typedef st_index_t st_hash_func(st_data_t);
     64
     65typedef char st_check_for_sizeof_st_index_t[SIZEOF_VOIDP == (int)sizeof(st_index_t) ? 1 : -1];
     66#define SIZEOF_ST_INDEX_T SIZEOF_VOIDP
     67
     68struct st_hash_type {
     69    int (*compare)(ANYARGS /*st_data_t, st_data_t*/); /* st_compare_func* */
     70    st_index_t (*hash)(ANYARGS /*st_data_t*/);        /* st_hash_func* */
     71};
     72
     73#define ST_INDEX_BITS (SIZEOF_ST_INDEX_T * CHAR_BIT)
     74
     75#if defined(HAVE_BUILTIN___BUILTIN_CHOOSE_EXPR) && defined(HAVE_BUILTIN___BUILTIN_TYPES_COMPATIBLE_P)
     76# define ST_DATA_COMPATIBLE_P(type) \
     77   __builtin_choose_expr(__builtin_types_compatible_p(type, st_data_t), 1, 0)
     78#else
     79# define ST_DATA_COMPATIBLE_P(type) 0
     80#endif
     81
     82typedef struct st_table_entry st_table_entry;
     83
     84struct st_table_entry; /* defined in st.c */
     85
     86struct st_table {
     87    /* Cached features of the table -- see st.c for more details.  */
     88    unsigned char entry_power, bin_power, size_ind;
     89    /* How many times the table was rebuilt.  */
     90    unsigned int rebuilds_num;
     91    const struct st_hash_type *type;
     92    /* Number of entries currently in the table.  */
     93    st_index_t num_entries;
     94    /* Array of bins used for access by keys.  */
     95    st_index_t *bins;
     96    /* Start and bound index of entries in array entries.
     97       entries_starts and entries_bound are in interval
     98       [0,allocated_entries].  */
     99    st_index_t entries_start, entries_bound;
     100    /* Array of size 2^entry_power.  */
     101    st_table_entry *entries;
     102};
     103
     104#define st_is_member(table,key) st_lookup((table),(key),(st_data_t *)0)
     105
     106enum st_retval {ST_CONTINUE, ST_STOP, ST_DELETE, ST_CHECK};
     107
     108st_table *st_init_table(const struct st_hash_type *);
     109st_table *st_init_table_with_size(const struct st_hash_type *, st_index_t);
     110st_table *st_init_numtable(void);
     111st_table *st_init_numtable_with_size(st_index_t);
     112st_table *st_init_strtable(void);
     113st_table *st_init_strtable_with_size(st_index_t);
     114st_table *st_init_strcasetable(void);
     115st_table *st_init_strcasetable_with_size(st_index_t);
     116int st_delete(st_table *, st_data_t *, st_data_t *); /* returns 0:notfound 1:deleted */
     117int st_delete_safe(st_table *, st_data_t *, st_data_t *, st_data_t);
     118int st_shift(st_table *, st_data_t *, st_data_t *); /* returns 0:notfound 1:deleted */
     119int st_insert(st_table *, st_data_t, st_data_t);
     120int st_insert2(st_table *, st_data_t, st_data_t, st_data_t (*)(st_data_t));
     121int st_lookup(st_table *, st_data_t, st_data_t *);
     122int st_get_key(st_table *, st_data_t, st_data_t *);
     123typedef int st_update_callback_func(st_data_t *key, st_data_t *value, st_data_t arg, int existing);
     124/* *key may be altered, but must equal to the old key, i.e., the
     125 * results of hash() are same and compare() returns 0, otherwise the
     126 * behavior is undefined */
     127int st_update(st_table *table, st_data_t key, st_update_callback_func *func, st_data_t arg);
     128int st_foreach(st_table *, int (*)(ANYARGS), st_data_t);
     129int st_foreach_check(st_table *, int (*)(ANYARGS), st_data_t, st_data_t);
     130st_index_t st_keys(st_table *table, st_data_t *keys, st_index_t size);
     131st_index_t st_keys_check(st_table *table, st_data_t *keys, st_index_t size, st_data_t never);
     132st_index_t st_values(st_table *table, st_data_t *values, st_index_t size);
     133st_index_t st_values_check(st_table *table, st_data_t *values, st_index_t size, st_data_t never);
     134void st_add_direct(st_table *, st_data_t, st_data_t);
     135void st_free_table(st_table *);
     136void st_cleanup_safe(st_table *, st_data_t);
     137void st_clear(st_table *);
     138st_table *st_copy(st_table *);
     139int st_numcmp(st_data_t, st_data_t);
     140st_index_t st_numhash(st_data_t);
     141int st_locale_insensitive_strcasecmp(const char *s1, const char *s2);
     142int st_locale_insensitive_strncasecmp(const char *s1, const char *s2, size_t n);
     143#define st_strcasecmp st_locale_insensitive_strcasecmp
     144#define st_strncasecmp st_locale_insensitive_strncasecmp
     145size_t st_memsize(const st_table *);
     146st_index_t st_hash(const void *ptr, size_t len, st_index_t h);
     147st_index_t st_hash_uint32(st_index_t h, uint32_t i);
     148st_index_t st_hash_uint(st_index_t h, st_index_t i);
     149st_index_t st_hash_end(st_index_t h);
     150st_index_t st_hash_start(st_index_t h);
     151#define st_hash_start(h) ((st_index_t)(h))
     152
     153RUBY_SYMBOL_EXPORT_END
     154
     155#if defined(__cplusplus)
     156#if 0
     157{ /* satisfy cc-mode */
     158#endif
     159}  /* extern "C" { */
     160#endif
     161
     162#endif /* RUBY_ST_H */
Note: See TracChangeset for help on using the changeset viewer.