@poe-platform/safe-bash 0.1.59 → 0.1.61

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"stat.d.ts","sourceRoot":"","sources":["../../../src/commands/metadata/stat.ts"],"names":[],"mappings":"AAEA,OAAO,EAA+D,KAAK,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAqM1H,wBAAgB,iBAAiB,CAAC,aAAa,GAAE,uBAA4B,0DAsB5E"}
1
+ {"version":3,"file":"stat.d.ts","sourceRoot":"","sources":["../../../src/commands/metadata/stat.ts"],"names":[],"mappings":"AAEA,OAAO,EAA+D,KAAK,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAqN1H,wBAAgB,iBAAiB,CAAC,aAAa,GAAE,uBAA4B,0DAsB5E"}
@@ -165,14 +165,31 @@ async function render(context, path, name, stat, format, escapes, limit) {
165
165
  for (let index = 0; index < format.length;) {
166
166
  context.signal.throwIfAborted();
167
167
  if (escapes && format[index] === "\\") {
168
- const escape = /^\\(?:([abefnrtv\\])|x([0-9a-fA-F]{1,2})|([0-7]{1,3}))/u.exec(format.slice(index));
169
- if (!escape) {
168
+ const named = { a: "\x07", b: "\b", e: "\x1b", f: "\f", n: "\n", r: "\r", t: "\t", v: "\v", "\\": "\\" };
169
+ const code = format[index + 1] ?? "";
170
+ if (Object.hasOwn(named, code)) {
171
+ append(named[code]);
172
+ index += 2;
173
+ continue;
174
+ }
175
+ const radix = code === "x" ? 16 : 8;
176
+ const start = index + (radix === 16 ? 2 : 1);
177
+ const end = Math.min(format.length, start + (radix === 16 ? 2 : 3));
178
+ let offset = start;
179
+ let value = 0;
180
+ while (offset < end) {
181
+ const digit = "0123456789abcdef".indexOf(format[offset].toLowerCase());
182
+ if (digit < 0 || digit >= radix)
183
+ break;
184
+ value = value * radix + digit;
185
+ offset++;
186
+ }
187
+ if (offset === start) {
170
188
  append(format[index++]);
171
189
  continue;
172
190
  }
173
- const named = { a: "\x07", b: "\b", e: "\x1b", f: "\f", n: "\n", r: "\r", t: "\t", v: "\v", "\\": "\\" };
174
- append(escape[1] ? named[escape[1]] : Uint8Array.of(Number.parseInt(escape[2] ?? escape[3], escape[2] ? 16 : 8)));
175
- index += escape[0].length;
191
+ append(Uint8Array.of(value));
192
+ index = offset;
176
193
  continue;
177
194
  }
178
195
  if (format[index] !== "%") {
@@ -1 +1 @@
1
- {"version":3,"file":"stat.js","sourceRoot":"","sources":["../../../src/commands/metadata/stat.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stat.js","sourceRoot":"","sources":["../../../src/commands/metadata/stat.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { BoundedRegexProvider } from "./provider.js";
2
+ export interface BoundedRegexProviderOptions {
3
+ readonly maxWorkers?: number;
4
+ readonly maxPatterns?: number;
5
+ readonly maxPatternBytes?: number;
6
+ readonly maxRows?: number;
7
+ readonly maxInputBytes?: number;
8
+ readonly maxResultBytes?: number;
9
+ readonly maxWork?: number;
10
+ readonly maxAllocationUnits?: number;
11
+ readonly maxStates?: number;
12
+ }
13
+ /** Cooperative non-NUL ASCII grep selection and fixed-rg provider; not a native-worker/RSS sandbox. */
14
+ export declare function createBoundedRegexProvider(input?: BoundedRegexProviderOptions): BoundedRegexProvider;
15
+ //# sourceMappingURL=bounded-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bounded-provider.d.ts","sourceRoot":"","sources":["../../../src/commands/regex-execution/bounded-provider.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,oBAAoB,EAAmC,MAAM,eAAe,CAAC;AAG3F,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAsQD,uGAAuG;AACvG,wBAAgB,0BAA0B,CAAC,KAAK,GAAE,2BAAgC,GAAG,oBAAoB,CAUxG"}
@@ -0,0 +1,319 @@
1
+ import { EreLedger } from "./ere/limits.js";
2
+ import { compileEre } from "./ere/syntax.js";
3
+ import { matchEre } from "./ere/matcher.js";
4
+ const defaults = Object.freeze({
5
+ maxWorkers: 2, maxPatterns: 32, maxPatternBytes: 8192, maxRows: 128,
6
+ maxInputBytes: 65_536, maxResultBytes: 2048, maxWork: 2_000_000,
7
+ maxAllocationUnits: 1_000_000, maxStates: 65_536,
8
+ });
9
+ const ceilings = Object.freeze({
10
+ maxWorkers: 32, maxPatterns: 128, maxPatternBytes: 65_532, maxRows: 4096,
11
+ maxInputBytes: 1_048_576, maxResultBytes: 65_536, maxWork: 33_554_432,
12
+ maxAllocationUnits: 4_000_000, maxStates: 65_536,
13
+ });
14
+ const typedArrayPrototype = Object.getPrototypeOf(Uint8Array.prototype);
15
+ const byteLength = Object.getOwnPropertyDescriptor(typedArrayPrototype, "byteLength").get;
16
+ const byteOffset = Object.getOwnPropertyDescriptor(typedArrayPrototype, "byteOffset").get;
17
+ const byteBuffer = Object.getOwnPropertyDescriptor(typedArrayPrototype, "buffer").get;
18
+ function fail(kind, message) {
19
+ throw new Error(`bounded regex ${kind}: ${message}`);
20
+ }
21
+ function record(value, keys, optional = []) {
22
+ if (value === null || typeof value !== "object" || Array.isArray(value))
23
+ fail("protocol", "expected a data record");
24
+ const ownKeys = Reflect.ownKeys(value);
25
+ if (ownKeys.length < keys.length || ownKeys.length > keys.length + optional.length
26
+ || ownKeys.some(key => typeof key !== "string" || !keys.includes(key) && !optional.includes(key)))
27
+ fail("protocol", "unexpected data-record fields");
28
+ for (const key of [...keys, ...optional]) {
29
+ const property = Object.getOwnPropertyDescriptor(value, key);
30
+ if (property === undefined ? keys.includes(key) : !("value" in property))
31
+ fail("protocol", "missing field or accessor");
32
+ }
33
+ }
34
+ function array(value, limit, label) {
35
+ if (!Array.isArray(value))
36
+ fail("protocol", `${label} must be an array`);
37
+ if (value.length > limit)
38
+ fail("limit", `${label} count limit exceeded`);
39
+ // The length bound precedes enumeration, including sparse-array admission.
40
+ const keys = Reflect.ownKeys(value);
41
+ if (keys.length !== value.length + 1)
42
+ fail("protocol", `${label} must be a dense data array`);
43
+ for (let index = 0; index < value.length; index++) {
44
+ const property = Object.getOwnPropertyDescriptor(value, index);
45
+ if (!property || !("value" in property))
46
+ fail("protocol", `${label} must be a dense data array`);
47
+ }
48
+ }
49
+ function options(input) {
50
+ const keys = Object.keys(defaults);
51
+ try {
52
+ record(input, [], keys);
53
+ }
54
+ catch {
55
+ throw new TypeError("bounded regex options require supported own data fields");
56
+ }
57
+ const result = { ...defaults };
58
+ for (const key of keys) {
59
+ if (!Object.hasOwn(input, key))
60
+ continue;
61
+ const value = input[key];
62
+ if (typeof value !== "number" || !Number.isSafeInteger(value) || value < 1 || value > ceilings[key])
63
+ throw new RangeError(`bounded regex option ${key} is outside its limit`);
64
+ result[key] = value;
65
+ }
66
+ return Object.freeze(result);
67
+ }
68
+ function descriptor(value, limits) {
69
+ if (value === null || typeof value !== "object")
70
+ fail("protocol", "invalid descriptor");
71
+ const kind = Object.getOwnPropertyDescriptor(value, "kind");
72
+ if (!kind || !("value" in kind))
73
+ fail("protocol", "invalid descriptor kind");
74
+ if (kind.value !== "grep" && kind.value !== "rg")
75
+ fail("unsupported", "only grep and fixed rg selection descriptors are supported");
76
+ const flags = kind.value === "grep" ? ["fixed", "extended", "insensitive", "whole", "word"] : ["fixed", "whole", "word", "nullData"];
77
+ record(value, ["kind", "patterns", ...flags, ...(kind.value === "rg" ? ["case"] : [])]);
78
+ for (const flag of flags)
79
+ if (typeof value[flag] !== "boolean")
80
+ fail("protocol", `invalid ${flag} flag`);
81
+ if (kind.value === "rg" && !["sensitive", "insensitive", "smart"].includes(value.case))
82
+ fail("protocol", "invalid case flag");
83
+ if (value.word || kind.value === "grep" && value.insensitive || kind.value === "rg" && value.case !== "sensitive")
84
+ fail("unsupported", "only case-sensitive, non-word selection is supported");
85
+ if (kind.value === "rg" && !value.fixed)
86
+ fail("unsupported", "rg regex and Unicode modes are unsupported; use fixed ASCII patterns");
87
+ array(value.patterns, limits.maxPatterns, "pattern");
88
+ let bytes = 0;
89
+ for (let index = 0; index < value.patterns.length; index++) {
90
+ const pattern = value.patterns[index];
91
+ if (typeof pattern !== "string")
92
+ fail("protocol", "patterns must be strings");
93
+ if (pattern.length > limits.maxPatternBytes - bytes)
94
+ fail("limit", "aggregate pattern byte limit exceeded");
95
+ bytes += pattern.length;
96
+ }
97
+ return value;
98
+ }
99
+ function admit(input, limits, signal) {
100
+ record(input, ["id", "descriptor", "rows"]);
101
+ const selected = descriptor(input.descriptor, limits);
102
+ array(input.rows, limits.maxRows, "row");
103
+ if (input.rows.length > Math.floor(limits.maxResultBytes / 16))
104
+ fail("limit", "result byte limit exceeded");
105
+ let bytes = 0;
106
+ for (let index = 0; index < input.rows.length; index++) {
107
+ const row = input.rows[index];
108
+ record(row, ["bytes", "all", "terminated"], ["directory", "ancestors"]);
109
+ if (!(row.bytes instanceof Uint8Array) || typeof row.all !== "boolean" || typeof row.terminated !== "boolean"
110
+ || Object.hasOwn(row, "directory") && typeof row.directory !== "boolean"
111
+ || Object.hasOwn(row, "ancestors") && typeof row.ancestors !== "boolean")
112
+ fail("protocol", "invalid row");
113
+ if (Object.hasOwn(row, "directory") || Object.hasOwn(row, "ancestors"))
114
+ fail("unsupported", "glob row flags are unsupported");
115
+ if (row.all)
116
+ fail("unsupported", "all-match enumeration is unsupported");
117
+ const length = byteLength.call(row.bytes);
118
+ if (length > limits.maxInputBytes - bytes)
119
+ fail("limit", "aggregate input byte limit exceeded");
120
+ bytes += length;
121
+ }
122
+ const ledger = new EreLedger({ maxExpansionBytes: 1_048_576, maxExpansionFields: 8192 }, {
123
+ patternBytes: limits.maxPatternBytes + 4, subjectBytes: limits.maxInputBytes,
124
+ work: limits.maxWork, allocationUnits: limits.maxAllocationUnits, states: limits.maxStates,
125
+ });
126
+ // Include snapshots, row/result metadata and worst-case match storage before copying.
127
+ ledger.charge("allocationUnits", bytes + input.rows.length * 12 + selected.patterns.length * 2 + 16, signal);
128
+ const patterns = [];
129
+ for (let index = 0; index < selected.patterns.length; index++)
130
+ patterns.push(selected.patterns[index]);
131
+ const ownedDescriptor = selected.kind === "grep"
132
+ ? { kind: "grep", patterns, fixed: selected.fixed, extended: selected.extended, insensitive: selected.insensitive, whole: selected.whole, word: selected.word }
133
+ : { kind: "rg", patterns, fixed: selected.fixed, case: selected.case, whole: selected.whole, word: selected.word, nullData: selected.nullData };
134
+ const rows = [];
135
+ for (let index = 0; index < input.rows.length; index++) {
136
+ const row = input.rows[index];
137
+ const source = new Uint8Array(byteBuffer.call(row.bytes), byteOffset.call(row.bytes), byteLength.call(row.bytes));
138
+ const copy = new Uint8Array(source.length);
139
+ copy.set(source);
140
+ rows.push({ bytes: copy, all: false, terminated: row.terminated });
141
+ }
142
+ return { id: input.id, descriptor: ownedDescriptor, rows, ledger };
143
+ }
144
+ async function admitBre(pattern, ledger, signal) {
145
+ let bracket = -1;
146
+ let member = false;
147
+ let namedClass = false;
148
+ for (let index = 0; index < pattern.length; index++) {
149
+ ledger.charge("work", 1, signal);
150
+ await ledger.checkpoint(signal);
151
+ const character = pattern[index];
152
+ if ("\\()+?{}|".includes(character))
153
+ fail("unsupported", "BRE escapes, groups and interval/operator extensions are unsupported; use grep -E");
154
+ if (bracket >= 0) {
155
+ if (index === bracket + 1 && character === "^")
156
+ continue;
157
+ if (namedClass) {
158
+ if (character === "]" && pattern[index - 1] === ":")
159
+ namedClass = false;
160
+ }
161
+ else if (character === "]" && member)
162
+ bracket = -1;
163
+ else if (character === "[" && pattern[index + 1] === ":")
164
+ namedClass = true;
165
+ member = true;
166
+ }
167
+ else if (character === "[") {
168
+ bracket = index;
169
+ member = false;
170
+ }
171
+ else if (character === "^" && index !== 0 || character === "$" && index !== pattern.length - 1) {
172
+ fail("unsupported", "BRE anchors are supported only at record boundaries");
173
+ }
174
+ else if (character === "*" && (index === 0 || index === 1 && pattern[0] === "^")) {
175
+ fail("unsupported", "BRE leading literal star is unsupported; use fixed matching");
176
+ }
177
+ }
178
+ }
179
+ async function execute(input, signal) {
180
+ const { descriptor: selected, rows, ledger } = input;
181
+ const programs = [];
182
+ for (const pattern of selected.patterns) {
183
+ if (selected.kind === "grep" && !selected.fixed && !selected.extended)
184
+ await admitBre(pattern, ledger, signal);
185
+ if (selected.kind === "rg" && !selected.nullData && pattern.includes("\n"))
186
+ fail("unsupported", "rg multiline matching is unsupported");
187
+ ledger.charge("allocationUnits", (selected.whole ? 3 : 1) * 3 + 2, signal);
188
+ const fragments = selected.whole
189
+ ? [{ text: "^(", literal: false }, { text: pattern, literal: selected.fixed }, { text: ")$", literal: false }]
190
+ : [{ text: pattern, literal: selected.fixed }];
191
+ programs.push(await compileEre(fragments, ledger, signal));
192
+ }
193
+ const results = [];
194
+ for (const row of rows) {
195
+ // The admitted ASCII profile makes every character offset the original byte offset.
196
+ ledger.charge("allocationUnits", row.bytes.length * 2 + 2, signal);
197
+ const characters = [];
198
+ for (const byte of row.bytes) {
199
+ ledger.charge("work", 1, signal);
200
+ if (byte === 0 || byte > 127)
201
+ fail("unsupported", "subjects require non-NUL ASCII; Unicode and invalid UTF-8 are unsupported");
202
+ characters.push(String.fromCharCode(byte));
203
+ await ledger.checkpoint(signal);
204
+ }
205
+ const subject = characters.join("");
206
+ let span;
207
+ for (const program of programs) {
208
+ const match = await matchEre(program, subject, ledger, signal);
209
+ if (!match.matched)
210
+ continue;
211
+ const candidate = match.captures[0];
212
+ if (selected.kind === "grep") {
213
+ span = candidate;
214
+ break;
215
+ }
216
+ // Fixed rg patterns select the first occurrence, breaking ties by pattern order.
217
+ if (!span || candidate.start < span.start)
218
+ span = candidate;
219
+ }
220
+ signal.throwIfAborted();
221
+ results.push(span ? new Float64Array([span.start, span.end]) : new Float64Array());
222
+ }
223
+ return { id: input.id, results };
224
+ }
225
+ class CooperativeWorker {
226
+ limits;
227
+ release;
228
+ #controller = new AbortController();
229
+ #listeners = new Map();
230
+ #tasks = new Set();
231
+ #busy = false;
232
+ #closing;
233
+ constructor(limits, release) {
234
+ this.limits = limits;
235
+ this.release = release;
236
+ queueMicrotask(() => { if (!this.#closing)
237
+ this.emit({ ready: true }); });
238
+ }
239
+ on(event, listener) {
240
+ if (this.#closing)
241
+ return;
242
+ let listeners = this.#listeners.get(event);
243
+ if (!listeners) {
244
+ listeners = new Set();
245
+ this.#listeners.set(event, listeners);
246
+ }
247
+ listeners.add(listener);
248
+ }
249
+ off(event, listener) { this.#listeners.get(event)?.delete(listener); }
250
+ emit(value) {
251
+ for (const listener of this.#listeners.get("message") ?? [])
252
+ listener(value);
253
+ }
254
+ postMessage(input) {
255
+ if (this.#closing)
256
+ throw new Error("bounded regex worker is closed");
257
+ if (this.#busy)
258
+ throw new Error("bounded regex worker is busy");
259
+ const identity = input !== null && typeof input === "object" ? Object.getOwnPropertyDescriptor(input, "id") : undefined;
260
+ if (!identity || !("value" in identity) || !Number.isSafeInteger(identity.value) || identity.value < 1)
261
+ fail("protocol", "invalid request identity");
262
+ const id = identity.value;
263
+ const submitted = Object.getOwnPropertyDescriptor(input, "descriptor")?.value;
264
+ const expression = submitted !== null && typeof submitted === "object" && Object.getOwnPropertyDescriptor(submitted, "kind")?.value === "expr-match";
265
+ let owned;
266
+ let failure;
267
+ try {
268
+ owned = admit(input, this.limits, this.#controller.signal);
269
+ }
270
+ catch (error) {
271
+ failure = error instanceof Error ? error.message.slice(0, 512) : "bounded regex protocol: request admission failed";
272
+ }
273
+ this.#busy = true;
274
+ const task = Promise.resolve().then(async () => {
275
+ let reply;
276
+ try {
277
+ this.#controller.signal.throwIfAborted();
278
+ reply = owned ? await execute(owned, this.#controller.signal) : { id, error: failure };
279
+ }
280
+ catch (error) {
281
+ reply = { id, error: error instanceof Error ? error.message.slice(0, 512) : "bounded regex request failed" };
282
+ }
283
+ if (expression && "error" in reply)
284
+ reply = { id, operation: "expr-match", category: "unsupported", error: reply.error };
285
+ // Clear request-owned payloads before notifying the consumer or allowing reuse.
286
+ owned = undefined;
287
+ this.#busy = false;
288
+ if (!this.#closing)
289
+ this.emit(reply);
290
+ });
291
+ this.#tasks.add(task);
292
+ void task.then(() => this.#tasks.delete(task), () => this.#tasks.delete(task));
293
+ }
294
+ terminate() {
295
+ if (!this.#closing) {
296
+ this.#closing = Promise.allSettled([...this.#tasks]).then(() => {
297
+ this.#listeners.clear();
298
+ this.#tasks.clear();
299
+ this.release();
300
+ });
301
+ this.#controller.abort(new Error("bounded regex worker terminated"));
302
+ }
303
+ return this.#closing;
304
+ }
305
+ }
306
+ /** Cooperative non-NUL ASCII grep selection and fixed-rg provider; not a native-worker/RSS sandbox. */
307
+ export function createBoundedRegexProvider(input = {}) {
308
+ const limits = options(input);
309
+ let active = 0;
310
+ return Object.freeze({
311
+ createWorker() {
312
+ if (active >= limits.maxWorkers)
313
+ fail("limit", "worker count limit exceeded");
314
+ active++;
315
+ return new CooperativeWorker(limits, () => { active--; });
316
+ },
317
+ });
318
+ }
319
+ //# sourceMappingURL=bounded-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bounded-provider.js","sourceRoot":"","sources":["../../../src/commands/regex-execution/bounded-provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAiB5C,MAAM,QAAQ,GAA0C,MAAM,CAAC,MAAM,CAAC;IACpE,UAAU,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG;IACnE,aAAa,EAAE,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS;IAC/D,kBAAkB,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM;CACjD,CAAC,CAAC;AACH,MAAM,QAAQ,GAA0C,MAAM,CAAC,MAAM,CAAC;IACpE,UAAU,EAAE,EAAE,EAAE,WAAW,EAAE,GAAG,EAAE,eAAe,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI;IACxE,aAAa,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU;IACrE,kBAAkB,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM;CACjD,CAAC,CAAC;AAWH,MAAM,mBAAmB,GAAG,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,SAAS,CAAW,CAAC;AAClF,MAAM,UAAU,GAAG,MAAM,CAAC,wBAAwB,CAAC,mBAAmB,EAAE,YAAY,CAAE,CAAC,GAAI,CAAC;AAC5F,MAAM,UAAU,GAAG,MAAM,CAAC,wBAAwB,CAAC,mBAAmB,EAAE,YAAY,CAAE,CAAC,GAAI,CAAC;AAC5F,MAAM,UAAU,GAAG,MAAM,CAAC,wBAAwB,CAAC,mBAAmB,EAAE,QAAQ,CAAE,CAAC,GAAI,CAAC;AAExF,SAAS,IAAI,CAAC,IAA0C,EAAE,OAAe;IACvE,MAAM,IAAI,KAAK,CAAC,iBAAiB,IAAI,KAAK,OAAO,EAAE,CAAC,CAAC;AACvD,CAAC;AAED,SAAS,MAAM,CAAC,KAAc,EAAE,IAAuB,EAAE,WAA8B,EAAE;IACvF,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,IAAI,CAAC,UAAU,EAAE,wBAAwB,CAAC,CAAC;IACpH,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACvC,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM;WAC7E,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAAE,IAAI,CAAC,UAAU,EAAE,+BAA+B,CAAC,CAAC;IACvJ,KAAK,MAAM,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC;QACzC,MAAM,QAAQ,GAAG,MAAM,CAAC,wBAAwB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC7D,IAAI,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,QAAQ,CAAC;YAAE,IAAI,CAAC,UAAU,EAAE,2BAA2B,CAAC,CAAC;IAC1H,CAAC;AACH,CAAC;AAED,SAAS,KAAK,CAAC,KAAc,EAAE,KAAa,EAAE,KAAa;IACzD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,IAAI,CAAC,UAAU,EAAE,GAAG,KAAK,mBAAmB,CAAC,CAAC;IACzE,IAAI,KAAK,CAAC,MAAM,GAAG,KAAK;QAAE,IAAI,CAAC,OAAO,EAAE,GAAG,KAAK,uBAAuB,CAAC,CAAC;IACzE,2EAA2E;IAC3E,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACpC,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC;QAAE,IAAI,CAAC,UAAU,EAAE,GAAG,KAAK,6BAA6B,CAAC,CAAC;IAC9F,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;QAClD,MAAM,QAAQ,GAAG,MAAM,CAAC,wBAAwB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC/D,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,OAAO,IAAI,QAAQ,CAAC;YAAE,IAAI,CAAC,UAAU,EAAE,GAAG,KAAK,6BAA6B,CAAC,CAAC;IACnG,CAAC;AACH,CAAC;AAED,SAAS,OAAO,CAAC,KAAkC;IACjD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAA0C,CAAC;IAC5E,IAAI,CAAC;QAAC,MAAM,CAAC,KAAK,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;IAAC,CAAC;IAChC,MAAM,CAAC;QAAC,MAAM,IAAI,SAAS,CAAC,yDAAyD,CAAC,CAAC;IAAC,CAAC;IACzF,MAAM,MAAM,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;IAC/B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC;YAAE,SAAS;QACzC,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;QACzB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC;YAAE,MAAM,IAAI,UAAU,CAAC,wBAAwB,GAAG,uBAAuB,CAAC,CAAC;QAC9K,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACtB,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC/B,CAAC;AAED,SAAS,UAAU,CAAC,KAAc,EAAE,MAA6C;IAC/E,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,IAAI,CAAC,UAAU,EAAE,oBAAoB,CAAC,CAAC;IACxF,MAAM,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC5D,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,OAAO,IAAI,IAAI,CAAC;QAAE,IAAI,CAAC,UAAU,EAAE,yBAAyB,CAAC,CAAC;IAC7E,IAAI,IAAI,CAAC,KAAK,KAAK,MAAM,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI;QAAE,IAAI,CAAC,aAAa,EAAE,4DAA4D,CAAC,CAAC;IACpI,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;IACrI,MAAM,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACxF,KAAK,MAAM,IAAI,IAAI,KAAK;QAAE,IAAI,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,SAAS;YAAE,IAAI,CAAC,UAAU,EAAE,WAAW,IAAI,OAAO,CAAC,CAAC;IACzG,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,IAAI,CAAC,CAAC,WAAW,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAc,CAAC;QAAE,IAAI,CAAC,UAAU,EAAE,mBAAmB,CAAC,CAAC;IACxI,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,MAAM,IAAI,KAAK,CAAC,WAAW,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW;QAAE,IAAI,CAAC,aAAa,EAAE,sDAAsD,CAAC,CAAC;IAC/L,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK;QAAE,IAAI,CAAC,aAAa,EAAE,sEAAsE,CAAC,CAAC;IACrI,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IACrD,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;QAC3D,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACtC,IAAI,OAAO,OAAO,KAAK,QAAQ;YAAE,IAAI,CAAC,UAAU,EAAE,0BAA0B,CAAC,CAAC;QAC9E,IAAI,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,eAAe,GAAG,KAAK;YAAE,IAAI,CAAC,OAAO,EAAE,uCAAuC,CAAC,CAAC;QAC5G,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;IAC1B,CAAC;IACD,OAAO,KAAuC,CAAC;AACjD,CAAC;AAED,SAAS,KAAK,CAAC,KAAyB,EAAE,MAA6C,EAAE,MAAmB;IAC1G,MAAM,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC;IAC5C,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IACtD,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACzC,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,GAAG,EAAE,CAAC;QAAE,IAAI,CAAC,OAAO,EAAE,4BAA4B,CAAC,CAAC;IAC5G,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;QACvD,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAE,CAAC;QAC/B,MAAM,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,YAAY,CAAC,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC;QACxE,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,YAAY,UAAU,CAAC,IAAI,OAAO,GAAG,CAAC,GAAG,KAAK,SAAS,IAAI,OAAO,GAAG,CAAC,UAAU,KAAK,SAAS;eACxG,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,WAAW,CAAC,IAAI,OAAO,GAAG,CAAC,SAAS,KAAK,SAAS;eACrE,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,WAAW,CAAC,IAAI,OAAO,GAAG,CAAC,SAAS,KAAK,SAAS;YAAE,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;QAC5G,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,WAAW,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,WAAW,CAAC;YAAE,IAAI,CAAC,aAAa,EAAE,gCAAgC,CAAC,CAAC;QAC9H,IAAI,GAAG,CAAC,GAAG;YAAE,IAAI,CAAC,aAAa,EAAE,sCAAsC,CAAC,CAAC;QACzE,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAW,CAAC;QACpD,IAAI,MAAM,GAAG,MAAM,CAAC,aAAa,GAAG,KAAK;YAAE,IAAI,CAAC,OAAO,EAAE,qCAAqC,CAAC,CAAC;QAChG,KAAK,IAAI,MAAM,CAAC;IAClB,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,EAAE,iBAAiB,EAAE,SAAS,EAAE,kBAAkB,EAAE,IAAI,EAAE,EAAE;QACvF,YAAY,EAAE,MAAM,CAAC,eAAe,GAAG,CAAC,EAAE,YAAY,EAAE,MAAM,CAAC,aAAa;QAC5E,IAAI,EAAE,MAAM,CAAC,OAAO,EAAE,eAAe,EAAE,MAAM,CAAC,kBAAkB,EAAE,MAAM,EAAE,MAAM,CAAC,SAAS;KAC3F,CAAC,CAAC;IACH,sFAAsF;IACtF,MAAM,CAAC,MAAM,CAAC,iBAAiB,EAAE,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC;IAC7G,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE;QAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAE,CAAC,CAAC;IACxG,MAAM,eAAe,GAAwB,QAAQ,CAAC,IAAI,KAAK,MAAM;QACnE,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,WAAW,EAAE,QAAQ,CAAC,WAAW,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE;QAC/J,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC;IAClJ,MAAM,IAAI,GAAU,EAAE,CAAC;IACvB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;QACvD,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAgB,EAAE,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAW,EAAE,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAW,CAAC,CAAC;QACrJ,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC3C,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACjB,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;IACrE,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,UAAU,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AACrE,CAAC;AAED,KAAK,UAAU,QAAQ,CAAC,OAAe,EAAE,MAAiB,EAAE,MAAmB;IAC7E,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC;IACjB,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,IAAI,UAAU,GAAG,KAAK,CAAC;IACvB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;QACpD,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;QACjC,MAAM,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAChC,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAE,CAAC;QAClC,IAAI,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC;YAAE,IAAI,CAAC,aAAa,EAAE,mFAAmF,CAAC,CAAC;QAC9I,IAAI,OAAO,IAAI,CAAC,EAAE,CAAC;YACjB,IAAI,KAAK,KAAK,OAAO,GAAG,CAAC,IAAI,SAAS,KAAK,GAAG;gBAAE,SAAS;YACzD,IAAI,UAAU,EAAE,CAAC;gBACf,IAAI,SAAS,KAAK,GAAG,IAAI,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,GAAG;oBAAE,UAAU,GAAG,KAAK,CAAC;YAC1E,CAAC;iBAAM,IAAI,SAAS,KAAK,GAAG,IAAI,MAAM;gBAAE,OAAO,GAAG,CAAC,CAAC,CAAC;iBAChD,IAAI,SAAS,KAAK,GAAG,IAAI,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,GAAG;gBAAE,UAAU,GAAG,IAAI,CAAC;YAC5E,MAAM,GAAG,IAAI,CAAC;QAChB,CAAC;aAAM,IAAI,SAAS,KAAK,GAAG,EAAE,CAAC;YAAC,OAAO,GAAG,KAAK,CAAC;YAAC,MAAM,GAAG,KAAK,CAAC;QAAC,CAAC;aAC7D,IAAI,SAAS,KAAK,GAAG,IAAI,KAAK,KAAK,CAAC,IAAI,SAAS,KAAK,GAAG,IAAI,KAAK,KAAK,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/F,IAAI,CAAC,aAAa,EAAE,qDAAqD,CAAC,CAAC;QAC7E,CAAC;aAAM,IAAI,SAAS,KAAK,GAAG,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;YACnF,IAAI,CAAC,aAAa,EAAE,6DAA6D,CAAC,CAAC;QACrF,CAAC;IACH,CAAC;AACH,CAAC;AAED,KAAK,UAAU,OAAO,CAAC,KAAmB,EAAE,MAAmB;IAC7D,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IACrD,MAAM,QAAQ,GAAiB,EAAE,CAAC;IAClC,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACxC,IAAI,QAAQ,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,QAAQ;YAAE,MAAM,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QAC/G,IAAI,QAAQ,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,IAAI,CAAC,aAAa,EAAE,sCAAsC,CAAC,CAAC;QACxI,MAAM,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;QAC3E,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK;YAC9B,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;YAC9G,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;QACjD,QAAQ,CAAC,IAAI,CAAC,MAAM,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC7D,CAAC;IACD,MAAM,OAAO,GAAmB,EAAE,CAAC;IACnC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,oFAAoF;QACpF,MAAM,CAAC,MAAM,CAAC,iBAAiB,EAAE,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;QACnE,MAAM,UAAU,GAAa,EAAE,CAAC;QAChC,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;YAC7B,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;YACjC,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,GAAG,GAAG;gBAAE,IAAI,CAAC,aAAa,EAAE,2EAA2E,CAAC,CAAC;YAC/H,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;YAC3C,MAAM,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAClC,CAAC;QACD,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACpC,IAAI,IAAkE,CAAC;QACvE,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;YAC/D,IAAI,CAAC,KAAK,CAAC,OAAO;gBAAE,SAAS;YAC7B,MAAM,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC;YACrC,IAAI,QAAQ,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAAC,IAAI,GAAG,SAAS,CAAC;gBAAC,MAAM;YAAC,CAAC;YAC1D,iFAAiF;YACjF,IAAI,CAAC,IAAI,IAAI,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK;gBAAE,IAAI,GAAG,SAAS,CAAC;QAC9D,CAAC;QACD,MAAM,CAAC,cAAc,EAAE,CAAC;QACxB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,YAAY,EAAE,CAAC,CAAC;IACrF,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC;AACnC,CAAC;AAED,MAAM,iBAAiB;IAOQ;IAAgE;IANpF,WAAW,GAAG,IAAI,eAAe,EAAE,CAAC;IACpC,UAAU,GAAG,IAAI,GAAG,EAA8B,CAAC;IACnD,MAAM,GAAG,IAAI,GAAG,EAAiB,CAAC;IAC3C,KAAK,GAAG,KAAK,CAAC;IACd,QAAQ,CAA4B;IAEpC,YAA6B,MAA6C,EAAmB,OAAmB;QAAnF,WAAM,GAAN,MAAM,CAAuC;QAAmB,YAAO,GAAP,OAAO,CAAY;QAC9G,cAAc,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5E,CAAC;IAED,EAAE,CAAC,KAAkB,EAAE,QAAkB;QACvC,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO;QAC1B,IAAI,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC3C,IAAI,CAAC,SAAS,EAAE,CAAC;YAAC,SAAS,GAAG,IAAI,GAAG,EAAE,CAAC;YAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAAC,CAAC;QACjF,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC1B,CAAC;IAED,GAAG,CAAC,KAAkB,EAAE,QAAkB,IAAU,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAE3F,IAAI,CAAC,KAAc;QACzB,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE;YAAG,QAAuC,CAAC,KAAK,CAAC,CAAC;IAC/G,CAAC;IAED,WAAW,CAAC,KAAyB;QACnC,IAAI,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;QACrE,IAAI,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAChE,MAAM,QAAQ,GAAG,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,wBAAwB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACxH,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,KAAK,GAAG,CAAC;YAAE,IAAI,CAAC,UAAU,EAAE,0BAA0B,CAAC,CAAC;QACrJ,MAAM,EAAE,GAAG,QAAQ,CAAC,KAAe,CAAC;QACpC,MAAM,SAAS,GAAG,MAAM,CAAC,wBAAwB,CAAC,KAAK,EAAE,YAAY,CAAC,EAAE,KAAgB,CAAC;QACzF,MAAM,UAAU,GAAG,SAAS,KAAK,IAAI,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,MAAM,CAAC,wBAAwB,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,KAAK,KAAK,YAAY,CAAC;QACrJ,IAAI,KAA+B,CAAC;QACpC,IAAI,OAA2B,CAAC;QAChC,IAAI,CAAC;YAAC,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAAC,CAAC;QACnE,OAAO,KAAK,EAAE,CAAC;YAAC,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,kDAAkD,CAAC;QAAC,CAAC;QACtI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;YAC7C,IAAI,KAA6B,CAAC;YAClC,IAAI,CAAC;gBACH,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;gBACzC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,OAAQ,EAAE,CAAC;YAC1F,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,KAAK,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,8BAA8B,EAAE,CAAC;YAC/G,CAAC;YACD,IAAI,UAAU,IAAI,OAAO,IAAI,KAAK;gBAAE,KAAK,GAAG,EAAE,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;YACzH,gFAAgF;YAChF,KAAK,GAAG,SAAS,CAAC;YAClB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YACnB,IAAI,CAAC,IAAI,CAAC,QAAQ;gBAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACtB,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IACjF,CAAC;IAED,SAAS;QACP,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;gBAC7D,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;gBACxB,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;gBACpB,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC,CAAC;QACvE,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;CACF;AAED,uGAAuG;AACvG,MAAM,UAAU,0BAA0B,CAAC,QAAqC,EAAE;IAChF,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAC9B,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,YAAY;YACV,IAAI,MAAM,IAAI,MAAM,CAAC,UAAU;gBAAE,IAAI,CAAC,OAAO,EAAE,6BAA6B,CAAC,CAAC;YAC9E,MAAM,EAAE,CAAC;YACT,OAAO,IAAI,iBAAiB,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5D,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
@@ -1,4 +1,5 @@
1
1
  export type { BoundedRegexProvider, RegexWorker, RegexWorkerRequest } from "./provider.js";
2
+ export { createBoundedRegexProvider, type BoundedRegexProviderOptions } from "./bounded-provider.js";
2
3
  export { RegexExecutionError } from "./protocol.js";
3
4
  export type { RegexExecutionOptions, Descriptor as RegexDescriptor, Request as RegexRequest, Reply as RegexReply, Row as RegexRow, Match as RegexMatch, GrepDescriptor, SearchDescriptor, GlobDescriptor, } from "./protocol.js";
4
5
  export { EreLedger } from "./ere/limits.js";
@@ -1 +1 @@
1
- {"version":3,"file":"public.d.ts","sourceRoot":"","sources":["../../../src/commands/regex-execution/public.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,oBAAoB,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAC3F,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,YAAY,EACV,qBAAqB,EAAE,UAAU,IAAI,eAAe,EAAE,OAAO,IAAI,YAAY,EAC7E,KAAK,IAAI,UAAU,EAAE,GAAG,IAAI,QAAQ,EAAE,KAAK,IAAI,UAAU,EACzD,cAAc,EAAE,gBAAgB,EAAE,cAAc,GACjD,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAClH,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,kBAAkB,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"public.d.ts","sourceRoot":"","sources":["../../../src/commands/regex-execution/public.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,oBAAoB,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAC3F,OAAO,EAAE,0BAA0B,EAAE,KAAK,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AACrG,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,YAAY,EACV,qBAAqB,EAAE,UAAU,IAAI,eAAe,EAAE,OAAO,IAAI,YAAY,EAC7E,KAAK,IAAI,UAAU,EAAE,GAAG,IAAI,QAAQ,EAAE,KAAK,IAAI,UAAU,EACzD,cAAc,EAAE,gBAAgB,EAAE,cAAc,GACjD,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAClH,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,kBAAkB,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC"}
@@ -1,3 +1,4 @@
1
+ export { createBoundedRegexProvider } from "./bounded-provider.js";
1
2
  export { RegexExecutionError } from "./protocol.js";
2
3
  export { EreLedger } from "./ere/limits.js";
3
4
  export { compileEre } from "./ere/syntax.js";
@@ -1 +1 @@
1
- {"version":3,"file":"public.js","sourceRoot":"","sources":["../../../src/commands/regex-execution/public.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAMpD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"public.js","sourceRoot":"","sources":["../../../src/commands/regex-execution/public.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,0BAA0B,EAAoC,MAAM,uBAAuB,CAAC;AACrG,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAMpD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { CommandDefinition } from "../../contracts/index.js";
1
+ import { type CommandDefinition } from "../../contracts/index.js";
2
2
  import { RegexExecutor } from "../regex-execution/portable.js";
3
3
  export declare function createGrepCommands(executor: RegexExecutor): CommandDefinition[];
4
4
  //# sourceMappingURL=grep.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"grep.d.ts","sourceRoot":"","sources":["../../../src/commands/search/grep.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAElE,OAAO,EAAoB,aAAa,EAAyC,MAAM,gCAAgC,CAAC;AAIxH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,aAAa,GAAG,iBAAiB,EAAE,CA2F/E"}
1
+ {"version":3,"file":"grep.d.ts","sourceRoot":"","sources":["../../../src/commands/search/grep.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiC,KAAK,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAEjG,OAAO,EAAoB,aAAa,EAAyC,MAAM,gCAAgC,CAAC;AAMxH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,aAAa,GAAG,iBAAiB,EAAE,CAqH/E"}
@@ -1,6 +1,8 @@
1
- import { bufferLimit, collect, diagnostic, input, integer, lines, options as parseOptions, output, UsageError, value } from "../internal.js";
1
+ import { toByteSource } from "../../contracts/index.js";
2
+ import { bufferLimit, diagnostic, input, integer, lines, options as parseOptions, output, UsageError, value } from "../internal.js";
2
3
  import { AvailableRecords, RegexExecutor, RegexExecutionError, withRegexSession } from "../regex-execution/portable.js";
3
4
  import { grepRequirements, requiredFileInput } from "./requirements.js";
5
+ const maxPatternCount = 1024;
4
6
  export function createGrepCommands(executor) {
5
7
  return [{ name: "grep", filesystemRequirements: grepRequirements, execute: context => withRegexSession(context, executor, async (session) => {
6
8
  try {
@@ -14,22 +16,53 @@ export function createGrepCommands(executor) {
14
16
  const names = parsed.operands.length ? parsed.operands : ["-"];
15
17
  const patternFiles = parsed.values.get("f") ?? [];
16
18
  const patterns = [];
17
- const addPatterns = (text, file) => {
18
- if (file && text === "")
19
- return;
20
- const parts = text.split("\n");
21
- if (parts.length > 1 && parts.at(-1) === "")
22
- parts.pop();
23
- patterns.push(...parts);
19
+ let patternCount = 0;
20
+ let patternBytes = 0;
21
+ const admit = (chunk, atStart) => {
22
+ context.signal.throwIfAborted();
23
+ const size = typeof chunk === "string" ? Buffer.byteLength(chunk) : chunk.length;
24
+ if (size > bufferLimit - patternBytes)
25
+ throw new UsageError(`pattern byte limit exceeded (${bufferLimit} bytes)`);
26
+ patternBytes += size;
27
+ for (let offset = 0; offset < chunk.length;) {
28
+ if (atStart && ++patternCount > maxPatternCount)
29
+ throw new UsageError(`pattern count limit exceeded (${maxPatternCount})`);
30
+ const newline = typeof chunk === "string" ? chunk.indexOf("\n", offset) : chunk.indexOf(10, offset);
31
+ if (newline < 0)
32
+ return false;
33
+ offset = newline + 1;
34
+ atStart = true;
35
+ }
36
+ return atStart;
37
+ };
38
+ const addArgument = async (pattern) => {
39
+ admit(pattern, true);
40
+ if (pattern === "") {
41
+ if (++patternCount > maxPatternCount)
42
+ throw new UsageError(`pattern count limit exceeded (${maxPatternCount})`);
43
+ patterns.push("");
44
+ }
45
+ else {
46
+ for await (const line of lines(toByteSource(pattern)))
47
+ patterns.push(Buffer.from(line.bytes).toString("latin1"));
48
+ }
24
49
  };
50
+ async function* admitted(source) {
51
+ let atStart = true;
52
+ for await (const chunk of source) {
53
+ atStart = admit(chunk, atStart);
54
+ yield chunk;
55
+ }
56
+ }
25
57
  for (const pattern of parsed.values.get("e") ?? [])
26
- addPatterns(Buffer.from(pattern).toString("latin1"), false);
58
+ await addArgument(pattern);
27
59
  for (const name of patternFiles) {
28
- const source = name === "-" ? input(context) : requiredFileInput(context, grepRequirements, "pattern-file", name, bufferLimit);
29
- addPatterns(Buffer.from(await collect(source, context.signal)).toString("latin1"), true);
60
+ const source = name === "-" ? input(context) : requiredFileInput(context, grepRequirements, "pattern-file", name, bufferLimit - patternBytes);
61
+ for await (const line of lines(admitted(source)))
62
+ patterns.push(Buffer.from(line.bytes).toString("latin1"));
30
63
  }
31
64
  if (positionalPattern !== undefined)
32
- addPatterns(Buffer.from(positionalPattern).toString("latin1"), false);
65
+ await addArgument(positionalPattern);
33
66
  if (parsed.flags.has("E") && parsed.flags.has("F"))
34
67
  throw new UsageError("conflicting matchers specified");
35
68
  const descriptor = {