]> granicus.if.org Git - onig/commitdiff
reimplement Unicode case folding
authorK.Kosako <kkosako0@gmail.com>
Sat, 16 Apr 2016 14:46:57 +0000 (23:46 +0900)
committerK.Kosako <kkosako0@gmail.com>
Sat, 16 Apr 2016 14:46:57 +0000 (23:46 +0900)
18 files changed:
src/Makefile.am
src/gperf_fold_key_conv.py [new file with mode: 0755]
src/gperf_unfold_key_conv.py [new file with mode: 0755]
src/make_unicode_fold.sh [new file with mode: 0755]
src/make_unicode_fold_data.py [new file with mode: 0755]
src/regenc.c
src/regenc.h
src/unicode.c
src/unicode_fold1_key.c [new file with mode: 0644]
src/unicode_fold2_key.c [new file with mode: 0644]
src/unicode_fold3_key.c [new file with mode: 0644]
src/unicode_fold_data.c [new file with mode: 0644]
src/unicode_unfold_key.c [new file with mode: 0644]
src/utf16_be.c
src/utf16_le.c
src/utf32_be.c
src/utf32_le.c
src/utf8.c

index 2cd421b24a73606e4d92b2186cebfc55375b67f7..ed989c4f4b88ef8065f9f5afa86e92188d2ec813 100644 (file)
@@ -12,6 +12,10 @@ libonig_la_SOURCES = regint.h regparse.h regenc.h st.h \
        regenc.c regsyntax.c regtrav.c regversion.c st.c \
        regposix.c regposerr.c \
        unicode.c unicode_prop.c \
+       unicode_unfold_key.c \
+       unicode_fold1_key.c \
+       unicode_fold2_key.c \
+       unicode_fold3_key.c \
        ascii.c utf8.c \
        utf16_be.c utf16_le.c \
        utf32_be.c utf32_le.c \
diff --git a/src/gperf_fold_key_conv.py b/src/gperf_fold_key_conv.py
new file mode 100755 (executable)
index 0000000..bdf57ad
--- /dev/null
@@ -0,0 +1,67 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+
+import sys
+import re
+
+REG_LINE_GPERF = re.compile('#line .+gperf"')
+REG_HASH_FUNC = re.compile('hash\s*\(register\s+const\s+char\s*\*\s*str,\s*register\s+unsigned\s+int\s+len\s*\)')
+REG_STR_AT = re.compile('str\[(\d+)\]')
+REG_RETURN_TYPE = re.compile('^const\s+int\s*\*')
+REG_FOLD_KEY = re.compile('unicode_fold(\d)_key\s*\(register\s+const\s+char\s*\*\s*str,\s*register\s+unsigned\s+int\s+len\)')
+REG_ENTRY = re.compile('\{".*?",\s*(-?\d+)\s*\}')
+REG_IF_LEN = re.compile('if\s*\(\s*len\s*<=\s*MAX_WORD_LENGTH.+')
+REG_GET_HASH = re.compile('(?:register\s+)?(?:unsigned\s+)?int\s+key\s*=\s*hash\s*\(str,\s*len\);')
+REG_GET_CODE = re.compile('(?:register\s+)?const\s+char\s*\*\s*s\s*=\s*wordlist\[key\]\.name;')
+REG_CODE_CHECK = re.compile('if\s*\(\*str\s*==\s*\*s\s*&&\s*!strncmp.+\)')
+REG_RETURN_WL = re.compile('return\s+&wordlist\[key\];')
+REG_RETURN_0 = re.compile('return 0;')
+
+def parse_line(s, key_len):
+    s = s.rstrip()
+
+    r = re.sub(REG_LINE_GPERF, '', s)
+    if r != s: return r
+    r = re.sub(REG_HASH_FUNC, 'hash(OnigCodePoint codes[])', s)
+    if r != s: return r
+    r = re.sub(REG_STR_AT, 'onig_codes_byte_at(codes, \\1)', s)
+    if r != s: return r
+    r = re.sub(REG_RETURN_TYPE, 'int', s)
+    if r != s: return r
+    r = re.sub(REG_FOLD_KEY, 'unicode_fold\\1_key(OnigCodePoint codes[])', s)
+    if r != s: return r
+    r = re.sub(REG_ENTRY, '\\1', s)
+    if r != s: return r
+    r = re.sub(REG_IF_LEN, 'if (0 == 0)', s)
+    if r != s: return r
+    r = re.sub(REG_GET_HASH, 'int key = hash(codes);', s)
+    if r != s: return r
+    r = re.sub(REG_GET_CODE, 'int index = wordlist[key];', s)
+    if r != s: return r
+    r = re.sub(REG_CODE_CHECK,
+               'if (index >= 0 && onig_codes_cmp(codes, OnigUnicodeFolds%d + index, %d) == 0)' % (key_len, key_len), s)
+    if r != s: return r
+
+    r = re.sub(REG_RETURN_WL, 'return index;', s)
+    if r != s: return r
+    r = re.sub(REG_RETURN_0, 'return -1;', s)
+    if r != s: return r
+
+    return s
+
+def parse_file(f, key_len):
+    print "/* This file was converted by gperf_fold_key_conv.py\n      from gperf output file. */"
+
+    line = f.readline()
+    while line:
+        s = parse_line(line, key_len)
+        print s
+        line = f.readline()
+
+
+# main
+argv = sys.argv
+argc = len(argv)
+
+key_len = int(argv[1])
+parse_file(sys.stdin, key_len)
diff --git a/src/gperf_unfold_key_conv.py b/src/gperf_unfold_key_conv.py
new file mode 100755 (executable)
index 0000000..dcd8587
--- /dev/null
@@ -0,0 +1,55 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+
+import sys
+import re
+
+REG_LINE_GPERF = re.compile('#line .+gperf"')
+REG_HASH_FUNC = re.compile('hash\s*\(register\s+const\s+char\s*\*\s*str,\s*register\s+unsigned\s+int\s+len\s*\)')
+REG_STR_AT = re.compile('str\[(\d+)\]')
+REG_UNFOLD_KEY = re.compile('unicode_unfold_key\s*\(register\s+const\s+char\s*\*\s*str,\s*register\s+unsigned\s+int\s+len\)')
+REG_ENTRY = re.compile('\{".+?",\s*/\*(.+?)\*/\s*(-?\d+),\s*(\d)\}')
+REG_EMPTY_ENTRY = re.compile('\{"",\s*(-?\d+),\s*(\d)\}')
+REG_IF_LEN = re.compile('if\s*\(\s*len\s*<=\s*MAX_WORD_LENGTH.+')
+REG_GET_HASH = re.compile('(?:register\s+)?(?:unsigned\s+)?int\s+key\s*=\s*hash\s*\(str,\s*len\);')
+REG_GET_CODE = re.compile('(?:register\s+)?const\s+char\s*\*\s*s\s*=\s*wordlist\[key\]\.name;')
+REG_CODE_CHECK = re.compile('if\s*\(\*str\s*==\s*\*s\s*&&\s*!strncmp.+\)')
+
+def parse_line(s):
+    s = s.rstrip()
+
+    r = re.sub(REG_LINE_GPERF, '', s)
+    if r != s: return r
+    r = re.sub(REG_HASH_FUNC, 'hash(OnigCodePoint codes[])', s)
+    if r != s: return r
+    r = re.sub(REG_STR_AT, 'onig_codes_byte_at(codes, \\1)', s)
+    if r != s: return r
+    r = re.sub(REG_UNFOLD_KEY, 'unicode_unfold_key(OnigCodePoint code)', s)
+    if r != s: return r
+    r = re.sub(REG_ENTRY, '{\\1, \\2, \\3}', s)
+    if r != s: return r
+    r = re.sub(REG_EMPTY_ENTRY, '{0xffffffff, \\1, \\2}', s)
+    if r != s: return r
+    r = re.sub(REG_IF_LEN, 'if (0 == 0)', s)
+    if r != s: return r
+    r = re.sub(REG_GET_HASH, 'int key = hash(&code);', s)
+    if r != s: return r
+    r = re.sub(REG_GET_CODE, 'OnigCodePoint gcode = wordlist[key].code;', s)
+    if r != s: return r
+    r = re.sub(REG_CODE_CHECK, 'if (code == gcode)', s)
+    if r != s: return r
+
+    return s
+
+def parse_file(f):
+    print "/* This file was converted by gperf_unfold_key_conv.py\n      from gperf output file. */"
+
+    line = f.readline()
+    while line:
+        s = parse_line(line)
+        print s
+        line = f.readline()
+
+
+# main
+parse_file(sys.stdin)
diff --git a/src/make_unicode_fold.sh b/src/make_unicode_fold.sh
new file mode 100755 (executable)
index 0000000..ddf1dd4
--- /dev/null
@@ -0,0 +1,22 @@
+#!/bin/sh
+
+TMP=gperf.tmp
+GPERF_OPT='-n -C -T -c -t -j1 -L ANSI-C '
+
+./make_unicode_fold_data.py > unicode_fold_data.c
+
+gperf ${GPERF_OPT} -F,-1,0 -N unicode_unfold_key unicode_unfold_key.gperf > ${TMP}
+./gperf_unfold_key_conv.py < ${TMP} > unicode_unfold_key.c
+
+gperf ${GPERF_OPT} -F,-1 -N unicode_fold1_key unicode_fold1_key.gperf > ${TMP}
+./gperf_fold_key_conv.py 1 < ${TMP} > unicode_fold1_key.c
+
+gperf ${GPERF_OPT} -F,-1 -N unicode_fold2_key unicode_fold2_key.gperf > ${TMP}
+./gperf_fold_key_conv.py 2 < ${TMP} > unicode_fold2_key.c
+
+gperf ${GPERF_OPT} -F,-1 -N unicode_fold3_key unicode_fold3_key.gperf > ${TMP}
+./gperf_fold_key_conv.py 3 < ${TMP} > unicode_fold3_key.c
+
+rm -f ${TMP}
+
+exit 0
diff --git a/src/make_unicode_fold_data.py b/src/make_unicode_fold_data.py
new file mode 100755 (executable)
index 0000000..8510b97
--- /dev/null
@@ -0,0 +1,292 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+
+import sys
+import re
+import codecs
+
+SOURCE_FILE = 'CaseFolding.txt'
+GPERF_UNFOLD_KEY_FILE = 'unicode_unfold_key.gperf'
+GPERF_FOLD_KEY_FILES  = ['unicode_fold1_key.gperf', 'unicode_fold2_key.gperf', 'unicode_fold3_key.gperf']
+
+
+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*)(.*)")
+
+FOLDS = {}
+TURKISH_FOLDS = {}
+LOCALE_FOLDS  = {}
+
+UNFOLDS = {}
+TURKISH_UNFOLDS = {}
+LOCALE_UNFOLDS  = {}
+
+class Entry:
+    def __init__(self, fold):
+        self.fold = fold
+        self.unfolds = []
+        self.fold_len = len(fold)
+        self.index = -1
+        self.comment = None
+
+def fold_key(fold):
+    sfold = map(lambda i: "%06x" % i, fold)
+    return ':'.join(sfold)
+
+def form16(x, size):
+    form = "0x%06x" if x > 0xffff else "0x%04x"
+    s = form % x
+    rem = size - len(s)
+    if rem > 0:
+        s = ' ' * rem + s
+
+    return s
+
+def form3bytes(x):
+    x0 = x & 0xff
+    x1 = (x>>8)  & 0xff
+    x2 = (x>>16) & 0xff
+    return "\\x%02x\\x%02x\\x%02x" % (x2, x1, x0)
+
+def parse_line(s):
+    if len(s) == 0:
+        return False
+    if s[0] == '#':
+        return False
+
+    m = LINE_REG.match(s)
+    if m is None:
+        print >> sys.stderr, s.encode(ENCODING)
+        sys.exit(-1)
+
+    s_unfold = m.group(1)
+    s_type   = m.group(2)
+    s_fold   = m.group(3)
+    comment  = m.group(6)
+
+    if s_type == 'S':
+        return False;
+
+    unfold = int(s_unfold, 16)
+    f1     = int(s_fold, 16)
+    fold = [f1]
+    if m.group(4) is not None:
+        f2 = int(m.group(4), 16)
+        fold.append(f2)
+        if m.group(5) is not None:
+            f3 = int(m.group(5), 16)
+            fold.append(f3)
+
+    if s_type == 'T':
+        dic   = TURKISH_FOLDS
+        undic = TURKISH_UNFOLDS
+    else:
+        dic   = FOLDS
+        undic = UNFOLDS
+
+    key = fold_key(fold)
+    e = dic.get(key, None)
+    if e is None:
+        e = Entry(fold)
+        e.comment = comment
+        dic[key] = e
+
+    e.unfolds.append(unfold)
+
+    if undic.get(unfold, None) is not None:
+        print >> sys.stderr, ("unfold dup: 0x%04x %s\n" % (unfold, s_type))
+    undic[unfold] = e
+
+    return True
+
+def parse_file(f):
+    line = f.readline()
+    while line:
+        s = line.strip()
+        parse_line(s)
+        line = f.readline()
+
+def make_locale():
+    for unfold, te in TURKISH_UNFOLDS.items():
+        e = UNFOLDS.get(unfold, None)
+        if e is None:
+            continue
+
+        fkey = fold_key(e.fold)
+        if len(e.unfolds) == 1:
+            del FOLDS[fkey]
+        else:
+            e.unfolds.remove(unfold)
+            e = Entry(e.fold)
+            e.unfolds.append(unfold)
+
+        LOCALE_FOLDS[fkey] = e
+        LOCALE_UNFOLDS[unfold] = e
+        del UNFOLDS[unfold]
+
+def output_typedef(f):
+    s = """\
+typedef unsigned long OnigCodePoint;
+"""
+    print >> f, s
+
+def divide_by_fold_len(d):
+    l = d.items()
+    l1 = filter(lambda (k,e):e.fold_len == 1, l)
+    l2 = filter(lambda (k,e):e.fold_len == 2, l)
+    l3 = filter(lambda (k,e):e.fold_len == 3, l)
+    sl1 = sorted(l1, key=lambda (k,e):k)
+    sl2 = sorted(l2, key=lambda (k,e):k)
+    sl3 = sorted(l3, key=lambda (k,e):k)
+    return (sl1, sl2, sl3)
+
+def output_comment(f, s):
+    f.write(" /* %s */" % s)
+
+def output_data_n1(f, n, fn, c, out_comment):
+    for k, e in fn:
+        e.index = c
+        if out_comment and n > 1 and e.comment is not None:
+            output_comment(f, e.comment)
+            print >> f, ''
+
+        f.write(' ')
+        f.write("/*%4d*/ " % c)
+        for i in range(0, n):
+            s = form16(e.fold[i], 8)
+            f.write(" %s," % s)
+
+        usize = len(e.unfolds)
+        f.write("  %d," % usize)
+        for u in e.unfolds:
+            s = form16(u, 8)
+            f.write(" %s," % s)
+
+        if out_comment and n == 1 and e.comment is not None:
+            if len(e.comment) < 35:
+                s = e.comment
+            else:
+                s = e.comment[0:33] + '..'
+
+            output_comment(f, s)
+
+        f.write("\n")
+        c += n + 1 + usize
+
+    return c
+
+def output_data_n(f, name, n, fn, lfn, out_comment):
+    print >> f, "OnigCodePoint %s%d[] = {" % (name, n)
+    c = 0
+    c = output_data_n1(f, n,  fn, c, out_comment)
+    print >> f, "#define FOLDS%d_NORMAL_END_INDEX   %d" % (n, c)
+    print >> f, " /* ----- LOCALE ----- */"
+    c = output_data_n1(f, n, lfn, c, out_comment)
+    print >> f, "#define FOLDS%d_END_INDEX   %d" % (n, c)
+    print >> f, "};"
+
+def output_fold_data(f, name, out_comment):
+    f1, f2, f3 = divide_by_fold_len(FOLDS)
+    lf1, lf2, lf3 = divide_by_fold_len(LOCALE_FOLDS)
+
+    output_data_n(f, name, 1, f1, lf1, out_comment)
+    print >> f, ''
+    output_data_n(f, name, 2, f2, lf2, out_comment)
+    print >> f, ''
+    output_data_n(f, name, 3, f3, lf3, out_comment)
+    print >> f, ''
+
+def output_macros(f, name):
+    print >> f, "#define FOLDS1_FOLD(i)         (%s1 + (i))" % name
+    print >> f, "#define FOLDS2_FOLD(i)         (%s2 + (i))" % name
+    print >> f, "#define FOLDS3_FOLD(i)         (%s3 + (i))" % name
+
+    print >> f, "#define FOLDS1_UNFOLDS_NUM(i)  %s1[(i)+1]" % name
+    print >> f, "#define FOLDS2_UNFOLDS_NUM(i)  %s2[(i)+2]" % name
+    print >> f, "#define FOLDS3_UNFOLDS_NUM(i)  %s3[(i)+3]" % name
+
+    print >> f, "#define FOLDS1_UNFOLDS(i)      (%s1 + (i) + 2)" % name
+    print >> f, "#define FOLDS2_UNFOLDS(i)      (%s2 + (i) + 3)" % name
+    print >> f, "#define FOLDS3_UNFOLDS(i)      (%s3 + (i) + 4)" % name
+
+    print >> f, "#define FOLDS1_NEXT_INDEX(i)   ((i) + 2 + %s1[(i)+1])" % name
+    print >> f, "#define FOLDS2_NEXT_INDEX(i)   ((i) + 3 + %s1[(i)+2])" % name
+    print >> f, "#define FOLDS3_NEXT_INDEX(i)   ((i) + 4 + %s1[(i)+3])" % name
+
+def output_fold_source(f, out_comment):
+    print >> f, "/* This file was generated by make_unicode_fold_data.py. */"
+    print >> f, '#include "regenc.h"'
+    print >> f, ''
+    #output_macros(f, DataName)
+    print >> f, ''
+    #output_typedef(f)
+    output_fold_data(f, DataName, out_comment)
+
+def output_gperf_unfold_key(f):
+    head = """\
+%{
+/* This gperf source file was generated by make_unicode_fold_data.py */
+#include <string.h>
+#include "regenc.h"
+%}
+struct ByUnfoldKey {
+  OnigCodePoint code;
+  int   index;
+  int   fold_len;
+};
+%%
+"""
+    f.write(head)
+    UNFOLDS.update(LOCALE_UNFOLDS)
+    l = UNFOLDS.items()
+    sl = sorted(l, key=lambda (k,e):(e.fold_len, e.index))
+    for k, e in sl:
+        f.write('"%s", /*0x%04x*/ %4d, %d\n' %
+                (form3bytes(k), k, e.index, e.fold_len))
+
+    print >> f, '%%'
+
+def output_gperf_fold_key(f, key_len):
+    head = """\
+%{
+/* This gperf source file was generated by make_unicode_fold_data.py */
+#include <string.h>
+#include "regenc.h"
+%}
+int
+%%
+"""
+    f.write(head)
+    l = FOLDS.items()
+    l = filter(lambda (k,e):e.fold_len == key_len, l)
+    sl = sorted(l, key=lambda (k,e):e.index)
+    for k, e in sl:
+        skey = ''.join(map(lambda i: form3bytes(i), e.fold))
+        f.write('"%s", %4d\n' % (skey, e.index))
+
+    print >> f, '%%'
+
+def output_gperf_source():
+   with open(GPERF_UNFOLD_KEY_FILE, 'w') as f:
+       output_gperf_unfold_key(f)
+
+   FOLDS.update(LOCALE_FOLDS)
+
+   for i in range(1, 4):
+       with open(GPERF_FOLD_KEY_FILES[i-1], 'w') as f:
+           output_gperf_fold_key(f, i)
+
+
+## main ##
+with open(SOURCE_FILE, 'r') as f:
+    parse_file(f)
+
+make_locale()
+
+out_comment = True
+output_fold_source(sys.stdout, out_comment)
+
+output_gperf_source()
index e48010c46d667dd8e7816face8a974429c2d8d88..6c33d144f409655a91cff4397b04e94f308042fb 100644 (file)
@@ -836,3 +836,30 @@ onigenc_with_ascii_strncmp(OnigEncoding enc, const UChar* p, const UChar* end,
   }
   return 0;
 }
+
+extern int
+onig_codes_cmp(OnigCodePoint a[], OnigCodePoint b[], int n)
+{
+  int i;
+
+  for (i = 0; i < n; i++) {
+    if (a[i] != b[i])
+      return -1;
+  }
+
+  return 0;
+}
+
+extern int
+onig_codes_byte_at(OnigCodePoint codes[], int at)
+{
+  int index;
+  int b;
+  OnigCodePoint code;
+
+  index = at / 3;
+  b     = at % 3;
+  code = codes[index];
+
+  return ((code >> ((2 - b) * 8)) & 0xff);
+}
index 2016b5a91995a73d1aa96d5eb7f772119645fb90..e591d648362221dd82a7626eb56008f7d49ed97d 100644 (file)
@@ -156,12 +156,54 @@ ONIG_EXTERN int onigenc_unicode_ctype_code_range P_((int ctype, const OnigCodePo
 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_unicode_initialize P_((void));
 
 
 #define UTF16_IS_SURROGATE_FIRST(c)    (((c) & 0xfc) == 0xd8)
 #define UTF16_IS_SURROGATE_SECOND(c)   (((c) & 0xfc) == 0xdc)
 
+/* from unicode generated codes */
+#define FOLDS1_FOLD(i)         (OnigUnicodeFolds1 + (i))
+#define FOLDS2_FOLD(i)         (OnigUnicodeFolds2 + (i))
+#define FOLDS3_FOLD(i)         (OnigUnicodeFolds3 + (i))
+#define FOLDS1_UNFOLDS_NUM(i)  (OnigUnicodeFolds1[(i)+1])
+#define FOLDS2_UNFOLDS_NUM(i)  (OnigUnicodeFolds2[(i)+2])
+#define FOLDS3_UNFOLDS_NUM(i)  (OnigUnicodeFolds3[(i)+3])
+#define FOLDS1_UNFOLDS(i)      (OnigUnicodeFolds1 + (i) + 2)
+#define FOLDS2_UNFOLDS(i)      (OnigUnicodeFolds2 + (i) + 3)
+#define FOLDS3_UNFOLDS(i)      (OnigUnicodeFolds3 + (i) + 4)
+#define FOLDS1_NEXT_INDEX(i)   ((i) + 2 + OnigUnicodeFolds1[(i)+1])
+#define FOLDS2_NEXT_INDEX(i)   ((i) + 3 + OnigUnicodeFolds2[(i)+2])
+#define FOLDS3_NEXT_INDEX(i)   ((i) + 4 + OnigUnicodeFolds3[(i)+3])
+
+#define FOLDS_FOLD_ADDR_BUK(buk, addr) do {\
+  if ((buk)->fold_len == 1)\
+    addr = OnigUnicodeFolds1 + (buk)->index;\
+  else if ((buk)->fold_len == 2)\
+    addr = OnigUnicodeFolds2 + (buk)->index;\
+  else if ((buk)->fold_len == 3)\
+    addr = OnigUnicodeFolds3 + (buk)->index;\
+} while (0)
+
+extern OnigCodePoint OnigUnicodeFolds1[];
+extern OnigCodePoint OnigUnicodeFolds2[];
+extern OnigCodePoint OnigUnicodeFolds3[];
+
+struct ByUnfoldKey {
+  OnigCodePoint code;
+  int   index;
+  int   fold_len;
+};
+
+extern const struct ByUnfoldKey* unicode_unfold_key(OnigCodePoint code);
+extern int unicode_fold1_key(OnigCodePoint code[]);
+extern int unicode_fold2_key(OnigCodePoint code[]);
+extern int unicode_fold3_key(OnigCodePoint code[]);
+
+extern int onig_codes_cmp(OnigCodePoint a[], OnigCodePoint b[], int n);
+extern int onig_codes_byte_at(OnigCodePoint code[], int at);
+
+
+
 #define ONIGENC_ISO_8859_1_TO_LOWER_CASE(c) \
   OnigEncISO_8859_1_ToLowerCaseTable[c]
 #define ONIGENC_ISO_8859_1_TO_UPPER_CASE(c) \
index 887c32011de8cdc270e767ce0d24571a3bafd9a7..f6c25cfc51635ec4549ece2d5a4a8a277b3abb73 100644 (file)
@@ -8523,1977 +8523,12 @@ static const OnigCodePoint CR_Yi[] = {
 
 #endif /* USE_UNICODE_PROPERTIES */
 
-
-typedef struct {
-  int n;
-  OnigCodePoint code[3];
-} CodePointList3;
-
-typedef struct {
-  OnigCodePoint  from;
-  CodePointList3 to;
-} CaseFold_11_Type;
-
-typedef struct {
-  OnigCodePoint  from;
-  CodePointList3 to;
-} CaseUnfold_11_Type;
-
-typedef struct {
-  int n;
-  OnigCodePoint code[2];
-} CodePointList2;
-
-typedef struct {
-  OnigCodePoint  from[2];
-  CodePointList2 to;
-} CaseUnfold_12_Type;
-
-typedef struct {
-  OnigCodePoint  from[3];
-  CodePointList2 to;
-} CaseUnfold_13_Type;
-
-static const CaseFold_11_Type CaseFold[] = {
- { 0x0041, {1, {0x0061}}},
- { 0x0042, {1, {0x0062}}},
- { 0x0043, {1, {0x0063}}},
- { 0x0044, {1, {0x0064}}},
- { 0x0045, {1, {0x0065}}},
- { 0x0046, {1, {0x0066}}},
- { 0x0047, {1, {0x0067}}},
- { 0x0048, {1, {0x0068}}},
- { 0x004a, {1, {0x006a}}},
- { 0x004b, {1, {0x006b}}},
- { 0x004c, {1, {0x006c}}},
- { 0x004d, {1, {0x006d}}},
- { 0x004e, {1, {0x006e}}},
- { 0x004f, {1, {0x006f}}},
- { 0x0050, {1, {0x0070}}},
- { 0x0051, {1, {0x0071}}},
- { 0x0052, {1, {0x0072}}},
- { 0x0053, {1, {0x0073}}},
- { 0x0054, {1, {0x0074}}},
- { 0x0055, {1, {0x0075}}},
- { 0x0056, {1, {0x0076}}},
- { 0x0057, {1, {0x0077}}},
- { 0x0058, {1, {0x0078}}},
- { 0x0059, {1, {0x0079}}},
- { 0x005a, {1, {0x007a}}},
- { 0x00b5, {1, {0x03bc}}},
- { 0x00c0, {1, {0x00e0}}},
- { 0x00c1, {1, {0x00e1}}},
- { 0x00c2, {1, {0x00e2}}},
- { 0x00c3, {1, {0x00e3}}},
- { 0x00c4, {1, {0x00e4}}},
- { 0x00c5, {1, {0x00e5}}},
- { 0x00c6, {1, {0x00e6}}},
- { 0x00c7, {1, {0x00e7}}},
- { 0x00c8, {1, {0x00e8}}},
- { 0x00c9, {1, {0x00e9}}},
- { 0x00ca, {1, {0x00ea}}},
- { 0x00cb, {1, {0x00eb}}},
- { 0x00cc, {1, {0x00ec}}},
- { 0x00cd, {1, {0x00ed}}},
- { 0x00ce, {1, {0x00ee}}},
- { 0x00cf, {1, {0x00ef}}},
- { 0x00d0, {1, {0x00f0}}},
- { 0x00d1, {1, {0x00f1}}},
- { 0x00d2, {1, {0x00f2}}},
- { 0x00d3, {1, {0x00f3}}},
- { 0x00d4, {1, {0x00f4}}},
- { 0x00d5, {1, {0x00f5}}},
- { 0x00d6, {1, {0x00f6}}},
- { 0x00d8, {1, {0x00f8}}},
- { 0x00d9, {1, {0x00f9}}},
- { 0x00da, {1, {0x00fa}}},
- { 0x00db, {1, {0x00fb}}},
- { 0x00dc, {1, {0x00fc}}},
- { 0x00dd, {1, {0x00fd}}},
- { 0x00de, {1, {0x00fe}}},
- { 0x00df, {2, {0x0073, 0x0073}}},
- { 0x0100, {1, {0x0101}}},
- { 0x0102, {1, {0x0103}}},
- { 0x0104, {1, {0x0105}}},
- { 0x0106, {1, {0x0107}}},
- { 0x0108, {1, {0x0109}}},
- { 0x010a, {1, {0x010b}}},
- { 0x010c, {1, {0x010d}}},
- { 0x010e, {1, {0x010f}}},
- { 0x0110, {1, {0x0111}}},
- { 0x0112, {1, {0x0113}}},
- { 0x0114, {1, {0x0115}}},
- { 0x0116, {1, {0x0117}}},
- { 0x0118, {1, {0x0119}}},
- { 0x011a, {1, {0x011b}}},
- { 0x011c, {1, {0x011d}}},
- { 0x011e, {1, {0x011f}}},
- { 0x0120, {1, {0x0121}}},
- { 0x0122, {1, {0x0123}}},
- { 0x0124, {1, {0x0125}}},
- { 0x0126, {1, {0x0127}}},
- { 0x0128, {1, {0x0129}}},
- { 0x012a, {1, {0x012b}}},
- { 0x012c, {1, {0x012d}}},
- { 0x012e, {1, {0x012f}}},
- { 0x0132, {1, {0x0133}}},
- { 0x0134, {1, {0x0135}}},
- { 0x0136, {1, {0x0137}}},
- { 0x0139, {1, {0x013a}}},
- { 0x013b, {1, {0x013c}}},
- { 0x013d, {1, {0x013e}}},
- { 0x013f, {1, {0x0140}}},
- { 0x0141, {1, {0x0142}}},
- { 0x0143, {1, {0x0144}}},
- { 0x0145, {1, {0x0146}}},
- { 0x0147, {1, {0x0148}}},
- { 0x0149, {2, {0x02bc, 0x006e}}},
- { 0x014a, {1, {0x014b}}},
- { 0x014c, {1, {0x014d}}},
- { 0x014e, {1, {0x014f}}},
- { 0x0150, {1, {0x0151}}},
- { 0x0152, {1, {0x0153}}},
- { 0x0154, {1, {0x0155}}},
- { 0x0156, {1, {0x0157}}},
- { 0x0158, {1, {0x0159}}},
- { 0x015a, {1, {0x015b}}},
- { 0x015c, {1, {0x015d}}},
- { 0x015e, {1, {0x015f}}},
- { 0x0160, {1, {0x0161}}},
- { 0x0162, {1, {0x0163}}},
- { 0x0164, {1, {0x0165}}},
- { 0x0166, {1, {0x0167}}},
- { 0x0168, {1, {0x0169}}},
- { 0x016a, {1, {0x016b}}},
- { 0x016c, {1, {0x016d}}},
- { 0x016e, {1, {0x016f}}},
- { 0x0170, {1, {0x0171}}},
- { 0x0172, {1, {0x0173}}},
- { 0x0174, {1, {0x0175}}},
- { 0x0176, {1, {0x0177}}},
- { 0x0178, {1, {0x00ff}}},
- { 0x0179, {1, {0x017a}}},
- { 0x017b, {1, {0x017c}}},
- { 0x017d, {1, {0x017e}}},
- { 0x017f, {1, {0x0073}}},
- { 0x0181, {1, {0x0253}}},
- { 0x0182, {1, {0x0183}}},
- { 0x0184, {1, {0x0185}}},
- { 0x0186, {1, {0x0254}}},
- { 0x0187, {1, {0x0188}}},
- { 0x0189, {1, {0x0256}}},
- { 0x018a, {1, {0x0257}}},
- { 0x018b, {1, {0x018c}}},
- { 0x018e, {1, {0x01dd}}},
- { 0x018f, {1, {0x0259}}},
- { 0x0190, {1, {0x025b}}},
- { 0x0191, {1, {0x0192}}},
- { 0x0193, {1, {0x0260}}},
- { 0x0194, {1, {0x0263}}},
- { 0x0196, {1, {0x0269}}},
- { 0x0197, {1, {0x0268}}},
- { 0x0198, {1, {0x0199}}},
- { 0x019c, {1, {0x026f}}},
- { 0x019d, {1, {0x0272}}},
- { 0x019f, {1, {0x0275}}},
- { 0x01a0, {1, {0x01a1}}},
- { 0x01a2, {1, {0x01a3}}},
- { 0x01a4, {1, {0x01a5}}},
- { 0x01a6, {1, {0x0280}}},
- { 0x01a7, {1, {0x01a8}}},
- { 0x01a9, {1, {0x0283}}},
- { 0x01ac, {1, {0x01ad}}},
- { 0x01ae, {1, {0x0288}}},
- { 0x01af, {1, {0x01b0}}},
- { 0x01b1, {1, {0x028a}}},
- { 0x01b2, {1, {0x028b}}},
- { 0x01b3, {1, {0x01b4}}},
- { 0x01b5, {1, {0x01b6}}},
- { 0x01b7, {1, {0x0292}}},
- { 0x01b8, {1, {0x01b9}}},
- { 0x01bc, {1, {0x01bd}}},
- { 0x01c4, {1, {0x01c6}}},
- { 0x01c5, {1, {0x01c6}}},
- { 0x01c7, {1, {0x01c9}}},
- { 0x01c8, {1, {0x01c9}}},
- { 0x01ca, {1, {0x01cc}}},
- { 0x01cb, {1, {0x01cc}}},
- { 0x01cd, {1, {0x01ce}}},
- { 0x01cf, {1, {0x01d0}}},
- { 0x01d1, {1, {0x01d2}}},
- { 0x01d3, {1, {0x01d4}}},
- { 0x01d5, {1, {0x01d6}}},
- { 0x01d7, {1, {0x01d8}}},
- { 0x01d9, {1, {0x01da}}},
- { 0x01db, {1, {0x01dc}}},
- { 0x01de, {1, {0x01df}}},
- { 0x01e0, {1, {0x01e1}}},
- { 0x01e2, {1, {0x01e3}}},
- { 0x01e4, {1, {0x01e5}}},
- { 0x01e6, {1, {0x01e7}}},
- { 0x01e8, {1, {0x01e9}}},
- { 0x01ea, {1, {0x01eb}}},
- { 0x01ec, {1, {0x01ed}}},
- { 0x01ee, {1, {0x01ef}}},
- { 0x01f0, {2, {0x006a, 0x030c}}},
- { 0x01f1, {1, {0x01f3}}},
- { 0x01f2, {1, {0x01f3}}},
- { 0x01f4, {1, {0x01f5}}},
- { 0x01f6, {1, {0x0195}}},
- { 0x01f7, {1, {0x01bf}}},
- { 0x01f8, {1, {0x01f9}}},
- { 0x01fa, {1, {0x01fb}}},
- { 0x01fc, {1, {0x01fd}}},
- { 0x01fe, {1, {0x01ff}}},
- { 0x0200, {1, {0x0201}}},
- { 0x0202, {1, {0x0203}}},
- { 0x0204, {1, {0x0205}}},
- { 0x0206, {1, {0x0207}}},
- { 0x0208, {1, {0x0209}}},
- { 0x020a, {1, {0x020b}}},
- { 0x020c, {1, {0x020d}}},
- { 0x020e, {1, {0x020f}}},
- { 0x0210, {1, {0x0211}}},
- { 0x0212, {1, {0x0213}}},
- { 0x0214, {1, {0x0215}}},
- { 0x0216, {1, {0x0217}}},
- { 0x0218, {1, {0x0219}}},
- { 0x021a, {1, {0x021b}}},
- { 0x021c, {1, {0x021d}}},
- { 0x021e, {1, {0x021f}}},
- { 0x0220, {1, {0x019e}}},
- { 0x0222, {1, {0x0223}}},
- { 0x0224, {1, {0x0225}}},
- { 0x0226, {1, {0x0227}}},
- { 0x0228, {1, {0x0229}}},
- { 0x022a, {1, {0x022b}}},
- { 0x022c, {1, {0x022d}}},
- { 0x022e, {1, {0x022f}}},
- { 0x0230, {1, {0x0231}}},
- { 0x0232, {1, {0x0233}}},
- { 0x023b, {1, {0x023c}}},
- { 0x023d, {1, {0x019a}}},
- { 0x0241, {1, {0x0294}}},
- { 0x0345, {1, {0x03b9}}},
- { 0x0386, {1, {0x03ac}}},
- { 0x0388, {1, {0x03ad}}},
- { 0x0389, {1, {0x03ae}}},
- { 0x038a, {1, {0x03af}}},
- { 0x038c, {1, {0x03cc}}},
- { 0x038e, {1, {0x03cd}}},
- { 0x038f, {1, {0x03ce}}},
- { 0x0390, {3, {0x03b9, 0x0308, 0x0301}}},
- { 0x0391, {1, {0x03b1}}},
- { 0x0392, {1, {0x03b2}}},
- { 0x0393, {1, {0x03b3}}},
- { 0x0394, {1, {0x03b4}}},
- { 0x0395, {1, {0x03b5}}},
- { 0x0396, {1, {0x03b6}}},
- { 0x0397, {1, {0x03b7}}},
- { 0x0398, {1, {0x03b8}}},
- { 0x0399, {1, {0x03b9}}},
- { 0x039a, {1, {0x03ba}}},
- { 0x039b, {1, {0x03bb}}},
- { 0x039c, {1, {0x03bc}}},
- { 0x039d, {1, {0x03bd}}},
- { 0x039e, {1, {0x03be}}},
- { 0x039f, {1, {0x03bf}}},
- { 0x03a0, {1, {0x03c0}}},
- { 0x03a1, {1, {0x03c1}}},
- { 0x03a3, {1, {0x03c3}}},
- { 0x03a4, {1, {0x03c4}}},
- { 0x03a5, {1, {0x03c5}}},
- { 0x03a6, {1, {0x03c6}}},
- { 0x03a7, {1, {0x03c7}}},
- { 0x03a8, {1, {0x03c8}}},
- { 0x03a9, {1, {0x03c9}}},
- { 0x03aa, {1, {0x03ca}}},
- { 0x03ab, {1, {0x03cb}}},
- { 0x03b0, {3, {0x03c5, 0x0308, 0x0301}}},
- { 0x03c2, {1, {0x03c3}}},
- { 0x03d0, {1, {0x03b2}}},
- { 0x03d1, {1, {0x03b8}}},
- { 0x03d5, {1, {0x03c6}}},
- { 0x03d6, {1, {0x03c0}}},
- { 0x03d8, {1, {0x03d9}}},
- { 0x03da, {1, {0x03db}}},
- { 0x03dc, {1, {0x03dd}}},
- { 0x03de, {1, {0x03df}}},
- { 0x03e0, {1, {0x03e1}}},
- { 0x03e2, {1, {0x03e3}}},
- { 0x03e4, {1, {0x03e5}}},
- { 0x03e6, {1, {0x03e7}}},
- { 0x03e8, {1, {0x03e9}}},
- { 0x03ea, {1, {0x03eb}}},
- { 0x03ec, {1, {0x03ed}}},
- { 0x03ee, {1, {0x03ef}}},
- { 0x03f0, {1, {0x03ba}}},
- { 0x03f1, {1, {0x03c1}}},
- { 0x03f4, {1, {0x03b8}}},
- { 0x03f5, {1, {0x03b5}}},
- { 0x03f7, {1, {0x03f8}}},
- { 0x03f9, {1, {0x03f2}}},
- { 0x03fa, {1, {0x03fb}}},
- { 0x0400, {1, {0x0450}}},
- { 0x0401, {1, {0x0451}}},
- { 0x0402, {1, {0x0452}}},
- { 0x0403, {1, {0x0453}}},
- { 0x0404, {1, {0x0454}}},
- { 0x0405, {1, {0x0455}}},
- { 0x0406, {1, {0x0456}}},
- { 0x0407, {1, {0x0457}}},
- { 0x0408, {1, {0x0458}}},
- { 0x0409, {1, {0x0459}}},
- { 0x040a, {1, {0x045a}}},
- { 0x040b, {1, {0x045b}}},
- { 0x040c, {1, {0x045c}}},
- { 0x040d, {1, {0x045d}}},
- { 0x040e, {1, {0x045e}}},
- { 0x040f, {1, {0x045f}}},
- { 0x0410, {1, {0x0430}}},
- { 0x0411, {1, {0x0431}}},
- { 0x0412, {1, {0x0432}}},
- { 0x0413, {1, {0x0433}}},
- { 0x0414, {1, {0x0434}}},
- { 0x0415, {1, {0x0435}}},
- { 0x0416, {1, {0x0436}}},
- { 0x0417, {1, {0x0437}}},
- { 0x0418, {1, {0x0438}}},
- { 0x0419, {1, {0x0439}}},
- { 0x041a, {1, {0x043a}}},
- { 0x041b, {1, {0x043b}}},
- { 0x041c, {1, {0x043c}}},
- { 0x041d, {1, {0x043d}}},
- { 0x041e, {1, {0x043e}}},
- { 0x041f, {1, {0x043f}}},
- { 0x0420, {1, {0x0440}}},
- { 0x0421, {1, {0x0441}}},
- { 0x0422, {1, {0x0442}}},
- { 0x0423, {1, {0x0443}}},
- { 0x0424, {1, {0x0444}}},
- { 0x0425, {1, {0x0445}}},
- { 0x0426, {1, {0x0446}}},
- { 0x0427, {1, {0x0447}}},
- { 0x0428, {1, {0x0448}}},
- { 0x0429, {1, {0x0449}}},
- { 0x042a, {1, {0x044a}}},
- { 0x042b, {1, {0x044b}}},
- { 0x042c, {1, {0x044c}}},
- { 0x042d, {1, {0x044d}}},
- { 0x042e, {1, {0x044e}}},
- { 0x042f, {1, {0x044f}}},
- { 0x0460, {1, {0x0461}}},
- { 0x0462, {1, {0x0463}}},
- { 0x0464, {1, {0x0465}}},
- { 0x0466, {1, {0x0467}}},
- { 0x0468, {1, {0x0469}}},
- { 0x046a, {1, {0x046b}}},
- { 0x046c, {1, {0x046d}}},
- { 0x046e, {1, {0x046f}}},
- { 0x0470, {1, {0x0471}}},
- { 0x0472, {1, {0x0473}}},
- { 0x0474, {1, {0x0475}}},
- { 0x0476, {1, {0x0477}}},
- { 0x0478, {1, {0x0479}}},
- { 0x047a, {1, {0x047b}}},
- { 0x047c, {1, {0x047d}}},
- { 0x047e, {1, {0x047f}}},
- { 0x0480, {1, {0x0481}}},
- { 0x048a, {1, {0x048b}}},
- { 0x048c, {1, {0x048d}}},
- { 0x048e, {1, {0x048f}}},
- { 0x0490, {1, {0x0491}}},
- { 0x0492, {1, {0x0493}}},
- { 0x0494, {1, {0x0495}}},
- { 0x0496, {1, {0x0497}}},
- { 0x0498, {1, {0x0499}}},
- { 0x049a, {1, {0x049b}}},
- { 0x049c, {1, {0x049d}}},
- { 0x049e, {1, {0x049f}}},
- { 0x04a0, {1, {0x04a1}}},
- { 0x04a2, {1, {0x04a3}}},
- { 0x04a4, {1, {0x04a5}}},
- { 0x04a6, {1, {0x04a7}}},
- { 0x04a8, {1, {0x04a9}}},
- { 0x04aa, {1, {0x04ab}}},
- { 0x04ac, {1, {0x04ad}}},
- { 0x04ae, {1, {0x04af}}},
- { 0x04b0, {1, {0x04b1}}},
- { 0x04b2, {1, {0x04b3}}},
- { 0x04b4, {1, {0x04b5}}},
- { 0x04b6, {1, {0x04b7}}},
- { 0x04b8, {1, {0x04b9}}},
- { 0x04ba, {1, {0x04bb}}},
- { 0x04bc, {1, {0x04bd}}},
- { 0x04be, {1, {0x04bf}}},
- { 0x04c1, {1, {0x04c2}}},
- { 0x04c3, {1, {0x04c4}}},
- { 0x04c5, {1, {0x04c6}}},
- { 0x04c7, {1, {0x04c8}}},
- { 0x04c9, {1, {0x04ca}}},
- { 0x04cb, {1, {0x04cc}}},
- { 0x04cd, {1, {0x04ce}}},
- { 0x04d0, {1, {0x04d1}}},
- { 0x04d2, {1, {0x04d3}}},
- { 0x04d4, {1, {0x04d5}}},
- { 0x04d6, {1, {0x04d7}}},
- { 0x04d8, {1, {0x04d9}}},
- { 0x04da, {1, {0x04db}}},
- { 0x04dc, {1, {0x04dd}}},
- { 0x04de, {1, {0x04df}}},
- { 0x04e0, {1, {0x04e1}}},
- { 0x04e2, {1, {0x04e3}}},
- { 0x04e4, {1, {0x04e5}}},
- { 0x04e6, {1, {0x04e7}}},
- { 0x04e8, {1, {0x04e9}}},
- { 0x04ea, {1, {0x04eb}}},
- { 0x04ec, {1, {0x04ed}}},
- { 0x04ee, {1, {0x04ef}}},
- { 0x04f0, {1, {0x04f1}}},
- { 0x04f2, {1, {0x04f3}}},
- { 0x04f4, {1, {0x04f5}}},
- { 0x04f6, {1, {0x04f7}}},
- { 0x04f8, {1, {0x04f9}}},
- { 0x0500, {1, {0x0501}}},
- { 0x0502, {1, {0x0503}}},
- { 0x0504, {1, {0x0505}}},
- { 0x0506, {1, {0x0507}}},
- { 0x0508, {1, {0x0509}}},
- { 0x050a, {1, {0x050b}}},
- { 0x050c, {1, {0x050d}}},
- { 0x050e, {1, {0x050f}}},
- { 0x0531, {1, {0x0561}}},
- { 0x0532, {1, {0x0562}}},
- { 0x0533, {1, {0x0563}}},
- { 0x0534, {1, {0x0564}}},
- { 0x0535, {1, {0x0565}}},
- { 0x0536, {1, {0x0566}}},
- { 0x0537, {1, {0x0567}}},
- { 0x0538, {1, {0x0568}}},
- { 0x0539, {1, {0x0569}}},
- { 0x053a, {1, {0x056a}}},
- { 0x053b, {1, {0x056b}}},
- { 0x053c, {1, {0x056c}}},
- { 0x053d, {1, {0x056d}}},
- { 0x053e, {1, {0x056e}}},
- { 0x053f, {1, {0x056f}}},
- { 0x0540, {1, {0x0570}}},
- { 0x0541, {1, {0x0571}}},
- { 0x0542, {1, {0x0572}}},
- { 0x0543, {1, {0x0573}}},
- { 0x0544, {1, {0x0574}}},
- { 0x0545, {1, {0x0575}}},
- { 0x0546, {1, {0x0576}}},
- { 0x0547, {1, {0x0577}}},
- { 0x0548, {1, {0x0578}}},
- { 0x0549, {1, {0x0579}}},
- { 0x054a, {1, {0x057a}}},
- { 0x054b, {1, {0x057b}}},
- { 0x054c, {1, {0x057c}}},
- { 0x054d, {1, {0x057d}}},
- { 0x054e, {1, {0x057e}}},
- { 0x054f, {1, {0x057f}}},
- { 0x0550, {1, {0x0580}}},
- { 0x0551, {1, {0x0581}}},
- { 0x0552, {1, {0x0582}}},
- { 0x0553, {1, {0x0583}}},
- { 0x0554, {1, {0x0584}}},
- { 0x0555, {1, {0x0585}}},
- { 0x0556, {1, {0x0586}}},
- { 0x0587, {2, {0x0565, 0x0582}}},
- { 0x10a0, {1, {0x2d00}}},
- { 0x10a1, {1, {0x2d01}}},
- { 0x10a2, {1, {0x2d02}}},
- { 0x10a3, {1, {0x2d03}}},
- { 0x10a4, {1, {0x2d04}}},
- { 0x10a5, {1, {0x2d05}}},
- { 0x10a6, {1, {0x2d06}}},
- { 0x10a7, {1, {0x2d07}}},
- { 0x10a8, {1, {0x2d08}}},
- { 0x10a9, {1, {0x2d09}}},
- { 0x10aa, {1, {0x2d0a}}},
- { 0x10ab, {1, {0x2d0b}}},
- { 0x10ac, {1, {0x2d0c}}},
- { 0x10ad, {1, {0x2d0d}}},
- { 0x10ae, {1, {0x2d0e}}},
- { 0x10af, {1, {0x2d0f}}},
- { 0x10b0, {1, {0x2d10}}},
- { 0x10b1, {1, {0x2d11}}},
- { 0x10b2, {1, {0x2d12}}},
- { 0x10b3, {1, {0x2d13}}},
- { 0x10b4, {1, {0x2d14}}},
- { 0x10b5, {1, {0x2d15}}},
- { 0x10b6, {1, {0x2d16}}},
- { 0x10b7, {1, {0x2d17}}},
- { 0x10b8, {1, {0x2d18}}},
- { 0x10b9, {1, {0x2d19}}},
- { 0x10ba, {1, {0x2d1a}}},
- { 0x10bb, {1, {0x2d1b}}},
- { 0x10bc, {1, {0x2d1c}}},
- { 0x10bd, {1, {0x2d1d}}},
- { 0x10be, {1, {0x2d1e}}},
- { 0x10bf, {1, {0x2d1f}}},
- { 0x10c0, {1, {0x2d20}}},
- { 0x10c1, {1, {0x2d21}}},
- { 0x10c2, {1, {0x2d22}}},
- { 0x10c3, {1, {0x2d23}}},
- { 0x10c4, {1, {0x2d24}}},
- { 0x10c5, {1, {0x2d25}}},
- { 0x1e00, {1, {0x1e01}}},
- { 0x1e02, {1, {0x1e03}}},
- { 0x1e04, {1, {0x1e05}}},
- { 0x1e06, {1, {0x1e07}}},
- { 0x1e08, {1, {0x1e09}}},
- { 0x1e0a, {1, {0x1e0b}}},
- { 0x1e0c, {1, {0x1e0d}}},
- { 0x1e0e, {1, {0x1e0f}}},
- { 0x1e10, {1, {0x1e11}}},
- { 0x1e12, {1, {0x1e13}}},
- { 0x1e14, {1, {0x1e15}}},
- { 0x1e16, {1, {0x1e17}}},
- { 0x1e18, {1, {0x1e19}}},
- { 0x1e1a, {1, {0x1e1b}}},
- { 0x1e1c, {1, {0x1e1d}}},
- { 0x1e1e, {1, {0x1e1f}}},
- { 0x1e20, {1, {0x1e21}}},
- { 0x1e22, {1, {0x1e23}}},
- { 0x1e24, {1, {0x1e25}}},
- { 0x1e26, {1, {0x1e27}}},
- { 0x1e28, {1, {0x1e29}}},
- { 0x1e2a, {1, {0x1e2b}}},
- { 0x1e2c, {1, {0x1e2d}}},
- { 0x1e2e, {1, {0x1e2f}}},
- { 0x1e30, {1, {0x1e31}}},
- { 0x1e32, {1, {0x1e33}}},
- { 0x1e34, {1, {0x1e35}}},
- { 0x1e36, {1, {0x1e37}}},
- { 0x1e38, {1, {0x1e39}}},
- { 0x1e3a, {1, {0x1e3b}}},
- { 0x1e3c, {1, {0x1e3d}}},
- { 0x1e3e, {1, {0x1e3f}}},
- { 0x1e40, {1, {0x1e41}}},
- { 0x1e42, {1, {0x1e43}}},
- { 0x1e44, {1, {0x1e45}}},
- { 0x1e46, {1, {0x1e47}}},
- { 0x1e48, {1, {0x1e49}}},
- { 0x1e4a, {1, {0x1e4b}}},
- { 0x1e4c, {1, {0x1e4d}}},
- { 0x1e4e, {1, {0x1e4f}}},
- { 0x1e50, {1, {0x1e51}}},
- { 0x1e52, {1, {0x1e53}}},
- { 0x1e54, {1, {0x1e55}}},
- { 0x1e56, {1, {0x1e57}}},
- { 0x1e58, {1, {0x1e59}}},
- { 0x1e5a, {1, {0x1e5b}}},
- { 0x1e5c, {1, {0x1e5d}}},
- { 0x1e5e, {1, {0x1e5f}}},
- { 0x1e60, {1, {0x1e61}}},
- { 0x1e62, {1, {0x1e63}}},
- { 0x1e64, {1, {0x1e65}}},
- { 0x1e66, {1, {0x1e67}}},
- { 0x1e68, {1, {0x1e69}}},
- { 0x1e6a, {1, {0x1e6b}}},
- { 0x1e6c, {1, {0x1e6d}}},
- { 0x1e6e, {1, {0x1e6f}}},
- { 0x1e70, {1, {0x1e71}}},
- { 0x1e72, {1, {0x1e73}}},
- { 0x1e74, {1, {0x1e75}}},
- { 0x1e76, {1, {0x1e77}}},
- { 0x1e78, {1, {0x1e79}}},
- { 0x1e7a, {1, {0x1e7b}}},
- { 0x1e7c, {1, {0x1e7d}}},
- { 0x1e7e, {1, {0x1e7f}}},
- { 0x1e80, {1, {0x1e81}}},
- { 0x1e82, {1, {0x1e83}}},
- { 0x1e84, {1, {0x1e85}}},
- { 0x1e86, {1, {0x1e87}}},
- { 0x1e88, {1, {0x1e89}}},
- { 0x1e8a, {1, {0x1e8b}}},
- { 0x1e8c, {1, {0x1e8d}}},
- { 0x1e8e, {1, {0x1e8f}}},
- { 0x1e90, {1, {0x1e91}}},
- { 0x1e92, {1, {0x1e93}}},
- { 0x1e94, {1, {0x1e95}}},
- { 0x1e96, {2, {0x0068, 0x0331}}},
- { 0x1e97, {2, {0x0074, 0x0308}}},
- { 0x1e98, {2, {0x0077, 0x030a}}},
- { 0x1e99, {2, {0x0079, 0x030a}}},
- { 0x1e9a, {2, {0x0061, 0x02be}}},
- { 0x1e9b, {1, {0x1e61}}},
- { 0x1ea0, {1, {0x1ea1}}},
- { 0x1ea2, {1, {0x1ea3}}},
- { 0x1ea4, {1, {0x1ea5}}},
- { 0x1ea6, {1, {0x1ea7}}},
- { 0x1ea8, {1, {0x1ea9}}},
- { 0x1eaa, {1, {0x1eab}}},
- { 0x1eac, {1, {0x1ead}}},
- { 0x1eae, {1, {0x1eaf}}},
- { 0x1eb0, {1, {0x1eb1}}},
- { 0x1eb2, {1, {0x1eb3}}},
- { 0x1eb4, {1, {0x1eb5}}},
- { 0x1eb6, {1, {0x1eb7}}},
- { 0x1eb8, {1, {0x1eb9}}},
- { 0x1eba, {1, {0x1ebb}}},
- { 0x1ebc, {1, {0x1ebd}}},
- { 0x1ebe, {1, {0x1ebf}}},
- { 0x1ec0, {1, {0x1ec1}}},
- { 0x1ec2, {1, {0x1ec3}}},
- { 0x1ec4, {1, {0x1ec5}}},
- { 0x1ec6, {1, {0x1ec7}}},
- { 0x1ec8, {1, {0x1ec9}}},
- { 0x1eca, {1, {0x1ecb}}},
- { 0x1ecc, {1, {0x1ecd}}},
- { 0x1ece, {1, {0x1ecf}}},
- { 0x1ed0, {1, {0x1ed1}}},
- { 0x1ed2, {1, {0x1ed3}}},
- { 0x1ed4, {1, {0x1ed5}}},
- { 0x1ed6, {1, {0x1ed7}}},
- { 0x1ed8, {1, {0x1ed9}}},
- { 0x1eda, {1, {0x1edb}}},
- { 0x1edc, {1, {0x1edd}}},
- { 0x1ede, {1, {0x1edf}}},
- { 0x1ee0, {1, {0x1ee1}}},
- { 0x1ee2, {1, {0x1ee3}}},
- { 0x1ee4, {1, {0x1ee5}}},
- { 0x1ee6, {1, {0x1ee7}}},
- { 0x1ee8, {1, {0x1ee9}}},
- { 0x1eea, {1, {0x1eeb}}},
- { 0x1eec, {1, {0x1eed}}},
- { 0x1eee, {1, {0x1eef}}},
- { 0x1ef0, {1, {0x1ef1}}},
- { 0x1ef2, {1, {0x1ef3}}},
- { 0x1ef4, {1, {0x1ef5}}},
- { 0x1ef6, {1, {0x1ef7}}},
- { 0x1ef8, {1, {0x1ef9}}},
- { 0x1f08, {1, {0x1f00}}},
- { 0x1f09, {1, {0x1f01}}},
- { 0x1f0a, {1, {0x1f02}}},
- { 0x1f0b, {1, {0x1f03}}},
- { 0x1f0c, {1, {0x1f04}}},
- { 0x1f0d, {1, {0x1f05}}},
- { 0x1f0e, {1, {0x1f06}}},
- { 0x1f0f, {1, {0x1f07}}},
- { 0x1f18, {1, {0x1f10}}},
- { 0x1f19, {1, {0x1f11}}},
- { 0x1f1a, {1, {0x1f12}}},
- { 0x1f1b, {1, {0x1f13}}},
- { 0x1f1c, {1, {0x1f14}}},
- { 0x1f1d, {1, {0x1f15}}},
- { 0x1f28, {1, {0x1f20}}},
- { 0x1f29, {1, {0x1f21}}},
- { 0x1f2a, {1, {0x1f22}}},
- { 0x1f2b, {1, {0x1f23}}},
- { 0x1f2c, {1, {0x1f24}}},
- { 0x1f2d, {1, {0x1f25}}},
- { 0x1f2e, {1, {0x1f26}}},
- { 0x1f2f, {1, {0x1f27}}},
- { 0x1f38, {1, {0x1f30}}},
- { 0x1f39, {1, {0x1f31}}},
- { 0x1f3a, {1, {0x1f32}}},
- { 0x1f3b, {1, {0x1f33}}},
- { 0x1f3c, {1, {0x1f34}}},
- { 0x1f3d, {1, {0x1f35}}},
- { 0x1f3e, {1, {0x1f36}}},
- { 0x1f3f, {1, {0x1f37}}},
- { 0x1f48, {1, {0x1f40}}},
- { 0x1f49, {1, {0x1f41}}},
- { 0x1f4a, {1, {0x1f42}}},
- { 0x1f4b, {1, {0x1f43}}},
- { 0x1f4c, {1, {0x1f44}}},
- { 0x1f4d, {1, {0x1f45}}},
- { 0x1f50, {2, {0x03c5, 0x0313}}},
- { 0x1f52, {3, {0x03c5, 0x0313, 0x0300}}},
- { 0x1f54, {3, {0x03c5, 0x0313, 0x0301}}},
- { 0x1f56, {3, {0x03c5, 0x0313, 0x0342}}},
- { 0x1f59, {1, {0x1f51}}},
- { 0x1f5b, {1, {0x1f53}}},
- { 0x1f5d, {1, {0x1f55}}},
- { 0x1f5f, {1, {0x1f57}}},
- { 0x1f68, {1, {0x1f60}}},
- { 0x1f69, {1, {0x1f61}}},
- { 0x1f6a, {1, {0x1f62}}},
- { 0x1f6b, {1, {0x1f63}}},
- { 0x1f6c, {1, {0x1f64}}},
- { 0x1f6d, {1, {0x1f65}}},
- { 0x1f6e, {1, {0x1f66}}},
- { 0x1f6f, {1, {0x1f67}}},
- { 0x1f80, {2, {0x1f00, 0x03b9}}},
- { 0x1f81, {2, {0x1f01, 0x03b9}}},
- { 0x1f82, {2, {0x1f02, 0x03b9}}},
- { 0x1f83, {2, {0x1f03, 0x03b9}}},
- { 0x1f84, {2, {0x1f04, 0x03b9}}},
- { 0x1f85, {2, {0x1f05, 0x03b9}}},
- { 0x1f86, {2, {0x1f06, 0x03b9}}},
- { 0x1f87, {2, {0x1f07, 0x03b9}}},
- { 0x1f88, {2, {0x1f00, 0x03b9}}},
- { 0x1f89, {2, {0x1f01, 0x03b9}}},
- { 0x1f8a, {2, {0x1f02, 0x03b9}}},
- { 0x1f8b, {2, {0x1f03, 0x03b9}}},
- { 0x1f8c, {2, {0x1f04, 0x03b9}}},
- { 0x1f8d, {2, {0x1f05, 0x03b9}}},
- { 0x1f8e, {2, {0x1f06, 0x03b9}}},
- { 0x1f8f, {2, {0x1f07, 0x03b9}}},
- { 0x1f90, {2, {0x1f20, 0x03b9}}},
- { 0x1f91, {2, {0x1f21, 0x03b9}}},
- { 0x1f92, {2, {0x1f22, 0x03b9}}},
- { 0x1f93, {2, {0x1f23, 0x03b9}}},
- { 0x1f94, {2, {0x1f24, 0x03b9}}},
- { 0x1f95, {2, {0x1f25, 0x03b9}}},
- { 0x1f96, {2, {0x1f26, 0x03b9}}},
- { 0x1f97, {2, {0x1f27, 0x03b9}}},
- { 0x1f98, {2, {0x1f20, 0x03b9}}},
- { 0x1f99, {2, {0x1f21, 0x03b9}}},
- { 0x1f9a, {2, {0x1f22, 0x03b9}}},
- { 0x1f9b, {2, {0x1f23, 0x03b9}}},
- { 0x1f9c, {2, {0x1f24, 0x03b9}}},
- { 0x1f9d, {2, {0x1f25, 0x03b9}}},
- { 0x1f9e, {2, {0x1f26, 0x03b9}}},
- { 0x1f9f, {2, {0x1f27, 0x03b9}}},
- { 0x1fa0, {2, {0x1f60, 0x03b9}}},
- { 0x1fa1, {2, {0x1f61, 0x03b9}}},
- { 0x1fa2, {2, {0x1f62, 0x03b9}}},
- { 0x1fa3, {2, {0x1f63, 0x03b9}}},
- { 0x1fa4, {2, {0x1f64, 0x03b9}}},
- { 0x1fa5, {2, {0x1f65, 0x03b9}}},
- { 0x1fa6, {2, {0x1f66, 0x03b9}}},
- { 0x1fa7, {2, {0x1f67, 0x03b9}}},
- { 0x1fa8, {2, {0x1f60, 0x03b9}}},
- { 0x1fa9, {2, {0x1f61, 0x03b9}}},
- { 0x1faa, {2, {0x1f62, 0x03b9}}},
- { 0x1fab, {2, {0x1f63, 0x03b9}}},
- { 0x1fac, {2, {0x1f64, 0x03b9}}},
- { 0x1fad, {2, {0x1f65, 0x03b9}}},
- { 0x1fae, {2, {0x1f66, 0x03b9}}},
- { 0x1faf, {2, {0x1f67, 0x03b9}}},
- { 0x1fb2, {2, {0x1f70, 0x03b9}}},
- { 0x1fb3, {2, {0x03b1, 0x03b9}}},
- { 0x1fb4, {2, {0x03ac, 0x03b9}}},
- { 0x1fb6, {2, {0x03b1, 0x0342}}},
- { 0x1fb7, {3, {0x03b1, 0x0342, 0x03b9}}},
- { 0x1fb8, {1, {0x1fb0}}},
- { 0x1fb9, {1, {0x1fb1}}},
- { 0x1fba, {1, {0x1f70}}},
- { 0x1fbb, {1, {0x1f71}}},
- { 0x1fbc, {2, {0x03b1, 0x03b9}}},
- { 0x1fbe, {1, {0x03b9}}},
- { 0x1fc2, {2, {0x1f74, 0x03b9}}},
- { 0x1fc3, {2, {0x03b7, 0x03b9}}},
- { 0x1fc4, {2, {0x03ae, 0x03b9}}},
- { 0x1fc6, {2, {0x03b7, 0x0342}}},
- { 0x1fc7, {3, {0x03b7, 0x0342, 0x03b9}}},
- { 0x1fc8, {1, {0x1f72}}},
- { 0x1fc9, {1, {0x1f73}}},
- { 0x1fca, {1, {0x1f74}}},
- { 0x1fcb, {1, {0x1f75}}},
- { 0x1fcc, {2, {0x03b7, 0x03b9}}},
- { 0x1fd2, {3, {0x03b9, 0x0308, 0x0300}}},
- { 0x1fd3, {3, {0x03b9, 0x0308, 0x0301}}},
- { 0x1fd6, {2, {0x03b9, 0x0342}}},
- { 0x1fd7, {3, {0x03b9, 0x0308, 0x0342}}},
- { 0x1fd8, {1, {0x1fd0}}},
- { 0x1fd9, {1, {0x1fd1}}},
- { 0x1fda, {1, {0x1f76}}},
- { 0x1fdb, {1, {0x1f77}}},
- { 0x1fe2, {3, {0x03c5, 0x0308, 0x0300}}},
- { 0x1fe3, {3, {0x03c5, 0x0308, 0x0301}}},
- { 0x1fe4, {2, {0x03c1, 0x0313}}},
- { 0x1fe6, {2, {0x03c5, 0x0342}}},
- { 0x1fe7, {3, {0x03c5, 0x0308, 0x0342}}},
- { 0x1fe8, {1, {0x1fe0}}},
- { 0x1fe9, {1, {0x1fe1}}},
- { 0x1fea, {1, {0x1f7a}}},
- { 0x1feb, {1, {0x1f7b}}},
- { 0x1fec, {1, {0x1fe5}}},
- { 0x1ff2, {2, {0x1f7c, 0x03b9}}},
- { 0x1ff3, {2, {0x03c9, 0x03b9}}},
- { 0x1ff4, {2, {0x03ce, 0x03b9}}},
- { 0x1ff6, {2, {0x03c9, 0x0342}}},
- { 0x1ff7, {3, {0x03c9, 0x0342, 0x03b9}}},
- { 0x1ff8, {1, {0x1f78}}},
- { 0x1ff9, {1, {0x1f79}}},
- { 0x1ffa, {1, {0x1f7c}}},
- { 0x1ffb, {1, {0x1f7d}}},
- { 0x1ffc, {2, {0x03c9, 0x03b9}}},
- { 0x2126, {1, {0x03c9}}},
- { 0x212a, {1, {0x006b}}},
- { 0x212b, {1, {0x00e5}}},
- { 0x2160, {1, {0x2170}}},
- { 0x2161, {1, {0x2171}}},
- { 0x2162, {1, {0x2172}}},
- { 0x2163, {1, {0x2173}}},
- { 0x2164, {1, {0x2174}}},
- { 0x2165, {1, {0x2175}}},
- { 0x2166, {1, {0x2176}}},
- { 0x2167, {1, {0x2177}}},
- { 0x2168, {1, {0x2178}}},
- { 0x2169, {1, {0x2179}}},
- { 0x216a, {1, {0x217a}}},
- { 0x216b, {1, {0x217b}}},
- { 0x216c, {1, {0x217c}}},
- { 0x216d, {1, {0x217d}}},
- { 0x216e, {1, {0x217e}}},
- { 0x216f, {1, {0x217f}}},
- { 0x24b6, {1, {0x24d0}}},
- { 0x24b7, {1, {0x24d1}}},
- { 0x24b8, {1, {0x24d2}}},
- { 0x24b9, {1, {0x24d3}}},
- { 0x24ba, {1, {0x24d4}}},
- { 0x24bb, {1, {0x24d5}}},
- { 0x24bc, {1, {0x24d6}}},
- { 0x24bd, {1, {0x24d7}}},
- { 0x24be, {1, {0x24d8}}},
- { 0x24bf, {1, {0x24d9}}},
- { 0x24c0, {1, {0x24da}}},
- { 0x24c1, {1, {0x24db}}},
- { 0x24c2, {1, {0x24dc}}},
- { 0x24c3, {1, {0x24dd}}},
- { 0x24c4, {1, {0x24de}}},
- { 0x24c5, {1, {0x24df}}},
- { 0x24c6, {1, {0x24e0}}},
- { 0x24c7, {1, {0x24e1}}},
- { 0x24c8, {1, {0x24e2}}},
- { 0x24c9, {1, {0x24e3}}},
- { 0x24ca, {1, {0x24e4}}},
- { 0x24cb, {1, {0x24e5}}},
- { 0x24cc, {1, {0x24e6}}},
- { 0x24cd, {1, {0x24e7}}},
- { 0x24ce, {1, {0x24e8}}},
- { 0x24cf, {1, {0x24e9}}},
- { 0x2c00, {1, {0x2c30}}},
- { 0x2c01, {1, {0x2c31}}},
- { 0x2c02, {1, {0x2c32}}},
- { 0x2c03, {1, {0x2c33}}},
- { 0x2c04, {1, {0x2c34}}},
- { 0x2c05, {1, {0x2c35}}},
- { 0x2c06, {1, {0x2c36}}},
- { 0x2c07, {1, {0x2c37}}},
- { 0x2c08, {1, {0x2c38}}},
- { 0x2c09, {1, {0x2c39}}},
- { 0x2c0a, {1, {0x2c3a}}},
- { 0x2c0b, {1, {0x2c3b}}},
- { 0x2c0c, {1, {0x2c3c}}},
- { 0x2c0d, {1, {0x2c3d}}},
- { 0x2c0e, {1, {0x2c3e}}},
- { 0x2c0f, {1, {0x2c3f}}},
- { 0x2c10, {1, {0x2c40}}},
- { 0x2c11, {1, {0x2c41}}},
- { 0x2c12, {1, {0x2c42}}},
- { 0x2c13, {1, {0x2c43}}},
- { 0x2c14, {1, {0x2c44}}},
- { 0x2c15, {1, {0x2c45}}},
- { 0x2c16, {1, {0x2c46}}},
- { 0x2c17, {1, {0x2c47}}},
- { 0x2c18, {1, {0x2c48}}},
- { 0x2c19, {1, {0x2c49}}},
- { 0x2c1a, {1, {0x2c4a}}},
- { 0x2c1b, {1, {0x2c4b}}},
- { 0x2c1c, {1, {0x2c4c}}},
- { 0x2c1d, {1, {0x2c4d}}},
- { 0x2c1e, {1, {0x2c4e}}},
- { 0x2c1f, {1, {0x2c4f}}},
- { 0x2c20, {1, {0x2c50}}},
- { 0x2c21, {1, {0x2c51}}},
- { 0x2c22, {1, {0x2c52}}},
- { 0x2c23, {1, {0x2c53}}},
- { 0x2c24, {1, {0x2c54}}},
- { 0x2c25, {1, {0x2c55}}},
- { 0x2c26, {1, {0x2c56}}},
- { 0x2c27, {1, {0x2c57}}},
- { 0x2c28, {1, {0x2c58}}},
- { 0x2c29, {1, {0x2c59}}},
- { 0x2c2a, {1, {0x2c5a}}},
- { 0x2c2b, {1, {0x2c5b}}},
- { 0x2c2c, {1, {0x2c5c}}},
- { 0x2c2d, {1, {0x2c5d}}},
- { 0x2c2e, {1, {0x2c5e}}},
- { 0x2c80, {1, {0x2c81}}},
- { 0x2c82, {1, {0x2c83}}},
- { 0x2c84, {1, {0x2c85}}},
- { 0x2c86, {1, {0x2c87}}},
- { 0x2c88, {1, {0x2c89}}},
- { 0x2c8a, {1, {0x2c8b}}},
- { 0x2c8c, {1, {0x2c8d}}},
- { 0x2c8e, {1, {0x2c8f}}},
- { 0x2c90, {1, {0x2c91}}},
- { 0x2c92, {1, {0x2c93}}},
- { 0x2c94, {1, {0x2c95}}},
- { 0x2c96, {1, {0x2c97}}},
- { 0x2c98, {1, {0x2c99}}},
- { 0x2c9a, {1, {0x2c9b}}},
- { 0x2c9c, {1, {0x2c9d}}},
- { 0x2c9e, {1, {0x2c9f}}},
- { 0x2ca0, {1, {0x2ca1}}},
- { 0x2ca2, {1, {0x2ca3}}},
- { 0x2ca4, {1, {0x2ca5}}},
- { 0x2ca6, {1, {0x2ca7}}},
- { 0x2ca8, {1, {0x2ca9}}},
- { 0x2caa, {1, {0x2cab}}},
- { 0x2cac, {1, {0x2cad}}},
- { 0x2cae, {1, {0x2caf}}},
- { 0x2cb0, {1, {0x2cb1}}},
- { 0x2cb2, {1, {0x2cb3}}},
- { 0x2cb4, {1, {0x2cb5}}},
- { 0x2cb6, {1, {0x2cb7}}},
- { 0x2cb8, {1, {0x2cb9}}},
- { 0x2cba, {1, {0x2cbb}}},
- { 0x2cbc, {1, {0x2cbd}}},
- { 0x2cbe, {1, {0x2cbf}}},
- { 0x2cc0, {1, {0x2cc1}}},
- { 0x2cc2, {1, {0x2cc3}}},
- { 0x2cc4, {1, {0x2cc5}}},
- { 0x2cc6, {1, {0x2cc7}}},
- { 0x2cc8, {1, {0x2cc9}}},
- { 0x2cca, {1, {0x2ccb}}},
- { 0x2ccc, {1, {0x2ccd}}},
- { 0x2cce, {1, {0x2ccf}}},
- { 0x2cd0, {1, {0x2cd1}}},
- { 0x2cd2, {1, {0x2cd3}}},
- { 0x2cd4, {1, {0x2cd5}}},
- { 0x2cd6, {1, {0x2cd7}}},
- { 0x2cd8, {1, {0x2cd9}}},
- { 0x2cda, {1, {0x2cdb}}},
- { 0x2cdc, {1, {0x2cdd}}},
- { 0x2cde, {1, {0x2cdf}}},
- { 0x2ce0, {1, {0x2ce1}}},
- { 0x2ce2, {1, {0x2ce3}}},
- { 0xfb00, {2, {0x0066, 0x0066}}},
- { 0xfb01, {2, {0x0066, 0x0069}}},
- { 0xfb02, {2, {0x0066, 0x006c}}},
- { 0xfb03, {3, {0x0066, 0x0066, 0x0069}}},
- { 0xfb04, {3, {0x0066, 0x0066, 0x006c}}},
- { 0xfb05, {2, {0x0073, 0x0074}}},
- { 0xfb06, {2, {0x0073, 0x0074}}},
- { 0xfb13, {2, {0x0574, 0x0576}}},
- { 0xfb14, {2, {0x0574, 0x0565}}},
- { 0xfb15, {2, {0x0574, 0x056b}}},
- { 0xfb16, {2, {0x057e, 0x0576}}},
- { 0xfb17, {2, {0x0574, 0x056d}}},
- { 0xff21, {1, {0xff41}}},
- { 0xff22, {1, {0xff42}}},
- { 0xff23, {1, {0xff43}}},
- { 0xff24, {1, {0xff44}}},
- { 0xff25, {1, {0xff45}}},
- { 0xff26, {1, {0xff46}}},
- { 0xff27, {1, {0xff47}}},
- { 0xff28, {1, {0xff48}}},
- { 0xff29, {1, {0xff49}}},
- { 0xff2a, {1, {0xff4a}}},
- { 0xff2b, {1, {0xff4b}}},
- { 0xff2c, {1, {0xff4c}}},
- { 0xff2d, {1, {0xff4d}}},
- { 0xff2e, {1, {0xff4e}}},
- { 0xff2f, {1, {0xff4f}}},
- { 0xff30, {1, {0xff50}}},
- { 0xff31, {1, {0xff51}}},
- { 0xff32, {1, {0xff52}}},
- { 0xff33, {1, {0xff53}}},
- { 0xff34, {1, {0xff54}}},
- { 0xff35, {1, {0xff55}}},
- { 0xff36, {1, {0xff56}}},
- { 0xff37, {1, {0xff57}}},
- { 0xff38, {1, {0xff58}}},
- { 0xff39, {1, {0xff59}}},
- { 0xff3a, {1, {0xff5a}}},
- { 0x10400, {1, {0x10428}}},
- { 0x10401, {1, {0x10429}}},
- { 0x10402, {1, {0x1042a}}},
- { 0x10403, {1, {0x1042b}}},
- { 0x10404, {1, {0x1042c}}},
- { 0x10405, {1, {0x1042d}}},
- { 0x10406, {1, {0x1042e}}},
- { 0x10407, {1, {0x1042f}}},
- { 0x10408, {1, {0x10430}}},
- { 0x10409, {1, {0x10431}}},
- { 0x1040a, {1, {0x10432}}},
- { 0x1040b, {1, {0x10433}}},
- { 0x1040c, {1, {0x10434}}},
- { 0x1040d, {1, {0x10435}}},
- { 0x1040e, {1, {0x10436}}},
- { 0x1040f, {1, {0x10437}}},
- { 0x10410, {1, {0x10438}}},
- { 0x10411, {1, {0x10439}}},
- { 0x10412, {1, {0x1043a}}},
- { 0x10413, {1, {0x1043b}}},
- { 0x10414, {1, {0x1043c}}},
- { 0x10415, {1, {0x1043d}}},
- { 0x10416, {1, {0x1043e}}},
- { 0x10417, {1, {0x1043f}}},
- { 0x10418, {1, {0x10440}}},
- { 0x10419, {1, {0x10441}}},
- { 0x1041a, {1, {0x10442}}},
- { 0x1041b, {1, {0x10443}}},
- { 0x1041c, {1, {0x10444}}},
- { 0x1041d, {1, {0x10445}}},
- { 0x1041e, {1, {0x10446}}},
- { 0x1041f, {1, {0x10447}}},
- { 0x10420, {1, {0x10448}}},
- { 0x10421, {1, {0x10449}}},
- { 0x10422, {1, {0x1044a}}},
- { 0x10423, {1, {0x1044b}}},
- { 0x10424, {1, {0x1044c}}},
- { 0x10425, {1, {0x1044d}}},
- { 0x10426, {1, {0x1044e}}},
- { 0x10427, {1, {0x1044f}}}
-};
-
-static const CaseFold_11_Type CaseFold_Locale[] = {
- { 0x0049, {1, {0x0069}}},
- { 0x0130, {2, {0x0069, 0x0307}}}
-};
-
-static const CaseUnfold_11_Type CaseUnfold_11[] = {
- { 0x0061, {1, {0x0041 }}},
- { 0x0062, {1, {0x0042 }}},
- { 0x0063, {1, {0x0043 }}},
- { 0x0064, {1, {0x0044 }}},
- { 0x0065, {1, {0x0045 }}},
- { 0x0066, {1, {0x0046 }}},
- { 0x0067, {1, {0x0047 }}},
- { 0x0068, {1, {0x0048 }}},
- { 0x006a, {1, {0x004a }}},
- { 0x006b, {2, {0x212a, 0x004b }}},
- { 0x006c, {1, {0x004c }}},
- { 0x006d, {1, {0x004d }}},
- { 0x006e, {1, {0x004e }}},
- { 0x006f, {1, {0x004f }}},
- { 0x0070, {1, {0x0050 }}},
- { 0x0071, {1, {0x0051 }}},
- { 0x0072, {1, {0x0052 }}},
- { 0x0073, {2, {0x0053, 0x017f }}},
- { 0x0074, {1, {0x0054 }}},
- { 0x0075, {1, {0x0055 }}},
- { 0x0076, {1, {0x0056 }}},
- { 0x0077, {1, {0x0057 }}},
- { 0x0078, {1, {0x0058 }}},
- { 0x0079, {1, {0x0059 }}},
- { 0x007a, {1, {0x005a }}},
- { 0x00e0, {1, {0x00c0 }}},
- { 0x00e1, {1, {0x00c1 }}},
- { 0x00e2, {1, {0x00c2 }}},
- { 0x00e3, {1, {0x00c3 }}},
- { 0x00e4, {1, {0x00c4 }}},
- { 0x00e5, {2, {0x212b, 0x00c5 }}},
- { 0x00e6, {1, {0x00c6 }}},
- { 0x00e7, {1, {0x00c7 }}},
- { 0x00e8, {1, {0x00c8 }}},
- { 0x00e9, {1, {0x00c9 }}},
- { 0x00ea, {1, {0x00ca }}},
- { 0x00eb, {1, {0x00cb }}},
- { 0x00ec, {1, {0x00cc }}},
- { 0x00ed, {1, {0x00cd }}},
- { 0x00ee, {1, {0x00ce }}},
- { 0x00ef, {1, {0x00cf }}},
- { 0x00f0, {1, {0x00d0 }}},
- { 0x00f1, {1, {0x00d1 }}},
- { 0x00f2, {1, {0x00d2 }}},
- { 0x00f3, {1, {0x00d3 }}},
- { 0x00f4, {1, {0x00d4 }}},
- { 0x00f5, {1, {0x00d5 }}},
- { 0x00f6, {1, {0x00d6 }}},
- { 0x00f8, {1, {0x00d8 }}},
- { 0x00f9, {1, {0x00d9 }}},
- { 0x00fa, {1, {0x00da }}},
- { 0x00fb, {1, {0x00db }}},
- { 0x00fc, {1, {0x00dc }}},
- { 0x00fd, {1, {0x00dd }}},
- { 0x00fe, {1, {0x00de }}},
- { 0x00ff, {1, {0x0178 }}},
- { 0x0101, {1, {0x0100 }}},
- { 0x0103, {1, {0x0102 }}},
- { 0x0105, {1, {0x0104 }}},
- { 0x0107, {1, {0x0106 }}},
- { 0x0109, {1, {0x0108 }}},
- { 0x010b, {1, {0x010a }}},
- { 0x010d, {1, {0x010c }}},
- { 0x010f, {1, {0x010e }}},
- { 0x0111, {1, {0x0110 }}},
- { 0x0113, {1, {0x0112 }}},
- { 0x0115, {1, {0x0114 }}},
- { 0x0117, {1, {0x0116 }}},
- { 0x0119, {1, {0x0118 }}},
- { 0x011b, {1, {0x011a }}},
- { 0x011d, {1, {0x011c }}},
- { 0x011f, {1, {0x011e }}},
- { 0x0121, {1, {0x0120 }}},
- { 0x0123, {1, {0x0122 }}},
- { 0x0125, {1, {0x0124 }}},
- { 0x0127, {1, {0x0126 }}},
- { 0x0129, {1, {0x0128 }}},
- { 0x012b, {1, {0x012a }}},
- { 0x012d, {1, {0x012c }}},
- { 0x012f, {1, {0x012e }}},
- { 0x0133, {1, {0x0132 }}},
- { 0x0135, {1, {0x0134 }}},
- { 0x0137, {1, {0x0136 }}},
- { 0x013a, {1, {0x0139 }}},
- { 0x013c, {1, {0x013b }}},
- { 0x013e, {1, {0x013d }}},
- { 0x0140, {1, {0x013f }}},
- { 0x0142, {1, {0x0141 }}},
- { 0x0144, {1, {0x0143 }}},
- { 0x0146, {1, {0x0145 }}},
- { 0x0148, {1, {0x0147 }}},
- { 0x014b, {1, {0x014a }}},
- { 0x014d, {1, {0x014c }}},
- { 0x014f, {1, {0x014e }}},
- { 0x0151, {1, {0x0150 }}},
- { 0x0153, {1, {0x0152 }}},
- { 0x0155, {1, {0x0154 }}},
- { 0x0157, {1, {0x0156 }}},
- { 0x0159, {1, {0x0158 }}},
- { 0x015b, {1, {0x015a }}},
- { 0x015d, {1, {0x015c }}},
- { 0x015f, {1, {0x015e }}},
- { 0x0161, {1, {0x0160 }}},
- { 0x0163, {1, {0x0162 }}},
- { 0x0165, {1, {0x0164 }}},
- { 0x0167, {1, {0x0166 }}},
- { 0x0169, {1, {0x0168 }}},
- { 0x016b, {1, {0x016a }}},
- { 0x016d, {1, {0x016c }}},
- { 0x016f, {1, {0x016e }}},
- { 0x0171, {1, {0x0170 }}},
- { 0x0173, {1, {0x0172 }}},
- { 0x0175, {1, {0x0174 }}},
- { 0x0177, {1, {0x0176 }}},
- { 0x017a, {1, {0x0179 }}},
- { 0x017c, {1, {0x017b }}},
- { 0x017e, {1, {0x017d }}},
- { 0x0183, {1, {0x0182 }}},
- { 0x0185, {1, {0x0184 }}},
- { 0x0188, {1, {0x0187 }}},
- { 0x018c, {1, {0x018b }}},
- { 0x0192, {1, {0x0191 }}},
- { 0x0195, {1, {0x01f6 }}},
- { 0x0199, {1, {0x0198 }}},
- { 0x019a, {1, {0x023d }}},
- { 0x019e, {1, {0x0220 }}},
- { 0x01a1, {1, {0x01a0 }}},
- { 0x01a3, {1, {0x01a2 }}},
- { 0x01a5, {1, {0x01a4 }}},
- { 0x01a8, {1, {0x01a7 }}},
- { 0x01ad, {1, {0x01ac }}},
- { 0x01b0, {1, {0x01af }}},
- { 0x01b4, {1, {0x01b3 }}},
- { 0x01b6, {1, {0x01b5 }}},
- { 0x01b9, {1, {0x01b8 }}},
- { 0x01bd, {1, {0x01bc }}},
- { 0x01bf, {1, {0x01f7 }}},
- { 0x01c6, {2, {0x01c4, 0x01c5 }}},
- { 0x01c9, {2, {0x01c7, 0x01c8 }}},
- { 0x01cc, {2, {0x01ca, 0x01cb }}},
- { 0x01ce, {1, {0x01cd }}},
- { 0x01d0, {1, {0x01cf }}},
- { 0x01d2, {1, {0x01d1 }}},
- { 0x01d4, {1, {0x01d3 }}},
- { 0x01d6, {1, {0x01d5 }}},
- { 0x01d8, {1, {0x01d7 }}},
- { 0x01da, {1, {0x01d9 }}},
- { 0x01dc, {1, {0x01db }}},
- { 0x01dd, {1, {0x018e }}},
- { 0x01df, {1, {0x01de }}},
- { 0x01e1, {1, {0x01e0 }}},
- { 0x01e3, {1, {0x01e2 }}},
- { 0x01e5, {1, {0x01e4 }}},
- { 0x01e7, {1, {0x01e6 }}},
- { 0x01e9, {1, {0x01e8 }}},
- { 0x01eb, {1, {0x01ea }}},
- { 0x01ed, {1, {0x01ec }}},
- { 0x01ef, {1, {0x01ee }}},
- { 0x01f3, {2, {0x01f1, 0x01f2 }}},
- { 0x01f5, {1, {0x01f4 }}},
- { 0x01f9, {1, {0x01f8 }}},
- { 0x01fb, {1, {0x01fa }}},
- { 0x01fd, {1, {0x01fc }}},
- { 0x01ff, {1, {0x01fe }}},
- { 0x0201, {1, {0x0200 }}},
- { 0x0203, {1, {0x0202 }}},
- { 0x0205, {1, {0x0204 }}},
- { 0x0207, {1, {0x0206 }}},
- { 0x0209, {1, {0x0208 }}},
- { 0x020b, {1, {0x020a }}},
- { 0x020d, {1, {0x020c }}},
- { 0x020f, {1, {0x020e }}},
- { 0x0211, {1, {0x0210 }}},
- { 0x0213, {1, {0x0212 }}},
- { 0x0215, {1, {0x0214 }}},
- { 0x0217, {1, {0x0216 }}},
- { 0x0219, {1, {0x0218 }}},
- { 0x021b, {1, {0x021a }}},
- { 0x021d, {1, {0x021c }}},
- { 0x021f, {1, {0x021e }}},
- { 0x0223, {1, {0x0222 }}},
- { 0x0225, {1, {0x0224 }}},
- { 0x0227, {1, {0x0226 }}},
- { 0x0229, {1, {0x0228 }}},
- { 0x022b, {1, {0x022a }}},
- { 0x022d, {1, {0x022c }}},
- { 0x022f, {1, {0x022e }}},
- { 0x0231, {1, {0x0230 }}},
- { 0x0233, {1, {0x0232 }}},
- { 0x023c, {1, {0x023b }}},
- { 0x0253, {1, {0x0181 }}},
- { 0x0254, {1, {0x0186 }}},
- { 0x0256, {1, {0x0189 }}},
- { 0x0257, {1, {0x018a }}},
- { 0x0259, {1, {0x018f }}},
- { 0x025b, {1, {0x0190 }}},
- { 0x0260, {1, {0x0193 }}},
- { 0x0263, {1, {0x0194 }}},
- { 0x0268, {1, {0x0197 }}},
- { 0x0269, {1, {0x0196 }}},
- { 0x026f, {1, {0x019c }}},
- { 0x0272, {1, {0x019d }}},
- { 0x0275, {1, {0x019f }}},
- { 0x0280, {1, {0x01a6 }}},
- { 0x0283, {1, {0x01a9 }}},
- { 0x0288, {1, {0x01ae }}},
- { 0x028a, {1, {0x01b1 }}},
- { 0x028b, {1, {0x01b2 }}},
- { 0x0292, {1, {0x01b7 }}},
- { 0x0294, {1, {0x0241 }}},
- { 0x03ac, {1, {0x0386 }}},
- { 0x03ad, {1, {0x0388 }}},
- { 0x03ae, {1, {0x0389 }}},
- { 0x03af, {1, {0x038a }}},
- { 0x03b1, {1, {0x0391 }}},
- { 0x03b2, {2, {0x0392, 0x03d0 }}},
- { 0x03b3, {1, {0x0393 }}},
- { 0x03b4, {1, {0x0394 }}},
- { 0x03b5, {2, {0x03f5, 0x0395 }}},
- { 0x03b6, {1, {0x0396 }}},
- { 0x03b7, {1, {0x0397 }}},
- { 0x03b8, {3, {0x03f4, 0x0398, 0x03d1 }}},
- { 0x03b9, {3, {0x1fbe, 0x0399, 0x0345 }}},
- { 0x03ba, {2, {0x03f0, 0x039a }}},
- { 0x03bb, {1, {0x039b }}},
- { 0x03bc, {2, {0x00b5, 0x039c }}},
- { 0x03bd, {1, {0x039d }}},
- { 0x03be, {1, {0x039e }}},
- { 0x03bf, {1, {0x039f }}},
- { 0x03c0, {2, {0x03a0, 0x03d6 }}},
- { 0x03c1, {2, {0x03f1, 0x03a1 }}},
- { 0x03c3, {2, {0x03a3, 0x03c2 }}},
- { 0x03c4, {1, {0x03a4 }}},
- { 0x03c5, {1, {0x03a5 }}},
- { 0x03c6, {2, {0x03a6, 0x03d5 }}},
- { 0x03c7, {1, {0x03a7 }}},
- { 0x03c8, {1, {0x03a8 }}},
- { 0x03c9, {2, {0x03a9, 0x2126 }}},
- { 0x03ca, {1, {0x03aa }}},
- { 0x03cb, {1, {0x03ab }}},
- { 0x03cc, {1, {0x038c }}},
- { 0x03cd, {1, {0x038e }}},
- { 0x03ce, {1, {0x038f }}},
- { 0x03d9, {1, {0x03d8 }}},
- { 0x03db, {1, {0x03da }}},
- { 0x03dd, {1, {0x03dc }}},
- { 0x03df, {1, {0x03de }}},
- { 0x03e1, {1, {0x03e0 }}},
- { 0x03e3, {1, {0x03e2 }}},
- { 0x03e5, {1, {0x03e4 }}},
- { 0x03e7, {1, {0x03e6 }}},
- { 0x03e9, {1, {0x03e8 }}},
- { 0x03eb, {1, {0x03ea }}},
- { 0x03ed, {1, {0x03ec }}},
- { 0x03ef, {1, {0x03ee }}},
- { 0x03f2, {1, {0x03f9 }}},
- { 0x03f8, {1, {0x03f7 }}},
- { 0x03fb, {1, {0x03fa }}},
- { 0x0430, {1, {0x0410 }}},
- { 0x0431, {1, {0x0411 }}},
- { 0x0432, {1, {0x0412 }}},
- { 0x0433, {1, {0x0413 }}},
- { 0x0434, {1, {0x0414 }}},
- { 0x0435, {1, {0x0415 }}},
- { 0x0436, {1, {0x0416 }}},
- { 0x0437, {1, {0x0417 }}},
- { 0x0438, {1, {0x0418 }}},
- { 0x0439, {1, {0x0419 }}},
- { 0x043a, {1, {0x041a }}},
- { 0x043b, {1, {0x041b }}},
- { 0x043c, {1, {0x041c }}},
- { 0x043d, {1, {0x041d }}},
- { 0x043e, {1, {0x041e }}},
- { 0x043f, {1, {0x041f }}},
- { 0x0440, {1, {0x0420 }}},
- { 0x0441, {1, {0x0421 }}},
- { 0x0442, {1, {0x0422 }}},
- { 0x0443, {1, {0x0423 }}},
- { 0x0444, {1, {0x0424 }}},
- { 0x0445, {1, {0x0425 }}},
- { 0x0446, {1, {0x0426 }}},
- { 0x0447, {1, {0x0427 }}},
- { 0x0448, {1, {0x0428 }}},
- { 0x0449, {1, {0x0429 }}},
- { 0x044a, {1, {0x042a }}},
- { 0x044b, {1, {0x042b }}},
- { 0x044c, {1, {0x042c }}},
- { 0x044d, {1, {0x042d }}},
- { 0x044e, {1, {0x042e }}},
- { 0x044f, {1, {0x042f }}},
- { 0x0450, {1, {0x0400 }}},
- { 0x0451, {1, {0x0401 }}},
- { 0x0452, {1, {0x0402 }}},
- { 0x0453, {1, {0x0403 }}},
- { 0x0454, {1, {0x0404 }}},
- { 0x0455, {1, {0x0405 }}},
- { 0x0456, {1, {0x0406 }}},
- { 0x0457, {1, {0x0407 }}},
- { 0x0458, {1, {0x0408 }}},
- { 0x0459, {1, {0x0409 }}},
- { 0x045a, {1, {0x040a }}},
- { 0x045b, {1, {0x040b }}},
- { 0x045c, {1, {0x040c }}},
- { 0x045d, {1, {0x040d }}},
- { 0x045e, {1, {0x040e }}},
- { 0x045f, {1, {0x040f }}},
- { 0x0461, {1, {0x0460 }}},
- { 0x0463, {1, {0x0462 }}},
- { 0x0465, {1, {0x0464 }}},
- { 0x0467, {1, {0x0466 }}},
- { 0x0469, {1, {0x0468 }}},
- { 0x046b, {1, {0x046a }}},
- { 0x046d, {1, {0x046c }}},
- { 0x046f, {1, {0x046e }}},
- { 0x0471, {1, {0x0470 }}},
- { 0x0473, {1, {0x0472 }}},
- { 0x0475, {1, {0x0474 }}},
- { 0x0477, {1, {0x0476 }}},
- { 0x0479, {1, {0x0478 }}},
- { 0x047b, {1, {0x047a }}},
- { 0x047d, {1, {0x047c }}},
- { 0x047f, {1, {0x047e }}},
- { 0x0481, {1, {0x0480 }}},
- { 0x048b, {1, {0x048a }}},
- { 0x048d, {1, {0x048c }}},
- { 0x048f, {1, {0x048e }}},
- { 0x0491, {1, {0x0490 }}},
- { 0x0493, {1, {0x0492 }}},
- { 0x0495, {1, {0x0494 }}},
- { 0x0497, {1, {0x0496 }}},
- { 0x0499, {1, {0x0498 }}},
- { 0x049b, {1, {0x049a }}},
- { 0x049d, {1, {0x049c }}},
- { 0x049f, {1, {0x049e }}},
- { 0x04a1, {1, {0x04a0 }}},
- { 0x04a3, {1, {0x04a2 }}},
- { 0x04a5, {1, {0x04a4 }}},
- { 0x04a7, {1, {0x04a6 }}},
- { 0x04a9, {1, {0x04a8 }}},
- { 0x04ab, {1, {0x04aa }}},
- { 0x04ad, {1, {0x04ac }}},
- { 0x04af, {1, {0x04ae }}},
- { 0x04b1, {1, {0x04b0 }}},
- { 0x04b3, {1, {0x04b2 }}},
- { 0x04b5, {1, {0x04b4 }}},
- { 0x04b7, {1, {0x04b6 }}},
- { 0x04b9, {1, {0x04b8 }}},
- { 0x04bb, {1, {0x04ba }}},
- { 0x04bd, {1, {0x04bc }}},
- { 0x04bf, {1, {0x04be }}},
- { 0x04c2, {1, {0x04c1 }}},
- { 0x04c4, {1, {0x04c3 }}},
- { 0x04c6, {1, {0x04c5 }}},
- { 0x04c8, {1, {0x04c7 }}},
- { 0x04ca, {1, {0x04c9 }}},
- { 0x04cc, {1, {0x04cb }}},
- { 0x04ce, {1, {0x04cd }}},
- { 0x04d1, {1, {0x04d0 }}},
- { 0x04d3, {1, {0x04d2 }}},
- { 0x04d5, {1, {0x04d4 }}},
- { 0x04d7, {1, {0x04d6 }}},
- { 0x04d9, {1, {0x04d8 }}},
- { 0x04db, {1, {0x04da }}},
- { 0x04dd, {1, {0x04dc }}},
- { 0x04df, {1, {0x04de }}},
- { 0x04e1, {1, {0x04e0 }}},
- { 0x04e3, {1, {0x04e2 }}},
- { 0x04e5, {1, {0x04e4 }}},
- { 0x04e7, {1, {0x04e6 }}},
- { 0x04e9, {1, {0x04e8 }}},
- { 0x04eb, {1, {0x04ea }}},
- { 0x04ed, {1, {0x04ec }}},
- { 0x04ef, {1, {0x04ee }}},
- { 0x04f1, {1, {0x04f0 }}},
- { 0x04f3, {1, {0x04f2 }}},
- { 0x04f5, {1, {0x04f4 }}},
- { 0x04f7, {1, {0x04f6 }}},
- { 0x04f9, {1, {0x04f8 }}},
- { 0x0501, {1, {0x0500 }}},
- { 0x0503, {1, {0x0502 }}},
- { 0x0505, {1, {0x0504 }}},
- { 0x0507, {1, {0x0506 }}},
- { 0x0509, {1, {0x0508 }}},
- { 0x050b, {1, {0x050a }}},
- { 0x050d, {1, {0x050c }}},
- { 0x050f, {1, {0x050e }}},
- { 0x0561, {1, {0x0531 }}},
- { 0x0562, {1, {0x0532 }}},
- { 0x0563, {1, {0x0533 }}},
- { 0x0564, {1, {0x0534 }}},
- { 0x0565, {1, {0x0535 }}},
- { 0x0566, {1, {0x0536 }}},
- { 0x0567, {1, {0x0537 }}},
- { 0x0568, {1, {0x0538 }}},
- { 0x0569, {1, {0x0539 }}},
- { 0x056a, {1, {0x053a }}},
- { 0x056b, {1, {0x053b }}},
- { 0x056c, {1, {0x053c }}},
- { 0x056d, {1, {0x053d }}},
- { 0x056e, {1, {0x053e }}},
- { 0x056f, {1, {0x053f }}},
- { 0x0570, {1, {0x0540 }}},
- { 0x0571, {1, {0x0541 }}},
- { 0x0572, {1, {0x0542 }}},
- { 0x0573, {1, {0x0543 }}},
- { 0x0574, {1, {0x0544 }}},
- { 0x0575, {1, {0x0545 }}},
- { 0x0576, {1, {0x0546 }}},
- { 0x0577, {1, {0x0547 }}},
- { 0x0578, {1, {0x0548 }}},
- { 0x0579, {1, {0x0549 }}},
- { 0x057a, {1, {0x054a }}},
- { 0x057b, {1, {0x054b }}},
- { 0x057c, {1, {0x054c }}},
- { 0x057d, {1, {0x054d }}},
- { 0x057e, {1, {0x054e }}},
- { 0x057f, {1, {0x054f }}},
- { 0x0580, {1, {0x0550 }}},
- { 0x0581, {1, {0x0551 }}},
- { 0x0582, {1, {0x0552 }}},
- { 0x0583, {1, {0x0553 }}},
- { 0x0584, {1, {0x0554 }}},
- { 0x0585, {1, {0x0555 }}},
- { 0x0586, {1, {0x0556 }}},
- { 0x1e01, {1, {0x1e00 }}},
- { 0x1e03, {1, {0x1e02 }}},
- { 0x1e05, {1, {0x1e04 }}},
- { 0x1e07, {1, {0x1e06 }}},
- { 0x1e09, {1, {0x1e08 }}},
- { 0x1e0b, {1, {0x1e0a }}},
- { 0x1e0d, {1, {0x1e0c }}},
- { 0x1e0f, {1, {0x1e0e }}},
- { 0x1e11, {1, {0x1e10 }}},
- { 0x1e13, {1, {0x1e12 }}},
- { 0x1e15, {1, {0x1e14 }}},
- { 0x1e17, {1, {0x1e16 }}},
- { 0x1e19, {1, {0x1e18 }}},
- { 0x1e1b, {1, {0x1e1a }}},
- { 0x1e1d, {1, {0x1e1c }}},
- { 0x1e1f, {1, {0x1e1e }}},
- { 0x1e21, {1, {0x1e20 }}},
- { 0x1e23, {1, {0x1e22 }}},
- { 0x1e25, {1, {0x1e24 }}},
- { 0x1e27, {1, {0x1e26 }}},
- { 0x1e29, {1, {0x1e28 }}},
- { 0x1e2b, {1, {0x1e2a }}},
- { 0x1e2d, {1, {0x1e2c }}},
- { 0x1e2f, {1, {0x1e2e }}},
- { 0x1e31, {1, {0x1e30 }}},
- { 0x1e33, {1, {0x1e32 }}},
- { 0x1e35, {1, {0x1e34 }}},
- { 0x1e37, {1, {0x1e36 }}},
- { 0x1e39, {1, {0x1e38 }}},
- { 0x1e3b, {1, {0x1e3a }}},
- { 0x1e3d, {1, {0x1e3c }}},
- { 0x1e3f, {1, {0x1e3e }}},
- { 0x1e41, {1, {0x1e40 }}},
- { 0x1e43, {1, {0x1e42 }}},
- { 0x1e45, {1, {0x1e44 }}},
- { 0x1e47, {1, {0x1e46 }}},
- { 0x1e49, {1, {0x1e48 }}},
- { 0x1e4b, {1, {0x1e4a }}},
- { 0x1e4d, {1, {0x1e4c }}},
- { 0x1e4f, {1, {0x1e4e }}},
- { 0x1e51, {1, {0x1e50 }}},
- { 0x1e53, {1, {0x1e52 }}},
- { 0x1e55, {1, {0x1e54 }}},
- { 0x1e57, {1, {0x1e56 }}},
- { 0x1e59, {1, {0x1e58 }}},
- { 0x1e5b, {1, {0x1e5a }}},
- { 0x1e5d, {1, {0x1e5c }}},
- { 0x1e5f, {1, {0x1e5e }}},
- { 0x1e61, {2, {0x1e9b, 0x1e60 }}},
- { 0x1e63, {1, {0x1e62 }}},
- { 0x1e65, {1, {0x1e64 }}},
- { 0x1e67, {1, {0x1e66 }}},
- { 0x1e69, {1, {0x1e68 }}},
- { 0x1e6b, {1, {0x1e6a }}},
- { 0x1e6d, {1, {0x1e6c }}},
- { 0x1e6f, {1, {0x1e6e }}},
- { 0x1e71, {1, {0x1e70 }}},
- { 0x1e73, {1, {0x1e72 }}},
- { 0x1e75, {1, {0x1e74 }}},
- { 0x1e77, {1, {0x1e76 }}},
- { 0x1e79, {1, {0x1e78 }}},
- { 0x1e7b, {1, {0x1e7a }}},
- { 0x1e7d, {1, {0x1e7c }}},
- { 0x1e7f, {1, {0x1e7e }}},
- { 0x1e81, {1, {0x1e80 }}},
- { 0x1e83, {1, {0x1e82 }}},
- { 0x1e85, {1, {0x1e84 }}},
- { 0x1e87, {1, {0x1e86 }}},
- { 0x1e89, {1, {0x1e88 }}},
- { 0x1e8b, {1, {0x1e8a }}},
- { 0x1e8d, {1, {0x1e8c }}},
- { 0x1e8f, {1, {0x1e8e }}},
- { 0x1e91, {1, {0x1e90 }}},
- { 0x1e93, {1, {0x1e92 }}},
- { 0x1e95, {1, {0x1e94 }}},
- { 0x1ea1, {1, {0x1ea0 }}},
- { 0x1ea3, {1, {0x1ea2 }}},
- { 0x1ea5, {1, {0x1ea4 }}},
- { 0x1ea7, {1, {0x1ea6 }}},
- { 0x1ea9, {1, {0x1ea8 }}},
- { 0x1eab, {1, {0x1eaa }}},
- { 0x1ead, {1, {0x1eac }}},
- { 0x1eaf, {1, {0x1eae }}},
- { 0x1eb1, {1, {0x1eb0 }}},
- { 0x1eb3, {1, {0x1eb2 }}},
- { 0x1eb5, {1, {0x1eb4 }}},
- { 0x1eb7, {1, {0x1eb6 }}},
- { 0x1eb9, {1, {0x1eb8 }}},
- { 0x1ebb, {1, {0x1eba }}},
- { 0x1ebd, {1, {0x1ebc }}},
- { 0x1ebf, {1, {0x1ebe }}},
- { 0x1ec1, {1, {0x1ec0 }}},
- { 0x1ec3, {1, {0x1ec2 }}},
- { 0x1ec5, {1, {0x1ec4 }}},
- { 0x1ec7, {1, {0x1ec6 }}},
- { 0x1ec9, {1, {0x1ec8 }}},
- { 0x1ecb, {1, {0x1eca }}},
- { 0x1ecd, {1, {0x1ecc }}},
- { 0x1ecf, {1, {0x1ece }}},
- { 0x1ed1, {1, {0x1ed0 }}},
- { 0x1ed3, {1, {0x1ed2 }}},
- { 0x1ed5, {1, {0x1ed4 }}},
- { 0x1ed7, {1, {0x1ed6 }}},
- { 0x1ed9, {1, {0x1ed8 }}},
- { 0x1edb, {1, {0x1eda }}},
- { 0x1edd, {1, {0x1edc }}},
- { 0x1edf, {1, {0x1ede }}},
- { 0x1ee1, {1, {0x1ee0 }}},
- { 0x1ee3, {1, {0x1ee2 }}},
- { 0x1ee5, {1, {0x1ee4 }}},
- { 0x1ee7, {1, {0x1ee6 }}},
- { 0x1ee9, {1, {0x1ee8 }}},
- { 0x1eeb, {1, {0x1eea }}},
- { 0x1eed, {1, {0x1eec }}},
- { 0x1eef, {1, {0x1eee }}},
- { 0x1ef1, {1, {0x1ef0 }}},
- { 0x1ef3, {1, {0x1ef2 }}},
- { 0x1ef5, {1, {0x1ef4 }}},
- { 0x1ef7, {1, {0x1ef6 }}},
- { 0x1ef9, {1, {0x1ef8 }}},
- { 0x1f00, {1, {0x1f08 }}},
- { 0x1f01, {1, {0x1f09 }}},
- { 0x1f02, {1, {0x1f0a }}},
- { 0x1f03, {1, {0x1f0b }}},
- { 0x1f04, {1, {0x1f0c }}},
- { 0x1f05, {1, {0x1f0d }}},
- { 0x1f06, {1, {0x1f0e }}},
- { 0x1f07, {1, {0x1f0f }}},
- { 0x1f10, {1, {0x1f18 }}},
- { 0x1f11, {1, {0x1f19 }}},
- { 0x1f12, {1, {0x1f1a }}},
- { 0x1f13, {1, {0x1f1b }}},
- { 0x1f14, {1, {0x1f1c }}},
- { 0x1f15, {1, {0x1f1d }}},
- { 0x1f20, {1, {0x1f28 }}},
- { 0x1f21, {1, {0x1f29 }}},
- { 0x1f22, {1, {0x1f2a }}},
- { 0x1f23, {1, {0x1f2b }}},
- { 0x1f24, {1, {0x1f2c }}},
- { 0x1f25, {1, {0x1f2d }}},
- { 0x1f26, {1, {0x1f2e }}},
- { 0x1f27, {1, {0x1f2f }}},
- { 0x1f30, {1, {0x1f38 }}},
- { 0x1f31, {1, {0x1f39 }}},
- { 0x1f32, {1, {0x1f3a }}},
- { 0x1f33, {1, {0x1f3b }}},
- { 0x1f34, {1, {0x1f3c }}},
- { 0x1f35, {1, {0x1f3d }}},
- { 0x1f36, {1, {0x1f3e }}},
- { 0x1f37, {1, {0x1f3f }}},
- { 0x1f40, {1, {0x1f48 }}},
- { 0x1f41, {1, {0x1f49 }}},
- { 0x1f42, {1, {0x1f4a }}},
- { 0x1f43, {1, {0x1f4b }}},
- { 0x1f44, {1, {0x1f4c }}},
- { 0x1f45, {1, {0x1f4d }}},
- { 0x1f51, {1, {0x1f59 }}},
- { 0x1f53, {1, {0x1f5b }}},
- { 0x1f55, {1, {0x1f5d }}},
- { 0x1f57, {1, {0x1f5f }}},
- { 0x1f60, {1, {0x1f68 }}},
- { 0x1f61, {1, {0x1f69 }}},
- { 0x1f62, {1, {0x1f6a }}},
- { 0x1f63, {1, {0x1f6b }}},
- { 0x1f64, {1, {0x1f6c }}},
- { 0x1f65, {1, {0x1f6d }}},
- { 0x1f66, {1, {0x1f6e }}},
- { 0x1f67, {1, {0x1f6f }}},
- { 0x1f70, {1, {0x1fba }}},
- { 0x1f71, {1, {0x1fbb }}},
- { 0x1f72, {1, {0x1fc8 }}},
- { 0x1f73, {1, {0x1fc9 }}},
- { 0x1f74, {1, {0x1fca }}},
- { 0x1f75, {1, {0x1fcb }}},
- { 0x1f76, {1, {0x1fda }}},
- { 0x1f77, {1, {0x1fdb }}},
- { 0x1f78, {1, {0x1ff8 }}},
- { 0x1f79, {1, {0x1ff9 }}},
- { 0x1f7a, {1, {0x1fea }}},
- { 0x1f7b, {1, {0x1feb }}},
- { 0x1f7c, {1, {0x1ffa }}},
- { 0x1f7d, {1, {0x1ffb }}},
- { 0x1fb0, {1, {0x1fb8 }}},
- { 0x1fb1, {1, {0x1fb9 }}},
- { 0x1fd0, {1, {0x1fd8 }}},
- { 0x1fd1, {1, {0x1fd9 }}},
- { 0x1fe0, {1, {0x1fe8 }}},
- { 0x1fe1, {1, {0x1fe9 }}},
- { 0x1fe5, {1, {0x1fec }}},
- { 0x2170, {1, {0x2160 }}},
- { 0x2171, {1, {0x2161 }}},
- { 0x2172, {1, {0x2162 }}},
- { 0x2173, {1, {0x2163 }}},
- { 0x2174, {1, {0x2164 }}},
- { 0x2175, {1, {0x2165 }}},
- { 0x2176, {1, {0x2166 }}},
- { 0x2177, {1, {0x2167 }}},
- { 0x2178, {1, {0x2168 }}},
- { 0x2179, {1, {0x2169 }}},
- { 0x217a, {1, {0x216a }}},
- { 0x217b, {1, {0x216b }}},
- { 0x217c, {1, {0x216c }}},
- { 0x217d, {1, {0x216d }}},
- { 0x217e, {1, {0x216e }}},
- { 0x217f, {1, {0x216f }}},
- { 0x24d0, {1, {0x24b6 }}},
- { 0x24d1, {1, {0x24b7 }}},
- { 0x24d2, {1, {0x24b8 }}},
- { 0x24d3, {1, {0x24b9 }}},
- { 0x24d4, {1, {0x24ba }}},
- { 0x24d5, {1, {0x24bb }}},
- { 0x24d6, {1, {0x24bc }}},
- { 0x24d7, {1, {0x24bd }}},
- { 0x24d8, {1, {0x24be }}},
- { 0x24d9, {1, {0x24bf }}},
- { 0x24da, {1, {0x24c0 }}},
- { 0x24db, {1, {0x24c1 }}},
- { 0x24dc, {1, {0x24c2 }}},
- { 0x24dd, {1, {0x24c3 }}},
- { 0x24de, {1, {0x24c4 }}},
- { 0x24df, {1, {0x24c5 }}},
- { 0x24e0, {1, {0x24c6 }}},
- { 0x24e1, {1, {0x24c7 }}},
- { 0x24e2, {1, {0x24c8 }}},
- { 0x24e3, {1, {0x24c9 }}},
- { 0x24e4, {1, {0x24ca }}},
- { 0x24e5, {1, {0x24cb }}},
- { 0x24e6, {1, {0x24cc }}},
- { 0x24e7, {1, {0x24cd }}},
- { 0x24e8, {1, {0x24ce }}},
- { 0x24e9, {1, {0x24cf }}},
- { 0x2c30, {1, {0x2c00 }}},
- { 0x2c31, {1, {0x2c01 }}},
- { 0x2c32, {1, {0x2c02 }}},
- { 0x2c33, {1, {0x2c03 }}},
- { 0x2c34, {1, {0x2c04 }}},
- { 0x2c35, {1, {0x2c05 }}},
- { 0x2c36, {1, {0x2c06 }}},
- { 0x2c37, {1, {0x2c07 }}},
- { 0x2c38, {1, {0x2c08 }}},
- { 0x2c39, {1, {0x2c09 }}},
- { 0x2c3a, {1, {0x2c0a }}},
- { 0x2c3b, {1, {0x2c0b }}},
- { 0x2c3c, {1, {0x2c0c }}},
- { 0x2c3d, {1, {0x2c0d }}},
- { 0x2c3e, {1, {0x2c0e }}},
- { 0x2c3f, {1, {0x2c0f }}},
- { 0x2c40, {1, {0x2c10 }}},
- { 0x2c41, {1, {0x2c11 }}},
- { 0x2c42, {1, {0x2c12 }}},
- { 0x2c43, {1, {0x2c13 }}},
- { 0x2c44, {1, {0x2c14 }}},
- { 0x2c45, {1, {0x2c15 }}},
- { 0x2c46, {1, {0x2c16 }}},
- { 0x2c47, {1, {0x2c17 }}},
- { 0x2c48, {1, {0x2c18 }}},
- { 0x2c49, {1, {0x2c19 }}},
- { 0x2c4a, {1, {0x2c1a }}},
- { 0x2c4b, {1, {0x2c1b }}},
- { 0x2c4c, {1, {0x2c1c }}},
- { 0x2c4d, {1, {0x2c1d }}},
- { 0x2c4e, {1, {0x2c1e }}},
- { 0x2c4f, {1, {0x2c1f }}},
- { 0x2c50, {1, {0x2c20 }}},
- { 0x2c51, {1, {0x2c21 }}},
- { 0x2c52, {1, {0x2c22 }}},
- { 0x2c53, {1, {0x2c23 }}},
- { 0x2c54, {1, {0x2c24 }}},
- { 0x2c55, {1, {0x2c25 }}},
- { 0x2c56, {1, {0x2c26 }}},
- { 0x2c57, {1, {0x2c27 }}},
- { 0x2c58, {1, {0x2c28 }}},
- { 0x2c59, {1, {0x2c29 }}},
- { 0x2c5a, {1, {0x2c2a }}},
- { 0x2c5b, {1, {0x2c2b }}},
- { 0x2c5c, {1, {0x2c2c }}},
- { 0x2c5d, {1, {0x2c2d }}},
- { 0x2c5e, {1, {0x2c2e }}},
- { 0x2c81, {1, {0x2c80 }}},
- { 0x2c83, {1, {0x2c82 }}},
- { 0x2c85, {1, {0x2c84 }}},
- { 0x2c87, {1, {0x2c86 }}},
- { 0x2c89, {1, {0x2c88 }}},
- { 0x2c8b, {1, {0x2c8a }}},
- { 0x2c8d, {1, {0x2c8c }}},
- { 0x2c8f, {1, {0x2c8e }}},
- { 0x2c91, {1, {0x2c90 }}},
- { 0x2c93, {1, {0x2c92 }}},
- { 0x2c95, {1, {0x2c94 }}},
- { 0x2c97, {1, {0x2c96 }}},
- { 0x2c99, {1, {0x2c98 }}},
- { 0x2c9b, {1, {0x2c9a }}},
- { 0x2c9d, {1, {0x2c9c }}},
- { 0x2c9f, {1, {0x2c9e }}},
- { 0x2ca1, {1, {0x2ca0 }}},
- { 0x2ca3, {1, {0x2ca2 }}},
- { 0x2ca5, {1, {0x2ca4 }}},
- { 0x2ca7, {1, {0x2ca6 }}},
- { 0x2ca9, {1, {0x2ca8 }}},
- { 0x2cab, {1, {0x2caa }}},
- { 0x2cad, {1, {0x2cac }}},
- { 0x2caf, {1, {0x2cae }}},
- { 0x2cb1, {1, {0x2cb0 }}},
- { 0x2cb3, {1, {0x2cb2 }}},
- { 0x2cb5, {1, {0x2cb4 }}},
- { 0x2cb7, {1, {0x2cb6 }}},
- { 0x2cb9, {1, {0x2cb8 }}},
- { 0x2cbb, {1, {0x2cba }}},
- { 0x2cbd, {1, {0x2cbc }}},
- { 0x2cbf, {1, {0x2cbe }}},
- { 0x2cc1, {1, {0x2cc0 }}},
- { 0x2cc3, {1, {0x2cc2 }}},
- { 0x2cc5, {1, {0x2cc4 }}},
- { 0x2cc7, {1, {0x2cc6 }}},
- { 0x2cc9, {1, {0x2cc8 }}},
- { 0x2ccb, {1, {0x2cca }}},
- { 0x2ccd, {1, {0x2ccc }}},
- { 0x2ccf, {1, {0x2cce }}},
- { 0x2cd1, {1, {0x2cd0 }}},
- { 0x2cd3, {1, {0x2cd2 }}},
- { 0x2cd5, {1, {0x2cd4 }}},
- { 0x2cd7, {1, {0x2cd6 }}},
- { 0x2cd9, {1, {0x2cd8 }}},
- { 0x2cdb, {1, {0x2cda }}},
- { 0x2cdd, {1, {0x2cdc }}},
- { 0x2cdf, {1, {0x2cde }}},
- { 0x2ce1, {1, {0x2ce0 }}},
- { 0x2ce3, {1, {0x2ce2 }}},
- { 0x2d00, {1, {0x10a0 }}},
- { 0x2d01, {1, {0x10a1 }}},
- { 0x2d02, {1, {0x10a2 }}},
- { 0x2d03, {1, {0x10a3 }}},
- { 0x2d04, {1, {0x10a4 }}},
- { 0x2d05, {1, {0x10a5 }}},
- { 0x2d06, {1, {0x10a6 }}},
- { 0x2d07, {1, {0x10a7 }}},
- { 0x2d08, {1, {0x10a8 }}},
- { 0x2d09, {1, {0x10a9 }}},
- { 0x2d0a, {1, {0x10aa }}},
- { 0x2d0b, {1, {0x10ab }}},
- { 0x2d0c, {1, {0x10ac }}},
- { 0x2d0d, {1, {0x10ad }}},
- { 0x2d0e, {1, {0x10ae }}},
- { 0x2d0f, {1, {0x10af }}},
- { 0x2d10, {1, {0x10b0 }}},
- { 0x2d11, {1, {0x10b1 }}},
- { 0x2d12, {1, {0x10b2 }}},
- { 0x2d13, {1, {0x10b3 }}},
- { 0x2d14, {1, {0x10b4 }}},
- { 0x2d15, {1, {0x10b5 }}},
- { 0x2d16, {1, {0x10b6 }}},
- { 0x2d17, {1, {0x10b7 }}},
- { 0x2d18, {1, {0x10b8 }}},
- { 0x2d19, {1, {0x10b9 }}},
- { 0x2d1a, {1, {0x10ba }}},
- { 0x2d1b, {1, {0x10bb }}},
- { 0x2d1c, {1, {0x10bc }}},
- { 0x2d1d, {1, {0x10bd }}},
- { 0x2d1e, {1, {0x10be }}},
- { 0x2d1f, {1, {0x10bf }}},
- { 0x2d20, {1, {0x10c0 }}},
- { 0x2d21, {1, {0x10c1 }}},
- { 0x2d22, {1, {0x10c2 }}},
- { 0x2d23, {1, {0x10c3 }}},
- { 0x2d24, {1, {0x10c4 }}},
- { 0x2d25, {1, {0x10c5 }}},
- { 0xff41, {1, {0xff21 }}},
- { 0xff42, {1, {0xff22 }}},
- { 0xff43, {1, {0xff23 }}},
- { 0xff44, {1, {0xff24 }}},
- { 0xff45, {1, {0xff25 }}},
- { 0xff46, {1, {0xff26 }}},
- { 0xff47, {1, {0xff27 }}},
- { 0xff48, {1, {0xff28 }}},
- { 0xff49, {1, {0xff29 }}},
- { 0xff4a, {1, {0xff2a }}},
- { 0xff4b, {1, {0xff2b }}},
- { 0xff4c, {1, {0xff2c }}},
- { 0xff4d, {1, {0xff2d }}},
- { 0xff4e, {1, {0xff2e }}},
- { 0xff4f, {1, {0xff2f }}},
- { 0xff50, {1, {0xff30 }}},
- { 0xff51, {1, {0xff31 }}},
- { 0xff52, {1, {0xff32 }}},
- { 0xff53, {1, {0xff33 }}},
- { 0xff54, {1, {0xff34 }}},
- { 0xff55, {1, {0xff35 }}},
- { 0xff56, {1, {0xff36 }}},
- { 0xff57, {1, {0xff37 }}},
- { 0xff58, {1, {0xff38 }}},
- { 0xff59, {1, {0xff39 }}},
- { 0xff5a, {1, {0xff3a }}},
- { 0x10428, {1, {0x10400 }}},
- { 0x10429, {1, {0x10401 }}},
- { 0x1042a, {1, {0x10402 }}},
- { 0x1042b, {1, {0x10403 }}},
- { 0x1042c, {1, {0x10404 }}},
- { 0x1042d, {1, {0x10405 }}},
- { 0x1042e, {1, {0x10406 }}},
- { 0x1042f, {1, {0x10407 }}},
- { 0x10430, {1, {0x10408 }}},
- { 0x10431, {1, {0x10409 }}},
- { 0x10432, {1, {0x1040a }}},
- { 0x10433, {1, {0x1040b }}},
- { 0x10434, {1, {0x1040c }}},
- { 0x10435, {1, {0x1040d }}},
- { 0x10436, {1, {0x1040e }}},
- { 0x10437, {1, {0x1040f }}},
- { 0x10438, {1, {0x10410 }}},
- { 0x10439, {1, {0x10411 }}},
- { 0x1043a, {1, {0x10412 }}},
- { 0x1043b, {1, {0x10413 }}},
- { 0x1043c, {1, {0x10414 }}},
- { 0x1043d, {1, {0x10415 }}},
- { 0x1043e, {1, {0x10416 }}},
- { 0x1043f, {1, {0x10417 }}},
- { 0x10440, {1, {0x10418 }}},
- { 0x10441, {1, {0x10419 }}},
- { 0x10442, {1, {0x1041a }}},
- { 0x10443, {1, {0x1041b }}},
- { 0x10444, {1, {0x1041c }}},
- { 0x10445, {1, {0x1041d }}},
- { 0x10446, {1, {0x1041e }}},
- { 0x10447, {1, {0x1041f }}},
- { 0x10448, {1, {0x10420 }}},
- { 0x10449, {1, {0x10421 }}},
- { 0x1044a, {1, {0x10422 }}},
- { 0x1044b, {1, {0x10423 }}},
- { 0x1044c, {1, {0x10424 }}},
- { 0x1044d, {1, {0x10425 }}},
- { 0x1044e, {1, {0x10426 }}},
- { 0x1044f, {1, {0x10427 }}}
-};
-
-static const CaseUnfold_11_Type CaseUnfold_11_Locale[] = {
- { 0x0069, {1, {0x0049 }}}
-};
-
-static const CaseUnfold_12_Type CaseUnfold_12[] = {
- { {0x0061, 0x02be}, {1, {0x1e9a }}},
- { {0x0066, 0x0066}, {1, {0xfb00 }}},
- { {0x0066, 0x0069}, {1, {0xfb01 }}},
- { {0x0066, 0x006c}, {1, {0xfb02 }}},
- { {0x0068, 0x0331}, {1, {0x1e96 }}},
- { {0x006a, 0x030c}, {1, {0x01f0 }}},
- { {0x0073, 0x0073}, {1, {0x00df }}},
- { {0x0073, 0x0074}, {2, {0xfb05, 0xfb06 }}},
- { {0x0074, 0x0308}, {1, {0x1e97 }}},
- { {0x0077, 0x030a}, {1, {0x1e98 }}},
- { {0x0079, 0x030a}, {1, {0x1e99 }}},
- { {0x02bc, 0x006e}, {1, {0x0149 }}},
- { {0x03ac, 0x03b9}, {1, {0x1fb4 }}},
- { {0x03ae, 0x03b9}, {1, {0x1fc4 }}},
- { {0x03b1, 0x0342}, {1, {0x1fb6 }}},
- { {0x03b1, 0x03b9}, {2, {0x1fb3, 0x1fbc }}},
- { {0x03b7, 0x0342}, {1, {0x1fc6 }}},
- { {0x03b7, 0x03b9}, {2, {0x1fc3, 0x1fcc }}},
- { {0x03b9, 0x0342}, {1, {0x1fd6 }}},
- { {0x03c1, 0x0313}, {1, {0x1fe4 }}},
- { {0x03c5, 0x0313}, {1, {0x1f50 }}},
- { {0x03c5, 0x0342}, {1, {0x1fe6 }}},
- { {0x03c9, 0x0342}, {1, {0x1ff6 }}},
- { {0x03c9, 0x03b9}, {2, {0x1ff3, 0x1ffc }}},
- { {0x03ce, 0x03b9}, {1, {0x1ff4 }}},
- { {0x0565, 0x0582}, {1, {0x0587 }}},
- { {0x0574, 0x0565}, {1, {0xfb14 }}},
- { {0x0574, 0x056b}, {1, {0xfb15 }}},
- { {0x0574, 0x056d}, {1, {0xfb17 }}},
- { {0x0574, 0x0576}, {1, {0xfb13 }}},
- { {0x057e, 0x0576}, {1, {0xfb16 }}},
- { {0x1f00, 0x03b9}, {2, {0x1f88, 0x1f80 }}},
- { {0x1f01, 0x03b9}, {2, {0x1f81, 0x1f89 }}},
- { {0x1f02, 0x03b9}, {2, {0x1f82, 0x1f8a }}},
- { {0x1f03, 0x03b9}, {2, {0x1f83, 0x1f8b }}},
- { {0x1f04, 0x03b9}, {2, {0x1f84, 0x1f8c }}},
- { {0x1f05, 0x03b9}, {2, {0x1f85, 0x1f8d }}},
- { {0x1f06, 0x03b9}, {2, {0x1f86, 0x1f8e }}},
- { {0x1f07, 0x03b9}, {2, {0x1f87, 0x1f8f }}},
- { {0x1f20, 0x03b9}, {2, {0x1f90, 0x1f98 }}},
- { {0x1f21, 0x03b9}, {2, {0x1f91, 0x1f99 }}},
- { {0x1f22, 0x03b9}, {2, {0x1f92, 0x1f9a }}},
- { {0x1f23, 0x03b9}, {2, {0x1f93, 0x1f9b }}},
- { {0x1f24, 0x03b9}, {2, {0x1f94, 0x1f9c }}},
- { {0x1f25, 0x03b9}, {2, {0x1f95, 0x1f9d }}},
- { {0x1f26, 0x03b9}, {2, {0x1f96, 0x1f9e }}},
- { {0x1f27, 0x03b9}, {2, {0x1f97, 0x1f9f }}},
- { {0x1f60, 0x03b9}, {2, {0x1fa0, 0x1fa8 }}},
- { {0x1f61, 0x03b9}, {2, {0x1fa1, 0x1fa9 }}},
- { {0x1f62, 0x03b9}, {2, {0x1fa2, 0x1faa }}},
- { {0x1f63, 0x03b9}, {2, {0x1fa3, 0x1fab }}},
- { {0x1f64, 0x03b9}, {2, {0x1fa4, 0x1fac }}},
- { {0x1f65, 0x03b9}, {2, {0x1fa5, 0x1fad }}},
- { {0x1f66, 0x03b9}, {2, {0x1fa6, 0x1fae }}},
- { {0x1f67, 0x03b9}, {2, {0x1fa7, 0x1faf }}},
- { {0x1f70, 0x03b9}, {1, {0x1fb2 }}},
- { {0x1f74, 0x03b9}, {1, {0x1fc2 }}},
- { {0x1f7c, 0x03b9}, {1, {0x1ff2 }}}
-};
-
-static const CaseUnfold_12_Type CaseUnfold_12_Locale[] = {
- { {0x0069, 0x0307}, {1, {0x0130 }}}
-};
-
-static const CaseUnfold_13_Type CaseUnfold_13[] = {
- { {0x0066, 0x0066, 0x0069}, {1, {0xfb03 }}},
- { {0x0066, 0x0066, 0x006c}, {1, {0xfb04 }}},
- { {0x03b1, 0x0342, 0x03b9}, {1, {0x1fb7 }}},
- { {0x03b7, 0x0342, 0x03b9}, {1, {0x1fc7 }}},
- { {0x03b9, 0x0308, 0x0300}, {1, {0x1fd2 }}},
- { {0x03b9, 0x0308, 0x0301}, {2, {0x0390, 0x1fd3 }}},
- { {0x03b9, 0x0308, 0x0342}, {1, {0x1fd7 }}},
- { {0x03c5, 0x0308, 0x0300}, {1, {0x1fe2 }}},
- { {0x03c5, 0x0308, 0x0301}, {2, {0x03b0, 0x1fe3 }}},
- { {0x03c5, 0x0308, 0x0342}, {1, {0x1fe7 }}},
- { {0x03c5, 0x0313, 0x0300}, {1, {0x1f52 }}},
- { {0x03c5, 0x0313, 0x0301}, {1, {0x1f54 }}},
- { {0x03c5, 0x0313, 0x0342}, {1, {0x1f56 }}},
- { {0x03c9, 0x0342, 0x03b9}, {1, {0x1ff7 }}}
-};
-
-
 #ifdef USE_UNICODE_PROPERTIES
 #define CODE_RANGES_NUM     115
 #else
 #define CODE_RANGES_NUM      15
 #endif
 
-static int unicode_inited = 0;
 static const OnigCodePoint* CodeRanges[CODE_RANGES_NUM] = {
   CR_NEWLINE, /*   0 */
   CR_Alpha,   /*   1 */
@@ -10654,7 +8689,6 @@ onigenc_utf16_32_get_ctype_code_range(OnigCtype ctype, OnigCodePoint* sb_out,
   return onigenc_unicode_ctype_code_range(ctype, ranges);
 }
 
-#include "st.h"
 
 #define PROPERTY_NAME_MAX_SIZE    20
 
@@ -10696,130 +8730,17 @@ onigenc_unicode_property_name_to_ctype(OnigEncoding enc, UChar* name, UChar* end
   return ONIGERR_INVALID_CHAR_PROPERTY_NAME;
 }
 
+/* for use macros in unicode_fold_data.c */
+#include "unicode_fold_data.c"
 
-static int
-code2_cmp(OnigCodePoint* x, OnigCodePoint* y)
-{
-  if (x[0] == y[0] && x[1] == y[1]) return 0;
-  return 1;
-}
-
-static int
-code2_hash(OnigCodePoint* x)
-{
-  return (int )(x[0] + x[1]);
-}
-
-static struct st_hash_type type_code2_hash = {
-  code2_cmp,
-  code2_hash,
-};
-
-static int
-code3_cmp(OnigCodePoint* x, OnigCodePoint* y)
-{
-  if (x[0] == y[0] && x[1] == y[1] && x[2] == y[2]) return 0;
-  return 1;
-}
-
-static int
-code3_hash(OnigCodePoint* x)
-{
-  return (int )(x[0] + x[1] + x[2]);
-}
-
-static struct st_hash_type type_code3_hash = {
-  code3_cmp,
-  code3_hash,
-};
-
-
-static st_table* FoldTable;    /* fold-1, fold-2, fold-3 */
-static st_table* Unfold1Table;
-static st_table* Unfold2Table;
-static st_table* Unfold3Table;
-
-
-extern void
-onigenc_end_unicode(void)
-{
-  if (FoldTable    != 0) st_free_table(FoldTable);
-  if (Unfold1Table != 0) st_free_table(Unfold1Table);
-  if (Unfold2Table != 0) st_free_table(Unfold2Table);
-  if (Unfold3Table != 0) st_free_table(Unfold3Table);
-
-  unicode_inited = 0;
-}
-
-static int
-init_case_fold_table(void)
-{
-  const CaseFold_11_Type   *p;
-  const CaseUnfold_11_Type *p1;
-  const CaseUnfold_12_Type *p2;
-  const CaseUnfold_13_Type *p3;
-  int i;
-
-  FoldTable = st_init_numtable_with_size(1200);
-  if (ONIG_IS_NULL(FoldTable)) return ONIGERR_MEMORY;
-  for (i = 0; i < (int )(sizeof(CaseFold)/sizeof(CaseFold_11_Type)); i++) {
-    p = &CaseFold[i];
-    st_add_direct(FoldTable, (st_data_t )p->from, (st_data_t )&(p->to));
-  }
-  for (i = 0; i < (int )(sizeof(CaseFold_Locale)/sizeof(CaseFold_11_Type));
-       i++) {
-    p = &CaseFold_Locale[i];
-    st_add_direct(FoldTable, (st_data_t )p->from, (st_data_t )&(p->to));
-  }
-
-  Unfold1Table = st_init_numtable_with_size(1000);
-  if (ONIG_IS_NULL(Unfold1Table)) return ONIGERR_MEMORY;
-
-  for (i = 0; i < (int )(sizeof(CaseUnfold_11)/sizeof(CaseUnfold_11_Type));
-       i++) {
-    p1 = &CaseUnfold_11[i];
-    st_add_direct(Unfold1Table, (st_data_t )p1->from, (st_data_t )&(p1->to));
-  }
-  for (i = 0;
-       i < (int )(sizeof(CaseUnfold_11_Locale)/sizeof(CaseUnfold_11_Type));
-       i++) {
-    p1 = &CaseUnfold_11_Locale[i];
-    st_add_direct(Unfold1Table, (st_data_t )p1->from, (st_data_t )&(p1->to));
-  }
-
-  Unfold2Table = st_init_table_with_size(&type_code2_hash, 200);
-  if (ONIG_IS_NULL(Unfold2Table)) return ONIGERR_MEMORY;
-
-  for (i = 0; i < (int )(sizeof(CaseUnfold_12)/sizeof(CaseUnfold_12_Type));
-       i++) {
-    p2 = &CaseUnfold_12[i];
-    st_add_direct(Unfold2Table, (st_data_t )p2->from, (st_data_t )(&p2->to));
-  }
-  for (i = 0;
-       i < (int )(sizeof(CaseUnfold_12_Locale)/sizeof(CaseUnfold_12_Type));
-       i++) {
-    p2 = &CaseUnfold_12_Locale[i];
-    st_add_direct(Unfold2Table, (st_data_t )p2->from, (st_data_t )(&p2->to));
-  }
-
-  Unfold3Table = st_init_table_with_size(&type_code3_hash, 30);
-  if (ONIG_IS_NULL(Unfold3Table)) return ONIGERR_MEMORY;
-
-  for (i = 0; i < (int )(sizeof(CaseUnfold_13)/sizeof(CaseUnfold_13_Type));
-       i++) {
-    p3 = &CaseUnfold_13[i];
-    st_add_direct(Unfold3Table, (st_data_t )p3->from, (st_data_t )(&p3->to));
-  }
-
-  return 0;
-}
 
 extern int
 onigenc_unicode_mbc_case_fold(OnigEncoding enc,
     OnigCaseFoldType flag ARG_UNUSED, const UChar** pp, const UChar* end,
     UChar* fold)
 {
-  CodePointList3 *to;
+  const struct ByUnfoldKey* buk;
+
   OnigCodePoint code;
   int i, len, rlen;
   const UChar *p = *pp;
@@ -10841,14 +8762,19 @@ onigenc_unicode_mbc_case_fold(OnigEncoding enc,
   }
 #endif
 
-  if (onig_st_lookup(FoldTable, (st_data_t )code, (void* )&to) != 0) {
-    if (to->n == 1) {
-      return ONIGENC_CODE_TO_MBC(enc, to->code[0], fold);      
+  buk = unicode_unfold_key(code);
+  if (buk != 0) {
+    if (buk->fold_len == 1) {
+      return ONIGENC_CODE_TO_MBC(enc, *FOLDS1_FOLD(buk->index), fold);
     }
     else {
+      OnigCodePoint* addr;
+
+      FOLDS_FOLD_ADDR_BUK(buk, addr);
       rlen = 0;
-      for (i = 0; i < to->n; i++) {
-        len = ONIGENC_CODE_TO_MBC(enc, to->code[i], fold);
+      for (i = 0; i < buk->fold_len; i++) {
+       OnigCodePoint c = addr[i];
+        len = ONIGENC_CODE_TO_MBC(enc, c, fold);
         fold += len;
         rlen += len;
       }
@@ -10862,36 +8788,104 @@ onigenc_unicode_mbc_case_fold(OnigEncoding enc,
   return len;
 }
 
-extern int
-onigenc_unicode_apply_all_case_fold(OnigCaseFoldType flag,
-                                   OnigApplyAllCaseFoldFunc f, void* arg)
+static int
+apply_case_fold1(int from, int to, OnigApplyAllCaseFoldFunc f, void* arg)
 {
-  const CaseUnfold_11_Type* p11;
-  OnigCodePoint code;
-  int i, j, k, r;
-
-  for (i = 0; i < (int )(sizeof(CaseUnfold_11)/sizeof(CaseUnfold_11_Type));
-       i++) {
-    p11 = &CaseUnfold_11[i];
-    for (j = 0; j < p11->to.n; j++) {
-      code = p11->from;
-      r = (*f)(p11->to.code[j], &code, 1, arg);
+  int i, j, k, n, r;
+
+  for (i = from; i < to; ) {
+    OnigCodePoint fold = *FOLDS1_FOLD(i);
+    n = FOLDS1_UNFOLDS_NUM(i);
+    for (j = 0; j < n; j++) {
+      OnigCodePoint unfold = FOLDS1_UNFOLDS(i)[j];
+
+      r = (*f)(fold, &unfold, 1, arg);
+      if (r != 0) return r;
+      r = (*f)(unfold, &fold, 1, arg);
       if (r != 0) return r;
 
-      code = p11->to.code[j];
-      r = (*f)(p11->from, &code, 1, arg);
+      for (k = 0; k < j; k++) {
+        OnigCodePoint unfold2 = FOLDS1_UNFOLDS(i)[k];
+        r = (*f)(unfold, &unfold2, 1, arg);
+        if (r != 0) return r;
+        r = (*f)(unfold2, &unfold, 1, arg);
+        if (r != 0) return r;
+      }
+    }
+
+    i = FOLDS1_NEXT_INDEX(i);
+  }
+
+  return 0;
+}
+
+static int
+apply_case_fold2(int from, int to, OnigApplyAllCaseFoldFunc f, void* arg)
+{
+  int i, j, k, n, r;
+
+  for (i = from; i < to; ) {
+    OnigCodePoint* fold = FOLDS2_FOLD(i);
+    n = FOLDS2_UNFOLDS_NUM(i);
+    for (j = 0; j < n; j++) {
+      OnigCodePoint unfold = FOLDS2_UNFOLDS(i)[j];
+
+      r = (*f)(unfold, fold, 2, arg);
       if (r != 0) return r;
 
       for (k = 0; k < j; k++) {
-        r = (*f)(p11->to.code[j], (OnigCodePoint* )(&p11->to.code[k]), 1, arg);
+        OnigCodePoint unfold2 = FOLDS2_UNFOLDS(i)[k];
+        r = (*f)(unfold, &unfold2, 1, arg);
+        if (r != 0) return r;
+        r = (*f)(unfold2, &unfold, 1, arg);
         if (r != 0) return r;
+      }
+    }
 
-        r = (*f)(p11->to.code[k], (OnigCodePoint* )(&p11->to.code[j]), 1, arg);
+    i = FOLDS2_NEXT_INDEX(i);
+  }
+
+  return 0;
+}
+
+static int
+apply_case_fold3(int from, int to, OnigApplyAllCaseFoldFunc f, void* arg)
+{
+  int i, j, k, n, r;
+
+  for (i = from; i < to; ) {
+    OnigCodePoint* fold = FOLDS3_FOLD(i);
+    n = FOLDS3_UNFOLDS_NUM(i);
+    for (j = 0; j < n; j++) {
+      OnigCodePoint unfold = FOLDS3_UNFOLDS(i)[j];
+
+      r = (*f)(unfold, fold, 3, arg);
+      if (r != 0) return r;
+
+      for (k = 0; k < j; k++) {
+        OnigCodePoint unfold2 = FOLDS3_UNFOLDS(i)[k];
+        r = (*f)(unfold, &unfold2, 1, arg);
+        if (r != 0) return r;
+        r = (*f)(unfold2, &unfold, 1, arg);
         if (r != 0) return r;
       }
     }
+
+    i = FOLDS3_NEXT_INDEX(i);
   }
 
+  return 0;
+}
+
+extern int
+onigenc_unicode_apply_all_case_fold(OnigCaseFoldType flag,
+                                   OnigApplyAllCaseFoldFunc f, void* arg)
+{
+  int r;
+
+  r = apply_case_fold1(0, FOLDS1_NORMAL_END_INDEX, f, arg);
+  if (r != 0) return r;
+
 #ifdef USE_UNICODE_CASE_FOLD_TURKISH_AZERI
   if ((flag & ONIGENC_CASE_FOLD_TURKISH_AZERI) != 0) {
     code = 0x0131;
@@ -10910,94 +8904,29 @@ onigenc_unicode_apply_all_case_fold(OnigCaseFoldType flag,
   }
   else {
 #endif
-    for (i = 0;
-         i < (int )(sizeof(CaseUnfold_11_Locale)/sizeof(CaseUnfold_11_Type));
-         i++) {
-      p11 = &CaseUnfold_11_Locale[i];
-      for (j = 0; j < p11->to.n; j++) {
-        code = p11->from;
-        r = (*f)(p11->to.code[j], &code, 1, arg);
-        if (r != 0) return r;
-
-        code = p11->to.code[j];
-        r = (*f)(p11->from, &code, 1, arg);
-        if (r != 0) return r;
-
-        for (k = 0; k < j; k++) {
-          r = (*f)(p11->to.code[j], (OnigCodePoint* )(&p11->to.code[k]),
-                   1, arg);
-          if (r != 0) return r;
-
-          r = (*f)(p11->to.code[k], (OnigCodePoint* )(&p11->to.code[j]),
-                   1, arg);
-          if (r != 0) return r;
-        }
-      }
-    }
+    r = apply_case_fold1(FOLDS1_NORMAL_END_INDEX, FOLDS1_END_INDEX, f, arg);
+    if (r != 0) return r;
 #ifdef USE_UNICODE_CASE_FOLD_TURKISH_AZERI
   }
 #endif
 
-  if ((flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) != 0) {
-    for (i = 0; i < (int )(sizeof(CaseUnfold_12)/sizeof(CaseUnfold_12_Type));
-         i++) {
-      for (j = 0; j < CaseUnfold_12[i].to.n; j++) {
-        r = (*f)(CaseUnfold_12[i].to.code[j],
-                 (OnigCodePoint* )CaseUnfold_12[i].from, 2, arg);
-        if (r != 0) return r;
-
-        for (k = 0; k < CaseUnfold_12[i].to.n; k++) {
-          if (k == j) continue;
+  if ((flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) == 0)
+    return 0;
 
-          r = (*f)(CaseUnfold_12[i].to.code[j],
-                   (OnigCodePoint* )(&CaseUnfold_12[i].to.code[k]), 1, arg);
-          if (r != 0) return r;
-        }
-      }
-    }
+  r = apply_case_fold2(0, FOLDS2_NORMAL_END_INDEX, f, arg);
+  if (r != 0) return r;
 
 #ifdef USE_UNICODE_CASE_FOLD_TURKISH_AZERI
-    if ((flag & ONIGENC_CASE_FOLD_TURKISH_AZERI) == 0) {
+  if ((flag & ONIGENC_CASE_FOLD_TURKISH_AZERI) == 0) {
 #endif
-      for (i = 0;
-           i < (int )(sizeof(CaseUnfold_12_Locale)/sizeof(CaseUnfold_12_Type));
-           i++) {
-        for (j = 0; j < CaseUnfold_12_Locale[i].to.n; j++) {
-          r = (*f)(CaseUnfold_12_Locale[i].to.code[j],
-                   (OnigCodePoint* )CaseUnfold_12_Locale[i].from, 2, arg);
-          if (r != 0) return r;
-
-          for (k = 0; k < CaseUnfold_12_Locale[i].to.n; k++) {
-            if (k == j) continue;
-
-            r = (*f)(CaseUnfold_12_Locale[i].to.code[j],
-                     (OnigCodePoint* )(&CaseUnfold_12_Locale[i].to.code[k]),
-                     1, arg);
-            if (r != 0) return r;
-          }
-        }
-      }
+    r = apply_case_fold2(FOLDS2_NORMAL_END_INDEX, FOLDS2_END_INDEX, f, arg);
+    if (r != 0) return r;
 #ifdef USE_UNICODE_CASE_FOLD_TURKISH_AZERI
-    }
+  }
 #endif
 
-    for (i = 0; i < (int )(sizeof(CaseUnfold_13)/sizeof(CaseUnfold_13_Type));
-         i++) {
-      for (j = 0; j < CaseUnfold_13[i].to.n; j++) {
-        r = (*f)(CaseUnfold_13[i].to.code[j],
-                 (OnigCodePoint* )CaseUnfold_13[i].from, 3, arg);
-        if (r != 0) return r;
-
-        for (k = 0; k < CaseUnfold_13[i].to.n; k++) {
-          if (k == j) continue;
-
-          r = (*f)(CaseUnfold_13[i].to.code[j],
-                   (OnigCodePoint* )(&CaseUnfold_13[i].to.code[k]), 1, arg);
-          if (r != 0) return r;
-        }
-      }
-    }
-  }
+  r = apply_case_fold3(0, FOLDS3_NORMAL_END_INDEX, f, arg);
+  if (r != 0) return r;
 
   return 0;
 }
@@ -11007,10 +8936,9 @@ onigenc_unicode_get_case_fold_codes_by_str(OnigEncoding enc,
     OnigCaseFoldType flag, const OnigUChar* p, const OnigUChar* end,
     OnigCaseFoldCodeItem items[])
 {
-  int n, i, j, k, len;
+  int n, m, i, j, k, len;
   OnigCodePoint code, codes[3];
-  CodePointList3 *to, *z3;
-  CodePointList2 *z2;
+  const struct ByUnfoldKey* buk;
 
   n = 0;
 
@@ -11046,45 +8974,56 @@ onigenc_unicode_get_case_fold_codes_by_str(OnigEncoding enc,
   }
 #endif
 
-  if (onig_st_lookup(FoldTable, (st_data_t )code, (void* )&to) != 0) {
-    if (to->n == 1) {
-      OnigCodePoint orig_code = code;
-
+  buk = unicode_unfold_key(code);
+  if (buk != 0) {
+    if (buk->fold_len == 1) {
       items[0].byte_len = len;
       items[0].code_len = 1;
-      items[0].code[0]  = to->code[0];
+      items[0].code[0]  = *FOLDS1_FOLD(buk->index);
       n++;
 
-      code = to->code[0];
-      if (onig_st_lookup(Unfold1Table, (st_data_t )code, (void* )&to) != 0) {
-        for (i = 0; i < to->n; i++) {
-          if (to->code[i] != orig_code) {
-            items[n].byte_len = len;
-            items[n].code_len = 1;
-            items[n].code[0]  = to->code[i];
-            n++;
-          }
+      int un = FOLDS1_UNFOLDS_NUM(buk->index);
+      for (i = 0; i < un; i++) {
+        OnigCodePoint unfold = FOLDS1_UNFOLDS(buk->index)[i];
+        if (unfold != code) {
+          items[n].byte_len = len;
+          items[n].code_len = 1;
+          items[n].code[0]  = unfold;
+          n++;
         }
       }
+      code = items[0].code[0]; // for multi-code to unfold search.
     }
     else if ((flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) != 0) {
       OnigCodePoint cs[3][4];
       int fn, ncs[3];
 
-      for (fn = 0; fn < to->n; fn++) {
-        cs[fn][0] = to->code[fn];
-        if (onig_st_lookup(Unfold1Table, (st_data_t )cs[fn][0],
-                           (void* )&z3) != 0) {
-          for (i = 0; i < z3->n; i++) {
-            cs[fn][i+1] = z3->code[i];
+      if (buk->fold_len == 2) {
+        m = FOLDS2_UNFOLDS_NUM(buk->index);
+        for (i = 0; i < m; i++) {
+          OnigCodePoint unfold = FOLDS2_UNFOLDS(buk->index)[i];
+          if (unfold == code) continue;
+
+          items[n].byte_len = len;
+          items[n].code_len = 1;
+          items[n].code[0]  = unfold;
+          n++;
+        }
+
+        for (fn = 0; fn < 2; fn++) {
+          cs[fn][0] = FOLDS2_FOLD(buk->index)[fn];
+          int index = unicode_fold1_key(&cs[fn][0]);
+          if (index >= 0) {
+            int m = FOLDS1_UNFOLDS_NUM(index);
+            for (i = 0; i < m; i++) {
+              cs[fn][i+1] = FOLDS1_UNFOLDS(index)[i];
+            }
+            ncs[fn] = m + 1;
           }
-          ncs[fn] = z3->n + 1;
+          else
+            ncs[fn] = 1;
         }
-        else
-          ncs[fn] = 1;
-      }
 
-      if (fn == 2) {
         for (i = 0; i < ncs[0]; i++) {
           for (j = 0; j < ncs[1]; j++) {
             items[n].byte_len = len;
@@ -11094,20 +9033,33 @@ onigenc_unicode_get_case_fold_codes_by_str(OnigEncoding enc,
             n++;
           }
         }
+      }
+      else { /* fold_len == 3 */
+        m = FOLDS3_UNFOLDS_NUM(buk->index);
+        for (i = 0; i < m; i++) {
+          OnigCodePoint unfold = FOLDS3_UNFOLDS(buk->index)[i];
+          if (unfold == code) continue;
 
-        if (onig_st_lookup(Unfold2Table, (st_data_t )to->code,
-                           (void* )&z2) != 0) {
-          for (i = 0; i < z2->n; i++) {
-            if (z2->code[i] == code) continue;
+          items[n].byte_len = len;
+          items[n].code_len = 1;
+          items[n].code[0]  = unfold;
+          n++;
+        }
 
-            items[n].byte_len = len;
-            items[n].code_len = 1;
-            items[n].code[0]  = z2->code[i];
-            n++;
+        for (fn = 0; fn < 3; fn++) {
+          cs[fn][0] = FOLDS3_FOLD(buk->index)[fn];
+          int index = unicode_fold1_key(&cs[fn][0]);
+          if (index >= 0) {
+            int m = FOLDS1_UNFOLDS_NUM(index);
+            for (i = 0; i < m; i++) {
+              cs[fn][i+1] = FOLDS1_UNFOLDS(index)[i];
+            }
+            ncs[fn] = m + 1;
           }
+          else
+            ncs[fn] = 1;
         }
-      }
-      else {
+
         for (i = 0; i < ncs[0]; i++) {
           for (j = 0; j < ncs[1]; j++) {
             for (k = 0; k < ncs[2]; k++) {
@@ -11120,18 +9072,6 @@ onigenc_unicode_get_case_fold_codes_by_str(OnigEncoding enc,
             }
           }
         }
-
-        if (onig_st_lookup(Unfold3Table, (st_data_t )to->code,
-                           (void* )&z2) != 0) {
-          for (i = 0; i < z2->n; i++) {
-            if (z2->code[i] == code) continue;
-
-            items[n].byte_len = len;
-            items[n].code_len = 1;
-            items[n].code[0]  = z2->code[i];
-            n++;
-          }
-        }
       }
 
       /* multi char folded code is not head of another folded multi char */
@@ -11139,83 +9079,74 @@ onigenc_unicode_get_case_fold_codes_by_str(OnigEncoding enc,
     }
   }
   else {
-    if (onig_st_lookup(Unfold1Table, (st_data_t )code, (void* )&to) != 0) {
-      for (i = 0; i < to->n; i++) {
+    int index = unicode_fold1_key(&code);
+    if (index >= 0) {
+      int m = FOLDS1_UNFOLDS_NUM(index);
+      for (i = 0; i < m; i++) {
         items[n].byte_len = len;
         items[n].code_len = 1;
-        items[n].code[0]  = to->code[i];
+        items[n].code[0]  = FOLDS1_UNFOLDS(index)[i];
         n++;
       }
     }
   }
 
-  if ((flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) != 0) {
-    p += len;
-    if (p < end) {
-      int clen;
+  if ((flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) == 0)
+    return n;
+
+  p += len;
+  if (p < end) {
+    int clen;
+
+    codes[0] = code;
+    code = ONIGENC_MBC_TO_CODE(enc, p, end);
+
+    buk = unicode_unfold_key(code);
+    if (buk != 0 && buk->fold_len == 1) {
+      codes[1] = *FOLDS1_FOLD(buk->index);
+    }
+    else
+      codes[1] = code;
+
+    clen = enclen(enc, p);
+    len += clen;
 
-      codes[0] = code;
+    int index = unicode_fold2_key(codes);
+    if (index >= 0) {
+      m = FOLDS2_UNFOLDS_NUM(index);
+      for (i = 0; i < m; i++) {
+        items[n].byte_len = len;
+        items[n].code_len = 1;
+        items[n].code[0]  = FOLDS2_UNFOLDS(index)[i];
+        n++;
+      }
+    }
+
+    p += clen;
+    if (p < end) {
       code = ONIGENC_MBC_TO_CODE(enc, p, end);
-      if (onig_st_lookup(FoldTable, (st_data_t )code, (void* )&to) != 0
-          && to->n == 1) {
-        codes[1] = to->code[0];
+      buk = unicode_unfold_key(code);
+      if (buk != 0 && buk->fold_len == 1) {
+        codes[2] = *FOLDS1_FOLD(buk->index);
       }
       else
-        codes[1] = code;
+        codes[2] = code;
 
       clen = enclen(enc, p);
       len += clen;
-      if (onig_st_lookup(Unfold2Table, (st_data_t )codes, (void* )&z2) != 0) {
-        for (i = 0; i < z2->n; i++) {
+
+      index = unicode_fold3_key(codes);
+      if (index >= 0) {
+        m = FOLDS3_UNFOLDS_NUM(index);
+        for (i = 0; i < m; i++) {
           items[n].byte_len = len;
           items[n].code_len = 1;
-          items[n].code[0]  = z2->code[i];
+          items[n].code[0]  = FOLDS3_UNFOLDS(index)[i];
           n++;
         }
       }
-
-      p += clen;
-      if (p < end) {
-        code = ONIGENC_MBC_TO_CODE(enc, p, end);
-        if (onig_st_lookup(FoldTable, (st_data_t )code, (void* )&to) != 0
-            && to->n == 1) {
-          codes[2] = to->code[0];
-        }
-        else
-          codes[2] = code;
-
-        clen = enclen(enc, p);
-        len += clen;
-        if (onig_st_lookup(Unfold3Table, (st_data_t )codes,
-                           (void* )&z2) != 0) {
-          for (i = 0; i < z2->n; i++) {
-            items[n].byte_len = len;
-            items[n].code_len = 1;
-            items[n].code[0]  = z2->code[i];
-            n++;
-          }
-        }
-      }
     }
   }
 
   return n;
 }
-
-extern int
-onigenc_unicode_initialize(void)
-{
-  int r;
-
-  if (unicode_inited != 0)
-    return 0;
-
-  r = init_case_fold_table();
-  if (r != 0)
-    return r;
-
-  onig_add_end_call(onigenc_end_unicode);
-
-  unicode_inited = 1;
-  return r;
-}
diff --git a/src/unicode_fold1_key.c b/src/unicode_fold1_key.c
new file mode 100644 (file)
index 0000000..6b390fc
--- /dev/null
@@ -0,0 +1,2548 @@
+/* This file was converted by gperf_fold_key_conv.py
+      from gperf output file. */
+/* ANSI-C code produced by gperf version 3.0.3 */
+/* Command-line: /Library/Developer/CommandLineTools/usr/bin/gperf -n -C -T -c -t -j1 -L ANSI-C -F,-1 -N unicode_fold1_key unicode_fold1_key.gperf  */
+/* Computed positions: -k'1-3' */
+
+
+
+/* This gperf source file was generated by make_unicode_fold_data.py */
+#include <string.h>
+#include "regenc.h"
+
+#define TOTAL_KEYWORDS 1196
+#define MIN_WORD_LENGTH 3
+#define MAX_WORD_LENGTH 3
+#define MIN_HASH_VALUE 6
+#define MAX_HASH_VALUE 1304
+/* maximum key range = 1299, duplicates = 0 */
+
+#ifdef __GNUC__
+__inline
+#else
+#ifdef __cplusplus
+inline
+#endif
+#endif
+/*ARGSUSED*/
+static unsigned int
+hash(OnigCodePoint codes[])
+{
+  static const unsigned short asso_values[] =
+    {
+         7,    5,   93,    4,    1,   16,  893, 1162,  891, 1085,
+       889,  380,    8,  376, 1101,  332, 1100,  329, 1099,    3,
+       874,  943,  870,  914,   87,  322, 1095,  317, 1093,  579,
+         2,   11, 1054,   13,  956,  902,   31,  775,  632,  343,
+       619,  330,  611,  323,    0,   27,  850,  311,  599,  309,
+       849, 1240,  862, 1226,  445, 1220,  591,  888,  583, 1253,
+      1091, 1217, 1087, 1079, 1074,  419,  858,  845,  441,  304,
+       400,  842,  394, 1067,  389, 1053,  383, 1211,  218, 1206,
+       202,  436,  194, 1202,  181, 1183,  153, 1177,  376, 1166,
+       166,   56,  323,    0,  571,  112,  834,  877, 1035,  609,
+       123,  901,  145,  684,  115,  933,  364, 1163,  345,  603,
+       311,  144,  573,  162,  563, 1188,  260,  964,  240, 1174,
+       476, 1034,  453,  814,  669,  454,  815,  799,  656, 1242,
+       963,  113,  806,  270,  561,  304,  795,  268, 1031,  581,
+      1157,  182,   44,  467, 1154, 1305, 1042, 1305, 1028,  387,
+       869, 1305,  362, 1305, 1142, 1305,  639,  234, 1060, 1305,
+      1131,  381,  190,  194,  780,  185,  140,   34,  209,  173,
+      1021,  369, 1017,  145, 1150,  834,  788,  820, 1011,  116,
+       773,  658, 1004, 1241,  767,   64,  762,  648,  756,  510,
+       999,  487,  750,  254,  740,  625,  733,  662,  728,  992,
+       720,  713,  533,  986,  515,  169,  427,  702,  266,  693,
+       687,  644,  337,  963,  556,  954,  524,  947,  329,  942,
+       288,  931,  229,  925,  104, 1143,   80,  908,   48, 1138,
+        71, 1133,   59, 1131,  295,  605,  276,  525,  547, 1107,
+       540,  406,  504,  156,  920,   93,  493,   84,  676,   34,
+       247,    4, 1128,   14,   18,   32,  220,    2,  131
+    };
+  return asso_values[(unsigned char)onig_codes_byte_at(codes, 2)+3] + asso_values[(unsigned char)onig_codes_byte_at(codes, 1)] + asso_values[(unsigned char)onig_codes_byte_at(codes, 0)];
+}
+
+int
+unicode_fold1_key(OnigCodePoint codes[])
+{
+  static const int wordlist[] =
+    {
+      -1, -1, -1, -1, -1, -1,
+
+      3240,
+
+      2547,
+
+      1016,
+
+      1772,
+
+      1712,
+
+      1751,
+
+      231,
+
+      171,
+
+      210,
+
+      884,
+
+      165,
+
+      1724,
+
+      147,
+
+      2085,
+
+      183,
+
+      2106,
+
+      2082,
+
+      1322,
+
+      1262,
+
+      1301,
+
+      1253,
+
+      2073,
+
+      153,
+
+      887,
+
+      493,
+
+      1274,
+
+      156,
+
+      3243,
+
+      2088,
+
+      2748,
+
+      2826,
+
+      2793,
+
+      2745,
+
+      3234,
+
+      1760,
+
+      2985,
+
+      2772,
+
+      219,
+
+      1460,
+
+      2829,
+
+      159,
+
+      2835,
+
+      144,
+
+      2127,
+
+      2751,
+
+      2601,
+
+      1085,
+
+      1920,
+
+      1310,
+
+      2730,
+
+      1214,
+
+      2034,
+
+      1643,
+
+      854,
+
+      459,
+
+      3456,
+
+      80,
+
+      2541,
+
+      1010,
+
+      2844,
+
+      2283,
+
+      1220,
+
+      2040,
+
+      1655,
+
+      860,
+
+      465,
+
+      3468,
+
+      92,
+
+      1514,
+
+      756,
+
+      405,
+
+      2286,
+
+      2733,
+
+      1217,
+
+      2037,
+
+      1649,
+
+      857,
+
+      462,
+
+      3462,
+
+      86,
+
+      2394,
+
+      2727,
+
+      1211,
+
+      2031,
+
+      1637,
+
+      851,
+
+      456,
+
+      3450,
+
+      1700,
+
+      3228,
+
+      1742,
+
+      2406,
+
+      138,
+
+      201,
+
+      559,
+
+      502,
+
+      541,
+
+      1694,
+
+      878,
+
+      2121,
+
+      3507,
+
+      132,
+
+      514,
+
+      2400,
+
+      1292,
+
+      2724,
+
+      1208,
+
+      2028,
+
+      1631,
+
+      848,
+
+      453,
+
+      3444,
+
+      2388,
+
+      2553,
+
+      1022,
+
+      2808,
+
+      2565,
+
+      1040,
+
+      1863,
+
+      354,
+
+      1496,
+
+      315,
+
+      399,
+
+      12,
+
+      2562,
+
+      1034,
+
+      1856,
+
+      2217,
+
+      2268,
+
+      309,
+
+      1427,
+
+      0,
+
+      1346,
+
+      1259,
+
+      2079,
+
+      2205,
+
+      2382,
+
+      499,
+
+      694,
+
+      168,
+
+      1334,
+
+      2637,
+
+      1121,
+
+      1941,
+
+      1457,
+
+      2577,
+
+      387,
+
+      1037,
+
+      1860,
+
+      1478,
+
+      3072,
+
+      312,
+
+      31,
+
+      6,
+
+      2526,
+
+      995,
+
+      1835,
+
+      2211,
+
+      3066,
+
+      288,
+
+      1688,
+
+      1367,
+
+      1340,
+
+      3501,
+
+      126,
+
+      2193,
+
+      3603,
+
+      2538,
+
+      1007,
+
+      1841,
+
+      37,
+
+      1178,
+
+      294,
+
+      1574,
+
+      824,
+
+      3138,
+
+      3387,
+
+      1466,
+
+      2199,
+
+      1373,
+
+      3069,
+
+      532,
+
+      2520,
+
+      989,
+
+      1832,
+
+      2949,
+
+      3213,
+
+      285,
+
+      3045,
+
+      1454,
+
+      3597,
+
+      2631,
+
+      1115,
+
+      2190,
+
+      3354,
+
+      2514,
+
+      983,
+
+      1829,
+
+      1448,
+
+      3225,
+
+      282,
+
+      3051,
+
+      3348,
+
+      2508,
+
+      977,
+
+      1826,
+
+      631,
+
+      676,
+
+      279,
+
+      643,
+
+      2640,
+
+      1124,
+
+      1944,
+
+      1463,
+
+      3207,
+
+      390,
+
+      3042,
+
+      637,
+
+      3342,
+
+      2502,
+
+      971,
+
+      1823,
+
+      1256,
+
+      2076,
+
+      276,
+
+      3132,
+
+      496,
+
+      3201,
+
+      162,
+
+      3039,
+
+      2721,
+
+      1205,
+
+      2025,
+
+      1625,
+
+      845,
+
+      3195,
+
+      3438,
+
+      3036,
+
+      658,
+
+      640,
+
+      378,
+
+      2580,
+
+      1061,
+
+      1884,
+
+      3141,
+
+      712,
+
+      336,
+
+      613,
+
+      52,
+
+      1247,
+
+      2067,
+
+      3189,
+
+      2235,
+
+      3033,
+
+      2301,
+
+      3540,
+
+      2919,
+
+      1388,
+
+      1538,
+
+      786,
+
+      622,
+
+      2376,
+
+      1058,
+
+      1881,
+
+      2913,
+
+      709,
+
+      333,
+
+      2700,
+
+      46,
+
+      2004,
+
+      1583,
+
+      833,
+
+      2229,
+
+      3396,
+
+      2295,
+
+      607,
+
+      691,
+
+      1382,
+
+      1226,
+
+      2046,
+
+      1667,
+
+      866,
+
+      471,
+
+      3480,
+
+      105,
+
+      1445,
+
+      2916,
+
+      1433,
+
+      601,
+
+      2718,
+
+      1202,
+
+      2022,
+
+      1619,
+
+      842,
+
+      2892,
+
+      3432,
+
+      598,
+
+      1223,
+
+      2043,
+
+      1661,
+
+      863,
+
+      468,
+
+      3474,
+
+      99,
+
+      3315,
+
+      2475,
+
+      944,
+
+      2898,
+
+      2418,
+
+      3255,
+
+      264,
+
+      3249,
+
+      595,
+
+      1049,
+
+      1872,
+
+      3591,
+
+      2178,
+
+      324,
+
+      2340,
+
+      27,
+
+      2370,
+
+      1439,
+
+      2889,
+
+      3237,
+
+      2544,
+
+      1013,
+
+      1844,
+
+      2412,
+
+      1364,
+
+      297,
+
+      2715,
+
+      1199,
+
+      2019,
+
+      1613,
+
+      839,
+
+      2886,
+
+      3426,
+
+      3162,
+
+      2706,
+
+      1190,
+
+      2010,
+
+      1595,
+
+      2142,
+
+      2883,
+
+      3408,
+
+      2817,
+
+      3081,
+
+      1046,
+
+      1869,
+
+      2277,
+
+      2811,
+
+      321,
+
+      3549,
+
+      3606,
+
+      664,
+
+      2136,
+
+      3231,
+
+      2787,
+
+      3054,
+
+      2880,
+
+      2781,
+
+      2364,
+
+      1358,
+
+      2616,
+
+      1100,
+
+      1935,
+
+      1043,
+
+      1866,
+
+      372,
+
+      2346,
+
+      318,
+
+      2853,
+
+      18,
+
+      1472,
+
+      3585,
+
+      393,
+
+      2223,
+
+      2532,
+
+      1001,
+
+      1838,
+
+      3078,
+
+      1352,
+
+      291,
+
+      3336,
+
+      2496,
+
+      965,
+
+      1820,
+
+      381,
+
+      2196,
+
+      3330,
+
+      2490,
+
+      959,
+
+      1817,
+
+      369,
+
+      3324,
+
+      2484,
+
+      953,
+
+      1814,
+
+      586,
+
+      3075,
+
+      3318,
+
+      2478,
+
+      947,
+
+      1811,
+
+      2775,
+
+      655,
+
+      2187,
+
+      2739,
+
+      2769,
+
+      3219,
+
+      1682,
+
+      3048,
+
+      2181,
+
+      3495,
+
+      120,
+
+      3579,
+
+      3183,
+
+      625,
+
+      3030,
+
+      3303,
+
+      2463,
+
+      932,
+
+      3177,
+
+      3561,
+
+      3027,
+
+      258,
+      -1,
+
+      3171,
+
+      2697,
+
+      3024,
+
+      2001,
+
+      1577,
+
+      827,
+
+      3165,
+
+      3390,
+
+      3021,
+
+      3351,
+
+      2511,
+
+      980,
+
+      652,
+      -1,
+
+      3312,
+
+      2472,
+
+      941,
+
+      1808,
+
+      3270,
+
+      2430,
+
+      899,
+
+      1787,
+      -1,
+
+      2289,
+
+      243,
+
+      2928,
+
+      2175,
+      -1,
+
+      1067,
+
+      1890,
+
+      2157,
+
+      715,
+
+      342,
+
+      345,
+
+      65,
+
+      74,
+      -1,
+
+      2901,
+
+      2247,
+
+      2256,
+
+      2313,
+
+      2322,
+
+      3198,
+
+      1400,
+
+      1409,
+      -1,
+
+      366,
+
+      3159,
+
+      706,
+
+      3018,
+
+      592,
+
+      1064,
+
+      1887,
+
+      2997,
+
+      700,
+
+      339,
+
+      589,
+
+      59,
+      -1,
+
+      2925,
+      -1,
+
+      2241,
+
+      3090,
+
+      2307,
+
+      1532,
+
+      779,
+
+      1394,
+
+      2742,
+
+      1241,
+
+      2061,
+
+      1697,
+
+      881,
+
+      483,
+      -1,
+
+      135,
+
+      3111,
+
+      2964,
+      -1,
+
+      2922,
+
+      1235,
+
+      2055,
+
+      1685,
+
+      875,
+
+      480,
+
+      3498,
+
+      123,
+
+      3543,
+
+      1526,
+
+      772,
+
+      2694,
+
+      2895,
+
+      1998,
+
+      1571,
+
+      820,
+
+      421,
+
+      3384,
+
+      3156,
+
+      2877,
+
+      2712,
+
+      1196,
+
+      2016,
+
+      1607,
+
+      1670,
+
+      2874,
+
+      3420,
+
+      3483,
+
+      108,
+
+      2691,
+
+      2871,
+
+      1995,
+
+      1565,
+
+      814,
+
+      574,
+
+      3378,
+
+      2868,
+
+      1232,
+
+      2052,
+
+      1679,
+
+      872,
+
+      477,
+
+      3492,
+
+      117,
+
+      1229,
+
+      2049,
+
+      1673,
+
+      869,
+
+      474,
+
+      3486,
+
+      111,
+
+      2358,
+
+      2709,
+
+      1193,
+
+      2013,
+
+      1601,
+
+      697,
+
+      2589,
+
+      3414,
+
+      1908,
+
+      1055,
+
+      1878,
+
+      357,
+      -1,
+
+      330,
+
+      670,
+
+      40,
+
+      2550,
+
+      1019,
+
+      1847,
+
+      1052,
+
+      1875,
+
+      300,
+
+      1436,
+
+      327,
+
+      1376,
+
+      34,
+
+      2865,
+
+      3282,
+
+      2442,
+
+      911,
+
+      1793,
+
+      363,
+
+      2352,
+
+      249,
+
+      1370,
+
+      3276,
+
+      2436,
+
+      905,
+
+      1790,
+
+      2169,
+
+      3102,
+
+      246,
+
+      3087,
+
+      3252,
+      -1,
+
+      3537,
+
+      1778,
+
+      2163,
+
+      2574,
+
+      237,
+
+      3057,
+
+      2823,
+
+      3084,
+
+      1664,
+
+      3573,
+
+      24,
+
+      3477,
+
+      102,
+
+      1769,
+      -1,
+
+      1328,
+
+      228,
+
+      3003,
+
+      3531,
+
+      1361,
+
+      2202,
+
+      1766,
+
+      2145,
+      -1,
+
+      225,
+
+      3000,
+
+      2862,
+
+      1319,
+
+      1544,
+
+      792,
+
+      2139,
+
+      3357,
+      -1,
+
+      2991,
+
+      1763,
+
+      1316,
+
+      2415,
+
+      222,
+
+      2859,
+
+      2622,
+
+      1106,
+
+      3567,
+      -1,
+
+      2133,
+
+      375,
+
+      2982,
+
+      2856,
+
+      1592,
+
+      1313,
+
+      432,
+
+      3405,
+
+      1520,
+
+      762,
+
+      2979,
+
+      679,
+
+      2274,
+
+      661,
+
+      1076,
+
+      1899,
+
+      2850,
+
+      724,
+
+      1502,
+
+      742,
+
+      1166,
+
+      628,
+
+      1550,
+
+      2976,
+
+      2265,
+
+      3363,
+
+      2331,
+
+      1070,
+
+      1893,
+
+      1418,
+
+      3123,
+
+      685,
+
+      2343,
+
+      71,
+
+      1244,
+
+      2064,
+
+      1703,
+
+      2253,
+
+      487,
+
+      2319,
+
+      141,
+      -1,
+
+      1406,
+      -1,
+
+      2703,
+
+      1187,
+
+      2007,
+
+      1589,
+
+      9,
+
+      565,
+
+      3402,
+
+      1184,
+
+      2214,
+
+      1586,
+
+      836,
+
+      429,
+
+      3399,
+
+      1343,
+
+      2937,
+
+      634,
+
+      1181,
+
+      556,
+
+      1580,
+
+      830,
+
+      425,
+
+      3393,
+      -1,
+
+      3510,
+
+      2904,
+
+      553,
+
+      2931,
+
+      1172,
+      -1,
+
+      1562,
+
+      810,
+
+      417,
+
+      3375,
+
+      2688,
+      -1,
+
+      1992,
+
+      1559,
+
+      807,
+
+      550,
+
+      3372,
+      -1,
+
+      2685,
+
+      3558,
+
+      1989,
+
+      1553,
+
+      800,
+
+      2682,
+
+      3366,
+
+      1986,
+
+      1547,
+
+      796,
+      -1,
+
+      3360,
+
+      2679,
+
+      1163,
+
+      1983,
+
+      1541,
+
+      789,
+
+      414,
+      -1,
+
+      3516,
+      -1,
+
+      673,
+
+      2676,
+
+      1160,
+
+      1980,
+
+      1535,
+
+      783,
+
+      411,
+
+      2670,
+
+      1154,
+
+      1974,
+
+      1523,
+
+      767,
+
+      408,
+
+      2667,
+
+      1151,
+
+      1971,
+
+      1517,
+
+      759,
+
+      2664,
+
+      1148,
+
+      1968,
+
+      1511,
+
+      752,
+
+      3555,
+
+      2658,
+
+      1142,
+
+      1962,
+
+      1499,
+
+      739,
+
+      3552,
+
+      2970,
+
+      2634,
+
+      1118,
+
+      1938,
+
+      1451,
+
+      2271,
+
+      384,
+
+      2130,
+
+      3546,
+
+      2652,
+
+      1136,
+
+      1956,
+
+      1487,
+
+      730,
+
+      396,
+      -1,
+
+      2592,
+
+      3153,
+
+      1911,
+
+      3528,
+      -1,
+
+      360,
+
+      3150,
+
+      2847,
+
+      721,
+
+      348,
+
+      3525,
+
+      2586,
+
+      1082,
+
+      1905,
+      -1,
+
+      2262,
+
+      1442,
+
+      2328,
+
+      3519,
+
+      3135,
+
+      1415,
+
+      1073,
+
+      1896,
+
+      3513,
+
+      718,
+      -1,
+
+      68,
+
+      1430,
+
+      1490,
+
+      733,
+
+      2250,
+
+      2259,
+
+      2316,
+
+      2325,
+
+      3105,
+
+      1403,
+
+      1412,
+      -1,
+
+      3093,
+
+      2556,
+
+      1025,
+
+      1850,
+
+      1484,
+
+      727,
+
+      303,
+
+      3099,
+
+      3321,
+
+      2481,
+
+      950,
+
+      3309,
+
+      2469,
+
+      938,
+
+      267,
+
+      3258,
+
+      3246,
+
+      261,
+
+      1781,
+
+      1775,
+
+      2184,
+
+      240,
+
+      234,
+
+      2172,
+
+      3306,
+
+      2466,
+
+      935,
+
+      1805,
+
+      3264,
+
+      2424,
+
+      893,
+
+      1784,
+
+      1331,
+
+      1325,
+      -1,
+
+      3060,
+
+      2613,
+
+      1097,
+
+      1932,
+
+      1739,
+
+      2151,
+
+      3168,
+
+      198,
+
+      1736,
+
+      2559,
+
+      1028,
+
+      195,
+      -1,
+
+      2115,
+      -1,
+
+      2994,
+
+      2988,
+
+      2109,
+
+      1289,
+
+      3279,
+
+      2439,
+
+      908,
+
+      1286,
+
+      1721,
+
+      3015,
+
+      1718,
+
+      180,
+
+      1715,
+
+      177,
+
+      2802,
+
+      174,
+
+      2166,
+
+      2103,
+
+      2796,
+
+      2097,
+
+      3117,
+
+      2091,
+
+      1271,
+      -1,
+
+      1268,
+
+      3,
+
+      1265,
+      -1,
+
+      1640,
+
+      2208,
+
+      2124,
+
+      3453,
+
+      77,
+
+      2766,
+
+      1337,
+
+      2760,
+
+      2280,
+
+      2754,
+
+      1238,
+
+      2058,
+
+      1691,
+      -1,
+
+      2118,
+
+      3504,
+
+      129,
+
+      1628,
+
+      2841,
+
+      450,
+
+      3441,
+      -1,
+
+      2568,
+
+      1622,
+
+      2940,
+
+      447,
+
+      3435,
+
+      583,
+
+      2391,
+
+      15,
+
+      2805,
+
+      568,
+
+      562,
+
+      2220,
+
+      1616,
+
+      2934,
+
+      444,
+
+      3429,
+
+      1349,
+
+      1610,
+
+      580,
+
+      441,
+
+      3423,
+
+      2112,
+
+      571,
+
+      2379,
+
+      1604,
+
+      1757,
+
+      438,
+
+      3417,
+
+      216,
+
+      2373,
+
+      529,
+
+      1079,
+
+      1902,
+
+      1598,
+
+      526,
+
+      435,
+
+      3411,
+
+      2799,
+
+      49,
+
+      1307,
+
+      2367,
+
+      2907,
+
+      2232,
+
+      2337,
+
+      2298,
+
+      2361,
+
+      1424,
+
+      1385,
+      -1,
+
+      511,
+
+      2838,
+
+      508,
+
+      2355,
+
+      505,
+
+      1175,
+      -1,
+
+      1568,
+
+      817,
+      -1,
+
+      3381,
+
+      1169,
+
+      2349,
+
+      1556,
+
+      804,
+
+      3096,
+
+      3369,
+
+      2673,
+
+      1157,
+
+      1977,
+
+      1529,
+
+      776,
+
+      2661,
+
+      1145,
+
+      1965,
+
+      1505,
+
+      746,
+
+      2961,
+
+      3594,
+
+      2655,
+
+      1139,
+
+      1959,
+
+      1493,
+
+      736,
+
+      3588,
+
+      2646,
+
+      1130,
+
+      1950,
+
+      1475,
+
+      2643,
+
+      1127,
+
+      1947,
+
+      1469,
+      -1,
+
+      646,
+
+      3582,
+
+      2610,
+
+      1094,
+
+      1929,
+
+      2595,
+
+      3576,
+
+      1914,
+
+      2583,
+      -1,
+
+      1031,
+
+      1853,
+      -1,
+
+      3570,
+
+      306,
+
+      62,
+
+      2607,
+
+      1091,
+
+      1926,
+
+      2244,
+      -1,
+
+      2310,
+
+      3564,
+
+      547,
+
+      1397,
+
+      3147,
+
+      3333,
+
+      2493,
+
+      962,
+
+      3144,
+
+      1754,
+
+      667,
+
+      273,
+
+      213,
+
+      2625,
+
+      1109,
+
+      3114,
+      -1, -1,
+
+      3108,
+
+      3327,
+
+      2487,
+
+      956,
+
+      3063,
+
+      1304,
+
+      3534,
+
+      270,
+
+      3300,
+
+      2460,
+
+      929,
+
+      1802,
+
+      3522,
+
+      3297,
+
+      2457,
+
+      926,
+
+      2832,
+      -1, -1,
+
+      255,
+
+      3180,
+
+      3294,
+
+      2454,
+
+      923,
+
+      1799,
+
+      3288,
+
+      2448,
+
+      917,
+
+      1796,
+
+      3126,
+
+      1748,
+
+      2100,
+
+      1745,
+
+      207,
+
+      3174,
+
+      204,
+
+      1733,
+
+      1730,
+
+      1727,
+
+      192,
+
+      189,
+
+      186,
+
+      2736,
+
+      3012,
+
+      1298,
+
+      1676,
+
+      1295,
+
+      2763,
+
+      3489,
+
+      114,
+
+      1283,
+
+      1280,
+
+      1277,
+      -1, -1,
+
+      2820,
+
+      3009,
+
+      2814,
+      -1,
+
+      682,
+
+      3006,
+
+      2790,
+
+      2784,
+
+      2778,
+
+      1250,
+
+      2070,
+
+      2628,
+
+      1112,
+
+      490,
+
+      1658,
+
+      150,
+
+      1652,
+
+      3471,
+
+      96,
+
+      3465,
+
+      89,
+
+      1646,
+
+      2619,
+
+      1103,
+
+      3459,
+
+      83,
+
+      1634,
+
+      544,
+      -1,
+
+      3447,
+
+      2649,
+
+      1133,
+
+      1953,
+
+      1481,
+
+      2604,
+
+      1088,
+
+      1923,
+
+      2598,
+      -1,
+
+      1917,
+      -1, -1,
+
+      2409,
+
+      2571,
+
+      2403,
+
+      3129,
+
+      2535,
+
+      1004,
+
+      2958,
+
+      2397,
+
+      21,
+
+      2943,
+
+      577,
+
+      2094,
+
+      2385,
+
+      2910,
+
+      3120,
+
+      2529,
+
+      998,
+
+      1355,
+      -1,
+
+      56,
+
+      2955,
+
+      2523,
+
+      992,
+
+      2238,
+
+      538,
+
+      2304,
+
+      535,
+
+      2757,
+
+      1391,
+      -1,
+
+      523,
+
+      520,
+
+      517,
+
+      43,
+      -1, -1,
+
+      3222,
+
+      2226,
+
+      2973,
+
+      2292,
+
+      2517,
+
+      986,
+
+      1379,
+
+      3345,
+
+      2505,
+
+      974,
+      -1,
+
+      3216,
+
+      3339,
+
+      2499,
+
+      968,
+      -1, -1,
+
+      3210,
+
+      3291,
+
+      2451,
+
+      920,
+
+      3273,
+
+      2433,
+
+      902,
+
+      252,
+      -1,
+
+      703,
+
+      3267,
+
+      2427,
+
+      896,
+
+      3600,
+      -1, -1,
+
+      2160,
+      -1, -1,
+
+      3204,
+
+      1709,
+      -1,
+
+      2154,
+
+      3192,
+
+      3261,
+
+      2421,
+
+      890,
+      -1,
+
+      3186,
+
+      1508,
+
+      749,
+
+      402,
+
+      351,
+
+      1706,
+      -1,
+
+      688,
+
+      2148,
+
+      3285,
+
+      2445,
+
+      914,
+
+      2334,
+
+      649,
+      -1,
+
+      1421,
+
+      619,
+      -1, -1, -1, -1, -1, -1,
+      -1, -1, -1, -1,
+
+      616,
+      -1, -1, -1, -1, -1,
+
+      610,
+      -1, -1, -1, -1, -1,
+
+      2967,
+      -1, -1, -1, -1, -1, -1,
+      -1, -1, -1, -1, -1,
+
+      2952,
+
+      604,
+      -1,
+
+      2946
+    };
+
+  if (0 == 0)
+    {
+      int key = hash(codes);
+
+      if (key <= MAX_HASH_VALUE)
+        {
+          int index = wordlist[key];
+
+          if (index >= 0 && onig_codes_cmp(codes, OnigUnicodeFolds1 + index, 1) == 0)
+            return index;
+        }
+    }
+  return -1;
+}
+
+
diff --git a/src/unicode_fold2_key.c b/src/unicode_fold2_key.c
new file mode 100644 (file)
index 0000000..74e9876
--- /dev/null
@@ -0,0 +1,203 @@
+/* This file was converted by gperf_fold_key_conv.py
+      from gperf output file. */
+/* ANSI-C code produced by gperf version 3.0.3 */
+/* Command-line: /Library/Developer/CommandLineTools/usr/bin/gperf -n -C -T -c -t -j1 -L ANSI-C -F,-1 -N unicode_fold2_key unicode_fold2_key.gperf  */
+/* Computed positions: -k'3,6' */
+
+
+
+/* This gperf source file was generated by make_unicode_fold_data.py */
+#include <string.h>
+#include "regenc.h"
+
+#define TOTAL_KEYWORDS 59
+#define MIN_WORD_LENGTH 6
+#define MAX_WORD_LENGTH 6
+#define MIN_HASH_VALUE 0
+#define MAX_HASH_VALUE 58
+/* maximum key range = 59, duplicates = 0 */
+
+#ifdef __GNUC__
+__inline
+#else
+#ifdef __cplusplus
+inline
+#endif
+#endif
+/*ARGSUSED*/
+static unsigned int
+hash(OnigCodePoint codes[])
+{
+  static const unsigned char asso_values[] =
+    {
+      58, 57, 56, 55, 54, 53, 52, 16, 50, 59,
+      15, 59, 25, 59, 59, 59, 59, 59, 59,  3,
+      59, 59, 59, 59, 59, 59, 59, 59, 59, 59,
+      59, 59, 49, 48, 47, 46, 45, 44, 43, 42,
+      59, 59, 59, 59, 59, 59, 59, 59, 59, 21,
+      59, 59, 59, 59, 59, 59, 59, 59, 59, 59,
+      59, 59, 59, 59, 59, 59,  2, 59, 59, 59,
+      59, 59, 59, 59, 59, 59, 59, 59, 59, 59,
+      59, 59, 59, 59, 59, 59, 59, 59, 59, 59,
+      59, 59, 59, 59, 59, 59, 40, 20, 39, 38,
+      37, 14,  5, 36, 20,  7, 25, 34, 29, 32,
+      16, 59, 31, 59, 59,  2,  1, 59, 25, 15,
+      59, 14, 59, 59, 28, 59,  2, 59, 59, 59,
+      11, 59, 59, 59, 59, 59, 59, 59, 59, 59,
+      59, 59, 59, 59, 59, 59, 59, 59, 59, 59,
+      59, 59, 59, 59, 59, 59, 59, 59, 59, 59,
+      59, 59, 59, 59, 59, 59, 59, 59, 59, 59,
+      59, 59, 24, 59, 22, 59, 59, 11, 59, 59,
+      59, 59, 59,  7, 59,  0, 59, 59, 16, 59,
+       1, 59, 59, 16, 59, 59, 59, 15, 59, 59,
+      59,  6, 59, 59, 59, 59,  0, 59, 59, 59,
+      59, 59, 59, 59, 59, 59, 59, 59, 59, 59,
+      59, 59, 59, 59, 59, 59, 59, 59, 59, 59,
+      59, 59, 59, 59, 59, 59, 59, 59, 59, 59,
+      59, 59, 59, 59, 59, 59, 59, 59, 59, 59,
+      59, 59, 59, 59, 59, 59
+    };
+  return asso_values[(unsigned char)onig_codes_byte_at(codes, 5)] + asso_values[(unsigned char)onig_codes_byte_at(codes, 2)];
+}
+
+int
+unicode_fold2_key(OnigCodePoint codes[])
+{
+  static const int wordlist[] =
+    {
+
+      101,
+
+      253,
+
+      76,
+
+      29,
+
+      24,
+
+      239,
+
+      96,
+
+      71,
+
+      92,
+
+      67,
+
+      4,
+
+      62,
+
+      8,
+
+      58,
+
+      234,
+
+      109,
+
+      164,
+
+      88,
+
+      84,
+
+      80,
+
+      214,
+
+      0,
+
+      54,
+
+      261,
+
+      50,
+
+      105,
+
+      121,
+
+      125,
+
+      257,
+
+      42,
+
+      38,
+
+      249,
+
+      46,
+
+      117,
+
+      12,
+
+      113,
+
+      244,
+
+      229,
+
+      224,
+
+      219,
+
+      209,
+
+      16,
+
+      204,
+
+      199,
+
+      194,
+
+      189,
+
+      184,
+
+      179,
+
+      174,
+
+      169,
+
+      20,
+
+      34,
+
+      159,
+
+      154,
+
+      149,
+
+      144,
+
+      139,
+
+      134,
+
+      129
+    };
+
+  if (0 == 0)
+    {
+      int key = hash(codes);
+
+      if (key <= MAX_HASH_VALUE)
+        {
+          int index = wordlist[key];
+
+          if (index >= 0 && onig_codes_cmp(codes, OnigUnicodeFolds2 + index, 2) == 0)
+            return index;
+        }
+    }
+  return -1;
+}
+
+
diff --git a/src/unicode_fold3_key.c b/src/unicode_fold3_key.c
new file mode 100644 (file)
index 0000000..8095b1c
--- /dev/null
@@ -0,0 +1,113 @@
+/* This file was converted by gperf_fold_key_conv.py
+      from gperf output file. */
+/* ANSI-C code produced by gperf version 3.0.3 */
+/* Command-line: /Library/Developer/CommandLineTools/usr/bin/gperf -n -C -T -c -t -j1 -L ANSI-C -F,-1 -N unicode_fold3_key unicode_fold3_key.gperf  */
+/* Computed positions: -k'3,6,9' */
+
+
+
+/* This gperf source file was generated by make_unicode_fold_data.py */
+#include <string.h>
+#include "regenc.h"
+
+#define TOTAL_KEYWORDS 14
+#define MIN_WORD_LENGTH 9
+#define MAX_WORD_LENGTH 9
+#define MIN_HASH_VALUE 0
+#define MAX_HASH_VALUE 13
+/* maximum key range = 14, duplicates = 0 */
+
+#ifdef __GNUC__
+__inline
+#else
+#ifdef __cplusplus
+inline
+#endif
+#endif
+/*ARGSUSED*/
+static unsigned int
+hash(OnigCodePoint codes[])
+{
+  static const unsigned char asso_values[] =
+    {
+       6,  3, 14, 14, 14, 14, 14, 14,  1, 14,
+      14, 14, 14, 14, 14, 14, 14, 14, 14,  0,
+      14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+      14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+      14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+      14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+      14, 14, 14, 14, 14, 14,  0, 14, 14, 14,
+      14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+      14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+      14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+      14, 14,  4, 14, 14,  5, 14, 14,  4, 14,
+      14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+      14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+      14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+      14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+      14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+      14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+      14, 14, 14, 14, 14, 14, 14, 10, 14, 14,
+      14, 14, 14,  9, 14,  1, 14, 14, 14, 14,
+      14, 14, 14, 14, 14, 14, 14,  0, 14, 14,
+      14,  8, 14, 14, 14, 14, 14, 14, 14, 14,
+      14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+      14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+      14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+      14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+      14, 14, 14, 14, 14, 14
+    };
+  return asso_values[(unsigned char)onig_codes_byte_at(codes, 8)] + asso_values[(unsigned char)onig_codes_byte_at(codes, 5)] + asso_values[(unsigned char)onig_codes_byte_at(codes, 2)];
+}
+
+int
+unicode_fold3_key(OnigCodePoint codes[])
+{
+  static const int wordlist[] =
+    {
+
+      62,
+
+      47,
+
+      31,
+
+      57,
+
+      41,
+
+      25,
+
+      52,
+
+      36,
+
+      20,
+
+      67,
+
+      15,
+
+      10,
+
+      5,
+
+      0
+    };
+
+  if (0 == 0)
+    {
+      int key = hash(codes);
+
+      if (key <= MAX_HASH_VALUE)
+        {
+          int index = wordlist[key];
+
+          if (index >= 0 && onig_codes_cmp(codes, OnigUnicodeFolds3 + index, 3) == 0)
+            return index;
+        }
+    }
+  return -1;
+}
+
+
diff --git a/src/unicode_fold_data.c b/src/unicode_fold_data.c
new file mode 100644 (file)
index 0000000..02489d3
--- /dev/null
@@ -0,0 +1,1364 @@
+/* This file was generated by make_unicode_fold_data.py. */
+#include "regenc.h"
+
+
+OnigCodePoint OnigUnicodeFolds1[] = {
+ /*   0*/    0x0061,  1,   0x0041, /* LATIN CAPITAL LETTER A */
+ /*   3*/    0x0062,  1,   0x0042, /* LATIN CAPITAL LETTER B */
+ /*   6*/    0x0063,  1,   0x0043, /* LATIN CAPITAL LETTER C */
+ /*   9*/    0x0064,  1,   0x0044, /* LATIN CAPITAL LETTER D */
+ /*  12*/    0x0065,  1,   0x0045, /* LATIN CAPITAL LETTER E */
+ /*  15*/    0x0066,  1,   0x0046, /* LATIN CAPITAL LETTER F */
+ /*  18*/    0x0067,  1,   0x0047, /* LATIN CAPITAL LETTER G */
+ /*  21*/    0x0068,  1,   0x0048, /* LATIN CAPITAL LETTER H */
+ /*  24*/    0x006a,  1,   0x004a, /* LATIN CAPITAL LETTER J */
+ /*  27*/    0x006b,  2,   0x004b,   0x212a, /* LATIN CAPITAL LETTER K */
+ /*  31*/    0x006c,  1,   0x004c, /* LATIN CAPITAL LETTER L */
+ /*  34*/    0x006d,  1,   0x004d, /* LATIN CAPITAL LETTER M */
+ /*  37*/    0x006e,  1,   0x004e, /* LATIN CAPITAL LETTER N */
+ /*  40*/    0x006f,  1,   0x004f, /* LATIN CAPITAL LETTER O */
+ /*  43*/    0x0070,  1,   0x0050, /* LATIN CAPITAL LETTER P */
+ /*  46*/    0x0071,  1,   0x0051, /* LATIN CAPITAL LETTER Q */
+ /*  49*/    0x0072,  1,   0x0052, /* LATIN CAPITAL LETTER R */
+ /*  52*/    0x0073,  2,   0x0053,   0x017f, /* LATIN CAPITAL LETTER S */
+ /*  56*/    0x0074,  1,   0x0054, /* LATIN CAPITAL LETTER T */
+ /*  59*/    0x0075,  1,   0x0055, /* LATIN CAPITAL LETTER U */
+ /*  62*/    0x0076,  1,   0x0056, /* LATIN CAPITAL LETTER V */
+ /*  65*/    0x0077,  1,   0x0057, /* LATIN CAPITAL LETTER W */
+ /*  68*/    0x0078,  1,   0x0058, /* LATIN CAPITAL LETTER X */
+ /*  71*/    0x0079,  1,   0x0059, /* LATIN CAPITAL LETTER Y */
+ /*  74*/    0x007a,  1,   0x005a, /* LATIN CAPITAL LETTER Z */
+ /*  77*/    0x00e0,  1,   0x00c0, /* LATIN CAPITAL LETTER A WITH GRAVE */
+ /*  80*/    0x00e1,  1,   0x00c1, /* LATIN CAPITAL LETTER A WITH ACUTE */
+ /*  83*/    0x00e2,  1,   0x00c2, /* LATIN CAPITAL LETTER A WITH CIRCU.. */
+ /*  86*/    0x00e3,  1,   0x00c3, /* LATIN CAPITAL LETTER A WITH TILDE */
+ /*  89*/    0x00e4,  1,   0x00c4, /* LATIN CAPITAL LETTER A WITH DIAER.. */
+ /*  92*/    0x00e5,  2,   0x00c5,   0x212b, /* LATIN CAPITAL LETTER A WITH RING .. */
+ /*  96*/    0x00e6,  1,   0x00c6, /* LATIN CAPITAL LETTER AE */
+ /*  99*/    0x00e7,  1,   0x00c7, /* LATIN CAPITAL LETTER C WITH CEDIL.. */
+ /* 102*/    0x00e8,  1,   0x00c8, /* LATIN CAPITAL LETTER E WITH GRAVE */
+ /* 105*/    0x00e9,  1,   0x00c9, /* LATIN CAPITAL LETTER E WITH ACUTE */
+ /* 108*/    0x00ea,  1,   0x00ca, /* LATIN CAPITAL LETTER E WITH CIRCU.. */
+ /* 111*/    0x00eb,  1,   0x00cb, /* LATIN CAPITAL LETTER E WITH DIAER.. */
+ /* 114*/    0x00ec,  1,   0x00cc, /* LATIN CAPITAL LETTER I WITH GRAVE */
+ /* 117*/    0x00ed,  1,   0x00cd, /* LATIN CAPITAL LETTER I WITH ACUTE */
+ /* 120*/    0x00ee,  1,   0x00ce, /* LATIN CAPITAL LETTER I WITH CIRCU.. */
+ /* 123*/    0x00ef,  1,   0x00cf, /* LATIN CAPITAL LETTER I WITH DIAER.. */
+ /* 126*/    0x00f0,  1,   0x00d0, /* LATIN CAPITAL LETTER ETH */
+ /* 129*/    0x00f1,  1,   0x00d1, /* LATIN CAPITAL LETTER N WITH TILDE */
+ /* 132*/    0x00f2,  1,   0x00d2, /* LATIN CAPITAL LETTER O WITH GRAVE */
+ /* 135*/    0x00f3,  1,   0x00d3, /* LATIN CAPITAL LETTER O WITH ACUTE */
+ /* 138*/    0x00f4,  1,   0x00d4, /* LATIN CAPITAL LETTER O WITH CIRCU.. */
+ /* 141*/    0x00f5,  1,   0x00d5, /* LATIN CAPITAL LETTER O WITH TILDE */
+ /* 144*/    0x00f6,  1,   0x00d6, /* LATIN CAPITAL LETTER O WITH DIAER.. */
+ /* 147*/    0x00f8,  1,   0x00d8, /* LATIN CAPITAL LETTER O WITH STROKE */
+ /* 150*/    0x00f9,  1,   0x00d9, /* LATIN CAPITAL LETTER U WITH GRAVE */
+ /* 153*/    0x00fa,  1,   0x00da, /* LATIN CAPITAL LETTER U WITH ACUTE */
+ /* 156*/    0x00fb,  1,   0x00db, /* LATIN CAPITAL LETTER U WITH CIRCU.. */
+ /* 159*/    0x00fc,  1,   0x00dc, /* LATIN CAPITAL LETTER U WITH DIAER.. */
+ /* 162*/    0x00fd,  1,   0x00dd, /* LATIN CAPITAL LETTER Y WITH ACUTE */
+ /* 165*/    0x00fe,  1,   0x00de, /* LATIN CAPITAL LETTER THORN */
+ /* 168*/    0x00ff,  1,   0x0178, /* LATIN CAPITAL LETTER Y WITH DIAER.. */
+ /* 171*/    0x0101,  1,   0x0100, /* LATIN CAPITAL LETTER A WITH MACRON */
+ /* 174*/    0x0103,  1,   0x0102, /* LATIN CAPITAL LETTER A WITH BREVE */
+ /* 177*/    0x0105,  1,   0x0104, /* LATIN CAPITAL LETTER A WITH OGONEK */
+ /* 180*/    0x0107,  1,   0x0106, /* LATIN CAPITAL LETTER C WITH ACUTE */
+ /* 183*/    0x0109,  1,   0x0108, /* LATIN CAPITAL LETTER C WITH CIRCU.. */
+ /* 186*/    0x010b,  1,   0x010a, /* LATIN CAPITAL LETTER C WITH DOT A.. */
+ /* 189*/    0x010d,  1,   0x010c, /* LATIN CAPITAL LETTER C WITH CARON */
+ /* 192*/    0x010f,  1,   0x010e, /* LATIN CAPITAL LETTER D WITH CARON */
+ /* 195*/    0x0111,  1,   0x0110, /* LATIN CAPITAL LETTER D WITH STROKE */
+ /* 198*/    0x0113,  1,   0x0112, /* LATIN CAPITAL LETTER E WITH MACRON */
+ /* 201*/    0x0115,  1,   0x0114, /* LATIN CAPITAL LETTER E WITH BREVE */
+ /* 204*/    0x0117,  1,   0x0116, /* LATIN CAPITAL LETTER E WITH DOT A.. */
+ /* 207*/    0x0119,  1,   0x0118, /* LATIN CAPITAL LETTER E WITH OGONEK */
+ /* 210*/    0x011b,  1,   0x011a, /* LATIN CAPITAL LETTER E WITH CARON */
+ /* 213*/    0x011d,  1,   0x011c, /* LATIN CAPITAL LETTER G WITH CIRCU.. */
+ /* 216*/    0x011f,  1,   0x011e, /* LATIN CAPITAL LETTER G WITH BREVE */
+ /* 219*/    0x0121,  1,   0x0120, /* LATIN CAPITAL LETTER G WITH DOT A.. */
+ /* 222*/    0x0123,  1,   0x0122, /* LATIN CAPITAL LETTER G WITH CEDIL.. */
+ /* 225*/    0x0125,  1,   0x0124, /* LATIN CAPITAL LETTER H WITH CIRCU.. */
+ /* 228*/    0x0127,  1,   0x0126, /* LATIN CAPITAL LETTER H WITH STROKE */
+ /* 231*/    0x0129,  1,   0x0128, /* LATIN CAPITAL LETTER I WITH TILDE */
+ /* 234*/    0x012b,  1,   0x012a, /* LATIN CAPITAL LETTER I WITH MACRON */
+ /* 237*/    0x012d,  1,   0x012c, /* LATIN CAPITAL LETTER I WITH BREVE */
+ /* 240*/    0x012f,  1,   0x012e, /* LATIN CAPITAL LETTER I WITH OGONEK */
+ /* 243*/    0x0133,  1,   0x0132, /* LATIN CAPITAL LIGATURE IJ */
+ /* 246*/    0x0135,  1,   0x0134, /* LATIN CAPITAL LETTER J WITH CIRCU.. */
+ /* 249*/    0x0137,  1,   0x0136, /* LATIN CAPITAL LETTER K WITH CEDIL.. */
+ /* 252*/    0x013a,  1,   0x0139, /* LATIN CAPITAL LETTER L WITH ACUTE */
+ /* 255*/    0x013c,  1,   0x013b, /* LATIN CAPITAL LETTER L WITH CEDIL.. */
+ /* 258*/    0x013e,  1,   0x013d, /* LATIN CAPITAL LETTER L WITH CARON */
+ /* 261*/    0x0140,  1,   0x013f, /* LATIN CAPITAL LETTER L WITH MIDDL.. */
+ /* 264*/    0x0142,  1,   0x0141, /* LATIN CAPITAL LETTER L WITH STROKE */
+ /* 267*/    0x0144,  1,   0x0143, /* LATIN CAPITAL LETTER N WITH ACUTE */
+ /* 270*/    0x0146,  1,   0x0145, /* LATIN CAPITAL LETTER N WITH CEDIL.. */
+ /* 273*/    0x0148,  1,   0x0147, /* LATIN CAPITAL LETTER N WITH CARON */
+ /* 276*/    0x014b,  1,   0x014a, /* LATIN CAPITAL LETTER ENG */
+ /* 279*/    0x014d,  1,   0x014c, /* LATIN CAPITAL LETTER O WITH MACRON */
+ /* 282*/    0x014f,  1,   0x014e, /* LATIN CAPITAL LETTER O WITH BREVE */
+ /* 285*/    0x0151,  1,   0x0150, /* LATIN CAPITAL LETTER O WITH DOUBL.. */
+ /* 288*/    0x0153,  1,   0x0152, /* LATIN CAPITAL LIGATURE OE */
+ /* 291*/    0x0155,  1,   0x0154, /* LATIN CAPITAL LETTER R WITH ACUTE */
+ /* 294*/    0x0157,  1,   0x0156, /* LATIN CAPITAL LETTER R WITH CEDIL.. */
+ /* 297*/    0x0159,  1,   0x0158, /* LATIN CAPITAL LETTER R WITH CARON */
+ /* 300*/    0x015b,  1,   0x015a, /* LATIN CAPITAL LETTER S WITH ACUTE */
+ /* 303*/    0x015d,  1,   0x015c, /* LATIN CAPITAL LETTER S WITH CIRCU.. */
+ /* 306*/    0x015f,  1,   0x015e, /* LATIN CAPITAL LETTER S WITH CEDIL.. */
+ /* 309*/    0x0161,  1,   0x0160, /* LATIN CAPITAL LETTER S WITH CARON */
+ /* 312*/    0x0163,  1,   0x0162, /* LATIN CAPITAL LETTER T WITH CEDIL.. */
+ /* 315*/    0x0165,  1,   0x0164, /* LATIN CAPITAL LETTER T WITH CARON */
+ /* 318*/    0x0167,  1,   0x0166, /* LATIN CAPITAL LETTER T WITH STROKE */
+ /* 321*/    0x0169,  1,   0x0168, /* LATIN CAPITAL LETTER U WITH TILDE */
+ /* 324*/    0x016b,  1,   0x016a, /* LATIN CAPITAL LETTER U WITH MACRON */
+ /* 327*/    0x016d,  1,   0x016c, /* LATIN CAPITAL LETTER U WITH BREVE */
+ /* 330*/    0x016f,  1,   0x016e, /* LATIN CAPITAL LETTER U WITH RING .. */
+ /* 333*/    0x0171,  1,   0x0170, /* LATIN CAPITAL LETTER U WITH DOUBL.. */
+ /* 336*/    0x0173,  1,   0x0172, /* LATIN CAPITAL LETTER U WITH OGONEK */
+ /* 339*/    0x0175,  1,   0x0174, /* LATIN CAPITAL LETTER W WITH CIRCU.. */
+ /* 342*/    0x0177,  1,   0x0176, /* LATIN CAPITAL LETTER Y WITH CIRCU.. */
+ /* 345*/    0x017a,  1,   0x0179, /* LATIN CAPITAL LETTER Z WITH ACUTE */
+ /* 348*/    0x017c,  1,   0x017b, /* LATIN CAPITAL LETTER Z WITH DOT A.. */
+ /* 351*/    0x017e,  1,   0x017d, /* LATIN CAPITAL LETTER Z WITH CARON */
+ /* 354*/    0x0180,  1,   0x0243, /* LATIN CAPITAL LETTER B WITH STROKE */
+ /* 357*/    0x0183,  1,   0x0182, /* LATIN CAPITAL LETTER B WITH TOPBAR */
+ /* 360*/    0x0185,  1,   0x0184, /* LATIN CAPITAL LETTER TONE SIX */
+ /* 363*/    0x0188,  1,   0x0187, /* LATIN CAPITAL LETTER C WITH HOOK */
+ /* 366*/    0x018c,  1,   0x018b, /* LATIN CAPITAL LETTER D WITH TOPBAR */
+ /* 369*/    0x0192,  1,   0x0191, /* LATIN CAPITAL LETTER F WITH HOOK */
+ /* 372*/    0x0195,  1,   0x01f6, /* LATIN CAPITAL LETTER HWAIR */
+ /* 375*/    0x0199,  1,   0x0198, /* LATIN CAPITAL LETTER K WITH HOOK */
+ /* 378*/    0x019a,  1,   0x023d, /* LATIN CAPITAL LETTER L WITH BAR */
+ /* 381*/    0x019e,  1,   0x0220, /* LATIN CAPITAL LETTER N WITH LONG .. */
+ /* 384*/    0x01a1,  1,   0x01a0, /* LATIN CAPITAL LETTER O WITH HORN */
+ /* 387*/    0x01a3,  1,   0x01a2, /* LATIN CAPITAL LETTER OI */
+ /* 390*/    0x01a5,  1,   0x01a4, /* LATIN CAPITAL LETTER P WITH HOOK */
+ /* 393*/    0x01a8,  1,   0x01a7, /* LATIN CAPITAL LETTER TONE TWO */
+ /* 396*/    0x01ad,  1,   0x01ac, /* LATIN CAPITAL LETTER T WITH HOOK */
+ /* 399*/    0x01b0,  1,   0x01af, /* LATIN CAPITAL LETTER U WITH HORN */
+ /* 402*/    0x01b4,  1,   0x01b3, /* LATIN CAPITAL LETTER Y WITH HOOK */
+ /* 405*/    0x01b6,  1,   0x01b5, /* LATIN CAPITAL LETTER Z WITH STROKE */
+ /* 408*/    0x01b9,  1,   0x01b8, /* LATIN CAPITAL LETTER EZH REVERSED */
+ /* 411*/    0x01bd,  1,   0x01bc, /* LATIN CAPITAL LETTER TONE FIVE */
+ /* 414*/    0x01bf,  1,   0x01f7, /* LATIN CAPITAL LETTER WYNN */
+ /* 417*/    0x01c6,  2,   0x01c4,   0x01c5, /* LATIN CAPITAL LETTER DZ WITH CARON */
+ /* 421*/    0x01c9,  2,   0x01c7,   0x01c8, /* LATIN CAPITAL LETTER LJ */
+ /* 425*/    0x01cc,  2,   0x01ca,   0x01cb, /* LATIN CAPITAL LETTER NJ */
+ /* 429*/    0x01ce,  1,   0x01cd, /* LATIN CAPITAL LETTER A WITH CARON */
+ /* 432*/    0x01d0,  1,   0x01cf, /* LATIN CAPITAL LETTER I WITH CARON */
+ /* 435*/    0x01d2,  1,   0x01d1, /* LATIN CAPITAL LETTER O WITH CARON */
+ /* 438*/    0x01d4,  1,   0x01d3, /* LATIN CAPITAL LETTER U WITH CARON */
+ /* 441*/    0x01d6,  1,   0x01d5, /* LATIN CAPITAL LETTER U WITH DIAER.. */
+ /* 444*/    0x01d8,  1,   0x01d7, /* LATIN CAPITAL LETTER U WITH DIAER.. */
+ /* 447*/    0x01da,  1,   0x01d9, /* LATIN CAPITAL LETTER U WITH DIAER.. */
+ /* 450*/    0x01dc,  1,   0x01db, /* LATIN CAPITAL LETTER U WITH DIAER.. */
+ /* 453*/    0x01dd,  1,   0x018e, /* LATIN CAPITAL LETTER REVERSED E */
+ /* 456*/    0x01df,  1,   0x01de, /* LATIN CAPITAL LETTER A WITH DIAER.. */
+ /* 459*/    0x01e1,  1,   0x01e0, /* LATIN CAPITAL LETTER A WITH DOT A.. */
+ /* 462*/    0x01e3,  1,   0x01e2, /* LATIN CAPITAL LETTER AE WITH MACR.. */
+ /* 465*/    0x01e5,  1,   0x01e4, /* LATIN CAPITAL LETTER G WITH STROKE */
+ /* 468*/    0x01e7,  1,   0x01e6, /* LATIN CAPITAL LETTER G WITH CARON */
+ /* 471*/    0x01e9,  1,   0x01e8, /* LATIN CAPITAL LETTER K WITH CARON */
+ /* 474*/    0x01eb,  1,   0x01ea, /* LATIN CAPITAL LETTER O WITH OGONEK */
+ /* 477*/    0x01ed,  1,   0x01ec, /* LATIN CAPITAL LETTER O WITH OGONE.. */
+ /* 480*/    0x01ef,  1,   0x01ee, /* LATIN CAPITAL LETTER EZH WITH CAR.. */
+ /* 483*/    0x01f3,  2,   0x01f1,   0x01f2, /* LATIN CAPITAL LETTER DZ */
+ /* 487*/    0x01f5,  1,   0x01f4, /* LATIN CAPITAL LETTER G WITH ACUTE */
+ /* 490*/    0x01f9,  1,   0x01f8, /* LATIN CAPITAL LETTER N WITH GRAVE */
+ /* 493*/    0x01fb,  1,   0x01fa, /* LATIN CAPITAL LETTER A WITH RING .. */
+ /* 496*/    0x01fd,  1,   0x01fc, /* LATIN CAPITAL LETTER AE WITH ACUTE */
+ /* 499*/    0x01ff,  1,   0x01fe, /* LATIN CAPITAL LETTER O WITH STROK.. */
+ /* 502*/    0x0201,  1,   0x0200, /* LATIN CAPITAL LETTER A WITH DOUBL.. */
+ /* 505*/    0x0203,  1,   0x0202, /* LATIN CAPITAL LETTER A WITH INVER.. */
+ /* 508*/    0x0205,  1,   0x0204, /* LATIN CAPITAL LETTER E WITH DOUBL.. */
+ /* 511*/    0x0207,  1,   0x0206, /* LATIN CAPITAL LETTER E WITH INVER.. */
+ /* 514*/    0x0209,  1,   0x0208, /* LATIN CAPITAL LETTER I WITH DOUBL.. */
+ /* 517*/    0x020b,  1,   0x020a, /* LATIN CAPITAL LETTER I WITH INVER.. */
+ /* 520*/    0x020d,  1,   0x020c, /* LATIN CAPITAL LETTER O WITH DOUBL.. */
+ /* 523*/    0x020f,  1,   0x020e, /* LATIN CAPITAL LETTER O WITH INVER.. */
+ /* 526*/    0x0211,  1,   0x0210, /* LATIN CAPITAL LETTER R WITH DOUBL.. */
+ /* 529*/    0x0213,  1,   0x0212, /* LATIN CAPITAL LETTER R WITH INVER.. */
+ /* 532*/    0x0215,  1,   0x0214, /* LATIN CAPITAL LETTER U WITH DOUBL.. */
+ /* 535*/    0x0217,  1,   0x0216, /* LATIN CAPITAL LETTER U WITH INVER.. */
+ /* 538*/    0x0219,  1,   0x0218, /* LATIN CAPITAL LETTER S WITH COMMA.. */
+ /* 541*/    0x021b,  1,   0x021a, /* LATIN CAPITAL LETTER T WITH COMMA.. */
+ /* 544*/    0x021d,  1,   0x021c, /* LATIN CAPITAL LETTER YOGH */
+ /* 547*/    0x021f,  1,   0x021e, /* LATIN CAPITAL LETTER H WITH CARON */
+ /* 550*/    0x0223,  1,   0x0222, /* LATIN CAPITAL LETTER OU */
+ /* 553*/    0x0225,  1,   0x0224, /* LATIN CAPITAL LETTER Z WITH HOOK */
+ /* 556*/    0x0227,  1,   0x0226, /* LATIN CAPITAL LETTER A WITH DOT A.. */
+ /* 559*/    0x0229,  1,   0x0228, /* LATIN CAPITAL LETTER E WITH CEDIL.. */
+ /* 562*/    0x022b,  1,   0x022a, /* LATIN CAPITAL LETTER O WITH DIAER.. */
+ /* 565*/    0x022d,  1,   0x022c, /* LATIN CAPITAL LETTER O WITH TILDE.. */
+ /* 568*/    0x022f,  1,   0x022e, /* LATIN CAPITAL LETTER O WITH DOT A.. */
+ /* 571*/    0x0231,  1,   0x0230, /* LATIN CAPITAL LETTER O WITH DOT A.. */
+ /* 574*/    0x0233,  1,   0x0232, /* LATIN CAPITAL LETTER Y WITH MACRON */
+ /* 577*/    0x023c,  1,   0x023b, /* LATIN CAPITAL LETTER C WITH STROKE */
+ /* 580*/    0x023f,  1,   0x2c7e, /* LATIN CAPITAL LETTER S WITH SWASH.. */
+ /* 583*/    0x0240,  1,   0x2c7f, /* LATIN CAPITAL LETTER Z WITH SWASH.. */
+ /* 586*/    0x0242,  1,   0x0241, /* LATIN CAPITAL LETTER GLOTTAL STOP */
+ /* 589*/    0x0247,  1,   0x0246, /* LATIN CAPITAL LETTER E WITH STROKE */
+ /* 592*/    0x0249,  1,   0x0248, /* LATIN CAPITAL LETTER J WITH STROKE */
+ /* 595*/    0x024b,  1,   0x024a, /* LATIN CAPITAL LETTER SMALL Q WITH.. */
+ /* 598*/    0x024d,  1,   0x024c, /* LATIN CAPITAL LETTER R WITH STROKE */
+ /* 601*/    0x024f,  1,   0x024e, /* LATIN CAPITAL LETTER Y WITH STROKE */
+ /* 604*/    0x0250,  1,   0x2c6f, /* LATIN CAPITAL LETTER TURNED A */
+ /* 607*/    0x0251,  1,   0x2c6d, /* LATIN CAPITAL LETTER ALPHA */
+ /* 610*/    0x0252,  1,   0x2c70, /* LATIN CAPITAL LETTER TURNED ALPHA */
+ /* 613*/    0x0253,  1,   0x0181, /* LATIN CAPITAL LETTER B WITH HOOK */
+ /* 616*/    0x0254,  1,   0x0186, /* LATIN CAPITAL LETTER OPEN O */
+ /* 619*/    0x0256,  1,   0x0189, /* LATIN CAPITAL LETTER AFRICAN D */
+ /* 622*/    0x0257,  1,   0x018a, /* LATIN CAPITAL LETTER D WITH HOOK */
+ /* 625*/    0x0259,  1,   0x018f, /* LATIN CAPITAL LETTER SCHWA */
+ /* 628*/    0x025b,  1,   0x0190, /* LATIN CAPITAL LETTER OPEN E */
+ /* 631*/    0x025c,  1,   0xa7ab, /* LATIN CAPITAL LETTER REVERSED OPE.. */
+ /* 634*/    0x0260,  1,   0x0193, /* LATIN CAPITAL LETTER G WITH HOOK */
+ /* 637*/    0x0261,  1,   0xa7ac, /* LATIN CAPITAL LETTER SCRIPT G */
+ /* 640*/    0x0263,  1,   0x0194, /* LATIN CAPITAL LETTER GAMMA */
+ /* 643*/    0x0265,  1,   0xa78d, /* LATIN CAPITAL LETTER TURNED H */
+ /* 646*/    0x0266,  1,   0xa7aa, /* LATIN CAPITAL LETTER H WITH HOOK */
+ /* 649*/    0x0268,  1,   0x0197, /* LATIN CAPITAL LETTER I WITH STROKE */
+ /* 652*/    0x0269,  1,   0x0196, /* LATIN CAPITAL LETTER IOTA */
+ /* 655*/    0x026b,  1,   0x2c62, /* LATIN CAPITAL LETTER L WITH MIDDL.. */
+ /* 658*/    0x026c,  1,   0xa7ad, /* LATIN CAPITAL LETTER L WITH BELT */
+ /* 661*/    0x026f,  1,   0x019c, /* LATIN CAPITAL LETTER TURNED M */
+ /* 664*/    0x0271,  1,   0x2c6e, /* LATIN CAPITAL LETTER M WITH HOOK */
+ /* 667*/    0x0272,  1,   0x019d, /* LATIN CAPITAL LETTER N WITH LEFT .. */
+ /* 670*/    0x0275,  1,   0x019f, /* LATIN CAPITAL LETTER O WITH MIDDL.. */
+ /* 673*/    0x027d,  1,   0x2c64, /* LATIN CAPITAL LETTER R WITH TAIL */
+ /* 676*/    0x0280,  1,   0x01a6, /* LATIN LETTER YR */
+ /* 679*/    0x0283,  1,   0x01a9, /* LATIN CAPITAL LETTER ESH */
+ /* 682*/    0x0287,  1,   0xa7b1, /* LATIN CAPITAL LETTER TURNED T */
+ /* 685*/    0x0288,  1,   0x01ae, /* LATIN CAPITAL LETTER T WITH RETRO.. */
+ /* 688*/    0x0289,  1,   0x0244, /* LATIN CAPITAL LETTER U BAR */
+ /* 691*/    0x028a,  1,   0x01b1, /* LATIN CAPITAL LETTER UPSILON */
+ /* 694*/    0x028b,  1,   0x01b2, /* LATIN CAPITAL LETTER V WITH HOOK */
+ /* 697*/    0x028c,  1,   0x0245, /* LATIN CAPITAL LETTER TURNED V */
+ /* 700*/    0x0292,  1,   0x01b7, /* LATIN CAPITAL LETTER EZH */
+ /* 703*/    0x029d,  1,   0xa7b2, /* LATIN CAPITAL LETTER J WITH CROSS.. */
+ /* 706*/    0x029e,  1,   0xa7b0, /* LATIN CAPITAL LETTER TURNED K */
+ /* 709*/    0x0371,  1,   0x0370, /* GREEK CAPITAL LETTER HETA */
+ /* 712*/    0x0373,  1,   0x0372, /* GREEK CAPITAL LETTER ARCHAIC SAMPI */
+ /* 715*/    0x0377,  1,   0x0376, /* GREEK CAPITAL LETTER PAMPHYLIAN D.. */
+ /* 718*/    0x037b,  1,   0x03fd, /* GREEK CAPITAL REVERSED LUNATE SIG.. */
+ /* 721*/    0x037c,  1,   0x03fe, /* GREEK CAPITAL DOTTED LUNATE SIGMA.. */
+ /* 724*/    0x037d,  1,   0x03ff, /* GREEK CAPITAL REVERSED DOTTED LUN.. */
+ /* 727*/    0x03ac,  1,   0x0386, /* GREEK CAPITAL LETTER ALPHA WITH T.. */
+ /* 730*/    0x03ad,  1,   0x0388, /* GREEK CAPITAL LETTER EPSILON WITH.. */
+ /* 733*/    0x03ae,  1,   0x0389, /* GREEK CAPITAL LETTER ETA WITH TON.. */
+ /* 736*/    0x03af,  1,   0x038a, /* GREEK CAPITAL LETTER IOTA WITH TO.. */
+ /* 739*/    0x03b1,  1,   0x0391, /* GREEK CAPITAL LETTER ALPHA */
+ /* 742*/    0x03b2,  2,   0x0392,   0x03d0, /* GREEK CAPITAL LETTER BETA */
+ /* 746*/    0x03b3,  1,   0x0393, /* GREEK CAPITAL LETTER GAMMA */
+ /* 749*/    0x03b4,  1,   0x0394, /* GREEK CAPITAL LETTER DELTA */
+ /* 752*/    0x03b5,  2,   0x0395,   0x03f5, /* GREEK CAPITAL LETTER EPSILON */
+ /* 756*/    0x03b6,  1,   0x0396, /* GREEK CAPITAL LETTER ZETA */
+ /* 759*/    0x03b7,  1,   0x0397, /* GREEK CAPITAL LETTER ETA */
+ /* 762*/    0x03b8,  3,   0x0398,   0x03d1,   0x03f4, /* GREEK CAPITAL LETTER THETA */
+ /* 767*/    0x03b9,  3,   0x0345,   0x0399,   0x1fbe, /* COMBINING GREEK YPOGEGRAMMENI */
+ /* 772*/    0x03ba,  2,   0x039a,   0x03f0, /* GREEK CAPITAL LETTER KAPPA */
+ /* 776*/    0x03bb,  1,   0x039b, /* GREEK CAPITAL LETTER LAMDA */
+ /* 779*/    0x03bc,  2,   0x00b5,   0x039c, /* MICRO SIGN */
+ /* 783*/    0x03bd,  1,   0x039d, /* GREEK CAPITAL LETTER NU */
+ /* 786*/    0x03be,  1,   0x039e, /* GREEK CAPITAL LETTER XI */
+ /* 789*/    0x03bf,  1,   0x039f, /* GREEK CAPITAL LETTER OMICRON */
+ /* 792*/    0x03c0,  2,   0x03a0,   0x03d6, /* GREEK CAPITAL LETTER PI */
+ /* 796*/    0x03c1,  2,   0x03a1,   0x03f1, /* GREEK CAPITAL LETTER RHO */
+ /* 800*/    0x03c3,  2,   0x03a3,   0x03c2, /* GREEK CAPITAL LETTER SIGMA */
+ /* 804*/    0x03c4,  1,   0x03a4, /* GREEK CAPITAL LETTER TAU */
+ /* 807*/    0x03c5,  1,   0x03a5, /* GREEK CAPITAL LETTER UPSILON */
+ /* 810*/    0x03c6,  2,   0x03a6,   0x03d5, /* GREEK CAPITAL LETTER PHI */
+ /* 814*/    0x03c7,  1,   0x03a7, /* GREEK CAPITAL LETTER CHI */
+ /* 817*/    0x03c8,  1,   0x03a8, /* GREEK CAPITAL LETTER PSI */
+ /* 820*/    0x03c9,  2,   0x03a9,   0x2126, /* GREEK CAPITAL LETTER OMEGA */
+ /* 824*/    0x03ca,  1,   0x03aa, /* GREEK CAPITAL LETTER IOTA WITH DI.. */
+ /* 827*/    0x03cb,  1,   0x03ab, /* GREEK CAPITAL LETTER UPSILON WITH.. */
+ /* 830*/    0x03cc,  1,   0x038c, /* GREEK CAPITAL LETTER OMICRON WITH.. */
+ /* 833*/    0x03cd,  1,   0x038e, /* GREEK CAPITAL LETTER UPSILON WITH.. */
+ /* 836*/    0x03ce,  1,   0x038f, /* GREEK CAPITAL LETTER OMEGA WITH T.. */
+ /* 839*/    0x03d7,  1,   0x03cf, /* GREEK CAPITAL KAI SYMBOL */
+ /* 842*/    0x03d9,  1,   0x03d8, /* GREEK LETTER ARCHAIC KOPPA */
+ /* 845*/    0x03db,  1,   0x03da, /* GREEK LETTER STIGMA */
+ /* 848*/    0x03dd,  1,   0x03dc, /* GREEK LETTER DIGAMMA */
+ /* 851*/    0x03df,  1,   0x03de, /* GREEK LETTER KOPPA */
+ /* 854*/    0x03e1,  1,   0x03e0, /* GREEK LETTER SAMPI */
+ /* 857*/    0x03e3,  1,   0x03e2, /* COPTIC CAPITAL LETTER SHEI */
+ /* 860*/    0x03e5,  1,   0x03e4, /* COPTIC CAPITAL LETTER FEI */
+ /* 863*/    0x03e7,  1,   0x03e6, /* COPTIC CAPITAL LETTER KHEI */
+ /* 866*/    0x03e9,  1,   0x03e8, /* COPTIC CAPITAL LETTER HORI */
+ /* 869*/    0x03eb,  1,   0x03ea, /* COPTIC CAPITAL LETTER GANGIA */
+ /* 872*/    0x03ed,  1,   0x03ec, /* COPTIC CAPITAL LETTER SHIMA */
+ /* 875*/    0x03ef,  1,   0x03ee, /* COPTIC CAPITAL LETTER DEI */
+ /* 878*/    0x03f2,  1,   0x03f9, /* GREEK CAPITAL LUNATE SIGMA SYMBOL */
+ /* 881*/    0x03f3,  1,   0x037f, /* GREEK CAPITAL LETTER YOT */
+ /* 884*/    0x03f8,  1,   0x03f7, /* GREEK CAPITAL LETTER SHO */
+ /* 887*/    0x03fb,  1,   0x03fa, /* GREEK CAPITAL LETTER SAN */
+ /* 890*/    0x0430,  1,   0x0410, /* CYRILLIC CAPITAL LETTER A */
+ /* 893*/    0x0431,  1,   0x0411, /* CYRILLIC CAPITAL LETTER BE */
+ /* 896*/    0x0432,  1,   0x0412, /* CYRILLIC CAPITAL LETTER VE */
+ /* 899*/    0x0433,  1,   0x0413, /* CYRILLIC CAPITAL LETTER GHE */
+ /* 902*/    0x0434,  1,   0x0414, /* CYRILLIC CAPITAL LETTER DE */
+ /* 905*/    0x0435,  1,   0x0415, /* CYRILLIC CAPITAL LETTER IE */
+ /* 908*/    0x0436,  1,   0x0416, /* CYRILLIC CAPITAL LETTER ZHE */
+ /* 911*/    0x0437,  1,   0x0417, /* CYRILLIC CAPITAL LETTER ZE */
+ /* 914*/    0x0438,  1,   0x0418, /* CYRILLIC CAPITAL LETTER I */
+ /* 917*/    0x0439,  1,   0x0419, /* CYRILLIC CAPITAL LETTER SHORT I */
+ /* 920*/    0x043a,  1,   0x041a, /* CYRILLIC CAPITAL LETTER KA */
+ /* 923*/    0x043b,  1,   0x041b, /* CYRILLIC CAPITAL LETTER EL */
+ /* 926*/    0x043c,  1,   0x041c, /* CYRILLIC CAPITAL LETTER EM */
+ /* 929*/    0x043d,  1,   0x041d, /* CYRILLIC CAPITAL LETTER EN */
+ /* 932*/    0x043e,  1,   0x041e, /* CYRILLIC CAPITAL LETTER O */
+ /* 935*/    0x043f,  1,   0x041f, /* CYRILLIC CAPITAL LETTER PE */
+ /* 938*/    0x0440,  1,   0x0420, /* CYRILLIC CAPITAL LETTER ER */
+ /* 941*/    0x0441,  1,   0x0421, /* CYRILLIC CAPITAL LETTER ES */
+ /* 944*/    0x0442,  1,   0x0422, /* CYRILLIC CAPITAL LETTER TE */
+ /* 947*/    0x0443,  1,   0x0423, /* CYRILLIC CAPITAL LETTER U */
+ /* 950*/    0x0444,  1,   0x0424, /* CYRILLIC CAPITAL LETTER EF */
+ /* 953*/    0x0445,  1,   0x0425, /* CYRILLIC CAPITAL LETTER HA */
+ /* 956*/    0x0446,  1,   0x0426, /* CYRILLIC CAPITAL LETTER TSE */
+ /* 959*/    0x0447,  1,   0x0427, /* CYRILLIC CAPITAL LETTER CHE */
+ /* 962*/    0x0448,  1,   0x0428, /* CYRILLIC CAPITAL LETTER SHA */
+ /* 965*/    0x0449,  1,   0x0429, /* CYRILLIC CAPITAL LETTER SHCHA */
+ /* 968*/    0x044a,  1,   0x042a, /* CYRILLIC CAPITAL LETTER HARD SIGN */
+ /* 971*/    0x044b,  1,   0x042b, /* CYRILLIC CAPITAL LETTER YERU */
+ /* 974*/    0x044c,  1,   0x042c, /* CYRILLIC CAPITAL LETTER SOFT SIGN */
+ /* 977*/    0x044d,  1,   0x042d, /* CYRILLIC CAPITAL LETTER E */
+ /* 980*/    0x044e,  1,   0x042e, /* CYRILLIC CAPITAL LETTER YU */
+ /* 983*/    0x044f,  1,   0x042f, /* CYRILLIC CAPITAL LETTER YA */
+ /* 986*/    0x0450,  1,   0x0400, /* CYRILLIC CAPITAL LETTER IE WITH G.. */
+ /* 989*/    0x0451,  1,   0x0401, /* CYRILLIC CAPITAL LETTER IO */
+ /* 992*/    0x0452,  1,   0x0402, /* CYRILLIC CAPITAL LETTER DJE */
+ /* 995*/    0x0453,  1,   0x0403, /* CYRILLIC CAPITAL LETTER GJE */
+ /* 998*/    0x0454,  1,   0x0404, /* CYRILLIC CAPITAL LETTER UKRAINIAN.. */
+ /*1001*/    0x0455,  1,   0x0405, /* CYRILLIC CAPITAL LETTER DZE */
+ /*1004*/    0x0456,  1,   0x0406, /* CYRILLIC CAPITAL LETTER BYELORUSS.. */
+ /*1007*/    0x0457,  1,   0x0407, /* CYRILLIC CAPITAL LETTER YI */
+ /*1010*/    0x0458,  1,   0x0408, /* CYRILLIC CAPITAL LETTER JE */
+ /*1013*/    0x0459,  1,   0x0409, /* CYRILLIC CAPITAL LETTER LJE */
+ /*1016*/    0x045a,  1,   0x040a, /* CYRILLIC CAPITAL LETTER NJE */
+ /*1019*/    0x045b,  1,   0x040b, /* CYRILLIC CAPITAL LETTER TSHE */
+ /*1022*/    0x045c,  1,   0x040c, /* CYRILLIC CAPITAL LETTER KJE */
+ /*1025*/    0x045d,  1,   0x040d, /* CYRILLIC CAPITAL LETTER I WITH GR.. */
+ /*1028*/    0x045e,  1,   0x040e, /* CYRILLIC CAPITAL LETTER SHORT U */
+ /*1031*/    0x045f,  1,   0x040f, /* CYRILLIC CAPITAL LETTER DZHE */
+ /*1034*/    0x0461,  1,   0x0460, /* CYRILLIC CAPITAL LETTER OMEGA */
+ /*1037*/    0x0463,  1,   0x0462, /* CYRILLIC CAPITAL LETTER YAT */
+ /*1040*/    0x0465,  1,   0x0464, /* CYRILLIC CAPITAL LETTER IOTIFIED E */
+ /*1043*/    0x0467,  1,   0x0466, /* CYRILLIC CAPITAL LETTER LITTLE YUS */
+ /*1046*/    0x0469,  1,   0x0468, /* CYRILLIC CAPITAL LETTER IOTIFIED .. */
+ /*1049*/    0x046b,  1,   0x046a, /* CYRILLIC CAPITAL LETTER BIG YUS */
+ /*1052*/    0x046d,  1,   0x046c, /* CYRILLIC CAPITAL LETTER IOTIFIED .. */
+ /*1055*/    0x046f,  1,   0x046e, /* CYRILLIC CAPITAL LETTER KSI */
+ /*1058*/    0x0471,  1,   0x0470, /* CYRILLIC CAPITAL LETTER PSI */
+ /*1061*/    0x0473,  1,   0x0472, /* CYRILLIC CAPITAL LETTER FITA */
+ /*1064*/    0x0475,  1,   0x0474, /* CYRILLIC CAPITAL LETTER IZHITSA */
+ /*1067*/    0x0477,  1,   0x0476, /* CYRILLIC CAPITAL LETTER IZHITSA W.. */
+ /*1070*/    0x0479,  1,   0x0478, /* CYRILLIC CAPITAL LETTER UK */
+ /*1073*/    0x047b,  1,   0x047a, /* CYRILLIC CAPITAL LETTER ROUND OME.. */
+ /*1076*/    0x047d,  1,   0x047c, /* CYRILLIC CAPITAL LETTER OMEGA WIT.. */
+ /*1079*/    0x047f,  1,   0x047e, /* CYRILLIC CAPITAL LETTER OT */
+ /*1082*/    0x0481,  1,   0x0480, /* CYRILLIC CAPITAL LETTER KOPPA */
+ /*1085*/    0x048b,  1,   0x048a, /* CYRILLIC CAPITAL LETTER SHORT I W.. */
+ /*1088*/    0x048d,  1,   0x048c, /* CYRILLIC CAPITAL LETTER SEMISOFT .. */
+ /*1091*/    0x048f,  1,   0x048e, /* CYRILLIC CAPITAL LETTER ER WITH T.. */
+ /*1094*/    0x0491,  1,   0x0490, /* CYRILLIC CAPITAL LETTER GHE WITH .. */
+ /*1097*/    0x0493,  1,   0x0492, /* CYRILLIC CAPITAL LETTER GHE WITH .. */
+ /*1100*/    0x0495,  1,   0x0494, /* CYRILLIC CAPITAL LETTER GHE WITH .. */
+ /*1103*/    0x0497,  1,   0x0496, /* CYRILLIC CAPITAL LETTER ZHE WITH .. */
+ /*1106*/    0x0499,  1,   0x0498, /* CYRILLIC CAPITAL LETTER ZE WITH D.. */
+ /*1109*/    0x049b,  1,   0x049a, /* CYRILLIC CAPITAL LETTER KA WITH D.. */
+ /*1112*/    0x049d,  1,   0x049c, /* CYRILLIC CAPITAL LETTER KA WITH V.. */
+ /*1115*/    0x049f,  1,   0x049e, /* CYRILLIC CAPITAL LETTER KA WITH S.. */
+ /*1118*/    0x04a1,  1,   0x04a0, /* CYRILLIC CAPITAL LETTER BASHKIR KA */
+ /*1121*/    0x04a3,  1,   0x04a2, /* CYRILLIC CAPITAL LETTER EN WITH D.. */
+ /*1124*/    0x04a5,  1,   0x04a4, /* CYRILLIC CAPITAL LIGATURE EN GHE */
+ /*1127*/    0x04a7,  1,   0x04a6, /* CYRILLIC CAPITAL LETTER PE WITH M.. */
+ /*1130*/    0x04a9,  1,   0x04a8, /* CYRILLIC CAPITAL LETTER ABKHASIAN.. */
+ /*1133*/    0x04ab,  1,   0x04aa, /* CYRILLIC CAPITAL LETTER ES WITH D.. */
+ /*1136*/    0x04ad,  1,   0x04ac, /* CYRILLIC CAPITAL LETTER TE WITH D.. */
+ /*1139*/    0x04af,  1,   0x04ae, /* CYRILLIC CAPITAL LETTER STRAIGHT U */
+ /*1142*/    0x04b1,  1,   0x04b0, /* CYRILLIC CAPITAL LETTER STRAIGHT .. */
+ /*1145*/    0x04b3,  1,   0x04b2, /* CYRILLIC CAPITAL LETTER HA WITH D.. */
+ /*1148*/    0x04b5,  1,   0x04b4, /* CYRILLIC CAPITAL LIGATURE TE TSE */
+ /*1151*/    0x04b7,  1,   0x04b6, /* CYRILLIC CAPITAL LETTER CHE WITH .. */
+ /*1154*/    0x04b9,  1,   0x04b8, /* CYRILLIC CAPITAL LETTER CHE WITH .. */
+ /*1157*/    0x04bb,  1,   0x04ba, /* CYRILLIC CAPITAL LETTER SHHA */
+ /*1160*/    0x04bd,  1,   0x04bc, /* CYRILLIC CAPITAL LETTER ABKHASIAN.. */
+ /*1163*/    0x04bf,  1,   0x04be, /* CYRILLIC CAPITAL LETTER ABKHASIAN.. */
+ /*1166*/    0x04c2,  1,   0x04c1, /* CYRILLIC CAPITAL LETTER ZHE WITH .. */
+ /*1169*/    0x04c4,  1,   0x04c3, /* CYRILLIC CAPITAL LETTER KA WITH H.. */
+ /*1172*/    0x04c6,  1,   0x04c5, /* CYRILLIC CAPITAL LETTER EL WITH T.. */
+ /*1175*/    0x04c8,  1,   0x04c7, /* CYRILLIC CAPITAL LETTER EN WITH H.. */
+ /*1178*/    0x04ca,  1,   0x04c9, /* CYRILLIC CAPITAL LETTER EN WITH T.. */
+ /*1181*/    0x04cc,  1,   0x04cb, /* CYRILLIC CAPITAL LETTER KHAKASSIA.. */
+ /*1184*/    0x04ce,  1,   0x04cd, /* CYRILLIC CAPITAL LETTER EM WITH T.. */
+ /*1187*/    0x04cf,  1,   0x04c0, /* CYRILLIC LETTER PALOCHKA */
+ /*1190*/    0x04d1,  1,   0x04d0, /* CYRILLIC CAPITAL LETTER A WITH BR.. */
+ /*1193*/    0x04d3,  1,   0x04d2, /* CYRILLIC CAPITAL LETTER A WITH DI.. */
+ /*1196*/    0x04d5,  1,   0x04d4, /* CYRILLIC CAPITAL LIGATURE A IE */
+ /*1199*/    0x04d7,  1,   0x04d6, /* CYRILLIC CAPITAL LETTER IE WITH B.. */
+ /*1202*/    0x04d9,  1,   0x04d8, /* CYRILLIC CAPITAL LETTER SCHWA */
+ /*1205*/    0x04db,  1,   0x04da, /* CYRILLIC CAPITAL LETTER SCHWA WIT.. */
+ /*1208*/    0x04dd,  1,   0x04dc, /* CYRILLIC CAPITAL LETTER ZHE WITH .. */
+ /*1211*/    0x04df,  1,   0x04de, /* CYRILLIC CAPITAL LETTER ZE WITH D.. */
+ /*1214*/    0x04e1,  1,   0x04e0, /* CYRILLIC CAPITAL LETTER ABKHASIAN.. */
+ /*1217*/    0x04e3,  1,   0x04e2, /* CYRILLIC CAPITAL LETTER I WITH MA.. */
+ /*1220*/    0x04e5,  1,   0x04e4, /* CYRILLIC CAPITAL LETTER I WITH DI.. */
+ /*1223*/    0x04e7,  1,   0x04e6, /* CYRILLIC CAPITAL LETTER O WITH DI.. */
+ /*1226*/    0x04e9,  1,   0x04e8, /* CYRILLIC CAPITAL LETTER BARRED O */
+ /*1229*/    0x04eb,  1,   0x04ea, /* CYRILLIC CAPITAL LETTER BARRED O .. */
+ /*1232*/    0x04ed,  1,   0x04ec, /* CYRILLIC CAPITAL LETTER E WITH DI.. */
+ /*1235*/    0x04ef,  1,   0x04ee, /* CYRILLIC CAPITAL LETTER U WITH MA.. */
+ /*1238*/    0x04f1,  1,   0x04f0, /* CYRILLIC CAPITAL LETTER U WITH DI.. */
+ /*1241*/    0x04f3,  1,   0x04f2, /* CYRILLIC CAPITAL LETTER U WITH DO.. */
+ /*1244*/    0x04f5,  1,   0x04f4, /* CYRILLIC CAPITAL LETTER CHE WITH .. */
+ /*1247*/    0x04f7,  1,   0x04f6, /* CYRILLIC CAPITAL LETTER GHE WITH .. */
+ /*1250*/    0x04f9,  1,   0x04f8, /* CYRILLIC CAPITAL LETTER YERU WITH.. */
+ /*1253*/    0x04fb,  1,   0x04fa, /* CYRILLIC CAPITAL LETTER GHE WITH .. */
+ /*1256*/    0x04fd,  1,   0x04fc, /* CYRILLIC CAPITAL LETTER HA WITH H.. */
+ /*1259*/    0x04ff,  1,   0x04fe, /* CYRILLIC CAPITAL LETTER HA WITH S.. */
+ /*1262*/    0x0501,  1,   0x0500, /* CYRILLIC CAPITAL LETTER KOMI DE */
+ /*1265*/    0x0503,  1,   0x0502, /* CYRILLIC CAPITAL LETTER KOMI DJE */
+ /*1268*/    0x0505,  1,   0x0504, /* CYRILLIC CAPITAL LETTER KOMI ZJE */
+ /*1271*/    0x0507,  1,   0x0506, /* CYRILLIC CAPITAL LETTER KOMI DZJE */
+ /*1274*/    0x0509,  1,   0x0508, /* CYRILLIC CAPITAL LETTER KOMI LJE */
+ /*1277*/    0x050b,  1,   0x050a, /* CYRILLIC CAPITAL LETTER KOMI NJE */
+ /*1280*/    0x050d,  1,   0x050c, /* CYRILLIC CAPITAL LETTER KOMI SJE */
+ /*1283*/    0x050f,  1,   0x050e, /* CYRILLIC CAPITAL LETTER KOMI TJE */
+ /*1286*/    0x0511,  1,   0x0510, /* CYRILLIC CAPITAL LETTER REVERSED .. */
+ /*1289*/    0x0513,  1,   0x0512, /* CYRILLIC CAPITAL LETTER EL WITH H.. */
+ /*1292*/    0x0515,  1,   0x0514, /* CYRILLIC CAPITAL LETTER LHA */
+ /*1295*/    0x0517,  1,   0x0516, /* CYRILLIC CAPITAL LETTER RHA */
+ /*1298*/    0x0519,  1,   0x0518, /* CYRILLIC CAPITAL LETTER YAE */
+ /*1301*/    0x051b,  1,   0x051a, /* CYRILLIC CAPITAL LETTER QA */
+ /*1304*/    0x051d,  1,   0x051c, /* CYRILLIC CAPITAL LETTER WE */
+ /*1307*/    0x051f,  1,   0x051e, /* CYRILLIC CAPITAL LETTER ALEUT KA */
+ /*1310*/    0x0521,  1,   0x0520, /* CYRILLIC CAPITAL LETTER EL WITH M.. */
+ /*1313*/    0x0523,  1,   0x0522, /* CYRILLIC CAPITAL LETTER EN WITH M.. */
+ /*1316*/    0x0525,  1,   0x0524, /* CYRILLIC CAPITAL LETTER PE WITH D.. */
+ /*1319*/    0x0527,  1,   0x0526, /* CYRILLIC CAPITAL LETTER SHHA WITH.. */
+ /*1322*/    0x0529,  1,   0x0528, /* CYRILLIC CAPITAL LETTER EN WITH L.. */
+ /*1325*/    0x052b,  1,   0x052a, /* CYRILLIC CAPITAL LETTER DZZHE */
+ /*1328*/    0x052d,  1,   0x052c, /* CYRILLIC CAPITAL LETTER DCHE */
+ /*1331*/    0x052f,  1,   0x052e, /* CYRILLIC CAPITAL LETTER EL WITH D.. */
+ /*1334*/    0x0561,  1,   0x0531, /* ARMENIAN CAPITAL LETTER AYB */
+ /*1337*/    0x0562,  1,   0x0532, /* ARMENIAN CAPITAL LETTER BEN */
+ /*1340*/    0x0563,  1,   0x0533, /* ARMENIAN CAPITAL LETTER GIM */
+ /*1343*/    0x0564,  1,   0x0534, /* ARMENIAN CAPITAL LETTER DA */
+ /*1346*/    0x0565,  1,   0x0535, /* ARMENIAN CAPITAL LETTER ECH */
+ /*1349*/    0x0566,  1,   0x0536, /* ARMENIAN CAPITAL LETTER ZA */
+ /*1352*/    0x0567,  1,   0x0537, /* ARMENIAN CAPITAL LETTER EH */
+ /*1355*/    0x0568,  1,   0x0538, /* ARMENIAN CAPITAL LETTER ET */
+ /*1358*/    0x0569,  1,   0x0539, /* ARMENIAN CAPITAL LETTER TO */
+ /*1361*/    0x056a,  1,   0x053a, /* ARMENIAN CAPITAL LETTER ZHE */
+ /*1364*/    0x056b,  1,   0x053b, /* ARMENIAN CAPITAL LETTER INI */
+ /*1367*/    0x056c,  1,   0x053c, /* ARMENIAN CAPITAL LETTER LIWN */
+ /*1370*/    0x056d,  1,   0x053d, /* ARMENIAN CAPITAL LETTER XEH */
+ /*1373*/    0x056e,  1,   0x053e, /* ARMENIAN CAPITAL LETTER CA */
+ /*1376*/    0x056f,  1,   0x053f, /* ARMENIAN CAPITAL LETTER KEN */
+ /*1379*/    0x0570,  1,   0x0540, /* ARMENIAN CAPITAL LETTER HO */
+ /*1382*/    0x0571,  1,   0x0541, /* ARMENIAN CAPITAL LETTER JA */
+ /*1385*/    0x0572,  1,   0x0542, /* ARMENIAN CAPITAL LETTER GHAD */
+ /*1388*/    0x0573,  1,   0x0543, /* ARMENIAN CAPITAL LETTER CHEH */
+ /*1391*/    0x0574,  1,   0x0544, /* ARMENIAN CAPITAL LETTER MEN */
+ /*1394*/    0x0575,  1,   0x0545, /* ARMENIAN CAPITAL LETTER YI */
+ /*1397*/    0x0576,  1,   0x0546, /* ARMENIAN CAPITAL LETTER NOW */
+ /*1400*/    0x0577,  1,   0x0547, /* ARMENIAN CAPITAL LETTER SHA */
+ /*1403*/    0x0578,  1,   0x0548, /* ARMENIAN CAPITAL LETTER VO */
+ /*1406*/    0x0579,  1,   0x0549, /* ARMENIAN CAPITAL LETTER CHA */
+ /*1409*/    0x057a,  1,   0x054a, /* ARMENIAN CAPITAL LETTER PEH */
+ /*1412*/    0x057b,  1,   0x054b, /* ARMENIAN CAPITAL LETTER JHEH */
+ /*1415*/    0x057c,  1,   0x054c, /* ARMENIAN CAPITAL LETTER RA */
+ /*1418*/    0x057d,  1,   0x054d, /* ARMENIAN CAPITAL LETTER SEH */
+ /*1421*/    0x057e,  1,   0x054e, /* ARMENIAN CAPITAL LETTER VEW */
+ /*1424*/    0x057f,  1,   0x054f, /* ARMENIAN CAPITAL LETTER TIWN */
+ /*1427*/    0x0580,  1,   0x0550, /* ARMENIAN CAPITAL LETTER REH */
+ /*1430*/    0x0581,  1,   0x0551, /* ARMENIAN CAPITAL LETTER CO */
+ /*1433*/    0x0582,  1,   0x0552, /* ARMENIAN CAPITAL LETTER YIWN */
+ /*1436*/    0x0583,  1,   0x0553, /* ARMENIAN CAPITAL LETTER PIWR */
+ /*1439*/    0x0584,  1,   0x0554, /* ARMENIAN CAPITAL LETTER KEH */
+ /*1442*/    0x0585,  1,   0x0555, /* ARMENIAN CAPITAL LETTER OH */
+ /*1445*/    0x0586,  1,   0x0556, /* ARMENIAN CAPITAL LETTER FEH */
+ /*1448*/    0x13a0,  1,   0xab70, /* CHEROKEE SMALL LETTER A */
+ /*1451*/    0x13a1,  1,   0xab71, /* CHEROKEE SMALL LETTER E */
+ /*1454*/    0x13a2,  1,   0xab72, /* CHEROKEE SMALL LETTER I */
+ /*1457*/    0x13a3,  1,   0xab73, /* CHEROKEE SMALL LETTER O */
+ /*1460*/    0x13a4,  1,   0xab74, /* CHEROKEE SMALL LETTER U */
+ /*1463*/    0x13a5,  1,   0xab75, /* CHEROKEE SMALL LETTER V */
+ /*1466*/    0x13a6,  1,   0xab76, /* CHEROKEE SMALL LETTER GA */
+ /*1469*/    0x13a7,  1,   0xab77, /* CHEROKEE SMALL LETTER KA */
+ /*1472*/    0x13a8,  1,   0xab78, /* CHEROKEE SMALL LETTER GE */
+ /*1475*/    0x13a9,  1,   0xab79, /* CHEROKEE SMALL LETTER GI */
+ /*1478*/    0x13aa,  1,   0xab7a, /* CHEROKEE SMALL LETTER GO */
+ /*1481*/    0x13ab,  1,   0xab7b, /* CHEROKEE SMALL LETTER GU */
+ /*1484*/    0x13ac,  1,   0xab7c, /* CHEROKEE SMALL LETTER GV */
+ /*1487*/    0x13ad,  1,   0xab7d, /* CHEROKEE SMALL LETTER HA */
+ /*1490*/    0x13ae,  1,   0xab7e, /* CHEROKEE SMALL LETTER HE */
+ /*1493*/    0x13af,  1,   0xab7f, /* CHEROKEE SMALL LETTER HI */
+ /*1496*/    0x13b0,  1,   0xab80, /* CHEROKEE SMALL LETTER HO */
+ /*1499*/    0x13b1,  1,   0xab81, /* CHEROKEE SMALL LETTER HU */
+ /*1502*/    0x13b2,  1,   0xab82, /* CHEROKEE SMALL LETTER HV */
+ /*1505*/    0x13b3,  1,   0xab83, /* CHEROKEE SMALL LETTER LA */
+ /*1508*/    0x13b4,  1,   0xab84, /* CHEROKEE SMALL LETTER LE */
+ /*1511*/    0x13b5,  1,   0xab85, /* CHEROKEE SMALL LETTER LI */
+ /*1514*/    0x13b6,  1,   0xab86, /* CHEROKEE SMALL LETTER LO */
+ /*1517*/    0x13b7,  1,   0xab87, /* CHEROKEE SMALL LETTER LU */
+ /*1520*/    0x13b8,  1,   0xab88, /* CHEROKEE SMALL LETTER LV */
+ /*1523*/    0x13b9,  1,   0xab89, /* CHEROKEE SMALL LETTER MA */
+ /*1526*/    0x13ba,  1,   0xab8a, /* CHEROKEE SMALL LETTER ME */
+ /*1529*/    0x13bb,  1,   0xab8b, /* CHEROKEE SMALL LETTER MI */
+ /*1532*/    0x13bc,  1,   0xab8c, /* CHEROKEE SMALL LETTER MO */
+ /*1535*/    0x13bd,  1,   0xab8d, /* CHEROKEE SMALL LETTER MU */
+ /*1538*/    0x13be,  1,   0xab8e, /* CHEROKEE SMALL LETTER NA */
+ /*1541*/    0x13bf,  1,   0xab8f, /* CHEROKEE SMALL LETTER HNA */
+ /*1544*/    0x13c0,  1,   0xab90, /* CHEROKEE SMALL LETTER NAH */
+ /*1547*/    0x13c1,  1,   0xab91, /* CHEROKEE SMALL LETTER NE */
+ /*1550*/    0x13c2,  1,   0xab92, /* CHEROKEE SMALL LETTER NI */
+ /*1553*/    0x13c3,  1,   0xab93, /* CHEROKEE SMALL LETTER NO */
+ /*1556*/    0x13c4,  1,   0xab94, /* CHEROKEE SMALL LETTER NU */
+ /*1559*/    0x13c5,  1,   0xab95, /* CHEROKEE SMALL LETTER NV */
+ /*1562*/    0x13c6,  1,   0xab96, /* CHEROKEE SMALL LETTER QUA */
+ /*1565*/    0x13c7,  1,   0xab97, /* CHEROKEE SMALL LETTER QUE */
+ /*1568*/    0x13c8,  1,   0xab98, /* CHEROKEE SMALL LETTER QUI */
+ /*1571*/    0x13c9,  1,   0xab99, /* CHEROKEE SMALL LETTER QUO */
+ /*1574*/    0x13ca,  1,   0xab9a, /* CHEROKEE SMALL LETTER QUU */
+ /*1577*/    0x13cb,  1,   0xab9b, /* CHEROKEE SMALL LETTER QUV */
+ /*1580*/    0x13cc,  1,   0xab9c, /* CHEROKEE SMALL LETTER SA */
+ /*1583*/    0x13cd,  1,   0xab9d, /* CHEROKEE SMALL LETTER S */
+ /*1586*/    0x13ce,  1,   0xab9e, /* CHEROKEE SMALL LETTER SE */
+ /*1589*/    0x13cf,  1,   0xab9f, /* CHEROKEE SMALL LETTER SI */
+ /*1592*/    0x13d0,  1,   0xaba0, /* CHEROKEE SMALL LETTER SO */
+ /*1595*/    0x13d1,  1,   0xaba1, /* CHEROKEE SMALL LETTER SU */
+ /*1598*/    0x13d2,  1,   0xaba2, /* CHEROKEE SMALL LETTER SV */
+ /*1601*/    0x13d3,  1,   0xaba3, /* CHEROKEE SMALL LETTER DA */
+ /*1604*/    0x13d4,  1,   0xaba4, /* CHEROKEE SMALL LETTER TA */
+ /*1607*/    0x13d5,  1,   0xaba5, /* CHEROKEE SMALL LETTER DE */
+ /*1610*/    0x13d6,  1,   0xaba6, /* CHEROKEE SMALL LETTER TE */
+ /*1613*/    0x13d7,  1,   0xaba7, /* CHEROKEE SMALL LETTER DI */
+ /*1616*/    0x13d8,  1,   0xaba8, /* CHEROKEE SMALL LETTER TI */
+ /*1619*/    0x13d9,  1,   0xaba9, /* CHEROKEE SMALL LETTER DO */
+ /*1622*/    0x13da,  1,   0xabaa, /* CHEROKEE SMALL LETTER DU */
+ /*1625*/    0x13db,  1,   0xabab, /* CHEROKEE SMALL LETTER DV */
+ /*1628*/    0x13dc,  1,   0xabac, /* CHEROKEE SMALL LETTER DLA */
+ /*1631*/    0x13dd,  1,   0xabad, /* CHEROKEE SMALL LETTER TLA */
+ /*1634*/    0x13de,  1,   0xabae, /* CHEROKEE SMALL LETTER TLE */
+ /*1637*/    0x13df,  1,   0xabaf, /* CHEROKEE SMALL LETTER TLI */
+ /*1640*/    0x13e0,  1,   0xabb0, /* CHEROKEE SMALL LETTER TLO */
+ /*1643*/    0x13e1,  1,   0xabb1, /* CHEROKEE SMALL LETTER TLU */
+ /*1646*/    0x13e2,  1,   0xabb2, /* CHEROKEE SMALL LETTER TLV */
+ /*1649*/    0x13e3,  1,   0xabb3, /* CHEROKEE SMALL LETTER TSA */
+ /*1652*/    0x13e4,  1,   0xabb4, /* CHEROKEE SMALL LETTER TSE */
+ /*1655*/    0x13e5,  1,   0xabb5, /* CHEROKEE SMALL LETTER TSI */
+ /*1658*/    0x13e6,  1,   0xabb6, /* CHEROKEE SMALL LETTER TSO */
+ /*1661*/    0x13e7,  1,   0xabb7, /* CHEROKEE SMALL LETTER TSU */
+ /*1664*/    0x13e8,  1,   0xabb8, /* CHEROKEE SMALL LETTER TSV */
+ /*1667*/    0x13e9,  1,   0xabb9, /* CHEROKEE SMALL LETTER WA */
+ /*1670*/    0x13ea,  1,   0xabba, /* CHEROKEE SMALL LETTER WE */
+ /*1673*/    0x13eb,  1,   0xabbb, /* CHEROKEE SMALL LETTER WI */
+ /*1676*/    0x13ec,  1,   0xabbc, /* CHEROKEE SMALL LETTER WO */
+ /*1679*/    0x13ed,  1,   0xabbd, /* CHEROKEE SMALL LETTER WU */
+ /*1682*/    0x13ee,  1,   0xabbe, /* CHEROKEE SMALL LETTER WV */
+ /*1685*/    0x13ef,  1,   0xabbf, /* CHEROKEE SMALL LETTER YA */
+ /*1688*/    0x13f0,  1,   0x13f8, /* CHEROKEE SMALL LETTER YE */
+ /*1691*/    0x13f1,  1,   0x13f9, /* CHEROKEE SMALL LETTER YI */
+ /*1694*/    0x13f2,  1,   0x13fa, /* CHEROKEE SMALL LETTER YO */
+ /*1697*/    0x13f3,  1,   0x13fb, /* CHEROKEE SMALL LETTER YU */
+ /*1700*/    0x13f4,  1,   0x13fc, /* CHEROKEE SMALL LETTER YV */
+ /*1703*/    0x13f5,  1,   0x13fd, /* CHEROKEE SMALL LETTER MV */
+ /*1706*/    0x1d79,  1,   0xa77d, /* LATIN CAPITAL LETTER INSULAR G */
+ /*1709*/    0x1d7d,  1,   0x2c63, /* LATIN CAPITAL LETTER P WITH STROKE */
+ /*1712*/    0x1e01,  1,   0x1e00, /* LATIN CAPITAL LETTER A WITH RING .. */
+ /*1715*/    0x1e03,  1,   0x1e02, /* LATIN CAPITAL LETTER B WITH DOT A.. */
+ /*1718*/    0x1e05,  1,   0x1e04, /* LATIN CAPITAL LETTER B WITH DOT B.. */
+ /*1721*/    0x1e07,  1,   0x1e06, /* LATIN CAPITAL LETTER B WITH LINE .. */
+ /*1724*/    0x1e09,  1,   0x1e08, /* LATIN CAPITAL LETTER C WITH CEDIL.. */
+ /*1727*/    0x1e0b,  1,   0x1e0a, /* LATIN CAPITAL LETTER D WITH DOT A.. */
+ /*1730*/    0x1e0d,  1,   0x1e0c, /* LATIN CAPITAL LETTER D WITH DOT B.. */
+ /*1733*/    0x1e0f,  1,   0x1e0e, /* LATIN CAPITAL LETTER D WITH LINE .. */
+ /*1736*/    0x1e11,  1,   0x1e10, /* LATIN CAPITAL LETTER D WITH CEDIL.. */
+ /*1739*/    0x1e13,  1,   0x1e12, /* LATIN CAPITAL LETTER D WITH CIRCU.. */
+ /*1742*/    0x1e15,  1,   0x1e14, /* LATIN CAPITAL LETTER E WITH MACRO.. */
+ /*1745*/    0x1e17,  1,   0x1e16, /* LATIN CAPITAL LETTER E WITH MACRO.. */
+ /*1748*/    0x1e19,  1,   0x1e18, /* LATIN CAPITAL LETTER E WITH CIRCU.. */
+ /*1751*/    0x1e1b,  1,   0x1e1a, /* LATIN CAPITAL LETTER E WITH TILDE.. */
+ /*1754*/    0x1e1d,  1,   0x1e1c, /* LATIN CAPITAL LETTER E WITH CEDIL.. */
+ /*1757*/    0x1e1f,  1,   0x1e1e, /* LATIN CAPITAL LETTER F WITH DOT A.. */
+ /*1760*/    0x1e21,  1,   0x1e20, /* LATIN CAPITAL LETTER G WITH MACRON */
+ /*1763*/    0x1e23,  1,   0x1e22, /* LATIN CAPITAL LETTER H WITH DOT A.. */
+ /*1766*/    0x1e25,  1,   0x1e24, /* LATIN CAPITAL LETTER H WITH DOT B.. */
+ /*1769*/    0x1e27,  1,   0x1e26, /* LATIN CAPITAL LETTER H WITH DIAER.. */
+ /*1772*/    0x1e29,  1,   0x1e28, /* LATIN CAPITAL LETTER H WITH CEDIL.. */
+ /*1775*/    0x1e2b,  1,   0x1e2a, /* LATIN CAPITAL LETTER H WITH BREVE.. */
+ /*1778*/    0x1e2d,  1,   0x1e2c, /* LATIN CAPITAL LETTER I WITH TILDE.. */
+ /*1781*/    0x1e2f,  1,   0x1e2e, /* LATIN CAPITAL LETTER I WITH DIAER.. */
+ /*1784*/    0x1e31,  1,   0x1e30, /* LATIN CAPITAL LETTER K WITH ACUTE */
+ /*1787*/    0x1e33,  1,   0x1e32, /* LATIN CAPITAL LETTER K WITH DOT B.. */
+ /*1790*/    0x1e35,  1,   0x1e34, /* LATIN CAPITAL LETTER K WITH LINE .. */
+ /*1793*/    0x1e37,  1,   0x1e36, /* LATIN CAPITAL LETTER L WITH DOT B.. */
+ /*1796*/    0x1e39,  1,   0x1e38, /* LATIN CAPITAL LETTER L WITH DOT B.. */
+ /*1799*/    0x1e3b,  1,   0x1e3a, /* LATIN CAPITAL LETTER L WITH LINE .. */
+ /*1802*/    0x1e3d,  1,   0x1e3c, /* LATIN CAPITAL LETTER L WITH CIRCU.. */
+ /*1805*/    0x1e3f,  1,   0x1e3e, /* LATIN CAPITAL LETTER M WITH ACUTE */
+ /*1808*/    0x1e41,  1,   0x1e40, /* LATIN CAPITAL LETTER M WITH DOT A.. */
+ /*1811*/    0x1e43,  1,   0x1e42, /* LATIN CAPITAL LETTER M WITH DOT B.. */
+ /*1814*/    0x1e45,  1,   0x1e44, /* LATIN CAPITAL LETTER N WITH DOT A.. */
+ /*1817*/    0x1e47,  1,   0x1e46, /* LATIN CAPITAL LETTER N WITH DOT B.. */
+ /*1820*/    0x1e49,  1,   0x1e48, /* LATIN CAPITAL LETTER N WITH LINE .. */
+ /*1823*/    0x1e4b,  1,   0x1e4a, /* LATIN CAPITAL LETTER N WITH CIRCU.. */
+ /*1826*/    0x1e4d,  1,   0x1e4c, /* LATIN CAPITAL LETTER O WITH TILDE.. */
+ /*1829*/    0x1e4f,  1,   0x1e4e, /* LATIN CAPITAL LETTER O WITH TILDE.. */
+ /*1832*/    0x1e51,  1,   0x1e50, /* LATIN CAPITAL LETTER O WITH MACRO.. */
+ /*1835*/    0x1e53,  1,   0x1e52, /* LATIN CAPITAL LETTER O WITH MACRO.. */
+ /*1838*/    0x1e55,  1,   0x1e54, /* LATIN CAPITAL LETTER P WITH ACUTE */
+ /*1841*/    0x1e57,  1,   0x1e56, /* LATIN CAPITAL LETTER P WITH DOT A.. */
+ /*1844*/    0x1e59,  1,   0x1e58, /* LATIN CAPITAL LETTER R WITH DOT A.. */
+ /*1847*/    0x1e5b,  1,   0x1e5a, /* LATIN CAPITAL LETTER R WITH DOT B.. */
+ /*1850*/    0x1e5d,  1,   0x1e5c, /* LATIN CAPITAL LETTER R WITH DOT B.. */
+ /*1853*/    0x1e5f,  1,   0x1e5e, /* LATIN CAPITAL LETTER R WITH LINE .. */
+ /*1856*/    0x1e61,  2,   0x1e60,   0x1e9b, /* LATIN CAPITAL LETTER S WITH DOT A.. */
+ /*1860*/    0x1e63,  1,   0x1e62, /* LATIN CAPITAL LETTER S WITH DOT B.. */
+ /*1863*/    0x1e65,  1,   0x1e64, /* LATIN CAPITAL LETTER S WITH ACUTE.. */
+ /*1866*/    0x1e67,  1,   0x1e66, /* LATIN CAPITAL LETTER S WITH CARON.. */
+ /*1869*/    0x1e69,  1,   0x1e68, /* LATIN CAPITAL LETTER S WITH DOT B.. */
+ /*1872*/    0x1e6b,  1,   0x1e6a, /* LATIN CAPITAL LETTER T WITH DOT A.. */
+ /*1875*/    0x1e6d,  1,   0x1e6c, /* LATIN CAPITAL LETTER T WITH DOT B.. */
+ /*1878*/    0x1e6f,  1,   0x1e6e, /* LATIN CAPITAL LETTER T WITH LINE .. */
+ /*1881*/    0x1e71,  1,   0x1e70, /* LATIN CAPITAL LETTER T WITH CIRCU.. */
+ /*1884*/    0x1e73,  1,   0x1e72, /* LATIN CAPITAL LETTER U WITH DIAER.. */
+ /*1887*/    0x1e75,  1,   0x1e74, /* LATIN CAPITAL LETTER U WITH TILDE.. */
+ /*1890*/    0x1e77,  1,   0x1e76, /* LATIN CAPITAL LETTER U WITH CIRCU.. */
+ /*1893*/    0x1e79,  1,   0x1e78, /* LATIN CAPITAL LETTER U WITH TILDE.. */
+ /*1896*/    0x1e7b,  1,   0x1e7a, /* LATIN CAPITAL LETTER U WITH MACRO.. */
+ /*1899*/    0x1e7d,  1,   0x1e7c, /* LATIN CAPITAL LETTER V WITH TILDE */
+ /*1902*/    0x1e7f,  1,   0x1e7e, /* LATIN CAPITAL LETTER V WITH DOT B.. */
+ /*1905*/    0x1e81,  1,   0x1e80, /* LATIN CAPITAL LETTER W WITH GRAVE */
+ /*1908*/    0x1e83,  1,   0x1e82, /* LATIN CAPITAL LETTER W WITH ACUTE */
+ /*1911*/    0x1e85,  1,   0x1e84, /* LATIN CAPITAL LETTER W WITH DIAER.. */
+ /*1914*/    0x1e87,  1,   0x1e86, /* LATIN CAPITAL LETTER W WITH DOT A.. */
+ /*1917*/    0x1e89,  1,   0x1e88, /* LATIN CAPITAL LETTER W WITH DOT B.. */
+ /*1920*/    0x1e8b,  1,   0x1e8a, /* LATIN CAPITAL LETTER X WITH DOT A.. */
+ /*1923*/    0x1e8d,  1,   0x1e8c, /* LATIN CAPITAL LETTER X WITH DIAER.. */
+ /*1926*/    0x1e8f,  1,   0x1e8e, /* LATIN CAPITAL LETTER Y WITH DOT A.. */
+ /*1929*/    0x1e91,  1,   0x1e90, /* LATIN CAPITAL LETTER Z WITH CIRCU.. */
+ /*1932*/    0x1e93,  1,   0x1e92, /* LATIN CAPITAL LETTER Z WITH DOT B.. */
+ /*1935*/    0x1e95,  1,   0x1e94, /* LATIN CAPITAL LETTER Z WITH LINE .. */
+ /*1938*/    0x1ea1,  1,   0x1ea0, /* LATIN CAPITAL LETTER A WITH DOT B.. */
+ /*1941*/    0x1ea3,  1,   0x1ea2, /* LATIN CAPITAL LETTER A WITH HOOK .. */
+ /*1944*/    0x1ea5,  1,   0x1ea4, /* LATIN CAPITAL LETTER A WITH CIRCU.. */
+ /*1947*/    0x1ea7,  1,   0x1ea6, /* LATIN CAPITAL LETTER A WITH CIRCU.. */
+ /*1950*/    0x1ea9,  1,   0x1ea8, /* LATIN CAPITAL LETTER A WITH CIRCU.. */
+ /*1953*/    0x1eab,  1,   0x1eaa, /* LATIN CAPITAL LETTER A WITH CIRCU.. */
+ /*1956*/    0x1ead,  1,   0x1eac, /* LATIN CAPITAL LETTER A WITH CIRCU.. */
+ /*1959*/    0x1eaf,  1,   0x1eae, /* LATIN CAPITAL LETTER A WITH BREVE.. */
+ /*1962*/    0x1eb1,  1,   0x1eb0, /* LATIN CAPITAL LETTER A WITH BREVE.. */
+ /*1965*/    0x1eb3,  1,   0x1eb2, /* LATIN CAPITAL LETTER A WITH BREVE.. */
+ /*1968*/    0x1eb5,  1,   0x1eb4, /* LATIN CAPITAL LETTER A WITH BREVE.. */
+ /*1971*/    0x1eb7,  1,   0x1eb6, /* LATIN CAPITAL LETTER A WITH BREVE.. */
+ /*1974*/    0x1eb9,  1,   0x1eb8, /* LATIN CAPITAL LETTER E WITH DOT B.. */
+ /*1977*/    0x1ebb,  1,   0x1eba, /* LATIN CAPITAL LETTER E WITH HOOK .. */
+ /*1980*/    0x1ebd,  1,   0x1ebc, /* LATIN CAPITAL LETTER E WITH TILDE */
+ /*1983*/    0x1ebf,  1,   0x1ebe, /* LATIN CAPITAL LETTER E WITH CIRCU.. */
+ /*1986*/    0x1ec1,  1,   0x1ec0, /* LATIN CAPITAL LETTER E WITH CIRCU.. */
+ /*1989*/    0x1ec3,  1,   0x1ec2, /* LATIN CAPITAL LETTER E WITH CIRCU.. */
+ /*1992*/    0x1ec5,  1,   0x1ec4, /* LATIN CAPITAL LETTER E WITH CIRCU.. */
+ /*1995*/    0x1ec7,  1,   0x1ec6, /* LATIN CAPITAL LETTER E WITH CIRCU.. */
+ /*1998*/    0x1ec9,  1,   0x1ec8, /* LATIN CAPITAL LETTER I WITH HOOK .. */
+ /*2001*/    0x1ecb,  1,   0x1eca, /* LATIN CAPITAL LETTER I WITH DOT B.. */
+ /*2004*/    0x1ecd,  1,   0x1ecc, /* LATIN CAPITAL LETTER O WITH DOT B.. */
+ /*2007*/    0x1ecf,  1,   0x1ece, /* LATIN CAPITAL LETTER O WITH HOOK .. */
+ /*2010*/    0x1ed1,  1,   0x1ed0, /* LATIN CAPITAL LETTER O WITH CIRCU.. */
+ /*2013*/    0x1ed3,  1,   0x1ed2, /* LATIN CAPITAL LETTER O WITH CIRCU.. */
+ /*2016*/    0x1ed5,  1,   0x1ed4, /* LATIN CAPITAL LETTER O WITH CIRCU.. */
+ /*2019*/    0x1ed7,  1,   0x1ed6, /* LATIN CAPITAL LETTER O WITH CIRCU.. */
+ /*2022*/    0x1ed9,  1,   0x1ed8, /* LATIN CAPITAL LETTER O WITH CIRCU.. */
+ /*2025*/    0x1edb,  1,   0x1eda, /* LATIN CAPITAL LETTER O WITH HORN .. */
+ /*2028*/    0x1edd,  1,   0x1edc, /* LATIN CAPITAL LETTER O WITH HORN .. */
+ /*2031*/    0x1edf,  1,   0x1ede, /* LATIN CAPITAL LETTER O WITH HORN .. */
+ /*2034*/    0x1ee1,  1,   0x1ee0, /* LATIN CAPITAL LETTER O WITH HORN .. */
+ /*2037*/    0x1ee3,  1,   0x1ee2, /* LATIN CAPITAL LETTER O WITH HORN .. */
+ /*2040*/    0x1ee5,  1,   0x1ee4, /* LATIN CAPITAL LETTER U WITH DOT B.. */
+ /*2043*/    0x1ee7,  1,   0x1ee6, /* LATIN CAPITAL LETTER U WITH HOOK .. */
+ /*2046*/    0x1ee9,  1,   0x1ee8, /* LATIN CAPITAL LETTER U WITH HORN .. */
+ /*2049*/    0x1eeb,  1,   0x1eea, /* LATIN CAPITAL LETTER U WITH HORN .. */
+ /*2052*/    0x1eed,  1,   0x1eec, /* LATIN CAPITAL LETTER U WITH HORN .. */
+ /*2055*/    0x1eef,  1,   0x1eee, /* LATIN CAPITAL LETTER U WITH HORN .. */
+ /*2058*/    0x1ef1,  1,   0x1ef0, /* LATIN CAPITAL LETTER U WITH HORN .. */
+ /*2061*/    0x1ef3,  1,   0x1ef2, /* LATIN CAPITAL LETTER Y WITH GRAVE */
+ /*2064*/    0x1ef5,  1,   0x1ef4, /* LATIN CAPITAL LETTER Y WITH DOT B.. */
+ /*2067*/    0x1ef7,  1,   0x1ef6, /* LATIN CAPITAL LETTER Y WITH HOOK .. */
+ /*2070*/    0x1ef9,  1,   0x1ef8, /* LATIN CAPITAL LETTER Y WITH TILDE */
+ /*2073*/    0x1efb,  1,   0x1efa, /* LATIN CAPITAL LETTER MIDDLE-WELSH.. */
+ /*2076*/    0x1efd,  1,   0x1efc, /* LATIN CAPITAL LETTER MIDDLE-WELSH.. */
+ /*2079*/    0x1eff,  1,   0x1efe, /* LATIN CAPITAL LETTER Y WITH LOOP */
+ /*2082*/    0x1f00,  1,   0x1f08, /* GREEK CAPITAL LETTER ALPHA WITH P.. */
+ /*2085*/    0x1f01,  1,   0x1f09, /* GREEK CAPITAL LETTER ALPHA WITH D.. */
+ /*2088*/    0x1f02,  1,   0x1f0a, /* GREEK CAPITAL LETTER ALPHA WITH P.. */
+ /*2091*/    0x1f03,  1,   0x1f0b, /* GREEK CAPITAL LETTER ALPHA WITH D.. */
+ /*2094*/    0x1f04,  1,   0x1f0c, /* GREEK CAPITAL LETTER ALPHA WITH P.. */
+ /*2097*/    0x1f05,  1,   0x1f0d, /* GREEK CAPITAL LETTER ALPHA WITH D.. */
+ /*2100*/    0x1f06,  1,   0x1f0e, /* GREEK CAPITAL LETTER ALPHA WITH P.. */
+ /*2103*/    0x1f07,  1,   0x1f0f, /* GREEK CAPITAL LETTER ALPHA WITH D.. */
+ /*2106*/    0x1f10,  1,   0x1f18, /* GREEK CAPITAL LETTER EPSILON WITH.. */
+ /*2109*/    0x1f11,  1,   0x1f19, /* GREEK CAPITAL LETTER EPSILON WITH.. */
+ /*2112*/    0x1f12,  1,   0x1f1a, /* GREEK CAPITAL LETTER EPSILON WITH.. */
+ /*2115*/    0x1f13,  1,   0x1f1b, /* GREEK CAPITAL LETTER EPSILON WITH.. */
+ /*2118*/    0x1f14,  1,   0x1f1c, /* GREEK CAPITAL LETTER EPSILON WITH.. */
+ /*2121*/    0x1f15,  1,   0x1f1d, /* GREEK CAPITAL LETTER EPSILON WITH.. */
+ /*2124*/    0x1f20,  1,   0x1f28, /* GREEK CAPITAL LETTER ETA WITH PSI.. */
+ /*2127*/    0x1f21,  1,   0x1f29, /* GREEK CAPITAL LETTER ETA WITH DAS.. */
+ /*2130*/    0x1f22,  1,   0x1f2a, /* GREEK CAPITAL LETTER ETA WITH PSI.. */
+ /*2133*/    0x1f23,  1,   0x1f2b, /* GREEK CAPITAL LETTER ETA WITH DAS.. */
+ /*2136*/    0x1f24,  1,   0x1f2c, /* GREEK CAPITAL LETTER ETA WITH PSI.. */
+ /*2139*/    0x1f25,  1,   0x1f2d, /* GREEK CAPITAL LETTER ETA WITH DAS.. */
+ /*2142*/    0x1f26,  1,   0x1f2e, /* GREEK CAPITAL LETTER ETA WITH PSI.. */
+ /*2145*/    0x1f27,  1,   0x1f2f, /* GREEK CAPITAL LETTER ETA WITH DAS.. */
+ /*2148*/    0x1f30,  1,   0x1f38, /* GREEK CAPITAL LETTER IOTA WITH PS.. */
+ /*2151*/    0x1f31,  1,   0x1f39, /* GREEK CAPITAL LETTER IOTA WITH DA.. */
+ /*2154*/    0x1f32,  1,   0x1f3a, /* GREEK CAPITAL LETTER IOTA WITH PS.. */
+ /*2157*/    0x1f33,  1,   0x1f3b, /* GREEK CAPITAL LETTER IOTA WITH DA.. */
+ /*2160*/    0x1f34,  1,   0x1f3c, /* GREEK CAPITAL LETTER IOTA WITH PS.. */
+ /*2163*/    0x1f35,  1,   0x1f3d, /* GREEK CAPITAL LETTER IOTA WITH DA.. */
+ /*2166*/    0x1f36,  1,   0x1f3e, /* GREEK CAPITAL LETTER IOTA WITH PS.. */
+ /*2169*/    0x1f37,  1,   0x1f3f, /* GREEK CAPITAL LETTER IOTA WITH DA.. */
+ /*2172*/    0x1f40,  1,   0x1f48, /* GREEK CAPITAL LETTER OMICRON WITH.. */
+ /*2175*/    0x1f41,  1,   0x1f49, /* GREEK CAPITAL LETTER OMICRON WITH.. */
+ /*2178*/    0x1f42,  1,   0x1f4a, /* GREEK CAPITAL LETTER OMICRON WITH.. */
+ /*2181*/    0x1f43,  1,   0x1f4b, /* GREEK CAPITAL LETTER OMICRON WITH.. */
+ /*2184*/    0x1f44,  1,   0x1f4c, /* GREEK CAPITAL LETTER OMICRON WITH.. */
+ /*2187*/    0x1f45,  1,   0x1f4d, /* GREEK CAPITAL LETTER OMICRON WITH.. */
+ /*2190*/    0x1f51,  1,   0x1f59, /* GREEK CAPITAL LETTER UPSILON WITH.. */
+ /*2193*/    0x1f53,  1,   0x1f5b, /* GREEK CAPITAL LETTER UPSILON WITH.. */
+ /*2196*/    0x1f55,  1,   0x1f5d, /* GREEK CAPITAL LETTER UPSILON WITH.. */
+ /*2199*/    0x1f57,  1,   0x1f5f, /* GREEK CAPITAL LETTER UPSILON WITH.. */
+ /*2202*/    0x1f60,  1,   0x1f68, /* GREEK CAPITAL LETTER OMEGA WITH P.. */
+ /*2205*/    0x1f61,  1,   0x1f69, /* GREEK CAPITAL LETTER OMEGA WITH D.. */
+ /*2208*/    0x1f62,  1,   0x1f6a, /* GREEK CAPITAL LETTER OMEGA WITH P.. */
+ /*2211*/    0x1f63,  1,   0x1f6b, /* GREEK CAPITAL LETTER OMEGA WITH D.. */
+ /*2214*/    0x1f64,  1,   0x1f6c, /* GREEK CAPITAL LETTER OMEGA WITH P.. */
+ /*2217*/    0x1f65,  1,   0x1f6d, /* GREEK CAPITAL LETTER OMEGA WITH D.. */
+ /*2220*/    0x1f66,  1,   0x1f6e, /* GREEK CAPITAL LETTER OMEGA WITH P.. */
+ /*2223*/    0x1f67,  1,   0x1f6f, /* GREEK CAPITAL LETTER OMEGA WITH D.. */
+ /*2226*/    0x1f70,  1,   0x1fba, /* GREEK CAPITAL LETTER ALPHA WITH V.. */
+ /*2229*/    0x1f71,  1,   0x1fbb, /* GREEK CAPITAL LETTER ALPHA WITH O.. */
+ /*2232*/    0x1f72,  1,   0x1fc8, /* GREEK CAPITAL LETTER EPSILON WITH.. */
+ /*2235*/    0x1f73,  1,   0x1fc9, /* GREEK CAPITAL LETTER EPSILON WITH.. */
+ /*2238*/    0x1f74,  1,   0x1fca, /* GREEK CAPITAL LETTER ETA WITH VAR.. */
+ /*2241*/    0x1f75,  1,   0x1fcb, /* GREEK CAPITAL LETTER ETA WITH OXIA */
+ /*2244*/    0x1f76,  1,   0x1fda, /* GREEK CAPITAL LETTER IOTA WITH VA.. */
+ /*2247*/    0x1f77,  1,   0x1fdb, /* GREEK CAPITAL LETTER IOTA WITH OX.. */
+ /*2250*/    0x1f78,  1,   0x1ff8, /* GREEK CAPITAL LETTER OMICRON WITH.. */
+ /*2253*/    0x1f79,  1,   0x1ff9, /* GREEK CAPITAL LETTER OMICRON WITH.. */
+ /*2256*/    0x1f7a,  1,   0x1fea, /* GREEK CAPITAL LETTER UPSILON WITH.. */
+ /*2259*/    0x1f7b,  1,   0x1feb, /* GREEK CAPITAL LETTER UPSILON WITH.. */
+ /*2262*/    0x1f7c,  1,   0x1ffa, /* GREEK CAPITAL LETTER OMEGA WITH V.. */
+ /*2265*/    0x1f7d,  1,   0x1ffb, /* GREEK CAPITAL LETTER OMEGA WITH O.. */
+ /*2268*/    0x1fb0,  1,   0x1fb8, /* GREEK CAPITAL LETTER ALPHA WITH V.. */
+ /*2271*/    0x1fb1,  1,   0x1fb9, /* GREEK CAPITAL LETTER ALPHA WITH M.. */
+ /*2274*/    0x1fd0,  1,   0x1fd8, /* GREEK CAPITAL LETTER IOTA WITH VR.. */
+ /*2277*/    0x1fd1,  1,   0x1fd9, /* GREEK CAPITAL LETTER IOTA WITH MA.. */
+ /*2280*/    0x1fe0,  1,   0x1fe8, /* GREEK CAPITAL LETTER UPSILON WITH.. */
+ /*2283*/    0x1fe1,  1,   0x1fe9, /* GREEK CAPITAL LETTER UPSILON WITH.. */
+ /*2286*/    0x1fe5,  1,   0x1fec, /* GREEK CAPITAL LETTER RHO WITH DAS.. */
+ /*2289*/    0x214e,  1,   0x2132, /* TURNED CAPITAL F */
+ /*2292*/    0x2170,  1,   0x2160, /* ROMAN NUMERAL ONE */
+ /*2295*/    0x2171,  1,   0x2161, /* ROMAN NUMERAL TWO */
+ /*2298*/    0x2172,  1,   0x2162, /* ROMAN NUMERAL THREE */
+ /*2301*/    0x2173,  1,   0x2163, /* ROMAN NUMERAL FOUR */
+ /*2304*/    0x2174,  1,   0x2164, /* ROMAN NUMERAL FIVE */
+ /*2307*/    0x2175,  1,   0x2165, /* ROMAN NUMERAL SIX */
+ /*2310*/    0x2176,  1,   0x2166, /* ROMAN NUMERAL SEVEN */
+ /*2313*/    0x2177,  1,   0x2167, /* ROMAN NUMERAL EIGHT */
+ /*2316*/    0x2178,  1,   0x2168, /* ROMAN NUMERAL NINE */
+ /*2319*/    0x2179,  1,   0x2169, /* ROMAN NUMERAL TEN */
+ /*2322*/    0x217a,  1,   0x216a, /* ROMAN NUMERAL ELEVEN */
+ /*2325*/    0x217b,  1,   0x216b, /* ROMAN NUMERAL TWELVE */
+ /*2328*/    0x217c,  1,   0x216c, /* ROMAN NUMERAL FIFTY */
+ /*2331*/    0x217d,  1,   0x216d, /* ROMAN NUMERAL ONE HUNDRED */
+ /*2334*/    0x217e,  1,   0x216e, /* ROMAN NUMERAL FIVE HUNDRED */
+ /*2337*/    0x217f,  1,   0x216f, /* ROMAN NUMERAL ONE THOUSAND */
+ /*2340*/    0x2184,  1,   0x2183, /* ROMAN NUMERAL REVERSED ONE HUNDRED */
+ /*2343*/    0x24d0,  1,   0x24b6, /* CIRCLED LATIN CAPITAL LETTER A */
+ /*2346*/    0x24d1,  1,   0x24b7, /* CIRCLED LATIN CAPITAL LETTER B */
+ /*2349*/    0x24d2,  1,   0x24b8, /* CIRCLED LATIN CAPITAL LETTER C */
+ /*2352*/    0x24d3,  1,   0x24b9, /* CIRCLED LATIN CAPITAL LETTER D */
+ /*2355*/    0x24d4,  1,   0x24ba, /* CIRCLED LATIN CAPITAL LETTER E */
+ /*2358*/    0x24d5,  1,   0x24bb, /* CIRCLED LATIN CAPITAL LETTER F */
+ /*2361*/    0x24d6,  1,   0x24bc, /* CIRCLED LATIN CAPITAL LETTER G */
+ /*2364*/    0x24d7,  1,   0x24bd, /* CIRCLED LATIN CAPITAL LETTER H */
+ /*2367*/    0x24d8,  1,   0x24be, /* CIRCLED LATIN CAPITAL LETTER I */
+ /*2370*/    0x24d9,  1,   0x24bf, /* CIRCLED LATIN CAPITAL LETTER J */
+ /*2373*/    0x24da,  1,   0x24c0, /* CIRCLED LATIN CAPITAL LETTER K */
+ /*2376*/    0x24db,  1,   0x24c1, /* CIRCLED LATIN CAPITAL LETTER L */
+ /*2379*/    0x24dc,  1,   0x24c2, /* CIRCLED LATIN CAPITAL LETTER M */
+ /*2382*/    0x24dd,  1,   0x24c3, /* CIRCLED LATIN CAPITAL LETTER N */
+ /*2385*/    0x24de,  1,   0x24c4, /* CIRCLED LATIN CAPITAL LETTER O */
+ /*2388*/    0x24df,  1,   0x24c5, /* CIRCLED LATIN CAPITAL LETTER P */
+ /*2391*/    0x24e0,  1,   0x24c6, /* CIRCLED LATIN CAPITAL LETTER Q */
+ /*2394*/    0x24e1,  1,   0x24c7, /* CIRCLED LATIN CAPITAL LETTER R */
+ /*2397*/    0x24e2,  1,   0x24c8, /* CIRCLED LATIN CAPITAL LETTER S */
+ /*2400*/    0x24e3,  1,   0x24c9, /* CIRCLED LATIN CAPITAL LETTER T */
+ /*2403*/    0x24e4,  1,   0x24ca, /* CIRCLED LATIN CAPITAL LETTER U */
+ /*2406*/    0x24e5,  1,   0x24cb, /* CIRCLED LATIN CAPITAL LETTER V */
+ /*2409*/    0x24e6,  1,   0x24cc, /* CIRCLED LATIN CAPITAL LETTER W */
+ /*2412*/    0x24e7,  1,   0x24cd, /* CIRCLED LATIN CAPITAL LETTER X */
+ /*2415*/    0x24e8,  1,   0x24ce, /* CIRCLED LATIN CAPITAL LETTER Y */
+ /*2418*/    0x24e9,  1,   0x24cf, /* CIRCLED LATIN CAPITAL LETTER Z */
+ /*2421*/    0x2c30,  1,   0x2c00, /* GLAGOLITIC CAPITAL LETTER AZU */
+ /*2424*/    0x2c31,  1,   0x2c01, /* GLAGOLITIC CAPITAL LETTER BUKY */
+ /*2427*/    0x2c32,  1,   0x2c02, /* GLAGOLITIC CAPITAL LETTER VEDE */
+ /*2430*/    0x2c33,  1,   0x2c03, /* GLAGOLITIC CAPITAL LETTER GLAGOLI */
+ /*2433*/    0x2c34,  1,   0x2c04, /* GLAGOLITIC CAPITAL LETTER DOBRO */
+ /*2436*/    0x2c35,  1,   0x2c05, /* GLAGOLITIC CAPITAL LETTER YESTU */
+ /*2439*/    0x2c36,  1,   0x2c06, /* GLAGOLITIC CAPITAL LETTER ZHIVETE */
+ /*2442*/    0x2c37,  1,   0x2c07, /* GLAGOLITIC CAPITAL LETTER DZELO */
+ /*2445*/    0x2c38,  1,   0x2c08, /* GLAGOLITIC CAPITAL LETTER ZEMLJA */
+ /*2448*/    0x2c39,  1,   0x2c09, /* GLAGOLITIC CAPITAL LETTER IZHE */
+ /*2451*/    0x2c3a,  1,   0x2c0a, /* GLAGOLITIC CAPITAL LETTER INITIAL.. */
+ /*2454*/    0x2c3b,  1,   0x2c0b, /* GLAGOLITIC CAPITAL LETTER I */
+ /*2457*/    0x2c3c,  1,   0x2c0c, /* GLAGOLITIC CAPITAL LETTER DJERVI */
+ /*2460*/    0x2c3d,  1,   0x2c0d, /* GLAGOLITIC CAPITAL LETTER KAKO */
+ /*2463*/    0x2c3e,  1,   0x2c0e, /* GLAGOLITIC CAPITAL LETTER LJUDIJE */
+ /*2466*/    0x2c3f,  1,   0x2c0f, /* GLAGOLITIC CAPITAL LETTER MYSLITE */
+ /*2469*/    0x2c40,  1,   0x2c10, /* GLAGOLITIC CAPITAL LETTER NASHI */
+ /*2472*/    0x2c41,  1,   0x2c11, /* GLAGOLITIC CAPITAL LETTER ONU */
+ /*2475*/    0x2c42,  1,   0x2c12, /* GLAGOLITIC CAPITAL LETTER POKOJI */
+ /*2478*/    0x2c43,  1,   0x2c13, /* GLAGOLITIC CAPITAL LETTER RITSI */
+ /*2481*/    0x2c44,  1,   0x2c14, /* GLAGOLITIC CAPITAL LETTER SLOVO */
+ /*2484*/    0x2c45,  1,   0x2c15, /* GLAGOLITIC CAPITAL LETTER TVRIDO */
+ /*2487*/    0x2c46,  1,   0x2c16, /* GLAGOLITIC CAPITAL LETTER UKU */
+ /*2490*/    0x2c47,  1,   0x2c17, /* GLAGOLITIC CAPITAL LETTER FRITU */
+ /*2493*/    0x2c48,  1,   0x2c18, /* GLAGOLITIC CAPITAL LETTER HERU */
+ /*2496*/    0x2c49,  1,   0x2c19, /* GLAGOLITIC CAPITAL LETTER OTU */
+ /*2499*/    0x2c4a,  1,   0x2c1a, /* GLAGOLITIC CAPITAL LETTER PE */
+ /*2502*/    0x2c4b,  1,   0x2c1b, /* GLAGOLITIC CAPITAL LETTER SHTA */
+ /*2505*/    0x2c4c,  1,   0x2c1c, /* GLAGOLITIC CAPITAL LETTER TSI */
+ /*2508*/    0x2c4d,  1,   0x2c1d, /* GLAGOLITIC CAPITAL LETTER CHRIVI */
+ /*2511*/    0x2c4e,  1,   0x2c1e, /* GLAGOLITIC CAPITAL LETTER SHA */
+ /*2514*/    0x2c4f,  1,   0x2c1f, /* GLAGOLITIC CAPITAL LETTER YERU */
+ /*2517*/    0x2c50,  1,   0x2c20, /* GLAGOLITIC CAPITAL LETTER YERI */
+ /*2520*/    0x2c51,  1,   0x2c21, /* GLAGOLITIC CAPITAL LETTER YATI */
+ /*2523*/    0x2c52,  1,   0x2c22, /* GLAGOLITIC CAPITAL LETTER SPIDERY.. */
+ /*2526*/    0x2c53,  1,   0x2c23, /* GLAGOLITIC CAPITAL LETTER YU */
+ /*2529*/    0x2c54,  1,   0x2c24, /* GLAGOLITIC CAPITAL LETTER SMALL Y.. */
+ /*2532*/    0x2c55,  1,   0x2c25, /* GLAGOLITIC CAPITAL LETTER SMALL Y.. */
+ /*2535*/    0x2c56,  1,   0x2c26, /* GLAGOLITIC CAPITAL LETTER YO */
+ /*2538*/    0x2c57,  1,   0x2c27, /* GLAGOLITIC CAPITAL LETTER IOTATED.. */
+ /*2541*/    0x2c58,  1,   0x2c28, /* GLAGOLITIC CAPITAL LETTER BIG YUS */
+ /*2544*/    0x2c59,  1,   0x2c29, /* GLAGOLITIC CAPITAL LETTER IOTATED.. */
+ /*2547*/    0x2c5a,  1,   0x2c2a, /* GLAGOLITIC CAPITAL LETTER FITA */
+ /*2550*/    0x2c5b,  1,   0x2c2b, /* GLAGOLITIC CAPITAL LETTER IZHITSA */
+ /*2553*/    0x2c5c,  1,   0x2c2c, /* GLAGOLITIC CAPITAL LETTER SHTAPIC */
+ /*2556*/    0x2c5d,  1,   0x2c2d, /* GLAGOLITIC CAPITAL LETTER TROKUTA.. */
+ /*2559*/    0x2c5e,  1,   0x2c2e, /* GLAGOLITIC CAPITAL LETTER LATINAT.. */
+ /*2562*/    0x2c61,  1,   0x2c60, /* LATIN CAPITAL LETTER L WITH DOUBL.. */
+ /*2565*/    0x2c65,  1,   0x023a, /* LATIN CAPITAL LETTER A WITH STROKE */
+ /*2568*/    0x2c66,  1,   0x023e, /* LATIN CAPITAL LETTER T WITH DIAGO.. */
+ /*2571*/    0x2c68,  1,   0x2c67, /* LATIN CAPITAL LETTER H WITH DESCE.. */
+ /*2574*/    0x2c6a,  1,   0x2c69, /* LATIN CAPITAL LETTER K WITH DESCE.. */
+ /*2577*/    0x2c6c,  1,   0x2c6b, /* LATIN CAPITAL LETTER Z WITH DESCE.. */
+ /*2580*/    0x2c73,  1,   0x2c72, /* LATIN CAPITAL LETTER W WITH HOOK */
+ /*2583*/    0x2c76,  1,   0x2c75, /* LATIN CAPITAL LETTER HALF H */
+ /*2586*/    0x2c81,  1,   0x2c80, /* COPTIC CAPITAL LETTER ALFA */
+ /*2589*/    0x2c83,  1,   0x2c82, /* COPTIC CAPITAL LETTER VIDA */
+ /*2592*/    0x2c85,  1,   0x2c84, /* COPTIC CAPITAL LETTER GAMMA */
+ /*2595*/    0x2c87,  1,   0x2c86, /* COPTIC CAPITAL LETTER DALDA */
+ /*2598*/    0x2c89,  1,   0x2c88, /* COPTIC CAPITAL LETTER EIE */
+ /*2601*/    0x2c8b,  1,   0x2c8a, /* COPTIC CAPITAL LETTER SOU */
+ /*2604*/    0x2c8d,  1,   0x2c8c, /* COPTIC CAPITAL LETTER ZATA */
+ /*2607*/    0x2c8f,  1,   0x2c8e, /* COPTIC CAPITAL LETTER HATE */
+ /*2610*/    0x2c91,  1,   0x2c90, /* COPTIC CAPITAL LETTER THETHE */
+ /*2613*/    0x2c93,  1,   0x2c92, /* COPTIC CAPITAL LETTER IAUDA */
+ /*2616*/    0x2c95,  1,   0x2c94, /* COPTIC CAPITAL LETTER KAPA */
+ /*2619*/    0x2c97,  1,   0x2c96, /* COPTIC CAPITAL LETTER LAULA */
+ /*2622*/    0x2c99,  1,   0x2c98, /* COPTIC CAPITAL LETTER MI */
+ /*2625*/    0x2c9b,  1,   0x2c9a, /* COPTIC CAPITAL LETTER NI */
+ /*2628*/    0x2c9d,  1,   0x2c9c, /* COPTIC CAPITAL LETTER KSI */
+ /*2631*/    0x2c9f,  1,   0x2c9e, /* COPTIC CAPITAL LETTER O */
+ /*2634*/    0x2ca1,  1,   0x2ca0, /* COPTIC CAPITAL LETTER PI */
+ /*2637*/    0x2ca3,  1,   0x2ca2, /* COPTIC CAPITAL LETTER RO */
+ /*2640*/    0x2ca5,  1,   0x2ca4, /* COPTIC CAPITAL LETTER SIMA */
+ /*2643*/    0x2ca7,  1,   0x2ca6, /* COPTIC CAPITAL LETTER TAU */
+ /*2646*/    0x2ca9,  1,   0x2ca8, /* COPTIC CAPITAL LETTER UA */
+ /*2649*/    0x2cab,  1,   0x2caa, /* COPTIC CAPITAL LETTER FI */
+ /*2652*/    0x2cad,  1,   0x2cac, /* COPTIC CAPITAL LETTER KHI */
+ /*2655*/    0x2caf,  1,   0x2cae, /* COPTIC CAPITAL LETTER PSI */
+ /*2658*/    0x2cb1,  1,   0x2cb0, /* COPTIC CAPITAL LETTER OOU */
+ /*2661*/    0x2cb3,  1,   0x2cb2, /* COPTIC CAPITAL LETTER DIALECT-P A.. */
+ /*2664*/    0x2cb5,  1,   0x2cb4, /* COPTIC CAPITAL LETTER OLD COPTIC .. */
+ /*2667*/    0x2cb7,  1,   0x2cb6, /* COPTIC CAPITAL LETTER CRYPTOGRAMM.. */
+ /*2670*/    0x2cb9,  1,   0x2cb8, /* COPTIC CAPITAL LETTER DIALECT-P K.. */
+ /*2673*/    0x2cbb,  1,   0x2cba, /* COPTIC CAPITAL LETTER DIALECT-P NI */
+ /*2676*/    0x2cbd,  1,   0x2cbc, /* COPTIC CAPITAL LETTER CRYPTOGRAMM.. */
+ /*2679*/    0x2cbf,  1,   0x2cbe, /* COPTIC CAPITAL LETTER OLD COPTIC .. */
+ /*2682*/    0x2cc1,  1,   0x2cc0, /* COPTIC CAPITAL LETTER SAMPI */
+ /*2685*/    0x2cc3,  1,   0x2cc2, /* COPTIC CAPITAL LETTER CROSSED SHEI */
+ /*2688*/    0x2cc5,  1,   0x2cc4, /* COPTIC CAPITAL LETTER OLD COPTIC .. */
+ /*2691*/    0x2cc7,  1,   0x2cc6, /* COPTIC CAPITAL LETTER OLD COPTIC .. */
+ /*2694*/    0x2cc9,  1,   0x2cc8, /* COPTIC CAPITAL LETTER AKHMIMIC KH.. */
+ /*2697*/    0x2ccb,  1,   0x2cca, /* COPTIC CAPITAL LETTER DIALECT-P H.. */
+ /*2700*/    0x2ccd,  1,   0x2ccc, /* COPTIC CAPITAL LETTER OLD COPTIC .. */
+ /*2703*/    0x2ccf,  1,   0x2cce, /* COPTIC CAPITAL LETTER OLD COPTIC .. */
+ /*2706*/    0x2cd1,  1,   0x2cd0, /* COPTIC CAPITAL LETTER L-SHAPED HA */
+ /*2709*/    0x2cd3,  1,   0x2cd2, /* COPTIC CAPITAL LETTER OLD COPTIC .. */
+ /*2712*/    0x2cd5,  1,   0x2cd4, /* COPTIC CAPITAL LETTER OLD COPTIC .. */
+ /*2715*/    0x2cd7,  1,   0x2cd6, /* COPTIC CAPITAL LETTER OLD COPTIC .. */
+ /*2718*/    0x2cd9,  1,   0x2cd8, /* COPTIC CAPITAL LETTER OLD COPTIC .. */
+ /*2721*/    0x2cdb,  1,   0x2cda, /* COPTIC CAPITAL LETTER OLD COPTIC .. */
+ /*2724*/    0x2cdd,  1,   0x2cdc, /* COPTIC CAPITAL LETTER OLD NUBIAN .. */
+ /*2727*/    0x2cdf,  1,   0x2cde, /* COPTIC CAPITAL LETTER OLD NUBIAN .. */
+ /*2730*/    0x2ce1,  1,   0x2ce0, /* COPTIC CAPITAL LETTER OLD NUBIAN .. */
+ /*2733*/    0x2ce3,  1,   0x2ce2, /* COPTIC CAPITAL LETTER OLD NUBIAN .. */
+ /*2736*/    0x2cec,  1,   0x2ceb, /* COPTIC CAPITAL LETTER CRYPTOGRAMM.. */
+ /*2739*/    0x2cee,  1,   0x2ced, /* COPTIC CAPITAL LETTER CRYPTOGRAMM.. */
+ /*2742*/    0x2cf3,  1,   0x2cf2, /* COPTIC CAPITAL LETTER BOHAIRIC KH.. */
+ /*2745*/    0x2d00,  1,   0x10a0, /* GEORGIAN CAPITAL LETTER AN */
+ /*2748*/    0x2d01,  1,   0x10a1, /* GEORGIAN CAPITAL LETTER BAN */
+ /*2751*/    0x2d02,  1,   0x10a2, /* GEORGIAN CAPITAL LETTER GAN */
+ /*2754*/    0x2d03,  1,   0x10a3, /* GEORGIAN CAPITAL LETTER DON */
+ /*2757*/    0x2d04,  1,   0x10a4, /* GEORGIAN CAPITAL LETTER EN */
+ /*2760*/    0x2d05,  1,   0x10a5, /* GEORGIAN CAPITAL LETTER VIN */
+ /*2763*/    0x2d06,  1,   0x10a6, /* GEORGIAN CAPITAL LETTER ZEN */
+ /*2766*/    0x2d07,  1,   0x10a7, /* GEORGIAN CAPITAL LETTER TAN */
+ /*2769*/    0x2d08,  1,   0x10a8, /* GEORGIAN CAPITAL LETTER IN */
+ /*2772*/    0x2d09,  1,   0x10a9, /* GEORGIAN CAPITAL LETTER KAN */
+ /*2775*/    0x2d0a,  1,   0x10aa, /* GEORGIAN CAPITAL LETTER LAS */
+ /*2778*/    0x2d0b,  1,   0x10ab, /* GEORGIAN CAPITAL LETTER MAN */
+ /*2781*/    0x2d0c,  1,   0x10ac, /* GEORGIAN CAPITAL LETTER NAR */
+ /*2784*/    0x2d0d,  1,   0x10ad, /* GEORGIAN CAPITAL LETTER ON */
+ /*2787*/    0x2d0e,  1,   0x10ae, /* GEORGIAN CAPITAL LETTER PAR */
+ /*2790*/    0x2d0f,  1,   0x10af, /* GEORGIAN CAPITAL LETTER ZHAR */
+ /*2793*/    0x2d10,  1,   0x10b0, /* GEORGIAN CAPITAL LETTER RAE */
+ /*2796*/    0x2d11,  1,   0x10b1, /* GEORGIAN CAPITAL LETTER SAN */
+ /*2799*/    0x2d12,  1,   0x10b2, /* GEORGIAN CAPITAL LETTER TAR */
+ /*2802*/    0x2d13,  1,   0x10b3, /* GEORGIAN CAPITAL LETTER UN */
+ /*2805*/    0x2d14,  1,   0x10b4, /* GEORGIAN CAPITAL LETTER PHAR */
+ /*2808*/    0x2d15,  1,   0x10b5, /* GEORGIAN CAPITAL LETTER KHAR */
+ /*2811*/    0x2d16,  1,   0x10b6, /* GEORGIAN CAPITAL LETTER GHAN */
+ /*2814*/    0x2d17,  1,   0x10b7, /* GEORGIAN CAPITAL LETTER QAR */
+ /*2817*/    0x2d18,  1,   0x10b8, /* GEORGIAN CAPITAL LETTER SHIN */
+ /*2820*/    0x2d19,  1,   0x10b9, /* GEORGIAN CAPITAL LETTER CHIN */
+ /*2823*/    0x2d1a,  1,   0x10ba, /* GEORGIAN CAPITAL LETTER CAN */
+ /*2826*/    0x2d1b,  1,   0x10bb, /* GEORGIAN CAPITAL LETTER JIL */
+ /*2829*/    0x2d1c,  1,   0x10bc, /* GEORGIAN CAPITAL LETTER CIL */
+ /*2832*/    0x2d1d,  1,   0x10bd, /* GEORGIAN CAPITAL LETTER CHAR */
+ /*2835*/    0x2d1e,  1,   0x10be, /* GEORGIAN CAPITAL LETTER XAN */
+ /*2838*/    0x2d1f,  1,   0x10bf, /* GEORGIAN CAPITAL LETTER JHAN */
+ /*2841*/    0x2d20,  1,   0x10c0, /* GEORGIAN CAPITAL LETTER HAE */
+ /*2844*/    0x2d21,  1,   0x10c1, /* GEORGIAN CAPITAL LETTER HE */
+ /*2847*/    0x2d22,  1,   0x10c2, /* GEORGIAN CAPITAL LETTER HIE */
+ /*2850*/    0x2d23,  1,   0x10c3, /* GEORGIAN CAPITAL LETTER WE */
+ /*2853*/    0x2d24,  1,   0x10c4, /* GEORGIAN CAPITAL LETTER HAR */
+ /*2856*/    0x2d25,  1,   0x10c5, /* GEORGIAN CAPITAL LETTER HOE */
+ /*2859*/    0x2d27,  1,   0x10c7, /* GEORGIAN CAPITAL LETTER YN */
+ /*2862*/    0x2d2d,  1,   0x10cd, /* GEORGIAN CAPITAL LETTER AEN */
+ /*2865*/    0xa641,  1,   0xa640, /* CYRILLIC CAPITAL LETTER ZEMLYA */
+ /*2868*/    0xa643,  1,   0xa642, /* CYRILLIC CAPITAL LETTER DZELO */
+ /*2871*/    0xa645,  1,   0xa644, /* CYRILLIC CAPITAL LETTER REVERSED .. */
+ /*2874*/    0xa647,  1,   0xa646, /* CYRILLIC CAPITAL LETTER IOTA */
+ /*2877*/    0xa649,  1,   0xa648, /* CYRILLIC CAPITAL LETTER DJERV */
+ /*2880*/    0xa64b,  1,   0xa64a, /* CYRILLIC CAPITAL LETTER MONOGRAPH.. */
+ /*2883*/    0xa64d,  1,   0xa64c, /* CYRILLIC CAPITAL LETTER BROAD OME.. */
+ /*2886*/    0xa64f,  1,   0xa64e, /* CYRILLIC CAPITAL LETTER NEUTRAL Y.. */
+ /*2889*/    0xa651,  1,   0xa650, /* CYRILLIC CAPITAL LETTER YERU WITH.. */
+ /*2892*/    0xa653,  1,   0xa652, /* CYRILLIC CAPITAL LETTER IOTIFIED .. */
+ /*2895*/    0xa655,  1,   0xa654, /* CYRILLIC CAPITAL LETTER REVERSED .. */
+ /*2898*/    0xa657,  1,   0xa656, /* CYRILLIC CAPITAL LETTER IOTIFIED A */
+ /*2901*/    0xa659,  1,   0xa658, /* CYRILLIC CAPITAL LETTER CLOSED LI.. */
+ /*2904*/    0xa65b,  1,   0xa65a, /* CYRILLIC CAPITAL LETTER BLENDED Y.. */
+ /*2907*/    0xa65d,  1,   0xa65c, /* CYRILLIC CAPITAL LETTER IOTIFIED .. */
+ /*2910*/    0xa65f,  1,   0xa65e, /* CYRILLIC CAPITAL LETTER YN */
+ /*2913*/    0xa661,  1,   0xa660, /* CYRILLIC CAPITAL LETTER REVERSED .. */
+ /*2916*/    0xa663,  1,   0xa662, /* CYRILLIC CAPITAL LETTER SOFT DE */
+ /*2919*/    0xa665,  1,   0xa664, /* CYRILLIC CAPITAL LETTER SOFT EL */
+ /*2922*/    0xa667,  1,   0xa666, /* CYRILLIC CAPITAL LETTER SOFT EM */
+ /*2925*/    0xa669,  1,   0xa668, /* CYRILLIC CAPITAL LETTER MONOCULAR.. */
+ /*2928*/    0xa66b,  1,   0xa66a, /* CYRILLIC CAPITAL LETTER BINOCULAR.. */
+ /*2931*/    0xa66d,  1,   0xa66c, /* CYRILLIC CAPITAL LETTER DOUBLE MO.. */
+ /*2934*/    0xa681,  1,   0xa680, /* CYRILLIC CAPITAL LETTER DWE */
+ /*2937*/    0xa683,  1,   0xa682, /* CYRILLIC CAPITAL LETTER DZWE */
+ /*2940*/    0xa685,  1,   0xa684, /* CYRILLIC CAPITAL LETTER ZHWE */
+ /*2943*/    0xa687,  1,   0xa686, /* CYRILLIC CAPITAL LETTER CCHE */
+ /*2946*/    0xa689,  1,   0xa688, /* CYRILLIC CAPITAL LETTER DZZE */
+ /*2949*/    0xa68b,  1,   0xa68a, /* CYRILLIC CAPITAL LETTER TE WITH M.. */
+ /*2952*/    0xa68d,  1,   0xa68c, /* CYRILLIC CAPITAL LETTER TWE */
+ /*2955*/    0xa68f,  1,   0xa68e, /* CYRILLIC CAPITAL LETTER TSWE */
+ /*2958*/    0xa691,  1,   0xa690, /* CYRILLIC CAPITAL LETTER TSSE */
+ /*2961*/    0xa693,  1,   0xa692, /* CYRILLIC CAPITAL LETTER TCHE */
+ /*2964*/    0xa695,  1,   0xa694, /* CYRILLIC CAPITAL LETTER HWE */
+ /*2967*/    0xa697,  1,   0xa696, /* CYRILLIC CAPITAL LETTER SHWE */
+ /*2970*/    0xa699,  1,   0xa698, /* CYRILLIC CAPITAL LETTER DOUBLE O */
+ /*2973*/    0xa69b,  1,   0xa69a, /* CYRILLIC CAPITAL LETTER CROSSED O */
+ /*2976*/    0xa723,  1,   0xa722, /* LATIN CAPITAL LETTER EGYPTOLOGICA.. */
+ /*2979*/    0xa725,  1,   0xa724, /* LATIN CAPITAL LETTER EGYPTOLOGICA.. */
+ /*2982*/    0xa727,  1,   0xa726, /* LATIN CAPITAL LETTER HENG */
+ /*2985*/    0xa729,  1,   0xa728, /* LATIN CAPITAL LETTER TZ */
+ /*2988*/    0xa72b,  1,   0xa72a, /* LATIN CAPITAL LETTER TRESILLO */
+ /*2991*/    0xa72d,  1,   0xa72c, /* LATIN CAPITAL LETTER CUATRILLO */
+ /*2994*/    0xa72f,  1,   0xa72e, /* LATIN CAPITAL LETTER CUATRILLO WI.. */
+ /*2997*/    0xa733,  1,   0xa732, /* LATIN CAPITAL LETTER AA */
+ /*3000*/    0xa735,  1,   0xa734, /* LATIN CAPITAL LETTER AO */
+ /*3003*/    0xa737,  1,   0xa736, /* LATIN CAPITAL LETTER AU */
+ /*3006*/    0xa739,  1,   0xa738, /* LATIN CAPITAL LETTER AV */
+ /*3009*/    0xa73b,  1,   0xa73a, /* LATIN CAPITAL LETTER AV WITH HORI.. */
+ /*3012*/    0xa73d,  1,   0xa73c, /* LATIN CAPITAL LETTER AY */
+ /*3015*/    0xa73f,  1,   0xa73e, /* LATIN CAPITAL LETTER REVERSED C W.. */
+ /*3018*/    0xa741,  1,   0xa740, /* LATIN CAPITAL LETTER K WITH STROKE */
+ /*3021*/    0xa743,  1,   0xa742, /* LATIN CAPITAL LETTER K WITH DIAGO.. */
+ /*3024*/    0xa745,  1,   0xa744, /* LATIN CAPITAL LETTER K WITH STROK.. */
+ /*3027*/    0xa747,  1,   0xa746, /* LATIN CAPITAL LETTER BROKEN L */
+ /*3030*/    0xa749,  1,   0xa748, /* LATIN CAPITAL LETTER L WITH HIGH .. */
+ /*3033*/    0xa74b,  1,   0xa74a, /* LATIN CAPITAL LETTER O WITH LONG .. */
+ /*3036*/    0xa74d,  1,   0xa74c, /* LATIN CAPITAL LETTER O WITH LOOP */
+ /*3039*/    0xa74f,  1,   0xa74e, /* LATIN CAPITAL LETTER OO */
+ /*3042*/    0xa751,  1,   0xa750, /* LATIN CAPITAL LETTER P WITH STROK.. */
+ /*3045*/    0xa753,  1,   0xa752, /* LATIN CAPITAL LETTER P WITH FLOUR.. */
+ /*3048*/    0xa755,  1,   0xa754, /* LATIN CAPITAL LETTER P WITH SQUIR.. */
+ /*3051*/    0xa757,  1,   0xa756, /* LATIN CAPITAL LETTER Q WITH STROK.. */
+ /*3054*/    0xa759,  1,   0xa758, /* LATIN CAPITAL LETTER Q WITH DIAGO.. */
+ /*3057*/    0xa75b,  1,   0xa75a, /* LATIN CAPITAL LETTER R ROTUNDA */
+ /*3060*/    0xa75d,  1,   0xa75c, /* LATIN CAPITAL LETTER RUM ROTUNDA */
+ /*3063*/    0xa75f,  1,   0xa75e, /* LATIN CAPITAL LETTER V WITH DIAGO.. */
+ /*3066*/    0xa761,  1,   0xa760, /* LATIN CAPITAL LETTER VY */
+ /*3069*/    0xa763,  1,   0xa762, /* LATIN CAPITAL LETTER VISIGOTHIC Z */
+ /*3072*/    0xa765,  1,   0xa764, /* LATIN CAPITAL LETTER THORN WITH S.. */
+ /*3075*/    0xa767,  1,   0xa766, /* LATIN CAPITAL LETTER THORN WITH S.. */
+ /*3078*/    0xa769,  1,   0xa768, /* LATIN CAPITAL LETTER VEND */
+ /*3081*/    0xa76b,  1,   0xa76a, /* LATIN CAPITAL LETTER ET */
+ /*3084*/    0xa76d,  1,   0xa76c, /* LATIN CAPITAL LETTER IS */
+ /*3087*/    0xa76f,  1,   0xa76e, /* LATIN CAPITAL LETTER CON */
+ /*3090*/    0xa77a,  1,   0xa779, /* LATIN CAPITAL LETTER INSULAR D */
+ /*3093*/    0xa77c,  1,   0xa77b, /* LATIN CAPITAL LETTER INSULAR F */
+ /*3096*/    0xa77f,  1,   0xa77e, /* LATIN CAPITAL LETTER TURNED INSUL.. */
+ /*3099*/    0xa781,  1,   0xa780, /* LATIN CAPITAL LETTER TURNED L */
+ /*3102*/    0xa783,  1,   0xa782, /* LATIN CAPITAL LETTER INSULAR R */
+ /*3105*/    0xa785,  1,   0xa784, /* LATIN CAPITAL LETTER INSULAR S */
+ /*3108*/    0xa787,  1,   0xa786, /* LATIN CAPITAL LETTER INSULAR T */
+ /*3111*/    0xa78c,  1,   0xa78b, /* LATIN CAPITAL LETTER SALTILLO */
+ /*3114*/    0xa791,  1,   0xa790, /* LATIN CAPITAL LETTER N WITH DESCE.. */
+ /*3117*/    0xa793,  1,   0xa792, /* LATIN CAPITAL LETTER C WITH BAR */
+ /*3120*/    0xa797,  1,   0xa796, /* LATIN CAPITAL LETTER B WITH FLOUR.. */
+ /*3123*/    0xa799,  1,   0xa798, /* LATIN CAPITAL LETTER F WITH STROKE */
+ /*3126*/    0xa79b,  1,   0xa79a, /* LATIN CAPITAL LETTER VOLAPUK AE */
+ /*3129*/    0xa79d,  1,   0xa79c, /* LATIN CAPITAL LETTER VOLAPUK OE */
+ /*3132*/    0xa79f,  1,   0xa79e, /* LATIN CAPITAL LETTER VOLAPUK UE */
+ /*3135*/    0xa7a1,  1,   0xa7a0, /* LATIN CAPITAL LETTER G WITH OBLIQ.. */
+ /*3138*/    0xa7a3,  1,   0xa7a2, /* LATIN CAPITAL LETTER K WITH OBLIQ.. */
+ /*3141*/    0xa7a5,  1,   0xa7a4, /* LATIN CAPITAL LETTER N WITH OBLIQ.. */
+ /*3144*/    0xa7a7,  1,   0xa7a6, /* LATIN CAPITAL LETTER R WITH OBLIQ.. */
+ /*3147*/    0xa7a9,  1,   0xa7a8, /* LATIN CAPITAL LETTER S WITH OBLIQ.. */
+ /*3150*/    0xa7b5,  1,   0xa7b4, /* LATIN CAPITAL LETTER BETA */
+ /*3153*/    0xa7b7,  1,   0xa7b6, /* LATIN CAPITAL LETTER OMEGA */
+ /*3156*/    0xab53,  1,   0xa7b3, /* LATIN CAPITAL LETTER CHI */
+ /*3159*/    0xff41,  1,   0xff21, /* FULLWIDTH LATIN CAPITAL LETTER A */
+ /*3162*/    0xff42,  1,   0xff22, /* FULLWIDTH LATIN CAPITAL LETTER B */
+ /*3165*/    0xff43,  1,   0xff23, /* FULLWIDTH LATIN CAPITAL LETTER C */
+ /*3168*/    0xff44,  1,   0xff24, /* FULLWIDTH LATIN CAPITAL LETTER D */
+ /*3171*/    0xff45,  1,   0xff25, /* FULLWIDTH LATIN CAPITAL LETTER E */
+ /*3174*/    0xff46,  1,   0xff26, /* FULLWIDTH LATIN CAPITAL LETTER F */
+ /*3177*/    0xff47,  1,   0xff27, /* FULLWIDTH LATIN CAPITAL LETTER G */
+ /*3180*/    0xff48,  1,   0xff28, /* FULLWIDTH LATIN CAPITAL LETTER H */
+ /*3183*/    0xff49,  1,   0xff29, /* FULLWIDTH LATIN CAPITAL LETTER I */
+ /*3186*/    0xff4a,  1,   0xff2a, /* FULLWIDTH LATIN CAPITAL LETTER J */
+ /*3189*/    0xff4b,  1,   0xff2b, /* FULLWIDTH LATIN CAPITAL LETTER K */
+ /*3192*/    0xff4c,  1,   0xff2c, /* FULLWIDTH LATIN CAPITAL LETTER L */
+ /*3195*/    0xff4d,  1,   0xff2d, /* FULLWIDTH LATIN CAPITAL LETTER M */
+ /*3198*/    0xff4e,  1,   0xff2e, /* FULLWIDTH LATIN CAPITAL LETTER N */
+ /*3201*/    0xff4f,  1,   0xff2f, /* FULLWIDTH LATIN CAPITAL LETTER O */
+ /*3204*/    0xff50,  1,   0xff30, /* FULLWIDTH LATIN CAPITAL LETTER P */
+ /*3207*/    0xff51,  1,   0xff31, /* FULLWIDTH LATIN CAPITAL LETTER Q */
+ /*3210*/    0xff52,  1,   0xff32, /* FULLWIDTH LATIN CAPITAL LETTER R */
+ /*3213*/    0xff53,  1,   0xff33, /* FULLWIDTH LATIN CAPITAL LETTER S */
+ /*3216*/    0xff54,  1,   0xff34, /* FULLWIDTH LATIN CAPITAL LETTER T */
+ /*3219*/    0xff55,  1,   0xff35, /* FULLWIDTH LATIN CAPITAL LETTER U */
+ /*3222*/    0xff56,  1,   0xff36, /* FULLWIDTH LATIN CAPITAL LETTER V */
+ /*3225*/    0xff57,  1,   0xff37, /* FULLWIDTH LATIN CAPITAL LETTER W */
+ /*3228*/    0xff58,  1,   0xff38, /* FULLWIDTH LATIN CAPITAL LETTER X */
+ /*3231*/    0xff59,  1,   0xff39, /* FULLWIDTH LATIN CAPITAL LETTER Y */
+ /*3234*/    0xff5a,  1,   0xff3a, /* FULLWIDTH LATIN CAPITAL LETTER Z */
+ /*3237*/  0x010428,  1, 0x010400, /* DESERET CAPITAL LETTER LONG I */
+ /*3240*/  0x010429,  1, 0x010401, /* DESERET CAPITAL LETTER LONG E */
+ /*3243*/  0x01042a,  1, 0x010402, /* DESERET CAPITAL LETTER LONG A */
+ /*3246*/  0x01042b,  1, 0x010403, /* DESERET CAPITAL LETTER LONG AH */
+ /*3249*/  0x01042c,  1, 0x010404, /* DESERET CAPITAL LETTER LONG O */
+ /*3252*/  0x01042d,  1, 0x010405, /* DESERET CAPITAL LETTER LONG OO */
+ /*3255*/  0x01042e,  1, 0x010406, /* DESERET CAPITAL LETTER SHORT I */
+ /*3258*/  0x01042f,  1, 0x010407, /* DESERET CAPITAL LETTER SHORT E */
+ /*3261*/  0x010430,  1, 0x010408, /* DESERET CAPITAL LETTER SHORT A */
+ /*3264*/  0x010431,  1, 0x010409, /* DESERET CAPITAL LETTER SHORT AH */
+ /*3267*/  0x010432,  1, 0x01040a, /* DESERET CAPITAL LETTER SHORT O */
+ /*3270*/  0x010433,  1, 0x01040b, /* DESERET CAPITAL LETTER SHORT OO */
+ /*3273*/  0x010434,  1, 0x01040c, /* DESERET CAPITAL LETTER AY */
+ /*3276*/  0x010435,  1, 0x01040d, /* DESERET CAPITAL LETTER OW */
+ /*3279*/  0x010436,  1, 0x01040e, /* DESERET CAPITAL LETTER WU */
+ /*3282*/  0x010437,  1, 0x01040f, /* DESERET CAPITAL LETTER YEE */
+ /*3285*/  0x010438,  1, 0x010410, /* DESERET CAPITAL LETTER H */
+ /*3288*/  0x010439,  1, 0x010411, /* DESERET CAPITAL LETTER PEE */
+ /*3291*/  0x01043a,  1, 0x010412, /* DESERET CAPITAL LETTER BEE */
+ /*3294*/  0x01043b,  1, 0x010413, /* DESERET CAPITAL LETTER TEE */
+ /*3297*/  0x01043c,  1, 0x010414, /* DESERET CAPITAL LETTER DEE */
+ /*3300*/  0x01043d,  1, 0x010415, /* DESERET CAPITAL LETTER CHEE */
+ /*3303*/  0x01043e,  1, 0x010416, /* DESERET CAPITAL LETTER JEE */
+ /*3306*/  0x01043f,  1, 0x010417, /* DESERET CAPITAL LETTER KAY */
+ /*3309*/  0x010440,  1, 0x010418, /* DESERET CAPITAL LETTER GAY */
+ /*3312*/  0x010441,  1, 0x010419, /* DESERET CAPITAL LETTER EF */
+ /*3315*/  0x010442,  1, 0x01041a, /* DESERET CAPITAL LETTER VEE */
+ /*3318*/  0x010443,  1, 0x01041b, /* DESERET CAPITAL LETTER ETH */
+ /*3321*/  0x010444,  1, 0x01041c, /* DESERET CAPITAL LETTER THEE */
+ /*3324*/  0x010445,  1, 0x01041d, /* DESERET CAPITAL LETTER ES */
+ /*3327*/  0x010446,  1, 0x01041e, /* DESERET CAPITAL LETTER ZEE */
+ /*3330*/  0x010447,  1, 0x01041f, /* DESERET CAPITAL LETTER ESH */
+ /*3333*/  0x010448,  1, 0x010420, /* DESERET CAPITAL LETTER ZHEE */
+ /*3336*/  0x010449,  1, 0x010421, /* DESERET CAPITAL LETTER ER */
+ /*3339*/  0x01044a,  1, 0x010422, /* DESERET CAPITAL LETTER EL */
+ /*3342*/  0x01044b,  1, 0x010423, /* DESERET CAPITAL LETTER EM */
+ /*3345*/  0x01044c,  1, 0x010424, /* DESERET CAPITAL LETTER EN */
+ /*3348*/  0x01044d,  1, 0x010425, /* DESERET CAPITAL LETTER ENG */
+ /*3351*/  0x01044e,  1, 0x010426, /* DESERET CAPITAL LETTER OI */
+ /*3354*/  0x01044f,  1, 0x010427, /* DESERET CAPITAL LETTER EW */
+ /*3357*/  0x010cc0,  1, 0x010c80, /* OLD HUNGARIAN CAPITAL LETTER A */
+ /*3360*/  0x010cc1,  1, 0x010c81, /* OLD HUNGARIAN CAPITAL LETTER AA */
+ /*3363*/  0x010cc2,  1, 0x010c82, /* OLD HUNGARIAN CAPITAL LETTER EB */
+ /*3366*/  0x010cc3,  1, 0x010c83, /* OLD HUNGARIAN CAPITAL LETTER AMB */
+ /*3369*/  0x010cc4,  1, 0x010c84, /* OLD HUNGARIAN CAPITAL LETTER EC */
+ /*3372*/  0x010cc5,  1, 0x010c85, /* OLD HUNGARIAN CAPITAL LETTER ENC */
+ /*3375*/  0x010cc6,  1, 0x010c86, /* OLD HUNGARIAN CAPITAL LETTER ECS */
+ /*3378*/  0x010cc7,  1, 0x010c87, /* OLD HUNGARIAN CAPITAL LETTER ED */
+ /*3381*/  0x010cc8,  1, 0x010c88, /* OLD HUNGARIAN CAPITAL LETTER AND */
+ /*3384*/  0x010cc9,  1, 0x010c89, /* OLD HUNGARIAN CAPITAL LETTER E */
+ /*3387*/  0x010cca,  1, 0x010c8a, /* OLD HUNGARIAN CAPITAL LETTER CLOS.. */
+ /*3390*/  0x010ccb,  1, 0x010c8b, /* OLD HUNGARIAN CAPITAL LETTER EE */
+ /*3393*/  0x010ccc,  1, 0x010c8c, /* OLD HUNGARIAN CAPITAL LETTER EF */
+ /*3396*/  0x010ccd,  1, 0x010c8d, /* OLD HUNGARIAN CAPITAL LETTER EG */
+ /*3399*/  0x010cce,  1, 0x010c8e, /* OLD HUNGARIAN CAPITAL LETTER EGY */
+ /*3402*/  0x010ccf,  1, 0x010c8f, /* OLD HUNGARIAN CAPITAL LETTER EH */
+ /*3405*/  0x010cd0,  1, 0x010c90, /* OLD HUNGARIAN CAPITAL LETTER I */
+ /*3408*/  0x010cd1,  1, 0x010c91, /* OLD HUNGARIAN CAPITAL LETTER II */
+ /*3411*/  0x010cd2,  1, 0x010c92, /* OLD HUNGARIAN CAPITAL LETTER EJ */
+ /*3414*/  0x010cd3,  1, 0x010c93, /* OLD HUNGARIAN CAPITAL LETTER EK */
+ /*3417*/  0x010cd4,  1, 0x010c94, /* OLD HUNGARIAN CAPITAL LETTER AK */
+ /*3420*/  0x010cd5,  1, 0x010c95, /* OLD HUNGARIAN CAPITAL LETTER UNK */
+ /*3423*/  0x010cd6,  1, 0x010c96, /* OLD HUNGARIAN CAPITAL LETTER EL */
+ /*3426*/  0x010cd7,  1, 0x010c97, /* OLD HUNGARIAN CAPITAL LETTER ELY */
+ /*3429*/  0x010cd8,  1, 0x010c98, /* OLD HUNGARIAN CAPITAL LETTER EM */
+ /*3432*/  0x010cd9,  1, 0x010c99, /* OLD HUNGARIAN CAPITAL LETTER EN */
+ /*3435*/  0x010cda,  1, 0x010c9a, /* OLD HUNGARIAN CAPITAL LETTER ENY */
+ /*3438*/  0x010cdb,  1, 0x010c9b, /* OLD HUNGARIAN CAPITAL LETTER O */
+ /*3441*/  0x010cdc,  1, 0x010c9c, /* OLD HUNGARIAN CAPITAL LETTER OO */
+ /*3444*/  0x010cdd,  1, 0x010c9d, /* OLD HUNGARIAN CAPITAL LETTER NIKO.. */
+ /*3447*/  0x010cde,  1, 0x010c9e, /* OLD HUNGARIAN CAPITAL LETTER RUDI.. */
+ /*3450*/  0x010cdf,  1, 0x010c9f, /* OLD HUNGARIAN CAPITAL LETTER OEE */
+ /*3453*/  0x010ce0,  1, 0x010ca0, /* OLD HUNGARIAN CAPITAL LETTER EP */
+ /*3456*/  0x010ce1,  1, 0x010ca1, /* OLD HUNGARIAN CAPITAL LETTER EMP */
+ /*3459*/  0x010ce2,  1, 0x010ca2, /* OLD HUNGARIAN CAPITAL LETTER ER */
+ /*3462*/  0x010ce3,  1, 0x010ca3, /* OLD HUNGARIAN CAPITAL LETTER SHOR.. */
+ /*3465*/  0x010ce4,  1, 0x010ca4, /* OLD HUNGARIAN CAPITAL LETTER ES */
+ /*3468*/  0x010ce5,  1, 0x010ca5, /* OLD HUNGARIAN CAPITAL LETTER ESZ */
+ /*3471*/  0x010ce6,  1, 0x010ca6, /* OLD HUNGARIAN CAPITAL LETTER ET */
+ /*3474*/  0x010ce7,  1, 0x010ca7, /* OLD HUNGARIAN CAPITAL LETTER ENT */
+ /*3477*/  0x010ce8,  1, 0x010ca8, /* OLD HUNGARIAN CAPITAL LETTER ETY */
+ /*3480*/  0x010ce9,  1, 0x010ca9, /* OLD HUNGARIAN CAPITAL LETTER ECH */
+ /*3483*/  0x010cea,  1, 0x010caa, /* OLD HUNGARIAN CAPITAL LETTER U */
+ /*3486*/  0x010ceb,  1, 0x010cab, /* OLD HUNGARIAN CAPITAL LETTER UU */
+ /*3489*/  0x010cec,  1, 0x010cac, /* OLD HUNGARIAN CAPITAL LETTER NIKO.. */
+ /*3492*/  0x010ced,  1, 0x010cad, /* OLD HUNGARIAN CAPITAL LETTER RUDI.. */
+ /*3495*/  0x010cee,  1, 0x010cae, /* OLD HUNGARIAN CAPITAL LETTER EV */
+ /*3498*/  0x010cef,  1, 0x010caf, /* OLD HUNGARIAN CAPITAL LETTER EZ */
+ /*3501*/  0x010cf0,  1, 0x010cb0, /* OLD HUNGARIAN CAPITAL LETTER EZS */
+ /*3504*/  0x010cf1,  1, 0x010cb1, /* OLD HUNGARIAN CAPITAL LETTER ENT-.. */
+ /*3507*/  0x010cf2,  1, 0x010cb2, /* OLD HUNGARIAN CAPITAL LETTER US */
+ /*3510*/  0x0118c0,  1, 0x0118a0, /* WARANG CITI CAPITAL LETTER NGAA */
+ /*3513*/  0x0118c1,  1, 0x0118a1, /* WARANG CITI CAPITAL LETTER A */
+ /*3516*/  0x0118c2,  1, 0x0118a2, /* WARANG CITI CAPITAL LETTER WI */
+ /*3519*/  0x0118c3,  1, 0x0118a3, /* WARANG CITI CAPITAL LETTER YU */
+ /*3522*/  0x0118c4,  1, 0x0118a4, /* WARANG CITI CAPITAL LETTER YA */
+ /*3525*/  0x0118c5,  1, 0x0118a5, /* WARANG CITI CAPITAL LETTER YO */
+ /*3528*/  0x0118c6,  1, 0x0118a6, /* WARANG CITI CAPITAL LETTER II */
+ /*3531*/  0x0118c7,  1, 0x0118a7, /* WARANG CITI CAPITAL LETTER UU */
+ /*3534*/  0x0118c8,  1, 0x0118a8, /* WARANG CITI CAPITAL LETTER E */
+ /*3537*/  0x0118c9,  1, 0x0118a9, /* WARANG CITI CAPITAL LETTER O */
+ /*3540*/  0x0118ca,  1, 0x0118aa, /* WARANG CITI CAPITAL LETTER ANG */
+ /*3543*/  0x0118cb,  1, 0x0118ab, /* WARANG CITI CAPITAL LETTER GA */
+ /*3546*/  0x0118cc,  1, 0x0118ac, /* WARANG CITI CAPITAL LETTER KO */
+ /*3549*/  0x0118cd,  1, 0x0118ad, /* WARANG CITI CAPITAL LETTER ENY */
+ /*3552*/  0x0118ce,  1, 0x0118ae, /* WARANG CITI CAPITAL LETTER YUJ */
+ /*3555*/  0x0118cf,  1, 0x0118af, /* WARANG CITI CAPITAL LETTER UC */
+ /*3558*/  0x0118d0,  1, 0x0118b0, /* WARANG CITI CAPITAL LETTER ENN */
+ /*3561*/  0x0118d1,  1, 0x0118b1, /* WARANG CITI CAPITAL LETTER ODD */
+ /*3564*/  0x0118d2,  1, 0x0118b2, /* WARANG CITI CAPITAL LETTER TTE */
+ /*3567*/  0x0118d3,  1, 0x0118b3, /* WARANG CITI CAPITAL LETTER NUNG */
+ /*3570*/  0x0118d4,  1, 0x0118b4, /* WARANG CITI CAPITAL LETTER DA */
+ /*3573*/  0x0118d5,  1, 0x0118b5, /* WARANG CITI CAPITAL LETTER AT */
+ /*3576*/  0x0118d6,  1, 0x0118b6, /* WARANG CITI CAPITAL LETTER AM */
+ /*3579*/  0x0118d7,  1, 0x0118b7, /* WARANG CITI CAPITAL LETTER BU */
+ /*3582*/  0x0118d8,  1, 0x0118b8, /* WARANG CITI CAPITAL LETTER PU */
+ /*3585*/  0x0118d9,  1, 0x0118b9, /* WARANG CITI CAPITAL LETTER HIYO */
+ /*3588*/  0x0118da,  1, 0x0118ba, /* WARANG CITI CAPITAL LETTER HOLO */
+ /*3591*/  0x0118db,  1, 0x0118bb, /* WARANG CITI CAPITAL LETTER HORR */
+ /*3594*/  0x0118dc,  1, 0x0118bc, /* WARANG CITI CAPITAL LETTER HAR */
+ /*3597*/  0x0118dd,  1, 0x0118bd, /* WARANG CITI CAPITAL LETTER SSUU */
+ /*3600*/  0x0118de,  1, 0x0118be, /* WARANG CITI CAPITAL LETTER SII */
+ /*3603*/  0x0118df,  1, 0x0118bf, /* WARANG CITI CAPITAL LETTER VIYO */
+#define FOLDS1_NORMAL_END_INDEX   3606
+ /* ----- LOCALE ----- */
+ /*3606*/    0x0069,  1,   0x0049, /* LATIN CAPITAL LETTER I */
+#define FOLDS1_END_INDEX   3609
+};
+
+OnigCodePoint OnigUnicodeFolds2[] = {
+ /* LATIN SMALL LETTER A WITH RIGHT HALF RING */
+ /*   0*/    0x0061,   0x02be,  1,   0x1e9a,
+ /* LATIN SMALL LIGATURE FF */
+ /*   4*/    0x0066,   0x0066,  1,   0xfb00,
+ /* LATIN SMALL LIGATURE FI */
+ /*   8*/    0x0066,   0x0069,  1,   0xfb01,
+ /* LATIN SMALL LIGATURE FL */
+ /*  12*/    0x0066,   0x006c,  1,   0xfb02,
+ /* LATIN SMALL LETTER H WITH LINE BELOW */
+ /*  16*/    0x0068,   0x0331,  1,   0x1e96,
+ /* LATIN SMALL LETTER J WITH CARON */
+ /*  20*/    0x006a,   0x030c,  1,   0x01f0,
+ /* LATIN SMALL LETTER SHARP S */
+ /*  24*/    0x0073,   0x0073,  2,   0x00df,   0x1e9e,
+ /* LATIN SMALL LIGATURE LONG S T */
+ /*  29*/    0x0073,   0x0074,  2,   0xfb05,   0xfb06,
+ /* LATIN SMALL LETTER T WITH DIAERESIS */
+ /*  34*/    0x0074,   0x0308,  1,   0x1e97,
+ /* LATIN SMALL LETTER W WITH RING ABOVE */
+ /*  38*/    0x0077,   0x030a,  1,   0x1e98,
+ /* LATIN SMALL LETTER Y WITH RING ABOVE */
+ /*  42*/    0x0079,   0x030a,  1,   0x1e99,
+ /* LATIN SMALL LETTER N PRECEDED BY APOSTROPHE */
+ /*  46*/    0x02bc,   0x006e,  1,   0x0149,
+ /* GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI */
+ /*  50*/    0x03ac,   0x03b9,  1,   0x1fb4,
+ /* GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI */
+ /*  54*/    0x03ae,   0x03b9,  1,   0x1fc4,
+ /* GREEK SMALL LETTER ALPHA WITH PERISPOMENI */
+ /*  58*/    0x03b1,   0x0342,  1,   0x1fb6,
+ /* GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI */
+ /*  62*/    0x03b1,   0x03b9,  2,   0x1fb3,   0x1fbc,
+ /* GREEK SMALL LETTER ETA WITH PERISPOMENI */
+ /*  67*/    0x03b7,   0x0342,  1,   0x1fc6,
+ /* GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI */
+ /*  71*/    0x03b7,   0x03b9,  2,   0x1fc3,   0x1fcc,
+ /* GREEK SMALL LETTER IOTA WITH PERISPOMENI */
+ /*  76*/    0x03b9,   0x0342,  1,   0x1fd6,
+ /* GREEK SMALL LETTER RHO WITH PSILI */
+ /*  80*/    0x03c1,   0x0313,  1,   0x1fe4,
+ /* GREEK SMALL LETTER UPSILON WITH PSILI */
+ /*  84*/    0x03c5,   0x0313,  1,   0x1f50,
+ /* GREEK SMALL LETTER UPSILON WITH PERISPOMENI */
+ /*  88*/    0x03c5,   0x0342,  1,   0x1fe6,
+ /* GREEK SMALL LETTER OMEGA WITH PERISPOMENI */
+ /*  92*/    0x03c9,   0x0342,  1,   0x1ff6,
+ /* GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI */
+ /*  96*/    0x03c9,   0x03b9,  2,   0x1ff3,   0x1ffc,
+ /* GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI */
+ /* 101*/    0x03ce,   0x03b9,  1,   0x1ff4,
+ /* ARMENIAN SMALL LIGATURE ECH YIWN */
+ /* 105*/    0x0565,   0x0582,  1,   0x0587,
+ /* ARMENIAN SMALL LIGATURE MEN ECH */
+ /* 109*/    0x0574,   0x0565,  1,   0xfb14,
+ /* ARMENIAN SMALL LIGATURE MEN INI */
+ /* 113*/    0x0574,   0x056b,  1,   0xfb15,
+ /* ARMENIAN SMALL LIGATURE MEN XEH */
+ /* 117*/    0x0574,   0x056d,  1,   0xfb17,
+ /* ARMENIAN SMALL LIGATURE MEN NOW */
+ /* 121*/    0x0574,   0x0576,  1,   0xfb13,
+ /* ARMENIAN SMALL LIGATURE VEW NOW */
+ /* 125*/    0x057e,   0x0576,  1,   0xfb16,
+ /* GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI */
+ /* 129*/    0x1f00,   0x03b9,  2,   0x1f80,   0x1f88,
+ /* GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI */
+ /* 134*/    0x1f01,   0x03b9,  2,   0x1f81,   0x1f89,
+ /* GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI */
+ /* 139*/    0x1f02,   0x03b9,  2,   0x1f82,   0x1f8a,
+ /* GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI */
+ /* 144*/    0x1f03,   0x03b9,  2,   0x1f83,   0x1f8b,
+ /* GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI */
+ /* 149*/    0x1f04,   0x03b9,  2,   0x1f84,   0x1f8c,
+ /* GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI */
+ /* 154*/    0x1f05,   0x03b9,  2,   0x1f85,   0x1f8d,
+ /* GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI */
+ /* 159*/    0x1f06,   0x03b9,  2,   0x1f86,   0x1f8e,
+ /* GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI */
+ /* 164*/    0x1f07,   0x03b9,  2,   0x1f87,   0x1f8f,
+ /* GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI */
+ /* 169*/    0x1f20,   0x03b9,  2,   0x1f90,   0x1f98,
+ /* GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI */
+ /* 174*/    0x1f21,   0x03b9,  2,   0x1f91,   0x1f99,
+ /* GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI */
+ /* 179*/    0x1f22,   0x03b9,  2,   0x1f92,   0x1f9a,
+ /* GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI */
+ /* 184*/    0x1f23,   0x03b9,  2,   0x1f93,   0x1f9b,
+ /* GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI */
+ /* 189*/    0x1f24,   0x03b9,  2,   0x1f94,   0x1f9c,
+ /* GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI */
+ /* 194*/    0x1f25,   0x03b9,  2,   0x1f95,   0x1f9d,
+ /* GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI */
+ /* 199*/    0x1f26,   0x03b9,  2,   0x1f96,   0x1f9e,
+ /* GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI */
+ /* 204*/    0x1f27,   0x03b9,  2,   0x1f97,   0x1f9f,
+ /* GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI */
+ /* 209*/    0x1f60,   0x03b9,  2,   0x1fa0,   0x1fa8,
+ /* GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI */
+ /* 214*/    0x1f61,   0x03b9,  2,   0x1fa1,   0x1fa9,
+ /* GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI */
+ /* 219*/    0x1f62,   0x03b9,  2,   0x1fa2,   0x1faa,
+ /* GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI */
+ /* 224*/    0x1f63,   0x03b9,  2,   0x1fa3,   0x1fab,
+ /* GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI */
+ /* 229*/    0x1f64,   0x03b9,  2,   0x1fa4,   0x1fac,
+ /* GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI */
+ /* 234*/    0x1f65,   0x03b9,  2,   0x1fa5,   0x1fad,
+ /* GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI */
+ /* 239*/    0x1f66,   0x03b9,  2,   0x1fa6,   0x1fae,
+ /* GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI */
+ /* 244*/    0x1f67,   0x03b9,  2,   0x1fa7,   0x1faf,
+ /* GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI */
+ /* 249*/    0x1f70,   0x03b9,  1,   0x1fb2,
+ /* GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI */
+ /* 253*/    0x1f74,   0x03b9,  1,   0x1fc2,
+ /* GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI */
+ /* 257*/    0x1f7c,   0x03b9,  1,   0x1ff2,
+#define FOLDS2_NORMAL_END_INDEX   261
+ /* ----- LOCALE ----- */
+ /* LATIN CAPITAL LETTER I WITH DOT ABOVE */
+ /* 261*/    0x0069,   0x0307,  1,   0x0130,
+#define FOLDS2_END_INDEX   265
+};
+
+OnigCodePoint OnigUnicodeFolds3[] = {
+ /* LATIN SMALL LIGATURE FFI */
+ /*   0*/    0x0066,   0x0066,   0x0069,  1,   0xfb03,
+ /* LATIN SMALL LIGATURE FFL */
+ /*   5*/    0x0066,   0x0066,   0x006c,  1,   0xfb04,
+ /* GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI */
+ /*  10*/    0x03b1,   0x0342,   0x03b9,  1,   0x1fb7,
+ /* GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI */
+ /*  15*/    0x03b7,   0x0342,   0x03b9,  1,   0x1fc7,
+ /* GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA */
+ /*  20*/    0x03b9,   0x0308,   0x0300,  1,   0x1fd2,
+ /* GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS */
+ /*  25*/    0x03b9,   0x0308,   0x0301,  2,   0x0390,   0x1fd3,
+ /* GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI */
+ /*  31*/    0x03b9,   0x0308,   0x0342,  1,   0x1fd7,
+ /* GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA */
+ /*  36*/    0x03c5,   0x0308,   0x0300,  1,   0x1fe2,
+ /* GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS */
+ /*  41*/    0x03c5,   0x0308,   0x0301,  2,   0x03b0,   0x1fe3,
+ /* GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI */
+ /*  47*/    0x03c5,   0x0308,   0x0342,  1,   0x1fe7,
+ /* GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA */
+ /*  52*/    0x03c5,   0x0313,   0x0300,  1,   0x1f52,
+ /* GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA */
+ /*  57*/    0x03c5,   0x0313,   0x0301,  1,   0x1f54,
+ /* GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI */
+ /*  62*/    0x03c5,   0x0313,   0x0342,  1,   0x1f56,
+ /* GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI */
+ /*  67*/    0x03c9,   0x0342,   0x03b9,  1,   0x1ff7,
+#define FOLDS3_NORMAL_END_INDEX   72
+ /* ----- LOCALE ----- */
+#define FOLDS3_END_INDEX   72
+};
+
diff --git a/src/unicode_unfold_key.c b/src/unicode_unfold_key.c
new file mode 100644 (file)
index 0000000..c6261d2
--- /dev/null
@@ -0,0 +1,2854 @@
+/* This file was converted by gperf_unfold_key_conv.py
+      from gperf output file. */
+/* ANSI-C code produced by gperf version 3.0.3 */
+/* Command-line: /Library/Developer/CommandLineTools/usr/bin/gperf -n -C -T -c -t -j1 -L ANSI-C -F,-1,0 -N unicode_unfold_key unicode_unfold_key.gperf  */
+/* Computed positions: -k'1-3' */
+
+
+
+/* This gperf source file was generated by make_unicode_fold_data.py */
+#include <string.h>
+#include "regenc.h"
+
+#define TOTAL_KEYWORDS 1321
+#define MIN_WORD_LENGTH 3
+#define MAX_WORD_LENGTH 3
+#define MIN_HASH_VALUE 11
+#define MAX_HASH_VALUE 1544
+/* maximum key range = 1534, duplicates = 0 */
+
+#ifdef __GNUC__
+__inline
+#else
+#ifdef __cplusplus
+inline
+#endif
+#endif
+/*ARGSUSED*/
+static unsigned int
+hash(OnigCodePoint codes[])
+{
+  static const unsigned short asso_values[] =
+    {
+         8,    6,    2,  124,    5,    1,   36, 1545, 1545, 1545,
+      1545, 1545, 1545,   11, 1545, 1545, 1545,   16, 1545, 1545,
+       562, 1545, 1545, 1545, 1545,   77, 1545, 1545, 1545, 1545,
+      1545,    0,    3, 1545,   61,  628, 1379,  206, 1378,  607,
+      1372,  597, 1399,  569, 1371,    4, 1365,  559, 1359,  548,
+      1353,  836, 1393,  830, 1345,  587, 1344,  581, 1336,  539,
+      1335,  530,  982,  521,  970,  818, 1389,  723, 1329,  351,
+      1320,  333, 1312,  293, 1311,  320, 1304,  176,  589,  311,
+      1165,  302, 1384, 1243,  579,  780,  173, 1230,  147, 1213,
+        75, 1219, 1296, 1009, 1293, 1282, 1267, 1217, 1030,  331,
+      1291, 1210, 1286,  998,  500,  993, 1359,  806, 1281,  510,
+      1048,  501,  662,  797,  754,  792,  372,  775,  290,  768,
+       228,  755,  292, 1159,  489, 1135,  267, 1229,  233, 1053,
+       222,  728,  159,  708,  484,  695,  155,  995,  247,  686,
+       859,  674,  747,  618,  561,  381,  313,  987,  167,  975,
+       165, 1279,  388, 1207,  157,  765,  900, 1007,  794,  476,
+        21, 1198, 1271,  490, 1265,  478, 1245,   18,    8,  253,
+      1188,  652,    7,  245, 1185,  415, 1256,  226, 1177,   54,
+      1169,  214, 1155,  195,  607,   42,  963,   30, 1147,  185,
+      1139,  465, 1129,  451, 1121,   86,  948,  136,  940,   76,
+       909,   66,  664,  126,  644,  116,  632,  106,  930,  166,
+       925,  149,  915,   96,  903,  390,  364,  283,  746,  273,
+      1098,  372, 1095,  265,  528,  361,  311,  897, 1195,  396,
+      1103,  425, 1094, 1088,  893,  887,  573,  407,  237, 1083,
+       934, 1145,  432, 1076,  679,  714,  956, 1112,  509,  880,
+        62,  873,  157,  864,  276, 1069,  112,  855,  156, 1063,
+      1545,  848,  152, 1057, 1545, 1047,  145, 1041,  144, 1035,
+        49, 1025,  142, 1256, 1545, 1239,  355,  342,   21, 1019,
+        14, 1233,  459,  843,  822,  740,   38,  553,   96,  448,
+         8
+    };
+  return asso_values[(unsigned char)onig_codes_byte_at(codes, 2)+35] + asso_values[(unsigned char)onig_codes_byte_at(codes, 1)+1] + asso_values[(unsigned char)onig_codes_byte_at(codes, 0)];
+}
+
+const struct ByUnfoldKey *
+unicode_unfold_key(OnigCodePoint code)
+{
+  static const struct ByUnfoldKey wordlist[] =
+    {
+      {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+      {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+      {0xffffffff, -1, 0},
+
+      {0x1040a, 3267, 1},
+
+      {0x1e0a, 1727, 1},
+
+      {0x040a, 1016, 1},
+
+      {0x010a, 186, 1},
+
+      {0x1f0a, 2088, 1},
+
+      {0x2c0a, 2451, 1},
+
+      {0x0189, 619, 1},
+
+      {0x1f89, 134, 2},
+
+      {0x1f85, 154, 2},
+
+      {0x0389, 733, 1},
+
+      {0x03ff, 724, 1},
+
+      {0xab89, 1523, 1},
+
+      {0xab85, 1511, 1},
+
+      {0x10c89, 3384, 1},
+
+      {0x10c85, 3372, 1},
+
+      {0x1e84, 1911, 1},
+
+      {0x03f5, 752, 1},
+
+      {0x0184, 360, 1},
+
+      {0x1f84, 149, 2},
+
+      {0x2c84, 2592, 1},
+
+      {0x017d, 351, 1},
+
+      {0x1ff3, 96, 2},
+
+      {0xab84, 1508, 1},
+
+      {0xa784, 3105, 1},
+
+      {0x10c84, 3369, 1},
+
+      {0xab7d, 1487, 1},
+
+      {0xa77d, 1706, 1},
+
+      {0x1e98, 38, 2},
+
+      {0x0498, 1106, 1},
+
+      {0x0198, 375, 1},
+
+      {0x1f98, 169, 2},
+
+      {0x2c98, 2622, 1},
+
+      {0x0398, 762, 1},
+
+      {0xa684, 2940, 1},
+
+      {0xab98, 1568, 1},
+
+      {0xa798, 3123, 1},
+
+      {0x10c98, 3429, 1},
+
+      {0x050a, 1277, 1},
+
+      {0x1ffb, 2265, 1},
+
+      {0x1e96, 16, 2},
+
+      {0x0496, 1103, 1},
+
+      {0x0196, 652, 1},
+
+      {0x1f96, 199, 2},
+
+      {0x2c96, 2619, 1},
+
+      {0x0396, 756, 1},
+
+      {0xa698, 2970, 1},
+
+      {0xab96, 1562, 1},
+
+      {0xa796, 3120, 1},
+
+      {0x10c96, 3423, 1},
+
+      {0x1feb, 2259, 1},
+
+      {0x2ceb, 2736, 1},
+
+      {0x1e90, 1929, 1},
+
+      {0x0490, 1094, 1},
+
+      {0x0190, 628, 1},
+
+      {0x1f90, 169, 2},
+
+      {0x2c90, 2610, 1},
+
+      {0x0390, 25, 3},
+
+      {0xa696, 2967, 1},
+
+      {0xab90, 1544, 1},
+
+      {0xa790, 3114, 1},
+
+      {0x10c90, 3405, 1},
+
+      {0x01d7, 444, 1},
+
+      {0x1fd7, 31, 3},
+
+      {0x1ea6, 1947, 1},
+
+      {0x04a6, 1127, 1},
+
+      {0x01a6, 676, 1},
+
+      {0x1fa6, 239, 2},
+
+      {0x2ca6, 2643, 1},
+
+      {0x03a6, 810, 1},
+
+      {0xa690, 2958, 1},
+
+      {0xaba6, 1610, 1},
+
+      {0xa7a6, 3144, 1},
+
+      {0x10ca6, 3471, 1},
+
+      {0x1ea4, 1944, 1},
+
+      {0x04a4, 1124, 1},
+
+      {0x01a4, 390, 1},
+
+      {0x1fa4, 229, 2},
+
+      {0x2ca4, 2640, 1},
+
+      {0x03a4, 804, 1},
+
+      {0x10a6, 2763, 1},
+
+      {0xaba4, 1604, 1},
+
+      {0xa7a4, 3141, 1},
+
+      {0x10ca4, 3465, 1},
+
+      {0x1ea0, 1938, 1},
+
+      {0x04a0, 1118, 1},
+
+      {0x01a0, 384, 1},
+
+      {0x1fa0, 209, 2},
+
+      {0x2ca0, 2634, 1},
+
+      {0x03a0, 792, 1},
+
+      {0x10a4, 2757, 1},
+
+      {0xaba0, 1592, 1},
+
+      {0xa7a0, 3135, 1},
+
+      {0x10ca0, 3453, 1},
+
+      {0x1eb2, 1965, 1},
+
+      {0x04b2, 1145, 1},
+
+      {0x01b2, 694, 1},
+
+      {0x1fb2, 249, 2},
+
+      {0x2cb2, 2661, 1},
+
+      {0x03fd, 718, 1},
+
+      {0x10a0, 2745, 1},
+
+      {0xabb2, 1646, 1},
+
+      {0xa7b2, 703, 1},
+
+      {0x10cb2, 3507, 1},
+
+      {0x1eac, 1956, 1},
+
+      {0x04ac, 1136, 1},
+
+      {0x01ac, 396, 1},
+
+      {0x1fac, 229, 2},
+
+      {0x2cac, 2652, 1},
+
+      {0x0537, 1352, 1},
+
+      {0x10b2, 2799, 1},
+
+      {0xabac, 1628, 1},
+
+      {0xa7ac, 637, 1},
+
+      {0x10cac, 3489, 1},
+
+      {0x1eaa, 1953, 1},
+
+      {0x04aa, 1133, 1},
+
+      {0x00dd, 162, 1},
+
+      {0x1faa, 219, 2},
+
+      {0x2caa, 2649, 1},
+
+      {0x03aa, 824, 1},
+
+      {0x10ac, 2781, 1},
+
+      {0xabaa, 1622, 1},
+
+      {0xa7aa, 646, 1},
+
+      {0x10caa, 3483, 1},
+
+      {0x1ea8, 1950, 1},
+
+      {0x04a8, 1130, 1},
+
+      {0x020a, 517, 1},
+
+      {0x1fa8, 209, 2},
+
+      {0x2ca8, 2646, 1},
+
+      {0x03a8, 817, 1},
+
+      {0x10aa, 2775, 1},
+
+      {0xaba8, 1616, 1},
+
+      {0xa7a8, 3147, 1},
+
+      {0x10ca8, 3477, 1},
+
+      {0x1ea2, 1941, 1},
+
+      {0x04a2, 1121, 1},
+
+      {0x01a2, 387, 1},
+
+      {0x1fa2, 219, 2},
+
+      {0x2ca2, 2637, 1},
+
+      {0x118a6, 3528, 1},
+
+      {0x10a8, 2769, 1},
+
+      {0xaba2, 1598, 1},
+
+      {0xa7a2, 3138, 1},
+
+      {0x10ca2, 3459, 1},
+
+      {0x2ced, 2739, 1},
+
+      {0x1fe9, 2283, 1},
+
+      {0x1fe7, 47, 3},
+
+      {0x1eb0, 1962, 1},
+
+      {0x04b0, 1142, 1},
+
+      {0x118a4, 3522, 1},
+
+      {0x10a2, 2751, 1},
+
+      {0x2cb0, 2658, 1},
+
+      {0x03b0, 41, 3},
+
+      {0x1fe3, 41, 3},
+
+      {0xabb0, 1640, 1},
+
+      {0xa7b0, 706, 1},
+
+      {0x10cb0, 3501, 1},
+
+      {0x01d9, 447, 1},
+
+      {0x1fd9, 2277, 1},
+
+      {0x118a0, 3510, 1},
+
+      {0x00df, 24, 2},
+
+      {0x00d9, 150, 1},
+
+      {0xab77, 1469, 1},
+
+      {0x10b0, 2793, 1},
+
+      {0x1eae, 1959, 1},
+
+      {0x04ae, 1139, 1},
+
+      {0x01ae, 685, 1},
+
+      {0x1fae, 239, 2},
+
+      {0x2cae, 2655, 1},
+
+      {0x118b2, 3564, 1},
+
+      {0xab73, 1457, 1},
+
+      {0xabae, 1634, 1},
+
+      {0xab71, 1451, 1},
+
+      {0x10cae, 3495, 1},
+
+      {0x1e2a, 1775, 1},
+
+      {0x042a, 968, 1},
+
+      {0x012a, 234, 1},
+
+      {0x1f2a, 2130, 1},
+
+      {0x2c2a, 2547, 1},
+
+      {0x118ac, 3546, 1},
+
+      {0x10ae, 2787, 1},
+
+      {0x0535, 1346, 1},
+
+      {0xa72a, 2988, 1},
+
+      {0x1e9a, 0, 2},
+
+      {0x049a, 1109, 1},
+
+      {0xff37, 3225, 1},
+
+      {0x1f9a, 179, 2},
+
+      {0x2c9a, 2625, 1},
+
+      {0x039a, 772, 1},
+
+      {0x118aa, 3540, 1},
+
+      {0xab9a, 1574, 1},
+
+      {0xa79a, 3126, 1},
+
+      {0x10c9a, 3435, 1},
+
+      {0x1e94, 1935, 1},
+
+      {0x0494, 1100, 1},
+
+      {0x0194, 640, 1},
+
+      {0x1f94, 189, 2},
+
+      {0x2c94, 2616, 1},
+
+      {0x0394, 749, 1},
+
+      {0x118a8, 3534, 1},
+
+      {0xab94, 1556, 1},
+
+      {0xa69a, 2973, 1},
+
+      {0x10c94, 3417, 1},
+
+      {0x10402, 3243, 1},
+
+      {0x1e02, 1715, 1},
+
+      {0x0402, 992, 1},
+
+      {0x0102, 174, 1},
+
+      {0x0533, 1340, 1},
+
+      {0x2c02, 2427, 1},
+
+      {0x118a2, 3516, 1},
+
+      {0x052a, 1325, 1},
+
+      {0xa694, 2964, 1},
+
+      {0x1e92, 1932, 1},
+
+      {0x0492, 1097, 1},
+
+      {0x2165, 2307, 1},
+
+      {0x1f92, 179, 2},
+
+      {0x2c92, 2613, 1},
+
+      {0x0392, 742, 1},
+
+      {0x2161, 2295, 1},
+
+      {0xab92, 1550, 1},
+
+      {0xa792, 3117, 1},
+
+      {0x10c92, 3411, 1},
+
+      {0x118b0, 3558, 1},
+
+      {0x1f5f, 2199, 1},
+
+      {0x1e8e, 1926, 1},
+
+      {0x048e, 1091, 1},
+
+      {0x018e, 453, 1},
+
+      {0x1f8e, 159, 2},
+
+      {0x2c8e, 2607, 1},
+
+      {0x038e, 833, 1},
+
+      {0xa692, 2961, 1},
+
+      {0xab8e, 1538, 1},
+
+      {0x0055, 59, 1},
+
+      {0x10c8e, 3399, 1},
+
+      {0x1f5d, 2196, 1},
+
+      {0x212a, 27, 1},
+
+      {0x04cb, 1181, 1},
+
+      {0x01cb, 425, 1},
+
+      {0x1fcb, 2241, 1},
+
+      {0x118ae, 3552, 1},
+
+      {0x0502, 1265, 1},
+
+      {0x00cb, 111, 1},
+
+      {0xa68e, 2955, 1},
+
+      {0x1e8a, 1920, 1},
+
+      {0x048a, 1085, 1},
+
+      {0x018a, 622, 1},
+
+      {0x1f8a, 139, 2},
+
+      {0x2c8a, 2601, 1},
+
+      {0x038a, 736, 1},
+
+      {0x2c67, 2571, 1},
+
+      {0xab8a, 1526, 1},
+
+      {0x1e86, 1914, 1},
+
+      {0x10c8a, 3387, 1},
+
+      {0x0186, 616, 1},
+
+      {0x1f86, 159, 2},
+
+      {0x2c86, 2595, 1},
+
+      {0x0386, 727, 1},
+
+      {0xff35, 3219, 1},
+
+      {0xab86, 1514, 1},
+
+      {0xa786, 3108, 1},
+
+      {0x10c86, 3375, 1},
+
+      {0xa68a, 2949, 1},
+
+      {0x0555, 1442, 1},
+
+      {0x1ebc, 1980, 1},
+
+      {0x04bc, 1160, 1},
+
+      {0x01bc, 411, 1},
+
+      {0x1fbc, 62, 2},
+
+      {0x2cbc, 2676, 1},
+
+      {0x1f5b, 2193, 1},
+
+      {0xa686, 2943, 1},
+
+      {0xabbc, 1676, 1},
+
+      {0x1eb8, 1974, 1},
+
+      {0x04b8, 1154, 1},
+
+      {0x01b8, 408, 1},
+
+      {0x1fb8, 2268, 1},
+
+      {0x2cb8, 2670, 1},
+
+      {0x01db, 450, 1},
+
+      {0x1fdb, 2247, 1},
+
+      {0xabb8, 1664, 1},
+
+      {0x10bc, 2829, 1},
+
+      {0x00db, 156, 1},
+
+      {0x1eb6, 1971, 1},
+
+      {0x04b6, 1151, 1},
+
+      {0xff33, 3213, 1},
+
+      {0x1fb6, 58, 2},
+
+      {0x2cb6, 2667, 1},
+
+      {0xff2a, 3186, 1},
+
+      {0x10b8, 2817, 1},
+
+      {0xabb6, 1658, 1},
+
+      {0xa7b6, 3153, 1},
+
+      {0x10426, 3351, 1},
+
+      {0x1e26, 1769, 1},
+
+      {0x0426, 956, 1},
+
+      {0x0126, 228, 1},
+
+      {0x0053, 52, 1},
+
+      {0x2c26, 2535, 1},
+
+      {0x0057, 65, 1},
+
+      {0x10b6, 2811, 1},
+
+      {0x022a, 562, 1},
+
+      {0xa726, 2982, 1},
+
+      {0x1e2e, 1781, 1},
+
+      {0x042e, 980, 1},
+
+      {0x012e, 240, 1},
+
+      {0x1f2e, 2142, 1},
+
+      {0x2c2e, 2559, 1},
+      {0xffffffff, -1, 0},
+
+      {0x2167, 2313, 1},
+      {0xffffffff, -1, 0},
+
+      {0xa72e, 2994, 1},
+
+      {0x1e2c, 1778, 1},
+
+      {0x042c, 974, 1},
+
+      {0x012c, 237, 1},
+
+      {0x1f2c, 2136, 1},
+
+      {0x2c2c, 2553, 1},
+
+      {0x1f6f, 2223, 1},
+
+      {0x2c6f, 604, 1},
+
+      {0xabbf, 1685, 1},
+
+      {0xa72c, 2991, 1},
+
+      {0x1e28, 1772, 1},
+
+      {0x0428, 962, 1},
+
+      {0x0128, 231, 1},
+
+      {0x1f28, 2124, 1},
+
+      {0x2c28, 2541, 1},
+      {0xffffffff, -1, 0},
+
+      {0x0553, 1436, 1},
+
+      {0x10bf, 2838, 1},
+
+      {0xa728, 2985, 1},
+
+      {0x0526, 1319, 1},
+
+      {0x0202, 505, 1},
+
+      {0x1e40, 1808, 1},
+
+      {0x10424, 3345, 1},
+
+      {0x1e24, 1766, 1},
+
+      {0x0424, 950, 1},
+
+      {0x0124, 225, 1},
+      {0xffffffff, -1, 0},
+
+      {0x2c24, 2529, 1},
+
+      {0x052e, 1331, 1},
+
+      {0xa740, 3018, 1},
+
+      {0x118bc, 3594, 1},
+
+      {0xa724, 2979, 1},
+
+      {0x1ef2, 2061, 1},
+
+      {0x04f2, 1241, 1},
+
+      {0x01f2, 483, 1},
+
+      {0x1ff2, 257, 2},
+
+      {0x2cf2, 2742, 1},
+
+      {0x052c, 1328, 1},
+
+      {0x118b8, 3582, 1},
+
+      {0xa640, 2865, 1},
+
+      {0x10422, 3339, 1},
+
+      {0x1e22, 1763, 1},
+
+      {0x0422, 944, 1},
+
+      {0x0122, 222, 1},
+
+      {0x2126, 820, 1},
+
+      {0x2c22, 2523, 1},
+
+      {0x0528, 1322, 1},
+
+      {0x01f1, 483, 1},
+
+      {0x118b6, 3576, 1},
+
+      {0xa722, 2976, 1},
+
+      {0x03f1, 796, 1},
+
+      {0x1ebe, 1983, 1},
+
+      {0x04be, 1163, 1},
+
+      {0xfb02, 12, 2},
+
+      {0x1fbe, 767, 1},
+
+      {0x2cbe, 2679, 1},
+
+      {0x01b5, 405, 1},
+
+      {0x0540, 1379, 1},
+
+      {0xabbe, 1682, 1},
+
+      {0x0524, 1316, 1},
+
+      {0x00b5, 779, 1},
+
+      {0xabb5, 1655, 1},
+
+      {0x1eba, 1977, 1},
+
+      {0x04ba, 1157, 1},
+
+      {0x216f, 2337, 1},
+
+      {0x1fba, 2226, 1},
+
+      {0x2cba, 2673, 1},
+
+      {0x10be, 2835, 1},
+
+      {0x0051, 46, 1},
+
+      {0xabba, 1670, 1},
+
+      {0x10b5, 2808, 1},
+
+      {0x1e6e, 1878, 1},
+
+      {0x046e, 1055, 1},
+
+      {0x016e, 330, 1},
+
+      {0x1f6e, 2220, 1},
+
+      {0x2c6e, 664, 1},
+
+      {0x118bf, 3603, 1},
+
+      {0x0522, 1313, 1},
+
+      {0x10ba, 2823, 1},
+
+      {0xa76e, 3087, 1},
+
+      {0x1eb4, 1968, 1},
+
+      {0x04b4, 1148, 1},
+
+      {0x2c75, 2583, 1},
+
+      {0x1fb4, 50, 2},
+
+      {0x2cb4, 2664, 1},
+
+      {0xab75, 1463, 1},
+
+      {0x1ec2, 1989, 1},
+
+      {0xabb4, 1652, 1},
+
+      {0xa7b4, 3150, 1},
+
+      {0x1fc2, 253, 2},
+
+      {0x2cc2, 2685, 1},
+
+      {0x03c2, 800, 1},
+
+      {0x00c2, 83, 1},
+      {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+
+      {0xff26, 3174, 1},
+
+      {0x10b4, 2805, 1},
+
+      {0x1eca, 2001, 1},
+
+      {0x0551, 1430, 1},
+
+      {0x01ca, 425, 1},
+
+      {0x1fca, 2238, 1},
+
+      {0x2cca, 2697, 1},
+
+      {0x10c2, 2847, 1},
+
+      {0x00ca, 108, 1},
+
+      {0xff2e, 3198, 1},
+
+      {0x1e8c, 1923, 1},
+
+      {0x048c, 1088, 1},
+
+      {0x0226, 556, 1},
+
+      {0x1f8c, 149, 2},
+
+      {0x2c8c, 2604, 1},
+
+      {0x038c, 830, 1},
+      {0xffffffff, -1, 0},
+
+      {0xab8c, 1532, 1},
+
+      {0xff2c, 3192, 1},
+
+      {0x10c8c, 3393, 1},
+
+      {0x1ec4, 1992, 1},
+
+      {0x022e, 568, 1},
+
+      {0x01c4, 417, 1},
+
+      {0x1fc4, 54, 2},
+
+      {0x2cc4, 2688, 1},
+      {0xffffffff, -1, 0},
+
+      {0x00c4, 89, 1},
+
+      {0xff28, 3180, 1},
+
+      {0xa68c, 2952, 1},
+
+      {0x01cf, 432, 1},
+
+      {0x022c, 565, 1},
+
+      {0x118be, 3600, 1},
+
+      {0x03cf, 839, 1},
+
+      {0x00cf, 123, 1},
+
+      {0x118b5, 3573, 1},
+      {0xffffffff, -1, 0},
+
+      {0x10c4, 2853, 1},
+
+      {0x216e, 2334, 1},
+
+      {0x24cb, 2406, 1},
+
+      {0x0228, 559, 1},
+
+      {0xff24, 3168, 1},
+      {0xffffffff, -1, 0},
+
+      {0x118ba, 3588, 1},
+
+      {0x1efe, 2079, 1},
+
+      {0x04fe, 1259, 1},
+
+      {0x01fe, 499, 1},
+
+      {0x1e9e, 24, 2},
+
+      {0x049e, 1115, 1},
+
+      {0x03fe, 721, 1},
+
+      {0x1f9e, 199, 2},
+
+      {0x2c9e, 2631, 1},
+
+      {0x039e, 786, 1},
+
+      {0x0224, 553, 1},
+
+      {0xab9e, 1586, 1},
+
+      {0xa79e, 3132, 1},
+
+      {0x10c9e, 3447, 1},
+
+      {0x01f7, 414, 1},
+
+      {0x1ff7, 67, 3},
+
+      {0xff22, 3162, 1},
+
+      {0x03f7, 884, 1},
+
+      {0x118b4, 3570, 1},
+
+      {0x049c, 1112, 1},
+
+      {0x019c, 661, 1},
+
+      {0x1f9c, 189, 2},
+
+      {0x2c9c, 2628, 1},
+
+      {0x039c, 779, 1},
+
+      {0x24bc, 2361, 1},
+
+      {0xab9c, 1580, 1},
+
+      {0xa79c, 3129, 1},
+
+      {0x10c9c, 3441, 1},
+
+      {0x0222, 550, 1},
+
+      {0x1e7c, 1899, 1},
+
+      {0x047c, 1076, 1},
+
+      {0x1e82, 1908, 1},
+
+      {0x24b8, 2349, 1},
+
+      {0x0182, 357, 1},
+
+      {0x1f82, 139, 2},
+
+      {0x2c82, 2589, 1},
+
+      {0xab7c, 1484, 1},
+      {0xffffffff, -1, 0},
+
+      {0xab82, 1502, 1},
+
+      {0xa782, 3102, 1},
+
+      {0x10c82, 3363, 1},
+
+      {0x2c63, 1709, 1},
+
+      {0x24b6, 2343, 1},
+
+      {0x1e80, 1905, 1},
+
+      {0x0480, 1082, 1},
+
+      {0x1f59, 2190, 1},
+
+      {0x1f80, 129, 2},
+
+      {0x2c80, 2586, 1},
+
+      {0x0059, 71, 1},
+
+      {0xa682, 2937, 1},
+
+      {0xab80, 1496, 1},
+
+      {0xa780, 3099, 1},
+
+      {0x10c80, 3357, 1},
+      {0xffffffff, -1, 0},
+
+      {0x1e4c, 1826, 1},
+
+      {0x0145, 270, 1},
+
+      {0x014c, 279, 1},
+
+      {0x1f4c, 2184, 1},
+
+      {0x0345, 767, 1},
+
+      {0x0045, 12, 1},
+
+      {0x004c, 31, 1},
+
+      {0xa680, 2934, 1},
+
+      {0xa74c, 3036, 1},
+
+      {0x1e4a, 1823, 1},
+
+      {0x01d5, 441, 1},
+
+      {0x014a, 276, 1},
+
+      {0x1f4a, 2178, 1},
+
+      {0x03d5, 810, 1},
+
+      {0x00d5, 141, 1},
+
+      {0x004a, 24, 1},
+
+      {0x24bf, 2370, 1},
+
+      {0xa74a, 3033, 1},
+
+      {0xa64c, 2883, 1},
+
+      {0x1041c, 3321, 1},
+
+      {0x1e1c, 1754, 1},
+
+      {0x041c, 926, 1},
+
+      {0x011c, 213, 1},
+
+      {0x1f1c, 2118, 1},
+
+      {0x2c1c, 2505, 1},
+      {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+
+      {0xa64a, 2880, 1},
+
+      {0x1041a, 3315, 1},
+
+      {0x1e1a, 1751, 1},
+
+      {0x041a, 920, 1},
+
+      {0x011a, 210, 1},
+
+      {0x1f1a, 2112, 1},
+
+      {0x2c1a, 2499, 1},
+
+      {0xabbd, 1679, 1},
+
+      {0x0545, 1394, 1},
+
+      {0x054c, 1415, 1},
+
+      {0x10418, 3309, 1},
+
+      {0x1e18, 1748, 1},
+
+      {0x0418, 914, 1},
+
+      {0x0118, 207, 1},
+
+      {0x1f18, 2106, 1},
+
+      {0x2c18, 2493, 1},
+
+      {0x10bd, 2832, 1},
+
+      {0x2163, 2301, 1},
+
+      {0x054a, 1409, 1},
+
+      {0x1040e, 3279, 1},
+
+      {0x1e0e, 1733, 1},
+
+      {0x040e, 1028, 1},
+
+      {0x010e, 192, 1},
+
+      {0x1f0e, 2100, 1},
+
+      {0x2c0e, 2463, 1},
+
+      {0x1efc, 2076, 1},
+
+      {0x04fc, 1256, 1},
+
+      {0x01fc, 496, 1},
+
+      {0x1ffc, 96, 2},
+
+      {0x051c, 1304, 1},
+
+      {0x1040c, 3273, 1},
+
+      {0x1e0c, 1730, 1},
+
+      {0x040c, 1022, 1},
+
+      {0x010c, 189, 1},
+
+      {0x1f0c, 2094, 1},
+
+      {0x2c0c, 2457, 1},
+
+      {0x1f6d, 2217, 1},
+
+      {0x2c6d, 607, 1},
+
+      {0x051a, 1301, 1},
+
+      {0x24be, 2367, 1},
+
+      {0x10408, 3261, 1},
+
+      {0x1e08, 1724, 1},
+
+      {0x0408, 1010, 1},
+
+      {0x0108, 183, 1},
+
+      {0x1f08, 2082, 1},
+
+      {0x2c08, 2445, 1},
+
+      {0x04c9, 1178, 1},
+
+      {0x0518, 1298, 1},
+
+      {0x1fc9, 2235, 1},
+      {0xffffffff, -1, 0},
+
+      {0x24ba, 2355, 1},
+
+      {0x00c9, 105, 1},
+
+      {0x10416, 3303, 1},
+
+      {0x1e16, 1745, 1},
+
+      {0x0416, 908, 1},
+
+      {0x0116, 204, 1},
+
+      {0x050e, 1283, 1},
+
+      {0x2c16, 2487, 1},
+
+      {0x10414, 3297, 1},
+
+      {0x1e14, 1742, 1},
+
+      {0x0414, 902, 1},
+
+      {0x0114, 201, 1},
+
+      {0x042b, 971, 1},
+
+      {0x2c14, 2481, 1},
+
+      {0x1f2b, 2133, 1},
+
+      {0x2c2b, 2550, 1},
+      {0xffffffff, -1, 0},
+
+      {0x050c, 1280, 1},
+
+      {0x10406, 3255, 1},
+
+      {0x1e06, 1721, 1},
+
+      {0x0406, 1004, 1},
+
+      {0x0106, 180, 1},
+
+      {0x13fb, 1697, 1},
+
+      {0x2c06, 2439, 1},
+
+      {0x24c2, 2379, 1},
+
+      {0x118bd, 3597, 1},
+      {0xffffffff, -1, 0},
+
+      {0x0508, 1274, 1},
+
+      {0x10404, 3249, 1},
+
+      {0x1e04, 1718, 1},
+
+      {0x0404, 998, 1},
+
+      {0x0104, 177, 1},
+
+      {0x1f95, 194, 2},
+
+      {0x2c04, 2433, 1},
+
+      {0x0395, 752, 1},
+
+      {0x24ca, 2403, 1},
+
+      {0xab95, 1559, 1},
+
+      {0x0531, 1334, 1},
+
+      {0x10c95, 3420, 1},
+
+      {0x0516, 1295, 1},
+
+      {0x1e6c, 1875, 1},
+
+      {0x046c, 1052, 1},
+
+      {0x016c, 327, 1},
+
+      {0x1f6c, 2214, 1},
+
+      {0x216d, 2331, 1},
+
+      {0x0514, 1292, 1},
+
+      {0x0245, 697, 1},
+
+      {0x024c, 598, 1},
+
+      {0xa76c, 3084, 1},
+
+      {0x10400, 3237, 1},
+
+      {0x1e00, 1712, 1},
+
+      {0x0400, 986, 1},
+
+      {0x0100, 171, 1},
+
+      {0x24c4, 2385, 1},
+
+      {0x2c00, 2421, 1},
+
+      {0x0506, 1271, 1},
+
+      {0x024a, 595, 1},
+
+      {0x1fab, 224, 2},
+
+      {0xa66c, 2931, 1},
+
+      {0x03ab, 827, 1},
+
+      {0x24cf, 2418, 1},
+
+      {0xabab, 1625, 1},
+
+      {0xa7ab, 631, 1},
+
+      {0x10cab, 3486, 1},
+      {0xffffffff, -1, 0},
+
+      {0x0504, 1268, 1},
+      {0xffffffff, -1, 0},
+
+      {0x021c, 544, 1},
+
+      {0x01a9, 679, 1},
+
+      {0x1fa9, 214, 2},
+
+      {0x10ab, 2778, 1},
+
+      {0x03a9, 820, 1},
+
+      {0x212b, 92, 1},
+
+      {0xaba9, 1619, 1},
+
+      {0x1e88, 1917, 1},
+
+      {0x10ca9, 3480, 1},
+
+      {0x021a, 541, 1},
+
+      {0x1f88, 129, 2},
+
+      {0x2c88, 2598, 1},
+
+      {0x0388, 730, 1},
+
+      {0x13fd, 1703, 1},
+
+      {0xab88, 1520, 1},
+
+      {0x10a9, 2772, 1},
+
+      {0x10c88, 3381, 1},
+      {0xffffffff, -1, 0},
+
+      {0x0218, 538, 1},
+
+      {0x0500, 1262, 1},
+
+      {0x1f4d, 2187, 1},
+
+      {0x01a7, 393, 1},
+
+      {0x1fa7, 244, 2},
+
+      {0x004d, 34, 1},
+
+      {0x03a7, 814, 1},
+
+      {0xa688, 2946, 1},
+
+      {0xaba7, 1613, 1},
+
+      {0x020e, 523, 1},
+
+      {0x10ca7, 3474, 1},
+
+      {0x1e6a, 1872, 1},
+
+      {0x046a, 1049, 1},
+
+      {0x016a, 324, 1},
+
+      {0x1f6a, 2208, 1},
+      {0xffffffff, -1, 0},
+
+      {0x216c, 2328, 1},
+
+      {0x10a7, 2766, 1},
+
+      {0x01d1, 435, 1},
+
+      {0xa76a, 3081, 1},
+
+      {0x020c, 520, 1},
+
+      {0x03d1, 762, 1},
+
+      {0x00d1, 129, 1},
+
+      {0x1e68, 1869, 1},
+
+      {0x0468, 1046, 1},
+
+      {0x0168, 321, 1},
+
+      {0x1f68, 2202, 1},
+      {0xffffffff, -1, 0},
+
+      {0xff31, 3207, 1},
+
+      {0xa66a, 2928, 1},
+
+      {0x0208, 514, 1},
+
+      {0xa768, 3078, 1},
+
+      {0x1e64, 1863, 1},
+
+      {0x0464, 1040, 1},
+
+      {0x0164, 315, 1},
+
+      {0x054d, 1418, 1},
+
+      {0x2c64, 673, 1},
+      {0xffffffff, -1, 0},
+
+      {0xff2b, 3189, 1},
+      {0xffffffff, -1, 0},
+
+      {0xa764, 3072, 1},
+
+      {0xa668, 2925, 1},
+
+      {0x0216, 535, 1},
+      {0xffffffff, -1, 0},
+
+      {0x118ab, 3543, 1},
+
+      {0x1e62, 1860, 1},
+
+      {0x0462, 1037, 1},
+
+      {0x0162, 312, 1},
+
+      {0x0214, 532, 1},
+
+      {0x2c62, 655, 1},
+
+      {0xa664, 2919, 1},
+
+      {0x1ed2, 2013, 1},
+
+      {0x04d2, 1193, 1},
+
+      {0xa762, 3069, 1},
+
+      {0x1fd2, 20, 3},
+
+      {0x2cd2, 2709, 1},
+
+      {0x118a9, 3537, 1},
+
+      {0x00d2, 132, 1},
+
+      {0x0206, 511, 1},
+
+      {0x10420, 3333, 1},
+
+      {0x1e20, 1760, 1},
+
+      {0x0420, 938, 1},
+
+      {0x0120, 219, 1},
+
+      {0xa662, 2916, 1},
+
+      {0x2c20, 2517, 1},
+
+      {0x1e60, 1856, 1},
+
+      {0x0460, 1034, 1},
+
+      {0x0160, 309, 1},
+
+      {0x0204, 508, 1},
+
+      {0x2c60, 2562, 1},
+      {0xffffffff, -1, 0},
+
+      {0x24bd, 2364, 1},
+
+      {0x216a, 2322, 1},
+
+      {0xa760, 3066, 1},
+      {0xffffffff, -1, 0},
+
+      {0xfb16, 125, 2},
+
+      {0x118a7, 3531, 1},
+
+      {0x1efa, 2073, 1},
+
+      {0x04fa, 1253, 1},
+
+      {0x01fa, 493, 1},
+
+      {0x1ffa, 2262, 1},
+
+      {0xfb14, 109, 2},
+
+      {0x03fa, 887, 1},
+
+      {0xa660, 2913, 1},
+
+      {0x2168, 2316, 1},
+
+      {0x01b7, 700, 1},
+
+      {0x1fb7, 10, 3},
+
+      {0x1f6b, 2211, 1},
+
+      {0x2c6b, 2577, 1},
+
+      {0x0200, 502, 1},
+
+      {0xabb7, 1661, 1},
+
+      {0xfb06, 29, 2},
+
+      {0x1e56, 1841, 1},
+
+      {0x2164, 2304, 1},
+
+      {0x0156, 294, 1},
+
+      {0x1f56, 62, 3},
+
+      {0x0520, 1310, 1},
+
+      {0x004f, 40, 1},
+
+      {0x0056, 62, 1},
+
+      {0x10b7, 2814, 1},
+
+      {0xa756, 3051, 1},
+
+      {0xfb04, 5, 3},
+
+      {0x1e78, 1893, 1},
+
+      {0x0478, 1070, 1},
+
+      {0x0178, 168, 1},
+
+      {0x1e54, 1838, 1},
+
+      {0x2162, 2298, 1},
+
+      {0x0154, 291, 1},
+
+      {0x1f54, 57, 3},
+
+      {0xab78, 1472, 1},
+
+      {0xa656, 2898, 1},
+
+      {0x0054, 56, 1},
+
+      {0x1e52, 1835, 1},
+
+      {0xa754, 3048, 1},
+
+      {0x0152, 288, 1},
+
+      {0x1f52, 52, 3},
+
+      {0x24c9, 2400, 1},
+
+      {0x1e32, 1787, 1},
+
+      {0x0052, 49, 1},
+
+      {0x0132, 243, 1},
+
+      {0xa752, 3045, 1},
+      {0xffffffff, -1, 0},
+
+      {0xfb00, 4, 2},
+
+      {0xa654, 2895, 1},
+      {0xffffffff, -1, 0},
+
+      {0xa732, 2997, 1},
+
+      {0x2160, 2292, 1},
+
+      {0x054f, 1424, 1},
+
+      {0x0556, 1445, 1},
+
+      {0x1e50, 1832, 1},
+
+      {0xa652, 2892, 1},
+
+      {0x0150, 285, 1},
+
+      {0x1f50, 84, 2},
+
+      {0x017b, 348, 1},
+
+      {0x1e4e, 1829, 1},
+
+      {0x0050, 43, 1},
+
+      {0x014e, 282, 1},
+
+      {0xa750, 3042, 1},
+
+      {0xab7b, 1481, 1},
+
+      {0xa77b, 3093, 1},
+
+      {0x004e, 37, 1},
+
+      {0x0554, 1439, 1},
+
+      {0xa74e, 3039, 1},
+
+      {0x1e48, 1820, 1},
+      {0xffffffff, -1, 0},
+
+      {0x216b, 2325, 1},
+
+      {0x1f48, 2172, 1},
+
+      {0xa650, 2889, 1},
+
+      {0x0552, 1433, 1},
+
+      {0x0048, 21, 1},
+      {0xffffffff, -1, 0},
+
+      {0xa748, 3030, 1},
+
+      {0xa64e, 2886, 1},
+
+      {0x0532, 1337, 1},
+
+      {0x1041e, 3327, 1},
+
+      {0x1e1e, 1757, 1},
+
+      {0x041e, 932, 1},
+
+      {0x011e, 216, 1},
+
+      {0x118b7, 3579, 1},
+
+      {0x2c1e, 2511, 1},
+      {0xffffffff, -1, 0},
+
+      {0xa648, 2877, 1},
+
+      {0x1ff9, 2253, 1},
+      {0xffffffff, -1, 0},
+
+      {0x03f9, 878, 1},
+
+      {0x0550, 1427, 1},
+
+      {0x10412, 3291, 1},
+
+      {0x1e12, 1739, 1},
+
+      {0x0412, 896, 1},
+
+      {0x0112, 198, 1},
+
+      {0x054e, 1421, 1},
+
+      {0x2c12, 2475, 1},
+
+      {0x10410, 3285, 1},
+
+      {0x1e10, 1736, 1},
+
+      {0x0410, 890, 1},
+
+      {0x0110, 195, 1},
+      {0xffffffff, -1, 0},
+
+      {0x2c10, 2469, 1},
+
+      {0x2132, 2289, 1},
+
+      {0x0548, 1403, 1},
+
+      {0x1ef8, 2070, 1},
+
+      {0x04f8, 1250, 1},
+
+      {0x01f8, 490, 1},
+
+      {0x1ff8, 2250, 1},
+
+      {0x0220, 381, 1},
+
+      {0x1ee2, 2037, 1},
+
+      {0x04e2, 1217, 1},
+
+      {0x01e2, 462, 1},
+
+      {0x1fe2, 36, 3},
+
+      {0x2ce2, 2733, 1},
+
+      {0x03e2, 857, 1},
+
+      {0x051e, 1307, 1},
+
+      {0x1ede, 2031, 1},
+
+      {0x04de, 1211, 1},
+
+      {0x01de, 456, 1},
+      {0xffffffff, -1, 0},
+
+      {0x2cde, 2727, 1},
+
+      {0x03de, 851, 1},
+
+      {0x00de, 165, 1},
+
+      {0x1f69, 2205, 1},
+
+      {0x2c69, 2574, 1},
+
+      {0x1eda, 2025, 1},
+
+      {0x04da, 1205, 1},
+
+      {0x0512, 1289, 1},
+
+      {0x1fda, 2244, 1},
+
+      {0x2cda, 2721, 1},
+
+      {0x03da, 845, 1},
+
+      {0x00da, 153, 1},
+      {0xffffffff, -1, 0},
+
+      {0x0510, 1286, 1},
+
+      {0x1ed8, 2022, 1},
+
+      {0x04d8, 1202, 1},
+      {0xffffffff, -1, 0},
+
+      {0x1fd8, 2274, 1},
+
+      {0x2cd8, 2718, 1},
+
+      {0x03d8, 842, 1},
+
+      {0x00d8, 147, 1},
+
+      {0x1ed6, 2019, 1},
+
+      {0x04d6, 1199, 1},
+      {0xffffffff, -1, 0},
+
+      {0x1fd6, 76, 2},
+
+      {0x2cd6, 2715, 1},
+
+      {0x03d6, 792, 1},
+
+      {0x00d6, 144, 1},
+
+      {0x1ec8, 1998, 1},
+      {0xffffffff, -1, 0},
+
+      {0x01c8, 421, 1},
+
+      {0x1fc8, 2232, 1},
+
+      {0x2cc8, 2694, 1},
+
+      {0xff32, 3210, 1},
+
+      {0x00c8, 102, 1},
+
+      {0x04c7, 1175, 1},
+
+      {0x01c7, 421, 1},
+
+      {0x1fc7, 15, 3},
+
+      {0x1ec0, 1986, 1},
+
+      {0x04c0, 1187, 1},
+
+      {0x00c7, 99, 1},
+      {0xffffffff, -1, 0},
+
+      {0x2cc0, 2682, 1},
+
+      {0x0179, 345, 1},
+
+      {0x00c0, 77, 1},
+
+      {0x0232, 574, 1},
+
+      {0x01b3, 402, 1},
+
+      {0x1fb3, 62, 2},
+
+      {0xab79, 1475, 1},
+
+      {0xa779, 3090, 1},
+
+      {0x10c7, 2859, 1},
+
+      {0xabb3, 1649, 1},
+
+      {0xa7b3, 3156, 1},
+
+      {0x1fa5, 234, 2},
+
+      {0x10c0, 2841, 1},
+
+      {0x03a5, 807, 1},
+      {0xffffffff, -1, 0},
+
+      {0xaba5, 1607, 1},
+
+      {0x01b1, 691, 1},
+
+      {0x10ca5, 3468, 1},
+
+      {0x10b3, 2802, 1},
+
+      {0x2169, 2319, 1},
+
+      {0x024e, 601, 1},
+
+      {0xabb1, 1643, 1},
+
+      {0xa7b1, 682, 1},
+
+      {0x10cb1, 3504, 1},
+
+      {0x10a5, 2760, 1},
+      {0xffffffff, -1, 0},
+
+      {0x01af, 399, 1},
+
+      {0x1faf, 244, 2},
+      {0xffffffff, -1, 0},
+
+      {0x0248, 592, 1},
+
+      {0x10b1, 2796, 1},
+
+      {0xabaf, 1637, 1},
+
+      {0x1fad, 234, 2},
+
+      {0x10caf, 3498, 1},
+
+      {0x04cd, 1184, 1},
+
+      {0x01cd, 429, 1},
+
+      {0xabad, 1631, 1},
+
+      {0xa7ad, 658, 1},
+
+      {0x10cad, 3492, 1},
+
+      {0x00cd, 117, 1},
+
+      {0x10af, 2790, 1},
+
+      {0x021e, 547, 1},
+
+      {0x1fa3, 224, 2},
+      {0xffffffff, -1, 0},
+
+      {0x03a3, 800, 1},
+
+      {0x10ad, 2784, 1},
+
+      {0xaba3, 1601, 1},
+      {0xffffffff, -1, 0},
+
+      {0x10ca3, 3462, 1},
+
+      {0x10cd, 2862, 1},
+
+      {0x1fa1, 214, 2},
+
+      {0x24b7, 2346, 1},
+
+      {0x03a1, 796, 1},
+
+      {0x0212, 529, 1},
+
+      {0xaba1, 1595, 1},
+
+      {0x10a3, 2754, 1},
+
+      {0x10ca1, 3456, 1},
+
+      {0x01d3, 438, 1},
+
+      {0x1fd3, 25, 3},
+
+      {0x0210, 526, 1},
+      {0xffffffff, -1, 0},
+
+      {0x00d3, 135, 1},
+
+      {0x1e97, 34, 2},
+
+      {0x10a1, 2748, 1},
+
+      {0x0197, 649, 1},
+
+      {0x1f97, 204, 2},
+      {0xffffffff, -1, 0},
+
+      {0x0397, 759, 1},
+
+      {0x1041d, 3324, 1},
+
+      {0xab97, 1565, 1},
+
+      {0x041d, 929, 1},
+
+      {0x10c97, 3426, 1},
+
+      {0x1f1d, 2121, 1},
+
+      {0x2c1d, 2508, 1},
+
+      {0x1e72, 1884, 1},
+
+      {0x0472, 1061, 1},
+
+      {0x0172, 336, 1},
+
+      {0x118b3, 3567, 1},
+
+      {0x2c72, 2580, 1},
+
+      {0x0372, 712, 1},
+
+      {0x1041b, 3318, 1},
+
+      {0xab72, 1454, 1},
+
+      {0x041b, 923, 1},
+
+      {0x118a5, 3525, 1},
+
+      {0x1f1b, 2115, 1},
+
+      {0x2c1b, 2502, 1},
+
+      {0x1e70, 1881, 1},
+
+      {0x0470, 1058, 1},
+
+      {0x0170, 333, 1},
+
+      {0x118b1, 3561, 1},
+
+      {0x2c70, 610, 1},
+
+      {0x0370, 709, 1},
+
+      {0x1e46, 1817, 1},
+
+      {0xab70, 1448, 1},
+
+      {0x1e66, 1866, 1},
+
+      {0x0466, 1043, 1},
+
+      {0x0166, 318, 1},
+
+      {0x1e44, 1814, 1},
+
+      {0x0046, 15, 1},
+
+      {0x118af, 3555, 1},
+
+      {0xa746, 3027, 1},
+      {0xffffffff, -1, 0},
+
+      {0xa766, 3075, 1},
+
+      {0x0044, 9, 1},
+
+      {0x118ad, 3549, 1},
+
+      {0xa744, 3024, 1},
+
+      {0x1e7a, 1896, 1},
+
+      {0x047a, 1073, 1},
+
+      {0x1e3a, 1799, 1},
+      {0xffffffff, -1, 0},
+
+      {0xa646, 2874, 1},
+
+      {0x1f3a, 2154, 1},
+
+      {0xa666, 2922, 1},
+
+      {0xab7a, 1478, 1},
+
+      {0x118a3, 3519, 1},
+
+      {0xa644, 2871, 1},
+
+      {0xa73a, 3009, 1},
+      {0xffffffff, -1, 0},
+
+      {0x1ef4, 2064, 1},
+
+      {0x04f4, 1244, 1},
+
+      {0x01f4, 487, 1},
+
+      {0x1ff4, 101, 2},
+
+      {0x118a1, 3513, 1},
+
+      {0x03f4, 762, 1},
+
+      {0x1eec, 2052, 1},
+
+      {0x04ec, 1232, 1},
+
+      {0x01ec, 477, 1},
+
+      {0x1fec, 2286, 1},
+
+      {0x0546, 1397, 1},
+
+      {0x03ec, 872, 1},
+      {0xffffffff, -1, 0},
+
+      {0x013f, 261, 1},
+
+      {0x1f3f, 2169, 1},
+
+      {0x0544, 1391, 1},
+
+      {0x1eea, 2049, 1},
+
+      {0x04ea, 1229, 1},
+
+      {0x01ea, 474, 1},
+
+      {0x1fea, 2256, 1},
+      {0xffffffff, -1, 0},
+
+      {0x03ea, 869, 1},
+
+      {0x1ee8, 2046, 1},
+
+      {0x04e8, 1226, 1},
+
+      {0x01e8, 471, 1},
+
+      {0x1fe8, 2280, 1},
+
+      {0x053a, 1361, 1},
+
+      {0x03e8, 866, 1},
+
+      {0x1ee6, 2043, 1},
+
+      {0x04e6, 1223, 1},
+
+      {0x01e6, 468, 1},
+
+      {0x1fe6, 88, 2},
+
+      {0x1f4b, 2181, 1},
+
+      {0x03e6, 863, 1},
+
+      {0x1e5e, 1853, 1},
+
+      {0x004b, 27, 1},
+
+      {0x015e, 306, 1},
+
+      {0x2166, 2310, 1},
+
+      {0x1ee4, 2040, 1},
+
+      {0x04e4, 1220, 1},
+
+      {0x01e4, 465, 1},
+
+      {0x1fe4, 80, 2},
+
+      {0xa75e, 3063, 1},
+
+      {0x03e4, 860, 1},
+
+      {0x1ee0, 2034, 1},
+
+      {0x04e0, 1214, 1},
+
+      {0x01e0, 459, 1},
+
+      {0x053f, 1376, 1},
+
+      {0x2ce0, 2730, 1},
+
+      {0x03e0, 854, 1},
+
+      {0x1edc, 2028, 1},
+
+      {0x04dc, 1208, 1},
+
+      {0xa65e, 2910, 1},
+      {0xffffffff, -1, 0},
+
+      {0x2cdc, 2724, 1},
+
+      {0x03dc, 848, 1},
+
+      {0x00dc, 159, 1},
+
+      {0x1ed0, 2010, 1},
+
+      {0x04d0, 1190, 1},
+      {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+
+      {0x2cd0, 2706, 1},
+
+      {0x03d0, 742, 1},
+
+      {0x00d0, 126, 1},
+
+      {0x1ecc, 2004, 1},
+
+      {0x054b, 1412, 1},
+      {0xffffffff, -1, 0},
+
+      {0x1fcc, 71, 2},
+
+      {0x2ccc, 2700, 1},
+
+      {0x1ec6, 1995, 1},
+
+      {0x00cc, 114, 1},
+      {0xffffffff, -1, 0},
+
+      {0x1fc6, 67, 2},
+
+      {0x2cc6, 2691, 1},
+
+      {0x24c8, 2397, 1},
+
+      {0x00c6, 96, 1},
+
+      {0x04c5, 1172, 1},
+
+      {0x01c5, 417, 1},
+      {0xffffffff, -1, 0},
+
+      {0x1fbb, 2229, 1},
+
+      {0x24c7, 2394, 1},
+
+      {0x00c5, 92, 1},
+
+      {0x1fb9, 2271, 1},
+
+      {0xabbb, 1673, 1},
+
+      {0x24c0, 2373, 1},
+
+      {0x04c3, 1169, 1},
+
+      {0xabb9, 1667, 1},
+
+      {0x1fc3, 71, 2},
+      {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+
+      {0x00c3, 86, 1},
+
+      {0x10c5, 2856, 1},
+
+      {0x10bb, 2826, 1},
+
+      {0x1ed4, 2016, 1},
+
+      {0x04d4, 1196, 1},
+
+      {0x10b9, 2820, 1},
+
+      {0x13fc, 1700, 1},
+
+      {0x2cd4, 2712, 1},
+
+      {0x0246, 589, 1},
+
+      {0x00d4, 138, 1},
+
+      {0x10c3, 2850, 1},
+      {0xffffffff, -1, 0},
+
+      {0xff3a, 3234, 1},
+
+      {0x0244, 688, 1},
+
+      {0x019f, 670, 1},
+
+      {0x1f9f, 204, 2},
+      {0xffffffff, -1, 0},
+
+      {0x039f, 789, 1},
+      {0xffffffff, -1, 0},
+
+      {0xab9f, 1589, 1},
+      {0xffffffff, -1, 0},
+
+      {0x10c9f, 3450, 1},
+
+      {0x019d, 667, 1},
+
+      {0x1f9d, 194, 2},
+
+      {0x023a, 2565, 1},
+
+      {0x039d, 783, 1},
+
+      {0x1e5a, 1847, 1},
+
+      {0xab9d, 1583, 1},
+
+      {0x015a, 300, 1},
+
+      {0x10c9d, 3444, 1},
+
+      {0x1e9b, 1856, 1},
+
+      {0x24cd, 2412, 1},
+
+      {0x005a, 74, 1},
+
+      {0x1f9b, 184, 2},
+
+      {0xa75a, 3057, 1},
+
+      {0x039b, 776, 1},
+
+      {0x1ece, 2007, 1},
+
+      {0xab9b, 1577, 1},
+
+      {0x1e99, 42, 2},
+
+      {0x10c9b, 3438, 1},
+
+      {0x2cce, 2703, 1},
+
+      {0x1f99, 174, 2},
+
+      {0x00ce, 120, 1},
+
+      {0x0399, 767, 1},
+
+      {0xa65a, 2904, 1},
+
+      {0xab99, 1571, 1},
+      {0xffffffff, -1, 0},
+
+      {0x10c99, 3432, 1},
+
+      {0x0193, 634, 1},
+
+      {0x1f93, 184, 2},
+
+      {0x1e58, 1844, 1},
+
+      {0x0393, 746, 1},
+
+      {0x0158, 297, 1},
+
+      {0xab93, 1553, 1},
+      {0xffffffff, -1, 0},
+
+      {0x10c93, 3414, 1},
+
+      {0x0058, 68, 1},
+
+      {0x042d, 977, 1},
+
+      {0xa758, 3054, 1},
+
+      {0x1f2d, 2139, 1},
+
+      {0x2c2d, 2556, 1},
+
+      {0x118bb, 3591, 1},
+
+      {0x0191, 369, 1},
+
+      {0x1f91, 174, 2},
+
+      {0x118b9, 3585, 1},
+
+      {0x0391, 739, 1},
+      {0xffffffff, -1, 0},
+
+      {0xab91, 1547, 1},
+
+      {0xa658, 2901, 1},
+
+      {0x10c91, 3408, 1},
+
+      {0x018f, 625, 1},
+
+      {0x1f8f, 164, 2},
+      {0xffffffff, -1, 0},
+
+      {0x038f, 836, 1},
+      {0xffffffff, -1, 0},
+
+      {0xab8f, 1541, 1},
+      {0xffffffff, -1, 0},
+
+      {0x10c8f, 3402, 1},
+
+      {0x018b, 366, 1},
+
+      {0x1f8b, 144, 2},
+      {0xffffffff, -1, 0},
+
+      {0x0187, 363, 1},
+
+      {0x1f87, 164, 2},
+
+      {0xab8b, 1529, 1},
+
+      {0xa78b, 3111, 1},
+
+      {0x10c8b, 3390, 1},
+
+      {0xab87, 1517, 1},
+
+      {0x04c1, 1166, 1},
+
+      {0x10c87, 3378, 1},
+
+      {0x1e7e, 1902, 1},
+
+      {0x047e, 1079, 1},
+      {0xffffffff, -1, 0},
+
+      {0x00c1, 80, 1},
+
+      {0x2c7e, 580, 1},
+      {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+
+      {0xab7e, 1490, 1},
+
+      {0xa77e, 3096, 1},
+
+      {0x1e76, 1890, 1},
+
+      {0x0476, 1067, 1},
+
+      {0x0176, 342, 1},
+
+      {0x1e42, 1811, 1},
+
+      {0x10c1, 2844, 1},
+
+      {0x0376, 715, 1},
+
+      {0x1e36, 1793, 1},
+
+      {0xab76, 1466, 1},
+
+      {0x0136, 249, 1},
+
+      {0x0042, 3, 1},
+
+      {0x1e3e, 1805, 1},
+
+      {0xa742, 3021, 1},
+
+      {0x1e38, 1796, 1},
+
+      {0x1f3e, 2166, 1},
+
+      {0xa736, 3003, 1},
+
+      {0x1f38, 2148, 1},
+      {0xffffffff, -1, 0},
+
+      {0x0587, 105, 2},
+
+      {0xa73e, 3015, 1},
+      {0xffffffff, -1, 0},
+
+      {0xa738, 3006, 1},
+
+      {0xa642, 2868, 1},
+
+      {0x1e5c, 1850, 1},
+
+      {0x1e34, 1790, 1},
+
+      {0x015c, 303, 1},
+
+      {0x0134, 246, 1},
+
+      {0x1ef6, 2067, 1},
+
+      {0x04f6, 1247, 1},
+
+      {0x01f6, 372, 1},
+
+      {0x1ff6, 92, 2},
+
+      {0xa75c, 3060, 1},
+
+      {0xa734, 3000, 1},
+
+      {0x1ef0, 2058, 1},
+
+      {0x04f0, 1238, 1},
+
+      {0x01f0, 20, 2},
+      {0xffffffff, -1, 0},
+
+      {0x1e30, 1784, 1},
+
+      {0x03f0, 772, 1},
+
+      {0x0130, 261, 2},
+
+      {0x0542, 1385, 1},
+
+      {0xa65c, 2907, 1},
+
+      {0x1f83, 144, 2},
+
+      {0x0536, 1349, 1},
+      {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+
+      {0xab83, 1505, 1},
+
+      {0x053e, 1373, 1},
+
+      {0x10c83, 3366, 1},
+
+      {0x0538, 1355, 1},
+
+      {0x1eee, 2055, 1},
+
+      {0x04ee, 1235, 1},
+
+      {0x01ee, 480, 1},
+
+      {0x1f8d, 154, 2},
+      {0xffffffff, -1, 0},
+
+      {0x03ee, 875, 1},
+      {0xffffffff, -1, 0},
+
+      {0xab8d, 1535, 1},
+
+      {0xa78d, 643, 1},
+
+      {0x10c8d, 3396, 1},
+
+      {0x0534, 1343, 1},
+
+      {0x0181, 613, 1},
+
+      {0x1f81, 134, 2},
+
+      {0x013d, 258, 1},
+
+      {0x1f3d, 2163, 1},
+      {0xffffffff, -1, 0},
+
+      {0xab81, 1499, 1},
+
+      {0x017f, 52, 1},
+
+      {0x10c81, 3360, 1},
+
+      {0x2c7f, 583, 1},
+
+      {0x037f, 881, 1},
+
+      {0xff2d, 3195, 1},
+
+      {0xab7f, 1493, 1},
+
+      {0x1e74, 1887, 1},
+
+      {0x0474, 1064, 1},
+
+      {0x0174, 339, 1},
+
+      {0x1e3c, 1802, 1},
+
+      {0x0149, 46, 2},
+
+      {0x1f49, 2175, 1},
+
+      {0x1f3c, 2160, 1},
+
+      {0xab74, 1460, 1},
+
+      {0x0049, 3606, 1},
+
+      {0x0143, 267, 1},
+
+      {0x24cc, 2409, 1},
+
+      {0xa73c, 3012, 1},
+      {0xffffffff, -1, 0},
+
+      {0x0043, 6, 1},
+
+      {0x0141, 264, 1},
+
+      {0x24c6, 2391, 1},
+
+      {0x013b, 255, 1},
+
+      {0x1f3b, 2157, 1},
+
+      {0x0041, 0, 1},
+
+      {0x0139, 252, 1},
+
+      {0x1f39, 2151, 1},
+
+      {0x24c5, 2388, 1},
+
+      {0x24bb, 2358, 1},
+
+      {0x13fa, 1694, 1},
+
+      {0x053d, 1370, 1},
+
+      {0x24b9, 2352, 1},
+
+      {0x0429, 965, 1},
+
+      {0x2183, 2340, 1},
+
+      {0x1f29, 2127, 1},
+
+      {0x2c29, 2544, 1},
+
+      {0x24c3, 2382, 1},
+
+      {0x10427, 3354, 1},
+
+      {0x10425, 3348, 1},
+
+      {0x0427, 959, 1},
+
+      {0x0425, 953, 1},
+      {0xffffffff, -1, 0},
+
+      {0x2c27, 2538, 1},
+
+      {0x2c25, 2532, 1},
+
+      {0x0549, 1406, 1},
+
+      {0x053c, 1367, 1},
+
+      {0x10423, 3342, 1},
+      {0xffffffff, -1, 0},
+
+      {0x0423, 947, 1},
+
+      {0x0543, 1388, 1},
+      {0xffffffff, -1, 0},
+
+      {0x2c23, 2526, 1},
+
+      {0xff36, 3222, 1},
+      {0xffffffff, -1, 0},
+
+      {0x0541, 1382, 1},
+
+      {0x10421, 3336, 1},
+
+      {0x053b, 1364, 1},
+
+      {0x0421, 941, 1},
+
+      {0xff38, 3228, 1},
+
+      {0x0539, 1358, 1},
+
+      {0x2c21, 2520, 1},
+
+      {0x10419, 3312, 1},
+
+      {0x10417, 3306, 1},
+
+      {0x0419, 917, 1},
+
+      {0x0417, 911, 1},
+
+      {0x1f19, 2109, 1},
+
+      {0x2c19, 2496, 1},
+
+      {0x2c17, 2490, 1},
+
+      {0x023e, 2568, 1},
+
+      {0xff34, 3216, 1},
+
+      {0x10415, 3300, 1},
+
+      {0x10413, 3294, 1},
+
+      {0x0415, 905, 1},
+
+      {0x0413, 899, 1},
+      {0xffffffff, -1, 0},
+
+      {0x2c15, 2484, 1},
+
+      {0x2c13, 2478, 1},
+      {0xffffffff, -1, 0},
+
+      {0x24ce, 2415, 1},
+
+      {0x1040f, 3282, 1},
+      {0xffffffff, -1, 0},
+
+      {0x040f, 1031, 1},
+
+      {0xff30, 3204, 1},
+
+      {0x1f0f, 2103, 1},
+
+      {0x2c0f, 2466, 1},
+
+      {0x1040d, 3276, 1},
+      {0xffffffff, -1, 0},
+
+      {0x040d, 1025, 1},
+
+      {0x0147, 273, 1},
+
+      {0x1f0d, 2097, 1},
+
+      {0x2c0d, 2460, 1},
+
+      {0x1040b, 3270, 1},
+
+      {0x0047, 18, 1},
+
+      {0x040b, 1019, 1},
+
+      {0x0230, 571, 1},
+
+      {0x1f0b, 2091, 1},
+
+      {0x2c0b, 2454, 1},
+
+      {0x10409, 3264, 1},
+
+      {0x10405, 3252, 1},
+
+      {0x0409, 1013, 1},
+
+      {0x0405, 1001, 1},
+
+      {0x1f09, 2085, 1},
+
+      {0x2c09, 2448, 1},
+
+      {0x2c05, 2436, 1},
+
+      {0x10403, 3246, 1},
+
+      {0x10401, 3240, 1},
+
+      {0x0403, 995, 1},
+
+      {0x0401, 989, 1},
+      {0xffffffff, -1, 0},
+
+      {0x2c03, 2430, 1},
+
+      {0x2c01, 2424, 1},
+
+      {0x13f9, 1691, 1},
+
+      {0x042f, 983, 1},
+      {0xffffffff, -1, 0},
+
+      {0x1f2f, 2145, 1},
+
+      {0x1041f, 3330, 1},
+      {0xffffffff, -1, 0},
+
+      {0x041f, 935, 1},
+
+      {0x023d, 378, 1},
+
+      {0x10411, 3288, 1},
+
+      {0x2c1f, 2514, 1},
+
+      {0x0411, 893, 1},
+
+      {0x0547, 1400, 1},
+      {0xffffffff, -1, 0},
+
+      {0x2c11, 2472, 1},
+
+      {0x10407, 3258, 1},
+      {0xffffffff, -1, 0},
+
+      {0x0407, 1007, 1},
+
+      {0x24c1, 2376, 1},
+      {0xffffffff, -1, 0},
+
+      {0x2c07, 2442, 1},
+      {0xffffffff, -1, 0},
+
+      {0x13f8, 1688, 1},
+      {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+
+      {0xff39, 3231, 1},
+      {0xffffffff, -1, 0},
+
+      {0x0243, 354, 1},
+      {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+
+      {0x0241, 586, 1},
+
+      {0xff29, 3183, 1},
+
+      {0x023b, 577, 1},
+      {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+
+      {0xff27, 3177, 1},
+
+      {0xff25, 3171, 1},
+      {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+      {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+
+      {0xff23, 3165, 1},
+      {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+      {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+
+      {0xff21, 3159, 1},
+      {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+      {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+      {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+      {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+      {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+      {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+      {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+      {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+      {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+      {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+      {0xffffffff, -1, 0},
+
+      {0xfb17, 117, 2},
+      {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+
+      {0xff2f, 3201, 1},
+      {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+
+      {0xfb15, 113, 2},
+
+      {0xfb13, 121, 2},
+      {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+      {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+      {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+      {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+      {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+      {0xffffffff, -1, 0},
+
+      {0xfb05, 29, 2},
+      {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+
+      {0xfb03, 0, 3},
+
+      {0xfb01, 8, 2}
+    };
+
+  if (0 == 0)
+    {
+      int key = hash(&code);
+
+      if (key <= MAX_HASH_VALUE)
+        {
+          OnigCodePoint gcode = wordlist[key].code;
+
+          if (code == gcode)
+            return &wordlist[key];
+        }
+    }
+  return 0;
+}
+
+
index da34d51eefe26dad78bf4c8ac602f4bb4bb2b610..e90adc4b2ebd39da61c69e38f600f42144a14765 100644 (file)
@@ -206,15 +206,6 @@ utf16be_get_case_fold_codes_by_str(OnigCaseFoldType flag,
                                                    flag, p, end, items);
 }
 
-static int
-initialize(void)
-{
-  int r;
-
-  r = onigenc_unicode_initialize();
-  return r;
-}
-
 OnigEncodingType OnigEncodingUTF16_BE = {
   utf16be_mbc_enc_len,
   "UTF-16BE",   /* name */
@@ -232,5 +223,5 @@ OnigEncodingType OnigEncodingUTF16_BE = {
   onigenc_utf16_32_get_ctype_code_range,
   utf16be_left_adjust_char_head,
   onigenc_always_false_is_allowed_reverse_match,
-  initialize /* init */
+  NULL /* init */
 };
index 9acbe155e21d177b7fd95586463e087d644649e5..dbc95e0c0e4a7e34bae6cf59da262e0f50e29e2b 100644 (file)
@@ -207,15 +207,6 @@ utf16le_get_case_fold_codes_by_str(OnigCaseFoldType flag,
                                                    flag, p, end, items);
 }
 
-static int
-initialize(void)
-{
-  int r;
-
-  r = onigenc_unicode_initialize();
-  return r;
-}
-
 OnigEncodingType OnigEncodingUTF16_LE = {
   utf16le_mbc_enc_len,
   "UTF-16LE",   /* name */
@@ -233,5 +224,5 @@ OnigEncodingType OnigEncodingUTF16_LE = {
   onigenc_utf16_32_get_ctype_code_range,
   utf16le_left_adjust_char_head,
   onigenc_always_false_is_allowed_reverse_match,
-  initialize /* init */
+  NULL /* init */
 };
index 5cc37b7c8c0116c7f67721fa6418d3d427d3685c..49418ee113c682557736785c7932f3e2bf789d30 100644 (file)
@@ -165,15 +165,6 @@ utf32be_get_case_fold_codes_by_str(OnigCaseFoldType flag,
                                                    flag, p, end, items);
 }
 
-static int
-initialize(void)
-{
-  int r;
-
-  r = onigenc_unicode_initialize();
-  return r;
-}
-
 OnigEncodingType OnigEncodingUTF32_BE = {
   utf32be_mbc_enc_len,
   "UTF-32BE",   /* name */
@@ -191,5 +182,5 @@ OnigEncodingType OnigEncodingUTF32_BE = {
   onigenc_utf16_32_get_ctype_code_range,
   utf32be_left_adjust_char_head,
   onigenc_always_false_is_allowed_reverse_match,
-  initialize /* init */
+  NULL /* init */
 };
index 8a9450693c120bcc551fb8d06559ad5a62cce683..06ab62e6ba86adfc1c2c584f8302bd6d7aaf8abc 100644 (file)
@@ -165,15 +165,6 @@ utf32le_get_case_fold_codes_by_str(OnigCaseFoldType flag,
                                                    flag, p, end, items);
 }
 
-static int
-initialize(void)
-{
-  int r;
-
-  r = onigenc_unicode_initialize();
-  return r;
-}
-
 OnigEncodingType OnigEncodingUTF32_LE = {
   utf32le_mbc_enc_len,
   "UTF-32LE",   /* name */
@@ -191,5 +182,5 @@ OnigEncodingType OnigEncodingUTF32_LE = {
   onigenc_utf16_32_get_ctype_code_range,
   utf32le_left_adjust_char_head,
   onigenc_always_false_is_allowed_reverse_match,
-  initialize /* init */
+  NULL /* init */
 };
index d6f4450189d9c04a7b153ccadb16f01b3d0c091e..7ccb0610320dd31877a727d342f34946f4030e2b 100644 (file)
@@ -285,15 +285,6 @@ get_case_fold_codes_by_str(OnigCaseFoldType flag,
                                                    flag, p, end, items);
 }
 
-static int
-initialize(void)
-{
-  int r;
-
-  r = onigenc_unicode_initialize();
-  return r;
-}
-
 OnigEncodingType OnigEncodingUTF8 = {
   mbc_enc_len,
   "UTF-8",     /* name */
@@ -311,5 +302,5 @@ OnigEncodingType OnigEncodingUTF8 = {
   get_ctype_code_range,
   left_adjust_char_head,
   onigenc_always_true_is_allowed_reverse_match,
-  initialize /* init */
+  NULL /* init */
 };