• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 
2 #line 1 "hb-ot-shaper-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_SHAPER_INDIC_MACHINE_HH
30 #define HB_OT_SHAPER_INDIC_MACHINE_HH
31 
32 #include "hb.hh"
33 
34 #include "hb-ot-layout.hh"
35 #include "hb-ot-shaper-indic.hh"
36 
37 /* buffer var allocations */
38 #define indic_category() ot_shaper_var_u8_category() /* indic_category_t */
39 #define indic_position() ot_shaper_var_u8_auxiliary() /* indic_position_t */
40 
41 using indic_category_t = unsigned;
42 using indic_position_t = ot_position_t;
43 
44 #define I_Cat(Cat) indic_syllable_machine_ex_##Cat
45 
46 enum indic_syllable_type_t {
47   indic_consonant_syllable,
48   indic_vowel_syllable,
49   indic_standalone_cluster,
50   indic_symbol_cluster,
51   indic_broken_cluster,
52   indic_non_indic_cluster,
53 };
54 
55 
56 #line 57 "hb-ot-shaper-indic-machine.hh"
57 #define indic_syllable_machine_ex_A 9u
58 #define indic_syllable_machine_ex_C 1u
59 #define indic_syllable_machine_ex_CM 16u
60 #define indic_syllable_machine_ex_CS 18u
61 #define indic_syllable_machine_ex_DOTTEDCIRCLE 11u
62 #define indic_syllable_machine_ex_H 4u
63 #define indic_syllable_machine_ex_M 7u
64 #define indic_syllable_machine_ex_MPst 13u
65 #define indic_syllable_machine_ex_N 3u
66 #define indic_syllable_machine_ex_PLACEHOLDER 10u
67 #define indic_syllable_machine_ex_RS 12u
68 #define indic_syllable_machine_ex_Ra 15u
69 #define indic_syllable_machine_ex_Repha 14u
70 #define indic_syllable_machine_ex_SM 8u
71 #define indic_syllable_machine_ex_SMPst 57u
72 #define indic_syllable_machine_ex_Symbol 17u
73 #define indic_syllable_machine_ex_V 2u
74 #define indic_syllable_machine_ex_VD 9u
75 #define indic_syllable_machine_ex_X 0u
76 #define indic_syllable_machine_ex_ZWJ 6u
77 #define indic_syllable_machine_ex_ZWNJ 5u
78 
79 
80 #line 81 "hb-ot-shaper-indic-machine.hh"
81 static const unsigned char _indic_syllable_machine_trans_keys[] = {
82 	8u, 57u, 4u, 57u, 5u, 57u, 5u, 57u, 13u, 13u, 4u, 57u, 4u, 57u, 4u, 57u,
83 	8u, 57u, 5u, 57u, 5u, 57u, 13u, 13u, 4u, 57u, 4u, 57u, 4u, 57u, 4u, 57u,
84 	8u, 57u, 5u, 57u, 5u, 57u, 13u, 13u, 4u, 57u, 4u, 57u, 4u, 57u, 8u, 57u,
85 	5u, 57u, 5u, 57u, 13u, 13u, 4u, 57u, 4u, 57u, 5u, 57u, 8u, 57u, 1u, 57u,
86 	3u, 57u, 3u, 57u, 4u, 57u, 1u, 57u, 5u, 57u, 5u, 57u, 9u, 9u, 5u, 9u,
87 	1u, 57u, 1u, 57u, 1u, 57u, 3u, 57u, 4u, 57u, 5u, 57u, 5u, 57u, 4u, 57u,
88 	5u, 57u, 3u, 57u, 5u, 57u, 3u, 57u, 3u, 57u, 3u, 57u, 3u, 57u, 4u, 57u,
89 	1u, 57u, 3u, 57u, 3u, 57u, 4u, 57u, 1u, 57u, 5u, 57u, 9u, 9u, 5u, 9u,
90 	1u, 57u, 1u, 57u, 3u, 57u, 4u, 57u, 5u, 57u, 5u, 57u, 4u, 57u, 5u, 57u,
91 	5u, 57u, 3u, 57u, 5u, 57u, 3u, 57u, 3u, 57u, 4u, 57u, 3u, 57u, 3u, 57u,
92 	4u, 57u, 1u, 57u, 3u, 57u, 1u, 57u, 5u, 57u, 9u, 9u, 5u, 9u, 1u, 57u,
93 	1u, 57u, 3u, 57u, 4u, 57u, 5u, 57u, 5u, 57u, 3u, 57u, 4u, 57u, 5u, 57u,
94 	5u, 57u, 3u, 57u, 5u, 57u, 3u, 57u, 4u, 57u, 4u, 57u, 3u, 57u, 3u, 57u,
95 	4u, 57u, 1u, 57u, 3u, 57u, 1u, 57u, 5u, 57u, 9u, 9u, 5u, 9u, 1u, 57u,
96 	1u, 57u, 3u, 57u, 4u, 57u, 5u, 57u, 5u, 57u, 3u, 57u, 4u, 57u, 5u, 57u,
97 	5u, 57u, 3u, 57u, 5u, 57u, 1u, 57u, 3u, 57u, 1u, 57u, 4u, 57u, 5u, 57u,
98 	5u, 57u, 9u, 9u, 5u, 9u, 1u, 57u, 3u, 57u, 5u, 57u, 5u, 57u, 9u, 9u,
99 	5u, 9u, 1u, 15u, 0
100 };
101 
102 static const char _indic_syllable_machine_key_spans[] = {
103 	50, 54, 53, 53, 1, 54, 54, 54,
104 	50, 53, 53, 1, 54, 54, 54, 54,
105 	50, 53, 53, 1, 54, 54, 54, 50,
106 	53, 53, 1, 54, 54, 53, 50, 57,
107 	55, 55, 54, 57, 53, 53, 1, 5,
108 	57, 57, 57, 55, 54, 53, 53, 54,
109 	53, 55, 53, 55, 55, 55, 55, 54,
110 	57, 55, 55, 54, 57, 53, 1, 5,
111 	57, 57, 55, 54, 53, 53, 54, 53,
112 	53, 55, 53, 55, 55, 54, 55, 55,
113 	54, 57, 55, 57, 53, 1, 5, 57,
114 	57, 55, 54, 53, 53, 55, 54, 53,
115 	53, 55, 53, 55, 54, 54, 55, 55,
116 	54, 57, 55, 57, 53, 1, 5, 57,
117 	57, 55, 54, 53, 53, 55, 54, 53,
118 	53, 55, 53, 57, 55, 57, 54, 53,
119 	53, 1, 5, 57, 55, 53, 53, 1,
120 	5, 15
121 };
122 
123 static const short _indic_syllable_machine_index_offsets[] = {
124 	0, 51, 106, 160, 214, 216, 271, 326,
125 	381, 432, 486, 540, 542, 597, 652, 707,
126 	762, 813, 867, 921, 923, 978, 1033, 1088,
127 	1139, 1193, 1247, 1249, 1304, 1359, 1413, 1464,
128 	1522, 1578, 1634, 1689, 1747, 1801, 1855, 1857,
129 	1863, 1921, 1979, 2037, 2093, 2148, 2202, 2256,
130 	2311, 2365, 2421, 2475, 2531, 2587, 2643, 2699,
131 	2754, 2812, 2868, 2924, 2979, 3037, 3091, 3093,
132 	3099, 3157, 3215, 3271, 3326, 3380, 3434, 3489,
133 	3543, 3597, 3653, 3707, 3763, 3819, 3874, 3930,
134 	3986, 4041, 4099, 4155, 4213, 4267, 4269, 4275,
135 	4333, 4391, 4447, 4502, 4556, 4610, 4666, 4721,
136 	4775, 4829, 4885, 4939, 4995, 5050, 5105, 5161,
137 	5217, 5272, 5330, 5386, 5444, 5498, 5500, 5506,
138 	5564, 5622, 5678, 5733, 5787, 5841, 5897, 5952,
139 	6006, 6060, 6116, 6170, 6228, 6284, 6342, 6397,
140 	6451, 6505, 6507, 6513, 6571, 6627, 6681, 6735,
141 	6737, 6743
142 };
143 
144 static const unsigned char _indic_syllable_machine_indicies[] = {
145 	1, 0, 0, 0, 0, 0, 0, 0,
146 	0, 0, 0, 0, 0, 0, 0, 0,
147 	0, 0, 0, 0, 0, 0, 0, 0,
148 	0, 0, 0, 0, 0, 0, 0, 0,
149 	0, 0, 0, 0, 0, 0, 0, 0,
150 	0, 0, 0, 0, 0, 0, 0, 0,
151 	0, 1, 0, 2, 3, 3, 4, 5,
152 	0, 0, 0, 0, 4, 0, 0, 0,
153 	0, 0, 0, 0, 0, 0, 0, 0,
154 	0, 0, 0, 0, 0, 0, 0, 0,
155 	0, 0, 0, 0, 0, 0, 0, 0,
156 	0, 0, 0, 0, 0, 0, 0, 0,
157 	0, 0, 0, 0, 0, 0, 0, 0,
158 	5, 0, 3, 3, 4, 6, 0, 0,
159 	0, 0, 4, 0, 0, 0, 0, 0,
160 	0, 0, 0, 0, 0, 0, 0, 0,
161 	0, 0, 0, 0, 0, 0, 0, 0,
162 	0, 0, 0, 0, 0, 0, 0, 0,
163 	0, 0, 0, 0, 0, 0, 0, 0,
164 	0, 0, 0, 0, 0, 0, 6, 0,
165 	3, 3, 4, 5, 0, 0, 0, 0,
166 	4, 0, 0, 0, 0, 0, 0, 0,
167 	0, 0, 0, 0, 0, 0, 0, 0,
168 	0, 0, 0, 0, 0, 0, 0, 0,
169 	0, 0, 0, 0, 0, 0, 0, 0,
170 	0, 0, 0, 0, 0, 0, 0, 0,
171 	0, 0, 0, 0, 5, 0, 4, 0,
172 	7, 3, 3, 4, 5, 0, 0, 0,
173 	0, 4, 0, 0, 0, 0, 0, 0,
174 	0, 0, 0, 0, 0, 0, 0, 0,
175 	0, 0, 0, 0, 0, 0, 0, 0,
176 	0, 0, 0, 0, 0, 0, 0, 0,
177 	0, 0, 0, 0, 0, 0, 0, 0,
178 	0, 0, 0, 0, 0, 5, 0, 2,
179 	3, 3, 4, 5, 0, 0, 0, 8,
180 	4, 0, 0, 0, 0, 0, 0, 0,
181 	0, 0, 0, 0, 0, 0, 0, 0,
182 	0, 0, 0, 0, 0, 0, 0, 0,
183 	0, 0, 0, 0, 0, 0, 0, 0,
184 	0, 0, 0, 0, 0, 0, 0, 0,
185 	0, 0, 0, 0, 5, 0, 10, 11,
186 	11, 12, 13, 9, 9, 9, 9, 12,
187 	9, 9, 9, 9, 9, 9, 9, 9,
188 	9, 9, 9, 9, 9, 9, 9, 9,
189 	9, 9, 9, 9, 9, 9, 9, 9,
190 	9, 9, 9, 9, 9, 9, 9, 9,
191 	9, 9, 9, 9, 9, 9, 9, 9,
192 	9, 9, 9, 13, 9, 14, 9, 9,
193 	9, 9, 9, 9, 9, 9, 9, 9,
194 	9, 9, 9, 9, 9, 9, 9, 9,
195 	9, 9, 9, 9, 9, 9, 9, 9,
196 	9, 9, 9, 9, 9, 9, 9, 9,
197 	9, 9, 9, 9, 9, 9, 9, 9,
198 	9, 9, 9, 9, 9, 9, 14, 9,
199 	11, 11, 12, 15, 9, 9, 9, 9,
200 	12, 9, 9, 9, 9, 9, 9, 9,
201 	9, 9, 9, 9, 9, 9, 9, 9,
202 	9, 9, 9, 9, 9, 9, 9, 9,
203 	9, 9, 9, 9, 9, 9, 9, 9,
204 	9, 9, 9, 9, 9, 9, 9, 9,
205 	9, 9, 9, 9, 15, 9, 11, 11,
206 	12, 13, 9, 9, 9, 9, 12, 9,
207 	9, 9, 9, 9, 9, 9, 9, 9,
208 	9, 9, 9, 9, 9, 9, 9, 9,
209 	9, 9, 9, 9, 9, 9, 9, 9,
210 	9, 9, 9, 9, 9, 9, 9, 9,
211 	9, 9, 9, 9, 9, 9, 9, 9,
212 	9, 9, 13, 9, 12, 9, 16, 11,
213 	11, 12, 13, 9, 9, 9, 9, 12,
214 	9, 9, 9, 9, 9, 9, 9, 9,
215 	9, 9, 9, 9, 9, 9, 9, 9,
216 	9, 9, 9, 9, 9, 9, 9, 9,
217 	9, 9, 9, 9, 9, 9, 9, 9,
218 	9, 9, 9, 9, 9, 9, 9, 9,
219 	9, 9, 9, 13, 9, 10, 11, 11,
220 	12, 13, 9, 9, 9, 17, 12, 9,
221 	9, 9, 9, 9, 9, 9, 9, 9,
222 	9, 9, 9, 9, 9, 9, 9, 9,
223 	9, 9, 9, 9, 9, 9, 9, 9,
224 	9, 9, 9, 9, 9, 9, 9, 9,
225 	9, 9, 9, 9, 9, 9, 9, 9,
226 	9, 9, 13, 9, 10, 11, 11, 12,
227 	13, 9, 9, 9, 18, 12, 9, 9,
228 	9, 9, 9, 9, 9, 9, 9, 9,
229 	9, 9, 9, 9, 9, 9, 9, 9,
230 	9, 9, 9, 9, 9, 9, 9, 9,
231 	9, 9, 9, 9, 9, 9, 9, 9,
232 	9, 9, 9, 9, 9, 9, 9, 9,
233 	9, 13, 9, 20, 21, 21, 22, 23,
234 	19, 19, 19, 24, 22, 19, 19, 19,
235 	19, 19, 19, 19, 19, 19, 19, 19,
236 	19, 19, 19, 19, 19, 19, 19, 19,
237 	19, 19, 19, 19, 19, 19, 19, 19,
238 	19, 19, 19, 19, 19, 19, 19, 19,
239 	19, 19, 19, 19, 19, 19, 19, 19,
240 	23, 19, 25, 19, 19, 19, 19, 19,
241 	19, 19, 19, 19, 19, 19, 19, 19,
242 	19, 19, 19, 19, 19, 19, 19, 19,
243 	19, 19, 19, 19, 19, 19, 19, 19,
244 	19, 19, 19, 19, 19, 19, 19, 19,
245 	19, 19, 19, 19, 19, 19, 19, 19,
246 	19, 19, 19, 25, 19, 21, 21, 22,
247 	27, 26, 26, 26, 26, 22, 26, 26,
248 	26, 26, 26, 26, 26, 26, 26, 26,
249 	26, 26, 26, 26, 26, 26, 26, 26,
250 	26, 26, 26, 26, 26, 26, 26, 26,
251 	26, 26, 26, 26, 26, 26, 26, 26,
252 	26, 26, 26, 26, 26, 26, 26, 26,
253 	26, 27, 26, 21, 21, 22, 23, 19,
254 	19, 19, 19, 22, 19, 19, 19, 19,
255 	19, 19, 19, 19, 19, 19, 19, 19,
256 	19, 19, 19, 19, 19, 19, 19, 19,
257 	19, 19, 19, 19, 19, 19, 19, 19,
258 	19, 19, 19, 19, 19, 19, 19, 19,
259 	19, 19, 19, 19, 19, 19, 19, 23,
260 	19, 22, 26, 20, 21, 21, 22, 23,
261 	19, 19, 19, 19, 22, 19, 19, 19,
262 	19, 19, 19, 19, 19, 19, 19, 19,
263 	19, 19, 19, 19, 19, 19, 19, 19,
264 	19, 19, 19, 19, 19, 19, 19, 19,
265 	19, 19, 19, 19, 19, 19, 19, 19,
266 	19, 19, 19, 19, 19, 19, 19, 19,
267 	23, 19, 28, 21, 21, 22, 23, 19,
268 	19, 19, 19, 22, 19, 19, 19, 19,
269 	19, 19, 19, 19, 19, 19, 19, 19,
270 	19, 19, 19, 19, 19, 19, 19, 19,
271 	19, 19, 19, 19, 19, 19, 19, 19,
272 	19, 19, 19, 19, 19, 19, 19, 19,
273 	19, 19, 19, 19, 19, 19, 19, 23,
274 	19, 30, 31, 31, 32, 33, 29, 29,
275 	29, 34, 32, 29, 29, 29, 29, 29,
276 	29, 29, 29, 29, 29, 29, 29, 29,
277 	29, 29, 29, 29, 29, 29, 29, 29,
278 	29, 29, 29, 29, 29, 29, 29, 29,
279 	29, 29, 29, 29, 29, 29, 29, 29,
280 	29, 29, 29, 29, 29, 29, 33, 29,
281 	35, 29, 29, 29, 29, 29, 29, 29,
282 	29, 29, 29, 29, 29, 29, 29, 29,
283 	29, 29, 29, 29, 29, 29, 29, 29,
284 	29, 29, 29, 29, 29, 29, 29, 29,
285 	29, 29, 29, 29, 29, 29, 29, 29,
286 	29, 29, 29, 29, 29, 29, 29, 29,
287 	29, 35, 29, 31, 31, 32, 36, 29,
288 	29, 29, 29, 32, 29, 29, 29, 29,
289 	29, 29, 29, 29, 29, 29, 29, 29,
290 	29, 29, 29, 29, 29, 29, 29, 29,
291 	29, 29, 29, 29, 29, 29, 29, 29,
292 	29, 29, 29, 29, 29, 29, 29, 29,
293 	29, 29, 29, 29, 29, 29, 29, 36,
294 	29, 31, 31, 32, 33, 29, 29, 29,
295 	29, 32, 29, 29, 29, 29, 29, 29,
296 	29, 29, 29, 29, 29, 29, 29, 29,
297 	29, 29, 29, 29, 29, 29, 29, 29,
298 	29, 29, 29, 29, 29, 29, 29, 29,
299 	29, 29, 29, 29, 29, 29, 29, 29,
300 	29, 29, 29, 29, 29, 33, 29, 32,
301 	29, 30, 31, 31, 32, 33, 29, 29,
302 	29, 29, 32, 29, 29, 29, 29, 29,
303 	29, 29, 29, 29, 29, 29, 29, 29,
304 	29, 29, 29, 29, 29, 29, 29, 29,
305 	29, 29, 29, 29, 29, 29, 29, 29,
306 	29, 29, 29, 29, 29, 29, 29, 29,
307 	29, 29, 29, 29, 29, 29, 33, 29,
308 	37, 31, 31, 32, 33, 29, 29, 29,
309 	29, 32, 29, 29, 29, 29, 29, 29,
310 	29, 29, 29, 29, 29, 29, 29, 29,
311 	29, 29, 29, 29, 29, 29, 29, 29,
312 	29, 29, 29, 29, 29, 29, 29, 29,
313 	29, 29, 29, 29, 29, 29, 29, 29,
314 	29, 29, 29, 29, 29, 33, 29, 21,
315 	21, 22, 38, 0, 0, 0, 0, 22,
316 	0, 0, 0, 0, 0, 0, 0, 0,
317 	0, 0, 0, 0, 0, 0, 0, 0,
318 	0, 0, 0, 0, 0, 0, 0, 0,
319 	0, 0, 0, 0, 0, 0, 0, 0,
320 	0, 0, 0, 0, 0, 0, 0, 0,
321 	0, 0, 0, 38, 0, 40, 39, 39,
322 	39, 39, 39, 39, 39, 39, 39, 39,
323 	39, 39, 39, 39, 39, 39, 39, 39,
324 	39, 39, 39, 39, 39, 39, 39, 39,
325 	39, 39, 39, 39, 39, 39, 39, 39,
326 	39, 39, 39, 39, 39, 39, 39, 39,
327 	39, 39, 39, 39, 39, 39, 40, 39,
328 	42, 43, 44, 45, 46, 47, 22, 23,
329 	48, 49, 49, 24, 22, 50, 51, 52,
330 	53, 54, 41, 41, 41, 41, 41, 41,
331 	41, 41, 41, 41, 41, 41, 41, 41,
332 	41, 41, 41, 41, 41, 41, 41, 41,
333 	41, 41, 41, 41, 41, 41, 41, 41,
334 	41, 41, 41, 41, 41, 41, 41, 41,
335 	55, 41, 57, 58, 59, 60, 4, 5,
336 	61, 56, 56, 8, 4, 56, 56, 62,
337 	56, 56, 56, 56, 56, 56, 56, 56,
338 	56, 56, 56, 56, 56, 56, 56, 56,
339 	56, 56, 56, 56, 56, 56, 56, 56,
340 	56, 56, 56, 56, 56, 56, 56, 56,
341 	56, 56, 56, 56, 56, 56, 56, 56,
342 	5, 56, 63, 58, 64, 64, 4, 5,
343 	61, 56, 56, 56, 4, 56, 56, 62,
344 	56, 56, 56, 56, 56, 56, 56, 56,
345 	56, 56, 56, 56, 56, 56, 56, 56,
346 	56, 56, 56, 56, 56, 56, 56, 56,
347 	56, 56, 56, 56, 56, 56, 56, 56,
348 	56, 56, 56, 56, 56, 56, 56, 56,
349 	5, 56, 58, 64, 64, 4, 5, 61,
350 	56, 56, 56, 4, 56, 56, 62, 56,
351 	56, 56, 56, 56, 56, 56, 56, 56,
352 	56, 56, 56, 56, 56, 56, 56, 56,
353 	56, 56, 56, 56, 56, 56, 56, 56,
354 	56, 56, 56, 56, 56, 56, 56, 56,
355 	56, 56, 56, 56, 56, 56, 56, 5,
356 	56, 42, 56, 56, 56, 65, 66, 56,
357 	1, 61, 56, 56, 56, 56, 56, 42,
358 	56, 56, 56, 56, 56, 56, 56, 56,
359 	56, 56, 56, 56, 56, 56, 56, 56,
360 	56, 56, 56, 56, 56, 56, 56, 56,
361 	56, 56, 56, 56, 56, 56, 56, 56,
362 	56, 56, 56, 56, 56, 56, 56, 56,
363 	56, 1, 56, 67, 67, 56, 1, 61,
364 	56, 56, 56, 56, 56, 56, 56, 56,
365 	56, 56, 56, 56, 56, 56, 56, 56,
366 	56, 56, 56, 56, 56, 56, 56, 56,
367 	56, 56, 56, 56, 56, 56, 56, 56,
368 	56, 56, 56, 56, 56, 56, 56, 56,
369 	56, 56, 56, 56, 56, 56, 56, 1,
370 	56, 61, 56, 56, 68, 61, 56, 56,
371 	56, 56, 56, 56, 56, 56, 56, 56,
372 	56, 56, 56, 56, 56, 56, 56, 56,
373 	56, 56, 56, 56, 56, 56, 56, 56,
374 	56, 56, 56, 56, 56, 56, 56, 56,
375 	56, 56, 56, 56, 56, 56, 56, 56,
376 	56, 56, 56, 56, 56, 68, 56, 61,
377 	56, 61, 56, 56, 56, 61, 56, 42,
378 	56, 69, 56, 67, 67, 56, 1, 61,
379 	56, 56, 56, 56, 56, 42, 56, 56,
380 	56, 56, 56, 56, 56, 56, 56, 56,
381 	56, 56, 56, 56, 56, 56, 56, 56,
382 	56, 56, 56, 56, 56, 56, 56, 56,
383 	56, 56, 56, 56, 56, 56, 56, 56,
384 	56, 56, 56, 56, 56, 56, 56, 1,
385 	56, 42, 56, 56, 56, 67, 67, 56,
386 	1, 61, 56, 56, 56, 56, 56, 42,
387 	56, 56, 56, 56, 56, 56, 56, 56,
388 	56, 56, 56, 56, 56, 56, 56, 56,
389 	56, 56, 56, 56, 56, 56, 56, 56,
390 	56, 56, 56, 56, 56, 56, 56, 56,
391 	56, 56, 56, 56, 56, 56, 56, 56,
392 	56, 1, 56, 42, 56, 56, 56, 67,
393 	66, 56, 1, 61, 56, 56, 56, 56,
394 	56, 42, 56, 56, 56, 56, 56, 56,
395 	56, 56, 56, 56, 56, 56, 56, 56,
396 	56, 56, 56, 56, 56, 56, 56, 56,
397 	56, 56, 56, 56, 56, 56, 56, 56,
398 	56, 56, 56, 56, 56, 56, 56, 56,
399 	56, 56, 56, 1, 56, 70, 71, 72,
400 	72, 4, 5, 61, 56, 56, 56, 4,
401 	56, 56, 56, 56, 56, 56, 56, 56,
402 	56, 56, 56, 56, 56, 56, 56, 56,
403 	56, 56, 56, 56, 56, 56, 56, 56,
404 	56, 56, 56, 56, 56, 56, 56, 56,
405 	56, 56, 56, 56, 56, 56, 56, 56,
406 	56, 56, 56, 5, 56, 71, 72, 72,
407 	4, 5, 61, 56, 56, 56, 4, 56,
408 	56, 56, 56, 56, 56, 56, 56, 56,
409 	56, 56, 56, 56, 56, 56, 56, 56,
410 	56, 56, 56, 56, 56, 56, 56, 56,
411 	56, 56, 56, 56, 56, 56, 56, 56,
412 	56, 56, 56, 56, 56, 56, 56, 56,
413 	56, 56, 5, 56, 72, 72, 4, 5,
414 	61, 56, 56, 56, 4, 56, 56, 56,
415 	56, 56, 56, 56, 56, 56, 56, 56,
416 	56, 56, 56, 56, 56, 56, 56, 56,
417 	56, 56, 56, 56, 56, 56, 56, 56,
418 	56, 56, 56, 56, 56, 56, 56, 56,
419 	56, 56, 56, 56, 56, 56, 56, 56,
420 	5, 56, 61, 56, 56, 68, 61, 56,
421 	56, 56, 4, 56, 56, 56, 56, 56,
422 	56, 56, 56, 56, 56, 56, 56, 56,
423 	56, 56, 56, 56, 56, 56, 56, 56,
424 	56, 56, 56, 56, 56, 56, 56, 56,
425 	56, 56, 56, 56, 56, 56, 56, 56,
426 	56, 56, 56, 56, 56, 56, 68, 56,
427 	73, 74, 74, 4, 5, 61, 56, 56,
428 	56, 4, 56, 56, 56, 56, 56, 56,
429 	56, 56, 56, 56, 56, 56, 56, 56,
430 	56, 56, 56, 56, 56, 56, 56, 56,
431 	56, 56, 56, 56, 56, 56, 56, 56,
432 	56, 56, 56, 56, 56, 56, 56, 56,
433 	56, 56, 56, 56, 56, 5, 56, 65,
434 	75, 56, 1, 61, 56, 56, 56, 56,
435 	56, 56, 56, 56, 56, 56, 56, 56,
436 	56, 56, 56, 56, 56, 56, 56, 56,
437 	56, 56, 56, 56, 56, 56, 56, 56,
438 	56, 56, 56, 56, 56, 56, 56, 56,
439 	56, 56, 56, 56, 56, 56, 56, 56,
440 	56, 56, 56, 1, 56, 65, 56, 67,
441 	67, 56, 1, 61, 56, 56, 56, 56,
442 	56, 56, 56, 56, 56, 56, 56, 56,
443 	56, 56, 56, 56, 56, 56, 56, 56,
444 	56, 56, 56, 56, 56, 56, 56, 56,
445 	56, 56, 56, 56, 56, 56, 56, 56,
446 	56, 56, 56, 56, 56, 56, 56, 56,
447 	56, 56, 56, 1, 56, 67, 75, 56,
448 	1, 61, 56, 56, 56, 56, 56, 56,
449 	56, 56, 56, 56, 56, 56, 56, 56,
450 	56, 56, 56, 56, 56, 56, 56, 56,
451 	56, 56, 56, 56, 56, 56, 56, 56,
452 	56, 56, 56, 56, 56, 56, 56, 56,
453 	56, 56, 56, 56, 56, 56, 56, 56,
454 	56, 1, 56, 57, 58, 64, 64, 4,
455 	5, 61, 56, 56, 56, 4, 56, 56,
456 	62, 56, 56, 56, 56, 56, 56, 56,
457 	56, 56, 56, 56, 56, 56, 56, 56,
458 	56, 56, 56, 56, 56, 56, 56, 56,
459 	56, 56, 56, 56, 56, 56, 56, 56,
460 	56, 56, 56, 56, 56, 56, 56, 56,
461 	56, 5, 56, 57, 58, 59, 64, 4,
462 	5, 61, 56, 56, 8, 4, 56, 56,
463 	62, 56, 56, 56, 56, 56, 56, 56,
464 	56, 56, 56, 56, 56, 56, 56, 56,
465 	56, 56, 56, 56, 56, 56, 56, 56,
466 	56, 56, 56, 56, 56, 56, 56, 56,
467 	56, 56, 56, 56, 56, 56, 56, 56,
468 	56, 5, 56, 77, 78, 79, 80, 12,
469 	13, 81, 76, 76, 18, 12, 76, 76,
470 	82, 76, 76, 76, 76, 76, 76, 76,
471 	76, 76, 76, 76, 76, 76, 76, 76,
472 	76, 76, 76, 76, 76, 76, 76, 76,
473 	76, 76, 76, 76, 76, 76, 76, 76,
474 	76, 76, 76, 76, 76, 76, 76, 76,
475 	76, 13, 76, 83, 78, 84, 80, 12,
476 	13, 81, 76, 76, 76, 12, 76, 76,
477 	82, 76, 76, 76, 76, 76, 76, 76,
478 	76, 76, 76, 76, 76, 76, 76, 76,
479 	76, 76, 76, 76, 76, 76, 76, 76,
480 	76, 76, 76, 76, 76, 76, 76, 76,
481 	76, 76, 76, 76, 76, 76, 76, 76,
482 	76, 13, 76, 78, 84, 80, 12, 13,
483 	81, 76, 76, 76, 12, 76, 76, 82,
484 	76, 76, 76, 76, 76, 76, 76, 76,
485 	76, 76, 76, 76, 76, 76, 76, 76,
486 	76, 76, 76, 76, 76, 76, 76, 76,
487 	76, 76, 76, 76, 76, 76, 76, 76,
488 	76, 76, 76, 76, 76, 76, 76, 76,
489 	13, 76, 85, 76, 76, 76, 86, 87,
490 	76, 14, 81, 76, 76, 76, 76, 76,
491 	85, 76, 76, 76, 76, 76, 76, 76,
492 	76, 76, 76, 76, 76, 76, 76, 76,
493 	76, 76, 76, 76, 76, 76, 76, 76,
494 	76, 76, 76, 76, 76, 76, 76, 76,
495 	76, 76, 76, 76, 76, 76, 76, 76,
496 	76, 76, 14, 76, 88, 78, 89, 90,
497 	12, 13, 81, 76, 76, 17, 12, 76,
498 	76, 82, 76, 76, 76, 76, 76, 76,
499 	76, 76, 76, 76, 76, 76, 76, 76,
500 	76, 76, 76, 76, 76, 76, 76, 76,
501 	76, 76, 76, 76, 76, 76, 76, 76,
502 	76, 76, 76, 76, 76, 76, 76, 76,
503 	76, 76, 13, 76, 91, 78, 84, 84,
504 	12, 13, 81, 76, 76, 76, 12, 76,
505 	76, 82, 76, 76, 76, 76, 76, 76,
506 	76, 76, 76, 76, 76, 76, 76, 76,
507 	76, 76, 76, 76, 76, 76, 76, 76,
508 	76, 76, 76, 76, 76, 76, 76, 76,
509 	76, 76, 76, 76, 76, 76, 76, 76,
510 	76, 76, 13, 76, 78, 84, 84, 12,
511 	13, 81, 76, 76, 76, 12, 76, 76,
512 	82, 76, 76, 76, 76, 76, 76, 76,
513 	76, 76, 76, 76, 76, 76, 76, 76,
514 	76, 76, 76, 76, 76, 76, 76, 76,
515 	76, 76, 76, 76, 76, 76, 76, 76,
516 	76, 76, 76, 76, 76, 76, 76, 76,
517 	76, 13, 76, 85, 76, 76, 76, 92,
518 	87, 76, 14, 81, 76, 76, 76, 76,
519 	76, 85, 76, 76, 76, 76, 76, 76,
520 	76, 76, 76, 76, 76, 76, 76, 76,
521 	76, 76, 76, 76, 76, 76, 76, 76,
522 	76, 76, 76, 76, 76, 76, 76, 76,
523 	76, 76, 76, 76, 76, 76, 76, 76,
524 	76, 76, 76, 14, 76, 81, 76, 76,
525 	93, 81, 76, 76, 76, 76, 76, 76,
526 	76, 76, 76, 76, 76, 76, 76, 76,
527 	76, 76, 76, 76, 76, 76, 76, 76,
528 	76, 76, 76, 76, 76, 76, 76, 76,
529 	76, 76, 76, 76, 76, 76, 76, 76,
530 	76, 76, 76, 76, 76, 76, 76, 76,
531 	76, 93, 76, 81, 76, 81, 76, 76,
532 	76, 81, 76, 85, 76, 94, 76, 92,
533 	92, 76, 14, 81, 76, 76, 76, 76,
534 	76, 85, 76, 76, 76, 76, 76, 76,
535 	76, 76, 76, 76, 76, 76, 76, 76,
536 	76, 76, 76, 76, 76, 76, 76, 76,
537 	76, 76, 76, 76, 76, 76, 76, 76,
538 	76, 76, 76, 76, 76, 76, 76, 76,
539 	76, 76, 76, 14, 76, 85, 76, 76,
540 	76, 92, 92, 76, 14, 81, 76, 76,
541 	76, 76, 76, 85, 76, 76, 76, 76,
542 	76, 76, 76, 76, 76, 76, 76, 76,
543 	76, 76, 76, 76, 76, 76, 76, 76,
544 	76, 76, 76, 76, 76, 76, 76, 76,
545 	76, 76, 76, 76, 76, 76, 76, 76,
546 	76, 76, 76, 76, 76, 14, 76, 95,
547 	96, 97, 97, 12, 13, 81, 76, 76,
548 	76, 12, 76, 76, 76, 76, 76, 76,
549 	76, 76, 76, 76, 76, 76, 76, 76,
550 	76, 76, 76, 76, 76, 76, 76, 76,
551 	76, 76, 76, 76, 76, 76, 76, 76,
552 	76, 76, 76, 76, 76, 76, 76, 76,
553 	76, 76, 76, 76, 76, 13, 76, 96,
554 	97, 97, 12, 13, 81, 76, 76, 76,
555 	12, 76, 76, 76, 76, 76, 76, 76,
556 	76, 76, 76, 76, 76, 76, 76, 76,
557 	76, 76, 76, 76, 76, 76, 76, 76,
558 	76, 76, 76, 76, 76, 76, 76, 76,
559 	76, 76, 76, 76, 76, 76, 76, 76,
560 	76, 76, 76, 76, 13, 76, 97, 97,
561 	12, 13, 81, 76, 76, 76, 12, 76,
562 	76, 76, 76, 76, 76, 76, 76, 76,
563 	76, 76, 76, 76, 76, 76, 76, 76,
564 	76, 76, 76, 76, 76, 76, 76, 76,
565 	76, 76, 76, 76, 76, 76, 76, 76,
566 	76, 76, 76, 76, 76, 76, 76, 76,
567 	76, 76, 13, 76, 81, 76, 76, 93,
568 	81, 76, 76, 76, 12, 76, 76, 76,
569 	76, 76, 76, 76, 76, 76, 76, 76,
570 	76, 76, 76, 76, 76, 76, 76, 76,
571 	76, 76, 76, 76, 76, 76, 76, 76,
572 	76, 76, 76, 76, 76, 76, 76, 76,
573 	76, 76, 76, 76, 76, 76, 76, 76,
574 	93, 76, 98, 99, 99, 12, 13, 81,
575 	76, 76, 76, 12, 76, 76, 76, 76,
576 	76, 76, 76, 76, 76, 76, 76, 76,
577 	76, 76, 76, 76, 76, 76, 76, 76,
578 	76, 76, 76, 76, 76, 76, 76, 76,
579 	76, 76, 76, 76, 76, 76, 76, 76,
580 	76, 76, 76, 76, 76, 76, 76, 13,
581 	76, 86, 100, 76, 14, 81, 76, 76,
582 	76, 76, 76, 76, 76, 76, 76, 76,
583 	76, 76, 76, 76, 76, 76, 76, 76,
584 	76, 76, 76, 76, 76, 76, 76, 76,
585 	76, 76, 76, 76, 76, 76, 76, 76,
586 	76, 76, 76, 76, 76, 76, 76, 76,
587 	76, 76, 76, 76, 76, 14, 76, 92,
588 	92, 76, 14, 81, 76, 76, 76, 76,
589 	76, 76, 76, 76, 76, 76, 76, 76,
590 	76, 76, 76, 76, 76, 76, 76, 76,
591 	76, 76, 76, 76, 76, 76, 76, 76,
592 	76, 76, 76, 76, 76, 76, 76, 76,
593 	76, 76, 76, 76, 76, 76, 76, 76,
594 	76, 76, 76, 14, 76, 86, 76, 92,
595 	92, 76, 14, 81, 76, 76, 76, 76,
596 	76, 76, 76, 76, 76, 76, 76, 76,
597 	76, 76, 76, 76, 76, 76, 76, 76,
598 	76, 76, 76, 76, 76, 76, 76, 76,
599 	76, 76, 76, 76, 76, 76, 76, 76,
600 	76, 76, 76, 76, 76, 76, 76, 76,
601 	76, 76, 76, 14, 76, 92, 100, 76,
602 	14, 81, 76, 76, 76, 76, 76, 76,
603 	76, 76, 76, 76, 76, 76, 76, 76,
604 	76, 76, 76, 76, 76, 76, 76, 76,
605 	76, 76, 76, 76, 76, 76, 76, 76,
606 	76, 76, 76, 76, 76, 76, 76, 76,
607 	76, 76, 76, 76, 76, 76, 76, 76,
608 	76, 14, 76, 88, 78, 84, 84, 12,
609 	13, 81, 76, 76, 76, 12, 76, 76,
610 	82, 76, 76, 76, 76, 76, 76, 76,
611 	76, 76, 76, 76, 76, 76, 76, 76,
612 	76, 76, 76, 76, 76, 76, 76, 76,
613 	76, 76, 76, 76, 76, 76, 76, 76,
614 	76, 76, 76, 76, 76, 76, 76, 76,
615 	76, 13, 76, 88, 78, 89, 84, 12,
616 	13, 81, 76, 76, 17, 12, 76, 76,
617 	82, 76, 76, 76, 76, 76, 76, 76,
618 	76, 76, 76, 76, 76, 76, 76, 76,
619 	76, 76, 76, 76, 76, 76, 76, 76,
620 	76, 76, 76, 76, 76, 76, 76, 76,
621 	76, 76, 76, 76, 76, 76, 76, 76,
622 	76, 13, 76, 10, 11, 11, 12, 13,
623 	76, 76, 76, 76, 12, 76, 76, 76,
624 	76, 76, 76, 76, 76, 76, 76, 76,
625 	76, 76, 76, 76, 76, 76, 76, 76,
626 	76, 76, 76, 76, 76, 76, 76, 76,
627 	76, 76, 76, 76, 76, 76, 76, 76,
628 	76, 76, 76, 76, 76, 76, 76, 76,
629 	13, 76, 77, 78, 84, 80, 12, 13,
630 	81, 76, 76, 76, 12, 76, 76, 82,
631 	76, 76, 76, 76, 76, 76, 76, 76,
632 	76, 76, 76, 76, 76, 76, 76, 76,
633 	76, 76, 76, 76, 76, 76, 76, 76,
634 	76, 76, 76, 76, 76, 76, 76, 76,
635 	76, 76, 76, 76, 76, 76, 76, 76,
636 	13, 76, 102, 45, 103, 103, 22, 23,
637 	48, 101, 101, 101, 22, 101, 101, 52,
638 	101, 101, 101, 101, 101, 101, 101, 101,
639 	101, 101, 101, 101, 101, 101, 101, 101,
640 	101, 101, 101, 101, 101, 101, 101, 101,
641 	101, 101, 101, 101, 101, 101, 101, 101,
642 	101, 101, 101, 101, 101, 101, 101, 101,
643 	23, 101, 45, 103, 103, 22, 23, 48,
644 	101, 101, 101, 22, 101, 101, 52, 101,
645 	101, 101, 101, 101, 101, 101, 101, 101,
646 	101, 101, 101, 101, 101, 101, 101, 101,
647 	101, 101, 101, 101, 101, 101, 101, 101,
648 	101, 101, 101, 101, 101, 101, 101, 101,
649 	101, 101, 101, 101, 101, 101, 101, 23,
650 	101, 104, 101, 101, 101, 105, 106, 101,
651 	25, 48, 101, 101, 101, 101, 101, 104,
652 	101, 101, 101, 101, 101, 101, 101, 101,
653 	101, 101, 101, 101, 101, 101, 101, 101,
654 	101, 101, 101, 101, 101, 101, 101, 101,
655 	101, 101, 101, 101, 101, 101, 101, 101,
656 	101, 101, 101, 101, 101, 101, 101, 101,
657 	101, 25, 101, 44, 45, 107, 108, 22,
658 	23, 48, 101, 101, 24, 22, 101, 101,
659 	52, 101, 101, 101, 101, 101, 101, 101,
660 	101, 101, 101, 101, 101, 101, 101, 101,
661 	101, 101, 101, 101, 101, 101, 101, 101,
662 	101, 101, 101, 101, 101, 101, 101, 101,
663 	101, 101, 101, 101, 101, 101, 101, 101,
664 	101, 23, 101, 104, 101, 101, 101, 109,
665 	106, 101, 25, 48, 101, 101, 101, 101,
666 	101, 104, 101, 101, 101, 101, 101, 101,
667 	101, 101, 101, 101, 101, 101, 101, 101,
668 	101, 101, 101, 101, 101, 101, 101, 101,
669 	101, 101, 101, 101, 101, 101, 101, 101,
670 	101, 101, 101, 101, 101, 101, 101, 101,
671 	101, 101, 101, 25, 101, 48, 101, 101,
672 	110, 48, 101, 101, 101, 101, 101, 101,
673 	101, 101, 101, 101, 101, 101, 101, 101,
674 	101, 101, 101, 101, 101, 101, 101, 101,
675 	101, 101, 101, 101, 101, 101, 101, 101,
676 	101, 101, 101, 101, 101, 101, 101, 101,
677 	101, 101, 101, 101, 101, 101, 101, 101,
678 	101, 110, 101, 48, 101, 48, 101, 101,
679 	101, 48, 101, 104, 101, 111, 101, 109,
680 	109, 101, 25, 48, 101, 101, 101, 101,
681 	101, 104, 101, 101, 101, 101, 101, 101,
682 	101, 101, 101, 101, 101, 101, 101, 101,
683 	101, 101, 101, 101, 101, 101, 101, 101,
684 	101, 101, 101, 101, 101, 101, 101, 101,
685 	101, 101, 101, 101, 101, 101, 101, 101,
686 	101, 101, 101, 25, 101, 104, 101, 101,
687 	101, 109, 109, 101, 25, 48, 101, 101,
688 	101, 101, 101, 104, 101, 101, 101, 101,
689 	101, 101, 101, 101, 101, 101, 101, 101,
690 	101, 101, 101, 101, 101, 101, 101, 101,
691 	101, 101, 101, 101, 101, 101, 101, 101,
692 	101, 101, 101, 101, 101, 101, 101, 101,
693 	101, 101, 101, 101, 101, 25, 101, 112,
694 	113, 114, 114, 22, 23, 48, 101, 101,
695 	101, 22, 101, 101, 101, 101, 101, 101,
696 	101, 101, 101, 101, 101, 101, 101, 101,
697 	101, 101, 101, 101, 101, 101, 101, 101,
698 	101, 101, 101, 101, 101, 101, 101, 101,
699 	101, 101, 101, 101, 101, 101, 101, 101,
700 	101, 101, 101, 101, 101, 23, 101, 113,
701 	114, 114, 22, 23, 48, 101, 101, 101,
702 	22, 101, 101, 101, 101, 101, 101, 101,
703 	101, 101, 101, 101, 101, 101, 101, 101,
704 	101, 101, 101, 101, 101, 101, 101, 101,
705 	101, 101, 101, 101, 101, 101, 101, 101,
706 	101, 101, 101, 101, 101, 101, 101, 101,
707 	101, 101, 101, 101, 23, 101, 114, 114,
708 	22, 23, 48, 101, 101, 101, 22, 101,
709 	101, 101, 101, 101, 101, 101, 101, 101,
710 	101, 101, 101, 101, 101, 101, 101, 101,
711 	101, 101, 101, 101, 101, 101, 101, 101,
712 	101, 101, 101, 101, 101, 101, 101, 101,
713 	101, 101, 101, 101, 101, 101, 101, 101,
714 	101, 101, 23, 101, 48, 26, 26, 110,
715 	48, 26, 26, 26, 22, 26, 26, 26,
716 	26, 26, 26, 26, 26, 26, 26, 26,
717 	26, 26, 26, 26, 26, 26, 26, 26,
718 	26, 26, 26, 26, 26, 26, 26, 26,
719 	26, 26, 26, 26, 26, 26, 26, 26,
720 	26, 26, 26, 26, 26, 26, 26, 26,
721 	110, 26, 44, 45, 103, 103, 22, 23,
722 	48, 101, 101, 101, 22, 101, 101, 52,
723 	101, 101, 101, 101, 101, 101, 101, 101,
724 	101, 101, 101, 101, 101, 101, 101, 101,
725 	101, 101, 101, 101, 101, 101, 101, 101,
726 	101, 101, 101, 101, 101, 101, 101, 101,
727 	101, 101, 101, 101, 101, 101, 101, 101,
728 	23, 101, 115, 116, 116, 22, 23, 48,
729 	101, 101, 101, 22, 101, 101, 101, 101,
730 	101, 101, 101, 101, 101, 101, 101, 101,
731 	101, 101, 101, 101, 101, 101, 101, 101,
732 	101, 101, 101, 101, 101, 101, 101, 101,
733 	101, 101, 101, 101, 101, 101, 101, 101,
734 	101, 101, 101, 101, 101, 101, 101, 23,
735 	101, 105, 117, 101, 25, 48, 101, 101,
736 	101, 101, 101, 101, 101, 101, 101, 101,
737 	101, 101, 101, 101, 101, 101, 101, 101,
738 	101, 101, 101, 101, 101, 101, 101, 101,
739 	101, 101, 101, 101, 101, 101, 101, 101,
740 	101, 101, 101, 101, 101, 101, 101, 101,
741 	101, 101, 101, 101, 101, 25, 101, 109,
742 	109, 101, 25, 48, 101, 101, 101, 101,
743 	101, 101, 101, 101, 101, 101, 101, 101,
744 	101, 101, 101, 101, 101, 101, 101, 101,
745 	101, 101, 101, 101, 101, 101, 101, 101,
746 	101, 101, 101, 101, 101, 101, 101, 101,
747 	101, 101, 101, 101, 101, 101, 101, 101,
748 	101, 101, 101, 25, 101, 105, 101, 109,
749 	109, 101, 25, 48, 101, 101, 101, 101,
750 	101, 101, 101, 101, 101, 101, 101, 101,
751 	101, 101, 101, 101, 101, 101, 101, 101,
752 	101, 101, 101, 101, 101, 101, 101, 101,
753 	101, 101, 101, 101, 101, 101, 101, 101,
754 	101, 101, 101, 101, 101, 101, 101, 101,
755 	101, 101, 101, 25, 101, 109, 117, 101,
756 	25, 48, 101, 101, 101, 101, 101, 101,
757 	101, 101, 101, 101, 101, 101, 101, 101,
758 	101, 101, 101, 101, 101, 101, 101, 101,
759 	101, 101, 101, 101, 101, 101, 101, 101,
760 	101, 101, 101, 101, 101, 101, 101, 101,
761 	101, 101, 101, 101, 101, 101, 101, 101,
762 	101, 25, 101, 44, 45, 107, 103, 22,
763 	23, 48, 101, 101, 24, 22, 101, 101,
764 	52, 101, 101, 101, 101, 101, 101, 101,
765 	101, 101, 101, 101, 101, 101, 101, 101,
766 	101, 101, 101, 101, 101, 101, 101, 101,
767 	101, 101, 101, 101, 101, 101, 101, 101,
768 	101, 101, 101, 101, 101, 101, 101, 101,
769 	101, 23, 101, 20, 21, 21, 22, 23,
770 	118, 118, 118, 24, 22, 118, 118, 118,
771 	118, 118, 118, 118, 118, 118, 118, 118,
772 	118, 118, 118, 118, 118, 118, 118, 118,
773 	118, 118, 118, 118, 118, 118, 118, 118,
774 	118, 118, 118, 118, 118, 118, 118, 118,
775 	118, 118, 118, 118, 118, 118, 118, 118,
776 	23, 118, 20, 21, 21, 22, 23, 118,
777 	118, 118, 118, 22, 118, 118, 118, 118,
778 	118, 118, 118, 118, 118, 118, 118, 118,
779 	118, 118, 118, 118, 118, 118, 118, 118,
780 	118, 118, 118, 118, 118, 118, 118, 118,
781 	118, 118, 118, 118, 118, 118, 118, 118,
782 	118, 118, 118, 118, 118, 118, 118, 23,
783 	118, 120, 121, 122, 123, 32, 33, 124,
784 	119, 119, 34, 32, 119, 119, 125, 119,
785 	119, 119, 119, 119, 119, 119, 119, 119,
786 	119, 119, 119, 119, 119, 119, 119, 119,
787 	119, 119, 119, 119, 119, 119, 119, 119,
788 	119, 119, 119, 119, 119, 119, 119, 119,
789 	119, 119, 119, 119, 119, 119, 119, 33,
790 	119, 126, 121, 123, 123, 32, 33, 124,
791 	119, 119, 119, 32, 119, 119, 125, 119,
792 	119, 119, 119, 119, 119, 119, 119, 119,
793 	119, 119, 119, 119, 119, 119, 119, 119,
794 	119, 119, 119, 119, 119, 119, 119, 119,
795 	119, 119, 119, 119, 119, 119, 119, 119,
796 	119, 119, 119, 119, 119, 119, 119, 33,
797 	119, 121, 123, 123, 32, 33, 124, 119,
798 	119, 119, 32, 119, 119, 125, 119, 119,
799 	119, 119, 119, 119, 119, 119, 119, 119,
800 	119, 119, 119, 119, 119, 119, 119, 119,
801 	119, 119, 119, 119, 119, 119, 119, 119,
802 	119, 119, 119, 119, 119, 119, 119, 119,
803 	119, 119, 119, 119, 119, 119, 33, 119,
804 	127, 119, 119, 119, 128, 129, 119, 35,
805 	124, 119, 119, 119, 119, 119, 127, 119,
806 	119, 119, 119, 119, 119, 119, 119, 119,
807 	119, 119, 119, 119, 119, 119, 119, 119,
808 	119, 119, 119, 119, 119, 119, 119, 119,
809 	119, 119, 119, 119, 119, 119, 119, 119,
810 	119, 119, 119, 119, 119, 119, 119, 119,
811 	35, 119, 120, 121, 122, 49, 32, 33,
812 	124, 119, 119, 34, 32, 119, 119, 125,
813 	119, 119, 119, 119, 119, 119, 119, 119,
814 	119, 119, 119, 119, 119, 119, 119, 119,
815 	119, 119, 119, 119, 119, 119, 119, 119,
816 	119, 119, 119, 119, 119, 119, 119, 119,
817 	119, 119, 119, 119, 119, 119, 119, 119,
818 	33, 119, 127, 119, 119, 119, 130, 129,
819 	119, 35, 124, 119, 119, 119, 119, 119,
820 	127, 119, 119, 119, 119, 119, 119, 119,
821 	119, 119, 119, 119, 119, 119, 119, 119,
822 	119, 119, 119, 119, 119, 119, 119, 119,
823 	119, 119, 119, 119, 119, 119, 119, 119,
824 	119, 119, 119, 119, 119, 119, 119, 119,
825 	119, 119, 35, 119, 124, 119, 119, 131,
826 	124, 119, 119, 119, 119, 119, 119, 119,
827 	119, 119, 119, 119, 119, 119, 119, 119,
828 	119, 119, 119, 119, 119, 119, 119, 119,
829 	119, 119, 119, 119, 119, 119, 119, 119,
830 	119, 119, 119, 119, 119, 119, 119, 119,
831 	119, 119, 119, 119, 119, 119, 119, 119,
832 	131, 119, 124, 119, 124, 119, 119, 119,
833 	124, 119, 127, 119, 132, 119, 130, 130,
834 	119, 35, 124, 119, 119, 119, 119, 119,
835 	127, 119, 119, 119, 119, 119, 119, 119,
836 	119, 119, 119, 119, 119, 119, 119, 119,
837 	119, 119, 119, 119, 119, 119, 119, 119,
838 	119, 119, 119, 119, 119, 119, 119, 119,
839 	119, 119, 119, 119, 119, 119, 119, 119,
840 	119, 119, 35, 119, 127, 119, 119, 119,
841 	130, 130, 119, 35, 124, 119, 119, 119,
842 	119, 119, 127, 119, 119, 119, 119, 119,
843 	119, 119, 119, 119, 119, 119, 119, 119,
844 	119, 119, 119, 119, 119, 119, 119, 119,
845 	119, 119, 119, 119, 119, 119, 119, 119,
846 	119, 119, 119, 119, 119, 119, 119, 119,
847 	119, 119, 119, 119, 35, 119, 133, 134,
848 	135, 135, 32, 33, 124, 119, 119, 119,
849 	32, 119, 119, 119, 119, 119, 119, 119,
850 	119, 119, 119, 119, 119, 119, 119, 119,
851 	119, 119, 119, 119, 119, 119, 119, 119,
852 	119, 119, 119, 119, 119, 119, 119, 119,
853 	119, 119, 119, 119, 119, 119, 119, 119,
854 	119, 119, 119, 119, 33, 119, 134, 135,
855 	135, 32, 33, 124, 119, 119, 119, 32,
856 	119, 119, 119, 119, 119, 119, 119, 119,
857 	119, 119, 119, 119, 119, 119, 119, 119,
858 	119, 119, 119, 119, 119, 119, 119, 119,
859 	119, 119, 119, 119, 119, 119, 119, 119,
860 	119, 119, 119, 119, 119, 119, 119, 119,
861 	119, 119, 119, 33, 119, 135, 135, 32,
862 	33, 124, 119, 119, 119, 32, 119, 119,
863 	119, 119, 119, 119, 119, 119, 119, 119,
864 	119, 119, 119, 119, 119, 119, 119, 119,
865 	119, 119, 119, 119, 119, 119, 119, 119,
866 	119, 119, 119, 119, 119, 119, 119, 119,
867 	119, 119, 119, 119, 119, 119, 119, 119,
868 	119, 33, 119, 124, 119, 119, 131, 124,
869 	119, 119, 119, 32, 119, 119, 119, 119,
870 	119, 119, 119, 119, 119, 119, 119, 119,
871 	119, 119, 119, 119, 119, 119, 119, 119,
872 	119, 119, 119, 119, 119, 119, 119, 119,
873 	119, 119, 119, 119, 119, 119, 119, 119,
874 	119, 119, 119, 119, 119, 119, 119, 131,
875 	119, 120, 121, 123, 123, 32, 33, 124,
876 	119, 119, 119, 32, 119, 119, 125, 119,
877 	119, 119, 119, 119, 119, 119, 119, 119,
878 	119, 119, 119, 119, 119, 119, 119, 119,
879 	119, 119, 119, 119, 119, 119, 119, 119,
880 	119, 119, 119, 119, 119, 119, 119, 119,
881 	119, 119, 119, 119, 119, 119, 119, 33,
882 	119, 136, 137, 137, 32, 33, 124, 119,
883 	119, 119, 32, 119, 119, 119, 119, 119,
884 	119, 119, 119, 119, 119, 119, 119, 119,
885 	119, 119, 119, 119, 119, 119, 119, 119,
886 	119, 119, 119, 119, 119, 119, 119, 119,
887 	119, 119, 119, 119, 119, 119, 119, 119,
888 	119, 119, 119, 119, 119, 119, 33, 119,
889 	128, 138, 119, 35, 124, 119, 119, 119,
890 	119, 119, 119, 119, 119, 119, 119, 119,
891 	119, 119, 119, 119, 119, 119, 119, 119,
892 	119, 119, 119, 119, 119, 119, 119, 119,
893 	119, 119, 119, 119, 119, 119, 119, 119,
894 	119, 119, 119, 119, 119, 119, 119, 119,
895 	119, 119, 119, 119, 35, 119, 130, 130,
896 	119, 35, 124, 119, 119, 119, 119, 119,
897 	119, 119, 119, 119, 119, 119, 119, 119,
898 	119, 119, 119, 119, 119, 119, 119, 119,
899 	119, 119, 119, 119, 119, 119, 119, 119,
900 	119, 119, 119, 119, 119, 119, 119, 119,
901 	119, 119, 119, 119, 119, 119, 119, 119,
902 	119, 119, 35, 119, 128, 119, 130, 130,
903 	119, 35, 124, 119, 119, 119, 119, 119,
904 	119, 119, 119, 119, 119, 119, 119, 119,
905 	119, 119, 119, 119, 119, 119, 119, 119,
906 	119, 119, 119, 119, 119, 119, 119, 119,
907 	119, 119, 119, 119, 119, 119, 119, 119,
908 	119, 119, 119, 119, 119, 119, 119, 119,
909 	119, 119, 35, 119, 130, 138, 119, 35,
910 	124, 119, 119, 119, 119, 119, 119, 119,
911 	119, 119, 119, 119, 119, 119, 119, 119,
912 	119, 119, 119, 119, 119, 119, 119, 119,
913 	119, 119, 119, 119, 119, 119, 119, 119,
914 	119, 119, 119, 119, 119, 119, 119, 119,
915 	119, 119, 119, 119, 119, 119, 119, 119,
916 	35, 119, 42, 43, 44, 45, 107, 103,
917 	22, 23, 48, 49, 49, 24, 22, 101,
918 	42, 52, 101, 101, 101, 101, 101, 101,
919 	101, 101, 101, 101, 101, 101, 101, 101,
920 	101, 101, 101, 101, 101, 101, 101, 101,
921 	101, 101, 101, 101, 101, 101, 101, 101,
922 	101, 101, 101, 101, 101, 101, 101, 101,
923 	101, 101, 23, 101, 57, 139, 59, 60,
924 	4, 5, 61, 56, 56, 8, 4, 56,
925 	56, 62, 56, 56, 56, 56, 56, 56,
926 	56, 56, 56, 56, 56, 56, 56, 56,
927 	56, 56, 56, 56, 56, 56, 56, 56,
928 	56, 56, 56, 56, 56, 56, 56, 56,
929 	56, 56, 56, 56, 56, 56, 56, 56,
930 	56, 56, 5, 56, 42, 43, 44, 45,
931 	140, 141, 22, 142, 143, 56, 49, 24,
932 	22, 56, 42, 52, 56, 56, 56, 56,
933 	56, 56, 56, 56, 56, 56, 56, 56,
934 	56, 56, 56, 56, 56, 56, 56, 56,
935 	56, 56, 56, 56, 56, 56, 56, 56,
936 	56, 56, 56, 56, 56, 56, 56, 56,
937 	56, 56, 56, 56, 142, 56, 20, 144,
938 	144, 22, 142, 61, 56, 56, 24, 22,
939 	56, 56, 56, 56, 56, 56, 56, 56,
940 	56, 56, 56, 56, 56, 56, 56, 56,
941 	56, 56, 56, 56, 56, 56, 56, 56,
942 	56, 56, 56, 56, 56, 56, 56, 56,
943 	56, 56, 56, 56, 56, 56, 56, 56,
944 	56, 56, 56, 142, 56, 61, 56, 56,
945 	68, 61, 56, 56, 56, 22, 56, 56,
946 	56, 56, 56, 56, 56, 56, 56, 56,
947 	56, 56, 56, 56, 56, 56, 56, 56,
948 	56, 56, 56, 56, 56, 56, 56, 56,
949 	56, 56, 56, 56, 56, 56, 56, 56,
950 	56, 56, 56, 56, 56, 56, 56, 56,
951 	56, 68, 56, 143, 56, 56, 145, 143,
952 	56, 56, 56, 22, 56, 56, 56, 56,
953 	56, 56, 56, 56, 56, 56, 56, 56,
954 	56, 56, 56, 56, 56, 56, 56, 56,
955 	56, 56, 56, 56, 56, 56, 56, 56,
956 	56, 56, 56, 56, 56, 56, 56, 56,
957 	56, 56, 56, 56, 56, 56, 56, 145,
958 	56, 143, 56, 143, 56, 56, 56, 143,
959 	56, 42, 56, 69, 20, 144, 144, 22,
960 	142, 61, 56, 56, 56, 22, 56, 42,
961 	56, 56, 56, 56, 56, 56, 56, 56,
962 	56, 56, 56, 56, 56, 56, 56, 56,
963 	56, 56, 56, 56, 56, 56, 56, 56,
964 	56, 56, 56, 56, 56, 56, 56, 56,
965 	56, 56, 56, 56, 56, 56, 56, 56,
966 	56, 142, 56, 147, 146, 148, 148, 146,
967 	40, 149, 146, 146, 146, 146, 146, 146,
968 	146, 146, 146, 146, 146, 146, 146, 146,
969 	146, 146, 146, 146, 146, 146, 146, 146,
970 	146, 146, 146, 146, 146, 146, 146, 146,
971 	146, 146, 146, 146, 146, 146, 146, 146,
972 	146, 146, 146, 146, 146, 146, 146, 146,
973 	146, 40, 146, 148, 148, 146, 40, 149,
974 	146, 146, 146, 146, 146, 146, 146, 146,
975 	146, 146, 146, 146, 146, 146, 146, 146,
976 	146, 146, 146, 146, 146, 146, 146, 146,
977 	146, 146, 146, 146, 146, 146, 146, 146,
978 	146, 146, 146, 146, 146, 146, 146, 146,
979 	146, 146, 146, 146, 146, 146, 146, 40,
980 	146, 149, 146, 146, 150, 149, 146, 146,
981 	146, 146, 146, 146, 146, 146, 146, 146,
982 	146, 146, 146, 146, 146, 146, 146, 146,
983 	146, 146, 146, 146, 146, 146, 146, 146,
984 	146, 146, 146, 146, 146, 146, 146, 146,
985 	146, 146, 146, 146, 146, 146, 146, 146,
986 	146, 146, 146, 146, 146, 150, 146, 149,
987 	146, 149, 146, 146, 146, 149, 146, 42,
988 	118, 118, 118, 118, 118, 118, 118, 118,
989 	49, 118, 118, 118, 118, 42, 118, 0
990 };
991 
992 static const unsigned char _indic_syllable_machine_trans_targs[] = {
993 	31, 37, 42, 2, 43, 46, 4, 50,
994 	51, 31, 60, 9, 66, 69, 61, 11,
995 	74, 75, 78, 31, 83, 17, 89, 92,
996 	93, 84, 31, 19, 98, 31, 107, 24,
997 	113, 116, 117, 108, 26, 122, 127, 31,
998 	134, 31, 32, 53, 79, 81, 100, 101,
999 	85, 102, 123, 124, 94, 132, 137, 92,
1000 	31, 33, 35, 6, 52, 38, 47, 34,
1001 	1, 36, 40, 0, 39, 41, 44, 45,
1002 	3, 48, 5, 49, 31, 54, 56, 14,
1003 	77, 62, 70, 55, 7, 57, 72, 64,
1004 	58, 13, 76, 59, 8, 63, 65, 67,
1005 	68, 10, 71, 12, 73, 31, 80, 20,
1006 	82, 96, 87, 15, 99, 16, 86, 88,
1007 	90, 91, 18, 95, 21, 97, 31, 31,
1008 	103, 105, 22, 27, 109, 118, 104, 106,
1009 	120, 111, 23, 110, 112, 114, 115, 25,
1010 	119, 28, 121, 125, 126, 131, 128, 129,
1011 	29, 130, 31, 133, 30, 135, 136
1012 };
1013 
1014 static const char _indic_syllable_machine_trans_actions[] = {
1015 	1, 0, 2, 0, 2, 0, 0, 2,
1016 	2, 3, 2, 0, 2, 0, 0, 0,
1017 	2, 2, 2, 4, 2, 0, 5, 5,
1018 	5, 0, 6, 0, 2, 7, 2, 0,
1019 	2, 0, 2, 0, 0, 2, 0, 8,
1020 	0, 11, 2, 2, 5, 0, 12, 12,
1021 	0, 2, 5, 2, 5, 2, 0, 13,
1022 	14, 2, 0, 0, 2, 0, 2, 2,
1023 	0, 2, 2, 0, 0, 2, 2, 2,
1024 	0, 0, 0, 2, 15, 2, 0, 0,
1025 	2, 0, 2, 2, 0, 2, 2, 2,
1026 	2, 0, 2, 2, 0, 0, 2, 2,
1027 	2, 0, 0, 0, 2, 16, 5, 0,
1028 	5, 2, 2, 0, 5, 0, 0, 2,
1029 	5, 5, 0, 0, 0, 2, 17, 18,
1030 	2, 0, 0, 0, 0, 2, 2, 2,
1031 	2, 2, 0, 0, 2, 2, 2, 0,
1032 	0, 0, 2, 0, 19, 19, 0, 0,
1033 	0, 0, 20, 2, 0, 0, 0
1034 };
1035 
1036 static const char _indic_syllable_machine_to_state_actions[] = {
1037 	0, 0, 0, 0, 0, 0, 0, 0,
1038 	0, 0, 0, 0, 0, 0, 0, 0,
1039 	0, 0, 0, 0, 0, 0, 0, 0,
1040 	0, 0, 0, 0, 0, 0, 0, 9,
1041 	0, 0, 0, 0, 0, 0, 0, 0,
1042 	0, 0, 0, 0, 0, 0, 0, 0,
1043 	0, 0, 0, 0, 0, 0, 0, 0,
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
1055 };
1056 
1057 static const char _indic_syllable_machine_from_state_actions[] = {
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, 10,
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, 0, 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
1076 };
1077 
1078 static const short _indic_syllable_machine_eof_trans[] = {
1079 	1, 1, 1, 1, 1, 1, 1, 10,
1080 	10, 10, 10, 10, 10, 10, 10, 20,
1081 	20, 27, 20, 27, 20, 20, 30, 30,
1082 	30, 30, 30, 30, 30, 1, 40, 0,
1083 	57, 57, 57, 57, 57, 57, 57, 57,
1084 	57, 57, 57, 57, 57, 57, 57, 57,
1085 	57, 57, 57, 57, 57, 77, 77, 77,
1086 	77, 77, 77, 77, 77, 77, 77, 77,
1087 	77, 77, 77, 77, 77, 77, 77, 77,
1088 	77, 77, 77, 77, 77, 77, 77, 102,
1089 	102, 102, 102, 102, 102, 102, 102, 102,
1090 	102, 102, 102, 102, 27, 102, 102, 102,
1091 	102, 102, 102, 102, 119, 119, 120, 120,
1092 	120, 120, 120, 120, 120, 120, 120, 120,
1093 	120, 120, 120, 120, 120, 120, 120, 120,
1094 	120, 120, 120, 102, 57, 57, 57, 57,
1095 	57, 57, 57, 57, 147, 147, 147, 147,
1096 	147, 119
1097 };
1098 
1099 static const int indic_syllable_machine_start = 31;
1100 static const int indic_syllable_machine_first_final = 31;
1101 static const int indic_syllable_machine_error = -1;
1102 
1103 static const int indic_syllable_machine_en_main = 31;
1104 
1105 
1106 #line 58 "hb-ot-shaper-indic-machine.rl"
1107 
1108 
1109 
1110 #line 121 "hb-ot-shaper-indic-machine.rl"
1111 
1112 
1113 #define found_syllable(syllable_type) \
1114   HB_STMT_START { \
1115     if (0) fprintf (stderr, "syllable %u..%u %s\n", ts, te, #syllable_type); \
1116     for (unsigned int i = ts; i < te; i++) \
1117       info[i].syllable() = (syllable_serial << 4) | syllable_type; \
1118     syllable_serial++; \
1119     if (syllable_serial == 16) syllable_serial = 1; \
1120   } HB_STMT_END
1121 
1122 inline void
find_syllables_indic(hb_buffer_t * buffer)1123 find_syllables_indic (hb_buffer_t *buffer)
1124 {
1125   unsigned int p, pe, eof, ts, te, act;
1126   int cs;
1127   hb_glyph_info_t *info = buffer->info;
1128 
1129 #line 1130 "hb-ot-shaper-indic-machine.hh"
1130 	{
1131 	cs = indic_syllable_machine_start;
1132 	ts = 0;
1133 	te = 0;
1134 	act = 0;
1135 	}
1136 
1137 #line 141 "hb-ot-shaper-indic-machine.rl"
1138 
1139 
1140   p = 0;
1141   pe = eof = buffer->len;
1142 
1143   unsigned int syllable_serial = 1;
1144 
1145 #line 1146 "hb-ot-shaper-indic-machine.hh"
1146 	{
1147 	int _slen;
1148 	int _trans;
1149 	const unsigned char *_keys;
1150 	const unsigned char *_inds;
1151 	if ( p == pe )
1152 		goto _test_eof;
1153 _resume:
1154 	switch ( _indic_syllable_machine_from_state_actions[cs] ) {
1155 	case 10:
1156 #line 1 "NONE"
1157 	{ts = p;}
1158 	break;
1159 #line 1160 "hb-ot-shaper-indic-machine.hh"
1160 	}
1161 
1162 	_keys = _indic_syllable_machine_trans_keys + (cs<<1);
1163 	_inds = _indic_syllable_machine_indicies + _indic_syllable_machine_index_offsets[cs];
1164 
1165 	_slen = _indic_syllable_machine_key_spans[cs];
1166 	_trans = _inds[ _slen > 0 && _keys[0] <=( info[p].indic_category()) &&
1167 		( info[p].indic_category()) <= _keys[1] ?
1168 		( info[p].indic_category()) - _keys[0] : _slen ];
1169 
1170 _eof_trans:
1171 	cs = _indic_syllable_machine_trans_targs[_trans];
1172 
1173 	if ( _indic_syllable_machine_trans_actions[_trans] == 0 )
1174 		goto _again;
1175 
1176 	switch ( _indic_syllable_machine_trans_actions[_trans] ) {
1177 	case 2:
1178 #line 1 "NONE"
1179 	{te = p+1;}
1180 	break;
1181 	case 11:
1182 #line 117 "hb-ot-shaper-indic-machine.rl"
1183 	{te = p+1;{ found_syllable (indic_non_indic_cluster); }}
1184 	break;
1185 	case 14:
1186 #line 111 "hb-ot-shaper-indic-machine.rl"
1187 	{te = p;p--;{ found_syllable (indic_consonant_syllable); }}
1188 	break;
1189 	case 15:
1190 #line 112 "hb-ot-shaper-indic-machine.rl"
1191 	{te = p;p--;{ found_syllable (indic_vowel_syllable); }}
1192 	break;
1193 	case 18:
1194 #line 113 "hb-ot-shaper-indic-machine.rl"
1195 	{te = p;p--;{ found_syllable (indic_standalone_cluster); }}
1196 	break;
1197 	case 20:
1198 #line 114 "hb-ot-shaper-indic-machine.rl"
1199 	{te = p;p--;{ found_syllable (indic_symbol_cluster); }}
1200 	break;
1201 	case 16:
1202 #line 116 "hb-ot-shaper-indic-machine.rl"
1203 	{te = p;p--;{ found_syllable (indic_broken_cluster); buffer->scratch_flags |= HB_BUFFER_SCRATCH_FLAG_HAS_BROKEN_SYLLABLE; }}
1204 	break;
1205 	case 17:
1206 #line 117 "hb-ot-shaper-indic-machine.rl"
1207 	{te = p;p--;{ found_syllable (indic_non_indic_cluster); }}
1208 	break;
1209 	case 1:
1210 #line 111 "hb-ot-shaper-indic-machine.rl"
1211 	{{p = ((te))-1;}{ found_syllable (indic_consonant_syllable); }}
1212 	break;
1213 	case 3:
1214 #line 112 "hb-ot-shaper-indic-machine.rl"
1215 	{{p = ((te))-1;}{ found_syllable (indic_vowel_syllable); }}
1216 	break;
1217 	case 7:
1218 #line 113 "hb-ot-shaper-indic-machine.rl"
1219 	{{p = ((te))-1;}{ found_syllable (indic_standalone_cluster); }}
1220 	break;
1221 	case 8:
1222 #line 114 "hb-ot-shaper-indic-machine.rl"
1223 	{{p = ((te))-1;}{ found_syllable (indic_symbol_cluster); }}
1224 	break;
1225 	case 4:
1226 #line 116 "hb-ot-shaper-indic-machine.rl"
1227 	{{p = ((te))-1;}{ found_syllable (indic_broken_cluster); buffer->scratch_flags |= HB_BUFFER_SCRATCH_FLAG_HAS_BROKEN_SYLLABLE; }}
1228 	break;
1229 	case 6:
1230 #line 1 "NONE"
1231 	{	switch( act ) {
1232 	case 1:
1233 	{{p = ((te))-1;} found_syllable (indic_consonant_syllable); }
1234 	break;
1235 	case 5:
1236 	{{p = ((te))-1;} found_syllable (indic_non_indic_cluster); }
1237 	break;
1238 	case 6:
1239 	{{p = ((te))-1;} found_syllable (indic_broken_cluster); buffer->scratch_flags |= HB_BUFFER_SCRATCH_FLAG_HAS_BROKEN_SYLLABLE; }
1240 	break;
1241 	case 7:
1242 	{{p = ((te))-1;} found_syllable (indic_non_indic_cluster); }
1243 	break;
1244 	}
1245 	}
1246 	break;
1247 	case 19:
1248 #line 1 "NONE"
1249 	{te = p+1;}
1250 #line 111 "hb-ot-shaper-indic-machine.rl"
1251 	{act = 1;}
1252 	break;
1253 	case 13:
1254 #line 1 "NONE"
1255 	{te = p+1;}
1256 #line 115 "hb-ot-shaper-indic-machine.rl"
1257 	{act = 5;}
1258 	break;
1259 	case 5:
1260 #line 1 "NONE"
1261 	{te = p+1;}
1262 #line 116 "hb-ot-shaper-indic-machine.rl"
1263 	{act = 6;}
1264 	break;
1265 	case 12:
1266 #line 1 "NONE"
1267 	{te = p+1;}
1268 #line 117 "hb-ot-shaper-indic-machine.rl"
1269 	{act = 7;}
1270 	break;
1271 #line 1272 "hb-ot-shaper-indic-machine.hh"
1272 	}
1273 
1274 _again:
1275 	switch ( _indic_syllable_machine_to_state_actions[cs] ) {
1276 	case 9:
1277 #line 1 "NONE"
1278 	{ts = 0;}
1279 	break;
1280 #line 1281 "hb-ot-shaper-indic-machine.hh"
1281 	}
1282 
1283 	if ( ++p != pe )
1284 		goto _resume;
1285 	_test_eof: {}
1286 	if ( p == eof )
1287 	{
1288 	if ( _indic_syllable_machine_eof_trans[cs] > 0 ) {
1289 		_trans = _indic_syllable_machine_eof_trans[cs] - 1;
1290 		goto _eof_trans;
1291 	}
1292 	}
1293 
1294 	}
1295 
1296 #line 149 "hb-ot-shaper-indic-machine.rl"
1297 
1298 }
1299 
1300 #undef found_syllable
1301 
1302 #endif /* HB_OT_SHAPER_INDIC_MACHINE_HH */
1303