pearc 0.1.0
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.
- package/README.md +146 -0
- package/dist/codegen.d.ts +29 -0
- package/dist/codegen.d.ts.map +1 -0
- package/dist/codegen.js +644 -0
- package/dist/codegen.js.map +1 -0
- package/dist/compiler.d.ts +23 -0
- package/dist/compiler.d.ts.map +1 -0
- package/dist/compiler.js +370 -0
- package/dist/compiler.js.map +1 -0
- package/dist/decompiler.d.ts +25 -0
- package/dist/decompiler.d.ts.map +1 -0
- package/dist/decompiler.js +294 -0
- package/dist/decompiler.js.map +1 -0
- package/dist/interpreter.d.ts +72 -0
- package/dist/interpreter.d.ts.map +1 -0
- package/dist/interpreter.js +2063 -0
- package/dist/interpreter.js.map +1 -0
- package/dist/lexer.d.ts +125 -0
- package/dist/lexer.d.ts.map +1 -0
- package/dist/lexer.js +563 -0
- package/dist/lexer.js.map +1 -0
- package/dist/mcp-server.d.ts +3 -0
- package/dist/mcp-server.d.ts.map +1 -0
- package/dist/mcp-server.js +228 -0
- package/dist/mcp-server.js.map +1 -0
- package/dist/parser.d.ts +307 -0
- package/dist/parser.d.ts.map +1 -0
- package/dist/parser.js +1047 -0
- package/dist/parser.js.map +1 -0
- package/examples/hello.pr +2 -0
- package/examples/pointers.pr +32 -0
- package/examples/structs.pr +6 -0
- package/package.json +40 -0
- package/spec/pear.md +213 -0
|
@@ -0,0 +1,294 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Pear Language Decompiler
|
|
3
|
+
// Best-effort C → Pear minification
|
|
4
|
+
// Transforms C source into minified Pear code
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.Decompiler = void 0;
|
|
7
|
+
exports.decompile = decompile;
|
|
8
|
+
// Type mapping: C → Pear
|
|
9
|
+
const C_TO_PEAR_TYPES = [
|
|
10
|
+
[/\bint8_t\b/g, 'i8'],
|
|
11
|
+
[/\bint16_t\b/g, 'i16'],
|
|
12
|
+
[/\bint32_t\b/g, 'i32'],
|
|
13
|
+
[/\bint64_t\b/g, 'i64'],
|
|
14
|
+
[/\buint8_t\b/g, 'u8'],
|
|
15
|
+
[/\buint16_t\b/g, 'u16'],
|
|
16
|
+
[/\buint32_t\b/g, 'u32'],
|
|
17
|
+
[/\buint64_t\b/g, 'u64'],
|
|
18
|
+
[/\bfloat\b/g, 'f32'],
|
|
19
|
+
[/\bdouble\b/g, 'f64'],
|
|
20
|
+
[/\bvoid\b/g, 'v'],
|
|
21
|
+
[/\bchar\b/g, 'c'],
|
|
22
|
+
[/\bbool\b/g, 'b'],
|
|
23
|
+
[/\bsize_t\b/g, 'sz'],
|
|
24
|
+
// unsigned int variations
|
|
25
|
+
[/\bunsigned long long\b/g, 'u64'],
|
|
26
|
+
[/\blong long\b/g, 'i64'],
|
|
27
|
+
[/\bunsigned long\b/g, 'u32'],
|
|
28
|
+
[/\bunsigned int\b/g, 'u32'],
|
|
29
|
+
[/\bunsigned\b/g, 'u32'],
|
|
30
|
+
[/\blong\b/g, 'i64'],
|
|
31
|
+
[/\bint\b/g, 'i32'],
|
|
32
|
+
[/\bshort\b/g, 'i16'],
|
|
33
|
+
];
|
|
34
|
+
// Keyword mapping: C → Pear
|
|
35
|
+
const C_TO_PEAR_KEYWORDS = [
|
|
36
|
+
[/\breturn\b/g, 'rt'],
|
|
37
|
+
[/\bstruct\b/g, 'st'],
|
|
38
|
+
[/\bunion\b/g, 'un'],
|
|
39
|
+
[/\benum\b/g, 'en'],
|
|
40
|
+
[/\btypedef\b/g, 'tp'],
|
|
41
|
+
[/\bstatic\b/g, 'sc'],
|
|
42
|
+
[/\bextern\b/g, 'ex'],
|
|
43
|
+
[/\binline\b/g, 'in'],
|
|
44
|
+
[/\bvolatile\b/g, 'vl'],
|
|
45
|
+
[/\bconst\b/g, 'cn'],
|
|
46
|
+
[/\bif\b/g, 'if'],
|
|
47
|
+
// else if must come before else
|
|
48
|
+
[/\belse\s+if\b/g, 'ei'],
|
|
49
|
+
[/\belse\b/g, 'el'],
|
|
50
|
+
[/\bfor\b/g, 'lp'],
|
|
51
|
+
[/\bwhile\b/g, 'wh'],
|
|
52
|
+
[/\bdo\b/g, 'dw'],
|
|
53
|
+
[/\bswitch\b/g, 'sw'],
|
|
54
|
+
[/\bcase\b/g, 'cs'],
|
|
55
|
+
[/\bdefault\b/g, 'dv'],
|
|
56
|
+
[/\bbreak\b/g, 'bk'],
|
|
57
|
+
[/\bcontinue\b/g, 'ct'],
|
|
58
|
+
[/\bgoto\b/g, 'gt'],
|
|
59
|
+
[/\bsizeof\b/g, 'so'],
|
|
60
|
+
];
|
|
61
|
+
// Preprocessor mapping
|
|
62
|
+
const C_TO_PEAR_PREPROCESSOR = [
|
|
63
|
+
[/^#include\s*<(.+?)>/gm, 'im<$1>'],
|
|
64
|
+
[/^#include\s*"(.+?)"/gm, 'im"$1"'],
|
|
65
|
+
[/^#define\s+/gm, 'df '],
|
|
66
|
+
[/^#pragma\s+/gm, 'pr '],
|
|
67
|
+
[/^#ifndef\s+(\w+)\s*\n#define\s+\1/gm, 'nd $1'],
|
|
68
|
+
[/^#endif/gm, 'dn'],
|
|
69
|
+
];
|
|
70
|
+
const DEFAULT_OPTIONS = {
|
|
71
|
+
minifyWhitespace: true,
|
|
72
|
+
convertTypes: true,
|
|
73
|
+
convertKeywords: true,
|
|
74
|
+
convertPreprocessor: true,
|
|
75
|
+
convertDeclarations: true,
|
|
76
|
+
};
|
|
77
|
+
class Decompiler {
|
|
78
|
+
constructor(options = {}) {
|
|
79
|
+
this.options = { ...DEFAULT_OPTIONS, ...options };
|
|
80
|
+
}
|
|
81
|
+
decompile(cSource) {
|
|
82
|
+
let code = cSource;
|
|
83
|
+
// Step 1: Convert preprocessor directives
|
|
84
|
+
if (this.options.convertPreprocessor) {
|
|
85
|
+
code = this.convertPreprocessor(code);
|
|
86
|
+
}
|
|
87
|
+
// Step 2: Convert type names
|
|
88
|
+
if (this.options.convertTypes) {
|
|
89
|
+
code = this.convertTypes(code);
|
|
90
|
+
}
|
|
91
|
+
// Step 3: Convert keywords
|
|
92
|
+
if (this.options.convertKeywords) {
|
|
93
|
+
code = this.convertKeywords(code);
|
|
94
|
+
}
|
|
95
|
+
// Step 4: Convert declarations (type name → name:type)
|
|
96
|
+
if (this.options.convertDeclarations) {
|
|
97
|
+
code = this.convertDeclarations(code);
|
|
98
|
+
}
|
|
99
|
+
// Step 5: Convert function declarations
|
|
100
|
+
code = this.convertFunctions(code);
|
|
101
|
+
// Step 6: Minify whitespace
|
|
102
|
+
if (this.options.minifyWhitespace) {
|
|
103
|
+
code = this.minifyWhitespace(code);
|
|
104
|
+
}
|
|
105
|
+
return code.trim();
|
|
106
|
+
}
|
|
107
|
+
convertPreprocessor(code) {
|
|
108
|
+
// Handle include guards first (combined #ifndef/#define pattern)
|
|
109
|
+
code = code.replace(/^#ifndef\s+(\w+)\s*\n#define\s+\1\s*\n/gm, 'nd $1\n');
|
|
110
|
+
// Convert preprocessor directives
|
|
111
|
+
code = code.replace(/^#include\s*<([^>]+)>/gm, 'im<$1>');
|
|
112
|
+
code = code.replace(/^#include\s*"([^"]+)"/gm, 'im"$1"');
|
|
113
|
+
code = code.replace(/^#define\s+/gm, 'df ');
|
|
114
|
+
code = code.replace(/^#pragma\s+/gm, 'pr ');
|
|
115
|
+
code = code.replace(/^#endif\b.*/gm, 'dn');
|
|
116
|
+
// #ifdef, #if, #else keep their # prefix (already short)
|
|
117
|
+
return code;
|
|
118
|
+
}
|
|
119
|
+
convertTypes(code) {
|
|
120
|
+
// We need to be careful not to replace inside strings or comments
|
|
121
|
+
// For best-effort, we'll do simple regex replacement but protect strings
|
|
122
|
+
const protected_ = this.protectStringsAndComments(code);
|
|
123
|
+
let result = protected_.code;
|
|
124
|
+
for (const [pattern, replacement] of C_TO_PEAR_TYPES) {
|
|
125
|
+
result = result.replace(pattern, replacement);
|
|
126
|
+
}
|
|
127
|
+
return this.restoreStringsAndComments(result, protected_.replacements);
|
|
128
|
+
}
|
|
129
|
+
convertKeywords(code) {
|
|
130
|
+
const protected_ = this.protectStringsAndComments(code);
|
|
131
|
+
let result = protected_.code;
|
|
132
|
+
for (const [pattern, replacement] of C_TO_PEAR_KEYWORDS) {
|
|
133
|
+
result = result.replace(pattern, replacement);
|
|
134
|
+
}
|
|
135
|
+
return this.restoreStringsAndComments(result, protected_.replacements);
|
|
136
|
+
}
|
|
137
|
+
// Convert C-style declarations "type name" to Pear style "name:type"
|
|
138
|
+
// This is the most complex transformation and is best-effort
|
|
139
|
+
convertDeclarations(code) {
|
|
140
|
+
const lines = code.split('\n');
|
|
141
|
+
const result = [];
|
|
142
|
+
for (const line of lines) {
|
|
143
|
+
result.push(this.convertDeclLine(line));
|
|
144
|
+
}
|
|
145
|
+
return result.join('\n');
|
|
146
|
+
}
|
|
147
|
+
convertDeclLine(line) {
|
|
148
|
+
const trimmed = line.trimStart();
|
|
149
|
+
// Skip preprocessor lines, comments, empty lines, labels
|
|
150
|
+
if (trimmed.startsWith('im') || trimmed.startsWith('df') ||
|
|
151
|
+
trimmed.startsWith('#') || trimmed.startsWith('//') ||
|
|
152
|
+
trimmed.startsWith('/*') || trimmed.startsWith('*') ||
|
|
153
|
+
trimmed === '') {
|
|
154
|
+
return line;
|
|
155
|
+
}
|
|
156
|
+
// Skip already-converted or non-decl lines
|
|
157
|
+
if (trimmed.startsWith('st ') || trimmed.startsWith('un ') ||
|
|
158
|
+
trimmed.startsWith('en ') || trimmed.startsWith('tp ') ||
|
|
159
|
+
trimmed.startsWith('fn ')) {
|
|
160
|
+
return line;
|
|
161
|
+
}
|
|
162
|
+
// Pear type names for matching
|
|
163
|
+
const pearTypes = 'i8|i16|i32|i64|u8|u16|u32|u64|f32|f64|v|c|b|sz';
|
|
164
|
+
// Match: [qualifiers] type [*] name [= init] ;
|
|
165
|
+
// e.g. "i32 x = 5;" → "x:i32=5;"
|
|
166
|
+
// e.g. "i32 *ptr;" → "ptr:*i32;"
|
|
167
|
+
// e.g. "cn i32 len = 10;" → "len:cn i32=10;"
|
|
168
|
+
const declMatch = trimmed.match(new RegExp(`^((?:(?:cn|sc|vl|in|ex)\\s+)*)` + // optional qualifiers
|
|
169
|
+
`(${pearTypes})` + // base type
|
|
170
|
+
`((?:\\s*\\*+)?)` + // optional pointer stars
|
|
171
|
+
`\\s+(\\w+)` + // variable name
|
|
172
|
+
`((?:\\[\\d*\\])?)` + // optional array subscript
|
|
173
|
+
`\\s*((?:=\\s*[^;]+)?)` + // optional initializer
|
|
174
|
+
`\\s*;(.*)$` // semicolon + remainder
|
|
175
|
+
));
|
|
176
|
+
if (declMatch) {
|
|
177
|
+
const [, quals, baseType, stars, name, arr, init, rest] = declMatch;
|
|
178
|
+
const ptrStr = (stars.trim() || '') + (arr || '');
|
|
179
|
+
const typeStr = (quals.trim() ? quals.trim() + ' ' : '') + ptrStr + baseType;
|
|
180
|
+
const initStr = init.trim() ? init.trim() : '';
|
|
181
|
+
return `${name}:${typeStr}${initStr};${rest}`;
|
|
182
|
+
}
|
|
183
|
+
return line;
|
|
184
|
+
}
|
|
185
|
+
// Convert C function signatures to Pear fn syntax
|
|
186
|
+
convertFunctions(code) {
|
|
187
|
+
// Match C function definitions:
|
|
188
|
+
// returntype [qualifiers] funcname(params) { or ;
|
|
189
|
+
// This regex handles common cases
|
|
190
|
+
const funcRegex = /^((?:sc\s+|in\s+|ex\s+|cn\s+|vl\s+)*)(\w+(?:\s*\*+)?)\s+(\w+)\s*\(([^)]*)\)\s*(?=\{|;)/gm;
|
|
191
|
+
return code.replace(funcRegex, (match, quals, retType, name, params) => {
|
|
192
|
+
// Don't convert if name looks like a declaration (not a function)
|
|
193
|
+
// Skip things like: struct name { ... }
|
|
194
|
+
if (name === 'st' || name === 'un' || name === 'en' || name === 'tp')
|
|
195
|
+
return match;
|
|
196
|
+
if (retType === 'st' || retType === 'un' || retType === 'en')
|
|
197
|
+
return match;
|
|
198
|
+
// Convert parameters
|
|
199
|
+
const convertedParams = this.convertParams(params);
|
|
200
|
+
const qualStr = quals.trim() ? quals.trim() + ' ' : '';
|
|
201
|
+
// Build Pear function signature
|
|
202
|
+
const retStr = retType.trim() === 'v' ? '' : '->' + retType.trim();
|
|
203
|
+
return qualStr + 'fn ' + name + '(' + convertedParams + ')' + retStr;
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
convertParams(params) {
|
|
207
|
+
if (!params.trim())
|
|
208
|
+
return '';
|
|
209
|
+
if (params.trim() === 'v')
|
|
210
|
+
return '';
|
|
211
|
+
return params.split(',').map(p => {
|
|
212
|
+
p = p.trim();
|
|
213
|
+
if (!p || p === '...')
|
|
214
|
+
return p;
|
|
215
|
+
// Match "type *name" or "type name" or "type *name[]"
|
|
216
|
+
const match = p.match(/^((?:cn\s+|vl\s+)*)(\w+(?:\s*\*+)?)\s+(\*+)?(\w+)(\[\])?$/);
|
|
217
|
+
if (!match)
|
|
218
|
+
return p;
|
|
219
|
+
const [, quals, type, extraPtr, name, arr] = match;
|
|
220
|
+
const ptrStr = (extraPtr || '') + (arr ? '*' : '');
|
|
221
|
+
const fullType = quals.trim() + (quals.trim() ? ' ' : '') + type.trim() + ptrStr;
|
|
222
|
+
return name + ':' + fullType;
|
|
223
|
+
}).join(',');
|
|
224
|
+
}
|
|
225
|
+
minifyWhitespace(code) {
|
|
226
|
+
const lines = code.split('\n');
|
|
227
|
+
const result = [];
|
|
228
|
+
for (let line of lines) {
|
|
229
|
+
// Remove trailing whitespace
|
|
230
|
+
line = line.trimEnd();
|
|
231
|
+
// Skip empty lines (keep one)
|
|
232
|
+
if (line === '') {
|
|
233
|
+
if (result.length > 0 && result[result.length - 1] !== '') {
|
|
234
|
+
// Don't add extra blank lines
|
|
235
|
+
}
|
|
236
|
+
continue;
|
|
237
|
+
}
|
|
238
|
+
// Remove leading indentation for minification
|
|
239
|
+
// But keep preprocessor lines at column 0
|
|
240
|
+
if (!line.trimStart().startsWith('#') &&
|
|
241
|
+
!line.trimStart().startsWith('im') &&
|
|
242
|
+
!line.trimStart().startsWith('df')) {
|
|
243
|
+
// Reduce indentation
|
|
244
|
+
line = line.trimStart();
|
|
245
|
+
}
|
|
246
|
+
result.push(line);
|
|
247
|
+
}
|
|
248
|
+
// Join - semicolons separate statements already
|
|
249
|
+
// Try to join short lines together for density
|
|
250
|
+
return result.join('\n');
|
|
251
|
+
}
|
|
252
|
+
// Protect string literals and comments from transformation
|
|
253
|
+
protectStringsAndComments(code) {
|
|
254
|
+
const replacements = new Map();
|
|
255
|
+
let counter = 0;
|
|
256
|
+
// Protect block comments
|
|
257
|
+
code = code.replace(/\/\*[\s\S]*?\*\//g, (match) => {
|
|
258
|
+
const key = `\x00COMMENT${counter++}\x00`;
|
|
259
|
+
replacements.set(key, match);
|
|
260
|
+
return key;
|
|
261
|
+
});
|
|
262
|
+
// Protect line comments
|
|
263
|
+
code = code.replace(/\/\/[^\n]*/g, (match) => {
|
|
264
|
+
const key = `\x00LINECOMMENT${counter++}\x00`;
|
|
265
|
+
replacements.set(key, match);
|
|
266
|
+
return key;
|
|
267
|
+
});
|
|
268
|
+
// Protect string literals
|
|
269
|
+
code = code.replace(/"(?:[^"\\]|\\.)*"/g, (match) => {
|
|
270
|
+
const key = `\x00STRING${counter++}\x00`;
|
|
271
|
+
replacements.set(key, match);
|
|
272
|
+
return key;
|
|
273
|
+
});
|
|
274
|
+
// Protect char literals
|
|
275
|
+
code = code.replace(/'(?:[^'\\]|\\.)*'/g, (match) => {
|
|
276
|
+
const key = `\x00CHAR${counter++}\x00`;
|
|
277
|
+
replacements.set(key, match);
|
|
278
|
+
return key;
|
|
279
|
+
});
|
|
280
|
+
return { code, replacements };
|
|
281
|
+
}
|
|
282
|
+
restoreStringsAndComments(code, replacements) {
|
|
283
|
+
for (const [key, value] of replacements) {
|
|
284
|
+
code = code.split(key).join(value);
|
|
285
|
+
}
|
|
286
|
+
return code;
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
exports.Decompiler = Decompiler;
|
|
290
|
+
function decompile(cSource) {
|
|
291
|
+
const decompiler = new Decompiler();
|
|
292
|
+
return decompiler.decompile(cSource);
|
|
293
|
+
}
|
|
294
|
+
//# sourceMappingURL=decompiler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decompiler.js","sourceRoot":"","sources":["../src/decompiler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
export declare class Interpreter {
|
|
2
|
+
private globalScope;
|
|
3
|
+
private heap;
|
|
4
|
+
private functions;
|
|
5
|
+
private structs;
|
|
6
|
+
private enums;
|
|
7
|
+
private defines;
|
|
8
|
+
private typedefs;
|
|
9
|
+
private stdoutBuf;
|
|
10
|
+
private stderrBuf;
|
|
11
|
+
private captureOutput;
|
|
12
|
+
private stdinData;
|
|
13
|
+
private stdinPos;
|
|
14
|
+
constructor(options?: {
|
|
15
|
+
stdin?: string;
|
|
16
|
+
captureOutput?: boolean;
|
|
17
|
+
});
|
|
18
|
+
private writeStdout;
|
|
19
|
+
private writeStderr;
|
|
20
|
+
private setupBuiltins;
|
|
21
|
+
run(pearSource: string, argv?: string[]): {
|
|
22
|
+
exitCode: number;
|
|
23
|
+
stdout: string;
|
|
24
|
+
stderr: string;
|
|
25
|
+
};
|
|
26
|
+
private loadProgram;
|
|
27
|
+
private loadTopLevel;
|
|
28
|
+
private execNode;
|
|
29
|
+
private execBlock;
|
|
30
|
+
private execBlockInScope;
|
|
31
|
+
private execVarDecl;
|
|
32
|
+
private coerceInitForType;
|
|
33
|
+
private lookupStruct;
|
|
34
|
+
private defaultValue;
|
|
35
|
+
private execIf;
|
|
36
|
+
private execFor;
|
|
37
|
+
private execWhile;
|
|
38
|
+
private execDoWhile;
|
|
39
|
+
private execSwitch;
|
|
40
|
+
private evalExpr;
|
|
41
|
+
private evalNumber;
|
|
42
|
+
private evalString;
|
|
43
|
+
private unescapeString;
|
|
44
|
+
private evalChar;
|
|
45
|
+
private evalIdentifier;
|
|
46
|
+
private evalBinary;
|
|
47
|
+
private evalUnary;
|
|
48
|
+
private evalPostfix;
|
|
49
|
+
private deref;
|
|
50
|
+
private addressOf;
|
|
51
|
+
private addrToVar;
|
|
52
|
+
private varToAddr;
|
|
53
|
+
private scopeIdCounter;
|
|
54
|
+
private scopeIds;
|
|
55
|
+
private getScopeId;
|
|
56
|
+
private allocScalarCell;
|
|
57
|
+
private assignTo;
|
|
58
|
+
private writeToPtr;
|
|
59
|
+
private setArrayElement;
|
|
60
|
+
private evalAssign;
|
|
61
|
+
private evalCall;
|
|
62
|
+
private callFunction;
|
|
63
|
+
private currentVarargs;
|
|
64
|
+
private callBuiltin;
|
|
65
|
+
private evalIndex;
|
|
66
|
+
private evalMember;
|
|
67
|
+
private evalCast;
|
|
68
|
+
private evalSizeof;
|
|
69
|
+
private evalInitList;
|
|
70
|
+
}
|
|
71
|
+
export declare function interpret(pearSource: string, argv?: string[]): number;
|
|
72
|
+
//# sourceMappingURL=interpreter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interpreter.d.ts","sourceRoot":"","sources":["../src/interpreter.ts"],"names":[],"mappings":"AAuYA,qBAAa,WAAW;IACtB,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,IAAI,CAAO;IACnB,OAAO,CAAC,SAAS,CAAmC;IACpD,OAAO,CAAC,OAAO,CAA6C;IAC5D,OAAO,CAAC,KAAK,CAA0C;IACvD,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,QAAQ,CAA+B;IAC/C,OAAO,CAAC,SAAS,CAAM;IACvB,OAAO,CAAC,SAAS,CAAM;IACvB,OAAO,CAAC,aAAa,CAAU;IAC/B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,QAAQ,CAAK;gBAET,OAAO,GAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,OAAO,CAAA;KAAO;IAQrE,OAAO,CAAC,WAAW;IAQnB,OAAO,CAAC,WAAW;IAQnB,OAAO,CAAC,aAAa;IAmBrB,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,GAAE,MAAM,EAAO,GAAG;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;IAgClG,OAAO,CAAC,WAAW;IAMnB,OAAO,CAAC,YAAY;IA0EpB,OAAO,CAAC,QAAQ;IA6ChB,OAAO,CAAC,SAAS;IAKjB,OAAO,CAAC,gBAAgB;IAuBxB,OAAO,CAAC,WAAW;IAuCnB,OAAO,CAAC,iBAAiB;IA0BzB,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,YAAY;IA6BpB,OAAO,CAAC,MAAM;IASd,OAAO,CAAC,OAAO;IAoBf,OAAO,CAAC,SAAS;IAcjB,OAAO,CAAC,WAAW;IAgBnB,OAAO,CAAC,UAAU;IAiDlB,OAAO,CAAC,QAAQ;IA8BhB,OAAO,CAAC,UAAU;IAelB,OAAO,CAAC,UAAU;IAUlB,OAAO,CAAC,cAAc;IAkCtB,OAAO,CAAC,QAAQ;IAQhB,OAAO,CAAC,cAAc;IActB,OAAO,CAAC,UAAU;IAmFlB,OAAO,CAAC,SAAS;IAgDjB,OAAO,CAAC,WAAW;IAenB,OAAO,CAAC,KAAK;IA0Bb,OAAO,CAAC,SAAS;IA4CjB,OAAO,CAAC,SAAS,CAAqD;IAEtE,OAAO,CAAC,SAAS,CAA6B;IAC9C,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,QAAQ,CAAgC;IAEhD,OAAO,CAAC,UAAU;IASlB,OAAO,CAAC,eAAe;IAoBvB,OAAO,CAAC,QAAQ;IAmEhB,OAAO,CAAC,UAAU;IAmClB,OAAO,CAAC,eAAe;IAkBvB,OAAO,CAAC,UAAU;IAkBlB,OAAO,CAAC,QAAQ;IA2BhB,OAAO,CAAC,YAAY;IA6BpB,OAAO,CAAC,cAAc,CAAe;IAIrC,OAAO,CAAC,WAAW;IAkXnB,OAAO,CAAC,SAAS;IA0BjB,OAAO,CAAC,UAAU;IAoClB,OAAO,CAAC,QAAQ;IA6BhB,OAAO,CAAC,UAAU;IAmBlB,OAAO,CAAC,YAAY;CAUrB;AAcD,wBAAgB,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAIrE"}
|