@velarscript/cli 0.14.0 → 0.14.2

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.
@@ -0,0 +1,302 @@
1
+ import { readFile, writeFile } from "node:fs/promises";
2
+ import { dirname, isAbsolute, join, relative, resolve } from "node:path";
3
+ import { build } from "esbuild";
4
+ import { encodeVelarLibraryInterface, packageStableModulePath, rebaseModuleInterfaceIdentities, sha256Text, } from "./library-artifact.js";
5
+ import { jsonResourceModule } from "./resource-output.js";
6
+ import { standardModuleSource } from "./standard-modules.js";
7
+ import { VELAR_VERSION } from "./version.js";
8
+ const MAX_PACKAGE_MANIFEST_BYTES = 1024 * 1024;
9
+ const PACKAGE_NAME = /^(?:@[a-z0-9][a-z0-9._-]*\/[a-z0-9][a-z0-9._-]*|[a-z0-9][a-z0-9._-]*)$/u;
10
+ const PACKAGE_VERSION = /^(?:0|[1-9][0-9]*)\.(?:0|[1-9][0-9]*)\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?(?:\+[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?$/u;
11
+ export async function resolveVelarLibraryBuild(config) {
12
+ const packagePath = join(config.root, "package.json");
13
+ const source = await readFile(packagePath, "utf8");
14
+ if (Buffer.byteLength(source, "utf8") > MAX_PACKAGE_MANIFEST_BYTES)
15
+ throw new RangeError(`${packagePath} exceeds ${MAX_PACKAGE_MANIFEST_BYTES} bytes`);
16
+ const manifest = JSON.parse(source);
17
+ if (!manifest || typeof manifest !== "object" || Array.isArray(manifest))
18
+ throw new Error(`${packagePath} must contain a JSON object`);
19
+ if (typeof manifest.name !== "string" || !PACKAGE_NAME.test(manifest.name))
20
+ throw new Error(`${packagePath}: a library artifact requires a valid package name`);
21
+ if (typeof manifest.version !== "string" || !PACKAGE_VERSION.test(manifest.version))
22
+ throw new Error(`${packagePath}: a library artifact requires a semantic package version`);
23
+ const velar = manifest.velar;
24
+ if (!velar || typeof velar !== "object" || Array.isArray(velar))
25
+ throw new Error(`${packagePath}: a library artifact requires the 'velar' package section`);
26
+ const fields = velar;
27
+ const sourceEntry = normalizedRelativePath(fields.entry, `${packagePath}#velar.entry`);
28
+ if (!sourceEntry.endsWith(".vel"))
29
+ throw new Error(`${packagePath}#velar.entry must point to a .vel source file`);
30
+ const entryPath = resolve(config.root, ...sourceEntry.split("/"));
31
+ const fromRoot = relative(config.root, entryPath);
32
+ if (!fromRoot || fromRoot.startsWith("..") || isAbsolute(fromRoot))
33
+ throw new Error(`${packagePath}#velar.entry escapes the package root`);
34
+ const target = libraryTarget(config);
35
+ const artifacts = fields.artifacts;
36
+ if (!artifacts || typeof artifacts !== "object" || Array.isArray(artifacts)) {
37
+ throw new Error(`${packagePath}: 'velar.artifacts' must map '${target}' to the generated receipt path`);
38
+ }
39
+ const descriptors = artifacts;
40
+ const unknown = Object.keys(descriptors).find((key) => key !== "core" && key !== "node");
41
+ if (unknown)
42
+ throw new Error(`${packagePath}: Velar library ABI 1 does not support artifact target '${unknown}'; supported targets are core and node`);
43
+ if (Object.keys(descriptors).length !== 1 || descriptors[target] === undefined) {
44
+ throw new Error(`${packagePath}: Velar library ABI 1 requires exactly one '${target}' artifact per package`);
45
+ }
46
+ const descriptor = normalizedRelativePath(descriptors[target], `${packagePath}#velar.artifacts.${target}`);
47
+ if (!descriptor.endsWith(".json"))
48
+ throw new Error(`${packagePath}#velar.artifacts.${target} must point to a .json receipt`);
49
+ const receiptPath = resolve(config.root, ...descriptor.split("/"));
50
+ const outputRoot = dirname(receiptPath);
51
+ const outputFromRoot = relative(config.root, outputRoot);
52
+ if (!outputFromRoot || outputFromRoot.startsWith("..") || isAbsolute(outputFromRoot))
53
+ throw new Error(`${packagePath}#velar.artifacts.${target} escapes the package root`);
54
+ if (resolve(outputRoot) !== resolve(config.outDir)) {
55
+ throw new Error(`${packagePath}#velar.artifacts.${target} must live directly in the velar.json outDir so library builds cannot replace a source or unrelated directory`);
56
+ }
57
+ const exports = manifest.exports;
58
+ const expectedEntry = `./${relative(config.root, join(outputRoot, "index.js")).replaceAll("\\", "/")}`;
59
+ const rootExports = packageExportTargets(exports, ".");
60
+ if (rootExports.length === 0 || rootExports.some((item) => item !== expectedEntry)) {
61
+ throw new Error(`${packagePath}: package.json 'exports' must expose the generated library artifact as '${expectedEntry}'`);
62
+ }
63
+ return {
64
+ project: { ...config, entryPath },
65
+ packageName: manifest.name,
66
+ packageVersion: manifest.version,
67
+ sourceEntry,
68
+ target,
69
+ receiptPath,
70
+ outputRoot,
71
+ };
72
+ }
73
+ export async function writeVelarLibraryArtifact(buildConfig, project, stagingRoot) {
74
+ if (project.failures.length > 0)
75
+ throw new Error("Cannot write a library artifact from a project with resolution failures");
76
+ const diagnostics = project.modules.flatMap((module) => module.result.diagnostics);
77
+ if (diagnostics.length > 0)
78
+ throw new Error("Cannot write a library artifact from a project with compiler diagnostics");
79
+ const entry = project.modules.find((module) => module.inputPath === buildConfig.project.entryPath);
80
+ if (!entry?.result.code)
81
+ throw new Error("The VelarScript library entry did not emit JavaScript");
82
+ const output = await bundleLibrary(project, entry, buildConfig.target, buildConfig.outputRoot);
83
+ const interface_ = project.moduleInterfaces.get(entry.inputPath) ?? entry.result.moduleInterface;
84
+ const replacements = identityReplacements(buildConfig, project);
85
+ const interfaceText = encodeVelarLibraryInterface(rebaseModuleInterfaceIdentities(interface_, replacements));
86
+ const sourceMap = portableSourceMap(output.sourceMap, buildConfig.project.root, buildConfig.outputRoot);
87
+ const javascript = output.code.endsWith("\n") ? output.code : `${output.code}\n`;
88
+ const sources = project.modules
89
+ .filter((module) => inside(buildConfig.project.root, module.inputPath))
90
+ .map((module) => ({
91
+ path: relative(buildConfig.project.root, module.inputPath).replaceAll("\\", "/"),
92
+ sha256: sha256Text(module.result.source.text),
93
+ }))
94
+ .sort((left, right) => left.path < right.path ? -1 : left.path > right.path ? 1 : 0);
95
+ if (sources.length === 0)
96
+ throw new Error("The VelarScript library artifact has no package-owned source modules");
97
+ const receipt = {
98
+ formatVersion: 1,
99
+ kind: "velar-library-artifact",
100
+ abiVersion: 1,
101
+ package: { name: buildConfig.packageName, version: buildConfig.packageVersion },
102
+ target: buildConfig.target,
103
+ compilerVersion: VELAR_VERSION,
104
+ sourceEntry: buildConfig.sourceEntry,
105
+ sources,
106
+ entry: {
107
+ javascript: "index.js",
108
+ sourceMap: "index.js.map",
109
+ interface: "index.veli.json",
110
+ sha256: {
111
+ javascript: sha256Text(javascript),
112
+ sourceMap: sha256Text(sourceMap),
113
+ interface: sha256Text(interfaceText),
114
+ },
115
+ },
116
+ };
117
+ await Promise.all([
118
+ writeFile(join(stagingRoot, "index.js"), javascript, "utf8"),
119
+ writeFile(join(stagingRoot, "index.js.map"), sourceMap, "utf8"),
120
+ writeFile(join(stagingRoot, "index.veli.json"), interfaceText, "utf8"),
121
+ writeFile(join(stagingRoot, relative(buildConfig.outputRoot, buildConfig.receiptPath)), `${JSON.stringify(receipt, null, 2)}\n`, "utf8"),
122
+ ]);
123
+ return { receipt, outputRoot: buildConfig.outputRoot };
124
+ }
125
+ async function bundleLibrary(project, entry, target, finalOutputRoot) {
126
+ if (entry.result.code === null)
127
+ throw new Error("The VelarScript library entry did not emit JavaScript");
128
+ const modules = new Map(project.modules.map((module) => [resolve(module.inputPath), module]));
129
+ const portableModules = new Map(project.modules.map((module) => [portableBundlePath(project, module.inputPath), module]));
130
+ const embedded = new Map();
131
+ const portableEmbedded = new Map();
132
+ for (const module of project.modules) {
133
+ for (const item of module.result.embeddedModules) {
134
+ const physicalPath = resolve(dirname(module.inputPath), item.specifier);
135
+ const value = { owner: module, code: item.code, sourceMap: item.sourceMap, portablePath: portableBundlePath(project, physicalPath) };
136
+ embedded.set(physicalPath, value);
137
+ portableEmbedded.set(value.portablePath, value);
138
+ }
139
+ }
140
+ const resources = new Map(project.resources.map((resource) => [resolve(resource.inputPath), resource]));
141
+ const portableResources = new Map(project.resources.map((resource) => [portableBundlePath(project, resource.inputPath), resource]));
142
+ const plugin = {
143
+ name: "velar-library-artifact",
144
+ setup(context) {
145
+ context.onResolve({ filter: /^velar\// }, (arguments_) => ({ path: arguments_.path, namespace: "velar-standard" }));
146
+ context.onLoad({ filter: /.*/, namespace: "velar-standard" }, (arguments_) => {
147
+ const source = standardModuleSource(arguments_.path, project.extensionConfig, project.compilerExtensions);
148
+ return source === null
149
+ ? { errors: [{ text: `Unknown VelarScript standard module '${arguments_.path}'` }] }
150
+ : { contents: source, loader: "js", resolveDir: project.projectRoot };
151
+ });
152
+ context.onResolve({ filter: /^\.\.?\// }, (arguments_) => {
153
+ const path = resolve(arguments_.resolveDir, arguments_.path);
154
+ const embeddedModule = embedded.get(path);
155
+ if (embeddedModule)
156
+ return { path: embeddedModule.portablePath, namespace: "velar-embedded" };
157
+ if (arguments_.path.endsWith(".json.js")) {
158
+ const resourcePath = resolve(arguments_.resolveDir, arguments_.path.slice(0, -3));
159
+ if (resources.has(resourcePath))
160
+ return { path: portableBundlePath(project, resourcePath), namespace: "velar-resource" };
161
+ }
162
+ if (arguments_.path.endsWith(".js")) {
163
+ const modulePath = resolve(arguments_.resolveDir, arguments_.path.replace(/\.js$/u, ".vel"));
164
+ if (modules.has(modulePath))
165
+ return { path: portableBundlePath(project, modulePath), namespace: "velar-module" };
166
+ }
167
+ return null;
168
+ });
169
+ context.onLoad({ filter: /.*/, namespace: "velar-module" }, (arguments_) => {
170
+ const module = portableModules.get(arguments_.path);
171
+ return module?.result.code ? { contents: module.result.code, loader: "js", resolveDir: dirname(module.inputPath) } : { errors: [{ text: `VelarScript module '${arguments_.path}' was not compiled` }] };
172
+ });
173
+ context.onLoad({ filter: /.*/, namespace: "velar-embedded" }, (arguments_) => {
174
+ const item = portableEmbedded.get(arguments_.path);
175
+ return item ? { contents: item.code, loader: "js", resolveDir: dirname(item.owner.inputPath) } : null;
176
+ });
177
+ context.onLoad({ filter: /.*/, namespace: "velar-resource" }, (arguments_) => {
178
+ const resource = portableResources.get(arguments_.path);
179
+ return resource ? { contents: jsonResourceModule(resource.content), loader: "js", resolveDir: dirname(resource.inputPath) } : null;
180
+ });
181
+ context.onResolve({ filter: /^[^./]/ }, (arguments_) => {
182
+ if (arguments_.path.startsWith("velar/"))
183
+ return null;
184
+ return { path: arguments_.path, external: true };
185
+ });
186
+ },
187
+ };
188
+ const result = await build({
189
+ absWorkingDir: project.projectRoot,
190
+ bundle: true,
191
+ format: "esm",
192
+ platform: target === "node" ? "node" : "neutral",
193
+ target: target === "node" ? "node24" : "es2022",
194
+ conditions: ["import", "default"],
195
+ packages: "external",
196
+ // Node's `Worker(..., {eval:true})` executes CommonJS source and exposes
197
+ // `globalThis.require`. Naming that explicitly prevents esbuild from
198
+ // closing over its ESM `__require` shim inside a function whose source is
199
+ // later serialized with `toString()` (the SQLite adapter's bounded Worker
200
+ // is the concrete case). A top-level require was never valid in the ESM
201
+ // artifact; embedded modules use imports for their own execution.
202
+ ...(target === "node" ? { define: { require: "globalThis.require" } } : {}),
203
+ outfile: join(finalOutputRoot, "index.js"),
204
+ sourcemap: "external",
205
+ sourcesContent: true,
206
+ legalComments: "none",
207
+ logLevel: "silent",
208
+ write: false,
209
+ plugins: [plugin],
210
+ stdin: {
211
+ contents: entry.result.code,
212
+ loader: "js",
213
+ resolveDir: dirname(entry.inputPath),
214
+ sourcefile: portableBundlePath(project, entry.inputPath),
215
+ },
216
+ });
217
+ const code = result.outputFiles?.find((file) => resolve(file.path) === resolve(finalOutputRoot, "index.js"));
218
+ const sourceMap = result.outputFiles?.find((file) => resolve(file.path) === resolve(finalOutputRoot, "index.js.map"));
219
+ if (!code || !sourceMap)
220
+ throw new Error("The Velar library bundler did not emit JavaScript and its source map");
221
+ return { code: code.text, sourceMap: sourceMap.text };
222
+ }
223
+ function portableBundlePath(project, path) {
224
+ if (inside(project.projectRoot, path))
225
+ return relative(project.projectRoot, path).replaceAll("\\", "/");
226
+ const owner = project.velarPackages.find((package_) => inside(package_.root, path));
227
+ if (owner)
228
+ return `__velar_packages__/${owner.name}/${relative(owner.root, path).replaceAll("\\", "/")}`;
229
+ throw new Error(`Library bundle input '${path}' is outside the project and its declared VelarScript packages`);
230
+ }
231
+ function identityReplacements(config, project) {
232
+ const replacements = [];
233
+ for (const module of project.modules) {
234
+ if (inside(config.project.root, module.inputPath)) {
235
+ replacements.push({
236
+ physical: module.inputPath,
237
+ logical: packageStableModulePath(config.packageName, config.packageVersion, relative(config.project.root, module.inputPath)),
238
+ });
239
+ continue;
240
+ }
241
+ const owner = project.velarPackages.find((package_) => inside(package_.root, module.inputPath));
242
+ if (owner)
243
+ replacements.push({
244
+ physical: module.inputPath,
245
+ logical: packageStableModulePath(owner.name, owner.version, relative(owner.root, module.inputPath)),
246
+ });
247
+ }
248
+ return replacements;
249
+ }
250
+ function portableSourceMap(text, packageRoot, outputRoot) {
251
+ const parsed = JSON.parse(text);
252
+ if (Array.isArray(parsed.sources)) {
253
+ parsed.sources = parsed.sources.map((source) => {
254
+ if (typeof source !== "string")
255
+ return source;
256
+ const path = source.startsWith("file://") ? new URL(source) : null;
257
+ const physical = path ? path.pathname : isAbsolute(source) ? source : resolve(packageRoot, source);
258
+ return inside(packageRoot, physical)
259
+ ? relative(outputRoot, physical).replaceAll("\\", "/")
260
+ : source.replaceAll("\\", "/");
261
+ });
262
+ }
263
+ return `${JSON.stringify(parsed)}\n`;
264
+ }
265
+ function libraryTarget(config) {
266
+ const capabilities = new Set(config.compilerExtensions.flatMap((extension) => extension.capabilities ?? []));
267
+ if (capabilities.has("desktop") || capabilities.has("web")) {
268
+ throw new Error("Velar library ABI 1 supports Core and Node libraries; Web/Desktop libraries require the shared Web runtime ABI");
269
+ }
270
+ return capabilities.has("node") ? "node" : "core";
271
+ }
272
+ function normalizedRelativePath(value, label) {
273
+ if (typeof value !== "string" || value === "" || /[\u0000-\u001f\u007f]/u.test(value) || isAbsolute(value) || value.includes("\\")
274
+ || value.split("/").some((part) => part === "" || part === "." || part === "..")) {
275
+ throw new Error(`${label} must be a normalized relative path`);
276
+ }
277
+ return value;
278
+ }
279
+ function inside(root, path) {
280
+ const fromRoot = relative(root, path);
281
+ return fromRoot !== "" && !fromRoot.startsWith("..") && !isAbsolute(fromRoot);
282
+ }
283
+ function packageExportTargets(exports, subpath) {
284
+ if (typeof exports === "string")
285
+ return subpath === "." ? [exports] : [];
286
+ if (exports === null || typeof exports !== "object" || Array.isArray(exports))
287
+ return [];
288
+ const fields = exports;
289
+ const target = Object.keys(fields).some((key) => key.startsWith(".")) ? fields[subpath] : subpath === "." ? exports : undefined;
290
+ const output = [];
291
+ const visit = (value) => {
292
+ if (typeof value === "string")
293
+ output.push(value);
294
+ else if (Array.isArray(value))
295
+ value.forEach(visit);
296
+ else if (value !== null && typeof value === "object")
297
+ Object.values(value).forEach(visit);
298
+ };
299
+ visit(target);
300
+ return output;
301
+ }
302
+ //# sourceMappingURL=library-artifact-build.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"library-artifact-build.js","sourceRoot":"","sources":["../src/library-artifact-build.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ import type { ModuleInterface } from "@velarscript/compiler";
2
+ /** The first frozen JavaScript/package-interface contract shipped by VelarScript. */
3
+ export declare const VELAR_LIBRARY_ABI_VERSION = 1;
4
+ export type VelarLibraryArtifactTarget = "core" | "node";
5
+ export interface LoadedVelarLibraryArtifact {
6
+ readonly abiVersion: 1;
7
+ readonly target: VelarLibraryArtifactTarget;
8
+ readonly compilerVersion: string;
9
+ readonly receiptPath: string;
10
+ readonly entryPath: string;
11
+ readonly interfacePath: string;
12
+ readonly moduleInterface: ModuleInterface;
13
+ }
14
+ export interface VelarLibraryArtifactReceipt {
15
+ readonly formatVersion: 1;
16
+ readonly kind: "velar-library-artifact";
17
+ readonly abiVersion: 1;
18
+ readonly package: {
19
+ readonly name: string;
20
+ readonly version: string;
21
+ };
22
+ readonly target: VelarLibraryArtifactTarget;
23
+ readonly compilerVersion: string;
24
+ readonly sourceEntry: string;
25
+ readonly sources: readonly {
26
+ readonly path: string;
27
+ readonly sha256: string;
28
+ }[];
29
+ readonly entry: {
30
+ readonly javascript: string;
31
+ readonly sourceMap: string;
32
+ readonly interface: string;
33
+ readonly sha256: {
34
+ readonly javascript: string;
35
+ readonly sourceMap: string;
36
+ readonly interface: string;
37
+ };
38
+ };
39
+ }
40
+ export declare function sha256Text(value: string): string;
41
+ /**
42
+ * ABI 1 is deliberately a data format, never JSON.stringify over compiler
43
+ * internals. Every container carries an explicit tag, so Maps/Sets survive and
44
+ * an extension-owned object cannot be mistaken for one of the wire wrappers.
45
+ */
46
+ export declare function encodeVelarLibraryInterface(interface_: ModuleInterface): string;
47
+ export declare function decodeVelarLibraryInterface(text: string): ModuleInterface;
48
+ /** Replaces physical module paths in every nominal identity with package-stable paths. */
49
+ export declare function rebaseModuleInterfaceIdentities(interface_: ModuleInterface, replacements: readonly {
50
+ readonly physical: string;
51
+ readonly logical: string;
52
+ }[]): ModuleInterface;
53
+ export declare function packageStableModulePath(name: string, version: string, relativeSourcePath: string): string;
54
+ export declare function loadVelarLibraryArtifact(options: {
55
+ readonly packageRoot: string;
56
+ readonly packageName: string;
57
+ readonly packageVersion: string;
58
+ readonly sourceEntry: string;
59
+ readonly descriptor: string;
60
+ readonly target: VelarLibraryArtifactTarget;
61
+ readonly packageExports: unknown;
62
+ }): Promise<LoadedVelarLibraryArtifact>;
63
+ //# sourceMappingURL=library-artifact.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"library-artifact.d.ts","sourceRoot":"","sources":["../src/library-artifact.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAG7D,qFAAqF;AACrF,eAAO,MAAM,yBAAyB,IAAI,CAAC;AAE3C,MAAM,MAAM,0BAA0B,GAAG,MAAM,GAAG,MAAM,CAAC;AAEzD,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,0BAA0B,CAAC;IAC5C,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAC;CAC3C;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,aAAa,EAAE,CAAC,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,wBAAwB,CAAC;IACxC,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IACtE,QAAQ,CAAC,MAAM,EAAE,0BAA0B,CAAC;IAC5C,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,SAAS;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAChF,QAAQ,CAAC,KAAK,EAAE;QACd,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;QAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,MAAM,EAAE;YACf,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;YAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;YAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;SAC5B,CAAC;KACH,CAAC;CACH;AAqBD,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,UAAU,EAAE,eAAe,GAAG,MAAM,CAkC/E;AAED,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,CA0CzE;AAED,0FAA0F;AAC1F,wBAAgB,+BAA+B,CAC7C,UAAU,EAAE,eAAe,EAC3B,YAAY,EAAE,SAAS;IAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,EAAE,GAC/E,eAAe,CAoBjB;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,GAAG,MAAM,CAEzG;AAED,wBAAsB,wBAAwB,CAAC,OAAO,EAAE;IACtD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,0BAA0B,CAAC;IAC5C,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;CAClC,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAwCtC"}