• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2025 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 /*****************************************************************************************
16  ******************** This file was generated by sksllex. Do not edit. *******************
17  *****************************************************************************************/
18 #include "src/sksl/SkSLLexerExt.h"
19 
20 namespace SkSL {
21 
22 using State = uint16_t;
23 static const uint8_t INVALID_CHAR = 18;static const int8_t kMappings[127] = {
24     0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 4, 3, 5, 6, 7, 8, 3, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 22, 22, 22, 22, 23, 24, 25, 26, 27, 28, 29, 30, 30, 31, 32, 33, 30, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 35, 36, 34, 34, 34, 34, 37, 34, 34, 38, 3, 39, 40, 41, 3, 42, 43, 44, 45, 46, 47, 48, 49, 50, 34, 51, 52, 53, 54, 55, 56, 34, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69
25 };
26 struct IndexEntry {
27     uint16_t type : 2;
28     uint16_t pos : 14;
29 };
30 struct FullEntry {
31     State data[70];
32 };
33 struct CompactEntry {
34     State v0 : 6;
35     State v1 : 9;
36     State v2 : 9;
37     uint8_t data[18];
38 };
39 static constexpr FullEntry kFull[] = {
40     {0, 2, 3, 4, 5, 7, 9, 14, 16, 19, 20, 21, 23, 26, 27, 31, 36, 42, 57, 57, 57, 57, 57, 58, 59, 60, 64, 66, 70, 71, 80, 80, 80, 80, 80, 80, 80, 80, 81, 82, 83, 80, 86, 96, 106, 122, 142, 154, 170, 175, 183, 80, 207, 217, 224, 250, 255, 271, 283, 355, 372, 388, 400, 80, 80, 80, 413, 414, 417, 418, },
41     {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, 51, 51, 51, 51, 51, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, },
42     {0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 10, 10, 10, 10, 10, 0, 0, 0, 0, 0, 0, 0, 10, 10, 10, 10, 10, 10, 10, 10, 0, 0, 0, 10, 107, 10, 10, 10, 10, 10, 10, 10, 10, 10, 110, 10, 10, 113, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, 0, 0, 0, },
43     {0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 10, 10, 10, 10, 10, 0, 0, 0, 0, 0, 0, 0, 10, 10, 10, 10, 10, 10, 10, 10, 0, 0, 0, 10, 10, 10, 10, 10, 123, 10, 10, 10, 129, 10, 10, 10, 10, 135, 10, 10, 10, 10, 10, 139, 10, 10, 10, 10, 0, 0, 0, 0, },
44     {0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 10, 10, 10, 10, 10, 0, 0, 0, 0, 0, 0, 0, 10, 10, 10, 10, 10, 10, 10, 10, 0, 0, 0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 143, 10, 146, 10, 10, 10, 10, 10, 10, 10, 10, 148, 10, 10, 0, 0, 0, 0, },
45     {0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 10, 10, 10, 10, 10, 0, 0, 0, 0, 0, 0, 0, 10, 10, 10, 10, 10, 10, 10, 10, 0, 0, 0, 10, 155, 10, 10, 10, 10, 10, 10, 10, 159, 10, 162, 10, 10, 165, 10, 10, 10, 10, 10, 167, 10, 10, 10, 10, 0, 0, 0, 0, },
46     {0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 10, 10, 10, 10, 10, 0, 0, 0, 0, 0, 0, 0, 10, 10, 10, 10, 10, 10, 10, 10, 0, 0, 0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 186, 10, 10, 190, 193, 10, 10, 195, 10, 201, 10, 10, 10, 10, 0, 0, 0, 0, },
47     {0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 10, 10, 10, 10, 10, 0, 0, 0, 0, 0, 0, 0, 10, 10, 10, 10, 10, 10, 10, 10, 0, 0, 0, 10, 256, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 260, 10, 10, 267, 10, 10, 10, 10, 10, 0, 0, 0, 0, },
48     {0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 10, 10, 10, 10, 10, 0, 0, 0, 0, 0, 0, 0, 10, 10, 10, 10, 10, 10, 10, 10, 0, 0, 0, 10, 284, 10, 10, 10, 10, 10, 10, 10, 316, 320, 10, 10, 10, 10, 10, 10, 10, 338, 346, 10, 350, 10, 10, 10, 0, 0, 0, 0, },
49     {0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 290, 297, 308, 10, 10, 0, 0, 0, 0, 0, 0, 0, 10, 313, 10, 10, 10, 10, 10, 10, 0, 0, 0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, 0, 0, 0, },
50     {0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 10, 10, 10, 10, 10, 0, 0, 0, 0, 0, 0, 0, 10, 10, 10, 10, 10, 10, 10, 10, 0, 0, 0, 10, 10, 10, 10, 10, 356, 10, 10, 362, 10, 10, 10, 10, 10, 10, 10, 364, 10, 10, 10, 10, 10, 10, 367, 10, 0, 0, 0, 0, },
51 };
52 static constexpr CompactEntry kCompact[] = {
53     {0, 0, 3, {60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}},
54     {0, 0, 6, {0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}},
55     {0, 0, 8, {0, 48, 0, 0, 0, 0, 0, 240, 255, 15, 252, 255, 255, 255, 255, 255, 15, 0}},
56     {0, 0, 8, {0, 48, 0, 0, 252, 63, 0, 240, 255, 15, 252, 255, 255, 255, 255, 255, 15, 0}},
57     {0, 10, 11, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 186, 170, 170, 170, 170, 10, 0}},
58     {0, 0, 10, {0, 48, 0, 0, 252, 63, 0, 240, 255, 15, 252, 255, 255, 255, 255, 255, 15, 0}},
59     {0, 10, 12, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 170, 186, 170, 10, 0}},
60     {0, 10, 13, {0, 32, 0, 0, 168, 43, 0, 160, 170, 10, 168, 170, 170, 170, 170, 170, 10, 0}},
61     {0, 0, 15, {0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}},
62     {0, 17, 18, {0, 0, 2, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}},
63     {0, 0, 22, {0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}},
64     {0, 24, 25, {0, 0, 0, 2, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}},
65     {28, 29, 30, {0, 0, 0, 16, 0, 0, 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}},
66     {0, 0, 32, {0, 0, 0, 0, 252, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}},
67     {0, 32, 33, {0, 0, 0, 0, 168, 42, 0, 0, 12, 0, 0, 48, 0, 0, 0, 0, 0, 0}},
68     {0, 34, 35, {0, 0, 0, 34, 252, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}},
69     {0, 0, 35, {0, 0, 0, 0, 252, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}},
70     {37, 40, 41, {0, 0, 64, 0, 2, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}},
71     {0, 37, 38, {168, 170, 234, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 10}},
72     {0, 37, 39, {168, 170, 170, 170, 171, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 10}},
73     {0, 0, 40, {204, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 15}},
74     {0, 44, 48, {0, 0, 0, 0, 168, 42, 0, 0, 12, 0, 0, 48, 0, 0, 0, 0, 0, 0}},
75     {0, 44, 45, {0, 0, 0, 0, 168, 42, 0, 0, 12, 0, 0, 48, 0, 0, 0, 0, 0, 0}},
76     {0, 46, 47, {0, 0, 0, 34, 252, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}},
77     {0, 0, 47, {0, 0, 0, 0, 252, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}},
78     {0, 49, 50, {0, 0, 0, 34, 252, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}},
79     {0, 0, 50, {0, 0, 0, 0, 252, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}},
80     {43, 51, 52, {0, 0, 0, 64, 168, 42, 0, 0, 12, 0, 0, 48, 0, 0, 0, 0, 0, 0}},
81     {0, 53, 54, {0, 0, 0, 34, 252, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}},
82     {0, 0, 54, {0, 0, 0, 0, 252, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}},
83     {0, 0, 56, {0, 0, 0, 0, 252, 63, 0, 240, 15, 0, 240, 255, 0, 0, 0, 0, 0, 0}},
84     {0, 61, 63, {0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}},
85     {0, 0, 62, {0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}},
86     {0, 0, 65, {0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}},
87     {0, 67, 68, {0, 0, 0, 0, 0, 0, 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}},
88     {0, 0, 69, {0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}},
89     {0, 72, 74, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 48, 0, 0, 0}},
90     {0, 0, 73, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, 0, 0, 0, 0, 0, 0}},
91     {0, 0, 75, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0}},
92     {0, 0, 76, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0}},
93     {0, 0, 77, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, 0, 0, 0}},
94     {0, 0, 78, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0}},
95     {0, 0, 79, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0}},
96     {0, 84, 85, {0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0}},
97     {10, 87, 89, {0, 16, 0, 0, 84, 21, 0, 80, 85, 5, 84, 85, 85, 85, 229, 85, 5, 0}},
98     {0, 10, 88, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 174, 170, 170, 10, 0}},
99     {0, 10, 90, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 170, 234, 170, 10, 0}},
100     {0, 10, 91, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 170, 174, 170, 10, 0}},
101     {0, 10, 92, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 186, 170, 170, 170, 10, 0}},
102     {0, 10, 93, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 232, 170, 170, 170, 170, 170, 10, 0}},
103     {0, 10, 94, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 170, 170, 171, 10, 0}},
104     {0, 10, 95, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 170, 234, 170, 10, 0}},
105     {0, 10, 88, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 186, 170, 170, 170, 170, 10, 0}},
106     {10, 97, 101, {0, 16, 0, 0, 84, 21, 0, 80, 85, 5, 84, 85, 85, 85, 89, 87, 5, 0}},
107     {0, 10, 98, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 186, 170, 170, 170, 170, 10, 0}},
108     {0, 10, 99, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 184, 170, 170, 170, 170, 170, 10, 0}},
109     {0, 10, 100, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 234, 170, 170, 170, 10, 0}},
110     {0, 10, 102, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 234, 170, 170, 170, 170, 10, 0}},
111     {0, 10, 103, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 234, 170, 170, 170, 170, 10, 0}},
112     {0, 10, 104, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 186, 170, 170, 170, 170, 10, 0}},
113     {0, 10, 105, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 170, 174, 170, 10, 0}},
114     {0, 10, 108, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 170, 186, 170, 10, 0}},
115     {10, 88, 109, {0, 16, 0, 0, 84, 21, 0, 80, 85, 5, 84, 117, 85, 85, 149, 85, 5, 0}},
116     {0, 10, 111, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 184, 170, 170, 170, 170, 170, 10, 0}},
117     {0, 10, 112, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 170, 186, 170, 10, 0}},
118     {0, 10, 88, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 170, 186, 170, 10, 0}},
119     {0, 10, 114, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 186, 170, 170, 10, 0}},
120     {10, 115, 117, {0, 16, 0, 0, 84, 21, 0, 80, 85, 5, 84, 85, 85, 85, 229, 85, 5, 0}},
121     {0, 10, 116, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 170, 234, 170, 10, 0}},
122     {0, 10, 118, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 186, 170, 170, 170, 10, 0}},
123     {0, 10, 119, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 186, 170, 170, 10, 0}},
124     {0, 10, 120, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 170, 170, 171, 10, 0}},
125     {0, 10, 121, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 186, 170, 170, 170, 170, 10, 0}},
126     {0, 10, 124, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 234, 170, 170, 170, 170, 10, 0}},
127     {0, 10, 125, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 184, 170, 170, 170, 170, 170, 10, 0}},
128     {0, 10, 126, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 170, 170, 171, 10, 0}},
129     {0, 10, 127, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 171, 170, 170, 10, 0}},
130     {0, 10, 128, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 170, 234, 170, 10, 0}},
131     {0, 10, 130, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 170, 186, 170, 10, 0}},
132     {0, 10, 131, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 171, 170, 170, 170, 170, 10, 0}},
133     {0, 10, 132, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 184, 170, 170, 170, 170, 170, 10, 0}},
134     {0, 10, 133, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 170, 174, 170, 10, 0}},
135     {0, 10, 134, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 174, 170, 170, 170, 170, 10, 0}},
136     {0, 10, 136, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 170, 170, 171, 10, 0}},
137     {0, 10, 137, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 232, 170, 170, 170, 170, 170, 10, 0}},
138     {0, 10, 138, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 171, 170, 170, 10, 0}},
139     {0, 10, 140, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 186, 170, 170, 170, 170, 10, 0}},
140     {0, 10, 141, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 171, 170, 170, 170, 170, 10, 0}},
141     {0, 10, 88, {0, 32, 0, 0, 232, 47, 0, 160, 170, 10, 168, 170, 170, 170, 170, 170, 10, 0}},
142     {0, 10, 144, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 170, 186, 170, 10, 0}},
143     {0, 10, 145, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 186, 170, 170, 170, 170, 10, 0}},
144     {0, 10, 147, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 170, 170, 171, 10, 0}},
145     {0, 10, 149, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 170, 234, 170, 10, 0}},
146     {0, 10, 150, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 186, 170, 170, 170, 170, 10, 0}},
147     {0, 10, 151, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 170, 174, 170, 10, 0}},
148     {0, 10, 152, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 186, 170, 170, 10, 0}},
149     {0, 10, 153, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 184, 170, 170, 170, 170, 170, 10, 0}},
150     {0, 10, 88, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 171, 170, 170, 10, 0}},
151     {0, 10, 156, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 171, 170, 170, 10, 0}},
152     {0, 10, 157, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 170, 186, 170, 10, 0}},
153     {0, 10, 158, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 186, 170, 170, 170, 170, 10, 0}},
154     {0, 10, 160, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 170, 170, 234, 10, 0}},
155     {0, 10, 161, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 186, 170, 170, 170, 170, 10, 0}},
156     {0, 10, 88, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 174, 170, 170, 170, 170, 10, 0}},
157     {0, 10, 163, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 184, 170, 170, 170, 170, 170, 10, 0}},
158     {0, 10, 164, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 170, 234, 170, 10, 0}},
159     {0, 10, 166, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 170, 174, 170, 10, 0}},
160     {0, 10, 168, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 186, 170, 170, 170, 170, 10, 0}},
161     {0, 10, 169, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 171, 170, 170, 170, 170, 10, 0}},
162     {10, 171, 173, {0, 16, 0, 0, 84, 21, 0, 80, 85, 5, 84, 85, 85, 214, 85, 85, 5, 0}},
163     {0, 10, 172, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 172, 170, 170, 170, 170, 170, 10, 0}},
164     {0, 0, 172, {0, 48, 0, 0, 252, 63, 0, 240, 255, 15, 252, 255, 255, 255, 255, 255, 15, 0}},
165     {0, 10, 174, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 170, 234, 170, 10, 0}},
166     {0, 10, 88, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 234, 170, 170, 10, 0}},
167     {10, 176, 180, {0, 16, 0, 0, 84, 21, 0, 80, 85, 5, 84, 85, 101, 85, 85, 93, 5, 0}},
168     {0, 10, 177, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 171, 170, 170, 170, 10, 0}},
169     {0, 10, 178, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 174, 170, 170, 170, 10, 0}},
170     {0, 10, 179, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 170, 171, 170, 10, 0}},
171     {0, 10, 181, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 186, 170, 170, 170, 170, 10, 0}},
172     {0, 10, 182, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 171, 170, 170, 170, 170, 10, 0}},
173     {10, 184, 185, {0, 16, 0, 0, 84, 21, 0, 80, 85, 5, 84, 149, 85, 117, 85, 85, 5, 0}},
174     {0, 10, 187, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 186, 170, 170, 170, 10, 0}},
175     {0, 10, 188, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 186, 170, 170, 10, 0}},
176     {0, 10, 189, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 186, 170, 170, 170, 170, 10, 0}},
177     {0, 10, 191, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 170, 170, 171, 10, 0}},
178     {0, 10, 192, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 170, 234, 170, 10, 0}},
179     {0, 10, 194, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 170, 170, 171, 10, 0}},
180     {0, 10, 88, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 170, 234, 170, 10, 0}},
181     {0, 10, 196, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 186, 170, 170, 170, 170, 10, 0}},
182     {0, 10, 197, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 170, 174, 170, 10, 0}},
183     {0, 10, 198, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 234, 170, 170, 170, 170, 10, 0}},
184     {0, 10, 199, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 184, 170, 170, 170, 170, 170, 10, 0}},
185     {0, 10, 200, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 171, 170, 170, 170, 170, 10, 0}},
186     {0, 10, 202, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 184, 170, 170, 170, 170, 170, 10, 0}},
187     {0, 10, 203, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 170, 174, 170, 10, 0}},
188     {0, 10, 204, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 186, 170, 170, 170, 10, 0}},
189     {0, 10, 205, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 184, 170, 170, 170, 170, 170, 10, 0}},
190     {0, 10, 206, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 186, 170, 170, 10, 0}},
191     {10, 208, 213, {0, 16, 0, 0, 84, 21, 0, 80, 85, 5, 100, 85, 85, 213, 85, 85, 5, 0}},
192     {0, 10, 209, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 170, 170, 170, 11, 0}},
193     {0, 10, 210, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 234, 170, 170, 10, 0}},
194     {0, 10, 211, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 170, 170, 171, 10, 0}},
195     {0, 10, 212, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 170, 234, 170, 10, 0}},
196     {10, 214, 215, {0, 16, 0, 0, 84, 21, 0, 80, 85, 5, 84, 85, 85, 101, 85, 117, 5, 0}},
197     {0, 10, 88, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 171, 170, 170, 170, 10, 0}},
198     {0, 10, 216, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 170, 171, 170, 10, 0}},
199     {0, 10, 218, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 186, 170, 170, 170, 170, 10, 0}},
200     {0, 10, 219, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 174, 170, 170, 170, 170, 10, 0}},
201     {0, 10, 220, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 186, 170, 170, 170, 10, 0}},
202     {0, 10, 221, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 170, 170, 171, 10, 0}},
203     {0, 10, 222, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 174, 170, 170, 10, 0}},
204     {0, 10, 223, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 170, 171, 170, 10, 0}},
205     {10, 225, 232, {0, 16, 0, 0, 84, 21, 0, 80, 85, 5, 100, 85, 85, 213, 85, 85, 5, 0}},
206     {0, 10, 226, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 174, 170, 170, 10, 0}},
207     {0, 10, 227, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 186, 170, 170, 170, 170, 10, 0}},
208     {0, 10, 228, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 170, 186, 170, 10, 0}},
209     {0, 10, 229, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 170, 171, 170, 10, 0}},
210     {0, 10, 230, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 184, 170, 170, 170, 170, 170, 10, 0}},
211     {0, 10, 231, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 171, 170, 170, 170, 170, 10, 0}},
212     {10, 233, 239, {0, 16, 0, 0, 84, 21, 0, 80, 85, 5, 84, 85, 101, 85, 87, 85, 5, 0}},
213     {0, 10, 234, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 186, 170, 170, 10, 0}},
214     {0, 10, 235, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 171, 170, 170, 10, 0}},
215     {0, 10, 236, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 186, 170, 170, 170, 10, 0}},
216     {0, 10, 237, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 186, 170, 170, 10, 0}},
217     {0, 10, 238, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 186, 170, 170, 170, 170, 10, 0}},
218     {0, 10, 240, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 186, 170, 170, 170, 170, 10, 0}},
219     {0, 10, 241, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 170, 174, 170, 10, 0}},
220     {0, 10, 242, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 170, 186, 170, 10, 0}},
221     {0, 10, 243, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 170, 171, 170, 10, 0}},
222     {0, 10, 244, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 186, 170, 170, 170, 170, 10, 0}},
223     {0, 10, 245, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 171, 170, 170, 170, 170, 10, 0}},
224     {0, 10, 246, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 170, 234, 170, 10, 0}},
225     {0, 10, 247, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 186, 170, 170, 170, 10, 0}},
226     {0, 10, 248, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 170, 170, 174, 10, 0}},
227     {0, 10, 249, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 186, 170, 170, 170, 170, 10, 0}},
228     {0, 10, 251, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 170, 170, 171, 10, 0}},
229     {0, 10, 252, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 170, 234, 170, 10, 0}},
230     {0, 10, 253, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 170, 171, 170, 10, 0}},
231     {0, 10, 254, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 170, 170, 171, 10, 0}},
232     {0, 10, 257, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 171, 170, 170, 170, 170, 10, 0}},
233     {0, 10, 258, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 234, 170, 170, 170, 10, 0}},
234     {0, 10, 259, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 186, 170, 170, 170, 170, 10, 0}},
235     {0, 10, 261, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 186, 170, 170, 170, 170, 10, 0}},
236     {0, 10, 262, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 171, 170, 170, 170, 170, 10, 0}},
237     {0, 10, 263, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 186, 170, 170, 170, 10, 0}},
238     {0, 10, 264, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 170, 186, 170, 10, 0}},
239     {0, 10, 265, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 186, 170, 170, 170, 10, 0}},
240     {0, 10, 266, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 234, 170, 170, 10, 0}},
241     {0, 10, 88, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 186, 170, 170, 10, 0}},
242     {0, 10, 268, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 232, 170, 170, 170, 170, 170, 10, 0}},
243     {0, 10, 269, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 171, 170, 170, 10, 0}},
244     {0, 10, 270, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 186, 170, 170, 170, 10, 0}},
245     {0, 10, 88, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 171, 170, 170, 170, 170, 10, 0}},
246     {0, 10, 272, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 186, 170, 170, 170, 170, 10, 0}},
247     {10, 273, 279, {0, 16, 0, 0, 84, 21, 0, 80, 85, 5, 100, 85, 85, 85, 213, 85, 5, 0}},
248     {0, 10, 274, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 174, 170, 170, 170, 170, 10, 0}},
249     {0, 10, 275, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 234, 170, 170, 10, 0}},
250     {0, 10, 276, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 186, 170, 170, 10, 0}},
251     {0, 10, 277, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 171, 170, 170, 10, 0}},
252     {0, 10, 278, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 170, 170, 170, 11, 0}},
253     {0, 10, 280, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 170, 170, 171, 10, 0}},
254     {0, 10, 281, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 170, 174, 170, 10, 0}},
255     {0, 10, 282, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 186, 170, 170, 10, 0}},
256     {0, 10, 285, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 174, 170, 170, 10, 0}},
257     {0, 10, 286, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 170, 171, 170, 10, 0}},
258     {0, 10, 287, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 171, 170, 170, 10, 0}},
259     {0, 10, 288, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 186, 170, 170, 170, 170, 10, 0}},
260     {0, 10, 289, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 170, 174, 170, 10, 0}},
261     {0, 10, 291, {0, 32, 0, 0, 168, 42, 0, 160, 171, 10, 168, 170, 170, 170, 170, 170, 10, 0}},
262     {0, 10, 292, {0, 32, 0, 0, 168, 42, 0, 160, 170, 11, 168, 170, 170, 170, 170, 170, 10, 0}},
263     {0, 10, 293, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 174, 170, 170, 170, 10, 0}},
264     {0, 10, 294, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 184, 170, 170, 170, 170, 170, 10, 0}},
265     {0, 10, 295, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 174, 170, 170, 170, 170, 10, 0}},
266     {0, 10, 296, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 234, 170, 170, 10, 0}},
267     {0, 10, 88, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 170, 170, 186, 10, 0}},
268     {0, 10, 298, {0, 32, 0, 0, 168, 42, 0, 160, 171, 10, 168, 170, 170, 170, 170, 170, 10, 0}},
269     {10, 292, 299, {0, 16, 0, 0, 84, 21, 0, 80, 213, 6, 84, 85, 85, 85, 85, 85, 5, 0}},
270     {0, 10, 300, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 186, 170, 170, 170, 170, 10, 0}},
271     {0, 10, 301, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 171, 170, 170, 170, 170, 10, 0}},
272     {0, 10, 302, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 170, 234, 170, 10, 0}},
273     {0, 10, 303, {0, 32, 0, 0, 168, 42, 0, 160, 170, 11, 168, 170, 170, 170, 170, 170, 10, 0}},
274     {0, 10, 304, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 174, 170, 170, 170, 10, 0}},
275     {0, 10, 305, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 184, 170, 170, 170, 170, 170, 10, 0}},
276     {0, 10, 306, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 174, 170, 170, 170, 170, 10, 0}},
277     {0, 10, 307, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 234, 170, 170, 10, 0}},
278     {0, 10, 309, {0, 32, 0, 0, 168, 42, 0, 160, 171, 10, 168, 170, 170, 170, 170, 170, 10, 0}},
279     {0, 10, 310, {0, 32, 0, 0, 168, 42, 0, 160, 234, 10, 168, 170, 170, 170, 170, 170, 10, 0}},
280     {0, 10, 311, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 186, 170, 170, 170, 170, 10, 0}},
281     {0, 10, 312, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 171, 170, 170, 170, 170, 10, 0}},
282     {0, 10, 314, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 170, 170, 171, 10, 0}},
283     {0, 10, 315, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 232, 170, 170, 170, 170, 170, 10, 0}},
284     {0, 10, 317, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 170, 170, 170, 14, 0}},
285     {0, 10, 318, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 186, 170, 170, 170, 170, 10, 0}},
286     {0, 10, 319, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 234, 170, 170, 10, 0}},
287     {0, 10, 88, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 234, 170, 170, 170, 170, 10, 0}},
288     {0, 10, 321, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 172, 170, 170, 170, 170, 170, 10, 0}},
289     {0, 10, 322, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 174, 170, 170, 170, 10, 0}},
290     {0, 10, 323, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 184, 170, 170, 170, 170, 170, 10, 0}},
291     {0, 10, 324, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 170, 186, 170, 10, 0}},
292     {0, 10, 325, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 172, 170, 170, 170, 170, 170, 10, 0}},
293     {0, 10, 326, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 170, 186, 170, 10, 0}},
294     {0, 10, 327, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 186, 170, 170, 170, 10, 0}},
295     {0, 10, 328, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 174, 170, 170, 170, 170, 10, 0}},
296     {0, 10, 329, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 186, 170, 170, 170, 170, 10, 0}},
297     {0, 10, 330, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 172, 170, 170, 170, 170, 170, 10, 0}},
298     {0, 10, 331, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 186, 170, 170, 170, 170, 10, 0}},
299     {0, 10, 332, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 234, 170, 170, 170, 170, 10, 0}},
300     {0, 10, 333, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 234, 170, 170, 170, 170, 10, 0}},
301     {0, 10, 334, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 186, 170, 170, 170, 170, 10, 0}},
302     {0, 10, 335, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 171, 170, 170, 170, 170, 10, 0}},
303     {0, 10, 336, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 170, 234, 170, 10, 0}},
304     {0, 10, 337, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 170, 186, 170, 10, 0}},
305     {10, 339, 342, {0, 16, 0, 0, 84, 21, 0, 80, 85, 5, 100, 85, 85, 85, 93, 85, 5, 0}},
306     {0, 10, 340, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 170, 234, 170, 10, 0}},
307     {0, 10, 341, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 186, 170, 170, 170, 10, 0}},
308     {0, 10, 343, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 170, 170, 171, 10, 0}},
309     {0, 10, 344, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 171, 170, 170, 170, 170, 10, 0}},
310     {0, 10, 345, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 170, 234, 170, 10, 0}},
311     {0, 10, 347, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 170, 171, 170, 10, 0}},
312     {0, 10, 348, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 186, 170, 170, 170, 170, 10, 0}},
313     {0, 10, 349, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 170, 174, 170, 10, 0}},
314     {0, 10, 88, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 170, 171, 170, 10, 0}},
315     {0, 10, 351, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 186, 170, 170, 170, 10, 0}},
316     {0, 10, 352, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 170, 234, 170, 10, 0}},
317     {0, 10, 353, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 171, 170, 170, 170, 170, 10, 0}},
318     {0, 10, 354, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 174, 170, 170, 170, 10, 0}},
319     {0, 10, 357, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 174, 170, 170, 10, 0}},
320     {0, 10, 358, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 170, 171, 170, 10, 0}},
321     {0, 10, 359, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 171, 170, 170, 10, 0}},
322     {0, 10, 360, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 184, 170, 170, 170, 170, 170, 10, 0}},
323     {0, 10, 361, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 170, 234, 170, 10, 0}},
324     {0, 10, 363, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 186, 170, 170, 170, 10, 0}},
325     {0, 10, 365, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 170, 170, 171, 10, 0}},
326     {0, 10, 366, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 186, 170, 170, 170, 170, 10, 0}},
327     {0, 10, 368, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 170, 171, 170, 10, 0}},
328     {0, 10, 369, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 186, 170, 170, 170, 170, 10, 0}},
329     {0, 10, 370, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 174, 170, 170, 170, 170, 10, 0}},
330     {0, 10, 371, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 186, 170, 170, 170, 170, 10, 0}},
331     {10, 373, 385, {0, 16, 0, 0, 84, 21, 0, 80, 85, 5, 84, 85, 85, 101, 117, 85, 5, 0}},
332     {10, 374, 380, {0, 16, 0, 0, 84, 21, 0, 80, 85, 5, 84, 85, 101, 85, 117, 85, 5, 0}},
333     {10, 375, 379, {0, 16, 0, 0, 84, 21, 0, 80, 85, 5, 84, 149, 85, 213, 85, 85, 5, 0}},
334     {0, 10, 376, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 234, 170, 170, 10, 0}},
335     {0, 10, 377, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 170, 174, 170, 10, 0}},
336     {0, 10, 378, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 174, 170, 170, 10, 0}},
337     {0, 10, 381, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 186, 170, 170, 170, 10, 0}},
338     {0, 10, 382, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 171, 170, 170, 170, 10, 0}},
339     {0, 10, 383, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 186, 170, 170, 10, 0}},
340     {0, 10, 384, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 186, 170, 170, 170, 170, 10, 0}},
341     {0, 10, 386, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 186, 170, 170, 170, 10, 0}},
342     {0, 10, 387, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 186, 170, 170, 10, 0}},
343     {10, 389, 394, {0, 16, 0, 0, 84, 21, 0, 80, 85, 5, 100, 85, 85, 213, 85, 85, 5, 0}},
344     {0, 10, 390, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 170, 174, 170, 10, 0}},
345     {0, 10, 391, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 170, 170, 170, 11, 0}},
346     {0, 10, 392, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 186, 170, 170, 170, 10, 0}},
347     {0, 10, 393, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 186, 170, 170, 10, 0}},
348     {0, 10, 395, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 171, 170, 170, 10, 0}},
349     {0, 10, 396, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 184, 170, 170, 170, 170, 170, 10, 0}},
350     {0, 10, 397, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 170, 234, 170, 10, 0}},
351     {0, 10, 398, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 186, 170, 170, 170, 10, 0}},
352     {0, 10, 399, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 171, 170, 170, 10, 0}},
353     {10, 401, 405, {0, 16, 0, 0, 84, 21, 0, 80, 85, 5, 84, 85, 89, 85, 93, 85, 5, 0}},
354     {0, 10, 402, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 186, 170, 170, 170, 10, 0}},
355     {0, 10, 403, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 171, 170, 170, 10, 0}},
356     {0, 10, 404, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 186, 170, 170, 170, 170, 10, 0}},
357     {0, 10, 406, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 186, 170, 170, 170, 10, 0}},
358     {0, 10, 407, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 170, 234, 170, 10, 0}},
359     {0, 10, 408, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 186, 170, 170, 170, 170, 10, 0}},
360     {0, 10, 409, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 234, 170, 170, 10, 0}},
361     {0, 10, 410, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 186, 170, 170, 10, 0}},
362     {0, 10, 411, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 171, 170, 170, 10, 0}},
363     {0, 10, 412, {0, 32, 0, 0, 168, 42, 0, 160, 170, 10, 168, 170, 170, 170, 170, 170, 11, 0}},
364     {0, 415, 416, {0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, 0}},
365 };
366 static constexpr IndexEntry kIndices[] = {
367     {0, 0},
368     {1, 0},
369     {2, 0},
370     {2, 0},
371     {0, 0},
372     {2, 1},
373     {0, 0},
374     {2, 2},
375     {2, 3},
376     {2, 4},
377     {2, 5},
378     {2, 6},
379     {2, 7},
380     {2, 5},
381     {2, 8},
382     {0, 0},
383     {2, 9},
384     {0, 0},
385     {0, 0},
386     {0, 0},
387     {0, 0},
388     {2, 10},
389     {0, 0},
390     {2, 11},
391     {0, 0},
392     {0, 0},
393     {0, 0},
394     {2, 12},
395     {0, 0},
396     {0, 0},
397     {0, 0},
398     {2, 13},
399     {2, 14},
400     {2, 15},
401     {2, 16},
402     {2, 16},
403     {2, 17},
404     {2, 18},
405     {2, 19},
406     {0, 0},
407     {2, 20},
408     {0, 0},
409     {1, 1},
410     {2, 21},
411     {2, 22},
412     {2, 23},
413     {2, 24},
414     {2, 24},
415     {2, 25},
416     {2, 26},
417     {2, 26},
418     {2, 27},
419     {2, 28},
420     {2, 29},
421     {2, 29},
422     {2, 30},
423     {2, 30},
424     {2, 27},
425     {0, 0},
426     {0, 0},
427     {2, 31},
428     {2, 32},
429     {0, 0},
430     {0, 0},
431     {2, 33},
432     {0, 0},
433     {2, 34},
434     {0, 0},
435     {2, 35},
436     {0, 0},
437     {0, 0},
438     {2, 36},
439     {2, 37},
440     {0, 0},
441     {2, 38},
442     {2, 39},
443     {2, 40},
444     {2, 41},
445     {2, 42},
446     {0, 0},
447     {2, 5},
448     {0, 0},
449     {0, 0},
450     {2, 43},
451     {0, 0},
452     {0, 0},
453     {2, 44},
454     {2, 45},
455     {2, 5},
456     {2, 46},
457     {2, 47},
458     {2, 48},
459     {2, 49},
460     {2, 50},
461     {2, 51},
462     {2, 52},
463     {2, 53},
464     {2, 54},
465     {2, 55},
466     {2, 56},
467     {2, 5},
468     {2, 57},
469     {2, 58},
470     {2, 59},
471     {2, 60},
472     {2, 5},
473     {1, 2},
474     {2, 61},
475     {2, 62},
476     {2, 5},
477     {2, 63},
478     {2, 64},
479     {2, 65},
480     {2, 66},
481     {2, 67},
482     {2, 68},
483     {2, 5},
484     {2, 69},
485     {2, 70},
486     {2, 71},
487     {2, 72},
488     {2, 5},
489     {1, 3},
490     {2, 73},
491     {2, 74},
492     {2, 75},
493     {2, 76},
494     {2, 77},
495     {2, 5},
496     {2, 78},
497     {2, 79},
498     {2, 80},
499     {2, 81},
500     {2, 82},
501     {2, 5},
502     {2, 83},
503     {2, 84},
504     {2, 85},
505     {2, 52},
506     {2, 86},
507     {2, 87},
508     {2, 88},
509     {1, 4},
510     {2, 89},
511     {2, 90},
512     {2, 5},
513     {2, 91},
514     {2, 45},
515     {2, 92},
516     {2, 93},
517     {2, 94},
518     {2, 95},
519     {2, 96},
520     {2, 97},
521     {1, 5},
522     {2, 98},
523     {2, 99},
524     {2, 100},
525     {2, 5},
526     {2, 101},
527     {2, 102},
528     {2, 103},
529     {2, 104},
530     {2, 105},
531     {2, 5},
532     {2, 106},
533     {2, 5},
534     {2, 107},
535     {2, 108},
536     {2, 88},
537     {2, 109},
538     {2, 110},
539     {2, 111},
540     {2, 112},
541     {2, 113},
542     {2, 114},
543     {2, 115},
544     {2, 116},
545     {2, 117},
546     {2, 5},
547     {2, 118},
548     {2, 119},
549     {2, 88},
550     {2, 120},
551     {2, 5},
552     {1, 6},
553     {2, 121},
554     {2, 122},
555     {2, 123},
556     {2, 5},
557     {2, 124},
558     {2, 125},
559     {2, 5},
560     {2, 126},
561     {2, 127},
562     {2, 128},
563     {2, 129},
564     {2, 130},
565     {2, 131},
566     {2, 132},
567     {2, 52},
568     {2, 133},
569     {2, 134},
570     {2, 135},
571     {2, 136},
572     {2, 137},
573     {2, 127},
574     {2, 138},
575     {2, 139},
576     {2, 140},
577     {2, 141},
578     {2, 142},
579     {2, 5},
580     {2, 143},
581     {2, 144},
582     {2, 145},
583     {2, 5},
584     {2, 146},
585     {2, 147},
586     {2, 148},
587     {2, 149},
588     {2, 150},
589     {2, 151},
590     {2, 5},
591     {2, 152},
592     {2, 153},
593     {2, 154},
594     {2, 155},
595     {2, 156},
596     {2, 157},
597     {2, 158},
598     {2, 52},
599     {2, 159},
600     {2, 160},
601     {2, 161},
602     {2, 162},
603     {2, 163},
604     {2, 164},
605     {2, 5},
606     {2, 165},
607     {2, 166},
608     {2, 167},
609     {2, 168},
610     {2, 169},
611     {2, 170},
612     {2, 171},
613     {2, 172},
614     {2, 173},
615     {2, 174},
616     {2, 5},
617     {2, 175},
618     {2, 176},
619     {2, 177},
620     {2, 178},
621     {2, 127},
622     {1, 7},
623     {2, 179},
624     {2, 180},
625     {2, 181},
626     {2, 103},
627     {2, 182},
628     {2, 183},
629     {2, 184},
630     {2, 185},
631     {2, 186},
632     {2, 187},
633     {2, 188},
634     {2, 189},
635     {2, 190},
636     {2, 191},
637     {2, 192},
638     {2, 193},
639     {2, 194},
640     {2, 195},
641     {2, 196},
642     {2, 197},
643     {2, 198},
644     {2, 199},
645     {2, 5},
646     {2, 200},
647     {2, 201},
648     {2, 202},
649     {2, 5},
650     {1, 8},
651     {2, 203},
652     {2, 204},
653     {2, 205},
654     {2, 206},
655     {2, 207},
656     {1, 9},
657     {2, 208},
658     {2, 209},
659     {2, 210},
660     {2, 211},
661     {2, 212},
662     {2, 213},
663     {2, 214},
664     {2, 215},
665     {2, 216},
666     {2, 217},
667     {2, 218},
668     {2, 219},
669     {2, 220},
670     {2, 221},
671     {2, 222},
672     {2, 223},
673     {2, 224},
674     {2, 214},
675     {2, 225},
676     {2, 226},
677     {2, 227},
678     {2, 228},
679     {2, 127},
680     {2, 229},
681     {2, 230},
682     {2, 52},
683     {2, 231},
684     {2, 232},
685     {2, 233},
686     {2, 234},
687     {2, 235},
688     {2, 236},
689     {2, 237},
690     {2, 238},
691     {2, 239},
692     {2, 240},
693     {2, 241},
694     {2, 242},
695     {2, 243},
696     {2, 244},
697     {2, 245},
698     {2, 246},
699     {2, 247},
700     {2, 248},
701     {2, 249},
702     {2, 250},
703     {2, 251},
704     {2, 5},
705     {2, 252},
706     {2, 253},
707     {2, 254},
708     {2, 192},
709     {2, 255},
710     {2, 256},
711     {2, 257},
712     {2, 5},
713     {2, 258},
714     {2, 259},
715     {2, 260},
716     {2, 261},
717     {2, 262},
718     {2, 263},
719     {2, 264},
720     {2, 265},
721     {2, 5},
722     {1, 10},
723     {2, 266},
724     {2, 267},
725     {2, 268},
726     {2, 269},
727     {2, 270},
728     {2, 52},
729     {2, 271},
730     {2, 65},
731     {2, 272},
732     {2, 273},
733     {2, 5},
734     {2, 274},
735     {2, 275},
736     {2, 276},
737     {2, 277},
738     {2, 234},
739     {2, 278},
740     {2, 279},
741     {2, 280},
742     {2, 281},
743     {2, 282},
744     {2, 283},
745     {2, 5},
746     {2, 188},
747     {2, 284},
748     {2, 285},
749     {2, 286},
750     {2, 287},
751     {2, 103},
752     {2, 288},
753     {2, 289},
754     {2, 144},
755     {2, 290},
756     {2, 291},
757     {2, 292},
758     {2, 293},
759     {2, 294},
760     {2, 144},
761     {2, 295},
762     {2, 296},
763     {2, 297},
764     {2, 298},
765     {2, 299},
766     {2, 52},
767     {2, 300},
768     {2, 301},
769     {2, 302},
770     {2, 303},
771     {2, 5},
772     {2, 304},
773     {2, 305},
774     {2, 306},
775     {2, 307},
776     {2, 308},
777     {2, 309},
778     {2, 310},
779     {2, 5},
780     {0, 0},
781     {2, 311},
782     {0, 0},
783     {0, 0},
784     {0, 0},
785     {0, 0},
786 };
get_transition(int transition,int state)787 State get_transition(int transition, int state) {
788     IndexEntry index = kIndices[state];
789     if (index.type == 0) { return 0; }
790     if (index.type == 1) { return kFull[index.pos].data[transition]; }
791     const CompactEntry& entry = kCompact[index.pos];
792     int value = entry.data[transition >> 2];
793     value >>= 2 * (transition & 3);
794     value &= 3;
795     State table[] = {0, entry.v0, entry.v1, entry.v2};
796     return table[value];
797 }
798 static const int8_t kAccepts[419] = { -1, -1, 87, 87, 90, 65, 70, 90, 40, 39, 39, 39, 39, 37, 55, 79, 60, 64, 84, 41, 42, 53, 77, 51, 49, 75, 48, 52, 50, 76, 86, 47, 1, -1, -1, 1, 54, -1, -1, 89, 88, 78, 2, 1, 1, -1, -1, 1, -1, -1, 1, 2, -1, -1, 1, -1, 2, 2, 67, 85, 72, 56, 80, 74, 68, 69, 71, 73, 57, 81, 66, 90, -1, 6, -1, -1, -1, -1, -1, 12, 39, 45, 46, 59, 83, 63, 39, 39, 38, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 15, 39, 39, 39, 39, 31, 39, 39, 39, 13, 39, 39, 39, 39, 39, 39, 23, 39, 39, 39, 39, 16, 39, 39, 39, 39, 39, 39, 14, 39, 39, 39, 39, 39, 17, 10, 39, 39, 39, 39, 39, 39, 39, 39, 39, 7, 39, 39, 39, 39, 39, 39, 38, 39, 39, 39, 39, 39, 4, 39, 39, 39, 39, 39, 24, 39, 8, 39, 39, 39, 39, 39, 38, 39, 39, 39, 39, 39, 39, 34, 39, 39, 39, 39, 5, 19, 39, 39, 39, 26, 39, 39, 21, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 33, 39, 39, 39, 36, 39, 39, 39, 39, 39, 39, 35, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 27, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 25, 39, 39, 20, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 29, 39, 39, 39, 18, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 28, 39, 39, 39, 39, 39, 39, 39, 32, 39, 39, 39, 39, 39, 39, 39, 39, 11, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 3, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 22, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 9, 39, 39, 39, 39, 39, 39, 39, 30, 43, 58, 82, 62, 44, 61, };
799 
next()800 Token Lexer::next() {
801     // note that we cheat here: normally a lexer needs to worry about the case
802     // where a token has a prefix which is not itself a valid token - for instance,
803     // maybe we have a valid token 'while', but 'w', 'wh', etc. are not valid
804     // tokens. Our grammar doesn't have this property, so we can simplify the logic
805     // a bit.
806     int32_t startOffset = fOffset;
807     if (startOffset == (int32_t)fText.length()) {
808         return Token(Token::Kind::TK_END_OF_FILE, startOffset, 0, fLine);
809     }
810     State state = 1;
811     for (;;) {
812         if (fOffset >= (int32_t)fText.length()) {
813             if (kAccepts[state] == -1) {
814                 return Token(Token::Kind::TK_END_OF_FILE, startOffset, 0, fLine);
815             }
816             break;
817         }
818         uint8_t c = (uint8_t) fText[fOffset];
819         if (c <= 8 || c >= 127) {
820             c = INVALID_CHAR;
821         }
822         State newState = get_transition(kMappings[c], state);
823         if (!newState) {
824             break;
825         }
826         state = newState;
827         ++fOffset;
828         if (c == '\n') {
829             ++fLine;
830         }
831     }
832     Token::Kind kind = (Token::Kind) kAccepts[state];
833     return Token(kind, startOffset, fOffset - startOffset, fLine);
834 }
835 
836 } // namespace
837