@compose-market/sdk 0.1.1 → 0.3.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 (74) hide show
  1. package/CHANGELOG.md +64 -0
  2. package/LICENSE +21 -0
  3. package/README.md +158 -35
  4. package/dist/errors.d.ts +145 -0
  5. package/dist/errors.d.ts.map +1 -0
  6. package/dist/errors.js +152 -0
  7. package/dist/errors.js.map +1 -0
  8. package/dist/events.d.ts +75 -0
  9. package/dist/events.d.ts.map +1 -0
  10. package/dist/events.js +68 -0
  11. package/dist/events.js.map +1 -0
  12. package/dist/http.d.ts +98 -0
  13. package/dist/http.d.ts.map +1 -0
  14. package/dist/http.js +350 -0
  15. package/dist/http.js.map +1 -0
  16. package/dist/index.d.ts +206 -0
  17. package/dist/index.d.ts.map +1 -0
  18. package/dist/index.js +340 -0
  19. package/dist/index.js.map +1 -0
  20. package/dist/resources/inference.d.ts +175 -0
  21. package/dist/resources/inference.d.ts.map +1 -0
  22. package/dist/resources/inference.js +740 -0
  23. package/dist/resources/inference.js.map +1 -0
  24. package/dist/resources/instrumentation.d.ts +28 -0
  25. package/dist/resources/instrumentation.d.ts.map +1 -0
  26. package/dist/resources/instrumentation.js +43 -0
  27. package/dist/resources/instrumentation.js.map +1 -0
  28. package/dist/resources/keys.d.ts +54 -0
  29. package/dist/resources/keys.d.ts.map +1 -0
  30. package/dist/resources/keys.js +164 -0
  31. package/dist/resources/keys.js.map +1 -0
  32. package/dist/resources/models.d.ts +26 -0
  33. package/dist/resources/models.d.ts.map +1 -0
  34. package/dist/resources/models.js +52 -0
  35. package/dist/resources/models.js.map +1 -0
  36. package/dist/resources/session-events.d.ts +46 -0
  37. package/dist/resources/session-events.d.ts.map +1 -0
  38. package/dist/resources/session-events.js +199 -0
  39. package/dist/resources/session-events.js.map +1 -0
  40. package/dist/resources/webhooks.d.ts +27 -0
  41. package/dist/resources/webhooks.d.ts.map +1 -0
  42. package/dist/resources/webhooks.js +78 -0
  43. package/dist/resources/webhooks.js.map +1 -0
  44. package/dist/resources/x402.d.ts +37 -0
  45. package/dist/resources/x402.d.ts.map +1 -0
  46. package/dist/resources/x402.js +72 -0
  47. package/dist/resources/x402.js.map +1 -0
  48. package/dist/storage.d.ts +27 -0
  49. package/dist/storage.d.ts.map +1 -0
  50. package/dist/storage.js +46 -0
  51. package/dist/storage.js.map +1 -0
  52. package/dist/streaming/budget.d.ts +22 -0
  53. package/dist/streaming/budget.d.ts.map +1 -0
  54. package/dist/streaming/budget.js +40 -0
  55. package/dist/streaming/budget.js.map +1 -0
  56. package/dist/streaming/receipt.d.ts +25 -0
  57. package/dist/streaming/receipt.d.ts.map +1 -0
  58. package/dist/streaming/receipt.js +92 -0
  59. package/dist/streaming/receipt.js.map +1 -0
  60. package/dist/streaming/sse.d.ts +29 -0
  61. package/dist/streaming/sse.d.ts.map +1 -0
  62. package/dist/streaming/sse.js +125 -0
  63. package/dist/streaming/sse.js.map +1 -0
  64. package/dist/types/index.d.ts +540 -0
  65. package/dist/types/index.d.ts.map +1 -0
  66. package/dist/types/index.js +10 -0
  67. package/dist/types/index.js.map +1 -0
  68. package/dist/version.d.ts +9 -0
  69. package/dist/version.d.ts.map +1 -0
  70. package/dist/version.js +9 -0
  71. package/dist/version.js.map +1 -0
  72. package/package.json +32 -21
  73. package/index.d.ts +0 -244
  74. package/index.js +0 -397
@@ -0,0 +1,175 @@
1
+ import type { HttpClient } from "../http.js";
2
+ import type { AudioSpeechCreateParams, AudioTranscriptionCreateParams, AudioTranscriptionResponse, ChatCompletion, ChatCompletionChunk, ChatCompletionsCreateParams, ComposeReceipt, EmbeddingsCreateParams, EmbeddingsResponse, ImagesGenerateParams, ImagesResponse, ResponseObject, ResponseStreamEvent, ResponsesCreateParams, SessionBudgetSnapshot, SessionInvalidReason, VideoGenerateParams, VideoJobStatus, VideoStatusStreamEvent } from "../types/index.js";
3
+ import { type InferenceContext } from "./instrumentation.js";
4
+ export type { InferenceContext } from "./instrumentation.js";
5
+ export interface ComposeCallOptions {
6
+ signal?: AbortSignal;
7
+ timeoutMs?: number;
8
+ idempotencyKey?: string;
9
+ composeRunId?: string;
10
+ x402MaxAmountWei?: string;
11
+ paymentSignature?: string;
12
+ /** Override the Compose Key for this call. Passing `null` forces the raw x402 path. */
13
+ composeKey?: string | null;
14
+ /** Override the end-user wallet address for this call. */
15
+ userAddress?: string;
16
+ /** Override the chain id for this call. */
17
+ chainId?: number;
18
+ }
19
+ /**
20
+ * Typed wrapper returned by every billable, non-streaming inference call.
21
+ *
22
+ * `data` — the parsed JSON body.
23
+ * `receipt` — the settlement receipt decoded from `X-Compose-Receipt`
24
+ * (or mirrored from the `compose_receipt` body field).
25
+ * `requestId` — the server-issued `X-Request-Id` for tracing.
26
+ * `response` — the raw `Response` (still-readable if the caller asked
27
+ * for `.asResponse()` directly; consumed here).
28
+ * `budget` — live `x-session-budget-*` snapshot parsed from
29
+ * response headers, or `null` if the endpoint did not
30
+ * emit budget headers.
31
+ * `sessionInvalidReason` — truthy `x-compose-session-invalid` value when the
32
+ * session must be torn down as a side effect of this
33
+ * call (budget depleted, revoked, etc).
34
+ */
35
+ export interface ComposeCompletion<T> {
36
+ data: T;
37
+ receipt: ComposeReceipt | null;
38
+ requestId: string | null;
39
+ response: Response;
40
+ budget: SessionBudgetSnapshot | null;
41
+ sessionInvalidReason: SessionInvalidReason | null;
42
+ }
43
+ export interface ChatCompletionFinalResult {
44
+ chatCompletion: ChatCompletion;
45
+ receipt: ComposeReceipt | null;
46
+ requestId: string | null;
47
+ budget: SessionBudgetSnapshot | null;
48
+ sessionInvalidReason: SessionInvalidReason | null;
49
+ }
50
+ export interface ResponsesStreamFinalResult {
51
+ response: ResponseObject | null;
52
+ receipt: ComposeReceipt | null;
53
+ requestId: string | null;
54
+ budget: SessionBudgetSnapshot | null;
55
+ sessionInvalidReason: SessionInvalidReason | null;
56
+ }
57
+ /**
58
+ * Async iterable returned by `inference.chat.completions.stream(...)` and
59
+ * `inference.responses.stream(...)`. Exposes `.final()` for consumers that
60
+ * want the reassembled final object + receipt without iterating manually.
61
+ *
62
+ * `for await (const chunk of stream) { ... }` consumes chunks; the generator's
63
+ * return value is captured internally so a subsequent `await stream.final()`
64
+ * resolves to the typed final object even when the caller drove iteration.
65
+ */
66
+ export declare class ComposeStreamIterator<Chunk, Final> implements AsyncIterable<Chunk> {
67
+ private readonly iterator;
68
+ private finalResult;
69
+ private finalSettled;
70
+ private finalPromise;
71
+ constructor(iterator: AsyncGenerator<Chunk, Final, void>);
72
+ [Symbol.asyncIterator](): AsyncIterator<Chunk, void, void>;
73
+ final(): Promise<Final>;
74
+ }
75
+ declare class ChatCompletionsNamespace {
76
+ private readonly client;
77
+ private readonly ctx;
78
+ constructor(client: HttpClient, ctx: InferenceContext);
79
+ create(params: ChatCompletionsCreateParams, options?: ComposeCallOptions): Promise<ComposeCompletion<ChatCompletion>>;
80
+ stream(params: ChatCompletionsCreateParams, options?: ComposeCallOptions): ComposeStreamIterator<ChatCompletionChunk, ChatCompletionFinalResult>;
81
+ }
82
+ declare class ResponsesNamespace {
83
+ private readonly client;
84
+ private readonly ctx;
85
+ constructor(client: HttpClient, ctx: InferenceContext);
86
+ create(params: ResponsesCreateParams, options?: ComposeCallOptions): Promise<ComposeCompletion<ResponseObject>>;
87
+ stream(params: ResponsesCreateParams, options?: ComposeCallOptions): ComposeStreamIterator<ResponseStreamEvent, ResponsesStreamFinalResult>;
88
+ get(responseId: string, options?: ComposeCallOptions): Promise<ResponseObject>;
89
+ inputItems(responseId: string, options?: ComposeCallOptions): Promise<{
90
+ object: "list";
91
+ data: Record<string, unknown>[];
92
+ }>;
93
+ cancel(responseId: string, options?: ComposeCallOptions): Promise<ResponseObject>;
94
+ }
95
+ declare class EmbeddingsNamespace {
96
+ private readonly client;
97
+ private readonly ctx;
98
+ constructor(client: HttpClient, ctx: InferenceContext);
99
+ create(params: EmbeddingsCreateParams, options?: ComposeCallOptions): Promise<ComposeCompletion<EmbeddingsResponse>>;
100
+ }
101
+ declare class ImagesNamespace {
102
+ private readonly client;
103
+ private readonly ctx;
104
+ constructor(client: HttpClient, ctx: InferenceContext);
105
+ generate(params: ImagesGenerateParams, options?: ComposeCallOptions): Promise<ComposeCompletion<ImagesResponse>>;
106
+ edit(params: ImagesGenerateParams & {
107
+ image?: string;
108
+ }, options?: ComposeCallOptions): Promise<ComposeCompletion<ImagesResponse>>;
109
+ }
110
+ declare class AudioNamespace {
111
+ private readonly client;
112
+ private readonly ctx;
113
+ constructor(client: HttpClient, ctx: InferenceContext);
114
+ /**
115
+ * Text-to-speech. Returns the raw audio `Response` (stream the body via
116
+ * `response.body` or `await response.arrayBuffer()`), plus any receipt
117
+ * extracted from response headers, plus the live budget snapshot.
118
+ */
119
+ speech(params: AudioSpeechCreateParams, options?: ComposeCallOptions): Promise<{
120
+ response: Response;
121
+ receipt: ComposeReceipt | null;
122
+ requestId: string | null;
123
+ budget: SessionBudgetSnapshot | null;
124
+ sessionInvalidReason: SessionInvalidReason | null;
125
+ }>;
126
+ /**
127
+ * Speech-to-text. Supports both multipart/form-data (preferred, OpenAI-
128
+ * compatible) when `file` is a `Blob`/`File`/`Uint8Array`, and base64-in-
129
+ * JSON (Compose legacy) when `file` is a string.
130
+ */
131
+ transcriptions(params: AudioTranscriptionCreateParams, options?: ComposeCallOptions): Promise<ComposeCompletion<AudioTranscriptionResponse>>;
132
+ }
133
+ declare class VideosNamespace {
134
+ private readonly client;
135
+ private readonly ctx;
136
+ constructor(client: HttpClient, ctx: InferenceContext);
137
+ generate(params: VideoGenerateParams, options?: ComposeCallOptions): Promise<ComposeCompletion<{
138
+ job_id?: string;
139
+ id?: string;
140
+ } & Record<string, unknown>>>;
141
+ get(videoId: string, options?: ComposeCallOptions): Promise<VideoJobStatus>;
142
+ /**
143
+ * Server-driven polling via SSE. Subscribes to `/v1/videos/:id/stream`
144
+ * and yields each status update as it arrives, terminating on the
145
+ * `completed` or `failed` state.
146
+ */
147
+ stream(videoId: string, opts?: ComposeCallOptions & {
148
+ pollIntervalMs?: number;
149
+ timeoutMs?: number;
150
+ }): ComposeStreamIterator<VideoStatusStreamEvent, {
151
+ final: VideoJobStatus | null;
152
+ requestId: string | null;
153
+ }>;
154
+ /**
155
+ * Convenience helper: resolves once the video job hits a terminal state,
156
+ * driven by the server-side SSE poller. Aborts after `timeoutMs` elapses.
157
+ */
158
+ waitUntilDone(videoId: string, opts?: ComposeCallOptions & {
159
+ pollIntervalMs?: number;
160
+ timeoutMs?: number;
161
+ onStatus?: (status: VideoStatusStreamEvent) => void;
162
+ }): Promise<VideoJobStatus | null>;
163
+ }
164
+ export declare class InferenceResource {
165
+ readonly chat: {
166
+ completions: ChatCompletionsNamespace;
167
+ };
168
+ readonly responses: ResponsesNamespace;
169
+ readonly embeddings: EmbeddingsNamespace;
170
+ readonly images: ImagesNamespace;
171
+ readonly audio: AudioNamespace;
172
+ readonly videos: VideosNamespace;
173
+ constructor(client: HttpClient, ctx: InferenceContext);
174
+ }
175
+ //# sourceMappingURL=inference.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inference.d.ts","sourceRoot":"","sources":["../../src/resources/inference.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EACR,uBAAuB,EACvB,8BAA8B,EAC9B,0BAA0B,EAC1B,cAAc,EACd,mBAAmB,EACnB,2BAA2B,EAC3B,cAAc,EACd,sBAAsB,EACtB,kBAAkB,EAClB,oBAAoB,EACpB,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,qBAAqB,EACrB,qBAAqB,EACrB,oBAAoB,EACpB,mBAAmB,EACnB,cAAc,EACd,sBAAsB,EACzB,MAAM,mBAAmB,CAAC;AAI3B,OAAO,EAEH,KAAK,gBAAgB,EACxB,MAAM,sBAAsB,CAAC;AAE9B,YAAY,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAE7D,MAAM,WAAW,kBAAkB;IAC/B,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,uFAAuF;IACvF,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,0DAA0D;IAC1D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2CAA2C;IAC3C,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,iBAAiB,CAAC,CAAC;IAChC,IAAI,EAAE,CAAC,CAAC;IACR,OAAO,EAAE,cAAc,GAAG,IAAI,CAAC;IAC/B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,qBAAqB,GAAG,IAAI,CAAC;IACrC,oBAAoB,EAAE,oBAAoB,GAAG,IAAI,CAAC;CACrD;AAED,MAAM,WAAW,yBAAyB;IACtC,cAAc,EAAE,cAAc,CAAC;IAC/B,OAAO,EAAE,cAAc,GAAG,IAAI,CAAC;IAC/B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,MAAM,EAAE,qBAAqB,GAAG,IAAI,CAAC;IACrC,oBAAoB,EAAE,oBAAoB,GAAG,IAAI,CAAC;CACrD;AAED,MAAM,WAAW,0BAA0B;IACvC,QAAQ,EAAE,cAAc,GAAG,IAAI,CAAC;IAChC,OAAO,EAAE,cAAc,GAAG,IAAI,CAAC;IAC/B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,MAAM,EAAE,qBAAqB,GAAG,IAAI,CAAC;IACrC,oBAAoB,EAAE,oBAAoB,GAAG,IAAI,CAAC;CACrD;AA+FD;;;;;;;;GAQG;AACH,qBAAa,qBAAqB,CAAC,KAAK,EAAE,KAAK,CAAE,YAAW,aAAa,CAAC,KAAK,CAAC;IAC5E,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqC;IAC9D,OAAO,CAAC,WAAW,CAAsB;IACzC,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,YAAY,CAA+B;gBAEvC,QAAQ,EAAE,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC;IAIxD,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC;IAuBpD,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC;CAgBhC;AAMD,cAAM,wBAAwB;IAEtB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,GAAG;gBADH,MAAM,EAAE,UAAU,EAClB,GAAG,EAAE,gBAAgB;IAGpC,MAAM,CACR,MAAM,EAAE,2BAA2B,EACnC,OAAO,CAAC,EAAE,kBAAkB,GAC7B,OAAO,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;IAkB7C,MAAM,CACF,MAAM,EAAE,2BAA2B,EACnC,OAAO,CAAC,EAAE,kBAAkB,GAC7B,qBAAqB,CAAC,mBAAmB,EAAE,yBAAyB,CAAC;CAI3E;AAsJD,cAAM,kBAAkB;IAEhB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,GAAG;gBADH,MAAM,EAAE,UAAU,EAClB,GAAG,EAAE,gBAAgB;IAGpC,MAAM,CACR,MAAM,EAAE,qBAAqB,EAC7B,OAAO,CAAC,EAAE,kBAAkB,GAC7B,OAAO,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;IAiB7C,MAAM,CACF,MAAM,EAAE,qBAAqB,EAC7B,OAAO,CAAC,EAAE,kBAAkB,GAC7B,qBAAqB,CAAC,mBAAmB,EAAE,0BAA0B,CAAC;IAKnE,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,cAAc,CAAC;IAU9E,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;KAAE,CAAC;IAU1H,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,cAAc,CAAC;CAS1F;AAqGD,cAAM,mBAAmB;IAEjB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,GAAG;gBADH,MAAM,EAAE,UAAU,EAClB,GAAG,EAAE,gBAAgB;IAGpC,MAAM,CAAC,MAAM,EAAE,sBAAsB,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,CAAC;CAW7H;AAMD,cAAM,eAAe;IAEb,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,GAAG;gBADH,MAAM,EAAE,UAAU,EAClB,GAAG,EAAE,gBAAgB;IAGpC,QAAQ,CAAC,MAAM,EAAE,oBAAoB,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;IAYhH,IAAI,CAAC,MAAM,EAAE,oBAAoB,GAAG;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;CAW1I;AAMD,cAAM,cAAc;IAEZ,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,GAAG;gBADH,MAAM,EAAE,UAAU,EAClB,GAAG,EAAE,gBAAgB;IAG1C;;;;OAIG;IACG,MAAM,CAAC,MAAM,EAAE,uBAAuB,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC;QACjF,QAAQ,EAAE,QAAQ,CAAC;QACnB,OAAO,EAAE,cAAc,GAAG,IAAI,CAAC;QAC/B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;QACzB,MAAM,EAAE,qBAAqB,GAAG,IAAI,CAAC;QACrC,oBAAoB,EAAE,oBAAoB,GAAG,IAAI,CAAC;KACrD,CAAC;IAsBF;;;;OAIG;IACG,cAAc,CAAC,MAAM,EAAE,8BAA8B,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC,0BAA0B,CAAC,CAAC;CAiDrJ;AAMD,cAAM,eAAe;IAEb,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,GAAG;gBADH,MAAM,EAAE,UAAU,EAClB,GAAG,EAAE,gBAAgB;IAGpC,QAAQ,CAAC,MAAM,EAAE,mBAAmB,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAYjK,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,cAAc,CAAC;IAU3E;;;;OAIG;IACH,MAAM,CACF,OAAO,EAAE,MAAM,EACf,IAAI,GAAE,kBAAkB,GAAG;QAAE,cAAc,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAO,GAChF,qBAAqB,CAAC,sBAAsB,EAAE;QAAE,KAAK,EAAE,cAAc,GAAG,IAAI,CAAC;QAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IAK5G;;;OAGG;IACG,aAAa,CACf,OAAO,EAAE,MAAM,EACf,IAAI,GAAE,kBAAkB,GAAG;QACvB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,sBAAsB,KAAK,IAAI,CAAC;KAClD,GACP,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;CAQpC;AA6ED,qBAAa,iBAAiB;IAC1B,QAAQ,CAAC,IAAI,EAAE;QAAE,WAAW,EAAE,wBAAwB,CAAA;KAAE,CAAC;IACzD,QAAQ,CAAC,SAAS,EAAE,kBAAkB,CAAC;IACvC,QAAQ,CAAC,UAAU,EAAE,mBAAmB,CAAC;IACzC,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IACjC,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;gBAG7B,MAAM,EAAE,UAAU,EAClB,GAAG,EAAE,gBAAgB;CAS5B"}