oga 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (46) hide show
  1. checksums.yaml +7 -0
  2. data/.yardopts +13 -0
  3. data/LICENSE +19 -0
  4. data/README.md +171 -0
  5. data/doc/DCO.md +25 -0
  6. data/doc/changelog.md +7 -0
  7. data/doc/css/common.css +76 -0
  8. data/doc/migrating_from_nokogiri.md +169 -0
  9. data/ext/c/extconf.rb +13 -0
  10. data/ext/c/lexer.c +1518 -0
  11. data/ext/c/lexer.h +8 -0
  12. data/ext/c/lexer.rl +121 -0
  13. data/ext/c/liboga.c +6 -0
  14. data/ext/c/liboga.h +11 -0
  15. data/ext/java/Liboga.java +14 -0
  16. data/ext/java/org/liboga/xml/Lexer.java +829 -0
  17. data/ext/java/org/liboga/xml/Lexer.rl +151 -0
  18. data/ext/ragel/base_lexer.rl +323 -0
  19. data/lib/oga.rb +43 -0
  20. data/lib/oga/html/parser.rb +25 -0
  21. data/lib/oga/oga.rb +27 -0
  22. data/lib/oga/version.rb +3 -0
  23. data/lib/oga/xml/attribute.rb +111 -0
  24. data/lib/oga/xml/cdata.rb +24 -0
  25. data/lib/oga/xml/character_node.rb +39 -0
  26. data/lib/oga/xml/comment.rb +24 -0
  27. data/lib/oga/xml/doctype.rb +91 -0
  28. data/lib/oga/xml/document.rb +99 -0
  29. data/lib/oga/xml/element.rb +340 -0
  30. data/lib/oga/xml/lexer.rb +399 -0
  31. data/lib/oga/xml/namespace.rb +42 -0
  32. data/lib/oga/xml/node.rb +175 -0
  33. data/lib/oga/xml/node_set.rb +313 -0
  34. data/lib/oga/xml/parser.rb +556 -0
  35. data/lib/oga/xml/processing_instruction.rb +39 -0
  36. data/lib/oga/xml/pull_parser.rb +166 -0
  37. data/lib/oga/xml/querying.rb +32 -0
  38. data/lib/oga/xml/text.rb +16 -0
  39. data/lib/oga/xml/traversal.rb +48 -0
  40. data/lib/oga/xml/xml_declaration.rb +76 -0
  41. data/lib/oga/xpath/evaluator.rb +1748 -0
  42. data/lib/oga/xpath/lexer.rb +2043 -0
  43. data/lib/oga/xpath/node.rb +10 -0
  44. data/lib/oga/xpath/parser.rb +535 -0
  45. data/oga.gemspec +45 -0
  46. metadata +221 -0
@@ -0,0 +1,2043 @@
1
+
2
+ # line 1 "lib/oga/xpath/lexer.rl"
3
+
4
+ # line 3 "lib/oga/xpath/lexer.rl"
5
+ module Oga
6
+ module XPath
7
+ ##
8
+ # Lexer for turning XPath expressions into a set of tokens. Tokens are
9
+ # returned as arrays with every array having two values:
10
+ #
11
+ # 1. The token type as a symbol
12
+ # 2. The token value or nil if there is no value
13
+ #
14
+ # Basic usage of this lexer is as following:
15
+ #
16
+ # lexer = Oga::XPath::Lexer.new('//foo/bar')
17
+ # tokens = lexer.lex
18
+ #
19
+ # Alternatively you can stream tokens instead of returning them as a whole:
20
+ #
21
+ # lexer = Oga::XPath::Lexer.new('//foo/bar')
22
+ #
23
+ # lexer.advance do |type, value|
24
+ #
25
+ # end
26
+ #
27
+ # Unlike the XML lexer the XPath lexer does not support IO instances, it can
28
+ # only lex strings.
29
+ #
30
+ # ## Thread Safety
31
+ #
32
+ # This class keeps track of an internal state. As a result it's not safe to
33
+ # share a single instance between multiple threads. However, you're free to
34
+ # use separate instances per thread as there is no global (= class level)
35
+ # shared state.
36
+ #
37
+ class Lexer
38
+
39
+ # line 40 "lib/oga/xpath/lexer.rb"
40
+ class << self
41
+ attr_accessor :_xpath_lexer_trans_keys
42
+ private :_xpath_lexer_trans_keys, :_xpath_lexer_trans_keys=
43
+ end
44
+ self._xpath_lexer_trans_keys = [
45
+ 0, 0, 32, 32, 32, 32,
46
+ 110, 110, 100, 100, 32,
47
+ 32, 105, 105, 118, 118,
48
+ 32, 32, 111, 111, 100, 100,
49
+ 32, 32, 114, 114, 32,
50
+ 32, 61, 61, 34, 34,
51
+ 42, 122, 39, 39, 43, 57,
52
+ 48, 57, 58, 58, 41,
53
+ 41, 9, 124, 42, 111,
54
+ 0, 0, 0, 0, 0, 0,
55
+ 0, 0, 0, 0, 0,
56
+ 0, 0, 0, 42, 122,
57
+ 45, 122, 42, 122, 45, 122,
58
+ 43, 57, 46, 57, 46,
59
+ 57, 46, 46, 47, 47,
60
+ 61, 61, 0, 0, 0, 0,
61
+ 61, 61, 0, 0, 42,
62
+ 122, 42, 122, 42, 122,
63
+ 42, 122, 42, 122, 42, 122,
64
+ 42, 122, 42, 122, 45,
65
+ 122, 45, 122, 45, 122,
66
+ 45, 122, 45, 122, 45, 122,
67
+ 45, 122, 45, 122, 42,
68
+ 122, 42, 122, 42, 122,
69
+ 42, 122, 42, 122, 42, 122,
70
+ 42, 122, 42, 122, 42,
71
+ 122, 42, 122, 42, 122,
72
+ 42, 122, 42, 122, 42, 122,
73
+ 42, 122, 42, 122, 42,
74
+ 122, 40, 122, 42, 122,
75
+ 42, 122, 42, 122, 42, 122,
76
+ 42, 122, 42, 122, 42,
77
+ 122, 42, 122, 42, 122,
78
+ 42, 122, 42, 122, 42, 122,
79
+ 42, 122, 42, 122, 42,
80
+ 122, 42, 122, 42, 122,
81
+ 42, 122, 45, 122, 45, 122,
82
+ 45, 122, 45, 122, 45,
83
+ 122, 45, 122, 45, 122,
84
+ 42, 122, 42, 122, 42, 122,
85
+ 42, 122, 42, 122, 42,
86
+ 122, 42, 122, 42, 122,
87
+ 42, 122, 42, 122, 42, 122,
88
+ 42, 122, 42, 122, 42,
89
+ 122, 42, 122, 42, 122,
90
+ 42, 122, 42, 122, 42, 122,
91
+ 42, 122, 42, 122, 42,
92
+ 122, 42, 122, 42, 122,
93
+ 42, 122, 42, 122, 45, 122,
94
+ 45, 122, 45, 122, 45,
95
+ 122, 45, 122, 45, 122,
96
+ 45, 122, 45, 122, 45, 122,
97
+ 45, 122, 45, 122, 40,
98
+ 122, 42, 122, 42, 122,
99
+ 42, 122, 42, 122, 42, 122,
100
+ 0, 0, 0
101
+ ]
102
+
103
+ class << self
104
+ attr_accessor :_xpath_lexer_key_spans
105
+ private :_xpath_lexer_key_spans, :_xpath_lexer_key_spans=
106
+ end
107
+ self._xpath_lexer_key_spans = [
108
+ 0, 1, 1, 1, 1, 1, 1, 1,
109
+ 1, 1, 1, 1, 1, 1, 1, 1,
110
+ 81, 1, 15, 10, 1, 1, 116, 70,
111
+ 0, 0, 0, 0, 0, 0, 0, 81,
112
+ 78, 81, 78, 15, 12, 12, 1, 1,
113
+ 1, 0, 0, 1, 0, 81, 81, 81,
114
+ 81, 81, 81, 81, 81, 78, 78, 78,
115
+ 78, 78, 78, 78, 78, 81, 81, 81,
116
+ 81, 81, 81, 81, 81, 81, 81, 81,
117
+ 81, 81, 81, 81, 81, 81, 83, 81,
118
+ 81, 81, 81, 81, 81, 81, 81, 81,
119
+ 81, 81, 81, 81, 81, 81, 81, 81,
120
+ 81, 78, 78, 78, 78, 78, 78, 78,
121
+ 81, 81, 81, 81, 81, 81, 81, 81,
122
+ 81, 81, 81, 81, 81, 81, 81, 81,
123
+ 81, 81, 81, 81, 81, 81, 81, 81,
124
+ 81, 81, 78, 78, 78, 78, 78, 78,
125
+ 78, 78, 78, 78, 78, 83, 81, 81,
126
+ 81, 81, 81, 0
127
+ ]
128
+
129
+ class << self
130
+ attr_accessor :_xpath_lexer_index_offsets
131
+ private :_xpath_lexer_index_offsets, :_xpath_lexer_index_offsets=
132
+ end
133
+ self._xpath_lexer_index_offsets = [
134
+ 0, 0, 2, 4, 6, 8, 10, 12,
135
+ 14, 16, 18, 20, 22, 24, 26, 28,
136
+ 30, 112, 114, 130, 141, 143, 145, 262,
137
+ 333, 334, 335, 336, 337, 338, 339, 340,
138
+ 422, 501, 583, 662, 678, 691, 704, 706,
139
+ 708, 710, 711, 712, 714, 715, 797, 879,
140
+ 961, 1043, 1125, 1207, 1289, 1371, 1450, 1529,
141
+ 1608, 1687, 1766, 1845, 1924, 2003, 2085, 2167,
142
+ 2249, 2331, 2413, 2495, 2577, 2659, 2741, 2823,
143
+ 2905, 2987, 3069, 3151, 3233, 3315, 3397, 3481,
144
+ 3563, 3645, 3727, 3809, 3891, 3973, 4055, 4137,
145
+ 4219, 4301, 4383, 4465, 4547, 4629, 4711, 4793,
146
+ 4875, 4957, 5036, 5115, 5194, 5273, 5352, 5431,
147
+ 5510, 5592, 5674, 5756, 5838, 5920, 6002, 6084,
148
+ 6166, 6248, 6330, 6412, 6494, 6576, 6658, 6740,
149
+ 6822, 6904, 6986, 7068, 7150, 7232, 7314, 7396,
150
+ 7478, 7560, 7642, 7721, 7800, 7879, 7958, 8037,
151
+ 8116, 8195, 8274, 8353, 8432, 8511, 8595, 8677,
152
+ 8759, 8841, 8923, 9005
153
+ ]
154
+
155
+ class << self
156
+ attr_accessor :_xpath_lexer_indicies
157
+ private :_xpath_lexer_indicies, :_xpath_lexer_indicies=
158
+ end
159
+ self._xpath_lexer_indicies = [
160
+ 1, 0, 2, 0, 3, 0, 4, 0,
161
+ 5, 0, 6, 0, 7, 0, 8, 0,
162
+ 9, 0, 10, 0, 11, 0, 12, 0,
163
+ 13, 0, 14, 15, 17, 16, 18, 15,
164
+ 15, 15, 15, 15, 15, 15, 15, 15,
165
+ 15, 15, 15, 15, 15, 15, 15, 15,
166
+ 15, 15, 15, 15, 15, 18, 18, 18,
167
+ 18, 18, 18, 18, 18, 18, 18, 18,
168
+ 18, 18, 18, 18, 18, 18, 18, 18,
169
+ 18, 18, 18, 18, 18, 18, 18, 15,
170
+ 15, 15, 15, 15, 15, 18, 18, 18,
171
+ 18, 18, 18, 18, 18, 18, 18, 18,
172
+ 18, 18, 18, 18, 18, 18, 18, 18,
173
+ 18, 18, 18, 18, 18, 18, 18, 15,
174
+ 17, 19, 21, 20, 21, 20, 20, 22,
175
+ 22, 22, 22, 22, 22, 22, 22, 22,
176
+ 22, 20, 23, 23, 23, 23, 23, 23,
177
+ 23, 23, 23, 23, 20, 25, 24, 26,
178
+ 24, 27, 27, 15, 15, 15, 15, 15,
179
+ 15, 15, 15, 15, 15, 15, 15, 15,
180
+ 15, 15, 15, 15, 15, 15, 15, 15,
181
+ 28, 29, 16, 15, 30, 15, 15, 19,
182
+ 31, 32, 33, 34, 35, 21, 36, 37,
183
+ 22, 22, 22, 22, 22, 22, 22, 22,
184
+ 22, 22, 38, 15, 39, 40, 41, 15,
185
+ 42, 33, 33, 33, 33, 33, 33, 33,
186
+ 33, 33, 33, 33, 33, 33, 33, 33,
187
+ 33, 33, 33, 33, 33, 33, 33, 33,
188
+ 33, 33, 33, 43, 15, 44, 15, 15,
189
+ 15, 45, 33, 46, 47, 33, 48, 33,
190
+ 33, 33, 33, 33, 33, 33, 49, 33,
191
+ 50, 33, 33, 51, 52, 33, 33, 33,
192
+ 33, 33, 33, 15, 53, 15, 55, 54,
193
+ 54, 56, 54, 54, 54, 54, 54, 54,
194
+ 54, 54, 54, 54, 54, 54, 54, 54,
195
+ 54, 54, 54, 54, 54, 54, 54, 54,
196
+ 54, 54, 54, 54, 54, 54, 54, 54,
197
+ 54, 54, 54, 54, 54, 54, 54, 54,
198
+ 54, 54, 54, 54, 54, 54, 54, 54,
199
+ 54, 54, 54, 54, 54, 57, 54, 54,
200
+ 58, 54, 54, 54, 54, 54, 54, 54,
201
+ 54, 59, 54, 60, 54, 61, 62, 63,
202
+ 64, 65, 66, 67, 18, 68, 68, 69,
203
+ 68, 68, 69, 69, 69, 69, 69, 69,
204
+ 69, 69, 69, 69, 68, 68, 68, 68,
205
+ 68, 68, 68, 18, 18, 18, 18, 18,
206
+ 18, 18, 18, 18, 18, 18, 18, 18,
207
+ 18, 18, 18, 18, 18, 18, 18, 18,
208
+ 18, 18, 18, 18, 18, 68, 68, 68,
209
+ 68, 69, 68, 18, 18, 18, 18, 18,
210
+ 18, 18, 18, 18, 18, 18, 18, 18,
211
+ 18, 18, 18, 18, 18, 18, 18, 18,
212
+ 18, 18, 18, 18, 18, 68, 69, 68,
213
+ 68, 69, 69, 69, 69, 69, 69, 69,
214
+ 69, 69, 69, 68, 68, 68, 68, 68,
215
+ 68, 68, 69, 69, 69, 69, 69, 69,
216
+ 69, 69, 69, 69, 69, 69, 69, 69,
217
+ 69, 69, 69, 69, 69, 69, 69, 69,
218
+ 69, 69, 69, 69, 68, 68, 68, 68,
219
+ 69, 68, 69, 69, 69, 69, 69, 69,
220
+ 69, 69, 69, 69, 69, 69, 69, 69,
221
+ 69, 69, 69, 69, 69, 69, 69, 69,
222
+ 69, 69, 69, 69, 68, 33, 70, 70,
223
+ 71, 70, 70, 71, 71, 71, 71, 71,
224
+ 71, 71, 71, 71, 71, 70, 70, 70,
225
+ 70, 70, 70, 70, 33, 33, 33, 33,
226
+ 33, 33, 33, 33, 33, 33, 33, 33,
227
+ 33, 33, 33, 33, 33, 33, 33, 33,
228
+ 33, 33, 33, 33, 33, 33, 70, 70,
229
+ 70, 70, 71, 70, 33, 33, 33, 33,
230
+ 33, 33, 33, 33, 33, 33, 33, 33,
231
+ 33, 33, 33, 33, 33, 33, 33, 33,
232
+ 33, 33, 33, 33, 33, 33, 70, 71,
233
+ 70, 70, 71, 71, 71, 71, 71, 71,
234
+ 71, 71, 71, 71, 70, 70, 70, 70,
235
+ 70, 70, 70, 71, 71, 71, 71, 71,
236
+ 71, 71, 71, 71, 71, 71, 71, 71,
237
+ 71, 71, 71, 71, 71, 71, 71, 71,
238
+ 71, 71, 71, 71, 71, 70, 70, 70,
239
+ 70, 71, 70, 71, 71, 71, 71, 71,
240
+ 71, 71, 71, 71, 71, 71, 71, 71,
241
+ 71, 71, 71, 71, 71, 71, 71, 71,
242
+ 71, 71, 71, 71, 71, 70, 73, 72,
243
+ 73, 72, 72, 74, 74, 74, 74, 74,
244
+ 74, 74, 74, 74, 74, 72, 76, 75,
245
+ 22, 22, 22, 22, 22, 22, 22, 22,
246
+ 22, 22, 75, 76, 77, 23, 23, 23,
247
+ 23, 23, 23, 23, 23, 23, 23, 77,
248
+ 42, 78, 42, 54, 80, 79, 81, 82,
249
+ 84, 83, 85, 33, 70, 70, 71, 70,
250
+ 70, 71, 71, 71, 71, 71, 71, 71,
251
+ 71, 71, 71, 70, 70, 70, 70, 70,
252
+ 70, 70, 33, 33, 33, 33, 33, 33,
253
+ 33, 33, 33, 33, 33, 33, 33, 33,
254
+ 33, 33, 33, 33, 33, 33, 33, 33,
255
+ 33, 33, 33, 33, 70, 70, 70, 70,
256
+ 71, 70, 33, 33, 33, 33, 33, 33,
257
+ 33, 33, 33, 33, 33, 33, 33, 86,
258
+ 33, 33, 33, 33, 33, 87, 33, 33,
259
+ 33, 33, 33, 33, 70, 33, 70, 70,
260
+ 71, 70, 70, 71, 71, 71, 71, 71,
261
+ 71, 71, 71, 71, 71, 70, 70, 70,
262
+ 70, 70, 70, 70, 33, 33, 33, 33,
263
+ 33, 33, 33, 33, 33, 33, 33, 33,
264
+ 33, 33, 33, 33, 33, 33, 33, 33,
265
+ 33, 33, 33, 33, 33, 33, 70, 70,
266
+ 70, 70, 71, 70, 33, 33, 88, 33,
267
+ 33, 33, 33, 33, 33, 33, 33, 33,
268
+ 33, 33, 33, 33, 33, 33, 33, 33,
269
+ 33, 33, 33, 33, 33, 33, 70, 33,
270
+ 70, 70, 71, 70, 70, 71, 71, 71,
271
+ 71, 71, 71, 71, 71, 71, 71, 70,
272
+ 70, 70, 70, 70, 70, 70, 33, 33,
273
+ 33, 33, 33, 33, 33, 33, 33, 33,
274
+ 33, 33, 33, 33, 33, 33, 33, 33,
275
+ 33, 33, 33, 33, 33, 33, 33, 33,
276
+ 70, 70, 70, 70, 71, 70, 33, 33,
277
+ 33, 33, 89, 33, 33, 33, 33, 33,
278
+ 33, 33, 33, 33, 33, 33, 33, 33,
279
+ 33, 33, 33, 33, 33, 33, 33, 33,
280
+ 70, 33, 70, 70, 71, 70, 70, 71,
281
+ 71, 71, 71, 71, 71, 71, 71, 71,
282
+ 71, 70, 70, 70, 70, 70, 70, 70,
283
+ 33, 33, 33, 33, 33, 33, 33, 33,
284
+ 33, 33, 33, 33, 33, 33, 33, 33,
285
+ 33, 33, 33, 33, 33, 33, 33, 33,
286
+ 33, 33, 70, 70, 70, 70, 71, 70,
287
+ 33, 33, 33, 33, 33, 33, 33, 33,
288
+ 33, 33, 33, 33, 33, 33, 33, 33,
289
+ 33, 33, 90, 33, 33, 33, 33, 33,
290
+ 33, 33, 70, 33, 70, 70, 71, 70,
291
+ 70, 71, 71, 71, 71, 71, 71, 71,
292
+ 71, 71, 71, 70, 70, 70, 70, 70,
293
+ 70, 70, 33, 33, 33, 33, 33, 33,
294
+ 33, 33, 33, 33, 33, 33, 33, 33,
295
+ 33, 33, 33, 33, 33, 33, 33, 33,
296
+ 33, 33, 33, 33, 70, 70, 70, 70,
297
+ 71, 70, 33, 33, 33, 33, 33, 33,
298
+ 33, 33, 33, 33, 33, 33, 33, 33,
299
+ 33, 33, 33, 33, 33, 91, 33, 33,
300
+ 33, 33, 33, 33, 70, 33, 70, 70,
301
+ 71, 70, 70, 71, 71, 71, 71, 71,
302
+ 71, 71, 71, 71, 71, 70, 70, 70,
303
+ 70, 70, 70, 70, 33, 33, 33, 33,
304
+ 33, 33, 33, 33, 33, 33, 33, 33,
305
+ 33, 33, 33, 33, 33, 33, 33, 33,
306
+ 33, 33, 33, 33, 33, 33, 70, 70,
307
+ 70, 70, 71, 70, 33, 33, 33, 33,
308
+ 33, 33, 33, 33, 33, 33, 33, 33,
309
+ 33, 33, 92, 33, 33, 33, 33, 33,
310
+ 33, 33, 33, 33, 33, 33, 70, 33,
311
+ 70, 70, 71, 70, 70, 71, 71, 71,
312
+ 71, 71, 71, 71, 71, 71, 71, 70,
313
+ 70, 70, 70, 70, 70, 70, 33, 33,
314
+ 33, 33, 33, 33, 33, 33, 33, 33,
315
+ 33, 33, 33, 33, 33, 33, 33, 33,
316
+ 33, 33, 33, 33, 33, 33, 33, 33,
317
+ 70, 70, 70, 70, 71, 70, 33, 33,
318
+ 33, 33, 33, 33, 33, 33, 33, 33,
319
+ 33, 33, 33, 33, 33, 33, 33, 93,
320
+ 33, 33, 33, 33, 33, 33, 33, 33,
321
+ 70, 33, 70, 70, 94, 70, 70, 71,
322
+ 71, 71, 71, 71, 71, 71, 71, 71,
323
+ 71, 95, 70, 70, 70, 70, 70, 70,
324
+ 33, 33, 33, 33, 33, 33, 33, 33,
325
+ 33, 33, 33, 33, 33, 33, 33, 33,
326
+ 33, 33, 33, 33, 33, 33, 33, 33,
327
+ 33, 33, 70, 70, 70, 70, 71, 70,
328
+ 33, 33, 33, 33, 33, 33, 33, 33,
329
+ 33, 33, 33, 33, 33, 33, 33, 33,
330
+ 33, 33, 33, 33, 33, 33, 33, 33,
331
+ 33, 33, 70, 71, 70, 70, 71, 71,
332
+ 71, 71, 71, 71, 71, 71, 71, 71,
333
+ 70, 70, 70, 70, 70, 70, 70, 71,
334
+ 71, 71, 71, 71, 71, 71, 71, 71,
335
+ 71, 71, 71, 71, 71, 71, 71, 71,
336
+ 71, 71, 71, 71, 71, 71, 71, 71,
337
+ 71, 70, 70, 70, 70, 71, 70, 71,
338
+ 71, 71, 71, 71, 71, 71, 71, 71,
339
+ 71, 71, 71, 71, 71, 96, 71, 71,
340
+ 71, 71, 71, 71, 71, 71, 71, 71,
341
+ 71, 70, 71, 70, 70, 71, 71, 71,
342
+ 71, 71, 71, 71, 71, 71, 71, 70,
343
+ 70, 70, 70, 70, 70, 70, 71, 71,
344
+ 71, 71, 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
+ 70, 70, 70, 70, 71, 70, 71, 71,
348
+ 71, 71, 71, 71, 71, 71, 71, 71,
349
+ 71, 71, 71, 71, 71, 71, 71, 97,
350
+ 71, 71, 71, 71, 71, 71, 71, 71,
351
+ 70, 98, 70, 70, 71, 71, 71, 71,
352
+ 71, 71, 71, 71, 71, 71, 70, 70,
353
+ 70, 70, 70, 70, 70, 71, 71, 71,
354
+ 71, 71, 71, 71, 71, 71, 71, 71,
355
+ 71, 71, 71, 71, 71, 71, 71, 71,
356
+ 71, 71, 71, 71, 71, 71, 71, 70,
357
+ 70, 70, 70, 71, 70, 71, 71, 71,
358
+ 71, 71, 71, 71, 71, 71, 71, 71,
359
+ 71, 71, 71, 71, 71, 71, 71, 71,
360
+ 71, 71, 71, 71, 71, 71, 71, 70,
361
+ 71, 70, 70, 71, 71, 71, 71, 71,
362
+ 71, 71, 71, 71, 71, 70, 70, 70,
363
+ 70, 70, 70, 70, 71, 71, 71, 71,
364
+ 71, 71, 71, 71, 71, 71, 71, 71,
365
+ 71, 71, 71, 71, 71, 71, 71, 71,
366
+ 71, 71, 71, 71, 71, 71, 70, 70,
367
+ 70, 70, 71, 70, 71, 71, 71, 71,
368
+ 71, 71, 71, 71, 71, 71, 71, 71,
369
+ 71, 71, 71, 71, 71, 71, 99, 71,
370
+ 71, 71, 71, 71, 71, 71, 70, 71,
371
+ 70, 70, 71, 71, 71, 71, 71, 71,
372
+ 71, 71, 71, 71, 70, 70, 70, 70,
373
+ 70, 70, 70, 71, 71, 71, 71, 71,
374
+ 71, 71, 71, 71, 71, 71, 71, 71,
375
+ 71, 71, 71, 71, 71, 71, 71, 71,
376
+ 71, 71, 71, 71, 71, 70, 70, 70,
377
+ 70, 71, 70, 71, 71, 71, 71, 100,
378
+ 71, 71, 71, 71, 71, 71, 71, 71,
379
+ 71, 71, 71, 71, 71, 71, 71, 71,
380
+ 71, 71, 71, 71, 71, 70, 71, 70,
381
+ 70, 71, 71, 71, 71, 71, 71, 71,
382
+ 71, 71, 71, 70, 70, 70, 70, 70,
383
+ 70, 70, 71, 71, 71, 71, 71, 71,
384
+ 71, 71, 71, 71, 71, 71, 71, 71,
385
+ 71, 71, 71, 71, 71, 71, 71, 71,
386
+ 71, 71, 71, 71, 70, 70, 70, 70,
387
+ 71, 70, 71, 71, 71, 71, 71, 71,
388
+ 71, 71, 71, 71, 71, 101, 71, 71,
389
+ 71, 71, 71, 71, 71, 71, 71, 71,
390
+ 71, 71, 71, 71, 70, 71, 70, 70,
391
+ 71, 71, 71, 71, 71, 71, 71, 71,
392
+ 71, 71, 70, 70, 70, 70, 70, 70,
393
+ 70, 71, 71, 71, 71, 71, 71, 71,
394
+ 71, 71, 71, 71, 71, 71, 71, 71,
395
+ 71, 71, 71, 71, 71, 71, 71, 71,
396
+ 71, 71, 71, 70, 70, 70, 70, 71,
397
+ 70, 71, 71, 71, 71, 71, 102, 71,
398
+ 71, 71, 71, 71, 71, 71, 71, 71,
399
+ 71, 71, 71, 71, 71, 71, 71, 71,
400
+ 71, 71, 71, 70, 71, 70, 70, 71,
401
+ 71, 71, 71, 71, 71, 71, 71, 71,
402
+ 71, 95, 70, 70, 70, 70, 70, 70,
403
+ 71, 71, 71, 71, 71, 71, 71, 71,
404
+ 71, 71, 71, 71, 71, 71, 71, 71,
405
+ 71, 71, 71, 71, 71, 71, 71, 71,
406
+ 71, 71, 70, 70, 70, 70, 71, 70,
407
+ 71, 71, 71, 71, 71, 71, 71, 71,
408
+ 71, 71, 71, 71, 71, 71, 71, 71,
409
+ 71, 71, 71, 71, 71, 71, 71, 71,
410
+ 71, 71, 70, 33, 70, 70, 71, 70,
411
+ 70, 71, 71, 71, 71, 71, 71, 71,
412
+ 71, 71, 71, 70, 70, 70, 70, 70,
413
+ 70, 70, 33, 33, 33, 33, 33, 33,
414
+ 33, 33, 33, 33, 33, 33, 33, 33,
415
+ 33, 33, 33, 33, 33, 33, 33, 33,
416
+ 33, 33, 33, 33, 70, 70, 70, 70,
417
+ 71, 70, 33, 33, 33, 33, 33, 33,
418
+ 33, 33, 33, 33, 33, 33, 33, 33,
419
+ 33, 33, 33, 33, 33, 103, 33, 33,
420
+ 33, 33, 33, 33, 70, 33, 70, 70,
421
+ 71, 70, 70, 71, 71, 71, 71, 71,
422
+ 71, 71, 71, 71, 71, 70, 70, 70,
423
+ 70, 70, 70, 70, 33, 33, 33, 33,
424
+ 33, 33, 33, 33, 33, 33, 33, 33,
425
+ 33, 33, 33, 33, 33, 33, 33, 33,
426
+ 33, 33, 33, 33, 33, 33, 70, 70,
427
+ 70, 70, 71, 70, 33, 33, 33, 33,
428
+ 33, 33, 33, 33, 33, 33, 33, 33,
429
+ 33, 33, 33, 33, 33, 104, 33, 33,
430
+ 33, 33, 33, 33, 33, 33, 70, 33,
431
+ 70, 70, 71, 70, 70, 71, 71, 71,
432
+ 71, 71, 71, 71, 71, 71, 71, 70,
433
+ 70, 70, 70, 70, 70, 70, 33, 33,
434
+ 33, 33, 33, 33, 33, 33, 33, 33,
435
+ 33, 33, 33, 33, 33, 33, 33, 33,
436
+ 33, 33, 33, 33, 33, 33, 33, 33,
437
+ 70, 70, 70, 70, 71, 70, 33, 33,
438
+ 33, 33, 33, 33, 33, 33, 105, 33,
439
+ 33, 33, 33, 33, 33, 33, 33, 33,
440
+ 33, 33, 33, 33, 33, 33, 33, 33,
441
+ 70, 33, 70, 70, 71, 70, 70, 71,
442
+ 71, 71, 71, 71, 71, 71, 71, 71,
443
+ 71, 70, 70, 70, 70, 70, 70, 70,
444
+ 33, 33, 33, 33, 33, 33, 33, 33,
445
+ 33, 33, 33, 33, 33, 33, 33, 33,
446
+ 33, 33, 33, 33, 33, 33, 33, 33,
447
+ 33, 33, 70, 70, 70, 70, 71, 70,
448
+ 33, 106, 33, 33, 33, 33, 33, 33,
449
+ 33, 33, 33, 33, 33, 33, 33, 33,
450
+ 33, 33, 33, 33, 33, 33, 33, 33,
451
+ 33, 33, 70, 33, 70, 70, 71, 70,
452
+ 70, 71, 71, 71, 71, 71, 71, 71,
453
+ 71, 71, 71, 70, 70, 70, 70, 70,
454
+ 70, 70, 33, 33, 33, 33, 33, 33,
455
+ 33, 33, 33, 33, 33, 33, 33, 33,
456
+ 33, 33, 33, 33, 33, 33, 33, 33,
457
+ 33, 33, 33, 33, 70, 70, 70, 70,
458
+ 71, 70, 33, 33, 33, 33, 33, 33,
459
+ 33, 33, 33, 33, 33, 33, 33, 33,
460
+ 33, 33, 33, 33, 33, 33, 107, 33,
461
+ 33, 33, 33, 33, 70, 33, 70, 70,
462
+ 71, 70, 70, 71, 71, 71, 71, 71,
463
+ 71, 71, 71, 71, 71, 70, 70, 70,
464
+ 70, 70, 70, 70, 33, 33, 33, 33,
465
+ 33, 33, 33, 33, 33, 33, 33, 33,
466
+ 33, 33, 33, 33, 33, 33, 33, 33,
467
+ 33, 33, 33, 33, 33, 33, 70, 70,
468
+ 70, 70, 71, 70, 33, 33, 33, 33,
469
+ 33, 33, 33, 33, 33, 33, 33, 33,
470
+ 33, 33, 33, 33, 33, 33, 33, 108,
471
+ 33, 33, 33, 33, 33, 33, 70, 33,
472
+ 70, 70, 71, 70, 70, 71, 71, 71,
473
+ 71, 71, 71, 71, 71, 71, 71, 70,
474
+ 70, 70, 70, 70, 70, 70, 33, 33,
475
+ 33, 33, 33, 33, 33, 33, 33, 33,
476
+ 33, 33, 33, 33, 33, 33, 33, 33,
477
+ 33, 33, 33, 33, 33, 33, 33, 33,
478
+ 70, 70, 70, 70, 71, 70, 33, 33,
479
+ 33, 33, 109, 33, 33, 33, 33, 33,
480
+ 33, 33, 33, 33, 33, 33, 33, 33,
481
+ 33, 33, 33, 33, 33, 33, 33, 33,
482
+ 70, 33, 70, 70, 71, 70, 70, 71,
483
+ 71, 71, 71, 71, 71, 71, 71, 71,
484
+ 71, 95, 70, 70, 70, 70, 70, 70,
485
+ 33, 33, 33, 33, 33, 33, 33, 33,
486
+ 33, 33, 33, 33, 33, 33, 33, 33,
487
+ 33, 33, 33, 33, 33, 33, 33, 33,
488
+ 33, 33, 70, 70, 70, 70, 71, 70,
489
+ 33, 33, 33, 33, 33, 33, 33, 33,
490
+ 33, 33, 33, 33, 33, 33, 33, 33,
491
+ 33, 33, 33, 33, 33, 33, 33, 33,
492
+ 33, 33, 70, 33, 70, 70, 71, 70,
493
+ 70, 71, 71, 71, 71, 71, 71, 71,
494
+ 71, 71, 71, 70, 70, 70, 70, 70,
495
+ 70, 70, 33, 33, 33, 33, 33, 33,
496
+ 33, 33, 33, 33, 33, 33, 33, 33,
497
+ 33, 33, 33, 33, 33, 33, 33, 33,
498
+ 33, 33, 33, 33, 70, 70, 70, 70,
499
+ 71, 70, 33, 33, 33, 33, 33, 33,
500
+ 33, 110, 33, 33, 33, 33, 33, 33,
501
+ 111, 33, 33, 33, 33, 33, 33, 33,
502
+ 33, 33, 33, 33, 70, 33, 70, 70,
503
+ 71, 70, 70, 71, 71, 71, 71, 71,
504
+ 71, 71, 71, 71, 71, 70, 70, 70,
505
+ 70, 70, 70, 70, 33, 33, 33, 33,
506
+ 33, 33, 33, 33, 33, 33, 33, 33,
507
+ 33, 33, 33, 33, 33, 33, 33, 33,
508
+ 33, 33, 33, 33, 33, 33, 70, 70,
509
+ 70, 70, 71, 70, 33, 33, 33, 33,
510
+ 33, 33, 33, 33, 112, 33, 33, 33,
511
+ 33, 33, 33, 33, 33, 33, 33, 33,
512
+ 33, 33, 33, 33, 33, 33, 70, 33,
513
+ 70, 70, 71, 70, 70, 71, 71, 71,
514
+ 71, 71, 71, 71, 71, 71, 71, 70,
515
+ 70, 70, 70, 70, 70, 70, 33, 33,
516
+ 33, 33, 33, 33, 33, 33, 33, 33,
517
+ 33, 33, 33, 33, 33, 33, 33, 33,
518
+ 33, 33, 33, 33, 33, 33, 33, 33,
519
+ 70, 70, 70, 70, 71, 70, 33, 33,
520
+ 33, 33, 33, 33, 33, 33, 33, 33,
521
+ 33, 113, 33, 33, 33, 33, 33, 33,
522
+ 33, 33, 33, 33, 33, 33, 33, 33,
523
+ 70, 33, 70, 70, 71, 70, 70, 71,
524
+ 71, 71, 71, 71, 71, 71, 71, 71,
525
+ 71, 70, 70, 70, 70, 70, 70, 70,
526
+ 33, 33, 33, 33, 33, 33, 33, 33,
527
+ 33, 33, 33, 33, 33, 33, 33, 33,
528
+ 33, 33, 33, 33, 33, 33, 33, 33,
529
+ 33, 33, 70, 70, 70, 70, 71, 70,
530
+ 33, 33, 33, 109, 33, 33, 33, 33,
531
+ 33, 33, 33, 33, 33, 33, 33, 33,
532
+ 33, 33, 33, 33, 33, 33, 33, 33,
533
+ 33, 33, 70, 33, 70, 70, 71, 70,
534
+ 70, 71, 71, 71, 71, 71, 71, 71,
535
+ 71, 71, 71, 70, 70, 70, 70, 70,
536
+ 70, 70, 33, 33, 33, 33, 33, 33,
537
+ 33, 33, 33, 33, 33, 33, 33, 33,
538
+ 33, 33, 33, 33, 33, 33, 33, 33,
539
+ 33, 33, 33, 33, 70, 70, 70, 70,
540
+ 71, 70, 33, 33, 33, 33, 33, 33,
541
+ 33, 33, 33, 33, 33, 33, 114, 33,
542
+ 33, 33, 33, 33, 33, 33, 33, 33,
543
+ 33, 33, 33, 33, 70, 33, 70, 70,
544
+ 71, 70, 70, 71, 71, 71, 71, 71,
545
+ 71, 71, 71, 71, 71, 70, 70, 70,
546
+ 70, 70, 70, 70, 33, 33, 33, 33,
547
+ 33, 33, 33, 33, 33, 33, 33, 33,
548
+ 33, 33, 33, 33, 33, 33, 33, 33,
549
+ 33, 33, 33, 33, 33, 33, 70, 70,
550
+ 70, 70, 71, 70, 33, 33, 33, 33,
551
+ 33, 33, 33, 33, 33, 33, 33, 33,
552
+ 115, 33, 33, 33, 33, 33, 33, 33,
553
+ 33, 33, 33, 33, 33, 33, 70, 33,
554
+ 70, 70, 71, 70, 70, 71, 71, 71,
555
+ 71, 71, 71, 71, 71, 71, 71, 70,
556
+ 70, 70, 70, 70, 70, 70, 33, 33,
557
+ 33, 33, 33, 33, 33, 33, 33, 33,
558
+ 33, 33, 33, 33, 33, 33, 33, 33,
559
+ 33, 33, 33, 33, 33, 33, 33, 33,
560
+ 70, 70, 70, 70, 71, 70, 33, 33,
561
+ 33, 33, 116, 33, 33, 33, 33, 33,
562
+ 33, 33, 33, 33, 33, 33, 33, 33,
563
+ 33, 33, 33, 33, 33, 33, 33, 33,
564
+ 70, 33, 70, 70, 71, 70, 70, 71,
565
+ 71, 71, 71, 71, 71, 71, 71, 71,
566
+ 71, 70, 70, 70, 70, 70, 70, 70,
567
+ 33, 33, 33, 33, 33, 33, 33, 33,
568
+ 33, 33, 33, 33, 33, 33, 33, 33,
569
+ 33, 33, 33, 33, 33, 33, 33, 33,
570
+ 33, 33, 70, 70, 70, 70, 71, 70,
571
+ 33, 33, 33, 33, 33, 33, 33, 33,
572
+ 33, 33, 33, 33, 33, 117, 33, 33,
573
+ 33, 33, 33, 33, 33, 33, 33, 33,
574
+ 33, 33, 70, 33, 70, 70, 71, 70,
575
+ 70, 71, 71, 71, 71, 71, 71, 71,
576
+ 71, 71, 71, 70, 70, 70, 70, 70,
577
+ 70, 70, 33, 33, 33, 33, 33, 33,
578
+ 33, 33, 33, 33, 33, 33, 33, 33,
579
+ 33, 33, 33, 33, 33, 33, 33, 33,
580
+ 33, 33, 33, 33, 70, 70, 70, 70,
581
+ 71, 70, 33, 33, 33, 33, 33, 33,
582
+ 33, 33, 33, 33, 33, 33, 33, 33,
583
+ 33, 33, 33, 33, 33, 118, 33, 33,
584
+ 33, 33, 33, 33, 70, 119, 70, 33,
585
+ 70, 70, 71, 70, 70, 71, 71, 71,
586
+ 71, 71, 71, 71, 71, 71, 71, 70,
587
+ 70, 70, 70, 70, 70, 70, 33, 33,
588
+ 33, 33, 33, 33, 33, 33, 33, 33,
589
+ 33, 33, 33, 33, 33, 33, 33, 33,
590
+ 33, 33, 33, 33, 33, 33, 33, 33,
591
+ 70, 70, 70, 70, 71, 70, 33, 33,
592
+ 33, 33, 33, 33, 33, 33, 33, 33,
593
+ 33, 33, 33, 33, 33, 33, 33, 33,
594
+ 33, 33, 33, 33, 33, 33, 33, 33,
595
+ 70, 33, 70, 70, 71, 70, 70, 71,
596
+ 71, 71, 71, 71, 71, 71, 71, 71,
597
+ 71, 70, 70, 70, 70, 70, 70, 70,
598
+ 33, 33, 33, 33, 33, 33, 33, 33,
599
+ 33, 33, 33, 33, 33, 33, 33, 33,
600
+ 33, 33, 33, 33, 33, 33, 33, 33,
601
+ 33, 33, 70, 70, 70, 70, 71, 70,
602
+ 33, 33, 33, 33, 120, 33, 33, 33,
603
+ 33, 33, 33, 33, 33, 33, 33, 33,
604
+ 33, 33, 33, 33, 33, 33, 33, 33,
605
+ 33, 33, 70, 33, 70, 70, 71, 70,
606
+ 70, 71, 71, 71, 71, 71, 71, 71,
607
+ 71, 71, 71, 70, 70, 70, 70, 70,
608
+ 70, 70, 33, 33, 33, 33, 33, 33,
609
+ 33, 33, 33, 33, 33, 33, 33, 33,
610
+ 33, 33, 33, 33, 33, 33, 33, 33,
611
+ 33, 33, 33, 33, 70, 70, 70, 70,
612
+ 71, 70, 33, 33, 33, 33, 33, 33,
613
+ 33, 33, 33, 33, 33, 33, 33, 33,
614
+ 33, 33, 33, 33, 121, 33, 33, 33,
615
+ 33, 33, 33, 33, 70, 33, 70, 70,
616
+ 71, 70, 70, 71, 71, 71, 71, 71,
617
+ 71, 71, 71, 71, 71, 70, 70, 70,
618
+ 70, 70, 70, 70, 33, 33, 33, 33,
619
+ 33, 33, 33, 33, 33, 33, 33, 33,
620
+ 33, 33, 33, 33, 33, 33, 33, 33,
621
+ 33, 33, 33, 33, 33, 33, 70, 70,
622
+ 70, 70, 71, 70, 33, 33, 122, 33,
623
+ 33, 33, 33, 33, 33, 33, 33, 33,
624
+ 33, 33, 33, 33, 33, 33, 33, 33,
625
+ 33, 33, 33, 33, 33, 33, 70, 33,
626
+ 70, 70, 71, 70, 70, 71, 71, 71,
627
+ 71, 71, 71, 71, 71, 71, 71, 70,
628
+ 70, 70, 70, 70, 70, 70, 33, 33,
629
+ 33, 33, 33, 33, 33, 33, 33, 33,
630
+ 33, 33, 33, 33, 33, 33, 33, 33,
631
+ 33, 33, 33, 33, 33, 33, 33, 33,
632
+ 70, 70, 70, 70, 71, 70, 33, 33,
633
+ 33, 33, 123, 33, 33, 33, 33, 33,
634
+ 33, 33, 33, 33, 33, 33, 33, 33,
635
+ 33, 33, 33, 33, 33, 33, 33, 33,
636
+ 70, 33, 70, 70, 71, 70, 70, 71,
637
+ 71, 71, 71, 71, 71, 71, 71, 71,
638
+ 71, 70, 70, 70, 70, 70, 70, 70,
639
+ 33, 33, 33, 33, 33, 33, 33, 33,
640
+ 33, 33, 33, 33, 33, 33, 33, 33,
641
+ 33, 33, 33, 33, 33, 33, 33, 33,
642
+ 33, 33, 70, 70, 70, 70, 71, 70,
643
+ 33, 33, 33, 33, 33, 33, 33, 33,
644
+ 33, 33, 33, 33, 33, 124, 33, 33,
645
+ 33, 33, 33, 33, 33, 33, 33, 33,
646
+ 33, 33, 70, 33, 70, 70, 71, 70,
647
+ 70, 71, 71, 71, 71, 71, 71, 71,
648
+ 71, 71, 71, 70, 70, 70, 70, 70,
649
+ 70, 70, 33, 33, 33, 33, 33, 33,
650
+ 33, 33, 33, 33, 33, 33, 33, 33,
651
+ 33, 33, 33, 33, 33, 33, 33, 33,
652
+ 33, 33, 33, 33, 70, 70, 70, 70,
653
+ 71, 70, 33, 33, 33, 125, 33, 33,
654
+ 33, 33, 33, 33, 33, 33, 33, 33,
655
+ 33, 33, 33, 33, 33, 33, 33, 33,
656
+ 33, 33, 33, 33, 70, 33, 70, 70,
657
+ 71, 70, 70, 71, 71, 71, 71, 71,
658
+ 71, 71, 71, 71, 71, 70, 70, 70,
659
+ 70, 70, 70, 70, 33, 33, 33, 33,
660
+ 33, 33, 33, 33, 33, 33, 33, 33,
661
+ 33, 33, 33, 33, 33, 33, 33, 33,
662
+ 33, 33, 33, 33, 33, 33, 70, 70,
663
+ 70, 70, 71, 70, 126, 33, 33, 33,
664
+ 33, 33, 33, 33, 33, 33, 33, 33,
665
+ 33, 33, 33, 33, 33, 33, 33, 33,
666
+ 33, 33, 33, 33, 33, 33, 70, 33,
667
+ 70, 70, 71, 70, 70, 71, 71, 71,
668
+ 71, 71, 71, 71, 71, 71, 71, 70,
669
+ 70, 70, 70, 70, 70, 70, 33, 33,
670
+ 33, 33, 33, 33, 33, 33, 33, 33,
671
+ 33, 33, 33, 33, 33, 33, 33, 33,
672
+ 33, 33, 33, 33, 33, 33, 33, 33,
673
+ 70, 70, 70, 70, 71, 70, 33, 33,
674
+ 33, 33, 33, 33, 33, 33, 33, 33,
675
+ 33, 33, 33, 127, 33, 33, 33, 33,
676
+ 33, 33, 33, 33, 33, 33, 33, 33,
677
+ 70, 33, 70, 70, 71, 70, 70, 71,
678
+ 71, 71, 71, 71, 71, 71, 71, 71,
679
+ 71, 70, 70, 70, 70, 70, 70, 70,
680
+ 33, 33, 33, 33, 33, 33, 33, 33,
681
+ 33, 33, 33, 33, 33, 33, 33, 33,
682
+ 33, 33, 33, 33, 33, 33, 33, 33,
683
+ 33, 33, 70, 70, 70, 70, 71, 70,
684
+ 33, 33, 33, 33, 33, 33, 33, 33,
685
+ 33, 33, 33, 33, 33, 33, 33, 33,
686
+ 33, 33, 33, 93, 33, 33, 33, 33,
687
+ 33, 33, 70, 33, 70, 70, 71, 70,
688
+ 70, 71, 71, 71, 71, 71, 71, 71,
689
+ 71, 71, 71, 70, 70, 70, 70, 70,
690
+ 70, 70, 33, 33, 33, 33, 33, 33,
691
+ 33, 33, 33, 33, 33, 33, 33, 33,
692
+ 33, 33, 33, 33, 33, 33, 33, 33,
693
+ 33, 33, 33, 33, 70, 70, 70, 70,
694
+ 71, 70, 33, 33, 33, 33, 33, 33,
695
+ 33, 33, 33, 33, 33, 33, 33, 33,
696
+ 128, 33, 33, 33, 33, 33, 33, 33,
697
+ 33, 33, 33, 33, 70, 33, 70, 70,
698
+ 71, 70, 70, 71, 71, 71, 71, 71,
699
+ 71, 71, 71, 71, 71, 70, 70, 70,
700
+ 70, 70, 70, 70, 33, 33, 33, 33,
701
+ 33, 33, 33, 33, 33, 33, 33, 33,
702
+ 33, 33, 33, 33, 33, 33, 33, 33,
703
+ 33, 33, 33, 33, 33, 33, 70, 70,
704
+ 70, 70, 71, 70, 33, 33, 33, 33,
705
+ 33, 33, 33, 33, 33, 33, 33, 129,
706
+ 33, 33, 33, 33, 33, 33, 33, 33,
707
+ 33, 33, 33, 33, 33, 33, 70, 33,
708
+ 70, 70, 71, 70, 70, 71, 71, 71,
709
+ 71, 71, 71, 71, 71, 71, 71, 70,
710
+ 70, 70, 70, 70, 70, 70, 33, 33,
711
+ 33, 33, 33, 33, 33, 33, 33, 33,
712
+ 33, 33, 33, 33, 33, 33, 33, 33,
713
+ 33, 33, 33, 33, 33, 33, 33, 33,
714
+ 70, 70, 70, 70, 71, 70, 33, 33,
715
+ 33, 33, 33, 33, 33, 33, 33, 33,
716
+ 33, 130, 33, 33, 33, 33, 33, 33,
717
+ 33, 33, 33, 33, 33, 33, 33, 33,
718
+ 70, 33, 70, 70, 71, 70, 70, 71,
719
+ 71, 71, 71, 71, 71, 71, 71, 71,
720
+ 71, 70, 70, 70, 70, 70, 70, 70,
721
+ 33, 33, 33, 33, 33, 33, 33, 33,
722
+ 33, 33, 33, 33, 33, 33, 33, 33,
723
+ 33, 33, 33, 33, 33, 33, 33, 33,
724
+ 33, 33, 70, 70, 70, 70, 71, 70,
725
+ 33, 33, 33, 33, 33, 33, 33, 33,
726
+ 33, 33, 33, 33, 33, 33, 131, 33,
727
+ 33, 33, 33, 33, 33, 33, 33, 33,
728
+ 33, 33, 70, 33, 70, 70, 71, 70,
729
+ 70, 71, 71, 71, 71, 71, 71, 71,
730
+ 71, 71, 71, 70, 70, 70, 70, 70,
731
+ 70, 70, 33, 33, 33, 33, 33, 33,
732
+ 33, 33, 33, 33, 33, 33, 33, 33,
733
+ 33, 33, 33, 33, 33, 33, 33, 33,
734
+ 33, 33, 33, 33, 70, 70, 70, 70,
735
+ 71, 70, 33, 33, 33, 33, 33, 33,
736
+ 33, 33, 33, 33, 33, 33, 33, 33,
737
+ 33, 33, 33, 33, 33, 33, 33, 33,
738
+ 132, 33, 33, 33, 70, 33, 70, 70,
739
+ 71, 70, 70, 71, 71, 71, 71, 71,
740
+ 71, 71, 71, 71, 71, 70, 70, 70,
741
+ 70, 70, 70, 70, 33, 33, 33, 33,
742
+ 33, 33, 33, 33, 33, 33, 33, 33,
743
+ 33, 33, 33, 33, 33, 33, 33, 33,
744
+ 33, 33, 33, 33, 33, 33, 70, 70,
745
+ 70, 70, 71, 70, 33, 33, 33, 33,
746
+ 33, 33, 33, 33, 133, 33, 33, 33,
747
+ 33, 33, 33, 33, 33, 33, 33, 33,
748
+ 33, 33, 33, 33, 33, 33, 70, 33,
749
+ 70, 70, 71, 70, 70, 71, 71, 71,
750
+ 71, 71, 71, 71, 71, 71, 71, 70,
751
+ 70, 70, 70, 70, 70, 70, 33, 33,
752
+ 33, 33, 33, 33, 33, 33, 33, 33,
753
+ 33, 33, 33, 33, 33, 33, 33, 33,
754
+ 33, 33, 33, 33, 33, 33, 33, 33,
755
+ 70, 70, 70, 70, 71, 70, 33, 33,
756
+ 33, 33, 33, 33, 33, 33, 33, 33,
757
+ 33, 33, 33, 134, 33, 33, 33, 33,
758
+ 33, 33, 33, 33, 33, 33, 33, 33,
759
+ 70, 33, 70, 70, 71, 70, 70, 71,
760
+ 71, 71, 71, 71, 71, 71, 71, 71,
761
+ 71, 70, 70, 70, 70, 70, 70, 70,
762
+ 33, 33, 33, 33, 33, 33, 33, 33,
763
+ 33, 33, 33, 33, 33, 33, 33, 33,
764
+ 33, 33, 33, 33, 33, 33, 33, 33,
765
+ 33, 33, 70, 70, 70, 70, 71, 70,
766
+ 33, 33, 33, 33, 33, 33, 135, 33,
767
+ 33, 33, 33, 33, 33, 33, 33, 33,
768
+ 33, 33, 33, 33, 33, 33, 33, 33,
769
+ 33, 33, 70, 33, 70, 70, 136, 70,
770
+ 70, 71, 71, 71, 71, 71, 71, 71,
771
+ 71, 71, 71, 95, 70, 70, 70, 70,
772
+ 70, 70, 33, 33, 33, 33, 33, 33,
773
+ 33, 33, 33, 33, 33, 33, 33, 33,
774
+ 33, 33, 33, 33, 33, 33, 33, 33,
775
+ 33, 33, 33, 33, 70, 70, 70, 70,
776
+ 71, 70, 33, 33, 33, 33, 33, 33,
777
+ 33, 33, 33, 33, 33, 33, 33, 33,
778
+ 33, 33, 33, 33, 33, 33, 33, 33,
779
+ 33, 33, 33, 33, 70, 71, 70, 70,
780
+ 71, 71, 71, 71, 71, 71, 71, 71,
781
+ 71, 71, 70, 70, 70, 70, 70, 70,
782
+ 70, 71, 71, 71, 71, 71, 71, 71,
783
+ 71, 71, 71, 71, 71, 71, 71, 71,
784
+ 71, 71, 71, 71, 71, 71, 71, 71,
785
+ 71, 71, 71, 70, 70, 70, 70, 71,
786
+ 70, 71, 71, 71, 71, 71, 71, 71,
787
+ 71, 71, 71, 71, 71, 71, 71, 71,
788
+ 71, 71, 71, 137, 71, 71, 71, 71,
789
+ 71, 71, 71, 70, 71, 70, 70, 71,
790
+ 71, 71, 71, 71, 71, 71, 71, 71,
791
+ 71, 70, 70, 70, 70, 70, 70, 70,
792
+ 71, 71, 71, 71, 71, 71, 71, 71,
793
+ 71, 71, 71, 71, 71, 71, 71, 71,
794
+ 71, 71, 71, 71, 71, 71, 71, 71,
795
+ 71, 71, 70, 70, 70, 70, 71, 70,
796
+ 71, 71, 71, 71, 71, 71, 71, 71,
797
+ 138, 71, 71, 71, 71, 71, 71, 71,
798
+ 71, 71, 71, 71, 71, 71, 71, 71,
799
+ 71, 71, 70, 71, 70, 70, 71, 71,
800
+ 71, 71, 71, 71, 71, 71, 71, 71,
801
+ 70, 70, 70, 70, 70, 70, 70, 71,
802
+ 71, 71, 71, 71, 71, 71, 71, 71,
803
+ 71, 71, 71, 71, 71, 71, 71, 71,
804
+ 71, 71, 71, 71, 71, 71, 71, 71,
805
+ 71, 70, 70, 70, 70, 71, 70, 71,
806
+ 139, 71, 71, 71, 71, 71, 71, 71,
807
+ 71, 71, 71, 71, 71, 71, 71, 71,
808
+ 71, 71, 71, 71, 71, 71, 71, 71,
809
+ 71, 70, 71, 70, 70, 71, 71, 71,
810
+ 71, 71, 71, 71, 71, 71, 71, 70,
811
+ 70, 70, 70, 70, 70, 70, 71, 71,
812
+ 71, 71, 71, 71, 71, 71, 71, 71,
813
+ 71, 71, 71, 71, 71, 71, 71, 71,
814
+ 71, 71, 71, 71, 71, 71, 71, 71,
815
+ 70, 70, 70, 70, 71, 70, 71, 71,
816
+ 71, 71, 71, 71, 71, 71, 71, 71,
817
+ 71, 140, 71, 71, 71, 71, 71, 71,
818
+ 71, 71, 71, 71, 71, 71, 71, 71,
819
+ 70, 71, 70, 70, 71, 71, 71, 71,
820
+ 71, 71, 71, 71, 71, 71, 70, 70,
821
+ 70, 70, 70, 70, 70, 71, 71, 71,
822
+ 71, 71, 71, 71, 71, 71, 71, 71,
823
+ 71, 71, 71, 71, 71, 71, 71, 71,
824
+ 71, 71, 71, 71, 71, 71, 71, 70,
825
+ 70, 70, 70, 71, 70, 71, 71, 71,
826
+ 71, 71, 71, 71, 71, 141, 71, 71,
827
+ 71, 71, 71, 71, 71, 71, 71, 71,
828
+ 71, 71, 71, 71, 71, 71, 71, 70,
829
+ 71, 70, 70, 71, 71, 71, 71, 71,
830
+ 71, 71, 71, 71, 71, 70, 70, 70,
831
+ 70, 70, 70, 70, 71, 71, 71, 71,
832
+ 71, 71, 71, 71, 71, 71, 71, 71,
833
+ 71, 71, 71, 71, 71, 71, 71, 71,
834
+ 71, 71, 71, 71, 71, 71, 70, 70,
835
+ 70, 70, 71, 70, 71, 71, 71, 71,
836
+ 71, 71, 71, 71, 71, 71, 71, 71,
837
+ 71, 142, 71, 71, 71, 71, 71, 71,
838
+ 71, 71, 71, 71, 71, 71, 70, 71,
839
+ 70, 70, 71, 71, 71, 71, 71, 71,
840
+ 71, 71, 71, 71, 70, 70, 70, 70,
841
+ 70, 70, 70, 71, 71, 71, 71, 71,
842
+ 71, 71, 71, 71, 71, 71, 71, 71,
843
+ 71, 71, 71, 71, 71, 71, 71, 71,
844
+ 71, 71, 71, 71, 71, 70, 70, 70,
845
+ 70, 71, 70, 71, 71, 71, 71, 71,
846
+ 71, 102, 71, 71, 71, 71, 71, 71,
847
+ 71, 71, 71, 71, 71, 71, 71, 71,
848
+ 71, 71, 71, 71, 71, 70, 33, 70,
849
+ 70, 71, 70, 70, 71, 71, 71, 71,
850
+ 71, 71, 71, 71, 71, 71, 70, 70,
851
+ 70, 70, 70, 70, 70, 33, 33, 33,
852
+ 33, 33, 33, 33, 33, 33, 33, 33,
853
+ 33, 33, 33, 33, 33, 33, 33, 33,
854
+ 33, 33, 33, 33, 33, 33, 33, 70,
855
+ 70, 70, 70, 71, 70, 143, 33, 33,
856
+ 33, 33, 33, 33, 33, 33, 33, 33,
857
+ 33, 33, 33, 144, 33, 33, 33, 33,
858
+ 33, 33, 33, 33, 33, 33, 33, 70,
859
+ 33, 70, 70, 71, 70, 70, 71, 71,
860
+ 71, 71, 71, 71, 71, 71, 71, 71,
861
+ 70, 70, 70, 70, 70, 70, 70, 33,
862
+ 33, 33, 33, 33, 33, 33, 33, 33,
863
+ 33, 33, 33, 33, 33, 33, 33, 33,
864
+ 33, 33, 33, 33, 33, 33, 33, 33,
865
+ 33, 70, 70, 70, 70, 71, 70, 33,
866
+ 33, 33, 33, 33, 33, 33, 33, 33,
867
+ 33, 33, 33, 145, 33, 33, 33, 33,
868
+ 33, 33, 33, 33, 33, 33, 33, 33,
869
+ 33, 70, 33, 70, 70, 71, 70, 70,
870
+ 71, 71, 71, 71, 71, 71, 71, 71,
871
+ 71, 71, 70, 70, 70, 70, 70, 70,
872
+ 70, 33, 33, 33, 33, 33, 33, 33,
873
+ 33, 33, 33, 33, 33, 33, 33, 33,
874
+ 33, 33, 33, 33, 33, 33, 33, 33,
875
+ 33, 33, 33, 70, 70, 70, 70, 71,
876
+ 70, 33, 33, 33, 33, 146, 33, 33,
877
+ 33, 33, 33, 33, 33, 33, 33, 33,
878
+ 33, 33, 33, 33, 33, 33, 33, 33,
879
+ 33, 33, 33, 70, 33, 70, 70, 71,
880
+ 70, 70, 71, 71, 71, 71, 71, 71,
881
+ 71, 71, 71, 71, 70, 70, 70, 70,
882
+ 70, 70, 70, 33, 33, 33, 33, 33,
883
+ 33, 33, 33, 33, 33, 33, 33, 33,
884
+ 33, 33, 33, 33, 33, 33, 33, 33,
885
+ 33, 33, 33, 33, 33, 70, 70, 70,
886
+ 70, 71, 70, 33, 33, 33, 33, 33,
887
+ 33, 33, 33, 33, 33, 33, 33, 33,
888
+ 33, 33, 33, 33, 33, 147, 33, 33,
889
+ 33, 33, 33, 33, 33, 70, 33, 70,
890
+ 70, 71, 70, 70, 71, 71, 71, 71,
891
+ 71, 71, 71, 71, 71, 71, 70, 70,
892
+ 70, 70, 70, 70, 70, 33, 33, 33,
893
+ 33, 33, 33, 33, 33, 33, 33, 33,
894
+ 33, 33, 33, 33, 33, 33, 33, 33,
895
+ 33, 33, 33, 33, 33, 33, 33, 70,
896
+ 70, 70, 70, 71, 70, 33, 33, 33,
897
+ 33, 33, 33, 33, 33, 33, 33, 33,
898
+ 33, 33, 33, 33, 148, 33, 33, 33,
899
+ 33, 33, 33, 33, 33, 33, 33, 70,
900
+ 33, 70, 70, 71, 70, 70, 71, 71,
901
+ 71, 71, 71, 71, 71, 71, 71, 71,
902
+ 70, 70, 70, 70, 70, 70, 70, 33,
903
+ 33, 33, 33, 33, 33, 33, 33, 33,
904
+ 33, 33, 33, 33, 33, 33, 33, 33,
905
+ 33, 33, 33, 33, 33, 33, 33, 33,
906
+ 33, 70, 70, 70, 70, 71, 70, 149,
907
+ 33, 33, 33, 33, 33, 33, 33, 33,
908
+ 33, 33, 33, 33, 33, 33, 33, 33,
909
+ 33, 33, 33, 33, 33, 33, 33, 33,
910
+ 33, 70, 33, 70, 70, 71, 70, 70,
911
+ 71, 71, 71, 71, 71, 71, 71, 71,
912
+ 71, 71, 70, 70, 70, 70, 70, 70,
913
+ 70, 33, 33, 33, 33, 33, 33, 33,
914
+ 33, 33, 33, 33, 33, 33, 33, 33,
915
+ 33, 33, 33, 33, 33, 33, 33, 33,
916
+ 33, 33, 33, 70, 70, 70, 70, 71,
917
+ 70, 33, 33, 108, 33, 33, 33, 33,
918
+ 33, 33, 33, 33, 33, 33, 33, 33,
919
+ 33, 33, 33, 33, 33, 33, 33, 33,
920
+ 33, 33, 33, 70, 33, 70, 70, 71,
921
+ 70, 70, 71, 71, 71, 71, 71, 71,
922
+ 71, 71, 71, 71, 70, 70, 70, 70,
923
+ 70, 70, 70, 33, 33, 33, 33, 33,
924
+ 33, 33, 33, 33, 33, 33, 33, 33,
925
+ 33, 33, 33, 33, 33, 33, 33, 33,
926
+ 33, 33, 33, 33, 33, 70, 70, 70,
927
+ 70, 71, 70, 33, 33, 33, 150, 33,
928
+ 33, 33, 33, 33, 33, 33, 33, 33,
929
+ 33, 33, 33, 33, 33, 33, 33, 33,
930
+ 33, 33, 33, 33, 33, 70, 33, 70,
931
+ 70, 71, 70, 70, 71, 71, 71, 71,
932
+ 71, 71, 71, 71, 71, 71, 70, 70,
933
+ 70, 70, 70, 70, 70, 33, 33, 33,
934
+ 33, 33, 33, 33, 33, 33, 33, 33,
935
+ 33, 33, 33, 33, 33, 33, 33, 33,
936
+ 33, 33, 33, 33, 33, 33, 33, 70,
937
+ 70, 70, 70, 71, 70, 33, 33, 33,
938
+ 33, 118, 33, 33, 33, 33, 33, 33,
939
+ 33, 33, 33, 33, 33, 33, 33, 33,
940
+ 33, 33, 33, 33, 33, 33, 33, 70,
941
+ 33, 70, 70, 71, 70, 70, 71, 71,
942
+ 71, 71, 71, 71, 71, 71, 71, 71,
943
+ 70, 70, 70, 70, 70, 70, 70, 33,
944
+ 33, 33, 33, 33, 33, 33, 33, 33,
945
+ 33, 33, 33, 33, 33, 33, 33, 33,
946
+ 33, 33, 33, 33, 33, 33, 33, 33,
947
+ 33, 70, 70, 70, 70, 71, 70, 151,
948
+ 33, 33, 33, 33, 33, 33, 33, 33,
949
+ 33, 33, 33, 33, 33, 33, 33, 33,
950
+ 152, 33, 33, 33, 33, 33, 33, 33,
951
+ 33, 70, 33, 70, 70, 71, 70, 70,
952
+ 71, 71, 71, 71, 71, 71, 71, 71,
953
+ 71, 71, 70, 70, 70, 70, 70, 70,
954
+ 70, 33, 33, 33, 33, 33, 33, 33,
955
+ 33, 33, 33, 33, 33, 33, 33, 33,
956
+ 33, 33, 33, 33, 33, 33, 33, 33,
957
+ 33, 33, 33, 70, 70, 70, 70, 71,
958
+ 70, 33, 33, 33, 33, 33, 33, 33,
959
+ 33, 33, 33, 33, 33, 33, 33, 33,
960
+ 33, 33, 153, 33, 33, 33, 33, 33,
961
+ 33, 33, 33, 70, 33, 70, 70, 71,
962
+ 70, 70, 71, 71, 71, 71, 71, 71,
963
+ 71, 71, 71, 71, 70, 70, 70, 70,
964
+ 70, 70, 70, 33, 33, 33, 33, 33,
965
+ 33, 33, 33, 33, 33, 33, 33, 33,
966
+ 33, 33, 33, 33, 33, 33, 33, 33,
967
+ 33, 33, 33, 33, 33, 70, 70, 70,
968
+ 70, 71, 70, 33, 33, 33, 33, 154,
969
+ 33, 33, 33, 33, 33, 33, 33, 33,
970
+ 33, 33, 33, 33, 33, 33, 33, 33,
971
+ 33, 33, 33, 33, 33, 70, 33, 70,
972
+ 70, 71, 70, 70, 71, 71, 71, 71,
973
+ 71, 71, 71, 71, 71, 71, 70, 70,
974
+ 70, 70, 70, 70, 70, 33, 33, 33,
975
+ 33, 33, 33, 33, 33, 33, 33, 33,
976
+ 33, 33, 33, 33, 33, 33, 33, 33,
977
+ 33, 33, 33, 33, 33, 33, 33, 70,
978
+ 70, 70, 70, 71, 70, 33, 33, 33,
979
+ 33, 33, 33, 33, 33, 33, 33, 33,
980
+ 33, 33, 155, 33, 33, 33, 33, 33,
981
+ 33, 33, 33, 33, 33, 33, 33, 70,
982
+ 33, 70, 70, 71, 70, 70, 71, 71,
983
+ 71, 71, 71, 71, 71, 71, 71, 71,
984
+ 70, 70, 70, 70, 70, 70, 70, 33,
985
+ 33, 33, 33, 33, 33, 33, 33, 33,
986
+ 33, 33, 33, 33, 33, 33, 33, 33,
987
+ 33, 33, 33, 33, 33, 33, 33, 33,
988
+ 33, 70, 70, 70, 70, 71, 70, 33,
989
+ 33, 33, 33, 33, 33, 33, 33, 33,
990
+ 33, 33, 33, 33, 33, 33, 33, 33,
991
+ 33, 33, 109, 33, 33, 33, 33, 33,
992
+ 33, 70, 33, 70, 70, 71, 70, 70,
993
+ 71, 71, 71, 71, 71, 71, 71, 71,
994
+ 71, 71, 70, 70, 70, 70, 70, 70,
995
+ 70, 33, 33, 33, 33, 33, 33, 33,
996
+ 33, 33, 33, 33, 33, 33, 33, 33,
997
+ 33, 33, 33, 33, 33, 33, 33, 33,
998
+ 33, 33, 33, 70, 70, 70, 70, 71,
999
+ 70, 33, 33, 33, 33, 156, 33, 33,
1000
+ 33, 33, 33, 33, 33, 33, 33, 157,
1001
+ 33, 33, 33, 33, 33, 33, 33, 33,
1002
+ 33, 33, 33, 70, 33, 70, 70, 71,
1003
+ 70, 70, 71, 71, 71, 71, 71, 71,
1004
+ 71, 71, 71, 71, 70, 70, 70, 70,
1005
+ 70, 70, 70, 33, 33, 33, 33, 33,
1006
+ 33, 33, 33, 33, 33, 33, 33, 33,
1007
+ 33, 33, 33, 33, 33, 33, 33, 33,
1008
+ 33, 33, 33, 33, 33, 70, 70, 70,
1009
+ 70, 71, 70, 33, 33, 158, 33, 33,
1010
+ 33, 33, 33, 33, 33, 33, 33, 33,
1011
+ 33, 33, 33, 33, 33, 33, 33, 33,
1012
+ 33, 33, 33, 33, 33, 70, 33, 70,
1013
+ 70, 71, 70, 70, 71, 71, 71, 71,
1014
+ 71, 71, 71, 71, 71, 71, 70, 70,
1015
+ 70, 70, 70, 70, 70, 33, 33, 33,
1016
+ 33, 33, 33, 33, 33, 33, 33, 33,
1017
+ 33, 33, 33, 33, 33, 33, 33, 33,
1018
+ 33, 33, 33, 33, 33, 33, 33, 70,
1019
+ 70, 70, 70, 71, 70, 33, 33, 33,
1020
+ 33, 159, 33, 33, 33, 33, 33, 33,
1021
+ 33, 33, 33, 33, 33, 33, 33, 33,
1022
+ 33, 33, 33, 33, 33, 33, 33, 70,
1023
+ 33, 70, 70, 71, 70, 70, 71, 71,
1024
+ 71, 71, 71, 71, 71, 71, 71, 71,
1025
+ 70, 70, 70, 70, 70, 70, 70, 33,
1026
+ 33, 33, 33, 33, 33, 33, 33, 33,
1027
+ 33, 33, 33, 33, 33, 33, 33, 33,
1028
+ 33, 33, 33, 33, 33, 33, 33, 33,
1029
+ 33, 70, 70, 70, 70, 71, 70, 33,
1030
+ 33, 33, 132, 33, 33, 33, 33, 33,
1031
+ 33, 33, 33, 33, 33, 33, 33, 33,
1032
+ 33, 33, 33, 33, 33, 33, 33, 33,
1033
+ 33, 70, 33, 70, 70, 71, 70, 70,
1034
+ 71, 71, 71, 71, 71, 71, 71, 71,
1035
+ 71, 71, 70, 70, 70, 70, 70, 70,
1036
+ 70, 33, 33, 33, 33, 33, 33, 33,
1037
+ 33, 33, 33, 33, 33, 33, 33, 33,
1038
+ 33, 33, 33, 33, 33, 33, 33, 33,
1039
+ 33, 33, 33, 70, 70, 70, 70, 71,
1040
+ 70, 33, 33, 160, 33, 33, 33, 33,
1041
+ 33, 33, 33, 33, 33, 33, 33, 33,
1042
+ 33, 33, 33, 33, 33, 33, 33, 33,
1043
+ 33, 33, 33, 70, 33, 70, 70, 71,
1044
+ 70, 70, 71, 71, 71, 71, 71, 71,
1045
+ 71, 71, 71, 71, 70, 70, 70, 70,
1046
+ 70, 70, 70, 33, 33, 33, 33, 33,
1047
+ 33, 33, 33, 33, 33, 33, 33, 33,
1048
+ 33, 33, 33, 33, 33, 33, 33, 33,
1049
+ 33, 33, 33, 33, 33, 70, 70, 70,
1050
+ 70, 71, 70, 33, 33, 33, 33, 161,
1051
+ 33, 33, 33, 33, 33, 33, 33, 33,
1052
+ 33, 33, 33, 33, 33, 33, 33, 33,
1053
+ 33, 33, 33, 33, 33, 70, 33, 70,
1054
+ 70, 71, 70, 70, 71, 71, 71, 71,
1055
+ 71, 71, 71, 71, 71, 71, 70, 70,
1056
+ 70, 70, 70, 70, 70, 33, 33, 33,
1057
+ 33, 33, 33, 33, 33, 33, 33, 33,
1058
+ 33, 33, 33, 33, 33, 33, 33, 33,
1059
+ 33, 33, 33, 33, 33, 33, 33, 70,
1060
+ 70, 70, 70, 71, 70, 33, 33, 33,
1061
+ 33, 33, 33, 33, 33, 33, 33, 33,
1062
+ 33, 33, 33, 33, 33, 33, 33, 162,
1063
+ 33, 33, 33, 33, 33, 33, 33, 70,
1064
+ 33, 70, 70, 71, 70, 70, 71, 71,
1065
+ 71, 71, 71, 71, 71, 71, 71, 71,
1066
+ 70, 70, 70, 70, 70, 70, 70, 33,
1067
+ 33, 33, 33, 33, 33, 33, 33, 33,
1068
+ 33, 33, 33, 33, 33, 33, 33, 33,
1069
+ 33, 33, 33, 33, 33, 33, 33, 33,
1070
+ 33, 70, 70, 70, 70, 71, 70, 33,
1071
+ 33, 33, 33, 33, 33, 33, 33, 33,
1072
+ 33, 33, 33, 33, 33, 33, 33, 33,
1073
+ 33, 163, 33, 33, 33, 33, 33, 33,
1074
+ 33, 70, 33, 70, 70, 71, 70, 70,
1075
+ 71, 71, 71, 71, 71, 71, 71, 71,
1076
+ 71, 71, 70, 70, 70, 70, 70, 70,
1077
+ 70, 33, 33, 33, 33, 33, 33, 33,
1078
+ 33, 33, 33, 33, 33, 33, 33, 33,
1079
+ 33, 33, 33, 33, 33, 33, 33, 33,
1080
+ 33, 33, 33, 70, 70, 70, 70, 71,
1081
+ 70, 33, 33, 33, 33, 33, 33, 33,
1082
+ 33, 164, 33, 33, 33, 33, 33, 33,
1083
+ 33, 33, 33, 33, 33, 33, 33, 33,
1084
+ 33, 33, 33, 70, 33, 70, 70, 71,
1085
+ 70, 70, 71, 71, 71, 71, 71, 71,
1086
+ 71, 71, 71, 71, 70, 70, 70, 70,
1087
+ 70, 70, 70, 33, 33, 33, 33, 33,
1088
+ 33, 33, 33, 33, 33, 33, 33, 33,
1089
+ 33, 33, 33, 33, 33, 33, 33, 33,
1090
+ 33, 33, 33, 33, 33, 70, 70, 70,
1091
+ 70, 71, 70, 33, 33, 33, 33, 33,
1092
+ 33, 33, 33, 33, 33, 33, 33, 33,
1093
+ 165, 33, 33, 33, 33, 33, 33, 33,
1094
+ 33, 33, 33, 33, 33, 70, 33, 70,
1095
+ 70, 71, 70, 70, 71, 71, 71, 71,
1096
+ 71, 71, 71, 71, 71, 71, 70, 70,
1097
+ 70, 70, 70, 70, 70, 33, 33, 33,
1098
+ 33, 33, 33, 33, 33, 33, 33, 33,
1099
+ 33, 33, 33, 33, 33, 33, 33, 33,
1100
+ 33, 33, 33, 33, 33, 33, 33, 70,
1101
+ 70, 70, 70, 71, 70, 33, 33, 33,
1102
+ 33, 33, 33, 166, 33, 33, 33, 33,
1103
+ 33, 33, 33, 33, 33, 33, 33, 33,
1104
+ 33, 33, 33, 33, 33, 33, 33, 70,
1105
+ 33, 70, 70, 167, 70, 70, 71, 71,
1106
+ 71, 71, 71, 71, 71, 71, 71, 71,
1107
+ 70, 70, 70, 70, 70, 70, 70, 33,
1108
+ 33, 33, 33, 33, 33, 33, 33, 33,
1109
+ 33, 33, 33, 33, 33, 33, 33, 33,
1110
+ 33, 33, 33, 33, 33, 33, 33, 33,
1111
+ 33, 70, 70, 70, 70, 71, 70, 33,
1112
+ 33, 33, 33, 33, 33, 33, 33, 33,
1113
+ 33, 33, 33, 33, 33, 33, 33, 33,
1114
+ 33, 33, 33, 33, 33, 33, 33, 33,
1115
+ 33, 70, 71, 70, 70, 71, 71, 71,
1116
+ 71, 71, 71, 71, 71, 71, 71, 70,
1117
+ 70, 70, 70, 70, 70, 70, 71, 71,
1118
+ 71, 71, 71, 71, 71, 71, 71, 71,
1119
+ 71, 71, 71, 71, 71, 71, 71, 71,
1120
+ 71, 71, 71, 71, 71, 71, 71, 71,
1121
+ 70, 70, 70, 70, 71, 70, 71, 71,
1122
+ 71, 71, 71, 71, 71, 71, 168, 71,
1123
+ 71, 71, 71, 71, 71, 71, 71, 71,
1124
+ 71, 71, 71, 71, 71, 71, 71, 71,
1125
+ 70, 71, 70, 70, 71, 71, 71, 71,
1126
+ 71, 71, 71, 71, 71, 71, 70, 70,
1127
+ 70, 70, 70, 70, 70, 71, 71, 71,
1128
+ 71, 71, 71, 71, 71, 71, 71, 71,
1129
+ 71, 71, 71, 71, 71, 71, 71, 71,
1130
+ 71, 71, 71, 71, 71, 71, 71, 70,
1131
+ 70, 70, 70, 71, 70, 71, 71, 71,
1132
+ 71, 71, 71, 71, 71, 71, 71, 71,
1133
+ 71, 71, 169, 71, 71, 71, 71, 71,
1134
+ 71, 71, 71, 71, 71, 71, 71, 70,
1135
+ 71, 70, 70, 71, 71, 71, 71, 71,
1136
+ 71, 71, 71, 71, 71, 70, 70, 70,
1137
+ 70, 70, 70, 70, 71, 71, 71, 71,
1138
+ 71, 71, 71, 71, 71, 71, 71, 71,
1139
+ 71, 71, 71, 71, 71, 71, 71, 71,
1140
+ 71, 71, 71, 71, 71, 71, 70, 70,
1141
+ 70, 70, 71, 70, 71, 71, 71, 71,
1142
+ 71, 71, 71, 71, 71, 71, 71, 71,
1143
+ 71, 71, 71, 71, 71, 71, 170, 71,
1144
+ 71, 71, 71, 71, 71, 71, 70, 71,
1145
+ 70, 70, 71, 71, 71, 71, 71, 71,
1146
+ 71, 71, 71, 71, 70, 70, 70, 70,
1147
+ 70, 70, 70, 71, 71, 71, 71, 71,
1148
+ 71, 71, 71, 71, 71, 71, 71, 71,
1149
+ 71, 71, 71, 71, 71, 71, 71, 71,
1150
+ 71, 71, 71, 71, 71, 70, 70, 70,
1151
+ 70, 71, 70, 71, 71, 71, 71, 71,
1152
+ 71, 71, 71, 71, 71, 71, 71, 71,
1153
+ 71, 71, 71, 71, 71, 71, 171, 71,
1154
+ 71, 71, 71, 71, 71, 70, 71, 70,
1155
+ 70, 71, 71, 71, 71, 71, 71, 71,
1156
+ 71, 71, 71, 70, 70, 70, 70, 70,
1157
+ 70, 70, 71, 71, 71, 71, 71, 71,
1158
+ 71, 71, 71, 71, 71, 71, 71, 71,
1159
+ 71, 71, 71, 71, 71, 71, 71, 71,
1160
+ 71, 71, 71, 71, 70, 70, 70, 70,
1161
+ 71, 70, 71, 71, 71, 71, 71, 71,
1162
+ 71, 71, 71, 71, 71, 71, 71, 71,
1163
+ 71, 71, 71, 172, 71, 71, 71, 71,
1164
+ 71, 71, 71, 71, 70, 71, 70, 70,
1165
+ 71, 71, 71, 71, 71, 71, 71, 71,
1166
+ 71, 71, 70, 70, 70, 70, 70, 70,
1167
+ 70, 71, 71, 71, 71, 71, 71, 71,
1168
+ 71, 71, 71, 71, 71, 71, 71, 71,
1169
+ 71, 71, 71, 71, 71, 71, 71, 71,
1170
+ 71, 71, 71, 70, 70, 70, 70, 71,
1171
+ 70, 71, 71, 71, 71, 71, 71, 71,
1172
+ 71, 71, 71, 71, 71, 71, 71, 71,
1173
+ 71, 71, 71, 71, 71, 173, 71, 71,
1174
+ 71, 71, 71, 70, 71, 70, 70, 71,
1175
+ 71, 71, 71, 71, 71, 71, 71, 71,
1176
+ 71, 70, 70, 70, 70, 70, 70, 70,
1177
+ 71, 71, 71, 71, 71, 71, 71, 71,
1178
+ 71, 71, 71, 71, 71, 71, 71, 71,
1179
+ 71, 71, 71, 71, 71, 71, 71, 71,
1180
+ 71, 71, 70, 70, 70, 70, 71, 70,
1181
+ 71, 71, 174, 71, 71, 71, 71, 71,
1182
+ 71, 71, 71, 71, 71, 71, 71, 71,
1183
+ 71, 71, 71, 71, 71, 71, 71, 71,
1184
+ 71, 71, 70, 71, 70, 70, 71, 71,
1185
+ 71, 71, 71, 71, 71, 71, 71, 71,
1186
+ 70, 70, 70, 70, 70, 70, 70, 71,
1187
+ 71, 71, 71, 71, 71, 71, 71, 71,
1188
+ 71, 71, 71, 71, 71, 71, 71, 71,
1189
+ 71, 71, 71, 71, 71, 71, 71, 71,
1190
+ 71, 70, 70, 70, 70, 71, 70, 71,
1191
+ 71, 71, 71, 71, 71, 71, 71, 71,
1192
+ 71, 71, 71, 71, 71, 71, 71, 71,
1193
+ 71, 71, 175, 71, 71, 71, 71, 71,
1194
+ 71, 70, 71, 70, 70, 71, 71, 71,
1195
+ 71, 71, 71, 71, 71, 71, 71, 70,
1196
+ 70, 70, 70, 70, 70, 70, 71, 71,
1197
+ 71, 71, 71, 71, 71, 71, 71, 71,
1198
+ 71, 71, 71, 71, 71, 71, 71, 71,
1199
+ 71, 71, 71, 71, 71, 71, 71, 71,
1200
+ 70, 70, 70, 70, 71, 70, 71, 71,
1201
+ 71, 71, 71, 71, 71, 71, 176, 71,
1202
+ 71, 71, 71, 71, 71, 71, 71, 71,
1203
+ 71, 71, 71, 71, 71, 71, 71, 71,
1204
+ 70, 71, 70, 70, 71, 71, 71, 71,
1205
+ 71, 71, 71, 71, 71, 71, 70, 70,
1206
+ 70, 70, 70, 70, 70, 71, 71, 71,
1207
+ 71, 71, 71, 71, 71, 71, 71, 71,
1208
+ 71, 71, 71, 71, 71, 71, 71, 71,
1209
+ 71, 71, 71, 71, 71, 71, 71, 70,
1210
+ 70, 70, 70, 71, 70, 71, 71, 71,
1211
+ 71, 71, 71, 71, 71, 71, 71, 71,
1212
+ 71, 71, 71, 177, 71, 71, 71, 71,
1213
+ 71, 71, 71, 71, 71, 71, 71, 70,
1214
+ 71, 70, 70, 71, 71, 71, 71, 71,
1215
+ 71, 71, 71, 71, 71, 70, 70, 70,
1216
+ 70, 70, 70, 70, 71, 71, 71, 71,
1217
+ 71, 71, 71, 71, 71, 71, 71, 71,
1218
+ 71, 71, 71, 71, 71, 71, 71, 71,
1219
+ 71, 71, 71, 71, 71, 71, 70, 70,
1220
+ 70, 70, 71, 70, 71, 71, 71, 71,
1221
+ 71, 71, 71, 71, 71, 71, 71, 71,
1222
+ 71, 178, 71, 71, 71, 71, 71, 71,
1223
+ 71, 71, 71, 71, 71, 71, 70, 119,
1224
+ 70, 70, 70, 70, 71, 70, 70, 71,
1225
+ 71, 71, 71, 71, 71, 71, 71, 71,
1226
+ 71, 70, 70, 70, 70, 70, 70, 70,
1227
+ 71, 71, 71, 71, 71, 71, 71, 71,
1228
+ 71, 71, 71, 71, 71, 71, 71, 71,
1229
+ 71, 71, 71, 71, 71, 71, 71, 71,
1230
+ 71, 71, 70, 70, 70, 70, 71, 70,
1231
+ 71, 71, 71, 71, 71, 71, 71, 71,
1232
+ 71, 71, 71, 71, 71, 71, 71, 71,
1233
+ 71, 71, 71, 71, 71, 71, 71, 71,
1234
+ 71, 71, 70, 33, 70, 70, 71, 70,
1235
+ 70, 71, 71, 71, 71, 71, 71, 71,
1236
+ 71, 71, 71, 70, 70, 70, 70, 70,
1237
+ 70, 70, 33, 33, 33, 33, 33, 33,
1238
+ 33, 33, 33, 33, 33, 33, 33, 33,
1239
+ 33, 33, 33, 33, 33, 33, 33, 33,
1240
+ 33, 33, 33, 33, 70, 70, 70, 70,
1241
+ 71, 70, 33, 33, 33, 33, 179, 33,
1242
+ 33, 33, 33, 33, 33, 33, 33, 33,
1243
+ 33, 33, 33, 33, 33, 33, 33, 33,
1244
+ 33, 33, 33, 33, 70, 33, 70, 70,
1245
+ 71, 70, 70, 71, 71, 71, 71, 71,
1246
+ 71, 71, 71, 71, 71, 70, 70, 70,
1247
+ 70, 70, 70, 70, 33, 33, 33, 33,
1248
+ 33, 33, 33, 33, 33, 33, 33, 33,
1249
+ 33, 33, 33, 33, 33, 33, 33, 33,
1250
+ 33, 33, 33, 33, 33, 33, 70, 70,
1251
+ 70, 70, 71, 70, 33, 33, 33, 33,
1252
+ 33, 33, 33, 33, 33, 33, 33, 180,
1253
+ 33, 33, 33, 33, 33, 33, 33, 33,
1254
+ 33, 33, 33, 33, 33, 33, 70, 33,
1255
+ 70, 70, 71, 70, 70, 71, 71, 71,
1256
+ 71, 71, 71, 71, 71, 71, 71, 70,
1257
+ 70, 70, 70, 70, 70, 70, 33, 33,
1258
+ 33, 33, 33, 33, 33, 33, 33, 33,
1259
+ 33, 33, 33, 33, 33, 33, 33, 33,
1260
+ 33, 33, 33, 33, 33, 33, 33, 33,
1261
+ 70, 70, 70, 70, 71, 70, 33, 33,
1262
+ 33, 33, 33, 109, 33, 33, 33, 33,
1263
+ 33, 33, 33, 33, 33, 33, 33, 33,
1264
+ 33, 33, 33, 33, 33, 33, 33, 33,
1265
+ 70, 33, 70, 70, 71, 70, 70, 71,
1266
+ 71, 71, 71, 71, 71, 71, 71, 71,
1267
+ 71, 70, 70, 70, 70, 70, 70, 70,
1268
+ 33, 33, 33, 33, 33, 33, 33, 33,
1269
+ 33, 33, 33, 33, 33, 33, 33, 33,
1270
+ 33, 33, 33, 33, 33, 33, 33, 33,
1271
+ 33, 33, 70, 70, 70, 70, 71, 70,
1272
+ 33, 33, 33, 33, 181, 33, 33, 33,
1273
+ 33, 33, 33, 33, 33, 33, 33, 33,
1274
+ 33, 33, 33, 33, 33, 33, 33, 33,
1275
+ 33, 33, 70, 33, 70, 70, 71, 70,
1276
+ 70, 71, 71, 71, 71, 71, 71, 71,
1277
+ 71, 71, 71, 70, 70, 70, 70, 70,
1278
+ 70, 70, 33, 33, 33, 33, 33, 33,
1279
+ 33, 33, 33, 33, 33, 33, 33, 33,
1280
+ 33, 33, 33, 33, 33, 33, 33, 33,
1281
+ 33, 33, 33, 33, 70, 70, 70, 70,
1282
+ 71, 70, 33, 33, 33, 33, 33, 33,
1283
+ 33, 33, 33, 33, 33, 33, 33, 33,
1284
+ 33, 33, 33, 33, 33, 33, 33, 33,
1285
+ 33, 117, 33, 33, 70, 182, 0
1286
+ ]
1287
+
1288
+ class << self
1289
+ attr_accessor :_xpath_lexer_trans_targs
1290
+ private :_xpath_lexer_trans_targs, :_xpath_lexer_trans_targs=
1291
+ end
1292
+ self._xpath_lexer_trans_targs = [
1293
+ 22, 24, 25, 4, 5, 26, 7, 8,
1294
+ 27, 10, 11, 28, 13, 29, 30, 0,
1295
+ 15, 22, 31, 17, 22, 18, 36, 37,
1296
+ 22, 22, 22, 22, 23, 14, 16, 22,
1297
+ 22, 33, 35, 22, 38, 39, 22, 40,
1298
+ 42, 43, 22, 22, 22, 45, 69, 79,
1299
+ 88, 104, 113, 142, 145, 147, 22, 1,
1300
+ 2, 3, 6, 9, 12, 22, 22, 22,
1301
+ 22, 22, 22, 22, 22, 32, 22, 34,
1302
+ 22, 18, 36, 22, 19, 22, 22, 22,
1303
+ 41, 22, 22, 22, 44, 22, 46, 61,
1304
+ 47, 48, 49, 50, 51, 52, 53, 20,
1305
+ 54, 55, 56, 57, 58, 59, 60, 62,
1306
+ 63, 64, 65, 66, 67, 68, 70, 73,
1307
+ 71, 72, 74, 75, 76, 77, 78, 21,
1308
+ 80, 81, 82, 83, 84, 85, 86, 87,
1309
+ 89, 90, 91, 92, 93, 94, 95, 96,
1310
+ 97, 98, 99, 100, 101, 102, 103, 105,
1311
+ 111, 106, 107, 108, 109, 110, 112, 114,
1312
+ 118, 115, 116, 117, 119, 122, 120, 121,
1313
+ 123, 124, 125, 126, 127, 128, 129, 130,
1314
+ 131, 132, 133, 134, 135, 136, 137, 138,
1315
+ 139, 140, 141, 143, 144, 146, 22
1316
+ ]
1317
+
1318
+ class << self
1319
+ attr_accessor :_xpath_lexer_trans_actions
1320
+ private :_xpath_lexer_trans_actions, :_xpath_lexer_trans_actions=
1321
+ end
1322
+ self._xpath_lexer_trans_actions = [
1323
+ 1, 0, 0, 0, 0, 0, 0, 0,
1324
+ 0, 0, 0, 0, 0, 0, 0, 0,
1325
+ 0, 2, 0, 0, 3, 0, 4, 5,
1326
+ 6, 7, 8, 11, 12, 0, 0, 13,
1327
+ 14, 0, 15, 16, 0, 17, 18, 0,
1328
+ 0, 0, 19, 20, 21, 0, 0, 0,
1329
+ 0, 0, 0, 0, 0, 0, 22, 0,
1330
+ 0, 0, 0, 0, 0, 23, 24, 25,
1331
+ 26, 27, 28, 29, 30, 0, 31, 0,
1332
+ 32, 33, 34, 35, 0, 36, 37, 38,
1333
+ 0, 39, 40, 41, 0, 42, 0, 0,
1334
+ 0, 0, 0, 0, 0, 12, 0, 0,
1335
+ 0, 0, 0, 0, 0, 0, 12, 0,
1336
+ 0, 0, 0, 0, 0, 12, 0, 0,
1337
+ 0, 0, 0, 0, 0, 0, 12, 0,
1338
+ 0, 0, 0, 0, 0, 0, 0, 0,
1339
+ 0, 0, 0, 0, 0, 0, 0, 12,
1340
+ 0, 0, 0, 0, 0, 0, 0, 0,
1341
+ 0, 0, 0, 0, 0, 0, 0, 0,
1342
+ 0, 0, 0, 0, 0, 0, 0, 0,
1343
+ 0, 0, 0, 0, 0, 0, 0, 0,
1344
+ 0, 0, 0, 0, 0, 0, 0, 0,
1345
+ 0, 0, 12, 0, 0, 0, 43
1346
+ ]
1347
+
1348
+ class << self
1349
+ attr_accessor :_xpath_lexer_to_state_actions
1350
+ private :_xpath_lexer_to_state_actions, :_xpath_lexer_to_state_actions=
1351
+ end
1352
+ self._xpath_lexer_to_state_actions = [
1353
+ 0, 0, 0, 0, 0, 0, 0, 0,
1354
+ 0, 0, 0, 0, 0, 0, 0, 0,
1355
+ 0, 0, 0, 0, 0, 0, 9, 0,
1356
+ 0, 0, 0, 0, 0, 0, 0, 0,
1357
+ 0, 0, 0, 0, 0, 0, 0, 0,
1358
+ 0, 0, 0, 0, 0, 0, 0, 0,
1359
+ 0, 0, 0, 0, 0, 0, 0, 0,
1360
+ 0, 0, 0, 0, 0, 0, 0, 0,
1361
+ 0, 0, 0, 0, 0, 0, 0, 0,
1362
+ 0, 0, 0, 0, 0, 0, 0, 0,
1363
+ 0, 0, 0, 0, 0, 0, 0, 0,
1364
+ 0, 0, 0, 0, 0, 0, 0, 0,
1365
+ 0, 0, 0, 0, 0, 0, 0, 0,
1366
+ 0, 0, 0, 0, 0, 0, 0, 0,
1367
+ 0, 0, 0, 0, 0, 0, 0, 0,
1368
+ 0, 0, 0, 0, 0, 0, 0, 0,
1369
+ 0, 0, 0, 0, 0, 0, 0, 0,
1370
+ 0, 0, 0, 0, 0, 0, 0, 0,
1371
+ 0, 0, 0, 0
1372
+ ]
1373
+
1374
+ class << self
1375
+ attr_accessor :_xpath_lexer_from_state_actions
1376
+ private :_xpath_lexer_from_state_actions, :_xpath_lexer_from_state_actions=
1377
+ end
1378
+ self._xpath_lexer_from_state_actions = [
1379
+ 0, 0, 0, 0, 0, 0, 0, 0,
1380
+ 0, 0, 0, 0, 0, 0, 0, 0,
1381
+ 0, 0, 0, 0, 0, 0, 10, 0,
1382
+ 0, 0, 0, 0, 0, 0, 0, 0,
1383
+ 0, 0, 0, 0, 0, 0, 0, 0,
1384
+ 0, 0, 0, 0, 0, 0, 0, 0,
1385
+ 0, 0, 0, 0, 0, 0, 0, 0,
1386
+ 0, 0, 0, 0, 0, 0, 0, 0,
1387
+ 0, 0, 0, 0, 0, 0, 0, 0,
1388
+ 0, 0, 0, 0, 0, 0, 0, 0,
1389
+ 0, 0, 0, 0, 0, 0, 0, 0,
1390
+ 0, 0, 0, 0, 0, 0, 0, 0,
1391
+ 0, 0, 0, 0, 0, 0, 0, 0,
1392
+ 0, 0, 0, 0, 0, 0, 0, 0,
1393
+ 0, 0, 0, 0, 0, 0, 0, 0,
1394
+ 0, 0, 0, 0, 0, 0, 0, 0,
1395
+ 0, 0, 0, 0, 0, 0, 0, 0,
1396
+ 0, 0, 0, 0, 0, 0, 0, 0,
1397
+ 0, 0, 0, 0
1398
+ ]
1399
+
1400
+ class << self
1401
+ attr_accessor :_xpath_lexer_eof_trans
1402
+ private :_xpath_lexer_eof_trans, :_xpath_lexer_eof_trans=
1403
+ end
1404
+ self._xpath_lexer_eof_trans = [
1405
+ 0, 1, 1, 1, 1, 1, 1, 1,
1406
+ 1, 1, 1, 1, 1, 1, 0, 0,
1407
+ 0, 0, 21, 21, 25, 25, 0, 55,
1408
+ 62, 63, 64, 65, 66, 67, 68, 69,
1409
+ 69, 71, 71, 73, 76, 78, 79, 55,
1410
+ 80, 82, 83, 84, 86, 71, 71, 71,
1411
+ 71, 71, 71, 71, 71, 71, 71, 71,
1412
+ 71, 71, 71, 71, 71, 71, 71, 71,
1413
+ 71, 71, 71, 71, 71, 71, 71, 71,
1414
+ 71, 71, 71, 71, 71, 71, 71, 71,
1415
+ 71, 71, 71, 71, 71, 71, 71, 71,
1416
+ 71, 71, 71, 71, 71, 71, 71, 71,
1417
+ 71, 71, 71, 71, 71, 71, 71, 71,
1418
+ 71, 71, 71, 71, 71, 71, 71, 71,
1419
+ 71, 71, 71, 71, 71, 71, 71, 71,
1420
+ 71, 71, 71, 71, 71, 71, 71, 71,
1421
+ 71, 71, 71, 71, 71, 71, 71, 71,
1422
+ 71, 71, 71, 71, 71, 71, 71, 71,
1423
+ 71, 71, 71, 183
1424
+ ]
1425
+
1426
+ class << self
1427
+ attr_accessor :xpath_lexer_start
1428
+ end
1429
+ self.xpath_lexer_start = 22;
1430
+ class << self
1431
+ attr_accessor :xpath_lexer_first_final
1432
+ end
1433
+ self.xpath_lexer_first_final = 22;
1434
+ class << self
1435
+ attr_accessor :xpath_lexer_error
1436
+ end
1437
+ self.xpath_lexer_error = 0;
1438
+
1439
+ class << self
1440
+ attr_accessor :xpath_lexer_en_main
1441
+ end
1442
+ self.xpath_lexer_en_main = 22;
1443
+
1444
+
1445
+ # line 37 "lib/oga/xpath/lexer.rl"
1446
+
1447
+ # % fix highlight
1448
+
1449
+ ##
1450
+ # Maps certain XPath axes written in their short form to their long form
1451
+ # equivalents.
1452
+ #
1453
+ # @return [Hash]
1454
+ #
1455
+ AXIS_MAPPING = {
1456
+ '@' => 'attribute',
1457
+ '//' => 'descendant-or-self',
1458
+ '..' => 'parent',
1459
+ '.' => 'self'
1460
+ }
1461
+
1462
+ ##
1463
+ # Axes that require a separate `node()` call to be emitted.
1464
+ #
1465
+ # @return [Array]
1466
+ #
1467
+ AXIS_EMIT_NODE = %w{descendant-or-self parent self}
1468
+
1469
+ ##
1470
+ # Axes that require an extra T_SLASH token to be emitted.
1471
+ #
1472
+ # @return [Array]
1473
+ #
1474
+ AXIS_EMIT_EXTRA_SLASH = %w{descendant-or-self}
1475
+
1476
+ ##
1477
+ # @param [String] data The data to lex.
1478
+ #
1479
+ def initialize(data)
1480
+ @data = data
1481
+ end
1482
+
1483
+ ##
1484
+ # Gathers all the tokens for the input and returns them as an Array.
1485
+ #
1486
+ # @see [#advance]
1487
+ # @return [Array]
1488
+ #
1489
+ def lex
1490
+ tokens = []
1491
+
1492
+ advance do |type, value|
1493
+ tokens << [type, value]
1494
+ end
1495
+
1496
+ return tokens
1497
+ end
1498
+
1499
+ ##
1500
+ # Advances through the input and generates the corresponding tokens. Each
1501
+ # token is yielded to the supplied block.
1502
+ #
1503
+ # Each token is an Array in the following format:
1504
+ #
1505
+ # [TYPE, VALUE]
1506
+ #
1507
+ # The type is a symbol, the value is either nil or a String.
1508
+ #
1509
+ # This method stores the supplied block in `@block` and resets it after
1510
+ # the lexer loop has finished.
1511
+ #
1512
+ # @see [#add_token]
1513
+ #
1514
+ def advance(&block)
1515
+ @block = block
1516
+
1517
+ data = @data # saves ivar lookups while lexing.
1518
+ ts = nil
1519
+ te = nil
1520
+ stack = []
1521
+ top = 0
1522
+ cs = self.class.xpath_lexer_start
1523
+ act = 0
1524
+ eof = @data.bytesize
1525
+ p = 0
1526
+ pe = eof
1527
+
1528
+ _xpath_lexer_eof_trans = self.class.send(:_xpath_lexer_eof_trans)
1529
+ _xpath_lexer_from_state_actions = self.class.send(:_xpath_lexer_from_state_actions)
1530
+ _xpath_lexer_index_offsets = self.class.send(:_xpath_lexer_index_offsets)
1531
+ _xpath_lexer_indicies = self.class.send(:_xpath_lexer_indicies)
1532
+ _xpath_lexer_key_spans = self.class.send(:_xpath_lexer_key_spans)
1533
+ _xpath_lexer_to_state_actions = self.class.send(:_xpath_lexer_to_state_actions)
1534
+ _xpath_lexer_trans_actions = self.class.send(:_xpath_lexer_trans_actions)
1535
+ _xpath_lexer_trans_keys = self.class.send(:_xpath_lexer_trans_keys)
1536
+ _xpath_lexer_trans_targs = self.class.send(:_xpath_lexer_trans_targs)
1537
+
1538
+
1539
+ # line 1540 "lib/oga/xpath/lexer.rb"
1540
+ begin
1541
+ testEof = false
1542
+ _slen, _trans, _keys, _inds, _acts, _nacts = nil
1543
+ _goto_level = 0
1544
+ _resume = 10
1545
+ _eof_trans = 15
1546
+ _again = 20
1547
+ _test_eof = 30
1548
+ _out = 40
1549
+ while true
1550
+ if _goto_level <= 0
1551
+ if p == pe
1552
+ _goto_level = _test_eof
1553
+ next
1554
+ end
1555
+ if cs == 0
1556
+ _goto_level = _out
1557
+ next
1558
+ end
1559
+ end
1560
+ if _goto_level <= _resume
1561
+ case _xpath_lexer_from_state_actions[cs]
1562
+ when 10 then
1563
+ # line 1 "NONE"
1564
+ begin
1565
+ ts = p
1566
+ end
1567
+ # line 1568 "lib/oga/xpath/lexer.rb"
1568
+ end
1569
+ _keys = cs << 1
1570
+ _inds = _xpath_lexer_index_offsets[cs]
1571
+ _slen = _xpath_lexer_key_spans[cs]
1572
+ _wide = (data.getbyte(p) || 0)
1573
+ _trans = if ( _slen > 0 &&
1574
+ _xpath_lexer_trans_keys[_keys] <= ( _wide) &&
1575
+ ( _wide) <= _xpath_lexer_trans_keys[_keys + 1]
1576
+ ) then
1577
+ _xpath_lexer_indicies[ _inds + ( _wide) - _xpath_lexer_trans_keys[_keys] ]
1578
+ else
1579
+ _xpath_lexer_indicies[ _inds + _slen ]
1580
+ end
1581
+ end
1582
+ if _goto_level <= _eof_trans
1583
+ cs = _xpath_lexer_trans_targs[_trans]
1584
+ if _xpath_lexer_trans_actions[_trans] != 0
1585
+ case _xpath_lexer_trans_actions[_trans]
1586
+ when 17 then
1587
+ # line 184 "lib/oga/xpath/lexer.rl"
1588
+ begin
1589
+ add_token(:T_SLASH) end
1590
+ when 33 then
1591
+ # line 294 "lib/oga/xpath/lexer.rl"
1592
+ begin
1593
+ add_token(:T_ADD) end
1594
+ when 12 then
1595
+ # line 1 "NONE"
1596
+ begin
1597
+ te = p+1
1598
+ end
1599
+ when 11 then
1600
+ # line 361 "lib/oga/xpath/lexer.rl"
1601
+ begin
1602
+ te = p+1
1603
+ end
1604
+ when 8 then
1605
+ # line 342 "lib/oga/xpath/lexer.rl"
1606
+ begin
1607
+ te = p+1
1608
+ begin
1609
+ emit(:T_TYPE_TEST, ts, te - 2)
1610
+ end
1611
+ end
1612
+ when 20 then
1613
+ # line 365 "lib/oga/xpath/lexer.rl"
1614
+ begin
1615
+ te = p+1
1616
+ begin add_token(:T_LBRACK) end
1617
+ end
1618
+ when 21 then
1619
+ # line 366 "lib/oga/xpath/lexer.rl"
1620
+ begin
1621
+ te = p+1
1622
+ begin add_token(:T_RBRACK) end
1623
+ end
1624
+ when 2 then
1625
+ # line 236 "lib/oga/xpath/lexer.rl"
1626
+ begin
1627
+ te = p+1
1628
+ begin
1629
+ emit(:T_STRING, ts + 1, te - 1)
1630
+ end
1631
+ end
1632
+ when 7 then
1633
+ # line 258 "lib/oga/xpath/lexer.rl"
1634
+ begin
1635
+ te = p+1
1636
+ begin
1637
+ emit(:T_AXIS, ts, te - 2)
1638
+ end
1639
+ end
1640
+ when 19 then
1641
+ # line 270 "lib/oga/xpath/lexer.rl"
1642
+ begin
1643
+ te = p+1
1644
+ begin
1645
+ value = AXIS_MAPPING[slice_input(ts, te)]
1646
+
1647
+ add_token(:T_AXIS, value)
1648
+
1649
+ # Short axes that use node() as their default, implicit test. This is
1650
+ # added on lexer level to make it easier to handle these cases on
1651
+ # parser/evaluator level.
1652
+ if AXIS_EMIT_NODE.include?(value)
1653
+ add_token(:T_TYPE_TEST, 'node')
1654
+
1655
+ if AXIS_EMIT_EXTRA_SLASH.include?(value) and te != eof
1656
+ add_token(:T_SLASH)
1657
+ end
1658
+ end
1659
+ end
1660
+ end
1661
+ when 22 then
1662
+ # line 361 "lib/oga/xpath/lexer.rl"
1663
+ begin
1664
+ te = p
1665
+ p = p - 1; end
1666
+ when 30 then
1667
+ # line 355 "lib/oga/xpath/lexer.rl"
1668
+ begin
1669
+ te = p
1670
+ p = p - 1; begin
1671
+ emit(:T_VAR, ts + 1, te)
1672
+ end
1673
+ end
1674
+ when 35 then
1675
+ # line 211 "lib/oga/xpath/lexer.rl"
1676
+ begin
1677
+ te = p
1678
+ p = p - 1; begin
1679
+ value = slice_input(ts, te).to_i
1680
+
1681
+ add_token(:T_INT, value)
1682
+ end
1683
+ end
1684
+ when 36 then
1685
+ # line 217 "lib/oga/xpath/lexer.rl"
1686
+ begin
1687
+ te = p
1688
+ p = p - 1; begin
1689
+ value = slice_input(ts, te).to_f
1690
+
1691
+ add_token(:T_FLOAT, value)
1692
+ end
1693
+ end
1694
+ when 37 then
1695
+ # line 270 "lib/oga/xpath/lexer.rl"
1696
+ begin
1697
+ te = p
1698
+ p = p - 1; begin
1699
+ value = AXIS_MAPPING[slice_input(ts, te)]
1700
+
1701
+ add_token(:T_AXIS, value)
1702
+
1703
+ # Short axes that use node() as their default, implicit test. This is
1704
+ # added on lexer level to make it easier to handle these cases on
1705
+ # parser/evaluator level.
1706
+ if AXIS_EMIT_NODE.include?(value)
1707
+ add_token(:T_TYPE_TEST, 'node')
1708
+
1709
+ if AXIS_EMIT_EXTRA_SLASH.include?(value) and te != eof
1710
+ add_token(:T_SLASH)
1711
+ end
1712
+ end
1713
+ end
1714
+ end
1715
+ when 31 then
1716
+ # line 197 "lib/oga/xpath/lexer.rl"
1717
+ begin
1718
+ te = p
1719
+ p = p - 1; begin
1720
+ emit(:T_IDENT, ts, te)
1721
+ end
1722
+ end
1723
+ when 1 then
1724
+ # line 361 "lib/oga/xpath/lexer.rl"
1725
+ begin
1726
+ begin p = ((te))-1; end
1727
+ end
1728
+ when 6 then
1729
+ # line 197 "lib/oga/xpath/lexer.rl"
1730
+ begin
1731
+ begin p = ((te))-1; end
1732
+ begin
1733
+ emit(:T_IDENT, ts, te)
1734
+ end
1735
+ end
1736
+ when 3 then
1737
+ # line 1 "NONE"
1738
+ begin
1739
+ case act
1740
+ when 0 then
1741
+ begin begin
1742
+ cs = 0
1743
+ _goto_level = _again
1744
+ next
1745
+ end
1746
+ end
1747
+ when 8 then
1748
+ begin begin p = ((te))-1; end
1749
+
1750
+ value = slice_input(ts, te).to_i
1751
+
1752
+ add_token(:T_INT, value)
1753
+ end
1754
+ when 9 then
1755
+ begin begin p = ((te))-1; end
1756
+
1757
+ value = slice_input(ts, te).to_f
1758
+
1759
+ add_token(:T_FLOAT, value)
1760
+ end
1761
+ else
1762
+ begin begin p = ((te))-1; end
1763
+ end
1764
+ end
1765
+ end
1766
+ when 13 then
1767
+ # line 185 "lib/oga/xpath/lexer.rl"
1768
+ begin
1769
+ add_token(:T_LPAREN) end
1770
+ # line 361 "lib/oga/xpath/lexer.rl"
1771
+ begin
1772
+ te = p+1
1773
+ end
1774
+ when 14 then
1775
+ # line 186 "lib/oga/xpath/lexer.rl"
1776
+ begin
1777
+ add_token(:T_RPAREN) end
1778
+ # line 361 "lib/oga/xpath/lexer.rl"
1779
+ begin
1780
+ te = p+1
1781
+ end
1782
+ when 16 then
1783
+ # line 187 "lib/oga/xpath/lexer.rl"
1784
+ begin
1785
+ add_token(:T_COMMA) end
1786
+ # line 361 "lib/oga/xpath/lexer.rl"
1787
+ begin
1788
+ te = p+1
1789
+ end
1790
+ when 18 then
1791
+ # line 188 "lib/oga/xpath/lexer.rl"
1792
+ begin
1793
+ add_token(:T_COLON) end
1794
+ # line 361 "lib/oga/xpath/lexer.rl"
1795
+ begin
1796
+ te = p+1
1797
+ end
1798
+ when 43 then
1799
+ # line 293 "lib/oga/xpath/lexer.rl"
1800
+ begin
1801
+ add_token(:T_PIPE) end
1802
+ # line 360 "lib/oga/xpath/lexer.rl"
1803
+ begin
1804
+ te = p
1805
+ p = p - 1; end
1806
+ when 32 then
1807
+ # line 294 "lib/oga/xpath/lexer.rl"
1808
+ begin
1809
+ add_token(:T_ADD) end
1810
+ # line 360 "lib/oga/xpath/lexer.rl"
1811
+ begin
1812
+ te = p
1813
+ p = p - 1; end
1814
+ when 40 then
1815
+ # line 295 "lib/oga/xpath/lexer.rl"
1816
+ begin
1817
+ add_token(:T_EQ) end
1818
+ # line 360 "lib/oga/xpath/lexer.rl"
1819
+ begin
1820
+ te = p
1821
+ p = p - 1; end
1822
+ when 29 then
1823
+ # line 296 "lib/oga/xpath/lexer.rl"
1824
+ begin
1825
+ add_token(:T_NEQ) end
1826
+ # line 360 "lib/oga/xpath/lexer.rl"
1827
+ begin
1828
+ te = p
1829
+ p = p - 1; end
1830
+ when 38 then
1831
+ # line 297 "lib/oga/xpath/lexer.rl"
1832
+ begin
1833
+ add_token(:T_LT) end
1834
+ # line 360 "lib/oga/xpath/lexer.rl"
1835
+ begin
1836
+ te = p
1837
+ p = p - 1; end
1838
+ when 41 then
1839
+ # line 298 "lib/oga/xpath/lexer.rl"
1840
+ begin
1841
+ add_token(:T_GT) end
1842
+ # line 360 "lib/oga/xpath/lexer.rl"
1843
+ begin
1844
+ te = p
1845
+ p = p - 1; end
1846
+ when 39 then
1847
+ # line 299 "lib/oga/xpath/lexer.rl"
1848
+ begin
1849
+ add_token(:T_LTE) end
1850
+ # line 360 "lib/oga/xpath/lexer.rl"
1851
+ begin
1852
+ te = p
1853
+ p = p - 1; end
1854
+ when 42 then
1855
+ # line 300 "lib/oga/xpath/lexer.rl"
1856
+ begin
1857
+ add_token(:T_GTE) end
1858
+ # line 360 "lib/oga/xpath/lexer.rl"
1859
+ begin
1860
+ te = p
1861
+ p = p - 1; end
1862
+ when 25 then
1863
+ # line 310 "lib/oga/xpath/lexer.rl"
1864
+ begin
1865
+ add_token(:T_AND) end
1866
+ # line 360 "lib/oga/xpath/lexer.rl"
1867
+ begin
1868
+ te = p
1869
+ p = p - 1; end
1870
+ when 28 then
1871
+ # line 311 "lib/oga/xpath/lexer.rl"
1872
+ begin
1873
+ add_token(:T_OR) end
1874
+ # line 360 "lib/oga/xpath/lexer.rl"
1875
+ begin
1876
+ te = p
1877
+ p = p - 1; end
1878
+ when 26 then
1879
+ # line 312 "lib/oga/xpath/lexer.rl"
1880
+ begin
1881
+ add_token(:T_DIV) end
1882
+ # line 360 "lib/oga/xpath/lexer.rl"
1883
+ begin
1884
+ te = p
1885
+ p = p - 1; end
1886
+ when 27 then
1887
+ # line 313 "lib/oga/xpath/lexer.rl"
1888
+ begin
1889
+ add_token(:T_MOD) end
1890
+ # line 360 "lib/oga/xpath/lexer.rl"
1891
+ begin
1892
+ te = p
1893
+ p = p - 1; end
1894
+ when 23 then
1895
+ # line 314 "lib/oga/xpath/lexer.rl"
1896
+ begin
1897
+ add_token(:T_MUL) end
1898
+ # line 360 "lib/oga/xpath/lexer.rl"
1899
+ begin
1900
+ te = p
1901
+ p = p - 1; end
1902
+ when 24 then
1903
+ # line 315 "lib/oga/xpath/lexer.rl"
1904
+ begin
1905
+ add_token(:T_SUB) end
1906
+ # line 360 "lib/oga/xpath/lexer.rl"
1907
+ begin
1908
+ te = p
1909
+ p = p - 1; end
1910
+ when 15 then
1911
+ # line 1 "NONE"
1912
+ begin
1913
+ te = p+1
1914
+ end
1915
+ # line 360 "lib/oga/xpath/lexer.rl"
1916
+ begin
1917
+ act = 1; end
1918
+ when 4 then
1919
+ # line 1 "NONE"
1920
+ begin
1921
+ te = p+1
1922
+ end
1923
+ # line 211 "lib/oga/xpath/lexer.rl"
1924
+ begin
1925
+ act = 8; end
1926
+ when 5 then
1927
+ # line 1 "NONE"
1928
+ begin
1929
+ te = p+1
1930
+ end
1931
+ # line 217 "lib/oga/xpath/lexer.rl"
1932
+ begin
1933
+ act = 9; end
1934
+ when 34 then
1935
+ # line 1 "NONE"
1936
+ begin
1937
+ te = p+1
1938
+ end
1939
+ # line 294 "lib/oga/xpath/lexer.rl"
1940
+ begin
1941
+ add_token(:T_ADD) end
1942
+ # line 211 "lib/oga/xpath/lexer.rl"
1943
+ begin
1944
+ act = 8; end
1945
+ # line 1945 "lib/oga/xpath/lexer.rb"
1946
+ end
1947
+ end
1948
+ end
1949
+ if _goto_level <= _again
1950
+ case _xpath_lexer_to_state_actions[cs]
1951
+ when 9 then
1952
+ # line 1 "NONE"
1953
+ begin
1954
+ ts = nil; end
1955
+ # line 1 "NONE"
1956
+ begin
1957
+ act = 0
1958
+ end
1959
+ # line 1959 "lib/oga/xpath/lexer.rb"
1960
+ end
1961
+
1962
+ if cs == 0
1963
+ _goto_level = _out
1964
+ next
1965
+ end
1966
+ p += 1
1967
+ if p != pe
1968
+ _goto_level = _resume
1969
+ next
1970
+ end
1971
+ end
1972
+ if _goto_level <= _test_eof
1973
+ if p == eof
1974
+ if _xpath_lexer_eof_trans[cs] > 0
1975
+ _trans = _xpath_lexer_eof_trans[cs] - 1;
1976
+ _goto_level = _eof_trans
1977
+ next;
1978
+ end
1979
+ end
1980
+
1981
+ end
1982
+ if _goto_level <= _out
1983
+ break
1984
+ end
1985
+ end
1986
+ end
1987
+
1988
+ # line 130 "lib/oga/xpath/lexer.rl"
1989
+
1990
+ # % fix highlight
1991
+ ensure
1992
+ @block = nil
1993
+ end
1994
+
1995
+ private
1996
+
1997
+ ##
1998
+ # Emits a token of which the value is based on the supplied start/stop
1999
+ # position.
2000
+ #
2001
+ # @param [Symbol] type The token type.
2002
+ # @param [Fixnum] start
2003
+ # @param [Fixnum] stop
2004
+ #
2005
+ # @see [#text]
2006
+ # @see [#add_token]
2007
+ #
2008
+ def emit(type, start, stop)
2009
+ value = slice_input(start, stop)
2010
+
2011
+ add_token(type, value)
2012
+ end
2013
+
2014
+ ##
2015
+ # Returns the text between the specified start and stop position.
2016
+ #
2017
+ # @param [Fixnum] start
2018
+ # @param [Fixnum] stop
2019
+ # @return [String]
2020
+ #
2021
+ def slice_input(start, stop)
2022
+ return @data.byteslice(start, stop - start)
2023
+ end
2024
+
2025
+ ##
2026
+ # Yields a new token to the supplied block.
2027
+ #
2028
+ # @param [Symbol] type The token type.
2029
+ # @param [String] value The token value.
2030
+ #
2031
+ # @yieldparam [Symbol] type
2032
+ # @yieldparam [String|NilClass] value
2033
+ #
2034
+ def add_token(type, value = nil)
2035
+ @block.call(type, value)
2036
+ end
2037
+
2038
+
2039
+ # line 376 "lib/oga/xpath/lexer.rl"
2040
+
2041
+ end # Lexer
2042
+ end # XPath
2043
+ end # Oga