@nifrajs/coding-agent 3.3.0 → 3.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/dist/context.js +29 -1
  2. package/dist/context.js.map +1 -1
  3. package/dist/diff.js +38 -2
  4. package/dist/diff.js.map +1 -1
  5. package/dist/host.d.ts.map +1 -1
  6. package/dist/host.js +146 -23
  7. package/dist/host.js.map +1 -1
  8. package/dist/index.d.ts +1 -1
  9. package/dist/index.d.ts.map +1 -1
  10. package/dist/index.js +1 -1
  11. package/dist/index.js.map +1 -1
  12. package/dist/isolated.js +37 -2
  13. package/dist/isolated.js.map +1 -1
  14. package/dist/native.d.ts +5 -0
  15. package/dist/native.d.ts.map +1 -1
  16. package/dist/native.js +138 -34
  17. package/dist/native.js.map +1 -1
  18. package/dist/replay.d.ts +4 -0
  19. package/dist/replay.d.ts.map +1 -1
  20. package/dist/replay.js +189 -24
  21. package/dist/replay.js.map +1 -1
  22. package/dist/rpc.d.ts +10 -0
  23. package/dist/rpc.d.ts.map +1 -1
  24. package/dist/rpc.js +208 -29
  25. package/dist/rpc.js.map +1 -1
  26. package/dist/sessions.d.ts +14 -2
  27. package/dist/sessions.d.ts.map +1 -1
  28. package/dist/sessions.js +253 -59
  29. package/dist/sessions.js.map +1 -1
  30. package/dist/verification.d.ts +23 -0
  31. package/dist/verification.d.ts.map +1 -1
  32. package/dist/verification.js +113 -1
  33. package/dist/verification.js.map +1 -1
  34. package/dist/workflows.d.ts +1 -0
  35. package/dist/workflows.d.ts.map +1 -1
  36. package/dist/workflows.js +43 -21
  37. package/dist/workflows.js.map +1 -1
  38. package/package.json +6 -5
  39. package/src/context.ts +32 -1
  40. package/src/diff.ts +40 -2
  41. package/src/host.ts +146 -23
  42. package/src/index.ts +5 -0
  43. package/src/isolated.ts +39 -2
  44. package/src/native.ts +173 -32
  45. package/src/replay.ts +206 -25
  46. package/src/rpc.ts +261 -33
  47. package/src/sessions.ts +271 -56
  48. package/src/verification.ts +140 -1
  49. package/src/workflows.ts +37 -25
package/dist/replay.js CHANGED
@@ -1,20 +1,57 @@
1
- import { agentError, createAgentEventStream, } from "@nifrajs/agent-protocol";
1
+ import { agentError, createAgentEventStream, isAgentEvent, } from "@nifrajs/agent-protocol";
2
2
  /** Deterministic protocol backend for demos, CI, and UI regression tests. */
3
3
  export class ReplayBackend {
4
4
  info = Object.freeze({
5
5
  name: "replay",
6
6
  capabilities: Object.freeze(["sessions", "streaming", "replay"]),
7
7
  });
8
+ /** Serialized immutable source records; parsing per replay prevents caller/consumer mutation leaks. */
8
9
  events;
9
10
  delayMs;
10
11
  sessions = new Map();
11
12
  constructor(options) {
12
- this.events = Object.freeze(options.events.map((event) => Object.freeze({ ...event })));
13
+ if (!Array.isArray(options.events) ||
14
+ options.events.length > MAX_REPLAY_EVENTS ||
15
+ !options.events.every((event) => isAgentEvent(event)))
16
+ throw new TypeError("replay backend: events must be valid agent events");
17
+ const encoded = [];
18
+ let totalBytes = 0;
19
+ for (const event of options.events) {
20
+ let line;
21
+ try {
22
+ // Clone before serializing so a hostile `toJSON`/nested reference cannot mutate the caller's
23
+ // record or make the replay depend on later mutations. The serialized form is the immutable
24
+ // source used for every turn below.
25
+ const clone = structuredClone(event);
26
+ if (!isAgentEvent(clone))
27
+ throw new TypeError("replay event clone is invalid");
28
+ line = JSON.stringify(clone);
29
+ }
30
+ catch {
31
+ throw new TypeError("replay backend: events must be JSON-serializable");
32
+ }
33
+ const bytes = new TextEncoder().encode(line).byteLength + 1;
34
+ if (totalBytes > MAX_REPLAY_BYTES - bytes)
35
+ throw new RangeError("replay backend: events exceed the total size limit");
36
+ totalBytes += bytes;
37
+ encoded.push(line);
38
+ }
39
+ this.events = Object.freeze(encoded);
13
40
  this.delayMs = options.delayMs ?? 0;
14
41
  if (!Number.isSafeInteger(this.delayMs) || this.delayMs < 0 || this.delayMs > 60_000)
15
42
  throw new RangeError("replay backend: delayMs must be between 0 and 60000");
16
43
  }
17
44
  async createSession(input) {
45
+ if (typeof input.cwd !== "string" ||
46
+ input.cwd.length === 0 ||
47
+ input.cwd.length > 4_096 ||
48
+ input.cwd.includes("\0"))
49
+ throw new TypeError("replay backend: cwd must be a bounded non-empty path");
50
+ if (input.capabilities !== undefined &&
51
+ (!Array.isArray(input.capabilities) ||
52
+ input.capabilities.length > 256 ||
53
+ !input.capabilities.every((value) => boundedReplayToken(value))))
54
+ throw new TypeError("replay backend: capabilities must be bounded tokens");
18
55
  const id = input.sessionId ?? crypto.randomUUID();
19
56
  if (!/^[a-zA-Z0-9._:-]{1,128}$/.test(id))
20
57
  throw new TypeError("replay backend: invalid sessionId");
@@ -32,7 +69,16 @@ export class ReplayBackend {
32
69
  lastSeq: 0,
33
70
  capabilities: Object.freeze([...(input.capabilities ?? this.info.capabilities)]),
34
71
  };
35
- this.sessions.set(id, { id, snapshot, active: undefined, closed: false, seq: 0 });
72
+ this.sessions.set(id, {
73
+ id,
74
+ snapshot,
75
+ active: undefined,
76
+ controller: new AbortController(),
77
+ turnId: undefined,
78
+ turnAbortCleanup: undefined,
79
+ closed: false,
80
+ seq: 0,
81
+ });
36
82
  return snapshot;
37
83
  }
38
84
  send(input) {
@@ -43,20 +89,35 @@ export class ReplayBackend {
43
89
  return failedStream(agentError("SESSION_BUSY", "replay session is busy"));
44
90
  const stream = createAgentEventStream();
45
91
  session.active = stream;
46
- void this.replay(session, stream);
92
+ session.controller = new AbortController();
93
+ session.turnId = crypto.randomUUID();
94
+ const turnId = session.turnId;
95
+ const signal = session.controller.signal;
96
+ if (input.signal !== undefined) {
97
+ const externalSignal = input.signal;
98
+ const onAbort = () => {
99
+ if (session.active !== stream || session.turnId !== turnId)
100
+ return;
101
+ void this.cancelTurn(session, stream, turnId, "cancelled");
102
+ };
103
+ if (externalSignal.aborted)
104
+ onAbort();
105
+ else {
106
+ externalSignal.addEventListener("abort", onAbort, { once: true });
107
+ session.turnAbortCleanup = () => externalSignal.removeEventListener("abort", onAbort);
108
+ if (externalSignal.aborted)
109
+ onAbort();
110
+ }
111
+ }
112
+ if (session.active === stream && session.turnId === turnId)
113
+ void this.replay(session, stream, turnId, signal);
47
114
  return stream;
48
115
  }
49
116
  async cancel(sessionId, reason = "cancelled") {
50
117
  const session = this.requireSession(sessionId);
51
- session.active?.complete();
52
- session.active = undefined;
53
- session.snapshot = Object.freeze({
54
- ...session.snapshot,
55
- status: "stopped",
56
- updatedAt: Date.now(),
57
- });
58
- if (session.seq === 0)
59
- this.push(session, { type: "session.stopped", reason });
118
+ if (session.active === undefined)
119
+ return;
120
+ await this.cancelTurn(session, session.active, session.turnId, reason);
60
121
  }
61
122
  async snapshot(sessionId) {
62
123
  return this.requireSession(sessionId).snapshot;
@@ -74,22 +135,33 @@ export class ReplayBackend {
74
135
  async close(sessionId) {
75
136
  const session = this.requireSession(sessionId);
76
137
  session.closed = true;
138
+ session.turnAbortCleanup?.();
139
+ session.turnAbortCleanup = undefined;
140
+ session.controller.abort("closed");
77
141
  session.active?.complete();
78
142
  session.active = undefined;
143
+ session.turnId = undefined;
79
144
  this.sessions.delete(sessionId);
80
145
  }
81
- async replay(session, stream) {
146
+ async replay(session, stream, turnId, signal) {
147
+ if (!this.isCurrentTurn(session, stream, turnId, signal))
148
+ return;
82
149
  session.snapshot = Object.freeze({
83
150
  ...session.snapshot,
84
151
  status: "running",
85
152
  updatedAt: Date.now(),
86
153
  });
87
154
  try {
88
- for (const source of this.events) {
155
+ for (const encoded of this.events) {
89
156
  if (this.delayMs > 0)
90
- await new Promise((resolve) => setTimeout(resolve, this.delayMs));
157
+ await delay(this.delayMs, signal);
158
+ if (!this.isCurrentTurn(session, stream, turnId, signal))
159
+ return;
160
+ const source = JSON.parse(encoded);
91
161
  this.push(session, remap(source, session.id, session.seq));
92
162
  }
163
+ if (!this.isCurrentTurn(session, stream, turnId, signal))
164
+ return;
93
165
  session.snapshot = Object.freeze({
94
166
  ...session.snapshot,
95
167
  status: "idle",
@@ -98,6 +170,8 @@ export class ReplayBackend {
98
170
  this.push(session, { type: "session.completed", snapshot: session.snapshot });
99
171
  }
100
172
  catch (error) {
173
+ if (!this.isCurrentTurn(session, stream, turnId, signal))
174
+ return;
101
175
  this.push(session, {
102
176
  type: "session.failed",
103
177
  error: agentError("REPLAY_FAILED", error instanceof Error ? error.message : String(error)),
@@ -105,14 +179,65 @@ export class ReplayBackend {
105
179
  });
106
180
  }
107
181
  finally {
182
+ if (this.isCurrentTurn(session, stream, turnId, signal)) {
183
+ stream.complete();
184
+ this.clearTurn(session, stream, turnId);
185
+ }
186
+ }
187
+ }
188
+ async cancelTurn(session, expectedStream, expectedTurnId, reason) {
189
+ if (expectedStream !== undefined &&
190
+ (session.active !== expectedStream || session.turnId !== expectedTurnId))
191
+ return;
192
+ const stream = session.active;
193
+ const turnId = session.turnId;
194
+ const stopReason = boundedReplayReason(reason);
195
+ session.turnAbortCleanup?.();
196
+ session.turnAbortCleanup = undefined;
197
+ session.controller.abort(stopReason);
198
+ if (stream !== undefined && turnId !== undefined) {
199
+ session.snapshot = Object.freeze({
200
+ ...session.snapshot,
201
+ status: "stopped",
202
+ updatedAt: Date.now(),
203
+ });
204
+ this.push(session, { type: "session.stopped", reason: stopReason });
108
205
  stream.complete();
109
- session.active = undefined;
110
206
  }
207
+ else {
208
+ session.snapshot = Object.freeze({
209
+ ...session.snapshot,
210
+ status: "stopped",
211
+ updatedAt: Date.now(),
212
+ });
213
+ }
214
+ this.clearTurn(session, stream, turnId);
215
+ }
216
+ isCurrentTurn(session, stream, turnId, signal) {
217
+ return (!session.closed &&
218
+ !signal.aborted &&
219
+ session.active === stream &&
220
+ session.turnId === turnId &&
221
+ session.controller.signal === signal);
222
+ }
223
+ clearTurn(session, stream, turnId) {
224
+ if (stream !== undefined && session.active !== stream)
225
+ return;
226
+ if (turnId !== undefined && session.turnId !== turnId)
227
+ return;
228
+ session.turnAbortCleanup?.();
229
+ session.turnAbortCleanup = undefined;
230
+ if (stream === undefined || session.active === stream)
231
+ session.active = undefined;
232
+ if (turnId === undefined || session.turnId === turnId)
233
+ session.turnId = undefined;
111
234
  }
112
235
  push(session, event) {
113
236
  const next = "version" in event && "sessionId" in event
114
237
  ? event
115
238
  : { version: 1, sessionId: session.id, seq: session.seq, at: Date.now(), ...event };
239
+ if (!isAgentEvent(next))
240
+ throw new Error("replay backend produced an invalid event");
116
241
  session.seq = next.seq + 1;
117
242
  session.snapshot = Object.freeze({ ...session.snapshot, lastSeq: next.seq, updatedAt: next.at });
118
243
  session.active?.push(next);
@@ -125,11 +250,16 @@ export class ReplayBackend {
125
250
  }
126
251
  }
127
252
  export async function readReplayEvents(path) {
128
- const text = await Bun.file(path).text();
253
+ const file = Bun.file(path);
254
+ if (file.size > MAX_REPLAY_BYTES)
255
+ throw new RangeError("replay: event file is too large");
256
+ const text = await file.text();
129
257
  const events = [];
130
258
  for (const line of text.split("\n")) {
131
259
  if (line.trim().length === 0)
132
260
  continue;
261
+ if (events.length >= MAX_REPLAY_EVENTS)
262
+ throw new RangeError("replay: too many events");
133
263
  const value = JSON.parse(line);
134
264
  if (!isAgentEvent(value))
135
265
  throw new Error(`replay: invalid event in ${path}`);
@@ -138,13 +268,48 @@ export async function readReplayEvents(path) {
138
268
  return Object.freeze(events);
139
269
  }
140
270
  function remap(event, sessionId, seq) {
141
- return Object.freeze({ ...event, sessionId, seq, at: Date.now() });
271
+ const base = { ...event, sessionId, seq, at: Date.now() };
272
+ if (event.type === "session.started" ||
273
+ event.type === "session.updated" ||
274
+ event.type === "session.completed")
275
+ return Object.freeze({
276
+ ...base,
277
+ snapshot: Object.freeze({ ...event.snapshot, id: sessionId }),
278
+ });
279
+ return Object.freeze(base);
142
280
  }
143
- function isAgentEvent(value) {
144
- return (value !== null &&
145
- typeof value === "object" &&
146
- value.version === 1 &&
147
- typeof value.type === "string");
281
+ const MAX_REPLAY_BYTES = 64 * 1024 * 1024;
282
+ const MAX_REPLAY_EVENTS = 100_000;
283
+ function boundedReplayReason(reason) {
284
+ if (reason.length <= 512)
285
+ return reason;
286
+ return `${reason.slice(0, 511)}…`;
287
+ }
288
+ function boundedReplayToken(value) {
289
+ return typeof value === "string" && /^[A-Za-z0-9._:/-]{1,128}$/.test(value);
290
+ }
291
+ async function delay(ms, signal) {
292
+ await new Promise((resolve, reject) => {
293
+ let settled = false;
294
+ const timer = setTimeout(() => settle(), ms);
295
+ const onAbort = () => settle(new Error("replay cancelled"));
296
+ const cleanup = () => signal.removeEventListener("abort", onAbort);
297
+ const settle = (error) => {
298
+ if (settled)
299
+ return;
300
+ settled = true;
301
+ clearTimeout(timer);
302
+ cleanup();
303
+ if (error === undefined)
304
+ resolve();
305
+ else
306
+ reject(error);
307
+ };
308
+ if (signal.aborted)
309
+ onAbort();
310
+ else
311
+ signal.addEventListener("abort", onAbort, { once: true });
312
+ });
148
313
  }
149
314
  function failedStream(error) {
150
315
  const stream = createAgentEventStream();
@@ -1 +1 @@
1
- {"version":3,"file":"replay.js","sourceRoot":"","sources":["../src/replay.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"replay.js","sourceRoot":"","sources":["../src/replay.ts"],"names":[],"mappings":"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"}
package/dist/rpc.d.ts CHANGED
@@ -15,6 +15,8 @@ export interface CodingAgentRpcServerOptions {
15
15
  /** Include bounded exception stacks in RPC failures only for trusted loopback debugging. */
16
16
  readonly exposeErrorStacks?: boolean;
17
17
  readonly maxBodyBytes?: number;
18
+ /** Maximum UTF-8 bytes in one non-streaming JSON response. Defaults to 4 MiB. */
19
+ readonly maxResponseBytes?: number;
18
20
  readonly sessionStore?: SessionStore;
19
21
  readonly contextWindow?: ContextWindowOptions;
20
22
  readonly extensions?: ExtensionHost;
@@ -38,13 +40,21 @@ export declare class CodingAgentRpcServer {
38
40
  private readonly options;
39
41
  private readonly token;
40
42
  private readonly maxBodyBytes;
43
+ private readonly maxResponseBytes;
41
44
  private listener;
45
+ private authFailures;
46
+ private authLastFailureAt;
47
+ private authBackoffUntil;
42
48
  constructor(options: CodingAgentRpcServerOptions);
43
49
  start(): Promise<CodingAgentRpcServerHandle>;
44
50
  stop(): Promise<void>;
45
51
  private fetch;
46
52
  private dispatch;
47
53
  private requireSnapshot;
54
+ private authBackoffMs;
55
+ private noteAuthFailure;
56
+ private noteAuthSuccess;
57
+ private response;
48
58
  private protocolError;
49
59
  private readRequest;
50
60
  }
package/dist/rpc.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"rpc.d.ts","sourceRoot":"","sources":["../src/rpc.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,YAAY,EAIlB,MAAM,yBAAyB,CAAA;AAGhC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AACpD,OAAO,EAAE,eAAe,EAAE,KAAK,sBAAsB,EAAE,MAAM,WAAW,CAAA;AAExE,OAAO,KAAK,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AACvE,OAAO,KAAK,EAAE,eAAe,EAAuB,MAAM,SAAS,CAAA;AAGnE,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAA;IAC9B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;IAC1B,yEAAyE;IACzE,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAA;IAC9B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB,wGAAwG;IACxG,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,4FAA4F;IAC5F,QAAQ,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAA;IACpC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,YAAY,CAAC,EAAE,YAAY,CAAA;IACpC,QAAQ,CAAC,aAAa,CAAC,EAAE,oBAAoB,CAAA;IAC7C,QAAQ,CAAC,UAAU,CAAC,EAAE,aAAa,CAAA;IACnC,QAAQ,CAAC,EAAE,CAAC,EAAE,eAAe,CAAA;IAC7B,QAAQ,CAAC,eAAe,CAAC,EAAE,SAAS,CAAC,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAA;IACnE,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAA;IACnC,QAAQ,CAAC,YAAY,CAAC,EAAE,sBAAsB,CAAC,cAAc,CAAC,CAAA;CAC/D;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACtB;AAYD;;;;GAIG;AACH,qBAAa,oBAAoB;IAC/B,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAA;IAC9B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA6B;IACrD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;IAC9B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAQ;IACrC,OAAO,CAAC,QAAQ,CAA2B;gBAE/B,OAAO,EAAE,2BAA2B;IAwB1C,KAAK,IAAI,OAAO,CAAC,0BAA0B,CAAC;IAsB5C,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YAOb,KAAK;YA4CL,QAAQ;IA2UtB,OAAO,CAAC,eAAe;IAKvB,OAAO,CAAC,aAAa;YAQP,WAAW;CAa1B"}
1
+ {"version":3,"file":"rpc.d.ts","sourceRoot":"","sources":["../src/rpc.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,YAAY,EAIlB,MAAM,yBAAyB,CAAA;AAGhC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AACpD,OAAO,EAAE,eAAe,EAAE,KAAK,sBAAsB,EAAE,MAAM,WAAW,CAAA;AAExE,OAAO,KAAK,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AACvE,OAAO,KAAK,EAAE,eAAe,EAAuB,MAAM,SAAS,CAAA;AAGnE,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAA;IAC9B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;IAC1B,yEAAyE;IACzE,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAA;IAC9B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB,wGAAwG;IACxG,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,4FAA4F;IAC5F,QAAQ,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAA;IACpC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;IAC9B,iFAAiF;IACjF,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;IAClC,QAAQ,CAAC,YAAY,CAAC,EAAE,YAAY,CAAA;IACpC,QAAQ,CAAC,aAAa,CAAC,EAAE,oBAAoB,CAAA;IAC7C,QAAQ,CAAC,UAAU,CAAC,EAAE,aAAa,CAAA;IACnC,QAAQ,CAAC,EAAE,CAAC,EAAE,eAAe,CAAA;IAC7B,QAAQ,CAAC,eAAe,CAAC,EAAE,SAAS,CAAC,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAA;IACnE,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAA;IACnC,QAAQ,CAAC,YAAY,CAAC,EAAE,sBAAsB,CAAC,cAAc,CAAC,CAAA;CAC/D;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACtB;AAqBD;;;;GAIG;AACH,qBAAa,oBAAoB;IAC/B,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAA;IAC9B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA6B;IACrD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;IAC9B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAQ;IACrC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAQ;IACzC,OAAO,CAAC,QAAQ,CAA2B;IAC3C,OAAO,CAAC,YAAY,CAAI;IACxB,OAAO,CAAC,iBAAiB,CAAI;IAC7B,OAAO,CAAC,gBAAgB,CAAI;gBAEhB,OAAO,EAAE,2BAA2B;IAqC1C,KAAK,IAAI,OAAO,CAAC,0BAA0B,CAAC;IA8B5C,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YAYb,KAAK;YAsEL,QAAQ;IAgZtB,OAAO,CAAC,eAAe;IAKvB,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,eAAe;IAYvB,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,QAAQ;IAShB,OAAO,CAAC,aAAa;YAQP,WAAW;CAkB1B"}