@howells/envelope 0.1.1 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +12 -0
- package/dist/claude-code.d.ts +9 -0
- package/dist/claude-code.d.ts.map +1 -1
- package/dist/claude-code.js +142 -14
- package/dist/claude-code.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -12,6 +12,18 @@ This is designed for local Node apps where you want "model calls" to look like a
|
|
|
12
12
|
- Node 20+
|
|
13
13
|
- `claude` CLI installed and authenticated (Claude Code)
|
|
14
14
|
|
|
15
|
+
## CLI Options
|
|
16
|
+
|
|
17
|
+
`createClaudeCodeClient()` accepts:
|
|
18
|
+
- `model` (default `"opus"`)
|
|
19
|
+
- `maxBudgetUsd` (default `5`)
|
|
20
|
+
- `timeoutMs` (default `120_000`)
|
|
21
|
+
- `options.permissionMode` (default `"dontAsk"`)
|
|
22
|
+
- `options.tools` (default `""` to disable all tools; pass `"default"` to enable built-ins)
|
|
23
|
+
- `options.retries` (default `1`) and `options.retryDelayMs` (default `800`) for retry-on-timeout
|
|
24
|
+
|
|
25
|
+
Note: `total_cost_usd` is reported by the Claude Code CLI. If you're using a subscription plan, this may be an estimate and not necessarily an incremental billed amount.
|
|
26
|
+
|
|
15
27
|
## Usage (Zod envelope)
|
|
16
28
|
|
|
17
29
|
```ts
|
package/dist/claude-code.d.ts
CHANGED
|
@@ -6,6 +6,15 @@ export interface ClaudeCodeOptions {
|
|
|
6
6
|
model?: ClaudeCodeModel;
|
|
7
7
|
maxBudgetUsd?: number;
|
|
8
8
|
timeoutMs?: number;
|
|
9
|
+
/**
|
|
10
|
+
* Number of retries after a timeout (SIGTERM kill) or transient failure.
|
|
11
|
+
* Total attempts = 1 + retries.
|
|
12
|
+
*/
|
|
13
|
+
retries?: number;
|
|
14
|
+
/**
|
|
15
|
+
* Base delay between retries (ms). Uses simple linear backoff by attempt.
|
|
16
|
+
*/
|
|
17
|
+
retryDelayMs?: number;
|
|
9
18
|
permissionMode?: "dontAsk" | "default" | "bypassPermissions";
|
|
10
19
|
tools?: string;
|
|
11
20
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-code.d.ts","sourceRoot":"","sources":["../src/claude-code.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC;AAErC,MAAM,WAAW,iBAAiB;IAChC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,KAAK,CAAC,EAAE,eAAe,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,mBAAmB,CAAC;IAC7D,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB,CAAC,WAAW;IAC7C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iBAAiB,CAAC,EAAE,WAAW,CAAC;IAChC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kBAAkB,CAAC,EAAE,OAAO,EAAE,CAAC;CAChC;
|
|
1
|
+
{"version":3,"file":"claude-code.d.ts","sourceRoot":"","sources":["../src/claude-code.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC;AAErC,MAAM,WAAW,iBAAiB;IAChC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,KAAK,CAAC,EAAE,eAAe,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,mBAAmB,CAAC;IAC7D,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB,CAAC,WAAW;IAC7C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iBAAiB,CAAC,EAAE,WAAW,CAAC;IAChC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kBAAkB,CAAC,EAAE,OAAO,EAAE,CAAC;CAChC;AAgID,wBAAsB,oBAAoB,CAAC,WAAW,EAAE,IAAI,EAAE;IAC5D,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,iBAAiB,CAAC;CAC7B,4CAqEA;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,iBAAiB,CAAC;CAC7B;;GA8DA"}
|
package/dist/claude-code.js
CHANGED
|
@@ -1,19 +1,86 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { spawn } from "node:child_process";
|
|
2
2
|
function isRecord(v) {
|
|
3
3
|
return typeof v === "object" && v !== null;
|
|
4
4
|
}
|
|
5
|
-
function
|
|
5
|
+
function spawnAsync(file, args, opts) {
|
|
6
6
|
return new Promise((resolve, reject) => {
|
|
7
|
-
|
|
7
|
+
const child = spawn(file, args, {
|
|
8
8
|
cwd: opts.cwd,
|
|
9
9
|
env: opts.env,
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
10
|
+
stdio: ["ignore", "pipe", "pipe"],
|
|
11
|
+
});
|
|
12
|
+
const maxBufferBytes = opts.maxBufferBytes ?? 128 * 1024 * 1024;
|
|
13
|
+
let stdout = "";
|
|
14
|
+
let stderr = "";
|
|
15
|
+
let killedByTimeout = false;
|
|
16
|
+
let timeout = null;
|
|
17
|
+
let hardKill = null;
|
|
18
|
+
const cleanup = () => {
|
|
19
|
+
if (timeout) {
|
|
20
|
+
clearTimeout(timeout);
|
|
21
|
+
timeout = null;
|
|
22
|
+
}
|
|
23
|
+
if (hardKill) {
|
|
24
|
+
clearTimeout(hardKill);
|
|
25
|
+
hardKill = null;
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
const maybeKillOnBuffer = () => {
|
|
29
|
+
if (stdout.length + stderr.length > maxBufferBytes) {
|
|
30
|
+
try {
|
|
31
|
+
child.kill("SIGTERM");
|
|
32
|
+
}
|
|
33
|
+
catch {
|
|
34
|
+
// ignore
|
|
35
|
+
}
|
|
36
|
+
const e = new Error("claude CLI output exceeded maxBufferBytes");
|
|
37
|
+
e.code = "MAXBUFFER";
|
|
38
|
+
reject(e);
|
|
39
|
+
cleanup();
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
child.stdout?.setEncoding("utf8");
|
|
43
|
+
child.stderr?.setEncoding("utf8");
|
|
44
|
+
child.stdout?.on("data", (d) => {
|
|
45
|
+
stdout += d;
|
|
46
|
+
maybeKillOnBuffer();
|
|
47
|
+
});
|
|
48
|
+
child.stderr?.on("data", (d) => {
|
|
49
|
+
stderr += d;
|
|
50
|
+
maybeKillOnBuffer();
|
|
51
|
+
});
|
|
52
|
+
if (opts.timeoutMs && opts.timeoutMs > 0) {
|
|
53
|
+
timeout = setTimeout(() => {
|
|
54
|
+
killedByTimeout = true;
|
|
55
|
+
try {
|
|
56
|
+
child.kill("SIGTERM");
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
// ignore
|
|
60
|
+
}
|
|
61
|
+
hardKill = setTimeout(() => {
|
|
62
|
+
try {
|
|
63
|
+
child.kill("SIGKILL");
|
|
64
|
+
}
|
|
65
|
+
catch {
|
|
66
|
+
// ignore
|
|
67
|
+
}
|
|
68
|
+
}, 2000);
|
|
69
|
+
}, opts.timeoutMs);
|
|
70
|
+
}
|
|
71
|
+
child.on("error", (err) => {
|
|
72
|
+
cleanup();
|
|
73
|
+
const e = new Error(`claude CLI spawn error: ${String(err)}`);
|
|
74
|
+
e.cause = err;
|
|
75
|
+
reject(e);
|
|
76
|
+
});
|
|
77
|
+
child.on("close", (code, signal) => {
|
|
78
|
+
cleanup();
|
|
79
|
+
if (code !== 0) {
|
|
80
|
+
const e = new Error(`claude CLI failed (code=${code ?? "?"}, signal=${signal ?? "?"}, killed=${killedByTimeout}): ${stderr || stdout}`);
|
|
81
|
+
e.code = code;
|
|
82
|
+
e.signal = signal;
|
|
83
|
+
e.killed = killedByTimeout;
|
|
17
84
|
reject(e);
|
|
18
85
|
return;
|
|
19
86
|
}
|
|
@@ -24,6 +91,13 @@ function execFileAsync(file, args, opts) {
|
|
|
24
91
|
function buildBaseArgs(opts) {
|
|
25
92
|
return ["--model", opts.model, "-p", "--permission-mode", opts.permissionMode, "--tools", opts.tools];
|
|
26
93
|
}
|
|
94
|
+
function sleep(ms) {
|
|
95
|
+
return new Promise((r) => setTimeout(r, ms));
|
|
96
|
+
}
|
|
97
|
+
function isTimeoutKill(err) {
|
|
98
|
+
const e = err;
|
|
99
|
+
return Boolean(e && e.killed === true && e.signal === "SIGTERM");
|
|
100
|
+
}
|
|
27
101
|
export async function claudeCodeStructured(args) {
|
|
28
102
|
const options = {
|
|
29
103
|
claudePath: args.options?.claudePath ?? "claude",
|
|
@@ -32,10 +106,12 @@ export async function claudeCodeStructured(args) {
|
|
|
32
106
|
model: args.options?.model ?? "opus",
|
|
33
107
|
maxBudgetUsd: args.options?.maxBudgetUsd ?? 5,
|
|
34
108
|
timeoutMs: args.options?.timeoutMs ?? 120_000,
|
|
109
|
+
retries: args.options?.retries ?? 1,
|
|
110
|
+
retryDelayMs: args.options?.retryDelayMs ?? 800,
|
|
35
111
|
permissionMode: args.options?.permissionMode ?? "dontAsk",
|
|
36
112
|
tools: args.options?.tools ?? "",
|
|
37
113
|
};
|
|
38
|
-
const
|
|
114
|
+
const cliArgs = [
|
|
39
115
|
...buildBaseArgs(options),
|
|
40
116
|
"--max-budget-usd",
|
|
41
117
|
String(options.maxBudgetUsd),
|
|
@@ -44,7 +120,33 @@ export async function claudeCodeStructured(args) {
|
|
|
44
120
|
"--json-schema",
|
|
45
121
|
args.jsonSchema,
|
|
46
122
|
args.prompt,
|
|
47
|
-
]
|
|
123
|
+
];
|
|
124
|
+
let stdout = null;
|
|
125
|
+
let lastErr = null;
|
|
126
|
+
for (let attempt = 0; attempt <= options.retries; attempt++) {
|
|
127
|
+
try {
|
|
128
|
+
({ stdout } = await spawnAsync(options.claudePath, cliArgs, {
|
|
129
|
+
cwd: options.cwd,
|
|
130
|
+
env: options.env,
|
|
131
|
+
timeoutMs: options.timeoutMs,
|
|
132
|
+
}));
|
|
133
|
+
lastErr = null;
|
|
134
|
+
break;
|
|
135
|
+
}
|
|
136
|
+
catch (e) {
|
|
137
|
+
lastErr = e;
|
|
138
|
+
// Retry only if it's likely transient (timeout kill). Other errors should
|
|
139
|
+
// generally be surfaced immediately to avoid masking real failures.
|
|
140
|
+
if (!isTimeoutKill(e?.cause ?? e) || attempt >= options.retries) {
|
|
141
|
+
throw e;
|
|
142
|
+
}
|
|
143
|
+
const delay = options.retryDelayMs * (attempt + 1);
|
|
144
|
+
await sleep(delay);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
if (stdout == null) {
|
|
148
|
+
throw lastErr instanceof Error ? lastErr : new Error("claude CLI failed");
|
|
149
|
+
}
|
|
48
150
|
let envelopeUnknown;
|
|
49
151
|
try {
|
|
50
152
|
envelopeUnknown = JSON.parse(stdout);
|
|
@@ -69,17 +171,43 @@ export async function claudeCodeText(args) {
|
|
|
69
171
|
model: args.options?.model ?? "opus",
|
|
70
172
|
maxBudgetUsd: args.options?.maxBudgetUsd ?? 5,
|
|
71
173
|
timeoutMs: args.options?.timeoutMs ?? 120_000,
|
|
174
|
+
retries: args.options?.retries ?? 1,
|
|
175
|
+
retryDelayMs: args.options?.retryDelayMs ?? 800,
|
|
72
176
|
permissionMode: args.options?.permissionMode ?? "dontAsk",
|
|
73
177
|
tools: args.options?.tools ?? "",
|
|
74
178
|
};
|
|
75
|
-
const
|
|
179
|
+
const cliArgs = [
|
|
76
180
|
...buildBaseArgs(options),
|
|
77
181
|
"--max-budget-usd",
|
|
78
182
|
String(options.maxBudgetUsd),
|
|
79
183
|
"--output-format",
|
|
80
184
|
"json",
|
|
81
185
|
args.prompt,
|
|
82
|
-
]
|
|
186
|
+
];
|
|
187
|
+
let stdout = null;
|
|
188
|
+
let lastErr = null;
|
|
189
|
+
for (let attempt = 0; attempt <= options.retries; attempt++) {
|
|
190
|
+
try {
|
|
191
|
+
({ stdout } = await spawnAsync(options.claudePath, cliArgs, {
|
|
192
|
+
cwd: options.cwd,
|
|
193
|
+
env: options.env,
|
|
194
|
+
timeoutMs: options.timeoutMs,
|
|
195
|
+
}));
|
|
196
|
+
lastErr = null;
|
|
197
|
+
break;
|
|
198
|
+
}
|
|
199
|
+
catch (e) {
|
|
200
|
+
lastErr = e;
|
|
201
|
+
if (!isTimeoutKill(e?.cause ?? e) || attempt >= options.retries) {
|
|
202
|
+
throw e;
|
|
203
|
+
}
|
|
204
|
+
const delay = options.retryDelayMs * (attempt + 1);
|
|
205
|
+
await sleep(delay);
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
if (stdout == null) {
|
|
209
|
+
throw lastErr instanceof Error ? lastErr : new Error("claude CLI failed");
|
|
210
|
+
}
|
|
83
211
|
let envelopeUnknown;
|
|
84
212
|
try {
|
|
85
213
|
envelopeUnknown = JSON.parse(stdout);
|
package/dist/claude-code.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-code.js","sourceRoot":"","sources":["../src/claude-code.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"claude-code.js","sourceRoot":"","sources":["../src/claude-code.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAoC3C,SAAS,QAAQ,CAAC,CAAU;IAC1B,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,CAAC;AAC7C,CAAC;AAED,SAAS,UAAU,CACjB,IAAY,EACZ,IAAc,EACd,IAKC;IAED,OAAO,IAAI,OAAO,CAAqC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACzE,MAAM,KAAK,GAAG,KAAK,CACjB,IAAI,EACJ,IAAI,EACJ;YACE,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;SAClC,CACF,CAAC;QAEF,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC;QAChE,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,eAAe,GAAG,KAAK,CAAC;QAC5B,IAAI,OAAO,GAA0B,IAAI,CAAC;QAC1C,IAAI,QAAQ,GAA0B,IAAI,CAAC;QAE3C,MAAM,OAAO,GAAG,GAAG,EAAE;YACnB,IAAI,OAAO,EAAE,CAAC;gBACZ,YAAY,CAAC,OAAO,CAAC,CAAC;gBACtB,OAAO,GAAG,IAAI,CAAC;YACjB,CAAC;YACD,IAAI,QAAQ,EAAE,CAAC;gBACb,YAAY,CAAC,QAAQ,CAAC,CAAC;gBACvB,QAAQ,GAAG,IAAI,CAAC;YAClB,CAAC;QACH,CAAC,CAAC;QAEF,MAAM,iBAAiB,GAAG,GAAG,EAAE;YAC7B,IAAI,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,GAAG,cAAc,EAAE,CAAC;gBACnD,IAAI,CAAC;oBACH,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACxB,CAAC;gBAAC,MAAM,CAAC;oBACP,SAAS;gBACX,CAAC;gBACD,MAAM,CAAC,GAAG,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;gBAChE,CAAS,CAAC,IAAI,GAAG,WAAW,CAAC;gBAC9B,MAAM,CAAC,CAAC,CAAC,CAAC;gBACV,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC,CAAC;QAEF,KAAK,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;QAClC,KAAK,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;QAElC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,CAAS,EAAE,EAAE;YACrC,MAAM,IAAI,CAAC,CAAC;YACZ,iBAAiB,EAAE,CAAC;QACtB,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,CAAS,EAAE,EAAE;YACrC,MAAM,IAAI,CAAC,CAAC;YACZ,iBAAiB,EAAE,CAAC;QACtB,CAAC,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC;YACzC,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;gBACxB,eAAe,GAAG,IAAI,CAAC;gBACvB,IAAI,CAAC;oBACH,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACxB,CAAC;gBAAC,MAAM,CAAC;oBACP,SAAS;gBACX,CAAC;gBACD,QAAQ,GAAG,UAAU,CAAC,GAAG,EAAE;oBACzB,IAAI,CAAC;wBACH,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBACxB,CAAC;oBAAC,MAAM,CAAC;wBACP,SAAS;oBACX,CAAC;gBACH,CAAC,EAAE,IAAI,CAAC,CAAC;YACX,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACrB,CAAC;QAED,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACxB,OAAO,EAAE,CAAC;YACV,MAAM,CAAC,GAAG,IAAI,KAAK,CAAC,2BAA2B,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC7D,CAAS,CAAC,KAAK,GAAG,GAAG,CAAC;YACvB,MAAM,CAAC,CAAC,CAAC,CAAC;QACZ,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;YACjC,OAAO,EAAE,CAAC;YACV,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACf,MAAM,CAAC,GAAG,IAAI,KAAK,CACjB,2BAA2B,IAAI,IAAI,GAAG,YACpC,MAAM,IAAI,GACZ,YAAY,eAAe,MAAM,MAAM,IAAI,MAAM,EAAE,CACpD,CAAC;gBACD,CAAS,CAAC,IAAI,GAAG,IAAI,CAAC;gBACtB,CAAS,CAAC,MAAM,GAAG,MAAM,CAAC;gBAC1B,CAAS,CAAC,MAAM,GAAG,eAAe,CAAC;gBACpC,MAAM,CAAC,CAAC,CAAC,CAAC;gBACV,OAAO;YACT,CAAC;YACD,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,aAAa,CAAC,IAA6E;IAClG,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,CAAC,cAAc,EAAE,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;AACxG,CAAC;AAED,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAO,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AACrD,CAAC;AAED,SAAS,aAAa,CAAC,GAAY;IACjC,MAAM,CAAC,GAAG,GAAU,CAAC;IACrB,OAAO,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,IAAI,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC;AACnE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAc,IAIvD;IACC,MAAM,OAAO,GAAgC;QAC3C,UAAU,EAAE,IAAI,CAAC,OAAO,EAAE,UAAU,IAAI,QAAQ;QAChD,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE;QACvC,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,OAAO,CAAC,GAAG;QACrC,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,IAAI,MAAM;QACpC,YAAY,EAAE,IAAI,CAAC,OAAO,EAAE,YAAY,IAAI,CAAC;QAC7C,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,IAAI,OAAO;QAC7C,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,IAAI,CAAC;QACnC,YAAY,EAAE,IAAI,CAAC,OAAO,EAAE,YAAY,IAAI,GAAG;QAC/C,cAAc,EAAE,IAAI,CAAC,OAAO,EAAE,cAAc,IAAI,SAAS;QACzD,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE;KACjC,CAAC;IAEF,MAAM,OAAO,GAAG;QACd,GAAG,aAAa,CAAC,OAAO,CAAC;QACzB,kBAAkB;QAClB,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC;QAC5B,iBAAiB;QACjB,MAAM;QACN,eAAe;QACf,IAAI,CAAC,UAAU;QACf,IAAI,CAAC,MAAM;KACZ,CAAC;IAEF,IAAI,MAAM,GAAkB,IAAI,CAAC;IACjC,IAAI,OAAO,GAAY,IAAI,CAAC;IAC5B,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC;QAC5D,IAAI,CAAC;YACH,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,EAAE;gBAC1D,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,SAAS,EAAE,OAAO,CAAC,SAAS;aAC7B,CAAC,CAAC,CAAC;YACJ,OAAO,GAAG,IAAI,CAAC;YACf,MAAM;QACR,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,GAAG,CAAC,CAAC;YACZ,0EAA0E;YAC1E,oEAAoE;YACpE,IAAI,CAAC,aAAa,CAAE,CAAS,EAAE,KAAK,IAAI,CAAC,CAAC,IAAI,OAAO,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;gBACzE,MAAM,CAAC,CAAC;YACV,CAAC;YACD,MAAM,KAAK,GAAG,OAAO,CAAC,YAAY,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;YACnD,MAAM,KAAK,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;IAED,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;QACnB,MAAM,OAAO,YAAY,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IAC5E,CAAC;IAED,IAAI,eAAwB,CAAC;IAC7B,IAAI,CAAC;QACH,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAY,CAAC;IAClD,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,0DAA0D,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IACpG,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IAClE,CAAC;IAED,MAAM,QAAQ,GAAG,eAAkD,CAAC;IACpE,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,8BAA8B,QAAQ,CAAC,OAAO,IAAI,SAAS,EAAE,CAAC,CAAC;IACjF,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAGpC;IACC,MAAM,OAAO,GAAgC;QAC3C,UAAU,EAAE,IAAI,CAAC,OAAO,EAAE,UAAU,IAAI,QAAQ;QAChD,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE;QACvC,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,OAAO,CAAC,GAAG;QACrC,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,IAAI,MAAM;QACpC,YAAY,EAAE,IAAI,CAAC,OAAO,EAAE,YAAY,IAAI,CAAC;QAC7C,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,IAAI,OAAO;QAC7C,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,IAAI,CAAC;QACnC,YAAY,EAAE,IAAI,CAAC,OAAO,EAAE,YAAY,IAAI,GAAG;QAC/C,cAAc,EAAE,IAAI,CAAC,OAAO,EAAE,cAAc,IAAI,SAAS;QACzD,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE;KACjC,CAAC;IAEF,MAAM,OAAO,GAAG;QACd,GAAG,aAAa,CAAC,OAAO,CAAC;QACzB,kBAAkB;QAClB,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC;QAC5B,iBAAiB;QACjB,MAAM;QACN,IAAI,CAAC,MAAM;KACZ,CAAC;IAEF,IAAI,MAAM,GAAkB,IAAI,CAAC;IACjC,IAAI,OAAO,GAAY,IAAI,CAAC;IAC5B,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC;QAC5D,IAAI,CAAC;YACH,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,EAAE;gBAC1D,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,SAAS,EAAE,OAAO,CAAC,SAAS;aAC7B,CAAC,CAAC,CAAC;YACJ,OAAO,GAAG,IAAI,CAAC;YACf,MAAM;QACR,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,GAAG,CAAC,CAAC;YACZ,IAAI,CAAC,aAAa,CAAE,CAAS,EAAE,KAAK,IAAI,CAAC,CAAC,IAAI,OAAO,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;gBACzE,MAAM,CAAC,CAAC;YACV,CAAC;YACD,MAAM,KAAK,GAAG,OAAO,CAAC,YAAY,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;YACnD,MAAM,KAAK,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;IAED,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;QACnB,MAAM,OAAO,YAAY,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IAC5E,CAAC;IAED,IAAI,eAAwB,CAAC;IAC7B,IAAI,CAAC;QACH,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAY,CAAC;IAClD,CAAC;IAAC,MAAM,CAAC;QACP,sFAAsF;QACtF,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAC1B,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;QAC/B,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAC1B,CAAC;IAED,MAAM,QAAQ,GAAG,eAA8C,CAAC;IAChE,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;AACzC,CAAC"}
|