@tapez/core 0.0.0-alpha.2 → 0.0.0-alpha.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/dist/index.d.ts +389 -21
  2. package/dist/index.js +556 -30
  3. package/dist/index.js.map +1 -1
  4. package/package.json +6 -4
  5. package/dist/array.d.ts +0 -26
  6. package/dist/array.d.ts.map +0 -1
  7. package/dist/array.js +0 -30
  8. package/dist/array.js.map +0 -1
  9. package/dist/bind-helpers.d.ts +0 -36
  10. package/dist/bind-helpers.d.ts.map +0 -1
  11. package/dist/bind-helpers.js +0 -44
  12. package/dist/bind-helpers.js.map +0 -1
  13. package/dist/const.d.ts +0 -26
  14. package/dist/const.d.ts.map +0 -1
  15. package/dist/const.js +0 -43
  16. package/dist/const.js.map +0 -1
  17. package/dist/gpu-buffer-utils.d.ts +0 -40
  18. package/dist/gpu-buffer-utils.d.ts.map +0 -1
  19. package/dist/gpu-buffer-utils.js +0 -105
  20. package/dist/gpu-buffer-utils.js.map +0 -1
  21. package/dist/index.d.ts.map +0 -1
  22. package/dist/layout.d.ts +0 -36
  23. package/dist/layout.d.ts.map +0 -1
  24. package/dist/layout.js +0 -39
  25. package/dist/layout.js.map +0 -1
  26. package/dist/matrix.d.ts +0 -20
  27. package/dist/matrix.d.ts.map +0 -1
  28. package/dist/matrix.js +0 -25
  29. package/dist/matrix.js.map +0 -1
  30. package/dist/schemas.d.ts +0 -61
  31. package/dist/schemas.d.ts.map +0 -1
  32. package/dist/schemas.js +0 -85
  33. package/dist/schemas.js.map +0 -1
  34. package/dist/struct.d.ts +0 -47
  35. package/dist/struct.d.ts.map +0 -1
  36. package/dist/struct.js +0 -81
  37. package/dist/struct.js.map +0 -1
  38. package/dist/typed-buffer.d.ts +0 -117
  39. package/dist/typed-buffer.d.ts.map +0 -1
  40. package/dist/typed-buffer.js +0 -273
  41. package/dist/typed-buffer.js.map +0 -1
  42. package/dist/types.d.ts +0 -33
  43. package/dist/types.d.ts.map +0 -1
  44. package/dist/types.js +0 -23
  45. package/dist/types.js.map +0 -1
  46. package/dist/vectors.d.ts +0 -26
  47. package/dist/vectors.d.ts.map +0 -1
  48. package/dist/vectors.js +0 -44
  49. package/dist/vectors.js.map +0 -1
@@ -1,273 +0,0 @@
1
- /**
2
- * TypedBuffer — GPU buffer backed by a tapez type.
3
- *
4
- * Accepts any TapezType: scalars, vectors, arrays, structs.
5
- * For structs, provides named field setters/getters with dirty tracking.
6
- * For all types, provides the raw GPUBuffer, typed array views, and lifecycle.
7
- *
8
- * Usage:
9
- * // Struct — named setters
10
- * const config = TypedBuffer.createUniform(device, MyStruct, 'config')
11
- * config.set.midPrice(1.5)
12
- * config.writeIfDirty(queue)
13
- *
14
- * // Array — raw typed array access
15
- * const rows = TypedBuffer.createStorage(device, tapez.arrayOf(tapez.f32, 4096), 'rows')
16
- * rows.raw.f32.set(myData)
17
- * rows.write(queue)
18
- *
19
- * // Indirect draw
20
- * const indirect = TypedBuffer.createIndirect(device, IndirectDraw, 'indirect')
21
- */
22
- import { DirtyUniformBuffer } from './gpu-buffer-utils';
23
- // ---------------------------------------------------------------------------
24
- // TypedBuffer
25
- // ---------------------------------------------------------------------------
26
- export class TypedBuffer {
27
- /** The underlying DirtyUniformBuffer (provides typed array views: .f32, .u32, .i32) */
28
- raw;
29
- /** The tapez type this buffer was created from */
30
- type;
31
- /**
32
- * Named field setters. Only available for struct types.
33
- * For non-struct buffers this is an empty object.
34
- */
35
- set;
36
- /**
37
- * Named field getters. Only available for struct types.
38
- * For non-struct buffers this is an empty object.
39
- */
40
- get;
41
- constructor(raw, type) {
42
- this.raw = raw;
43
- this.type = type;
44
- if (type.kind === 'struct') {
45
- const struct = type;
46
- this.set = buildSetters(raw, struct);
47
- this.get = buildGetters(raw, struct);
48
- }
49
- else {
50
- this.set = {};
51
- this.get = {};
52
- }
53
- }
54
- /** The raw GPUBuffer — for texture/sampler bind group entries only */
55
- get buffer() {
56
- return this.raw.buffer;
57
- }
58
- /** Total byte size of the buffer */
59
- get byteSize() {
60
- return this.raw.byteSize;
61
- }
62
- /** Whether any values have changed since last write */
63
- get isDirty() {
64
- return this.raw.isDirty;
65
- }
66
- /** Force dirty state (for external invalidation) */
67
- markDirty() {
68
- this.raw.markDirty();
69
- }
70
- /** Upload to GPU only if dirty, then clear dirty flag */
71
- writeIfDirty(queue) {
72
- this.raw.writeIfDirty(queue);
73
- }
74
- /** Upload to GPU unconditionally */
75
- write(queue) {
76
- this.raw.write(queue);
77
- }
78
- /**
79
- * Bulk set multiple struct fields at once.
80
- * Only available for struct-typed buffers.
81
- */
82
- writeFields(values) {
83
- for (const key in values) {
84
- if (Object.prototype.hasOwnProperty.call(values, key)) {
85
- const setter = this.set[key];
86
- if (setter)
87
- setter(values[key]);
88
- }
89
- }
90
- }
91
- /** Destroy the underlying GPU buffer */
92
- destroy() {
93
- this.raw.destroy();
94
- }
95
- // ---------------------------------------------------------------------------
96
- // WebGPU API wrappers — so entity code never touches .buffer directly
97
- // ---------------------------------------------------------------------------
98
- /** Write raw data to this buffer via queue.writeBuffer */
99
- writeRaw(queue, data, bufferOffset = 0, dataOffset, size) {
100
- queue.writeBuffer(this.raw.buffer, bufferOffset, data, dataOffset, size);
101
- }
102
- /** Copy data from this buffer to another TypedBuffer */
103
- copyTo(encoder, dest, srcOffset = 0, dstOffset = 0, size) {
104
- encoder.copyBufferToBuffer(this.raw.buffer, srcOffset, dest.raw.buffer, dstOffset, size ?? this.raw.byteSize);
105
- }
106
- /** Copy data from another TypedBuffer into this buffer */
107
- copyFrom(encoder, src, srcOffset = 0, dstOffset = 0, size) {
108
- encoder.copyBufferToBuffer(src.raw.buffer, srcOffset, this.raw.buffer, dstOffset, size ?? src.raw.byteSize);
109
- }
110
- /** Use this buffer for drawIndirect */
111
- drawIndirect(pass, offset = 0) {
112
- pass.drawIndirect(this.raw.buffer, offset);
113
- }
114
- /** Use this buffer for dispatchWorkgroupsIndirect */
115
- dispatchIndirect(pass, offset = 0) {
116
- pass.dispatchWorkgroupsIndirect(this.raw.buffer, offset);
117
- }
118
- /** Map buffer for reading (for readback buffers). Returns the mapped ArrayBuffer. */
119
- async mapRead() {
120
- await this.raw.buffer.mapAsync(GPUMapMode.READ);
121
- return this.raw.buffer.getMappedRange();
122
- }
123
- /** Unmap a previously mapped buffer */
124
- unmap() {
125
- this.raw.buffer.unmap();
126
- }
127
- // ---------------------------------------------------------------------------
128
- // Factory methods
129
- // ---------------------------------------------------------------------------
130
- /** Create a buffer with explicit usage flags. Accepts any TapezType. */
131
- static create(device, type, label, usage) {
132
- const raw = new DirtyUniformBuffer(device, label, type.byteSize, usage | GPUBufferUsage.COPY_DST);
133
- return new TypedBuffer(raw, type);
134
- }
135
- /** Create a uniform buffer (UNIFORM | STORAGE | COPY_DST) */
136
- static createUniform(device, type, label) {
137
- return TypedBuffer.create(device, type, label, GPUBufferUsage.UNIFORM | GPUBufferUsage.STORAGE);
138
- }
139
- /** Create a storage buffer (STORAGE | COPY_DST). Pass extraFlags for COPY_SRC etc. */
140
- static createStorage(device, type, label, extraFlags = 0) {
141
- return TypedBuffer.create(device, type, label, GPUBufferUsage.STORAGE | extraFlags);
142
- }
143
- /** Create an indirect draw/dispatch buffer (INDIRECT | STORAGE | COPY_DST) */
144
- static createIndirect(device, type, label) {
145
- return TypedBuffer.create(device, type, label, GPUBufferUsage.INDIRECT | GPUBufferUsage.STORAGE);
146
- }
147
- /** Create a readback buffer (MAP_READ | COPY_DST). For GPU→CPU data transfer. */
148
- static createReadback(device, type, label) {
149
- return TypedBuffer.create(device, type, label, GPUBufferUsage.MAP_READ);
150
- }
151
- }
152
- // ---------------------------------------------------------------------------
153
- // Internal: build setter/getter objects from struct schema
154
- // ---------------------------------------------------------------------------
155
- function buildSetters(raw, schema) {
156
- const setters = {};
157
- for (const field of schema.layout.fields) {
158
- setters[field.name] = createSetter(raw, field);
159
- }
160
- return setters;
161
- }
162
- function buildGetters(raw, schema) {
163
- const getters = {};
164
- for (const field of schema.layout.fields) {
165
- getters[field.name] = createGetter(raw, field);
166
- }
167
- return getters;
168
- }
169
- function createSetter(raw, field) {
170
- const type = field.type;
171
- const byteOffset = field.offset;
172
- switch (type.kind) {
173
- case 'scalar':
174
- case 'atomic': {
175
- const index = byteOffset / 4;
176
- const arrayKind = type.kind === 'atomic'
177
- ? type.arrayKind
178
- : type.arrayKind;
179
- switch (arrayKind) {
180
- case 'f32':
181
- return (v) => raw.setF32(index, v);
182
- case 'u32':
183
- return (v) => raw.setU32(index, v);
184
- case 'i32':
185
- return (v) => raw.setI32(index, v);
186
- }
187
- break;
188
- }
189
- case 'vector': {
190
- const vec = type;
191
- const startIndex = byteOffset / 4;
192
- const count = vec.components;
193
- const arrayKind = vec.componentType.arrayKind;
194
- switch (arrayKind) {
195
- case 'f32':
196
- return (v) => {
197
- const arr = v;
198
- for (let i = 0; i < count; i++)
199
- raw.setF32(startIndex + i, arr[i]);
200
- };
201
- case 'u32':
202
- return (v) => {
203
- const arr = v;
204
- for (let i = 0; i < count; i++)
205
- raw.setU32(startIndex + i, arr[i]);
206
- };
207
- case 'i32':
208
- return (v) => {
209
- const arr = v;
210
- for (let i = 0; i < count; i++)
211
- raw.setI32(startIndex + i, arr[i]);
212
- };
213
- }
214
- break;
215
- }
216
- case 'matrix': {
217
- const startIndex = byteOffset / 4;
218
- const floatCount = type.byteSize / 4;
219
- return (v) => {
220
- const arr = v;
221
- for (let i = 0; i < floatCount; i++)
222
- raw.setF32(startIndex + i, arr[i]);
223
- };
224
- }
225
- default:
226
- return () => { };
227
- }
228
- }
229
- function createGetter(raw, field) {
230
- const type = field.type;
231
- const byteOffset = field.offset;
232
- switch (type.kind) {
233
- case 'scalar':
234
- case 'atomic': {
235
- const index = byteOffset / 4;
236
- const arrayKind = type.kind === 'atomic'
237
- ? type.arrayKind
238
- : type.arrayKind;
239
- switch (arrayKind) {
240
- case 'f32':
241
- return () => raw.f32[index];
242
- case 'u32':
243
- return () => raw.u32[index];
244
- case 'i32':
245
- return () => raw.i32[index];
246
- }
247
- break;
248
- }
249
- case 'vector': {
250
- const vec = type;
251
- const startIndex = byteOffset / 4;
252
- const count = vec.components;
253
- const arrayKind = vec.componentType.arrayKind;
254
- switch (arrayKind) {
255
- case 'f32':
256
- return () => Array.from(raw.f32.subarray(startIndex, startIndex + count));
257
- case 'u32':
258
- return () => Array.from(raw.u32.subarray(startIndex, startIndex + count));
259
- case 'i32':
260
- return () => Array.from(raw.i32.subarray(startIndex, startIndex + count));
261
- }
262
- break;
263
- }
264
- case 'matrix': {
265
- const startIndex = byteOffset / 4;
266
- const floatCount = type.byteSize / 4;
267
- return () => Array.from(raw.f32.subarray(startIndex, startIndex + floatCount));
268
- }
269
- default:
270
- return () => undefined;
271
- }
272
- }
273
- //# sourceMappingURL=typed-buffer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"typed-buffer.js","sourceRoot":"","sources":["../src/typed-buffer.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts DELETED
@@ -1,33 +0,0 @@
1
- /**
2
- * TapeZ type system — GPU data type definitions.
3
- *
4
- * Each type carries its WGSL name, byte size, and alignment
5
- * following the WGSL specification for host-shareable types.
6
- */
7
- export interface TapezType {
8
- /** Unique tag for runtime discrimination */
9
- readonly kind: string;
10
- /** WGSL type name, e.g. 'f32', 'vec4<f32>' */
11
- readonly wgslType: string;
12
- /** Byte size of this type in a buffer */
13
- readonly byteSize: number;
14
- /** Required alignment in bytes (WGSL spec) */
15
- readonly alignment: number;
16
- }
17
- export interface TapezScalar extends TapezType {
18
- readonly kind: 'scalar';
19
- /** Which typed array setter to use */
20
- readonly arrayKind: 'f32' | 'u32' | 'i32';
21
- }
22
- export declare const f32: TapezScalar;
23
- export declare const u32: TapezScalar;
24
- export declare const i32: TapezScalar;
25
- export interface TapezAtomic extends TapezType {
26
- readonly kind: 'atomic';
27
- /** The wrapped scalar type */
28
- readonly inner: TapezScalar;
29
- /** Which typed array setter to use (same as inner) */
30
- readonly arrayKind: 'f32' | 'u32' | 'i32';
31
- }
32
- export declare function atomic(inner: TapezScalar): TapezAtomic;
33
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,MAAM,WAAW,SAAS;IACxB,4CAA4C;IAC5C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,8CAA8C;IAC9C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,yCAAyC;IACzC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,8CAA8C;IAC9C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAC3B;AAMD,MAAM,WAAW,WAAY,SAAQ,SAAS;IAC5C,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAA;IACvB,sCAAsC;IACtC,QAAQ,CAAC,SAAS,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,CAAA;CAC1C;AAMD,eAAO,MAAM,GAAG,EAAE,WAAkC,CAAA;AACpD,eAAO,MAAM,GAAG,EAAE,WAAkC,CAAA;AACpD,eAAO,MAAM,GAAG,EAAE,WAAkC,CAAA;AAMpD,MAAM,WAAW,WAAY,SAAQ,SAAS;IAC5C,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAA;IACvB,8BAA8B;IAC9B,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAA;IAC3B,sDAAsD;IACtD,QAAQ,CAAC,SAAS,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,CAAA;CAC1C;AAED,wBAAgB,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,WAAW,CAStD"}
package/dist/types.js DELETED
@@ -1,23 +0,0 @@
1
- /**
2
- * TapeZ type system — GPU data type definitions.
3
- *
4
- * Each type carries its WGSL name, byte size, and alignment
5
- * following the WGSL specification for host-shareable types.
6
- */
7
- function scalar(wgslType, arrayKind) {
8
- return Object.freeze({ kind: 'scalar', wgslType, byteSize: 4, alignment: 4, arrayKind });
9
- }
10
- export const f32 = scalar('f32', 'f32');
11
- export const u32 = scalar('u32', 'u32');
12
- export const i32 = scalar('i32', 'i32');
13
- export function atomic(inner) {
14
- return Object.freeze({
15
- kind: 'atomic',
16
- wgslType: `atomic<${inner.wgslType}>`,
17
- byteSize: inner.byteSize,
18
- alignment: inner.alignment,
19
- inner,
20
- arrayKind: inner.arrayKind,
21
- });
22
- }
23
- //# sourceMappingURL=types.js.map
package/dist/types.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA2BH,SAAS,MAAM,CAAC,QAAgB,EAAE,SAAmC;IACnE,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,CAAA;AAC1F,CAAC;AAED,MAAM,CAAC,MAAM,GAAG,GAAgB,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;AACpD,MAAM,CAAC,MAAM,GAAG,GAAgB,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;AACpD,MAAM,CAAC,MAAM,GAAG,GAAgB,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;AAcpD,MAAM,UAAU,MAAM,CAAC,KAAkB;IACvC,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,UAAU,KAAK,CAAC,QAAQ,GAAG;QACrC,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,KAAK;QACL,SAAS,EAAE,KAAK,CAAC,SAAS;KAC3B,CAAC,CAAA;AACJ,CAAC"}
package/dist/vectors.d.ts DELETED
@@ -1,26 +0,0 @@
1
- /**
2
- * TapeZ vector types — vec2, vec3, vec4 for f32/u32/i32.
3
- *
4
- * WGSL alignment rules:
5
- * vec2<T> → size 8, align 8
6
- * vec3<T> → size 12, align 16
7
- * vec4<T> → size 16, align 16
8
- */
9
- import type { TapezScalar, TapezType } from './types';
10
- export interface TapezVector extends TapezType {
11
- readonly kind: 'vector';
12
- /** Number of components (2, 3, or 4) */
13
- readonly components: number;
14
- /** Component scalar type */
15
- readonly componentType: TapezScalar;
16
- }
17
- export declare const vec2f: TapezVector;
18
- export declare const vec3f: TapezVector;
19
- export declare const vec4f: TapezVector;
20
- export declare const vec2u: TapezVector;
21
- export declare const vec3u: TapezVector;
22
- export declare const vec4u: TapezVector;
23
- export declare const vec2i: TapezVector;
24
- export declare const vec3i: TapezVector;
25
- export declare const vec4i: TapezVector;
26
- //# sourceMappingURL=vectors.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"vectors.d.ts","sourceRoot":"","sources":["../src/vectors.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAOrD,MAAM,WAAW,WAAY,SAAQ,SAAS;IAC5C,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAA;IACvB,wCAAwC;IACxC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,4BAA4B;IAC5B,QAAQ,CAAC,aAAa,EAAE,WAAW,CAAA;CACpC;AA4BD,eAAO,MAAM,KAAK,EAAE,WAAyB,CAAA;AAC7C,eAAO,MAAM,KAAK,EAAE,WAAyB,CAAA;AAC7C,eAAO,MAAM,KAAK,EAAE,WAAyB,CAAA;AAG7C,eAAO,MAAM,KAAK,EAAE,WAAyB,CAAA;AAC7C,eAAO,MAAM,KAAK,EAAE,WAAyB,CAAA;AAC7C,eAAO,MAAM,KAAK,EAAE,WAAyB,CAAA;AAG7C,eAAO,MAAM,KAAK,EAAE,WAAyB,CAAA;AAC7C,eAAO,MAAM,KAAK,EAAE,WAAyB,CAAA;AAC7C,eAAO,MAAM,KAAK,EAAE,WAAyB,CAAA"}
package/dist/vectors.js DELETED
@@ -1,44 +0,0 @@
1
- /**
2
- * TapeZ vector types — vec2, vec3, vec4 for f32/u32/i32.
3
- *
4
- * WGSL alignment rules:
5
- * vec2<T> → size 8, align 8
6
- * vec3<T> → size 12, align 16
7
- * vec4<T> → size 16, align 16
8
- */
9
- import { f32, u32, i32 } from './types';
10
- function vec(components, componentType) {
11
- const suffix = componentType.wgslType[0]; // 'f', 'u', 'i'
12
- const wgslType = `vec${components}<${componentType.wgslType}>`;
13
- // WGSL alignment rules
14
- let byteSize;
15
- let alignment;
16
- switch (components) {
17
- case 2:
18
- byteSize = 8;
19
- alignment = 8;
20
- break;
21
- case 3:
22
- byteSize = 12;
23
- alignment = 16;
24
- break;
25
- case 4:
26
- byteSize = 16;
27
- alignment = 16;
28
- break;
29
- }
30
- return Object.freeze({ kind: 'vector', wgslType, byteSize, alignment, components, componentType });
31
- }
32
- // Float vectors
33
- export const vec2f = vec(2, f32);
34
- export const vec3f = vec(3, f32);
35
- export const vec4f = vec(4, f32);
36
- // Unsigned int vectors
37
- export const vec2u = vec(2, u32);
38
- export const vec3u = vec(3, u32);
39
- export const vec4u = vec(4, u32);
40
- // Signed int vectors
41
- export const vec2i = vec(2, i32);
42
- export const vec3i = vec(3, i32);
43
- export const vec4i = vec(4, i32);
44
- //# sourceMappingURL=vectors.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"vectors.js","sourceRoot":"","sources":["../src/vectors.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,SAAS,CAAA;AAcvC,SAAS,GAAG,CAAC,UAAqB,EAAE,aAA0B;IAC5D,MAAM,MAAM,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA,CAAC,gBAAgB;IACzD,MAAM,QAAQ,GAAG,MAAM,UAAU,IAAI,aAAa,CAAC,QAAQ,GAAG,CAAA;IAE9D,uBAAuB;IACvB,IAAI,QAAgB,CAAA;IACpB,IAAI,SAAiB,CAAA;IACrB,QAAQ,UAAU,EAAE,CAAC;QACnB,KAAK,CAAC;YACJ,QAAQ,GAAG,CAAC,CAAA;YACZ,SAAS,GAAG,CAAC,CAAA;YACb,MAAK;QACP,KAAK,CAAC;YACJ,QAAQ,GAAG,EAAE,CAAA;YACb,SAAS,GAAG,EAAE,CAAA;YACd,MAAK;QACP,KAAK,CAAC;YACJ,QAAQ,GAAG,EAAE,CAAA;YACb,SAAS,GAAG,EAAE,CAAA;YACd,MAAK;IACT,CAAC;IAED,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,CAAC,CAAA;AACpG,CAAC;AAED,gBAAgB;AAChB,MAAM,CAAC,MAAM,KAAK,GAAgB,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;AAC7C,MAAM,CAAC,MAAM,KAAK,GAAgB,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;AAC7C,MAAM,CAAC,MAAM,KAAK,GAAgB,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;AAE7C,uBAAuB;AACvB,MAAM,CAAC,MAAM,KAAK,GAAgB,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;AAC7C,MAAM,CAAC,MAAM,KAAK,GAAgB,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;AAC7C,MAAM,CAAC,MAAM,KAAK,GAAgB,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;AAE7C,qBAAqB;AACrB,MAAM,CAAC,MAAM,KAAK,GAAgB,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;AAC7C,MAAM,CAAC,MAAM,KAAK,GAAgB,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;AAC7C,MAAM,CAAC,MAAM,KAAK,GAAgB,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA"}