1
2#line 1 "hb-buffer-deserialize-json.rl"
3/*
4 * Copyright © 2013  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_BUFFER_DESERIALIZE_JSON_HH
30#define HB_BUFFER_DESERIALIZE_JSON_HH
31
32#include "hb-private.hh"
33
34
35#line 36 "hb-buffer-deserialize-json.hh"
36static const unsigned char _deserialize_json_trans_keys[] = {
37	0u, 0u, 9u, 123u, 9u, 34u, 97u, 103u, 120u, 121u, 34u, 34u, 9u, 58u, 9u, 57u,
38	48u, 57u, 9u, 125u, 9u, 125u, 9u, 125u, 34u, 34u, 9u, 58u, 9u, 57u, 48u, 57u,
39	9u, 125u, 9u, 125u, 108u, 108u, 34u, 34u, 9u, 58u, 9u, 57u, 9u, 125u, 9u, 125u,
40	120u, 121u, 34u, 34u, 9u, 58u, 9u, 57u, 48u, 57u, 9u, 125u, 9u, 125u, 34u, 34u,
41	9u, 58u, 9u, 57u, 48u, 57u, 9u, 125u, 9u, 125u, 34u, 34u, 9u, 58u, 9u, 57u,
42	65u, 122u, 34u, 122u, 9u, 125u, 9u, 125u, 9u, 93u, 9u, 123u, 0u, 0u, 0
43};
44
45static const char _deserialize_json_key_spans[] = {
46	0, 115, 26, 7, 2, 1, 50, 49,
47	10, 117, 117, 117, 1, 50, 49, 10,
48	117, 117, 1, 1, 50, 49, 117, 117,
49	2, 1, 50, 49, 10, 117, 117, 1,
50	50, 49, 10, 117, 117, 1, 50, 49,
51	58, 89, 117, 117, 85, 115, 0
52};
53
54static const short _deserialize_json_index_offsets[] = {
55	0, 0, 116, 143, 151, 154, 156, 207,
56	257, 268, 386, 504, 622, 624, 675, 725,
57	736, 854, 972, 974, 976, 1027, 1077, 1195,
58	1313, 1316, 1318, 1369, 1419, 1430, 1548, 1666,
59	1668, 1719, 1769, 1780, 1898, 2016, 2018, 2069,
60	2119, 2178, 2268, 2386, 2504, 2590, 2706
61};
62
63static const char _deserialize_json_indicies[] = {
64	0, 0, 0, 0, 0, 1, 1,
65	1, 1, 1, 1, 1, 1, 1, 1,
66	1, 1, 1, 1, 1, 1, 1, 1,
67	0, 1, 1, 1, 1, 1, 1, 1,
68	1, 1, 1, 1, 1, 1, 1, 1,
69	1, 1, 1, 1, 1, 1, 1, 1,
70	1, 1, 1, 1, 1, 1, 1, 1,
71	1, 1, 1, 1, 1, 1, 1, 1,
72	1, 1, 1, 1, 1, 1, 1, 1,
73	1, 1, 1, 1, 1, 1, 1, 1,
74	1, 1, 1, 1, 1, 1, 1, 1,
75	1, 1, 1, 1, 1, 1, 1, 1,
76	1, 1, 1, 1, 1, 1, 1, 1,
77	1, 1, 1, 1, 1, 1, 1, 1,
78	1, 1, 1, 2, 1, 3, 3, 3,
79	3, 3, 1, 1, 1, 1, 1, 1,
80	1, 1, 1, 1, 1, 1, 1, 1,
81	1, 1, 1, 1, 3, 1, 4, 1,
82	5, 1, 6, 7, 1, 1, 8, 1,
83	9, 10, 1, 11, 1, 11, 11, 11,
84	11, 11, 1, 1, 1, 1, 1, 1,
85	1, 1, 1, 1, 1, 1, 1, 1,
86	1, 1, 1, 1, 11, 1, 1, 1,
87	1, 1, 1, 1, 1, 1, 1, 1,
88	1, 1, 1, 1, 1, 1, 1, 1,
89	1, 1, 1, 1, 1, 1, 12, 1,
90	12, 12, 12, 12, 12, 1, 1, 1,
91	1, 1, 1, 1, 1, 1, 1, 1,
92	1, 1, 1, 1, 1, 1, 1, 12,
93	1, 1, 1, 1, 1, 1, 1, 1,
94	1, 1, 1, 1, 13, 1, 1, 14,
95	15, 15, 15, 15, 15, 15, 15, 15,
96	15, 1, 16, 17, 17, 17, 17, 17,
97	17, 17, 17, 17, 1, 18, 18, 18,
98	18, 18, 1, 1, 1, 1, 1, 1,
99	1, 1, 1, 1, 1, 1, 1, 1,
100	1, 1, 1, 1, 18, 1, 1, 1,
101	1, 1, 1, 1, 1, 1, 1, 1,
102	19, 1, 1, 1, 1, 1, 1, 1,
103	1, 1, 1, 1, 1, 1, 1, 1,
104	1, 1, 1, 1, 1, 1, 1, 1,
105	1, 1, 1, 1, 1, 1, 1, 1,
106	1, 1, 1, 1, 1, 1, 1, 1,
107	1, 1, 1, 1, 1, 1, 1, 1,
108	1, 1, 1, 1, 1, 1, 1, 1,
109	1, 1, 1, 1, 1, 1, 1, 1,
110	1, 1, 1, 1, 1, 1, 1, 1,
111	1, 1, 1, 1, 1, 1, 1, 1,
112	1, 20, 1, 21, 21, 21, 21, 21,
113	1, 1, 1, 1, 1, 1, 1, 1,
114	1, 1, 1, 1, 1, 1, 1, 1,
115	1, 1, 21, 1, 1, 1, 1, 1,
116	1, 1, 1, 1, 1, 1, 3, 1,
117	1, 1, 1, 1, 1, 1, 1, 1,
118	1, 1, 1, 1, 1, 1, 1, 1,
119	1, 1, 1, 1, 1, 1, 1, 1,
120	1, 1, 1, 1, 1, 1, 1, 1,
121	1, 1, 1, 1, 1, 1, 1, 1,
122	1, 1, 1, 1, 1, 1, 1, 1,
123	1, 1, 1, 1, 1, 1, 1, 1,
124	1, 1, 1, 1, 1, 1, 1, 1,
125	1, 1, 1, 1, 1, 1, 1, 1,
126	1, 1, 1, 1, 1, 1, 1, 22,
127	1, 18, 18, 18, 18, 18, 1, 1,
128	1, 1, 1, 1, 1, 1, 1, 1,
129	1, 1, 1, 1, 1, 1, 1, 1,
130	18, 1, 1, 1, 1, 1, 1, 1,
131	1, 1, 1, 1, 19, 1, 1, 1,
132	17, 17, 17, 17, 17, 17, 17, 17,
133	17, 17, 1, 1, 1, 1, 1, 1,
134	1, 1, 1, 1, 1, 1, 1, 1,
135	1, 1, 1, 1, 1, 1, 1, 1,
136	1, 1, 1, 1, 1, 1, 1, 1,
137	1, 1, 1, 1, 1, 1, 1, 1,
138	1, 1, 1, 1, 1, 1, 1, 1,
139	1, 1, 1, 1, 1, 1, 1, 1,
140	1, 1, 1, 1, 1, 1, 1, 1,
141	1, 1, 1, 1, 1, 20, 1, 23,
142	1, 23, 23, 23, 23, 23, 1, 1,
143	1, 1, 1, 1, 1, 1, 1, 1,
144	1, 1, 1, 1, 1, 1, 1, 1,
145	23, 1, 1, 1, 1, 1, 1, 1,
146	1, 1, 1, 1, 1, 1, 1, 1,
147	1, 1, 1, 1, 1, 1, 1, 1,
148	1, 1, 24, 1, 24, 24, 24, 24,
149	24, 1, 1, 1, 1, 1, 1, 1,
150	1, 1, 1, 1, 1, 1, 1, 1,
151	1, 1, 1, 24, 1, 1, 1, 1,
152	1, 1, 1, 1, 1, 1, 1, 1,
153	25, 1, 1, 26, 27, 27, 27, 27,
154	27, 27, 27, 27, 27, 1, 28, 29,
155	29, 29, 29, 29, 29, 29, 29, 29,
156	1, 30, 30, 30, 30, 30, 1, 1,
157	1, 1, 1, 1, 1, 1, 1, 1,
158	1, 1, 1, 1, 1, 1, 1, 1,
159	30, 1, 1, 1, 1, 1, 1, 1,
160	1, 1, 1, 1, 31, 1, 1, 1,
161	1, 1, 1, 1, 1, 1, 1, 1,
162	1, 1, 1, 1, 1, 1, 1, 1,
163	1, 1, 1, 1, 1, 1, 1, 1,
164	1, 1, 1, 1, 1, 1, 1, 1,
165	1, 1, 1, 1, 1, 1, 1, 1,
166	1, 1, 1, 1, 1, 1, 1, 1,
167	1, 1, 1, 1, 1, 1, 1, 1,
168	1, 1, 1, 1, 1, 1, 1, 1,
169	1, 1, 1, 1, 1, 1, 1, 1,
170	1, 1, 1, 1, 1, 32, 1, 30,
171	30, 30, 30, 30, 1, 1, 1, 1,
172	1, 1, 1, 1, 1, 1, 1, 1,
173	1, 1, 1, 1, 1, 1, 30, 1,
174	1, 1, 1, 1, 1, 1, 1, 1,
175	1, 1, 31, 1, 1, 1, 29, 29,
176	29, 29, 29, 29, 29, 29, 29, 29,
177	1, 1, 1, 1, 1, 1, 1, 1,
178	1, 1, 1, 1, 1, 1, 1, 1,
179	1, 1, 1, 1, 1, 1, 1, 1,
180	1, 1, 1, 1, 1, 1, 1, 1,
181	1, 1, 1, 1, 1, 1, 1, 1,
182	1, 1, 1, 1, 1, 1, 1, 1,
183	1, 1, 1, 1, 1, 1, 1, 1,
184	1, 1, 1, 1, 1, 1, 1, 1,
185	1, 1, 1, 32, 1, 33, 1, 34,
186	1, 34, 34, 34, 34, 34, 1, 1,
187	1, 1, 1, 1, 1, 1, 1, 1,
188	1, 1, 1, 1, 1, 1, 1, 1,
189	34, 1, 1, 1, 1, 1, 1, 1,
190	1, 1, 1, 1, 1, 1, 1, 1,
191	1, 1, 1, 1, 1, 1, 1, 1,
192	1, 1, 35, 1, 35, 35, 35, 35,
193	35, 1, 1, 1, 1, 1, 1, 1,
194	1, 1, 1, 1, 1, 1, 1, 1,
195	1, 1, 1, 35, 1, 1, 1, 1,
196	1, 1, 1, 1, 1, 1, 1, 1,
197	1, 1, 1, 36, 37, 37, 37, 37,
198	37, 37, 37, 37, 37, 1, 38, 38,
199	38, 38, 38, 1, 1, 1, 1, 1,
200	1, 1, 1, 1, 1, 1, 1, 1,
201	1, 1, 1, 1, 1, 38, 1, 1,
202	1, 1, 1, 1, 1, 1, 1, 1,
203	1, 39, 1, 1, 1, 1, 1, 1,
204	1, 1, 1, 1, 1, 1, 1, 1,
205	1, 1, 1, 1, 1, 1, 1, 1,
206	1, 1, 1, 1, 1, 1, 1, 1,
207	1, 1, 1, 1, 1, 1, 1, 1,
208	1, 1, 1, 1, 1, 1, 1, 1,
209	1, 1, 1, 1, 1, 1, 1, 1,
210	1, 1, 1, 1, 1, 1, 1, 1,
211	1, 1, 1, 1, 1, 1, 1, 1,
212	1, 1, 1, 1, 1, 1, 1, 1,
213	1, 1, 40, 1, 38, 38, 38, 38,
214	38, 1, 1, 1, 1, 1, 1, 1,
215	1, 1, 1, 1, 1, 1, 1, 1,
216	1, 1, 1, 38, 1, 1, 1, 1,
217	1, 1, 1, 1, 1, 1, 1, 39,
218	1, 1, 1, 41, 41, 41, 41, 41,
219	41, 41, 41, 41, 41, 1, 1, 1,
220	1, 1, 1, 1, 1, 1, 1, 1,
221	1, 1, 1, 1, 1, 1, 1, 1,
222	1, 1, 1, 1, 1, 1, 1, 1,
223	1, 1, 1, 1, 1, 1, 1, 1,
224	1, 1, 1, 1, 1, 1, 1, 1,
225	1, 1, 1, 1, 1, 1, 1, 1,
226	1, 1, 1, 1, 1, 1, 1, 1,
227	1, 1, 1, 1, 1, 1, 1, 1,
228	40, 1, 42, 43, 1, 44, 1, 44,
229	44, 44, 44, 44, 1, 1, 1, 1,
230	1, 1, 1, 1, 1, 1, 1, 1,
231	1, 1, 1, 1, 1, 1, 44, 1,
232	1, 1, 1, 1, 1, 1, 1, 1,
233	1, 1, 1, 1, 1, 1, 1, 1,
234	1, 1, 1, 1, 1, 1, 1, 1,
235	45, 1, 45, 45, 45, 45, 45, 1,
236	1, 1, 1, 1, 1, 1, 1, 1,
237	1, 1, 1, 1, 1, 1, 1, 1,
238	1, 45, 1, 1, 1, 1, 1, 1,
239	1, 1, 1, 1, 1, 1, 46, 1,
240	1, 47, 48, 48, 48, 48, 48, 48,
241	48, 48, 48, 1, 49, 50, 50, 50,
242	50, 50, 50, 50, 50, 50, 1, 51,
243	51, 51, 51, 51, 1, 1, 1, 1,
244	1, 1, 1, 1, 1, 1, 1, 1,
245	1, 1, 1, 1, 1, 1, 51, 1,
246	1, 1, 1, 1, 1, 1, 1, 1,
247	1, 1, 52, 1, 1, 1, 1, 1,
248	1, 1, 1, 1, 1, 1, 1, 1,
249	1, 1, 1, 1, 1, 1, 1, 1,
250	1, 1, 1, 1, 1, 1, 1, 1,
251	1, 1, 1, 1, 1, 1, 1, 1,
252	1, 1, 1, 1, 1, 1, 1, 1,
253	1, 1, 1, 1, 1, 1, 1, 1,
254	1, 1, 1, 1, 1, 1, 1, 1,
255	1, 1, 1, 1, 1, 1, 1, 1,
256	1, 1, 1, 1, 1, 1, 1, 1,
257	1, 1, 1, 53, 1, 51, 51, 51,
258	51, 51, 1, 1, 1, 1, 1, 1,
259	1, 1, 1, 1, 1, 1, 1, 1,
260	1, 1, 1, 1, 51, 1, 1, 1,
261	1, 1, 1, 1, 1, 1, 1, 1,
262	52, 1, 1, 1, 50, 50, 50, 50,
263	50, 50, 50, 50, 50, 50, 1, 1,
264	1, 1, 1, 1, 1, 1, 1, 1,
265	1, 1, 1, 1, 1, 1, 1, 1,
266	1, 1, 1, 1, 1, 1, 1, 1,
267	1, 1, 1, 1, 1, 1, 1, 1,
268	1, 1, 1, 1, 1, 1, 1, 1,
269	1, 1, 1, 1, 1, 1, 1, 1,
270	1, 1, 1, 1, 1, 1, 1, 1,
271	1, 1, 1, 1, 1, 1, 1, 1,
272	1, 53, 1, 54, 1, 54, 54, 54,
273	54, 54, 1, 1, 1, 1, 1, 1,
274	1, 1, 1, 1, 1, 1, 1, 1,
275	1, 1, 1, 1, 54, 1, 1, 1,
276	1, 1, 1, 1, 1, 1, 1, 1,
277	1, 1, 1, 1, 1, 1, 1, 1,
278	1, 1, 1, 1, 1, 1, 55, 1,
279	55, 55, 55, 55, 55, 1, 1, 1,
280	1, 1, 1, 1, 1, 1, 1, 1,
281	1, 1, 1, 1, 1, 1, 1, 55,
282	1, 1, 1, 1, 1, 1, 1, 1,
283	1, 1, 1, 1, 56, 1, 1, 57,
284	58, 58, 58, 58, 58, 58, 58, 58,
285	58, 1, 59, 60, 60, 60, 60, 60,
286	60, 60, 60, 60, 1, 61, 61, 61,
287	61, 61, 1, 1, 1, 1, 1, 1,
288	1, 1, 1, 1, 1, 1, 1, 1,
289	1, 1, 1, 1, 61, 1, 1, 1,
290	1, 1, 1, 1, 1, 1, 1, 1,
291	62, 1, 1, 1, 1, 1, 1, 1,
292	1, 1, 1, 1, 1, 1, 1, 1,
293	1, 1, 1, 1, 1, 1, 1, 1,
294	1, 1, 1, 1, 1, 1, 1, 1,
295	1, 1, 1, 1, 1, 1, 1, 1,
296	1, 1, 1, 1, 1, 1, 1, 1,
297	1, 1, 1, 1, 1, 1, 1, 1,
298	1, 1, 1, 1, 1, 1, 1, 1,
299	1, 1, 1, 1, 1, 1, 1, 1,
300	1, 1, 1, 1, 1, 1, 1, 1,
301	1, 63, 1, 61, 61, 61, 61, 61,
302	1, 1, 1, 1, 1, 1, 1, 1,
303	1, 1, 1, 1, 1, 1, 1, 1,
304	1, 1, 61, 1, 1, 1, 1, 1,
305	1, 1, 1, 1, 1, 1, 62, 1,
306	1, 1, 60, 60, 60, 60, 60, 60,
307	60, 60, 60, 60, 1, 1, 1, 1,
308	1, 1, 1, 1, 1, 1, 1, 1,
309	1, 1, 1, 1, 1, 1, 1, 1,
310	1, 1, 1, 1, 1, 1, 1, 1,
311	1, 1, 1, 1, 1, 1, 1, 1,
312	1, 1, 1, 1, 1, 1, 1, 1,
313	1, 1, 1, 1, 1, 1, 1, 1,
314	1, 1, 1, 1, 1, 1, 1, 1,
315	1, 1, 1, 1, 1, 1, 1, 63,
316	1, 64, 1, 64, 64, 64, 64, 64,
317	1, 1, 1, 1, 1, 1, 1, 1,
318	1, 1, 1, 1, 1, 1, 1, 1,
319	1, 1, 64, 1, 1, 1, 1, 1,
320	1, 1, 1, 1, 1, 1, 1, 1,
321	1, 1, 1, 1, 1, 1, 1, 1,
322	1, 1, 1, 1, 65, 1, 65, 65,
323	65, 65, 65, 1, 1, 1, 1, 1,
324	1, 1, 1, 1, 1, 1, 1, 1,
325	1, 1, 1, 1, 1, 65, 1, 66,
326	1, 1, 1, 1, 1, 1, 1, 1,
327	1, 1, 1, 1, 1, 67, 68, 68,
328	68, 68, 68, 68, 68, 68, 68, 1,
329	69, 69, 69, 69, 69, 69, 69, 69,
330	69, 69, 69, 69, 69, 69, 69, 69,
331	69, 69, 69, 69, 69, 69, 69, 69,
332	69, 69, 1, 1, 1, 1, 1, 1,
333	69, 69, 69, 69, 69, 69, 69, 69,
334	69, 69, 69, 69, 69, 69, 69, 69,
335	69, 69, 69, 69, 69, 69, 69, 69,
336	69, 69, 1, 70, 1, 1, 1, 1,
337	1, 1, 1, 1, 1, 1, 71, 71,
338	1, 71, 71, 71, 71, 71, 71, 71,
339	71, 71, 71, 1, 1, 1, 1, 1,
340	1, 1, 71, 71, 71, 71, 71, 71,
341	71, 71, 71, 71, 71, 71, 71, 71,
342	71, 71, 71, 71, 71, 71, 71, 71,
343	71, 71, 71, 71, 1, 1, 1, 1,
344	71, 1, 71, 71, 71, 71, 71, 71,
345	71, 71, 71, 71, 71, 71, 71, 71,
346	71, 71, 71, 71, 71, 71, 71, 71,
347	71, 71, 71, 71, 1, 72, 72, 72,
348	72, 72, 1, 1, 1, 1, 1, 1,
349	1, 1, 1, 1, 1, 1, 1, 1,
350	1, 1, 1, 1, 72, 1, 1, 1,
351	1, 1, 1, 1, 1, 1, 1, 1,
352	73, 1, 1, 1, 1, 1, 1, 1,
353	1, 1, 1, 1, 1, 1, 1, 1,
354	1, 1, 1, 1, 1, 1, 1, 1,
355	1, 1, 1, 1, 1, 1, 1, 1,
356	1, 1, 1, 1, 1, 1, 1, 1,
357	1, 1, 1, 1, 1, 1, 1, 1,
358	1, 1, 1, 1, 1, 1, 1, 1,
359	1, 1, 1, 1, 1, 1, 1, 1,
360	1, 1, 1, 1, 1, 1, 1, 1,
361	1, 1, 1, 1, 1, 1, 1, 1,
362	1, 74, 1, 72, 72, 72, 72, 72,
363	1, 1, 1, 1, 1, 1, 1, 1,
364	1, 1, 1, 1, 1, 1, 1, 1,
365	1, 1, 72, 1, 1, 1, 1, 1,
366	1, 1, 1, 1, 1, 1, 73, 1,
367	1, 1, 75, 75, 75, 75, 75, 75,
368	75, 75, 75, 75, 1, 1, 1, 1,
369	1, 1, 1, 1, 1, 1, 1, 1,
370	1, 1, 1, 1, 1, 1, 1, 1,
371	1, 1, 1, 1, 1, 1, 1, 1,
372	1, 1, 1, 1, 1, 1, 1, 1,
373	1, 1, 1, 1, 1, 1, 1, 1,
374	1, 1, 1, 1, 1, 1, 1, 1,
375	1, 1, 1, 1, 1, 1, 1, 1,
376	1, 1, 1, 1, 1, 1, 1, 74,
377	1, 76, 76, 76, 76, 76, 1, 1,
378	1, 1, 1, 1, 1, 1, 1, 1,
379	1, 1, 1, 1, 1, 1, 1, 1,
380	76, 1, 1, 1, 1, 1, 1, 1,
381	1, 1, 1, 1, 77, 1, 1, 1,
382	1, 1, 1, 1, 1, 1, 1, 1,
383	1, 1, 1, 1, 1, 1, 1, 1,
384	1, 1, 1, 1, 1, 1, 1, 1,
385	1, 1, 1, 1, 1, 1, 1, 1,
386	1, 1, 1, 1, 1, 1, 1, 1,
387	1, 1, 1, 1, 1, 78, 1, 0,
388	0, 0, 0, 0, 1, 1, 1, 1,
389	1, 1, 1, 1, 1, 1, 1, 1,
390	1, 1, 1, 1, 1, 1, 0, 1,
391	1, 1, 1, 1, 1, 1, 1, 1,
392	1, 1, 1, 1, 1, 1, 1, 1,
393	1, 1, 1, 1, 1, 1, 1, 1,
394	1, 1, 1, 1, 1, 1, 1, 1,
395	1, 1, 1, 1, 1, 1, 1, 1,
396	1, 1, 1, 1, 1, 1, 1, 1,
397	1, 1, 1, 1, 1, 1, 1, 1,
398	1, 1, 1, 1, 1, 1, 1, 1,
399	1, 1, 1, 1, 1, 1, 1, 1,
400	1, 1, 1, 1, 1, 1, 1, 1,
401	1, 1, 1, 1, 1, 1, 1, 1,
402	1, 2, 1, 1, 0
403};
404
405static const char _deserialize_json_trans_targs[] = {
406	1, 0, 2, 2, 3, 4, 18, 24,
407	37, 5, 12, 6, 7, 8, 9, 11,
408	9, 11, 10, 2, 44, 10, 44, 13,
409	14, 15, 16, 17, 16, 17, 10, 2,
410	44, 19, 20, 21, 22, 23, 10, 2,
411	44, 23, 25, 31, 26, 27, 28, 29,
412	30, 29, 30, 10, 2, 44, 32, 33,
413	34, 35, 36, 35, 36, 10, 2, 44,
414	38, 39, 40, 42, 43, 41, 10, 41,
415	10, 2, 44, 43, 44, 45, 46
416};
417
418static const char _deserialize_json_trans_actions[] = {
419	0, 0, 1, 0, 0, 0, 0, 0,
420	0, 0, 0, 0, 0, 2, 2, 2,
421	0, 0, 3, 3, 4, 0, 5, 0,
422	0, 2, 2, 2, 0, 0, 6, 6,
423	7, 0, 0, 0, 2, 2, 8, 8,
424	9, 0, 0, 0, 0, 0, 2, 2,
425	2, 0, 0, 10, 10, 11, 0, 0,
426	2, 2, 2, 0, 0, 12, 12, 13,
427	0, 0, 0, 2, 2, 2, 14, 0,
428	15, 15, 16, 0, 0, 0, 0
429};
430
431static const int deserialize_json_start = 1;
432static const int deserialize_json_first_final = 44;
433static const int deserialize_json_error = 0;
434
435static const int deserialize_json_en_main = 1;
436
437
438#line 97 "hb-buffer-deserialize-json.rl"
439
440
441static hb_bool_t
442_hb_buffer_deserialize_glyphs_json (hb_buffer_t *buffer,
443				    const char *buf,
444				    unsigned int buf_len,
445				    const char **end_ptr,
446				    hb_font_t *font)
447{
448  const char *p = buf, *pe = buf + buf_len;
449
450  /* Ensure we have positions. */
451  (void) hb_buffer_get_glyph_positions (buffer, NULL);
452
453  while (p < pe && ISSPACE (*p))
454    p++;
455  if (p < pe && *p == (buffer->len ? ',' : '['))
456  {
457    *end_ptr = ++p;
458  }
459
460  const char *tok = NULL;
461  int cs;
462  hb_glyph_info_t info = {0};
463  hb_glyph_position_t pos = {0};
464
465#line 466 "hb-buffer-deserialize-json.hh"
466	{
467	cs = deserialize_json_start;
468	}
469
470#line 471 "hb-buffer-deserialize-json.hh"
471	{
472	int _slen;
473	int _trans;
474	const unsigned char *_keys;
475	const char *_inds;
476	if ( p == pe )
477		goto _test_eof;
478	if ( cs == 0 )
479		goto _out;
480_resume:
481	_keys = _deserialize_json_trans_keys + (cs<<1);
482	_inds = _deserialize_json_indicies + _deserialize_json_index_offsets[cs];
483
484	_slen = _deserialize_json_key_spans[cs];
485	_trans = _inds[ _slen > 0 && _keys[0] <=(*p) &&
486		(*p) <= _keys[1] ?
487		(*p) - _keys[0] : _slen ];
488
489	cs = _deserialize_json_trans_targs[_trans];
490
491	if ( _deserialize_json_trans_actions[_trans] == 0 )
492		goto _again;
493
494	switch ( _deserialize_json_trans_actions[_trans] ) {
495	case 1:
496#line 38 "hb-buffer-deserialize-json.rl"
497	{
498	memset (&info, 0, sizeof (info));
499	memset (&pos , 0, sizeof (pos ));
500}
501	break;
502	case 5:
503#line 43 "hb-buffer-deserialize-json.rl"
504	{
505	buffer->add_info (info);
506	if (buffer->in_error)
507	  return false;
508	buffer->pos[buffer->len - 1] = pos;
509	*end_ptr = p;
510}
511	break;
512	case 2:
513#line 51 "hb-buffer-deserialize-json.rl"
514	{
515	tok = p;
516}
517	break;
518	case 14:
519#line 55 "hb-buffer-deserialize-json.rl"
520	{
521	if (!hb_font_glyph_from_string (font,
522					tok, p - tok,
523					&info.codepoint))
524	  return false;
525}
526	break;
527	case 15:
528#line 62 "hb-buffer-deserialize-json.rl"
529	{ if (!parse_uint (tok, p, &info.codepoint)) return false; }
530	break;
531	case 8:
532#line 63 "hb-buffer-deserialize-json.rl"
533	{ if (!parse_uint (tok, p, &info.cluster )) return false; }
534	break;
535	case 10:
536#line 64 "hb-buffer-deserialize-json.rl"
537	{ if (!parse_int  (tok, p, &pos.x_offset )) return false; }
538	break;
539	case 12:
540#line 65 "hb-buffer-deserialize-json.rl"
541	{ if (!parse_int  (tok, p, &pos.y_offset )) return false; }
542	break;
543	case 3:
544#line 66 "hb-buffer-deserialize-json.rl"
545	{ if (!parse_int  (tok, p, &pos.x_advance)) return false; }
546	break;
547	case 6:
548#line 67 "hb-buffer-deserialize-json.rl"
549	{ if (!parse_int  (tok, p, &pos.y_advance)) return false; }
550	break;
551	case 16:
552#line 62 "hb-buffer-deserialize-json.rl"
553	{ if (!parse_uint (tok, p, &info.codepoint)) return false; }
554#line 43 "hb-buffer-deserialize-json.rl"
555	{
556	buffer->add_info (info);
557	if (buffer->in_error)
558	  return false;
559	buffer->pos[buffer->len - 1] = pos;
560	*end_ptr = p;
561}
562	break;
563	case 9:
564#line 63 "hb-buffer-deserialize-json.rl"
565	{ if (!parse_uint (tok, p, &info.cluster )) return false; }
566#line 43 "hb-buffer-deserialize-json.rl"
567	{
568	buffer->add_info (info);
569	if (buffer->in_error)
570	  return false;
571	buffer->pos[buffer->len - 1] = pos;
572	*end_ptr = p;
573}
574	break;
575	case 11:
576#line 64 "hb-buffer-deserialize-json.rl"
577	{ if (!parse_int  (tok, p, &pos.x_offset )) return false; }
578#line 43 "hb-buffer-deserialize-json.rl"
579	{
580	buffer->add_info (info);
581	if (buffer->in_error)
582	  return false;
583	buffer->pos[buffer->len - 1] = pos;
584	*end_ptr = p;
585}
586	break;
587	case 13:
588#line 65 "hb-buffer-deserialize-json.rl"
589	{ if (!parse_int  (tok, p, &pos.y_offset )) return false; }
590#line 43 "hb-buffer-deserialize-json.rl"
591	{
592	buffer->add_info (info);
593	if (buffer->in_error)
594	  return false;
595	buffer->pos[buffer->len - 1] = pos;
596	*end_ptr = p;
597}
598	break;
599	case 4:
600#line 66 "hb-buffer-deserialize-json.rl"
601	{ if (!parse_int  (tok, p, &pos.x_advance)) return false; }
602#line 43 "hb-buffer-deserialize-json.rl"
603	{
604	buffer->add_info (info);
605	if (buffer->in_error)
606	  return false;
607	buffer->pos[buffer->len - 1] = pos;
608	*end_ptr = p;
609}
610	break;
611	case 7:
612#line 67 "hb-buffer-deserialize-json.rl"
613	{ if (!parse_int  (tok, p, &pos.y_advance)) return false; }
614#line 43 "hb-buffer-deserialize-json.rl"
615	{
616	buffer->add_info (info);
617	if (buffer->in_error)
618	  return false;
619	buffer->pos[buffer->len - 1] = pos;
620	*end_ptr = p;
621}
622	break;
623#line 624 "hb-buffer-deserialize-json.hh"
624	}
625
626_again:
627	if ( cs == 0 )
628		goto _out;
629	if ( ++p != pe )
630		goto _resume;
631	_test_eof: {}
632	_out: {}
633	}
634
635#line 125 "hb-buffer-deserialize-json.rl"
636
637
638  *end_ptr = p;
639
640  return p == pe && *(p-1) != ']';
641}
642
643#endif /* HB_BUFFER_DESERIALIZE_JSON_HH */
644