1
2#line 1 "hb-ot-shape-complex-indic-machine.rl"
3/*
4 * Copyright © 2011,2012  Google, Inc.
5 *
6 *  This is part of HarfBuzz, a text shaping library.
7 *
8 * Permission is hereby granted, without written agreement and without
9 * license or royalty fees, to use, copy, modify, and distribute this
10 * software and its documentation for any purpose, provided that the
11 * above copyright notice and the following two paragraphs appear in
12 * all copies of this software.
13 *
14 * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
15 * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
16 * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
17 * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
18 * DAMAGE.
19 *
20 * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
21 * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
22 * FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS
23 * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
24 * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
25 *
26 * Google Author(s): Behdad Esfahbod
27 */
28
29#ifndef HB_OT_SHAPE_COMPLEX_INDIC_MACHINE_HH
30#define HB_OT_SHAPE_COMPLEX_INDIC_MACHINE_HH
31
32#include "hb-private.hh"
33
34
35#line 36 "hb-ot-shape-complex-indic-machine.hh.tmp"
36static const unsigned char _indic_syllable_machine_trans_keys[] = {
37	1u, 16u, 13u, 13u, 5u, 7u, 5u, 7u, 7u, 7u, 5u, 7u, 5u, 7u, 7u, 7u,
38	5u, 7u, 5u, 7u, 7u, 7u, 5u, 7u, 5u, 7u, 7u, 7u, 4u, 4u, 6u, 6u,
39	16u, 16u, 4u, 7u, 6u, 6u, 16u, 16u, 4u, 7u, 6u, 6u, 16u, 16u, 4u, 7u,
40	6u, 6u, 16u, 16u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u,
41	4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 1u, 16u, 13u, 13u, 5u, 7u, 5u, 7u,
42	7u, 7u, 5u, 7u, 5u, 7u, 7u, 7u, 5u, 7u, 5u, 7u, 7u, 7u, 5u, 7u,
43	5u, 7u, 7u, 7u, 4u, 4u, 6u, 6u, 16u, 16u, 4u, 7u, 6u, 6u, 16u, 16u,
44	4u, 7u, 6u, 6u, 16u, 16u, 4u, 7u, 6u, 6u, 16u, 16u, 4u, 14u, 4u, 14u,
45	4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u,
46	1u, 16u, 13u, 13u, 5u, 7u, 5u, 7u, 7u, 7u, 5u, 7u, 5u, 7u, 7u, 7u,
47	5u, 7u, 5u, 7u, 7u, 7u, 5u, 7u, 5u, 7u, 7u, 7u, 4u, 4u, 6u, 6u,
48	16u, 16u, 4u, 7u, 6u, 6u, 16u, 16u, 4u, 7u, 6u, 6u, 16u, 16u, 4u, 7u,
49	6u, 6u, 16u, 16u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u,
50	4u, 14u, 4u, 14u, 4u, 14u, 1u, 16u, 13u, 13u, 5u, 7u, 5u, 7u, 7u, 7u,
51	5u, 7u, 5u, 7u, 7u, 7u, 5u, 7u, 5u, 7u, 7u, 7u, 5u, 7u, 5u, 7u,
52	7u, 7u, 4u, 4u, 6u, 6u, 16u, 16u, 4u, 7u, 6u, 6u, 16u, 16u, 4u, 7u,
53	6u, 6u, 16u, 16u, 4u, 7u, 6u, 6u, 16u, 16u, 4u, 14u, 4u, 14u, 4u, 14u,
54	4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u,
55	4u, 14u, 5u, 7u, 5u, 7u, 5u, 7u, 5u, 7u, 7u, 7u, 5u, 7u, 5u, 7u,
56	7u, 7u, 5u, 7u, 5u, 7u, 7u, 7u, 1u, 16u, 13u, 13u, 4u, 4u, 6u, 6u,
57	16u, 16u, 4u, 7u, 6u, 6u, 16u, 16u, 4u, 7u, 6u, 6u, 16u, 16u, 4u, 7u,
58	6u, 6u, 16u, 16u, 1u, 16u, 3u, 17u, 3u, 14u, 4u, 14u, 1u, 16u, 3u, 17u,
59	3u, 14u, 4u, 14u, 1u, 16u, 3u, 17u, 3u, 14u, 4u, 14u, 1u, 16u, 3u, 17u,
60	3u, 14u, 4u, 14u, 1u, 16u, 3u, 17u, 3u, 14u, 4u, 14u, 5u, 14u, 8u, 14u,
61	5u, 9u, 9u, 9u, 9u, 9u, 3u, 17u, 3u, 9u, 8u, 9u, 3u, 9u, 3u, 13u,
62	3u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u,
63	4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 6u, 14u, 3u, 14u, 4u, 14u, 1u, 16u,
64	3u, 14u, 3u, 14u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 14u,
65	3u, 14u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 14u, 3u, 14u,
66	1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 14u, 3u, 14u, 1u, 16u,
67	1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 14u, 3u, 14u, 3u, 14u, 3u, 14u,
68	4u, 14u, 1u, 16u, 3u, 17u, 3u, 14u, 4u, 14u, 1u, 16u, 3u, 17u, 3u, 14u,
69	4u, 14u, 1u, 16u, 3u, 17u, 3u, 14u, 4u, 14u, 1u, 16u, 3u, 17u, 3u, 14u,
70	4u, 14u, 5u, 14u, 8u, 14u, 5u, 9u, 9u, 9u, 9u, 9u, 3u, 17u, 3u, 9u,
71	8u, 9u, 3u, 9u, 3u, 13u, 3u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u,
72	4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 6u, 14u,
73	3u, 14u, 1u, 16u, 3u, 14u, 3u, 14u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u,
74	1u, 16u, 3u, 14u, 3u, 14u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u,
75	3u, 14u, 3u, 14u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 14u,
76	3u, 14u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 4u, 14u, 1u, 16u, 3u, 14u,
77	3u, 14u, 4u, 14u, 1u, 16u, 3u, 17u, 3u, 14u, 4u, 14u, 1u, 16u, 3u, 17u,
78	3u, 14u, 4u, 14u, 1u, 16u, 3u, 17u, 3u, 14u, 4u, 14u, 1u, 16u, 3u, 17u,
79	3u, 14u, 4u, 14u, 5u, 14u, 8u, 14u, 5u, 9u, 9u, 9u, 9u, 9u, 3u, 17u,
80	3u, 9u, 8u, 9u, 3u, 9u, 3u, 13u, 3u, 14u, 3u, 14u, 4u, 14u, 5u, 14u,
81	3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u,
82	6u, 14u, 3u, 14u, 1u, 16u, 3u, 14u, 3u, 14u, 1u, 16u, 1u, 16u, 1u, 16u,
83	1u, 16u, 1u, 16u, 3u, 14u, 3u, 14u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u,
84	1u, 16u, 3u, 14u, 3u, 14u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u,
85	3u, 14u, 3u, 14u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 4u, 14u,
86	3u, 14u, 4u, 14u, 3u, 14u, 3u, 14u, 4u, 14u, 1u, 16u, 3u, 17u, 3u, 14u,
87	4u, 14u, 1u, 16u, 3u, 17u, 3u, 14u, 4u, 14u, 1u, 16u, 3u, 17u, 3u, 14u,
88	4u, 14u, 1u, 16u, 3u, 17u, 3u, 14u, 4u, 14u, 5u, 14u, 8u, 14u, 5u, 9u,
89	9u, 9u, 9u, 9u, 3u, 17u, 3u, 9u, 8u, 9u, 3u, 9u, 3u, 13u, 3u, 14u,
90	3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u,
91	5u, 14u, 3u, 14u, 4u, 14u, 6u, 14u, 3u, 14u, 1u, 16u, 3u, 14u, 3u, 14u,
92	1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 14u, 3u, 14u, 1u, 16u,
93	1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 14u, 3u, 14u, 1u, 16u, 1u, 16u,
94	1u, 16u, 1u, 16u, 1u, 16u, 3u, 14u, 3u, 14u, 1u, 16u, 1u, 16u, 1u, 16u,
95	1u, 16u, 1u, 16u, 3u, 14u, 1u, 16u, 3u, 17u, 1u, 16u, 4u, 14u, 1u, 16u,
96	3u, 17u, 3u, 14u, 4u, 14u, 5u, 9u, 9u, 9u, 9u, 9u, 3u, 14u, 3u, 14u,
97	1u, 16u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u,
98	4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 8u, 14u, 3u, 17u, 3u, 9u, 8u, 9u,
99	3u, 9u, 3u, 13u, 1u, 16u, 0
100};
101
102static const char _indic_syllable_machine_key_spans[] = {
103	16, 1, 3, 3, 1, 3, 3, 1,
104	3, 3, 1, 3, 3, 1, 1, 1,
105	1, 4, 1, 1, 4, 1, 1, 4,
106	1, 1, 11, 11, 11, 11, 11, 11,
107	11, 11, 11, 11, 16, 1, 3, 3,
108	1, 3, 3, 1, 3, 3, 1, 3,
109	3, 1, 1, 1, 1, 4, 1, 1,
110	4, 1, 1, 4, 1, 1, 11, 11,
111	11, 11, 11, 11, 11, 11, 11, 11,
112	16, 1, 3, 3, 1, 3, 3, 1,
113	3, 3, 1, 3, 3, 1, 1, 1,
114	1, 4, 1, 1, 4, 1, 1, 4,
115	1, 1, 11, 11, 11, 11, 11, 11,
116	11, 11, 11, 16, 1, 3, 3, 1,
117	3, 3, 1, 3, 3, 1, 3, 3,
118	1, 1, 1, 1, 4, 1, 1, 4,
119	1, 1, 4, 1, 1, 11, 11, 11,
120	11, 11, 11, 11, 11, 11, 11, 11,
121	11, 3, 3, 3, 3, 1, 3, 3,
122	1, 3, 3, 1, 16, 1, 1, 1,
123	1, 4, 1, 1, 4, 1, 1, 4,
124	1, 1, 16, 15, 12, 11, 16, 15,
125	12, 11, 16, 15, 12, 11, 16, 15,
126	12, 11, 16, 15, 12, 11, 10, 7,
127	5, 1, 1, 15, 7, 2, 7, 11,
128	12, 12, 11, 10, 12, 11, 10, 12,
129	11, 10, 12, 11, 9, 12, 11, 16,
130	12, 12, 16, 16, 16, 16, 16, 12,
131	12, 16, 16, 16, 16, 16, 12, 12,
132	16, 16, 16, 16, 16, 12, 12, 16,
133	16, 16, 16, 16, 12, 12, 12, 12,
134	11, 16, 15, 12, 11, 16, 15, 12,
135	11, 16, 15, 12, 11, 16, 15, 12,
136	11, 10, 7, 5, 1, 1, 15, 7,
137	2, 7, 11, 12, 12, 11, 10, 12,
138	11, 10, 12, 11, 10, 12, 11, 9,
139	12, 16, 12, 12, 16, 16, 16, 16,
140	16, 12, 12, 16, 16, 16, 16, 16,
141	12, 12, 16, 16, 16, 16, 16, 12,
142	12, 16, 16, 16, 16, 11, 16, 12,
143	12, 11, 16, 15, 12, 11, 16, 15,
144	12, 11, 16, 15, 12, 11, 16, 15,
145	12, 11, 10, 7, 5, 1, 1, 15,
146	7, 2, 7, 11, 12, 12, 11, 10,
147	12, 11, 10, 12, 11, 10, 12, 11,
148	9, 12, 16, 12, 12, 16, 16, 16,
149	16, 16, 12, 12, 16, 16, 16, 16,
150	16, 12, 12, 16, 16, 16, 16, 16,
151	12, 12, 16, 16, 16, 16, 16, 11,
152	12, 11, 12, 12, 11, 16, 15, 12,
153	11, 16, 15, 12, 11, 16, 15, 12,
154	11, 16, 15, 12, 11, 10, 7, 5,
155	1, 1, 15, 7, 2, 7, 11, 12,
156	12, 11, 10, 12, 11, 10, 12, 11,
157	10, 12, 11, 9, 12, 16, 12, 12,
158	16, 16, 16, 16, 16, 12, 12, 16,
159	16, 16, 16, 16, 12, 12, 16, 16,
160	16, 16, 16, 12, 12, 16, 16, 16,
161	16, 16, 12, 16, 15, 16, 11, 16,
162	15, 12, 11, 5, 1, 1, 12, 12,
163	16, 12, 11, 10, 12, 11, 10, 12,
164	11, 10, 12, 11, 7, 15, 7, 2,
165	7, 11, 16
166};
167
168static const short _indic_syllable_machine_index_offsets[] = {
169	0, 17, 19, 23, 27, 29, 33, 37,
170	39, 43, 47, 49, 53, 57, 59, 61,
171	63, 65, 70, 72, 74, 79, 81, 83,
172	88, 90, 92, 104, 116, 128, 140, 152,
173	164, 176, 188, 200, 212, 229, 231, 235,
174	239, 241, 245, 249, 251, 255, 259, 261,
175	265, 269, 271, 273, 275, 277, 282, 284,
176	286, 291, 293, 295, 300, 302, 304, 316,
177	328, 340, 352, 364, 376, 388, 400, 412,
178	424, 441, 443, 447, 451, 453, 457, 461,
179	463, 467, 471, 473, 477, 481, 483, 485,
180	487, 489, 494, 496, 498, 503, 505, 507,
181	512, 514, 516, 528, 540, 552, 564, 576,
182	588, 600, 612, 624, 641, 643, 647, 651,
183	653, 657, 661, 663, 667, 671, 673, 677,
184	681, 683, 685, 687, 689, 694, 696, 698,
185	703, 705, 707, 712, 714, 716, 728, 740,
186	752, 764, 776, 788, 800, 812, 824, 836,
187	848, 860, 864, 868, 872, 876, 878, 882,
188	886, 888, 892, 896, 898, 915, 917, 919,
189	921, 923, 928, 930, 932, 937, 939, 941,
190	946, 948, 950, 967, 983, 996, 1008, 1025,
191	1041, 1054, 1066, 1083, 1099, 1112, 1124, 1141,
192	1157, 1170, 1182, 1199, 1215, 1228, 1240, 1251,
193	1259, 1265, 1267, 1269, 1285, 1293, 1296, 1304,
194	1316, 1329, 1342, 1354, 1365, 1378, 1390, 1401,
195	1414, 1426, 1437, 1450, 1462, 1472, 1485, 1497,
196	1514, 1527, 1540, 1557, 1574, 1591, 1608, 1625,
197	1638, 1651, 1668, 1685, 1702, 1719, 1736, 1749,
198	1762, 1779, 1796, 1813, 1830, 1847, 1860, 1873,
199	1890, 1907, 1924, 1941, 1958, 1971, 1984, 1997,
200	2010, 2022, 2039, 2055, 2068, 2080, 2097, 2113,
201	2126, 2138, 2155, 2171, 2184, 2196, 2213, 2229,
202	2242, 2254, 2265, 2273, 2279, 2281, 2283, 2299,
203	2307, 2310, 2318, 2330, 2343, 2356, 2368, 2379,
204	2392, 2404, 2415, 2428, 2440, 2451, 2464, 2476,
205	2486, 2499, 2516, 2529, 2542, 2559, 2576, 2593,
206	2610, 2627, 2640, 2653, 2670, 2687, 2704, 2721,
207	2738, 2751, 2764, 2781, 2798, 2815, 2832, 2849,
208	2862, 2875, 2892, 2909, 2926, 2943, 2955, 2972,
209	2985, 2998, 3010, 3027, 3043, 3056, 3068, 3085,
210	3101, 3114, 3126, 3143, 3159, 3172, 3184, 3201,
211	3217, 3230, 3242, 3253, 3261, 3267, 3269, 3271,
212	3287, 3295, 3298, 3306, 3318, 3331, 3344, 3356,
213	3367, 3380, 3392, 3403, 3416, 3428, 3439, 3452,
214	3464, 3474, 3487, 3504, 3517, 3530, 3547, 3564,
215	3581, 3598, 3615, 3628, 3641, 3658, 3675, 3692,
216	3709, 3726, 3739, 3752, 3769, 3786, 3803, 3820,
217	3837, 3850, 3863, 3880, 3897, 3914, 3931, 3948,
218	3960, 3973, 3985, 3998, 4011, 4023, 4040, 4056,
219	4069, 4081, 4098, 4114, 4127, 4139, 4156, 4172,
220	4185, 4197, 4214, 4230, 4243, 4255, 4266, 4274,
221	4280, 4282, 4284, 4300, 4308, 4311, 4319, 4331,
222	4344, 4357, 4369, 4380, 4393, 4405, 4416, 4429,
223	4441, 4452, 4465, 4477, 4487, 4500, 4517, 4530,
224	4543, 4560, 4577, 4594, 4611, 4628, 4641, 4654,
225	4671, 4688, 4705, 4722, 4739, 4752, 4765, 4782,
226	4799, 4816, 4833, 4850, 4863, 4876, 4893, 4910,
227	4927, 4944, 4961, 4974, 4991, 5007, 5024, 5036,
228	5053, 5069, 5082, 5094, 5100, 5102, 5104, 5117,
229	5130, 5147, 5160, 5172, 5183, 5196, 5208, 5219,
230	5232, 5244, 5255, 5268, 5280, 5288, 5304, 5312,
231	5315, 5323, 5335
232};
233
234static const short _indic_syllable_machine_indicies[] = {
235	1, 2, 0, 0, 0, 0, 0, 0,
236	0, 0, 0, 0, 0, 0, 0, 1,
237	0, 3, 0, 4, 4, 5, 0, 6,
238	6, 5, 0, 5, 0, 7, 7, 8,
239	0, 9, 9, 8, 0, 8, 0, 10,
240	10, 11, 0, 12, 12, 11, 0, 11,
241	0, 13, 13, 14, 0, 15, 15, 14,
242	0, 14, 0, 16, 0, 17, 0, 18,
243	0, 19, 13, 13, 14, 0, 20, 0,
244	21, 0, 22, 10, 10, 11, 0, 23,
245	0, 24, 0, 25, 7, 7, 8, 0,
246	26, 0, 27, 0, 28, 4, 4, 5,
247	0, 0, 0, 0, 0, 0, 28, 0,
248	28, 4, 4, 5, 0, 0, 0, 0,
249	0, 29, 28, 0, 30, 4, 4, 5,
250	0, 0, 0, 0, 0, 0, 30, 0,
251	30, 4, 4, 5, 0, 0, 0, 0,
252	0, 31, 30, 0, 32, 4, 4, 5,
253	0, 0, 0, 0, 0, 0, 32, 0,
254	32, 4, 4, 5, 0, 0, 0, 0,
255	0, 33, 32, 0, 34, 4, 4, 5,
256	0, 0, 0, 0, 0, 0, 34, 0,
257	34, 4, 4, 5, 0, 0, 0, 0,
258	0, 35, 34, 0, 36, 4, 4, 5,
259	0, 0, 0, 0, 0, 0, 36, 0,
260	36, 4, 4, 5, 0, 0, 0, 0,
261	0, 37, 36, 0, 39, 40, 38, 38,
262	38, 38, 38, 38, 38, 38, 38, 38,
263	38, 38, 38, 39, 38, 41, 38, 42,
264	42, 43, 38, 44, 44, 43, 38, 43,
265	38, 45, 45, 46, 38, 47, 47, 46,
266	38, 46, 38, 48, 48, 49, 38, 50,
267	50, 49, 38, 49, 38, 51, 51, 52,
268	38, 53, 53, 52, 38, 52, 38, 54,
269	38, 55, 38, 56, 38, 57, 51, 51,
270	52, 38, 58, 38, 59, 38, 60, 48,
271	48, 49, 38, 61, 38, 62, 38, 63,
272	45, 45, 46, 38, 64, 38, 65, 38,
273	66, 42, 42, 43, 38, 38, 38, 38,
274	38, 38, 66, 38, 66, 42, 42, 43,
275	38, 38, 38, 38, 38, 67, 66, 38,
276	68, 42, 42, 43, 38, 38, 38, 38,
277	38, 38, 68, 38, 68, 42, 42, 43,
278	38, 38, 38, 38, 38, 69, 68, 38,
279	70, 42, 42, 43, 38, 38, 38, 38,
280	38, 38, 70, 38, 70, 42, 42, 43,
281	38, 38, 38, 38, 38, 71, 70, 38,
282	72, 42, 42, 43, 38, 38, 38, 38,
283	38, 38, 72, 38, 72, 42, 42, 43,
284	38, 38, 38, 38, 38, 73, 72, 38,
285	74, 42, 42, 43, 38, 38, 38, 38,
286	38, 38, 74, 38, 74, 42, 42, 43,
287	38, 38, 38, 38, 38, 75, 74, 38,
288	77, 78, 76, 76, 76, 76, 76, 76,
289	76, 76, 76, 76, 76, 76, 76, 77,
290	76, 79, 76, 80, 80, 81, 76, 83,
291	83, 81, 82, 81, 82, 84, 84, 85,
292	76, 86, 86, 85, 76, 85, 76, 87,
293	87, 88, 76, 89, 89, 88, 76, 88,
294	76, 90, 90, 91, 76, 92, 92, 91,
295	76, 91, 76, 93, 76, 94, 76, 95,
296	76, 96, 90, 90, 91, 76, 97, 76,
297	98, 76, 99, 87, 87, 88, 76, 100,
298	76, 101, 76, 102, 84, 84, 85, 76,
299	103, 76, 104, 76, 105, 80, 80, 81,
300	76, 76, 76, 76, 76, 76, 105, 76,
301	105, 80, 80, 81, 76, 76, 76, 76,
302	76, 106, 105, 76, 107, 80, 80, 81,
303	76, 76, 76, 76, 76, 76, 107, 76,
304	107, 80, 80, 81, 76, 76, 76, 76,
305	76, 108, 107, 76, 109, 80, 80, 81,
306	76, 76, 76, 76, 76, 76, 109, 76,
307	109, 80, 80, 81, 76, 76, 76, 76,
308	76, 110, 109, 76, 111, 80, 80, 81,
309	82, 82, 82, 82, 82, 82, 111, 82,
310	111, 80, 80, 81, 76, 76, 76, 76,
311	76, 112, 111, 76, 113, 80, 80, 81,
312	76, 76, 76, 76, 76, 76, 113, 76,
313	115, 116, 114, 114, 114, 114, 114, 114,
314	114, 114, 114, 114, 114, 114, 114, 115,
315	114, 117, 114, 118, 118, 119, 114, 120,
316	120, 119, 114, 119, 114, 121, 121, 122,
317	114, 123, 123, 122, 114, 122, 114, 124,
318	124, 125, 114, 126, 126, 125, 114, 125,
319	114, 127, 127, 128, 114, 129, 129, 128,
320	114, 128, 114, 130, 114, 131, 114, 132,
321	114, 133, 127, 127, 128, 114, 134, 114,
322	135, 114, 136, 124, 124, 125, 114, 137,
323	114, 138, 114, 139, 121, 121, 122, 114,
324	140, 114, 141, 114, 142, 118, 118, 119,
325	114, 114, 114, 114, 114, 114, 142, 114,
326	142, 118, 118, 119, 114, 114, 114, 114,
327	114, 143, 142, 114, 144, 118, 118, 119,
328	114, 114, 114, 114, 114, 114, 144, 114,
329	144, 118, 118, 119, 114, 114, 114, 114,
330	114, 145, 144, 114, 146, 118, 118, 119,
331	114, 114, 114, 114, 114, 114, 146, 114,
332	146, 118, 118, 119, 114, 114, 114, 114,
333	114, 147, 146, 114, 148, 118, 118, 119,
334	114, 114, 114, 114, 114, 114, 148, 114,
335	148, 118, 118, 119, 114, 114, 114, 114,
336	114, 149, 148, 114, 150, 118, 118, 119,
337	114, 114, 114, 114, 114, 114, 150, 114,
338	150, 118, 118, 119, 114, 114, 114, 114,
339	114, 151, 150, 114, 113, 80, 80, 81,
340	76, 76, 76, 76, 76, 152, 113, 76,
341	111, 80, 80, 81, 0, 0, 0, 0,
342	0, 153, 111, 0, 154, 154, 155, 0,
343	6, 6, 155, 0, 156, 156, 157, 0,
344	158, 158, 157, 0, 157, 0, 159, 159,
345	160, 0, 161, 161, 160, 0, 160, 0,
346	162, 162, 163, 0, 164, 164, 163, 0,
347	163, 0, 165, 166, 0, 0, 0, 0,
348	0, 0, 0, 0, 0, 0, 0, 0,
349	0, 165, 0, 167, 0, 168, 0, 169,
350	0, 170, 0, 171, 162, 162, 163, 0,
351	172, 0, 173, 0, 174, 159, 159, 160,
352	0, 175, 0, 176, 0, 177, 156, 156,
353	157, 0, 178, 0, 179, 0, 181, 182,
354	183, 184, 185, 186, 81, 187, 188, 180,
355	189, 189, 152, 190, 191, 192, 180, 194,
356	195, 196, 197, 5, 198, 199, 200, 193,
357	193, 37, 201, 193, 193, 181, 193, 202,
358	195, 203, 203, 5, 198, 199, 200, 193,
359	193, 193, 201, 193, 195, 203, 203, 5,
360	198, 199, 200, 193, 193, 193, 201, 193,
361	204, 193, 193, 193, 18, 205, 193, 198,
362	199, 193, 193, 193, 193, 206, 193, 204,
363	193, 207, 208, 209, 210, 5, 198, 199,
364	200, 193, 193, 35, 211, 193, 193, 204,
365	193, 212, 208, 213, 213, 5, 198, 199,
366	200, 193, 193, 193, 211, 193, 208, 213,
367	213, 5, 198, 199, 200, 193, 193, 193,
368	211, 193, 214, 193, 193, 193, 18, 215,
369	193, 198, 199, 193, 193, 193, 193, 206,
370	193, 214, 193, 216, 217, 218, 219, 5,
371	198, 199, 200, 193, 193, 33, 220, 193,
372	193, 214, 193, 221, 217, 222, 222, 5,
373	198, 199, 200, 193, 193, 193, 220, 193,
374	217, 222, 222, 5, 198, 199, 200, 193,
375	193, 193, 220, 193, 223, 193, 193, 193,
376	18, 224, 193, 198, 199, 193, 193, 193,
377	193, 206, 193, 223, 193, 225, 226, 227,
378	228, 5, 198, 199, 200, 193, 193, 31,
379	229, 193, 193, 223, 193, 230, 226, 231,
380	231, 5, 198, 199, 200, 193, 193, 193,
381	229, 193, 226, 231, 231, 5, 198, 199,
382	200, 193, 193, 193, 229, 193, 232, 193,
383	193, 193, 18, 233, 193, 198, 199, 193,
384	193, 193, 193, 206, 193, 232, 193, 234,
385	235, 236, 237, 5, 198, 199, 200, 193,
386	193, 29, 238, 193, 193, 232, 193, 239,
387	235, 240, 240, 5, 198, 199, 200, 193,
388	193, 193, 238, 193, 235, 240, 240, 5,
389	198, 199, 200, 193, 193, 193, 238, 193,
390	18, 241, 193, 198, 199, 193, 193, 193,
391	193, 206, 193, 198, 199, 193, 193, 193,
392	193, 206, 193, 242, 193, 193, 193, 199,
393	193, 199, 193, 243, 193, 244, 193, 245,
394	246, 193, 198, 199, 193, 193, 193, 3,
395	193, 193, 193, 1, 193, 2, 193, 193,
396	193, 193, 198, 199, 193, 198, 199, 193,
397	244, 193, 193, 193, 193, 198, 199, 193,
398	244, 193, 245, 193, 193, 198, 199, 193,
399	193, 193, 3, 193, 18, 193, 247, 247,
400	5, 198, 199, 193, 193, 193, 193, 206,
401	193, 248, 27, 249, 250, 8, 198, 199,
402	193, 193, 193, 193, 206, 193, 27, 249,
403	250, 8, 198, 199, 193, 193, 193, 193,
404	206, 193, 249, 249, 8, 198, 199, 193,
405	193, 193, 193, 206, 193, 251, 24, 252,
406	253, 11, 198, 199, 193, 193, 193, 193,
407	206, 193, 24, 252, 253, 11, 198, 199,
408	193, 193, 193, 193, 206, 193, 252, 252,
409	11, 198, 199, 193, 193, 193, 193, 206,
410	193, 254, 21, 255, 256, 14, 198, 199,
411	193, 193, 193, 193, 206, 193, 21, 255,
412	256, 14, 198, 199, 193, 193, 193, 193,
413	206, 193, 255, 255, 14, 198, 199, 193,
414	193, 193, 193, 206, 193, 257, 18, 193,
415	258, 193, 198, 199, 193, 193, 193, 193,
416	206, 193, 18, 193, 258, 193, 198, 199,
417	193, 193, 193, 193, 206, 193, 259, 193,
418	198, 199, 193, 193, 193, 193, 206, 193,
419	18, 193, 193, 193, 193, 198, 199, 193,
420	193, 193, 193, 206, 193, 235, 240, 240,
421	5, 198, 199, 193, 193, 193, 193, 238,
422	193, 1, 2, 193, 193, 18, 241, 193,
423	198, 199, 193, 193, 193, 193, 206, 193,
424	1, 193, 234, 235, 240, 240, 5, 198,
425	199, 200, 193, 193, 193, 238, 193, 234,
426	235, 236, 240, 5, 198, 199, 200, 193,
427	193, 29, 238, 193, 232, 193, 260, 193,
428	247, 247, 5, 198, 199, 193, 193, 193,
429	193, 206, 193, 232, 193, 232, 193, 193,
430	193, 193, 193, 193, 198, 199, 193, 193,
431	193, 193, 206, 193, 232, 193, 232, 193,
432	193, 193, 193, 261, 193, 198, 199, 193,
433	193, 193, 193, 206, 193, 232, 193, 232,
434	193, 260, 193, 193, 193, 193, 198, 199,
435	193, 193, 193, 193, 206, 193, 232, 193,
436	232, 2, 193, 193, 18, 233, 193, 198,
437	199, 193, 193, 193, 193, 206, 193, 232,
438	193, 225, 226, 231, 231, 5, 198, 199,
439	200, 193, 193, 193, 229, 193, 225, 226,
440	227, 231, 5, 198, 199, 200, 193, 193,
441	31, 229, 193, 223, 193, 262, 193, 247,
442	247, 5, 198, 199, 193, 193, 193, 193,
443	206, 193, 223, 193, 223, 193, 193, 193,
444	193, 193, 193, 198, 199, 193, 193, 193,
445	193, 206, 193, 223, 193, 223, 193, 193,
446	193, 193, 263, 193, 198, 199, 193, 193,
447	193, 193, 206, 193, 223, 193, 223, 193,
448	262, 193, 193, 193, 193, 198, 199, 193,
449	193, 193, 193, 206, 193, 223, 193, 223,
450	2, 193, 193, 18, 224, 193, 198, 199,
451	193, 193, 193, 193, 206, 193, 223, 193,
452	216, 217, 222, 222, 5, 198, 199, 200,
453	193, 193, 193, 220, 193, 216, 217, 218,
454	222, 5, 198, 199, 200, 193, 193, 33,
455	220, 193, 214, 193, 264, 193, 247, 247,
456	5, 198, 199, 193, 193, 193, 193, 206,
457	193, 214, 193, 214, 193, 193, 193, 193,
458	193, 193, 198, 199, 193, 193, 193, 193,
459	206, 193, 214, 193, 214, 193, 193, 193,
460	193, 265, 193, 198, 199, 193, 193, 193,
461	193, 206, 193, 214, 193, 214, 193, 264,
462	193, 193, 193, 193, 198, 199, 193, 193,
463	193, 193, 206, 193, 214, 193, 214, 2,
464	193, 193, 18, 215, 193, 198, 199, 193,
465	193, 193, 193, 206, 193, 214, 193, 207,
466	208, 213, 213, 5, 198, 199, 200, 193,
467	193, 193, 211, 193, 207, 208, 209, 213,
468	5, 198, 199, 200, 193, 193, 35, 211,
469	193, 204, 193, 266, 193, 247, 247, 5,
470	198, 199, 193, 193, 193, 193, 206, 193,
471	204, 193, 204, 193, 193, 193, 193, 193,
472	193, 198, 199, 193, 193, 193, 193, 206,
473	193, 204, 193, 204, 193, 193, 193, 193,
474	267, 193, 198, 199, 193, 193, 193, 193,
475	206, 193, 204, 193, 204, 193, 266, 193,
476	193, 193, 193, 198, 199, 193, 193, 193,
477	193, 206, 193, 204, 193, 204, 2, 193,
478	193, 18, 205, 193, 198, 199, 193, 193,
479	193, 193, 206, 193, 204, 193, 194, 195,
480	203, 203, 5, 198, 199, 200, 193, 193,
481	193, 201, 193, 194, 195, 196, 203, 5,
482	198, 199, 200, 193, 193, 37, 201, 193,
483	269, 270, 271, 272, 43, 273, 274, 268,
484	268, 268, 75, 275, 268, 276, 270, 277,
485	272, 43, 273, 274, 268, 268, 268, 268,
486	275, 268, 270, 277, 272, 43, 273, 274,
487	268, 268, 268, 268, 275, 268, 278, 268,
488	268, 268, 56, 279, 268, 273, 274, 268,
489	268, 268, 268, 280, 268, 278, 268, 281,
490	282, 283, 284, 43, 273, 274, 268, 268,
491	268, 73, 285, 268, 268, 278, 268, 286,
492	282, 287, 287, 43, 273, 274, 268, 268,
493	268, 268, 285, 268, 282, 287, 287, 43,
494	273, 274, 268, 268, 268, 268, 285, 268,
495	288, 268, 268, 268, 56, 289, 268, 273,
496	274, 268, 268, 268, 268, 280, 268, 288,
497	268, 290, 291, 292, 293, 43, 273, 274,
498	268, 268, 268, 71, 294, 268, 268, 288,
499	268, 295, 291, 296, 296, 43, 273, 274,
500	268, 268, 268, 268, 294, 268, 291, 296,
501	296, 43, 273, 274, 268, 268, 268, 268,
502	294, 268, 297, 268, 268, 268, 56, 298,
503	268, 273, 274, 268, 268, 268, 268, 280,
504	268, 297, 268, 299, 300, 301, 302, 43,
505	273, 274, 268, 268, 268, 69, 303, 268,
506	268, 297, 268, 304, 300, 305, 305, 43,
507	273, 274, 268, 268, 268, 268, 303, 268,
508	300, 305, 305, 43, 273, 274, 268, 268,
509	268, 268, 303, 268, 306, 268, 268, 268,
510	56, 307, 268, 273, 274, 268, 268, 268,
511	268, 280, 268, 306, 268, 308, 309, 310,
512	311, 43, 273, 274, 268, 268, 268, 67,
513	312, 268, 268, 306, 268, 313, 309, 314,
514	314, 43, 273, 274, 268, 268, 268, 268,
515	312, 268, 309, 314, 314, 43, 273, 274,
516	268, 268, 268, 268, 312, 268, 56, 315,
517	268, 273, 274, 268, 268, 268, 268, 280,
518	268, 273, 274, 268, 268, 268, 268, 280,
519	268, 316, 268, 268, 268, 274, 268, 274,
520	268, 317, 268, 318, 268, 319, 320, 268,
521	273, 274, 268, 268, 268, 41, 268, 268,
522	268, 39, 268, 40, 268, 268, 268, 268,
523	273, 274, 268, 273, 274, 268, 318, 268,
524	268, 268, 268, 273, 274, 268, 318, 268,
525	319, 268, 268, 273, 274, 268, 268, 268,
526	41, 268, 56, 268, 321, 321, 43, 273,
527	274, 268, 268, 268, 268, 280, 268, 322,
528	65, 323, 324, 46, 273, 274, 268, 268,
529	268, 268, 280, 268, 65, 323, 324, 46,
530	273, 274, 268, 268, 268, 268, 280, 268,
531	323, 323, 46, 273, 274, 268, 268, 268,
532	268, 280, 268, 325, 62, 326, 327, 49,
533	273, 274, 268, 268, 268, 268, 280, 268,
534	62, 326, 327, 49, 273, 274, 268, 268,
535	268, 268, 280, 268, 326, 326, 49, 273,
536	274, 268, 268, 268, 268, 280, 268, 328,
537	59, 329, 330, 52, 273, 274, 268, 268,
538	268, 268, 280, 268, 59, 329, 330, 52,
539	273, 274, 268, 268, 268, 268, 280, 268,
540	329, 329, 52, 273, 274, 268, 268, 268,
541	268, 280, 268, 331, 56, 268, 332, 268,
542	273, 274, 268, 268, 268, 268, 280, 268,
543	56, 268, 332, 268, 273, 274, 268, 268,
544	268, 268, 280, 268, 333, 268, 273, 274,
545	268, 268, 268, 268, 280, 268, 56, 268,
546	268, 268, 268, 273, 274, 268, 268, 268,
547	268, 280, 268, 39, 40, 268, 268, 56,
548	315, 268, 273, 274, 268, 268, 268, 268,
549	280, 268, 39, 268, 308, 309, 314, 314,
550	43, 273, 274, 268, 268, 268, 268, 312,
551	268, 308, 309, 310, 314, 43, 273, 274,
552	268, 268, 268, 67, 312, 268, 306, 268,
553	334, 268, 321, 321, 43, 273, 274, 268,
554	268, 268, 268, 280, 268, 306, 268, 306,
555	268, 268, 268, 268, 268, 268, 273, 274,
556	268, 268, 268, 268, 280, 268, 306, 268,
557	306, 268, 268, 268, 268, 335, 268, 273,
558	274, 268, 268, 268, 268, 280, 268, 306,
559	268, 306, 268, 334, 268, 268, 268, 268,
560	273, 274, 268, 268, 268, 268, 280, 268,
561	306, 268, 306, 40, 268, 268, 56, 307,
562	268, 273, 274, 268, 268, 268, 268, 280,
563	268, 306, 268, 299, 300, 305, 305, 43,
564	273, 274, 268, 268, 268, 268, 303, 268,
565	299, 300, 301, 305, 43, 273, 274, 268,
566	268, 268, 69, 303, 268, 297, 268, 336,
567	268, 321, 321, 43, 273, 274, 268, 268,
568	268, 268, 280, 268, 297, 268, 297, 268,
569	268, 268, 268, 268, 268, 273, 274, 268,
570	268, 268, 268, 280, 268, 297, 268, 297,
571	268, 268, 268, 268, 337, 268, 273, 274,
572	268, 268, 268, 268, 280, 268, 297, 268,
573	297, 268, 336, 268, 268, 268, 268, 273,
574	274, 268, 268, 268, 268, 280, 268, 297,
575	268, 297, 40, 268, 268, 56, 298, 268,
576	273, 274, 268, 268, 268, 268, 280, 268,
577	297, 268, 290, 291, 296, 296, 43, 273,
578	274, 268, 268, 268, 268, 294, 268, 290,
579	291, 292, 296, 43, 273, 274, 268, 268,
580	268, 71, 294, 268, 288, 268, 338, 268,
581	321, 321, 43, 273, 274, 268, 268, 268,
582	268, 280, 268, 288, 268, 288, 268, 268,
583	268, 268, 268, 268, 273, 274, 268, 268,
584	268, 268, 280, 268, 288, 268, 288, 268,
585	268, 268, 268, 339, 268, 273, 274, 268,
586	268, 268, 268, 280, 268, 288, 268, 288,
587	268, 338, 268, 268, 268, 268, 273, 274,
588	268, 268, 268, 268, 280, 268, 288, 268,
589	288, 40, 268, 268, 56, 289, 268, 273,
590	274, 268, 268, 268, 268, 280, 268, 288,
591	268, 281, 282, 287, 287, 43, 273, 274,
592	268, 268, 268, 268, 285, 268, 281, 282,
593	283, 287, 43, 273, 274, 268, 268, 268,
594	73, 285, 268, 278, 268, 340, 268, 321,
595	321, 43, 273, 274, 268, 268, 268, 268,
596	280, 268, 278, 268, 278, 268, 268, 268,
597	268, 268, 268, 273, 274, 268, 268, 268,
598	268, 280, 268, 278, 268, 278, 268, 268,
599	268, 268, 341, 268, 273, 274, 268, 268,
600	268, 268, 280, 268, 278, 268, 278, 268,
601	340, 268, 268, 268, 268, 273, 274, 268,
602	268, 268, 268, 280, 268, 278, 268, 74,
603	42, 42, 43, 268, 268, 268, 268, 268,
604	268, 74, 268, 278, 40, 268, 268, 56,
605	279, 268, 273, 274, 268, 268, 268, 268,
606	280, 268, 278, 268, 269, 270, 277, 272,
607	43, 273, 274, 268, 268, 268, 268, 275,
608	268, 343, 184, 344, 344, 81, 187, 188,
609	342, 342, 342, 342, 190, 342, 184, 344,
610	344, 81, 187, 188, 342, 342, 342, 342,
611	190, 342, 345, 342, 342, 342, 95, 346,
612	342, 187, 188, 342, 342, 342, 342, 347,
613	342, 345, 342, 348, 349, 350, 351, 81,
614	187, 188, 342, 342, 342, 112, 352, 342,
615	342, 345, 342, 353, 349, 354, 354, 81,
616	187, 188, 342, 342, 342, 342, 352, 342,
617	349, 354, 354, 81, 187, 188, 342, 342,
618	342, 342, 352, 342, 355, 342, 342, 342,
619	95, 356, 342, 187, 188, 342, 342, 342,
620	342, 347, 342, 355, 342, 357, 358, 359,
621	360, 81, 187, 188, 342, 342, 342, 110,
622	361, 342, 342, 355, 342, 362, 358, 363,
623	363, 81, 187, 188, 342, 342, 342, 342,
624	361, 342, 358, 363, 363, 81, 187, 188,
625	342, 342, 342, 342, 361, 342, 364, 342,
626	342, 342, 95, 365, 342, 187, 188, 342,
627	342, 342, 342, 347, 342, 364, 342, 366,
628	367, 368, 369, 81, 187, 188, 342, 342,
629	342, 108, 370, 342, 342, 364, 342, 371,
630	367, 372, 372, 81, 187, 188, 342, 342,
631	342, 342, 370, 342, 367, 372, 372, 81,
632	187, 188, 342, 342, 342, 342, 370, 342,
633	373, 342, 342, 342, 95, 374, 342, 187,
634	188, 342, 342, 342, 342, 347, 342, 373,
635	342, 375, 376, 377, 378, 81, 187, 188,
636	342, 342, 342, 106, 379, 342, 342, 373,
637	342, 380, 376, 381, 381, 81, 187, 188,
638	342, 342, 342, 342, 379, 342, 376, 381,
639	381, 81, 187, 188, 342, 342, 342, 342,
640	379, 342, 95, 382, 342, 187, 188, 342,
641	342, 342, 342, 347, 342, 187, 188, 342,
642	342, 342, 342, 347, 342, 383, 342, 342,
643	342, 188, 342, 188, 342, 384, 342, 385,
644	342, 386, 387, 342, 187, 188, 342, 342,
645	342, 79, 342, 342, 342, 77, 342, 78,
646	342, 342, 342, 342, 187, 188, 342, 187,
647	188, 342, 385, 342, 342, 342, 342, 187,
648	188, 342, 385, 342, 386, 342, 342, 187,
649	188, 342, 342, 342, 79, 342, 95, 342,
650	388, 388, 81, 187, 188, 342, 342, 342,
651	342, 347, 342, 389, 104, 390, 391, 85,
652	187, 188, 342, 342, 342, 342, 347, 342,
653	104, 390, 391, 85, 187, 188, 342, 342,
654	342, 342, 347, 342, 390, 390, 85, 187,
655	188, 342, 342, 342, 342, 347, 342, 392,
656	101, 393, 394, 88, 187, 188, 342, 342,
657	342, 342, 347, 342, 101, 393, 394, 88,
658	187, 188, 342, 342, 342, 342, 347, 342,
659	393, 393, 88, 187, 188, 342, 342, 342,
660	342, 347, 342, 395, 98, 396, 397, 91,
661	187, 188, 342, 342, 342, 342, 347, 342,
662	98, 396, 397, 91, 187, 188, 342, 342,
663	342, 342, 347, 342, 396, 396, 91, 187,
664	188, 342, 342, 342, 342, 347, 342, 398,
665	95, 342, 399, 342, 187, 188, 342, 342,
666	342, 342, 347, 342, 95, 342, 399, 342,
667	187, 188, 342, 342, 342, 342, 347, 342,
668	400, 342, 187, 188, 342, 342, 342, 342,
669	347, 342, 95, 342, 342, 342, 342, 187,
670	188, 342, 342, 342, 342, 347, 342, 77,
671	78, 342, 342, 95, 382, 342, 187, 188,
672	342, 342, 342, 342, 347, 342, 77, 342,
673	375, 376, 381, 381, 81, 187, 188, 342,
674	342, 342, 342, 379, 342, 375, 376, 377,
675	381, 81, 187, 188, 342, 342, 342, 106,
676	379, 342, 373, 342, 401, 342, 388, 388,
677	81, 187, 188, 342, 342, 342, 342, 347,
678	342, 373, 342, 373, 342, 342, 342, 342,
679	342, 342, 187, 188, 342, 342, 342, 342,
680	347, 342, 373, 342, 373, 342, 342, 342,
681	342, 402, 342, 187, 188, 342, 342, 342,
682	342, 347, 342, 373, 342, 373, 342, 401,
683	342, 342, 342, 342, 187, 188, 342, 342,
684	342, 342, 347, 342, 373, 342, 373, 78,
685	342, 342, 95, 374, 342, 187, 188, 342,
686	342, 342, 342, 347, 342, 373, 342, 366,
687	367, 372, 372, 81, 187, 188, 342, 342,
688	342, 342, 370, 342, 366, 367, 368, 372,
689	81, 187, 188, 342, 342, 342, 108, 370,
690	342, 364, 342, 403, 342, 388, 388, 81,
691	187, 188, 342, 342, 342, 342, 347, 342,
692	364, 342, 364, 342, 342, 342, 342, 342,
693	342, 187, 188, 342, 342, 342, 342, 347,
694	342, 364, 342, 364, 342, 342, 342, 342,
695	404, 342, 187, 188, 342, 342, 342, 342,
696	347, 342, 364, 342, 364, 342, 403, 342,
697	342, 342, 342, 187, 188, 342, 342, 342,
698	342, 347, 342, 364, 342, 364, 78, 342,
699	342, 95, 365, 342, 187, 188, 342, 342,
700	342, 342, 347, 342, 364, 342, 357, 358,
701	363, 363, 81, 187, 188, 342, 342, 342,
702	342, 361, 342, 357, 358, 359, 363, 81,
703	187, 188, 342, 342, 342, 110, 361, 342,
704	355, 342, 405, 342, 388, 388, 81, 187,
705	188, 342, 342, 342, 342, 347, 342, 355,
706	342, 355, 342, 342, 342, 342, 342, 342,
707	187, 188, 342, 342, 342, 342, 347, 342,
708	355, 342, 355, 342, 342, 342, 342, 406,
709	342, 187, 188, 342, 342, 342, 342, 347,
710	342, 355, 342, 355, 342, 405, 342, 342,
711	342, 342, 187, 188, 342, 342, 342, 342,
712	347, 342, 355, 342, 355, 78, 342, 342,
713	95, 356, 342, 187, 188, 342, 342, 342,
714	342, 347, 342, 355, 342, 348, 349, 354,
715	354, 81, 187, 188, 342, 342, 342, 342,
716	352, 342, 348, 349, 350, 354, 81, 187,
717	188, 342, 342, 342, 112, 352, 342, 345,
718	342, 407, 342, 388, 388, 81, 187, 188,
719	342, 342, 342, 342, 347, 342, 345, 342,
720	345, 342, 342, 342, 342, 342, 342, 187,
721	188, 342, 342, 342, 342, 347, 342, 345,
722	342, 345, 342, 342, 342, 342, 408, 342,
723	187, 188, 342, 342, 342, 342, 347, 342,
724	345, 342, 345, 342, 407, 342, 342, 342,
725	342, 187, 188, 342, 342, 342, 342, 347,
726	342, 345, 342, 345, 78, 342, 342, 95,
727	346, 342, 187, 188, 342, 342, 342, 342,
728	347, 342, 345, 342, 113, 80, 80, 81,
729	409, 409, 409, 409, 409, 152, 113, 409,
730	183, 184, 344, 344, 81, 187, 188, 342,
731	342, 342, 342, 190, 342, 113, 80, 80,
732	81, 409, 409, 409, 409, 409, 409, 113,
733	409, 411, 412, 413, 414, 119, 415, 416,
734	410, 410, 410, 151, 417, 410, 418, 412,
735	414, 414, 119, 415, 416, 410, 410, 410,
736	410, 417, 410, 412, 414, 414, 119, 415,
737	416, 410, 410, 410, 410, 417, 410, 419,
738	410, 410, 410, 132, 420, 410, 415, 416,
739	410, 410, 410, 410, 421, 410, 419, 410,
740	422, 423, 424, 425, 119, 415, 416, 410,
741	410, 410, 149, 426, 410, 410, 419, 410,
742	427, 423, 428, 428, 119, 415, 416, 410,
743	410, 410, 410, 426, 410, 423, 428, 428,
744	119, 415, 416, 410, 410, 410, 410, 426,
745	410, 429, 410, 410, 410, 132, 430, 410,
746	415, 416, 410, 410, 410, 410, 421, 410,
747	429, 410, 431, 432, 433, 434, 119, 415,
748	416, 410, 410, 410, 147, 435, 410, 410,
749	429, 410, 436, 432, 437, 437, 119, 415,
750	416, 410, 410, 410, 410, 435, 410, 432,
751	437, 437, 119, 415, 416, 410, 410, 410,
752	410, 435, 410, 438, 410, 410, 410, 132,
753	439, 410, 415, 416, 410, 410, 410, 410,
754	421, 410, 438, 410, 440, 441, 442, 443,
755	119, 415, 416, 410, 410, 410, 145, 444,
756	410, 410, 438, 410, 445, 441, 446, 446,
757	119, 415, 416, 410, 410, 410, 410, 444,
758	410, 441, 446, 446, 119, 415, 416, 410,
759	410, 410, 410, 444, 410, 447, 410, 410,
760	410, 132, 448, 410, 415, 416, 410, 410,
761	410, 410, 421, 410, 447, 410, 449, 450,
762	451, 452, 119, 415, 416, 410, 410, 410,
763	143, 453, 410, 410, 447, 410, 454, 450,
764	455, 455, 119, 415, 416, 410, 410, 410,
765	410, 453, 410, 450, 455, 455, 119, 415,
766	416, 410, 410, 410, 410, 453, 410, 132,
767	456, 410, 415, 416, 410, 410, 410, 410,
768	421, 410, 415, 416, 410, 410, 410, 410,
769	421, 410, 457, 410, 410, 410, 416, 410,
770	416, 410, 458, 410, 459, 410, 460, 461,
771	410, 415, 416, 410, 410, 410, 117, 410,
772	410, 410, 115, 410, 116, 410, 410, 410,
773	410, 415, 416, 410, 415, 416, 410, 459,
774	410, 410, 410, 410, 415, 416, 410, 459,
775	410, 460, 410, 410, 415, 416, 410, 410,
776	410, 117, 410, 132, 410, 462, 462, 119,
777	415, 416, 410, 410, 410, 410, 421, 410,
778	463, 141, 464, 465, 122, 415, 416, 410,
779	410, 410, 410, 421, 410, 141, 464, 465,
780	122, 415, 416, 410, 410, 410, 410, 421,
781	410, 464, 464, 122, 415, 416, 410, 410,
782	410, 410, 421, 410, 466, 138, 467, 468,
783	125, 415, 416, 410, 410, 410, 410, 421,
784	410, 138, 467, 468, 125, 415, 416, 410,
785	410, 410, 410, 421, 410, 467, 467, 125,
786	415, 416, 410, 410, 410, 410, 421, 410,
787	469, 135, 470, 471, 128, 415, 416, 410,
788	410, 410, 410, 421, 410, 135, 470, 471,
789	128, 415, 416, 410, 410, 410, 410, 421,
790	410, 470, 470, 128, 415, 416, 410, 410,
791	410, 410, 421, 410, 472, 132, 410, 473,
792	410, 415, 416, 410, 410, 410, 410, 421,
793	410, 132, 410, 473, 410, 415, 416, 410,
794	410, 410, 410, 421, 410, 474, 410, 415,
795	416, 410, 410, 410, 410, 421, 410, 132,
796	410, 410, 410, 410, 415, 416, 410, 410,
797	410, 410, 421, 410, 115, 116, 410, 410,
798	132, 456, 410, 415, 416, 410, 410, 410,
799	410, 421, 410, 115, 410, 449, 450, 455,
800	455, 119, 415, 416, 410, 410, 410, 410,
801	453, 410, 449, 450, 451, 455, 119, 415,
802	416, 410, 410, 410, 143, 453, 410, 447,
803	410, 475, 410, 462, 462, 119, 415, 416,
804	410, 410, 410, 410, 421, 410, 447, 410,
805	447, 410, 410, 410, 410, 410, 410, 415,
806	416, 410, 410, 410, 410, 421, 410, 447,
807	410, 447, 410, 410, 410, 410, 476, 410,
808	415, 416, 410, 410, 410, 410, 421, 410,
809	447, 410, 447, 410, 475, 410, 410, 410,
810	410, 415, 416, 410, 410, 410, 410, 421,
811	410, 447, 410, 447, 116, 410, 410, 132,
812	448, 410, 415, 416, 410, 410, 410, 410,
813	421, 410, 447, 410, 440, 441, 446, 446,
814	119, 415, 416, 410, 410, 410, 410, 444,
815	410, 440, 441, 442, 446, 119, 415, 416,
816	410, 410, 410, 145, 444, 410, 438, 410,
817	477, 410, 462, 462, 119, 415, 416, 410,
818	410, 410, 410, 421, 410, 438, 410, 438,
819	410, 410, 410, 410, 410, 410, 415, 416,
820	410, 410, 410, 410, 421, 410, 438, 410,
821	438, 410, 410, 410, 410, 478, 410, 415,
822	416, 410, 410, 410, 410, 421, 410, 438,
823	410, 438, 410, 477, 410, 410, 410, 410,
824	415, 416, 410, 410, 410, 410, 421, 410,
825	438, 410, 438, 116, 410, 410, 132, 439,
826	410, 415, 416, 410, 410, 410, 410, 421,
827	410, 438, 410, 431, 432, 437, 437, 119,
828	415, 416, 410, 410, 410, 410, 435, 410,
829	431, 432, 433, 437, 119, 415, 416, 410,
830	410, 410, 147, 435, 410, 429, 410, 479,
831	410, 462, 462, 119, 415, 416, 410, 410,
832	410, 410, 421, 410, 429, 410, 429, 410,
833	410, 410, 410, 410, 410, 415, 416, 410,
834	410, 410, 410, 421, 410, 429, 410, 429,
835	410, 410, 410, 410, 480, 410, 415, 416,
836	410, 410, 410, 410, 421, 410, 429, 410,
837	429, 410, 479, 410, 410, 410, 410, 415,
838	416, 410, 410, 410, 410, 421, 410, 429,
839	410, 429, 116, 410, 410, 132, 430, 410,
840	415, 416, 410, 410, 410, 410, 421, 410,
841	429, 410, 422, 423, 428, 428, 119, 415,
842	416, 410, 410, 410, 410, 426, 410, 422,
843	423, 424, 428, 119, 415, 416, 410, 410,
844	410, 149, 426, 410, 419, 410, 481, 410,
845	462, 462, 119, 415, 416, 410, 410, 410,
846	410, 421, 410, 419, 410, 419, 410, 410,
847	410, 410, 410, 410, 415, 416, 410, 410,
848	410, 410, 421, 410, 419, 410, 419, 410,
849	410, 410, 410, 482, 410, 415, 416, 410,
850	410, 410, 410, 421, 410, 419, 410, 419,
851	410, 481, 410, 410, 410, 410, 415, 416,
852	410, 410, 410, 410, 421, 410, 419, 410,
853	419, 116, 410, 410, 132, 420, 410, 415,
854	416, 410, 410, 410, 410, 421, 410, 419,
855	410, 411, 412, 414, 414, 119, 415, 416,
856	410, 410, 410, 410, 417, 410, 181, 182,
857	183, 184, 483, 344, 81, 187, 188, 342,
858	189, 189, 152, 190, 342, 181, 342, 194,
859	484, 196, 197, 5, 198, 199, 200, 193,
860	193, 37, 201, 193, 193, 181, 193, 204,
861	182, 183, 184, 485, 486, 81, 487, 488,
862	193, 189, 189, 152, 489, 193, 204, 193,
863	113, 80, 80, 81, 198, 199, 193, 193,
864	193, 152, 490, 193, 491, 2, 342, 342,
865	342, 408, 342, 187, 188, 342, 342, 342,
866	342, 347, 342, 491, 342, 492, 349, 493,
867	494, 81, 487, 488, 193, 193, 193, 153,
868	352, 193, 193, 491, 193, 495, 349, 354,
869	354, 81, 487, 488, 193, 193, 193, 193,
870	352, 193, 349, 354, 354, 81, 487, 488,
871	193, 193, 193, 193, 352, 193, 496, 193,
872	193, 193, 488, 193, 488, 193, 243, 193,
873	492, 349, 354, 354, 81, 487, 488, 193,
874	193, 193, 193, 352, 193, 492, 349, 493,
875	354, 81, 487, 488, 193, 193, 193, 153,
876	352, 193, 204, 193, 266, 113, 497, 497,
877	155, 198, 199, 193, 193, 193, 193, 490,
878	193, 204, 193, 498, 179, 499, 500, 157,
879	487, 488, 193, 193, 193, 193, 501, 193,
880	179, 499, 500, 157, 487, 488, 193, 193,
881	193, 193, 501, 193, 499, 499, 157, 487,
882	488, 193, 193, 193, 193, 501, 193, 502,
883	176, 503, 504, 160, 487, 488, 193, 193,
884	193, 193, 501, 193, 176, 503, 504, 160,
885	487, 488, 193, 193, 193, 193, 501, 193,
886	503, 503, 160, 487, 488, 193, 193, 193,
887	193, 501, 193, 505, 173, 506, 507, 163,
888	487, 488, 193, 193, 193, 193, 501, 193,
889	173, 506, 507, 163, 487, 488, 193, 193,
890	193, 193, 501, 193, 506, 506, 163, 487,
891	488, 193, 193, 193, 193, 501, 193, 508,
892	170, 193, 509, 193, 487, 488, 193, 193,
893	193, 193, 501, 193, 170, 193, 509, 193,
894	487, 488, 193, 193, 193, 193, 501, 193,
895	487, 488, 193, 193, 193, 193, 501, 193,
896	510, 193, 511, 512, 193, 487, 488, 193,
897	193, 193, 167, 193, 193, 193, 165, 193,
898	166, 193, 193, 193, 193, 487, 488, 193,
899	487, 488, 193, 510, 193, 193, 193, 193,
900	487, 488, 193, 510, 193, 511, 193, 193,
901	487, 488, 193, 193, 193, 167, 193, 491,
902	166, 342, 342, 95, 346, 342, 187, 188,
903	342, 342, 342, 342, 347, 342, 491, 342,
904	0
905};
906
907static const short _indic_syllable_machine_trans_targs[] = {
908	170, 195, 197, 198, 3, 201, 4, 6,
909	204, 7, 9, 207, 10, 12, 210, 13,
910	15, 16, 191, 18, 19, 209, 21, 22,
911	206, 24, 25, 203, 212, 216, 220, 223,
912	227, 230, 234, 237, 241, 244, 170, 270,
913	272, 273, 39, 276, 40, 42, 279, 43,
914	45, 282, 46, 48, 285, 49, 51, 52,
915	266, 54, 55, 284, 57, 58, 281, 60,
916	61, 278, 287, 290, 294, 297, 301, 304,
917	308, 311, 315, 319, 170, 343, 345, 346,
918	75, 349, 170, 76, 78, 352, 79, 81,
919	355, 82, 84, 358, 85, 87, 88, 339,
920	90, 91, 357, 93, 94, 354, 96, 97,
921	351, 360, 363, 367, 370, 374, 377, 381,
922	384, 388, 170, 418, 420, 421, 110, 424,
923	111, 113, 427, 114, 116, 430, 117, 119,
924	433, 120, 122, 123, 414, 125, 126, 432,
925	128, 129, 429, 131, 132, 426, 435, 438,
926	442, 445, 449, 452, 456, 459, 463, 466,
927	392, 478, 146, 481, 148, 484, 149, 151,
928	487, 152, 154, 490, 155, 493, 495, 496,
929	159, 160, 492, 162, 163, 489, 165, 166,
930	486, 168, 169, 483, 170, 171, 246, 320,
931	322, 391, 393, 340, 342, 394, 390, 467,
932	468, 170, 172, 174, 35, 245, 192, 194,
933	214, 243, 173, 34, 175, 239, 0, 176,
934	178, 33, 238, 236, 177, 32, 179, 232,
935	180, 182, 31, 231, 229, 181, 30, 183,
936	225, 184, 186, 29, 224, 222, 185, 28,
937	187, 218, 188, 190, 27, 217, 215, 189,
938	26, 200, 193, 170, 196, 1, 199, 2,
939	202, 5, 23, 205, 8, 20, 208, 11,
940	17, 211, 14, 213, 219, 221, 226, 228,
941	233, 235, 240, 242, 170, 247, 249, 71,
942	317, 267, 269, 318, 248, 70, 250, 313,
943	36, 251, 253, 69, 312, 310, 252, 68,
944	254, 306, 255, 257, 67, 305, 303, 256,
945	66, 258, 299, 259, 261, 65, 298, 296,
946	260, 64, 262, 292, 263, 265, 63, 291,
947	289, 264, 62, 275, 268, 170, 271, 37,
948	274, 38, 277, 41, 59, 280, 44, 56,
949	283, 47, 53, 286, 50, 288, 293, 295,
950	300, 302, 307, 309, 314, 316, 170, 321,
951	106, 323, 386, 72, 324, 326, 105, 385,
952	383, 325, 104, 327, 379, 328, 330, 103,
953	378, 376, 329, 102, 331, 372, 332, 334,
954	101, 371, 369, 333, 100, 335, 365, 336,
955	338, 99, 364, 362, 337, 98, 348, 341,
956	170, 344, 73, 347, 74, 350, 77, 95,
957	353, 80, 92, 356, 83, 89, 359, 86,
958	361, 366, 368, 373, 375, 380, 382, 387,
959	389, 170, 170, 395, 397, 142, 141, 415,
960	417, 465, 396, 398, 461, 107, 399, 401,
961	140, 460, 458, 400, 139, 402, 454, 403,
962	405, 138, 453, 451, 404, 137, 406, 447,
963	407, 409, 136, 446, 444, 408, 135, 410,
964	440, 411, 413, 134, 439, 437, 412, 133,
965	423, 416, 170, 419, 108, 422, 109, 425,
966	112, 130, 428, 115, 127, 431, 118, 124,
967	434, 121, 436, 441, 443, 448, 450, 455,
968	457, 462, 464, 143, 469, 470, 480, 475,
969	477, 498, 471, 472, 473, 144, 479, 474,
970	476, 145, 482, 147, 167, 156, 485, 150,
971	164, 488, 153, 161, 491, 158, 494, 157,
972	497
973};
974
975static const char _indic_syllable_machine_trans_actions[] = {
976	1, 2, 0, 0, 0, 2, 0, 0,
977	2, 0, 0, 2, 0, 0, 2, 0,
978	0, 0, 2, 0, 0, 2, 0, 0,
979	2, 0, 0, 2, 2, 2, 2, 2,
980	2, 2, 2, 2, 2, 2, 3, 2,
981	0, 0, 0, 2, 0, 0, 2, 0,
982	0, 2, 0, 0, 2, 0, 0, 0,
983	2, 0, 0, 2, 0, 0, 2, 0,
984	0, 2, 2, 2, 2, 2, 2, 2,
985	2, 2, 2, 2, 4, 2, 0, 0,
986	0, 2, 5, 0, 0, 2, 0, 0,
987	2, 0, 0, 2, 0, 0, 0, 2,
988	0, 0, 2, 0, 0, 2, 0, 0,
989	2, 2, 6, 2, 6, 2, 6, 2,
990	6, 2, 7, 2, 0, 0, 0, 2,
991	0, 0, 2, 0, 0, 2, 0, 0,
992	2, 0, 0, 0, 2, 0, 0, 2,
993	0, 0, 2, 0, 0, 2, 2, 2,
994	2, 2, 2, 2, 2, 2, 2, 2,
995	6, 8, 0, 2, 0, 2, 0, 0,
996	2, 0, 0, 2, 0, 2, 0, 0,
997	0, 0, 2, 0, 0, 2, 0, 0,
998	2, 0, 0, 2, 11, 2, 2, 6,
999	2, 12, 12, 0, 0, 2, 2, 6,
1000	2, 13, 2, 2, 0, 2, 0, 0,
1001	2, 2, 2, 0, 2, 2, 0, 2,
1002	2, 0, 2, 2, 2, 0, 2, 2,
1003	2, 2, 0, 2, 2, 2, 0, 2,
1004	2, 2, 2, 0, 2, 2, 2, 0,
1005	2, 2, 2, 2, 0, 2, 2, 2,
1006	0, 2, 0, 14, 0, 0, 2, 0,
1007	2, 0, 0, 2, 0, 0, 2, 0,
1008	0, 2, 0, 2, 2, 2, 2, 2,
1009	2, 2, 2, 2, 15, 2, 2, 0,
1010	2, 0, 0, 2, 2, 0, 2, 2,
1011	0, 2, 2, 0, 2, 2, 2, 0,
1012	2, 2, 2, 2, 0, 2, 2, 2,
1013	0, 2, 2, 2, 2, 0, 2, 2,
1014	2, 0, 2, 2, 2, 2, 0, 2,
1015	2, 2, 0, 2, 0, 16, 0, 0,
1016	2, 0, 2, 0, 0, 2, 0, 0,
1017	2, 0, 0, 2, 0, 2, 2, 2,
1018	2, 2, 2, 2, 2, 2, 17, 6,
1019	0, 6, 6, 0, 6, 2, 0, 6,
1020	2, 6, 0, 6, 6, 6, 2, 0,
1021	6, 2, 6, 0, 6, 6, 6, 2,
1022	0, 6, 2, 6, 0, 6, 6, 6,
1023	2, 0, 6, 2, 6, 0, 6, 0,
1024	18, 0, 0, 2, 0, 2, 0, 0,
1025	2, 0, 0, 2, 0, 0, 2, 0,
1026	2, 2, 2, 2, 2, 2, 2, 2,
1027	2, 19, 20, 2, 2, 0, 0, 0,
1028	0, 2, 2, 2, 2, 0, 2, 2,
1029	0, 2, 2, 2, 0, 2, 2, 2,
1030	2, 0, 2, 2, 2, 0, 2, 2,
1031	2, 2, 0, 2, 2, 2, 0, 2,
1032	2, 2, 2, 0, 2, 2, 2, 0,
1033	2, 0, 21, 0, 0, 2, 0, 2,
1034	0, 0, 2, 0, 0, 2, 0, 0,
1035	2, 0, 2, 2, 2, 2, 2, 2,
1036	2, 2, 2, 0, 0, 8, 2, 0,
1037	0, 2, 2, 8, 8, 0, 8, 8,
1038	0, 0, 2, 0, 0, 0, 2, 0,
1039	0, 2, 0, 0, 2, 0, 0, 0,
1040	2
1041};
1042
1043static const char _indic_syllable_machine_to_state_actions[] = {
1044	0, 0, 0, 0, 0, 0, 0, 0,
1045	0, 0, 0, 0, 0, 0, 0, 0,
1046	0, 0, 0, 0, 0, 0, 0, 0,
1047	0, 0, 0, 0, 0, 0, 0, 0,
1048	0, 0, 0, 0, 0, 0, 0, 0,
1049	0, 0, 0, 0, 0, 0, 0, 0,
1050	0, 0, 0, 0, 0, 0, 0, 0,
1051	0, 0, 0, 0, 0, 0, 0, 0,
1052	0, 0, 0, 0, 0, 0, 0, 0,
1053	0, 0, 0, 0, 0, 0, 0, 0,
1054	0, 0, 0, 0, 0, 0, 0, 0,
1055	0, 0, 0, 0, 0, 0, 0, 0,
1056	0, 0, 0, 0, 0, 0, 0, 0,
1057	0, 0, 0, 0, 0, 0, 0, 0,
1058	0, 0, 0, 0, 0, 0, 0, 0,
1059	0, 0, 0, 0, 0, 0, 0, 0,
1060	0, 0, 0, 0, 0, 0, 0, 0,
1061	0, 0, 0, 0, 0, 0, 0, 0,
1062	0, 0, 0, 0, 0, 0, 0, 0,
1063	0, 0, 0, 0, 0, 0, 0, 0,
1064	0, 0, 0, 0, 0, 0, 0, 0,
1065	0, 0, 9, 0, 0, 0, 0, 0,
1066	0, 0, 0, 0, 0, 0, 0, 0,
1067	0, 0, 0, 0, 0, 0, 0, 0,
1068	0, 0, 0, 0, 0, 0, 0, 0,
1069	0, 0, 0, 0, 0, 0, 0, 0,
1070	0, 0, 0, 0, 0, 0, 0, 0,
1071	0, 0, 0, 0, 0, 0, 0, 0,
1072	0, 0, 0, 0, 0, 0, 0, 0,
1073	0, 0, 0, 0, 0, 0, 0, 0,
1074	0, 0, 0, 0, 0, 0, 0, 0,
1075	0, 0, 0, 0, 0, 0, 0, 0,
1076	0, 0, 0, 0, 0, 0, 0, 0,
1077	0, 0, 0, 0, 0, 0, 0, 0,
1078	0, 0, 0, 0, 0, 0, 0, 0,
1079	0, 0, 0, 0, 0, 0, 0, 0,
1080	0, 0, 0, 0, 0, 0, 0, 0,
1081	0, 0, 0, 0, 0, 0, 0, 0,
1082	0, 0, 0, 0, 0, 0, 0, 0,
1083	0, 0, 0, 0, 0, 0, 0, 0,
1084	0, 0, 0, 0, 0, 0, 0, 0,
1085	0, 0, 0, 0, 0, 0, 0, 0,
1086	0, 0, 0, 0, 0, 0, 0, 0,
1087	0, 0, 0, 0, 0, 0, 0, 0,
1088	0, 0, 0, 0, 0, 0, 0, 0,
1089	0, 0, 0, 0, 0, 0, 0, 0,
1090	0, 0, 0, 0, 0, 0, 0, 0,
1091	0, 0, 0, 0, 0, 0, 0, 0,
1092	0, 0, 0, 0, 0, 0, 0, 0,
1093	0, 0, 0, 0, 0, 0, 0, 0,
1094	0, 0, 0, 0, 0, 0, 0, 0,
1095	0, 0, 0, 0, 0, 0, 0, 0,
1096	0, 0, 0, 0, 0, 0, 0, 0,
1097	0, 0, 0, 0, 0, 0, 0, 0,
1098	0, 0, 0, 0, 0, 0, 0, 0,
1099	0, 0, 0, 0, 0, 0, 0, 0,
1100	0, 0, 0, 0, 0, 0, 0, 0,
1101	0, 0, 0, 0, 0, 0, 0, 0,
1102	0, 0, 0, 0, 0, 0, 0, 0,
1103	0, 0, 0, 0, 0, 0, 0, 0,
1104	0, 0, 0, 0, 0, 0, 0, 0,
1105	0, 0, 0, 0, 0, 0, 0, 0,
1106	0, 0, 0
1107};
1108
1109static const char _indic_syllable_machine_from_state_actions[] = {
1110	0, 0, 0, 0, 0, 0, 0, 0,
1111	0, 0, 0, 0, 0, 0, 0, 0,
1112	0, 0, 0, 0, 0, 0, 0, 0,
1113	0, 0, 0, 0, 0, 0, 0, 0,
1114	0, 0, 0, 0, 0, 0, 0, 0,
1115	0, 0, 0, 0, 0, 0, 0, 0,
1116	0, 0, 0, 0, 0, 0, 0, 0,
1117	0, 0, 0, 0, 0, 0, 0, 0,
1118	0, 0, 0, 0, 0, 0, 0, 0,
1119	0, 0, 0, 0, 0, 0, 0, 0,
1120	0, 0, 0, 0, 0, 0, 0, 0,
1121	0, 0, 0, 0, 0, 0, 0, 0,
1122	0, 0, 0, 0, 0, 0, 0, 0,
1123	0, 0, 0, 0, 0, 0, 0, 0,
1124	0, 0, 0, 0, 0, 0, 0, 0,
1125	0, 0, 0, 0, 0, 0, 0, 0,
1126	0, 0, 0, 0, 0, 0, 0, 0,
1127	0, 0, 0, 0, 0, 0, 0, 0,
1128	0, 0, 0, 0, 0, 0, 0, 0,
1129	0, 0, 0, 0, 0, 0, 0, 0,
1130	0, 0, 0, 0, 0, 0, 0, 0,
1131	0, 0, 10, 0, 0, 0, 0, 0,
1132	0, 0, 0, 0, 0, 0, 0, 0,
1133	0, 0, 0, 0, 0, 0, 0, 0,
1134	0, 0, 0, 0, 0, 0, 0, 0,
1135	0, 0, 0, 0, 0, 0, 0, 0,
1136	0, 0, 0, 0, 0, 0, 0, 0,
1137	0, 0, 0, 0, 0, 0, 0, 0,
1138	0, 0, 0, 0, 0, 0, 0, 0,
1139	0, 0, 0, 0, 0, 0, 0, 0,
1140	0, 0, 0, 0, 0, 0, 0, 0,
1141	0, 0, 0, 0, 0, 0, 0, 0,
1142	0, 0, 0, 0, 0, 0, 0, 0,
1143	0, 0, 0, 0, 0, 0, 0, 0,
1144	0, 0, 0, 0, 0, 0, 0, 0,
1145	0, 0, 0, 0, 0, 0, 0, 0,
1146	0, 0, 0, 0, 0, 0, 0, 0,
1147	0, 0, 0, 0, 0, 0, 0, 0,
1148	0, 0, 0, 0, 0, 0, 0, 0,
1149	0, 0, 0, 0, 0, 0, 0, 0,
1150	0, 0, 0, 0, 0, 0, 0, 0,
1151	0, 0, 0, 0, 0, 0, 0, 0,
1152	0, 0, 0, 0, 0, 0, 0, 0,
1153	0, 0, 0, 0, 0, 0, 0, 0,
1154	0, 0, 0, 0, 0, 0, 0, 0,
1155	0, 0, 0, 0, 0, 0, 0, 0,
1156	0, 0, 0, 0, 0, 0, 0, 0,
1157	0, 0, 0, 0, 0, 0, 0, 0,
1158	0, 0, 0, 0, 0, 0, 0, 0,
1159	0, 0, 0, 0, 0, 0, 0, 0,
1160	0, 0, 0, 0, 0, 0, 0, 0,
1161	0, 0, 0, 0, 0, 0, 0, 0,
1162	0, 0, 0, 0, 0, 0, 0, 0,
1163	0, 0, 0, 0, 0, 0, 0, 0,
1164	0, 0, 0, 0, 0, 0, 0, 0,
1165	0, 0, 0, 0, 0, 0, 0, 0,
1166	0, 0, 0, 0, 0, 0, 0, 0,
1167	0, 0, 0, 0, 0, 0, 0, 0,
1168	0, 0, 0, 0, 0, 0, 0, 0,
1169	0, 0, 0, 0, 0, 0, 0, 0,
1170	0, 0, 0, 0, 0, 0, 0, 0,
1171	0, 0, 0, 0, 0, 0, 0, 0,
1172	0, 0, 0
1173};
1174
1175static const short _indic_syllable_machine_eof_trans[] = {
1176	1, 1, 1, 1, 1, 1, 1, 1,
1177	1, 1, 1, 1, 1, 1, 1, 1,
1178	1, 1, 1, 1, 1, 1, 1, 1,
1179	1, 1, 1, 1, 1, 1, 1, 1,
1180	1, 1, 1, 1, 39, 39, 39, 39,
1181	39, 39, 39, 39, 39, 39, 39, 39,
1182	39, 39, 39, 39, 39, 39, 39, 39,
1183	39, 39, 39, 39, 39, 39, 39, 39,
1184	39, 39, 39, 39, 39, 39, 39, 39,
1185	77, 77, 77, 83, 83, 77, 77, 77,
1186	77, 77, 77, 77, 77, 77, 77, 77,
1187	77, 77, 77, 77, 77, 77, 77, 77,
1188	77, 77, 77, 77, 77, 77, 77, 77,
1189	83, 77, 77, 115, 115, 115, 115, 115,
1190	115, 115, 115, 115, 115, 115, 115, 115,
1191	115, 115, 115, 115, 115, 115, 115, 115,
1192	115, 115, 115, 115, 115, 115, 115, 115,
1193	115, 115, 115, 115, 115, 115, 115, 77,
1194	1, 1, 1, 1, 1, 1, 1, 1,
1195	1, 1, 1, 1, 1, 1, 1, 1,
1196	1, 1, 1, 1, 1, 1, 1, 1,
1197	1, 1, 0, 194, 194, 194, 194, 194,
1198	194, 194, 194, 194, 194, 194, 194, 194,
1199	194, 194, 194, 194, 194, 194, 194, 194,
1200	194, 194, 194, 194, 194, 194, 194, 194,
1201	194, 194, 194, 194, 194, 194, 194, 194,
1202	194, 194, 194, 194, 194, 194, 194, 194,
1203	194, 194, 194, 194, 194, 194, 194, 194,
1204	194, 194, 194, 194, 194, 194, 194, 194,
1205	194, 194, 194, 194, 194, 194, 194, 194,
1206	194, 194, 194, 194, 194, 194, 269, 269,
1207	269, 269, 269, 269, 269, 269, 269, 269,
1208	269, 269, 269, 269, 269, 269, 269, 269,
1209	269, 269, 269, 269, 269, 269, 269, 269,
1210	269, 269, 269, 269, 269, 269, 269, 269,
1211	269, 269, 269, 269, 269, 269, 269, 269,
1212	269, 269, 269, 269, 269, 269, 269, 269,
1213	269, 269, 269, 269, 269, 269, 269, 269,
1214	269, 269, 269, 269, 269, 269, 269, 269,
1215	269, 269, 269, 269, 269, 269, 269, 269,
1216	343, 343, 343, 343, 343, 343, 343, 343,
1217	343, 343, 343, 343, 343, 343, 343, 343,
1218	343, 343, 343, 343, 343, 343, 343, 343,
1219	343, 343, 343, 343, 343, 343, 343, 343,
1220	343, 343, 343, 343, 343, 343, 343, 343,
1221	343, 343, 343, 343, 343, 343, 343, 343,
1222	343, 343, 343, 343, 343, 343, 343, 343,
1223	343, 343, 343, 343, 343, 343, 343, 343,
1224	343, 343, 343, 343, 343, 343, 343, 410,
1225	343, 410, 411, 411, 411, 411, 411, 411,
1226	411, 411, 411, 411, 411, 411, 411, 411,
1227	411, 411, 411, 411, 411, 411, 411, 411,
1228	411, 411, 411, 411, 411, 411, 411, 411,
1229	411, 411, 411, 411, 411, 411, 411, 411,
1230	411, 411, 411, 411, 411, 411, 411, 411,
1231	411, 411, 411, 411, 411, 411, 411, 411,
1232	411, 411, 411, 411, 411, 411, 411, 411,
1233	411, 411, 411, 411, 411, 411, 411, 411,
1234	411, 411, 411, 343, 194, 194, 194, 343,
1235	194, 194, 194, 194, 194, 194, 194, 194,
1236	194, 194, 194, 194, 194, 194, 194, 194,
1237	194, 194, 194, 194, 194, 194, 194, 194,
1238	194, 194, 343
1239};
1240
1241static const int indic_syllable_machine_start = 170;
1242static const int indic_syllable_machine_first_final = 170;
1243static const int indic_syllable_machine_error = -1;
1244
1245static const int indic_syllable_machine_en_main = 170;
1246
1247
1248#line 36 "hb-ot-shape-complex-indic-machine.rl"
1249
1250
1251
1252#line 91 "hb-ot-shape-complex-indic-machine.rl"
1253
1254
1255#define found_syllable(syllable_type) \
1256  HB_STMT_START { \
1257    if (0) fprintf (stderr, "syllable %d..%d %s\n", last, p+1, #syllable_type); \
1258    for (unsigned int i = last; i < p+1; i++) \
1259      info[i].syllable() = (syllable_serial << 4) | syllable_type; \
1260    last = p+1; \
1261    syllable_serial++; \
1262    if (unlikely (syllable_serial == 16)) syllable_serial = 1; \
1263  } HB_STMT_END
1264
1265static void
1266find_syllables (hb_buffer_t *buffer)
1267{
1268  unsigned int p, pe, eof, ts HB_UNUSED, te HB_UNUSED, act HB_UNUSED;
1269  int cs;
1270  hb_glyph_info_t *info = buffer->info;
1271
1272#line 1273 "hb-ot-shape-complex-indic-machine.hh.tmp"
1273	{
1274	cs = indic_syllable_machine_start;
1275	ts = 0;
1276	te = 0;
1277	act = 0;
1278	}
1279
1280#line 112 "hb-ot-shape-complex-indic-machine.rl"
1281
1282
1283  p = 0;
1284  pe = eof = buffer->len;
1285
1286  unsigned int last = 0;
1287  unsigned int syllable_serial = 1;
1288
1289#line 1290 "hb-ot-shape-complex-indic-machine.hh.tmp"
1290	{
1291	int _slen;
1292	int _trans;
1293	const unsigned char *_keys;
1294	const short *_inds;
1295	if ( p == pe )
1296		goto _test_eof;
1297_resume:
1298	switch ( _indic_syllable_machine_from_state_actions[cs] ) {
1299	case 10:
1300#line 1 "NONE"
1301	{ts = p;}
1302	break;
1303#line 1304 "hb-ot-shape-complex-indic-machine.hh.tmp"
1304	}
1305
1306	_keys = _indic_syllable_machine_trans_keys + (cs<<1);
1307	_inds = _indic_syllable_machine_indicies + _indic_syllable_machine_index_offsets[cs];
1308
1309	_slen = _indic_syllable_machine_key_spans[cs];
1310	_trans = _inds[ _slen > 0 && _keys[0] <=( info[p].indic_category()) &&
1311		( info[p].indic_category()) <= _keys[1] ?
1312		( info[p].indic_category()) - _keys[0] : _slen ];
1313
1314_eof_trans:
1315	cs = _indic_syllable_machine_trans_targs[_trans];
1316
1317	if ( _indic_syllable_machine_trans_actions[_trans] == 0 )
1318		goto _again;
1319
1320	switch ( _indic_syllable_machine_trans_actions[_trans] ) {
1321	case 2:
1322#line 1 "NONE"
1323	{te = p+1;}
1324	break;
1325	case 14:
1326#line 83 "hb-ot-shape-complex-indic-machine.rl"
1327	{te = p+1;{ found_syllable (consonant_syllable); }}
1328	break;
1329	case 16:
1330#line 84 "hb-ot-shape-complex-indic-machine.rl"
1331	{te = p+1;{ found_syllable (vowel_syllable); }}
1332	break;
1333	case 21:
1334#line 85 "hb-ot-shape-complex-indic-machine.rl"
1335	{te = p+1;{ found_syllable (standalone_cluster); }}
1336	break;
1337	case 18:
1338#line 86 "hb-ot-shape-complex-indic-machine.rl"
1339	{te = p+1;{ found_syllable (broken_cluster); }}
1340	break;
1341	case 11:
1342#line 87 "hb-ot-shape-complex-indic-machine.rl"
1343	{te = p+1;{ found_syllable (non_indic_cluster); }}
1344	break;
1345	case 13:
1346#line 83 "hb-ot-shape-complex-indic-machine.rl"
1347	{te = p;p--;{ found_syllable (consonant_syllable); }}
1348	break;
1349	case 15:
1350#line 84 "hb-ot-shape-complex-indic-machine.rl"
1351	{te = p;p--;{ found_syllable (vowel_syllable); }}
1352	break;
1353	case 20:
1354#line 85 "hb-ot-shape-complex-indic-machine.rl"
1355	{te = p;p--;{ found_syllable (standalone_cluster); }}
1356	break;
1357	case 17:
1358#line 86 "hb-ot-shape-complex-indic-machine.rl"
1359	{te = p;p--;{ found_syllable (broken_cluster); }}
1360	break;
1361	case 19:
1362#line 87 "hb-ot-shape-complex-indic-machine.rl"
1363	{te = p;p--;{ found_syllable (non_indic_cluster); }}
1364	break;
1365	case 1:
1366#line 83 "hb-ot-shape-complex-indic-machine.rl"
1367	{{p = ((te))-1;}{ found_syllable (consonant_syllable); }}
1368	break;
1369	case 3:
1370#line 84 "hb-ot-shape-complex-indic-machine.rl"
1371	{{p = ((te))-1;}{ found_syllable (vowel_syllable); }}
1372	break;
1373	case 7:
1374#line 85 "hb-ot-shape-complex-indic-machine.rl"
1375	{{p = ((te))-1;}{ found_syllable (standalone_cluster); }}
1376	break;
1377	case 4:
1378#line 86 "hb-ot-shape-complex-indic-machine.rl"
1379	{{p = ((te))-1;}{ found_syllable (broken_cluster); }}
1380	break;
1381	case 5:
1382#line 1 "NONE"
1383	{	switch( act ) {
1384	case 1:
1385	{{p = ((te))-1;} found_syllable (consonant_syllable); }
1386	break;
1387	case 4:
1388	{{p = ((te))-1;} found_syllable (broken_cluster); }
1389	break;
1390	case 5:
1391	{{p = ((te))-1;} found_syllable (non_indic_cluster); }
1392	break;
1393	}
1394	}
1395	break;
1396	case 8:
1397#line 1 "NONE"
1398	{te = p+1;}
1399#line 83 "hb-ot-shape-complex-indic-machine.rl"
1400	{act = 1;}
1401	break;
1402	case 6:
1403#line 1 "NONE"
1404	{te = p+1;}
1405#line 86 "hb-ot-shape-complex-indic-machine.rl"
1406	{act = 4;}
1407	break;
1408	case 12:
1409#line 1 "NONE"
1410	{te = p+1;}
1411#line 87 "hb-ot-shape-complex-indic-machine.rl"
1412	{act = 5;}
1413	break;
1414#line 1415 "hb-ot-shape-complex-indic-machine.hh.tmp"
1415	}
1416
1417_again:
1418	switch ( _indic_syllable_machine_to_state_actions[cs] ) {
1419	case 9:
1420#line 1 "NONE"
1421	{ts = 0;}
1422	break;
1423#line 1424 "hb-ot-shape-complex-indic-machine.hh.tmp"
1424	}
1425
1426	if ( ++p != pe )
1427		goto _resume;
1428	_test_eof: {}
1429	if ( p == eof )
1430	{
1431	if ( _indic_syllable_machine_eof_trans[cs] > 0 ) {
1432		_trans = _indic_syllable_machine_eof_trans[cs] - 1;
1433		goto _eof_trans;
1434	}
1435	}
1436
1437	}
1438
1439#line 121 "hb-ot-shape-complex-indic-machine.rl"
1440
1441}
1442
1443#endif /* HB_OT_SHAPE_COMPLEX_INDIC_MACHINE_HH */
1444