summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore3
-rw-r--r--CMakeLists.txt4
-rw-r--r--HISTORY19
-rw-r--r--Makefile.am2
-rw-r--r--README16
-rw-r--r--README.md29
-rw-r--r--README_japanese (renamed from README.ja)14
-rw-r--r--configure.ac4
-rw-r--r--dist.info2
-rw-r--r--doc/API12
-rw-r--r--doc/API.ja11
-rw-r--r--doc/RE50
-rw-r--r--doc/RE.ja60
-rw-r--r--doc/UNICODE_PROPERTIES1390
-rw-r--r--index.html4
-rw-r--r--index_ja.html4
-rw-r--r--src/Makefile.am2
-rw-r--r--src/euc_jp.c4
-rwxr-xr-xsrc/gperf_fold_key_conv.py2
-rwxr-xr-xsrc/gperf_unfold_key_conv.py2
-rwxr-xr-xsrc/make_unicode_egcb.sh7
-rwxr-xr-xsrc/make_unicode_egcb_data.py236
-rwxr-xr-xsrc/make_unicode_fold_data.py4
-rwxr-xr-xsrc/make_unicode_property_data.py723
-rw-r--r--src/oniguruma.h25
-rw-r--r--src/regcomp.c253
-rw-r--r--src/regenc.c10
-rw-r--r--src/regenc.h11
-rw-r--r--src/regerror.c8
-rw-r--r--src/regexec.c134
-rw-r--r--src/regint.h99
-rw-r--r--src/regparse.c646
-rw-r--r--src/regparse.h24
-rw-r--r--src/regsyntax.c2
-rw-r--r--src/unicode.c200
-rw-r--r--src/unicode_egcb_data.c1382
-rw-r--r--src/unicode_property_data.c18484
-rw-r--r--src/unicode_property_data_posix.c14
-rw-r--r--test/.gitignore4
-rw-r--r--test/Makefile.am11
-rw-r--r--test/test_utf8.c1066
-rw-r--r--test/testc.c19
-rw-r--r--test/testu.c40
43 files changed, 14189 insertions, 10847 deletions
diff --git a/.gitignore b/.gitignore
index 99f5e71..fe616c2 100644
--- a/.gitignore
+++ b/.gitignore
@@ -20,8 +20,5 @@ Makefile.in
*~
.libs/
.deps/
-testc
-testcu
-testp
/build
m4/*.m4
diff --git a/CMakeLists.txt b/CMakeLists.txt
index b40fb2c..9e1efe8 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -4,7 +4,7 @@ cmake_minimum_required(VERSION 2.8)
project(oniguruma C)
set(PACKAGE onig)
-set(PACKAGE_VERSION "6.5.0")
+set(PACKAGE_VERSION "6.6.0")
set(USE_COMBINATION_EXPLOSION_CHECK 0)
set(USE_CRNL_AS_LINE_TERMINATOR 0)
@@ -81,7 +81,7 @@ install_library(onig)
install_header(src/oniguruma.h src/onigposix.h src/oniggnu.h)
install_doc(doc/API doc/API.ja doc/RE doc/RE.ja doc/UNICODE_PROPERTIES)
-install_data(AUTHORS COPYING HISTORY README)
+install_data(AUTHORS COPYING HISTORY README.md)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/oniguruma.pc
DESTINATION lib/pkgconfig)
diff --git a/HISTORY b/HISTORY
index 9db4712..91675e9 100644
--- a/HISTORY
+++ b/HISTORY
@@ -1,5 +1,24 @@
History
+2017/08/30: Version 6.6.1
+
+2017/08/29: fix definition of \X to (?>\O(?:\Y\O)*)
+
+2017/08/28: Version 6.6.0
+
+2017/08/26: fix #67: can't compile with Visual Studio 2005
+2017/08/24: rename Absent clear to Range clear
+2017/08/21: [new] Extended Grapheme Cluster \X and boundary \y, \Y
+2017/08/17: fix: invalid index(ctype) value assigned to Unicode Block properties
+2017/08/16: --enable-crnl-as-line-terminator to be deprecated
+2017/08/15: [new] ASCII only mode options (?WDSP)
+2017/08/14: [new] ONIG_OPTION_XXXX_IS_ASCII options
+2017/08/11: disable OP_CCLASS_NODE
+2017/08/11: [spec] Absent clear restore previous range value at backtrack
+2017/08/07: optimize for simple one char repetition in Absent expression
+2017/08/07: fix: invalid impl. for reluctant repetition in Absent expression
+2017/08/04: remove compile switch USE_NAMED_GROUP
+
2017/08/03: Version 6.5.0
2017/07/30: [new] support Absent clear (Absent functions)
diff --git a/Makefile.am b/Makefile.am
index b044f93..4703747 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -4,7 +4,7 @@ ACLOCAL_AMFLAGS = -I m4
SUBDIRS = src test sample
-EXTRA_DIST = oniguruma.pc.in HISTORY README.ja README.md \
+EXTRA_DIST = oniguruma.pc.in HISTORY README_japanese README.md \
index.html index_ja.html \
CMakeLists.txt dist.info oniguruma.pc.cmake.in cmake/dist.cmake \
src/config.h.cmake.in \
diff --git a/README b/README
index cc2b51f..00fe162 100644
--- a/README
+++ b/README
@@ -1,6 +1,6 @@
-README 2017/07/08
+README 2017/08/25
-Oniguruma ---- (C) K.Kosako <kkosako0@gmail.com>
+Oniguruma ---- (C) K.Kosako
https://github.com/kkos/oniguruma
@@ -179,16 +179,4 @@ Source Files
win32/config.h config.h for Win32
-
-ToDo
-
- ? case fold flag: Katakana <-> Hiragana.
- ? add ONIG_OPTION_NOTBOS/NOTEOS. (\A, \z, \Z)
- ?? \X (== \PM\pM*)
- ?? implement syntax behavior ONIG_SYN_CONTEXT_INDEP_ANCHORS.
- ?? transmission stopper. (return ONIG_STOP from match_at())
-
and I'm thankful to Akinori MUSHA.
-
-
-Mail Address: K.Kosako <kkosako0@gmail.com>
diff --git a/README.md b/README.md
index ec84884..da0ce1f 100644
--- a/README.md
+++ b/README.md
@@ -5,8 +5,8 @@ https://github.com/kkos/oniguruma
FIXED Security Issues:
--------------------------
- CVE-2017-9224, CVE-2017-9225, CVE-2017-9226
- CVE-2017-9227, CVE-2017-9228, CVE-2017-9229
+ **CVE-2017-9224, CVE-2017-9225, CVE-2017-9226**
+ **CVE-2017-9227, CVE-2017-9228, CVE-2017-9229**
Oniguruma is a regular expressions library.
@@ -26,6 +26,21 @@ Supported character encodings:
* CP1251: contributed by Byte
+New feature of version 6.6.1
+--------------------------
+
+* Fix definition of \X
+
+
+New feature of version 6.6.0
+--------------------------
+
+* NEW: ASCII only mode options for character type/property (?WDSP)
+* NEW: Extended Grapheme Cluster boundary \y, \Y (*original)
+* NEW: Extended Grapheme Cluster \X
+* Range-clear (Absent-clear) operator restores previous range in backtrack.
+
+
New feature of version 6.5.0
--------------------------
@@ -33,24 +48,24 @@ New feature of version 6.5.0
* NEW: \R (general newline) \N (no newline)
* NEW: \O (true anychar)
* NEW: if-then-else syntax (?(...)...\|...)
-* NEW: Backreference validity checker (*original)
+* NEW: Backreference validity checker (?(xxx)) (*original)
* NEW: Absent repeater (?~absent)
* NEW: Absent expression (?~|absent|expr) (*original)
-* NEW: Absent range cutter (?~|absent) (*original)
+* NEW: Absent stopper (?~|absent) (*original)
New feature of version 6.4.0
--------------------------
* Fix fatal problem of endless repeat on Windows
-* NEW: call zero (call the total regexp)
-* NEW: relative backref and relative call by positive number
+* NEW: call zero (call the total regexp) \g<0>
+* NEW: relative backref/call by positive number \k<+n>, \g<+n>
New feature of version 6.3.0
--------------------------
-* NEW SYNTAX: escape-o-brace for octal codepoint.
+* NEW: octal codepoint \o{.....}
New feature of version 6.1.2
diff --git a/README.ja b/README_japanese
index 826a8e7..28da31b 100644
--- a/README.ja
+++ b/README_japanese
@@ -1,4 +1,4 @@
-README.ja 2016/05/06
+README.ja 2017/08/25
µ´¼Ö ---- (C) K.Kosako <kkosako0@gmail.com>
@@ -180,16 +180,4 @@ https://github.com/kkos/oniguruma
win32/config.h Win32ÍÑ config.h
-
-»Ä·ï
-
- ? case fold flag: Katakana <-> Hiragana
- ? ONIG_OPTION_NOTBOS/NOTEOSÄɲà (\A, \z, \Z)
- ?? \X (== \PM\pM*)
- ?? ʸˡÍ×ÁÇ ONIG_SYN_CONTEXT_INDEP_ANCHORS¤Î¼ÂÁõ
- ?? ¸¡º÷°ÌÃÖ°ÜÆ°Ää»ß±é»»»Ò (match_at()¤«¤éONIG_STOP¤òÊÖ¤¹)
-
and I'm thankful to Akinori MUSHA.
-
-
-¥¢¥É¥ì¥¹: K.Kosako <kkosako0@gmail.com>
diff --git a/configure.ac b/configure.ac
index efaf5e1..d585690 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,5 +1,5 @@
dnl Process this file with autoconf to produce a configure script.
-AC_INIT(onig, 6.5.0)
+AC_INIT(onig, 6.6.1)
AC_CONFIG_MACRO_DIR([m4])
@@ -24,7 +24,7 @@ fi
dnl check for CRNL_AS_LINE_TERMINATOR
AC_ARG_ENABLE(crnl-as-line-terminator,
- [ --enable-crnl-as-line-terminator enable CR+NL as line terminator],
+ [ --enable-crnl-as-line-terminator deprecated],
[crnl_as_line_terminator=$enableval])
if test "${crnl_as_line_terminator}" = yes; then
AC_DEFINE(USE_CRNL_AS_LINE_TERMINATOR,1,[Define if enable CR+NL as line terminator])
diff --git a/dist.info b/dist.info
index 76575fe..52df1f7 100644
--- a/dist.info
+++ b/dist.info
@@ -1,7 +1,7 @@
--- This file is part of LuaDist project
name = "onig"
-version = "6.5.0"
+version = "6.6.1"
desc = "Oniguruma is a regular expressions library."
author = "K.Kosako"
diff --git a/doc/API b/doc/API
index d12a46b..f0d0f09 100644
--- a/doc/API
+++ b/doc/API
@@ -1,4 +1,4 @@
-Oniguruma API Version 6.1.0 2016/08/22
+Oniguruma API Version 6.6.0 2017/08/15
#include <oniguruma.h>
@@ -83,6 +83,16 @@ Oniguruma API Version 6.1.0 2016/08/22
ONIG_OPTION_DONT_CAPTURE_GROUP only named group captured.
ONIG_OPTION_CAPTURE_GROUP named and no-named group captured.
+ ONIG_OPTION_WORD_IS_ASCII ASCII only word (\w, \p{Word}, [[:word:]])
+ ASCII only word bound (\b)
+ ONIG_OPTION_DIGIT_IS_ASCII ASCII only digit (\d, \p{Digit}, [[:digit:]])
+ ONIG_OPTION_SPACE_IS_ASCII ASCII only space (\s, \p{Space}, [[:space:]])
+ ONIG_OPTION_POSIX_IS_ASCII ASCII only POSIX properties
+ (includes word, digit, space)
+ (alnum, alpha, blank, cntrl, digit, graph,
+ lower, print, punct, space, upper, xdigit,
+ word)
+
5 enc: character encoding.
ONIG_ENCODING_ASCII ASCII
diff --git a/doc/API.ja b/doc/API.ja
index cd77f7f..213a783 100644
--- a/doc/API.ja
+++ b/doc/API.ja
@@ -1,4 +1,4 @@
-鬼車インターフェース Version 6.1.0 2016/08/22
+鬼車インターフェース Version 6.6.0 2017/08/15
#include <oniguruma.h>
@@ -82,6 +82,15 @@
ONIG_OPTION_DONT_CAPTURE_GROUP åå‰ä»˜ãæ•ç²å¼é›†åˆã®ã¿æ•ç²
ONIG_OPTION_CAPTURE_GROUP åå‰ç„¡ã—æ•ç²å¼é›†åˆã‚‚æ•ç²
+ ONIG_OPTION_WORD_IS_ASCII wordãŒASCIIã®ã¿ (\w, \p{Word}, [[:word:]])
+ word boundãŒASCIIã®ã¿ (\b)
+ ONIG_OPTION_DIGIT_IS_ASCII digitãŒASCIIã®ã¿ (\d, \p{Digit}, [[:digit:]])
+ ONIG_OPTION_SPACE_IS_ASCII spaceãŒASCIIã®ã¿ (\s, \p{Space}, [[:space:]])
+ ONIG_OPTION_POSIX_IS_ASCII POSIXプロパティãŒASCIIã®ã¿
+ (word, digit, spaceã‚’å…¨ã¦å«ã‚“ã§ã„ã‚‹)
+ (alnum, alpha, blank, cntrl, digit, graph,
+ lower, print, punct, space, upper, xdigit,
+ word)
5 enc: 文字エンコーディング
diff --git a/doc/RE b/doc/RE
index 16cc888..8781b38 100644
--- a/doc/RE
+++ b/doc/RE
@@ -1,4 +1,4 @@
-Oniguruma Regular Expressions Version 6.5.0 2017/07/30
+Oniguruma Regular Expressions Version 6.6.0 2017/08/29
syntax: ONIG_SYNTAX_RUBY (default)
@@ -80,6 +80,16 @@ syntax: ONIG_SYNTAX_RUBY (default)
\O true anychar (?m:.) (* original function)
+ \X Extended Grapheme Cluster (?>\O(?:\Y\O)*)
+
+ \X doesn't check whether matching start position is boundary.
+ Write as \y\X if you want to ensure it.
+
+ Unicode case:
+ See [Unicode Standard Annex #29: http://unicode.org/reports/tr29/]
+
+ Not Unicode: (?>\r\n|\O)
+
Character Property
@@ -139,6 +149,9 @@ syntax: ONIG_SYNTAX_RUBY (default)
$ end of the line
\b word boundary
\B non-word boundary
+ \y Extended Grapheme Cluster boundary
+ \Y Extended Grapheme Cluster non-boundary
+
\A beginning of string
\Z end of string, or before newline at the end
\z end of string
@@ -207,11 +220,19 @@ syntax: ONIG_SYNTAX_RUBY (default)
(?#...) comment
- (?imx-imx) option on/off
- i: ignore case
- m: multi-line (dot (.) also matches newline)
- x: extended form
- (?imx-imx:subexp) option on/off for subexp
+ (?imxWDSP-imxWDSP) option on/off
+ i: ignore case
+ m: multi-line (dot (.) also matches newline)
+ x: extended form
+ W: ASCII only word (\w, \p{Word}, [[:word:]])
+ ASCII only word bound (\b)
+ D: ASCII only digit (\d, \p{Digit}, [[:digit:]])
+ S: ASCII only space (\s, \p{Space}, [[:space:]])
+ P: ASCII only POSIX properties (includes W,D,S)
+ (alnum, alpha, blank, cntrl, digit, graph,
+ lower, print, punct, space, upper, xdigit, word)
+
+ (?imxWDSP-imxWDSP:subexp) option on/off for subexp
(?:subexp) non-capturing group
(subexp) capturing group
@@ -245,24 +266,23 @@ syntax: ONIG_SYNTAX_RUBY (default)
(?~absent) Absent repeater (* proposed by Tanaka Akira)
This works like .* (more precisely \O*), but it is
limited by the range that does not include the string
- match with absent.
+ match with <absent>.
This is a written abbreviation of (?~|absent|\O*).
\O* is used as a repeater.
(?~|absent|exp) Absent expression (* original)
This works like "exp", but it is limited by the range
- that does not include the string match with absent.
+ that does not include the string match with <absent>.
ex. (?~|345|\d*) "12345678" ==> "12", "1", ""
- (?~|absent) Absent cutter (* original)
+ (?~|absent) Absent stopper (* original)
After passed this operator, string right range is limited
at the point that does not include the string match whth
- absent.
+ <absent>.
- (?~|) Absent clear
- Clear the effects caused by Absent cutters.
- (* This operation is not cancelled by backtrack.)
+ (?~|) Range clear
+ Clear the effects caused by Absent stoppers.
* Nested Absent functions are not supported and the behavior
is undefined.
@@ -273,7 +293,7 @@ syntax: ONIG_SYNTAX_RUBY (default)
condition_exp can be a backreference number/name or a normal
regular expression.
- When condition_exp is a backreference, both then_exp and
+ When condition_exp is a backreference number/name, both then_exp and
else_exp can be omitted.
Then it works as a backreference validity checker.
@@ -420,7 +440,7 @@ A-2. Original extensions
A-3. Missing features compared with perl 5.8.0
+ \N{name}
- + \l,\u,\L,\U, \X, \C
+ + \l,\u,\L,\U,\C
+ (?{code})
+ (??{code})
diff --git a/doc/RE.ja b/doc/RE.ja
index c05468d..97fde3f 100644
--- a/doc/RE.ja
+++ b/doc/RE.ja
@@ -1,4 +1,4 @@
-鬼車 æ­£è¦è¡¨ç¾ Version 6.5.0 2017/07/30
+鬼車 æ­£è¦è¡¨ç¾ Version 6.6.0 2017/08/29
使用文法: ONIG_SYNTAX_RUBY (既定値)
@@ -80,6 +80,16 @@
\O 真任æ„文字 (?m:.) (* 原作)
+ \X 拡張書記素房 (?>\O(?:\Y\O)*)
+
+ \Xã¯ç…§åˆã®é–‹å§‹ä½ç½®ãŒæ‹¡å¼µæ›¸è¨˜ç´ æˆ¿ã®å¢ƒç•Œã‹ã©ã†ã‹ã‚’確èªã—ãªã„。
+ ãれを確実ã«ã—ãŸã‘ã‚Œã°ã€\y\Xã¨æ›¸ã‘ã°è‰¯ã„。
+
+ Unicodeã®å ´åˆ:
+ å‚ç…§ [Unicode Standard Annex #29: http://unicode.org/reports/tr29/]
+
+ Unicode以外ã®å ´åˆ: (?>\r\n|\O)
+
Character Property
@@ -139,10 +149,13 @@
$ 行末
\b å˜èªžå¢ƒç•Œ
\B éžå˜èªžå¢ƒç•Œ
+ \y 拡張書記素房 境界
+ \Y 拡張書記素房 éžå¢ƒç•Œ
+
\A 文字列先頭
\Z 文字列末尾ã€ã¾ãŸã¯æ–‡å­—列末尾ã®æ”¹è¡Œã®ç›´å‰
\z 文字列末尾
- \G ç…§åˆé–‹å§‹ä½ç½®
+ \G 探索開始ä½ç½®
\K ä¿æŒ (çµæžœã®é–‹å§‹ä½ç½®ã‚’ã“ã®ä½ç½®ã«ä¿ã¤)
@@ -205,11 +218,19 @@
7. æ‹¡å¼µå¼é›†åˆ
(?#...) 注釈
- (?imx-imx) 孤立オプション
- i: 大文字å°æ–‡å­—ç…§åˆ
- m: 複数行
- x: 拡張形å¼
- (?imx-imx:å¼) å¼ã‚ªãƒ—ション
+ (?imxWDSP-imxWDSP) 孤立オプション
+ i: 大文字å°æ–‡å­—ç…§åˆ
+ m: 複数行
+ x: 拡張形å¼
+ W: wordãŒASCIIã®ã¿ (\w, \p{Word}, [[:word:]])
+ word境界ãŒASCIIã®ã¿ (\b)
+ D: digitãŒASCIIã®ã¿ (\d, \p{Digit}, [[:digit:]])
+ S: spaceãŒASCIIã®ã¿ (\s, \p{Space}, [[:space:]])
+ P: POSIXプロパティãŒASCIIã®ã¿ (W,D,Sã‚’å…¨ã¦å«ã‚“ã§ã„ã‚‹)
+ (alnum, alpha, blank, cntrl, digit, graph,
+ lower, print, punct, space, upper, xdigit, word)
+
+ (?imxWDSP-imxWDSP:å¼) å¼ã‚ªãƒ—ション
(å¼) æ•ç²å¼é›†åˆ
(?:å¼) éžæ•ç²å¼é›†åˆ
@@ -245,40 +266,39 @@
<ä¸åœ¨æ©Ÿèƒ½ç¾¤>
(?~ä¸åœ¨å¼) ä¸åœ¨ç¹°ã‚Šè¿”ã— (*原案 田中哲)
- ã“ã‚Œã¯.*ã®ã‚ˆã†ã«(より正確ã«ã¯\O*)動作ã™ã‚‹ãŒã€ä¸åœ¨å¼ã«
+ ã“ã‚Œã¯.*(より正確ã«ã¯\O*)ã®ã‚ˆã†ã«å‹•ä½œã™ã‚‹ãŒã€<ä¸åœ¨å¼>ã«
é©åˆã™ã‚‹æ–‡å­—列をå«ã¾ãªã„範囲ã«åˆ¶é™ã•ã‚Œã‚‹ã€‚
ã“ã‚Œã¯(?~|ä¸åœ¨å¼|\O*)ã®çœç•¥è¡¨è¨˜ã§ã‚る。
- \O*ã®éƒ¨åˆ†ã¯ãƒžãƒ«ãƒãƒ©ã‚¤ãƒ³ã‚ªãƒ—ション(?m)ã®å½±éŸ¿ã‚’å—ã‘ãªã„。
(?~|ä¸åœ¨å¼|å¼) ä¸åœ¨å¼ (* 原作)
- ã“ã‚Œã¯"å¼"ã®ã‚ˆã†ã«å‹•ä½œã™ã‚‹ãŒã€ä¸åœ¨å¼ã«é©åˆã™ã‚‹æ–‡å­—列を
+ ã“ã‚Œã¯<å¼>ã®ã‚ˆã†ã«å‹•ä½œã™ã‚‹ãŒã€<ä¸åœ¨å¼>ã«é©åˆã™ã‚‹æ–‡å­—列を
å«ã¾ãªã„範囲ã«åˆ¶é™ã•ã‚Œã‚‹ã€‚
例 (?~|345|\d*) "12345678" ==> "12", "1", ""
- (?~|ä¸åœ¨å¼) ä¸åœ¨åˆ‡æ–­ (* 原作)
+ (?~|ä¸åœ¨å¼) ä¸åœ¨åœæ­¢ (* 原作)
ã“ã®æ¼”ç®—å­ã‚’通éŽã—ãŸå¾Œã¯ã€å¯¾è±¡æ–‡å­—列ã®é©åˆç¯„囲ã®æœ€å¾ŒãŒ
- ä¸åœ¨å¼ã«é©åˆã™ã‚‹æ–‡å­—列をå«ã¾ãªã„範囲ã«åˆ¶é™ã•ã‚Œã‚‹ã€‚
+ <ä¸åœ¨å¼>ã«é©åˆã™ã‚‹æ–‡å­—列をå«ã¾ãªã„範囲ã«åˆ¶é™ã•ã‚Œã‚‹ã€‚
- (?~|) ä¸åœ¨æ¶ˆåŽ»
- ä¸åœ¨åˆ‡æ–­ã®åŠ¹æžœã‚’消ã—ã¦ã€åˆæœŸçŠ¶æ…‹ã«ã™ã‚‹ã€‚
- (* ã“ã®æ¼”ç®—å­ã®åŠ¹æžœã¯å¾Œé€€å†è©¦è¡Œã§ç„¡åŠ¹åŒ–ã•ã‚Œãªã„)
+ (?~|) 範囲消去
+ ä¸åœ¨åœæ­¢ã®åŠ¹æžœã‚’消ã—ã¦ã€åˆæœŸçŠ¶æ…‹ã«ã™ã‚‹ã€‚
- * ä¸åœ¨æ©Ÿèƒ½ã®å…¥ã‚Œå­ã¯ã‚µãƒãƒ¼ãƒˆã—ã¦ãŠã‚‰ãšã€æŒ™å‹•ã¯ä¸å®šã¨ã™ã‚‹ã€‚
+ * ä¸åœ¨æ©Ÿèƒ½ã®å…¥ã‚Œå­ã«ã¯å¯¾å¿œã—ã¦ãŠã‚‰ãšã€æŒ™å‹•ã¯ä¸å®šã¨ã™ã‚‹ã€‚
(?(æ¡ä»¶å¼)æˆåŠŸå¼|失敗å¼) æ¡ä»¶å¼ãŒæˆåŠŸã™ã‚Œã°æˆåŠŸå¼ã€å¤±æ•—ã™ã‚Œã°å¤±æ•—å¼ã‚’実行ã™ã‚‹
ã“ã®æ©Ÿèƒ½ã®å­˜åœ¨ç†ç”±ã¯ã€æˆåŠŸå¼ãŒå¤±æ•—ã—ã¦ã‚‚失敗å¼ã«ã¯
è¡Œã‹ãªã„ã“ã¨ã€‚ã“ã‚Œã¯ä»–ã®æ­£è¦è¡¨ç¾ã§æ›¸ãã“ã¨ãŒã§ããªã„。
- ã‚‚ã†ã²ã¨ã¤ã¯ã€æ¡ä»¶å¼ãŒå¾Œæ–¹å‚ç…§ã®ã¨ãã€å¾Œæ–¹å‚照値ã®æœ‰åŠ¹æ€§
- を調ã¹ã‚‹(文字列ã¨ãƒžãƒƒãƒãƒ³ã‚°ã¯ã—ãªã„)æ„味ã«ãªã‚‹ã€‚
+ ã‚‚ã†ã²ã¨ã¤ã¯ã€æ¡ä»¶å¼ãŒå¾Œæ–¹å‚ç…§ã®ç•ªå·/åå‰ã®ã¨ãã€
+ 後方å‚照値ã®æœ‰åŠ¹æ€§ã‚’調ã¹ã‚‹(文字列ã¨ç…§åˆã¯ã—ãªã„)
+ æ„味ã«ãªã‚‹ã€‚
(?(æ¡ä»¶å¼)æˆåŠŸå¼) æ¡ä»¶å¼ãŒæˆåŠŸã™ã‚Œã°æˆåŠŸå¼ã‚’実行ã™ã‚‹
(æ¡ä»¶å¼ãŒé€šå¸¸ã®å¼ã®ã¨ãã«ã¯ã€ã“ã®æ§‹æ–‡ã¯ä¸å¿…è¦ã ãŒ
今ã®ã¨ã“ã‚エラーã«ã¯ã—ãªã„。)
- æ¡ä»¶å¼ã¯å¾Œæ–¹å‚ç…§ã¾ãŸã¯é€šå¸¸ã®å¼ã‚’使用ã§ãる。
+ æ¡ä»¶å¼ã¯å¾Œæ–¹å‚ç…§ã®ç•ªå·/åå‰ã¾ãŸã¯æ™®é€šã®å¼ã‚’使用ã§ãる。
æ¡ä»¶å¼ãŒå¾Œæ–¹å‚ç…§ã®å ´åˆã€æˆåŠŸå¼ã¨å¤±æ•—å¼ã®ä¸¡æ–¹ã‚’çœç•¥å¯èƒ½ã§ã‚ã‚Šã€
ã“ã®å ´åˆã€å¾Œæ–¹å‚照値有効性を調ã¹ã‚‹(æˆåŠŸ/失敗)機能ã®ã¿ã«ãªã‚‹ã€‚
@@ -428,7 +448,7 @@
補記 3. Perl 5.8.0ã¨æ¯”較ã—ã¦å­˜åœ¨ã—ãªã„機能
+ \N{name}
- + \l,\u,\L,\U, \X, \C
+ + \l,\u,\L,\U,\C
+ (?{code})
+ (??{code})
diff --git a/doc/UNICODE_PROPERTIES b/doc/UNICODE_PROPERTIES
index dedc658..8521f0c 100644
--- a/doc/UNICODE_PROPERTIES
+++ b/doc/UNICODE_PROPERTIES
@@ -1,698 +1,698 @@
Unicode Properties (from Unicode Version: 8.0.0)
- 1: Any
- 2: Assigned
- 3: C
- 4: Cc
- 5: Cf
- 6: Cn
- 7: Co
- 8: Cs
- 9: L
- 10: LC
- 11: Ll
- 12: Lm
- 13: Lo
- 14: Lt
- 15: Lu
- 16: M
- 17: Mc
- 18: Me
- 19: Mn
- 20: N
- 21: Nd
- 22: Nl
- 23: No
- 24: P
- 25: Pc
- 26: Pd
- 27: Pe
- 28: Pf
- 29: Pi
- 30: Po
- 31: Ps
- 32: S
- 33: Sc
- 34: Sk
- 35: Sm
- 36: So
- 37: Z
- 38: Zl
- 39: Zp
- 40: Zs
- 41: Math
- 42: Alphabetic
- 43: Lowercase
- 44: Uppercase
- 45: Cased
- 46: Case_Ignorable
+ 15: ASCII_Hex_Digit
+ 16: Ahom
+ 17: Alphabetic
+ 18: Anatolian_Hieroglyphs
+ 19: Any
+ 20: Arabic
+ 21: Armenian
+ 22: Assigned
+ 23: Avestan
+ 24: Balinese
+ 25: Bamum
+ 26: Bassa_Vah
+ 27: Batak
+ 28: Bengali
+ 29: Bidi_Control
+ 30: Bopomofo
+ 31: Brahmi
+ 32: Braille
+ 33: Buginese
+ 34: Buhid
+ 35: C
+ 36: Canadian_Aboriginal
+ 37: Carian
+ 38: Case_Ignorable
+ 39: Cased
+ 40: Caucasian_Albanian
+ 41: Cc
+ 42: Cf
+ 43: Chakma
+ 44: Cham
+ 45: Changes_When_Casefolded
+ 46: Changes_When_Casemapped
47: Changes_When_Lowercased
- 48: Changes_When_Uppercased
- 49: Changes_When_Titlecased
- 50: Changes_When_Casefolded
- 51: Changes_When_Casemapped
- 52: ID_Start
- 53: ID_Continue
- 54: XID_Start
- 55: XID_Continue
- 56: Default_Ignorable_Code_Point
- 57: Grapheme_Extend
- 58: Grapheme_Base
- 59: Grapheme_Link
- 60: Common
- 61: Latin
- 62: Greek
- 63: Cyrillic
- 64: Armenian
- 65: Hebrew
- 66: Arabic
- 67: Syriac
- 68: Thaana
- 69: Devanagari
- 70: Bengali
- 71: Gurmukhi
- 72: Gujarati
- 73: Oriya
- 74: Tamil
- 75: Telugu
- 76: Kannada
- 77: Malayalam
- 78: Sinhala
- 79: Thai
- 80: Lao
- 81: Tibetan
- 82: Myanmar
- 83: Georgian
- 84: Hangul
- 85: Ethiopic
- 86: Cherokee
- 87: Canadian_Aboriginal
- 88: Ogham
- 89: Runic
- 90: Khmer
- 91: Mongolian
- 92: Hiragana
- 93: Katakana
- 94: Bopomofo
- 95: Han
- 96: Yi
- 97: Old_Italic
- 98: Gothic
- 99: Deseret
-100: Inherited
-101: Tagalog
-102: Hanunoo
-103: Buhid
-104: Tagbanwa
-105: Limbu
-106: Tai_Le
-107: Linear_B
-108: Ugaritic
-109: Shavian
-110: Osmanya
-111: Cypriot
-112: Braille
-113: Buginese
-114: Coptic
-115: New_Tai_Lue
-116: Glagolitic
-117: Tifinagh
-118: Syloti_Nagri
-119: Old_Persian
-120: Kharoshthi
-121: Balinese
-122: Cuneiform
-123: Phoenician
-124: Phags_Pa
-125: Nko
-126: Sundanese
-127: Lepcha
-128: Ol_Chiki
-129: Vai
-130: Saurashtra
-131: Kayah_Li
-132: Rejang
-133: Lycian
-134: Carian
-135: Lydian
-136: Cham
-137: Tai_Tham
-138: Tai_Viet
-139: Avestan
-140: Egyptian_Hieroglyphs
-141: Samaritan
-142: Lisu
-143: Bamum
-144: Javanese
-145: Meetei_Mayek
-146: Imperial_Aramaic
-147: Old_South_Arabian
-148: Inscriptional_Parthian
-149: Inscriptional_Pahlavi
-150: Old_Turkic
-151: Kaithi
-152: Batak
-153: Brahmi
-154: Mandaic
-155: Chakma
-156: Meroitic_Cursive
-157: Meroitic_Hieroglyphs
-158: Miao
-159: Sharada
-160: Sora_Sompeng
-161: Takri
-162: Caucasian_Albanian
-163: Bassa_Vah
-164: Duployan
-165: Elbasan
-166: Grantha
-167: Pahawh_Hmong
-168: Khojki
-169: Linear_A
-170: Mahajani
-171: Manichaean
-172: Mende_Kikakui
-173: Modi
-174: Mro
-175: Old_North_Arabian
-176: Nabataean
-177: Palmyrene
-178: Pau_Cin_Hau
-179: Old_Permic
-180: Psalter_Pahlavi
-181: Siddham
-182: Khudawadi
-183: Tirhuta
-184: Warang_Citi
-185: Ahom
-186: Anatolian_Hieroglyphs
-187: Hatran
-188: Multani
-189: Old_Hungarian
-190: SignWriting
-191: White_Space
-192: Bidi_Control
-193: Join_Control
-194: Dash
-195: Hyphen
-196: Quotation_Mark
-197: Terminal_Punctuation
-198: Other_Math
-199: Hex_Digit
-200: ASCII_Hex_Digit
-201: Other_Alphabetic
-202: Ideographic
-203: Diacritic
-204: Extender
-205: Other_Lowercase
-206: Other_Uppercase
-207: Noncharacter_Code_Point
-208: Other_Grapheme_Extend
-209: IDS_Binary_Operator
-210: IDS_Trinary_Operator
-211: Radical
-212: Unified_Ideograph
-213: Other_Default_Ignorable_Code_Point
-214: Deprecated
-215: Soft_Dotted
-216: Logical_Order_Exception
-217: Other_ID_Start
-218: Other_ID_Continue
-219: STerm
-220: Variation_Selector
-221: Pattern_White_Space
-222: Pattern_Syntax
-223: Unknown
-224: Aghb
-225: AHex
-226: Arab
-227: Armi
-228: Armn
-229: Avst
-230: Bali
-231: Bamu
-232: Bass
-233: Batk
-234: Beng
-235: Bidi_C
-236: Bopo
-237: Brah
-238: Brai
-239: Bugi
-240: Buhd
-241: Cakm
-242: Cans
-243: Cari
-244: Cased_Letter
-245: Cher
-246: CI
-247: Close_Punctuation
-248: Combining_Mark
-249: Connector_Punctuation
-250: Control
-251: Copt
-252: Cprt
-253: Currency_Symbol
-254: CWCF
-255: CWCM
-256: CWL
-257: CWT
-258: CWU
-259: Cyrl
-260: Dash_Punctuation
-261: Decimal_Number
-262: Dep
-263: Deva
-264: DI
-265: Dia
-266: Dsrt
-267: Dupl
-268: Egyp
-269: Elba
-270: Enclosing_Mark
-271: Ethi
-272: Ext
-273: Final_Punctuation
-274: Format
-275: Geor
-276: Glag
-277: Goth
-278: Gran
-279: Gr_Base
-280: Grek
-281: Gr_Ext
-282: Gr_Link
-283: Gujr
-284: Guru
-285: Hang
-286: Hani
-287: Hano
-288: Hatr
-289: Hebr
-290: Hex
-291: Hira
-292: Hluw
-293: Hmng
-294: Hung
-295: IDC
-296: Ideo
-297: IDS
-298: IDSB
-299: IDST
-300: Initial_Punctuation
-301: Ital
-302: Java
-303: Join_C
-304: Kali
-305: Kana
-306: Khar
-307: Khmr
-308: Khoj
-309: Knda
-310: Kthi
-311: Lana
-312: Laoo
-313: Latn
-314: Lepc
-315: Letter
-316: Letter_Number
-317: Limb
-318: Lina
-319: Linb
-320: Line_Separator
-321: LOE
-322: Lowercase_Letter
-323: Lyci
-324: Lydi
-325: Mahj
-326: Mand
-327: Mani
-328: Mark
-329: Math_Symbol
-330: Mend
-331: Merc
-332: Mero
-333: Mlym
-334: Modifier_Letter
-335: Modifier_Symbol
-336: Mong
-337: Mroo
-338: Mtei
-339: Mult
-340: Mymr
-341: Narb
-342: Nbat
-343: NChar
-344: Nkoo
-345: Nonspacing_Mark
-346: Number
-347: OAlpha
-348: ODI
-349: Ogam
-350: OGr_Ext
-351: OIDC
-352: OIDS
-353: Olck
-354: OLower
-355: OMath
-356: Open_Punctuation
-357: Orkh
-358: Orya
-359: Osma
-360: Other
-361: Other_Letter
-362: Other_Number
-363: Other_Punctuation
-364: Other_Symbol
-365: OUpper
-366: Palm
-367: Paragraph_Separator
-368: Pat_Syn
-369: Pat_WS
-370: Pauc
-371: Perm
-372: Phag
-373: Phli
-374: Phlp
-375: Phnx
-376: Plrd
-377: Private_Use
-378: Prti
-379: Punctuation
-380: Qaac
-381: Qaai
-382: QMark
-383: Rjng
-384: Runr
-385: Samr
-386: Sarb
-387: Saur
-388: SD
-389: Separator
-390: Sgnw
-391: Shaw
-392: Shrd
-393: Sidd
-394: Sind
-395: Sinh
-396: Sora
-397: Space_Separator
-398: Spacing_Mark
-399: Sund
-400: Surrogate
-401: Sylo
-402: Symbol
-403: Syrc
-404: Tagb
-405: Takr
-406: Tale
-407: Talu
-408: Taml
-409: Tavt
-410: Telu
-411: Term
-412: Tfng
-413: Tglg
-414: Thaa
-415: Tibt
-416: Tirh
-417: Titlecase_Letter
-418: Ugar
-419: UIdeo
-420: Unassigned
-421: Uppercase_Letter
-422: Vaii
-423: VS
-424: Wara
-425: WSpace
-426: XIDC
-427: XIDS
-428: Xpeo
-429: Xsux
-430: Yiii
-431: Zinh
-432: Zyyy
-433: Zzzz
-434: In_Basic_Latin
-435: In_Latin_1_Supplement
-436: In_Latin_Extended_A
-437: In_Latin_Extended_B
-438: In_IPA_Extensions
-439: In_Spacing_Modifier_Letters
-440: In_Combining_Diacritical_Marks
-441: In_Greek_and_Coptic
-442: In_Cyrillic
-443: In_Cyrillic_Supplement
-444: In_Armenian
-445: In_Hebrew
-446: In_Arabic
-447: In_Syriac
-448: In_Arabic_Supplement
-449: In_Thaana
-450: In_NKo
-451: In_Samaritan
-452: In_Mandaic
-453: In_Arabic_Extended_A
-454: In_Devanagari
-455: In_Bengali
-456: In_Gurmukhi
-457: In_Gujarati
-458: In_Oriya
-459: In_Tamil
-460: In_Telugu
-461: In_Kannada
-462: In_Malayalam
-463: In_Sinhala
-464: In_Thai
-465: In_Lao
-466: In_Tibetan
-467: In_Myanmar
-468: In_Georgian
-469: In_Hangul_Jamo
-470: In_Ethiopic
-471: In_Ethiopic_Supplement
-472: In_Cherokee
-473: In_Unified_Canadian_Aboriginal_Syllabics
-474: In_Ogham
-475: In_Runic
-476: In_Tagalog
-477: In_Hanunoo
-478: In_Buhid
-479: In_Tagbanwa
-480: In_Khmer
-481: In_Mongolian
-482: In_Unified_Canadian_Aboriginal_Syllabics_Extended
-483: In_Limbu
-484: In_Tai_Le
-485: In_New_Tai_Lue
-486: In_Khmer_Symbols
-487: In_Buginese
-488: In_Tai_Tham
-489: In_Combining_Diacritical_Marks_Extended
-490: In_Balinese
-491: In_Sundanese
-492: In_Batak
-493: In_Lepcha
-494: In_Ol_Chiki
-495: In_Sundanese_Supplement
-496: In_Vedic_Extensions
-497: In_Phonetic_Extensions
-498: In_Phonetic_Extensions_Supplement
-499: In_Combining_Diacritical_Marks_Supplement
-500: In_Latin_Extended_Additional
-501: In_Greek_Extended
-502: In_General_Punctuation
-503: In_Superscripts_and_Subscripts
-504: In_Currency_Symbols
-505: In_Combining_Diacritical_Marks_for_Symbols
-506: In_Letterlike_Symbols
-507: In_Number_Forms
-508: In_Arrows
-509: In_Mathematical_Operators
-510: In_Miscellaneous_Technical
-511: In_Control_Pictures
-512: In_Optical_Character_Recognition
-513: In_Enclosed_Alphanumerics
-514: In_Box_Drawing
-515: In_Block_Elements
-516: In_Geometric_Shapes
-517: In_Miscellaneous_Symbols
-518: In_Dingbats
-519: In_Miscellaneous_Mathematical_Symbols_A
-520: In_Supplemental_Arrows_A
-521: In_Braille_Patterns
-522: In_Supplemental_Arrows_B
-523: In_Miscellaneous_Mathematical_Symbols_B
-524: In_Supplemental_Mathematical_Operators
-525: In_Miscellaneous_Symbols_and_Arrows
-526: In_Glagolitic
-527: In_Latin_Extended_C
-528: In_Coptic
-529: In_Georgian_Supplement
-530: In_Tifinagh
-531: In_Ethiopic_Extended
-532: In_Cyrillic_Extended_A
-533: In_Supplemental_Punctuation
-534: In_CJK_Radicals_Supplement
-535: In_Kangxi_Radicals
-536: In_Ideographic_Description_Characters
-537: In_CJK_Symbols_and_Punctuation
-538: In_Hiragana
-539: In_Katakana
-540: In_Bopomofo
-541: In_Hangul_Compatibility_Jamo
-542: In_Kanbun
-543: In_Bopomofo_Extended
-544: In_CJK_Strokes
-545: In_Katakana_Phonetic_Extensions
-546: In_Enclosed_CJK_Letters_and_Months
-547: In_CJK_Compatibility
-548: In_CJK_Unified_Ideographs_Extension_A
-549: In_Yijing_Hexagram_Symbols
-550: In_CJK_Unified_Ideographs
-551: In_Yi_Syllables
-552: In_Yi_Radicals
-553: In_Lisu
-554: In_Vai
-555: In_Cyrillic_Extended_B
-556: In_Bamum
-557: In_Modifier_Tone_Letters
-558: In_Latin_Extended_D
-559: In_Syloti_Nagri
-560: In_Common_Indic_Number_Forms
-561: In_Phags_pa
-562: In_Saurashtra
-563: In_Devanagari_Extended
-564: In_Kayah_Li
-565: In_Rejang
-566: In_Hangul_Jamo_Extended_A
-567: In_Javanese
-568: In_Myanmar_Extended_B
-569: In_Cham
-570: In_Myanmar_Extended_A
-571: In_Tai_Viet
-572: In_Meetei_Mayek_Extensions
-573: In_Ethiopic_Extended_A
-574: In_Latin_Extended_E
-575: In_Cherokee_Supplement
-576: In_Meetei_Mayek
-577: In_Hangul_Syllables
-578: In_Hangul_Jamo_Extended_B
-579: In_High_Surrogates
-580: In_High_Private_Use_Surrogates
-581: In_Low_Surrogates
-582: In_Private_Use_Area
-583: In_CJK_Compatibility_Ideographs
-584: In_Alphabetic_Presentation_Forms
-585: In_Arabic_Presentation_Forms_A
-586: In_Variation_Selectors
-587: In_Vertical_Forms
-588: In_Combining_Half_Marks
-589: In_CJK_Compatibility_Forms
-590: In_Small_Form_Variants
-591: In_Arabic_Presentation_Forms_B
-592: In_Halfwidth_and_Fullwidth_Forms
-593: In_Specials
-594: In_Linear_B_Syllabary
-595: In_Linear_B_Ideograms
-596: In_Aegean_Numbers
-597: In_Ancient_Greek_Numbers
-598: In_Ancient_Symbols
-599: In_Phaistos_Disc
-600: In_Lycian
-601: In_Carian
-602: In_Coptic_Epact_Numbers
-603: In_Old_Italic
-604: In_Gothic
-605: In_Old_Permic
-606: In_Ugaritic
-607: In_Old_Persian
-608: In_Deseret
-609: In_Shavian
-610: In_Osmanya
-611: In_Elbasan
-612: In_Caucasian_Albanian
-613: In_Linear_A
-614: In_Cypriot_Syllabary
-615: In_Imperial_Aramaic
-616: In_Palmyrene
-617: In_Nabataean
-618: In_Hatran
-619: In_Phoenician
-620: In_Lydian
-621: In_Meroitic_Hieroglyphs
-622: In_Meroitic_Cursive
-623: In_Kharoshthi
-624: In_Old_South_Arabian
-625: In_Old_North_Arabian
-626: In_Manichaean
-627: In_Avestan
-628: In_Inscriptional_Parthian
-629: In_Inscriptional_Pahlavi
-630: In_Psalter_Pahlavi
-631: In_Old_Turkic
-632: In_Old_Hungarian
-633: In_Rumi_Numeral_Symbols
-634: In_Brahmi
-635: In_Kaithi
-636: In_Sora_Sompeng
-637: In_Chakma
-638: In_Mahajani
-639: In_Sharada
-640: In_Sinhala_Archaic_Numbers
-641: In_Khojki
-642: In_Multani
-643: In_Khudawadi
-644: In_Grantha
-645: In_Tirhuta
-646: In_Siddham
-647: In_Modi
-648: In_Takri
-649: In_Ahom
-650: In_Warang_Citi
-651: In_Pau_Cin_Hau
-652: In_Cuneiform
-653: In_Cuneiform_Numbers_and_Punctuation
-654: In_Early_Dynastic_Cuneiform
-655: In_Egyptian_Hieroglyphs
-656: In_Anatolian_Hieroglyphs
-657: In_Bamum_Supplement
-658: In_Mro
-659: In_Bassa_Vah
-660: In_Pahawh_Hmong
-661: In_Miao
-662: In_Kana_Supplement
-663: In_Duployan
-664: In_Shorthand_Format_Controls
-665: In_Byzantine_Musical_Symbols
-666: In_Musical_Symbols
-667: In_Ancient_Greek_Musical_Notation
-668: In_Tai_Xuan_Jing_Symbols
-669: In_Counting_Rod_Numerals
-670: In_Mathematical_Alphanumeric_Symbols
-671: In_Sutton_SignWriting
-672: In_Mende_Kikakui
-673: In_Arabic_Mathematical_Alphabetic_Symbols
-674: In_Mahjong_Tiles
-675: In_Domino_Tiles
-676: In_Playing_Cards
-677: In_Enclosed_Alphanumeric_Supplement
-678: In_Enclosed_Ideographic_Supplement
-679: In_Miscellaneous_Symbols_and_Pictographs
-680: In_Emoticons
-681: In_Ornamental_Dingbats
-682: In_Transport_and_Map_Symbols
-683: In_Alchemical_Symbols
-684: In_Geometric_Shapes_Extended
-685: In_Supplemental_Arrows_C
-686: In_Supplemental_Symbols_and_Pictographs
-687: In_CJK_Unified_Ideographs_Extension_B
-688: In_CJK_Unified_Ideographs_Extension_C
-689: In_CJK_Unified_Ideographs_Extension_D
-690: In_CJK_Unified_Ideographs_Extension_E
-691: In_CJK_Compatibility_Ideographs_Supplement
-692: In_Tags
-693: In_Variation_Selectors_Supplement
-694: In_Supplementary_Private_Use_Area_A
-695: In_Supplementary_Private_Use_Area_B
-696: In_No_Block
+ 48: Changes_When_Titlecased
+ 49: Changes_When_Uppercased
+ 50: Cherokee
+ 51: Cn
+ 52: Co
+ 53: Common
+ 54: Coptic
+ 55: Cs
+ 56: Cuneiform
+ 57: Cypriot
+ 58: Cyrillic
+ 59: Dash
+ 60: Default_Ignorable_Code_Point
+ 61: Deprecated
+ 62: Deseret
+ 63: Devanagari
+ 64: Diacritic
+ 65: Duployan
+ 66: Egyptian_Hieroglyphs
+ 67: Elbasan
+ 68: Ethiopic
+ 69: Extender
+ 70: Georgian
+ 71: Glagolitic
+ 72: Gothic
+ 73: Grantha
+ 74: Grapheme_Base
+ 75: Grapheme_Extend
+ 76: Grapheme_Link
+ 77: Greek
+ 78: Gujarati
+ 79: Gurmukhi
+ 80: Han
+ 81: Hangul
+ 82: Hanunoo
+ 83: Hatran
+ 84: Hebrew
+ 85: Hex_Digit
+ 86: Hiragana
+ 87: Hyphen
+ 88: IDS_Binary_Operator
+ 89: IDS_Trinary_Operator
+ 90: ID_Continue
+ 91: ID_Start
+ 92: Ideographic
+ 93: Imperial_Aramaic
+ 94: Inherited
+ 95: Inscriptional_Pahlavi
+ 96: Inscriptional_Parthian
+ 97: Javanese
+ 98: Join_Control
+ 99: Kaithi
+100: Kannada
+101: Katakana
+102: Kayah_Li
+103: Kharoshthi
+104: Khmer
+105: Khojki
+106: Khudawadi
+107: L
+108: LC
+109: Lao
+110: Latin
+111: Lepcha
+112: Limbu
+113: Linear_A
+114: Linear_B
+115: Lisu
+116: Ll
+117: Lm
+118: Lo
+119: Logical_Order_Exception
+120: Lowercase
+121: Lt
+122: Lu
+123: Lycian
+124: Lydian
+125: M
+126: Mahajani
+127: Malayalam
+128: Mandaic
+129: Manichaean
+130: Math
+131: Mc
+132: Me
+133: Meetei_Mayek
+134: Mende_Kikakui
+135: Meroitic_Cursive
+136: Meroitic_Hieroglyphs
+137: Miao
+138: Mn
+139: Modi
+140: Mongolian
+141: Mro
+142: Multani
+143: Myanmar
+144: N
+145: Nabataean
+146: Nd
+147: New_Tai_Lue
+148: Nko
+149: Nl
+150: No
+151: Noncharacter_Code_Point
+152: Ogham
+153: Ol_Chiki
+154: Old_Hungarian
+155: Old_Italic
+156: Old_North_Arabian
+157: Old_Permic
+158: Old_Persian
+159: Old_South_Arabian
+160: Old_Turkic
+161: Oriya
+162: Osmanya
+163: Other_Alphabetic
+164: Other_Default_Ignorable_Code_Point
+165: Other_Grapheme_Extend
+166: Other_ID_Continue
+167: Other_ID_Start
+168: Other_Lowercase
+169: Other_Math
+170: Other_Uppercase
+171: P
+172: Pahawh_Hmong
+173: Palmyrene
+174: Pattern_Syntax
+175: Pattern_White_Space
+176: Pau_Cin_Hau
+177: Pc
+178: Pd
+179: Pe
+180: Pf
+181: Phags_Pa
+182: Phoenician
+183: Pi
+184: Po
+185: Ps
+186: Psalter_Pahlavi
+187: Quotation_Mark
+188: Radical
+189: Rejang
+190: Runic
+191: S
+192: STerm
+193: Samaritan
+194: Saurashtra
+195: Sc
+196: Sharada
+197: Shavian
+198: Siddham
+199: SignWriting
+200: Sinhala
+201: Sk
+202: Sm
+203: So
+204: Soft_Dotted
+205: Sora_Sompeng
+206: Sundanese
+207: Syloti_Nagri
+208: Syriac
+209: Tagalog
+210: Tagbanwa
+211: Tai_Le
+212: Tai_Tham
+213: Tai_Viet
+214: Takri
+215: Tamil
+216: Telugu
+217: Terminal_Punctuation
+218: Thaana
+219: Thai
+220: Tibetan
+221: Tifinagh
+222: Tirhuta
+223: Ugaritic
+224: Unified_Ideograph
+225: Unknown
+226: Uppercase
+227: Vai
+228: Variation_Selector
+229: Warang_Citi
+230: White_Space
+231: XID_Continue
+232: XID_Start
+233: Yi
+234: Z
+235: Zl
+236: Zp
+237: Zs
+ 40: Aghb
+ 15: AHex
+ 20: Arab
+ 93: Armi
+ 21: Armn
+ 23: Avst
+ 24: Bali
+ 25: Bamu
+ 26: Bass
+ 27: Batk
+ 28: Beng
+ 29: Bidi_C
+ 30: Bopo
+ 31: Brah
+ 32: Brai
+ 33: Bugi
+ 34: Buhd
+ 43: Cakm
+ 36: Cans
+ 37: Cari
+108: Cased_Letter
+ 50: Cher
+ 38: CI
+179: Close_Punctuation
+125: Combining_Mark
+177: Connector_Punctuation
+ 41: Control
+ 54: Copt
+ 57: Cprt
+195: Currency_Symbol
+ 45: CWCF
+ 46: CWCM
+ 47: CWL
+ 48: CWT
+ 49: CWU
+ 58: Cyrl
+178: Dash_Punctuation
+146: Decimal_Number
+ 61: Dep
+ 63: Deva
+ 60: DI
+ 64: Dia
+ 62: Dsrt
+ 65: Dupl
+ 66: Egyp
+ 67: Elba
+132: Enclosing_Mark
+ 68: Ethi
+ 69: Ext
+180: Final_Punctuation
+ 42: Format
+ 70: Geor
+ 71: Glag
+ 72: Goth
+ 73: Gran
+ 74: Gr_Base
+ 77: Grek
+ 75: Gr_Ext
+ 76: Gr_Link
+ 78: Gujr
+ 79: Guru
+ 81: Hang
+ 80: Hani
+ 82: Hano
+ 83: Hatr
+ 84: Hebr
+ 85: Hex
+ 86: Hira
+ 18: Hluw
+172: Hmng
+154: Hung
+ 90: IDC
+ 92: Ideo
+ 91: IDS
+ 88: IDSB
+ 89: IDST
+183: Initial_Punctuation
+155: Ital
+ 97: Java
+ 98: Join_C
+102: Kali
+101: Kana
+103: Khar
+104: Khmr
+105: Khoj
+100: Knda
+ 99: Kthi
+212: Lana
+109: Laoo
+110: Latn
+111: Lepc
+107: Letter
+149: Letter_Number
+112: Limb
+113: Lina
+114: Linb
+235: Line_Separator
+119: LOE
+116: Lowercase_Letter
+123: Lyci
+124: Lydi
+126: Mahj
+128: Mand
+129: Mani
+125: Mark
+202: Math_Symbol
+134: Mend
+135: Merc
+136: Mero
+127: Mlym
+117: Modifier_Letter
+201: Modifier_Symbol
+140: Mong
+141: Mroo
+133: Mtei
+142: Mult
+143: Mymr
+156: Narb
+145: Nbat
+151: NChar
+148: Nkoo
+138: Nonspacing_Mark
+144: Number
+163: OAlpha
+164: ODI
+152: Ogam
+165: OGr_Ext
+166: OIDC
+167: OIDS
+153: Olck
+168: OLower
+169: OMath
+185: Open_Punctuation
+160: Orkh
+161: Orya
+162: Osma
+ 35: Other
+118: Other_Letter
+150: Other_Number
+184: Other_Punctuation
+203: Other_Symbol
+170: OUpper
+173: Palm
+236: Paragraph_Separator
+174: Pat_Syn
+175: Pat_WS
+176: Pauc
+157: Perm
+181: Phag
+ 95: Phli
+186: Phlp
+182: Phnx
+137: Plrd
+ 52: Private_Use
+ 96: Prti
+171: Punctuation
+ 54: Qaac
+ 94: Qaai
+187: QMark
+189: Rjng
+190: Runr
+193: Samr
+159: Sarb
+194: Saur
+204: SD
+234: Separator
+199: Sgnw
+197: Shaw
+196: Shrd
+198: Sidd
+106: Sind
+200: Sinh
+205: Sora
+237: Space_Separator
+131: Spacing_Mark
+206: Sund
+ 55: Surrogate
+207: Sylo
+191: Symbol
+208: Syrc
+210: Tagb
+214: Takr
+211: Tale
+147: Talu
+215: Taml
+213: Tavt
+216: Telu
+217: Term
+221: Tfng
+209: Tglg
+218: Thaa
+220: Tibt
+222: Tirh
+121: Titlecase_Letter
+223: Ugar
+224: UIdeo
+ 51: Unassigned
+122: Uppercase_Letter
+227: Vaii
+228: VS
+229: Wara
+230: WSpace
+231: XIDC
+232: XIDS
+158: Xpeo
+ 56: Xsux
+233: Yiii
+ 94: Zinh
+ 53: Zyyy
+225: Zzzz
+238: In_Basic_Latin
+239: In_Latin_1_Supplement
+240: In_Latin_Extended_A
+241: In_Latin_Extended_B
+242: In_IPA_Extensions
+243: In_Spacing_Modifier_Letters
+244: In_Combining_Diacritical_Marks
+245: In_Greek_and_Coptic
+246: In_Cyrillic
+247: In_Cyrillic_Supplement
+248: In_Armenian
+249: In_Hebrew
+250: In_Arabic
+251: In_Syriac
+252: In_Arabic_Supplement
+253: In_Thaana
+254: In_NKo
+255: In_Samaritan
+256: In_Mandaic
+257: In_Arabic_Extended_A
+258: In_Devanagari
+259: In_Bengali
+260: In_Gurmukhi
+261: In_Gujarati
+262: In_Oriya
+263: In_Tamil
+264: In_Telugu
+265: In_Kannada
+266: In_Malayalam
+267: In_Sinhala
+268: In_Thai
+269: In_Lao
+270: In_Tibetan
+271: In_Myanmar
+272: In_Georgian
+273: In_Hangul_Jamo
+274: In_Ethiopic
+275: In_Ethiopic_Supplement
+276: In_Cherokee
+277: In_Unified_Canadian_Aboriginal_Syllabics
+278: In_Ogham
+279: In_Runic
+280: In_Tagalog
+281: In_Hanunoo
+282: In_Buhid
+283: In_Tagbanwa
+284: In_Khmer
+285: In_Mongolian
+286: In_Unified_Canadian_Aboriginal_Syllabics_Extended
+287: In_Limbu
+288: In_Tai_Le
+289: In_New_Tai_Lue
+290: In_Khmer_Symbols
+291: In_Buginese
+292: In_Tai_Tham
+293: In_Combining_Diacritical_Marks_Extended
+294: In_Balinese
+295: In_Sundanese
+296: In_Batak
+297: In_Lepcha
+298: In_Ol_Chiki
+299: In_Sundanese_Supplement
+300: In_Vedic_Extensions
+301: In_Phonetic_Extensions
+302: In_Phonetic_Extensions_Supplement
+303: In_Combining_Diacritical_Marks_Supplement
+304: In_Latin_Extended_Additional
+305: In_Greek_Extended
+306: In_General_Punctuation
+307: In_Superscripts_and_Subscripts
+308: In_Currency_Symbols
+309: In_Combining_Diacritical_Marks_for_Symbols
+310: In_Letterlike_Symbols
+311: In_Number_Forms
+312: In_Arrows
+313: In_Mathematical_Operators
+314: In_Miscellaneous_Technical
+315: In_Control_Pictures
+316: In_Optical_Character_Recognition
+317: In_Enclosed_Alphanumerics
+318: In_Box_Drawing
+319: In_Block_Elements
+320: In_Geometric_Shapes
+321: In_Miscellaneous_Symbols
+322: In_Dingbats
+323: In_Miscellaneous_Mathematical_Symbols_A
+324: In_Supplemental_Arrows_A
+325: In_Braille_Patterns
+326: In_Supplemental_Arrows_B
+327: In_Miscellaneous_Mathematical_Symbols_B
+328: In_Supplemental_Mathematical_Operators
+329: In_Miscellaneous_Symbols_and_Arrows
+330: In_Glagolitic
+331: In_Latin_Extended_C
+332: In_Coptic
+333: In_Georgian_Supplement
+334: In_Tifinagh
+335: In_Ethiopic_Extended
+336: In_Cyrillic_Extended_A
+337: In_Supplemental_Punctuation
+338: In_CJK_Radicals_Supplement
+339: In_Kangxi_Radicals
+340: In_Ideographic_Description_Characters
+341: In_CJK_Symbols_and_Punctuation
+342: In_Hiragana
+343: In_Katakana
+344: In_Bopomofo
+345: In_Hangul_Compatibility_Jamo
+346: In_Kanbun
+347: In_Bopomofo_Extended
+348: In_CJK_Strokes
+349: In_Katakana_Phonetic_Extensions
+350: In_Enclosed_CJK_Letters_and_Months
+351: In_CJK_Compatibility
+352: In_CJK_Unified_Ideographs_Extension_A
+353: In_Yijing_Hexagram_Symbols
+354: In_CJK_Unified_Ideographs
+355: In_Yi_Syllables
+356: In_Yi_Radicals
+357: In_Lisu
+358: In_Vai
+359: In_Cyrillic_Extended_B
+360: In_Bamum
+361: In_Modifier_Tone_Letters
+362: In_Latin_Extended_D
+363: In_Syloti_Nagri
+364: In_Common_Indic_Number_Forms
+365: In_Phags_pa
+366: In_Saurashtra
+367: In_Devanagari_Extended
+368: In_Kayah_Li
+369: In_Rejang
+370: In_Hangul_Jamo_Extended_A
+371: In_Javanese
+372: In_Myanmar_Extended_B
+373: In_Cham
+374: In_Myanmar_Extended_A
+375: In_Tai_Viet
+376: In_Meetei_Mayek_Extensions
+377: In_Ethiopic_Extended_A
+378: In_Latin_Extended_E
+379: In_Cherokee_Supplement
+380: In_Meetei_Mayek
+381: In_Hangul_Syllables
+382: In_Hangul_Jamo_Extended_B
+383: In_High_Surrogates
+384: In_High_Private_Use_Surrogates
+385: In_Low_Surrogates
+386: In_Private_Use_Area
+387: In_CJK_Compatibility_Ideographs
+388: In_Alphabetic_Presentation_Forms
+389: In_Arabic_Presentation_Forms_A
+390: In_Variation_Selectors
+391: In_Vertical_Forms
+392: In_Combining_Half_Marks
+393: In_CJK_Compatibility_Forms
+394: In_Small_Form_Variants
+395: In_Arabic_Presentation_Forms_B
+396: In_Halfwidth_and_Fullwidth_Forms
+397: In_Specials
+398: In_Linear_B_Syllabary
+399: In_Linear_B_Ideograms
+400: In_Aegean_Numbers
+401: In_Ancient_Greek_Numbers
+402: In_Ancient_Symbols
+403: In_Phaistos_Disc
+404: In_Lycian
+405: In_Carian
+406: In_Coptic_Epact_Numbers
+407: In_Old_Italic
+408: In_Gothic
+409: In_Old_Permic
+410: In_Ugaritic
+411: In_Old_Persian
+412: In_Deseret
+413: In_Shavian
+414: In_Osmanya
+415: In_Elbasan
+416: In_Caucasian_Albanian
+417: In_Linear_A
+418: In_Cypriot_Syllabary
+419: In_Imperial_Aramaic
+420: In_Palmyrene
+421: In_Nabataean
+422: In_Hatran
+423: In_Phoenician
+424: In_Lydian
+425: In_Meroitic_Hieroglyphs
+426: In_Meroitic_Cursive
+427: In_Kharoshthi
+428: In_Old_South_Arabian
+429: In_Old_North_Arabian
+430: In_Manichaean
+431: In_Avestan
+432: In_Inscriptional_Parthian
+433: In_Inscriptional_Pahlavi
+434: In_Psalter_Pahlavi
+435: In_Old_Turkic
+436: In_Old_Hungarian
+437: In_Rumi_Numeral_Symbols
+438: In_Brahmi
+439: In_Kaithi
+440: In_Sora_Sompeng
+441: In_Chakma
+442: In_Mahajani
+443: In_Sharada
+444: In_Sinhala_Archaic_Numbers
+445: In_Khojki
+446: In_Multani
+447: In_Khudawadi
+448: In_Grantha
+449: In_Tirhuta
+450: In_Siddham
+451: In_Modi
+452: In_Takri
+453: In_Ahom
+454: In_Warang_Citi
+455: In_Pau_Cin_Hau
+456: In_Cuneiform
+457: In_Cuneiform_Numbers_and_Punctuation
+458: In_Early_Dynastic_Cuneiform
+459: In_Egyptian_Hieroglyphs
+460: In_Anatolian_Hieroglyphs
+461: In_Bamum_Supplement
+462: In_Mro
+463: In_Bassa_Vah
+464: In_Pahawh_Hmong
+465: In_Miao
+466: In_Kana_Supplement
+467: In_Duployan
+468: In_Shorthand_Format_Controls
+469: In_Byzantine_Musical_Symbols
+470: In_Musical_Symbols
+471: In_Ancient_Greek_Musical_Notation
+472: In_Tai_Xuan_Jing_Symbols
+473: In_Counting_Rod_Numerals
+474: In_Mathematical_Alphanumeric_Symbols
+475: In_Sutton_SignWriting
+476: In_Mende_Kikakui
+477: In_Arabic_Mathematical_Alphabetic_Symbols
+478: In_Mahjong_Tiles
+479: In_Domino_Tiles
+480: In_Playing_Cards
+481: In_Enclosed_Alphanumeric_Supplement
+482: In_Enclosed_Ideographic_Supplement
+483: In_Miscellaneous_Symbols_and_Pictographs
+484: In_Emoticons
+485: In_Ornamental_Dingbats
+486: In_Transport_and_Map_Symbols
+487: In_Alchemical_Symbols
+488: In_Geometric_Shapes_Extended
+489: In_Supplemental_Arrows_C
+490: In_Supplemental_Symbols_and_Pictographs
+491: In_CJK_Unified_Ideographs_Extension_B
+492: In_CJK_Unified_Ideographs_Extension_C
+493: In_CJK_Unified_Ideographs_Extension_D
+494: In_CJK_Unified_Ideographs_Extension_E
+495: In_CJK_Compatibility_Ideographs_Supplement
+496: In_Tags
+497: In_Variation_Selectors_Supplement
+498: In_Supplementary_Private_Use_Area_A
+499: In_Supplementary_Private_Use_Area_B
+500: In_No_Block
diff --git a/index.html b/index.html
index 9d54c60..2bcdf07 100644
--- a/index.html
+++ b/index.html
@@ -8,7 +8,7 @@
<h1>Oniguruma</h1> (<a href="index_ja.html">Japanese</a>)
<p>
-(c) K.Kosako, updated at: 2017/08/03
+(c) K.Kosako, updated at: 2017/08/30
</p>
<dl>
@@ -16,6 +16,8 @@
<dt><b>What's new</b>
</font>
<ul>
+<li>2017/08/30: Version 6.6.1 released.</li>
+<li>2017/08/28: Version 6.6.0 released.</li>
<li>2017/08/03: Version 6.5.0 released.</li>
<li>2017/07/03: Version 6.4.0 released.</li>
<li>2017/05/29: Version 6.3.0 released.</li>
diff --git a/index_ja.html b/index_ja.html
index 52f0412..4e5265c 100644
--- a/index_ja.html
+++ b/index_ja.html
@@ -8,7 +8,7 @@
<h1>鬼車</h1>
<p>
-(c) K.Kosako, 最終更新: 2017/08/03
+(c) K.Kosako, 最終更新: 2017/08/30
</p>
<dl>
@@ -16,6 +16,8 @@
<dt><b>更新情報</b>
</font>
<ul>
+<li>2017/08/30: Version 6.6.1 リリース</li>
+<li>2017/08/28: Version 6.6.0 リリース</li>
<li>2017/08/03: Version 6.5.0 リリース</li>
<li>2017/07/03: Version 6.4.0 リリース</li>
<li>2017/05/29: Version 6.3.0 リリース</li>
diff --git a/src/Makefile.am b/src/Makefile.am
index 49f5f9f..be35b24 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -38,6 +38,8 @@ libonig_la_LDFLAGS = -version-info $(LTVERSION)
EXTRA_DIST = koi8.c mktable.c \
unicode_fold_data.c unicode_property_data.c \
unicode_property_data_posix.c \
+ unicode_egcb_data.c \
+ make_unicode_egcb.sh make_unicode_egcb_data.py \
make_unicode_fold.sh make_unicode_fold_data.py \
make_unicode_property.sh make_unicode_property_data.py \
gperf_fold_key_conv.py gperf_unfold_key_conv.py \
diff --git a/src/euc_jp.c b/src/euc_jp.c
index 3b54e95..756bdc7 100644
--- a/src/euc_jp.c
+++ b/src/euc_jp.c
@@ -2,7 +2,7 @@
euc_jp.c - Oniguruma (regular expression library)
**********************************************************************/
/*-
- * Copyright (c) 2002-2016 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
+ * Copyright (c) 2002-2017 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -252,7 +252,7 @@ is_code_ctype(OnigCodePoint code, unsigned int ctype)
return ONIGENC_IS_ASCII_CODE_CTYPE(code, ctype);
else {
if (CTYPE_IS_WORD_GRAPH_PRINT(ctype)) {
- return (code_to_mbclen(code) > 1 ? TRUE : FALSE);
+ return (code_to_mbclen(code) > 1 ? TRUE : FALSE);
}
}
}
diff --git a/src/gperf_fold_key_conv.py b/src/gperf_fold_key_conv.py
index bdf57ad..5267aa4 100755
--- a/src/gperf_fold_key_conv.py
+++ b/src/gperf_fold_key_conv.py
@@ -1,5 +1,7 @@
#!/usr/bin/python
# -*- coding: utf-8 -*-
+# gperf_fold_key_conv.py
+# Copyright (c) 2016-2017 K.Kosako
import sys
import re
diff --git a/src/gperf_unfold_key_conv.py b/src/gperf_unfold_key_conv.py
index 34f9c2f..6f3ccb4 100755
--- a/src/gperf_unfold_key_conv.py
+++ b/src/gperf_unfold_key_conv.py
@@ -1,5 +1,7 @@
#!/usr/bin/python
# -*- coding: utf-8 -*-
+# gperf_unfold_key_conv.py
+# Copyright (c) 2016-2017 K.Kosako
import sys
import re
diff --git a/src/make_unicode_egcb.sh b/src/make_unicode_egcb.sh
new file mode 100755
index 0000000..89cfa18
--- /dev/null
+++ b/src/make_unicode_egcb.sh
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+NAME=unicode_egcb_data
+
+./make_unicode_egcb_data.py > ${NAME}.c
+
+exit 0
diff --git a/src/make_unicode_egcb_data.py b/src/make_unicode_egcb_data.py
new file mode 100755
index 0000000..3f958eb
--- /dev/null
+++ b/src/make_unicode_egcb_data.py
@@ -0,0 +1,236 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+# make_unicode_egcb_data.py
+# Copyright (c) 2017 K.Kosako
+
+import sys
+import re
+
+MAX_CODE_POINT = 0x10ffff
+
+PR_TOTAL_REG = re.compile("#\s*Total\s+(?:code\s+points|elements):")
+PR_LINE_REG = re.compile("([0-9A-Fa-f]+)(?:..([0-9A-Fa-f]+))?\s*;\s*(\w+)")
+PA_LINE_REG = re.compile("(\w+)\s*;\s*(\w+)")
+PVA_LINE_REG = re.compile("(sc|gc)\s*;\s*(\w+)\s*;\s*(\w+)(?:\s*;\s*(\w+))?")
+BL_LINE_REG = re.compile("([0-9A-Fa-f]+)\.\.([0-9A-Fa-f]+)\s*;\s*(.*)")
+VERSION_REG = re.compile("#\s*.*-(\d+\.\d+\.\d+)\.txt")
+
+VERSION_INFO = None
+DIC = { }
+PROPS = []
+PropIndex = { }
+
+def check_version_info(s):
+ global VERSION_INFO
+ m = VERSION_REG.match(s)
+ if m is not None:
+ VERSION_INFO = m.group(1)
+
+def print_ranges(ranges):
+ for (start, end) in ranges:
+ print "0x%06x, 0x%06x" % (start, end)
+
+def print_prop_and_index(prop, i):
+ print "%-35s %3d" % (prop + ',', i)
+ PropIndex[prop] = i
+
+def dic_find_by_value(dic, v):
+ for key, val in dic.items():
+ if val == v:
+ return key
+
+ return None
+
+
+def normalize_ranges(in_ranges, sort=False):
+ if sort:
+ ranges = sorted(in_ranges)
+ else:
+ ranges = in_ranges
+
+ r = []
+ prev = None
+ for (start, end) in ranges:
+ if prev >= start - 1:
+ (pstart, pend) = r.pop()
+ end = max(pend, end)
+ start = pstart
+
+ r.append((start, end))
+ prev = end
+
+ return r
+
+def inverse_ranges(in_ranges):
+ r = []
+ prev = 0x000000
+ for (start, end) in in_ranges:
+ if prev < start:
+ r.append((prev, start - 1))
+
+ prev = end + 1
+
+ if prev < MAX_CODE_POINT:
+ r.append((prev, MAX_CODE_POINT))
+
+ return r
+
+def add_ranges(r1, r2):
+ r = r1 + r2
+ return normalize_ranges(r, True)
+
+def sub_one_range(one_range, rs):
+ r = []
+ (s1, e1) = one_range
+ n = len(rs)
+ for i in range(0, n):
+ (s2, e2) = rs[i]
+ if s2 >= s1 and s2 <= e1:
+ if s2 > s1:
+ r.append((s1, s2 - 1))
+ if e2 >= e1:
+ return r
+
+ s1 = e2 + 1
+ elif s2 < s1 and e2 >= s1:
+ if e2 < e1:
+ s1 = e2 + 1
+ else:
+ return r
+
+ r.append((s1, e1))
+ return r
+
+def sub_ranges(r1, r2):
+ r = []
+ for one_range in r1:
+ rs = sub_one_range(one_range, r2)
+ r.extend(rs)
+
+ return r
+
+def add_ranges_in_dic(dic):
+ r = []
+ for k, v in dic.items():
+ r = r + v
+
+ return normalize_ranges(r, True)
+
+def normalize_ranges_in_dic(dic, sort=False):
+ for k, v in dic.items():
+ r = normalize_ranges(v, sort)
+ dic[k] = r
+
+def merge_dic(to_dic, from_dic):
+ to_keys = to_dic.keys()
+ from_keys = from_dic.keys()
+ common = list(set(to_keys) & set(from_keys))
+ if len(common) != 0:
+ print >> sys.stderr, "merge_dic: collision: %s" % sorted(common)
+
+ to_dic.update(from_dic)
+
+def merge_props(to_props, from_props):
+ common = list(set(to_props) & set(from_props))
+ if len(common) != 0:
+ print >> sys.stderr, "merge_props: collision: %s" % sorted(common)
+
+ to_props.extend(from_props)
+
+def add_range_into_dic(dic, name, start, end):
+ d = dic.get(name, None)
+ if d is None:
+ d = [(start, end)]
+ dic[name] = d
+ else:
+ d.append((start, end))
+
+def list_sub(a, b):
+ x = set(a) - set(b)
+ return list(x)
+
+def parse_properties(path):
+ with open(path, 'r') as f:
+ dic = { }
+ prop = None
+ props = []
+ for line in f:
+ s = line.strip()
+ if len(s) == 0:
+ continue
+
+ if s[0] == '#':
+ if VERSION_INFO is None:
+ check_version_info(s)
+
+ m = PR_LINE_REG.match(s)
+ if m:
+ prop = m.group(3)
+ if m.group(2):
+ start = int(m.group(1), 16)
+ end = int(m.group(2), 16)
+ add_range_into_dic(dic, prop, start, end)
+ else:
+ start = int(m.group(1), 16)
+ add_range_into_dic(dic, prop, start, start)
+
+ elif PR_TOTAL_REG.match(s) is not None:
+ props.append(prop)
+
+ normalize_ranges_in_dic(dic)
+ return (dic, props)
+
+
+### main ###
+argv = sys.argv
+argc = len(argv)
+
+dic, props = parse_properties('GraphemeBreakProperty.txt')
+merge_dic(DIC, dic)
+merge_props(PROPS, props)
+
+PROPS = sorted(PROPS)
+
+print '/* Copyright (c) 2017 K.Kosako */'
+print '/* Generated by make_gcb_data.py. */'
+print ''
+if VERSION_INFO is not None:
+ print "#define GRAPHEME_BREAK_PROPERTY_VERSION %s" % re.sub(r'[\.-]', '_', VERSION_INFO)
+ print ''
+
+ranges = []
+for prop in PROPS:
+ rs = DIC[prop]
+ for (start, end) in rs:
+ ranges.append((start, end, prop))
+
+ranges = sorted(ranges, key=lambda x: x[0])
+
+prev = -1
+for (start, end, prop) in ranges:
+ if prev >= start:
+ raise ValueError("{2}:{0} - {1} range overlap prev value {3}".format(start, end, prop, prev))
+
+
+print '/*'
+for prop in PROPS:
+ print "%s" % prop
+print '*/'
+print ''
+
+num_ranges = len(ranges)
+print "static int EGCB_RANGE_NUM = %d;" % num_ranges
+
+print 'static EGCB_RANGE_TYPE EGCB_RANGES[] = {'
+for i, (start, end, prop) in enumerate(ranges):
+ if i == num_ranges - 1:
+ comma = ''
+ else:
+ comma = ','
+
+ type_name = 'EGCB_' + prop
+ print " {0x%06x, 0x%06x, %s }%s" % (start, end, type_name, comma)
+
+print '};'
+
+sys.exit(0)
diff --git a/src/make_unicode_fold_data.py b/src/make_unicode_fold_data.py
index 3f7d416..f4ad321 100755
--- a/src/make_unicode_fold_data.py
+++ b/src/make_unicode_fold_data.py
@@ -1,5 +1,7 @@
#!/usr/bin/python
# -*- coding: utf-8 -*-
+# make_unicode_fold_data.py
+# Copyright (c) 2016-2017 K.Kosako
import sys
import re
@@ -15,7 +17,7 @@ DataName = 'OnigUnicodeFolds'
ENCODING = 'utf-8'
LINE_REG = re.compile("([0-9A-F]{1,6}); (.); ([0-9A-F]{1,6})(?: ([0-9A-F]{1,6}))?(?: ([0-9A-F]{1,6}))?;(?:\s*#\s*)(.*)")
-VERSION_REG = re.compile("#.*-(\d\.\d\.\d)\.txt")
+VERSION_REG = re.compile("#.*-(\d+\.\d+\.\d+)\.txt")
VERSION_INFO = None
diff --git a/src/make_unicode_property_data.py b/src/make_unicode_property_data.py
index 25ed092..51986b6 100755
--- a/src/make_unicode_property_data.py
+++ b/src/make_unicode_property_data.py
@@ -1,9 +1,13 @@
#!/usr/bin/python
# -*- coding: utf-8 -*-
+# make_unicode_property_data.py
+# Copyright (c) 2016-2017 K.Kosako
import sys
import re
+INCLUDE_GRAPHEME_CLUSTER_DATA = False
+
POSIX_LIST = [
'NEWLINE', 'Alpha', 'Blank', 'Cntrl', 'Digit', 'Graph', 'Lower',
'Print', 'Punct', 'Space', 'Upper', 'XDigit', 'Word', 'Alnum', 'ASCII'
@@ -11,6 +15,8 @@ POSIX_LIST = [
MAX_CODE_POINT = 0x10ffff
+GRAPHEME_CLUSTER_BREAK_NAME_PREFIX = 'Grapheme_Cluster_Break_'
+
UD_FIRST_REG = re.compile("<.+,\s*First>")
UD_LAST_REG = re.compile("<.+,\s*Last>")
PR_TOTAL_REG = re.compile("#\s*Total\s+code\s+points:")
@@ -18,7 +24,7 @@ PR_LINE_REG = re.compile("([0-9A-Fa-f]+)(?:..([0-9A-Fa-f]+))?\s*;\s*(\w+)")
PA_LINE_REG = re.compile("(\w+)\s*;\s*(\w+)")
PVA_LINE_REG = re.compile("(sc|gc)\s*;\s*(\w+)\s*;\s*(\w+)(?:\s*;\s*(\w+))?")
BL_LINE_REG = re.compile("([0-9A-Fa-f]+)\.\.([0-9A-Fa-f]+)\s*;\s*(.*)")
-VERSION_REG = re.compile("#\s*.*-(\d\.\d\.\d)\.txt")
+VERSION_REG = re.compile("#\s*.*-(\d+\.\d+\.\d+)\.txt")
VERSION_INFO = None
DIC = { }
@@ -27,373 +33,377 @@ PropIndex = { }
PROPERTY_NAME_MAX_LEN = 0
def normalize_prop_name(name):
- name = re.sub(r'[ _]', '', name)
- name = name.lower()
- return name
+ name = re.sub(r'[ _]', '', name)
+ name = name.lower()
+ return name
def fix_block_name(name):
- s = re.sub(r'[- ]+', '_', name)
- return 'In_' + s
+ s = re.sub(r'[- ]+', '_', name)
+ return 'In_' + s
def check_version_info(s):
- global VERSION_INFO
- m = VERSION_REG.match(s)
- if m is not None:
- VERSION_INFO = m.group(1)
+ global VERSION_INFO
+ m = VERSION_REG.match(s)
+ if m is not None:
+ VERSION_INFO = m.group(1)
def print_ranges(ranges):
- for (start, end) in ranges:
- print "0x%06x, 0x%06x" % (start, end)
+ for (start, end) in ranges:
+ print "0x%06x, 0x%06x" % (start, end)
- print len(ranges)
+ print len(ranges)
def print_prop_and_index(prop, i):
- print "%-35s %3d" % (prop + ',', i)
- PropIndex[prop] = i
+ print "%-35s %3d" % (prop + ',', i)
+ PropIndex[prop] = i
-print_cache = { }
+PRINT_CACHE = { }
def print_property(prop, data, desc):
- print ''
- print "/* PROPERTY: '%s': %s */" % (prop, desc)
+ print ''
+ print "/* PROPERTY: '%s': %s */" % (prop, desc)
- prev_prop = dic_find_by_value(print_cache, data)
- if prev_prop is not None:
- print "#define CR_%s CR_%s" % (prop, prev_prop)
- else:
- print_cache[prop] = data
- print "static const OnigCodePoint"
- print "CR_%s[] = { %d," % (prop, len(data))
- for (start, end) in data:
- print "0x%04x, 0x%04x," % (start, end)
+ prev_prop = dic_find_by_value(PRINT_CACHE, data)
+ if prev_prop is not None:
+ print "#define CR_%s CR_%s" % (prop, prev_prop)
+ else:
+ PRINT_CACHE[prop] = data
+ print "static const OnigCodePoint"
+ print "CR_%s[] = { %d," % (prop, len(data))
+ for (start, end) in data:
+ print "0x%04x, 0x%04x," % (start, end)
- print "}; /* END of CR_%s */" % prop
+ print "}; /* END of CR_%s */" % prop
def dic_find_by_value(dic, v):
- for key, val in dic.items():
- if val == v:
- return key
+ for key, val in dic.items():
+ if val == v:
+ return key
- return None
+ return None
def normalize_ranges(in_ranges, sort=False):
- if sort:
- ranges = sorted(in_ranges)
- else:
- ranges = in_ranges
+ if sort:
+ ranges = sorted(in_ranges)
+ else:
+ ranges = in_ranges
- r = []
- prev = None
- for (start, end) in ranges:
- if prev >= start - 1:
- (pstart, pend) = r.pop()
- end = max(pend, end)
- start = pstart
+ r = []
+ prev = None
+ for (start, end) in ranges:
+ if prev >= start - 1:
+ (pstart, pend) = r.pop()
+ end = max(pend, end)
+ start = pstart
- r.append((start, end))
- prev = end
+ r.append((start, end))
+ prev = end
- return r
+ return r
def inverse_ranges(in_ranges):
- r = []
- prev = 0x000000
- for (start, end) in in_ranges:
- if prev < start:
- r.append((prev, start - 1))
+ r = []
+ prev = 0x000000
+ for (start, end) in in_ranges:
+ if prev < start:
+ r.append((prev, start - 1))
- prev = end + 1
+ prev = end + 1
- if prev < MAX_CODE_POINT:
- r.append((prev, MAX_CODE_POINT))
+ if prev < MAX_CODE_POINT:
+ r.append((prev, MAX_CODE_POINT))
- return r
+ return r
def add_ranges(r1, r2):
- r = r1 + r2
- return normalize_ranges(r, True)
+ r = r1 + r2
+ return normalize_ranges(r, True)
def sub_one_range(one_range, rs):
- r = []
- (s1, e1) = one_range
- n = len(rs)
- for i in range(0, n):
- (s2, e2) = rs[i]
- if s2 >= s1 and s2 <= e1:
- if s2 > s1:
- r.append((s1, s2 - 1))
- if e2 >= e1:
- return r
-
- s1 = e2 + 1
- elif s2 < s1 and e2 >= s1:
- if e2 < e1:
- s1 = e2 + 1
- else:
- return r
-
- r.append((s1, e1))
- return r
+ r = []
+ (s1, e1) = one_range
+ n = len(rs)
+ for i in range(0, n):
+ (s2, e2) = rs[i]
+ if s2 >= s1 and s2 <= e1:
+ if s2 > s1:
+ r.append((s1, s2 - 1))
+ if e2 >= e1:
+ return r
+
+ s1 = e2 + 1
+ elif s2 < s1 and e2 >= s1:
+ if e2 < e1:
+ s1 = e2 + 1
+ else:
+ return r
+
+ r.append((s1, e1))
+ return r
def sub_ranges(r1, r2):
- r = []
- for one_range in r1:
- rs = sub_one_range(one_range, r2)
- r.extend(rs)
+ r = []
+ for one_range in r1:
+ rs = sub_one_range(one_range, r2)
+ r.extend(rs)
- return r
+ return r
def add_ranges_in_dic(dic):
- r = []
- for k, v in dic.items():
- r = r + v
+ r = []
+ for k, v in dic.items():
+ r = r + v
- return normalize_ranges(r, True)
+ return normalize_ranges(r, True)
def normalize_ranges_in_dic(dic, sort=False):
- for k, v in dic.items():
- r = normalize_ranges(v, sort)
- dic[k] = r
+ for k, v in dic.items():
+ r = normalize_ranges(v, sort)
+ dic[k] = r
def merge_dic(to_dic, from_dic):
- to_keys = to_dic.keys()
- from_keys = from_dic.keys()
- common = list(set(to_keys) & set(from_keys))
- if len(common) != 0:
- print >> sys.stderr, "merge_dic: collision: %s" % sorted(common)
+ to_keys = to_dic.keys()
+ from_keys = from_dic.keys()
+ common = list(set(to_keys) & set(from_keys))
+ if len(common) != 0:
+ print >> sys.stderr, "merge_dic: collision: %s" % sorted(common)
- to_dic.update(from_dic)
+ to_dic.update(from_dic)
def merge_props(to_props, from_props):
- common = list(set(to_props) & set(from_props))
- if len(common) != 0:
- print >> sys.stderr, "merge_props: collision: %s" % sorted(common)
+ common = list(set(to_props) & set(from_props))
+ if len(common) != 0:
+ print >> sys.stderr, "merge_props: collision: %s" % sorted(common)
- to_props.extend(from_props)
+ to_props.extend(from_props)
def add_range_into_dic(dic, name, start, end):
- d = dic.get(name, None)
- if d is None:
- d = [(start, end)]
- dic[name] = d
- else:
- d.append((start, end))
+ d = dic.get(name, None)
+ if d is None:
+ d = [(start, end)]
+ dic[name] = d
+ else:
+ d.append((start, end))
def list_sub(a, b):
- x = set(a) - set(b)
- return list(x)
+ x = set(a) - set(b)
+ return list(x)
def parse_unicode_data_file(f):
+ dic = { }
+ assigned = []
+ for line in f:
+ s = line.strip()
+ if len(s) == 0:
+ continue
+ if s[0] == '#':
+ continue
+
+ a = s.split(';')
+ code = int(a[0], 16)
+ desc = a[1]
+ prop = a[2]
+ if UD_FIRST_REG.match(desc) is not None:
+ start = code
+ end = None
+ elif UD_LAST_REG.match(desc) is not None:
+ end = code
+ else:
+ start = end = code
+
+ if end is not None:
+ assigned.append((start, end))
+ add_range_into_dic(dic, prop, start, end)
+ if len(prop) == 2:
+ add_range_into_dic(dic, prop[0:1], start, end)
+
+ normalize_ranges_in_dic(dic)
+ return dic, assigned
+
+def parse_properties(path, klass, prop_prefix = None):
+ with open(path, 'r') as f:
dic = { }
- assigned = []
+ prop = None
+ props = []
for line in f:
- s = line.strip()
- if len(s) == 0:
- continue
- if s[0] == '#':
- continue
-
- a = s.split(';')
- code = int(a[0], 16)
- desc = a[1]
- prop = a[2]
- if UD_FIRST_REG.match(desc) is not None:
- start = code
- end = None
- elif UD_LAST_REG.match(desc) is not None:
- end = code
+ s = line.strip()
+ if len(s) == 0:
+ continue
+
+ if s[0] == '#':
+ if VERSION_INFO is None:
+ check_version_info(s)
+
+ m = PR_LINE_REG.match(s)
+ if m:
+ prop = m.group(3)
+ if prop_prefix is not None:
+ prop = prop_prefix + prop
+
+ if m.group(2):
+ start = int(m.group(1), 16)
+ end = int(m.group(2), 16)
+ add_range_into_dic(dic, prop, start, end)
else:
- start = end = code
-
- if end is not None:
- assigned.append((start, end))
- add_range_into_dic(dic, prop, start, end)
- if len(prop) == 2:
- add_range_into_dic(dic, prop[0:1], start, end)
-
- normalize_ranges_in_dic(dic)
- return dic, assigned
-
-def parse_properties(path, klass):
- with open(path, 'r') as f:
- dic = { }
- prop = None
- props = []
- for line in f:
- s = line.strip()
- if len(s) == 0:
- continue
-
- if s[0] == '#':
- if VERSION_INFO is None:
- check_version_info(s)
-
- m = PR_LINE_REG.match(s)
- if m:
- prop = m.group(3)
- if m.group(2):
- start = int(m.group(1), 16)
- end = int(m.group(2), 16)
- add_range_into_dic(dic, prop, start, end)
- else:
- start = int(m.group(1), 16)
- add_range_into_dic(dic, prop, start, start)
-
- elif PR_TOTAL_REG.match(s) is not None:
- KDIC[prop] = klass
- props.append(prop)
-
- normalize_ranges_in_dic(dic)
- return (dic, props)
+ start = int(m.group(1), 16)
+ add_range_into_dic(dic, prop, start, start)
+
+ elif PR_TOTAL_REG.match(s) is not None:
+ KDIC[prop] = klass
+ props.append(prop)
+
+ normalize_ranges_in_dic(dic)
+ return (dic, props)
def parse_property_aliases(path):
- a = { }
- with open(path, 'r') as f:
- for line in f:
- s = line.strip()
- if len(s) == 0:
- continue
+ a = { }
+ with open(path, 'r') as f:
+ for line in f:
+ s = line.strip()
+ if len(s) == 0:
+ continue
- m = PA_LINE_REG.match(s)
- if not(m):
- continue
+ m = PA_LINE_REG.match(s)
+ if not(m):
+ continue
- if m.group(1) == m.group(2):
- continue
+ if m.group(1) == m.group(2):
+ continue
- a[m.group(1)] = m.group(2)
+ a[m.group(1)] = m.group(2)
- return a
+ return a
def parse_property_value_aliases(path):
- a = { }
- with open(path, 'r') as f:
- for line in f:
- s = line.strip()
- if len(s) == 0:
- continue
-
- m = PVA_LINE_REG.match(s)
- if not(m):
- continue
-
- cat = m.group(1)
- x2 = m.group(2)
- x3 = m.group(3)
- x4 = m.group(4)
- if cat == 'sc':
- if x2 != x3:
- a[x2] = x3
- if x4 and x4 != x3:
- a[x4] = x3
- else:
- if x2 != x3:
- a[x3] = x2
- if x4 and x4 != x2:
- a[x4] = x2
-
- return a
+ a = { }
+ with open(path, 'r') as f:
+ for line in f:
+ s = line.strip()
+ if len(s) == 0:
+ continue
+
+ m = PVA_LINE_REG.match(s)
+ if not(m):
+ continue
+
+ cat = m.group(1)
+ x2 = m.group(2)
+ x3 = m.group(3)
+ x4 = m.group(4)
+ if cat == 'sc':
+ if x2 != x3:
+ a[x2] = x3
+ if x4 and x4 != x3:
+ a[x4] = x3
+ else:
+ if x2 != x3:
+ a[x3] = x2
+ if x4 and x4 != x2:
+ a[x4] = x2
+
+ return a
def parse_blocks(path):
- dic = { }
- blocks = []
- with open(path, 'r') as f:
- for line in f:
- s = line.strip()
- if len(s) == 0:
- continue
-
- m = BL_LINE_REG.match(s)
- if not(m):
- continue
-
- start = int(m.group(1), 16)
- end = int(m.group(2), 16)
- block = fix_block_name(m.group(3))
- add_range_into_dic(dic, block, start, end)
- blocks.append(block)
-
- noblock = fix_block_name('No_Block')
- dic[noblock] = inverse_ranges(add_ranges_in_dic(dic))
- blocks.append(noblock)
- return dic, blocks
+ dic = { }
+ blocks = []
+ with open(path, 'r') as f:
+ for line in f:
+ s = line.strip()
+ if len(s) == 0:
+ continue
+
+ m = BL_LINE_REG.match(s)
+ if not(m):
+ continue
+
+ start = int(m.group(1), 16)
+ end = int(m.group(2), 16)
+ block = fix_block_name(m.group(3))
+ add_range_into_dic(dic, block, start, end)
+ blocks.append(block)
+
+ noblock = fix_block_name('No_Block')
+ dic[noblock] = inverse_ranges(add_ranges_in_dic(dic))
+ blocks.append(noblock)
+ return dic, blocks
def add_primitive_props(assigned):
- DIC['Assigned'] = normalize_ranges(assigned)
- DIC['Any'] = [(0x000000, 0x10ffff)]
- DIC['ASCII'] = [(0x000000, 0x00007f)]
- DIC['NEWLINE'] = [(0x00000a, 0x00000a)]
- DIC['Cn'] = inverse_ranges(DIC['Assigned'])
- DIC['C'].extend(DIC['Cn'])
- DIC['C'] = normalize_ranges(DIC['C'], True)
-
- d = []
- d.extend(DIC['Ll'])
- d.extend(DIC['Lt'])
- d.extend(DIC['Lu'])
- DIC['LC'] = normalize_ranges(d, True)
+ DIC['Assigned'] = normalize_ranges(assigned)
+ DIC['Any'] = [(0x000000, 0x10ffff)]
+ DIC['ASCII'] = [(0x000000, 0x00007f)]
+ DIC['NEWLINE'] = [(0x00000a, 0x00000a)]
+ DIC['Cn'] = inverse_ranges(DIC['Assigned'])
+ DIC['C'].extend(DIC['Cn'])
+ DIC['C'] = normalize_ranges(DIC['C'], True)
+
+ d = []
+ d.extend(DIC['Ll'])
+ d.extend(DIC['Lt'])
+ d.extend(DIC['Lu'])
+ DIC['LC'] = normalize_ranges(d, True)
def add_posix_props(dic):
- alnum = []
- alnum.extend(dic['Alphabetic'])
- alnum.extend(dic['Nd']) # Nd == Decimal_Number
- alnum = normalize_ranges(alnum, True)
-
- blank = [(0x0009, 0x0009)]
- blank.extend(dic['Zs']) # Zs == Space_Separator
- blank = normalize_ranges(blank, True)
-
- word = []
- word.extend(dic['Alphabetic'])
- word.extend(dic['M']) # M == Mark
- word.extend(dic['Nd'])
- word.extend(dic['Pc']) # Pc == Connector_Punctuation
- word = normalize_ranges(word, True)
-
- graph = sub_ranges(dic['Any'], dic['White_Space'])
- graph = sub_ranges(graph, dic['Cc'])
- graph = sub_ranges(graph, dic['Cs']) # Cs == Surrogate
- graph = sub_ranges(graph, dic['Cn']) # Cn == Unassigned
- graph = normalize_ranges(graph, True)
-
- p = []
- p.extend(graph)
- p.extend(dic['Zs'])
- p = normalize_ranges(p, True)
-
- dic['Alpha'] = dic['Alphabetic']
- dic['Upper'] = dic['Uppercase']
- dic['Lower'] = dic['Lowercase']
- dic['Punct'] = dic['P'] # P == Punctuation
- dic['Digit'] = dic['Nd']
- dic['XDigit'] = [(0x0030, 0x0039), (0x0041, 0x0046), (0x0061, 0x0066)]
- dic['Alnum'] = alnum
- dic['Space'] = dic['White_Space']
- dic['Blank'] = blank
- dic['Cntrl'] = dic['Cc']
- dic['Word'] = word
- dic['Graph'] = graph
- dic['Print'] = p
+ alnum = []
+ alnum.extend(dic['Alphabetic'])
+ alnum.extend(dic['Nd']) # Nd == Decimal_Number
+ alnum = normalize_ranges(alnum, True)
+
+ blank = [(0x0009, 0x0009)]
+ blank.extend(dic['Zs']) # Zs == Space_Separator
+ blank = normalize_ranges(blank, True)
+
+ word = []
+ word.extend(dic['Alphabetic'])
+ word.extend(dic['M']) # M == Mark
+ word.extend(dic['Nd'])
+ word.extend(dic['Pc']) # Pc == Connector_Punctuation
+ word = normalize_ranges(word, True)
+
+ graph = sub_ranges(dic['Any'], dic['White_Space'])
+ graph = sub_ranges(graph, dic['Cc'])
+ graph = sub_ranges(graph, dic['Cs']) # Cs == Surrogate
+ graph = sub_ranges(graph, dic['Cn']) # Cn == Unassigned
+ graph = normalize_ranges(graph, True)
+
+ p = []
+ p.extend(graph)
+ p.extend(dic['Zs'])
+ p = normalize_ranges(p, True)
+
+ dic['Alpha'] = dic['Alphabetic']
+ dic['Upper'] = dic['Uppercase']
+ dic['Lower'] = dic['Lowercase']
+ dic['Punct'] = dic['P'] # P == Punctuation
+ dic['Digit'] = dic['Nd']
+ dic['XDigit'] = [(0x0030, 0x0039), (0x0041, 0x0046), (0x0061, 0x0066)]
+ dic['Alnum'] = alnum
+ dic['Space'] = dic['White_Space']
+ dic['Blank'] = blank
+ dic['Cntrl'] = dic['Cc']
+ dic['Word'] = word
+ dic['Graph'] = graph
+ dic['Print'] = p
def set_max_prop_name(name):
- global PROPERTY_NAME_MAX_LEN
- n = len(name)
- if n > PROPERTY_NAME_MAX_LEN:
- PROPERTY_NAME_MAX_LEN = n
+ global PROPERTY_NAME_MAX_LEN
+ n = len(name)
+ if n > PROPERTY_NAME_MAX_LEN:
+ PROPERTY_NAME_MAX_LEN = n
-LIST_COUNTER = 1
def entry_prop_name(name, index):
- global LIST_COUNTER
- set_max_prop_name(name)
- if OUTPUT_LIST and index >= len(POSIX_LIST):
- print >> UPF, "%3d: %s" % (LIST_COUNTER, name)
- LIST_COUNTER += 1
+ set_max_prop_name(name)
+ if OUTPUT_LIST_MODE and index >= len(POSIX_LIST):
+ print >> UPF, "%3d: %s" % (index, name)
+def entry_and_print_prop_and_index(name, index):
+ entry_prop_name(name, index)
+ nname = normalize_prop_name(name)
+ print_prop_and_index(nname, index)
### main ###
argv = sys.argv
@@ -401,19 +411,18 @@ argc = len(argv)
POSIX_ONLY = False
if argc >= 2:
- if argv[1] == '-posix':
- POSIX_ONLY = True
+ if argv[1] == '-posix':
+ POSIX_ONLY = True
-OUTPUT_LIST = not(POSIX_ONLY)
+OUTPUT_LIST_MODE = not(POSIX_ONLY)
with open('UnicodeData.txt', 'r') as f:
- dic, assigned = parse_unicode_data_file(f)
- DIC = dic
- add_primitive_props(assigned)
+ dic, assigned = parse_unicode_data_file(f)
+ DIC = dic
+ add_primitive_props(assigned)
PROPS = DIC.keys()
PROPS = list_sub(PROPS, POSIX_LIST)
-PROPS = sorted(PROPS)
dic, props = parse_properties('DerivedCoreProperties.txt', 'Derived Property')
merge_dic(DIC, dic)
@@ -437,47 +446,59 @@ merge_dic(ALIASES, a)
dic, BLOCKS = parse_blocks('Blocks.txt')
merge_dic(DIC, dic)
+if INCLUDE_GRAPHEME_CLUSTER_DATA:
+ dic, props = parse_properties('GraphemeBreakProperty.txt',
+ 'GraphemeBreak Property',
+ GRAPHEME_CLUSTER_BREAK_NAME_PREFIX)
+ merge_dic(DIC, dic)
+ merge_props(PROPS, props)
+ #prop = GRAPHEME_CLUSTER_BREAK_NAME_PREFIX + 'Other'
+ #DIC[prop] = inverse_ranges(add_ranges_in_dic(dic))
+ #PROPS.append(prop)
+ #KDIC[prop] = 'GrapemeBreak Property'
+
add_posix_props(DIC)
+PROPS = sorted(PROPS)
s = '''%{
/* Generated by make_unicode_property_data.py. */
'''
print s
for prop in POSIX_LIST:
- print_property(prop, DIC[prop], "POSIX [[:%s:]]" % prop)
+ print_property(prop, DIC[prop], "POSIX [[:%s:]]" % prop)
print ''
if not(POSIX_ONLY):
- for prop in PROPS:
- klass = KDIC.get(prop, None)
- if klass is None:
- n = len(prop)
- if n == 1:
- klass = 'Major Category'
- elif n == 2:
- klass = 'General Category'
- else:
- klass = '-'
+ for prop in PROPS:
+ klass = KDIC.get(prop, None)
+ if klass is None:
+ n = len(prop)
+ if n == 1:
+ klass = 'Major Category'
+ elif n == 2:
+ klass = 'General Category'
+ else:
+ klass = '-'
- print_property(prop, DIC[prop], klass)
+ print_property(prop, DIC[prop], klass)
- for block in BLOCKS:
- print_property(block, DIC[block], 'Block')
+ for block in BLOCKS:
+ print_property(block, DIC[block], 'Block')
print ''
print "static const OnigCodePoint*\nconst CodeRanges[] = {"
for prop in POSIX_LIST:
- print " CR_%s," % prop
+ print " CR_%s," % prop
if not(POSIX_ONLY):
- for prop in PROPS:
- print " CR_%s," % prop
+ for prop in PROPS:
+ print " CR_%s," % prop
- for prop in BLOCKS:
- print " CR_%s," % prop
+ for prop in BLOCKS:
+ print " CR_%s," % prop
s = '''};
%}
@@ -489,57 +510,51 @@ struct PropertyNameCtype {
'''
sys.stdout.write(s)
-if OUTPUT_LIST:
- UPF = open("UNICODE_PROPERTIES", "w")
- if VERSION_INFO is not None:
- print >> UPF, "Unicode Properties (from Unicode Version: %s)" % VERSION_INFO
- print >> UPF, ''
+if OUTPUT_LIST_MODE:
+ UPF = open("UNICODE_PROPERTIES", "w")
+ if VERSION_INFO is not None:
+ print >> UPF, "Unicode Properties (from Unicode Version: %s)" % VERSION_INFO
+ print >> UPF, ''
index = -1
for prop in POSIX_LIST:
index += 1
- entry_prop_name(prop, index)
- prop = normalize_prop_name(prop)
- print_prop_and_index(prop, index)
+ entry_and_print_prop_and_index(prop, index)
if not(POSIX_ONLY):
- for prop in PROPS:
- index += 1
- entry_prop_name(prop, index)
- prop = normalize_prop_name(prop)
- print_prop_and_index(prop, index)
-
- NALIASES = map(lambda (k,v):(normalize_prop_name(k), k, v), ALIASES.items())
- NALIASES = sorted(NALIASES)
- for (nk, k, v) in NALIASES:
- nv = normalize_prop_name(v)
- if PropIndex.get(nk, None) is not None:
- print >> sys.stderr, "ALIASES: already exists: %s => %s" % (k, v)
- continue
- index = PropIndex.get(nv, None)
- if index is None:
- #print >> sys.stderr, "ALIASES: value is not exist: %s => %s" % (k, v)
- continue
-
- entry_prop_name(k, index)
- print_prop_and_index(nk, index)
-
- for name in BLOCKS:
- index += 1
- entry_prop_name(name, index)
- name = normalize_prop_name(name)
- print_prop_and_index(name, index)
+ for prop in PROPS:
+ index += 1
+ entry_and_print_prop_and_index(prop, index)
+
+ NALIASES = map(lambda (k,v):(normalize_prop_name(k), k, v), ALIASES.items())
+ NALIASES = sorted(NALIASES)
+ for (nk, k, v) in NALIASES:
+ nv = normalize_prop_name(v)
+ if PropIndex.get(nk, None) is not None:
+ print >> sys.stderr, "ALIASES: already exists: %s => %s" % (k, v)
+ continue
+ aindex = PropIndex.get(nv, None)
+ if aindex is None:
+ #print >> sys.stderr, "ALIASES: value is not exist: %s => %s" % (k, v)
+ continue
+
+ entry_prop_name(k, aindex)
+ print_prop_and_index(nk, aindex)
+
+ for name in BLOCKS:
+ index += 1
+ entry_and_print_prop_and_index(name, index)
print '%%'
print ''
if VERSION_INFO is not None:
- print "#define PROPERTY_VERSION %s" % re.sub(r'[\.-]', '_', VERSION_INFO)
- print ''
+ print "#define PROPERTY_VERSION %s" % re.sub(r'[\.-]', '_', VERSION_INFO)
+ print ''
print "#define PROPERTY_NAME_MAX_SIZE %d" % (PROPERTY_NAME_MAX_LEN + 10)
print "#define CODE_RANGES_NUM %d" % (index + 1)
-if OUTPUT_LIST:
- UPF.close()
+if OUTPUT_LIST_MODE:
+ UPF.close()
sys.exit(0)
diff --git a/src/oniguruma.h b/src/oniguruma.h
index bc8983f..dbcbbdb 100644
--- a/src/oniguruma.h
+++ b/src/oniguruma.h
@@ -35,8 +35,8 @@ extern "C" {
#define ONIGURUMA
#define ONIGURUMA_VERSION_MAJOR 6
-#define ONIGURUMA_VERSION_MINOR 5
-#define ONIGURUMA_VERSION_TEENY 0
+#define ONIGURUMA_VERSION_MINOR 6
+#define ONIGURUMA_VERSION_TEENY 1
#ifdef __cplusplus
# ifndef HAVE_PROTOTYPES
@@ -270,7 +270,7 @@ ONIG_EXTERN OnigEncodingType OnigEncodingGB18030;
#define ONIGENC_IS_CODE_ASCII(code) ((code) < 128)
#define ONIGENC_IS_MBC_WORD(enc,s,end) \
ONIGENC_IS_CODE_WORD(enc,ONIGENC_MBC_TO_CODE(enc,s,end))
-
+#define ONIGENC_IS_MBC_WORD_ASCII(enc,s,end) onigenc_is_mbc_word_ascii(enc,s,end)
#define ONIGENC_NAME(enc) ((enc)->name)
@@ -385,6 +385,7 @@ typedef unsigned int OnigOptionType;
/* options */
#define ONIG_OPTION_NONE 0U
+/* options (compile time) */
#define ONIG_OPTION_IGNORECASE 1U
#define ONIG_OPTION_EXTEND (ONIG_OPTION_IGNORECASE << 1)
#define ONIG_OPTION_MULTILINE (ONIG_OPTION_EXTEND << 1)
@@ -395,11 +396,18 @@ typedef unsigned int OnigOptionType;
#define ONIG_OPTION_DONT_CAPTURE_GROUP (ONIG_OPTION_NEGATE_SINGLELINE << 1)
#define ONIG_OPTION_CAPTURE_GROUP (ONIG_OPTION_DONT_CAPTURE_GROUP << 1)
/* options (search time) */
-#define ONIG_OPTION_NOTBOL (ONIG_OPTION_CAPTURE_GROUP << 1)
-#define ONIG_OPTION_NOTEOL (ONIG_OPTION_NOTBOL << 1)
-#define ONIG_OPTION_POSIX_REGION (ONIG_OPTION_NOTEOL << 1)
-#define ONIG_OPTION_CHECK_VALIDITY_OF_STRING (ONIG_OPTION_POSIX_REGION << 1)
-#define ONIG_OPTION_MAXBIT ONIG_OPTION_CHECK_VALIDITY_OF_STRING /* limit */
+#define ONIG_OPTION_NOTBOL (ONIG_OPTION_CAPTURE_GROUP << 1)
+#define ONIG_OPTION_NOTEOL (ONIG_OPTION_NOTBOL << 1)
+#define ONIG_OPTION_POSIX_REGION (ONIG_OPTION_NOTEOL << 1)
+#define ONIG_OPTION_CHECK_VALIDITY_OF_STRING (ONIG_OPTION_POSIX_REGION << 1)
+/* #define ONIG_OPTION_CRLF_AS_LINE_SEPARATOR (ONIG_OPTION_CHECK_VALIDITY_OF_STRING << 1) */
+/* options (compile time) */
+#define ONIG_OPTION_WORD_IS_ASCII (ONIG_OPTION_CHECK_VALIDITY_OF_STRING << 4)
+#define ONIG_OPTION_DIGIT_IS_ASCII (ONIG_OPTION_WORD_IS_ASCII << 1)
+#define ONIG_OPTION_SPACE_IS_ASCII (ONIG_OPTION_DIGIT_IS_ASCII << 1)
+#define ONIG_OPTION_POSIX_IS_ASCII (ONIG_OPTION_SPACE_IS_ASCII << 1)
+
+#define ONIG_OPTION_MAXBIT ONIG_OPTION_POSIX_IS_ASCII /* limit */
#define ONIG_OPTION_ON(options,regopt) ((options) |= (regopt))
#define ONIG_OPTION_OFF(options,regopt) ((options) &= ~(regopt))
@@ -501,6 +509,7 @@ ONIG_EXTERN OnigSyntaxType* OnigDefaultSyntax;
#define ONIG_SYN_OP2_ESC_CAPITAL_R_GENERAL_NEWLINE (1U<<23) /* \R \r\n else [\x0a-\x0d] */
#define ONIG_SYN_OP2_ESC_CAPITAL_N_O_SUPER_DOT (1U<<24) /* \N (?-m:.), \O (?m:.) */
#define ONIG_SYN_OP2_QMARK_TILDE_ABSENT_GROUP (1U<<25) /* (?~...) */
+#define ONIG_SYN_OP2_ESC_X_Y_GRAPHEME_CLUSTER (1U<<26) /* \X \y \Y */
/* syntax (behavior) */
#define ONIG_SYN_CONTEXT_INDEP_ANCHORS (1U<<31) /* not implemented */
diff --git a/src/regcomp.c b/src/regcomp.c
index 47023cb..ab5701c 100644
--- a/src/regcomp.c
+++ b/src/regcomp.c
@@ -277,7 +277,7 @@ unset_addr_list_add(UnsetAddrList* list, int offset, struct _Node* node)
static int
add_opcode(regex_t* reg, int opcode)
{
- BBUF_ADD1(reg, opcode);
+ BB_ADD1(reg, opcode);
return 0;
}
@@ -287,7 +287,7 @@ add_state_check_num(regex_t* reg, int num)
{
StateCheckNumType n = (StateCheckNumType )num;
- BBUF_ADD(reg, &n, SIZE_STATE_CHECK_NUM);
+ BB_ADD(reg, &n, SIZE_STATE_CHECK_NUM);
return 0;
}
#endif
@@ -297,7 +297,7 @@ add_rel_addr(regex_t* reg, int addr)
{
RelAddrType ra = (RelAddrType )addr;
- BBUF_ADD(reg, &ra, SIZE_RELADDR);
+ BB_ADD(reg, &ra, SIZE_RELADDR);
return 0;
}
@@ -306,7 +306,7 @@ add_abs_addr(regex_t* reg, int addr)
{
AbsAddrType ra = (AbsAddrType )addr;
- BBUF_ADD(reg, &ra, SIZE_ABSADDR);
+ BB_ADD(reg, &ra, SIZE_ABSADDR);
return 0;
}
@@ -315,7 +315,7 @@ add_length(regex_t* reg, int len)
{
LengthType l = (LengthType )len;
- BBUF_ADD(reg, &l, SIZE_LENGTH);
+ BB_ADD(reg, &l, SIZE_LENGTH);
return 0;
}
@@ -324,7 +324,7 @@ add_mem_num(regex_t* reg, int num)
{
MemNumType n = (MemNumType )num;
- BBUF_ADD(reg, &n, SIZE_MEMNUM);
+ BB_ADD(reg, &n, SIZE_MEMNUM);
return 0;
}
@@ -334,7 +334,7 @@ add_pointer(regex_t* reg, void* addr)
{
PointerType ptr = (PointerType )addr;
- BBUF_ADD(reg, &ptr, SIZE_POINTER);
+ BB_ADD(reg, &ptr, SIZE_POINTER);
return 0;
}
#endif
@@ -342,7 +342,7 @@ add_pointer(regex_t* reg, void* addr)
static int
add_option(regex_t* reg, OnigOptionType option)
{
- BBUF_ADD(reg, &option, SIZE_OPTION);
+ BB_ADD(reg, &option, SIZE_OPTION);
return 0;
}
@@ -351,7 +351,7 @@ add_save_type(regex_t* reg, enum SaveType type)
{
SaveType t = (SaveType )type;
- BBUF_ADD(reg, &t, SIZE_SAVE_TYPE);
+ BB_ADD(reg, &t, SIZE_SAVE_TYPE);
return 0;
}
@@ -360,7 +360,14 @@ add_update_var_type(regex_t* reg, enum UpdateVarType type)
{
UpdateVarType t = (UpdateVarType )type;
- BBUF_ADD(reg, &t, SIZE_UPDATE_VAR_TYPE);
+ BB_ADD(reg, &t, SIZE_UPDATE_VAR_TYPE);
+ return 0;
+}
+
+static int
+add_mode(regex_t* reg, ModeType mode)
+{
+ BB_ADD(reg, &mode, SIZE_MODE);
return 0;
}
@@ -378,14 +385,14 @@ add_opcode_rel_addr(regex_t* reg, int opcode, int addr)
static int
add_bytes(regex_t* reg, UChar* bytes, int len)
{
- BBUF_ADD(reg, bytes, len);
+ BB_ADD(reg, bytes, len);
return 0;
}
static int
add_bitset(regex_t* reg, BitSetRef bs)
{
- BBUF_ADD(reg, bs, SIZE_BITSET);
+ BB_ADD(reg, bs, SIZE_BITSET);
return 0;
}
@@ -492,7 +499,7 @@ compile_call(CallNode* node, regex_t* reg, ScanEnv* env)
r = add_opcode(reg, OP_CALL);
if (r != 0) return r;
- r = unset_addr_list_add(env->unset_addr_list, BBUF_GET_OFFSET_POS(reg),
+ r = unset_addr_list_add(env->unset_addr_list, BB_GET_OFFSET_POS(reg),
NODE_CALL_BODY(node));
if (r != 0) return r;
r = add_abs_addr(reg, 0 /*dummy addr.*/);
@@ -655,7 +662,7 @@ add_multi_byte_cclass(BBuf* mbuf, regex_t* reg)
return add_bytes(reg, mbuf->p, mbuf->used);
#else
int r, pad_size;
- UChar* p = BBUF_GET_ADD_ADDRESS(reg) + SIZE_LENGTH;
+ UChar* p = BB_GET_ADD_ADDRESS(reg) + SIZE_LENGTH;
GET_ALIGNMENT_PAD_SIZE(p, pad_size);
add_length(reg, mbuf->used + (WORD_ALIGNMENT_SIZE - 1));
@@ -1400,7 +1407,7 @@ compile_enclosure_memory_node(EnclosureNode* node, regex_t* reg, ScanEnv* env)
if (node->m.regnum == 0 && NODE_IS_CALLED(node)) {
r = add_opcode(reg, OP_CALL);
if (r != 0) return r;
- node->m.called_addr = BBUF_GET_OFFSET_POS(reg) + SIZE_ABSADDR + SIZE_OP_JUMP;
+ node->m.called_addr = BB_GET_OFFSET_POS(reg) + SIZE_ABSADDR + SIZE_OP_JUMP;
NODE_STATUS_ADD(node, NST_ADDR_FIXED);
r = add_abs_addr(reg, (int )node->m.called_addr);
if (r != 0) return r;
@@ -1418,7 +1425,7 @@ compile_enclosure_memory_node(EnclosureNode* node, regex_t* reg, ScanEnv* env)
if (NODE_IS_CALLED(node)) {
r = add_opcode(reg, OP_CALL);
if (r != 0) return r;
- node->m.called_addr = BBUF_GET_OFFSET_POS(reg) + SIZE_ABSADDR + SIZE_OP_JUMP;
+ node->m.called_addr = BB_GET_OFFSET_POS(reg) + SIZE_ABSADDR + SIZE_OP_JUMP;
NODE_STATUS_ADD(node, NST_ADDR_FIXED);
r = add_abs_addr(reg, (int )node->m.called_addr);
if (r != 0) return r;
@@ -1588,6 +1595,20 @@ compile_length_anchor_node(AnchorNode* node, regex_t* reg)
len = SIZE_OP_PUSH_LOOK_BEHIND_NOT + tlen + SIZE_OP_FAIL_LOOK_BEHIND_NOT;
break;
+ case ANCHOR_WORD_BOUNDARY:
+ case ANCHOR_NO_WORD_BOUNDARY:
+#ifdef USE_WORD_BEGIN_END
+ case ANCHOR_WORD_BEGIN:
+ case ANCHOR_WORD_END:
+#endif
+ len = SIZE_OP_WORD_BOUNDARY;
+ break;
+
+ case ANCHOR_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY:
+ case ANCHOR_NO_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY:
+ len = SIZE_OPCODE;
+ break;
+
default:
len = SIZE_OPCODE;
break;
@@ -1600,6 +1621,7 @@ static int
compile_anchor_node(AnchorNode* node, regex_t* reg, ScanEnv* env)
{
int r, len;
+ enum OpCode op;
switch (node->type) {
case ANCHOR_BEGIN_BUF: r = add_opcode(reg, OP_BEGIN_BUF); break;
@@ -1609,13 +1631,34 @@ compile_anchor_node(AnchorNode* node, regex_t* reg, ScanEnv* env)
case ANCHOR_SEMI_END_BUF: r = add_opcode(reg, OP_SEMI_END_BUF); break;
case ANCHOR_BEGIN_POSITION: r = add_opcode(reg, OP_BEGIN_POSITION); break;
- case ANCHOR_WORD_BOUND: r = add_opcode(reg, OP_WORD_BOUND); break;
- case ANCHOR_NOT_WORD_BOUND: r = add_opcode(reg, OP_NOT_WORD_BOUND); break;
+ case ANCHOR_WORD_BOUNDARY:
+ op = OP_WORD_BOUNDARY;
+ word:
+ r = add_opcode(reg, op);
+ if (r != 0) return r;
+ r = add_mode(reg, (ModeType )node->ascii_mode);
+ break;
+
+ case ANCHOR_NO_WORD_BOUNDARY:
+ op = OP_NO_WORD_BOUNDARY; goto word;
+ break;
#ifdef USE_WORD_BEGIN_END
- case ANCHOR_WORD_BEGIN: r = add_opcode(reg, OP_WORD_BEGIN); break;
- case ANCHOR_WORD_END: r = add_opcode(reg, OP_WORD_END); break;
+ case ANCHOR_WORD_BEGIN:
+ op = OP_WORD_BEGIN; goto word;
+ break;
+ case ANCHOR_WORD_END:
+ op = OP_WORD_END; goto word;
+ break;
#endif
+ case ANCHOR_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY:
+ r = add_opcode(reg, OP_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY);
+ break;
+
+ case ANCHOR_NO_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY:
+ r = add_opcode(reg, OP_NO_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY);
+ break;
+
case ANCHOR_PREC_READ:
r = add_opcode(reg, OP_PREC_READ_START);
if (r != 0) return r;
@@ -1914,9 +1957,12 @@ compile_tree(Node* node, regex_t* reg, ScanEnv* env)
break;
case ONIGENC_CTYPE_WORD:
- if (CTYPE_(node)->not != 0) op = OP_NOT_WORD;
- else op = OP_WORD;
-
+ if (CTYPE_(node)->ascii_mode == 0) {
+ op = CTYPE_(node)->not != 0 ? OP_NO_WORD : OP_WORD;
+ }
+ else {
+ op = CTYPE_(node)->not != 0 ? OP_NO_WORD_ASCII : OP_WORD_ASCII;
+ }
r = add_opcode(reg, op);
break;
@@ -2038,8 +2084,6 @@ compile_tree(Node* node, regex_t* reg, ScanEnv* env)
return r;
}
-#ifdef USE_NAMED_GROUP
-
static int
noname_disable_map(Node** plink, GroupNumRemap* map, int* counter)
{
@@ -2283,7 +2327,6 @@ disable_noname_group_capture(Node** root, regex_t* reg, ScanEnv* env)
return onig_renumber_name_table(reg, map);
}
-#endif /* USE_NAMED_GROUP */
#ifdef USE_CALL
static int
@@ -2301,7 +2344,7 @@ unset_addr_list_fix(UnsetAddrList* uslist, regex_t* reg)
addr = en->m.called_addr;
offset = uslist->us[i].offset;
- BBUF_WRITE(reg, offset, &addr, SIZE_ABSADDR);
+ BB_WRITE(reg, offset, &addr, SIZE_ABSADDR);
}
return 0;
}
@@ -2394,9 +2437,6 @@ get_char_length_tree1(Node* node, regex_t* reg, int* len, int level)
#endif
case NODE_CTYPE:
- *len = 1;
- break;
-
case NODE_CCLASS:
*len = 1;
break;
@@ -2496,7 +2536,8 @@ is_exclusive(Node* x, Node* y, regex_t* reg)
switch (ytype) {
case NODE_CTYPE:
if (CTYPE_(y)->ctype == CTYPE_(x)->ctype &&
- CTYPE_(y)->not != CTYPE_(x)->not)
+ CTYPE_(y)->not != CTYPE_(x)->not &&
+ CTYPE_(y)->ascii_mode == CTYPE_(x)->ascii_mode)
return 1;
else
return 0;
@@ -2523,6 +2564,7 @@ is_exclusive(Node* x, Node* y, regex_t* reg)
case NODE_CCLASS:
{
+ int range;
CClassNode* xc = CCLASS_(x);
switch (ytype) {
case NODE_CTYPE:
@@ -2534,9 +2576,10 @@ is_exclusive(Node* x, Node* y, regex_t* reg)
case ONIGENC_CTYPE_WORD:
if (CTYPE_(y)->not == 0) {
if (IS_NULL(xc->mbuf) && !IS_NCCLASS_NOT(xc)) {
- for (i = 0; i < SINGLE_BYTE_SIZE; i++) {
+ range = CTYPE_(y)->ascii_mode != 0 ? 128 : SINGLE_BYTE_SIZE;
+ for (i = 0; i < range; i++) {
if (BITSET_AT(xc->bs, i)) {
- if (IS_CODE_SB_WORD(reg->enc, i)) return 0;
+ if (ONIGENC_IS_CODE_WORD(reg->enc, i)) return 0;
}
}
return 1;
@@ -2545,18 +2588,18 @@ is_exclusive(Node* x, Node* y, regex_t* reg)
}
else {
if (IS_NOT_NULL(xc->mbuf)) return 0;
- for (i = 0; i < SINGLE_BYTE_SIZE; i++) {
- if (! IS_CODE_SB_WORD(reg->enc, i)) {
- if (!IS_NCCLASS_NOT(xc)) {
- if (BITSET_AT(xc->bs, i))
- return 0;
- }
- else {
- if (! BITSET_AT(xc->bs, i))
- return 0;
- }
+ if (IS_NCCLASS_NOT(xc)) return 0;
+
+ range = CTYPE_(y)->ascii_mode != 0 ? 128 : SINGLE_BYTE_SIZE;
+ for (i = 0; i < range; i++) {
+ if (! ONIGENC_IS_CODE_WORD(reg->enc, i)) {
+ if (BITSET_AT(xc->bs, i))
+ return 0;
}
}
+ for (i = range; i < SINGLE_BYTE_SIZE; i++) {
+ if (BITSET_AT(xc->bs, i)) return 0;
+ }
return 1;
}
break;
@@ -2612,10 +2655,18 @@ is_exclusive(Node* x, Node* y, regex_t* reg)
break;
case ONIGENC_CTYPE_WORD:
- if (ONIGENC_IS_MBC_WORD(reg->enc, xs->s, xs->end))
- return CTYPE_(y)->not;
- else
- return !(CTYPE_(y)->not);
+ if (CTYPE_(y)->ascii_mode == 0) {
+ if (ONIGENC_IS_MBC_WORD(reg->enc, xs->s, xs->end))
+ return CTYPE_(y)->not;
+ else
+ return !(CTYPE_(y)->not);
+ }
+ else {
+ if (ONIGENC_IS_MBC_WORD_ASCII(reg->enc, xs->s, xs->end))
+ return CTYPE_(y)->not;
+ else
+ return !(CTYPE_(y)->not);
+ }
break;
default:
break;
@@ -2780,7 +2831,7 @@ check_type_tree(Node* node, int type_mask, int enclosure_mask, int anchor_mask)
case NODE_ENCLOSURE:
{
EnclosureNode* en = ENCLOSURE_(node);
- if ((en->type & enclosure_mask) == 0)
+ if (((1<<en->type) & enclosure_mask) == 0)
return 1;
r = check_type_tree(NODE_BODY(node), type_mask, enclosure_mask, anchor_mask);
@@ -3512,7 +3563,7 @@ divide_look_behind_alternatives(Node* node)
np = node;
while (IS_NOT_NULL(np = NODE_CDR(np))) {
- insert_node = onig_node_new_anchor(anc_type);
+ insert_node = onig_node_new_anchor(anc_type, an->ascii_mode);
CHECK_NULL_RETURN_MEMERR(insert_node);
NODE_BODY(insert_node) = NODE_CAR(np);
NODE_CAR(np) = insert_node;
@@ -4150,22 +4201,19 @@ setup_call_node_call(CallNode* cn, ScanEnv* env, int state)
if (cn->by_number != 0) {
int gnum = cn->group_num;
-#ifdef USE_NAMED_GROUP
if (env->num_named > 0 &&
IS_SYNTAX_BV(env->syntax, ONIG_SYN_CAPTURE_ONLY_NAMED_GROUP) &&
!ONIG_IS_OPTION_ON(env->options, ONIG_OPTION_CAPTURE_GROUP)) {
return ONIGERR_NUMBERED_BACKREF_OR_CALL_NOT_ALLOWED;
}
-#endif
+
if (gnum > env->num_mem) {
onig_scan_env_set_error_string(env, ONIGERR_UNDEFINED_GROUP_REFERENCE,
cn->name, cn->name_end);
return ONIGERR_UNDEFINED_GROUP_REFERENCE;
}
-#ifdef USE_NAMED_GROUP
set_call_attr:
-#endif
NODE_CALL_BODY(cn) = mem_env[cn->group_num].node;
if (IS_NULL(NODE_CALL_BODY(cn))) {
onig_scan_env_set_error_string(env, ONIGERR_UNDEFINED_NAME_REFERENCE,
@@ -4173,7 +4221,6 @@ setup_call_node_call(CallNode* cn, ScanEnv* env, int state)
return ONIGERR_UNDEFINED_NAME_REFERENCE;
}
}
-#ifdef USE_NAMED_GROUP
else {
int *refs;
@@ -4193,7 +4240,6 @@ setup_call_node_call(CallNode* cn, ScanEnv* env, int state)
goto set_call_attr;
}
}
-#endif
return 0;
}
@@ -4579,18 +4625,22 @@ setup_anchor(Node* node, regex_t* reg, int state, ScanEnv* env)
| BIT_NODE_CTYPE | BIT_NODE_ANCHOR | BIT_NODE_ENCLOSURE | BIT_NODE_QUANT \
| BIT_NODE_CALL )
-#define ALLOWED_ENCLOSURE_IN_LB ( ENCLOSURE_MEMORY | ENCLOSURE_OPTION )
-#define ALLOWED_ENCLOSURE_IN_LB_NOT ENCLOSURE_OPTION
+#define ALLOWED_ENCLOSURE_IN_LB ( 1<<ENCLOSURE_MEMORY | 1<<ENCLOSURE_OPTION )
+#define ALLOWED_ENCLOSURE_IN_LB_NOT (1<<ENCLOSURE_OPTION)
#define ALLOWED_ANCHOR_IN_LB \
( ANCHOR_LOOK_BEHIND | ANCHOR_BEGIN_LINE | ANCHOR_END_LINE | ANCHOR_BEGIN_BUF \
- | ANCHOR_BEGIN_POSITION | ANCHOR_WORD_BOUND | ANCHOR_NOT_WORD_BOUND \
- | ANCHOR_WORD_BEGIN | ANCHOR_WORD_END )
+ | ANCHOR_BEGIN_POSITION | ANCHOR_WORD_BOUNDARY | ANCHOR_NO_WORD_BOUNDARY \
+ | ANCHOR_WORD_BEGIN | ANCHOR_WORD_END \
+ | ANCHOR_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY \
+ | ANCHOR_NO_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY )
#define ALLOWED_ANCHOR_IN_LB_NOT \
( ANCHOR_LOOK_BEHIND | ANCHOR_LOOK_BEHIND_NOT | ANCHOR_BEGIN_LINE \
- | ANCHOR_END_LINE | ANCHOR_BEGIN_BUF | ANCHOR_BEGIN_POSITION | ANCHOR_WORD_BOUND \
- | ANCHOR_NOT_WORD_BOUND | ANCHOR_WORD_BEGIN | ANCHOR_WORD_END )
+ | ANCHOR_END_LINE | ANCHOR_BEGIN_BUF | ANCHOR_BEGIN_POSITION | ANCHOR_WORD_BOUNDARY \
+ | ANCHOR_NO_WORD_BOUNDARY | ANCHOR_WORD_BEGIN | ANCHOR_WORD_END \
+ | ANCHOR_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY \
+ | ANCHOR_NO_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY )
int r;
AnchorNode* an = ANCHOR_(node);
@@ -5603,6 +5653,7 @@ optimize_node_left(Node* node, NodeOptInfo* opt, OptEnv* env)
case NODE_CTYPE:
{
int i, min, max;
+ int range;
max = ONIGENC_MBC_MAXLEN_DIST(env->enc);
@@ -5614,15 +5665,19 @@ optimize_node_left(Node* node, NodeOptInfo* opt, OptEnv* env)
break;
case ONIGENC_CTYPE_WORD:
+ range = CTYPE_(node)->ascii_mode != 0 ? 128 : SINGLE_BYTE_SIZE;
if (CTYPE_(node)->not != 0) {
- for (i = 0; i < SINGLE_BYTE_SIZE; i++) {
+ for (i = 0; i < range; i++) {
if (! ONIGENC_IS_CODE_WORD(env->enc, i)) {
add_char_opt_map_info(&opt->map, (UChar )i, env->enc);
}
}
+ for (i = range; i < SINGLE_BYTE_SIZE; i++) {
+ add_char_opt_map_info(&opt->map, (UChar )i, env->enc);
+ }
}
else {
- for (i = 0; i < SINGLE_BYTE_SIZE; i++) {
+ for (i = 0; i < range; i++) {
if (ONIGENC_IS_CODE_WORD(env->enc, i)) {
add_char_opt_map_info(&opt->map, (UChar )i, env->enc);
}
@@ -6171,9 +6226,7 @@ onig_free_body(regex_t* reg)
if (IS_NOT_NULL(reg->repeat_range)) xfree(reg->repeat_range);
if (IS_NOT_NULL(REG_EXTP(reg))) xfree(REG_EXTP(reg));
-#ifdef USE_NAMED_GROUP
onig_names_free(reg);
-#endif
}
}
@@ -6202,7 +6255,7 @@ onig_transfer(regex_t* to, regex_t* from)
#ifdef ONIG_DEBUG_COMPILE
static void print_compiled_byte_code_list P_((FILE* f, regex_t* reg));
#endif
-#ifdef ONIG_DEBUG_PARSE_TREE
+#ifdef ONIG_DEBUG_PARSE
static void print_tree P_((FILE* f, Node* node));
#endif
@@ -6229,7 +6282,7 @@ onig_compile(regex_t* reg, const UChar* pattern, const UChar* pattern_end,
if (reg->alloc == 0) {
init_size = (pattern_end - pattern) * 2;
if (init_size <= 0) init_size = COMPILE_INIT_SIZE;
- r = BBUF_INIT(reg, init_size);
+ r = BB_INIT(reg, init_size);
if (r != 0) goto end;
}
else
@@ -6247,7 +6300,6 @@ onig_compile(regex_t* reg, const UChar* pattern, const UChar* pattern_end,
r = onig_parse_tree(&root, pattern, pattern_end, reg, &scan_env);
if (r != 0) goto err;
-#ifdef USE_NAMED_GROUP
/* mixed use named group and no-named group */
if (scan_env.num_named > 0 &&
IS_SYNTAX_BV(scan_env.syntax, ONIG_SYN_CAPTURE_ONLY_NAMED_GROUP) &&
@@ -6259,7 +6311,6 @@ onig_compile(regex_t* reg, const UChar* pattern, const UChar* pattern_end,
if (r != 0) goto err;
}
-#endif
r = check_backrefs(root, &scan_env);
if (r != 0) goto err;
@@ -6287,7 +6338,7 @@ onig_compile(regex_t* reg, const UChar* pattern, const UChar* pattern_end,
r = setup_tree(root, reg, 0, &scan_env);
if (r != 0) goto err_unset;
-#ifdef ONIG_DEBUG_PARSE_TREE
+#ifdef ONIG_DEBUG_PARSE
print_tree(stderr, root);
#endif
@@ -6377,9 +6428,7 @@ onig_compile(regex_t* reg, const UChar* pattern, const UChar* pattern_end,
onig_node_free(root);
#ifdef ONIG_DEBUG_COMPILE
-#ifdef USE_NAMED_GROUP
onig_print_names(stderr, reg);
-#endif
print_compiled_byte_code_list(stderr, reg);
#endif
@@ -6642,6 +6691,7 @@ onig_is_code_in_cc(OnigEncoding enc, OnigCodePoint code, CClassNode* cc)
#define ARG_MEMNUM 4
#define ARG_OPTION 5
#define ARG_STATE_CHECK 6
+#define ARG_MODE 7
OnigOpInfoType OnigOpInfo[] = {
{ OP_FINISH, "finish", ARG_NON },
@@ -6666,7 +6716,9 @@ OnigOpInfoType OnigOpInfo[] = {
{ OP_CCLASS_NOT, "cclass-not", ARG_SPECIAL },
{ OP_CCLASS_MB_NOT, "cclass-mb-not", ARG_SPECIAL },
{ OP_CCLASS_MIX_NOT, "cclass-mix-not", ARG_SPECIAL },
+#ifdef USE_OP_CCLASS_NODE
{ OP_CCLASS_NODE, "cclass-node", ARG_SPECIAL },
+#endif
{ OP_ANYCHAR, "anychar", ARG_NON },
{ OP_ANYCHAR_ML, "anychar-ml", ARG_NON },
{ OP_ANYCHAR_STAR, "anychar*", ARG_NON },
@@ -6674,11 +6726,13 @@ OnigOpInfoType OnigOpInfo[] = {
{ OP_ANYCHAR_STAR_PEEK_NEXT, "anychar*-peek-next", ARG_SPECIAL },
{ OP_ANYCHAR_ML_STAR_PEEK_NEXT, "anychar-ml*-peek-next", ARG_SPECIAL },
{ OP_WORD, "word", ARG_NON },
- { OP_NOT_WORD, "not-word", ARG_NON },
- { OP_WORD_BOUND, "word-bound", ARG_NON },
- { OP_NOT_WORD_BOUND, "not-word-bound", ARG_NON },
- { OP_WORD_BEGIN, "word-begin", ARG_NON },
- { OP_WORD_END, "word-end", ARG_NON },
+ { OP_WORD_ASCII, "word-ascii", ARG_NON },
+ { OP_NO_WORD, "not-word", ARG_NON },
+ { OP_NO_WORD_ASCII, "not-word-ascii", ARG_NON },
+ { OP_WORD_BOUNDARY, "word-boundary", ARG_MODE },
+ { OP_NO_WORD_BOUNDARY, "not-word-boundary", ARG_MODE },
+ { OP_WORD_BEGIN, "word-begin", ARG_MODE },
+ { OP_WORD_END, "word-end", ARG_MODE },
{ OP_BEGIN_BUF, "begin-buf", ARG_NON },
{ OP_END_BUF, "end-buf", ARG_NON },
{ OP_BEGIN_LINE, "begin-line", ARG_NON },
@@ -6800,6 +6854,7 @@ onig_print_compiled_byte_code(FILE* f, UChar* bp, UChar** nextp, UChar* start,
StateCheckNumType scn;
OnigCodePoint code;
OnigOptionType option;
+ ModeType mode;
UChar *q;
fprintf(f, "%s", op2name(*bp));
@@ -6840,6 +6895,12 @@ onig_print_compiled_byte_code(FILE* f, UChar* bp, UChar** nextp, UChar* start,
bp += SIZE_STATE_CHECK_NUM;
fprintf(f, ":%d", scn);
break;
+
+ case ARG_MODE:
+ mode = *((ModeType* )bp);
+ bp += SIZE_MODE;
+ fprintf(f, ":%d", mode);
+ break;
}
}
else {
@@ -6939,6 +7000,7 @@ onig_print_compiled_byte_code(FILE* f, UChar* bp, UChar** nextp, UChar* start,
fprintf(f, ":%d:%d:%d", n, (int )code, len);
break;
+#ifdef USE_OP_CCLASS_NODE
case OP_CCLASS_NODE:
{
CClassNode *cc;
@@ -6948,6 +7010,7 @@ onig_print_compiled_byte_code(FILE* f, UChar* bp, UChar** nextp, UChar* start,
fprintf(f, ":%p:%d", cc, n);
}
break;
+#endif
case OP_BACKREF_N_IC:
mem = *((MemNumType* )bp);
@@ -7082,7 +7145,7 @@ print_compiled_byte_code_list(FILE* f, regex_t* reg)
}
#endif
-#ifdef ONIG_DEBUG_PARSE_TREE
+#ifdef ONIG_DEBUG_PARSE
static void
Indent(FILE* f, int indent)
@@ -7157,9 +7220,13 @@ print_indent_tree(FILE* f, Node* node, int indent)
case ONIGENC_CTYPE_WORD:
if (CTYPE_(node)->not != 0)
- fputs("not word", f);
+ fputs("not word", f);
else
- fputs("word", f);
+ fputs("word", f);
+
+ if (CTYPE_(node)->ascii_mode != 0)
+ fputs(" (ascii)", f);
+
break;
default:
@@ -7171,19 +7238,23 @@ print_indent_tree(FILE* f, Node* node, int indent)
case NODE_ANCHOR:
fprintf(f, "<anchor:%p> ", node);
switch (ANCHOR_(node)->type) {
- case ANCHOR_BEGIN_BUF: fputs("begin buf", f); break;
- case ANCHOR_END_BUF: fputs("end buf", f); break;
- case ANCHOR_BEGIN_LINE: fputs("begin line", f); break;
- case ANCHOR_END_LINE: fputs("end line", f); break;
- case ANCHOR_SEMI_END_BUF: fputs("semi end buf", f); break;
- case ANCHOR_BEGIN_POSITION: fputs("begin position", f); break;
-
- case ANCHOR_WORD_BOUND: fputs("word bound", f); break;
- case ANCHOR_NOT_WORD_BOUND: fputs("not word bound", f); break;
+ case ANCHOR_BEGIN_BUF: fputs("begin buf", f); break;
+ case ANCHOR_END_BUF: fputs("end buf", f); break;
+ case ANCHOR_BEGIN_LINE: fputs("begin line", f); break;
+ case ANCHOR_END_LINE: fputs("end line", f); break;
+ case ANCHOR_SEMI_END_BUF: fputs("semi end buf", f); break;
+ case ANCHOR_BEGIN_POSITION: fputs("begin position", f); break;
+
+ case ANCHOR_WORD_BOUNDARY: fputs("word boundary", f); break;
+ case ANCHOR_NO_WORD_BOUNDARY: fputs("not word boundary", f); break;
#ifdef USE_WORD_BEGIN_END
- case ANCHOR_WORD_BEGIN: fputs("word begin", f); break;
- case ANCHOR_WORD_END: fputs("word end", f); break;
+ case ANCHOR_WORD_BEGIN: fputs("word begin", f); break;
+ case ANCHOR_WORD_END: fputs("word end", f); break;
#endif
+ case ANCHOR_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY:
+ fputs("extended-grapheme-cluster boundary", f); break;
+ case ANCHOR_NO_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY:
+ fputs("no-extended-grapheme-cluster boundary", f); break;
case ANCHOR_PREC_READ:
fprintf(f, "prec read\n");
print_indent_tree(f, NODE_BODY(node), indent + add);
diff --git a/src/regenc.c b/src/regenc.c
index 554a622..97b5052 100644
--- a/src/regenc.c
+++ b/src/regenc.c
@@ -841,6 +841,16 @@ onigenc_minimum_property_name_to_ctype(OnigEncoding enc, UChar* p, UChar* end)
}
extern int
+onigenc_is_mbc_word_ascii(OnigEncoding enc, UChar* s, const UChar* end)
+{
+ OnigCodePoint code = ONIGENC_MBC_TO_CODE(enc, s, end);
+
+ if (code > 127) return 0;
+
+ return ONIGENC_IS_ASCII_CODE_WORD(code);
+}
+
+extern int
onigenc_mb2_is_code_ctype(OnigEncoding enc, OnigCodePoint code,
unsigned int ctype)
{
diff --git a/src/regenc.h b/src/regenc.h
index abc26be..cda3bcd 100644
--- a/src/regenc.h
+++ b/src/regenc.h
@@ -71,6 +71,8 @@ typedef struct {
#define ONIG_CHECK_NULL_RETURN(p) if (ONIG_IS_NULL(p)) return NULL
#define ONIG_CHECK_NULL_RETURN_VAL(p,val) if (ONIG_IS_NULL(p)) return (val)
+#define MAX_CODE_POINT (~((OnigCodePoint )0))
+
#define enclen(enc,p) ONIGENC_MBC_ENC_LEN(enc,p)
/* character types bit flag */
@@ -109,6 +111,7 @@ struct PropertyNameCtype {
/* #define USE_CRNL_AS_LINE_TERMINATOR */
#define USE_UNICODE_PROPERTIES
+#define USE_UNICODE_EXTENDED_GRAPHEME_CLUSTER
/* #define USE_UNICODE_CASE_FOLD_TURKISH_AZERI */
/* #define USE_UNICODE_ALL_LINE_TERMINATORS */ /* see Unicode.org UTS #18 */
@@ -143,6 +146,7 @@ ONIG_EXTERN int onigenc_mb2_code_to_mbclen P_((OnigCodePoint code));
ONIG_EXTERN int onigenc_mb2_code_to_mbc P_((OnigEncoding enc, OnigCodePoint code, UChar *buf));
ONIG_EXTERN int onigenc_minimum_property_name_to_ctype P_((OnigEncoding enc, UChar* p, UChar* end));
ONIG_EXTERN int onigenc_unicode_property_name_to_ctype P_((OnigEncoding enc, UChar* p, UChar* end));
+ONIG_EXTERN int onigenc_is_mbc_word_ascii P_((OnigEncoding enc, UChar* s, const UChar* end));
ONIG_EXTERN int onigenc_mb2_is_code_ctype P_((OnigEncoding enc, OnigCodePoint code, unsigned int ctype));
ONIG_EXTERN int onigenc_mb4_code_to_mbclen P_((OnigCodePoint code));
ONIG_EXTERN int onigenc_mb4_code_to_mbc P_((OnigEncoding enc, OnigCodePoint code, UChar *buf));
@@ -158,6 +162,7 @@ ONIG_EXTERN int onigenc_unicode_ctype_code_range P_((OnigCtype ctype, const Onig
ONIG_EXTERN int onigenc_unicode_get_case_fold_codes_by_str P_((OnigEncoding enc, OnigCaseFoldType flag, const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[]));
ONIG_EXTERN int onigenc_unicode_mbc_case_fold P_((OnigEncoding enc, OnigCaseFoldType flag, const UChar** pp, const UChar* end, UChar* fold));
ONIG_EXTERN int onigenc_unicode_apply_all_case_fold P_((OnigCaseFoldType flag, OnigApplyAllCaseFoldFunc f, void* arg));
+ONIG_EXTERN int onigenc_egcb_is_break_position P_((OnigEncoding enc, UChar* p, UChar* prev, const UChar* start, const UChar* end));
#define UTF16_IS_SURROGATE_FIRST(c) (((c) & 0xfc) == 0xd8)
@@ -194,8 +199,8 @@ extern OnigCodePoint OnigUnicodeFolds3[];
struct ByUnfoldKey {
OnigCodePoint code;
- int index;
- int fold_len;
+ short int index;
+ short int fold_len;
};
extern const struct ByUnfoldKey* unicode_unfold_key(OnigCodePoint code);
@@ -235,6 +240,8 @@ ONIG_EXTERN const unsigned short OnigEncAsciiCtypeTable[];
#define ONIGENC_ASCII_CODE_TO_UPPER_CASE(c) OnigEncAsciiToUpperCaseTable[c]
#define ONIGENC_IS_ASCII_CODE_CTYPE(code,ctype) \
((OnigEncAsciiCtypeTable[code] & CTYPE_TO_BIT(ctype)) != 0)
+#define ONIGENC_IS_ASCII_CODE_WORD(code) \
+ ((OnigEncAsciiCtypeTable[code] & CTYPE_TO_BIT(ONIGENC_CTYPE_WORD)) != 0)
#define ONIGENC_IS_ASCII_CODE_CASE_AMBIG(code) \
(ONIGENC_IS_ASCII_CODE_CTYPE(code, ONIGENC_CTYPE_UPPER) ||\
ONIGENC_IS_ASCII_CODE_CTYPE(code, ONIGENC_CTYPE_LOWER))
diff --git a/src/regerror.c b/src/regerror.c
index a430e60..c0d2346 100644
--- a/src/regerror.c
+++ b/src/regerror.c
@@ -135,11 +135,7 @@ onig_error_code_to_format(int code)
case ONIGERR_TOO_BIG_BACKREF_NUMBER:
p = "too big backref number"; break;
case ONIGERR_INVALID_BACKREF:
-#ifdef USE_NAMED_GROUP
p = "invalid backref number/name"; break;
-#else
- p = "invalid backref number"; break;
-#endif
case ONIGERR_NUMBERED_BACKREF_OR_CALL_NOT_ALLOWED:
p = "numbered backref/call is not allowed. (use name)"; break;
case ONIGERR_TOO_MANY_CAPTURES:
@@ -155,11 +151,7 @@ onig_error_code_to_format(int code)
case ONIGERR_INVALID_GROUP_NAME:
p = "invalid group name <%n>"; break;
case ONIGERR_INVALID_CHAR_IN_GROUP_NAME:
-#ifdef USE_NAMED_GROUP
p = "invalid char in group name <%n>"; break;
-#else
- p = "invalid char in group number <%n>"; break;
-#endif
case ONIGERR_UNDEFINED_NAME_REFERENCE:
p = "undefined name <%n> reference"; break;
case ONIGERR_UNDEFINED_GROUP_REFERENCE:
diff --git a/src/regexec.c b/src/regexec.c
index e7dfb96..9dbef70 100644
--- a/src/regexec.c
+++ b/src/regexec.c
@@ -31,6 +31,9 @@
#define USE_MATCH_RANGE_MUST_BE_INSIDE_OF_SPECIFIED_RANGE
+#define IS_MBC_WORD_ASCII_MODE(enc,s,end,mode) \
+ ((mode) == 0 ? ONIGENC_IS_MBC_WORD(enc,s,end) : ONIGENC_IS_MBC_WORD_ASCII(enc,s,end))
+
#ifdef USE_CRNL_AS_LINE_TERMINATOR
#define ONIGENC_IS_MBC_CRNL(enc,p,end) \
(ONIGENC_MBC_TO_CODE(enc,p,end) == 13 && \
@@ -2002,6 +2005,7 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
MOP_OUT;
break;
+#ifdef USE_OP_CCLASS_NODE
case OP_CCLASS_NODE: MOP_IN(OP_CCLASS_NODE);
{
OnigCodePoint code;
@@ -2020,6 +2024,7 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
}
MOP_OUT;
break;
+#endif
case OP_ANYCHAR: MOP_IN(OP_ANYCHAR);
DATA_ENSURE(1);
@@ -2152,7 +2157,16 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
MOP_OUT;
break;
- case OP_NOT_WORD: MOP_IN(OP_NOT_WORD);
+ case OP_WORD_ASCII: MOP_IN(OP_WORD_ASCII);
+ DATA_ENSURE(1);
+ if (! ONIGENC_IS_MBC_WORD_ASCII(encode, s, end))
+ goto fail;
+
+ s += enclen(encode, s);
+ MOP_OUT;
+ break;
+
+ case OP_NO_WORD: MOP_IN(OP_NO_WORD);
DATA_ENSURE(1);
if (ONIGENC_IS_MBC_WORD(encode, s, end))
goto fail;
@@ -2161,38 +2175,57 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
MOP_OUT;
break;
- case OP_WORD_BOUND: MOP_IN(OP_WORD_BOUND);
- if (ON_STR_BEGIN(s)) {
- DATA_ENSURE(1);
- if (! ONIGENC_IS_MBC_WORD(encode, s, end))
- goto fail;
- }
- else if (ON_STR_END(s)) {
- if (! ONIGENC_IS_MBC_WORD(encode, sprev, end))
- goto fail;
- }
- else {
- if (ONIGENC_IS_MBC_WORD(encode, s, end)
- == ONIGENC_IS_MBC_WORD(encode, sprev, end))
- goto fail;
+ case OP_NO_WORD_ASCII: MOP_IN(OP_NO_WORD_ASCII);
+ DATA_ENSURE(1);
+ if (ONIGENC_IS_MBC_WORD_ASCII(encode, s, end))
+ goto fail;
+
+ s += enclen(encode, s);
+ MOP_OUT;
+ break;
+
+ case OP_WORD_BOUNDARY: MOP_IN(OP_WORD_BOUNDARY);
+ {
+ ModeType mode;
+ GET_MODE_INC(mode, p); // ascii_mode
+
+ if (ON_STR_BEGIN(s)) {
+ DATA_ENSURE(1);
+ if (! IS_MBC_WORD_ASCII_MODE(encode, s, end, mode))
+ goto fail;
+ }
+ else if (ON_STR_END(s)) {
+ if (! IS_MBC_WORD_ASCII_MODE(encode, sprev, end, mode))
+ goto fail;
+ }
+ else {
+ if (IS_MBC_WORD_ASCII_MODE(encode, s, end, mode)
+ == IS_MBC_WORD_ASCII_MODE(encode, sprev, end, mode))
+ goto fail;
+ }
}
MOP_OUT;
continue;
break;
- case OP_NOT_WORD_BOUND: MOP_IN(OP_NOT_WORD_BOUND);
- if (ON_STR_BEGIN(s)) {
- if (DATA_ENSURE_CHECK1 && ONIGENC_IS_MBC_WORD(encode, s, end))
- goto fail;
- }
- else if (ON_STR_END(s)) {
- if (ONIGENC_IS_MBC_WORD(encode, sprev, end))
- goto fail;
- }
- else {
- if (ONIGENC_IS_MBC_WORD(encode, s, end)
- != ONIGENC_IS_MBC_WORD(encode, sprev, end))
- goto fail;
+ case OP_NO_WORD_BOUNDARY: MOP_IN(OP_NO_WORD_BOUNDARY);
+ {
+ ModeType mode;
+ GET_MODE_INC(mode, p); // ascii_mode
+
+ if (ON_STR_BEGIN(s)) {
+ if (DATA_ENSURE_CHECK1 && IS_MBC_WORD_ASCII_MODE(encode, s, end, mode))
+ goto fail;
+ }
+ else if (ON_STR_END(s)) {
+ if (IS_MBC_WORD_ASCII_MODE(encode, sprev, end, mode))
+ goto fail;
+ }
+ else {
+ if (IS_MBC_WORD_ASCII_MODE(encode, s, end, mode)
+ != IS_MBC_WORD_ASCII_MODE(encode, sprev, end, mode))
+ goto fail;
+ }
}
MOP_OUT;
continue;
@@ -2200,26 +2233,55 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
#ifdef USE_WORD_BEGIN_END
case OP_WORD_BEGIN: MOP_IN(OP_WORD_BEGIN);
- if (DATA_ENSURE_CHECK1 && ONIGENC_IS_MBC_WORD(encode, s, end)) {
- if (ON_STR_BEGIN(s) || !ONIGENC_IS_MBC_WORD(encode, sprev, end)) {
- MOP_OUT;
- continue;
+ {
+ ModeType mode;
+ GET_MODE_INC(mode, p); // ascii_mode
+
+ if (DATA_ENSURE_CHECK1 && IS_MBC_WORD_ASCII_MODE(encode, s, end, mode)) {
+ if (ON_STR_BEGIN(s) ||
+ ! IS_MBC_WORD_ASCII_MODE(encode, sprev, end, mode)) {
+ MOP_OUT;
+ continue;
+ }
}
}
goto fail;
break;
case OP_WORD_END: MOP_IN(OP_WORD_END);
- if (!ON_STR_BEGIN(s) && ONIGENC_IS_MBC_WORD(encode, sprev, end)) {
- if (ON_STR_END(s) || !ONIGENC_IS_MBC_WORD(encode, s, end)) {
- MOP_OUT;
- continue;
+ {
+ ModeType mode;
+ GET_MODE_INC(mode, p); // ascii_mode
+
+ if (!ON_STR_BEGIN(s) && IS_MBC_WORD_ASCII_MODE(encode, sprev, end, mode)) {
+ if (ON_STR_END(s) || ! IS_MBC_WORD_ASCII_MODE(encode, s, end, mode)) {
+ MOP_OUT;
+ continue;
+ }
}
}
goto fail;
break;
#endif
+ case OP_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY:
+ MOP_IN(OP_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY);
+ if (onigenc_egcb_is_break_position(encode, s, sprev, str, end)) {
+ MOP_OUT;
+ continue;
+ }
+ goto fail;
+ break;
+
+ case OP_NO_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY:
+ MOP_IN(OP_NO_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY);
+ if (onigenc_egcb_is_break_position(encode, s, sprev, str, end))
+ goto fail;
+
+ MOP_OUT;
+ continue;
+ break;
+
case OP_BEGIN_BUF: MOP_IN(OP_BEGIN_BUF);
if (! ON_STR_BEGIN(s)) goto fail;
diff --git a/src/regint.h b/src/regint.h
index 185f4b6..9dc1723 100644
--- a/src/regint.h
+++ b/src/regint.h
@@ -30,7 +30,7 @@
*/
/* for debug */
-/* #define ONIG_DEBUG_PARSE_TREE */
+/* #define ONIG_DEBUG_PARSE */
/* #define ONIG_DEBUG_COMPILE */
/* #define ONIG_DEBUG_SEARCH */
/* #define ONIG_DEBUG_MATCH */
@@ -39,7 +39,7 @@
/* for byte-code statistical data. */
/* #define ONIG_DEBUG_STATISTICS */
-#if defined(ONIG_DEBUG_PARSE_TREE) || defined(ONIG_DEBUG_MATCH) || \
+#if defined(ONIG_DEBUG_PARSE) || defined(ONIG_DEBUG_MATCH) || \
defined(ONIG_DEBUG_SEARCH) || defined(ONIG_DEBUG_COMPILE) || \
defined(ONIG_DEBUG_STATISTICS)
#ifndef ONIG_DEBUG
@@ -56,7 +56,6 @@
/* config */
/* spec. config */
-#define USE_NAMED_GROUP
#define USE_CALL
#define USE_BACKREF_WITH_LEVEL /* \k<name+n>, \k<name-n> */
#define USE_INSISTENT_CHECK_CAPTURES_STATUS_IN_ENDLESS_REPEAT /* /(?:()|())*\2/ */
@@ -283,10 +282,17 @@ typedef unsigned int MemStatusType;
#define INT_MAX_LIMIT ((1UL << (SIZEOF_INT * 8 - 1)) - 1)
+#define IS_CODE_WORD_ASCII(enc,code) \
+ (ONIGENC_IS_CODE_ASCII(code) && ONIGENC_IS_CODE_WORD(enc,code))
+#define IS_CODE_DIGIT_ASCII(enc, code) \
+ (ONIGENC_IS_CODE_ASCII(code) && ONIGENC_IS_CODE_DIGIT(enc,code))
+#define IS_CODE_XDIGIT_ASCII(enc, code) \
+ (ONIGENC_IS_CODE_ASCII(code) && ONIGENC_IS_CODE_XDIGIT(enc,code))
+
#define DIGITVAL(code) ((code) - '0')
#define ODIGITVAL(code) DIGITVAL(code)
#define XDIGITVAL(enc,code) \
- (ONIGENC_IS_CODE_DIGIT(enc,code) ? DIGITVAL(code) \
+ (IS_CODE_DIGIT_ASCII(enc,code) ? DIGITVAL(code) \
: (ONIGENC_IS_CODE_UPPER(enc,code) ? (code) - 'A' + 10 : (code) - 'a' + 10))
#define IS_SINGLELINE(option) ((option) & ONIG_OPTION_SINGLELINE)
@@ -301,6 +307,21 @@ typedef unsigned int MemStatusType;
#define IS_NOTEOL(option) ((option) & ONIG_OPTION_NOTEOL)
#define IS_POSIX_REGION(option) ((option) & ONIG_OPTION_POSIX_REGION)
+#define IS_WORD_ASCII(option) \
+ ((option) & (ONIG_OPTION_WORD_IS_ASCII | ONIG_OPTION_POSIX_IS_ASCII))
+#define IS_DIGIT_ASCII(option) \
+ ((option) & (ONIG_OPTION_DIGIT_IS_ASCII | ONIG_OPTION_POSIX_IS_ASCII))
+#define IS_SPACE_ASCII(option) \
+ ((option) & (ONIG_OPTION_SPACE_IS_ASCII | ONIG_OPTION_POSIX_IS_ASCII))
+#define IS_POSIX_ASCII(option) ((option) & ONIG_OPTION_POSIX_IS_ASCII)
+
+#define IS_ASCII_MODE_CTYPE_OPTION(ctype, options) \
+ ((ctype) >= 0 && \
+ (((ctype) < ONIGENC_CTYPE_ASCII && IS_POSIX_ASCII(options)) ||\
+ ((ctype) == ONIGENC_CTYPE_WORD && IS_WORD_ASCII(options)) ||\
+ ((ctype) == ONIGENC_CTYPE_DIGIT && IS_DIGIT_ASCII(options)) ||\
+ ((ctype) == ONIGENC_CTYPE_SPACE && IS_SPACE_ASCII(options))))
+
/* OP_SET_OPTION is required for these options.
#define IS_DYNAMIC_OPTION(option) \
(((option) & (ONIG_OPTION_MULTILINE | ONIG_OPTION_IGNORECASE)) != 0)
@@ -350,21 +371,21 @@ typedef struct _BBuf {
unsigned int alloc;
} BBuf;
-#define BBUF_INIT(buf,size) onig_bbuf_init((BBuf* )(buf), (size))
+#define BB_INIT(buf,size) onig_bbuf_init((BBuf* )(buf), (size))
-#define BBUF_SIZE_INC(buf,inc) do{\
+#define BB_SIZE_INC(buf,inc) do{\
(buf)->alloc += (inc);\
(buf)->p = (UChar* )xrealloc((buf)->p, (buf)->alloc);\
if (IS_NULL((buf)->p)) return(ONIGERR_MEMORY);\
} while (0)
-#define BBUF_EXPAND(buf,low) do{\
+#define BB_EXPAND(buf,low) do{\
do { (buf)->alloc *= 2; } while ((buf)->alloc < (unsigned int )low);\
(buf)->p = (UChar* )xrealloc((buf)->p, (buf)->alloc);\
if (IS_NULL((buf)->p)) return(ONIGERR_MEMORY);\
} while (0)
-#define BBUF_ENSURE_SIZE(buf,size) do{\
+#define BB_ENSURE_SIZE(buf,size) do{\
unsigned int new_alloc = (buf)->alloc;\
while (new_alloc < (unsigned int )(size)) { new_alloc *= 2; }\
if ((buf)->alloc != new_alloc) {\
@@ -374,54 +395,54 @@ typedef struct _BBuf {
}\
} while (0)
-#define BBUF_WRITE(buf,pos,bytes,n) do{\
+#define BB_WRITE(buf,pos,bytes,n) do{\
int used = (pos) + (n);\
- if ((buf)->alloc < (unsigned int )used) BBUF_EXPAND((buf),used);\
+ if ((buf)->alloc < (unsigned int )used) BB_EXPAND((buf),used);\
xmemcpy((buf)->p + (pos), (bytes), (n));\
if ((buf)->used < (unsigned int )used) (buf)->used = used;\
} while (0)
-#define BBUF_WRITE1(buf,pos,byte) do{\
+#define BB_WRITE1(buf,pos,byte) do{\
int used = (pos) + 1;\
- if ((buf)->alloc < (unsigned int )used) BBUF_EXPAND((buf),used);\
+ if ((buf)->alloc < (unsigned int )used) BB_EXPAND((buf),used);\
(buf)->p[(pos)] = (byte);\
if ((buf)->used < (unsigned int )used) (buf)->used = used;\
} while (0)
-#define BBUF_ADD(buf,bytes,n) BBUF_WRITE((buf),(buf)->used,(bytes),(n))
-#define BBUF_ADD1(buf,byte) BBUF_WRITE1((buf),(buf)->used,(byte))
-#define BBUF_GET_ADD_ADDRESS(buf) ((buf)->p + (buf)->used)
-#define BBUF_GET_OFFSET_POS(buf) ((buf)->used)
+#define BB_ADD(buf,bytes,n) BB_WRITE((buf),(buf)->used,(bytes),(n))
+#define BB_ADD1(buf,byte) BB_WRITE1((buf),(buf)->used,(byte))
+#define BB_GET_ADD_ADDRESS(buf) ((buf)->p + (buf)->used)
+#define BB_GET_OFFSET_POS(buf) ((buf)->used)
/* from < to */
-#define BBUF_MOVE_RIGHT(buf,from,to,n) do {\
- if ((unsigned int )((to)+(n)) > (buf)->alloc) BBUF_EXPAND((buf),(to) + (n));\
+#define BB_MOVE_RIGHT(buf,from,to,n) do {\
+ if ((unsigned int )((to)+(n)) > (buf)->alloc) BB_EXPAND((buf),(to) + (n));\
xmemmove((buf)->p + (to), (buf)->p + (from), (n));\
if ((unsigned int )((to)+(n)) > (buf)->used) (buf)->used = (to) + (n);\
} while (0)
/* from > to */
-#define BBUF_MOVE_LEFT(buf,from,to,n) do {\
+#define BB_MOVE_LEFT(buf,from,to,n) do {\
xmemmove((buf)->p + (to), (buf)->p + (from), (n));\
} while (0)
/* from > to */
-#define BBUF_MOVE_LEFT_REDUCE(buf,from,to) do {\
+#define BB_MOVE_LEFT_REDUCE(buf,from,to) do {\
xmemmove((buf)->p + (to), (buf)->p + (from), (buf)->used - (from));\
(buf)->used -= (from - to);\
} while (0)
-#define BBUF_INSERT(buf,pos,bytes,n) do {\
+#define BB_INSERT(buf,pos,bytes,n) do {\
if (pos >= (buf)->used) {\
- BBUF_WRITE(buf,pos,bytes,n);\
+ BB_WRITE(buf,pos,bytes,n);\
}\
else {\
- BBUF_MOVE_RIGHT((buf),(pos),(pos) + (n),((buf)->used - (pos)));\
+ BB_MOVE_RIGHT((buf),(pos),(pos) + (n),((buf)->used - (pos)));\
xmemcpy((buf)->p + (pos), (bytes), (n));\
}\
} while (0)
-#define BBUF_GET_BYTE(buf, pos) (buf)->p[(pos)]
+#define BB_GET_BYTE(buf, pos) (buf)->p[(pos)]
/* has body */
@@ -436,15 +457,21 @@ typedef struct _BBuf {
#define ANCHOR_END_BUF (1<<7)
#define ANCHOR_SEMI_END_BUF (1<<8)
#define ANCHOR_END_LINE (1<<9)
-#define ANCHOR_WORD_BOUND (1<<10)
-#define ANCHOR_NOT_WORD_BOUND (1<<11)
+#define ANCHOR_WORD_BOUNDARY (1<<10)
+#define ANCHOR_NO_WORD_BOUNDARY (1<<11)
#define ANCHOR_WORD_BEGIN (1<<12)
#define ANCHOR_WORD_END (1<<13)
#define ANCHOR_ANYCHAR_STAR (1<<14) /* ".*" optimize info */
#define ANCHOR_ANYCHAR_STAR_ML (1<<15) /* ".*" optimize info (multi-line) */
+#define ANCHOR_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY (1<<16)
+#define ANCHOR_NO_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY (1<<17)
+
#define ANCHOR_HAS_BODY(a) ((a)->type < ANCHOR_BEGIN_BUF)
+#define IS_WORD_ANCHOR_TYPE(type) \
+ ((type) == ANCHOR_WORD_BOUNDARY || (type) == ANCHOR_NO_WORD_BOUNDARY || \
+ (type) == ANCHOR_WORD_BEGIN || (type) == ANCHOR_WORD_END)
/* operation code */
enum OpCode {
@@ -473,7 +500,9 @@ enum OpCode {
OP_CCLASS_NOT,
OP_CCLASS_MB_NOT,
OP_CCLASS_MIX_NOT,
+#ifdef USE_OP_CCLASS_NODE
OP_CCLASS_NODE, /* pointer to CClassNode node */
+#endif
OP_ANYCHAR, /* "." */
OP_ANYCHAR_ML, /* "." multi-line */
@@ -483,12 +512,17 @@ enum OpCode {
OP_ANYCHAR_ML_STAR_PEEK_NEXT,
OP_WORD,
- OP_NOT_WORD,
- OP_WORD_BOUND,
- OP_NOT_WORD_BOUND,
+ OP_WORD_ASCII,
+ OP_NO_WORD,
+ OP_NO_WORD_ASCII,
+ OP_WORD_BOUNDARY,
+ OP_NO_WORD_BOUNDARY,
OP_WORD_BEGIN,
OP_WORD_END,
+ OP_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY,
+ OP_NO_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY,
+
OP_BEGIN_BUF,
OP_END_BUF,
OP_BEGIN_LINE,
@@ -580,6 +614,7 @@ typedef short int StateCheckNumType;
typedef void* PointerType;
typedef int SaveType;
typedef int UpdateVarType;
+typedef int ModeType;
#define SIZE_OPCODE 1
#define SIZE_RELADDR sizeof(RelAddrType)
@@ -593,6 +628,7 @@ typedef int UpdateVarType;
#define SIZE_POINTER sizeof(PointerType)
#define SIZE_SAVE_TYPE sizeof(SaveType)
#define SIZE_UPDATE_VAR_TYPE sizeof(UpdateVarType)
+#define SIZE_MODE sizeof(ModeType)
#define GET_RELADDR_INC(addr,p) PLATFORM_GET_INC(addr, p, RelAddrType)
#define GET_ABSADDR_INC(addr,p) PLATFORM_GET_INC(addr, p, AbsAddrType)
@@ -604,6 +640,7 @@ typedef int UpdateVarType;
#define GET_STATE_CHECK_NUM_INC(num,p) PLATFORM_GET_INC(num, p, StateCheckNumType)
#define GET_SAVE_TYPE_INC(type,p) PLATFORM_GET_INC(type, p, SaveType)
#define GET_UPDATE_VAR_TYPE_INC(type,p) PLATFORM_GET_INC(type, p, UpdateVarType)
+#define GET_MODE_INC(mode,p) PLATFORM_GET_INC(mode, p, ModeType)
/* code point's address must be aligned address. */
#define GET_CODE_POINT(code,p) code = *((OnigCodePoint* )(p))
@@ -624,6 +661,7 @@ typedef int UpdateVarType;
#define SIZE_OP_PUSH_IF_PEEK_NEXT (SIZE_OPCODE + SIZE_RELADDR + 1)
#define SIZE_OP_REPEAT_INC (SIZE_OPCODE + SIZE_MEMNUM)
#define SIZE_OP_REPEAT_INC_NG (SIZE_OPCODE + SIZE_MEMNUM)
+#define SIZE_OP_WORD_BOUNDARY (SIZE_OPCODE + SIZE_MODE)
#define SIZE_OP_PREC_READ_START SIZE_OPCODE
#define SIZE_OP_PUSH_PREC_READ_NOT (SIZE_OPCODE + SIZE_RELADDR)
#define SIZE_OP_PREC_READ_END SIZE_OPCODE
@@ -725,9 +763,6 @@ typedef struct {
} OnigMatchArg;
-#define IS_CODE_SB_WORD(enc,code) \
- (ONIGENC_IS_CODE_ASCII(code) && ONIGENC_IS_CODE_WORD(enc,code))
-
typedef struct OnigEndCallListItem {
struct OnigEndCallListItem* next;
void (*func)(void);
diff --git a/src/regparse.c b/src/regparse.c
index 25291c5..1fb2357 100644
--- a/src/regparse.c
+++ b/src/regparse.c
@@ -50,6 +50,7 @@ OnigSyntaxType OnigSyntaxRuby = {
ONIG_SYN_OP2_QMARK_LT_NAMED_GROUP | ONIG_SYN_OP2_ESC_K_NAMED_BACKREF |
ONIG_SYN_OP2_QMARK_LPAREN_IF_ELSE |
ONIG_SYN_OP2_QMARK_TILDE_ABSENT_GROUP |
+ ONIG_SYN_OP2_ESC_X_Y_GRAPHEME_CLUSTER |
ONIG_SYN_OP2_ESC_CAPITAL_R_GENERAL_NEWLINE |
ONIG_SYN_OP2_ESC_CAPITAL_N_O_SUPER_DOT |
ONIG_SYN_OP2_ESC_CAPITAL_K_KEEP |
@@ -163,7 +164,7 @@ bbuf_clone(BBuf** rto, BBuf* from)
*rto = to = (BBuf* )xmalloc(sizeof(BBuf));
CHECK_NULL_RETURN_MEMERR(to);
- r = BBUF_INIT(to, from->alloc);
+ r = BB_INIT(to, from->alloc);
if (r != 0) {
xfree(to->p);
*rto = 0;
@@ -288,7 +289,6 @@ onig_strcpy(UChar* dest, const UChar* src, const UChar* end)
}
}
-#ifdef USE_NAMED_GROUP
static UChar*
strdup_with_null(OnigEncoding enc, UChar* s, UChar* end)
{
@@ -307,7 +307,6 @@ strdup_with_null(OnigEncoding enc, UChar* s, UChar* end)
return r;
}
-#endif
static int
save_entry(ScanEnv* env, enum SaveType type, int* id)
@@ -483,8 +482,6 @@ onig_st_insert_strend(hash_table_type* table, const UChar* str_key,
#endif /* USE_ST_LIBRARY */
-#ifdef USE_NAMED_GROUP
-
#define INIT_NAME_BACKREFS_ALLOC_NUM 8
typedef struct {
@@ -965,49 +962,17 @@ onig_name_to_backref_number(regex_t* reg, const UChar* name,
}
}
-#else /* USE_NAMED_GROUP */
-
-extern int
-onig_name_to_group_numbers(regex_t* reg, const UChar* name,
- const UChar* name_end, int** nums)
-{
- return ONIG_NO_SUPPORT_CONFIG;
-}
-
-extern int
-onig_name_to_backref_number(regex_t* reg, const UChar* name,
- const UChar* name_end, OnigRegion* region)
-{
- return ONIG_NO_SUPPORT_CONFIG;
-}
-
-extern int
-onig_foreach_name(regex_t* reg,
- int (*func)(const UChar*, const UChar*,int,int*,regex_t*,void*), void* arg)
-{
- return ONIG_NO_SUPPORT_CONFIG;
-}
-
-extern int
-onig_number_of_names(regex_t* reg)
-{
- return 0;
-}
-#endif /* else USE_NAMED_GROUP */
-
extern int
onig_noname_group_capture_is_active(regex_t* reg)
{
if (ONIG_IS_OPTION_ON(reg->options, ONIG_OPTION_DONT_CAPTURE_GROUP))
return 0;
-#ifdef USE_NAMED_GROUP
if (onig_number_of_names(reg) > 0 &&
IS_SYNTAX_BV(reg->syntax, ONIG_SYN_CAPTURE_ONLY_NAMED_GROUP) &&
!ONIG_IS_OPTION_ON(reg->options, ONIG_OPTION_CAPTURE_GROUP)) {
return 0;
}
-#endif
return 1;
}
@@ -1032,10 +997,8 @@ scan_env_clear(ScanEnv* env)
#endif
env->num_mem = 0;
-#ifdef USE_NAMED_GROUP
env->num_named = 0;
-#endif
- env->mem_alloc = 0;
+ env->mem_alloc = 0;
env->mem_env_dynamic = (MemEnv* )NULL;
xmemset(env->mem_env_static, 0, sizeof(env->mem_env_static));
@@ -1204,7 +1167,6 @@ node_new(void)
Node* node;
node = (Node* )xmalloc(sizeof(Node));
- //xmemset(node, 0, sizeof(node->u.base));
xmemset(node, 0, sizeof(*node));
#ifdef DEBUG_NODE_FREE
@@ -1218,7 +1180,6 @@ static void
initialize_cclass(CClassNode* cc)
{
BITSET_CLEAR(cc->bs);
- /* cc->base.flags = 0; */
cc->flags = 0;
cc->mbuf = NULL;
}
@@ -1235,21 +1196,23 @@ node_new_cclass(void)
}
static Node*
-node_new_ctype(int type, int not)
+node_new_ctype(int type, int not, OnigOptionType options)
{
Node* node = node_new();
CHECK_NULL_RETURN(node);
NODE_SET_TYPE(node, NODE_CTYPE);
- CTYPE_(node)->ctype = type;
- CTYPE_(node)->not = not;
+ CTYPE_(node)->ctype = type;
+ CTYPE_(node)->not = not;
+ CTYPE_(node)->options = options;
+ CTYPE_(node)->ascii_mode = IS_ASCII_MODE_CTYPE_OPTION(type, options);
return node;
}
static Node*
node_new_anychar(void)
{
- Node* node = node_new_ctype(CTYPE_ANYCHAR, 0);
+ Node* node = node_new_ctype(CTYPE_ANYCHAR, 0, ONIG_OPTION_NONE);
return node;
}
@@ -1383,14 +1346,15 @@ make_alt(int n, Node* ns[])
}
extern Node*
-onig_node_new_anchor(int type)
+onig_node_new_anchor(int type, int ascii_mode)
{
Node* node = node_new();
CHECK_NULL_RETURN(node);
NODE_SET_TYPE(node, NODE_ANCHOR);
- ANCHOR_(node)->type = type;
- ANCHOR_(node)->char_len = -1;
+ ANCHOR_(node)->type = type;
+ ANCHOR_(node)->char_len = -1;
+ ANCHOR_(node)->ascii_mode = ascii_mode;
return node;
}
@@ -1506,7 +1470,7 @@ node_new_quantifier(int lower, int upper, int by_number)
}
static Node*
-node_new_enclosure(int type)
+node_new_enclosure(enum EnclosureType type)
{
Node* node = node_new();
CHECK_NULL_RETURN(node);
@@ -1637,6 +1601,61 @@ node_new_keep(Node** node, ScanEnv* env)
}
static int
+make_extended_grapheme_cluster(Node** node, ScanEnv* env)
+{
+ int r;
+ int i;
+ Node* x;
+ Node* ns[2];
+
+ /* \X == (?>\O(?:\Y\O)*) */
+
+ ns[1] = NULL_NODE;
+
+ r = ONIGERR_MEMORY;
+ ns[0] = onig_node_new_anchor(ANCHOR_NO_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY, 0);
+ if (IS_NULL(ns[0])) goto err;
+
+ r = node_new_true_anychar(&ns[1], env);
+ if (r != 0) goto err1;
+
+ x = make_list(2, ns);
+ if (IS_NULL(x)) goto err;
+ ns[0] = x;
+ ns[1] = NULL_NODE;
+
+ x = node_new_quantifier(0, REPEAT_INFINITE, 1);
+ if (IS_NULL(x)) goto err;
+
+ NODE_BODY(x) = ns[0];
+ ns[0] = NULL_NODE;
+ ns[1] = x;
+
+ r = node_new_true_anychar(&ns[0], env);
+ if (r != 0) goto err1;
+
+ x = make_list(2, ns);
+ if (IS_NULL(x)) goto err;
+
+ ns[0] = x;
+ ns[1] = NULL_NODE;
+
+ x = node_new_enclosure(ENCLOSURE_STOP_BACKTRACK);
+ if (IS_NULL(x)) goto err;
+
+ NODE_BODY(x) = ns[0];
+
+ *node = x;
+ return ONIG_NORMAL;
+
+ err:
+ r = ONIGERR_MEMORY;
+ err1:
+ for (i = 0; i < 2; i++) onig_node_free(ns[i]);
+ return r;
+}
+
+static int
make_absent_engine(Node** node, int pre_save_right_id, Node* absent,
Node* step_one, int lower, int upper, int possessive,
int is_range_cutter, ScanEnv* env)
@@ -1663,26 +1682,26 @@ make_absent_engine(Node** node, int pre_save_right_id, Node* absent,
if (r != 0) goto err;
x = make_list(4, ns);
- if (IS_NULL(x)) goto err;
+ if (IS_NULL(x)) goto err0;
ns[0] = x;
ns[1] = step_one;
ns[2] = ns[3] = NULL_NODE;
x = make_alt(2, ns);
- if (IS_NULL(x)) goto err;
+ if (IS_NULL(x)) goto err0;
ns[0] = x;
x = node_new_quantifier(lower, upper, 0);
- if (IS_NULL(x)) goto err;
+ if (IS_NULL(x)) goto err0;
NODE_BODY(x) = ns[0];
ns[0] = x;
if (possessive != 0) {
x = node_new_enclosure(ENCLOSURE_STOP_BACKTRACK);
- if (IS_NULL(x)) goto err;
+ if (IS_NULL(x)) goto err0;
NODE_BODY(x) = ns[0];
ns[0] = x;
@@ -1696,12 +1715,12 @@ make_absent_engine(Node** node, int pre_save_right_id, Node* absent,
if (r != 0) goto err;
x = make_list(2, ns + 1);
- if (IS_NULL(x)) goto err;
+ if (IS_NULL(x)) goto err0;
ns[1] = x; ns[2] = NULL_NODE;
x = make_alt(2, ns);
- if (IS_NULL(x)) goto err;
+ if (IS_NULL(x)) goto err0;
if (is_range_cutter != 0)
NODE_STATUS_ADD(x, NST_SUPER);
@@ -1709,6 +1728,8 @@ make_absent_engine(Node** node, int pre_save_right_id, Node* absent,
*node = x;
return ONIG_NORMAL;
+ err0:
+ r = ONIGERR_MEMORY;
err:
for (i = 0; i < 4; i++) onig_node_free(ns[i]);
return r;
@@ -1739,7 +1760,7 @@ make_absent_tail(Node** node1, Node** node2, int pre_save_right_id,
if (r != 0) goto err;
x = make_list(2, ns);
- if (IS_NULL(x)) goto err;
+ if (IS_NULL(x)) goto err0;
ns[0] = NULL_NODE; ns[1] = x;
@@ -1748,12 +1769,68 @@ make_absent_tail(Node** node1, Node** node2, int pre_save_right_id,
if (r != 0) goto err;
x = make_alt(2, ns);
- if (IS_NULL(x)) goto err;
+ if (IS_NULL(x)) goto err0;
*node1 = save;
*node2 = x;
return ONIG_NORMAL;
+ err0:
+ r = ONIGERR_MEMORY;
+ err:
+ onig_node_free(save);
+ onig_node_free(ns[0]);
+ onig_node_free(ns[1]);
+ return r;
+}
+
+static int
+make_range_clear(Node** node, ScanEnv* env)
+{
+ int r;
+ int id;
+ Node* save;
+ Node* x;
+ Node* ns[2];
+
+ *node = NULL_NODE;
+ save = ns[0] = ns[1] = NULL_NODE;
+
+ r = node_new_save_gimmick(&save, SAVE_RIGHT_RANGE, env);
+ if (r != 0) goto err;
+
+ id = GIMMICK_(save)->id;
+ r = node_new_update_var_gimmick(&ns[0], UPDATE_VAR_RIGHT_RANGE_FROM_STACK,
+ id, env);
+ if (r != 0) goto err;
+
+ r = node_new_fail(&ns[1], env);
+ if (r != 0) goto err;
+
+ x = make_list(2, ns);
+ if (IS_NULL(x)) goto err0;
+
+ ns[0] = NULL_NODE; ns[1] = x;
+
+ r = node_new_update_var_gimmick(&ns[0], UPDATE_VAR_RIGHT_RANGE_INIT, 0, env);
+ if (r != 0) goto err;
+
+ x = make_alt(2, ns);
+ if (IS_NULL(x)) goto err0;
+
+ NODE_STATUS_ADD(x, NST_SUPER);
+
+ ns[0] = save;
+ ns[1] = x;
+ save = NULL_NODE;
+ x = make_list(2, ns);
+ if (IS_NULL(x)) goto err0;
+
+ *node = x;
+ return ONIG_NORMAL;
+
+ err0:
+ r = ONIGERR_MEMORY;
err:
onig_node_free(save);
onig_node_free(ns[0]);
@@ -1790,6 +1867,9 @@ is_simple_one_char_repeat(Node* node, Node** rquant, Node** rbody,
return 0;
}
+ if (QUANT_(quant)->greedy == 0)
+ return 0;
+
body = NODE_BODY(quant);
switch (NODE_TYPE(body)) {
case NODE_STRING:
@@ -1856,15 +1936,18 @@ make_absent_tree_for_simple_one_char_repeat(Node** node, Node* absent, Node* qua
ns[2] = ns[3] = NULL_NODE;
- r = make_absent_tail(&ns[2], &ns[3], id1, env);
+ r = node_new_update_var_gimmick(&ns[2], UPDATE_VAR_RIGHT_RANGE_FROM_STACK,
+ id1, env);
if (r != 0) goto err;
- x = make_list(4, ns);
- if (IS_NULL(x)) goto err;
+ x = make_list(3, ns);
+ if (IS_NULL(x)) goto err0;
*node = x;
return ONIG_NORMAL;
+ err0:
+ r = ONIGERR_MEMORY;
err:
for (i = 0; i < 4; i++) onig_node_free(ns[i]);
return r;
@@ -1892,7 +1975,7 @@ make_absent_tree(Node** node, Node* absent, Node* expr, int is_range_cutter,
if (expr == NULL_NODE) {
/* default expr \O* */
quant = node_new_quantifier(0, REPEAT_INFINITE, 0);
- if (IS_NULL(quant)) goto err;
+ if (IS_NULL(quant)) goto err0;
r = node_new_true_anychar(&body, env);
if (r != 0) {
@@ -1945,19 +2028,21 @@ make_absent_tree(Node** node, Node* absent, Node* expr, int is_range_cutter,
if (is_range_cutter != 0) {
x = make_list(4, ns);
- if (IS_NULL(x)) goto err;
+ if (IS_NULL(x)) goto err0;
}
else {
r = make_absent_tail(&ns[5], &ns[6], id1, env);
if (r != 0) goto err;
x = make_list(7, ns);
- if (IS_NULL(x)) goto err;
+ if (IS_NULL(x)) goto err0;
}
*node = x;
return ONIG_NORMAL;
+ err0:
+ r = ONIGERR_MEMORY;
err:
for (i = 0; i < 7; i++) onig_node_free(ns[i]);
return r;
@@ -2143,7 +2228,7 @@ onig_scan_unsigned_number(UChar** src, const UChar* end, OnigEncoding enc)
num = 0;
while (! PEND) {
PFETCH(c);
- if (ONIGENC_IS_CODE_DIGIT(enc, c)) {
+ if (IS_CODE_DIGIT_ASCII(enc, c)) {
val = (unsigned int )DIGITVAL(c);
if ((INT_MAX_LIMIT - val) / 10UL < num)
return -1; /* overflow */
@@ -2161,7 +2246,7 @@ onig_scan_unsigned_number(UChar** src, const UChar* end, OnigEncoding enc)
static int
scan_unsigned_hexadecimal_number(UChar** src, UChar* end, int maxlen,
- OnigEncoding enc)
+ OnigEncoding enc)
{
OnigCodePoint c;
unsigned int num, val;
@@ -2171,7 +2256,7 @@ scan_unsigned_hexadecimal_number(UChar** src, UChar* end, int maxlen,
num = 0;
while (! PEND && maxlen-- != 0) {
PFETCH(c);
- if (ONIGENC_IS_CODE_XDIGIT(enc, c)) {
+ if (IS_CODE_XDIGIT_ASCII(enc, c)) {
val = (unsigned int )XDIGITVAL(enc,c);
if ((INT_MAX_LIMIT - val) / 16UL < num)
return -1; /* overflow */
@@ -2189,7 +2274,7 @@ scan_unsigned_hexadecimal_number(UChar** src, UChar* end, int maxlen,
static int
scan_unsigned_octal_number(UChar** src, UChar* end, int maxlen,
- OnigEncoding enc)
+ OnigEncoding enc)
{
OnigCodePoint c;
unsigned int num, val;
@@ -2199,7 +2284,7 @@ scan_unsigned_octal_number(UChar** src, UChar* end, int maxlen,
num = 0;
while (! PEND && maxlen-- != 0) {
PFETCH(c);
- if (ONIGENC_IS_CODE_DIGIT(enc, c) && c < '8') {
+ if (IS_CODE_DIGIT_ASCII(enc, c) && c < '8') {
val = ODIGITVAL(c);
if ((INT_MAX_LIMIT - val) / 8UL < num)
return -1; /* overflow */
@@ -2216,8 +2301,8 @@ scan_unsigned_octal_number(UChar** src, UChar* end, int maxlen,
}
-#define BBUF_WRITE_CODE_POINT(bbuf,pos,code) \
- BBUF_WRITE(bbuf, pos, &(code), SIZE_CODE_POINT)
+#define BB_WRITE_CODE_POINT(bbuf,pos,code) \
+ BB_WRITE(bbuf, pos, &(code), SIZE_CODE_POINT)
/* data format:
[n][from-1][to-1][from-2][to-2] ... [from-n][to-n]
@@ -2233,7 +2318,7 @@ new_code_range(BBuf** pbuf)
bbuf = *pbuf = (BBuf* )xmalloc(sizeof(BBuf));
CHECK_NULL_RETURN_MEMERR(bbuf);
- r = BBUF_INIT(bbuf, INIT_MULTI_BYTE_RANGE_SIZE);
+ r = BB_INIT(bbuf, INIT_MULTI_BYTE_RANGE_SIZE);
if (r != 0) {
xfree(bbuf);
*pbuf = 0;
@@ -2241,7 +2326,7 @@ new_code_range(BBuf** pbuf)
}
n = 0;
- BBUF_WRITE_CODE_POINT(bbuf, 0, n);
+ BB_WRITE_CODE_POINT(bbuf, 0, n);
return 0;
}
@@ -2304,19 +2389,19 @@ add_code_range_to_buf(BBuf** pbuf, OnigCodePoint from, OnigCodePoint to)
int size = (n - high) * 2 * SIZE_CODE_POINT;
if (inc_n > 0) {
- BBUF_MOVE_RIGHT(bbuf, from_pos, to_pos, size);
+ BB_MOVE_RIGHT(bbuf, from_pos, to_pos, size);
}
else {
- BBUF_MOVE_LEFT_REDUCE(bbuf, from_pos, to_pos);
+ BB_MOVE_LEFT_REDUCE(bbuf, from_pos, to_pos);
}
}
pos = SIZE_CODE_POINT * (1 + low * 2);
- BBUF_ENSURE_SIZE(bbuf, pos + SIZE_CODE_POINT * 2);
- BBUF_WRITE_CODE_POINT(bbuf, pos, from);
- BBUF_WRITE_CODE_POINT(bbuf, pos + SIZE_CODE_POINT, to);
+ BB_ENSURE_SIZE(bbuf, pos + SIZE_CODE_POINT * 2);
+ BB_WRITE_CODE_POINT(bbuf, pos, from);
+ BB_WRITE_CODE_POINT(bbuf, pos + SIZE_CODE_POINT, to);
n += inc_n;
- BBUF_WRITE_CODE_POINT(bbuf, 0, n);
+ BB_WRITE_CODE_POINT(bbuf, 0, n);
return 0;
}
@@ -2369,7 +2454,7 @@ not_code_range_buf(OnigEncoding enc, BBuf* bbuf, BBuf** pbuf)
return r;
}
-#define SWAP_BBUF_NOT(bbuf1, not1, bbuf2, not2) do {\
+#define SWAP_BB_NOT(bbuf1, not1, bbuf2, not2) do {\
BBuf *tbuf; \
int tnot; \
tnot = not1; not1 = not2; not2 = tnot; \
@@ -2393,7 +2478,7 @@ or_code_range_buf(OnigEncoding enc, BBuf* bbuf1, int not1,
r = 0;
if (IS_NULL(bbuf2))
- SWAP_BBUF_NOT(bbuf1, not1, bbuf2, not2);
+ SWAP_BB_NOT(bbuf1, not1, bbuf2, not2);
if (IS_NULL(bbuf1)) {
if (not1 != 0) {
@@ -2410,7 +2495,7 @@ or_code_range_buf(OnigEncoding enc, BBuf* bbuf1, int not1,
}
if (not1 != 0)
- SWAP_BBUF_NOT(bbuf1, not1, bbuf2, not2);
+ SWAP_BB_NOT(bbuf1, not1, bbuf2, not2);
data1 = (OnigCodePoint* )(bbuf1->p);
GET_CODE_POINT(n1, data1);
@@ -2435,7 +2520,7 @@ or_code_range_buf(OnigEncoding enc, BBuf* bbuf1, int not1,
static int
and_code_range1(BBuf** pbuf, OnigCodePoint from1, OnigCodePoint to1,
- OnigCodePoint* data, int n)
+ OnigCodePoint* data, int n)
{
int i, r;
OnigCodePoint from2, to2;
@@ -2493,7 +2578,7 @@ and_code_range_buf(BBuf* bbuf1, int not1, BBuf* bbuf2, int not2, BBuf** pbuf)
}
if (not1 != 0)
- SWAP_BBUF_NOT(bbuf1, not1, bbuf2, not2);
+ SWAP_BB_NOT(bbuf1, not1, bbuf2, not2);
data1 = (OnigCodePoint* )(bbuf1->p);
data2 = (OnigCodePoint* )(bbuf2->p);
@@ -2556,7 +2641,6 @@ and_cclass(CClassNode* dest, CClassNode* cc, OnigEncoding enc)
bitset_and(bsr1, bsr2);
if (bsr1 != dest->bs) {
bitset_copy(dest->bs, bsr1);
- bsr1 = dest->bs;
}
if (not1 != 0) {
bitset_invert(dest->bs);
@@ -2614,7 +2698,6 @@ or_cclass(CClassNode* dest, CClassNode* cc, OnigEncoding enc)
bitset_or(bsr1, bsr2);
if (bsr1 != dest->bs) {
bitset_copy(dest->bs, bsr1);
- bsr1 = dest->bs;
}
if (not1 != 0) {
bitset_invert(dest->bs);
@@ -2661,7 +2744,7 @@ conv_backslash_value(OnigCodePoint c, ScanEnv* env)
case 'e': return '\033';
case 'v':
if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_ESC_V_VTAB))
- return '\v';
+ return '\v';
break;
default:
@@ -2874,6 +2957,7 @@ enum TokenSyms {
TK_GENERAL_NEWLINE, /* \R */
TK_NO_NEWLINE, /* \N */
TK_TRUE_ANYCHAR, /* \O */
+ TK_EXTENDED_GRAPHEME_CLUSTER, /* \X */
/* in cc */
TK_CC_CLOSE,
@@ -3110,7 +3194,6 @@ enum REF_NUM {
IS_REL_NUM = 2
};
-#ifdef USE_NAMED_GROUP
#ifdef USE_BACKREF_WITH_LEVEL
/*
\k<name+n>, \k<name-n>
@@ -3152,7 +3235,7 @@ fetch_name_with_level(OnigCodePoint start_code, UChar** src, UChar* end,
if (c == end_code)
return ONIGERR_EMPTY_GROUP_NAME;
- if (ONIGENC_IS_CODE_DIGIT(enc, c)) {
+ if (IS_CODE_DIGIT_ASCII(enc, c)) {
*num_type = IS_ABS_NUM;
digit_count++;
}
@@ -3181,7 +3264,7 @@ fetch_name_with_level(OnigCodePoint start_code, UChar** src, UChar* end,
}
if (*num_type != IS_NOT_NUM) {
- if (ONIGENC_IS_CODE_DIGIT(enc, c)) {
+ if (IS_CODE_DIGIT_ASCII(enc, c)) {
digit_count++;
}
else {
@@ -3204,7 +3287,7 @@ fetch_name_with_level(OnigCodePoint start_code, UChar** src, UChar* end,
goto end;
}
PFETCH(c);
- if (! ONIGENC_IS_CODE_DIGIT(enc, c)) goto err;
+ if (! IS_CODE_DIGIT_ASCII(enc, c)) goto err;
PUNFETCH;
level = onig_scan_unsigned_number(&p, end, enc);
if (level < 0) return ONIGERR_TOO_BIG_NUMBER;
@@ -3284,7 +3367,7 @@ fetch_name(OnigCodePoint start_code, UChar** src, UChar* end,
if (c == end_code)
return ONIGERR_EMPTY_GROUP_NAME;
- if (ONIGENC_IS_CODE_DIGIT(enc, c)) {
+ if (IS_CODE_DIGIT_ASCII(enc, c)) {
if (ref == 1)
*num_type = IS_ABS_NUM;
else {
@@ -3328,7 +3411,7 @@ fetch_name(OnigCodePoint start_code, UChar** src, UChar* end,
}
if (*num_type != IS_NOT_NUM) {
- if (ONIGENC_IS_CODE_DIGIT(enc, c)) {
+ if (IS_CODE_DIGIT_ASCII(enc, c)) {
digit_count++;
}
else {
@@ -3384,111 +3467,6 @@ fetch_name(OnigCodePoint start_code, UChar** src, UChar* end,
return r;
}
}
-#else
-static int
-fetch_name(OnigCodePoint start_code, UChar** src, UChar* end,
- UChar** rname_end, ScanEnv* env, int* rback_num,
- enum REF_NUM* num_type, int ref)
-{
- int r, sign;
- int digit_count;
- OnigCodePoint end_code;
- OnigCodePoint c = 0;
- UChar *name_end;
- OnigEncoding enc = env->enc;
- UChar *pnum_head;
- UChar *p = *src;
- PFETCH_READY;
-
- *rback_num = 0;
-
- end_code = get_name_end_code_point(start_code);
-
- digit_count = 0;
- *rname_end = name_end = end;
- r = 0;
- pnum_head = *src;
- *num_type = IS_ABS_NUM;
- sign = 1;
-
- if (PEND) {
- return ONIGERR_EMPTY_GROUP_NAME;
- }
- else {
- PFETCH(c);
- if (c == end_code)
- return ONIGERR_EMPTY_GROUP_NAME;
-
- if (ONIGENC_IS_CODE_DIGIT(enc, c)) {
- *num_type = IS_ABS_NUM;
- digit_count++;
- }
- else if (c == '-') {
- if (ref == 1) {
- *num_type = IS_REL_NUM;
- sign = -1;
- pnum_head = p;
- }
- else {
- r = ONIGERR_INVALID_GROUP_NAME;
- }
- }
- else if (c == '+') {
- if (ref == 1) {
- *num_type = IS_REL_NUM;
- sign = 1;
- pnum_head = p;
- }
- else {
- r = ONIGERR_INVALID_GROUP_NAME;
- }
- }
- else {
- r = ONIGERR_INVALID_CHAR_IN_GROUP_NAME;
- }
- }
-
- while (! PEND) {
- name_end = p;
-
- PFETCH(c);
- if (c == end_code || c == ')') break;
-
- if (ONIGENC_IS_CODE_DIGIT(enc, c))
- digit_count++;
- else
- r = ONIGERR_INVALID_CHAR_IN_GROUP_NAME;
- }
- if (r == 0 && c != end_code) {
- r = ONIGERR_INVALID_GROUP_NAME;
- name_end = end;
- }
- if (r == 0 && digit_count == 0) {
- r = ONIGERR_INVALID_GROUP_NAME;
- }
-
- if (r == 0) {
- *rback_num = onig_scan_unsigned_number(&pnum_head, name_end, enc);
- if (*rback_num < 0) return ONIGERR_TOO_BIG_NUMBER;
- else if (*rback_num == 0) {
- if (*num_type == IS_REL_NUM) {
- r = ONIGERR_INVALID_GROUP_NAME;
- goto err;
- }
- }
- *rback_num *= sign;
-
- *rname_end = name_end;
- *src = p;
- return 0;
- }
- else {
- err:
- onig_scan_env_set_error_string(env, r, *src, name_end);
- return r;
- }
-}
-#endif /* USE_NAMED_GROUP */
static void
CC_ESC_WARN(ScanEnv* env, UChar *c)
@@ -3521,7 +3499,7 @@ CLOSE_BRACKET_WITHOUT_ESC_WARN(ScanEnv* env, UChar* c)
static UChar*
find_str_position(OnigCodePoint s[], int n, UChar* from, UChar* to,
- UChar **next, OnigEncoding enc)
+ UChar **next, OnigEncoding enc)
{
int i;
OnigCodePoint x;
@@ -3550,7 +3528,7 @@ find_str_position(OnigCodePoint s[], int n, UChar* from, UChar* to,
static int
str_exist_check_with_esc(OnigCodePoint s[], int n, UChar* from, UChar* to,
- OnigCodePoint bad, OnigEncoding enc, OnigSyntaxType* syn)
+ OnigCodePoint bad, OnigEncoding enc, OnigSyntaxType* syn)
{
int i, in_esc;
OnigCodePoint x;
@@ -3699,7 +3677,7 @@ fetch_token_in_cc(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env)
if (num < 0) return ONIGERR_TOO_BIG_WIDE_CHAR_VALUE;
if (!PEND) {
c2 = PPEEK;
- if (ONIGENC_IS_CODE_DIGIT(enc, c2))
+ if (IS_CODE_DIGIT_ASCII(enc, c2))
return ONIGERR_TOO_LONG_WIDE_CHAR_VALUE;
}
@@ -3726,7 +3704,7 @@ fetch_token_in_cc(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env)
if (num < 0) return ONIGERR_TOO_BIG_WIDE_CHAR_VALUE;
if (!PEND) {
c2 = PPEEK;
- if (ONIGENC_IS_CODE_XDIGIT(enc, c2))
+ if (IS_CODE_XDIGIT_ASCII(enc, c2))
return ONIGERR_TOO_LONG_WIDE_CHAR_VALUE;
}
@@ -3956,13 +3934,25 @@ fetch_token(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env)
case 'b':
if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_B_WORD_BOUND)) break;
tok->type = TK_ANCHOR;
- tok->u.anchor = ANCHOR_WORD_BOUND;
+ tok->u.anchor = ANCHOR_WORD_BOUNDARY;
break;
case 'B':
if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_B_WORD_BOUND)) break;
tok->type = TK_ANCHOR;
- tok->u.anchor = ANCHOR_NOT_WORD_BOUND;
+ tok->u.anchor = ANCHOR_NO_WORD_BOUNDARY;
+ break;
+
+ case 'y':
+ if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP2_ESC_X_Y_GRAPHEME_CLUSTER)) break;
+ tok->type = TK_ANCHOR;
+ tok->u.anchor = ANCHOR_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY;
+ break;
+
+ case 'Y':
+ if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP2_ESC_X_Y_GRAPHEME_CLUSTER)) break;
+ tok->type = TK_ANCHOR;
+ tok->u.anchor = ANCHOR_NO_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY;
break;
#ifdef USE_WORD_BEGIN_END
@@ -4041,6 +4031,11 @@ fetch_token(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env)
tok->type = TK_TRUE_ANYCHAR;
break;
+ case 'X':
+ if (! IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_X_Y_GRAPHEME_CLUSTER)) break;
+ tok->type = TK_EXTENDED_GRAPHEME_CLUSTER;
+ break;
+
case 'A':
if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_AZ_BUF_ANCHOR)) break;
begin_buf:
@@ -4086,7 +4081,7 @@ fetch_token(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env)
num = scan_unsigned_octal_number(&p, end, 11, enc);
if (num < 0) return ONIGERR_TOO_BIG_WIDE_CHAR_VALUE;
if (!PEND) {
- if (ONIGENC_IS_CODE_DIGIT(enc, PPEEK))
+ if (IS_CODE_DIGIT_ASCII(enc, PPEEK))
return ONIGERR_TOO_LONG_WIDE_CHAR_VALUE;
}
@@ -4111,7 +4106,7 @@ fetch_token(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env)
num = scan_unsigned_hexadecimal_number(&p, end, 8, enc);
if (num < 0) return ONIGERR_TOO_BIG_WIDE_CHAR_VALUE;
if (!PEND) {
- if (ONIGENC_IS_CODE_XDIGIT(enc, PPEEK))
+ if (IS_CODE_XDIGIT_ASCII(enc, PPEEK))
return ONIGERR_TOO_LONG_WIDE_CHAR_VALUE;
}
@@ -4205,7 +4200,6 @@ fetch_token(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env)
}
break;
-#ifdef USE_NAMED_GROUP
case 'k':
if (!PEND && IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_K_NAMED_BACKREF)) {
PFETCH(c);
@@ -4277,7 +4271,6 @@ fetch_token(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env)
PUNFETCH;
}
break;
-#endif
#ifdef USE_CALL
case 'g':
@@ -4531,8 +4524,8 @@ fetch_token(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env)
static int
add_ctype_to_cc_by_range(CClassNode* cc, int ctype ARG_UNUSED, int not,
- OnigEncoding enc ARG_UNUSED,
- OnigCodePoint sb_out, const OnigCodePoint mbr[])
+ OnigEncoding enc ARG_UNUSED, OnigCodePoint sb_out,
+ const OnigCodePoint mbr[])
{
int i, r;
OnigCodePoint j;
@@ -4591,33 +4584,140 @@ add_ctype_to_cc_by_range(CClassNode* cc, int ctype ARG_UNUSED, int not,
if (r != 0) return r;
}
prev = ONIGENC_CODE_RANGE_TO(mbr, i) + 1;
+ if (prev == 0) goto end;
}
- if (prev < 0x7fffffff) {
- r = add_code_range_to_buf(&(cc->mbuf), prev, 0x7fffffff);
+
+ r = add_code_range_to_buf(&(cc->mbuf), prev, MAX_CODE_POINT);
+ if (r != 0) return r;
+ }
+
+ end:
+ return 0;
+}
+
+static int
+add_ctype_to_cc_by_range_limit(CClassNode* cc, int ctype ARG_UNUSED, int not,
+ OnigEncoding enc ARG_UNUSED,
+ OnigCodePoint sb_out,
+ const OnigCodePoint mbr[], OnigCodePoint limit)
+{
+ int i, r;
+ OnigCodePoint j;
+ OnigCodePoint from;
+ OnigCodePoint to;
+
+ int n = ONIGENC_CODE_RANGE_NUM(mbr);
+
+ if (not == 0) {
+ for (i = 0; i < n; i++) {
+ for (j = ONIGENC_CODE_RANGE_FROM(mbr, i);
+ j <= ONIGENC_CODE_RANGE_TO(mbr, i); j++) {
+ if (j > limit) goto end;
+ if (j >= sb_out) {
+ if (j > ONIGENC_CODE_RANGE_FROM(mbr, i)) {
+ to = ONIGENC_CODE_RANGE_TO(mbr, i);
+ if (to > limit) to = limit;
+ r = add_code_range_to_buf(&(cc->mbuf), j, to);
+ if (r != 0) return r;
+ i++;
+ }
+
+ goto sb_end;
+ }
+ BITSET_SET_BIT(cc->bs, j);
+ }
+ }
+
+ sb_end:
+ for ( ; i < n; i++) {
+ from = ONIGENC_CODE_RANGE_FROM(mbr, i);
+ to = ONIGENC_CODE_RANGE_TO(mbr, i);
+ if (from > limit) break;
+ if (to > limit) to = limit;
+ r = add_code_range_to_buf(&(cc->mbuf), from, to);
if (r != 0) return r;
}
}
+ else {
+ OnigCodePoint prev = 0;
+
+ for (i = 0; i < n; i++) {
+ from = ONIGENC_CODE_RANGE_FROM(mbr, i);
+ if (from > limit) {
+ for (j = prev; j < sb_out; j++) {
+ BITSET_SET_BIT(cc->bs, j);
+ }
+ goto sb_end2;
+ }
+ for (j = prev; j < from; j++) {
+ if (j >= sb_out) goto sb_end2;
+ BITSET_SET_BIT(cc->bs, j);
+ }
+ prev = ONIGENC_CODE_RANGE_TO(mbr, i);
+ if (prev > limit) prev = limit;
+ prev++;
+ if (prev == 0) goto end;
+ }
+ for (j = prev; j < sb_out; j++) {
+ BITSET_SET_BIT(cc->bs, j);
+ }
+
+ sb_end2:
+ prev = sb_out;
+
+ for (i = 0; i < n; i++) {
+ from = ONIGENC_CODE_RANGE_FROM(mbr, i);
+ if (from > limit) goto last;
+
+ if (prev < from) {
+ r = add_code_range_to_buf(&(cc->mbuf), prev, from - 1);
+ if (r != 0) return r;
+ }
+ prev = ONIGENC_CODE_RANGE_TO(mbr, i);
+ if (prev > limit) prev = limit;
+ prev++;
+ if (prev == 0) goto end;
+ }
+
+ last:
+ r = add_code_range_to_buf(&(cc->mbuf), prev, MAX_CODE_POINT);
+ if (r != 0) return r;
+ }
+ end:
return 0;
}
static int
add_ctype_to_cc(CClassNode* cc, int ctype, int not, ScanEnv* env)
{
+#define ASCII_LIMIT 127
+
int c, r;
+ int ascii_mode;
const OnigCodePoint *ranges;
+ OnigCodePoint limit;
OnigCodePoint sb_out;
OnigEncoding enc = env->enc;
+ ascii_mode = IS_ASCII_MODE_CTYPE_OPTION(ctype, env->options);
+
r = ONIGENC_GET_CTYPE_CODE_RANGE(enc, ctype, &sb_out, &ranges);
if (r == 0) {
- return add_ctype_to_cc_by_range(cc, ctype, not, env->enc, sb_out, ranges);
+ if (ascii_mode == 0)
+ r = add_ctype_to_cc_by_range(cc, ctype, not, env->enc, sb_out, ranges);
+ else
+ r = add_ctype_to_cc_by_range_limit(cc, ctype, not, env->enc, sb_out,
+ ranges, ASCII_LIMIT);
+ return r;
}
else if (r != ONIG_NO_SUPPORT_CONFIG) {
return r;
}
r = 0;
+ limit = ascii_mode ? ASCII_LIMIT : SINGLE_BYTE_SIZE;
+
switch (ctype) {
case ONIGENC_CTYPE_ALPHA:
case ONIGENC_CTYPE_BLANK:
@@ -4631,14 +4731,18 @@ add_ctype_to_cc(CClassNode* cc, int ctype, int not, ScanEnv* env)
case ONIGENC_CTYPE_ASCII:
case ONIGENC_CTYPE_ALNUM:
if (not != 0) {
- for (c = 0; c < SINGLE_BYTE_SIZE; c++) {
+ for (c = 0; c < limit; c++) {
if (! ONIGENC_IS_CODE_CTYPE(enc, (OnigCodePoint )c, ctype))
BITSET_SET_BIT(cc->bs, c);
}
+ for (c = limit; c < SINGLE_BYTE_SIZE; c++) {
+ BITSET_SET_BIT(cc->bs, c);
+ }
+
ADD_ALL_MULTI_BYTE_RANGE(enc, cc->mbuf);
}
else {
- for (c = 0; c < SINGLE_BYTE_SIZE; c++) {
+ for (c = 0; c < limit; c++) {
if (ONIGENC_IS_CODE_CTYPE(enc, (OnigCodePoint )c, ctype))
BITSET_SET_BIT(cc->bs, c);
}
@@ -4647,34 +4751,25 @@ add_ctype_to_cc(CClassNode* cc, int ctype, int not, ScanEnv* env)
case ONIGENC_CTYPE_GRAPH:
case ONIGENC_CTYPE_PRINT:
+ case ONIGENC_CTYPE_WORD:
if (not != 0) {
- for (c = 0; c < SINGLE_BYTE_SIZE; c++) {
- if (! ONIGENC_IS_CODE_CTYPE(enc, (OnigCodePoint )c, ctype))
+ for (c = 0; c < limit; c++) {
+ if (ONIGENC_CODE_TO_MBCLEN(enc, c) > 0 /* check invalid code point */
+ && ! ONIGENC_IS_CODE_CTYPE(enc, (OnigCodePoint )c, ctype))
BITSET_SET_BIT(cc->bs, c);
}
- }
- else {
- for (c = 0; c < SINGLE_BYTE_SIZE; c++) {
- if (ONIGENC_IS_CODE_CTYPE(enc, (OnigCodePoint )c, ctype))
+ for (c = limit; c < SINGLE_BYTE_SIZE; c++) {
+ if (ONIGENC_CODE_TO_MBCLEN(enc, c) > 0)
BITSET_SET_BIT(cc->bs, c);
}
- ADD_ALL_MULTI_BYTE_RANGE(enc, cc->mbuf);
- }
- break;
-
- case ONIGENC_CTYPE_WORD:
- if (not == 0) {
- for (c = 0; c < SINGLE_BYTE_SIZE; c++) {
- if (IS_CODE_SB_WORD(enc, c)) BITSET_SET_BIT(cc->bs, c);
- }
- ADD_ALL_MULTI_BYTE_RANGE(enc, cc->mbuf);
}
else {
- for (c = 0; c < SINGLE_BYTE_SIZE; c++) {
- if ((ONIGENC_CODE_TO_MBCLEN(enc, c) > 0) /* check invalid code point */
- && ! ONIGENC_IS_CODE_WORD(enc, c))
+ for (c = 0; c < limit; c++) {
+ if (ONIGENC_IS_CODE_CTYPE(enc, (OnigCodePoint )c, ctype))
BITSET_SET_BIT(cc->bs, c);
}
+ if (ascii_mode == 0)
+ ADD_ALL_MULTI_BYTE_RANGE(enc, cc->mbuf);
}
break;
@@ -4792,8 +4887,7 @@ fetch_char_property_to_ctype(UChar** src, UChar* end, ScanEnv* env)
}
static int
-parse_char_property(Node** np, OnigToken* tok, UChar** src, UChar* end,
- ScanEnv* env)
+parse_char_property(Node** np, OnigToken* tok, UChar** src, UChar* end, ScanEnv* env)
{
int r, ctype;
CClassNode* cc;
@@ -4827,7 +4921,7 @@ enum CCVALTYPE {
static int
next_state_class(CClassNode* cc, OnigCodePoint* vs, enum CCVALTYPE* type,
- enum CCSTATE* state, ScanEnv* env)
+ enum CCSTATE* state, ScanEnv* env)
{
int r;
@@ -4850,9 +4944,9 @@ next_state_class(CClassNode* cc, OnigCodePoint* vs, enum CCVALTYPE* type,
static int
next_state_val(CClassNode* cc, OnigCodePoint *from, OnigCodePoint to,
- int* from_israw, int to_israw,
- enum CCVALTYPE intype, enum CCVALTYPE* type,
- enum CCSTATE* state, ScanEnv* env)
+ int* from_israw, int to_israw,
+ enum CCVALTYPE intype, enum CCVALTYPE* type,
+ enum CCSTATE* state, ScanEnv* env)
{
int r;
@@ -4921,7 +5015,7 @@ next_state_val(CClassNode* cc, OnigCodePoint *from, OnigCodePoint to,
static int
code_exist_check(OnigCodePoint c, UChar* from, UChar* end, int ignore_escaped,
- ScanEnv* env)
+ ScanEnv* env)
{
int in_esc;
OnigCodePoint code;
@@ -5282,19 +5376,17 @@ parse_char_class(Node** np, OnigToken* tok, UChar** src, UChar* end,
}
static int parse_subexp(Node** top, OnigToken* tok, int term,
- UChar** src, UChar* end, ScanEnv* env);
+ UChar** src, UChar* end, ScanEnv* env);
static int
parse_enclosure(Node** np, OnigToken* tok, int term, UChar** src, UChar* end,
- ScanEnv* env)
+ ScanEnv* env)
{
int r, num;
Node *target;
OnigOptionType option;
OnigCodePoint c;
-#ifdef USE_NAMED_GROUP
int list_capture;
-#endif
OnigEncoding enc = env->enc;
UChar* p = *src;
@@ -5322,16 +5414,15 @@ parse_enclosure(Node** np, OnigToken* tok, int term, UChar** src, UChar* end,
break;
case '=':
- *np = onig_node_new_anchor(ANCHOR_PREC_READ);
+ *np = onig_node_new_anchor(ANCHOR_PREC_READ, 0);
break;
case '!': /* preceding read */
- *np = onig_node_new_anchor(ANCHOR_PREC_READ_NOT);
+ *np = onig_node_new_anchor(ANCHOR_PREC_READ_NOT, 0);
break;
case '>': /* (?>...) stop backtrack */
*np = node_new_enclosure(ENCLOSURE_STOP_BACKTRACK);
break;
-#ifdef USE_NAMED_GROUP
case '\'':
if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_QMARK_LT_NAMED_GROUP)) {
goto named_group1;
@@ -5339,16 +5430,14 @@ parse_enclosure(Node** np, OnigToken* tok, int term, UChar** src, UChar* end,
else
return ONIGERR_UNDEFINED_GROUP_OPTION;
break;
-#endif
case '<': /* look behind (?<=...), (?<!...) */
if (PEND) return ONIGERR_END_PATTERN_WITH_UNMATCHED_PARENTHESIS;
PFETCH(c);
if (c == '=')
- *np = onig_node_new_anchor(ANCHOR_LOOK_BEHIND);
+ *np = onig_node_new_anchor(ANCHOR_LOOK_BEHIND, 0);
else if (c == '!')
- *np = onig_node_new_anchor(ANCHOR_LOOK_BEHIND_NOT);
-#ifdef USE_NAMED_GROUP
+ *np = onig_node_new_anchor(ANCHOR_LOOK_BEHIND_NOT, 0);
else {
if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_QMARK_LT_NAMED_GROUP)) {
UChar *name;
@@ -5385,11 +5474,6 @@ parse_enclosure(Node** np, OnigToken* tok, int term, UChar** src, UChar* end,
return ONIGERR_UNDEFINED_GROUP_OPTION;
}
}
-#else
- else {
- return ONIGERR_UNDEFINED_GROUP_OPTION;
- }
-#endif
break;
case '~':
@@ -5406,10 +5490,9 @@ parse_enclosure(Node** np, OnigToken* tok, int term, UChar** src, UChar* end,
if (PEND) return ONIGERR_END_PATTERN_IN_GROUP;
head_bar = 1;
- if (PPEEK_IS(')')) { // (?~|) : absent clear
+ if (PPEEK_IS(')')) { // (?~|) : range clear
PINC;
- r = node_new_update_var_gimmick(np, UPDATE_VAR_RIGHT_RANGE_INIT,
- 0, env);
+ r = make_range_clear(np, env);
if (r != 0) return r;
goto end;
}
@@ -5471,7 +5554,7 @@ parse_enclosure(Node** np, OnigToken* tok, int term, UChar** src, UChar* end,
PFETCH(c);
if (PEND) return ONIGERR_END_PATTERN_IN_GROUP;
- if (ONIGENC_IS_CODE_DIGIT(enc, c)
+ if (IS_CODE_DIGIT_ASCII(enc, c)
|| c == '-' || c == '+' || c == '<' || c == '\'') {
UChar* name_end;
int back_num;
@@ -5647,7 +5730,6 @@ parse_enclosure(Node** np, OnigToken* tok, int term, UChar** src, UChar* end,
case '@':
if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_ATMARK_CAPTURE_HISTORY)) {
-#ifdef USE_NAMED_GROUP
if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_QMARK_LT_NAMED_GROUP)) {
PFETCH(c);
if (c == '<' || c == '\'') {
@@ -5656,7 +5738,7 @@ parse_enclosure(Node** np, OnigToken* tok, int term, UChar** src, UChar* end,
}
PUNFETCH;
}
-#endif
+
*np = node_new_memory(0);
CHECK_NULL_RETURN_MEMERR(*np);
num = scan_env_add_mem_entry(env);
@@ -5678,6 +5760,7 @@ parse_enclosure(Node** np, OnigToken* tok, int term, UChar** src, UChar* end,
case 'p':
#endif
case '-': case 'i': case 'm': case 's': case 'x':
+ case 'W': case 'D': case 'S': case 'P':
{
int neg = 0;
@@ -5713,6 +5796,11 @@ parse_enclosure(Node** np, OnigToken* tok, int term, UChar** src, UChar* end,
OPTION_NEGATE(option, ONIG_OPTION_MULTILINE|ONIG_OPTION_SINGLELINE, neg);
break;
#endif
+ case 'W': OPTION_NEGATE(option, ONIG_OPTION_WORD_IS_ASCII, neg); break;
+ case 'D': OPTION_NEGATE(option, ONIG_OPTION_DIGIT_IS_ASCII, neg); break;
+ case 'S': OPTION_NEGATE(option, ONIG_OPTION_SPACE_IS_ASCII, neg); break;
+ case 'P': OPTION_NEGATE(option, ONIG_OPTION_POSIX_IS_ASCII, neg); break;
+
default:
return ONIGERR_UNDEFINED_GROUP_OPTION;
}
@@ -5918,8 +6006,7 @@ typedef struct {
} IApplyCaseFoldArg;
static int
-i_apply_case_fold(OnigCodePoint from, OnigCodePoint to[],
- int to_len, void* arg)
+i_apply_case_fold(OnigCodePoint from, OnigCodePoint to[], int to_len, void* arg)
{
IApplyCaseFoldArg* iarg;
ScanEnv* env;
@@ -5998,8 +6085,8 @@ i_apply_case_fold(OnigCodePoint from, OnigCodePoint to[],
}
static int
-parse_exp(Node** np, OnigToken* tok, int term,
- UChar** src, UChar* end, ScanEnv* env)
+parse_exp(Node** np, OnigToken* tok, int term, UChar** src, UChar* end,
+ ScanEnv* env)
{
int r, len, group = 0;
Node* qn;
@@ -6145,7 +6232,7 @@ parse_exp(Node** np, OnigToken* tok, int term,
{
switch (tok->u.prop.ctype) {
case ONIGENC_CTYPE_WORD:
- *np = node_new_ctype(tok->u.prop.ctype, tok->u.prop.not);
+ *np = node_new_ctype(tok->u.prop.ctype, tok->u.prop.not, env->options);
CHECK_NULL_RETURN_MEMERR(*np);
break;
@@ -6253,7 +6340,11 @@ parse_exp(Node** np, OnigToken* tok, int term,
#endif
case TK_ANCHOR:
- *np = onig_node_new_anchor(tok->u.anchor);
+ {
+ int ascii_mode =
+ IS_WORD_ASCII(env->options) && IS_WORD_ANCHOR_TYPE(tok->u.anchor) ? 1 : 0;
+ *np = onig_node_new_anchor(tok->u.anchor, ascii_mode);
+ }
break;
case TK_OP_REPEAT:
@@ -6289,6 +6380,11 @@ parse_exp(Node** np, OnigToken* tok, int term,
if (r < 0) return r;
break;
+ case TK_EXTENDED_GRAPHEME_CLUSTER:
+ r = make_extended_grapheme_cluster(np, env);
+ if (r < 0) return r;
+ break;
+
default:
return ONIGERR_PARSER_BUG;
break;
@@ -6356,8 +6452,8 @@ parse_exp(Node** np, OnigToken* tok, int term,
}
static int
-parse_branch(Node** top, OnigToken* tok, int term,
- UChar** src, UChar* end, ScanEnv* env)
+parse_branch(Node** top, OnigToken* tok, int term, UChar** src, UChar* end,
+ ScanEnv* env)
{
int r;
Node *node, **headp;
@@ -6399,8 +6495,8 @@ parse_branch(Node** top, OnigToken* tok, int term,
/* term_tok: TK_EOT or TK_SUBEXP_CLOSE */
static int
-parse_subexp(Node** top, OnigToken* tok, int term,
- UChar** src, UChar* end, ScanEnv* env)
+parse_subexp(Node** top, OnigToken* tok, int term, UChar** src, UChar* end,
+ ScanEnv* env)
{
int r;
Node *node, **headp;
@@ -6492,9 +6588,7 @@ onig_parse_tree(Node** root, const UChar* pattern, const UChar* end,
int r;
UChar* p;
-#ifdef USE_NAMED_GROUP
names_clear(reg);
-#endif
scan_env_clear(env);
env->options = reg->options;
@@ -6531,7 +6625,7 @@ onig_parse_tree(Node** root, const UChar* pattern, const UChar* end,
extern void
onig_scan_env_set_error_string(ScanEnv* env, int ecode ARG_UNUSED,
- UChar* arg, UChar* arg_end)
+ UChar* arg, UChar* arg_end)
{
env->error = arg;
env->error_end = arg_end;
diff --git a/src/regparse.h b/src/regparse.h
index b7260ea..57219a4 100644
--- a/src/regparse.h
+++ b/src/regparse.h
@@ -100,10 +100,12 @@ enum GimmickType {
#define ANCHOR_ANYCHAR_STAR_MASK (ANCHOR_ANYCHAR_STAR | ANCHOR_ANYCHAR_STAR_ML)
#define ANCHOR_END_BUF_MASK (ANCHOR_END_BUF | ANCHOR_SEMI_END_BUF)
-#define ENCLOSURE_MEMORY (1<<0)
-#define ENCLOSURE_OPTION (1<<1)
-#define ENCLOSURE_STOP_BACKTRACK (1<<2)
-#define ENCLOSURE_IF_ELSE (1<<3)
+enum EnclosureType {
+ ENCLOSURE_MEMORY = 0,
+ ENCLOSURE_OPTION = 1,
+ ENCLOSURE_STOP_BACKTRACK = 2,
+ ENCLOSURE_IF_ELSE = 3,
+};
#define NODE_STRING_MARGIN 16
#define NODE_STRING_BUF_SIZE 24 /* sizeof(CClassNode) - sizeof(int)*4 */
@@ -125,7 +127,7 @@ enum GimmickType {
(((node)->u.str.flag & STRING_DONT_GET_OPT_INFO) != 0)
#define BACKREFS_P(br) \
- (IS_NOT_NULL((br)->back_dynamic) ? (br)->back_dynamic : (br)->back_static);
+ (IS_NOT_NULL((br)->back_dynamic) ? (br)->back_dynamic : (br)->back_static)
#define QUANT_BODY_IS_NOT_EMPTY 0
#define QUANT_BODY_IS_EMPTY 1
@@ -233,7 +235,7 @@ typedef struct {
int status;
struct _Node* body;
- int type;
+ enum EnclosureType type;
union {
struct {
int regnum;
@@ -301,6 +303,7 @@ typedef struct {
int type;
int char_len;
+ int ascii_mode;
} AnchorNode;
typedef struct {
@@ -318,6 +321,7 @@ typedef struct {
int ctype;
int not;
OnigOptionType options;
+ int ascii_mode;
} CtypeNode;
typedef struct {
@@ -392,9 +396,7 @@ typedef struct {
int has_call_zero;
#endif
int num_mem;
-#ifdef USE_NAMED_GROUP
int num_named;
-#endif
int mem_alloc;
MemEnv mem_env_static[SCANENV_MEMENV_SIZE];
MemEnv* mem_env_dynamic;
@@ -417,13 +419,11 @@ typedef struct {
#define IS_SYNTAX_OP2(syn, opm) (((syn)->op2 & (opm)) != 0)
#define IS_SYNTAX_BV(syn, bvm) (((syn)->behavior & (bvm)) != 0)
-#ifdef USE_NAMED_GROUP
typedef struct {
int new_val;
} GroupNumRemap;
extern int onig_renumber_name_table P_((regex_t* reg, GroupNumRemap* map));
-#endif
extern int onig_strncmp P_((const UChar* s1, const UChar* s2, int n));
extern void onig_strcpy P_((UChar* dest, const UChar* src, const UChar* end));
@@ -435,7 +435,7 @@ extern int onig_node_str_cat P_((Node* node, const UChar* s, const UChar* end
extern int onig_node_str_set P_((Node* node, const UChar* s, const UChar* end));
extern void onig_node_free P_((Node* node));
extern Node* onig_node_new_enclosure P_((int type));
-extern Node* onig_node_new_anchor P_((int type));
+extern Node* onig_node_new_anchor P_((int type, int ascii_mode));
extern Node* onig_node_new_str P_((const UChar* s, const UChar* end));
extern Node* onig_node_new_list P_((Node* left, Node* right));
extern Node* onig_node_list_add P_((Node* list, Node* x));
@@ -448,9 +448,7 @@ extern int onig_is_code_in_cc P_((OnigEncoding enc, OnigCodePoint code, CClas
extern OnigLen onig_get_tiny_min_len(Node* node, unsigned int inhibit_node_types, int* invalid_node);
#ifdef ONIG_DEBUG
-#ifdef USE_NAMED_GROUP
extern int onig_print_names(FILE*, regex_t*);
#endif
-#endif
#endif /* REGPARSE_H */
diff --git a/src/regsyntax.c b/src/regsyntax.c
index 6833e1d..83989b6 100644
--- a/src/regsyntax.c
+++ b/src/regsyntax.c
@@ -176,6 +176,7 @@ OnigSyntaxType OnigSyntaxPerl = {
ONIG_SYN_OP2_QMARK_GROUP_EFFECT | ONIG_SYN_OP2_OPTION_PERL |
ONIG_SYN_OP2_QMARK_LPAREN_IF_ELSE |
ONIG_SYN_OP2_QMARK_TILDE_ABSENT_GROUP |
+ ONIG_SYN_OP2_ESC_X_Y_GRAPHEME_CLUSTER |
ONIG_SYN_OP2_ESC_P_BRACE_CHAR_PROPERTY |
ONIG_SYN_OP2_ESC_P_BRACE_CIRCUMFLEX_NOT |
ONIG_SYN_OP2_ESC_CAPITAL_K_KEEP |
@@ -206,6 +207,7 @@ OnigSyntaxType OnigSyntaxPerl_NG = {
ONIG_SYN_OP2_QMARK_GROUP_EFFECT | ONIG_SYN_OP2_OPTION_PERL |
ONIG_SYN_OP2_QMARK_LPAREN_IF_ELSE |
ONIG_SYN_OP2_QMARK_TILDE_ABSENT_GROUP |
+ ONIG_SYN_OP2_ESC_X_Y_GRAPHEME_CLUSTER |
ONIG_SYN_OP2_ESC_P_BRACE_CHAR_PROPERTY |
ONIG_SYN_OP2_ESC_P_BRACE_CIRCUMFLEX_NOT |
ONIG_SYN_OP2_QMARK_LT_NAMED_GROUP |
diff --git a/src/unicode.c b/src/unicode.c
index 5b6b3e7..65de74a 100644
--- a/src/unicode.c
+++ b/src/unicode.c
@@ -664,3 +664,203 @@ onigenc_unicode_get_case_fold_codes_by_str(OnigEncoding enc,
return n;
}
+
+
+#ifdef USE_UNICODE_EXTENDED_GRAPHEME_CLUSTER
+
+enum EGCB_BREAK_TYPE {
+ EGCB_NOT_BREAK = 0,
+ EGCB_BREAK = 1,
+ EGCB_BREAK_UNDEF_E_MODIFIER = 2,
+ EGCB_BREAK_UNDEF_RI_RI = 3
+};
+
+enum EGCB_TYPE {
+ EGCB_Other = 0,
+ EGCB_CR = 1,
+ EGCB_LF = 2,
+ EGCB_Control = 3,
+ EGCB_Extend = 4,
+ EGCB_Prepend = 5,
+ EGCB_Regional_Indicator = 6,
+ EGCB_SpacingMark = 7,
+ EGCB_ZWJ = 8,
+ EGCB_E_Base = 9,
+ EGCB_E_Base_GAZ = 10,
+ EGCB_E_Modifier = 11,
+ EGCB_Glue_After_Zwj = 12,
+ EGCB_L = 13,
+ EGCB_LV = 14,
+ EGCB_LVT = 15,
+ EGCB_T = 16,
+ EGCB_V = 17
+};
+
+typedef struct {
+ OnigCodePoint start;
+ OnigCodePoint end;
+ enum EGCB_TYPE type;
+} EGCB_RANGE_TYPE;
+
+#include "unicode_egcb_data.c"
+
+static enum EGCB_TYPE
+egcb_get_type(OnigCodePoint code)
+{
+ OnigCodePoint low, high, x;
+ enum EGCB_TYPE type;
+
+ for (low = 0, high = EGCB_RANGE_NUM; low < high; ) {
+ x = (low + high) >> 1;
+ if (code > EGCB_RANGES[x].end)
+ low = x + 1;
+ else
+ high = x;
+ }
+
+ type = (low < EGCB_RANGE_NUM && code >= EGCB_RANGES[low].start) ?
+ EGCB_RANGES[low].type : EGCB_Other;
+ return type;
+}
+
+#define IS_CONTROL_CR_LF(code) ((code) <= EGCB_Control && (code) >= EGCB_CR)
+#define IS_HANGUL(code) ((code) >= EGCB_L)
+
+/* GB1 and GB2 are outside of this function. */
+static enum EGCB_BREAK_TYPE
+unicode_egcb_is_break_2code(OnigCodePoint from_code, OnigCodePoint to_code)
+{
+ enum EGCB_TYPE from;
+ enum EGCB_TYPE to;
+
+ from = egcb_get_type(from_code);
+ to = egcb_get_type(to_code);
+
+ /* short cut */
+ if (from == 0 && to == 0) goto GB999;
+
+ /* GB3 */
+ if (from == EGCB_CR && to == EGCB_LF) return EGCB_NOT_BREAK;
+ /* GB4 */
+ if (IS_CONTROL_CR_LF(from)) return EGCB_BREAK;
+ /* GB5 */
+ if (IS_CONTROL_CR_LF(to)) return EGCB_BREAK;
+
+ if (IS_HANGUL(from) && IS_HANGUL(to)) {
+ /* GB6 */
+ if (from == EGCB_L && to != EGCB_T) return EGCB_NOT_BREAK;
+ /* GB7 */
+ if ((from == EGCB_LV || from == EGCB_V)
+ && (to == EGCB_V || to == EGCB_T)) return EGCB_NOT_BREAK;
+
+ /* GB8 */
+ if ((from == EGCB_LVT || from == EGCB_T) && (to == EGCB_T))
+ return EGCB_NOT_BREAK;
+
+ goto GB999;
+ }
+
+ /* GB9 */
+ if (to == EGCB_Extend || to == EGCB_ZWJ) return EGCB_NOT_BREAK;
+
+ /* GB9a */
+ if (to == EGCB_SpacingMark) return EGCB_NOT_BREAK;
+ /* GB9b */
+ if (from == EGCB_Prepend) return EGCB_NOT_BREAK;
+
+ /* GB10 */
+ if (to == EGCB_E_Modifier) {
+ if (from == EGCB_E_Base || from == EGCB_E_Base_GAZ) return EGCB_NOT_BREAK;
+ if (from == EGCB_Extend) return EGCB_BREAK_UNDEF_E_MODIFIER;
+ goto GB999;
+ }
+
+ /* GB11 */
+ if (from == EGCB_ZWJ) {
+ if (to == EGCB_Glue_After_Zwj || to == EGCB_E_Base_GAZ) return EGCB_NOT_BREAK;
+ goto GB999;
+ }
+
+ /* GB12, GB13 */
+ if (from == EGCB_Regional_Indicator && to == EGCB_Regional_Indicator) {
+ return EGCB_BREAK_UNDEF_RI_RI;
+ }
+
+ GB999:
+ return EGCB_BREAK;
+}
+
+#endif /* USE_UNICODE_EXTENDED_GRAPHEME_CLUSTER */
+
+extern int
+onigenc_egcb_is_break_position(OnigEncoding enc, UChar* p, UChar* prev,
+ const UChar* start, const UChar* end)
+{
+ OnigCodePoint from;
+ OnigCodePoint to;
+#ifdef USE_UNICODE_EXTENDED_GRAPHEME_CLUSTER
+ enum EGCB_BREAK_TYPE btype;
+ enum EGCB_TYPE type;
+#endif
+
+ /* GB1 and GB2 */
+ if (p == start) return 1;
+ if (p == end) return 1;
+
+ if (IS_NULL(prev)) {
+ prev = onigenc_get_prev_char_head(enc, start, p);
+ if (IS_NULL(prev)) return 1;
+ }
+
+ from = ONIGENC_MBC_TO_CODE(enc, prev, end);
+ to = ONIGENC_MBC_TO_CODE(enc, p, end);
+
+#ifdef USE_UNICODE_EXTENDED_GRAPHEME_CLUSTER
+ if (! ONIGENC_IS_UNICODE_ENCODING(enc)) {
+ if (from == 0x000d && to == 0x000a) return 0;
+ else return 1;
+ }
+
+ btype = unicode_egcb_is_break_2code(from, to);
+ switch (btype) {
+ case EGCB_NOT_BREAK:
+ return 0;
+ break;
+ case EGCB_BREAK:
+ return 1;
+ break;
+
+ case EGCB_BREAK_UNDEF_E_MODIFIER:
+ while ((prev = onigenc_get_prev_char_head(enc, start, prev)) != NULL) {
+ from = ONIGENC_MBC_TO_CODE(enc, prev, end);
+ type = egcb_get_type(from);
+ if (type == EGCB_E_Base || type == EGCB_E_Base_GAZ)
+ return 0;
+ if (type != EGCB_Extend)
+ break;
+ }
+ break;
+
+ case EGCB_BREAK_UNDEF_RI_RI:
+ {
+ int n = 0;
+ while ((prev = onigenc_get_prev_char_head(enc, start, prev)) != NULL) {
+ from = ONIGENC_MBC_TO_CODE(enc, prev, end);
+ type = egcb_get_type(from);
+ if (type != EGCB_Regional_Indicator)
+ break;
+
+ n++;
+ }
+ if ((n % 2) == 0) return 0;
+ }
+ break;
+ }
+
+ return 1;
+
+#else
+ if (from == 0x000d && to == 0x000a) return 0;
+ else return 1;
+#endif /* USE_UNICODE_EXTENDED_GRAPHEME_CLUSTER */
+}
diff --git a/src/unicode_egcb_data.c b/src/unicode_egcb_data.c
new file mode 100644
index 0000000..144d9b3
--- /dev/null
+++ b/src/unicode_egcb_data.c
@@ -0,0 +1,1382 @@
+/* Copyright (c) 2017 K.Kosako */
+/* Generated by make_gcb_data.py. */
+
+#define GRAPHEME_BREAK_PROPERTY_VERSION 10_0_0
+
+/*
+CR
+Control
+E_Base
+E_Base_GAZ
+E_Modifier
+Extend
+Glue_After_Zwj
+L
+LF
+LV
+LVT
+Prepend
+Regional_Indicator
+SpacingMark
+T
+V
+ZWJ
+*/
+
+static int EGCB_RANGE_NUM = 1354;
+static EGCB_RANGE_TYPE EGCB_RANGES[] = {
+ {0x000000, 0x000009, EGCB_Control },
+ {0x00000a, 0x00000a, EGCB_LF },
+ {0x00000b, 0x00000c, EGCB_Control },
+ {0x00000d, 0x00000d, EGCB_CR },
+ {0x00000e, 0x00001f, EGCB_Control },
+ {0x00007f, 0x00009f, EGCB_Control },
+ {0x0000ad, 0x0000ad, EGCB_Control },
+ {0x000300, 0x00036f, EGCB_Extend },
+ {0x000483, 0x000489, EGCB_Extend },
+ {0x000591, 0x0005bd, EGCB_Extend },
+ {0x0005bf, 0x0005bf, EGCB_Extend },
+ {0x0005c1, 0x0005c2, EGCB_Extend },
+ {0x0005c4, 0x0005c5, EGCB_Extend },
+ {0x0005c7, 0x0005c7, EGCB_Extend },
+ {0x000600, 0x000605, EGCB_Prepend },
+ {0x000610, 0x00061a, EGCB_Extend },
+ {0x00061c, 0x00061c, EGCB_Control },
+ {0x00064b, 0x00065f, EGCB_Extend },
+ {0x000670, 0x000670, EGCB_Extend },
+ {0x0006d6, 0x0006dc, EGCB_Extend },
+ {0x0006dd, 0x0006dd, EGCB_Prepend },
+ {0x0006df, 0x0006e4, EGCB_Extend },
+ {0x0006e7, 0x0006e8, EGCB_Extend },
+ {0x0006ea, 0x0006ed, EGCB_Extend },
+ {0x00070f, 0x00070f, EGCB_Prepend },
+ {0x000711, 0x000711, EGCB_Extend },
+ {0x000730, 0x00074a, EGCB_Extend },
+ {0x0007a6, 0x0007b0, EGCB_Extend },
+ {0x0007eb, 0x0007f3, EGCB_Extend },
+ {0x000816, 0x000819, EGCB_Extend },
+ {0x00081b, 0x000823, EGCB_Extend },
+ {0x000825, 0x000827, EGCB_Extend },
+ {0x000829, 0x00082d, EGCB_Extend },
+ {0x000859, 0x00085b, EGCB_Extend },
+ {0x0008d4, 0x0008e1, EGCB_Extend },
+ {0x0008e2, 0x0008e2, EGCB_Prepend },
+ {0x0008e3, 0x000902, EGCB_Extend },
+ {0x000903, 0x000903, EGCB_SpacingMark },
+ {0x00093a, 0x00093a, EGCB_Extend },
+ {0x00093b, 0x00093b, EGCB_SpacingMark },
+ {0x00093c, 0x00093c, EGCB_Extend },
+ {0x00093e, 0x000940, EGCB_SpacingMark },
+ {0x000941, 0x000948, EGCB_Extend },
+ {0x000949, 0x00094c, EGCB_SpacingMark },
+ {0x00094d, 0x00094d, EGCB_Extend },
+ {0x00094e, 0x00094f, EGCB_SpacingMark },
+ {0x000951, 0x000957, EGCB_Extend },
+ {0x000962, 0x000963, EGCB_Extend },
+ {0x000981, 0x000981, EGCB_Extend },
+ {0x000982, 0x000983, EGCB_SpacingMark },
+ {0x0009bc, 0x0009bc, EGCB_Extend },
+ {0x0009be, 0x0009be, EGCB_Extend },
+ {0x0009bf, 0x0009c0, EGCB_SpacingMark },
+ {0x0009c1, 0x0009c4, EGCB_Extend },
+ {0x0009c7, 0x0009c8, EGCB_SpacingMark },
+ {0x0009cb, 0x0009cc, EGCB_SpacingMark },
+ {0x0009cd, 0x0009cd, EGCB_Extend },
+ {0x0009d7, 0x0009d7, EGCB_Extend },
+ {0x0009e2, 0x0009e3, EGCB_Extend },
+ {0x000a01, 0x000a02, EGCB_Extend },
+ {0x000a03, 0x000a03, EGCB_SpacingMark },
+ {0x000a3c, 0x000a3c, EGCB_Extend },
+ {0x000a3e, 0x000a40, EGCB_SpacingMark },
+ {0x000a41, 0x000a42, EGCB_Extend },
+ {0x000a47, 0x000a48, EGCB_Extend },
+ {0x000a4b, 0x000a4d, EGCB_Extend },
+ {0x000a51, 0x000a51, EGCB_Extend },
+ {0x000a70, 0x000a71, EGCB_Extend },
+ {0x000a75, 0x000a75, EGCB_Extend },
+ {0x000a81, 0x000a82, EGCB_Extend },
+ {0x000a83, 0x000a83, EGCB_SpacingMark },
+ {0x000abc, 0x000abc, EGCB_Extend },
+ {0x000abe, 0x000ac0, EGCB_SpacingMark },
+ {0x000ac1, 0x000ac5, EGCB_Extend },
+ {0x000ac7, 0x000ac8, EGCB_Extend },
+ {0x000ac9, 0x000ac9, EGCB_SpacingMark },
+ {0x000acb, 0x000acc, EGCB_SpacingMark },
+ {0x000acd, 0x000acd, EGCB_Extend },
+ {0x000ae2, 0x000ae3, EGCB_Extend },
+ {0x000afa, 0x000aff, EGCB_Extend },
+ {0x000b01, 0x000b01, EGCB_Extend },
+ {0x000b02, 0x000b03, EGCB_SpacingMark },
+ {0x000b3c, 0x000b3c, EGCB_Extend },
+ {0x000b3e, 0x000b3f, EGCB_Extend },
+ {0x000b40, 0x000b40, EGCB_SpacingMark },
+ {0x000b41, 0x000b44, EGCB_Extend },
+ {0x000b47, 0x000b48, EGCB_SpacingMark },
+ {0x000b4b, 0x000b4c, EGCB_SpacingMark },
+ {0x000b4d, 0x000b4d, EGCB_Extend },
+ {0x000b56, 0x000b57, EGCB_Extend },
+ {0x000b62, 0x000b63, EGCB_Extend },
+ {0x000b82, 0x000b82, EGCB_Extend },
+ {0x000bbe, 0x000bbe, EGCB_Extend },
+ {0x000bbf, 0x000bbf, EGCB_SpacingMark },
+ {0x000bc0, 0x000bc0, EGCB_Extend },
+ {0x000bc1, 0x000bc2, EGCB_SpacingMark },
+ {0x000bc6, 0x000bc8, EGCB_SpacingMark },
+ {0x000bca, 0x000bcc, EGCB_SpacingMark },
+ {0x000bcd, 0x000bcd, EGCB_Extend },
+ {0x000bd7, 0x000bd7, EGCB_Extend },
+ {0x000c00, 0x000c00, EGCB_Extend },
+ {0x000c01, 0x000c03, EGCB_SpacingMark },
+ {0x000c3e, 0x000c40, EGCB_Extend },
+ {0x000c41, 0x000c44, EGCB_SpacingMark },
+ {0x000c46, 0x000c48, EGCB_Extend },
+ {0x000c4a, 0x000c4d, EGCB_Extend },
+ {0x000c55, 0x000c56, EGCB_Extend },
+ {0x000c62, 0x000c63, EGCB_Extend },
+ {0x000c81, 0x000c81, EGCB_Extend },
+ {0x000c82, 0x000c83, EGCB_SpacingMark },
+ {0x000cbc, 0x000cbc, EGCB_Extend },
+ {0x000cbe, 0x000cbe, EGCB_SpacingMark },
+ {0x000cbf, 0x000cbf, EGCB_Extend },
+ {0x000cc0, 0x000cc1, EGCB_SpacingMark },
+ {0x000cc2, 0x000cc2, EGCB_Extend },
+ {0x000cc3, 0x000cc4, EGCB_SpacingMark },
+ {0x000cc6, 0x000cc6, EGCB_Extend },
+ {0x000cc7, 0x000cc8, EGCB_SpacingMark },
+ {0x000cca, 0x000ccb, EGCB_SpacingMark },
+ {0x000ccc, 0x000ccd, EGCB_Extend },
+ {0x000cd5, 0x000cd6, EGCB_Extend },
+ {0x000ce2, 0x000ce3, EGCB_Extend },
+ {0x000d00, 0x000d01, EGCB_Extend },
+ {0x000d02, 0x000d03, EGCB_SpacingMark },
+ {0x000d3b, 0x000d3c, EGCB_Extend },
+ {0x000d3e, 0x000d3e, EGCB_Extend },
+ {0x000d3f, 0x000d40, EGCB_SpacingMark },
+ {0x000d41, 0x000d44, EGCB_Extend },
+ {0x000d46, 0x000d48, EGCB_SpacingMark },
+ {0x000d4a, 0x000d4c, EGCB_SpacingMark },
+ {0x000d4d, 0x000d4d, EGCB_Extend },
+ {0x000d4e, 0x000d4e, EGCB_Prepend },
+ {0x000d57, 0x000d57, EGCB_Extend },
+ {0x000d62, 0x000d63, EGCB_Extend },
+ {0x000d82, 0x000d83, EGCB_SpacingMark },
+ {0x000dca, 0x000dca, EGCB_Extend },
+ {0x000dcf, 0x000dcf, EGCB_Extend },
+ {0x000dd0, 0x000dd1, EGCB_SpacingMark },
+ {0x000dd2, 0x000dd4, EGCB_Extend },
+ {0x000dd6, 0x000dd6, EGCB_Extend },
+ {0x000dd8, 0x000dde, EGCB_SpacingMark },
+ {0x000ddf, 0x000ddf, EGCB_Extend },
+ {0x000df2, 0x000df3, EGCB_SpacingMark },
+ {0x000e31, 0x000e31, EGCB_Extend },
+ {0x000e33, 0x000e33, EGCB_SpacingMark },
+ {0x000e34, 0x000e3a, EGCB_Extend },
+ {0x000e47, 0x000e4e, EGCB_Extend },
+ {0x000eb1, 0x000eb1, EGCB_Extend },
+ {0x000eb3, 0x000eb3, EGCB_SpacingMark },
+ {0x000eb4, 0x000eb9, EGCB_Extend },
+ {0x000ebb, 0x000ebc, EGCB_Extend },
+ {0x000ec8, 0x000ecd, EGCB_Extend },
+ {0x000f18, 0x000f19, EGCB_Extend },
+ {0x000f35, 0x000f35, EGCB_Extend },
+ {0x000f37, 0x000f37, EGCB_Extend },
+ {0x000f39, 0x000f39, EGCB_Extend },
+ {0x000f3e, 0x000f3f, EGCB_SpacingMark },
+ {0x000f71, 0x000f7e, EGCB_Extend },
+ {0x000f7f, 0x000f7f, EGCB_SpacingMark },
+ {0x000f80, 0x000f84, EGCB_Extend },
+ {0x000f86, 0x000f87, EGCB_Extend },
+ {0x000f8d, 0x000f97, EGCB_Extend },
+ {0x000f99, 0x000fbc, EGCB_Extend },
+ {0x000fc6, 0x000fc6, EGCB_Extend },
+ {0x00102d, 0x001030, EGCB_Extend },
+ {0x001031, 0x001031, EGCB_SpacingMark },
+ {0x001032, 0x001037, EGCB_Extend },
+ {0x001039, 0x00103a, EGCB_Extend },
+ {0x00103b, 0x00103c, EGCB_SpacingMark },
+ {0x00103d, 0x00103e, EGCB_Extend },
+ {0x001056, 0x001057, EGCB_SpacingMark },
+ {0x001058, 0x001059, EGCB_Extend },
+ {0x00105e, 0x001060, EGCB_Extend },
+ {0x001071, 0x001074, EGCB_Extend },
+ {0x001082, 0x001082, EGCB_Extend },
+ {0x001084, 0x001084, EGCB_SpacingMark },
+ {0x001085, 0x001086, EGCB_Extend },
+ {0x00108d, 0x00108d, EGCB_Extend },
+ {0x00109d, 0x00109d, EGCB_Extend },
+ {0x001100, 0x00115f, EGCB_L },
+ {0x001160, 0x0011a7, EGCB_V },
+ {0x0011a8, 0x0011ff, EGCB_T },
+ {0x00135d, 0x00135f, EGCB_Extend },
+ {0x001712, 0x001714, EGCB_Extend },
+ {0x001732, 0x001734, EGCB_Extend },
+ {0x001752, 0x001753, EGCB_Extend },
+ {0x001772, 0x001773, EGCB_Extend },
+ {0x0017b4, 0x0017b5, EGCB_Extend },
+ {0x0017b6, 0x0017b6, EGCB_SpacingMark },
+ {0x0017b7, 0x0017bd, EGCB_Extend },
+ {0x0017be, 0x0017c5, EGCB_SpacingMark },
+ {0x0017c6, 0x0017c6, EGCB_Extend },
+ {0x0017c7, 0x0017c8, EGCB_SpacingMark },
+ {0x0017c9, 0x0017d3, EGCB_Extend },
+ {0x0017dd, 0x0017dd, EGCB_Extend },
+ {0x00180b, 0x00180d, EGCB_Extend },
+ {0x00180e, 0x00180e, EGCB_Control },
+ {0x001885, 0x001886, EGCB_Extend },
+ {0x0018a9, 0x0018a9, EGCB_Extend },
+ {0x001920, 0x001922, EGCB_Extend },
+ {0x001923, 0x001926, EGCB_SpacingMark },
+ {0x001927, 0x001928, EGCB_Extend },
+ {0x001929, 0x00192b, EGCB_SpacingMark },
+ {0x001930, 0x001931, EGCB_SpacingMark },
+ {0x001932, 0x001932, EGCB_Extend },
+ {0x001933, 0x001938, EGCB_SpacingMark },
+ {0x001939, 0x00193b, EGCB_Extend },
+ {0x001a17, 0x001a18, EGCB_Extend },
+ {0x001a19, 0x001a1a, EGCB_SpacingMark },
+ {0x001a1b, 0x001a1b, EGCB_Extend },
+ {0x001a55, 0x001a55, EGCB_SpacingMark },
+ {0x001a56, 0x001a56, EGCB_Extend },
+ {0x001a57, 0x001a57, EGCB_SpacingMark },
+ {0x001a58, 0x001a5e, EGCB_Extend },
+ {0x001a60, 0x001a60, EGCB_Extend },
+ {0x001a62, 0x001a62, EGCB_Extend },
+ {0x001a65, 0x001a6c, EGCB_Extend },
+ {0x001a6d, 0x001a72, EGCB_SpacingMark },
+ {0x001a73, 0x001a7c, EGCB_Extend },
+ {0x001a7f, 0x001a7f, EGCB_Extend },
+ {0x001ab0, 0x001abe, EGCB_Extend },
+ {0x001b00, 0x001b03, EGCB_Extend },
+ {0x001b04, 0x001b04, EGCB_SpacingMark },
+ {0x001b34, 0x001b34, EGCB_Extend },
+ {0x001b35, 0x001b35, EGCB_SpacingMark },
+ {0x001b36, 0x001b3a, EGCB_Extend },
+ {0x001b3b, 0x001b3b, EGCB_SpacingMark },
+ {0x001b3c, 0x001b3c, EGCB_Extend },
+ {0x001b3d, 0x001b41, EGCB_SpacingMark },
+ {0x001b42, 0x001b42, EGCB_Extend },
+ {0x001b43, 0x001b44, EGCB_SpacingMark },
+ {0x001b6b, 0x001b73, EGCB_Extend },
+ {0x001b80, 0x001b81, EGCB_Extend },
+ {0x001b82, 0x001b82, EGCB_SpacingMark },
+ {0x001ba1, 0x001ba1, EGCB_SpacingMark },
+ {0x001ba2, 0x001ba5, EGCB_Extend },
+ {0x001ba6, 0x001ba7, EGCB_SpacingMark },
+ {0x001ba8, 0x001ba9, EGCB_Extend },
+ {0x001baa, 0x001baa, EGCB_SpacingMark },
+ {0x001bab, 0x001bad, EGCB_Extend },
+ {0x001be6, 0x001be6, EGCB_Extend },
+ {0x001be7, 0x001be7, EGCB_SpacingMark },
+ {0x001be8, 0x001be9, EGCB_Extend },
+ {0x001bea, 0x001bec, EGCB_SpacingMark },
+ {0x001bed, 0x001bed, EGCB_Extend },
+ {0x001bee, 0x001bee, EGCB_SpacingMark },
+ {0x001bef, 0x001bf1, EGCB_Extend },
+ {0x001bf2, 0x001bf3, EGCB_SpacingMark },
+ {0x001c24, 0x001c2b, EGCB_SpacingMark },
+ {0x001c2c, 0x001c33, EGCB_Extend },
+ {0x001c34, 0x001c35, EGCB_SpacingMark },
+ {0x001c36, 0x001c37, EGCB_Extend },
+ {0x001cd0, 0x001cd2, EGCB_Extend },
+ {0x001cd4, 0x001ce0, EGCB_Extend },
+ {0x001ce1, 0x001ce1, EGCB_SpacingMark },
+ {0x001ce2, 0x001ce8, EGCB_Extend },
+ {0x001ced, 0x001ced, EGCB_Extend },
+ {0x001cf2, 0x001cf3, EGCB_SpacingMark },
+ {0x001cf4, 0x001cf4, EGCB_Extend },
+ {0x001cf7, 0x001cf7, EGCB_SpacingMark },
+ {0x001cf8, 0x001cf9, EGCB_Extend },
+ {0x001dc0, 0x001df9, EGCB_Extend },
+ {0x001dfb, 0x001dff, EGCB_Extend },
+ {0x00200b, 0x00200b, EGCB_Control },
+ {0x00200c, 0x00200c, EGCB_Extend },
+ {0x00200d, 0x00200d, EGCB_ZWJ },
+ {0x00200e, 0x00200f, EGCB_Control },
+ {0x002028, 0x00202e, EGCB_Control },
+ {0x002060, 0x00206f, EGCB_Control },
+ {0x0020d0, 0x0020f0, EGCB_Extend },
+ {0x00261d, 0x00261d, EGCB_E_Base },
+ {0x002640, 0x002640, EGCB_Glue_After_Zwj },
+ {0x002642, 0x002642, EGCB_Glue_After_Zwj },
+ {0x002695, 0x002696, EGCB_Glue_After_Zwj },
+ {0x0026f9, 0x0026f9, EGCB_E_Base },
+ {0x002708, 0x002708, EGCB_Glue_After_Zwj },
+ {0x00270a, 0x00270d, EGCB_E_Base },
+ {0x002764, 0x002764, EGCB_Glue_After_Zwj },
+ {0x002cef, 0x002cf1, EGCB_Extend },
+ {0x002d7f, 0x002d7f, EGCB_Extend },
+ {0x002de0, 0x002dff, EGCB_Extend },
+ {0x00302a, 0x00302f, EGCB_Extend },
+ {0x003099, 0x00309a, EGCB_Extend },
+ {0x00a66f, 0x00a672, EGCB_Extend },
+ {0x00a674, 0x00a67d, EGCB_Extend },
+ {0x00a69e, 0x00a69f, EGCB_Extend },
+ {0x00a6f0, 0x00a6f1, EGCB_Extend },
+ {0x00a802, 0x00a802, EGCB_Extend },
+ {0x00a806, 0x00a806, EGCB_Extend },
+ {0x00a80b, 0x00a80b, EGCB_Extend },
+ {0x00a823, 0x00a824, EGCB_SpacingMark },
+ {0x00a825, 0x00a826, EGCB_Extend },
+ {0x00a827, 0x00a827, EGCB_SpacingMark },
+ {0x00a880, 0x00a881, EGCB_SpacingMark },
+ {0x00a8b4, 0x00a8c3, EGCB_SpacingMark },
+ {0x00a8c4, 0x00a8c5, EGCB_Extend },
+ {0x00a8e0, 0x00a8f1, EGCB_Extend },
+ {0x00a926, 0x00a92d, EGCB_Extend },
+ {0x00a947, 0x00a951, EGCB_Extend },
+ {0x00a952, 0x00a953, EGCB_SpacingMark },
+ {0x00a960, 0x00a97c, EGCB_L },
+ {0x00a980, 0x00a982, EGCB_Extend },
+ {0x00a983, 0x00a983, EGCB_SpacingMark },
+ {0x00a9b3, 0x00a9b3, EGCB_Extend },
+ {0x00a9b4, 0x00a9b5, EGCB_SpacingMark },
+ {0x00a9b6, 0x00a9b9, EGCB_Extend },
+ {0x00a9ba, 0x00a9bb, EGCB_SpacingMark },
+ {0x00a9bc, 0x00a9bc, EGCB_Extend },
+ {0x00a9bd, 0x00a9c0, EGCB_SpacingMark },
+ {0x00a9e5, 0x00a9e5, EGCB_Extend },
+ {0x00aa29, 0x00aa2e, EGCB_Extend },
+ {0x00aa2f, 0x00aa30, EGCB_SpacingMark },
+ {0x00aa31, 0x00aa32, EGCB_Extend },
+ {0x00aa33, 0x00aa34, EGCB_SpacingMark },
+ {0x00aa35, 0x00aa36, EGCB_Extend },
+ {0x00aa43, 0x00aa43, EGCB_Extend },
+ {0x00aa4c, 0x00aa4c, EGCB_Extend },
+ {0x00aa4d, 0x00aa4d, EGCB_SpacingMark },
+ {0x00aa7c, 0x00aa7c, EGCB_Extend },
+ {0x00aab0, 0x00aab0, EGCB_Extend },
+ {0x00aab2, 0x00aab4, EGCB_Extend },
+ {0x00aab7, 0x00aab8, EGCB_Extend },
+ {0x00aabe, 0x00aabf, EGCB_Extend },
+ {0x00aac1, 0x00aac1, EGCB_Extend },
+ {0x00aaeb, 0x00aaeb, EGCB_SpacingMark },
+ {0x00aaec, 0x00aaed, EGCB_Extend },
+ {0x00aaee, 0x00aaef, EGCB_SpacingMark },
+ {0x00aaf5, 0x00aaf5, EGCB_SpacingMark },
+ {0x00aaf6, 0x00aaf6, EGCB_Extend },
+ {0x00abe3, 0x00abe4, EGCB_SpacingMark },
+ {0x00abe5, 0x00abe5, EGCB_Extend },
+ {0x00abe6, 0x00abe7, EGCB_SpacingMark },
+ {0x00abe8, 0x00abe8, EGCB_Extend },
+ {0x00abe9, 0x00abea, EGCB_SpacingMark },
+ {0x00abec, 0x00abec, EGCB_SpacingMark },
+ {0x00abed, 0x00abed, EGCB_Extend },
+ {0x00ac00, 0x00ac00, EGCB_LV },
+ {0x00ac01, 0x00ac1b, EGCB_LVT },
+ {0x00ac1c, 0x00ac1c, EGCB_LV },
+ {0x00ac1d, 0x00ac37, EGCB_LVT },
+ {0x00ac38, 0x00ac38, EGCB_LV },
+ {0x00ac39, 0x00ac53, EGCB_LVT },
+ {0x00ac54, 0x00ac54, EGCB_LV },
+ {0x00ac55, 0x00ac6f, EGCB_LVT },
+ {0x00ac70, 0x00ac70, EGCB_LV },
+ {0x00ac71, 0x00ac8b, EGCB_LVT },
+ {0x00ac8c, 0x00ac8c, EGCB_LV },
+ {0x00ac8d, 0x00aca7, EGCB_LVT },
+ {0x00aca8, 0x00aca8, EGCB_LV },
+ {0x00aca9, 0x00acc3, EGCB_LVT },
+ {0x00acc4, 0x00acc4, EGCB_LV },
+ {0x00acc5, 0x00acdf, EGCB_LVT },
+ {0x00ace0, 0x00ace0, EGCB_LV },
+ {0x00ace1, 0x00acfb, EGCB_LVT },
+ {0x00acfc, 0x00acfc, EGCB_LV },
+ {0x00acfd, 0x00ad17, EGCB_LVT },
+ {0x00ad18, 0x00ad18, EGCB_LV },
+ {0x00ad19, 0x00ad33, EGCB_LVT },
+ {0x00ad34, 0x00ad34, EGCB_LV },
+ {0x00ad35, 0x00ad4f, EGCB_LVT },
+ {0x00ad50, 0x00ad50, EGCB_LV },
+ {0x00ad51, 0x00ad6b, EGCB_LVT },
+ {0x00ad6c, 0x00ad6c, EGCB_LV },
+ {0x00ad6d, 0x00ad87, EGCB_LVT },
+ {0x00ad88, 0x00ad88, EGCB_LV },
+ {0x00ad89, 0x00ada3, EGCB_LVT },
+ {0x00ada4, 0x00ada4, EGCB_LV },
+ {0x00ada5, 0x00adbf, EGCB_LVT },
+ {0x00adc0, 0x00adc0, EGCB_LV },
+ {0x00adc1, 0x00addb, EGCB_LVT },
+ {0x00addc, 0x00addc, EGCB_LV },
+ {0x00addd, 0x00adf7, EGCB_LVT },
+ {0x00adf8, 0x00adf8, EGCB_LV },
+ {0x00adf9, 0x00ae13, EGCB_LVT },
+ {0x00ae14, 0x00ae14, EGCB_LV },
+ {0x00ae15, 0x00ae2f, EGCB_LVT },
+ {0x00ae30, 0x00ae30, EGCB_LV },
+ {0x00ae31, 0x00ae4b, EGCB_LVT },
+ {0x00ae4c, 0x00ae4c, EGCB_LV },
+ {0x00ae4d, 0x00ae67, EGCB_LVT },
+ {0x00ae68, 0x00ae68, EGCB_LV },
+ {0x00ae69, 0x00ae83, EGCB_LVT },
+ {0x00ae84, 0x00ae84, EGCB_LV },
+ {0x00ae85, 0x00ae9f, EGCB_LVT },
+ {0x00aea0, 0x00aea0, EGCB_LV },
+ {0x00aea1, 0x00aebb, EGCB_LVT },
+ {0x00aebc, 0x00aebc, EGCB_LV },
+ {0x00aebd, 0x00aed7, EGCB_LVT },
+ {0x00aed8, 0x00aed8, EGCB_LV },
+ {0x00aed9, 0x00aef3, EGCB_LVT },
+ {0x00aef4, 0x00aef4, EGCB_LV },
+ {0x00aef5, 0x00af0f, EGCB_LVT },
+ {0x00af10, 0x00af10, EGCB_LV },
+ {0x00af11, 0x00af2b, EGCB_LVT },
+ {0x00af2c, 0x00af2c, EGCB_LV },
+ {0x00af2d, 0x00af47, EGCB_LVT },
+ {0x00af48, 0x00af48, EGCB_LV },
+ {0x00af49, 0x00af63, EGCB_LVT },
+ {0x00af64, 0x00af64, EGCB_LV },
+ {0x00af65, 0x00af7f, EGCB_LVT },
+ {0x00af80, 0x00af80, EGCB_LV },
+ {0x00af81, 0x00af9b, EGCB_LVT },
+ {0x00af9c, 0x00af9c, EGCB_LV },
+ {0x00af9d, 0x00afb7, EGCB_LVT },
+ {0x00afb8, 0x00afb8, EGCB_LV },
+ {0x00afb9, 0x00afd3, EGCB_LVT },
+ {0x00afd4, 0x00afd4, EGCB_LV },
+ {0x00afd5, 0x00afef, EGCB_LVT },
+ {0x00aff0, 0x00aff0, EGCB_LV },
+ {0x00aff1, 0x00b00b, EGCB_LVT },
+ {0x00b00c, 0x00b00c, EGCB_LV },
+ {0x00b00d, 0x00b027, EGCB_LVT },
+ {0x00b028, 0x00b028, EGCB_LV },
+ {0x00b029, 0x00b043, EGCB_LVT },
+ {0x00b044, 0x00b044, EGCB_LV },
+ {0x00b045, 0x00b05f, EGCB_LVT },
+ {0x00b060, 0x00b060, EGCB_LV },
+ {0x00b061, 0x00b07b, EGCB_LVT },
+ {0x00b07c, 0x00b07c, EGCB_LV },
+ {0x00b07d, 0x00b097, EGCB_LVT },
+ {0x00b098, 0x00b098, EGCB_LV },
+ {0x00b099, 0x00b0b3, EGCB_LVT },
+ {0x00b0b4, 0x00b0b4, EGCB_LV },
+ {0x00b0b5, 0x00b0cf, EGCB_LVT },
+ {0x00b0d0, 0x00b0d0, EGCB_LV },
+ {0x00b0d1, 0x00b0eb, EGCB_LVT },
+ {0x00b0ec, 0x00b0ec, EGCB_LV },
+ {0x00b0ed, 0x00b107, EGCB_LVT },
+ {0x00b108, 0x00b108, EGCB_LV },
+ {0x00b109, 0x00b123, EGCB_LVT },
+ {0x00b124, 0x00b124, EGCB_LV },
+ {0x00b125, 0x00b13f, EGCB_LVT },
+ {0x00b140, 0x00b140, EGCB_LV },
+ {0x00b141, 0x00b15b, EGCB_LVT },
+ {0x00b15c, 0x00b15c, EGCB_LV },
+ {0x00b15d, 0x00b177, EGCB_LVT },
+ {0x00b178, 0x00b178, EGCB_LV },
+ {0x00b179, 0x00b193, EGCB_LVT },
+ {0x00b194, 0x00b194, EGCB_LV },
+ {0x00b195, 0x00b1af, EGCB_LVT },
+ {0x00b1b0, 0x00b1b0, EGCB_LV },
+ {0x00b1b1, 0x00b1cb, EGCB_LVT },
+ {0x00b1cc, 0x00b1cc, EGCB_LV },
+ {0x00b1cd, 0x00b1e7, EGCB_LVT },
+ {0x00b1e8, 0x00b1e8, EGCB_LV },
+ {0x00b1e9, 0x00b203, EGCB_LVT },
+ {0x00b204, 0x00b204, EGCB_LV },
+ {0x00b205, 0x00b21f, EGCB_LVT },
+ {0x00b220, 0x00b220, EGCB_LV },
+ {0x00b221, 0x00b23b, EGCB_LVT },
+ {0x00b23c, 0x00b23c, EGCB_LV },
+ {0x00b23d, 0x00b257, EGCB_LVT },
+ {0x00b258, 0x00b258, EGCB_LV },
+ {0x00b259, 0x00b273, EGCB_LVT },
+ {0x00b274, 0x00b274, EGCB_LV },
+ {0x00b275, 0x00b28f, EGCB_LVT },
+ {0x00b290, 0x00b290, EGCB_LV },
+ {0x00b291, 0x00b2ab, EGCB_LVT },
+ {0x00b2ac, 0x00b2ac, EGCB_LV },
+ {0x00b2ad, 0x00b2c7, EGCB_LVT },
+ {0x00b2c8, 0x00b2c8, EGCB_LV },
+ {0x00b2c9, 0x00b2e3, EGCB_LVT },
+ {0x00b2e4, 0x00b2e4, EGCB_LV },
+ {0x00b2e5, 0x00b2ff, EGCB_LVT },
+ {0x00b300, 0x00b300, EGCB_LV },
+ {0x00b301, 0x00b31b, EGCB_LVT },
+ {0x00b31c, 0x00b31c, EGCB_LV },
+ {0x00b31d, 0x00b337, EGCB_LVT },
+ {0x00b338, 0x00b338, EGCB_LV },
+ {0x00b339, 0x00b353, EGCB_LVT },
+ {0x00b354, 0x00b354, EGCB_LV },
+ {0x00b355, 0x00b36f, EGCB_LVT },
+ {0x00b370, 0x00b370, EGCB_LV },
+ {0x00b371, 0x00b38b, EGCB_LVT },
+ {0x00b38c, 0x00b38c, EGCB_LV },
+ {0x00b38d, 0x00b3a7, EGCB_LVT },
+ {0x00b3a8, 0x00b3a8, EGCB_LV },
+ {0x00b3a9, 0x00b3c3, EGCB_LVT },
+ {0x00b3c4, 0x00b3c4, EGCB_LV },
+ {0x00b3c5, 0x00b3df, EGCB_LVT },
+ {0x00b3e0, 0x00b3e0, EGCB_LV },
+ {0x00b3e1, 0x00b3fb, EGCB_LVT },
+ {0x00b3fc, 0x00b3fc, EGCB_LV },
+ {0x00b3fd, 0x00b417, EGCB_LVT },
+ {0x00b418, 0x00b418, EGCB_LV },
+ {0x00b419, 0x00b433, EGCB_LVT },
+ {0x00b434, 0x00b434, EGCB_LV },
+ {0x00b435, 0x00b44f, EGCB_LVT },
+ {0x00b450, 0x00b450, EGCB_LV },
+ {0x00b451, 0x00b46b, EGCB_LVT },
+ {0x00b46c, 0x00b46c, EGCB_LV },
+ {0x00b46d, 0x00b487, EGCB_LVT },
+ {0x00b488, 0x00b488, EGCB_LV },
+ {0x00b489, 0x00b4a3, EGCB_LVT },
+ {0x00b4a4, 0x00b4a4, EGCB_LV },
+ {0x00b4a5, 0x00b4bf, EGCB_LVT },
+ {0x00b4c0, 0x00b4c0, EGCB_LV },
+ {0x00b4c1, 0x00b4db, EGCB_LVT },
+ {0x00b4dc, 0x00b4dc, EGCB_LV },
+ {0x00b4dd, 0x00b4f7, EGCB_LVT },
+ {0x00b4f8, 0x00b4f8, EGCB_LV },
+ {0x00b4f9, 0x00b513, EGCB_LVT },
+ {0x00b514, 0x00b514, EGCB_LV },
+ {0x00b515, 0x00b52f, EGCB_LVT },
+ {0x00b530, 0x00b530, EGCB_LV },
+ {0x00b531, 0x00b54b, EGCB_LVT },
+ {0x00b54c, 0x00b54c, EGCB_LV },
+ {0x00b54d, 0x00b567, EGCB_LVT },
+ {0x00b568, 0x00b568, EGCB_LV },
+ {0x00b569, 0x00b583, EGCB_LVT },
+ {0x00b584, 0x00b584, EGCB_LV },
+ {0x00b585, 0x00b59f, EGCB_LVT },
+ {0x00b5a0, 0x00b5a0, EGCB_LV },
+ {0x00b5a1, 0x00b5bb, EGCB_LVT },
+ {0x00b5bc, 0x00b5bc, EGCB_LV },
+ {0x00b5bd, 0x00b5d7, EGCB_LVT },
+ {0x00b5d8, 0x00b5d8, EGCB_LV },
+ {0x00b5d9, 0x00b5f3, EGCB_LVT },
+ {0x00b5f4, 0x00b5f4, EGCB_LV },
+ {0x00b5f5, 0x00b60f, EGCB_LVT },
+ {0x00b610, 0x00b610, EGCB_LV },
+ {0x00b611, 0x00b62b, EGCB_LVT },
+ {0x00b62c, 0x00b62c, EGCB_LV },
+ {0x00b62d, 0x00b647, EGCB_LVT },
+ {0x00b648, 0x00b648, EGCB_LV },
+ {0x00b649, 0x00b663, EGCB_LVT },
+ {0x00b664, 0x00b664, EGCB_LV },
+ {0x00b665, 0x00b67f, EGCB_LVT },
+ {0x00b680, 0x00b680, EGCB_LV },
+ {0x00b681, 0x00b69b, EGCB_LVT },
+ {0x00b69c, 0x00b69c, EGCB_LV },
+ {0x00b69d, 0x00b6b7, EGCB_LVT },
+ {0x00b6b8, 0x00b6b8, EGCB_LV },
+ {0x00b6b9, 0x00b6d3, EGCB_LVT },
+ {0x00b6d4, 0x00b6d4, EGCB_LV },
+ {0x00b6d5, 0x00b6ef, EGCB_LVT },
+ {0x00b6f0, 0x00b6f0, EGCB_LV },
+ {0x00b6f1, 0x00b70b, EGCB_LVT },
+ {0x00b70c, 0x00b70c, EGCB_LV },
+ {0x00b70d, 0x00b727, EGCB_LVT },
+ {0x00b728, 0x00b728, EGCB_LV },
+ {0x00b729, 0x00b743, EGCB_LVT },
+ {0x00b744, 0x00b744, EGCB_LV },
+ {0x00b745, 0x00b75f, EGCB_LVT },
+ {0x00b760, 0x00b760, EGCB_LV },
+ {0x00b761, 0x00b77b, EGCB_LVT },
+ {0x00b77c, 0x00b77c, EGCB_LV },
+ {0x00b77d, 0x00b797, EGCB_LVT },
+ {0x00b798, 0x00b798, EGCB_LV },
+ {0x00b799, 0x00b7b3, EGCB_LVT },
+ {0x00b7b4, 0x00b7b4, EGCB_LV },
+ {0x00b7b5, 0x00b7cf, EGCB_LVT },
+ {0x00b7d0, 0x00b7d0, EGCB_LV },
+ {0x00b7d1, 0x00b7eb, EGCB_LVT },
+ {0x00b7ec, 0x00b7ec, EGCB_LV },
+ {0x00b7ed, 0x00b807, EGCB_LVT },
+ {0x00b808, 0x00b808, EGCB_LV },
+ {0x00b809, 0x00b823, EGCB_LVT },
+ {0x00b824, 0x00b824, EGCB_LV },
+ {0x00b825, 0x00b83f, EGCB_LVT },
+ {0x00b840, 0x00b840, EGCB_LV },
+ {0x00b841, 0x00b85b, EGCB_LVT },
+ {0x00b85c, 0x00b85c, EGCB_LV },
+ {0x00b85d, 0x00b877, EGCB_LVT },
+ {0x00b878, 0x00b878, EGCB_LV },
+ {0x00b879, 0x00b893, EGCB_LVT },
+ {0x00b894, 0x00b894, EGCB_LV },
+ {0x00b895, 0x00b8af, EGCB_LVT },
+ {0x00b8b0, 0x00b8b0, EGCB_LV },
+ {0x00b8b1, 0x00b8cb, EGCB_LVT },
+ {0x00b8cc, 0x00b8cc, EGCB_LV },
+ {0x00b8cd, 0x00b8e7, EGCB_LVT },
+ {0x00b8e8, 0x00b8e8, EGCB_LV },
+ {0x00b8e9, 0x00b903, EGCB_LVT },
+ {0x00b904, 0x00b904, EGCB_LV },
+ {0x00b905, 0x00b91f, EGCB_LVT },
+ {0x00b920, 0x00b920, EGCB_LV },
+ {0x00b921, 0x00b93b, EGCB_LVT },
+ {0x00b93c, 0x00b93c, EGCB_LV },
+ {0x00b93d, 0x00b957, EGCB_LVT },
+ {0x00b958, 0x00b958, EGCB_LV },
+ {0x00b959, 0x00b973, EGCB_LVT },
+ {0x00b974, 0x00b974, EGCB_LV },
+ {0x00b975, 0x00b98f, EGCB_LVT },
+ {0x00b990, 0x00b990, EGCB_LV },
+ {0x00b991, 0x00b9ab, EGCB_LVT },
+ {0x00b9ac, 0x00b9ac, EGCB_LV },
+ {0x00b9ad, 0x00b9c7, EGCB_LVT },
+ {0x00b9c8, 0x00b9c8, EGCB_LV },
+ {0x00b9c9, 0x00b9e3, EGCB_LVT },
+ {0x00b9e4, 0x00b9e4, EGCB_LV },
+ {0x00b9e5, 0x00b9ff, EGCB_LVT },
+ {0x00ba00, 0x00ba00, EGCB_LV },
+ {0x00ba01, 0x00ba1b, EGCB_LVT },
+ {0x00ba1c, 0x00ba1c, EGCB_LV },
+ {0x00ba1d, 0x00ba37, EGCB_LVT },
+ {0x00ba38, 0x00ba38, EGCB_LV },
+ {0x00ba39, 0x00ba53, EGCB_LVT },
+ {0x00ba54, 0x00ba54, EGCB_LV },
+ {0x00ba55, 0x00ba6f, EGCB_LVT },
+ {0x00ba70, 0x00ba70, EGCB_LV },
+ {0x00ba71, 0x00ba8b, EGCB_LVT },
+ {0x00ba8c, 0x00ba8c, EGCB_LV },
+ {0x00ba8d, 0x00baa7, EGCB_LVT },
+ {0x00baa8, 0x00baa8, EGCB_LV },
+ {0x00baa9, 0x00bac3, EGCB_LVT },
+ {0x00bac4, 0x00bac4, EGCB_LV },
+ {0x00bac5, 0x00badf, EGCB_LVT },
+ {0x00bae0, 0x00bae0, EGCB_LV },
+ {0x00bae1, 0x00bafb, EGCB_LVT },
+ {0x00bafc, 0x00bafc, EGCB_LV },
+ {0x00bafd, 0x00bb17, EGCB_LVT },
+ {0x00bb18, 0x00bb18, EGCB_LV },
+ {0x00bb19, 0x00bb33, EGCB_LVT },
+ {0x00bb34, 0x00bb34, EGCB_LV },
+ {0x00bb35, 0x00bb4f, EGCB_LVT },
+ {0x00bb50, 0x00bb50, EGCB_LV },
+ {0x00bb51, 0x00bb6b, EGCB_LVT },
+ {0x00bb6c, 0x00bb6c, EGCB_LV },
+ {0x00bb6d, 0x00bb87, EGCB_LVT },
+ {0x00bb88, 0x00bb88, EGCB_LV },
+ {0x00bb89, 0x00bba3, EGCB_LVT },
+ {0x00bba4, 0x00bba4, EGCB_LV },
+ {0x00bba5, 0x00bbbf, EGCB_LVT },
+ {0x00bbc0, 0x00bbc0, EGCB_LV },
+ {0x00bbc1, 0x00bbdb, EGCB_LVT },
+ {0x00bbdc, 0x00bbdc, EGCB_LV },
+ {0x00bbdd, 0x00bbf7, EGCB_LVT },
+ {0x00bbf8, 0x00bbf8, EGCB_LV },
+ {0x00bbf9, 0x00bc13, EGCB_LVT },
+ {0x00bc14, 0x00bc14, EGCB_LV },
+ {0x00bc15, 0x00bc2f, EGCB_LVT },
+ {0x00bc30, 0x00bc30, EGCB_LV },
+ {0x00bc31, 0x00bc4b, EGCB_LVT },
+ {0x00bc4c, 0x00bc4c, EGCB_LV },
+ {0x00bc4d, 0x00bc67, EGCB_LVT },
+ {0x00bc68, 0x00bc68, EGCB_LV },
+ {0x00bc69, 0x00bc83, EGCB_LVT },
+ {0x00bc84, 0x00bc84, EGCB_LV },
+ {0x00bc85, 0x00bc9f, EGCB_LVT },
+ {0x00bca0, 0x00bca0, EGCB_LV },
+ {0x00bca1, 0x00bcbb, EGCB_LVT },
+ {0x00bcbc, 0x00bcbc, EGCB_LV },
+ {0x00bcbd, 0x00bcd7, EGCB_LVT },
+ {0x00bcd8, 0x00bcd8, EGCB_LV },
+ {0x00bcd9, 0x00bcf3, EGCB_LVT },
+ {0x00bcf4, 0x00bcf4, EGCB_LV },
+ {0x00bcf5, 0x00bd0f, EGCB_LVT },
+ {0x00bd10, 0x00bd10, EGCB_LV },
+ {0x00bd11, 0x00bd2b, EGCB_LVT },
+ {0x00bd2c, 0x00bd2c, EGCB_LV },
+ {0x00bd2d, 0x00bd47, EGCB_LVT },
+ {0x00bd48, 0x00bd48, EGCB_LV },
+ {0x00bd49, 0x00bd63, EGCB_LVT },
+ {0x00bd64, 0x00bd64, EGCB_LV },
+ {0x00bd65, 0x00bd7f, EGCB_LVT },
+ {0x00bd80, 0x00bd80, EGCB_LV },
+ {0x00bd81, 0x00bd9b, EGCB_LVT },
+ {0x00bd9c, 0x00bd9c, EGCB_LV },
+ {0x00bd9d, 0x00bdb7, EGCB_LVT },
+ {0x00bdb8, 0x00bdb8, EGCB_LV },
+ {0x00bdb9, 0x00bdd3, EGCB_LVT },
+ {0x00bdd4, 0x00bdd4, EGCB_LV },
+ {0x00bdd5, 0x00bdef, EGCB_LVT },
+ {0x00bdf0, 0x00bdf0, EGCB_LV },
+ {0x00bdf1, 0x00be0b, EGCB_LVT },
+ {0x00be0c, 0x00be0c, EGCB_LV },
+ {0x00be0d, 0x00be27, EGCB_LVT },
+ {0x00be28, 0x00be28, EGCB_LV },
+ {0x00be29, 0x00be43, EGCB_LVT },
+ {0x00be44, 0x00be44, EGCB_LV },
+ {0x00be45, 0x00be5f, EGCB_LVT },
+ {0x00be60, 0x00be60, EGCB_LV },
+ {0x00be61, 0x00be7b, EGCB_LVT },
+ {0x00be7c, 0x00be7c, EGCB_LV },
+ {0x00be7d, 0x00be97, EGCB_LVT },
+ {0x00be98, 0x00be98, EGCB_LV },
+ {0x00be99, 0x00beb3, EGCB_LVT },
+ {0x00beb4, 0x00beb4, EGCB_LV },
+ {0x00beb5, 0x00becf, EGCB_LVT },
+ {0x00bed0, 0x00bed0, EGCB_LV },
+ {0x00bed1, 0x00beeb, EGCB_LVT },
+ {0x00beec, 0x00beec, EGCB_LV },
+ {0x00beed, 0x00bf07, EGCB_LVT },
+ {0x00bf08, 0x00bf08, EGCB_LV },
+ {0x00bf09, 0x00bf23, EGCB_LVT },
+ {0x00bf24, 0x00bf24, EGCB_LV },
+ {0x00bf25, 0x00bf3f, EGCB_LVT },
+ {0x00bf40, 0x00bf40, EGCB_LV },
+ {0x00bf41, 0x00bf5b, EGCB_LVT },
+ {0x00bf5c, 0x00bf5c, EGCB_LV },
+ {0x00bf5d, 0x00bf77, EGCB_LVT },
+ {0x00bf78, 0x00bf78, EGCB_LV },
+ {0x00bf79, 0x00bf93, EGCB_LVT },
+ {0x00bf94, 0x00bf94, EGCB_LV },
+ {0x00bf95, 0x00bfaf, EGCB_LVT },
+ {0x00bfb0, 0x00bfb0, EGCB_LV },
+ {0x00bfb1, 0x00bfcb, EGCB_LVT },
+ {0x00bfcc, 0x00bfcc, EGCB_LV },
+ {0x00bfcd, 0x00bfe7, EGCB_LVT },
+ {0x00bfe8, 0x00bfe8, EGCB_LV },
+ {0x00bfe9, 0x00c003, EGCB_LVT },
+ {0x00c004, 0x00c004, EGCB_LV },
+ {0x00c005, 0x00c01f, EGCB_LVT },
+ {0x00c020, 0x00c020, EGCB_LV },
+ {0x00c021, 0x00c03b, EGCB_LVT },
+ {0x00c03c, 0x00c03c, EGCB_LV },
+ {0x00c03d, 0x00c057, EGCB_LVT },
+ {0x00c058, 0x00c058, EGCB_LV },
+ {0x00c059, 0x00c073, EGCB_LVT },
+ {0x00c074, 0x00c074, EGCB_LV },
+ {0x00c075, 0x00c08f, EGCB_LVT },
+ {0x00c090, 0x00c090, EGCB_LV },
+ {0x00c091, 0x00c0ab, EGCB_LVT },
+ {0x00c0ac, 0x00c0ac, EGCB_LV },
+ {0x00c0ad, 0x00c0c7, EGCB_LVT },
+ {0x00c0c8, 0x00c0c8, EGCB_LV },
+ {0x00c0c9, 0x00c0e3, EGCB_LVT },
+ {0x00c0e4, 0x00c0e4, EGCB_LV },
+ {0x00c0e5, 0x00c0ff, EGCB_LVT },
+ {0x00c100, 0x00c100, EGCB_LV },
+ {0x00c101, 0x00c11b, EGCB_LVT },
+ {0x00c11c, 0x00c11c, EGCB_LV },
+ {0x00c11d, 0x00c137, EGCB_LVT },
+ {0x00c138, 0x00c138, EGCB_LV },
+ {0x00c139, 0x00c153, EGCB_LVT },
+ {0x00c154, 0x00c154, EGCB_LV },
+ {0x00c155, 0x00c16f, EGCB_LVT },
+ {0x00c170, 0x00c170, EGCB_LV },
+ {0x00c171, 0x00c18b, EGCB_LVT },
+ {0x00c18c, 0x00c18c, EGCB_LV },
+ {0x00c18d, 0x00c1a7, EGCB_LVT },
+ {0x00c1a8, 0x00c1a8, EGCB_LV },
+ {0x00c1a9, 0x00c1c3, EGCB_LVT },
+ {0x00c1c4, 0x00c1c4, EGCB_LV },
+ {0x00c1c5, 0x00c1df, EGCB_LVT },
+ {0x00c1e0, 0x00c1e0, EGCB_LV },
+ {0x00c1e1, 0x00c1fb, EGCB_LVT },
+ {0x00c1fc, 0x00c1fc, EGCB_LV },
+ {0x00c1fd, 0x00c217, EGCB_LVT },
+ {0x00c218, 0x00c218, EGCB_LV },
+ {0x00c219, 0x00c233, EGCB_LVT },
+ {0x00c234, 0x00c234, EGCB_LV },
+ {0x00c235, 0x00c24f, EGCB_LVT },
+ {0x00c250, 0x00c250, EGCB_LV },
+ {0x00c251, 0x00c26b, EGCB_LVT },
+ {0x00c26c, 0x00c26c, EGCB_LV },
+ {0x00c26d, 0x00c287, EGCB_LVT },
+ {0x00c288, 0x00c288, EGCB_LV },
+ {0x00c289, 0x00c2a3, EGCB_LVT },
+ {0x00c2a4, 0x00c2a4, EGCB_LV },
+ {0x00c2a5, 0x00c2bf, EGCB_LVT },
+ {0x00c2c0, 0x00c2c0, EGCB_LV },
+ {0x00c2c1, 0x00c2db, EGCB_LVT },
+ {0x00c2dc, 0x00c2dc, EGCB_LV },
+ {0x00c2dd, 0x00c2f7, EGCB_LVT },
+ {0x00c2f8, 0x00c2f8, EGCB_LV },
+ {0x00c2f9, 0x00c313, EGCB_LVT },
+ {0x00c314, 0x00c314, EGCB_LV },
+ {0x00c315, 0x00c32f, EGCB_LVT },
+ {0x00c330, 0x00c330, EGCB_LV },
+ {0x00c331, 0x00c34b, EGCB_LVT },
+ {0x00c34c, 0x00c34c, EGCB_LV },
+ {0x00c34d, 0x00c367, EGCB_LVT },
+ {0x00c368, 0x00c368, EGCB_LV },
+ {0x00c369, 0x00c383, EGCB_LVT },
+ {0x00c384, 0x00c384, EGCB_LV },
+ {0x00c385, 0x00c39f, EGCB_LVT },
+ {0x00c3a0, 0x00c3a0, EGCB_LV },
+ {0x00c3a1, 0x00c3bb, EGCB_LVT },
+ {0x00c3bc, 0x00c3bc, EGCB_LV },
+ {0x00c3bd, 0x00c3d7, EGCB_LVT },
+ {0x00c3d8, 0x00c3d8, EGCB_LV },
+ {0x00c3d9, 0x00c3f3, EGCB_LVT },
+ {0x00c3f4, 0x00c3f4, EGCB_LV },
+ {0x00c3f5, 0x00c40f, EGCB_LVT },
+ {0x00c410, 0x00c410, EGCB_LV },
+ {0x00c411, 0x00c42b, EGCB_LVT },
+ {0x00c42c, 0x00c42c, EGCB_LV },
+ {0x00c42d, 0x00c447, EGCB_LVT },
+ {0x00c448, 0x00c448, EGCB_LV },
+ {0x00c449, 0x00c463, EGCB_LVT },
+ {0x00c464, 0x00c464, EGCB_LV },
+ {0x00c465, 0x00c47f, EGCB_LVT },
+ {0x00c480, 0x00c480, EGCB_LV },
+ {0x00c481, 0x00c49b, EGCB_LVT },
+ {0x00c49c, 0x00c49c, EGCB_LV },
+ {0x00c49d, 0x00c4b7, EGCB_LVT },
+ {0x00c4b8, 0x00c4b8, EGCB_LV },
+ {0x00c4b9, 0x00c4d3, EGCB_LVT },
+ {0x00c4d4, 0x00c4d4, EGCB_LV },
+ {0x00c4d5, 0x00c4ef, EGCB_LVT },
+ {0x00c4f0, 0x00c4f0, EGCB_LV },
+ {0x00c4f1, 0x00c50b, EGCB_LVT },
+ {0x00c50c, 0x00c50c, EGCB_LV },
+ {0x00c50d, 0x00c527, EGCB_LVT },
+ {0x00c528, 0x00c528, EGCB_LV },
+ {0x00c529, 0x00c543, EGCB_LVT },
+ {0x00c544, 0x00c544, EGCB_LV },
+ {0x00c545, 0x00c55f, EGCB_LVT },
+ {0x00c560, 0x00c560, EGCB_LV },
+ {0x00c561, 0x00c57b, EGCB_LVT },
+ {0x00c57c, 0x00c57c, EGCB_LV },
+ {0x00c57d, 0x00c597, EGCB_LVT },
+ {0x00c598, 0x00c598, EGCB_LV },
+ {0x00c599, 0x00c5b3, EGCB_LVT },
+ {0x00c5b4, 0x00c5b4, EGCB_LV },
+ {0x00c5b5, 0x00c5cf, EGCB_LVT },
+ {0x00c5d0, 0x00c5d0, EGCB_LV },
+ {0x00c5d1, 0x00c5eb, EGCB_LVT },
+ {0x00c5ec, 0x00c5ec, EGCB_LV },
+ {0x00c5ed, 0x00c607, EGCB_LVT },
+ {0x00c608, 0x00c608, EGCB_LV },
+ {0x00c609, 0x00c623, EGCB_LVT },
+ {0x00c624, 0x00c624, EGCB_LV },
+ {0x00c625, 0x00c63f, EGCB_LVT },
+ {0x00c640, 0x00c640, EGCB_LV },
+ {0x00c641, 0x00c65b, EGCB_LVT },
+ {0x00c65c, 0x00c65c, EGCB_LV },
+ {0x00c65d, 0x00c677, EGCB_LVT },
+ {0x00c678, 0x00c678, EGCB_LV },
+ {0x00c679, 0x00c693, EGCB_LVT },
+ {0x00c694, 0x00c694, EGCB_LV },
+ {0x00c695, 0x00c6af, EGCB_LVT },
+ {0x00c6b0, 0x00c6b0, EGCB_LV },
+ {0x00c6b1, 0x00c6cb, EGCB_LVT },
+ {0x00c6cc, 0x00c6cc, EGCB_LV },
+ {0x00c6cd, 0x00c6e7, EGCB_LVT },
+ {0x00c6e8, 0x00c6e8, EGCB_LV },
+ {0x00c6e9, 0x00c703, EGCB_LVT },
+ {0x00c704, 0x00c704, EGCB_LV },
+ {0x00c705, 0x00c71f, EGCB_LVT },
+ {0x00c720, 0x00c720, EGCB_LV },
+ {0x00c721, 0x00c73b, EGCB_LVT },
+ {0x00c73c, 0x00c73c, EGCB_LV },
+ {0x00c73d, 0x00c757, EGCB_LVT },
+ {0x00c758, 0x00c758, EGCB_LV },
+ {0x00c759, 0x00c773, EGCB_LVT },
+ {0x00c774, 0x00c774, EGCB_LV },
+ {0x00c775, 0x00c78f, EGCB_LVT },
+ {0x00c790, 0x00c790, EGCB_LV },
+ {0x00c791, 0x00c7ab, EGCB_LVT },
+ {0x00c7ac, 0x00c7ac, EGCB_LV },
+ {0x00c7ad, 0x00c7c7, EGCB_LVT },
+ {0x00c7c8, 0x00c7c8, EGCB_LV },
+ {0x00c7c9, 0x00c7e3, EGCB_LVT },
+ {0x00c7e4, 0x00c7e4, EGCB_LV },
+ {0x00c7e5, 0x00c7ff, EGCB_LVT },
+ {0x00c800, 0x00c800, EGCB_LV },
+ {0x00c801, 0x00c81b, EGCB_LVT },
+ {0x00c81c, 0x00c81c, EGCB_LV },
+ {0x00c81d, 0x00c837, EGCB_LVT },
+ {0x00c838, 0x00c838, EGCB_LV },
+ {0x00c839, 0x00c853, EGCB_LVT },
+ {0x00c854, 0x00c854, EGCB_LV },
+ {0x00c855, 0x00c86f, EGCB_LVT },
+ {0x00c870, 0x00c870, EGCB_LV },
+ {0x00c871, 0x00c88b, EGCB_LVT },
+ {0x00c88c, 0x00c88c, EGCB_LV },
+ {0x00c88d, 0x00c8a7, EGCB_LVT },
+ {0x00c8a8, 0x00c8a8, EGCB_LV },
+ {0x00c8a9, 0x00c8c3, EGCB_LVT },
+ {0x00c8c4, 0x00c8c4, EGCB_LV },
+ {0x00c8c5, 0x00c8df, EGCB_LVT },
+ {0x00c8e0, 0x00c8e0, EGCB_LV },
+ {0x00c8e1, 0x00c8fb, EGCB_LVT },
+ {0x00c8fc, 0x00c8fc, EGCB_LV },
+ {0x00c8fd, 0x00c917, EGCB_LVT },
+ {0x00c918, 0x00c918, EGCB_LV },
+ {0x00c919, 0x00c933, EGCB_LVT },
+ {0x00c934, 0x00c934, EGCB_LV },
+ {0x00c935, 0x00c94f, EGCB_LVT },
+ {0x00c950, 0x00c950, EGCB_LV },
+ {0x00c951, 0x00c96b, EGCB_LVT },
+ {0x00c96c, 0x00c96c, EGCB_LV },
+ {0x00c96d, 0x00c987, EGCB_LVT },
+ {0x00c988, 0x00c988, EGCB_LV },
+ {0x00c989, 0x00c9a3, EGCB_LVT },
+ {0x00c9a4, 0x00c9a4, EGCB_LV },
+ {0x00c9a5, 0x00c9bf, EGCB_LVT },
+ {0x00c9c0, 0x00c9c0, EGCB_LV },
+ {0x00c9c1, 0x00c9db, EGCB_LVT },
+ {0x00c9dc, 0x00c9dc, EGCB_LV },
+ {0x00c9dd, 0x00c9f7, EGCB_LVT },
+ {0x00c9f8, 0x00c9f8, EGCB_LV },
+ {0x00c9f9, 0x00ca13, EGCB_LVT },
+ {0x00ca14, 0x00ca14, EGCB_LV },
+ {0x00ca15, 0x00ca2f, EGCB_LVT },
+ {0x00ca30, 0x00ca30, EGCB_LV },
+ {0x00ca31, 0x00ca4b, EGCB_LVT },
+ {0x00ca4c, 0x00ca4c, EGCB_LV },
+ {0x00ca4d, 0x00ca67, EGCB_LVT },
+ {0x00ca68, 0x00ca68, EGCB_LV },
+ {0x00ca69, 0x00ca83, EGCB_LVT },
+ {0x00ca84, 0x00ca84, EGCB_LV },
+ {0x00ca85, 0x00ca9f, EGCB_LVT },
+ {0x00caa0, 0x00caa0, EGCB_LV },
+ {0x00caa1, 0x00cabb, EGCB_LVT },
+ {0x00cabc, 0x00cabc, EGCB_LV },
+ {0x00cabd, 0x00cad7, EGCB_LVT },
+ {0x00cad8, 0x00cad8, EGCB_LV },
+ {0x00cad9, 0x00caf3, EGCB_LVT },
+ {0x00caf4, 0x00caf4, EGCB_LV },
+ {0x00caf5, 0x00cb0f, EGCB_LVT },
+ {0x00cb10, 0x00cb10, EGCB_LV },
+ {0x00cb11, 0x00cb2b, EGCB_LVT },
+ {0x00cb2c, 0x00cb2c, EGCB_LV },
+ {0x00cb2d, 0x00cb47, EGCB_LVT },
+ {0x00cb48, 0x00cb48, EGCB_LV },
+ {0x00cb49, 0x00cb63, EGCB_LVT },
+ {0x00cb64, 0x00cb64, EGCB_LV },
+ {0x00cb65, 0x00cb7f, EGCB_LVT },
+ {0x00cb80, 0x00cb80, EGCB_LV },
+ {0x00cb81, 0x00cb9b, EGCB_LVT },
+ {0x00cb9c, 0x00cb9c, EGCB_LV },
+ {0x00cb9d, 0x00cbb7, EGCB_LVT },
+ {0x00cbb8, 0x00cbb8, EGCB_LV },
+ {0x00cbb9, 0x00cbd3, EGCB_LVT },
+ {0x00cbd4, 0x00cbd4, EGCB_LV },
+ {0x00cbd5, 0x00cbef, EGCB_LVT },
+ {0x00cbf0, 0x00cbf0, EGCB_LV },
+ {0x00cbf1, 0x00cc0b, EGCB_LVT },
+ {0x00cc0c, 0x00cc0c, EGCB_LV },
+ {0x00cc0d, 0x00cc27, EGCB_LVT },
+ {0x00cc28, 0x00cc28, EGCB_LV },
+ {0x00cc29, 0x00cc43, EGCB_LVT },
+ {0x00cc44, 0x00cc44, EGCB_LV },
+ {0x00cc45, 0x00cc5f, EGCB_LVT },
+ {0x00cc60, 0x00cc60, EGCB_LV },
+ {0x00cc61, 0x00cc7b, EGCB_LVT },
+ {0x00cc7c, 0x00cc7c, EGCB_LV },
+ {0x00cc7d, 0x00cc97, EGCB_LVT },
+ {0x00cc98, 0x00cc98, EGCB_LV },
+ {0x00cc99, 0x00ccb3, EGCB_LVT },
+ {0x00ccb4, 0x00ccb4, EGCB_LV },
+ {0x00ccb5, 0x00cccf, EGCB_LVT },
+ {0x00ccd0, 0x00ccd0, EGCB_LV },
+ {0x00ccd1, 0x00cceb, EGCB_LVT },
+ {0x00ccec, 0x00ccec, EGCB_LV },
+ {0x00cced, 0x00cd07, EGCB_LVT },
+ {0x00cd08, 0x00cd08, EGCB_LV },
+ {0x00cd09, 0x00cd23, EGCB_LVT },
+ {0x00cd24, 0x00cd24, EGCB_LV },
+ {0x00cd25, 0x00cd3f, EGCB_LVT },
+ {0x00cd40, 0x00cd40, EGCB_LV },
+ {0x00cd41, 0x00cd5b, EGCB_LVT },
+ {0x00cd5c, 0x00cd5c, EGCB_LV },
+ {0x00cd5d, 0x00cd77, EGCB_LVT },
+ {0x00cd78, 0x00cd78, EGCB_LV },
+ {0x00cd79, 0x00cd93, EGCB_LVT },
+ {0x00cd94, 0x00cd94, EGCB_LV },
+ {0x00cd95, 0x00cdaf, EGCB_LVT },
+ {0x00cdb0, 0x00cdb0, EGCB_LV },
+ {0x00cdb1, 0x00cdcb, EGCB_LVT },
+ {0x00cdcc, 0x00cdcc, EGCB_LV },
+ {0x00cdcd, 0x00cde7, EGCB_LVT },
+ {0x00cde8, 0x00cde8, EGCB_LV },
+ {0x00cde9, 0x00ce03, EGCB_LVT },
+ {0x00ce04, 0x00ce04, EGCB_LV },
+ {0x00ce05, 0x00ce1f, EGCB_LVT },
+ {0x00ce20, 0x00ce20, EGCB_LV },
+ {0x00ce21, 0x00ce3b, EGCB_LVT },
+ {0x00ce3c, 0x00ce3c, EGCB_LV },
+ {0x00ce3d, 0x00ce57, EGCB_LVT },
+ {0x00ce58, 0x00ce58, EGCB_LV },
+ {0x00ce59, 0x00ce73, EGCB_LVT },
+ {0x00ce74, 0x00ce74, EGCB_LV },
+ {0x00ce75, 0x00ce8f, EGCB_LVT },
+ {0x00ce90, 0x00ce90, EGCB_LV },
+ {0x00ce91, 0x00ceab, EGCB_LVT },
+ {0x00ceac, 0x00ceac, EGCB_LV },
+ {0x00cead, 0x00cec7, EGCB_LVT },
+ {0x00cec8, 0x00cec8, EGCB_LV },
+ {0x00cec9, 0x00cee3, EGCB_LVT },
+ {0x00cee4, 0x00cee4, EGCB_LV },
+ {0x00cee5, 0x00ceff, EGCB_LVT },
+ {0x00cf00, 0x00cf00, EGCB_LV },
+ {0x00cf01, 0x00cf1b, EGCB_LVT },
+ {0x00cf1c, 0x00cf1c, EGCB_LV },
+ {0x00cf1d, 0x00cf37, EGCB_LVT },
+ {0x00cf38, 0x00cf38, EGCB_LV },
+ {0x00cf39, 0x00cf53, EGCB_LVT },
+ {0x00cf54, 0x00cf54, EGCB_LV },
+ {0x00cf55, 0x00cf6f, EGCB_LVT },
+ {0x00cf70, 0x00cf70, EGCB_LV },
+ {0x00cf71, 0x00cf8b, EGCB_LVT },
+ {0x00cf8c, 0x00cf8c, EGCB_LV },
+ {0x00cf8d, 0x00cfa7, EGCB_LVT },
+ {0x00cfa8, 0x00cfa8, EGCB_LV },
+ {0x00cfa9, 0x00cfc3, EGCB_LVT },
+ {0x00cfc4, 0x00cfc4, EGCB_LV },
+ {0x00cfc5, 0x00cfdf, EGCB_LVT },
+ {0x00cfe0, 0x00cfe0, EGCB_LV },
+ {0x00cfe1, 0x00cffb, EGCB_LVT },
+ {0x00cffc, 0x00cffc, EGCB_LV },
+ {0x00cffd, 0x00d017, EGCB_LVT },
+ {0x00d018, 0x00d018, EGCB_LV },
+ {0x00d019, 0x00d033, EGCB_LVT },
+ {0x00d034, 0x00d034, EGCB_LV },
+ {0x00d035, 0x00d04f, EGCB_LVT },
+ {0x00d050, 0x00d050, EGCB_LV },
+ {0x00d051, 0x00d06b, EGCB_LVT },
+ {0x00d06c, 0x00d06c, EGCB_LV },
+ {0x00d06d, 0x00d087, EGCB_LVT },
+ {0x00d088, 0x00d088, EGCB_LV },
+ {0x00d089, 0x00d0a3, EGCB_LVT },
+ {0x00d0a4, 0x00d0a4, EGCB_LV },
+ {0x00d0a5, 0x00d0bf, EGCB_LVT },
+ {0x00d0c0, 0x00d0c0, EGCB_LV },
+ {0x00d0c1, 0x00d0db, EGCB_LVT },
+ {0x00d0dc, 0x00d0dc, EGCB_LV },
+ {0x00d0dd, 0x00d0f7, EGCB_LVT },
+ {0x00d0f8, 0x00d0f8, EGCB_LV },
+ {0x00d0f9, 0x00d113, EGCB_LVT },
+ {0x00d114, 0x00d114, EGCB_LV },
+ {0x00d115, 0x00d12f, EGCB_LVT },
+ {0x00d130, 0x00d130, EGCB_LV },
+ {0x00d131, 0x00d14b, EGCB_LVT },
+ {0x00d14c, 0x00d14c, EGCB_LV },
+ {0x00d14d, 0x00d167, EGCB_LVT },
+ {0x00d168, 0x00d168, EGCB_LV },
+ {0x00d169, 0x00d183, EGCB_LVT },
+ {0x00d184, 0x00d184, EGCB_LV },
+ {0x00d185, 0x00d19f, EGCB_LVT },
+ {0x00d1a0, 0x00d1a0, EGCB_LV },
+ {0x00d1a1, 0x00d1bb, EGCB_LVT },
+ {0x00d1bc, 0x00d1bc, EGCB_LV },
+ {0x00d1bd, 0x00d1d7, EGCB_LVT },
+ {0x00d1d8, 0x00d1d8, EGCB_LV },
+ {0x00d1d9, 0x00d1f3, EGCB_LVT },
+ {0x00d1f4, 0x00d1f4, EGCB_LV },
+ {0x00d1f5, 0x00d20f, EGCB_LVT },
+ {0x00d210, 0x00d210, EGCB_LV },
+ {0x00d211, 0x00d22b, EGCB_LVT },
+ {0x00d22c, 0x00d22c, EGCB_LV },
+ {0x00d22d, 0x00d247, EGCB_LVT },
+ {0x00d248, 0x00d248, EGCB_LV },
+ {0x00d249, 0x00d263, EGCB_LVT },
+ {0x00d264, 0x00d264, EGCB_LV },
+ {0x00d265, 0x00d27f, EGCB_LVT },
+ {0x00d280, 0x00d280, EGCB_LV },
+ {0x00d281, 0x00d29b, EGCB_LVT },
+ {0x00d29c, 0x00d29c, EGCB_LV },
+ {0x00d29d, 0x00d2b7, EGCB_LVT },
+ {0x00d2b8, 0x00d2b8, EGCB_LV },
+ {0x00d2b9, 0x00d2d3, EGCB_LVT },
+ {0x00d2d4, 0x00d2d4, EGCB_LV },
+ {0x00d2d5, 0x00d2ef, EGCB_LVT },
+ {0x00d2f0, 0x00d2f0, EGCB_LV },
+ {0x00d2f1, 0x00d30b, EGCB_LVT },
+ {0x00d30c, 0x00d30c, EGCB_LV },
+ {0x00d30d, 0x00d327, EGCB_LVT },
+ {0x00d328, 0x00d328, EGCB_LV },
+ {0x00d329, 0x00d343, EGCB_LVT },
+ {0x00d344, 0x00d344, EGCB_LV },
+ {0x00d345, 0x00d35f, EGCB_LVT },
+ {0x00d360, 0x00d360, EGCB_LV },
+ {0x00d361, 0x00d37b, EGCB_LVT },
+ {0x00d37c, 0x00d37c, EGCB_LV },
+ {0x00d37d, 0x00d397, EGCB_LVT },
+ {0x00d398, 0x00d398, EGCB_LV },
+ {0x00d399, 0x00d3b3, EGCB_LVT },
+ {0x00d3b4, 0x00d3b4, EGCB_LV },
+ {0x00d3b5, 0x00d3cf, EGCB_LVT },
+ {0x00d3d0, 0x00d3d0, EGCB_LV },
+ {0x00d3d1, 0x00d3eb, EGCB_LVT },
+ {0x00d3ec, 0x00d3ec, EGCB_LV },
+ {0x00d3ed, 0x00d407, EGCB_LVT },
+ {0x00d408, 0x00d408, EGCB_LV },
+ {0x00d409, 0x00d423, EGCB_LVT },
+ {0x00d424, 0x00d424, EGCB_LV },
+ {0x00d425, 0x00d43f, EGCB_LVT },
+ {0x00d440, 0x00d440, EGCB_LV },
+ {0x00d441, 0x00d45b, EGCB_LVT },
+ {0x00d45c, 0x00d45c, EGCB_LV },
+ {0x00d45d, 0x00d477, EGCB_LVT },
+ {0x00d478, 0x00d478, EGCB_LV },
+ {0x00d479, 0x00d493, EGCB_LVT },
+ {0x00d494, 0x00d494, EGCB_LV },
+ {0x00d495, 0x00d4af, EGCB_LVT },
+ {0x00d4b0, 0x00d4b0, EGCB_LV },
+ {0x00d4b1, 0x00d4cb, EGCB_LVT },
+ {0x00d4cc, 0x00d4cc, EGCB_LV },
+ {0x00d4cd, 0x00d4e7, EGCB_LVT },
+ {0x00d4e8, 0x00d4e8, EGCB_LV },
+ {0x00d4e9, 0x00d503, EGCB_LVT },
+ {0x00d504, 0x00d504, EGCB_LV },
+ {0x00d505, 0x00d51f, EGCB_LVT },
+ {0x00d520, 0x00d520, EGCB_LV },
+ {0x00d521, 0x00d53b, EGCB_LVT },
+ {0x00d53c, 0x00d53c, EGCB_LV },
+ {0x00d53d, 0x00d557, EGCB_LVT },
+ {0x00d558, 0x00d558, EGCB_LV },
+ {0x00d559, 0x00d573, EGCB_LVT },
+ {0x00d574, 0x00d574, EGCB_LV },
+ {0x00d575, 0x00d58f, EGCB_LVT },
+ {0x00d590, 0x00d590, EGCB_LV },
+ {0x00d591, 0x00d5ab, EGCB_LVT },
+ {0x00d5ac, 0x00d5ac, EGCB_LV },
+ {0x00d5ad, 0x00d5c7, EGCB_LVT },
+ {0x00d5c8, 0x00d5c8, EGCB_LV },
+ {0x00d5c9, 0x00d5e3, EGCB_LVT },
+ {0x00d5e4, 0x00d5e4, EGCB_LV },
+ {0x00d5e5, 0x00d5ff, EGCB_LVT },
+ {0x00d600, 0x00d600, EGCB_LV },
+ {0x00d601, 0x00d61b, EGCB_LVT },
+ {0x00d61c, 0x00d61c, EGCB_LV },
+ {0x00d61d, 0x00d637, EGCB_LVT },
+ {0x00d638, 0x00d638, EGCB_LV },
+ {0x00d639, 0x00d653, EGCB_LVT },
+ {0x00d654, 0x00d654, EGCB_LV },
+ {0x00d655, 0x00d66f, EGCB_LVT },
+ {0x00d670, 0x00d670, EGCB_LV },
+ {0x00d671, 0x00d68b, EGCB_LVT },
+ {0x00d68c, 0x00d68c, EGCB_LV },
+ {0x00d68d, 0x00d6a7, EGCB_LVT },
+ {0x00d6a8, 0x00d6a8, EGCB_LV },
+ {0x00d6a9, 0x00d6c3, EGCB_LVT },
+ {0x00d6c4, 0x00d6c4, EGCB_LV },
+ {0x00d6c5, 0x00d6df, EGCB_LVT },
+ {0x00d6e0, 0x00d6e0, EGCB_LV },
+ {0x00d6e1, 0x00d6fb, EGCB_LVT },
+ {0x00d6fc, 0x00d6fc, EGCB_LV },
+ {0x00d6fd, 0x00d717, EGCB_LVT },
+ {0x00d718, 0x00d718, EGCB_LV },
+ {0x00d719, 0x00d733, EGCB_LVT },
+ {0x00d734, 0x00d734, EGCB_LV },
+ {0x00d735, 0x00d74f, EGCB_LVT },
+ {0x00d750, 0x00d750, EGCB_LV },
+ {0x00d751, 0x00d76b, EGCB_LVT },
+ {0x00d76c, 0x00d76c, EGCB_LV },
+ {0x00d76d, 0x00d787, EGCB_LVT },
+ {0x00d788, 0x00d788, EGCB_LV },
+ {0x00d789, 0x00d7a3, EGCB_LVT },
+ {0x00d7b0, 0x00d7c6, EGCB_V },
+ {0x00d7cb, 0x00d7fb, EGCB_T },
+ {0x00d800, 0x00dfff, EGCB_Control },
+ {0x00fb1e, 0x00fb1e, EGCB_Extend },
+ {0x00fe00, 0x00fe0f, EGCB_Extend },
+ {0x00fe20, 0x00fe2f, EGCB_Extend },
+ {0x00feff, 0x00feff, EGCB_Control },
+ {0x00ff9e, 0x00ff9f, EGCB_Extend },
+ {0x00fff0, 0x00fffb, EGCB_Control },
+ {0x0101fd, 0x0101fd, EGCB_Extend },
+ {0x0102e0, 0x0102e0, EGCB_Extend },
+ {0x010376, 0x01037a, EGCB_Extend },
+ {0x010a01, 0x010a03, EGCB_Extend },
+ {0x010a05, 0x010a06, EGCB_Extend },
+ {0x010a0c, 0x010a0f, EGCB_Extend },
+ {0x010a38, 0x010a3a, EGCB_Extend },
+ {0x010a3f, 0x010a3f, EGCB_Extend },
+ {0x010ae5, 0x010ae6, EGCB_Extend },
+ {0x011000, 0x011000, EGCB_SpacingMark },
+ {0x011001, 0x011001, EGCB_Extend },
+ {0x011002, 0x011002, EGCB_SpacingMark },
+ {0x011038, 0x011046, EGCB_Extend },
+ {0x01107f, 0x011081, EGCB_Extend },
+ {0x011082, 0x011082, EGCB_SpacingMark },
+ {0x0110b0, 0x0110b2, EGCB_SpacingMark },
+ {0x0110b3, 0x0110b6, EGCB_Extend },
+ {0x0110b7, 0x0110b8, EGCB_SpacingMark },
+ {0x0110b9, 0x0110ba, EGCB_Extend },
+ {0x0110bd, 0x0110bd, EGCB_Prepend },
+ {0x011100, 0x011102, EGCB_Extend },
+ {0x011127, 0x01112b, EGCB_Extend },
+ {0x01112c, 0x01112c, EGCB_SpacingMark },
+ {0x01112d, 0x011134, EGCB_Extend },
+ {0x011173, 0x011173, EGCB_Extend },
+ {0x011180, 0x011181, EGCB_Extend },
+ {0x011182, 0x011182, EGCB_SpacingMark },
+ {0x0111b3, 0x0111b5, EGCB_SpacingMark },
+ {0x0111b6, 0x0111be, EGCB_Extend },
+ {0x0111bf, 0x0111c0, EGCB_SpacingMark },
+ {0x0111c2, 0x0111c3, EGCB_Prepend },
+ {0x0111ca, 0x0111cc, EGCB_Extend },
+ {0x01122c, 0x01122e, EGCB_SpacingMark },
+ {0x01122f, 0x011231, EGCB_Extend },
+ {0x011232, 0x011233, EGCB_SpacingMark },
+ {0x011234, 0x011234, EGCB_Extend },
+ {0x011235, 0x011235, EGCB_SpacingMark },
+ {0x011236, 0x011237, EGCB_Extend },
+ {0x01123e, 0x01123e, EGCB_Extend },
+ {0x0112df, 0x0112df, EGCB_Extend },
+ {0x0112e0, 0x0112e2, EGCB_SpacingMark },
+ {0x0112e3, 0x0112ea, EGCB_Extend },
+ {0x011300, 0x011301, EGCB_Extend },
+ {0x011302, 0x011303, EGCB_SpacingMark },
+ {0x01133c, 0x01133c, EGCB_Extend },
+ {0x01133e, 0x01133e, EGCB_Extend },
+ {0x01133f, 0x01133f, EGCB_SpacingMark },
+ {0x011340, 0x011340, EGCB_Extend },
+ {0x011341, 0x011344, EGCB_SpacingMark },
+ {0x011347, 0x011348, EGCB_SpacingMark },
+ {0x01134b, 0x01134d, EGCB_SpacingMark },
+ {0x011357, 0x011357, EGCB_Extend },
+ {0x011362, 0x011363, EGCB_SpacingMark },
+ {0x011366, 0x01136c, EGCB_Extend },
+ {0x011370, 0x011374, EGCB_Extend },
+ {0x011435, 0x011437, EGCB_SpacingMark },
+ {0x011438, 0x01143f, EGCB_Extend },
+ {0x011440, 0x011441, EGCB_SpacingMark },
+ {0x011442, 0x011444, EGCB_Extend },
+ {0x011445, 0x011445, EGCB_SpacingMark },
+ {0x011446, 0x011446, EGCB_Extend },
+ {0x0114b0, 0x0114b0, EGCB_Extend },
+ {0x0114b1, 0x0114b2, EGCB_SpacingMark },
+ {0x0114b3, 0x0114b8, EGCB_Extend },
+ {0x0114b9, 0x0114b9, EGCB_SpacingMark },
+ {0x0114ba, 0x0114ba, EGCB_Extend },
+ {0x0114bb, 0x0114bc, EGCB_SpacingMark },
+ {0x0114bd, 0x0114bd, EGCB_Extend },
+ {0x0114be, 0x0114be, EGCB_SpacingMark },
+ {0x0114bf, 0x0114c0, EGCB_Extend },
+ {0x0114c1, 0x0114c1, EGCB_SpacingMark },
+ {0x0114c2, 0x0114c3, EGCB_Extend },
+ {0x0115af, 0x0115af, EGCB_Extend },
+ {0x0115b0, 0x0115b1, EGCB_SpacingMark },
+ {0x0115b2, 0x0115b5, EGCB_Extend },
+ {0x0115b8, 0x0115bb, EGCB_SpacingMark },
+ {0x0115bc, 0x0115bd, EGCB_Extend },
+ {0x0115be, 0x0115be, EGCB_SpacingMark },
+ {0x0115bf, 0x0115c0, EGCB_Extend },
+ {0x0115dc, 0x0115dd, EGCB_Extend },
+ {0x011630, 0x011632, EGCB_SpacingMark },
+ {0x011633, 0x01163a, EGCB_Extend },
+ {0x01163b, 0x01163c, EGCB_SpacingMark },
+ {0x01163d, 0x01163d, EGCB_Extend },
+ {0x01163e, 0x01163e, EGCB_SpacingMark },
+ {0x01163f, 0x011640, EGCB_Extend },
+ {0x0116ab, 0x0116ab, EGCB_Extend },
+ {0x0116ac, 0x0116ac, EGCB_SpacingMark },
+ {0x0116ad, 0x0116ad, EGCB_Extend },
+ {0x0116ae, 0x0116af, EGCB_SpacingMark },
+ {0x0116b0, 0x0116b5, EGCB_Extend },
+ {0x0116b6, 0x0116b6, EGCB_SpacingMark },
+ {0x0116b7, 0x0116b7, EGCB_Extend },
+ {0x01171d, 0x01171f, EGCB_Extend },
+ {0x011720, 0x011721, EGCB_SpacingMark },
+ {0x011722, 0x011725, EGCB_Extend },
+ {0x011726, 0x011726, EGCB_SpacingMark },
+ {0x011727, 0x01172b, EGCB_Extend },
+ {0x011a01, 0x011a06, EGCB_Extend },
+ {0x011a07, 0x011a08, EGCB_SpacingMark },
+ {0x011a09, 0x011a0a, EGCB_Extend },
+ {0x011a33, 0x011a38, EGCB_Extend },
+ {0x011a39, 0x011a39, EGCB_SpacingMark },
+ {0x011a3a, 0x011a3a, EGCB_Prepend },
+ {0x011a3b, 0x011a3e, EGCB_Extend },
+ {0x011a47, 0x011a47, EGCB_Extend },
+ {0x011a51, 0x011a56, EGCB_Extend },
+ {0x011a57, 0x011a58, EGCB_SpacingMark },
+ {0x011a59, 0x011a5b, EGCB_Extend },
+ {0x011a86, 0x011a89, EGCB_Prepend },
+ {0x011a8a, 0x011a96, EGCB_Extend },
+ {0x011a97, 0x011a97, EGCB_SpacingMark },
+ {0x011a98, 0x011a99, EGCB_Extend },
+ {0x011c2f, 0x011c2f, EGCB_SpacingMark },
+ {0x011c30, 0x011c36, EGCB_Extend },
+ {0x011c38, 0x011c3d, EGCB_Extend },
+ {0x011c3e, 0x011c3e, EGCB_SpacingMark },
+ {0x011c3f, 0x011c3f, EGCB_Extend },
+ {0x011c92, 0x011ca7, EGCB_Extend },
+ {0x011ca9, 0x011ca9, EGCB_SpacingMark },
+ {0x011caa, 0x011cb0, EGCB_Extend },
+ {0x011cb1, 0x011cb1, EGCB_SpacingMark },
+ {0x011cb2, 0x011cb3, EGCB_Extend },
+ {0x011cb4, 0x011cb4, EGCB_SpacingMark },
+ {0x011cb5, 0x011cb6, EGCB_Extend },
+ {0x011d31, 0x011d36, EGCB_Extend },
+ {0x011d3a, 0x011d3a, EGCB_Extend },
+ {0x011d3c, 0x011d3d, EGCB_Extend },
+ {0x011d3f, 0x011d45, EGCB_Extend },
+ {0x011d46, 0x011d46, EGCB_Prepend },
+ {0x011d47, 0x011d47, EGCB_Extend },
+ {0x016af0, 0x016af4, EGCB_Extend },
+ {0x016b30, 0x016b36, EGCB_Extend },
+ {0x016f51, 0x016f7e, EGCB_SpacingMark },
+ {0x016f8f, 0x016f92, EGCB_Extend },
+ {0x01bc9d, 0x01bc9e, EGCB_Extend },
+ {0x01bca0, 0x01bca3, EGCB_Control },
+ {0x01d165, 0x01d165, EGCB_Extend },
+ {0x01d166, 0x01d166, EGCB_SpacingMark },
+ {0x01d167, 0x01d169, EGCB_Extend },
+ {0x01d16d, 0x01d16d, EGCB_SpacingMark },
+ {0x01d16e, 0x01d172, EGCB_Extend },
+ {0x01d173, 0x01d17a, EGCB_Control },
+ {0x01d17b, 0x01d182, EGCB_Extend },
+ {0x01d185, 0x01d18b, EGCB_Extend },
+ {0x01d1aa, 0x01d1ad, EGCB_Extend },
+ {0x01d242, 0x01d244, EGCB_Extend },
+ {0x01da00, 0x01da36, EGCB_Extend },
+ {0x01da3b, 0x01da6c, EGCB_Extend },
+ {0x01da75, 0x01da75, EGCB_Extend },
+ {0x01da84, 0x01da84, EGCB_Extend },
+ {0x01da9b, 0x01da9f, EGCB_Extend },
+ {0x01daa1, 0x01daaf, EGCB_Extend },
+ {0x01e000, 0x01e006, EGCB_Extend },
+ {0x01e008, 0x01e018, EGCB_Extend },
+ {0x01e01b, 0x01e021, EGCB_Extend },
+ {0x01e023, 0x01e024, EGCB_Extend },
+ {0x01e026, 0x01e02a, EGCB_Extend },
+ {0x01e8d0, 0x01e8d6, EGCB_Extend },
+ {0x01e944, 0x01e94a, EGCB_Extend },
+ {0x01f1e6, 0x01f1ff, EGCB_Regional_Indicator },
+ {0x01f308, 0x01f308, EGCB_Glue_After_Zwj },
+ {0x01f33e, 0x01f33e, EGCB_Glue_After_Zwj },
+ {0x01f373, 0x01f373, EGCB_Glue_After_Zwj },
+ {0x01f385, 0x01f385, EGCB_E_Base },
+ {0x01f393, 0x01f393, EGCB_Glue_After_Zwj },
+ {0x01f3a4, 0x01f3a4, EGCB_Glue_After_Zwj },
+ {0x01f3a8, 0x01f3a8, EGCB_Glue_After_Zwj },
+ {0x01f3c2, 0x01f3c4, EGCB_E_Base },
+ {0x01f3c7, 0x01f3c7, EGCB_E_Base },
+ {0x01f3ca, 0x01f3cc, EGCB_E_Base },
+ {0x01f3eb, 0x01f3eb, EGCB_Glue_After_Zwj },
+ {0x01f3ed, 0x01f3ed, EGCB_Glue_After_Zwj },
+ {0x01f3fb, 0x01f3ff, EGCB_E_Modifier },
+ {0x01f442, 0x01f443, EGCB_E_Base },
+ {0x01f446, 0x01f450, EGCB_E_Base },
+ {0x01f466, 0x01f469, EGCB_E_Base_GAZ },
+ {0x01f46e, 0x01f46e, EGCB_E_Base },
+ {0x01f470, 0x01f478, EGCB_E_Base },
+ {0x01f47c, 0x01f47c, EGCB_E_Base },
+ {0x01f481, 0x01f483, EGCB_E_Base },
+ {0x01f485, 0x01f487, EGCB_E_Base },
+ {0x01f48b, 0x01f48b, EGCB_Glue_After_Zwj },
+ {0x01f4aa, 0x01f4aa, EGCB_E_Base },
+ {0x01f4bb, 0x01f4bc, EGCB_Glue_After_Zwj },
+ {0x01f527, 0x01f527, EGCB_Glue_After_Zwj },
+ {0x01f52c, 0x01f52c, EGCB_Glue_After_Zwj },
+ {0x01f574, 0x01f575, EGCB_E_Base },
+ {0x01f57a, 0x01f57a, EGCB_E_Base },
+ {0x01f590, 0x01f590, EGCB_E_Base },
+ {0x01f595, 0x01f596, EGCB_E_Base },
+ {0x01f5e8, 0x01f5e8, EGCB_Glue_After_Zwj },
+ {0x01f645, 0x01f647, EGCB_E_Base },
+ {0x01f64b, 0x01f64f, EGCB_E_Base },
+ {0x01f680, 0x01f680, EGCB_Glue_After_Zwj },
+ {0x01f692, 0x01f692, EGCB_Glue_After_Zwj },
+ {0x01f6a3, 0x01f6a3, EGCB_E_Base },
+ {0x01f6b4, 0x01f6b6, EGCB_E_Base },
+ {0x01f6c0, 0x01f6c0, EGCB_E_Base },
+ {0x01f6cc, 0x01f6cc, EGCB_E_Base },
+ {0x01f918, 0x01f91c, EGCB_E_Base },
+ {0x01f91e, 0x01f91f, EGCB_E_Base },
+ {0x01f926, 0x01f926, EGCB_E_Base },
+ {0x01f930, 0x01f939, EGCB_E_Base },
+ {0x01f93d, 0x01f93e, EGCB_E_Base },
+ {0x01f9d1, 0x01f9dd, EGCB_E_Base },
+ {0x0e0000, 0x0e001f, EGCB_Control },
+ {0x0e0020, 0x0e007f, EGCB_Extend },
+ {0x0e0080, 0x0e00ff, EGCB_Control },
+ {0x0e0100, 0x0e01ef, EGCB_Extend },
+ {0x0e01f0, 0x0e0fff, EGCB_Control }
+};
diff --git a/src/unicode_property_data.c b/src/unicode_property_data.c
index 4ca438f..1807de4 100644
--- a/src/unicode_property_data.c
+++ b/src/unicode_property_data.c
@@ -1,5 +1,5 @@
-/* ANSI-C code produced by gperf version 3.0.3 */
-/* Command-line: /Library/Developer/CommandLineTools/usr/bin/gperf -T -C -c -t -j1 -L ANSI-C --ignore-case -N unicode_lookup_property_name --output-file gperf.tmp unicode_property_data.gperf */
+/* ANSI-C code produced by gperf version 3.0.4 */
+/* Command-line: gperf -T -C -c -t -j1 -L ANSI-C --ignore-case -N unicode_lookup_property_name --output-file gperf.tmp unicode_property_data.gperf */
/* Computed positions: -k'1-3,5-6,12,16,$' */
#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
@@ -4766,12 +4766,102 @@ CR_ASCII[] = { 1,
}; /* END of CR_ASCII */
+/* PROPERTY: 'ASCII_Hex_Digit': Binary Property */
+#define CR_ASCII_Hex_Digit CR_XDigit
+
+/* PROPERTY: 'Ahom': Script */
+static const OnigCodePoint
+CR_Ahom[] = { 3,
+0x11700, 0x11719,
+0x1171d, 0x1172b,
+0x11730, 0x1173f,
+}; /* END of CR_Ahom */
+
+/* PROPERTY: 'Alphabetic': Derived Property */
+#define CR_Alphabetic CR_Alpha
+
+/* PROPERTY: 'Anatolian_Hieroglyphs': Script */
+static const OnigCodePoint
+CR_Anatolian_Hieroglyphs[] = { 1,
+0x14400, 0x14646,
+}; /* END of CR_Anatolian_Hieroglyphs */
+
/* PROPERTY: 'Any': - */
static const OnigCodePoint
CR_Any[] = { 1,
0x0000, 0x10ffff,
}; /* END of CR_Any */
+/* PROPERTY: 'Arabic': Script */
+static const OnigCodePoint
+CR_Arabic[] = { 54,
+0x0600, 0x0604,
+0x0606, 0x060b,
+0x060d, 0x061a,
+0x061e, 0x061e,
+0x0620, 0x063f,
+0x0641, 0x064a,
+0x0656, 0x066f,
+0x0671, 0x06dc,
+0x06de, 0x06ff,
+0x0750, 0x077f,
+0x08a0, 0x08b4,
+0x08e3, 0x08ff,
+0xfb50, 0xfbc1,
+0xfbd3, 0xfd3d,
+0xfd50, 0xfd8f,
+0xfd92, 0xfdc7,
+0xfdf0, 0xfdfd,
+0xfe70, 0xfe74,
+0xfe76, 0xfefc,
+0x10e60, 0x10e7e,
+0x1ee00, 0x1ee03,
+0x1ee05, 0x1ee1f,
+0x1ee21, 0x1ee22,
+0x1ee24, 0x1ee24,
+0x1ee27, 0x1ee27,
+0x1ee29, 0x1ee32,
+0x1ee34, 0x1ee37,
+0x1ee39, 0x1ee39,
+0x1ee3b, 0x1ee3b,
+0x1ee42, 0x1ee42,
+0x1ee47, 0x1ee47,
+0x1ee49, 0x1ee49,
+0x1ee4b, 0x1ee4b,
+0x1ee4d, 0x1ee4f,
+0x1ee51, 0x1ee52,
+0x1ee54, 0x1ee54,
+0x1ee57, 0x1ee57,
+0x1ee59, 0x1ee59,
+0x1ee5b, 0x1ee5b,
+0x1ee5d, 0x1ee5d,
+0x1ee5f, 0x1ee5f,
+0x1ee61, 0x1ee62,
+0x1ee64, 0x1ee64,
+0x1ee67, 0x1ee6a,
+0x1ee6c, 0x1ee72,
+0x1ee74, 0x1ee77,
+0x1ee79, 0x1ee7c,
+0x1ee7e, 0x1ee7e,
+0x1ee80, 0x1ee89,
+0x1ee8b, 0x1ee9b,
+0x1eea1, 0x1eea3,
+0x1eea5, 0x1eea9,
+0x1eeab, 0x1eebb,
+0x1eef0, 0x1eef1,
+}; /* END of CR_Arabic */
+
+/* PROPERTY: 'Armenian': Script */
+static const OnigCodePoint
+CR_Armenian[] = { 6,
+0x0531, 0x0556,
+0x0559, 0x055f,
+0x0561, 0x0587,
+0x058a, 0x058a,
+0x058d, 0x058f,
+0xfb13, 0xfb17,
+}; /* END of CR_Armenian */
+
/* PROPERTY: 'Assigned': - */
static const OnigCodePoint
CR_Assigned[] = { 613,
@@ -5390,6 +5480,104 @@ CR_Assigned[] = { 613,
0x100000, 0x10fffd,
}; /* END of CR_Assigned */
+/* PROPERTY: 'Avestan': Script */
+static const OnigCodePoint
+CR_Avestan[] = { 2,
+0x10b00, 0x10b35,
+0x10b39, 0x10b3f,
+}; /* END of CR_Avestan */
+
+/* PROPERTY: 'Balinese': Script */
+static const OnigCodePoint
+CR_Balinese[] = { 2,
+0x1b00, 0x1b4b,
+0x1b50, 0x1b7c,
+}; /* END of CR_Balinese */
+
+/* PROPERTY: 'Bamum': Script */
+static const OnigCodePoint
+CR_Bamum[] = { 2,
+0xa6a0, 0xa6f7,
+0x16800, 0x16a38,
+}; /* END of CR_Bamum */
+
+/* PROPERTY: 'Bassa_Vah': Script */
+static const OnigCodePoint
+CR_Bassa_Vah[] = { 2,
+0x16ad0, 0x16aed,
+0x16af0, 0x16af5,
+}; /* END of CR_Bassa_Vah */
+
+/* PROPERTY: 'Batak': Script */
+static const OnigCodePoint
+CR_Batak[] = { 2,
+0x1bc0, 0x1bf3,
+0x1bfc, 0x1bff,
+}; /* END of CR_Batak */
+
+/* PROPERTY: 'Bengali': Script */
+static const OnigCodePoint
+CR_Bengali[] = { 14,
+0x0980, 0x0983,
+0x0985, 0x098c,
+0x098f, 0x0990,
+0x0993, 0x09a8,
+0x09aa, 0x09b0,
+0x09b2, 0x09b2,
+0x09b6, 0x09b9,
+0x09bc, 0x09c4,
+0x09c7, 0x09c8,
+0x09cb, 0x09ce,
+0x09d7, 0x09d7,
+0x09dc, 0x09dd,
+0x09df, 0x09e3,
+0x09e6, 0x09fb,
+}; /* END of CR_Bengali */
+
+/* PROPERTY: 'Bidi_Control': Binary Property */
+static const OnigCodePoint
+CR_Bidi_Control[] = { 4,
+0x061c, 0x061c,
+0x200e, 0x200f,
+0x202a, 0x202e,
+0x2066, 0x2069,
+}; /* END of CR_Bidi_Control */
+
+/* PROPERTY: 'Bopomofo': Script */
+static const OnigCodePoint
+CR_Bopomofo[] = { 3,
+0x02ea, 0x02eb,
+0x3105, 0x312d,
+0x31a0, 0x31ba,
+}; /* END of CR_Bopomofo */
+
+/* PROPERTY: 'Brahmi': Script */
+static const OnigCodePoint
+CR_Brahmi[] = { 3,
+0x11000, 0x1104d,
+0x11052, 0x1106f,
+0x1107f, 0x1107f,
+}; /* END of CR_Brahmi */
+
+/* PROPERTY: 'Braille': Script */
+static const OnigCodePoint
+CR_Braille[] = { 1,
+0x2800, 0x28ff,
+}; /* END of CR_Braille */
+
+/* PROPERTY: 'Buginese': Script */
+static const OnigCodePoint
+CR_Buginese[] = { 2,
+0x1a00, 0x1a1b,
+0x1a1e, 0x1a1f,
+}; /* END of CR_Buginese */
+
+/* PROPERTY: 'Buhid': Script */
+static const OnigCodePoint
+CR_Buhid[] = { 1,
+0x1740, 0x1753,
+}; /* END of CR_Buhid */
+
/* PROPERTY: 'C': Major Category */
static const OnigCodePoint
CR_C[] = { 616,
@@ -6011,6 +6199,513 @@ CR_C[] = { 616,
0xe01f0, 0x10ffff,
}; /* END of CR_C */
+/* PROPERTY: 'Canadian_Aboriginal': Script */
+static const OnigCodePoint
+CR_Canadian_Aboriginal[] = { 2,
+0x1400, 0x167f,
+0x18b0, 0x18f5,
+}; /* END of CR_Canadian_Aboriginal */
+
+/* PROPERTY: 'Carian': Script */
+static const OnigCodePoint
+CR_Carian[] = { 1,
+0x102a0, 0x102d0,
+}; /* END of CR_Carian */
+
+/* PROPERTY: 'Case_Ignorable': Derived Property */
+static const OnigCodePoint
+CR_Case_Ignorable[] = { 346,
+0x0027, 0x0027,
+0x002e, 0x002e,
+0x003a, 0x003a,
+0x005e, 0x005e,
+0x0060, 0x0060,
+0x00a8, 0x00a8,
+0x00ad, 0x00ad,
+0x00af, 0x00af,
+0x00b4, 0x00b4,
+0x00b7, 0x00b8,
+0x02b0, 0x036f,
+0x0374, 0x0375,
+0x037a, 0x037a,
+0x0384, 0x0385,
+0x0387, 0x0387,
+0x0483, 0x0489,
+0x0559, 0x0559,
+0x0591, 0x05bd,
+0x05bf, 0x05bf,
+0x05c1, 0x05c2,
+0x05c4, 0x05c5,
+0x05c7, 0x05c7,
+0x05f4, 0x05f4,
+0x0600, 0x0605,
+0x0610, 0x061a,
+0x061c, 0x061c,
+0x0640, 0x0640,
+0x064b, 0x065f,
+0x0670, 0x0670,
+0x06d6, 0x06dd,
+0x06df, 0x06e8,
+0x06ea, 0x06ed,
+0x070f, 0x070f,
+0x0711, 0x0711,
+0x0730, 0x074a,
+0x07a6, 0x07b0,
+0x07eb, 0x07f5,
+0x07fa, 0x07fa,
+0x0816, 0x082d,
+0x0859, 0x085b,
+0x08e3, 0x0902,
+0x093a, 0x093a,
+0x093c, 0x093c,
+0x0941, 0x0948,
+0x094d, 0x094d,
+0x0951, 0x0957,
+0x0962, 0x0963,
+0x0971, 0x0971,
+0x0981, 0x0981,
+0x09bc, 0x09bc,
+0x09c1, 0x09c4,
+0x09cd, 0x09cd,
+0x09e2, 0x09e3,
+0x0a01, 0x0a02,
+0x0a3c, 0x0a3c,
+0x0a41, 0x0a42,
+0x0a47, 0x0a48,
+0x0a4b, 0x0a4d,
+0x0a51, 0x0a51,
+0x0a70, 0x0a71,
+0x0a75, 0x0a75,
+0x0a81, 0x0a82,
+0x0abc, 0x0abc,
+0x0ac1, 0x0ac5,
+0x0ac7, 0x0ac8,
+0x0acd, 0x0acd,
+0x0ae2, 0x0ae3,
+0x0b01, 0x0b01,
+0x0b3c, 0x0b3c,
+0x0b3f, 0x0b3f,
+0x0b41, 0x0b44,
+0x0b4d, 0x0b4d,
+0x0b56, 0x0b56,
+0x0b62, 0x0b63,
+0x0b82, 0x0b82,
+0x0bc0, 0x0bc0,
+0x0bcd, 0x0bcd,
+0x0c00, 0x0c00,
+0x0c3e, 0x0c40,
+0x0c46, 0x0c48,
+0x0c4a, 0x0c4d,
+0x0c55, 0x0c56,
+0x0c62, 0x0c63,
+0x0c81, 0x0c81,
+0x0cbc, 0x0cbc,
+0x0cbf, 0x0cbf,
+0x0cc6, 0x0cc6,
+0x0ccc, 0x0ccd,
+0x0ce2, 0x0ce3,
+0x0d01, 0x0d01,
+0x0d41, 0x0d44,
+0x0d4d, 0x0d4d,
+0x0d62, 0x0d63,
+0x0dca, 0x0dca,
+0x0dd2, 0x0dd4,
+0x0dd6, 0x0dd6,
+0x0e31, 0x0e31,
+0x0e34, 0x0e3a,
+0x0e46, 0x0e4e,
+0x0eb1, 0x0eb1,
+0x0eb4, 0x0eb9,
+0x0ebb, 0x0ebc,
+0x0ec6, 0x0ec6,
+0x0ec8, 0x0ecd,
+0x0f18, 0x0f19,
+0x0f35, 0x0f35,
+0x0f37, 0x0f37,
+0x0f39, 0x0f39,
+0x0f71, 0x0f7e,
+0x0f80, 0x0f84,
+0x0f86, 0x0f87,
+0x0f8d, 0x0f97,
+0x0f99, 0x0fbc,
+0x0fc6, 0x0fc6,
+0x102d, 0x1030,
+0x1032, 0x1037,
+0x1039, 0x103a,
+0x103d, 0x103e,
+0x1058, 0x1059,
+0x105e, 0x1060,
+0x1071, 0x1074,
+0x1082, 0x1082,
+0x1085, 0x1086,
+0x108d, 0x108d,
+0x109d, 0x109d,
+0x10fc, 0x10fc,
+0x135d, 0x135f,
+0x1712, 0x1714,
+0x1732, 0x1734,
+0x1752, 0x1753,
+0x1772, 0x1773,
+0x17b4, 0x17b5,
+0x17b7, 0x17bd,
+0x17c6, 0x17c6,
+0x17c9, 0x17d3,
+0x17d7, 0x17d7,
+0x17dd, 0x17dd,
+0x180b, 0x180e,
+0x1843, 0x1843,
+0x18a9, 0x18a9,
+0x1920, 0x1922,
+0x1927, 0x1928,
+0x1932, 0x1932,
+0x1939, 0x193b,
+0x1a17, 0x1a18,
+0x1a1b, 0x1a1b,
+0x1a56, 0x1a56,
+0x1a58, 0x1a5e,
+0x1a60, 0x1a60,
+0x1a62, 0x1a62,
+0x1a65, 0x1a6c,
+0x1a73, 0x1a7c,
+0x1a7f, 0x1a7f,
+0x1aa7, 0x1aa7,
+0x1ab0, 0x1abe,
+0x1b00, 0x1b03,
+0x1b34, 0x1b34,
+0x1b36, 0x1b3a,
+0x1b3c, 0x1b3c,
+0x1b42, 0x1b42,
+0x1b6b, 0x1b73,
+0x1b80, 0x1b81,
+0x1ba2, 0x1ba5,
+0x1ba8, 0x1ba9,
+0x1bab, 0x1bad,
+0x1be6, 0x1be6,
+0x1be8, 0x1be9,
+0x1bed, 0x1bed,
+0x1bef, 0x1bf1,
+0x1c2c, 0x1c33,
+0x1c36, 0x1c37,
+0x1c78, 0x1c7d,
+0x1cd0, 0x1cd2,
+0x1cd4, 0x1ce0,
+0x1ce2, 0x1ce8,
+0x1ced, 0x1ced,
+0x1cf4, 0x1cf4,
+0x1cf8, 0x1cf9,
+0x1d2c, 0x1d6a,
+0x1d78, 0x1d78,
+0x1d9b, 0x1df5,
+0x1dfc, 0x1dff,
+0x1fbd, 0x1fbd,
+0x1fbf, 0x1fc1,
+0x1fcd, 0x1fcf,
+0x1fdd, 0x1fdf,
+0x1fed, 0x1fef,
+0x1ffd, 0x1ffe,
+0x200b, 0x200f,
+0x2018, 0x2019,
+0x2024, 0x2024,
+0x2027, 0x2027,
+0x202a, 0x202e,
+0x2060, 0x2064,
+0x2066, 0x206f,
+0x2071, 0x2071,
+0x207f, 0x207f,
+0x2090, 0x209c,
+0x20d0, 0x20f0,
+0x2c7c, 0x2c7d,
+0x2cef, 0x2cf1,
+0x2d6f, 0x2d6f,
+0x2d7f, 0x2d7f,
+0x2de0, 0x2dff,
+0x2e2f, 0x2e2f,
+0x3005, 0x3005,
+0x302a, 0x302d,
+0x3031, 0x3035,
+0x303b, 0x303b,
+0x3099, 0x309e,
+0x30fc, 0x30fe,
+0xa015, 0xa015,
+0xa4f8, 0xa4fd,
+0xa60c, 0xa60c,
+0xa66f, 0xa672,
+0xa674, 0xa67d,
+0xa67f, 0xa67f,
+0xa69c, 0xa69f,
+0xa6f0, 0xa6f1,
+0xa700, 0xa721,
+0xa770, 0xa770,
+0xa788, 0xa78a,
+0xa7f8, 0xa7f9,
+0xa802, 0xa802,
+0xa806, 0xa806,
+0xa80b, 0xa80b,
+0xa825, 0xa826,
+0xa8c4, 0xa8c4,
+0xa8e0, 0xa8f1,
+0xa926, 0xa92d,
+0xa947, 0xa951,
+0xa980, 0xa982,
+0xa9b3, 0xa9b3,
+0xa9b6, 0xa9b9,
+0xa9bc, 0xa9bc,
+0xa9cf, 0xa9cf,
+0xa9e5, 0xa9e6,
+0xaa29, 0xaa2e,
+0xaa31, 0xaa32,
+0xaa35, 0xaa36,
+0xaa43, 0xaa43,
+0xaa4c, 0xaa4c,
+0xaa70, 0xaa70,
+0xaa7c, 0xaa7c,
+0xaab0, 0xaab0,
+0xaab2, 0xaab4,
+0xaab7, 0xaab8,
+0xaabe, 0xaabf,
+0xaac1, 0xaac1,
+0xaadd, 0xaadd,
+0xaaec, 0xaaed,
+0xaaf3, 0xaaf4,
+0xaaf6, 0xaaf6,
+0xab5b, 0xab5f,
+0xabe5, 0xabe5,
+0xabe8, 0xabe8,
+0xabed, 0xabed,
+0xfb1e, 0xfb1e,
+0xfbb2, 0xfbc1,
+0xfe00, 0xfe0f,
+0xfe13, 0xfe13,
+0xfe20, 0xfe2f,
+0xfe52, 0xfe52,
+0xfe55, 0xfe55,
+0xfeff, 0xfeff,
+0xff07, 0xff07,
+0xff0e, 0xff0e,
+0xff1a, 0xff1a,
+0xff3e, 0xff3e,
+0xff40, 0xff40,
+0xff70, 0xff70,
+0xff9e, 0xff9f,
+0xffe3, 0xffe3,
+0xfff9, 0xfffb,
+0x101fd, 0x101fd,
+0x102e0, 0x102e0,
+0x10376, 0x1037a,
+0x10a01, 0x10a03,
+0x10a05, 0x10a06,
+0x10a0c, 0x10a0f,
+0x10a38, 0x10a3a,
+0x10a3f, 0x10a3f,
+0x10ae5, 0x10ae6,
+0x11001, 0x11001,
+0x11038, 0x11046,
+0x1107f, 0x11081,
+0x110b3, 0x110b6,
+0x110b9, 0x110ba,
+0x110bd, 0x110bd,
+0x11100, 0x11102,
+0x11127, 0x1112b,
+0x1112d, 0x11134,
+0x11173, 0x11173,
+0x11180, 0x11181,
+0x111b6, 0x111be,
+0x111ca, 0x111cc,
+0x1122f, 0x11231,
+0x11234, 0x11234,
+0x11236, 0x11237,
+0x112df, 0x112df,
+0x112e3, 0x112ea,
+0x11300, 0x11301,
+0x1133c, 0x1133c,
+0x11340, 0x11340,
+0x11366, 0x1136c,
+0x11370, 0x11374,
+0x114b3, 0x114b8,
+0x114ba, 0x114ba,
+0x114bf, 0x114c0,
+0x114c2, 0x114c3,
+0x115b2, 0x115b5,
+0x115bc, 0x115bd,
+0x115bf, 0x115c0,
+0x115dc, 0x115dd,
+0x11633, 0x1163a,
+0x1163d, 0x1163d,
+0x1163f, 0x11640,
+0x116ab, 0x116ab,
+0x116ad, 0x116ad,
+0x116b0, 0x116b5,
+0x116b7, 0x116b7,
+0x1171d, 0x1171f,
+0x11722, 0x11725,
+0x11727, 0x1172b,
+0x16af0, 0x16af4,
+0x16b30, 0x16b36,
+0x16b40, 0x16b43,
+0x16f8f, 0x16f9f,
+0x1bc9d, 0x1bc9e,
+0x1bca0, 0x1bca3,
+0x1d167, 0x1d169,
+0x1d173, 0x1d182,
+0x1d185, 0x1d18b,
+0x1d1aa, 0x1d1ad,
+0x1d242, 0x1d244,
+0x1da00, 0x1da36,
+0x1da3b, 0x1da6c,
+0x1da75, 0x1da75,
+0x1da84, 0x1da84,
+0x1da9b, 0x1da9f,
+0x1daa1, 0x1daaf,
+0x1e8d0, 0x1e8d6,
+0x1f3fb, 0x1f3ff,
+0xe0001, 0xe0001,
+0xe0020, 0xe007f,
+0xe0100, 0xe01ef,
+}; /* END of CR_Case_Ignorable */
+
+/* PROPERTY: 'Cased': Derived Property */
+static const OnigCodePoint
+CR_Cased[] = { 131,
+0x0041, 0x005a,
+0x0061, 0x007a,
+0x00aa, 0x00aa,
+0x00b5, 0x00b5,
+0x00ba, 0x00ba,
+0x00c0, 0x00d6,
+0x00d8, 0x00f6,
+0x00f8, 0x01ba,
+0x01bc, 0x01bf,
+0x01c4, 0x0293,
+0x0295, 0x02b8,
+0x02c0, 0x02c1,
+0x02e0, 0x02e4,
+0x0345, 0x0345,
+0x0370, 0x0373,
+0x0376, 0x0377,
+0x037a, 0x037d,
+0x037f, 0x037f,
+0x0386, 0x0386,
+0x0388, 0x038a,
+0x038c, 0x038c,
+0x038e, 0x03a1,
+0x03a3, 0x03f5,
+0x03f7, 0x0481,
+0x048a, 0x052f,
+0x0531, 0x0556,
+0x0561, 0x0587,
+0x10a0, 0x10c5,
+0x10c7, 0x10c7,
+0x10cd, 0x10cd,
+0x13a0, 0x13f5,
+0x13f8, 0x13fd,
+0x1d00, 0x1dbf,
+0x1e00, 0x1f15,
+0x1f18, 0x1f1d,
+0x1f20, 0x1f45,
+0x1f48, 0x1f4d,
+0x1f50, 0x1f57,
+0x1f59, 0x1f59,
+0x1f5b, 0x1f5b,
+0x1f5d, 0x1f5d,
+0x1f5f, 0x1f7d,
+0x1f80, 0x1fb4,
+0x1fb6, 0x1fbc,
+0x1fbe, 0x1fbe,
+0x1fc2, 0x1fc4,
+0x1fc6, 0x1fcc,
+0x1fd0, 0x1fd3,
+0x1fd6, 0x1fdb,
+0x1fe0, 0x1fec,
+0x1ff2, 0x1ff4,
+0x1ff6, 0x1ffc,
+0x2071, 0x2071,
+0x207f, 0x207f,
+0x2090, 0x209c,
+0x2102, 0x2102,
+0x2107, 0x2107,
+0x210a, 0x2113,
+0x2115, 0x2115,
+0x2119, 0x211d,
+0x2124, 0x2124,
+0x2126, 0x2126,
+0x2128, 0x2128,
+0x212a, 0x212d,
+0x212f, 0x2134,
+0x2139, 0x2139,
+0x213c, 0x213f,
+0x2145, 0x2149,
+0x214e, 0x214e,
+0x2160, 0x217f,
+0x2183, 0x2184,
+0x24b6, 0x24e9,
+0x2c00, 0x2c2e,
+0x2c30, 0x2c5e,
+0x2c60, 0x2ce4,
+0x2ceb, 0x2cee,
+0x2cf2, 0x2cf3,
+0x2d00, 0x2d25,
+0x2d27, 0x2d27,
+0x2d2d, 0x2d2d,
+0xa640, 0xa66d,
+0xa680, 0xa69d,
+0xa722, 0xa787,
+0xa78b, 0xa78e,
+0xa790, 0xa7ad,
+0xa7b0, 0xa7b7,
+0xa7f8, 0xa7fa,
+0xab30, 0xab5a,
+0xab5c, 0xab65,
+0xab70, 0xabbf,
+0xfb00, 0xfb06,
+0xfb13, 0xfb17,
+0xff21, 0xff3a,
+0xff41, 0xff5a,
+0x10400, 0x1044f,
+0x10c80, 0x10cb2,
+0x10cc0, 0x10cf2,
+0x118a0, 0x118df,
+0x1d400, 0x1d454,
+0x1d456, 0x1d49c,
+0x1d49e, 0x1d49f,
+0x1d4a2, 0x1d4a2,
+0x1d4a5, 0x1d4a6,
+0x1d4a9, 0x1d4ac,
+0x1d4ae, 0x1d4b9,
+0x1d4bb, 0x1d4bb,
+0x1d4bd, 0x1d4c3,
+0x1d4c5, 0x1d505,
+0x1d507, 0x1d50a,
+0x1d50d, 0x1d514,
+0x1d516, 0x1d51c,
+0x1d51e, 0x1d539,
+0x1d53b, 0x1d53e,
+0x1d540, 0x1d544,
+0x1d546, 0x1d546,
+0x1d54a, 0x1d550,
+0x1d552, 0x1d6a5,
+0x1d6a8, 0x1d6c0,
+0x1d6c2, 0x1d6da,
+0x1d6dc, 0x1d6fa,
+0x1d6fc, 0x1d714,
+0x1d716, 0x1d734,
+0x1d736, 0x1d74e,
+0x1d750, 0x1d76e,
+0x1d770, 0x1d788,
+0x1d78a, 0x1d7a8,
+0x1d7aa, 0x1d7c2,
+0x1d7c4, 0x1d7cb,
+0x1f130, 0x1f149,
+0x1f150, 0x1f169,
+0x1f170, 0x1f189,
+}; /* END of CR_Cased */
+
+/* PROPERTY: 'Caucasian_Albanian': Script */
+static const OnigCodePoint
+CR_Caucasian_Albanian[] = { 2,
+0x10530, 0x10563,
+0x1056f, 0x1056f,
+}; /* END of CR_Caucasian_Albanian */
+
/* PROPERTY: 'Cc': General Category */
#define CR_Cc CR_Cntrl
@@ -6036,6 +6731,2567 @@ CR_Cf[] = { 17,
0xe0020, 0xe007f,
}; /* END of CR_Cf */
+/* PROPERTY: 'Chakma': Script */
+static const OnigCodePoint
+CR_Chakma[] = { 2,
+0x11100, 0x11134,
+0x11136, 0x11143,
+}; /* END of CR_Chakma */
+
+/* PROPERTY: 'Cham': Script */
+static const OnigCodePoint
+CR_Cham[] = { 4,
+0xaa00, 0xaa36,
+0xaa40, 0xaa4d,
+0xaa50, 0xaa59,
+0xaa5c, 0xaa5f,
+}; /* END of CR_Cham */
+
+/* PROPERTY: 'Changes_When_Casefolded': Derived Property */
+static const OnigCodePoint
+CR_Changes_When_Casefolded[] = { 600,
+0x0041, 0x005a,
+0x00b5, 0x00b5,
+0x00c0, 0x00d6,
+0x00d8, 0x00df,
+0x0100, 0x0100,
+0x0102, 0x0102,
+0x0104, 0x0104,
+0x0106, 0x0106,
+0x0108, 0x0108,
+0x010a, 0x010a,
+0x010c, 0x010c,
+0x010e, 0x010e,
+0x0110, 0x0110,
+0x0112, 0x0112,
+0x0114, 0x0114,
+0x0116, 0x0116,
+0x0118, 0x0118,
+0x011a, 0x011a,
+0x011c, 0x011c,
+0x011e, 0x011e,
+0x0120, 0x0120,
+0x0122, 0x0122,
+0x0124, 0x0124,
+0x0126, 0x0126,
+0x0128, 0x0128,
+0x012a, 0x012a,
+0x012c, 0x012c,
+0x012e, 0x012e,
+0x0130, 0x0130,
+0x0132, 0x0132,
+0x0134, 0x0134,
+0x0136, 0x0136,
+0x0139, 0x0139,
+0x013b, 0x013b,
+0x013d, 0x013d,
+0x013f, 0x013f,
+0x0141, 0x0141,
+0x0143, 0x0143,
+0x0145, 0x0145,
+0x0147, 0x0147,
+0x0149, 0x014a,
+0x014c, 0x014c,
+0x014e, 0x014e,
+0x0150, 0x0150,
+0x0152, 0x0152,
+0x0154, 0x0154,
+0x0156, 0x0156,
+0x0158, 0x0158,
+0x015a, 0x015a,
+0x015c, 0x015c,
+0x015e, 0x015e,
+0x0160, 0x0160,
+0x0162, 0x0162,
+0x0164, 0x0164,
+0x0166, 0x0166,
+0x0168, 0x0168,
+0x016a, 0x016a,
+0x016c, 0x016c,
+0x016e, 0x016e,
+0x0170, 0x0170,
+0x0172, 0x0172,
+0x0174, 0x0174,
+0x0176, 0x0176,
+0x0178, 0x0179,
+0x017b, 0x017b,
+0x017d, 0x017d,
+0x017f, 0x017f,
+0x0181, 0x0182,
+0x0184, 0x0184,
+0x0186, 0x0187,
+0x0189, 0x018b,
+0x018e, 0x0191,
+0x0193, 0x0194,
+0x0196, 0x0198,
+0x019c, 0x019d,
+0x019f, 0x01a0,
+0x01a2, 0x01a2,
+0x01a4, 0x01a4,
+0x01a6, 0x01a7,
+0x01a9, 0x01a9,
+0x01ac, 0x01ac,
+0x01ae, 0x01af,
+0x01b1, 0x01b3,
+0x01b5, 0x01b5,
+0x01b7, 0x01b8,
+0x01bc, 0x01bc,
+0x01c4, 0x01c5,
+0x01c7, 0x01c8,
+0x01ca, 0x01cb,
+0x01cd, 0x01cd,
+0x01cf, 0x01cf,
+0x01d1, 0x01d1,
+0x01d3, 0x01d3,
+0x01d5, 0x01d5,
+0x01d7, 0x01d7,
+0x01d9, 0x01d9,
+0x01db, 0x01db,
+0x01de, 0x01de,
+0x01e0, 0x01e0,
+0x01e2, 0x01e2,
+0x01e4, 0x01e4,
+0x01e6, 0x01e6,
+0x01e8, 0x01e8,
+0x01ea, 0x01ea,
+0x01ec, 0x01ec,
+0x01ee, 0x01ee,
+0x01f1, 0x01f2,
+0x01f4, 0x01f4,
+0x01f6, 0x01f8,
+0x01fa, 0x01fa,
+0x01fc, 0x01fc,
+0x01fe, 0x01fe,
+0x0200, 0x0200,
+0x0202, 0x0202,
+0x0204, 0x0204,
+0x0206, 0x0206,
+0x0208, 0x0208,
+0x020a, 0x020a,
+0x020c, 0x020c,
+0x020e, 0x020e,
+0x0210, 0x0210,
+0x0212, 0x0212,
+0x0214, 0x0214,
+0x0216, 0x0216,
+0x0218, 0x0218,
+0x021a, 0x021a,
+0x021c, 0x021c,
+0x021e, 0x021e,
+0x0220, 0x0220,
+0x0222, 0x0222,
+0x0224, 0x0224,
+0x0226, 0x0226,
+0x0228, 0x0228,
+0x022a, 0x022a,
+0x022c, 0x022c,
+0x022e, 0x022e,
+0x0230, 0x0230,
+0x0232, 0x0232,
+0x023a, 0x023b,
+0x023d, 0x023e,
+0x0241, 0x0241,
+0x0243, 0x0246,
+0x0248, 0x0248,
+0x024a, 0x024a,
+0x024c, 0x024c,
+0x024e, 0x024e,
+0x0345, 0x0345,
+0x0370, 0x0370,
+0x0372, 0x0372,
+0x0376, 0x0376,
+0x037f, 0x037f,
+0x0386, 0x0386,
+0x0388, 0x038a,
+0x038c, 0x038c,
+0x038e, 0x038f,
+0x0391, 0x03a1,
+0x03a3, 0x03ab,
+0x03c2, 0x03c2,
+0x03cf, 0x03d1,
+0x03d5, 0x03d6,
+0x03d8, 0x03d8,
+0x03da, 0x03da,
+0x03dc, 0x03dc,
+0x03de, 0x03de,
+0x03e0, 0x03e0,
+0x03e2, 0x03e2,
+0x03e4, 0x03e4,
+0x03e6, 0x03e6,
+0x03e8, 0x03e8,
+0x03ea, 0x03ea,
+0x03ec, 0x03ec,
+0x03ee, 0x03ee,
+0x03f0, 0x03f1,
+0x03f4, 0x03f5,
+0x03f7, 0x03f7,
+0x03f9, 0x03fa,
+0x03fd, 0x042f,
+0x0460, 0x0460,
+0x0462, 0x0462,
+0x0464, 0x0464,
+0x0466, 0x0466,
+0x0468, 0x0468,
+0x046a, 0x046a,
+0x046c, 0x046c,
+0x046e, 0x046e,
+0x0470, 0x0470,
+0x0472, 0x0472,
+0x0474, 0x0474,
+0x0476, 0x0476,
+0x0478, 0x0478,
+0x047a, 0x047a,
+0x047c, 0x047c,
+0x047e, 0x047e,
+0x0480, 0x0480,
+0x048a, 0x048a,
+0x048c, 0x048c,
+0x048e, 0x048e,
+0x0490, 0x0490,
+0x0492, 0x0492,
+0x0494, 0x0494,
+0x0496, 0x0496,
+0x0498, 0x0498,
+0x049a, 0x049a,
+0x049c, 0x049c,
+0x049e, 0x049e,
+0x04a0, 0x04a0,
+0x04a2, 0x04a2,
+0x04a4, 0x04a4,
+0x04a6, 0x04a6,
+0x04a8, 0x04a8,
+0x04aa, 0x04aa,
+0x04ac, 0x04ac,
+0x04ae, 0x04ae,
+0x04b0, 0x04b0,
+0x04b2, 0x04b2,
+0x04b4, 0x04b4,
+0x04b6, 0x04b6,
+0x04b8, 0x04b8,
+0x04ba, 0x04ba,
+0x04bc, 0x04bc,
+0x04be, 0x04be,
+0x04c0, 0x04c1,
+0x04c3, 0x04c3,
+0x04c5, 0x04c5,
+0x04c7, 0x04c7,
+0x04c9, 0x04c9,
+0x04cb, 0x04cb,
+0x04cd, 0x04cd,
+0x04d0, 0x04d0,
+0x04d2, 0x04d2,
+0x04d4, 0x04d4,
+0x04d6, 0x04d6,
+0x04d8, 0x04d8,
+0x04da, 0x04da,
+0x04dc, 0x04dc,
+0x04de, 0x04de,
+0x04e0, 0x04e0,
+0x04e2, 0x04e2,
+0x04e4, 0x04e4,
+0x04e6, 0x04e6,
+0x04e8, 0x04e8,
+0x04ea, 0x04ea,
+0x04ec, 0x04ec,
+0x04ee, 0x04ee,
+0x04f0, 0x04f0,
+0x04f2, 0x04f2,
+0x04f4, 0x04f4,
+0x04f6, 0x04f6,
+0x04f8, 0x04f8,
+0x04fa, 0x04fa,
+0x04fc, 0x04fc,
+0x04fe, 0x04fe,
+0x0500, 0x0500,
+0x0502, 0x0502,
+0x0504, 0x0504,
+0x0506, 0x0506,
+0x0508, 0x0508,
+0x050a, 0x050a,
+0x050c, 0x050c,
+0x050e, 0x050e,
+0x0510, 0x0510,
+0x0512, 0x0512,
+0x0514, 0x0514,
+0x0516, 0x0516,
+0x0518, 0x0518,
+0x051a, 0x051a,
+0x051c, 0x051c,
+0x051e, 0x051e,
+0x0520, 0x0520,
+0x0522, 0x0522,
+0x0524, 0x0524,
+0x0526, 0x0526,
+0x0528, 0x0528,
+0x052a, 0x052a,
+0x052c, 0x052c,
+0x052e, 0x052e,
+0x0531, 0x0556,
+0x0587, 0x0587,
+0x10a0, 0x10c5,
+0x10c7, 0x10c7,
+0x10cd, 0x10cd,
+0x13f8, 0x13fd,
+0x1e00, 0x1e00,
+0x1e02, 0x1e02,
+0x1e04, 0x1e04,
+0x1e06, 0x1e06,
+0x1e08, 0x1e08,
+0x1e0a, 0x1e0a,
+0x1e0c, 0x1e0c,
+0x1e0e, 0x1e0e,
+0x1e10, 0x1e10,
+0x1e12, 0x1e12,
+0x1e14, 0x1e14,
+0x1e16, 0x1e16,
+0x1e18, 0x1e18,
+0x1e1a, 0x1e1a,
+0x1e1c, 0x1e1c,
+0x1e1e, 0x1e1e,
+0x1e20, 0x1e20,
+0x1e22, 0x1e22,
+0x1e24, 0x1e24,
+0x1e26, 0x1e26,
+0x1e28, 0x1e28,
+0x1e2a, 0x1e2a,
+0x1e2c, 0x1e2c,
+0x1e2e, 0x1e2e,
+0x1e30, 0x1e30,
+0x1e32, 0x1e32,
+0x1e34, 0x1e34,
+0x1e36, 0x1e36,
+0x1e38, 0x1e38,
+0x1e3a, 0x1e3a,
+0x1e3c, 0x1e3c,
+0x1e3e, 0x1e3e,
+0x1e40, 0x1e40,
+0x1e42, 0x1e42,
+0x1e44, 0x1e44,
+0x1e46, 0x1e46,
+0x1e48, 0x1e48,
+0x1e4a, 0x1e4a,
+0x1e4c, 0x1e4c,
+0x1e4e, 0x1e4e,
+0x1e50, 0x1e50,
+0x1e52, 0x1e52,
+0x1e54, 0x1e54,
+0x1e56, 0x1e56,
+0x1e58, 0x1e58,
+0x1e5a, 0x1e5a,
+0x1e5c, 0x1e5c,
+0x1e5e, 0x1e5e,
+0x1e60, 0x1e60,
+0x1e62, 0x1e62,
+0x1e64, 0x1e64,
+0x1e66, 0x1e66,
+0x1e68, 0x1e68,
+0x1e6a, 0x1e6a,
+0x1e6c, 0x1e6c,
+0x1e6e, 0x1e6e,
+0x1e70, 0x1e70,
+0x1e72, 0x1e72,
+0x1e74, 0x1e74,
+0x1e76, 0x1e76,
+0x1e78, 0x1e78,
+0x1e7a, 0x1e7a,
+0x1e7c, 0x1e7c,
+0x1e7e, 0x1e7e,
+0x1e80, 0x1e80,
+0x1e82, 0x1e82,
+0x1e84, 0x1e84,
+0x1e86, 0x1e86,
+0x1e88, 0x1e88,
+0x1e8a, 0x1e8a,
+0x1e8c, 0x1e8c,
+0x1e8e, 0x1e8e,
+0x1e90, 0x1e90,
+0x1e92, 0x1e92,
+0x1e94, 0x1e94,
+0x1e9a, 0x1e9b,
+0x1e9e, 0x1e9e,
+0x1ea0, 0x1ea0,
+0x1ea2, 0x1ea2,
+0x1ea4, 0x1ea4,
+0x1ea6, 0x1ea6,
+0x1ea8, 0x1ea8,
+0x1eaa, 0x1eaa,
+0x1eac, 0x1eac,
+0x1eae, 0x1eae,
+0x1eb0, 0x1eb0,
+0x1eb2, 0x1eb2,
+0x1eb4, 0x1eb4,
+0x1eb6, 0x1eb6,
+0x1eb8, 0x1eb8,
+0x1eba, 0x1eba,
+0x1ebc, 0x1ebc,
+0x1ebe, 0x1ebe,
+0x1ec0, 0x1ec0,
+0x1ec2, 0x1ec2,
+0x1ec4, 0x1ec4,
+0x1ec6, 0x1ec6,
+0x1ec8, 0x1ec8,
+0x1eca, 0x1eca,
+0x1ecc, 0x1ecc,
+0x1ece, 0x1ece,
+0x1ed0, 0x1ed0,
+0x1ed2, 0x1ed2,
+0x1ed4, 0x1ed4,
+0x1ed6, 0x1ed6,
+0x1ed8, 0x1ed8,
+0x1eda, 0x1eda,
+0x1edc, 0x1edc,
+0x1ede, 0x1ede,
+0x1ee0, 0x1ee0,
+0x1ee2, 0x1ee2,
+0x1ee4, 0x1ee4,
+0x1ee6, 0x1ee6,
+0x1ee8, 0x1ee8,
+0x1eea, 0x1eea,
+0x1eec, 0x1eec,
+0x1eee, 0x1eee,
+0x1ef0, 0x1ef0,
+0x1ef2, 0x1ef2,
+0x1ef4, 0x1ef4,
+0x1ef6, 0x1ef6,
+0x1ef8, 0x1ef8,
+0x1efa, 0x1efa,
+0x1efc, 0x1efc,
+0x1efe, 0x1efe,
+0x1f08, 0x1f0f,
+0x1f18, 0x1f1d,
+0x1f28, 0x1f2f,
+0x1f38, 0x1f3f,
+0x1f48, 0x1f4d,
+0x1f59, 0x1f59,
+0x1f5b, 0x1f5b,
+0x1f5d, 0x1f5d,
+0x1f5f, 0x1f5f,
+0x1f68, 0x1f6f,
+0x1f80, 0x1faf,
+0x1fb2, 0x1fb4,
+0x1fb7, 0x1fbc,
+0x1fc2, 0x1fc4,
+0x1fc7, 0x1fcc,
+0x1fd8, 0x1fdb,
+0x1fe8, 0x1fec,
+0x1ff2, 0x1ff4,
+0x1ff7, 0x1ffc,
+0x2126, 0x2126,
+0x212a, 0x212b,
+0x2132, 0x2132,
+0x2160, 0x216f,
+0x2183, 0x2183,
+0x24b6, 0x24cf,
+0x2c00, 0x2c2e,
+0x2c60, 0x2c60,
+0x2c62, 0x2c64,
+0x2c67, 0x2c67,
+0x2c69, 0x2c69,
+0x2c6b, 0x2c6b,
+0x2c6d, 0x2c70,
+0x2c72, 0x2c72,
+0x2c75, 0x2c75,
+0x2c7e, 0x2c80,
+0x2c82, 0x2c82,
+0x2c84, 0x2c84,
+0x2c86, 0x2c86,
+0x2c88, 0x2c88,
+0x2c8a, 0x2c8a,
+0x2c8c, 0x2c8c,
+0x2c8e, 0x2c8e,
+0x2c90, 0x2c90,
+0x2c92, 0x2c92,
+0x2c94, 0x2c94,
+0x2c96, 0x2c96,
+0x2c98, 0x2c98,
+0x2c9a, 0x2c9a,
+0x2c9c, 0x2c9c,
+0x2c9e, 0x2c9e,
+0x2ca0, 0x2ca0,
+0x2ca2, 0x2ca2,
+0x2ca4, 0x2ca4,
+0x2ca6, 0x2ca6,
+0x2ca8, 0x2ca8,
+0x2caa, 0x2caa,
+0x2cac, 0x2cac,
+0x2cae, 0x2cae,
+0x2cb0, 0x2cb0,
+0x2cb2, 0x2cb2,
+0x2cb4, 0x2cb4,
+0x2cb6, 0x2cb6,
+0x2cb8, 0x2cb8,
+0x2cba, 0x2cba,
+0x2cbc, 0x2cbc,
+0x2cbe, 0x2cbe,
+0x2cc0, 0x2cc0,
+0x2cc2, 0x2cc2,
+0x2cc4, 0x2cc4,
+0x2cc6, 0x2cc6,
+0x2cc8, 0x2cc8,
+0x2cca, 0x2cca,
+0x2ccc, 0x2ccc,
+0x2cce, 0x2cce,
+0x2cd0, 0x2cd0,
+0x2cd2, 0x2cd2,
+0x2cd4, 0x2cd4,
+0x2cd6, 0x2cd6,
+0x2cd8, 0x2cd8,
+0x2cda, 0x2cda,
+0x2cdc, 0x2cdc,
+0x2cde, 0x2cde,
+0x2ce0, 0x2ce0,
+0x2ce2, 0x2ce2,
+0x2ceb, 0x2ceb,
+0x2ced, 0x2ced,
+0x2cf2, 0x2cf2,
+0xa640, 0xa640,
+0xa642, 0xa642,
+0xa644, 0xa644,
+0xa646, 0xa646,
+0xa648, 0xa648,
+0xa64a, 0xa64a,
+0xa64c, 0xa64c,
+0xa64e, 0xa64e,
+0xa650, 0xa650,
+0xa652, 0xa652,
+0xa654, 0xa654,
+0xa656, 0xa656,
+0xa658, 0xa658,
+0xa65a, 0xa65a,
+0xa65c, 0xa65c,
+0xa65e, 0xa65e,
+0xa660, 0xa660,
+0xa662, 0xa662,
+0xa664, 0xa664,
+0xa666, 0xa666,
+0xa668, 0xa668,
+0xa66a, 0xa66a,
+0xa66c, 0xa66c,
+0xa680, 0xa680,
+0xa682, 0xa682,
+0xa684, 0xa684,
+0xa686, 0xa686,
+0xa688, 0xa688,
+0xa68a, 0xa68a,
+0xa68c, 0xa68c,
+0xa68e, 0xa68e,
+0xa690, 0xa690,
+0xa692, 0xa692,
+0xa694, 0xa694,
+0xa696, 0xa696,
+0xa698, 0xa698,
+0xa69a, 0xa69a,
+0xa722, 0xa722,
+0xa724, 0xa724,
+0xa726, 0xa726,
+0xa728, 0xa728,
+0xa72a, 0xa72a,
+0xa72c, 0xa72c,
+0xa72e, 0xa72e,
+0xa732, 0xa732,
+0xa734, 0xa734,
+0xa736, 0xa736,
+0xa738, 0xa738,
+0xa73a, 0xa73a,
+0xa73c, 0xa73c,
+0xa73e, 0xa73e,
+0xa740, 0xa740,
+0xa742, 0xa742,
+0xa744, 0xa744,
+0xa746, 0xa746,
+0xa748, 0xa748,
+0xa74a, 0xa74a,
+0xa74c, 0xa74c,
+0xa74e, 0xa74e,
+0xa750, 0xa750,
+0xa752, 0xa752,
+0xa754, 0xa754,
+0xa756, 0xa756,
+0xa758, 0xa758,
+0xa75a, 0xa75a,
+0xa75c, 0xa75c,
+0xa75e, 0xa75e,
+0xa760, 0xa760,
+0xa762, 0xa762,
+0xa764, 0xa764,
+0xa766, 0xa766,
+0xa768, 0xa768,
+0xa76a, 0xa76a,
+0xa76c, 0xa76c,
+0xa76e, 0xa76e,
+0xa779, 0xa779,
+0xa77b, 0xa77b,
+0xa77d, 0xa77e,
+0xa780, 0xa780,
+0xa782, 0xa782,
+0xa784, 0xa784,
+0xa786, 0xa786,
+0xa78b, 0xa78b,
+0xa78d, 0xa78d,
+0xa790, 0xa790,
+0xa792, 0xa792,
+0xa796, 0xa796,
+0xa798, 0xa798,
+0xa79a, 0xa79a,
+0xa79c, 0xa79c,
+0xa79e, 0xa79e,
+0xa7a0, 0xa7a0,
+0xa7a2, 0xa7a2,
+0xa7a4, 0xa7a4,
+0xa7a6, 0xa7a6,
+0xa7a8, 0xa7a8,
+0xa7aa, 0xa7ad,
+0xa7b0, 0xa7b4,
+0xa7b6, 0xa7b6,
+0xab70, 0xabbf,
+0xfb00, 0xfb06,
+0xfb13, 0xfb17,
+0xff21, 0xff3a,
+0x10400, 0x10427,
+0x10c80, 0x10cb2,
+0x118a0, 0x118bf,
+}; /* END of CR_Changes_When_Casefolded */
+
+/* PROPERTY: 'Changes_When_Casemapped': Derived Property */
+static const OnigCodePoint
+CR_Changes_When_Casemapped[] = { 113,
+0x0041, 0x005a,
+0x0061, 0x007a,
+0x00b5, 0x00b5,
+0x00c0, 0x00d6,
+0x00d8, 0x00f6,
+0x00f8, 0x0137,
+0x0139, 0x018c,
+0x018e, 0x019a,
+0x019c, 0x01a9,
+0x01ac, 0x01b9,
+0x01bc, 0x01bd,
+0x01bf, 0x01bf,
+0x01c4, 0x0220,
+0x0222, 0x0233,
+0x023a, 0x0254,
+0x0256, 0x0257,
+0x0259, 0x0259,
+0x025b, 0x025c,
+0x0260, 0x0261,
+0x0263, 0x0263,
+0x0265, 0x0266,
+0x0268, 0x0269,
+0x026b, 0x026c,
+0x026f, 0x026f,
+0x0271, 0x0272,
+0x0275, 0x0275,
+0x027d, 0x027d,
+0x0280, 0x0280,
+0x0283, 0x0283,
+0x0287, 0x028c,
+0x0292, 0x0292,
+0x029d, 0x029e,
+0x0345, 0x0345,
+0x0370, 0x0373,
+0x0376, 0x0377,
+0x037b, 0x037d,
+0x037f, 0x037f,
+0x0386, 0x0386,
+0x0388, 0x038a,
+0x038c, 0x038c,
+0x038e, 0x03a1,
+0x03a3, 0x03d1,
+0x03d5, 0x03f5,
+0x03f7, 0x03fb,
+0x03fd, 0x0481,
+0x048a, 0x052f,
+0x0531, 0x0556,
+0x0561, 0x0587,
+0x10a0, 0x10c5,
+0x10c7, 0x10c7,
+0x10cd, 0x10cd,
+0x13a0, 0x13f5,
+0x13f8, 0x13fd,
+0x1d79, 0x1d79,
+0x1d7d, 0x1d7d,
+0x1e00, 0x1e9b,
+0x1e9e, 0x1e9e,
+0x1ea0, 0x1f15,
+0x1f18, 0x1f1d,
+0x1f20, 0x1f45,
+0x1f48, 0x1f4d,
+0x1f50, 0x1f57,
+0x1f59, 0x1f59,
+0x1f5b, 0x1f5b,
+0x1f5d, 0x1f5d,
+0x1f5f, 0x1f7d,
+0x1f80, 0x1fb4,
+0x1fb6, 0x1fbc,
+0x1fbe, 0x1fbe,
+0x1fc2, 0x1fc4,
+0x1fc6, 0x1fcc,
+0x1fd0, 0x1fd3,
+0x1fd6, 0x1fdb,
+0x1fe0, 0x1fec,
+0x1ff2, 0x1ff4,
+0x1ff6, 0x1ffc,
+0x2126, 0x2126,
+0x212a, 0x212b,
+0x2132, 0x2132,
+0x214e, 0x214e,
+0x2160, 0x217f,
+0x2183, 0x2184,
+0x24b6, 0x24e9,
+0x2c00, 0x2c2e,
+0x2c30, 0x2c5e,
+0x2c60, 0x2c70,
+0x2c72, 0x2c73,
+0x2c75, 0x2c76,
+0x2c7e, 0x2ce3,
+0x2ceb, 0x2cee,
+0x2cf2, 0x2cf3,
+0x2d00, 0x2d25,
+0x2d27, 0x2d27,
+0x2d2d, 0x2d2d,
+0xa640, 0xa66d,
+0xa680, 0xa69b,
+0xa722, 0xa72f,
+0xa732, 0xa76f,
+0xa779, 0xa787,
+0xa78b, 0xa78d,
+0xa790, 0xa793,
+0xa796, 0xa7ad,
+0xa7b0, 0xa7b7,
+0xab53, 0xab53,
+0xab70, 0xabbf,
+0xfb00, 0xfb06,
+0xfb13, 0xfb17,
+0xff21, 0xff3a,
+0xff41, 0xff5a,
+0x10400, 0x1044f,
+0x10c80, 0x10cb2,
+0x10cc0, 0x10cf2,
+0x118a0, 0x118df,
+}; /* END of CR_Changes_When_Casemapped */
+
+/* PROPERTY: 'Changes_When_Lowercased': Derived Property */
+static const OnigCodePoint
+CR_Changes_When_Lowercased[] = { 588,
+0x0041, 0x005a,
+0x00c0, 0x00d6,
+0x00d8, 0x00de,
+0x0100, 0x0100,
+0x0102, 0x0102,
+0x0104, 0x0104,
+0x0106, 0x0106,
+0x0108, 0x0108,
+0x010a, 0x010a,
+0x010c, 0x010c,
+0x010e, 0x010e,
+0x0110, 0x0110,
+0x0112, 0x0112,
+0x0114, 0x0114,
+0x0116, 0x0116,
+0x0118, 0x0118,
+0x011a, 0x011a,
+0x011c, 0x011c,
+0x011e, 0x011e,
+0x0120, 0x0120,
+0x0122, 0x0122,
+0x0124, 0x0124,
+0x0126, 0x0126,
+0x0128, 0x0128,
+0x012a, 0x012a,
+0x012c, 0x012c,
+0x012e, 0x012e,
+0x0130, 0x0130,
+0x0132, 0x0132,
+0x0134, 0x0134,
+0x0136, 0x0136,
+0x0139, 0x0139,
+0x013b, 0x013b,
+0x013d, 0x013d,
+0x013f, 0x013f,
+0x0141, 0x0141,
+0x0143, 0x0143,
+0x0145, 0x0145,
+0x0147, 0x0147,
+0x014a, 0x014a,
+0x014c, 0x014c,
+0x014e, 0x014e,
+0x0150, 0x0150,
+0x0152, 0x0152,
+0x0154, 0x0154,
+0x0156, 0x0156,
+0x0158, 0x0158,
+0x015a, 0x015a,
+0x015c, 0x015c,
+0x015e, 0x015e,
+0x0160, 0x0160,
+0x0162, 0x0162,
+0x0164, 0x0164,
+0x0166, 0x0166,
+0x0168, 0x0168,
+0x016a, 0x016a,
+0x016c, 0x016c,
+0x016e, 0x016e,
+0x0170, 0x0170,
+0x0172, 0x0172,
+0x0174, 0x0174,
+0x0176, 0x0176,
+0x0178, 0x0179,
+0x017b, 0x017b,
+0x017d, 0x017d,
+0x0181, 0x0182,
+0x0184, 0x0184,
+0x0186, 0x0187,
+0x0189, 0x018b,
+0x018e, 0x0191,
+0x0193, 0x0194,
+0x0196, 0x0198,
+0x019c, 0x019d,
+0x019f, 0x01a0,
+0x01a2, 0x01a2,
+0x01a4, 0x01a4,
+0x01a6, 0x01a7,
+0x01a9, 0x01a9,
+0x01ac, 0x01ac,
+0x01ae, 0x01af,
+0x01b1, 0x01b3,
+0x01b5, 0x01b5,
+0x01b7, 0x01b8,
+0x01bc, 0x01bc,
+0x01c4, 0x01c5,
+0x01c7, 0x01c8,
+0x01ca, 0x01cb,
+0x01cd, 0x01cd,
+0x01cf, 0x01cf,
+0x01d1, 0x01d1,
+0x01d3, 0x01d3,
+0x01d5, 0x01d5,
+0x01d7, 0x01d7,
+0x01d9, 0x01d9,
+0x01db, 0x01db,
+0x01de, 0x01de,
+0x01e0, 0x01e0,
+0x01e2, 0x01e2,
+0x01e4, 0x01e4,
+0x01e6, 0x01e6,
+0x01e8, 0x01e8,
+0x01ea, 0x01ea,
+0x01ec, 0x01ec,
+0x01ee, 0x01ee,
+0x01f1, 0x01f2,
+0x01f4, 0x01f4,
+0x01f6, 0x01f8,
+0x01fa, 0x01fa,
+0x01fc, 0x01fc,
+0x01fe, 0x01fe,
+0x0200, 0x0200,
+0x0202, 0x0202,
+0x0204, 0x0204,
+0x0206, 0x0206,
+0x0208, 0x0208,
+0x020a, 0x020a,
+0x020c, 0x020c,
+0x020e, 0x020e,
+0x0210, 0x0210,
+0x0212, 0x0212,
+0x0214, 0x0214,
+0x0216, 0x0216,
+0x0218, 0x0218,
+0x021a, 0x021a,
+0x021c, 0x021c,
+0x021e, 0x021e,
+0x0220, 0x0220,
+0x0222, 0x0222,
+0x0224, 0x0224,
+0x0226, 0x0226,
+0x0228, 0x0228,
+0x022a, 0x022a,
+0x022c, 0x022c,
+0x022e, 0x022e,
+0x0230, 0x0230,
+0x0232, 0x0232,
+0x023a, 0x023b,
+0x023d, 0x023e,
+0x0241, 0x0241,
+0x0243, 0x0246,
+0x0248, 0x0248,
+0x024a, 0x024a,
+0x024c, 0x024c,
+0x024e, 0x024e,
+0x0370, 0x0370,
+0x0372, 0x0372,
+0x0376, 0x0376,
+0x037f, 0x037f,
+0x0386, 0x0386,
+0x0388, 0x038a,
+0x038c, 0x038c,
+0x038e, 0x038f,
+0x0391, 0x03a1,
+0x03a3, 0x03ab,
+0x03cf, 0x03cf,
+0x03d8, 0x03d8,
+0x03da, 0x03da,
+0x03dc, 0x03dc,
+0x03de, 0x03de,
+0x03e0, 0x03e0,
+0x03e2, 0x03e2,
+0x03e4, 0x03e4,
+0x03e6, 0x03e6,
+0x03e8, 0x03e8,
+0x03ea, 0x03ea,
+0x03ec, 0x03ec,
+0x03ee, 0x03ee,
+0x03f4, 0x03f4,
+0x03f7, 0x03f7,
+0x03f9, 0x03fa,
+0x03fd, 0x042f,
+0x0460, 0x0460,
+0x0462, 0x0462,
+0x0464, 0x0464,
+0x0466, 0x0466,
+0x0468, 0x0468,
+0x046a, 0x046a,
+0x046c, 0x046c,
+0x046e, 0x046e,
+0x0470, 0x0470,
+0x0472, 0x0472,
+0x0474, 0x0474,
+0x0476, 0x0476,
+0x0478, 0x0478,
+0x047a, 0x047a,
+0x047c, 0x047c,
+0x047e, 0x047e,
+0x0480, 0x0480,
+0x048a, 0x048a,
+0x048c, 0x048c,
+0x048e, 0x048e,
+0x0490, 0x0490,
+0x0492, 0x0492,
+0x0494, 0x0494,
+0x0496, 0x0496,
+0x0498, 0x0498,
+0x049a, 0x049a,
+0x049c, 0x049c,
+0x049e, 0x049e,
+0x04a0, 0x04a0,
+0x04a2, 0x04a2,
+0x04a4, 0x04a4,
+0x04a6, 0x04a6,
+0x04a8, 0x04a8,
+0x04aa, 0x04aa,
+0x04ac, 0x04ac,
+0x04ae, 0x04ae,
+0x04b0, 0x04b0,
+0x04b2, 0x04b2,
+0x04b4, 0x04b4,
+0x04b6, 0x04b6,
+0x04b8, 0x04b8,
+0x04ba, 0x04ba,
+0x04bc, 0x04bc,
+0x04be, 0x04be,
+0x04c0, 0x04c1,
+0x04c3, 0x04c3,
+0x04c5, 0x04c5,
+0x04c7, 0x04c7,
+0x04c9, 0x04c9,
+0x04cb, 0x04cb,
+0x04cd, 0x04cd,
+0x04d0, 0x04d0,
+0x04d2, 0x04d2,
+0x04d4, 0x04d4,
+0x04d6, 0x04d6,
+0x04d8, 0x04d8,
+0x04da, 0x04da,
+0x04dc, 0x04dc,
+0x04de, 0x04de,
+0x04e0, 0x04e0,
+0x04e2, 0x04e2,
+0x04e4, 0x04e4,
+0x04e6, 0x04e6,
+0x04e8, 0x04e8,
+0x04ea, 0x04ea,
+0x04ec, 0x04ec,
+0x04ee, 0x04ee,
+0x04f0, 0x04f0,
+0x04f2, 0x04f2,
+0x04f4, 0x04f4,
+0x04f6, 0x04f6,
+0x04f8, 0x04f8,
+0x04fa, 0x04fa,
+0x04fc, 0x04fc,
+0x04fe, 0x04fe,
+0x0500, 0x0500,
+0x0502, 0x0502,
+0x0504, 0x0504,
+0x0506, 0x0506,
+0x0508, 0x0508,
+0x050a, 0x050a,
+0x050c, 0x050c,
+0x050e, 0x050e,
+0x0510, 0x0510,
+0x0512, 0x0512,
+0x0514, 0x0514,
+0x0516, 0x0516,
+0x0518, 0x0518,
+0x051a, 0x051a,
+0x051c, 0x051c,
+0x051e, 0x051e,
+0x0520, 0x0520,
+0x0522, 0x0522,
+0x0524, 0x0524,
+0x0526, 0x0526,
+0x0528, 0x0528,
+0x052a, 0x052a,
+0x052c, 0x052c,
+0x052e, 0x052e,
+0x0531, 0x0556,
+0x10a0, 0x10c5,
+0x10c7, 0x10c7,
+0x10cd, 0x10cd,
+0x13a0, 0x13f5,
+0x1e00, 0x1e00,
+0x1e02, 0x1e02,
+0x1e04, 0x1e04,
+0x1e06, 0x1e06,
+0x1e08, 0x1e08,
+0x1e0a, 0x1e0a,
+0x1e0c, 0x1e0c,
+0x1e0e, 0x1e0e,
+0x1e10, 0x1e10,
+0x1e12, 0x1e12,
+0x1e14, 0x1e14,
+0x1e16, 0x1e16,
+0x1e18, 0x1e18,
+0x1e1a, 0x1e1a,
+0x1e1c, 0x1e1c,
+0x1e1e, 0x1e1e,
+0x1e20, 0x1e20,
+0x1e22, 0x1e22,
+0x1e24, 0x1e24,
+0x1e26, 0x1e26,
+0x1e28, 0x1e28,
+0x1e2a, 0x1e2a,
+0x1e2c, 0x1e2c,
+0x1e2e, 0x1e2e,
+0x1e30, 0x1e30,
+0x1e32, 0x1e32,
+0x1e34, 0x1e34,
+0x1e36, 0x1e36,
+0x1e38, 0x1e38,
+0x1e3a, 0x1e3a,
+0x1e3c, 0x1e3c,
+0x1e3e, 0x1e3e,
+0x1e40, 0x1e40,
+0x1e42, 0x1e42,
+0x1e44, 0x1e44,
+0x1e46, 0x1e46,
+0x1e48, 0x1e48,
+0x1e4a, 0x1e4a,
+0x1e4c, 0x1e4c,
+0x1e4e, 0x1e4e,
+0x1e50, 0x1e50,
+0x1e52, 0x1e52,
+0x1e54, 0x1e54,
+0x1e56, 0x1e56,
+0x1e58, 0x1e58,
+0x1e5a, 0x1e5a,
+0x1e5c, 0x1e5c,
+0x1e5e, 0x1e5e,
+0x1e60, 0x1e60,
+0x1e62, 0x1e62,
+0x1e64, 0x1e64,
+0x1e66, 0x1e66,
+0x1e68, 0x1e68,
+0x1e6a, 0x1e6a,
+0x1e6c, 0x1e6c,
+0x1e6e, 0x1e6e,
+0x1e70, 0x1e70,
+0x1e72, 0x1e72,
+0x1e74, 0x1e74,
+0x1e76, 0x1e76,
+0x1e78, 0x1e78,
+0x1e7a, 0x1e7a,
+0x1e7c, 0x1e7c,
+0x1e7e, 0x1e7e,
+0x1e80, 0x1e80,
+0x1e82, 0x1e82,
+0x1e84, 0x1e84,
+0x1e86, 0x1e86,
+0x1e88, 0x1e88,
+0x1e8a, 0x1e8a,
+0x1e8c, 0x1e8c,
+0x1e8e, 0x1e8e,
+0x1e90, 0x1e90,
+0x1e92, 0x1e92,
+0x1e94, 0x1e94,
+0x1e9e, 0x1e9e,
+0x1ea0, 0x1ea0,
+0x1ea2, 0x1ea2,
+0x1ea4, 0x1ea4,
+0x1ea6, 0x1ea6,
+0x1ea8, 0x1ea8,
+0x1eaa, 0x1eaa,
+0x1eac, 0x1eac,
+0x1eae, 0x1eae,
+0x1eb0, 0x1eb0,
+0x1eb2, 0x1eb2,
+0x1eb4, 0x1eb4,
+0x1eb6, 0x1eb6,
+0x1eb8, 0x1eb8,
+0x1eba, 0x1eba,
+0x1ebc, 0x1ebc,
+0x1ebe, 0x1ebe,
+0x1ec0, 0x1ec0,
+0x1ec2, 0x1ec2,
+0x1ec4, 0x1ec4,
+0x1ec6, 0x1ec6,
+0x1ec8, 0x1ec8,
+0x1eca, 0x1eca,
+0x1ecc, 0x1ecc,
+0x1ece, 0x1ece,
+0x1ed0, 0x1ed0,
+0x1ed2, 0x1ed2,
+0x1ed4, 0x1ed4,
+0x1ed6, 0x1ed6,
+0x1ed8, 0x1ed8,
+0x1eda, 0x1eda,
+0x1edc, 0x1edc,
+0x1ede, 0x1ede,
+0x1ee0, 0x1ee0,
+0x1ee2, 0x1ee2,
+0x1ee4, 0x1ee4,
+0x1ee6, 0x1ee6,
+0x1ee8, 0x1ee8,
+0x1eea, 0x1eea,
+0x1eec, 0x1eec,
+0x1eee, 0x1eee,
+0x1ef0, 0x1ef0,
+0x1ef2, 0x1ef2,
+0x1ef4, 0x1ef4,
+0x1ef6, 0x1ef6,
+0x1ef8, 0x1ef8,
+0x1efa, 0x1efa,
+0x1efc, 0x1efc,
+0x1efe, 0x1efe,
+0x1f08, 0x1f0f,
+0x1f18, 0x1f1d,
+0x1f28, 0x1f2f,
+0x1f38, 0x1f3f,
+0x1f48, 0x1f4d,
+0x1f59, 0x1f59,
+0x1f5b, 0x1f5b,
+0x1f5d, 0x1f5d,
+0x1f5f, 0x1f5f,
+0x1f68, 0x1f6f,
+0x1f88, 0x1f8f,
+0x1f98, 0x1f9f,
+0x1fa8, 0x1faf,
+0x1fb8, 0x1fbc,
+0x1fc8, 0x1fcc,
+0x1fd8, 0x1fdb,
+0x1fe8, 0x1fec,
+0x1ff8, 0x1ffc,
+0x2126, 0x2126,
+0x212a, 0x212b,
+0x2132, 0x2132,
+0x2160, 0x216f,
+0x2183, 0x2183,
+0x24b6, 0x24cf,
+0x2c00, 0x2c2e,
+0x2c60, 0x2c60,
+0x2c62, 0x2c64,
+0x2c67, 0x2c67,
+0x2c69, 0x2c69,
+0x2c6b, 0x2c6b,
+0x2c6d, 0x2c70,
+0x2c72, 0x2c72,
+0x2c75, 0x2c75,
+0x2c7e, 0x2c80,
+0x2c82, 0x2c82,
+0x2c84, 0x2c84,
+0x2c86, 0x2c86,
+0x2c88, 0x2c88,
+0x2c8a, 0x2c8a,
+0x2c8c, 0x2c8c,
+0x2c8e, 0x2c8e,
+0x2c90, 0x2c90,
+0x2c92, 0x2c92,
+0x2c94, 0x2c94,
+0x2c96, 0x2c96,
+0x2c98, 0x2c98,
+0x2c9a, 0x2c9a,
+0x2c9c, 0x2c9c,
+0x2c9e, 0x2c9e,
+0x2ca0, 0x2ca0,
+0x2ca2, 0x2ca2,
+0x2ca4, 0x2ca4,
+0x2ca6, 0x2ca6,
+0x2ca8, 0x2ca8,
+0x2caa, 0x2caa,
+0x2cac, 0x2cac,
+0x2cae, 0x2cae,
+0x2cb0, 0x2cb0,
+0x2cb2, 0x2cb2,
+0x2cb4, 0x2cb4,
+0x2cb6, 0x2cb6,
+0x2cb8, 0x2cb8,
+0x2cba, 0x2cba,
+0x2cbc, 0x2cbc,
+0x2cbe, 0x2cbe,
+0x2cc0, 0x2cc0,
+0x2cc2, 0x2cc2,
+0x2cc4, 0x2cc4,
+0x2cc6, 0x2cc6,
+0x2cc8, 0x2cc8,
+0x2cca, 0x2cca,
+0x2ccc, 0x2ccc,
+0x2cce, 0x2cce,
+0x2cd0, 0x2cd0,
+0x2cd2, 0x2cd2,
+0x2cd4, 0x2cd4,
+0x2cd6, 0x2cd6,
+0x2cd8, 0x2cd8,
+0x2cda, 0x2cda,
+0x2cdc, 0x2cdc,
+0x2cde, 0x2cde,
+0x2ce0, 0x2ce0,
+0x2ce2, 0x2ce2,
+0x2ceb, 0x2ceb,
+0x2ced, 0x2ced,
+0x2cf2, 0x2cf2,
+0xa640, 0xa640,
+0xa642, 0xa642,
+0xa644, 0xa644,
+0xa646, 0xa646,
+0xa648, 0xa648,
+0xa64a, 0xa64a,
+0xa64c, 0xa64c,
+0xa64e, 0xa64e,
+0xa650, 0xa650,
+0xa652, 0xa652,
+0xa654, 0xa654,
+0xa656, 0xa656,
+0xa658, 0xa658,
+0xa65a, 0xa65a,
+0xa65c, 0xa65c,
+0xa65e, 0xa65e,
+0xa660, 0xa660,
+0xa662, 0xa662,
+0xa664, 0xa664,
+0xa666, 0xa666,
+0xa668, 0xa668,
+0xa66a, 0xa66a,
+0xa66c, 0xa66c,
+0xa680, 0xa680,
+0xa682, 0xa682,
+0xa684, 0xa684,
+0xa686, 0xa686,
+0xa688, 0xa688,
+0xa68a, 0xa68a,
+0xa68c, 0xa68c,
+0xa68e, 0xa68e,
+0xa690, 0xa690,
+0xa692, 0xa692,
+0xa694, 0xa694,
+0xa696, 0xa696,
+0xa698, 0xa698,
+0xa69a, 0xa69a,
+0xa722, 0xa722,
+0xa724, 0xa724,
+0xa726, 0xa726,
+0xa728, 0xa728,
+0xa72a, 0xa72a,
+0xa72c, 0xa72c,
+0xa72e, 0xa72e,
+0xa732, 0xa732,
+0xa734, 0xa734,
+0xa736, 0xa736,
+0xa738, 0xa738,
+0xa73a, 0xa73a,
+0xa73c, 0xa73c,
+0xa73e, 0xa73e,
+0xa740, 0xa740,
+0xa742, 0xa742,
+0xa744, 0xa744,
+0xa746, 0xa746,
+0xa748, 0xa748,
+0xa74a, 0xa74a,
+0xa74c, 0xa74c,
+0xa74e, 0xa74e,
+0xa750, 0xa750,
+0xa752, 0xa752,
+0xa754, 0xa754,
+0xa756, 0xa756,
+0xa758, 0xa758,
+0xa75a, 0xa75a,
+0xa75c, 0xa75c,
+0xa75e, 0xa75e,
+0xa760, 0xa760,
+0xa762, 0xa762,
+0xa764, 0xa764,
+0xa766, 0xa766,
+0xa768, 0xa768,
+0xa76a, 0xa76a,
+0xa76c, 0xa76c,
+0xa76e, 0xa76e,
+0xa779, 0xa779,
+0xa77b, 0xa77b,
+0xa77d, 0xa77e,
+0xa780, 0xa780,
+0xa782, 0xa782,
+0xa784, 0xa784,
+0xa786, 0xa786,
+0xa78b, 0xa78b,
+0xa78d, 0xa78d,
+0xa790, 0xa790,
+0xa792, 0xa792,
+0xa796, 0xa796,
+0xa798, 0xa798,
+0xa79a, 0xa79a,
+0xa79c, 0xa79c,
+0xa79e, 0xa79e,
+0xa7a0, 0xa7a0,
+0xa7a2, 0xa7a2,
+0xa7a4, 0xa7a4,
+0xa7a6, 0xa7a6,
+0xa7a8, 0xa7a8,
+0xa7aa, 0xa7ad,
+0xa7b0, 0xa7b4,
+0xa7b6, 0xa7b6,
+0xff21, 0xff3a,
+0x10400, 0x10427,
+0x10c80, 0x10cb2,
+0x118a0, 0x118bf,
+}; /* END of CR_Changes_When_Lowercased */
+
+/* PROPERTY: 'Changes_When_Titlecased': Derived Property */
+static const OnigCodePoint
+CR_Changes_When_Titlecased[] = { 606,
+0x0061, 0x007a,
+0x00b5, 0x00b5,
+0x00df, 0x00f6,
+0x00f8, 0x00ff,
+0x0101, 0x0101,
+0x0103, 0x0103,
+0x0105, 0x0105,
+0x0107, 0x0107,
+0x0109, 0x0109,
+0x010b, 0x010b,
+0x010d, 0x010d,
+0x010f, 0x010f,
+0x0111, 0x0111,
+0x0113, 0x0113,
+0x0115, 0x0115,
+0x0117, 0x0117,
+0x0119, 0x0119,
+0x011b, 0x011b,
+0x011d, 0x011d,
+0x011f, 0x011f,
+0x0121, 0x0121,
+0x0123, 0x0123,
+0x0125, 0x0125,
+0x0127, 0x0127,
+0x0129, 0x0129,
+0x012b, 0x012b,
+0x012d, 0x012d,
+0x012f, 0x012f,
+0x0131, 0x0131,
+0x0133, 0x0133,
+0x0135, 0x0135,
+0x0137, 0x0137,
+0x013a, 0x013a,
+0x013c, 0x013c,
+0x013e, 0x013e,
+0x0140, 0x0140,
+0x0142, 0x0142,
+0x0144, 0x0144,
+0x0146, 0x0146,
+0x0148, 0x0149,
+0x014b, 0x014b,
+0x014d, 0x014d,
+0x014f, 0x014f,
+0x0151, 0x0151,
+0x0153, 0x0153,
+0x0155, 0x0155,
+0x0157, 0x0157,
+0x0159, 0x0159,
+0x015b, 0x015b,
+0x015d, 0x015d,
+0x015f, 0x015f,
+0x0161, 0x0161,
+0x0163, 0x0163,
+0x0165, 0x0165,
+0x0167, 0x0167,
+0x0169, 0x0169,
+0x016b, 0x016b,
+0x016d, 0x016d,
+0x016f, 0x016f,
+0x0171, 0x0171,
+0x0173, 0x0173,
+0x0175, 0x0175,
+0x0177, 0x0177,
+0x017a, 0x017a,
+0x017c, 0x017c,
+0x017e, 0x0180,
+0x0183, 0x0183,
+0x0185, 0x0185,
+0x0188, 0x0188,
+0x018c, 0x018c,
+0x0192, 0x0192,
+0x0195, 0x0195,
+0x0199, 0x019a,
+0x019e, 0x019e,
+0x01a1, 0x01a1,
+0x01a3, 0x01a3,
+0x01a5, 0x01a5,
+0x01a8, 0x01a8,
+0x01ad, 0x01ad,
+0x01b0, 0x01b0,
+0x01b4, 0x01b4,
+0x01b6, 0x01b6,
+0x01b9, 0x01b9,
+0x01bd, 0x01bd,
+0x01bf, 0x01bf,
+0x01c4, 0x01c4,
+0x01c6, 0x01c7,
+0x01c9, 0x01ca,
+0x01cc, 0x01cc,
+0x01ce, 0x01ce,
+0x01d0, 0x01d0,
+0x01d2, 0x01d2,
+0x01d4, 0x01d4,
+0x01d6, 0x01d6,
+0x01d8, 0x01d8,
+0x01da, 0x01da,
+0x01dc, 0x01dd,
+0x01df, 0x01df,
+0x01e1, 0x01e1,
+0x01e3, 0x01e3,
+0x01e5, 0x01e5,
+0x01e7, 0x01e7,
+0x01e9, 0x01e9,
+0x01eb, 0x01eb,
+0x01ed, 0x01ed,
+0x01ef, 0x01f1,
+0x01f3, 0x01f3,
+0x01f5, 0x01f5,
+0x01f9, 0x01f9,
+0x01fb, 0x01fb,
+0x01fd, 0x01fd,
+0x01ff, 0x01ff,
+0x0201, 0x0201,
+0x0203, 0x0203,
+0x0205, 0x0205,
+0x0207, 0x0207,
+0x0209, 0x0209,
+0x020b, 0x020b,
+0x020d, 0x020d,
+0x020f, 0x020f,
+0x0211, 0x0211,
+0x0213, 0x0213,
+0x0215, 0x0215,
+0x0217, 0x0217,
+0x0219, 0x0219,
+0x021b, 0x021b,
+0x021d, 0x021d,
+0x021f, 0x021f,
+0x0223, 0x0223,
+0x0225, 0x0225,
+0x0227, 0x0227,
+0x0229, 0x0229,
+0x022b, 0x022b,
+0x022d, 0x022d,
+0x022f, 0x022f,
+0x0231, 0x0231,
+0x0233, 0x0233,
+0x023c, 0x023c,
+0x023f, 0x0240,
+0x0242, 0x0242,
+0x0247, 0x0247,
+0x0249, 0x0249,
+0x024b, 0x024b,
+0x024d, 0x024d,
+0x024f, 0x0254,
+0x0256, 0x0257,
+0x0259, 0x0259,
+0x025b, 0x025c,
+0x0260, 0x0261,
+0x0263, 0x0263,
+0x0265, 0x0266,
+0x0268, 0x0269,
+0x026b, 0x026c,
+0x026f, 0x026f,
+0x0271, 0x0272,
+0x0275, 0x0275,
+0x027d, 0x027d,
+0x0280, 0x0280,
+0x0283, 0x0283,
+0x0287, 0x028c,
+0x0292, 0x0292,
+0x029d, 0x029e,
+0x0345, 0x0345,
+0x0371, 0x0371,
+0x0373, 0x0373,
+0x0377, 0x0377,
+0x037b, 0x037d,
+0x0390, 0x0390,
+0x03ac, 0x03ce,
+0x03d0, 0x03d1,
+0x03d5, 0x03d7,
+0x03d9, 0x03d9,
+0x03db, 0x03db,
+0x03dd, 0x03dd,
+0x03df, 0x03df,
+0x03e1, 0x03e1,
+0x03e3, 0x03e3,
+0x03e5, 0x03e5,
+0x03e7, 0x03e7,
+0x03e9, 0x03e9,
+0x03eb, 0x03eb,
+0x03ed, 0x03ed,
+0x03ef, 0x03f3,
+0x03f5, 0x03f5,
+0x03f8, 0x03f8,
+0x03fb, 0x03fb,
+0x0430, 0x045f,
+0x0461, 0x0461,
+0x0463, 0x0463,
+0x0465, 0x0465,
+0x0467, 0x0467,
+0x0469, 0x0469,
+0x046b, 0x046b,
+0x046d, 0x046d,
+0x046f, 0x046f,
+0x0471, 0x0471,
+0x0473, 0x0473,
+0x0475, 0x0475,
+0x0477, 0x0477,
+0x0479, 0x0479,
+0x047b, 0x047b,
+0x047d, 0x047d,
+0x047f, 0x047f,
+0x0481, 0x0481,
+0x048b, 0x048b,
+0x048d, 0x048d,
+0x048f, 0x048f,
+0x0491, 0x0491,
+0x0493, 0x0493,
+0x0495, 0x0495,
+0x0497, 0x0497,
+0x0499, 0x0499,
+0x049b, 0x049b,
+0x049d, 0x049d,
+0x049f, 0x049f,
+0x04a1, 0x04a1,
+0x04a3, 0x04a3,
+0x04a5, 0x04a5,
+0x04a7, 0x04a7,
+0x04a9, 0x04a9,
+0x04ab, 0x04ab,
+0x04ad, 0x04ad,
+0x04af, 0x04af,
+0x04b1, 0x04b1,
+0x04b3, 0x04b3,
+0x04b5, 0x04b5,
+0x04b7, 0x04b7,
+0x04b9, 0x04b9,
+0x04bb, 0x04bb,
+0x04bd, 0x04bd,
+0x04bf, 0x04bf,
+0x04c2, 0x04c2,
+0x04c4, 0x04c4,
+0x04c6, 0x04c6,
+0x04c8, 0x04c8,
+0x04ca, 0x04ca,
+0x04cc, 0x04cc,
+0x04ce, 0x04cf,
+0x04d1, 0x04d1,
+0x04d3, 0x04d3,
+0x04d5, 0x04d5,
+0x04d7, 0x04d7,
+0x04d9, 0x04d9,
+0x04db, 0x04db,
+0x04dd, 0x04dd,
+0x04df, 0x04df,
+0x04e1, 0x04e1,
+0x04e3, 0x04e3,
+0x04e5, 0x04e5,
+0x04e7, 0x04e7,
+0x04e9, 0x04e9,
+0x04eb, 0x04eb,
+0x04ed, 0x04ed,
+0x04ef, 0x04ef,
+0x04f1, 0x04f1,
+0x04f3, 0x04f3,
+0x04f5, 0x04f5,
+0x04f7, 0x04f7,
+0x04f9, 0x04f9,
+0x04fb, 0x04fb,
+0x04fd, 0x04fd,
+0x04ff, 0x04ff,
+0x0501, 0x0501,
+0x0503, 0x0503,
+0x0505, 0x0505,
+0x0507, 0x0507,
+0x0509, 0x0509,
+0x050b, 0x050b,
+0x050d, 0x050d,
+0x050f, 0x050f,
+0x0511, 0x0511,
+0x0513, 0x0513,
+0x0515, 0x0515,
+0x0517, 0x0517,
+0x0519, 0x0519,
+0x051b, 0x051b,
+0x051d, 0x051d,
+0x051f, 0x051f,
+0x0521, 0x0521,
+0x0523, 0x0523,
+0x0525, 0x0525,
+0x0527, 0x0527,
+0x0529, 0x0529,
+0x052b, 0x052b,
+0x052d, 0x052d,
+0x052f, 0x052f,
+0x0561, 0x0587,
+0x13f8, 0x13fd,
+0x1d79, 0x1d79,
+0x1d7d, 0x1d7d,
+0x1e01, 0x1e01,
+0x1e03, 0x1e03,
+0x1e05, 0x1e05,
+0x1e07, 0x1e07,
+0x1e09, 0x1e09,
+0x1e0b, 0x1e0b,
+0x1e0d, 0x1e0d,
+0x1e0f, 0x1e0f,
+0x1e11, 0x1e11,
+0x1e13, 0x1e13,
+0x1e15, 0x1e15,
+0x1e17, 0x1e17,
+0x1e19, 0x1e19,
+0x1e1b, 0x1e1b,
+0x1e1d, 0x1e1d,
+0x1e1f, 0x1e1f,
+0x1e21, 0x1e21,
+0x1e23, 0x1e23,
+0x1e25, 0x1e25,
+0x1e27, 0x1e27,
+0x1e29, 0x1e29,
+0x1e2b, 0x1e2b,
+0x1e2d, 0x1e2d,
+0x1e2f, 0x1e2f,
+0x1e31, 0x1e31,
+0x1e33, 0x1e33,
+0x1e35, 0x1e35,
+0x1e37, 0x1e37,
+0x1e39, 0x1e39,
+0x1e3b, 0x1e3b,
+0x1e3d, 0x1e3d,
+0x1e3f, 0x1e3f,
+0x1e41, 0x1e41,
+0x1e43, 0x1e43,
+0x1e45, 0x1e45,
+0x1e47, 0x1e47,
+0x1e49, 0x1e49,
+0x1e4b, 0x1e4b,
+0x1e4d, 0x1e4d,
+0x1e4f, 0x1e4f,
+0x1e51, 0x1e51,
+0x1e53, 0x1e53,
+0x1e55, 0x1e55,
+0x1e57, 0x1e57,
+0x1e59, 0x1e59,
+0x1e5b, 0x1e5b,
+0x1e5d, 0x1e5d,
+0x1e5f, 0x1e5f,
+0x1e61, 0x1e61,
+0x1e63, 0x1e63,
+0x1e65, 0x1e65,
+0x1e67, 0x1e67,
+0x1e69, 0x1e69,
+0x1e6b, 0x1e6b,
+0x1e6d, 0x1e6d,
+0x1e6f, 0x1e6f,
+0x1e71, 0x1e71,
+0x1e73, 0x1e73,
+0x1e75, 0x1e75,
+0x1e77, 0x1e77,
+0x1e79, 0x1e79,
+0x1e7b, 0x1e7b,
+0x1e7d, 0x1e7d,
+0x1e7f, 0x1e7f,
+0x1e81, 0x1e81,
+0x1e83, 0x1e83,
+0x1e85, 0x1e85,
+0x1e87, 0x1e87,
+0x1e89, 0x1e89,
+0x1e8b, 0x1e8b,
+0x1e8d, 0x1e8d,
+0x1e8f, 0x1e8f,
+0x1e91, 0x1e91,
+0x1e93, 0x1e93,
+0x1e95, 0x1e9b,
+0x1ea1, 0x1ea1,
+0x1ea3, 0x1ea3,
+0x1ea5, 0x1ea5,
+0x1ea7, 0x1ea7,
+0x1ea9, 0x1ea9,
+0x1eab, 0x1eab,
+0x1ead, 0x1ead,
+0x1eaf, 0x1eaf,
+0x1eb1, 0x1eb1,
+0x1eb3, 0x1eb3,
+0x1eb5, 0x1eb5,
+0x1eb7, 0x1eb7,
+0x1eb9, 0x1eb9,
+0x1ebb, 0x1ebb,
+0x1ebd, 0x1ebd,
+0x1ebf, 0x1ebf,
+0x1ec1, 0x1ec1,
+0x1ec3, 0x1ec3,
+0x1ec5, 0x1ec5,
+0x1ec7, 0x1ec7,
+0x1ec9, 0x1ec9,
+0x1ecb, 0x1ecb,
+0x1ecd, 0x1ecd,
+0x1ecf, 0x1ecf,
+0x1ed1, 0x1ed1,
+0x1ed3, 0x1ed3,
+0x1ed5, 0x1ed5,
+0x1ed7, 0x1ed7,
+0x1ed9, 0x1ed9,
+0x1edb, 0x1edb,
+0x1edd, 0x1edd,
+0x1edf, 0x1edf,
+0x1ee1, 0x1ee1,
+0x1ee3, 0x1ee3,
+0x1ee5, 0x1ee5,
+0x1ee7, 0x1ee7,
+0x1ee9, 0x1ee9,
+0x1eeb, 0x1eeb,
+0x1eed, 0x1eed,
+0x1eef, 0x1eef,
+0x1ef1, 0x1ef1,
+0x1ef3, 0x1ef3,
+0x1ef5, 0x1ef5,
+0x1ef7, 0x1ef7,
+0x1ef9, 0x1ef9,
+0x1efb, 0x1efb,
+0x1efd, 0x1efd,
+0x1eff, 0x1f07,
+0x1f10, 0x1f15,
+0x1f20, 0x1f27,
+0x1f30, 0x1f37,
+0x1f40, 0x1f45,
+0x1f50, 0x1f57,
+0x1f60, 0x1f67,
+0x1f70, 0x1f7d,
+0x1f80, 0x1f87,
+0x1f90, 0x1f97,
+0x1fa0, 0x1fa7,
+0x1fb0, 0x1fb4,
+0x1fb6, 0x1fb7,
+0x1fbe, 0x1fbe,
+0x1fc2, 0x1fc4,
+0x1fc6, 0x1fc7,
+0x1fd0, 0x1fd3,
+0x1fd6, 0x1fd7,
+0x1fe0, 0x1fe7,
+0x1ff2, 0x1ff4,
+0x1ff6, 0x1ff7,
+0x214e, 0x214e,
+0x2170, 0x217f,
+0x2184, 0x2184,
+0x24d0, 0x24e9,
+0x2c30, 0x2c5e,
+0x2c61, 0x2c61,
+0x2c65, 0x2c66,
+0x2c68, 0x2c68,
+0x2c6a, 0x2c6a,
+0x2c6c, 0x2c6c,
+0x2c73, 0x2c73,
+0x2c76, 0x2c76,
+0x2c81, 0x2c81,
+0x2c83, 0x2c83,
+0x2c85, 0x2c85,
+0x2c87, 0x2c87,
+0x2c89, 0x2c89,
+0x2c8b, 0x2c8b,
+0x2c8d, 0x2c8d,
+0x2c8f, 0x2c8f,
+0x2c91, 0x2c91,
+0x2c93, 0x2c93,
+0x2c95, 0x2c95,
+0x2c97, 0x2c97,
+0x2c99, 0x2c99,
+0x2c9b, 0x2c9b,
+0x2c9d, 0x2c9d,
+0x2c9f, 0x2c9f,
+0x2ca1, 0x2ca1,
+0x2ca3, 0x2ca3,
+0x2ca5, 0x2ca5,
+0x2ca7, 0x2ca7,
+0x2ca9, 0x2ca9,
+0x2cab, 0x2cab,
+0x2cad, 0x2cad,
+0x2caf, 0x2caf,
+0x2cb1, 0x2cb1,
+0x2cb3, 0x2cb3,
+0x2cb5, 0x2cb5,
+0x2cb7, 0x2cb7,
+0x2cb9, 0x2cb9,
+0x2cbb, 0x2cbb,
+0x2cbd, 0x2cbd,
+0x2cbf, 0x2cbf,
+0x2cc1, 0x2cc1,
+0x2cc3, 0x2cc3,
+0x2cc5, 0x2cc5,
+0x2cc7, 0x2cc7,
+0x2cc9, 0x2cc9,
+0x2ccb, 0x2ccb,
+0x2ccd, 0x2ccd,
+0x2ccf, 0x2ccf,
+0x2cd1, 0x2cd1,
+0x2cd3, 0x2cd3,
+0x2cd5, 0x2cd5,
+0x2cd7, 0x2cd7,
+0x2cd9, 0x2cd9,
+0x2cdb, 0x2cdb,
+0x2cdd, 0x2cdd,
+0x2cdf, 0x2cdf,
+0x2ce1, 0x2ce1,
+0x2ce3, 0x2ce3,
+0x2cec, 0x2cec,
+0x2cee, 0x2cee,
+0x2cf3, 0x2cf3,
+0x2d00, 0x2d25,
+0x2d27, 0x2d27,
+0x2d2d, 0x2d2d,
+0xa641, 0xa641,
+0xa643, 0xa643,
+0xa645, 0xa645,
+0xa647, 0xa647,
+0xa649, 0xa649,
+0xa64b, 0xa64b,
+0xa64d, 0xa64d,
+0xa64f, 0xa64f,
+0xa651, 0xa651,
+0xa653, 0xa653,
+0xa655, 0xa655,
+0xa657, 0xa657,
+0xa659, 0xa659,
+0xa65b, 0xa65b,
+0xa65d, 0xa65d,
+0xa65f, 0xa65f,
+0xa661, 0xa661,
+0xa663, 0xa663,
+0xa665, 0xa665,
+0xa667, 0xa667,
+0xa669, 0xa669,
+0xa66b, 0xa66b,
+0xa66d, 0xa66d,
+0xa681, 0xa681,
+0xa683, 0xa683,
+0xa685, 0xa685,
+0xa687, 0xa687,
+0xa689, 0xa689,
+0xa68b, 0xa68b,
+0xa68d, 0xa68d,
+0xa68f, 0xa68f,
+0xa691, 0xa691,
+0xa693, 0xa693,
+0xa695, 0xa695,
+0xa697, 0xa697,
+0xa699, 0xa699,
+0xa69b, 0xa69b,
+0xa723, 0xa723,
+0xa725, 0xa725,
+0xa727, 0xa727,
+0xa729, 0xa729,
+0xa72b, 0xa72b,
+0xa72d, 0xa72d,
+0xa72f, 0xa72f,
+0xa733, 0xa733,
+0xa735, 0xa735,
+0xa737, 0xa737,
+0xa739, 0xa739,
+0xa73b, 0xa73b,
+0xa73d, 0xa73d,
+0xa73f, 0xa73f,
+0xa741, 0xa741,
+0xa743, 0xa743,
+0xa745, 0xa745,
+0xa747, 0xa747,
+0xa749, 0xa749,
+0xa74b, 0xa74b,
+0xa74d, 0xa74d,
+0xa74f, 0xa74f,
+0xa751, 0xa751,
+0xa753, 0xa753,
+0xa755, 0xa755,
+0xa757, 0xa757,
+0xa759, 0xa759,
+0xa75b, 0xa75b,
+0xa75d, 0xa75d,
+0xa75f, 0xa75f,
+0xa761, 0xa761,
+0xa763, 0xa763,
+0xa765, 0xa765,
+0xa767, 0xa767,
+0xa769, 0xa769,
+0xa76b, 0xa76b,
+0xa76d, 0xa76d,
+0xa76f, 0xa76f,
+0xa77a, 0xa77a,
+0xa77c, 0xa77c,
+0xa77f, 0xa77f,
+0xa781, 0xa781,
+0xa783, 0xa783,
+0xa785, 0xa785,
+0xa787, 0xa787,
+0xa78c, 0xa78c,
+0xa791, 0xa791,
+0xa793, 0xa793,
+0xa797, 0xa797,
+0xa799, 0xa799,
+0xa79b, 0xa79b,
+0xa79d, 0xa79d,
+0xa79f, 0xa79f,
+0xa7a1, 0xa7a1,
+0xa7a3, 0xa7a3,
+0xa7a5, 0xa7a5,
+0xa7a7, 0xa7a7,
+0xa7a9, 0xa7a9,
+0xa7b5, 0xa7b5,
+0xa7b7, 0xa7b7,
+0xab53, 0xab53,
+0xab70, 0xabbf,
+0xfb00, 0xfb06,
+0xfb13, 0xfb17,
+0xff41, 0xff5a,
+0x10428, 0x1044f,
+0x10cc0, 0x10cf2,
+0x118c0, 0x118df,
+}; /* END of CR_Changes_When_Titlecased */
+
+/* PROPERTY: 'Changes_When_Uppercased': Derived Property */
+static const OnigCodePoint
+CR_Changes_When_Uppercased[] = { 605,
+0x0061, 0x007a,
+0x00b5, 0x00b5,
+0x00df, 0x00f6,
+0x00f8, 0x00ff,
+0x0101, 0x0101,
+0x0103, 0x0103,
+0x0105, 0x0105,
+0x0107, 0x0107,
+0x0109, 0x0109,
+0x010b, 0x010b,
+0x010d, 0x010d,
+0x010f, 0x010f,
+0x0111, 0x0111,
+0x0113, 0x0113,
+0x0115, 0x0115,
+0x0117, 0x0117,
+0x0119, 0x0119,
+0x011b, 0x011b,
+0x011d, 0x011d,
+0x011f, 0x011f,
+0x0121, 0x0121,
+0x0123, 0x0123,
+0x0125, 0x0125,
+0x0127, 0x0127,
+0x0129, 0x0129,
+0x012b, 0x012b,
+0x012d, 0x012d,
+0x012f, 0x012f,
+0x0131, 0x0131,
+0x0133, 0x0133,
+0x0135, 0x0135,
+0x0137, 0x0137,
+0x013a, 0x013a,
+0x013c, 0x013c,
+0x013e, 0x013e,
+0x0140, 0x0140,
+0x0142, 0x0142,
+0x0144, 0x0144,
+0x0146, 0x0146,
+0x0148, 0x0149,
+0x014b, 0x014b,
+0x014d, 0x014d,
+0x014f, 0x014f,
+0x0151, 0x0151,
+0x0153, 0x0153,
+0x0155, 0x0155,
+0x0157, 0x0157,
+0x0159, 0x0159,
+0x015b, 0x015b,
+0x015d, 0x015d,
+0x015f, 0x015f,
+0x0161, 0x0161,
+0x0163, 0x0163,
+0x0165, 0x0165,
+0x0167, 0x0167,
+0x0169, 0x0169,
+0x016b, 0x016b,
+0x016d, 0x016d,
+0x016f, 0x016f,
+0x0171, 0x0171,
+0x0173, 0x0173,
+0x0175, 0x0175,
+0x0177, 0x0177,
+0x017a, 0x017a,
+0x017c, 0x017c,
+0x017e, 0x0180,
+0x0183, 0x0183,
+0x0185, 0x0185,
+0x0188, 0x0188,
+0x018c, 0x018c,
+0x0192, 0x0192,
+0x0195, 0x0195,
+0x0199, 0x019a,
+0x019e, 0x019e,
+0x01a1, 0x01a1,
+0x01a3, 0x01a3,
+0x01a5, 0x01a5,
+0x01a8, 0x01a8,
+0x01ad, 0x01ad,
+0x01b0, 0x01b0,
+0x01b4, 0x01b4,
+0x01b6, 0x01b6,
+0x01b9, 0x01b9,
+0x01bd, 0x01bd,
+0x01bf, 0x01bf,
+0x01c5, 0x01c6,
+0x01c8, 0x01c9,
+0x01cb, 0x01cc,
+0x01ce, 0x01ce,
+0x01d0, 0x01d0,
+0x01d2, 0x01d2,
+0x01d4, 0x01d4,
+0x01d6, 0x01d6,
+0x01d8, 0x01d8,
+0x01da, 0x01da,
+0x01dc, 0x01dd,
+0x01df, 0x01df,
+0x01e1, 0x01e1,
+0x01e3, 0x01e3,
+0x01e5, 0x01e5,
+0x01e7, 0x01e7,
+0x01e9, 0x01e9,
+0x01eb, 0x01eb,
+0x01ed, 0x01ed,
+0x01ef, 0x01f0,
+0x01f2, 0x01f3,
+0x01f5, 0x01f5,
+0x01f9, 0x01f9,
+0x01fb, 0x01fb,
+0x01fd, 0x01fd,
+0x01ff, 0x01ff,
+0x0201, 0x0201,
+0x0203, 0x0203,
+0x0205, 0x0205,
+0x0207, 0x0207,
+0x0209, 0x0209,
+0x020b, 0x020b,
+0x020d, 0x020d,
+0x020f, 0x020f,
+0x0211, 0x0211,
+0x0213, 0x0213,
+0x0215, 0x0215,
+0x0217, 0x0217,
+0x0219, 0x0219,
+0x021b, 0x021b,
+0x021d, 0x021d,
+0x021f, 0x021f,
+0x0223, 0x0223,
+0x0225, 0x0225,
+0x0227, 0x0227,
+0x0229, 0x0229,
+0x022b, 0x022b,
+0x022d, 0x022d,
+0x022f, 0x022f,
+0x0231, 0x0231,
+0x0233, 0x0233,
+0x023c, 0x023c,
+0x023f, 0x0240,
+0x0242, 0x0242,
+0x0247, 0x0247,
+0x0249, 0x0249,
+0x024b, 0x024b,
+0x024d, 0x024d,
+0x024f, 0x0254,
+0x0256, 0x0257,
+0x0259, 0x0259,
+0x025b, 0x025c,
+0x0260, 0x0261,
+0x0263, 0x0263,
+0x0265, 0x0266,
+0x0268, 0x0269,
+0x026b, 0x026c,
+0x026f, 0x026f,
+0x0271, 0x0272,
+0x0275, 0x0275,
+0x027d, 0x027d,
+0x0280, 0x0280,
+0x0283, 0x0283,
+0x0287, 0x028c,
+0x0292, 0x0292,
+0x029d, 0x029e,
+0x0345, 0x0345,
+0x0371, 0x0371,
+0x0373, 0x0373,
+0x0377, 0x0377,
+0x037b, 0x037d,
+0x0390, 0x0390,
+0x03ac, 0x03ce,
+0x03d0, 0x03d1,
+0x03d5, 0x03d7,
+0x03d9, 0x03d9,
+0x03db, 0x03db,
+0x03dd, 0x03dd,
+0x03df, 0x03df,
+0x03e1, 0x03e1,
+0x03e3, 0x03e3,
+0x03e5, 0x03e5,
+0x03e7, 0x03e7,
+0x03e9, 0x03e9,
+0x03eb, 0x03eb,
+0x03ed, 0x03ed,
+0x03ef, 0x03f3,
+0x03f5, 0x03f5,
+0x03f8, 0x03f8,
+0x03fb, 0x03fb,
+0x0430, 0x045f,
+0x0461, 0x0461,
+0x0463, 0x0463,
+0x0465, 0x0465,
+0x0467, 0x0467,
+0x0469, 0x0469,
+0x046b, 0x046b,
+0x046d, 0x046d,
+0x046f, 0x046f,
+0x0471, 0x0471,
+0x0473, 0x0473,
+0x0475, 0x0475,
+0x0477, 0x0477,
+0x0479, 0x0479,
+0x047b, 0x047b,
+0x047d, 0x047d,
+0x047f, 0x047f,
+0x0481, 0x0481,
+0x048b, 0x048b,
+0x048d, 0x048d,
+0x048f, 0x048f,
+0x0491, 0x0491,
+0x0493, 0x0493,
+0x0495, 0x0495,
+0x0497, 0x0497,
+0x0499, 0x0499,
+0x049b, 0x049b,
+0x049d, 0x049d,
+0x049f, 0x049f,
+0x04a1, 0x04a1,
+0x04a3, 0x04a3,
+0x04a5, 0x04a5,
+0x04a7, 0x04a7,
+0x04a9, 0x04a9,
+0x04ab, 0x04ab,
+0x04ad, 0x04ad,
+0x04af, 0x04af,
+0x04b1, 0x04b1,
+0x04b3, 0x04b3,
+0x04b5, 0x04b5,
+0x04b7, 0x04b7,
+0x04b9, 0x04b9,
+0x04bb, 0x04bb,
+0x04bd, 0x04bd,
+0x04bf, 0x04bf,
+0x04c2, 0x04c2,
+0x04c4, 0x04c4,
+0x04c6, 0x04c6,
+0x04c8, 0x04c8,
+0x04ca, 0x04ca,
+0x04cc, 0x04cc,
+0x04ce, 0x04cf,
+0x04d1, 0x04d1,
+0x04d3, 0x04d3,
+0x04d5, 0x04d5,
+0x04d7, 0x04d7,
+0x04d9, 0x04d9,
+0x04db, 0x04db,
+0x04dd, 0x04dd,
+0x04df, 0x04df,
+0x04e1, 0x04e1,
+0x04e3, 0x04e3,
+0x04e5, 0x04e5,
+0x04e7, 0x04e7,
+0x04e9, 0x04e9,
+0x04eb, 0x04eb,
+0x04ed, 0x04ed,
+0x04ef, 0x04ef,
+0x04f1, 0x04f1,
+0x04f3, 0x04f3,
+0x04f5, 0x04f5,
+0x04f7, 0x04f7,
+0x04f9, 0x04f9,
+0x04fb, 0x04fb,
+0x04fd, 0x04fd,
+0x04ff, 0x04ff,
+0x0501, 0x0501,
+0x0503, 0x0503,
+0x0505, 0x0505,
+0x0507, 0x0507,
+0x0509, 0x0509,
+0x050b, 0x050b,
+0x050d, 0x050d,
+0x050f, 0x050f,
+0x0511, 0x0511,
+0x0513, 0x0513,
+0x0515, 0x0515,
+0x0517, 0x0517,
+0x0519, 0x0519,
+0x051b, 0x051b,
+0x051d, 0x051d,
+0x051f, 0x051f,
+0x0521, 0x0521,
+0x0523, 0x0523,
+0x0525, 0x0525,
+0x0527, 0x0527,
+0x0529, 0x0529,
+0x052b, 0x052b,
+0x052d, 0x052d,
+0x052f, 0x052f,
+0x0561, 0x0587,
+0x13f8, 0x13fd,
+0x1d79, 0x1d79,
+0x1d7d, 0x1d7d,
+0x1e01, 0x1e01,
+0x1e03, 0x1e03,
+0x1e05, 0x1e05,
+0x1e07, 0x1e07,
+0x1e09, 0x1e09,
+0x1e0b, 0x1e0b,
+0x1e0d, 0x1e0d,
+0x1e0f, 0x1e0f,
+0x1e11, 0x1e11,
+0x1e13, 0x1e13,
+0x1e15, 0x1e15,
+0x1e17, 0x1e17,
+0x1e19, 0x1e19,
+0x1e1b, 0x1e1b,
+0x1e1d, 0x1e1d,
+0x1e1f, 0x1e1f,
+0x1e21, 0x1e21,
+0x1e23, 0x1e23,
+0x1e25, 0x1e25,
+0x1e27, 0x1e27,
+0x1e29, 0x1e29,
+0x1e2b, 0x1e2b,
+0x1e2d, 0x1e2d,
+0x1e2f, 0x1e2f,
+0x1e31, 0x1e31,
+0x1e33, 0x1e33,
+0x1e35, 0x1e35,
+0x1e37, 0x1e37,
+0x1e39, 0x1e39,
+0x1e3b, 0x1e3b,
+0x1e3d, 0x1e3d,
+0x1e3f, 0x1e3f,
+0x1e41, 0x1e41,
+0x1e43, 0x1e43,
+0x1e45, 0x1e45,
+0x1e47, 0x1e47,
+0x1e49, 0x1e49,
+0x1e4b, 0x1e4b,
+0x1e4d, 0x1e4d,
+0x1e4f, 0x1e4f,
+0x1e51, 0x1e51,
+0x1e53, 0x1e53,
+0x1e55, 0x1e55,
+0x1e57, 0x1e57,
+0x1e59, 0x1e59,
+0x1e5b, 0x1e5b,
+0x1e5d, 0x1e5d,
+0x1e5f, 0x1e5f,
+0x1e61, 0x1e61,
+0x1e63, 0x1e63,
+0x1e65, 0x1e65,
+0x1e67, 0x1e67,
+0x1e69, 0x1e69,
+0x1e6b, 0x1e6b,
+0x1e6d, 0x1e6d,
+0x1e6f, 0x1e6f,
+0x1e71, 0x1e71,
+0x1e73, 0x1e73,
+0x1e75, 0x1e75,
+0x1e77, 0x1e77,
+0x1e79, 0x1e79,
+0x1e7b, 0x1e7b,
+0x1e7d, 0x1e7d,
+0x1e7f, 0x1e7f,
+0x1e81, 0x1e81,
+0x1e83, 0x1e83,
+0x1e85, 0x1e85,
+0x1e87, 0x1e87,
+0x1e89, 0x1e89,
+0x1e8b, 0x1e8b,
+0x1e8d, 0x1e8d,
+0x1e8f, 0x1e8f,
+0x1e91, 0x1e91,
+0x1e93, 0x1e93,
+0x1e95, 0x1e9b,
+0x1ea1, 0x1ea1,
+0x1ea3, 0x1ea3,
+0x1ea5, 0x1ea5,
+0x1ea7, 0x1ea7,
+0x1ea9, 0x1ea9,
+0x1eab, 0x1eab,
+0x1ead, 0x1ead,
+0x1eaf, 0x1eaf,
+0x1eb1, 0x1eb1,
+0x1eb3, 0x1eb3,
+0x1eb5, 0x1eb5,
+0x1eb7, 0x1eb7,
+0x1eb9, 0x1eb9,
+0x1ebb, 0x1ebb,
+0x1ebd, 0x1ebd,
+0x1ebf, 0x1ebf,
+0x1ec1, 0x1ec1,
+0x1ec3, 0x1ec3,
+0x1ec5, 0x1ec5,
+0x1ec7, 0x1ec7,
+0x1ec9, 0x1ec9,
+0x1ecb, 0x1ecb,
+0x1ecd, 0x1ecd,
+0x1ecf, 0x1ecf,
+0x1ed1, 0x1ed1,
+0x1ed3, 0x1ed3,
+0x1ed5, 0x1ed5,
+0x1ed7, 0x1ed7,
+0x1ed9, 0x1ed9,
+0x1edb, 0x1edb,
+0x1edd, 0x1edd,
+0x1edf, 0x1edf,
+0x1ee1, 0x1ee1,
+0x1ee3, 0x1ee3,
+0x1ee5, 0x1ee5,
+0x1ee7, 0x1ee7,
+0x1ee9, 0x1ee9,
+0x1eeb, 0x1eeb,
+0x1eed, 0x1eed,
+0x1eef, 0x1eef,
+0x1ef1, 0x1ef1,
+0x1ef3, 0x1ef3,
+0x1ef5, 0x1ef5,
+0x1ef7, 0x1ef7,
+0x1ef9, 0x1ef9,
+0x1efb, 0x1efb,
+0x1efd, 0x1efd,
+0x1eff, 0x1f07,
+0x1f10, 0x1f15,
+0x1f20, 0x1f27,
+0x1f30, 0x1f37,
+0x1f40, 0x1f45,
+0x1f50, 0x1f57,
+0x1f60, 0x1f67,
+0x1f70, 0x1f7d,
+0x1f80, 0x1fb4,
+0x1fb6, 0x1fb7,
+0x1fbc, 0x1fbc,
+0x1fbe, 0x1fbe,
+0x1fc2, 0x1fc4,
+0x1fc6, 0x1fc7,
+0x1fcc, 0x1fcc,
+0x1fd0, 0x1fd3,
+0x1fd6, 0x1fd7,
+0x1fe0, 0x1fe7,
+0x1ff2, 0x1ff4,
+0x1ff6, 0x1ff7,
+0x1ffc, 0x1ffc,
+0x214e, 0x214e,
+0x2170, 0x217f,
+0x2184, 0x2184,
+0x24d0, 0x24e9,
+0x2c30, 0x2c5e,
+0x2c61, 0x2c61,
+0x2c65, 0x2c66,
+0x2c68, 0x2c68,
+0x2c6a, 0x2c6a,
+0x2c6c, 0x2c6c,
+0x2c73, 0x2c73,
+0x2c76, 0x2c76,
+0x2c81, 0x2c81,
+0x2c83, 0x2c83,
+0x2c85, 0x2c85,
+0x2c87, 0x2c87,
+0x2c89, 0x2c89,
+0x2c8b, 0x2c8b,
+0x2c8d, 0x2c8d,
+0x2c8f, 0x2c8f,
+0x2c91, 0x2c91,
+0x2c93, 0x2c93,
+0x2c95, 0x2c95,
+0x2c97, 0x2c97,
+0x2c99, 0x2c99,
+0x2c9b, 0x2c9b,
+0x2c9d, 0x2c9d,
+0x2c9f, 0x2c9f,
+0x2ca1, 0x2ca1,
+0x2ca3, 0x2ca3,
+0x2ca5, 0x2ca5,
+0x2ca7, 0x2ca7,
+0x2ca9, 0x2ca9,
+0x2cab, 0x2cab,
+0x2cad, 0x2cad,
+0x2caf, 0x2caf,
+0x2cb1, 0x2cb1,
+0x2cb3, 0x2cb3,
+0x2cb5, 0x2cb5,
+0x2cb7, 0x2cb7,
+0x2cb9, 0x2cb9,
+0x2cbb, 0x2cbb,
+0x2cbd, 0x2cbd,
+0x2cbf, 0x2cbf,
+0x2cc1, 0x2cc1,
+0x2cc3, 0x2cc3,
+0x2cc5, 0x2cc5,
+0x2cc7, 0x2cc7,
+0x2cc9, 0x2cc9,
+0x2ccb, 0x2ccb,
+0x2ccd, 0x2ccd,
+0x2ccf, 0x2ccf,
+0x2cd1, 0x2cd1,
+0x2cd3, 0x2cd3,
+0x2cd5, 0x2cd5,
+0x2cd7, 0x2cd7,
+0x2cd9, 0x2cd9,
+0x2cdb, 0x2cdb,
+0x2cdd, 0x2cdd,
+0x2cdf, 0x2cdf,
+0x2ce1, 0x2ce1,
+0x2ce3, 0x2ce3,
+0x2cec, 0x2cec,
+0x2cee, 0x2cee,
+0x2cf3, 0x2cf3,
+0x2d00, 0x2d25,
+0x2d27, 0x2d27,
+0x2d2d, 0x2d2d,
+0xa641, 0xa641,
+0xa643, 0xa643,
+0xa645, 0xa645,
+0xa647, 0xa647,
+0xa649, 0xa649,
+0xa64b, 0xa64b,
+0xa64d, 0xa64d,
+0xa64f, 0xa64f,
+0xa651, 0xa651,
+0xa653, 0xa653,
+0xa655, 0xa655,
+0xa657, 0xa657,
+0xa659, 0xa659,
+0xa65b, 0xa65b,
+0xa65d, 0xa65d,
+0xa65f, 0xa65f,
+0xa661, 0xa661,
+0xa663, 0xa663,
+0xa665, 0xa665,
+0xa667, 0xa667,
+0xa669, 0xa669,
+0xa66b, 0xa66b,
+0xa66d, 0xa66d,
+0xa681, 0xa681,
+0xa683, 0xa683,
+0xa685, 0xa685,
+0xa687, 0xa687,
+0xa689, 0xa689,
+0xa68b, 0xa68b,
+0xa68d, 0xa68d,
+0xa68f, 0xa68f,
+0xa691, 0xa691,
+0xa693, 0xa693,
+0xa695, 0xa695,
+0xa697, 0xa697,
+0xa699, 0xa699,
+0xa69b, 0xa69b,
+0xa723, 0xa723,
+0xa725, 0xa725,
+0xa727, 0xa727,
+0xa729, 0xa729,
+0xa72b, 0xa72b,
+0xa72d, 0xa72d,
+0xa72f, 0xa72f,
+0xa733, 0xa733,
+0xa735, 0xa735,
+0xa737, 0xa737,
+0xa739, 0xa739,
+0xa73b, 0xa73b,
+0xa73d, 0xa73d,
+0xa73f, 0xa73f,
+0xa741, 0xa741,
+0xa743, 0xa743,
+0xa745, 0xa745,
+0xa747, 0xa747,
+0xa749, 0xa749,
+0xa74b, 0xa74b,
+0xa74d, 0xa74d,
+0xa74f, 0xa74f,
+0xa751, 0xa751,
+0xa753, 0xa753,
+0xa755, 0xa755,
+0xa757, 0xa757,
+0xa759, 0xa759,
+0xa75b, 0xa75b,
+0xa75d, 0xa75d,
+0xa75f, 0xa75f,
+0xa761, 0xa761,
+0xa763, 0xa763,
+0xa765, 0xa765,
+0xa767, 0xa767,
+0xa769, 0xa769,
+0xa76b, 0xa76b,
+0xa76d, 0xa76d,
+0xa76f, 0xa76f,
+0xa77a, 0xa77a,
+0xa77c, 0xa77c,
+0xa77f, 0xa77f,
+0xa781, 0xa781,
+0xa783, 0xa783,
+0xa785, 0xa785,
+0xa787, 0xa787,
+0xa78c, 0xa78c,
+0xa791, 0xa791,
+0xa793, 0xa793,
+0xa797, 0xa797,
+0xa799, 0xa799,
+0xa79b, 0xa79b,
+0xa79d, 0xa79d,
+0xa79f, 0xa79f,
+0xa7a1, 0xa7a1,
+0xa7a3, 0xa7a3,
+0xa7a5, 0xa7a5,
+0xa7a7, 0xa7a7,
+0xa7a9, 0xa7a9,
+0xa7b5, 0xa7b5,
+0xa7b7, 0xa7b7,
+0xab53, 0xab53,
+0xab70, 0xabbf,
+0xfb00, 0xfb06,
+0xfb13, 0xfb17,
+0xff41, 0xff5a,
+0x10428, 0x1044f,
+0x10cc0, 0x10cf2,
+0x118c0, 0x118df,
+}; /* END of CR_Changes_When_Uppercased */
+
+/* PROPERTY: 'Cherokee': Script */
+static const OnigCodePoint
+CR_Cherokee[] = { 3,
+0x13a0, 0x13f5,
+0x13f8, 0x13fd,
+0xab70, 0xabbf,
+}; /* END of CR_Cherokee */
+
/* PROPERTY: 'Cn': General Category */
static const OnigCodePoint
CR_Cn[] = { 613,
@@ -6662,12 +9918,3243 @@ CR_Co[] = { 3,
0x100000, 0x10fffd,
}; /* END of CR_Co */
+/* PROPERTY: 'Common': Script */
+static const OnigCodePoint
+CR_Common[] = { 161,
+0x0000, 0x0040,
+0x005b, 0x0060,
+0x007b, 0x00a9,
+0x00ab, 0x00b9,
+0x00bb, 0x00bf,
+0x00d7, 0x00d7,
+0x00f7, 0x00f7,
+0x02b9, 0x02df,
+0x02e5, 0x02e9,
+0x02ec, 0x02ff,
+0x0374, 0x0374,
+0x037e, 0x037e,
+0x0385, 0x0385,
+0x0387, 0x0387,
+0x0589, 0x0589,
+0x0605, 0x0605,
+0x060c, 0x060c,
+0x061b, 0x061c,
+0x061f, 0x061f,
+0x0640, 0x0640,
+0x06dd, 0x06dd,
+0x0964, 0x0965,
+0x0e3f, 0x0e3f,
+0x0fd5, 0x0fd8,
+0x10fb, 0x10fb,
+0x16eb, 0x16ed,
+0x1735, 0x1736,
+0x1802, 0x1803,
+0x1805, 0x1805,
+0x1cd3, 0x1cd3,
+0x1ce1, 0x1ce1,
+0x1ce9, 0x1cec,
+0x1cee, 0x1cf3,
+0x1cf5, 0x1cf6,
+0x2000, 0x200b,
+0x200e, 0x2064,
+0x2066, 0x2070,
+0x2074, 0x207e,
+0x2080, 0x208e,
+0x20a0, 0x20be,
+0x2100, 0x2125,
+0x2127, 0x2129,
+0x212c, 0x2131,
+0x2133, 0x214d,
+0x214f, 0x215f,
+0x2189, 0x218b,
+0x2190, 0x23fa,
+0x2400, 0x2426,
+0x2440, 0x244a,
+0x2460, 0x27ff,
+0x2900, 0x2b73,
+0x2b76, 0x2b95,
+0x2b98, 0x2bb9,
+0x2bbd, 0x2bc8,
+0x2bca, 0x2bd1,
+0x2bec, 0x2bef,
+0x2e00, 0x2e42,
+0x2ff0, 0x2ffb,
+0x3000, 0x3004,
+0x3006, 0x3006,
+0x3008, 0x3020,
+0x3030, 0x3037,
+0x303c, 0x303f,
+0x309b, 0x309c,
+0x30a0, 0x30a0,
+0x30fb, 0x30fc,
+0x3190, 0x319f,
+0x31c0, 0x31e3,
+0x3220, 0x325f,
+0x327f, 0x32cf,
+0x3358, 0x33ff,
+0x4dc0, 0x4dff,
+0xa700, 0xa721,
+0xa788, 0xa78a,
+0xa830, 0xa839,
+0xa92e, 0xa92e,
+0xa9cf, 0xa9cf,
+0xab5b, 0xab5b,
+0xfd3e, 0xfd3f,
+0xfe10, 0xfe19,
+0xfe30, 0xfe52,
+0xfe54, 0xfe66,
+0xfe68, 0xfe6b,
+0xfeff, 0xfeff,
+0xff01, 0xff20,
+0xff3b, 0xff40,
+0xff5b, 0xff65,
+0xff70, 0xff70,
+0xff9e, 0xff9f,
+0xffe0, 0xffe6,
+0xffe8, 0xffee,
+0xfff9, 0xfffd,
+0x10100, 0x10102,
+0x10107, 0x10133,
+0x10137, 0x1013f,
+0x10190, 0x1019b,
+0x101d0, 0x101fc,
+0x102e1, 0x102fb,
+0x1bca0, 0x1bca3,
+0x1d000, 0x1d0f5,
+0x1d100, 0x1d126,
+0x1d129, 0x1d166,
+0x1d16a, 0x1d17a,
+0x1d183, 0x1d184,
+0x1d18c, 0x1d1a9,
+0x1d1ae, 0x1d1e8,
+0x1d300, 0x1d356,
+0x1d360, 0x1d371,
+0x1d400, 0x1d454,
+0x1d456, 0x1d49c,
+0x1d49e, 0x1d49f,
+0x1d4a2, 0x1d4a2,
+0x1d4a5, 0x1d4a6,
+0x1d4a9, 0x1d4ac,
+0x1d4ae, 0x1d4b9,
+0x1d4bb, 0x1d4bb,
+0x1d4bd, 0x1d4c3,
+0x1d4c5, 0x1d505,
+0x1d507, 0x1d50a,
+0x1d50d, 0x1d514,
+0x1d516, 0x1d51c,
+0x1d51e, 0x1d539,
+0x1d53b, 0x1d53e,
+0x1d540, 0x1d544,
+0x1d546, 0x1d546,
+0x1d54a, 0x1d550,
+0x1d552, 0x1d6a5,
+0x1d6a8, 0x1d7cb,
+0x1d7ce, 0x1d7ff,
+0x1f000, 0x1f02b,
+0x1f030, 0x1f093,
+0x1f0a0, 0x1f0ae,
+0x1f0b1, 0x1f0bf,
+0x1f0c1, 0x1f0cf,
+0x1f0d1, 0x1f0f5,
+0x1f100, 0x1f10c,
+0x1f110, 0x1f12e,
+0x1f130, 0x1f16b,
+0x1f170, 0x1f19a,
+0x1f1e6, 0x1f1ff,
+0x1f201, 0x1f202,
+0x1f210, 0x1f23a,
+0x1f240, 0x1f248,
+0x1f250, 0x1f251,
+0x1f300, 0x1f579,
+0x1f57b, 0x1f5a3,
+0x1f5a5, 0x1f6d0,
+0x1f6e0, 0x1f6ec,
+0x1f6f0, 0x1f6f3,
+0x1f700, 0x1f773,
+0x1f780, 0x1f7d4,
+0x1f800, 0x1f80b,
+0x1f810, 0x1f847,
+0x1f850, 0x1f859,
+0x1f860, 0x1f887,
+0x1f890, 0x1f8ad,
+0x1f910, 0x1f918,
+0x1f980, 0x1f984,
+0x1f9c0, 0x1f9c0,
+0xe0001, 0xe0001,
+0xe0020, 0xe007f,
+}; /* END of CR_Common */
+
+/* PROPERTY: 'Coptic': Script */
+static const OnigCodePoint
+CR_Coptic[] = { 3,
+0x03e2, 0x03ef,
+0x2c80, 0x2cf3,
+0x2cf9, 0x2cff,
+}; /* END of CR_Coptic */
+
/* PROPERTY: 'Cs': General Category */
static const OnigCodePoint
CR_Cs[] = { 1,
0xd800, 0xdfff,
}; /* END of CR_Cs */
+/* PROPERTY: 'Cuneiform': Script */
+static const OnigCodePoint
+CR_Cuneiform[] = { 4,
+0x12000, 0x12399,
+0x12400, 0x1246e,
+0x12470, 0x12474,
+0x12480, 0x12543,
+}; /* END of CR_Cuneiform */
+
+/* PROPERTY: 'Cypriot': Script */
+static const OnigCodePoint
+CR_Cypriot[] = { 6,
+0x10800, 0x10805,
+0x10808, 0x10808,
+0x1080a, 0x10835,
+0x10837, 0x10838,
+0x1083c, 0x1083c,
+0x1083f, 0x1083f,
+}; /* END of CR_Cypriot */
+
+/* PROPERTY: 'Cyrillic': Script */
+static const OnigCodePoint
+CR_Cyrillic[] = { 7,
+0x0400, 0x0484,
+0x0487, 0x052f,
+0x1d2b, 0x1d2b,
+0x1d78, 0x1d78,
+0x2de0, 0x2dff,
+0xa640, 0xa69f,
+0xfe2e, 0xfe2f,
+}; /* END of CR_Cyrillic */
+
+/* PROPERTY: 'Dash': Binary Property */
+static const OnigCodePoint
+CR_Dash[] = { 21,
+0x002d, 0x002d,
+0x058a, 0x058a,
+0x05be, 0x05be,
+0x1400, 0x1400,
+0x1806, 0x1806,
+0x2010, 0x2015,
+0x2053, 0x2053,
+0x207b, 0x207b,
+0x208b, 0x208b,
+0x2212, 0x2212,
+0x2e17, 0x2e17,
+0x2e1a, 0x2e1a,
+0x2e3a, 0x2e3b,
+0x2e40, 0x2e40,
+0x301c, 0x301c,
+0x3030, 0x3030,
+0x30a0, 0x30a0,
+0xfe31, 0xfe32,
+0xfe58, 0xfe58,
+0xfe63, 0xfe63,
+0xff0d, 0xff0d,
+}; /* END of CR_Dash */
+
+/* PROPERTY: 'Default_Ignorable_Code_Point': Derived Property */
+static const OnigCodePoint
+CR_Default_Ignorable_Code_Point[] = { 17,
+0x00ad, 0x00ad,
+0x034f, 0x034f,
+0x061c, 0x061c,
+0x115f, 0x1160,
+0x17b4, 0x17b5,
+0x180b, 0x180e,
+0x200b, 0x200f,
+0x202a, 0x202e,
+0x2060, 0x206f,
+0x3164, 0x3164,
+0xfe00, 0xfe0f,
+0xfeff, 0xfeff,
+0xffa0, 0xffa0,
+0xfff0, 0xfff8,
+0x1bca0, 0x1bca3,
+0x1d173, 0x1d17a,
+0xe0000, 0xe0fff,
+}; /* END of CR_Default_Ignorable_Code_Point */
+
+/* PROPERTY: 'Deprecated': Binary Property */
+static const OnigCodePoint
+CR_Deprecated[] = { 9,
+0x0149, 0x0149,
+0x0673, 0x0673,
+0x0f77, 0x0f77,
+0x0f79, 0x0f79,
+0x17a3, 0x17a4,
+0x206a, 0x206f,
+0x2329, 0x232a,
+0xe0001, 0xe0001,
+0xe007f, 0xe007f,
+}; /* END of CR_Deprecated */
+
+/* PROPERTY: 'Deseret': Script */
+static const OnigCodePoint
+CR_Deseret[] = { 1,
+0x10400, 0x1044f,
+}; /* END of CR_Deseret */
+
+/* PROPERTY: 'Devanagari': Script */
+static const OnigCodePoint
+CR_Devanagari[] = { 4,
+0x0900, 0x0950,
+0x0953, 0x0963,
+0x0966, 0x097f,
+0xa8e0, 0xa8fd,
+}; /* END of CR_Devanagari */
+
+/* PROPERTY: 'Diacritic': Binary Property */
+static const OnigCodePoint
+CR_Diacritic[] = { 147,
+0x005e, 0x005e,
+0x0060, 0x0060,
+0x00a8, 0x00a8,
+0x00af, 0x00af,
+0x00b4, 0x00b4,
+0x00b7, 0x00b8,
+0x02b0, 0x034e,
+0x0350, 0x0357,
+0x035d, 0x0362,
+0x0374, 0x0375,
+0x037a, 0x037a,
+0x0384, 0x0385,
+0x0483, 0x0487,
+0x0559, 0x0559,
+0x0591, 0x05a1,
+0x05a3, 0x05bd,
+0x05bf, 0x05bf,
+0x05c1, 0x05c2,
+0x05c4, 0x05c4,
+0x064b, 0x0652,
+0x0657, 0x0658,
+0x06df, 0x06e0,
+0x06e5, 0x06e6,
+0x06ea, 0x06ec,
+0x0730, 0x074a,
+0x07a6, 0x07b0,
+0x07eb, 0x07f5,
+0x0818, 0x0819,
+0x08e3, 0x08fe,
+0x093c, 0x093c,
+0x094d, 0x094d,
+0x0951, 0x0954,
+0x0971, 0x0971,
+0x09bc, 0x09bc,
+0x09cd, 0x09cd,
+0x0a3c, 0x0a3c,
+0x0a4d, 0x0a4d,
+0x0abc, 0x0abc,
+0x0acd, 0x0acd,
+0x0b3c, 0x0b3c,
+0x0b4d, 0x0b4d,
+0x0bcd, 0x0bcd,
+0x0c4d, 0x0c4d,
+0x0cbc, 0x0cbc,
+0x0ccd, 0x0ccd,
+0x0d4d, 0x0d4d,
+0x0dca, 0x0dca,
+0x0e47, 0x0e4c,
+0x0e4e, 0x0e4e,
+0x0ec8, 0x0ecc,
+0x0f18, 0x0f19,
+0x0f35, 0x0f35,
+0x0f37, 0x0f37,
+0x0f39, 0x0f39,
+0x0f3e, 0x0f3f,
+0x0f82, 0x0f84,
+0x0f86, 0x0f87,
+0x0fc6, 0x0fc6,
+0x1037, 0x1037,
+0x1039, 0x103a,
+0x1087, 0x108d,
+0x108f, 0x108f,
+0x109a, 0x109b,
+0x17c9, 0x17d3,
+0x17dd, 0x17dd,
+0x1939, 0x193b,
+0x1a75, 0x1a7c,
+0x1a7f, 0x1a7f,
+0x1ab0, 0x1abd,
+0x1b34, 0x1b34,
+0x1b44, 0x1b44,
+0x1b6b, 0x1b73,
+0x1baa, 0x1bab,
+0x1c36, 0x1c37,
+0x1c78, 0x1c7d,
+0x1cd0, 0x1ce8,
+0x1ced, 0x1ced,
+0x1cf4, 0x1cf4,
+0x1cf8, 0x1cf9,
+0x1d2c, 0x1d6a,
+0x1dc4, 0x1dcf,
+0x1df5, 0x1df5,
+0x1dfd, 0x1dff,
+0x1fbd, 0x1fbd,
+0x1fbf, 0x1fc1,
+0x1fcd, 0x1fcf,
+0x1fdd, 0x1fdf,
+0x1fed, 0x1fef,
+0x1ffd, 0x1ffe,
+0x2cef, 0x2cf1,
+0x2e2f, 0x2e2f,
+0x302a, 0x302f,
+0x3099, 0x309c,
+0x30fc, 0x30fc,
+0xa66f, 0xa66f,
+0xa67c, 0xa67d,
+0xa67f, 0xa67f,
+0xa69c, 0xa69d,
+0xa6f0, 0xa6f1,
+0xa717, 0xa721,
+0xa788, 0xa788,
+0xa7f8, 0xa7f9,
+0xa8c4, 0xa8c4,
+0xa8e0, 0xa8f1,
+0xa92b, 0xa92e,
+0xa953, 0xa953,
+0xa9b3, 0xa9b3,
+0xa9c0, 0xa9c0,
+0xa9e5, 0xa9e5,
+0xaa7b, 0xaa7d,
+0xaabf, 0xaac2,
+0xaaf6, 0xaaf6,
+0xab5b, 0xab5f,
+0xabec, 0xabed,
+0xfb1e, 0xfb1e,
+0xfe20, 0xfe2f,
+0xff3e, 0xff3e,
+0xff40, 0xff40,
+0xff70, 0xff70,
+0xff9e, 0xff9f,
+0xffe3, 0xffe3,
+0x102e0, 0x102e0,
+0x10ae5, 0x10ae6,
+0x110b9, 0x110ba,
+0x11133, 0x11134,
+0x11173, 0x11173,
+0x111c0, 0x111c0,
+0x111ca, 0x111cc,
+0x11235, 0x11236,
+0x112e9, 0x112ea,
+0x1133c, 0x1133c,
+0x1134d, 0x1134d,
+0x11366, 0x1136c,
+0x11370, 0x11374,
+0x114c2, 0x114c3,
+0x115bf, 0x115c0,
+0x1163f, 0x1163f,
+0x116b6, 0x116b7,
+0x1172b, 0x1172b,
+0x16af0, 0x16af4,
+0x16f8f, 0x16f9f,
+0x1d167, 0x1d169,
+0x1d16d, 0x1d172,
+0x1d17b, 0x1d182,
+0x1d185, 0x1d18b,
+0x1d1aa, 0x1d1ad,
+0x1e8d0, 0x1e8d6,
+}; /* END of CR_Diacritic */
+
+/* PROPERTY: 'Duployan': Script */
+static const OnigCodePoint
+CR_Duployan[] = { 5,
+0x1bc00, 0x1bc6a,
+0x1bc70, 0x1bc7c,
+0x1bc80, 0x1bc88,
+0x1bc90, 0x1bc99,
+0x1bc9c, 0x1bc9f,
+}; /* END of CR_Duployan */
+
+/* PROPERTY: 'Egyptian_Hieroglyphs': Script */
+static const OnigCodePoint
+CR_Egyptian_Hieroglyphs[] = { 1,
+0x13000, 0x1342e,
+}; /* END of CR_Egyptian_Hieroglyphs */
+
+/* PROPERTY: 'Elbasan': Script */
+static const OnigCodePoint
+CR_Elbasan[] = { 1,
+0x10500, 0x10527,
+}; /* END of CR_Elbasan */
+
+/* PROPERTY: 'Ethiopic': Script */
+static const OnigCodePoint
+CR_Ethiopic[] = { 32,
+0x1200, 0x1248,
+0x124a, 0x124d,
+0x1250, 0x1256,
+0x1258, 0x1258,
+0x125a, 0x125d,
+0x1260, 0x1288,
+0x128a, 0x128d,
+0x1290, 0x12b0,
+0x12b2, 0x12b5,
+0x12b8, 0x12be,
+0x12c0, 0x12c0,
+0x12c2, 0x12c5,
+0x12c8, 0x12d6,
+0x12d8, 0x1310,
+0x1312, 0x1315,
+0x1318, 0x135a,
+0x135d, 0x137c,
+0x1380, 0x1399,
+0x2d80, 0x2d96,
+0x2da0, 0x2da6,
+0x2da8, 0x2dae,
+0x2db0, 0x2db6,
+0x2db8, 0x2dbe,
+0x2dc0, 0x2dc6,
+0x2dc8, 0x2dce,
+0x2dd0, 0x2dd6,
+0x2dd8, 0x2dde,
+0xab01, 0xab06,
+0xab09, 0xab0e,
+0xab11, 0xab16,
+0xab20, 0xab26,
+0xab28, 0xab2e,
+}; /* END of CR_Ethiopic */
+
+/* PROPERTY: 'Extender': Binary Property */
+static const OnigCodePoint
+CR_Extender[] = { 26,
+0x00b7, 0x00b7,
+0x02d0, 0x02d1,
+0x0640, 0x0640,
+0x07fa, 0x07fa,
+0x0e46, 0x0e46,
+0x0ec6, 0x0ec6,
+0x180a, 0x180a,
+0x1843, 0x1843,
+0x1aa7, 0x1aa7,
+0x1c36, 0x1c36,
+0x1c7b, 0x1c7b,
+0x3005, 0x3005,
+0x3031, 0x3035,
+0x309d, 0x309e,
+0x30fc, 0x30fe,
+0xa015, 0xa015,
+0xa60c, 0xa60c,
+0xa9cf, 0xa9cf,
+0xa9e6, 0xa9e6,
+0xaa70, 0xaa70,
+0xaadd, 0xaadd,
+0xaaf3, 0xaaf4,
+0xff70, 0xff70,
+0x1135d, 0x1135d,
+0x115c6, 0x115c8,
+0x16b42, 0x16b43,
+}; /* END of CR_Extender */
+
+/* PROPERTY: 'Georgian': Script */
+static const OnigCodePoint
+CR_Georgian[] = { 8,
+0x10a0, 0x10c5,
+0x10c7, 0x10c7,
+0x10cd, 0x10cd,
+0x10d0, 0x10fa,
+0x10fc, 0x10ff,
+0x2d00, 0x2d25,
+0x2d27, 0x2d27,
+0x2d2d, 0x2d2d,
+}; /* END of CR_Georgian */
+
+/* PROPERTY: 'Glagolitic': Script */
+static const OnigCodePoint
+CR_Glagolitic[] = { 2,
+0x2c00, 0x2c2e,
+0x2c30, 0x2c5e,
+}; /* END of CR_Glagolitic */
+
+/* PROPERTY: 'Gothic': Script */
+static const OnigCodePoint
+CR_Gothic[] = { 1,
+0x10330, 0x1034a,
+}; /* END of CR_Gothic */
+
+/* PROPERTY: 'Grantha': Script */
+static const OnigCodePoint
+CR_Grantha[] = { 15,
+0x11300, 0x11303,
+0x11305, 0x1130c,
+0x1130f, 0x11310,
+0x11313, 0x11328,
+0x1132a, 0x11330,
+0x11332, 0x11333,
+0x11335, 0x11339,
+0x1133c, 0x11344,
+0x11347, 0x11348,
+0x1134b, 0x1134d,
+0x11350, 0x11350,
+0x11357, 0x11357,
+0x1135d, 0x11363,
+0x11366, 0x1136c,
+0x11370, 0x11374,
+}; /* END of CR_Grantha */
+
+/* PROPERTY: 'Grapheme_Base': Derived Property */
+static const OnigCodePoint
+CR_Grapheme_Base[] = { 743,
+0x0020, 0x007e,
+0x00a0, 0x00ac,
+0x00ae, 0x02ff,
+0x0370, 0x0377,
+0x037a, 0x037f,
+0x0384, 0x038a,
+0x038c, 0x038c,
+0x038e, 0x03a1,
+0x03a3, 0x0482,
+0x048a, 0x052f,
+0x0531, 0x0556,
+0x0559, 0x055f,
+0x0561, 0x0587,
+0x0589, 0x058a,
+0x058d, 0x058f,
+0x05be, 0x05be,
+0x05c0, 0x05c0,
+0x05c3, 0x05c3,
+0x05c6, 0x05c6,
+0x05d0, 0x05ea,
+0x05f0, 0x05f4,
+0x0606, 0x060f,
+0x061b, 0x061b,
+0x061e, 0x064a,
+0x0660, 0x066f,
+0x0671, 0x06d5,
+0x06de, 0x06de,
+0x06e5, 0x06e6,
+0x06e9, 0x06e9,
+0x06ee, 0x070d,
+0x0710, 0x0710,
+0x0712, 0x072f,
+0x074d, 0x07a5,
+0x07b1, 0x07b1,
+0x07c0, 0x07ea,
+0x07f4, 0x07fa,
+0x0800, 0x0815,
+0x081a, 0x081a,
+0x0824, 0x0824,
+0x0828, 0x0828,
+0x0830, 0x083e,
+0x0840, 0x0858,
+0x085e, 0x085e,
+0x08a0, 0x08b4,
+0x0903, 0x0939,
+0x093b, 0x093b,
+0x093d, 0x0940,
+0x0949, 0x094c,
+0x094e, 0x0950,
+0x0958, 0x0961,
+0x0964, 0x0980,
+0x0982, 0x0983,
+0x0985, 0x098c,
+0x098f, 0x0990,
+0x0993, 0x09a8,
+0x09aa, 0x09b0,
+0x09b2, 0x09b2,
+0x09b6, 0x09b9,
+0x09bd, 0x09bd,
+0x09bf, 0x09c0,
+0x09c7, 0x09c8,
+0x09cb, 0x09cc,
+0x09ce, 0x09ce,
+0x09dc, 0x09dd,
+0x09df, 0x09e1,
+0x09e6, 0x09fb,
+0x0a03, 0x0a03,
+0x0a05, 0x0a0a,
+0x0a0f, 0x0a10,
+0x0a13, 0x0a28,
+0x0a2a, 0x0a30,
+0x0a32, 0x0a33,
+0x0a35, 0x0a36,
+0x0a38, 0x0a39,
+0x0a3e, 0x0a40,
+0x0a59, 0x0a5c,
+0x0a5e, 0x0a5e,
+0x0a66, 0x0a6f,
+0x0a72, 0x0a74,
+0x0a83, 0x0a83,
+0x0a85, 0x0a8d,
+0x0a8f, 0x0a91,
+0x0a93, 0x0aa8,
+0x0aaa, 0x0ab0,
+0x0ab2, 0x0ab3,
+0x0ab5, 0x0ab9,
+0x0abd, 0x0ac0,
+0x0ac9, 0x0ac9,
+0x0acb, 0x0acc,
+0x0ad0, 0x0ad0,
+0x0ae0, 0x0ae1,
+0x0ae6, 0x0af1,
+0x0af9, 0x0af9,
+0x0b02, 0x0b03,
+0x0b05, 0x0b0c,
+0x0b0f, 0x0b10,
+0x0b13, 0x0b28,
+0x0b2a, 0x0b30,
+0x0b32, 0x0b33,
+0x0b35, 0x0b39,
+0x0b3d, 0x0b3d,
+0x0b40, 0x0b40,
+0x0b47, 0x0b48,
+0x0b4b, 0x0b4c,
+0x0b5c, 0x0b5d,
+0x0b5f, 0x0b61,
+0x0b66, 0x0b77,
+0x0b83, 0x0b83,
+0x0b85, 0x0b8a,
+0x0b8e, 0x0b90,
+0x0b92, 0x0b95,
+0x0b99, 0x0b9a,
+0x0b9c, 0x0b9c,
+0x0b9e, 0x0b9f,
+0x0ba3, 0x0ba4,
+0x0ba8, 0x0baa,
+0x0bae, 0x0bb9,
+0x0bbf, 0x0bbf,
+0x0bc1, 0x0bc2,
+0x0bc6, 0x0bc8,
+0x0bca, 0x0bcc,
+0x0bd0, 0x0bd0,
+0x0be6, 0x0bfa,
+0x0c01, 0x0c03,
+0x0c05, 0x0c0c,
+0x0c0e, 0x0c10,
+0x0c12, 0x0c28,
+0x0c2a, 0x0c39,
+0x0c3d, 0x0c3d,
+0x0c41, 0x0c44,
+0x0c58, 0x0c5a,
+0x0c60, 0x0c61,
+0x0c66, 0x0c6f,
+0x0c78, 0x0c7f,
+0x0c82, 0x0c83,
+0x0c85, 0x0c8c,
+0x0c8e, 0x0c90,
+0x0c92, 0x0ca8,
+0x0caa, 0x0cb3,
+0x0cb5, 0x0cb9,
+0x0cbd, 0x0cbe,
+0x0cc0, 0x0cc1,
+0x0cc3, 0x0cc4,
+0x0cc7, 0x0cc8,
+0x0cca, 0x0ccb,
+0x0cde, 0x0cde,
+0x0ce0, 0x0ce1,
+0x0ce6, 0x0cef,
+0x0cf1, 0x0cf2,
+0x0d02, 0x0d03,
+0x0d05, 0x0d0c,
+0x0d0e, 0x0d10,
+0x0d12, 0x0d3a,
+0x0d3d, 0x0d3d,
+0x0d3f, 0x0d40,
+0x0d46, 0x0d48,
+0x0d4a, 0x0d4c,
+0x0d4e, 0x0d4e,
+0x0d5f, 0x0d61,
+0x0d66, 0x0d75,
+0x0d79, 0x0d7f,
+0x0d82, 0x0d83,
+0x0d85, 0x0d96,
+0x0d9a, 0x0db1,
+0x0db3, 0x0dbb,
+0x0dbd, 0x0dbd,
+0x0dc0, 0x0dc6,
+0x0dd0, 0x0dd1,
+0x0dd8, 0x0dde,
+0x0de6, 0x0def,
+0x0df2, 0x0df4,
+0x0e01, 0x0e30,
+0x0e32, 0x0e33,
+0x0e3f, 0x0e46,
+0x0e4f, 0x0e5b,
+0x0e81, 0x0e82,
+0x0e84, 0x0e84,
+0x0e87, 0x0e88,
+0x0e8a, 0x0e8a,
+0x0e8d, 0x0e8d,
+0x0e94, 0x0e97,
+0x0e99, 0x0e9f,
+0x0ea1, 0x0ea3,
+0x0ea5, 0x0ea5,
+0x0ea7, 0x0ea7,
+0x0eaa, 0x0eab,
+0x0ead, 0x0eb0,
+0x0eb2, 0x0eb3,
+0x0ebd, 0x0ebd,
+0x0ec0, 0x0ec4,
+0x0ec6, 0x0ec6,
+0x0ed0, 0x0ed9,
+0x0edc, 0x0edf,
+0x0f00, 0x0f17,
+0x0f1a, 0x0f34,
+0x0f36, 0x0f36,
+0x0f38, 0x0f38,
+0x0f3a, 0x0f47,
+0x0f49, 0x0f6c,
+0x0f7f, 0x0f7f,
+0x0f85, 0x0f85,
+0x0f88, 0x0f8c,
+0x0fbe, 0x0fc5,
+0x0fc7, 0x0fcc,
+0x0fce, 0x0fda,
+0x1000, 0x102c,
+0x1031, 0x1031,
+0x1038, 0x1038,
+0x103b, 0x103c,
+0x103f, 0x1057,
+0x105a, 0x105d,
+0x1061, 0x1070,
+0x1075, 0x1081,
+0x1083, 0x1084,
+0x1087, 0x108c,
+0x108e, 0x109c,
+0x109e, 0x10c5,
+0x10c7, 0x10c7,
+0x10cd, 0x10cd,
+0x10d0, 0x1248,
+0x124a, 0x124d,
+0x1250, 0x1256,
+0x1258, 0x1258,
+0x125a, 0x125d,
+0x1260, 0x1288,
+0x128a, 0x128d,
+0x1290, 0x12b0,
+0x12b2, 0x12b5,
+0x12b8, 0x12be,
+0x12c0, 0x12c0,
+0x12c2, 0x12c5,
+0x12c8, 0x12d6,
+0x12d8, 0x1310,
+0x1312, 0x1315,
+0x1318, 0x135a,
+0x1360, 0x137c,
+0x1380, 0x1399,
+0x13a0, 0x13f5,
+0x13f8, 0x13fd,
+0x1400, 0x169c,
+0x16a0, 0x16f8,
+0x1700, 0x170c,
+0x170e, 0x1711,
+0x1720, 0x1731,
+0x1735, 0x1736,
+0x1740, 0x1751,
+0x1760, 0x176c,
+0x176e, 0x1770,
+0x1780, 0x17b3,
+0x17b6, 0x17b6,
+0x17be, 0x17c5,
+0x17c7, 0x17c8,
+0x17d4, 0x17dc,
+0x17e0, 0x17e9,
+0x17f0, 0x17f9,
+0x1800, 0x180a,
+0x1810, 0x1819,
+0x1820, 0x1877,
+0x1880, 0x18a8,
+0x18aa, 0x18aa,
+0x18b0, 0x18f5,
+0x1900, 0x191e,
+0x1923, 0x1926,
+0x1929, 0x192b,
+0x1930, 0x1931,
+0x1933, 0x1938,
+0x1940, 0x1940,
+0x1944, 0x196d,
+0x1970, 0x1974,
+0x1980, 0x19ab,
+0x19b0, 0x19c9,
+0x19d0, 0x19da,
+0x19de, 0x1a16,
+0x1a19, 0x1a1a,
+0x1a1e, 0x1a55,
+0x1a57, 0x1a57,
+0x1a61, 0x1a61,
+0x1a63, 0x1a64,
+0x1a6d, 0x1a72,
+0x1a80, 0x1a89,
+0x1a90, 0x1a99,
+0x1aa0, 0x1aad,
+0x1b04, 0x1b33,
+0x1b35, 0x1b35,
+0x1b3b, 0x1b3b,
+0x1b3d, 0x1b41,
+0x1b43, 0x1b4b,
+0x1b50, 0x1b6a,
+0x1b74, 0x1b7c,
+0x1b82, 0x1ba1,
+0x1ba6, 0x1ba7,
+0x1baa, 0x1baa,
+0x1bae, 0x1be5,
+0x1be7, 0x1be7,
+0x1bea, 0x1bec,
+0x1bee, 0x1bee,
+0x1bf2, 0x1bf3,
+0x1bfc, 0x1c2b,
+0x1c34, 0x1c35,
+0x1c3b, 0x1c49,
+0x1c4d, 0x1c7f,
+0x1cc0, 0x1cc7,
+0x1cd3, 0x1cd3,
+0x1ce1, 0x1ce1,
+0x1ce9, 0x1cec,
+0x1cee, 0x1cf3,
+0x1cf5, 0x1cf6,
+0x1d00, 0x1dbf,
+0x1e00, 0x1f15,
+0x1f18, 0x1f1d,
+0x1f20, 0x1f45,
+0x1f48, 0x1f4d,
+0x1f50, 0x1f57,
+0x1f59, 0x1f59,
+0x1f5b, 0x1f5b,
+0x1f5d, 0x1f5d,
+0x1f5f, 0x1f7d,
+0x1f80, 0x1fb4,
+0x1fb6, 0x1fc4,
+0x1fc6, 0x1fd3,
+0x1fd6, 0x1fdb,
+0x1fdd, 0x1fef,
+0x1ff2, 0x1ff4,
+0x1ff6, 0x1ffe,
+0x2000, 0x200a,
+0x2010, 0x2027,
+0x202f, 0x205f,
+0x2070, 0x2071,
+0x2074, 0x208e,
+0x2090, 0x209c,
+0x20a0, 0x20be,
+0x2100, 0x218b,
+0x2190, 0x23fa,
+0x2400, 0x2426,
+0x2440, 0x244a,
+0x2460, 0x2b73,
+0x2b76, 0x2b95,
+0x2b98, 0x2bb9,
+0x2bbd, 0x2bc8,
+0x2bca, 0x2bd1,
+0x2bec, 0x2bef,
+0x2c00, 0x2c2e,
+0x2c30, 0x2c5e,
+0x2c60, 0x2cee,
+0x2cf2, 0x2cf3,
+0x2cf9, 0x2d25,
+0x2d27, 0x2d27,
+0x2d2d, 0x2d2d,
+0x2d30, 0x2d67,
+0x2d6f, 0x2d70,
+0x2d80, 0x2d96,
+0x2da0, 0x2da6,
+0x2da8, 0x2dae,
+0x2db0, 0x2db6,
+0x2db8, 0x2dbe,
+0x2dc0, 0x2dc6,
+0x2dc8, 0x2dce,
+0x2dd0, 0x2dd6,
+0x2dd8, 0x2dde,
+0x2e00, 0x2e42,
+0x2e80, 0x2e99,
+0x2e9b, 0x2ef3,
+0x2f00, 0x2fd5,
+0x2ff0, 0x2ffb,
+0x3000, 0x3029,
+0x3030, 0x303f,
+0x3041, 0x3096,
+0x309b, 0x30ff,
+0x3105, 0x312d,
+0x3131, 0x318e,
+0x3190, 0x31ba,
+0x31c0, 0x31e3,
+0x31f0, 0x321e,
+0x3220, 0x32fe,
+0x3300, 0x4db5,
+0x4dc0, 0x9fd5,
+0xa000, 0xa48c,
+0xa490, 0xa4c6,
+0xa4d0, 0xa62b,
+0xa640, 0xa66e,
+0xa673, 0xa673,
+0xa67e, 0xa69d,
+0xa6a0, 0xa6ef,
+0xa6f2, 0xa6f7,
+0xa700, 0xa7ad,
+0xa7b0, 0xa7b7,
+0xa7f7, 0xa801,
+0xa803, 0xa805,
+0xa807, 0xa80a,
+0xa80c, 0xa824,
+0xa827, 0xa82b,
+0xa830, 0xa839,
+0xa840, 0xa877,
+0xa880, 0xa8c3,
+0xa8ce, 0xa8d9,
+0xa8f2, 0xa8fd,
+0xa900, 0xa925,
+0xa92e, 0xa946,
+0xa952, 0xa953,
+0xa95f, 0xa97c,
+0xa983, 0xa9b2,
+0xa9b4, 0xa9b5,
+0xa9ba, 0xa9bb,
+0xa9bd, 0xa9cd,
+0xa9cf, 0xa9d9,
+0xa9de, 0xa9e4,
+0xa9e6, 0xa9fe,
+0xaa00, 0xaa28,
+0xaa2f, 0xaa30,
+0xaa33, 0xaa34,
+0xaa40, 0xaa42,
+0xaa44, 0xaa4b,
+0xaa4d, 0xaa4d,
+0xaa50, 0xaa59,
+0xaa5c, 0xaa7b,
+0xaa7d, 0xaaaf,
+0xaab1, 0xaab1,
+0xaab5, 0xaab6,
+0xaab9, 0xaabd,
+0xaac0, 0xaac0,
+0xaac2, 0xaac2,
+0xaadb, 0xaaeb,
+0xaaee, 0xaaf5,
+0xab01, 0xab06,
+0xab09, 0xab0e,
+0xab11, 0xab16,
+0xab20, 0xab26,
+0xab28, 0xab2e,
+0xab30, 0xab65,
+0xab70, 0xabe4,
+0xabe6, 0xabe7,
+0xabe9, 0xabec,
+0xabf0, 0xabf9,
+0xac00, 0xd7a3,
+0xd7b0, 0xd7c6,
+0xd7cb, 0xd7fb,
+0xf900, 0xfa6d,
+0xfa70, 0xfad9,
+0xfb00, 0xfb06,
+0xfb13, 0xfb17,
+0xfb1d, 0xfb1d,
+0xfb1f, 0xfb36,
+0xfb38, 0xfb3c,
+0xfb3e, 0xfb3e,
+0xfb40, 0xfb41,
+0xfb43, 0xfb44,
+0xfb46, 0xfbc1,
+0xfbd3, 0xfd3f,
+0xfd50, 0xfd8f,
+0xfd92, 0xfdc7,
+0xfdf0, 0xfdfd,
+0xfe10, 0xfe19,
+0xfe30, 0xfe52,
+0xfe54, 0xfe66,
+0xfe68, 0xfe6b,
+0xfe70, 0xfe74,
+0xfe76, 0xfefc,
+0xff01, 0xff9d,
+0xffa0, 0xffbe,
+0xffc2, 0xffc7,
+0xffca, 0xffcf,
+0xffd2, 0xffd7,
+0xffda, 0xffdc,
+0xffe0, 0xffe6,
+0xffe8, 0xffee,
+0xfffc, 0xfffd,
+0x10000, 0x1000b,
+0x1000d, 0x10026,
+0x10028, 0x1003a,
+0x1003c, 0x1003d,
+0x1003f, 0x1004d,
+0x10050, 0x1005d,
+0x10080, 0x100fa,
+0x10100, 0x10102,
+0x10107, 0x10133,
+0x10137, 0x1018c,
+0x10190, 0x1019b,
+0x101a0, 0x101a0,
+0x101d0, 0x101fc,
+0x10280, 0x1029c,
+0x102a0, 0x102d0,
+0x102e1, 0x102fb,
+0x10300, 0x10323,
+0x10330, 0x1034a,
+0x10350, 0x10375,
+0x10380, 0x1039d,
+0x1039f, 0x103c3,
+0x103c8, 0x103d5,
+0x10400, 0x1049d,
+0x104a0, 0x104a9,
+0x10500, 0x10527,
+0x10530, 0x10563,
+0x1056f, 0x1056f,
+0x10600, 0x10736,
+0x10740, 0x10755,
+0x10760, 0x10767,
+0x10800, 0x10805,
+0x10808, 0x10808,
+0x1080a, 0x10835,
+0x10837, 0x10838,
+0x1083c, 0x1083c,
+0x1083f, 0x10855,
+0x10857, 0x1089e,
+0x108a7, 0x108af,
+0x108e0, 0x108f2,
+0x108f4, 0x108f5,
+0x108fb, 0x1091b,
+0x1091f, 0x10939,
+0x1093f, 0x1093f,
+0x10980, 0x109b7,
+0x109bc, 0x109cf,
+0x109d2, 0x10a00,
+0x10a10, 0x10a13,
+0x10a15, 0x10a17,
+0x10a19, 0x10a33,
+0x10a40, 0x10a47,
+0x10a50, 0x10a58,
+0x10a60, 0x10a9f,
+0x10ac0, 0x10ae4,
+0x10aeb, 0x10af6,
+0x10b00, 0x10b35,
+0x10b39, 0x10b55,
+0x10b58, 0x10b72,
+0x10b78, 0x10b91,
+0x10b99, 0x10b9c,
+0x10ba9, 0x10baf,
+0x10c00, 0x10c48,
+0x10c80, 0x10cb2,
+0x10cc0, 0x10cf2,
+0x10cfa, 0x10cff,
+0x10e60, 0x10e7e,
+0x11000, 0x11000,
+0x11002, 0x11037,
+0x11047, 0x1104d,
+0x11052, 0x1106f,
+0x11082, 0x110b2,
+0x110b7, 0x110b8,
+0x110bb, 0x110bc,
+0x110be, 0x110c1,
+0x110d0, 0x110e8,
+0x110f0, 0x110f9,
+0x11103, 0x11126,
+0x1112c, 0x1112c,
+0x11136, 0x11143,
+0x11150, 0x11172,
+0x11174, 0x11176,
+0x11182, 0x111b5,
+0x111bf, 0x111c9,
+0x111cd, 0x111cd,
+0x111d0, 0x111df,
+0x111e1, 0x111f4,
+0x11200, 0x11211,
+0x11213, 0x1122e,
+0x11232, 0x11233,
+0x11235, 0x11235,
+0x11238, 0x1123d,
+0x11280, 0x11286,
+0x11288, 0x11288,
+0x1128a, 0x1128d,
+0x1128f, 0x1129d,
+0x1129f, 0x112a9,
+0x112b0, 0x112de,
+0x112e0, 0x112e2,
+0x112f0, 0x112f9,
+0x11302, 0x11303,
+0x11305, 0x1130c,
+0x1130f, 0x11310,
+0x11313, 0x11328,
+0x1132a, 0x11330,
+0x11332, 0x11333,
+0x11335, 0x11339,
+0x1133d, 0x1133d,
+0x1133f, 0x1133f,
+0x11341, 0x11344,
+0x11347, 0x11348,
+0x1134b, 0x1134d,
+0x11350, 0x11350,
+0x1135d, 0x11363,
+0x11480, 0x114af,
+0x114b1, 0x114b2,
+0x114b9, 0x114b9,
+0x114bb, 0x114bc,
+0x114be, 0x114be,
+0x114c1, 0x114c1,
+0x114c4, 0x114c7,
+0x114d0, 0x114d9,
+0x11580, 0x115ae,
+0x115b0, 0x115b1,
+0x115b8, 0x115bb,
+0x115be, 0x115be,
+0x115c1, 0x115db,
+0x11600, 0x11632,
+0x1163b, 0x1163c,
+0x1163e, 0x1163e,
+0x11641, 0x11644,
+0x11650, 0x11659,
+0x11680, 0x116aa,
+0x116ac, 0x116ac,
+0x116ae, 0x116af,
+0x116b6, 0x116b6,
+0x116c0, 0x116c9,
+0x11700, 0x11719,
+0x11720, 0x11721,
+0x11726, 0x11726,
+0x11730, 0x1173f,
+0x118a0, 0x118f2,
+0x118ff, 0x118ff,
+0x11ac0, 0x11af8,
+0x12000, 0x12399,
+0x12400, 0x1246e,
+0x12470, 0x12474,
+0x12480, 0x12543,
+0x13000, 0x1342e,
+0x14400, 0x14646,
+0x16800, 0x16a38,
+0x16a40, 0x16a5e,
+0x16a60, 0x16a69,
+0x16a6e, 0x16a6f,
+0x16ad0, 0x16aed,
+0x16af5, 0x16af5,
+0x16b00, 0x16b2f,
+0x16b37, 0x16b45,
+0x16b50, 0x16b59,
+0x16b5b, 0x16b61,
+0x16b63, 0x16b77,
+0x16b7d, 0x16b8f,
+0x16f00, 0x16f44,
+0x16f50, 0x16f7e,
+0x16f93, 0x16f9f,
+0x1b000, 0x1b001,
+0x1bc00, 0x1bc6a,
+0x1bc70, 0x1bc7c,
+0x1bc80, 0x1bc88,
+0x1bc90, 0x1bc99,
+0x1bc9c, 0x1bc9c,
+0x1bc9f, 0x1bc9f,
+0x1d000, 0x1d0f5,
+0x1d100, 0x1d126,
+0x1d129, 0x1d164,
+0x1d166, 0x1d166,
+0x1d16a, 0x1d16d,
+0x1d183, 0x1d184,
+0x1d18c, 0x1d1a9,
+0x1d1ae, 0x1d1e8,
+0x1d200, 0x1d241,
+0x1d245, 0x1d245,
+0x1d300, 0x1d356,
+0x1d360, 0x1d371,
+0x1d400, 0x1d454,
+0x1d456, 0x1d49c,
+0x1d49e, 0x1d49f,
+0x1d4a2, 0x1d4a2,
+0x1d4a5, 0x1d4a6,
+0x1d4a9, 0x1d4ac,
+0x1d4ae, 0x1d4b9,
+0x1d4bb, 0x1d4bb,
+0x1d4bd, 0x1d4c3,
+0x1d4c5, 0x1d505,
+0x1d507, 0x1d50a,
+0x1d50d, 0x1d514,
+0x1d516, 0x1d51c,
+0x1d51e, 0x1d539,
+0x1d53b, 0x1d53e,
+0x1d540, 0x1d544,
+0x1d546, 0x1d546,
+0x1d54a, 0x1d550,
+0x1d552, 0x1d6a5,
+0x1d6a8, 0x1d7cb,
+0x1d7ce, 0x1d9ff,
+0x1da37, 0x1da3a,
+0x1da6d, 0x1da74,
+0x1da76, 0x1da83,
+0x1da85, 0x1da8b,
+0x1e800, 0x1e8c4,
+0x1e8c7, 0x1e8cf,
+0x1ee00, 0x1ee03,
+0x1ee05, 0x1ee1f,
+0x1ee21, 0x1ee22,
+0x1ee24, 0x1ee24,
+0x1ee27, 0x1ee27,
+0x1ee29, 0x1ee32,
+0x1ee34, 0x1ee37,
+0x1ee39, 0x1ee39,
+0x1ee3b, 0x1ee3b,
+0x1ee42, 0x1ee42,
+0x1ee47, 0x1ee47,
+0x1ee49, 0x1ee49,
+0x1ee4b, 0x1ee4b,
+0x1ee4d, 0x1ee4f,
+0x1ee51, 0x1ee52,
+0x1ee54, 0x1ee54,
+0x1ee57, 0x1ee57,
+0x1ee59, 0x1ee59,
+0x1ee5b, 0x1ee5b,
+0x1ee5d, 0x1ee5d,
+0x1ee5f, 0x1ee5f,
+0x1ee61, 0x1ee62,
+0x1ee64, 0x1ee64,
+0x1ee67, 0x1ee6a,
+0x1ee6c, 0x1ee72,
+0x1ee74, 0x1ee77,
+0x1ee79, 0x1ee7c,
+0x1ee7e, 0x1ee7e,
+0x1ee80, 0x1ee89,
+0x1ee8b, 0x1ee9b,
+0x1eea1, 0x1eea3,
+0x1eea5, 0x1eea9,
+0x1eeab, 0x1eebb,
+0x1eef0, 0x1eef1,
+0x1f000, 0x1f02b,
+0x1f030, 0x1f093,
+0x1f0a0, 0x1f0ae,
+0x1f0b1, 0x1f0bf,
+0x1f0c1, 0x1f0cf,
+0x1f0d1, 0x1f0f5,
+0x1f100, 0x1f10c,
+0x1f110, 0x1f12e,
+0x1f130, 0x1f16b,
+0x1f170, 0x1f19a,
+0x1f1e6, 0x1f202,
+0x1f210, 0x1f23a,
+0x1f240, 0x1f248,
+0x1f250, 0x1f251,
+0x1f300, 0x1f579,
+0x1f57b, 0x1f5a3,
+0x1f5a5, 0x1f6d0,
+0x1f6e0, 0x1f6ec,
+0x1f6f0, 0x1f6f3,
+0x1f700, 0x1f773,
+0x1f780, 0x1f7d4,
+0x1f800, 0x1f80b,
+0x1f810, 0x1f847,
+0x1f850, 0x1f859,
+0x1f860, 0x1f887,
+0x1f890, 0x1f8ad,
+0x1f910, 0x1f918,
+0x1f980, 0x1f984,
+0x1f9c0, 0x1f9c0,
+0x20000, 0x2a6d6,
+0x2a700, 0x2b734,
+0x2b740, 0x2b81d,
+0x2b820, 0x2cea1,
+0x2f800, 0x2fa1d,
+}; /* END of CR_Grapheme_Base */
+
+/* PROPERTY: 'Grapheme_Extend': Derived Property */
+static const OnigCodePoint
+CR_Grapheme_Extend[] = { 283,
+0x0300, 0x036f,
+0x0483, 0x0489,
+0x0591, 0x05bd,
+0x05bf, 0x05bf,
+0x05c1, 0x05c2,
+0x05c4, 0x05c5,
+0x05c7, 0x05c7,
+0x0610, 0x061a,
+0x064b, 0x065f,
+0x0670, 0x0670,
+0x06d6, 0x06dc,
+0x06df, 0x06e4,
+0x06e7, 0x06e8,
+0x06ea, 0x06ed,
+0x0711, 0x0711,
+0x0730, 0x074a,
+0x07a6, 0x07b0,
+0x07eb, 0x07f3,
+0x0816, 0x0819,
+0x081b, 0x0823,
+0x0825, 0x0827,
+0x0829, 0x082d,
+0x0859, 0x085b,
+0x08e3, 0x0902,
+0x093a, 0x093a,
+0x093c, 0x093c,
+0x0941, 0x0948,
+0x094d, 0x094d,
+0x0951, 0x0957,
+0x0962, 0x0963,
+0x0981, 0x0981,
+0x09bc, 0x09bc,
+0x09be, 0x09be,
+0x09c1, 0x09c4,
+0x09cd, 0x09cd,
+0x09d7, 0x09d7,
+0x09e2, 0x09e3,
+0x0a01, 0x0a02,
+0x0a3c, 0x0a3c,
+0x0a41, 0x0a42,
+0x0a47, 0x0a48,
+0x0a4b, 0x0a4d,
+0x0a51, 0x0a51,
+0x0a70, 0x0a71,
+0x0a75, 0x0a75,
+0x0a81, 0x0a82,
+0x0abc, 0x0abc,
+0x0ac1, 0x0ac5,
+0x0ac7, 0x0ac8,
+0x0acd, 0x0acd,
+0x0ae2, 0x0ae3,
+0x0b01, 0x0b01,
+0x0b3c, 0x0b3c,
+0x0b3e, 0x0b3f,
+0x0b41, 0x0b44,
+0x0b4d, 0x0b4d,
+0x0b56, 0x0b57,
+0x0b62, 0x0b63,
+0x0b82, 0x0b82,
+0x0bbe, 0x0bbe,
+0x0bc0, 0x0bc0,
+0x0bcd, 0x0bcd,
+0x0bd7, 0x0bd7,
+0x0c00, 0x0c00,
+0x0c3e, 0x0c40,
+0x0c46, 0x0c48,
+0x0c4a, 0x0c4d,
+0x0c55, 0x0c56,
+0x0c62, 0x0c63,
+0x0c81, 0x0c81,
+0x0cbc, 0x0cbc,
+0x0cbf, 0x0cbf,
+0x0cc2, 0x0cc2,
+0x0cc6, 0x0cc6,
+0x0ccc, 0x0ccd,
+0x0cd5, 0x0cd6,
+0x0ce2, 0x0ce3,
+0x0d01, 0x0d01,
+0x0d3e, 0x0d3e,
+0x0d41, 0x0d44,
+0x0d4d, 0x0d4d,
+0x0d57, 0x0d57,
+0x0d62, 0x0d63,
+0x0dca, 0x0dca,
+0x0dcf, 0x0dcf,
+0x0dd2, 0x0dd4,
+0x0dd6, 0x0dd6,
+0x0ddf, 0x0ddf,
+0x0e31, 0x0e31,
+0x0e34, 0x0e3a,
+0x0e47, 0x0e4e,
+0x0eb1, 0x0eb1,
+0x0eb4, 0x0eb9,
+0x0ebb, 0x0ebc,
+0x0ec8, 0x0ecd,
+0x0f18, 0x0f19,
+0x0f35, 0x0f35,
+0x0f37, 0x0f37,
+0x0f39, 0x0f39,
+0x0f71, 0x0f7e,
+0x0f80, 0x0f84,
+0x0f86, 0x0f87,
+0x0f8d, 0x0f97,
+0x0f99, 0x0fbc,
+0x0fc6, 0x0fc6,
+0x102d, 0x1030,
+0x1032, 0x1037,
+0x1039, 0x103a,
+0x103d, 0x103e,
+0x1058, 0x1059,
+0x105e, 0x1060,
+0x1071, 0x1074,
+0x1082, 0x1082,
+0x1085, 0x1086,
+0x108d, 0x108d,
+0x109d, 0x109d,
+0x135d, 0x135f,
+0x1712, 0x1714,
+0x1732, 0x1734,
+0x1752, 0x1753,
+0x1772, 0x1773,
+0x17b4, 0x17b5,
+0x17b7, 0x17bd,
+0x17c6, 0x17c6,
+0x17c9, 0x17d3,
+0x17dd, 0x17dd,
+0x180b, 0x180d,
+0x18a9, 0x18a9,
+0x1920, 0x1922,
+0x1927, 0x1928,
+0x1932, 0x1932,
+0x1939, 0x193b,
+0x1a17, 0x1a18,
+0x1a1b, 0x1a1b,
+0x1a56, 0x1a56,
+0x1a58, 0x1a5e,
+0x1a60, 0x1a60,
+0x1a62, 0x1a62,
+0x1a65, 0x1a6c,
+0x1a73, 0x1a7c,
+0x1a7f, 0x1a7f,
+0x1ab0, 0x1abe,
+0x1b00, 0x1b03,
+0x1b34, 0x1b34,
+0x1b36, 0x1b3a,
+0x1b3c, 0x1b3c,
+0x1b42, 0x1b42,
+0x1b6b, 0x1b73,
+0x1b80, 0x1b81,
+0x1ba2, 0x1ba5,
+0x1ba8, 0x1ba9,
+0x1bab, 0x1bad,
+0x1be6, 0x1be6,
+0x1be8, 0x1be9,
+0x1bed, 0x1bed,
+0x1bef, 0x1bf1,
+0x1c2c, 0x1c33,
+0x1c36, 0x1c37,
+0x1cd0, 0x1cd2,
+0x1cd4, 0x1ce0,
+0x1ce2, 0x1ce8,
+0x1ced, 0x1ced,
+0x1cf4, 0x1cf4,
+0x1cf8, 0x1cf9,
+0x1dc0, 0x1df5,
+0x1dfc, 0x1dff,
+0x200c, 0x200d,
+0x20d0, 0x20f0,
+0x2cef, 0x2cf1,
+0x2d7f, 0x2d7f,
+0x2de0, 0x2dff,
+0x302a, 0x302f,
+0x3099, 0x309a,
+0xa66f, 0xa672,
+0xa674, 0xa67d,
+0xa69e, 0xa69f,
+0xa6f0, 0xa6f1,
+0xa802, 0xa802,
+0xa806, 0xa806,
+0xa80b, 0xa80b,
+0xa825, 0xa826,
+0xa8c4, 0xa8c4,
+0xa8e0, 0xa8f1,
+0xa926, 0xa92d,
+0xa947, 0xa951,
+0xa980, 0xa982,
+0xa9b3, 0xa9b3,
+0xa9b6, 0xa9b9,
+0xa9bc, 0xa9bc,
+0xa9e5, 0xa9e5,
+0xaa29, 0xaa2e,
+0xaa31, 0xaa32,
+0xaa35, 0xaa36,
+0xaa43, 0xaa43,
+0xaa4c, 0xaa4c,
+0xaa7c, 0xaa7c,
+0xaab0, 0xaab0,
+0xaab2, 0xaab4,
+0xaab7, 0xaab8,
+0xaabe, 0xaabf,
+0xaac1, 0xaac1,
+0xaaec, 0xaaed,
+0xaaf6, 0xaaf6,
+0xabe5, 0xabe5,
+0xabe8, 0xabe8,
+0xabed, 0xabed,
+0xfb1e, 0xfb1e,
+0xfe00, 0xfe0f,
+0xfe20, 0xfe2f,
+0xff9e, 0xff9f,
+0x101fd, 0x101fd,
+0x102e0, 0x102e0,
+0x10376, 0x1037a,
+0x10a01, 0x10a03,
+0x10a05, 0x10a06,
+0x10a0c, 0x10a0f,
+0x10a38, 0x10a3a,
+0x10a3f, 0x10a3f,
+0x10ae5, 0x10ae6,
+0x11001, 0x11001,
+0x11038, 0x11046,
+0x1107f, 0x11081,
+0x110b3, 0x110b6,
+0x110b9, 0x110ba,
+0x11100, 0x11102,
+0x11127, 0x1112b,
+0x1112d, 0x11134,
+0x11173, 0x11173,
+0x11180, 0x11181,
+0x111b6, 0x111be,
+0x111ca, 0x111cc,
+0x1122f, 0x11231,
+0x11234, 0x11234,
+0x11236, 0x11237,
+0x112df, 0x112df,
+0x112e3, 0x112ea,
+0x11300, 0x11301,
+0x1133c, 0x1133c,
+0x1133e, 0x1133e,
+0x11340, 0x11340,
+0x11357, 0x11357,
+0x11366, 0x1136c,
+0x11370, 0x11374,
+0x114b0, 0x114b0,
+0x114b3, 0x114b8,
+0x114ba, 0x114ba,
+0x114bd, 0x114bd,
+0x114bf, 0x114c0,
+0x114c2, 0x114c3,
+0x115af, 0x115af,
+0x115b2, 0x115b5,
+0x115bc, 0x115bd,
+0x115bf, 0x115c0,
+0x115dc, 0x115dd,
+0x11633, 0x1163a,
+0x1163d, 0x1163d,
+0x1163f, 0x11640,
+0x116ab, 0x116ab,
+0x116ad, 0x116ad,
+0x116b0, 0x116b5,
+0x116b7, 0x116b7,
+0x1171d, 0x1171f,
+0x11722, 0x11725,
+0x11727, 0x1172b,
+0x16af0, 0x16af4,
+0x16b30, 0x16b36,
+0x16f8f, 0x16f92,
+0x1bc9d, 0x1bc9e,
+0x1d165, 0x1d165,
+0x1d167, 0x1d169,
+0x1d16e, 0x1d172,
+0x1d17b, 0x1d182,
+0x1d185, 0x1d18b,
+0x1d1aa, 0x1d1ad,
+0x1d242, 0x1d244,
+0x1da00, 0x1da36,
+0x1da3b, 0x1da6c,
+0x1da75, 0x1da75,
+0x1da84, 0x1da84,
+0x1da9b, 0x1da9f,
+0x1daa1, 0x1daaf,
+0x1e8d0, 0x1e8d6,
+0xe0100, 0xe01ef,
+}; /* END of CR_Grapheme_Extend */
+
+/* PROPERTY: 'Grapheme_Link': Derived Property */
+static const OnigCodePoint
+CR_Grapheme_Link[] = { 41,
+0x094d, 0x094d,
+0x09cd, 0x09cd,
+0x0a4d, 0x0a4d,
+0x0acd, 0x0acd,
+0x0b4d, 0x0b4d,
+0x0bcd, 0x0bcd,
+0x0c4d, 0x0c4d,
+0x0ccd, 0x0ccd,
+0x0d4d, 0x0d4d,
+0x0dca, 0x0dca,
+0x0e3a, 0x0e3a,
+0x0f84, 0x0f84,
+0x1039, 0x103a,
+0x1714, 0x1714,
+0x1734, 0x1734,
+0x17d2, 0x17d2,
+0x1a60, 0x1a60,
+0x1b44, 0x1b44,
+0x1baa, 0x1bab,
+0x1bf2, 0x1bf3,
+0x2d7f, 0x2d7f,
+0xa806, 0xa806,
+0xa8c4, 0xa8c4,
+0xa953, 0xa953,
+0xa9c0, 0xa9c0,
+0xaaf6, 0xaaf6,
+0xabed, 0xabed,
+0x10a3f, 0x10a3f,
+0x11046, 0x11046,
+0x1107f, 0x1107f,
+0x110b9, 0x110b9,
+0x11133, 0x11134,
+0x111c0, 0x111c0,
+0x11235, 0x11235,
+0x112ea, 0x112ea,
+0x1134d, 0x1134d,
+0x114c2, 0x114c2,
+0x115bf, 0x115bf,
+0x1163f, 0x1163f,
+0x116b6, 0x116b6,
+0x1172b, 0x1172b,
+}; /* END of CR_Grapheme_Link */
+
+/* PROPERTY: 'Greek': Script */
+static const OnigCodePoint
+CR_Greek[] = { 36,
+0x0370, 0x0373,
+0x0375, 0x0377,
+0x037a, 0x037d,
+0x037f, 0x037f,
+0x0384, 0x0384,
+0x0386, 0x0386,
+0x0388, 0x038a,
+0x038c, 0x038c,
+0x038e, 0x03a1,
+0x03a3, 0x03e1,
+0x03f0, 0x03ff,
+0x1d26, 0x1d2a,
+0x1d5d, 0x1d61,
+0x1d66, 0x1d6a,
+0x1dbf, 0x1dbf,
+0x1f00, 0x1f15,
+0x1f18, 0x1f1d,
+0x1f20, 0x1f45,
+0x1f48, 0x1f4d,
+0x1f50, 0x1f57,
+0x1f59, 0x1f59,
+0x1f5b, 0x1f5b,
+0x1f5d, 0x1f5d,
+0x1f5f, 0x1f7d,
+0x1f80, 0x1fb4,
+0x1fb6, 0x1fc4,
+0x1fc6, 0x1fd3,
+0x1fd6, 0x1fdb,
+0x1fdd, 0x1fef,
+0x1ff2, 0x1ff4,
+0x1ff6, 0x1ffe,
+0x2126, 0x2126,
+0xab65, 0xab65,
+0x10140, 0x1018c,
+0x101a0, 0x101a0,
+0x1d200, 0x1d245,
+}; /* END of CR_Greek */
+
+/* PROPERTY: 'Gujarati': Script */
+static const OnigCodePoint
+CR_Gujarati[] = { 14,
+0x0a81, 0x0a83,
+0x0a85, 0x0a8d,
+0x0a8f, 0x0a91,
+0x0a93, 0x0aa8,
+0x0aaa, 0x0ab0,
+0x0ab2, 0x0ab3,
+0x0ab5, 0x0ab9,
+0x0abc, 0x0ac5,
+0x0ac7, 0x0ac9,
+0x0acb, 0x0acd,
+0x0ad0, 0x0ad0,
+0x0ae0, 0x0ae3,
+0x0ae6, 0x0af1,
+0x0af9, 0x0af9,
+}; /* END of CR_Gujarati */
+
+/* PROPERTY: 'Gurmukhi': Script */
+static const OnigCodePoint
+CR_Gurmukhi[] = { 16,
+0x0a01, 0x0a03,
+0x0a05, 0x0a0a,
+0x0a0f, 0x0a10,
+0x0a13, 0x0a28,
+0x0a2a, 0x0a30,
+0x0a32, 0x0a33,
+0x0a35, 0x0a36,
+0x0a38, 0x0a39,
+0x0a3c, 0x0a3c,
+0x0a3e, 0x0a42,
+0x0a47, 0x0a48,
+0x0a4b, 0x0a4d,
+0x0a51, 0x0a51,
+0x0a59, 0x0a5c,
+0x0a5e, 0x0a5e,
+0x0a66, 0x0a75,
+}; /* END of CR_Gurmukhi */
+
+/* PROPERTY: 'Han': Script */
+static const OnigCodePoint
+CR_Han[] = { 16,
+0x2e80, 0x2e99,
+0x2e9b, 0x2ef3,
+0x2f00, 0x2fd5,
+0x3005, 0x3005,
+0x3007, 0x3007,
+0x3021, 0x3029,
+0x3038, 0x303b,
+0x3400, 0x4db5,
+0x4e00, 0x9fd5,
+0xf900, 0xfa6d,
+0xfa70, 0xfad9,
+0x20000, 0x2a6d6,
+0x2a700, 0x2b734,
+0x2b740, 0x2b81d,
+0x2b820, 0x2cea1,
+0x2f800, 0x2fa1d,
+}; /* END of CR_Han */
+
+/* PROPERTY: 'Hangul': Script */
+static const OnigCodePoint
+CR_Hangul[] = { 14,
+0x1100, 0x11ff,
+0x302e, 0x302f,
+0x3131, 0x318e,
+0x3200, 0x321e,
+0x3260, 0x327e,
+0xa960, 0xa97c,
+0xac00, 0xd7a3,
+0xd7b0, 0xd7c6,
+0xd7cb, 0xd7fb,
+0xffa0, 0xffbe,
+0xffc2, 0xffc7,
+0xffca, 0xffcf,
+0xffd2, 0xffd7,
+0xffda, 0xffdc,
+}; /* END of CR_Hangul */
+
+/* PROPERTY: 'Hanunoo': Script */
+static const OnigCodePoint
+CR_Hanunoo[] = { 1,
+0x1720, 0x1734,
+}; /* END of CR_Hanunoo */
+
+/* PROPERTY: 'Hatran': Script */
+static const OnigCodePoint
+CR_Hatran[] = { 3,
+0x108e0, 0x108f2,
+0x108f4, 0x108f5,
+0x108fb, 0x108ff,
+}; /* END of CR_Hatran */
+
+/* PROPERTY: 'Hebrew': Script */
+static const OnigCodePoint
+CR_Hebrew[] = { 9,
+0x0591, 0x05c7,
+0x05d0, 0x05ea,
+0x05f0, 0x05f4,
+0xfb1d, 0xfb36,
+0xfb38, 0xfb3c,
+0xfb3e, 0xfb3e,
+0xfb40, 0xfb41,
+0xfb43, 0xfb44,
+0xfb46, 0xfb4f,
+}; /* END of CR_Hebrew */
+
+/* PROPERTY: 'Hex_Digit': Binary Property */
+static const OnigCodePoint
+CR_Hex_Digit[] = { 6,
+0x0030, 0x0039,
+0x0041, 0x0046,
+0x0061, 0x0066,
+0xff10, 0xff19,
+0xff21, 0xff26,
+0xff41, 0xff46,
+}; /* END of CR_Hex_Digit */
+
+/* PROPERTY: 'Hiragana': Script */
+static const OnigCodePoint
+CR_Hiragana[] = { 4,
+0x3041, 0x3096,
+0x309d, 0x309f,
+0x1b001, 0x1b001,
+0x1f200, 0x1f200,
+}; /* END of CR_Hiragana */
+
+/* PROPERTY: 'Hyphen': Binary Property */
+static const OnigCodePoint
+CR_Hyphen[] = { 10,
+0x002d, 0x002d,
+0x00ad, 0x00ad,
+0x058a, 0x058a,
+0x1806, 0x1806,
+0x2010, 0x2011,
+0x2e17, 0x2e17,
+0x30fb, 0x30fb,
+0xfe63, 0xfe63,
+0xff0d, 0xff0d,
+0xff65, 0xff65,
+}; /* END of CR_Hyphen */
+
+/* PROPERTY: 'IDS_Binary_Operator': Binary Property */
+static const OnigCodePoint
+CR_IDS_Binary_Operator[] = { 2,
+0x2ff0, 0x2ff1,
+0x2ff4, 0x2ffb,
+}; /* END of CR_IDS_Binary_Operator */
+
+/* PROPERTY: 'IDS_Trinary_Operator': Binary Property */
+static const OnigCodePoint
+CR_IDS_Trinary_Operator[] = { 1,
+0x2ff2, 0x2ff3,
+}; /* END of CR_IDS_Trinary_Operator */
+
+/* PROPERTY: 'ID_Continue': Derived Property */
+static const OnigCodePoint
+CR_ID_Continue[] = { 651,
+0x0030, 0x0039,
+0x0041, 0x005a,
+0x005f, 0x005f,
+0x0061, 0x007a,
+0x00aa, 0x00aa,
+0x00b5, 0x00b5,
+0x00b7, 0x00b7,
+0x00ba, 0x00ba,
+0x00c0, 0x00d6,
+0x00d8, 0x00f6,
+0x00f8, 0x02c1,
+0x02c6, 0x02d1,
+0x02e0, 0x02e4,
+0x02ec, 0x02ec,
+0x02ee, 0x02ee,
+0x0300, 0x0374,
+0x0376, 0x0377,
+0x037a, 0x037d,
+0x037f, 0x037f,
+0x0386, 0x038a,
+0x038c, 0x038c,
+0x038e, 0x03a1,
+0x03a3, 0x03f5,
+0x03f7, 0x0481,
+0x0483, 0x0487,
+0x048a, 0x052f,
+0x0531, 0x0556,
+0x0559, 0x0559,
+0x0561, 0x0587,
+0x0591, 0x05bd,
+0x05bf, 0x05bf,
+0x05c1, 0x05c2,
+0x05c4, 0x05c5,
+0x05c7, 0x05c7,
+0x05d0, 0x05ea,
+0x05f0, 0x05f2,
+0x0610, 0x061a,
+0x0620, 0x0669,
+0x066e, 0x06d3,
+0x06d5, 0x06dc,
+0x06df, 0x06e8,
+0x06ea, 0x06fc,
+0x06ff, 0x06ff,
+0x0710, 0x074a,
+0x074d, 0x07b1,
+0x07c0, 0x07f5,
+0x07fa, 0x07fa,
+0x0800, 0x082d,
+0x0840, 0x085b,
+0x08a0, 0x08b4,
+0x08e3, 0x0963,
+0x0966, 0x096f,
+0x0971, 0x0983,
+0x0985, 0x098c,
+0x098f, 0x0990,
+0x0993, 0x09a8,
+0x09aa, 0x09b0,
+0x09b2, 0x09b2,
+0x09b6, 0x09b9,
+0x09bc, 0x09c4,
+0x09c7, 0x09c8,
+0x09cb, 0x09ce,
+0x09d7, 0x09d7,
+0x09dc, 0x09dd,
+0x09df, 0x09e3,
+0x09e6, 0x09f1,
+0x0a01, 0x0a03,
+0x0a05, 0x0a0a,
+0x0a0f, 0x0a10,
+0x0a13, 0x0a28,
+0x0a2a, 0x0a30,
+0x0a32, 0x0a33,
+0x0a35, 0x0a36,
+0x0a38, 0x0a39,
+0x0a3c, 0x0a3c,
+0x0a3e, 0x0a42,
+0x0a47, 0x0a48,
+0x0a4b, 0x0a4d,
+0x0a51, 0x0a51,
+0x0a59, 0x0a5c,
+0x0a5e, 0x0a5e,
+0x0a66, 0x0a75,
+0x0a81, 0x0a83,
+0x0a85, 0x0a8d,
+0x0a8f, 0x0a91,
+0x0a93, 0x0aa8,
+0x0aaa, 0x0ab0,
+0x0ab2, 0x0ab3,
+0x0ab5, 0x0ab9,
+0x0abc, 0x0ac5,
+0x0ac7, 0x0ac9,
+0x0acb, 0x0acd,
+0x0ad0, 0x0ad0,
+0x0ae0, 0x0ae3,
+0x0ae6, 0x0aef,
+0x0af9, 0x0af9,
+0x0b01, 0x0b03,
+0x0b05, 0x0b0c,
+0x0b0f, 0x0b10,
+0x0b13, 0x0b28,
+0x0b2a, 0x0b30,
+0x0b32, 0x0b33,
+0x0b35, 0x0b39,
+0x0b3c, 0x0b44,
+0x0b47, 0x0b48,
+0x0b4b, 0x0b4d,
+0x0b56, 0x0b57,
+0x0b5c, 0x0b5d,
+0x0b5f, 0x0b63,
+0x0b66, 0x0b6f,
+0x0b71, 0x0b71,
+0x0b82, 0x0b83,
+0x0b85, 0x0b8a,
+0x0b8e, 0x0b90,
+0x0b92, 0x0b95,
+0x0b99, 0x0b9a,
+0x0b9c, 0x0b9c,
+0x0b9e, 0x0b9f,
+0x0ba3, 0x0ba4,
+0x0ba8, 0x0baa,
+0x0bae, 0x0bb9,
+0x0bbe, 0x0bc2,
+0x0bc6, 0x0bc8,
+0x0bca, 0x0bcd,
+0x0bd0, 0x0bd0,
+0x0bd7, 0x0bd7,
+0x0be6, 0x0bef,
+0x0c00, 0x0c03,
+0x0c05, 0x0c0c,
+0x0c0e, 0x0c10,
+0x0c12, 0x0c28,
+0x0c2a, 0x0c39,
+0x0c3d, 0x0c44,
+0x0c46, 0x0c48,
+0x0c4a, 0x0c4d,
+0x0c55, 0x0c56,
+0x0c58, 0x0c5a,
+0x0c60, 0x0c63,
+0x0c66, 0x0c6f,
+0x0c81, 0x0c83,
+0x0c85, 0x0c8c,
+0x0c8e, 0x0c90,
+0x0c92, 0x0ca8,
+0x0caa, 0x0cb3,
+0x0cb5, 0x0cb9,
+0x0cbc, 0x0cc4,
+0x0cc6, 0x0cc8,
+0x0cca, 0x0ccd,
+0x0cd5, 0x0cd6,
+0x0cde, 0x0cde,
+0x0ce0, 0x0ce3,
+0x0ce6, 0x0cef,
+0x0cf1, 0x0cf2,
+0x0d01, 0x0d03,
+0x0d05, 0x0d0c,
+0x0d0e, 0x0d10,
+0x0d12, 0x0d3a,
+0x0d3d, 0x0d44,
+0x0d46, 0x0d48,
+0x0d4a, 0x0d4e,
+0x0d57, 0x0d57,
+0x0d5f, 0x0d63,
+0x0d66, 0x0d6f,
+0x0d7a, 0x0d7f,
+0x0d82, 0x0d83,
+0x0d85, 0x0d96,
+0x0d9a, 0x0db1,
+0x0db3, 0x0dbb,
+0x0dbd, 0x0dbd,
+0x0dc0, 0x0dc6,
+0x0dca, 0x0dca,
+0x0dcf, 0x0dd4,
+0x0dd6, 0x0dd6,
+0x0dd8, 0x0ddf,
+0x0de6, 0x0def,
+0x0df2, 0x0df3,
+0x0e01, 0x0e3a,
+0x0e40, 0x0e4e,
+0x0e50, 0x0e59,
+0x0e81, 0x0e82,
+0x0e84, 0x0e84,
+0x0e87, 0x0e88,
+0x0e8a, 0x0e8a,
+0x0e8d, 0x0e8d,
+0x0e94, 0x0e97,
+0x0e99, 0x0e9f,
+0x0ea1, 0x0ea3,
+0x0ea5, 0x0ea5,
+0x0ea7, 0x0ea7,
+0x0eaa, 0x0eab,
+0x0ead, 0x0eb9,
+0x0ebb, 0x0ebd,
+0x0ec0, 0x0ec4,
+0x0ec6, 0x0ec6,
+0x0ec8, 0x0ecd,
+0x0ed0, 0x0ed9,
+0x0edc, 0x0edf,
+0x0f00, 0x0f00,
+0x0f18, 0x0f19,
+0x0f20, 0x0f29,
+0x0f35, 0x0f35,
+0x0f37, 0x0f37,
+0x0f39, 0x0f39,
+0x0f3e, 0x0f47,
+0x0f49, 0x0f6c,
+0x0f71, 0x0f84,
+0x0f86, 0x0f97,
+0x0f99, 0x0fbc,
+0x0fc6, 0x0fc6,
+0x1000, 0x1049,
+0x1050, 0x109d,
+0x10a0, 0x10c5,
+0x10c7, 0x10c7,
+0x10cd, 0x10cd,
+0x10d0, 0x10fa,
+0x10fc, 0x1248,
+0x124a, 0x124d,
+0x1250, 0x1256,
+0x1258, 0x1258,
+0x125a, 0x125d,
+0x1260, 0x1288,
+0x128a, 0x128d,
+0x1290, 0x12b0,
+0x12b2, 0x12b5,
+0x12b8, 0x12be,
+0x12c0, 0x12c0,
+0x12c2, 0x12c5,
+0x12c8, 0x12d6,
+0x12d8, 0x1310,
+0x1312, 0x1315,
+0x1318, 0x135a,
+0x135d, 0x135f,
+0x1369, 0x1371,
+0x1380, 0x138f,
+0x13a0, 0x13f5,
+0x13f8, 0x13fd,
+0x1401, 0x166c,
+0x166f, 0x167f,
+0x1681, 0x169a,
+0x16a0, 0x16ea,
+0x16ee, 0x16f8,
+0x1700, 0x170c,
+0x170e, 0x1714,
+0x1720, 0x1734,
+0x1740, 0x1753,
+0x1760, 0x176c,
+0x176e, 0x1770,
+0x1772, 0x1773,
+0x1780, 0x17d3,
+0x17d7, 0x17d7,
+0x17dc, 0x17dd,
+0x17e0, 0x17e9,
+0x180b, 0x180d,
+0x1810, 0x1819,
+0x1820, 0x1877,
+0x1880, 0x18aa,
+0x18b0, 0x18f5,
+0x1900, 0x191e,
+0x1920, 0x192b,
+0x1930, 0x193b,
+0x1946, 0x196d,
+0x1970, 0x1974,
+0x1980, 0x19ab,
+0x19b0, 0x19c9,
+0x19d0, 0x19da,
+0x1a00, 0x1a1b,
+0x1a20, 0x1a5e,
+0x1a60, 0x1a7c,
+0x1a7f, 0x1a89,
+0x1a90, 0x1a99,
+0x1aa7, 0x1aa7,
+0x1ab0, 0x1abd,
+0x1b00, 0x1b4b,
+0x1b50, 0x1b59,
+0x1b6b, 0x1b73,
+0x1b80, 0x1bf3,
+0x1c00, 0x1c37,
+0x1c40, 0x1c49,
+0x1c4d, 0x1c7d,
+0x1cd0, 0x1cd2,
+0x1cd4, 0x1cf6,
+0x1cf8, 0x1cf9,
+0x1d00, 0x1df5,
+0x1dfc, 0x1f15,
+0x1f18, 0x1f1d,
+0x1f20, 0x1f45,
+0x1f48, 0x1f4d,
+0x1f50, 0x1f57,
+0x1f59, 0x1f59,
+0x1f5b, 0x1f5b,
+0x1f5d, 0x1f5d,
+0x1f5f, 0x1f7d,
+0x1f80, 0x1fb4,
+0x1fb6, 0x1fbc,
+0x1fbe, 0x1fbe,
+0x1fc2, 0x1fc4,
+0x1fc6, 0x1fcc,
+0x1fd0, 0x1fd3,
+0x1fd6, 0x1fdb,
+0x1fe0, 0x1fec,
+0x1ff2, 0x1ff4,
+0x1ff6, 0x1ffc,
+0x203f, 0x2040,
+0x2054, 0x2054,
+0x2071, 0x2071,
+0x207f, 0x207f,
+0x2090, 0x209c,
+0x20d0, 0x20dc,
+0x20e1, 0x20e1,
+0x20e5, 0x20f0,
+0x2102, 0x2102,
+0x2107, 0x2107,
+0x210a, 0x2113,
+0x2115, 0x2115,
+0x2118, 0x211d,
+0x2124, 0x2124,
+0x2126, 0x2126,
+0x2128, 0x2128,
+0x212a, 0x2139,
+0x213c, 0x213f,
+0x2145, 0x2149,
+0x214e, 0x214e,
+0x2160, 0x2188,
+0x2c00, 0x2c2e,
+0x2c30, 0x2c5e,
+0x2c60, 0x2ce4,
+0x2ceb, 0x2cf3,
+0x2d00, 0x2d25,
+0x2d27, 0x2d27,
+0x2d2d, 0x2d2d,
+0x2d30, 0x2d67,
+0x2d6f, 0x2d6f,
+0x2d7f, 0x2d96,
+0x2da0, 0x2da6,
+0x2da8, 0x2dae,
+0x2db0, 0x2db6,
+0x2db8, 0x2dbe,
+0x2dc0, 0x2dc6,
+0x2dc8, 0x2dce,
+0x2dd0, 0x2dd6,
+0x2dd8, 0x2dde,
+0x2de0, 0x2dff,
+0x3005, 0x3007,
+0x3021, 0x302f,
+0x3031, 0x3035,
+0x3038, 0x303c,
+0x3041, 0x3096,
+0x3099, 0x309f,
+0x30a1, 0x30fa,
+0x30fc, 0x30ff,
+0x3105, 0x312d,
+0x3131, 0x318e,
+0x31a0, 0x31ba,
+0x31f0, 0x31ff,
+0x3400, 0x4db5,
+0x4e00, 0x9fd5,
+0xa000, 0xa48c,
+0xa4d0, 0xa4fd,
+0xa500, 0xa60c,
+0xa610, 0xa62b,
+0xa640, 0xa66f,
+0xa674, 0xa67d,
+0xa67f, 0xa6f1,
+0xa717, 0xa71f,
+0xa722, 0xa788,
+0xa78b, 0xa7ad,
+0xa7b0, 0xa7b7,
+0xa7f7, 0xa827,
+0xa840, 0xa873,
+0xa880, 0xa8c4,
+0xa8d0, 0xa8d9,
+0xa8e0, 0xa8f7,
+0xa8fb, 0xa8fb,
+0xa8fd, 0xa8fd,
+0xa900, 0xa92d,
+0xa930, 0xa953,
+0xa960, 0xa97c,
+0xa980, 0xa9c0,
+0xa9cf, 0xa9d9,
+0xa9e0, 0xa9fe,
+0xaa00, 0xaa36,
+0xaa40, 0xaa4d,
+0xaa50, 0xaa59,
+0xaa60, 0xaa76,
+0xaa7a, 0xaac2,
+0xaadb, 0xaadd,
+0xaae0, 0xaaef,
+0xaaf2, 0xaaf6,
+0xab01, 0xab06,
+0xab09, 0xab0e,
+0xab11, 0xab16,
+0xab20, 0xab26,
+0xab28, 0xab2e,
+0xab30, 0xab5a,
+0xab5c, 0xab65,
+0xab70, 0xabea,
+0xabec, 0xabed,
+0xabf0, 0xabf9,
+0xac00, 0xd7a3,
+0xd7b0, 0xd7c6,
+0xd7cb, 0xd7fb,
+0xf900, 0xfa6d,
+0xfa70, 0xfad9,
+0xfb00, 0xfb06,
+0xfb13, 0xfb17,
+0xfb1d, 0xfb28,
+0xfb2a, 0xfb36,
+0xfb38, 0xfb3c,
+0xfb3e, 0xfb3e,
+0xfb40, 0xfb41,
+0xfb43, 0xfb44,
+0xfb46, 0xfbb1,
+0xfbd3, 0xfd3d,
+0xfd50, 0xfd8f,
+0xfd92, 0xfdc7,
+0xfdf0, 0xfdfb,
+0xfe00, 0xfe0f,
+0xfe20, 0xfe2f,
+0xfe33, 0xfe34,
+0xfe4d, 0xfe4f,
+0xfe70, 0xfe74,
+0xfe76, 0xfefc,
+0xff10, 0xff19,
+0xff21, 0xff3a,
+0xff3f, 0xff3f,
+0xff41, 0xff5a,
+0xff66, 0xffbe,
+0xffc2, 0xffc7,
+0xffca, 0xffcf,
+0xffd2, 0xffd7,
+0xffda, 0xffdc,
+0x10000, 0x1000b,
+0x1000d, 0x10026,
+0x10028, 0x1003a,
+0x1003c, 0x1003d,
+0x1003f, 0x1004d,
+0x10050, 0x1005d,
+0x10080, 0x100fa,
+0x10140, 0x10174,
+0x101fd, 0x101fd,
+0x10280, 0x1029c,
+0x102a0, 0x102d0,
+0x102e0, 0x102e0,
+0x10300, 0x1031f,
+0x10330, 0x1034a,
+0x10350, 0x1037a,
+0x10380, 0x1039d,
+0x103a0, 0x103c3,
+0x103c8, 0x103cf,
+0x103d1, 0x103d5,
+0x10400, 0x1049d,
+0x104a0, 0x104a9,
+0x10500, 0x10527,
+0x10530, 0x10563,
+0x10600, 0x10736,
+0x10740, 0x10755,
+0x10760, 0x10767,
+0x10800, 0x10805,
+0x10808, 0x10808,
+0x1080a, 0x10835,
+0x10837, 0x10838,
+0x1083c, 0x1083c,
+0x1083f, 0x10855,
+0x10860, 0x10876,
+0x10880, 0x1089e,
+0x108e0, 0x108f2,
+0x108f4, 0x108f5,
+0x10900, 0x10915,
+0x10920, 0x10939,
+0x10980, 0x109b7,
+0x109be, 0x109bf,
+0x10a00, 0x10a03,
+0x10a05, 0x10a06,
+0x10a0c, 0x10a13,
+0x10a15, 0x10a17,
+0x10a19, 0x10a33,
+0x10a38, 0x10a3a,
+0x10a3f, 0x10a3f,
+0x10a60, 0x10a7c,
+0x10a80, 0x10a9c,
+0x10ac0, 0x10ac7,
+0x10ac9, 0x10ae6,
+0x10b00, 0x10b35,
+0x10b40, 0x10b55,
+0x10b60, 0x10b72,
+0x10b80, 0x10b91,
+0x10c00, 0x10c48,
+0x10c80, 0x10cb2,
+0x10cc0, 0x10cf2,
+0x11000, 0x11046,
+0x11066, 0x1106f,
+0x1107f, 0x110ba,
+0x110d0, 0x110e8,
+0x110f0, 0x110f9,
+0x11100, 0x11134,
+0x11136, 0x1113f,
+0x11150, 0x11173,
+0x11176, 0x11176,
+0x11180, 0x111c4,
+0x111ca, 0x111cc,
+0x111d0, 0x111da,
+0x111dc, 0x111dc,
+0x11200, 0x11211,
+0x11213, 0x11237,
+0x11280, 0x11286,
+0x11288, 0x11288,
+0x1128a, 0x1128d,
+0x1128f, 0x1129d,
+0x1129f, 0x112a8,
+0x112b0, 0x112ea,
+0x112f0, 0x112f9,
+0x11300, 0x11303,
+0x11305, 0x1130c,
+0x1130f, 0x11310,
+0x11313, 0x11328,
+0x1132a, 0x11330,
+0x11332, 0x11333,
+0x11335, 0x11339,
+0x1133c, 0x11344,
+0x11347, 0x11348,
+0x1134b, 0x1134d,
+0x11350, 0x11350,
+0x11357, 0x11357,
+0x1135d, 0x11363,
+0x11366, 0x1136c,
+0x11370, 0x11374,
+0x11480, 0x114c5,
+0x114c7, 0x114c7,
+0x114d0, 0x114d9,
+0x11580, 0x115b5,
+0x115b8, 0x115c0,
+0x115d8, 0x115dd,
+0x11600, 0x11640,
+0x11644, 0x11644,
+0x11650, 0x11659,
+0x11680, 0x116b7,
+0x116c0, 0x116c9,
+0x11700, 0x11719,
+0x1171d, 0x1172b,
+0x11730, 0x11739,
+0x118a0, 0x118e9,
+0x118ff, 0x118ff,
+0x11ac0, 0x11af8,
+0x12000, 0x12399,
+0x12400, 0x1246e,
+0x12480, 0x12543,
+0x13000, 0x1342e,
+0x14400, 0x14646,
+0x16800, 0x16a38,
+0x16a40, 0x16a5e,
+0x16a60, 0x16a69,
+0x16ad0, 0x16aed,
+0x16af0, 0x16af4,
+0x16b00, 0x16b36,
+0x16b40, 0x16b43,
+0x16b50, 0x16b59,
+0x16b63, 0x16b77,
+0x16b7d, 0x16b8f,
+0x16f00, 0x16f44,
+0x16f50, 0x16f7e,
+0x16f8f, 0x16f9f,
+0x1b000, 0x1b001,
+0x1bc00, 0x1bc6a,
+0x1bc70, 0x1bc7c,
+0x1bc80, 0x1bc88,
+0x1bc90, 0x1bc99,
+0x1bc9d, 0x1bc9e,
+0x1d165, 0x1d169,
+0x1d16d, 0x1d172,
+0x1d17b, 0x1d182,
+0x1d185, 0x1d18b,
+0x1d1aa, 0x1d1ad,
+0x1d242, 0x1d244,
+0x1d400, 0x1d454,
+0x1d456, 0x1d49c,
+0x1d49e, 0x1d49f,
+0x1d4a2, 0x1d4a2,
+0x1d4a5, 0x1d4a6,
+0x1d4a9, 0x1d4ac,
+0x1d4ae, 0x1d4b9,
+0x1d4bb, 0x1d4bb,
+0x1d4bd, 0x1d4c3,
+0x1d4c5, 0x1d505,
+0x1d507, 0x1d50a,
+0x1d50d, 0x1d514,
+0x1d516, 0x1d51c,
+0x1d51e, 0x1d539,
+0x1d53b, 0x1d53e,
+0x1d540, 0x1d544,
+0x1d546, 0x1d546,
+0x1d54a, 0x1d550,
+0x1d552, 0x1d6a5,
+0x1d6a8, 0x1d6c0,
+0x1d6c2, 0x1d6da,
+0x1d6dc, 0x1d6fa,
+0x1d6fc, 0x1d714,
+0x1d716, 0x1d734,
+0x1d736, 0x1d74e,
+0x1d750, 0x1d76e,
+0x1d770, 0x1d788,
+0x1d78a, 0x1d7a8,
+0x1d7aa, 0x1d7c2,
+0x1d7c4, 0x1d7cb,
+0x1d7ce, 0x1d7ff,
+0x1da00, 0x1da36,
+0x1da3b, 0x1da6c,
+0x1da75, 0x1da75,
+0x1da84, 0x1da84,
+0x1da9b, 0x1da9f,
+0x1daa1, 0x1daaf,
+0x1e800, 0x1e8c4,
+0x1e8d0, 0x1e8d6,
+0x1ee00, 0x1ee03,
+0x1ee05, 0x1ee1f,
+0x1ee21, 0x1ee22,
+0x1ee24, 0x1ee24,
+0x1ee27, 0x1ee27,
+0x1ee29, 0x1ee32,
+0x1ee34, 0x1ee37,
+0x1ee39, 0x1ee39,
+0x1ee3b, 0x1ee3b,
+0x1ee42, 0x1ee42,
+0x1ee47, 0x1ee47,
+0x1ee49, 0x1ee49,
+0x1ee4b, 0x1ee4b,
+0x1ee4d, 0x1ee4f,
+0x1ee51, 0x1ee52,
+0x1ee54, 0x1ee54,
+0x1ee57, 0x1ee57,
+0x1ee59, 0x1ee59,
+0x1ee5b, 0x1ee5b,
+0x1ee5d, 0x1ee5d,
+0x1ee5f, 0x1ee5f,
+0x1ee61, 0x1ee62,
+0x1ee64, 0x1ee64,
+0x1ee67, 0x1ee6a,
+0x1ee6c, 0x1ee72,
+0x1ee74, 0x1ee77,
+0x1ee79, 0x1ee7c,
+0x1ee7e, 0x1ee7e,
+0x1ee80, 0x1ee89,
+0x1ee8b, 0x1ee9b,
+0x1eea1, 0x1eea3,
+0x1eea5, 0x1eea9,
+0x1eeab, 0x1eebb,
+0x20000, 0x2a6d6,
+0x2a700, 0x2b734,
+0x2b740, 0x2b81d,
+0x2b820, 0x2cea1,
+0x2f800, 0x2fa1d,
+0xe0100, 0xe01ef,
+}; /* END of CR_ID_Continue */
+
+/* PROPERTY: 'ID_Start': Derived Property */
+static const OnigCodePoint
+CR_ID_Start[] = { 555,
+0x0041, 0x005a,
+0x0061, 0x007a,
+0x00aa, 0x00aa,
+0x00b5, 0x00b5,
+0x00ba, 0x00ba,
+0x00c0, 0x00d6,
+0x00d8, 0x00f6,
+0x00f8, 0x02c1,
+0x02c6, 0x02d1,
+0x02e0, 0x02e4,
+0x02ec, 0x02ec,
+0x02ee, 0x02ee,
+0x0370, 0x0374,
+0x0376, 0x0377,
+0x037a, 0x037d,
+0x037f, 0x037f,
+0x0386, 0x0386,
+0x0388, 0x038a,
+0x038c, 0x038c,
+0x038e, 0x03a1,
+0x03a3, 0x03f5,
+0x03f7, 0x0481,
+0x048a, 0x052f,
+0x0531, 0x0556,
+0x0559, 0x0559,
+0x0561, 0x0587,
+0x05d0, 0x05ea,
+0x05f0, 0x05f2,
+0x0620, 0x064a,
+0x066e, 0x066f,
+0x0671, 0x06d3,
+0x06d5, 0x06d5,
+0x06e5, 0x06e6,
+0x06ee, 0x06ef,
+0x06fa, 0x06fc,
+0x06ff, 0x06ff,
+0x0710, 0x0710,
+0x0712, 0x072f,
+0x074d, 0x07a5,
+0x07b1, 0x07b1,
+0x07ca, 0x07ea,
+0x07f4, 0x07f5,
+0x07fa, 0x07fa,
+0x0800, 0x0815,
+0x081a, 0x081a,
+0x0824, 0x0824,
+0x0828, 0x0828,
+0x0840, 0x0858,
+0x08a0, 0x08b4,
+0x0904, 0x0939,
+0x093d, 0x093d,
+0x0950, 0x0950,
+0x0958, 0x0961,
+0x0971, 0x0980,
+0x0985, 0x098c,
+0x098f, 0x0990,
+0x0993, 0x09a8,
+0x09aa, 0x09b0,
+0x09b2, 0x09b2,
+0x09b6, 0x09b9,
+0x09bd, 0x09bd,
+0x09ce, 0x09ce,
+0x09dc, 0x09dd,
+0x09df, 0x09e1,
+0x09f0, 0x09f1,
+0x0a05, 0x0a0a,
+0x0a0f, 0x0a10,
+0x0a13, 0x0a28,
+0x0a2a, 0x0a30,
+0x0a32, 0x0a33,
+0x0a35, 0x0a36,
+0x0a38, 0x0a39,
+0x0a59, 0x0a5c,
+0x0a5e, 0x0a5e,
+0x0a72, 0x0a74,
+0x0a85, 0x0a8d,
+0x0a8f, 0x0a91,
+0x0a93, 0x0aa8,
+0x0aaa, 0x0ab0,
+0x0ab2, 0x0ab3,
+0x0ab5, 0x0ab9,
+0x0abd, 0x0abd,
+0x0ad0, 0x0ad0,
+0x0ae0, 0x0ae1,
+0x0af9, 0x0af9,
+0x0b05, 0x0b0c,
+0x0b0f, 0x0b10,
+0x0b13, 0x0b28,
+0x0b2a, 0x0b30,
+0x0b32, 0x0b33,
+0x0b35, 0x0b39,
+0x0b3d, 0x0b3d,
+0x0b5c, 0x0b5d,
+0x0b5f, 0x0b61,
+0x0b71, 0x0b71,
+0x0b83, 0x0b83,
+0x0b85, 0x0b8a,
+0x0b8e, 0x0b90,
+0x0b92, 0x0b95,
+0x0b99, 0x0b9a,
+0x0b9c, 0x0b9c,
+0x0b9e, 0x0b9f,
+0x0ba3, 0x0ba4,
+0x0ba8, 0x0baa,
+0x0bae, 0x0bb9,
+0x0bd0, 0x0bd0,
+0x0c05, 0x0c0c,
+0x0c0e, 0x0c10,
+0x0c12, 0x0c28,
+0x0c2a, 0x0c39,
+0x0c3d, 0x0c3d,
+0x0c58, 0x0c5a,
+0x0c60, 0x0c61,
+0x0c85, 0x0c8c,
+0x0c8e, 0x0c90,
+0x0c92, 0x0ca8,
+0x0caa, 0x0cb3,
+0x0cb5, 0x0cb9,
+0x0cbd, 0x0cbd,
+0x0cde, 0x0cde,
+0x0ce0, 0x0ce1,
+0x0cf1, 0x0cf2,
+0x0d05, 0x0d0c,
+0x0d0e, 0x0d10,
+0x0d12, 0x0d3a,
+0x0d3d, 0x0d3d,
+0x0d4e, 0x0d4e,
+0x0d5f, 0x0d61,
+0x0d7a, 0x0d7f,
+0x0d85, 0x0d96,
+0x0d9a, 0x0db1,
+0x0db3, 0x0dbb,
+0x0dbd, 0x0dbd,
+0x0dc0, 0x0dc6,
+0x0e01, 0x0e30,
+0x0e32, 0x0e33,
+0x0e40, 0x0e46,
+0x0e81, 0x0e82,
+0x0e84, 0x0e84,
+0x0e87, 0x0e88,
+0x0e8a, 0x0e8a,
+0x0e8d, 0x0e8d,
+0x0e94, 0x0e97,
+0x0e99, 0x0e9f,
+0x0ea1, 0x0ea3,
+0x0ea5, 0x0ea5,
+0x0ea7, 0x0ea7,
+0x0eaa, 0x0eab,
+0x0ead, 0x0eb0,
+0x0eb2, 0x0eb3,
+0x0ebd, 0x0ebd,
+0x0ec0, 0x0ec4,
+0x0ec6, 0x0ec6,
+0x0edc, 0x0edf,
+0x0f00, 0x0f00,
+0x0f40, 0x0f47,
+0x0f49, 0x0f6c,
+0x0f88, 0x0f8c,
+0x1000, 0x102a,
+0x103f, 0x103f,
+0x1050, 0x1055,
+0x105a, 0x105d,
+0x1061, 0x1061,
+0x1065, 0x1066,
+0x106e, 0x1070,
+0x1075, 0x1081,
+0x108e, 0x108e,
+0x10a0, 0x10c5,
+0x10c7, 0x10c7,
+0x10cd, 0x10cd,
+0x10d0, 0x10fa,
+0x10fc, 0x1248,
+0x124a, 0x124d,
+0x1250, 0x1256,
+0x1258, 0x1258,
+0x125a, 0x125d,
+0x1260, 0x1288,
+0x128a, 0x128d,
+0x1290, 0x12b0,
+0x12b2, 0x12b5,
+0x12b8, 0x12be,
+0x12c0, 0x12c0,
+0x12c2, 0x12c5,
+0x12c8, 0x12d6,
+0x12d8, 0x1310,
+0x1312, 0x1315,
+0x1318, 0x135a,
+0x1380, 0x138f,
+0x13a0, 0x13f5,
+0x13f8, 0x13fd,
+0x1401, 0x166c,
+0x166f, 0x167f,
+0x1681, 0x169a,
+0x16a0, 0x16ea,
+0x16ee, 0x16f8,
+0x1700, 0x170c,
+0x170e, 0x1711,
+0x1720, 0x1731,
+0x1740, 0x1751,
+0x1760, 0x176c,
+0x176e, 0x1770,
+0x1780, 0x17b3,
+0x17d7, 0x17d7,
+0x17dc, 0x17dc,
+0x1820, 0x1877,
+0x1880, 0x18a8,
+0x18aa, 0x18aa,
+0x18b0, 0x18f5,
+0x1900, 0x191e,
+0x1950, 0x196d,
+0x1970, 0x1974,
+0x1980, 0x19ab,
+0x19b0, 0x19c9,
+0x1a00, 0x1a16,
+0x1a20, 0x1a54,
+0x1aa7, 0x1aa7,
+0x1b05, 0x1b33,
+0x1b45, 0x1b4b,
+0x1b83, 0x1ba0,
+0x1bae, 0x1baf,
+0x1bba, 0x1be5,
+0x1c00, 0x1c23,
+0x1c4d, 0x1c4f,
+0x1c5a, 0x1c7d,
+0x1ce9, 0x1cec,
+0x1cee, 0x1cf1,
+0x1cf5, 0x1cf6,
+0x1d00, 0x1dbf,
+0x1e00, 0x1f15,
+0x1f18, 0x1f1d,
+0x1f20, 0x1f45,
+0x1f48, 0x1f4d,
+0x1f50, 0x1f57,
+0x1f59, 0x1f59,
+0x1f5b, 0x1f5b,
+0x1f5d, 0x1f5d,
+0x1f5f, 0x1f7d,
+0x1f80, 0x1fb4,
+0x1fb6, 0x1fbc,
+0x1fbe, 0x1fbe,
+0x1fc2, 0x1fc4,
+0x1fc6, 0x1fcc,
+0x1fd0, 0x1fd3,
+0x1fd6, 0x1fdb,
+0x1fe0, 0x1fec,
+0x1ff2, 0x1ff4,
+0x1ff6, 0x1ffc,
+0x2071, 0x2071,
+0x207f, 0x207f,
+0x2090, 0x209c,
+0x2102, 0x2102,
+0x2107, 0x2107,
+0x210a, 0x2113,
+0x2115, 0x2115,
+0x2118, 0x211d,
+0x2124, 0x2124,
+0x2126, 0x2126,
+0x2128, 0x2128,
+0x212a, 0x2139,
+0x213c, 0x213f,
+0x2145, 0x2149,
+0x214e, 0x214e,
+0x2160, 0x2188,
+0x2c00, 0x2c2e,
+0x2c30, 0x2c5e,
+0x2c60, 0x2ce4,
+0x2ceb, 0x2cee,
+0x2cf2, 0x2cf3,
+0x2d00, 0x2d25,
+0x2d27, 0x2d27,
+0x2d2d, 0x2d2d,
+0x2d30, 0x2d67,
+0x2d6f, 0x2d6f,
+0x2d80, 0x2d96,
+0x2da0, 0x2da6,
+0x2da8, 0x2dae,
+0x2db0, 0x2db6,
+0x2db8, 0x2dbe,
+0x2dc0, 0x2dc6,
+0x2dc8, 0x2dce,
+0x2dd0, 0x2dd6,
+0x2dd8, 0x2dde,
+0x3005, 0x3007,
+0x3021, 0x3029,
+0x3031, 0x3035,
+0x3038, 0x303c,
+0x3041, 0x3096,
+0x309b, 0x309f,
+0x30a1, 0x30fa,
+0x30fc, 0x30ff,
+0x3105, 0x312d,
+0x3131, 0x318e,
+0x31a0, 0x31ba,
+0x31f0, 0x31ff,
+0x3400, 0x4db5,
+0x4e00, 0x9fd5,
+0xa000, 0xa48c,
+0xa4d0, 0xa4fd,
+0xa500, 0xa60c,
+0xa610, 0xa61f,
+0xa62a, 0xa62b,
+0xa640, 0xa66e,
+0xa67f, 0xa69d,
+0xa6a0, 0xa6ef,
+0xa717, 0xa71f,
+0xa722, 0xa788,
+0xa78b, 0xa7ad,
+0xa7b0, 0xa7b7,
+0xa7f7, 0xa801,
+0xa803, 0xa805,
+0xa807, 0xa80a,
+0xa80c, 0xa822,
+0xa840, 0xa873,
+0xa882, 0xa8b3,
+0xa8f2, 0xa8f7,
+0xa8fb, 0xa8fb,
+0xa8fd, 0xa8fd,
+0xa90a, 0xa925,
+0xa930, 0xa946,
+0xa960, 0xa97c,
+0xa984, 0xa9b2,
+0xa9cf, 0xa9cf,
+0xa9e0, 0xa9e4,
+0xa9e6, 0xa9ef,
+0xa9fa, 0xa9fe,
+0xaa00, 0xaa28,
+0xaa40, 0xaa42,
+0xaa44, 0xaa4b,
+0xaa60, 0xaa76,
+0xaa7a, 0xaa7a,
+0xaa7e, 0xaaaf,
+0xaab1, 0xaab1,
+0xaab5, 0xaab6,
+0xaab9, 0xaabd,
+0xaac0, 0xaac0,
+0xaac2, 0xaac2,
+0xaadb, 0xaadd,
+0xaae0, 0xaaea,
+0xaaf2, 0xaaf4,
+0xab01, 0xab06,
+0xab09, 0xab0e,
+0xab11, 0xab16,
+0xab20, 0xab26,
+0xab28, 0xab2e,
+0xab30, 0xab5a,
+0xab5c, 0xab65,
+0xab70, 0xabe2,
+0xac00, 0xd7a3,
+0xd7b0, 0xd7c6,
+0xd7cb, 0xd7fb,
+0xf900, 0xfa6d,
+0xfa70, 0xfad9,
+0xfb00, 0xfb06,
+0xfb13, 0xfb17,
+0xfb1d, 0xfb1d,
+0xfb1f, 0xfb28,
+0xfb2a, 0xfb36,
+0xfb38, 0xfb3c,
+0xfb3e, 0xfb3e,
+0xfb40, 0xfb41,
+0xfb43, 0xfb44,
+0xfb46, 0xfbb1,
+0xfbd3, 0xfd3d,
+0xfd50, 0xfd8f,
+0xfd92, 0xfdc7,
+0xfdf0, 0xfdfb,
+0xfe70, 0xfe74,
+0xfe76, 0xfefc,
+0xff21, 0xff3a,
+0xff41, 0xff5a,
+0xff66, 0xffbe,
+0xffc2, 0xffc7,
+0xffca, 0xffcf,
+0xffd2, 0xffd7,
+0xffda, 0xffdc,
+0x10000, 0x1000b,
+0x1000d, 0x10026,
+0x10028, 0x1003a,
+0x1003c, 0x1003d,
+0x1003f, 0x1004d,
+0x10050, 0x1005d,
+0x10080, 0x100fa,
+0x10140, 0x10174,
+0x10280, 0x1029c,
+0x102a0, 0x102d0,
+0x10300, 0x1031f,
+0x10330, 0x1034a,
+0x10350, 0x10375,
+0x10380, 0x1039d,
+0x103a0, 0x103c3,
+0x103c8, 0x103cf,
+0x103d1, 0x103d5,
+0x10400, 0x1049d,
+0x10500, 0x10527,
+0x10530, 0x10563,
+0x10600, 0x10736,
+0x10740, 0x10755,
+0x10760, 0x10767,
+0x10800, 0x10805,
+0x10808, 0x10808,
+0x1080a, 0x10835,
+0x10837, 0x10838,
+0x1083c, 0x1083c,
+0x1083f, 0x10855,
+0x10860, 0x10876,
+0x10880, 0x1089e,
+0x108e0, 0x108f2,
+0x108f4, 0x108f5,
+0x10900, 0x10915,
+0x10920, 0x10939,
+0x10980, 0x109b7,
+0x109be, 0x109bf,
+0x10a00, 0x10a00,
+0x10a10, 0x10a13,
+0x10a15, 0x10a17,
+0x10a19, 0x10a33,
+0x10a60, 0x10a7c,
+0x10a80, 0x10a9c,
+0x10ac0, 0x10ac7,
+0x10ac9, 0x10ae4,
+0x10b00, 0x10b35,
+0x10b40, 0x10b55,
+0x10b60, 0x10b72,
+0x10b80, 0x10b91,
+0x10c00, 0x10c48,
+0x10c80, 0x10cb2,
+0x10cc0, 0x10cf2,
+0x11003, 0x11037,
+0x11083, 0x110af,
+0x110d0, 0x110e8,
+0x11103, 0x11126,
+0x11150, 0x11172,
+0x11176, 0x11176,
+0x11183, 0x111b2,
+0x111c1, 0x111c4,
+0x111da, 0x111da,
+0x111dc, 0x111dc,
+0x11200, 0x11211,
+0x11213, 0x1122b,
+0x11280, 0x11286,
+0x11288, 0x11288,
+0x1128a, 0x1128d,
+0x1128f, 0x1129d,
+0x1129f, 0x112a8,
+0x112b0, 0x112de,
+0x11305, 0x1130c,
+0x1130f, 0x11310,
+0x11313, 0x11328,
+0x1132a, 0x11330,
+0x11332, 0x11333,
+0x11335, 0x11339,
+0x1133d, 0x1133d,
+0x11350, 0x11350,
+0x1135d, 0x11361,
+0x11480, 0x114af,
+0x114c4, 0x114c5,
+0x114c7, 0x114c7,
+0x11580, 0x115ae,
+0x115d8, 0x115db,
+0x11600, 0x1162f,
+0x11644, 0x11644,
+0x11680, 0x116aa,
+0x11700, 0x11719,
+0x118a0, 0x118df,
+0x118ff, 0x118ff,
+0x11ac0, 0x11af8,
+0x12000, 0x12399,
+0x12400, 0x1246e,
+0x12480, 0x12543,
+0x13000, 0x1342e,
+0x14400, 0x14646,
+0x16800, 0x16a38,
+0x16a40, 0x16a5e,
+0x16ad0, 0x16aed,
+0x16b00, 0x16b2f,
+0x16b40, 0x16b43,
+0x16b63, 0x16b77,
+0x16b7d, 0x16b8f,
+0x16f00, 0x16f44,
+0x16f50, 0x16f50,
+0x16f93, 0x16f9f,
+0x1b000, 0x1b001,
+0x1bc00, 0x1bc6a,
+0x1bc70, 0x1bc7c,
+0x1bc80, 0x1bc88,
+0x1bc90, 0x1bc99,
+0x1d400, 0x1d454,
+0x1d456, 0x1d49c,
+0x1d49e, 0x1d49f,
+0x1d4a2, 0x1d4a2,
+0x1d4a5, 0x1d4a6,
+0x1d4a9, 0x1d4ac,
+0x1d4ae, 0x1d4b9,
+0x1d4bb, 0x1d4bb,
+0x1d4bd, 0x1d4c3,
+0x1d4c5, 0x1d505,
+0x1d507, 0x1d50a,
+0x1d50d, 0x1d514,
+0x1d516, 0x1d51c,
+0x1d51e, 0x1d539,
+0x1d53b, 0x1d53e,
+0x1d540, 0x1d544,
+0x1d546, 0x1d546,
+0x1d54a, 0x1d550,
+0x1d552, 0x1d6a5,
+0x1d6a8, 0x1d6c0,
+0x1d6c2, 0x1d6da,
+0x1d6dc, 0x1d6fa,
+0x1d6fc, 0x1d714,
+0x1d716, 0x1d734,
+0x1d736, 0x1d74e,
+0x1d750, 0x1d76e,
+0x1d770, 0x1d788,
+0x1d78a, 0x1d7a8,
+0x1d7aa, 0x1d7c2,
+0x1d7c4, 0x1d7cb,
+0x1e800, 0x1e8c4,
+0x1ee00, 0x1ee03,
+0x1ee05, 0x1ee1f,
+0x1ee21, 0x1ee22,
+0x1ee24, 0x1ee24,
+0x1ee27, 0x1ee27,
+0x1ee29, 0x1ee32,
+0x1ee34, 0x1ee37,
+0x1ee39, 0x1ee39,
+0x1ee3b, 0x1ee3b,
+0x1ee42, 0x1ee42,
+0x1ee47, 0x1ee47,
+0x1ee49, 0x1ee49,
+0x1ee4b, 0x1ee4b,
+0x1ee4d, 0x1ee4f,
+0x1ee51, 0x1ee52,
+0x1ee54, 0x1ee54,
+0x1ee57, 0x1ee57,
+0x1ee59, 0x1ee59,
+0x1ee5b, 0x1ee5b,
+0x1ee5d, 0x1ee5d,
+0x1ee5f, 0x1ee5f,
+0x1ee61, 0x1ee62,
+0x1ee64, 0x1ee64,
+0x1ee67, 0x1ee6a,
+0x1ee6c, 0x1ee72,
+0x1ee74, 0x1ee77,
+0x1ee79, 0x1ee7c,
+0x1ee7e, 0x1ee7e,
+0x1ee80, 0x1ee89,
+0x1ee8b, 0x1ee9b,
+0x1eea1, 0x1eea3,
+0x1eea5, 0x1eea9,
+0x1eeab, 0x1eebb,
+0x20000, 0x2a6d6,
+0x2a700, 0x2b734,
+0x2b740, 0x2b81d,
+0x2b820, 0x2cea1,
+0x2f800, 0x2fa1d,
+}; /* END of CR_ID_Start */
+
+/* PROPERTY: 'Ideographic': Binary Property */
+static const OnigCodePoint
+CR_Ideographic[] = { 12,
+0x3006, 0x3007,
+0x3021, 0x3029,
+0x3038, 0x303a,
+0x3400, 0x4db5,
+0x4e00, 0x9fd5,
+0xf900, 0xfa6d,
+0xfa70, 0xfad9,
+0x20000, 0x2a6d6,
+0x2a700, 0x2b734,
+0x2b740, 0x2b81d,
+0x2b820, 0x2cea1,
+0x2f800, 0x2fa1d,
+}; /* END of CR_Ideographic */
+
+/* PROPERTY: 'Imperial_Aramaic': Script */
+static const OnigCodePoint
+CR_Imperial_Aramaic[] = { 2,
+0x10840, 0x10855,
+0x10857, 0x1085f,
+}; /* END of CR_Imperial_Aramaic */
+
+/* PROPERTY: 'Inherited': Script */
+static const OnigCodePoint
+CR_Inherited[] = { 27,
+0x0300, 0x036f,
+0x0485, 0x0486,
+0x064b, 0x0655,
+0x0670, 0x0670,
+0x0951, 0x0952,
+0x1ab0, 0x1abe,
+0x1cd0, 0x1cd2,
+0x1cd4, 0x1ce0,
+0x1ce2, 0x1ce8,
+0x1ced, 0x1ced,
+0x1cf4, 0x1cf4,
+0x1cf8, 0x1cf9,
+0x1dc0, 0x1df5,
+0x1dfc, 0x1dff,
+0x200c, 0x200d,
+0x20d0, 0x20f0,
+0x302a, 0x302d,
+0x3099, 0x309a,
+0xfe00, 0xfe0f,
+0xfe20, 0xfe2d,
+0x101fd, 0x101fd,
+0x102e0, 0x102e0,
+0x1d167, 0x1d169,
+0x1d17b, 0x1d182,
+0x1d185, 0x1d18b,
+0x1d1aa, 0x1d1ad,
+0xe0100, 0xe01ef,
+}; /* END of CR_Inherited */
+
+/* PROPERTY: 'Inscriptional_Pahlavi': Script */
+static const OnigCodePoint
+CR_Inscriptional_Pahlavi[] = { 2,
+0x10b60, 0x10b72,
+0x10b78, 0x10b7f,
+}; /* END of CR_Inscriptional_Pahlavi */
+
+/* PROPERTY: 'Inscriptional_Parthian': Script */
+static const OnigCodePoint
+CR_Inscriptional_Parthian[] = { 2,
+0x10b40, 0x10b55,
+0x10b58, 0x10b5f,
+}; /* END of CR_Inscriptional_Parthian */
+
+/* PROPERTY: 'Javanese': Script */
+static const OnigCodePoint
+CR_Javanese[] = { 3,
+0xa980, 0xa9cd,
+0xa9d0, 0xa9d9,
+0xa9de, 0xa9df,
+}; /* END of CR_Javanese */
+
+/* PROPERTY: 'Join_Control': Binary Property */
+static const OnigCodePoint
+CR_Join_Control[] = { 1,
+0x200c, 0x200d,
+}; /* END of CR_Join_Control */
+
+/* PROPERTY: 'Kaithi': Script */
+static const OnigCodePoint
+CR_Kaithi[] = { 1,
+0x11080, 0x110c1,
+}; /* END of CR_Kaithi */
+
+/* PROPERTY: 'Kannada': Script */
+static const OnigCodePoint
+CR_Kannada[] = { 14,
+0x0c81, 0x0c83,
+0x0c85, 0x0c8c,
+0x0c8e, 0x0c90,
+0x0c92, 0x0ca8,
+0x0caa, 0x0cb3,
+0x0cb5, 0x0cb9,
+0x0cbc, 0x0cc4,
+0x0cc6, 0x0cc8,
+0x0cca, 0x0ccd,
+0x0cd5, 0x0cd6,
+0x0cde, 0x0cde,
+0x0ce0, 0x0ce3,
+0x0ce6, 0x0cef,
+0x0cf1, 0x0cf2,
+}; /* END of CR_Kannada */
+
+/* PROPERTY: 'Katakana': Script */
+static const OnigCodePoint
+CR_Katakana[] = { 8,
+0x30a1, 0x30fa,
+0x30fd, 0x30ff,
+0x31f0, 0x31ff,
+0x32d0, 0x32fe,
+0x3300, 0x3357,
+0xff66, 0xff6f,
+0xff71, 0xff9d,
+0x1b000, 0x1b000,
+}; /* END of CR_Katakana */
+
+/* PROPERTY: 'Kayah_Li': Script */
+static const OnigCodePoint
+CR_Kayah_Li[] = { 2,
+0xa900, 0xa92d,
+0xa92f, 0xa92f,
+}; /* END of CR_Kayah_Li */
+
+/* PROPERTY: 'Kharoshthi': Script */
+static const OnigCodePoint
+CR_Kharoshthi[] = { 8,
+0x10a00, 0x10a03,
+0x10a05, 0x10a06,
+0x10a0c, 0x10a13,
+0x10a15, 0x10a17,
+0x10a19, 0x10a33,
+0x10a38, 0x10a3a,
+0x10a3f, 0x10a47,
+0x10a50, 0x10a58,
+}; /* END of CR_Kharoshthi */
+
+/* PROPERTY: 'Khmer': Script */
+static const OnigCodePoint
+CR_Khmer[] = { 4,
+0x1780, 0x17dd,
+0x17e0, 0x17e9,
+0x17f0, 0x17f9,
+0x19e0, 0x19ff,
+}; /* END of CR_Khmer */
+
+/* PROPERTY: 'Khojki': Script */
+static const OnigCodePoint
+CR_Khojki[] = { 2,
+0x11200, 0x11211,
+0x11213, 0x1123d,
+}; /* END of CR_Khojki */
+
+/* PROPERTY: 'Khudawadi': Script */
+static const OnigCodePoint
+CR_Khudawadi[] = { 2,
+0x112b0, 0x112ea,
+0x112f0, 0x112f9,
+}; /* END of CR_Khudawadi */
+
/* PROPERTY: 'L': Major Category */
static const OnigCodePoint
CR_L[] = { 554,
@@ -7354,6 +13841,109 @@ CR_LC[] = { 122,
0x1d7c4, 0x1d7cb,
}; /* END of CR_LC */
+/* PROPERTY: 'Lao': Script */
+static const OnigCodePoint
+CR_Lao[] = { 18,
+0x0e81, 0x0e82,
+0x0e84, 0x0e84,
+0x0e87, 0x0e88,
+0x0e8a, 0x0e8a,
+0x0e8d, 0x0e8d,
+0x0e94, 0x0e97,
+0x0e99, 0x0e9f,
+0x0ea1, 0x0ea3,
+0x0ea5, 0x0ea5,
+0x0ea7, 0x0ea7,
+0x0eaa, 0x0eab,
+0x0ead, 0x0eb9,
+0x0ebb, 0x0ebd,
+0x0ec0, 0x0ec4,
+0x0ec6, 0x0ec6,
+0x0ec8, 0x0ecd,
+0x0ed0, 0x0ed9,
+0x0edc, 0x0edf,
+}; /* END of CR_Lao */
+
+/* PROPERTY: 'Latin': Script */
+static const OnigCodePoint
+CR_Latin[] = { 31,
+0x0041, 0x005a,
+0x0061, 0x007a,
+0x00aa, 0x00aa,
+0x00ba, 0x00ba,
+0x00c0, 0x00d6,
+0x00d8, 0x00f6,
+0x00f8, 0x02b8,
+0x02e0, 0x02e4,
+0x1d00, 0x1d25,
+0x1d2c, 0x1d5c,
+0x1d62, 0x1d65,
+0x1d6b, 0x1d77,
+0x1d79, 0x1dbe,
+0x1e00, 0x1eff,
+0x2071, 0x2071,
+0x207f, 0x207f,
+0x2090, 0x209c,
+0x212a, 0x212b,
+0x2132, 0x2132,
+0x214e, 0x214e,
+0x2160, 0x2188,
+0x2c60, 0x2c7f,
+0xa722, 0xa787,
+0xa78b, 0xa7ad,
+0xa7b0, 0xa7b7,
+0xa7f7, 0xa7ff,
+0xab30, 0xab5a,
+0xab5c, 0xab64,
+0xfb00, 0xfb06,
+0xff21, 0xff3a,
+0xff41, 0xff5a,
+}; /* END of CR_Latin */
+
+/* PROPERTY: 'Lepcha': Script */
+static const OnigCodePoint
+CR_Lepcha[] = { 3,
+0x1c00, 0x1c37,
+0x1c3b, 0x1c49,
+0x1c4d, 0x1c4f,
+}; /* END of CR_Lepcha */
+
+/* PROPERTY: 'Limbu': Script */
+static const OnigCodePoint
+CR_Limbu[] = { 5,
+0x1900, 0x191e,
+0x1920, 0x192b,
+0x1930, 0x193b,
+0x1940, 0x1940,
+0x1944, 0x194f,
+}; /* END of CR_Limbu */
+
+/* PROPERTY: 'Linear_A': Script */
+static const OnigCodePoint
+CR_Linear_A[] = { 3,
+0x10600, 0x10736,
+0x10740, 0x10755,
+0x10760, 0x10767,
+}; /* END of CR_Linear_A */
+
+/* PROPERTY: 'Linear_B': Script */
+static const OnigCodePoint
+CR_Linear_B[] = { 7,
+0x10000, 0x1000b,
+0x1000d, 0x10026,
+0x10028, 0x1003a,
+0x1003c, 0x1003d,
+0x1003f, 0x1004d,
+0x10050, 0x1005d,
+0x10080, 0x100fa,
+}; /* END of CR_Linear_B */
+
+/* PROPERTY: 'Lisu': Script */
+static const OnigCodePoint
+CR_Lisu[] = { 1,
+0xa4d0, 0xa4ff,
+}; /* END of CR_Lisu */
+
/* PROPERTY: 'Ll': General Category */
static const OnigCodePoint
CR_Ll[] = { 630,
@@ -8488,6 +15078,21 @@ CR_Lo[] = { 433,
0x2f800, 0x2fa1d,
}; /* END of CR_Lo */
+/* PROPERTY: 'Logical_Order_Exception': Binary Property */
+static const OnigCodePoint
+CR_Logical_Order_Exception[] = { 7,
+0x0e40, 0x0e44,
+0x0ec0, 0x0ec4,
+0x19b5, 0x19b7,
+0x19ba, 0x19ba,
+0xaab5, 0xaab6,
+0xaab9, 0xaab9,
+0xaabb, 0xaabc,
+}; /* END of CR_Logical_Order_Exception */
+
+/* PROPERTY: 'Lowercase': Derived Property */
+#define CR_Lowercase CR_Lower
+
/* PROPERTY: 'Lt': General Category */
static const OnigCodePoint
CR_Lt[] = { 10,
@@ -9133,6 +15738,19 @@ CR_Lu[] = { 625,
0x1d7ca, 0x1d7ca,
}; /* END of CR_Lu */
+/* PROPERTY: 'Lycian': Script */
+static const OnigCodePoint
+CR_Lycian[] = { 1,
+0x10280, 0x1029c,
+}; /* END of CR_Lycian */
+
+/* PROPERTY: 'Lydian': Script */
+static const OnigCodePoint
+CR_Lydian[] = { 2,
+0x10920, 0x10939,
+0x1093f, 0x1093f,
+}; /* END of CR_Lydian */
+
/* PROPERTY: 'M': Major Category */
static const OnigCodePoint
CR_M[] = { 236,
@@ -9374,6 +15992,185 @@ CR_M[] = { 236,
0xe0100, 0xe01ef,
}; /* END of CR_M */
+/* PROPERTY: 'Mahajani': Script */
+static const OnigCodePoint
+CR_Mahajani[] = { 1,
+0x11150, 0x11176,
+}; /* END of CR_Mahajani */
+
+/* PROPERTY: 'Malayalam': Script */
+static const OnigCodePoint
+CR_Malayalam[] = { 11,
+0x0d01, 0x0d03,
+0x0d05, 0x0d0c,
+0x0d0e, 0x0d10,
+0x0d12, 0x0d3a,
+0x0d3d, 0x0d44,
+0x0d46, 0x0d48,
+0x0d4a, 0x0d4e,
+0x0d57, 0x0d57,
+0x0d5f, 0x0d63,
+0x0d66, 0x0d75,
+0x0d79, 0x0d7f,
+}; /* END of CR_Malayalam */
+
+/* PROPERTY: 'Mandaic': Script */
+static const OnigCodePoint
+CR_Mandaic[] = { 2,
+0x0840, 0x085b,
+0x085e, 0x085e,
+}; /* END of CR_Mandaic */
+
+/* PROPERTY: 'Manichaean': Script */
+static const OnigCodePoint
+CR_Manichaean[] = { 2,
+0x10ac0, 0x10ae6,
+0x10aeb, 0x10af6,
+}; /* END of CR_Manichaean */
+
+/* PROPERTY: 'Math': Derived Property */
+static const OnigCodePoint
+CR_Math[] = { 138,
+0x002b, 0x002b,
+0x003c, 0x003e,
+0x005e, 0x005e,
+0x007c, 0x007c,
+0x007e, 0x007e,
+0x00ac, 0x00ac,
+0x00b1, 0x00b1,
+0x00d7, 0x00d7,
+0x00f7, 0x00f7,
+0x03d0, 0x03d2,
+0x03d5, 0x03d5,
+0x03f0, 0x03f1,
+0x03f4, 0x03f6,
+0x0606, 0x0608,
+0x2016, 0x2016,
+0x2032, 0x2034,
+0x2040, 0x2040,
+0x2044, 0x2044,
+0x2052, 0x2052,
+0x2061, 0x2064,
+0x207a, 0x207e,
+0x208a, 0x208e,
+0x20d0, 0x20dc,
+0x20e1, 0x20e1,
+0x20e5, 0x20e6,
+0x20eb, 0x20ef,
+0x2102, 0x2102,
+0x2107, 0x2107,
+0x210a, 0x2113,
+0x2115, 0x2115,
+0x2118, 0x211d,
+0x2124, 0x2124,
+0x2128, 0x2129,
+0x212c, 0x212d,
+0x212f, 0x2131,
+0x2133, 0x2138,
+0x213c, 0x2149,
+0x214b, 0x214b,
+0x2190, 0x21a7,
+0x21a9, 0x21ae,
+0x21b0, 0x21b1,
+0x21b6, 0x21b7,
+0x21bc, 0x21db,
+0x21dd, 0x21dd,
+0x21e4, 0x21e5,
+0x21f4, 0x22ff,
+0x2308, 0x230b,
+0x2320, 0x2321,
+0x237c, 0x237c,
+0x239b, 0x23b5,
+0x23b7, 0x23b7,
+0x23d0, 0x23d0,
+0x23dc, 0x23e2,
+0x25a0, 0x25a1,
+0x25ae, 0x25b7,
+0x25bc, 0x25c1,
+0x25c6, 0x25c7,
+0x25ca, 0x25cb,
+0x25cf, 0x25d3,
+0x25e2, 0x25e2,
+0x25e4, 0x25e4,
+0x25e7, 0x25ec,
+0x25f8, 0x25ff,
+0x2605, 0x2606,
+0x2640, 0x2640,
+0x2642, 0x2642,
+0x2660, 0x2663,
+0x266d, 0x266f,
+0x27c0, 0x27ff,
+0x2900, 0x2aff,
+0x2b30, 0x2b44,
+0x2b47, 0x2b4c,
+0xfb29, 0xfb29,
+0xfe61, 0xfe66,
+0xfe68, 0xfe68,
+0xff0b, 0xff0b,
+0xff1c, 0xff1e,
+0xff3c, 0xff3c,
+0xff3e, 0xff3e,
+0xff5c, 0xff5c,
+0xff5e, 0xff5e,
+0xffe2, 0xffe2,
+0xffe9, 0xffec,
+0x1d400, 0x1d454,
+0x1d456, 0x1d49c,
+0x1d49e, 0x1d49f,
+0x1d4a2, 0x1d4a2,
+0x1d4a5, 0x1d4a6,
+0x1d4a9, 0x1d4ac,
+0x1d4ae, 0x1d4b9,
+0x1d4bb, 0x1d4bb,
+0x1d4bd, 0x1d4c3,
+0x1d4c5, 0x1d505,
+0x1d507, 0x1d50a,
+0x1d50d, 0x1d514,
+0x1d516, 0x1d51c,
+0x1d51e, 0x1d539,
+0x1d53b, 0x1d53e,
+0x1d540, 0x1d544,
+0x1d546, 0x1d546,
+0x1d54a, 0x1d550,
+0x1d552, 0x1d6a5,
+0x1d6a8, 0x1d7cb,
+0x1d7ce, 0x1d7ff,
+0x1ee00, 0x1ee03,
+0x1ee05, 0x1ee1f,
+0x1ee21, 0x1ee22,
+0x1ee24, 0x1ee24,
+0x1ee27, 0x1ee27,
+0x1ee29, 0x1ee32,
+0x1ee34, 0x1ee37,
+0x1ee39, 0x1ee39,
+0x1ee3b, 0x1ee3b,
+0x1ee42, 0x1ee42,
+0x1ee47, 0x1ee47,
+0x1ee49, 0x1ee49,
+0x1ee4b, 0x1ee4b,
+0x1ee4d, 0x1ee4f,
+0x1ee51, 0x1ee52,
+0x1ee54, 0x1ee54,
+0x1ee57, 0x1ee57,
+0x1ee59, 0x1ee59,
+0x1ee5b, 0x1ee5b,
+0x1ee5d, 0x1ee5d,
+0x1ee5f, 0x1ee5f,
+0x1ee61, 0x1ee62,
+0x1ee64, 0x1ee64,
+0x1ee67, 0x1ee6a,
+0x1ee6c, 0x1ee72,
+0x1ee74, 0x1ee77,
+0x1ee79, 0x1ee7c,
+0x1ee7e, 0x1ee7e,
+0x1ee80, 0x1ee89,
+0x1ee8b, 0x1ee9b,
+0x1eea1, 0x1eea3,
+0x1eea5, 0x1eea9,
+0x1eeab, 0x1eebb,
+0x1eef0, 0x1eef1,
+}; /* END of CR_Math */
+
/* PROPERTY: 'Mc': General Category */
static const OnigCodePoint
CR_Mc[] = { 147,
@@ -9536,6 +16333,43 @@ CR_Me[] = { 5,
0xa670, 0xa672,
}; /* END of CR_Me */
+/* PROPERTY: 'Meetei_Mayek': Script */
+static const OnigCodePoint
+CR_Meetei_Mayek[] = { 3,
+0xaae0, 0xaaf6,
+0xabc0, 0xabed,
+0xabf0, 0xabf9,
+}; /* END of CR_Meetei_Mayek */
+
+/* PROPERTY: 'Mende_Kikakui': Script */
+static const OnigCodePoint
+CR_Mende_Kikakui[] = { 2,
+0x1e800, 0x1e8c4,
+0x1e8c7, 0x1e8d6,
+}; /* END of CR_Mende_Kikakui */
+
+/* PROPERTY: 'Meroitic_Cursive': Script */
+static const OnigCodePoint
+CR_Meroitic_Cursive[] = { 3,
+0x109a0, 0x109b7,
+0x109bc, 0x109cf,
+0x109d2, 0x109ff,
+}; /* END of CR_Meroitic_Cursive */
+
+/* PROPERTY: 'Meroitic_Hieroglyphs': Script */
+static const OnigCodePoint
+CR_Meroitic_Hieroglyphs[] = { 1,
+0x10980, 0x1099f,
+}; /* END of CR_Meroitic_Hieroglyphs */
+
+/* PROPERTY: 'Miao': Script */
+static const OnigCodePoint
+CR_Miao[] = { 3,
+0x16f00, 0x16f44,
+0x16f50, 0x16f7e,
+0x16f8f, 0x16f9f,
+}; /* END of CR_Miao */
+
/* PROPERTY: 'Mn': General Category */
static const OnigCodePoint
CR_Mn[] = { 266,
@@ -9807,6 +16641,50 @@ CR_Mn[] = { 266,
0xe0100, 0xe01ef,
}; /* END of CR_Mn */
+/* PROPERTY: 'Modi': Script */
+static const OnigCodePoint
+CR_Modi[] = { 2,
+0x11600, 0x11644,
+0x11650, 0x11659,
+}; /* END of CR_Modi */
+
+/* PROPERTY: 'Mongolian': Script */
+static const OnigCodePoint
+CR_Mongolian[] = { 6,
+0x1800, 0x1801,
+0x1804, 0x1804,
+0x1806, 0x180e,
+0x1810, 0x1819,
+0x1820, 0x1877,
+0x1880, 0x18aa,
+}; /* END of CR_Mongolian */
+
+/* PROPERTY: 'Mro': Script */
+static const OnigCodePoint
+CR_Mro[] = { 3,
+0x16a40, 0x16a5e,
+0x16a60, 0x16a69,
+0x16a6e, 0x16a6f,
+}; /* END of CR_Mro */
+
+/* PROPERTY: 'Multani': Script */
+static const OnigCodePoint
+CR_Multani[] = { 5,
+0x11280, 0x11286,
+0x11288, 0x11288,
+0x1128a, 0x1128d,
+0x1128f, 0x1129d,
+0x1129f, 0x112a9,
+}; /* END of CR_Multani */
+
+/* PROPERTY: 'Myanmar': Script */
+static const OnigCodePoint
+CR_Myanmar[] = { 3,
+0x1000, 0x109f,
+0xa9e0, 0xa9fe,
+0xaa60, 0xaa7f,
+}; /* END of CR_Myanmar */
+
/* PROPERTY: 'N': Major Category */
static const OnigCodePoint
CR_N[] = { 111,
@@ -9923,9 +16801,31 @@ CR_N[] = { 111,
0x1f100, 0x1f10c,
}; /* END of CR_N */
+/* PROPERTY: 'Nabataean': Script */
+static const OnigCodePoint
+CR_Nabataean[] = { 2,
+0x10880, 0x1089e,
+0x108a7, 0x108af,
+}; /* END of CR_Nabataean */
+
/* PROPERTY: 'Nd': General Category */
#define CR_Nd CR_Digit
+/* PROPERTY: 'New_Tai_Lue': Script */
+static const OnigCodePoint
+CR_New_Tai_Lue[] = { 4,
+0x1980, 0x19ab,
+0x19b0, 0x19c9,
+0x19d0, 0x19da,
+0x19de, 0x19df,
+}; /* END of CR_New_Tai_Lue */
+
+/* PROPERTY: 'Nko': Script */
+static const OnigCodePoint
+CR_Nko[] = { 1,
+0x07c0, 0x07fa,
+}; /* END of CR_Nko */
+
/* PROPERTY: 'Nl': General Category */
static const OnigCodePoint
CR_Nl[] = { 12,
@@ -10006,9 +16906,597 @@ CR_No[] = { 58,
0x1f100, 0x1f10c,
}; /* END of CR_No */
+/* PROPERTY: 'Noncharacter_Code_Point': Binary Property */
+static const OnigCodePoint
+CR_Noncharacter_Code_Point[] = { 18,
+0xfdd0, 0xfdef,
+0xfffe, 0xffff,
+0x1fffe, 0x1ffff,
+0x2fffe, 0x2ffff,
+0x3fffe, 0x3ffff,
+0x4fffe, 0x4ffff,
+0x5fffe, 0x5ffff,
+0x6fffe, 0x6ffff,
+0x7fffe, 0x7ffff,
+0x8fffe, 0x8ffff,
+0x9fffe, 0x9ffff,
+0xafffe, 0xaffff,
+0xbfffe, 0xbffff,
+0xcfffe, 0xcffff,
+0xdfffe, 0xdffff,
+0xefffe, 0xeffff,
+0xffffe, 0xfffff,
+0x10fffe, 0x10ffff,
+}; /* END of CR_Noncharacter_Code_Point */
+
+/* PROPERTY: 'Ogham': Script */
+static const OnigCodePoint
+CR_Ogham[] = { 1,
+0x1680, 0x169c,
+}; /* END of CR_Ogham */
+
+/* PROPERTY: 'Ol_Chiki': Script */
+static const OnigCodePoint
+CR_Ol_Chiki[] = { 1,
+0x1c50, 0x1c7f,
+}; /* END of CR_Ol_Chiki */
+
+/* PROPERTY: 'Old_Hungarian': Script */
+static const OnigCodePoint
+CR_Old_Hungarian[] = { 3,
+0x10c80, 0x10cb2,
+0x10cc0, 0x10cf2,
+0x10cfa, 0x10cff,
+}; /* END of CR_Old_Hungarian */
+
+/* PROPERTY: 'Old_Italic': Script */
+static const OnigCodePoint
+CR_Old_Italic[] = { 1,
+0x10300, 0x10323,
+}; /* END of CR_Old_Italic */
+
+/* PROPERTY: 'Old_North_Arabian': Script */
+static const OnigCodePoint
+CR_Old_North_Arabian[] = { 1,
+0x10a80, 0x10a9f,
+}; /* END of CR_Old_North_Arabian */
+
+/* PROPERTY: 'Old_Permic': Script */
+static const OnigCodePoint
+CR_Old_Permic[] = { 1,
+0x10350, 0x1037a,
+}; /* END of CR_Old_Permic */
+
+/* PROPERTY: 'Old_Persian': Script */
+static const OnigCodePoint
+CR_Old_Persian[] = { 2,
+0x103a0, 0x103c3,
+0x103c8, 0x103d5,
+}; /* END of CR_Old_Persian */
+
+/* PROPERTY: 'Old_South_Arabian': Script */
+static const OnigCodePoint
+CR_Old_South_Arabian[] = { 1,
+0x10a60, 0x10a7f,
+}; /* END of CR_Old_South_Arabian */
+
+/* PROPERTY: 'Old_Turkic': Script */
+static const OnigCodePoint
+CR_Old_Turkic[] = { 1,
+0x10c00, 0x10c48,
+}; /* END of CR_Old_Turkic */
+
+/* PROPERTY: 'Oriya': Script */
+static const OnigCodePoint
+CR_Oriya[] = { 14,
+0x0b01, 0x0b03,
+0x0b05, 0x0b0c,
+0x0b0f, 0x0b10,
+0x0b13, 0x0b28,
+0x0b2a, 0x0b30,
+0x0b32, 0x0b33,
+0x0b35, 0x0b39,
+0x0b3c, 0x0b44,
+0x0b47, 0x0b48,
+0x0b4b, 0x0b4d,
+0x0b56, 0x0b57,
+0x0b5c, 0x0b5d,
+0x0b5f, 0x0b63,
+0x0b66, 0x0b77,
+}; /* END of CR_Oriya */
+
+/* PROPERTY: 'Osmanya': Script */
+static const OnigCodePoint
+CR_Osmanya[] = { 2,
+0x10480, 0x1049d,
+0x104a0, 0x104a9,
+}; /* END of CR_Osmanya */
+
+/* PROPERTY: 'Other_Alphabetic': Binary Property */
+static const OnigCodePoint
+CR_Other_Alphabetic[] = { 178,
+0x0345, 0x0345,
+0x05b0, 0x05bd,
+0x05bf, 0x05bf,
+0x05c1, 0x05c2,
+0x05c4, 0x05c5,
+0x05c7, 0x05c7,
+0x0610, 0x061a,
+0x064b, 0x0657,
+0x0659, 0x065f,
+0x0670, 0x0670,
+0x06d6, 0x06dc,
+0x06e1, 0x06e4,
+0x06e7, 0x06e8,
+0x06ed, 0x06ed,
+0x0711, 0x0711,
+0x0730, 0x073f,
+0x07a6, 0x07b0,
+0x0816, 0x0817,
+0x081b, 0x0823,
+0x0825, 0x0827,
+0x0829, 0x082c,
+0x08e3, 0x08e9,
+0x08f0, 0x0903,
+0x093a, 0x093b,
+0x093e, 0x094c,
+0x094e, 0x094f,
+0x0955, 0x0957,
+0x0962, 0x0963,
+0x0981, 0x0983,
+0x09be, 0x09c4,
+0x09c7, 0x09c8,
+0x09cb, 0x09cc,
+0x09d7, 0x09d7,
+0x09e2, 0x09e3,
+0x0a01, 0x0a03,
+0x0a3e, 0x0a42,
+0x0a47, 0x0a48,
+0x0a4b, 0x0a4c,
+0x0a51, 0x0a51,
+0x0a70, 0x0a71,
+0x0a75, 0x0a75,
+0x0a81, 0x0a83,
+0x0abe, 0x0ac5,
+0x0ac7, 0x0ac9,
+0x0acb, 0x0acc,
+0x0ae2, 0x0ae3,
+0x0b01, 0x0b03,
+0x0b3e, 0x0b44,
+0x0b47, 0x0b48,
+0x0b4b, 0x0b4c,
+0x0b56, 0x0b57,
+0x0b62, 0x0b63,
+0x0b82, 0x0b82,
+0x0bbe, 0x0bc2,
+0x0bc6, 0x0bc8,
+0x0bca, 0x0bcc,
+0x0bd7, 0x0bd7,
+0x0c00, 0x0c03,
+0x0c3e, 0x0c44,
+0x0c46, 0x0c48,
+0x0c4a, 0x0c4c,
+0x0c55, 0x0c56,
+0x0c62, 0x0c63,
+0x0c81, 0x0c83,
+0x0cbe, 0x0cc4,
+0x0cc6, 0x0cc8,
+0x0cca, 0x0ccc,
+0x0cd5, 0x0cd6,
+0x0ce2, 0x0ce3,
+0x0d01, 0x0d03,
+0x0d3e, 0x0d44,
+0x0d46, 0x0d48,
+0x0d4a, 0x0d4c,
+0x0d57, 0x0d57,
+0x0d62, 0x0d63,
+0x0d82, 0x0d83,
+0x0dcf, 0x0dd4,
+0x0dd6, 0x0dd6,
+0x0dd8, 0x0ddf,
+0x0df2, 0x0df3,
+0x0e31, 0x0e31,
+0x0e34, 0x0e3a,
+0x0e4d, 0x0e4d,
+0x0eb1, 0x0eb1,
+0x0eb4, 0x0eb9,
+0x0ebb, 0x0ebc,
+0x0ecd, 0x0ecd,
+0x0f71, 0x0f81,
+0x0f8d, 0x0f97,
+0x0f99, 0x0fbc,
+0x102b, 0x1036,
+0x1038, 0x1038,
+0x103b, 0x103e,
+0x1056, 0x1059,
+0x105e, 0x1060,
+0x1062, 0x1062,
+0x1067, 0x1068,
+0x1071, 0x1074,
+0x1082, 0x1086,
+0x109c, 0x109d,
+0x135f, 0x135f,
+0x1712, 0x1713,
+0x1732, 0x1733,
+0x1752, 0x1753,
+0x1772, 0x1773,
+0x17b6, 0x17c8,
+0x18a9, 0x18a9,
+0x1920, 0x192b,
+0x1930, 0x1938,
+0x1a17, 0x1a1b,
+0x1a55, 0x1a5e,
+0x1a61, 0x1a74,
+0x1b00, 0x1b04,
+0x1b35, 0x1b43,
+0x1b80, 0x1b82,
+0x1ba1, 0x1ba9,
+0x1bac, 0x1bad,
+0x1be7, 0x1bf1,
+0x1c24, 0x1c35,
+0x1cf2, 0x1cf3,
+0x1de7, 0x1df4,
+0x24b6, 0x24e9,
+0x2de0, 0x2dff,
+0xa674, 0xa67b,
+0xa69e, 0xa69f,
+0xa823, 0xa827,
+0xa880, 0xa881,
+0xa8b4, 0xa8c3,
+0xa926, 0xa92a,
+0xa947, 0xa952,
+0xa980, 0xa983,
+0xa9b4, 0xa9bf,
+0xaa29, 0xaa36,
+0xaa43, 0xaa43,
+0xaa4c, 0xaa4d,
+0xaab0, 0xaab0,
+0xaab2, 0xaab4,
+0xaab7, 0xaab8,
+0xaabe, 0xaabe,
+0xaaeb, 0xaaef,
+0xaaf5, 0xaaf5,
+0xabe3, 0xabea,
+0xfb1e, 0xfb1e,
+0x10376, 0x1037a,
+0x10a01, 0x10a03,
+0x10a05, 0x10a06,
+0x10a0c, 0x10a0f,
+0x11000, 0x11002,
+0x11038, 0x11045,
+0x11082, 0x11082,
+0x110b0, 0x110b8,
+0x11100, 0x11102,
+0x11127, 0x11132,
+0x11180, 0x11182,
+0x111b3, 0x111bf,
+0x1122c, 0x11234,
+0x11237, 0x11237,
+0x112df, 0x112e8,
+0x11300, 0x11303,
+0x1133e, 0x11344,
+0x11347, 0x11348,
+0x1134b, 0x1134c,
+0x11357, 0x11357,
+0x11362, 0x11363,
+0x114b0, 0x114c1,
+0x115af, 0x115b5,
+0x115b8, 0x115be,
+0x115dc, 0x115dd,
+0x11630, 0x1163e,
+0x11640, 0x11640,
+0x116ab, 0x116b5,
+0x1171d, 0x1172a,
+0x16b30, 0x16b36,
+0x16f51, 0x16f7e,
+0x1bc9e, 0x1bc9e,
+0x1f130, 0x1f149,
+0x1f150, 0x1f169,
+0x1f170, 0x1f189,
+}; /* END of CR_Other_Alphabetic */
+
+/* PROPERTY: 'Other_Default_Ignorable_Code_Point': Binary Property */
+static const OnigCodePoint
+CR_Other_Default_Ignorable_Code_Point[] = { 11,
+0x034f, 0x034f,
+0x115f, 0x1160,
+0x17b4, 0x17b5,
+0x2065, 0x2065,
+0x3164, 0x3164,
+0xffa0, 0xffa0,
+0xfff0, 0xfff8,
+0xe0000, 0xe0000,
+0xe0002, 0xe001f,
+0xe0080, 0xe00ff,
+0xe01f0, 0xe0fff,
+}; /* END of CR_Other_Default_Ignorable_Code_Point */
+
+/* PROPERTY: 'Other_Grapheme_Extend': Binary Property */
+static const OnigCodePoint
+CR_Other_Grapheme_Extend[] = { 22,
+0x09be, 0x09be,
+0x09d7, 0x09d7,
+0x0b3e, 0x0b3e,
+0x0b57, 0x0b57,
+0x0bbe, 0x0bbe,
+0x0bd7, 0x0bd7,
+0x0cc2, 0x0cc2,
+0x0cd5, 0x0cd6,
+0x0d3e, 0x0d3e,
+0x0d57, 0x0d57,
+0x0dcf, 0x0dcf,
+0x0ddf, 0x0ddf,
+0x200c, 0x200d,
+0x302e, 0x302f,
+0xff9e, 0xff9f,
+0x1133e, 0x1133e,
+0x11357, 0x11357,
+0x114b0, 0x114b0,
+0x114bd, 0x114bd,
+0x115af, 0x115af,
+0x1d165, 0x1d165,
+0x1d16e, 0x1d172,
+}; /* END of CR_Other_Grapheme_Extend */
+
+/* PROPERTY: 'Other_ID_Continue': Binary Property */
+static const OnigCodePoint
+CR_Other_ID_Continue[] = { 4,
+0x00b7, 0x00b7,
+0x0387, 0x0387,
+0x1369, 0x1371,
+0x19da, 0x19da,
+}; /* END of CR_Other_ID_Continue */
+
+/* PROPERTY: 'Other_ID_Start': Binary Property */
+static const OnigCodePoint
+CR_Other_ID_Start[] = { 3,
+0x2118, 0x2118,
+0x212e, 0x212e,
+0x309b, 0x309c,
+}; /* END of CR_Other_ID_Start */
+
+/* PROPERTY: 'Other_Lowercase': Binary Property */
+static const OnigCodePoint
+CR_Other_Lowercase[] = { 20,
+0x00aa, 0x00aa,
+0x00ba, 0x00ba,
+0x02b0, 0x02b8,
+0x02c0, 0x02c1,
+0x02e0, 0x02e4,
+0x0345, 0x0345,
+0x037a, 0x037a,
+0x1d2c, 0x1d6a,
+0x1d78, 0x1d78,
+0x1d9b, 0x1dbf,
+0x2071, 0x2071,
+0x207f, 0x207f,
+0x2090, 0x209c,
+0x2170, 0x217f,
+0x24d0, 0x24e9,
+0x2c7c, 0x2c7d,
+0xa69c, 0xa69d,
+0xa770, 0xa770,
+0xa7f8, 0xa7f9,
+0xab5c, 0xab5f,
+}; /* END of CR_Other_Lowercase */
+
+/* PROPERTY: 'Other_Math': Binary Property */
+static const OnigCodePoint
+CR_Other_Math[] = { 134,
+0x005e, 0x005e,
+0x03d0, 0x03d2,
+0x03d5, 0x03d5,
+0x03f0, 0x03f1,
+0x03f4, 0x03f5,
+0x2016, 0x2016,
+0x2032, 0x2034,
+0x2040, 0x2040,
+0x2061, 0x2064,
+0x207d, 0x207e,
+0x208d, 0x208e,
+0x20d0, 0x20dc,
+0x20e1, 0x20e1,
+0x20e5, 0x20e6,
+0x20eb, 0x20ef,
+0x2102, 0x2102,
+0x2107, 0x2107,
+0x210a, 0x2113,
+0x2115, 0x2115,
+0x2119, 0x211d,
+0x2124, 0x2124,
+0x2128, 0x2129,
+0x212c, 0x212d,
+0x212f, 0x2131,
+0x2133, 0x2138,
+0x213c, 0x213f,
+0x2145, 0x2149,
+0x2195, 0x2199,
+0x219c, 0x219f,
+0x21a1, 0x21a2,
+0x21a4, 0x21a5,
+0x21a7, 0x21a7,
+0x21a9, 0x21ad,
+0x21b0, 0x21b1,
+0x21b6, 0x21b7,
+0x21bc, 0x21cd,
+0x21d0, 0x21d1,
+0x21d3, 0x21d3,
+0x21d5, 0x21db,
+0x21dd, 0x21dd,
+0x21e4, 0x21e5,
+0x2308, 0x230b,
+0x23b4, 0x23b5,
+0x23b7, 0x23b7,
+0x23d0, 0x23d0,
+0x23e2, 0x23e2,
+0x25a0, 0x25a1,
+0x25ae, 0x25b6,
+0x25bc, 0x25c0,
+0x25c6, 0x25c7,
+0x25ca, 0x25cb,
+0x25cf, 0x25d3,
+0x25e2, 0x25e2,
+0x25e4, 0x25e4,
+0x25e7, 0x25ec,
+0x2605, 0x2606,
+0x2640, 0x2640,
+0x2642, 0x2642,
+0x2660, 0x2663,
+0x266d, 0x266e,
+0x27c5, 0x27c6,
+0x27e6, 0x27ef,
+0x2983, 0x2998,
+0x29d8, 0x29db,
+0x29fc, 0x29fd,
+0xfe61, 0xfe61,
+0xfe63, 0xfe63,
+0xfe68, 0xfe68,
+0xff3c, 0xff3c,
+0xff3e, 0xff3e,
+0x1d400, 0x1d454,
+0x1d456, 0x1d49c,
+0x1d49e, 0x1d49f,
+0x1d4a2, 0x1d4a2,
+0x1d4a5, 0x1d4a6,
+0x1d4a9, 0x1d4ac,
+0x1d4ae, 0x1d4b9,
+0x1d4bb, 0x1d4bb,
+0x1d4bd, 0x1d4c3,
+0x1d4c5, 0x1d505,
+0x1d507, 0x1d50a,
+0x1d50d, 0x1d514,
+0x1d516, 0x1d51c,
+0x1d51e, 0x1d539,
+0x1d53b, 0x1d53e,
+0x1d540, 0x1d544,
+0x1d546, 0x1d546,
+0x1d54a, 0x1d550,
+0x1d552, 0x1d6a5,
+0x1d6a8, 0x1d6c0,
+0x1d6c2, 0x1d6da,
+0x1d6dc, 0x1d6fa,
+0x1d6fc, 0x1d714,
+0x1d716, 0x1d734,
+0x1d736, 0x1d74e,
+0x1d750, 0x1d76e,
+0x1d770, 0x1d788,
+0x1d78a, 0x1d7a8,
+0x1d7aa, 0x1d7c2,
+0x1d7c4, 0x1d7cb,
+0x1d7ce, 0x1d7ff,
+0x1ee00, 0x1ee03,
+0x1ee05, 0x1ee1f,
+0x1ee21, 0x1ee22,
+0x1ee24, 0x1ee24,
+0x1ee27, 0x1ee27,
+0x1ee29, 0x1ee32,
+0x1ee34, 0x1ee37,
+0x1ee39, 0x1ee39,
+0x1ee3b, 0x1ee3b,
+0x1ee42, 0x1ee42,
+0x1ee47, 0x1ee47,
+0x1ee49, 0x1ee49,
+0x1ee4b, 0x1ee4b,
+0x1ee4d, 0x1ee4f,
+0x1ee51, 0x1ee52,
+0x1ee54, 0x1ee54,
+0x1ee57, 0x1ee57,
+0x1ee59, 0x1ee59,
+0x1ee5b, 0x1ee5b,
+0x1ee5d, 0x1ee5d,
+0x1ee5f, 0x1ee5f,
+0x1ee61, 0x1ee62,
+0x1ee64, 0x1ee64,
+0x1ee67, 0x1ee6a,
+0x1ee6c, 0x1ee72,
+0x1ee74, 0x1ee77,
+0x1ee79, 0x1ee7c,
+0x1ee7e, 0x1ee7e,
+0x1ee80, 0x1ee89,
+0x1ee8b, 0x1ee9b,
+0x1eea1, 0x1eea3,
+0x1eea5, 0x1eea9,
+0x1eeab, 0x1eebb,
+}; /* END of CR_Other_Math */
+
+/* PROPERTY: 'Other_Uppercase': Binary Property */
+static const OnigCodePoint
+CR_Other_Uppercase[] = { 5,
+0x2160, 0x216f,
+0x24b6, 0x24cf,
+0x1f130, 0x1f149,
+0x1f150, 0x1f169,
+0x1f170, 0x1f189,
+}; /* END of CR_Other_Uppercase */
+
/* PROPERTY: 'P': Major Category */
#define CR_P CR_Punct
+/* PROPERTY: 'Pahawh_Hmong': Script */
+static const OnigCodePoint
+CR_Pahawh_Hmong[] = { 5,
+0x16b00, 0x16b45,
+0x16b50, 0x16b59,
+0x16b5b, 0x16b61,
+0x16b63, 0x16b77,
+0x16b7d, 0x16b8f,
+}; /* END of CR_Pahawh_Hmong */
+
+/* PROPERTY: 'Palmyrene': Script */
+static const OnigCodePoint
+CR_Palmyrene[] = { 1,
+0x10860, 0x1087f,
+}; /* END of CR_Palmyrene */
+
+/* PROPERTY: 'Pattern_Syntax': Binary Property */
+static const OnigCodePoint
+CR_Pattern_Syntax[] = { 28,
+0x0021, 0x002f,
+0x003a, 0x0040,
+0x005b, 0x005e,
+0x0060, 0x0060,
+0x007b, 0x007e,
+0x00a1, 0x00a7,
+0x00a9, 0x00a9,
+0x00ab, 0x00ac,
+0x00ae, 0x00ae,
+0x00b0, 0x00b1,
+0x00b6, 0x00b6,
+0x00bb, 0x00bb,
+0x00bf, 0x00bf,
+0x00d7, 0x00d7,
+0x00f7, 0x00f7,
+0x2010, 0x2027,
+0x2030, 0x203e,
+0x2041, 0x2053,
+0x2055, 0x205e,
+0x2190, 0x245f,
+0x2500, 0x2775,
+0x2794, 0x2bff,
+0x2e00, 0x2e7f,
+0x3001, 0x3003,
+0x3008, 0x3020,
+0x3030, 0x3030,
+0xfd3e, 0xfd3f,
+0xfe45, 0xfe46,
+}; /* END of CR_Pattern_Syntax */
+
+/* PROPERTY: 'Pattern_White_Space': Binary Property */
+static const OnigCodePoint
+CR_Pattern_White_Space[] = { 5,
+0x0009, 0x000d,
+0x0020, 0x0020,
+0x0085, 0x0085,
+0x200e, 0x200f,
+0x2028, 0x2029,
+}; /* END of CR_Pattern_White_Space */
+
+/* PROPERTY: 'Pau_Cin_Hau': Script */
+static const OnigCodePoint
+CR_Pau_Cin_Hau[] = { 1,
+0x11ac0, 0x11af8,
+}; /* END of CR_Pau_Cin_Hau */
+
/* PROPERTY: 'Pc': General Category */
static const OnigCodePoint
CR_Pc[] = { 6,
@@ -10134,6 +17622,19 @@ CR_Pf[] = { 10,
0x2e21, 0x2e21,
}; /* END of CR_Pf */
+/* PROPERTY: 'Phags_Pa': Script */
+static const OnigCodePoint
+CR_Phags_Pa[] = { 1,
+0xa840, 0xa877,
+}; /* END of CR_Phags_Pa */
+
+/* PROPERTY: 'Phoenician': Script */
+static const OnigCodePoint
+CR_Phoenician[] = { 2,
+0x10900, 0x1091b,
+0x1091f, 0x1091f,
+}; /* END of CR_Phoenician */
+
/* PROPERTY: 'Pi': General Category */
static const OnigCodePoint
CR_Pi[] = { 11,
@@ -10392,6 +17893,54 @@ CR_Ps[] = { 75,
0xff62, 0xff62,
}; /* END of CR_Ps */
+/* PROPERTY: 'Psalter_Pahlavi': Script */
+static const OnigCodePoint
+CR_Psalter_Pahlavi[] = { 3,
+0x10b80, 0x10b91,
+0x10b99, 0x10b9c,
+0x10ba9, 0x10baf,
+}; /* END of CR_Psalter_Pahlavi */
+
+/* PROPERTY: 'Quotation_Mark': Binary Property */
+static const OnigCodePoint
+CR_Quotation_Mark[] = { 13,
+0x0022, 0x0022,
+0x0027, 0x0027,
+0x00ab, 0x00ab,
+0x00bb, 0x00bb,
+0x2018, 0x201f,
+0x2039, 0x203a,
+0x2e42, 0x2e42,
+0x300c, 0x300f,
+0x301d, 0x301f,
+0xfe41, 0xfe44,
+0xff02, 0xff02,
+0xff07, 0xff07,
+0xff62, 0xff63,
+}; /* END of CR_Quotation_Mark */
+
+/* PROPERTY: 'Radical': Binary Property */
+static const OnigCodePoint
+CR_Radical[] = { 3,
+0x2e80, 0x2e99,
+0x2e9b, 0x2ef3,
+0x2f00, 0x2fd5,
+}; /* END of CR_Radical */
+
+/* PROPERTY: 'Rejang': Script */
+static const OnigCodePoint
+CR_Rejang[] = { 2,
+0xa930, 0xa953,
+0xa95f, 0xa95f,
+}; /* END of CR_Rejang */
+
+/* PROPERTY: 'Runic': Script */
+static const OnigCodePoint
+CR_Runic[] = { 2,
+0x16a0, 0x16ea,
+0x16ee, 0x16f8,
+}; /* END of CR_Runic */
+
/* PROPERTY: 'S': Major Category */
static const OnigCodePoint
CR_S[] = { 214,
@@ -10611,6 +18160,89 @@ CR_S[] = { 214,
0x1f9c0, 0x1f9c0,
}; /* END of CR_S */
+/* PROPERTY: 'STerm': Binary Property */
+static const OnigCodePoint
+CR_STerm[] = { 64,
+0x0021, 0x0021,
+0x002e, 0x002e,
+0x003f, 0x003f,
+0x0589, 0x0589,
+0x061f, 0x061f,
+0x06d4, 0x06d4,
+0x0700, 0x0702,
+0x07f9, 0x07f9,
+0x0964, 0x0965,
+0x104a, 0x104b,
+0x1362, 0x1362,
+0x1367, 0x1368,
+0x166e, 0x166e,
+0x1735, 0x1736,
+0x1803, 0x1803,
+0x1809, 0x1809,
+0x1944, 0x1945,
+0x1aa8, 0x1aab,
+0x1b5a, 0x1b5b,
+0x1b5e, 0x1b5f,
+0x1c3b, 0x1c3c,
+0x1c7e, 0x1c7f,
+0x203c, 0x203d,
+0x2047, 0x2049,
+0x2e2e, 0x2e2e,
+0x2e3c, 0x2e3c,
+0x3002, 0x3002,
+0xa4ff, 0xa4ff,
+0xa60e, 0xa60f,
+0xa6f3, 0xa6f3,
+0xa6f7, 0xa6f7,
+0xa876, 0xa877,
+0xa8ce, 0xa8cf,
+0xa92f, 0xa92f,
+0xa9c8, 0xa9c9,
+0xaa5d, 0xaa5f,
+0xaaf0, 0xaaf1,
+0xabeb, 0xabeb,
+0xfe52, 0xfe52,
+0xfe56, 0xfe57,
+0xff01, 0xff01,
+0xff0e, 0xff0e,
+0xff1f, 0xff1f,
+0xff61, 0xff61,
+0x10a56, 0x10a57,
+0x11047, 0x11048,
+0x110be, 0x110c1,
+0x11141, 0x11143,
+0x111c5, 0x111c6,
+0x111cd, 0x111cd,
+0x111de, 0x111df,
+0x11238, 0x11239,
+0x1123b, 0x1123c,
+0x112a9, 0x112a9,
+0x115c2, 0x115c3,
+0x115c9, 0x115d7,
+0x11641, 0x11642,
+0x1173c, 0x1173e,
+0x16a6e, 0x16a6f,
+0x16af5, 0x16af5,
+0x16b37, 0x16b38,
+0x16b44, 0x16b44,
+0x1bc9f, 0x1bc9f,
+0x1da88, 0x1da88,
+}; /* END of CR_STerm */
+
+/* PROPERTY: 'Samaritan': Script */
+static const OnigCodePoint
+CR_Samaritan[] = { 2,
+0x0800, 0x082d,
+0x0830, 0x083e,
+}; /* END of CR_Samaritan */
+
+/* PROPERTY: 'Saurashtra': Script */
+static const OnigCodePoint
+CR_Saurashtra[] = { 2,
+0xa880, 0xa8c4,
+0xa8ce, 0xa8d9,
+}; /* END of CR_Saurashtra */
+
/* PROPERTY: 'Sc': General Category */
static const OnigCodePoint
CR_Sc[] = { 17,
@@ -10633,6 +18265,52 @@ CR_Sc[] = { 17,
0xffe5, 0xffe6,
}; /* END of CR_Sc */
+/* PROPERTY: 'Sharada': Script */
+static const OnigCodePoint
+CR_Sharada[] = { 2,
+0x11180, 0x111cd,
+0x111d0, 0x111df,
+}; /* END of CR_Sharada */
+
+/* PROPERTY: 'Shavian': Script */
+static const OnigCodePoint
+CR_Shavian[] = { 1,
+0x10450, 0x1047f,
+}; /* END of CR_Shavian */
+
+/* PROPERTY: 'Siddham': Script */
+static const OnigCodePoint
+CR_Siddham[] = { 2,
+0x11580, 0x115b5,
+0x115b8, 0x115dd,
+}; /* END of CR_Siddham */
+
+/* PROPERTY: 'SignWriting': Script */
+static const OnigCodePoint
+CR_SignWriting[] = { 3,
+0x1d800, 0x1da8b,
+0x1da9b, 0x1da9f,
+0x1daa1, 0x1daaf,
+}; /* END of CR_SignWriting */
+
+/* PROPERTY: 'Sinhala': Script */
+static const OnigCodePoint
+CR_Sinhala[] = { 13,
+0x0d82, 0x0d83,
+0x0d85, 0x0d96,
+0x0d9a, 0x0db1,
+0x0db3, 0x0dbb,
+0x0dbd, 0x0dbd,
+0x0dc0, 0x0dc6,
+0x0dca, 0x0dca,
+0x0dcf, 0x0dd4,
+0x0dd6, 0x0dd6,
+0x0dd8, 0x0ddf,
+0x0de6, 0x0def,
+0x0df2, 0x0df4,
+0x111e1, 0x111f4,
+}; /* END of CR_Sinhala */
+
/* PROPERTY: 'Sk': General Category */
static const OnigCodePoint
CR_Sk[] = { 29,
@@ -10911,3318 +18589,120 @@ CR_So[] = { 170,
0x1f9c0, 0x1f9c0,
}; /* END of CR_So */
-/* PROPERTY: 'Z': Major Category */
+/* PROPERTY: 'Soft_Dotted': Binary Property */
static const OnigCodePoint
-CR_Z[] = { 8,
-0x0020, 0x0020,
-0x00a0, 0x00a0,
-0x1680, 0x1680,
-0x2000, 0x200a,
-0x2028, 0x2029,
-0x202f, 0x202f,
-0x205f, 0x205f,
-0x3000, 0x3000,
-}; /* END of CR_Z */
+CR_Soft_Dotted[] = { 31,
+0x0069, 0x006a,
+0x012f, 0x012f,
+0x0249, 0x0249,
+0x0268, 0x0268,
+0x029d, 0x029d,
+0x02b2, 0x02b2,
+0x03f3, 0x03f3,
+0x0456, 0x0456,
+0x0458, 0x0458,
+0x1d62, 0x1d62,
+0x1d96, 0x1d96,
+0x1da4, 0x1da4,
+0x1da8, 0x1da8,
+0x1e2d, 0x1e2d,
+0x1ecb, 0x1ecb,
+0x2071, 0x2071,
+0x2148, 0x2149,
+0x2c7c, 0x2c7c,
+0x1d422, 0x1d423,
+0x1d456, 0x1d457,
+0x1d48a, 0x1d48b,
+0x1d4be, 0x1d4bf,
+0x1d4f2, 0x1d4f3,
+0x1d526, 0x1d527,
+0x1d55a, 0x1d55b,
+0x1d58e, 0x1d58f,
+0x1d5c2, 0x1d5c3,
+0x1d5f6, 0x1d5f7,
+0x1d62a, 0x1d62b,
+0x1d65e, 0x1d65f,
+0x1d692, 0x1d693,
+}; /* END of CR_Soft_Dotted */
-/* PROPERTY: 'Zl': General Category */
+/* PROPERTY: 'Sora_Sompeng': Script */
static const OnigCodePoint
-CR_Zl[] = { 1,
-0x2028, 0x2028,
-}; /* END of CR_Zl */
+CR_Sora_Sompeng[] = { 2,
+0x110d0, 0x110e8,
+0x110f0, 0x110f9,
+}; /* END of CR_Sora_Sompeng */
-/* PROPERTY: 'Zp': General Category */
+/* PROPERTY: 'Sundanese': Script */
static const OnigCodePoint
-CR_Zp[] = { 1,
-0x2029, 0x2029,
-}; /* END of CR_Zp */
+CR_Sundanese[] = { 2,
+0x1b80, 0x1bbf,
+0x1cc0, 0x1cc7,
+}; /* END of CR_Sundanese */
-/* PROPERTY: 'Zs': General Category */
+/* PROPERTY: 'Syloti_Nagri': Script */
static const OnigCodePoint
-CR_Zs[] = { 7,
-0x0020, 0x0020,
-0x00a0, 0x00a0,
-0x1680, 0x1680,
-0x2000, 0x200a,
-0x202f, 0x202f,
-0x205f, 0x205f,
-0x3000, 0x3000,
-}; /* END of CR_Zs */
+CR_Syloti_Nagri[] = { 1,
+0xa800, 0xa82b,
+}; /* END of CR_Syloti_Nagri */
-/* PROPERTY: 'Math': Derived Property */
+/* PROPERTY: 'Syriac': Script */
static const OnigCodePoint
-CR_Math[] = { 138,
-0x002b, 0x002b,
-0x003c, 0x003e,
-0x005e, 0x005e,
-0x007c, 0x007c,
-0x007e, 0x007e,
-0x00ac, 0x00ac,
-0x00b1, 0x00b1,
-0x00d7, 0x00d7,
-0x00f7, 0x00f7,
-0x03d0, 0x03d2,
-0x03d5, 0x03d5,
-0x03f0, 0x03f1,
-0x03f4, 0x03f6,
-0x0606, 0x0608,
-0x2016, 0x2016,
-0x2032, 0x2034,
-0x2040, 0x2040,
-0x2044, 0x2044,
-0x2052, 0x2052,
-0x2061, 0x2064,
-0x207a, 0x207e,
-0x208a, 0x208e,
-0x20d0, 0x20dc,
-0x20e1, 0x20e1,
-0x20e5, 0x20e6,
-0x20eb, 0x20ef,
-0x2102, 0x2102,
-0x2107, 0x2107,
-0x210a, 0x2113,
-0x2115, 0x2115,
-0x2118, 0x211d,
-0x2124, 0x2124,
-0x2128, 0x2129,
-0x212c, 0x212d,
-0x212f, 0x2131,
-0x2133, 0x2138,
-0x213c, 0x2149,
-0x214b, 0x214b,
-0x2190, 0x21a7,
-0x21a9, 0x21ae,
-0x21b0, 0x21b1,
-0x21b6, 0x21b7,
-0x21bc, 0x21db,
-0x21dd, 0x21dd,
-0x21e4, 0x21e5,
-0x21f4, 0x22ff,
-0x2308, 0x230b,
-0x2320, 0x2321,
-0x237c, 0x237c,
-0x239b, 0x23b5,
-0x23b7, 0x23b7,
-0x23d0, 0x23d0,
-0x23dc, 0x23e2,
-0x25a0, 0x25a1,
-0x25ae, 0x25b7,
-0x25bc, 0x25c1,
-0x25c6, 0x25c7,
-0x25ca, 0x25cb,
-0x25cf, 0x25d3,
-0x25e2, 0x25e2,
-0x25e4, 0x25e4,
-0x25e7, 0x25ec,
-0x25f8, 0x25ff,
-0x2605, 0x2606,
-0x2640, 0x2640,
-0x2642, 0x2642,
-0x2660, 0x2663,
-0x266d, 0x266f,
-0x27c0, 0x27ff,
-0x2900, 0x2aff,
-0x2b30, 0x2b44,
-0x2b47, 0x2b4c,
-0xfb29, 0xfb29,
-0xfe61, 0xfe66,
-0xfe68, 0xfe68,
-0xff0b, 0xff0b,
-0xff1c, 0xff1e,
-0xff3c, 0xff3c,
-0xff3e, 0xff3e,
-0xff5c, 0xff5c,
-0xff5e, 0xff5e,
-0xffe2, 0xffe2,
-0xffe9, 0xffec,
-0x1d400, 0x1d454,
-0x1d456, 0x1d49c,
-0x1d49e, 0x1d49f,
-0x1d4a2, 0x1d4a2,
-0x1d4a5, 0x1d4a6,
-0x1d4a9, 0x1d4ac,
-0x1d4ae, 0x1d4b9,
-0x1d4bb, 0x1d4bb,
-0x1d4bd, 0x1d4c3,
-0x1d4c5, 0x1d505,
-0x1d507, 0x1d50a,
-0x1d50d, 0x1d514,
-0x1d516, 0x1d51c,
-0x1d51e, 0x1d539,
-0x1d53b, 0x1d53e,
-0x1d540, 0x1d544,
-0x1d546, 0x1d546,
-0x1d54a, 0x1d550,
-0x1d552, 0x1d6a5,
-0x1d6a8, 0x1d7cb,
-0x1d7ce, 0x1d7ff,
-0x1ee00, 0x1ee03,
-0x1ee05, 0x1ee1f,
-0x1ee21, 0x1ee22,
-0x1ee24, 0x1ee24,
-0x1ee27, 0x1ee27,
-0x1ee29, 0x1ee32,
-0x1ee34, 0x1ee37,
-0x1ee39, 0x1ee39,
-0x1ee3b, 0x1ee3b,
-0x1ee42, 0x1ee42,
-0x1ee47, 0x1ee47,
-0x1ee49, 0x1ee49,
-0x1ee4b, 0x1ee4b,
-0x1ee4d, 0x1ee4f,
-0x1ee51, 0x1ee52,
-0x1ee54, 0x1ee54,
-0x1ee57, 0x1ee57,
-0x1ee59, 0x1ee59,
-0x1ee5b, 0x1ee5b,
-0x1ee5d, 0x1ee5d,
-0x1ee5f, 0x1ee5f,
-0x1ee61, 0x1ee62,
-0x1ee64, 0x1ee64,
-0x1ee67, 0x1ee6a,
-0x1ee6c, 0x1ee72,
-0x1ee74, 0x1ee77,
-0x1ee79, 0x1ee7c,
-0x1ee7e, 0x1ee7e,
-0x1ee80, 0x1ee89,
-0x1ee8b, 0x1ee9b,
-0x1eea1, 0x1eea3,
-0x1eea5, 0x1eea9,
-0x1eeab, 0x1eebb,
-0x1eef0, 0x1eef1,
-}; /* END of CR_Math */
-
-/* PROPERTY: 'Alphabetic': Derived Property */
-#define CR_Alphabetic CR_Alpha
-
-/* PROPERTY: 'Lowercase': Derived Property */
-#define CR_Lowercase CR_Lower
-
-/* PROPERTY: 'Uppercase': Derived Property */
-#define CR_Uppercase CR_Upper
+CR_Syriac[] = { 3,
+0x0700, 0x070d,
+0x070f, 0x074a,
+0x074d, 0x074f,
+}; /* END of CR_Syriac */
-/* PROPERTY: 'Cased': Derived Property */
+/* PROPERTY: 'Tagalog': Script */
static const OnigCodePoint
-CR_Cased[] = { 131,
-0x0041, 0x005a,
-0x0061, 0x007a,
-0x00aa, 0x00aa,
-0x00b5, 0x00b5,
-0x00ba, 0x00ba,
-0x00c0, 0x00d6,
-0x00d8, 0x00f6,
-0x00f8, 0x01ba,
-0x01bc, 0x01bf,
-0x01c4, 0x0293,
-0x0295, 0x02b8,
-0x02c0, 0x02c1,
-0x02e0, 0x02e4,
-0x0345, 0x0345,
-0x0370, 0x0373,
-0x0376, 0x0377,
-0x037a, 0x037d,
-0x037f, 0x037f,
-0x0386, 0x0386,
-0x0388, 0x038a,
-0x038c, 0x038c,
-0x038e, 0x03a1,
-0x03a3, 0x03f5,
-0x03f7, 0x0481,
-0x048a, 0x052f,
-0x0531, 0x0556,
-0x0561, 0x0587,
-0x10a0, 0x10c5,
-0x10c7, 0x10c7,
-0x10cd, 0x10cd,
-0x13a0, 0x13f5,
-0x13f8, 0x13fd,
-0x1d00, 0x1dbf,
-0x1e00, 0x1f15,
-0x1f18, 0x1f1d,
-0x1f20, 0x1f45,
-0x1f48, 0x1f4d,
-0x1f50, 0x1f57,
-0x1f59, 0x1f59,
-0x1f5b, 0x1f5b,
-0x1f5d, 0x1f5d,
-0x1f5f, 0x1f7d,
-0x1f80, 0x1fb4,
-0x1fb6, 0x1fbc,
-0x1fbe, 0x1fbe,
-0x1fc2, 0x1fc4,
-0x1fc6, 0x1fcc,
-0x1fd0, 0x1fd3,
-0x1fd6, 0x1fdb,
-0x1fe0, 0x1fec,
-0x1ff2, 0x1ff4,
-0x1ff6, 0x1ffc,
-0x2071, 0x2071,
-0x207f, 0x207f,
-0x2090, 0x209c,
-0x2102, 0x2102,
-0x2107, 0x2107,
-0x210a, 0x2113,
-0x2115, 0x2115,
-0x2119, 0x211d,
-0x2124, 0x2124,
-0x2126, 0x2126,
-0x2128, 0x2128,
-0x212a, 0x212d,
-0x212f, 0x2134,
-0x2139, 0x2139,
-0x213c, 0x213f,
-0x2145, 0x2149,
-0x214e, 0x214e,
-0x2160, 0x217f,
-0x2183, 0x2184,
-0x24b6, 0x24e9,
-0x2c00, 0x2c2e,
-0x2c30, 0x2c5e,
-0x2c60, 0x2ce4,
-0x2ceb, 0x2cee,
-0x2cf2, 0x2cf3,
-0x2d00, 0x2d25,
-0x2d27, 0x2d27,
-0x2d2d, 0x2d2d,
-0xa640, 0xa66d,
-0xa680, 0xa69d,
-0xa722, 0xa787,
-0xa78b, 0xa78e,
-0xa790, 0xa7ad,
-0xa7b0, 0xa7b7,
-0xa7f8, 0xa7fa,
-0xab30, 0xab5a,
-0xab5c, 0xab65,
-0xab70, 0xabbf,
-0xfb00, 0xfb06,
-0xfb13, 0xfb17,
-0xff21, 0xff3a,
-0xff41, 0xff5a,
-0x10400, 0x1044f,
-0x10c80, 0x10cb2,
-0x10cc0, 0x10cf2,
-0x118a0, 0x118df,
-0x1d400, 0x1d454,
-0x1d456, 0x1d49c,
-0x1d49e, 0x1d49f,
-0x1d4a2, 0x1d4a2,
-0x1d4a5, 0x1d4a6,
-0x1d4a9, 0x1d4ac,
-0x1d4ae, 0x1d4b9,
-0x1d4bb, 0x1d4bb,
-0x1d4bd, 0x1d4c3,
-0x1d4c5, 0x1d505,
-0x1d507, 0x1d50a,
-0x1d50d, 0x1d514,
-0x1d516, 0x1d51c,
-0x1d51e, 0x1d539,
-0x1d53b, 0x1d53e,
-0x1d540, 0x1d544,
-0x1d546, 0x1d546,
-0x1d54a, 0x1d550,
-0x1d552, 0x1d6a5,
-0x1d6a8, 0x1d6c0,
-0x1d6c2, 0x1d6da,
-0x1d6dc, 0x1d6fa,
-0x1d6fc, 0x1d714,
-0x1d716, 0x1d734,
-0x1d736, 0x1d74e,
-0x1d750, 0x1d76e,
-0x1d770, 0x1d788,
-0x1d78a, 0x1d7a8,
-0x1d7aa, 0x1d7c2,
-0x1d7c4, 0x1d7cb,
-0x1f130, 0x1f149,
-0x1f150, 0x1f169,
-0x1f170, 0x1f189,
-}; /* END of CR_Cased */
+CR_Tagalog[] = { 2,
+0x1700, 0x170c,
+0x170e, 0x1714,
+}; /* END of CR_Tagalog */
-/* PROPERTY: 'Case_Ignorable': Derived Property */
+/* PROPERTY: 'Tagbanwa': Script */
static const OnigCodePoint
-CR_Case_Ignorable[] = { 346,
-0x0027, 0x0027,
-0x002e, 0x002e,
-0x003a, 0x003a,
-0x005e, 0x005e,
-0x0060, 0x0060,
-0x00a8, 0x00a8,
-0x00ad, 0x00ad,
-0x00af, 0x00af,
-0x00b4, 0x00b4,
-0x00b7, 0x00b8,
-0x02b0, 0x036f,
-0x0374, 0x0375,
-0x037a, 0x037a,
-0x0384, 0x0385,
-0x0387, 0x0387,
-0x0483, 0x0489,
-0x0559, 0x0559,
-0x0591, 0x05bd,
-0x05bf, 0x05bf,
-0x05c1, 0x05c2,
-0x05c4, 0x05c5,
-0x05c7, 0x05c7,
-0x05f4, 0x05f4,
-0x0600, 0x0605,
-0x0610, 0x061a,
-0x061c, 0x061c,
-0x0640, 0x0640,
-0x064b, 0x065f,
-0x0670, 0x0670,
-0x06d6, 0x06dd,
-0x06df, 0x06e8,
-0x06ea, 0x06ed,
-0x070f, 0x070f,
-0x0711, 0x0711,
-0x0730, 0x074a,
-0x07a6, 0x07b0,
-0x07eb, 0x07f5,
-0x07fa, 0x07fa,
-0x0816, 0x082d,
-0x0859, 0x085b,
-0x08e3, 0x0902,
-0x093a, 0x093a,
-0x093c, 0x093c,
-0x0941, 0x0948,
-0x094d, 0x094d,
-0x0951, 0x0957,
-0x0962, 0x0963,
-0x0971, 0x0971,
-0x0981, 0x0981,
-0x09bc, 0x09bc,
-0x09c1, 0x09c4,
-0x09cd, 0x09cd,
-0x09e2, 0x09e3,
-0x0a01, 0x0a02,
-0x0a3c, 0x0a3c,
-0x0a41, 0x0a42,
-0x0a47, 0x0a48,
-0x0a4b, 0x0a4d,
-0x0a51, 0x0a51,
-0x0a70, 0x0a71,
-0x0a75, 0x0a75,
-0x0a81, 0x0a82,
-0x0abc, 0x0abc,
-0x0ac1, 0x0ac5,
-0x0ac7, 0x0ac8,
-0x0acd, 0x0acd,
-0x0ae2, 0x0ae3,
-0x0b01, 0x0b01,
-0x0b3c, 0x0b3c,
-0x0b3f, 0x0b3f,
-0x0b41, 0x0b44,
-0x0b4d, 0x0b4d,
-0x0b56, 0x0b56,
-0x0b62, 0x0b63,
-0x0b82, 0x0b82,
-0x0bc0, 0x0bc0,
-0x0bcd, 0x0bcd,
-0x0c00, 0x0c00,
-0x0c3e, 0x0c40,
-0x0c46, 0x0c48,
-0x0c4a, 0x0c4d,
-0x0c55, 0x0c56,
-0x0c62, 0x0c63,
-0x0c81, 0x0c81,
-0x0cbc, 0x0cbc,
-0x0cbf, 0x0cbf,
-0x0cc6, 0x0cc6,
-0x0ccc, 0x0ccd,
-0x0ce2, 0x0ce3,
-0x0d01, 0x0d01,
-0x0d41, 0x0d44,
-0x0d4d, 0x0d4d,
-0x0d62, 0x0d63,
-0x0dca, 0x0dca,
-0x0dd2, 0x0dd4,
-0x0dd6, 0x0dd6,
-0x0e31, 0x0e31,
-0x0e34, 0x0e3a,
-0x0e46, 0x0e4e,
-0x0eb1, 0x0eb1,
-0x0eb4, 0x0eb9,
-0x0ebb, 0x0ebc,
-0x0ec6, 0x0ec6,
-0x0ec8, 0x0ecd,
-0x0f18, 0x0f19,
-0x0f35, 0x0f35,
-0x0f37, 0x0f37,
-0x0f39, 0x0f39,
-0x0f71, 0x0f7e,
-0x0f80, 0x0f84,
-0x0f86, 0x0f87,
-0x0f8d, 0x0f97,
-0x0f99, 0x0fbc,
-0x0fc6, 0x0fc6,
-0x102d, 0x1030,
-0x1032, 0x1037,
-0x1039, 0x103a,
-0x103d, 0x103e,
-0x1058, 0x1059,
-0x105e, 0x1060,
-0x1071, 0x1074,
-0x1082, 0x1082,
-0x1085, 0x1086,
-0x108d, 0x108d,
-0x109d, 0x109d,
-0x10fc, 0x10fc,
-0x135d, 0x135f,
-0x1712, 0x1714,
-0x1732, 0x1734,
-0x1752, 0x1753,
+CR_Tagbanwa[] = { 3,
+0x1760, 0x176c,
+0x176e, 0x1770,
0x1772, 0x1773,
-0x17b4, 0x17b5,
-0x17b7, 0x17bd,
-0x17c6, 0x17c6,
-0x17c9, 0x17d3,
-0x17d7, 0x17d7,
-0x17dd, 0x17dd,
-0x180b, 0x180e,
-0x1843, 0x1843,
-0x18a9, 0x18a9,
-0x1920, 0x1922,
-0x1927, 0x1928,
-0x1932, 0x1932,
-0x1939, 0x193b,
-0x1a17, 0x1a18,
-0x1a1b, 0x1a1b,
-0x1a56, 0x1a56,
-0x1a58, 0x1a5e,
-0x1a60, 0x1a60,
-0x1a62, 0x1a62,
-0x1a65, 0x1a6c,
-0x1a73, 0x1a7c,
-0x1a7f, 0x1a7f,
-0x1aa7, 0x1aa7,
-0x1ab0, 0x1abe,
-0x1b00, 0x1b03,
-0x1b34, 0x1b34,
-0x1b36, 0x1b3a,
-0x1b3c, 0x1b3c,
-0x1b42, 0x1b42,
-0x1b6b, 0x1b73,
-0x1b80, 0x1b81,
-0x1ba2, 0x1ba5,
-0x1ba8, 0x1ba9,
-0x1bab, 0x1bad,
-0x1be6, 0x1be6,
-0x1be8, 0x1be9,
-0x1bed, 0x1bed,
-0x1bef, 0x1bf1,
-0x1c2c, 0x1c33,
-0x1c36, 0x1c37,
-0x1c78, 0x1c7d,
-0x1cd0, 0x1cd2,
-0x1cd4, 0x1ce0,
-0x1ce2, 0x1ce8,
-0x1ced, 0x1ced,
-0x1cf4, 0x1cf4,
-0x1cf8, 0x1cf9,
-0x1d2c, 0x1d6a,
-0x1d78, 0x1d78,
-0x1d9b, 0x1df5,
-0x1dfc, 0x1dff,
-0x1fbd, 0x1fbd,
-0x1fbf, 0x1fc1,
-0x1fcd, 0x1fcf,
-0x1fdd, 0x1fdf,
-0x1fed, 0x1fef,
-0x1ffd, 0x1ffe,
-0x200b, 0x200f,
-0x2018, 0x2019,
-0x2024, 0x2024,
-0x2027, 0x2027,
-0x202a, 0x202e,
-0x2060, 0x2064,
-0x2066, 0x206f,
-0x2071, 0x2071,
-0x207f, 0x207f,
-0x2090, 0x209c,
-0x20d0, 0x20f0,
-0x2c7c, 0x2c7d,
-0x2cef, 0x2cf1,
-0x2d6f, 0x2d6f,
-0x2d7f, 0x2d7f,
-0x2de0, 0x2dff,
-0x2e2f, 0x2e2f,
-0x3005, 0x3005,
-0x302a, 0x302d,
-0x3031, 0x3035,
-0x303b, 0x303b,
-0x3099, 0x309e,
-0x30fc, 0x30fe,
-0xa015, 0xa015,
-0xa4f8, 0xa4fd,
-0xa60c, 0xa60c,
-0xa66f, 0xa672,
-0xa674, 0xa67d,
-0xa67f, 0xa67f,
-0xa69c, 0xa69f,
-0xa6f0, 0xa6f1,
-0xa700, 0xa721,
-0xa770, 0xa770,
-0xa788, 0xa78a,
-0xa7f8, 0xa7f9,
-0xa802, 0xa802,
-0xa806, 0xa806,
-0xa80b, 0xa80b,
-0xa825, 0xa826,
-0xa8c4, 0xa8c4,
-0xa8e0, 0xa8f1,
-0xa926, 0xa92d,
-0xa947, 0xa951,
-0xa980, 0xa982,
-0xa9b3, 0xa9b3,
-0xa9b6, 0xa9b9,
-0xa9bc, 0xa9bc,
-0xa9cf, 0xa9cf,
-0xa9e5, 0xa9e6,
-0xaa29, 0xaa2e,
-0xaa31, 0xaa32,
-0xaa35, 0xaa36,
-0xaa43, 0xaa43,
-0xaa4c, 0xaa4c,
-0xaa70, 0xaa70,
-0xaa7c, 0xaa7c,
-0xaab0, 0xaab0,
-0xaab2, 0xaab4,
-0xaab7, 0xaab8,
-0xaabe, 0xaabf,
-0xaac1, 0xaac1,
-0xaadd, 0xaadd,
-0xaaec, 0xaaed,
-0xaaf3, 0xaaf4,
-0xaaf6, 0xaaf6,
-0xab5b, 0xab5f,
-0xabe5, 0xabe5,
-0xabe8, 0xabe8,
-0xabed, 0xabed,
-0xfb1e, 0xfb1e,
-0xfbb2, 0xfbc1,
-0xfe00, 0xfe0f,
-0xfe13, 0xfe13,
-0xfe20, 0xfe2f,
-0xfe52, 0xfe52,
-0xfe55, 0xfe55,
-0xfeff, 0xfeff,
-0xff07, 0xff07,
-0xff0e, 0xff0e,
-0xff1a, 0xff1a,
-0xff3e, 0xff3e,
-0xff40, 0xff40,
-0xff70, 0xff70,
-0xff9e, 0xff9f,
-0xffe3, 0xffe3,
-0xfff9, 0xfffb,
-0x101fd, 0x101fd,
-0x102e0, 0x102e0,
-0x10376, 0x1037a,
-0x10a01, 0x10a03,
-0x10a05, 0x10a06,
-0x10a0c, 0x10a0f,
-0x10a38, 0x10a3a,
-0x10a3f, 0x10a3f,
-0x10ae5, 0x10ae6,
-0x11001, 0x11001,
-0x11038, 0x11046,
-0x1107f, 0x11081,
-0x110b3, 0x110b6,
-0x110b9, 0x110ba,
-0x110bd, 0x110bd,
-0x11100, 0x11102,
-0x11127, 0x1112b,
-0x1112d, 0x11134,
-0x11173, 0x11173,
-0x11180, 0x11181,
-0x111b6, 0x111be,
-0x111ca, 0x111cc,
-0x1122f, 0x11231,
-0x11234, 0x11234,
-0x11236, 0x11237,
-0x112df, 0x112df,
-0x112e3, 0x112ea,
-0x11300, 0x11301,
-0x1133c, 0x1133c,
-0x11340, 0x11340,
-0x11366, 0x1136c,
-0x11370, 0x11374,
-0x114b3, 0x114b8,
-0x114ba, 0x114ba,
-0x114bf, 0x114c0,
-0x114c2, 0x114c3,
-0x115b2, 0x115b5,
-0x115bc, 0x115bd,
-0x115bf, 0x115c0,
-0x115dc, 0x115dd,
-0x11633, 0x1163a,
-0x1163d, 0x1163d,
-0x1163f, 0x11640,
-0x116ab, 0x116ab,
-0x116ad, 0x116ad,
-0x116b0, 0x116b5,
-0x116b7, 0x116b7,
-0x1171d, 0x1171f,
-0x11722, 0x11725,
-0x11727, 0x1172b,
-0x16af0, 0x16af4,
-0x16b30, 0x16b36,
-0x16b40, 0x16b43,
-0x16f8f, 0x16f9f,
-0x1bc9d, 0x1bc9e,
-0x1bca0, 0x1bca3,
-0x1d167, 0x1d169,
-0x1d173, 0x1d182,
-0x1d185, 0x1d18b,
-0x1d1aa, 0x1d1ad,
-0x1d242, 0x1d244,
-0x1da00, 0x1da36,
-0x1da3b, 0x1da6c,
-0x1da75, 0x1da75,
-0x1da84, 0x1da84,
-0x1da9b, 0x1da9f,
-0x1daa1, 0x1daaf,
-0x1e8d0, 0x1e8d6,
-0x1f3fb, 0x1f3ff,
-0xe0001, 0xe0001,
-0xe0020, 0xe007f,
-0xe0100, 0xe01ef,
-}; /* END of CR_Case_Ignorable */
-
-/* PROPERTY: 'Changes_When_Lowercased': Derived Property */
-static const OnigCodePoint
-CR_Changes_When_Lowercased[] = { 588,
-0x0041, 0x005a,
-0x00c0, 0x00d6,
-0x00d8, 0x00de,
-0x0100, 0x0100,
-0x0102, 0x0102,
-0x0104, 0x0104,
-0x0106, 0x0106,
-0x0108, 0x0108,
-0x010a, 0x010a,
-0x010c, 0x010c,
-0x010e, 0x010e,
-0x0110, 0x0110,
-0x0112, 0x0112,
-0x0114, 0x0114,
-0x0116, 0x0116,
-0x0118, 0x0118,
-0x011a, 0x011a,
-0x011c, 0x011c,
-0x011e, 0x011e,
-0x0120, 0x0120,
-0x0122, 0x0122,
-0x0124, 0x0124,
-0x0126, 0x0126,
-0x0128, 0x0128,
-0x012a, 0x012a,
-0x012c, 0x012c,
-0x012e, 0x012e,
-0x0130, 0x0130,
-0x0132, 0x0132,
-0x0134, 0x0134,
-0x0136, 0x0136,
-0x0139, 0x0139,
-0x013b, 0x013b,
-0x013d, 0x013d,
-0x013f, 0x013f,
-0x0141, 0x0141,
-0x0143, 0x0143,
-0x0145, 0x0145,
-0x0147, 0x0147,
-0x014a, 0x014a,
-0x014c, 0x014c,
-0x014e, 0x014e,
-0x0150, 0x0150,
-0x0152, 0x0152,
-0x0154, 0x0154,
-0x0156, 0x0156,
-0x0158, 0x0158,
-0x015a, 0x015a,
-0x015c, 0x015c,
-0x015e, 0x015e,
-0x0160, 0x0160,
-0x0162, 0x0162,
-0x0164, 0x0164,
-0x0166, 0x0166,
-0x0168, 0x0168,
-0x016a, 0x016a,
-0x016c, 0x016c,
-0x016e, 0x016e,
-0x0170, 0x0170,
-0x0172, 0x0172,
-0x0174, 0x0174,
-0x0176, 0x0176,
-0x0178, 0x0179,
-0x017b, 0x017b,
-0x017d, 0x017d,
-0x0181, 0x0182,
-0x0184, 0x0184,
-0x0186, 0x0187,
-0x0189, 0x018b,
-0x018e, 0x0191,
-0x0193, 0x0194,
-0x0196, 0x0198,
-0x019c, 0x019d,
-0x019f, 0x01a0,
-0x01a2, 0x01a2,
-0x01a4, 0x01a4,
-0x01a6, 0x01a7,
-0x01a9, 0x01a9,
-0x01ac, 0x01ac,
-0x01ae, 0x01af,
-0x01b1, 0x01b3,
-0x01b5, 0x01b5,
-0x01b7, 0x01b8,
-0x01bc, 0x01bc,
-0x01c4, 0x01c5,
-0x01c7, 0x01c8,
-0x01ca, 0x01cb,
-0x01cd, 0x01cd,
-0x01cf, 0x01cf,
-0x01d1, 0x01d1,
-0x01d3, 0x01d3,
-0x01d5, 0x01d5,
-0x01d7, 0x01d7,
-0x01d9, 0x01d9,
-0x01db, 0x01db,
-0x01de, 0x01de,
-0x01e0, 0x01e0,
-0x01e2, 0x01e2,
-0x01e4, 0x01e4,
-0x01e6, 0x01e6,
-0x01e8, 0x01e8,
-0x01ea, 0x01ea,
-0x01ec, 0x01ec,
-0x01ee, 0x01ee,
-0x01f1, 0x01f2,
-0x01f4, 0x01f4,
-0x01f6, 0x01f8,
-0x01fa, 0x01fa,
-0x01fc, 0x01fc,
-0x01fe, 0x01fe,
-0x0200, 0x0200,
-0x0202, 0x0202,
-0x0204, 0x0204,
-0x0206, 0x0206,
-0x0208, 0x0208,
-0x020a, 0x020a,
-0x020c, 0x020c,
-0x020e, 0x020e,
-0x0210, 0x0210,
-0x0212, 0x0212,
-0x0214, 0x0214,
-0x0216, 0x0216,
-0x0218, 0x0218,
-0x021a, 0x021a,
-0x021c, 0x021c,
-0x021e, 0x021e,
-0x0220, 0x0220,
-0x0222, 0x0222,
-0x0224, 0x0224,
-0x0226, 0x0226,
-0x0228, 0x0228,
-0x022a, 0x022a,
-0x022c, 0x022c,
-0x022e, 0x022e,
-0x0230, 0x0230,
-0x0232, 0x0232,
-0x023a, 0x023b,
-0x023d, 0x023e,
-0x0241, 0x0241,
-0x0243, 0x0246,
-0x0248, 0x0248,
-0x024a, 0x024a,
-0x024c, 0x024c,
-0x024e, 0x024e,
-0x0370, 0x0370,
-0x0372, 0x0372,
-0x0376, 0x0376,
-0x037f, 0x037f,
-0x0386, 0x0386,
-0x0388, 0x038a,
-0x038c, 0x038c,
-0x038e, 0x038f,
-0x0391, 0x03a1,
-0x03a3, 0x03ab,
-0x03cf, 0x03cf,
-0x03d8, 0x03d8,
-0x03da, 0x03da,
-0x03dc, 0x03dc,
-0x03de, 0x03de,
-0x03e0, 0x03e0,
-0x03e2, 0x03e2,
-0x03e4, 0x03e4,
-0x03e6, 0x03e6,
-0x03e8, 0x03e8,
-0x03ea, 0x03ea,
-0x03ec, 0x03ec,
-0x03ee, 0x03ee,
-0x03f4, 0x03f4,
-0x03f7, 0x03f7,
-0x03f9, 0x03fa,
-0x03fd, 0x042f,
-0x0460, 0x0460,
-0x0462, 0x0462,
-0x0464, 0x0464,
-0x0466, 0x0466,
-0x0468, 0x0468,
-0x046a, 0x046a,
-0x046c, 0x046c,
-0x046e, 0x046e,
-0x0470, 0x0470,
-0x0472, 0x0472,
-0x0474, 0x0474,
-0x0476, 0x0476,
-0x0478, 0x0478,
-0x047a, 0x047a,
-0x047c, 0x047c,
-0x047e, 0x047e,
-0x0480, 0x0480,
-0x048a, 0x048a,
-0x048c, 0x048c,
-0x048e, 0x048e,
-0x0490, 0x0490,
-0x0492, 0x0492,
-0x0494, 0x0494,
-0x0496, 0x0496,
-0x0498, 0x0498,
-0x049a, 0x049a,
-0x049c, 0x049c,
-0x049e, 0x049e,
-0x04a0, 0x04a0,
-0x04a2, 0x04a2,
-0x04a4, 0x04a4,
-0x04a6, 0x04a6,
-0x04a8, 0x04a8,
-0x04aa, 0x04aa,
-0x04ac, 0x04ac,
-0x04ae, 0x04ae,
-0x04b0, 0x04b0,
-0x04b2, 0x04b2,
-0x04b4, 0x04b4,
-0x04b6, 0x04b6,
-0x04b8, 0x04b8,
-0x04ba, 0x04ba,
-0x04bc, 0x04bc,
-0x04be, 0x04be,
-0x04c0, 0x04c1,
-0x04c3, 0x04c3,
-0x04c5, 0x04c5,
-0x04c7, 0x04c7,
-0x04c9, 0x04c9,
-0x04cb, 0x04cb,
-0x04cd, 0x04cd,
-0x04d0, 0x04d0,
-0x04d2, 0x04d2,
-0x04d4, 0x04d4,
-0x04d6, 0x04d6,
-0x04d8, 0x04d8,
-0x04da, 0x04da,
-0x04dc, 0x04dc,
-0x04de, 0x04de,
-0x04e0, 0x04e0,
-0x04e2, 0x04e2,
-0x04e4, 0x04e4,
-0x04e6, 0x04e6,
-0x04e8, 0x04e8,
-0x04ea, 0x04ea,
-0x04ec, 0x04ec,
-0x04ee, 0x04ee,
-0x04f0, 0x04f0,
-0x04f2, 0x04f2,
-0x04f4, 0x04f4,
-0x04f6, 0x04f6,
-0x04f8, 0x04f8,
-0x04fa, 0x04fa,
-0x04fc, 0x04fc,
-0x04fe, 0x04fe,
-0x0500, 0x0500,
-0x0502, 0x0502,
-0x0504, 0x0504,
-0x0506, 0x0506,
-0x0508, 0x0508,
-0x050a, 0x050a,
-0x050c, 0x050c,
-0x050e, 0x050e,
-0x0510, 0x0510,
-0x0512, 0x0512,
-0x0514, 0x0514,
-0x0516, 0x0516,
-0x0518, 0x0518,
-0x051a, 0x051a,
-0x051c, 0x051c,
-0x051e, 0x051e,
-0x0520, 0x0520,
-0x0522, 0x0522,
-0x0524, 0x0524,
-0x0526, 0x0526,
-0x0528, 0x0528,
-0x052a, 0x052a,
-0x052c, 0x052c,
-0x052e, 0x052e,
-0x0531, 0x0556,
-0x10a0, 0x10c5,
-0x10c7, 0x10c7,
-0x10cd, 0x10cd,
-0x13a0, 0x13f5,
-0x1e00, 0x1e00,
-0x1e02, 0x1e02,
-0x1e04, 0x1e04,
-0x1e06, 0x1e06,
-0x1e08, 0x1e08,
-0x1e0a, 0x1e0a,
-0x1e0c, 0x1e0c,
-0x1e0e, 0x1e0e,
-0x1e10, 0x1e10,
-0x1e12, 0x1e12,
-0x1e14, 0x1e14,
-0x1e16, 0x1e16,
-0x1e18, 0x1e18,
-0x1e1a, 0x1e1a,
-0x1e1c, 0x1e1c,
-0x1e1e, 0x1e1e,
-0x1e20, 0x1e20,
-0x1e22, 0x1e22,
-0x1e24, 0x1e24,
-0x1e26, 0x1e26,
-0x1e28, 0x1e28,
-0x1e2a, 0x1e2a,
-0x1e2c, 0x1e2c,
-0x1e2e, 0x1e2e,
-0x1e30, 0x1e30,
-0x1e32, 0x1e32,
-0x1e34, 0x1e34,
-0x1e36, 0x1e36,
-0x1e38, 0x1e38,
-0x1e3a, 0x1e3a,
-0x1e3c, 0x1e3c,
-0x1e3e, 0x1e3e,
-0x1e40, 0x1e40,
-0x1e42, 0x1e42,
-0x1e44, 0x1e44,
-0x1e46, 0x1e46,
-0x1e48, 0x1e48,
-0x1e4a, 0x1e4a,
-0x1e4c, 0x1e4c,
-0x1e4e, 0x1e4e,
-0x1e50, 0x1e50,
-0x1e52, 0x1e52,
-0x1e54, 0x1e54,
-0x1e56, 0x1e56,
-0x1e58, 0x1e58,
-0x1e5a, 0x1e5a,
-0x1e5c, 0x1e5c,
-0x1e5e, 0x1e5e,
-0x1e60, 0x1e60,
-0x1e62, 0x1e62,
-0x1e64, 0x1e64,
-0x1e66, 0x1e66,
-0x1e68, 0x1e68,
-0x1e6a, 0x1e6a,
-0x1e6c, 0x1e6c,
-0x1e6e, 0x1e6e,
-0x1e70, 0x1e70,
-0x1e72, 0x1e72,
-0x1e74, 0x1e74,
-0x1e76, 0x1e76,
-0x1e78, 0x1e78,
-0x1e7a, 0x1e7a,
-0x1e7c, 0x1e7c,
-0x1e7e, 0x1e7e,
-0x1e80, 0x1e80,
-0x1e82, 0x1e82,
-0x1e84, 0x1e84,
-0x1e86, 0x1e86,
-0x1e88, 0x1e88,
-0x1e8a, 0x1e8a,
-0x1e8c, 0x1e8c,
-0x1e8e, 0x1e8e,
-0x1e90, 0x1e90,
-0x1e92, 0x1e92,
-0x1e94, 0x1e94,
-0x1e9e, 0x1e9e,
-0x1ea0, 0x1ea0,
-0x1ea2, 0x1ea2,
-0x1ea4, 0x1ea4,
-0x1ea6, 0x1ea6,
-0x1ea8, 0x1ea8,
-0x1eaa, 0x1eaa,
-0x1eac, 0x1eac,
-0x1eae, 0x1eae,
-0x1eb0, 0x1eb0,
-0x1eb2, 0x1eb2,
-0x1eb4, 0x1eb4,
-0x1eb6, 0x1eb6,
-0x1eb8, 0x1eb8,
-0x1eba, 0x1eba,
-0x1ebc, 0x1ebc,
-0x1ebe, 0x1ebe,
-0x1ec0, 0x1ec0,
-0x1ec2, 0x1ec2,
-0x1ec4, 0x1ec4,
-0x1ec6, 0x1ec6,
-0x1ec8, 0x1ec8,
-0x1eca, 0x1eca,
-0x1ecc, 0x1ecc,
-0x1ece, 0x1ece,
-0x1ed0, 0x1ed0,
-0x1ed2, 0x1ed2,
-0x1ed4, 0x1ed4,
-0x1ed6, 0x1ed6,
-0x1ed8, 0x1ed8,
-0x1eda, 0x1eda,
-0x1edc, 0x1edc,
-0x1ede, 0x1ede,
-0x1ee0, 0x1ee0,
-0x1ee2, 0x1ee2,
-0x1ee4, 0x1ee4,
-0x1ee6, 0x1ee6,
-0x1ee8, 0x1ee8,
-0x1eea, 0x1eea,
-0x1eec, 0x1eec,
-0x1eee, 0x1eee,
-0x1ef0, 0x1ef0,
-0x1ef2, 0x1ef2,
-0x1ef4, 0x1ef4,
-0x1ef6, 0x1ef6,
-0x1ef8, 0x1ef8,
-0x1efa, 0x1efa,
-0x1efc, 0x1efc,
-0x1efe, 0x1efe,
-0x1f08, 0x1f0f,
-0x1f18, 0x1f1d,
-0x1f28, 0x1f2f,
-0x1f38, 0x1f3f,
-0x1f48, 0x1f4d,
-0x1f59, 0x1f59,
-0x1f5b, 0x1f5b,
-0x1f5d, 0x1f5d,
-0x1f5f, 0x1f5f,
-0x1f68, 0x1f6f,
-0x1f88, 0x1f8f,
-0x1f98, 0x1f9f,
-0x1fa8, 0x1faf,
-0x1fb8, 0x1fbc,
-0x1fc8, 0x1fcc,
-0x1fd8, 0x1fdb,
-0x1fe8, 0x1fec,
-0x1ff8, 0x1ffc,
-0x2126, 0x2126,
-0x212a, 0x212b,
-0x2132, 0x2132,
-0x2160, 0x216f,
-0x2183, 0x2183,
-0x24b6, 0x24cf,
-0x2c00, 0x2c2e,
-0x2c60, 0x2c60,
-0x2c62, 0x2c64,
-0x2c67, 0x2c67,
-0x2c69, 0x2c69,
-0x2c6b, 0x2c6b,
-0x2c6d, 0x2c70,
-0x2c72, 0x2c72,
-0x2c75, 0x2c75,
-0x2c7e, 0x2c80,
-0x2c82, 0x2c82,
-0x2c84, 0x2c84,
-0x2c86, 0x2c86,
-0x2c88, 0x2c88,
-0x2c8a, 0x2c8a,
-0x2c8c, 0x2c8c,
-0x2c8e, 0x2c8e,
-0x2c90, 0x2c90,
-0x2c92, 0x2c92,
-0x2c94, 0x2c94,
-0x2c96, 0x2c96,
-0x2c98, 0x2c98,
-0x2c9a, 0x2c9a,
-0x2c9c, 0x2c9c,
-0x2c9e, 0x2c9e,
-0x2ca0, 0x2ca0,
-0x2ca2, 0x2ca2,
-0x2ca4, 0x2ca4,
-0x2ca6, 0x2ca6,
-0x2ca8, 0x2ca8,
-0x2caa, 0x2caa,
-0x2cac, 0x2cac,
-0x2cae, 0x2cae,
-0x2cb0, 0x2cb0,
-0x2cb2, 0x2cb2,
-0x2cb4, 0x2cb4,
-0x2cb6, 0x2cb6,
-0x2cb8, 0x2cb8,
-0x2cba, 0x2cba,
-0x2cbc, 0x2cbc,
-0x2cbe, 0x2cbe,
-0x2cc0, 0x2cc0,
-0x2cc2, 0x2cc2,
-0x2cc4, 0x2cc4,
-0x2cc6, 0x2cc6,
-0x2cc8, 0x2cc8,
-0x2cca, 0x2cca,
-0x2ccc, 0x2ccc,
-0x2cce, 0x2cce,
-0x2cd0, 0x2cd0,
-0x2cd2, 0x2cd2,
-0x2cd4, 0x2cd4,
-0x2cd6, 0x2cd6,
-0x2cd8, 0x2cd8,
-0x2cda, 0x2cda,
-0x2cdc, 0x2cdc,
-0x2cde, 0x2cde,
-0x2ce0, 0x2ce0,
-0x2ce2, 0x2ce2,
-0x2ceb, 0x2ceb,
-0x2ced, 0x2ced,
-0x2cf2, 0x2cf2,
-0xa640, 0xa640,
-0xa642, 0xa642,
-0xa644, 0xa644,
-0xa646, 0xa646,
-0xa648, 0xa648,
-0xa64a, 0xa64a,
-0xa64c, 0xa64c,
-0xa64e, 0xa64e,
-0xa650, 0xa650,
-0xa652, 0xa652,
-0xa654, 0xa654,
-0xa656, 0xa656,
-0xa658, 0xa658,
-0xa65a, 0xa65a,
-0xa65c, 0xa65c,
-0xa65e, 0xa65e,
-0xa660, 0xa660,
-0xa662, 0xa662,
-0xa664, 0xa664,
-0xa666, 0xa666,
-0xa668, 0xa668,
-0xa66a, 0xa66a,
-0xa66c, 0xa66c,
-0xa680, 0xa680,
-0xa682, 0xa682,
-0xa684, 0xa684,
-0xa686, 0xa686,
-0xa688, 0xa688,
-0xa68a, 0xa68a,
-0xa68c, 0xa68c,
-0xa68e, 0xa68e,
-0xa690, 0xa690,
-0xa692, 0xa692,
-0xa694, 0xa694,
-0xa696, 0xa696,
-0xa698, 0xa698,
-0xa69a, 0xa69a,
-0xa722, 0xa722,
-0xa724, 0xa724,
-0xa726, 0xa726,
-0xa728, 0xa728,
-0xa72a, 0xa72a,
-0xa72c, 0xa72c,
-0xa72e, 0xa72e,
-0xa732, 0xa732,
-0xa734, 0xa734,
-0xa736, 0xa736,
-0xa738, 0xa738,
-0xa73a, 0xa73a,
-0xa73c, 0xa73c,
-0xa73e, 0xa73e,
-0xa740, 0xa740,
-0xa742, 0xa742,
-0xa744, 0xa744,
-0xa746, 0xa746,
-0xa748, 0xa748,
-0xa74a, 0xa74a,
-0xa74c, 0xa74c,
-0xa74e, 0xa74e,
-0xa750, 0xa750,
-0xa752, 0xa752,
-0xa754, 0xa754,
-0xa756, 0xa756,
-0xa758, 0xa758,
-0xa75a, 0xa75a,
-0xa75c, 0xa75c,
-0xa75e, 0xa75e,
-0xa760, 0xa760,
-0xa762, 0xa762,
-0xa764, 0xa764,
-0xa766, 0xa766,
-0xa768, 0xa768,
-0xa76a, 0xa76a,
-0xa76c, 0xa76c,
-0xa76e, 0xa76e,
-0xa779, 0xa779,
-0xa77b, 0xa77b,
-0xa77d, 0xa77e,
-0xa780, 0xa780,
-0xa782, 0xa782,
-0xa784, 0xa784,
-0xa786, 0xa786,
-0xa78b, 0xa78b,
-0xa78d, 0xa78d,
-0xa790, 0xa790,
-0xa792, 0xa792,
-0xa796, 0xa796,
-0xa798, 0xa798,
-0xa79a, 0xa79a,
-0xa79c, 0xa79c,
-0xa79e, 0xa79e,
-0xa7a0, 0xa7a0,
-0xa7a2, 0xa7a2,
-0xa7a4, 0xa7a4,
-0xa7a6, 0xa7a6,
-0xa7a8, 0xa7a8,
-0xa7aa, 0xa7ad,
-0xa7b0, 0xa7b4,
-0xa7b6, 0xa7b6,
-0xff21, 0xff3a,
-0x10400, 0x10427,
-0x10c80, 0x10cb2,
-0x118a0, 0x118bf,
-}; /* END of CR_Changes_When_Lowercased */
+}; /* END of CR_Tagbanwa */
-/* PROPERTY: 'Changes_When_Uppercased': Derived Property */
+/* PROPERTY: 'Tai_Le': Script */
static const OnigCodePoint
-CR_Changes_When_Uppercased[] = { 605,
-0x0061, 0x007a,
-0x00b5, 0x00b5,
-0x00df, 0x00f6,
-0x00f8, 0x00ff,
-0x0101, 0x0101,
-0x0103, 0x0103,
-0x0105, 0x0105,
-0x0107, 0x0107,
-0x0109, 0x0109,
-0x010b, 0x010b,
-0x010d, 0x010d,
-0x010f, 0x010f,
-0x0111, 0x0111,
-0x0113, 0x0113,
-0x0115, 0x0115,
-0x0117, 0x0117,
-0x0119, 0x0119,
-0x011b, 0x011b,
-0x011d, 0x011d,
-0x011f, 0x011f,
-0x0121, 0x0121,
-0x0123, 0x0123,
-0x0125, 0x0125,
-0x0127, 0x0127,
-0x0129, 0x0129,
-0x012b, 0x012b,
-0x012d, 0x012d,
-0x012f, 0x012f,
-0x0131, 0x0131,
-0x0133, 0x0133,
-0x0135, 0x0135,
-0x0137, 0x0137,
-0x013a, 0x013a,
-0x013c, 0x013c,
-0x013e, 0x013e,
-0x0140, 0x0140,
-0x0142, 0x0142,
-0x0144, 0x0144,
-0x0146, 0x0146,
-0x0148, 0x0149,
-0x014b, 0x014b,
-0x014d, 0x014d,
-0x014f, 0x014f,
-0x0151, 0x0151,
-0x0153, 0x0153,
-0x0155, 0x0155,
-0x0157, 0x0157,
-0x0159, 0x0159,
-0x015b, 0x015b,
-0x015d, 0x015d,
-0x015f, 0x015f,
-0x0161, 0x0161,
-0x0163, 0x0163,
-0x0165, 0x0165,
-0x0167, 0x0167,
-0x0169, 0x0169,
-0x016b, 0x016b,
-0x016d, 0x016d,
-0x016f, 0x016f,
-0x0171, 0x0171,
-0x0173, 0x0173,
-0x0175, 0x0175,
-0x0177, 0x0177,
-0x017a, 0x017a,
-0x017c, 0x017c,
-0x017e, 0x0180,
-0x0183, 0x0183,
-0x0185, 0x0185,
-0x0188, 0x0188,
-0x018c, 0x018c,
-0x0192, 0x0192,
-0x0195, 0x0195,
-0x0199, 0x019a,
-0x019e, 0x019e,
-0x01a1, 0x01a1,
-0x01a3, 0x01a3,
-0x01a5, 0x01a5,
-0x01a8, 0x01a8,
-0x01ad, 0x01ad,
-0x01b0, 0x01b0,
-0x01b4, 0x01b4,
-0x01b6, 0x01b6,
-0x01b9, 0x01b9,
-0x01bd, 0x01bd,
-0x01bf, 0x01bf,
-0x01c5, 0x01c6,
-0x01c8, 0x01c9,
-0x01cb, 0x01cc,
-0x01ce, 0x01ce,
-0x01d0, 0x01d0,
-0x01d2, 0x01d2,
-0x01d4, 0x01d4,
-0x01d6, 0x01d6,
-0x01d8, 0x01d8,
-0x01da, 0x01da,
-0x01dc, 0x01dd,
-0x01df, 0x01df,
-0x01e1, 0x01e1,
-0x01e3, 0x01e3,
-0x01e5, 0x01e5,
-0x01e7, 0x01e7,
-0x01e9, 0x01e9,
-0x01eb, 0x01eb,
-0x01ed, 0x01ed,
-0x01ef, 0x01f0,
-0x01f2, 0x01f3,
-0x01f5, 0x01f5,
-0x01f9, 0x01f9,
-0x01fb, 0x01fb,
-0x01fd, 0x01fd,
-0x01ff, 0x01ff,
-0x0201, 0x0201,
-0x0203, 0x0203,
-0x0205, 0x0205,
-0x0207, 0x0207,
-0x0209, 0x0209,
-0x020b, 0x020b,
-0x020d, 0x020d,
-0x020f, 0x020f,
-0x0211, 0x0211,
-0x0213, 0x0213,
-0x0215, 0x0215,
-0x0217, 0x0217,
-0x0219, 0x0219,
-0x021b, 0x021b,
-0x021d, 0x021d,
-0x021f, 0x021f,
-0x0223, 0x0223,
-0x0225, 0x0225,
-0x0227, 0x0227,
-0x0229, 0x0229,
-0x022b, 0x022b,
-0x022d, 0x022d,
-0x022f, 0x022f,
-0x0231, 0x0231,
-0x0233, 0x0233,
-0x023c, 0x023c,
-0x023f, 0x0240,
-0x0242, 0x0242,
-0x0247, 0x0247,
-0x0249, 0x0249,
-0x024b, 0x024b,
-0x024d, 0x024d,
-0x024f, 0x0254,
-0x0256, 0x0257,
-0x0259, 0x0259,
-0x025b, 0x025c,
-0x0260, 0x0261,
-0x0263, 0x0263,
-0x0265, 0x0266,
-0x0268, 0x0269,
-0x026b, 0x026c,
-0x026f, 0x026f,
-0x0271, 0x0272,
-0x0275, 0x0275,
-0x027d, 0x027d,
-0x0280, 0x0280,
-0x0283, 0x0283,
-0x0287, 0x028c,
-0x0292, 0x0292,
-0x029d, 0x029e,
-0x0345, 0x0345,
-0x0371, 0x0371,
-0x0373, 0x0373,
-0x0377, 0x0377,
-0x037b, 0x037d,
-0x0390, 0x0390,
-0x03ac, 0x03ce,
-0x03d0, 0x03d1,
-0x03d5, 0x03d7,
-0x03d9, 0x03d9,
-0x03db, 0x03db,
-0x03dd, 0x03dd,
-0x03df, 0x03df,
-0x03e1, 0x03e1,
-0x03e3, 0x03e3,
-0x03e5, 0x03e5,
-0x03e7, 0x03e7,
-0x03e9, 0x03e9,
-0x03eb, 0x03eb,
-0x03ed, 0x03ed,
-0x03ef, 0x03f3,
-0x03f5, 0x03f5,
-0x03f8, 0x03f8,
-0x03fb, 0x03fb,
-0x0430, 0x045f,
-0x0461, 0x0461,
-0x0463, 0x0463,
-0x0465, 0x0465,
-0x0467, 0x0467,
-0x0469, 0x0469,
-0x046b, 0x046b,
-0x046d, 0x046d,
-0x046f, 0x046f,
-0x0471, 0x0471,
-0x0473, 0x0473,
-0x0475, 0x0475,
-0x0477, 0x0477,
-0x0479, 0x0479,
-0x047b, 0x047b,
-0x047d, 0x047d,
-0x047f, 0x047f,
-0x0481, 0x0481,
-0x048b, 0x048b,
-0x048d, 0x048d,
-0x048f, 0x048f,
-0x0491, 0x0491,
-0x0493, 0x0493,
-0x0495, 0x0495,
-0x0497, 0x0497,
-0x0499, 0x0499,
-0x049b, 0x049b,
-0x049d, 0x049d,
-0x049f, 0x049f,
-0x04a1, 0x04a1,
-0x04a3, 0x04a3,
-0x04a5, 0x04a5,
-0x04a7, 0x04a7,
-0x04a9, 0x04a9,
-0x04ab, 0x04ab,
-0x04ad, 0x04ad,
-0x04af, 0x04af,
-0x04b1, 0x04b1,
-0x04b3, 0x04b3,
-0x04b5, 0x04b5,
-0x04b7, 0x04b7,
-0x04b9, 0x04b9,
-0x04bb, 0x04bb,
-0x04bd, 0x04bd,
-0x04bf, 0x04bf,
-0x04c2, 0x04c2,
-0x04c4, 0x04c4,
-0x04c6, 0x04c6,
-0x04c8, 0x04c8,
-0x04ca, 0x04ca,
-0x04cc, 0x04cc,
-0x04ce, 0x04cf,
-0x04d1, 0x04d1,
-0x04d3, 0x04d3,
-0x04d5, 0x04d5,
-0x04d7, 0x04d7,
-0x04d9, 0x04d9,
-0x04db, 0x04db,
-0x04dd, 0x04dd,
-0x04df, 0x04df,
-0x04e1, 0x04e1,
-0x04e3, 0x04e3,
-0x04e5, 0x04e5,
-0x04e7, 0x04e7,
-0x04e9, 0x04e9,
-0x04eb, 0x04eb,
-0x04ed, 0x04ed,
-0x04ef, 0x04ef,
-0x04f1, 0x04f1,
-0x04f3, 0x04f3,
-0x04f5, 0x04f5,
-0x04f7, 0x04f7,
-0x04f9, 0x04f9,
-0x04fb, 0x04fb,
-0x04fd, 0x04fd,
-0x04ff, 0x04ff,
-0x0501, 0x0501,
-0x0503, 0x0503,
-0x0505, 0x0505,
-0x0507, 0x0507,
-0x0509, 0x0509,
-0x050b, 0x050b,
-0x050d, 0x050d,
-0x050f, 0x050f,
-0x0511, 0x0511,
-0x0513, 0x0513,
-0x0515, 0x0515,
-0x0517, 0x0517,
-0x0519, 0x0519,
-0x051b, 0x051b,
-0x051d, 0x051d,
-0x051f, 0x051f,
-0x0521, 0x0521,
-0x0523, 0x0523,
-0x0525, 0x0525,
-0x0527, 0x0527,
-0x0529, 0x0529,
-0x052b, 0x052b,
-0x052d, 0x052d,
-0x052f, 0x052f,
-0x0561, 0x0587,
-0x13f8, 0x13fd,
-0x1d79, 0x1d79,
-0x1d7d, 0x1d7d,
-0x1e01, 0x1e01,
-0x1e03, 0x1e03,
-0x1e05, 0x1e05,
-0x1e07, 0x1e07,
-0x1e09, 0x1e09,
-0x1e0b, 0x1e0b,
-0x1e0d, 0x1e0d,
-0x1e0f, 0x1e0f,
-0x1e11, 0x1e11,
-0x1e13, 0x1e13,
-0x1e15, 0x1e15,
-0x1e17, 0x1e17,
-0x1e19, 0x1e19,
-0x1e1b, 0x1e1b,
-0x1e1d, 0x1e1d,
-0x1e1f, 0x1e1f,
-0x1e21, 0x1e21,
-0x1e23, 0x1e23,
-0x1e25, 0x1e25,
-0x1e27, 0x1e27,
-0x1e29, 0x1e29,
-0x1e2b, 0x1e2b,
-0x1e2d, 0x1e2d,
-0x1e2f, 0x1e2f,
-0x1e31, 0x1e31,
-0x1e33, 0x1e33,
-0x1e35, 0x1e35,
-0x1e37, 0x1e37,
-0x1e39, 0x1e39,
-0x1e3b, 0x1e3b,
-0x1e3d, 0x1e3d,
-0x1e3f, 0x1e3f,
-0x1e41, 0x1e41,
-0x1e43, 0x1e43,
-0x1e45, 0x1e45,
-0x1e47, 0x1e47,
-0x1e49, 0x1e49,
-0x1e4b, 0x1e4b,
-0x1e4d, 0x1e4d,
-0x1e4f, 0x1e4f,
-0x1e51, 0x1e51,
-0x1e53, 0x1e53,
-0x1e55, 0x1e55,
-0x1e57, 0x1e57,
-0x1e59, 0x1e59,
-0x1e5b, 0x1e5b,
-0x1e5d, 0x1e5d,
-0x1e5f, 0x1e5f,
-0x1e61, 0x1e61,
-0x1e63, 0x1e63,
-0x1e65, 0x1e65,
-0x1e67, 0x1e67,
-0x1e69, 0x1e69,
-0x1e6b, 0x1e6b,
-0x1e6d, 0x1e6d,
-0x1e6f, 0x1e6f,
-0x1e71, 0x1e71,
-0x1e73, 0x1e73,
-0x1e75, 0x1e75,
-0x1e77, 0x1e77,
-0x1e79, 0x1e79,
-0x1e7b, 0x1e7b,
-0x1e7d, 0x1e7d,
-0x1e7f, 0x1e7f,
-0x1e81, 0x1e81,
-0x1e83, 0x1e83,
-0x1e85, 0x1e85,
-0x1e87, 0x1e87,
-0x1e89, 0x1e89,
-0x1e8b, 0x1e8b,
-0x1e8d, 0x1e8d,
-0x1e8f, 0x1e8f,
-0x1e91, 0x1e91,
-0x1e93, 0x1e93,
-0x1e95, 0x1e9b,
-0x1ea1, 0x1ea1,
-0x1ea3, 0x1ea3,
-0x1ea5, 0x1ea5,
-0x1ea7, 0x1ea7,
-0x1ea9, 0x1ea9,
-0x1eab, 0x1eab,
-0x1ead, 0x1ead,
-0x1eaf, 0x1eaf,
-0x1eb1, 0x1eb1,
-0x1eb3, 0x1eb3,
-0x1eb5, 0x1eb5,
-0x1eb7, 0x1eb7,
-0x1eb9, 0x1eb9,
-0x1ebb, 0x1ebb,
-0x1ebd, 0x1ebd,
-0x1ebf, 0x1ebf,
-0x1ec1, 0x1ec1,
-0x1ec3, 0x1ec3,
-0x1ec5, 0x1ec5,
-0x1ec7, 0x1ec7,
-0x1ec9, 0x1ec9,
-0x1ecb, 0x1ecb,
-0x1ecd, 0x1ecd,
-0x1ecf, 0x1ecf,
-0x1ed1, 0x1ed1,
-0x1ed3, 0x1ed3,
-0x1ed5, 0x1ed5,
-0x1ed7, 0x1ed7,
-0x1ed9, 0x1ed9,
-0x1edb, 0x1edb,
-0x1edd, 0x1edd,
-0x1edf, 0x1edf,
-0x1ee1, 0x1ee1,
-0x1ee3, 0x1ee3,
-0x1ee5, 0x1ee5,
-0x1ee7, 0x1ee7,
-0x1ee9, 0x1ee9,
-0x1eeb, 0x1eeb,
-0x1eed, 0x1eed,
-0x1eef, 0x1eef,
-0x1ef1, 0x1ef1,
-0x1ef3, 0x1ef3,
-0x1ef5, 0x1ef5,
-0x1ef7, 0x1ef7,
-0x1ef9, 0x1ef9,
-0x1efb, 0x1efb,
-0x1efd, 0x1efd,
-0x1eff, 0x1f07,
-0x1f10, 0x1f15,
-0x1f20, 0x1f27,
-0x1f30, 0x1f37,
-0x1f40, 0x1f45,
-0x1f50, 0x1f57,
-0x1f60, 0x1f67,
-0x1f70, 0x1f7d,
-0x1f80, 0x1fb4,
-0x1fb6, 0x1fb7,
-0x1fbc, 0x1fbc,
-0x1fbe, 0x1fbe,
-0x1fc2, 0x1fc4,
-0x1fc6, 0x1fc7,
-0x1fcc, 0x1fcc,
-0x1fd0, 0x1fd3,
-0x1fd6, 0x1fd7,
-0x1fe0, 0x1fe7,
-0x1ff2, 0x1ff4,
-0x1ff6, 0x1ff7,
-0x1ffc, 0x1ffc,
-0x214e, 0x214e,
-0x2170, 0x217f,
-0x2184, 0x2184,
-0x24d0, 0x24e9,
-0x2c30, 0x2c5e,
-0x2c61, 0x2c61,
-0x2c65, 0x2c66,
-0x2c68, 0x2c68,
-0x2c6a, 0x2c6a,
-0x2c6c, 0x2c6c,
-0x2c73, 0x2c73,
-0x2c76, 0x2c76,
-0x2c81, 0x2c81,
-0x2c83, 0x2c83,
-0x2c85, 0x2c85,
-0x2c87, 0x2c87,
-0x2c89, 0x2c89,
-0x2c8b, 0x2c8b,
-0x2c8d, 0x2c8d,
-0x2c8f, 0x2c8f,
-0x2c91, 0x2c91,
-0x2c93, 0x2c93,
-0x2c95, 0x2c95,
-0x2c97, 0x2c97,
-0x2c99, 0x2c99,
-0x2c9b, 0x2c9b,
-0x2c9d, 0x2c9d,
-0x2c9f, 0x2c9f,
-0x2ca1, 0x2ca1,
-0x2ca3, 0x2ca3,
-0x2ca5, 0x2ca5,
-0x2ca7, 0x2ca7,
-0x2ca9, 0x2ca9,
-0x2cab, 0x2cab,
-0x2cad, 0x2cad,
-0x2caf, 0x2caf,
-0x2cb1, 0x2cb1,
-0x2cb3, 0x2cb3,
-0x2cb5, 0x2cb5,
-0x2cb7, 0x2cb7,
-0x2cb9, 0x2cb9,
-0x2cbb, 0x2cbb,
-0x2cbd, 0x2cbd,
-0x2cbf, 0x2cbf,
-0x2cc1, 0x2cc1,
-0x2cc3, 0x2cc3,
-0x2cc5, 0x2cc5,
-0x2cc7, 0x2cc7,
-0x2cc9, 0x2cc9,
-0x2ccb, 0x2ccb,
-0x2ccd, 0x2ccd,
-0x2ccf, 0x2ccf,
-0x2cd1, 0x2cd1,
-0x2cd3, 0x2cd3,
-0x2cd5, 0x2cd5,
-0x2cd7, 0x2cd7,
-0x2cd9, 0x2cd9,
-0x2cdb, 0x2cdb,
-0x2cdd, 0x2cdd,
-0x2cdf, 0x2cdf,
-0x2ce1, 0x2ce1,
-0x2ce3, 0x2ce3,
-0x2cec, 0x2cec,
-0x2cee, 0x2cee,
-0x2cf3, 0x2cf3,
-0x2d00, 0x2d25,
-0x2d27, 0x2d27,
-0x2d2d, 0x2d2d,
-0xa641, 0xa641,
-0xa643, 0xa643,
-0xa645, 0xa645,
-0xa647, 0xa647,
-0xa649, 0xa649,
-0xa64b, 0xa64b,
-0xa64d, 0xa64d,
-0xa64f, 0xa64f,
-0xa651, 0xa651,
-0xa653, 0xa653,
-0xa655, 0xa655,
-0xa657, 0xa657,
-0xa659, 0xa659,
-0xa65b, 0xa65b,
-0xa65d, 0xa65d,
-0xa65f, 0xa65f,
-0xa661, 0xa661,
-0xa663, 0xa663,
-0xa665, 0xa665,
-0xa667, 0xa667,
-0xa669, 0xa669,
-0xa66b, 0xa66b,
-0xa66d, 0xa66d,
-0xa681, 0xa681,
-0xa683, 0xa683,
-0xa685, 0xa685,
-0xa687, 0xa687,
-0xa689, 0xa689,
-0xa68b, 0xa68b,
-0xa68d, 0xa68d,
-0xa68f, 0xa68f,
-0xa691, 0xa691,
-0xa693, 0xa693,
-0xa695, 0xa695,
-0xa697, 0xa697,
-0xa699, 0xa699,
-0xa69b, 0xa69b,
-0xa723, 0xa723,
-0xa725, 0xa725,
-0xa727, 0xa727,
-0xa729, 0xa729,
-0xa72b, 0xa72b,
-0xa72d, 0xa72d,
-0xa72f, 0xa72f,
-0xa733, 0xa733,
-0xa735, 0xa735,
-0xa737, 0xa737,
-0xa739, 0xa739,
-0xa73b, 0xa73b,
-0xa73d, 0xa73d,
-0xa73f, 0xa73f,
-0xa741, 0xa741,
-0xa743, 0xa743,
-0xa745, 0xa745,
-0xa747, 0xa747,
-0xa749, 0xa749,
-0xa74b, 0xa74b,
-0xa74d, 0xa74d,
-0xa74f, 0xa74f,
-0xa751, 0xa751,
-0xa753, 0xa753,
-0xa755, 0xa755,
-0xa757, 0xa757,
-0xa759, 0xa759,
-0xa75b, 0xa75b,
-0xa75d, 0xa75d,
-0xa75f, 0xa75f,
-0xa761, 0xa761,
-0xa763, 0xa763,
-0xa765, 0xa765,
-0xa767, 0xa767,
-0xa769, 0xa769,
-0xa76b, 0xa76b,
-0xa76d, 0xa76d,
-0xa76f, 0xa76f,
-0xa77a, 0xa77a,
-0xa77c, 0xa77c,
-0xa77f, 0xa77f,
-0xa781, 0xa781,
-0xa783, 0xa783,
-0xa785, 0xa785,
-0xa787, 0xa787,
-0xa78c, 0xa78c,
-0xa791, 0xa791,
-0xa793, 0xa793,
-0xa797, 0xa797,
-0xa799, 0xa799,
-0xa79b, 0xa79b,
-0xa79d, 0xa79d,
-0xa79f, 0xa79f,
-0xa7a1, 0xa7a1,
-0xa7a3, 0xa7a3,
-0xa7a5, 0xa7a5,
-0xa7a7, 0xa7a7,
-0xa7a9, 0xa7a9,
-0xa7b5, 0xa7b5,
-0xa7b7, 0xa7b7,
-0xab53, 0xab53,
-0xab70, 0xabbf,
-0xfb00, 0xfb06,
-0xfb13, 0xfb17,
-0xff41, 0xff5a,
-0x10428, 0x1044f,
-0x10cc0, 0x10cf2,
-0x118c0, 0x118df,
-}; /* END of CR_Changes_When_Uppercased */
+CR_Tai_Le[] = { 2,
+0x1950, 0x196d,
+0x1970, 0x1974,
+}; /* END of CR_Tai_Le */
-/* PROPERTY: 'Changes_When_Titlecased': Derived Property */
+/* PROPERTY: 'Tai_Tham': Script */
static const OnigCodePoint
-CR_Changes_When_Titlecased[] = { 606,
-0x0061, 0x007a,
-0x00b5, 0x00b5,
-0x00df, 0x00f6,
-0x00f8, 0x00ff,
-0x0101, 0x0101,
-0x0103, 0x0103,
-0x0105, 0x0105,
-0x0107, 0x0107,
-0x0109, 0x0109,
-0x010b, 0x010b,
-0x010d, 0x010d,
-0x010f, 0x010f,
-0x0111, 0x0111,
-0x0113, 0x0113,
-0x0115, 0x0115,
-0x0117, 0x0117,
-0x0119, 0x0119,
-0x011b, 0x011b,
-0x011d, 0x011d,
-0x011f, 0x011f,
-0x0121, 0x0121,
-0x0123, 0x0123,
-0x0125, 0x0125,
-0x0127, 0x0127,
-0x0129, 0x0129,
-0x012b, 0x012b,
-0x012d, 0x012d,
-0x012f, 0x012f,
-0x0131, 0x0131,
-0x0133, 0x0133,
-0x0135, 0x0135,
-0x0137, 0x0137,
-0x013a, 0x013a,
-0x013c, 0x013c,
-0x013e, 0x013e,
-0x0140, 0x0140,
-0x0142, 0x0142,
-0x0144, 0x0144,
-0x0146, 0x0146,
-0x0148, 0x0149,
-0x014b, 0x014b,
-0x014d, 0x014d,
-0x014f, 0x014f,
-0x0151, 0x0151,
-0x0153, 0x0153,
-0x0155, 0x0155,
-0x0157, 0x0157,
-0x0159, 0x0159,
-0x015b, 0x015b,
-0x015d, 0x015d,
-0x015f, 0x015f,
-0x0161, 0x0161,
-0x0163, 0x0163,
-0x0165, 0x0165,
-0x0167, 0x0167,
-0x0169, 0x0169,
-0x016b, 0x016b,
-0x016d, 0x016d,
-0x016f, 0x016f,
-0x0171, 0x0171,
-0x0173, 0x0173,
-0x0175, 0x0175,
-0x0177, 0x0177,
-0x017a, 0x017a,
-0x017c, 0x017c,
-0x017e, 0x0180,
-0x0183, 0x0183,
-0x0185, 0x0185,
-0x0188, 0x0188,
-0x018c, 0x018c,
-0x0192, 0x0192,
-0x0195, 0x0195,
-0x0199, 0x019a,
-0x019e, 0x019e,
-0x01a1, 0x01a1,
-0x01a3, 0x01a3,
-0x01a5, 0x01a5,
-0x01a8, 0x01a8,
-0x01ad, 0x01ad,
-0x01b0, 0x01b0,
-0x01b4, 0x01b4,
-0x01b6, 0x01b6,
-0x01b9, 0x01b9,
-0x01bd, 0x01bd,
-0x01bf, 0x01bf,
-0x01c4, 0x01c4,
-0x01c6, 0x01c7,
-0x01c9, 0x01ca,
-0x01cc, 0x01cc,
-0x01ce, 0x01ce,
-0x01d0, 0x01d0,
-0x01d2, 0x01d2,
-0x01d4, 0x01d4,
-0x01d6, 0x01d6,
-0x01d8, 0x01d8,
-0x01da, 0x01da,
-0x01dc, 0x01dd,
-0x01df, 0x01df,
-0x01e1, 0x01e1,
-0x01e3, 0x01e3,
-0x01e5, 0x01e5,
-0x01e7, 0x01e7,
-0x01e9, 0x01e9,
-0x01eb, 0x01eb,
-0x01ed, 0x01ed,
-0x01ef, 0x01f1,
-0x01f3, 0x01f3,
-0x01f5, 0x01f5,
-0x01f9, 0x01f9,
-0x01fb, 0x01fb,
-0x01fd, 0x01fd,
-0x01ff, 0x01ff,
-0x0201, 0x0201,
-0x0203, 0x0203,
-0x0205, 0x0205,
-0x0207, 0x0207,
-0x0209, 0x0209,
-0x020b, 0x020b,
-0x020d, 0x020d,
-0x020f, 0x020f,
-0x0211, 0x0211,
-0x0213, 0x0213,
-0x0215, 0x0215,
-0x0217, 0x0217,
-0x0219, 0x0219,
-0x021b, 0x021b,
-0x021d, 0x021d,
-0x021f, 0x021f,
-0x0223, 0x0223,
-0x0225, 0x0225,
-0x0227, 0x0227,
-0x0229, 0x0229,
-0x022b, 0x022b,
-0x022d, 0x022d,
-0x022f, 0x022f,
-0x0231, 0x0231,
-0x0233, 0x0233,
-0x023c, 0x023c,
-0x023f, 0x0240,
-0x0242, 0x0242,
-0x0247, 0x0247,
-0x0249, 0x0249,
-0x024b, 0x024b,
-0x024d, 0x024d,
-0x024f, 0x0254,
-0x0256, 0x0257,
-0x0259, 0x0259,
-0x025b, 0x025c,
-0x0260, 0x0261,
-0x0263, 0x0263,
-0x0265, 0x0266,
-0x0268, 0x0269,
-0x026b, 0x026c,
-0x026f, 0x026f,
-0x0271, 0x0272,
-0x0275, 0x0275,
-0x027d, 0x027d,
-0x0280, 0x0280,
-0x0283, 0x0283,
-0x0287, 0x028c,
-0x0292, 0x0292,
-0x029d, 0x029e,
-0x0345, 0x0345,
-0x0371, 0x0371,
-0x0373, 0x0373,
-0x0377, 0x0377,
-0x037b, 0x037d,
-0x0390, 0x0390,
-0x03ac, 0x03ce,
-0x03d0, 0x03d1,
-0x03d5, 0x03d7,
-0x03d9, 0x03d9,
-0x03db, 0x03db,
-0x03dd, 0x03dd,
-0x03df, 0x03df,
-0x03e1, 0x03e1,
-0x03e3, 0x03e3,
-0x03e5, 0x03e5,
-0x03e7, 0x03e7,
-0x03e9, 0x03e9,
-0x03eb, 0x03eb,
-0x03ed, 0x03ed,
-0x03ef, 0x03f3,
-0x03f5, 0x03f5,
-0x03f8, 0x03f8,
-0x03fb, 0x03fb,
-0x0430, 0x045f,
-0x0461, 0x0461,
-0x0463, 0x0463,
-0x0465, 0x0465,
-0x0467, 0x0467,
-0x0469, 0x0469,
-0x046b, 0x046b,
-0x046d, 0x046d,
-0x046f, 0x046f,
-0x0471, 0x0471,
-0x0473, 0x0473,
-0x0475, 0x0475,
-0x0477, 0x0477,
-0x0479, 0x0479,
-0x047b, 0x047b,
-0x047d, 0x047d,
-0x047f, 0x047f,
-0x0481, 0x0481,
-0x048b, 0x048b,
-0x048d, 0x048d,
-0x048f, 0x048f,
-0x0491, 0x0491,
-0x0493, 0x0493,
-0x0495, 0x0495,
-0x0497, 0x0497,
-0x0499, 0x0499,
-0x049b, 0x049b,
-0x049d, 0x049d,
-0x049f, 0x049f,
-0x04a1, 0x04a1,
-0x04a3, 0x04a3,
-0x04a5, 0x04a5,
-0x04a7, 0x04a7,
-0x04a9, 0x04a9,
-0x04ab, 0x04ab,
-0x04ad, 0x04ad,
-0x04af, 0x04af,
-0x04b1, 0x04b1,
-0x04b3, 0x04b3,
-0x04b5, 0x04b5,
-0x04b7, 0x04b7,
-0x04b9, 0x04b9,
-0x04bb, 0x04bb,
-0x04bd, 0x04bd,
-0x04bf, 0x04bf,
-0x04c2, 0x04c2,
-0x04c4, 0x04c4,
-0x04c6, 0x04c6,
-0x04c8, 0x04c8,
-0x04ca, 0x04ca,
-0x04cc, 0x04cc,
-0x04ce, 0x04cf,
-0x04d1, 0x04d1,
-0x04d3, 0x04d3,
-0x04d5, 0x04d5,
-0x04d7, 0x04d7,
-0x04d9, 0x04d9,
-0x04db, 0x04db,
-0x04dd, 0x04dd,
-0x04df, 0x04df,
-0x04e1, 0x04e1,
-0x04e3, 0x04e3,
-0x04e5, 0x04e5,
-0x04e7, 0x04e7,
-0x04e9, 0x04e9,
-0x04eb, 0x04eb,
-0x04ed, 0x04ed,
-0x04ef, 0x04ef,
-0x04f1, 0x04f1,
-0x04f3, 0x04f3,
-0x04f5, 0x04f5,
-0x04f7, 0x04f7,
-0x04f9, 0x04f9,
-0x04fb, 0x04fb,
-0x04fd, 0x04fd,
-0x04ff, 0x04ff,
-0x0501, 0x0501,
-0x0503, 0x0503,
-0x0505, 0x0505,
-0x0507, 0x0507,
-0x0509, 0x0509,
-0x050b, 0x050b,
-0x050d, 0x050d,
-0x050f, 0x050f,
-0x0511, 0x0511,
-0x0513, 0x0513,
-0x0515, 0x0515,
-0x0517, 0x0517,
-0x0519, 0x0519,
-0x051b, 0x051b,
-0x051d, 0x051d,
-0x051f, 0x051f,
-0x0521, 0x0521,
-0x0523, 0x0523,
-0x0525, 0x0525,
-0x0527, 0x0527,
-0x0529, 0x0529,
-0x052b, 0x052b,
-0x052d, 0x052d,
-0x052f, 0x052f,
-0x0561, 0x0587,
-0x13f8, 0x13fd,
-0x1d79, 0x1d79,
-0x1d7d, 0x1d7d,
-0x1e01, 0x1e01,
-0x1e03, 0x1e03,
-0x1e05, 0x1e05,
-0x1e07, 0x1e07,
-0x1e09, 0x1e09,
-0x1e0b, 0x1e0b,
-0x1e0d, 0x1e0d,
-0x1e0f, 0x1e0f,
-0x1e11, 0x1e11,
-0x1e13, 0x1e13,
-0x1e15, 0x1e15,
-0x1e17, 0x1e17,
-0x1e19, 0x1e19,
-0x1e1b, 0x1e1b,
-0x1e1d, 0x1e1d,
-0x1e1f, 0x1e1f,
-0x1e21, 0x1e21,
-0x1e23, 0x1e23,
-0x1e25, 0x1e25,
-0x1e27, 0x1e27,
-0x1e29, 0x1e29,
-0x1e2b, 0x1e2b,
-0x1e2d, 0x1e2d,
-0x1e2f, 0x1e2f,
-0x1e31, 0x1e31,
-0x1e33, 0x1e33,
-0x1e35, 0x1e35,
-0x1e37, 0x1e37,
-0x1e39, 0x1e39,
-0x1e3b, 0x1e3b,
-0x1e3d, 0x1e3d,
-0x1e3f, 0x1e3f,
-0x1e41, 0x1e41,
-0x1e43, 0x1e43,
-0x1e45, 0x1e45,
-0x1e47, 0x1e47,
-0x1e49, 0x1e49,
-0x1e4b, 0x1e4b,
-0x1e4d, 0x1e4d,
-0x1e4f, 0x1e4f,
-0x1e51, 0x1e51,
-0x1e53, 0x1e53,
-0x1e55, 0x1e55,
-0x1e57, 0x1e57,
-0x1e59, 0x1e59,
-0x1e5b, 0x1e5b,
-0x1e5d, 0x1e5d,
-0x1e5f, 0x1e5f,
-0x1e61, 0x1e61,
-0x1e63, 0x1e63,
-0x1e65, 0x1e65,
-0x1e67, 0x1e67,
-0x1e69, 0x1e69,
-0x1e6b, 0x1e6b,
-0x1e6d, 0x1e6d,
-0x1e6f, 0x1e6f,
-0x1e71, 0x1e71,
-0x1e73, 0x1e73,
-0x1e75, 0x1e75,
-0x1e77, 0x1e77,
-0x1e79, 0x1e79,
-0x1e7b, 0x1e7b,
-0x1e7d, 0x1e7d,
-0x1e7f, 0x1e7f,
-0x1e81, 0x1e81,
-0x1e83, 0x1e83,
-0x1e85, 0x1e85,
-0x1e87, 0x1e87,
-0x1e89, 0x1e89,
-0x1e8b, 0x1e8b,
-0x1e8d, 0x1e8d,
-0x1e8f, 0x1e8f,
-0x1e91, 0x1e91,
-0x1e93, 0x1e93,
-0x1e95, 0x1e9b,
-0x1ea1, 0x1ea1,
-0x1ea3, 0x1ea3,
-0x1ea5, 0x1ea5,
-0x1ea7, 0x1ea7,
-0x1ea9, 0x1ea9,
-0x1eab, 0x1eab,
-0x1ead, 0x1ead,
-0x1eaf, 0x1eaf,
-0x1eb1, 0x1eb1,
-0x1eb3, 0x1eb3,
-0x1eb5, 0x1eb5,
-0x1eb7, 0x1eb7,
-0x1eb9, 0x1eb9,
-0x1ebb, 0x1ebb,
-0x1ebd, 0x1ebd,
-0x1ebf, 0x1ebf,
-0x1ec1, 0x1ec1,
-0x1ec3, 0x1ec3,
-0x1ec5, 0x1ec5,
-0x1ec7, 0x1ec7,
-0x1ec9, 0x1ec9,
-0x1ecb, 0x1ecb,
-0x1ecd, 0x1ecd,
-0x1ecf, 0x1ecf,
-0x1ed1, 0x1ed1,
-0x1ed3, 0x1ed3,
-0x1ed5, 0x1ed5,
-0x1ed7, 0x1ed7,
-0x1ed9, 0x1ed9,
-0x1edb, 0x1edb,
-0x1edd, 0x1edd,
-0x1edf, 0x1edf,
-0x1ee1, 0x1ee1,
-0x1ee3, 0x1ee3,
-0x1ee5, 0x1ee5,
-0x1ee7, 0x1ee7,
-0x1ee9, 0x1ee9,
-0x1eeb, 0x1eeb,
-0x1eed, 0x1eed,
-0x1eef, 0x1eef,
-0x1ef1, 0x1ef1,
-0x1ef3, 0x1ef3,
-0x1ef5, 0x1ef5,
-0x1ef7, 0x1ef7,
-0x1ef9, 0x1ef9,
-0x1efb, 0x1efb,
-0x1efd, 0x1efd,
-0x1eff, 0x1f07,
-0x1f10, 0x1f15,
-0x1f20, 0x1f27,
-0x1f30, 0x1f37,
-0x1f40, 0x1f45,
-0x1f50, 0x1f57,
-0x1f60, 0x1f67,
-0x1f70, 0x1f7d,
-0x1f80, 0x1f87,
-0x1f90, 0x1f97,
-0x1fa0, 0x1fa7,
-0x1fb0, 0x1fb4,
-0x1fb6, 0x1fb7,
-0x1fbe, 0x1fbe,
-0x1fc2, 0x1fc4,
-0x1fc6, 0x1fc7,
-0x1fd0, 0x1fd3,
-0x1fd6, 0x1fd7,
-0x1fe0, 0x1fe7,
-0x1ff2, 0x1ff4,
-0x1ff6, 0x1ff7,
-0x214e, 0x214e,
-0x2170, 0x217f,
-0x2184, 0x2184,
-0x24d0, 0x24e9,
-0x2c30, 0x2c5e,
-0x2c61, 0x2c61,
-0x2c65, 0x2c66,
-0x2c68, 0x2c68,
-0x2c6a, 0x2c6a,
-0x2c6c, 0x2c6c,
-0x2c73, 0x2c73,
-0x2c76, 0x2c76,
-0x2c81, 0x2c81,
-0x2c83, 0x2c83,
-0x2c85, 0x2c85,
-0x2c87, 0x2c87,
-0x2c89, 0x2c89,
-0x2c8b, 0x2c8b,
-0x2c8d, 0x2c8d,
-0x2c8f, 0x2c8f,
-0x2c91, 0x2c91,
-0x2c93, 0x2c93,
-0x2c95, 0x2c95,
-0x2c97, 0x2c97,
-0x2c99, 0x2c99,
-0x2c9b, 0x2c9b,
-0x2c9d, 0x2c9d,
-0x2c9f, 0x2c9f,
-0x2ca1, 0x2ca1,
-0x2ca3, 0x2ca3,
-0x2ca5, 0x2ca5,
-0x2ca7, 0x2ca7,
-0x2ca9, 0x2ca9,
-0x2cab, 0x2cab,
-0x2cad, 0x2cad,
-0x2caf, 0x2caf,
-0x2cb1, 0x2cb1,
-0x2cb3, 0x2cb3,
-0x2cb5, 0x2cb5,
-0x2cb7, 0x2cb7,
-0x2cb9, 0x2cb9,
-0x2cbb, 0x2cbb,
-0x2cbd, 0x2cbd,
-0x2cbf, 0x2cbf,
-0x2cc1, 0x2cc1,
-0x2cc3, 0x2cc3,
-0x2cc5, 0x2cc5,
-0x2cc7, 0x2cc7,
-0x2cc9, 0x2cc9,
-0x2ccb, 0x2ccb,
-0x2ccd, 0x2ccd,
-0x2ccf, 0x2ccf,
-0x2cd1, 0x2cd1,
-0x2cd3, 0x2cd3,
-0x2cd5, 0x2cd5,
-0x2cd7, 0x2cd7,
-0x2cd9, 0x2cd9,
-0x2cdb, 0x2cdb,
-0x2cdd, 0x2cdd,
-0x2cdf, 0x2cdf,
-0x2ce1, 0x2ce1,
-0x2ce3, 0x2ce3,
-0x2cec, 0x2cec,
-0x2cee, 0x2cee,
-0x2cf3, 0x2cf3,
-0x2d00, 0x2d25,
-0x2d27, 0x2d27,
-0x2d2d, 0x2d2d,
-0xa641, 0xa641,
-0xa643, 0xa643,
-0xa645, 0xa645,
-0xa647, 0xa647,
-0xa649, 0xa649,
-0xa64b, 0xa64b,
-0xa64d, 0xa64d,
-0xa64f, 0xa64f,
-0xa651, 0xa651,
-0xa653, 0xa653,
-0xa655, 0xa655,
-0xa657, 0xa657,
-0xa659, 0xa659,
-0xa65b, 0xa65b,
-0xa65d, 0xa65d,
-0xa65f, 0xa65f,
-0xa661, 0xa661,
-0xa663, 0xa663,
-0xa665, 0xa665,
-0xa667, 0xa667,
-0xa669, 0xa669,
-0xa66b, 0xa66b,
-0xa66d, 0xa66d,
-0xa681, 0xa681,
-0xa683, 0xa683,
-0xa685, 0xa685,
-0xa687, 0xa687,
-0xa689, 0xa689,
-0xa68b, 0xa68b,
-0xa68d, 0xa68d,
-0xa68f, 0xa68f,
-0xa691, 0xa691,
-0xa693, 0xa693,
-0xa695, 0xa695,
-0xa697, 0xa697,
-0xa699, 0xa699,
-0xa69b, 0xa69b,
-0xa723, 0xa723,
-0xa725, 0xa725,
-0xa727, 0xa727,
-0xa729, 0xa729,
-0xa72b, 0xa72b,
-0xa72d, 0xa72d,
-0xa72f, 0xa72f,
-0xa733, 0xa733,
-0xa735, 0xa735,
-0xa737, 0xa737,
-0xa739, 0xa739,
-0xa73b, 0xa73b,
-0xa73d, 0xa73d,
-0xa73f, 0xa73f,
-0xa741, 0xa741,
-0xa743, 0xa743,
-0xa745, 0xa745,
-0xa747, 0xa747,
-0xa749, 0xa749,
-0xa74b, 0xa74b,
-0xa74d, 0xa74d,
-0xa74f, 0xa74f,
-0xa751, 0xa751,
-0xa753, 0xa753,
-0xa755, 0xa755,
-0xa757, 0xa757,
-0xa759, 0xa759,
-0xa75b, 0xa75b,
-0xa75d, 0xa75d,
-0xa75f, 0xa75f,
-0xa761, 0xa761,
-0xa763, 0xa763,
-0xa765, 0xa765,
-0xa767, 0xa767,
-0xa769, 0xa769,
-0xa76b, 0xa76b,
-0xa76d, 0xa76d,
-0xa76f, 0xa76f,
-0xa77a, 0xa77a,
-0xa77c, 0xa77c,
-0xa77f, 0xa77f,
-0xa781, 0xa781,
-0xa783, 0xa783,
-0xa785, 0xa785,
-0xa787, 0xa787,
-0xa78c, 0xa78c,
-0xa791, 0xa791,
-0xa793, 0xa793,
-0xa797, 0xa797,
-0xa799, 0xa799,
-0xa79b, 0xa79b,
-0xa79d, 0xa79d,
-0xa79f, 0xa79f,
-0xa7a1, 0xa7a1,
-0xa7a3, 0xa7a3,
-0xa7a5, 0xa7a5,
-0xa7a7, 0xa7a7,
-0xa7a9, 0xa7a9,
-0xa7b5, 0xa7b5,
-0xa7b7, 0xa7b7,
-0xab53, 0xab53,
-0xab70, 0xabbf,
-0xfb00, 0xfb06,
-0xfb13, 0xfb17,
-0xff41, 0xff5a,
-0x10428, 0x1044f,
-0x10cc0, 0x10cf2,
-0x118c0, 0x118df,
-}; /* END of CR_Changes_When_Titlecased */
+CR_Tai_Tham[] = { 5,
+0x1a20, 0x1a5e,
+0x1a60, 0x1a7c,
+0x1a7f, 0x1a89,
+0x1a90, 0x1a99,
+0x1aa0, 0x1aad,
+}; /* END of CR_Tai_Tham */
-/* PROPERTY: 'Changes_When_Casefolded': Derived Property */
+/* PROPERTY: 'Tai_Viet': Script */
static const OnigCodePoint
-CR_Changes_When_Casefolded[] = { 600,
-0x0041, 0x005a,
-0x00b5, 0x00b5,
-0x00c0, 0x00d6,
-0x00d8, 0x00df,
-0x0100, 0x0100,
-0x0102, 0x0102,
-0x0104, 0x0104,
-0x0106, 0x0106,
-0x0108, 0x0108,
-0x010a, 0x010a,
-0x010c, 0x010c,
-0x010e, 0x010e,
-0x0110, 0x0110,
-0x0112, 0x0112,
-0x0114, 0x0114,
-0x0116, 0x0116,
-0x0118, 0x0118,
-0x011a, 0x011a,
-0x011c, 0x011c,
-0x011e, 0x011e,
-0x0120, 0x0120,
-0x0122, 0x0122,
-0x0124, 0x0124,
-0x0126, 0x0126,
-0x0128, 0x0128,
-0x012a, 0x012a,
-0x012c, 0x012c,
-0x012e, 0x012e,
-0x0130, 0x0130,
-0x0132, 0x0132,
-0x0134, 0x0134,
-0x0136, 0x0136,
-0x0139, 0x0139,
-0x013b, 0x013b,
-0x013d, 0x013d,
-0x013f, 0x013f,
-0x0141, 0x0141,
-0x0143, 0x0143,
-0x0145, 0x0145,
-0x0147, 0x0147,
-0x0149, 0x014a,
-0x014c, 0x014c,
-0x014e, 0x014e,
-0x0150, 0x0150,
-0x0152, 0x0152,
-0x0154, 0x0154,
-0x0156, 0x0156,
-0x0158, 0x0158,
-0x015a, 0x015a,
-0x015c, 0x015c,
-0x015e, 0x015e,
-0x0160, 0x0160,
-0x0162, 0x0162,
-0x0164, 0x0164,
-0x0166, 0x0166,
-0x0168, 0x0168,
-0x016a, 0x016a,
-0x016c, 0x016c,
-0x016e, 0x016e,
-0x0170, 0x0170,
-0x0172, 0x0172,
-0x0174, 0x0174,
-0x0176, 0x0176,
-0x0178, 0x0179,
-0x017b, 0x017b,
-0x017d, 0x017d,
-0x017f, 0x017f,
-0x0181, 0x0182,
-0x0184, 0x0184,
-0x0186, 0x0187,
-0x0189, 0x018b,
-0x018e, 0x0191,
-0x0193, 0x0194,
-0x0196, 0x0198,
-0x019c, 0x019d,
-0x019f, 0x01a0,
-0x01a2, 0x01a2,
-0x01a4, 0x01a4,
-0x01a6, 0x01a7,
-0x01a9, 0x01a9,
-0x01ac, 0x01ac,
-0x01ae, 0x01af,
-0x01b1, 0x01b3,
-0x01b5, 0x01b5,
-0x01b7, 0x01b8,
-0x01bc, 0x01bc,
-0x01c4, 0x01c5,
-0x01c7, 0x01c8,
-0x01ca, 0x01cb,
-0x01cd, 0x01cd,
-0x01cf, 0x01cf,
-0x01d1, 0x01d1,
-0x01d3, 0x01d3,
-0x01d5, 0x01d5,
-0x01d7, 0x01d7,
-0x01d9, 0x01d9,
-0x01db, 0x01db,
-0x01de, 0x01de,
-0x01e0, 0x01e0,
-0x01e2, 0x01e2,
-0x01e4, 0x01e4,
-0x01e6, 0x01e6,
-0x01e8, 0x01e8,
-0x01ea, 0x01ea,
-0x01ec, 0x01ec,
-0x01ee, 0x01ee,
-0x01f1, 0x01f2,
-0x01f4, 0x01f4,
-0x01f6, 0x01f8,
-0x01fa, 0x01fa,
-0x01fc, 0x01fc,
-0x01fe, 0x01fe,
-0x0200, 0x0200,
-0x0202, 0x0202,
-0x0204, 0x0204,
-0x0206, 0x0206,
-0x0208, 0x0208,
-0x020a, 0x020a,
-0x020c, 0x020c,
-0x020e, 0x020e,
-0x0210, 0x0210,
-0x0212, 0x0212,
-0x0214, 0x0214,
-0x0216, 0x0216,
-0x0218, 0x0218,
-0x021a, 0x021a,
-0x021c, 0x021c,
-0x021e, 0x021e,
-0x0220, 0x0220,
-0x0222, 0x0222,
-0x0224, 0x0224,
-0x0226, 0x0226,
-0x0228, 0x0228,
-0x022a, 0x022a,
-0x022c, 0x022c,
-0x022e, 0x022e,
-0x0230, 0x0230,
-0x0232, 0x0232,
-0x023a, 0x023b,
-0x023d, 0x023e,
-0x0241, 0x0241,
-0x0243, 0x0246,
-0x0248, 0x0248,
-0x024a, 0x024a,
-0x024c, 0x024c,
-0x024e, 0x024e,
-0x0345, 0x0345,
-0x0370, 0x0370,
-0x0372, 0x0372,
-0x0376, 0x0376,
-0x037f, 0x037f,
-0x0386, 0x0386,
-0x0388, 0x038a,
-0x038c, 0x038c,
-0x038e, 0x038f,
-0x0391, 0x03a1,
-0x03a3, 0x03ab,
-0x03c2, 0x03c2,
-0x03cf, 0x03d1,
-0x03d5, 0x03d6,
-0x03d8, 0x03d8,
-0x03da, 0x03da,
-0x03dc, 0x03dc,
-0x03de, 0x03de,
-0x03e0, 0x03e0,
-0x03e2, 0x03e2,
-0x03e4, 0x03e4,
-0x03e6, 0x03e6,
-0x03e8, 0x03e8,
-0x03ea, 0x03ea,
-0x03ec, 0x03ec,
-0x03ee, 0x03ee,
-0x03f0, 0x03f1,
-0x03f4, 0x03f5,
-0x03f7, 0x03f7,
-0x03f9, 0x03fa,
-0x03fd, 0x042f,
-0x0460, 0x0460,
-0x0462, 0x0462,
-0x0464, 0x0464,
-0x0466, 0x0466,
-0x0468, 0x0468,
-0x046a, 0x046a,
-0x046c, 0x046c,
-0x046e, 0x046e,
-0x0470, 0x0470,
-0x0472, 0x0472,
-0x0474, 0x0474,
-0x0476, 0x0476,
-0x0478, 0x0478,
-0x047a, 0x047a,
-0x047c, 0x047c,
-0x047e, 0x047e,
-0x0480, 0x0480,
-0x048a, 0x048a,
-0x048c, 0x048c,
-0x048e, 0x048e,
-0x0490, 0x0490,
-0x0492, 0x0492,
-0x0494, 0x0494,
-0x0496, 0x0496,
-0x0498, 0x0498,
-0x049a, 0x049a,
-0x049c, 0x049c,
-0x049e, 0x049e,
-0x04a0, 0x04a0,
-0x04a2, 0x04a2,
-0x04a4, 0x04a4,
-0x04a6, 0x04a6,
-0x04a8, 0x04a8,
-0x04aa, 0x04aa,
-0x04ac, 0x04ac,
-0x04ae, 0x04ae,
-0x04b0, 0x04b0,
-0x04b2, 0x04b2,
-0x04b4, 0x04b4,
-0x04b6, 0x04b6,
-0x04b8, 0x04b8,
-0x04ba, 0x04ba,
-0x04bc, 0x04bc,
-0x04be, 0x04be,
-0x04c0, 0x04c1,
-0x04c3, 0x04c3,
-0x04c5, 0x04c5,
-0x04c7, 0x04c7,
-0x04c9, 0x04c9,
-0x04cb, 0x04cb,
-0x04cd, 0x04cd,
-0x04d0, 0x04d0,
-0x04d2, 0x04d2,
-0x04d4, 0x04d4,
-0x04d6, 0x04d6,
-0x04d8, 0x04d8,
-0x04da, 0x04da,
-0x04dc, 0x04dc,
-0x04de, 0x04de,
-0x04e0, 0x04e0,
-0x04e2, 0x04e2,
-0x04e4, 0x04e4,
-0x04e6, 0x04e6,
-0x04e8, 0x04e8,
-0x04ea, 0x04ea,
-0x04ec, 0x04ec,
-0x04ee, 0x04ee,
-0x04f0, 0x04f0,
-0x04f2, 0x04f2,
-0x04f4, 0x04f4,
-0x04f6, 0x04f6,
-0x04f8, 0x04f8,
-0x04fa, 0x04fa,
-0x04fc, 0x04fc,
-0x04fe, 0x04fe,
-0x0500, 0x0500,
-0x0502, 0x0502,
-0x0504, 0x0504,
-0x0506, 0x0506,
-0x0508, 0x0508,
-0x050a, 0x050a,
-0x050c, 0x050c,
-0x050e, 0x050e,
-0x0510, 0x0510,
-0x0512, 0x0512,
-0x0514, 0x0514,
-0x0516, 0x0516,
-0x0518, 0x0518,
-0x051a, 0x051a,
-0x051c, 0x051c,
-0x051e, 0x051e,
-0x0520, 0x0520,
-0x0522, 0x0522,
-0x0524, 0x0524,
-0x0526, 0x0526,
-0x0528, 0x0528,
-0x052a, 0x052a,
-0x052c, 0x052c,
-0x052e, 0x052e,
-0x0531, 0x0556,
-0x0587, 0x0587,
-0x10a0, 0x10c5,
-0x10c7, 0x10c7,
-0x10cd, 0x10cd,
-0x13f8, 0x13fd,
-0x1e00, 0x1e00,
-0x1e02, 0x1e02,
-0x1e04, 0x1e04,
-0x1e06, 0x1e06,
-0x1e08, 0x1e08,
-0x1e0a, 0x1e0a,
-0x1e0c, 0x1e0c,
-0x1e0e, 0x1e0e,
-0x1e10, 0x1e10,
-0x1e12, 0x1e12,
-0x1e14, 0x1e14,
-0x1e16, 0x1e16,
-0x1e18, 0x1e18,
-0x1e1a, 0x1e1a,
-0x1e1c, 0x1e1c,
-0x1e1e, 0x1e1e,
-0x1e20, 0x1e20,
-0x1e22, 0x1e22,
-0x1e24, 0x1e24,
-0x1e26, 0x1e26,
-0x1e28, 0x1e28,
-0x1e2a, 0x1e2a,
-0x1e2c, 0x1e2c,
-0x1e2e, 0x1e2e,
-0x1e30, 0x1e30,
-0x1e32, 0x1e32,
-0x1e34, 0x1e34,
-0x1e36, 0x1e36,
-0x1e38, 0x1e38,
-0x1e3a, 0x1e3a,
-0x1e3c, 0x1e3c,
-0x1e3e, 0x1e3e,
-0x1e40, 0x1e40,
-0x1e42, 0x1e42,
-0x1e44, 0x1e44,
-0x1e46, 0x1e46,
-0x1e48, 0x1e48,
-0x1e4a, 0x1e4a,
-0x1e4c, 0x1e4c,
-0x1e4e, 0x1e4e,
-0x1e50, 0x1e50,
-0x1e52, 0x1e52,
-0x1e54, 0x1e54,
-0x1e56, 0x1e56,
-0x1e58, 0x1e58,
-0x1e5a, 0x1e5a,
-0x1e5c, 0x1e5c,
-0x1e5e, 0x1e5e,
-0x1e60, 0x1e60,
-0x1e62, 0x1e62,
-0x1e64, 0x1e64,
-0x1e66, 0x1e66,
-0x1e68, 0x1e68,
-0x1e6a, 0x1e6a,
-0x1e6c, 0x1e6c,
-0x1e6e, 0x1e6e,
-0x1e70, 0x1e70,
-0x1e72, 0x1e72,
-0x1e74, 0x1e74,
-0x1e76, 0x1e76,
-0x1e78, 0x1e78,
-0x1e7a, 0x1e7a,
-0x1e7c, 0x1e7c,
-0x1e7e, 0x1e7e,
-0x1e80, 0x1e80,
-0x1e82, 0x1e82,
-0x1e84, 0x1e84,
-0x1e86, 0x1e86,
-0x1e88, 0x1e88,
-0x1e8a, 0x1e8a,
-0x1e8c, 0x1e8c,
-0x1e8e, 0x1e8e,
-0x1e90, 0x1e90,
-0x1e92, 0x1e92,
-0x1e94, 0x1e94,
-0x1e9a, 0x1e9b,
-0x1e9e, 0x1e9e,
-0x1ea0, 0x1ea0,
-0x1ea2, 0x1ea2,
-0x1ea4, 0x1ea4,
-0x1ea6, 0x1ea6,
-0x1ea8, 0x1ea8,
-0x1eaa, 0x1eaa,
-0x1eac, 0x1eac,
-0x1eae, 0x1eae,
-0x1eb0, 0x1eb0,
-0x1eb2, 0x1eb2,
-0x1eb4, 0x1eb4,
-0x1eb6, 0x1eb6,
-0x1eb8, 0x1eb8,
-0x1eba, 0x1eba,
-0x1ebc, 0x1ebc,
-0x1ebe, 0x1ebe,
-0x1ec0, 0x1ec0,
-0x1ec2, 0x1ec2,
-0x1ec4, 0x1ec4,
-0x1ec6, 0x1ec6,
-0x1ec8, 0x1ec8,
-0x1eca, 0x1eca,
-0x1ecc, 0x1ecc,
-0x1ece, 0x1ece,
-0x1ed0, 0x1ed0,
-0x1ed2, 0x1ed2,
-0x1ed4, 0x1ed4,
-0x1ed6, 0x1ed6,
-0x1ed8, 0x1ed8,
-0x1eda, 0x1eda,
-0x1edc, 0x1edc,
-0x1ede, 0x1ede,
-0x1ee0, 0x1ee0,
-0x1ee2, 0x1ee2,
-0x1ee4, 0x1ee4,
-0x1ee6, 0x1ee6,
-0x1ee8, 0x1ee8,
-0x1eea, 0x1eea,
-0x1eec, 0x1eec,
-0x1eee, 0x1eee,
-0x1ef0, 0x1ef0,
-0x1ef2, 0x1ef2,
-0x1ef4, 0x1ef4,
-0x1ef6, 0x1ef6,
-0x1ef8, 0x1ef8,
-0x1efa, 0x1efa,
-0x1efc, 0x1efc,
-0x1efe, 0x1efe,
-0x1f08, 0x1f0f,
-0x1f18, 0x1f1d,
-0x1f28, 0x1f2f,
-0x1f38, 0x1f3f,
-0x1f48, 0x1f4d,
-0x1f59, 0x1f59,
-0x1f5b, 0x1f5b,
-0x1f5d, 0x1f5d,
-0x1f5f, 0x1f5f,
-0x1f68, 0x1f6f,
-0x1f80, 0x1faf,
-0x1fb2, 0x1fb4,
-0x1fb7, 0x1fbc,
-0x1fc2, 0x1fc4,
-0x1fc7, 0x1fcc,
-0x1fd8, 0x1fdb,
-0x1fe8, 0x1fec,
-0x1ff2, 0x1ff4,
-0x1ff7, 0x1ffc,
-0x2126, 0x2126,
-0x212a, 0x212b,
-0x2132, 0x2132,
-0x2160, 0x216f,
-0x2183, 0x2183,
-0x24b6, 0x24cf,
-0x2c00, 0x2c2e,
-0x2c60, 0x2c60,
-0x2c62, 0x2c64,
-0x2c67, 0x2c67,
-0x2c69, 0x2c69,
-0x2c6b, 0x2c6b,
-0x2c6d, 0x2c70,
-0x2c72, 0x2c72,
-0x2c75, 0x2c75,
-0x2c7e, 0x2c80,
-0x2c82, 0x2c82,
-0x2c84, 0x2c84,
-0x2c86, 0x2c86,
-0x2c88, 0x2c88,
-0x2c8a, 0x2c8a,
-0x2c8c, 0x2c8c,
-0x2c8e, 0x2c8e,
-0x2c90, 0x2c90,
-0x2c92, 0x2c92,
-0x2c94, 0x2c94,
-0x2c96, 0x2c96,
-0x2c98, 0x2c98,
-0x2c9a, 0x2c9a,
-0x2c9c, 0x2c9c,
-0x2c9e, 0x2c9e,
-0x2ca0, 0x2ca0,
-0x2ca2, 0x2ca2,
-0x2ca4, 0x2ca4,
-0x2ca6, 0x2ca6,
-0x2ca8, 0x2ca8,
-0x2caa, 0x2caa,
-0x2cac, 0x2cac,
-0x2cae, 0x2cae,
-0x2cb0, 0x2cb0,
-0x2cb2, 0x2cb2,
-0x2cb4, 0x2cb4,
-0x2cb6, 0x2cb6,
-0x2cb8, 0x2cb8,
-0x2cba, 0x2cba,
-0x2cbc, 0x2cbc,
-0x2cbe, 0x2cbe,
-0x2cc0, 0x2cc0,
-0x2cc2, 0x2cc2,
-0x2cc4, 0x2cc4,
-0x2cc6, 0x2cc6,
-0x2cc8, 0x2cc8,
-0x2cca, 0x2cca,
-0x2ccc, 0x2ccc,
-0x2cce, 0x2cce,
-0x2cd0, 0x2cd0,
-0x2cd2, 0x2cd2,
-0x2cd4, 0x2cd4,
-0x2cd6, 0x2cd6,
-0x2cd8, 0x2cd8,
-0x2cda, 0x2cda,
-0x2cdc, 0x2cdc,
-0x2cde, 0x2cde,
-0x2ce0, 0x2ce0,
-0x2ce2, 0x2ce2,
-0x2ceb, 0x2ceb,
-0x2ced, 0x2ced,
-0x2cf2, 0x2cf2,
-0xa640, 0xa640,
-0xa642, 0xa642,
-0xa644, 0xa644,
-0xa646, 0xa646,
-0xa648, 0xa648,
-0xa64a, 0xa64a,
-0xa64c, 0xa64c,
-0xa64e, 0xa64e,
-0xa650, 0xa650,
-0xa652, 0xa652,
-0xa654, 0xa654,
-0xa656, 0xa656,
-0xa658, 0xa658,
-0xa65a, 0xa65a,
-0xa65c, 0xa65c,
-0xa65e, 0xa65e,
-0xa660, 0xa660,
-0xa662, 0xa662,
-0xa664, 0xa664,
-0xa666, 0xa666,
-0xa668, 0xa668,
-0xa66a, 0xa66a,
-0xa66c, 0xa66c,
-0xa680, 0xa680,
-0xa682, 0xa682,
-0xa684, 0xa684,
-0xa686, 0xa686,
-0xa688, 0xa688,
-0xa68a, 0xa68a,
-0xa68c, 0xa68c,
-0xa68e, 0xa68e,
-0xa690, 0xa690,
-0xa692, 0xa692,
-0xa694, 0xa694,
-0xa696, 0xa696,
-0xa698, 0xa698,
-0xa69a, 0xa69a,
-0xa722, 0xa722,
-0xa724, 0xa724,
-0xa726, 0xa726,
-0xa728, 0xa728,
-0xa72a, 0xa72a,
-0xa72c, 0xa72c,
-0xa72e, 0xa72e,
-0xa732, 0xa732,
-0xa734, 0xa734,
-0xa736, 0xa736,
-0xa738, 0xa738,
-0xa73a, 0xa73a,
-0xa73c, 0xa73c,
-0xa73e, 0xa73e,
-0xa740, 0xa740,
-0xa742, 0xa742,
-0xa744, 0xa744,
-0xa746, 0xa746,
-0xa748, 0xa748,
-0xa74a, 0xa74a,
-0xa74c, 0xa74c,
-0xa74e, 0xa74e,
-0xa750, 0xa750,
-0xa752, 0xa752,
-0xa754, 0xa754,
-0xa756, 0xa756,
-0xa758, 0xa758,
-0xa75a, 0xa75a,
-0xa75c, 0xa75c,
-0xa75e, 0xa75e,
-0xa760, 0xa760,
-0xa762, 0xa762,
-0xa764, 0xa764,
-0xa766, 0xa766,
-0xa768, 0xa768,
-0xa76a, 0xa76a,
-0xa76c, 0xa76c,
-0xa76e, 0xa76e,
-0xa779, 0xa779,
-0xa77b, 0xa77b,
-0xa77d, 0xa77e,
-0xa780, 0xa780,
-0xa782, 0xa782,
-0xa784, 0xa784,
-0xa786, 0xa786,
-0xa78b, 0xa78b,
-0xa78d, 0xa78d,
-0xa790, 0xa790,
-0xa792, 0xa792,
-0xa796, 0xa796,
-0xa798, 0xa798,
-0xa79a, 0xa79a,
-0xa79c, 0xa79c,
-0xa79e, 0xa79e,
-0xa7a0, 0xa7a0,
-0xa7a2, 0xa7a2,
-0xa7a4, 0xa7a4,
-0xa7a6, 0xa7a6,
-0xa7a8, 0xa7a8,
-0xa7aa, 0xa7ad,
-0xa7b0, 0xa7b4,
-0xa7b6, 0xa7b6,
-0xab70, 0xabbf,
-0xfb00, 0xfb06,
-0xfb13, 0xfb17,
-0xff21, 0xff3a,
-0x10400, 0x10427,
-0x10c80, 0x10cb2,
-0x118a0, 0x118bf,
-}; /* END of CR_Changes_When_Casefolded */
+CR_Tai_Viet[] = { 2,
+0xaa80, 0xaac2,
+0xaadb, 0xaadf,
+}; /* END of CR_Tai_Viet */
-/* PROPERTY: 'Changes_When_Casemapped': Derived Property */
+/* PROPERTY: 'Takri': Script */
static const OnigCodePoint
-CR_Changes_When_Casemapped[] = { 113,
-0x0041, 0x005a,
-0x0061, 0x007a,
-0x00b5, 0x00b5,
-0x00c0, 0x00d6,
-0x00d8, 0x00f6,
-0x00f8, 0x0137,
-0x0139, 0x018c,
-0x018e, 0x019a,
-0x019c, 0x01a9,
-0x01ac, 0x01b9,
-0x01bc, 0x01bd,
-0x01bf, 0x01bf,
-0x01c4, 0x0220,
-0x0222, 0x0233,
-0x023a, 0x0254,
-0x0256, 0x0257,
-0x0259, 0x0259,
-0x025b, 0x025c,
-0x0260, 0x0261,
-0x0263, 0x0263,
-0x0265, 0x0266,
-0x0268, 0x0269,
-0x026b, 0x026c,
-0x026f, 0x026f,
-0x0271, 0x0272,
-0x0275, 0x0275,
-0x027d, 0x027d,
-0x0280, 0x0280,
-0x0283, 0x0283,
-0x0287, 0x028c,
-0x0292, 0x0292,
-0x029d, 0x029e,
-0x0345, 0x0345,
-0x0370, 0x0373,
-0x0376, 0x0377,
-0x037b, 0x037d,
-0x037f, 0x037f,
-0x0386, 0x0386,
-0x0388, 0x038a,
-0x038c, 0x038c,
-0x038e, 0x03a1,
-0x03a3, 0x03d1,
-0x03d5, 0x03f5,
-0x03f7, 0x03fb,
-0x03fd, 0x0481,
-0x048a, 0x052f,
-0x0531, 0x0556,
-0x0561, 0x0587,
-0x10a0, 0x10c5,
-0x10c7, 0x10c7,
-0x10cd, 0x10cd,
-0x13a0, 0x13f5,
-0x13f8, 0x13fd,
-0x1d79, 0x1d79,
-0x1d7d, 0x1d7d,
-0x1e00, 0x1e9b,
-0x1e9e, 0x1e9e,
-0x1ea0, 0x1f15,
-0x1f18, 0x1f1d,
-0x1f20, 0x1f45,
-0x1f48, 0x1f4d,
-0x1f50, 0x1f57,
-0x1f59, 0x1f59,
-0x1f5b, 0x1f5b,
-0x1f5d, 0x1f5d,
-0x1f5f, 0x1f7d,
-0x1f80, 0x1fb4,
-0x1fb6, 0x1fbc,
-0x1fbe, 0x1fbe,
-0x1fc2, 0x1fc4,
-0x1fc6, 0x1fcc,
-0x1fd0, 0x1fd3,
-0x1fd6, 0x1fdb,
-0x1fe0, 0x1fec,
-0x1ff2, 0x1ff4,
-0x1ff6, 0x1ffc,
-0x2126, 0x2126,
-0x212a, 0x212b,
-0x2132, 0x2132,
-0x214e, 0x214e,
-0x2160, 0x217f,
-0x2183, 0x2184,
-0x24b6, 0x24e9,
-0x2c00, 0x2c2e,
-0x2c30, 0x2c5e,
-0x2c60, 0x2c70,
-0x2c72, 0x2c73,
-0x2c75, 0x2c76,
-0x2c7e, 0x2ce3,
-0x2ceb, 0x2cee,
-0x2cf2, 0x2cf3,
-0x2d00, 0x2d25,
-0x2d27, 0x2d27,
-0x2d2d, 0x2d2d,
-0xa640, 0xa66d,
-0xa680, 0xa69b,
-0xa722, 0xa72f,
-0xa732, 0xa76f,
-0xa779, 0xa787,
-0xa78b, 0xa78d,
-0xa790, 0xa793,
-0xa796, 0xa7ad,
-0xa7b0, 0xa7b7,
-0xab53, 0xab53,
-0xab70, 0xabbf,
-0xfb00, 0xfb06,
-0xfb13, 0xfb17,
-0xff21, 0xff3a,
-0xff41, 0xff5a,
-0x10400, 0x1044f,
-0x10c80, 0x10cb2,
-0x10cc0, 0x10cf2,
-0x118a0, 0x118df,
-}; /* END of CR_Changes_When_Casemapped */
+CR_Takri[] = { 2,
+0x11680, 0x116b7,
+0x116c0, 0x116c9,
+}; /* END of CR_Takri */
-/* PROPERTY: 'ID_Start': Derived Property */
+/* PROPERTY: 'Tamil': Script */
static const OnigCodePoint
-CR_ID_Start[] = { 555,
-0x0041, 0x005a,
-0x0061, 0x007a,
-0x00aa, 0x00aa,
-0x00b5, 0x00b5,
-0x00ba, 0x00ba,
-0x00c0, 0x00d6,
-0x00d8, 0x00f6,
-0x00f8, 0x02c1,
-0x02c6, 0x02d1,
-0x02e0, 0x02e4,
-0x02ec, 0x02ec,
-0x02ee, 0x02ee,
-0x0370, 0x0374,
-0x0376, 0x0377,
-0x037a, 0x037d,
-0x037f, 0x037f,
-0x0386, 0x0386,
-0x0388, 0x038a,
-0x038c, 0x038c,
-0x038e, 0x03a1,
-0x03a3, 0x03f5,
-0x03f7, 0x0481,
-0x048a, 0x052f,
-0x0531, 0x0556,
-0x0559, 0x0559,
-0x0561, 0x0587,
-0x05d0, 0x05ea,
-0x05f0, 0x05f2,
-0x0620, 0x064a,
-0x066e, 0x066f,
-0x0671, 0x06d3,
-0x06d5, 0x06d5,
-0x06e5, 0x06e6,
-0x06ee, 0x06ef,
-0x06fa, 0x06fc,
-0x06ff, 0x06ff,
-0x0710, 0x0710,
-0x0712, 0x072f,
-0x074d, 0x07a5,
-0x07b1, 0x07b1,
-0x07ca, 0x07ea,
-0x07f4, 0x07f5,
-0x07fa, 0x07fa,
-0x0800, 0x0815,
-0x081a, 0x081a,
-0x0824, 0x0824,
-0x0828, 0x0828,
-0x0840, 0x0858,
-0x08a0, 0x08b4,
-0x0904, 0x0939,
-0x093d, 0x093d,
-0x0950, 0x0950,
-0x0958, 0x0961,
-0x0971, 0x0980,
-0x0985, 0x098c,
-0x098f, 0x0990,
-0x0993, 0x09a8,
-0x09aa, 0x09b0,
-0x09b2, 0x09b2,
-0x09b6, 0x09b9,
-0x09bd, 0x09bd,
-0x09ce, 0x09ce,
-0x09dc, 0x09dd,
-0x09df, 0x09e1,
-0x09f0, 0x09f1,
-0x0a05, 0x0a0a,
-0x0a0f, 0x0a10,
-0x0a13, 0x0a28,
-0x0a2a, 0x0a30,
-0x0a32, 0x0a33,
-0x0a35, 0x0a36,
-0x0a38, 0x0a39,
-0x0a59, 0x0a5c,
-0x0a5e, 0x0a5e,
-0x0a72, 0x0a74,
-0x0a85, 0x0a8d,
-0x0a8f, 0x0a91,
-0x0a93, 0x0aa8,
-0x0aaa, 0x0ab0,
-0x0ab2, 0x0ab3,
-0x0ab5, 0x0ab9,
-0x0abd, 0x0abd,
-0x0ad0, 0x0ad0,
-0x0ae0, 0x0ae1,
-0x0af9, 0x0af9,
-0x0b05, 0x0b0c,
-0x0b0f, 0x0b10,
-0x0b13, 0x0b28,
-0x0b2a, 0x0b30,
-0x0b32, 0x0b33,
-0x0b35, 0x0b39,
-0x0b3d, 0x0b3d,
-0x0b5c, 0x0b5d,
-0x0b5f, 0x0b61,
-0x0b71, 0x0b71,
-0x0b83, 0x0b83,
+CR_Tamil[] = { 16,
+0x0b82, 0x0b83,
0x0b85, 0x0b8a,
0x0b8e, 0x0b90,
0x0b92, 0x0b95,
@@ -14232,461 +18712,838 @@ CR_ID_Start[] = { 555,
0x0ba3, 0x0ba4,
0x0ba8, 0x0baa,
0x0bae, 0x0bb9,
+0x0bbe, 0x0bc2,
+0x0bc6, 0x0bc8,
+0x0bca, 0x0bcd,
0x0bd0, 0x0bd0,
+0x0bd7, 0x0bd7,
+0x0be6, 0x0bfa,
+}; /* END of CR_Tamil */
+
+/* PROPERTY: 'Telugu': Script */
+static const OnigCodePoint
+CR_Telugu[] = { 13,
+0x0c00, 0x0c03,
0x0c05, 0x0c0c,
0x0c0e, 0x0c10,
0x0c12, 0x0c28,
0x0c2a, 0x0c39,
-0x0c3d, 0x0c3d,
+0x0c3d, 0x0c44,
+0x0c46, 0x0c48,
+0x0c4a, 0x0c4d,
+0x0c55, 0x0c56,
0x0c58, 0x0c5a,
-0x0c60, 0x0c61,
-0x0c85, 0x0c8c,
-0x0c8e, 0x0c90,
-0x0c92, 0x0ca8,
-0x0caa, 0x0cb3,
-0x0cb5, 0x0cb9,
-0x0cbd, 0x0cbd,
-0x0cde, 0x0cde,
-0x0ce0, 0x0ce1,
-0x0cf1, 0x0cf2,
-0x0d05, 0x0d0c,
-0x0d0e, 0x0d10,
-0x0d12, 0x0d3a,
-0x0d3d, 0x0d3d,
-0x0d4e, 0x0d4e,
-0x0d5f, 0x0d61,
-0x0d7a, 0x0d7f,
-0x0d85, 0x0d96,
-0x0d9a, 0x0db1,
-0x0db3, 0x0dbb,
-0x0dbd, 0x0dbd,
-0x0dc0, 0x0dc6,
-0x0e01, 0x0e30,
-0x0e32, 0x0e33,
-0x0e40, 0x0e46,
-0x0e81, 0x0e82,
-0x0e84, 0x0e84,
-0x0e87, 0x0e88,
-0x0e8a, 0x0e8a,
-0x0e8d, 0x0e8d,
-0x0e94, 0x0e97,
-0x0e99, 0x0e9f,
-0x0ea1, 0x0ea3,
-0x0ea5, 0x0ea5,
-0x0ea7, 0x0ea7,
-0x0eaa, 0x0eab,
-0x0ead, 0x0eb0,
-0x0eb2, 0x0eb3,
-0x0ebd, 0x0ebd,
-0x0ec0, 0x0ec4,
-0x0ec6, 0x0ec6,
-0x0edc, 0x0edf,
-0x0f00, 0x0f00,
-0x0f40, 0x0f47,
+0x0c60, 0x0c63,
+0x0c66, 0x0c6f,
+0x0c78, 0x0c7f,
+}; /* END of CR_Telugu */
+
+/* PROPERTY: 'Terminal_Punctuation': Binary Property */
+static const OnigCodePoint
+CR_Terminal_Punctuation[] = { 90,
+0x0021, 0x0021,
+0x002c, 0x002c,
+0x002e, 0x002e,
+0x003a, 0x003b,
+0x003f, 0x003f,
+0x037e, 0x037e,
+0x0387, 0x0387,
+0x0589, 0x0589,
+0x05c3, 0x05c3,
+0x060c, 0x060c,
+0x061b, 0x061b,
+0x061f, 0x061f,
+0x06d4, 0x06d4,
+0x0700, 0x070a,
+0x070c, 0x070c,
+0x07f8, 0x07f9,
+0x0830, 0x083e,
+0x085e, 0x085e,
+0x0964, 0x0965,
+0x0e5a, 0x0e5b,
+0x0f08, 0x0f08,
+0x0f0d, 0x0f12,
+0x104a, 0x104b,
+0x1361, 0x1368,
+0x166d, 0x166e,
+0x16eb, 0x16ed,
+0x1735, 0x1736,
+0x17d4, 0x17d6,
+0x17da, 0x17da,
+0x1802, 0x1805,
+0x1808, 0x1809,
+0x1944, 0x1945,
+0x1aa8, 0x1aab,
+0x1b5a, 0x1b5b,
+0x1b5d, 0x1b5f,
+0x1c3b, 0x1c3f,
+0x1c7e, 0x1c7f,
+0x203c, 0x203d,
+0x2047, 0x2049,
+0x2e2e, 0x2e2e,
+0x2e3c, 0x2e3c,
+0x2e41, 0x2e41,
+0x3001, 0x3002,
+0xa4fe, 0xa4ff,
+0xa60d, 0xa60f,
+0xa6f3, 0xa6f7,
+0xa876, 0xa877,
+0xa8ce, 0xa8cf,
+0xa92f, 0xa92f,
+0xa9c7, 0xa9c9,
+0xaa5d, 0xaa5f,
+0xaadf, 0xaadf,
+0xaaf0, 0xaaf1,
+0xabeb, 0xabeb,
+0xfe50, 0xfe52,
+0xfe54, 0xfe57,
+0xff01, 0xff01,
+0xff0c, 0xff0c,
+0xff0e, 0xff0e,
+0xff1a, 0xff1b,
+0xff1f, 0xff1f,
+0xff61, 0xff61,
+0xff64, 0xff64,
+0x1039f, 0x1039f,
+0x103d0, 0x103d0,
+0x10857, 0x10857,
+0x1091f, 0x1091f,
+0x10a56, 0x10a57,
+0x10af0, 0x10af5,
+0x10b3a, 0x10b3f,
+0x10b99, 0x10b9c,
+0x11047, 0x1104d,
+0x110be, 0x110c1,
+0x11141, 0x11143,
+0x111c5, 0x111c6,
+0x111cd, 0x111cd,
+0x111de, 0x111df,
+0x11238, 0x1123c,
+0x112a9, 0x112a9,
+0x115c2, 0x115c5,
+0x115c9, 0x115d7,
+0x11641, 0x11642,
+0x1173c, 0x1173e,
+0x12470, 0x12474,
+0x16a6e, 0x16a6f,
+0x16af5, 0x16af5,
+0x16b37, 0x16b39,
+0x16b44, 0x16b44,
+0x1bc9f, 0x1bc9f,
+0x1da87, 0x1da8a,
+}; /* END of CR_Terminal_Punctuation */
+
+/* PROPERTY: 'Thaana': Script */
+static const OnigCodePoint
+CR_Thaana[] = { 1,
+0x0780, 0x07b1,
+}; /* END of CR_Thaana */
+
+/* PROPERTY: 'Thai': Script */
+static const OnigCodePoint
+CR_Thai[] = { 2,
+0x0e01, 0x0e3a,
+0x0e40, 0x0e5b,
+}; /* END of CR_Thai */
+
+/* PROPERTY: 'Tibetan': Script */
+static const OnigCodePoint
+CR_Tibetan[] = { 7,
+0x0f00, 0x0f47,
0x0f49, 0x0f6c,
-0x0f88, 0x0f8c,
-0x1000, 0x102a,
-0x103f, 0x103f,
-0x1050, 0x1055,
-0x105a, 0x105d,
-0x1061, 0x1061,
-0x1065, 0x1066,
-0x106e, 0x1070,
-0x1075, 0x1081,
-0x108e, 0x108e,
-0x10a0, 0x10c5,
-0x10c7, 0x10c7,
-0x10cd, 0x10cd,
-0x10d0, 0x10fa,
-0x10fc, 0x1248,
-0x124a, 0x124d,
-0x1250, 0x1256,
-0x1258, 0x1258,
-0x125a, 0x125d,
-0x1260, 0x1288,
-0x128a, 0x128d,
-0x1290, 0x12b0,
-0x12b2, 0x12b5,
-0x12b8, 0x12be,
-0x12c0, 0x12c0,
-0x12c2, 0x12c5,
-0x12c8, 0x12d6,
-0x12d8, 0x1310,
-0x1312, 0x1315,
-0x1318, 0x135a,
-0x1380, 0x138f,
-0x13a0, 0x13f5,
-0x13f8, 0x13fd,
-0x1401, 0x166c,
-0x166f, 0x167f,
-0x1681, 0x169a,
-0x16a0, 0x16ea,
-0x16ee, 0x16f8,
-0x1700, 0x170c,
-0x170e, 0x1711,
-0x1720, 0x1731,
-0x1740, 0x1751,
-0x1760, 0x176c,
-0x176e, 0x1770,
-0x1780, 0x17b3,
-0x17d7, 0x17d7,
-0x17dc, 0x17dc,
-0x1820, 0x1877,
-0x1880, 0x18a8,
-0x18aa, 0x18aa,
-0x18b0, 0x18f5,
-0x1900, 0x191e,
-0x1950, 0x196d,
-0x1970, 0x1974,
-0x1980, 0x19ab,
-0x19b0, 0x19c9,
-0x1a00, 0x1a16,
-0x1a20, 0x1a54,
-0x1aa7, 0x1aa7,
-0x1b05, 0x1b33,
-0x1b45, 0x1b4b,
-0x1b83, 0x1ba0,
-0x1bae, 0x1baf,
-0x1bba, 0x1be5,
-0x1c00, 0x1c23,
-0x1c4d, 0x1c4f,
-0x1c5a, 0x1c7d,
-0x1ce9, 0x1cec,
-0x1cee, 0x1cf1,
-0x1cf5, 0x1cf6,
-0x1d00, 0x1dbf,
-0x1e00, 0x1f15,
-0x1f18, 0x1f1d,
-0x1f20, 0x1f45,
-0x1f48, 0x1f4d,
-0x1f50, 0x1f57,
-0x1f59, 0x1f59,
-0x1f5b, 0x1f5b,
-0x1f5d, 0x1f5d,
-0x1f5f, 0x1f7d,
-0x1f80, 0x1fb4,
-0x1fb6, 0x1fbc,
-0x1fbe, 0x1fbe,
-0x1fc2, 0x1fc4,
-0x1fc6, 0x1fcc,
-0x1fd0, 0x1fd3,
-0x1fd6, 0x1fdb,
-0x1fe0, 0x1fec,
-0x1ff2, 0x1ff4,
-0x1ff6, 0x1ffc,
-0x2071, 0x2071,
-0x207f, 0x207f,
-0x2090, 0x209c,
-0x2102, 0x2102,
-0x2107, 0x2107,
-0x210a, 0x2113,
-0x2115, 0x2115,
-0x2118, 0x211d,
-0x2124, 0x2124,
-0x2126, 0x2126,
-0x2128, 0x2128,
-0x212a, 0x2139,
-0x213c, 0x213f,
-0x2145, 0x2149,
-0x214e, 0x214e,
-0x2160, 0x2188,
-0x2c00, 0x2c2e,
-0x2c30, 0x2c5e,
-0x2c60, 0x2ce4,
-0x2ceb, 0x2cee,
-0x2cf2, 0x2cf3,
-0x2d00, 0x2d25,
-0x2d27, 0x2d27,
-0x2d2d, 0x2d2d,
+0x0f71, 0x0f97,
+0x0f99, 0x0fbc,
+0x0fbe, 0x0fcc,
+0x0fce, 0x0fd4,
+0x0fd9, 0x0fda,
+}; /* END of CR_Tibetan */
+
+/* PROPERTY: 'Tifinagh': Script */
+static const OnigCodePoint
+CR_Tifinagh[] = { 3,
0x2d30, 0x2d67,
-0x2d6f, 0x2d6f,
-0x2d80, 0x2d96,
-0x2da0, 0x2da6,
-0x2da8, 0x2dae,
-0x2db0, 0x2db6,
-0x2db8, 0x2dbe,
-0x2dc0, 0x2dc6,
-0x2dc8, 0x2dce,
-0x2dd0, 0x2dd6,
-0x2dd8, 0x2dde,
-0x3005, 0x3007,
-0x3021, 0x3029,
-0x3031, 0x3035,
-0x3038, 0x303c,
-0x3041, 0x3096,
-0x309b, 0x309f,
-0x30a1, 0x30fa,
-0x30fc, 0x30ff,
-0x3105, 0x312d,
-0x3131, 0x318e,
-0x31a0, 0x31ba,
-0x31f0, 0x31ff,
+0x2d6f, 0x2d70,
+0x2d7f, 0x2d7f,
+}; /* END of CR_Tifinagh */
+
+/* PROPERTY: 'Tirhuta': Script */
+static const OnigCodePoint
+CR_Tirhuta[] = { 2,
+0x11480, 0x114c7,
+0x114d0, 0x114d9,
+}; /* END of CR_Tirhuta */
+
+/* PROPERTY: 'Ugaritic': Script */
+static const OnigCodePoint
+CR_Ugaritic[] = { 2,
+0x10380, 0x1039d,
+0x1039f, 0x1039f,
+}; /* END of CR_Ugaritic */
+
+/* PROPERTY: 'Unified_Ideograph': Binary Property */
+static const OnigCodePoint
+CR_Unified_Ideograph[] = { 13,
0x3400, 0x4db5,
0x4e00, 0x9fd5,
-0xa000, 0xa48c,
-0xa4d0, 0xa4fd,
-0xa500, 0xa60c,
-0xa610, 0xa61f,
-0xa62a, 0xa62b,
-0xa640, 0xa66e,
-0xa67f, 0xa69d,
-0xa6a0, 0xa6ef,
-0xa717, 0xa71f,
-0xa722, 0xa788,
-0xa78b, 0xa7ad,
-0xa7b0, 0xa7b7,
-0xa7f7, 0xa801,
-0xa803, 0xa805,
-0xa807, 0xa80a,
-0xa80c, 0xa822,
-0xa840, 0xa873,
-0xa882, 0xa8b3,
-0xa8f2, 0xa8f7,
-0xa8fb, 0xa8fb,
-0xa8fd, 0xa8fd,
-0xa90a, 0xa925,
-0xa930, 0xa946,
-0xa960, 0xa97c,
-0xa984, 0xa9b2,
-0xa9cf, 0xa9cf,
-0xa9e0, 0xa9e4,
-0xa9e6, 0xa9ef,
-0xa9fa, 0xa9fe,
-0xaa00, 0xaa28,
-0xaa40, 0xaa42,
-0xaa44, 0xaa4b,
-0xaa60, 0xaa76,
-0xaa7a, 0xaa7a,
-0xaa7e, 0xaaaf,
-0xaab1, 0xaab1,
-0xaab5, 0xaab6,
-0xaab9, 0xaabd,
-0xaac0, 0xaac0,
-0xaac2, 0xaac2,
-0xaadb, 0xaadd,
-0xaae0, 0xaaea,
-0xaaf2, 0xaaf4,
-0xab01, 0xab06,
-0xab09, 0xab0e,
-0xab11, 0xab16,
-0xab20, 0xab26,
-0xab28, 0xab2e,
-0xab30, 0xab5a,
-0xab5c, 0xab65,
-0xab70, 0xabe2,
-0xac00, 0xd7a3,
-0xd7b0, 0xd7c6,
-0xd7cb, 0xd7fb,
-0xf900, 0xfa6d,
-0xfa70, 0xfad9,
-0xfb00, 0xfb06,
-0xfb13, 0xfb17,
-0xfb1d, 0xfb1d,
-0xfb1f, 0xfb28,
-0xfb2a, 0xfb36,
-0xfb38, 0xfb3c,
-0xfb3e, 0xfb3e,
-0xfb40, 0xfb41,
-0xfb43, 0xfb44,
-0xfb46, 0xfbb1,
-0xfbd3, 0xfd3d,
-0xfd50, 0xfd8f,
-0xfd92, 0xfdc7,
-0xfdf0, 0xfdfb,
-0xfe70, 0xfe74,
-0xfe76, 0xfefc,
-0xff21, 0xff3a,
-0xff41, 0xff5a,
-0xff66, 0xffbe,
-0xffc2, 0xffc7,
-0xffca, 0xffcf,
-0xffd2, 0xffd7,
-0xffda, 0xffdc,
-0x10000, 0x1000b,
-0x1000d, 0x10026,
-0x10028, 0x1003a,
-0x1003c, 0x1003d,
-0x1003f, 0x1004d,
-0x10050, 0x1005d,
-0x10080, 0x100fa,
-0x10140, 0x10174,
-0x10280, 0x1029c,
-0x102a0, 0x102d0,
-0x10300, 0x1031f,
-0x10330, 0x1034a,
-0x10350, 0x10375,
-0x10380, 0x1039d,
-0x103a0, 0x103c3,
-0x103c8, 0x103cf,
-0x103d1, 0x103d5,
-0x10400, 0x1049d,
-0x10500, 0x10527,
-0x10530, 0x10563,
-0x10600, 0x10736,
-0x10740, 0x10755,
-0x10760, 0x10767,
-0x10800, 0x10805,
-0x10808, 0x10808,
-0x1080a, 0x10835,
-0x10837, 0x10838,
-0x1083c, 0x1083c,
-0x1083f, 0x10855,
-0x10860, 0x10876,
-0x10880, 0x1089e,
-0x108e0, 0x108f2,
-0x108f4, 0x108f5,
-0x10900, 0x10915,
-0x10920, 0x10939,
-0x10980, 0x109b7,
-0x109be, 0x109bf,
-0x10a00, 0x10a00,
-0x10a10, 0x10a13,
-0x10a15, 0x10a17,
-0x10a19, 0x10a33,
-0x10a60, 0x10a7c,
-0x10a80, 0x10a9c,
-0x10ac0, 0x10ac7,
-0x10ac9, 0x10ae4,
-0x10b00, 0x10b35,
-0x10b40, 0x10b55,
-0x10b60, 0x10b72,
-0x10b80, 0x10b91,
-0x10c00, 0x10c48,
-0x10c80, 0x10cb2,
-0x10cc0, 0x10cf2,
-0x11003, 0x11037,
-0x11083, 0x110af,
-0x110d0, 0x110e8,
-0x11103, 0x11126,
-0x11150, 0x11172,
-0x11176, 0x11176,
-0x11183, 0x111b2,
-0x111c1, 0x111c4,
-0x111da, 0x111da,
-0x111dc, 0x111dc,
-0x11200, 0x11211,
-0x11213, 0x1122b,
-0x11280, 0x11286,
-0x11288, 0x11288,
-0x1128a, 0x1128d,
-0x1128f, 0x1129d,
-0x1129f, 0x112a8,
-0x112b0, 0x112de,
-0x11305, 0x1130c,
-0x1130f, 0x11310,
-0x11313, 0x11328,
-0x1132a, 0x11330,
-0x11332, 0x11333,
-0x11335, 0x11339,
-0x1133d, 0x1133d,
-0x11350, 0x11350,
-0x1135d, 0x11361,
-0x11480, 0x114af,
-0x114c4, 0x114c5,
-0x114c7, 0x114c7,
-0x11580, 0x115ae,
-0x115d8, 0x115db,
-0x11600, 0x1162f,
-0x11644, 0x11644,
-0x11680, 0x116aa,
-0x11700, 0x11719,
-0x118a0, 0x118df,
-0x118ff, 0x118ff,
-0x11ac0, 0x11af8,
-0x12000, 0x12399,
-0x12400, 0x1246e,
-0x12480, 0x12543,
-0x13000, 0x1342e,
-0x14400, 0x14646,
-0x16800, 0x16a38,
-0x16a40, 0x16a5e,
-0x16ad0, 0x16aed,
-0x16b00, 0x16b2f,
-0x16b40, 0x16b43,
-0x16b63, 0x16b77,
-0x16b7d, 0x16b8f,
-0x16f00, 0x16f44,
-0x16f50, 0x16f50,
-0x16f93, 0x16f9f,
-0x1b000, 0x1b001,
-0x1bc00, 0x1bc6a,
-0x1bc70, 0x1bc7c,
-0x1bc80, 0x1bc88,
-0x1bc90, 0x1bc99,
-0x1d400, 0x1d454,
-0x1d456, 0x1d49c,
-0x1d49e, 0x1d49f,
-0x1d4a2, 0x1d4a2,
-0x1d4a5, 0x1d4a6,
-0x1d4a9, 0x1d4ac,
-0x1d4ae, 0x1d4b9,
-0x1d4bb, 0x1d4bb,
-0x1d4bd, 0x1d4c3,
-0x1d4c5, 0x1d505,
-0x1d507, 0x1d50a,
-0x1d50d, 0x1d514,
-0x1d516, 0x1d51c,
-0x1d51e, 0x1d539,
-0x1d53b, 0x1d53e,
-0x1d540, 0x1d544,
-0x1d546, 0x1d546,
-0x1d54a, 0x1d550,
-0x1d552, 0x1d6a5,
-0x1d6a8, 0x1d6c0,
-0x1d6c2, 0x1d6da,
-0x1d6dc, 0x1d6fa,
-0x1d6fc, 0x1d714,
-0x1d716, 0x1d734,
-0x1d736, 0x1d74e,
-0x1d750, 0x1d76e,
-0x1d770, 0x1d788,
-0x1d78a, 0x1d7a8,
-0x1d7aa, 0x1d7c2,
-0x1d7c4, 0x1d7cb,
-0x1e800, 0x1e8c4,
-0x1ee00, 0x1ee03,
-0x1ee05, 0x1ee1f,
-0x1ee21, 0x1ee22,
-0x1ee24, 0x1ee24,
-0x1ee27, 0x1ee27,
-0x1ee29, 0x1ee32,
-0x1ee34, 0x1ee37,
-0x1ee39, 0x1ee39,
-0x1ee3b, 0x1ee3b,
-0x1ee42, 0x1ee42,
-0x1ee47, 0x1ee47,
-0x1ee49, 0x1ee49,
-0x1ee4b, 0x1ee4b,
-0x1ee4d, 0x1ee4f,
-0x1ee51, 0x1ee52,
-0x1ee54, 0x1ee54,
-0x1ee57, 0x1ee57,
-0x1ee59, 0x1ee59,
-0x1ee5b, 0x1ee5b,
-0x1ee5d, 0x1ee5d,
-0x1ee5f, 0x1ee5f,
-0x1ee61, 0x1ee62,
-0x1ee64, 0x1ee64,
-0x1ee67, 0x1ee6a,
-0x1ee6c, 0x1ee72,
-0x1ee74, 0x1ee77,
-0x1ee79, 0x1ee7c,
-0x1ee7e, 0x1ee7e,
-0x1ee80, 0x1ee89,
-0x1ee8b, 0x1ee9b,
-0x1eea1, 0x1eea3,
-0x1eea5, 0x1eea9,
-0x1eeab, 0x1eebb,
+0xfa0e, 0xfa0f,
+0xfa11, 0xfa11,
+0xfa13, 0xfa14,
+0xfa1f, 0xfa1f,
+0xfa21, 0xfa21,
+0xfa23, 0xfa24,
+0xfa27, 0xfa29,
0x20000, 0x2a6d6,
0x2a700, 0x2b734,
0x2b740, 0x2b81d,
0x2b820, 0x2cea1,
-0x2f800, 0x2fa1d,
-}; /* END of CR_ID_Start */
+}; /* END of CR_Unified_Ideograph */
-/* PROPERTY: 'ID_Continue': Derived Property */
+/* PROPERTY: 'Unknown': Script */
static const OnigCodePoint
-CR_ID_Continue[] = { 651,
+CR_Unknown[] = { 611,
+0x0378, 0x0379,
+0x0380, 0x0383,
+0x038b, 0x038b,
+0x038d, 0x038d,
+0x03a2, 0x03a2,
+0x0530, 0x0530,
+0x0557, 0x0558,
+0x0560, 0x0560,
+0x0588, 0x0588,
+0x058b, 0x058c,
+0x0590, 0x0590,
+0x05c8, 0x05cf,
+0x05eb, 0x05ef,
+0x05f5, 0x05ff,
+0x061d, 0x061d,
+0x070e, 0x070e,
+0x074b, 0x074c,
+0x07b2, 0x07bf,
+0x07fb, 0x07ff,
+0x082e, 0x082f,
+0x083f, 0x083f,
+0x085c, 0x085d,
+0x085f, 0x089f,
+0x08b5, 0x08e2,
+0x0984, 0x0984,
+0x098d, 0x098e,
+0x0991, 0x0992,
+0x09a9, 0x09a9,
+0x09b1, 0x09b1,
+0x09b3, 0x09b5,
+0x09ba, 0x09bb,
+0x09c5, 0x09c6,
+0x09c9, 0x09ca,
+0x09cf, 0x09d6,
+0x09d8, 0x09db,
+0x09de, 0x09de,
+0x09e4, 0x09e5,
+0x09fc, 0x0a00,
+0x0a04, 0x0a04,
+0x0a0b, 0x0a0e,
+0x0a11, 0x0a12,
+0x0a29, 0x0a29,
+0x0a31, 0x0a31,
+0x0a34, 0x0a34,
+0x0a37, 0x0a37,
+0x0a3a, 0x0a3b,
+0x0a3d, 0x0a3d,
+0x0a43, 0x0a46,
+0x0a49, 0x0a4a,
+0x0a4e, 0x0a50,
+0x0a52, 0x0a58,
+0x0a5d, 0x0a5d,
+0x0a5f, 0x0a65,
+0x0a76, 0x0a80,
+0x0a84, 0x0a84,
+0x0a8e, 0x0a8e,
+0x0a92, 0x0a92,
+0x0aa9, 0x0aa9,
+0x0ab1, 0x0ab1,
+0x0ab4, 0x0ab4,
+0x0aba, 0x0abb,
+0x0ac6, 0x0ac6,
+0x0aca, 0x0aca,
+0x0ace, 0x0acf,
+0x0ad1, 0x0adf,
+0x0ae4, 0x0ae5,
+0x0af2, 0x0af8,
+0x0afa, 0x0b00,
+0x0b04, 0x0b04,
+0x0b0d, 0x0b0e,
+0x0b11, 0x0b12,
+0x0b29, 0x0b29,
+0x0b31, 0x0b31,
+0x0b34, 0x0b34,
+0x0b3a, 0x0b3b,
+0x0b45, 0x0b46,
+0x0b49, 0x0b4a,
+0x0b4e, 0x0b55,
+0x0b58, 0x0b5b,
+0x0b5e, 0x0b5e,
+0x0b64, 0x0b65,
+0x0b78, 0x0b81,
+0x0b84, 0x0b84,
+0x0b8b, 0x0b8d,
+0x0b91, 0x0b91,
+0x0b96, 0x0b98,
+0x0b9b, 0x0b9b,
+0x0b9d, 0x0b9d,
+0x0ba0, 0x0ba2,
+0x0ba5, 0x0ba7,
+0x0bab, 0x0bad,
+0x0bba, 0x0bbd,
+0x0bc3, 0x0bc5,
+0x0bc9, 0x0bc9,
+0x0bce, 0x0bcf,
+0x0bd1, 0x0bd6,
+0x0bd8, 0x0be5,
+0x0bfb, 0x0bff,
+0x0c04, 0x0c04,
+0x0c0d, 0x0c0d,
+0x0c11, 0x0c11,
+0x0c29, 0x0c29,
+0x0c3a, 0x0c3c,
+0x0c45, 0x0c45,
+0x0c49, 0x0c49,
+0x0c4e, 0x0c54,
+0x0c57, 0x0c57,
+0x0c5b, 0x0c5f,
+0x0c64, 0x0c65,
+0x0c70, 0x0c77,
+0x0c80, 0x0c80,
+0x0c84, 0x0c84,
+0x0c8d, 0x0c8d,
+0x0c91, 0x0c91,
+0x0ca9, 0x0ca9,
+0x0cb4, 0x0cb4,
+0x0cba, 0x0cbb,
+0x0cc5, 0x0cc5,
+0x0cc9, 0x0cc9,
+0x0cce, 0x0cd4,
+0x0cd7, 0x0cdd,
+0x0cdf, 0x0cdf,
+0x0ce4, 0x0ce5,
+0x0cf0, 0x0cf0,
+0x0cf3, 0x0d00,
+0x0d04, 0x0d04,
+0x0d0d, 0x0d0d,
+0x0d11, 0x0d11,
+0x0d3b, 0x0d3c,
+0x0d45, 0x0d45,
+0x0d49, 0x0d49,
+0x0d4f, 0x0d56,
+0x0d58, 0x0d5e,
+0x0d64, 0x0d65,
+0x0d76, 0x0d78,
+0x0d80, 0x0d81,
+0x0d84, 0x0d84,
+0x0d97, 0x0d99,
+0x0db2, 0x0db2,
+0x0dbc, 0x0dbc,
+0x0dbe, 0x0dbf,
+0x0dc7, 0x0dc9,
+0x0dcb, 0x0dce,
+0x0dd5, 0x0dd5,
+0x0dd7, 0x0dd7,
+0x0de0, 0x0de5,
+0x0df0, 0x0df1,
+0x0df5, 0x0e00,
+0x0e3b, 0x0e3e,
+0x0e5c, 0x0e80,
+0x0e83, 0x0e83,
+0x0e85, 0x0e86,
+0x0e89, 0x0e89,
+0x0e8b, 0x0e8c,
+0x0e8e, 0x0e93,
+0x0e98, 0x0e98,
+0x0ea0, 0x0ea0,
+0x0ea4, 0x0ea4,
+0x0ea6, 0x0ea6,
+0x0ea8, 0x0ea9,
+0x0eac, 0x0eac,
+0x0eba, 0x0eba,
+0x0ebe, 0x0ebf,
+0x0ec5, 0x0ec5,
+0x0ec7, 0x0ec7,
+0x0ece, 0x0ecf,
+0x0eda, 0x0edb,
+0x0ee0, 0x0eff,
+0x0f48, 0x0f48,
+0x0f6d, 0x0f70,
+0x0f98, 0x0f98,
+0x0fbd, 0x0fbd,
+0x0fcd, 0x0fcd,
+0x0fdb, 0x0fff,
+0x10c6, 0x10c6,
+0x10c8, 0x10cc,
+0x10ce, 0x10cf,
+0x1249, 0x1249,
+0x124e, 0x124f,
+0x1257, 0x1257,
+0x1259, 0x1259,
+0x125e, 0x125f,
+0x1289, 0x1289,
+0x128e, 0x128f,
+0x12b1, 0x12b1,
+0x12b6, 0x12b7,
+0x12bf, 0x12bf,
+0x12c1, 0x12c1,
+0x12c6, 0x12c7,
+0x12d7, 0x12d7,
+0x1311, 0x1311,
+0x1316, 0x1317,
+0x135b, 0x135c,
+0x137d, 0x137f,
+0x139a, 0x139f,
+0x13f6, 0x13f7,
+0x13fe, 0x13ff,
+0x169d, 0x169f,
+0x16f9, 0x16ff,
+0x170d, 0x170d,
+0x1715, 0x171f,
+0x1737, 0x173f,
+0x1754, 0x175f,
+0x176d, 0x176d,
+0x1771, 0x1771,
+0x1774, 0x177f,
+0x17de, 0x17df,
+0x17ea, 0x17ef,
+0x17fa, 0x17ff,
+0x180f, 0x180f,
+0x181a, 0x181f,
+0x1878, 0x187f,
+0x18ab, 0x18af,
+0x18f6, 0x18ff,
+0x191f, 0x191f,
+0x192c, 0x192f,
+0x193c, 0x193f,
+0x1941, 0x1943,
+0x196e, 0x196f,
+0x1975, 0x197f,
+0x19ac, 0x19af,
+0x19ca, 0x19cf,
+0x19db, 0x19dd,
+0x1a1c, 0x1a1d,
+0x1a5f, 0x1a5f,
+0x1a7d, 0x1a7e,
+0x1a8a, 0x1a8f,
+0x1a9a, 0x1a9f,
+0x1aae, 0x1aaf,
+0x1abf, 0x1aff,
+0x1b4c, 0x1b4f,
+0x1b7d, 0x1b7f,
+0x1bf4, 0x1bfb,
+0x1c38, 0x1c3a,
+0x1c4a, 0x1c4c,
+0x1c80, 0x1cbf,
+0x1cc8, 0x1ccf,
+0x1cf7, 0x1cf7,
+0x1cfa, 0x1cff,
+0x1df6, 0x1dfb,
+0x1f16, 0x1f17,
+0x1f1e, 0x1f1f,
+0x1f46, 0x1f47,
+0x1f4e, 0x1f4f,
+0x1f58, 0x1f58,
+0x1f5a, 0x1f5a,
+0x1f5c, 0x1f5c,
+0x1f5e, 0x1f5e,
+0x1f7e, 0x1f7f,
+0x1fb5, 0x1fb5,
+0x1fc5, 0x1fc5,
+0x1fd4, 0x1fd5,
+0x1fdc, 0x1fdc,
+0x1ff0, 0x1ff1,
+0x1ff5, 0x1ff5,
+0x1fff, 0x1fff,
+0x2065, 0x2065,
+0x2072, 0x2073,
+0x208f, 0x208f,
+0x209d, 0x209f,
+0x20bf, 0x20cf,
+0x20f1, 0x20ff,
+0x218c, 0x218f,
+0x23fb, 0x23ff,
+0x2427, 0x243f,
+0x244b, 0x245f,
+0x2b74, 0x2b75,
+0x2b96, 0x2b97,
+0x2bba, 0x2bbc,
+0x2bc9, 0x2bc9,
+0x2bd2, 0x2beb,
+0x2bf0, 0x2bff,
+0x2c2f, 0x2c2f,
+0x2c5f, 0x2c5f,
+0x2cf4, 0x2cf8,
+0x2d26, 0x2d26,
+0x2d28, 0x2d2c,
+0x2d2e, 0x2d2f,
+0x2d68, 0x2d6e,
+0x2d71, 0x2d7e,
+0x2d97, 0x2d9f,
+0x2da7, 0x2da7,
+0x2daf, 0x2daf,
+0x2db7, 0x2db7,
+0x2dbf, 0x2dbf,
+0x2dc7, 0x2dc7,
+0x2dcf, 0x2dcf,
+0x2dd7, 0x2dd7,
+0x2ddf, 0x2ddf,
+0x2e43, 0x2e7f,
+0x2e9a, 0x2e9a,
+0x2ef4, 0x2eff,
+0x2fd6, 0x2fef,
+0x2ffc, 0x2fff,
+0x3040, 0x3040,
+0x3097, 0x3098,
+0x3100, 0x3104,
+0x312e, 0x3130,
+0x318f, 0x318f,
+0x31bb, 0x31bf,
+0x31e4, 0x31ef,
+0x321f, 0x321f,
+0x32ff, 0x32ff,
+0x4db6, 0x4dbf,
+0x9fd6, 0x9fff,
+0xa48d, 0xa48f,
+0xa4c7, 0xa4cf,
+0xa62c, 0xa63f,
+0xa6f8, 0xa6ff,
+0xa7ae, 0xa7af,
+0xa7b8, 0xa7f6,
+0xa82c, 0xa82f,
+0xa83a, 0xa83f,
+0xa878, 0xa87f,
+0xa8c5, 0xa8cd,
+0xa8da, 0xa8df,
+0xa8fe, 0xa8ff,
+0xa954, 0xa95e,
+0xa97d, 0xa97f,
+0xa9ce, 0xa9ce,
+0xa9da, 0xa9dd,
+0xa9ff, 0xa9ff,
+0xaa37, 0xaa3f,
+0xaa4e, 0xaa4f,
+0xaa5a, 0xaa5b,
+0xaac3, 0xaada,
+0xaaf7, 0xab00,
+0xab07, 0xab08,
+0xab0f, 0xab10,
+0xab17, 0xab1f,
+0xab27, 0xab27,
+0xab2f, 0xab2f,
+0xab66, 0xab6f,
+0xabee, 0xabef,
+0xabfa, 0xabff,
+0xd7a4, 0xd7af,
+0xd7c7, 0xd7ca,
+0xd7fc, 0xf8ff,
+0xfa6e, 0xfa6f,
+0xfada, 0xfaff,
+0xfb07, 0xfb12,
+0xfb18, 0xfb1c,
+0xfb37, 0xfb37,
+0xfb3d, 0xfb3d,
+0xfb3f, 0xfb3f,
+0xfb42, 0xfb42,
+0xfb45, 0xfb45,
+0xfbc2, 0xfbd2,
+0xfd40, 0xfd4f,
+0xfd90, 0xfd91,
+0xfdc8, 0xfdef,
+0xfdfe, 0xfdff,
+0xfe1a, 0xfe1f,
+0xfe53, 0xfe53,
+0xfe67, 0xfe67,
+0xfe6c, 0xfe6f,
+0xfe75, 0xfe75,
+0xfefd, 0xfefe,
+0xff00, 0xff00,
+0xffbf, 0xffc1,
+0xffc8, 0xffc9,
+0xffd0, 0xffd1,
+0xffd8, 0xffd9,
+0xffdd, 0xffdf,
+0xffe7, 0xffe7,
+0xffef, 0xfff8,
+0xfffe, 0xffff,
+0x1000c, 0x1000c,
+0x10027, 0x10027,
+0x1003b, 0x1003b,
+0x1003e, 0x1003e,
+0x1004e, 0x1004f,
+0x1005e, 0x1007f,
+0x100fb, 0x100ff,
+0x10103, 0x10106,
+0x10134, 0x10136,
+0x1018d, 0x1018f,
+0x1019c, 0x1019f,
+0x101a1, 0x101cf,
+0x101fe, 0x1027f,
+0x1029d, 0x1029f,
+0x102d1, 0x102df,
+0x102fc, 0x102ff,
+0x10324, 0x1032f,
+0x1034b, 0x1034f,
+0x1037b, 0x1037f,
+0x1039e, 0x1039e,
+0x103c4, 0x103c7,
+0x103d6, 0x103ff,
+0x1049e, 0x1049f,
+0x104aa, 0x104ff,
+0x10528, 0x1052f,
+0x10564, 0x1056e,
+0x10570, 0x105ff,
+0x10737, 0x1073f,
+0x10756, 0x1075f,
+0x10768, 0x107ff,
+0x10806, 0x10807,
+0x10809, 0x10809,
+0x10836, 0x10836,
+0x10839, 0x1083b,
+0x1083d, 0x1083e,
+0x10856, 0x10856,
+0x1089f, 0x108a6,
+0x108b0, 0x108df,
+0x108f3, 0x108f3,
+0x108f6, 0x108fa,
+0x1091c, 0x1091e,
+0x1093a, 0x1093e,
+0x10940, 0x1097f,
+0x109b8, 0x109bb,
+0x109d0, 0x109d1,
+0x10a04, 0x10a04,
+0x10a07, 0x10a0b,
+0x10a14, 0x10a14,
+0x10a18, 0x10a18,
+0x10a34, 0x10a37,
+0x10a3b, 0x10a3e,
+0x10a48, 0x10a4f,
+0x10a59, 0x10a5f,
+0x10aa0, 0x10abf,
+0x10ae7, 0x10aea,
+0x10af7, 0x10aff,
+0x10b36, 0x10b38,
+0x10b56, 0x10b57,
+0x10b73, 0x10b77,
+0x10b92, 0x10b98,
+0x10b9d, 0x10ba8,
+0x10bb0, 0x10bff,
+0x10c49, 0x10c7f,
+0x10cb3, 0x10cbf,
+0x10cf3, 0x10cf9,
+0x10d00, 0x10e5f,
+0x10e7f, 0x10fff,
+0x1104e, 0x11051,
+0x11070, 0x1107e,
+0x110c2, 0x110cf,
+0x110e9, 0x110ef,
+0x110fa, 0x110ff,
+0x11135, 0x11135,
+0x11144, 0x1114f,
+0x11177, 0x1117f,
+0x111ce, 0x111cf,
+0x111e0, 0x111e0,
+0x111f5, 0x111ff,
+0x11212, 0x11212,
+0x1123e, 0x1127f,
+0x11287, 0x11287,
+0x11289, 0x11289,
+0x1128e, 0x1128e,
+0x1129e, 0x1129e,
+0x112aa, 0x112af,
+0x112eb, 0x112ef,
+0x112fa, 0x112ff,
+0x11304, 0x11304,
+0x1130d, 0x1130e,
+0x11311, 0x11312,
+0x11329, 0x11329,
+0x11331, 0x11331,
+0x11334, 0x11334,
+0x1133a, 0x1133b,
+0x11345, 0x11346,
+0x11349, 0x1134a,
+0x1134e, 0x1134f,
+0x11351, 0x11356,
+0x11358, 0x1135c,
+0x11364, 0x11365,
+0x1136d, 0x1136f,
+0x11375, 0x1147f,
+0x114c8, 0x114cf,
+0x114da, 0x1157f,
+0x115b6, 0x115b7,
+0x115de, 0x115ff,
+0x11645, 0x1164f,
+0x1165a, 0x1167f,
+0x116b8, 0x116bf,
+0x116ca, 0x116ff,
+0x1171a, 0x1171c,
+0x1172c, 0x1172f,
+0x11740, 0x1189f,
+0x118f3, 0x118fe,
+0x11900, 0x11abf,
+0x11af9, 0x11fff,
+0x1239a, 0x123ff,
+0x1246f, 0x1246f,
+0x12475, 0x1247f,
+0x12544, 0x12fff,
+0x1342f, 0x143ff,
+0x14647, 0x167ff,
+0x16a39, 0x16a3f,
+0x16a5f, 0x16a5f,
+0x16a6a, 0x16a6d,
+0x16a70, 0x16acf,
+0x16aee, 0x16aef,
+0x16af6, 0x16aff,
+0x16b46, 0x16b4f,
+0x16b5a, 0x16b5a,
+0x16b62, 0x16b62,
+0x16b78, 0x16b7c,
+0x16b90, 0x16eff,
+0x16f45, 0x16f4f,
+0x16f7f, 0x16f8e,
+0x16fa0, 0x1afff,
+0x1b002, 0x1bbff,
+0x1bc6b, 0x1bc6f,
+0x1bc7d, 0x1bc7f,
+0x1bc89, 0x1bc8f,
+0x1bc9a, 0x1bc9b,
+0x1bca4, 0x1cfff,
+0x1d0f6, 0x1d0ff,
+0x1d127, 0x1d128,
+0x1d1e9, 0x1d1ff,
+0x1d246, 0x1d2ff,
+0x1d357, 0x1d35f,
+0x1d372, 0x1d3ff,
+0x1d455, 0x1d455,
+0x1d49d, 0x1d49d,
+0x1d4a0, 0x1d4a1,
+0x1d4a3, 0x1d4a4,
+0x1d4a7, 0x1d4a8,
+0x1d4ad, 0x1d4ad,
+0x1d4ba, 0x1d4ba,
+0x1d4bc, 0x1d4bc,
+0x1d4c4, 0x1d4c4,
+0x1d506, 0x1d506,
+0x1d50b, 0x1d50c,
+0x1d515, 0x1d515,
+0x1d51d, 0x1d51d,
+0x1d53a, 0x1d53a,
+0x1d53f, 0x1d53f,
+0x1d545, 0x1d545,
+0x1d547, 0x1d549,
+0x1d551, 0x1d551,
+0x1d6a6, 0x1d6a7,
+0x1d7cc, 0x1d7cd,
+0x1da8c, 0x1da9a,
+0x1daa0, 0x1daa0,
+0x1dab0, 0x1e7ff,
+0x1e8c5, 0x1e8c6,
+0x1e8d7, 0x1edff,
+0x1ee04, 0x1ee04,
+0x1ee20, 0x1ee20,
+0x1ee23, 0x1ee23,
+0x1ee25, 0x1ee26,
+0x1ee28, 0x1ee28,
+0x1ee33, 0x1ee33,
+0x1ee38, 0x1ee38,
+0x1ee3a, 0x1ee3a,
+0x1ee3c, 0x1ee41,
+0x1ee43, 0x1ee46,
+0x1ee48, 0x1ee48,
+0x1ee4a, 0x1ee4a,
+0x1ee4c, 0x1ee4c,
+0x1ee50, 0x1ee50,
+0x1ee53, 0x1ee53,
+0x1ee55, 0x1ee56,
+0x1ee58, 0x1ee58,
+0x1ee5a, 0x1ee5a,
+0x1ee5c, 0x1ee5c,
+0x1ee5e, 0x1ee5e,
+0x1ee60, 0x1ee60,
+0x1ee63, 0x1ee63,
+0x1ee65, 0x1ee66,
+0x1ee6b, 0x1ee6b,
+0x1ee73, 0x1ee73,
+0x1ee78, 0x1ee78,
+0x1ee7d, 0x1ee7d,
+0x1ee7f, 0x1ee7f,
+0x1ee8a, 0x1ee8a,
+0x1ee9c, 0x1eea0,
+0x1eea4, 0x1eea4,
+0x1eeaa, 0x1eeaa,
+0x1eebc, 0x1eeef,
+0x1eef2, 0x1efff,
+0x1f02c, 0x1f02f,
+0x1f094, 0x1f09f,
+0x1f0af, 0x1f0b0,
+0x1f0c0, 0x1f0c0,
+0x1f0d0, 0x1f0d0,
+0x1f0f6, 0x1f0ff,
+0x1f10d, 0x1f10f,
+0x1f12f, 0x1f12f,
+0x1f16c, 0x1f16f,
+0x1f19b, 0x1f1e5,
+0x1f203, 0x1f20f,
+0x1f23b, 0x1f23f,
+0x1f249, 0x1f24f,
+0x1f252, 0x1f2ff,
+0x1f57a, 0x1f57a,
+0x1f5a4, 0x1f5a4,
+0x1f6d1, 0x1f6df,
+0x1f6ed, 0x1f6ef,
+0x1f6f4, 0x1f6ff,
+0x1f774, 0x1f77f,
+0x1f7d5, 0x1f7ff,
+0x1f80c, 0x1f80f,
+0x1f848, 0x1f84f,
+0x1f85a, 0x1f85f,
+0x1f888, 0x1f88f,
+0x1f8ae, 0x1f90f,
+0x1f919, 0x1f97f,
+0x1f985, 0x1f9bf,
+0x1f9c1, 0x1ffff,
+0x2a6d7, 0x2a6ff,
+0x2b735, 0x2b73f,
+0x2b81e, 0x2b81f,
+0x2cea2, 0x2f7ff,
+0x2fa1e, 0xe0000,
+0xe0002, 0xe001f,
+0xe0080, 0xe00ff,
+0xe01f0, 0x10ffff,
+}; /* END of CR_Unknown */
+
+/* PROPERTY: 'Uppercase': Derived Property */
+#define CR_Uppercase CR_Upper
+
+/* PROPERTY: 'Vai': Script */
+static const OnigCodePoint
+CR_Vai[] = { 1,
+0xa500, 0xa62b,
+}; /* END of CR_Vai */
+
+/* PROPERTY: 'Variation_Selector': Binary Property */
+static const OnigCodePoint
+CR_Variation_Selector[] = { 3,
+0x180b, 0x180d,
+0xfe00, 0xfe0f,
+0xe0100, 0xe01ef,
+}; /* END of CR_Variation_Selector */
+
+/* PROPERTY: 'Warang_Citi': Script */
+static const OnigCodePoint
+CR_Warang_Citi[] = { 2,
+0x118a0, 0x118f2,
+0x118ff, 0x118ff,
+}; /* END of CR_Warang_Citi */
+
+/* PROPERTY: 'White_Space': Binary Property */
+#define CR_White_Space CR_Space
+
+/* PROPERTY: 'XID_Continue': Derived Property */
+static const OnigCodePoint
+CR_XID_Continue[] = { 658,
0x0030, 0x0039,
0x0041, 0x005a,
0x005f, 0x005f,
@@ -14704,7 +19561,7 @@ CR_ID_Continue[] = { 651,
0x02ee, 0x02ee,
0x0300, 0x0374,
0x0376, 0x0377,
-0x037a, 0x037d,
+0x037b, 0x037d,
0x037f, 0x037f,
0x0386, 0x038a,
0x038c, 0x038c,
@@ -15034,7 +19891,8 @@ CR_ID_Continue[] = { 651,
0x3031, 0x3035,
0x3038, 0x303c,
0x3041, 0x3096,
-0x3099, 0x309f,
+0x3099, 0x309a,
+0x309d, 0x309f,
0x30a1, 0x30fa,
0x30fc, 0x30ff,
0x3105, 0x312d,
@@ -15099,16 +19957,22 @@ CR_ID_Continue[] = { 651,
0xfb40, 0xfb41,
0xfb43, 0xfb44,
0xfb46, 0xfbb1,
-0xfbd3, 0xfd3d,
+0xfbd3, 0xfc5d,
+0xfc64, 0xfd3d,
0xfd50, 0xfd8f,
0xfd92, 0xfdc7,
-0xfdf0, 0xfdfb,
+0xfdf0, 0xfdf9,
0xfe00, 0xfe0f,
0xfe20, 0xfe2f,
0xfe33, 0xfe34,
0xfe4d, 0xfe4f,
-0xfe70, 0xfe74,
-0xfe76, 0xfefc,
+0xfe71, 0xfe71,
+0xfe73, 0xfe73,
+0xfe77, 0xfe77,
+0xfe79, 0xfe79,
+0xfe7b, 0xfe7b,
+0xfe7d, 0xfe7d,
+0xfe7f, 0xfefc,
0xff10, 0xff19,
0xff21, 0xff3a,
0xff3f, 0xff3f,
@@ -15338,7 +20202,7 @@ CR_ID_Continue[] = { 651,
0x2b820, 0x2cea1,
0x2f800, 0x2fa1d,
0xe0100, 0xe01ef,
-}; /* END of CR_ID_Continue */
+}; /* END of CR_XID_Continue */
/* PROPERTY: 'XID_Start': Derived Property */
static const OnigCodePoint
@@ -15907,2523 +20771,6 @@ CR_XID_Start[] = { 562,
0x2f800, 0x2fa1d,
}; /* END of CR_XID_Start */
-/* PROPERTY: 'XID_Continue': Derived Property */
-static const OnigCodePoint
-CR_XID_Continue[] = { 658,
-0x0030, 0x0039,
-0x0041, 0x005a,
-0x005f, 0x005f,
-0x0061, 0x007a,
-0x00aa, 0x00aa,
-0x00b5, 0x00b5,
-0x00b7, 0x00b7,
-0x00ba, 0x00ba,
-0x00c0, 0x00d6,
-0x00d8, 0x00f6,
-0x00f8, 0x02c1,
-0x02c6, 0x02d1,
-0x02e0, 0x02e4,
-0x02ec, 0x02ec,
-0x02ee, 0x02ee,
-0x0300, 0x0374,
-0x0376, 0x0377,
-0x037b, 0x037d,
-0x037f, 0x037f,
-0x0386, 0x038a,
-0x038c, 0x038c,
-0x038e, 0x03a1,
-0x03a3, 0x03f5,
-0x03f7, 0x0481,
-0x0483, 0x0487,
-0x048a, 0x052f,
-0x0531, 0x0556,
-0x0559, 0x0559,
-0x0561, 0x0587,
-0x0591, 0x05bd,
-0x05bf, 0x05bf,
-0x05c1, 0x05c2,
-0x05c4, 0x05c5,
-0x05c7, 0x05c7,
-0x05d0, 0x05ea,
-0x05f0, 0x05f2,
-0x0610, 0x061a,
-0x0620, 0x0669,
-0x066e, 0x06d3,
-0x06d5, 0x06dc,
-0x06df, 0x06e8,
-0x06ea, 0x06fc,
-0x06ff, 0x06ff,
-0x0710, 0x074a,
-0x074d, 0x07b1,
-0x07c0, 0x07f5,
-0x07fa, 0x07fa,
-0x0800, 0x082d,
-0x0840, 0x085b,
-0x08a0, 0x08b4,
-0x08e3, 0x0963,
-0x0966, 0x096f,
-0x0971, 0x0983,
-0x0985, 0x098c,
-0x098f, 0x0990,
-0x0993, 0x09a8,
-0x09aa, 0x09b0,
-0x09b2, 0x09b2,
-0x09b6, 0x09b9,
-0x09bc, 0x09c4,
-0x09c7, 0x09c8,
-0x09cb, 0x09ce,
-0x09d7, 0x09d7,
-0x09dc, 0x09dd,
-0x09df, 0x09e3,
-0x09e6, 0x09f1,
-0x0a01, 0x0a03,
-0x0a05, 0x0a0a,
-0x0a0f, 0x0a10,
-0x0a13, 0x0a28,
-0x0a2a, 0x0a30,
-0x0a32, 0x0a33,
-0x0a35, 0x0a36,
-0x0a38, 0x0a39,
-0x0a3c, 0x0a3c,
-0x0a3e, 0x0a42,
-0x0a47, 0x0a48,
-0x0a4b, 0x0a4d,
-0x0a51, 0x0a51,
-0x0a59, 0x0a5c,
-0x0a5e, 0x0a5e,
-0x0a66, 0x0a75,
-0x0a81, 0x0a83,
-0x0a85, 0x0a8d,
-0x0a8f, 0x0a91,
-0x0a93, 0x0aa8,
-0x0aaa, 0x0ab0,
-0x0ab2, 0x0ab3,
-0x0ab5, 0x0ab9,
-0x0abc, 0x0ac5,
-0x0ac7, 0x0ac9,
-0x0acb, 0x0acd,
-0x0ad0, 0x0ad0,
-0x0ae0, 0x0ae3,
-0x0ae6, 0x0aef,
-0x0af9, 0x0af9,
-0x0b01, 0x0b03,
-0x0b05, 0x0b0c,
-0x0b0f, 0x0b10,
-0x0b13, 0x0b28,
-0x0b2a, 0x0b30,
-0x0b32, 0x0b33,
-0x0b35, 0x0b39,
-0x0b3c, 0x0b44,
-0x0b47, 0x0b48,
-0x0b4b, 0x0b4d,
-0x0b56, 0x0b57,
-0x0b5c, 0x0b5d,
-0x0b5f, 0x0b63,
-0x0b66, 0x0b6f,
-0x0b71, 0x0b71,
-0x0b82, 0x0b83,
-0x0b85, 0x0b8a,
-0x0b8e, 0x0b90,
-0x0b92, 0x0b95,
-0x0b99, 0x0b9a,
-0x0b9c, 0x0b9c,
-0x0b9e, 0x0b9f,
-0x0ba3, 0x0ba4,
-0x0ba8, 0x0baa,
-0x0bae, 0x0bb9,
-0x0bbe, 0x0bc2,
-0x0bc6, 0x0bc8,
-0x0bca, 0x0bcd,
-0x0bd0, 0x0bd0,
-0x0bd7, 0x0bd7,
-0x0be6, 0x0bef,
-0x0c00, 0x0c03,
-0x0c05, 0x0c0c,
-0x0c0e, 0x0c10,
-0x0c12, 0x0c28,
-0x0c2a, 0x0c39,
-0x0c3d, 0x0c44,
-0x0c46, 0x0c48,
-0x0c4a, 0x0c4d,
-0x0c55, 0x0c56,
-0x0c58, 0x0c5a,
-0x0c60, 0x0c63,
-0x0c66, 0x0c6f,
-0x0c81, 0x0c83,
-0x0c85, 0x0c8c,
-0x0c8e, 0x0c90,
-0x0c92, 0x0ca8,
-0x0caa, 0x0cb3,
-0x0cb5, 0x0cb9,
-0x0cbc, 0x0cc4,
-0x0cc6, 0x0cc8,
-0x0cca, 0x0ccd,
-0x0cd5, 0x0cd6,
-0x0cde, 0x0cde,
-0x0ce0, 0x0ce3,
-0x0ce6, 0x0cef,
-0x0cf1, 0x0cf2,
-0x0d01, 0x0d03,
-0x0d05, 0x0d0c,
-0x0d0e, 0x0d10,
-0x0d12, 0x0d3a,
-0x0d3d, 0x0d44,
-0x0d46, 0x0d48,
-0x0d4a, 0x0d4e,
-0x0d57, 0x0d57,
-0x0d5f, 0x0d63,
-0x0d66, 0x0d6f,
-0x0d7a, 0x0d7f,
-0x0d82, 0x0d83,
-0x0d85, 0x0d96,
-0x0d9a, 0x0db1,
-0x0db3, 0x0dbb,
-0x0dbd, 0x0dbd,
-0x0dc0, 0x0dc6,
-0x0dca, 0x0dca,
-0x0dcf, 0x0dd4,
-0x0dd6, 0x0dd6,
-0x0dd8, 0x0ddf,
-0x0de6, 0x0def,
-0x0df2, 0x0df3,
-0x0e01, 0x0e3a,
-0x0e40, 0x0e4e,
-0x0e50, 0x0e59,
-0x0e81, 0x0e82,
-0x0e84, 0x0e84,
-0x0e87, 0x0e88,
-0x0e8a, 0x0e8a,
-0x0e8d, 0x0e8d,
-0x0e94, 0x0e97,
-0x0e99, 0x0e9f,
-0x0ea1, 0x0ea3,
-0x0ea5, 0x0ea5,
-0x0ea7, 0x0ea7,
-0x0eaa, 0x0eab,
-0x0ead, 0x0eb9,
-0x0ebb, 0x0ebd,
-0x0ec0, 0x0ec4,
-0x0ec6, 0x0ec6,
-0x0ec8, 0x0ecd,
-0x0ed0, 0x0ed9,
-0x0edc, 0x0edf,
-0x0f00, 0x0f00,
-0x0f18, 0x0f19,
-0x0f20, 0x0f29,
-0x0f35, 0x0f35,
-0x0f37, 0x0f37,
-0x0f39, 0x0f39,
-0x0f3e, 0x0f47,
-0x0f49, 0x0f6c,
-0x0f71, 0x0f84,
-0x0f86, 0x0f97,
-0x0f99, 0x0fbc,
-0x0fc6, 0x0fc6,
-0x1000, 0x1049,
-0x1050, 0x109d,
-0x10a0, 0x10c5,
-0x10c7, 0x10c7,
-0x10cd, 0x10cd,
-0x10d0, 0x10fa,
-0x10fc, 0x1248,
-0x124a, 0x124d,
-0x1250, 0x1256,
-0x1258, 0x1258,
-0x125a, 0x125d,
-0x1260, 0x1288,
-0x128a, 0x128d,
-0x1290, 0x12b0,
-0x12b2, 0x12b5,
-0x12b8, 0x12be,
-0x12c0, 0x12c0,
-0x12c2, 0x12c5,
-0x12c8, 0x12d6,
-0x12d8, 0x1310,
-0x1312, 0x1315,
-0x1318, 0x135a,
-0x135d, 0x135f,
-0x1369, 0x1371,
-0x1380, 0x138f,
-0x13a0, 0x13f5,
-0x13f8, 0x13fd,
-0x1401, 0x166c,
-0x166f, 0x167f,
-0x1681, 0x169a,
-0x16a0, 0x16ea,
-0x16ee, 0x16f8,
-0x1700, 0x170c,
-0x170e, 0x1714,
-0x1720, 0x1734,
-0x1740, 0x1753,
-0x1760, 0x176c,
-0x176e, 0x1770,
-0x1772, 0x1773,
-0x1780, 0x17d3,
-0x17d7, 0x17d7,
-0x17dc, 0x17dd,
-0x17e0, 0x17e9,
-0x180b, 0x180d,
-0x1810, 0x1819,
-0x1820, 0x1877,
-0x1880, 0x18aa,
-0x18b0, 0x18f5,
-0x1900, 0x191e,
-0x1920, 0x192b,
-0x1930, 0x193b,
-0x1946, 0x196d,
-0x1970, 0x1974,
-0x1980, 0x19ab,
-0x19b0, 0x19c9,
-0x19d0, 0x19da,
-0x1a00, 0x1a1b,
-0x1a20, 0x1a5e,
-0x1a60, 0x1a7c,
-0x1a7f, 0x1a89,
-0x1a90, 0x1a99,
-0x1aa7, 0x1aa7,
-0x1ab0, 0x1abd,
-0x1b00, 0x1b4b,
-0x1b50, 0x1b59,
-0x1b6b, 0x1b73,
-0x1b80, 0x1bf3,
-0x1c00, 0x1c37,
-0x1c40, 0x1c49,
-0x1c4d, 0x1c7d,
-0x1cd0, 0x1cd2,
-0x1cd4, 0x1cf6,
-0x1cf8, 0x1cf9,
-0x1d00, 0x1df5,
-0x1dfc, 0x1f15,
-0x1f18, 0x1f1d,
-0x1f20, 0x1f45,
-0x1f48, 0x1f4d,
-0x1f50, 0x1f57,
-0x1f59, 0x1f59,
-0x1f5b, 0x1f5b,
-0x1f5d, 0x1f5d,
-0x1f5f, 0x1f7d,
-0x1f80, 0x1fb4,
-0x1fb6, 0x1fbc,
-0x1fbe, 0x1fbe,
-0x1fc2, 0x1fc4,
-0x1fc6, 0x1fcc,
-0x1fd0, 0x1fd3,
-0x1fd6, 0x1fdb,
-0x1fe0, 0x1fec,
-0x1ff2, 0x1ff4,
-0x1ff6, 0x1ffc,
-0x203f, 0x2040,
-0x2054, 0x2054,
-0x2071, 0x2071,
-0x207f, 0x207f,
-0x2090, 0x209c,
-0x20d0, 0x20dc,
-0x20e1, 0x20e1,
-0x20e5, 0x20f0,
-0x2102, 0x2102,
-0x2107, 0x2107,
-0x210a, 0x2113,
-0x2115, 0x2115,
-0x2118, 0x211d,
-0x2124, 0x2124,
-0x2126, 0x2126,
-0x2128, 0x2128,
-0x212a, 0x2139,
-0x213c, 0x213f,
-0x2145, 0x2149,
-0x214e, 0x214e,
-0x2160, 0x2188,
-0x2c00, 0x2c2e,
-0x2c30, 0x2c5e,
-0x2c60, 0x2ce4,
-0x2ceb, 0x2cf3,
-0x2d00, 0x2d25,
-0x2d27, 0x2d27,
-0x2d2d, 0x2d2d,
-0x2d30, 0x2d67,
-0x2d6f, 0x2d6f,
-0x2d7f, 0x2d96,
-0x2da0, 0x2da6,
-0x2da8, 0x2dae,
-0x2db0, 0x2db6,
-0x2db8, 0x2dbe,
-0x2dc0, 0x2dc6,
-0x2dc8, 0x2dce,
-0x2dd0, 0x2dd6,
-0x2dd8, 0x2dde,
-0x2de0, 0x2dff,
-0x3005, 0x3007,
-0x3021, 0x302f,
-0x3031, 0x3035,
-0x3038, 0x303c,
-0x3041, 0x3096,
-0x3099, 0x309a,
-0x309d, 0x309f,
-0x30a1, 0x30fa,
-0x30fc, 0x30ff,
-0x3105, 0x312d,
-0x3131, 0x318e,
-0x31a0, 0x31ba,
-0x31f0, 0x31ff,
-0x3400, 0x4db5,
-0x4e00, 0x9fd5,
-0xa000, 0xa48c,
-0xa4d0, 0xa4fd,
-0xa500, 0xa60c,
-0xa610, 0xa62b,
-0xa640, 0xa66f,
-0xa674, 0xa67d,
-0xa67f, 0xa6f1,
-0xa717, 0xa71f,
-0xa722, 0xa788,
-0xa78b, 0xa7ad,
-0xa7b0, 0xa7b7,
-0xa7f7, 0xa827,
-0xa840, 0xa873,
-0xa880, 0xa8c4,
-0xa8d0, 0xa8d9,
-0xa8e0, 0xa8f7,
-0xa8fb, 0xa8fb,
-0xa8fd, 0xa8fd,
-0xa900, 0xa92d,
-0xa930, 0xa953,
-0xa960, 0xa97c,
-0xa980, 0xa9c0,
-0xa9cf, 0xa9d9,
-0xa9e0, 0xa9fe,
-0xaa00, 0xaa36,
-0xaa40, 0xaa4d,
-0xaa50, 0xaa59,
-0xaa60, 0xaa76,
-0xaa7a, 0xaac2,
-0xaadb, 0xaadd,
-0xaae0, 0xaaef,
-0xaaf2, 0xaaf6,
-0xab01, 0xab06,
-0xab09, 0xab0e,
-0xab11, 0xab16,
-0xab20, 0xab26,
-0xab28, 0xab2e,
-0xab30, 0xab5a,
-0xab5c, 0xab65,
-0xab70, 0xabea,
-0xabec, 0xabed,
-0xabf0, 0xabf9,
-0xac00, 0xd7a3,
-0xd7b0, 0xd7c6,
-0xd7cb, 0xd7fb,
-0xf900, 0xfa6d,
-0xfa70, 0xfad9,
-0xfb00, 0xfb06,
-0xfb13, 0xfb17,
-0xfb1d, 0xfb28,
-0xfb2a, 0xfb36,
-0xfb38, 0xfb3c,
-0xfb3e, 0xfb3e,
-0xfb40, 0xfb41,
-0xfb43, 0xfb44,
-0xfb46, 0xfbb1,
-0xfbd3, 0xfc5d,
-0xfc64, 0xfd3d,
-0xfd50, 0xfd8f,
-0xfd92, 0xfdc7,
-0xfdf0, 0xfdf9,
-0xfe00, 0xfe0f,
-0xfe20, 0xfe2f,
-0xfe33, 0xfe34,
-0xfe4d, 0xfe4f,
-0xfe71, 0xfe71,
-0xfe73, 0xfe73,
-0xfe77, 0xfe77,
-0xfe79, 0xfe79,
-0xfe7b, 0xfe7b,
-0xfe7d, 0xfe7d,
-0xfe7f, 0xfefc,
-0xff10, 0xff19,
-0xff21, 0xff3a,
-0xff3f, 0xff3f,
-0xff41, 0xff5a,
-0xff66, 0xffbe,
-0xffc2, 0xffc7,
-0xffca, 0xffcf,
-0xffd2, 0xffd7,
-0xffda, 0xffdc,
-0x10000, 0x1000b,
-0x1000d, 0x10026,
-0x10028, 0x1003a,
-0x1003c, 0x1003d,
-0x1003f, 0x1004d,
-0x10050, 0x1005d,
-0x10080, 0x100fa,
-0x10140, 0x10174,
-0x101fd, 0x101fd,
-0x10280, 0x1029c,
-0x102a0, 0x102d0,
-0x102e0, 0x102e0,
-0x10300, 0x1031f,
-0x10330, 0x1034a,
-0x10350, 0x1037a,
-0x10380, 0x1039d,
-0x103a0, 0x103c3,
-0x103c8, 0x103cf,
-0x103d1, 0x103d5,
-0x10400, 0x1049d,
-0x104a0, 0x104a9,
-0x10500, 0x10527,
-0x10530, 0x10563,
-0x10600, 0x10736,
-0x10740, 0x10755,
-0x10760, 0x10767,
-0x10800, 0x10805,
-0x10808, 0x10808,
-0x1080a, 0x10835,
-0x10837, 0x10838,
-0x1083c, 0x1083c,
-0x1083f, 0x10855,
-0x10860, 0x10876,
-0x10880, 0x1089e,
-0x108e0, 0x108f2,
-0x108f4, 0x108f5,
-0x10900, 0x10915,
-0x10920, 0x10939,
-0x10980, 0x109b7,
-0x109be, 0x109bf,
-0x10a00, 0x10a03,
-0x10a05, 0x10a06,
-0x10a0c, 0x10a13,
-0x10a15, 0x10a17,
-0x10a19, 0x10a33,
-0x10a38, 0x10a3a,
-0x10a3f, 0x10a3f,
-0x10a60, 0x10a7c,
-0x10a80, 0x10a9c,
-0x10ac0, 0x10ac7,
-0x10ac9, 0x10ae6,
-0x10b00, 0x10b35,
-0x10b40, 0x10b55,
-0x10b60, 0x10b72,
-0x10b80, 0x10b91,
-0x10c00, 0x10c48,
-0x10c80, 0x10cb2,
-0x10cc0, 0x10cf2,
-0x11000, 0x11046,
-0x11066, 0x1106f,
-0x1107f, 0x110ba,
-0x110d0, 0x110e8,
-0x110f0, 0x110f9,
-0x11100, 0x11134,
-0x11136, 0x1113f,
-0x11150, 0x11173,
-0x11176, 0x11176,
-0x11180, 0x111c4,
-0x111ca, 0x111cc,
-0x111d0, 0x111da,
-0x111dc, 0x111dc,
-0x11200, 0x11211,
-0x11213, 0x11237,
-0x11280, 0x11286,
-0x11288, 0x11288,
-0x1128a, 0x1128d,
-0x1128f, 0x1129d,
-0x1129f, 0x112a8,
-0x112b0, 0x112ea,
-0x112f0, 0x112f9,
-0x11300, 0x11303,
-0x11305, 0x1130c,
-0x1130f, 0x11310,
-0x11313, 0x11328,
-0x1132a, 0x11330,
-0x11332, 0x11333,
-0x11335, 0x11339,
-0x1133c, 0x11344,
-0x11347, 0x11348,
-0x1134b, 0x1134d,
-0x11350, 0x11350,
-0x11357, 0x11357,
-0x1135d, 0x11363,
-0x11366, 0x1136c,
-0x11370, 0x11374,
-0x11480, 0x114c5,
-0x114c7, 0x114c7,
-0x114d0, 0x114d9,
-0x11580, 0x115b5,
-0x115b8, 0x115c0,
-0x115d8, 0x115dd,
-0x11600, 0x11640,
-0x11644, 0x11644,
-0x11650, 0x11659,
-0x11680, 0x116b7,
-0x116c0, 0x116c9,
-0x11700, 0x11719,
-0x1171d, 0x1172b,
-0x11730, 0x11739,
-0x118a0, 0x118e9,
-0x118ff, 0x118ff,
-0x11ac0, 0x11af8,
-0x12000, 0x12399,
-0x12400, 0x1246e,
-0x12480, 0x12543,
-0x13000, 0x1342e,
-0x14400, 0x14646,
-0x16800, 0x16a38,
-0x16a40, 0x16a5e,
-0x16a60, 0x16a69,
-0x16ad0, 0x16aed,
-0x16af0, 0x16af4,
-0x16b00, 0x16b36,
-0x16b40, 0x16b43,
-0x16b50, 0x16b59,
-0x16b63, 0x16b77,
-0x16b7d, 0x16b8f,
-0x16f00, 0x16f44,
-0x16f50, 0x16f7e,
-0x16f8f, 0x16f9f,
-0x1b000, 0x1b001,
-0x1bc00, 0x1bc6a,
-0x1bc70, 0x1bc7c,
-0x1bc80, 0x1bc88,
-0x1bc90, 0x1bc99,
-0x1bc9d, 0x1bc9e,
-0x1d165, 0x1d169,
-0x1d16d, 0x1d172,
-0x1d17b, 0x1d182,
-0x1d185, 0x1d18b,
-0x1d1aa, 0x1d1ad,
-0x1d242, 0x1d244,
-0x1d400, 0x1d454,
-0x1d456, 0x1d49c,
-0x1d49e, 0x1d49f,
-0x1d4a2, 0x1d4a2,
-0x1d4a5, 0x1d4a6,
-0x1d4a9, 0x1d4ac,
-0x1d4ae, 0x1d4b9,
-0x1d4bb, 0x1d4bb,
-0x1d4bd, 0x1d4c3,
-0x1d4c5, 0x1d505,
-0x1d507, 0x1d50a,
-0x1d50d, 0x1d514,
-0x1d516, 0x1d51c,
-0x1d51e, 0x1d539,
-0x1d53b, 0x1d53e,
-0x1d540, 0x1d544,
-0x1d546, 0x1d546,
-0x1d54a, 0x1d550,
-0x1d552, 0x1d6a5,
-0x1d6a8, 0x1d6c0,
-0x1d6c2, 0x1d6da,
-0x1d6dc, 0x1d6fa,
-0x1d6fc, 0x1d714,
-0x1d716, 0x1d734,
-0x1d736, 0x1d74e,
-0x1d750, 0x1d76e,
-0x1d770, 0x1d788,
-0x1d78a, 0x1d7a8,
-0x1d7aa, 0x1d7c2,
-0x1d7c4, 0x1d7cb,
-0x1d7ce, 0x1d7ff,
-0x1da00, 0x1da36,
-0x1da3b, 0x1da6c,
-0x1da75, 0x1da75,
-0x1da84, 0x1da84,
-0x1da9b, 0x1da9f,
-0x1daa1, 0x1daaf,
-0x1e800, 0x1e8c4,
-0x1e8d0, 0x1e8d6,
-0x1ee00, 0x1ee03,
-0x1ee05, 0x1ee1f,
-0x1ee21, 0x1ee22,
-0x1ee24, 0x1ee24,
-0x1ee27, 0x1ee27,
-0x1ee29, 0x1ee32,
-0x1ee34, 0x1ee37,
-0x1ee39, 0x1ee39,
-0x1ee3b, 0x1ee3b,
-0x1ee42, 0x1ee42,
-0x1ee47, 0x1ee47,
-0x1ee49, 0x1ee49,
-0x1ee4b, 0x1ee4b,
-0x1ee4d, 0x1ee4f,
-0x1ee51, 0x1ee52,
-0x1ee54, 0x1ee54,
-0x1ee57, 0x1ee57,
-0x1ee59, 0x1ee59,
-0x1ee5b, 0x1ee5b,
-0x1ee5d, 0x1ee5d,
-0x1ee5f, 0x1ee5f,
-0x1ee61, 0x1ee62,
-0x1ee64, 0x1ee64,
-0x1ee67, 0x1ee6a,
-0x1ee6c, 0x1ee72,
-0x1ee74, 0x1ee77,
-0x1ee79, 0x1ee7c,
-0x1ee7e, 0x1ee7e,
-0x1ee80, 0x1ee89,
-0x1ee8b, 0x1ee9b,
-0x1eea1, 0x1eea3,
-0x1eea5, 0x1eea9,
-0x1eeab, 0x1eebb,
-0x20000, 0x2a6d6,
-0x2a700, 0x2b734,
-0x2b740, 0x2b81d,
-0x2b820, 0x2cea1,
-0x2f800, 0x2fa1d,
-0xe0100, 0xe01ef,
-}; /* END of CR_XID_Continue */
-
-/* PROPERTY: 'Default_Ignorable_Code_Point': Derived Property */
-static const OnigCodePoint
-CR_Default_Ignorable_Code_Point[] = { 17,
-0x00ad, 0x00ad,
-0x034f, 0x034f,
-0x061c, 0x061c,
-0x115f, 0x1160,
-0x17b4, 0x17b5,
-0x180b, 0x180e,
-0x200b, 0x200f,
-0x202a, 0x202e,
-0x2060, 0x206f,
-0x3164, 0x3164,
-0xfe00, 0xfe0f,
-0xfeff, 0xfeff,
-0xffa0, 0xffa0,
-0xfff0, 0xfff8,
-0x1bca0, 0x1bca3,
-0x1d173, 0x1d17a,
-0xe0000, 0xe0fff,
-}; /* END of CR_Default_Ignorable_Code_Point */
-
-/* PROPERTY: 'Grapheme_Extend': Derived Property */
-static const OnigCodePoint
-CR_Grapheme_Extend[] = { 283,
-0x0300, 0x036f,
-0x0483, 0x0489,
-0x0591, 0x05bd,
-0x05bf, 0x05bf,
-0x05c1, 0x05c2,
-0x05c4, 0x05c5,
-0x05c7, 0x05c7,
-0x0610, 0x061a,
-0x064b, 0x065f,
-0x0670, 0x0670,
-0x06d6, 0x06dc,
-0x06df, 0x06e4,
-0x06e7, 0x06e8,
-0x06ea, 0x06ed,
-0x0711, 0x0711,
-0x0730, 0x074a,
-0x07a6, 0x07b0,
-0x07eb, 0x07f3,
-0x0816, 0x0819,
-0x081b, 0x0823,
-0x0825, 0x0827,
-0x0829, 0x082d,
-0x0859, 0x085b,
-0x08e3, 0x0902,
-0x093a, 0x093a,
-0x093c, 0x093c,
-0x0941, 0x0948,
-0x094d, 0x094d,
-0x0951, 0x0957,
-0x0962, 0x0963,
-0x0981, 0x0981,
-0x09bc, 0x09bc,
-0x09be, 0x09be,
-0x09c1, 0x09c4,
-0x09cd, 0x09cd,
-0x09d7, 0x09d7,
-0x09e2, 0x09e3,
-0x0a01, 0x0a02,
-0x0a3c, 0x0a3c,
-0x0a41, 0x0a42,
-0x0a47, 0x0a48,
-0x0a4b, 0x0a4d,
-0x0a51, 0x0a51,
-0x0a70, 0x0a71,
-0x0a75, 0x0a75,
-0x0a81, 0x0a82,
-0x0abc, 0x0abc,
-0x0ac1, 0x0ac5,
-0x0ac7, 0x0ac8,
-0x0acd, 0x0acd,
-0x0ae2, 0x0ae3,
-0x0b01, 0x0b01,
-0x0b3c, 0x0b3c,
-0x0b3e, 0x0b3f,
-0x0b41, 0x0b44,
-0x0b4d, 0x0b4d,
-0x0b56, 0x0b57,
-0x0b62, 0x0b63,
-0x0b82, 0x0b82,
-0x0bbe, 0x0bbe,
-0x0bc0, 0x0bc0,
-0x0bcd, 0x0bcd,
-0x0bd7, 0x0bd7,
-0x0c00, 0x0c00,
-0x0c3e, 0x0c40,
-0x0c46, 0x0c48,
-0x0c4a, 0x0c4d,
-0x0c55, 0x0c56,
-0x0c62, 0x0c63,
-0x0c81, 0x0c81,
-0x0cbc, 0x0cbc,
-0x0cbf, 0x0cbf,
-0x0cc2, 0x0cc2,
-0x0cc6, 0x0cc6,
-0x0ccc, 0x0ccd,
-0x0cd5, 0x0cd6,
-0x0ce2, 0x0ce3,
-0x0d01, 0x0d01,
-0x0d3e, 0x0d3e,
-0x0d41, 0x0d44,
-0x0d4d, 0x0d4d,
-0x0d57, 0x0d57,
-0x0d62, 0x0d63,
-0x0dca, 0x0dca,
-0x0dcf, 0x0dcf,
-0x0dd2, 0x0dd4,
-0x0dd6, 0x0dd6,
-0x0ddf, 0x0ddf,
-0x0e31, 0x0e31,
-0x0e34, 0x0e3a,
-0x0e47, 0x0e4e,
-0x0eb1, 0x0eb1,
-0x0eb4, 0x0eb9,
-0x0ebb, 0x0ebc,
-0x0ec8, 0x0ecd,
-0x0f18, 0x0f19,
-0x0f35, 0x0f35,
-0x0f37, 0x0f37,
-0x0f39, 0x0f39,
-0x0f71, 0x0f7e,
-0x0f80, 0x0f84,
-0x0f86, 0x0f87,
-0x0f8d, 0x0f97,
-0x0f99, 0x0fbc,
-0x0fc6, 0x0fc6,
-0x102d, 0x1030,
-0x1032, 0x1037,
-0x1039, 0x103a,
-0x103d, 0x103e,
-0x1058, 0x1059,
-0x105e, 0x1060,
-0x1071, 0x1074,
-0x1082, 0x1082,
-0x1085, 0x1086,
-0x108d, 0x108d,
-0x109d, 0x109d,
-0x135d, 0x135f,
-0x1712, 0x1714,
-0x1732, 0x1734,
-0x1752, 0x1753,
-0x1772, 0x1773,
-0x17b4, 0x17b5,
-0x17b7, 0x17bd,
-0x17c6, 0x17c6,
-0x17c9, 0x17d3,
-0x17dd, 0x17dd,
-0x180b, 0x180d,
-0x18a9, 0x18a9,
-0x1920, 0x1922,
-0x1927, 0x1928,
-0x1932, 0x1932,
-0x1939, 0x193b,
-0x1a17, 0x1a18,
-0x1a1b, 0x1a1b,
-0x1a56, 0x1a56,
-0x1a58, 0x1a5e,
-0x1a60, 0x1a60,
-0x1a62, 0x1a62,
-0x1a65, 0x1a6c,
-0x1a73, 0x1a7c,
-0x1a7f, 0x1a7f,
-0x1ab0, 0x1abe,
-0x1b00, 0x1b03,
-0x1b34, 0x1b34,
-0x1b36, 0x1b3a,
-0x1b3c, 0x1b3c,
-0x1b42, 0x1b42,
-0x1b6b, 0x1b73,
-0x1b80, 0x1b81,
-0x1ba2, 0x1ba5,
-0x1ba8, 0x1ba9,
-0x1bab, 0x1bad,
-0x1be6, 0x1be6,
-0x1be8, 0x1be9,
-0x1bed, 0x1bed,
-0x1bef, 0x1bf1,
-0x1c2c, 0x1c33,
-0x1c36, 0x1c37,
-0x1cd0, 0x1cd2,
-0x1cd4, 0x1ce0,
-0x1ce2, 0x1ce8,
-0x1ced, 0x1ced,
-0x1cf4, 0x1cf4,
-0x1cf8, 0x1cf9,
-0x1dc0, 0x1df5,
-0x1dfc, 0x1dff,
-0x200c, 0x200d,
-0x20d0, 0x20f0,
-0x2cef, 0x2cf1,
-0x2d7f, 0x2d7f,
-0x2de0, 0x2dff,
-0x302a, 0x302f,
-0x3099, 0x309a,
-0xa66f, 0xa672,
-0xa674, 0xa67d,
-0xa69e, 0xa69f,
-0xa6f0, 0xa6f1,
-0xa802, 0xa802,
-0xa806, 0xa806,
-0xa80b, 0xa80b,
-0xa825, 0xa826,
-0xa8c4, 0xa8c4,
-0xa8e0, 0xa8f1,
-0xa926, 0xa92d,
-0xa947, 0xa951,
-0xa980, 0xa982,
-0xa9b3, 0xa9b3,
-0xa9b6, 0xa9b9,
-0xa9bc, 0xa9bc,
-0xa9e5, 0xa9e5,
-0xaa29, 0xaa2e,
-0xaa31, 0xaa32,
-0xaa35, 0xaa36,
-0xaa43, 0xaa43,
-0xaa4c, 0xaa4c,
-0xaa7c, 0xaa7c,
-0xaab0, 0xaab0,
-0xaab2, 0xaab4,
-0xaab7, 0xaab8,
-0xaabe, 0xaabf,
-0xaac1, 0xaac1,
-0xaaec, 0xaaed,
-0xaaf6, 0xaaf6,
-0xabe5, 0xabe5,
-0xabe8, 0xabe8,
-0xabed, 0xabed,
-0xfb1e, 0xfb1e,
-0xfe00, 0xfe0f,
-0xfe20, 0xfe2f,
-0xff9e, 0xff9f,
-0x101fd, 0x101fd,
-0x102e0, 0x102e0,
-0x10376, 0x1037a,
-0x10a01, 0x10a03,
-0x10a05, 0x10a06,
-0x10a0c, 0x10a0f,
-0x10a38, 0x10a3a,
-0x10a3f, 0x10a3f,
-0x10ae5, 0x10ae6,
-0x11001, 0x11001,
-0x11038, 0x11046,
-0x1107f, 0x11081,
-0x110b3, 0x110b6,
-0x110b9, 0x110ba,
-0x11100, 0x11102,
-0x11127, 0x1112b,
-0x1112d, 0x11134,
-0x11173, 0x11173,
-0x11180, 0x11181,
-0x111b6, 0x111be,
-0x111ca, 0x111cc,
-0x1122f, 0x11231,
-0x11234, 0x11234,
-0x11236, 0x11237,
-0x112df, 0x112df,
-0x112e3, 0x112ea,
-0x11300, 0x11301,
-0x1133c, 0x1133c,
-0x1133e, 0x1133e,
-0x11340, 0x11340,
-0x11357, 0x11357,
-0x11366, 0x1136c,
-0x11370, 0x11374,
-0x114b0, 0x114b0,
-0x114b3, 0x114b8,
-0x114ba, 0x114ba,
-0x114bd, 0x114bd,
-0x114bf, 0x114c0,
-0x114c2, 0x114c3,
-0x115af, 0x115af,
-0x115b2, 0x115b5,
-0x115bc, 0x115bd,
-0x115bf, 0x115c0,
-0x115dc, 0x115dd,
-0x11633, 0x1163a,
-0x1163d, 0x1163d,
-0x1163f, 0x11640,
-0x116ab, 0x116ab,
-0x116ad, 0x116ad,
-0x116b0, 0x116b5,
-0x116b7, 0x116b7,
-0x1171d, 0x1171f,
-0x11722, 0x11725,
-0x11727, 0x1172b,
-0x16af0, 0x16af4,
-0x16b30, 0x16b36,
-0x16f8f, 0x16f92,
-0x1bc9d, 0x1bc9e,
-0x1d165, 0x1d165,
-0x1d167, 0x1d169,
-0x1d16e, 0x1d172,
-0x1d17b, 0x1d182,
-0x1d185, 0x1d18b,
-0x1d1aa, 0x1d1ad,
-0x1d242, 0x1d244,
-0x1da00, 0x1da36,
-0x1da3b, 0x1da6c,
-0x1da75, 0x1da75,
-0x1da84, 0x1da84,
-0x1da9b, 0x1da9f,
-0x1daa1, 0x1daaf,
-0x1e8d0, 0x1e8d6,
-0xe0100, 0xe01ef,
-}; /* END of CR_Grapheme_Extend */
-
-/* PROPERTY: 'Grapheme_Base': Derived Property */
-static const OnigCodePoint
-CR_Grapheme_Base[] = { 743,
-0x0020, 0x007e,
-0x00a0, 0x00ac,
-0x00ae, 0x02ff,
-0x0370, 0x0377,
-0x037a, 0x037f,
-0x0384, 0x038a,
-0x038c, 0x038c,
-0x038e, 0x03a1,
-0x03a3, 0x0482,
-0x048a, 0x052f,
-0x0531, 0x0556,
-0x0559, 0x055f,
-0x0561, 0x0587,
-0x0589, 0x058a,
-0x058d, 0x058f,
-0x05be, 0x05be,
-0x05c0, 0x05c0,
-0x05c3, 0x05c3,
-0x05c6, 0x05c6,
-0x05d0, 0x05ea,
-0x05f0, 0x05f4,
-0x0606, 0x060f,
-0x061b, 0x061b,
-0x061e, 0x064a,
-0x0660, 0x066f,
-0x0671, 0x06d5,
-0x06de, 0x06de,
-0x06e5, 0x06e6,
-0x06e9, 0x06e9,
-0x06ee, 0x070d,
-0x0710, 0x0710,
-0x0712, 0x072f,
-0x074d, 0x07a5,
-0x07b1, 0x07b1,
-0x07c0, 0x07ea,
-0x07f4, 0x07fa,
-0x0800, 0x0815,
-0x081a, 0x081a,
-0x0824, 0x0824,
-0x0828, 0x0828,
-0x0830, 0x083e,
-0x0840, 0x0858,
-0x085e, 0x085e,
-0x08a0, 0x08b4,
-0x0903, 0x0939,
-0x093b, 0x093b,
-0x093d, 0x0940,
-0x0949, 0x094c,
-0x094e, 0x0950,
-0x0958, 0x0961,
-0x0964, 0x0980,
-0x0982, 0x0983,
-0x0985, 0x098c,
-0x098f, 0x0990,
-0x0993, 0x09a8,
-0x09aa, 0x09b0,
-0x09b2, 0x09b2,
-0x09b6, 0x09b9,
-0x09bd, 0x09bd,
-0x09bf, 0x09c0,
-0x09c7, 0x09c8,
-0x09cb, 0x09cc,
-0x09ce, 0x09ce,
-0x09dc, 0x09dd,
-0x09df, 0x09e1,
-0x09e6, 0x09fb,
-0x0a03, 0x0a03,
-0x0a05, 0x0a0a,
-0x0a0f, 0x0a10,
-0x0a13, 0x0a28,
-0x0a2a, 0x0a30,
-0x0a32, 0x0a33,
-0x0a35, 0x0a36,
-0x0a38, 0x0a39,
-0x0a3e, 0x0a40,
-0x0a59, 0x0a5c,
-0x0a5e, 0x0a5e,
-0x0a66, 0x0a6f,
-0x0a72, 0x0a74,
-0x0a83, 0x0a83,
-0x0a85, 0x0a8d,
-0x0a8f, 0x0a91,
-0x0a93, 0x0aa8,
-0x0aaa, 0x0ab0,
-0x0ab2, 0x0ab3,
-0x0ab5, 0x0ab9,
-0x0abd, 0x0ac0,
-0x0ac9, 0x0ac9,
-0x0acb, 0x0acc,
-0x0ad0, 0x0ad0,
-0x0ae0, 0x0ae1,
-0x0ae6, 0x0af1,
-0x0af9, 0x0af9,
-0x0b02, 0x0b03,
-0x0b05, 0x0b0c,
-0x0b0f, 0x0b10,
-0x0b13, 0x0b28,
-0x0b2a, 0x0b30,
-0x0b32, 0x0b33,
-0x0b35, 0x0b39,
-0x0b3d, 0x0b3d,
-0x0b40, 0x0b40,
-0x0b47, 0x0b48,
-0x0b4b, 0x0b4c,
-0x0b5c, 0x0b5d,
-0x0b5f, 0x0b61,
-0x0b66, 0x0b77,
-0x0b83, 0x0b83,
-0x0b85, 0x0b8a,
-0x0b8e, 0x0b90,
-0x0b92, 0x0b95,
-0x0b99, 0x0b9a,
-0x0b9c, 0x0b9c,
-0x0b9e, 0x0b9f,
-0x0ba3, 0x0ba4,
-0x0ba8, 0x0baa,
-0x0bae, 0x0bb9,
-0x0bbf, 0x0bbf,
-0x0bc1, 0x0bc2,
-0x0bc6, 0x0bc8,
-0x0bca, 0x0bcc,
-0x0bd0, 0x0bd0,
-0x0be6, 0x0bfa,
-0x0c01, 0x0c03,
-0x0c05, 0x0c0c,
-0x0c0e, 0x0c10,
-0x0c12, 0x0c28,
-0x0c2a, 0x0c39,
-0x0c3d, 0x0c3d,
-0x0c41, 0x0c44,
-0x0c58, 0x0c5a,
-0x0c60, 0x0c61,
-0x0c66, 0x0c6f,
-0x0c78, 0x0c7f,
-0x0c82, 0x0c83,
-0x0c85, 0x0c8c,
-0x0c8e, 0x0c90,
-0x0c92, 0x0ca8,
-0x0caa, 0x0cb3,
-0x0cb5, 0x0cb9,
-0x0cbd, 0x0cbe,
-0x0cc0, 0x0cc1,
-0x0cc3, 0x0cc4,
-0x0cc7, 0x0cc8,
-0x0cca, 0x0ccb,
-0x0cde, 0x0cde,
-0x0ce0, 0x0ce1,
-0x0ce6, 0x0cef,
-0x0cf1, 0x0cf2,
-0x0d02, 0x0d03,
-0x0d05, 0x0d0c,
-0x0d0e, 0x0d10,
-0x0d12, 0x0d3a,
-0x0d3d, 0x0d3d,
-0x0d3f, 0x0d40,
-0x0d46, 0x0d48,
-0x0d4a, 0x0d4c,
-0x0d4e, 0x0d4e,
-0x0d5f, 0x0d61,
-0x0d66, 0x0d75,
-0x0d79, 0x0d7f,
-0x0d82, 0x0d83,
-0x0d85, 0x0d96,
-0x0d9a, 0x0db1,
-0x0db3, 0x0dbb,
-0x0dbd, 0x0dbd,
-0x0dc0, 0x0dc6,
-0x0dd0, 0x0dd1,
-0x0dd8, 0x0dde,
-0x0de6, 0x0def,
-0x0df2, 0x0df4,
-0x0e01, 0x0e30,
-0x0e32, 0x0e33,
-0x0e3f, 0x0e46,
-0x0e4f, 0x0e5b,
-0x0e81, 0x0e82,
-0x0e84, 0x0e84,
-0x0e87, 0x0e88,
-0x0e8a, 0x0e8a,
-0x0e8d, 0x0e8d,
-0x0e94, 0x0e97,
-0x0e99, 0x0e9f,
-0x0ea1, 0x0ea3,
-0x0ea5, 0x0ea5,
-0x0ea7, 0x0ea7,
-0x0eaa, 0x0eab,
-0x0ead, 0x0eb0,
-0x0eb2, 0x0eb3,
-0x0ebd, 0x0ebd,
-0x0ec0, 0x0ec4,
-0x0ec6, 0x0ec6,
-0x0ed0, 0x0ed9,
-0x0edc, 0x0edf,
-0x0f00, 0x0f17,
-0x0f1a, 0x0f34,
-0x0f36, 0x0f36,
-0x0f38, 0x0f38,
-0x0f3a, 0x0f47,
-0x0f49, 0x0f6c,
-0x0f7f, 0x0f7f,
-0x0f85, 0x0f85,
-0x0f88, 0x0f8c,
-0x0fbe, 0x0fc5,
-0x0fc7, 0x0fcc,
-0x0fce, 0x0fda,
-0x1000, 0x102c,
-0x1031, 0x1031,
-0x1038, 0x1038,
-0x103b, 0x103c,
-0x103f, 0x1057,
-0x105a, 0x105d,
-0x1061, 0x1070,
-0x1075, 0x1081,
-0x1083, 0x1084,
-0x1087, 0x108c,
-0x108e, 0x109c,
-0x109e, 0x10c5,
-0x10c7, 0x10c7,
-0x10cd, 0x10cd,
-0x10d0, 0x1248,
-0x124a, 0x124d,
-0x1250, 0x1256,
-0x1258, 0x1258,
-0x125a, 0x125d,
-0x1260, 0x1288,
-0x128a, 0x128d,
-0x1290, 0x12b0,
-0x12b2, 0x12b5,
-0x12b8, 0x12be,
-0x12c0, 0x12c0,
-0x12c2, 0x12c5,
-0x12c8, 0x12d6,
-0x12d8, 0x1310,
-0x1312, 0x1315,
-0x1318, 0x135a,
-0x1360, 0x137c,
-0x1380, 0x1399,
-0x13a0, 0x13f5,
-0x13f8, 0x13fd,
-0x1400, 0x169c,
-0x16a0, 0x16f8,
-0x1700, 0x170c,
-0x170e, 0x1711,
-0x1720, 0x1731,
-0x1735, 0x1736,
-0x1740, 0x1751,
-0x1760, 0x176c,
-0x176e, 0x1770,
-0x1780, 0x17b3,
-0x17b6, 0x17b6,
-0x17be, 0x17c5,
-0x17c7, 0x17c8,
-0x17d4, 0x17dc,
-0x17e0, 0x17e9,
-0x17f0, 0x17f9,
-0x1800, 0x180a,
-0x1810, 0x1819,
-0x1820, 0x1877,
-0x1880, 0x18a8,
-0x18aa, 0x18aa,
-0x18b0, 0x18f5,
-0x1900, 0x191e,
-0x1923, 0x1926,
-0x1929, 0x192b,
-0x1930, 0x1931,
-0x1933, 0x1938,
-0x1940, 0x1940,
-0x1944, 0x196d,
-0x1970, 0x1974,
-0x1980, 0x19ab,
-0x19b0, 0x19c9,
-0x19d0, 0x19da,
-0x19de, 0x1a16,
-0x1a19, 0x1a1a,
-0x1a1e, 0x1a55,
-0x1a57, 0x1a57,
-0x1a61, 0x1a61,
-0x1a63, 0x1a64,
-0x1a6d, 0x1a72,
-0x1a80, 0x1a89,
-0x1a90, 0x1a99,
-0x1aa0, 0x1aad,
-0x1b04, 0x1b33,
-0x1b35, 0x1b35,
-0x1b3b, 0x1b3b,
-0x1b3d, 0x1b41,
-0x1b43, 0x1b4b,
-0x1b50, 0x1b6a,
-0x1b74, 0x1b7c,
-0x1b82, 0x1ba1,
-0x1ba6, 0x1ba7,
-0x1baa, 0x1baa,
-0x1bae, 0x1be5,
-0x1be7, 0x1be7,
-0x1bea, 0x1bec,
-0x1bee, 0x1bee,
-0x1bf2, 0x1bf3,
-0x1bfc, 0x1c2b,
-0x1c34, 0x1c35,
-0x1c3b, 0x1c49,
-0x1c4d, 0x1c7f,
-0x1cc0, 0x1cc7,
-0x1cd3, 0x1cd3,
-0x1ce1, 0x1ce1,
-0x1ce9, 0x1cec,
-0x1cee, 0x1cf3,
-0x1cf5, 0x1cf6,
-0x1d00, 0x1dbf,
-0x1e00, 0x1f15,
-0x1f18, 0x1f1d,
-0x1f20, 0x1f45,
-0x1f48, 0x1f4d,
-0x1f50, 0x1f57,
-0x1f59, 0x1f59,
-0x1f5b, 0x1f5b,
-0x1f5d, 0x1f5d,
-0x1f5f, 0x1f7d,
-0x1f80, 0x1fb4,
-0x1fb6, 0x1fc4,
-0x1fc6, 0x1fd3,
-0x1fd6, 0x1fdb,
-0x1fdd, 0x1fef,
-0x1ff2, 0x1ff4,
-0x1ff6, 0x1ffe,
-0x2000, 0x200a,
-0x2010, 0x2027,
-0x202f, 0x205f,
-0x2070, 0x2071,
-0x2074, 0x208e,
-0x2090, 0x209c,
-0x20a0, 0x20be,
-0x2100, 0x218b,
-0x2190, 0x23fa,
-0x2400, 0x2426,
-0x2440, 0x244a,
-0x2460, 0x2b73,
-0x2b76, 0x2b95,
-0x2b98, 0x2bb9,
-0x2bbd, 0x2bc8,
-0x2bca, 0x2bd1,
-0x2bec, 0x2bef,
-0x2c00, 0x2c2e,
-0x2c30, 0x2c5e,
-0x2c60, 0x2cee,
-0x2cf2, 0x2cf3,
-0x2cf9, 0x2d25,
-0x2d27, 0x2d27,
-0x2d2d, 0x2d2d,
-0x2d30, 0x2d67,
-0x2d6f, 0x2d70,
-0x2d80, 0x2d96,
-0x2da0, 0x2da6,
-0x2da8, 0x2dae,
-0x2db0, 0x2db6,
-0x2db8, 0x2dbe,
-0x2dc0, 0x2dc6,
-0x2dc8, 0x2dce,
-0x2dd0, 0x2dd6,
-0x2dd8, 0x2dde,
-0x2e00, 0x2e42,
-0x2e80, 0x2e99,
-0x2e9b, 0x2ef3,
-0x2f00, 0x2fd5,
-0x2ff0, 0x2ffb,
-0x3000, 0x3029,
-0x3030, 0x303f,
-0x3041, 0x3096,
-0x309b, 0x30ff,
-0x3105, 0x312d,
-0x3131, 0x318e,
-0x3190, 0x31ba,
-0x31c0, 0x31e3,
-0x31f0, 0x321e,
-0x3220, 0x32fe,
-0x3300, 0x4db5,
-0x4dc0, 0x9fd5,
-0xa000, 0xa48c,
-0xa490, 0xa4c6,
-0xa4d0, 0xa62b,
-0xa640, 0xa66e,
-0xa673, 0xa673,
-0xa67e, 0xa69d,
-0xa6a0, 0xa6ef,
-0xa6f2, 0xa6f7,
-0xa700, 0xa7ad,
-0xa7b0, 0xa7b7,
-0xa7f7, 0xa801,
-0xa803, 0xa805,
-0xa807, 0xa80a,
-0xa80c, 0xa824,
-0xa827, 0xa82b,
-0xa830, 0xa839,
-0xa840, 0xa877,
-0xa880, 0xa8c3,
-0xa8ce, 0xa8d9,
-0xa8f2, 0xa8fd,
-0xa900, 0xa925,
-0xa92e, 0xa946,
-0xa952, 0xa953,
-0xa95f, 0xa97c,
-0xa983, 0xa9b2,
-0xa9b4, 0xa9b5,
-0xa9ba, 0xa9bb,
-0xa9bd, 0xa9cd,
-0xa9cf, 0xa9d9,
-0xa9de, 0xa9e4,
-0xa9e6, 0xa9fe,
-0xaa00, 0xaa28,
-0xaa2f, 0xaa30,
-0xaa33, 0xaa34,
-0xaa40, 0xaa42,
-0xaa44, 0xaa4b,
-0xaa4d, 0xaa4d,
-0xaa50, 0xaa59,
-0xaa5c, 0xaa7b,
-0xaa7d, 0xaaaf,
-0xaab1, 0xaab1,
-0xaab5, 0xaab6,
-0xaab9, 0xaabd,
-0xaac0, 0xaac0,
-0xaac2, 0xaac2,
-0xaadb, 0xaaeb,
-0xaaee, 0xaaf5,
-0xab01, 0xab06,
-0xab09, 0xab0e,
-0xab11, 0xab16,
-0xab20, 0xab26,
-0xab28, 0xab2e,
-0xab30, 0xab65,
-0xab70, 0xabe4,
-0xabe6, 0xabe7,
-0xabe9, 0xabec,
-0xabf0, 0xabf9,
-0xac00, 0xd7a3,
-0xd7b0, 0xd7c6,
-0xd7cb, 0xd7fb,
-0xf900, 0xfa6d,
-0xfa70, 0xfad9,
-0xfb00, 0xfb06,
-0xfb13, 0xfb17,
-0xfb1d, 0xfb1d,
-0xfb1f, 0xfb36,
-0xfb38, 0xfb3c,
-0xfb3e, 0xfb3e,
-0xfb40, 0xfb41,
-0xfb43, 0xfb44,
-0xfb46, 0xfbc1,
-0xfbd3, 0xfd3f,
-0xfd50, 0xfd8f,
-0xfd92, 0xfdc7,
-0xfdf0, 0xfdfd,
-0xfe10, 0xfe19,
-0xfe30, 0xfe52,
-0xfe54, 0xfe66,
-0xfe68, 0xfe6b,
-0xfe70, 0xfe74,
-0xfe76, 0xfefc,
-0xff01, 0xff9d,
-0xffa0, 0xffbe,
-0xffc2, 0xffc7,
-0xffca, 0xffcf,
-0xffd2, 0xffd7,
-0xffda, 0xffdc,
-0xffe0, 0xffe6,
-0xffe8, 0xffee,
-0xfffc, 0xfffd,
-0x10000, 0x1000b,
-0x1000d, 0x10026,
-0x10028, 0x1003a,
-0x1003c, 0x1003d,
-0x1003f, 0x1004d,
-0x10050, 0x1005d,
-0x10080, 0x100fa,
-0x10100, 0x10102,
-0x10107, 0x10133,
-0x10137, 0x1018c,
-0x10190, 0x1019b,
-0x101a0, 0x101a0,
-0x101d0, 0x101fc,
-0x10280, 0x1029c,
-0x102a0, 0x102d0,
-0x102e1, 0x102fb,
-0x10300, 0x10323,
-0x10330, 0x1034a,
-0x10350, 0x10375,
-0x10380, 0x1039d,
-0x1039f, 0x103c3,
-0x103c8, 0x103d5,
-0x10400, 0x1049d,
-0x104a0, 0x104a9,
-0x10500, 0x10527,
-0x10530, 0x10563,
-0x1056f, 0x1056f,
-0x10600, 0x10736,
-0x10740, 0x10755,
-0x10760, 0x10767,
-0x10800, 0x10805,
-0x10808, 0x10808,
-0x1080a, 0x10835,
-0x10837, 0x10838,
-0x1083c, 0x1083c,
-0x1083f, 0x10855,
-0x10857, 0x1089e,
-0x108a7, 0x108af,
-0x108e0, 0x108f2,
-0x108f4, 0x108f5,
-0x108fb, 0x1091b,
-0x1091f, 0x10939,
-0x1093f, 0x1093f,
-0x10980, 0x109b7,
-0x109bc, 0x109cf,
-0x109d2, 0x10a00,
-0x10a10, 0x10a13,
-0x10a15, 0x10a17,
-0x10a19, 0x10a33,
-0x10a40, 0x10a47,
-0x10a50, 0x10a58,
-0x10a60, 0x10a9f,
-0x10ac0, 0x10ae4,
-0x10aeb, 0x10af6,
-0x10b00, 0x10b35,
-0x10b39, 0x10b55,
-0x10b58, 0x10b72,
-0x10b78, 0x10b91,
-0x10b99, 0x10b9c,
-0x10ba9, 0x10baf,
-0x10c00, 0x10c48,
-0x10c80, 0x10cb2,
-0x10cc0, 0x10cf2,
-0x10cfa, 0x10cff,
-0x10e60, 0x10e7e,
-0x11000, 0x11000,
-0x11002, 0x11037,
-0x11047, 0x1104d,
-0x11052, 0x1106f,
-0x11082, 0x110b2,
-0x110b7, 0x110b8,
-0x110bb, 0x110bc,
-0x110be, 0x110c1,
-0x110d0, 0x110e8,
-0x110f0, 0x110f9,
-0x11103, 0x11126,
-0x1112c, 0x1112c,
-0x11136, 0x11143,
-0x11150, 0x11172,
-0x11174, 0x11176,
-0x11182, 0x111b5,
-0x111bf, 0x111c9,
-0x111cd, 0x111cd,
-0x111d0, 0x111df,
-0x111e1, 0x111f4,
-0x11200, 0x11211,
-0x11213, 0x1122e,
-0x11232, 0x11233,
-0x11235, 0x11235,
-0x11238, 0x1123d,
-0x11280, 0x11286,
-0x11288, 0x11288,
-0x1128a, 0x1128d,
-0x1128f, 0x1129d,
-0x1129f, 0x112a9,
-0x112b0, 0x112de,
-0x112e0, 0x112e2,
-0x112f0, 0x112f9,
-0x11302, 0x11303,
-0x11305, 0x1130c,
-0x1130f, 0x11310,
-0x11313, 0x11328,
-0x1132a, 0x11330,
-0x11332, 0x11333,
-0x11335, 0x11339,
-0x1133d, 0x1133d,
-0x1133f, 0x1133f,
-0x11341, 0x11344,
-0x11347, 0x11348,
-0x1134b, 0x1134d,
-0x11350, 0x11350,
-0x1135d, 0x11363,
-0x11480, 0x114af,
-0x114b1, 0x114b2,
-0x114b9, 0x114b9,
-0x114bb, 0x114bc,
-0x114be, 0x114be,
-0x114c1, 0x114c1,
-0x114c4, 0x114c7,
-0x114d0, 0x114d9,
-0x11580, 0x115ae,
-0x115b0, 0x115b1,
-0x115b8, 0x115bb,
-0x115be, 0x115be,
-0x115c1, 0x115db,
-0x11600, 0x11632,
-0x1163b, 0x1163c,
-0x1163e, 0x1163e,
-0x11641, 0x11644,
-0x11650, 0x11659,
-0x11680, 0x116aa,
-0x116ac, 0x116ac,
-0x116ae, 0x116af,
-0x116b6, 0x116b6,
-0x116c0, 0x116c9,
-0x11700, 0x11719,
-0x11720, 0x11721,
-0x11726, 0x11726,
-0x11730, 0x1173f,
-0x118a0, 0x118f2,
-0x118ff, 0x118ff,
-0x11ac0, 0x11af8,
-0x12000, 0x12399,
-0x12400, 0x1246e,
-0x12470, 0x12474,
-0x12480, 0x12543,
-0x13000, 0x1342e,
-0x14400, 0x14646,
-0x16800, 0x16a38,
-0x16a40, 0x16a5e,
-0x16a60, 0x16a69,
-0x16a6e, 0x16a6f,
-0x16ad0, 0x16aed,
-0x16af5, 0x16af5,
-0x16b00, 0x16b2f,
-0x16b37, 0x16b45,
-0x16b50, 0x16b59,
-0x16b5b, 0x16b61,
-0x16b63, 0x16b77,
-0x16b7d, 0x16b8f,
-0x16f00, 0x16f44,
-0x16f50, 0x16f7e,
-0x16f93, 0x16f9f,
-0x1b000, 0x1b001,
-0x1bc00, 0x1bc6a,
-0x1bc70, 0x1bc7c,
-0x1bc80, 0x1bc88,
-0x1bc90, 0x1bc99,
-0x1bc9c, 0x1bc9c,
-0x1bc9f, 0x1bc9f,
-0x1d000, 0x1d0f5,
-0x1d100, 0x1d126,
-0x1d129, 0x1d164,
-0x1d166, 0x1d166,
-0x1d16a, 0x1d16d,
-0x1d183, 0x1d184,
-0x1d18c, 0x1d1a9,
-0x1d1ae, 0x1d1e8,
-0x1d200, 0x1d241,
-0x1d245, 0x1d245,
-0x1d300, 0x1d356,
-0x1d360, 0x1d371,
-0x1d400, 0x1d454,
-0x1d456, 0x1d49c,
-0x1d49e, 0x1d49f,
-0x1d4a2, 0x1d4a2,
-0x1d4a5, 0x1d4a6,
-0x1d4a9, 0x1d4ac,
-0x1d4ae, 0x1d4b9,
-0x1d4bb, 0x1d4bb,
-0x1d4bd, 0x1d4c3,
-0x1d4c5, 0x1d505,
-0x1d507, 0x1d50a,
-0x1d50d, 0x1d514,
-0x1d516, 0x1d51c,
-0x1d51e, 0x1d539,
-0x1d53b, 0x1d53e,
-0x1d540, 0x1d544,
-0x1d546, 0x1d546,
-0x1d54a, 0x1d550,
-0x1d552, 0x1d6a5,
-0x1d6a8, 0x1d7cb,
-0x1d7ce, 0x1d9ff,
-0x1da37, 0x1da3a,
-0x1da6d, 0x1da74,
-0x1da76, 0x1da83,
-0x1da85, 0x1da8b,
-0x1e800, 0x1e8c4,
-0x1e8c7, 0x1e8cf,
-0x1ee00, 0x1ee03,
-0x1ee05, 0x1ee1f,
-0x1ee21, 0x1ee22,
-0x1ee24, 0x1ee24,
-0x1ee27, 0x1ee27,
-0x1ee29, 0x1ee32,
-0x1ee34, 0x1ee37,
-0x1ee39, 0x1ee39,
-0x1ee3b, 0x1ee3b,
-0x1ee42, 0x1ee42,
-0x1ee47, 0x1ee47,
-0x1ee49, 0x1ee49,
-0x1ee4b, 0x1ee4b,
-0x1ee4d, 0x1ee4f,
-0x1ee51, 0x1ee52,
-0x1ee54, 0x1ee54,
-0x1ee57, 0x1ee57,
-0x1ee59, 0x1ee59,
-0x1ee5b, 0x1ee5b,
-0x1ee5d, 0x1ee5d,
-0x1ee5f, 0x1ee5f,
-0x1ee61, 0x1ee62,
-0x1ee64, 0x1ee64,
-0x1ee67, 0x1ee6a,
-0x1ee6c, 0x1ee72,
-0x1ee74, 0x1ee77,
-0x1ee79, 0x1ee7c,
-0x1ee7e, 0x1ee7e,
-0x1ee80, 0x1ee89,
-0x1ee8b, 0x1ee9b,
-0x1eea1, 0x1eea3,
-0x1eea5, 0x1eea9,
-0x1eeab, 0x1eebb,
-0x1eef0, 0x1eef1,
-0x1f000, 0x1f02b,
-0x1f030, 0x1f093,
-0x1f0a0, 0x1f0ae,
-0x1f0b1, 0x1f0bf,
-0x1f0c1, 0x1f0cf,
-0x1f0d1, 0x1f0f5,
-0x1f100, 0x1f10c,
-0x1f110, 0x1f12e,
-0x1f130, 0x1f16b,
-0x1f170, 0x1f19a,
-0x1f1e6, 0x1f202,
-0x1f210, 0x1f23a,
-0x1f240, 0x1f248,
-0x1f250, 0x1f251,
-0x1f300, 0x1f579,
-0x1f57b, 0x1f5a3,
-0x1f5a5, 0x1f6d0,
-0x1f6e0, 0x1f6ec,
-0x1f6f0, 0x1f6f3,
-0x1f700, 0x1f773,
-0x1f780, 0x1f7d4,
-0x1f800, 0x1f80b,
-0x1f810, 0x1f847,
-0x1f850, 0x1f859,
-0x1f860, 0x1f887,
-0x1f890, 0x1f8ad,
-0x1f910, 0x1f918,
-0x1f980, 0x1f984,
-0x1f9c0, 0x1f9c0,
-0x20000, 0x2a6d6,
-0x2a700, 0x2b734,
-0x2b740, 0x2b81d,
-0x2b820, 0x2cea1,
-0x2f800, 0x2fa1d,
-}; /* END of CR_Grapheme_Base */
-
-/* PROPERTY: 'Grapheme_Link': Derived Property */
-static const OnigCodePoint
-CR_Grapheme_Link[] = { 41,
-0x094d, 0x094d,
-0x09cd, 0x09cd,
-0x0a4d, 0x0a4d,
-0x0acd, 0x0acd,
-0x0b4d, 0x0b4d,
-0x0bcd, 0x0bcd,
-0x0c4d, 0x0c4d,
-0x0ccd, 0x0ccd,
-0x0d4d, 0x0d4d,
-0x0dca, 0x0dca,
-0x0e3a, 0x0e3a,
-0x0f84, 0x0f84,
-0x1039, 0x103a,
-0x1714, 0x1714,
-0x1734, 0x1734,
-0x17d2, 0x17d2,
-0x1a60, 0x1a60,
-0x1b44, 0x1b44,
-0x1baa, 0x1bab,
-0x1bf2, 0x1bf3,
-0x2d7f, 0x2d7f,
-0xa806, 0xa806,
-0xa8c4, 0xa8c4,
-0xa953, 0xa953,
-0xa9c0, 0xa9c0,
-0xaaf6, 0xaaf6,
-0xabed, 0xabed,
-0x10a3f, 0x10a3f,
-0x11046, 0x11046,
-0x1107f, 0x1107f,
-0x110b9, 0x110b9,
-0x11133, 0x11134,
-0x111c0, 0x111c0,
-0x11235, 0x11235,
-0x112ea, 0x112ea,
-0x1134d, 0x1134d,
-0x114c2, 0x114c2,
-0x115bf, 0x115bf,
-0x1163f, 0x1163f,
-0x116b6, 0x116b6,
-0x1172b, 0x1172b,
-}; /* END of CR_Grapheme_Link */
-
-/* PROPERTY: 'Common': Script */
-static const OnigCodePoint
-CR_Common[] = { 161,
-0x0000, 0x0040,
-0x005b, 0x0060,
-0x007b, 0x00a9,
-0x00ab, 0x00b9,
-0x00bb, 0x00bf,
-0x00d7, 0x00d7,
-0x00f7, 0x00f7,
-0x02b9, 0x02df,
-0x02e5, 0x02e9,
-0x02ec, 0x02ff,
-0x0374, 0x0374,
-0x037e, 0x037e,
-0x0385, 0x0385,
-0x0387, 0x0387,
-0x0589, 0x0589,
-0x0605, 0x0605,
-0x060c, 0x060c,
-0x061b, 0x061c,
-0x061f, 0x061f,
-0x0640, 0x0640,
-0x06dd, 0x06dd,
-0x0964, 0x0965,
-0x0e3f, 0x0e3f,
-0x0fd5, 0x0fd8,
-0x10fb, 0x10fb,
-0x16eb, 0x16ed,
-0x1735, 0x1736,
-0x1802, 0x1803,
-0x1805, 0x1805,
-0x1cd3, 0x1cd3,
-0x1ce1, 0x1ce1,
-0x1ce9, 0x1cec,
-0x1cee, 0x1cf3,
-0x1cf5, 0x1cf6,
-0x2000, 0x200b,
-0x200e, 0x2064,
-0x2066, 0x2070,
-0x2074, 0x207e,
-0x2080, 0x208e,
-0x20a0, 0x20be,
-0x2100, 0x2125,
-0x2127, 0x2129,
-0x212c, 0x2131,
-0x2133, 0x214d,
-0x214f, 0x215f,
-0x2189, 0x218b,
-0x2190, 0x23fa,
-0x2400, 0x2426,
-0x2440, 0x244a,
-0x2460, 0x27ff,
-0x2900, 0x2b73,
-0x2b76, 0x2b95,
-0x2b98, 0x2bb9,
-0x2bbd, 0x2bc8,
-0x2bca, 0x2bd1,
-0x2bec, 0x2bef,
-0x2e00, 0x2e42,
-0x2ff0, 0x2ffb,
-0x3000, 0x3004,
-0x3006, 0x3006,
-0x3008, 0x3020,
-0x3030, 0x3037,
-0x303c, 0x303f,
-0x309b, 0x309c,
-0x30a0, 0x30a0,
-0x30fb, 0x30fc,
-0x3190, 0x319f,
-0x31c0, 0x31e3,
-0x3220, 0x325f,
-0x327f, 0x32cf,
-0x3358, 0x33ff,
-0x4dc0, 0x4dff,
-0xa700, 0xa721,
-0xa788, 0xa78a,
-0xa830, 0xa839,
-0xa92e, 0xa92e,
-0xa9cf, 0xa9cf,
-0xab5b, 0xab5b,
-0xfd3e, 0xfd3f,
-0xfe10, 0xfe19,
-0xfe30, 0xfe52,
-0xfe54, 0xfe66,
-0xfe68, 0xfe6b,
-0xfeff, 0xfeff,
-0xff01, 0xff20,
-0xff3b, 0xff40,
-0xff5b, 0xff65,
-0xff70, 0xff70,
-0xff9e, 0xff9f,
-0xffe0, 0xffe6,
-0xffe8, 0xffee,
-0xfff9, 0xfffd,
-0x10100, 0x10102,
-0x10107, 0x10133,
-0x10137, 0x1013f,
-0x10190, 0x1019b,
-0x101d0, 0x101fc,
-0x102e1, 0x102fb,
-0x1bca0, 0x1bca3,
-0x1d000, 0x1d0f5,
-0x1d100, 0x1d126,
-0x1d129, 0x1d166,
-0x1d16a, 0x1d17a,
-0x1d183, 0x1d184,
-0x1d18c, 0x1d1a9,
-0x1d1ae, 0x1d1e8,
-0x1d300, 0x1d356,
-0x1d360, 0x1d371,
-0x1d400, 0x1d454,
-0x1d456, 0x1d49c,
-0x1d49e, 0x1d49f,
-0x1d4a2, 0x1d4a2,
-0x1d4a5, 0x1d4a6,
-0x1d4a9, 0x1d4ac,
-0x1d4ae, 0x1d4b9,
-0x1d4bb, 0x1d4bb,
-0x1d4bd, 0x1d4c3,
-0x1d4c5, 0x1d505,
-0x1d507, 0x1d50a,
-0x1d50d, 0x1d514,
-0x1d516, 0x1d51c,
-0x1d51e, 0x1d539,
-0x1d53b, 0x1d53e,
-0x1d540, 0x1d544,
-0x1d546, 0x1d546,
-0x1d54a, 0x1d550,
-0x1d552, 0x1d6a5,
-0x1d6a8, 0x1d7cb,
-0x1d7ce, 0x1d7ff,
-0x1f000, 0x1f02b,
-0x1f030, 0x1f093,
-0x1f0a0, 0x1f0ae,
-0x1f0b1, 0x1f0bf,
-0x1f0c1, 0x1f0cf,
-0x1f0d1, 0x1f0f5,
-0x1f100, 0x1f10c,
-0x1f110, 0x1f12e,
-0x1f130, 0x1f16b,
-0x1f170, 0x1f19a,
-0x1f1e6, 0x1f1ff,
-0x1f201, 0x1f202,
-0x1f210, 0x1f23a,
-0x1f240, 0x1f248,
-0x1f250, 0x1f251,
-0x1f300, 0x1f579,
-0x1f57b, 0x1f5a3,
-0x1f5a5, 0x1f6d0,
-0x1f6e0, 0x1f6ec,
-0x1f6f0, 0x1f6f3,
-0x1f700, 0x1f773,
-0x1f780, 0x1f7d4,
-0x1f800, 0x1f80b,
-0x1f810, 0x1f847,
-0x1f850, 0x1f859,
-0x1f860, 0x1f887,
-0x1f890, 0x1f8ad,
-0x1f910, 0x1f918,
-0x1f980, 0x1f984,
-0x1f9c0, 0x1f9c0,
-0xe0001, 0xe0001,
-0xe0020, 0xe007f,
-}; /* END of CR_Common */
-
-/* PROPERTY: 'Latin': Script */
-static const OnigCodePoint
-CR_Latin[] = { 31,
-0x0041, 0x005a,
-0x0061, 0x007a,
-0x00aa, 0x00aa,
-0x00ba, 0x00ba,
-0x00c0, 0x00d6,
-0x00d8, 0x00f6,
-0x00f8, 0x02b8,
-0x02e0, 0x02e4,
-0x1d00, 0x1d25,
-0x1d2c, 0x1d5c,
-0x1d62, 0x1d65,
-0x1d6b, 0x1d77,
-0x1d79, 0x1dbe,
-0x1e00, 0x1eff,
-0x2071, 0x2071,
-0x207f, 0x207f,
-0x2090, 0x209c,
-0x212a, 0x212b,
-0x2132, 0x2132,
-0x214e, 0x214e,
-0x2160, 0x2188,
-0x2c60, 0x2c7f,
-0xa722, 0xa787,
-0xa78b, 0xa7ad,
-0xa7b0, 0xa7b7,
-0xa7f7, 0xa7ff,
-0xab30, 0xab5a,
-0xab5c, 0xab64,
-0xfb00, 0xfb06,
-0xff21, 0xff3a,
-0xff41, 0xff5a,
-}; /* END of CR_Latin */
-
-/* PROPERTY: 'Greek': Script */
-static const OnigCodePoint
-CR_Greek[] = { 36,
-0x0370, 0x0373,
-0x0375, 0x0377,
-0x037a, 0x037d,
-0x037f, 0x037f,
-0x0384, 0x0384,
-0x0386, 0x0386,
-0x0388, 0x038a,
-0x038c, 0x038c,
-0x038e, 0x03a1,
-0x03a3, 0x03e1,
-0x03f0, 0x03ff,
-0x1d26, 0x1d2a,
-0x1d5d, 0x1d61,
-0x1d66, 0x1d6a,
-0x1dbf, 0x1dbf,
-0x1f00, 0x1f15,
-0x1f18, 0x1f1d,
-0x1f20, 0x1f45,
-0x1f48, 0x1f4d,
-0x1f50, 0x1f57,
-0x1f59, 0x1f59,
-0x1f5b, 0x1f5b,
-0x1f5d, 0x1f5d,
-0x1f5f, 0x1f7d,
-0x1f80, 0x1fb4,
-0x1fb6, 0x1fc4,
-0x1fc6, 0x1fd3,
-0x1fd6, 0x1fdb,
-0x1fdd, 0x1fef,
-0x1ff2, 0x1ff4,
-0x1ff6, 0x1ffe,
-0x2126, 0x2126,
-0xab65, 0xab65,
-0x10140, 0x1018c,
-0x101a0, 0x101a0,
-0x1d200, 0x1d245,
-}; /* END of CR_Greek */
-
-/* PROPERTY: 'Cyrillic': Script */
-static const OnigCodePoint
-CR_Cyrillic[] = { 7,
-0x0400, 0x0484,
-0x0487, 0x052f,
-0x1d2b, 0x1d2b,
-0x1d78, 0x1d78,
-0x2de0, 0x2dff,
-0xa640, 0xa69f,
-0xfe2e, 0xfe2f,
-}; /* END of CR_Cyrillic */
-
-/* PROPERTY: 'Armenian': Script */
-static const OnigCodePoint
-CR_Armenian[] = { 6,
-0x0531, 0x0556,
-0x0559, 0x055f,
-0x0561, 0x0587,
-0x058a, 0x058a,
-0x058d, 0x058f,
-0xfb13, 0xfb17,
-}; /* END of CR_Armenian */
-
-/* PROPERTY: 'Hebrew': Script */
-static const OnigCodePoint
-CR_Hebrew[] = { 9,
-0x0591, 0x05c7,
-0x05d0, 0x05ea,
-0x05f0, 0x05f4,
-0xfb1d, 0xfb36,
-0xfb38, 0xfb3c,
-0xfb3e, 0xfb3e,
-0xfb40, 0xfb41,
-0xfb43, 0xfb44,
-0xfb46, 0xfb4f,
-}; /* END of CR_Hebrew */
-
-/* PROPERTY: 'Arabic': Script */
-static const OnigCodePoint
-CR_Arabic[] = { 54,
-0x0600, 0x0604,
-0x0606, 0x060b,
-0x060d, 0x061a,
-0x061e, 0x061e,
-0x0620, 0x063f,
-0x0641, 0x064a,
-0x0656, 0x066f,
-0x0671, 0x06dc,
-0x06de, 0x06ff,
-0x0750, 0x077f,
-0x08a0, 0x08b4,
-0x08e3, 0x08ff,
-0xfb50, 0xfbc1,
-0xfbd3, 0xfd3d,
-0xfd50, 0xfd8f,
-0xfd92, 0xfdc7,
-0xfdf0, 0xfdfd,
-0xfe70, 0xfe74,
-0xfe76, 0xfefc,
-0x10e60, 0x10e7e,
-0x1ee00, 0x1ee03,
-0x1ee05, 0x1ee1f,
-0x1ee21, 0x1ee22,
-0x1ee24, 0x1ee24,
-0x1ee27, 0x1ee27,
-0x1ee29, 0x1ee32,
-0x1ee34, 0x1ee37,
-0x1ee39, 0x1ee39,
-0x1ee3b, 0x1ee3b,
-0x1ee42, 0x1ee42,
-0x1ee47, 0x1ee47,
-0x1ee49, 0x1ee49,
-0x1ee4b, 0x1ee4b,
-0x1ee4d, 0x1ee4f,
-0x1ee51, 0x1ee52,
-0x1ee54, 0x1ee54,
-0x1ee57, 0x1ee57,
-0x1ee59, 0x1ee59,
-0x1ee5b, 0x1ee5b,
-0x1ee5d, 0x1ee5d,
-0x1ee5f, 0x1ee5f,
-0x1ee61, 0x1ee62,
-0x1ee64, 0x1ee64,
-0x1ee67, 0x1ee6a,
-0x1ee6c, 0x1ee72,
-0x1ee74, 0x1ee77,
-0x1ee79, 0x1ee7c,
-0x1ee7e, 0x1ee7e,
-0x1ee80, 0x1ee89,
-0x1ee8b, 0x1ee9b,
-0x1eea1, 0x1eea3,
-0x1eea5, 0x1eea9,
-0x1eeab, 0x1eebb,
-0x1eef0, 0x1eef1,
-}; /* END of CR_Arabic */
-
-/* PROPERTY: 'Syriac': Script */
-static const OnigCodePoint
-CR_Syriac[] = { 3,
-0x0700, 0x070d,
-0x070f, 0x074a,
-0x074d, 0x074f,
-}; /* END of CR_Syriac */
-
-/* PROPERTY: 'Thaana': Script */
-static const OnigCodePoint
-CR_Thaana[] = { 1,
-0x0780, 0x07b1,
-}; /* END of CR_Thaana */
-
-/* PROPERTY: 'Devanagari': Script */
-static const OnigCodePoint
-CR_Devanagari[] = { 4,
-0x0900, 0x0950,
-0x0953, 0x0963,
-0x0966, 0x097f,
-0xa8e0, 0xa8fd,
-}; /* END of CR_Devanagari */
-
-/* PROPERTY: 'Bengali': Script */
-static const OnigCodePoint
-CR_Bengali[] = { 14,
-0x0980, 0x0983,
-0x0985, 0x098c,
-0x098f, 0x0990,
-0x0993, 0x09a8,
-0x09aa, 0x09b0,
-0x09b2, 0x09b2,
-0x09b6, 0x09b9,
-0x09bc, 0x09c4,
-0x09c7, 0x09c8,
-0x09cb, 0x09ce,
-0x09d7, 0x09d7,
-0x09dc, 0x09dd,
-0x09df, 0x09e3,
-0x09e6, 0x09fb,
-}; /* END of CR_Bengali */
-
-/* PROPERTY: 'Gurmukhi': Script */
-static const OnigCodePoint
-CR_Gurmukhi[] = { 16,
-0x0a01, 0x0a03,
-0x0a05, 0x0a0a,
-0x0a0f, 0x0a10,
-0x0a13, 0x0a28,
-0x0a2a, 0x0a30,
-0x0a32, 0x0a33,
-0x0a35, 0x0a36,
-0x0a38, 0x0a39,
-0x0a3c, 0x0a3c,
-0x0a3e, 0x0a42,
-0x0a47, 0x0a48,
-0x0a4b, 0x0a4d,
-0x0a51, 0x0a51,
-0x0a59, 0x0a5c,
-0x0a5e, 0x0a5e,
-0x0a66, 0x0a75,
-}; /* END of CR_Gurmukhi */
-
-/* PROPERTY: 'Gujarati': Script */
-static const OnigCodePoint
-CR_Gujarati[] = { 14,
-0x0a81, 0x0a83,
-0x0a85, 0x0a8d,
-0x0a8f, 0x0a91,
-0x0a93, 0x0aa8,
-0x0aaa, 0x0ab0,
-0x0ab2, 0x0ab3,
-0x0ab5, 0x0ab9,
-0x0abc, 0x0ac5,
-0x0ac7, 0x0ac9,
-0x0acb, 0x0acd,
-0x0ad0, 0x0ad0,
-0x0ae0, 0x0ae3,
-0x0ae6, 0x0af1,
-0x0af9, 0x0af9,
-}; /* END of CR_Gujarati */
-
-/* PROPERTY: 'Oriya': Script */
-static const OnigCodePoint
-CR_Oriya[] = { 14,
-0x0b01, 0x0b03,
-0x0b05, 0x0b0c,
-0x0b0f, 0x0b10,
-0x0b13, 0x0b28,
-0x0b2a, 0x0b30,
-0x0b32, 0x0b33,
-0x0b35, 0x0b39,
-0x0b3c, 0x0b44,
-0x0b47, 0x0b48,
-0x0b4b, 0x0b4d,
-0x0b56, 0x0b57,
-0x0b5c, 0x0b5d,
-0x0b5f, 0x0b63,
-0x0b66, 0x0b77,
-}; /* END of CR_Oriya */
-
-/* PROPERTY: 'Tamil': Script */
-static const OnigCodePoint
-CR_Tamil[] = { 16,
-0x0b82, 0x0b83,
-0x0b85, 0x0b8a,
-0x0b8e, 0x0b90,
-0x0b92, 0x0b95,
-0x0b99, 0x0b9a,
-0x0b9c, 0x0b9c,
-0x0b9e, 0x0b9f,
-0x0ba3, 0x0ba4,
-0x0ba8, 0x0baa,
-0x0bae, 0x0bb9,
-0x0bbe, 0x0bc2,
-0x0bc6, 0x0bc8,
-0x0bca, 0x0bcd,
-0x0bd0, 0x0bd0,
-0x0bd7, 0x0bd7,
-0x0be6, 0x0bfa,
-}; /* END of CR_Tamil */
-
-/* PROPERTY: 'Telugu': Script */
-static const OnigCodePoint
-CR_Telugu[] = { 13,
-0x0c00, 0x0c03,
-0x0c05, 0x0c0c,
-0x0c0e, 0x0c10,
-0x0c12, 0x0c28,
-0x0c2a, 0x0c39,
-0x0c3d, 0x0c44,
-0x0c46, 0x0c48,
-0x0c4a, 0x0c4d,
-0x0c55, 0x0c56,
-0x0c58, 0x0c5a,
-0x0c60, 0x0c63,
-0x0c66, 0x0c6f,
-0x0c78, 0x0c7f,
-}; /* END of CR_Telugu */
-
-/* PROPERTY: 'Kannada': Script */
-static const OnigCodePoint
-CR_Kannada[] = { 14,
-0x0c81, 0x0c83,
-0x0c85, 0x0c8c,
-0x0c8e, 0x0c90,
-0x0c92, 0x0ca8,
-0x0caa, 0x0cb3,
-0x0cb5, 0x0cb9,
-0x0cbc, 0x0cc4,
-0x0cc6, 0x0cc8,
-0x0cca, 0x0ccd,
-0x0cd5, 0x0cd6,
-0x0cde, 0x0cde,
-0x0ce0, 0x0ce3,
-0x0ce6, 0x0cef,
-0x0cf1, 0x0cf2,
-}; /* END of CR_Kannada */
-
-/* PROPERTY: 'Malayalam': Script */
-static const OnigCodePoint
-CR_Malayalam[] = { 11,
-0x0d01, 0x0d03,
-0x0d05, 0x0d0c,
-0x0d0e, 0x0d10,
-0x0d12, 0x0d3a,
-0x0d3d, 0x0d44,
-0x0d46, 0x0d48,
-0x0d4a, 0x0d4e,
-0x0d57, 0x0d57,
-0x0d5f, 0x0d63,
-0x0d66, 0x0d75,
-0x0d79, 0x0d7f,
-}; /* END of CR_Malayalam */
-
-/* PROPERTY: 'Sinhala': Script */
-static const OnigCodePoint
-CR_Sinhala[] = { 13,
-0x0d82, 0x0d83,
-0x0d85, 0x0d96,
-0x0d9a, 0x0db1,
-0x0db3, 0x0dbb,
-0x0dbd, 0x0dbd,
-0x0dc0, 0x0dc6,
-0x0dca, 0x0dca,
-0x0dcf, 0x0dd4,
-0x0dd6, 0x0dd6,
-0x0dd8, 0x0ddf,
-0x0de6, 0x0def,
-0x0df2, 0x0df4,
-0x111e1, 0x111f4,
-}; /* END of CR_Sinhala */
-
-/* PROPERTY: 'Thai': Script */
-static const OnigCodePoint
-CR_Thai[] = { 2,
-0x0e01, 0x0e3a,
-0x0e40, 0x0e5b,
-}; /* END of CR_Thai */
-
-/* PROPERTY: 'Lao': Script */
-static const OnigCodePoint
-CR_Lao[] = { 18,
-0x0e81, 0x0e82,
-0x0e84, 0x0e84,
-0x0e87, 0x0e88,
-0x0e8a, 0x0e8a,
-0x0e8d, 0x0e8d,
-0x0e94, 0x0e97,
-0x0e99, 0x0e9f,
-0x0ea1, 0x0ea3,
-0x0ea5, 0x0ea5,
-0x0ea7, 0x0ea7,
-0x0eaa, 0x0eab,
-0x0ead, 0x0eb9,
-0x0ebb, 0x0ebd,
-0x0ec0, 0x0ec4,
-0x0ec6, 0x0ec6,
-0x0ec8, 0x0ecd,
-0x0ed0, 0x0ed9,
-0x0edc, 0x0edf,
-}; /* END of CR_Lao */
-
-/* PROPERTY: 'Tibetan': Script */
-static const OnigCodePoint
-CR_Tibetan[] = { 7,
-0x0f00, 0x0f47,
-0x0f49, 0x0f6c,
-0x0f71, 0x0f97,
-0x0f99, 0x0fbc,
-0x0fbe, 0x0fcc,
-0x0fce, 0x0fd4,
-0x0fd9, 0x0fda,
-}; /* END of CR_Tibetan */
-
-/* PROPERTY: 'Myanmar': Script */
-static const OnigCodePoint
-CR_Myanmar[] = { 3,
-0x1000, 0x109f,
-0xa9e0, 0xa9fe,
-0xaa60, 0xaa7f,
-}; /* END of CR_Myanmar */
-
-/* PROPERTY: 'Georgian': Script */
-static const OnigCodePoint
-CR_Georgian[] = { 8,
-0x10a0, 0x10c5,
-0x10c7, 0x10c7,
-0x10cd, 0x10cd,
-0x10d0, 0x10fa,
-0x10fc, 0x10ff,
-0x2d00, 0x2d25,
-0x2d27, 0x2d27,
-0x2d2d, 0x2d2d,
-}; /* END of CR_Georgian */
-
-/* PROPERTY: 'Hangul': Script */
-static const OnigCodePoint
-CR_Hangul[] = { 14,
-0x1100, 0x11ff,
-0x302e, 0x302f,
-0x3131, 0x318e,
-0x3200, 0x321e,
-0x3260, 0x327e,
-0xa960, 0xa97c,
-0xac00, 0xd7a3,
-0xd7b0, 0xd7c6,
-0xd7cb, 0xd7fb,
-0xffa0, 0xffbe,
-0xffc2, 0xffc7,
-0xffca, 0xffcf,
-0xffd2, 0xffd7,
-0xffda, 0xffdc,
-}; /* END of CR_Hangul */
-
-/* PROPERTY: 'Ethiopic': Script */
-static const OnigCodePoint
-CR_Ethiopic[] = { 32,
-0x1200, 0x1248,
-0x124a, 0x124d,
-0x1250, 0x1256,
-0x1258, 0x1258,
-0x125a, 0x125d,
-0x1260, 0x1288,
-0x128a, 0x128d,
-0x1290, 0x12b0,
-0x12b2, 0x12b5,
-0x12b8, 0x12be,
-0x12c0, 0x12c0,
-0x12c2, 0x12c5,
-0x12c8, 0x12d6,
-0x12d8, 0x1310,
-0x1312, 0x1315,
-0x1318, 0x135a,
-0x135d, 0x137c,
-0x1380, 0x1399,
-0x2d80, 0x2d96,
-0x2da0, 0x2da6,
-0x2da8, 0x2dae,
-0x2db0, 0x2db6,
-0x2db8, 0x2dbe,
-0x2dc0, 0x2dc6,
-0x2dc8, 0x2dce,
-0x2dd0, 0x2dd6,
-0x2dd8, 0x2dde,
-0xab01, 0xab06,
-0xab09, 0xab0e,
-0xab11, 0xab16,
-0xab20, 0xab26,
-0xab28, 0xab2e,
-}; /* END of CR_Ethiopic */
-
-/* PROPERTY: 'Cherokee': Script */
-static const OnigCodePoint
-CR_Cherokee[] = { 3,
-0x13a0, 0x13f5,
-0x13f8, 0x13fd,
-0xab70, 0xabbf,
-}; /* END of CR_Cherokee */
-
-/* PROPERTY: 'Canadian_Aboriginal': Script */
-static const OnigCodePoint
-CR_Canadian_Aboriginal[] = { 2,
-0x1400, 0x167f,
-0x18b0, 0x18f5,
-}; /* END of CR_Canadian_Aboriginal */
-
-/* PROPERTY: 'Ogham': Script */
-static const OnigCodePoint
-CR_Ogham[] = { 1,
-0x1680, 0x169c,
-}; /* END of CR_Ogham */
-
-/* PROPERTY: 'Runic': Script */
-static const OnigCodePoint
-CR_Runic[] = { 2,
-0x16a0, 0x16ea,
-0x16ee, 0x16f8,
-}; /* END of CR_Runic */
-
-/* PROPERTY: 'Khmer': Script */
-static const OnigCodePoint
-CR_Khmer[] = { 4,
-0x1780, 0x17dd,
-0x17e0, 0x17e9,
-0x17f0, 0x17f9,
-0x19e0, 0x19ff,
-}; /* END of CR_Khmer */
-
-/* PROPERTY: 'Mongolian': Script */
-static const OnigCodePoint
-CR_Mongolian[] = { 6,
-0x1800, 0x1801,
-0x1804, 0x1804,
-0x1806, 0x180e,
-0x1810, 0x1819,
-0x1820, 0x1877,
-0x1880, 0x18aa,
-}; /* END of CR_Mongolian */
-
-/* PROPERTY: 'Hiragana': Script */
-static const OnigCodePoint
-CR_Hiragana[] = { 4,
-0x3041, 0x3096,
-0x309d, 0x309f,
-0x1b001, 0x1b001,
-0x1f200, 0x1f200,
-}; /* END of CR_Hiragana */
-
-/* PROPERTY: 'Katakana': Script */
-static const OnigCodePoint
-CR_Katakana[] = { 8,
-0x30a1, 0x30fa,
-0x30fd, 0x30ff,
-0x31f0, 0x31ff,
-0x32d0, 0x32fe,
-0x3300, 0x3357,
-0xff66, 0xff6f,
-0xff71, 0xff9d,
-0x1b000, 0x1b000,
-}; /* END of CR_Katakana */
-
-/* PROPERTY: 'Bopomofo': Script */
-static const OnigCodePoint
-CR_Bopomofo[] = { 3,
-0x02ea, 0x02eb,
-0x3105, 0x312d,
-0x31a0, 0x31ba,
-}; /* END of CR_Bopomofo */
-
-/* PROPERTY: 'Han': Script */
-static const OnigCodePoint
-CR_Han[] = { 16,
-0x2e80, 0x2e99,
-0x2e9b, 0x2ef3,
-0x2f00, 0x2fd5,
-0x3005, 0x3005,
-0x3007, 0x3007,
-0x3021, 0x3029,
-0x3038, 0x303b,
-0x3400, 0x4db5,
-0x4e00, 0x9fd5,
-0xf900, 0xfa6d,
-0xfa70, 0xfad9,
-0x20000, 0x2a6d6,
-0x2a700, 0x2b734,
-0x2b740, 0x2b81d,
-0x2b820, 0x2cea1,
-0x2f800, 0x2fa1d,
-}; /* END of CR_Han */
-
/* PROPERTY: 'Yi': Script */
static const OnigCodePoint
CR_Yi[] = { 2,
@@ -18431,2389 +20778,42 @@ CR_Yi[] = { 2,
0xa490, 0xa4c6,
}; /* END of CR_Yi */
-/* PROPERTY: 'Old_Italic': Script */
-static const OnigCodePoint
-CR_Old_Italic[] = { 1,
-0x10300, 0x10323,
-}; /* END of CR_Old_Italic */
-
-/* PROPERTY: 'Gothic': Script */
-static const OnigCodePoint
-CR_Gothic[] = { 1,
-0x10330, 0x1034a,
-}; /* END of CR_Gothic */
-
-/* PROPERTY: 'Deseret': Script */
-static const OnigCodePoint
-CR_Deseret[] = { 1,
-0x10400, 0x1044f,
-}; /* END of CR_Deseret */
-
-/* PROPERTY: 'Inherited': Script */
-static const OnigCodePoint
-CR_Inherited[] = { 27,
-0x0300, 0x036f,
-0x0485, 0x0486,
-0x064b, 0x0655,
-0x0670, 0x0670,
-0x0951, 0x0952,
-0x1ab0, 0x1abe,
-0x1cd0, 0x1cd2,
-0x1cd4, 0x1ce0,
-0x1ce2, 0x1ce8,
-0x1ced, 0x1ced,
-0x1cf4, 0x1cf4,
-0x1cf8, 0x1cf9,
-0x1dc0, 0x1df5,
-0x1dfc, 0x1dff,
-0x200c, 0x200d,
-0x20d0, 0x20f0,
-0x302a, 0x302d,
-0x3099, 0x309a,
-0xfe00, 0xfe0f,
-0xfe20, 0xfe2d,
-0x101fd, 0x101fd,
-0x102e0, 0x102e0,
-0x1d167, 0x1d169,
-0x1d17b, 0x1d182,
-0x1d185, 0x1d18b,
-0x1d1aa, 0x1d1ad,
-0xe0100, 0xe01ef,
-}; /* END of CR_Inherited */
-
-/* PROPERTY: 'Tagalog': Script */
-static const OnigCodePoint
-CR_Tagalog[] = { 2,
-0x1700, 0x170c,
-0x170e, 0x1714,
-}; /* END of CR_Tagalog */
-
-/* PROPERTY: 'Hanunoo': Script */
-static const OnigCodePoint
-CR_Hanunoo[] = { 1,
-0x1720, 0x1734,
-}; /* END of CR_Hanunoo */
-
-/* PROPERTY: 'Buhid': Script */
-static const OnigCodePoint
-CR_Buhid[] = { 1,
-0x1740, 0x1753,
-}; /* END of CR_Buhid */
-
-/* PROPERTY: 'Tagbanwa': Script */
-static const OnigCodePoint
-CR_Tagbanwa[] = { 3,
-0x1760, 0x176c,
-0x176e, 0x1770,
-0x1772, 0x1773,
-}; /* END of CR_Tagbanwa */
-
-/* PROPERTY: 'Limbu': Script */
-static const OnigCodePoint
-CR_Limbu[] = { 5,
-0x1900, 0x191e,
-0x1920, 0x192b,
-0x1930, 0x193b,
-0x1940, 0x1940,
-0x1944, 0x194f,
-}; /* END of CR_Limbu */
-
-/* PROPERTY: 'Tai_Le': Script */
-static const OnigCodePoint
-CR_Tai_Le[] = { 2,
-0x1950, 0x196d,
-0x1970, 0x1974,
-}; /* END of CR_Tai_Le */
-
-/* PROPERTY: 'Linear_B': Script */
-static const OnigCodePoint
-CR_Linear_B[] = { 7,
-0x10000, 0x1000b,
-0x1000d, 0x10026,
-0x10028, 0x1003a,
-0x1003c, 0x1003d,
-0x1003f, 0x1004d,
-0x10050, 0x1005d,
-0x10080, 0x100fa,
-}; /* END of CR_Linear_B */
-
-/* PROPERTY: 'Ugaritic': Script */
-static const OnigCodePoint
-CR_Ugaritic[] = { 2,
-0x10380, 0x1039d,
-0x1039f, 0x1039f,
-}; /* END of CR_Ugaritic */
-
-/* PROPERTY: 'Shavian': Script */
-static const OnigCodePoint
-CR_Shavian[] = { 1,
-0x10450, 0x1047f,
-}; /* END of CR_Shavian */
-
-/* PROPERTY: 'Osmanya': Script */
-static const OnigCodePoint
-CR_Osmanya[] = { 2,
-0x10480, 0x1049d,
-0x104a0, 0x104a9,
-}; /* END of CR_Osmanya */
-
-/* PROPERTY: 'Cypriot': Script */
-static const OnigCodePoint
-CR_Cypriot[] = { 6,
-0x10800, 0x10805,
-0x10808, 0x10808,
-0x1080a, 0x10835,
-0x10837, 0x10838,
-0x1083c, 0x1083c,
-0x1083f, 0x1083f,
-}; /* END of CR_Cypriot */
-
-/* PROPERTY: 'Braille': Script */
-static const OnigCodePoint
-CR_Braille[] = { 1,
-0x2800, 0x28ff,
-}; /* END of CR_Braille */
-
-/* PROPERTY: 'Buginese': Script */
-static const OnigCodePoint
-CR_Buginese[] = { 2,
-0x1a00, 0x1a1b,
-0x1a1e, 0x1a1f,
-}; /* END of CR_Buginese */
-
-/* PROPERTY: 'Coptic': Script */
-static const OnigCodePoint
-CR_Coptic[] = { 3,
-0x03e2, 0x03ef,
-0x2c80, 0x2cf3,
-0x2cf9, 0x2cff,
-}; /* END of CR_Coptic */
-
-/* PROPERTY: 'New_Tai_Lue': Script */
-static const OnigCodePoint
-CR_New_Tai_Lue[] = { 4,
-0x1980, 0x19ab,
-0x19b0, 0x19c9,
-0x19d0, 0x19da,
-0x19de, 0x19df,
-}; /* END of CR_New_Tai_Lue */
-
-/* PROPERTY: 'Glagolitic': Script */
-static const OnigCodePoint
-CR_Glagolitic[] = { 2,
-0x2c00, 0x2c2e,
-0x2c30, 0x2c5e,
-}; /* END of CR_Glagolitic */
-
-/* PROPERTY: 'Tifinagh': Script */
-static const OnigCodePoint
-CR_Tifinagh[] = { 3,
-0x2d30, 0x2d67,
-0x2d6f, 0x2d70,
-0x2d7f, 0x2d7f,
-}; /* END of CR_Tifinagh */
-
-/* PROPERTY: 'Syloti_Nagri': Script */
-static const OnigCodePoint
-CR_Syloti_Nagri[] = { 1,
-0xa800, 0xa82b,
-}; /* END of CR_Syloti_Nagri */
-
-/* PROPERTY: 'Old_Persian': Script */
-static const OnigCodePoint
-CR_Old_Persian[] = { 2,
-0x103a0, 0x103c3,
-0x103c8, 0x103d5,
-}; /* END of CR_Old_Persian */
-
-/* PROPERTY: 'Kharoshthi': Script */
-static const OnigCodePoint
-CR_Kharoshthi[] = { 8,
-0x10a00, 0x10a03,
-0x10a05, 0x10a06,
-0x10a0c, 0x10a13,
-0x10a15, 0x10a17,
-0x10a19, 0x10a33,
-0x10a38, 0x10a3a,
-0x10a3f, 0x10a47,
-0x10a50, 0x10a58,
-}; /* END of CR_Kharoshthi */
-
-/* PROPERTY: 'Balinese': Script */
-static const OnigCodePoint
-CR_Balinese[] = { 2,
-0x1b00, 0x1b4b,
-0x1b50, 0x1b7c,
-}; /* END of CR_Balinese */
-
-/* PROPERTY: 'Cuneiform': Script */
-static const OnigCodePoint
-CR_Cuneiform[] = { 4,
-0x12000, 0x12399,
-0x12400, 0x1246e,
-0x12470, 0x12474,
-0x12480, 0x12543,
-}; /* END of CR_Cuneiform */
-
-/* PROPERTY: 'Phoenician': Script */
-static const OnigCodePoint
-CR_Phoenician[] = { 2,
-0x10900, 0x1091b,
-0x1091f, 0x1091f,
-}; /* END of CR_Phoenician */
-
-/* PROPERTY: 'Phags_Pa': Script */
-static const OnigCodePoint
-CR_Phags_Pa[] = { 1,
-0xa840, 0xa877,
-}; /* END of CR_Phags_Pa */
-
-/* PROPERTY: 'Nko': Script */
-static const OnigCodePoint
-CR_Nko[] = { 1,
-0x07c0, 0x07fa,
-}; /* END of CR_Nko */
-
-/* PROPERTY: 'Sundanese': Script */
-static const OnigCodePoint
-CR_Sundanese[] = { 2,
-0x1b80, 0x1bbf,
-0x1cc0, 0x1cc7,
-}; /* END of CR_Sundanese */
-
-/* PROPERTY: 'Lepcha': Script */
-static const OnigCodePoint
-CR_Lepcha[] = { 3,
-0x1c00, 0x1c37,
-0x1c3b, 0x1c49,
-0x1c4d, 0x1c4f,
-}; /* END of CR_Lepcha */
-
-/* PROPERTY: 'Ol_Chiki': Script */
-static const OnigCodePoint
-CR_Ol_Chiki[] = { 1,
-0x1c50, 0x1c7f,
-}; /* END of CR_Ol_Chiki */
-
-/* PROPERTY: 'Vai': Script */
-static const OnigCodePoint
-CR_Vai[] = { 1,
-0xa500, 0xa62b,
-}; /* END of CR_Vai */
-
-/* PROPERTY: 'Saurashtra': Script */
-static const OnigCodePoint
-CR_Saurashtra[] = { 2,
-0xa880, 0xa8c4,
-0xa8ce, 0xa8d9,
-}; /* END of CR_Saurashtra */
-
-/* PROPERTY: 'Kayah_Li': Script */
-static const OnigCodePoint
-CR_Kayah_Li[] = { 2,
-0xa900, 0xa92d,
-0xa92f, 0xa92f,
-}; /* END of CR_Kayah_Li */
-
-/* PROPERTY: 'Rejang': Script */
-static const OnigCodePoint
-CR_Rejang[] = { 2,
-0xa930, 0xa953,
-0xa95f, 0xa95f,
-}; /* END of CR_Rejang */
-
-/* PROPERTY: 'Lycian': Script */
-static const OnigCodePoint
-CR_Lycian[] = { 1,
-0x10280, 0x1029c,
-}; /* END of CR_Lycian */
-
-/* PROPERTY: 'Carian': Script */
-static const OnigCodePoint
-CR_Carian[] = { 1,
-0x102a0, 0x102d0,
-}; /* END of CR_Carian */
-
-/* PROPERTY: 'Lydian': Script */
-static const OnigCodePoint
-CR_Lydian[] = { 2,
-0x10920, 0x10939,
-0x1093f, 0x1093f,
-}; /* END of CR_Lydian */
-
-/* PROPERTY: 'Cham': Script */
-static const OnigCodePoint
-CR_Cham[] = { 4,
-0xaa00, 0xaa36,
-0xaa40, 0xaa4d,
-0xaa50, 0xaa59,
-0xaa5c, 0xaa5f,
-}; /* END of CR_Cham */
-
-/* PROPERTY: 'Tai_Tham': Script */
-static const OnigCodePoint
-CR_Tai_Tham[] = { 5,
-0x1a20, 0x1a5e,
-0x1a60, 0x1a7c,
-0x1a7f, 0x1a89,
-0x1a90, 0x1a99,
-0x1aa0, 0x1aad,
-}; /* END of CR_Tai_Tham */
-
-/* PROPERTY: 'Tai_Viet': Script */
-static const OnigCodePoint
-CR_Tai_Viet[] = { 2,
-0xaa80, 0xaac2,
-0xaadb, 0xaadf,
-}; /* END of CR_Tai_Viet */
-
-/* PROPERTY: 'Avestan': Script */
-static const OnigCodePoint
-CR_Avestan[] = { 2,
-0x10b00, 0x10b35,
-0x10b39, 0x10b3f,
-}; /* END of CR_Avestan */
-
-/* PROPERTY: 'Egyptian_Hieroglyphs': Script */
-static const OnigCodePoint
-CR_Egyptian_Hieroglyphs[] = { 1,
-0x13000, 0x1342e,
-}; /* END of CR_Egyptian_Hieroglyphs */
-
-/* PROPERTY: 'Samaritan': Script */
-static const OnigCodePoint
-CR_Samaritan[] = { 2,
-0x0800, 0x082d,
-0x0830, 0x083e,
-}; /* END of CR_Samaritan */
-
-/* PROPERTY: 'Lisu': Script */
-static const OnigCodePoint
-CR_Lisu[] = { 1,
-0xa4d0, 0xa4ff,
-}; /* END of CR_Lisu */
-
-/* PROPERTY: 'Bamum': Script */
-static const OnigCodePoint
-CR_Bamum[] = { 2,
-0xa6a0, 0xa6f7,
-0x16800, 0x16a38,
-}; /* END of CR_Bamum */
-
-/* PROPERTY: 'Javanese': Script */
-static const OnigCodePoint
-CR_Javanese[] = { 3,
-0xa980, 0xa9cd,
-0xa9d0, 0xa9d9,
-0xa9de, 0xa9df,
-}; /* END of CR_Javanese */
-
-/* PROPERTY: 'Meetei_Mayek': Script */
-static const OnigCodePoint
-CR_Meetei_Mayek[] = { 3,
-0xaae0, 0xaaf6,
-0xabc0, 0xabed,
-0xabf0, 0xabf9,
-}; /* END of CR_Meetei_Mayek */
-
-/* PROPERTY: 'Imperial_Aramaic': Script */
-static const OnigCodePoint
-CR_Imperial_Aramaic[] = { 2,
-0x10840, 0x10855,
-0x10857, 0x1085f,
-}; /* END of CR_Imperial_Aramaic */
-
-/* PROPERTY: 'Old_South_Arabian': Script */
-static const OnigCodePoint
-CR_Old_South_Arabian[] = { 1,
-0x10a60, 0x10a7f,
-}; /* END of CR_Old_South_Arabian */
-
-/* PROPERTY: 'Inscriptional_Parthian': Script */
-static const OnigCodePoint
-CR_Inscriptional_Parthian[] = { 2,
-0x10b40, 0x10b55,
-0x10b58, 0x10b5f,
-}; /* END of CR_Inscriptional_Parthian */
-
-/* PROPERTY: 'Inscriptional_Pahlavi': Script */
-static const OnigCodePoint
-CR_Inscriptional_Pahlavi[] = { 2,
-0x10b60, 0x10b72,
-0x10b78, 0x10b7f,
-}; /* END of CR_Inscriptional_Pahlavi */
-
-/* PROPERTY: 'Old_Turkic': Script */
-static const OnigCodePoint
-CR_Old_Turkic[] = { 1,
-0x10c00, 0x10c48,
-}; /* END of CR_Old_Turkic */
-
-/* PROPERTY: 'Kaithi': Script */
-static const OnigCodePoint
-CR_Kaithi[] = { 1,
-0x11080, 0x110c1,
-}; /* END of CR_Kaithi */
-
-/* PROPERTY: 'Batak': Script */
-static const OnigCodePoint
-CR_Batak[] = { 2,
-0x1bc0, 0x1bf3,
-0x1bfc, 0x1bff,
-}; /* END of CR_Batak */
-
-/* PROPERTY: 'Brahmi': Script */
-static const OnigCodePoint
-CR_Brahmi[] = { 3,
-0x11000, 0x1104d,
-0x11052, 0x1106f,
-0x1107f, 0x1107f,
-}; /* END of CR_Brahmi */
-
-/* PROPERTY: 'Mandaic': Script */
-static const OnigCodePoint
-CR_Mandaic[] = { 2,
-0x0840, 0x085b,
-0x085e, 0x085e,
-}; /* END of CR_Mandaic */
-
-/* PROPERTY: 'Chakma': Script */
-static const OnigCodePoint
-CR_Chakma[] = { 2,
-0x11100, 0x11134,
-0x11136, 0x11143,
-}; /* END of CR_Chakma */
-
-/* PROPERTY: 'Meroitic_Cursive': Script */
-static const OnigCodePoint
-CR_Meroitic_Cursive[] = { 3,
-0x109a0, 0x109b7,
-0x109bc, 0x109cf,
-0x109d2, 0x109ff,
-}; /* END of CR_Meroitic_Cursive */
-
-/* PROPERTY: 'Meroitic_Hieroglyphs': Script */
-static const OnigCodePoint
-CR_Meroitic_Hieroglyphs[] = { 1,
-0x10980, 0x1099f,
-}; /* END of CR_Meroitic_Hieroglyphs */
-
-/* PROPERTY: 'Miao': Script */
-static const OnigCodePoint
-CR_Miao[] = { 3,
-0x16f00, 0x16f44,
-0x16f50, 0x16f7e,
-0x16f8f, 0x16f9f,
-}; /* END of CR_Miao */
-
-/* PROPERTY: 'Sharada': Script */
-static const OnigCodePoint
-CR_Sharada[] = { 2,
-0x11180, 0x111cd,
-0x111d0, 0x111df,
-}; /* END of CR_Sharada */
-
-/* PROPERTY: 'Sora_Sompeng': Script */
-static const OnigCodePoint
-CR_Sora_Sompeng[] = { 2,
-0x110d0, 0x110e8,
-0x110f0, 0x110f9,
-}; /* END of CR_Sora_Sompeng */
-
-/* PROPERTY: 'Takri': Script */
-static const OnigCodePoint
-CR_Takri[] = { 2,
-0x11680, 0x116b7,
-0x116c0, 0x116c9,
-}; /* END of CR_Takri */
-
-/* PROPERTY: 'Caucasian_Albanian': Script */
-static const OnigCodePoint
-CR_Caucasian_Albanian[] = { 2,
-0x10530, 0x10563,
-0x1056f, 0x1056f,
-}; /* END of CR_Caucasian_Albanian */
-
-/* PROPERTY: 'Bassa_Vah': Script */
-static const OnigCodePoint
-CR_Bassa_Vah[] = { 2,
-0x16ad0, 0x16aed,
-0x16af0, 0x16af5,
-}; /* END of CR_Bassa_Vah */
-
-/* PROPERTY: 'Duployan': Script */
-static const OnigCodePoint
-CR_Duployan[] = { 5,
-0x1bc00, 0x1bc6a,
-0x1bc70, 0x1bc7c,
-0x1bc80, 0x1bc88,
-0x1bc90, 0x1bc99,
-0x1bc9c, 0x1bc9f,
-}; /* END of CR_Duployan */
-
-/* PROPERTY: 'Elbasan': Script */
-static const OnigCodePoint
-CR_Elbasan[] = { 1,
-0x10500, 0x10527,
-}; /* END of CR_Elbasan */
-
-/* PROPERTY: 'Grantha': Script */
-static const OnigCodePoint
-CR_Grantha[] = { 15,
-0x11300, 0x11303,
-0x11305, 0x1130c,
-0x1130f, 0x11310,
-0x11313, 0x11328,
-0x1132a, 0x11330,
-0x11332, 0x11333,
-0x11335, 0x11339,
-0x1133c, 0x11344,
-0x11347, 0x11348,
-0x1134b, 0x1134d,
-0x11350, 0x11350,
-0x11357, 0x11357,
-0x1135d, 0x11363,
-0x11366, 0x1136c,
-0x11370, 0x11374,
-}; /* END of CR_Grantha */
-
-/* PROPERTY: 'Pahawh_Hmong': Script */
-static const OnigCodePoint
-CR_Pahawh_Hmong[] = { 5,
-0x16b00, 0x16b45,
-0x16b50, 0x16b59,
-0x16b5b, 0x16b61,
-0x16b63, 0x16b77,
-0x16b7d, 0x16b8f,
-}; /* END of CR_Pahawh_Hmong */
-
-/* PROPERTY: 'Khojki': Script */
-static const OnigCodePoint
-CR_Khojki[] = { 2,
-0x11200, 0x11211,
-0x11213, 0x1123d,
-}; /* END of CR_Khojki */
-
-/* PROPERTY: 'Linear_A': Script */
-static const OnigCodePoint
-CR_Linear_A[] = { 3,
-0x10600, 0x10736,
-0x10740, 0x10755,
-0x10760, 0x10767,
-}; /* END of CR_Linear_A */
-
-/* PROPERTY: 'Mahajani': Script */
-static const OnigCodePoint
-CR_Mahajani[] = { 1,
-0x11150, 0x11176,
-}; /* END of CR_Mahajani */
-
-/* PROPERTY: 'Manichaean': Script */
-static const OnigCodePoint
-CR_Manichaean[] = { 2,
-0x10ac0, 0x10ae6,
-0x10aeb, 0x10af6,
-}; /* END of CR_Manichaean */
-
-/* PROPERTY: 'Mende_Kikakui': Script */
-static const OnigCodePoint
-CR_Mende_Kikakui[] = { 2,
-0x1e800, 0x1e8c4,
-0x1e8c7, 0x1e8d6,
-}; /* END of CR_Mende_Kikakui */
-
-/* PROPERTY: 'Modi': Script */
-static const OnigCodePoint
-CR_Modi[] = { 2,
-0x11600, 0x11644,
-0x11650, 0x11659,
-}; /* END of CR_Modi */
-
-/* PROPERTY: 'Mro': Script */
-static const OnigCodePoint
-CR_Mro[] = { 3,
-0x16a40, 0x16a5e,
-0x16a60, 0x16a69,
-0x16a6e, 0x16a6f,
-}; /* END of CR_Mro */
-
-/* PROPERTY: 'Old_North_Arabian': Script */
-static const OnigCodePoint
-CR_Old_North_Arabian[] = { 1,
-0x10a80, 0x10a9f,
-}; /* END of CR_Old_North_Arabian */
-
-/* PROPERTY: 'Nabataean': Script */
-static const OnigCodePoint
-CR_Nabataean[] = { 2,
-0x10880, 0x1089e,
-0x108a7, 0x108af,
-}; /* END of CR_Nabataean */
-
-/* PROPERTY: 'Palmyrene': Script */
-static const OnigCodePoint
-CR_Palmyrene[] = { 1,
-0x10860, 0x1087f,
-}; /* END of CR_Palmyrene */
-
-/* PROPERTY: 'Pau_Cin_Hau': Script */
-static const OnigCodePoint
-CR_Pau_Cin_Hau[] = { 1,
-0x11ac0, 0x11af8,
-}; /* END of CR_Pau_Cin_Hau */
-
-/* PROPERTY: 'Old_Permic': Script */
-static const OnigCodePoint
-CR_Old_Permic[] = { 1,
-0x10350, 0x1037a,
-}; /* END of CR_Old_Permic */
-
-/* PROPERTY: 'Psalter_Pahlavi': Script */
-static const OnigCodePoint
-CR_Psalter_Pahlavi[] = { 3,
-0x10b80, 0x10b91,
-0x10b99, 0x10b9c,
-0x10ba9, 0x10baf,
-}; /* END of CR_Psalter_Pahlavi */
-
-/* PROPERTY: 'Siddham': Script */
-static const OnigCodePoint
-CR_Siddham[] = { 2,
-0x11580, 0x115b5,
-0x115b8, 0x115dd,
-}; /* END of CR_Siddham */
-
-/* PROPERTY: 'Khudawadi': Script */
-static const OnigCodePoint
-CR_Khudawadi[] = { 2,
-0x112b0, 0x112ea,
-0x112f0, 0x112f9,
-}; /* END of CR_Khudawadi */
-
-/* PROPERTY: 'Tirhuta': Script */
-static const OnigCodePoint
-CR_Tirhuta[] = { 2,
-0x11480, 0x114c7,
-0x114d0, 0x114d9,
-}; /* END of CR_Tirhuta */
-
-/* PROPERTY: 'Warang_Citi': Script */
-static const OnigCodePoint
-CR_Warang_Citi[] = { 2,
-0x118a0, 0x118f2,
-0x118ff, 0x118ff,
-}; /* END of CR_Warang_Citi */
-
-/* PROPERTY: 'Ahom': Script */
-static const OnigCodePoint
-CR_Ahom[] = { 3,
-0x11700, 0x11719,
-0x1171d, 0x1172b,
-0x11730, 0x1173f,
-}; /* END of CR_Ahom */
-
-/* PROPERTY: 'Anatolian_Hieroglyphs': Script */
-static const OnigCodePoint
-CR_Anatolian_Hieroglyphs[] = { 1,
-0x14400, 0x14646,
-}; /* END of CR_Anatolian_Hieroglyphs */
-
-/* PROPERTY: 'Hatran': Script */
-static const OnigCodePoint
-CR_Hatran[] = { 3,
-0x108e0, 0x108f2,
-0x108f4, 0x108f5,
-0x108fb, 0x108ff,
-}; /* END of CR_Hatran */
-
-/* PROPERTY: 'Multani': Script */
-static const OnigCodePoint
-CR_Multani[] = { 5,
-0x11280, 0x11286,
-0x11288, 0x11288,
-0x1128a, 0x1128d,
-0x1128f, 0x1129d,
-0x1129f, 0x112a9,
-}; /* END of CR_Multani */
-
-/* PROPERTY: 'Old_Hungarian': Script */
-static const OnigCodePoint
-CR_Old_Hungarian[] = { 3,
-0x10c80, 0x10cb2,
-0x10cc0, 0x10cf2,
-0x10cfa, 0x10cff,
-}; /* END of CR_Old_Hungarian */
-
-/* PROPERTY: 'SignWriting': Script */
-static const OnigCodePoint
-CR_SignWriting[] = { 3,
-0x1d800, 0x1da8b,
-0x1da9b, 0x1da9f,
-0x1daa1, 0x1daaf,
-}; /* END of CR_SignWriting */
-
-/* PROPERTY: 'White_Space': Binary Property */
-#define CR_White_Space CR_Space
-
-/* PROPERTY: 'Bidi_Control': Binary Property */
-static const OnigCodePoint
-CR_Bidi_Control[] = { 4,
-0x061c, 0x061c,
-0x200e, 0x200f,
-0x202a, 0x202e,
-0x2066, 0x2069,
-}; /* END of CR_Bidi_Control */
-
-/* PROPERTY: 'Join_Control': Binary Property */
-static const OnigCodePoint
-CR_Join_Control[] = { 1,
-0x200c, 0x200d,
-}; /* END of CR_Join_Control */
-
-/* PROPERTY: 'Dash': Binary Property */
-static const OnigCodePoint
-CR_Dash[] = { 21,
-0x002d, 0x002d,
-0x058a, 0x058a,
-0x05be, 0x05be,
-0x1400, 0x1400,
-0x1806, 0x1806,
-0x2010, 0x2015,
-0x2053, 0x2053,
-0x207b, 0x207b,
-0x208b, 0x208b,
-0x2212, 0x2212,
-0x2e17, 0x2e17,
-0x2e1a, 0x2e1a,
-0x2e3a, 0x2e3b,
-0x2e40, 0x2e40,
-0x301c, 0x301c,
-0x3030, 0x3030,
-0x30a0, 0x30a0,
-0xfe31, 0xfe32,
-0xfe58, 0xfe58,
-0xfe63, 0xfe63,
-0xff0d, 0xff0d,
-}; /* END of CR_Dash */
-
-/* PROPERTY: 'Hyphen': Binary Property */
-static const OnigCodePoint
-CR_Hyphen[] = { 10,
-0x002d, 0x002d,
-0x00ad, 0x00ad,
-0x058a, 0x058a,
-0x1806, 0x1806,
-0x2010, 0x2011,
-0x2e17, 0x2e17,
-0x30fb, 0x30fb,
-0xfe63, 0xfe63,
-0xff0d, 0xff0d,
-0xff65, 0xff65,
-}; /* END of CR_Hyphen */
-
-/* PROPERTY: 'Quotation_Mark': Binary Property */
-static const OnigCodePoint
-CR_Quotation_Mark[] = { 13,
-0x0022, 0x0022,
-0x0027, 0x0027,
-0x00ab, 0x00ab,
-0x00bb, 0x00bb,
-0x2018, 0x201f,
-0x2039, 0x203a,
-0x2e42, 0x2e42,
-0x300c, 0x300f,
-0x301d, 0x301f,
-0xfe41, 0xfe44,
-0xff02, 0xff02,
-0xff07, 0xff07,
-0xff62, 0xff63,
-}; /* END of CR_Quotation_Mark */
-
-/* PROPERTY: 'Terminal_Punctuation': Binary Property */
-static const OnigCodePoint
-CR_Terminal_Punctuation[] = { 90,
-0x0021, 0x0021,
-0x002c, 0x002c,
-0x002e, 0x002e,
-0x003a, 0x003b,
-0x003f, 0x003f,
-0x037e, 0x037e,
-0x0387, 0x0387,
-0x0589, 0x0589,
-0x05c3, 0x05c3,
-0x060c, 0x060c,
-0x061b, 0x061b,
-0x061f, 0x061f,
-0x06d4, 0x06d4,
-0x0700, 0x070a,
-0x070c, 0x070c,
-0x07f8, 0x07f9,
-0x0830, 0x083e,
-0x085e, 0x085e,
-0x0964, 0x0965,
-0x0e5a, 0x0e5b,
-0x0f08, 0x0f08,
-0x0f0d, 0x0f12,
-0x104a, 0x104b,
-0x1361, 0x1368,
-0x166d, 0x166e,
-0x16eb, 0x16ed,
-0x1735, 0x1736,
-0x17d4, 0x17d6,
-0x17da, 0x17da,
-0x1802, 0x1805,
-0x1808, 0x1809,
-0x1944, 0x1945,
-0x1aa8, 0x1aab,
-0x1b5a, 0x1b5b,
-0x1b5d, 0x1b5f,
-0x1c3b, 0x1c3f,
-0x1c7e, 0x1c7f,
-0x203c, 0x203d,
-0x2047, 0x2049,
-0x2e2e, 0x2e2e,
-0x2e3c, 0x2e3c,
-0x2e41, 0x2e41,
-0x3001, 0x3002,
-0xa4fe, 0xa4ff,
-0xa60d, 0xa60f,
-0xa6f3, 0xa6f7,
-0xa876, 0xa877,
-0xa8ce, 0xa8cf,
-0xa92f, 0xa92f,
-0xa9c7, 0xa9c9,
-0xaa5d, 0xaa5f,
-0xaadf, 0xaadf,
-0xaaf0, 0xaaf1,
-0xabeb, 0xabeb,
-0xfe50, 0xfe52,
-0xfe54, 0xfe57,
-0xff01, 0xff01,
-0xff0c, 0xff0c,
-0xff0e, 0xff0e,
-0xff1a, 0xff1b,
-0xff1f, 0xff1f,
-0xff61, 0xff61,
-0xff64, 0xff64,
-0x1039f, 0x1039f,
-0x103d0, 0x103d0,
-0x10857, 0x10857,
-0x1091f, 0x1091f,
-0x10a56, 0x10a57,
-0x10af0, 0x10af5,
-0x10b3a, 0x10b3f,
-0x10b99, 0x10b9c,
-0x11047, 0x1104d,
-0x110be, 0x110c1,
-0x11141, 0x11143,
-0x111c5, 0x111c6,
-0x111cd, 0x111cd,
-0x111de, 0x111df,
-0x11238, 0x1123c,
-0x112a9, 0x112a9,
-0x115c2, 0x115c5,
-0x115c9, 0x115d7,
-0x11641, 0x11642,
-0x1173c, 0x1173e,
-0x12470, 0x12474,
-0x16a6e, 0x16a6f,
-0x16af5, 0x16af5,
-0x16b37, 0x16b39,
-0x16b44, 0x16b44,
-0x1bc9f, 0x1bc9f,
-0x1da87, 0x1da8a,
-}; /* END of CR_Terminal_Punctuation */
-
-/* PROPERTY: 'Other_Math': Binary Property */
-static const OnigCodePoint
-CR_Other_Math[] = { 134,
-0x005e, 0x005e,
-0x03d0, 0x03d2,
-0x03d5, 0x03d5,
-0x03f0, 0x03f1,
-0x03f4, 0x03f5,
-0x2016, 0x2016,
-0x2032, 0x2034,
-0x2040, 0x2040,
-0x2061, 0x2064,
-0x207d, 0x207e,
-0x208d, 0x208e,
-0x20d0, 0x20dc,
-0x20e1, 0x20e1,
-0x20e5, 0x20e6,
-0x20eb, 0x20ef,
-0x2102, 0x2102,
-0x2107, 0x2107,
-0x210a, 0x2113,
-0x2115, 0x2115,
-0x2119, 0x211d,
-0x2124, 0x2124,
-0x2128, 0x2129,
-0x212c, 0x212d,
-0x212f, 0x2131,
-0x2133, 0x2138,
-0x213c, 0x213f,
-0x2145, 0x2149,
-0x2195, 0x2199,
-0x219c, 0x219f,
-0x21a1, 0x21a2,
-0x21a4, 0x21a5,
-0x21a7, 0x21a7,
-0x21a9, 0x21ad,
-0x21b0, 0x21b1,
-0x21b6, 0x21b7,
-0x21bc, 0x21cd,
-0x21d0, 0x21d1,
-0x21d3, 0x21d3,
-0x21d5, 0x21db,
-0x21dd, 0x21dd,
-0x21e4, 0x21e5,
-0x2308, 0x230b,
-0x23b4, 0x23b5,
-0x23b7, 0x23b7,
-0x23d0, 0x23d0,
-0x23e2, 0x23e2,
-0x25a0, 0x25a1,
-0x25ae, 0x25b6,
-0x25bc, 0x25c0,
-0x25c6, 0x25c7,
-0x25ca, 0x25cb,
-0x25cf, 0x25d3,
-0x25e2, 0x25e2,
-0x25e4, 0x25e4,
-0x25e7, 0x25ec,
-0x2605, 0x2606,
-0x2640, 0x2640,
-0x2642, 0x2642,
-0x2660, 0x2663,
-0x266d, 0x266e,
-0x27c5, 0x27c6,
-0x27e6, 0x27ef,
-0x2983, 0x2998,
-0x29d8, 0x29db,
-0x29fc, 0x29fd,
-0xfe61, 0xfe61,
-0xfe63, 0xfe63,
-0xfe68, 0xfe68,
-0xff3c, 0xff3c,
-0xff3e, 0xff3e,
-0x1d400, 0x1d454,
-0x1d456, 0x1d49c,
-0x1d49e, 0x1d49f,
-0x1d4a2, 0x1d4a2,
-0x1d4a5, 0x1d4a6,
-0x1d4a9, 0x1d4ac,
-0x1d4ae, 0x1d4b9,
-0x1d4bb, 0x1d4bb,
-0x1d4bd, 0x1d4c3,
-0x1d4c5, 0x1d505,
-0x1d507, 0x1d50a,
-0x1d50d, 0x1d514,
-0x1d516, 0x1d51c,
-0x1d51e, 0x1d539,
-0x1d53b, 0x1d53e,
-0x1d540, 0x1d544,
-0x1d546, 0x1d546,
-0x1d54a, 0x1d550,
-0x1d552, 0x1d6a5,
-0x1d6a8, 0x1d6c0,
-0x1d6c2, 0x1d6da,
-0x1d6dc, 0x1d6fa,
-0x1d6fc, 0x1d714,
-0x1d716, 0x1d734,
-0x1d736, 0x1d74e,
-0x1d750, 0x1d76e,
-0x1d770, 0x1d788,
-0x1d78a, 0x1d7a8,
-0x1d7aa, 0x1d7c2,
-0x1d7c4, 0x1d7cb,
-0x1d7ce, 0x1d7ff,
-0x1ee00, 0x1ee03,
-0x1ee05, 0x1ee1f,
-0x1ee21, 0x1ee22,
-0x1ee24, 0x1ee24,
-0x1ee27, 0x1ee27,
-0x1ee29, 0x1ee32,
-0x1ee34, 0x1ee37,
-0x1ee39, 0x1ee39,
-0x1ee3b, 0x1ee3b,
-0x1ee42, 0x1ee42,
-0x1ee47, 0x1ee47,
-0x1ee49, 0x1ee49,
-0x1ee4b, 0x1ee4b,
-0x1ee4d, 0x1ee4f,
-0x1ee51, 0x1ee52,
-0x1ee54, 0x1ee54,
-0x1ee57, 0x1ee57,
-0x1ee59, 0x1ee59,
-0x1ee5b, 0x1ee5b,
-0x1ee5d, 0x1ee5d,
-0x1ee5f, 0x1ee5f,
-0x1ee61, 0x1ee62,
-0x1ee64, 0x1ee64,
-0x1ee67, 0x1ee6a,
-0x1ee6c, 0x1ee72,
-0x1ee74, 0x1ee77,
-0x1ee79, 0x1ee7c,
-0x1ee7e, 0x1ee7e,
-0x1ee80, 0x1ee89,
-0x1ee8b, 0x1ee9b,
-0x1eea1, 0x1eea3,
-0x1eea5, 0x1eea9,
-0x1eeab, 0x1eebb,
-}; /* END of CR_Other_Math */
-
-/* PROPERTY: 'Hex_Digit': Binary Property */
-static const OnigCodePoint
-CR_Hex_Digit[] = { 6,
-0x0030, 0x0039,
-0x0041, 0x0046,
-0x0061, 0x0066,
-0xff10, 0xff19,
-0xff21, 0xff26,
-0xff41, 0xff46,
-}; /* END of CR_Hex_Digit */
-
-/* PROPERTY: 'ASCII_Hex_Digit': Binary Property */
-#define CR_ASCII_Hex_Digit CR_XDigit
-
-/* PROPERTY: 'Other_Alphabetic': Binary Property */
-static const OnigCodePoint
-CR_Other_Alphabetic[] = { 178,
-0x0345, 0x0345,
-0x05b0, 0x05bd,
-0x05bf, 0x05bf,
-0x05c1, 0x05c2,
-0x05c4, 0x05c5,
-0x05c7, 0x05c7,
-0x0610, 0x061a,
-0x064b, 0x0657,
-0x0659, 0x065f,
-0x0670, 0x0670,
-0x06d6, 0x06dc,
-0x06e1, 0x06e4,
-0x06e7, 0x06e8,
-0x06ed, 0x06ed,
-0x0711, 0x0711,
-0x0730, 0x073f,
-0x07a6, 0x07b0,
-0x0816, 0x0817,
-0x081b, 0x0823,
-0x0825, 0x0827,
-0x0829, 0x082c,
-0x08e3, 0x08e9,
-0x08f0, 0x0903,
-0x093a, 0x093b,
-0x093e, 0x094c,
-0x094e, 0x094f,
-0x0955, 0x0957,
-0x0962, 0x0963,
-0x0981, 0x0983,
-0x09be, 0x09c4,
-0x09c7, 0x09c8,
-0x09cb, 0x09cc,
-0x09d7, 0x09d7,
-0x09e2, 0x09e3,
-0x0a01, 0x0a03,
-0x0a3e, 0x0a42,
-0x0a47, 0x0a48,
-0x0a4b, 0x0a4c,
-0x0a51, 0x0a51,
-0x0a70, 0x0a71,
-0x0a75, 0x0a75,
-0x0a81, 0x0a83,
-0x0abe, 0x0ac5,
-0x0ac7, 0x0ac9,
-0x0acb, 0x0acc,
-0x0ae2, 0x0ae3,
-0x0b01, 0x0b03,
-0x0b3e, 0x0b44,
-0x0b47, 0x0b48,
-0x0b4b, 0x0b4c,
-0x0b56, 0x0b57,
-0x0b62, 0x0b63,
-0x0b82, 0x0b82,
-0x0bbe, 0x0bc2,
-0x0bc6, 0x0bc8,
-0x0bca, 0x0bcc,
-0x0bd7, 0x0bd7,
-0x0c00, 0x0c03,
-0x0c3e, 0x0c44,
-0x0c46, 0x0c48,
-0x0c4a, 0x0c4c,
-0x0c55, 0x0c56,
-0x0c62, 0x0c63,
-0x0c81, 0x0c83,
-0x0cbe, 0x0cc4,
-0x0cc6, 0x0cc8,
-0x0cca, 0x0ccc,
-0x0cd5, 0x0cd6,
-0x0ce2, 0x0ce3,
-0x0d01, 0x0d03,
-0x0d3e, 0x0d44,
-0x0d46, 0x0d48,
-0x0d4a, 0x0d4c,
-0x0d57, 0x0d57,
-0x0d62, 0x0d63,
-0x0d82, 0x0d83,
-0x0dcf, 0x0dd4,
-0x0dd6, 0x0dd6,
-0x0dd8, 0x0ddf,
-0x0df2, 0x0df3,
-0x0e31, 0x0e31,
-0x0e34, 0x0e3a,
-0x0e4d, 0x0e4d,
-0x0eb1, 0x0eb1,
-0x0eb4, 0x0eb9,
-0x0ebb, 0x0ebc,
-0x0ecd, 0x0ecd,
-0x0f71, 0x0f81,
-0x0f8d, 0x0f97,
-0x0f99, 0x0fbc,
-0x102b, 0x1036,
-0x1038, 0x1038,
-0x103b, 0x103e,
-0x1056, 0x1059,
-0x105e, 0x1060,
-0x1062, 0x1062,
-0x1067, 0x1068,
-0x1071, 0x1074,
-0x1082, 0x1086,
-0x109c, 0x109d,
-0x135f, 0x135f,
-0x1712, 0x1713,
-0x1732, 0x1733,
-0x1752, 0x1753,
-0x1772, 0x1773,
-0x17b6, 0x17c8,
-0x18a9, 0x18a9,
-0x1920, 0x192b,
-0x1930, 0x1938,
-0x1a17, 0x1a1b,
-0x1a55, 0x1a5e,
-0x1a61, 0x1a74,
-0x1b00, 0x1b04,
-0x1b35, 0x1b43,
-0x1b80, 0x1b82,
-0x1ba1, 0x1ba9,
-0x1bac, 0x1bad,
-0x1be7, 0x1bf1,
-0x1c24, 0x1c35,
-0x1cf2, 0x1cf3,
-0x1de7, 0x1df4,
-0x24b6, 0x24e9,
-0x2de0, 0x2dff,
-0xa674, 0xa67b,
-0xa69e, 0xa69f,
-0xa823, 0xa827,
-0xa880, 0xa881,
-0xa8b4, 0xa8c3,
-0xa926, 0xa92a,
-0xa947, 0xa952,
-0xa980, 0xa983,
-0xa9b4, 0xa9bf,
-0xaa29, 0xaa36,
-0xaa43, 0xaa43,
-0xaa4c, 0xaa4d,
-0xaab0, 0xaab0,
-0xaab2, 0xaab4,
-0xaab7, 0xaab8,
-0xaabe, 0xaabe,
-0xaaeb, 0xaaef,
-0xaaf5, 0xaaf5,
-0xabe3, 0xabea,
-0xfb1e, 0xfb1e,
-0x10376, 0x1037a,
-0x10a01, 0x10a03,
-0x10a05, 0x10a06,
-0x10a0c, 0x10a0f,
-0x11000, 0x11002,
-0x11038, 0x11045,
-0x11082, 0x11082,
-0x110b0, 0x110b8,
-0x11100, 0x11102,
-0x11127, 0x11132,
-0x11180, 0x11182,
-0x111b3, 0x111bf,
-0x1122c, 0x11234,
-0x11237, 0x11237,
-0x112df, 0x112e8,
-0x11300, 0x11303,
-0x1133e, 0x11344,
-0x11347, 0x11348,
-0x1134b, 0x1134c,
-0x11357, 0x11357,
-0x11362, 0x11363,
-0x114b0, 0x114c1,
-0x115af, 0x115b5,
-0x115b8, 0x115be,
-0x115dc, 0x115dd,
-0x11630, 0x1163e,
-0x11640, 0x11640,
-0x116ab, 0x116b5,
-0x1171d, 0x1172a,
-0x16b30, 0x16b36,
-0x16f51, 0x16f7e,
-0x1bc9e, 0x1bc9e,
-0x1f130, 0x1f149,
-0x1f150, 0x1f169,
-0x1f170, 0x1f189,
-}; /* END of CR_Other_Alphabetic */
-
-/* PROPERTY: 'Ideographic': Binary Property */
-static const OnigCodePoint
-CR_Ideographic[] = { 12,
-0x3006, 0x3007,
-0x3021, 0x3029,
-0x3038, 0x303a,
-0x3400, 0x4db5,
-0x4e00, 0x9fd5,
-0xf900, 0xfa6d,
-0xfa70, 0xfad9,
-0x20000, 0x2a6d6,
-0x2a700, 0x2b734,
-0x2b740, 0x2b81d,
-0x2b820, 0x2cea1,
-0x2f800, 0x2fa1d,
-}; /* END of CR_Ideographic */
-
-/* PROPERTY: 'Diacritic': Binary Property */
-static const OnigCodePoint
-CR_Diacritic[] = { 147,
-0x005e, 0x005e,
-0x0060, 0x0060,
-0x00a8, 0x00a8,
-0x00af, 0x00af,
-0x00b4, 0x00b4,
-0x00b7, 0x00b8,
-0x02b0, 0x034e,
-0x0350, 0x0357,
-0x035d, 0x0362,
-0x0374, 0x0375,
-0x037a, 0x037a,
-0x0384, 0x0385,
-0x0483, 0x0487,
-0x0559, 0x0559,
-0x0591, 0x05a1,
-0x05a3, 0x05bd,
-0x05bf, 0x05bf,
-0x05c1, 0x05c2,
-0x05c4, 0x05c4,
-0x064b, 0x0652,
-0x0657, 0x0658,
-0x06df, 0x06e0,
-0x06e5, 0x06e6,
-0x06ea, 0x06ec,
-0x0730, 0x074a,
-0x07a6, 0x07b0,
-0x07eb, 0x07f5,
-0x0818, 0x0819,
-0x08e3, 0x08fe,
-0x093c, 0x093c,
-0x094d, 0x094d,
-0x0951, 0x0954,
-0x0971, 0x0971,
-0x09bc, 0x09bc,
-0x09cd, 0x09cd,
-0x0a3c, 0x0a3c,
-0x0a4d, 0x0a4d,
-0x0abc, 0x0abc,
-0x0acd, 0x0acd,
-0x0b3c, 0x0b3c,
-0x0b4d, 0x0b4d,
-0x0bcd, 0x0bcd,
-0x0c4d, 0x0c4d,
-0x0cbc, 0x0cbc,
-0x0ccd, 0x0ccd,
-0x0d4d, 0x0d4d,
-0x0dca, 0x0dca,
-0x0e47, 0x0e4c,
-0x0e4e, 0x0e4e,
-0x0ec8, 0x0ecc,
-0x0f18, 0x0f19,
-0x0f35, 0x0f35,
-0x0f37, 0x0f37,
-0x0f39, 0x0f39,
-0x0f3e, 0x0f3f,
-0x0f82, 0x0f84,
-0x0f86, 0x0f87,
-0x0fc6, 0x0fc6,
-0x1037, 0x1037,
-0x1039, 0x103a,
-0x1087, 0x108d,
-0x108f, 0x108f,
-0x109a, 0x109b,
-0x17c9, 0x17d3,
-0x17dd, 0x17dd,
-0x1939, 0x193b,
-0x1a75, 0x1a7c,
-0x1a7f, 0x1a7f,
-0x1ab0, 0x1abd,
-0x1b34, 0x1b34,
-0x1b44, 0x1b44,
-0x1b6b, 0x1b73,
-0x1baa, 0x1bab,
-0x1c36, 0x1c37,
-0x1c78, 0x1c7d,
-0x1cd0, 0x1ce8,
-0x1ced, 0x1ced,
-0x1cf4, 0x1cf4,
-0x1cf8, 0x1cf9,
-0x1d2c, 0x1d6a,
-0x1dc4, 0x1dcf,
-0x1df5, 0x1df5,
-0x1dfd, 0x1dff,
-0x1fbd, 0x1fbd,
-0x1fbf, 0x1fc1,
-0x1fcd, 0x1fcf,
-0x1fdd, 0x1fdf,
-0x1fed, 0x1fef,
-0x1ffd, 0x1ffe,
-0x2cef, 0x2cf1,
-0x2e2f, 0x2e2f,
-0x302a, 0x302f,
-0x3099, 0x309c,
-0x30fc, 0x30fc,
-0xa66f, 0xa66f,
-0xa67c, 0xa67d,
-0xa67f, 0xa67f,
-0xa69c, 0xa69d,
-0xa6f0, 0xa6f1,
-0xa717, 0xa721,
-0xa788, 0xa788,
-0xa7f8, 0xa7f9,
-0xa8c4, 0xa8c4,
-0xa8e0, 0xa8f1,
-0xa92b, 0xa92e,
-0xa953, 0xa953,
-0xa9b3, 0xa9b3,
-0xa9c0, 0xa9c0,
-0xa9e5, 0xa9e5,
-0xaa7b, 0xaa7d,
-0xaabf, 0xaac2,
-0xaaf6, 0xaaf6,
-0xab5b, 0xab5f,
-0xabec, 0xabed,
-0xfb1e, 0xfb1e,
-0xfe20, 0xfe2f,
-0xff3e, 0xff3e,
-0xff40, 0xff40,
-0xff70, 0xff70,
-0xff9e, 0xff9f,
-0xffe3, 0xffe3,
-0x102e0, 0x102e0,
-0x10ae5, 0x10ae6,
-0x110b9, 0x110ba,
-0x11133, 0x11134,
-0x11173, 0x11173,
-0x111c0, 0x111c0,
-0x111ca, 0x111cc,
-0x11235, 0x11236,
-0x112e9, 0x112ea,
-0x1133c, 0x1133c,
-0x1134d, 0x1134d,
-0x11366, 0x1136c,
-0x11370, 0x11374,
-0x114c2, 0x114c3,
-0x115bf, 0x115c0,
-0x1163f, 0x1163f,
-0x116b6, 0x116b7,
-0x1172b, 0x1172b,
-0x16af0, 0x16af4,
-0x16f8f, 0x16f9f,
-0x1d167, 0x1d169,
-0x1d16d, 0x1d172,
-0x1d17b, 0x1d182,
-0x1d185, 0x1d18b,
-0x1d1aa, 0x1d1ad,
-0x1e8d0, 0x1e8d6,
-}; /* END of CR_Diacritic */
-
-/* PROPERTY: 'Extender': Binary Property */
-static const OnigCodePoint
-CR_Extender[] = { 26,
-0x00b7, 0x00b7,
-0x02d0, 0x02d1,
-0x0640, 0x0640,
-0x07fa, 0x07fa,
-0x0e46, 0x0e46,
-0x0ec6, 0x0ec6,
-0x180a, 0x180a,
-0x1843, 0x1843,
-0x1aa7, 0x1aa7,
-0x1c36, 0x1c36,
-0x1c7b, 0x1c7b,
-0x3005, 0x3005,
-0x3031, 0x3035,
-0x309d, 0x309e,
-0x30fc, 0x30fe,
-0xa015, 0xa015,
-0xa60c, 0xa60c,
-0xa9cf, 0xa9cf,
-0xa9e6, 0xa9e6,
-0xaa70, 0xaa70,
-0xaadd, 0xaadd,
-0xaaf3, 0xaaf4,
-0xff70, 0xff70,
-0x1135d, 0x1135d,
-0x115c6, 0x115c8,
-0x16b42, 0x16b43,
-}; /* END of CR_Extender */
-
-/* PROPERTY: 'Other_Lowercase': Binary Property */
-static const OnigCodePoint
-CR_Other_Lowercase[] = { 20,
-0x00aa, 0x00aa,
-0x00ba, 0x00ba,
-0x02b0, 0x02b8,
-0x02c0, 0x02c1,
-0x02e0, 0x02e4,
-0x0345, 0x0345,
-0x037a, 0x037a,
-0x1d2c, 0x1d6a,
-0x1d78, 0x1d78,
-0x1d9b, 0x1dbf,
-0x2071, 0x2071,
-0x207f, 0x207f,
-0x2090, 0x209c,
-0x2170, 0x217f,
-0x24d0, 0x24e9,
-0x2c7c, 0x2c7d,
-0xa69c, 0xa69d,
-0xa770, 0xa770,
-0xa7f8, 0xa7f9,
-0xab5c, 0xab5f,
-}; /* END of CR_Other_Lowercase */
-
-/* PROPERTY: 'Other_Uppercase': Binary Property */
-static const OnigCodePoint
-CR_Other_Uppercase[] = { 5,
-0x2160, 0x216f,
-0x24b6, 0x24cf,
-0x1f130, 0x1f149,
-0x1f150, 0x1f169,
-0x1f170, 0x1f189,
-}; /* END of CR_Other_Uppercase */
-
-/* PROPERTY: 'Noncharacter_Code_Point': Binary Property */
-static const OnigCodePoint
-CR_Noncharacter_Code_Point[] = { 18,
-0xfdd0, 0xfdef,
-0xfffe, 0xffff,
-0x1fffe, 0x1ffff,
-0x2fffe, 0x2ffff,
-0x3fffe, 0x3ffff,
-0x4fffe, 0x4ffff,
-0x5fffe, 0x5ffff,
-0x6fffe, 0x6ffff,
-0x7fffe, 0x7ffff,
-0x8fffe, 0x8ffff,
-0x9fffe, 0x9ffff,
-0xafffe, 0xaffff,
-0xbfffe, 0xbffff,
-0xcfffe, 0xcffff,
-0xdfffe, 0xdffff,
-0xefffe, 0xeffff,
-0xffffe, 0xfffff,
-0x10fffe, 0x10ffff,
-}; /* END of CR_Noncharacter_Code_Point */
-
-/* PROPERTY: 'Other_Grapheme_Extend': Binary Property */
-static const OnigCodePoint
-CR_Other_Grapheme_Extend[] = { 22,
-0x09be, 0x09be,
-0x09d7, 0x09d7,
-0x0b3e, 0x0b3e,
-0x0b57, 0x0b57,
-0x0bbe, 0x0bbe,
-0x0bd7, 0x0bd7,
-0x0cc2, 0x0cc2,
-0x0cd5, 0x0cd6,
-0x0d3e, 0x0d3e,
-0x0d57, 0x0d57,
-0x0dcf, 0x0dcf,
-0x0ddf, 0x0ddf,
-0x200c, 0x200d,
-0x302e, 0x302f,
-0xff9e, 0xff9f,
-0x1133e, 0x1133e,
-0x11357, 0x11357,
-0x114b0, 0x114b0,
-0x114bd, 0x114bd,
-0x115af, 0x115af,
-0x1d165, 0x1d165,
-0x1d16e, 0x1d172,
-}; /* END of CR_Other_Grapheme_Extend */
-
-/* PROPERTY: 'IDS_Binary_Operator': Binary Property */
-static const OnigCodePoint
-CR_IDS_Binary_Operator[] = { 2,
-0x2ff0, 0x2ff1,
-0x2ff4, 0x2ffb,
-}; /* END of CR_IDS_Binary_Operator */
-
-/* PROPERTY: 'IDS_Trinary_Operator': Binary Property */
-static const OnigCodePoint
-CR_IDS_Trinary_Operator[] = { 1,
-0x2ff2, 0x2ff3,
-}; /* END of CR_IDS_Trinary_Operator */
-
-/* PROPERTY: 'Radical': Binary Property */
-static const OnigCodePoint
-CR_Radical[] = { 3,
-0x2e80, 0x2e99,
-0x2e9b, 0x2ef3,
-0x2f00, 0x2fd5,
-}; /* END of CR_Radical */
-
-/* PROPERTY: 'Unified_Ideograph': Binary Property */
-static const OnigCodePoint
-CR_Unified_Ideograph[] = { 13,
-0x3400, 0x4db5,
-0x4e00, 0x9fd5,
-0xfa0e, 0xfa0f,
-0xfa11, 0xfa11,
-0xfa13, 0xfa14,
-0xfa1f, 0xfa1f,
-0xfa21, 0xfa21,
-0xfa23, 0xfa24,
-0xfa27, 0xfa29,
-0x20000, 0x2a6d6,
-0x2a700, 0x2b734,
-0x2b740, 0x2b81d,
-0x2b820, 0x2cea1,
-}; /* END of CR_Unified_Ideograph */
-
-/* PROPERTY: 'Other_Default_Ignorable_Code_Point': Binary Property */
-static const OnigCodePoint
-CR_Other_Default_Ignorable_Code_Point[] = { 11,
-0x034f, 0x034f,
-0x115f, 0x1160,
-0x17b4, 0x17b5,
-0x2065, 0x2065,
-0x3164, 0x3164,
-0xffa0, 0xffa0,
-0xfff0, 0xfff8,
-0xe0000, 0xe0000,
-0xe0002, 0xe001f,
-0xe0080, 0xe00ff,
-0xe01f0, 0xe0fff,
-}; /* END of CR_Other_Default_Ignorable_Code_Point */
-
-/* PROPERTY: 'Deprecated': Binary Property */
-static const OnigCodePoint
-CR_Deprecated[] = { 9,
-0x0149, 0x0149,
-0x0673, 0x0673,
-0x0f77, 0x0f77,
-0x0f79, 0x0f79,
-0x17a3, 0x17a4,
-0x206a, 0x206f,
-0x2329, 0x232a,
-0xe0001, 0xe0001,
-0xe007f, 0xe007f,
-}; /* END of CR_Deprecated */
-
-/* PROPERTY: 'Soft_Dotted': Binary Property */
-static const OnigCodePoint
-CR_Soft_Dotted[] = { 31,
-0x0069, 0x006a,
-0x012f, 0x012f,
-0x0249, 0x0249,
-0x0268, 0x0268,
-0x029d, 0x029d,
-0x02b2, 0x02b2,
-0x03f3, 0x03f3,
-0x0456, 0x0456,
-0x0458, 0x0458,
-0x1d62, 0x1d62,
-0x1d96, 0x1d96,
-0x1da4, 0x1da4,
-0x1da8, 0x1da8,
-0x1e2d, 0x1e2d,
-0x1ecb, 0x1ecb,
-0x2071, 0x2071,
-0x2148, 0x2149,
-0x2c7c, 0x2c7c,
-0x1d422, 0x1d423,
-0x1d456, 0x1d457,
-0x1d48a, 0x1d48b,
-0x1d4be, 0x1d4bf,
-0x1d4f2, 0x1d4f3,
-0x1d526, 0x1d527,
-0x1d55a, 0x1d55b,
-0x1d58e, 0x1d58f,
-0x1d5c2, 0x1d5c3,
-0x1d5f6, 0x1d5f7,
-0x1d62a, 0x1d62b,
-0x1d65e, 0x1d65f,
-0x1d692, 0x1d693,
-}; /* END of CR_Soft_Dotted */
-
-/* PROPERTY: 'Logical_Order_Exception': Binary Property */
-static const OnigCodePoint
-CR_Logical_Order_Exception[] = { 7,
-0x0e40, 0x0e44,
-0x0ec0, 0x0ec4,
-0x19b5, 0x19b7,
-0x19ba, 0x19ba,
-0xaab5, 0xaab6,
-0xaab9, 0xaab9,
-0xaabb, 0xaabc,
-}; /* END of CR_Logical_Order_Exception */
-
-/* PROPERTY: 'Other_ID_Start': Binary Property */
-static const OnigCodePoint
-CR_Other_ID_Start[] = { 3,
-0x2118, 0x2118,
-0x212e, 0x212e,
-0x309b, 0x309c,
-}; /* END of CR_Other_ID_Start */
-
-/* PROPERTY: 'Other_ID_Continue': Binary Property */
+/* PROPERTY: 'Z': Major Category */
static const OnigCodePoint
-CR_Other_ID_Continue[] = { 4,
-0x00b7, 0x00b7,
-0x0387, 0x0387,
-0x1369, 0x1371,
-0x19da, 0x19da,
-}; /* END of CR_Other_ID_Continue */
+CR_Z[] = { 8,
+0x0020, 0x0020,
+0x00a0, 0x00a0,
+0x1680, 0x1680,
+0x2000, 0x200a,
+0x2028, 0x2029,
+0x202f, 0x202f,
+0x205f, 0x205f,
+0x3000, 0x3000,
+}; /* END of CR_Z */
-/* PROPERTY: 'STerm': Binary Property */
+/* PROPERTY: 'Zl': General Category */
static const OnigCodePoint
-CR_STerm[] = { 64,
-0x0021, 0x0021,
-0x002e, 0x002e,
-0x003f, 0x003f,
-0x0589, 0x0589,
-0x061f, 0x061f,
-0x06d4, 0x06d4,
-0x0700, 0x0702,
-0x07f9, 0x07f9,
-0x0964, 0x0965,
-0x104a, 0x104b,
-0x1362, 0x1362,
-0x1367, 0x1368,
-0x166e, 0x166e,
-0x1735, 0x1736,
-0x1803, 0x1803,
-0x1809, 0x1809,
-0x1944, 0x1945,
-0x1aa8, 0x1aab,
-0x1b5a, 0x1b5b,
-0x1b5e, 0x1b5f,
-0x1c3b, 0x1c3c,
-0x1c7e, 0x1c7f,
-0x203c, 0x203d,
-0x2047, 0x2049,
-0x2e2e, 0x2e2e,
-0x2e3c, 0x2e3c,
-0x3002, 0x3002,
-0xa4ff, 0xa4ff,
-0xa60e, 0xa60f,
-0xa6f3, 0xa6f3,
-0xa6f7, 0xa6f7,
-0xa876, 0xa877,
-0xa8ce, 0xa8cf,
-0xa92f, 0xa92f,
-0xa9c8, 0xa9c9,
-0xaa5d, 0xaa5f,
-0xaaf0, 0xaaf1,
-0xabeb, 0xabeb,
-0xfe52, 0xfe52,
-0xfe56, 0xfe57,
-0xff01, 0xff01,
-0xff0e, 0xff0e,
-0xff1f, 0xff1f,
-0xff61, 0xff61,
-0x10a56, 0x10a57,
-0x11047, 0x11048,
-0x110be, 0x110c1,
-0x11141, 0x11143,
-0x111c5, 0x111c6,
-0x111cd, 0x111cd,
-0x111de, 0x111df,
-0x11238, 0x11239,
-0x1123b, 0x1123c,
-0x112a9, 0x112a9,
-0x115c2, 0x115c3,
-0x115c9, 0x115d7,
-0x11641, 0x11642,
-0x1173c, 0x1173e,
-0x16a6e, 0x16a6f,
-0x16af5, 0x16af5,
-0x16b37, 0x16b38,
-0x16b44, 0x16b44,
-0x1bc9f, 0x1bc9f,
-0x1da88, 0x1da88,
-}; /* END of CR_STerm */
+CR_Zl[] = { 1,
+0x2028, 0x2028,
+}; /* END of CR_Zl */
-/* PROPERTY: 'Variation_Selector': Binary Property */
+/* PROPERTY: 'Zp': General Category */
static const OnigCodePoint
-CR_Variation_Selector[] = { 3,
-0x180b, 0x180d,
-0xfe00, 0xfe0f,
-0xe0100, 0xe01ef,
-}; /* END of CR_Variation_Selector */
+CR_Zp[] = { 1,
+0x2029, 0x2029,
+}; /* END of CR_Zp */
-/* PROPERTY: 'Pattern_White_Space': Binary Property */
+/* PROPERTY: 'Zs': General Category */
static const OnigCodePoint
-CR_Pattern_White_Space[] = { 5,
-0x0009, 0x000d,
+CR_Zs[] = { 7,
0x0020, 0x0020,
-0x0085, 0x0085,
-0x200e, 0x200f,
-0x2028, 0x2029,
-}; /* END of CR_Pattern_White_Space */
-
-/* PROPERTY: 'Pattern_Syntax': Binary Property */
-static const OnigCodePoint
-CR_Pattern_Syntax[] = { 28,
-0x0021, 0x002f,
-0x003a, 0x0040,
-0x005b, 0x005e,
-0x0060, 0x0060,
-0x007b, 0x007e,
-0x00a1, 0x00a7,
-0x00a9, 0x00a9,
-0x00ab, 0x00ac,
-0x00ae, 0x00ae,
-0x00b0, 0x00b1,
-0x00b6, 0x00b6,
-0x00bb, 0x00bb,
-0x00bf, 0x00bf,
-0x00d7, 0x00d7,
-0x00f7, 0x00f7,
-0x2010, 0x2027,
-0x2030, 0x203e,
-0x2041, 0x2053,
-0x2055, 0x205e,
-0x2190, 0x245f,
-0x2500, 0x2775,
-0x2794, 0x2bff,
-0x2e00, 0x2e7f,
-0x3001, 0x3003,
-0x3008, 0x3020,
-0x3030, 0x3030,
-0xfd3e, 0xfd3f,
-0xfe45, 0xfe46,
-}; /* END of CR_Pattern_Syntax */
-
-/* PROPERTY: 'Unknown': Script */
-static const OnigCodePoint
-CR_Unknown[] = { 611,
-0x0378, 0x0379,
-0x0380, 0x0383,
-0x038b, 0x038b,
-0x038d, 0x038d,
-0x03a2, 0x03a2,
-0x0530, 0x0530,
-0x0557, 0x0558,
-0x0560, 0x0560,
-0x0588, 0x0588,
-0x058b, 0x058c,
-0x0590, 0x0590,
-0x05c8, 0x05cf,
-0x05eb, 0x05ef,
-0x05f5, 0x05ff,
-0x061d, 0x061d,
-0x070e, 0x070e,
-0x074b, 0x074c,
-0x07b2, 0x07bf,
-0x07fb, 0x07ff,
-0x082e, 0x082f,
-0x083f, 0x083f,
-0x085c, 0x085d,
-0x085f, 0x089f,
-0x08b5, 0x08e2,
-0x0984, 0x0984,
-0x098d, 0x098e,
-0x0991, 0x0992,
-0x09a9, 0x09a9,
-0x09b1, 0x09b1,
-0x09b3, 0x09b5,
-0x09ba, 0x09bb,
-0x09c5, 0x09c6,
-0x09c9, 0x09ca,
-0x09cf, 0x09d6,
-0x09d8, 0x09db,
-0x09de, 0x09de,
-0x09e4, 0x09e5,
-0x09fc, 0x0a00,
-0x0a04, 0x0a04,
-0x0a0b, 0x0a0e,
-0x0a11, 0x0a12,
-0x0a29, 0x0a29,
-0x0a31, 0x0a31,
-0x0a34, 0x0a34,
-0x0a37, 0x0a37,
-0x0a3a, 0x0a3b,
-0x0a3d, 0x0a3d,
-0x0a43, 0x0a46,
-0x0a49, 0x0a4a,
-0x0a4e, 0x0a50,
-0x0a52, 0x0a58,
-0x0a5d, 0x0a5d,
-0x0a5f, 0x0a65,
-0x0a76, 0x0a80,
-0x0a84, 0x0a84,
-0x0a8e, 0x0a8e,
-0x0a92, 0x0a92,
-0x0aa9, 0x0aa9,
-0x0ab1, 0x0ab1,
-0x0ab4, 0x0ab4,
-0x0aba, 0x0abb,
-0x0ac6, 0x0ac6,
-0x0aca, 0x0aca,
-0x0ace, 0x0acf,
-0x0ad1, 0x0adf,
-0x0ae4, 0x0ae5,
-0x0af2, 0x0af8,
-0x0afa, 0x0b00,
-0x0b04, 0x0b04,
-0x0b0d, 0x0b0e,
-0x0b11, 0x0b12,
-0x0b29, 0x0b29,
-0x0b31, 0x0b31,
-0x0b34, 0x0b34,
-0x0b3a, 0x0b3b,
-0x0b45, 0x0b46,
-0x0b49, 0x0b4a,
-0x0b4e, 0x0b55,
-0x0b58, 0x0b5b,
-0x0b5e, 0x0b5e,
-0x0b64, 0x0b65,
-0x0b78, 0x0b81,
-0x0b84, 0x0b84,
-0x0b8b, 0x0b8d,
-0x0b91, 0x0b91,
-0x0b96, 0x0b98,
-0x0b9b, 0x0b9b,
-0x0b9d, 0x0b9d,
-0x0ba0, 0x0ba2,
-0x0ba5, 0x0ba7,
-0x0bab, 0x0bad,
-0x0bba, 0x0bbd,
-0x0bc3, 0x0bc5,
-0x0bc9, 0x0bc9,
-0x0bce, 0x0bcf,
-0x0bd1, 0x0bd6,
-0x0bd8, 0x0be5,
-0x0bfb, 0x0bff,
-0x0c04, 0x0c04,
-0x0c0d, 0x0c0d,
-0x0c11, 0x0c11,
-0x0c29, 0x0c29,
-0x0c3a, 0x0c3c,
-0x0c45, 0x0c45,
-0x0c49, 0x0c49,
-0x0c4e, 0x0c54,
-0x0c57, 0x0c57,
-0x0c5b, 0x0c5f,
-0x0c64, 0x0c65,
-0x0c70, 0x0c77,
-0x0c80, 0x0c80,
-0x0c84, 0x0c84,
-0x0c8d, 0x0c8d,
-0x0c91, 0x0c91,
-0x0ca9, 0x0ca9,
-0x0cb4, 0x0cb4,
-0x0cba, 0x0cbb,
-0x0cc5, 0x0cc5,
-0x0cc9, 0x0cc9,
-0x0cce, 0x0cd4,
-0x0cd7, 0x0cdd,
-0x0cdf, 0x0cdf,
-0x0ce4, 0x0ce5,
-0x0cf0, 0x0cf0,
-0x0cf3, 0x0d00,
-0x0d04, 0x0d04,
-0x0d0d, 0x0d0d,
-0x0d11, 0x0d11,
-0x0d3b, 0x0d3c,
-0x0d45, 0x0d45,
-0x0d49, 0x0d49,
-0x0d4f, 0x0d56,
-0x0d58, 0x0d5e,
-0x0d64, 0x0d65,
-0x0d76, 0x0d78,
-0x0d80, 0x0d81,
-0x0d84, 0x0d84,
-0x0d97, 0x0d99,
-0x0db2, 0x0db2,
-0x0dbc, 0x0dbc,
-0x0dbe, 0x0dbf,
-0x0dc7, 0x0dc9,
-0x0dcb, 0x0dce,
-0x0dd5, 0x0dd5,
-0x0dd7, 0x0dd7,
-0x0de0, 0x0de5,
-0x0df0, 0x0df1,
-0x0df5, 0x0e00,
-0x0e3b, 0x0e3e,
-0x0e5c, 0x0e80,
-0x0e83, 0x0e83,
-0x0e85, 0x0e86,
-0x0e89, 0x0e89,
-0x0e8b, 0x0e8c,
-0x0e8e, 0x0e93,
-0x0e98, 0x0e98,
-0x0ea0, 0x0ea0,
-0x0ea4, 0x0ea4,
-0x0ea6, 0x0ea6,
-0x0ea8, 0x0ea9,
-0x0eac, 0x0eac,
-0x0eba, 0x0eba,
-0x0ebe, 0x0ebf,
-0x0ec5, 0x0ec5,
-0x0ec7, 0x0ec7,
-0x0ece, 0x0ecf,
-0x0eda, 0x0edb,
-0x0ee0, 0x0eff,
-0x0f48, 0x0f48,
-0x0f6d, 0x0f70,
-0x0f98, 0x0f98,
-0x0fbd, 0x0fbd,
-0x0fcd, 0x0fcd,
-0x0fdb, 0x0fff,
-0x10c6, 0x10c6,
-0x10c8, 0x10cc,
-0x10ce, 0x10cf,
-0x1249, 0x1249,
-0x124e, 0x124f,
-0x1257, 0x1257,
-0x1259, 0x1259,
-0x125e, 0x125f,
-0x1289, 0x1289,
-0x128e, 0x128f,
-0x12b1, 0x12b1,
-0x12b6, 0x12b7,
-0x12bf, 0x12bf,
-0x12c1, 0x12c1,
-0x12c6, 0x12c7,
-0x12d7, 0x12d7,
-0x1311, 0x1311,
-0x1316, 0x1317,
-0x135b, 0x135c,
-0x137d, 0x137f,
-0x139a, 0x139f,
-0x13f6, 0x13f7,
-0x13fe, 0x13ff,
-0x169d, 0x169f,
-0x16f9, 0x16ff,
-0x170d, 0x170d,
-0x1715, 0x171f,
-0x1737, 0x173f,
-0x1754, 0x175f,
-0x176d, 0x176d,
-0x1771, 0x1771,
-0x1774, 0x177f,
-0x17de, 0x17df,
-0x17ea, 0x17ef,
-0x17fa, 0x17ff,
-0x180f, 0x180f,
-0x181a, 0x181f,
-0x1878, 0x187f,
-0x18ab, 0x18af,
-0x18f6, 0x18ff,
-0x191f, 0x191f,
-0x192c, 0x192f,
-0x193c, 0x193f,
-0x1941, 0x1943,
-0x196e, 0x196f,
-0x1975, 0x197f,
-0x19ac, 0x19af,
-0x19ca, 0x19cf,
-0x19db, 0x19dd,
-0x1a1c, 0x1a1d,
-0x1a5f, 0x1a5f,
-0x1a7d, 0x1a7e,
-0x1a8a, 0x1a8f,
-0x1a9a, 0x1a9f,
-0x1aae, 0x1aaf,
-0x1abf, 0x1aff,
-0x1b4c, 0x1b4f,
-0x1b7d, 0x1b7f,
-0x1bf4, 0x1bfb,
-0x1c38, 0x1c3a,
-0x1c4a, 0x1c4c,
-0x1c80, 0x1cbf,
-0x1cc8, 0x1ccf,
-0x1cf7, 0x1cf7,
-0x1cfa, 0x1cff,
-0x1df6, 0x1dfb,
-0x1f16, 0x1f17,
-0x1f1e, 0x1f1f,
-0x1f46, 0x1f47,
-0x1f4e, 0x1f4f,
-0x1f58, 0x1f58,
-0x1f5a, 0x1f5a,
-0x1f5c, 0x1f5c,
-0x1f5e, 0x1f5e,
-0x1f7e, 0x1f7f,
-0x1fb5, 0x1fb5,
-0x1fc5, 0x1fc5,
-0x1fd4, 0x1fd5,
-0x1fdc, 0x1fdc,
-0x1ff0, 0x1ff1,
-0x1ff5, 0x1ff5,
-0x1fff, 0x1fff,
-0x2065, 0x2065,
-0x2072, 0x2073,
-0x208f, 0x208f,
-0x209d, 0x209f,
-0x20bf, 0x20cf,
-0x20f1, 0x20ff,
-0x218c, 0x218f,
-0x23fb, 0x23ff,
-0x2427, 0x243f,
-0x244b, 0x245f,
-0x2b74, 0x2b75,
-0x2b96, 0x2b97,
-0x2bba, 0x2bbc,
-0x2bc9, 0x2bc9,
-0x2bd2, 0x2beb,
-0x2bf0, 0x2bff,
-0x2c2f, 0x2c2f,
-0x2c5f, 0x2c5f,
-0x2cf4, 0x2cf8,
-0x2d26, 0x2d26,
-0x2d28, 0x2d2c,
-0x2d2e, 0x2d2f,
-0x2d68, 0x2d6e,
-0x2d71, 0x2d7e,
-0x2d97, 0x2d9f,
-0x2da7, 0x2da7,
-0x2daf, 0x2daf,
-0x2db7, 0x2db7,
-0x2dbf, 0x2dbf,
-0x2dc7, 0x2dc7,
-0x2dcf, 0x2dcf,
-0x2dd7, 0x2dd7,
-0x2ddf, 0x2ddf,
-0x2e43, 0x2e7f,
-0x2e9a, 0x2e9a,
-0x2ef4, 0x2eff,
-0x2fd6, 0x2fef,
-0x2ffc, 0x2fff,
-0x3040, 0x3040,
-0x3097, 0x3098,
-0x3100, 0x3104,
-0x312e, 0x3130,
-0x318f, 0x318f,
-0x31bb, 0x31bf,
-0x31e4, 0x31ef,
-0x321f, 0x321f,
-0x32ff, 0x32ff,
-0x4db6, 0x4dbf,
-0x9fd6, 0x9fff,
-0xa48d, 0xa48f,
-0xa4c7, 0xa4cf,
-0xa62c, 0xa63f,
-0xa6f8, 0xa6ff,
-0xa7ae, 0xa7af,
-0xa7b8, 0xa7f6,
-0xa82c, 0xa82f,
-0xa83a, 0xa83f,
-0xa878, 0xa87f,
-0xa8c5, 0xa8cd,
-0xa8da, 0xa8df,
-0xa8fe, 0xa8ff,
-0xa954, 0xa95e,
-0xa97d, 0xa97f,
-0xa9ce, 0xa9ce,
-0xa9da, 0xa9dd,
-0xa9ff, 0xa9ff,
-0xaa37, 0xaa3f,
-0xaa4e, 0xaa4f,
-0xaa5a, 0xaa5b,
-0xaac3, 0xaada,
-0xaaf7, 0xab00,
-0xab07, 0xab08,
-0xab0f, 0xab10,
-0xab17, 0xab1f,
-0xab27, 0xab27,
-0xab2f, 0xab2f,
-0xab66, 0xab6f,
-0xabee, 0xabef,
-0xabfa, 0xabff,
-0xd7a4, 0xd7af,
-0xd7c7, 0xd7ca,
-0xd7fc, 0xf8ff,
-0xfa6e, 0xfa6f,
-0xfada, 0xfaff,
-0xfb07, 0xfb12,
-0xfb18, 0xfb1c,
-0xfb37, 0xfb37,
-0xfb3d, 0xfb3d,
-0xfb3f, 0xfb3f,
-0xfb42, 0xfb42,
-0xfb45, 0xfb45,
-0xfbc2, 0xfbd2,
-0xfd40, 0xfd4f,
-0xfd90, 0xfd91,
-0xfdc8, 0xfdef,
-0xfdfe, 0xfdff,
-0xfe1a, 0xfe1f,
-0xfe53, 0xfe53,
-0xfe67, 0xfe67,
-0xfe6c, 0xfe6f,
-0xfe75, 0xfe75,
-0xfefd, 0xfefe,
-0xff00, 0xff00,
-0xffbf, 0xffc1,
-0xffc8, 0xffc9,
-0xffd0, 0xffd1,
-0xffd8, 0xffd9,
-0xffdd, 0xffdf,
-0xffe7, 0xffe7,
-0xffef, 0xfff8,
-0xfffe, 0xffff,
-0x1000c, 0x1000c,
-0x10027, 0x10027,
-0x1003b, 0x1003b,
-0x1003e, 0x1003e,
-0x1004e, 0x1004f,
-0x1005e, 0x1007f,
-0x100fb, 0x100ff,
-0x10103, 0x10106,
-0x10134, 0x10136,
-0x1018d, 0x1018f,
-0x1019c, 0x1019f,
-0x101a1, 0x101cf,
-0x101fe, 0x1027f,
-0x1029d, 0x1029f,
-0x102d1, 0x102df,
-0x102fc, 0x102ff,
-0x10324, 0x1032f,
-0x1034b, 0x1034f,
-0x1037b, 0x1037f,
-0x1039e, 0x1039e,
-0x103c4, 0x103c7,
-0x103d6, 0x103ff,
-0x1049e, 0x1049f,
-0x104aa, 0x104ff,
-0x10528, 0x1052f,
-0x10564, 0x1056e,
-0x10570, 0x105ff,
-0x10737, 0x1073f,
-0x10756, 0x1075f,
-0x10768, 0x107ff,
-0x10806, 0x10807,
-0x10809, 0x10809,
-0x10836, 0x10836,
-0x10839, 0x1083b,
-0x1083d, 0x1083e,
-0x10856, 0x10856,
-0x1089f, 0x108a6,
-0x108b0, 0x108df,
-0x108f3, 0x108f3,
-0x108f6, 0x108fa,
-0x1091c, 0x1091e,
-0x1093a, 0x1093e,
-0x10940, 0x1097f,
-0x109b8, 0x109bb,
-0x109d0, 0x109d1,
-0x10a04, 0x10a04,
-0x10a07, 0x10a0b,
-0x10a14, 0x10a14,
-0x10a18, 0x10a18,
-0x10a34, 0x10a37,
-0x10a3b, 0x10a3e,
-0x10a48, 0x10a4f,
-0x10a59, 0x10a5f,
-0x10aa0, 0x10abf,
-0x10ae7, 0x10aea,
-0x10af7, 0x10aff,
-0x10b36, 0x10b38,
-0x10b56, 0x10b57,
-0x10b73, 0x10b77,
-0x10b92, 0x10b98,
-0x10b9d, 0x10ba8,
-0x10bb0, 0x10bff,
-0x10c49, 0x10c7f,
-0x10cb3, 0x10cbf,
-0x10cf3, 0x10cf9,
-0x10d00, 0x10e5f,
-0x10e7f, 0x10fff,
-0x1104e, 0x11051,
-0x11070, 0x1107e,
-0x110c2, 0x110cf,
-0x110e9, 0x110ef,
-0x110fa, 0x110ff,
-0x11135, 0x11135,
-0x11144, 0x1114f,
-0x11177, 0x1117f,
-0x111ce, 0x111cf,
-0x111e0, 0x111e0,
-0x111f5, 0x111ff,
-0x11212, 0x11212,
-0x1123e, 0x1127f,
-0x11287, 0x11287,
-0x11289, 0x11289,
-0x1128e, 0x1128e,
-0x1129e, 0x1129e,
-0x112aa, 0x112af,
-0x112eb, 0x112ef,
-0x112fa, 0x112ff,
-0x11304, 0x11304,
-0x1130d, 0x1130e,
-0x11311, 0x11312,
-0x11329, 0x11329,
-0x11331, 0x11331,
-0x11334, 0x11334,
-0x1133a, 0x1133b,
-0x11345, 0x11346,
-0x11349, 0x1134a,
-0x1134e, 0x1134f,
-0x11351, 0x11356,
-0x11358, 0x1135c,
-0x11364, 0x11365,
-0x1136d, 0x1136f,
-0x11375, 0x1147f,
-0x114c8, 0x114cf,
-0x114da, 0x1157f,
-0x115b6, 0x115b7,
-0x115de, 0x115ff,
-0x11645, 0x1164f,
-0x1165a, 0x1167f,
-0x116b8, 0x116bf,
-0x116ca, 0x116ff,
-0x1171a, 0x1171c,
-0x1172c, 0x1172f,
-0x11740, 0x1189f,
-0x118f3, 0x118fe,
-0x11900, 0x11abf,
-0x11af9, 0x11fff,
-0x1239a, 0x123ff,
-0x1246f, 0x1246f,
-0x12475, 0x1247f,
-0x12544, 0x12fff,
-0x1342f, 0x143ff,
-0x14647, 0x167ff,
-0x16a39, 0x16a3f,
-0x16a5f, 0x16a5f,
-0x16a6a, 0x16a6d,
-0x16a70, 0x16acf,
-0x16aee, 0x16aef,
-0x16af6, 0x16aff,
-0x16b46, 0x16b4f,
-0x16b5a, 0x16b5a,
-0x16b62, 0x16b62,
-0x16b78, 0x16b7c,
-0x16b90, 0x16eff,
-0x16f45, 0x16f4f,
-0x16f7f, 0x16f8e,
-0x16fa0, 0x1afff,
-0x1b002, 0x1bbff,
-0x1bc6b, 0x1bc6f,
-0x1bc7d, 0x1bc7f,
-0x1bc89, 0x1bc8f,
-0x1bc9a, 0x1bc9b,
-0x1bca4, 0x1cfff,
-0x1d0f6, 0x1d0ff,
-0x1d127, 0x1d128,
-0x1d1e9, 0x1d1ff,
-0x1d246, 0x1d2ff,
-0x1d357, 0x1d35f,
-0x1d372, 0x1d3ff,
-0x1d455, 0x1d455,
-0x1d49d, 0x1d49d,
-0x1d4a0, 0x1d4a1,
-0x1d4a3, 0x1d4a4,
-0x1d4a7, 0x1d4a8,
-0x1d4ad, 0x1d4ad,
-0x1d4ba, 0x1d4ba,
-0x1d4bc, 0x1d4bc,
-0x1d4c4, 0x1d4c4,
-0x1d506, 0x1d506,
-0x1d50b, 0x1d50c,
-0x1d515, 0x1d515,
-0x1d51d, 0x1d51d,
-0x1d53a, 0x1d53a,
-0x1d53f, 0x1d53f,
-0x1d545, 0x1d545,
-0x1d547, 0x1d549,
-0x1d551, 0x1d551,
-0x1d6a6, 0x1d6a7,
-0x1d7cc, 0x1d7cd,
-0x1da8c, 0x1da9a,
-0x1daa0, 0x1daa0,
-0x1dab0, 0x1e7ff,
-0x1e8c5, 0x1e8c6,
-0x1e8d7, 0x1edff,
-0x1ee04, 0x1ee04,
-0x1ee20, 0x1ee20,
-0x1ee23, 0x1ee23,
-0x1ee25, 0x1ee26,
-0x1ee28, 0x1ee28,
-0x1ee33, 0x1ee33,
-0x1ee38, 0x1ee38,
-0x1ee3a, 0x1ee3a,
-0x1ee3c, 0x1ee41,
-0x1ee43, 0x1ee46,
-0x1ee48, 0x1ee48,
-0x1ee4a, 0x1ee4a,
-0x1ee4c, 0x1ee4c,
-0x1ee50, 0x1ee50,
-0x1ee53, 0x1ee53,
-0x1ee55, 0x1ee56,
-0x1ee58, 0x1ee58,
-0x1ee5a, 0x1ee5a,
-0x1ee5c, 0x1ee5c,
-0x1ee5e, 0x1ee5e,
-0x1ee60, 0x1ee60,
-0x1ee63, 0x1ee63,
-0x1ee65, 0x1ee66,
-0x1ee6b, 0x1ee6b,
-0x1ee73, 0x1ee73,
-0x1ee78, 0x1ee78,
-0x1ee7d, 0x1ee7d,
-0x1ee7f, 0x1ee7f,
-0x1ee8a, 0x1ee8a,
-0x1ee9c, 0x1eea0,
-0x1eea4, 0x1eea4,
-0x1eeaa, 0x1eeaa,
-0x1eebc, 0x1eeef,
-0x1eef2, 0x1efff,
-0x1f02c, 0x1f02f,
-0x1f094, 0x1f09f,
-0x1f0af, 0x1f0b0,
-0x1f0c0, 0x1f0c0,
-0x1f0d0, 0x1f0d0,
-0x1f0f6, 0x1f0ff,
-0x1f10d, 0x1f10f,
-0x1f12f, 0x1f12f,
-0x1f16c, 0x1f16f,
-0x1f19b, 0x1f1e5,
-0x1f203, 0x1f20f,
-0x1f23b, 0x1f23f,
-0x1f249, 0x1f24f,
-0x1f252, 0x1f2ff,
-0x1f57a, 0x1f57a,
-0x1f5a4, 0x1f5a4,
-0x1f6d1, 0x1f6df,
-0x1f6ed, 0x1f6ef,
-0x1f6f4, 0x1f6ff,
-0x1f774, 0x1f77f,
-0x1f7d5, 0x1f7ff,
-0x1f80c, 0x1f80f,
-0x1f848, 0x1f84f,
-0x1f85a, 0x1f85f,
-0x1f888, 0x1f88f,
-0x1f8ae, 0x1f90f,
-0x1f919, 0x1f97f,
-0x1f985, 0x1f9bf,
-0x1f9c1, 0x1ffff,
-0x2a6d7, 0x2a6ff,
-0x2b735, 0x2b73f,
-0x2b81e, 0x2b81f,
-0x2cea2, 0x2f7ff,
-0x2fa1e, 0xe0000,
-0xe0002, 0xe001f,
-0xe0080, 0xe00ff,
-0xe01f0, 0x10ffff,
-}; /* END of CR_Unknown */
+0x00a0, 0x00a0,
+0x1680, 0x1680,
+0x2000, 0x200a,
+0x202f, 0x202f,
+0x205f, 0x205f,
+0x3000, 0x3000,
+}; /* END of CR_Zs */
/* PROPERTY: 'In_Basic_Latin': Block */
#define CR_In_Basic_Latin CR_ASCII
@@ -22421,229 +22421,229 @@ const CodeRanges[] = {
CR_Word,
CR_Alnum,
CR_ASCII,
+ CR_ASCII_Hex_Digit,
+ CR_Ahom,
+ CR_Alphabetic,
+ CR_Anatolian_Hieroglyphs,
CR_Any,
+ CR_Arabic,
+ CR_Armenian,
CR_Assigned,
+ CR_Avestan,
+ CR_Balinese,
+ CR_Bamum,
+ CR_Bassa_Vah,
+ CR_Batak,
+ CR_Bengali,
+ CR_Bidi_Control,
+ CR_Bopomofo,
+ CR_Brahmi,
+ CR_Braille,
+ CR_Buginese,
+ CR_Buhid,
CR_C,
+ CR_Canadian_Aboriginal,
+ CR_Carian,
+ CR_Case_Ignorable,
+ CR_Cased,
+ CR_Caucasian_Albanian,
CR_Cc,
CR_Cf,
+ CR_Chakma,
+ CR_Cham,
+ CR_Changes_When_Casefolded,
+ CR_Changes_When_Casemapped,
+ CR_Changes_When_Lowercased,
+ CR_Changes_When_Titlecased,
+ CR_Changes_When_Uppercased,
+ CR_Cherokee,
CR_Cn,
CR_Co,
+ CR_Common,
+ CR_Coptic,
CR_Cs,
+ CR_Cuneiform,
+ CR_Cypriot,
+ CR_Cyrillic,
+ CR_Dash,
+ CR_Default_Ignorable_Code_Point,
+ CR_Deprecated,
+ CR_Deseret,
+ CR_Devanagari,
+ CR_Diacritic,
+ CR_Duployan,
+ CR_Egyptian_Hieroglyphs,
+ CR_Elbasan,
+ CR_Ethiopic,
+ CR_Extender,
+ CR_Georgian,
+ CR_Glagolitic,
+ CR_Gothic,
+ CR_Grantha,
+ CR_Grapheme_Base,
+ CR_Grapheme_Extend,
+ CR_Grapheme_Link,
+ CR_Greek,
+ CR_Gujarati,
+ CR_Gurmukhi,
+ CR_Han,
+ CR_Hangul,
+ CR_Hanunoo,
+ CR_Hatran,
+ CR_Hebrew,
+ CR_Hex_Digit,
+ CR_Hiragana,
+ CR_Hyphen,
+ CR_IDS_Binary_Operator,
+ CR_IDS_Trinary_Operator,
+ CR_ID_Continue,
+ CR_ID_Start,
+ CR_Ideographic,
+ CR_Imperial_Aramaic,
+ CR_Inherited,
+ CR_Inscriptional_Pahlavi,
+ CR_Inscriptional_Parthian,
+ CR_Javanese,
+ CR_Join_Control,
+ CR_Kaithi,
+ CR_Kannada,
+ CR_Katakana,
+ CR_Kayah_Li,
+ CR_Kharoshthi,
+ CR_Khmer,
+ CR_Khojki,
+ CR_Khudawadi,
CR_L,
CR_LC,
+ CR_Lao,
+ CR_Latin,
+ CR_Lepcha,
+ CR_Limbu,
+ CR_Linear_A,
+ CR_Linear_B,
+ CR_Lisu,
CR_Ll,
CR_Lm,
CR_Lo,
+ CR_Logical_Order_Exception,
+ CR_Lowercase,
CR_Lt,
CR_Lu,
+ CR_Lycian,
+ CR_Lydian,
CR_M,
+ CR_Mahajani,
+ CR_Malayalam,
+ CR_Mandaic,
+ CR_Manichaean,
+ CR_Math,
CR_Mc,
CR_Me,
+ CR_Meetei_Mayek,
+ CR_Mende_Kikakui,
+ CR_Meroitic_Cursive,
+ CR_Meroitic_Hieroglyphs,
+ CR_Miao,
CR_Mn,
+ CR_Modi,
+ CR_Mongolian,
+ CR_Mro,
+ CR_Multani,
+ CR_Myanmar,
CR_N,
+ CR_Nabataean,
CR_Nd,
+ CR_New_Tai_Lue,
+ CR_Nko,
CR_Nl,
CR_No,
+ CR_Noncharacter_Code_Point,
+ CR_Ogham,
+ CR_Ol_Chiki,
+ CR_Old_Hungarian,
+ CR_Old_Italic,
+ CR_Old_North_Arabian,
+ CR_Old_Permic,
+ CR_Old_Persian,
+ CR_Old_South_Arabian,
+ CR_Old_Turkic,
+ CR_Oriya,
+ CR_Osmanya,
+ CR_Other_Alphabetic,
+ CR_Other_Default_Ignorable_Code_Point,
+ CR_Other_Grapheme_Extend,
+ CR_Other_ID_Continue,
+ CR_Other_ID_Start,
+ CR_Other_Lowercase,
+ CR_Other_Math,
+ CR_Other_Uppercase,
CR_P,
+ CR_Pahawh_Hmong,
+ CR_Palmyrene,
+ CR_Pattern_Syntax,
+ CR_Pattern_White_Space,
+ CR_Pau_Cin_Hau,
CR_Pc,
CR_Pd,
CR_Pe,
CR_Pf,
+ CR_Phags_Pa,
+ CR_Phoenician,
CR_Pi,
CR_Po,
CR_Ps,
+ CR_Psalter_Pahlavi,
+ CR_Quotation_Mark,
+ CR_Radical,
+ CR_Rejang,
+ CR_Runic,
CR_S,
+ CR_STerm,
+ CR_Samaritan,
+ CR_Saurashtra,
CR_Sc,
+ CR_Sharada,
+ CR_Shavian,
+ CR_Siddham,
+ CR_SignWriting,
+ CR_Sinhala,
CR_Sk,
CR_Sm,
CR_So,
- CR_Z,
- CR_Zl,
- CR_Zp,
- CR_Zs,
- CR_Math,
- CR_Alphabetic,
- CR_Lowercase,
- CR_Uppercase,
- CR_Cased,
- CR_Case_Ignorable,
- CR_Changes_When_Lowercased,
- CR_Changes_When_Uppercased,
- CR_Changes_When_Titlecased,
- CR_Changes_When_Casefolded,
- CR_Changes_When_Casemapped,
- CR_ID_Start,
- CR_ID_Continue,
- CR_XID_Start,
- CR_XID_Continue,
- CR_Default_Ignorable_Code_Point,
- CR_Grapheme_Extend,
- CR_Grapheme_Base,
- CR_Grapheme_Link,
- CR_Common,
- CR_Latin,
- CR_Greek,
- CR_Cyrillic,
- CR_Armenian,
- CR_Hebrew,
- CR_Arabic,
+ CR_Soft_Dotted,
+ CR_Sora_Sompeng,
+ CR_Sundanese,
+ CR_Syloti_Nagri,
CR_Syriac,
- CR_Thaana,
- CR_Devanagari,
- CR_Bengali,
- CR_Gurmukhi,
- CR_Gujarati,
- CR_Oriya,
- CR_Tamil,
- CR_Telugu,
- CR_Kannada,
- CR_Malayalam,
- CR_Sinhala,
- CR_Thai,
- CR_Lao,
- CR_Tibetan,
- CR_Myanmar,
- CR_Georgian,
- CR_Hangul,
- CR_Ethiopic,
- CR_Cherokee,
- CR_Canadian_Aboriginal,
- CR_Ogham,
- CR_Runic,
- CR_Khmer,
- CR_Mongolian,
- CR_Hiragana,
- CR_Katakana,
- CR_Bopomofo,
- CR_Han,
- CR_Yi,
- CR_Old_Italic,
- CR_Gothic,
- CR_Deseret,
- CR_Inherited,
CR_Tagalog,
- CR_Hanunoo,
- CR_Buhid,
CR_Tagbanwa,
- CR_Limbu,
CR_Tai_Le,
- CR_Linear_B,
- CR_Ugaritic,
- CR_Shavian,
- CR_Osmanya,
- CR_Cypriot,
- CR_Braille,
- CR_Buginese,
- CR_Coptic,
- CR_New_Tai_Lue,
- CR_Glagolitic,
- CR_Tifinagh,
- CR_Syloti_Nagri,
- CR_Old_Persian,
- CR_Kharoshthi,
- CR_Balinese,
- CR_Cuneiform,
- CR_Phoenician,
- CR_Phags_Pa,
- CR_Nko,
- CR_Sundanese,
- CR_Lepcha,
- CR_Ol_Chiki,
- CR_Vai,
- CR_Saurashtra,
- CR_Kayah_Li,
- CR_Rejang,
- CR_Lycian,
- CR_Carian,
- CR_Lydian,
- CR_Cham,
CR_Tai_Tham,
CR_Tai_Viet,
- CR_Avestan,
- CR_Egyptian_Hieroglyphs,
- CR_Samaritan,
- CR_Lisu,
- CR_Bamum,
- CR_Javanese,
- CR_Meetei_Mayek,
- CR_Imperial_Aramaic,
- CR_Old_South_Arabian,
- CR_Inscriptional_Parthian,
- CR_Inscriptional_Pahlavi,
- CR_Old_Turkic,
- CR_Kaithi,
- CR_Batak,
- CR_Brahmi,
- CR_Mandaic,
- CR_Chakma,
- CR_Meroitic_Cursive,
- CR_Meroitic_Hieroglyphs,
- CR_Miao,
- CR_Sharada,
- CR_Sora_Sompeng,
CR_Takri,
- CR_Caucasian_Albanian,
- CR_Bassa_Vah,
- CR_Duployan,
- CR_Elbasan,
- CR_Grantha,
- CR_Pahawh_Hmong,
- CR_Khojki,
- CR_Linear_A,
- CR_Mahajani,
- CR_Manichaean,
- CR_Mende_Kikakui,
- CR_Modi,
- CR_Mro,
- CR_Old_North_Arabian,
- CR_Nabataean,
- CR_Palmyrene,
- CR_Pau_Cin_Hau,
- CR_Old_Permic,
- CR_Psalter_Pahlavi,
- CR_Siddham,
- CR_Khudawadi,
- CR_Tirhuta,
- CR_Warang_Citi,
- CR_Ahom,
- CR_Anatolian_Hieroglyphs,
- CR_Hatran,
- CR_Multani,
- CR_Old_Hungarian,
- CR_SignWriting,
- CR_White_Space,
- CR_Bidi_Control,
- CR_Join_Control,
- CR_Dash,
- CR_Hyphen,
- CR_Quotation_Mark,
+ CR_Tamil,
+ CR_Telugu,
CR_Terminal_Punctuation,
- CR_Other_Math,
- CR_Hex_Digit,
- CR_ASCII_Hex_Digit,
- CR_Other_Alphabetic,
- CR_Ideographic,
- CR_Diacritic,
- CR_Extender,
- CR_Other_Lowercase,
- CR_Other_Uppercase,
- CR_Noncharacter_Code_Point,
- CR_Other_Grapheme_Extend,
- CR_IDS_Binary_Operator,
- CR_IDS_Trinary_Operator,
- CR_Radical,
+ CR_Thaana,
+ CR_Thai,
+ CR_Tibetan,
+ CR_Tifinagh,
+ CR_Tirhuta,
+ CR_Ugaritic,
CR_Unified_Ideograph,
- CR_Other_Default_Ignorable_Code_Point,
- CR_Deprecated,
- CR_Soft_Dotted,
- CR_Logical_Order_Exception,
- CR_Other_ID_Start,
- CR_Other_ID_Continue,
- CR_STerm,
- CR_Variation_Selector,
- CR_Pattern_White_Space,
- CR_Pattern_Syntax,
CR_Unknown,
+ CR_Uppercase,
+ CR_Vai,
+ CR_Variation_Selector,
+ CR_Warang_Citi,
+ CR_White_Space,
+ CR_XID_Continue,
+ CR_XID_Start,
+ CR_Yi,
+ CR_Z,
+ CR_Zl,
+ CR_Zp,
+ CR_Zs,
CR_In_Basic_Latin,
CR_In_Latin_1_Supplement,
CR_In_Latin_Extended_A,
@@ -23000,7 +23000,7 @@ hash (register const char *str, register unsigned int len)
5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163,
5163, 5163, 5163, 5163, 5163, 5163
};
- register unsigned int hval = len;
+ register int hval = len;
switch (hval)
{
@@ -23038,6 +23038,12 @@ hash (register const char *str, register unsigned int len)
return hval + asso_values[(unsigned char)str[len - 1]];
}
+#ifdef __GNUC__
+__inline
+#if defined __GNUC_STDC_INLINE__ || defined __GNUC_GNU_INLINE__
+__attribute__ ((__gnu_inline__))
+#endif
+#endif
const struct PropertyNameCtype *
unicode_lookup_property_name (register const char *str, register unsigned int len)
{
@@ -23045,55 +23051,55 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
{
{""},
- {"n", 34},
+ {"n", 144},
{""},
- {"z", 51},
+ {"z", 234},
{""}, {""}, {""}, {""},
- {"zzzz", 237},
+ {"zzzz", 225},
- {"mn", 33},
+ {"mn", 138},
- {"cn", 20},
+ {"cn", 51},
{""}, {""}, {""},
- {"ci", 60},
+ {"ci", 38},
- {"m", 30},
+ {"m", 125},
{""},
- {"c", 17},
+ {"c", 35},
{""}, {""}, {""}, {""}, {""},
{"inmanichaean", 430},
- {"mani", 185},
+ {"mani", 129},
- {"mc", 31},
+ {"mc", 131},
- {"cc", 18},
+ {"cc", 41},
{""},
- {"qaai", 114},
+ {"qaai", 94},
{""}, {""}, {""}, {""}, {""},
- {"qaac", 128},
+ {"qaac", 54},
{""}, {""}, {""}, {""}, {""}, {""},
{"incham", 373},
{""}, {""}, {""}, {""},
- {"mandaic", 168},
+ {"mandaic", 128},
{""}, {""},
- {"sm", 49},
+ {"sm", 202},
{""},
- {"sc", 47},
+ {"sc", 195},
{""}, {""}, {""}, {""},
- {"cans", 101},
+ {"cans", 36},
{""}, {""}, {""}, {""},
{"ascii", 14},
@@ -23104,17 +23110,17 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
{"incuneiform", 456},
- {"s", 46},
+ {"s", 191},
{"inarmenian", 248},
- {"zs", 54},
+ {"zs", 237},
{""}, {""}, {""}, {""}, {""}, {""},
- {"cs", 22},
+ {"cs", 55},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {"me", 32},
+ {"me", 132},
{""}, {""}, {""}, {""},
{"incommonindicnumberforms", 364},
@@ -23128,7 +23134,7 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
{"inipaextensions", 242},
{""}, {""}, {""}, {""},
- {"initialpunctuation", 43},
+ {"initialpunctuation", 183},
{""}, {""}, {""},
{"inancientsymbols", 402},
@@ -23137,13 +23143,13 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
{"inthaana", 253},
{""},
- {"cf", 19},
+ {"cf", 42},
{""},
{"incuneiformnumbersandpunctuation", 457},
{""}, {""}, {""},
- {"mtei", 159},
+ {"mtei", 133},
{""},
{"inspecials", 397},
@@ -23155,17 +23161,17 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
{"inmiscellaneousmathematicalsymbolsa", 323},
{""}, {""}, {""},
- {"lm", 26},
+ {"lm", 117},
- {"lina", 183},
+ {"lina", 113},
- {"lc", 24},
+ {"lc", 108},
{""},
{"inlycian", 404},
{""}, {""}, {""}, {""}, {""},
- {"lana", 151},
+ {"lana", 212},
{""},
{"intaixuanjingsymbols", 472},
@@ -23175,14 +23181,14 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
{"alnum", 13},
{""},
- {"sterm", 233},
+ {"sterm", 192},
{"intaitham", 292},
{"intransportandmapsymbols", 486},
{""},
- {"taile", 120},
+ {"taile", 211},
{""},
{"inmalayalam", 266},
@@ -23201,20 +23207,20 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
{"inmiscellaneoussymbolsandpictographs", 483},
{""}, {""},
- {"sinhala", 92},
+ {"sinhala", 200},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {"taiviet", 152},
+ {"taiviet", 213},
{""}, {""},
- {"ext", 218},
+ {"ext", 69},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {"latn", 75},
+ {"latn", 110},
- {"latin", 75},
+ {"latin", 110},
- {"ital", 111},
+ {"ital", 155},
{"intamil", 263},
{""},
@@ -23222,7 +23228,7 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
{"inmultani", 446},
{""},
- {"taml", 88},
+ {"taml", 215},
{""}, {""}, {""}, {""}, {""}, {""},
{"inrunic", 279},
@@ -23230,17 +23236,17 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
{"incarian", 405},
{""},
- {"armn", 78},
+ {"armn", 21},
{""},
- {"armi", 160},
+ {"armi", 93},
- {"cari", 148},
+ {"cari", 37},
{"inlatinextendedc", 331},
{""},
- {"armenian", 78},
+ {"armenian", 21},
{"inmyanmar", 271},
@@ -23250,40 +23256,40 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
{"inlatinextendeda", 240},
{""}, {""}, {""},
- {"carian", 148},
+ {"carian", 37},
{""}, {""},
{"intaile", 288},
{""}, {""}, {""},
- {"tale", 120},
+ {"tale", 211},
{""}, {""},
- {"arabic", 80},
+ {"arabic", 20},
{""}, {""},
- {"l", 23},
+ {"l", 107},
- {"nl", 36},
+ {"nl", 149},
- {"zl", 52},
+ {"zl", 235},
{""},
{"insyriac", 251},
{""},
- {"samr", 155},
+ {"samr", 193},
{""},
- {"merc", 170},
+ {"merc", 135},
{""},
{"inlinearbideograms", 399},
{""}, {""},
- {"samaritan", 155},
+ {"samaritan", 193},
- {"lt", 28},
+ {"lt", 121},
{""}, {""},
{"insharada", 443},
@@ -23295,12 +23301,12 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
{"inruminumeralsymbols", 437},
{""}, {""},
- {"miao", 172},
+ {"miao", 137},
{"inlatinextendede", 378},
{""}, {""}, {""},
- {"zinh", 114},
+ {"zinh", 94},
{""}, {""}, {""},
{"inahom", 453},
@@ -23308,10 +23314,10 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
{"incherokee", 276},
- {"han", 109},
+ {"han", 80},
{""}, {""},
- {"hani", 109},
+ {"hani", 80},
{"inosmanya", 414},
@@ -23319,94 +23325,94 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""},
- {"cham", 150},
+ {"cham", 44},
{""},
{"inmahajani", 442},
- {"osma", 124},
+ {"osma", 162},
{""}, {""},
- {"manichaean", 185},
+ {"manichaean", 129},
- {"term", 211},
+ {"term", 217},
{""},
- {"sinh", 92},
+ {"sinh", 200},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{"cntrl", 3},
{""}, {""}, {""}, {""},
- {"chakma", 169},
+ {"chakma", 43},
{"insinhala", 267},
{""}, {""}, {""},
- {"tamil", 88},
+ {"tamil", 215},
{"inethiopic", 274},
{""}, {""},
- {"connectorpunctuation", 39},
+ {"connectorpunctuation", 177},
- {"shavian", 123},
+ {"shavian", 197},
{""}, {""}, {""},
- {"joinc", 207},
+ {"joinc", 98},
{"inenclosedalphanumerics", 317},
{""}, {""}, {""}, {""}, {""},
- {"ahex", 214},
+ {"ahex", 15},
{"inlatinextendedadditional", 304},
- {"lineara", 183},
+ {"lineara", 113},
{""}, {""}, {""}, {""}, {""}, {""},
{"inenclosedcjklettersandmonths", 350},
- {"hex", 213},
+ {"hex", 85},
{""}, {""},
- {"thai", 93},
+ {"thai", 219},
- {"mahj", 184},
+ {"mahj", 126},
{""}, {""}, {""},
- {"math", 55},
+ {"math", 130},
{""}, {""},
- {"ll", 25},
+ {"ll", 116},
- {"thaa", 82},
+ {"thaa", 218},
{""},
- {"hatran", 201},
+ {"hatran", 83},
{""}, {""}, {""}, {""}, {""}, {""},
- {"mahajani", 184},
+ {"mahajani", 126},
{"insinhalaarchaicnumbers", 444},
{""},
- {"taitham", 151},
+ {"taitham", 212},
- {"thaana", 82},
+ {"thaana", 218},
{""}, {""}, {""}, {""},
- {"ethi", 99},
+ {"ethi", 68},
{"inenclosedalphanumericsupplement", 481},
{""}, {""}, {""}, {""},
- {"meroiticcursive", 170},
+ {"meroiticcursive", 135},
{"inideographicdescriptioncharacters", 340},
{""}, {""}, {""},
- {"terminalpunctuation", 211},
+ {"terminalpunctuation", 217},
{""}, {""}, {""}, {""}, {""}, {""},
{"inemoticons", 484},
@@ -23415,10 +23421,10 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
{"intifinagh", 334},
{""},
- {"asciihexdigit", 214},
+ {"asciihexdigit", 15},
{""}, {""}, {""}, {""},
- {"tifinagh", 131},
+ {"tifinagh", 221},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""},
@@ -23430,26 +23436,26 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""},
- {"loe", 230},
+ {"loe", 119},
{""}, {""}, {""}, {""}, {""}, {""},
- {"titlecaseletter", 28},
+ {"titlecaseletter", 121},
{""}, {""},
- {"inscriptionalparthian", 162},
+ {"inscriptionalparthian", 96},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""},
- {"oriya", 87},
+ {"oriya", 161},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {"hira", 106},
+ {"hira", 86},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {"sora", 174},
+ {"sora", 205},
- {"mero", 171},
+ {"mero", 136},
{""}, {""}, {""}, {""},
{"inarrows", 312},
@@ -23458,7 +23464,7 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
{"inhiragana", 342},
{""}, {""}, {""}, {""}, {""}, {""},
- {"no", 37},
+ {"no", 150},
{"inmahjongtiles", 478},
{""}, {""}, {""},
@@ -23466,45 +23472,45 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
{"innko", 254},
{""}, {""},
- {"co", 21},
+ {"co", 52},
- {"cher", 100},
+ {"cher", 50},
{""}, {""},
{"inmro", 462},
{""}, {""}, {""}, {""}, {""}, {""},
- {"common", 74},
+ {"common", 53},
- {"cwcm", 65},
+ {"cwcm", 46},
{""}, {""}, {""},
{"inmiao", 465},
{""}, {""}, {""}, {""},
- {"inscriptionalpahlavi", 163},
+ {"inscriptionalpahlavi", 95},
{""}, {""},
{"inmathematicalalphanumericsymbols", 474},
- {"so", 50},
+ {"so", 203},
{""},
- {"hano", 116},
+ {"hano", 82},
- {"tirh", 197},
+ {"tirh", 222},
{""}, {""}, {""},
{"inhatran", 422},
{"inolchiki", 298},
- {"ahom", 199},
+ {"ahom", 16},
{""},
- {"di", 70},
+ {"di", 60},
- {"hatr", 201},
+ {"hatr", 83},
{""},
{"inogham", 278},
@@ -23516,41 +23522,41 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
{"inmodi", 451},
{""},
- {"idc", 67},
+ {"idc", 90},
- {"mand", 168},
+ {"mand", 128},
{""}, {""}, {""},
{"inmandaic", 256},
- {"dia", 217},
+ {"dia", 64},
- {"cwcf", 64},
+ {"cwcf", 45},
{""}, {""}, {""}, {""}, {""}, {""}, {""},
- {"xidc", 69},
+ {"xidc", 231},
{""}, {""},
- {"sind", 196},
+ {"sind", 106},
{"newline", 0},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {"mend", 186},
+ {"mend", 134},
{""}, {""}, {""},
- {"newtailue", 129},
+ {"newtailue", 147},
{""}, {""},
{"inshorthandformatcontrols", 468},
{""}, {""}, {""},
- {"anatolianhieroglyphs", 200},
+ {"anatolianhieroglyphs", 18},
- {"xids", 68},
+ {"xids", 232},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {"ids", 66},
+ {"ids", 91},
{""}, {""}, {""}, {""}, {""},
{"innewtailue", 289},
@@ -23561,7 +23567,7 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
{"insundanese", 295},
{""}, {""}, {""}, {""}, {""}, {""},
- {"lo", 27},
+ {"lo", 118},
{""}, {""}, {""},
{"indominotiles", 479},
@@ -23569,28 +23575,28 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
{"inlao", 269},
{""}, {""}, {""}, {""}, {""}, {""},
- {"lao", 94},
+ {"lao", 109},
- {"laoo", 94},
+ {"laoo", 109},
- {"mongolian", 105},
+ {"mongolian", 140},
{""}, {""},
- {"cwt", 63},
+ {"cwt", 48},
{""},
- {"idst", 224},
+ {"idst", 89},
- {"format", 19},
+ {"format", 42},
{""}, {""},
- {"lineseparator", 52},
+ {"lineseparator", 235},
{""}, {""}, {""}, {""}, {""},
- {"letter", 23},
+ {"letter", 107},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {"idcontinue", 67},
+ {"idcontinue", 90},
{""}, {""},
{"inanatolianhieroglyphs", 460},
@@ -23599,20 +23605,20 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
{"inlydian", 424},
{""},
- {"pi", 43},
+ {"pi", 183},
- {"nchar", 221},
+ {"nchar", 151},
{""}, {""}, {""}, {""},
{"inspacingmodifierletters", 243},
- {"oalpha", 215},
+ {"oalpha", 163},
{""}, {""},
{"indeseret", 412},
{""},
- {"pc", 39},
+ {"pc", 177},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
@@ -23621,183 +23627,183 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
{"inphaistosdisc", 403},
- {"joincontrol", 207},
+ {"joincontrol", 98},
{"inlowsurrogates", 385},
{""},
- {"mro", 188},
+ {"mro", 141},
- {"mroo", 188},
+ {"mroo", 141},
{""}, {""}, {""},
- {"xidstart", 68},
+ {"xidstart", 232},
{""}, {""}, {""}, {""}, {""},
- {"wara", 198},
+ {"wara", 229},
{""}, {""},
{"inwarangciti", 454},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""},
- {"ps", 45},
+ {"ps", 185},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {"pe", 41},
+ {"pe", 179},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {"cwl", 61},
+ {"cwl", 47},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{"incoptic", 332},
{""}, {""}, {""}, {""}, {""}, {""}, {""},
- {"diacritic", 217},
+ {"diacritic", 64},
{""}, {""},
- {"pf", 42},
+ {"pf", 180},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""}, {""},
{"space", 9},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {"hanunoo", 116},
+ {"hanunoo", 82},
{""}, {""},
{"incyrillicextendeda", 336},
{""}, {""}, {""},
- {"odi", 227},
+ {"odi", 164},
{""}, {""}, {""}, {""}, {""},
- {"modi", 187},
+ {"modi", 139},
- {"oidc", 232},
+ {"oidc", 166},
{"incopticepactnumbers", 406},
{""},
- {"palm", 191},
+ {"palm", 173},
{"insundanesesupplement", 299},
- {"patws", 235},
+ {"patws", 175},
{""}, {""}, {""},
{"inolditalic", 407},
{"inlepcha", 297},
- {"shaw", 123},
+ {"shaw", 197},
{""},
- {"omath", 212},
+ {"omath", 169},
{""}, {""}, {""}, {""}, {""},
{"alpha", 1},
{""}, {""}, {""}, {""}, {""},
- {"oids", 231},
+ {"oids", 167},
{""}, {""}, {""},
- {"control", 18},
+ {"control", 41},
- {"ideo", 216},
+ {"ideo", 92},
- {"lepc", 141},
+ {"lepc", 111},
- {"psalterpahlavi", 194},
+ {"psalterpahlavi", 186},
- {"dsrt", 113},
+ {"dsrt", 62},
{""},
- {"otheridcontinue", 232},
+ {"otheridcontinue", 166},
{""}, {""}, {""},
{"inpalmyrene", 420},
- {"decimalnumber", 35},
+ {"decimalnumber", 146},
{""}, {""}, {""}, {""}, {""}, {""}, {""},
- {"noncharactercodepoint", 221},
+ {"noncharactercodepoint", 151},
- {"idstart", 66},
+ {"idstart", 91},
- {"otheralphabetic", 215},
+ {"otheralphabetic", 163},
- {"letternumber", 36},
+ {"letternumber", 149},
{""}, {""}, {""}, {""},
- {"dash", 208},
+ {"dash", 59},
{""}, {""},
- {"xidcontinue", 69},
+ {"xidcontinue", 231},
{""}, {""}, {""},
- {"finalpunctuation", 42},
+ {"finalpunctuation", 180},
- {"extender", 218},
+ {"extender", 69},
{""}, {""}, {""},
- {"siddham", 195},
+ {"siddham", 198},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{"inoldturkic", 435},
{""}, {""},
- {"sharada", 173},
+ {"sharada", 196},
{""}, {""},
- {"whitespace", 205},
+ {"whitespace", 230},
{""}, {""}, {""}, {""},
{"inmodifiertoneletters", 361},
{""},
- {"radical", 225},
+ {"radical", 188},
{""},
- {"canadianaboriginal", 101},
+ {"canadianaboriginal", 36},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{"inethiopicextendeda", 377},
- {"imperialaramaic", 160},
+ {"imperialaramaic", 93},
{""}, {""}, {""}, {""}, {""}, {""}, {""},
- {"perm", 193},
+ {"perm", 157},
- {"deseret", 113},
+ {"deseret", 62},
{""}, {""}, {""}, {""},
- {"casedletter", 24},
+ {"casedletter", 108},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""},
{"inimperialaramaic", 419},
{""}, {""},
- {"otheridstart", 231},
+ {"otheridstart", 167},
{""}, {""}, {""}, {""},
- {"prti", 162},
+ {"prti", 96},
{""}, {""}, {""}, {""}, {""},
- {"cprt", 125},
+ {"cprt", 57},
{""}, {""}, {""}, {""}, {""},
- {"othersymbol", 50},
+ {"othersymbol", 203},
{""}, {""}, {""},
- {"coptic", 128},
+ {"coptic", 54},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""},
- {"otherlowercase", 219},
+ {"otherlowercase", 168},
- {"phnx", 137},
+ {"phnx", 182},
{""}, {""}, {""},
{"inphoenician", 423},
@@ -23808,35 +23814,35 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
{"inlatin1supplement", 239},
{""}, {""}, {""},
- {"xpeo", 133},
+ {"xpeo", 158},
{""}, {""}, {""},
{"ininscriptionalparthian", 432},
{"ininscriptionalpahlavi", 433},
- {"other", 17},
+ {"other", 35},
- {"privateuse", 21},
+ {"privateuse", 52},
{""}, {""}, {""}, {""},
- {"othernumber", 37},
+ {"othernumber", 150},
{""}, {""}, {""}, {""},
{"inenclosedideographicsupplement", 482},
{""},
- {"copt", 128},
+ {"copt", 54},
{""}, {""}, {""}, {""},
{"print", 7},
{""},
- {"cuneiform", 136},
+ {"cuneiform", 56},
- {"olditalic", 111},
+ {"olditalic", 155},
- {"xsux", 136},
+ {"xsux", 56},
{""}, {""}, {""},
{"inmongolian", 285},
@@ -23844,28 +23850,28 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
{"inancientgreekmusicalnotation", 471},
- {"sundanese", 140},
+ {"sundanese", 206},
{"inoldnortharabian", 429},
{""},
- {"patternsyntax", 236},
+ {"patternsyntax", 174},
{""}, {""},
- {"inherited", 114},
+ {"inherited", 94},
{"ingrantha", 448},
{"inphoneticextensions", 301},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {"saurashtra", 144},
+ {"saurashtra", 194},
{""}, {""}, {""}, {""}, {""},
{"inancientgreeknumbers", 401},
{""}, {""}, {""}, {""}, {""},
- {"shrd", 173},
+ {"shrd", 196},
{""}, {""}, {""},
{"inoldsoutharabian", 428},
@@ -23874,10 +23880,10 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
{"inalphabeticpresentationforms", 388},
- {"spaceseparator", 54},
+ {"spaceseparator", 237},
{""}, {""}, {""}, {""}, {""},
- {"olower", 219},
+ {"olower", 168},
{""},
{"ingeneralpunctuation", 306},
@@ -23885,30 +23891,30 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
{"inunifiedcanadianaboriginalsyllabics", 277},
{""},
- {"bamum", 157},
+ {"bamum", 25},
{""}, {""},
{"inarabic", 250},
{""}, {""}, {""},
- {"phli", 163},
+ {"phli", 95},
{"inphoneticextensionssupplement", 302},
{""},
- {"patternwhitespace", 235},
+ {"patternwhitespace", 175},
{""},
{"inbasiclatin", 238},
{""},
- {"othermath", 212},
+ {"othermath", 169},
- {"idsbinaryoperator", 223},
+ {"idsbinaryoperator", 88},
{"inmathematicaloperators", 313},
- {"multani", 202},
+ {"multani", 142},
{"ingujarati", 261},
{""}, {""}, {""}, {""},
@@ -23919,113 +23925,113 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
{"innumberforms", 311},
- {"nd", 35},
+ {"nd", 146},
{""},
- {"yi", 110},
+ {"yi", 233},
- {"lisu", 156},
+ {"lisu", 115},
{""}, {""},
- {"yiii", 110},
+ {"yiii", 233},
{""},
{"inpsalterpahlavi", 434},
{""}, {""}, {""},
- {"tagbanwa", 118},
+ {"tagbanwa", 210},
{""}, {""}, {""}, {""}, {""},
- {"bass", 177},
+ {"bass", 26},
{""}, {""}, {""}, {""},
- {"nbat", 190},
+ {"nbat", 145},
{"inbyzantinemusicalsymbols", 469},
{""},
- {"closepunctuation", 41},
+ {"closepunctuation", 179},
{""},
- {"tfng", 131},
+ {"tfng", 221},
- {"otherletter", 27},
+ {"otherletter", 118},
{""}, {""}, {""},
- {"sd", 229},
+ {"sd", 204},
{""}, {""},
- {"lowercase", 57},
+ {"lowercase", 120},
- {"sidd", 195},
+ {"sidd", 198},
{""},
- {"nabataean", 190},
+ {"nabataean", 145},
{""},
- {"lepcha", 141},
+ {"lepcha", 111},
{"inarabicpresentationformsa", 389},
{""},
- {"modifierletter", 26},
+ {"modifierletter", 117},
{"intags", 496},
- {"mult", 202},
+ {"mult", 142},
{""}, {""},
{"insiddham", 450},
- {"talu", 129},
+ {"talu", 147},
{""}, {""}, {""}, {""},
- {"cased", 59},
+ {"cased", 39},
{""},
{"intibetan", 270},
{""}, {""}, {""}, {""}, {""}, {""},
- {"separator", 51},
+ {"separator", 234},
{""},
- {"runic", 103},
+ {"runic", 190},
{"inmiscellaneousmathematicalsymbolsb", 327},
{""}, {""}, {""}, {""},
- {"linb", 121},
+ {"linb", 114},
{"inbraillepatterns", 325},
- {"oldpersian", 133},
+ {"oldpersian", 158},
{""},
{"inugaritic", 410},
- {"telu", 89},
+ {"telu", 216},
{""},
- {"limb", 119},
+ {"limb", 112},
{""},
- {"oldpermic", 193},
+ {"oldpermic", 157},
{""},
- {"bali", 135},
+ {"bali", 24},
{"inmyanmarextendedb", 372},
- {"tibt", 95},
+ {"tibt", 220},
{""}, {""}, {""}, {""}, {""}, {""}, {""},
- {"saur", 144},
+ {"saur", 194},
{""}, {""}, {""},
- {"po", 44},
+ {"po", 184},
{""},
- {"tibetan", 95},
+ {"tibetan", 220},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""},
@@ -24034,44 +24040,44 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
{"inbalinese", 294},
- {"elba", 179},
+ {"elba", 67},
{""}, {""}, {""}, {""},
- {"bengali", 84},
+ {"bengali", 28},
- {"gran", 180},
+ {"gran", 73},
{""}, {""}, {""},
- {"phoenician", 137},
+ {"phoenician", 182},
{""},
{"ingurmukhi", 260},
{""}, {""},
- {"caseignorable", 60},
+ {"caseignorable", 38},
{""}, {""}, {""}, {""},
- {"lyci", 147},
+ {"lyci", 123},
{""},
{"inyijinghexagramsymbols", 353},
{""},
- {"mlym", 91},
+ {"mlym", 127},
{""}, {""}, {""}, {""}, {""}, {""},
- {"lycian", 147},
+ {"lycian", 123},
{""}, {""}, {""}, {""},
- {"elbasan", 179},
+ {"elbasan", 67},
{""}, {""}, {""}, {""}, {""},
- {"balinese", 135},
+ {"balinese", 24},
- {"narb", 189},
+ {"narb", 156},
{""},
- {"brai", 126},
+ {"brai", 32},
{""}, {""},
{"insuttonsignwriting", 475},
@@ -24079,30 +24085,30 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
{"insorasompeng", 440},
- {"malayalam", 91},
+ {"malayalam", 127},
{""}, {""},
- {"arab", 80},
+ {"arab", 20},
{""},
- {"brahmi", 167},
+ {"brahmi", 31},
{""},
{"incountingrodnumerals", 473},
{""}, {""}, {""},
- {"rjng", 146},
+ {"rjng", 189},
- {"mong", 105},
+ {"mong", 140},
{""}, {""}, {""},
{"incyrillicsupplement", 247},
{""}, {""}, {""}, {""}, {""}, {""},
- {"ogam", 102},
+ {"ogam", 152},
{""},
- {"sarb", 161},
+ {"sarb", 159},
{"lower", 6},
{""},
@@ -24110,15 +24116,15 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
{"inrejang", 369},
{""}, {""}, {""}, {""}, {""},
- {"hmng", 181},
+ {"hmng", 172},
{""}, {""},
- {"tirhuta", 197},
+ {"tirhuta", 222},
- {"hang", 98},
+ {"hang", 81},
{""}, {""}, {""}, {""},
- {"wspace", 205},
+ {"wspace", 230},
{""}, {""}, {""}, {""},
{"inlatinextendedd", 362},
@@ -24129,52 +24135,52 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
{"incherokeesupplement", 379},
{""},
- {"mymr", 96},
+ {"mymr", 143},
{""}, {""}, {""},
- {"vai", 143},
+ {"vai", 227},
- {"vaii", 143},
+ {"vaii", 227},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""},
- {"ethiopic", 99},
+ {"ethiopic", 68},
{""},
- {"sylotinagri", 132},
+ {"sylotinagri", 207},
{""}, {""}, {""}, {""},
- {"myanmar", 96},
+ {"myanmar", 143},
{""},
- {"syrc", 81},
+ {"syrc", 208},
{""},
{"inbrahmi", 438},
{""}, {""}, {""},
- {"mathsymbol", 49},
+ {"mathsymbol", 202},
{""},
- {"runr", 103},
+ {"runr", 190},
{""}, {""}, {""}, {""}, {""},
{"inshavian", 413},
- {"gothic", 112},
+ {"gothic", 72},
{""}, {""}, {""}, {""}, {""},
- {"syriac", 81},
+ {"syriac", 208},
- {"p", 38},
+ {"p", 171},
{""},
- {"zp", 53},
+ {"zp", 236},
{"induployan", 467},
{""},
- {"vs", 234},
+ {"vs", 228},
{""}, {""},
{"ingreekandcoptic", 245},
@@ -24182,15 +24188,15 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
{"ingothic", 408},
{""}, {""},
- {"lowercaseletter", 25},
+ {"lowercaseletter", 116},
{""}, {""}, {""},
{"inoriya", 262},
{""}, {""}, {""}, {""}, {""},
- {"grext", 71},
+ {"grext", 75},
- {"linearb", 121},
+ {"linearb", 114},
{"inyiradicals", 356},
{""},
@@ -24202,12 +24208,12 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
{"ingeometricshapes", 320},
{""},
- {"java", 158},
+ {"java", 97},
{"inblockelements", 319},
{""},
- {"number", 34},
+ {"number", 144},
{"incombininghalfmarks", 392},
@@ -24218,21 +24224,21 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
{"inlinearbsyllabary", 398},
{""},
- {"osmanya", 124},
+ {"osmanya", 162},
{""}, {""}, {""},
- {"avst", 153},
+ {"avst", 23},
{""}, {""}, {""}, {""},
- {"hexdigit", 213},
+ {"hexdigit", 85},
{""}, {""}, {""},
{"injavanese", 371},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {"cyrl", 77},
+ {"cyrl", 58},
- {"avestan", 153},
+ {"avestan", 23},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""}, {""},
@@ -24240,10 +24246,10 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
{"inornamentaldingbats", 485},
- {"tavt", 152},
+ {"tavt", 213},
{""}, {""}, {""}, {""},
- {"javanese", 158},
+ {"javanese", 97},
{"inethiopicextended", 335},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
@@ -24258,7 +24264,7 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
{"inarabicmathematicalalphabeticsymbols", 477},
{""}, {""}, {""}, {""}, {""}, {""}, {""},
- {"hangul", 98},
+ {"hangul", 81},
{""},
{"insuperscriptsandsubscripts", 307},
@@ -24273,10 +24279,10 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
{"inoldpersian", 411},
{""}, {""},
- {"geor", 97},
+ {"geor", 70},
{""},
- {"otherpunctuation", 44},
+ {"otherpunctuation", 184},
{""},
{"inoldpermic", 409},
@@ -24284,10 +24290,10 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
{"inalchemicalsymbols", 487},
- {"sylo", 132},
+ {"sylo", 207},
{""},
- {"hiragana", 106},
+ {"hiragana", 86},
{""}, {""},
{"word", 12},
@@ -24299,41 +24305,41 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
{"insmallformvariants", 394},
{""}, {""}, {""}, {""}, {""},
- {"sund", 140},
+ {"sund", 206},
- {"brah", 167},
+ {"brah", 31},
{""},
{"insupplementalmathematicaloperators", 328},
- {"glagolitic", 130},
+ {"glagolitic", 71},
{""}, {""},
- {"braille", 126},
+ {"braille", 32},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""},
- {"unassigned", 20},
+ {"unassigned", 51},
- {"sgnw", 204},
+ {"sgnw", 199},
{""}, {""}, {""},
- {"plrd", 172},
+ {"plrd", 137},
{""}, {""}, {""},
- {"hebr", 79},
+ {"hebr", 84},
- {"ogham", 102},
+ {"ogham", 152},
{""}, {""}, {""}, {""},
- {"cyrillic", 77},
+ {"cyrillic", 58},
{""}, {""}, {""},
- {"orya", 87},
+ {"orya", 161},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""},
- {"grantha", 180},
+ {"grantha", 73},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""},
@@ -24349,38 +24355,38 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
{"inhanguljamoextendeda", 370},
{""}, {""},
- {"goth", 112},
+ {"goth", 72},
- {"graphemebase", 72},
+ {"graphemebase", 74},
{""},
- {"bidic", 206},
+ {"bidic", 29},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {"ogrext", 222},
+ {"ogrext", 165},
{""}, {""}, {""}, {""}, {""}, {""},
- {"idsb", 223},
+ {"idsb", 88},
{""}, {""}, {""}, {""}, {""}, {""}, {""},
{"invariationselectorssupplement", 497},
- {"assigned", 16},
+ {"assigned", 22},
{""}, {""}, {""},
- {"symbol", 46},
+ {"symbol", 191},
{""}, {""}, {""},
{"ingreekextended", 305},
{""},
- {"pauc", 192},
+ {"pauc", 176},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {"meroitichieroglyphs", 171},
+ {"meroitichieroglyphs", 136},
{""},
- {"logicalorderexception", 230},
+ {"logicalorderexception", 119},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""}, {""},
@@ -24399,17 +24405,17 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
{"inkannada", 265},
{""}, {""}, {""},
- {"kana", 107},
+ {"kana", 101},
- {"phagspa", 138},
+ {"phagspa", 181},
{""}, {""},
- {"cakm", 169},
+ {"cakm", 43},
{"digit", 4},
{""}, {""}, {""}, {""},
- {"softdotted", 229},
+ {"softdotted", 204},
{""}, {""}, {""},
{"inchakma", 441},
@@ -24423,13 +24429,13 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""},
- {"warangciti", 198},
+ {"warangciti", 229},
{""}, {""}, {""}, {""}, {""}, {""}, {""},
{"incjkcompatibilityforms", 393},
{""}, {""},
- {"idstrinaryoperator", 224},
+ {"idstrinaryoperator", 89},
{""},
{"incjkcompatibilityideographs", 387},
@@ -24438,55 +24444,55 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
{"inkaithi", 439},
{""}, {""}, {""}, {""}, {""},
- {"takri", 175},
+ {"takri", 214},
{""}, {""}, {""}, {""}, {""}, {""},
- {"phlp", 194},
+ {"phlp", 186},
- {"mendekikakui", 186},
+ {"mendekikakui", 134},
{""},
{"punct", 8},
{""}, {""},
- {"otherdefaultignorablecodepoint", 227},
+ {"otherdefaultignorablecodepoint", 164},
{"inkatakana", 343},
{""}, {""}, {""}, {""}, {""}, {""},
{"graph", 5},
- {"lydi", 149},
+ {"lydi", 124},
{""}, {""}, {""}, {""}, {""},
- {"pd", 40},
+ {"pd", 178},
{""},
{"incjkstrokes", 348},
{""}, {""},
- {"lydian", 149},
+ {"lydian", 124},
{""}, {""}, {""}, {""},
- {"sorasompeng", 174},
+ {"sorasompeng", 205},
{""},
{"incjkcompatibilityideographssupplement", 495},
{""}, {""},
- {"meeteimayek", 159},
+ {"meeteimayek", 133},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {"otheruppercase", 220},
+ {"otheruppercase", 170},
{""}, {""},
- {"kali", 145},
+ {"kali", 102},
{""}, {""},
{"inhanguljamo", 273},
{""},
- {"ideographic", 216},
+ {"ideographic", 92},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
@@ -24498,10 +24504,10 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""},
- {"hluw", 200},
+ {"hluw", 18},
{""}, {""}, {""}, {""},
- {"patsyn", 236},
+ {"patsyn", 174},
{""}, {""},
{"incombiningdiacriticalmarks", 244},
@@ -24512,7 +24518,7 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
{"inkanasupplement", 466},
{""},
- {"deprecated", 228},
+ {"deprecated", 61},
{"inverticalforms", 391},
{""}, {""}, {""},
@@ -24526,24 +24532,24 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
{"inbuhid", 282},
{""},
- {"alphabetic", 56},
+ {"alphabetic", 17},
{""}, {""}, {""},
- {"oldhungarian", 203},
+ {"oldhungarian", 154},
{""}, {""},
- {"mark", 30},
+ {"mark", 125},
{""}, {""}, {""}, {""}, {""}, {""},
{"inkharoshthi", 427},
{""}, {""}, {""}, {""}, {""},
- {"deva", 83},
+ {"deva", 63},
{"invedicextensions", 300},
{""}, {""}, {""}, {""}, {""}, {""},
- {"devanagari", 83},
+ {"devanagari", 63},
{"incombiningdiacriticalmarkssupplement", 303},
{""}, {""}, {""},
@@ -24554,7 +24560,7 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
{"inkhmer", 284},
{""}, {""}, {""},
- {"changeswhencasemapped", 65},
+ {"changeswhencasemapped", 46},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""},
@@ -24562,53 +24568,53 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
{"intakri", 452},
{""}, {""},
- {"dep", 228},
+ {"dep", 61},
- {"takr", 175},
+ {"takr", 214},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {"changeswhencasefolded", 64},
+ {"changeswhencasefolded", 45},
{""},
- {"kaithi", 165},
+ {"kaithi", 99},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""},
- {"phag", 138},
+ {"phag", 181},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""},
{"inpahawhhmong", 464},
{""},
- {"bidicontrol", 206},
+ {"bidicontrol", 29},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{"inkhojki", 445},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {"bamu", 157},
+ {"bamu", 25},
{"inbamum", 360},
- {"changeswhentitlecased", 63},
+ {"changeswhentitlecased", 48},
{""}, {""},
{"inkhmersymbols", 290},
- {"uideo", 226},
+ {"uideo", 224},
- {"lu", 29},
+ {"lu", 122},
{""}, {""},
- {"kthi", 165},
+ {"kthi", 99},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {"limbu", 119},
+ {"limbu", 112},
{""},
- {"defaultignorablecodepoint", 70},
+ {"defaultignorablecodepoint", 60},
{""}, {""}, {""},
{"inplayingcards", 480},
@@ -24617,10 +24623,10 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
{"inhebrew", 249},
{""}, {""}, {""}, {""}, {""}, {""}, {""},
- {"modifiersymbol", 48},
+ {"modifiersymbol", 201},
{""}, {""}, {""}, {""}, {""},
- {"ugaritic", 122},
+ {"ugaritic", 223},
{""}, {""}, {""}, {""},
{"inlisu", 357},
@@ -24631,27 +24637,27 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
{"inprivateusearea", 386},
{""}, {""},
- {"olck", 142},
+ {"olck", 153},
{""}, {""}, {""},
{"inbengali", 259},
{""}, {""},
- {"olchiki", 142},
+ {"olchiki", 153},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {"caucasianalbanian", 176},
+ {"caucasianalbanian", 40},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""},
- {"oldturkic", 164},
+ {"oldturkic", 160},
- {"beng", 84},
+ {"beng", 28},
{"intelugu", 264},
{""}, {""}, {""}, {""}, {""},
- {"hyphen", 209},
+ {"hyphen", 87},
{""}, {""},
{"inbuginese", 291},
@@ -24661,16 +24667,16 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""},
- {"cypriot", 125},
+ {"cypriot", 57},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{"inlimbu", 287},
{""}, {""},
- {"graphemeextend", 71},
+ {"graphemeextend", 75},
{""}, {""},
- {"tagb", 118},
+ {"tagb", 210},
{""}, {""}, {""},
{"incypriotsyllabary", 418},
@@ -24684,20 +24690,20 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
{"inkatakanaphoneticextensions", 349},
- {"glag", 130},
+ {"glag", 71},
- {"combiningmark", 30},
+ {"combiningmark", 125},
- {"palmyrene", 191},
+ {"palmyrene", 173},
{""},
{"khmr", 104},
{""}, {""}, {""},
- {"khar", 134},
+ {"khar", 103},
{""}, {""}, {""}, {""}, {""}, {""}, {""},
- {"ugar", 122},
+ {"ugar", 223},
{""}, {""}, {""}, {""}, {""}, {""}, {""},
{"inarabicpresentationformsb", 395},
@@ -24706,40 +24712,40 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
{"insupplementaryprivateuseareaa", 498},
{""},
- {"variationselector", 234},
+ {"variationselector", 228},
{""}, {""}, {""}, {""},
- {"nko", 139},
+ {"nko", 148},
- {"nkoo", 139},
+ {"nkoo", 148},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{"inbamumsupplement", 461},
{""}, {""}, {""}, {""}, {""},
- {"tglg", 115},
+ {"tglg", 209},
{""},
- {"any", 15},
+ {"any", 19},
- {"enclosingmark", 32},
+ {"enclosingmark", 132},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {"gujr", 86},
+ {"gujr", 78},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {"changeswhenlowercased", 61},
+ {"changeswhenlowercased", 47},
{""}, {""}, {""}, {""},
- {"knda", 90},
+ {"knda", 100},
- {"hung", 203},
+ {"hung", 154},
- {"gujarati", 86},
+ {"gujarati", 78},
{""}, {""},
- {"bopo", 108},
+ {"bopo", 30},
{""}, {""}, {""}, {""},
{"inmendekikakui", 476},
@@ -24748,55 +24754,55 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
{"inbopomofo", 344},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {"kharoshthi", 134},
+ {"kharoshthi", 103},
{""},
- {"kannada", 90},
+ {"kannada", 100},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""},
- {"khoj", 182},
+ {"khoj", 105},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""},
- {"cherokee", 100},
+ {"cherokee", 50},
{""}, {""}, {""},
{"inlatinextendedb", 241},
{""}, {""}, {""}, {""}, {""},
- {"dashpunctuation", 40},
+ {"dashpunctuation", 178},
{""}, {""},
- {"dupl", 178},
+ {"dupl", 65},
{""}, {""}, {""}, {""}, {""}, {""}, {""},
{"inyisyllables", 355},
{""}, {""}, {""}, {""}, {""}, {""}, {""},
- {"georgian", 97},
+ {"georgian", 70},
{""},
- {"rejang", 146},
+ {"rejang", 189},
{""},
- {"oupper", 220},
+ {"oupper", 170},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""},
- {"aghb", 176},
+ {"aghb", 40},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""},
{"khmer", 104},
{""}, {""},
- {"grbase", 72},
+ {"grbase", 74},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {"currencysymbol", 47},
+ {"currencysymbol", 195},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""}, {""},
@@ -24805,16 +24811,16 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""},
- {"spacingmark", 31},
+ {"spacingmark", 131},
{""},
- {"orkh", 164},
+ {"orkh", 160},
{""}, {""}, {""}, {""}, {""},
- {"cwu", 62},
+ {"cwu", 49},
{""},
- {"hebrew", 79},
+ {"hebrew", 84},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
@@ -24822,13 +24828,13 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""},
- {"oldnortharabian", 189},
+ {"oldnortharabian", 156},
{""}, {""}, {""}, {""}, {""},
{"incjksymbolsandpunctuation", 341},
{""}, {""},
- {"othergraphemeextend", 222},
+ {"othergraphemeextend", 165},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""},
@@ -24836,15 +24842,15 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
{"indevanagariextended", 367},
{""}, {""}, {""}, {""}, {""}, {""}, {""},
- {"tagalog", 115},
+ {"tagalog", 209},
{""}, {""}, {""}, {""}, {""}, {""},
- {"surrogate", 22},
+ {"surrogate", 55},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""},
- {"bopomofo", 108},
+ {"bopomofo", 30},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
@@ -24855,10 +24861,10 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""},
- {"uppercase", 58},
+ {"uppercase", 226},
{""}, {""}, {""}, {""}, {""}, {""},
- {"unifiedideograph", 226},
+ {"unifiedideograph", 224},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
@@ -24866,7 +24872,7 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
{"inpaucinhau", 455},
- {"paucinhau", 192},
+ {"paucinhau", 176},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
@@ -24876,7 +24882,7 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {"nonspacingmark", 33},
+ {"nonspacingmark", 138},
{""},
{"inhanguljamoextendedb", 382},
@@ -24884,15 +24890,15 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
{"inhighsurrogates", 383},
- {"punctuation", 38},
+ {"punctuation", 171},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""},
- {"openpunctuation", 45},
+ {"openpunctuation", 185},
- {"bassavah", 177},
+ {"bassavah", 26},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
@@ -24917,23 +24923,23 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
{"inmeroiticcursive", 426},
{""}, {""},
- {"signwriting", 204},
+ {"signwriting", 199},
{""}, {""},
{"incjkradicalssupplement", 338},
{""},
- {"pahawhhmong", 181},
+ {"pahawhhmong", 172},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""},
{"inkayahli", 368},
- {"uppercaseletter", 29},
+ {"uppercaseletter", 122},
{""},
- {"batk", 166},
+ {"batk", 27},
{""}, {""}, {""}, {""},
{"inbatak", 296},
@@ -24943,10 +24949,10 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""},
- {"buhd", 117},
+ {"buhd", 34},
{""}, {""}, {""}, {""}, {""},
- {"egyp", 154},
+ {"egyp", 66},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""},
@@ -24964,7 +24970,7 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""},
- {"grek", 76},
+ {"grek", 77},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
@@ -24977,7 +24983,7 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""},
- {"bugi", 127},
+ {"bugi", 33},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
@@ -24985,20 +24991,20 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {"changeswhenuppercased", 62},
+ {"changeswhenuppercased", 49},
{""}, {""}, {""},
- {"paragraphseparator", 53},
+ {"paragraphseparator", 236},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""},
- {"buginese", 127},
+ {"buginese", 33},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {"guru", 85},
+ {"guru", 79},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""}, {""},
@@ -25006,13 +25012,13 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""},
- {"telugu", 89},
+ {"telugu", 216},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""},
- {"quotationmark", 210},
+ {"quotationmark", 187},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""},
@@ -25020,10 +25026,10 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
{"inkhudawadi", 447},
{""}, {""}, {""}, {""}, {""},
- {"kayahli", 145},
+ {"kayahli", 102},
{""},
- {"oldsoutharabian", 161},
+ {"oldsoutharabian", 159},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""},
@@ -25044,7 +25050,7 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""},
- {"zyyy", 74},
+ {"zyyy", 53},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
@@ -25053,28 +25059,28 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {"qmark", 210},
+ {"qmark", 187},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""},
- {"buhid", 117},
+ {"buhid", 34},
- {"sk", 48},
+ {"sk", 201},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""},
- {"unknown", 237},
+ {"unknown", 225},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {"khudawadi", 196},
+ {"khudawadi", 106},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""},
- {"katakana", 107},
+ {"katakana", 101},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""}, {""},
@@ -25097,12 +25103,12 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""},
- {"duployan", 178},
+ {"duployan", 65},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""},
- {"egyptianhieroglyphs", 154},
+ {"egyptianhieroglyphs", 66},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
@@ -25144,7 +25150,7 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {"khojki", 182},
+ {"khojki", 105},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
@@ -25217,7 +25223,7 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {"batak", 166},
+ {"batak", 27},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
@@ -25238,7 +25244,7 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""}, {""},
- {"greek", 76},
+ {"greek", 77},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
@@ -25251,7 +25257,7 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""},
- {"grlink", 73},
+ {"grlink", 76},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
@@ -25266,7 +25272,7 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""},
- {"gurmukhi", 85},
+ {"gurmukhi", 79},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
@@ -25280,14 +25286,14 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {"graphemelink", 73}
+ {"graphemelink", 76}
};
if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
{
- unsigned int key = hash (str, len);
+ register int key = hash (str, len);
- if (key <= MAX_HASH_VALUE)
+ if (key <= MAX_HASH_VALUE && key >= 0)
{
register const char *s = wordlist[key].name;
diff --git a/src/unicode_property_data_posix.c b/src/unicode_property_data_posix.c
index 83aabc6..1cf082b 100644
--- a/src/unicode_property_data_posix.c
+++ b/src/unicode_property_data_posix.c
@@ -1,5 +1,5 @@
-/* ANSI-C code produced by gperf version 3.0.3 */
-/* Command-line: /Library/Developer/CommandLineTools/usr/bin/gperf -T -C -c -t -j1 -L ANSI-C --ignore-case -N unicode_lookup_property_name --output-file gperf.tmp unicode_property_data_posix.gperf */
+/* ANSI-C code produced by gperf version 3.0.4 */
+/* Command-line: gperf -T -C -c -t -j1 -L ANSI-C --ignore-case -N unicode_lookup_property_name --output-file gperf.tmp unicode_property_data_posix.gperf */
/* Computed positions: -k'1,3' */
#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
@@ -4879,6 +4879,12 @@ hash (register const char *str, register unsigned int len)
return len + asso_values[(unsigned char)str[2]] + asso_values[(unsigned char)str[0]];
}
+#ifdef __GNUC__
+__inline
+#if defined __GNUC_STDC_INLINE__ || defined __GNUC_GNU_INLINE__
+__attribute__ ((__gnu_inline__))
+#endif
+#endif
const struct PropertyNameCtype *
unicode_lookup_property_name (register const char *str, register unsigned int len)
{
@@ -4919,9 +4925,9 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
{
- unsigned int key = hash (str, len);
+ register int key = hash (str, len);
- if (key <= MAX_HASH_VALUE)
+ if (key <= MAX_HASH_VALUE && key >= 0)
{
register const char *s = wordlist[key].name;
diff --git a/test/.gitignore b/test/.gitignore
new file mode 100644
index 0000000..04918c1
--- /dev/null
+++ b/test/.gitignore
@@ -0,0 +1,4 @@
+/test_utf8
+/testc
+/testcu
+/testp
diff --git a/test/Makefile.am b/test/Makefile.am
index fe48403..2930e7f 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -5,11 +5,13 @@ AM_LDFLAGS = -L$(prefix)/lib
AM_CFLAGS =
AM_CPPFLAGS = -I../src -I$(includedir)
-TESTS = testc testp testcu
+TESTS = test_utf8 testc testp testcu
-check_PROGRAMS = testc testp testcu
+check_PROGRAMS = test_utf8 testc testp testcu
-test: testc testp testcu
+test: test_utf8 testc testp testcu
+ @echo "[Oniguruma API, UTF-8 check]"
+ @./test_utf8 | grep RESULT
@echo "[Oniguruma API, ASCII/EUC-JP check]"
@./testc | grep RESULT
@echo "[POSIX API, ASCII/EUC-JP check]"
@@ -17,6 +19,9 @@ test: testc testp testcu
@echo "[Oniguruma API, UTF-16 check]"
@./testcu | grep RESULT
+test_utf8_SOURCES = test_utf8.c
+test_utf8_LDADD = $(lib_onig)
+
testc_SOURCES = testc.c
testc_LDADD = $(lib_onig)
diff --git a/test/test_utf8.c b/test/test_utf8.c
new file mode 100644
index 0000000..31fcfcd
--- /dev/null
+++ b/test/test_utf8.c
@@ -0,0 +1,1066 @@
+/*
+ * This program was generated by testconv.rb.
+ */
+#include "config.h"
+#ifdef ONIG_ESCAPE_UCHAR_COLLISION
+#undef ONIG_ESCAPE_UCHAR_COLLISION
+#endif
+#include <stdio.h>
+
+#include "oniguruma.h"
+
+#ifdef HAVE_STRING_H
+# include <string.h>
+#else
+# include <strings.h>
+#endif
+
+#define SLEN(s) strlen(s)
+
+static int nsucc = 0;
+static int nfail = 0;
+static int nerror = 0;
+
+static FILE* err_file;
+
+static OnigRegion* region;
+
+static void xx(char* pattern, char* str, int from, int to, int mem, int not,
+ int error_no)
+{
+ int r;
+ regex_t* reg;
+ OnigErrorInfo einfo;
+
+ r = onig_new(&reg, (UChar* )pattern, (UChar* )(pattern + SLEN(pattern)),
+ ONIG_OPTION_DEFAULT, ONIG_ENCODING_UTF8, ONIG_SYNTAX_DEFAULT, &einfo);
+ if (r) {
+ char s[ONIG_MAX_ERROR_MESSAGE_LEN];
+
+ if (error_no == 0) {
+ onig_error_code_to_str((UChar* )s, r, &einfo);
+ fprintf(err_file, "ERROR: %s /%s/\n", s, pattern);
+ nerror++;
+ }
+ else {
+ if (r == error_no) {
+ fprintf(stdout, "OK(ERROR): /%s/ %d\n", pattern, r);
+ nsucc++;
+ }
+ else {
+ fprintf(stdout, "FAIL(ERROR): /%s/ '%s', %d, %d\n", pattern, str,
+ error_no, r);
+ nfail++;
+ }
+ }
+
+ return ;
+ }
+
+ r = onig_search(reg, (UChar* )str, (UChar* )(str + SLEN(str)),
+ (UChar* )str, (UChar* )(str + SLEN(str)),
+ region, ONIG_OPTION_NONE);
+ if (r < ONIG_MISMATCH) {
+ char s[ONIG_MAX_ERROR_MESSAGE_LEN];
+
+ if (error_no == 0) {
+ onig_error_code_to_str((UChar* )s, r);
+ fprintf(err_file, "ERROR: %s\n", s);
+ nerror++;
+ }
+ else {
+ if (r == error_no) {
+ fprintf(stdout, "OK(ERROR): /%s/ '%s', %d\n", pattern, str, r);
+ nsucc++;
+ }
+ else {
+ fprintf(stdout, "FAIL ERROR NO: /%s/ '%s', %d, %d\n", pattern, str,
+ error_no, r);
+ nfail++;
+ }
+ }
+
+ return ;
+ }
+
+ if (r == ONIG_MISMATCH) {
+ if (not) {
+ fprintf(stdout, "OK(N): /%s/ '%s'\n", pattern, str);
+ nsucc++;
+ }
+ else {
+ fprintf(stdout, "FAIL: /%s/ '%s'\n", pattern, str);
+ nfail++;
+ }
+ }
+ else {
+ if (not) {
+ fprintf(stdout, "FAIL(N): /%s/ '%s'\n", pattern, str);
+ nfail++;
+ }
+ else {
+ if (region->beg[mem] == from && region->end[mem] == to) {
+ fprintf(stdout, "OK: /%s/ '%s'\n", pattern, str);
+ nsucc++;
+ }
+ else {
+ fprintf(stdout, "FAIL: /%s/ '%s' %d-%d : %d-%d\n", pattern, str,
+ from, to, region->beg[mem], region->end[mem]);
+ nfail++;
+ }
+ }
+ }
+ onig_free(reg);
+}
+
+static void x2(char* pattern, char* str, int from, int to)
+{
+ xx(pattern, str, from, to, 0, 0, 0);
+}
+
+static void x3(char* pattern, char* str, int from, int to, int mem)
+{
+ xx(pattern, str, from, to, mem, 0, 0);
+}
+
+static void n(char* pattern, char* str)
+{
+ xx(pattern, str, 0, 0, 0, 1, 0);
+}
+
+static void e(char* pattern, char* str, int error_no)
+{
+ xx(pattern, str, 0, 0, 0, 0, error_no);
+}
+
+extern int main(int argc, char* argv[])
+{
+ static OnigEncoding use_encs[] = { ONIG_ENCODING_UTF8 };
+
+ onig_initialize(use_encs, sizeof(use_encs)/sizeof(use_encs[0]));
+
+ err_file = stdout;
+
+ region = onig_region_new();
+
+ x2("", "", 0, 0);
+ x2("^", "", 0, 0);
+ x2("$", "", 0, 0);
+ x2("\\G", "", 0, 0);
+ x2("\\A", "", 0, 0);
+ x2("\\Z", "", 0, 0);
+ x2("\\z", "", 0, 0);
+ x2("^$", "", 0, 0);
+ x2("\\ca", "\001", 0, 1);
+ x2("\\C-b", "\002", 0, 1);
+ x2("\\c\\\\", "\034", 0, 1);
+ x2("q[\\c\\\\]", "q\034", 0, 2);
+ x2("", "a", 0, 0);
+ x2("a", "a", 0, 1);
+ x2("\\x61", "a", 0, 1);
+ x2("aa", "aa", 0, 2);
+ x2("aaa", "aaa", 0, 3);
+ x2("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", 0, 35);
+ x2("ab", "ab", 0, 2);
+ x2("b", "ab", 1, 2);
+ x2("bc", "abc", 1, 3);
+ x2("(?i:#RET#)", "#INS##RET#", 5, 10);
+ x2("\\17", "\017", 0, 1);
+ x2("\\x1f", "\x1f", 0, 1);
+ x2("a(?#....\\\\JJJJ)b", "ab", 0, 2);
+ x2("(?x) G (o O(?-x)oO) g L", "GoOoOgLe", 0, 7);
+ x2(".", "a", 0, 1);
+ n(".", "");
+ x2("..", "ab", 0, 2);
+ x2("\\w", "e", 0, 1);
+ n("\\W", "e");
+ x2("\\s", " ", 0, 1);
+ x2("\\S", "b", 0, 1);
+ x2("\\d", "4", 0, 1);
+ n("\\D", "4");
+ x2("\\b", "z ", 0, 0);
+ x2("\\b", " z", 1, 1);
+ x2("\\B", "zz ", 1, 1);
+ x2("\\B", "z ", 2, 2);
+ x2("\\B", " z", 0, 0);
+ x2("[ab]", "b", 0, 1);
+ n("[ab]", "c");
+ x2("[a-z]", "t", 0, 1);
+ n("[^a]", "a");
+ x2("[^a]", "\n", 0, 1);
+ x2("[]]", "]", 0, 1);
+ n("[^]]", "]");
+ x2("[\\^]+", "0^^1", 1, 3);
+ x2("[b-]", "b", 0, 1);
+ x2("[b-]", "-", 0, 1);
+ x2("[\\w]", "z", 0, 1);
+ n("[\\w]", " ");
+ x2("[\\W]", "b$", 1, 2);
+ x2("[\\d]", "5", 0, 1);
+ n("[\\d]", "e");
+ x2("[\\D]", "t", 0, 1);
+ n("[\\D]", "3");
+ x2("[\\s]", " ", 0, 1);
+ n("[\\s]", "a");
+ x2("[\\S]", "b", 0, 1);
+ n("[\\S]", " ");
+ x2("[\\w\\d]", "2", 0, 1);
+ n("[\\w\\d]", " ");
+ x2("[[:upper:]]", "B", 0, 1);
+ x2("[*[:xdigit:]+]", "+", 0, 1);
+ x2("[*[:xdigit:]+]", "GHIKK-9+*", 6, 7);
+ x2("[*[:xdigit:]+]", "-@^+", 3, 4);
+ n("[[:upper]]", "A");
+ x2("[[:upper]]", ":", 0, 1);
+ x2("[\\044-\\047]", "\046", 0, 1);
+ x2("[\\x5a-\\x5c]", "\x5b", 0, 1);
+ x2("[\\x6A-\\x6D]", "\x6c", 0, 1);
+ n("[\\x6A-\\x6D]", "\x6E");
+ n("^[0-9A-F]+ 0+ UNDEF ", "75F 00000000 SECT14A notype () External | _rb_apply");
+ x2("[\\[]", "[", 0, 1);
+ x2("[\\]]", "]", 0, 1);
+ x2("[&]", "&", 0, 1);
+ x2("[[ab]]", "b", 0, 1);
+ x2("[[ab]c]", "c", 0, 1);
+ n("[[^a]]", "a");
+ n("[^[a]]", "a");
+ x2("[[ab]&&bc]", "b", 0, 1);
+ n("[[ab]&&bc]", "a");
+ n("[[ab]&&bc]", "c");
+ x2("[a-z&&b-y&&c-x]", "w", 0, 1);
+ n("[^a-z&&b-y&&c-x]", "w");
+ x2("[[^a&&a]&&a-z]", "b", 0, 1);
+ n("[[^a&&a]&&a-z]", "a");
+ x2("[[^a-z&&bcdef]&&[^c-g]]", "h", 0, 1);
+ n("[[^a-z&&bcdef]&&[^c-g]]", "c");
+ x2("[^[^abc]&&[^cde]]", "c", 0, 1);
+ x2("[^[^abc]&&[^cde]]", "e", 0, 1);
+ n("[^[^abc]&&[^cde]]", "f");
+ x2("[a-&&-a]", "-", 0, 1);
+ n("[a\\-&&\\-a]", "&");
+ n("\\wabc", " abc");
+ x2("a\\Wbc", "a bc", 0, 4);
+ x2("a.b.c", "aabbc", 0, 5);
+ x2(".\\wb\\W..c", "abb bcc", 0, 7);
+ x2("\\s\\wzzz", " zzzz", 0, 5);
+ x2("aa.b", "aabb", 0, 4);
+ n(".a", "ab");
+ x2(".a", "aa", 0, 2);
+ x2("^a", "a", 0, 1);
+ x2("^a$", "a", 0, 1);
+ x2("^\\w$", "a", 0, 1);
+ n("^\\w$", " ");
+ x2("^\\wab$", "zab", 0, 3);
+ x2("^\\wabcdef$", "zabcdef", 0, 7);
+ x2("^\\w...def$", "zabcdef", 0, 7);
+ x2("\\w\\w\\s\\Waaa\\d", "aa aaa4", 0, 8);
+ x2("\\A\\Z", "", 0, 0);
+ x2("\\Axyz", "xyz", 0, 3);
+ x2("xyz\\Z", "xyz", 0, 3);
+ x2("xyz\\z", "xyz", 0, 3);
+ x2("a\\Z", "a", 0, 1);
+ x2("\\Gaz", "az", 0, 2);
+ n("\\Gz", "bza");
+ n("az\\G", "az");
+ n("az\\A", "az");
+ n("a\\Az", "az");
+ x2("\\^\\$", "^$", 0, 2);
+ x2("^x?y", "xy", 0, 2);
+ x2("^(x?y)", "xy", 0, 2);
+ x2("\\w", "_", 0, 1);
+ n("\\W", "_");
+ x2("(?=z)z", "z", 0, 1);
+ n("(?=z).", "a");
+ x2("(?!z)a", "a", 0, 1);
+ n("(?!z)a", "z");
+ x2("(?i:a)", "a", 0, 1);
+ x2("(?i:a)", "A", 0, 1);
+ x2("(?i:A)", "a", 0, 1);
+ n("(?i:A)", "b");
+ x2("(?i:[A-Z])", "a", 0, 1);
+ x2("(?i:[f-m])", "H", 0, 1);
+ x2("(?i:[f-m])", "h", 0, 1);
+ n("(?i:[f-m])", "e");
+ x2("(?i:[A-c])", "D", 0, 1);
+ n("(?i:[^a-z])", "A");
+ n("(?i:[^a-z])", "a");
+ x2("(?i:[!-k])", "Z", 0, 1);
+ x2("(?i:[!-k])", "7", 0, 1);
+ x2("(?i:[T-}])", "b", 0, 1);
+ x2("(?i:[T-}])", "{", 0, 1);
+ x2("(?i:\\?a)", "?A", 0, 2);
+ x2("(?i:\\*A)", "*a", 0, 2);
+ n(".", "\n");
+ x2("(?m:.)", "\n", 0, 1);
+ x2("(?m:a.)", "a\n", 0, 2);
+ x2("(?m:.b)", "a\nb", 1, 3);
+ x2(".*abc", "dddabdd\nddabc", 8, 13);
+ x2("(?m:.*abc)", "dddabddabc", 0, 10);
+ n("(?i)(?-i)a", "A");
+ n("(?i)(?-i:a)", "A");
+ x2("a?", "", 0, 0);
+ x2("a?", "b", 0, 0);
+ x2("a?", "a", 0, 1);
+ x2("a*", "", 0, 0);
+ x2("a*", "a", 0, 1);
+ x2("a*", "aaa", 0, 3);
+ x2("a*", "baaaa", 0, 0);
+ n("a+", "");
+ x2("a+", "a", 0, 1);
+ x2("a+", "aaaa", 0, 4);
+ x2("a+", "aabbb", 0, 2);
+ x2("a+", "baaaa", 1, 5);
+ x2(".?", "", 0, 0);
+ x2(".?", "f", 0, 1);
+ x2(".?", "\n", 0, 0);
+ x2(".*", "", 0, 0);
+ x2(".*", "abcde", 0, 5);
+ x2(".+", "z", 0, 1);
+ x2(".+", "zdswer\n", 0, 6);
+ x2("(.*)a\\1f", "babfbac", 0, 4);
+ x2("(.*)a\\1f", "bacbabf", 3, 7);
+ x2("((.*)a\\2f)", "bacbabf", 3, 7);
+ x2("(.*)a\\1f", "baczzzzzz\nbazz\nzzzzbabf", 19, 23);
+ x2("a|b", "a", 0, 1);
+ x2("a|b", "b", 0, 1);
+ x2("|a", "a", 0, 0);
+ x2("(|a)", "a", 0, 0);
+ x2("ab|bc", "ab", 0, 2);
+ x2("ab|bc", "bc", 0, 2);
+ x2("z(?:ab|bc)", "zbc", 0, 3);
+ x2("a(?:ab|bc)c", "aabc", 0, 4);
+ x2("ab|(?:ac|az)", "az", 0, 2);
+ x2("a|b|c", "dc", 1, 2);
+ x2("a|b|cd|efg|h|ijk|lmn|o|pq|rstuvwx|yz", "pqr", 0, 2);
+ n("a|b|cd|efg|h|ijk|lmn|o|pq|rstuvwx|yz", "mn");
+ x2("a|^z", "ba", 1, 2);
+ x2("a|^z", "za", 0, 1);
+ x2("a|\\Gz", "bza", 2, 3);
+ x2("a|\\Gz", "za", 0, 1);
+ x2("a|\\Az", "bza", 2, 3);
+ x2("a|\\Az", "za", 0, 1);
+ x2("a|b\\Z", "ba", 1, 2);
+ x2("a|b\\Z", "b", 0, 1);
+ x2("a|b\\z", "ba", 1, 2);
+ x2("a|b\\z", "b", 0, 1);
+ x2("\\w|\\s", " ", 0, 1);
+ n("\\w|\\w", " ");
+ x2("\\w|%", "%", 0, 1);
+ x2("\\w|[&$]", "&", 0, 1);
+ x2("[b-d]|[^e-z]", "a", 0, 1);
+ x2("(?:a|[c-f])|bz", "dz", 0, 1);
+ x2("(?:a|[c-f])|bz", "bz", 0, 2);
+ x2("abc|(?=zz)..f", "zzf", 0, 3);
+ x2("abc|(?!zz)..f", "abf", 0, 3);
+ x2("(?=za)..a|(?=zz)..a", "zza", 0, 3);
+ n("(?>a|abd)c", "abdc");
+ x2("(?>abd|a)c", "abdc", 0, 4);
+ x2("a?|b", "a", 0, 1);
+ x2("a?|b", "b", 0, 0);
+ x2("a?|b", "", 0, 0);
+ x2("a*|b", "aa", 0, 2);
+ x2("a*|b*", "ba", 0, 0);
+ x2("a*|b*", "ab", 0, 1);
+ x2("a+|b*", "", 0, 0);
+ x2("a+|b*", "bbb", 0, 3);
+ x2("a+|b*", "abbb", 0, 1);
+ n("a+|b+", "");
+ x2("(a|b)?", "b", 0, 1);
+ x2("(a|b)*", "ba", 0, 2);
+ x2("(a|b)+", "bab", 0, 3);
+ x2("(ab|ca)+", "caabbc", 0, 4);
+ x2("(ab|ca)+", "aabca", 1, 5);
+ x2("(ab|ca)+", "abzca", 0, 2);
+ x2("(a|bab)+", "ababa", 0, 5);
+ x2("(a|bab)+", "ba", 1, 2);
+ x2("(a|bab)+", "baaaba", 1, 4);
+ x2("(?:a|b)(?:a|b)", "ab", 0, 2);
+ x2("(?:a*|b*)(?:a*|b*)", "aaabbb", 0, 3);
+ x2("(?:a*|b*)(?:a+|b+)", "aaabbb", 0, 6);
+ x2("(?:a+|b+){2}", "aaabbb", 0, 6);
+ x2("h{0,}", "hhhh", 0, 4);
+ x2("(?:a+|b+){1,2}", "aaabbb", 0, 6);
+ n("ax{2}*a", "0axxxa1");
+ n("a.{0,2}a", "0aXXXa0");
+ n("a.{0,2}?a", "0aXXXa0");
+ n("a.{0,2}?a", "0aXXXXa0");
+ x2("^a{2,}?a$", "aaa", 0, 3);
+ x2("^[a-z]{2,}?$", "aaa", 0, 3);
+ x2("(?:a+|\\Ab*)cc", "cc", 0, 2);
+ n("(?:a+|\\Ab*)cc", "abcc");
+ x2("(?:^a+|b+)*c", "aabbbabc", 6, 8);
+ x2("(?:^a+|b+)*c", "aabbbbc", 0, 7);
+ x2("a|(?i)c", "C", 0, 1);
+ x2("(?i)c|a", "C", 0, 1);
+ x2("(?i)c|a", "A", 0, 1);
+ x2("(?i:c)|a", "C", 0, 1);
+ n("(?i:c)|a", "A");
+ x2("[abc]?", "abc", 0, 1);
+ x2("[abc]*", "abc", 0, 3);
+ x2("[^abc]*", "abc", 0, 0);
+ n("[^abc]+", "abc");
+ x2("a?\?", "aaa", 0, 0);
+ x2("ba?\?b", "bab", 0, 3);
+ x2("a*?", "aaa", 0, 0);
+ x2("ba*?", "baa", 0, 1);
+ x2("ba*?b", "baab", 0, 4);
+ x2("a+?", "aaa", 0, 1);
+ x2("ba+?", "baa", 0, 2);
+ x2("ba+?b", "baab", 0, 4);
+ x2("(?:a?)?\?", "a", 0, 0);
+ x2("(?:a?\?)?", "a", 0, 0);
+ x2("(?:a?)+?", "aaa", 0, 1);
+ x2("(?:a+)?\?", "aaa", 0, 0);
+ x2("(?:a+)?\?b", "aaab", 0, 4);
+ x2("(?:ab)?{2}", "", 0, 0);
+ x2("(?:ab)?{2}", "ababa", 0, 4);
+ x2("(?:ab)*{0}", "ababa", 0, 0);
+ x2("(?:ab){3,}", "abababab", 0, 8);
+ n("(?:ab){3,}", "abab");
+ x2("(?:ab){2,4}", "ababab", 0, 6);
+ x2("(?:ab){2,4}", "ababababab", 0, 8);
+ x2("(?:ab){2,4}?", "ababababab", 0, 4);
+ x2("(?:ab){,}", "ab{,}", 0, 5);
+ x2("(?:abc)+?{2}", "abcabcabc", 0, 6);
+ x2("(?:X*)(?i:xa)", "XXXa", 0, 4);
+ x2("(d+)([^abc]z)", "dddz", 0, 4);
+ x2("([^abc]*)([^abc]z)", "dddz", 0, 4);
+ x2("(\\w+)(\\wz)", "dddz", 0, 4);
+ x3("(a)", "a", 0, 1, 1);
+ x3("(ab)", "ab", 0, 2, 1);
+ x2("((ab))", "ab", 0, 2);
+ x3("((ab))", "ab", 0, 2, 1);
+ x3("((ab))", "ab", 0, 2, 2);
+ x3("((((((((((((((((((((ab))))))))))))))))))))", "ab", 0, 2, 20);
+ x3("(ab)(cd)", "abcd", 0, 2, 1);
+ x3("(ab)(cd)", "abcd", 2, 4, 2);
+ x3("()(a)bc(def)ghijk", "abcdefghijk", 3, 6, 3);
+ x3("(()(a)bc(def)ghijk)", "abcdefghijk", 3, 6, 4);
+ x2("(^a)", "a", 0, 1);
+ x3("(a)|(a)", "ba", 1, 2, 1);
+ x3("(^a)|(a)", "ba", 1, 2, 2);
+ x3("(a?)", "aaa", 0, 1, 1);
+ x3("(a*)", "aaa", 0, 3, 1);
+ x3("(a*)", "", 0, 0, 1);
+ x3("(a+)", "aaaaaaa", 0, 7, 1);
+ x3("(a+|b*)", "bbbaa", 0, 3, 1);
+ x3("(a+|b?)", "bbbaa", 0, 1, 1);
+ x3("(abc)?", "abc", 0, 3, 1);
+ x3("(abc)*", "abc", 0, 3, 1);
+ x3("(abc)+", "abc", 0, 3, 1);
+ x3("(xyz|abc)+", "abc", 0, 3, 1);
+ x3("([xyz][abc]|abc)+", "abc", 0, 3, 1);
+ x3("((?i:abc))", "AbC", 0, 3, 1);
+ x2("(abc)(?i:\\1)", "abcABC", 0, 6);
+ x3("((?m:a.c))", "a\nc", 0, 3, 1);
+ x3("((?=az)a)", "azb", 0, 1, 1);
+ x3("abc|(.abd)", "zabd", 0, 4, 1);
+ x2("(?:abc)|(ABC)", "abc", 0, 3);
+ x3("(?i:(abc))|(zzz)", "ABC", 0, 3, 1);
+ x3("a*(.)", "aaaaz", 4, 5, 1);
+ x3("a*?(.)", "aaaaz", 0, 1, 1);
+ x3("a*?(c)", "aaaac", 4, 5, 1);
+ x3("[bcd]a*(.)", "caaaaz", 5, 6, 1);
+ x3("(\\Abb)cc", "bbcc", 0, 2, 1);
+ n("(\\Abb)cc", "zbbcc");
+ x3("(^bb)cc", "bbcc", 0, 2, 1);
+ n("(^bb)cc", "zbbcc");
+ x3("cc(bb$)", "ccbb", 2, 4, 1);
+ n("cc(bb$)", "ccbbb");
+ n("(\\1)", "");
+ n("\\1(a)", "aa");
+ n("(a(b)\\1)\\2+", "ababb");
+ n("(?:(?:\\1|z)(a))+$", "zaa");
+ x2("(?:(?:\\1|z)(a))+$", "zaaa", 0, 4);
+ x2("(a)(?=\\1)", "aa", 0, 1);
+ n("(a)$|\\1", "az");
+ x2("(a)\\1", "aa", 0, 2);
+ n("(a)\\1", "ab");
+ x2("(a?)\\1", "aa", 0, 2);
+ x2("(a?\?)\\1", "aa", 0, 0);
+ x2("(a*)\\1", "aaaaa", 0, 4);
+ x3("(a*)\\1", "aaaaa", 0, 2, 1);
+ x2("a(b*)\\1", "abbbb", 0, 5);
+ x2("a(b*)\\1", "ab", 0, 1);
+ x2("(a*)(b*)\\1\\2", "aaabbaaabb", 0, 10);
+ x2("(a*)(b*)\\2", "aaabbbb", 0, 7);
+ x2("(((((((a*)b))))))c\\7", "aaabcaaa", 0, 8);
+ x3("(((((((a*)b))))))c\\7", "aaabcaaa", 0, 3, 7);
+ x2("(a)(b)(c)\\2\\1\\3", "abcbac", 0, 6);
+ x2("([a-d])\\1", "cc", 0, 2);
+ x2("(\\w\\d\\s)\\1", "f5 f5 ", 0, 6);
+ n("(\\w\\d\\s)\\1", "f5 f5");
+ x2("(who|[a-c]{3})\\1", "whowho", 0, 6);
+ x2("...(who|[a-c]{3})\\1", "abcwhowho", 0, 9);
+ x2("(who|[a-c]{3})\\1", "cbccbc", 0, 6);
+ x2("(^a)\\1", "aa", 0, 2);
+ n("(^a)\\1", "baa");
+ n("(a$)\\1", "aa");
+ n("(ab\\Z)\\1", "ab");
+ x2("(a*\\Z)\\1", "a", 1, 1);
+ x2(".(a*\\Z)\\1", "ba", 1, 2);
+ x3("(.(abc)\\2)", "zabcabc", 0, 7, 1);
+ x3("(.(..\\d.)\\2)", "z12341234", 0, 9, 1);
+ x2("((?i:az))\\1", "AzAz", 0, 4);
+ n("((?i:az))\\1", "Azaz");
+ x2("(?<=a)b", "ab", 1, 2);
+ n("(?<=a)b", "bb");
+ x2("(?<=a|b)b", "bb", 1, 2);
+ x2("(?<=a|bc)b", "bcb", 2, 3);
+ x2("(?<=a|bc)b", "ab", 1, 2);
+ x2("(?<=a|bc||defghij|klmnopq|r)z", "rz", 1, 2);
+ x3("(?<=(abc))d", "abcd", 0, 3, 1);
+ x2("(?<=(?i:abc))d", "ABCd", 3, 4);
+ x2("(a)\\g<1>", "aa", 0, 2);
+ x2("(?<!a)b", "cb", 1, 2);
+ n("(?<!a)b", "ab");
+ x2("(?<!a|bc)b", "bbb", 0, 1);
+ n("(?<!a|bc)z", "bcz");
+ x2("(?<name1>a)", "a", 0, 1);
+ x2("(?<name_2>ab)\\g<name_2>", "abab", 0, 4);
+ x2("(?<name_3>.zv.)\\k<name_3>", "azvbazvb", 0, 8);
+ x2("(?<=\\g<ab>)|-\\zEND (?<ab>XyZ)", "XyZ", 3, 3);
+ x2("(?<n>|a\\g<n>)+", "", 0, 0);
+ x2("(?<n>|\\(\\g<n>\\))+$", "()(())", 0, 6);
+ x3("\\g<n>(?<n>.){0}", "X", 0, 1, 1);
+ x2("\\g<n>(abc|df(?<n>.YZ){2,8}){0}", "XYZ", 0, 3);
+ x2("\\A(?<n>(a\\g<n>)|)\\z", "aaaa", 0, 4);
+ x2("(?<n>|\\g<m>\\g<n>)\\z|\\zEND (?<m>a|(b)\\g<m>)", "bbbbabba", 0, 8);
+ x2("(?<name1240>\\w+\\sx)a+\\k<name1240>", " fg xaaaaaaaafg x", 2, 18);
+ x3("(z)()()(?<_9>a)\\g<_9>", "zaa", 2, 3, 1);
+ x2("(.)(((?<_>a)))\\k<_>", "zaa", 0, 3);
+ x2("((?<name1>\\d)|(?<name2>\\w))(\\k<name1>|\\k<name2>)", "ff", 0, 2);
+ x2("(?:(?<x>)|(?<x>efg))\\k<x>", "", 0, 0);
+ x2("(?:(?<x>abc)|(?<x>efg))\\k<x>", "abcefgefg", 3, 9);
+ n("(?:(?<x>abc)|(?<x>efg))\\k<x>", "abcefg");
+ x2("(?:(?<n1>.)|(?<n1>..)|(?<n1>...)|(?<n1>....)|(?<n1>.....)|(?<n1>......)|(?<n1>.......)|(?<n1>........)|(?<n1>.........)|(?<n1>..........)|(?<n1>...........)|(?<n1>............)|(?<n1>.............)|(?<n1>..............))\\k<n1>$", "a-pyumpyum", 2, 10);
+ x3("(?:(?<n1>.)|(?<n1>..)|(?<n1>...)|(?<n1>....)|(?<n1>.....)|(?<n1>......)|(?<n1>.......)|(?<n1>........)|(?<n1>.........)|(?<n1>..........)|(?<n1>...........)|(?<n1>............)|(?<n1>.............)|(?<n1>..............))\\k<n1>$", "xxxxabcdefghijklmnabcdefghijklmn", 4, 18, 14);
+ x3("(?<name1>)(?<name2>)(?<name3>)(?<name4>)(?<name5>)(?<name6>)(?<name7>)(?<name8>)(?<name9>)(?<name10>)(?<name11>)(?<name12>)(?<name13>)(?<name14>)(?<name15>)(?<name16>aaa)(?<name17>)$", "aaa", 0, 3, 16);
+ x2("(?<foo>a|\\(\\g<foo>\\))", "a", 0, 1);
+ x2("(?<foo>a|\\(\\g<foo>\\))", "((((((a))))))", 0, 13);
+ x3("(?<foo>a|\\(\\g<foo>\\))", "((((((((a))))))))", 0, 17, 1);
+ x2("\\g<bar>|\\zEND(?<bar>.*abc$)", "abcxxxabc", 0, 9);
+ x2("\\g<1>|\\zEND(.a.)", "bac", 0, 3);
+ x3("\\g<_A>\\g<_A>|\\zEND(.a.)(?<_A>.b.)", "xbxyby", 3, 6, 1);
+ x2("\\A(?:\\g<pon>|\\g<pan>|\\zEND (?<pan>a|c\\g<pon>c)(?<pon>b|d\\g<pan>d))$", "cdcbcdc", 0, 7);
+ x2("\\A(?<n>|a\\g<m>)\\z|\\zEND (?<m>\\g<n>)", "aaaa", 0, 4);
+ x2("(?<n>(a|b\\g<n>c){3,5})", "baaaaca", 1, 5);
+ x2("(?<n>(a|b\\g<n>c){3,5})", "baaaacaaaaa", 0, 10);
+ x2("(?<pare>\\(([^\\(\\)]++|\\g<pare>)*+\\))", "((a))", 0, 5);
+ x2("()*\\1", "", 0, 0);
+ x2("(?:()|())*\\1\\2", "", 0, 0);
+ x3("(?:\\1a|())*", "a", 0, 0, 1);
+ x2("x((.)*)*x", "0x1x2x3", 1, 6);
+ x2("x((.)*)*x(?i:\\1)\\Z", "0x1x2x1X2", 1, 9);
+ x2("(?:()|()|()|()|()|())*\\2\\5", "", 0, 0);
+ x2("(?:()|()|()|(x)|()|())*\\2b\\5", "b", 0, 1);
+ x2("[0-9-a]", "-", 0, 1); // PR#44
+ n("[0-9-a]", ":"); // PR#44
+ x3("(\\(((?:[^(]|\\g<1>)*)\\))", "(abc)(abc)", 1, 4, 2); // PR#43
+ x2("\\o{101}", "A", 0, 1);
+ x2("(?:\\k'+1'B|(A)C)*", "ACAB", 0, 4); // relative backref by postitive number
+ x2("\\g<+2>(abc)(ABC){0}", "ABCabc", 0, 6); // relative call by positive number
+ x2("A\\g'0'|B()", "AAAAB", 0, 5);
+ x3("(A\\g'0')|B", "AAAAB", 0, 5, 1);
+ x2("(a*)(?(1))aa", "aaaaa", 0, 5);
+ x2("(a*)(?(-1))aa", "aaaaa", 0, 5);
+ x2("(?<name>aaa)(?('name'))aa", "aaaaa", 0, 5);
+ x2("(a)(?(1)aa|bb)a", "aaaaa", 0, 4);
+ x2("(?:aa|())(?(<1>)aa|bb)a", "aabba", 0, 5);
+ x2("(?:aa|())(?('1')aa|bb|cc)a", "aacca", 0, 5);
+ x3("(a*)(?(1)aa|a)b", "aaab", 0, 1, 1);
+ n("(a)(?(1)a|b)c", "abc");
+ x2("(a)(?(1)|)c", "ac", 0, 2);
+ n("(?()aaa|bbb)", "bbb");
+ x2("(a)(?(1+0)b|c)d", "abd", 0, 3);
+ x2("(?:(?'name'a)|(?'name'b))(?('name')c|d)e", "ace", 0, 3);
+ x2("(?:(?'name'a)|(?'name'b))(?('name')c|d)e", "bce", 0, 3);
+ x2("\\R", "\r\n", 0, 2);
+ x2("\\R", "\r", 0, 1);
+ x2("\\R", "\n", 0, 1);
+ x2("\\R", "\x0b", 0, 1);
+ n("\\R\\n", "\r\n");
+ x2("\\R", "\xc2\x85", 0, 2);
+ x2("\\N", "a", 0, 1);
+ n("\\N", "\n");
+ n("(?m:\\N)", "\n");
+ n("(?-m:\\N)", "\n");
+ x2("\\O", "a", 0, 1);
+ x2("\\O", "\n", 0, 1);
+ x2("(?m:\\O)", "\n", 0, 1);
+ x2("(?-m:\\O)", "\n", 0, 1);
+ x2("\\K", "a", 0, 0);
+ x2("a\\K", "a", 1, 1);
+ x2("a\\Kb", "ab", 1, 2);
+ x2("(a\\Kb|ac\\Kd)", "acd", 2, 3);
+ x2("(a\\Kb|\\Kac\\K)*", "acababacab", 9, 10);
+
+ x2("(?~)", "", 0, 0);
+ x2("(?~)", "A", 0, 0);
+ x2("aaaaa(?~)", "aaaaaaaaaa", 0, 5);
+ x2("(?~(?:|aaa))", "aaa", 0, 0);
+ x2("(?~aaa|)", "aaa", 0, 0);
+ x2("a(?~(?~)).", "abcdefghijklmnopqrstuvwxyz", 0, 26); // !!!
+ x2("/\\*(?~\\*/)\\*/", "/* */ */", 0, 5);
+ x2("(?~\\w+)zzzzz", "zzzzz", 0, 5);
+ x2("(?~\\w*)zzzzz", "zzzzz", 0, 5);
+ x2("(?~A.C|B)", "ABC", 0, 0);
+ x2("(?~XYZ|ABC)a", "ABCa", 1, 4);
+ x2("(?~XYZ|ABC)a", "aABCa", 0, 1);
+ x2("<[^>]*>(?~[<>])</[^>]*>", "<a>vvv</a> <b> </b>", 0, 10);
+ x2("(?~ab)", "ccc\ndab", 0, 5);
+ x2("(?m:(?~ab))", "ccc\ndab", 0, 5);
+ x2("(?-m:(?~ab))", "ccc\ndab", 0, 5);
+ x2("(?~abc)xyz", "xyz012345678901234567890123456789abc", 0, 3);
+
+ // absent with expr
+ x2("(?~|78|\\d*)", "123456789", 0, 6);
+ x2("(?~|def|(?:abc|de|f){0,100})", "abcdedeabcfdefabc", 0, 11);
+ x2("(?~|ab|.*)", "ccc\nddd", 0, 3);
+ x2("(?~|ab|\\O*)", "ccc\ndab", 0, 5);
+ x2("(?~|ab|\\O{2,10})", "ccc\ndab", 0, 5);
+ x2("(?~|ab|\\O{1,10})", "ab", 1, 2);
+ n("(?~|ab|\\O{2,10})", "ab");
+ x2("(?~|abc|\\O{1,10})", "abc", 1, 3);
+ x2("(?~|ab|\\O{5,10})|abc", "abc", 0, 3);
+ x2("(?~|ab|\\O{1,10})", "cccccccccccab", 0, 10);
+ x2("(?~|aaa|)", "aaa", 0, 0);
+ x2("(?~||a*)", "aaaaaa", 0, 0);
+ x2("(?~||a*?)", "aaaaaa", 0, 0);
+ x2("(a)(?~|b|\\1)", "aaaaaa", 0, 2);
+ x2("(a)(?~|bb|(?:a\\1)*)", "aaaaaa", 0, 5);
+ x2("(b|c)(?~|abac|(?:a\\1)*)", "abababacabab", 1, 4);
+ n("(?~|c|a*+)a", "aaaaa");
+ x2("(?~|aaaaa|a*+)", "aaaaa", 0, 0);
+ x2("(?~|aaaaaa|a*+)b", "aaaaaab", 1, 7);
+ x2("(?~|abcd|(?>))", "zzzabcd", 0, 0);
+ x2("(?~|abc|a*?)", "aaaabc", 0, 0);
+
+ // absent range cutter
+ x2("(?~|abc)a*", "aaaaaabc", 0, 5);
+ x2("(?~|abc)a*z|aaaaaabc", "aaaaaabc", 0, 8);
+ x2("(?~|aaaaaa)a*", "aaaaaa", 0, 0);
+ x2("(?~|abc)aaaa|aaaabc", "aaaabc", 0, 6);
+ x2("(?>(?~|abc))aaaa|aaaabc", "aaaabc", 0, 6);
+ x2("(?~|)a", "a", 0, 1);
+ n("(?~|a)a", "a");
+ x2("(?~|a)(?~|)a", "a", 0, 1);
+ x2("(?~|a).*(?~|)a", "bbbbbbbbbbbbbbbbbbbba", 0, 21);
+ x2("(?~|abc).*(xyz|pqr)(?~|)abc", "aaaaxyzaaapqrabc", 0, 16);
+ x2("(?~|abc).*(xyz|pqr)(?~|)abc", "aaaaxyzaaaabcpqrabc", 11, 19);
+ n("\\A(?~|abc).*(xyz|pqrabc)(?~|)abc", "aaaaxyzaaaabcpqrabcabc");
+
+ x2("", "ã‚", 0, 0);
+ x2("ã‚", "ã‚", 0, 3);
+ n("ã„", "ã‚");
+ x2("ã†ã†", "ã†ã†", 0, 6);
+ x2("ã‚ã„ã†", "ã‚ã„ã†", 0, 9);
+ x2("ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“", "ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“", 0, 105);
+ x2("ã‚", "ã„ã‚", 3, 6);
+ x2("ã„ã†", "ã‚ã„ã†", 3, 9);
+ x2("\\xca\\xb8", "\xca\xb8", 0, 2);
+ x2(".", "ã‚", 0, 3);
+ x2("..", "ã‹ã", 0, 6);
+ x2("\\w", "ãŠ", 0, 3);
+ n("\\W", "ã‚");
+ x2("[\\W]", "ã†$", 3, 4);
+ x2("\\S", "ã", 0, 3);
+ x2("\\S", "æ¼¢", 0, 3);
+ x2("\\b", "æ°— ", 0, 0);
+ x2("\\b", " ã»", 1, 1);
+ x2("\\B", "ã›ã ", 3, 3);
+ x2("\\B", "ㆠ", 4, 4);
+ x2("\\B", " ã„", 0, 0);
+ x2("[ãŸã¡]", "ã¡", 0, 3);
+ n("[ãªã«]", "ã¬");
+ x2("[ã†-ãŠ]", "ãˆ", 0, 3);
+ n("[^ã‘]", "ã‘");
+ x2("[\\w]", "ã­", 0, 3);
+ n("[\\d]", "ãµ");
+ x2("[\\D]", "ã¯", 0, 3);
+ n("[\\s]", "ã");
+ x2("[\\S]", "ã¸", 0, 3);
+ x2("[\\w\\d]", "よ", 0, 3);
+ x2("[\\w\\d]", " よ", 3, 6);
+ n("\\w鬼車", " 鬼車");
+ x2("鬼\\W車", "鬼 車", 0, 7);
+ x2("ã‚.ã„.ã†", "ã‚ã‚ã„ã„ã†", 0, 15);
+ x2(".\\wã†\\W..ãž", "ãˆã†ã† ã†ãžãž", 0, 19);
+ x2("\\s\\wã“ã“ã“", " ã“ã“ã“ã“", 0, 13);
+ x2("ã‚ã‚.ã‘", "ã‚ã‚ã‘ã‘", 0, 12);
+ n(".ã„", "ã„ãˆ");
+ x2(".ãŠ", "ãŠãŠ", 0, 6);
+ x2("^ã‚", "ã‚", 0, 3);
+ x2("^ã‚€$", "ã‚€", 0, 3);
+ x2("^\\w$", "ã«", 0, 3);
+ x2("^\\wã‹ããã‘ã“$", "zã‹ããã‘ã“", 0, 16);
+ x2("^\\w...ã†ãˆãŠ$", "zã‚ã„ã†ã†ãˆãŠ", 0, 19);
+ x2("\\w\\w\\s\\WãŠãŠãŠ\\d", "a㊠ãŠãŠãŠ4", 0, 16);
+ x2("\\AãŸã¡ã¤", "ãŸã¡ã¤", 0, 9);
+ x2("ã‚€ã‚ã‚‚\\Z", "ã‚€ã‚ã‚‚", 0, 9);
+ x2("ã‹ãã\\z", "ã‹ãã", 0, 9);
+ x2("ã‹ãã\\Z", "ã‹ãã\n", 0, 9);
+ x2("\\Gã½ã´", "ã½ã´", 0, 6);
+ n("\\Gãˆ", "ã†ãˆãŠ");
+ n("ã¨ã¦\\G", "ã¨ã¦");
+ n("ã¾ã¿\\A", "ã¾ã¿");
+ n("ã¾\\Aã¿", "ã¾ã¿");
+ x2("(?=ã›)ã›", "ã›", 0, 3);
+ n("(?=ã†).", "ã„");
+ x2("(?!ã†)ã‹", "ã‹", 0, 3);
+ n("(?!ã¨)ã‚", "ã¨");
+ x2("(?i:ã‚)", "ã‚", 0, 3);
+ x2("(?i:ã¶ã¹)", "ã¶ã¹", 0, 6);
+ n("(?i:ã„)", "ã†");
+ x2("(?m:よ.)", "よ\n", 0, 4);
+ x2("(?m:.ã‚)", "ã¾\nã‚", 3, 7);
+ x2("ã‚?", "", 0, 0);
+ x2("変?", "化", 0, 0);
+ x2("変?", "変", 0, 3);
+ x2("é‡*", "", 0, 0);
+ x2("é‡*", "é‡", 0, 3);
+ x2("å­*", "å­å­å­", 0, 9);
+ x2("馬*", "鹿馬馬馬馬", 0, 0);
+ n("å±±+", "");
+ x2("æ²³+", "æ²³", 0, 3);
+ x2("時+", "時時時時", 0, 12);
+ x2("ãˆ+", "ãˆãˆã†ã†ã†", 0, 6);
+ x2("ã†+", "ãŠã†ã†ã†ã†", 3, 15);
+ x2(".?", "ãŸ", 0, 3);
+ x2(".*", "ã±ã´ã·ãº", 0, 12);
+ x2(".+", "ã‚", 0, 3);
+ x2(".+", "ã„ã†ãˆã‹\n", 0, 12);
+ x2("ã‚|ã„", "ã‚", 0, 3);
+ x2("ã‚|ã„", "ã„", 0, 3);
+ x2("ã‚ã„|ã„ã†", "ã‚ã„", 0, 6);
+ x2("ã‚ã„|ã„ã†", "ã„ã†", 0, 6);
+ x2("ã‚’(?:ã‹ã|ãã)", "ã‚’ã‹ã", 0, 9);
+ x2("ã‚’(?:ã‹ã|ãã)ã‘", "ã‚’ããã‘", 0, 12);
+ x2("ã‚ã„|(?:ã‚ã†|ã‚ã‚’)", "ã‚ã‚’", 0, 6);
+ x2("ã‚|ã„|ã†", "ãˆã†", 3, 6);
+ x2("ã‚|ã„|ã†ãˆ|ãŠã‹ã|ã|ã‘ã“ã•|ã—ã™ã›|ã|ãŸã¡|ã¤ã¦ã¨ãªã«|ã¬ã­", "ã—ã™ã›", 0, 9);
+ n("ã‚|ã„|ã†ãˆ|ãŠã‹ã|ã|ã‘ã“ã•|ã—ã™ã›|ã|ãŸã¡|ã¤ã¦ã¨ãªã«|ã¬ã­", "ã™ã›");
+ x2("ã‚|^ã‚", "ã¶ã‚", 3, 6);
+ x2("ã‚|^ã‚’", "ã‚’ã‚", 0, 3);
+ x2("鬼|\\G車", "ã‘車鬼", 6, 9);
+ x2("鬼|\\G車", "車鬼", 0, 3);
+ x2("鬼|\\A車", "b車鬼", 4, 7);
+ x2("鬼|\\A車", "車", 0, 3);
+ x2("鬼|車\\Z", "車鬼", 3, 6);
+ x2("鬼|車\\Z", "車", 0, 3);
+ x2("鬼|車\\Z", "車\n", 0, 3);
+ x2("鬼|車\\z", "車鬼", 3, 6);
+ x2("鬼|車\\z", "車", 0, 3);
+ x2("\\w|\\s", "ãŠ", 0, 3);
+ x2("\\w|%", "%ãŠ", 0, 1);
+ x2("\\w|[&$]", "ã†&", 0, 3);
+ x2("[ã„-ã‘]", "ã†", 0, 3);
+ x2("[ã„-ã‘]|[^ã‹-ã“]", "ã‚", 0, 3);
+ x2("[ã„-ã‘]|[^ã‹-ã“]", "ã‹", 0, 3);
+ x2("[^ã‚]", "\n", 0, 1);
+ x2("(?:ã‚|[ã†-ã])|ã„ã‚’", "ã†ã‚’", 0, 3);
+ x2("(?:ã‚|[ã†-ã])|ã„ã‚’", "ã„ã‚’", 0, 6);
+ x2("ã‚ã„ã†|(?=ã‘ã‘)..ã»", "ã‘ã‘ã»", 0, 9);
+ x2("ã‚ã„ã†|(?!ã‘ã‘)..ã»", "ã‚ã„ã»", 0, 9);
+ x2("(?=ã‚’ã‚)..ã‚|(?=ã‚’ã‚’)..ã‚", "ã‚’ã‚’ã‚", 0, 9);
+ x2("(?<=ã‚|ã„ã†)ã„", "ã„ã†ã„", 6, 9);
+ n("(?>ã‚|ã‚ã„ãˆ)ã†", "ã‚ã„ãˆã†");
+ x2("(?>ã‚ã„ãˆ|ã‚)ã†", "ã‚ã„ãˆã†", 0, 12);
+ x2("ã‚?|ã„", "ã‚", 0, 3);
+ x2("ã‚?|ã„", "ã„", 0, 0);
+ x2("ã‚?|ã„", "", 0, 0);
+ x2("ã‚*|ã„", "ã‚ã‚", 0, 6);
+ x2("ã‚*|ã„*", "ã„ã‚", 0, 0);
+ x2("ã‚*|ã„*", "ã‚ã„", 0, 3);
+ x2("[aã‚]*|ã„*", "aã‚ã„ã„ã„", 0, 4);
+ x2("ã‚+|ã„*", "", 0, 0);
+ x2("ã‚+|ã„*", "ã„ã„ã„", 0, 9);
+ x2("ã‚+|ã„*", "ã‚ã„ã„ã„", 0, 3);
+ x2("ã‚+|ã„*", "aã‚ã„ã„ã„", 0, 0);
+ n("ã‚+|ã„+", "");
+ x2("(ã‚|ã„)?", "ã„", 0, 3);
+ x2("(ã‚|ã„)*", "ã„ã‚", 0, 6);
+ x2("(ã‚|ã„)+", "ã„ã‚ã„", 0, 9);
+ x2("(ã‚ã„|ã†ã‚)+", "ã†ã‚ã‚ã„ã†ãˆ", 0, 12);
+ x2("(ã‚ã„|ã†ãˆ)+", "ã†ã‚ã‚ã„ã†ãˆ", 6, 18);
+ x2("(ã‚ã„|ã†ã‚)+", "ã‚ã‚ã„ã†ã‚", 3, 15);
+ x2("(ã‚ã„|ã†ã‚)+", "ã‚ã„ã‚’ã†ã‚", 0, 6);
+ x2("(ã‚ã„|ã†ã‚)+", "$$zzzzã‚ã„ã‚’ã†ã‚", 6, 12);
+ x2("(ã‚|ã„ã‚ã„)+", "ã‚ã„ã‚ã„ã‚", 0, 15);
+ x2("(ã‚|ã„ã‚ã„)+", "ã„ã‚", 3, 6);
+ x2("(ã‚|ã„ã‚ã„)+", "ã„ã‚ã‚ã‚ã„ã‚", 3, 12);
+ x2("(?:ã‚|ã„)(?:ã‚|ã„)", "ã‚ã„", 0, 6);
+ x2("(?:ã‚*|ã„*)(?:ã‚*|ã„*)", "ã‚ã‚ã‚ã„ã„ã„", 0, 9);
+ x2("(?:ã‚*|ã„*)(?:ã‚+|ã„+)", "ã‚ã‚ã‚ã„ã„ã„", 0, 18);
+ x2("(?:ã‚+|ã„+){2}", "ã‚ã‚ã‚ã„ã„ã„", 0, 18);
+ x2("(?:ã‚+|ã„+){1,2}", "ã‚ã‚ã‚ã„ã„ã„", 0, 18);
+ x2("(?:ã‚+|\\Aã„*)ã†ã†", "ã†ã†", 0, 6);
+ n("(?:ã‚+|\\Aã„*)ã†ã†", "ã‚ã„ã†ã†");
+ x2("(?:^ã‚+|ã„+)*ã†", "ã‚ã‚ã„ã„ã„ã‚ã„ã†", 18, 24);
+ x2("(?:^ã‚+|ã„+)*ã†", "ã‚ã‚ã„ã„ã„ã„ã†", 0, 21);
+ x2("ã†{0,}", "ã†ã†ã†ã†", 0, 12);
+ x2("ã‚|(?i)c", "C", 0, 1);
+ x2("(?i)c|ã‚", "C", 0, 1);
+ x2("(?i:ã‚)|a", "a", 0, 1);
+ n("(?i:ã‚)|a", "A");
+ x2("[ã‚ã„ã†]?", "ã‚ã„ã†", 0, 3);
+ x2("[ã‚ã„ã†]*", "ã‚ã„ã†", 0, 9);
+ x2("[^ã‚ã„ã†]*", "ã‚ã„ã†", 0, 0);
+ n("[^ã‚ã„ã†]+", "ã‚ã„ã†");
+ x2("ã‚?\?", "ã‚ã‚ã‚", 0, 0);
+ x2("ã„ã‚?\?ã„", "ã„ã‚ã„", 0, 9);
+ x2("ã‚*?", "ã‚ã‚ã‚", 0, 0);
+ x2("ã„ã‚*?", "ã„ã‚ã‚", 0, 3);
+ x2("ã„ã‚*?ã„", "ã„ã‚ã‚ã„", 0, 12);
+ x2("ã‚+?", "ã‚ã‚ã‚", 0, 3);
+ x2("ã„ã‚+?", "ã„ã‚ã‚", 0, 6);
+ x2("ã„ã‚+?ã„", "ã„ã‚ã‚ã„", 0, 12);
+ x2("(?:天?)?\?", "天", 0, 0);
+ x2("(?:天?\?)?", "天", 0, 0);
+ x2("(?:夢?)+?", "夢夢夢", 0, 3);
+ x2("(?:風+)?\?", "風風風", 0, 0);
+ x2("(?:雪+)?\?霜", "雪雪雪霜", 0, 12);
+ x2("(?:ã‚ã„)?{2}", "", 0, 0);
+ x2("(?:鬼車)?{2}", "鬼車鬼車鬼", 0, 12);
+ x2("(?:鬼車)*{0}", "鬼車鬼車鬼", 0, 0);
+ x2("(?:鬼車){3,}", "鬼車鬼車鬼車鬼車", 0, 24);
+ n("(?:鬼車){3,}", "鬼車鬼車");
+ x2("(?:鬼車){2,4}", "鬼車鬼車鬼車", 0, 18);
+ x2("(?:鬼車){2,4}", "鬼車鬼車鬼車鬼車鬼車", 0, 24);
+ x2("(?:鬼車){2,4}?", "鬼車鬼車鬼車鬼車鬼車", 0, 12);
+ x2("(?:鬼車){,}", "鬼車{,}", 0, 9);
+ x2("(?:ã‹ãã)+?{2}", "ã‹ããã‹ããã‹ãã", 0, 18);
+ x3("(ç«)", "ç«", 0, 3, 1);
+ x3("(ç«æ°´)", "ç«æ°´", 0, 6, 1);
+ x2("((時間))", "時間", 0, 6);
+ x3("((風水))", "風水", 0, 6, 1);
+ x3("((昨日))", "昨日", 0, 6, 2);
+ x3("((((((((((((((((((((é‡å­))))))))))))))))))))", "é‡å­", 0, 6, 20);
+ x3("(ã‚ã„)(ã†ãˆ)", "ã‚ã„ã†ãˆ", 0, 6, 1);
+ x3("(ã‚ã„)(ã†ãˆ)", "ã‚ã„ã†ãˆ", 6, 12, 2);
+ x3("()(ã‚)ã„ã†(ãˆãŠã‹)ããã‘ã“", "ã‚ã„ã†ãˆãŠã‹ããã‘ã“", 9, 18, 3);
+ x3("(()(ã‚)ã„ã†(ãˆãŠã‹)ããã‘ã“)", "ã‚ã„ã†ãˆãŠã‹ããã‘ã“", 9, 18, 4);
+ x3(".*(フォ)ン・マ(ン()シュタ)イン", "フォン・マンシュタイン", 15, 27, 2);
+ x2("(^ã‚)", "ã‚", 0, 3);
+ x3("(ã‚)|(ã‚)", "ã„ã‚", 3, 6, 1);
+ x3("(^ã‚)|(ã‚)", "ã„ã‚", 3, 6, 2);
+ x3("(ã‚?)", "ã‚ã‚ã‚", 0, 3, 1);
+ x3("(ã¾*)", "ã¾ã¾ã¾", 0, 9, 1);
+ x3("(ã¨*)", "", 0, 0, 1);
+ x3("(ã‚‹+)", "ã‚‹ã‚‹ã‚‹ã‚‹ã‚‹ã‚‹ã‚‹", 0, 21, 1);
+ x3("(ãµ+|ã¸*)", "ãµãµãµã¸ã¸", 0, 9, 1);
+ x3("(ã‚+|ã„?)", "ã„ã„ã„ã‚ã‚", 0, 3, 1);
+ x3("(ã‚ã„ã†)?", "ã‚ã„ã†", 0, 9, 1);
+ x3("(ã‚ã„ã†)*", "ã‚ã„ã†", 0, 9, 1);
+ x3("(ã‚ã„ã†)+", "ã‚ã„ã†", 0, 9, 1);
+ x3("(ã•ã—ã™|ã‚ã„ã†)+", "ã‚ã„ã†", 0, 9, 1);
+ x3("([ãªã«ã¬][ã‹ãã]|ã‹ãã)+", "ã‹ãã", 0, 9, 1);
+ x3("((?i:ã‚ã„ã†))", "ã‚ã„ã†", 0, 9, 1);
+ x3("((?m:ã‚.ã†))", "ã‚\nã†", 0, 7, 1);
+ x3("((?=ã‚ã‚“)ã‚)", "ã‚ã‚“ã„", 0, 3, 1);
+ x3("ã‚ã„ã†|(.ã‚ã„ãˆ)", "ã‚“ã‚ã„ãˆ", 0, 12, 1);
+ x3("ã‚*(.)", "ã‚ã‚ã‚ã‚ã‚“", 12, 15, 1);
+ x3("ã‚*?(.)", "ã‚ã‚ã‚ã‚ã‚“", 0, 3, 1);
+ x3("ã‚*?(ã‚“)", "ã‚ã‚ã‚ã‚ã‚“", 12, 15, 1);
+ x3("[ã„ã†ãˆ]ã‚*(.)", "ãˆã‚ã‚ã‚ã‚ã‚“", 15, 18, 1);
+ x3("(\\Aã„ã„)ã†ã†", "ã„ã„ã†ã†", 0, 6, 1);
+ n("(\\Aã„ã„)ã†ã†", "ã‚“ã„ã„ã†ã†");
+ x3("(^ã„ã„)ã†ã†", "ã„ã„ã†ã†", 0, 6, 1);
+ n("(^ã„ã„)ã†ã†", "ã‚“ã„ã„ã†ã†");
+ x3("ã‚ã‚(ã‚‹ã‚‹$)", "ã‚ã‚ã‚‹ã‚‹", 6, 12, 1);
+ n("ã‚ã‚(ã‚‹ã‚‹$)", "ã‚ã‚ã‚‹ã‚‹ã‚‹");
+ x2("(ç„¡)\\1", "ç„¡ç„¡", 0, 6);
+ n("(ç„¡)\\1", "ç„¡æ­¦");
+ x2("(空?)\\1", "空空", 0, 6);
+ x2("(空?\?)\\1", "空空", 0, 0);
+ x2("(空*)\\1", "空空空空空", 0, 12);
+ x3("(空*)\\1", "空空空空空", 0, 6, 1);
+ x2("ã‚(ã„*)\\1", "ã‚ã„ã„ã„ã„", 0, 15);
+ x2("ã‚(ã„*)\\1", "ã‚ã„", 0, 3);
+ x2("(ã‚*)(ã„*)\\1\\2", "ã‚ã‚ã‚ã„ã„ã‚ã‚ã‚ã„ã„", 0, 30);
+ x2("(ã‚*)(ã„*)\\2", "ã‚ã‚ã‚ã„ã„ã„ã„", 0, 21);
+ x3("(ã‚*)(ã„*)\\2", "ã‚ã‚ã‚ã„ã„ã„ã„", 9, 15, 2);
+ x2("(((((((ã½*)ãº))))))ã´\\7", "ã½ã½ã½ãºã´ã½ã½ã½", 0, 24);
+ x3("(((((((ã½*)ãº))))))ã´\\7", "ã½ã½ã½ãºã´ã½ã½ã½", 0, 9, 7);
+ x2("(ã¯)(ã²)(ãµ)\\2\\1\\3", "ã¯ã²ãµã²ã¯ãµ", 0, 18);
+ x2("([ã-ã‘])\\1", "ãã", 0, 6);
+ x2("(\\w\\d\\s)\\1", "ã‚5 ã‚5 ", 0, 10);
+ n("(\\w\\d\\s)\\1", "ã‚5 ã‚5");
+ x2("(誰?|[ã‚-ã†]{3})\\1", "誰?誰?", 0, 12);
+ x2("...(誰?|[ã‚-ã†]{3})\\1", "ã‚aã‚誰?誰?", 0, 19);
+ x2("(誰?|[ã‚-ã†]{3})\\1", "ã†ã„ã†ã†ã„ã†", 0, 18);
+ x2("(^ã“)\\1", "ã“ã“", 0, 6);
+ n("(^ã‚€)\\1", "ã‚むむ");
+ n("(ã‚$)\\1", "ã‚ã‚");
+ n("(ã‚ã„\\Z)\\1", "ã‚ã„");
+ x2("(ã‚*\\Z)\\1", "ã‚", 3, 3);
+ x2(".(ã‚*\\Z)\\1", "ã„ã‚", 3, 6);
+ x3("(.(ã‚„ã„ゆ)\\2)", "zã‚„ã„ゆやã„ゆ", 0, 19, 1);
+ x3("(.(..\\d.)\\2)", "ã‚12341234", 0, 11, 1);
+ x2("((?i:ã‚vãš))\\1", "ã‚vãšã‚vãš", 0, 14);
+ x2("(?<æ„šã‹>変|\\(\\g<æ„šã‹>\\))", "((((((変))))))", 0, 15);
+ x2("\\A(?:\\g<阿_1>|\\g<云_2>|\\z終了 (?<阿_1>観|自\\g<云_2>自)(?<云_2>在|è©è–©\\g<阿_1>è©è–©))$", "è©è–©è‡ªè©è–©è‡ªåœ¨è‡ªè©è–©è‡ªè©è–©", 0, 39);
+ x2("[[ã²ãµ]]", "ãµ", 0, 3);
+ x2("[[ã„ãŠã†]ã‹]", "ã‹", 0, 3);
+ n("[[^ã‚]]", "ã‚");
+ n("[^[ã‚]]", "ã‚");
+ x2("[^[^ã‚]]", "ã‚", 0, 3);
+ x2("[[ã‹ãã]&&ãã]", "ã", 0, 3);
+ n("[[ã‹ãã]&&ãã]", "ã‹");
+ n("[[ã‹ãã]&&ãã]", "ã‘");
+ x2("[ã‚-ã‚“&&ã„-ã‚’&&ã†-ã‚‘]", "ã‚‘", 0, 3);
+ n("[^ã‚-ã‚“&&ã„-ã‚’&&ã†-ã‚‘]", "ã‚‘");
+ x2("[[^ã‚&&ã‚]&&ã‚-ã‚“]", "ã„", 0, 3);
+ n("[[^ã‚&&ã‚]&&ã‚-ã‚“]", "ã‚");
+ x2("[[^ã‚-ã‚“&&ã„ã†ãˆãŠ]&&[^ã†-ã‹]]", "ã", 0, 3);
+ n("[[^ã‚-ã‚“&&ã„ã†ãˆãŠ]&&[^ã†-ã‹]]", "ã„");
+ x2("[^[^ã‚ã„ã†]&&[^ã†ãˆãŠ]]", "ã†", 0, 3);
+ x2("[^[^ã‚ã„ã†]&&[^ã†ãˆãŠ]]", "ãˆ", 0, 3);
+ n("[^[^ã‚ã„ã†]&&[^ã†ãˆãŠ]]", "ã‹");
+ x2("[ã‚-&&-ã‚]", "-", 0, 1);
+ x2("[^[^a-zã‚ã„ã†]&&[^bcdefgã†ãˆãŠ]q-w]", "ãˆ", 0, 3);
+ x2("[^[^a-zã‚ã„ã†]&&[^bcdefgã†ãˆãŠ]g-w]", "f", 0, 1);
+ x2("[^[^a-zã‚ã„ã†]&&[^bcdefgã†ãˆãŠ]g-w]", "g", 0, 1);
+ n("[^[^a-zã‚ã„ã†]&&[^bcdefgã†ãˆãŠ]g-w]", "2");
+ x2("a<b>ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰<\\/b>", "a<b>ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰</b>", 0, 44);
+ x2(".<b>ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰<\\/b>", "a<b>ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰</b>", 0, 44);
+ x2("\\n?\\z", "ã“ã‚“ã«ã¡ã¯", 15, 15);
+
+ x2("\\p{Hiragana}", "ã´", 0, 3);
+ n("\\P{Hiragana}", "ã´");
+
+ x2("\\p{Word}", "ã“", 0, 3);
+ n("\\p{^Word}", "ã“");
+ x2("[\\p{Word}]", "ã“", 0, 3);
+ n("[\\p{^Word}]", "ã“");
+ n("[^\\p{Word}]", "ã“");
+ x2("[^\\p{^Word}]", "ã“", 0, 3);
+ x2("[^\\p{^Word}&&\\p{ASCII}]", "ã“", 0, 3);
+ x2("[^\\p{^Word}&&\\p{ASCII}]", "a", 0, 1);
+ n("[^\\p{^Word}&&\\p{ASCII}]", "#");
+ x2("[^[\\p{^Word}]&&[\\p{ASCII}]]", "ã“", 0, 3);
+ x2("[^[\\p{ASCII}]&&[^\\p{Word}]]", "ã“", 0, 3);
+ n("[[\\p{ASCII}]&&[^\\p{Word}]]", "ã“");
+ x2("[^[\\p{^Word}]&&[^\\p{ASCII}]]", "ã“", 0, 3);
+ x2("[^\\x{104a}]", "ã“", 0, 3);
+ x2("[^\\p{^Word}&&[^\\x{104a}]]", "ã“", 0, 3);
+ x2("[^[\\p{^Word}]&&[^\\x{104a}]]", "ã“", 0, 3);
+ n("[^\\p{Word}||[^\\x{104a}]]", "ã“");
+
+ x2("\\p{^Cntrl}", "ã“", 0, 3);
+ n("\\p{Cntrl}", "ã“");
+ x2("[\\p{^Cntrl}]", "ã“", 0, 3);
+ n("[\\p{Cntrl}]", "ã“");
+ n("[^\\p{^Cntrl}]", "ã“");
+ x2("[^\\p{Cntrl}]", "ã“", 0, 3);
+ x2("[^\\p{Cntrl}&&\\p{ASCII}]", "ã“", 0, 3);
+ x2("[^\\p{Cntrl}&&\\p{ASCII}]", "a", 0, 1);
+ n("[^\\p{^Cntrl}&&\\p{ASCII}]", "#");
+ x2("[^[\\p{^Cntrl}]&&[\\p{ASCII}]]", "ã“", 0, 3);
+ x2("[^[\\p{ASCII}]&&[^\\p{Cntrl}]]", "ã“", 0, 3);
+ n("[[\\p{ASCII}]&&[^\\p{Cntrl}]]", "ã“");
+ n("[^[\\p{^Cntrl}]&&[^\\p{ASCII}]]", "ã“");
+ n("[^\\p{^Cntrl}&&[^\\x{104a}]]", "ã“");
+ n("[^[\\p{^Cntrl}]&&[^\\x{104a}]]", "ã“");
+ n("[^\\p{Cntrl}||[^\\x{104a}]]", "ã“");
+
+ x2("(?-W:\\p{Word})", "ã“", 0, 3);
+ n("(?W:\\p{Word})", "ã“");
+ x2("(?W:\\p{Word})", "k", 0, 1);
+ x2("(?-W:[[:word:]])", "ã“", 0, 3);
+ n("(?W:[[:word:]])", "ã“");
+ x2("(?-D:\\p{Digit})", "3", 0, 3);
+ n("(?D:\\p{Digit})", "3");
+ x2("(?-S:\\p{Space})", "\xc2\x85", 0, 2);
+ n("(?S:\\p{Space})", "\xc2\x85");
+ x2("(?-P:\\p{Word})", "ã“", 0, 3);
+ n("(?P:\\p{Word})", "ã“");
+ x2("(?-W:\\w)", "ã“", 0, 3);
+ n("(?W:\\w)", "ã“");
+ x2("(?-W:\\w)", "k", 0, 1);
+ x2("(?W:\\w)", "k", 0, 1);
+ n("(?-W:\\W)", "ã“");
+ x2("(?W:\\W)", "ã“", 0, 3);
+ n("(?-W:\\W)", "k");
+ n("(?W:\\W)", "k");
+
+ x2("(?-W:\\b)", "ã“", 0, 0);
+ n("(?W:\\b)", "ã“");
+ x2("(?-W:\\b)", "h", 0, 0);
+ x2("(?W:\\b)", "h", 0, 0);
+ n("(?-W:\\B)", "ã“");
+ x2("(?W:\\B)", "ã“", 0, 0);
+ n("(?-W:\\B)", "h");
+ n("(?W:\\B)", "h");
+ x2("(?-P:\\b)", "ã“", 0, 0);
+ n("(?P:\\b)", "ã“");
+ x2("(?-P:\\b)", "h", 0, 0);
+ x2("(?P:\\b)", "h", 0, 0);
+ n("(?-P:\\B)", "ã“");
+ x2("(?P:\\B)", "ã“", 0, 0);
+ n("(?-P:\\B)", "h");
+ n("(?P:\\B)", "h");
+
+ x2("\\p{InBasicLatin}", "\x41", 0, 1);
+ //x2("\\p{Grapheme_Cluster_Break_Regional_Indicator}", "\xF0\x9F\x87\xA9", 0, 4);
+ //n("\\p{Grapheme_Cluster_Break_Regional_Indicator}", "\xF0\x9F\x87\xA5");
+
+ // extended grapheme cluster
+
+ // CR + LF
+ n(".\\y\\O", "\x0d\x0a");
+ x2(".\\Y\\O", "\x0d\x0a", 0, 2);
+
+ // LATIN SMALL LETTER G, COMBINING DIAERESIS
+ n("^.\\y.$", "\x67\xCC\x88");
+ x2(".\\Y.", "\x67\xCC\x88", 0, 3);
+ x2("\\y.\\Y.\\y", "\x67\xCC\x88", 0, 3);
+ // HANGUL SYLLABLE GAG
+ x2("\\y.\\y", "\xEA\xB0\x81", 0, 3);
+ // HANGUL CHOSEONG KIYEOK, HANGUL JUNGSEONG A, HANGUL JONGSEONG KIYEOK
+ x2("^.\\Y.\\Y.$", "\xE1\x84\x80\xE1\x85\xA1\xE1\x86\xA8", 0, 9);
+ n("^.\\y.\\Y.$", "\xE1\x84\x80\xE1\x85\xA1\xE1\x86\xA8");
+ // TAMIL LETTER NA, TAMIL VOWEL SIGN I,
+ x2(".\\Y.", "\xE0\xAE\xA8\xE0\xAE\xBF", 0, 6);
+ n(".\\y.", "\xE0\xAE\xA8\xE0\xAE\xBF");
+ // THAI CHARACTER KO KAI, THAI CHARACTER SARA AM
+ x2(".\\Y.", "\xE0\xB8\x81\xE0\xB8\xB3", 0, 6);
+ n(".\\y.", "\xE0\xB8\x81\xE0\xB8\xB3");
+ // DEVANAGARI LETTER SSA, DEVANAGARI VOWEL SIGN I
+ x2(".\\Y.", "\xE0\xA4\xB7\xE0\xA4\xBF", 0, 6);
+ n(".\\y.", "\xE0\xA4\xB7\xE0\xA4\xBF");
+
+ // CR + LF
+ n("^\\X\\X$", "\x0d\x0a");
+ x2("^\\X$", "\x0d\x0a", 0, 2);
+ // LATIN SMALL LETTER G, COMBINING DIAERESIS
+ n("^\\X\\X.$", "\x67\xCC\x88");
+ x2("^\\X$", "\x67\xCC\x88", 0, 3);
+ // HANGUL CHOSEONG KIYEOK, HANGUL JUNGSEONG A, HANGUL JONGSEONG KIYEOK
+ x2("^\\X$", "\xE1\x84\x80\xE1\x85\xA1\xE1\x86\xA8", 0, 9);
+ n("^\\X\\X\\X$", "\xE1\x84\x80\xE1\x85\xA1\xE1\x86\xA8");
+ // TAMIL LETTER NA, TAMIL VOWEL SIGN I,
+ x2("^\\X$", "\xE0\xAE\xA8\xE0\xAE\xBF", 0, 6);
+ n("\\X\\X", "\xE0\xAE\xA8\xE0\xAE\xBF");
+ // THAI CHARACTER KO KAI, THAI CHARACTER SARA AM
+ x2("^\\X$", "\xE0\xB8\x81\xE0\xB8\xB3", 0, 6);
+ n("\\X\\X", "\xE0\xB8\x81\xE0\xB8\xB3");
+ // DEVANAGARI LETTER SSA, DEVANAGARI VOWEL SIGN I
+ x2("^\\X$", "\xE0\xA4\xB7\xE0\xA4\xBF", 0, 6);
+ n("\\X\\X", "\xE0\xA4\xB7\xE0\xA4\xBF");
+
+ n("^\\X.$", "\xE0\xAE\xA8\xE0\xAE\xBF");
+
+
+ e("(?<abc>\\g<abc>)", "zzzz", ONIGERR_NEVER_ENDING_RECURSION);
+ e("(?<=(?>abc))", "abc", ONIGERR_INVALID_LOOK_BEHIND_PATTERN);
+
+ fprintf(stdout,
+ "\nRESULT SUCC: %d, FAIL: %d, ERROR: %d (by Oniguruma %s)\n",
+ nsucc, nfail, nerror, onig_version());
+
+ onig_region_free(region, 1);
+ onig_end();
+
+ return ((nfail == 0 && nerror == 0) ? 0 : -1);
+}
diff --git a/test/testc.c b/test/testc.c
index 222c9cd..1a60c8a 100644
--- a/test/testc.c
+++ b/test/testc.c
@@ -639,6 +639,7 @@ extern int main(int argc, char* argv[])
x2("(?~ab)", "ccc\ndab", 0, 5);
x2("(?m:(?~ab))", "ccc\ndab", 0, 5);
x2("(?-m:(?~ab))", "ccc\ndab", 0, 5);
+ x2("(?~abc)xyz", "xyz012345678901234567890123456789abc", 0, 3);
// absent with expr
x2("(?~|78|\\d*)", "123456789", 0, 6);
@@ -661,8 +662,9 @@ extern int main(int argc, char* argv[])
x2("(?~|aaaaa|a*+)", "aaaaa", 0, 0);
x2("(?~|aaaaaa|a*+)b", "aaaaaab", 1, 7);
x2("(?~|abcd|(?>))", "zzzabcd", 0, 0);
+ x2("(?~|abc|a*?)", "aaaabc", 0, 0);
- // absent range cutter
+ // absent stopper
x2("(?~|abc)a*", "aaaaaabc", 0, 5);
x2("(?~|abc)a*z|aaaaaabc", "aaaaaabc", 0, 8);
x2("(?~|aaaaaa)a*", "aaaaaa", 0, 0);
@@ -672,6 +674,21 @@ extern int main(int argc, char* argv[])
n("(?~|a)a", "a");
x2("(?~|a)(?~|)a", "a", 0, 1);
x2("(?~|a).*(?~|)a", "bbbbbbbbbbbbbbbbbbbba", 0, 21);
+ x2("(?~|abc).*(xyz|pqr)(?~|)abc", "aaaaxyzaaapqrabc", 0, 16);
+ x2("(?~|abc).*(xyz|pqr)(?~|)abc", "aaaaxyzaaaabcpqrabc", 11, 19);
+ n("\\A(?~|abc).*(xyz|pqrabc)(?~|)abc", "aaaaxyzaaaabcpqrabcabc");
+ x2("(?~|a)(?~|)c|ab|a|", "ab", 0, 2);
+ x2("(?~|a)((?~|)c|ab|a|)", "ab", 0, 0);
+ x2("(?~|a)((?>(?~|))c|ab|a|)", "ab", 0, 0);
+
+ // extended grapheme cluster
+
+ // CR + LF
+ n(".\\y\\O", "\x0d\x0a");
+ x2(".\\Y\\O", "\x0d\x0a", 0, 2);
+ n("\\X\\X", "\x0d\x0a");
+ x2("^\\X$", "\x0d\x0a", 0, 2);
+ x2("^\\X\\X\\X$", "ab\x0d\x0a", 0, 4);
/*
< ifndef IGNORE_EUC_JP >
diff --git a/test/testu.c b/test/testu.c
index 6ff3a10..d037194 100644
--- a/test/testu.c
+++ b/test/testu.c
@@ -915,6 +915,46 @@ extern int main(int argc, char* argv[])
x2("\000\\\000R\000\000", "\x20\x29\000\000", 0, 2);
n("\000\\\000R\000\000", "\x20\x2a\000\000");
+ x2("\000\\\000w\000\000", "\x01\x00\000\000", 0, 2);
+ n("\000\\\000W\000\000", "\x01\x00\000\000");
+ x2("\000\\\000d\000\000", "\x0b\x66\000\000", 0, 2);
+ n("\000\\\000D\000\000", "\x0b\x66\000\000");
+ x2("\000\\\000s\000\000", "\x20\x01\000\000", 0, 2);
+ n("\000\\\000S\000\000", "\x20\x01\000\000");
+ x2("\000\\\000b\000\000", "\x00\x20\x01\x00\000\000", 2, 2);
+ n("\000\\\000B\000\000", "\x01\x00\000\000");
+ x2("\000\\\000B\000\000", "\x00\x20\000\000", 0, 0);
+ x2("\000[\000[\000:\000g\000r\000a\000p\000h\000:\000]\000]\000\000",
+ "\x0d\x30\000\000", 0, 2);
+ n("\000[\000[\000:\000g\000r\000a\000p\000h\000:\000]\000]\000\000",
+ "\x0a\x00\000\000");
+
+ // extended grapheme cluster
+
+ // CR + LF
+ n("\000.\000\\\000y\000\\\000O\000\000", "\x00\x0d\x00\x0a\000\000");
+ x2("\000.\000\\\000Y\000\\\000O\000\000", "\x00\x0d\x00\x0a\000\000", 0, 4);
+
+ // LATIN SMALL LETTER G, COMBINING DIAERESIS
+ n("\000^\000.\000\\\000y\000.\000$\000\000", "\x00\x67\x03\x08\000\000");
+ x2("\000.\000\\\000Y\000.\000\000", "\x00\x67\x03\x08\000\000", 0, 4);
+ x2("\000\\\000y\000.\000\\\000Y\000.\000\\\000y\000\000",
+ "\x00\x67\x03\x08\000\000", 0, 4);
+ // TAMIL LETTER NA, TAMIL VOWEL SIGN I,
+ x2("\000.\000\\\000Y\000.\000\000", "\x0B\xA8\x0B\xBF\000\000", 0, 4);
+ n("\000.\000\\\000y\000.\000\000", "\x0B\xA8\x0B\xBF\000\000");
+
+ // CR + LF
+ n("\000\\\000X\000\\\000X\000\000", "\x00\x0d\x00\x0a\000\000");
+ x2("\000^\000\\\000X\000$\000\000", "\x00\x0d\x00\x0a\000\000", 0, 4);
+ // LATIN SMALL LETTER G, COMBINING DIAERESIS
+ n("\000\\\000X\000\\\000X\000\000", "\x00\x67\x03\x08\000\000");
+ x2("\000^\000\\\000X\000$\000\000", "\x00\x67\x03\x08\000\000", 0, 4);
+ // TAMIL LETTER NA, TAMIL VOWEL SIGN I,
+ x2("\000^\000\\\000X\000$\000\000", "\x0B\xA8\x0B\xBF\000\000", 0, 4);
+ n("\000\\\000X\000\\\000X\000\000", "\x0B\xA8\x0B\xBF\000\000");
+
+
fprintf(stdout,
"\nRESULT SUCC: %d, FAIL: %d, ERROR: %d (by Oniguruma %s)\n",
nsucc, nfail, nerror, onig_version());