@secure-exec/wasmvm 0.2.0-rc.1

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 (70) hide show
  1. package/LICENSE +191 -0
  2. package/dist/browser-driver.d.ts +68 -0
  3. package/dist/browser-driver.d.ts.map +1 -0
  4. package/dist/browser-driver.js +293 -0
  5. package/dist/browser-driver.js.map +1 -0
  6. package/dist/driver.d.ts +43 -0
  7. package/dist/driver.d.ts.map +1 -0
  8. package/dist/driver.js +1420 -0
  9. package/dist/driver.js.map +1 -0
  10. package/dist/fd-table.d.ts +67 -0
  11. package/dist/fd-table.d.ts.map +1 -0
  12. package/dist/fd-table.js +171 -0
  13. package/dist/fd-table.js.map +1 -0
  14. package/dist/index.d.ts +26 -0
  15. package/dist/index.d.ts.map +1 -0
  16. package/dist/index.js +19 -0
  17. package/dist/index.js.map +1 -0
  18. package/dist/kernel-worker.d.ts +14 -0
  19. package/dist/kernel-worker.d.ts.map +1 -0
  20. package/dist/kernel-worker.js +1205 -0
  21. package/dist/kernel-worker.js.map +1 -0
  22. package/dist/module-cache.d.ts +21 -0
  23. package/dist/module-cache.d.ts.map +1 -0
  24. package/dist/module-cache.js +51 -0
  25. package/dist/module-cache.js.map +1 -0
  26. package/dist/permission-check.d.ts +36 -0
  27. package/dist/permission-check.d.ts.map +1 -0
  28. package/dist/permission-check.js +84 -0
  29. package/dist/permission-check.js.map +1 -0
  30. package/dist/ring-buffer.d.ts +64 -0
  31. package/dist/ring-buffer.d.ts.map +1 -0
  32. package/dist/ring-buffer.js +160 -0
  33. package/dist/ring-buffer.js.map +1 -0
  34. package/dist/syscall-rpc.d.ts +95 -0
  35. package/dist/syscall-rpc.d.ts.map +1 -0
  36. package/dist/syscall-rpc.js +48 -0
  37. package/dist/syscall-rpc.js.map +1 -0
  38. package/dist/user.d.ts +58 -0
  39. package/dist/user.d.ts.map +1 -0
  40. package/dist/user.js +143 -0
  41. package/dist/user.js.map +1 -0
  42. package/dist/wasi-constants.d.ts +77 -0
  43. package/dist/wasi-constants.d.ts.map +1 -0
  44. package/dist/wasi-constants.js +122 -0
  45. package/dist/wasi-constants.js.map +1 -0
  46. package/dist/wasi-file-io.d.ts +50 -0
  47. package/dist/wasi-file-io.d.ts.map +1 -0
  48. package/dist/wasi-file-io.js +10 -0
  49. package/dist/wasi-file-io.js.map +1 -0
  50. package/dist/wasi-polyfill.d.ts +368 -0
  51. package/dist/wasi-polyfill.d.ts.map +1 -0
  52. package/dist/wasi-polyfill.js +1438 -0
  53. package/dist/wasi-polyfill.js.map +1 -0
  54. package/dist/wasi-process-io.d.ts +35 -0
  55. package/dist/wasi-process-io.d.ts.map +1 -0
  56. package/dist/wasi-process-io.js +11 -0
  57. package/dist/wasi-process-io.js.map +1 -0
  58. package/dist/wasi-types.d.ts +175 -0
  59. package/dist/wasi-types.d.ts.map +1 -0
  60. package/dist/wasi-types.js +68 -0
  61. package/dist/wasi-types.js.map +1 -0
  62. package/dist/wasm-magic.d.ts +12 -0
  63. package/dist/wasm-magic.d.ts.map +1 -0
  64. package/dist/wasm-magic.js +53 -0
  65. package/dist/wasm-magic.js.map +1 -0
  66. package/dist/worker-adapter.d.ts +32 -0
  67. package/dist/worker-adapter.d.ts.map +1 -0
  68. package/dist/worker-adapter.js +147 -0
  69. package/dist/worker-adapter.js.map +1 -0
  70. package/package.json +35 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wasi-file-io.js","sourceRoot":"","sources":["../src/wasi-file-io.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG"}
@@ -0,0 +1,368 @@
1
+ /**
2
+ * WASI polyfill for wasi_snapshot_preview1.
3
+ *
4
+ * Implements all 46 wasi_snapshot_preview1 functions:
5
+ * - Core fd and prestat operations (US-007)
6
+ * - Path, directory, and filestat operations (US-008)
7
+ * - Args, env, clock, random, proc_exit, and remaining stubs (US-009)
8
+ */
9
+ import { ERRNO_SUCCESS, ERRNO_EBADF, ERRNO_EINVAL } from './wasi-constants.js';
10
+ import type { WasiFDTable, WasiVFS } from './wasi-types.js';
11
+ import type { WasiFileIO } from './wasi-file-io.js';
12
+ import type { WasiProcessIO } from './wasi-process-io.js';
13
+ export declare const ERRNO_ESPIPE: number;
14
+ export declare const ERRNO_EISDIR: number;
15
+ export declare const ERRNO_ENOMEM: number;
16
+ export declare const ERRNO_ENOSYS: number;
17
+ export declare const ERRNO_ENOENT: number;
18
+ export declare const ERRNO_EEXIST: number;
19
+ export declare const ERRNO_ENOTDIR: number;
20
+ export declare const ERRNO_ENOTEMPTY: number;
21
+ export declare const ERRNO_ELOOP: number;
22
+ export declare const ERRNO_EACCES: number;
23
+ export declare const ERRNO_EPERM: number;
24
+ export declare const ERRNO_EIO: number;
25
+ export { ERRNO_SUCCESS, ERRNO_EBADF, ERRNO_EINVAL };
26
+ /**
27
+ * Exception thrown by proc_exit to terminate WASM execution.
28
+ * Callers should catch this to extract the exit code.
29
+ */
30
+ export declare class WasiProcExit extends Error {
31
+ exitCode: number;
32
+ constructor(exitCode: number);
33
+ }
34
+ /** Callback for reading stdin in streaming/pipeline mode. */
35
+ type StdinReader = (buf: Uint8Array, offset: number, length: number) => number;
36
+ /** Callback for writing stdout in streaming/pipeline mode. */
37
+ type StdoutWriter = (buf: Uint8Array, offset: number, length: number) => number;
38
+ /** Options for constructing a WasiPolyfill instance. */
39
+ export interface WasiOptions {
40
+ fileIO: WasiFileIO;
41
+ processIO: WasiProcessIO;
42
+ args?: string[];
43
+ env?: Record<string, string>;
44
+ stdin?: Uint8Array | string | null;
45
+ memory?: {
46
+ buffer: ArrayBuffer;
47
+ } | null;
48
+ }
49
+ /** The wasi_snapshot_preview1 import object shape. */
50
+ export type WasiImports = Record<string, Function>;
51
+ /**
52
+ * WASI polyfill implementing wasi_snapshot_preview1.
53
+ *
54
+ * Phase 1: Core fd and prestat operations (US-007).
55
+ * Additional operations added in US-008, US-009.
56
+ */
57
+ export declare class WasiPolyfill {
58
+ fdTable: WasiFDTable;
59
+ vfs: WasiVFS;
60
+ args: string[];
61
+ env: Record<string, string>;
62
+ memory: {
63
+ buffer: ArrayBuffer;
64
+ } | null;
65
+ exitCode: number | null;
66
+ private _fileIO;
67
+ private _processIO;
68
+ private _stdinData;
69
+ private _stdinOffset;
70
+ private _stdinReader;
71
+ private _stdoutWriter;
72
+ private _stderrWriter;
73
+ private _sleepHook;
74
+ private _stdoutChunks;
75
+ private _stderrChunks;
76
+ private _preopens;
77
+ constructor(fdTable: WasiFDTable, vfs: WasiVFS, options: WasiOptions);
78
+ private _setupPreopens;
79
+ /**
80
+ * Set the WASM memory reference (call after WebAssembly.instantiate).
81
+ */
82
+ setMemory(memory: {
83
+ buffer: ArrayBuffer;
84
+ }): void;
85
+ /**
86
+ * Set a blocking stdin reader for parallel pipeline mode.
87
+ * The reader function should have signature: (buf, offset, length) => bytesRead
88
+ * Returns 0 on EOF.
89
+ */
90
+ setStdinReader(reader: StdinReader): void;
91
+ /**
92
+ * Set a blocking stdout writer for parallel pipeline mode.
93
+ * The writer function should have signature: (buf, offset, length) => void
94
+ */
95
+ setStdoutWriter(writer: StdoutWriter): void;
96
+ /**
97
+ * Set a blocking stderr writer for streaming mode.
98
+ * The writer function should have signature: (buf, offset, length) => void
99
+ */
100
+ setStderrWriter(writer: StdoutWriter): void;
101
+ /** Set a hook to run while clock sleeps block in poll_oneoff. */
102
+ setSleepHook(hook: (() => void) | null): void;
103
+ /** Append raw data to the stdout collection (used by inline child execution). */
104
+ appendStdout(data: Uint8Array): void;
105
+ /** Append raw data to the stderr collection (used by inline child execution). */
106
+ appendStderr(data: Uint8Array): void;
107
+ /** Get collected stdout as Uint8Array. */
108
+ get stdout(): Uint8Array;
109
+ /** Get collected stderr as Uint8Array. */
110
+ get stderr(): Uint8Array;
111
+ /** Get collected stdout as string. */
112
+ get stdoutString(): string;
113
+ /** Get collected stderr as string. */
114
+ get stderrString(): string;
115
+ private _view;
116
+ private _bytes;
117
+ /**
118
+ * Read an array of iovec structs from WASM memory.
119
+ * Each iovec is { buf: u32, buf_len: u32 } = 8 bytes.
120
+ */
121
+ private _readIovecs;
122
+ /**
123
+ * Read from a file descriptor into iovec buffers.
124
+ * Handles stdio (stdin), VFS files, and pipes.
125
+ */
126
+ fd_read(fd: number, iovs_ptr: number, iovs_len: number, nread_ptr: number): number;
127
+ /**
128
+ * Write from iovec buffers to a file descriptor.
129
+ * Handles stdio (stdout/stderr collection), VFS files, and pipes.
130
+ */
131
+ fd_write(fd: number, iovs_ptr: number, iovs_len: number, nwritten_ptr: number): number;
132
+ /**
133
+ * Seek within a file descriptor. Delegates to kernel file I/O bridge.
134
+ */
135
+ fd_seek(fd: number, offset: number | bigint, whence: number, newoffset_ptr: number): number;
136
+ /**
137
+ * Get current file position.
138
+ */
139
+ fd_tell(fd: number, offset_ptr: number): number;
140
+ /**
141
+ * Close a file descriptor. Delegates to kernel file I/O bridge.
142
+ */
143
+ fd_close(fd: number): number;
144
+ /**
145
+ * Get file descriptor status.
146
+ * Writes fdstat struct (24 bytes) at buf_ptr:
147
+ * offset 0: fs_filetype (u8)
148
+ * offset 2: fs_flags (u16 LE)
149
+ * offset 8: fs_rights_base (u64 LE)
150
+ * offset 16: fs_rights_inheriting (u64 LE)
151
+ */
152
+ fd_fdstat_get(fd: number, buf_ptr: number): number;
153
+ /**
154
+ * Set file descriptor flags.
155
+ */
156
+ fd_fdstat_set_flags(fd: number, flags: number): number;
157
+ /**
158
+ * Get pre-opened directory info.
159
+ * Writes prestat struct (8 bytes) at buf_ptr:
160
+ * offset 0: pr_type (u8) = 0 for dir
161
+ * offset 4: u.dir.pr_name_len (u32 LE)
162
+ */
163
+ fd_prestat_get(fd: number, buf_ptr: number): number;
164
+ /**
165
+ * Get the name of a pre-opened directory.
166
+ */
167
+ fd_prestat_dir_name(fd: number, path_ptr: number, path_len: number): number;
168
+ /**
169
+ * Read a path string from WASM memory.
170
+ */
171
+ private _readPathString;
172
+ /**
173
+ * Resolve a WASI path relative to a directory fd.
174
+ */
175
+ private _resolveWasiPath;
176
+ /**
177
+ * Convert VFS inode type to WASI filetype.
178
+ */
179
+ private _inodeTypeToFiletype;
180
+ /**
181
+ * Write a WASI filestat struct (64 bytes) at the given pointer.
182
+ */
183
+ private _writeFilestat;
184
+ /**
185
+ * Apply timestamp changes to a VFS inode based on fstflags.
186
+ */
187
+ private _applyTimestamps;
188
+ /**
189
+ * Open a file or directory at a path relative to a directory fd.
190
+ */
191
+ path_open(dirfd: number, dirflags: number, path_ptr: number, path_len: number, oflags: number, fs_rights_base: number | bigint, fs_rights_inheriting: number | bigint, fdflags: number, opened_fd_ptr: number): number;
192
+ /**
193
+ * Create a directory at a path relative to a directory fd.
194
+ */
195
+ path_create_directory(dirfd: number, path_ptr: number, path_len: number): number;
196
+ /**
197
+ * Unlink a file at a path relative to a directory fd.
198
+ */
199
+ path_unlink_file(dirfd: number, path_ptr: number, path_len: number): number;
200
+ /**
201
+ * Remove a directory at a path relative to a directory fd.
202
+ */
203
+ path_remove_directory(dirfd: number, path_ptr: number, path_len: number): number;
204
+ /**
205
+ * Rename a file or directory.
206
+ */
207
+ path_rename(old_dirfd: number, old_path_ptr: number, old_path_len: number, new_dirfd: number, new_path_ptr: number, new_path_len: number): number;
208
+ /**
209
+ * Create a symbolic link.
210
+ */
211
+ path_symlink(old_path_ptr: number, old_path_len: number, dirfd: number, new_path_ptr: number, new_path_len: number): number;
212
+ /**
213
+ * Read the target of a symbolic link.
214
+ */
215
+ path_readlink(dirfd: number, path_ptr: number, path_len: number, buf_ptr: number, buf_len: number, bufused_ptr: number): number;
216
+ /**
217
+ * Get file status by path.
218
+ */
219
+ path_filestat_get(dirfd: number, flags: number, path_ptr: number, path_len: number, buf_ptr: number): number;
220
+ /**
221
+ * Set file timestamps by path.
222
+ */
223
+ path_filestat_set_times(dirfd: number, flags: number, path_ptr: number, path_len: number, atim: number | bigint, mtim: number | bigint, fst_flags: number): number;
224
+ /**
225
+ * Get file status by fd.
226
+ */
227
+ fd_filestat_get(fd: number, buf_ptr: number): number;
228
+ /**
229
+ * Set file size by fd (truncate or extend).
230
+ */
231
+ fd_filestat_set_size(fd: number, size: number | bigint): number;
232
+ /**
233
+ * Set file timestamps by fd.
234
+ */
235
+ fd_filestat_set_times(fd: number, atim: number | bigint, mtim: number | bigint, fst_flags: number): number;
236
+ /**
237
+ * Read directory entries from a directory fd.
238
+ * Writes dirent structs (24-byte header + name) into the buffer.
239
+ */
240
+ fd_readdir(fd: number, buf_ptr: number, buf_len: number, cookie: number | bigint, bufused_ptr: number): number;
241
+ /**
242
+ * Write command-line arguments into WASM memory.
243
+ * argv_ptr: pointer to array of u32 pointers (one per arg)
244
+ * argv_buf_ptr: pointer to buffer where arg strings are written (null-terminated)
245
+ */
246
+ args_get(argv_ptr: number, argv_buf_ptr: number): number;
247
+ /**
248
+ * Get the sizes needed for args_get.
249
+ * Writes argc (u32) at argc_ptr and total argv buffer size (u32) at argv_buf_size_ptr.
250
+ */
251
+ args_sizes_get(argc_ptr: number, argv_buf_size_ptr: number): number;
252
+ /**
253
+ * Write environment variables into WASM memory.
254
+ * environ_ptr: pointer to array of u32 pointers (one per env entry)
255
+ * environ_buf_ptr: pointer to buffer where "KEY=VALUE\0" strings are written
256
+ */
257
+ environ_get(environ_ptr: number, environ_buf_ptr: number): number;
258
+ /**
259
+ * Get the sizes needed for environ_get.
260
+ * Writes environ count (u32) at environc_ptr and total buffer size (u32) at environ_buf_size_ptr.
261
+ */
262
+ environ_sizes_get(environc_ptr: number, environ_buf_size_ptr: number): number;
263
+ /**
264
+ * Get the resolution of a clock.
265
+ * Writes resolution in nanoseconds as u64 at resolution_ptr.
266
+ */
267
+ clock_res_get(id: number, resolution_ptr: number): number;
268
+ /**
269
+ * Get the current time of a clock.
270
+ * Writes time in nanoseconds as u64 at time_ptr.
271
+ */
272
+ clock_time_get(id: number, _precision: number | bigint, time_ptr: number): number;
273
+ /**
274
+ * Fill a buffer with cryptographically secure random bytes.
275
+ */
276
+ random_get(buf_ptr: number, buf_len: number): number;
277
+ /**
278
+ * Terminate the process with an exit code.
279
+ * Throws WasiProcExit to unwind the WASM call stack.
280
+ */
281
+ proc_exit(exitCode: number): never;
282
+ /**
283
+ * Send a signal to the current process.
284
+ * Not meaningful in WASM -- stub that returns ENOSYS.
285
+ */
286
+ proc_raise(_sig: number): number;
287
+ /**
288
+ * Yield the current thread's execution.
289
+ * No-op in single-threaded WASM.
290
+ */
291
+ sched_yield(): number;
292
+ /**
293
+ * Minimal poll_oneoff supporting clock subscriptions (for sleep).
294
+ *
295
+ * Subscription layout (48 bytes):
296
+ * u64 userdata @ 0
297
+ * u8 type @ 8 (0=clock, 1=fd_read, 2=fd_write)
298
+ * -- padding to offset 16 --
299
+ * For clock (type==0):
300
+ * u32 clock_id @ 16
301
+ * u64 timeout @ 24
302
+ * u64 precision @ 32
303
+ * u16 flags @ 40 (bit 0 = abstime)
304
+ *
305
+ * Event layout (32 bytes):
306
+ * u64 userdata @ 0
307
+ * u16 error @ 8
308
+ * u8 type @ 10
309
+ * -- padding --
310
+ * u64 fd_readwrite.nbytes @ 16
311
+ * u16 fd_readwrite.flags @ 24
312
+ */
313
+ poll_oneoff(in_ptr: number, out_ptr: number, nsubscriptions: number, nevents_ptr: number): number;
314
+ /**
315
+ * Advise the system on intended file usage patterns.
316
+ * No-op -- advisory only.
317
+ */
318
+ fd_advise(fd: number, _offset: number | bigint, _len: number | bigint, _advice: number): number;
319
+ /**
320
+ * Pre-allocate space for a file.
321
+ * No-op in VFS (files grow dynamically).
322
+ */
323
+ fd_allocate(fd: number, _offset: number | bigint, _len: number | bigint): number;
324
+ /**
325
+ * Synchronize file data to storage.
326
+ * No-op in in-memory VFS.
327
+ */
328
+ fd_datasync(fd: number): number;
329
+ /**
330
+ * Synchronize file data and metadata to storage.
331
+ * No-op in in-memory VFS.
332
+ */
333
+ fd_sync(fd: number): number;
334
+ /**
335
+ * Set rights on a file descriptor (shrink only).
336
+ * Minimal implementation -- just validates fd.
337
+ */
338
+ fd_fdstat_set_rights(fd: number, fs_rights_base: number | bigint, fs_rights_inheriting: number | bigint): number;
339
+ /**
340
+ * Read from a file descriptor at a given offset without changing the cursor.
341
+ * Delegates to kernel file I/O bridge.
342
+ */
343
+ fd_pread(fd: number, iovs_ptr: number, iovs_len: number, offset: number | bigint, nread_ptr: number): number;
344
+ /**
345
+ * Write to a file descriptor at a given offset without changing the cursor.
346
+ * Delegates to kernel file I/O bridge.
347
+ */
348
+ fd_pwrite(fd: number, iovs_ptr: number, iovs_len: number, offset: number | bigint, nwritten_ptr: number): number;
349
+ /**
350
+ * Renumber a file descriptor (atomically move oldFd to newFd).
351
+ */
352
+ fd_renumber(from_fd: number, to_fd: number): number;
353
+ /**
354
+ * Create a hard link.
355
+ * Not supported in our VFS -- return ENOSYS.
356
+ */
357
+ path_link(_old_fd: number, _old_flags: number, _old_path_ptr: number, _old_path_len: number, _new_fd: number, _new_path_ptr: number, _new_path_len: number): number;
358
+ sock_accept(_fd: number, _flags: number, _result_fd_ptr: number): number;
359
+ sock_recv(_fd: number, _ri_data_ptr: number, _ri_data_len: number, _ri_flags: number, _ro_datalen_ptr: number, _ro_flags_ptr: number): number;
360
+ sock_send(_fd: number, _si_data_ptr: number, _si_data_len: number, _si_flags: number, _so_datalen_ptr: number): number;
361
+ sock_shutdown(_fd: number, _how: number): number;
362
+ /**
363
+ * Get the wasi_snapshot_preview1 import object.
364
+ * All 46 wasi_snapshot_preview1 functions.
365
+ */
366
+ getImports(): WasiImports;
367
+ }
368
+ //# sourceMappingURL=wasi-polyfill.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wasi-polyfill.d.ts","sourceRoot":"","sources":["../src/wasi-polyfill.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAmCL,aAAa,EACb,WAAW,EACX,YAAY,EACb,MAAM,qBAAqB,CAAC;AAG7B,OAAO,KAAK,EAKV,WAAW,EACX,OAAO,EACR,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAG1D,eAAO,MAAM,YAAY,EAAE,MAAW,CAAC;AACvC,eAAO,MAAM,YAAY,EAAE,MAAW,CAAC;AACvC,eAAO,MAAM,YAAY,EAAE,MAAW,CAAC;AACvC,eAAO,MAAM,YAAY,EAAE,MAAW,CAAC;AACvC,eAAO,MAAM,YAAY,EAAE,MAAW,CAAC;AACvC,eAAO,MAAM,YAAY,EAAE,MAAW,CAAC;AACvC,eAAO,MAAM,aAAa,EAAE,MAAW,CAAC;AACxC,eAAO,MAAM,eAAe,EAAE,MAAW,CAAC;AAC1C,eAAO,MAAM,WAAW,EAAE,MAAW,CAAC;AACtC,eAAO,MAAM,YAAY,EAAE,MAAU,CAAC;AACtC,eAAO,MAAM,WAAW,EAAE,MAAW,CAAC;AACtC,eAAO,MAAM,SAAS,EAAE,MAAW,CAAC;AAwBpC,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC;AAgDpD;;;GAGG;AACH,qBAAa,YAAa,SAAQ,KAAK;IACrC,QAAQ,EAAE,MAAM,CAAC;gBAEL,QAAQ,EAAE,MAAM;CAK7B;AA4BD,6DAA6D;AAC7D,KAAK,WAAW,GAAG,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC;AAE/E,8DAA8D;AAC9D,KAAK,YAAY,GAAG,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC;AAEhF,wDAAwD;AACxD,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,UAAU,CAAC;IACnB,SAAS,EAAE,aAAa,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,KAAK,CAAC,EAAE,UAAU,GAAG,MAAM,GAAG,IAAI,CAAC;IACnC,MAAM,CAAC,EAAE;QAAE,MAAM,EAAE,WAAW,CAAA;KAAE,GAAG,IAAI,CAAC;CACzC;AAKD,sDAAsD;AACtD,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAkBnD;;;;;GAKG;AACH,qBAAa,YAAY;IACvB,OAAO,EAAE,WAAW,CAAC;IACrB,GAAG,EAAE,OAAO,CAAC;IACb,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,MAAM,EAAE;QAAE,MAAM,EAAE,WAAW,CAAA;KAAE,GAAG,IAAI,CAAC;IACvC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAExB,OAAO,CAAC,OAAO,CAAa;IAC5B,OAAO,CAAC,UAAU,CAAgB;IAClC,OAAO,CAAC,UAAU,CAAoB;IACtC,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,YAAY,CAAqB;IACzC,OAAO,CAAC,aAAa,CAAsB;IAC3C,OAAO,CAAC,aAAa,CAAsB;IAC3C,OAAO,CAAC,UAAU,CAAsB;IACxC,OAAO,CAAC,aAAa,CAAe;IACpC,OAAO,CAAC,aAAa,CAAe;IACpC,OAAO,CAAC,SAAS,CAAsB;gBAE3B,OAAO,EAAE,WAAW,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW;IAiCpE,OAAO,CAAC,cAAc;IActB;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,WAAW,CAAA;KAAE,GAAG,IAAI;IAIhD;;;;OAIG;IACH,cAAc,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI;IAIzC;;;OAGG;IACH,eAAe,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;IAI3C;;;OAGG;IACH,eAAe,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;IAI3C,iEAAiE;IACjE,YAAY,CAAC,IAAI,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI;IAI7C,iFAAiF;IACjF,YAAY,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI;IAMpC,iFAAiF;IACjF,YAAY,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI;IAMpC,0CAA0C;IAC1C,IAAI,MAAM,IAAI,UAAU,CAEvB;IAED,0CAA0C;IAC1C,IAAI,MAAM,IAAI,UAAU,CAEvB;IAED,sCAAsC;IACtC,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED,sCAAsC;IACtC,IAAI,YAAY,IAAI,MAAM,CAEzB;IAID,OAAO,CAAC,KAAK;IAIb,OAAO,CAAC,MAAM;IAId;;;OAGG;IACH,OAAO,CAAC,WAAW;IAenB;;;OAGG;IACH,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;IAmFlF;;;OAGG;IACH,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM;IAsEtF;;OAEG;IACH,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM;IAgB3F;;OAEG;IACH,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM;IAU/C;;OAEG;IACH,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM;IAK5B;;;;;;;OAOG;IACH,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM;IAclD;;OAEG;IACH,mBAAmB,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM;IAStD;;;;;OAKG;IACH,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM;IAanD;;OAEG;IACH,mBAAmB,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;IAY3E;;OAEG;IACH,OAAO,CAAC,eAAe;IAMvB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAqBxB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAU5B;;OAEG;IACH,OAAO,CAAC,cAAc;IAatB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAmBxB;;OAEG;IACH,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM,EAAE,oBAAoB,EAAE,MAAM,GAAG,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM;IAoBtN;;OAEG;IACH,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;IAgBhF;;OAEG;IACH,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;IAgB3E;;OAEG;IACH,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;IAgBhF;;OAEG;IACH,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM;IAqBjJ;;OAEG;IACH,YAAY,CAAC,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM;IAiB3H;;OAEG;IACH,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM;IAsB/H;;OAEG;IACH,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM;IAmB5G;;OAEG;IACH,uBAAuB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;IAqBlK;;OAEG;IACH,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM;IA+BpD;;OAEG;IACH,oBAAoB,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM;IAoB/D;;OAEG;IACH,qBAAqB,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;IAsB1G;;;OAGG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM;IAsD9G;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM;IAiBxD;;;OAGG;IACH,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,GAAG,MAAM;IAanE;;;;OAIG;IACH,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,MAAM;IAmBjE;;;OAGG;IACH,iBAAiB,CAAC,YAAY,EAAE,MAAM,EAAE,oBAAoB,EAAE,MAAM,GAAG,MAAM;IAgB7E;;;OAGG;IACH,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM;IAqBzD;;;OAGG;IACH,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;IAiCjF;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM;IAmBpD;;;OAGG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,KAAK;IAMlC;;;OAGG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAIhC;;;OAGG;IACH,WAAW,IAAI,MAAM;IAIrB;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM;IAwDjG;;;OAGG;IACH,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM;IAM/F;;;OAGG;IACH,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM;IAMhF;;;OAGG;IACH,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM;IAM/B;;;OAGG;IACH,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM;IAM3B;;;OAGG;IACH,oBAAoB,CAAC,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM,EAAE,oBAAoB,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM;IAWhH;;;OAGG;IACH,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;IA6B5G;;;OAGG;IACH,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM;IA4BhH;;OAEG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM;IAMnD;;;OAGG;IACH,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM;IAMnK,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM;IAIxE,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM;IAI7I,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,MAAM;IAItH,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM;IAIhD;;;OAGG;IACH,UAAU,IAAI,WAAW;CAuG1B"}