skir 1.2.4 → 1.2.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. package/dist/config_parser.d.ts.map +1 -1
  2. package/dist/module_collector.d.ts.map +1 -1
  3. package/package.json +5 -3
  4. package/src/config_parser.ts +4 -1
  5. package/src/module_collector.ts +18 -20
  6. package/src/project_initializer.ts +18 -0
  7. package/dist/casing.d.ts +0 -5
  8. package/dist/casing.js +0 -23
  9. package/dist/casing.js.map +0 -1
  10. package/dist/command_line_parser.d.ts +0 -36
  11. package/dist/command_line_parser.d.ts.map +0 -1
  12. package/dist/command_line_parser.js +0 -240
  13. package/dist/command_line_parser.js.map +0 -1
  14. package/dist/compatibility_checker.d.ts +0 -74
  15. package/dist/compatibility_checker.js +0 -331
  16. package/dist/compatibility_checker.js.map +0 -1
  17. package/dist/compiler.d.ts +0 -3
  18. package/dist/compiler.js +0 -406
  19. package/dist/compiler.js.map +0 -1
  20. package/dist/completion_helper.d.ts +0 -27
  21. package/dist/completion_helper.js +0 -101
  22. package/dist/completion_helper.js.map +0 -1
  23. package/dist/config.d.ts +0 -18
  24. package/dist/config.js +0 -19
  25. package/dist/config.js.map +0 -1
  26. package/dist/config_parser.d.ts +0 -34
  27. package/dist/config_parser.js +0 -214
  28. package/dist/config_parser.js.map +0 -1
  29. package/dist/definition_finder.d.ts +0 -16
  30. package/dist/definition_finder.js +0 -375
  31. package/dist/definition_finder.js.map +0 -1
  32. package/dist/dependency_manager.d.ts +0 -14
  33. package/dist/dependency_manager.js +0 -109
  34. package/dist/dependency_manager.js.map +0 -1
  35. package/dist/doc_comment_parser.d.ts +0 -6
  36. package/dist/doc_comment_parser.js +0 -269
  37. package/dist/doc_comment_parser.js.map +0 -1
  38. package/dist/doc_reference_resolver.d.ts +0 -5
  39. package/dist/doc_reference_resolver.js +0 -232
  40. package/dist/doc_reference_resolver.js.map +0 -1
  41. package/dist/error_renderer.d.ts +0 -24
  42. package/dist/error_renderer.js +0 -326
  43. package/dist/error_renderer.js.map +0 -1
  44. package/dist/exit_error.d.ts +0 -8
  45. package/dist/exit_error.d.ts.map +0 -1
  46. package/dist/exit_error.js +0 -8
  47. package/dist/exit_error.js.map +0 -1
  48. package/dist/expected_names.d.ts +0 -11
  49. package/dist/expected_names.js +0 -34
  50. package/dist/expected_names.js.map +0 -1
  51. package/dist/formatter.d.ts +0 -28
  52. package/dist/formatter.js +0 -338
  53. package/dist/formatter.js.map +0 -1
  54. package/dist/get_dependencies_flow.d.ts +0 -40
  55. package/dist/get_dependencies_flow.js +0 -177
  56. package/dist/get_dependencies_flow.js.map +0 -1
  57. package/dist/import_block_formatter.d.ts +0 -3
  58. package/dist/import_block_formatter.js +0 -36
  59. package/dist/import_block_formatter.js.map +0 -1
  60. package/dist/index.d.ts +0 -2
  61. package/dist/index.d.ts.map +0 -1
  62. package/dist/index.js +0 -2
  63. package/dist/index.js.map +0 -1
  64. package/dist/io.d.ts +0 -23
  65. package/dist/io.d.ts.map +0 -1
  66. package/dist/io.js +0 -58
  67. package/dist/io.js.map +0 -1
  68. package/dist/literals.d.ts +0 -12
  69. package/dist/literals.js +0 -96
  70. package/dist/literals.js.map +0 -1
  71. package/dist/module_collector.d.ts +0 -9
  72. package/dist/module_collector.js +0 -75
  73. package/dist/module_collector.js.map +0 -1
  74. package/dist/module_set.d.ts +0 -51
  75. package/dist/module_set.js +0 -1331
  76. package/dist/module_set.js.map +0 -1
  77. package/dist/package_downloader.d.ts +0 -4
  78. package/dist/package_downloader.js +0 -256
  79. package/dist/package_downloader.js.map +0 -1
  80. package/dist/package_types.d.ts +0 -30
  81. package/dist/package_types.d.ts.map +0 -1
  82. package/dist/package_types.js +0 -2
  83. package/dist/package_types.js.map +0 -1
  84. package/dist/parser.d.ts +0 -7
  85. package/dist/parser.js +0 -1335
  86. package/dist/parser.js.map +0 -1
  87. package/dist/project_initializer.d.ts +0 -2
  88. package/dist/project_initializer.d.ts.map +0 -1
  89. package/dist/project_initializer.js +0 -189
  90. package/dist/project_initializer.js.map +0 -1
  91. package/dist/snapshotter.d.ts +0 -16
  92. package/dist/snapshotter.js +0 -263
  93. package/dist/snapshotter.js.map +0 -1
  94. package/dist/tokenizer.d.ts +0 -18
  95. package/dist/tokenizer.js +0 -244
  96. package/dist/tokenizer.js.map +0 -1
package/dist/tokenizer.js DELETED
@@ -1,244 +0,0 @@
1
- import { unquoteAndUnescape, } from "skir-internal";
2
- import { parseDocComment } from "./doc_comment_parser.js";
3
- /** Tokenizes the given module. */
4
- export function tokenizeModule(sourceCode, modulePath, completionMode) {
5
- const tokens = [];
6
- const errors = [];
7
- const lines = new Lines(sourceCode, modulePath);
8
- // Multiline comment: \/\*([^*]|\*[^\/])*(\*\/)?
9
- // Single-line comment: \/\/[^\n\r]*
10
- // Number: -?(0|[1-9][0-9]*)(\.[0-9]+)?\b
11
- // Word: \b\w+\b
12
- // Whitespaces: [ \n\r\t]+
13
- // Symbol: \.\.|\{\||\|\}|[{}[\]()*.:=;|?,]
14
- // Double-quote string literal: "(\\(\n|\r|\n\r|.)|[^\\\"\n\r])*"?
15
- // Single-quote string literal: '(\\(\n|\r|\n\r|.)|[^\\\'\n\r])*'?
16
- //
17
- // To iterate on this regex, use https://regex101.com/.
18
- const re = /(\/\*([^*]|\*[^/])*(\*\/)?)|(\/\/[^\n\r]*)|(-?(0|[1-9][0-9]*)(\.[0-9]+)?\b)|\b(\w+)\b|([ \n\r\t]+)|(\.\.|\{\||\|\}|[{}[\]()*.:=;|?,])|("(\\(\n|\r|\n\r|.)|[^\\"\n\r])*"?)|('(\\(\n|\r|\n\r|.)|[^\\'\n\r])*'?)|($)/g;
19
- // 1 2 3 4 5 6 7 8 9 10 11 13 14 16 17
20
- let group;
21
- let expectedPosition = 0;
22
- while ((group = re.exec(sourceCode)) !== null) {
23
- const position = re.lastIndex - group[0].length;
24
- // Check that all the regex matches are consecutive.
25
- // If there is a gap between two matches, it means that we have an invalid
26
- // sequence of characters.
27
- if (position !== expectedPosition) {
28
- const line = lines.advancePosition(expectedPosition);
29
- const colNumber = expectedPosition - line.position;
30
- const text = sourceCode.substring(expectedPosition, position);
31
- errors.push({
32
- token: {
33
- text: text,
34
- originalText: text,
35
- position: expectedPosition,
36
- line: line,
37
- colNumber: colNumber,
38
- },
39
- message: "Invalid sequence of characters",
40
- });
41
- }
42
- expectedPosition = re.lastIndex;
43
- const line = lines.advancePosition(position);
44
- const colNumber = position - line.position;
45
- const token = {
46
- text: group[0],
47
- originalText: group[0],
48
- position: position,
49
- line: line,
50
- colNumber: colNumber,
51
- };
52
- if (group[1] !== undefined && !group[1].endsWith("*/")) {
53
- errors.push({
54
- token: token,
55
- message: "Unterminated multi-line comment",
56
- });
57
- }
58
- if (group[8] !== undefined) {
59
- if (!validateWord(token, errors)) {
60
- continue;
61
- }
62
- }
63
- // Skip whitespaces.
64
- if (group[9] !== undefined)
65
- continue;
66
- // Validate string literals.
67
- const stringLiteral = group[11] || group[14];
68
- if (stringLiteral !== undefined) {
69
- if (!stringLiteral.endsWith(stringLiteral[0])) {
70
- errors.push({
71
- token: token,
72
- message: "Unterminated string literal",
73
- });
74
- continue;
75
- }
76
- const stringLiteralRe = /^["'](\\(\r\n|u[0-9A-Fa-f]{4}|["'\\/bfnrt\n\r])|[^\\])*["']$/;
77
- if (!stringLiteralRe.test(stringLiteral)) {
78
- errors.push({
79
- token: token,
80
- message: "String literal contains invalid escape sequence",
81
- });
82
- continue;
83
- }
84
- // Check that the string doesn't contain lone surrogates.
85
- // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/isWellFormed
86
- const unquoted = unquoteAndUnescape(stringLiteral);
87
- try {
88
- encodeURIComponent(unquoted);
89
- }
90
- catch {
91
- errors.push({
92
- token: token,
93
- message: "String literal contains lone surrogates",
94
- });
95
- continue;
96
- }
97
- }
98
- tokens.push(token);
99
- if (group[17] !== undefined) {
100
- // The end of the string has been reached.
101
- // The last token we added is an empty string.
102
- break;
103
- }
104
- }
105
- if (completionMode !== undefined) {
106
- const { position } = completionMode;
107
- const existingToken = tokens.find((t) => {
108
- const start = t.position;
109
- const end = t.position + t.text.length;
110
- if (/^\w/.test(t.text)) {
111
- // Word token: inclusive comparisons.
112
- return position >= start && position <= end;
113
- }
114
- else {
115
- // Non-word token: exclusive comparisons.
116
- return position > start && position < end;
117
- }
118
- });
119
- if (existingToken === undefined) {
120
- const fakeLines = new Lines(sourceCode, modulePath);
121
- const line = fakeLines.advancePosition(position);
122
- const colNumber = position - line.position;
123
- const fakeToken = {
124
- text: "...",
125
- originalText: "",
126
- position: position,
127
- line: line,
128
- colNumber: colNumber,
129
- };
130
- const insertIndex = tokens.findIndex((t) => t.position >= position);
131
- if (insertIndex === -1) {
132
- tokens.push(fakeToken);
133
- }
134
- else {
135
- tokens.splice(insertIndex, 0, fakeToken);
136
- }
137
- }
138
- }
139
- // Parse the doc comments.
140
- const posToDoc = {};
141
- for (const token of tokens) {
142
- if (!token.text.startsWith("///")) {
143
- continue;
144
- }
145
- const docResult = parseDocComment(token, completionMode);
146
- posToDoc[token.position] = docResult.result;
147
- docResult.errors.forEach((e) => errors.push(e));
148
- }
149
- return {
150
- result: {
151
- tokens: tokens.filter((t) => !isRegularComment(t.originalText)),
152
- tokensWithComments: tokens,
153
- posToDoc: posToDoc,
154
- sourceCode: sourceCode,
155
- modulePath: modulePath,
156
- },
157
- errors: errors,
158
- };
159
- }
160
- function validateWord(token, errors) {
161
- if (/^[0-9]/.test(token.text)) {
162
- errors.push({
163
- token: token,
164
- message: "Invalid number",
165
- });
166
- return false;
167
- }
168
- if (token.text.startsWith("_")) {
169
- errors.push({
170
- token: token,
171
- message: "Identifier cannot start with _",
172
- });
173
- return false;
174
- }
175
- if (token.text.endsWith("_")) {
176
- errors.push({
177
- token: token,
178
- message: "Identifier cannot end with _",
179
- });
180
- return false;
181
- }
182
- if (token.text.includes("__")) {
183
- errors.push({
184
- token: token,
185
- message: "Identifier cannot contain __ sequence",
186
- });
187
- return false;
188
- }
189
- if (/_[0-9]/.test(token.text)) {
190
- // The problem is we could end up with duplicate field names when converting
191
- // to camel case. For example: "field0" and "field_0" would both be
192
- // converted to "field0".
193
- errors.push({
194
- token: token,
195
- message: "Digit cannot follow _",
196
- });
197
- return false;
198
- }
199
- return true;
200
- }
201
- function isRegularComment(token) {
202
- return (token.startsWith("/*") ||
203
- (token.startsWith("//") && !token.startsWith("///")));
204
- }
205
- class Lines {
206
- /** Splits the given code into multiple lines. */
207
- constructor(code, modulePath) {
208
- this.lines = [];
209
- const lines = this.lines;
210
- let lineStart = 0;
211
- let group;
212
- const re = /\n|\r|\n\r|$/g;
213
- while ((group = re.exec(code)) !== null) {
214
- const match = group[0];
215
- const lineEnd = re.lastIndex - match.length;
216
- const lineString = code.substring(lineStart, lineEnd);
217
- lines.push({
218
- lineNumber: lines.length,
219
- line: lineString,
220
- position: lineStart,
221
- modulePath: modulePath,
222
- });
223
- // Record the position after the EOL or EOF.
224
- lineStart = re.lastIndex;
225
- if (match === "") {
226
- break;
227
- }
228
- }
229
- }
230
- /**
231
- * Returns the line at the given position, where the position is the char
232
- * index within `code`.
233
- * Requires the position to be >= the position given the last time the method
234
- * was called.
235
- */
236
- advancePosition(position) {
237
- const lines = this.lines;
238
- while (lines.length >= 2 && position >= this.lines[1].position) {
239
- lines.shift();
240
- }
241
- return lines[0];
242
- }
243
- }
244
- //# sourceMappingURL=tokenizer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tokenizer.js","sourceRoot":"","sources":["../src/tokenizer.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,GAOnB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAe1D,kCAAkC;AAClC,MAAM,UAAU,cAAc,CAC5B,UAAkB,EAClB,UAAkB,EAClB,cAEC;IAED,MAAM,MAAM,GAAY,EAAE,CAAC;IAC3B,MAAM,MAAM,GAAgB,EAAE,CAAC;IAE/B,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IAEhD,2DAA2D;IAC3D,6CAA6C;IAC7C,+DAA+D;IAC/D,wCAAwC;IACxC,2CAA2C;IAC3C,iEAAiE;IACjE,mEAAmE;IACnE,mEAAmE;IACnE,EAAE;IACF,uDAAuD;IACvD,MAAM,EAAE,GACN,oNAAoN,CAAC;IACvN,mNAAmN;IAEnN,IAAI,KAA6B,CAAC;IAClC,IAAI,gBAAgB,GAAG,CAAC,CAAC;IACzB,OAAO,CAAC,KAAK,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAC9C,MAAM,QAAQ,GAAG,EAAE,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QAEhD,oDAAoD;QACpD,0EAA0E;QAC1E,0BAA0B;QAC1B,IAAI,QAAQ,KAAK,gBAAgB,EAAE,CAAC;YAClC,MAAM,IAAI,GAAG,KAAK,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC;YACrD,MAAM,SAAS,GAAG,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC;YACnD,MAAM,IAAI,GAAG,UAAU,CAAC,SAAS,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;YAC9D,MAAM,CAAC,IAAI,CAAC;gBACV,KAAK,EAAE;oBACL,IAAI,EAAE,IAAI;oBACV,YAAY,EAAE,IAAI;oBAClB,QAAQ,EAAE,gBAAgB;oBAC1B,IAAI,EAAE,IAAI;oBACV,SAAS,EAAE,SAAS;iBACrB;gBACD,OAAO,EAAE,gCAAgC;aAC1C,CAAC,CAAC;QACL,CAAC;QACD,gBAAgB,GAAG,EAAE,CAAC,SAAS,CAAC;QAEhC,MAAM,IAAI,GAAG,KAAK,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QAC7C,MAAM,SAAS,GAAG,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC3C,MAAM,KAAK,GAAU;YACnB,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;YACd,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC;YACtB,QAAQ,EAAE,QAAQ;YAClB,IAAI,EAAE,IAAI;YACV,SAAS,EAAE,SAAS;SACrB,CAAC;QAEF,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACvD,MAAM,CAAC,IAAI,CAAC;gBACV,KAAK,EAAE,KAAK;gBACZ,OAAO,EAAE,iCAAiC;aAC3C,CAAC,CAAC;QACL,CAAC;QAED,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;YAC3B,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC;gBACjC,SAAS;YACX,CAAC;QACH,CAAC;QAED,oBAAoB;QACpB,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS;YAAE,SAAS;QAErC,4BAA4B;QAC5B,MAAM,aAAa,GAAG,KAAK,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC;QAC7C,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;YAChC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAE,CAAC,EAAE,CAAC;gBAC/C,MAAM,CAAC,IAAI,CAAC;oBACV,KAAK,EAAE,KAAK;oBACZ,OAAO,EAAE,6BAA6B;iBACvC,CAAC,CAAC;gBACH,SAAS;YACX,CAAC;YACD,MAAM,eAAe,GACnB,8DAA8D,CAAC;YACjE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;gBACzC,MAAM,CAAC,IAAI,CAAC;oBACV,KAAK,EAAE,KAAK;oBACZ,OAAO,EAAE,iDAAiD;iBAC3D,CAAC,CAAC;gBACH,SAAS;YACX,CAAC;YACD,yDAAyD;YACzD,2GAA2G;YAC3G,MAAM,QAAQ,GAAG,kBAAkB,CAAC,aAAa,CAAC,CAAC;YACnD,IAAI,CAAC;gBACH,kBAAkB,CAAC,QAAQ,CAAC,CAAC;YAC/B,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM,CAAC,IAAI,CAAC;oBACV,KAAK,EAAE,KAAK;oBACZ,OAAO,EAAE,yCAAyC;iBACnD,CAAC,CAAC;gBACH,SAAS;YACX,CAAC;QACH,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEnB,IAAI,KAAK,CAAC,EAAE,CAAC,KAAK,SAAS,EAAE,CAAC;YAC5B,0CAA0C;YAC1C,8CAA8C;YAC9C,MAAM;QACR,CAAC;IACH,CAAC;IAED,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;QACjC,MAAM,EAAE,QAAQ,EAAE,GAAG,cAAc,CAAC;QACpC,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;YACtC,MAAM,KAAK,GAAG,CAAC,CAAC,QAAQ,CAAC;YACzB,MAAM,GAAG,GAAG,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;YACvC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;gBACvB,qCAAqC;gBACrC,OAAO,QAAQ,IAAI,KAAK,IAAI,QAAQ,IAAI,GAAG,CAAC;YAC9C,CAAC;iBAAM,CAAC;gBACN,yCAAyC;gBACzC,OAAO,QAAQ,GAAG,KAAK,IAAI,QAAQ,GAAG,GAAG,CAAC;YAC5C,CAAC;QACH,CAAC,CAAC,CAAC;QACH,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;YAChC,MAAM,SAAS,GAAG,IAAI,KAAK,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;YACpD,MAAM,IAAI,GAAG,SAAS,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;YACjD,MAAM,SAAS,GAAG,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;YAC3C,MAAM,SAAS,GAAU;gBACvB,IAAI,EAAE,KAAK;gBACX,YAAY,EAAE,EAAE;gBAChB,QAAQ,EAAE,QAAQ;gBAClB,IAAI,EAAE,IAAI;gBACV,SAAS,EAAE,SAAS;aACrB,CAAC;YACF,MAAM,WAAW,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,IAAI,QAAQ,CAAC,CAAC;YACpE,IAAI,WAAW,KAAK,CAAC,CAAC,EAAE,CAAC;gBACvB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACzB,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;YAC3C,CAAC;QACH,CAAC;IACH,CAAC;IAED,0BAA0B;IAC1B,MAAM,QAAQ,GAA2B,EAAE,CAAC;IAC5C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YAClC,SAAS;QACX,CAAC;QACD,MAAM,SAAS,GAAG,eAAe,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;QACzD,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC;QAC5C,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAClD,CAAC;IAED,OAAO;QACL,MAAM,EAAE;YACN,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;YAC/D,kBAAkB,EAAE,MAAM;YAC1B,QAAQ,EAAE,QAAQ;YAClB,UAAU,EAAE,UAAU;YACtB,UAAU,EAAE,UAAU;SACvB;QACD,MAAM,EAAE,MAAM;KACf,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,KAAY,EAAE,MAAiB;IACnD,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,MAAM,CAAC,IAAI,CAAC;YACV,KAAK,EAAE,KAAK;YACZ,OAAO,EAAE,gBAAgB;SAC1B,CAAC,CAAC;QACH,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/B,MAAM,CAAC,IAAI,CAAC;YACV,KAAK,EAAE,KAAK;YACZ,OAAO,EAAE,gCAAgC;SAC1C,CAAC,CAAC;QACH,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7B,MAAM,CAAC,IAAI,CAAC;YACV,KAAK,EAAE,KAAK;YACZ,OAAO,EAAE,8BAA8B;SACxC,CAAC,CAAC;QACH,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,MAAM,CAAC,IAAI,CAAC;YACV,KAAK,EAAE,KAAK;YACZ,OAAO,EAAE,uCAAuC;SACjD,CAAC,CAAC;QACH,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,4EAA4E;QAC5E,mEAAmE;QACnE,yBAAyB;QACzB,MAAM,CAAC,IAAI,CAAC;YACV,KAAK,EAAE,KAAK;YACZ,OAAO,EAAE,uBAAuB;SACjC,CAAC,CAAC;QACH,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAa;IACrC,OAAO,CACL,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;QACtB,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CACrD,CAAC;AACJ,CAAC;AAED,MAAM,KAAK;IACT,iDAAiD;IACjD,YAAY,IAAY,EAAE,UAAkB;QAqC3B,UAAK,GAAe,EAAE,CAAC;QApCtC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,IAAI,KAA6B,CAAC;QAClC,MAAM,EAAE,GAAG,eAAe,CAAC;QAC3B,OAAO,CAAC,KAAK,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YACxC,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACvB,MAAM,OAAO,GAAG,EAAE,CAAC,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC;YAC5C,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YACtD,KAAK,CAAC,IAAI,CAAC;gBACT,UAAU,EAAE,KAAK,CAAC,MAAM;gBACxB,IAAI,EAAE,UAAU;gBAChB,QAAQ,EAAE,SAAS;gBACnB,UAAU,EAAE,UAAU;aACvB,CAAC,CAAC;YACH,4CAA4C;YAC5C,SAAS,GAAG,EAAE,CAAC,SAAS,CAAC;YACzB,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;gBACjB,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,eAAe,CAAC,QAAgB;QAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,OAAO,KAAK,CAAC,MAAM,IAAI,CAAC,IAAI,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,QAAQ,EAAE,CAAC;YAChE,KAAK,CAAC,KAAK,EAAE,CAAC;QAChB,CAAC;QACD,OAAO,KAAK,CAAC,CAAC,CAAE,CAAC;IACnB,CAAC;CAGF"}