Back to index

php5  5.3.10
unicode.c
Go to the documentation of this file.
00001 /**********************************************************************
00002   unicode.c -  Oniguruma (regular expression library)
00003 **********************************************************************/
00004 /*-
00005  * Copyright (c) 2002-2004  K.Kosako  <sndgk393 AT ybb DOT ne DOT jp>
00006  * All rights reserved.
00007  *
00008  * Redistribution and use in source and binary forms, with or without
00009  * modification, are permitted provided that the following conditions
00010  * are met:
00011  * 1. Redistributions of source code must retain the above copyright
00012  *    notice, this list of conditions and the following disclaimer.
00013  * 2. Redistributions in binary form must reproduce the above copyright
00014  *    notice, this list of conditions and the following disclaimer in the
00015  *    documentation and/or other materials provided with the distribution.
00016  *
00017  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
00018  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
00019  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
00020  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
00021  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
00022  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
00023  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
00024  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
00025  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
00026  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
00027  * SUCH DAMAGE.
00028  */
00029 
00030 #include "regenc.h"
00031 
00032 
00033 const unsigned short OnigEnc_Unicode_ISO_8859_1_CtypeTable[256] = {
00034   0x2008, 0x2008, 0x2008, 0x2008, 0x2008, 0x2008, 0x2008, 0x2008,
00035   0x2008, 0x228c, 0x2289, 0x2288, 0x2288, 0x2288, 0x2008, 0x2008,
00036   0x2008, 0x2008, 0x2008, 0x2008, 0x2008, 0x2008, 0x2008, 0x2008,
00037   0x2008, 0x2008, 0x2008, 0x2008, 0x2008, 0x2008, 0x2008, 0x2008,
00038   0x2284, 0x21a0, 0x21a0, 0x21a0, 0x21a0, 0x21a0, 0x21a0, 0x21a0,
00039   0x21a0, 0x21a0, 0x21a0, 0x21a0, 0x21a0, 0x21a0, 0x21a0, 0x21a0,
00040   0x38b0, 0x38b0, 0x38b0, 0x38b0, 0x38b0, 0x38b0, 0x38b0, 0x38b0,
00041   0x38b0, 0x38b0, 0x21a0, 0x21a0, 0x21a0, 0x21a0, 0x21a0, 0x21a0,
00042   0x21a0, 0x3ca2, 0x3ca2, 0x3ca2, 0x3ca2, 0x3ca2, 0x3ca2, 0x34a2,
00043   0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2,
00044   0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2,
00045   0x34a2, 0x34a2, 0x34a2, 0x21a0, 0x21a0, 0x21a0, 0x21a0, 0x31a0,
00046   0x21a0, 0x38e2, 0x38e2, 0x38e2, 0x38e2, 0x38e2, 0x38e2, 0x30e2,
00047   0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2,
00048   0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2,
00049   0x30e2, 0x30e2, 0x30e2, 0x21a0, 0x21a0, 0x21a0, 0x21a0, 0x2008,
00050   0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0288, 0x0008, 0x0008,
00051   0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
00052   0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
00053   0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
00054   0x0284, 0x01a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0,
00055   0x00a0, 0x00a0, 0x10e2, 0x01a0, 0x00a0, 0x00a8, 0x00a0, 0x00a0,
00056   0x00a0, 0x00a0, 0x10a0, 0x10a0, 0x00a0, 0x10e2, 0x00a0, 0x01a0,
00057   0x00a0, 0x10a0, 0x10e2, 0x01a0, 0x10a0, 0x10a0, 0x10a0, 0x01a0,
00058   0x14a2, 0x14a2, 0x14a2, 0x14a2, 0x14a2, 0x14a2, 0x14a2, 0x14a2,
00059   0x14a2, 0x14a2, 0x14a2, 0x14a2, 0x14a2, 0x14a2, 0x14a2, 0x14a2,
00060   0x14a2, 0x14a2, 0x14a2, 0x14a2, 0x14a2, 0x14a2, 0x14a2, 0x00a0,
00061   0x14a2, 0x14a2, 0x14a2, 0x14a2, 0x14a2, 0x14a2, 0x14a2, 0x10e2,
00062   0x10e2, 0x10e2, 0x10e2, 0x10e2, 0x10e2, 0x10e2, 0x10e2, 0x10e2,
00063   0x10e2, 0x10e2, 0x10e2, 0x10e2, 0x10e2, 0x10e2, 0x10e2, 0x10e2,
00064   0x10e2, 0x10e2, 0x10e2, 0x10e2, 0x10e2, 0x10e2, 0x10e2, 0x00a0,
00065   0x10e2, 0x10e2, 0x10e2, 0x10e2, 0x10e2, 0x10e2, 0x10e2, 0x10e2
00066 };
00067 
00068 static const OnigCodePoint CRAlnum[] = {
00069 #ifdef USE_UNICODE_FULL_RANGE_CTYPE
00070   414,
00071 #else
00072   9,
00073 #endif
00074   0x0030, 0x0039,
00075   0x0041, 0x005a,
00076   0x0061, 0x007a,
00077   0x00aa, 0x00aa,
00078   0x00b5, 0x00b5,
00079   0x00ba, 0x00ba,
00080   0x00c0, 0x00d6,
00081   0x00d8, 0x00f6,
00082   0x00f8, 0x0236
00083 #ifdef USE_UNICODE_FULL_RANGE_CTYPE
00084   ,
00085   0x0250, 0x02c1,
00086   0x02c6, 0x02d1,
00087   0x02e0, 0x02e4,
00088   0x02ee, 0x02ee,
00089   0x0300, 0x0357,
00090   0x035d, 0x036f,
00091   0x037a, 0x037a,
00092   0x0386, 0x0386,
00093   0x0388, 0x038a,
00094   0x038c, 0x038c,
00095   0x038e, 0x03a1,
00096   0x03a3, 0x03ce,
00097   0x03d0, 0x03f5,
00098   0x03f7, 0x03fb,
00099   0x0400, 0x0481,
00100   0x0483, 0x0486,
00101   0x0488, 0x04ce,
00102   0x04d0, 0x04f5,
00103   0x04f8, 0x04f9,
00104   0x0500, 0x050f,
00105   0x0531, 0x0556,
00106   0x0559, 0x0559,
00107   0x0561, 0x0587,
00108   0x0591, 0x05a1,
00109   0x05a3, 0x05b9,
00110   0x05bb, 0x05bd,
00111   0x05bf, 0x05bf,
00112   0x05c1, 0x05c2,
00113   0x05c4, 0x05c4,
00114   0x05d0, 0x05ea,
00115   0x05f0, 0x05f2,
00116   0x0610, 0x0615,
00117   0x0621, 0x063a,
00118   0x0640, 0x0658,
00119   0x0660, 0x0669,
00120   0x066e, 0x06d3,
00121   0x06d5, 0x06dc,
00122   0x06de, 0x06e8,
00123   0x06ea, 0x06fc,
00124   0x06ff, 0x06ff,
00125   0x0710, 0x074a,
00126   0x074d, 0x074f,
00127   0x0780, 0x07b1,
00128   0x0901, 0x0939,
00129   0x093c, 0x094d,
00130   0x0950, 0x0954,
00131   0x0958, 0x0963,
00132   0x0966, 0x096f,
00133   0x0981, 0x0983,
00134   0x0985, 0x098c,
00135   0x098f, 0x0990,
00136   0x0993, 0x09a8,
00137   0x09aa, 0x09b0,
00138   0x09b2, 0x09b2,
00139   0x09b6, 0x09b9,
00140   0x09bc, 0x09c4,
00141   0x09c7, 0x09c8,
00142   0x09cb, 0x09cd,
00143   0x09d7, 0x09d7,
00144   0x09dc, 0x09dd,
00145   0x09df, 0x09e3,
00146   0x09e6, 0x09f1,
00147   0x0a01, 0x0a03,
00148   0x0a05, 0x0a0a,
00149   0x0a0f, 0x0a10,
00150   0x0a13, 0x0a28,
00151   0x0a2a, 0x0a30,
00152   0x0a32, 0x0a33,
00153   0x0a35, 0x0a36,
00154   0x0a38, 0x0a39,
00155   0x0a3c, 0x0a3c,
00156   0x0a3e, 0x0a42,
00157   0x0a47, 0x0a48,
00158   0x0a4b, 0x0a4d,
00159   0x0a59, 0x0a5c,
00160   0x0a5e, 0x0a5e,
00161   0x0a66, 0x0a74,
00162   0x0a81, 0x0a83,
00163   0x0a85, 0x0a8d,
00164   0x0a8f, 0x0a91,
00165   0x0a93, 0x0aa8,
00166   0x0aaa, 0x0ab0,
00167   0x0ab2, 0x0ab3,
00168   0x0ab5, 0x0ab9,
00169   0x0abc, 0x0ac5,
00170   0x0ac7, 0x0ac9,
00171   0x0acb, 0x0acd,
00172   0x0ad0, 0x0ad0,
00173   0x0ae0, 0x0ae3,
00174   0x0ae6, 0x0aef,
00175   0x0b01, 0x0b03,
00176   0x0b05, 0x0b0c,
00177   0x0b0f, 0x0b10,
00178   0x0b13, 0x0b28,
00179   0x0b2a, 0x0b30,
00180   0x0b32, 0x0b33,
00181   0x0b35, 0x0b39,
00182   0x0b3c, 0x0b43,
00183   0x0b47, 0x0b48,
00184   0x0b4b, 0x0b4d,
00185   0x0b56, 0x0b57,
00186   0x0b5c, 0x0b5d,
00187   0x0b5f, 0x0b61,
00188   0x0b66, 0x0b6f,
00189   0x0b71, 0x0b71,
00190   0x0b82, 0x0b83,
00191   0x0b85, 0x0b8a,
00192   0x0b8e, 0x0b90,
00193   0x0b92, 0x0b95,
00194   0x0b99, 0x0b9a,
00195   0x0b9c, 0x0b9c,
00196   0x0b9e, 0x0b9f,
00197   0x0ba3, 0x0ba4,
00198   0x0ba8, 0x0baa,
00199   0x0bae, 0x0bb5,
00200   0x0bb7, 0x0bb9,
00201   0x0bbe, 0x0bc2,
00202   0x0bc6, 0x0bc8,
00203   0x0bca, 0x0bcd,
00204   0x0bd7, 0x0bd7,
00205   0x0be7, 0x0bef,
00206   0x0c01, 0x0c03,
00207   0x0c05, 0x0c0c,
00208   0x0c0e, 0x0c10,
00209   0x0c12, 0x0c28,
00210   0x0c2a, 0x0c33,
00211   0x0c35, 0x0c39,
00212   0x0c3e, 0x0c44,
00213   0x0c46, 0x0c48,
00214   0x0c4a, 0x0c4d,
00215   0x0c55, 0x0c56,
00216   0x0c60, 0x0c61,
00217   0x0c66, 0x0c6f,
00218   0x0c82, 0x0c83,
00219   0x0c85, 0x0c8c,
00220   0x0c8e, 0x0c90,
00221   0x0c92, 0x0ca8,
00222   0x0caa, 0x0cb3,
00223   0x0cb5, 0x0cb9,
00224   0x0cbc, 0x0cc4,
00225   0x0cc6, 0x0cc8,
00226   0x0cca, 0x0ccd,
00227   0x0cd5, 0x0cd6,
00228   0x0cde, 0x0cde,
00229   0x0ce0, 0x0ce1,
00230   0x0ce6, 0x0cef,
00231   0x0d02, 0x0d03,
00232   0x0d05, 0x0d0c,
00233   0x0d0e, 0x0d10,
00234   0x0d12, 0x0d28,
00235   0x0d2a, 0x0d39,
00236   0x0d3e, 0x0d43,
00237   0x0d46, 0x0d48,
00238   0x0d4a, 0x0d4d,
00239   0x0d57, 0x0d57,
00240   0x0d60, 0x0d61,
00241   0x0d66, 0x0d6f,
00242   0x0d82, 0x0d83,
00243   0x0d85, 0x0d96,
00244   0x0d9a, 0x0db1,
00245   0x0db3, 0x0dbb,
00246   0x0dbd, 0x0dbd,
00247   0x0dc0, 0x0dc6,
00248   0x0dca, 0x0dca,
00249   0x0dcf, 0x0dd4,
00250   0x0dd6, 0x0dd6,
00251   0x0dd8, 0x0ddf,
00252   0x0df2, 0x0df3,
00253   0x0e01, 0x0e3a,
00254   0x0e40, 0x0e4e,
00255   0x0e50, 0x0e59,
00256   0x0e81, 0x0e82,
00257   0x0e84, 0x0e84,
00258   0x0e87, 0x0e88,
00259   0x0e8a, 0x0e8a,
00260   0x0e8d, 0x0e8d,
00261   0x0e94, 0x0e97,
00262   0x0e99, 0x0e9f,
00263   0x0ea1, 0x0ea3,
00264   0x0ea5, 0x0ea5,
00265   0x0ea7, 0x0ea7,
00266   0x0eaa, 0x0eab,
00267   0x0ead, 0x0eb9,
00268   0x0ebb, 0x0ebd,
00269   0x0ec0, 0x0ec4,
00270   0x0ec6, 0x0ec6,
00271   0x0ec8, 0x0ecd,
00272   0x0ed0, 0x0ed9,
00273   0x0edc, 0x0edd,
00274   0x0f00, 0x0f00,
00275   0x0f18, 0x0f19,
00276   0x0f20, 0x0f29,
00277   0x0f35, 0x0f35,
00278   0x0f37, 0x0f37,
00279   0x0f39, 0x0f39,
00280   0x0f3e, 0x0f47,
00281   0x0f49, 0x0f6a,
00282   0x0f71, 0x0f84,
00283   0x0f86, 0x0f8b,
00284   0x0f90, 0x0f97,
00285   0x0f99, 0x0fbc,
00286   0x0fc6, 0x0fc6,
00287   0x1000, 0x1021,
00288   0x1023, 0x1027,
00289   0x1029, 0x102a,
00290   0x102c, 0x1032,
00291   0x1036, 0x1039,
00292   0x1040, 0x1049,
00293   0x1050, 0x1059,
00294   0x10a0, 0x10c5,
00295   0x10d0, 0x10f8,
00296   0x1100, 0x1159,
00297   0x115f, 0x11a2,
00298   0x11a8, 0x11f9,
00299   0x1200, 0x1206,
00300   0x1208, 0x1246,
00301   0x1248, 0x1248,
00302   0x124a, 0x124d,
00303   0x1250, 0x1256,
00304   0x1258, 0x1258,
00305   0x125a, 0x125d,
00306   0x1260, 0x1286,
00307   0x1288, 0x1288,
00308   0x128a, 0x128d,
00309   0x1290, 0x12ae,
00310   0x12b0, 0x12b0,
00311   0x12b2, 0x12b5,
00312   0x12b8, 0x12be,
00313   0x12c0, 0x12c0,
00314   0x12c2, 0x12c5,
00315   0x12c8, 0x12ce,
00316   0x12d0, 0x12d6,
00317   0x12d8, 0x12ee,
00318   0x12f0, 0x130e,
00319   0x1310, 0x1310,
00320   0x1312, 0x1315,
00321   0x1318, 0x131e,
00322   0x1320, 0x1346,
00323   0x1348, 0x135a,
00324   0x1369, 0x1371,
00325   0x13a0, 0x13f4,
00326   0x1401, 0x166c,
00327   0x166f, 0x1676,
00328   0x1681, 0x169a,
00329   0x16a0, 0x16ea,
00330   0x1700, 0x170c,
00331   0x170e, 0x1714,
00332   0x1720, 0x1734,
00333   0x1740, 0x1753,
00334   0x1760, 0x176c,
00335   0x176e, 0x1770,
00336   0x1772, 0x1773,
00337   0x1780, 0x17b3,
00338   0x17b6, 0x17d3,
00339   0x17d7, 0x17d7,
00340   0x17dc, 0x17dd,
00341   0x17e0, 0x17e9,
00342   0x180b, 0x180d,
00343   0x1810, 0x1819,
00344   0x1820, 0x1877,
00345   0x1880, 0x18a9,
00346   0x1900, 0x191c,
00347   0x1920, 0x192b,
00348   0x1930, 0x193b,
00349   0x1946, 0x196d,
00350   0x1970, 0x1974,
00351   0x1d00, 0x1d6b,
00352   0x1e00, 0x1e9b,
00353   0x1ea0, 0x1ef9,
00354   0x1f00, 0x1f15,
00355   0x1f18, 0x1f1d,
00356   0x1f20, 0x1f45,
00357   0x1f48, 0x1f4d,
00358   0x1f50, 0x1f57,
00359   0x1f59, 0x1f59,
00360   0x1f5b, 0x1f5b,
00361   0x1f5d, 0x1f5d,
00362   0x1f5f, 0x1f7d,
00363   0x1f80, 0x1fb4,
00364   0x1fb6, 0x1fbc,
00365   0x1fbe, 0x1fbe,
00366   0x1fc2, 0x1fc4,
00367   0x1fc6, 0x1fcc,
00368   0x1fd0, 0x1fd3,
00369   0x1fd6, 0x1fdb,
00370   0x1fe0, 0x1fec,
00371   0x1ff2, 0x1ff4,
00372   0x1ff6, 0x1ffc,
00373   0x2071, 0x2071,
00374   0x207f, 0x207f,
00375   0x20d0, 0x20ea,
00376   0x2102, 0x2102,
00377   0x2107, 0x2107,
00378   0x210a, 0x2113,
00379   0x2115, 0x2115,
00380   0x2119, 0x211d,
00381   0x2124, 0x2124,
00382   0x2126, 0x2126,
00383   0x2128, 0x2128,
00384   0x212a, 0x212d,
00385   0x212f, 0x2131,
00386   0x2133, 0x2139,
00387   0x213d, 0x213f,
00388   0x2145, 0x2149,
00389   0x3005, 0x3006,
00390   0x302a, 0x302f,
00391   0x3031, 0x3035,
00392   0x303b, 0x303c,
00393   0x3041, 0x3096,
00394   0x3099, 0x309a,
00395   0x309d, 0x309f,
00396   0x30a1, 0x30fa,
00397   0x30fc, 0x30ff,
00398   0x3105, 0x312c,
00399   0x3131, 0x318e,
00400   0x31a0, 0x31b7,
00401   0x31f0, 0x31ff,
00402   0x3400, 0x4db5,
00403   0x4e00, 0x9fa5,
00404   0xa000, 0xa48c,
00405   0xac00, 0xd7a3,
00406   0xf900, 0xfa2d,
00407   0xfa30, 0xfa6a,
00408   0xfb00, 0xfb06,
00409   0xfb13, 0xfb17,
00410   0xfb1d, 0xfb28,
00411   0xfb2a, 0xfb36,
00412   0xfb38, 0xfb3c,
00413   0xfb3e, 0xfb3e,
00414   0xfb40, 0xfb41,
00415   0xfb43, 0xfb44,
00416   0xfb46, 0xfbb1,
00417   0xfbd3, 0xfd3d,
00418   0xfd50, 0xfd8f,
00419   0xfd92, 0xfdc7,
00420   0xfdf0, 0xfdfb,
00421   0xfe00, 0xfe0f,
00422   0xfe20, 0xfe23,
00423   0xfe70, 0xfe74,
00424   0xfe76, 0xfefc,
00425   0xff10, 0xff19,
00426   0xff21, 0xff3a,
00427   0xff41, 0xff5a,
00428   0xff66, 0xffbe,
00429   0xffc2, 0xffc7,
00430   0xffca, 0xffcf,
00431   0xffd2, 0xffd7,
00432   0xffda, 0xffdc,
00433   0x10000, 0x1000b,
00434   0x1000d, 0x10026,
00435   0x10028, 0x1003a,
00436   0x1003c, 0x1003d,
00437   0x1003f, 0x1004d,
00438   0x10050, 0x1005d,
00439   0x10080, 0x100fa,
00440   0x10300, 0x1031e,
00441   0x10330, 0x10349,
00442   0x10380, 0x1039d,
00443   0x10400, 0x1049d,
00444   0x104a0, 0x104a9,
00445   0x10800, 0x10805,
00446   0x10808, 0x10808,
00447   0x1080a, 0x10835,
00448   0x10837, 0x10838,
00449   0x1083c, 0x1083c,
00450   0x1083f, 0x1083f,
00451   0x1d165, 0x1d169,
00452   0x1d16d, 0x1d172,
00453   0x1d17b, 0x1d182,
00454   0x1d185, 0x1d18b,
00455   0x1d1aa, 0x1d1ad,
00456   0x1d400, 0x1d454,
00457   0x1d456, 0x1d49c,
00458   0x1d49e, 0x1d49f,
00459   0x1d4a2, 0x1d4a2,
00460   0x1d4a5, 0x1d4a6,
00461   0x1d4a9, 0x1d4ac,
00462   0x1d4ae, 0x1d4b9,
00463   0x1d4bb, 0x1d4bb,
00464   0x1d4bd, 0x1d4c3,
00465   0x1d4c5, 0x1d505,
00466   0x1d507, 0x1d50a,
00467   0x1d50d, 0x1d514,
00468   0x1d516, 0x1d51c,
00469   0x1d51e, 0x1d539,
00470   0x1d53b, 0x1d53e,
00471   0x1d540, 0x1d544,
00472   0x1d546, 0x1d546,
00473   0x1d54a, 0x1d550,
00474   0x1d552, 0x1d6a3,
00475   0x1d6a8, 0x1d6c0,
00476   0x1d6c2, 0x1d6da,
00477   0x1d6dc, 0x1d6fa,
00478   0x1d6fc, 0x1d714,
00479   0x1d716, 0x1d734,
00480   0x1d736, 0x1d74e,
00481   0x1d750, 0x1d76e,
00482   0x1d770, 0x1d788,
00483   0x1d78a, 0x1d7a8,
00484   0x1d7aa, 0x1d7c2,
00485   0x1d7c4, 0x1d7c9,
00486   0x1d7ce, 0x1d7ff,
00487   0x20000, 0x2a6d6,
00488   0x2f800, 0x2fa1d,
00489   0xe0100, 0xe01ef
00490 #endif /* USE_UNICODE_FULL_RANGE_CTYPE */
00491 }; /* end of CRAlnum */
00492 
00493 static const OnigCodePoint CRAlpha[] = {
00494 #ifdef USE_UNICODE_FULL_RANGE_CTYPE
00495   396,
00496 #else
00497   8,
00498 #endif
00499   0x0041, 0x005a,
00500   0x0061, 0x007a,
00501   0x00aa, 0x00aa,
00502   0x00b5, 0x00b5,
00503   0x00ba, 0x00ba,
00504   0x00c0, 0x00d6,
00505   0x00d8, 0x00f6,
00506   0x00f8, 0x0236
00507 #ifdef USE_UNICODE_FULL_RANGE_CTYPE
00508   ,
00509   0x0250, 0x02c1,
00510   0x02c6, 0x02d1,
00511   0x02e0, 0x02e4,
00512   0x02ee, 0x02ee,
00513   0x0300, 0x0357,
00514   0x035d, 0x036f,
00515   0x037a, 0x037a,
00516   0x0386, 0x0386,
00517   0x0388, 0x038a,
00518   0x038c, 0x038c,
00519   0x038e, 0x03a1,
00520   0x03a3, 0x03ce,
00521   0x03d0, 0x03f5,
00522   0x03f7, 0x03fb,
00523   0x0400, 0x0481,
00524   0x0483, 0x0486,
00525   0x0488, 0x04ce,
00526   0x04d0, 0x04f5,
00527   0x04f8, 0x04f9,
00528   0x0500, 0x050f,
00529   0x0531, 0x0556,
00530   0x0559, 0x0559,
00531   0x0561, 0x0587,
00532   0x0591, 0x05a1,
00533   0x05a3, 0x05b9,
00534   0x05bb, 0x05bd,
00535   0x05bf, 0x05bf,
00536   0x05c1, 0x05c2,
00537   0x05c4, 0x05c4,
00538   0x05d0, 0x05ea,
00539   0x05f0, 0x05f2,
00540   0x0610, 0x0615,
00541   0x0621, 0x063a,
00542   0x0640, 0x0658,
00543   0x066e, 0x06d3,
00544   0x06d5, 0x06dc,
00545   0x06de, 0x06e8,
00546   0x06ea, 0x06ef,
00547   0x06fa, 0x06fc,
00548   0x06ff, 0x06ff,
00549   0x0710, 0x074a,
00550   0x074d, 0x074f,
00551   0x0780, 0x07b1,
00552   0x0901, 0x0939,
00553   0x093c, 0x094d,
00554   0x0950, 0x0954,
00555   0x0958, 0x0963,
00556   0x0981, 0x0983,
00557   0x0985, 0x098c,
00558   0x098f, 0x0990,
00559   0x0993, 0x09a8,
00560   0x09aa, 0x09b0,
00561   0x09b2, 0x09b2,
00562   0x09b6, 0x09b9,
00563   0x09bc, 0x09c4,
00564   0x09c7, 0x09c8,
00565   0x09cb, 0x09cd,
00566   0x09d7, 0x09d7,
00567   0x09dc, 0x09dd,
00568   0x09df, 0x09e3,
00569   0x09f0, 0x09f1,
00570   0x0a01, 0x0a03,
00571   0x0a05, 0x0a0a,
00572   0x0a0f, 0x0a10,
00573   0x0a13, 0x0a28,
00574   0x0a2a, 0x0a30,
00575   0x0a32, 0x0a33,
00576   0x0a35, 0x0a36,
00577   0x0a38, 0x0a39,
00578   0x0a3c, 0x0a3c,
00579   0x0a3e, 0x0a42,
00580   0x0a47, 0x0a48,
00581   0x0a4b, 0x0a4d,
00582   0x0a59, 0x0a5c,
00583   0x0a5e, 0x0a5e,
00584   0x0a70, 0x0a74,
00585   0x0a81, 0x0a83,
00586   0x0a85, 0x0a8d,
00587   0x0a8f, 0x0a91,
00588   0x0a93, 0x0aa8,
00589   0x0aaa, 0x0ab0,
00590   0x0ab2, 0x0ab3,
00591   0x0ab5, 0x0ab9,
00592   0x0abc, 0x0ac5,
00593   0x0ac7, 0x0ac9,
00594   0x0acb, 0x0acd,
00595   0x0ad0, 0x0ad0,
00596   0x0ae0, 0x0ae3,
00597   0x0b01, 0x0b03,
00598   0x0b05, 0x0b0c,
00599   0x0b0f, 0x0b10,
00600   0x0b13, 0x0b28,
00601   0x0b2a, 0x0b30,
00602   0x0b32, 0x0b33,
00603   0x0b35, 0x0b39,
00604   0x0b3c, 0x0b43,
00605   0x0b47, 0x0b48,
00606   0x0b4b, 0x0b4d,
00607   0x0b56, 0x0b57,
00608   0x0b5c, 0x0b5d,
00609   0x0b5f, 0x0b61,
00610   0x0b71, 0x0b71,
00611   0x0b82, 0x0b83,
00612   0x0b85, 0x0b8a,
00613   0x0b8e, 0x0b90,
00614   0x0b92, 0x0b95,
00615   0x0b99, 0x0b9a,
00616   0x0b9c, 0x0b9c,
00617   0x0b9e, 0x0b9f,
00618   0x0ba3, 0x0ba4,
00619   0x0ba8, 0x0baa,
00620   0x0bae, 0x0bb5,
00621   0x0bb7, 0x0bb9,
00622   0x0bbe, 0x0bc2,
00623   0x0bc6, 0x0bc8,
00624   0x0bca, 0x0bcd,
00625   0x0bd7, 0x0bd7,
00626   0x0c01, 0x0c03,
00627   0x0c05, 0x0c0c,
00628   0x0c0e, 0x0c10,
00629   0x0c12, 0x0c28,
00630   0x0c2a, 0x0c33,
00631   0x0c35, 0x0c39,
00632   0x0c3e, 0x0c44,
00633   0x0c46, 0x0c48,
00634   0x0c4a, 0x0c4d,
00635   0x0c55, 0x0c56,
00636   0x0c60, 0x0c61,
00637   0x0c82, 0x0c83,
00638   0x0c85, 0x0c8c,
00639   0x0c8e, 0x0c90,
00640   0x0c92, 0x0ca8,
00641   0x0caa, 0x0cb3,
00642   0x0cb5, 0x0cb9,
00643   0x0cbc, 0x0cc4,
00644   0x0cc6, 0x0cc8,
00645   0x0cca, 0x0ccd,
00646   0x0cd5, 0x0cd6,
00647   0x0cde, 0x0cde,
00648   0x0ce0, 0x0ce1,
00649   0x0d02, 0x0d03,
00650   0x0d05, 0x0d0c,
00651   0x0d0e, 0x0d10,
00652   0x0d12, 0x0d28,
00653   0x0d2a, 0x0d39,
00654   0x0d3e, 0x0d43,
00655   0x0d46, 0x0d48,
00656   0x0d4a, 0x0d4d,
00657   0x0d57, 0x0d57,
00658   0x0d60, 0x0d61,
00659   0x0d82, 0x0d83,
00660   0x0d85, 0x0d96,
00661   0x0d9a, 0x0db1,
00662   0x0db3, 0x0dbb,
00663   0x0dbd, 0x0dbd,
00664   0x0dc0, 0x0dc6,
00665   0x0dca, 0x0dca,
00666   0x0dcf, 0x0dd4,
00667   0x0dd6, 0x0dd6,
00668   0x0dd8, 0x0ddf,
00669   0x0df2, 0x0df3,
00670   0x0e01, 0x0e3a,
00671   0x0e40, 0x0e4e,
00672   0x0e81, 0x0e82,
00673   0x0e84, 0x0e84,
00674   0x0e87, 0x0e88,
00675   0x0e8a, 0x0e8a,
00676   0x0e8d, 0x0e8d,
00677   0x0e94, 0x0e97,
00678   0x0e99, 0x0e9f,
00679   0x0ea1, 0x0ea3,
00680   0x0ea5, 0x0ea5,
00681   0x0ea7, 0x0ea7,
00682   0x0eaa, 0x0eab,
00683   0x0ead, 0x0eb9,
00684   0x0ebb, 0x0ebd,
00685   0x0ec0, 0x0ec4,
00686   0x0ec6, 0x0ec6,
00687   0x0ec8, 0x0ecd,
00688   0x0edc, 0x0edd,
00689   0x0f00, 0x0f00,
00690   0x0f18, 0x0f19,
00691   0x0f35, 0x0f35,
00692   0x0f37, 0x0f37,
00693   0x0f39, 0x0f39,
00694   0x0f3e, 0x0f47,
00695   0x0f49, 0x0f6a,
00696   0x0f71, 0x0f84,
00697   0x0f86, 0x0f8b,
00698   0x0f90, 0x0f97,
00699   0x0f99, 0x0fbc,
00700   0x0fc6, 0x0fc6,
00701   0x1000, 0x1021,
00702   0x1023, 0x1027,
00703   0x1029, 0x102a,
00704   0x102c, 0x1032,
00705   0x1036, 0x1039,
00706   0x1050, 0x1059,
00707   0x10a0, 0x10c5,
00708   0x10d0, 0x10f8,
00709   0x1100, 0x1159,
00710   0x115f, 0x11a2,
00711   0x11a8, 0x11f9,
00712   0x1200, 0x1206,
00713   0x1208, 0x1246,
00714   0x1248, 0x1248,
00715   0x124a, 0x124d,
00716   0x1250, 0x1256,
00717   0x1258, 0x1258,
00718   0x125a, 0x125d,
00719   0x1260, 0x1286,
00720   0x1288, 0x1288,
00721   0x128a, 0x128d,
00722   0x1290, 0x12ae,
00723   0x12b0, 0x12b0,
00724   0x12b2, 0x12b5,
00725   0x12b8, 0x12be,
00726   0x12c0, 0x12c0,
00727   0x12c2, 0x12c5,
00728   0x12c8, 0x12ce,
00729   0x12d0, 0x12d6,
00730   0x12d8, 0x12ee,
00731   0x12f0, 0x130e,
00732   0x1310, 0x1310,
00733   0x1312, 0x1315,
00734   0x1318, 0x131e,
00735   0x1320, 0x1346,
00736   0x1348, 0x135a,
00737   0x13a0, 0x13f4,
00738   0x1401, 0x166c,
00739   0x166f, 0x1676,
00740   0x1681, 0x169a,
00741   0x16a0, 0x16ea,
00742   0x1700, 0x170c,
00743   0x170e, 0x1714,
00744   0x1720, 0x1734,
00745   0x1740, 0x1753,
00746   0x1760, 0x176c,
00747   0x176e, 0x1770,
00748   0x1772, 0x1773,
00749   0x1780, 0x17b3,
00750   0x17b6, 0x17d3,
00751   0x17d7, 0x17d7,
00752   0x17dc, 0x17dd,
00753   0x180b, 0x180d,
00754   0x1820, 0x1877,
00755   0x1880, 0x18a9,
00756   0x1900, 0x191c,
00757   0x1920, 0x192b,
00758   0x1930, 0x193b,
00759   0x1950, 0x196d,
00760   0x1970, 0x1974,
00761   0x1d00, 0x1d6b,
00762   0x1e00, 0x1e9b,
00763   0x1ea0, 0x1ef9,
00764   0x1f00, 0x1f15,
00765   0x1f18, 0x1f1d,
00766   0x1f20, 0x1f45,
00767   0x1f48, 0x1f4d,
00768   0x1f50, 0x1f57,
00769   0x1f59, 0x1f59,
00770   0x1f5b, 0x1f5b,
00771   0x1f5d, 0x1f5d,
00772   0x1f5f, 0x1f7d,
00773   0x1f80, 0x1fb4,
00774   0x1fb6, 0x1fbc,
00775   0x1fbe, 0x1fbe,
00776   0x1fc2, 0x1fc4,
00777   0x1fc6, 0x1fcc,
00778   0x1fd0, 0x1fd3,
00779   0x1fd6, 0x1fdb,
00780   0x1fe0, 0x1fec,
00781   0x1ff2, 0x1ff4,
00782   0x1ff6, 0x1ffc,
00783   0x2071, 0x2071,
00784   0x207f, 0x207f,
00785   0x20d0, 0x20ea,
00786   0x2102, 0x2102,
00787   0x2107, 0x2107,
00788   0x210a, 0x2113,
00789   0x2115, 0x2115,
00790   0x2119, 0x211d,
00791   0x2124, 0x2124,
00792   0x2126, 0x2126,
00793   0x2128, 0x2128,
00794   0x212a, 0x212d,
00795   0x212f, 0x2131,
00796   0x2133, 0x2139,
00797   0x213d, 0x213f,
00798   0x2145, 0x2149,
00799   0x3005, 0x3006,
00800   0x302a, 0x302f,
00801   0x3031, 0x3035,
00802   0x303b, 0x303c,
00803   0x3041, 0x3096,
00804   0x3099, 0x309a,
00805   0x309d, 0x309f,
00806   0x30a1, 0x30fa,
00807   0x30fc, 0x30ff,
00808   0x3105, 0x312c,
00809   0x3131, 0x318e,
00810   0x31a0, 0x31b7,
00811   0x31f0, 0x31ff,
00812   0x3400, 0x4db5,
00813   0x4e00, 0x9fa5,
00814   0xa000, 0xa48c,
00815   0xac00, 0xd7a3,
00816   0xf900, 0xfa2d,
00817   0xfa30, 0xfa6a,
00818   0xfb00, 0xfb06,
00819   0xfb13, 0xfb17,
00820   0xfb1d, 0xfb28,
00821   0xfb2a, 0xfb36,
00822   0xfb38, 0xfb3c,
00823   0xfb3e, 0xfb3e,
00824   0xfb40, 0xfb41,
00825   0xfb43, 0xfb44,
00826   0xfb46, 0xfbb1,
00827   0xfbd3, 0xfd3d,
00828   0xfd50, 0xfd8f,
00829   0xfd92, 0xfdc7,
00830   0xfdf0, 0xfdfb,
00831   0xfe00, 0xfe0f,
00832   0xfe20, 0xfe23,
00833   0xfe70, 0xfe74,
00834   0xfe76, 0xfefc,
00835   0xff21, 0xff3a,
00836   0xff41, 0xff5a,
00837   0xff66, 0xffbe,
00838   0xffc2, 0xffc7,
00839   0xffca, 0xffcf,
00840   0xffd2, 0xffd7,
00841   0xffda, 0xffdc,
00842   0x10000, 0x1000b,
00843   0x1000d, 0x10026,
00844   0x10028, 0x1003a,
00845   0x1003c, 0x1003d,
00846   0x1003f, 0x1004d,
00847   0x10050, 0x1005d,
00848   0x10080, 0x100fa,
00849   0x10300, 0x1031e,
00850   0x10330, 0x10349,
00851   0x10380, 0x1039d,
00852   0x10400, 0x1049d,
00853   0x10800, 0x10805,
00854   0x10808, 0x10808,
00855   0x1080a, 0x10835,
00856   0x10837, 0x10838,
00857   0x1083c, 0x1083c,
00858   0x1083f, 0x1083f,
00859   0x1d165, 0x1d169,
00860   0x1d16d, 0x1d172,
00861   0x1d17b, 0x1d182,
00862   0x1d185, 0x1d18b,
00863   0x1d1aa, 0x1d1ad,
00864   0x1d400, 0x1d454,
00865   0x1d456, 0x1d49c,
00866   0x1d49e, 0x1d49f,
00867   0x1d4a2, 0x1d4a2,
00868   0x1d4a5, 0x1d4a6,
00869   0x1d4a9, 0x1d4ac,
00870   0x1d4ae, 0x1d4b9,
00871   0x1d4bb, 0x1d4bb,
00872   0x1d4bd, 0x1d4c3,
00873   0x1d4c5, 0x1d505,
00874   0x1d507, 0x1d50a,
00875   0x1d50d, 0x1d514,
00876   0x1d516, 0x1d51c,
00877   0x1d51e, 0x1d539,
00878   0x1d53b, 0x1d53e,
00879   0x1d540, 0x1d544,
00880   0x1d546, 0x1d546,
00881   0x1d54a, 0x1d550,
00882   0x1d552, 0x1d6a3,
00883   0x1d6a8, 0x1d6c0,
00884   0x1d6c2, 0x1d6da,
00885   0x1d6dc, 0x1d6fa,
00886   0x1d6fc, 0x1d714,
00887   0x1d716, 0x1d734,
00888   0x1d736, 0x1d74e,
00889   0x1d750, 0x1d76e,
00890   0x1d770, 0x1d788,
00891   0x1d78a, 0x1d7a8,
00892   0x1d7aa, 0x1d7c2,
00893   0x1d7c4, 0x1d7c9,
00894   0x20000, 0x2a6d6,
00895   0x2f800, 0x2fa1d,
00896   0xe0100, 0xe01ef
00897 #endif /* USE_UNICODE_FULL_RANGE_CTYPE */
00898 }; /* end of CRAlpha */
00899 
00900 static const OnigCodePoint CRBlank[] = {
00901 #ifdef USE_UNICODE_FULL_RANGE_CTYPE
00902   9,
00903 #else
00904   3,
00905 #endif
00906   0x0009, 0x0009,
00907   0x0020, 0x0020,
00908   0x00a0, 0x00a0
00909 #ifdef USE_UNICODE_FULL_RANGE_CTYPE
00910   ,
00911   0x1680, 0x1680,
00912   0x180e, 0x180e,
00913   0x2000, 0x200a,
00914   0x202f, 0x202f,
00915   0x205f, 0x205f,
00916   0x3000, 0x3000
00917 #endif /* USE_UNICODE_FULL_RANGE_CTYPE */
00918 }; /* end of CRBlank */
00919 
00920 static const OnigCodePoint CRCntrl[] = {
00921 #ifdef USE_UNICODE_FULL_RANGE_CTYPE
00922   19,
00923 #else
00924   3,
00925 #endif
00926   0x0000, 0x001f,
00927   0x007f, 0x009f,
00928   0x00ad, 0x00ad
00929 #ifdef USE_UNICODE_FULL_RANGE_CTYPE
00930   ,
00931   0x0600, 0x0603,
00932   0x06dd, 0x06dd,
00933   0x070f, 0x070f,
00934   0x17b4, 0x17b5,
00935   0x200b, 0x200f,
00936   0x202a, 0x202e,
00937   0x2060, 0x2063,
00938   0x206a, 0x206f,
00939   0xd800, 0xf8ff,
00940   0xfeff, 0xfeff,
00941   0xfff9, 0xfffb,
00942   0x1d173, 0x1d17a,
00943   0xe0001, 0xe0001,
00944   0xe0020, 0xe007f,
00945   0xf0000, 0xffffd,
00946   0x100000, 0x10fffd
00947 #endif /* USE_UNICODE_FULL_RANGE_CTYPE */
00948 }; /* end of CRCntrl */
00949 
00950 static const OnigCodePoint CRDigit[] = {
00951 #ifdef USE_UNICODE_FULL_RANGE_CTYPE
00952   23,
00953 #else
00954   1,
00955 #endif
00956   0x0030, 0x0039
00957 #ifdef USE_UNICODE_FULL_RANGE_CTYPE
00958   ,
00959   0x0660, 0x0669,
00960   0x06f0, 0x06f9,
00961   0x0966, 0x096f,
00962   0x09e6, 0x09ef,
00963   0x0a66, 0x0a6f,
00964   0x0ae6, 0x0aef,
00965   0x0b66, 0x0b6f,
00966   0x0be7, 0x0bef,
00967   0x0c66, 0x0c6f,
00968   0x0ce6, 0x0cef,
00969   0x0d66, 0x0d6f,
00970   0x0e50, 0x0e59,
00971   0x0ed0, 0x0ed9,
00972   0x0f20, 0x0f29,
00973   0x1040, 0x1049,
00974   0x1369, 0x1371,
00975   0x17e0, 0x17e9,
00976   0x1810, 0x1819,
00977   0x1946, 0x194f,
00978   0xff10, 0xff19,
00979   0x104a0, 0x104a9,
00980   0x1d7ce, 0x1d7ff
00981 #endif /* USE_UNICODE_FULL_RANGE_CTYPE */
00982 }; /* end of CRDigit */
00983 
00984 static const OnigCodePoint CRGraph[] = {
00985 #ifdef USE_UNICODE_FULL_RANGE_CTYPE
00986   405,
00987 #else
00988   2,
00989 #endif
00990   0x0021, 0x007e,
00991   0x00a1, 0x0236
00992 #ifdef USE_UNICODE_FULL_RANGE_CTYPE
00993   ,
00994   0x0250, 0x0357,
00995   0x035d, 0x036f,
00996   0x0374, 0x0375,
00997   0x037a, 0x037a,
00998   0x037e, 0x037e,
00999   0x0384, 0x038a,
01000   0x038c, 0x038c,
01001   0x038e, 0x03a1,
01002   0x03a3, 0x03ce,
01003   0x03d0, 0x03fb,
01004   0x0400, 0x0486,
01005   0x0488, 0x04ce,
01006   0x04d0, 0x04f5,
01007   0x04f8, 0x04f9,
01008   0x0500, 0x050f,
01009   0x0531, 0x0556,
01010   0x0559, 0x055f,
01011   0x0561, 0x0587,
01012   0x0589, 0x058a,
01013   0x0591, 0x05a1,
01014   0x05a3, 0x05b9,
01015   0x05bb, 0x05c4,
01016   0x05d0, 0x05ea,
01017   0x05f0, 0x05f4,
01018   0x0600, 0x0603,
01019   0x060c, 0x0615,
01020   0x061b, 0x061b,
01021   0x061f, 0x061f,
01022   0x0621, 0x063a,
01023   0x0640, 0x0658,
01024   0x0660, 0x070d,
01025   0x070f, 0x074a,
01026   0x074d, 0x074f,
01027   0x0780, 0x07b1,
01028   0x0901, 0x0939,
01029   0x093c, 0x094d,
01030   0x0950, 0x0954,
01031   0x0958, 0x0970,
01032   0x0981, 0x0983,
01033   0x0985, 0x098c,
01034   0x098f, 0x0990,
01035   0x0993, 0x09a8,
01036   0x09aa, 0x09b0,
01037   0x09b2, 0x09b2,
01038   0x09b6, 0x09b9,
01039   0x09bc, 0x09c4,
01040   0x09c7, 0x09c8,
01041   0x09cb, 0x09cd,
01042   0x09d7, 0x09d7,
01043   0x09dc, 0x09dd,
01044   0x09df, 0x09e3,
01045   0x09e6, 0x09fa,
01046   0x0a01, 0x0a03,
01047   0x0a05, 0x0a0a,
01048   0x0a0f, 0x0a10,
01049   0x0a13, 0x0a28,
01050   0x0a2a, 0x0a30,
01051   0x0a32, 0x0a33,
01052   0x0a35, 0x0a36,
01053   0x0a38, 0x0a39,
01054   0x0a3c, 0x0a3c,
01055   0x0a3e, 0x0a42,
01056   0x0a47, 0x0a48,
01057   0x0a4b, 0x0a4d,
01058   0x0a59, 0x0a5c,
01059   0x0a5e, 0x0a5e,
01060   0x0a66, 0x0a74,
01061   0x0a81, 0x0a83,
01062   0x0a85, 0x0a8d,
01063   0x0a8f, 0x0a91,
01064   0x0a93, 0x0aa8,
01065   0x0aaa, 0x0ab0,
01066   0x0ab2, 0x0ab3,
01067   0x0ab5, 0x0ab9,
01068   0x0abc, 0x0ac5,
01069   0x0ac7, 0x0ac9,
01070   0x0acb, 0x0acd,
01071   0x0ad0, 0x0ad0,
01072   0x0ae0, 0x0ae3,
01073   0x0ae6, 0x0aef,
01074   0x0af1, 0x0af1,
01075   0x0b01, 0x0b03,
01076   0x0b05, 0x0b0c,
01077   0x0b0f, 0x0b10,
01078   0x0b13, 0x0b28,
01079   0x0b2a, 0x0b30,
01080   0x0b32, 0x0b33,
01081   0x0b35, 0x0b39,
01082   0x0b3c, 0x0b43,
01083   0x0b47, 0x0b48,
01084   0x0b4b, 0x0b4d,
01085   0x0b56, 0x0b57,
01086   0x0b5c, 0x0b5d,
01087   0x0b5f, 0x0b61,
01088   0x0b66, 0x0b71,
01089   0x0b82, 0x0b83,
01090   0x0b85, 0x0b8a,
01091   0x0b8e, 0x0b90,
01092   0x0b92, 0x0b95,
01093   0x0b99, 0x0b9a,
01094   0x0b9c, 0x0b9c,
01095   0x0b9e, 0x0b9f,
01096   0x0ba3, 0x0ba4,
01097   0x0ba8, 0x0baa,
01098   0x0bae, 0x0bb5,
01099   0x0bb7, 0x0bb9,
01100   0x0bbe, 0x0bc2,
01101   0x0bc6, 0x0bc8,
01102   0x0bca, 0x0bcd,
01103   0x0bd7, 0x0bd7,
01104   0x0be7, 0x0bfa,
01105   0x0c01, 0x0c03,
01106   0x0c05, 0x0c0c,
01107   0x0c0e, 0x0c10,
01108   0x0c12, 0x0c28,
01109   0x0c2a, 0x0c33,
01110   0x0c35, 0x0c39,
01111   0x0c3e, 0x0c44,
01112   0x0c46, 0x0c48,
01113   0x0c4a, 0x0c4d,
01114   0x0c55, 0x0c56,
01115   0x0c60, 0x0c61,
01116   0x0c66, 0x0c6f,
01117   0x0c82, 0x0c83,
01118   0x0c85, 0x0c8c,
01119   0x0c8e, 0x0c90,
01120   0x0c92, 0x0ca8,
01121   0x0caa, 0x0cb3,
01122   0x0cb5, 0x0cb9,
01123   0x0cbc, 0x0cc4,
01124   0x0cc6, 0x0cc8,
01125   0x0cca, 0x0ccd,
01126   0x0cd5, 0x0cd6,
01127   0x0cde, 0x0cde,
01128   0x0ce0, 0x0ce1,
01129   0x0ce6, 0x0cef,
01130   0x0d02, 0x0d03,
01131   0x0d05, 0x0d0c,
01132   0x0d0e, 0x0d10,
01133   0x0d12, 0x0d28,
01134   0x0d2a, 0x0d39,
01135   0x0d3e, 0x0d43,
01136   0x0d46, 0x0d48,
01137   0x0d4a, 0x0d4d,
01138   0x0d57, 0x0d57,
01139   0x0d60, 0x0d61,
01140   0x0d66, 0x0d6f,
01141   0x0d82, 0x0d83,
01142   0x0d85, 0x0d96,
01143   0x0d9a, 0x0db1,
01144   0x0db3, 0x0dbb,
01145   0x0dbd, 0x0dbd,
01146   0x0dc0, 0x0dc6,
01147   0x0dca, 0x0dca,
01148   0x0dcf, 0x0dd4,
01149   0x0dd6, 0x0dd6,
01150   0x0dd8, 0x0ddf,
01151   0x0df2, 0x0df4,
01152   0x0e01, 0x0e3a,
01153   0x0e3f, 0x0e5b,
01154   0x0e81, 0x0e82,
01155   0x0e84, 0x0e84,
01156   0x0e87, 0x0e88,
01157   0x0e8a, 0x0e8a,
01158   0x0e8d, 0x0e8d,
01159   0x0e94, 0x0e97,
01160   0x0e99, 0x0e9f,
01161   0x0ea1, 0x0ea3,
01162   0x0ea5, 0x0ea5,
01163   0x0ea7, 0x0ea7,
01164   0x0eaa, 0x0eab,
01165   0x0ead, 0x0eb9,
01166   0x0ebb, 0x0ebd,
01167   0x0ec0, 0x0ec4,
01168   0x0ec6, 0x0ec6,
01169   0x0ec8, 0x0ecd,
01170   0x0ed0, 0x0ed9,
01171   0x0edc, 0x0edd,
01172   0x0f00, 0x0f47,
01173   0x0f49, 0x0f6a,
01174   0x0f71, 0x0f8b,
01175   0x0f90, 0x0f97,
01176   0x0f99, 0x0fbc,
01177   0x0fbe, 0x0fcc,
01178   0x0fcf, 0x0fcf,
01179   0x1000, 0x1021,
01180   0x1023, 0x1027,
01181   0x1029, 0x102a,
01182   0x102c, 0x1032,
01183   0x1036, 0x1039,
01184   0x1040, 0x1059,
01185   0x10a0, 0x10c5,
01186   0x10d0, 0x10f8,
01187   0x10fb, 0x10fb,
01188   0x1100, 0x1159,
01189   0x115f, 0x11a2,
01190   0x11a8, 0x11f9,
01191   0x1200, 0x1206,
01192   0x1208, 0x1246,
01193   0x1248, 0x1248,
01194   0x124a, 0x124d,
01195   0x1250, 0x1256,
01196   0x1258, 0x1258,
01197   0x125a, 0x125d,
01198   0x1260, 0x1286,
01199   0x1288, 0x1288,
01200   0x128a, 0x128d,
01201   0x1290, 0x12ae,
01202   0x12b0, 0x12b0,
01203   0x12b2, 0x12b5,
01204   0x12b8, 0x12be,
01205   0x12c0, 0x12c0,
01206   0x12c2, 0x12c5,
01207   0x12c8, 0x12ce,
01208   0x12d0, 0x12d6,
01209   0x12d8, 0x12ee,
01210   0x12f0, 0x130e,
01211   0x1310, 0x1310,
01212   0x1312, 0x1315,
01213   0x1318, 0x131e,
01214   0x1320, 0x1346,
01215   0x1348, 0x135a,
01216   0x1361, 0x137c,
01217   0x13a0, 0x13f4,
01218   0x1401, 0x1676,
01219   0x1681, 0x169c,
01220   0x16a0, 0x16f0,
01221   0x1700, 0x170c,
01222   0x170e, 0x1714,
01223   0x1720, 0x1736,
01224   0x1740, 0x1753,
01225   0x1760, 0x176c,
01226   0x176e, 0x1770,
01227   0x1772, 0x1773,
01228   0x1780, 0x17dd,
01229   0x17e0, 0x17e9,
01230   0x17f0, 0x17f9,
01231   0x1800, 0x180d,
01232   0x1810, 0x1819,
01233   0x1820, 0x1877,
01234   0x1880, 0x18a9,
01235   0x1900, 0x191c,
01236   0x1920, 0x192b,
01237   0x1930, 0x193b,
01238   0x1940, 0x1940,
01239   0x1944, 0x196d,
01240   0x1970, 0x1974,
01241   0x19e0, 0x19ff,
01242   0x1d00, 0x1d6b,
01243   0x1e00, 0x1e9b,
01244   0x1ea0, 0x1ef9,
01245   0x1f00, 0x1f15,
01246   0x1f18, 0x1f1d,
01247   0x1f20, 0x1f45,
01248   0x1f48, 0x1f4d,
01249   0x1f50, 0x1f57,
01250   0x1f59, 0x1f59,
01251   0x1f5b, 0x1f5b,
01252   0x1f5d, 0x1f5d,
01253   0x1f5f, 0x1f7d,
01254   0x1f80, 0x1fb4,
01255   0x1fb6, 0x1fc4,
01256   0x1fc6, 0x1fd3,
01257   0x1fd6, 0x1fdb,
01258   0x1fdd, 0x1fef,
01259   0x1ff2, 0x1ff4,
01260   0x1ff6, 0x1ffe,
01261   0x200b, 0x2027,
01262   0x202a, 0x202e,
01263   0x2030, 0x2054,
01264   0x2057, 0x2057,
01265   0x2060, 0x2063,
01266   0x206a, 0x2071,
01267   0x2074, 0x208e,
01268   0x20a0, 0x20b1,
01269   0x20d0, 0x20ea,
01270   0x2100, 0x213b,
01271   0x213d, 0x214b,
01272   0x2153, 0x2183,
01273   0x2190, 0x23d0,
01274   0x2400, 0x2426,
01275   0x2440, 0x244a,
01276   0x2460, 0x2617,
01277   0x2619, 0x267d,
01278   0x2680, 0x2691,
01279   0x26a0, 0x26a1,
01280   0x2701, 0x2704,
01281   0x2706, 0x2709,
01282   0x270c, 0x2727,
01283   0x2729, 0x274b,
01284   0x274d, 0x274d,
01285   0x274f, 0x2752,
01286   0x2756, 0x2756,
01287   0x2758, 0x275e,
01288   0x2761, 0x2794,
01289   0x2798, 0x27af,
01290   0x27b1, 0x27be,
01291   0x27d0, 0x27eb,
01292   0x27f0, 0x2b0d,
01293   0x2e80, 0x2e99,
01294   0x2e9b, 0x2ef3,
01295   0x2f00, 0x2fd5,
01296   0x2ff0, 0x2ffb,
01297   0x3001, 0x303f,
01298   0x3041, 0x3096,
01299   0x3099, 0x30ff,
01300   0x3105, 0x312c,
01301   0x3131, 0x318e,
01302   0x3190, 0x31b7,
01303   0x31f0, 0x321e,
01304   0x3220, 0x3243,
01305   0x3250, 0x327d,
01306   0x327f, 0x32fe,
01307   0x3300, 0x4db5,
01308   0x4dc0, 0x9fa5,
01309   0xa000, 0xa48c,
01310   0xa490, 0xa4c6,
01311   0xac00, 0xd7a3,
01312   0xe000, 0xfa2d,
01313   0xfa30, 0xfa6a,
01314   0xfb00, 0xfb06,
01315   0xfb13, 0xfb17,
01316   0xfb1d, 0xfb36,
01317   0xfb38, 0xfb3c,
01318   0xfb3e, 0xfb3e,
01319   0xfb40, 0xfb41,
01320   0xfb43, 0xfb44,
01321   0xfb46, 0xfbb1,
01322   0xfbd3, 0xfd3f,
01323   0xfd50, 0xfd8f,
01324   0xfd92, 0xfdc7,
01325   0xfdf0, 0xfdfd,
01326   0xfe00, 0xfe0f,
01327   0xfe20, 0xfe23,
01328   0xfe30, 0xfe52,
01329   0xfe54, 0xfe66,
01330   0xfe68, 0xfe6b,
01331   0xfe70, 0xfe74,
01332   0xfe76, 0xfefc,
01333   0xfeff, 0xfeff,
01334   0xff01, 0xffbe,
01335   0xffc2, 0xffc7,
01336   0xffca, 0xffcf,
01337   0xffd2, 0xffd7,
01338   0xffda, 0xffdc,
01339   0xffe0, 0xffe6,
01340   0xffe8, 0xffee,
01341   0xfff9, 0xfffd,
01342   0x10000, 0x1000b,
01343   0x1000d, 0x10026,
01344   0x10028, 0x1003a,
01345   0x1003c, 0x1003d,
01346   0x1003f, 0x1004d,
01347   0x10050, 0x1005d,
01348   0x10080, 0x100fa,
01349   0x10100, 0x10102,
01350   0x10107, 0x10133,
01351   0x10137, 0x1013f,
01352   0x10300, 0x1031e,
01353   0x10320, 0x10323,
01354   0x10330, 0x1034a,
01355   0x10380, 0x1039d,
01356   0x1039f, 0x1039f,
01357   0x10400, 0x1049d,
01358   0x104a0, 0x104a9,
01359   0x10800, 0x10805,
01360   0x10808, 0x10808,
01361   0x1080a, 0x10835,
01362   0x10837, 0x10838,
01363   0x1083c, 0x1083c,
01364   0x1083f, 0x1083f,
01365   0x1d000, 0x1d0f5,
01366   0x1d100, 0x1d126,
01367   0x1d12a, 0x1d1dd,
01368   0x1d300, 0x1d356,
01369   0x1d400, 0x1d454,
01370   0x1d456, 0x1d49c,
01371   0x1d49e, 0x1d49f,
01372   0x1d4a2, 0x1d4a2,
01373   0x1d4a5, 0x1d4a6,
01374   0x1d4a9, 0x1d4ac,
01375   0x1d4ae, 0x1d4b9,
01376   0x1d4bb, 0x1d4bb,
01377   0x1d4bd, 0x1d4c3,
01378   0x1d4c5, 0x1d505,
01379   0x1d507, 0x1d50a,
01380   0x1d50d, 0x1d514,
01381   0x1d516, 0x1d51c,
01382   0x1d51e, 0x1d539,
01383   0x1d53b, 0x1d53e,
01384   0x1d540, 0x1d544,
01385   0x1d546, 0x1d546,
01386   0x1d54a, 0x1d550,
01387   0x1d552, 0x1d6a3,
01388   0x1d6a8, 0x1d7c9,
01389   0x1d7ce, 0x1d7ff,
01390   0x20000, 0x2a6d6,
01391   0x2f800, 0x2fa1d,
01392   0xe0001, 0xe0001,
01393   0xe0020, 0xe007f,
01394   0xe0100, 0xe01ef,
01395   0xf0000, 0xffffd,
01396   0x100000, 0x10fffd
01397 #endif /* USE_UNICODE_FULL_RANGE_CTYPE */
01398 }; /* end of CRGraph */
01399 
01400 static const OnigCodePoint CRLower[] = {
01401 #ifdef USE_UNICODE_FULL_RANGE_CTYPE
01402   424,
01403 #else
01404   6,
01405 #endif
01406   0x0061, 0x007a,
01407   0x00aa, 0x00aa,
01408   0x00b5, 0x00b5,
01409   0x00ba, 0x00ba,
01410   0x00df, 0x00f6,
01411   0x00f8, 0x00ff
01412 #ifdef USE_UNICODE_FULL_RANGE_CTYPE
01413   ,
01414   0x0101, 0x0101,
01415   0x0103, 0x0103,
01416   0x0105, 0x0105,
01417   0x0107, 0x0107,
01418   0x0109, 0x0109,
01419   0x010b, 0x010b,
01420   0x010d, 0x010d,
01421   0x010f, 0x010f,
01422   0x0111, 0x0111,
01423   0x0113, 0x0113,
01424   0x0115, 0x0115,
01425   0x0117, 0x0117,
01426   0x0119, 0x0119,
01427   0x011b, 0x011b,
01428   0x011d, 0x011d,
01429   0x011f, 0x011f,
01430   0x0121, 0x0121,
01431   0x0123, 0x0123,
01432   0x0125, 0x0125,
01433   0x0127, 0x0127,
01434   0x0129, 0x0129,
01435   0x012b, 0x012b,
01436   0x012d, 0x012d,
01437   0x012f, 0x012f,
01438   0x0131, 0x0131,
01439   0x0133, 0x0133,
01440   0x0135, 0x0135,
01441   0x0137, 0x0138,
01442   0x013a, 0x013a,
01443   0x013c, 0x013c,
01444   0x013e, 0x013e,
01445   0x0140, 0x0140,
01446   0x0142, 0x0142,
01447   0x0144, 0x0144,
01448   0x0146, 0x0146,
01449   0x0148, 0x0149,
01450   0x014b, 0x014b,
01451   0x014d, 0x014d,
01452   0x014f, 0x014f,
01453   0x0151, 0x0151,
01454   0x0153, 0x0153,
01455   0x0155, 0x0155,
01456   0x0157, 0x0157,
01457   0x0159, 0x0159,
01458   0x015b, 0x015b,
01459   0x015d, 0x015d,
01460   0x015f, 0x015f,
01461   0x0161, 0x0161,
01462   0x0163, 0x0163,
01463   0x0165, 0x0165,
01464   0x0167, 0x0167,
01465   0x0169, 0x0169,
01466   0x016b, 0x016b,
01467   0x016d, 0x016d,
01468   0x016f, 0x016f,
01469   0x0171, 0x0171,
01470   0x0173, 0x0173,
01471   0x0175, 0x0175,
01472   0x0177, 0x0177,
01473   0x017a, 0x017a,
01474   0x017c, 0x017c,
01475   0x017e, 0x0180,
01476   0x0183, 0x0183,
01477   0x0185, 0x0185,
01478   0x0188, 0x0188,
01479   0x018c, 0x018d,
01480   0x0192, 0x0192,
01481   0x0195, 0x0195,
01482   0x0199, 0x019b,
01483   0x019e, 0x019e,
01484   0x01a1, 0x01a1,
01485   0x01a3, 0x01a3,
01486   0x01a5, 0x01a5,
01487   0x01a8, 0x01a8,
01488   0x01aa, 0x01ab,
01489   0x01ad, 0x01ad,
01490   0x01b0, 0x01b0,
01491   0x01b4, 0x01b4,
01492   0x01b6, 0x01b6,
01493   0x01b9, 0x01ba,
01494   0x01bd, 0x01bf,
01495   0x01c6, 0x01c6,
01496   0x01c9, 0x01c9,
01497   0x01cc, 0x01cc,
01498   0x01ce, 0x01ce,
01499   0x01d0, 0x01d0,
01500   0x01d2, 0x01d2,
01501   0x01d4, 0x01d4,
01502   0x01d6, 0x01d6,
01503   0x01d8, 0x01d8,
01504   0x01da, 0x01da,
01505   0x01dc, 0x01dd,
01506   0x01df, 0x01df,
01507   0x01e1, 0x01e1,
01508   0x01e3, 0x01e3,
01509   0x01e5, 0x01e5,
01510   0x01e7, 0x01e7,
01511   0x01e9, 0x01e9,
01512   0x01eb, 0x01eb,
01513   0x01ed, 0x01ed,
01514   0x01ef, 0x01f0,
01515   0x01f3, 0x01f3,
01516   0x01f5, 0x01f5,
01517   0x01f9, 0x01f9,
01518   0x01fb, 0x01fb,
01519   0x01fd, 0x01fd,
01520   0x01ff, 0x01ff,
01521   0x0201, 0x0201,
01522   0x0203, 0x0203,
01523   0x0205, 0x0205,
01524   0x0207, 0x0207,
01525   0x0209, 0x0209,
01526   0x020b, 0x020b,
01527   0x020d, 0x020d,
01528   0x020f, 0x020f,
01529   0x0211, 0x0211,
01530   0x0213, 0x0213,
01531   0x0215, 0x0215,
01532   0x0217, 0x0217,
01533   0x0219, 0x0219,
01534   0x021b, 0x021b,
01535   0x021d, 0x021d,
01536   0x021f, 0x021f,
01537   0x0221, 0x0221,
01538   0x0223, 0x0223,
01539   0x0225, 0x0225,
01540   0x0227, 0x0227,
01541   0x0229, 0x0229,
01542   0x022b, 0x022b,
01543   0x022d, 0x022d,
01544   0x022f, 0x022f,
01545   0x0231, 0x0231,
01546   0x0233, 0x0236,
01547   0x0250, 0x02af,
01548   0x0390, 0x0390,
01549   0x03ac, 0x03ce,
01550   0x03d0, 0x03d1,
01551   0x03d5, 0x03d7,
01552   0x03d9, 0x03d9,
01553   0x03db, 0x03db,
01554   0x03dd, 0x03dd,
01555   0x03df, 0x03df,
01556   0x03e1, 0x03e1,
01557   0x03e3, 0x03e3,
01558   0x03e5, 0x03e5,
01559   0x03e7, 0x03e7,
01560   0x03e9, 0x03e9,
01561   0x03eb, 0x03eb,
01562   0x03ed, 0x03ed,
01563   0x03ef, 0x03f3,
01564   0x03f5, 0x03f5,
01565   0x03f8, 0x03f8,
01566   0x03fb, 0x03fb,
01567   0x0430, 0x045f,
01568   0x0461, 0x0461,
01569   0x0463, 0x0463,
01570   0x0465, 0x0465,
01571   0x0467, 0x0467,
01572   0x0469, 0x0469,
01573   0x046b, 0x046b,
01574   0x046d, 0x046d,
01575   0x046f, 0x046f,
01576   0x0471, 0x0471,
01577   0x0473, 0x0473,
01578   0x0475, 0x0475,
01579   0x0477, 0x0477,
01580   0x0479, 0x0479,
01581   0x047b, 0x047b,
01582   0x047d, 0x047d,
01583   0x047f, 0x047f,
01584   0x0481, 0x0481,
01585   0x048b, 0x048b,
01586   0x048d, 0x048d,
01587   0x048f, 0x048f,
01588   0x0491, 0x0491,
01589   0x0493, 0x0493,
01590   0x0495, 0x0495,
01591   0x0497, 0x0497,
01592   0x0499, 0x0499,
01593   0x049b, 0x049b,
01594   0x049d, 0x049d,
01595   0x049f, 0x049f,
01596   0x04a1, 0x04a1,
01597   0x04a3, 0x04a3,
01598   0x04a5, 0x04a5,
01599   0x04a7, 0x04a7,
01600   0x04a9, 0x04a9,
01601   0x04ab, 0x04ab,
01602   0x04ad, 0x04ad,
01603   0x04af, 0x04af,
01604   0x04b1, 0x04b1,
01605   0x04b3, 0x04b3,
01606   0x04b5, 0x04b5,
01607   0x04b7, 0x04b7,
01608   0x04b9, 0x04b9,
01609   0x04bb, 0x04bb,
01610   0x04bd, 0x04bd,
01611   0x04bf, 0x04bf,
01612   0x04c2, 0x04c2,
01613   0x04c4, 0x04c4,
01614   0x04c6, 0x04c6,
01615   0x04c8, 0x04c8,
01616   0x04ca, 0x04ca,
01617   0x04cc, 0x04cc,
01618   0x04ce, 0x04ce,
01619   0x04d1, 0x04d1,
01620   0x04d3, 0x04d3,
01621   0x04d5, 0x04d5,
01622   0x04d7, 0x04d7,
01623   0x04d9, 0x04d9,
01624   0x04db, 0x04db,
01625   0x04dd, 0x04dd,
01626   0x04df, 0x04df,
01627   0x04e1, 0x04e1,
01628   0x04e3, 0x04e3,
01629   0x04e5, 0x04e5,
01630   0x04e7, 0x04e7,
01631   0x04e9, 0x04e9,
01632   0x04eb, 0x04eb,
01633   0x04ed, 0x04ed,
01634   0x04ef, 0x04ef,
01635   0x04f1, 0x04f1,
01636   0x04f3, 0x04f3,
01637   0x04f5, 0x04f5,
01638   0x04f9, 0x04f9,
01639   0x0501, 0x0501,
01640   0x0503, 0x0503,
01641   0x0505, 0x0505,
01642   0x0507, 0x0507,
01643   0x0509, 0x0509,
01644   0x050b, 0x050b,
01645   0x050d, 0x050d,
01646   0x050f, 0x050f,
01647   0x0561, 0x0587,
01648   0x1d00, 0x1d2b,
01649   0x1d62, 0x1d6b,
01650   0x1e01, 0x1e01,
01651   0x1e03, 0x1e03,
01652   0x1e05, 0x1e05,
01653   0x1e07, 0x1e07,
01654   0x1e09, 0x1e09,
01655   0x1e0b, 0x1e0b,
01656   0x1e0d, 0x1e0d,
01657   0x1e0f, 0x1e0f,
01658   0x1e11, 0x1e11,
01659   0x1e13, 0x1e13,
01660   0x1e15, 0x1e15,
01661   0x1e17, 0x1e17,
01662   0x1e19, 0x1e19,
01663   0x1e1b, 0x1e1b,
01664   0x1e1d, 0x1e1d,
01665   0x1e1f, 0x1e1f,
01666   0x1e21, 0x1e21,
01667   0x1e23, 0x1e23,
01668   0x1e25, 0x1e25,
01669   0x1e27, 0x1e27,
01670   0x1e29, 0x1e29,
01671   0x1e2b, 0x1e2b,
01672   0x1e2d, 0x1e2d,
01673   0x1e2f, 0x1e2f,
01674   0x1e31, 0x1e31,
01675   0x1e33, 0x1e33,
01676   0x1e35, 0x1e35,
01677   0x1e37, 0x1e37,
01678   0x1e39, 0x1e39,
01679   0x1e3b, 0x1e3b,
01680   0x1e3d, 0x1e3d,
01681   0x1e3f, 0x1e3f,
01682   0x1e41, 0x1e41,
01683   0x1e43, 0x1e43,
01684   0x1e45, 0x1e45,
01685   0x1e47, 0x1e47,
01686   0x1e49, 0x1e49,
01687   0x1e4b, 0x1e4b,
01688   0x1e4d, 0x1e4d,
01689   0x1e4f, 0x1e4f,
01690   0x1e51, 0x1e51,
01691   0x1e53, 0x1e53,
01692   0x1e55, 0x1e55,
01693   0x1e57, 0x1e57,
01694   0x1e59, 0x1e59,
01695   0x1e5b, 0x1e5b,
01696   0x1e5d, 0x1e5d,
01697   0x1e5f, 0x1e5f,
01698   0x1e61, 0x1e61,
01699   0x1e63, 0x1e63,
01700   0x1e65, 0x1e65,
01701   0x1e67, 0x1e67,
01702   0x1e69, 0x1e69,
01703   0x1e6b, 0x1e6b,
01704   0x1e6d, 0x1e6d,
01705   0x1e6f, 0x1e6f,
01706   0x1e71, 0x1e71,
01707   0x1e73, 0x1e73,
01708   0x1e75, 0x1e75,
01709   0x1e77, 0x1e77,
01710   0x1e79, 0x1e79,
01711   0x1e7b, 0x1e7b,
01712   0x1e7d, 0x1e7d,
01713   0x1e7f, 0x1e7f,
01714   0x1e81, 0x1e81,
01715   0x1e83, 0x1e83,
01716   0x1e85, 0x1e85,
01717   0x1e87, 0x1e87,
01718   0x1e89, 0x1e89,
01719   0x1e8b, 0x1e8b,
01720   0x1e8d, 0x1e8d,
01721   0x1e8f, 0x1e8f,
01722   0x1e91, 0x1e91,
01723   0x1e93, 0x1e93,
01724   0x1e95, 0x1e9b,
01725   0x1ea1, 0x1ea1,
01726   0x1ea3, 0x1ea3,
01727   0x1ea5, 0x1ea5,
01728   0x1ea7, 0x1ea7,
01729   0x1ea9, 0x1ea9,
01730   0x1eab, 0x1eab,
01731   0x1ead, 0x1ead,
01732   0x1eaf, 0x1eaf,
01733   0x1eb1, 0x1eb1,
01734   0x1eb3, 0x1eb3,
01735   0x1eb5, 0x1eb5,
01736   0x1eb7, 0x1eb7,
01737   0x1eb9, 0x1eb9,
01738   0x1ebb, 0x1ebb,
01739   0x1ebd, 0x1ebd,
01740   0x1ebf, 0x1ebf,
01741   0x1ec1, 0x1ec1,
01742   0x1ec3, 0x1ec3,
01743   0x1ec5, 0x1ec5,
01744   0x1ec7, 0x1ec7,
01745   0x1ec9, 0x1ec9,
01746   0x1ecb, 0x1ecb,
01747   0x1ecd, 0x1ecd,
01748   0x1ecf, 0x1ecf,
01749   0x1ed1, 0x1ed1,
01750   0x1ed3, 0x1ed3,
01751   0x1ed5, 0x1ed5,
01752   0x1ed7, 0x1ed7,
01753   0x1ed9, 0x1ed9,
01754   0x1edb, 0x1edb,
01755   0x1edd, 0x1edd,
01756   0x1edf, 0x1edf,
01757   0x1ee1, 0x1ee1,
01758   0x1ee3, 0x1ee3,
01759   0x1ee5, 0x1ee5,
01760   0x1ee7, 0x1ee7,
01761   0x1ee9, 0x1ee9,
01762   0x1eeb, 0x1eeb,
01763   0x1eed, 0x1eed,
01764   0x1eef, 0x1eef,
01765   0x1ef1, 0x1ef1,
01766   0x1ef3, 0x1ef3,
01767   0x1ef5, 0x1ef5,
01768   0x1ef7, 0x1ef7,
01769   0x1ef9, 0x1ef9,
01770   0x1f00, 0x1f07,
01771   0x1f10, 0x1f15,
01772   0x1f20, 0x1f27,
01773   0x1f30, 0x1f37,
01774   0x1f40, 0x1f45,
01775   0x1f50, 0x1f57,
01776   0x1f60, 0x1f67,
01777   0x1f70, 0x1f7d,
01778   0x1f80, 0x1f87,
01779   0x1f90, 0x1f97,
01780   0x1fa0, 0x1fa7,
01781   0x1fb0, 0x1fb4,
01782   0x1fb6, 0x1fb7,
01783   0x1fbe, 0x1fbe,
01784   0x1fc2, 0x1fc4,
01785   0x1fc6, 0x1fc7,
01786   0x1fd0, 0x1fd3,
01787   0x1fd6, 0x1fd7,
01788   0x1fe0, 0x1fe7,
01789   0x1ff2, 0x1ff4,
01790   0x1ff6, 0x1ff7,
01791   0x2071, 0x2071,
01792   0x207f, 0x207f,
01793   0x210a, 0x210a,
01794   0x210e, 0x210f,
01795   0x2113, 0x2113,
01796   0x212f, 0x212f,
01797   0x2134, 0x2134,
01798   0x2139, 0x2139,
01799   0x213d, 0x213d,
01800   0x2146, 0x2149,
01801   0xfb00, 0xfb06,
01802   0xfb13, 0xfb17,
01803   0xff41, 0xff5a,
01804   0x10428, 0x1044f,
01805   0x1d41a, 0x1d433,
01806   0x1d44e, 0x1d454,
01807   0x1d456, 0x1d467,
01808   0x1d482, 0x1d49b,
01809   0x1d4b6, 0x1d4b9,
01810   0x1d4bb, 0x1d4bb,
01811   0x1d4bd, 0x1d4c3,
01812   0x1d4c5, 0x1d4cf,
01813   0x1d4ea, 0x1d503,
01814   0x1d51e, 0x1d537,
01815   0x1d552, 0x1d56b,
01816   0x1d586, 0x1d59f,
01817   0x1d5ba, 0x1d5d3,
01818   0x1d5ee, 0x1d607,
01819   0x1d622, 0x1d63b,
01820   0x1d656, 0x1d66f,
01821   0x1d68a, 0x1d6a3,
01822   0x1d6c2, 0x1d6da,
01823   0x1d6dc, 0x1d6e1,
01824   0x1d6fc, 0x1d714,
01825   0x1d716, 0x1d71b,
01826   0x1d736, 0x1d74e,
01827   0x1d750, 0x1d755,
01828   0x1d770, 0x1d788,
01829   0x1d78a, 0x1d78f,
01830   0x1d7aa, 0x1d7c2,
01831   0x1d7c4, 0x1d7c9
01832 #endif /* USE_UNICODE_FULL_RANGE_CTYPE */
01833 }; /* end of CRLower */
01834 
01835 static const OnigCodePoint CRPrint[] = {
01836 #ifdef USE_UNICODE_FULL_RANGE_CTYPE
01837   405,
01838 #else
01839   4,
01840 #endif
01841   0x0009, 0x000d,
01842   0x0020, 0x007e,
01843   0x0085, 0x0085,
01844   0x00a0, 0x0236
01845 #ifdef USE_UNICODE_FULL_RANGE_CTYPE
01846   ,
01847   0x0250, 0x0357,
01848   0x035d, 0x036f,
01849   0x0374, 0x0375,
01850   0x037a, 0x037a,
01851   0x037e, 0x037e,
01852   0x0384, 0x038a,
01853   0x038c, 0x038c,
01854   0x038e, 0x03a1,
01855   0x03a3, 0x03ce,
01856   0x03d0, 0x03fb,
01857   0x0400, 0x0486,
01858   0x0488, 0x04ce,
01859   0x04d0, 0x04f5,
01860   0x04f8, 0x04f9,
01861   0x0500, 0x050f,
01862   0x0531, 0x0556,
01863   0x0559, 0x055f,
01864   0x0561, 0x0587,
01865   0x0589, 0x058a,
01866   0x0591, 0x05a1,
01867   0x05a3, 0x05b9,
01868   0x05bb, 0x05c4,
01869   0x05d0, 0x05ea,
01870   0x05f0, 0x05f4,
01871   0x0600, 0x0603,
01872   0x060c, 0x0615,
01873   0x061b, 0x061b,
01874   0x061f, 0x061f,
01875   0x0621, 0x063a,
01876   0x0640, 0x0658,
01877   0x0660, 0x070d,
01878   0x070f, 0x074a,
01879   0x074d, 0x074f,
01880   0x0780, 0x07b1,
01881   0x0901, 0x0939,
01882   0x093c, 0x094d,
01883   0x0950, 0x0954,
01884   0x0958, 0x0970,
01885   0x0981, 0x0983,
01886   0x0985, 0x098c,
01887   0x098f, 0x0990,
01888   0x0993, 0x09a8,
01889   0x09aa, 0x09b0,
01890   0x09b2, 0x09b2,
01891   0x09b6, 0x09b9,
01892   0x09bc, 0x09c4,
01893   0x09c7, 0x09c8,
01894   0x09cb, 0x09cd,
01895   0x09d7, 0x09d7,
01896   0x09dc, 0x09dd,
01897   0x09df, 0x09e3,
01898   0x09e6, 0x09fa,
01899   0x0a01, 0x0a03,
01900   0x0a05, 0x0a0a,
01901   0x0a0f, 0x0a10,
01902   0x0a13, 0x0a28,
01903   0x0a2a, 0x0a30,
01904   0x0a32, 0x0a33,
01905   0x0a35, 0x0a36,
01906   0x0a38, 0x0a39,
01907   0x0a3c, 0x0a3c,
01908   0x0a3e, 0x0a42,
01909   0x0a47, 0x0a48,
01910   0x0a4b, 0x0a4d,
01911   0x0a59, 0x0a5c,
01912   0x0a5e, 0x0a5e,
01913   0x0a66, 0x0a74,
01914   0x0a81, 0x0a83,
01915   0x0a85, 0x0a8d,
01916   0x0a8f, 0x0a91,
01917   0x0a93, 0x0aa8,
01918   0x0aaa, 0x0ab0,
01919   0x0ab2, 0x0ab3,
01920   0x0ab5, 0x0ab9,
01921   0x0abc, 0x0ac5,
01922   0x0ac7, 0x0ac9,
01923   0x0acb, 0x0acd,
01924   0x0ad0, 0x0ad0,
01925   0x0ae0, 0x0ae3,
01926   0x0ae6, 0x0aef,
01927   0x0af1, 0x0af1,
01928   0x0b01, 0x0b03,
01929   0x0b05, 0x0b0c,
01930   0x0b0f, 0x0b10,
01931   0x0b13, 0x0b28,
01932   0x0b2a, 0x0b30,
01933   0x0b32, 0x0b33,
01934   0x0b35, 0x0b39,
01935   0x0b3c, 0x0b43,
01936   0x0b47, 0x0b48,
01937   0x0b4b, 0x0b4d,
01938   0x0b56, 0x0b57,
01939   0x0b5c, 0x0b5d,
01940   0x0b5f, 0x0b61,
01941   0x0b66, 0x0b71,
01942   0x0b82, 0x0b83,
01943   0x0b85, 0x0b8a,
01944   0x0b8e, 0x0b90,
01945   0x0b92, 0x0b95,
01946   0x0b99, 0x0b9a,
01947   0x0b9c, 0x0b9c,
01948   0x0b9e, 0x0b9f,
01949   0x0ba3, 0x0ba4,
01950   0x0ba8, 0x0baa,
01951   0x0bae, 0x0bb5,
01952   0x0bb7, 0x0bb9,
01953   0x0bbe, 0x0bc2,
01954   0x0bc6, 0x0bc8,
01955   0x0bca, 0x0bcd,
01956   0x0bd7, 0x0bd7,
01957   0x0be7, 0x0bfa,
01958   0x0c01, 0x0c03,
01959   0x0c05, 0x0c0c,
01960   0x0c0e, 0x0c10,
01961   0x0c12, 0x0c28,
01962   0x0c2a, 0x0c33,
01963   0x0c35, 0x0c39,
01964   0x0c3e, 0x0c44,
01965   0x0c46, 0x0c48,
01966   0x0c4a, 0x0c4d,
01967   0x0c55, 0x0c56,
01968   0x0c60, 0x0c61,
01969   0x0c66, 0x0c6f,
01970   0x0c82, 0x0c83,
01971   0x0c85, 0x0c8c,
01972   0x0c8e, 0x0c90,
01973   0x0c92, 0x0ca8,
01974   0x0caa, 0x0cb3,
01975   0x0cb5, 0x0cb9,
01976   0x0cbc, 0x0cc4,
01977   0x0cc6, 0x0cc8,
01978   0x0cca, 0x0ccd,
01979   0x0cd5, 0x0cd6,
01980   0x0cde, 0x0cde,
01981   0x0ce0, 0x0ce1,
01982   0x0ce6, 0x0cef,
01983   0x0d02, 0x0d03,
01984   0x0d05, 0x0d0c,
01985   0x0d0e, 0x0d10,
01986   0x0d12, 0x0d28,
01987   0x0d2a, 0x0d39,
01988   0x0d3e, 0x0d43,
01989   0x0d46, 0x0d48,
01990   0x0d4a, 0x0d4d,
01991   0x0d57, 0x0d57,
01992   0x0d60, 0x0d61,
01993   0x0d66, 0x0d6f,
01994   0x0d82, 0x0d83,
01995   0x0d85, 0x0d96,
01996   0x0d9a, 0x0db1,
01997   0x0db3, 0x0dbb,
01998   0x0dbd, 0x0dbd,
01999   0x0dc0, 0x0dc6,
02000   0x0dca, 0x0dca,
02001   0x0dcf, 0x0dd4,
02002   0x0dd6, 0x0dd6,
02003   0x0dd8, 0x0ddf,
02004   0x0df2, 0x0df4,
02005   0x0e01, 0x0e3a,
02006   0x0e3f, 0x0e5b,
02007   0x0e81, 0x0e82,
02008   0x0e84, 0x0e84,
02009   0x0e87, 0x0e88,
02010   0x0e8a, 0x0e8a,
02011   0x0e8d, 0x0e8d,
02012   0x0e94, 0x0e97,
02013   0x0e99, 0x0e9f,
02014   0x0ea1, 0x0ea3,
02015   0x0ea5, 0x0ea5,
02016   0x0ea7, 0x0ea7,
02017   0x0eaa, 0x0eab,
02018   0x0ead, 0x0eb9,
02019   0x0ebb, 0x0ebd,
02020   0x0ec0, 0x0ec4,
02021   0x0ec6, 0x0ec6,
02022   0x0ec8, 0x0ecd,
02023   0x0ed0, 0x0ed9,
02024   0x0edc, 0x0edd,
02025   0x0f00, 0x0f47,
02026   0x0f49, 0x0f6a,
02027   0x0f71, 0x0f8b,
02028   0x0f90, 0x0f97,
02029   0x0f99, 0x0fbc,
02030   0x0fbe, 0x0fcc,
02031   0x0fcf, 0x0fcf,
02032   0x1000, 0x1021,
02033   0x1023, 0x1027,
02034   0x1029, 0x102a,
02035   0x102c, 0x1032,
02036   0x1036, 0x1039,
02037   0x1040, 0x1059,
02038   0x10a0, 0x10c5,
02039   0x10d0, 0x10f8,
02040   0x10fb, 0x10fb,
02041   0x1100, 0x1159,
02042   0x115f, 0x11a2,
02043   0x11a8, 0x11f9,
02044   0x1200, 0x1206,
02045   0x1208, 0x1246,
02046   0x1248, 0x1248,
02047   0x124a, 0x124d,
02048   0x1250, 0x1256,
02049   0x1258, 0x1258,
02050   0x125a, 0x125d,
02051   0x1260, 0x1286,
02052   0x1288, 0x1288,
02053   0x128a, 0x128d,
02054   0x1290, 0x12ae,
02055   0x12b0, 0x12b0,
02056   0x12b2, 0x12b5,
02057   0x12b8, 0x12be,
02058   0x12c0, 0x12c0,
02059   0x12c2, 0x12c5,
02060   0x12c8, 0x12ce,
02061   0x12d0, 0x12d6,
02062   0x12d8, 0x12ee,
02063   0x12f0, 0x130e,
02064   0x1310, 0x1310,
02065   0x1312, 0x1315,
02066   0x1318, 0x131e,
02067   0x1320, 0x1346,
02068   0x1348, 0x135a,
02069   0x1361, 0x137c,
02070   0x13a0, 0x13f4,
02071   0x1401, 0x1676,
02072   0x1680, 0x169c,
02073   0x16a0, 0x16f0,
02074   0x1700, 0x170c,
02075   0x170e, 0x1714,
02076   0x1720, 0x1736,
02077   0x1740, 0x1753,
02078   0x1760, 0x176c,
02079   0x176e, 0x1770,
02080   0x1772, 0x1773,
02081   0x1780, 0x17dd,
02082   0x17e0, 0x17e9,
02083   0x17f0, 0x17f9,
02084   0x1800, 0x180e,
02085   0x1810, 0x1819,
02086   0x1820, 0x1877,
02087   0x1880, 0x18a9,
02088   0x1900, 0x191c,
02089   0x1920, 0x192b,
02090   0x1930, 0x193b,
02091   0x1940, 0x1940,
02092   0x1944, 0x196d,
02093   0x1970, 0x1974,
02094   0x19e0, 0x19ff,
02095   0x1d00, 0x1d6b,
02096   0x1e00, 0x1e9b,
02097   0x1ea0, 0x1ef9,
02098   0x1f00, 0x1f15,
02099   0x1f18, 0x1f1d,
02100   0x1f20, 0x1f45,
02101   0x1f48, 0x1f4d,
02102   0x1f50, 0x1f57,
02103   0x1f59, 0x1f59,
02104   0x1f5b, 0x1f5b,
02105   0x1f5d, 0x1f5d,
02106   0x1f5f, 0x1f7d,
02107   0x1f80, 0x1fb4,
02108   0x1fb6, 0x1fc4,
02109   0x1fc6, 0x1fd3,
02110   0x1fd6, 0x1fdb,
02111   0x1fdd, 0x1fef,
02112   0x1ff2, 0x1ff4,
02113   0x1ff6, 0x1ffe,
02114   0x2000, 0x2054,
02115   0x2057, 0x2057,
02116   0x205f, 0x2063,
02117   0x206a, 0x2071,
02118   0x2074, 0x208e,
02119   0x20a0, 0x20b1,
02120   0x20d0, 0x20ea,
02121   0x2100, 0x213b,
02122   0x213d, 0x214b,
02123   0x2153, 0x2183,
02124   0x2190, 0x23d0,
02125   0x2400, 0x2426,
02126   0x2440, 0x244a,
02127   0x2460, 0x2617,
02128   0x2619, 0x267d,
02129   0x2680, 0x2691,
02130   0x26a0, 0x26a1,
02131   0x2701, 0x2704,
02132   0x2706, 0x2709,
02133   0x270c, 0x2727,
02134   0x2729, 0x274b,
02135   0x274d, 0x274d,
02136   0x274f, 0x2752,
02137   0x2756, 0x2756,
02138   0x2758, 0x275e,
02139   0x2761, 0x2794,
02140   0x2798, 0x27af,
02141   0x27b1, 0x27be,
02142   0x27d0, 0x27eb,
02143   0x27f0, 0x2b0d,
02144   0x2e80, 0x2e99,
02145   0x2e9b, 0x2ef3,
02146   0x2f00, 0x2fd5,
02147   0x2ff0, 0x2ffb,
02148   0x3000, 0x303f,
02149   0x3041, 0x3096,
02150   0x3099, 0x30ff,
02151   0x3105, 0x312c,
02152   0x3131, 0x318e,
02153   0x3190, 0x31b7,
02154   0x31f0, 0x321e,
02155   0x3220, 0x3243,
02156   0x3250, 0x327d,
02157   0x327f, 0x32fe,
02158   0x3300, 0x4db5,
02159   0x4dc0, 0x9fa5,
02160   0xa000, 0xa48c,
02161   0xa490, 0xa4c6,
02162   0xac00, 0xd7a3,
02163   0xe000, 0xfa2d,
02164   0xfa30, 0xfa6a,
02165   0xfb00, 0xfb06,
02166   0xfb13, 0xfb17,
02167   0xfb1d, 0xfb36,
02168   0xfb38, 0xfb3c,
02169   0xfb3e, 0xfb3e,
02170   0xfb40, 0xfb41,
02171   0xfb43, 0xfb44,
02172   0xfb46, 0xfbb1,
02173   0xfbd3, 0xfd3f,
02174   0xfd50, 0xfd8f,
02175   0xfd92, 0xfdc7,
02176   0xfdf0, 0xfdfd,
02177   0xfe00, 0xfe0f,
02178   0xfe20, 0xfe23,
02179   0xfe30, 0xfe52,
02180   0xfe54, 0xfe66,
02181   0xfe68, 0xfe6b,
02182   0xfe70, 0xfe74,
02183   0xfe76, 0xfefc,
02184   0xfeff, 0xfeff,
02185   0xff01, 0xffbe,
02186   0xffc2, 0xffc7,
02187   0xffca, 0xffcf,
02188   0xffd2, 0xffd7,
02189   0xffda, 0xffdc,
02190   0xffe0, 0xffe6,
02191   0xffe8, 0xffee,
02192   0xfff9, 0xfffd,
02193   0x10000, 0x1000b,
02194   0x1000d, 0x10026,
02195   0x10028, 0x1003a,
02196   0x1003c, 0x1003d,
02197   0x1003f, 0x1004d,
02198   0x10050, 0x1005d,
02199   0x10080, 0x100fa,
02200   0x10100, 0x10102,
02201   0x10107, 0x10133,
02202   0x10137, 0x1013f,
02203   0x10300, 0x1031e,
02204   0x10320, 0x10323,
02205   0x10330, 0x1034a,
02206   0x10380, 0x1039d,
02207   0x1039f, 0x1039f,
02208   0x10400, 0x1049d,
02209   0x104a0, 0x104a9,
02210   0x10800, 0x10805,
02211   0x10808, 0x10808,
02212   0x1080a, 0x10835,
02213   0x10837, 0x10838,
02214   0x1083c, 0x1083c,
02215   0x1083f, 0x1083f,
02216   0x1d000, 0x1d0f5,
02217   0x1d100, 0x1d126,
02218   0x1d12a, 0x1d1dd,
02219   0x1d300, 0x1d356,
02220   0x1d400, 0x1d454,
02221   0x1d456, 0x1d49c,
02222   0x1d49e, 0x1d49f,
02223   0x1d4a2, 0x1d4a2,
02224   0x1d4a5, 0x1d4a6,
02225   0x1d4a9, 0x1d4ac,
02226   0x1d4ae, 0x1d4b9,
02227   0x1d4bb, 0x1d4bb,
02228   0x1d4bd, 0x1d4c3,
02229   0x1d4c5, 0x1d505,
02230   0x1d507, 0x1d50a,
02231   0x1d50d, 0x1d514,
02232   0x1d516, 0x1d51c,
02233   0x1d51e, 0x1d539,
02234   0x1d53b, 0x1d53e,
02235   0x1d540, 0x1d544,
02236   0x1d546, 0x1d546,
02237   0x1d54a, 0x1d550,
02238   0x1d552, 0x1d6a3,
02239   0x1d6a8, 0x1d7c9,
02240   0x1d7ce, 0x1d7ff,
02241   0x20000, 0x2a6d6,
02242   0x2f800, 0x2fa1d,
02243   0xe0001, 0xe0001,
02244   0xe0020, 0xe007f,
02245   0xe0100, 0xe01ef,
02246   0xf0000, 0xffffd,
02247   0x100000, 0x10fffd
02248 #endif /* USE_UNICODE_FULL_RANGE_CTYPE */
02249 }; /* end of CRPrint */
02250 
02251 static const OnigCodePoint CRPunct[] = {
02252 #ifdef USE_UNICODE_FULL_RANGE_CTYPE
02253   86,
02254 #else
02255   14,
02256 #endif
02257   0x0021, 0x0023,
02258   0x0025, 0x002a,
02259   0x002c, 0x002f,
02260   0x003a, 0x003b,
02261   0x003f, 0x0040,
02262   0x005b, 0x005d,
02263   0x005f, 0x005f,
02264   0x007b, 0x007b,
02265   0x007d, 0x007d,
02266   0x00a1, 0x00a1,
02267   0x00ab, 0x00ab,
02268   0x00b7, 0x00b7,
02269   0x00bb, 0x00bb,
02270   0x00bf, 0x00bf
02271 #ifdef USE_UNICODE_FULL_RANGE_CTYPE
02272   ,
02273   0x037e, 0x037e,
02274   0x0387, 0x0387,
02275   0x055a, 0x055f,
02276   0x0589, 0x058a,
02277   0x05be, 0x05be,
02278   0x05c0, 0x05c0,
02279   0x05c3, 0x05c3,
02280   0x05f3, 0x05f4,
02281   0x060c, 0x060d,
02282   0x061b, 0x061b,
02283   0x061f, 0x061f,
02284   0x066a, 0x066d,
02285   0x06d4, 0x06d4,
02286   0x0700, 0x070d,
02287   0x0964, 0x0965,
02288   0x0970, 0x0970,
02289   0x0df4, 0x0df4,
02290   0x0e4f, 0x0e4f,
02291   0x0e5a, 0x0e5b,
02292   0x0f04, 0x0f12,
02293   0x0f3a, 0x0f3d,
02294   0x0f85, 0x0f85,
02295   0x104a, 0x104f,
02296   0x10fb, 0x10fb,
02297   0x1361, 0x1368,
02298   0x166d, 0x166e,
02299   0x169b, 0x169c,
02300   0x16eb, 0x16ed,
02301   0x1735, 0x1736,
02302   0x17d4, 0x17d6,
02303   0x17d8, 0x17da,
02304   0x1800, 0x180a,
02305   0x1944, 0x1945,
02306   0x2010, 0x2027,
02307   0x2030, 0x2043,
02308   0x2045, 0x2051,
02309   0x2053, 0x2054,
02310   0x2057, 0x2057,
02311   0x207d, 0x207e,
02312   0x208d, 0x208e,
02313   0x2329, 0x232a,
02314   0x23b4, 0x23b6,
02315   0x2768, 0x2775,
02316   0x27e6, 0x27eb,
02317   0x2983, 0x2998,
02318   0x29d8, 0x29db,
02319   0x29fc, 0x29fd,
02320   0x3001, 0x3003,
02321   0x3008, 0x3011,
02322   0x3014, 0x301f,
02323   0x3030, 0x3030,
02324   0x303d, 0x303d,
02325   0x30a0, 0x30a0,
02326   0x30fb, 0x30fb,
02327   0xfd3e, 0xfd3f,
02328   0xfe30, 0xfe52,
02329   0xfe54, 0xfe61,
02330   0xfe63, 0xfe63,
02331   0xfe68, 0xfe68,
02332   0xfe6a, 0xfe6b,
02333   0xff01, 0xff03,
02334   0xff05, 0xff0a,
02335   0xff0c, 0xff0f,
02336   0xff1a, 0xff1b,
02337   0xff1f, 0xff20,
02338   0xff3b, 0xff3d,
02339   0xff3f, 0xff3f,
02340   0xff5b, 0xff5b,
02341   0xff5d, 0xff5d,
02342   0xff5f, 0xff65,
02343   0x10100, 0x10101,
02344   0x1039f, 0x1039f
02345 #endif /* USE_UNICODE_FULL_RANGE_CTYPE */
02346 }; /* end of CRPunct */
02347 
02348 static const OnigCodePoint CRSpace[] = {
02349 #ifdef USE_UNICODE_FULL_RANGE_CTYPE
02350   11,
02351 #else
02352   4,
02353 #endif
02354   0x0009, 0x000d,
02355   0x0020, 0x0020,
02356   0x0085, 0x0085,
02357   0x00a0, 0x00a0
02358 #ifdef USE_UNICODE_FULL_RANGE_CTYPE
02359   ,
02360   0x1680, 0x1680,
02361   0x180e, 0x180e,
02362   0x2000, 0x200a,
02363   0x2028, 0x2029,
02364   0x202f, 0x202f,
02365   0x205f, 0x205f,
02366   0x3000, 0x3000
02367 #endif /* USE_UNICODE_FULL_RANGE_CTYPE */
02368 }; /* end of CRSpace */
02369 
02370 static const OnigCodePoint CRUpper[] = {
02371 #ifdef USE_UNICODE_FULL_RANGE_CTYPE
02372   421,
02373 #else
02374   3,
02375 #endif
02376   0x0041, 0x005a,
02377   0x00c0, 0x00d6,
02378   0x00d8, 0x00de
02379 #ifdef USE_UNICODE_FULL_RANGE_CTYPE
02380   ,
02381   0x0100, 0x0100,
02382   0x0102, 0x0102,
02383   0x0104, 0x0104,
02384   0x0106, 0x0106,
02385   0x0108, 0x0108,
02386   0x010a, 0x010a,
02387   0x010c, 0x010c,
02388   0x010e, 0x010e,
02389   0x0110, 0x0110,
02390   0x0112, 0x0112,
02391   0x0114, 0x0114,
02392   0x0116, 0x0116,
02393   0x0118, 0x0118,
02394   0x011a, 0x011a,
02395   0x011c, 0x011c,
02396   0x011e, 0x011e,
02397   0x0120, 0x0120,
02398   0x0122, 0x0122,
02399   0x0124, 0x0124,
02400   0x0126, 0x0126,
02401   0x0128, 0x0128,
02402   0x012a, 0x012a,
02403   0x012c, 0x012c,
02404   0x012e, 0x012e,
02405   0x0130, 0x0130,
02406   0x0132, 0x0132,
02407   0x0134, 0x0134,
02408   0x0136, 0x0136,
02409   0x0139, 0x0139,
02410   0x013b, 0x013b,
02411   0x013d, 0x013d,
02412   0x013f, 0x013f,
02413   0x0141, 0x0141,
02414   0x0143, 0x0143,
02415   0x0145, 0x0145,
02416   0x0147, 0x0147,
02417   0x014a, 0x014a,
02418   0x014c, 0x014c,
02419   0x014e, 0x014e,
02420   0x0150, 0x0150,
02421   0x0152, 0x0152,
02422   0x0154, 0x0154,
02423   0x0156, 0x0156,
02424   0x0158, 0x0158,
02425   0x015a, 0x015a,
02426   0x015c, 0x015c,
02427   0x015e, 0x015e,
02428   0x0160, 0x0160,
02429   0x0162, 0x0162,
02430   0x0164, 0x0164,
02431   0x0166, 0x0166,
02432   0x0168, 0x0168,
02433   0x016a, 0x016a,
02434   0x016c, 0x016c,
02435   0x016e, 0x016e,
02436   0x0170, 0x0170,
02437   0x0172, 0x0172,
02438   0x0174, 0x0174,
02439   0x0176, 0x0176,
02440   0x0178, 0x0179,
02441   0x017b, 0x017b,
02442   0x017d, 0x017d,
02443   0x0181, 0x0182,
02444   0x0184, 0x0184,
02445   0x0186, 0x0187,
02446   0x0189, 0x018b,
02447   0x018e, 0x0191,
02448   0x0193, 0x0194,
02449   0x0196, 0x0198,
02450   0x019c, 0x019d,
02451   0x019f, 0x01a0,
02452   0x01a2, 0x01a2,
02453   0x01a4, 0x01a4,
02454   0x01a6, 0x01a7,
02455   0x01a9, 0x01a9,
02456   0x01ac, 0x01ac,
02457   0x01ae, 0x01af,
02458   0x01b1, 0x01b3,
02459   0x01b5, 0x01b5,
02460   0x01b7, 0x01b8,
02461   0x01bc, 0x01bc,
02462   0x01c4, 0x01c4,
02463   0x01c7, 0x01c7,
02464   0x01ca, 0x01ca,
02465   0x01cd, 0x01cd,
02466   0x01cf, 0x01cf,
02467   0x01d1, 0x01d1,
02468   0x01d3, 0x01d3,
02469   0x01d5, 0x01d5,
02470   0x01d7, 0x01d7,
02471   0x01d9, 0x01d9,
02472   0x01db, 0x01db,
02473   0x01de, 0x01de,
02474   0x01e0, 0x01e0,
02475   0x01e2, 0x01e2,
02476   0x01e4, 0x01e4,
02477   0x01e6, 0x01e6,
02478   0x01e8, 0x01e8,
02479   0x01ea, 0x01ea,
02480   0x01ec, 0x01ec,
02481   0x01ee, 0x01ee,
02482   0x01f1, 0x01f1,
02483   0x01f4, 0x01f4,
02484   0x01f6, 0x01f8,
02485   0x01fa, 0x01fa,
02486   0x01fc, 0x01fc,
02487   0x01fe, 0x01fe,
02488   0x0200, 0x0200,
02489   0x0202, 0x0202,
02490   0x0204, 0x0204,
02491   0x0206, 0x0206,
02492   0x0208, 0x0208,
02493   0x020a, 0x020a,
02494   0x020c, 0x020c,
02495   0x020e, 0x020e,
02496   0x0210, 0x0210,
02497   0x0212, 0x0212,
02498   0x0214, 0x0214,
02499   0x0216, 0x0216,
02500   0x0218, 0x0218,
02501   0x021a, 0x021a,
02502   0x021c, 0x021c,
02503   0x021e, 0x021e,
02504   0x0220, 0x0220,
02505   0x0222, 0x0222,
02506   0x0224, 0x0224,
02507   0x0226, 0x0226,
02508   0x0228, 0x0228,
02509   0x022a, 0x022a,
02510   0x022c, 0x022c,
02511   0x022e, 0x022e,
02512   0x0230, 0x0230,
02513   0x0232, 0x0232,
02514   0x0386, 0x0386,
02515   0x0388, 0x038a,
02516   0x038c, 0x038c,
02517   0x038e, 0x038f,
02518   0x0391, 0x03a1,
02519   0x03a3, 0x03ab,
02520   0x03d2, 0x03d4,
02521   0x03d8, 0x03d8,
02522   0x03da, 0x03da,
02523   0x03dc, 0x03dc,
02524   0x03de, 0x03de,
02525   0x03e0, 0x03e0,
02526   0x03e2, 0x03e2,
02527   0x03e4, 0x03e4,
02528   0x03e6, 0x03e6,
02529   0x03e8, 0x03e8,
02530   0x03ea, 0x03ea,
02531   0x03ec, 0x03ec,
02532   0x03ee, 0x03ee,
02533   0x03f4, 0x03f4,
02534   0x03f7, 0x03f7,
02535   0x03f9, 0x03fa,
02536   0x0400, 0x042f,
02537   0x0460, 0x0460,
02538   0x0462, 0x0462,
02539   0x0464, 0x0464,
02540   0x0466, 0x0466,
02541   0x0468, 0x0468,
02542   0x046a, 0x046a,
02543   0x046c, 0x046c,
02544   0x046e, 0x046e,
02545   0x0470, 0x0470,
02546   0x0472, 0x0472,
02547   0x0474, 0x0474,
02548   0x0476, 0x0476,
02549   0x0478, 0x0478,
02550   0x047a, 0x047a,
02551   0x047c, 0x047c,
02552   0x047e, 0x047e,
02553   0x0480, 0x0480,
02554   0x048a, 0x048a,
02555   0x048c, 0x048c,
02556   0x048e, 0x048e,
02557   0x0490, 0x0490,
02558   0x0492, 0x0492,
02559   0x0494, 0x0494,
02560   0x0496, 0x0496,
02561   0x0498, 0x0498,
02562   0x049a, 0x049a,
02563   0x049c, 0x049c,
02564   0x049e, 0x049e,
02565   0x04a0, 0x04a0,
02566   0x04a2, 0x04a2,
02567   0x04a4, 0x04a4,
02568   0x04a6, 0x04a6,
02569   0x04a8, 0x04a8,
02570   0x04aa, 0x04aa,
02571   0x04ac, 0x04ac,
02572   0x04ae, 0x04ae,
02573   0x04b0, 0x04b0,
02574   0x04b2, 0x04b2,
02575   0x04b4, 0x04b4,
02576   0x04b6, 0x04b6,
02577   0x04b8, 0x04b8,
02578   0x04ba, 0x04ba,
02579   0x04bc, 0x04bc,
02580   0x04be, 0x04be,
02581   0x04c0, 0x04c1,
02582   0x04c3, 0x04c3,
02583   0x04c5, 0x04c5,
02584   0x04c7, 0x04c7,
02585   0x04c9, 0x04c9,
02586   0x04cb, 0x04cb,
02587   0x04cd, 0x04cd,
02588   0x04d0, 0x04d0,
02589   0x04d2, 0x04d2,
02590   0x04d4, 0x04d4,
02591   0x04d6, 0x04d6,
02592   0x04d8, 0x04d8,
02593   0x04da, 0x04da,
02594   0x04dc, 0x04dc,
02595   0x04de, 0x04de,
02596   0x04e0, 0x04e0,
02597   0x04e2, 0x04e2,
02598   0x04e4, 0x04e4,
02599   0x04e6, 0x04e6,
02600   0x04e8, 0x04e8,
02601   0x04ea, 0x04ea,
02602   0x04ec, 0x04ec,
02603   0x04ee, 0x04ee,
02604   0x04f0, 0x04f0,
02605   0x04f2, 0x04f2,
02606   0x04f4, 0x04f4,
02607   0x04f8, 0x04f8,
02608   0x0500, 0x0500,
02609   0x0502, 0x0502,
02610   0x0504, 0x0504,
02611   0x0506, 0x0506,
02612   0x0508, 0x0508,
02613   0x050a, 0x050a,
02614   0x050c, 0x050c,
02615   0x050e, 0x050e,
02616   0x0531, 0x0556,
02617   0x10a0, 0x10c5,
02618   0x1e00, 0x1e00,
02619   0x1e02, 0x1e02,
02620   0x1e04, 0x1e04,
02621   0x1e06, 0x1e06,
02622   0x1e08, 0x1e08,
02623   0x1e0a, 0x1e0a,
02624   0x1e0c, 0x1e0c,
02625   0x1e0e, 0x1e0e,
02626   0x1e10, 0x1e10,
02627   0x1e12, 0x1e12,
02628   0x1e14, 0x1e14,
02629   0x1e16, 0x1e16,
02630   0x1e18, 0x1e18,
02631   0x1e1a, 0x1e1a,
02632   0x1e1c, 0x1e1c,
02633   0x1e1e, 0x1e1e,
02634   0x1e20, 0x1e20,
02635   0x1e22, 0x1e22,
02636   0x1e24, 0x1e24,
02637   0x1e26, 0x1e26,
02638   0x1e28, 0x1e28,
02639   0x1e2a, 0x1e2a,
02640   0x1e2c, 0x1e2c,
02641   0x1e2e, 0x1e2e,
02642   0x1e30, 0x1e30,
02643   0x1e32, 0x1e32,
02644   0x1e34, 0x1e34,
02645   0x1e36, 0x1e36,
02646   0x1e38, 0x1e38,
02647   0x1e3a, 0x1e3a,
02648   0x1e3c, 0x1e3c,
02649   0x1e3e, 0x1e3e,
02650   0x1e40, 0x1e40,
02651   0x1e42, 0x1e42,
02652   0x1e44, 0x1e44,
02653   0x1e46, 0x1e46,
02654   0x1e48, 0x1e48,
02655   0x1e4a, 0x1e4a,
02656   0x1e4c, 0x1e4c,
02657   0x1e4e, 0x1e4e,
02658   0x1e50, 0x1e50,
02659   0x1e52, 0x1e52,
02660   0x1e54, 0x1e54,
02661   0x1e56, 0x1e56,
02662   0x1e58, 0x1e58,
02663   0x1e5a, 0x1e5a,
02664   0x1e5c, 0x1e5c,
02665   0x1e5e, 0x1e5e,
02666   0x1e60, 0x1e60,
02667   0x1e62, 0x1e62,
02668   0x1e64, 0x1e64,
02669   0x1e66, 0x1e66,
02670   0x1e68, 0x1e68,
02671   0x1e6a, 0x1e6a,
02672   0x1e6c, 0x1e6c,
02673   0x1e6e, 0x1e6e,
02674   0x1e70, 0x1e70,
02675   0x1e72, 0x1e72,
02676   0x1e74, 0x1e74,
02677   0x1e76, 0x1e76,
02678   0x1e78, 0x1e78,
02679   0x1e7a, 0x1e7a,
02680   0x1e7c, 0x1e7c,
02681   0x1e7e, 0x1e7e,
02682   0x1e80, 0x1e80,
02683   0x1e82, 0x1e82,
02684   0x1e84, 0x1e84,
02685   0x1e86, 0x1e86,
02686   0x1e88, 0x1e88,
02687   0x1e8a, 0x1e8a,
02688   0x1e8c, 0x1e8c,
02689   0x1e8e, 0x1e8e,
02690   0x1e90, 0x1e90,
02691   0x1e92, 0x1e92,
02692   0x1e94, 0x1e94,
02693   0x1ea0, 0x1ea0,
02694   0x1ea2, 0x1ea2,
02695   0x1ea4, 0x1ea4,
02696   0x1ea6, 0x1ea6,
02697   0x1ea8, 0x1ea8,
02698   0x1eaa, 0x1eaa,
02699   0x1eac, 0x1eac,
02700   0x1eae, 0x1eae,
02701   0x1eb0, 0x1eb0,
02702   0x1eb2, 0x1eb2,
02703   0x1eb4, 0x1eb4,
02704   0x1eb6, 0x1eb6,
02705   0x1eb8, 0x1eb8,
02706   0x1eba, 0x1eba,
02707   0x1ebc, 0x1ebc,
02708   0x1ebe, 0x1ebe,
02709   0x1ec0, 0x1ec0,
02710   0x1ec2, 0x1ec2,
02711   0x1ec4, 0x1ec4,
02712   0x1ec6, 0x1ec6,
02713   0x1ec8, 0x1ec8,
02714   0x1eca, 0x1eca,
02715   0x1ecc, 0x1ecc,
02716   0x1ece, 0x1ece,
02717   0x1ed0, 0x1ed0,
02718   0x1ed2, 0x1ed2,
02719   0x1ed4, 0x1ed4,
02720   0x1ed6, 0x1ed6,
02721   0x1ed8, 0x1ed8,
02722   0x1eda, 0x1eda,
02723   0x1edc, 0x1edc,
02724   0x1ede, 0x1ede,
02725   0x1ee0, 0x1ee0,
02726   0x1ee2, 0x1ee2,
02727   0x1ee4, 0x1ee4,
02728   0x1ee6, 0x1ee6,
02729   0x1ee8, 0x1ee8,
02730   0x1eea, 0x1eea,
02731   0x1eec, 0x1eec,
02732   0x1eee, 0x1eee,
02733   0x1ef0, 0x1ef0,
02734   0x1ef2, 0x1ef2,
02735   0x1ef4, 0x1ef4,
02736   0x1ef6, 0x1ef6,
02737   0x1ef8, 0x1ef8,
02738   0x1f08, 0x1f0f,
02739   0x1f18, 0x1f1d,
02740   0x1f28, 0x1f2f,
02741   0x1f38, 0x1f3f,
02742   0x1f48, 0x1f4d,
02743   0x1f59, 0x1f59,
02744   0x1f5b, 0x1f5b,
02745   0x1f5d, 0x1f5d,
02746   0x1f5f, 0x1f5f,
02747   0x1f68, 0x1f6f,
02748   0x1fb8, 0x1fbb,
02749   0x1fc8, 0x1fcb,
02750   0x1fd8, 0x1fdb,
02751   0x1fe8, 0x1fec,
02752   0x1ff8, 0x1ffb,
02753   0x2102, 0x2102,
02754   0x2107, 0x2107,
02755   0x210b, 0x210d,
02756   0x2110, 0x2112,
02757   0x2115, 0x2115,
02758   0x2119, 0x211d,
02759   0x2124, 0x2124,
02760   0x2126, 0x2126,
02761   0x2128, 0x2128,
02762   0x212a, 0x212d,
02763   0x2130, 0x2131,
02764   0x2133, 0x2133,
02765   0x213e, 0x213f,
02766   0x2145, 0x2145,
02767   0xff21, 0xff3a,
02768   0x10400, 0x10427,
02769   0x1d400, 0x1d419,
02770   0x1d434, 0x1d44d,
02771   0x1d468, 0x1d481,
02772   0x1d49c, 0x1d49c,
02773   0x1d49e, 0x1d49f,
02774   0x1d4a2, 0x1d4a2,
02775   0x1d4a5, 0x1d4a6,
02776   0x1d4a9, 0x1d4ac,
02777   0x1d4ae, 0x1d4b5,
02778   0x1d4d0, 0x1d4e9,
02779   0x1d504, 0x1d505,
02780   0x1d507, 0x1d50a,
02781   0x1d50d, 0x1d514,
02782   0x1d516, 0x1d51c,
02783   0x1d538, 0x1d539,
02784   0x1d53b, 0x1d53e,
02785   0x1d540, 0x1d544,
02786   0x1d546, 0x1d546,
02787   0x1d54a, 0x1d550,
02788   0x1d56c, 0x1d585,
02789   0x1d5a0, 0x1d5b9,
02790   0x1d5d4, 0x1d5ed,
02791   0x1d608, 0x1d621,
02792   0x1d63c, 0x1d655,
02793   0x1d670, 0x1d689,
02794   0x1d6a8, 0x1d6c0,
02795   0x1d6e2, 0x1d6fa,
02796   0x1d71c, 0x1d734,
02797   0x1d756, 0x1d76e,
02798   0x1d790, 0x1d7a8
02799 #endif /* USE_UNICODE_FULL_RANGE_CTYPE */
02800 }; /* end of CRUpper */
02801 
02802 static const OnigCodePoint CRXDigit[] = {
02803 #ifdef USE_UNICODE_FULL_RANGE_CTYPE
02804   3,
02805 #else
02806   3,
02807 #endif
02808   0x0030, 0x0039,
02809   0x0041, 0x0046,
02810   0x0061, 0x0066
02811 };
02812 
02813 static const OnigCodePoint CRASCII[] = {
02814 #ifdef USE_UNICODE_FULL_RANGE_CTYPE
02815   1,
02816 #else
02817   1,
02818 #endif
02819   0x0000, 0x007f
02820 };
02821 
02822 static const OnigCodePoint CRWord[] = {
02823 #ifdef USE_UNICODE_FULL_RANGE_CTYPE
02824   436,
02825 #else
02826   12,
02827 #endif
02828   0x0030, 0x0039,
02829   0x0041, 0x005a,
02830   0x005f, 0x005f,
02831   0x0061, 0x007a,
02832   0x00aa, 0x00aa,
02833   0x00b2, 0x00b3,
02834   0x00b5, 0x00b5,
02835   0x00b9, 0x00ba,
02836   0x00bc, 0x00be,
02837   0x00c0, 0x00d6,
02838   0x00d8, 0x00f6,
02839 #ifndef USE_UNICODE_FULL_RANGE_CTYPE
02840   0x00f8, 0x7fffffff
02841 #else /* not USE_UNICODE_FULL_RANGE_CTYPE */
02842   0x00f8, 0x0236,
02843   0x0250, 0x02c1,
02844   0x02c6, 0x02d1,
02845   0x02e0, 0x02e4,
02846   0x02ee, 0x02ee,
02847   0x0300, 0x0357,
02848   0x035d, 0x036f,
02849   0x037a, 0x037a,
02850   0x0386, 0x0386,
02851   0x0388, 0x038a,
02852   0x038c, 0x038c,
02853   0x038e, 0x03a1,
02854   0x03a3, 0x03ce,
02855   0x03d0, 0x03f5,
02856   0x03f7, 0x03fb,
02857   0x0400, 0x0481,
02858   0x0483, 0x0486,
02859   0x0488, 0x04ce,
02860   0x04d0, 0x04f5,
02861   0x04f8, 0x04f9,
02862   0x0500, 0x050f,
02863   0x0531, 0x0556,
02864   0x0559, 0x0559,
02865   0x0561, 0x0587,
02866   0x0591, 0x05a1,
02867   0x05a3, 0x05b9,
02868   0x05bb, 0x05bd,
02869   0x05bf, 0x05bf,
02870   0x05c1, 0x05c2,
02871   0x05c4, 0x05c4,
02872   0x05d0, 0x05ea,
02873   0x05f0, 0x05f2,
02874   0x0610, 0x0615,
02875   0x0621, 0x063a,
02876   0x0640, 0x0658,
02877   0x0660, 0x0669,
02878   0x066e, 0x06d3,
02879   0x06d5, 0x06dc,
02880   0x06de, 0x06e8,
02881   0x06ea, 0x06fc,
02882   0x06ff, 0x06ff,
02883   0x0710, 0x074a,
02884   0x074d, 0x074f,
02885   0x0780, 0x07b1,
02886   0x0901, 0x0939,
02887   0x093c, 0x094d,
02888   0x0950, 0x0954,
02889   0x0958, 0x0963,
02890   0x0966, 0x096f,
02891   0x0981, 0x0983,
02892   0x0985, 0x098c,
02893   0x098f, 0x0990,
02894   0x0993, 0x09a8,
02895   0x09aa, 0x09b0,
02896   0x09b2, 0x09b2,
02897   0x09b6, 0x09b9,
02898   0x09bc, 0x09c4,
02899   0x09c7, 0x09c8,
02900   0x09cb, 0x09cd,
02901   0x09d7, 0x09d7,
02902   0x09dc, 0x09dd,
02903   0x09df, 0x09e3,
02904   0x09e6, 0x09f1,
02905   0x09f4, 0x09f9,
02906   0x0a01, 0x0a03,
02907   0x0a05, 0x0a0a,
02908   0x0a0f, 0x0a10,
02909   0x0a13, 0x0a28,
02910   0x0a2a, 0x0a30,
02911   0x0a32, 0x0a33,
02912   0x0a35, 0x0a36,
02913   0x0a38, 0x0a39,
02914   0x0a3c, 0x0a3c,
02915   0x0a3e, 0x0a42,
02916   0x0a47, 0x0a48,
02917   0x0a4b, 0x0a4d,
02918   0x0a59, 0x0a5c,
02919   0x0a5e, 0x0a5e,
02920   0x0a66, 0x0a74,
02921   0x0a81, 0x0a83,
02922   0x0a85, 0x0a8d,
02923   0x0a8f, 0x0a91,
02924   0x0a93, 0x0aa8,
02925   0x0aaa, 0x0ab0,
02926   0x0ab2, 0x0ab3,
02927   0x0ab5, 0x0ab9,
02928   0x0abc, 0x0ac5,
02929   0x0ac7, 0x0ac9,
02930   0x0acb, 0x0acd,
02931   0x0ad0, 0x0ad0,
02932   0x0ae0, 0x0ae3,
02933   0x0ae6, 0x0aef,
02934   0x0b01, 0x0b03,
02935   0x0b05, 0x0b0c,
02936   0x0b0f, 0x0b10,
02937   0x0b13, 0x0b28,
02938   0x0b2a, 0x0b30,
02939   0x0b32, 0x0b33,
02940   0x0b35, 0x0b39,
02941   0x0b3c, 0x0b43,
02942   0x0b47, 0x0b48,
02943   0x0b4b, 0x0b4d,
02944   0x0b56, 0x0b57,
02945   0x0b5c, 0x0b5d,
02946   0x0b5f, 0x0b61,
02947   0x0b66, 0x0b6f,
02948   0x0b71, 0x0b71,
02949   0x0b82, 0x0b83,
02950   0x0b85, 0x0b8a,
02951   0x0b8e, 0x0b90,
02952   0x0b92, 0x0b95,
02953   0x0b99, 0x0b9a,
02954   0x0b9c, 0x0b9c,
02955   0x0b9e, 0x0b9f,
02956   0x0ba3, 0x0ba4,
02957   0x0ba8, 0x0baa,
02958   0x0bae, 0x0bb5,
02959   0x0bb7, 0x0bb9,
02960   0x0bbe, 0x0bc2,
02961   0x0bc6, 0x0bc8,
02962   0x0bca, 0x0bcd,
02963   0x0bd7, 0x0bd7,
02964   0x0be7, 0x0bf2,
02965   0x0c01, 0x0c03,
02966   0x0c05, 0x0c0c,
02967   0x0c0e, 0x0c10,
02968   0x0c12, 0x0c28,
02969   0x0c2a, 0x0c33,
02970   0x0c35, 0x0c39,
02971   0x0c3e, 0x0c44,
02972   0x0c46, 0x0c48,
02973   0x0c4a, 0x0c4d,
02974   0x0c55, 0x0c56,
02975   0x0c60, 0x0c61,
02976   0x0c66, 0x0c6f,
02977   0x0c82, 0x0c83,
02978   0x0c85, 0x0c8c,
02979   0x0c8e, 0x0c90,
02980   0x0c92, 0x0ca8,
02981   0x0caa, 0x0cb3,
02982   0x0cb5, 0x0cb9,
02983   0x0cbc, 0x0cc4,
02984   0x0cc6, 0x0cc8,
02985   0x0cca, 0x0ccd,
02986   0x0cd5, 0x0cd6,
02987   0x0cde, 0x0cde,
02988   0x0ce0, 0x0ce1,
02989   0x0ce6, 0x0cef,
02990   0x0d02, 0x0d03,
02991   0x0d05, 0x0d0c,
02992   0x0d0e, 0x0d10,
02993   0x0d12, 0x0d28,
02994   0x0d2a, 0x0d39,
02995   0x0d3e, 0x0d43,
02996   0x0d46, 0x0d48,
02997   0x0d4a, 0x0d4d,
02998   0x0d57, 0x0d57,
02999   0x0d60, 0x0d61,
03000   0x0d66, 0x0d6f,
03001   0x0d82, 0x0d83,
03002   0x0d85, 0x0d96,
03003   0x0d9a, 0x0db1,
03004   0x0db3, 0x0dbb,
03005   0x0dbd, 0x0dbd,
03006   0x0dc0, 0x0dc6,
03007   0x0dca, 0x0dca,
03008   0x0dcf, 0x0dd4,
03009   0x0dd6, 0x0dd6,
03010   0x0dd8, 0x0ddf,
03011   0x0df2, 0x0df3,
03012   0x0e01, 0x0e3a,
03013   0x0e40, 0x0e4e,
03014   0x0e50, 0x0e59,
03015   0x0e81, 0x0e82,
03016   0x0e84, 0x0e84,
03017   0x0e87, 0x0e88,
03018   0x0e8a, 0x0e8a,
03019   0x0e8d, 0x0e8d,
03020   0x0e94, 0x0e97,
03021   0x0e99, 0x0e9f,
03022   0x0ea1, 0x0ea3,
03023   0x0ea5, 0x0ea5,
03024   0x0ea7, 0x0ea7,
03025   0x0eaa, 0x0eab,
03026   0x0ead, 0x0eb9,
03027   0x0ebb, 0x0ebd,
03028   0x0ec0, 0x0ec4,
03029   0x0ec6, 0x0ec6,
03030   0x0ec8, 0x0ecd,
03031   0x0ed0, 0x0ed9,
03032   0x0edc, 0x0edd,
03033   0x0f00, 0x0f00,
03034   0x0f18, 0x0f19,
03035   0x0f20, 0x0f33,
03036   0x0f35, 0x0f35,
03037   0x0f37, 0x0f37,
03038   0x0f39, 0x0f39,
03039   0x0f3e, 0x0f47,
03040   0x0f49, 0x0f6a,
03041   0x0f71, 0x0f84,
03042   0x0f86, 0x0f8b,
03043   0x0f90, 0x0f97,
03044   0x0f99, 0x0fbc,
03045   0x0fc6, 0x0fc6,
03046   0x1000, 0x1021,
03047   0x1023, 0x1027,
03048   0x1029, 0x102a,
03049   0x102c, 0x1032,
03050   0x1036, 0x1039,
03051   0x1040, 0x1049,
03052   0x1050, 0x1059,
03053   0x10a0, 0x10c5,
03054   0x10d0, 0x10f8,
03055   0x1100, 0x1159,
03056   0x115f, 0x11a2,
03057   0x11a8, 0x11f9,
03058   0x1200, 0x1206,
03059   0x1208, 0x1246,
03060   0x1248, 0x1248,
03061   0x124a, 0x124d,
03062   0x1250, 0x1256,
03063   0x1258, 0x1258,
03064   0x125a, 0x125d,
03065   0x1260, 0x1286,
03066   0x1288, 0x1288,
03067   0x128a, 0x128d,
03068   0x1290, 0x12ae,
03069   0x12b0, 0x12b0,
03070   0x12b2, 0x12b5,
03071   0x12b8, 0x12be,
03072   0x12c0, 0x12c0,
03073   0x12c2, 0x12c5,
03074   0x12c8, 0x12ce,
03075   0x12d0, 0x12d6,
03076   0x12d8, 0x12ee,
03077   0x12f0, 0x130e,
03078   0x1310, 0x1310,
03079   0x1312, 0x1315,
03080   0x1318, 0x131e,
03081   0x1320, 0x1346,
03082   0x1348, 0x135a,
03083   0x1369, 0x137c,
03084   0x13a0, 0x13f4,
03085   0x1401, 0x166c,
03086   0x166f, 0x1676,
03087   0x1681, 0x169a,
03088   0x16a0, 0x16ea,
03089   0x16ee, 0x16f0,
03090   0x1700, 0x170c,
03091   0x170e, 0x1714,
03092   0x1720, 0x1734,
03093   0x1740, 0x1753,
03094   0x1760, 0x176c,
03095   0x176e, 0x1770,
03096   0x1772, 0x1773,
03097   0x1780, 0x17b3,
03098   0x17b6, 0x17d3,
03099   0x17d7, 0x17d7,
03100   0x17dc, 0x17dd,
03101   0x17e0, 0x17e9,
03102   0x17f0, 0x17f9,
03103   0x180b, 0x180d,
03104   0x1810, 0x1819,
03105   0x1820, 0x1877,
03106   0x1880, 0x18a9,
03107   0x1900, 0x191c,
03108   0x1920, 0x192b,
03109   0x1930, 0x193b,
03110   0x1946, 0x196d,
03111   0x1970, 0x1974,
03112   0x1d00, 0x1d6b,
03113   0x1e00, 0x1e9b,
03114   0x1ea0, 0x1ef9,
03115   0x1f00, 0x1f15,
03116   0x1f18, 0x1f1d,
03117   0x1f20, 0x1f45,
03118   0x1f48, 0x1f4d,
03119   0x1f50, 0x1f57,
03120   0x1f59, 0x1f59,
03121   0x1f5b, 0x1f5b,
03122   0x1f5d, 0x1f5d,
03123   0x1f5f, 0x1f7d,
03124   0x1f80, 0x1fb4,
03125   0x1fb6, 0x1fbc,
03126   0x1fbe, 0x1fbe,
03127   0x1fc2, 0x1fc4,
03128   0x1fc6, 0x1fcc,
03129   0x1fd0, 0x1fd3,
03130   0x1fd6, 0x1fdb,
03131   0x1fe0, 0x1fec,
03132   0x1ff2, 0x1ff4,
03133   0x1ff6, 0x1ffc,
03134   0x203f, 0x2040,
03135   0x2054, 0x2054,
03136   0x2070, 0x2071,
03137   0x2074, 0x2079,
03138   0x207f, 0x2089,
03139   0x20d0, 0x20ea,
03140   0x2102, 0x2102,
03141   0x2107, 0x2107,
03142   0x210a, 0x2113,
03143   0x2115, 0x2115,
03144   0x2119, 0x211d,
03145   0x2124, 0x2124,
03146   0x2126, 0x2126,
03147   0x2128, 0x2128,
03148   0x212a, 0x212d,
03149   0x212f, 0x2131,
03150   0x2133, 0x2139,
03151   0x213d, 0x213f,
03152   0x2145, 0x2149,
03153   0x2153, 0x2183,
03154   0x2460, 0x249b,
03155   0x24ea, 0x24ff,
03156   0x2776, 0x2793,
03157   0x3005, 0x3007,
03158   0x3021, 0x302f,
03159   0x3031, 0x3035,
03160   0x3038, 0x303c,
03161   0x3041, 0x3096,
03162   0x3099, 0x309a,
03163   0x309d, 0x309f,
03164   0x30a1, 0x30ff,
03165   0x3105, 0x312c,
03166   0x3131, 0x318e,
03167   0x3192, 0x3195,
03168   0x31a0, 0x31b7,
03169   0x31f0, 0x31ff,
03170   0x3220, 0x3229,
03171   0x3251, 0x325f,
03172   0x3280, 0x3289,
03173   0x32b1, 0x32bf,
03174   0x3400, 0x4db5,
03175   0x4e00, 0x9fa5,
03176   0xa000, 0xa48c,
03177   0xac00, 0xd7a3,
03178   0xf900, 0xfa2d,
03179   0xfa30, 0xfa6a,
03180   0xfb00, 0xfb06,
03181   0xfb13, 0xfb17,
03182   0xfb1d, 0xfb28,
03183   0xfb2a, 0xfb36,
03184   0xfb38, 0xfb3c,
03185   0xfb3e, 0xfb3e,
03186   0xfb40, 0xfb41,
03187   0xfb43, 0xfb44,
03188   0xfb46, 0xfbb1,
03189   0xfbd3, 0xfd3d,
03190   0xfd50, 0xfd8f,
03191   0xfd92, 0xfdc7,
03192   0xfdf0, 0xfdfb,
03193   0xfe00, 0xfe0f,
03194   0xfe20, 0xfe23,
03195   0xfe33, 0xfe34,
03196   0xfe4d, 0xfe4f,
03197   0xfe70, 0xfe74,
03198   0xfe76, 0xfefc,
03199   0xff10, 0xff19,
03200   0xff21, 0xff3a,
03201   0xff3f, 0xff3f,
03202   0xff41, 0xff5a,
03203   0xff65, 0xffbe,
03204   0xffc2, 0xffc7,
03205   0xffca, 0xffcf,
03206   0xffd2, 0xffd7,
03207   0xffda, 0xffdc,
03208   0x10000, 0x1000b,
03209   0x1000d, 0x10026,
03210   0x10028, 0x1003a,
03211   0x1003c, 0x1003d,
03212   0x1003f, 0x1004d,
03213   0x10050, 0x1005d,
03214   0x10080, 0x100fa,
03215   0x10107, 0x10133,
03216   0x10300, 0x1031e,
03217   0x10320, 0x10323,
03218   0x10330, 0x1034a,
03219   0x10380, 0x1039d,
03220   0x10400, 0x1049d,
03221   0x104a0, 0x104a9,
03222   0x10800, 0x10805,
03223   0x10808, 0x10808,
03224   0x1080a, 0x10835,
03225   0x10837, 0x10838,
03226   0x1083c, 0x1083c,
03227   0x1083f, 0x1083f,
03228   0x1d165, 0x1d169,
03229   0x1d16d, 0x1d172,
03230   0x1d17b, 0x1d182,
03231   0x1d185, 0x1d18b,
03232   0x1d1aa, 0x1d1ad,
03233   0x1d400, 0x1d454,
03234   0x1d456, 0x1d49c,
03235   0x1d49e, 0x1d49f,
03236   0x1d4a2, 0x1d4a2,
03237   0x1d4a5, 0x1d4a6,
03238   0x1d4a9, 0x1d4ac,
03239   0x1d4ae, 0x1d4b9,
03240   0x1d4bb, 0x1d4bb,
03241   0x1d4bd, 0x1d4c3,
03242   0x1d4c5, 0x1d505,
03243   0x1d507, 0x1d50a,
03244   0x1d50d, 0x1d514,
03245   0x1d516, 0x1d51c,
03246   0x1d51e, 0x1d539,
03247   0x1d53b, 0x1d53e,
03248   0x1d540, 0x1d544,
03249   0x1d546, 0x1d546,
03250   0x1d54a, 0x1d550,
03251   0x1d552, 0x1d6a3,
03252   0x1d6a8, 0x1d6c0,
03253   0x1d6c2, 0x1d6da,
03254   0x1d6dc, 0x1d6fa,
03255   0x1d6fc, 0x1d714,
03256   0x1d716, 0x1d734,
03257   0x1d736, 0x1d74e,
03258   0x1d750, 0x1d76e,
03259   0x1d770, 0x1d788,
03260   0x1d78a, 0x1d7a8,
03261   0x1d7aa, 0x1d7c2,
03262   0x1d7c4, 0x1d7c9,
03263   0x1d7ce, 0x1d7ff,
03264   0x20000, 0x2a6d6,
03265   0x2f800, 0x2fa1d,
03266   0xe0100, 0xe01ef
03267 #endif /* USE_UNICODE_FULL_RANGE_CTYPE */
03268 }; /* end of CRWord */
03269 
03270 
03271 extern int
03272 onigenc_unicode_is_code_ctype(OnigCodePoint code, unsigned int ctype)
03273 {
03274   if (code < 256) {
03275     return ONIGENC_IS_UNICODE_ISO_8859_1_CTYPE(code, ctype);
03276   }
03277 
03278 #ifdef USE_UNICODE_FULL_RANGE_CTYPE
03279 
03280   switch (ctype) {
03281   case ONIGENC_CTYPE_ALPHA:
03282     return onig_is_in_code_range((UChar* )CRAlpha, code);
03283     break;
03284   case ONIGENC_CTYPE_BLANK:
03285     return onig_is_in_code_range((UChar* )CRBlank, code);
03286     break;
03287   case ONIGENC_CTYPE_CNTRL:
03288     return onig_is_in_code_range((UChar* )CRCntrl, code);
03289     break;
03290   case ONIGENC_CTYPE_DIGIT:
03291     return onig_is_in_code_range((UChar* )CRDigit, code);
03292     break;
03293   case ONIGENC_CTYPE_GRAPH:
03294     return onig_is_in_code_range((UChar* )CRGraph, code);
03295     break;
03296   case ONIGENC_CTYPE_LOWER:
03297     return onig_is_in_code_range((UChar* )CRLower, code);
03298     break;
03299   case ONIGENC_CTYPE_PRINT:
03300     return onig_is_in_code_range((UChar* )CRPrint, code);
03301     break;
03302   case ONIGENC_CTYPE_PUNCT:
03303     return onig_is_in_code_range((UChar* )CRPunct, code);
03304     break;
03305   case ONIGENC_CTYPE_SPACE:
03306     return onig_is_in_code_range((UChar* )CRSpace, code);
03307     break;
03308   case ONIGENC_CTYPE_UPPER:
03309     return onig_is_in_code_range((UChar* )CRUpper, code);
03310     break;
03311   case ONIGENC_CTYPE_XDIGIT:
03312     return FALSE;
03313     break;
03314   case ONIGENC_CTYPE_WORD:
03315     return onig_is_in_code_range((UChar* )CRWord, code);
03316     break;
03317   case ONIGENC_CTYPE_ASCII:
03318     return FALSE;
03319     break;
03320   case ONIGENC_CTYPE_ALNUM:
03321     return onig_is_in_code_range((UChar* )CRAlnum, code);
03322     break;
03323   case ONIGENC_CTYPE_NEWLINE:
03324     return FALSE;
03325     break;
03326 
03327   default:
03328     return ONIGENCERR_TYPE_BUG;
03329     break;
03330   }
03331 
03332 #else
03333 
03334   if ((ctype & ONIGENC_CTYPE_WORD) != 0) {
03335     return TRUE;
03336   }
03337   return FALSE;
03338 #endif /* USE_UNICODE_FULL_RANGE_CTYPE */
03339 }
03340 
03341 extern int
03342 onigenc_unicode_get_ctype_code_range(int ctype,
03343                 const OnigCodePoint* sbr[], const OnigCodePoint* mbr[])
03344 {
03345   static const OnigCodePoint EmptyRange[] = { 0 };
03346 
03347 #define CR_SET(list) do { \
03348   *mbr = list; \
03349 } while (0)
03350 
03351   *sbr = EmptyRange;
03352 
03353   switch (ctype) {
03354   case ONIGENC_CTYPE_ALPHA:
03355     CR_SET(CRAlpha);
03356     break;
03357   case ONIGENC_CTYPE_BLANK:
03358     CR_SET(CRBlank);
03359     break;
03360   case ONIGENC_CTYPE_CNTRL:
03361     CR_SET(CRCntrl);
03362     break;
03363   case ONIGENC_CTYPE_DIGIT:
03364     CR_SET(CRDigit);
03365     break;
03366   case ONIGENC_CTYPE_GRAPH:
03367     CR_SET(CRGraph);
03368     break;
03369   case ONIGENC_CTYPE_LOWER:
03370     CR_SET(CRLower);
03371     break;
03372   case ONIGENC_CTYPE_PRINT:
03373     CR_SET(CRPrint);
03374     break;
03375   case ONIGENC_CTYPE_PUNCT:
03376     CR_SET(CRPunct);
03377     break;
03378   case ONIGENC_CTYPE_SPACE:
03379     CR_SET(CRSpace);
03380     break;
03381   case ONIGENC_CTYPE_UPPER:
03382     CR_SET(CRUpper);
03383     break;
03384   case ONIGENC_CTYPE_XDIGIT:
03385     CR_SET(CRXDigit);
03386     break;
03387   case ONIGENC_CTYPE_WORD:
03388     CR_SET(CRWord);
03389     break;
03390   case ONIGENC_CTYPE_ASCII:
03391     CR_SET(CRASCII);
03392     break;
03393   case ONIGENC_CTYPE_ALNUM:
03394     CR_SET(CRAlnum);
03395     break;
03396 
03397   default:
03398     return ONIGENCERR_TYPE_BUG;
03399     break;
03400   }
03401 
03402   return 0;
03403 }