@compose-market/sdk 0.2.0 → 0.4.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 (52) hide show
  1. package/CHANGELOG.md +54 -9
  2. package/dist/events.d.ts +115 -0
  3. package/dist/events.d.ts.map +1 -0
  4. package/dist/events.js +68 -0
  5. package/dist/events.js.map +1 -0
  6. package/dist/http.d.ts +1 -1
  7. package/dist/http.d.ts.map +1 -1
  8. package/dist/http.js +4 -4
  9. package/dist/http.js.map +1 -1
  10. package/dist/index.d.ts +122 -6
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +255 -18
  13. package/dist/index.js.map +1 -1
  14. package/dist/resources/agent.d.ts +43 -0
  15. package/dist/resources/agent.d.ts.map +1 -0
  16. package/dist/resources/agent.js +297 -0
  17. package/dist/resources/agent.js.map +1 -0
  18. package/dist/resources/inference.d.ts +34 -15
  19. package/dist/resources/inference.d.ts.map +1 -1
  20. package/dist/resources/inference.js +200 -55
  21. package/dist/resources/inference.js.map +1 -1
  22. package/dist/resources/instrumentation.d.ts +28 -0
  23. package/dist/resources/instrumentation.d.ts.map +1 -0
  24. package/dist/resources/instrumentation.js +43 -0
  25. package/dist/resources/instrumentation.js.map +1 -0
  26. package/dist/resources/keys.d.ts +4 -0
  27. package/dist/resources/keys.d.ts.map +1 -1
  28. package/dist/resources/keys.js +15 -5
  29. package/dist/resources/keys.js.map +1 -1
  30. package/dist/resources/session-events.d.ts +46 -0
  31. package/dist/resources/session-events.d.ts.map +1 -0
  32. package/dist/resources/session-events.js +199 -0
  33. package/dist/resources/session-events.js.map +1 -0
  34. package/dist/resources/workflow.d.ts +47 -0
  35. package/dist/resources/workflow.d.ts.map +1 -0
  36. package/dist/resources/workflow.js +321 -0
  37. package/dist/resources/workflow.js.map +1 -0
  38. package/dist/storage.d.ts +27 -0
  39. package/dist/storage.d.ts.map +1 -0
  40. package/dist/storage.js +46 -0
  41. package/dist/storage.js.map +1 -0
  42. package/dist/streaming/budget.d.ts +22 -0
  43. package/dist/streaming/budget.d.ts.map +1 -0
  44. package/dist/streaming/budget.js +40 -0
  45. package/dist/streaming/budget.js.map +1 -0
  46. package/dist/types/index.d.ts +165 -0
  47. package/dist/types/index.d.ts.map +1 -1
  48. package/dist/version.d.ts +9 -0
  49. package/dist/version.d.ts.map +1 -0
  50. package/dist/version.js +9 -0
  51. package/dist/version.js.map +1 -0
  52. package/package.json +6 -5
package/dist/index.js CHANGED
@@ -8,10 +8,13 @@
8
8
  * - Compose Key lifecycle (create / list / get / revoke, session metadata)
9
9
  * - 45k+ model catalog (list / listAll / search / get / getParams)
10
10
  * - OpenAI-shaped inference (chat.completions, responses, embeddings, images,
11
- * audio.speech, audio.transcriptions, videos) with full SSE streaming and
12
- * typed tool-call deltas + reasoning deltas.
11
+ * audio.speech, audio.transcriptions, videos) with full SSE streaming,
12
+ * typed tool-call deltas and reasoning deltas, typed cost receipts, and
13
+ * live session-budget updates emitted on every response.
13
14
  * - x402 facilitator access (supported / chains / verify / settle) and typed
14
15
  * decoders for PAYMENT-REQUIRED, PAYMENT-RESPONSE, X-Compose-Receipt.
16
+ * - SSE session events (`sdk.session.events`) for budget depletion and
17
+ * expiry notifications, dispatched on the typed event bus as well.
15
18
  * - Webhook signature verification (HMAC-SHA256, Stripe-style header).
16
19
  *
17
20
  * Design:
@@ -24,8 +27,11 @@
24
27
  * via the `x-session-user-address` header. The Compose Key JWT returned by
25
28
  * `keys.create(...)` is the real cryptographic identity from that point on.
26
29
  * - Every billable call returns a `ComposeCompletion<T>` carrying the parsed
27
- * body, the settlement receipt (if any), the request id, and the raw
30
+ * body, the settlement receipt (if any), the request id, the live session
31
+ * budget snapshot, the session-invalid reason (if any), and the raw
28
32
  * Response so integrators can read non-standard headers without parsing.
33
+ * - Persisted session tokens survive page reloads when a storage adapter is
34
+ * provided (browser `localStorage` is auto-detected).
29
35
  */
30
36
  import { HttpClient } from "./http.js";
31
37
  import { KeysResource } from "./resources/keys.js";
@@ -33,12 +39,20 @@ import { ModelsResource } from "./resources/models.js";
33
39
  import { InferenceResource } from "./resources/inference.js";
34
40
  import { X402Resource } from "./resources/x402.js";
35
41
  import { WebhooksResource } from "./resources/webhooks.js";
42
+ import { SessionEventsResource } from "./resources/session-events.js";
43
+ import { AgentResource } from "./resources/agent.js";
44
+ import { WorkflowResource } from "./resources/workflow.js";
45
+ import { instrumentBillableResponse } from "./resources/instrumentation.js";
36
46
  import { BadRequestError } from "./errors.js";
47
+ import { createEventBus } from "./events.js";
48
+ import { resolveStorage, createMemoryStorage, buildTokenStorageKey, DEFAULT_TOKEN_SCOPE, } from "./storage.js";
49
+ import { SDK_VERSION } from "./version.js";
37
50
  export * from "./types/index.js";
38
51
  export * from "./errors.js";
39
52
  export { decodeReceiptHeader, extractReceiptFromResponse, parseReceiptEvent } from "./streaming/receipt.js";
40
53
  export { parseSSEStream } from "./streaming/sse.js";
41
- export const SDK_VERSION = "1.0.0";
54
+ export { extractSessionBudgetFromResponse } from "./streaming/budget.js";
55
+ export { createMemoryStorage } from "./storage.js";
42
56
  const DEFAULT_RETRY = {
43
57
  maxRetries: 2,
44
58
  initialDelayMs: 500,
@@ -48,7 +62,24 @@ const DEFAULT_RETRY = {
48
62
  function normalizeBaseUrl(value) {
49
63
  return (value || "https://api.compose.market").replace(/\/+$/, "");
50
64
  }
51
- function normalizeWalletAddress(value) {
65
+ function deriveRuntimeBaseUrl(explicit, baseUrl) {
66
+ if (explicit)
67
+ return explicit.replace(/\/+$/, "");
68
+ // Default: swap `api.` prefix for `runtime.` when the baseUrl is the
69
+ // canonical Compose Market host; otherwise use the same host.
70
+ try {
71
+ const parsed = new URL(baseUrl);
72
+ if (parsed.hostname.startsWith("api.")) {
73
+ parsed.hostname = "runtime." + parsed.hostname.slice(4);
74
+ return parsed.origin.replace(/\/+$/, "");
75
+ }
76
+ return baseUrl.replace(/\/+$/, "");
77
+ }
78
+ catch {
79
+ return "https://runtime.compose.market";
80
+ }
81
+ }
82
+ function normalizeUserAddress(value) {
52
83
  const trimmed = value.trim().toLowerCase();
53
84
  if (!/^0x[a-f0-9]{40}$/.test(trimmed)) {
54
85
  throw new BadRequestError({ message: "userAddress must be a valid 0x-prefixed EVM address" });
@@ -64,26 +95,68 @@ function normalizeChainId(value) {
64
95
  return value;
65
96
  }
66
97
  export class ComposeSDK {
98
+ /** The SDK version, sourced from package.json at build time. */
99
+ version = SDK_VERSION;
100
+ /** Resolved API base URL, trimmed of trailing slashes. */
101
+ baseUrl;
102
+ /** Resolved runtime service base URL, trimmed of trailing slashes. */
103
+ runtimeBaseUrl;
67
104
  keys;
68
105
  models;
69
106
  inference;
70
107
  x402;
71
108
  webhooks;
109
+ session;
110
+ agent;
111
+ workflow;
72
112
  wallets;
113
+ /**
114
+ * Typed, in-memory event bus. Listeners registered here receive:
115
+ * - `budget` — live `x-session-budget-*` snapshot on every billable call.
116
+ * - `sessionInvalid` — `x-compose-session-invalid` header set by the server.
117
+ * - `sessionActive` — SSE `session-active` heartbeat from `/api/session/events`.
118
+ * - `sessionExpired` — SSE `session-expired` frame from `/api/session/events`.
119
+ * - `receipt` — settlement receipt on every billable response / stream.
120
+ */
121
+ events;
73
122
  http;
74
- walletAddress;
123
+ storage;
124
+ tokenScope;
125
+ userAddress;
75
126
  chainId;
76
127
  composeKey;
128
+ rawFetch;
129
+ userAgent;
77
130
  constructor(options = {}) {
78
- this.walletAddress = options.userAddress ? normalizeWalletAddress(options.userAddress) : null;
131
+ this.userAddress = options.userAddress ? normalizeUserAddress(options.userAddress) : null;
79
132
  this.chainId = normalizeChainId(options.chainId);
80
- this.composeKey = options.composeKey ?? null;
133
+ this.baseUrl = normalizeBaseUrl(options.baseUrl);
134
+ this.runtimeBaseUrl = deriveRuntimeBaseUrl(options.runtimeBaseUrl, this.baseUrl);
135
+ this.tokenScope = options.tokenScope ?? DEFAULT_TOKEN_SCOPE;
136
+ this.storage = resolveStorage(options.storage) ?? createMemoryStorage();
137
+ this.events = createEventBus({ logger: options.logger });
138
+ // Seed `composeKey` in this priority:
139
+ // 1. explicit constructor option
140
+ // 2. persistent storage scoped to (address, chainId) if both known
141
+ // 3. null
142
+ if (options.composeKey) {
143
+ this.composeKey = options.composeKey;
144
+ this.persistToken(options.composeKey);
145
+ }
146
+ else if (this.userAddress && this.chainId !== null) {
147
+ this.composeKey = this.storage.getItem(buildTokenStorageKey(this.tokenScope, this.userAddress, this.chainId));
148
+ }
149
+ else {
150
+ this.composeKey = null;
151
+ }
81
152
  const userAgent = options.userAgent
82
153
  ? `@compose-market/sdk/${SDK_VERSION} ${options.userAgent}`
83
154
  : `@compose-market/sdk/${SDK_VERSION}`;
155
+ this.rawFetch = options.fetch ?? globalThis.fetch.bind(globalThis);
156
+ this.userAgent = userAgent;
84
157
  this.http = new HttpClient({
85
- baseUrl: normalizeBaseUrl(options.baseUrl),
86
- fetch: options.fetch ?? globalThis.fetch.bind(globalThis),
158
+ baseUrl: this.baseUrl,
159
+ fetch: this.rawFetch,
87
160
  timeoutMs: options.timeoutMs ?? 60_000,
88
161
  defaultHeaders: { ...(options.defaultHeaders ?? {}) },
89
162
  retry: { ...DEFAULT_RETRY, ...(options.retry ?? {}) },
@@ -92,17 +165,22 @@ export class ComposeSDK {
92
165
  });
93
166
  this.wallets = {
94
167
  attach: (input) => {
95
- this.walletAddress = normalizeWalletAddress(input.address);
168
+ this.userAddress = normalizeUserAddress(input.address);
96
169
  this.chainId = normalizeChainId(input.chainId);
170
+ // Re-hydrate persisted token for the freshly-attached wallet.
171
+ const stored = this.storage.getItem(buildTokenStorageKey(this.tokenScope, this.userAddress, this.chainId));
172
+ if (stored)
173
+ this.composeKey = stored;
97
174
  },
98
- current: () => ({ address: this.walletAddress, chainId: this.chainId }),
175
+ current: () => ({ address: this.userAddress, chainId: this.chainId }),
99
176
  clear: () => {
100
- this.walletAddress = null;
177
+ this.userAddress = null;
101
178
  this.chainId = null;
179
+ this.composeKey = null;
102
180
  },
103
181
  };
104
182
  const getWallet = () => {
105
- if (!this.walletAddress) {
183
+ if (!this.userAddress) {
106
184
  throw new BadRequestError({
107
185
  message: "Wallet context is required. Call sdk.wallets.attach({ address, chainId }) first, or pass userAddress + chainId to the constructor.",
108
186
  });
@@ -112,26 +190,185 @@ export class ComposeSDK {
112
190
  message: "chainId is required. Call sdk.wallets.attach(...) or pass chainId to the constructor.",
113
191
  });
114
192
  }
115
- return { address: this.walletAddress, chainId: this.chainId };
193
+ return { address: this.userAddress, chainId: this.chainId };
116
194
  };
117
195
  const getWalletMaybe = () => ({
118
- address: this.walletAddress,
196
+ address: this.userAddress,
119
197
  chainId: this.chainId,
120
198
  });
121
199
  this.keys = new KeysResource(this.http, {
122
200
  getWallet,
123
- setToken: (token) => { this.composeKey = token; },
201
+ getWalletMaybe,
202
+ setToken: (token) => {
203
+ this.composeKey = token;
204
+ this.persistToken(token);
205
+ },
124
206
  getToken: () => this.composeKey,
125
- clearToken: () => { this.composeKey = null; },
207
+ clearToken: () => {
208
+ this.composeKey = null;
209
+ this.deletePersistedToken();
210
+ },
126
211
  });
127
212
  this.models = new ModelsResource(this.http);
128
213
  this.inference = new InferenceResource(this.http, {
129
214
  getWalletMaybe,
130
215
  getTokenMaybe: () => this.composeKey,
216
+ events: this.events,
131
217
  });
132
218
  this.x402 = new X402Resource(this.http);
133
219
  this.webhooks = new WebhooksResource();
220
+ this.session = new SessionEventsNamespace(new SessionEventsResource(this.http, this.events), getWalletMaybe);
221
+ const agentWorkflowContext = {
222
+ runtimeBaseUrl: this.runtimeBaseUrl,
223
+ fetch: this.rawFetch,
224
+ getWalletMaybe,
225
+ getTokenMaybe: () => this.composeKey,
226
+ events: this.events,
227
+ userAgent,
228
+ };
229
+ this.agent = new AgentResource(agentWorkflowContext);
230
+ this.workflow = new WorkflowResource(agentWorkflowContext);
231
+ }
232
+ persistToken(token) {
233
+ if (!this.userAddress || this.chainId === null)
234
+ return;
235
+ this.storage.setItem(buildTokenStorageKey(this.tokenScope, this.userAddress, this.chainId), token);
236
+ }
237
+ deletePersistedToken() {
238
+ if (!this.userAddress || this.chainId === null)
239
+ return;
240
+ this.storage.removeItem(buildTokenStorageKey(this.tokenScope, this.userAddress, this.chainId));
134
241
  }
242
+ /**
243
+ * Drop-in `fetch` wrapper that attaches the canonical Compose header
244
+ * contract (`Authorization`, `x-session-user-address`, `x-chain-id`,
245
+ * `User-Agent`) on every request and emits `budget` / `sessionInvalid` /
246
+ * `receipt` events on every response via the SDK event bus.
247
+ *
248
+ * Use this when you need to hit a Compose endpoint that isn't covered
249
+ * by a typed resource yet (agent/workflow runtime endpoints, workspace
250
+ * indexing, custom api/ routes). The URL may be absolute or relative to
251
+ * the SDK's `baseUrl`.
252
+ *
253
+ * Non-Compose URLs (absolute URLs whose host differs from `baseUrl`) are
254
+ * still passed through so this method is safe as a general-purpose fetch
255
+ * replacement; the budget event extraction is a no-op when the response
256
+ * doesn't carry `x-session-budget-*` headers.
257
+ */
258
+ async fetch(input, init) {
259
+ const headers = new Headers(init?.headers);
260
+ if (!headers.has("User-Agent"))
261
+ headers.set("User-Agent", this.userAgent);
262
+ if (this.composeKey && !headers.has("Authorization")) {
263
+ headers.set("Authorization", `Bearer ${this.composeKey}`);
264
+ }
265
+ if (this.userAddress && !headers.has("x-session-user-address")) {
266
+ headers.set("x-session-user-address", this.userAddress);
267
+ }
268
+ if (this.chainId !== null && !headers.has("x-chain-id")) {
269
+ headers.set("x-chain-id", String(this.chainId));
270
+ }
271
+ // Support absolute URLs, relative paths, and Request objects alike.
272
+ let resolvedInput = input;
273
+ if (typeof input === "string") {
274
+ resolvedInput = input.startsWith("http://") || input.startsWith("https://")
275
+ ? input
276
+ : `${this.baseUrl}${input.startsWith("/") ? input : `/${input}`}`;
277
+ }
278
+ const response = await this.rawFetch(resolvedInput, { ...init, headers });
279
+ // Emit budget/receipt/invalid events when the response carries the
280
+ // relevant Compose headers. Pass `undefined` for the body since we
281
+ // haven't read it; receipt-from-body only fires when the caller later
282
+ // parses the JSON themselves. That's acceptable: header-based receipts
283
+ // are the authoritative path and they're present on every billable
284
+ // response.
285
+ instrumentBillableResponse({ getWalletMaybe: () => ({ address: this.userAddress, chainId: this.chainId }), getTokenMaybe: () => this.composeKey, events: this.events }, response, undefined);
286
+ return response;
287
+ }
288
+ }
289
+ /**
290
+ * Thin ergonomic wrapper around `SessionEventsResource` so callers write
291
+ * `sdk.session.events({ ... })` with wallet defaults inferred from the SDK
292
+ * instance.
293
+ */
294
+ class SessionEventsNamespace {
295
+ resource;
296
+ getWalletMaybe;
297
+ constructor(resource, getWalletMaybe) {
298
+ this.resource = resource;
299
+ this.getWalletMaybe = getWalletMaybe;
300
+ }
301
+ /**
302
+ * Subscribe to `/api/session/events`. Yields `SessionActiveEvent` and
303
+ * `SessionExpiredEvent` until the signal aborts or the server ends the
304
+ * stream. The same events are also emitted on `sdk.events`.
305
+ *
306
+ * When `userAddress` / `chainId` are omitted, the SDK's currently attached
307
+ * wallet context is used. Abort via an `AbortController.signal`.
308
+ */
309
+ subscribe(opts = {}) {
310
+ const wallet = this.getWalletMaybe();
311
+ const userAddress = opts.userAddress ?? wallet.address;
312
+ const chainId = opts.chainId ?? wallet.chainId;
313
+ if (!userAddress) {
314
+ throw new BadRequestError({
315
+ message: "session.subscribe() needs a userAddress (either in opts or via sdk.wallets.attach).",
316
+ });
317
+ }
318
+ if (chainId === null || chainId === undefined) {
319
+ throw new BadRequestError({
320
+ message: "session.subscribe() needs a chainId (either in opts or via sdk.wallets.attach).",
321
+ });
322
+ }
323
+ return this.resource.subscribe({
324
+ userAddress,
325
+ chainId,
326
+ signal: opts.signal,
327
+ reconnectMaxDelayMs: opts.reconnectMaxDelayMs,
328
+ });
329
+ }
330
+ /**
331
+ * Shortcut: register a listener on the `sessionActive` + `sessionExpired`
332
+ * events produced by a subscription. Returns a disposer that aborts the
333
+ * underlying stream AND removes the listeners.
334
+ */
335
+ on(handlers, opts = {}) {
336
+ const controller = new AbortController();
337
+ const signal = mergeAbortSignals(opts.signal, controller.signal);
338
+ const iterable = this.subscribe({ ...opts, signal });
339
+ const unsubActive = handlers.active
340
+ ? this.resource.events.on("sessionActive", handlers.active)
341
+ : () => { };
342
+ const unsubExpired = handlers.expired
343
+ ? this.resource.events.on("sessionExpired", handlers.expired)
344
+ : () => { };
345
+ // Drive the iterator in the background; if the caller never reads it
346
+ // explicitly, the events still flow through the event bus.
347
+ (async () => {
348
+ try {
349
+ for await (const _event of iterable) {
350
+ void _event;
351
+ }
352
+ }
353
+ catch { /* aborted / retries exhausted */ }
354
+ })();
355
+ return () => {
356
+ unsubActive();
357
+ unsubExpired();
358
+ controller.abort();
359
+ };
360
+ }
361
+ }
362
+ function mergeAbortSignals(a, b) {
363
+ if (!a)
364
+ return b;
365
+ const c = new AbortController();
366
+ const forward = () => c.abort();
367
+ if (a.aborted || b.aborted)
368
+ c.abort();
369
+ a.addEventListener("abort", forward, { once: true });
370
+ b.addEventListener("abort", forward, { once: true });
371
+ return c.signal;
135
372
  }
136
373
  export default ComposeSDK;
137
374
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Compose agent runtime stream resource.
3
+ *
4
+ * Subscribes to POST /agent/:wallet/stream on the Compose runtime service
5
+ * and yields typed `AgentRuntimeEvent` values. The runtime emits OpenAI-ish
6
+ * chat.completion.chunk frames for text deltas AND Compose-native frames
7
+ * (`thinking_start`, `thinking_end`, `tool_start`, `tool_end`, `done`,
8
+ * `error`). This resource normalises both into the single
9
+ * `AgentRuntimeEvent` union so callers iterate one loop.
10
+ *
11
+ * Integrates with:
12
+ * - `sdk.events.toolCallStart` / `toolCallEnd` — emitted whenever the
13
+ * runtime tool vocabulary fires, so UI strips can react uniformly
14
+ * regardless of whether the source is agent, workflow, or chat.
15
+ * - `sdk.events.agentStreamStart` / `agentStreamEnd` — lifecycle notifications.
16
+ * - `instrumentBillableResponse` — budget/receipt/sessionInvalid surfaced
17
+ * exactly as on every other billable SDK call.
18
+ */
19
+ import type { FetchLike } from "../http.js";
20
+ import type { ComposeEventBus } from "../events.js";
21
+ import type { AgentRuntimeEvent, AgentStreamCreateParams, AgentStreamFinalResult, SessionBudgetSnapshot, SessionInvalidReason } from "../types/index.js";
22
+ import { ComposeStreamIterator } from "./inference.js";
23
+ export interface AgentResourceContext {
24
+ runtimeBaseUrl: string;
25
+ fetch: FetchLike;
26
+ getWalletMaybe: () => {
27
+ address: string | null;
28
+ chainId: number | null;
29
+ };
30
+ getTokenMaybe: () => string | null;
31
+ events: ComposeEventBus;
32
+ userAgent: string;
33
+ }
34
+ export declare class AgentResource {
35
+ private readonly ctx;
36
+ constructor(ctx: AgentResourceContext);
37
+ stream(params: AgentStreamCreateParams, options?: {
38
+ signal?: AbortSignal;
39
+ timeoutMs?: number;
40
+ }): ComposeStreamIterator<AgentRuntimeEvent, AgentStreamFinalResult>;
41
+ }
42
+ export type { AgentStreamCreateParams, AgentStreamFinalResult, AgentRuntimeEvent, SessionBudgetSnapshot, SessionInvalidReason };
43
+ //# sourceMappingURL=agent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/resources/agent.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAI5C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,KAAK,EACR,iBAAiB,EACjB,uBAAuB,EACvB,sBAAsB,EAEtB,qBAAqB,EACrB,oBAAoB,EACvB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAEvD,MAAM,WAAW,oBAAoB;IACjC,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,SAAS,CAAC;IACjB,cAAc,EAAE,MAAM;QAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IACzE,aAAa,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IACnC,MAAM,EAAE,eAAe,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,aAAa;IACV,OAAO,CAAC,QAAQ,CAAC,GAAG;gBAAH,GAAG,EAAE,oBAAoB;IAEtD,MAAM,CACF,MAAM,EAAE,uBAAuB,EAC/B,OAAO,GAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAO,GAC3D,qBAAqB,CAAC,iBAAiB,EAAE,sBAAsB,CAAC;CAGtE;AAqRD,YAAY,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,CAAC"}