• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 
2 #line 1 "hb-ot-shaper-use-machine.rl"
3 /*
4  * Copyright © 2015  Mozilla Foundation.
5  * Copyright © 2015  Google, Inc.
6  *
7  *  This is part of HarfBuzz, a text shaping library.
8  *
9  * Permission is hereby granted, without written agreement and without
10  * license or royalty fees, to use, copy, modify, and distribute this
11  * software and its documentation for any purpose, provided that the
12  * above copyright notice and the following two paragraphs appear in
13  * all copies of this software.
14  *
15  * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
16  * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
17  * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
18  * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
19  * DAMAGE.
20  *
21  * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
22  * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
23  * FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS
24  * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
25  * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
26  *
27  * Mozilla Author(s): Jonathan Kew
28  * Google Author(s): Behdad Esfahbod
29  */
30 
31 #ifndef HB_OT_SHAPER_USE_MACHINE_HH
32 #define HB_OT_SHAPER_USE_MACHINE_HH
33 
34 #include "hb.hh"
35 
36 #include "hb-ot-shaper-syllabic.hh"
37 
38 /* buffer var allocations */
39 #define use_category() ot_shaper_var_u8_category()
40 
41 #define USE(Cat) use_syllable_machine_ex_##Cat
42 
43 enum use_syllable_type_t {
44   use_virama_terminated_cluster,
45   use_sakot_terminated_cluster,
46   use_standard_cluster,
47   use_number_joiner_terminated_cluster,
48   use_numeral_cluster,
49   use_symbol_cluster,
50   use_hieroglyph_cluster,
51   use_broken_cluster,
52   use_non_cluster,
53 };
54 
55 
56 #line 57 "hb-ot-shaper-use-machine.hh"
57 #define use_syllable_machine_ex_B 1u
58 #define use_syllable_machine_ex_CGJ 6u
59 #define use_syllable_machine_ex_CMAbv 31u
60 #define use_syllable_machine_ex_CMBlw 32u
61 #define use_syllable_machine_ex_CS 43u
62 #define use_syllable_machine_ex_FAbv 24u
63 #define use_syllable_machine_ex_FBlw 25u
64 #define use_syllable_machine_ex_FMAbv 45u
65 #define use_syllable_machine_ex_FMBlw 46u
66 #define use_syllable_machine_ex_FMPst 47u
67 #define use_syllable_machine_ex_FPst 26u
68 #define use_syllable_machine_ex_G 49u
69 #define use_syllable_machine_ex_GB 5u
70 #define use_syllable_machine_ex_H 12u
71 #define use_syllable_machine_ex_HM 54u
72 #define use_syllable_machine_ex_HN 13u
73 #define use_syllable_machine_ex_HR 55u
74 #define use_syllable_machine_ex_HVM 53u
75 #define use_syllable_machine_ex_IS 44u
76 #define use_syllable_machine_ex_J 50u
77 #define use_syllable_machine_ex_MAbv 27u
78 #define use_syllable_machine_ex_MBlw 28u
79 #define use_syllable_machine_ex_MPre 30u
80 #define use_syllable_machine_ex_MPst 29u
81 #define use_syllable_machine_ex_N 4u
82 #define use_syllable_machine_ex_O 0u
83 #define use_syllable_machine_ex_R 18u
84 #define use_syllable_machine_ex_SB 51u
85 #define use_syllable_machine_ex_SE 52u
86 #define use_syllable_machine_ex_SMAbv 41u
87 #define use_syllable_machine_ex_SMBlw 42u
88 #define use_syllable_machine_ex_SUB 11u
89 #define use_syllable_machine_ex_Sk 48u
90 #define use_syllable_machine_ex_VAbv 33u
91 #define use_syllable_machine_ex_VBlw 34u
92 #define use_syllable_machine_ex_VMAbv 37u
93 #define use_syllable_machine_ex_VMBlw 38u
94 #define use_syllable_machine_ex_VMPre 23u
95 #define use_syllable_machine_ex_VMPst 39u
96 #define use_syllable_machine_ex_VPre 22u
97 #define use_syllable_machine_ex_VPst 35u
98 #define use_syllable_machine_ex_WJ 16u
99 #define use_syllable_machine_ex_ZWNJ 14u
100 
101 
102 #line 103 "hb-ot-shaper-use-machine.hh"
103 static const unsigned char _use_syllable_machine_trans_keys[] = {
104 	49u, 51u, 0u, 53u, 11u, 53u, 11u, 53u, 1u, 53u, 14u, 48u, 14u, 47u, 14u, 47u,
105 	14u, 47u, 14u, 46u, 14u, 46u, 14u, 14u, 14u, 48u, 14u, 48u, 14u, 48u, 1u, 14u,
106 	14u, 48u, 14u, 53u, 14u, 53u, 14u, 53u, 14u, 53u, 12u, 53u, 14u, 53u, 12u, 53u,
107 	12u, 53u, 12u, 53u, 11u, 53u, 1u, 14u, 1u, 48u, 14u, 42u, 14u, 42u, 11u, 53u,
108 	1u, 53u, 14u, 48u, 14u, 47u, 14u, 47u, 14u, 47u, 14u, 46u, 14u, 46u, 14u, 14u,
109 	14u, 48u, 14u, 48u, 14u, 48u, 1u, 14u, 14u, 48u, 14u, 53u, 14u, 53u, 14u, 53u,
110 	14u, 53u, 12u, 53u, 14u, 53u, 12u, 53u, 12u, 53u, 12u, 53u, 11u, 53u, 1u, 14u,
111 	1u, 14u, 1u, 48u, 13u, 14u, 4u, 14u, 11u, 53u, 11u, 53u, 1u, 53u, 14u, 48u,
112 	14u, 47u, 14u, 47u, 14u, 47u, 14u, 46u, 14u, 46u, 14u, 14u, 14u, 48u, 14u, 48u,
113 	14u, 48u, 1u, 14u, 14u, 48u, 14u, 53u, 14u, 53u, 14u, 53u, 14u, 53u, 12u, 53u,
114 	14u, 53u, 12u, 53u, 12u, 53u, 12u, 53u, 11u, 53u, 1u, 14u, 1u, 14u, 1u, 48u,
115 	11u, 53u, 1u, 53u, 14u, 48u, 14u, 47u, 14u, 47u, 14u, 47u, 14u, 46u, 14u, 46u,
116 	14u, 14u, 14u, 48u, 14u, 48u, 14u, 48u, 1u, 14u, 14u, 48u, 14u, 53u, 14u, 53u,
117 	14u, 53u, 14u, 53u, 12u, 53u, 14u, 53u, 12u, 53u, 12u, 53u, 12u, 53u, 11u, 53u,
118 	1u, 14u, 1u, 48u, 4u, 14u, 13u, 14u, 1u, 53u, 14u, 42u, 14u, 42u, 1u, 5u,
119 	14u, 55u, 14u, 51u, 14u, 52u, 14u, 54u, 11u, 53u, 0
120 };
121 
122 static const char _use_syllable_machine_key_spans[] = {
123 	3, 54, 43, 43, 53, 35, 34, 34,
124 	34, 33, 33, 1, 35, 35, 35, 14,
125 	35, 40, 40, 40, 40, 42, 40, 42,
126 	42, 42, 43, 14, 48, 29, 29, 43,
127 	53, 35, 34, 34, 34, 33, 33, 1,
128 	35, 35, 35, 14, 35, 40, 40, 40,
129 	40, 42, 40, 42, 42, 42, 43, 14,
130 	14, 48, 2, 11, 43, 43, 53, 35,
131 	34, 34, 34, 33, 33, 1, 35, 35,
132 	35, 14, 35, 40, 40, 40, 40, 42,
133 	40, 42, 42, 42, 43, 14, 14, 48,
134 	43, 53, 35, 34, 34, 34, 33, 33,
135 	1, 35, 35, 35, 14, 35, 40, 40,
136 	40, 40, 42, 40, 42, 42, 42, 43,
137 	14, 48, 11, 2, 53, 29, 29, 5,
138 	42, 38, 39, 41, 43
139 };
140 
141 static const short _use_syllable_machine_index_offsets[] = {
142 	0, 4, 59, 103, 147, 201, 237, 272,
143 	307, 342, 376, 410, 412, 448, 484, 520,
144 	535, 571, 612, 653, 694, 735, 778, 819,
145 	862, 905, 948, 992, 1007, 1056, 1086, 1116,
146 	1160, 1214, 1250, 1285, 1320, 1355, 1389, 1423,
147 	1425, 1461, 1497, 1533, 1548, 1584, 1625, 1666,
148 	1707, 1748, 1791, 1832, 1875, 1918, 1961, 2005,
149 	2020, 2035, 2084, 2087, 2099, 2143, 2187, 2241,
150 	2277, 2312, 2347, 2382, 2416, 2450, 2452, 2488,
151 	2524, 2560, 2575, 2611, 2652, 2693, 2734, 2775,
152 	2818, 2859, 2902, 2945, 2988, 3032, 3047, 3062,
153 	3111, 3155, 3209, 3245, 3280, 3315, 3350, 3384,
154 	3418, 3420, 3456, 3492, 3528, 3543, 3579, 3620,
155 	3661, 3702, 3743, 3786, 3827, 3870, 3913, 3956,
156 	4000, 4015, 4064, 4076, 4079, 4133, 4163, 4193,
157 	4199, 4242, 4281, 4321, 4363
158 };
159 
160 static const unsigned char _use_syllable_machine_indicies[] = {
161 	1, 0, 2, 0, 3, 4, 5, 5,
162 	6, 7, 5, 5, 5, 5, 5, 8,
163 	9, 10, 11, 5, 5, 5, 12, 5,
164 	5, 5, 13, 14, 15, 16, 17, 18,
165 	19, 20, 21, 8, 22, 23, 24, 25,
166 	5, 26, 27, 28, 5, 29, 30, 31,
167 	32, 33, 34, 35, 32, 1, 5, 36,
168 	5, 37, 5, 39, 40, 38, 41, 38,
169 	38, 38, 38, 38, 38, 38, 42, 43,
170 	44, 45, 46, 47, 48, 49, 50, 39,
171 	51, 52, 53, 54, 38, 55, 56, 57,
172 	38, 58, 59, 38, 60, 61, 62, 63,
173 	60, 38, 38, 38, 38, 64, 38, 39,
174 	40, 38, 41, 38, 38, 38, 38, 38,
175 	38, 38, 42, 43, 44, 45, 46, 47,
176 	48, 49, 50, 39, 51, 52, 53, 54,
177 	38, 55, 56, 57, 38, 38, 38, 38,
178 	60, 61, 62, 63, 60, 38, 38, 38,
179 	38, 64, 38, 39, 38, 38, 38, 38,
180 	38, 38, 38, 38, 38, 38, 38, 38,
181 	41, 38, 38, 38, 38, 38, 38, 38,
182 	38, 43, 44, 45, 46, 38, 38, 38,
183 	38, 38, 38, 38, 38, 38, 38, 55,
184 	56, 57, 38, 38, 38, 38, 38, 61,
185 	62, 63, 65, 38, 38, 38, 38, 43,
186 	38, 41, 38, 38, 38, 38, 38, 38,
187 	38, 38, 43, 44, 45, 46, 38, 38,
188 	38, 38, 38, 38, 38, 38, 38, 38,
189 	55, 56, 57, 38, 38, 38, 38, 38,
190 	61, 62, 63, 65, 38, 41, 38, 38,
191 	38, 38, 38, 38, 38, 38, 38, 44,
192 	45, 46, 38, 38, 38, 38, 38, 38,
193 	38, 38, 38, 38, 38, 38, 38, 38,
194 	38, 38, 38, 38, 61, 62, 63, 38,
195 	41, 38, 38, 38, 38, 38, 38, 38,
196 	38, 38, 38, 45, 46, 38, 38, 38,
197 	38, 38, 38, 38, 38, 38, 38, 38,
198 	38, 38, 38, 38, 38, 38, 38, 61,
199 	62, 63, 38, 41, 38, 38, 38, 38,
200 	38, 38, 38, 38, 38, 38, 38, 46,
201 	38, 38, 38, 38, 38, 38, 38, 38,
202 	38, 38, 38, 38, 38, 38, 38, 38,
203 	38, 38, 61, 62, 63, 38, 41, 38,
204 	38, 38, 38, 38, 38, 38, 38, 38,
205 	38, 38, 38, 38, 38, 38, 38, 38,
206 	38, 38, 38, 38, 38, 38, 38, 38,
207 	38, 38, 38, 38, 38, 61, 62, 38,
208 	41, 38, 38, 38, 38, 38, 38, 38,
209 	38, 38, 38, 38, 38, 38, 38, 38,
210 	38, 38, 38, 38, 38, 38, 38, 38,
211 	38, 38, 38, 38, 38, 38, 38, 38,
212 	62, 38, 41, 38, 41, 38, 38, 38,
213 	38, 38, 38, 38, 38, 38, 44, 45,
214 	46, 38, 38, 38, 38, 38, 38, 38,
215 	38, 38, 38, 55, 56, 57, 38, 38,
216 	38, 38, 38, 61, 62, 63, 65, 38,
217 	41, 38, 38, 38, 38, 38, 38, 38,
218 	38, 38, 44, 45, 46, 38, 38, 38,
219 	38, 38, 38, 38, 38, 38, 38, 38,
220 	56, 57, 38, 38, 38, 38, 38, 61,
221 	62, 63, 65, 38, 41, 38, 38, 38,
222 	38, 38, 38, 38, 38, 38, 44, 45,
223 	46, 38, 38, 38, 38, 38, 38, 38,
224 	38, 38, 38, 38, 38, 57, 38, 38,
225 	38, 38, 38, 61, 62, 63, 65, 38,
226 	66, 38, 38, 38, 38, 38, 38, 38,
227 	38, 38, 38, 38, 38, 41, 38, 41,
228 	38, 38, 38, 38, 38, 38, 38, 38,
229 	38, 44, 45, 46, 38, 38, 38, 38,
230 	38, 38, 38, 38, 38, 38, 38, 38,
231 	38, 38, 38, 38, 38, 38, 61, 62,
232 	63, 65, 38, 41, 38, 38, 38, 38,
233 	38, 38, 38, 42, 43, 44, 45, 46,
234 	38, 38, 38, 38, 38, 38, 52, 53,
235 	54, 38, 55, 56, 57, 38, 38, 38,
236 	38, 38, 61, 62, 63, 65, 38, 38,
237 	38, 38, 43, 38, 41, 38, 38, 38,
238 	38, 38, 38, 38, 38, 43, 44, 45,
239 	46, 38, 38, 38, 38, 38, 38, 52,
240 	53, 54, 38, 55, 56, 57, 38, 38,
241 	38, 38, 38, 61, 62, 63, 65, 38,
242 	38, 38, 38, 43, 38, 41, 38, 38,
243 	38, 38, 38, 38, 38, 38, 43, 44,
244 	45, 46, 38, 38, 38, 38, 38, 38,
245 	38, 53, 54, 38, 55, 56, 57, 38,
246 	38, 38, 38, 38, 61, 62, 63, 65,
247 	38, 38, 38, 38, 43, 38, 41, 38,
248 	38, 38, 38, 38, 38, 38, 38, 43,
249 	44, 45, 46, 38, 38, 38, 38, 38,
250 	38, 38, 38, 54, 38, 55, 56, 57,
251 	38, 38, 38, 38, 38, 61, 62, 63,
252 	65, 38, 38, 38, 38, 43, 38, 67,
253 	38, 41, 38, 38, 38, 38, 38, 38,
254 	38, 42, 43, 44, 45, 46, 38, 48,
255 	49, 38, 38, 38, 52, 53, 54, 38,
256 	55, 56, 57, 38, 38, 38, 38, 38,
257 	61, 62, 63, 65, 38, 38, 38, 38,
258 	43, 38, 41, 38, 38, 38, 38, 38,
259 	38, 38, 38, 43, 44, 45, 46, 38,
260 	38, 38, 38, 38, 38, 38, 38, 38,
261 	38, 55, 56, 57, 38, 38, 38, 38,
262 	38, 61, 62, 63, 65, 38, 38, 38,
263 	38, 43, 38, 67, 38, 41, 38, 38,
264 	38, 38, 38, 38, 38, 42, 43, 44,
265 	45, 46, 38, 38, 49, 38, 38, 38,
266 	52, 53, 54, 38, 55, 56, 57, 38,
267 	38, 38, 38, 38, 61, 62, 63, 65,
268 	38, 38, 38, 38, 43, 38, 67, 38,
269 	41, 38, 38, 38, 38, 38, 38, 38,
270 	42, 43, 44, 45, 46, 38, 38, 38,
271 	38, 38, 38, 52, 53, 54, 38, 55,
272 	56, 57, 38, 38, 38, 38, 38, 61,
273 	62, 63, 65, 38, 38, 38, 38, 43,
274 	38, 67, 38, 41, 38, 38, 38, 38,
275 	38, 38, 38, 42, 43, 44, 45, 46,
276 	47, 48, 49, 38, 38, 38, 52, 53,
277 	54, 38, 55, 56, 57, 38, 38, 38,
278 	38, 38, 61, 62, 63, 65, 38, 38,
279 	38, 38, 43, 38, 39, 40, 38, 41,
280 	38, 38, 38, 38, 38, 38, 38, 42,
281 	43, 44, 45, 46, 47, 48, 49, 50,
282 	38, 51, 52, 53, 54, 38, 55, 56,
283 	57, 38, 38, 38, 38, 60, 61, 62,
284 	63, 60, 38, 38, 38, 38, 64, 38,
285 	39, 38, 38, 38, 38, 38, 38, 38,
286 	38, 38, 38, 38, 38, 41, 38, 39,
287 	38, 38, 38, 38, 38, 38, 38, 38,
288 	38, 38, 38, 38, 41, 38, 38, 38,
289 	38, 38, 38, 38, 38, 43, 44, 45,
290 	46, 38, 38, 38, 38, 38, 38, 38,
291 	38, 38, 38, 55, 56, 57, 38, 38,
292 	38, 38, 38, 61, 62, 63, 65, 38,
293 	41, 38, 38, 38, 38, 38, 38, 38,
294 	38, 38, 38, 38, 38, 38, 38, 38,
295 	38, 38, 38, 38, 38, 38, 38, 38,
296 	38, 38, 38, 58, 59, 38, 41, 38,
297 	38, 38, 38, 38, 38, 38, 38, 38,
298 	38, 38, 38, 38, 38, 38, 38, 38,
299 	38, 38, 38, 38, 38, 38, 38, 38,
300 	38, 38, 59, 38, 4, 69, 68, 70,
301 	68, 68, 68, 68, 68, 68, 68, 71,
302 	72, 73, 74, 75, 76, 77, 78, 79,
303 	4, 80, 81, 82, 83, 68, 84, 85,
304 	86, 68, 68, 68, 68, 87, 88, 89,
305 	90, 91, 68, 68, 68, 68, 92, 68,
306 	4, 68, 68, 68, 68, 68, 68, 68,
307 	68, 68, 68, 68, 68, 70, 68, 68,
308 	68, 68, 68, 68, 68, 68, 72, 73,
309 	74, 75, 68, 68, 68, 68, 68, 68,
310 	68, 68, 68, 68, 84, 85, 86, 68,
311 	68, 68, 68, 68, 88, 89, 90, 93,
312 	68, 68, 68, 68, 72, 68, 70, 68,
313 	68, 68, 68, 68, 68, 68, 68, 72,
314 	73, 74, 75, 68, 68, 68, 68, 68,
315 	68, 68, 68, 68, 68, 84, 85, 86,
316 	68, 68, 68, 68, 68, 88, 89, 90,
317 	93, 68, 70, 68, 68, 68, 68, 68,
318 	68, 68, 68, 68, 73, 74, 75, 68,
319 	68, 68, 68, 68, 68, 68, 68, 68,
320 	68, 68, 68, 68, 68, 68, 68, 68,
321 	68, 88, 89, 90, 68, 70, 68, 68,
322 	68, 68, 68, 68, 68, 68, 68, 68,
323 	74, 75, 68, 68, 68, 68, 68, 68,
324 	68, 68, 68, 68, 68, 68, 68, 68,
325 	68, 68, 68, 68, 88, 89, 90, 68,
326 	70, 68, 68, 68, 68, 68, 68, 68,
327 	68, 68, 68, 68, 75, 68, 68, 68,
328 	68, 68, 68, 68, 68, 68, 68, 68,
329 	68, 68, 68, 68, 68, 68, 68, 88,
330 	89, 90, 68, 70, 68, 68, 68, 68,
331 	68, 68, 68, 68, 68, 68, 68, 68,
332 	68, 68, 68, 68, 68, 68, 68, 68,
333 	68, 68, 68, 68, 68, 68, 68, 68,
334 	68, 68, 88, 89, 68, 70, 68, 68,
335 	68, 68, 68, 68, 68, 68, 68, 68,
336 	68, 68, 68, 68, 68, 68, 68, 68,
337 	68, 68, 68, 68, 68, 68, 68, 68,
338 	68, 68, 68, 68, 68, 89, 68, 70,
339 	68, 70, 68, 68, 68, 68, 68, 68,
340 	68, 68, 68, 73, 74, 75, 68, 68,
341 	68, 68, 68, 68, 68, 68, 68, 68,
342 	84, 85, 86, 68, 68, 68, 68, 68,
343 	88, 89, 90, 93, 68, 70, 68, 68,
344 	68, 68, 68, 68, 68, 68, 68, 73,
345 	74, 75, 68, 68, 68, 68, 68, 68,
346 	68, 68, 68, 68, 68, 85, 86, 68,
347 	68, 68, 68, 68, 88, 89, 90, 93,
348 	68, 70, 68, 68, 68, 68, 68, 68,
349 	68, 68, 68, 73, 74, 75, 68, 68,
350 	68, 68, 68, 68, 68, 68, 68, 68,
351 	68, 68, 86, 68, 68, 68, 68, 68,
352 	88, 89, 90, 93, 68, 95, 94, 94,
353 	94, 94, 94, 94, 94, 94, 94, 94,
354 	94, 94, 96, 94, 70, 68, 68, 68,
355 	68, 68, 68, 68, 68, 68, 73, 74,
356 	75, 68, 68, 68, 68, 68, 68, 68,
357 	68, 68, 68, 68, 68, 68, 68, 68,
358 	68, 68, 68, 88, 89, 90, 93, 68,
359 	70, 68, 68, 68, 68, 68, 68, 68,
360 	71, 72, 73, 74, 75, 68, 68, 68,
361 	68, 68, 68, 81, 82, 83, 68, 84,
362 	85, 86, 68, 68, 68, 68, 68, 88,
363 	89, 90, 93, 68, 68, 68, 68, 72,
364 	68, 70, 68, 68, 68, 68, 68, 68,
365 	68, 68, 72, 73, 74, 75, 68, 68,
366 	68, 68, 68, 68, 81, 82, 83, 68,
367 	84, 85, 86, 68, 68, 68, 68, 68,
368 	88, 89, 90, 93, 68, 68, 68, 68,
369 	72, 68, 70, 68, 68, 68, 68, 68,
370 	68, 68, 68, 72, 73, 74, 75, 68,
371 	68, 68, 68, 68, 68, 68, 82, 83,
372 	68, 84, 85, 86, 68, 68, 68, 68,
373 	68, 88, 89, 90, 93, 68, 68, 68,
374 	68, 72, 68, 70, 68, 68, 68, 68,
375 	68, 68, 68, 68, 72, 73, 74, 75,
376 	68, 68, 68, 68, 68, 68, 68, 68,
377 	83, 68, 84, 85, 86, 68, 68, 68,
378 	68, 68, 88, 89, 90, 93, 68, 68,
379 	68, 68, 72, 68, 97, 68, 70, 68,
380 	68, 68, 68, 68, 68, 68, 71, 72,
381 	73, 74, 75, 68, 77, 78, 68, 68,
382 	68, 81, 82, 83, 68, 84, 85, 86,
383 	68, 68, 68, 68, 68, 88, 89, 90,
384 	93, 68, 68, 68, 68, 72, 68, 70,
385 	68, 68, 68, 68, 68, 68, 68, 68,
386 	72, 73, 74, 75, 68, 68, 68, 68,
387 	68, 68, 68, 68, 68, 68, 84, 85,
388 	86, 68, 68, 68, 68, 68, 88, 89,
389 	90, 93, 68, 68, 68, 68, 72, 68,
390 	97, 68, 70, 68, 68, 68, 68, 68,
391 	68, 68, 71, 72, 73, 74, 75, 68,
392 	68, 78, 68, 68, 68, 81, 82, 83,
393 	68, 84, 85, 86, 68, 68, 68, 68,
394 	68, 88, 89, 90, 93, 68, 68, 68,
395 	68, 72, 68, 97, 68, 70, 68, 68,
396 	68, 68, 68, 68, 68, 71, 72, 73,
397 	74, 75, 68, 68, 68, 68, 68, 68,
398 	81, 82, 83, 68, 84, 85, 86, 68,
399 	68, 68, 68, 68, 88, 89, 90, 93,
400 	68, 68, 68, 68, 72, 68, 97, 68,
401 	70, 68, 68, 68, 68, 68, 68, 68,
402 	71, 72, 73, 74, 75, 76, 77, 78,
403 	68, 68, 68, 81, 82, 83, 68, 84,
404 	85, 86, 68, 68, 68, 68, 68, 88,
405 	89, 90, 93, 68, 68, 68, 68, 72,
406 	68, 4, 69, 68, 70, 68, 68, 68,
407 	68, 68, 68, 68, 71, 72, 73, 74,
408 	75, 76, 77, 78, 79, 68, 80, 81,
409 	82, 83, 68, 84, 85, 86, 68, 68,
410 	68, 68, 87, 88, 89, 90, 91, 68,
411 	68, 68, 68, 92, 68, 4, 98, 98,
412 	98, 98, 98, 98, 98, 98, 98, 98,
413 	98, 98, 99, 98, 4, 94, 94, 94,
414 	94, 94, 94, 94, 94, 94, 94, 94,
415 	94, 96, 94, 4, 68, 68, 68, 68,
416 	68, 68, 68, 68, 68, 68, 68, 68,
417 	70, 68, 68, 68, 68, 68, 68, 68,
418 	68, 72, 73, 74, 75, 68, 68, 68,
419 	68, 68, 68, 68, 68, 68, 68, 84,
420 	85, 86, 68, 68, 68, 68, 68, 88,
421 	89, 90, 93, 68, 101, 102, 100, 6,
422 	103, 103, 103, 103, 103, 103, 103, 103,
423 	103, 104, 103, 105, 106, 68, 70, 68,
424 	68, 68, 68, 68, 68, 68, 107, 108,
425 	109, 110, 111, 112, 113, 114, 115, 105,
426 	116, 117, 118, 119, 68, 120, 121, 122,
427 	68, 58, 59, 68, 123, 124, 125, 126,
428 	127, 68, 68, 68, 68, 128, 68, 105,
429 	106, 68, 70, 68, 68, 68, 68, 68,
430 	68, 68, 107, 108, 109, 110, 111, 112,
431 	113, 114, 115, 105, 116, 117, 118, 119,
432 	68, 120, 121, 122, 68, 68, 68, 68,
433 	123, 124, 125, 126, 127, 68, 68, 68,
434 	68, 128, 68, 105, 68, 68, 68, 68,
435 	68, 68, 68, 68, 68, 68, 68, 68,
436 	70, 68, 68, 68, 68, 68, 68, 68,
437 	68, 108, 109, 110, 111, 68, 68, 68,
438 	68, 68, 68, 68, 68, 68, 68, 120,
439 	121, 122, 68, 68, 68, 68, 68, 124,
440 	125, 126, 129, 68, 68, 68, 68, 108,
441 	68, 70, 68, 68, 68, 68, 68, 68,
442 	68, 68, 108, 109, 110, 111, 68, 68,
443 	68, 68, 68, 68, 68, 68, 68, 68,
444 	120, 121, 122, 68, 68, 68, 68, 68,
445 	124, 125, 126, 129, 68, 70, 68, 68,
446 	68, 68, 68, 68, 68, 68, 68, 109,
447 	110, 111, 68, 68, 68, 68, 68, 68,
448 	68, 68, 68, 68, 68, 68, 68, 68,
449 	68, 68, 68, 68, 124, 125, 126, 68,
450 	70, 68, 68, 68, 68, 68, 68, 68,
451 	68, 68, 68, 110, 111, 68, 68, 68,
452 	68, 68, 68, 68, 68, 68, 68, 68,
453 	68, 68, 68, 68, 68, 68, 68, 124,
454 	125, 126, 68, 70, 68, 68, 68, 68,
455 	68, 68, 68, 68, 68, 68, 68, 111,
456 	68, 68, 68, 68, 68, 68, 68, 68,
457 	68, 68, 68, 68, 68, 68, 68, 68,
458 	68, 68, 124, 125, 126, 68, 70, 68,
459 	68, 68, 68, 68, 68, 68, 68, 68,
460 	68, 68, 68, 68, 68, 68, 68, 68,
461 	68, 68, 68, 68, 68, 68, 68, 68,
462 	68, 68, 68, 68, 68, 124, 125, 68,
463 	70, 68, 68, 68, 68, 68, 68, 68,
464 	68, 68, 68, 68, 68, 68, 68, 68,
465 	68, 68, 68, 68, 68, 68, 68, 68,
466 	68, 68, 68, 68, 68, 68, 68, 68,
467 	125, 68, 70, 68, 70, 68, 68, 68,
468 	68, 68, 68, 68, 68, 68, 109, 110,
469 	111, 68, 68, 68, 68, 68, 68, 68,
470 	68, 68, 68, 120, 121, 122, 68, 68,
471 	68, 68, 68, 124, 125, 126, 129, 68,
472 	70, 68, 68, 68, 68, 68, 68, 68,
473 	68, 68, 109, 110, 111, 68, 68, 68,
474 	68, 68, 68, 68, 68, 68, 68, 68,
475 	121, 122, 68, 68, 68, 68, 68, 124,
476 	125, 126, 129, 68, 70, 68, 68, 68,
477 	68, 68, 68, 68, 68, 68, 109, 110,
478 	111, 68, 68, 68, 68, 68, 68, 68,
479 	68, 68, 68, 68, 68, 122, 68, 68,
480 	68, 68, 68, 124, 125, 126, 129, 68,
481 	130, 94, 94, 94, 94, 94, 94, 94,
482 	94, 94, 94, 94, 94, 96, 94, 70,
483 	68, 68, 68, 68, 68, 68, 68, 68,
484 	68, 109, 110, 111, 68, 68, 68, 68,
485 	68, 68, 68, 68, 68, 68, 68, 68,
486 	68, 68, 68, 68, 68, 68, 124, 125,
487 	126, 129, 68, 70, 68, 68, 68, 68,
488 	68, 68, 68, 107, 108, 109, 110, 111,
489 	68, 68, 68, 68, 68, 68, 117, 118,
490 	119, 68, 120, 121, 122, 68, 68, 68,
491 	68, 68, 124, 125, 126, 129, 68, 68,
492 	68, 68, 108, 68, 70, 68, 68, 68,
493 	68, 68, 68, 68, 68, 108, 109, 110,
494 	111, 68, 68, 68, 68, 68, 68, 117,
495 	118, 119, 68, 120, 121, 122, 68, 68,
496 	68, 68, 68, 124, 125, 126, 129, 68,
497 	68, 68, 68, 108, 68, 70, 68, 68,
498 	68, 68, 68, 68, 68, 68, 108, 109,
499 	110, 111, 68, 68, 68, 68, 68, 68,
500 	68, 118, 119, 68, 120, 121, 122, 68,
501 	68, 68, 68, 68, 124, 125, 126, 129,
502 	68, 68, 68, 68, 108, 68, 70, 68,
503 	68, 68, 68, 68, 68, 68, 68, 108,
504 	109, 110, 111, 68, 68, 68, 68, 68,
505 	68, 68, 68, 119, 68, 120, 121, 122,
506 	68, 68, 68, 68, 68, 124, 125, 126,
507 	129, 68, 68, 68, 68, 108, 68, 131,
508 	68, 70, 68, 68, 68, 68, 68, 68,
509 	68, 107, 108, 109, 110, 111, 68, 113,
510 	114, 68, 68, 68, 117, 118, 119, 68,
511 	120, 121, 122, 68, 68, 68, 68, 68,
512 	124, 125, 126, 129, 68, 68, 68, 68,
513 	108, 68, 70, 68, 68, 68, 68, 68,
514 	68, 68, 68, 108, 109, 110, 111, 68,
515 	68, 68, 68, 68, 68, 68, 68, 68,
516 	68, 120, 121, 122, 68, 68, 68, 68,
517 	68, 124, 125, 126, 129, 68, 68, 68,
518 	68, 108, 68, 131, 68, 70, 68, 68,
519 	68, 68, 68, 68, 68, 107, 108, 109,
520 	110, 111, 68, 68, 114, 68, 68, 68,
521 	117, 118, 119, 68, 120, 121, 122, 68,
522 	68, 68, 68, 68, 124, 125, 126, 129,
523 	68, 68, 68, 68, 108, 68, 131, 68,
524 	70, 68, 68, 68, 68, 68, 68, 68,
525 	107, 108, 109, 110, 111, 68, 68, 68,
526 	68, 68, 68, 117, 118, 119, 68, 120,
527 	121, 122, 68, 68, 68, 68, 68, 124,
528 	125, 126, 129, 68, 68, 68, 68, 108,
529 	68, 131, 68, 70, 68, 68, 68, 68,
530 	68, 68, 68, 107, 108, 109, 110, 111,
531 	112, 113, 114, 68, 68, 68, 117, 118,
532 	119, 68, 120, 121, 122, 68, 68, 68,
533 	68, 68, 124, 125, 126, 129, 68, 68,
534 	68, 68, 108, 68, 105, 106, 68, 70,
535 	68, 68, 68, 68, 68, 68, 68, 107,
536 	108, 109, 110, 111, 112, 113, 114, 115,
537 	68, 116, 117, 118, 119, 68, 120, 121,
538 	122, 68, 68, 68, 68, 123, 124, 125,
539 	126, 127, 68, 68, 68, 68, 128, 68,
540 	105, 98, 98, 98, 98, 98, 98, 98,
541 	98, 98, 98, 98, 98, 99, 98, 105,
542 	94, 94, 94, 94, 94, 94, 94, 94,
543 	94, 94, 94, 94, 96, 94, 105, 68,
544 	68, 68, 68, 68, 68, 68, 68, 68,
545 	68, 68, 68, 70, 68, 68, 68, 68,
546 	68, 68, 68, 68, 108, 109, 110, 111,
547 	68, 68, 68, 68, 68, 68, 68, 68,
548 	68, 68, 120, 121, 122, 68, 68, 68,
549 	68, 68, 124, 125, 126, 129, 68, 8,
550 	9, 132, 11, 132, 132, 132, 132, 132,
551 	132, 132, 13, 14, 15, 16, 17, 18,
552 	19, 20, 21, 8, 22, 23, 24, 25,
553 	132, 26, 27, 28, 132, 132, 132, 132,
554 	32, 33, 34, 35, 32, 132, 132, 132,
555 	132, 37, 132, 8, 132, 132, 132, 132,
556 	132, 132, 132, 132, 132, 132, 132, 132,
557 	11, 132, 132, 132, 132, 132, 132, 132,
558 	132, 14, 15, 16, 17, 132, 132, 132,
559 	132, 132, 132, 132, 132, 132, 132, 26,
560 	27, 28, 132, 132, 132, 132, 132, 33,
561 	34, 35, 133, 132, 132, 132, 132, 14,
562 	132, 11, 132, 132, 132, 132, 132, 132,
563 	132, 132, 14, 15, 16, 17, 132, 132,
564 	132, 132, 132, 132, 132, 132, 132, 132,
565 	26, 27, 28, 132, 132, 132, 132, 132,
566 	33, 34, 35, 133, 132, 11, 132, 132,
567 	132, 132, 132, 132, 132, 132, 132, 15,
568 	16, 17, 132, 132, 132, 132, 132, 132,
569 	132, 132, 132, 132, 132, 132, 132, 132,
570 	132, 132, 132, 132, 33, 34, 35, 132,
571 	11, 132, 132, 132, 132, 132, 132, 132,
572 	132, 132, 132, 16, 17, 132, 132, 132,
573 	132, 132, 132, 132, 132, 132, 132, 132,
574 	132, 132, 132, 132, 132, 132, 132, 33,
575 	34, 35, 132, 11, 132, 132, 132, 132,
576 	132, 132, 132, 132, 132, 132, 132, 17,
577 	132, 132, 132, 132, 132, 132, 132, 132,
578 	132, 132, 132, 132, 132, 132, 132, 132,
579 	132, 132, 33, 34, 35, 132, 11, 132,
580 	132, 132, 132, 132, 132, 132, 132, 132,
581 	132, 132, 132, 132, 132, 132, 132, 132,
582 	132, 132, 132, 132, 132, 132, 132, 132,
583 	132, 132, 132, 132, 132, 33, 34, 132,
584 	11, 132, 132, 132, 132, 132, 132, 132,
585 	132, 132, 132, 132, 132, 132, 132, 132,
586 	132, 132, 132, 132, 132, 132, 132, 132,
587 	132, 132, 132, 132, 132, 132, 132, 132,
588 	34, 132, 11, 132, 11, 132, 132, 132,
589 	132, 132, 132, 132, 132, 132, 15, 16,
590 	17, 132, 132, 132, 132, 132, 132, 132,
591 	132, 132, 132, 26, 27, 28, 132, 132,
592 	132, 132, 132, 33, 34, 35, 133, 132,
593 	11, 132, 132, 132, 132, 132, 132, 132,
594 	132, 132, 15, 16, 17, 132, 132, 132,
595 	132, 132, 132, 132, 132, 132, 132, 132,
596 	27, 28, 132, 132, 132, 132, 132, 33,
597 	34, 35, 133, 132, 11, 132, 132, 132,
598 	132, 132, 132, 132, 132, 132, 15, 16,
599 	17, 132, 132, 132, 132, 132, 132, 132,
600 	132, 132, 132, 132, 132, 28, 132, 132,
601 	132, 132, 132, 33, 34, 35, 133, 132,
602 	134, 132, 132, 132, 132, 132, 132, 132,
603 	132, 132, 132, 132, 132, 11, 132, 11,
604 	132, 132, 132, 132, 132, 132, 132, 132,
605 	132, 15, 16, 17, 132, 132, 132, 132,
606 	132, 132, 132, 132, 132, 132, 132, 132,
607 	132, 132, 132, 132, 132, 132, 33, 34,
608 	35, 133, 132, 11, 132, 132, 132, 132,
609 	132, 132, 132, 13, 14, 15, 16, 17,
610 	132, 132, 132, 132, 132, 132, 23, 24,
611 	25, 132, 26, 27, 28, 132, 132, 132,
612 	132, 132, 33, 34, 35, 133, 132, 132,
613 	132, 132, 14, 132, 11, 132, 132, 132,
614 	132, 132, 132, 132, 132, 14, 15, 16,
615 	17, 132, 132, 132, 132, 132, 132, 23,
616 	24, 25, 132, 26, 27, 28, 132, 132,
617 	132, 132, 132, 33, 34, 35, 133, 132,
618 	132, 132, 132, 14, 132, 11, 132, 132,
619 	132, 132, 132, 132, 132, 132, 14, 15,
620 	16, 17, 132, 132, 132, 132, 132, 132,
621 	132, 24, 25, 132, 26, 27, 28, 132,
622 	132, 132, 132, 132, 33, 34, 35, 133,
623 	132, 132, 132, 132, 14, 132, 11, 132,
624 	132, 132, 132, 132, 132, 132, 132, 14,
625 	15, 16, 17, 132, 132, 132, 132, 132,
626 	132, 132, 132, 25, 132, 26, 27, 28,
627 	132, 132, 132, 132, 132, 33, 34, 35,
628 	133, 132, 132, 132, 132, 14, 132, 135,
629 	132, 11, 132, 132, 132, 132, 132, 132,
630 	132, 13, 14, 15, 16, 17, 132, 19,
631 	20, 132, 132, 132, 23, 24, 25, 132,
632 	26, 27, 28, 132, 132, 132, 132, 132,
633 	33, 34, 35, 133, 132, 132, 132, 132,
634 	14, 132, 11, 132, 132, 132, 132, 132,
635 	132, 132, 132, 14, 15, 16, 17, 132,
636 	132, 132, 132, 132, 132, 132, 132, 132,
637 	132, 26, 27, 28, 132, 132, 132, 132,
638 	132, 33, 34, 35, 133, 132, 132, 132,
639 	132, 14, 132, 135, 132, 11, 132, 132,
640 	132, 132, 132, 132, 132, 13, 14, 15,
641 	16, 17, 132, 132, 20, 132, 132, 132,
642 	23, 24, 25, 132, 26, 27, 28, 132,
643 	132, 132, 132, 132, 33, 34, 35, 133,
644 	132, 132, 132, 132, 14, 132, 135, 132,
645 	11, 132, 132, 132, 132, 132, 132, 132,
646 	13, 14, 15, 16, 17, 132, 132, 132,
647 	132, 132, 132, 23, 24, 25, 132, 26,
648 	27, 28, 132, 132, 132, 132, 132, 33,
649 	34, 35, 133, 132, 132, 132, 132, 14,
650 	132, 135, 132, 11, 132, 132, 132, 132,
651 	132, 132, 132, 13, 14, 15, 16, 17,
652 	18, 19, 20, 132, 132, 132, 23, 24,
653 	25, 132, 26, 27, 28, 132, 132, 132,
654 	132, 132, 33, 34, 35, 133, 132, 132,
655 	132, 132, 14, 132, 8, 9, 132, 11,
656 	132, 132, 132, 132, 132, 132, 132, 13,
657 	14, 15, 16, 17, 18, 19, 20, 21,
658 	132, 22, 23, 24, 25, 132, 26, 27,
659 	28, 132, 132, 132, 132, 32, 33, 34,
660 	35, 32, 132, 132, 132, 132, 37, 132,
661 	8, 132, 132, 132, 132, 132, 132, 132,
662 	132, 132, 132, 132, 132, 11, 132, 8,
663 	132, 132, 132, 132, 132, 132, 132, 132,
664 	132, 132, 132, 132, 11, 132, 132, 132,
665 	132, 132, 132, 132, 132, 14, 15, 16,
666 	17, 132, 132, 132, 132, 132, 132, 132,
667 	132, 132, 132, 26, 27, 28, 132, 132,
668 	132, 132, 132, 33, 34, 35, 133, 132,
669 	136, 132, 132, 132, 132, 132, 132, 132,
670 	132, 132, 11, 132, 10, 11, 132, 4,
671 	132, 132, 132, 4, 132, 132, 132, 132,
672 	132, 8, 9, 10, 11, 132, 132, 132,
673 	132, 132, 132, 132, 13, 14, 15, 16,
674 	17, 18, 19, 20, 21, 8, 22, 23,
675 	24, 25, 132, 26, 27, 28, 132, 29,
676 	30, 132, 32, 33, 34, 35, 32, 132,
677 	132, 132, 132, 37, 132, 11, 132, 132,
678 	132, 132, 132, 132, 132, 132, 132, 132,
679 	132, 132, 132, 132, 132, 132, 132, 132,
680 	132, 132, 132, 132, 132, 132, 132, 132,
681 	29, 30, 132, 11, 132, 132, 132, 132,
682 	132, 132, 132, 132, 132, 132, 132, 132,
683 	132, 132, 132, 132, 132, 132, 132, 132,
684 	132, 132, 132, 132, 132, 132, 132, 30,
685 	132, 4, 137, 137, 137, 4, 137, 139,
686 	138, 138, 138, 138, 138, 138, 138, 138,
687 	138, 138, 138, 138, 138, 138, 138, 138,
688 	138, 138, 138, 138, 138, 138, 138, 138,
689 	138, 138, 138, 138, 138, 138, 138, 138,
690 	138, 138, 138, 140, 138, 141, 138, 141,
691 	142, 138, 139, 138, 138, 138, 138, 138,
692 	138, 138, 138, 138, 138, 138, 138, 138,
693 	138, 138, 138, 138, 138, 138, 138, 138,
694 	138, 138, 138, 138, 138, 138, 138, 138,
695 	138, 138, 138, 138, 138, 1, 140, 140,
696 	138, 139, 138, 138, 138, 138, 138, 138,
697 	138, 138, 138, 138, 138, 138, 138, 138,
698 	138, 138, 138, 138, 138, 138, 138, 138,
699 	138, 138, 138, 138, 138, 138, 138, 138,
700 	138, 138, 138, 138, 138, 140, 138, 141,
701 	138, 139, 138, 138, 138, 138, 138, 138,
702 	138, 138, 138, 138, 138, 138, 138, 138,
703 	138, 138, 138, 138, 138, 138, 138, 138,
704 	138, 138, 138, 138, 138, 138, 138, 138,
705 	138, 138, 138, 138, 138, 140, 138, 141,
706 	138, 141, 138, 39, 40, 38, 41, 38,
707 	38, 38, 38, 38, 38, 38, 42, 43,
708 	44, 45, 46, 47, 48, 49, 50, 39,
709 	51, 52, 53, 54, 38, 55, 56, 57,
710 	38, 58, 59, 38, 60, 61, 62, 63,
711 	60, 1, 38, 2, 38, 64, 38, 0
712 };
713 
714 static const char _use_syllable_machine_trans_targs[] = {
715 	1, 120, 0, 2, 31, 1, 58, 60,
716 	88, 89, 114, 1, 116, 102, 90, 91,
717 	92, 93, 106, 108, 109, 110, 111, 103,
718 	104, 105, 97, 98, 99, 117, 118, 119,
719 	112, 94, 95, 96, 124, 113, 1, 3,
720 	4, 1, 17, 5, 6, 7, 8, 21,
721 	23, 24, 25, 26, 18, 19, 20, 12,
722 	13, 14, 29, 30, 27, 9, 10, 11,
723 	28, 15, 16, 22, 1, 32, 1, 45,
724 	33, 34, 35, 36, 49, 51, 52, 53,
725 	54, 46, 47, 48, 40, 41, 42, 55,
726 	37, 38, 39, 56, 57, 43, 1, 44,
727 	1, 50, 1, 1, 1, 59, 1, 1,
728 	1, 61, 62, 75, 63, 64, 65, 66,
729 	79, 81, 82, 83, 84, 76, 77, 78,
730 	70, 71, 72, 85, 67, 68, 69, 86,
731 	87, 73, 74, 80, 1, 100, 101, 107,
732 	115, 1, 1, 1, 121, 122, 123
733 };
734 
735 static const char _use_syllable_machine_trans_actions[] = {
736 	1, 0, 0, 0, 0, 4, 0, 0,
737 	0, 0, 0, 5, 0, 0, 0, 0,
738 	0, 0, 0, 0, 0, 0, 0, 0,
739 	0, 0, 0, 0, 0, 0, 0, 0,
740 	0, 0, 0, 0, 6, 0, 7, 0,
741 	0, 8, 0, 0, 0, 0, 0, 0,
742 	0, 0, 0, 0, 0, 0, 0, 0,
743 	0, 0, 0, 0, 0, 0, 0, 0,
744 	0, 0, 0, 0, 9, 0, 10, 0,
745 	0, 0, 0, 0, 0, 0, 0, 0,
746 	0, 0, 0, 0, 0, 0, 0, 0,
747 	0, 0, 0, 0, 0, 0, 11, 0,
748 	12, 0, 13, 14, 15, 0, 16, 17,
749 	18, 0, 0, 0, 0, 0, 0, 0,
750 	0, 0, 0, 0, 0, 0, 0, 0,
751 	0, 0, 0, 0, 0, 0, 0, 0,
752 	0, 0, 0, 0, 19, 0, 0, 0,
753 	0, 20, 21, 22, 0, 0, 0
754 };
755 
756 static const char _use_syllable_machine_to_state_actions[] = {
757 	0, 2, 0, 0, 0, 0, 0, 0,
758 	0, 0, 0, 0, 0, 0, 0, 0,
759 	0, 0, 0, 0, 0, 0, 0, 0,
760 	0, 0, 0, 0, 0, 0, 0, 0,
761 	0, 0, 0, 0, 0, 0, 0, 0,
762 	0, 0, 0, 0, 0, 0, 0, 0,
763 	0, 0, 0, 0, 0, 0, 0, 0,
764 	0, 0, 0, 0, 0, 0, 0, 0,
765 	0, 0, 0, 0, 0, 0, 0, 0,
766 	0, 0, 0, 0, 0, 0, 0, 0,
767 	0, 0, 0, 0, 0, 0, 0, 0,
768 	0, 0, 0, 0, 0, 0, 0, 0,
769 	0, 0, 0, 0, 0, 0, 0, 0,
770 	0, 0, 0, 0, 0, 0, 0, 0,
771 	0, 0, 0, 0, 0, 0, 0, 0,
772 	0, 0, 0, 0, 0
773 };
774 
775 static const char _use_syllable_machine_from_state_actions[] = {
776 	0, 3, 0, 0, 0, 0, 0, 0,
777 	0, 0, 0, 0, 0, 0, 0, 0,
778 	0, 0, 0, 0, 0, 0, 0, 0,
779 	0, 0, 0, 0, 0, 0, 0, 0,
780 	0, 0, 0, 0, 0, 0, 0, 0,
781 	0, 0, 0, 0, 0, 0, 0, 0,
782 	0, 0, 0, 0, 0, 0, 0, 0,
783 	0, 0, 0, 0, 0, 0, 0, 0,
784 	0, 0, 0, 0, 0, 0, 0, 0,
785 	0, 0, 0, 0, 0, 0, 0, 0,
786 	0, 0, 0, 0, 0, 0, 0, 0,
787 	0, 0, 0, 0, 0, 0, 0, 0,
788 	0, 0, 0, 0, 0, 0, 0, 0,
789 	0, 0, 0, 0, 0, 0, 0, 0,
790 	0, 0, 0, 0, 0, 0, 0, 0,
791 	0, 0, 0, 0, 0
792 };
793 
794 static const short _use_syllable_machine_eof_trans[] = {
795 	1, 0, 39, 39, 39, 39, 39, 39,
796 	39, 39, 39, 39, 39, 39, 39, 39,
797 	39, 39, 39, 39, 39, 39, 39, 39,
798 	39, 39, 39, 39, 39, 39, 39, 69,
799 	69, 69, 69, 69, 69, 69, 69, 69,
800 	69, 69, 69, 95, 69, 69, 69, 69,
801 	69, 69, 69, 69, 69, 69, 69, 99,
802 	95, 69, 101, 104, 69, 69, 69, 69,
803 	69, 69, 69, 69, 69, 69, 69, 69,
804 	69, 95, 69, 69, 69, 69, 69, 69,
805 	69, 69, 69, 69, 69, 99, 95, 69,
806 	133, 133, 133, 133, 133, 133, 133, 133,
807 	133, 133, 133, 133, 133, 133, 133, 133,
808 	133, 133, 133, 133, 133, 133, 133, 133,
809 	133, 133, 133, 133, 133, 133, 133, 138,
810 	139, 139, 139, 139, 39
811 };
812 
813 static const int use_syllable_machine_start = 1;
814 static const int use_syllable_machine_first_final = 1;
815 static const int use_syllable_machine_error = -1;
816 
817 static const int use_syllable_machine_en_main = 1;
818 
819 
820 #line 58 "hb-ot-shaper-use-machine.rl"
821 
822 
823 
824 #line 184 "hb-ot-shaper-use-machine.rl"
825 
826 
827 #define found_syllable(syllable_type) \
828   HB_STMT_START { \
829     if (0) fprintf (stderr, "syllable %u..%u %s\n", (*ts).second.first, (*te).second.first, #syllable_type); \
830     for (unsigned i = (*ts).second.first; i < (*te).second.first; ++i) \
831       info[i].syllable() = (syllable_serial << 4) | syllable_type; \
832     syllable_serial++; \
833     if (syllable_serial == 16) syllable_serial = 1; \
834   } HB_STMT_END
835 
836 
837 template <typename Iter>
838 struct machine_index_t :
839   hb_iter_with_fallback_t<machine_index_t<Iter>,
840 			  typename Iter::item_t>
841 {
machine_index_tmachine_index_t842   machine_index_t (const Iter& it) : it (it) {}
machine_index_tmachine_index_t843   machine_index_t (const machine_index_t& o) : hb_iter_with_fallback_t<machine_index_t<Iter>,
844 								       typename Iter::item_t> (),
845 					       it (o.it), is_null (o.is_null) {}
846 
847   static constexpr bool is_random_access_iterator = Iter::is_random_access_iterator;
848   static constexpr bool is_sorted_iterator = Iter::is_sorted_iterator;
849 
__item__machine_index_t850   typename Iter::item_t __item__ () const { return *it; }
__item_at__machine_index_t851   typename Iter::item_t __item_at__ (unsigned i) const { return it[i]; }
__len__machine_index_t852   unsigned __len__ () const { return it.len (); }
__next__machine_index_t853   void __next__ () { ++it; }
__forward__machine_index_t854   void __forward__ (unsigned n) { it += n; }
__prev__machine_index_t855   void __prev__ () { --it; }
__rewind__machine_index_t856   void __rewind__ (unsigned n) { it -= n; }
857 
operator =machine_index_t858   void operator = (unsigned n)
859   {
860     assert (n == 0);
861     is_null = true;
862   }
operator boolmachine_index_t863   explicit operator bool () { return !is_null; }
864 
operator =machine_index_t865   void operator = (const machine_index_t& o)
866   {
867     is_null = o.is_null;
868     unsigned index = (*it).first;
869     unsigned n = (*o.it).first;
870     if (index < n) it += n - index; else if (index > n) it -= index - n;
871   }
operator ==machine_index_t872   bool operator == (const machine_index_t& o) const
873   { return is_null ? o.is_null : !o.is_null && (*it).first == (*o.it).first; }
operator !=machine_index_t874   bool operator != (const machine_index_t& o) const { return !(*this == o); }
875 
876   private:
877   Iter it;
878   bool is_null = false;
879 };
880 struct
881 {
882   template <typename Iter,
883 	    hb_requires (hb_is_iterable (Iter))>
884   machine_index_t<hb_iter_type<Iter>>
operator ()__anon64e509e20108885   operator () (Iter&& it) const
886   { return machine_index_t<hb_iter_type<Iter>> (hb_iter (it)); }
887 }
888 HB_FUNCOBJ (machine_index);
889 
890 
891 
892 static bool
not_ccs_default_ignorable(const hb_glyph_info_t & i)893 not_ccs_default_ignorable (const hb_glyph_info_t &i)
894 { return i.use_category() != USE(CGJ); }
895 
896 static inline void
find_syllables_use(hb_buffer_t * buffer)897 find_syllables_use (hb_buffer_t *buffer)
898 {
899   hb_glyph_info_t *info = buffer->info;
900   auto p =
901     + hb_iter (info, buffer->len)
902     | hb_enumerate
903     | hb_filter ([] (const hb_glyph_info_t &i) { return not_ccs_default_ignorable (i); },
904 		 hb_second)
905     | hb_filter ([&] (const hb_pair_t<unsigned, const hb_glyph_info_t &> p)
906 		 {
907 		   if (p.second.use_category() == USE(ZWNJ))
908 		     for (unsigned i = p.first + 1; i < buffer->len; ++i)
909 		       if (not_ccs_default_ignorable (info[i]))
910 			 return !_hb_glyph_info_is_unicode_mark (&info[i]);
911 		   return true;
912 		 })
913     | hb_enumerate
914     | machine_index
915     ;
916   auto pe = p + p.len ();
917   auto eof = +pe;
918   auto ts = +p;
919   auto te = +p;
920   unsigned int act HB_UNUSED;
921   int cs;
922 
923 #line 924 "hb-ot-shaper-use-machine.hh"
924 	{
925 	cs = use_syllable_machine_start;
926 	ts = 0;
927 	te = 0;
928 	act = 0;
929 	}
930 
931 #line 284 "hb-ot-shaper-use-machine.rl"
932 
933 
934   unsigned int syllable_serial = 1;
935 
936 #line 937 "hb-ot-shaper-use-machine.hh"
937 	{
938 	int _slen;
939 	int _trans;
940 	const unsigned char *_keys;
941 	const unsigned char *_inds;
942 	if ( p == pe )
943 		goto _test_eof;
944 _resume:
945 	switch ( _use_syllable_machine_from_state_actions[cs] ) {
946 	case 3:
947 #line 1 "NONE"
948 	{ts = p;}
949 	break;
950 #line 951 "hb-ot-shaper-use-machine.hh"
951 	}
952 
953 	_keys = _use_syllable_machine_trans_keys + (cs<<1);
954 	_inds = _use_syllable_machine_indicies + _use_syllable_machine_index_offsets[cs];
955 
956 	_slen = _use_syllable_machine_key_spans[cs];
957 	_trans = _inds[ _slen > 0 && _keys[0] <=( (*p).second.second.use_category()) &&
958 		( (*p).second.second.use_category()) <= _keys[1] ?
959 		( (*p).second.second.use_category()) - _keys[0] : _slen ];
960 
961 _eof_trans:
962 	cs = _use_syllable_machine_trans_targs[_trans];
963 
964 	if ( _use_syllable_machine_trans_actions[_trans] == 0 )
965 		goto _again;
966 
967 	switch ( _use_syllable_machine_trans_actions[_trans] ) {
968 	case 6:
969 #line 1 "NONE"
970 	{te = p+1;}
971 	break;
972 	case 14:
973 #line 172 "hb-ot-shaper-use-machine.rl"
974 	{te = p+1;{ found_syllable (use_virama_terminated_cluster); }}
975 	break;
976 	case 12:
977 #line 173 "hb-ot-shaper-use-machine.rl"
978 	{te = p+1;{ found_syllable (use_sakot_terminated_cluster); }}
979 	break;
980 	case 10:
981 #line 174 "hb-ot-shaper-use-machine.rl"
982 	{te = p+1;{ found_syllable (use_standard_cluster); }}
983 	break;
984 	case 18:
985 #line 175 "hb-ot-shaper-use-machine.rl"
986 	{te = p+1;{ found_syllable (use_number_joiner_terminated_cluster); }}
987 	break;
988 	case 16:
989 #line 176 "hb-ot-shaper-use-machine.rl"
990 	{te = p+1;{ found_syllable (use_numeral_cluster); }}
991 	break;
992 	case 8:
993 #line 177 "hb-ot-shaper-use-machine.rl"
994 	{te = p+1;{ found_syllable (use_symbol_cluster); }}
995 	break;
996 	case 22:
997 #line 178 "hb-ot-shaper-use-machine.rl"
998 	{te = p+1;{ found_syllable (use_hieroglyph_cluster); }}
999 	break;
1000 	case 5:
1001 #line 179 "hb-ot-shaper-use-machine.rl"
1002 	{te = p+1;{ found_syllable (use_broken_cluster); buffer->scratch_flags |= HB_BUFFER_SCRATCH_FLAG_HAS_BROKEN_SYLLABLE; }}
1003 	break;
1004 	case 4:
1005 #line 180 "hb-ot-shaper-use-machine.rl"
1006 	{te = p+1;{ found_syllable (use_non_cluster); }}
1007 	break;
1008 	case 13:
1009 #line 172 "hb-ot-shaper-use-machine.rl"
1010 	{te = p;p--;{ found_syllable (use_virama_terminated_cluster); }}
1011 	break;
1012 	case 11:
1013 #line 173 "hb-ot-shaper-use-machine.rl"
1014 	{te = p;p--;{ found_syllable (use_sakot_terminated_cluster); }}
1015 	break;
1016 	case 9:
1017 #line 174 "hb-ot-shaper-use-machine.rl"
1018 	{te = p;p--;{ found_syllable (use_standard_cluster); }}
1019 	break;
1020 	case 17:
1021 #line 175 "hb-ot-shaper-use-machine.rl"
1022 	{te = p;p--;{ found_syllable (use_number_joiner_terminated_cluster); }}
1023 	break;
1024 	case 15:
1025 #line 176 "hb-ot-shaper-use-machine.rl"
1026 	{te = p;p--;{ found_syllable (use_numeral_cluster); }}
1027 	break;
1028 	case 7:
1029 #line 177 "hb-ot-shaper-use-machine.rl"
1030 	{te = p;p--;{ found_syllable (use_symbol_cluster); }}
1031 	break;
1032 	case 21:
1033 #line 178 "hb-ot-shaper-use-machine.rl"
1034 	{te = p;p--;{ found_syllable (use_hieroglyph_cluster); }}
1035 	break;
1036 	case 19:
1037 #line 179 "hb-ot-shaper-use-machine.rl"
1038 	{te = p;p--;{ found_syllable (use_broken_cluster); buffer->scratch_flags |= HB_BUFFER_SCRATCH_FLAG_HAS_BROKEN_SYLLABLE; }}
1039 	break;
1040 	case 20:
1041 #line 180 "hb-ot-shaper-use-machine.rl"
1042 	{te = p;p--;{ found_syllable (use_non_cluster); }}
1043 	break;
1044 	case 1:
1045 #line 177 "hb-ot-shaper-use-machine.rl"
1046 	{{p = ((te))-1;}{ found_syllable (use_symbol_cluster); }}
1047 	break;
1048 #line 1049 "hb-ot-shaper-use-machine.hh"
1049 	}
1050 
1051 _again:
1052 	switch ( _use_syllable_machine_to_state_actions[cs] ) {
1053 	case 2:
1054 #line 1 "NONE"
1055 	{ts = 0;}
1056 	break;
1057 #line 1058 "hb-ot-shaper-use-machine.hh"
1058 	}
1059 
1060 	if ( ++p != pe )
1061 		goto _resume;
1062 	_test_eof: {}
1063 	if ( p == eof )
1064 	{
1065 	if ( _use_syllable_machine_eof_trans[cs] > 0 ) {
1066 		_trans = _use_syllable_machine_eof_trans[cs] - 1;
1067 		goto _eof_trans;
1068 	}
1069 	}
1070 
1071 	}
1072 
1073 #line 289 "hb-ot-shaper-use-machine.rl"
1074 
1075 }
1076 
1077 #undef found_syllable
1078 
1079 #endif /* HB_OT_SHAPER_USE_MACHINE_HH */
1080