@elizaos/plugin-shell 2.0.0-alpha.4 → 2.0.0-alpha.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.
- package/dist/index.js +50 -14
- package/dist/index.js.map +4 -4
- package/dist/services/shellService.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -18,7 +18,7 @@ var __toESM = (mod, isNodeMode, target) => {
|
|
|
18
18
|
var __commonJS = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports);
|
|
19
19
|
var __require = /* @__PURE__ */ createRequire(import.meta.url);
|
|
20
20
|
|
|
21
|
-
//
|
|
21
|
+
// node_modules/@lydell/node-pty/eventEmitter2.js
|
|
22
22
|
var require_eventEmitter2 = __commonJS((exports) => {
|
|
23
23
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
24
24
|
var EventEmitter2 = function() {
|
|
@@ -63,7 +63,7 @@ var require_eventEmitter2 = __commonJS((exports) => {
|
|
|
63
63
|
exports.EventEmitter2 = EventEmitter2;
|
|
64
64
|
});
|
|
65
65
|
|
|
66
|
-
//
|
|
66
|
+
// node_modules/@lydell/node-pty/terminal.js
|
|
67
67
|
var require_terminal = __commonJS((exports) => {
|
|
68
68
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
69
69
|
var events_1 = __require("events");
|
|
@@ -251,7 +251,7 @@ var require_terminal = __commonJS((exports) => {
|
|
|
251
251
|
exports.Terminal = Terminal;
|
|
252
252
|
});
|
|
253
253
|
|
|
254
|
-
//
|
|
254
|
+
// node_modules/@lydell/node-pty/shared/conout.js
|
|
255
255
|
var require_conout = __commonJS((exports) => {
|
|
256
256
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
257
257
|
function getWorkerPipeName(conoutPipeName) {
|
|
@@ -260,9 +260,9 @@ var require_conout = __commonJS((exports) => {
|
|
|
260
260
|
exports.getWorkerPipeName = getWorkerPipeName;
|
|
261
261
|
});
|
|
262
262
|
|
|
263
|
-
//
|
|
263
|
+
// node_modules/@lydell/node-pty/windowsConoutConnection.js
|
|
264
264
|
var require_windowsConoutConnection = __commonJS((exports) => {
|
|
265
|
-
var __dirname = "/Users/shawwalters/eliza-
|
|
265
|
+
var __dirname = "/Users/shawwalters/eliza-workspace/plugins/plugin-shell/typescript/node_modules/@lydell/node-pty";
|
|
266
266
|
var __awaiter = exports && exports.__awaiter || function(thisArg, _arguments, P, generator) {
|
|
267
267
|
function adopt(value) {
|
|
268
268
|
return value instanceof P ? value : new P(function(resolve) {
|
|
@@ -435,7 +435,7 @@ var require_windowsConoutConnection = __commonJS((exports) => {
|
|
|
435
435
|
exports.ConoutConnection = ConoutConnection;
|
|
436
436
|
});
|
|
437
437
|
|
|
438
|
-
//
|
|
438
|
+
// node_modules/@lydell/node-pty/package.json
|
|
439
439
|
var require_package = __commonJS((exports, module) => {
|
|
440
440
|
module.exports = {
|
|
441
441
|
name: "@lydell/node-pty",
|
|
@@ -470,7 +470,7 @@ var require_package = __commonJS((exports, module) => {
|
|
|
470
470
|
};
|
|
471
471
|
});
|
|
472
472
|
|
|
473
|
-
//
|
|
473
|
+
// node_modules/@lydell/node-pty/requireBinary.js
|
|
474
474
|
var require_requireBinary = __commonJS((exports) => {
|
|
475
475
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
476
476
|
var PACKAGE_NAME = "@lydell/node-pty-" + process.platform + "-" + process.arch;
|
|
@@ -511,9 +511,9 @@ Your platform (` + process.platform + "-" + process.arch + ") might not be suppo
|
|
|
511
511
|
}
|
|
512
512
|
});
|
|
513
513
|
|
|
514
|
-
//
|
|
514
|
+
// node_modules/@lydell/node-pty/windowsPtyAgent.js
|
|
515
515
|
var require_windowsPtyAgent = __commonJS((exports) => {
|
|
516
|
-
var __dirname = "/Users/shawwalters/eliza-
|
|
516
|
+
var __dirname = "/Users/shawwalters/eliza-workspace/plugins/plugin-shell/typescript/node_modules/@lydell/node-pty";
|
|
517
517
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
518
518
|
var fs5 = __require("fs");
|
|
519
519
|
var path6 = __require("path");
|
|
@@ -729,7 +729,7 @@ var require_windowsPtyAgent = __commonJS((exports) => {
|
|
|
729
729
|
}
|
|
730
730
|
});
|
|
731
731
|
|
|
732
|
-
//
|
|
732
|
+
// node_modules/@lydell/node-pty/utils.js
|
|
733
733
|
var require_utils = __commonJS((exports) => {
|
|
734
734
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
735
735
|
function assign(target) {
|
|
@@ -747,7 +747,7 @@ var require_utils = __commonJS((exports) => {
|
|
|
747
747
|
exports.assign = assign;
|
|
748
748
|
});
|
|
749
749
|
|
|
750
|
-
//
|
|
750
|
+
// node_modules/@lydell/node-pty/windowsTerminal.js
|
|
751
751
|
var require_windowsTerminal = __commonJS((exports) => {
|
|
752
752
|
var __extends = exports && exports.__extends || function() {
|
|
753
753
|
var extendStatics = function(d, b) {
|
|
@@ -925,7 +925,7 @@ var require_windowsTerminal = __commonJS((exports) => {
|
|
|
925
925
|
exports.WindowsTerminal = WindowsTerminal;
|
|
926
926
|
});
|
|
927
927
|
|
|
928
|
-
//
|
|
928
|
+
// node_modules/@lydell/node-pty/unixTerminal.js
|
|
929
929
|
var require_unixTerminal = __commonJS((exports) => {
|
|
930
930
|
var __extends = exports && exports.__extends || function() {
|
|
931
931
|
var extendStatics = function(d, b) {
|
|
@@ -1171,7 +1171,7 @@ var require_unixTerminal = __commonJS((exports) => {
|
|
|
1171
1171
|
exports.UnixTerminal = UnixTerminal;
|
|
1172
1172
|
});
|
|
1173
1173
|
|
|
1174
|
-
//
|
|
1174
|
+
// node_modules/@lydell/node-pty/index.js
|
|
1175
1175
|
var require_node_pty = __commonJS((exports) => {
|
|
1176
1176
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
1177
1177
|
var terminalCtor;
|
|
@@ -4412,6 +4412,42 @@ class ShellService extends Service2 {
|
|
|
4412
4412
|
executedIn: this.currentDirectory
|
|
4413
4413
|
};
|
|
4414
4414
|
}
|
|
4415
|
+
if (this.runtime && this.runtime.sandboxMode) {
|
|
4416
|
+
const hostApiUrl = this.runtime.getSetting("SANDBOX_HOST_API_URL") ?? "http://localhost:2138";
|
|
4417
|
+
const runtimeFetch = this.runtime.fetch ?? globalThis.fetch;
|
|
4418
|
+
logger9.info(`[shell:sandbox] routing exec to ${hostApiUrl}: ${command.substring(0, 100)}`);
|
|
4419
|
+
try {
|
|
4420
|
+
const response = await runtimeFetch(`${hostApiUrl}/api/sandbox/exec`, {
|
|
4421
|
+
method: "POST",
|
|
4422
|
+
headers: { "Content-Type": "application/json" },
|
|
4423
|
+
body: JSON.stringify({
|
|
4424
|
+
command,
|
|
4425
|
+
workdir: this.currentDirectory,
|
|
4426
|
+
timeoutMs: 30000
|
|
4427
|
+
})
|
|
4428
|
+
});
|
|
4429
|
+
const result2 = await response.json();
|
|
4430
|
+
logger9.info(`[shell:sandbox] exec completed: exit=${result2.exitCode} duration=${result2.durationMs}ms`);
|
|
4431
|
+
return {
|
|
4432
|
+
success: result2.exitCode === 0,
|
|
4433
|
+
stdout: result2.stdout,
|
|
4434
|
+
stderr: result2.stderr,
|
|
4435
|
+
exitCode: result2.exitCode,
|
|
4436
|
+
executedIn: this.currentDirectory
|
|
4437
|
+
};
|
|
4438
|
+
} catch (err) {
|
|
4439
|
+
const errMsg = err instanceof Error ? err.message : String(err);
|
|
4440
|
+
logger9.error(`[shell:sandbox] exec failed: ${errMsg}`);
|
|
4441
|
+
return {
|
|
4442
|
+
success: false,
|
|
4443
|
+
stdout: "",
|
|
4444
|
+
stderr: `Sandbox exec failed: ${errMsg}`,
|
|
4445
|
+
exitCode: 1,
|
|
4446
|
+
error: "Sandbox remote execution failed",
|
|
4447
|
+
executedIn: this.currentDirectory
|
|
4448
|
+
};
|
|
4449
|
+
}
|
|
4450
|
+
}
|
|
4415
4451
|
const trimmedCommand = command.trim();
|
|
4416
4452
|
if (!isSafeCommand(trimmedCommand)) {
|
|
4417
4453
|
return {
|
|
@@ -5559,4 +5595,4 @@ export {
|
|
|
5559
5595
|
BRACKETED_PASTE_END
|
|
5560
5596
|
};
|
|
5561
5597
|
|
|
5562
|
-
//# debugId=
|
|
5598
|
+
//# debugId=20C8338CDBDDBAFA64756E2164756E21
|
package/dist/index.js.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["
|
|
3
|
+
"sources": ["../node_modules/@lydell/node-pty/eventEmitter2.js", "../node_modules/@lydell/node-pty/terminal.js", "../node_modules/@lydell/node-pty/shared/conout.js", "../node_modules/@lydell/node-pty/windowsConoutConnection.js", "../node_modules/@lydell/node-pty/requireBinary.js", "../node_modules/@lydell/node-pty/windowsPtyAgent.js", "../node_modules/@lydell/node-pty/utils.js", "../node_modules/@lydell/node-pty/windowsTerminal.js", "../node_modules/@lydell/node-pty/unixTerminal.js", "../node_modules/@lydell/node-pty/index.js", "../actions/clearHistory.ts", "../generated/specs/specs.ts", "../generated/specs/spec-helpers.ts", "../actions/executeCommand.ts", "../generated/prompts/typescript/prompts.ts", "../actions/processAction.ts", "../approvals/allowlist.ts", "../approvals/types.ts", "../approvals/analysis.ts", "../approvals/service.ts", "../providers/shellHistoryProvider.ts", "../services/shellService.ts", "../utils/config.ts", "../utils/pathUtils.ts", "../utils/ptyKeys.ts", "../utils/shellUtils.ts", "../services/processRegistry.ts", "../index.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
5
|
"\"use strict\";\n/**\n * Copyright (c) 2019, Microsoft Corporation (MIT License).\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar EventEmitter2 = /** @class */ (function () {\n function EventEmitter2() {\n this._listeners = [];\n }\n Object.defineProperty(EventEmitter2.prototype, \"event\", {\n get: function () {\n var _this = this;\n if (!this._event) {\n this._event = function (listener) {\n _this._listeners.push(listener);\n var disposable = {\n dispose: function () {\n for (var i = 0; i < _this._listeners.length; i++) {\n if (_this._listeners[i] === listener) {\n _this._listeners.splice(i, 1);\n return;\n }\n }\n }\n };\n return disposable;\n };\n }\n return this._event;\n },\n enumerable: true,\n configurable: true\n });\n EventEmitter2.prototype.fire = function (data) {\n var queue = [];\n for (var i = 0; i < this._listeners.length; i++) {\n queue.push(this._listeners[i]);\n }\n for (var i = 0; i < queue.length; i++) {\n queue[i].call(undefined, data);\n }\n };\n return EventEmitter2;\n}());\nexports.EventEmitter2 = EventEmitter2;\n",
|
|
6
6
|
"\"use strict\";\n/**\n * Copyright (c) 2012-2015, Christopher Jeffrey (MIT License)\n * Copyright (c) 2016, Daniel Imms (MIT License).\n * Copyright (c) 2018, Microsoft Corporation (MIT License).\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar events_1 = require(\"events\");\nvar eventEmitter2_1 = require(\"./eventEmitter2\");\nexports.DEFAULT_COLS = 80;\nexports.DEFAULT_ROWS = 24;\n/**\n * Default messages to indicate PAUSE/RESUME for automatic flow control.\n * To avoid conflicts with rebound XON/XOFF control codes (such as on-my-zsh),\n * the sequences can be customized in `IPtyForkOptions`.\n */\nvar FLOW_CONTROL_PAUSE = '\\x13'; // defaults to XOFF\nvar FLOW_CONTROL_RESUME = '\\x11'; // defaults to XON\nvar Terminal = /** @class */ (function () {\n function Terminal(opt) {\n this._pid = 0;\n this._fd = 0;\n this._cols = 0;\n this._rows = 0;\n this._readable = false;\n this._writable = false;\n this._onData = new eventEmitter2_1.EventEmitter2();\n this._onExit = new eventEmitter2_1.EventEmitter2();\n // for 'close'\n this._internalee = new events_1.EventEmitter();\n // setup flow control handling\n this.handleFlowControl = !!(opt === null || opt === void 0 ? void 0 : opt.handleFlowControl);\n this._flowControlPause = (opt === null || opt === void 0 ? void 0 : opt.flowControlPause) || FLOW_CONTROL_PAUSE;\n this._flowControlResume = (opt === null || opt === void 0 ? void 0 : opt.flowControlResume) || FLOW_CONTROL_RESUME;\n if (!opt) {\n return;\n }\n // Do basic type checks here in case node-pty is being used within JavaScript. If the wrong\n // types go through to the C++ side it can lead to hard to diagnose exceptions.\n this._checkType('name', opt.name ? opt.name : undefined, 'string');\n this._checkType('cols', opt.cols ? opt.cols : undefined, 'number');\n this._checkType('rows', opt.rows ? opt.rows : undefined, 'number');\n this._checkType('cwd', opt.cwd ? opt.cwd : undefined, 'string');\n this._checkType('env', opt.env ? opt.env : undefined, 'object');\n this._checkType('uid', opt.uid ? opt.uid : undefined, 'number');\n this._checkType('gid', opt.gid ? opt.gid : undefined, 'number');\n this._checkType('encoding', opt.encoding ? opt.encoding : undefined, 'string');\n }\n Object.defineProperty(Terminal.prototype, \"onData\", {\n get: function () { return this._onData.event; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Terminal.prototype, \"onExit\", {\n get: function () { return this._onExit.event; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Terminal.prototype, \"pid\", {\n get: function () { return this._pid; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Terminal.prototype, \"cols\", {\n get: function () { return this._cols; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Terminal.prototype, \"rows\", {\n get: function () { return this._rows; },\n enumerable: true,\n configurable: true\n });\n Terminal.prototype.write = function (data) {\n if (this.handleFlowControl) {\n // PAUSE/RESUME messages are not forwarded to the pty\n if (data === this._flowControlPause) {\n this.pause();\n return;\n }\n if (data === this._flowControlResume) {\n this.resume();\n return;\n }\n }\n // everything else goes to the real pty\n this._write(data);\n };\n Terminal.prototype._forwardEvents = function () {\n var _this = this;\n this.on('data', function (e) { return _this._onData.fire(e); });\n this.on('exit', function (exitCode, signal) { return _this._onExit.fire({ exitCode: exitCode, signal: signal }); });\n };\n Terminal.prototype._checkType = function (name, value, type, allowArray) {\n if (allowArray === void 0) { allowArray = false; }\n if (value === undefined) {\n return;\n }\n if (allowArray) {\n if (Array.isArray(value)) {\n value.forEach(function (v, i) {\n if (typeof v !== type) {\n throw new Error(name + \"[\" + i + \"] must be a \" + type + \" (not a \" + typeof v[i] + \")\");\n }\n });\n return;\n }\n }\n if (typeof value !== type) {\n throw new Error(name + \" must be a \" + type + \" (not a \" + typeof value + \")\");\n }\n };\n /** See net.Socket.end */\n Terminal.prototype.end = function (data) {\n this._socket.end(data);\n };\n /** See stream.Readable.pipe */\n Terminal.prototype.pipe = function (dest, options) {\n return this._socket.pipe(dest, options);\n };\n /** See net.Socket.pause */\n Terminal.prototype.pause = function () {\n return this._socket.pause();\n };\n /** See net.Socket.resume */\n Terminal.prototype.resume = function () {\n return this._socket.resume();\n };\n /** See net.Socket.setEncoding */\n Terminal.prototype.setEncoding = function (encoding) {\n if (this._socket._decoder) {\n delete this._socket._decoder;\n }\n if (encoding) {\n this._socket.setEncoding(encoding);\n }\n };\n Terminal.prototype.addListener = function (eventName, listener) { this.on(eventName, listener); };\n Terminal.prototype.on = function (eventName, listener) {\n if (eventName === 'close') {\n this._internalee.on('close', listener);\n return;\n }\n this._socket.on(eventName, listener);\n };\n Terminal.prototype.emit = function (eventName) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n if (eventName === 'close') {\n return this._internalee.emit.apply(this._internalee, arguments);\n }\n return this._socket.emit.apply(this._socket, arguments);\n };\n Terminal.prototype.listeners = function (eventName) {\n return this._socket.listeners(eventName);\n };\n Terminal.prototype.removeListener = function (eventName, listener) {\n this._socket.removeListener(eventName, listener);\n };\n Terminal.prototype.removeAllListeners = function (eventName) {\n this._socket.removeAllListeners(eventName);\n };\n Terminal.prototype.once = function (eventName, listener) {\n this._socket.once(eventName, listener);\n };\n Terminal.prototype._close = function () {\n this._socket.readable = false;\n this.write = function () { };\n this.end = function () { };\n this._writable = false;\n this._readable = false;\n };\n Terminal.prototype._parseEnv = function (env) {\n var keys = Object.keys(env || {});\n var pairs = [];\n for (var i = 0; i < keys.length; i++) {\n if (keys[i] === undefined) {\n continue;\n }\n pairs.push(keys[i] + '=' + env[keys[i]]);\n }\n return pairs;\n };\n return Terminal;\n}());\nexports.Terminal = Terminal;\n",
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
"/**\n * Command Analysis\n *\n * Functions for analyzing shell commands for security evaluation.\n * Parses commands, resolves executables, and evaluates against allowlists.\n */\n\nimport fs from \"node:fs\";\nimport path from \"node:path\";\nimport { matchAllowlist } from \"./allowlist\";\nimport type {\n CommandResolution,\n ExecAllowlistAnalysis,\n ExecAllowlistEntry,\n ExecAllowlistEvaluation,\n ExecCommandAnalysis,\n ExecCommandSegment,\n} from \"./types\";\nimport { DEFAULT_SAFE_BINS } from \"./types\";\n\n/**\n * Disallowed tokens in pipeline commands\n */\nconst DISALLOWED_PIPELINE_TOKENS = new Set([\">\", \"<\", \"`\", \"\\n\", \"\\r\", \"(\", \")\"]);\n\n/**\n * Escape characters inside double quotes\n */\nconst DOUBLE_QUOTE_ESCAPES = new Set([\"\\\\\", '\"', \"$\", \"`\", \"\\n\", \"\\r\"]);\n\n/**\n * Windows-specific unsupported tokens\n */\nconst WINDOWS_UNSUPPORTED_TOKENS = new Set([\n \"&\",\n \"|\",\n \"<\",\n \">\",\n \"^\",\n \"(\",\n \")\",\n \"%\",\n \"!\",\n \"\\n\",\n \"\\r\",\n]);\n\n/**\n * Check if next char is a double-quote escape\n */\nfunction isDoubleQuoteEscape(next: string | undefined): next is string {\n return Boolean(next && DOUBLE_QUOTE_ESCAPES.has(next));\n}\n\n/**\n * Check if a file is executable\n */\nfunction isExecutableFile(filePath: string): boolean {\n try {\n const stat = fs.statSync(filePath);\n if (!stat.isFile()) return false;\n if (process.platform !== \"win32\") {\n fs.accessSync(filePath, fs.constants.X_OK);\n }\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * Expand home directory\n */\nfunction expandHome(value: string): string {\n if (!value) return value;\n if (value === \"~\") return require(\"node:os\").homedir();\n if (value.startsWith(\"~/\")) return path.join(require(\"node:os\").homedir(), value.slice(2));\n return value;\n}\n\n/**\n * Parse the first token from a command string\n */\nfunction parseFirstToken(command: string): string | null {\n const trimmed = command.trim();\n if (!trimmed) return null;\n\n const first = trimmed[0];\n if (first === '\"' || first === \"'\") {\n const end = trimmed.indexOf(first, 1);\n if (end > 1) return trimmed.slice(1, end);\n return trimmed.slice(1);\n }\n\n const match = /^[^\\s]+/.exec(trimmed);\n return match ? match[0] : null;\n}\n\n/**\n * Resolve executable path from PATH\n */\nfunction resolveExecutablePath(\n rawExecutable: string,\n cwd?: string,\n env?: NodeJS.ProcessEnv\n): string | undefined {\n const expanded = rawExecutable.startsWith(\"~\") ? expandHome(rawExecutable) : rawExecutable;\n\n if (expanded.includes(\"/\") || expanded.includes(\"\\\\\")) {\n if (path.isAbsolute(expanded)) {\n return isExecutableFile(expanded) ? expanded : undefined;\n }\n const base = cwd?.trim() || process.cwd();\n const candidate = path.resolve(base, expanded);\n return isExecutableFile(candidate) ? candidate : undefined;\n }\n\n const envPath = env?.PATH ?? env?.Path ?? process.env.PATH ?? process.env.Path ?? \"\";\n const entries = envPath.split(path.delimiter).filter(Boolean);\n const hasExtension = process.platform === \"win32\" && path.extname(expanded).length > 0;\n\n const extensions =\n process.platform === \"win32\"\n ? hasExtension\n ? [\"\"]\n : (\n env?.PATHEXT ??\n env?.Pathext ??\n process.env.PATHEXT ??\n process.env.Pathext ??\n \".EXE;.CMD;.BAT;.COM\"\n )\n .split(\";\")\n .map((ext) => ext.toLowerCase())\n : [\"\"];\n\n for (const entry of entries) {\n for (const ext of extensions) {\n const candidate = path.join(entry, expanded + ext);\n if (isExecutableFile(candidate)) {\n return candidate;\n }\n }\n }\n\n return undefined;\n}\n\n/**\n * Resolve command to executable info\n */\nexport function resolveCommandResolution(\n command: string,\n cwd?: string,\n env?: NodeJS.ProcessEnv\n): CommandResolution | null {\n const rawExecutable = parseFirstToken(command);\n if (!rawExecutable) return null;\n\n const resolvedPath = resolveExecutablePath(rawExecutable, cwd, env);\n const executableName = resolvedPath ? path.basename(resolvedPath) : rawExecutable;\n\n return { rawExecutable, resolvedPath, executableName };\n}\n\n/**\n * Resolve command from argv\n */\nexport function resolveCommandFromArgv(\n argv: string[],\n cwd?: string,\n env?: NodeJS.ProcessEnv\n): CommandResolution | null {\n const rawExecutable = argv[0]?.trim();\n if (!rawExecutable) return null;\n\n const resolvedPath = resolveExecutablePath(rawExecutable, cwd, env);\n const executableName = resolvedPath ? path.basename(resolvedPath) : rawExecutable;\n\n return { rawExecutable, resolvedPath, executableName };\n}\n\n/**\n * Iterator action types\n */\ntype IteratorAction = \"split\" | \"skip\" | \"include\" | { reject: string };\n\n/**\n * Iterate through command while respecting shell quoting\n */\nfunction iterateQuoteAware(\n command: string,\n onChar: (ch: string, next: string | undefined, index: number) => IteratorAction\n): { ok: true; parts: string[]; hasSplit: boolean } | { ok: false; reason: string } {\n const parts: string[] = [];\n let buf = \"\";\n let inSingle = false;\n let inDouble = false;\n let escaped = false;\n let hasSplit = false;\n\n const pushPart = () => {\n const trimmed = buf.trim();\n if (trimmed) parts.push(trimmed);\n buf = \"\";\n };\n\n for (let i = 0; i < command.length; i += 1) {\n const ch = command[i];\n const next = command[i + 1];\n\n if (escaped) {\n buf += ch;\n escaped = false;\n continue;\n }\n\n if (!inSingle && !inDouble && ch === \"\\\\\") {\n escaped = true;\n buf += ch;\n continue;\n }\n\n if (inSingle) {\n if (ch === \"'\") inSingle = false;\n buf += ch;\n continue;\n }\n\n if (inDouble) {\n if (ch === \"\\\\\" && isDoubleQuoteEscape(next)) {\n buf += ch;\n buf += next;\n i += 1;\n continue;\n }\n if (ch === \"$\" && next === \"(\") {\n return { ok: false, reason: \"unsupported shell token: $()\" };\n }\n if (ch === \"`\") {\n return { ok: false, reason: \"unsupported shell token: `\" };\n }\n if (ch === \"\\n\" || ch === \"\\r\") {\n return { ok: false, reason: \"unsupported shell token: newline\" };\n }\n if (ch === '\"') inDouble = false;\n buf += ch;\n continue;\n }\n\n if (ch === \"'\") {\n inSingle = true;\n buf += ch;\n continue;\n }\n\n if (ch === '\"') {\n inDouble = true;\n buf += ch;\n continue;\n }\n\n const action = onChar(ch, next, i);\n if (typeof action === \"object\" && \"reject\" in action) {\n return { ok: false, reason: action.reject };\n }\n if (action === \"split\") {\n pushPart();\n hasSplit = true;\n continue;\n }\n if (action === \"skip\") continue;\n buf += ch;\n }\n\n if (escaped || inSingle || inDouble) {\n return { ok: false, reason: \"unterminated shell quote/escape\" };\n }\n\n pushPart();\n return { ok: true, parts, hasSplit };\n}\n\n/**\n * Split command by pipeline operators\n */\nfunction splitShellPipeline(command: string): { ok: boolean; reason?: string; segments: string[] } {\n let emptySegment = false;\n\n const result = iterateQuoteAware(command, (ch, next) => {\n if (ch === \"|\" && next === \"|\") {\n return { reject: \"unsupported shell token: ||\" };\n }\n if (ch === \"|\" && next === \"&\") {\n return { reject: \"unsupported shell token: |&\" };\n }\n if (ch === \"|\") {\n emptySegment = true;\n return \"split\";\n }\n if (ch === \"&\" || ch === \";\") {\n return { reject: `unsupported shell token: ${ch}` };\n }\n if (DISALLOWED_PIPELINE_TOKENS.has(ch)) {\n return { reject: `unsupported shell token: ${ch}` };\n }\n if (ch === \"$\" && next === \"(\") {\n return { reject: \"unsupported shell token: $()\" };\n }\n emptySegment = false;\n return \"include\";\n });\n\n if (!result.ok) {\n return { ok: false, reason: result.reason, segments: [] };\n }\n if (emptySegment || result.parts.length === 0) {\n return {\n ok: false,\n reason: result.parts.length === 0 ? \"empty command\" : \"empty pipeline segment\",\n segments: [],\n };\n }\n\n return { ok: true, segments: result.parts };\n}\n\n/**\n * Tokenize shell segment into argv\n */\nfunction tokenizeShellSegment(segment: string): string[] | null {\n const tokens: string[] = [];\n let buf = \"\";\n let inSingle = false;\n let inDouble = false;\n let escaped = false;\n\n const pushToken = () => {\n if (buf.length > 0) {\n tokens.push(buf);\n buf = \"\";\n }\n };\n\n for (let i = 0; i < segment.length; i += 1) {\n const ch = segment[i];\n\n if (escaped) {\n buf += ch;\n escaped = false;\n continue;\n }\n\n if (!inSingle && !inDouble && ch === \"\\\\\") {\n escaped = true;\n continue;\n }\n\n if (inSingle) {\n if (ch === \"'\") inSingle = false;\n else buf += ch;\n continue;\n }\n\n if (inDouble) {\n const next = segment[i + 1];\n if (ch === \"\\\\\" && isDoubleQuoteEscape(next)) {\n buf += next;\n i += 1;\n continue;\n }\n if (ch === '\"') inDouble = false;\n else buf += ch;\n continue;\n }\n\n if (ch === \"'\") {\n inSingle = true;\n continue;\n }\n if (ch === '\"') {\n inDouble = true;\n continue;\n }\n if (/\\s/.test(ch)) {\n pushToken();\n continue;\n }\n\n buf += ch;\n }\n\n if (escaped || inSingle || inDouble) return null;\n pushToken();\n return tokens;\n}\n\n/**\n * Parse segments from parts\n */\nfunction parseSegmentsFromParts(\n parts: string[],\n cwd?: string,\n env?: NodeJS.ProcessEnv\n): ExecCommandSegment[] | null {\n const segments: ExecCommandSegment[] = [];\n\n for (const raw of parts) {\n const argv = tokenizeShellSegment(raw);\n if (!argv || argv.length === 0) return null;\n\n segments.push({\n raw,\n argv,\n resolution: resolveCommandFromArgv(argv, cwd, env),\n });\n }\n\n return segments;\n}\n\n/**\n * Check if running on Windows\n */\nfunction isWindowsPlatform(platform?: string | null): boolean {\n const normalized = String(platform ?? \"\")\n .trim()\n .toLowerCase();\n return normalized.startsWith(\"win\");\n}\n\n/**\n * Analyze a shell command\n */\nexport function analyzeShellCommand(params: {\n command: string;\n cwd?: string;\n env?: NodeJS.ProcessEnv;\n platform?: string | null;\n}): ExecCommandAnalysis {\n if (isWindowsPlatform(params.platform)) {\n return analyzeWindowsCommand(params);\n }\n\n // Try splitting by chain operators\n const chainParts = splitCommandChain(params.command);\n if (chainParts) {\n const chains: ExecCommandSegment[][] = [];\n const allSegments: ExecCommandSegment[] = [];\n\n for (const part of chainParts) {\n const pipelineSplit = splitShellPipeline(part);\n if (!pipelineSplit.ok) {\n return { ok: false, reason: pipelineSplit.reason, segments: [] };\n }\n\n const segments = parseSegmentsFromParts(pipelineSplit.segments, params.cwd, params.env);\n if (!segments) {\n return { ok: false, reason: \"unable to parse shell segment\", segments: [] };\n }\n\n chains.push(segments);\n allSegments.push(...segments);\n }\n\n return { ok: true, segments: allSegments, chains };\n }\n\n // No chain operators, parse as simple pipeline\n const split = splitShellPipeline(params.command);\n if (!split.ok) {\n return { ok: false, reason: split.reason, segments: [] };\n }\n\n const segments = parseSegmentsFromParts(split.segments, params.cwd, params.env);\n if (!segments) {\n return { ok: false, reason: \"unable to parse shell segment\", segments: [] };\n }\n\n return { ok: true, segments };\n}\n\n/**\n * Analyze Windows command\n */\nfunction analyzeWindowsCommand(params: {\n command: string;\n cwd?: string;\n env?: NodeJS.ProcessEnv;\n}): ExecCommandAnalysis {\n for (const ch of params.command) {\n if (WINDOWS_UNSUPPORTED_TOKENS.has(ch)) {\n const tokenName = ch === \"\\n\" || ch === \"\\r\" ? \"newline\" : ch;\n return {\n ok: false,\n reason: `unsupported windows shell token: ${tokenName}`,\n segments: [],\n };\n }\n }\n\n const argv = tokenizeWindowsSegment(params.command);\n if (!argv || argv.length === 0) {\n return { ok: false, reason: \"unable to parse windows command\", segments: [] };\n }\n\n return {\n ok: true,\n segments: [\n {\n raw: params.command,\n argv,\n resolution: resolveCommandFromArgv(argv, params.cwd, params.env),\n },\n ],\n };\n}\n\n/**\n * Tokenize Windows command segment\n */\nfunction tokenizeWindowsSegment(segment: string): string[] | null {\n const tokens: string[] = [];\n let buf = \"\";\n let inDouble = false;\n\n const pushToken = () => {\n if (buf.length > 0) {\n tokens.push(buf);\n buf = \"\";\n }\n };\n\n for (const ch of segment) {\n if (ch === '\"') {\n inDouble = !inDouble;\n continue;\n }\n if (!inDouble && /\\s/.test(ch)) {\n pushToken();\n continue;\n }\n buf += ch;\n }\n\n if (inDouble) return null;\n pushToken();\n return tokens.length > 0 ? tokens : null;\n}\n\n/**\n * Split command by chain operators (&&, ||, ;)\n */\nfunction splitCommandChain(command: string): string[] | null {\n const parts: string[] = [];\n let buf = \"\";\n let inSingle = false;\n let inDouble = false;\n let escaped = false;\n let foundChain = false;\n let invalidChain = false;\n\n const pushPart = () => {\n const trimmed = buf.trim();\n if (trimmed) {\n parts.push(trimmed);\n buf = \"\";\n return true;\n }\n buf = \"\";\n return false;\n };\n\n for (let i = 0; i < command.length; i += 1) {\n const ch = command[i];\n const next = command[i + 1];\n\n if (escaped) {\n buf += ch;\n escaped = false;\n continue;\n }\n\n if (!inSingle && !inDouble && ch === \"\\\\\") {\n escaped = true;\n buf += ch;\n continue;\n }\n\n if (inSingle) {\n if (ch === \"'\") inSingle = false;\n buf += ch;\n continue;\n }\n\n if (inDouble) {\n if (ch === \"\\\\\" && isDoubleQuoteEscape(next)) {\n buf += ch;\n buf += next;\n i += 1;\n continue;\n }\n if (ch === '\"') inDouble = false;\n buf += ch;\n continue;\n }\n\n if (ch === \"'\") {\n inSingle = true;\n buf += ch;\n continue;\n }\n\n if (ch === '\"') {\n inDouble = true;\n buf += ch;\n continue;\n }\n\n if (ch === \"&\" && next === \"&\") {\n if (!pushPart()) invalidChain = true;\n i += 1;\n foundChain = true;\n continue;\n }\n\n if (ch === \"|\" && next === \"|\") {\n if (!pushPart()) invalidChain = true;\n i += 1;\n foundChain = true;\n continue;\n }\n\n if (ch === \";\") {\n if (!pushPart()) invalidChain = true;\n foundChain = true;\n continue;\n }\n\n buf += ch;\n }\n\n const pushedFinal = pushPart();\n if (!foundChain) return null;\n if (invalidChain || !pushedFinal) return null;\n return parts.length > 0 ? parts : null;\n}\n\n/**\n * Normalize safe bins set\n */\nexport function normalizeSafeBins(entries?: string[]): Set<string> {\n if (!Array.isArray(entries)) return new Set();\n const normalized = entries\n .map((entry) => entry.trim().toLowerCase())\n .filter((entry) => entry.length > 0);\n return new Set(normalized);\n}\n\n/**\n * Resolve safe bins with defaults\n */\nexport function resolveSafeBins(entries?: string[] | null): Set<string> {\n if (entries === undefined) {\n return normalizeSafeBins([...DEFAULT_SAFE_BINS]);\n }\n return normalizeSafeBins(entries ?? []);\n}\n\n/**\n * Check if path-like token\n */\nfunction isPathLikeToken(value: string): boolean {\n const trimmed = value.trim();\n if (!trimmed || trimmed === \"-\") return false;\n if (trimmed.startsWith(\"./\") || trimmed.startsWith(\"../\") || trimmed.startsWith(\"~\")) return true;\n if (trimmed.startsWith(\"/\")) return true;\n return /^[A-Za-z]:[\\\\/]/.test(trimmed);\n}\n\n/**\n * Default file existence check\n */\nfunction defaultFileExists(filePath: string): boolean {\n try {\n return fs.existsSync(filePath);\n } catch {\n return false;\n }\n}\n\n/**\n * Check if command is safe bin usage (no file args)\n */\nexport function isSafeBinUsage(params: {\n argv: string[];\n resolution: CommandResolution | null;\n safeBins: Set<string>;\n cwd?: string;\n fileExists?: (filePath: string) => boolean;\n}): boolean {\n if (params.safeBins.size === 0) return false;\n\n const resolution = params.resolution;\n const execName = resolution?.executableName?.toLowerCase();\n if (!execName) return false;\n\n const matchesSafeBin =\n params.safeBins.has(execName) ||\n (process.platform === \"win32\" && params.safeBins.has(path.parse(execName).name));\n\n if (!matchesSafeBin) return false;\n if (!resolution?.resolvedPath) return false;\n\n const cwd = params.cwd ?? process.cwd();\n const exists = params.fileExists ?? defaultFileExists;\n const argv = params.argv.slice(1);\n\n for (const token of argv) {\n if (!token || token === \"-\") continue;\n\n if (token.startsWith(\"-\")) {\n const eqIndex = token.indexOf(\"=\");\n if (eqIndex > 0) {\n const value = token.slice(eqIndex + 1);\n if (value && (isPathLikeToken(value) || exists(path.resolve(cwd, value)))) {\n return false;\n }\n }\n continue;\n }\n\n if (isPathLikeToken(token)) return false;\n if (exists(path.resolve(cwd, token))) return false;\n }\n\n return true;\n}\n\n/**\n * Resolve allowlist candidate path\n */\nfunction resolveAllowlistCandidatePath(\n resolution: CommandResolution | null,\n cwd?: string\n): string | undefined {\n if (!resolution) return undefined;\n if (resolution.resolvedPath) return resolution.resolvedPath;\n\n const raw = resolution.rawExecutable?.trim();\n if (!raw) return undefined;\n\n const expanded = raw.startsWith(\"~\") ? expandHome(raw) : raw;\n if (!expanded.includes(\"/\") && !expanded.includes(\"\\\\\")) return undefined;\n\n if (path.isAbsolute(expanded)) return expanded;\n\n const base = cwd?.trim() || process.cwd();\n return path.resolve(base, expanded);\n}\n\n/**\n * Evaluate segments against allowlist\n */\nfunction evaluateSegments(\n segments: ExecCommandSegment[],\n params: {\n allowlist: ExecAllowlistEntry[];\n safeBins: Set<string>;\n cwd?: string;\n skillBins?: Set<string>;\n autoAllowSkills?: boolean;\n }\n): { satisfied: boolean; matches: ExecAllowlistEntry[] } {\n const matches: ExecAllowlistEntry[] = [];\n const allowSkills = params.autoAllowSkills === true && (params.skillBins?.size ?? 0) > 0;\n\n const satisfied = segments.every((segment) => {\n const candidatePath = resolveAllowlistCandidatePath(segment.resolution, params.cwd);\n const candidateResolution =\n candidatePath && segment.resolution\n ? { ...segment.resolution, resolvedPath: candidatePath }\n : segment.resolution;\n\n const match = matchAllowlist(params.allowlist, candidateResolution);\n if (match) matches.push(match);\n\n const safe = isSafeBinUsage({\n argv: segment.argv,\n resolution: segment.resolution,\n safeBins: params.safeBins,\n cwd: params.cwd,\n });\n\n const skillAllow =\n allowSkills && segment.resolution?.executableName\n ? params.skillBins?.has(segment.resolution.executableName)\n : false;\n\n return Boolean(match || safe || skillAllow);\n });\n\n return { satisfied, matches };\n}\n\n/**\n * Evaluate command against allowlist\n */\nexport function evaluateExecAllowlist(params: {\n analysis: ExecCommandAnalysis;\n allowlist: ExecAllowlistEntry[];\n safeBins: Set<string>;\n cwd?: string;\n skillBins?: Set<string>;\n autoAllowSkills?: boolean;\n}): ExecAllowlistEvaluation {\n const allowlistMatches: ExecAllowlistEntry[] = [];\n\n if (!params.analysis.ok || params.analysis.segments.length === 0) {\n return { allowlistSatisfied: false, allowlistMatches };\n }\n\n // If analysis contains chains, evaluate each separately\n if (params.analysis.chains) {\n for (const chainSegments of params.analysis.chains) {\n const result = evaluateSegments(chainSegments, {\n allowlist: params.allowlist,\n safeBins: params.safeBins,\n cwd: params.cwd,\n skillBins: params.skillBins,\n autoAllowSkills: params.autoAllowSkills,\n });\n\n if (!result.satisfied) {\n return { allowlistSatisfied: false, allowlistMatches: [] };\n }\n allowlistMatches.push(...result.matches);\n }\n return { allowlistSatisfied: true, allowlistMatches };\n }\n\n // No chains, evaluate all segments together\n const result = evaluateSegments(params.analysis.segments, {\n allowlist: params.allowlist,\n safeBins: params.safeBins,\n cwd: params.cwd,\n skillBins: params.skillBins,\n autoAllowSkills: params.autoAllowSkills,\n });\n\n return { allowlistSatisfied: result.satisfied, allowlistMatches: result.matches };\n}\n\n/**\n * Evaluate shell command for allowlist (combined analysis + evaluation)\n */\nexport function evaluateShellAllowlist(params: {\n command: string;\n allowlist: ExecAllowlistEntry[];\n safeBins: Set<string>;\n cwd?: string;\n env?: NodeJS.ProcessEnv;\n skillBins?: Set<string>;\n autoAllowSkills?: boolean;\n platform?: string | null;\n}): ExecAllowlistAnalysis {\n const chainParts = isWindowsPlatform(params.platform) ? null : splitCommandChain(params.command);\n\n if (!chainParts) {\n const analysis = analyzeShellCommand({\n command: params.command,\n cwd: params.cwd,\n env: params.env,\n platform: params.platform,\n });\n\n if (!analysis.ok) {\n return {\n analysisOk: false,\n allowlistSatisfied: false,\n allowlistMatches: [],\n segments: [],\n };\n }\n\n const evaluation = evaluateExecAllowlist({\n analysis,\n allowlist: params.allowlist,\n safeBins: params.safeBins,\n cwd: params.cwd,\n skillBins: params.skillBins,\n autoAllowSkills: params.autoAllowSkills,\n });\n\n return {\n analysisOk: true,\n allowlistSatisfied: evaluation.allowlistSatisfied,\n allowlistMatches: evaluation.allowlistMatches,\n segments: analysis.segments,\n };\n }\n\n const allowlistMatches: ExecAllowlistEntry[] = [];\n const segments: ExecCommandSegment[] = [];\n\n for (const part of chainParts) {\n const analysis = analyzeShellCommand({\n command: part,\n cwd: params.cwd,\n env: params.env,\n platform: params.platform,\n });\n\n if (!analysis.ok) {\n return {\n analysisOk: false,\n allowlistSatisfied: false,\n allowlistMatches: [],\n segments: [],\n };\n }\n\n segments.push(...analysis.segments);\n\n const evaluation = evaluateExecAllowlist({\n analysis,\n allowlist: params.allowlist,\n safeBins: params.safeBins,\n cwd: params.cwd,\n skillBins: params.skillBins,\n autoAllowSkills: params.autoAllowSkills,\n });\n\n allowlistMatches.push(...evaluation.allowlistMatches);\n\n if (!evaluation.allowlistSatisfied) {\n return {\n analysisOk: true,\n allowlistSatisfied: false,\n allowlistMatches,\n segments,\n };\n }\n }\n\n return {\n analysisOk: true,\n allowlistSatisfied: true,\n allowlistMatches,\n segments,\n };\n}\n\n/**\n * Check if approval is required\n */\nexport function requiresExecApproval(params: {\n ask: \"off\" | \"on-miss\" | \"always\";\n security: \"deny\" | \"allowlist\" | \"full\";\n analysisOk: boolean;\n allowlistSatisfied: boolean;\n}): boolean {\n return (\n params.ask === \"always\" ||\n (params.ask === \"on-miss\" &&\n params.security === \"allowlist\" &&\n (!params.analysisOk || !params.allowlistSatisfied))\n );\n}\n",
|
|
24
24
|
"/**\n * ExecApprovalService\n *\n * Service for managing command execution approvals in plugin-shell.\n * Integrates with Eliza's ApprovalService for approval UI,\n * and provides allowlist management and command analysis.\n *\n * @example\n * ```typescript\n * const approvalService = runtime.getService('exec_approval') as ExecApprovalService;\n *\n * // Check if command needs approval\n * const check = await approvalService.checkCommand({\n * command: 'rm -rf /tmp/cache',\n * cwd: '/home/user',\n * roomId: message.roomId,\n * });\n *\n * if (check.requiresApproval) {\n * const result = await approvalService.requestApproval(check.request);\n * if (result.decision === 'deny') {\n * return { error: 'Command denied' };\n * }\n * if (result.decision === 'allow-always') {\n * await approvalService.addToAllowlist(command);\n * }\n * }\n * ```\n */\n\nimport type { IAgentRuntime, Task, UUID } from \"@elizaos/core\";\nimport { type ApprovalService, logger, Service } from \"@elizaos/core\";\n\n// Define our own approval options to avoid import issues\nconst EXEC_APPROVAL_OPTIONS: Array<{\n name: string;\n description: string;\n isCancel?: boolean;\n}> = [\n { name: \"allow-once\", description: \"Allow this one time\" },\n { name: \"allow-always\", description: \"Always allow this\" },\n { name: \"deny\", description: \"Deny the request\", isCancel: true },\n];\n\nimport {\n addAllowlistEntry,\n loadApprovals,\n recordAllowlistUse,\n resolveApprovals,\n} from \"./allowlist\";\nimport {\n analyzeShellCommand,\n evaluateShellAllowlist,\n requiresExecApproval,\n resolveSafeBins,\n} from \"./analysis\";\nimport type {\n ExecAllowlistEntry,\n ExecApprovalDecision,\n ExecApprovalRequest,\n ExecApprovalResult,\n ExecApprovalsResolved,\n ExecAsk,\n ExecCommandAnalysis,\n ExecSecurity,\n} from \"./types\";\nimport { EXEC_APPROVAL_DEFAULTS } from \"./types\";\n\n/**\n * Command check result\n */\nexport interface CommandCheckResult {\n /** Whether the command can be executed */\n allowed: boolean;\n /** Whether approval is required */\n requiresApproval: boolean;\n /** Reason for denial (if not allowed and no approval needed) */\n reason?: string;\n /** Approval request (if approval required) */\n request?: ExecApprovalRequest;\n /** Command analysis result */\n analysis: ExecCommandAnalysis;\n /** Matching allowlist entries */\n allowlistMatches: ExecAllowlistEntry[];\n}\n\n/**\n * ExecApprovalService provides command execution approval management.\n */\nexport class ExecApprovalService extends Service {\n static serviceType = \"exec_approval\";\n capabilityDescription =\n \"Manages command execution approvals with allowlist and user confirmation\";\n\n private approvalConfig: ExecApprovalsResolved | null = null;\n private safeBins: Set<string>;\n private skillBins: Set<string>;\n\n constructor(runtime?: IAgentRuntime) {\n super(runtime);\n this.safeBins = resolveSafeBins();\n this.skillBins = new Set();\n }\n\n /**\n * Start the ExecApprovalService\n */\n static async start(runtime: IAgentRuntime): Promise<Service> {\n const service = new ExecApprovalService(runtime);\n\n // Load config - handle errors gracefully to not crash startup\n try {\n service.approvalConfig = resolveApprovals(runtime.agentId);\n } catch (error) {\n logger.error(\n { src: \"service:exec_approval\", error, agentId: runtime.agentId },\n \"Failed to load approval config during startup - using in-memory defaults. \" +\n \"Approvals may not persist. Check file permissions for ~/.eliza/exec-approvals.json\"\n );\n // Use a minimal in-memory config so the service can still function\n service.approvalConfig = {\n path: \"\",\n socketPath: \"\",\n token: \"\",\n defaults: {\n security: \"deny\",\n ask: \"on-miss\",\n askFallback: \"deny\",\n autoAllowSkills: false,\n },\n agent: {\n security: \"deny\",\n ask: \"on-miss\",\n askFallback: \"deny\",\n autoAllowSkills: false,\n },\n allowlist: [],\n file: { version: 1, agents: {} },\n };\n }\n\n logger.info(\n { src: \"service:exec_approval\", agentId: runtime.agentId },\n \"ExecApprovalService started\"\n );\n return service;\n }\n\n /**\n * Stop the ExecApprovalService\n */\n async stop(): Promise<void> {\n logger.debug({ src: \"service:exec_approval\" }, \"ExecApprovalService stopped\");\n }\n\n /**\n * Load/reload configuration\n */\n loadConfig(agentId?: string): ExecApprovalsResolved {\n this.approvalConfig = resolveApprovals(agentId ?? this.runtime?.agentId);\n return this.approvalConfig;\n }\n\n /**\n * Get current configuration\n */\n getConfig(): ExecApprovalsResolved {\n if (!this.approvalConfig) {\n this.approvalConfig = resolveApprovals(this.runtime?.agentId);\n }\n return this.approvalConfig;\n }\n\n /**\n * Set safe binaries that don't need approval\n */\n setSafeBins(bins: string[]): void {\n this.safeBins = resolveSafeBins(bins);\n }\n\n /**\n * Set skill binaries that are auto-allowed\n */\n setSkillBins(bins: string[]): void {\n this.skillBins = new Set(bins.map((b) => b.toLowerCase()));\n }\n\n /**\n * Check if a command is allowed to execute\n */\n async checkCommand(params: {\n command: string;\n cwd?: string;\n roomId: UUID;\n env?: NodeJS.ProcessEnv;\n agentId?: string;\n }): Promise<CommandCheckResult> {\n const config = this.getConfig();\n\n // Analyze the command\n const analysis = analyzeShellCommand({\n command: params.command,\n cwd: params.cwd,\n env: params.env,\n });\n\n if (!analysis.ok) {\n return {\n allowed: false,\n requiresApproval: false,\n reason: analysis.reason ?? \"Command analysis failed\",\n analysis,\n allowlistMatches: [],\n };\n }\n\n // Evaluate against allowlist\n const evaluation = evaluateShellAllowlist({\n command: params.command,\n allowlist: config.allowlist,\n safeBins: this.safeBins,\n cwd: params.cwd,\n env: params.env,\n skillBins: this.skillBins,\n autoAllowSkills: config.agent.autoAllowSkills,\n });\n\n // Check security mode\n const security = config.agent.security;\n const ask = config.agent.ask;\n\n // Full security mode - always allow\n if (security === \"full\") {\n return {\n allowed: true,\n requiresApproval: false,\n analysis,\n allowlistMatches: evaluation.allowlistMatches,\n };\n }\n\n // Deny mode - always deny unless explicitly allowed\n if (security === \"deny\") {\n return {\n allowed: false,\n requiresApproval: false,\n reason: \"Command execution is disabled\",\n analysis,\n allowlistMatches: [],\n };\n }\n\n // Allowlist mode - check if command is in allowlist\n if (evaluation.allowlistSatisfied) {\n // Record usage (best-effort, don't fail command if recording fails)\n let recordingFailed = false;\n for (const match of evaluation.allowlistMatches) {\n const approvals = loadApprovals();\n const recorded = recordAllowlistUse(\n approvals,\n params.agentId ?? this.runtime?.agentId,\n match,\n params.command,\n analysis.segments[0]?.resolution?.resolvedPath\n );\n if (!recorded) {\n recordingFailed = true;\n }\n }\n\n if (recordingFailed) {\n logger.debug(\n { src: \"service:exec_approval\", command: params.command },\n \"Some allowlist usage records failed to save - command will still proceed\"\n );\n }\n\n return {\n allowed: true,\n requiresApproval: false,\n analysis,\n allowlistMatches: evaluation.allowlistMatches,\n };\n }\n\n // Check if we need to ask for approval\n const needsApproval = requiresExecApproval({\n ask,\n security,\n analysisOk: analysis.ok,\n allowlistSatisfied: evaluation.allowlistSatisfied,\n });\n\n if (!needsApproval) {\n // No approval configured, deny based on fallback\n const fallback = config.agent.askFallback;\n if (fallback === \"deny\") {\n return {\n allowed: false,\n requiresApproval: false,\n reason: \"Command not in allowlist\",\n analysis,\n allowlistMatches: [],\n };\n }\n // Fallback is 'full' - allow\n return {\n allowed: true,\n requiresApproval: false,\n analysis,\n allowlistMatches: [],\n };\n }\n\n // Build approval request\n const requestId = crypto.randomUUID();\n const request: ExecApprovalRequest = {\n id: requestId,\n command: params.command,\n cwd: params.cwd,\n security,\n ask,\n agentId: params.agentId ?? this.runtime?.agentId,\n resolvedPath: analysis.segments[0]?.resolution?.resolvedPath,\n roomId: params.roomId,\n timeoutMs: EXEC_APPROVAL_DEFAULTS.timeoutMs,\n };\n\n return {\n allowed: false,\n requiresApproval: true,\n request,\n analysis,\n allowlistMatches: [],\n };\n }\n\n /**\n * Request approval for a command\n */\n async requestApproval(request: ExecApprovalRequest): Promise<ExecApprovalResult> {\n const approvalService = this.runtime?.getService(\"approval\") as ApprovalService | null;\n\n if (!approvalService) {\n logger.warn(\n { src: \"service:exec_approval\" },\n \"ApprovalService not available, denying by default\"\n );\n return {\n decision: \"deny\",\n timedOut: false,\n };\n }\n\n // Build description\n const descriptionLines = [\"**Exec Approval Required**\", \"\", `Command: \\`${request.command}\\``];\n\n if (request.cwd) {\n descriptionLines.push(`CWD: \\`${request.cwd}\\``);\n }\n if (request.resolvedPath) {\n descriptionLines.push(`Executable: \\`${request.resolvedPath}\\``);\n }\n\n const description = descriptionLines.join(\"\\n\");\n\n // Request approval via Eliza's task system\n const result = await approvalService.requestApproval({\n name: \"EXEC_APPROVAL\",\n description,\n roomId: request.roomId,\n options: EXEC_APPROVAL_OPTIONS,\n timeoutMs: request.timeoutMs ?? EXEC_APPROVAL_DEFAULTS.timeoutMs,\n timeoutDefault: \"deny\",\n tags: [\"EXEC\", request.id],\n metadata: {\n execRequest: {\n id: request.id,\n command: request.command,\n cwd: request.cwd,\n security: request.security,\n ask: request.ask,\n agentId: request.agentId,\n resolvedPath: request.resolvedPath,\n },\n },\n });\n\n const decision = mapOptionToDecision(result.selectedOption);\n\n // If allow-always, add to allowlist\n if (decision === \"allow-always\" && request.resolvedPath) {\n await this.addToAllowlist(request.resolvedPath, request.agentId);\n }\n\n return {\n decision,\n timedOut: result.timedOut,\n resolvedBy: result.resolvedBy,\n };\n }\n\n /**\n * Request approval asynchronously (fire and forget with callbacks)\n */\n async requestApprovalAsync(\n request: ExecApprovalRequest,\n callbacks?: {\n onApproved?: (decision: ExecApprovalDecision) => Promise<void>;\n onDenied?: () => Promise<void>;\n onTimeout?: () => Promise<void>;\n }\n ): Promise<UUID> {\n const approvalService = this.runtime?.getService(\"approval\") as ApprovalService | null;\n\n if (!approvalService) {\n logger.warn({ src: \"service:exec_approval\" }, \"ApprovalService not available\");\n if (callbacks?.onDenied) {\n await callbacks.onDenied();\n }\n throw new Error(\"ApprovalService not available\");\n }\n\n const descriptionLines = [\"**Exec Approval Required**\", \"\", `Command: \\`${request.command}\\``];\n\n if (request.cwd) {\n descriptionLines.push(`CWD: \\`${request.cwd}\\``);\n }\n\n const taskId = await approvalService.requestApprovalAsync({\n name: \"EXEC_APPROVAL\",\n description: descriptionLines.join(\"\\n\"),\n roomId: request.roomId,\n options: EXEC_APPROVAL_OPTIONS,\n timeoutMs: request.timeoutMs ?? EXEC_APPROVAL_DEFAULTS.timeoutMs,\n timeoutDefault: \"deny\",\n tags: [\"EXEC\", request.id],\n metadata: {\n execRequest: {\n id: request.id,\n command: request.command,\n cwd: request.cwd,\n security: request.security,\n ask: request.ask,\n agentId: request.agentId,\n resolvedPath: request.resolvedPath,\n },\n },\n onSelect: async (option: string, _task: Task, _rt: IAgentRuntime) => {\n const decision = mapOptionToDecision(option);\n\n // If allow-always, add to allowlist\n if (decision === \"allow-always\" && request.resolvedPath) {\n await this.addToAllowlist(request.resolvedPath, request.agentId);\n }\n\n if (decision === \"allow-once\" || decision === \"allow-always\") {\n if (callbacks?.onApproved) {\n await callbacks.onApproved(decision);\n }\n } else {\n if (callbacks?.onDenied) {\n await callbacks.onDenied();\n }\n }\n },\n onTimeout: async (_task: Task, _rt: IAgentRuntime) => {\n if (callbacks?.onTimeout) {\n await callbacks.onTimeout();\n } else if (callbacks?.onDenied) {\n await callbacks.onDenied();\n }\n },\n });\n\n return taskId;\n }\n\n /**\n * Add a pattern to the allowlist\n * @returns true if pattern was added successfully\n */\n async addToAllowlist(pattern: string, agentId?: string): Promise<boolean> {\n const approvals = loadApprovals();\n const added = addAllowlistEntry(approvals, agentId ?? this.runtime?.agentId, pattern);\n if (added) {\n // Reload config to pick up the new entry\n this.approvalConfig = null;\n }\n return added;\n }\n\n /**\n * Cancel a pending approval\n */\n async cancelApproval(taskId: UUID): Promise<void> {\n const approvalService = this.runtime?.getService(\"approval\") as ApprovalService | null;\n\n if (approvalService) {\n await approvalService.cancelApproval(taskId);\n }\n }\n\n /**\n * Get all pending exec approvals for a room\n */\n async getPendingApprovals(roomId: UUID): Promise<ExecApprovalRequest[]> {\n if (!this.runtime) {\n logger.warn(\n { src: \"service:exec_approval\" },\n \"Cannot get pending approvals - runtime not available\"\n );\n return [];\n }\n\n try {\n const tasks = await this.runtime.getTasks({\n roomId,\n tags: [\"AWAITING_CHOICE\", \"EXEC\"],\n });\n\n if (!tasks) return [];\n\n return tasks\n .filter((t) => t.metadata?.execRequest)\n .map((t) => {\n const execRequest = t.metadata?.execRequest as Record<string, unknown>;\n return {\n id: execRequest.id as string,\n command: execRequest.command as string,\n cwd: execRequest.cwd as string | undefined,\n security: execRequest.security as ExecSecurity | undefined,\n ask: execRequest.ask as ExecAsk | undefined,\n agentId: execRequest.agentId as string | undefined,\n resolvedPath: execRequest.resolvedPath as string | undefined,\n roomId,\n };\n });\n } catch (error) {\n logger.error(\n { src: \"service:exec_approval\", error, roomId },\n \"Failed to get pending approvals\"\n );\n return [];\n }\n }\n}\n\n/**\n * Map approval option to exec decision\n */\nfunction mapOptionToDecision(option: string): ExecApprovalDecision {\n switch (option) {\n case \"allow-once\":\n return \"allow-once\";\n case \"allow-always\":\n return \"allow-always\";\n default:\n return \"deny\";\n }\n}\n\nexport default ExecApprovalService;\n",
|
|
25
25
|
"import {\n addHeader,\n type IAgentRuntime,\n logger,\n type Memory,\n type Provider,\n type State,\n} from \"@elizaos/core\";\nimport { requireProviderSpec } from \"../generated/specs/spec-helpers\";\nimport type { ShellService } from \"../services/shellService\";\nimport type { CommandHistoryEntry, FileOperation } from \"../types\";\n\nconst MAX_OUTPUT_LENGTH = 8000;\nconst TRUNCATE_SEGMENT_LENGTH = 4000;\n\nconst spec = requireProviderSpec(\"SHELL_HISTORY\");\n\nexport const shellHistoryProvider: Provider = {\n name: spec.name,\n description:\n \"Provides recent shell command history, current working directory, and file operations within the restricted environment\",\n position: 99,\n get: async (runtime: IAgentRuntime, message: Memory, _state: State) => {\n const shellService = runtime.getService<ShellService>(\"shell\");\n\n if (!shellService) {\n logger.warn(\"[shellHistoryProvider] Shell service not found\");\n return {\n values: {\n shellHistory: \"Shell service is not available\",\n currentWorkingDirectory: \"N/A\",\n allowedDirectory: \"N/A\",\n },\n text: addHeader(\"# Shell Status\", \"Shell service is not available\"),\n data: { historyCount: 0, cwd: \"N/A\", allowedDir: \"N/A\" },\n };\n }\n\n const conversationId = message.roomId || message.agentId;\n if (!conversationId) {\n return {\n text: \"No conversation ID available\",\n values: { historyCount: 0, cwd: \"N/A\", allowedDir: \"N/A\" },\n data: { historyCount: 0, cwd: \"N/A\", allowedDir: \"N/A\" },\n };\n }\n const history = shellService.getCommandHistory(conversationId, 10);\n const cwd = shellService.getCurrentDirectory(conversationId);\n const allowedDir = shellService.getAllowedDirectory();\n\n let historyText = \"No commands in history.\";\n if (history.length > 0) {\n historyText = history\n .map((entry: CommandHistoryEntry) => {\n let entryStr = `[${new Date(entry.timestamp).toISOString()}] ${entry.workingDirectory}> ${entry.command}`;\n\n if (entry.stdout) {\n if (entry.stdout.length > MAX_OUTPUT_LENGTH) {\n entryStr += `\\n Output: ${entry.stdout.substring(0, TRUNCATE_SEGMENT_LENGTH)}\\n ... [TRUNCATED] ...\\n ${entry.stdout.substring(entry.stdout.length - TRUNCATE_SEGMENT_LENGTH)}`;\n } else {\n entryStr += `\\n Output: ${entry.stdout}`;\n }\n }\n\n if (entry.stderr) {\n if (entry.stderr.length > MAX_OUTPUT_LENGTH) {\n entryStr += `\\n Error: ${entry.stderr.substring(0, TRUNCATE_SEGMENT_LENGTH)}\\n ... [TRUNCATED] ...\\n ${entry.stderr.substring(entry.stderr.length - TRUNCATE_SEGMENT_LENGTH)}`;\n } else {\n entryStr += `\\n Error: ${entry.stderr}`;\n }\n }\n\n entryStr += `\\n Exit Code: ${entry.exitCode}`;\n\n if (entry.fileOperations && entry.fileOperations.length > 0) {\n entryStr += \"\\n File Operations:\";\n entry.fileOperations.forEach((op: FileOperation) => {\n if (op.secondaryTarget) {\n entryStr += `\\n - ${op.type}: ${op.target} → ${op.secondaryTarget}`;\n } else {\n entryStr += `\\n - ${op.type}: ${op.target}`;\n }\n });\n }\n\n return entryStr;\n })\n .join(\"\\n\\n\");\n }\n\n const recentFileOps = history\n .filter(\n (entry: CommandHistoryEntry) => entry.fileOperations && entry.fileOperations.length > 0\n )\n .flatMap((entry: CommandHistoryEntry) => entry.fileOperations ?? [])\n .slice(-5);\n\n let fileOpsText = \"\";\n if (recentFileOps.length > 0) {\n fileOpsText =\n \"\\n\\n\" +\n addHeader(\n \"# Recent File Operations\",\n recentFileOps\n .map((op: FileOperation) => {\n if (op.secondaryTarget) {\n return `- ${op.type}: ${op.target} → ${op.secondaryTarget}`;\n }\n return `- ${op.type}: ${op.target}`;\n })\n .join(\"\\n\")\n );\n }\n\n const text = `Current Directory: ${cwd}\nAllowed Directory: ${allowedDir}\n\n${addHeader(\"# Shell History (Last 10)\", historyText)}${fileOpsText}`;\n\n return {\n values: {\n shellHistory: historyText,\n currentWorkingDirectory: cwd,\n allowedDirectory: allowedDir,\n },\n text,\n data: {\n historyCount: history.length,\n cwd,\n allowedDir,\n },\n };\n },\n};\n\nexport default shellHistoryProvider;\n",
|
|
26
|
-
"/**\n * Enhanced Shell Service with PTY, background execution, and session management\n * Migrated from otto bash-tools.exec.ts, bash-tools.process.ts\n */\n\nimport type { ChildProcessWithoutNullStreams } from \"node:child_process\";\nimport path from \"node:path\";\nimport { type IAgentRuntime, logger, Service } from \"@elizaos/core\";\nimport spawn from \"cross-spawn\";\nimport type {\n CommandHistoryEntry,\n CommandResult,\n ExecResult,\n ExecuteOptions,\n FileOperation,\n FileOperationType,\n FinishedSession,\n ProcessActionParams,\n ProcessSession,\n PtyHandle,\n PtySpawn,\n ShellConfig,\n} from \"../types\";\nimport { isForbiddenCommand, isSafeCommand, loadShellConfig, validatePath } from \"../utils\";\nimport {\n buildCursorPositionResponse,\n encodeKeySequence,\n encodePaste,\n stripDsrRequests,\n} from \"../utils/ptyKeys\";\nimport {\n chunkString,\n clampNumber,\n coerceEnv,\n deriveSessionName,\n formatDuration,\n getShellConfig,\n killSession,\n pad,\n readEnvInt,\n resolveWorkdir,\n sanitizeBinaryOutput,\n sliceLogLines,\n truncateMiddle,\n} from \"../utils/shellUtils\";\nimport {\n addSession,\n appendOutput,\n createSessionSlug,\n deleteSession,\n drainSession,\n getFinishedSession,\n getSession,\n listFinishedSessions,\n listRunningSessions,\n markBackgrounded,\n markExited,\n} from \"./processRegistry\";\n\nconst DEFAULT_MAX_OUTPUT = clampNumber(\n readEnvInt(\"SHELL_MAX_OUTPUT_CHARS\"),\n 200_000,\n 1_000,\n 200_000\n);\nconst DEFAULT_PENDING_MAX_OUTPUT = clampNumber(\n readEnvInt(\"SHELL_PENDING_MAX_OUTPUT_CHARS\"),\n 200_000,\n 1_000,\n 200_000\n);\nconst DEFAULT_BACKGROUND_MS = clampNumber(readEnvInt(\"SHELL_BACKGROUND_MS\"), 10_000, 10, 120_000);\nconst DEFAULT_TIMEOUT_SEC = 1800; // 30 minutes\n\nexport class ShellService extends Service {\n public static serviceType = \"shell\";\n private shellConfig: ShellConfig;\n private currentDirectory: string;\n private commandHistory: Map<string, CommandHistoryEntry[]>;\n private maxHistoryPerConversation = 100;\n private scopeKey?: string;\n\n constructor(runtime: IAgentRuntime) {\n super(runtime);\n this.shellConfig = loadShellConfig();\n this.currentDirectory = this.shellConfig.allowedDirectory;\n this.commandHistory = new Map();\n }\n\n static async start(runtime: IAgentRuntime): Promise<ShellService> {\n const instance = new ShellService(runtime);\n logger.info(\"Shell service initialized with PTY, background execution, and history tracking\");\n return instance;\n }\n\n async stop(): Promise<void> {\n // Clean up all running sessions by killing their processes\n const runningSessions = listRunningSessions();\n for (const session of runningSessions) {\n try {\n killSession(session);\n logger.debug(`Killed shell session: ${session.id}`);\n } catch (err) {\n logger.warn(`Failed to kill shell session ${session.id}: ${err}`);\n }\n }\n\n // Clear command history\n this.commandHistory.clear();\n\n logger.info(`Shell service stopped, cleaned up ${runningSessions.length} running sessions`);\n }\n\n get capabilityDescription(): string {\n return \"Execute shell commands with PTY support, background execution, and session management\";\n }\n\n /**\n * Set scope key for session isolation\n */\n setScopeKey(scopeKey: string): void {\n this.scopeKey = scopeKey;\n }\n\n /**\n * Simple command execution (original API for backward compatibility)\n */\n async executeCommand(command: string, conversationId?: string): Promise<CommandResult> {\n if (!command || typeof command !== \"string\") {\n return {\n success: false,\n stdout: \"\",\n stderr: \"Invalid command\",\n exitCode: 1,\n error: \"Command must be a non-empty string\",\n executedIn: this.currentDirectory,\n };\n }\n\n const trimmedCommand = command.trim();\n\n if (!isSafeCommand(trimmedCommand)) {\n return {\n success: false,\n stdout: \"\",\n stderr: \"Command contains forbidden patterns\",\n exitCode: 1,\n error: \"Security policy violation\",\n executedIn: this.currentDirectory,\n };\n }\n\n if (isForbiddenCommand(trimmedCommand, this.shellConfig.forbiddenCommands)) {\n return {\n success: false,\n stdout: \"\",\n stderr: \"Command is forbidden by security policy\",\n exitCode: 1,\n error: \"Forbidden command\",\n executedIn: this.currentDirectory,\n };\n }\n\n if (trimmedCommand.startsWith(\"cd \")) {\n const result = await this.handleCdCommand(trimmedCommand);\n this.addToHistory(conversationId, trimmedCommand, result);\n return result;\n }\n\n const result = await this.runCommandSimple(trimmedCommand);\n\n if (result.success) {\n const fileOps = this.detectFileOperations(trimmedCommand, this.currentDirectory);\n if (fileOps && conversationId) {\n this.addToHistory(conversationId, trimmedCommand, result, fileOps);\n } else {\n this.addToHistory(conversationId, trimmedCommand, result);\n }\n } else {\n this.addToHistory(conversationId, trimmedCommand, result);\n }\n\n return result;\n }\n\n /**\n * Enhanced command execution with PTY, background support, and session management\n * This is the main execution method that supports all advanced features\n */\n async exec(command: string, options: ExecuteOptions = {}): Promise<ExecResult> {\n if (!command || typeof command !== \"string\") {\n return {\n status: \"failed\",\n exitCode: 1,\n durationMs: 0,\n aggregated: \"Invalid command\",\n reason: \"Command must be a non-empty string\",\n };\n }\n\n const trimmedCommand = command.trim();\n\n if (!isSafeCommand(trimmedCommand)) {\n return {\n status: \"failed\",\n exitCode: 1,\n durationMs: 0,\n aggregated: \"Command contains forbidden patterns\",\n reason: \"Security policy violation\",\n };\n }\n\n if (isForbiddenCommand(trimmedCommand, this.shellConfig.forbiddenCommands)) {\n return {\n status: \"failed\",\n exitCode: 1,\n durationMs: 0,\n aggregated: \"Command is forbidden by security policy\",\n reason: \"Forbidden command\",\n };\n }\n\n const warnings: string[] = [];\n const maxOutput = this.shellConfig.maxOutputChars ?? DEFAULT_MAX_OUTPUT;\n const pendingMaxOutput = this.shellConfig.pendingMaxOutputChars ?? DEFAULT_PENDING_MAX_OUTPUT;\n const defaultBackgroundMs = this.shellConfig.defaultBackgroundMs ?? DEFAULT_BACKGROUND_MS;\n const allowBackground = this.shellConfig.allowBackground ?? true;\n\n // Resolve background/yield settings\n const backgroundRequested = options.background === true;\n const yieldRequested = typeof options.yieldMs === \"number\";\n if (!allowBackground && (backgroundRequested || yieldRequested)) {\n warnings.push(\"Warning: background execution is disabled; running synchronously.\");\n }\n const yieldWindow = allowBackground\n ? backgroundRequested\n ? 0\n : clampNumber(options.yieldMs ?? defaultBackgroundMs, defaultBackgroundMs, 10, 120_000)\n : null;\n\n // Resolve workdir\n const rawWorkdir = options.workdir?.trim() || this.currentDirectory || process.cwd();\n const workdir = resolveWorkdir(rawWorkdir, warnings);\n\n // Build environment\n const baseEnv = coerceEnv(process.env);\n const mergedEnv = options.env ? { ...baseEnv, ...options.env } : baseEnv;\n\n const timeoutSec =\n typeof options.timeout === \"number\" && options.timeout > 0\n ? options.timeout\n : DEFAULT_TIMEOUT_SEC;\n const usePty = options.pty === true;\n const notifyOnExit = options.notifyOnExit !== false;\n\n // Run the process\n const handle = await this.runExecProcess({\n command: trimmedCommand,\n workdir,\n env: mergedEnv,\n usePty,\n warnings,\n maxOutput,\n pendingMaxOutput,\n notifyOnExit,\n scopeKey: options.scopeKey ?? this.scopeKey,\n sessionKey: options.sessionKey,\n timeoutSec,\n onUpdate: options.onUpdate,\n });\n\n // Handle background/yield\n if (allowBackground && yieldWindow !== null) {\n if (yieldWindow === 0) {\n markBackgrounded(handle.session);\n return {\n status: \"running\",\n sessionId: handle.session.id,\n pid: handle.session.pid,\n startedAt: handle.startedAt,\n cwd: handle.session.cwd,\n tail: handle.session.tail,\n };\n }\n\n // Wait for yieldWindow or completion\n const raceResult = await Promise.race([\n handle.promise,\n new Promise<\"yield\">((resolve) => setTimeout(() => resolve(\"yield\"), yieldWindow)),\n ]);\n\n if (raceResult === \"yield\" && !handle.session.exited) {\n markBackgrounded(handle.session);\n const warningText = warnings.length ? `${warnings.join(\"\\n\")}\\n\\n` : \"\";\n return {\n status: \"running\",\n sessionId: handle.session.id,\n pid: handle.session.pid,\n startedAt: handle.startedAt,\n cwd: handle.session.cwd,\n tail: `${warningText}Command still running (session ${handle.session.id}, pid ${handle.session.pid ?? \"n/a\"}).`,\n };\n }\n\n // Process completed within yield window\n const outcome = raceResult === \"yield\" ? await handle.promise : raceResult;\n const warningText = warnings.length ? `${warnings.join(\"\\n\")}\\n\\n` : \"\";\n\n if (outcome.status === \"failed\") {\n return {\n status: \"failed\",\n exitCode: outcome.exitCode ?? null,\n durationMs: outcome.durationMs,\n aggregated: outcome.aggregated,\n cwd: workdir,\n timedOut: outcome.timedOut,\n reason: `${warningText}${outcome.reason ?? \"Command failed.\"}`,\n };\n }\n\n return {\n status: \"completed\",\n exitCode: outcome.exitCode ?? 0,\n durationMs: outcome.durationMs,\n aggregated: `${warningText}${outcome.aggregated || \"(no output)\"}`,\n cwd: workdir,\n };\n }\n\n // Synchronous execution (no yield/background)\n const outcome = await handle.promise;\n const warningText = warnings.length ? `${warnings.join(\"\\n\")}\\n\\n` : \"\";\n\n if (outcome.status === \"failed\") {\n return {\n status: \"failed\",\n exitCode: outcome.exitCode ?? null,\n durationMs: outcome.durationMs,\n aggregated: outcome.aggregated,\n cwd: workdir,\n timedOut: outcome.timedOut,\n reason: `${warningText}${outcome.reason ?? \"Command failed.\"}`,\n };\n }\n\n return {\n status: \"completed\",\n exitCode: outcome.exitCode ?? 0,\n durationMs: outcome.durationMs,\n aggregated: `${warningText}${outcome.aggregated || \"(no output)\"}`,\n cwd: workdir,\n };\n }\n\n /**\n * Process management action handler\n * Supports: list, poll, log, write, send-keys, submit, paste, kill, clear, remove\n */\n async processAction(params: ProcessActionParams): Promise<{\n success: boolean;\n message: string;\n data?: Record<string, unknown>;\n }> {\n const scopeKey = this.scopeKey;\n const isInScope = (session?: { scopeKey?: string } | null) =>\n !scopeKey || session?.scopeKey === scopeKey;\n\n if (params.action === \"list\") {\n const running = listRunningSessions()\n .filter((s) => isInScope(s))\n .map((s) => ({\n sessionId: s.id,\n status: \"running\",\n pid: s.pid ?? undefined,\n startedAt: s.startedAt,\n runtimeMs: Date.now() - s.startedAt,\n cwd: s.cwd,\n command: s.command,\n name: deriveSessionName(s.command),\n tail: s.tail,\n truncated: s.truncated,\n }));\n const finished = listFinishedSessions()\n .filter((s) => isInScope(s))\n .map((s) => ({\n sessionId: s.id,\n status: s.status,\n startedAt: s.startedAt,\n endedAt: s.endedAt,\n runtimeMs: s.endedAt - s.startedAt,\n cwd: s.cwd,\n command: s.command,\n name: deriveSessionName(s.command),\n tail: s.tail,\n truncated: s.truncated,\n exitCode: s.exitCode ?? undefined,\n exitSignal: s.exitSignal ?? undefined,\n }));\n const sessions = [...running, ...finished]\n .slice()\n .sort(\n (\n a: (typeof running)[number] | (typeof finished)[number],\n b: (typeof running)[number] | (typeof finished)[number]\n ) => b.startedAt - a.startedAt\n );\n const lines = sessions.map((s: (typeof sessions)[number]) => {\n const label = s.name ? truncateMiddle(s.name, 80) : truncateMiddle(s.command, 120);\n return `${s.sessionId} ${pad(s.status, 9)} ${formatDuration(s.runtimeMs)} :: ${label}`;\n });\n return {\n success: true,\n message: lines.join(\"\\n\") || \"No running or recent sessions.\",\n data: { sessions },\n };\n }\n\n if (!params.sessionId) {\n return {\n success: false,\n message: \"sessionId is required for this action.\",\n };\n }\n\n const session = getSession(params.sessionId);\n const finished = getFinishedSession(params.sessionId);\n const scopedSession = isInScope(session) ? session : undefined;\n const scopedFinished = isInScope(finished) ? finished : undefined;\n\n switch (params.action) {\n case \"poll\": {\n if (!scopedSession) {\n if (scopedFinished) {\n return {\n success: true,\n message:\n (scopedFinished.tail ||\n `(no output recorded${scopedFinished.truncated ? \" — truncated to cap\" : \"\"})`) +\n `\\n\\nProcess exited with ${\n scopedFinished.exitSignal\n ? `signal ${scopedFinished.exitSignal}`\n : `code ${scopedFinished.exitCode ?? 0}`\n }.`,\n data: {\n status: scopedFinished.status === \"completed\" ? \"completed\" : \"failed\",\n sessionId: params.sessionId,\n exitCode: scopedFinished.exitCode ?? undefined,\n aggregated: scopedFinished.aggregated,\n name: deriveSessionName(scopedFinished.command),\n },\n };\n }\n return {\n success: false,\n message: `No session found for ${params.sessionId}`,\n };\n }\n if (!scopedSession.backgrounded) {\n return {\n success: false,\n message: `Session ${params.sessionId} is not backgrounded.`,\n };\n }\n const { stdout, stderr } = drainSession(scopedSession);\n const exited = scopedSession.exited;\n const exitCode = scopedSession.exitCode ?? 0;\n const exitSignal = scopedSession.exitSignal ?? undefined;\n if (exited) {\n const status = exitCode === 0 && exitSignal == null ? \"completed\" : \"failed\";\n markExited(\n scopedSession,\n scopedSession.exitCode ?? null,\n scopedSession.exitSignal ?? null,\n status\n );\n }\n const status = exited\n ? exitCode === 0 && exitSignal == null\n ? \"completed\"\n : \"failed\"\n : \"running\";\n const output = [stdout.trimEnd(), stderr.trimEnd()].filter(Boolean).join(\"\\n\").trim();\n return {\n success: true,\n message:\n (output || \"(no new output)\") +\n (exited\n ? `\\n\\nProcess exited with ${\n exitSignal ? `signal ${exitSignal}` : `code ${exitCode}`\n }.`\n : \"\\n\\nProcess still running.\"),\n data: {\n status,\n sessionId: params.sessionId,\n exitCode: exited ? exitCode : undefined,\n aggregated: scopedSession.aggregated,\n name: deriveSessionName(scopedSession.command),\n },\n };\n }\n\n case \"log\": {\n if (scopedSession) {\n if (!scopedSession.backgrounded) {\n return {\n success: false,\n message: `Session ${params.sessionId} is not backgrounded.`,\n };\n }\n const { slice, totalLines, totalChars } = sliceLogLines(\n scopedSession.aggregated,\n params.offset,\n params.limit\n );\n return {\n success: true,\n message: slice || \"(no output yet)\",\n data: {\n status: scopedSession.exited ? \"completed\" : \"running\",\n sessionId: params.sessionId,\n totalLines,\n totalChars,\n truncated: scopedSession.truncated,\n name: deriveSessionName(scopedSession.command),\n },\n };\n }\n if (scopedFinished) {\n const { slice, totalLines, totalChars } = sliceLogLines(\n scopedFinished.aggregated,\n params.offset,\n params.limit\n );\n const status = scopedFinished.status === \"completed\" ? \"completed\" : \"failed\";\n return {\n success: true,\n message: slice || \"(no output recorded)\",\n data: {\n status,\n sessionId: params.sessionId,\n totalLines,\n totalChars,\n truncated: scopedFinished.truncated,\n exitCode: scopedFinished.exitCode ?? undefined,\n exitSignal: scopedFinished.exitSignal ?? undefined,\n name: deriveSessionName(scopedFinished.command),\n },\n };\n }\n return {\n success: false,\n message: `No session found for ${params.sessionId}`,\n };\n }\n\n case \"write\": {\n if (!scopedSession) {\n return {\n success: false,\n message: `No active session found for ${params.sessionId}`,\n };\n }\n if (!scopedSession.backgrounded) {\n return {\n success: false,\n message: `Session ${params.sessionId} is not backgrounded.`,\n };\n }\n const stdin = scopedSession.stdin ?? scopedSession.child?.stdin;\n if (!stdin || stdin.destroyed) {\n return {\n success: false,\n message: `Session ${params.sessionId} stdin is not writable.`,\n };\n }\n await new Promise<void>((resolve, reject) => {\n stdin.write(params.data ?? \"\", (err) => {\n if (err) reject(err);\n else resolve();\n });\n });\n if (params.eof) {\n stdin.end();\n }\n return {\n success: true,\n message: `Wrote ${(params.data ?? \"\").length} bytes to session ${params.sessionId}${\n params.eof ? \" (stdin closed)\" : \"\"\n }.`,\n data: {\n sessionId: params.sessionId,\n name: deriveSessionName(scopedSession.command),\n },\n };\n }\n\n case \"send-keys\": {\n if (!scopedSession) {\n return {\n success: false,\n message: `No active session found for ${params.sessionId}`,\n };\n }\n if (!scopedSession.backgrounded) {\n return {\n success: false,\n message: `Session ${params.sessionId} is not backgrounded.`,\n };\n }\n const stdin = scopedSession.stdin ?? scopedSession.child?.stdin;\n if (!stdin || stdin.destroyed) {\n return {\n success: false,\n message: `Session ${params.sessionId} stdin is not writable.`,\n };\n }\n const { data, warnings } = encodeKeySequence({\n keys: params.keys,\n hex: params.hex,\n literal: params.literal,\n });\n if (!data) {\n return { success: false, message: \"No key data provided.\" };\n }\n await new Promise<void>((resolve, reject) => {\n stdin.write(data, (err) => {\n if (err) reject(err);\n else resolve();\n });\n });\n return {\n success: true,\n message:\n `Sent ${data.length} bytes to session ${params.sessionId}.` +\n (warnings.length ? `\\nWarnings:\\n- ${warnings.join(\"\\n- \")}` : \"\"),\n data: {\n sessionId: params.sessionId,\n name: deriveSessionName(scopedSession.command),\n },\n };\n }\n\n case \"submit\": {\n if (!scopedSession) {\n return {\n success: false,\n message: `No active session found for ${params.sessionId}`,\n };\n }\n if (!scopedSession.backgrounded) {\n return {\n success: false,\n message: `Session ${params.sessionId} is not backgrounded.`,\n };\n }\n const stdin = scopedSession.stdin ?? scopedSession.child?.stdin;\n if (!stdin || stdin.destroyed) {\n return {\n success: false,\n message: `Session ${params.sessionId} stdin is not writable.`,\n };\n }\n await new Promise<void>((resolve, reject) => {\n stdin.write(\"\\r\", (err) => {\n if (err) reject(err);\n else resolve();\n });\n });\n return {\n success: true,\n message: `Submitted session ${params.sessionId} (sent CR).`,\n data: {\n sessionId: params.sessionId,\n name: deriveSessionName(scopedSession.command),\n },\n };\n }\n\n case \"paste\": {\n if (!scopedSession) {\n return {\n success: false,\n message: `No active session found for ${params.sessionId}`,\n };\n }\n if (!scopedSession.backgrounded) {\n return {\n success: false,\n message: `Session ${params.sessionId} is not backgrounded.`,\n };\n }\n const stdin = scopedSession.stdin ?? scopedSession.child?.stdin;\n if (!stdin || stdin.destroyed) {\n return {\n success: false,\n message: `Session ${params.sessionId} stdin is not writable.`,\n };\n }\n const payload = encodePaste(params.text ?? \"\", params.bracketed !== false);\n if (!payload) {\n return { success: false, message: \"No paste text provided.\" };\n }\n await new Promise<void>((resolve, reject) => {\n stdin.write(payload, (err) => {\n if (err) reject(err);\n else resolve();\n });\n });\n return {\n success: true,\n message: `Pasted ${params.text?.length ?? 0} chars to session ${params.sessionId}.`,\n data: {\n sessionId: params.sessionId,\n name: deriveSessionName(scopedSession.command),\n },\n };\n }\n\n case \"kill\": {\n if (!scopedSession) {\n return {\n success: false,\n message: `No active session found for ${params.sessionId}`,\n };\n }\n if (!scopedSession.backgrounded) {\n return {\n success: false,\n message: `Session ${params.sessionId} is not backgrounded.`,\n };\n }\n killSession(scopedSession);\n markExited(scopedSession, null, \"SIGKILL\", \"failed\");\n return {\n success: true,\n message: `Killed session ${params.sessionId}.`,\n data: { name: deriveSessionName(scopedSession.command) },\n };\n }\n\n case \"clear\": {\n if (scopedFinished) {\n deleteSession(params.sessionId);\n return {\n success: true,\n message: `Cleared session ${params.sessionId}.`,\n };\n }\n return {\n success: false,\n message: `No finished session found for ${params.sessionId}`,\n };\n }\n\n case \"remove\": {\n if (scopedSession) {\n killSession(scopedSession);\n markExited(scopedSession, null, \"SIGKILL\", \"failed\");\n return {\n success: true,\n message: `Removed session ${params.sessionId}.`,\n data: { name: deriveSessionName(scopedSession.command) },\n };\n }\n if (scopedFinished) {\n deleteSession(params.sessionId);\n return {\n success: true,\n message: `Removed session ${params.sessionId}.`,\n };\n }\n return {\n success: false,\n message: `No session found for ${params.sessionId}`,\n };\n }\n }\n\n return {\n success: false,\n message: `Unknown action ${params.action as string}`,\n };\n }\n\n // ===== Public Service Methods for External Use =====\n\n /**\n * List all running sessions\n */\n listRunningSessions(): ProcessSession[] {\n const scopeKey = this.scopeKey;\n return listRunningSessions().filter((s) => !scopeKey || s.scopeKey === scopeKey);\n }\n\n /**\n * List all finished sessions\n */\n listFinishedSessions(): FinishedSession[] {\n const scopeKey = this.scopeKey;\n return listFinishedSessions().filter((s) => !scopeKey || s.scopeKey === scopeKey);\n }\n\n /**\n * Get a specific session by ID\n */\n getSession(id: string): ProcessSession | undefined {\n const session = getSession(id);\n if (!session) return undefined;\n if (this.scopeKey && session.scopeKey !== this.scopeKey) return undefined;\n return session;\n }\n\n /**\n * Get a specific finished session by ID\n */\n getFinishedSession(id: string): FinishedSession | undefined {\n const session = getFinishedSession(id);\n if (!session) return undefined;\n if (this.scopeKey && session.scopeKey !== this.scopeKey) return undefined;\n return session;\n }\n\n /**\n * Kill a session by ID\n */\n killSessionById(id: string): boolean {\n const session = this.getSession(id);\n if (!session) return false;\n killSession(session);\n markExited(session, null, \"SIGKILL\", \"killed\");\n return true;\n }\n\n /**\n * Get command history for a conversation\n */\n getCommandHistory(conversationId: string, limit?: number): CommandHistoryEntry[] {\n const history = this.commandHistory.get(conversationId) || [];\n if (limit && limit > 0) {\n return history.slice(-limit);\n }\n return history;\n }\n\n /**\n * Clear command history for a conversation\n */\n clearCommandHistory(conversationId: string): void {\n this.commandHistory.delete(conversationId);\n logger.info(`Cleared command history for conversation: ${conversationId}`);\n }\n\n /**\n * Get current working directory\n */\n getCurrentDirectory(_conversationId?: string): string {\n return this.currentDirectory;\n }\n\n /**\n * Set current working directory\n */\n setCurrentDirectory(directory: string): boolean {\n const validatedPath = validatePath(\n directory,\n this.shellConfig.allowedDirectory,\n this.currentDirectory\n );\n if (!validatedPath) {\n return false;\n }\n this.currentDirectory = validatedPath;\n return true;\n }\n\n /**\n * Get allowed directory\n */\n getAllowedDirectory(): string {\n return this.shellConfig.allowedDirectory;\n }\n\n /**\n * Get shell configuration\n */\n getShellConfig(): ShellConfig {\n return { ...this.shellConfig };\n }\n\n // ===== Private Methods =====\n\n private async handleCdCommand(command: string): Promise<CommandResult> {\n const parts = command.split(/\\s+/);\n if (parts.length < 2) {\n this.currentDirectory = this.shellConfig.allowedDirectory;\n return {\n success: true,\n stdout: `Changed directory to: ${this.currentDirectory}`,\n stderr: \"\",\n exitCode: 0,\n executedIn: this.currentDirectory,\n };\n }\n\n const targetPath = parts.slice(1).join(\" \");\n const validatedPath = validatePath(\n targetPath,\n this.shellConfig.allowedDirectory,\n this.currentDirectory\n );\n\n if (!validatedPath) {\n return {\n success: false,\n stdout: \"\",\n stderr: \"Cannot navigate outside allowed directory\",\n exitCode: 1,\n error: \"Permission denied\",\n executedIn: this.currentDirectory,\n };\n }\n\n this.currentDirectory = validatedPath;\n return {\n success: true,\n stdout: `Changed directory to: ${this.currentDirectory}`,\n stderr: \"\",\n exitCode: 0,\n executedIn: this.currentDirectory,\n };\n }\n\n private async runCommandSimple(command: string): Promise<CommandResult> {\n return new Promise((resolve) => {\n const useShell = command.includes(\">\") || command.includes(\"<\") || command.includes(\"|\");\n\n let cmd: string;\n let args: string[];\n\n if (useShell) {\n cmd = \"sh\";\n args = [\"-c\", command];\n logger.info(`Executing shell command: sh -c \"${command}\" in ${this.currentDirectory}`);\n } else {\n const parts = command.split(/\\s+/);\n cmd = parts[0];\n args = parts.slice(1);\n logger.info(`Executing command: ${cmd} ${args.join(\" \")} in ${this.currentDirectory}`);\n }\n\n let stdout = \"\";\n let stderr = \"\";\n let timedOut = false;\n\n const child = spawn(cmd, args, {\n cwd: this.currentDirectory,\n env: process.env,\n shell: false,\n });\n\n const timeout = setTimeout(() => {\n timedOut = true;\n child.kill(\"SIGTERM\");\n setTimeout(() => {\n if (!child.killed) {\n child.kill(\"SIGKILL\");\n }\n }, 5000);\n }, this.shellConfig.timeout);\n\n if (child.stdout) {\n child.stdout.on(\"data\", (data: Buffer) => {\n stdout += data.toString();\n });\n }\n\n if (child.stderr) {\n child.stderr.on(\"data\", (data: Buffer) => {\n stderr += data.toString();\n });\n }\n\n child.on(\"exit\", (code) => {\n clearTimeout(timeout);\n\n if (timedOut) {\n resolve({\n success: false,\n stdout,\n stderr: `${stderr}\\nCommand timed out`,\n exitCode: code,\n error: \"Command execution timeout\",\n executedIn: this.currentDirectory,\n });\n return;\n }\n\n resolve({\n success: code === 0,\n stdout,\n stderr,\n exitCode: code,\n executedIn: this.currentDirectory,\n });\n });\n\n child.on(\"error\", (err: Error) => {\n clearTimeout(timeout);\n resolve({\n success: false,\n stdout,\n stderr: err.message,\n exitCode: 1,\n error: \"Failed to execute command\",\n executedIn: this.currentDirectory,\n });\n });\n });\n }\n\n private async runExecProcess(opts: {\n command: string;\n workdir: string;\n env: Record<string, string>;\n usePty: boolean;\n warnings: string[];\n maxOutput: number;\n pendingMaxOutput: number;\n notifyOnExit: boolean;\n scopeKey?: string;\n sessionKey?: string;\n timeoutSec: number;\n onUpdate?: (session: ProcessSession) => void;\n }): Promise<{\n session: ProcessSession;\n startedAt: number;\n promise: Promise<{\n status: \"completed\" | \"failed\";\n exitCode: number | null;\n exitSignal: NodeJS.Signals | number | null;\n durationMs: number;\n aggregated: string;\n timedOut: boolean;\n reason?: string;\n }>;\n kill: () => void;\n }> {\n const startedAt = Date.now();\n const sessionId = createSessionSlug();\n let child: ChildProcessWithoutNullStreams | null = null;\n let pty: PtyHandle | null = null;\n let stdin: ProcessSession[\"stdin\"] | undefined;\n\n if (opts.usePty) {\n const { shell, args: shellArgs } = getShellConfig();\n try {\n const ptyModule = (await import(\"@lydell/node-pty\")) as {\n spawn?: PtySpawn;\n default?: { spawn?: PtySpawn };\n };\n const spawnPty = ptyModule.spawn ?? ptyModule.default?.spawn;\n if (!spawnPty) {\n throw new Error(\"PTY support is unavailable (node-pty spawn not found).\");\n }\n pty = spawnPty(shell, [...shellArgs, opts.command], {\n cwd: opts.workdir,\n env: opts.env,\n name: process.env.TERM ?? \"xterm-256color\",\n cols: 120,\n rows: 30,\n });\n stdin = {\n destroyed: false,\n write: (data, cb) => {\n try {\n pty?.write(data);\n cb?.(null);\n } catch (err) {\n cb?.(err as Error);\n }\n },\n end: () => {\n try {\n const eof = process.platform === \"win32\" ? \"\\x1a\" : \"\\x04\";\n pty?.write(eof);\n } catch {\n // ignore EOF errors\n }\n },\n };\n } catch (err) {\n const errText = String(err);\n const warning = `Warning: PTY spawn failed (${errText}); retrying without PTY.`;\n logger.warn(`exec: PTY spawn failed (${errText}); retrying without PTY.`);\n opts.warnings.push(warning);\n // Fall through to non-PTY execution\n }\n }\n\n if (!pty) {\n const { shell, args: shellArgs } = getShellConfig();\n const proc = spawn(shell, [...shellArgs, opts.command], {\n cwd: opts.workdir,\n env: opts.env,\n detached: process.platform !== \"win32\",\n stdio: [\"pipe\", \"pipe\", \"pipe\"],\n windowsHide: true,\n }) as ChildProcessWithoutNullStreams;\n child = proc;\n stdin = child.stdin;\n }\n\n const session: ProcessSession = {\n id: sessionId,\n command: opts.command,\n scopeKey: opts.scopeKey,\n sessionKey: opts.sessionKey,\n notifyOnExit: opts.notifyOnExit,\n exitNotified: false,\n child: child ?? undefined,\n stdin,\n pid: child?.pid ?? pty?.pid,\n startedAt,\n cwd: opts.workdir,\n maxOutputChars: opts.maxOutput,\n pendingMaxOutputChars: opts.pendingMaxOutput,\n totalOutputChars: 0,\n pendingStdout: [],\n pendingStderr: [],\n pendingStdoutChars: 0,\n pendingStderrChars: 0,\n aggregated: \"\",\n tail: \"\",\n exited: false,\n exitCode: undefined,\n exitSignal: undefined,\n truncated: false,\n backgrounded: false,\n };\n addSession(session);\n\n let settled = false;\n let timeoutTimer: NodeJS.Timeout | null = null;\n let timeoutFinalizeTimer: NodeJS.Timeout | null = null;\n let timedOut = false;\n const timeoutFinalizeMs = 1000;\n let resolveFn:\n | ((outcome: {\n status: \"completed\" | \"failed\";\n exitCode: number | null;\n exitSignal: NodeJS.Signals | number | null;\n durationMs: number;\n aggregated: string;\n timedOut: boolean;\n reason?: string;\n }) => void)\n | null = null;\n\n const settle = (outcome: {\n status: \"completed\" | \"failed\";\n exitCode: number | null;\n exitSignal: NodeJS.Signals | number | null;\n durationMs: number;\n aggregated: string;\n timedOut: boolean;\n reason?: string;\n }) => {\n if (settled) {\n return;\n }\n settled = true;\n resolveFn?.(outcome);\n };\n\n const finalizeTimeout = () => {\n if (session.exited) {\n return;\n }\n markExited(session, null, \"SIGKILL\", \"failed\");\n const aggregated = session.aggregated.trim();\n const reason = `Command timed out after ${opts.timeoutSec} seconds`;\n settle({\n status: \"failed\",\n exitCode: null,\n exitSignal: \"SIGKILL\",\n durationMs: Date.now() - startedAt,\n aggregated,\n timedOut: true,\n reason: aggregated ? `${aggregated}\\n\\n${reason}` : reason,\n });\n };\n\n const onTimeout = () => {\n timedOut = true;\n killSession(session);\n if (!timeoutFinalizeTimer) {\n timeoutFinalizeTimer = setTimeout(() => {\n finalizeTimeout();\n }, timeoutFinalizeMs);\n }\n };\n\n if (opts.timeoutSec > 0) {\n timeoutTimer = setTimeout(() => {\n onTimeout();\n }, opts.timeoutSec * 1000);\n }\n\n const emitUpdate = () => {\n if (opts.onUpdate) {\n opts.onUpdate(session);\n }\n };\n\n const handleStdout = (data: string) => {\n const str = sanitizeBinaryOutput(data.toString());\n for (const chunk of chunkString(str)) {\n appendOutput(session, \"stdout\", chunk);\n emitUpdate();\n }\n };\n\n const handleStderr = (data: string) => {\n const str = sanitizeBinaryOutput(data.toString());\n for (const chunk of chunkString(str)) {\n appendOutput(session, \"stderr\", chunk);\n emitUpdate();\n }\n };\n\n if (pty) {\n const cursorResponse = buildCursorPositionResponse();\n pty.onData((data) => {\n const raw = data.toString();\n const { cleaned, requests } = stripDsrRequests(raw);\n if (requests > 0) {\n for (let i = 0; i < requests; i += 1) {\n pty.write(cursorResponse);\n }\n }\n handleStdout(cleaned);\n });\n } else if (child) {\n child.stdout.on(\"data\", handleStdout);\n child.stderr.on(\"data\", handleStderr);\n }\n\n const promise = new Promise<{\n status: \"completed\" | \"failed\";\n exitCode: number | null;\n exitSignal: NodeJS.Signals | number | null;\n durationMs: number;\n aggregated: string;\n timedOut: boolean;\n reason?: string;\n }>((resolve) => {\n resolveFn = resolve;\n const handleExit = (code: number | null, exitSignal: NodeJS.Signals | number | null) => {\n if (timeoutTimer) {\n clearTimeout(timeoutTimer);\n }\n if (timeoutFinalizeTimer) {\n clearTimeout(timeoutFinalizeTimer);\n }\n const durationMs = Date.now() - startedAt;\n const wasSignal = exitSignal != null;\n const isSuccess = code === 0 && !wasSignal && !timedOut;\n const status: \"completed\" | \"failed\" = isSuccess ? \"completed\" : \"failed\";\n markExited(session, code, exitSignal, status);\n if (!session.child && session.stdin) {\n session.stdin.destroyed = true;\n }\n\n if (settled) {\n return;\n }\n const aggregated = session.aggregated.trim();\n if (!isSuccess) {\n const reason = timedOut\n ? `Command timed out after ${opts.timeoutSec} seconds`\n : wasSignal && exitSignal\n ? `Command aborted by signal ${exitSignal}`\n : code === null\n ? \"Command aborted before exit code was captured\"\n : `Command exited with code ${code}`;\n const message = aggregated ? `${aggregated}\\n\\n${reason}` : reason;\n settle({\n status: \"failed\",\n exitCode: code ?? null,\n exitSignal: exitSignal ?? null,\n durationMs,\n aggregated,\n timedOut,\n reason: message,\n });\n return;\n }\n settle({\n status: \"completed\",\n exitCode: code ?? 0,\n exitSignal: exitSignal ?? null,\n durationMs,\n aggregated,\n timedOut: false,\n });\n };\n\n if (pty) {\n pty.onExit((event) => {\n const rawSignal = event.signal ?? null;\n const normalizedSignal = rawSignal === 0 ? null : rawSignal;\n handleExit(event.exitCode ?? null, normalizedSignal);\n });\n } else if (child) {\n child.once(\"close\", (code, exitSignal) => {\n handleExit(code, exitSignal);\n });\n\n child.once(\"error\", (err) => {\n if (timeoutTimer) {\n clearTimeout(timeoutTimer);\n }\n if (timeoutFinalizeTimer) {\n clearTimeout(timeoutFinalizeTimer);\n }\n markExited(session, null, null, \"failed\");\n const aggregated = session.aggregated.trim();\n const message = aggregated ? `${aggregated}\\n\\n${String(err)}` : String(err);\n settle({\n status: \"failed\",\n exitCode: null,\n exitSignal: null,\n durationMs: Date.now() - startedAt,\n aggregated,\n timedOut,\n reason: message,\n });\n });\n }\n });\n\n return {\n session,\n startedAt,\n promise,\n kill: () => killSession(session),\n };\n }\n\n private addToHistory(\n conversationId: string | undefined,\n command: string,\n result: CommandResult,\n fileOperations?: FileOperation[]\n ): void {\n if (!conversationId) return;\n\n const historyEntry: CommandHistoryEntry = {\n command,\n stdout: result.stdout,\n stderr: result.stderr,\n exitCode: result.exitCode,\n timestamp: Date.now(),\n workingDirectory: result.executedIn,\n fileOperations,\n };\n\n if (!this.commandHistory.has(conversationId)) {\n this.commandHistory.set(conversationId, []);\n }\n\n const history = this.commandHistory.get(conversationId);\n if (!history) {\n throw new Error(`No history found for conversation ${conversationId}`);\n }\n history.push(historyEntry);\n\n if (history.length > this.maxHistoryPerConversation) {\n history.shift();\n }\n }\n\n private detectFileOperations(command: string, cwd: string): FileOperation[] | undefined {\n const operations: FileOperation[] = [];\n const parts = command.trim().split(/\\s+/);\n const cmd = parts[0].toLowerCase();\n\n if (cmd === \"touch\" && parts.length > 1) {\n operations.push({\n type: \"create\" as FileOperationType,\n target: this.resolvePath(parts[1], cwd),\n });\n } else if (cmd === \"echo\" && command.includes(\">\")) {\n const match = command.match(/>\\s*([^\\s]+)$/);\n if (match) {\n operations.push({\n type: \"write\" as FileOperationType,\n target: this.resolvePath(match[1], cwd),\n });\n }\n } else if (cmd === \"mkdir\" && parts.length > 1) {\n operations.push({\n type: \"mkdir\" as FileOperationType,\n target: this.resolvePath(parts[1], cwd),\n });\n } else if (cmd === \"cat\" && parts.length > 1 && !command.includes(\">\")) {\n operations.push({\n type: \"read\" as FileOperationType,\n target: this.resolvePath(parts[1], cwd),\n });\n } else if (cmd === \"mv\" && parts.length > 2) {\n operations.push({\n type: \"move\" as FileOperationType,\n target: this.resolvePath(parts[1], cwd),\n secondaryTarget: this.resolvePath(parts[2], cwd),\n });\n } else if (cmd === \"cp\" && parts.length > 2) {\n operations.push({\n type: \"copy\" as FileOperationType,\n target: this.resolvePath(parts[1], cwd),\n secondaryTarget: this.resolvePath(parts[2], cwd),\n });\n }\n\n return operations.length > 0 ? operations : undefined;\n }\n\n private resolvePath(filePath: string, cwd: string): string {\n if (path.isAbsolute(filePath)) {\n return filePath;\n }\n return path.join(cwd, filePath);\n }\n}\n",
|
|
26
|
+
"/**\n * Enhanced Shell Service with PTY, background execution, and session management\n * Migrated from otto bash-tools.exec.ts, bash-tools.process.ts\n */\n\nimport type { ChildProcessWithoutNullStreams } from \"node:child_process\";\nimport path from \"node:path\";\nimport { type IAgentRuntime, logger, Service } from \"@elizaos/core\";\nimport spawn from \"cross-spawn\";\nimport type {\n CommandHistoryEntry,\n CommandResult,\n ExecResult,\n ExecuteOptions,\n FileOperation,\n FileOperationType,\n FinishedSession,\n ProcessActionParams,\n ProcessSession,\n PtyHandle,\n PtySpawn,\n ShellConfig,\n} from \"../types\";\nimport { isForbiddenCommand, isSafeCommand, loadShellConfig, validatePath } from \"../utils\";\nimport {\n buildCursorPositionResponse,\n encodeKeySequence,\n encodePaste,\n stripDsrRequests,\n} from \"../utils/ptyKeys\";\nimport {\n chunkString,\n clampNumber,\n coerceEnv,\n deriveSessionName,\n formatDuration,\n getShellConfig,\n killSession,\n pad,\n readEnvInt,\n resolveWorkdir,\n sanitizeBinaryOutput,\n sliceLogLines,\n truncateMiddle,\n} from \"../utils/shellUtils\";\nimport {\n addSession,\n appendOutput,\n createSessionSlug,\n deleteSession,\n drainSession,\n getFinishedSession,\n getSession,\n listFinishedSessions,\n listRunningSessions,\n markBackgrounded,\n markExited,\n} from \"./processRegistry\";\n\nconst DEFAULT_MAX_OUTPUT = clampNumber(\n readEnvInt(\"SHELL_MAX_OUTPUT_CHARS\"),\n 200_000,\n 1_000,\n 200_000\n);\nconst DEFAULT_PENDING_MAX_OUTPUT = clampNumber(\n readEnvInt(\"SHELL_PENDING_MAX_OUTPUT_CHARS\"),\n 200_000,\n 1_000,\n 200_000\n);\nconst DEFAULT_BACKGROUND_MS = clampNumber(readEnvInt(\"SHELL_BACKGROUND_MS\"), 10_000, 10, 120_000);\nconst DEFAULT_TIMEOUT_SEC = 1800; // 30 minutes\n\nexport class ShellService extends Service {\n public static serviceType = \"shell\";\n private shellConfig: ShellConfig;\n private currentDirectory: string;\n private commandHistory: Map<string, CommandHistoryEntry[]>;\n private maxHistoryPerConversation = 100;\n private scopeKey?: string;\n\n constructor(runtime: IAgentRuntime) {\n super(runtime);\n this.shellConfig = loadShellConfig();\n this.currentDirectory = this.shellConfig.allowedDirectory;\n this.commandHistory = new Map();\n }\n\n static async start(runtime: IAgentRuntime): Promise<ShellService> {\n const instance = new ShellService(runtime);\n logger.info(\"Shell service initialized with PTY, background execution, and history tracking\");\n return instance;\n }\n\n async stop(): Promise<void> {\n // Clean up all running sessions by killing their processes\n const runningSessions = listRunningSessions();\n for (const session of runningSessions) {\n try {\n killSession(session);\n logger.debug(`Killed shell session: ${session.id}`);\n } catch (err) {\n logger.warn(`Failed to kill shell session ${session.id}: ${err}`);\n }\n }\n\n // Clear command history\n this.commandHistory.clear();\n\n logger.info(`Shell service stopped, cleaned up ${runningSessions.length} running sessions`);\n }\n\n get capabilityDescription(): string {\n return \"Execute shell commands with PTY support, background execution, and session management\";\n }\n\n /**\n * Set scope key for session isolation\n */\n setScopeKey(scopeKey: string): void {\n this.scopeKey = scopeKey;\n }\n\n /**\n * Simple command execution (original API for backward compatibility)\n */\n async executeCommand(command: string, conversationId?: string): Promise<CommandResult> {\n if (!command || typeof command !== \"string\") {\n return {\n success: false,\n stdout: \"\",\n stderr: \"Invalid command\",\n exitCode: 1,\n error: \"Command must be a non-empty string\",\n executedIn: this.currentDirectory,\n };\n }\n\n // Sandbox remote mode: route to host capability API\n if (this.runtime && (this.runtime as Record<string, unknown>).sandboxMode) {\n const hostApiUrl =\n (this.runtime.getSetting(\"SANDBOX_HOST_API_URL\") as string | null) ??\n \"http://localhost:2138\";\n const runtimeFetch = this.runtime.fetch ?? globalThis.fetch;\n logger.info(`[shell:sandbox] routing exec to ${hostApiUrl}: ${command.substring(0, 100)}`);\n try {\n const response = await runtimeFetch(`${hostApiUrl}/api/sandbox/exec`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({\n command,\n workdir: this.currentDirectory,\n timeoutMs: 30000,\n }),\n });\n const result = await response.json() as {\n exitCode: number;\n stdout: string;\n stderr: string;\n durationMs: number;\n executedInSandbox: boolean;\n };\n logger.info(`[shell:sandbox] exec completed: exit=${result.exitCode} duration=${result.durationMs}ms`);\n return {\n success: result.exitCode === 0,\n stdout: result.stdout,\n stderr: result.stderr,\n exitCode: result.exitCode,\n executedIn: this.currentDirectory,\n };\n } catch (err) {\n const errMsg = err instanceof Error ? err.message : String(err);\n logger.error(`[shell:sandbox] exec failed: ${errMsg}`);\n return {\n success: false,\n stdout: \"\",\n stderr: `Sandbox exec failed: ${errMsg}`,\n exitCode: 1,\n error: \"Sandbox remote execution failed\",\n executedIn: this.currentDirectory,\n };\n }\n }\n\n const trimmedCommand = command.trim();\n\n if (!isSafeCommand(trimmedCommand)) {\n return {\n success: false,\n stdout: \"\",\n stderr: \"Command contains forbidden patterns\",\n exitCode: 1,\n error: \"Security policy violation\",\n executedIn: this.currentDirectory,\n };\n }\n\n if (isForbiddenCommand(trimmedCommand, this.shellConfig.forbiddenCommands)) {\n return {\n success: false,\n stdout: \"\",\n stderr: \"Command is forbidden by security policy\",\n exitCode: 1,\n error: \"Forbidden command\",\n executedIn: this.currentDirectory,\n };\n }\n\n if (trimmedCommand.startsWith(\"cd \")) {\n const result = await this.handleCdCommand(trimmedCommand);\n this.addToHistory(conversationId, trimmedCommand, result);\n return result;\n }\n\n const result = await this.runCommandSimple(trimmedCommand);\n\n if (result.success) {\n const fileOps = this.detectFileOperations(trimmedCommand, this.currentDirectory);\n if (fileOps && conversationId) {\n this.addToHistory(conversationId, trimmedCommand, result, fileOps);\n } else {\n this.addToHistory(conversationId, trimmedCommand, result);\n }\n } else {\n this.addToHistory(conversationId, trimmedCommand, result);\n }\n\n return result;\n }\n\n /**\n * Enhanced command execution with PTY, background support, and session management\n * This is the main execution method that supports all advanced features\n */\n async exec(command: string, options: ExecuteOptions = {}): Promise<ExecResult> {\n if (!command || typeof command !== \"string\") {\n return {\n status: \"failed\",\n exitCode: 1,\n durationMs: 0,\n aggregated: \"Invalid command\",\n reason: \"Command must be a non-empty string\",\n };\n }\n\n const trimmedCommand = command.trim();\n\n if (!isSafeCommand(trimmedCommand)) {\n return {\n status: \"failed\",\n exitCode: 1,\n durationMs: 0,\n aggregated: \"Command contains forbidden patterns\",\n reason: \"Security policy violation\",\n };\n }\n\n if (isForbiddenCommand(trimmedCommand, this.shellConfig.forbiddenCommands)) {\n return {\n status: \"failed\",\n exitCode: 1,\n durationMs: 0,\n aggregated: \"Command is forbidden by security policy\",\n reason: \"Forbidden command\",\n };\n }\n\n const warnings: string[] = [];\n const maxOutput = this.shellConfig.maxOutputChars ?? DEFAULT_MAX_OUTPUT;\n const pendingMaxOutput = this.shellConfig.pendingMaxOutputChars ?? DEFAULT_PENDING_MAX_OUTPUT;\n const defaultBackgroundMs = this.shellConfig.defaultBackgroundMs ?? DEFAULT_BACKGROUND_MS;\n const allowBackground = this.shellConfig.allowBackground ?? true;\n\n // Resolve background/yield settings\n const backgroundRequested = options.background === true;\n const yieldRequested = typeof options.yieldMs === \"number\";\n if (!allowBackground && (backgroundRequested || yieldRequested)) {\n warnings.push(\"Warning: background execution is disabled; running synchronously.\");\n }\n const yieldWindow = allowBackground\n ? backgroundRequested\n ? 0\n : clampNumber(options.yieldMs ?? defaultBackgroundMs, defaultBackgroundMs, 10, 120_000)\n : null;\n\n // Resolve workdir\n const rawWorkdir = options.workdir?.trim() || this.currentDirectory || process.cwd();\n const workdir = resolveWorkdir(rawWorkdir, warnings);\n\n // Build environment\n const baseEnv = coerceEnv(process.env);\n const mergedEnv = options.env ? { ...baseEnv, ...options.env } : baseEnv;\n\n const timeoutSec =\n typeof options.timeout === \"number\" && options.timeout > 0\n ? options.timeout\n : DEFAULT_TIMEOUT_SEC;\n const usePty = options.pty === true;\n const notifyOnExit = options.notifyOnExit !== false;\n\n // Run the process\n const handle = await this.runExecProcess({\n command: trimmedCommand,\n workdir,\n env: mergedEnv,\n usePty,\n warnings,\n maxOutput,\n pendingMaxOutput,\n notifyOnExit,\n scopeKey: options.scopeKey ?? this.scopeKey,\n sessionKey: options.sessionKey,\n timeoutSec,\n onUpdate: options.onUpdate,\n });\n\n // Handle background/yield\n if (allowBackground && yieldWindow !== null) {\n if (yieldWindow === 0) {\n markBackgrounded(handle.session);\n return {\n status: \"running\",\n sessionId: handle.session.id,\n pid: handle.session.pid,\n startedAt: handle.startedAt,\n cwd: handle.session.cwd,\n tail: handle.session.tail,\n };\n }\n\n // Wait for yieldWindow or completion\n const raceResult = await Promise.race([\n handle.promise,\n new Promise<\"yield\">((resolve) => setTimeout(() => resolve(\"yield\"), yieldWindow)),\n ]);\n\n if (raceResult === \"yield\" && !handle.session.exited) {\n markBackgrounded(handle.session);\n const warningText = warnings.length ? `${warnings.join(\"\\n\")}\\n\\n` : \"\";\n return {\n status: \"running\",\n sessionId: handle.session.id,\n pid: handle.session.pid,\n startedAt: handle.startedAt,\n cwd: handle.session.cwd,\n tail: `${warningText}Command still running (session ${handle.session.id}, pid ${handle.session.pid ?? \"n/a\"}).`,\n };\n }\n\n // Process completed within yield window\n const outcome = raceResult === \"yield\" ? await handle.promise : raceResult;\n const warningText = warnings.length ? `${warnings.join(\"\\n\")}\\n\\n` : \"\";\n\n if (outcome.status === \"failed\") {\n return {\n status: \"failed\",\n exitCode: outcome.exitCode ?? null,\n durationMs: outcome.durationMs,\n aggregated: outcome.aggregated,\n cwd: workdir,\n timedOut: outcome.timedOut,\n reason: `${warningText}${outcome.reason ?? \"Command failed.\"}`,\n };\n }\n\n return {\n status: \"completed\",\n exitCode: outcome.exitCode ?? 0,\n durationMs: outcome.durationMs,\n aggregated: `${warningText}${outcome.aggregated || \"(no output)\"}`,\n cwd: workdir,\n };\n }\n\n // Synchronous execution (no yield/background)\n const outcome = await handle.promise;\n const warningText = warnings.length ? `${warnings.join(\"\\n\")}\\n\\n` : \"\";\n\n if (outcome.status === \"failed\") {\n return {\n status: \"failed\",\n exitCode: outcome.exitCode ?? null,\n durationMs: outcome.durationMs,\n aggregated: outcome.aggregated,\n cwd: workdir,\n timedOut: outcome.timedOut,\n reason: `${warningText}${outcome.reason ?? \"Command failed.\"}`,\n };\n }\n\n return {\n status: \"completed\",\n exitCode: outcome.exitCode ?? 0,\n durationMs: outcome.durationMs,\n aggregated: `${warningText}${outcome.aggregated || \"(no output)\"}`,\n cwd: workdir,\n };\n }\n\n /**\n * Process management action handler\n * Supports: list, poll, log, write, send-keys, submit, paste, kill, clear, remove\n */\n async processAction(params: ProcessActionParams): Promise<{\n success: boolean;\n message: string;\n data?: Record<string, unknown>;\n }> {\n const scopeKey = this.scopeKey;\n const isInScope = (session?: { scopeKey?: string } | null) =>\n !scopeKey || session?.scopeKey === scopeKey;\n\n if (params.action === \"list\") {\n const running = listRunningSessions()\n .filter((s) => isInScope(s))\n .map((s) => ({\n sessionId: s.id,\n status: \"running\",\n pid: s.pid ?? undefined,\n startedAt: s.startedAt,\n runtimeMs: Date.now() - s.startedAt,\n cwd: s.cwd,\n command: s.command,\n name: deriveSessionName(s.command),\n tail: s.tail,\n truncated: s.truncated,\n }));\n const finished = listFinishedSessions()\n .filter((s) => isInScope(s))\n .map((s) => ({\n sessionId: s.id,\n status: s.status,\n startedAt: s.startedAt,\n endedAt: s.endedAt,\n runtimeMs: s.endedAt - s.startedAt,\n cwd: s.cwd,\n command: s.command,\n name: deriveSessionName(s.command),\n tail: s.tail,\n truncated: s.truncated,\n exitCode: s.exitCode ?? undefined,\n exitSignal: s.exitSignal ?? undefined,\n }));\n const sessions = [...running, ...finished]\n .slice()\n .sort(\n (\n a: (typeof running)[number] | (typeof finished)[number],\n b: (typeof running)[number] | (typeof finished)[number]\n ) => b.startedAt - a.startedAt\n );\n const lines = sessions.map((s: (typeof sessions)[number]) => {\n const label = s.name ? truncateMiddle(s.name, 80) : truncateMiddle(s.command, 120);\n return `${s.sessionId} ${pad(s.status, 9)} ${formatDuration(s.runtimeMs)} :: ${label}`;\n });\n return {\n success: true,\n message: lines.join(\"\\n\") || \"No running or recent sessions.\",\n data: { sessions },\n };\n }\n\n if (!params.sessionId) {\n return {\n success: false,\n message: \"sessionId is required for this action.\",\n };\n }\n\n const session = getSession(params.sessionId);\n const finished = getFinishedSession(params.sessionId);\n const scopedSession = isInScope(session) ? session : undefined;\n const scopedFinished = isInScope(finished) ? finished : undefined;\n\n switch (params.action) {\n case \"poll\": {\n if (!scopedSession) {\n if (scopedFinished) {\n return {\n success: true,\n message:\n (scopedFinished.tail ||\n `(no output recorded${scopedFinished.truncated ? \" — truncated to cap\" : \"\"})`) +\n `\\n\\nProcess exited with ${\n scopedFinished.exitSignal\n ? `signal ${scopedFinished.exitSignal}`\n : `code ${scopedFinished.exitCode ?? 0}`\n }.`,\n data: {\n status: scopedFinished.status === \"completed\" ? \"completed\" : \"failed\",\n sessionId: params.sessionId,\n exitCode: scopedFinished.exitCode ?? undefined,\n aggregated: scopedFinished.aggregated,\n name: deriveSessionName(scopedFinished.command),\n },\n };\n }\n return {\n success: false,\n message: `No session found for ${params.sessionId}`,\n };\n }\n if (!scopedSession.backgrounded) {\n return {\n success: false,\n message: `Session ${params.sessionId} is not backgrounded.`,\n };\n }\n const { stdout, stderr } = drainSession(scopedSession);\n const exited = scopedSession.exited;\n const exitCode = scopedSession.exitCode ?? 0;\n const exitSignal = scopedSession.exitSignal ?? undefined;\n if (exited) {\n const status = exitCode === 0 && exitSignal == null ? \"completed\" : \"failed\";\n markExited(\n scopedSession,\n scopedSession.exitCode ?? null,\n scopedSession.exitSignal ?? null,\n status\n );\n }\n const status = exited\n ? exitCode === 0 && exitSignal == null\n ? \"completed\"\n : \"failed\"\n : \"running\";\n const output = [stdout.trimEnd(), stderr.trimEnd()].filter(Boolean).join(\"\\n\").trim();\n return {\n success: true,\n message:\n (output || \"(no new output)\") +\n (exited\n ? `\\n\\nProcess exited with ${\n exitSignal ? `signal ${exitSignal}` : `code ${exitCode}`\n }.`\n : \"\\n\\nProcess still running.\"),\n data: {\n status,\n sessionId: params.sessionId,\n exitCode: exited ? exitCode : undefined,\n aggregated: scopedSession.aggregated,\n name: deriveSessionName(scopedSession.command),\n },\n };\n }\n\n case \"log\": {\n if (scopedSession) {\n if (!scopedSession.backgrounded) {\n return {\n success: false,\n message: `Session ${params.sessionId} is not backgrounded.`,\n };\n }\n const { slice, totalLines, totalChars } = sliceLogLines(\n scopedSession.aggregated,\n params.offset,\n params.limit\n );\n return {\n success: true,\n message: slice || \"(no output yet)\",\n data: {\n status: scopedSession.exited ? \"completed\" : \"running\",\n sessionId: params.sessionId,\n totalLines,\n totalChars,\n truncated: scopedSession.truncated,\n name: deriveSessionName(scopedSession.command),\n },\n };\n }\n if (scopedFinished) {\n const { slice, totalLines, totalChars } = sliceLogLines(\n scopedFinished.aggregated,\n params.offset,\n params.limit\n );\n const status = scopedFinished.status === \"completed\" ? \"completed\" : \"failed\";\n return {\n success: true,\n message: slice || \"(no output recorded)\",\n data: {\n status,\n sessionId: params.sessionId,\n totalLines,\n totalChars,\n truncated: scopedFinished.truncated,\n exitCode: scopedFinished.exitCode ?? undefined,\n exitSignal: scopedFinished.exitSignal ?? undefined,\n name: deriveSessionName(scopedFinished.command),\n },\n };\n }\n return {\n success: false,\n message: `No session found for ${params.sessionId}`,\n };\n }\n\n case \"write\": {\n if (!scopedSession) {\n return {\n success: false,\n message: `No active session found for ${params.sessionId}`,\n };\n }\n if (!scopedSession.backgrounded) {\n return {\n success: false,\n message: `Session ${params.sessionId} is not backgrounded.`,\n };\n }\n const stdin = scopedSession.stdin ?? scopedSession.child?.stdin;\n if (!stdin || stdin.destroyed) {\n return {\n success: false,\n message: `Session ${params.sessionId} stdin is not writable.`,\n };\n }\n await new Promise<void>((resolve, reject) => {\n stdin.write(params.data ?? \"\", (err) => {\n if (err) reject(err);\n else resolve();\n });\n });\n if (params.eof) {\n stdin.end();\n }\n return {\n success: true,\n message: `Wrote ${(params.data ?? \"\").length} bytes to session ${params.sessionId}${\n params.eof ? \" (stdin closed)\" : \"\"\n }.`,\n data: {\n sessionId: params.sessionId,\n name: deriveSessionName(scopedSession.command),\n },\n };\n }\n\n case \"send-keys\": {\n if (!scopedSession) {\n return {\n success: false,\n message: `No active session found for ${params.sessionId}`,\n };\n }\n if (!scopedSession.backgrounded) {\n return {\n success: false,\n message: `Session ${params.sessionId} is not backgrounded.`,\n };\n }\n const stdin = scopedSession.stdin ?? scopedSession.child?.stdin;\n if (!stdin || stdin.destroyed) {\n return {\n success: false,\n message: `Session ${params.sessionId} stdin is not writable.`,\n };\n }\n const { data, warnings } = encodeKeySequence({\n keys: params.keys,\n hex: params.hex,\n literal: params.literal,\n });\n if (!data) {\n return { success: false, message: \"No key data provided.\" };\n }\n await new Promise<void>((resolve, reject) => {\n stdin.write(data, (err) => {\n if (err) reject(err);\n else resolve();\n });\n });\n return {\n success: true,\n message:\n `Sent ${data.length} bytes to session ${params.sessionId}.` +\n (warnings.length ? `\\nWarnings:\\n- ${warnings.join(\"\\n- \")}` : \"\"),\n data: {\n sessionId: params.sessionId,\n name: deriveSessionName(scopedSession.command),\n },\n };\n }\n\n case \"submit\": {\n if (!scopedSession) {\n return {\n success: false,\n message: `No active session found for ${params.sessionId}`,\n };\n }\n if (!scopedSession.backgrounded) {\n return {\n success: false,\n message: `Session ${params.sessionId} is not backgrounded.`,\n };\n }\n const stdin = scopedSession.stdin ?? scopedSession.child?.stdin;\n if (!stdin || stdin.destroyed) {\n return {\n success: false,\n message: `Session ${params.sessionId} stdin is not writable.`,\n };\n }\n await new Promise<void>((resolve, reject) => {\n stdin.write(\"\\r\", (err) => {\n if (err) reject(err);\n else resolve();\n });\n });\n return {\n success: true,\n message: `Submitted session ${params.sessionId} (sent CR).`,\n data: {\n sessionId: params.sessionId,\n name: deriveSessionName(scopedSession.command),\n },\n };\n }\n\n case \"paste\": {\n if (!scopedSession) {\n return {\n success: false,\n message: `No active session found for ${params.sessionId}`,\n };\n }\n if (!scopedSession.backgrounded) {\n return {\n success: false,\n message: `Session ${params.sessionId} is not backgrounded.`,\n };\n }\n const stdin = scopedSession.stdin ?? scopedSession.child?.stdin;\n if (!stdin || stdin.destroyed) {\n return {\n success: false,\n message: `Session ${params.sessionId} stdin is not writable.`,\n };\n }\n const payload = encodePaste(params.text ?? \"\", params.bracketed !== false);\n if (!payload) {\n return { success: false, message: \"No paste text provided.\" };\n }\n await new Promise<void>((resolve, reject) => {\n stdin.write(payload, (err) => {\n if (err) reject(err);\n else resolve();\n });\n });\n return {\n success: true,\n message: `Pasted ${params.text?.length ?? 0} chars to session ${params.sessionId}.`,\n data: {\n sessionId: params.sessionId,\n name: deriveSessionName(scopedSession.command),\n },\n };\n }\n\n case \"kill\": {\n if (!scopedSession) {\n return {\n success: false,\n message: `No active session found for ${params.sessionId}`,\n };\n }\n if (!scopedSession.backgrounded) {\n return {\n success: false,\n message: `Session ${params.sessionId} is not backgrounded.`,\n };\n }\n killSession(scopedSession);\n markExited(scopedSession, null, \"SIGKILL\", \"failed\");\n return {\n success: true,\n message: `Killed session ${params.sessionId}.`,\n data: { name: deriveSessionName(scopedSession.command) },\n };\n }\n\n case \"clear\": {\n if (scopedFinished) {\n deleteSession(params.sessionId);\n return {\n success: true,\n message: `Cleared session ${params.sessionId}.`,\n };\n }\n return {\n success: false,\n message: `No finished session found for ${params.sessionId}`,\n };\n }\n\n case \"remove\": {\n if (scopedSession) {\n killSession(scopedSession);\n markExited(scopedSession, null, \"SIGKILL\", \"failed\");\n return {\n success: true,\n message: `Removed session ${params.sessionId}.`,\n data: { name: deriveSessionName(scopedSession.command) },\n };\n }\n if (scopedFinished) {\n deleteSession(params.sessionId);\n return {\n success: true,\n message: `Removed session ${params.sessionId}.`,\n };\n }\n return {\n success: false,\n message: `No session found for ${params.sessionId}`,\n };\n }\n }\n\n return {\n success: false,\n message: `Unknown action ${params.action as string}`,\n };\n }\n\n // ===== Public Service Methods for External Use =====\n\n /**\n * List all running sessions\n */\n listRunningSessions(): ProcessSession[] {\n const scopeKey = this.scopeKey;\n return listRunningSessions().filter((s) => !scopeKey || s.scopeKey === scopeKey);\n }\n\n /**\n * List all finished sessions\n */\n listFinishedSessions(): FinishedSession[] {\n const scopeKey = this.scopeKey;\n return listFinishedSessions().filter((s) => !scopeKey || s.scopeKey === scopeKey);\n }\n\n /**\n * Get a specific session by ID\n */\n getSession(id: string): ProcessSession | undefined {\n const session = getSession(id);\n if (!session) return undefined;\n if (this.scopeKey && session.scopeKey !== this.scopeKey) return undefined;\n return session;\n }\n\n /**\n * Get a specific finished session by ID\n */\n getFinishedSession(id: string): FinishedSession | undefined {\n const session = getFinishedSession(id);\n if (!session) return undefined;\n if (this.scopeKey && session.scopeKey !== this.scopeKey) return undefined;\n return session;\n }\n\n /**\n * Kill a session by ID\n */\n killSessionById(id: string): boolean {\n const session = this.getSession(id);\n if (!session) return false;\n killSession(session);\n markExited(session, null, \"SIGKILL\", \"killed\");\n return true;\n }\n\n /**\n * Get command history for a conversation\n */\n getCommandHistory(conversationId: string, limit?: number): CommandHistoryEntry[] {\n const history = this.commandHistory.get(conversationId) || [];\n if (limit && limit > 0) {\n return history.slice(-limit);\n }\n return history;\n }\n\n /**\n * Clear command history for a conversation\n */\n clearCommandHistory(conversationId: string): void {\n this.commandHistory.delete(conversationId);\n logger.info(`Cleared command history for conversation: ${conversationId}`);\n }\n\n /**\n * Get current working directory\n */\n getCurrentDirectory(_conversationId?: string): string {\n return this.currentDirectory;\n }\n\n /**\n * Set current working directory\n */\n setCurrentDirectory(directory: string): boolean {\n const validatedPath = validatePath(\n directory,\n this.shellConfig.allowedDirectory,\n this.currentDirectory\n );\n if (!validatedPath) {\n return false;\n }\n this.currentDirectory = validatedPath;\n return true;\n }\n\n /**\n * Get allowed directory\n */\n getAllowedDirectory(): string {\n return this.shellConfig.allowedDirectory;\n }\n\n /**\n * Get shell configuration\n */\n getShellConfig(): ShellConfig {\n return { ...this.shellConfig };\n }\n\n // ===== Private Methods =====\n\n private async handleCdCommand(command: string): Promise<CommandResult> {\n const parts = command.split(/\\s+/);\n if (parts.length < 2) {\n this.currentDirectory = this.shellConfig.allowedDirectory;\n return {\n success: true,\n stdout: `Changed directory to: ${this.currentDirectory}`,\n stderr: \"\",\n exitCode: 0,\n executedIn: this.currentDirectory,\n };\n }\n\n const targetPath = parts.slice(1).join(\" \");\n const validatedPath = validatePath(\n targetPath,\n this.shellConfig.allowedDirectory,\n this.currentDirectory\n );\n\n if (!validatedPath) {\n return {\n success: false,\n stdout: \"\",\n stderr: \"Cannot navigate outside allowed directory\",\n exitCode: 1,\n error: \"Permission denied\",\n executedIn: this.currentDirectory,\n };\n }\n\n this.currentDirectory = validatedPath;\n return {\n success: true,\n stdout: `Changed directory to: ${this.currentDirectory}`,\n stderr: \"\",\n exitCode: 0,\n executedIn: this.currentDirectory,\n };\n }\n\n private async runCommandSimple(command: string): Promise<CommandResult> {\n return new Promise((resolve) => {\n const useShell = command.includes(\">\") || command.includes(\"<\") || command.includes(\"|\");\n\n let cmd: string;\n let args: string[];\n\n if (useShell) {\n cmd = \"sh\";\n args = [\"-c\", command];\n logger.info(`Executing shell command: sh -c \"${command}\" in ${this.currentDirectory}`);\n } else {\n const parts = command.split(/\\s+/);\n cmd = parts[0];\n args = parts.slice(1);\n logger.info(`Executing command: ${cmd} ${args.join(\" \")} in ${this.currentDirectory}`);\n }\n\n let stdout = \"\";\n let stderr = \"\";\n let timedOut = false;\n\n const child = spawn(cmd, args, {\n cwd: this.currentDirectory,\n env: process.env,\n shell: false,\n });\n\n const timeout = setTimeout(() => {\n timedOut = true;\n child.kill(\"SIGTERM\");\n setTimeout(() => {\n if (!child.killed) {\n child.kill(\"SIGKILL\");\n }\n }, 5000);\n }, this.shellConfig.timeout);\n\n if (child.stdout) {\n child.stdout.on(\"data\", (data: Buffer) => {\n stdout += data.toString();\n });\n }\n\n if (child.stderr) {\n child.stderr.on(\"data\", (data: Buffer) => {\n stderr += data.toString();\n });\n }\n\n child.on(\"exit\", (code) => {\n clearTimeout(timeout);\n\n if (timedOut) {\n resolve({\n success: false,\n stdout,\n stderr: `${stderr}\\nCommand timed out`,\n exitCode: code,\n error: \"Command execution timeout\",\n executedIn: this.currentDirectory,\n });\n return;\n }\n\n resolve({\n success: code === 0,\n stdout,\n stderr,\n exitCode: code,\n executedIn: this.currentDirectory,\n });\n });\n\n child.on(\"error\", (err: Error) => {\n clearTimeout(timeout);\n resolve({\n success: false,\n stdout,\n stderr: err.message,\n exitCode: 1,\n error: \"Failed to execute command\",\n executedIn: this.currentDirectory,\n });\n });\n });\n }\n\n private async runExecProcess(opts: {\n command: string;\n workdir: string;\n env: Record<string, string>;\n usePty: boolean;\n warnings: string[];\n maxOutput: number;\n pendingMaxOutput: number;\n notifyOnExit: boolean;\n scopeKey?: string;\n sessionKey?: string;\n timeoutSec: number;\n onUpdate?: (session: ProcessSession) => void;\n }): Promise<{\n session: ProcessSession;\n startedAt: number;\n promise: Promise<{\n status: \"completed\" | \"failed\";\n exitCode: number | null;\n exitSignal: NodeJS.Signals | number | null;\n durationMs: number;\n aggregated: string;\n timedOut: boolean;\n reason?: string;\n }>;\n kill: () => void;\n }> {\n const startedAt = Date.now();\n const sessionId = createSessionSlug();\n let child: ChildProcessWithoutNullStreams | null = null;\n let pty: PtyHandle | null = null;\n let stdin: ProcessSession[\"stdin\"] | undefined;\n\n if (opts.usePty) {\n const { shell, args: shellArgs } = getShellConfig();\n try {\n const ptyModule = (await import(\"@lydell/node-pty\")) as {\n spawn?: PtySpawn;\n default?: { spawn?: PtySpawn };\n };\n const spawnPty = ptyModule.spawn ?? ptyModule.default?.spawn;\n if (!spawnPty) {\n throw new Error(\"PTY support is unavailable (node-pty spawn not found).\");\n }\n pty = spawnPty(shell, [...shellArgs, opts.command], {\n cwd: opts.workdir,\n env: opts.env,\n name: process.env.TERM ?? \"xterm-256color\",\n cols: 120,\n rows: 30,\n });\n stdin = {\n destroyed: false,\n write: (data, cb) => {\n try {\n pty?.write(data);\n cb?.(null);\n } catch (err) {\n cb?.(err as Error);\n }\n },\n end: () => {\n try {\n const eof = process.platform === \"win32\" ? \"\\x1a\" : \"\\x04\";\n pty?.write(eof);\n } catch {\n // ignore EOF errors\n }\n },\n };\n } catch (err) {\n const errText = String(err);\n const warning = `Warning: PTY spawn failed (${errText}); retrying without PTY.`;\n logger.warn(`exec: PTY spawn failed (${errText}); retrying without PTY.`);\n opts.warnings.push(warning);\n // Fall through to non-PTY execution\n }\n }\n\n if (!pty) {\n const { shell, args: shellArgs } = getShellConfig();\n const proc = spawn(shell, [...shellArgs, opts.command], {\n cwd: opts.workdir,\n env: opts.env,\n detached: process.platform !== \"win32\",\n stdio: [\"pipe\", \"pipe\", \"pipe\"],\n windowsHide: true,\n }) as ChildProcessWithoutNullStreams;\n child = proc;\n stdin = child.stdin;\n }\n\n const session: ProcessSession = {\n id: sessionId,\n command: opts.command,\n scopeKey: opts.scopeKey,\n sessionKey: opts.sessionKey,\n notifyOnExit: opts.notifyOnExit,\n exitNotified: false,\n child: child ?? undefined,\n stdin,\n pid: child?.pid ?? pty?.pid,\n startedAt,\n cwd: opts.workdir,\n maxOutputChars: opts.maxOutput,\n pendingMaxOutputChars: opts.pendingMaxOutput,\n totalOutputChars: 0,\n pendingStdout: [],\n pendingStderr: [],\n pendingStdoutChars: 0,\n pendingStderrChars: 0,\n aggregated: \"\",\n tail: \"\",\n exited: false,\n exitCode: undefined,\n exitSignal: undefined,\n truncated: false,\n backgrounded: false,\n };\n addSession(session);\n\n let settled = false;\n let timeoutTimer: NodeJS.Timeout | null = null;\n let timeoutFinalizeTimer: NodeJS.Timeout | null = null;\n let timedOut = false;\n const timeoutFinalizeMs = 1000;\n let resolveFn:\n | ((outcome: {\n status: \"completed\" | \"failed\";\n exitCode: number | null;\n exitSignal: NodeJS.Signals | number | null;\n durationMs: number;\n aggregated: string;\n timedOut: boolean;\n reason?: string;\n }) => void)\n | null = null;\n\n const settle = (outcome: {\n status: \"completed\" | \"failed\";\n exitCode: number | null;\n exitSignal: NodeJS.Signals | number | null;\n durationMs: number;\n aggregated: string;\n timedOut: boolean;\n reason?: string;\n }) => {\n if (settled) {\n return;\n }\n settled = true;\n resolveFn?.(outcome);\n };\n\n const finalizeTimeout = () => {\n if (session.exited) {\n return;\n }\n markExited(session, null, \"SIGKILL\", \"failed\");\n const aggregated = session.aggregated.trim();\n const reason = `Command timed out after ${opts.timeoutSec} seconds`;\n settle({\n status: \"failed\",\n exitCode: null,\n exitSignal: \"SIGKILL\",\n durationMs: Date.now() - startedAt,\n aggregated,\n timedOut: true,\n reason: aggregated ? `${aggregated}\\n\\n${reason}` : reason,\n });\n };\n\n const onTimeout = () => {\n timedOut = true;\n killSession(session);\n if (!timeoutFinalizeTimer) {\n timeoutFinalizeTimer = setTimeout(() => {\n finalizeTimeout();\n }, timeoutFinalizeMs);\n }\n };\n\n if (opts.timeoutSec > 0) {\n timeoutTimer = setTimeout(() => {\n onTimeout();\n }, opts.timeoutSec * 1000);\n }\n\n const emitUpdate = () => {\n if (opts.onUpdate) {\n opts.onUpdate(session);\n }\n };\n\n const handleStdout = (data: string) => {\n const str = sanitizeBinaryOutput(data.toString());\n for (const chunk of chunkString(str)) {\n appendOutput(session, \"stdout\", chunk);\n emitUpdate();\n }\n };\n\n const handleStderr = (data: string) => {\n const str = sanitizeBinaryOutput(data.toString());\n for (const chunk of chunkString(str)) {\n appendOutput(session, \"stderr\", chunk);\n emitUpdate();\n }\n };\n\n if (pty) {\n const cursorResponse = buildCursorPositionResponse();\n pty.onData((data) => {\n const raw = data.toString();\n const { cleaned, requests } = stripDsrRequests(raw);\n if (requests > 0) {\n for (let i = 0; i < requests; i += 1) {\n pty.write(cursorResponse);\n }\n }\n handleStdout(cleaned);\n });\n } else if (child) {\n child.stdout.on(\"data\", handleStdout);\n child.stderr.on(\"data\", handleStderr);\n }\n\n const promise = new Promise<{\n status: \"completed\" | \"failed\";\n exitCode: number | null;\n exitSignal: NodeJS.Signals | number | null;\n durationMs: number;\n aggregated: string;\n timedOut: boolean;\n reason?: string;\n }>((resolve) => {\n resolveFn = resolve;\n const handleExit = (code: number | null, exitSignal: NodeJS.Signals | number | null) => {\n if (timeoutTimer) {\n clearTimeout(timeoutTimer);\n }\n if (timeoutFinalizeTimer) {\n clearTimeout(timeoutFinalizeTimer);\n }\n const durationMs = Date.now() - startedAt;\n const wasSignal = exitSignal != null;\n const isSuccess = code === 0 && !wasSignal && !timedOut;\n const status: \"completed\" | \"failed\" = isSuccess ? \"completed\" : \"failed\";\n markExited(session, code, exitSignal, status);\n if (!session.child && session.stdin) {\n session.stdin.destroyed = true;\n }\n\n if (settled) {\n return;\n }\n const aggregated = session.aggregated.trim();\n if (!isSuccess) {\n const reason = timedOut\n ? `Command timed out after ${opts.timeoutSec} seconds`\n : wasSignal && exitSignal\n ? `Command aborted by signal ${exitSignal}`\n : code === null\n ? \"Command aborted before exit code was captured\"\n : `Command exited with code ${code}`;\n const message = aggregated ? `${aggregated}\\n\\n${reason}` : reason;\n settle({\n status: \"failed\",\n exitCode: code ?? null,\n exitSignal: exitSignal ?? null,\n durationMs,\n aggregated,\n timedOut,\n reason: message,\n });\n return;\n }\n settle({\n status: \"completed\",\n exitCode: code ?? 0,\n exitSignal: exitSignal ?? null,\n durationMs,\n aggregated,\n timedOut: false,\n });\n };\n\n if (pty) {\n pty.onExit((event) => {\n const rawSignal = event.signal ?? null;\n const normalizedSignal = rawSignal === 0 ? null : rawSignal;\n handleExit(event.exitCode ?? null, normalizedSignal);\n });\n } else if (child) {\n child.once(\"close\", (code, exitSignal) => {\n handleExit(code, exitSignal);\n });\n\n child.once(\"error\", (err) => {\n if (timeoutTimer) {\n clearTimeout(timeoutTimer);\n }\n if (timeoutFinalizeTimer) {\n clearTimeout(timeoutFinalizeTimer);\n }\n markExited(session, null, null, \"failed\");\n const aggregated = session.aggregated.trim();\n const message = aggregated ? `${aggregated}\\n\\n${String(err)}` : String(err);\n settle({\n status: \"failed\",\n exitCode: null,\n exitSignal: null,\n durationMs: Date.now() - startedAt,\n aggregated,\n timedOut,\n reason: message,\n });\n });\n }\n });\n\n return {\n session,\n startedAt,\n promise,\n kill: () => killSession(session),\n };\n }\n\n private addToHistory(\n conversationId: string | undefined,\n command: string,\n result: CommandResult,\n fileOperations?: FileOperation[]\n ): void {\n if (!conversationId) return;\n\n const historyEntry: CommandHistoryEntry = {\n command,\n stdout: result.stdout,\n stderr: result.stderr,\n exitCode: result.exitCode,\n timestamp: Date.now(),\n workingDirectory: result.executedIn,\n fileOperations,\n };\n\n if (!this.commandHistory.has(conversationId)) {\n this.commandHistory.set(conversationId, []);\n }\n\n const history = this.commandHistory.get(conversationId);\n if (!history) {\n throw new Error(`No history found for conversation ${conversationId}`);\n }\n history.push(historyEntry);\n\n if (history.length > this.maxHistoryPerConversation) {\n history.shift();\n }\n }\n\n private detectFileOperations(command: string, cwd: string): FileOperation[] | undefined {\n const operations: FileOperation[] = [];\n const parts = command.trim().split(/\\s+/);\n const cmd = parts[0].toLowerCase();\n\n if (cmd === \"touch\" && parts.length > 1) {\n operations.push({\n type: \"create\" as FileOperationType,\n target: this.resolvePath(parts[1], cwd),\n });\n } else if (cmd === \"echo\" && command.includes(\">\")) {\n const match = command.match(/>\\s*([^\\s]+)$/);\n if (match) {\n operations.push({\n type: \"write\" as FileOperationType,\n target: this.resolvePath(match[1], cwd),\n });\n }\n } else if (cmd === \"mkdir\" && parts.length > 1) {\n operations.push({\n type: \"mkdir\" as FileOperationType,\n target: this.resolvePath(parts[1], cwd),\n });\n } else if (cmd === \"cat\" && parts.length > 1 && !command.includes(\">\")) {\n operations.push({\n type: \"read\" as FileOperationType,\n target: this.resolvePath(parts[1], cwd),\n });\n } else if (cmd === \"mv\" && parts.length > 2) {\n operations.push({\n type: \"move\" as FileOperationType,\n target: this.resolvePath(parts[1], cwd),\n secondaryTarget: this.resolvePath(parts[2], cwd),\n });\n } else if (cmd === \"cp\" && parts.length > 2) {\n operations.push({\n type: \"copy\" as FileOperationType,\n target: this.resolvePath(parts[1], cwd),\n secondaryTarget: this.resolvePath(parts[2], cwd),\n });\n }\n\n return operations.length > 0 ? operations : undefined;\n }\n\n private resolvePath(filePath: string, cwd: string): string {\n if (path.isAbsolute(filePath)) {\n return filePath;\n }\n return path.join(cwd, filePath);\n }\n}\n",
|
|
27
27
|
"import fs from \"node:fs\";\nimport path from \"node:path\";\nimport { logger } from \"@elizaos/core\";\nimport { z } from \"zod\";\nimport type { ShellConfig } from \"../types\";\n\nconst configSchema = z.object({\n enabled: z.boolean(),\n allowedDirectory: z.string(),\n timeout: z.number().positive().default(30000),\n forbiddenCommands: z.array(z.string()),\n maxOutputChars: z.number().positive().default(200000),\n pendingMaxOutputChars: z.number().positive().default(200000),\n defaultBackgroundMs: z.number().positive().default(10000),\n allowBackground: z.boolean().default(true),\n});\n\nexport const DEFAULT_FORBIDDEN_COMMANDS: readonly string[] = [\n \"rm -rf /\",\n \"rmdir\",\n \"chmod 777\",\n \"chown\",\n \"chgrp\",\n \"shutdown\",\n \"reboot\",\n \"halt\",\n \"poweroff\",\n \"kill -9\",\n \"killall\",\n \"pkill\",\n \"sudo rm -rf\",\n \"su\",\n \"passwd\",\n \"useradd\",\n \"userdel\",\n \"groupadd\",\n \"groupdel\",\n \"format\",\n \"fdisk\",\n \"mkfs\",\n \"dd if=/dev/zero\",\n \"shred\",\n \":(){:|:&};:\",\n] as const;\n\nexport function loadShellConfig(): ShellConfig {\n const allowedDirectory = process.env.SHELL_ALLOWED_DIRECTORY || process.cwd();\n const timeout = parseInt(process.env.SHELL_TIMEOUT || \"30000\", 10);\n const maxOutputChars = parseInt(process.env.SHELL_MAX_OUTPUT_CHARS || \"200000\", 10);\n const pendingMaxOutputChars = parseInt(\n process.env.SHELL_PENDING_MAX_OUTPUT_CHARS || \"200000\",\n 10\n );\n const defaultBackgroundMs = parseInt(process.env.SHELL_BACKGROUND_MS || \"10000\", 10);\n const allowBackground = process.env.SHELL_ALLOW_BACKGROUND !== \"false\";\n\n const customForbidden = process.env.SHELL_FORBIDDEN_COMMANDS\n ? process.env.SHELL_FORBIDDEN_COMMANDS.split(\",\").map((cmd) => cmd.trim())\n : [];\n\n const forbiddenCommands = [...new Set([...DEFAULT_FORBIDDEN_COMMANDS, ...customForbidden])];\n\n const config: ShellConfig = {\n enabled: true,\n allowedDirectory,\n timeout,\n forbiddenCommands,\n maxOutputChars,\n pendingMaxOutputChars,\n defaultBackgroundMs,\n allowBackground,\n };\n\n const parseResult = configSchema.safeParse(config);\n if (!parseResult.success) {\n const errorMessage = parseResult.error.issues?.[0]?.message || parseResult.error.toString();\n throw new Error(`Shell plugin configuration error: ${errorMessage}`);\n }\n\n try {\n const stats = fs.statSync(allowedDirectory);\n if (!stats.isDirectory()) {\n throw new Error(`SHELL_ALLOWED_DIRECTORY is not a directory: ${allowedDirectory}`);\n }\n config.allowedDirectory = path.resolve(allowedDirectory);\n logger.info(\n `Shell plugin enabled with allowed directory: ${config.allowedDirectory}, ` +\n `background: ${allowBackground}, timeout: ${timeout}ms`\n );\n } catch (error) {\n if (\n error instanceof Error &&\n \"code\" in error &&\n (error as NodeJS.ErrnoException).code === \"ENOENT\"\n ) {\n throw new Error(`SHELL_ALLOWED_DIRECTORY does not exist: ${allowedDirectory}`);\n }\n throw error;\n }\n\n return config;\n}\n",
|
|
28
28
|
"import path from \"node:path\";\nimport { logger } from \"@elizaos/core\";\n\nexport function validatePath(\n commandPath: string,\n allowedDir: string,\n currentDir: string\n): string | null {\n const resolvedPath = path.resolve(currentDir, commandPath);\n const normalizedPath = path.normalize(resolvedPath);\n const normalizedAllowed = path.normalize(allowedDir);\n\n if (!normalizedPath.startsWith(normalizedAllowed)) {\n logger.warn(\n `Path validation failed: ${normalizedPath} is outside allowed directory ${normalizedAllowed}`\n );\n return null;\n }\n\n return normalizedPath;\n}\n\nexport function isSafeCommand(command: string): boolean {\n const pathTraversalPatterns = [/\\.\\.\\//g, /\\.\\.\\\\/g, /\\/\\.\\./g, /\\\\\\.\\./g];\n\n const dangerousPatterns = [/\\$\\(/g, /`[^']*`/g, /\\|\\s*sudo/g, /;\\s*sudo/g, /&\\s*&/g, /\\|\\s*\\|/g];\n\n for (const pattern of pathTraversalPatterns) {\n if (pattern.test(command)) {\n logger.warn(`Path traversal detected in command: ${command}`);\n return false;\n }\n }\n\n for (const pattern of dangerousPatterns) {\n if (pattern.test(command)) {\n logger.warn(`Dangerous pattern detected in command: ${command}`);\n return false;\n }\n }\n\n const pipeCount = (command.match(/\\|/g) || []).length;\n if (pipeCount > 1) {\n logger.warn(`Multiple pipes detected in command: ${command}`);\n return false;\n }\n\n return true;\n}\n\nexport function extractBaseCommand(fullCommand: string): string {\n const parts = fullCommand.trim().split(/\\s+/);\n return parts[0] || \"\";\n}\n\nexport function isForbiddenCommand(command: string, forbiddenCommands: string[]): boolean {\n const normalizedCommand = command.trim().toLowerCase();\n\n return forbiddenCommands.some((forbidden) => {\n const forbiddenLower = forbidden.toLowerCase();\n\n if (normalizedCommand.startsWith(forbiddenLower)) {\n return true;\n }\n\n if (!forbidden.includes(\" \")) {\n const baseCommand = extractBaseCommand(command);\n if (baseCommand.toLowerCase() === forbiddenLower) {\n return true;\n }\n }\n\n return false;\n });\n}\n",
|
|
29
29
|
"/**\n * PTY Key Encoding - Terminal key sequence encoding utilities\n * Ported from otto pty-keys.ts and pty-dsr.ts\n */\n\nconst ESC = \"\\x1b\";\nconst CR = \"\\r\";\nconst TAB = \"\\t\";\nconst BACKSPACE = \"\\x7f\";\n\nexport const BRACKETED_PASTE_START = `${ESC}[200~`;\nexport const BRACKETED_PASTE_END = `${ESC}[201~`;\n\ntype Modifiers = {\n ctrl: boolean;\n alt: boolean;\n shift: boolean;\n};\n\nfunction escapeRegExp(value: string): string {\n return value.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\n\nconst namedKeyMap = new Map<string, string>([\n [\"enter\", CR],\n [\"return\", CR],\n [\"tab\", TAB],\n [\"escape\", ESC],\n [\"esc\", ESC],\n [\"space\", \" \"],\n [\"bspace\", BACKSPACE],\n [\"backspace\", BACKSPACE],\n [\"up\", `${ESC}[A`],\n [\"down\", `${ESC}[B`],\n [\"right\", `${ESC}[C`],\n [\"left\", `${ESC}[D`],\n [\"home\", `${ESC}[1~`],\n [\"end\", `${ESC}[4~`],\n [\"pageup\", `${ESC}[5~`],\n [\"pgup\", `${ESC}[5~`],\n [\"ppage\", `${ESC}[5~`],\n [\"pagedown\", `${ESC}[6~`],\n [\"pgdn\", `${ESC}[6~`],\n [\"npage\", `${ESC}[6~`],\n [\"insert\", `${ESC}[2~`],\n [\"ic\", `${ESC}[2~`],\n [\"delete\", `${ESC}[3~`],\n [\"del\", `${ESC}[3~`],\n [\"dc\", `${ESC}[3~`],\n [\"btab\", `${ESC}[Z`],\n [\"f1\", `${ESC}OP`],\n [\"f2\", `${ESC}OQ`],\n [\"f3\", `${ESC}OR`],\n [\"f4\", `${ESC}OS`],\n [\"f5\", `${ESC}[15~`],\n [\"f6\", `${ESC}[17~`],\n [\"f7\", `${ESC}[18~`],\n [\"f8\", `${ESC}[19~`],\n [\"f9\", `${ESC}[20~`],\n [\"f10\", `${ESC}[21~`],\n [\"f11\", `${ESC}[23~`],\n [\"f12\", `${ESC}[24~`],\n [\"kp/\", `${ESC}Oo`],\n [\"kp*\", `${ESC}Oj`],\n [\"kp-\", `${ESC}Om`],\n [\"kp+\", `${ESC}Ok`],\n [\"kp7\", `${ESC}Ow`],\n [\"kp8\", `${ESC}Ox`],\n [\"kp9\", `${ESC}Oy`],\n [\"kp4\", `${ESC}Ot`],\n [\"kp5\", `${ESC}Ou`],\n [\"kp6\", `${ESC}Ov`],\n [\"kp1\", `${ESC}Oq`],\n [\"kp2\", `${ESC}Or`],\n [\"kp3\", `${ESC}Os`],\n [\"kp0\", `${ESC}Op`],\n [\"kp.\", `${ESC}On`],\n [\"kpenter\", `${ESC}OM`],\n]);\n\nconst modifiableNamedKeys = new Set([\n \"up\",\n \"down\",\n \"left\",\n \"right\",\n \"home\",\n \"end\",\n \"pageup\",\n \"pgup\",\n \"ppage\",\n \"pagedown\",\n \"pgdn\",\n \"npage\",\n \"insert\",\n \"ic\",\n \"delete\",\n \"del\",\n \"dc\",\n]);\n\nexport type KeyEncodingRequest = {\n keys?: string[];\n hex?: string[];\n literal?: string;\n};\n\nexport type KeyEncodingResult = {\n data: string;\n warnings: string[];\n};\n\nexport function encodeKeySequence(request: KeyEncodingRequest): KeyEncodingResult {\n const warnings: string[] = [];\n let data = \"\";\n\n if (request.literal) {\n data += request.literal;\n }\n\n if (request.hex?.length) {\n for (const raw of request.hex) {\n const byte = parseHexByte(raw);\n if (byte === null) {\n warnings.push(`Invalid hex byte: ${raw}`);\n continue;\n }\n data += String.fromCharCode(byte);\n }\n }\n\n if (request.keys?.length) {\n for (const token of request.keys) {\n data += encodeKeyToken(token, warnings);\n }\n }\n\n return { data, warnings };\n}\n\nexport function encodePaste(text: string, bracketed = true): string {\n if (!bracketed) {\n return text;\n }\n return `${BRACKETED_PASTE_START}${text}${BRACKETED_PASTE_END}`;\n}\n\nfunction encodeKeyToken(raw: string, warnings: string[]): string {\n const token = raw.trim();\n if (!token) {\n return \"\";\n }\n\n if (token.length === 2 && token.startsWith(\"^\")) {\n const ctrl = toCtrlChar(token[1]);\n if (ctrl) {\n return ctrl;\n }\n }\n\n const parsed = parseModifiers(token);\n const base = parsed.base;\n const baseLower = base.toLowerCase();\n\n if (baseLower === \"tab\" && parsed.mods.shift) {\n return `${ESC}[Z`;\n }\n\n const baseSeq = namedKeyMap.get(baseLower);\n if (baseSeq) {\n let seq = baseSeq;\n if (modifiableNamedKeys.has(baseLower) && hasAnyModifier(parsed.mods)) {\n const mod = xtermModifier(parsed.mods);\n if (mod > 1) {\n const modified = applyXtermModifier(seq, mod);\n if (modified) {\n seq = modified;\n return seq;\n }\n }\n }\n if (parsed.mods.alt) {\n return `${ESC}${seq}`;\n }\n return seq;\n }\n\n if (base.length === 1) {\n return applyCharModifiers(base, parsed.mods);\n }\n\n if (parsed.hasModifiers) {\n warnings.push(`Unknown key \"${base}\" for modifiers; sending literal.`);\n }\n return base;\n}\n\nfunction parseModifiers(token: string): {\n mods: Modifiers;\n base: string;\n hasModifiers: boolean;\n} {\n const mods: Modifiers = { ctrl: false, alt: false, shift: false };\n let rest = token;\n let sawModifiers = false;\n\n while (rest.length > 2 && rest[1] === \"-\") {\n const mod = rest[0].toLowerCase();\n if (mod === \"c\") {\n mods.ctrl = true;\n } else if (mod === \"m\") {\n mods.alt = true;\n } else if (mod === \"s\") {\n mods.shift = true;\n } else {\n break;\n }\n sawModifiers = true;\n rest = rest.slice(2);\n }\n\n return { mods, base: rest, hasModifiers: sawModifiers };\n}\n\nfunction applyCharModifiers(char: string, mods: Modifiers): string {\n let value = char;\n if (mods.shift && value.length === 1 && /[a-z]/.test(value)) {\n value = value.toUpperCase();\n }\n if (mods.ctrl) {\n const ctrl = toCtrlChar(value);\n if (ctrl) {\n value = ctrl;\n }\n }\n if (mods.alt) {\n value = `${ESC}${value}`;\n }\n return value;\n}\n\nfunction toCtrlChar(char: string): string | null {\n if (char.length !== 1) {\n return null;\n }\n if (char === \"?\") {\n return \"\\x7f\";\n }\n const code = char.toUpperCase().charCodeAt(0);\n if (code >= 64 && code <= 95) {\n return String.fromCharCode(code & 0x1f);\n }\n return null;\n}\n\nfunction xtermModifier(mods: Modifiers): number {\n let mod = 1;\n if (mods.shift) {\n mod += 1;\n }\n if (mods.alt) {\n mod += 2;\n }\n if (mods.ctrl) {\n mod += 4;\n }\n return mod;\n}\n\nfunction applyXtermModifier(sequence: string, modifier: number): string | null {\n const escPattern = escapeRegExp(ESC);\n const csiNumber = new RegExp(`^${escPattern}\\\\[(\\\\d+)([~A-Z])$`);\n const csiArrow = new RegExp(`^${escPattern}\\\\[(A|B|C|D|H|F)$`);\n\n const numberMatch = sequence.match(csiNumber);\n if (numberMatch) {\n return `${ESC}[${numberMatch[1]};${modifier}${numberMatch[2]}`;\n }\n\n const arrowMatch = sequence.match(csiArrow);\n if (arrowMatch) {\n return `${ESC}[1;${modifier}${arrowMatch[1]}`;\n }\n\n return null;\n}\n\nfunction hasAnyModifier(mods: Modifiers): boolean {\n return mods.ctrl || mods.alt || mods.shift;\n}\n\nfunction parseHexByte(raw: string): number | null {\n const trimmed = raw.trim().toLowerCase();\n const normalized = trimmed.startsWith(\"0x\") ? trimmed.slice(2) : trimmed;\n if (!/^[0-9a-f]{1,2}$/.test(normalized)) {\n return null;\n }\n const value = Number.parseInt(normalized, 16);\n if (Number.isNaN(value) || value < 0 || value > 0xff) {\n return null;\n }\n return value;\n}\n\n// DSR (Device Status Report) handling\nconst DSR_PATTERN = new RegExp(`${ESC}\\\\[\\\\??6n`, \"g\");\n\nexport function stripDsrRequests(input: string): { cleaned: string; requests: number } {\n let requests = 0;\n const cleaned = input.replace(DSR_PATTERN, () => {\n requests += 1;\n return \"\";\n });\n return { cleaned, requests };\n}\n\nexport function buildCursorPositionResponse(row = 1, col = 1): string {\n return `\\x1b[${row};${col}R`;\n}\n",
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
"/**\n * Process Registry - Manages running and finished shell sessions\n * Ported from otto bash-process-registry.ts\n */\n\nimport type { FinishedSession, ProcessSession, ProcessStatus } from \"../types\";\n\nconst DEFAULT_JOB_TTL_MS = 30 * 60 * 1000; // 30 minutes\nconst MIN_JOB_TTL_MS = 60 * 1000; // 1 minute\nconst MAX_JOB_TTL_MS = 3 * 60 * 60 * 1000; // 3 hours\nconst DEFAULT_PENDING_OUTPUT_CHARS = 30_000;\n\nfunction clampTtl(value: number | undefined): number {\n if (!value || Number.isNaN(value)) {\n return DEFAULT_JOB_TTL_MS;\n }\n return Math.min(Math.max(value, MIN_JOB_TTL_MS), MAX_JOB_TTL_MS);\n}\n\nlet jobTtlMs = clampTtl(Number.parseInt(process.env.SHELL_JOB_TTL_MS ?? \"\", 10));\n\nconst runningSessions = new Map<string, ProcessSession>();\nconst finishedSessions = new Map<string, FinishedSession>();\n\nlet sweeper: NodeJS.Timeout | null = null;\n\nfunction isSessionIdTaken(id: string): boolean {\n return runningSessions.has(id) || finishedSessions.has(id);\n}\n\n// Session slug generation\nconst SLUG_ADJECTIVES = [\n \"amber\",\n \"briny\",\n \"brisk\",\n \"calm\",\n \"clear\",\n \"cool\",\n \"crisp\",\n \"dawn\",\n \"delta\",\n \"ember\",\n \"faint\",\n \"fast\",\n \"fresh\",\n \"gentle\",\n \"glow\",\n \"good\",\n \"grand\",\n \"keen\",\n \"kind\",\n \"lucky\",\n \"marine\",\n \"mellow\",\n \"mild\",\n \"neat\",\n \"nimble\",\n \"nova\",\n \"oceanic\",\n \"plaid\",\n \"quick\",\n \"quiet\",\n \"rapid\",\n \"salty\",\n \"sharp\",\n \"swift\",\n \"tender\",\n \"tidal\",\n \"tidy\",\n \"tide\",\n \"vivid\",\n \"warm\",\n \"wild\",\n \"young\",\n];\n\nconst SLUG_NOUNS = [\n \"atlas\",\n \"basil\",\n \"bison\",\n \"bloom\",\n \"breeze\",\n \"canyon\",\n \"cedar\",\n \"claw\",\n \"cloud\",\n \"comet\",\n \"coral\",\n \"cove\",\n \"crest\",\n \"daisy\",\n \"dune\",\n \"ember\",\n \"falcon\",\n \"fjord\",\n \"forest\",\n \"glade\",\n \"gulf\",\n \"harbor\",\n \"haven\",\n \"kelp\",\n \"lagoon\",\n \"meadow\",\n \"mist\",\n \"nexus\",\n \"ocean\",\n \"orbit\",\n \"otter\",\n \"pine\",\n \"prairie\",\n \"reef\",\n \"ridge\",\n \"river\",\n \"rook\",\n \"sable\",\n \"sage\",\n \"shell\",\n \"shoal\",\n \"shore\",\n \"slug\",\n \"summit\",\n \"trail\",\n \"valley\",\n \"wharf\",\n \"willow\",\n \"zephyr\",\n];\n\nfunction randomChoice(values: string[], fallback: string): string {\n return values[Math.floor(Math.random() * values.length)] ?? fallback;\n}\n\nfunction createSlugBase(words = 2): string {\n const parts = [randomChoice(SLUG_ADJECTIVES, \"steady\"), randomChoice(SLUG_NOUNS, \"harbor\")];\n if (words > 2) {\n parts.push(randomChoice(SLUG_NOUNS, \"reef\"));\n }\n return parts.join(\"-\");\n}\n\nexport function createSessionSlug(isTaken?: (id: string) => boolean): string {\n const isIdTaken = isTaken ?? isSessionIdTaken;\n for (let attempt = 0; attempt < 12; attempt += 1) {\n const base = createSlugBase(2);\n if (!isIdTaken(base)) {\n return base;\n }\n for (let i = 2; i <= 12; i += 1) {\n const candidate = `${base}-${i}`;\n if (!isIdTaken(candidate)) {\n return candidate;\n }\n }\n }\n for (let attempt = 0; attempt < 12; attempt += 1) {\n const base = createSlugBase(3);\n if (!isIdTaken(base)) {\n return base;\n }\n for (let i = 2; i <= 12; i += 1) {\n const candidate = `${base}-${i}`;\n if (!isIdTaken(candidate)) {\n return candidate;\n }\n }\n }\n const fallback = `${createSlugBase(3)}-${Math.random().toString(36).slice(2, 5)}`;\n return isIdTaken(fallback) ? `${fallback}-${Date.now().toString(36)}` : fallback;\n}\n\nexport function addSession(session: ProcessSession): void {\n runningSessions.set(session.id, session);\n startSweeper();\n}\n\nexport function getSession(id: string): ProcessSession | undefined {\n return runningSessions.get(id);\n}\n\nexport function getFinishedSession(id: string): FinishedSession | undefined {\n return finishedSessions.get(id);\n}\n\nexport function deleteSession(id: string): void {\n runningSessions.delete(id);\n finishedSessions.delete(id);\n}\n\nfunction sumPendingChars(buffer: string[]): number {\n let total = 0;\n for (const chunk of buffer) {\n total += chunk.length;\n }\n return total;\n}\n\nfunction capPendingBuffer(buffer: string[], pendingChars: number, cap: number): number {\n if (pendingChars <= cap) {\n return pendingChars;\n }\n const last = buffer.at(-1);\n if (last && last.length >= cap) {\n buffer.length = 0;\n buffer.push(last.slice(last.length - cap));\n return cap;\n }\n while (buffer.length && pendingChars - buffer[0].length >= cap) {\n pendingChars -= buffer[0].length;\n buffer.shift();\n }\n if (buffer.length && pendingChars > cap) {\n const overflow = pendingChars - cap;\n buffer[0] = buffer[0].slice(overflow);\n pendingChars = cap;\n }\n return pendingChars;\n}\n\nexport function tail(text: string, max = 2000): string {\n if (text.length <= max) {\n return text;\n }\n return text.slice(text.length - max);\n}\n\nexport function trimWithCap(text: string, max: number): string {\n if (text.length <= max) {\n return text;\n }\n return text.slice(text.length - max);\n}\n\nexport function appendOutput(\n session: ProcessSession,\n stream: \"stdout\" | \"stderr\",\n chunk: string\n): void {\n session.pendingStdout ??= [];\n session.pendingStderr ??= [];\n session.pendingStdoutChars ??= sumPendingChars(session.pendingStdout);\n session.pendingStderrChars ??= sumPendingChars(session.pendingStderr);\n const buffer = stream === \"stdout\" ? session.pendingStdout : session.pendingStderr;\n const bufferChars = stream === \"stdout\" ? session.pendingStdoutChars : session.pendingStderrChars;\n const pendingCap = Math.min(\n session.pendingMaxOutputChars ?? DEFAULT_PENDING_OUTPUT_CHARS,\n session.maxOutputChars\n );\n buffer.push(chunk);\n let pendingChars = bufferChars + chunk.length;\n if (pendingChars > pendingCap) {\n session.truncated = true;\n pendingChars = capPendingBuffer(buffer, pendingChars, pendingCap);\n }\n if (stream === \"stdout\") {\n session.pendingStdoutChars = pendingChars;\n } else {\n session.pendingStderrChars = pendingChars;\n }\n session.totalOutputChars += chunk.length;\n const aggregated = trimWithCap(session.aggregated + chunk, session.maxOutputChars);\n session.truncated =\n session.truncated || aggregated.length < session.aggregated.length + chunk.length;\n session.aggregated = aggregated;\n session.tail = tail(session.aggregated, 2000);\n}\n\nexport function drainSession(session: ProcessSession): { stdout: string; stderr: string } {\n const stdout = session.pendingStdout.join(\"\");\n const stderr = session.pendingStderr.join(\"\");\n session.pendingStdout = [];\n session.pendingStderr = [];\n session.pendingStdoutChars = 0;\n session.pendingStderrChars = 0;\n return { stdout, stderr };\n}\n\nfunction moveToFinished(session: ProcessSession, status: ProcessStatus): void {\n runningSessions.delete(session.id);\n if (!session.backgrounded) {\n return;\n }\n finishedSessions.set(session.id, {\n id: session.id,\n command: session.command,\n scopeKey: session.scopeKey,\n startedAt: session.startedAt,\n endedAt: Date.now(),\n cwd: session.cwd,\n status,\n exitCode: session.exitCode,\n exitSignal: session.exitSignal,\n aggregated: session.aggregated,\n tail: session.tail,\n truncated: session.truncated,\n totalOutputChars: session.totalOutputChars,\n });\n}\n\nexport function markExited(\n session: ProcessSession,\n exitCode: number | null,\n exitSignal: NodeJS.Signals | number | null,\n status: ProcessStatus\n): void {\n session.exited = true;\n session.exitCode = exitCode;\n session.exitSignal = exitSignal;\n session.tail = tail(session.aggregated, 2000);\n moveToFinished(session, status);\n}\n\nexport function markBackgrounded(session: ProcessSession): void {\n session.backgrounded = true;\n}\n\nexport function listRunningSessions(): ProcessSession[] {\n return Array.from(runningSessions.values()).filter((s) => s.backgrounded);\n}\n\nexport function listFinishedSessions(): FinishedSession[] {\n return Array.from(finishedSessions.values());\n}\n\nexport function clearFinished(): void {\n finishedSessions.clear();\n}\n\nexport function resetProcessRegistryForTests(): void {\n runningSessions.clear();\n finishedSessions.clear();\n stopSweeper();\n}\n\nexport function setJobTtlMs(value?: number): void {\n if (value === undefined || Number.isNaN(value)) {\n return;\n }\n jobTtlMs = clampTtl(value);\n stopSweeper();\n startSweeper();\n}\n\nfunction pruneFinishedSessions(): void {\n const cutoff = Date.now() - jobTtlMs;\n for (const [id, session] of finishedSessions.entries()) {\n if (session.endedAt < cutoff) {\n finishedSessions.delete(id);\n }\n }\n}\n\nfunction startSweeper(): void {\n if (sweeper) {\n return;\n }\n sweeper = setInterval(pruneFinishedSessions, Math.max(30_000, jobTtlMs / 6));\n sweeper.unref?.();\n}\n\nfunction stopSweeper(): void {\n if (!sweeper) {\n return;\n }\n clearInterval(sweeper);\n sweeper = null;\n}\n",
|
|
32
32
|
"import type { Plugin } from \"@elizaos/core\";\nimport { clearHistory, executeCommand, processAction } from \"./actions\";\nimport { ExecApprovalService } from \"./approvals\";\nimport { shellHistoryProvider } from \"./providers\";\nimport { ShellService } from \"./services/shellService\";\n\nexport const shellPlugin: Plugin = {\n name: \"shell\",\n description:\n \"Execute shell commands with PTY support, background execution, session management, and approval workflows\",\n services: [ShellService, ExecApprovalService],\n actions: [executeCommand, clearHistory, processAction],\n providers: [shellHistoryProvider],\n};\n\nexport default shellPlugin;\n\n// Actions\nexport { clearHistory } from \"./actions/clearHistory\";\nexport { executeCommand } from \"./actions/executeCommand\";\nexport { processAction } from \"./actions/processAction\";\n\n// Approvals\nexport {\n addAllowlistEntry,\n analyzeShellCommand,\n type CommandCheckResult,\n type CommandResolution,\n DEFAULT_SAFE_BINS,\n EXEC_APPROVAL_DEFAULTS,\n type ExecAllowlistAnalysis,\n type ExecAllowlistEntry,\n type ExecAllowlistEvaluation,\n type ExecApprovalDecision,\n type ExecApprovalRequest,\n type ExecApprovalResult,\n ExecApprovalService,\n type ExecApprovalsAgent,\n type ExecApprovalsDefaults,\n type ExecApprovalsFile,\n type ExecApprovalsResolved,\n type ExecApprovalsSnapshot,\n type ExecAsk,\n type ExecCommandAnalysis,\n type ExecCommandSegment,\n type ExecHost,\n type ExecSecurity,\n ensureApprovals,\n evaluateExecAllowlist,\n evaluateShellAllowlist,\n getApprovalFilePath,\n getApprovalSocketPath,\n isSafeBinUsage,\n loadApprovals,\n matchAllowlist,\n maxAsk,\n minSecurity,\n normalizeApprovals,\n normalizeSafeBins,\n readApprovalsSnapshot,\n recordAllowlistUse,\n requiresExecApproval,\n resolveApprovals,\n resolveApprovalsFromFile,\n resolveCommandFromArgv,\n resolveCommandResolution,\n resolveSafeBins,\n saveApprovals,\n} from \"./approvals\";\n\n// Providers\nexport { shellHistoryProvider } from \"./providers/shellHistoryProvider\";\nexport {\n addSession,\n appendOutput,\n clearFinished,\n createSessionSlug,\n deleteSession,\n drainSession,\n getFinishedSession,\n getSession,\n listFinishedSessions,\n listRunningSessions,\n markBackgrounded,\n markExited,\n resetProcessRegistryForTests,\n setJobTtlMs,\n tail,\n trimWithCap,\n} from \"./services/processRegistry\";\n// Services\nexport { ShellService } from \"./services/shellService\";\n\n// Types\nexport type {\n CommandHistoryEntry,\n CommandResult,\n ExecResult,\n ExecuteOptions,\n FileOperation,\n FileOperationType,\n FinishedSession,\n ProcessAction,\n ProcessActionParams,\n ProcessSession,\n ProcessStatus,\n PtyExitEvent,\n PtyHandle,\n PtyListener,\n PtySpawn,\n SessionStdin,\n ShellConfig,\n} from \"./types\";\n\n// Utilities\nexport {\n DEFAULT_FORBIDDEN_COMMANDS,\n extractBaseCommand,\n isForbiddenCommand,\n isSafeCommand,\n loadShellConfig,\n validatePath,\n} from \"./utils\";\nexport {\n BRACKETED_PASTE_END,\n BRACKETED_PASTE_START,\n buildCursorPositionResponse,\n encodeKeySequence,\n encodePaste,\n type KeyEncodingRequest,\n type KeyEncodingResult,\n stripDsrRequests,\n} from \"./utils/ptyKeys\";\nexport {\n chunkString,\n clampNumber,\n coerceEnv,\n deriveSessionName,\n formatDuration,\n formatSpawnError,\n getShellConfig,\n killProcessTree,\n killSession,\n pad,\n readEnvInt,\n resolveWorkdir,\n type SpawnFallback,\n type SpawnWithFallbackResult,\n sanitizeBinaryOutput,\n sliceLogLines,\n sliceUtf16Safe,\n spawnWithFallback,\n truncateMiddle,\n} from \"./utils/shellUtils\";\n"
|
|
33
33
|
],
|
|
34
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;EAIA,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EAC5D,IAAI,gBAA+B,QAAS,GAAG;AAAA,IAC3C,SAAS,cAAa,GAAG;AAAA,MACrB,KAAK,aAAa,CAAC;AAAA;AAAA,IAEvB,OAAO,eAAe,eAAc,WAAW,SAAS;AAAA,MACpD,KAAK,QAAS,GAAG;AAAA,QACb,IAAI,QAAQ;AAAA,QACZ,IAAI,CAAC,KAAK,QAAQ;AAAA,UACd,KAAK,SAAS,QAAS,CAAC,UAAU;AAAA,YAC9B,MAAM,WAAW,KAAK,QAAQ;AAAA,YAC9B,IAAI,aAAa;AAAA,cACb,SAAS,QAAS,GAAG;AAAA,gBACjB,SAAS,IAAI,EAAG,IAAI,MAAM,WAAW,QAAQ,KAAK;AAAA,kBAC9C,IAAI,MAAM,WAAW,OAAO,UAAU;AAAA,oBAClC,MAAM,WAAW,OAAO,GAAG,CAAC;AAAA,oBAC5B;AAAA,kBACJ;AAAA,gBACJ;AAAA;AAAA,YAER;AAAA,YACA,OAAO;AAAA;AAAA,QAEf;AAAA,QACA,OAAO,KAAK;AAAA;AAAA,MAEhB,YAAY;AAAA,MACZ,cAAc;AAAA,IAClB,CAAC;AAAA,IACD,eAAc,UAAU,OAAO,QAAS,CAAC,MAAM;AAAA,MAC3C,IAAI,QAAQ,CAAC;AAAA,MACb,SAAS,IAAI,EAAG,IAAI,KAAK,WAAW,QAAQ,KAAK;AAAA,QAC7C,MAAM,KAAK,KAAK,WAAW,EAAE;AAAA,MACjC;AAAA,MACA,SAAS,IAAI,EAAG,IAAI,MAAM,QAAQ,KAAK;AAAA,QACnC,MAAM,GAAG,KAAK,WAAW,IAAI;AAAA,MACjC;AAAA;AAAA,IAEJ,OAAO;AAAA,IACT;AAAA,EACM,wBAAgB;AAAA;;;;ECtCxB,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EAC5D,IAAI;AAAA,EACJ,IAAI;AAAA,EACI,uBAAe;AAAA,EACf,uBAAe;AAAA,EAMvB,IAAI,qBAAqB;AAAA,EACzB,IAAI,sBAAsB;AAAA,EAC1B,IAAI,WAA0B,QAAS,GAAG;AAAA,IACtC,SAAS,SAAQ,CAAC,KAAK;AAAA,MACnB,KAAK,OAAO;AAAA,MACZ,KAAK,MAAM;AAAA,MACX,KAAK,QAAQ;AAAA,MACb,KAAK,QAAQ;AAAA,MACb,KAAK,YAAY;AAAA,MACjB,KAAK,YAAY;AAAA,MACjB,KAAK,UAAU,IAAI,gBAAgB;AAAA,MACnC,KAAK,UAAU,IAAI,gBAAgB;AAAA,MAEnC,KAAK,cAAc,IAAI,SAAS;AAAA,MAEhC,KAAK,oBAAoB,CAAC,EAAE,QAAQ,QAAQ,QAAa,YAAS,YAAI,IAAI;AAAA,MAC1E,KAAK,qBAAqB,QAAQ,QAAQ,QAAa,YAAS,YAAI,IAAI,qBAAqB;AAAA,MAC7F,KAAK,sBAAsB,QAAQ,QAAQ,QAAa,YAAS,YAAI,IAAI,sBAAsB;AAAA,MAC/F,IAAI,CAAC,KAAK;AAAA,QACN;AAAA,MACJ;AAAA,MAGA,KAAK,WAAW,QAAQ,IAAI,OAAO,IAAI,OAAO,WAAW,QAAQ;AAAA,MACjE,KAAK,WAAW,QAAQ,IAAI,OAAO,IAAI,OAAO,WAAW,QAAQ;AAAA,MACjE,KAAK,WAAW,QAAQ,IAAI,OAAO,IAAI,OAAO,WAAW,QAAQ;AAAA,MACjE,KAAK,WAAW,OAAO,IAAI,MAAM,IAAI,MAAM,WAAW,QAAQ;AAAA,MAC9D,KAAK,WAAW,OAAO,IAAI,MAAM,IAAI,MAAM,WAAW,QAAQ;AAAA,MAC9D,KAAK,WAAW,OAAO,IAAI,MAAM,IAAI,MAAM,WAAW,QAAQ;AAAA,MAC9D,KAAK,WAAW,OAAO,IAAI,MAAM,IAAI,MAAM,WAAW,QAAQ;AAAA,MAC9D,KAAK,WAAW,YAAY,IAAI,WAAW,IAAI,WAAW,WAAW,QAAQ;AAAA;AAAA,IAEjF,OAAO,eAAe,UAAS,WAAW,UAAU;AAAA,MAChD,KAAK,QAAS,GAAG;AAAA,QAAE,OAAO,KAAK,QAAQ;AAAA;AAAA,MACvC,YAAY;AAAA,MACZ,cAAc;AAAA,IAClB,CAAC;AAAA,IACD,OAAO,eAAe,UAAS,WAAW,UAAU;AAAA,MAChD,KAAK,QAAS,GAAG;AAAA,QAAE,OAAO,KAAK,QAAQ;AAAA;AAAA,MACvC,YAAY;AAAA,MACZ,cAAc;AAAA,IAClB,CAAC;AAAA,IACD,OAAO,eAAe,UAAS,WAAW,OAAO;AAAA,MAC7C,KAAK,QAAS,GAAG;AAAA,QAAE,OAAO,KAAK;AAAA;AAAA,MAC/B,YAAY;AAAA,MACZ,cAAc;AAAA,IAClB,CAAC;AAAA,IACD,OAAO,eAAe,UAAS,WAAW,QAAQ;AAAA,MAC9C,KAAK,QAAS,GAAG;AAAA,QAAE,OAAO,KAAK;AAAA;AAAA,MAC/B,YAAY;AAAA,MACZ,cAAc;AAAA,IAClB,CAAC;AAAA,IACD,OAAO,eAAe,UAAS,WAAW,QAAQ;AAAA,MAC9C,KAAK,QAAS,GAAG;AAAA,QAAE,OAAO,KAAK;AAAA;AAAA,MAC/B,YAAY;AAAA,MACZ,cAAc;AAAA,IAClB,CAAC;AAAA,IACD,UAAS,UAAU,QAAQ,QAAS,CAAC,MAAM;AAAA,MACvC,IAAI,KAAK,mBAAmB;AAAA,QAExB,IAAI,SAAS,KAAK,mBAAmB;AAAA,UACjC,KAAK,MAAM;AAAA,UACX;AAAA,QACJ;AAAA,QACA,IAAI,SAAS,KAAK,oBAAoB;AAAA,UAClC,KAAK,OAAO;AAAA,UACZ;AAAA,QACJ;AAAA,MACJ;AAAA,MAEA,KAAK,OAAO,IAAI;AAAA;AAAA,IAEpB,UAAS,UAAU,iBAAiB,QAAS,GAAG;AAAA,MAC5C,IAAI,QAAQ;AAAA,MACZ,KAAK,GAAG,QAAQ,QAAS,CAAC,GAAG;AAAA,QAAE,OAAO,MAAM,QAAQ,KAAK,CAAC;AAAA,OAAI;AAAA,MAC9D,KAAK,GAAG,QAAQ,QAAS,CAAC,UAAU,QAAQ;AAAA,QAAE,OAAO,MAAM,QAAQ,KAAK,EAAE,UAAoB,OAAe,CAAC;AAAA,OAAI;AAAA;AAAA,IAEtH,UAAS,UAAU,aAAa,QAAS,CAAC,MAAM,OAAO,MAAM,YAAY;AAAA,MACrE,IAAI,eAAoB,WAAG;AAAA,QAAE,aAAa;AAAA,MAAO;AAAA,MACjD,IAAI,UAAU,WAAW;AAAA,QACrB;AAAA,MACJ;AAAA,MACA,IAAI,YAAY;AAAA,QACZ,IAAI,MAAM,QAAQ,KAAK,GAAG;AAAA,UACtB,MAAM,QAAQ,QAAS,CAAC,GAAG,GAAG;AAAA,YAC1B,IAAI,OAAO,MAAM,MAAM;AAAA,cACnB,MAAM,IAAI,MAAM,OAAO,MAAM,IAAI,iBAAiB,OAAO,aAAa,OAAO,EAAE,KAAK,GAAG;AAAA,YAC3F;AAAA,WACH;AAAA,UACD;AAAA,QACJ;AAAA,MACJ;AAAA,MACA,IAAI,OAAO,UAAU,MAAM;AAAA,QACvB,MAAM,IAAI,MAAM,OAAO,gBAAgB,OAAO,aAAa,OAAO,QAAQ,GAAG;AAAA,MACjF;AAAA;AAAA,IAGJ,UAAS,UAAU,MAAM,QAAS,CAAC,MAAM;AAAA,MACrC,KAAK,QAAQ,IAAI,IAAI;AAAA;AAAA,IAGzB,UAAS,UAAU,OAAO,QAAS,CAAC,MAAM,SAAS;AAAA,MAC/C,OAAO,KAAK,QAAQ,KAAK,MAAM,OAAO;AAAA;AAAA,IAG1C,UAAS,UAAU,QAAQ,QAAS,GAAG;AAAA,MACnC,OAAO,KAAK,QAAQ,MAAM;AAAA;AAAA,IAG9B,UAAS,UAAU,SAAS,QAAS,GAAG;AAAA,MACpC,OAAO,KAAK,QAAQ,OAAO;AAAA;AAAA,IAG/B,UAAS,UAAU,cAAc,QAAS,CAAC,UAAU;AAAA,MACjD,IAAI,KAAK,QAAQ,UAAU;AAAA,QACvB,OAAO,KAAK,QAAQ;AAAA,MACxB;AAAA,MACA,IAAI,UAAU;AAAA,QACV,KAAK,QAAQ,YAAY,QAAQ;AAAA,MACrC;AAAA;AAAA,IAEJ,UAAS,UAAU,cAAc,QAAS,CAAC,WAAW,UAAU;AAAA,MAAE,KAAK,GAAG,WAAW,QAAQ;AAAA;AAAA,IAC7F,UAAS,UAAU,KAAK,QAAS,CAAC,WAAW,UAAU;AAAA,MACnD,IAAI,cAAc,SAAS;AAAA,QACvB,KAAK,YAAY,GAAG,SAAS,QAAQ;AAAA,QACrC;AAAA,MACJ;AAAA,MACA,KAAK,QAAQ,GAAG,WAAW,QAAQ;AAAA;AAAA,IAEvC,UAAS,UAAU,OAAO,QAAS,CAAC,WAAW;AAAA,MAC3C,IAAI,OAAO,CAAC;AAAA,MACZ,SAAS,KAAK,EAAG,KAAK,UAAU,QAAQ,MAAM;AAAA,QAC1C,KAAK,KAAK,KAAK,UAAU;AAAA,MAC7B;AAAA,MACA,IAAI,cAAc,SAAS;AAAA,QACvB,OAAO,KAAK,YAAY,KAAK,MAAM,KAAK,aAAa,SAAS;AAAA,MAClE;AAAA,MACA,OAAO,KAAK,QAAQ,KAAK,MAAM,KAAK,SAAS,SAAS;AAAA;AAAA,IAE1D,UAAS,UAAU,YAAY,QAAS,CAAC,WAAW;AAAA,MAChD,OAAO,KAAK,QAAQ,UAAU,SAAS;AAAA;AAAA,IAE3C,UAAS,UAAU,iBAAiB,QAAS,CAAC,WAAW,UAAU;AAAA,MAC/D,KAAK,QAAQ,eAAe,WAAW,QAAQ;AAAA;AAAA,IAEnD,UAAS,UAAU,qBAAqB,QAAS,CAAC,WAAW;AAAA,MACzD,KAAK,QAAQ,mBAAmB,SAAS;AAAA;AAAA,IAE7C,UAAS,UAAU,OAAO,QAAS,CAAC,WAAW,UAAU;AAAA,MACrD,KAAK,QAAQ,KAAK,WAAW,QAAQ;AAAA;AAAA,IAEzC,UAAS,UAAU,SAAS,QAAS,GAAG;AAAA,MACpC,KAAK,QAAQ,WAAW;AAAA,MACxB,KAAK,QAAQ,QAAS,GAAG;AAAA,MACzB,KAAK,MAAM,QAAS,GAAG;AAAA,MACvB,KAAK,YAAY;AAAA,MACjB,KAAK,YAAY;AAAA;AAAA,IAErB,UAAS,UAAU,YAAY,QAAS,CAAC,KAAK;AAAA,MAC1C,IAAI,OAAO,OAAO,KAAK,OAAO,CAAC,CAAC;AAAA,MAChC,IAAI,QAAQ,CAAC;AAAA,MACb,SAAS,IAAI,EAAG,IAAI,KAAK,QAAQ,KAAK;AAAA,QAClC,IAAI,KAAK,OAAO,WAAW;AAAA,UACvB;AAAA,QACJ;AAAA,QACA,MAAM,KAAK,KAAK,KAAK,MAAM,IAAI,KAAK,GAAG;AAAA,MAC3C;AAAA,MACA,OAAO;AAAA;AAAA,IAEX,OAAO;AAAA,IACT;AAAA,EACM,mBAAW;AAAA;;;;ECvLnB,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EAC5D,SAAS,iBAAiB,CAAC,gBAAgB;AAAA,IACvC,OAAO,iBAAiB;AAAA;AAAA,EAEpB,4BAAoB;AAAA;;;;;ECJ5B,IAAI,YAAa,WAAQ,QAAK,aAAc,QAAS,CAAC,SAAS,YAAY,GAAG,WAAW;AAAA,IACrF,SAAS,KAAK,CAAC,OAAO;AAAA,MAAE,OAAO,iBAAiB,IAAI,QAAQ,IAAI,EAAE,QAAS,CAAC,SAAS;AAAA,QAAE,QAAQ,KAAK;AAAA,OAAI;AAAA;AAAA,IACxG,OAAO,KAAK,MAAM,IAAI,UAAU,QAAS,CAAC,SAAS,QAAQ;AAAA,MACvD,SAAS,SAAS,CAAC,OAAO;AAAA,QAAE,IAAI;AAAA,UAAE,KAAK,UAAU,KAAK,KAAK,CAAC;AAAA,UAAK,OAAO,GAAG;AAAA,UAAE,OAAO,CAAC;AAAA;AAAA;AAAA,MACrF,SAAS,QAAQ,CAAC,OAAO;AAAA,QAAE,IAAI;AAAA,UAAE,KAAK,UAAU,SAAS,KAAK,CAAC;AAAA,UAAK,OAAO,GAAG;AAAA,UAAE,OAAO,CAAC;AAAA;AAAA;AAAA,MACxF,SAAS,IAAI,CAAC,QAAQ;AAAA,QAAE,OAAO,OAAO,QAAQ,OAAO,KAAK,IAAI,MAAM,OAAO,KAAK,EAAE,KAAK,WAAW,QAAQ;AAAA;AAAA,MAC1G,MAAM,YAAY,UAAU,MAAM,SAAS,cAAc,CAAC,CAAC,GAAG,KAAK,CAAC;AAAA,KACvE;AAAA;AAAA,EAEL,IAAI,cAAe,WAAQ,QAAK,eAAgB,QAAS,CAAC,SAAS,MAAM;AAAA,IACrE,IAAI,IAAI,EAAE,OAAO,GAAG,MAAM,QAAQ,GAAG;AAAA,MAAE,IAAI,EAAE,KAAK;AAAA,QAAG,MAAM,EAAE;AAAA,MAAI,OAAO,EAAE;AAAA,OAAO,MAAM,CAAC,GAAG,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG;AAAA,IAC/G,OAAO,IAAI,EAAE,MAAM,KAAK,CAAC,GAAG,OAAS,KAAK,CAAC,GAAG,QAAU,KAAK,CAAC,EAAE,GAAG,OAAO,WAAW,eAAe,EAAE,OAAO,YAAY,QAAQ,GAAG;AAAA,MAAE,OAAO;AAAA,QAAU;AAAA,IACvJ,SAAS,IAAI,CAAC,GAAG;AAAA,MAAE,OAAO,QAAS,CAAC,GAAG;AAAA,QAAE,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC;AAAA;AAAA;AAAA,IAC3D,SAAS,IAAI,CAAC,IAAI;AAAA,MACd,IAAI;AAAA,QAAG,MAAM,IAAI,UAAU,iCAAiC;AAAA,MAC5D,OAAO;AAAA,QAAG,IAAI;AAAA,UACV,IAAI,IAAI,GAAG,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE,YAAY,GAAG,KAAK,EAAE,cAAc,IAAI,EAAE,cAAc,EAAE,KAAK,CAAC,GAAG,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,GAAG,GAAG,EAAE,GAAG;AAAA,YAAM,OAAO;AAAA,UAC3J,IAAI,IAAI,GAAG;AAAA,YAAG,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE,KAAK;AAAA,UACtC,QAAQ,GAAG;AAAA,iBACF;AAAA,iBAAQ;AAAA,cAAG,IAAI;AAAA,cAAI;AAAA,iBACnB;AAAA,cAAG,EAAE;AAAA,cAAS,OAAO,EAAE,OAAO,GAAG,IAAI,MAAM,MAAM;AAAA,iBACjD;AAAA,cAAG,EAAE;AAAA,cAAS,IAAI,GAAG;AAAA,cAAI,KAAK,CAAC,CAAC;AAAA,cAAG;AAAA,iBACnC;AAAA,cAAG,KAAK,EAAE,IAAI,IAAI;AAAA,cAAG,EAAE,KAAK,IAAI;AAAA,cAAG;AAAA;AAAA,cAEpC,IAAI,EAAE,IAAI,EAAE,MAAM,IAAI,EAAE,SAAS,KAAK,EAAE,EAAE,SAAS,QAAQ,GAAG,OAAO,KAAK,GAAG,OAAO,IAAI;AAAA,gBAAE,IAAI;AAAA,gBAAG;AAAA,cAAU;AAAA,cAC3G,IAAI,GAAG,OAAO,MAAM,CAAC,KAAM,GAAG,KAAK,EAAE,MAAM,GAAG,KAAK,EAAE,KAAM;AAAA,gBAAE,EAAE,QAAQ,GAAG;AAAA,gBAAI;AAAA,cAAO;AAAA,cACrF,IAAI,GAAG,OAAO,KAAK,EAAE,QAAQ,EAAE,IAAI;AAAA,gBAAE,EAAE,QAAQ,EAAE;AAAA,gBAAI,IAAI;AAAA,gBAAI;AAAA,cAAO;AAAA,cACpE,IAAI,KAAK,EAAE,QAAQ,EAAE,IAAI;AAAA,gBAAE,EAAE,QAAQ,EAAE;AAAA,gBAAI,EAAE,IAAI,KAAK,EAAE;AAAA,gBAAG;AAAA,cAAO;AAAA,cAClE,IAAI,EAAE;AAAA,gBAAI,EAAE,IAAI,IAAI;AAAA,cACpB,EAAE,KAAK,IAAI;AAAA,cAAG;AAAA;AAAA,UAEtB,KAAK,KAAK,KAAK,SAAS,CAAC;AAAA,UAC3B,OAAO,GAAG;AAAA,UAAE,KAAK,CAAC,GAAG,CAAC;AAAA,UAAG,IAAI;AAAA,kBAAK;AAAA,UAAU,IAAI,IAAI;AAAA;AAAA,MACtD,IAAI,GAAG,KAAK;AAAA,QAAG,MAAM,GAAG;AAAA,MAAI,OAAO,EAAE,OAAO,GAAG,KAAK,GAAG,KAAU,WAAG,MAAM,KAAK;AAAA;AAAA;AAAA,EAGvF,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EAC5D,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EAMJ,IAAI,sBAAsB;AAAA,EAa1B,IAAI,mBAAkC,QAAS,GAAG;AAAA,IAC9C,SAAS,iBAAgB,CAAC,iBAAiB;AAAA,MACvC,IAAI,QAAQ;AAAA,MACZ,KAAK,kBAAkB;AAAA,MACvB,KAAK,cAAc;AAAA,MACnB,KAAK,WAAW,IAAI,gBAAgB;AAAA,MACpC,IAAI,aAAa,EAAE,gBAAgB,gBAAgB;AAAA,MACnD,IAAI,aAAa,UAAU,QAAQ,qBAAqB,4BAA4B;AAAA,MACpF,KAAK,UAAU,IAAI,iBAAiB,OAAO,OAAO,KAAK,YAAY,8BAA8B,GAAG,EAAE,WAAuB,CAAC;AAAA,MAC9H,KAAK,QAAQ,GAAG,WAAW,QAAS,CAAC,SAAS;AAAA,QAC1C,QAAQ;AAAA,eACC;AAAA,YACD,MAAM,SAAS,KAAK;AAAA,YACpB;AAAA;AAAA,YAEA,QAAQ,KAAK,kCAAkC,OAAO;AAAA;AAAA,OAEjE;AAAA;AAAA,IAEL,OAAO,eAAe,kBAAiB,WAAW,WAAW;AAAA,MACzD,KAAK,QAAS,GAAG;AAAA,QAAE,OAAO,KAAK,SAAS;AAAA;AAAA,MACxC,YAAY;AAAA,MACZ,cAAc;AAAA,IAClB,CAAC;AAAA,IACD,kBAAiB,UAAU,UAAU,QAAS,GAAG;AAAA,MAC7C,IAAI,KAAK,aAAa;AAAA,QAClB;AAAA,MACJ;AAAA,MACA,KAAK,cAAc;AAAA,MAEnB,KAAK,mBAAmB;AAAA;AAAA,IAE5B,kBAAiB,UAAU,gBAAgB,QAAS,CAAC,QAAQ;AAAA,MACzD,OAAO,QAAQ,SAAS,kBAAkB,KAAK,eAAe,CAAC;AAAA;AAAA,IAEnE,kBAAiB,UAAU,qBAAqB,QAAS,GAAG;AAAA,MACxD,IAAI,QAAQ;AAAA,MACZ,IAAI,KAAK,eAAe;AAAA,QACpB,aAAa,KAAK,aAAa;AAAA,MACnC;AAAA,MACA,KAAK,gBAAgB,WAAW,QAAS,GAAG;AAAA,QAAE,OAAO,MAAM,eAAe;AAAA,SAAM,mBAAmB;AAAA;AAAA,IAEvG,kBAAiB,UAAU,iBAAiB,QAAS,GAAG;AAAA,MACpD,OAAO,UAAU,MAAW,WAAQ,WAAG,QAAS,GAAG;AAAA,QAC/C,OAAO,YAAY,MAAM,QAAS,CAAC,IAAI;AAAA,UACnC,QAAQ,GAAG;AAAA,iBACF;AAAA,cAAG,OAAO,CAAC,GAAa,KAAK,QAAQ,UAAU,CAAC;AAAA,iBAChD;AAAA,cACD,GAAG,KAAK;AAAA,cACR,OAAO,CAAC,CAAY;AAAA;AAAA,SAE/B;AAAA,OACJ;AAAA;AAAA,IAEL,OAAO;AAAA,IACT;AAAA,EACF,QAAQ,mBAAmB;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECtH3B,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EAC5D,IAAI,eAAe,sBAAsB,QAAQ,WAAW,MAAM,QAAQ;AAAA,EAC1E,IAAI,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAAugB,KAAK;AAAA,EACvhB,SAAS,aAAa,CAAC,MAAM;AAAA,IACzB,IAAI;AAAA,MACA,OAAO,UAAQ,eAAe,MAAM,IAAI;AAAA,MAE5C,OAAO,OAAO;AAAA,MACV,IAAI,SAAS,MAAM,SAAS,oBAAoB;AAAA,QAC5C,IAAI,uBAAuB,wBAAwB;AAAA,QACnD,MAAM,IAAI,MAAM,yBAAyB,YACnC,qEAAqE,eAAe,MAAM,OAAO;AAAA;AAAA,IAAS,OAAO;AAAA;AAAA,mBAAwB,QAAQ,WAAW,MAAM,QAAQ,OAAO,+BACjL,gBAAgB,wBACZ,0DAA0D,QAAQ,WAAW,MAAM,QAAQ,OAAO,yDAAyD,eAAe,MAAM,OAAO;AAAA;AAAA,IAAS,OAChM,4EAA4E,QAAQ,WAAW,MAAM,QAAQ,MAEvH,EAAE,OAAO,MAAM,CAAC;AAAA,MACpB,EACK;AAAA,QACD,MAAM;AAAA;AAAA;AAAA;AAAA,EAIV,wBAAgB;AAAA,EACxB,SAAS,uBAAuB,GAAG;AAAA,IAC/B,IAAI;AAAA,MACA,yBAAiC;AAAA,MAErC,OAAO,QAAQ;AAAA,MACX;AAAA;AAAA;AAAA;;;;;ECxBR,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EAC5D,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EAMJ,IAAI,sBAAsB;AAAA,EAI1B,IAAI,kBAAiC,QAAS,GAAG;AAAA,IAC7C,SAAS,gBAAe,CAAC,MAAM,MAAM,KAAK,KAAK,MAAM,MAAM,OAAO,qBAAqB;AAAA,MACnF,IAAI,QAAQ;AAAA,MACZ,IAAI,wBAA6B,WAAG;AAAA,QAAE,sBAAsB;AAAA,MAAO;AAAA,MACnE,KAAK,OAAO;AAAA,MACZ,KAAK,YAAY;AAAA,MACjB,IAAI,CAAC,cAAc;AAAA,QACf,eAAe,gBAAgB,cAAc,aAAa;AAAA,MAC9D;AAAA,MACA,KAAK,aAAa;AAAA,MAElB,MAAM,MAAK,QAAQ,GAAG;AAAA,MAEtB,IAAI,cAAc,kBAAkB,MAAM,IAAI;AAAA,MAE9C,IAAI,OAAO,KAAK,WAAW,aAAa,MAAM,MAAM,MAAM,OAAO,KAAK,kBAAkB,GAAG,mBAAmB;AAAA,MAE9G,KAAK,MAAM,KAAK;AAAA,MAGhB,KAAK,OAAO,KAAK;AAAA,MAEjB,KAAK,aAAa,IAAI,MAAM;AAAA,MAC5B,KAAK,WAAW,YAAY,MAAM;AAAA,MAElC,KAAK,sBAAsB,IAAI,0BAA0B,iBAAiB,KAAK,MAAM;AAAA,MACrF,KAAK,oBAAoB,QAAQ,QAAS,GAAG;AAAA,QACzC,MAAM,oBAAoB,cAAc,MAAM,UAAU;AAAA,OAC3D;AAAA,MACD,KAAK,WAAW,GAAG,WAAW,QAAS,GAAG;AAAA,QACtC,MAAM,WAAW,KAAK,gBAAgB;AAAA,OACzC;AAAA,MACD,IAAI,aAAa,IAAG,SAAS,KAAK,OAAO,GAAG;AAAA,MAC5C,KAAK,YAAY,IAAI,MAAM,OAAO;AAAA,QAC9B,IAAI;AAAA,QACJ,UAAU;AAAA,QACV,UAAU;AAAA,MACd,CAAC;AAAA,MACD,KAAK,UAAU,YAAY,MAAM;AAAA,MACjC,IAAI,UAAU,KAAK,WAAW,QAAQ,KAAK,MAAM,aAAa,KAAK,KAAK,QAAS,CAAC,GAAG;AAAA,QAAE,OAAO,MAAM,gBAAgB,CAAC;AAAA,OAAI;AAAA,MACzH,KAAK,YAAY,QAAQ;AAAA;AAAA,IAE7B,OAAO,eAAe,iBAAgB,WAAW,YAAY;AAAA,MACzD,KAAK,QAAS,GAAG;AAAA,QAAE,OAAO,KAAK;AAAA;AAAA,MAC/B,YAAY;AAAA,MACZ,cAAc;AAAA,IAClB,CAAC;AAAA,IACD,OAAO,eAAe,iBAAgB,WAAW,aAAa;AAAA,MAC1D,KAAK,QAAS,GAAG;AAAA,QAAE,OAAO,KAAK;AAAA;AAAA,MAC/B,YAAY;AAAA,MACZ,cAAc;AAAA,IAClB,CAAC;AAAA,IACD,OAAO,eAAe,iBAAgB,WAAW,MAAM;AAAA,MACnD,KAAK,QAAS,GAAG;AAAA,QAAE,OAAO,KAAK;AAAA;AAAA,MAC/B,YAAY;AAAA,MACZ,cAAc;AAAA,IAClB,CAAC;AAAA,IACD,OAAO,eAAe,iBAAgB,WAAW,YAAY;AAAA,MACzD,KAAK,QAAS,GAAG;AAAA,QAAE,OAAO,KAAK;AAAA;AAAA,MAC/B,YAAY;AAAA,MACZ,cAAc;AAAA,IAClB,CAAC;AAAA,IACD,OAAO,eAAe,iBAAgB,WAAW,OAAO;AAAA,MACpD,KAAK,QAAS,GAAG;AAAA,QAAE,OAAO,KAAK;AAAA;AAAA,MAC/B,YAAY;AAAA,MACZ,cAAc;AAAA,IAClB,CAAC;AAAA,IACD,iBAAgB,UAAU,SAAS,QAAS,CAAC,MAAM,MAAM;AAAA,MACrD,IAAI,KAAK,cAAc,WAAW;AAAA,QAC9B,MAAM,IAAI,MAAM,6CAA6C;AAAA,MACjE;AAAA,MACA,KAAK,WAAW,OAAO,KAAK,MAAM,MAAM,IAAI;AAAA;AAAA,IAEhD,iBAAgB,UAAU,QAAQ,QAAS,GAAG;AAAA,MAC1C,KAAK,WAAW,MAAM,KAAK,IAAI;AAAA;AAAA,IAEnC,iBAAgB,UAAU,OAAO,QAAS,GAAG;AAAA,MACzC,IAAI,QAAQ;AAAA,MACZ,KAAK,UAAU,WAAW;AAAA,MAC1B,KAAK,WAAW,WAAW;AAAA,MAE3B,KAAK,uBAAuB,EAAE,KAAK,QAAS,CAAC,oBAAoB;AAAA,QAC7D,mBAAmB,QAAQ,QAAS,CAAC,KAAK;AAAA,UACtC,IAAI;AAAA,YACA,QAAQ,KAAK,GAAG;AAAA,YAEpB,OAAO,GAAG;AAAA,SAGb;AAAA,QACD,MAAM,WAAW,KAAK,MAAM,IAAI;AAAA,OACnC;AAAA,MACD,KAAK,oBAAoB,QAAQ;AAAA;AAAA,IAErC,iBAAgB,UAAU,yBAAyB,QAAS,GAAG;AAAA,MAC3D,IAAI,QAAQ;AAAA,MACZ,OAAO,IAAI,QAAQ,QAAS,CAAC,SAAS;AAAA,QAClC,IAAI,QAAQ,gBAAgB,KAAK,MAAK,KAAK,WAAW,2BAA2B,GAAG,CAAC,MAAM,UAAU,SAAS,CAAC,CAAC;AAAA,QAChH,MAAM,GAAG,WAAW,QAAS,CAAC,SAAS;AAAA,UACnC,aAAa,OAAO;AAAA,UACpB,QAAQ,QAAQ,kBAAkB;AAAA,SACrC;AAAA,QACD,IAAI,UAAU,WAAW,QAAS,GAAG;AAAA,UAEjC,MAAM,KAAK;AAAA,UACX,QAAQ,CAAC,MAAM,SAAS,CAAC;AAAA,WAC1B,IAAI;AAAA,OACV;AAAA;AAAA,IAEL,OAAO,eAAe,iBAAgB,WAAW,YAAY;AAAA,MACzD,KAAK,QAAS,GAAG;AAAA,QACb,OAAO,KAAK;AAAA;AAAA,MAEhB,YAAY;AAAA,MACZ,cAAc;AAAA,IAClB,CAAC;AAAA,IACD,iBAAgB,UAAU,oBAAoB,QAAS,GAAG;AAAA,MACtD,OAAO,YAAY,KAAK,OAAO,IAAI;AAAA;AAAA,IAKvC,iBAAgB,UAAU,kBAAkB,QAAS,CAAC,UAAU;AAAA,MAC5D,IAAI,QAAQ;AAAA,MACZ,KAAK,YAAY;AAAA,MACjB,KAAK,qBAAqB;AAAA,MAC1B,KAAK,WAAW,GAAG,QAAQ,QAAS,GAAG;AAAA,QAAE,OAAO,MAAM,qBAAqB;AAAA,OAAI;AAAA;AAAA,IAEnF,iBAAgB,UAAU,uBAAuB,QAAS,GAAG;AAAA,MACzD,IAAI,QAAQ;AAAA,MACZ,IAAI,KAAK,eAAe;AAAA,QACpB,aAAa,KAAK,aAAa;AAAA,MACnC;AAAA,MACA,KAAK,gBAAgB,WAAW,QAAS,GAAG;AAAA,QAAE,OAAO,MAAM,gBAAgB;AAAA,SAAM,mBAAmB;AAAA;AAAA,IAExG,iBAAgB,UAAU,kBAAkB,QAAS,GAAG;AAAA,MACpD,KAAK,UAAU,WAAW;AAAA,MAC1B,KAAK,WAAW,WAAW;AAAA,MAC3B,KAAK,WAAW,QAAQ;AAAA;AAAA,IAE5B,OAAO;AAAA,IACT;AAAA,EACM,0BAAkB;AAAA,EAI1B,SAAS,iBAAiB,CAAC,MAAM,MAAM;AAAA,IACnC,IAAI,cAAc,IAAI,GAAG;AAAA,MACrB,IAAI,KAAK,WAAW,GAAG;AAAA,QACnB,OAAO;AAAA,MACX;AAAA,MACA,OAAO,kBAAkB,MAAM,CAAC,CAAC,IAAI,MAAM;AAAA,IAC/C;AAAA,IACA,IAAI,OAAO,CAAC,IAAI;AAAA,IAChB,MAAM,UAAU,KAAK,MAAM,MAAM,IAAI;AAAA,IACrC,IAAI,SAAS;AAAA,IACb,SAAS,WAAW,EAAG,WAAW,KAAK,QAAQ,YAAY;AAAA,MACvD,IAAI,WAAW,GAAG;AAAA,QACd,UAAU;AAAA,MACd;AAAA,MACA,IAAI,MAAM,KAAK;AAAA,MAEf,IAAI,4BAA4B,IAAK,IAAI,OAAO,KAAO,IAAI,IAAI,SAAS,OAAO,GAAI;AAAA,MACnF,IAAI,uBAAyB,IAAI,OAAO,OAAS,IAAI,IAAI,SAAS,OAAO;AAAA,MACzE,IAAI,QAAQ,QAAQ,OACf,IAAI,QAAQ,GAAG,MAAM,MAClB,IAAI,QAAQ,IAAI,MAAM,QACpB,IAAI,SAAS,MACV,6BAA6B;AAAA,MAC1C,IAAI,OAAO;AAAA,QACP,UAAU;AAAA,MACd;AAAA,MACA,IAAI,UAAU;AAAA,MACd,SAAS,IAAI,EAAG,IAAI,IAAI,QAAQ,KAAK;AAAA,QACjC,IAAI,IAAI,IAAI;AAAA,QACZ,IAAI,MAAM,MAAM;AAAA,UACZ;AAAA,QACJ,EACK,SAAI,MAAM,KAAK;AAAA,UAChB,UAAU,WAAW,MAAM,UAAU,IAAI,CAAC;AAAA,UAC1C,UAAU;AAAA,UACV,UAAU;AAAA,QACd,EACK;AAAA,UACD,UAAU,WAAW,MAAM,OAAO;AAAA,UAClC,UAAU;AAAA,UACV,UAAU;AAAA;AAAA,MAElB;AAAA,MACA,IAAI,OAAO;AAAA,QACP,UAAU,WAAW,MAAM,UAAU,CAAC;AAAA,QACtC,UAAU;AAAA,MACd,EACK;AAAA,QACD,UAAU,WAAW,MAAM,OAAO;AAAA;AAAA,IAE1C;AAAA,IACA,OAAO;AAAA;AAAA,EAEH,4BAAoB;AAAA,EAC5B,SAAS,aAAa,CAAC,MAAM;AAAA,IACzB,OAAO,OAAO,SAAS;AAAA;AAAA,EAE3B,SAAS,UAAU,CAAC,MAAM,OAAO;AAAA,IAC7B,IAAI,SAAS;AAAA,IACb,SAAS,IAAI,EAAG,IAAI,OAAO,KAAK;AAAA,MAC5B,UAAU;AAAA,IACd;AAAA,IACA,OAAO;AAAA;AAAA,EAEX,SAAS,GAAG,CAAC,MAAM,MAAM;AAAA,IACrB,OAAS,QAAQ,CAAC,QAAU,CAAC,QAAQ;AAAA;AAAA;;;;ECrOzC,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EAC5D,SAAS,MAAM,CAAC,QAAQ;AAAA,IACpB,IAAI,UAAU,CAAC;AAAA,IACf,SAAS,KAAK,EAAG,KAAK,UAAU,QAAQ,MAAM;AAAA,MAC1C,QAAQ,KAAK,KAAK,UAAU;AAAA,IAChC;AAAA,IACA,QAAQ,QAAQ,QAAS,CAAC,QAAQ;AAAA,MAAE,OAAO,OAAO,KAAK,MAAM,EAAE,QAAQ,QAAS,CAAC,KAAK;AAAA,QAAE,OAAO,OAAO,OAAO,OAAO;AAAA,OAAO;AAAA,KAAI;AAAA,IAC/H,OAAO;AAAA;AAAA,EAEH,iBAAS;AAAA;;;;ECRjB,IAAI,YAAa,WAAQ,QAAK,aAAe,QAAS,GAAG;AAAA,IACrD,IAAI,gBAAgB,QAAS,CAAC,GAAG,GAAG;AAAA,MAChC,gBAAgB,OAAO,kBAClB,EAAE,WAAW,CAAC,EAAE,aAAa,SAAS,QAAS,CAAC,IAAG,IAAG;AAAA,QAAE,GAAE,YAAY;AAAA,WACvE,QAAS,CAAC,IAAG,IAAG;AAAA,QAAE,SAAS,KAAK;AAAA,UAAG,IAAI,GAAE,eAAe,CAAC;AAAA,YAAG,GAAE,KAAK,GAAE;AAAA;AAAA,MACzE,OAAO,cAAc,GAAG,CAAC;AAAA;AAAA,IAE7B,OAAO,QAAS,CAAC,GAAG,GAAG;AAAA,MACnB,cAAc,GAAG,CAAC;AAAA,MAClB,SAAS,EAAE,GAAG;AAAA,QAAE,KAAK,cAAc;AAAA;AAAA,MACnC,EAAE,YAAY,MAAM,OAAO,OAAO,OAAO,CAAC,KAAK,GAAG,YAAY,EAAE,WAAW,IAAI;AAAA;AAAA,IAEpF;AAAA,EACH,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EAC5D,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI,eAAe;AAAA,EACnB,IAAI,eAAe;AAAA,EACnB,IAAI,kBAAiC,QAAS,CAAC,QAAQ;AAAA,IACnD,UAAU,kBAAiB,MAAM;AAAA,IACjC,SAAS,gBAAe,CAAC,MAAM,MAAM,KAAK;AAAA,MACtC,IAAI,QAAQ,OAAO,KAAK,MAAM,GAAG,KAAK;AAAA,MACtC,MAAM,WAAW,QAAQ,MAAM,UAAU,IAAI;AAAA,MAE7C,OAAO,QAAQ,CAAC;AAAA,MAChB,OAAO,QAAQ;AAAA,MACf,MAAM,OAAO,CAAC;AAAA,MACd,IAAI,MAAM,IAAI,OAAO,QAAQ;AAAA,MAC7B,IAAI,IAAI,UAAU;AAAA,QACd,QAAQ,KAAK,8CAA8C;AAAA,MAC/D;AAAA,MACA,IAAI,MAAM,QAAQ,OAAO,CAAC,GAAG,IAAI,GAAG;AAAA,MACpC,MAAM,QAAQ,IAAI,QAAQ,WAAW;AAAA,MACrC,MAAM,QAAQ,IAAI,QAAQ,WAAW;AAAA,MACrC,IAAI,MAAM,IAAI,OAAO,QAAQ,IAAI;AAAA,MACjC,IAAI,OAAO,IAAI,QAAQ,IAAI,QAAQ;AAAA,MACnC,IAAI,YAAY,MAAM,UAAU,GAAG;AAAA,MAEnC,MAAM,WAAW;AAAA,MAEjB,MAAM,aAAa,CAAC;AAAA,MAEpB,MAAM,SAAS,IAAI,kBAAkB,gBAAgB,MAAM,MAAM,WAAW,KAAK,MAAM,OAAO,MAAM,OAAO,OAAO,IAAI,mBAAmB;AAAA,MACzI,MAAM,UAAU,MAAM,OAAO;AAAA,MAE7B,MAAM,OAAO,MAAM,OAAO;AAAA,MAC1B,MAAM,MAAM,MAAM,OAAO;AAAA,MACzB,MAAM,OAAO,MAAM,OAAO;AAAA,MAG1B,MAAM,QAAQ,GAAG,kBAAkB,QAAS,GAAG;AAAA,QAE3C,CAAC,WAAW,QAAQ,OAAO,WAAW,OAAO,EAAE,QAAQ,QAAS,CAAC,OAAO;AAAA,UACpE,MAAM,QAAQ,GAAG,OAAO,QAAS,GAAG;AAAA,YAEhC,IAAI,CAAC,MAAM,YAAY,UAAU,QAAQ;AAAA,cAGrC,MAAM,WAAW;AAAA,cAEjB,MAAM,WAAW,QAAQ,QAAS,CAAC,IAAI;AAAA,gBAKnC,GAAG,IAAI;AAAA,eACV;AAAA,cAED,MAAM,aAAa,CAAC;AAAA,YACxB;AAAA,WACH;AAAA,SACJ;AAAA,QAED,MAAM,QAAQ,GAAG,SAAS,QAAS,CAAC,KAAK;AAAA,UAErC,MAAM,OAAO;AAAA,UAKb,IAAI,IAAI,MAAM;AAAA,YACV,IAAI,CAAC,IAAI,KAAK,QAAQ,SAAS,KAAK,CAAC,IAAI,KAAK,QAAQ,KAAK;AAAA,cACvD;AAAA,UACR;AAAA,UAEA,IAAI,MAAM,UAAU,OAAO,EAAE,SAAS,GAAG;AAAA,YACrC,MAAM;AAAA,UACV;AAAA,SACH;AAAA,QAED,MAAM,QAAQ,GAAG,SAAS,QAAS,GAAG;AAAA,UAClC,MAAM,KAAK,QAAQ,MAAM,OAAO,QAAQ;AAAA,UACxC,MAAM,OAAO;AAAA,SAChB;AAAA,OACJ;AAAA,MACD,MAAM,QAAQ;AAAA,MACd,MAAM,QAAQ;AAAA,MACd,MAAM,YAAY;AAAA,MAClB,MAAM,YAAY;AAAA,MAClB,MAAM,eAAe;AAAA,MACrB,OAAO;AAAA;AAAA,IAEX,iBAAgB,UAAU,SAAS,QAAS,CAAC,MAAM;AAAA,MAC/C,KAAK,OAAO,KAAK,UAAU,IAAI;AAAA;AAAA,IAEnC,iBAAgB,UAAU,WAAW,QAAS,CAAC,MAAM;AAAA,MACjD,KAAK,OAAO,SAAS,MAAM,IAAI;AAAA;AAAA,IAKnC,iBAAgB,OAAO,QAAS,CAAC,SAAS;AAAA,MACtC,MAAM,IAAI,MAAM,sDAAsD;AAAA;AAAA,IAK1E,iBAAgB,UAAU,SAAS,QAAS,CAAC,MAAM,MAAM;AAAA,MACrD,IAAI,QAAQ;AAAA,MACZ,IAAI,QAAQ,KAAK,QAAQ,KAAK,MAAM,IAAI,KAAK,MAAM,IAAI,KAAK,SAAS,YAAY,SAAS,UAAU;AAAA,QAChG,MAAM,IAAI,MAAM,oDAAoD;AAAA,MACxE;AAAA,MACA,KAAK,aAAa,QAAS,GAAG;AAAA,QAC1B,MAAM,OAAO,OAAO,MAAM,IAAI;AAAA,QAC9B,MAAM,QAAQ;AAAA,QACd,MAAM,QAAQ;AAAA,OACjB;AAAA;AAAA,IAEL,iBAAgB,UAAU,QAAQ,QAAS,GAAG;AAAA,MAC1C,IAAI,QAAQ;AAAA,MACZ,KAAK,aAAa,QAAS,GAAG;AAAA,QAC1B,MAAM,OAAO,MAAM;AAAA,OACtB;AAAA;AAAA,IAEL,iBAAgB,UAAU,UAAU,QAAS,GAAG;AAAA,MAC5C,IAAI,QAAQ;AAAA,MACZ,KAAK,aAAa,QAAS,GAAG;AAAA,QAC1B,MAAM,KAAK;AAAA,OACd;AAAA;AAAA,IAEL,iBAAgB,UAAU,OAAO,QAAS,CAAC,QAAQ;AAAA,MAC/C,IAAI,QAAQ;AAAA,MACZ,KAAK,aAAa,QAAS,GAAG;AAAA,QAC1B,IAAI,QAAQ;AAAA,UACR,MAAM,IAAI,MAAM,mCAAmC;AAAA,QACvD;AAAA,QACA,MAAM,OAAO;AAAA,QACb,MAAM,OAAO,KAAK;AAAA,OACrB;AAAA;AAAA,IAEL,iBAAgB,UAAU,eAAe,QAAS,CAAC,YAAY;AAAA,MAC3D,IAAI,QAAQ;AAAA,MAEZ,IAAI,KAAK,UAAU;AAAA,QACf,WAAW,KAAK,IAAI;AAAA,QACpB;AAAA,MACJ;AAAA,MAEA,KAAK,WAAW,KAAK;AAAA,QACjB,KAAK,QAAS,GAAG;AAAA,UAAE,OAAO,WAAW,KAAK,KAAK;AAAA;AAAA,MACnD,CAAC;AAAA;AAAA,IAEL,iBAAgB,UAAU,SAAS,QAAS,CAAC,YAAY,KAAK;AAAA,MAC1D,IAAI,QAAQ;AAAA,MAEZ,IAAI,KAAK,UAAU;AAAA,QACf,WAAW,KAAK,MAAM,GAAG;AAAA,QACzB;AAAA,MACJ;AAAA,MAEA,KAAK,WAAW,KAAK;AAAA,QACjB,KAAK,QAAS,GAAG;AAAA,UAAE,OAAO,WAAW,KAAK,OAAO,GAAG;AAAA;AAAA,MACxD,CAAC;AAAA;AAAA,IAEL,OAAO,eAAe,iBAAgB,WAAW,WAAW;AAAA,MACxD,KAAK,QAAS,GAAG;AAAA,QAAE,OAAO,KAAK;AAAA;AAAA,MAC/B,YAAY;AAAA,MACZ,cAAc;AAAA,IAClB,CAAC;AAAA,IACD,OAAO,eAAe,iBAAgB,WAAW,UAAU;AAAA,MACvD,KAAK,QAAS,GAAG;AAAA,QAAE,MAAM,IAAI,MAAM,oCAAoC;AAAA;AAAA,MACvE,YAAY;AAAA,MACZ,cAAc;AAAA,IAClB,CAAC;AAAA,IACD,OAAO,eAAe,iBAAgB,WAAW,SAAS;AAAA,MACtD,KAAK,QAAS,GAAG;AAAA,QAAE,MAAM,IAAI,MAAM,mCAAmC;AAAA;AAAA,MACtE,YAAY;AAAA,MACZ,cAAc;AAAA,IAClB,CAAC;AAAA,IACD,OAAO;AAAA,IACT,WAAW,QAAQ;AAAA,EACrB,QAAQ,kBAAkB;AAAA;;;;ECrM1B,IAAI,YAAa,WAAQ,QAAK,aAAe,QAAS,GAAG;AAAA,IACrD,IAAI,gBAAgB,QAAS,CAAC,GAAG,GAAG;AAAA,MAChC,gBAAgB,OAAO,kBAClB,EAAE,WAAW,CAAC,EAAE,aAAa,SAAS,QAAS,CAAC,IAAG,IAAG;AAAA,QAAE,GAAE,YAAY;AAAA,WACvE,QAAS,CAAC,IAAG,IAAG;AAAA,QAAE,SAAS,KAAK;AAAA,UAAG,IAAI,GAAE,eAAe,CAAC;AAAA,YAAG,GAAE,KAAK,GAAE;AAAA;AAAA,MACzE,OAAO,cAAc,GAAG,CAAC;AAAA;AAAA,IAE7B,OAAO,QAAS,CAAC,GAAG,GAAG;AAAA,MACnB,cAAc,GAAG,CAAC;AAAA,MAClB,SAAS,EAAE,GAAG;AAAA,QAAE,KAAK,cAAc;AAAA;AAAA,MACnC,EAAE,YAAY,MAAM,OAAO,OAAO,OAAO,CAAC,KAAK,GAAG,YAAY,EAAE,WAAW,IAAI;AAAA;AAAA,IAEpF;AAAA,EACH,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EAC5D,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI,MAAM,gBAAgB,cAAc,UAAU;AAAA,EAClD,IAAI,aAAa,sBAAsB,QAAQ,WAAW,MAAM,QAAQ,OAAO;AAAA,EAC/E,aAAa,QAAQ,aAAa,WAAW,kBAAgB,UAAU,IAAI;AAAA,EAC3E,aAAa,WAAW,QAAQ,YAAY,mBAAmB;AAAA,EAC/D,aAAa,WAAW,QAAQ,qBAAqB,4BAA4B;AAAA,EACjF,IAAI,eAAe;AAAA,EACnB,IAAI,eAAe;AAAA,EACnB,IAAI,4BAA4B;AAAA,EAChC,IAAI,eAA8B,QAAS,CAAC,QAAQ;AAAA,IAChD,UAAU,eAAc,MAAM;AAAA,IAC9B,SAAS,aAAY,CAAC,MAAM,MAAM,KAAK;AAAA,MACnC,IAAI,IAAI;AAAA,MACR,IAAI,QAAQ,OAAO,KAAK,MAAM,GAAG,KAAK;AAAA,MACtC,MAAM,cAAc;AAAA,MACpB,MAAM,gBAAgB;AAAA,MACtB,IAAI,OAAO,SAAS,UAAU;AAAA,QAC1B,MAAM,IAAI,MAAM,4CAA4C;AAAA,MAChE;AAAA,MAEA,OAAO,QAAQ,CAAC;AAAA,MAChB,OAAO,QAAQ;AAAA,MACf,MAAM,OAAO,CAAC;AAAA,MACd,IAAI,MAAM,IAAI,OAAO,QAAQ;AAAA,MAC7B,MAAM,QAAQ,IAAI,QAAQ,WAAW;AAAA,MACrC,MAAM,QAAQ,IAAI,QAAQ,WAAW;AAAA,MACrC,IAAI,OAAO,KAAK,IAAI,SAAS,QAAQ,OAAY,YAAI,KAAK;AAAA,MAC1D,IAAI,OAAO,KAAK,IAAI,SAAS,QAAQ,OAAY,YAAI,KAAK;AAAA,MAC1D,IAAI,MAAM,QAAQ,OAAO,CAAC,GAAG,IAAI,GAAG;AAAA,MACpC,IAAI,IAAI,QAAQ,QAAQ,KAAK;AAAA,QACzB,MAAM,aAAa,GAAG;AAAA,MAC1B;AAAA,MACA,IAAI,MAAM,IAAI,OAAO,QAAQ,IAAI;AAAA,MACjC,IAAI,MAAM;AAAA,MACV,IAAI,OAAO,IAAI,QAAQ,IAAI,QAAQ;AAAA,MACnC,IAAI,OAAO;AAAA,MACX,IAAI,YAAY,MAAM,UAAU,GAAG;AAAA,MACnC,IAAI,WAAY,IAAI,aAAa,YAAY,SAAS,IAAI;AAAA,MAC1D,IAAI,SAAS,QAAS,CAAC,MAAM,QAAQ;AAAA,QAGjC,IAAI,CAAC,MAAM,eAAe;AAAA,UACtB,IAAI,MAAM,aAAa;AAAA,YACnB;AAAA,UACJ;AAAA,UACA,MAAM,cAAc;AAAA,UAIpB,IAAI,YAAY,WAAW,QAAS,GAAG;AAAA,YACnC,YAAY;AAAA,YAEZ,MAAM,QAAQ,QAAQ;AAAA,aACvB,yBAAyB;AAAA,UAC5B,MAAM,KAAK,SAAS,QAAS,GAAG;AAAA,YAC5B,IAAI,cAAc,MAAM;AAAA,cACpB,aAAa,SAAS;AAAA,YAC1B;AAAA,YACA,MAAM,KAAK,QAAQ,MAAM,MAAM;AAAA,WAClC;AAAA,UACD;AAAA,QACJ;AAAA,QACA,MAAM,KAAK,QAAQ,MAAM,MAAM;AAAA;AAAA,MAGnC,IAAI,OAAO,IAAI,KAAK,MAAM,MAAM,WAAW,KAAK,MAAM,OAAO,MAAM,OAAO,KAAK,KAAM,aAAa,QAAS,YAAY,MAAM;AAAA,MAC7H,MAAM,UAAU,IAAI,IAAI,WAAW,KAAK,EAAE;AAAA,MAC1C,IAAI,aAAa,MAAM;AAAA,QACnB,MAAM,QAAQ,YAAY,QAAQ;AAAA,MACtC;AAAA,MAEA,MAAM,QAAQ,GAAG,SAAS,QAAS,CAAC,KAAK;AAAA,QAErC,IAAI,IAAI,MAAM;AAAA,UACV,IAAI,CAAC,IAAI,KAAK,QAAQ,QAAQ,GAAG;AAAA,YAC7B;AAAA,UACJ;AAAA,QACJ;AAAA,QAEA,MAAM,OAAO;AAAA,QAEb,IAAI,CAAC,MAAM,eAAe;AAAA,UACtB,MAAM,gBAAgB;AAAA,UACtB,MAAM,KAAK,OAAO;AAAA,QACtB;AAAA,QAKA,IAAI,IAAI,MAAM;AAAA,UACV,IAAI,CAAC,IAAI,KAAK,QAAQ,SAAS,KAAK,CAAC,IAAI,KAAK,QAAQ,KAAK,GAAG;AAAA,YAC1D;AAAA,UACJ;AAAA,QACJ;AAAA,QAEA,IAAI,MAAM,UAAU,OAAO,EAAE,SAAS,GAAG;AAAA,UACrC,MAAM;AAAA,QACV;AAAA,OACH;AAAA,MACD,MAAM,OAAO,KAAK;AAAA,MAClB,MAAM,MAAM,KAAK;AAAA,MACjB,MAAM,OAAO,KAAK;AAAA,MAClB,MAAM,QAAQ;AAAA,MACd,MAAM,QAAQ;AAAA,MACd,MAAM,YAAY;AAAA,MAClB,MAAM,YAAY;AAAA,MAClB,MAAM,QAAQ,GAAG,SAAS,QAAS,GAAG;AAAA,QAClC,IAAI,MAAM,eAAe;AAAA,UACrB;AAAA,QACJ;AAAA,QACA,MAAM,gBAAgB;AAAA,QACtB,MAAM,OAAO;AAAA,QACb,MAAM,KAAK,OAAO;AAAA,OACrB;AAAA,MACD,MAAM,eAAe;AAAA,MACrB,OAAO;AAAA;AAAA,IAEX,OAAO,eAAe,cAAa,WAAW,UAAU;AAAA,MACpD,KAAK,QAAS,GAAG;AAAA,QAAE,OAAO,KAAK;AAAA;AAAA,MAC/B,YAAY;AAAA,MACZ,cAAc;AAAA,IAClB,CAAC;AAAA,IACD,OAAO,eAAe,cAAa,WAAW,SAAS;AAAA,MACnD,KAAK,QAAS,GAAG;AAAA,QAAE,OAAO,KAAK;AAAA;AAAA,MAC/B,YAAY;AAAA,MACZ,cAAc;AAAA,IAClB,CAAC;AAAA,IACD,cAAa,UAAU,SAAS,QAAS,CAAC,MAAM;AAAA,MAC5C,KAAK,QAAQ,MAAM,IAAI;AAAA;AAAA,IAE3B,OAAO,eAAe,cAAa,WAAW,MAAM;AAAA,MAEhD,KAAK,QAAS,GAAG;AAAA,QAAE,OAAO,KAAK;AAAA;AAAA,MAC/B,YAAY;AAAA,MACZ,cAAc;AAAA,IAClB,CAAC;AAAA,IACD,OAAO,eAAe,cAAa,WAAW,WAAW;AAAA,MACrD,KAAK,QAAS,GAAG;AAAA,QAAE,OAAO,KAAK;AAAA;AAAA,MAC/B,YAAY;AAAA,MACZ,cAAc;AAAA,IAClB,CAAC;AAAA,IAID,cAAa,OAAO,QAAS,CAAC,KAAK;AAAA,MAC/B,IAAI,OAAO,OAAO,OAAO,cAAa,SAAS;AAAA,MAC/C,MAAM,OAAO,CAAC;AAAA,MACd,IAAI,UAAU,SAAS,GAAG;AAAA,QACtB,MAAM;AAAA,UACF,MAAM,UAAU;AAAA,UAChB,MAAM,UAAU;AAAA,QACpB;AAAA,MACJ;AAAA,MACA,IAAI,OAAO,IAAI,QAAQ,WAAW;AAAA,MAClC,IAAI,OAAO,IAAI,QAAQ,WAAW;AAAA,MAClC,IAAI,WAAY,IAAI,aAAa,YAAY,SAAS,IAAI;AAAA,MAE1D,IAAI,OAAO,IAAI,KAAK,MAAM,IAAI;AAAA,MAC9B,KAAK,UAAU,IAAI,IAAI,WAAW,KAAK,MAAM;AAAA,MAC7C,IAAI,aAAa,MAAM;AAAA,QACnB,KAAK,QAAQ,YAAY,QAAQ;AAAA,MACrC;AAAA,MACA,KAAK,QAAQ,OAAO;AAAA,MACpB,KAAK,SAAS,IAAI,IAAI,WAAW,KAAK,KAAK;AAAA,MAC3C,IAAI,aAAa,MAAM;AAAA,QACnB,KAAK,OAAO,YAAY,QAAQ;AAAA,MACpC;AAAA,MACA,KAAK,OAAO,OAAO;AAAA,MACnB,KAAK,UAAU,KAAK;AAAA,MACpB,KAAK,OAAO;AAAA,MACZ,KAAK,MAAM,KAAK;AAAA,MAChB,KAAK,OAAO,KAAK;AAAA,MACjB,KAAK,QAAQ,QAAQ,KAAK,MAAM;AAAA,MAChC,KAAK,QAAQ,QAAQ,IAAI,QAAQ;AAAA,MACjC,KAAK,YAAY;AAAA,MACjB,KAAK,YAAY;AAAA,MACjB,KAAK,QAAQ,GAAG,SAAS,QAAS,CAAC,KAAK;AAAA,QACpC,KAAK,OAAO;AAAA,QACZ,IAAI,KAAK,UAAU,OAAO,EAAE,SAAS,GAAG;AAAA,UACpC,MAAM;AAAA,QACV;AAAA,OACH;AAAA,MACD,KAAK,QAAQ,GAAG,SAAS,QAAS,GAAG;AAAA,QACjC,KAAK,OAAO;AAAA,OACf;AAAA,MACD,OAAO;AAAA;AAAA,IAEX,cAAa,UAAU,UAAU,QAAS,GAAG;AAAA,MACzC,IAAI,QAAQ;AAAA,MACZ,KAAK,OAAO;AAAA,MAGZ,KAAK,QAAQ,KAAK,SAAS,QAAS,GAAG;AAAA,QACnC,MAAM,KAAK,QAAQ;AAAA,OACtB;AAAA,MACD,KAAK,QAAQ,QAAQ;AAAA;AAAA,IAEzB,cAAa,UAAU,OAAO,QAAS,CAAC,QAAQ;AAAA,MAC5C,IAAI;AAAA,QACA,QAAQ,KAAK,KAAK,KAAK,UAAU,QAAQ;AAAA,QAE7C,OAAO,GAAG;AAAA;AAAA,IAEd,OAAO,eAAe,cAAa,WAAW,WAAW;AAAA,MAIrD,KAAK,QAAS,GAAG;AAAA,QACb,IAAI,QAAQ,aAAa,UAAU;AAAA,UAC/B,IAAI,QAAQ,IAAI,QAAQ,KAAK,GAAG;AAAA,UAChC,OAAQ,UAAU,gBAAiB,QAAQ,KAAK;AAAA,QACpD;AAAA,QACA,OAAO,IAAI,QAAQ,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK;AAAA;AAAA,MAEpD,YAAY;AAAA,MACZ,cAAc;AAAA,IAClB,CAAC;AAAA,IAID,cAAa,UAAU,SAAS,QAAS,CAAC,MAAM,MAAM;AAAA,MAClD,IAAI,QAAQ,KAAK,QAAQ,KAAK,MAAM,IAAI,KAAK,MAAM,IAAI,KAAK,SAAS,YAAY,SAAS,UAAU;AAAA,QAChG,MAAM,IAAI,MAAM,oDAAoD;AAAA,MACxE;AAAA,MACA,IAAI,OAAO,KAAK,KAAK,MAAM,IAAI;AAAA,MAC/B,KAAK,QAAQ;AAAA,MACb,KAAK,QAAQ;AAAA;AAAA,IAEjB,cAAa,UAAU,QAAQ,QAAS,GAAG;AAAA,IAE3C,cAAa,UAAU,eAAe,QAAS,CAAC,KAAK;AAAA,MAEjD,OAAO,IAAI;AAAA,MACX,OAAO,IAAI;AAAA,MAGX,OAAO,IAAI;AAAA,MACX,OAAO,IAAI;AAAA,MAEX,OAAO,IAAI;AAAA,MACX,OAAO,IAAI;AAAA,MACX,OAAO,IAAI;AAAA,MACX,OAAO,IAAI;AAAA;AAAA,IAEf,OAAO;AAAA,IACT,WAAW,QAAQ;AAAA,EACrB,QAAQ,eAAe;AAAA;;;;EClQvB,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EAC5D,IAAI;AAAA,EACJ,IAAI,QAAQ,aAAa,SAAS;AAAA,IAC9B,yCAA4C;AAAA,EAChD,EACK;AAAA,IACD,sCAAyC;AAAA;AAAA,EAc7C,SAAS,MAAK,CAAC,MAAM,MAAM,KAAK;AAAA,IAC5B,OAAO,IAAI,aAAa,MAAM,MAAM,GAAG;AAAA;AAAA,EAEnC,gBAAQ;AAAA,EAEhB,SAAS,IAAI,CAAC,MAAM,MAAM,KAAK;AAAA,IAC3B,OAAO,IAAI,aAAa,MAAM,MAAM,GAAG;AAAA;AAAA,EAEnC,eAAO;AAAA,EAEf,SAAS,cAAc,CAAC,MAAM,MAAM,KAAK;AAAA,IACrC,OAAO,IAAI,aAAa,MAAM,MAAM,GAAG;AAAA;AAAA,EAEnC,yBAAiB;AAAA,EACzB,SAAS,IAAI,CAAC,SAAS;AAAA,IACnB,OAAO,aAAa,KAAK,OAAO;AAAA;AAAA,EAE5B,eAAO;AAAA;;;AC3Cf;AAAA;AAAA;;;AC4BO,IAAM,kBAAkB;AAAA,EAC7B,SAAS;AAAA,EACT,SAAS;AAAA,IACP;AAAA,MACE,MAAM;AAAA,MACN,aAAa;AAAA,MACb,SAAS,CAAC,eAAe,kBAAkB,iBAAiB,eAAe;AAAA,MAC3E,YAAY,CAAC;AAAA,IACf;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,aACE;AAAA,MACF,SAAS;AAAA,QACP;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,YAAY,CAAC;AAAA,IACf;AAAA,EACF;AACF;AACO,IAAM,iBAAiB;AAAA,EAC5B,SAAS;AAAA,EACT,SAAS;AAAA,IACP;AAAA,MACE,MAAM;AAAA,MACN,aAAa;AAAA,MACb,SAAS,CAAC,eAAe,kBAAkB,iBAAiB,eAAe;AAAA,MAC3E,YAAY,CAAC;AAAA,IACf;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,aACE;AAAA,MACF,SAAS;AAAA,QACP;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,YAAY,CAAC;AAAA,IACf;AAAA,EACF;AACF;AACO,IAAM,oBAAoB;AAAA,EAC/B,SAAS;AAAA,EACT,WAAW;AAAA,IACT;AAAA,MACE,MAAM;AAAA,MACN,aACE;AAAA,MACF,SAAS;AAAA,IACX;AAAA,EACF;AACF;AACO,IAAM,mBAAmB;AAAA,EAC9B,SAAS;AAAA,EACT,WAAW;AAAA,IACT;AAAA,MACE,MAAM;AAAA,MACN,aACE;AAAA,MACF,SAAS;AAAA,IACX;AAAA,EACF;AACF;AACO,IAAM,qBAAqB;AAAA,EAChC,SAAS;AAAA,EACT,YAAY,CAAC;AACf;AACO,IAAM,oBAAoB;AAAA,EAC/B,SAAS;AAAA,EACT,YAAY,CAAC;AACf;AAEO,IAAM,iBAAuC,gBAAgB;AAC7D,IAAM,gBAAsC,eAAe;AAC3D,IAAM,mBAA2C,kBAAkB;AACnE,IAAM,kBAA0C,iBAAiB;AACjE,IAAM,oBAA6C,mBAAmB;AACtE,IAAM,mBAA4C,kBAAkB;;;AC3G3E,IAAM,gBAAgB,IAAI,IAAuB,eAAe,IAAI,CAAC,QAAQ,CAAC,IAAI,MAAM,GAAG,CAAC,CAAC;AAC7F,IAAM,eAAe,IAAI,IAAuB,cAAc,IAAI,CAAC,QAAQ,CAAC,IAAI,MAAM,GAAG,CAAC,CAAC;AAC3F,IAAM,kBAAkB,IAAI,IAC1B,iBAAiB,IAAI,CAAC,QAAQ,CAAC,IAAI,MAAM,GAAG,CAAC,CAC/C;AACA,IAAM,iBAAiB,IAAI,IAAyB,gBAAgB,IAAI,CAAC,QAAQ,CAAC,IAAI,MAAM,GAAG,CAAC,CAAC;AACjG,IAAM,mBAAmB,IAAI,IAC3B,kBAAkB,IAAI,CAAC,QAAQ,CAAC,IAAI,MAAM,GAAG,CAAC,CAChD;AACA,IAAM,kBAAkB,IAAI,IAC1B,iBAAiB,IAAI,CAAC,QAAQ,CAAC,IAAI,MAAM,GAAG,CAAC,CAC/C;AAOO,SAAS,aAAa,CAAC,MAAqC;AAAA,EACjE,OAAO,cAAc,IAAI,IAAI,KAAK,aAAa,IAAI,IAAI;AAAA;AASlD,SAAS,iBAAiB,CAAC,MAAyB;AAAA,EACzD,MAAM,OAAO,cAAc,IAAI;AAAA,EAC/B,IAAI,CAAC,MAAM;AAAA,IACT,MAAM,IAAI,MAAM,0BAA0B,MAAM;AAAA,EAClD;AAAA,EACA,OAAO;AAAA;AAQF,SAAS,eAAe,CAAC,MAAuC;AAAA,EACrE,OAAO,gBAAgB,IAAI,IAAI,KAAK,eAAe,IAAI,IAAI;AAAA;AAStD,SAAS,mBAAmB,CAAC,MAA2B;AAAA,EAC7D,MAAM,OAAO,gBAAgB,IAAI;AAAA,EACjC,IAAI,CAAC,MAAM;AAAA,IACT,MAAM,IAAI,MAAM,4BAA4B,MAAM;AAAA,EACpD;AAAA,EACA,OAAO;AAAA;;;AF/DT,IAAM,OAAO,kBAAkB,qBAAqB;AAE7C,IAAM,eAAuB;AAAA,EAClC,MAAM,KAAK;AAAA,EACX,SAAS,KAAK,UAAU,CAAC,GAAG,KAAK,OAAO,IAAI,CAAC;AAAA,EAC7C,aAAa,KAAK;AAAA,EAClB,UAAU,OAAO,SAAwB,SAAiB,WAAoC;AAAA,IAC5F,MAAM,eAAe,QAAQ,WAAyB,OAAO;AAAA,IAC7D,IAAI,CAAC,cAAc;AAAA,MACjB,OAAO;AAAA,IACT;AAAA,IAEA,MAAM,OAAO,QAAQ,QAAQ,MAAM,YAAY,KAAK;AAAA,IACpD,MAAM,gBAAgB,CAAC,SAAS,SAAS,UAAU,UAAU,OAAO;AAAA,IACpE,MAAM,kBAAkB,CAAC,WAAW,YAAY,SAAS,SAAS;AAAA,IAElE,MAAM,kBAAkB,cAAc,KAAK,CAAC,YAAY,KAAK,SAAS,OAAO,CAAC;AAAA,IAC9E,MAAM,oBAAoB,gBAAgB,KAAK,CAAC,YAAY,KAAK,SAAS,OAAO,CAAC;AAAA,IAElF,OAAO,mBAAmB;AAAA;AAAA,EAE5B,SAAS,OACP,SACA,SACA,QACA,UACA,aACG;AAAA,IACH,MAAM,eAAe,QAAQ,WAAyB,OAAO;AAAA,IAE7D,IAAI,CAAC,cAAc;AAAA,MACjB,IAAI,UAAU;AAAA,QACZ,MAAM,SAAS;AAAA,UACb,MAAM;AAAA,UACN,QAAQ,QAAQ,QAAQ;AAAA,QAC1B,CAAC;AAAA,MACH;AAAA,MACA,OAAO,EAAE,SAAS,OAAO,OAAO,kCAAkC;AAAA,IACpE;AAAA,IAEA,MAAM,iBAAiB,QAAQ,UAAU,QAAQ;AAAA,IACjD,IAAI,CAAC,gBAAgB;AAAA,MACnB,MAAM,WAAW;AAAA,MACjB,IAAI,UAAU;AAAA,QACZ,MAAM,SAAS;AAAA,UACb,MAAM;AAAA,UACN,QAAQ,QAAQ,QAAQ;AAAA,QAC1B,CAAC;AAAA,MACH;AAAA,MACA,OAAO,EAAE,SAAS,OAAO,OAAO,SAAS;AAAA,IAC3C;AAAA,IACA,aAAa,oBAAoB,cAAc;AAAA,IAE/C,OAAO,KAAK,2CAA2C,gBAAgB;AAAA,IAEvE,MAAM,WAAoB;AAAA,MACxB,MAAM;AAAA,MACN,QAAQ,QAAQ,QAAQ;AAAA,IAC1B;AAAA,IAEA,IAAI,UAAU;AAAA,MACZ,MAAM,SAAS,QAAQ;AAAA,IACzB;AAAA,IACA,OAAO,EAAE,SAAS,MAAM,MAAM,SAAS,KAAK;AAAA;AAAA,EAE9C,UAAW,KAAK,YAAY,CAAC;AAC/B;;AG/EA;AAAA;AAAA,YAOE;AAAA;AAAA;AAAA;;;ACEK,IAAM,4BAA4B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ADSzC,IAAM,iBAAiB,OACrB,SACA,UACA,UACwC;AAAA,EACxC,MAAM,SAAS,uBAAuB;AAAA,IACpC;AAAA,IACA,UAAU;AAAA,EACZ,CAAC;AAAA,EAED,SAAS,IAAI,EAAG,IAAI,GAAG,KAAK;AAAA,IAC1B,MAAM,WAAW,MAAM,QAAQ,SAAS,UAAU,YAAY;AAAA,MAC5D;AAAA,IACF,CAAC;AAAA,IAED,MAAM,iBAAiB,wBAAwB,QAAQ;AAAA,IAGvD,IAAI,gBAAgB,SAAS;AAAA,MAC3B,OAAO,EAAE,SAAS,eAAe,QAAQ;AAAA,IAC3C;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAGT,IAAM,QAAO,kBAAkB,iBAAiB;AAEzC,IAAM,iBAAyB;AAAA,EACpC,MAAM,MAAK;AAAA,EACX,SAAS,MAAK,UAAU,CAAC,GAAG,MAAK,OAAO,IAAI,CAAC;AAAA,EAC7C,aAAa,MAAK;AAAA,EAClB,UAAU,OAAO,SAAwB,SAAiB,WAAoC;AAAA,IAC5F,MAAM,eAAe,QAAQ,WAAyB,OAAO;AAAA,IAC7D,IAAI,CAAC,cAAc;AAAA,MACjB,OAAO;AAAA,IACT;AAAA,IAEA,MAAM,OAAO,QAAQ,QAAQ,MAAM,YAAY,KAAK;AAAA,IACpD,MAAM,kBAAkB;AAAA,MACtB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IAEA,MAAM,oBAAoB,gBAAgB,KAAK,CAAC,YAAY,KAAK,SAAS,OAAO,CAAC;AAAA,IAClF,MAAM,mBAAmB,6DAA6D,KACpF,QAAQ,QAAQ,QAAQ,EAC1B;AAAA,IAEA,OAAO,qBAAqB;AAAA;AAAA,EAE9B,SAAS,OACP,SACA,SACA,OACA,UACA,aACG;AAAA,IACH,MAAM,eAAe,QAAQ,WAAyB,OAAO;AAAA,IAE7D,IAAI,CAAC,cAAc;AAAA,MACjB,IAAI,UAAU;AAAA,QACZ,MAAM,SAAS;AAAA,UACb,MAAM;AAAA,UACN,QAAQ,QAAQ,QAAQ;AAAA,QAC1B,CAAC;AAAA,MACH;AAAA,MACA,OAAO,EAAE,SAAS,OAAO,OAAO,kCAAkC;AAAA,IACpE;AAAA,IAEA,MAAM,cAAc,MAAM,eAAe,SAAS,SAAS,KAAK;AAAA,IAChE,IAAI,CAAC,aAAa,SAAS;AAAA,MACzB,QAAO,MAAM,2CAA2C,QAAQ,QAAQ,IAAI;AAAA,MAC5E,IAAI,UAAU;AAAA,QACZ,MAAM,SAAS;AAAA,UACb,MAAM;AAAA,UACN,QAAQ,QAAQ,QAAQ;AAAA,QAC1B,CAAC;AAAA,MACH;AAAA,MACA,OAAO,EAAE,SAAS,OAAO,OAAO,6BAA6B;AAAA,IAC/D;AAAA,IAEA,QAAO,KAAK,uBAAuB,YAAY,UAAU;AAAA,IAEzD,IAAI;AAAA,MACF,MAAM,iBAAiB,QAAQ,UAAU,QAAQ;AAAA,MACjD,MAAM,SAAS,MAAM,aAAa,eAAe,YAAY,SAAS,cAAc;AAAA,MAEpF,IAAI,eAAe;AAAA,MAEnB,IAAI,OAAO,SAAS;AAAA,QAClB,eAAe,oCAAoC,OAAO;AAAA;AAAA;AAAA,QAC1D,IAAI,OAAO,QAAQ;AAAA,UACjB,gBAAgB;AAAA;AAAA,EAAoB,OAAO;AAAA;AAAA,QAC7C,EAAO;AAAA,UACL,gBAAgB;AAAA;AAAA,MAEpB,EAAO;AAAA,QACL,eAAe,iCAAiC,OAAO,eAAe,OAAO;AAAA;AAAA;AAAA,QAC7E,IAAI,OAAO,OAAO;AAAA,UAChB,gBAAgB,UAAU,OAAO;AAAA;AAAA,QACnC;AAAA,QACA,IAAI,OAAO,QAAQ;AAAA,UACjB,gBAAgB;AAAA;AAAA;AAAA,EAA4B,OAAO;AAAA;AAAA,QACrD;AAAA;AAAA,MAGF,MAAM,WAAoB;AAAA,QACxB,MAAM;AAAA,QACN,QAAQ,QAAQ,QAAQ;AAAA,MAC1B;AAAA,MAEA,IAAI,UAAU;AAAA,QACZ,MAAM,SAAS,QAAQ;AAAA,MACzB;AAAA,MACA,OAAO,EAAE,SAAS,OAAO,SAAS,MAAM,aAAa;AAAA,MACrD,OAAO,OAAO;AAAA,MACd,QAAO,MAAM,4BAA4B,KAAK;AAAA,MAC9C,MAAM,eAAe,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,MAC1E,IAAI,UAAU;AAAA,QACZ,MAAM,SAAS;AAAA,UACb,MAAM,8BAA8B;AAAA,UACpC,QAAQ,QAAQ,QAAQ;AAAA,QAC1B,CAAC;AAAA,MACH;AAAA,MACA,OAAO,EAAE,SAAS,OAAO,OAAO,aAAa;AAAA;AAAA;AAAA,EAGjD,UAAW,MAAK,YAAY,CAAC;AAC/B;;AErKA,mCAAS,mCAAwB,sBAAQ;AAIzC,IAAM,wBAAwB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA+B9B,SAAS,uBAAuB,CAAC,UAA8C;AAAA,EAC7E,MAAM,YAAY,SAAS,MAAM,4BAA4B;AAAA,EAC7D,IAAI,YAAY,IAAI;AAAA,IAClB,IAAI;AAAA,MACF,OAAO,KAAK,MAAM,UAAU,EAAE;AAAA,MAC9B,MAAM;AAAA,EAGV;AAAA,EAEA,IAAI;AAAA,IACF,MAAM,UAAU,SAAS,KAAK;AAAA,IAC9B,IAAI,QAAQ,WAAW,GAAG,KAAK,QAAQ,SAAS,GAAG,GAAG;AAAA,MACpD,OAAO,KAAK,MAAM,OAAO;AAAA,IAC3B;AAAA,IACA,MAAM;AAAA,EAIR,OAAO;AAAA;AAGF,IAAM,gBAAwB;AAAA,EACnC,MAAM;AAAA,EACN,SAAS;AAAA,IACP;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,aACE;AAAA,EAEF,UAAU,OAAO,UAAyB,YAAsC;AAAA,IAC9E,MAAM,OAAO,QAAQ,QAAQ,MAAM,YAAY,KAAK;AAAA,IAEpD,MAAM,kBAAkB;AAAA,MACtB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IAEA,MAAM,iBAAiB;AAAA,MACrB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IAEA,MAAM,oBAAoB,gBAAgB,KAAK,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;AAAA,IACxE,MAAM,mBAAmB,eAAe,KAAK,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;AAAA,IAEtE,OAAO,qBAAsB,oBAAoB,KAAK,SAAS,SAAS;AAAA;AAAA,EAG1E,SAAS,OACP,SACA,SACA,UAC0B;AAAA,IAC1B,MAAM,eAAe,QAAQ,WAAyB,OAAO;AAAA,IAC7D,IAAI,CAAC,cAAc;AAAA,MACjB,OAAO;AAAA,QACL,SAAS;AAAA,QACT,MAAM;AAAA,QACN,OAAO;AAAA,MACT;AAAA,IACF;AAAA,IAGA,MAAM,gBAAgB,SAAU,MAAM,QAAQ,aAAa,OAAO;AAAA,IAElE,MAAM,SAAS,wBAAuB;AAAA,MACpC,OAAO;AAAA,MACP,UAAU;AAAA,IACZ,CAAC;AAAA,IAED,IAAI,SAAqC;AAAA,IAGzC,MAAM,OAAO,QAAQ,QAAQ,MAAM,YAAY,KAAK;AAAA,IAEpD,IAAI,KAAK,SAAS,MAAM,MAAM,KAAK,SAAS,SAAS,KAAK,KAAK,SAAS,SAAS,IAAI;AAAA,MACnF,SAAS,EAAE,QAAQ,OAAO;AAAA,IAC5B,EAAO;AAAA,MAEL,IAAI;AAAA,QACF,MAAM,WAAW,MAAM,QAAQ,SAAS,WAAU,YAAY;AAAA,UAC5D;AAAA,QACF,CAAC;AAAA,QACD,SAAS,wBAAwB,OAAO,QAAQ,CAAC;AAAA,QACjD,OAAO,OAAO;AAAA,QACd,QAAO,MAAM,yCAAyC,KAAK;AAAA;AAAA;AAAA,IAI/D,IAAI,CAAC,QAAQ;AAAA,MAEX,SAAS,EAAE,QAAQ,OAAO;AAAA,IAC5B;AAAA,IAEA,MAAM,SAAS,MAAM,aAAa,cAAc,MAAM;AAAA,IAEtD,OAAO;AAAA,MACL,SAAS,OAAO;AAAA,MAChB,MAAM,OAAO;AAAA,IACf;AAAA;AAAA,EAGF,UAAU;AAAA,IACR;AAAA,MACE;AAAA,QACE,MAAM;AAAA,QACN,SAAS,EAAE,MAAM,6BAA6B;AAAA,MAChD;AAAA,MACA;AAAA,QACE,MAAM;AAAA,QACN,SAAS;AAAA,UACP,MAAM;AAAA;AAAA;AAAA,UACN,QAAQ;AAAA,QACV;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE;AAAA,QACE,MAAM;AAAA,QACN,SAAS,EAAE,MAAM,0CAA0C;AAAA,MAC7D;AAAA,MACA;AAAA,QACE,MAAM;AAAA,QACN,SAAS;AAAA,UACP,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UACN,QAAQ;AAAA,QACV;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE;AAAA,QACE,MAAM;AAAA,QACN,SAAS,EAAE,MAAM,8BAA8B;AAAA,MACjD;AAAA,MACA;AAAA,QACE,MAAM;AAAA,QACN,SAAS;AAAA,UACP,MAAM;AAAA,UACN,QAAQ;AAAA,QACV;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;;AC/MA;AACA;AACA;AACA;AACA,mBAAS;;;ACuNF,IAAM,oBAAoB;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAKO,IAAM,yBAAyB;AAAA,EACpC,UAAU;AAAA,EACV,KAAK;AAAA,EACL,aAAa;AAAA,EACb,iBAAiB;AAAA,EACjB,WAAW;AACb;;;AD7NA,IAAM,sBAAsB;AAG5B,IAAM,oBAAoB;AAG1B,IAAM,mBAAmB;AAKzB,SAAS,UAAU,CAAC,OAAuB;AAAA,EACzC,IAAI,CAAC;AAAA,IAAO,OAAO;AAAA,EACnB,IAAI,UAAU;AAAA,IAAK,OAAO,GAAG,QAAQ;AAAA,EACrC,IAAI,MAAM,WAAW,IAAI;AAAA,IAAG,OAAO,KAAK,KAAK,GAAG,QAAQ,GAAG,MAAM,MAAM,CAAC,CAAC;AAAA,EACzE,OAAO;AAAA;AAMT,SAAS,WAAW,CAAC,KAA4B;AAAA,EAC/C,OAAO,QACJ,WAAW,QAAQ,EACnB,OAAO,OAAO,EAAE,EAChB,OAAO,KAAK;AAAA;AAMV,SAAS,mBAAmB,GAAW;AAAA,EAC5C,OAAO,WAAW,iBAAiB;AAAA;AAM9B,SAAS,qBAAqB,GAAW;AAAA,EAC9C,OAAO,WAAW,mBAAmB;AAAA;AAMvC,SAAS,SAAS,CAAC,UAAwB;AAAA,EACzC,MAAM,MAAM,KAAK,QAAQ,QAAQ;AAAA,EACjC,GAAG,UAAU,KAAK,EAAE,WAAW,KAAK,CAAC;AAAA;AAMvC,SAAS,gBAAgB,CAAC,OAA0C;AAAA,EAClE,MAAM,UAAU,OAAO,KAAK,KAAK;AAAA,EACjC,OAAO,UAAU,QAAQ,YAAY,IAAI;AAAA;AAM3C,SAAS,kBAAkB,CACzB,WACkC;AAAA,EAClC,IAAI,CAAC,MAAM,QAAQ,SAAS,KAAK,UAAU,WAAW,GAAG;AAAA,IACvD,OAAO;AAAA,EACT;AAAA,EAEA,IAAI,UAAU;AAAA,EACd,MAAM,OAAO,UAAU,IAAI,CAAC,UAAU;AAAA,IACpC,IAAI,MAAM;AAAA,MAAI,OAAO;AAAA,IACrB,UAAU;AAAA,IACV,OAAO,KAAK,OAAO,IAAI,QAAO,WAAW,EAAE;AAAA,GAC5C;AAAA,EAED,OAAO,UAAU,OAAO;AAAA;AAM1B,SAAS,gBAAgB,CACvB,SACA,QACoB;AAAA,EACpB,MAAM,YAAkC,CAAC;AAAA,EACzC,MAAM,OAAO,IAAI;AAAA,EAEjB,MAAM,YAAY,CAAC,UAA8B;AAAA,IAC/C,MAAM,MAAM,iBAAiB,MAAM,OAAO;AAAA,IAC1C,IAAI,CAAC,OAAO,KAAK,IAAI,GAAG;AAAA,MAAG;AAAA,IAC3B,KAAK,IAAI,GAAG;AAAA,IACZ,UAAU,KAAK,KAAK;AAAA;AAAA,EAGtB,WAAW,SAAS,QAAQ,aAAa,CAAC;AAAA,IAAG,UAAU,KAAK;AAAA,EAC5D,WAAW,SAAS,OAAO,aAAa,CAAC;AAAA,IAAG,UAAU,KAAK;AAAA,EAE3D,OAAO;AAAA,IACL,UAAU,QAAQ,YAAY,OAAO;AAAA,IACrC,KAAK,QAAQ,OAAO,OAAO;AAAA,IAC3B,aAAa,QAAQ,eAAe,OAAO;AAAA,IAC3C,iBAAiB,QAAQ,mBAAmB,OAAO;AAAA,IACnD,WAAW,UAAU,SAAS,IAAI,YAAY;AAAA,EAChD;AAAA;AAMK,SAAS,kBAAkB,CAAC,MAA4C;AAAA,EAC7E,MAAM,aAAa,KAAK,QAAQ,MAAM,KAAK;AAAA,EAC3C,MAAM,QAAQ,KAAK,QAAQ,OAAO,KAAK;AAAA,EACvC,MAAM,SAAS,KAAK,KAAK,OAAO;AAAA,EAGhC,MAAM,gBAAgB,OAAO;AAAA,EAC7B,IAAI,eAAe;AAAA,IACjB,MAAM,OAAO,OAAO;AAAA,IACpB,OAAO,oBAAoB,OAAO,iBAAiB,MAAM,aAAa,IAAI;AAAA,IAC1E,OAAO,OAAO;AAAA,EAChB;AAAA,EAGA,YAAY,KAAK,UAAU,OAAO,QAAQ,MAAM,GAAG;AAAA,IACjD,MAAM,YAAY,mBAAmB,MAAM,SAAS;AAAA,IACpD,IAAI,cAAc,MAAM,WAAW;AAAA,MACjC,OAAO,OAAO,KAAK,OAAO,UAAU;AAAA,IACtC;AAAA,EACF;AAAA,EAEA,OAAO;AAAA,IACL,SAAS;AAAA,IACT,QAAQ;AAAA,MACN,MAAM,cAAc,WAAW,SAAS,IAAI,aAAa;AAAA,MACzD,OAAO,SAAS,MAAM,SAAS,IAAI,QAAQ;AAAA,IAC7C;AAAA,IACA,UAAU;AAAA,MACR,UAAU,KAAK,UAAU;AAAA,MACzB,KAAK,KAAK,UAAU;AAAA,MACpB,aAAa,KAAK,UAAU;AAAA,MAC5B,iBAAiB,KAAK,UAAU;AAAA,IAClC;AAAA,IACA;AAAA,EACF;AAAA;AAMF,SAAS,aAAa,GAAW;AAAA,EAC/B,OAAO,QAAO,YAAY,EAAE,EAAE,SAAS,WAAW;AAAA;AAM7C,SAAS,qBAAqB,GAA0B;AAAA,EAC7D,MAAM,WAAW,oBAAoB;AAAA,EAErC,IAAI,CAAC,GAAG,WAAW,QAAQ,GAAG;AAAA,IAC5B,MAAM,QAAO,mBAAmB,EAAE,SAAS,GAAG,QAAQ,CAAC,EAAE,CAAC;AAAA,IAC1D,OAAO;AAAA,MACL,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,KAAK;AAAA,MACL;AAAA,MACA,MAAM,YAAY,IAAI;AAAA,IACxB;AAAA,EACF;AAAA,EAEA,MAAM,MAAM,GAAG,aAAa,UAAU,MAAM;AAAA,EAC5C,IAAI,SAAmC;AAAA,EAEvC,IAAI;AAAA,IACF,SAAS,KAAK,MAAM,GAAG;AAAA,IACvB,OAAO,YAAY;AAAA,IACnB,QAAO,KACL,EAAE,KAAK,iBAAiB,YAAY,SAAS,GAC7C,kEACF;AAAA,IACA,SAAS;AAAA;AAAA,EAGX,MAAM,OACJ,QAAQ,YAAY,IAChB,mBAAmB,MAAM,IACzB,mBAAmB,EAAE,SAAS,GAAG,QAAQ,CAAC,EAAE,CAAC;AAAA,EAEnD,IAAI,UAAU,OAAO,YAAY,GAAG;AAAA,IAClC,QAAO,KACL,EAAE,KAAK,iBAAiB,SAAS,OAAO,SAAS,SAAS,GAC1D,iDACF;AAAA,EACF;AAAA,EAEA,OAAO;AAAA,IACL,MAAM;AAAA,IACN,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,IACA,MAAM,YAAY,GAAG;AAAA,EACvB;AAAA;AAMK,SAAS,aAAa,GAAsB;AAAA,EACjD,MAAM,WAAW,oBAAoB;AAAA,EAErC,IAAI;AAAA,IACF,IAAI,CAAC,GAAG,WAAW,QAAQ,GAAG;AAAA,MAC5B,QAAO,MACL,EAAE,KAAK,iBAAiB,SAAS,GACjC,qDACF;AAAA,MACA,OAAO,mBAAmB,EAAE,SAAS,GAAG,QAAQ,CAAC,EAAE,CAAC;AAAA,IACtD;AAAA,IAEA,MAAM,MAAM,GAAG,aAAa,UAAU,MAAM;AAAA,IAC5C,IAAI;AAAA,IAEJ,IAAI;AAAA,MACF,SAAS,KAAK,MAAM,GAAG;AAAA,MACvB,OAAO,YAAY;AAAA,MACnB,QAAO,MACL,EAAE,KAAK,iBAAiB,YAAY,SAAS,GAC7C,+EACF;AAAA,MACA,OAAO,mBAAmB,EAAE,SAAS,GAAG,QAAQ,CAAC,EAAE,CAAC;AAAA;AAAA,IAGtD,IAAI,QAAQ,YAAY,GAAG;AAAA,MACzB,QAAO,KACL,EAAE,KAAK,iBAAiB,SAAS,QAAQ,SAAS,SAAS,GAC3D,wDACF;AAAA,MACA,OAAO,mBAAmB,EAAE,SAAS,GAAG,QAAQ,CAAC,EAAE,CAAC;AAAA,IACtD;AAAA,IAEA,OAAO,mBAAmB,MAAM;AAAA,IAChC,OAAO,OAAO;AAAA,IACd,QAAO,MACL,EAAE,KAAK,iBAAiB,OAAO,SAAS,GACxC,yFACF;AAAA,IACA,OAAO,mBAAmB,EAAE,SAAS,GAAG,QAAQ,CAAC,EAAE,CAAC;AAAA;AAAA;AAQjD,SAAS,aAAa,CAAC,MAA+B;AAAA,EAC3D,MAAM,WAAW,oBAAoB;AAAA,EACrC,IAAI;AAAA,IACF,UAAU,QAAQ;AAAA,IAClB,GAAG,cAAc,UAAU,GAAG,KAAK,UAAU,MAAM,MAAM,CAAC;AAAA,GAAO;AAAA,MAC/D,MAAM;AAAA,IACR,CAAC;AAAA,IAED,IAAI;AAAA,MACF,GAAG,UAAU,UAAU,GAAK;AAAA,MAC5B,MAAM;AAAA,IAGR,OAAO,OAAO;AAAA,IACd,QAAO,MACL,EAAE,KAAK,iBAAiB,OAAO,SAAS,GACxC,uCACF;AAAA,IACA,MAAM,IAAI,MAAM,4CAA4C,aAAa,OAAO;AAAA;AAAA;AAQ7E,SAAS,eAAe,GAAsB;AAAA,EACnD,MAAM,SAAS,cAAc;AAAA,EAC7B,MAAM,OAAO,mBAAmB,MAAM;AAAA,EAEtC,MAAM,aAAa,KAAK,QAAQ,MAAM,KAAK;AAAA,EAC3C,MAAM,QAAQ,KAAK,QAAQ,OAAO,KAAK;AAAA,EAEvC,MAAM,UAA6B;AAAA,OAC9B;AAAA,IACH,QAAQ;AAAA,MACN,MAAM,cAAc,WAAW,SAAS,IAAI,aAAa,sBAAsB;AAAA,MAC/E,OAAO,SAAS,MAAM,SAAS,IAAI,QAAQ,cAAc;AAAA,IAC3D;AAAA,EACF;AAAA,EAIA,IAAI;AAAA,IACF,cAAc,OAAO;AAAA,IACrB,OAAO,OAAO;AAAA,IACd,QAAO,KACL,EAAE,KAAK,iBAAiB,MAAM,GAC9B,6DACE,uDACJ;AAAA,IAEA,MAAM;AAAA;AAAA,EAGR,OAAO;AAAA;AAMT,SAAS,iBAAiB,CAAC,OAAiC,UAAsC;AAAA,EAChG,IAAI,UAAU,eAAe,UAAU,UAAU,UAAU,QAAQ;AAAA,IACjE,OAAO;AAAA,EACT;AAAA,EACA,OAAO;AAAA;AAMT,SAAS,YAAY,CAAC,OAA4B,UAA4B;AAAA,EAC5E,IAAI,UAAU,YAAY,UAAU,SAAS,UAAU,WAAW;AAAA,IAChE,OAAO;AAAA,EACT;AAAA,EACA,OAAO;AAAA;AAOF,SAAS,gBAAgB,CAC9B,SACA,WACuB;AAAA,EAGvB,IAAI;AAAA,EACJ,IAAI;AAAA,IACF,OAAO,gBAAgB;AAAA,IACvB,OAAO,OAAO;AAAA,IAEd,QAAO,KACL,EAAE,KAAK,iBAAiB,MAAM,GAC9B,kEACF;AAAA,IACA,OAAO,cAAc;AAAA;AAAA,EAGvB,OAAO,yBAAyB;AAAA,IAC9B;AAAA,IACA;AAAA,IACA;AAAA,IACA,MAAM,oBAAoB;AAAA,IAC1B,YAAY,WAAW,KAAK,QAAQ,QAAQ,sBAAsB,CAAC;AAAA,IACnE,OAAO,KAAK,QAAQ,SAAS;AAAA,EAC/B,CAAC;AAAA;AAMI,SAAS,wBAAwB,CAAC,QAOf;AAAA,EACxB,MAAM,OAAO,mBAAmB,OAAO,IAAI;AAAA,EAC3C,MAAM,WAAW,KAAK,YAAY,CAAC;AAAA,EACnC,MAAM,WAAW,OAAO,WAAW;AAAA,EACnC,MAAM,QAAQ,KAAK,SAAS,aAAa,CAAC;AAAA,EAC1C,MAAM,WAAW,KAAK,SAAS,QAAQ,CAAC;AAAA,EAExC,MAAM,mBAAmB,OAAO,WAAW,YAAY,uBAAuB;AAAA,EAC9E,MAAM,cAAc,OAAO,WAAW,OAAO,uBAAuB;AAAA,EACpE,MAAM,sBAAsB,OAAO,WAAW,eAAe,uBAAuB;AAAA,EACpF,MAAM,0BACJ,OAAO,WAAW,mBAAmB,uBAAuB;AAAA,EAE9D,MAAM,mBAAoD;AAAA,IACxD,UAAU,kBAAkB,SAAS,UAAU,gBAAgB;AAAA,IAC/D,KAAK,aAAa,SAAS,KAAK,WAAW;AAAA,IAC3C,aAAa,kBACX,SAAS,eAAe,qBACxB,mBACF;AAAA,IACA,iBAAiB,QAAQ,SAAS,mBAAmB,uBAAuB;AAAA,EAC9E;AAAA,EAEA,MAAM,gBAAiD;AAAA,IACrD,UAAU,kBACR,MAAM,YAAY,SAAS,YAAY,iBAAiB,UACxD,iBAAiB,QACnB;AAAA,IACA,KAAK,aAAa,MAAM,OAAO,SAAS,OAAO,iBAAiB,KAAK,iBAAiB,GAAG;AAAA,IACzF,aAAa,kBACX,MAAM,eAAe,SAAS,eAAe,iBAAiB,aAC9D,iBAAiB,WACnB;AAAA,IACA,iBAAiB,QACf,MAAM,mBAAmB,SAAS,mBAAmB,iBAAiB,eACxE;AAAA,EACF;AAAA,EAEA,MAAM,YAAY;AAAA,IAChB,GAAI,MAAM,QAAQ,SAAS,SAAS,IAAI,SAAS,YAAY,CAAC;AAAA,IAC9D,GAAI,MAAM,QAAQ,MAAM,SAAS,IAAI,MAAM,YAAY,CAAC;AAAA,EAC1D;AAAA,EAEA,OAAO;AAAA,IACL,MAAM,OAAO,QAAQ,oBAAoB;AAAA,IACzC,YAAY,WAAW,OAAO,cAAc,KAAK,QAAQ,QAAQ,sBAAsB,CAAC;AAAA,IACxF,OAAO,OAAO,SAAS,KAAK,QAAQ,SAAS;AAAA,IAC7C,UAAU;AAAA,IACV,OAAO;AAAA,IACP;AAAA,IACA;AAAA,EACF;AAAA;AAMK,SAAS,cAAc,CAC5B,SACA,YAC2B;AAAA,EAC3B,IAAI,CAAC,QAAQ,UAAU,CAAC,YAAY,cAAc;AAAA,IAChD,OAAO;AAAA,EACT;AAAA,EAEA,MAAM,eAAe,WAAW;AAAA,EAEhC,WAAW,SAAS,SAAS;AAAA,IAC3B,MAAM,UAAU,MAAM,SAAS,KAAK;AAAA,IACpC,IAAI,CAAC;AAAA,MAAS;AAAA,IAEd,MAAM,UAAU,QAAQ,SAAS,GAAG,KAAK,QAAQ,SAAS,IAAI,KAAK,QAAQ,SAAS,GAAG;AAAA,IACvF,IAAI,CAAC;AAAA,MAAS;AAAA,IAEd,IAAI,eAAe,SAAS,YAAY,GAAG;AAAA,MACzC,OAAO;AAAA,IACT;AAAA,EACF;AAAA,EAEA,OAAO;AAAA;AAMT,SAAS,cAAc,CAAC,SAAiB,QAAyB;AAAA,EAChE,MAAM,UAAU,QAAQ,KAAK;AAAA,EAC7B,IAAI,CAAC;AAAA,IAAS,OAAO;AAAA,EAErB,MAAM,WAAW,QAAQ,WAAW,GAAG,IAAI,WAAW,OAAO,IAAI;AAAA,EACjE,MAAM,cAAc,OAAO,KAAK,QAAQ;AAAA,EAExC,IAAI,oBAAoB;AAAA,EACxB,IAAI,mBAAmB;AAAA,EAEvB,IAAI,QAAQ,aAAa,WAAW,CAAC,aAAa;AAAA,IAChD,oBAAoB,YAAY,QAAQ,KAAK;AAAA,IAC7C,mBAAmB,YAAY,MAAM,KAAK;AAAA,EAC5C;AAAA,EAEA,oBAAoB,qBAAqB,iBAAiB;AAAA,EAC1D,mBAAmB,qBAAqB,gBAAgB;AAAA,EAExD,MAAM,QAAQ,aAAa,iBAAiB;AAAA,EAC5C,OAAO,MAAM,KAAK,gBAAgB;AAAA;AAMpC,SAAS,oBAAoB,CAAC,OAAuB;AAAA,EACnD,IAAI,QAAQ,aAAa,SAAS;AAAA,IAChC,MAAM,WAAW,MAAM,QAAQ,eAAe,EAAE;AAAA,IAChD,OAAO,SAAS,QAAQ,OAAO,GAAG,EAAE,YAAY;AAAA,EAClD;AAAA,EACA,OAAO,MAAM,QAAQ,SAAS,GAAG,EAAE,YAAY;AAAA;AAMjD,SAAS,WAAW,CAAC,OAA8B;AAAA,EACjD,IAAI;AAAA,IACF,OAAO,GAAG,aAAa,KAAK;AAAA,IAC5B,MAAM;AAAA,IACN,OAAO;AAAA;AAAA;AAOX,SAAS,YAAY,CAAC,SAAyB;AAAA,EAC7C,IAAI,QAAQ;AAAA,EACZ,IAAI,IAAI;AAAA,EAER,OAAO,IAAI,QAAQ,QAAQ;AAAA,IACzB,MAAM,KAAK,QAAQ;AAAA,IAEnB,IAAI,OAAO,KAAK;AAAA,MACd,MAAM,OAAO,QAAQ,IAAI;AAAA,MACzB,IAAI,SAAS,KAAK;AAAA,QAChB,SAAS;AAAA,QACT,KAAK;AAAA,QACL;AAAA,MACF;AAAA,MACA,SAAS;AAAA,MACT,KAAK;AAAA,MACL;AAAA,IACF;AAAA,IAEA,IAAI,OAAO,KAAK;AAAA,MACd,SAAS;AAAA,MACT,KAAK;AAAA,MACL;AAAA,IACF;AAAA,IAEA,SAAS,GAAG,QAAQ,uBAAuB,MAAM;AAAA,IACjD,KAAK;AAAA,EACP;AAAA,EAEA,SAAS;AAAA,EACT,OAAO,IAAI,OAAO,OAAO,GAAG;AAAA;AAOvB,SAAS,kBAAkB,CAChC,WACA,SACA,OACA,SACA,cACS;AAAA,EACT,MAAM,SAAS,WAAW;AAAA,EAC1B,MAAM,SAAS,UAAU,UAAU,CAAC;AAAA,EACpC,MAAM,WAAW,OAAO,WAAW,CAAC;AAAA,EACpC,MAAM,YAAY,MAAM,QAAQ,SAAS,SAAS,IAAI,SAAS,YAAY,CAAC;AAAA,EAE5E,MAAM,gBAAgB,UAAU,IAAI,CAAC,SACnC,KAAK,YAAY,MAAM,UACnB;AAAA,OACK;AAAA,IACH,IAAI,KAAK,MAAM,QAAO,WAAW;AAAA,IACjC,YAAY,KAAK,IAAI;AAAA,IACrB,iBAAiB;AAAA,IACjB,kBAAkB;AAAA,EACpB,IACA,IACN;AAAA,EAEA,OAAO,UAAU,KAAK,UAAU,WAAW,cAAc;AAAA,EACzD,UAAU,SAAS;AAAA,EAEnB,IAAI;AAAA,IACF,cAAc,SAAS;AAAA,IACvB,OAAO;AAAA,IACP,OAAO,OAAO;AAAA,IACd,QAAO,KACL,EAAE,KAAK,iBAAiB,OAAO,SAAS,MAAM,QAAQ,GACtD,8DACF;AAAA,IACA,OAAO;AAAA;AAAA;AAQJ,SAAS,iBAAiB,CAC/B,WACA,SACA,SACS;AAAA,EACT,MAAM,SAAS,WAAW;AAAA,EAC1B,MAAM,SAAS,UAAU,UAAU,CAAC;AAAA,EACpC,MAAM,WAAW,OAAO,WAAW,CAAC;AAAA,EACpC,MAAM,YAAY,MAAM,QAAQ,SAAS,SAAS,IAAI,SAAS,YAAY,CAAC;AAAA,EAE5E,MAAM,UAAU,QAAQ,KAAK;AAAA,EAC7B,IAAI,CAAC,SAAS;AAAA,IACZ,QAAO,KAAK,EAAE,KAAK,gBAAgB,GAAG,6CAA6C;AAAA,IACnF,OAAO;AAAA,EACT;AAAA,EAEA,IAAI,UAAU,KAAK,CAAC,UAAU,MAAM,YAAY,OAAO,GAAG;AAAA,IACxD,QAAO,MAAM,EAAE,KAAK,iBAAiB,SAAS,QAAQ,GAAG,8BAA8B;AAAA,IACvF,OAAO;AAAA,EACT;AAAA,EAEA,UAAU,KAAK;AAAA,IACb,IAAI,QAAO,WAAW;AAAA,IACtB,SAAS;AAAA,IACT,YAAY,KAAK,IAAI;AAAA,EACvB,CAAC;AAAA,EAED,OAAO,UAAU,KAAK,UAAU,UAAU;AAAA,EAC1C,UAAU,SAAS;AAAA,EAEnB,IAAI;AAAA,IACF,cAAc,SAAS;AAAA,IACvB,QAAO,KACL,EAAE,KAAK,iBAAiB,SAAS,SAAS,SAAS,OAAO,GAC1D,4BACF;AAAA,IACA,OAAO;AAAA,IACP,OAAO,OAAO;AAAA,IACd,QAAO,MACL,EAAE,KAAK,iBAAiB,OAAO,SAAS,QAAQ,GAChD,6CACF;AAAA,IACA,OAAO;AAAA;AAAA;AAOJ,SAAS,WAAW,CAAC,GAAiB,GAA+B;AAAA,EAC1E,MAAM,QAAsC,EAAE,MAAM,GAAG,WAAW,GAAG,MAAM,EAAE;AAAA,EAC7E,OAAO,MAAM,MAAM,MAAM,KAAK,IAAI;AAAA;AAM7B,SAAS,MAAM,CAAC,GAAY,GAAqB;AAAA,EACtD,MAAM,QAAiC,EAAE,KAAK,GAAG,WAAW,GAAG,QAAQ,EAAE;AAAA,EACzE,OAAO,MAAM,MAAM,MAAM,KAAK,IAAI;AAAA;;AEzpBpC;AACA;AAeA,IAAM,6BAA6B,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK;AAAA,GAAM,MAAM,KAAK,GAAG,CAAC;AAKhF,IAAM,uBAAuB,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,KAAK;AAAA,GAAM,IAAI,CAAC;AAKtE,IAAM,6BAA6B,IAAI,IAAI;AAAA,EACzC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EACA;AACF,CAAC;AAKD,SAAS,mBAAmB,CAAC,MAA0C;AAAA,EACrE,OAAO,QAAQ,QAAQ,qBAAqB,IAAI,IAAI,CAAC;AAAA;AAMvD,SAAS,gBAAgB,CAAC,UAA2B;AAAA,EACnD,IAAI;AAAA,IACF,MAAM,OAAO,IAAG,SAAS,QAAQ;AAAA,IACjC,IAAI,CAAC,KAAK,OAAO;AAAA,MAAG,OAAO;AAAA,IAC3B,IAAI,QAAQ,aAAa,SAAS;AAAA,MAChC,IAAG,WAAW,UAAU,IAAG,UAAU,IAAI;AAAA,IAC3C;AAAA,IACA,OAAO;AAAA,IACP,MAAM;AAAA,IACN,OAAO;AAAA;AAAA;AAOX,SAAS,WAAU,CAAC,OAAuB;AAAA,EACzC,IAAI,CAAC;AAAA,IAAO,OAAO;AAAA,EACnB,IAAI,UAAU;AAAA,IAAK,4BAA0B,QAAQ;AAAA,EACrD,IAAI,MAAM,WAAW,IAAI;AAAA,IAAG,OAAO,MAAK,0BAAwB,QAAQ,GAAG,MAAM,MAAM,CAAC,CAAC;AAAA,EACzF,OAAO;AAAA;AAMT,SAAS,eAAe,CAAC,SAAgC;AAAA,EACvD,MAAM,UAAU,QAAQ,KAAK;AAAA,EAC7B,IAAI,CAAC;AAAA,IAAS,OAAO;AAAA,EAErB,MAAM,QAAQ,QAAQ;AAAA,EACtB,IAAI,UAAU,OAAO,UAAU,KAAK;AAAA,IAClC,MAAM,MAAM,QAAQ,QAAQ,OAAO,CAAC;AAAA,IACpC,IAAI,MAAM;AAAA,MAAG,OAAO,QAAQ,MAAM,GAAG,GAAG;AAAA,IACxC,OAAO,QAAQ,MAAM,CAAC;AAAA,EACxB;AAAA,EAEA,MAAM,QAAQ,UAAU,KAAK,OAAO;AAAA,EACpC,OAAO,QAAQ,MAAM,KAAK;AAAA;AAM5B,SAAS,qBAAqB,CAC5B,eACA,KACA,KACoB;AAAA,EACpB,MAAM,WAAW,cAAc,WAAW,GAAG,IAAI,YAAW,aAAa,IAAI;AAAA,EAE7E,IAAI,SAAS,SAAS,GAAG,KAAK,SAAS,SAAS,IAAI,GAAG;AAAA,IACrD,IAAI,MAAK,WAAW,QAAQ,GAAG;AAAA,MAC7B,OAAO,iBAAiB,QAAQ,IAAI,WAAW;AAAA,IACjD;AAAA,IACA,MAAM,OAAO,KAAK,KAAK,KAAK,QAAQ,IAAI;AAAA,IACxC,MAAM,YAAY,MAAK,QAAQ,MAAM,QAAQ;AAAA,IAC7C,OAAO,iBAAiB,SAAS,IAAI,YAAY;AAAA,EACnD;AAAA,EAEA,MAAM,UAAU,KAAK,QAAQ,KAAK,QAAQ,QAAQ,IAAI,QAAQ,QAAQ,IAAI,QAAQ;AAAA,EAClF,MAAM,UAAU,QAAQ,MAAM,MAAK,SAAS,EAAE,OAAO,OAAO;AAAA,EAC5D,MAAM,eAAe,QAAQ,aAAa,WAAW,MAAK,QAAQ,QAAQ,EAAE,SAAS;AAAA,EAErF,MAAM,aACJ,QAAQ,aAAa,UACjB,eACE,CAAC,EAAE,KAED,KAAK,WACL,KAAK,WACL,QAAQ,IAAI,WACZ,QAAQ,IAAI,WACZ,uBAEC,MAAM,GAAG,EACT,IAAI,CAAC,QAAQ,IAAI,YAAY,CAAC,IACnC,CAAC,EAAE;AAAA,EAET,WAAW,SAAS,SAAS;AAAA,IAC3B,WAAW,OAAO,YAAY;AAAA,MAC5B,MAAM,YAAY,MAAK,KAAK,OAAO,WAAW,GAAG;AAAA,MACjD,IAAI,iBAAiB,SAAS,GAAG;AAAA,QAC/B,OAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AAAA,EAEA;AAAA;AAMK,SAAS,wBAAwB,CACtC,SACA,KACA,KAC0B;AAAA,EAC1B,MAAM,gBAAgB,gBAAgB,OAAO;AAAA,EAC7C,IAAI,CAAC;AAAA,IAAe,OAAO;AAAA,EAE3B,MAAM,eAAe,sBAAsB,eAAe,KAAK,GAAG;AAAA,EAClE,MAAM,iBAAiB,eAAe,MAAK,SAAS,YAAY,IAAI;AAAA,EAEpE,OAAO,EAAE,eAAe,cAAc,eAAe;AAAA;AAMhD,SAAS,sBAAsB,CACpC,MACA,KACA,KAC0B;AAAA,EAC1B,MAAM,gBAAgB,KAAK,IAAI,KAAK;AAAA,EACpC,IAAI,CAAC;AAAA,IAAe,OAAO;AAAA,EAE3B,MAAM,eAAe,sBAAsB,eAAe,KAAK,GAAG;AAAA,EAClE,MAAM,iBAAiB,eAAe,MAAK,SAAS,YAAY,IAAI;AAAA,EAEpE,OAAO,EAAE,eAAe,cAAc,eAAe;AAAA;AAWvD,SAAS,iBAAiB,CACxB,SACA,QACkF;AAAA,EAClF,MAAM,QAAkB,CAAC;AAAA,EACzB,IAAI,MAAM;AAAA,EACV,IAAI,WAAW;AAAA,EACf,IAAI,WAAW;AAAA,EACf,IAAI,UAAU;AAAA,EACd,IAAI,WAAW;AAAA,EAEf,MAAM,WAAW,MAAM;AAAA,IACrB,MAAM,UAAU,IAAI,KAAK;AAAA,IACzB,IAAI;AAAA,MAAS,MAAM,KAAK,OAAO;AAAA,IAC/B,MAAM;AAAA;AAAA,EAGR,SAAS,IAAI,EAAG,IAAI,QAAQ,QAAQ,KAAK,GAAG;AAAA,IAC1C,MAAM,KAAK,QAAQ;AAAA,IACnB,MAAM,OAAO,QAAQ,IAAI;AAAA,IAEzB,IAAI,SAAS;AAAA,MACX,OAAO;AAAA,MACP,UAAU;AAAA,MACV;AAAA,IACF;AAAA,IAEA,IAAI,CAAC,YAAY,CAAC,YAAY,OAAO,MAAM;AAAA,MACzC,UAAU;AAAA,MACV,OAAO;AAAA,MACP;AAAA,IACF;AAAA,IAEA,IAAI,UAAU;AAAA,MACZ,IAAI,OAAO;AAAA,QAAK,WAAW;AAAA,MAC3B,OAAO;AAAA,MACP;AAAA,IACF;AAAA,IAEA,IAAI,UAAU;AAAA,MACZ,IAAI,OAAO,QAAQ,oBAAoB,IAAI,GAAG;AAAA,QAC5C,OAAO;AAAA,QACP,OAAO;AAAA,QACP,KAAK;AAAA,QACL;AAAA,MACF;AAAA,MACA,IAAI,OAAO,OAAO,SAAS,KAAK;AAAA,QAC9B,OAAO,EAAE,IAAI,OAAO,QAAQ,+BAA+B;AAAA,MAC7D;AAAA,MACA,IAAI,OAAO,KAAK;AAAA,QACd,OAAO,EAAE,IAAI,OAAO,QAAQ,6BAA6B;AAAA,MAC3D;AAAA,MACA,IAAI,OAAO;AAAA,KAAQ,OAAO,MAAM;AAAA,QAC9B,OAAO,EAAE,IAAI,OAAO,QAAQ,mCAAmC;AAAA,MACjE;AAAA,MACA,IAAI,OAAO;AAAA,QAAK,WAAW;AAAA,MAC3B,OAAO;AAAA,MACP;AAAA,IACF;AAAA,IAEA,IAAI,OAAO,KAAK;AAAA,MACd,WAAW;AAAA,MACX,OAAO;AAAA,MACP;AAAA,IACF;AAAA,IAEA,IAAI,OAAO,KAAK;AAAA,MACd,WAAW;AAAA,MACX,OAAO;AAAA,MACP;AAAA,IACF;AAAA,IAEA,MAAM,SAAS,OAAO,IAAI,MAAM,CAAC;AAAA,IACjC,IAAI,OAAO,WAAW,YAAY,YAAY,QAAQ;AAAA,MACpD,OAAO,EAAE,IAAI,OAAO,QAAQ,OAAO,OAAO;AAAA,IAC5C;AAAA,IACA,IAAI,WAAW,SAAS;AAAA,MACtB,SAAS;AAAA,MACT,WAAW;AAAA,MACX;AAAA,IACF;AAAA,IACA,IAAI,WAAW;AAAA,MAAQ;AAAA,IACvB,OAAO;AAAA,EACT;AAAA,EAEA,IAAI,WAAW,YAAY,UAAU;AAAA,IACnC,OAAO,EAAE,IAAI,OAAO,QAAQ,kCAAkC;AAAA,EAChE;AAAA,EAEA,SAAS;AAAA,EACT,OAAO,EAAE,IAAI,MAAM,OAAO,SAAS;AAAA;AAMrC,SAAS,kBAAkB,CAAC,SAAuE;AAAA,EACjG,IAAI,eAAe;AAAA,EAEnB,MAAM,SAAS,kBAAkB,SAAS,CAAC,IAAI,SAAS;AAAA,IACtD,IAAI,OAAO,OAAO,SAAS,KAAK;AAAA,MAC9B,OAAO,EAAE,QAAQ,8BAA8B;AAAA,IACjD;AAAA,IACA,IAAI,OAAO,OAAO,SAAS,KAAK;AAAA,MAC9B,OAAO,EAAE,QAAQ,8BAA8B;AAAA,IACjD;AAAA,IACA,IAAI,OAAO,KAAK;AAAA,MACd,eAAe;AAAA,MACf,OAAO;AAAA,IACT;AAAA,IACA,IAAI,OAAO,OAAO,OAAO,KAAK;AAAA,MAC5B,OAAO,EAAE,QAAQ,4BAA4B,KAAK;AAAA,IACpD;AAAA,IACA,IAAI,2BAA2B,IAAI,EAAE,GAAG;AAAA,MACtC,OAAO,EAAE,QAAQ,4BAA4B,KAAK;AAAA,IACpD;AAAA,IACA,IAAI,OAAO,OAAO,SAAS,KAAK;AAAA,MAC9B,OAAO,EAAE,QAAQ,+BAA+B;AAAA,IAClD;AAAA,IACA,eAAe;AAAA,IACf,OAAO;AAAA,GACR;AAAA,EAED,IAAI,CAAC,OAAO,IAAI;AAAA,IACd,OAAO,EAAE,IAAI,OAAO,QAAQ,OAAO,QAAQ,UAAU,CAAC,EAAE;AAAA,EAC1D;AAAA,EACA,IAAI,gBAAgB,OAAO,MAAM,WAAW,GAAG;AAAA,IAC7C,OAAO;AAAA,MACL,IAAI;AAAA,MACJ,QAAQ,OAAO,MAAM,WAAW,IAAI,kBAAkB;AAAA,MACtD,UAAU,CAAC;AAAA,IACb;AAAA,EACF;AAAA,EAEA,OAAO,EAAE,IAAI,MAAM,UAAU,OAAO,MAAM;AAAA;AAM5C,SAAS,oBAAoB,CAAC,SAAkC;AAAA,EAC9D,MAAM,SAAmB,CAAC;AAAA,EAC1B,IAAI,MAAM;AAAA,EACV,IAAI,WAAW;AAAA,EACf,IAAI,WAAW;AAAA,EACf,IAAI,UAAU;AAAA,EAEd,MAAM,YAAY,MAAM;AAAA,IACtB,IAAI,IAAI,SAAS,GAAG;AAAA,MAClB,OAAO,KAAK,GAAG;AAAA,MACf,MAAM;AAAA,IACR;AAAA;AAAA,EAGF,SAAS,IAAI,EAAG,IAAI,QAAQ,QAAQ,KAAK,GAAG;AAAA,IAC1C,MAAM,KAAK,QAAQ;AAAA,IAEnB,IAAI,SAAS;AAAA,MACX,OAAO;AAAA,MACP,UAAU;AAAA,MACV;AAAA,IACF;AAAA,IAEA,IAAI,CAAC,YAAY,CAAC,YAAY,OAAO,MAAM;AAAA,MACzC,UAAU;AAAA,MACV;AAAA,IACF;AAAA,IAEA,IAAI,UAAU;AAAA,MACZ,IAAI,OAAO;AAAA,QAAK,WAAW;AAAA,MACtB;AAAA,eAAO;AAAA,MACZ;AAAA,IACF;AAAA,IAEA,IAAI,UAAU;AAAA,MACZ,MAAM,OAAO,QAAQ,IAAI;AAAA,MACzB,IAAI,OAAO,QAAQ,oBAAoB,IAAI,GAAG;AAAA,QAC5C,OAAO;AAAA,QACP,KAAK;AAAA,QACL;AAAA,MACF;AAAA,MACA,IAAI,OAAO;AAAA,QAAK,WAAW;AAAA,MACtB;AAAA,eAAO;AAAA,MACZ;AAAA,IACF;AAAA,IAEA,IAAI,OAAO,KAAK;AAAA,MACd,WAAW;AAAA,MACX;AAAA,IACF;AAAA,IACA,IAAI,OAAO,KAAK;AAAA,MACd,WAAW;AAAA,MACX;AAAA,IACF;AAAA,IACA,IAAI,KAAK,KAAK,EAAE,GAAG;AAAA,MACjB,UAAU;AAAA,MACV;AAAA,IACF;AAAA,IAEA,OAAO;AAAA,EACT;AAAA,EAEA,IAAI,WAAW,YAAY;AAAA,IAAU,OAAO;AAAA,EAC5C,UAAU;AAAA,EACV,OAAO;AAAA;AAMT,SAAS,sBAAsB,CAC7B,OACA,KACA,KAC6B;AAAA,EAC7B,MAAM,WAAiC,CAAC;AAAA,EAExC,WAAW,OAAO,OAAO;AAAA,IACvB,MAAM,OAAO,qBAAqB,GAAG;AAAA,IACrC,IAAI,CAAC,QAAQ,KAAK,WAAW;AAAA,MAAG,OAAO;AAAA,IAEvC,SAAS,KAAK;AAAA,MACZ;AAAA,MACA;AAAA,MACA,YAAY,uBAAuB,MAAM,KAAK,GAAG;AAAA,IACnD,CAAC;AAAA,EACH;AAAA,EAEA,OAAO;AAAA;AAMT,SAAS,iBAAiB,CAAC,UAAmC;AAAA,EAC5D,MAAM,aAAa,OAAO,YAAY,EAAE,EACrC,KAAK,EACL,YAAY;AAAA,EACf,OAAO,WAAW,WAAW,KAAK;AAAA;AAM7B,SAAS,mBAAmB,CAAC,QAKZ;AAAA,EACtB,IAAI,kBAAkB,OAAO,QAAQ,GAAG;AAAA,IACtC,OAAO,sBAAsB,MAAM;AAAA,EACrC;AAAA,EAGA,MAAM,aAAa,kBAAkB,OAAO,OAAO;AAAA,EACnD,IAAI,YAAY;AAAA,IACd,MAAM,SAAiC,CAAC;AAAA,IACxC,MAAM,cAAoC,CAAC;AAAA,IAE3C,WAAW,QAAQ,YAAY;AAAA,MAC7B,MAAM,gBAAgB,mBAAmB,IAAI;AAAA,MAC7C,IAAI,CAAC,cAAc,IAAI;AAAA,QACrB,OAAO,EAAE,IAAI,OAAO,QAAQ,cAAc,QAAQ,UAAU,CAAC,EAAE;AAAA,MACjE;AAAA,MAEA,MAAM,YAAW,uBAAuB,cAAc,UAAU,OAAO,KAAK,OAAO,GAAG;AAAA,MACtF,IAAI,CAAC,WAAU;AAAA,QACb,OAAO,EAAE,IAAI,OAAO,QAAQ,iCAAiC,UAAU,CAAC,EAAE;AAAA,MAC5E;AAAA,MAEA,OAAO,KAAK,SAAQ;AAAA,MACpB,YAAY,KAAK,GAAG,SAAQ;AAAA,IAC9B;AAAA,IAEA,OAAO,EAAE,IAAI,MAAM,UAAU,aAAa,OAAO;AAAA,EACnD;AAAA,EAGA,MAAM,QAAQ,mBAAmB,OAAO,OAAO;AAAA,EAC/C,IAAI,CAAC,MAAM,IAAI;AAAA,IACb,OAAO,EAAE,IAAI,OAAO,QAAQ,MAAM,QAAQ,UAAU,CAAC,EAAE;AAAA,EACzD;AAAA,EAEA,MAAM,WAAW,uBAAuB,MAAM,UAAU,OAAO,KAAK,OAAO,GAAG;AAAA,EAC9E,IAAI,CAAC,UAAU;AAAA,IACb,OAAO,EAAE,IAAI,OAAO,QAAQ,iCAAiC,UAAU,CAAC,EAAE;AAAA,EAC5E;AAAA,EAEA,OAAO,EAAE,IAAI,MAAM,SAAS;AAAA;AAM9B,SAAS,qBAAqB,CAAC,QAIP;AAAA,EACtB,WAAW,MAAM,OAAO,SAAS;AAAA,IAC/B,IAAI,2BAA2B,IAAI,EAAE,GAAG;AAAA,MACtC,MAAM,YAAY,OAAO;AAAA,KAAQ,OAAO,OAAO,YAAY;AAAA,MAC3D,OAAO;AAAA,QACL,IAAI;AAAA,QACJ,QAAQ,oCAAoC;AAAA,QAC5C,UAAU,CAAC;AAAA,MACb;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,OAAO,uBAAuB,OAAO,OAAO;AAAA,EAClD,IAAI,CAAC,QAAQ,KAAK,WAAW,GAAG;AAAA,IAC9B,OAAO,EAAE,IAAI,OAAO,QAAQ,mCAAmC,UAAU,CAAC,EAAE;AAAA,EAC9E;AAAA,EAEA,OAAO;AAAA,IACL,IAAI;AAAA,IACJ,UAAU;AAAA,MACR;AAAA,QACE,KAAK,OAAO;AAAA,QACZ;AAAA,QACA,YAAY,uBAAuB,MAAM,OAAO,KAAK,OAAO,GAAG;AAAA,MACjE;AAAA,IACF;AAAA,EACF;AAAA;AAMF,SAAS,sBAAsB,CAAC,SAAkC;AAAA,EAChE,MAAM,SAAmB,CAAC;AAAA,EAC1B,IAAI,MAAM;AAAA,EACV,IAAI,WAAW;AAAA,EAEf,MAAM,YAAY,MAAM;AAAA,IACtB,IAAI,IAAI,SAAS,GAAG;AAAA,MAClB,OAAO,KAAK,GAAG;AAAA,MACf,MAAM;AAAA,IACR;AAAA;AAAA,EAGF,WAAW,MAAM,SAAS;AAAA,IACxB,IAAI,OAAO,KAAK;AAAA,MACd,WAAW,CAAC;AAAA,MACZ;AAAA,IACF;AAAA,IACA,IAAI,CAAC,YAAY,KAAK,KAAK,EAAE,GAAG;AAAA,MAC9B,UAAU;AAAA,MACV;AAAA,IACF;AAAA,IACA,OAAO;AAAA,EACT;AAAA,EAEA,IAAI;AAAA,IAAU,OAAO;AAAA,EACrB,UAAU;AAAA,EACV,OAAO,OAAO,SAAS,IAAI,SAAS;AAAA;AAMtC,SAAS,iBAAiB,CAAC,SAAkC;AAAA,EAC3D,MAAM,QAAkB,CAAC;AAAA,EACzB,IAAI,MAAM;AAAA,EACV,IAAI,WAAW;AAAA,EACf,IAAI,WAAW;AAAA,EACf,IAAI,UAAU;AAAA,EACd,IAAI,aAAa;AAAA,EACjB,IAAI,eAAe;AAAA,EAEnB,MAAM,WAAW,MAAM;AAAA,IACrB,MAAM,UAAU,IAAI,KAAK;AAAA,IACzB,IAAI,SAAS;AAAA,MACX,MAAM,KAAK,OAAO;AAAA,MAClB,MAAM;AAAA,MACN,OAAO;AAAA,IACT;AAAA,IACA,MAAM;AAAA,IACN,OAAO;AAAA;AAAA,EAGT,SAAS,IAAI,EAAG,IAAI,QAAQ,QAAQ,KAAK,GAAG;AAAA,IAC1C,MAAM,KAAK,QAAQ;AAAA,IACnB,MAAM,OAAO,QAAQ,IAAI;AAAA,IAEzB,IAAI,SAAS;AAAA,MACX,OAAO;AAAA,MACP,UAAU;AAAA,MACV;AAAA,IACF;AAAA,IAEA,IAAI,CAAC,YAAY,CAAC,YAAY,OAAO,MAAM;AAAA,MACzC,UAAU;AAAA,MACV,OAAO;AAAA,MACP;AAAA,IACF;AAAA,IAEA,IAAI,UAAU;AAAA,MACZ,IAAI,OAAO;AAAA,QAAK,WAAW;AAAA,MAC3B,OAAO;AAAA,MACP;AAAA,IACF;AAAA,IAEA,IAAI,UAAU;AAAA,MACZ,IAAI,OAAO,QAAQ,oBAAoB,IAAI,GAAG;AAAA,QAC5C,OAAO;AAAA,QACP,OAAO;AAAA,QACP,KAAK;AAAA,QACL;AAAA,MACF;AAAA,MACA,IAAI,OAAO;AAAA,QAAK,WAAW;AAAA,MAC3B,OAAO;AAAA,MACP;AAAA,IACF;AAAA,IAEA,IAAI,OAAO,KAAK;AAAA,MACd,WAAW;AAAA,MACX,OAAO;AAAA,MACP;AAAA,IACF;AAAA,IAEA,IAAI,OAAO,KAAK;AAAA,MACd,WAAW;AAAA,MACX,OAAO;AAAA,MACP;AAAA,IACF;AAAA,IAEA,IAAI,OAAO,OAAO,SAAS,KAAK;AAAA,MAC9B,IAAI,CAAC,SAAS;AAAA,QAAG,eAAe;AAAA,MAChC,KAAK;AAAA,MACL,aAAa;AAAA,MACb;AAAA,IACF;AAAA,IAEA,IAAI,OAAO,OAAO,SAAS,KAAK;AAAA,MAC9B,IAAI,CAAC,SAAS;AAAA,QAAG,eAAe;AAAA,MAChC,KAAK;AAAA,MACL,aAAa;AAAA,MACb;AAAA,IACF;AAAA,IAEA,IAAI,OAAO,KAAK;AAAA,MACd,IAAI,CAAC,SAAS;AAAA,QAAG,eAAe;AAAA,MAChC,aAAa;AAAA,MACb;AAAA,IACF;AAAA,IAEA,OAAO;AAAA,EACT;AAAA,EAEA,MAAM,cAAc,SAAS;AAAA,EAC7B,IAAI,CAAC;AAAA,IAAY,OAAO;AAAA,EACxB,IAAI,gBAAgB,CAAC;AAAA,IAAa,OAAO;AAAA,EACzC,OAAO,MAAM,SAAS,IAAI,QAAQ;AAAA;AAM7B,SAAS,iBAAiB,CAAC,SAAiC;AAAA,EACjE,IAAI,CAAC,MAAM,QAAQ,OAAO;AAAA,IAAG,OAAO,IAAI;AAAA,EACxC,MAAM,aAAa,QAChB,IAAI,CAAC,UAAU,MAAM,KAAK,EAAE,YAAY,CAAC,EACzC,OAAO,CAAC,UAAU,MAAM,SAAS,CAAC;AAAA,EACrC,OAAO,IAAI,IAAI,UAAU;AAAA;AAMpB,SAAS,eAAe,CAAC,SAAwC;AAAA,EACtE,IAAI,YAAY,WAAW;AAAA,IACzB,OAAO,kBAAkB,CAAC,GAAG,iBAAiB,CAAC;AAAA,EACjD;AAAA,EACA,OAAO,kBAAkB,WAAW,CAAC,CAAC;AAAA;AAMxC,SAAS,eAAe,CAAC,OAAwB;AAAA,EAC/C,MAAM,UAAU,MAAM,KAAK;AAAA,EAC3B,IAAI,CAAC,WAAW,YAAY;AAAA,IAAK,OAAO;AAAA,EACxC,IAAI,QAAQ,WAAW,IAAI,KAAK,QAAQ,WAAW,KAAK,KAAK,QAAQ,WAAW,GAAG;AAAA,IAAG,OAAO;AAAA,EAC7F,IAAI,QAAQ,WAAW,GAAG;AAAA,IAAG,OAAO;AAAA,EACpC,OAAO,kBAAkB,KAAK,OAAO;AAAA;AAMvC,SAAS,iBAAiB,CAAC,UAA2B;AAAA,EACpD,IAAI;AAAA,IACF,OAAO,IAAG,WAAW,QAAQ;AAAA,IAC7B,MAAM;AAAA,IACN,OAAO;AAAA;AAAA;AAOJ,SAAS,cAAc,CAAC,QAMnB;AAAA,EACV,IAAI,OAAO,SAAS,SAAS;AAAA,IAAG,OAAO;AAAA,EAEvC,MAAM,aAAa,OAAO;AAAA,EAC1B,MAAM,WAAW,YAAY,gBAAgB,YAAY;AAAA,EACzD,IAAI,CAAC;AAAA,IAAU,OAAO;AAAA,EAEtB,MAAM,iBACJ,OAAO,SAAS,IAAI,QAAQ,KAC3B,QAAQ,aAAa,WAAW,OAAO,SAAS,IAAI,MAAK,MAAM,QAAQ,EAAE,IAAI;AAAA,EAEhF,IAAI,CAAC;AAAA,IAAgB,OAAO;AAAA,EAC5B,IAAI,CAAC,YAAY;AAAA,IAAc,OAAO;AAAA,EAEtC,MAAM,MAAM,OAAO,OAAO,QAAQ,IAAI;AAAA,EACtC,MAAM,SAAS,OAAO,cAAc;AAAA,EACpC,MAAM,OAAO,OAAO,KAAK,MAAM,CAAC;AAAA,EAEhC,WAAW,SAAS,MAAM;AAAA,IACxB,IAAI,CAAC,SAAS,UAAU;AAAA,MAAK;AAAA,IAE7B,IAAI,MAAM,WAAW,GAAG,GAAG;AAAA,MACzB,MAAM,UAAU,MAAM,QAAQ,GAAG;AAAA,MACjC,IAAI,UAAU,GAAG;AAAA,QACf,MAAM,QAAQ,MAAM,MAAM,UAAU,CAAC;AAAA,QACrC,IAAI,UAAU,gBAAgB,KAAK,KAAK,OAAO,MAAK,QAAQ,KAAK,KAAK,CAAC,IAAI;AAAA,UACzE,OAAO;AAAA,QACT;AAAA,MACF;AAAA,MACA;AAAA,IACF;AAAA,IAEA,IAAI,gBAAgB,KAAK;AAAA,MAAG,OAAO;AAAA,IACnC,IAAI,OAAO,MAAK,QAAQ,KAAK,KAAK,CAAC;AAAA,MAAG,OAAO;AAAA,EAC/C;AAAA,EAEA,OAAO;AAAA;AAMT,SAAS,6BAA6B,CACpC,YACA,KACoB;AAAA,EACpB,IAAI,CAAC;AAAA,IAAY;AAAA,EACjB,IAAI,WAAW;AAAA,IAAc,OAAO,WAAW;AAAA,EAE/C,MAAM,MAAM,WAAW,eAAe,KAAK;AAAA,EAC3C,IAAI,CAAC;AAAA,IAAK;AAAA,EAEV,MAAM,WAAW,IAAI,WAAW,GAAG,IAAI,YAAW,GAAG,IAAI;AAAA,EACzD,IAAI,CAAC,SAAS,SAAS,GAAG,KAAK,CAAC,SAAS,SAAS,IAAI;AAAA,IAAG;AAAA,EAEzD,IAAI,MAAK,WAAW,QAAQ;AAAA,IAAG,OAAO;AAAA,EAEtC,MAAM,OAAO,KAAK,KAAK,KAAK,QAAQ,IAAI;AAAA,EACxC,OAAO,MAAK,QAAQ,MAAM,QAAQ;AAAA;AAMpC,SAAS,gBAAgB,CACvB,UACA,QAOuD;AAAA,EACvD,MAAM,UAAgC,CAAC;AAAA,EACvC,MAAM,cAAc,OAAO,oBAAoB,SAAS,OAAO,WAAW,QAAQ,KAAK;AAAA,EAEvF,MAAM,YAAY,SAAS,MAAM,CAAC,YAAY;AAAA,IAC5C,MAAM,gBAAgB,8BAA8B,QAAQ,YAAY,OAAO,GAAG;AAAA,IAClF,MAAM,sBACJ,iBAAiB,QAAQ,aACrB,KAAK,QAAQ,YAAY,cAAc,cAAc,IACrD,QAAQ;AAAA,IAEd,MAAM,QAAQ,eAAe,OAAO,WAAW,mBAAmB;AAAA,IAClE,IAAI;AAAA,MAAO,QAAQ,KAAK,KAAK;AAAA,IAE7B,MAAM,OAAO,eAAe;AAAA,MAC1B,MAAM,QAAQ;AAAA,MACd,YAAY,QAAQ;AAAA,MACpB,UAAU,OAAO;AAAA,MACjB,KAAK,OAAO;AAAA,IACd,CAAC;AAAA,IAED,MAAM,aACJ,eAAe,QAAQ,YAAY,iBAC/B,OAAO,WAAW,IAAI,QAAQ,WAAW,cAAc,IACvD;AAAA,IAEN,OAAO,QAAQ,SAAS,QAAQ,UAAU;AAAA,GAC3C;AAAA,EAED,OAAO,EAAE,WAAW,QAAQ;AAAA;AAMvB,SAAS,qBAAqB,CAAC,QAOV;AAAA,EAC1B,MAAM,mBAAyC,CAAC;AAAA,EAEhD,IAAI,CAAC,OAAO,SAAS,MAAM,OAAO,SAAS,SAAS,WAAW,GAAG;AAAA,IAChE,OAAO,EAAE,oBAAoB,OAAO,iBAAiB;AAAA,EACvD;AAAA,EAGA,IAAI,OAAO,SAAS,QAAQ;AAAA,IAC1B,WAAW,iBAAiB,OAAO,SAAS,QAAQ;AAAA,MAClD,MAAM,UAAS,iBAAiB,eAAe;AAAA,QAC7C,WAAW,OAAO;AAAA,QAClB,UAAU,OAAO;AAAA,QACjB,KAAK,OAAO;AAAA,QACZ,WAAW,OAAO;AAAA,QAClB,iBAAiB,OAAO;AAAA,MAC1B,CAAC;AAAA,MAED,IAAI,CAAC,QAAO,WAAW;AAAA,QACrB,OAAO,EAAE,oBAAoB,OAAO,kBAAkB,CAAC,EAAE;AAAA,MAC3D;AAAA,MACA,iBAAiB,KAAK,GAAG,QAAO,OAAO;AAAA,IACzC;AAAA,IACA,OAAO,EAAE,oBAAoB,MAAM,iBAAiB;AAAA,EACtD;AAAA,EAGA,MAAM,SAAS,iBAAiB,OAAO,SAAS,UAAU;AAAA,IACxD,WAAW,OAAO;AAAA,IAClB,UAAU,OAAO;AAAA,IACjB,KAAK,OAAO;AAAA,IACZ,WAAW,OAAO;AAAA,IAClB,iBAAiB,OAAO;AAAA,EAC1B,CAAC;AAAA,EAED,OAAO,EAAE,oBAAoB,OAAO,WAAW,kBAAkB,OAAO,QAAQ;AAAA;AAM3E,SAAS,sBAAsB,CAAC,QASb;AAAA,EACxB,MAAM,aAAa,kBAAkB,OAAO,QAAQ,IAAI,OAAO,kBAAkB,OAAO,OAAO;AAAA,EAE/F,IAAI,CAAC,YAAY;AAAA,IACf,MAAM,WAAW,oBAAoB;AAAA,MACnC,SAAS,OAAO;AAAA,MAChB,KAAK,OAAO;AAAA,MACZ,KAAK,OAAO;AAAA,MACZ,UAAU,OAAO;AAAA,IACnB,CAAC;AAAA,IAED,IAAI,CAAC,SAAS,IAAI;AAAA,MAChB,OAAO;AAAA,QACL,YAAY;AAAA,QACZ,oBAAoB;AAAA,QACpB,kBAAkB,CAAC;AAAA,QACnB,UAAU,CAAC;AAAA,MACb;AAAA,IACF;AAAA,IAEA,MAAM,aAAa,sBAAsB;AAAA,MACvC;AAAA,MACA,WAAW,OAAO;AAAA,MAClB,UAAU,OAAO;AAAA,MACjB,KAAK,OAAO;AAAA,MACZ,WAAW,OAAO;AAAA,MAClB,iBAAiB,OAAO;AAAA,IAC1B,CAAC;AAAA,IAED,OAAO;AAAA,MACL,YAAY;AAAA,MACZ,oBAAoB,WAAW;AAAA,MAC/B,kBAAkB,WAAW;AAAA,MAC7B,UAAU,SAAS;AAAA,IACrB;AAAA,EACF;AAAA,EAEA,MAAM,mBAAyC,CAAC;AAAA,EAChD,MAAM,WAAiC,CAAC;AAAA,EAExC,WAAW,QAAQ,YAAY;AAAA,IAC7B,MAAM,WAAW,oBAAoB;AAAA,MACnC,SAAS;AAAA,MACT,KAAK,OAAO;AAAA,MACZ,KAAK,OAAO;AAAA,MACZ,UAAU,OAAO;AAAA,IACnB,CAAC;AAAA,IAED,IAAI,CAAC,SAAS,IAAI;AAAA,MAChB,OAAO;AAAA,QACL,YAAY;AAAA,QACZ,oBAAoB;AAAA,QACpB,kBAAkB,CAAC;AAAA,QACnB,UAAU,CAAC;AAAA,MACb;AAAA,IACF;AAAA,IAEA,SAAS,KAAK,GAAG,SAAS,QAAQ;AAAA,IAElC,MAAM,aAAa,sBAAsB;AAAA,MACvC;AAAA,MACA,WAAW,OAAO;AAAA,MAClB,UAAU,OAAO;AAAA,MACjB,KAAK,OAAO;AAAA,MACZ,WAAW,OAAO;AAAA,MAClB,iBAAiB,OAAO;AAAA,IAC1B,CAAC;AAAA,IAED,iBAAiB,KAAK,GAAG,WAAW,gBAAgB;AAAA,IAEpD,IAAI,CAAC,WAAW,oBAAoB;AAAA,MAClC,OAAO;AAAA,QACL,YAAY;AAAA,QACZ,oBAAoB;AAAA,QACpB;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,OAAO;AAAA,IACL,YAAY;AAAA,IACZ,oBAAoB;AAAA,IACpB;AAAA,IACA;AAAA,EACF;AAAA;AAMK,SAAS,oBAAoB,CAAC,QAKzB;AAAA,EACV,OACE,OAAO,QAAQ,YACd,OAAO,QAAQ,aACd,OAAO,aAAa,gBACnB,CAAC,OAAO,cAAc,CAAC,OAAO;AAAA;;ACv6BrC,mBAA+B;AAG/B,IAAM,wBAID;AAAA,EACH,EAAE,MAAM,cAAc,aAAa,sBAAsB;AAAA,EACzD,EAAE,MAAM,gBAAgB,aAAa,oBAAoB;AAAA,EACzD,EAAE,MAAM,QAAQ,aAAa,oBAAoB,UAAU,KAAK;AAClE;AAAA;AA+CO,MAAM,4BAA4B,QAAQ;AAAA,SACxC,cAAc;AAAA,EACrB,wBACE;AAAA,EAEM,iBAA+C;AAAA,EAC/C;AAAA,EACA;AAAA,EAER,WAAW,CAAC,SAAyB;AAAA,IACnC,MAAM,OAAO;AAAA,IACb,KAAK,WAAW,gBAAgB;AAAA,IAChC,KAAK,YAAY,IAAI;AAAA;AAAA,cAMV,MAAK,CAAC,SAA0C;AAAA,IAC3D,MAAM,UAAU,IAAI,oBAAoB,OAAO;AAAA,IAG/C,IAAI;AAAA,MACF,QAAQ,iBAAiB,iBAAiB,QAAQ,OAAO;AAAA,MACzD,OAAO,OAAO;AAAA,MACd,QAAO,MACL,EAAE,KAAK,yBAAyB,OAAO,SAAS,QAAQ,QAAQ,GAChE,+EACE,oFACJ;AAAA,MAEA,QAAQ,iBAAiB;AAAA,QACvB,MAAM;AAAA,QACN,YAAY;AAAA,QACZ,OAAO;AAAA,QACP,UAAU;AAAA,UACR,UAAU;AAAA,UACV,KAAK;AAAA,UACL,aAAa;AAAA,UACb,iBAAiB;AAAA,QACnB;AAAA,QACA,OAAO;AAAA,UACL,UAAU;AAAA,UACV,KAAK;AAAA,UACL,aAAa;AAAA,UACb,iBAAiB;AAAA,QACnB;AAAA,QACA,WAAW,CAAC;AAAA,QACZ,MAAM,EAAE,SAAS,GAAG,QAAQ,CAAC,EAAE;AAAA,MACjC;AAAA;AAAA,IAGF,QAAO,KACL,EAAE,KAAK,yBAAyB,SAAS,QAAQ,QAAQ,GACzD,6BACF;AAAA,IACA,OAAO;AAAA;AAAA,OAMH,KAAI,GAAkB;AAAA,IAC1B,QAAO,MAAM,EAAE,KAAK,wBAAwB,GAAG,6BAA6B;AAAA;AAAA,EAM9E,UAAU,CAAC,SAAyC;AAAA,IAClD,KAAK,iBAAiB,iBAAiB,WAAW,KAAK,SAAS,OAAO;AAAA,IACvE,OAAO,KAAK;AAAA;AAAA,EAMd,SAAS,GAA0B;AAAA,IACjC,IAAI,CAAC,KAAK,gBAAgB;AAAA,MACxB,KAAK,iBAAiB,iBAAiB,KAAK,SAAS,OAAO;AAAA,IAC9D;AAAA,IACA,OAAO,KAAK;AAAA;AAAA,EAMd,WAAW,CAAC,MAAsB;AAAA,IAChC,KAAK,WAAW,gBAAgB,IAAI;AAAA;AAAA,EAMtC,YAAY,CAAC,MAAsB;AAAA,IACjC,KAAK,YAAY,IAAI,IAAI,KAAK,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;AAAA;AAAA,OAMrD,aAAY,CAAC,QAMa;AAAA,IAC9B,MAAM,SAAS,KAAK,UAAU;AAAA,IAG9B,MAAM,WAAW,oBAAoB;AAAA,MACnC,SAAS,OAAO;AAAA,MAChB,KAAK,OAAO;AAAA,MACZ,KAAK,OAAO;AAAA,IACd,CAAC;AAAA,IAED,IAAI,CAAC,SAAS,IAAI;AAAA,MAChB,OAAO;AAAA,QACL,SAAS;AAAA,QACT,kBAAkB;AAAA,QAClB,QAAQ,SAAS,UAAU;AAAA,QAC3B;AAAA,QACA,kBAAkB,CAAC;AAAA,MACrB;AAAA,IACF;AAAA,IAGA,MAAM,aAAa,uBAAuB;AAAA,MACxC,SAAS,OAAO;AAAA,MAChB,WAAW,OAAO;AAAA,MAClB,UAAU,KAAK;AAAA,MACf,KAAK,OAAO;AAAA,MACZ,KAAK,OAAO;AAAA,MACZ,WAAW,KAAK;AAAA,MAChB,iBAAiB,OAAO,MAAM;AAAA,IAChC,CAAC;AAAA,IAGD,MAAM,WAAW,OAAO,MAAM;AAAA,IAC9B,MAAM,MAAM,OAAO,MAAM;AAAA,IAGzB,IAAI,aAAa,QAAQ;AAAA,MACvB,OAAO;AAAA,QACL,SAAS;AAAA,QACT,kBAAkB;AAAA,QAClB;AAAA,QACA,kBAAkB,WAAW;AAAA,MAC/B;AAAA,IACF;AAAA,IAGA,IAAI,aAAa,QAAQ;AAAA,MACvB,OAAO;AAAA,QACL,SAAS;AAAA,QACT,kBAAkB;AAAA,QAClB,QAAQ;AAAA,QACR;AAAA,QACA,kBAAkB,CAAC;AAAA,MACrB;AAAA,IACF;AAAA,IAGA,IAAI,WAAW,oBAAoB;AAAA,MAEjC,IAAI,kBAAkB;AAAA,MACtB,WAAW,SAAS,WAAW,kBAAkB;AAAA,QAC/C,MAAM,YAAY,cAAc;AAAA,QAChC,MAAM,WAAW,mBACf,WACA,OAAO,WAAW,KAAK,SAAS,SAChC,OACA,OAAO,SACP,SAAS,SAAS,IAAI,YAAY,YACpC;AAAA,QACA,IAAI,CAAC,UAAU;AAAA,UACb,kBAAkB;AAAA,QACpB;AAAA,MACF;AAAA,MAEA,IAAI,iBAAiB;AAAA,QACnB,QAAO,MACL,EAAE,KAAK,yBAAyB,SAAS,OAAO,QAAQ,GACxD,0EACF;AAAA,MACF;AAAA,MAEA,OAAO;AAAA,QACL,SAAS;AAAA,QACT,kBAAkB;AAAA,QAClB;AAAA,QACA,kBAAkB,WAAW;AAAA,MAC/B;AAAA,IACF;AAAA,IAGA,MAAM,gBAAgB,qBAAqB;AAAA,MACzC;AAAA,MACA;AAAA,MACA,YAAY,SAAS;AAAA,MACrB,oBAAoB,WAAW;AAAA,IACjC,CAAC;AAAA,IAED,IAAI,CAAC,eAAe;AAAA,MAElB,MAAM,WAAW,OAAO,MAAM;AAAA,MAC9B,IAAI,aAAa,QAAQ;AAAA,QACvB,OAAO;AAAA,UACL,SAAS;AAAA,UACT,kBAAkB;AAAA,UAClB,QAAQ;AAAA,UACR;AAAA,UACA,kBAAkB,CAAC;AAAA,QACrB;AAAA,MACF;AAAA,MAEA,OAAO;AAAA,QACL,SAAS;AAAA,QACT,kBAAkB;AAAA,QAClB;AAAA,QACA,kBAAkB,CAAC;AAAA,MACrB;AAAA,IACF;AAAA,IAGA,MAAM,YAAY,OAAO,WAAW;AAAA,IACpC,MAAM,UAA+B;AAAA,MACnC,IAAI;AAAA,MACJ,SAAS,OAAO;AAAA,MAChB,KAAK,OAAO;AAAA,MACZ;AAAA,MACA;AAAA,MACA,SAAS,OAAO,WAAW,KAAK,SAAS;AAAA,MACzC,cAAc,SAAS,SAAS,IAAI,YAAY;AAAA,MAChD,QAAQ,OAAO;AAAA,MACf,WAAW,uBAAuB;AAAA,IACpC;AAAA,IAEA,OAAO;AAAA,MACL,SAAS;AAAA,MACT,kBAAkB;AAAA,MAClB;AAAA,MACA;AAAA,MACA,kBAAkB,CAAC;AAAA,IACrB;AAAA;AAAA,OAMI,gBAAe,CAAC,SAA2D;AAAA,IAC/E,MAAM,kBAAkB,KAAK,SAAS,WAAW,UAAU;AAAA,IAE3D,IAAI,CAAC,iBAAiB;AAAA,MACpB,QAAO,KACL,EAAE,KAAK,wBAAwB,GAC/B,mDACF;AAAA,MACA,OAAO;AAAA,QACL,UAAU;AAAA,QACV,UAAU;AAAA,MACZ;AAAA,IACF;AAAA,IAGA,MAAM,mBAAmB,CAAC,8BAA8B,IAAI,cAAc,QAAQ,WAAW;AAAA,IAE7F,IAAI,QAAQ,KAAK;AAAA,MACf,iBAAiB,KAAK,UAAU,QAAQ,OAAO;AAAA,IACjD;AAAA,IACA,IAAI,QAAQ,cAAc;AAAA,MACxB,iBAAiB,KAAK,iBAAiB,QAAQ,gBAAgB;AAAA,IACjE;AAAA,IAEA,MAAM,cAAc,iBAAiB,KAAK;AAAA,CAAI;AAAA,IAG9C,MAAM,SAAS,MAAM,gBAAgB,gBAAgB;AAAA,MACnD,MAAM;AAAA,MACN;AAAA,MACA,QAAQ,QAAQ;AAAA,MAChB,SAAS;AAAA,MACT,WAAW,QAAQ,aAAa,uBAAuB;AAAA,MACvD,gBAAgB;AAAA,MAChB,MAAM,CAAC,QAAQ,QAAQ,EAAE;AAAA,MACzB,UAAU;AAAA,QACR,aAAa;AAAA,UACX,IAAI,QAAQ;AAAA,UACZ,SAAS,QAAQ;AAAA,UACjB,KAAK,QAAQ;AAAA,UACb,UAAU,QAAQ;AAAA,UAClB,KAAK,QAAQ;AAAA,UACb,SAAS,QAAQ;AAAA,UACjB,cAAc,QAAQ;AAAA,QACxB;AAAA,MACF;AAAA,IACF,CAAC;AAAA,IAED,MAAM,WAAW,oBAAoB,OAAO,cAAc;AAAA,IAG1D,IAAI,aAAa,kBAAkB,QAAQ,cAAc;AAAA,MACvD,MAAM,KAAK,eAAe,QAAQ,cAAc,QAAQ,OAAO;AAAA,IACjE;AAAA,IAEA,OAAO;AAAA,MACL;AAAA,MACA,UAAU,OAAO;AAAA,MACjB,YAAY,OAAO;AAAA,IACrB;AAAA;AAAA,OAMI,qBAAoB,CACxB,SACA,WAKe;AAAA,IACf,MAAM,kBAAkB,KAAK,SAAS,WAAW,UAAU;AAAA,IAE3D,IAAI,CAAC,iBAAiB;AAAA,MACpB,QAAO,KAAK,EAAE,KAAK,wBAAwB,GAAG,+BAA+B;AAAA,MAC7E,IAAI,WAAW,UAAU;AAAA,QACvB,MAAM,UAAU,SAAS;AAAA,MAC3B;AAAA,MACA,MAAM,IAAI,MAAM,+BAA+B;AAAA,IACjD;AAAA,IAEA,MAAM,mBAAmB,CAAC,8BAA8B,IAAI,cAAc,QAAQ,WAAW;AAAA,IAE7F,IAAI,QAAQ,KAAK;AAAA,MACf,iBAAiB,KAAK,UAAU,QAAQ,OAAO;AAAA,IACjD;AAAA,IAEA,MAAM,SAAS,MAAM,gBAAgB,qBAAqB;AAAA,MACxD,MAAM;AAAA,MACN,aAAa,iBAAiB,KAAK;AAAA,CAAI;AAAA,MACvC,QAAQ,QAAQ;AAAA,MAChB,SAAS;AAAA,MACT,WAAW,QAAQ,aAAa,uBAAuB;AAAA,MACvD,gBAAgB;AAAA,MAChB,MAAM,CAAC,QAAQ,QAAQ,EAAE;AAAA,MACzB,UAAU;AAAA,QACR,aAAa;AAAA,UACX,IAAI,QAAQ;AAAA,UACZ,SAAS,QAAQ;AAAA,UACjB,KAAK,QAAQ;AAAA,UACb,UAAU,QAAQ;AAAA,UAClB,KAAK,QAAQ;AAAA,UACb,SAAS,QAAQ;AAAA,UACjB,cAAc,QAAQ;AAAA,QACxB;AAAA,MACF;AAAA,MACA,UAAU,OAAO,QAAgB,OAAa,QAAuB;AAAA,QACnE,MAAM,WAAW,oBAAoB,MAAM;AAAA,QAG3C,IAAI,aAAa,kBAAkB,QAAQ,cAAc;AAAA,UACvD,MAAM,KAAK,eAAe,QAAQ,cAAc,QAAQ,OAAO;AAAA,QACjE;AAAA,QAEA,IAAI,aAAa,gBAAgB,aAAa,gBAAgB;AAAA,UAC5D,IAAI,WAAW,YAAY;AAAA,YACzB,MAAM,UAAU,WAAW,QAAQ;AAAA,UACrC;AAAA,QACF,EAAO;AAAA,UACL,IAAI,WAAW,UAAU;AAAA,YACvB,MAAM,UAAU,SAAS;AAAA,UAC3B;AAAA;AAAA;AAAA,MAGJ,WAAW,OAAO,OAAa,QAAuB;AAAA,QACpD,IAAI,WAAW,WAAW;AAAA,UACxB,MAAM,UAAU,UAAU;AAAA,QAC5B,EAAO,SAAI,WAAW,UAAU;AAAA,UAC9B,MAAM,UAAU,SAAS;AAAA,QAC3B;AAAA;AAAA,IAEJ,CAAC;AAAA,IAED,OAAO;AAAA;AAAA,OAOH,eAAc,CAAC,SAAiB,SAAoC;AAAA,IACxE,MAAM,YAAY,cAAc;AAAA,IAChC,MAAM,QAAQ,kBAAkB,WAAW,WAAW,KAAK,SAAS,SAAS,OAAO;AAAA,IACpF,IAAI,OAAO;AAAA,MAET,KAAK,iBAAiB;AAAA,IACxB;AAAA,IACA,OAAO;AAAA;AAAA,OAMH,eAAc,CAAC,QAA6B;AAAA,IAChD,MAAM,kBAAkB,KAAK,SAAS,WAAW,UAAU;AAAA,IAE3D,IAAI,iBAAiB;AAAA,MACnB,MAAM,gBAAgB,eAAe,MAAM;AAAA,IAC7C;AAAA;AAAA,OAMI,oBAAmB,CAAC,QAA8C;AAAA,IACtE,IAAI,CAAC,KAAK,SAAS;AAAA,MACjB,QAAO,KACL,EAAE,KAAK,wBAAwB,GAC/B,sDACF;AAAA,MACA,OAAO,CAAC;AAAA,IACV;AAAA,IAEA,IAAI;AAAA,MACF,MAAM,QAAQ,MAAM,KAAK,QAAQ,SAAS;AAAA,QACxC;AAAA,QACA,MAAM,CAAC,mBAAmB,MAAM;AAAA,MAClC,CAAC;AAAA,MAED,IAAI,CAAC;AAAA,QAAO,OAAO,CAAC;AAAA,MAEpB,OAAO,MACJ,OAAO,CAAC,MAAM,EAAE,UAAU,WAAW,EACrC,IAAI,CAAC,MAAM;AAAA,QACV,MAAM,cAAc,EAAE,UAAU;AAAA,QAChC,OAAO;AAAA,UACL,IAAI,YAAY;AAAA,UAChB,SAAS,YAAY;AAAA,UACrB,KAAK,YAAY;AAAA,UACjB,UAAU,YAAY;AAAA,UACtB,KAAK,YAAY;AAAA,UACjB,SAAS,YAAY;AAAA,UACrB,cAAc,YAAY;AAAA,UAC1B;AAAA,QACF;AAAA,OACD;AAAA,MACH,OAAO,OAAO;AAAA,MACd,QAAO,MACL,EAAE,KAAK,yBAAyB,OAAO,OAAO,GAC9C,iCACF;AAAA,MACA,OAAO,CAAC;AAAA;AAAA;AAGd;AAKA,SAAS,mBAAmB,CAAC,QAAsC;AAAA,EACjE,QAAQ;AAAA,SACD;AAAA,MACH,OAAO;AAAA,SACJ;AAAA,MACH,OAAO;AAAA;AAAA,MAEP,OAAO;AAAA;AAAA;;AC9iBb;AAAA;AAAA,YAGE;AAAA;AASF,IAAM,oBAAoB;AAC1B,IAAM,0BAA0B;AAEhC,IAAM,QAAO,oBAAoB,eAAe;AAEzC,IAAM,uBAAiC;AAAA,EAC5C,MAAM,MAAK;AAAA,EACX,aACE;AAAA,EACF,UAAU;AAAA,EACV,KAAK,OAAO,SAAwB,SAAiB,WAAkB;AAAA,IACrE,MAAM,eAAe,QAAQ,WAAyB,OAAO;AAAA,IAE7D,IAAI,CAAC,cAAc;AAAA,MACjB,QAAO,KAAK,gDAAgD;AAAA,MAC5D,OAAO;AAAA,QACL,QAAQ;AAAA,UACN,cAAc;AAAA,UACd,yBAAyB;AAAA,UACzB,kBAAkB;AAAA,QACpB;AAAA,QACA,MAAM,UAAU,kBAAkB,gCAAgC;AAAA,QAClE,MAAM,EAAE,cAAc,GAAG,KAAK,OAAO,YAAY,MAAM;AAAA,MACzD;AAAA,IACF;AAAA,IAEA,MAAM,iBAAiB,QAAQ,UAAU,QAAQ;AAAA,IACjD,IAAI,CAAC,gBAAgB;AAAA,MACnB,OAAO;AAAA,QACL,MAAM;AAAA,QACN,QAAQ,EAAE,cAAc,GAAG,KAAK,OAAO,YAAY,MAAM;AAAA,QACzD,MAAM,EAAE,cAAc,GAAG,KAAK,OAAO,YAAY,MAAM;AAAA,MACzD;AAAA,IACF;AAAA,IACA,MAAM,UAAU,aAAa,kBAAkB,gBAAgB,EAAE;AAAA,IACjE,MAAM,MAAM,aAAa,oBAAoB,cAAc;AAAA,IAC3D,MAAM,aAAa,aAAa,oBAAoB;AAAA,IAEpD,IAAI,cAAc;AAAA,IAClB,IAAI,QAAQ,SAAS,GAAG;AAAA,MACtB,cAAc,QACX,IAAI,CAAC,UAA+B;AAAA,QACnC,IAAI,WAAW,IAAI,IAAI,KAAK,MAAM,SAAS,EAAE,YAAY,MAAM,MAAM,qBAAqB,MAAM;AAAA,QAEhG,IAAI,MAAM,QAAQ;AAAA,UAChB,IAAI,MAAM,OAAO,SAAS,mBAAmB;AAAA,YAC3C,YAAY;AAAA,YAAe,MAAM,OAAO,UAAU,GAAG,uBAAuB;AAAA;AAAA,IAA+B,MAAM,OAAO,UAAU,MAAM,OAAO,SAAS,uBAAuB;AAAA,UACjL,EAAO;AAAA,YACL,YAAY;AAAA,YAAe,MAAM;AAAA;AAAA,QAErC;AAAA,QAEA,IAAI,MAAM,QAAQ;AAAA,UAChB,IAAI,MAAM,OAAO,SAAS,mBAAmB;AAAA,YAC3C,YAAY;AAAA,WAAc,MAAM,OAAO,UAAU,GAAG,uBAAuB;AAAA;AAAA,IAA+B,MAAM,OAAO,UAAU,MAAM,OAAO,SAAS,uBAAuB;AAAA,UAChL,EAAO;AAAA,YACL,YAAY;AAAA,WAAc,MAAM;AAAA;AAAA,QAEpC;AAAA,QAEA,YAAY;AAAA,eAAkB,MAAM;AAAA,QAEpC,IAAI,MAAM,kBAAkB,MAAM,eAAe,SAAS,GAAG;AAAA,UAC3D,YAAY;AAAA;AAAA,UACZ,MAAM,eAAe,QAAQ,CAAC,OAAsB;AAAA,YAClD,IAAI,GAAG,iBAAiB;AAAA,cACtB,YAAY;AAAA,QAAW,GAAG,SAAS,GAAG,YAAW,GAAG;AAAA,YACtD,EAAO;AAAA,cACL,YAAY;AAAA,QAAW,GAAG,SAAS,GAAG;AAAA;AAAA,WAEzC;AAAA,QACH;AAAA,QAEA,OAAO;AAAA,OACR,EACA,KAAK;AAAA;AAAA,CAAM;AAAA,IAChB;AAAA,IAEA,MAAM,gBAAgB,QACnB,OACC,CAAC,UAA+B,MAAM,kBAAkB,MAAM,eAAe,SAAS,CACxF,EACC,QAAQ,CAAC,UAA+B,MAAM,kBAAkB,CAAC,CAAC,EAClE,MAAM,EAAE;AAAA,IAEX,IAAI,cAAc;AAAA,IAClB,IAAI,cAAc,SAAS,GAAG;AAAA,MAC5B,cACE;AAAA;AAAA,IACA,UACE,4BACA,cACG,IAAI,CAAC,OAAsB;AAAA,QAC1B,IAAI,GAAG,iBAAiB;AAAA,UACtB,OAAO,KAAK,GAAG,SAAS,GAAG,YAAW,GAAG;AAAA,QAC3C;AAAA,QACA,OAAO,KAAK,GAAG,SAAS,GAAG;AAAA,OAC5B,EACA,KAAK;AAAA,CAAI,CACd;AAAA,IACJ;AAAA,IAEA,MAAM,OAAO,sBAAsB;AAAA,qBAClB;AAAA;AAAA,EAEnB,UAAU,6BAA6B,WAAW,IAAI;AAAA,IAEpD,OAAO;AAAA,MACL,QAAQ;AAAA,QACN,cAAc;AAAA,QACd,yBAAyB;AAAA,QACzB,kBAAkB;AAAA,MACpB;AAAA,MACA;AAAA,MACA,MAAM;AAAA,QACJ,cAAc,QAAQ;AAAA,QACtB;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA;AAEJ;;AC/HA;AACA,mBAA6B,oBAAQ;AACrC;;;ACRA;AACA;AACA,mBAAS;AACT;AAGA,IAAM,eAAe,EAAE,OAAO;AAAA,EAC5B,SAAS,EAAE,QAAQ;AAAA,EACnB,kBAAkB,EAAE,OAAO;AAAA,EAC3B,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,KAAK;AAAA,EAC5C,mBAAmB,EAAE,MAAM,EAAE,OAAO,CAAC;AAAA,EACrC,gBAAgB,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,MAAM;AAAA,EACpD,uBAAuB,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,MAAM;AAAA,EAC3D,qBAAqB,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,GAAK;AAAA,EACxD,iBAAiB,EAAE,QAAQ,EAAE,QAAQ,IAAI;AAC3C,CAAC;AAEM,IAAM,6BAAgD;AAAA,EAC3D;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEO,SAAS,eAAe,GAAgB;AAAA,EAC7C,MAAM,mBAAmB,QAAQ,IAAI,2BAA2B,QAAQ,IAAI;AAAA,EAC5E,MAAM,UAAU,SAAS,QAAQ,IAAI,iBAAiB,SAAS,EAAE;AAAA,EACjE,MAAM,iBAAiB,SAAS,QAAQ,IAAI,0BAA0B,UAAU,EAAE;AAAA,EAClF,MAAM,wBAAwB,SAC5B,QAAQ,IAAI,kCAAkC,UAC9C,EACF;AAAA,EACA,MAAM,sBAAsB,SAAS,QAAQ,IAAI,uBAAuB,SAAS,EAAE;AAAA,EACnF,MAAM,kBAAkB,QAAQ,IAAI,2BAA2B;AAAA,EAE/D,MAAM,kBAAkB,QAAQ,IAAI,2BAChC,QAAQ,IAAI,yBAAyB,MAAM,GAAG,EAAE,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,IACvE,CAAC;AAAA,EAEL,MAAM,oBAAoB,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,4BAA4B,GAAG,eAAe,CAAC,CAAC;AAAA,EAE1F,MAAM,SAAsB;AAAA,IAC1B,SAAS;AAAA,IACT;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EAEA,MAAM,cAAc,aAAa,UAAU,MAAM;AAAA,EACjD,IAAI,CAAC,YAAY,SAAS;AAAA,IACxB,MAAM,eAAe,YAAY,MAAM,SAAS,IAAI,WAAW,YAAY,MAAM,SAAS;AAAA,IAC1F,MAAM,IAAI,MAAM,qCAAqC,cAAc;AAAA,EACrE;AAAA,EAEA,IAAI;AAAA,IACF,MAAM,QAAQ,IAAG,SAAS,gBAAgB;AAAA,IAC1C,IAAI,CAAC,MAAM,YAAY,GAAG;AAAA,MACxB,MAAM,IAAI,MAAM,+CAA+C,kBAAkB;AAAA,IACnF;AAAA,IACA,OAAO,mBAAmB,MAAK,QAAQ,gBAAgB;AAAA,IACvD,QAAO,KACL,gDAAgD,OAAO,uBACrD,eAAe,6BAA6B,WAChD;AAAA,IACA,OAAO,OAAO;AAAA,IACd,IACE,iBAAiB,SACjB,UAAU,SACT,MAAgC,SAAS,UAC1C;AAAA,MACA,MAAM,IAAI,MAAM,2CAA2C,kBAAkB;AAAA,IAC/E;AAAA,IACA,MAAM;AAAA;AAAA,EAGR,OAAO;AAAA;;ACpGT;AACA,mBAAS;AAEF,SAAS,YAAY,CAC1B,aACA,YACA,YACe;AAAA,EACf,MAAM,eAAe,MAAK,QAAQ,YAAY,WAAW;AAAA,EACzD,MAAM,iBAAiB,MAAK,UAAU,YAAY;AAAA,EAClD,MAAM,oBAAoB,MAAK,UAAU,UAAU;AAAA,EAEnD,IAAI,CAAC,eAAe,WAAW,iBAAiB,GAAG;AAAA,IACjD,QAAO,KACL,2BAA2B,+CAA+C,mBAC5E;AAAA,IACA,OAAO;AAAA,EACT;AAAA,EAEA,OAAO;AAAA;AAGF,SAAS,aAAa,CAAC,SAA0B;AAAA,EACtD,MAAM,wBAAwB,CAAC,WAAW,WAAW,WAAW,SAAS;AAAA,EAEzE,MAAM,oBAAoB,CAAC,SAAS,YAAY,cAAc,aAAa,UAAU,UAAU;AAAA,EAE/F,WAAW,WAAW,uBAAuB;AAAA,IAC3C,IAAI,QAAQ,KAAK,OAAO,GAAG;AAAA,MACzB,QAAO,KAAK,uCAAuC,SAAS;AAAA,MAC5D,OAAO;AAAA,IACT;AAAA,EACF;AAAA,EAEA,WAAW,WAAW,mBAAmB;AAAA,IACvC,IAAI,QAAQ,KAAK,OAAO,GAAG;AAAA,MACzB,QAAO,KAAK,0CAA0C,SAAS;AAAA,MAC/D,OAAO;AAAA,IACT;AAAA,EACF;AAAA,EAEA,MAAM,aAAa,QAAQ,MAAM,KAAK,KAAK,CAAC,GAAG;AAAA,EAC/C,IAAI,YAAY,GAAG;AAAA,IACjB,QAAO,KAAK,uCAAuC,SAAS;AAAA,IAC5D,OAAO;AAAA,EACT;AAAA,EAEA,OAAO;AAAA;AAGF,SAAS,kBAAkB,CAAC,aAA6B;AAAA,EAC9D,MAAM,QAAQ,YAAY,KAAK,EAAE,MAAM,KAAK;AAAA,EAC5C,OAAO,MAAM,MAAM;AAAA;AAGd,SAAS,kBAAkB,CAAC,SAAiB,mBAAsC;AAAA,EACxF,MAAM,oBAAoB,QAAQ,KAAK,EAAE,YAAY;AAAA,EAErD,OAAO,kBAAkB,KAAK,CAAC,cAAc;AAAA,IAC3C,MAAM,iBAAiB,UAAU,YAAY;AAAA,IAE7C,IAAI,kBAAkB,WAAW,cAAc,GAAG;AAAA,MAChD,OAAO;AAAA,IACT;AAAA,IAEA,IAAI,CAAC,UAAU,SAAS,GAAG,GAAG;AAAA,MAC5B,MAAM,cAAc,mBAAmB,OAAO;AAAA,MAC9C,IAAI,YAAY,YAAY,MAAM,gBAAgB;AAAA,QAChD,OAAO;AAAA,MACT;AAAA,IACF;AAAA,IAEA,OAAO;AAAA,GACR;AAAA;;ACpEH,IAAM,MAAM;AACZ,IAAM,KAAK;AACX,IAAM,MAAM;AACZ,IAAM,YAAY;AAEX,IAAM,wBAAwB,GAAG;AACjC,IAAM,sBAAsB,GAAG;AAQtC,SAAS,YAAY,CAAC,OAAuB;AAAA,EAC3C,OAAO,MAAM,QAAQ,uBAAuB,MAAM;AAAA;AAGpD,IAAM,cAAc,IAAI,IAAoB;AAAA,EAC1C,CAAC,SAAS,EAAE;AAAA,EACZ,CAAC,UAAU,EAAE;AAAA,EACb,CAAC,OAAO,GAAG;AAAA,EACX,CAAC,UAAU,GAAG;AAAA,EACd,CAAC,OAAO,GAAG;AAAA,EACX,CAAC,SAAS,GAAG;AAAA,EACb,CAAC,UAAU,SAAS;AAAA,EACpB,CAAC,aAAa,SAAS;AAAA,EACvB,CAAC,MAAM,GAAG,OAAO;AAAA,EACjB,CAAC,QAAQ,GAAG,OAAO;AAAA,EACnB,CAAC,SAAS,GAAG,OAAO;AAAA,EACpB,CAAC,QAAQ,GAAG,OAAO;AAAA,EACnB,CAAC,QAAQ,GAAG,QAAQ;AAAA,EACpB,CAAC,OAAO,GAAG,QAAQ;AAAA,EACnB,CAAC,UAAU,GAAG,QAAQ;AAAA,EACtB,CAAC,QAAQ,GAAG,QAAQ;AAAA,EACpB,CAAC,SAAS,GAAG,QAAQ;AAAA,EACrB,CAAC,YAAY,GAAG,QAAQ;AAAA,EACxB,CAAC,QAAQ,GAAG,QAAQ;AAAA,EACpB,CAAC,SAAS,GAAG,QAAQ;AAAA,EACrB,CAAC,UAAU,GAAG,QAAQ;AAAA,EACtB,CAAC,MAAM,GAAG,QAAQ;AAAA,EAClB,CAAC,UAAU,GAAG,QAAQ;AAAA,EACtB,CAAC,OAAO,GAAG,QAAQ;AAAA,EACnB,CAAC,MAAM,GAAG,QAAQ;AAAA,EAClB,CAAC,QAAQ,GAAG,OAAO;AAAA,EACnB,CAAC,MAAM,GAAG,OAAO;AAAA,EACjB,CAAC,MAAM,GAAG,OAAO;AAAA,EACjB,CAAC,MAAM,GAAG,OAAO;AAAA,EACjB,CAAC,MAAM,GAAG,OAAO;AAAA,EACjB,CAAC,MAAM,GAAG,SAAS;AAAA,EACnB,CAAC,MAAM,GAAG,SAAS;AAAA,EACnB,CAAC,MAAM,GAAG,SAAS;AAAA,EACnB,CAAC,MAAM,GAAG,SAAS;AAAA,EACnB,CAAC,MAAM,GAAG,SAAS;AAAA,EACnB,CAAC,OAAO,GAAG,SAAS;AAAA,EACpB,CAAC,OAAO,GAAG,SAAS;AAAA,EACpB,CAAC,OAAO,GAAG,SAAS;AAAA,EACpB,CAAC,OAAO,GAAG,OAAO;AAAA,EAClB,CAAC,OAAO,GAAG,OAAO;AAAA,EAClB,CAAC,OAAO,GAAG,OAAO;AAAA,EAClB,CAAC,OAAO,GAAG,OAAO;AAAA,EAClB,CAAC,OAAO,GAAG,OAAO;AAAA,EAClB,CAAC,OAAO,GAAG,OAAO;AAAA,EAClB,CAAC,OAAO,GAAG,OAAO;AAAA,EAClB,CAAC,OAAO,GAAG,OAAO;AAAA,EAClB,CAAC,OAAO,GAAG,OAAO;AAAA,EAClB,CAAC,OAAO,GAAG,OAAO;AAAA,EAClB,CAAC,OAAO,GAAG,OAAO;AAAA,EAClB,CAAC,OAAO,GAAG,OAAO;AAAA,EAClB,CAAC,OAAO,GAAG,OAAO;AAAA,EAClB,CAAC,OAAO,GAAG,OAAO;AAAA,EAClB,CAAC,OAAO,GAAG,OAAO;AAAA,EAClB,CAAC,WAAW,GAAG,OAAO;AACxB,CAAC;AAED,IAAM,sBAAsB,IAAI,IAAI;AAAA,EAClC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAaM,SAAS,iBAAiB,CAAC,SAAgD;AAAA,EAChF,MAAM,WAAqB,CAAC;AAAA,EAC5B,IAAI,OAAO;AAAA,EAEX,IAAI,QAAQ,SAAS;AAAA,IACnB,QAAQ,QAAQ;AAAA,EAClB;AAAA,EAEA,IAAI,QAAQ,KAAK,QAAQ;AAAA,IACvB,WAAW,OAAO,QAAQ,KAAK;AAAA,MAC7B,MAAM,OAAO,aAAa,GAAG;AAAA,MAC7B,IAAI,SAAS,MAAM;AAAA,QACjB,SAAS,KAAK,qBAAqB,KAAK;AAAA,QACxC;AAAA,MACF;AAAA,MACA,QAAQ,OAAO,aAAa,IAAI;AAAA,IAClC;AAAA,EACF;AAAA,EAEA,IAAI,QAAQ,MAAM,QAAQ;AAAA,IACxB,WAAW,SAAS,QAAQ,MAAM;AAAA,MAChC,QAAQ,eAAe,OAAO,QAAQ;AAAA,IACxC;AAAA,EACF;AAAA,EAEA,OAAO,EAAE,MAAM,SAAS;AAAA;AAGnB,SAAS,WAAW,CAAC,MAAc,YAAY,MAAc;AAAA,EAClE,IAAI,CAAC,WAAW;AAAA,IACd,OAAO;AAAA,EACT;AAAA,EACA,OAAO,GAAG,wBAAwB,OAAO;AAAA;AAG3C,SAAS,cAAc,CAAC,KAAa,UAA4B;AAAA,EAC/D,MAAM,QAAQ,IAAI,KAAK;AAAA,EACvB,IAAI,CAAC,OAAO;AAAA,IACV,OAAO;AAAA,EACT;AAAA,EAEA,IAAI,MAAM,WAAW,KAAK,MAAM,WAAW,GAAG,GAAG;AAAA,IAC/C,MAAM,OAAO,WAAW,MAAM,EAAE;AAAA,IAChC,IAAI,MAAM;AAAA,MACR,OAAO;AAAA,IACT;AAAA,EACF;AAAA,EAEA,MAAM,SAAS,eAAe,KAAK;AAAA,EACnC,MAAM,OAAO,OAAO;AAAA,EACpB,MAAM,YAAY,KAAK,YAAY;AAAA,EAEnC,IAAI,cAAc,SAAS,OAAO,KAAK,OAAO;AAAA,IAC5C,OAAO,GAAG;AAAA,EACZ;AAAA,EAEA,MAAM,UAAU,YAAY,IAAI,SAAS;AAAA,EACzC,IAAI,SAAS;AAAA,IACX,IAAI,MAAM;AAAA,IACV,IAAI,oBAAoB,IAAI,SAAS,KAAK,eAAe,OAAO,IAAI,GAAG;AAAA,MACrE,MAAM,MAAM,cAAc,OAAO,IAAI;AAAA,MACrC,IAAI,MAAM,GAAG;AAAA,QACX,MAAM,WAAW,mBAAmB,KAAK,GAAG;AAAA,QAC5C,IAAI,UAAU;AAAA,UACZ,MAAM;AAAA,UACN,OAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF;AAAA,IACA,IAAI,OAAO,KAAK,KAAK;AAAA,MACnB,OAAO,GAAG,MAAM;AAAA,IAClB;AAAA,IACA,OAAO;AAAA,EACT;AAAA,EAEA,IAAI,KAAK,WAAW,GAAG;AAAA,IACrB,OAAO,mBAAmB,MAAM,OAAO,IAAI;AAAA,EAC7C;AAAA,EAEA,IAAI,OAAO,cAAc;AAAA,IACvB,SAAS,KAAK,gBAAgB,uCAAuC;AAAA,EACvE;AAAA,EACA,OAAO;AAAA;AAGT,SAAS,cAAc,CAAC,OAItB;AAAA,EACA,MAAM,OAAkB,EAAE,MAAM,OAAO,KAAK,OAAO,OAAO,MAAM;AAAA,EAChE,IAAI,OAAO;AAAA,EACX,IAAI,eAAe;AAAA,EAEnB,OAAO,KAAK,SAAS,KAAK,KAAK,OAAO,KAAK;AAAA,IACzC,MAAM,MAAM,KAAK,GAAG,YAAY;AAAA,IAChC,IAAI,QAAQ,KAAK;AAAA,MACf,KAAK,OAAO;AAAA,IACd,EAAO,SAAI,QAAQ,KAAK;AAAA,MACtB,KAAK,MAAM;AAAA,IACb,EAAO,SAAI,QAAQ,KAAK;AAAA,MACtB,KAAK,QAAQ;AAAA,IACf,EAAO;AAAA,MACL;AAAA;AAAA,IAEF,eAAe;AAAA,IACf,OAAO,KAAK,MAAM,CAAC;AAAA,EACrB;AAAA,EAEA,OAAO,EAAE,MAAM,MAAM,MAAM,cAAc,aAAa;AAAA;AAGxD,SAAS,kBAAkB,CAAC,MAAc,MAAyB;AAAA,EACjE,IAAI,QAAQ;AAAA,EACZ,IAAI,KAAK,SAAS,MAAM,WAAW,KAAK,QAAQ,KAAK,KAAK,GAAG;AAAA,IAC3D,QAAQ,MAAM,YAAY;AAAA,EAC5B;AAAA,EACA,IAAI,KAAK,MAAM;AAAA,IACb,MAAM,OAAO,WAAW,KAAK;AAAA,IAC7B,IAAI,MAAM;AAAA,MACR,QAAQ;AAAA,IACV;AAAA,EACF;AAAA,EACA,IAAI,KAAK,KAAK;AAAA,IACZ,QAAQ,GAAG,MAAM;AAAA,EACnB;AAAA,EACA,OAAO;AAAA;AAGT,SAAS,UAAU,CAAC,MAA6B;AAAA,EAC/C,IAAI,KAAK,WAAW,GAAG;AAAA,IACrB,OAAO;AAAA,EACT;AAAA,EACA,IAAI,SAAS,KAAK;AAAA,IAChB,OAAO;AAAA,EACT;AAAA,EACA,MAAM,OAAO,KAAK,YAAY,EAAE,WAAW,CAAC;AAAA,EAC5C,IAAI,QAAQ,MAAM,QAAQ,IAAI;AAAA,IAC5B,OAAO,OAAO,aAAa,OAAO,EAAI;AAAA,EACxC;AAAA,EACA,OAAO;AAAA;AAGT,SAAS,aAAa,CAAC,MAAyB;AAAA,EAC9C,IAAI,MAAM;AAAA,EACV,IAAI,KAAK,OAAO;AAAA,IACd,OAAO;AAAA,EACT;AAAA,EACA,IAAI,KAAK,KAAK;AAAA,IACZ,OAAO;AAAA,EACT;AAAA,EACA,IAAI,KAAK,MAAM;AAAA,IACb,OAAO;AAAA,EACT;AAAA,EACA,OAAO;AAAA;AAGT,SAAS,kBAAkB,CAAC,UAAkB,UAAiC;AAAA,EAC7E,MAAM,aAAa,aAAa,GAAG;AAAA,EACnC,MAAM,YAAY,IAAI,OAAO,IAAI,8BAA8B;AAAA,EAC/D,MAAM,WAAW,IAAI,OAAO,IAAI,6BAA6B;AAAA,EAE7D,MAAM,cAAc,SAAS,MAAM,SAAS;AAAA,EAC5C,IAAI,aAAa;AAAA,IACf,OAAO,GAAG,OAAO,YAAY,MAAM,WAAW,YAAY;AAAA,EAC5D;AAAA,EAEA,MAAM,aAAa,SAAS,MAAM,QAAQ;AAAA,EAC1C,IAAI,YAAY;AAAA,IACd,OAAO,GAAG,SAAS,WAAW,WAAW;AAAA,EAC3C;AAAA,EAEA,OAAO;AAAA;AAGT,SAAS,cAAc,CAAC,MAA0B;AAAA,EAChD,OAAO,KAAK,QAAQ,KAAK,OAAO,KAAK;AAAA;AAGvC,SAAS,YAAY,CAAC,KAA4B;AAAA,EAChD,MAAM,UAAU,IAAI,KAAK,EAAE,YAAY;AAAA,EACvC,MAAM,aAAa,QAAQ,WAAW,IAAI,IAAI,QAAQ,MAAM,CAAC,IAAI;AAAA,EACjE,IAAI,CAAC,kBAAkB,KAAK,UAAU,GAAG;AAAA,IACvC,OAAO;AAAA,EACT;AAAA,EACA,MAAM,QAAQ,OAAO,SAAS,YAAY,EAAE;AAAA,EAC5C,IAAI,OAAO,MAAM,KAAK,KAAK,QAAQ,KAAK,QAAQ,KAAM;AAAA,IACpD,OAAO;AAAA,EACT;AAAA,EACA,OAAO;AAAA;AAIT,IAAM,cAAc,IAAI,OAAO,GAAG,gBAAgB,GAAG;AAE9C,SAAS,gBAAgB,CAAC,OAAsD;AAAA,EACrF,IAAI,WAAW;AAAA,EACf,MAAM,UAAU,MAAM,QAAQ,aAAa,MAAM;AAAA,IAC/C,YAAY;AAAA,IACZ,OAAO;AAAA,GACR;AAAA,EACD,OAAO,EAAE,SAAS,SAAS;AAAA;AAGtB,SAAS,2BAA2B,CAAC,MAAM,GAAG,MAAM,GAAW;AAAA,EACpE,OAAO,QAAQ,OAAO;AAAA;;;AClTxB;AACA;AACA;AACA;AAEA,IAAM,cAAc,IAAI;AAKxB,SAAS,qBAAqB,GAAW;AAAA,EACvC,MAAM,aAAa,QAAQ,IAAI,cAAc,QAAQ,IAAI;AAAA,EACzD,IAAI,YAAY;AAAA,IACd,MAAM,YAAY,MAAK,KACrB,YACA,YACA,qBACA,QACA,gBACF;AAAA,IACA,IAAI,IAAG,WAAW,SAAS,GAAG;AAAA,MAC5B,OAAO;AAAA,IACT;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAMT,SAAS,oBAAoB,CAAC,MAAkC;AAAA,EAC9D,MAAM,UAAU,QAAQ,IAAI,QAAQ;AAAA,EACpC,IAAI,CAAC,SAAS;AAAA,IACZ;AAAA,EACF;AAAA,EACA,MAAM,UAAU,QAAQ,MAAM,MAAK,SAAS,EAAE,OAAO,OAAO;AAAA,EAC5D,WAAW,SAAS,SAAS;AAAA,IAC3B,MAAM,YAAY,MAAK,KAAK,OAAO,IAAI;AAAA,IACvC,IAAI;AAAA,MACF,IAAG,WAAW,WAAW,IAAG,UAAU,IAAI;AAAA,MAC1C,OAAO;AAAA,MACP,MAAM;AAAA,EAGV;AAAA,EACA;AAAA;AAMK,SAAS,cAAc,GAAsC;AAAA,EAClE,IAAI,QAAQ,aAAa,SAAS;AAAA,IAIhC,OAAO;AAAA,MACL,OAAO,sBAAsB;AAAA,MAC7B,MAAM,CAAC,cAAc,mBAAmB,UAAU;AAAA,IACpD;AAAA,EACF;AAAA,EAEA,MAAM,WAAW,QAAQ,IAAI,OAAO,KAAK;AAAA,EACzC,MAAM,YAAY,WAAW,MAAK,SAAS,QAAQ,IAAI;AAAA,EAEvD,IAAI,cAAc,QAAQ;AAAA,IACxB,MAAM,OAAO,qBAAqB,MAAM;AAAA,IACxC,IAAI,MAAM;AAAA,MACR,OAAO,EAAE,OAAO,MAAM,MAAM,CAAC,IAAI,EAAE;AAAA,IACrC;AAAA,IACA,MAAM,KAAK,qBAAqB,IAAI;AAAA,IACpC,IAAI,IAAI;AAAA,MACN,OAAO,EAAE,OAAO,IAAI,MAAM,CAAC,IAAI,EAAE;AAAA,IACnC;AAAA,EACF;AAAA,EACA,MAAM,QAAQ,YAAY,SAAS,SAAS,IAAI,WAAW;AAAA,EAC3D,OAAO,EAAE,OAAO,MAAM,CAAC,IAAI,EAAE;AAAA;AAMxB,SAAS,oBAAoB,CAAC,MAAsB;AAAA,EACzD,MAAM,WAAW,KAAK,QAAQ,+BAA+B,EAAE;AAAA,EAC/D,IAAI,CAAC,UAAU;AAAA,IACb,OAAO;AAAA,EACT;AAAA,EACA,MAAM,SAAmB,CAAC;AAAA,EAC1B,WAAW,QAAQ,UAAU;AAAA,IAC3B,MAAM,OAAO,KAAK,YAAY,CAAC;AAAA,IAC/B,IAAI,QAAQ,MAAM;AAAA,MAChB;AAAA,IACF;AAAA,IACA,IAAI,SAAS,KAAQ,SAAS,MAAQ,SAAS,IAAM;AAAA,MACnD,OAAO,KAAK,IAAI;AAAA,MAChB;AAAA,IACF;AAAA,IACA,IAAI,OAAO,IAAM;AAAA,MACf;AAAA,IACF;AAAA,IACA,OAAO,KAAK,IAAI;AAAA,EAClB;AAAA,EACA,OAAO,OAAO,KAAK,EAAE;AAAA;AAMhB,SAAS,eAAe,CAAC,KAAmB;AAAA,EACjD,IAAI,QAAQ,aAAa,SAAS;AAAA,IAChC,IAAI;AAAA,MACF,MAAM,YAAY,CAAC,MAAM,MAAM,QAAQ,OAAO,GAAG,CAAC,GAAG;AAAA,QACnD,OAAO;AAAA,QACP,UAAU;AAAA,MACZ,CAAC;AAAA,MACD,MAAM;AAAA,IAGR;AAAA,EACF;AAAA,EAEA,IAAI;AAAA,IACF,QAAQ,KAAK,CAAC,KAAK,SAAS;AAAA,IAC5B,MAAM;AAAA,IACN,IAAI;AAAA,MACF,QAAQ,KAAK,KAAK,SAAS;AAAA,MAC3B,MAAM;AAAA;AAAA;AASL,SAAS,WAAW,CAAC,SAGnB;AAAA,EACP,MAAM,MAAM,QAAQ,OAAO,QAAQ,OAAO;AAAA,EAC1C,IAAI,KAAK;AAAA,IACP,gBAAgB,GAAG;AAAA,EACrB;AAAA;AAMK,SAAS,SAAS,CACvB,KACwB;AAAA,EACxB,MAAM,SAAiC,CAAC;AAAA,EACxC,IAAI,CAAC,KAAK;AAAA,IACR,OAAO;AAAA,EACT;AAAA,EACA,YAAY,KAAK,UAAU,OAAO,QAAQ,GAAG,GAAG;AAAA,IAC9C,IAAI,OAAO,UAAU,UAAU;AAAA,MAC7B,OAAO,OAAO;AAAA,IAChB;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAMF,SAAS,cAAc,CAAC,SAAiB,UAA4B;AAAA,EAC1E,MAAM,UAAU,QAAQ;AAAA,EACxB,MAAM,WAAW,WAAW,QAAQ;AAAA,EACpC,IAAI;AAAA,IACF,MAAM,QAAQ,SAAS,OAAO;AAAA,IAC9B,IAAI,MAAM,YAAY,GAAG;AAAA,MACvB,OAAO;AAAA,IACT;AAAA,IACA,MAAM;AAAA,EAGR,SAAS,KAAK,qBAAqB,mCAAmC,YAAY;AAAA,EAClF,OAAO;AAAA;AAGT,SAAS,OAAO,GAAkB;AAAA,EAChC,IAAI;AAAA,IACF,MAAM,MAAM,QAAQ,IAAI;AAAA,IACxB,OAAO,WAAW,GAAG,IAAI,MAAM;AAAA,IAC/B,MAAM;AAAA,IACN,OAAO;AAAA;AAAA;AAOJ,SAAS,WAAW,CACzB,OACA,cACA,KACA,KACQ;AAAA,EACR,IAAI,UAAU,aAAa,OAAO,MAAM,KAAK,GAAG;AAAA,IAC9C,OAAO;AAAA,EACT;AAAA,EACA,OAAO,KAAK,IAAI,KAAK,IAAI,OAAO,GAAG,GAAG,GAAG;AAAA;AAMpC,SAAS,UAAU,CAAC,KAAiC;AAAA,EAC1D,MAAM,MAAM,QAAQ,IAAI;AAAA,EACxB,IAAI,CAAC,KAAK;AAAA,IACR;AAAA,EACF;AAAA,EACA,MAAM,SAAS,OAAO,SAAS,KAAK,EAAE;AAAA,EACtC,OAAO,OAAO,SAAS,MAAM,IAAI,SAAS;AAAA;AAMrC,SAAS,WAAW,CAAC,OAAe,QAAQ,aAAuB;AAAA,EACxE,MAAM,SAAmB,CAAC;AAAA,EAC1B,SAAS,IAAI,EAAG,IAAI,MAAM,QAAQ,KAAK,OAAO;AAAA,IAC5C,OAAO,KAAK,MAAM,MAAM,GAAG,IAAI,KAAK,CAAC;AAAA,EACvC;AAAA,EACA,OAAO;AAAA;AAMF,SAAS,cAAc,CAAC,KAAa,OAAe,KAAsB;AAAA,EAC/E,MAAM,eAAe,OAAO,IAAI;AAAA,EAChC,IAAI,QAAQ,GAAG;AAAA,IACb,MAAM,gBAAgB,KAAK,IAAI,GAAG,IAAI,SAAS,KAAK;AAAA,IACpD,OAAO,IAAI,MAAM,eAAe,YAAY;AAAA,EAC9C;AAAA,EACA,OAAO,IAAI,MAAM,OAAO,YAAY;AAAA;AAM/B,SAAS,cAAc,CAAC,KAAa,KAAqB;AAAA,EAC/D,IAAI,IAAI,UAAU,KAAK;AAAA,IACrB,OAAO;AAAA,EACT;AAAA,EACA,MAAM,OAAO,KAAK,OAAO,MAAM,KAAK,CAAC;AAAA,EACrC,OAAO,GAAG,eAAe,KAAK,GAAG,IAAI,OAAO,eAAe,KAAK,CAAC,IAAI;AAAA;AAMhE,SAAS,aAAa,CAC3B,MACA,QACA,OAC2D;AAAA,EAC3D,IAAI,CAAC,MAAM;AAAA,IACT,OAAO,EAAE,OAAO,IAAI,YAAY,GAAG,YAAY,EAAE;AAAA,EACnD;AAAA,EACA,MAAM,aAAa,KAAK,QAAQ,SAAS;AAAA,CAAI;AAAA,EAC7C,MAAM,QAAQ,WAAW,MAAM;AAAA,CAAI;AAAA,EACnC,IAAI,MAAM,SAAS,KAAK,MAAM,MAAM,SAAS,OAAO,IAAI;AAAA,IACtD,MAAM,IAAI;AAAA,EACZ;AAAA,EACA,MAAM,aAAa,MAAM;AAAA,EACzB,MAAM,aAAa,KAAK;AAAA,EACxB,IAAI,QACF,OAAO,WAAW,YAAY,OAAO,SAAS,MAAM,IAAI,KAAK,IAAI,GAAG,KAAK,MAAM,MAAM,CAAC,IAAI;AAAA,EAC5F,IAAI,UAAU,aAAa,WAAW,WAAW;AAAA,IAC/C,MAAM,YAAY,KAAK,IAAI,GAAG,KAAK,MAAM,KAAK,CAAC;AAAA,IAC/C,QAAQ,KAAK,IAAI,aAAa,WAAW,CAAC;AAAA,EAC5C;AAAA,EACA,MAAM,MACJ,OAAO,UAAU,YAAY,OAAO,SAAS,KAAK,IAC9C,QAAQ,KAAK,IAAI,GAAG,KAAK,MAAM,KAAK,CAAC,IACrC;AAAA,EACN,OAAO,EAAE,OAAO,MAAM,MAAM,OAAO,GAAG,EAAE,KAAK;AAAA,CAAI,GAAG,YAAY,WAAW;AAAA;AAMtE,SAAS,iBAAiB,CAAC,SAAqC;AAAA,EACrE,MAAM,SAAS,gBAAgB,OAAO;AAAA,EACtC,IAAI,OAAO,WAAW,GAAG;AAAA,IACvB;AAAA,EACF;AAAA,EACA,MAAM,OAAO,OAAO;AAAA,EACpB,IAAI,SAAS,OAAO,MAAM,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,CAAC;AAAA,EAC3D,IAAI,CAAC,QAAQ;AAAA,IACX,SAAS,OAAO;AAAA,EAClB;AAAA,EACA,IAAI,CAAC,QAAQ;AAAA,IACX,OAAO;AAAA,EACT;AAAA,EACA,MAAM,UAAU,eAAe,YAAY,MAAM,GAAG,EAAE;AAAA,EACtD,OAAO,GAAG,YAAY,IAAI,KAAK;AAAA;AAGjC,SAAS,eAAe,CAAC,SAA2B;AAAA,EAClD,MAAM,UAAU,QAAQ,MAAM,gDAAgD,KAAK,CAAC;AAAA,EACpF,OAAO,QAAQ,IAAI,CAAC,UAAU,YAAY,KAAK,CAAC,EAAE,OAAO,OAAO;AAAA;AAGlE,SAAS,WAAW,CAAC,OAAuB;AAAA,EAC1C,MAAM,UAAU,MAAM,KAAK;AAAA,EAC3B,IACG,QAAQ,WAAW,GAAG,KAAK,QAAQ,SAAS,GAAG,KAC/C,QAAQ,WAAW,GAAG,KAAK,QAAQ,SAAS,GAAG,GAChD;AAAA,IACA,OAAO,QAAQ,MAAM,GAAG,EAAE;AAAA,EAC5B;AAAA,EACA,OAAO;AAAA;AAMF,SAAS,cAAc,CAAC,IAAoB;AAAA,EACjD,IAAI,KAAK,MAAM;AAAA,IACb,OAAO,GAAG;AAAA,EACZ;AAAA,EACA,MAAM,UAAU,KAAK,MAAM,KAAK,IAAI;AAAA,EACpC,IAAI,UAAU,IAAI;AAAA,IAChB,OAAO,GAAG;AAAA,EACZ;AAAA,EACA,MAAM,UAAU,KAAK,MAAM,UAAU,EAAE;AAAA,EACvC,MAAM,MAAM,UAAU;AAAA,EACtB,OAAO,GAAG,WAAW,IAAI,SAAS,EAAE,SAAS,GAAG,GAAG;AAAA;AAM9C,SAAS,GAAG,CAAC,KAAa,OAAuB;AAAA,EACtD,IAAI,IAAI,UAAU,OAAO;AAAA,IACvB,OAAO;AAAA,EACT;AAAA,EACA,OAAO,MAAM,IAAI,OAAO,QAAQ,IAAI,MAAM;AAAA;AAyB5C,IAAM,sBAAsB,CAAC,OAAO;AAK7B,SAAS,gBAAgB,CAAC,KAAsB;AAAA,EACrD,IAAI,EAAE,eAAe,QAAQ;AAAA,IAC3B,OAAO,OAAO,GAAG;AAAA,EACnB;AAAA,EACA,MAAM,UAAU;AAAA,EAChB,MAAM,QAAkB,CAAC;AAAA,EACzB,MAAM,UAAU,IAAI,SAAS,KAAK;AAAA,EAClC,IAAI,SAAS;AAAA,IACX,MAAM,KAAK,OAAO;AAAA,EACpB;AAAA,EACA,IAAI,QAAQ,QAAQ,CAAC,SAAS,SAAS,QAAQ,IAAI,GAAG;AAAA,IACpD,MAAM,KAAK,QAAQ,IAAI;AAAA,EACzB;AAAA,EACA,IAAI,QAAQ,SAAS;AAAA,IACnB,MAAM,KAAK,WAAW,QAAQ,SAAS;AAAA,EACzC;AAAA,EACA,IAAI,OAAO,QAAQ,UAAU,UAAU;AAAA,IACrC,MAAM,KAAK,SAAS,QAAQ,OAAO;AAAA,EACrC;AAAA,EACA,OAAO,MAAM,KAAK,GAAG;AAAA;AAGvB,SAAS,WAAW,CAAC,KAAc,OAA0B;AAAA,EAC3D,MAAM,OACJ,OAAO,OAAO,QAAQ,YAAY,UAAU,MAAM,OAAQ,IAA2B,IAAI,IAAI;AAAA,EAC/F,OAAO,KAAK,SAAS,KAAK,MAAM,SAAS,IAAI;AAAA;AAG/C,eAAe,oBAAoB,CACjC,WACA,MACA,SACuB;AAAA,EACvB,MAAM,QAAQ,UAAU,KAAK,IAAI,KAAK,MAAM,CAAC,GAAG,OAAO;AAAA,EAEvD,OAAO,MAAM,IAAI,QAAQ,CAAC,SAAS,WAAW;AAAA,IAC5C,IAAI,UAAU;AAAA,IACd,MAAM,UAAU,MAAM;AAAA,MACpB,MAAM,eAAe,SAAS,OAAO;AAAA,MACrC,MAAM,eAAe,SAAS,OAAO;AAAA;AAAA,IAEvC,MAAM,gBAAgB,MAAM;AAAA,MAC1B,IAAI,SAAS;AAAA,QACX;AAAA,MACF;AAAA,MACA,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,QAAQ,KAAK;AAAA;AAAA,IAEf,MAAM,UAAU,CAAC,QAAiB;AAAA,MAChC,IAAI,SAAS;AAAA,QACX;AAAA,MACF;AAAA,MACA,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,OAAO,GAAG;AAAA;AAAA,IAEZ,MAAM,UAAU,MAAM;AAAA,MACpB,cAAc;AAAA;AAAA,IAEhB,MAAM,KAAK,SAAS,OAAO;AAAA,IAC3B,MAAM,KAAK,SAAS,OAAO;AAAA,IAE3B,QAAQ,SAAS,MAAM;AAAA,MACrB,IAAI,OAAO,MAAM,QAAQ,UAAU;AAAA,QACjC,cAAc;AAAA,MAChB;AAAA,KACD;AAAA,GACF;AAAA;AAMH,eAAsB,iBAAiB,CACrC,QACkC;AAAA,EAClC,MAAM,YAAY,OAAO,aAAa;AAAA,EACtC,MAAM,aAAa,OAAO,cAAc;AAAA,EACxC,MAAM,cAAc,KAAK,OAAO,QAAQ;AAAA,EACxC,MAAM,YAAY,OAAO,aAAa,CAAC;AAAA,EACvC,MAAM,WAA6D;AAAA,IACjE,EAAE,SAAS,YAAY;AAAA,IACvB,GAAG,UAAU,IAAI,CAAC,cAAc;AAAA,MAC9B,OAAO,SAAS;AAAA,MAChB,SAAS,KAAK,gBAAgB,SAAS,QAAQ;AAAA,IACjD,EAAE;AAAA,EACJ;AAAA,EAEA,IAAI;AAAA,EACJ,SAAS,QAAQ,EAAG,QAAQ,SAAS,QAAQ,SAAS,GAAG;AAAA,IACvD,MAAM,UAAU,SAAS;AAAA,IACzB,IAAI;AAAA,MACF,MAAM,QAAQ,MAAM,qBAAqB,WAAW,OAAO,MAAM,QAAQ,OAAO;AAAA,MAChF,OAAO;AAAA,QACL;AAAA,QACA,cAAc,QAAQ;AAAA,QACtB,eAAe,QAAQ;AAAA,MACzB;AAAA,MACA,OAAO,KAAK;AAAA,MACZ,YAAY;AAAA,MACZ,MAAM,eAAe,UAAU;AAAA,MAC/B,IAAI,CAAC,gBAAgB,CAAC,YAAY,KAAK,UAAU,GAAG;AAAA,QAClD,MAAM;AAAA,MACR;AAAA,MACA,OAAO,aAAa,KAAK,YAAY;AAAA;AAAA,EAEzC;AAAA,EAEA,MAAM;AAAA;;;ACneR,IAAM,qBAAqB,KAAK,KAAK;AACrC,IAAM,iBAAiB,KAAK;AAC5B,IAAM,iBAAiB,IAAI,KAAK,KAAK;AACrC,IAAM,+BAA+B;AAErC,SAAS,QAAQ,CAAC,OAAmC;AAAA,EACnD,IAAI,CAAC,SAAS,OAAO,MAAM,KAAK,GAAG;AAAA,IACjC,OAAO;AAAA,EACT;AAAA,EACA,OAAO,KAAK,IAAI,KAAK,IAAI,OAAO,cAAc,GAAG,cAAc;AAAA;AAGjE,IAAI,WAAW,SAAS,OAAO,SAAS,QAAQ,IAAI,oBAAoB,IAAI,EAAE,CAAC;AAE/E,IAAM,kBAAkB,IAAI;AAC5B,IAAM,mBAAmB,IAAI;AAE7B,IAAI,UAAiC;AAErC,SAAS,gBAAgB,CAAC,IAAqB;AAAA,EAC7C,OAAO,gBAAgB,IAAI,EAAE,KAAK,iBAAiB,IAAI,EAAE;AAAA;AAI3D,IAAM,kBAAkB;AAAA,EACtB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,IAAM,aAAa;AAAA,EACjB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,SAAS,YAAY,CAAC,QAAkB,UAA0B;AAAA,EAChE,OAAO,OAAO,KAAK,MAAM,KAAK,OAAO,IAAI,OAAO,MAAM,MAAM;AAAA;AAG9D,SAAS,cAAc,CAAC,QAAQ,GAAW;AAAA,EACzC,MAAM,QAAQ,CAAC,aAAa,iBAAiB,QAAQ,GAAG,aAAa,YAAY,QAAQ,CAAC;AAAA,EAC1F,IAAI,QAAQ,GAAG;AAAA,IACb,MAAM,KAAK,aAAa,YAAY,MAAM,CAAC;AAAA,EAC7C;AAAA,EACA,OAAO,MAAM,KAAK,GAAG;AAAA;AAGhB,SAAS,iBAAiB,CAAC,SAA2C;AAAA,EAC3E,MAAM,YAAY,WAAW;AAAA,EAC7B,SAAS,UAAU,EAAG,UAAU,IAAI,WAAW,GAAG;AAAA,IAChD,MAAM,OAAO,eAAe,CAAC;AAAA,IAC7B,IAAI,CAAC,UAAU,IAAI,GAAG;AAAA,MACpB,OAAO;AAAA,IACT;AAAA,IACA,SAAS,IAAI,EAAG,KAAK,IAAI,KAAK,GAAG;AAAA,MAC/B,MAAM,YAAY,GAAG,QAAQ;AAAA,MAC7B,IAAI,CAAC,UAAU,SAAS,GAAG;AAAA,QACzB,OAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AAAA,EACA,SAAS,UAAU,EAAG,UAAU,IAAI,WAAW,GAAG;AAAA,IAChD,MAAM,OAAO,eAAe,CAAC;AAAA,IAC7B,IAAI,CAAC,UAAU,IAAI,GAAG;AAAA,MACpB,OAAO;AAAA,IACT;AAAA,IACA,SAAS,IAAI,EAAG,KAAK,IAAI,KAAK,GAAG;AAAA,MAC/B,MAAM,YAAY,GAAG,QAAQ;AAAA,MAC7B,IAAI,CAAC,UAAU,SAAS,GAAG;AAAA,QACzB,OAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AAAA,EACA,MAAM,WAAW,GAAG,eAAe,CAAC,KAAK,KAAK,OAAO,EAAE,SAAS,EAAE,EAAE,MAAM,GAAG,CAAC;AAAA,EAC9E,OAAO,UAAU,QAAQ,IAAI,GAAG,YAAY,KAAK,IAAI,EAAE,SAAS,EAAE,MAAM;AAAA;AAGnE,SAAS,UAAU,CAAC,SAA+B;AAAA,EACxD,gBAAgB,IAAI,QAAQ,IAAI,OAAO;AAAA,EACvC,aAAa;AAAA;AAGR,SAAS,UAAU,CAAC,IAAwC;AAAA,EACjE,OAAO,gBAAgB,IAAI,EAAE;AAAA;AAGxB,SAAS,kBAAkB,CAAC,IAAyC;AAAA,EAC1E,OAAO,iBAAiB,IAAI,EAAE;AAAA;AAGzB,SAAS,aAAa,CAAC,IAAkB;AAAA,EAC9C,gBAAgB,OAAO,EAAE;AAAA,EACzB,iBAAiB,OAAO,EAAE;AAAA;AAG5B,SAAS,eAAe,CAAC,QAA0B;AAAA,EACjD,IAAI,QAAQ;AAAA,EACZ,WAAW,SAAS,QAAQ;AAAA,IAC1B,SAAS,MAAM;AAAA,EACjB;AAAA,EACA,OAAO;AAAA;AAGT,SAAS,gBAAgB,CAAC,QAAkB,cAAsB,KAAqB;AAAA,EACrF,IAAI,gBAAgB,KAAK;AAAA,IACvB,OAAO;AAAA,EACT;AAAA,EACA,MAAM,OAAO,OAAO,GAAG,EAAE;AAAA,EACzB,IAAI,QAAQ,KAAK,UAAU,KAAK;AAAA,IAC9B,OAAO,SAAS;AAAA,IAChB,OAAO,KAAK,KAAK,MAAM,KAAK,SAAS,GAAG,CAAC;AAAA,IACzC,OAAO;AAAA,EACT;AAAA,EACA,OAAO,OAAO,UAAU,eAAe,OAAO,GAAG,UAAU,KAAK;AAAA,IAC9D,gBAAgB,OAAO,GAAG;AAAA,IAC1B,OAAO,MAAM;AAAA,EACf;AAAA,EACA,IAAI,OAAO,UAAU,eAAe,KAAK;AAAA,IACvC,MAAM,WAAW,eAAe;AAAA,IAChC,OAAO,KAAK,OAAO,GAAG,MAAM,QAAQ;AAAA,IACpC,eAAe;AAAA,EACjB;AAAA,EACA,OAAO;AAAA;AAGF,SAAS,IAAI,CAAC,MAAc,MAAM,MAAc;AAAA,EACrD,IAAI,KAAK,UAAU,KAAK;AAAA,IACtB,OAAO;AAAA,EACT;AAAA,EACA,OAAO,KAAK,MAAM,KAAK,SAAS,GAAG;AAAA;AAG9B,SAAS,WAAW,CAAC,MAAc,KAAqB;AAAA,EAC7D,IAAI,KAAK,UAAU,KAAK;AAAA,IACtB,OAAO;AAAA,EACT;AAAA,EACA,OAAO,KAAK,MAAM,KAAK,SAAS,GAAG;AAAA;AAG9B,SAAS,YAAY,CAC1B,SACA,QACA,OACM;AAAA,EACN,QAAQ,kBAAkB,CAAC;AAAA,EAC3B,QAAQ,kBAAkB,CAAC;AAAA,EAC3B,QAAQ,uBAAuB,gBAAgB,QAAQ,aAAa;AAAA,EACpE,QAAQ,uBAAuB,gBAAgB,QAAQ,aAAa;AAAA,EACpE,MAAM,SAAS,WAAW,WAAW,QAAQ,gBAAgB,QAAQ;AAAA,EACrE,MAAM,cAAc,WAAW,WAAW,QAAQ,qBAAqB,QAAQ;AAAA,EAC/E,MAAM,aAAa,KAAK,IACtB,QAAQ,yBAAyB,8BACjC,QAAQ,cACV;AAAA,EACA,OAAO,KAAK,KAAK;AAAA,EACjB,IAAI,eAAe,cAAc,MAAM;AAAA,EACvC,IAAI,eAAe,YAAY;AAAA,IAC7B,QAAQ,YAAY;AAAA,IACpB,eAAe,iBAAiB,QAAQ,cAAc,UAAU;AAAA,EAClE;AAAA,EACA,IAAI,WAAW,UAAU;AAAA,IACvB,QAAQ,qBAAqB;AAAA,EAC/B,EAAO;AAAA,IACL,QAAQ,qBAAqB;AAAA;AAAA,EAE/B,QAAQ,oBAAoB,MAAM;AAAA,EAClC,MAAM,aAAa,YAAY,QAAQ,aAAa,OAAO,QAAQ,cAAc;AAAA,EACjF,QAAQ,YACN,QAAQ,aAAa,WAAW,SAAS,QAAQ,WAAW,SAAS,MAAM;AAAA,EAC7E,QAAQ,aAAa;AAAA,EACrB,QAAQ,OAAO,KAAK,QAAQ,YAAY,IAAI;AAAA;AAGvC,SAAS,YAAY,CAAC,SAA6D;AAAA,EACxF,MAAM,SAAS,QAAQ,cAAc,KAAK,EAAE;AAAA,EAC5C,MAAM,SAAS,QAAQ,cAAc,KAAK,EAAE;AAAA,EAC5C,QAAQ,gBAAgB,CAAC;AAAA,EACzB,QAAQ,gBAAgB,CAAC;AAAA,EACzB,QAAQ,qBAAqB;AAAA,EAC7B,QAAQ,qBAAqB;AAAA,EAC7B,OAAO,EAAE,QAAQ,OAAO;AAAA;AAG1B,SAAS,cAAc,CAAC,SAAyB,QAA6B;AAAA,EAC5E,gBAAgB,OAAO,QAAQ,EAAE;AAAA,EACjC,IAAI,CAAC,QAAQ,cAAc;AAAA,IACzB;AAAA,EACF;AAAA,EACA,iBAAiB,IAAI,QAAQ,IAAI;AAAA,IAC/B,IAAI,QAAQ;AAAA,IACZ,SAAS,QAAQ;AAAA,IACjB,UAAU,QAAQ;AAAA,IAClB,WAAW,QAAQ;AAAA,IACnB,SAAS,KAAK,IAAI;AAAA,IAClB,KAAK,QAAQ;AAAA,IACb;AAAA,IACA,UAAU,QAAQ;AAAA,IAClB,YAAY,QAAQ;AAAA,IACpB,YAAY,QAAQ;AAAA,IACpB,MAAM,QAAQ;AAAA,IACd,WAAW,QAAQ;AAAA,IACnB,kBAAkB,QAAQ;AAAA,EAC5B,CAAC;AAAA;AAGI,SAAS,UAAU,CACxB,SACA,UACA,YACA,QACM;AAAA,EACN,QAAQ,SAAS;AAAA,EACjB,QAAQ,WAAW;AAAA,EACnB,QAAQ,aAAa;AAAA,EACrB,QAAQ,OAAO,KAAK,QAAQ,YAAY,IAAI;AAAA,EAC5C,eAAe,SAAS,MAAM;AAAA;AAGzB,SAAS,gBAAgB,CAAC,SAA+B;AAAA,EAC9D,QAAQ,eAAe;AAAA;AAGlB,SAAS,mBAAmB,GAAqB;AAAA,EACtD,OAAO,MAAM,KAAK,gBAAgB,OAAO,CAAC,EAAE,OAAO,CAAC,MAAM,EAAE,YAAY;AAAA;AAGnE,SAAS,oBAAoB,GAAsB;AAAA,EACxD,OAAO,MAAM,KAAK,iBAAiB,OAAO,CAAC;AAAA;AAGtC,SAAS,aAAa,GAAS;AAAA,EACpC,iBAAiB,MAAM;AAAA;AAGlB,SAAS,4BAA4B,GAAS;AAAA,EACnD,gBAAgB,MAAM;AAAA,EACtB,iBAAiB,MAAM;AAAA,EACvB,YAAY;AAAA;AAGP,SAAS,WAAW,CAAC,OAAsB;AAAA,EAChD,IAAI,UAAU,aAAa,OAAO,MAAM,KAAK,GAAG;AAAA,IAC9C;AAAA,EACF;AAAA,EACA,WAAW,SAAS,KAAK;AAAA,EACzB,YAAY;AAAA,EACZ,aAAa;AAAA;AAGf,SAAS,qBAAqB,GAAS;AAAA,EACrC,MAAM,SAAS,KAAK,IAAI,IAAI;AAAA,EAC5B,YAAY,IAAI,YAAY,iBAAiB,QAAQ,GAAG;AAAA,IACtD,IAAI,QAAQ,UAAU,QAAQ;AAAA,MAC5B,iBAAiB,OAAO,EAAE;AAAA,IAC5B;AAAA,EACF;AAAA;AAGF,SAAS,YAAY,GAAS;AAAA,EAC5B,IAAI,SAAS;AAAA,IACX;AAAA,EACF;AAAA,EACA,UAAU,YAAY,uBAAuB,KAAK,IAAI,OAAQ,WAAW,CAAC,CAAC;AAAA,EAC3E,QAAQ,QAAQ;AAAA;AAGlB,SAAS,WAAW,GAAS;AAAA,EAC3B,IAAI,CAAC,SAAS;AAAA,IACZ;AAAA,EACF;AAAA,EACA,cAAc,OAAO;AAAA,EACrB,UAAU;AAAA;;;ALjTZ,IAAM,qBAAqB,YACzB,WAAW,wBAAwB,GACnC,QACA,MACA,MACF;AACA,IAAM,6BAA6B,YACjC,WAAW,gCAAgC,GAC3C,QACA,MACA,MACF;AACA,IAAM,wBAAwB,YAAY,WAAW,qBAAqB,GAAG,KAAQ,IAAI,MAAO;AAChG,IAAM,sBAAsB;AAAA;AAErB,MAAM,qBAAqB,SAAQ;AAAA,SAC1B,cAAc;AAAA,EACpB;AAAA,EACA;AAAA,EACA;AAAA,EACA,4BAA4B;AAAA,EAC5B;AAAA,EAER,WAAW,CAAC,SAAwB;AAAA,IAClC,MAAM,OAAO;AAAA,IACb,KAAK,cAAc,gBAAgB;AAAA,IACnC,KAAK,mBAAmB,KAAK,YAAY;AAAA,IACzC,KAAK,iBAAiB,IAAI;AAAA;AAAA,cAGf,MAAK,CAAC,SAA+C;AAAA,IAChE,MAAM,WAAW,IAAI,aAAa,OAAO;AAAA,IACzC,QAAO,KAAK,gFAAgF;AAAA,IAC5F,OAAO;AAAA;AAAA,OAGH,KAAI,GAAkB;AAAA,IAE1B,MAAM,mBAAkB,oBAAoB;AAAA,IAC5C,WAAW,WAAW,kBAAiB;AAAA,MACrC,IAAI;AAAA,QACF,YAAY,OAAO;AAAA,QACnB,QAAO,MAAM,yBAAyB,QAAQ,IAAI;AAAA,QAClD,OAAO,KAAK;AAAA,QACZ,QAAO,KAAK,gCAAgC,QAAQ,OAAO,KAAK;AAAA;AAAA,IAEpE;AAAA,IAGA,KAAK,eAAe,MAAM;AAAA,IAE1B,QAAO,KAAK,qCAAqC,iBAAgB,yBAAyB;AAAA;AAAA,MAGxF,qBAAqB,GAAW;AAAA,IAClC,OAAO;AAAA;AAAA,EAMT,WAAW,CAAC,UAAwB;AAAA,IAClC,KAAK,WAAW;AAAA;AAAA,OAMZ,eAAc,CAAC,SAAiB,gBAAiD;AAAA,IACrF,IAAI,CAAC,WAAW,OAAO,YAAY,UAAU;AAAA,MAC3C,OAAO;AAAA,QACL,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,UAAU;AAAA,QACV,OAAO;AAAA,QACP,YAAY,KAAK;AAAA,MACnB;AAAA,IACF;AAAA,IAEA,MAAM,iBAAiB,QAAQ,KAAK;AAAA,IAEpC,IAAI,CAAC,cAAc,cAAc,GAAG;AAAA,MAClC,OAAO;AAAA,QACL,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,UAAU;AAAA,QACV,OAAO;AAAA,QACP,YAAY,KAAK;AAAA,MACnB;AAAA,IACF;AAAA,IAEA,IAAI,mBAAmB,gBAAgB,KAAK,YAAY,iBAAiB,GAAG;AAAA,MAC1E,OAAO;AAAA,QACL,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,UAAU;AAAA,QACV,OAAO;AAAA,QACP,YAAY,KAAK;AAAA,MACnB;AAAA,IACF;AAAA,IAEA,IAAI,eAAe,WAAW,KAAK,GAAG;AAAA,MACpC,MAAM,UAAS,MAAM,KAAK,gBAAgB,cAAc;AAAA,MACxD,KAAK,aAAa,gBAAgB,gBAAgB,OAAM;AAAA,MACxD,OAAO;AAAA,IACT;AAAA,IAEA,MAAM,SAAS,MAAM,KAAK,iBAAiB,cAAc;AAAA,IAEzD,IAAI,OAAO,SAAS;AAAA,MAClB,MAAM,UAAU,KAAK,qBAAqB,gBAAgB,KAAK,gBAAgB;AAAA,MAC/E,IAAI,WAAW,gBAAgB;AAAA,QAC7B,KAAK,aAAa,gBAAgB,gBAAgB,QAAQ,OAAO;AAAA,MACnE,EAAO;AAAA,QACL,KAAK,aAAa,gBAAgB,gBAAgB,MAAM;AAAA;AAAA,IAE5D,EAAO;AAAA,MACL,KAAK,aAAa,gBAAgB,gBAAgB,MAAM;AAAA;AAAA,IAG1D,OAAO;AAAA;AAAA,OAOH,KAAI,CAAC,SAAiB,UAA0B,CAAC,GAAwB;AAAA,IAC7E,IAAI,CAAC,WAAW,OAAO,YAAY,UAAU;AAAA,MAC3C,OAAO;AAAA,QACL,QAAQ;AAAA,QACR,UAAU;AAAA,QACV,YAAY;AAAA,QACZ,YAAY;AAAA,QACZ,QAAQ;AAAA,MACV;AAAA,IACF;AAAA,IAEA,MAAM,iBAAiB,QAAQ,KAAK;AAAA,IAEpC,IAAI,CAAC,cAAc,cAAc,GAAG;AAAA,MAClC,OAAO;AAAA,QACL,QAAQ;AAAA,QACR,UAAU;AAAA,QACV,YAAY;AAAA,QACZ,YAAY;AAAA,QACZ,QAAQ;AAAA,MACV;AAAA,IACF;AAAA,IAEA,IAAI,mBAAmB,gBAAgB,KAAK,YAAY,iBAAiB,GAAG;AAAA,MAC1E,OAAO;AAAA,QACL,QAAQ;AAAA,QACR,UAAU;AAAA,QACV,YAAY;AAAA,QACZ,YAAY;AAAA,QACZ,QAAQ;AAAA,MACV;AAAA,IACF;AAAA,IAEA,MAAM,WAAqB,CAAC;AAAA,IAC5B,MAAM,YAAY,KAAK,YAAY,kBAAkB;AAAA,IACrD,MAAM,mBAAmB,KAAK,YAAY,yBAAyB;AAAA,IACnE,MAAM,sBAAsB,KAAK,YAAY,uBAAuB;AAAA,IACpE,MAAM,kBAAkB,KAAK,YAAY,mBAAmB;AAAA,IAG5D,MAAM,sBAAsB,QAAQ,eAAe;AAAA,IACnD,MAAM,iBAAiB,OAAO,QAAQ,YAAY;AAAA,IAClD,IAAI,CAAC,oBAAoB,uBAAuB,iBAAiB;AAAA,MAC/D,SAAS,KAAK,mEAAmE;AAAA,IACnF;AAAA,IACA,MAAM,cAAc,kBAChB,sBACE,IACA,YAAY,QAAQ,WAAW,qBAAqB,qBAAqB,IAAI,MAAO,IACtF;AAAA,IAGJ,MAAM,aAAa,QAAQ,SAAS,KAAK,KAAK,KAAK,oBAAoB,QAAQ,IAAI;AAAA,IACnF,MAAM,UAAU,eAAe,YAAY,QAAQ;AAAA,IAGnD,MAAM,UAAU,UAAU,QAAQ,GAAG;AAAA,IACrC,MAAM,YAAY,QAAQ,MAAM,KAAK,YAAY,QAAQ,IAAI,IAAI;AAAA,IAEjE,MAAM,aACJ,OAAO,QAAQ,YAAY,YAAY,QAAQ,UAAU,IACrD,QAAQ,UACR;AAAA,IACN,MAAM,SAAS,QAAQ,QAAQ;AAAA,IAC/B,MAAM,eAAe,QAAQ,iBAAiB;AAAA,IAG9C,MAAM,SAAS,MAAM,KAAK,eAAe;AAAA,MACvC,SAAS;AAAA,MACT;AAAA,MACA,KAAK;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,UAAU,QAAQ,YAAY,KAAK;AAAA,MACnC,YAAY,QAAQ;AAAA,MACpB;AAAA,MACA,UAAU,QAAQ;AAAA,IACpB,CAAC;AAAA,IAGD,IAAI,mBAAmB,gBAAgB,MAAM;AAAA,MAC3C,IAAI,gBAAgB,GAAG;AAAA,QACrB,iBAAiB,OAAO,OAAO;AAAA,QAC/B,OAAO;AAAA,UACL,QAAQ;AAAA,UACR,WAAW,OAAO,QAAQ;AAAA,UAC1B,KAAK,OAAO,QAAQ;AAAA,UACpB,WAAW,OAAO;AAAA,UAClB,KAAK,OAAO,QAAQ;AAAA,UACpB,MAAM,OAAO,QAAQ;AAAA,QACvB;AAAA,MACF;AAAA,MAGA,MAAM,aAAa,MAAM,QAAQ,KAAK;AAAA,QACpC,OAAO;AAAA,QACP,IAAI,QAAiB,CAAC,YAAY,WAAW,MAAM,QAAQ,OAAO,GAAG,WAAW,CAAC;AAAA,MACnF,CAAC;AAAA,MAED,IAAI,eAAe,WAAW,CAAC,OAAO,QAAQ,QAAQ;AAAA,QACpD,iBAAiB,OAAO,OAAO;AAAA,QAC/B,MAAM,eAAc,SAAS,SAAS,GAAG,SAAS,KAAK;AAAA,CAAI;AAAA;AAAA,IAAU;AAAA,QACrE,OAAO;AAAA,UACL,QAAQ;AAAA,UACR,WAAW,OAAO,QAAQ;AAAA,UAC1B,KAAK,OAAO,QAAQ;AAAA,UACpB,WAAW,OAAO;AAAA,UAClB,KAAK,OAAO,QAAQ;AAAA,UACpB,MAAM,GAAG,8CAA6C,OAAO,QAAQ,WAAW,OAAO,QAAQ,OAAO;AAAA,QACxG;AAAA,MACF;AAAA,MAGA,MAAM,WAAU,eAAe,UAAU,MAAM,OAAO,UAAU;AAAA,MAChE,MAAM,eAAc,SAAS,SAAS,GAAG,SAAS,KAAK;AAAA,CAAI;AAAA;AAAA,IAAU;AAAA,MAErE,IAAI,SAAQ,WAAW,UAAU;AAAA,QAC/B,OAAO;AAAA,UACL,QAAQ;AAAA,UACR,UAAU,SAAQ,YAAY;AAAA,UAC9B,YAAY,SAAQ;AAAA,UACpB,YAAY,SAAQ;AAAA,UACpB,KAAK;AAAA,UACL,UAAU,SAAQ;AAAA,UAClB,QAAQ,GAAG,eAAc,SAAQ,UAAU;AAAA,QAC7C;AAAA,MACF;AAAA,MAEA,OAAO;AAAA,QACL,QAAQ;AAAA,QACR,UAAU,SAAQ,YAAY;AAAA,QAC9B,YAAY,SAAQ;AAAA,QACpB,YAAY,GAAG,eAAc,SAAQ,cAAc;AAAA,QACnD,KAAK;AAAA,MACP;AAAA,IACF;AAAA,IAGA,MAAM,UAAU,MAAM,OAAO;AAAA,IAC7B,MAAM,cAAc,SAAS,SAAS,GAAG,SAAS,KAAK;AAAA,CAAI;AAAA;AAAA,IAAU;AAAA,IAErE,IAAI,QAAQ,WAAW,UAAU;AAAA,MAC/B,OAAO;AAAA,QACL,QAAQ;AAAA,QACR,UAAU,QAAQ,YAAY;AAAA,QAC9B,YAAY,QAAQ;AAAA,QACpB,YAAY,QAAQ;AAAA,QACpB,KAAK;AAAA,QACL,UAAU,QAAQ;AAAA,QAClB,QAAQ,GAAG,cAAc,QAAQ,UAAU;AAAA,MAC7C;AAAA,IACF;AAAA,IAEA,OAAO;AAAA,MACL,QAAQ;AAAA,MACR,UAAU,QAAQ,YAAY;AAAA,MAC9B,YAAY,QAAQ;AAAA,MACpB,YAAY,GAAG,cAAc,QAAQ,cAAc;AAAA,MACnD,KAAK;AAAA,IACP;AAAA;AAAA,OAOI,cAAa,CAAC,QAIjB;AAAA,IACD,MAAM,WAAW,KAAK;AAAA,IACtB,MAAM,YAAY,CAAC,aACjB,CAAC,YAAY,UAAS,aAAa;AAAA,IAErC,IAAI,OAAO,WAAW,QAAQ;AAAA,MAC5B,MAAM,UAAU,oBAAoB,EACjC,OAAO,CAAC,MAAM,UAAU,CAAC,CAAC,EAC1B,IAAI,CAAC,OAAO;AAAA,QACX,WAAW,EAAE;AAAA,QACb,QAAQ;AAAA,QACR,KAAK,EAAE,OAAO;AAAA,QACd,WAAW,EAAE;AAAA,QACb,WAAW,KAAK,IAAI,IAAI,EAAE;AAAA,QAC1B,KAAK,EAAE;AAAA,QACP,SAAS,EAAE;AAAA,QACX,MAAM,kBAAkB,EAAE,OAAO;AAAA,QACjC,MAAM,EAAE;AAAA,QACR,WAAW,EAAE;AAAA,MACf,EAAE;AAAA,MACJ,MAAM,YAAW,qBAAqB,EACnC,OAAO,CAAC,MAAM,UAAU,CAAC,CAAC,EAC1B,IAAI,CAAC,OAAO;AAAA,QACX,WAAW,EAAE;AAAA,QACb,QAAQ,EAAE;AAAA,QACV,WAAW,EAAE;AAAA,QACb,SAAS,EAAE;AAAA,QACX,WAAW,EAAE,UAAU,EAAE;AAAA,QACzB,KAAK,EAAE;AAAA,QACP,SAAS,EAAE;AAAA,QACX,MAAM,kBAAkB,EAAE,OAAO;AAAA,QACjC,MAAM,EAAE;AAAA,QACR,WAAW,EAAE;AAAA,QACb,UAAU,EAAE,YAAY;AAAA,QACxB,YAAY,EAAE,cAAc;AAAA,MAC9B,EAAE;AAAA,MACJ,MAAM,WAAW,CAAC,GAAG,SAAS,GAAG,SAAQ,EACtC,MAAM,EACN,KACC,CACE,GACA,MACG,EAAE,YAAY,EAAE,SACvB;AAAA,MACF,MAAM,QAAQ,SAAS,IAAI,CAAC,MAAiC;AAAA,QAC3D,MAAM,QAAQ,EAAE,OAAO,eAAe,EAAE,MAAM,EAAE,IAAI,eAAe,EAAE,SAAS,GAAG;AAAA,QACjF,OAAO,GAAG,EAAE,aAAa,IAAI,EAAE,QAAQ,CAAC,KAAK,eAAe,EAAE,SAAS,QAAQ;AAAA,OAChF;AAAA,MACD,OAAO;AAAA,QACL,SAAS;AAAA,QACT,SAAS,MAAM,KAAK;AAAA,CAAI,KAAK;AAAA,QAC7B,MAAM,EAAE,SAAS;AAAA,MACnB;AAAA,IACF;AAAA,IAEA,IAAI,CAAC,OAAO,WAAW;AAAA,MACrB,OAAO;AAAA,QACL,SAAS;AAAA,QACT,SAAS;AAAA,MACX;AAAA,IACF;AAAA,IAEA,MAAM,UAAU,WAAW,OAAO,SAAS;AAAA,IAC3C,MAAM,WAAW,mBAAmB,OAAO,SAAS;AAAA,IACpD,MAAM,gBAAgB,UAAU,OAAO,IAAI,UAAU;AAAA,IACrD,MAAM,iBAAiB,UAAU,QAAQ,IAAI,WAAW;AAAA,IAExD,QAAQ,OAAO;AAAA,WACR,QAAQ;AAAA,QACX,IAAI,CAAC,eAAe;AAAA,UAClB,IAAI,gBAAgB;AAAA,YAClB,OAAO;AAAA,cACL,SAAS;AAAA,cACT,UACG,eAAe,QACd,sBAAsB,eAAe,YAAY,wBAAuB,SAC1E;AAAA;AAAA,sBACE,eAAe,aACX,UAAU,eAAe,eACzB,QAAQ,eAAe,YAAY;AAAA,cAE3C,MAAM;AAAA,gBACJ,QAAQ,eAAe,WAAW,cAAc,cAAc;AAAA,gBAC9D,WAAW,OAAO;AAAA,gBAClB,UAAU,eAAe,YAAY;AAAA,gBACrC,YAAY,eAAe;AAAA,gBAC3B,MAAM,kBAAkB,eAAe,OAAO;AAAA,cAChD;AAAA,YACF;AAAA,UACF;AAAA,UACA,OAAO;AAAA,YACL,SAAS;AAAA,YACT,SAAS,wBAAwB,OAAO;AAAA,UAC1C;AAAA,QACF;AAAA,QACA,IAAI,CAAC,cAAc,cAAc;AAAA,UAC/B,OAAO;AAAA,YACL,SAAS;AAAA,YACT,SAAS,WAAW,OAAO;AAAA,UAC7B;AAAA,QACF;AAAA,QACA,QAAQ,QAAQ,WAAW,aAAa,aAAa;AAAA,QACrD,MAAM,SAAS,cAAc;AAAA,QAC7B,MAAM,WAAW,cAAc,YAAY;AAAA,QAC3C,MAAM,aAAa,cAAc,cAAc;AAAA,QAC/C,IAAI,QAAQ;AAAA,UACV,MAAM,UAAS,aAAa,KAAK,cAAc,OAAO,cAAc;AAAA,UACpE,WACE,eACA,cAAc,YAAY,MAC1B,cAAc,cAAc,MAC5B,OACF;AAAA,QACF;AAAA,QACA,MAAM,SAAS,SACX,aAAa,KAAK,cAAc,OAC9B,cACA,WACF;AAAA,QACJ,MAAM,SAAS,CAAC,OAAO,QAAQ,GAAG,OAAO,QAAQ,CAAC,EAAE,OAAO,OAAO,EAAE,KAAK;AAAA,CAAI,EAAE,KAAK;AAAA,QACpF,OAAO;AAAA,UACL,SAAS;AAAA,UACT,UACG,UAAU,sBACV,SACG;AAAA;AAAA,sBACE,aAAa,UAAU,eAAe,QAAQ,gBAEhD;AAAA;AAAA;AAAA,UACN,MAAM;AAAA,YACJ;AAAA,YACA,WAAW,OAAO;AAAA,YAClB,UAAU,SAAS,WAAW;AAAA,YAC9B,YAAY,cAAc;AAAA,YAC1B,MAAM,kBAAkB,cAAc,OAAO;AAAA,UAC/C;AAAA,QACF;AAAA,MACF;AAAA,WAEK,OAAO;AAAA,QACV,IAAI,eAAe;AAAA,UACjB,IAAI,CAAC,cAAc,cAAc;AAAA,YAC/B,OAAO;AAAA,cACL,SAAS;AAAA,cACT,SAAS,WAAW,OAAO;AAAA,YAC7B;AAAA,UACF;AAAA,UACA,QAAQ,OAAO,YAAY,eAAe,cACxC,cAAc,YACd,OAAO,QACP,OAAO,KACT;AAAA,UACA,OAAO;AAAA,YACL,SAAS;AAAA,YACT,SAAS,SAAS;AAAA,YAClB,MAAM;AAAA,cACJ,QAAQ,cAAc,SAAS,cAAc;AAAA,cAC7C,WAAW,OAAO;AAAA,cAClB;AAAA,cACA;AAAA,cACA,WAAW,cAAc;AAAA,cACzB,MAAM,kBAAkB,cAAc,OAAO;AAAA,YAC/C;AAAA,UACF;AAAA,QACF;AAAA,QACA,IAAI,gBAAgB;AAAA,UAClB,QAAQ,OAAO,YAAY,eAAe,cACxC,eAAe,YACf,OAAO,QACP,OAAO,KACT;AAAA,UACA,MAAM,SAAS,eAAe,WAAW,cAAc,cAAc;AAAA,UACrE,OAAO;AAAA,YACL,SAAS;AAAA,YACT,SAAS,SAAS;AAAA,YAClB,MAAM;AAAA,cACJ;AAAA,cACA,WAAW,OAAO;AAAA,cAClB;AAAA,cACA;AAAA,cACA,WAAW,eAAe;AAAA,cAC1B,UAAU,eAAe,YAAY;AAAA,cACrC,YAAY,eAAe,cAAc;AAAA,cACzC,MAAM,kBAAkB,eAAe,OAAO;AAAA,YAChD;AAAA,UACF;AAAA,QACF;AAAA,QACA,OAAO;AAAA,UACL,SAAS;AAAA,UACT,SAAS,wBAAwB,OAAO;AAAA,QAC1C;AAAA,MACF;AAAA,WAEK,SAAS;AAAA,QACZ,IAAI,CAAC,eAAe;AAAA,UAClB,OAAO;AAAA,YACL,SAAS;AAAA,YACT,SAAS,+BAA+B,OAAO;AAAA,UACjD;AAAA,QACF;AAAA,QACA,IAAI,CAAC,cAAc,cAAc;AAAA,UAC/B,OAAO;AAAA,YACL,SAAS;AAAA,YACT,SAAS,WAAW,OAAO;AAAA,UAC7B;AAAA,QACF;AAAA,QACA,MAAM,QAAQ,cAAc,SAAS,cAAc,OAAO;AAAA,QAC1D,IAAI,CAAC,SAAS,MAAM,WAAW;AAAA,UAC7B,OAAO;AAAA,YACL,SAAS;AAAA,YACT,SAAS,WAAW,OAAO;AAAA,UAC7B;AAAA,QACF;AAAA,QACA,MAAM,IAAI,QAAc,CAAC,SAAS,WAAW;AAAA,UAC3C,MAAM,MAAM,OAAO,QAAQ,IAAI,CAAC,QAAQ;AAAA,YACtC,IAAI;AAAA,cAAK,OAAO,GAAG;AAAA,YACd;AAAA,sBAAQ;AAAA,WACd;AAAA,SACF;AAAA,QACD,IAAI,OAAO,KAAK;AAAA,UACd,MAAM,IAAI;AAAA,QACZ;AAAA,QACA,OAAO;AAAA,UACL,SAAS;AAAA,UACT,SAAS,UAAU,OAAO,QAAQ,IAAI,2BAA2B,OAAO,YACtE,OAAO,MAAM,oBAAoB;AAAA,UAEnC,MAAM;AAAA,YACJ,WAAW,OAAO;AAAA,YAClB,MAAM,kBAAkB,cAAc,OAAO;AAAA,UAC/C;AAAA,QACF;AAAA,MACF;AAAA,WAEK,aAAa;AAAA,QAChB,IAAI,CAAC,eAAe;AAAA,UAClB,OAAO;AAAA,YACL,SAAS;AAAA,YACT,SAAS,+BAA+B,OAAO;AAAA,UACjD;AAAA,QACF;AAAA,QACA,IAAI,CAAC,cAAc,cAAc;AAAA,UAC/B,OAAO;AAAA,YACL,SAAS;AAAA,YACT,SAAS,WAAW,OAAO;AAAA,UAC7B;AAAA,QACF;AAAA,QACA,MAAM,QAAQ,cAAc,SAAS,cAAc,OAAO;AAAA,QAC1D,IAAI,CAAC,SAAS,MAAM,WAAW;AAAA,UAC7B,OAAO;AAAA,YACL,SAAS;AAAA,YACT,SAAS,WAAW,OAAO;AAAA,UAC7B;AAAA,QACF;AAAA,QACA,QAAQ,MAAM,aAAa,kBAAkB;AAAA,UAC3C,MAAM,OAAO;AAAA,UACb,KAAK,OAAO;AAAA,UACZ,SAAS,OAAO;AAAA,QAClB,CAAC;AAAA,QACD,IAAI,CAAC,MAAM;AAAA,UACT,OAAO,EAAE,SAAS,OAAO,SAAS,wBAAwB;AAAA,QAC5D;AAAA,QACA,MAAM,IAAI,QAAc,CAAC,SAAS,WAAW;AAAA,UAC3C,MAAM,MAAM,MAAM,CAAC,QAAQ;AAAA,YACzB,IAAI;AAAA,cAAK,OAAO,GAAG;AAAA,YACd;AAAA,sBAAQ;AAAA,WACd;AAAA,SACF;AAAA,QACD,OAAO;AAAA,UACL,SAAS;AAAA,UACT,SACE,QAAQ,KAAK,2BAA2B,OAAO,gBAC9C,SAAS,SAAS;AAAA;AAAA,IAAkB,SAAS,KAAK;AAAA,GAAM,MAAM;AAAA,UACjE,MAAM;AAAA,YACJ,WAAW,OAAO;AAAA,YAClB,MAAM,kBAAkB,cAAc,OAAO;AAAA,UAC/C;AAAA,QACF;AAAA,MACF;AAAA,WAEK,UAAU;AAAA,QACb,IAAI,CAAC,eAAe;AAAA,UAClB,OAAO;AAAA,YACL,SAAS;AAAA,YACT,SAAS,+BAA+B,OAAO;AAAA,UACjD;AAAA,QACF;AAAA,QACA,IAAI,CAAC,cAAc,cAAc;AAAA,UAC/B,OAAO;AAAA,YACL,SAAS;AAAA,YACT,SAAS,WAAW,OAAO;AAAA,UAC7B;AAAA,QACF;AAAA,QACA,MAAM,QAAQ,cAAc,SAAS,cAAc,OAAO;AAAA,QAC1D,IAAI,CAAC,SAAS,MAAM,WAAW;AAAA,UAC7B,OAAO;AAAA,YACL,SAAS;AAAA,YACT,SAAS,WAAW,OAAO;AAAA,UAC7B;AAAA,QACF;AAAA,QACA,MAAM,IAAI,QAAc,CAAC,SAAS,WAAW;AAAA,UAC3C,MAAM,MAAM,MAAM,CAAC,QAAQ;AAAA,YACzB,IAAI;AAAA,cAAK,OAAO,GAAG;AAAA,YACd;AAAA,sBAAQ;AAAA,WACd;AAAA,SACF;AAAA,QACD,OAAO;AAAA,UACL,SAAS;AAAA,UACT,SAAS,qBAAqB,OAAO;AAAA,UACrC,MAAM;AAAA,YACJ,WAAW,OAAO;AAAA,YAClB,MAAM,kBAAkB,cAAc,OAAO;AAAA,UAC/C;AAAA,QACF;AAAA,MACF;AAAA,WAEK,SAAS;AAAA,QACZ,IAAI,CAAC,eAAe;AAAA,UAClB,OAAO;AAAA,YACL,SAAS;AAAA,YACT,SAAS,+BAA+B,OAAO;AAAA,UACjD;AAAA,QACF;AAAA,QACA,IAAI,CAAC,cAAc,cAAc;AAAA,UAC/B,OAAO;AAAA,YACL,SAAS;AAAA,YACT,SAAS,WAAW,OAAO;AAAA,UAC7B;AAAA,QACF;AAAA,QACA,MAAM,QAAQ,cAAc,SAAS,cAAc,OAAO;AAAA,QAC1D,IAAI,CAAC,SAAS,MAAM,WAAW;AAAA,UAC7B,OAAO;AAAA,YACL,SAAS;AAAA,YACT,SAAS,WAAW,OAAO;AAAA,UAC7B;AAAA,QACF;AAAA,QACA,MAAM,UAAU,YAAY,OAAO,QAAQ,IAAI,OAAO,cAAc,KAAK;AAAA,QACzE,IAAI,CAAC,SAAS;AAAA,UACZ,OAAO,EAAE,SAAS,OAAO,SAAS,0BAA0B;AAAA,QAC9D;AAAA,QACA,MAAM,IAAI,QAAc,CAAC,SAAS,WAAW;AAAA,UAC3C,MAAM,MAAM,SAAS,CAAC,QAAQ;AAAA,YAC5B,IAAI;AAAA,cAAK,OAAO,GAAG;AAAA,YACd;AAAA,sBAAQ;AAAA,WACd;AAAA,SACF;AAAA,QACD,OAAO;AAAA,UACL,SAAS;AAAA,UACT,SAAS,UAAU,OAAO,MAAM,UAAU,sBAAsB,OAAO;AAAA,UACvE,MAAM;AAAA,YACJ,WAAW,OAAO;AAAA,YAClB,MAAM,kBAAkB,cAAc,OAAO;AAAA,UAC/C;AAAA,QACF;AAAA,MACF;AAAA,WAEK,QAAQ;AAAA,QACX,IAAI,CAAC,eAAe;AAAA,UAClB,OAAO;AAAA,YACL,SAAS;AAAA,YACT,SAAS,+BAA+B,OAAO;AAAA,UACjD;AAAA,QACF;AAAA,QACA,IAAI,CAAC,cAAc,cAAc;AAAA,UAC/B,OAAO;AAAA,YACL,SAAS;AAAA,YACT,SAAS,WAAW,OAAO;AAAA,UAC7B;AAAA,QACF;AAAA,QACA,YAAY,aAAa;AAAA,QACzB,WAAW,eAAe,MAAM,WAAW,QAAQ;AAAA,QACnD,OAAO;AAAA,UACL,SAAS;AAAA,UACT,SAAS,kBAAkB,OAAO;AAAA,UAClC,MAAM,EAAE,MAAM,kBAAkB,cAAc,OAAO,EAAE;AAAA,QACzD;AAAA,MACF;AAAA,WAEK,SAAS;AAAA,QACZ,IAAI,gBAAgB;AAAA,UAClB,cAAc,OAAO,SAAS;AAAA,UAC9B,OAAO;AAAA,YACL,SAAS;AAAA,YACT,SAAS,mBAAmB,OAAO;AAAA,UACrC;AAAA,QACF;AAAA,QACA,OAAO;AAAA,UACL,SAAS;AAAA,UACT,SAAS,iCAAiC,OAAO;AAAA,QACnD;AAAA,MACF;AAAA,WAEK,UAAU;AAAA,QACb,IAAI,eAAe;AAAA,UACjB,YAAY,aAAa;AAAA,UACzB,WAAW,eAAe,MAAM,WAAW,QAAQ;AAAA,UACnD,OAAO;AAAA,YACL,SAAS;AAAA,YACT,SAAS,mBAAmB,OAAO;AAAA,YACnC,MAAM,EAAE,MAAM,kBAAkB,cAAc,OAAO,EAAE;AAAA,UACzD;AAAA,QACF;AAAA,QACA,IAAI,gBAAgB;AAAA,UAClB,cAAc,OAAO,SAAS;AAAA,UAC9B,OAAO;AAAA,YACL,SAAS;AAAA,YACT,SAAS,mBAAmB,OAAO;AAAA,UACrC;AAAA,QACF;AAAA,QACA,OAAO;AAAA,UACL,SAAS;AAAA,UACT,SAAS,wBAAwB,OAAO;AAAA,QAC1C;AAAA,MACF;AAAA;AAAA,IAGF,OAAO;AAAA,MACL,SAAS;AAAA,MACT,SAAS,kBAAkB,OAAO;AAAA,IACpC;AAAA;AAAA,EAQF,mBAAmB,GAAqB;AAAA,IACtC,MAAM,WAAW,KAAK;AAAA,IACtB,OAAO,oBAAoB,EAAE,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,aAAa,QAAQ;AAAA;AAAA,EAMjF,oBAAoB,GAAsB;AAAA,IACxC,MAAM,WAAW,KAAK;AAAA,IACtB,OAAO,qBAAqB,EAAE,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,aAAa,QAAQ;AAAA;AAAA,EAMlF,UAAU,CAAC,IAAwC;AAAA,IACjD,MAAM,UAAU,WAAW,EAAE;AAAA,IAC7B,IAAI,CAAC;AAAA,MAAS;AAAA,IACd,IAAI,KAAK,YAAY,QAAQ,aAAa,KAAK;AAAA,MAAU;AAAA,IACzD,OAAO;AAAA;AAAA,EAMT,kBAAkB,CAAC,IAAyC;AAAA,IAC1D,MAAM,UAAU,mBAAmB,EAAE;AAAA,IACrC,IAAI,CAAC;AAAA,MAAS;AAAA,IACd,IAAI,KAAK,YAAY,QAAQ,aAAa,KAAK;AAAA,MAAU;AAAA,IACzD,OAAO;AAAA;AAAA,EAMT,eAAe,CAAC,IAAqB;AAAA,IACnC,MAAM,UAAU,KAAK,WAAW,EAAE;AAAA,IAClC,IAAI,CAAC;AAAA,MAAS,OAAO;AAAA,IACrB,YAAY,OAAO;AAAA,IACnB,WAAW,SAAS,MAAM,WAAW,QAAQ;AAAA,IAC7C,OAAO;AAAA;AAAA,EAMT,iBAAiB,CAAC,gBAAwB,OAAuC;AAAA,IAC/E,MAAM,UAAU,KAAK,eAAe,IAAI,cAAc,KAAK,CAAC;AAAA,IAC5D,IAAI,SAAS,QAAQ,GAAG;AAAA,MACtB,OAAO,QAAQ,MAAM,CAAC,KAAK;AAAA,IAC7B;AAAA,IACA,OAAO;AAAA;AAAA,EAMT,mBAAmB,CAAC,gBAA8B;AAAA,IAChD,KAAK,eAAe,OAAO,cAAc;AAAA,IACzC,QAAO,KAAK,6CAA6C,gBAAgB;AAAA;AAAA,EAM3E,mBAAmB,CAAC,iBAAkC;AAAA,IACpD,OAAO,KAAK;AAAA;AAAA,EAMd,mBAAmB,CAAC,WAA4B;AAAA,IAC9C,MAAM,gBAAgB,aACpB,WACA,KAAK,YAAY,kBACjB,KAAK,gBACP;AAAA,IACA,IAAI,CAAC,eAAe;AAAA,MAClB,OAAO;AAAA,IACT;AAAA,IACA,KAAK,mBAAmB;AAAA,IACxB,OAAO;AAAA;AAAA,EAMT,mBAAmB,GAAW;AAAA,IAC5B,OAAO,KAAK,YAAY;AAAA;AAAA,EAM1B,cAAc,GAAgB;AAAA,IAC5B,OAAO,KAAK,KAAK,YAAY;AAAA;AAAA,OAKjB,gBAAe,CAAC,SAAyC;AAAA,IACrE,MAAM,QAAQ,QAAQ,MAAM,KAAK;AAAA,IACjC,IAAI,MAAM,SAAS,GAAG;AAAA,MACpB,KAAK,mBAAmB,KAAK,YAAY;AAAA,MACzC,OAAO;AAAA,QACL,SAAS;AAAA,QACT,QAAQ,yBAAyB,KAAK;AAAA,QACtC,QAAQ;AAAA,QACR,UAAU;AAAA,QACV,YAAY,KAAK;AAAA,MACnB;AAAA,IACF;AAAA,IAEA,MAAM,aAAa,MAAM,MAAM,CAAC,EAAE,KAAK,GAAG;AAAA,IAC1C,MAAM,gBAAgB,aACpB,YACA,KAAK,YAAY,kBACjB,KAAK,gBACP;AAAA,IAEA,IAAI,CAAC,eAAe;AAAA,MAClB,OAAO;AAAA,QACL,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,UAAU;AAAA,QACV,OAAO;AAAA,QACP,YAAY,KAAK;AAAA,MACnB;AAAA,IACF;AAAA,IAEA,KAAK,mBAAmB;AAAA,IACxB,OAAO;AAAA,MACL,SAAS;AAAA,MACT,QAAQ,yBAAyB,KAAK;AAAA,MACtC,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,YAAY,KAAK;AAAA,IACnB;AAAA;AAAA,OAGY,iBAAgB,CAAC,SAAyC;AAAA,IACtE,OAAO,IAAI,QAAQ,CAAC,YAAY;AAAA,MAC9B,MAAM,WAAW,QAAQ,SAAS,GAAG,KAAK,QAAQ,SAAS,GAAG,KAAK,QAAQ,SAAS,GAAG;AAAA,MAEvF,IAAI;AAAA,MACJ,IAAI;AAAA,MAEJ,IAAI,UAAU;AAAA,QACZ,MAAM;AAAA,QACN,OAAO,CAAC,MAAM,OAAO;AAAA,QACrB,QAAO,KAAK,mCAAmC,eAAe,KAAK,kBAAkB;AAAA,MACvF,EAAO;AAAA,QACL,MAAM,QAAQ,QAAQ,MAAM,KAAK;AAAA,QACjC,MAAM,MAAM;AAAA,QACZ,OAAO,MAAM,MAAM,CAAC;AAAA,QACpB,QAAO,KAAK,sBAAsB,OAAO,KAAK,KAAK,GAAG,QAAQ,KAAK,kBAAkB;AAAA;AAAA,MAGvF,IAAI,SAAS;AAAA,MACb,IAAI,SAAS;AAAA,MACb,IAAI,WAAW;AAAA,MAEf,MAAM,QAAQ,OAAM,KAAK,MAAM;AAAA,QAC7B,KAAK,KAAK;AAAA,QACV,KAAK,QAAQ;AAAA,QACb,OAAO;AAAA,MACT,CAAC;AAAA,MAED,MAAM,UAAU,WAAW,MAAM;AAAA,QAC/B,WAAW;AAAA,QACX,MAAM,KAAK,SAAS;AAAA,QACpB,WAAW,MAAM;AAAA,UACf,IAAI,CAAC,MAAM,QAAQ;AAAA,YACjB,MAAM,KAAK,SAAS;AAAA,UACtB;AAAA,WACC,IAAI;AAAA,SACN,KAAK,YAAY,OAAO;AAAA,MAE3B,IAAI,MAAM,QAAQ;AAAA,QAChB,MAAM,OAAO,GAAG,QAAQ,CAAC,SAAiB;AAAA,UACxC,UAAU,KAAK,SAAS;AAAA,SACzB;AAAA,MACH;AAAA,MAEA,IAAI,MAAM,QAAQ;AAAA,QAChB,MAAM,OAAO,GAAG,QAAQ,CAAC,SAAiB;AAAA,UACxC,UAAU,KAAK,SAAS;AAAA,SACzB;AAAA,MACH;AAAA,MAEA,MAAM,GAAG,QAAQ,CAAC,SAAS;AAAA,QACzB,aAAa,OAAO;AAAA,QAEpB,IAAI,UAAU;AAAA,UACZ,QAAQ;AAAA,YACN,SAAS;AAAA,YACT;AAAA,YACA,QAAQ,GAAG;AAAA;AAAA,YACX,UAAU;AAAA,YACV,OAAO;AAAA,YACP,YAAY,KAAK;AAAA,UACnB,CAAC;AAAA,UACD;AAAA,QACF;AAAA,QAEA,QAAQ;AAAA,UACN,SAAS,SAAS;AAAA,UAClB;AAAA,UACA;AAAA,UACA,UAAU;AAAA,UACV,YAAY,KAAK;AAAA,QACnB,CAAC;AAAA,OACF;AAAA,MAED,MAAM,GAAG,SAAS,CAAC,QAAe;AAAA,QAChC,aAAa,OAAO;AAAA,QACpB,QAAQ;AAAA,UACN,SAAS;AAAA,UACT;AAAA,UACA,QAAQ,IAAI;AAAA,UACZ,UAAU;AAAA,UACV,OAAO;AAAA,UACP,YAAY,KAAK;AAAA,QACnB,CAAC;AAAA,OACF;AAAA,KACF;AAAA;AAAA,OAGW,eAAc,CAAC,MA0B1B;AAAA,IACD,MAAM,YAAY,KAAK,IAAI;AAAA,IAC3B,MAAM,YAAY,kBAAkB;AAAA,IACpC,IAAI,QAA+C;AAAA,IACnD,IAAI,MAAwB;AAAA,IAC5B,IAAI;AAAA,IAEJ,IAAI,KAAK,QAAQ;AAAA,MACf,QAAQ,OAAO,MAAM,cAAc,eAAe;AAAA,MAClD,IAAI;AAAA,QACF,MAAM,YAAa;AAAA,QAInB,MAAM,WAAW,UAAU,SAAS,UAAU,SAAS;AAAA,QACvD,IAAI,CAAC,UAAU;AAAA,UACb,MAAM,IAAI,MAAM,wDAAwD;AAAA,QAC1E;AAAA,QACA,MAAM,SAAS,OAAO,CAAC,GAAG,WAAW,KAAK,OAAO,GAAG;AAAA,UAClD,KAAK,KAAK;AAAA,UACV,KAAK,KAAK;AAAA,UACV,MAAM,QAAQ,IAAI,QAAQ;AAAA,UAC1B,MAAM;AAAA,UACN,MAAM;AAAA,QACR,CAAC;AAAA,QACD,QAAQ;AAAA,UACN,WAAW;AAAA,UACX,OAAO,CAAC,MAAM,OAAO;AAAA,YACnB,IAAI;AAAA,cACF,KAAK,MAAM,IAAI;AAAA,cACf,KAAK,IAAI;AAAA,cACT,OAAO,KAAK;AAAA,cACZ,KAAK,GAAY;AAAA;AAAA;AAAA,UAGrB,KAAK,MAAM;AAAA,YACT,IAAI;AAAA,cACF,MAAM,MAAM,QAAQ,aAAa,UAAU,SAAS;AAAA,cACpD,KAAK,MAAM,GAAG;AAAA,cACd,MAAM;AAAA;AAAA,QAIZ;AAAA,QACA,OAAO,KAAK;AAAA,QACZ,MAAM,UAAU,OAAO,GAAG;AAAA,QAC1B,MAAM,UAAU,8BAA8B;AAAA,QAC9C,QAAO,KAAK,2BAA2B,iCAAiC;AAAA,QACxE,KAAK,SAAS,KAAK,OAAO;AAAA;AAAA,IAG9B;AAAA,IAEA,IAAI,CAAC,KAAK;AAAA,MACR,QAAQ,OAAO,MAAM,cAAc,eAAe;AAAA,MAClD,MAAM,OAAO,OAAM,OAAO,CAAC,GAAG,WAAW,KAAK,OAAO,GAAG;AAAA,QACtD,KAAK,KAAK;AAAA,QACV,KAAK,KAAK;AAAA,QACV,UAAU,QAAQ,aAAa;AAAA,QAC/B,OAAO,CAAC,QAAQ,QAAQ,MAAM;AAAA,QAC9B,aAAa;AAAA,MACf,CAAC;AAAA,MACD,QAAQ;AAAA,MACR,QAAQ,MAAM;AAAA,IAChB;AAAA,IAEA,MAAM,UAA0B;AAAA,MAC9B,IAAI;AAAA,MACJ,SAAS,KAAK;AAAA,MACd,UAAU,KAAK;AAAA,MACf,YAAY,KAAK;AAAA,MACjB,cAAc,KAAK;AAAA,MACnB,cAAc;AAAA,MACd,OAAO,SAAS;AAAA,MAChB;AAAA,MACA,KAAK,OAAO,OAAO,KAAK;AAAA,MACxB;AAAA,MACA,KAAK,KAAK;AAAA,MACV,gBAAgB,KAAK;AAAA,MACrB,uBAAuB,KAAK;AAAA,MAC5B,kBAAkB;AAAA,MAClB,eAAe,CAAC;AAAA,MAChB,eAAe,CAAC;AAAA,MAChB,oBAAoB;AAAA,MACpB,oBAAoB;AAAA,MACpB,YAAY;AAAA,MACZ,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,YAAY;AAAA,MACZ,WAAW;AAAA,MACX,cAAc;AAAA,IAChB;AAAA,IACA,WAAW,OAAO;AAAA,IAElB,IAAI,UAAU;AAAA,IACd,IAAI,eAAsC;AAAA,IAC1C,IAAI,uBAA8C;AAAA,IAClD,IAAI,WAAW;AAAA,IACf,MAAM,oBAAoB;AAAA,IAC1B,IAAI,YAUO;AAAA,IAEX,MAAM,SAAS,CAAC,YAQV;AAAA,MACJ,IAAI,SAAS;AAAA,QACX;AAAA,MACF;AAAA,MACA,UAAU;AAAA,MACV,YAAY,OAAO;AAAA;AAAA,IAGrB,MAAM,kBAAkB,MAAM;AAAA,MAC5B,IAAI,QAAQ,QAAQ;AAAA,QAClB;AAAA,MACF;AAAA,MACA,WAAW,SAAS,MAAM,WAAW,QAAQ;AAAA,MAC7C,MAAM,aAAa,QAAQ,WAAW,KAAK;AAAA,MAC3C,MAAM,SAAS,2BAA2B,KAAK;AAAA,MAC/C,OAAO;AAAA,QACL,QAAQ;AAAA,QACR,UAAU;AAAA,QACV,YAAY;AAAA,QACZ,YAAY,KAAK,IAAI,IAAI;AAAA,QACzB;AAAA,QACA,UAAU;AAAA,QACV,QAAQ,aAAa,GAAG;AAAA;AAAA,EAAiB,WAAW;AAAA,MACtD,CAAC;AAAA;AAAA,IAGH,MAAM,YAAY,MAAM;AAAA,MACtB,WAAW;AAAA,MACX,YAAY,OAAO;AAAA,MACnB,IAAI,CAAC,sBAAsB;AAAA,QACzB,uBAAuB,WAAW,MAAM;AAAA,UACtC,gBAAgB;AAAA,WACf,iBAAiB;AAAA,MACtB;AAAA;AAAA,IAGF,IAAI,KAAK,aAAa,GAAG;AAAA,MACvB,eAAe,WAAW,MAAM;AAAA,QAC9B,UAAU;AAAA,SACT,KAAK,aAAa,IAAI;AAAA,IAC3B;AAAA,IAEA,MAAM,aAAa,MAAM;AAAA,MACvB,IAAI,KAAK,UAAU;AAAA,QACjB,KAAK,SAAS,OAAO;AAAA,MACvB;AAAA;AAAA,IAGF,MAAM,eAAe,CAAC,SAAiB;AAAA,MACrC,MAAM,MAAM,qBAAqB,KAAK,SAAS,CAAC;AAAA,MAChD,WAAW,SAAS,YAAY,GAAG,GAAG;AAAA,QACpC,aAAa,SAAS,UAAU,KAAK;AAAA,QACrC,WAAW;AAAA,MACb;AAAA;AAAA,IAGF,MAAM,eAAe,CAAC,SAAiB;AAAA,MACrC,MAAM,MAAM,qBAAqB,KAAK,SAAS,CAAC;AAAA,MAChD,WAAW,SAAS,YAAY,GAAG,GAAG;AAAA,QACpC,aAAa,SAAS,UAAU,KAAK;AAAA,QACrC,WAAW;AAAA,MACb;AAAA;AAAA,IAGF,IAAI,KAAK;AAAA,MACP,MAAM,iBAAiB,4BAA4B;AAAA,MACnD,IAAI,OAAO,CAAC,SAAS;AAAA,QACnB,MAAM,MAAM,KAAK,SAAS;AAAA,QAC1B,QAAQ,SAAS,aAAa,iBAAiB,GAAG;AAAA,QAClD,IAAI,WAAW,GAAG;AAAA,UAChB,SAAS,IAAI,EAAG,IAAI,UAAU,KAAK,GAAG;AAAA,YACpC,IAAI,MAAM,cAAc;AAAA,UAC1B;AAAA,QACF;AAAA,QACA,aAAa,OAAO;AAAA,OACrB;AAAA,IACH,EAAO,SAAI,OAAO;AAAA,MAChB,MAAM,OAAO,GAAG,QAAQ,YAAY;AAAA,MACpC,MAAM,OAAO,GAAG,QAAQ,YAAY;AAAA,IACtC;AAAA,IAEA,MAAM,UAAU,IAAI,QAQjB,CAAC,YAAY;AAAA,MACd,YAAY;AAAA,MACZ,MAAM,aAAa,CAAC,MAAqB,eAA+C;AAAA,QACtF,IAAI,cAAc;AAAA,UAChB,aAAa,YAAY;AAAA,QAC3B;AAAA,QACA,IAAI,sBAAsB;AAAA,UACxB,aAAa,oBAAoB;AAAA,QACnC;AAAA,QACA,MAAM,aAAa,KAAK,IAAI,IAAI;AAAA,QAChC,MAAM,YAAY,cAAc;AAAA,QAChC,MAAM,YAAY,SAAS,KAAK,CAAC,aAAa,CAAC;AAAA,QAC/C,MAAM,SAAiC,YAAY,cAAc;AAAA,QACjE,WAAW,SAAS,MAAM,YAAY,MAAM;AAAA,QAC5C,IAAI,CAAC,QAAQ,SAAS,QAAQ,OAAO;AAAA,UACnC,QAAQ,MAAM,YAAY;AAAA,QAC5B;AAAA,QAEA,IAAI,SAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA,MAAM,aAAa,QAAQ,WAAW,KAAK;AAAA,QAC3C,IAAI,CAAC,WAAW;AAAA,UACd,MAAM,SAAS,WACX,2BAA2B,KAAK,uBAChC,aAAa,aACX,6BAA6B,eAC7B,SAAS,OACP,kDACA,4BAA4B;AAAA,UACpC,MAAM,UAAU,aAAa,GAAG;AAAA;AAAA,EAAiB,WAAW;AAAA,UAC5D,OAAO;AAAA,YACL,QAAQ;AAAA,YACR,UAAU,QAAQ;AAAA,YAClB,YAAY,cAAc;AAAA,YAC1B;AAAA,YACA;AAAA,YACA;AAAA,YACA,QAAQ;AAAA,UACV,CAAC;AAAA,UACD;AAAA,QACF;AAAA,QACA,OAAO;AAAA,UACL,QAAQ;AAAA,UACR,UAAU,QAAQ;AAAA,UAClB,YAAY,cAAc;AAAA,UAC1B;AAAA,UACA;AAAA,UACA,UAAU;AAAA,QACZ,CAAC;AAAA;AAAA,MAGH,IAAI,KAAK;AAAA,QACP,IAAI,OAAO,CAAC,UAAU;AAAA,UACpB,MAAM,YAAY,MAAM,UAAU;AAAA,UAClC,MAAM,mBAAmB,cAAc,IAAI,OAAO;AAAA,UAClD,WAAW,MAAM,YAAY,MAAM,gBAAgB;AAAA,SACpD;AAAA,MACH,EAAO,SAAI,OAAO;AAAA,QAChB,MAAM,KAAK,SAAS,CAAC,MAAM,eAAe;AAAA,UACxC,WAAW,MAAM,UAAU;AAAA,SAC5B;AAAA,QAED,MAAM,KAAK,SAAS,CAAC,QAAQ;AAAA,UAC3B,IAAI,cAAc;AAAA,YAChB,aAAa,YAAY;AAAA,UAC3B;AAAA,UACA,IAAI,sBAAsB;AAAA,YACxB,aAAa,oBAAoB;AAAA,UACnC;AAAA,UACA,WAAW,SAAS,MAAM,MAAM,QAAQ;AAAA,UACxC,MAAM,aAAa,QAAQ,WAAW,KAAK;AAAA,UAC3C,MAAM,UAAU,aAAa,GAAG;AAAA;AAAA,EAAiB,OAAO,GAAG,MAAM,OAAO,GAAG;AAAA,UAC3E,OAAO;AAAA,YACL,QAAQ;AAAA,YACR,UAAU;AAAA,YACV,YAAY;AAAA,YACZ,YAAY,KAAK,IAAI,IAAI;AAAA,YACzB;AAAA,YACA;AAAA,YACA,QAAQ;AAAA,UACV,CAAC;AAAA,SACF;AAAA,MACH;AAAA,KACD;AAAA,IAED,OAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA,MAAM,MAAM,YAAY,OAAO;AAAA,IACjC;AAAA;AAAA,EAGM,YAAY,CAClB,gBACA,SACA,QACA,gBACM;AAAA,IACN,IAAI,CAAC;AAAA,MAAgB;AAAA,IAErB,MAAM,eAAoC;AAAA,MACxC;AAAA,MACA,QAAQ,OAAO;AAAA,MACf,QAAQ,OAAO;AAAA,MACf,UAAU,OAAO;AAAA,MACjB,WAAW,KAAK,IAAI;AAAA,MACpB,kBAAkB,OAAO;AAAA,MACzB;AAAA,IACF;AAAA,IAEA,IAAI,CAAC,KAAK,eAAe,IAAI,cAAc,GAAG;AAAA,MAC5C,KAAK,eAAe,IAAI,gBAAgB,CAAC,CAAC;AAAA,IAC5C;AAAA,IAEA,MAAM,UAAU,KAAK,eAAe,IAAI,cAAc;AAAA,IACtD,IAAI,CAAC,SAAS;AAAA,MACZ,MAAM,IAAI,MAAM,qCAAqC,gBAAgB;AAAA,IACvE;AAAA,IACA,QAAQ,KAAK,YAAY;AAAA,IAEzB,IAAI,QAAQ,SAAS,KAAK,2BAA2B;AAAA,MACnD,QAAQ,MAAM;AAAA,IAChB;AAAA;AAAA,EAGM,oBAAoB,CAAC,SAAiB,KAA0C;AAAA,IACtF,MAAM,aAA8B,CAAC;AAAA,IACrC,MAAM,QAAQ,QAAQ,KAAK,EAAE,MAAM,KAAK;AAAA,IACxC,MAAM,MAAM,MAAM,GAAG,YAAY;AAAA,IAEjC,IAAI,QAAQ,WAAW,MAAM,SAAS,GAAG;AAAA,MACvC,WAAW,KAAK;AAAA,QACd,MAAM;AAAA,QACN,QAAQ,KAAK,YAAY,MAAM,IAAI,GAAG;AAAA,MACxC,CAAC;AAAA,IACH,EAAO,SAAI,QAAQ,UAAU,QAAQ,SAAS,GAAG,GAAG;AAAA,MAClD,MAAM,QAAQ,QAAQ,MAAM,eAAe;AAAA,MAC3C,IAAI,OAAO;AAAA,QACT,WAAW,KAAK;AAAA,UACd,MAAM;AAAA,UACN,QAAQ,KAAK,YAAY,MAAM,IAAI,GAAG;AAAA,QACxC,CAAC;AAAA,MACH;AAAA,IACF,EAAO,SAAI,QAAQ,WAAW,MAAM,SAAS,GAAG;AAAA,MAC9C,WAAW,KAAK;AAAA,QACd,MAAM;AAAA,QACN,QAAQ,KAAK,YAAY,MAAM,IAAI,GAAG;AAAA,MACxC,CAAC;AAAA,IACH,EAAO,SAAI,QAAQ,SAAS,MAAM,SAAS,KAAK,CAAC,QAAQ,SAAS,GAAG,GAAG;AAAA,MACtE,WAAW,KAAK;AAAA,QACd,MAAM;AAAA,QACN,QAAQ,KAAK,YAAY,MAAM,IAAI,GAAG;AAAA,MACxC,CAAC;AAAA,IACH,EAAO,SAAI,QAAQ,QAAQ,MAAM,SAAS,GAAG;AAAA,MAC3C,WAAW,KAAK;AAAA,QACd,MAAM;AAAA,QACN,QAAQ,KAAK,YAAY,MAAM,IAAI,GAAG;AAAA,QACtC,iBAAiB,KAAK,YAAY,MAAM,IAAI,GAAG;AAAA,MACjD,CAAC;AAAA,IACH,EAAO,SAAI,QAAQ,QAAQ,MAAM,SAAS,GAAG;AAAA,MAC3C,WAAW,KAAK;AAAA,QACd,MAAM;AAAA,QACN,QAAQ,KAAK,YAAY,MAAM,IAAI,GAAG;AAAA,QACtC,iBAAiB,KAAK,YAAY,MAAM,IAAI,GAAG;AAAA,MACjD,CAAC;AAAA,IACH;AAAA,IAEA,OAAO,WAAW,SAAS,IAAI,aAAa;AAAA;AAAA,EAGtC,WAAW,CAAC,UAAkB,KAAqB;AAAA,IACzD,IAAI,MAAK,WAAW,QAAQ,GAAG;AAAA,MAC7B,OAAO;AAAA,IACT;AAAA,IACA,OAAO,MAAK,KAAK,KAAK,QAAQ;AAAA;AAElC;;;AMn5CO,IAAM,cAAsB;AAAA,EACjC,MAAM;AAAA,EACN,aACE;AAAA,EACF,UAAU,CAAC,cAAc,mBAAmB;AAAA,EAC5C,SAAS,CAAC,gBAAgB,cAAc,aAAa;AAAA,EACrD,WAAW,CAAC,oBAAoB;AAClC;AAEA,IAAe;",
|
|
35
|
-
"debugId": "
|
|
34
|
+
"mappings": "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",
|
|
35
|
+
"debugId": "20C8338CDBDDBAFA64756E2164756E21",
|
|
36
36
|
"names": []
|
|
37
37
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shellService.d.ts","sourceRoot":"","sources":["../../services/shellService.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,KAAK,aAAa,EAAU,OAAO,EAAE,MAAM,eAAe,CAAC;AAEpE,OAAO,KAAK,EACV,mBAAmB,EACnB,aAAa,EACb,UAAU,EACV,cAAc,EAGd,eAAe,EACf,mBAAmB,EACnB,cAAc,EAGd,WAAW,EACZ,MAAM,UAAU,CAAC;AAoDlB,qBAAa,YAAa,SAAQ,OAAO;IACvC,OAAc,WAAW,SAAW;IACpC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,cAAc,CAAqC;IAC3D,OAAO,CAAC,yBAAyB,CAAO;IACxC,OAAO,CAAC,QAAQ,CAAC,CAAS;gBAEd,OAAO,EAAE,aAAa;WAOrB,KAAK,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IAM3D,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAkB3B,IAAI,qBAAqB,IAAI,MAAM,CAElC;IAED;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAInC;;OAEG;IACG,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"shellService.d.ts","sourceRoot":"","sources":["../../services/shellService.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,KAAK,aAAa,EAAU,OAAO,EAAE,MAAM,eAAe,CAAC;AAEpE,OAAO,KAAK,EACV,mBAAmB,EACnB,aAAa,EACb,UAAU,EACV,cAAc,EAGd,eAAe,EACf,mBAAmB,EACnB,cAAc,EAGd,WAAW,EACZ,MAAM,UAAU,CAAC;AAoDlB,qBAAa,YAAa,SAAQ,OAAO;IACvC,OAAc,WAAW,SAAW;IACpC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,cAAc,CAAqC;IAC3D,OAAO,CAAC,yBAAyB,CAAO;IACxC,OAAO,CAAC,QAAQ,CAAC,CAAS;gBAEd,OAAO,EAAE,aAAa;WAOrB,KAAK,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IAM3D,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAkB3B,IAAI,qBAAqB,IAAI,MAAM,CAElC;IAED;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAInC;;OAEG;IACG,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAwGtF;;;OAGG;IACG,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,UAAU,CAAC;IAqK9E;;;OAGG;IACG,aAAa,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC;QACxD,OAAO,EAAE,OAAO,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAChC,CAAC;IAwaF;;OAEG;IACH,mBAAmB,IAAI,cAAc,EAAE;IAKvC;;OAEG;IACH,oBAAoB,IAAI,eAAe,EAAE;IAKzC;;OAEG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAOlD;;OAEG;IACH,kBAAkB,CAAC,EAAE,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAO3D;;OAEG;IACH,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAQpC;;OAEG;IACH,iBAAiB,CAAC,cAAc,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,mBAAmB,EAAE;IAQhF;;OAEG;IACH,mBAAmB,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IAKjD;;OAEG;IACH,mBAAmB,CAAC,eAAe,CAAC,EAAE,MAAM,GAAG,MAAM;IAIrD;;OAEG;IACH,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAa/C;;OAEG;IACH,mBAAmB,IAAI,MAAM;IAI7B;;OAEG;IACH,cAAc,IAAI,WAAW;YAMf,eAAe;YAyCf,gBAAgB;YAwFhB,cAAc;IAyU5B,OAAO,CAAC,YAAY;IAiCpB,OAAO,CAAC,oBAAoB;IA6C5B,OAAO,CAAC,WAAW;CAMpB"}
|
package/package.json
CHANGED