rantera 0.1.3 → 0.1.4

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.
@@ -1,288 +0,0 @@
1
- import { existsSync, mkdirSync, readdirSync, readFileSync, renameSync, rmSync, statSync, unlinkSync, writeFileSync, } from "fs";
2
- import { dirname, join, relative } from "path";
3
- const MAX_FILE_SIZE = 500_000;
4
- const MAX_DIR_ENTRIES = 200;
5
- const MAX_GREP_RESULTS = 200;
6
- const MAX_GLOB_RESULTS = 500;
7
- const SKIP_DIRS = new Set([
8
- "node_modules", ".git", ".next", "dist", "__pycache__", ".venv", "venv",
9
- ]);
10
- // ─── Glob helpers ─────────────────────────────────────────────────────────────
11
- function globToRegex(pattern) {
12
- const p = pattern.replace(/\\/g, "/");
13
- let result = "";
14
- let i = 0;
15
- while (i < p.length) {
16
- const c = p[i];
17
- if (c === "*") {
18
- if (p[i + 1] === "*") {
19
- result += ".*";
20
- i += 2;
21
- if (p[i] === "/")
22
- i++;
23
- }
24
- else {
25
- result += "[^/]*";
26
- i++;
27
- }
28
- }
29
- else if (c === "?") {
30
- result += "[^/]";
31
- i++;
32
- }
33
- else if (/[.+^${}()|[\]\\]/.test(c)) {
34
- result += "\\" + c;
35
- i++;
36
- }
37
- else {
38
- result += c;
39
- i++;
40
- }
41
- }
42
- return new RegExp("^" + result + "$");
43
- }
44
- function walkDir(dir, root, results, limit = 10_000) {
45
- if (results.length >= limit)
46
- return;
47
- let entries;
48
- try {
49
- entries = readdirSync(dir).sort();
50
- }
51
- catch {
52
- return;
53
- }
54
- for (const entry of entries) {
55
- if (results.length >= limit)
56
- break;
57
- if (SKIP_DIRS.has(entry))
58
- continue;
59
- const full = join(dir, entry);
60
- try {
61
- const stat = statSync(full);
62
- if (stat.isDirectory()) {
63
- walkDir(full, root, results, limit);
64
- }
65
- else {
66
- results.push(relative(root, full).replace(/\\/g, "/"));
67
- }
68
- }
69
- catch { }
70
- }
71
- }
72
- // ─── Tools ────────────────────────────────────────────────────────────────────
73
- export function listDirectory(path, rootDir) {
74
- const target = join(rootDir, path);
75
- if (!existsSync(target))
76
- return `ERROR: path '${path}' does not exist.`;
77
- if (!statSync(target).isDirectory())
78
- return `ERROR: '${path}' is not a directory.`;
79
- const lines = [];
80
- function walk(dir, depth, prefix) {
81
- if (lines.length >= MAX_DIR_ENTRIES)
82
- return;
83
- let entries;
84
- try {
85
- entries = readdirSync(dir).sort();
86
- }
87
- catch {
88
- return;
89
- }
90
- for (const entry of entries) {
91
- if (lines.length >= MAX_DIR_ENTRIES)
92
- break;
93
- if (SKIP_DIRS.has(entry)) {
94
- lines.push(`${prefix}${entry}/ (skipped)`);
95
- continue;
96
- }
97
- const full = join(dir, entry);
98
- const stat = statSync(full);
99
- if (stat.isDirectory()) {
100
- lines.push(`${prefix}${entry}/`);
101
- if (depth < 3)
102
- walk(full, depth + 1, prefix + " ");
103
- }
104
- else {
105
- lines.push(`${prefix}${entry}`);
106
- }
107
- }
108
- }
109
- walk(target, 0, "");
110
- const rel = relative(rootDir, target) || ".";
111
- if (lines.length >= MAX_DIR_ENTRIES)
112
- lines.push(`... (truncated at ${MAX_DIR_ENTRIES} entries)`);
113
- return rel + "/\n" + lines.join("\n");
114
- }
115
- export function globFiles(pattern, rootDir, basePath = ".") {
116
- const searchRoot = join(rootDir, basePath);
117
- if (!existsSync(searchRoot))
118
- return `ERROR: path '${basePath}' does not exist.`;
119
- const allFiles = [];
120
- walkDir(searchRoot, searchRoot, allFiles);
121
- const regex = globToRegex(pattern);
122
- const matches = allFiles.filter(f => regex.test(f));
123
- if (matches.length === 0)
124
- return `No files match '${pattern}'.`;
125
- const shown = matches.slice(0, MAX_GLOB_RESULTS);
126
- const suffix = matches.length > MAX_GLOB_RESULTS
127
- ? `\n... (${matches.length} total, showing ${MAX_GLOB_RESULTS})`
128
- : "";
129
- return shown.join("\n") + suffix;
130
- }
131
- export function grepFiles(pattern, rootDir, basePath = ".", filePattern) {
132
- const searchRoot = join(rootDir, basePath);
133
- if (!existsSync(searchRoot))
134
- return `ERROR: path '${basePath}' does not exist.`;
135
- const allFiles = [];
136
- walkDir(searchRoot, searchRoot, allFiles);
137
- let filesToSearch = allFiles;
138
- if (filePattern) {
139
- const ext = filePattern.startsWith("*.") ? filePattern.slice(1) : null;
140
- if (ext) {
141
- filesToSearch = allFiles.filter(f => f.endsWith(ext));
142
- }
143
- else {
144
- const fileRegex = globToRegex(filePattern);
145
- filesToSearch = allFiles.filter(f => {
146
- const name = f.split("/").pop();
147
- return fileRegex.test(name) || fileRegex.test(f);
148
- });
149
- }
150
- }
151
- let searchRegex;
152
- try {
153
- searchRegex = new RegExp(pattern);
154
- }
155
- catch {
156
- searchRegex = new RegExp(pattern.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"));
157
- }
158
- const results = [];
159
- for (const relPath of filesToSearch) {
160
- if (results.length >= MAX_GREP_RESULTS)
161
- break;
162
- const fullPath = join(searchRoot, relPath);
163
- try {
164
- const content = readFileSync(fullPath, "utf-8");
165
- const lines = content.split("\n");
166
- for (let lineNum = 0; lineNum < lines.length; lineNum++) {
167
- if (results.length >= MAX_GREP_RESULTS)
168
- break;
169
- if (searchRegex.test(lines[lineNum])) {
170
- results.push(`${relPath}:${lineNum + 1}: ${lines[lineNum].trimEnd()}`);
171
- }
172
- }
173
- }
174
- catch { }
175
- }
176
- if (results.length === 0)
177
- return `No matches for '${pattern}'.`;
178
- const suffix = results.length >= MAX_GREP_RESULTS
179
- ? `\n... (truncated at ${MAX_GREP_RESULTS} matches)`
180
- : "";
181
- return results.join("\n") + suffix;
182
- }
183
- export function readFile(path, rootDir) {
184
- const target = join(rootDir, path);
185
- if (!existsSync(target))
186
- return `ERROR: file '${path}' does not exist.`;
187
- if (!statSync(target).isFile())
188
- return `ERROR: '${path}' is not a file.`;
189
- const size = statSync(target).size;
190
- if (size > MAX_FILE_SIZE) {
191
- return `ERROR: file '${path}' is too large (${Math.round(size / 1024)}KB).`;
192
- }
193
- try {
194
- return readFileSync(target, "utf-8");
195
- }
196
- catch (err) {
197
- return `ERROR reading '${path}': ${err}`;
198
- }
199
- }
200
- export function patchFile(path, oldString, newString, rootDir) {
201
- const target = join(rootDir, path);
202
- if (!existsSync(target))
203
- return `ERROR: file '${path}' does not exist.`;
204
- if (!statSync(target).isFile())
205
- return `ERROR: '${path}' is not a file.`;
206
- let content;
207
- try {
208
- content = readFileSync(target, "utf-8");
209
- }
210
- catch (err) {
211
- return `ERROR reading '${path}': ${err}`;
212
- }
213
- const occurrences = content.split(oldString).length - 1;
214
- if (occurrences === 0) {
215
- return `ERROR: old_string not found in '${path}'. Run read_file first and copy the exact text.`;
216
- }
217
- if (occurrences > 1) {
218
- return `ERROR: old_string matches ${occurrences} times in '${path}'. Add more surrounding lines to make it unique.`;
219
- }
220
- const newContent = content.replace(oldString, newString);
221
- try {
222
- writeFileSync(target, newContent, "utf-8");
223
- return `OK: patched '${path}'.`;
224
- }
225
- catch (err) {
226
- return `ERROR writing '${path}': ${err}`;
227
- }
228
- }
229
- export function writeFile(path, content, rootDir) {
230
- const target = join(rootDir, path);
231
- try {
232
- const dir = dirname(target);
233
- if (!existsSync(dir))
234
- mkdirSync(dir, { recursive: true });
235
- writeFileSync(target, content, "utf-8");
236
- return `OK: wrote ${content.length} chars to '${path}'.`;
237
- }
238
- catch (err) {
239
- return `ERROR writing '${path}': ${err}`;
240
- }
241
- }
242
- export function deleteFile(path, rootDir) {
243
- const target = join(rootDir, path);
244
- if (!existsSync(target))
245
- return `ERROR: '${path}' does not exist.`;
246
- try {
247
- if (statSync(target).isDirectory()) {
248
- rmSync(target, { recursive: true, force: true });
249
- return `OK: deleted directory '${path}'.`;
250
- }
251
- else {
252
- unlinkSync(target);
253
- return `OK: deleted '${path}'.`;
254
- }
255
- }
256
- catch (err) {
257
- return `ERROR deleting '${path}': ${err}`;
258
- }
259
- }
260
- export function createDirectory(path, rootDir) {
261
- const target = join(rootDir, path);
262
- if (existsSync(target))
263
- return `OK: '${path}' already exists.`;
264
- try {
265
- mkdirSync(target, { recursive: true });
266
- return `OK: created directory '${path}'.`;
267
- }
268
- catch (err) {
269
- return `ERROR creating '${path}': ${err}`;
270
- }
271
- }
272
- export function moveFile(source, destination, rootDir) {
273
- const srcPath = join(rootDir, source);
274
- const dstPath = join(rootDir, destination);
275
- if (!existsSync(srcPath))
276
- return `ERROR: source '${source}' does not exist.`;
277
- try {
278
- const dstDir = dirname(dstPath);
279
- if (!existsSync(dstDir))
280
- mkdirSync(dstDir, { recursive: true });
281
- renameSync(srcPath, dstPath);
282
- return `OK: moved '${source}' to '${destination}'.`;
283
- }
284
- catch (err) {
285
- return `ERROR moving '${source}': ${err}`;
286
- }
287
- }
288
- //# sourceMappingURL=files.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"files.js","sourceRoot":"","sources":["../../src/tools/files.ts"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- export interface ToolResult {
2
- output: string;
3
- ok: boolean;
4
- }
5
- export declare function executeTool(name: string, args: Record<string, unknown>, cwd: string): Promise<ToolResult>;
6
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAmBA,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAA;IACd,EAAE,EAAE,OAAO,CAAA;CACZ;AAED,wBAAsB,WAAW,CAC/B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,UAAU,CAAC,CAgGrB"}
@@ -1,112 +0,0 @@
1
- import { listDirectory, globFiles, grepFiles, readFile, patchFile, writeFile, deleteFile, createDirectory, moveFile, } from "./files.js";
2
- import { runCommand, gitStatus, gitDiff, gitLog, gitCommit, } from "./shell.js";
3
- export async function executeTool(name, args, cwd) {
4
- try {
5
- switch (name) {
6
- case "list_directory": {
7
- const path = String(args.path ?? ".");
8
- const out = listDirectory(path, cwd);
9
- return { output: out, ok: !out.startsWith("ERROR") };
10
- }
11
- case "glob_files": {
12
- const pattern = String(args.pattern ?? "**/*");
13
- const path = String(args.path ?? ".");
14
- const out = globFiles(pattern, cwd, path);
15
- return { output: out, ok: !out.startsWith("ERROR") };
16
- }
17
- case "grep_files": {
18
- const pattern = String(args.pattern ?? "");
19
- const path = String(args.path ?? ".");
20
- const filePattern = args.file_pattern ? String(args.file_pattern) : undefined;
21
- if (!pattern)
22
- return { output: "ERROR: pattern is required.", ok: false };
23
- const out = grepFiles(pattern, cwd, path, filePattern);
24
- return { output: out, ok: !out.startsWith("ERROR") };
25
- }
26
- case "read_file": {
27
- const path = String(args.path ?? "");
28
- if (!path)
29
- return { output: "ERROR: path is required.", ok: false };
30
- const out = readFile(path, cwd);
31
- return { output: out, ok: !out.startsWith("ERROR") };
32
- }
33
- case "patch_file": {
34
- const path = String(args.path ?? "");
35
- const oldString = String(args.old_string ?? "");
36
- const newString = String(args.new_string ?? "");
37
- if (!path)
38
- return { output: "ERROR: path is required.", ok: false };
39
- if (!oldString)
40
- return { output: "ERROR: old_string is required.", ok: false };
41
- const out = patchFile(path, oldString, newString, cwd);
42
- return { output: out, ok: out.startsWith("OK") };
43
- }
44
- case "write_file": {
45
- const path = String(args.path ?? "");
46
- const content = String(args.content ?? "");
47
- if (!path)
48
- return { output: "ERROR: path is required.", ok: false };
49
- const out = writeFile(path, content, cwd);
50
- return { output: out, ok: out.startsWith("OK") };
51
- }
52
- case "delete_file": {
53
- const path = String(args.path ?? "");
54
- if (!path)
55
- return { output: "ERROR: path is required.", ok: false };
56
- const out = deleteFile(path, cwd);
57
- return { output: out, ok: out.startsWith("OK") };
58
- }
59
- case "create_directory": {
60
- const path = String(args.path ?? "");
61
- if (!path)
62
- return { output: "ERROR: path is required.", ok: false };
63
- const out = createDirectory(path, cwd);
64
- return { output: out, ok: out.startsWith("OK") };
65
- }
66
- case "move_file": {
67
- const source = String(args.source ?? "");
68
- const destination = String(args.destination ?? "");
69
- if (!source)
70
- return { output: "ERROR: source is required.", ok: false };
71
- if (!destination)
72
- return { output: "ERROR: destination is required.", ok: false };
73
- const out = moveFile(source, destination, cwd);
74
- return { output: out, ok: out.startsWith("OK") };
75
- }
76
- case "run_command": {
77
- const command = String(args.command ?? "");
78
- if (!command)
79
- return { output: "ERROR: command is required.", ok: false };
80
- const out = await runCommand(command, cwd);
81
- return { output: out, ok: !out.startsWith("ERROR") && !out.startsWith("BLOCKED") };
82
- }
83
- case "git_status": {
84
- const out = await gitStatus(cwd);
85
- return { output: out, ok: !out.startsWith("ERROR") };
86
- }
87
- case "git_diff": {
88
- const target = args.target ? String(args.target) : undefined;
89
- const out = await gitDiff(cwd, target);
90
- return { output: out, ok: !out.startsWith("ERROR") };
91
- }
92
- case "git_log": {
93
- const n = typeof args.n === "number" ? args.n : 10;
94
- const out = await gitLog(cwd, n);
95
- return { output: out, ok: !out.startsWith("ERROR") };
96
- }
97
- case "git_commit": {
98
- const message = String(args.message ?? "");
99
- if (!message)
100
- return { output: "ERROR: message is required.", ok: false };
101
- const out = await gitCommit(cwd, message);
102
- return { output: out, ok: !out.startsWith("ERROR") };
103
- }
104
- default:
105
- return { output: `ERROR: unknown local tool '${name}'.`, ok: false };
106
- }
107
- }
108
- catch (err) {
109
- return { output: `ERROR: tool '${name}' threw: ${err}`, ok: false };
110
- }
111
- }
112
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- export declare function runCommand(command: string, cwd: string): Promise<string>;
2
- export declare function gitStatus(cwd: string): Promise<string>;
3
- export declare function gitDiff(cwd: string, target?: string): Promise<string>;
4
- export declare function gitLog(cwd: string, n?: number): Promise<string>;
5
- export declare function gitCommit(cwd: string, message: string): Promise<string>;
6
- //# sourceMappingURL=shell.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"shell.d.ts","sourceRoot":"","sources":["../../src/tools/shell.ts"],"names":[],"mappings":"AAiBA,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAgCxE;AAkBD,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAEtD;AAED,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAKrE;AAED,wBAAgB,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,SAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAE3D;AAED,wBAAsB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAK7E"}
@@ -1,71 +0,0 @@
1
- import { execFile } from "child_process";
2
- const TIMEOUT_MS = 30_000;
3
- const MAX_OUTPUT = 8_000;
4
- const BLOCKED_PATTERNS = [
5
- /rm\s+-rf\s+[/\\]/,
6
- /rmdir\s+\/s/i,
7
- /format\s+[a-z]:/i,
8
- /dd\s+if=/,
9
- /mkfs/,
10
- />\s*\/dev\/sd/,
11
- /shutdown/i,
12
- /reboot/i,
13
- /del\s+\/[sf]/i,
14
- ];
15
- export function runCommand(command, cwd) {
16
- for (const pattern of BLOCKED_PATTERNS) {
17
- if (pattern.test(command)) {
18
- return Promise.resolve(`BLOCKED: '${command.slice(0, 60)}' matches a destructive command pattern and will not run.`);
19
- }
20
- }
21
- return new Promise((resolve) => {
22
- const isWindows = process.platform === "win32";
23
- const [shell, flag] = isWindows ? ["cmd.exe", "/c"] : ["sh", "-c"];
24
- execFile(shell, [flag, command], { cwd, timeout: TIMEOUT_MS, maxBuffer: MAX_OUTPUT * 2 }, (err, stdout, stderr) => {
25
- const out = (stdout + (stderr ? `\nSTDERR:\n${stderr}` : "")).trim();
26
- const truncated = out.length > MAX_OUTPUT
27
- ? out.slice(0, MAX_OUTPUT) + `\n... (truncated, ${out.length} chars total)`
28
- : out;
29
- if (err && !stdout && !stderr) {
30
- resolve(`ERROR: ${err.message}`);
31
- }
32
- else {
33
- resolve(truncated || "(no output)");
34
- }
35
- });
36
- });
37
- }
38
- // ─── Git helpers ──────────────────────────────────────────────────────────────
39
- // Use execFile with an arg array to avoid shell quoting issues with commit messages.
40
- function gitExec(args, cwd) {
41
- return new Promise((resolve) => {
42
- execFile("git", args, { cwd, timeout: TIMEOUT_MS, maxBuffer: 200_000 }, (err, stdout, stderr) => {
43
- const out = (stdout + (stderr ? `\n${stderr}` : "")).trim();
44
- if (err && !stdout && !stderr) {
45
- resolve(`ERROR: ${err.message}`);
46
- }
47
- else {
48
- resolve(out || "(no output)");
49
- }
50
- });
51
- });
52
- }
53
- export function gitStatus(cwd) {
54
- return gitExec(["status", "--short"], cwd);
55
- }
56
- export function gitDiff(cwd, target) {
57
- const args = target ? ["diff", target] : ["diff", "HEAD"];
58
- return gitExec(args, cwd).then(out => out.length > MAX_OUTPUT ? out.slice(0, MAX_OUTPUT) + "\n... (diff truncated)" : out);
59
- }
60
- export function gitLog(cwd, n = 10) {
61
- return gitExec(["log", "--oneline", "-n", String(Math.min(n, 50))], cwd);
62
- }
63
- export async function gitCommit(cwd, message) {
64
- if (!message.trim())
65
- return "ERROR: commit message is required.";
66
- const addOut = await gitExec(["add", "-A"], cwd);
67
- if (addOut.startsWith("ERROR"))
68
- return addOut;
69
- return gitExec(["commit", "-m", message], cwd);
70
- }
71
- //# sourceMappingURL=shell.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"shell.js","sourceRoot":"","sources":["../../src/tools/shell.ts"],"names":[],"mappings":"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"}
package/dist/ui.d.ts DELETED
@@ -1,45 +0,0 @@
1
- export declare const MODELS: readonly [{
2
- readonly id: "hira";
3
- readonly display: "Hira";
4
- readonly desc: "The motherland's voice";
5
- readonly available: true;
6
- }, {
7
- readonly id: "tera";
8
- readonly display: "Tera";
9
- readonly desc: "Orchestrator — routes to best specialist";
10
- readonly available: false;
11
- }, {
12
- readonly id: "akili";
13
- readonly display: "Akili";
14
- readonly desc: "Code intelligence";
15
- readonly available: false;
16
- }, {
17
- readonly id: "ilimi";
18
- readonly display: "Ilimi";
19
- readonly desc: "Knowledge & research";
20
- readonly available: false;
21
- }];
22
- export type ModelId = typeof MODELS[number]["id"];
23
- export declare function printBanner(): void;
24
- export declare function printCommandList(): void;
25
- export declare function printWelcome(cwd: string, model: string, memoryLoaded: boolean): void;
26
- export declare function printHelp(): void;
27
- export declare function printModelList(current?: string): void;
28
- export declare function printCost(estTokens: number, msgCount: number): void;
29
- export declare function printStatus(apiKey: string | undefined, apiUrl: string | undefined, historyCount: number, cwd: string, model: string, estTokens: number): void;
30
- export declare function printHistory(history: Array<{
31
- role: string;
32
- content: string;
33
- }>): void;
34
- export declare function startSpinner(text: string): void;
35
- export declare function updateSpinner(text: string): void;
36
- export declare function stopSpinner(success?: boolean, text?: string): void;
37
- export declare function clearSpinner(): void;
38
- export declare function printText(text: string): void;
39
- export declare function printToolCall(name: string, args: Record<string, unknown>): void;
40
- export declare function printToolResult(_name: string, output: string, ok: boolean): void;
41
- export declare function printError(message: string): void;
42
- export declare function printSuccess(message: string): void;
43
- export declare function printDivider(): void;
44
- export declare function printAssistantPrefix(model?: string): void;
45
- //# sourceMappingURL=ui.d.ts.map
package/dist/ui.d.ts.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../src/ui.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;EAKT,CAAA;AAEV,MAAM,MAAM,OAAO,GAAG,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAA;AAyEjD,wBAAgB,WAAW,SAiB1B;AAGD,wBAAgB,gBAAgB,SAmB/B;AAGD,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,QAyB7E;AAGD,wBAAgB,SAAS,SAgCxB;AAGD,wBAAgB,cAAc,CAAC,OAAO,SAAS,QAmB9C;AAGD,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,QAgB5D;AAGD,wBAAgB,WAAW,CACzB,MAAM,EAAQ,MAAM,GAAG,SAAS,EAChC,MAAM,EAAQ,MAAM,GAAG,SAAS,EAChC,YAAY,EAAE,MAAM,EACpB,GAAG,EAAW,MAAM,EACpB,KAAK,EAAS,MAAM,EACpB,SAAS,EAAK,MAAM,QAwBrB;AAGD,wBAAgB,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,QAyB7E;AAGD,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,QAMxC;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,QAEzC;AAED,wBAAgB,WAAW,CAAC,OAAO,UAAO,EAAE,IAAI,CAAC,EAAE,MAAM,QAQxD;AAED,wBAAgB,YAAY,SAK3B;AAGD,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,QAErC;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,QAGxE;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,QAMzE;AAGD,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,QAEzC;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,QAE3C;AAGD,wBAAgB,YAAY,SAE3B;AAED,wBAAgB,oBAAoB,CAAC,KAAK,SAAS,QAGlD"}