]> git.wh0rd.org - fontconfig.git/commitdiff
Add fclang.c to CVS; easier than attempting to build it on the fly
authorKeith Packard <keithp@keithp.com>
Sun, 7 Jul 2002 00:00:43 +0000 (00:00 +0000)
committerKeith Packard <keithp@keithp.com>
Sun, 7 Jul 2002 00:00:43 +0000 (00:00 +0000)
src/fclang.c [new file with mode: 0644]

diff --git a/src/fclang.c b/src/fclang.c
new file mode 100644 (file)
index 0000000..242824e
--- /dev/null
@@ -0,0 +1,2561 @@
+/*
+ * $XFree86: xc/lib/fontconfig/fc-lang/fclang.tmpl.c,v 1.1 2002/07/06 23:21:36 keithp Exp $
+ *
+ * Copyright © 2002 Keith Packard, member of The XFree86 Project, Inc.
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation, and that the name of Keith Packard not be used in
+ * advertising or publicity pertaining to distribution of the software without
+ * specific, written prior permission.  Keith Packard makes no
+ * representations about the suitability of this software for any purpose.  It
+ * is provided "as is" without express or implied warranty.
+ *
+ * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ * PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#include "fcint.h"
+
+typedef struct {
+    FcChar8    *lang;
+    FcCharSet  charset;
+} FcLangCharSet;
+
+/* total size: 482 unique leaves: 422 */
+
+static const FcCharLeaf        leaves[422] = {
+    { { /* 0 */
+    0x00000000, 0x00000000, 0x00000000, 0x00000000,
+    0x00000000, 0x08000800, 0x00000000, 0x00000000,
+    } },
+    { { /* 1 */
+    0xffff8002, 0xffffffff, 0x8002ffff, 0x00000000,
+    0xc0000000, 0xf0fc33c0, 0x03000000, 0x00000000,
+    } },
+    { { /* 2 */
+    0x88001000, 0x07fffffe, 0x0007ffff, 0x00000000,
+    0x00000000, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 3 */
+    0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe,
+    0x00000000, 0x00000000, 0x10400090, 0x10400090,
+    } },
+    { { /* 4 */
+    0xc0000000, 0x00030000, 0xc0000000, 0x00000000,
+    0x00008000, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 5 */
+    0x00000000, 0x00000000, 0x02000000, 0x00000000,
+    0x00000000, 0x10000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 6 */
+    0xffff0100, 0xffffffff, 0x0100ffff, 0x00000000,
+    0x300c0000, 0x0f00c000, 0x03000000, 0x00000300,
+    } },
+    { { /* 7 */
+    0xffff0002, 0xffffffff, 0x0002ffff, 0x00000000,
+    0x030c0000, 0x0000cc0f, 0x03000000, 0x00000300,
+    } },
+    { { /* 8 */
+    0xffff4042, 0xffffffff, 0x4042ffff, 0x00000000,
+    0x00000000, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 9 */
+    0xffff0001, 0xffffd7ff, 0x2001d7ff, 0x00000c0c,
+    0x00000000, 0x00002000, 0x00000000, 0x00000000,
+    } },
+    { { /* 10 */
+    0x00000000, 0x00000080, 0x07fffffe, 0x07fffffe,
+    0x00000000, 0x08000800, 0x12020404, 0x12020404,
+    } },
+    { { /* 11 */
+    0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe,
+    0x00000000, 0x00800000, 0x140ca381, 0x140ca381,
+    } },
+    { { /* 12 */
+    0x00000000, 0x80000000, 0x00000001, 0x00000000,
+    0x00000000, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 13 */
+    0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe,
+    0x00000000, 0x08000800, 0x0a12cf45, 0x8a12cf45,
+    } },
+    { { /* 14 */
+    0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe,
+    0x00000000, 0x00000000, 0x34482212, 0x34482212,
+    } },
+    { { /* 15 */
+    0x0c00f000, 0x00000000, 0x03000180, 0x6000c033,
+    0x00000000, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 16 */
+    0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe,
+    0x00000000, 0x08000800, 0x75592ff7, 0x75592ff7,
+    } },
+    { { /* 17 */
+    0x00000000, 0x00000000, 0x000c0000, 0x00000000,
+    0x00000000, 0x00000000, 0x00000000, 0xfc000000,
+    } },
+    { { /* 18 */
+    0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe,
+    0x00000000, 0x08000800, 0x90400010, 0x10400010,
+    } },
+    { { /* 19 */
+    0x00000000, 0x00000000, 0x00000000, 0x44300000,
+    0xffffd7f0, 0xfffffffb, 0xfc807fff, 0x00000003,
+    } },
+    { { /* 20 */
+    0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe,
+    0x00000000, 0x00000000, 0x8fd38f81, 0x00520000,
+    } },
+    { { /* 21 */
+    0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe,
+    0x00000000, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 22 */
+    0x30000300, 0x00300030, 0x30000000, 0x00003000,
+    0x00000000, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 23 */
+    0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe,
+    0x00000000, 0x80000002, 0x140a2202, 0x140a2202,
+    } },
+    { { /* 24 */
+    0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe,
+    0x00000000, 0x00000000, 0x10600010, 0x10600010,
+    } },
+    { { /* 25 */
+    0x00000000, 0x00000000, 0x00000000, 0x60000003,
+    0x00000000, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 26 */
+    0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe,
+    0x00000000, 0x00000000, 0x10020000, 0x10020000,
+    } },
+    { { /* 27 */
+    0x00000000, 0x00000000, 0x00300000, 0x00000000,
+    0x00000000, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 28 */
+    0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe,
+    0x00000000, 0x08000000, 0x10600070, 0x10600070,
+    } },
+    { { /* 29 */
+    0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe,
+    0x00000000, 0x00000000, 0x35492072, 0x35492072,
+    } },
+    { { /* 30 */
+    0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe,
+    0x00000000, 0x00000000, 0x060c3383, 0x060c3383,
+    } },
+    { { /* 31 */
+    0x00000c00, 0x00000003, 0x00000000, 0x80000000,
+    0x00000000, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 32 */
+    0x00000000, 0x00000000, 0x00000000, 0x10000000,
+    0x00000000, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 33 */
+    0xc0000c0c, 0x00000000, 0x00c00003, 0x00000c03,
+    0x08000000, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 34 */
+    0x00000000, 0x00000000, 0x00000400, 0x00000000,
+    0x00000000, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 35 */
+    0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe,
+    0x00000000, 0x00000000, 0x020c1381, 0x020c1381,
+    } },
+    { { /* 36 */
+    0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe,
+    0x00000000, 0x88000802, 0x140a2202, 0x140a2202,
+    } },
+    { { /* 37 */
+    0x00000000, 0x00000000, 0x00000000, 0x00000000,
+    0x00000000, 0x00000000, 0xffff0000, 0x000007ff,
+    } },
+    { { /* 38 */
+    0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe,
+    0x00000000, 0x00000000, 0x02041101, 0x02041101,
+    } },
+    { { /* 39 */
+    0x000330c0, 0x00000000, 0x00000000, 0x60000003,
+    0x00000000, 0x00000000, 0x00001ff0, 0x003e0000,
+    } },
+    { { /* 40 */
+    0x00ffffff, 0x00000000, 0x00000000, 0x00000000,
+    0x00000000, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 41 */
+    0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe,
+    0x00000000, 0x00000000, 0x14482203, 0x14482203,
+    } },
+    { { /* 42 */
+    0x00000000, 0x00000000, 0x00030000, 0x00030000,
+    0x00000000, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 43 */
+    0x00000000, 0xfffe0000, 0xfc7fffff, 0xfffffffe,
+    0x0000067f, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 44 */
+    0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe,
+    0x00000000, 0x00000000, 0x75092a72, 0x75092272,
+    } },
+    { { /* 45 */
+    0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe,
+    0x00000000, 0x00000000, 0x060cb301, 0x060cb300,
+    } },
+    { { /* 46 */
+    0x000000e7, 0x00000000, 0xfffffffe, 0xffffffff,
+    0x780fffff, 0xfffffffe, 0xffffffff, 0x787fffff,
+    } },
+    { { /* 47 */
+    0x43f36f8b, 0x9b462442, 0xe3e0e82c, 0x400a0004,
+    0xdb365f65, 0x04497977, 0xe3f0ecd7, 0x08c56038,
+    } },
+    { { /* 48 */
+    0x3403e602, 0x35518000, 0x7eabe0c8, 0x98698200,
+    0x2942a948, 0x8060e803, 0xad93441c, 0x4568c03a,
+    } },
+    { { /* 49 */
+    0x8656aa60, 0x02403f7a, 0x14618388, 0x21741020,
+    0x07022021, 0x40bc3000, 0x4462a624, 0x0a2060a8,
+    } },
+    { { /* 50 */
+    0x85740217, 0x9c840402, 0x14157bfb, 0x11e27f24,
+    0x02efb665, 0x20ff1f75, 0x38403a70, 0x676326c3,
+    } },
+    { { /* 51 */
+    0x20924dd9, 0x0fc946b0, 0x4850bc98, 0xa03f8638,
+    0x88162388, 0x52323e09, 0xe3a422aa, 0xc72c00dd,
+    } },
+    { { /* 52 */
+    0x26e1a166, 0x8f0a840b, 0x559e27eb, 0x89bbc241,
+    0x85400014, 0x08496361, 0x8ad07f0c, 0x05cfff3e,
+    } },
+    { { /* 53 */
+    0xa803ff1a, 0x7b407a41, 0x80024745, 0x38eb0500,
+    0x0005d851, 0x710c9934, 0x01000397, 0x24046366,
+    } },
+    { { /* 54 */
+    0x005180d0, 0x430ac000, 0x30c89071, 0x58000008,
+    0xf7000e99, 0x00415f80, 0x941000b0, 0x62800018,
+    } },
+    { { /* 55 */
+    0x09d00240, 0x01568200, 0x08015004, 0x05101d10,
+    0x001084c1, 0x10504025, 0x4d8a410f, 0xa60d4009,
+    } },
+    { { /* 56 */
+    0x914cab19, 0x098121c0, 0x0003c485, 0x80000652,
+    0x00080b04, 0x0009041d, 0x905c4849, 0x16900009,
+    } },
+    { { /* 57 */
+    0x22200c65, 0x24338412, 0x47960c03, 0x42250a04,
+    0x90880028, 0x4f084900, 0xd3aa14a2, 0x3e87d830,
+    } },
+    { { /* 58 */
+    0x1f618604, 0x41867ea4, 0x05b3c390, 0x211857a5,
+    0x2a48241e, 0x4a041128, 0x161b0a40, 0x88400d60,
+    } },
+    { { /* 59 */
+    0x9502020a, 0x10608221, 0x04000243, 0x80001444,
+    0x0c040000, 0x70000000, 0x00c11a06, 0x0c00024a,
+    } },
+    { { /* 60 */
+    0x00401a00, 0x40451404, 0xbdb30029, 0x052b0a78,
+    0xbfa0bba9, 0x8379407c, 0xe81d12fc, 0xc5694bf6,
+    } },
+    { { /* 61 */
+    0x044aeff6, 0xff022115, 0x402bed63, 0x0242d033,
+    0x00131000, 0x59ca1b02, 0x020000a0, 0x2c41a703,
+    } },
+    { { /* 62 */
+    0x8ff24880, 0x00000204, 0x10055800, 0x00489200,
+    0x20011894, 0x34805004, 0x684c3200, 0x68be49ea,
+    } },
+    { { /* 63 */
+    0x2e42184c, 0x21c9a820, 0x80b050b9, 0xff7c001e,
+    0x14e0849a, 0x01e028c1, 0xac49870e, 0xdddb130f,
+    } },
+    { { /* 64 */
+    0x89fbbe1a, 0x51a2a2e0, 0x32ca5502, 0x928b3e46,
+    0x438f1dbf, 0x32186703, 0x33c03028, 0xa9230811,
+    } },
+    { { /* 65 */
+    0x3a65c000, 0x04028fe3, 0x86252c4e, 0x00a1bf3d,
+    0x8cd43a1a, 0x317c06c9, 0x950a00e0, 0x0edb018b,
+    } },
+    { { /* 66 */
+    0x8c20e34b, 0xf0101182, 0xa7287d94, 0x40fbc9ac,
+    0x06534484, 0x44445a90, 0x00013fc8, 0xf5d40048,
+    } },
+    { { /* 67 */
+    0xec577701, 0x891dc442, 0x49286b83, 0xd2424109,
+    0x59fe061d, 0x3a221800, 0x3b9fb7e4, 0xc0eaf003,
+    } },
+    { { /* 68 */
+    0x82021386, 0xe4008980, 0x10a1b200, 0x0cc44b80,
+    0x8944d309, 0x48341faf, 0x0c458259, 0x0450420a,
+    } },
+    { { /* 69 */
+    0x10c8a040, 0x44503140, 0x01004004, 0x05408280,
+    0x442c0108, 0x1a056a30, 0x051420a6, 0x645690cf,
+    } },
+    { { /* 70 */
+    0x31000021, 0xcbf09c18, 0x63e2a120, 0x01b5104c,
+    0x9a83538c, 0x3281b8b2, 0x0a84987a, 0x0c0233e7,
+    } },
+    { { /* 71 */
+    0x9018d4cc, 0x9070a1a1, 0xe0048a1e, 0x0451c3d4,
+    0x21c2439a, 0x53104844, 0x36400292, 0xf3bd0241,
+    } },
+    { { /* 72 */
+    0xe8f0ab09, 0xa5d27dc0, 0xd24bc242, 0xd0afa43f,
+    0x34a11aa0, 0x03d88247, 0x651bc452, 0xc83ad294,
+    } },
+    { { /* 73 */
+    0x40c8001c, 0x33140e06, 0xb21b614f, 0xc0d00088,
+    0xa898a02a, 0x166ba1c5, 0x85b42e50, 0x0604c08b,
+    } },
+    { { /* 74 */
+    0x1e04f933, 0xa251056e, 0x76380400, 0x73b8ec07,
+    0x18324406, 0xc8164081, 0x63097c8a, 0xaa042980,
+    } },
+    { { /* 75 */
+    0xca9c1c24, 0x27604e0e, 0x83000990, 0x81040046,
+    0x10816011, 0x0908540d, 0xcc0a000e, 0x0c000500,
+    } },
+    { { /* 76 */
+    0xa0440430, 0x6784008b, 0x8a195288, 0x8b18865e,
+    0x41602e59, 0x9cbe8c10, 0x891c6861, 0x00089800,
+    } },
+    { { /* 77 */
+    0x089a8100, 0x41900018, 0xe4a14007, 0x640d0505,
+    0x0e4d310e, 0xff0a4806, 0x2aa81632, 0x000b852e,
+    } },
+    { { /* 78 */
+    0xca841800, 0x696c0e20, 0x16000032, 0x03905658,
+    0x1a285120, 0x11248000, 0x432618e1, 0x0eaa5d52,
+    } },
+    { { /* 79 */
+    0xae280fa0, 0x4500fa7b, 0x89406408, 0xc044c880,
+    0xb1419005, 0x24c48424, 0x603a1a34, 0xc1949000,
+    } },
+    { { /* 80 */
+    0x003a8246, 0xc106180d, 0x99100022, 0x1511e050,
+    0x00824057, 0x020a041a, 0x8930004f, 0x444ad813,
+    } },
+    { { /* 81 */
+    0xed228a02, 0x400510c0, 0x01021000, 0x31018808,
+    0x02044600, 0x0708f000, 0xa2008900, 0x22020000,
+    } },
+    { { /* 82 */
+    0x16100200, 0x10400042, 0x02605200, 0x200052f4,
+    0x82308510, 0x42021100, 0x80b54308, 0x9a2070e1,
+    } },
+    { { /* 83 */
+    0x08012040, 0xfc653500, 0xab0419c1, 0x62140286,
+    0x00440087, 0x02449085, 0x0a85405c, 0x33803207,
+    } },
+    { { /* 84 */
+    0xb8c00400, 0xc0d0ce20, 0x0080c030, 0x0d250508,
+    0x00400a90, 0x080c0200, 0x40006505, 0x41026421,
+    } },
+    { { /* 85 */
+    0x00000268, 0x847c0024, 0xde200002, 0x40498619,
+    0x40000808, 0x20010084, 0x10108400, 0x01c742cd,
+    } },
+    { { /* 86 */
+    0xd52a7038, 0x1d8f1968, 0x3e12be50, 0x81d92ef5,
+    0x2412cec4, 0x732e0828, 0x4b3424ac, 0xd41d020c,
+    } },
+    { { /* 87 */
+    0x80002a02, 0x08110097, 0x114411c4, 0x7d451786,
+    0x064949d9, 0x87914000, 0xd8c4254c, 0x491444ba,
+    } },
+    { { /* 88 */
+    0xc8001b92, 0x15800271, 0x0c000081, 0xc200096a,
+    0x40024800, 0xba493021, 0x1c802080, 0x1008e2ac,
+    } },
+    { { /* 89 */
+    0x00341004, 0x841400e1, 0x20000020, 0x10149800,
+    0x04aa70c2, 0x54208688, 0x04130c62, 0x20109180,
+    } },
+    { { /* 90 */
+    0x02064082, 0x54001c40, 0xe4e90383, 0x84802125,
+    0x2000e433, 0xe60944c0, 0x81260a03, 0x080112da,
+    } },
+    { { /* 91 */
+    0x97906901, 0xf8864001, 0x0081e24d, 0xa6510a0e,
+    0x81ec011a, 0x8441c600, 0xb62cadb8, 0x8741a46f,
+    } },
+    { { /* 92 */
+    0x4b028d54, 0x02681161, 0x2057bb60, 0x043350a0,
+    0xb7b4a8c0, 0x01122402, 0x20009ad3, 0x00c82271,
+    } },
+    { { /* 93 */
+    0x809e2081, 0xe1800c8a, 0x8151b009, 0x40281031,
+    0x89a52a0e, 0x620e69b6, 0xd1444425, 0x4d548085,
+    } },
+    { { /* 94 */
+    0x1fb12c75, 0x862dd807, 0x4841d87c, 0x226e414e,
+    0x9e088200, 0xed37f80c, 0x75268c80, 0x08149313,
+    } },
+    { { /* 95 */
+    0xc8040e32, 0x6ea6484e, 0x66702c4a, 0xba0126c0,
+    0x185dd30c, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 96 */
+    0x00000000, 0x05400000, 0x81337020, 0x03a54f81,
+    0x641055ec, 0x2344c318, 0x00341462, 0x1a090a43,
+    } },
+    { { /* 97 */
+    0x13a5187b, 0xa8480102, 0xc5440440, 0xe2dd8106,
+    0x2d481af0, 0x0416b626, 0x6e405058, 0x31128032,
+    } },
+    { { /* 98 */
+    0x0c0007e4, 0x420a8208, 0x803b4840, 0x87134860,
+    0x3428850d, 0xe5290319, 0x870a2345, 0x5c1825a9,
+    } },
+    { { /* 99 */
+    0xd9c577a6, 0x03e85e00, 0xa7000081, 0x41c6cd54,
+    0xa2042800, 0x2b0ab860, 0xda9e0020, 0x0e1a08ea,
+    } },
+    { { /* 100 */
+    0x11c0427c, 0x03768908, 0x01058621, 0x18a80000,
+    0xc44846a0, 0x20220d05, 0x91485422, 0x28978a01,
+    } },
+    { { /* 101 */
+    0x00087898, 0x31221605, 0x08804240, 0x06a2fa4e,
+    0x92110814, 0x9b042002, 0x06432e52, 0x90105000,
+    } },
+    { { /* 102 */
+    0x85ba0041, 0x20203042, 0x05a04f0b, 0x40802708,
+    0x1a930591, 0x0600df50, 0x3021a202, 0x4e800630,
+    } },
+    { { /* 103 */
+    0x04c80cc4, 0x8001a004, 0xd4316000, 0x0a020880,
+    0x00281c00, 0x00418e18, 0xca106ad0, 0x4b00f210,
+    } },
+    { { /* 104 */
+    0x1506274d, 0x88900220, 0x82a85a00, 0x81504549,
+    0x80002004, 0x2c088804, 0x000508d1, 0x4ac48001,
+    } },
+    { { /* 105 */
+    0x0062e020, 0x0a42008e, 0x6a8c3055, 0xe0a5090e,
+    0x42c42906, 0x80b34814, 0xb330803e, 0x731c0102,
+    } },
+    { { /* 106 */
+    0x600d1494, 0x09400c20, 0xc040301a, 0xc094a451,
+    0x05c88dca, 0xa40c96c2, 0x34040001, 0x011000c8,
+    } },
+    { { /* 107 */
+    0xa9c9550d, 0x1c5a2428, 0x48370142, 0x100f7a4d,
+    0x452a32b4, 0x9205317b, 0x5c44b894, 0x458a68d7,
+    } },
+    { { /* 108 */
+    0x2ed15097, 0x42081943, 0x9d40d202, 0x20979840,
+    0x064d5409, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 109 */
+    0x00000000, 0x84800000, 0x04215542, 0x17001c06,
+    0x61107624, 0xb9ddff87, 0x5c0a659f, 0x3c00245d,
+    } },
+    { { /* 110 */
+    0x0059adb0, 0x00000000, 0x00000000, 0x009b28d0,
+    0x02000422, 0x44080108, 0xac409804, 0x90288d0a,
+    } },
+    { { /* 111 */
+    0xe0018700, 0x00310400, 0x82211794, 0x10540019,
+    0x021a2cb2, 0x40039c02, 0x88043d60, 0x7900080c,
+    } },
+    { { /* 112 */
+    0xba3c1628, 0xcb088640, 0x90807274, 0x0000001e,
+    0xd8000000, 0x9c87e188, 0x04124034, 0x2791ae64,
+    } },
+    { { /* 113 */
+    0xe6fbe86b, 0x5366408f, 0x537feea6, 0xb5e4e32b,
+    0x0002869f, 0x01228548, 0x08004402, 0x20a02116,
+    } },
+    { { /* 114 */
+    0x02040004, 0x00052000, 0x01547e00, 0x01ac162c,
+    0x10852a84, 0x05308c14, 0xb943fbc3, 0x906000ca,
+    } },
+    { { /* 115 */
+    0x40326000, 0x80901200, 0x4c810b30, 0x40020054,
+    0x1d6a0029, 0x02802000, 0x00048000, 0x150c2610,
+    } },
+    { { /* 116 */
+    0x07018040, 0x0c24d94d, 0x18502810, 0x50205001,
+    0x04d01000, 0x02017080, 0x21c30108, 0x00000132,
+    } },
+    { { /* 117 */
+    0x07190088, 0x05600802, 0x4c0e0012, 0xf0a10405,
+    0x00000002, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 118 */
+    0x00000000, 0x00000000, 0x00000000, 0x00800000,
+    0x035a8e8d, 0x5a0421bd, 0x11703488, 0x00000026,
+    } },
+    { { /* 119 */
+    0x10000000, 0x8804c502, 0xf801b815, 0x25ed147c,
+    0x1bb0ed60, 0x1bd70589, 0x1a627af3, 0x0ac50d0c,
+    } },
+    { { /* 120 */
+    0x524ae5d1, 0x63050490, 0x52440354, 0x16122b57,
+    0x1101a872, 0x00182949, 0x10080948, 0x886c6000,
+    } },
+    { { /* 121 */
+    0x058f916e, 0x39903012, 0x4930f840, 0x001b8880,
+    0x00000000, 0x00428500, 0x98000058, 0x7014ea04,
+    } },
+    { { /* 122 */
+    0x611d1628, 0x60005113, 0x00a71a24, 0x00000000,
+    0x03c00000, 0x10187120, 0xa9270172, 0x89066004,
+    } },
+    { { /* 123 */
+    0x020cc022, 0x40810900, 0x8ca0202d, 0x00000e34,
+    0x00000000, 0x11012100, 0xc11a8011, 0x0892ec4c,
+    } },
+    { { /* 124 */
+    0x85000040, 0x1806c7ac, 0x0512e03e, 0x00108000,
+    0x80ce4008, 0x02106d01, 0x08568641, 0x0027011e,
+    } },
+    { { /* 125 */
+    0x083d3750, 0x4e05e032, 0x048401c0, 0x01400081,
+    0x00000000, 0x00000000, 0x00000000, 0x00591aa0,
+    } },
+    { { /* 126 */
+    0x882443c8, 0xc8001d48, 0x72030152, 0x04049013,
+    0x04008280, 0x0d148a10, 0x02088056, 0x2704a040,
+    } },
+    { { /* 127 */
+    0x4c000000, 0x00000000, 0x00000000, 0xa3200000,
+    0xa0ae1902, 0xdf002660, 0x7b15f010, 0x3ad08121,
+    } },
+    { { /* 128 */
+    0x00284180, 0x48001003, 0x8014cc00, 0x00c414cf,
+    0x30202000, 0x00000001, 0x00000000, 0x00000000,
+    } },
+    { { /* 129 */
+    0x00000000, 0x00000000, 0x00000000, 0x00000000,
+    0x00000000, 0x00000000, 0x00000000, 0x00000020,
+    } },
+    { { /* 130 */
+    0x00000000, 0x00000000, 0x00000000, 0x00000000,
+    0x00000200, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 131 */
+    0x00000000, 0x00000000, 0x00000000, 0x00000000,
+    0x00000000, 0xffffffff, 0xffff003f, 0x09ffffff,
+    } },
+    { { /* 132 */
+    0xffff0042, 0xffffffff, 0x0042ffff, 0x00000000,
+    0x0c0c0000, 0x0c00000c, 0x03000000, 0x00000300,
+    } },
+    { { /* 133 */
+    0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe,
+    0x00000000, 0x08000800, 0x0d10646e, 0x0d10646e,
+    } },
+    { { /* 134 */
+    0x00000000, 0x01000300, 0x00000000, 0x00000300,
+    0x00000000, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 135 */
+    0x00000007, 0x00000000, 0x00000000, 0x00000000,
+    0x00000000, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 136 */
+    0x00000000, 0xfffe0000, 0xffffffff, 0xffffffff,
+    0x00007fff, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 137 */
+    0x1fffffff, 0x00000000, 0x00000000, 0x8fffffff,
+    0x00000000, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 138 */
+    0x43722f8b, 0x0b042000, 0xe340e82c, 0x40c82800,
+    0x49375944, 0x04407976, 0xa3f02c93, 0x08c50038,
+    } },
+    { { /* 139 */
+    0x0003ee02, 0x35508000, 0x1e23e1c8, 0xc4498200,
+    0x2942ad5a, 0x8060c000, 0xa49a461c, 0x052ac003,
+    } },
+    { { /* 140 */
+    0xd6462a44, 0x08003dda, 0x14208388, 0x01700020,
+    0x03022021, 0x40ac3000, 0x44628620, 0x8a0020a0,
+    } },
+    { { /* 141 */
+    0x80040253, 0x14840402, 0x10047bfb, 0x11e27fa4,
+    0x00a42441, 0x20c01421, 0x70003a50, 0x27430002,
+    } },
+    { { /* 142 */
+    0x208245c9, 0x0fc14630, 0x28503c88, 0xa0248602,
+    0x88062388, 0x40000e19, 0xeb6422aa, 0xcd28001c,
+    } },
+    { { /* 143 */
+    0x02e1a120, 0x8200840b, 0x549e279b, 0xa0b38141,
+    0x85080010, 0x08002061, 0x08d02f08, 0x010fbe3e,
+    } },
+    { { /* 144 */
+    0xa803f718, 0x5b080a41, 0x00020504, 0x382a0500,
+    0x00015041, 0x21081910, 0x00000313, 0x04046122,
+    } },
+    { { /* 145 */
+    0x100140d0, 0x40228000, 0x40488050, 0x10000008,
+    0x370006d1, 0x00005e80, 0x941000a0, 0x60000018,
+    } },
+    { { /* 146 */
+    0x00900240, 0x00548000, 0x00080000, 0x00100900,
+    0x00000040, 0x10105020, 0x4c022400, 0x06010001,
+    } },
+    { { /* 147 */
+    0x814c2918, 0x08012100, 0x00036485, 0x10214452,
+    0x00080904, 0x0000000d, 0x80004988, 0x16910001,
+    } },
+    { { /* 148 */
+    0x40000765, 0x04338492, 0x45928c00, 0x52200016,
+    0xd0080228, 0x4c084300, 0xc32a40a2, 0x2e009810,
+    } },
+    { { /* 149 */
+    0x16708000, 0x40826e84, 0x04b3c390, 0x21187c85,
+    0x02c8041c, 0x4a001120, 0x361b0a48, 0x89005540,
+    } },
+    { { /* 150 */
+    0x9902000a, 0x10400221, 0x04000242, 0x00000044,
+    0x0c040000, 0x00000010, 0x00001216, 0x00000242,
+    } },
+    { { /* 151 */
+    0x00401a20, 0x00000400, 0xb5b30009, 0x15230a18,
+    0x1fe89ba0, 0x8379507c, 0xc09d10fd, 0x0560dbf6,
+    } },
+    { { /* 152 */
+    0x0242ef92, 0xdf020110, 0x08226961, 0x02029035,
+    0x00030000, 0x45aa1a02, 0x02000001, 0x28518101,
+    } },
+    { { /* 153 */
+    0x02d26080, 0x00000280, 0x00011800, 0x00009200,
+    0x20000880, 0x35000405, 0x60442000, 0x609e49e6,
+    } },
+    { { /* 154 */
+    0x2a42104c, 0xa1482820, 0x802010b1, 0x7b9c000e,
+    0x14a08490, 0x41e028c1, 0x8c490704, 0x0cc8100d,
+    } },
+    { { /* 155 */
+    0x89ba8412, 0x142202c0, 0x0ac05500, 0x92833ec4,
+    0x43871ca3, 0x22a04703, 0x03c03028, 0xa0200801,
+    } },
+    { { /* 156 */
+    0x30448000, 0x000085a3, 0x2225200e, 0x0001b73c,
+    0x8c503220, 0x315d0099, 0x940200a0, 0x0e4b0003,
+    } },
+    { { /* 157 */
+    0x8c20e342, 0xd0910080, 0xa3281d94, 0x60c1499c,
+    0x07134406, 0x44445a90, 0x00000f88, 0x95c40040,
+    } },
+    { { /* 158 */
+    0x84477581, 0xc0534402, 0x01082b83, 0x92424000,
+    0x09a60611, 0x32220800, 0x1bddb384, 0xc08af000,
+    } },
+    { { /* 159 */
+    0x00020282, 0x6c008800, 0x00219200, 0x8c844180,
+    0x09441308, 0x000007a7, 0x0c418051, 0x00d06002,
+    } },
+    { { /* 160 */
+    0x10d0a000, 0x44003004, 0x01000000, 0x07008201,
+    0x440e0100, 0x08056830, 0x051464b2, 0x441410e6,
+    } },
+    { { /* 161 */
+    0x21000011, 0xcbc09c08, 0x40c2e120, 0x41b4304c,
+    0x9a8310ac, 0x328198b2, 0x00849822, 0xbc123369,
+    } },
+    { { /* 162 */
+    0xc03bd6c0, 0x0c53a1a1, 0xea008a1e, 0x05d8cbf0,
+    0x21c34390, 0x4a1c4805, 0x324002d0, 0xd79d0041,
+    } },
+    { { /* 163 */
+    0xe8b02b09, 0x24527dc0, 0xd04bc240, 0xc8aba000,
+    0x34a98a80, 0x41c98000, 0x241f8010, 0x487b9200,
+    } },
+    { { /* 164 */
+    0x00cc0000, 0x33008406, 0x001b410f, 0x80402000,
+    0xa0988022, 0x006ba186, 0x85a42a30, 0x06044181,
+    } },
+    { { /* 165 */
+    0x00046021, 0xa0010080, 0x46b80400, 0x03a0e90f,
+    0x18200000, 0x081040a0, 0x0001380a, 0xa8000500,
+    } },
+    { { /* 166 */
+    0xc28a0404, 0x2720000a, 0x830c0910, 0x00000802,
+    0x10806211, 0x0808000c, 0x0c08000c, 0x08400000,
+    } },
+    { { /* 167 */
+    0x00441410, 0x6404000b, 0x800150c0, 0x8984047e,
+    0x41400658, 0x94a4c000, 0x09dca862, 0x00001800,
+    } },
+    { { /* 168 */
+    0x000a8100, 0x41900008, 0xe4a14007, 0x64452501,
+    0x0e7d11ee, 0xfb084800, 0x08a81616, 0x0009c92e,
+    } },
+    { { /* 169 */
+    0x4a821800, 0x6b6406a0, 0x16000002, 0x83905648,
+    0x002a73a0, 0x00248000, 0x470288f9, 0x0faa4d02,
+    } },
+    { { /* 170 */
+    0x8e800000, 0x7554b87b, 0xd9402418, 0x040cc880,
+    0xb0410000, 0x04428c24, 0x001a5a34, 0xc1108000,
+    } },
+    { { /* 171 */
+    0x00328046, 0x8106180d, 0xcd920002, 0x74016014,
+    0x00916112, 0x420ac098, 0x8420040f, 0x40029a13,
+    } },
+    { { /* 172 */
+    0xfd228a62, 0x40808188, 0x21031000, 0x31010808,
+    0x07044420, 0x0388b812, 0xa3008900, 0x22020000,
+    } },
+    { { /* 173 */
+    0x46001210, 0x00410042, 0x52415680, 0x200052f0,
+    0x82148610, 0x46021004, 0x8035430a, 0xd80060e0,
+    } },
+    { { /* 174 */
+    0x08010041, 0x6c653400, 0xab0411c1, 0x22040286,
+    0x00000003, 0x00009084, 0x02814015, 0x33000202,
+    } },
+    { { /* 175 */
+    0x38400400, 0xc0c00e20, 0x00850030, 0x0d250500,
+    0x81d04ad0, 0x020c2280, 0x6240b605, 0x62802679,
+    } },
+    { { /* 176 */
+    0x080802ea, 0x8579dd67, 0xdea0081b, 0x40008735,
+    0xd1000a8c, 0xa22505aa, 0x15108440, 0x0080404d,
+    } },
+    { { /* 177 */
+    0x8d220012, 0x058f1968, 0x3a1a9080, 0x85618464,
+    0x2002ccc0, 0x732e0820, 0x0b3420a4, 0x14150004,
+    } },
+    { { /* 178 */
+    0x82002001, 0x08000057, 0x00445004, 0x79051212,
+    0x000940d0, 0x84004000, 0xd844054c, 0x5114409a,
+    } },
+    { { /* 179 */
+    0x40000b12, 0x15800201, 0x08002001, 0xc200084a,
+    0x40020800, 0x98093020, 0x18800000, 0x0008e22c,
+    } },
+    { { /* 180 */
+    0x00040004, 0x001410e0, 0x20008020, 0x10009800,
+    0x00827082, 0x1c000288, 0x00014c22, 0x08209100,
+    } },
+    { { /* 181 */
+    0x00404002, 0x44001c00, 0x7cc10383, 0x84002121,
+    0x0002e002, 0xe20a44c0, 0x81260e03, 0x080002d0,
+    } },
+    { { /* 182 */
+    0x96902921, 0xb8c24001, 0x00806241, 0xa6510a06,
+    0x812c0112, 0x0400c600, 0xa2800cb0, 0x8640a429,
+    } },
+    { { /* 183 */
+    0x4a028000, 0x02003041, 0x0057ba40, 0x20205001,
+    0x24b08880, 0x01122002, 0x000402d3, 0x00000211,
+    } },
+    { { /* 184 */
+    0x40040080, 0xe0000c82, 0x00003008, 0x00081011,
+    0x81a40208, 0x420e40a0, 0xc0400400, 0x48000081,
+    } },
+    { { /* 185 */
+    0x0f912df5, 0x0629d807, 0x4001007c, 0x824e4546,
+    0x1008c000, 0xed363005, 0x65400c80, 0x0810930b,
+    } },
+    { { /* 186 */
+    0xe8200600, 0x6082c80a, 0x403400ca, 0x12012e02,
+    0x19489004, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 187 */
+    0x00000000, 0x05400000, 0x00311000, 0x02a54c00,
+    0x44105520, 0x23040310, 0x80345422, 0x12010a03,
+    } },
+    { { /* 188 */
+    0x01a1126b, 0xa0482000, 0x45400448, 0xe08d8000,
+    0x28401af0, 0x04168626, 0x4c005018, 0x21120032,
+    } },
+    { { /* 189 */
+    0x0d0005e4, 0x42008a08, 0x00334800, 0x87030860,
+    0x34008501, 0xe4280109, 0x81002045, 0x5c1825a8,
+    } },
+    { { /* 190 */
+    0xd80435a0, 0x02e01c02, 0x020000a1, 0x4146c050,
+    0xa6046800, 0xbb8af260, 0xc8b60000, 0x600200e2,
+    } },
+    { { /* 191 */
+    0x0080023e, 0x03728900, 0x00068681, 0x08880000,
+    0x41404600, 0x20000e04, 0x10481622, 0x22178a00,
+    } },
+    { { /* 192 */
+    0x00007418, 0x21021200, 0x08800200, 0x0420984a,
+    0x12110000, 0x99040002, 0x04022a55, 0x10105000,
+    } },
+    { { /* 193 */
+    0x459a0000, 0xa000b02a, 0x0208420a, 0x00002708,
+    0x08128090, 0x04018740, 0x3020e202, 0x8c800630,
+    } },
+    { { /* 194 */
+    0x04c004c4, 0x80002000, 0xd8314000, 0x02000080,
+    0x00081400, 0x00000218, 0x8a100880, 0x40002010,
+    } },
+    { { /* 195 */
+    0x1500010d, 0x00000000, 0x80a04000, 0x01500140,
+    0x80002004, 0x04080004, 0x00000010, 0x4a049001,
+    } },
+    { { /* 196 */
+    0x80000020, 0x0842000c, 0x2a8c3041, 0xc085090e,
+    0x40c42906, 0x00100800, 0xb2308006, 0x21380102,
+    } },
+    { { /* 197 */
+    0x030d0080, 0x09400420, 0x80000012, 0x80040410,
+    0x004888ca, 0x24040602, 0x00040001, 0x01100008,
+    } },
+    { { /* 198 */
+    0xa9c8550d, 0x0c522428, 0x48310000, 0x022f624d,
+    0x412830a0, 0xd205057b, 0x1844a894, 0x45c26cc2,
+    } },
+    { { /* 199 */
+    0x2ed14017, 0x02081901, 0x1500c202, 0x20919040,
+    0x044d0401, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 200 */
+    0x00000000, 0x80800000, 0x04201542, 0x06000c02,
+    0x60001404, 0xb9d99f87, 0x540a059f, 0x3810245d,
+    } },
+    { { /* 201 */
+    0x004825b0, 0x00000000, 0x00000000, 0x00990850,
+    0x02000420, 0x44080108, 0x28009840, 0x0008810a,
+    } },
+    { { /* 202 */
+    0x40018400, 0x00210400, 0x82000794, 0x00500001,
+    0x00002482, 0x00001c00, 0x80043c01, 0x49000800,
+    } },
+    { { /* 203 */
+    0xf83c0228, 0xcb0886c0, 0xa0006230, 0x00000004,
+    0x18000000, 0x0007a148, 0x00124024, 0x22852c40,
+    } },
+    { { /* 204 */
+    0xe6b3a96f, 0x5126400f, 0x723b6c86, 0xb5a4e20b,
+    0x0222859f, 0x0123854c, 0x40000402, 0x20202102,
+    } },
+    { { /* 205 */
+    0x02240004, 0x00042080, 0x00047e00, 0x01a01604,
+    0x10042a80, 0x0032d800, 0x3183fa81, 0x00200488,
+    } },
+    { { /* 206 */
+    0x40872000, 0x84100000, 0x48800221, 0x00000074,
+    0x114a0029, 0x02c80000, 0x00049000, 0x11000410,
+    } },
+    { { /* 207 */
+    0xc5010010, 0x0000c957, 0x08102d00, 0x50204000,
+    0x04501000, 0x00013088, 0x40020008, 0x00400012,
+    } },
+    { { /* 208 */
+    0x01000010, 0x01200820, 0x08060010, 0xa0000000,
+    0x00000000, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 209 */
+    0x00000000, 0x00000000, 0x00000000, 0x00800000,
+    0x011e8a09, 0x18022138, 0x10700480, 0x00000006,
+    } },
+    { { /* 210 */
+    0x10000000, 0x88044402, 0xf8013815, 0x21e9041c,
+    0x1b306c60, 0x08820588, 0x1a607af3, 0x0ac5870c,
+    } },
+    { { /* 211 */
+    0x524a00c1, 0x22050080, 0x50420114, 0x04902206,
+    0x0000a800, 0x00002901, 0x10080840, 0x88480000,
+    } },
+    { { /* 212 */
+    0x018f156f, 0x0b012000, 0x45107040, 0x000088a0,
+    0x00000000, 0x00028100, 0x98000090, 0x7010e006,
+    } },
+    { { /* 213 */
+    0x41091608, 0x00000101, 0x00963a20, 0x00000000,
+    0x22400000, 0x021a7120, 0xa2270002, 0x80022000,
+    } },
+    { { /* 214 */
+    0x0200c102, 0x00c10800, 0x8ca02029, 0x00000624,
+    0x00000000, 0x01000100, 0x01180000, 0x00004020,
+    } },
+    { { /* 215 */
+    0x04000000, 0x10020480, 0x0410803e, 0x00008000,
+    0x80024000, 0x00004800, 0x00400200, 0x00000110,
+    } },
+    { { /* 216 */
+    0x00252000, 0x08040020, 0x00800280, 0x00000000,
+    0x00000000, 0x00000000, 0x00000000, 0x005802a0,
+    } },
+    { { /* 217 */
+    0x08000200, 0x08000140, 0x20020000, 0x00041003,
+    0x00000000, 0x00108200, 0x00800010, 0x07040000,
+    } },
+    { { /* 218 */
+    0x44000000, 0x00000000, 0x00000000, 0xa2200000,
+    0xa08c0000, 0x48300020, 0x59126008, 0x00100100,
+    } },
+    { { /* 219 */
+    0x00084180, 0x08000001, 0x80044c00, 0x00801482,
+    0x10212000, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 220 */
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    } },
+    { { /* 221 */
+    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+    0xffffffff, 0x0000000f, 0x00000000, 0x00000000,
+    } },
+    { { /* 222 */
+    0x00000fff, 0x00000000, 0x00000000, 0x00000000,
+    0x00000000, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 223 */
+    0x00000000, 0x00000000, 0x00000000, 0x00000000,
+    0x00000000, 0x00000000, 0x00000000, 0x00000040,
+    } },
+    { { /* 224 */
+    0x000c0003, 0x00003c00, 0x0000f000, 0x00003c00,
+    0x00000000, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 225 */
+    0x000033f0, 0x0000c000, 0x00000000, 0x600c0c03,
+    0x00000000, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 226 */
+    0x000c3003, 0x18c00c0c, 0x00c03060, 0x60000c03,
+    0x00000000, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 227 */
+    0xfdffb729, 0x000001ff, 0xb7290000, 0x00000000,
+    0x00000000, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 228 */
+    0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe,
+    0x00000000, 0x00000000, 0x00004004, 0x00004004,
+    } },
+    { { /* 229 */
+    0x0000000c, 0x00000000, 0x00000000, 0x00000000,
+    0x00000000, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 230 */
+    0x0f000000, 0x00000000, 0x00000000, 0x00000000,
+    0x00000000, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 231 */
+    0xffff0002, 0xffffffff, 0x0002ffff, 0x00000000,
+    0x00000000, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 232 */
+    0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe,
+    0x00000000, 0x00000000, 0x0e1c7707, 0x0e1c7707,
+    } },
+    { { /* 233 */
+    0x00000c00, 0x000000c3, 0x00000000, 0x18000000,
+    0x00000000, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 234 */
+    0x00000000, 0x00000000, 0x00000000, 0x00000000,
+    0x00000000, 0x10000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 235 */
+    0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe,
+    0x00000000, 0x00000000, 0x10408810, 0x10408810,
+    } },
+    { { /* 236 */
+    0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe,
+    0x00000000, 0x08000800, 0x115c0ff7, 0x115c0ff7,
+    } },
+    { { /* 237 */
+    0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe,
+    0x00000000, 0x00000000, 0x000cab83, 0x0004ab83,
+    } },
+    { { /* 238 */
+    0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe,
+    0x00000000, 0x00000000, 0x00080000, 0x00080000,
+    } },
+    { { /* 239 */
+    0x030000f0, 0x00000000, 0x0c00001e, 0x1e000000,
+    0x00000000, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 240 */
+    0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe,
+    0x00000000, 0x08000000, 0x1438268f, 0x1438268f,
+    } },
+    { { /* 241 */
+    0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe,
+    0x00000000, 0x00000000, 0x02045301, 0x02045301,
+    } },
+    { { /* 242 */
+    0xffff0042, 0xffffffff, 0x0042ffff, 0x003c000c,
+    0x00000000, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 243 */
+    0xfdff8f04, 0xfdff01ff, 0x8f0401ff, 0x00000000,
+    0x00000000, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 244 */
+    0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe,
+    0x00000000, 0x00000000, 0x34582212, 0x34582212,
+    } },
+    { { /* 245 */
+    0x0000f000, 0x66000000, 0x00330180, 0x60030033,
+    0x00000000, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 246 */
+    0x000330c0, 0x00000000, 0x00000000, 0x60000003,
+    0x00000000, 0x00000000, 0x00001b60, 0x003c0000,
+    } },
+    { { /* 247 */
+    0x00009e2c, 0x00000000, 0x9e2c0000, 0x00000000,
+    0x00000000, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 248 */
+    0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe,
+    0x00000000, 0x00000000, 0x00000880, 0x00000880,
+    } },
+    { { /* 249 */
+    0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe,
+    0x00000000, 0x08000000, 0x3fdfffff, 0x3f5fffff,
+    } },
+    { { /* 250 */
+    0xfffffffe, 0x87ffffff, 0x0fffffff, 0x00000000,
+    0x00000000, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 251 */
+    0x00000000, 0x00000000, 0x07fffffe, 0x07fffffe,
+    0x00000000, 0x00800000, 0x18400004, 0x18400084,
+    } },
+    { { /* 252 */
+    0xc0000000, 0x00000000, 0x00000000, 0x00000000,
+    0x00000000, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 253 */
+    0xffff00d2, 0xffffffff, 0x00d2ffff, 0x00000000,
+    0x00030000, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 254 */
+    0x00000000, 0x00000000, 0x077dfffe, 0x077dfffe,
+    0x00000000, 0x00000000, 0x10400010, 0x10400010,
+    } },
+    { { /* 255 */
+    0x00000000, 0x00000000, 0x00000000, 0x00000000,
+    0x00000000, 0x00000000, 0x00000280, 0x00000000,
+    } },
+    { { /* 256 */
+    0x7f7b7f8b, 0xef553db4, 0xf35dfba8, 0x400b0243,
+    0x8d3efb40, 0x8c2c7bf7, 0xe3fa6eff, 0xa8ed1d3a,
+    } },
+    { { /* 257 */
+    0xcf83e602, 0x35558cf5, 0xffabe048, 0xd85992b9,
+    0x2892ab18, 0x8020d7e9, 0xf583c438, 0x450ae74a,
+    } },
+    { { /* 258 */
+    0x9714b000, 0x54007762, 0x1420d188, 0xc8c01020,
+    0x00002121, 0x0c0413a8, 0x04408000, 0x082870c0,
+    } },
+    { { /* 259 */
+    0x000408c0, 0x80000002, 0x14722b7b, 0x3bfb7924,
+    0x1ae43327, 0x38ef9835, 0x28029ad1, 0xbf69a813,
+    } },
+    { { /* 260 */
+    0x2fc665cf, 0xafc96b11, 0x5053340f, 0xa00486a2,
+    0xe8090106, 0xc00e3f0f, 0x81450a88, 0xc6010010,
+    } },
+    { { /* 261 */
+    0x26e1a161, 0xce00444b, 0xd4eec7aa, 0x85bbcadf,
+    0xa5203a74, 0x8840436c, 0x8bd23f06, 0x3befff79,
+    } },
+    { { /* 262 */
+    0xe8eff75a, 0x5b36fbcb, 0x1bfd0d49, 0x39ee0154,
+    0x2e75d855, 0xa91abfd8, 0xf6bff3d7, 0xb40c67e0,
+    } },
+    { { /* 263 */
+    0x081382c2, 0xd08bd49d, 0x1061065a, 0x59e074f2,
+    0xb3128f9f, 0x6aaa0080, 0xb05e3230, 0x60ac9d7a,
+    } },
+    { { /* 264 */
+    0xc900d303, 0x8a563098, 0x13907000, 0x18421f14,
+    0x0008c060, 0x10808008, 0xec900400, 0xe6332817,
+    } },
+    { { /* 265 */
+    0x90000758, 0x4e09f708, 0xfc83f485, 0x18c8af53,
+    0x080c187c, 0x01146adf, 0xa734c80c, 0x2710a011,
+    } },
+    { { /* 266 */
+    0x422228c5, 0x00210413, 0x41123010, 0x40001820,
+    0xc60c022b, 0x10000300, 0x00220022, 0x02495810,
+    } },
+    { { /* 267 */
+    0x9670a094, 0x1792eeb0, 0x05f2cb96, 0x23580025,
+    0x42cc25de, 0x4a04cf38, 0x359f0c40, 0x8a001128,
+    } },
+    { { /* 268 */
+    0x910a13fa, 0x10560229, 0x04200641, 0x84f00484,
+    0x0c040000, 0x412c0400, 0x11541206, 0x00020a4b,
+    } },
+    { { /* 269 */
+    0x00c00200, 0x00940000, 0xbfbb0001, 0x242b167c,
+    0x7fa89bbb, 0xe3790c7f, 0xe00d10f4, 0x9f014132,
+    } },
+    { { /* 270 */
+    0x35728652, 0xff1210b4, 0x4223cf27, 0x8602c06b,
+    0x1fd33106, 0xa1aa3a0c, 0x02040812, 0x08012572,
+    } },
+    { { /* 271 */
+    0x485040cc, 0x601062d0, 0x29001c80, 0x00109a00,
+    0x22000004, 0x00800000, 0x68002020, 0x609ecbe6,
+    } },
+    { { /* 272 */
+    0x3f73916e, 0x398260c0, 0x48301034, 0xbd5c0006,
+    0xd6fb8cd1, 0x43e820e1, 0x084e0600, 0xc4d00500,
+    } },
+    { { /* 273 */
+    0x89aa8d1f, 0x1602a6e1, 0x21ed0001, 0x1a8b3656,
+    0x13a51fb7, 0x30a06502, 0x23c7b278, 0xe9226c93,
+    } },
+    { { /* 274 */
+    0x3a74e47f, 0x98208fe3, 0x2625280e, 0xbf49bf9c,
+    0xac543218, 0x1916b949, 0xb5220c60, 0x0659fbc1,
+    } },
+    { { /* 275 */
+    0x8420e343, 0x800008d9, 0x20225500, 0x00a10184,
+    0x20104800, 0x40801380, 0x00160d04, 0x80200040,
+    } },
+    { { /* 276 */
+    0x8de7fd40, 0xe0985436, 0x091e7b8b, 0xd249fec8,
+    0x8dee0611, 0xba221937, 0x9fdd77f4, 0xf0daf3ec,
+    } },
+    { { /* 277 */
+    0xec424386, 0x26048d3f, 0xc021fa6c, 0x0cc2628e,
+    0x0145d785, 0x559977ad, 0x4045e250, 0xa154260b,
+    } },
+    { { /* 278 */
+    0x58199827, 0xa4103443, 0x411405f2, 0x07002280,
+    0x426600b4, 0x15a17210, 0x41856025, 0x00000054,
+    } },
+    { { /* 279 */
+    0x01040201, 0xcb70c820, 0x6a629320, 0x0095184c,
+    0x9a8b1880, 0x3201aab2, 0x00c4d87a, 0x04c3f3e5,
+    } },
+    { { /* 280 */
+    0xa238d44d, 0x5072a1a1, 0x84fc980a, 0x44d1c152,
+    0x20c21094, 0x42104180, 0x3a000000, 0xd29d0240,
+    } },
+    { { /* 281 */
+    0xa8b12f01, 0x2432bd40, 0xd04bd34d, 0xd0ada723,
+    0x75a10a92, 0x01e9adac, 0x771f801a, 0xa01b9225,
+    } },
+    { { /* 282 */
+    0x20cadfa1, 0x738c0602, 0x003b577f, 0x00d00bff,
+    0x0088806a, 0x0029a1c4, 0x05242a05, 0x16234009,
+    } },
+    { { /* 283 */
+    0x80056822, 0xa2112011, 0x64900004, 0x13824849,
+    0x193023d5, 0x08922980, 0x88115402, 0xa0042001,
+    } },
+    { { /* 284 */
+    0x81800400, 0x60228502, 0x0b010090, 0x12020022,
+    0x00834011, 0x00001a01, 0x00000000, 0x00000000,
+    } },
+    { { /* 285 */
+    0x00000000, 0x4684009f, 0x020012c8, 0x1a0004fc,
+    0x0c4c2ede, 0x80b80402, 0x0afca826, 0x22288c02,
+    } },
+    { { /* 286 */
+    0x8f7ba0e0, 0x2135c7d6, 0xf8b106c7, 0x62550713,
+    0x8a19936e, 0xfb0e6efa, 0x48f91630, 0x7debcd2f,
+    } },
+    { { /* 287 */
+    0x4e845892, 0x7a2e4ca0, 0x561eedea, 0x1190c649,
+    0xe83a5324, 0x8124cfdb, 0x634218f1, 0x1a8a5853,
+    } },
+    { { /* 288 */
+    0x24d37420, 0x0514aa3b, 0x89586018, 0xc0004800,
+    0x91018268, 0x2cd684a4, 0xc4ba8886, 0x02100377,
+    } },
+    { { /* 289 */
+    0x00388244, 0x404aae11, 0x510028c0, 0x15146044,
+    0x10007310, 0x02480082, 0x40060205, 0x0000c003,
+    } },
+    { { /* 290 */
+    0x0c020000, 0x02200008, 0x40009000, 0xd161b800,
+    0x32744621, 0x3b8af800, 0x8b00050f, 0x2280bbd0,
+    } },
+    { { /* 291 */
+    0x07690600, 0x00438040, 0x50005420, 0x250c41d0,
+    0x83108410, 0x02281101, 0x00304008, 0x020040a1,
+    } },
+    { { /* 292 */
+    0x20000040, 0xabe31500, 0xaa443180, 0xc624c2c6,
+    0x8004ac13, 0x03d1b000, 0x4285611e, 0x1d9ff303,
+    } },
+    { { /* 293 */
+    0x78e8440a, 0xc3925e26, 0x00852000, 0x4000b001,
+    0x88424a90, 0x0c8dca04, 0x4203a705, 0x000422a1,
+    } },
+    { { /* 294 */
+    0x0c018668, 0x10795564, 0xdea00002, 0x40c12000,
+    0x5001488b, 0x04000380, 0x50040000, 0x80d0c05d,
+    } },
+    { { /* 295 */
+    0x970aa010, 0x4dafbb20, 0x1e10d921, 0x83140460,
+    0xa6d68848, 0x733fd83b, 0x497427bc, 0x92130ddc,
+    } },
+    { { /* 296 */
+    0x8ba1142b, 0xd1392e75, 0x50503009, 0x69008808,
+    0x024a49d4, 0x80164010, 0x89d7e564, 0x5316c020,
+    } },
+    { { /* 297 */
+    0x86002b92, 0x15e0a345, 0x0c03008b, 0xe200196e,
+    0x80067031, 0xa82916a5, 0x18802000, 0xe1487aac,
+    } },
+    { { /* 298 */
+    0xb5d63207, 0x5f9132e8, 0x20e550a1, 0x10807c00,
+    0x9d8a7280, 0x421f00aa, 0x02310e22, 0x04941100,
+    } },
+    { { /* 299 */
+    0x40080022, 0x5c100010, 0xfcc80343, 0x0580a1a5,
+    0x04008433, 0x6e080080, 0x81262a4b, 0x2901aad8,
+    } },
+    { { /* 300 */
+    0x4490684d, 0xba880009, 0x00820040, 0x87d10000,
+    0xb1e6215b, 0x80083161, 0xc2400800, 0xa600a069,
+    } },
+    { { /* 301 */
+    0x4a328d58, 0x550a5d71, 0x2d579aa0, 0x4aa64005,
+    0x30b12021, 0x01123fc6, 0x260a10c2, 0x50824462,
+    } },
+    { { /* 302 */
+    0x80409880, 0x810004c0, 0x00002003, 0x38180000,
+    0xf1a60200, 0x720e4434, 0x92e035a2, 0x09008101,
+    } },
+    { { /* 303 */
+    0x00000400, 0x00008885, 0x00000000, 0x00804000,
+    0x00000000, 0x00004040, 0x00000000, 0x00000000,
+    } },
+    { { /* 304 */
+    0x00000000, 0x08000000, 0x00000082, 0x00000000,
+    0x88000004, 0xe7efbfff, 0xffbfffff, 0xfdffefef,
+    } },
+    { { /* 305 */
+    0xbffefbff, 0x057fffff, 0x85b30034, 0x42164706,
+    0xe4105402, 0xb3058092, 0x81305422, 0x180b4263,
+    } },
+    { { /* 306 */
+    0x13f5387b, 0xa9ea07e5, 0x05143c4c, 0x80020600,
+    0xbd481ad9, 0xf496ee37, 0x7ec0705f, 0x355fbfb2,
+    } },
+    { { /* 307 */
+    0x455fe644, 0x41469000, 0x063b1d40, 0xfe1362a1,
+    0x39028505, 0x0c080548, 0x0000144f, 0x58183488,
+    } },
+    { { /* 308 */
+    0xd8153077, 0x4bfbbd0e, 0x85008a90, 0xe61dc100,
+    0xb386ed14, 0x639bff72, 0xd9befd92, 0x0a92887b,
+    } },
+    { { /* 309 */
+    0x1cb2d3fe, 0x177ab980, 0xdc1782c9, 0x3980fffb,
+    0x590c4260, 0x37df0f01, 0xb15094a3, 0x23070623,
+    } },
+    { { /* 310 */
+    0x3102f85a, 0x310201f0, 0x1e820040, 0x056a3a0a,
+    0x12805b84, 0xa7148002, 0xa04b2612, 0x90011069,
+    } },
+    { { /* 311 */
+    0x848a1000, 0x3f801802, 0x42400708, 0x4e140110,
+    0x180080b0, 0x0281c510, 0x10298202, 0x88000210,
+    } },
+    { { /* 312 */
+    0x00420020, 0x11000280, 0x4413e000, 0xfe025804,
+    0x30283c07, 0x04739798, 0xcb13ced1, 0x431f6210,
+    } },
+    { { /* 313 */
+    0x55ac278d, 0xc892422e, 0x02885380, 0x78514039,
+    0x8088292c, 0x2428b900, 0x080e0c41, 0x42004421,
+    } },
+    { { /* 314 */
+    0x08680408, 0x12040006, 0x02903031, 0xe0855b3e,
+    0x10442936, 0x10822814, 0x83344266, 0x531b013c,
+    } },
+    { { /* 315 */
+    0x0e0d0404, 0x00510c22, 0xc0000012, 0x88000040,
+    0x0000004a, 0x00000000, 0x5447dff6, 0x00088868,
+    } },
+    { { /* 316 */
+    0x00000081, 0x40000000, 0x00000100, 0x02000000,
+    0x00080600, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 317 */
+    0x00000080, 0x00000040, 0x00000000, 0x00001040,
+    0x00000000, 0xf7fdefff, 0xfffeff7f, 0xfffffbff,
+    } },
+    { { /* 318 */
+    0xbffffdff, 0x00ffffff, 0x042012c2, 0x07080c06,
+    0x01101624, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 319 */
+    0xe0000000, 0xfffffffe, 0x7f79ffff, 0x00f928df,
+    0x80120c32, 0xd53a0008, 0xecc2d858, 0x2fa89d18,
+    } },
+    { { /* 320 */
+    0xe0109620, 0x2622d60c, 0x02060f97, 0x9055b240,
+    0x501180a2, 0x04049800, 0x00004000, 0x00000000,
+    } },
+    { { /* 321 */
+    0x00000000, 0x00000000, 0x00000000, 0xfffffbc0,
+    0xdffbeffe, 0x62430b08, 0xfb3b41b6, 0x23896f74,
+    } },
+    { { /* 322 */
+    0xecd7ae7f, 0x5960e047, 0x098fa096, 0xa030612c,
+    0x2aaa090d, 0x4f7bd44e, 0x388bc4b2, 0x6110a9c6,
+    } },
+    { { /* 323 */
+    0x42000014, 0x0202800c, 0x6485fe48, 0xe3f7d63e,
+    0x0c073aa0, 0x0430e40c, 0x1002f680, 0x00000000,
+    } },
+    { { /* 324 */
+    0x00000000, 0x00000000, 0x00000000, 0x00100000,
+    0x00004000, 0x00004000, 0x00000100, 0x00000000,
+    } },
+    { { /* 325 */
+    0x00000000, 0x40000000, 0x00000000, 0x00000400,
+    0x00008000, 0x00000000, 0x00400400, 0x00000000,
+    } },
+    { { /* 326 */
+    0x00000000, 0x40000000, 0x00000000, 0x00000800,
+    0xfebdffe0, 0xffffffff, 0xfbe77f7f, 0xf7ffffbf,
+    } },
+    { { /* 327 */
+    0xefffffff, 0xdff7ff7e, 0xfbdff6f7, 0x804fbffe,
+    0x00000000, 0x00000000, 0x00000000, 0x7fffef00,
+    } },
+    { { /* 328 */
+    0xb6f7ff7f, 0xb87e4406, 0x88313bf5, 0x00f41796,
+    0x1391a960, 0x72490080, 0x0024f2f3, 0x42c88701,
+    } },
+    { { /* 329 */
+    0x5048e3d3, 0x43052400, 0x4a4c0000, 0x10580227,
+    0x01162820, 0x0014a809, 0x00000000, 0x00683ec0,
+    } },
+    { { /* 330 */
+    0x00000000, 0x00000000, 0x00000000, 0xffe00000,
+    0xfddbb7ff, 0x000000f7, 0xc72e4000, 0x00000180,
+    } },
+    { { /* 331 */
+    0x00012000, 0x00004000, 0x00300000, 0xb4f7ffa8,
+    0x03ffadf3, 0x00000120, 0x00000000, 0x00000000,
+    } },
+    { { /* 332 */
+    0x00000000, 0x00000000, 0x00000000, 0xfffbf000,
+    0xfdcf9df7, 0x15c301bf, 0x810a1827, 0x0a00a842,
+    } },
+    { { /* 333 */
+    0x80088108, 0x18048008, 0x0012a3be, 0x00000000,
+    0x00000000, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 334 */
+    0x00000000, 0x00000000, 0x00000000, 0x90000000,
+    0xdc3769e6, 0x3dff6bff, 0xf3f9fcf8, 0x00000004,
+    } },
+    { { /* 335 */
+    0x80000000, 0xe7eebf6f, 0x5da2dffe, 0xc00b3fd8,
+    0xa00c0984, 0x69100040, 0xb912e210, 0x5a0086a5,
+    } },
+    { { /* 336 */
+    0x02896800, 0x6a809005, 0x00030010, 0x80000000,
+    0x8e001ff9, 0x00000001, 0x00000000, 0x00000000,
+    } },
+    { { /* 337 */
+    0x0000002f, 0x000003fe, 0x00000000, 0x00000000,
+    0x00000000, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 338 */
+    0xc373ff8b, 0x1b0f6840, 0xf34ce9ac, 0xc0080200,
+    0xca3e795c, 0x06487976, 0xf7f02fdf, 0xa8ff033a,
+    } },
+    { { /* 339 */
+    0x233fef37, 0xfd59b004, 0xfffff3ca, 0xfff9de9f,
+    0x7df7abff, 0x8eecc000, 0xffdbeebf, 0x45fad003,
+    } },
+    { { /* 340 */
+    0xdffefae1, 0x10abbfef, 0xfcaaffeb, 0x24fdef3f,
+    0x7f7678ad, 0xedfff00c, 0x2cfacff6, 0xeb6bf7f9,
+    } },
+    { { /* 341 */
+    0x95bf1ffd, 0xbfbf6677, 0xfeb43bfb, 0x11e27bae,
+    0x41bea681, 0x72c31435, 0x71917d70, 0x276b0003,
+    } },
+    { { /* 342 */
+    0x70cf57cb, 0x0def4732, 0xfc747eda, 0xbdb4fe06,
+    0x8bca3f9f, 0x58007e49, 0xebec228f, 0xddbb8a5c,
+    } },
+    { { /* 343 */
+    0xb6e7ef60, 0xf293a40f, 0x549e37bb, 0x9bafd04b,
+    0xf7d4c414, 0x0a1430b0, 0x88d02f08, 0x192fff7e,
+    } },
+    { { /* 344 */
+    0xfb07ffda, 0x7beb7ff1, 0x0010c5ef, 0xfdff99ff,
+    0x056779d7, 0xfdcbffe7, 0x4040c3ff, 0xbd8e6ff7,
+    } },
+    { { /* 345 */
+    0x0497dffa, 0x5bfff4c0, 0xd0e7ed7b, 0xf8e0047e,
+    0xb73eff9f, 0x882e7dfe, 0xbe7ffffd, 0xf6c483fe,
+    } },
+    { { /* 346 */
+    0xb8fdf357, 0xef7dd680, 0x47885767, 0xc3dfff7d,
+    0x37a9f0ff, 0x70fc7de0, 0xec9a3f6f, 0x86814cb3,
+    } },
+    { { /* 347 */
+    0xdd5c3f9e, 0x4819f70d, 0x0007fea3, 0x38ffaf56,
+    0xefb8980d, 0xb760403d, 0x9035d8ce, 0x3fff72bf,
+    } },
+    { { /* 348 */
+    0x7a117ff7, 0xabfff7bb, 0x6fbeff00, 0xfe72a93c,
+    0xf11bcfef, 0xf40adb6b, 0xef7ec3e6, 0xf6109b9c,
+    } },
+    { { /* 349 */
+    0x16f4f048, 0x5182feb5, 0x15bbc7b1, 0xfbdf6e87,
+    0x63cde43f, 0x7e7ec1ff, 0x7d5ffdeb, 0xfcfe777b,
+    } },
+    { { /* 350 */
+    0xdbea960b, 0x53e86229, 0xfdef37df, 0xbd8136f5,
+    0xfcbddc18, 0xffffd2e4, 0xffe03fd7, 0xabf87f6f,
+    } },
+    { { /* 351 */
+    0x6ed99bae, 0xf115f5fb, 0xbdfb79a9, 0xadaf5a3c,
+    0x1facdbba, 0x837971fc, 0xc35f7cf7, 0x0567dfff,
+    } },
+    { { /* 352 */
+    0x8467ff9a, 0xdf8b1534, 0x3373f9f3, 0x5e1af7bd,
+    0xa03fbf40, 0x01ebffff, 0xcfdddfc0, 0xabd37500,
+    } },
+    { { /* 353 */
+    0xeed6f8c3, 0xb7ff43fd, 0x42275eaf, 0xf6869bac,
+    0xf6bc27d7, 0x35b7f787, 0xe176aacd, 0xe29f49e7,
+    } },
+    { { /* 354 */
+    0xaff2545c, 0x61d82b3f, 0xbbb8fc3b, 0x7b7dffcf,
+    0x1ce0bf95, 0x43ff7dfd, 0xfffe5ff6, 0xc4ced3ef,
+    } },
+    { { /* 355 */
+    0xadbc8db6, 0x11eb63dc, 0x23d0df59, 0xf3dbbeb4,
+    0xdbc71fe7, 0xfae4ff63, 0x63f7b22b, 0xadbaed3b,
+    } },
+    { { /* 356 */
+    0x7efffe01, 0x02bcfff7, 0xef3932ff, 0x8005fffc,
+    0xbcf577fb, 0xfff7010d, 0xbf3afffb, 0xdfff0057,
+    } },
+    { { /* 357 */
+    0xbd7def7b, 0xc8d4db88, 0xed7cfff3, 0x56ff5dee,
+    0xac5f7e0d, 0xd57fff96, 0xc1403fee, 0xffe76ff9,
+    } },
+    { { /* 358 */
+    0x8e77779b, 0xe45d6ebf, 0x5f1f6fcf, 0xfedfe07f,
+    0x01fed7db, 0xfb7bff00, 0x1fdfffd4, 0xfffff800,
+    } },
+    { { /* 359 */
+    0x007bfb8f, 0x7f5cbf00, 0x07f3ffff, 0x3de7eba0,
+    0xfbd7f7bf, 0x6003ffbf, 0xbfedfffd, 0x027fefbb,
+    } },
+    { { /* 360 */
+    0xddfdfe40, 0xe2f9fdff, 0xfb1f680b, 0xaffdfbe3,
+    0xf7ed9fa4, 0xf80f7a7d, 0x0fd5eebe, 0xfd9fbb5d,
+    } },
+    { { /* 361 */
+    0x3bf9f2db, 0xebccfe7f, 0x73fa876a, 0x9ffc95fc,
+    0xfaf7109f, 0xbbcdddb7, 0xeccdf87e, 0x3c3ff366,
+    } },
+    { { /* 362 */
+    0xb03ffffd, 0x067ee9f7, 0xfe0696ae, 0x5fd7d576,
+    0xa3f33fd1, 0x6fb7cf07, 0x7f449fd1, 0xd3dd7b59,
+    } },
+    { { /* 363 */
+    0xa9bdaf3b, 0xff3a7dcf, 0xf6ebfbe0, 0xffffb401,
+    0xb7bf7afa, 0x0ffdc000, 0xff1fff7f, 0x95fffefc,
+    } },
+    { { /* 364 */
+    0xb5dc0000, 0x3f3eef63, 0x001bfb7f, 0xfbf6e800,
+    0xb8df9eef, 0x003fff9f, 0xf5ff7bd0, 0x3fffdfdb,
+    } },
+    { { /* 365 */
+    0x00bffdf0, 0xbbbd8420, 0xffdedf37, 0x0ff3ff6d,
+    0x5efb604c, 0xfafbfffb, 0x0219fe5e, 0xf9de79f4,
+    } },
+    { { /* 366 */
+    0xebfaa7f7, 0xff3401eb, 0xef73ebd3, 0xc040afd7,
+    0xdcff72bb, 0x2fd8f17f, 0xfe0bb8ec, 0x1f0bdda3,
+    } },
+    { { /* 367 */
+    0x47cf8f1d, 0xffdeb12b, 0xda737fee, 0xcbc424ff,
+    0xcbf2f75d, 0xb4edecfd, 0x4dddbff9, 0xfb8d99dd,
+    } },
+    { { /* 368 */
+    0xaf7bbb7f, 0xc959ddfb, 0xfab5fc4f, 0x6d5fafe3,
+    0x3f7dffff, 0xffdb7800, 0x7effb6ff, 0x022ffbaf,
+    } },
+    { { /* 369 */
+    0xefc7ff9b, 0xffffffa5, 0xc7000007, 0xfff1f7ff,
+    0x01bf7ffd, 0xfdbcdc00, 0xffffbff5, 0x3effff7f,
+    } },
+    { { /* 370 */
+    0xbe000029, 0xff7ff9ff, 0xfd7e6efb, 0x039ecbff,
+    0xfbdde300, 0xf6dfccff, 0x117fffff, 0xfbf6f800,
+    } },
+    { { /* 371 */
+    0xd73ce7ef, 0xdfeffeef, 0xedbfc00b, 0xfdcdfedf,
+    0x40fd7bf5, 0xb75fffff, 0xf930ffdf, 0xdc97fbdf,
+    } },
+    { { /* 372 */
+    0xbff2fef3, 0xdfbf8fdf, 0xede6177f, 0x35530f7f,
+    0x877e447c, 0x45bbfa12, 0x779eede0, 0xbfd98017,
+    } },
+    { { /* 373 */
+    0xde897e55, 0x0447c16f, 0xf75d7ade, 0x290557ff,
+    0xfe9586f7, 0xf32f97b3, 0x9f75cfff, 0xfb1771f7,
+    } },
+    { { /* 374 */
+    0xee1934ee, 0xef6137cc, 0xef4c9fd6, 0xfbddd68f,
+    0x6def7b73, 0xa431d7fe, 0x97d75e7f, 0xffd80f5b,
+    } },
+    { { /* 375 */
+    0x7bce9d83, 0xdcff22ec, 0xef87763d, 0xfdeddfe7,
+    0xa0fc4fff, 0xdbfc3b77, 0x7fdc3ded, 0xf5706fa9,
+    } },
+    { { /* 376 */
+    0x2c403ffb, 0x847fff7f, 0xdeb7ec57, 0xf22fe69c,
+    0xd5b50feb, 0xede7afeb, 0xfff08c2f, 0xe8f0537f,
+    } },
+    { { /* 377 */
+    0xb5ffb99d, 0xe78fff66, 0xbe10d981, 0xe3c19c7c,
+    0x27339cd1, 0xff6d0cbc, 0xefb7fcb7, 0xffffa0df,
+    } },
+    { { /* 378 */
+    0xfe7bbf0b, 0x353fa3ff, 0x97cd13cc, 0xfb277637,
+    0x7e6ccfd6, 0xed31ec50, 0xfc1c677c, 0x5fbff6fa,
+    } },
+    { { /* 379 */
+    0xae2f0fba, 0x7ffea3ad, 0xde74fcf0, 0xf200ffef,
+    0xfea2fbbf, 0xbcff3daf, 0x5fb9f694, 0x3f8ff3ad,
+    } },
+    { { /* 380 */
+    0xa01ff26c, 0x01bfffef, 0x70057728, 0xda03ff35,
+    0xc7fad2f9, 0x5c1d3fbf, 0xec33ff3a, 0xfe9cb7af,
+    } },
+    { { /* 381 */
+    0x7a9f5236, 0xe722bffa, 0xfcff9ff7, 0xb61d2fbb,
+    0x1dfded06, 0xefdf7dd7, 0xf166eb23, 0x0dc07ed9,
+    } },
+    { { /* 382 */
+    0xdfbf3d3d, 0xba83c945, 0x9dd07dd1, 0xcf737b87,
+    0xc3f59ff3, 0xc5fedf0d, 0x83020cb3, 0xaec0e879,
+    } },
+    { { /* 383 */
+    0x6f0fc773, 0x093ffd7d, 0x0157fff1, 0x01ff62fb,
+    0x3bf3fdb4, 0x43b2b013, 0xff305ed3, 0xeb9f0fff,
+    } },
+    { { /* 384 */
+    0xf203feef, 0xfb893fef, 0x9e9937a9, 0xa72cdef9,
+    0xc1f63733, 0xfe3e812e, 0xf2f75d20, 0x69d7d585,
+    } },
+    { { /* 385 */
+    0xffffffff, 0xff6fdb07, 0xd97fc4ff, 0xbe0fefce,
+    0xf05ef17b, 0xffb7f6cf, 0xef845ef7, 0x0edfd7cb,
+    } },
+    { { /* 386 */
+    0xfcffff08, 0xffffee3f, 0xd7ff13ff, 0x7ffdaf0f,
+    0x1ffabdc7, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 387 */
+    0x00000000, 0xe7400000, 0xf933bd38, 0xfeed7feb,
+    0x7c767fe8, 0xffefb3f7, 0xd8b7feaf, 0xfbbfff6f,
+    } },
+    { { /* 388 */
+    0xdbf7f8fb, 0xe2f91752, 0x754785c8, 0xe3ef9090,
+    0x3f6d9ef4, 0x0536ee2e, 0x7ff3f7bc, 0x7f3fa07b,
+    } },
+    { { /* 389 */
+    0xeb600567, 0x6601babe, 0x583ffcd8, 0x87dfcaf7,
+    0xffa0bfcd, 0xfebf5bcd, 0xefa7b6fd, 0xdf9c77ef,
+    } },
+    { { /* 390 */
+    0xf8773fb7, 0xb7fc9d27, 0xdfefcab5, 0xf1b6fb5a,
+    0xef1fec39, 0x7ffbfbbf, 0xdafe000d, 0x4e7fbdfb,
+    } },
+    { { /* 391 */
+    0x5ac033ff, 0x9ffebff5, 0x005fffbf, 0xfdf80000,
+    0x6ffdffca, 0xa001cffd, 0xfbf2dfff, 0xff7fdfbf,
+    } },
+    { { /* 392 */
+    0x080ffeda, 0xbfffba08, 0xeed77afd, 0x67f9fbeb,
+    0xff93e044, 0x9f57df97, 0x08dffef7, 0xfedfdf80,
+    } },
+    { { /* 393 */
+    0xf7feffc5, 0x6803fffb, 0x6bfa67fb, 0x5fe27fff,
+    0xff73ffff, 0xe7fb87df, 0xf7a7ebfd, 0xefc7bf7e,
+    } },
+    { { /* 394 */
+    0xdf821ef3, 0xdf7e76ff, 0xda7d79c9, 0x1e9befbe,
+    0x77fb7ce0, 0xfffb87be, 0xffdb1bff, 0x4fe03f5c,
+    } },
+    { { /* 395 */
+    0x5f0e7fff, 0xddbf77ff, 0xfffff04f, 0x0ff8ffff,
+    0xfddfa3be, 0xfffdfc1c, 0xfb9e1f7d, 0xdedcbdff,
+    } },
+    { { /* 396 */
+    0xbafb3f6f, 0xfbefdf7f, 0x2eec7d1b, 0xf2f7af8e,
+    0xcfee7b0f, 0x77c61d96, 0xfff57e07, 0x7fdfd982,
+    } },
+    { { /* 397 */
+    0xc7ff5ee6, 0x79effeee, 0xffcf9a56, 0xde5efe5f,
+    0xf9e8896e, 0xe6c4f45e, 0xbe7c0001, 0xdddf3b7f,
+    } },
+    { { /* 398 */
+    0xe9efd59d, 0xde5334ac, 0x4bf7f573, 0x9eff7b4f,
+    0x476eb8fe, 0xff450dfb, 0xfbfeabfd, 0xddffe9d7,
+    } },
+    { { /* 399 */
+    0x7fffedf7, 0x7eebddfd, 0xb7ffcfe7, 0xef91bde9,
+    0xd77c5d75, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 400 */
+    0x00000000, 0xfa800000, 0xb4f1ffee, 0x2fefbf76,
+    0x77bfb677, 0xfffd9fbf, 0xf6ae95bf, 0x7f3b75ff,
+    } },
+    { { /* 401 */
+    0x0af9a7f5, 0x00000000, 0x00000000, 0x2bddfbd0,
+    0x9a7ff633, 0xd6fcfdab, 0xbfebf9e6, 0xf41fdfdf,
+    } },
+    { { /* 402 */
+    0xffffa6fd, 0xf37b4aff, 0xfef97fb7, 0x1d5cb6ff,
+    0xe5ff7ff6, 0x24041f7b, 0xf99ebe05, 0xdff2dbe3,
+    } },
+    { { /* 403 */
+    0xfdff6fef, 0xcbfcd679, 0xefffebfd, 0x0000001f,
+    0x98000000, 0x8017e148, 0x00fe6a74, 0xfdf16d7f,
+    } },
+    { { /* 404 */
+    0xfef3b87f, 0xf176e01f, 0x7b3fee96, 0xfffdeb8d,
+    0xcbb3adff, 0xe17f84ef, 0xbff04daa, 0xfe3fbf3f,
+    } },
+    { { /* 405 */
+    0xffd7ebff, 0xcf7fffdf, 0x85edfffb, 0x07bcd73f,
+    0xfe0faeff, 0x76bffdaf, 0x37bbfaef, 0xa3ba7fdc,
+    } },
+    { { /* 406 */
+    0x56f7b6ff, 0xe7df60f8, 0x4cdfff61, 0xff45b0fb,
+    0x3ffa7ded, 0x18fc1fff, 0xe3afffff, 0xdf83c7d3,
+    } },
+    { { /* 407 */
+    0xef7dfb57, 0x1378efff, 0x5ff7fec0, 0x5ee334bb,
+    0xeff6f70d, 0x00bfd7fe, 0xf7f7f59d, 0xffe051de,
+    } },
+    { { /* 408 */
+    0x037ffec9, 0xbfef5f01, 0x60a79ff1, 0xf1ffef1d,
+    0x0000000f, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 409 */
+    0x00000000, 0x00000000, 0x00000000, 0x3c800000,
+    0xd91ffb4d, 0xfee37b3a, 0xdc7f3fe9, 0x0000003f,
+    } },
+    { { /* 410 */
+    0x50000000, 0xbe07f51f, 0xf91bfc1d, 0x71ffbc1e,
+    0x5bbe6ff9, 0x9b1b5796, 0xfffc7fff, 0xafe7872e,
+    } },
+    { { /* 411 */
+    0xf34febf5, 0xe725dffd, 0x5d440bdc, 0xfddd5747,
+    0x7790ed3f, 0x8ac87d7f, 0xf3f9fafa, 0xef4b202a,
+    } },
+    { { /* 412 */
+    0x79cff5ff, 0x0ba5abd3, 0xfb8ff77a, 0x001f8ebd,
+    0x00000000, 0xfd4ef300, 0x88001a57, 0x7654aeac,
+    } },
+    { { /* 413 */
+    0xcdff17ad, 0xf42fffb2, 0xdbff5baa, 0x00000002,
+    0x73c00000, 0x2e3ff9ea, 0xbbfffa8e, 0xffd376bc,
+    } },
+    { { /* 414 */
+    0x7e72eefe, 0xe7f77ebd, 0xcefdf77f, 0x00000ff5,
+    0x00000000, 0xdb9ba900, 0x917fa4c7, 0x7ecef8ca,
+    } },
+    { { /* 415 */
+    0xc7e77d7a, 0xdcaecbbd, 0x8f76fd7e, 0x7cf391d3,
+    0x4c2f01e5, 0xa360ed77, 0x5ef807db, 0x21811df7,
+    } },
+    { { /* 416 */
+    0x309c6be0, 0xfade3b3a, 0xc3f57f53, 0x07ba61cd,
+    0x00000000, 0x00000000, 0x00000000, 0xbefe26e0,
+    } },
+    { { /* 417 */
+    0xebb503f9, 0xe9cbe36d, 0xbfde9c2f, 0xabbf9f83,
+    0xffd51ff7, 0xdffeb7df, 0xffeffdae, 0xeffdfb7e,
+    } },
+    { { /* 418 */
+    0x6ebfaaff, 0x00000000, 0x00000000, 0xb6200000,
+    0xbe9e7fcd, 0x58f162b3, 0xfd7bf10d, 0xbefde9f1,
+    } },
+    { { /* 419 */
+    0x5f6dc6c3, 0x69ffff3d, 0xfbf4ffcf, 0x4ff7dcfb,
+    0x11372000, 0x00000015, 0x00000000, 0x00000000,
+    } },
+    { { /* 420 */
+    0x00003000, 0x00000000, 0x00000000, 0x00000000,
+    0x00000000, 0x00000000, 0x00000000, 0x00000000,
+    } },
+    { { /* 421 */
+    0x00000000, 0x00000000, 0x00000000, 0x00000000,
+    0x00000000, 0xffffffff, 0xffffffff, 0x001fffff,
+    } },
+};
+
+#define L(n) ((FcCharLeaf *) &leaves[n])
+
+static const FcCharLeaf *leaves_ab[2] = {
+    L(  0), L(  1),
+};
+
+static const FcChar16 numbers_ab[2] = {
+    0x0000, 0x0004,
+};
+
+static const FcCharLeaf *leaves_ar[1] = {
+    L(  2),
+};
+
+static const FcChar16 numbers_ar[1] = {
+    0x0006,
+};
+
+static const FcCharLeaf *leaves_az[4] = {
+    L(  3), L(  4), L(  5), L(  6),
+};
+
+static const FcChar16 numbers_az[4] = {
+    0x0000, 0x0001, 0x0002, 0x0004,
+};
+
+static const FcCharLeaf *leaves_ba[2] = {
+    L(  0), L(  7),
+};
+
+static const FcChar16 numbers_ba[2] = {
+    0x0000, 0x0004,
+};
+
+static const FcCharLeaf *leaves_be[2] = {
+    L(  0), L(  8),
+};
+
+static const FcChar16 numbers_be[2] = {
+    0x0000, 0x0004,
+};
+
+static const FcCharLeaf *leaves_bg[1] = {
+    L(  9),
+};
+
+static const FcChar16 numbers_bg[1] = {
+    0x0004,
+};
+
+static const FcCharLeaf *leaves_br[1] = {
+    L( 10),
+};
+
+static const FcChar16 numbers_br[1] = {
+    0x0000,
+};
+
+static const FcCharLeaf *leaves_ca[2] = {
+    L( 11), L( 12),
+};
+
+static const FcChar16 numbers_ca[2] = {
+    0x0000, 0x0001,
+};
+
+static const FcCharLeaf *leaves_co[1] = {
+    L( 13),
+};
+
+static const FcChar16 numbers_co[1] = {
+    0x0000,
+};
+
+static const FcCharLeaf *leaves_cs[2] = {
+    L( 14), L( 15),
+};
+
+static const FcChar16 numbers_cs[2] = {
+    0x0000, 0x0001,
+};
+
+static const FcCharLeaf *leaves_da[2] = {
+    L( 16), L( 17),
+};
+
+static const FcChar16 numbers_da[2] = {
+    0x0000, 0x0001,
+};
+
+static const FcCharLeaf *leaves_de[1] = {
+    L( 18),
+};
+
+static const FcChar16 numbers_de[1] = {
+    0x0000,
+};
+
+static const FcCharLeaf *leaves_el[1] = {
+    L( 19),
+};
+
+static const FcChar16 numbers_el[1] = {
+    0x0003,
+};
+
+static const FcCharLeaf *leaves_en[1] = {
+    L( 20),
+};
+
+static const FcChar16 numbers_en[1] = {
+    0x0000,
+};
+
+static const FcCharLeaf *leaves_eo[2] = {
+    L( 21), L( 22),
+};
+
+static const FcChar16 numbers_eo[2] = {
+    0x0000, 0x0001,
+};
+
+static const FcCharLeaf *leaves_es[1] = {
+    L( 23),
+};
+
+static const FcChar16 numbers_es[1] = {
+    0x0000,
+};
+
+static const FcCharLeaf *leaves_et[2] = {
+    L( 24), L( 25),
+};
+
+static const FcChar16 numbers_et[2] = {
+    0x0000, 0x0001,
+};
+
+static const FcCharLeaf *leaves_eu[2] = {
+    L( 26), L( 27),
+};
+
+static const FcChar16 numbers_eu[2] = {
+    0x0000, 0x0001,
+};
+
+static const FcCharLeaf *leaves_fi[2] = {
+    L( 28), L( 25),
+};
+
+static const FcChar16 numbers_fi[2] = {
+    0x0000, 0x0001,
+};
+
+static const FcCharLeaf *leaves_fo[1] = {
+    L( 29),
+};
+
+static const FcChar16 numbers_fo[1] = {
+    0x0000,
+};
+
+static const FcCharLeaf *leaves_fr[1] = {
+    L( 13),
+};
+
+static const FcChar16 numbers_fr[1] = {
+    0x0000,
+};
+
+static const FcCharLeaf *leaves_fy[1] = {
+    L( 18),
+};
+
+static const FcChar16 numbers_fy[1] = {
+    0x0000,
+};
+
+static const FcCharLeaf *leaves_ga[5] = {
+    L( 30), L( 31), L( 32), L( 33), L( 34),
+};
+
+static const FcChar16 numbers_ga[5] = {
+    0x0000, 0x0001, 0x0002, 0x001e, 0x0020,
+};
+
+static const FcCharLeaf *leaves_gd[1] = {
+    L( 35),
+};
+
+static const FcChar16 numbers_gd[1] = {
+    0x0000,
+};
+
+static const FcCharLeaf *leaves_gl[1] = {
+    L( 36),
+};
+
+static const FcChar16 numbers_gl[1] = {
+    0x0000,
+};
+
+static const FcCharLeaf *leaves_he[1] = {
+    L( 37),
+};
+
+static const FcChar16 numbers_he[1] = {
+    0x0005,
+};
+
+static const FcCharLeaf *leaves_hr[3] = {
+    L( 38), L( 39), L( 40),
+};
+
+static const FcChar16 numbers_hr[3] = {
+    0x0000, 0x0001, 0x0002,
+};
+
+static const FcCharLeaf *leaves_hu[2] = {
+    L( 41), L( 42),
+};
+
+static const FcChar16 numbers_hu[2] = {
+    0x0000, 0x0001,
+};
+
+static const FcCharLeaf *leaves_hy[1] = {
+    L( 43),
+};
+
+static const FcChar16 numbers_hy[1] = {
+    0x0005,
+};
+
+static const FcCharLeaf *leaves_is[1] = {
+    L( 44),
+};
+
+static const FcChar16 numbers_is[1] = {
+    0x0000,
+};
+
+static const FcCharLeaf *leaves_it[1] = {
+    L( 45),
+};
+
+static const FcChar16 numbers_it[1] = {
+    0x0000,
+};
+
+static const FcCharLeaf *leaves_ja[84] = {
+    L( 46), L( 47), L( 48), L( 49), L( 50), L( 51), L( 52), L( 53),
+    L( 54), L( 55), L( 56), L( 57), L( 58), L( 59), L( 60), L( 61),
+    L( 62), L( 63), L( 64), L( 65), L( 66), L( 67), L( 68), L( 69),
+    L( 70), L( 71), L( 72), L( 73), L( 74), L( 75), L( 76), L( 77),
+    L( 78), L( 79), L( 80), L( 81), L( 82), L( 83), L( 84), L( 85),
+    L( 86), L( 87), L( 88), L( 89), L( 90), L( 91), L( 92), L( 93),
+    L( 94), L( 95), L( 96), L( 97), L( 98), L( 99), L(100), L(101),
+    L(102), L(103), L(104), L(105), L(106), L(107), L(108), L(109),
+    L(110), L(111), L(112), L(113), L(114), L(115), L(116), L(117),
+    L(118), L(119), L(120), L(121), L(122), L(123), L(124), L(125),
+    L(126), L(127), L(128), L(129),
+};
+
+static const FcChar16 numbers_ja[84] = {
+    0x0030, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054,
+    0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c,
+    0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064,
+    0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c,
+    0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074,
+    0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c,
+    0x007d, 0x007e, 0x007f, 0x0080, 0x0081, 0x0082, 0x0083, 0x0084,
+    0x0085, 0x0086, 0x0087, 0x0088, 0x0089, 0x008a, 0x008b, 0x008c,
+    0x008d, 0x008e, 0x008f, 0x0090, 0x0091, 0x0092, 0x0093, 0x0094,
+    0x0095, 0x0096, 0x0097, 0x0098, 0x0099, 0x009a, 0x009b, 0x009c,
+    0x009d, 0x009e, 0x009f, 0x00ff,
+};
+
+static const FcCharLeaf *leaves_ka[2] = {
+    L(130), L(131),
+};
+
+static const FcChar16 numbers_ka[2] = {
+    0x0005, 0x0010,
+};
+
+static const FcCharLeaf *leaves_kk[2] = {
+    L(  0), L(132),
+};
+
+static const FcChar16 numbers_kk[2] = {
+    0x0000, 0x0004,
+};
+
+static const FcCharLeaf *leaves_kl[2] = {
+    L(133), L(134),
+};
+
+static const FcChar16 numbers_kl[2] = {
+    0x0000, 0x0001,
+};
+
+static const FcCharLeaf *leaves_ko[132] = {
+    L(135), L(136), L(137), L(138), L(139), L(140), L(141), L(142),
+    L(143), L(144), L(145), L(146), L(147), L(148), L(149), L(150),
+    L(151), L(152), L(153), L(154), L(155), L(156), L(157), L(158),
+    L(159), L(160), L(161), L(162), L(163), L(164), L(165), L(166),
+    L(167), L(168), L(169), L(170), L(171), L(172), L(173), L(174),
+    L(175), L(176), L(177), L(178), L(179), L(180), L(181), L(182),
+    L(183), L(184), L(185), L(186), L(187), L(188), L(189), L(190),
+    L(191), L(192), L(193), L(194), L(195), L(196), L(197), L(198),
+    L(199), L(200), L(201), L(202), L(203), L(204), L(205), L(206),
+    L(207), L(208), L(209), L(210), L(211), L(212), L(213), L(214),
+    L(215), L(216), L(217), L(218), L(219), L(220), L(220), L(220),
+    L(220), L(220), L(220), L(220), L(220), L(220), L(220), L(220),
+    L(220), L(220), L(220), L(220), L(220), L(220), L(220), L(220),
+    L(220), L(220), L(220), L(220), L(220), L(220), L(220), L(220),
+    L(220), L(220), L(220), L(220), L(220), L(220), L(220), L(220),
+    L(220), L(220), L(220), L(220), L(220), L(220), L(220), L(220),
+    L(221), L(220), L(222), L(223),
+};
+
+static const FcChar16 numbers_ko[132] = {
+    0x0030, 0x0031, 0x0032, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052,
+    0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a,
+    0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062,
+    0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a,
+    0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072,
+    0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a,
+    0x007b, 0x007c, 0x007d, 0x007e, 0x007f, 0x0080, 0x0081, 0x0082,
+    0x0083, 0x0084, 0x0085, 0x0086, 0x0087, 0x0088, 0x0089, 0x008a,
+    0x008b, 0x008c, 0x008d, 0x008e, 0x008f, 0x0090, 0x0091, 0x0092,
+    0x0093, 0x0094, 0x0095, 0x0096, 0x0097, 0x0098, 0x0099, 0x009a,
+    0x009b, 0x009c, 0x009d, 0x009e, 0x009f, 0x00ac, 0x00ad, 0x00ae,
+    0x00af, 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6,
+    0x00b7, 0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x00bc, 0x00bd, 0x00be,
+    0x00bf, 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6,
+    0x00c7, 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce,
+    0x00cf, 0x00d0, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6,
+    0x00d7, 0x00f9, 0x00fa, 0x00ff,
+};
+
+static const FcCharLeaf *leaves_la[2] = {
+    L( 21), L(224),
+};
+
+static const FcChar16 numbers_la[2] = {
+    0x0000, 0x0001,
+};
+
+static const FcCharLeaf *leaves_lt[2] = {
+    L( 21), L(225),
+};
+
+static const FcChar16 numbers_lt[2] = {
+    0x0000, 0x0001,
+};
+
+static const FcCharLeaf *leaves_lv[2] = {
+    L( 21), L(226),
+};
+
+static const FcChar16 numbers_lv[2] = {
+    0x0000, 0x0001,
+};
+
+static const FcCharLeaf *leaves_mk[1] = {
+    L(227),
+};
+
+static const FcChar16 numbers_mk[1] = {
+    0x0004,
+};
+
+static const FcCharLeaf *leaves_mo[4] = {
+    L(228), L(229), L(230), L(231),
+};
+
+static const FcChar16 numbers_mo[4] = {
+    0x0000, 0x0001, 0x0002, 0x0004,
+};
+
+static const FcCharLeaf *leaves_mt[3] = {
+    L(232), L(233), L(234),
+};
+
+static const FcChar16 numbers_mt[3] = {
+    0x0000, 0x0001, 0x0002,
+};
+
+static const FcCharLeaf *leaves_nl[1] = {
+    L(235),
+};
+
+static const FcChar16 numbers_nl[1] = {
+    0x0000,
+};
+
+static const FcCharLeaf *leaves_no[1] = {
+    L(236),
+};
+
+static const FcChar16 numbers_no[1] = {
+    0x0000,
+};
+
+static const FcCharLeaf *leaves_oc[1] = {
+    L(237),
+};
+
+static const FcChar16 numbers_oc[1] = {
+    0x0000,
+};
+
+static const FcCharLeaf *leaves_pl[2] = {
+    L(238), L(239),
+};
+
+static const FcChar16 numbers_pl[2] = {
+    0x0000, 0x0001,
+};
+
+static const FcCharLeaf *leaves_pt[1] = {
+    L(240),
+};
+
+static const FcChar16 numbers_pt[1] = {
+    0x0000,
+};
+
+static const FcCharLeaf *leaves_rm[1] = {
+    L(241),
+};
+
+static const FcChar16 numbers_rm[1] = {
+    0x0000,
+};
+
+static const FcCharLeaf *leaves_ro[3] = {
+    L(228), L(229), L(230),
+};
+
+static const FcChar16 numbers_ro[3] = {
+    0x0000, 0x0001, 0x0002,
+};
+
+static const FcCharLeaf *leaves_ru[2] = {
+    L(  0), L(242),
+};
+
+static const FcChar16 numbers_ru[2] = {
+    0x0000, 0x0004,
+};
+
+static const FcCharLeaf *leaves_sh[1] = {
+    L(243),
+};
+
+static const FcChar16 numbers_sh[1] = {
+    0x0004,
+};
+
+static const FcCharLeaf *leaves_sk[2] = {
+    L(244), L(245),
+};
+
+static const FcChar16 numbers_sk[2] = {
+    0x0000, 0x0001,
+};
+
+static const FcCharLeaf *leaves_sl[3] = {
+    L( 21), L(246), L(247),
+};
+
+static const FcChar16 numbers_sl[3] = {
+    0x0000, 0x0001, 0x0004,
+};
+
+static const FcCharLeaf *leaves_sq[1] = {
+    L(248),
+};
+
+static const FcChar16 numbers_sq[1] = {
+    0x0000,
+};
+
+static const FcCharLeaf *leaves_sr[1] = {
+    L(243),
+};
+
+static const FcChar16 numbers_sr[1] = {
+    0x0004,
+};
+
+static const FcCharLeaf *leaves_sv[1] = {
+    L(249),
+};
+
+static const FcChar16 numbers_sv[1] = {
+    0x0000,
+};
+
+static const FcCharLeaf *leaves_th[1] = {
+    L(250),
+};
+
+static const FcChar16 numbers_th[1] = {
+    0x000e,
+};
+
+static const FcCharLeaf *leaves_tr[2] = {
+    L(251), L(252),
+};
+
+static const FcChar16 numbers_tr[2] = {
+    0x0000, 0x0001,
+};
+
+static const FcCharLeaf *leaves_uk[2] = {
+    L(  0), L(253),
+};
+
+static const FcChar16 numbers_uk[2] = {
+    0x0000, 0x0004,
+};
+
+static const FcCharLeaf *leaves_vo[1] = {
+    L(254),
+};
+
+static const FcChar16 numbers_vo[1] = {
+    0x0000,
+};
+
+static const FcCharLeaf *leaves_yi[1] = {
+    L( 37),
+};
+
+static const FcChar16 numbers_yi[1] = {
+    0x0005,
+};
+
+static const FcCharLeaf *leaves_zh_cn[82] = {
+    L(255), L(256), L(257), L(258), L(259), L(260), L(261), L(262),
+    L(263), L(264), L(265), L(266), L(267), L(268), L(269), L(270),
+    L(271), L(272), L(273), L(274), L(275), L(276), L(277), L(278),
+    L(279), L(280), L(281), L(282), L(283), L(284), L(285), L(286),
+    L(287), L(288), L(289), L(290), L(291), L(292), L(293), L(294),
+    L(295), L(296), L(297), L(298), L(299), L(300), L(301), L(302),
+    L(303), L(304), L(305), L(306), L(307), L(308), L(309), L(310),
+    L(311), L(312), L(313), L(314), L(315), L(316), L(317), L(318),
+    L(319), L(320), L(321), L(322), L(323), L(324), L(325), L(326),
+    L(327), L(328), L(329), L(330), L(331), L(332), L(333), L(334),
+    L(335), L(336),
+};
+
+static const FcChar16 numbers_zh_cn[82] = {
+    0x0002, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054,
+    0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c,
+    0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064,
+    0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c,
+    0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074,
+    0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c,
+    0x007d, 0x007e, 0x007f, 0x0080, 0x0081, 0x0082, 0x0083, 0x0084,
+    0x0085, 0x0086, 0x0087, 0x0088, 0x0089, 0x008a, 0x008b, 0x008c,
+    0x008d, 0x008e, 0x008f, 0x0090, 0x0091, 0x0092, 0x0093, 0x0094,
+    0x0095, 0x0096, 0x0097, 0x0098, 0x0099, 0x009a, 0x009b, 0x009c,
+    0x009e, 0x009f,
+};
+
+static const FcCharLeaf *leaves_zh_tw[84] = {
+    L(337), L(338), L(339), L(340), L(341), L(342), L(343), L(344),
+    L(345), L(346), L(347), L(348), L(349), L(350), L(351), L(352),
+    L(353), L(354), L(355), L(356), L(357), L(358), L(359), L(360),
+    L(361), L(362), L(363), L(364), L(365), L(366), L(367), L(368),
+    L(369), L(370), L(371), L(372), L(373), L(374), L(375), L(376),
+    L(377), L(378), L(379), L(380), L(381), L(382), L(383), L(384),
+    L(385), L(386), L(387), L(388), L(389), L(390), L(391), L(392),
+    L(393), L(394), L(395), L(396), L(397), L(398), L(399), L(400),
+    L(401), L(402), L(403), L(404), L(405), L(406), L(407), L(408),
+    L(409), L(410), L(411), L(412), L(413), L(414), L(415), L(416),
+    L(417), L(418), L(419), L(420),
+};
+
+static const FcChar16 numbers_zh_tw[84] = {
+    0x0030, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054,
+    0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x005b, 0x005c,
+    0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064,
+    0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c,
+    0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074,
+    0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c,
+    0x007d, 0x007e, 0x007f, 0x0080, 0x0081, 0x0082, 0x0083, 0x0084,
+    0x0085, 0x0086, 0x0087, 0x0088, 0x0089, 0x008a, 0x008b, 0x008c,
+    0x008d, 0x008e, 0x008f, 0x0090, 0x0091, 0x0092, 0x0093, 0x0094,
+    0x0095, 0x0096, 0x0097, 0x0098, 0x0099, 0x009a, 0x009b, 0x009c,
+    0x009d, 0x009e, 0x009f, 0x00fa,
+};
+
+static const FcCharLeaf *leaves_chr[1] = {
+    L(421),
+};
+
+static const FcChar16 numbers_chr[1] = {
+    0x0013,
+};
+
+#undef L
+
+static const FcLangCharSet  fcLangCharSets[] = {
+    { (FcChar8 *) "ab",
+      { 1, FcTrue, 2, (FcCharLeaf **) leaves_ab, (FcChar16 *) numbers_ab } },
+    { (FcChar8 *) "ar",
+      { 1, FcTrue, 1, (FcCharLeaf **) leaves_ar, (FcChar16 *) numbers_ar } },
+    { (FcChar8 *) "az",
+      { 1, FcTrue, 4, (FcCharLeaf **) leaves_az, (FcChar16 *) numbers_az } },
+    { (FcChar8 *) "ba",
+      { 1, FcTrue, 2, (FcCharLeaf **) leaves_ba, (FcChar16 *) numbers_ba } },
+    { (FcChar8 *) "be",
+      { 1, FcTrue, 2, (FcCharLeaf **) leaves_be, (FcChar16 *) numbers_be } },
+    { (FcChar8 *) "bg",
+      { 1, FcTrue, 1, (FcCharLeaf **) leaves_bg, (FcChar16 *) numbers_bg } },
+    { (FcChar8 *) "br",
+      { 1, FcTrue, 1, (FcCharLeaf **) leaves_br, (FcChar16 *) numbers_br } },
+    { (FcChar8 *) "ca",
+      { 1, FcTrue, 2, (FcCharLeaf **) leaves_ca, (FcChar16 *) numbers_ca } },
+    { (FcChar8 *) "co",
+      { 1, FcTrue, 1, (FcCharLeaf **) leaves_co, (FcChar16 *) numbers_co } },
+    { (FcChar8 *) "cs",
+      { 1, FcTrue, 2, (FcCharLeaf **) leaves_cs, (FcChar16 *) numbers_cs } },
+    { (FcChar8 *) "da",
+      { 1, FcTrue, 2, (FcCharLeaf **) leaves_da, (FcChar16 *) numbers_da } },
+    { (FcChar8 *) "de",
+      { 1, FcTrue, 1, (FcCharLeaf **) leaves_de, (FcChar16 *) numbers_de } },
+    { (FcChar8 *) "el",
+      { 1, FcTrue, 1, (FcCharLeaf **) leaves_el, (FcChar16 *) numbers_el } },
+    { (FcChar8 *) "en",
+      { 1, FcTrue, 1, (FcCharLeaf **) leaves_en, (FcChar16 *) numbers_en } },
+    { (FcChar8 *) "eo",
+      { 1, FcTrue, 2, (FcCharLeaf **) leaves_eo, (FcChar16 *) numbers_eo } },
+    { (FcChar8 *) "es",
+      { 1, FcTrue, 1, (FcCharLeaf **) leaves_es, (FcChar16 *) numbers_es } },
+    { (FcChar8 *) "et",
+      { 1, FcTrue, 2, (FcCharLeaf **) leaves_et, (FcChar16 *) numbers_et } },
+    { (FcChar8 *) "eu",
+      { 1, FcTrue, 2, (FcCharLeaf **) leaves_eu, (FcChar16 *) numbers_eu } },
+    { (FcChar8 *) "fi",
+      { 1, FcTrue, 2, (FcCharLeaf **) leaves_fi, (FcChar16 *) numbers_fi } },
+    { (FcChar8 *) "fo",
+      { 1, FcTrue, 1, (FcCharLeaf **) leaves_fo, (FcChar16 *) numbers_fo } },
+    { (FcChar8 *) "fr",
+      { 1, FcTrue, 1, (FcCharLeaf **) leaves_fr, (FcChar16 *) numbers_fr } },
+    { (FcChar8 *) "fy",
+      { 1, FcTrue, 1, (FcCharLeaf **) leaves_fy, (FcChar16 *) numbers_fy } },
+    { (FcChar8 *) "ga",
+      { 1, FcTrue, 5, (FcCharLeaf **) leaves_ga, (FcChar16 *) numbers_ga } },
+    { (FcChar8 *) "gd",
+      { 1, FcTrue, 1, (FcCharLeaf **) leaves_gd, (FcChar16 *) numbers_gd } },
+    { (FcChar8 *) "gl",
+      { 1, FcTrue, 1, (FcCharLeaf **) leaves_gl, (FcChar16 *) numbers_gl } },
+    { (FcChar8 *) "he",
+      { 1, FcTrue, 1, (FcCharLeaf **) leaves_he, (FcChar16 *) numbers_he } },
+    { (FcChar8 *) "hr",
+      { 1, FcTrue, 3, (FcCharLeaf **) leaves_hr, (FcChar16 *) numbers_hr } },
+    { (FcChar8 *) "hu",
+      { 1, FcTrue, 2, (FcCharLeaf **) leaves_hu, (FcChar16 *) numbers_hu } },
+    { (FcChar8 *) "hy",
+      { 1, FcTrue, 1, (FcCharLeaf **) leaves_hy, (FcChar16 *) numbers_hy } },
+    { (FcChar8 *) "is",
+      { 1, FcTrue, 1, (FcCharLeaf **) leaves_is, (FcChar16 *) numbers_is } },
+    { (FcChar8 *) "it",
+      { 1, FcTrue, 1, (FcCharLeaf **) leaves_it, (FcChar16 *) numbers_it } },
+    { (FcChar8 *) "ja",
+      { 1, FcTrue, 84, (FcCharLeaf **) leaves_ja, (FcChar16 *) numbers_ja } },
+    { (FcChar8 *) "ka",
+      { 1, FcTrue, 2, (FcCharLeaf **) leaves_ka, (FcChar16 *) numbers_ka } },
+    { (FcChar8 *) "kk",
+      { 1, FcTrue, 2, (FcCharLeaf **) leaves_kk, (FcChar16 *) numbers_kk } },
+    { (FcChar8 *) "kl",
+      { 1, FcTrue, 2, (FcCharLeaf **) leaves_kl, (FcChar16 *) numbers_kl } },
+    { (FcChar8 *) "ko",
+      { 1, FcTrue, 132, (FcCharLeaf **) leaves_ko, (FcChar16 *) numbers_ko } },
+    { (FcChar8 *) "la",
+      { 1, FcTrue, 2, (FcCharLeaf **) leaves_la, (FcChar16 *) numbers_la } },
+    { (FcChar8 *) "lt",
+      { 1, FcTrue, 2, (FcCharLeaf **) leaves_lt, (FcChar16 *) numbers_lt } },
+    { (FcChar8 *) "lv",
+      { 1, FcTrue, 2, (FcCharLeaf **) leaves_lv, (FcChar16 *) numbers_lv } },
+    { (FcChar8 *) "mk",
+      { 1, FcTrue, 1, (FcCharLeaf **) leaves_mk, (FcChar16 *) numbers_mk } },
+    { (FcChar8 *) "mo",
+      { 1, FcTrue, 4, (FcCharLeaf **) leaves_mo, (FcChar16 *) numbers_mo } },
+    { (FcChar8 *) "mt",
+      { 1, FcTrue, 3, (FcCharLeaf **) leaves_mt, (FcChar16 *) numbers_mt } },
+    { (FcChar8 *) "nl",
+      { 1, FcTrue, 1, (FcCharLeaf **) leaves_nl, (FcChar16 *) numbers_nl } },
+    { (FcChar8 *) "no",
+      { 1, FcTrue, 1, (FcCharLeaf **) leaves_no, (FcChar16 *) numbers_no } },
+    { (FcChar8 *) "oc",
+      { 1, FcTrue, 1, (FcCharLeaf **) leaves_oc, (FcChar16 *) numbers_oc } },
+    { (FcChar8 *) "pl",
+      { 1, FcTrue, 2, (FcCharLeaf **) leaves_pl, (FcChar16 *) numbers_pl } },
+    { (FcChar8 *) "pt",
+      { 1, FcTrue, 1, (FcCharLeaf **) leaves_pt, (FcChar16 *) numbers_pt } },
+    { (FcChar8 *) "rm",
+      { 1, FcTrue, 1, (FcCharLeaf **) leaves_rm, (FcChar16 *) numbers_rm } },
+    { (FcChar8 *) "ro",
+      { 1, FcTrue, 3, (FcCharLeaf **) leaves_ro, (FcChar16 *) numbers_ro } },
+    { (FcChar8 *) "ru",
+      { 1, FcTrue, 2, (FcCharLeaf **) leaves_ru, (FcChar16 *) numbers_ru } },
+    { (FcChar8 *) "sh",
+      { 1, FcTrue, 1, (FcCharLeaf **) leaves_sh, (FcChar16 *) numbers_sh } },
+    { (FcChar8 *) "sk",
+      { 1, FcTrue, 2, (FcCharLeaf **) leaves_sk, (FcChar16 *) numbers_sk } },
+    { (FcChar8 *) "sl",
+      { 1, FcTrue, 3, (FcCharLeaf **) leaves_sl, (FcChar16 *) numbers_sl } },
+    { (FcChar8 *) "sq",
+      { 1, FcTrue, 1, (FcCharLeaf **) leaves_sq, (FcChar16 *) numbers_sq } },
+    { (FcChar8 *) "sr",
+      { 1, FcTrue, 1, (FcCharLeaf **) leaves_sr, (FcChar16 *) numbers_sr } },
+    { (FcChar8 *) "sv",
+      { 1, FcTrue, 1, (FcCharLeaf **) leaves_sv, (FcChar16 *) numbers_sv } },
+    { (FcChar8 *) "th",
+      { 1, FcTrue, 1, (FcCharLeaf **) leaves_th, (FcChar16 *) numbers_th } },
+    { (FcChar8 *) "tr",
+      { 1, FcTrue, 2, (FcCharLeaf **) leaves_tr, (FcChar16 *) numbers_tr } },
+    { (FcChar8 *) "uk",
+      { 1, FcTrue, 2, (FcCharLeaf **) leaves_uk, (FcChar16 *) numbers_uk } },
+    { (FcChar8 *) "vo",
+      { 1, FcTrue, 1, (FcCharLeaf **) leaves_vo, (FcChar16 *) numbers_vo } },
+    { (FcChar8 *) "yi",
+      { 1, FcTrue, 1, (FcCharLeaf **) leaves_yi, (FcChar16 *) numbers_yi } },
+    { (FcChar8 *) "zh-cn",
+      { 1, FcTrue, 82, (FcCharLeaf **) leaves_zh_cn, (FcChar16 *) numbers_zh_cn } },
+    { (FcChar8 *) "zh-tw",
+      { 1, FcTrue, 84, (FcCharLeaf **) leaves_zh_tw, (FcChar16 *) numbers_zh_tw } },
+    { (FcChar8 *) "chr",
+      { 1, FcTrue, 1, (FcCharLeaf **) leaves_chr, (FcChar16 *) numbers_chr } },
+};
+
+
+#define NUM_LANG_CHAR_SET      (sizeof (fcLangCharSets) / sizeof (fcLangCharSets[0]))
+                                                
+FcBool
+FcFreeTypeSetLang (FcPattern *pattern, FcCharSet *charset)
+{
+    int                i;
+    FcChar32   missing;
+
+    for (i = 0; i < NUM_LANG_CHAR_SET; i++)
+    {
+       missing = FcCharSetSubtractCount (&fcLangCharSets[i].charset, charset);
+        if (FcDebug() & FC_DBG_SCANV)
+           printf ("%s(%d) ", fcLangCharSets[i].lang, missing);
+       if (!missing && !FcFreeTypeHasLang (pattern, fcLangCharSets[i].lang))
+           if (!FcPatternAddString (pattern, FC_LANG, fcLangCharSets[i].lang))
+               return FcFalse;
+    }
+    if (FcDebug() & FC_DBG_SCANV)
+       printf ("\n");
+    return FcTrue;
+}
+
+
+FcLangResult
+FcLangCompare (const FcChar8 *s1, const FcChar8 *s2)
+{
+    const FcChar8   *orig_s1 = s1;
+    FcChar8        c1, c2;
+    FcLangResult    result;
+    /*
+     * Compare ISO 639 language codes
+     */
+    for (;;)
+    {
+       c1 = *s1++;
+       c2 = *s2++;
+       if (c1 == '\0' || c1 == '-')
+           break;
+       if (c2 == '\0' || c2 == '-')
+           break;
+       c1 = FcToLower (c1);
+       c2 = FcToLower (c2);
+       if (c1 != c2)
+           return FcLangDifferentLang;     /* mismatching lang code */
+    }
+    if (!c1 && !c2)
+       return FcLangEqual;
+    /*
+     * Make x-* mismatch as if the lang part didn't match
+     */
+    result = FcLangDifferentCountry;
+    if (orig_s1[0] == 'x' && (orig_s1[1] == '\0' || orig_s1[1] == '-'))
+       result = FcLangDifferentLang;
+    
+    if (c1 == '\0' || c2 == '\0')
+       return result;
+    /*
+     * Compare ISO 3166 country codes
+     */
+    for (;;)
+    {
+       c1 = *s1++;
+       c2 = *s2++;
+       if (!c1 || !c2)
+           break;
+       c1 = FcToLower (c1);
+       c2 = FcToLower (c2);
+       if (c1 != c2)
+           break;
+    }
+    if (c1 == c2)
+       return FcLangEqual;
+    else
+       return result;
+}
+
+const FcCharSet *
+FcCharSetForLang (const FcChar8 *lang)
+{
+    int                i;
+    int                country = -1;
+    for (i = 0; i < NUM_LANG_CHAR_SET; i++)
+    {
+       switch (FcLangCompare (lang, fcLangCharSets[i].lang)) {
+       case FcLangEqual:
+           return &fcLangCharSets[i].charset;
+       case FcLangDifferentCountry:
+           if (country == -1)
+               country = i;
+       default:
+           break;
+       }
+    }
+    if (country == -1)
+       return 0;
+    return &fcLangCharSets[i].charset;
+}