@calltelemetry/ct-lab-mcp 0.8.22 → 0.8.23

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 (42) hide show
  1. package/README.md +97 -0
  2. package/dist/src/canonical/bridge.d.ts +6 -0
  3. package/dist/src/canonical/bridge.d.ts.map +1 -1
  4. package/dist/src/canonical/bridge.js +90 -9
  5. package/dist/src/canonical/bridge.js.map +1 -1
  6. package/dist/src/credentials/resolver.d.ts +7 -1
  7. package/dist/src/credentials/resolver.d.ts.map +1 -1
  8. package/dist/src/credentials/resolver.js +83 -0
  9. package/dist/src/credentials/resolver.js.map +1 -1
  10. package/dist/src/credentials/types.d.ts +7 -0
  11. package/dist/src/credentials/types.d.ts.map +1 -1
  12. package/dist/src/server.d.ts.map +1 -1
  13. package/dist/src/server.js +3 -1
  14. package/dist/src/server.js.map +1 -1
  15. package/dist/src/tools/canonical-guard.d.ts +28 -0
  16. package/dist/src/tools/canonical-guard.d.ts.map +1 -1
  17. package/dist/src/tools/canonical-guard.js +107 -0
  18. package/dist/src/tools/canonical-guard.js.map +1 -1
  19. package/dist/src/tools/credential-status.d.ts.map +1 -1
  20. package/dist/src/tools/credential-status.js +29 -3
  21. package/dist/src/tools/credential-status.js.map +1 -1
  22. package/dist/src/tools/index.d.ts +1 -0
  23. package/dist/src/tools/index.d.ts.map +1 -1
  24. package/dist/src/tools/index.js +15 -8
  25. package/dist/src/tools/index.js.map +1 -1
  26. package/dist/src/tools/lab-dev.d.ts +607 -0
  27. package/dist/src/tools/lab-dev.d.ts.map +1 -0
  28. package/dist/src/tools/lab-dev.js +404 -0
  29. package/dist/src/tools/lab-dev.js.map +1 -0
  30. package/dist/src/tools/provision-tools.d.ts +36 -0
  31. package/dist/src/tools/provision-tools.d.ts.map +1 -1
  32. package/dist/src/tools/provision-tools.js +37 -4
  33. package/dist/src/tools/provision-tools.js.map +1 -1
  34. package/dist/src/tools/vm-cleanup.d.ts +21 -0
  35. package/dist/src/tools/vm-cleanup.d.ts.map +1 -1
  36. package/dist/src/tools/vm-cleanup.js +233 -2
  37. package/dist/src/tools/vm-cleanup.js.map +1 -1
  38. package/dist/src/tools/vm-repair.d.ts +98 -0
  39. package/dist/src/tools/vm-repair.d.ts.map +1 -0
  40. package/dist/src/tools/vm-repair.js +60 -0
  41. package/dist/src/tools/vm-repair.js.map +1 -0
  42. package/package.json +1 -1
@@ -0,0 +1,404 @@
1
+ /** Strict canonical façade for the leased remote development lifecycle. */
2
+ import { z } from "zod";
3
+ import { ProxmoxErrorCode, createToolErrorResult, createToolSuccessResult, } from "../types/mcp.js";
4
+ import { resolve as resolvePath } from "node:path";
5
+ import { isDeepStrictEqual } from "node:util";
6
+ import { canonicalMode, canonicalOperationBlocked, runCanonicalOperation, } from "./canonical-guard.js";
7
+ const MAX_RECEIPT_PATH_LENGTH = 4096;
8
+ const CANONICAL_IDENTIFIER = /^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$/;
9
+ const LINEAR_ISSUE = /^[A-Z][A-Z0-9]*-[1-9][0-9]*$/;
10
+ function identityField(name) {
11
+ return z
12
+ .string()
13
+ .trim()
14
+ .min(1)
15
+ .max(128, `${name} is too long`)
16
+ .refine((value) => !value.startsWith("-"), `${name} must not start with '-'`)
17
+ .refine((value) => !/\s/.test(value), `${name} must not contain whitespace`)
18
+ .refine((value) => !value.includes("\0"), `${name} must not contain a NUL byte`)
19
+ .refine((value) => CANONICAL_IDENTIFIER.test(value), `${name} must use a canonical identifier`);
20
+ }
21
+ const linearIssueField = identityField("linearIssue").refine((value) => LINEAR_ISSUE.test(value), "linearIssue must be a Linear issue key");
22
+ const workspaceReference = identityField("workspaceRef").refine((value) => !value.includes("/") && !value.includes("\\"), "workspaceRef must be an allowlisted reference, not a path");
23
+ const receiptPath = z
24
+ .string()
25
+ .trim()
26
+ .min(1)
27
+ .max(MAX_RECEIPT_PATH_LENGTH)
28
+ .refine((value) => !value.startsWith("-"), "receipt paths must not start with '-'")
29
+ .refine((value) => !/[\0\r\n]/.test(value), "receipt paths must not contain NUL or newline bytes")
30
+ .refine((value) => !/^[A-Za-z][A-Za-z0-9+.-]*:\/\//.test(value), "receipt paths must be local paths guarded by the canonical authority");
31
+ const sourceDigest = z
32
+ .string()
33
+ .trim()
34
+ .regex(/^sha256:[a-f0-9]{64}$/, "sourceDigest must be sha256:<64 lowercase hex characters>");
35
+ const profile = z.literal("ct-local-dev-v1");
36
+ const requiredIdentityShape = {
37
+ assetId: identityField("assetId"),
38
+ leaseId: identityField("leaseId"),
39
+ linearIssue: linearIssueField,
40
+ };
41
+ const optionalIdentityShape = {
42
+ assetId: requiredIdentityShape.assetId.optional(),
43
+ leaseId: requiredIdentityShape.leaseId.optional(),
44
+ linearIssue: requiredIdentityShape.linearIssue.optional(),
45
+ };
46
+ const doctorSchema = z
47
+ .object({
48
+ action: z.literal("doctor"),
49
+ profile,
50
+ ...optionalIdentityShape,
51
+ })
52
+ .strict();
53
+ const planSchema = z
54
+ .object({
55
+ action: z.literal("plan"),
56
+ ...requiredIdentityShape,
57
+ profile,
58
+ workspaceRef: workspaceReference,
59
+ operationId: identityField("operationId"),
60
+ sourceDigest,
61
+ receiptFile: receiptPath,
62
+ })
63
+ .strict();
64
+ const statusSchema = z
65
+ .object({
66
+ action: z.literal("status"),
67
+ ...requiredIdentityShape,
68
+ operationId: identityField("operationId").optional(),
69
+ })
70
+ .strict();
71
+ const appliedLifecycleShape = {
72
+ ...requiredIdentityShape,
73
+ operationId: identityField("operationId"),
74
+ profile,
75
+ workspaceRef: workspaceReference,
76
+ sourceDigest,
77
+ planReceiptFile: receiptPath,
78
+ receiptFile: receiptPath,
79
+ apply: z.boolean().optional().default(false),
80
+ confirmAssetId: identityField("confirmAssetId").optional(),
81
+ };
82
+ const startSchema = z
83
+ .object({
84
+ action: z.literal("start"),
85
+ ...appliedLifecycleShape,
86
+ })
87
+ .strict();
88
+ const syncSchema = z
89
+ .object({
90
+ action: z.literal("sync"),
91
+ ...appliedLifecycleShape,
92
+ })
93
+ .strict();
94
+ const cleanupLifecycleShape = {
95
+ ...requiredIdentityShape,
96
+ operationId: identityField("operationId"),
97
+ planReceiptFile: receiptPath,
98
+ receiptFile: receiptPath,
99
+ apply: z.boolean().optional().default(false),
100
+ confirmAssetId: identityField("confirmAssetId").optional(),
101
+ };
102
+ const stopSchema = z
103
+ .object({
104
+ action: z.literal("stop"),
105
+ ...cleanupLifecycleShape,
106
+ })
107
+ .strict();
108
+ const cleanupSchema = z
109
+ .object({
110
+ action: z.literal("cleanup"),
111
+ ...cleanupLifecycleShape,
112
+ })
113
+ .strict();
114
+ /**
115
+ * Runtime validation uses a strict discriminated union. Each action owns its
116
+ * allowed fields so a status request cannot accidentally become a lifecycle
117
+ * mutation by carrying fields from another action.
118
+ */
119
+ export const LabDevInputObjectSchema = z.discriminatedUnion("action", [
120
+ doctorSchema,
121
+ planSchema,
122
+ startSchema,
123
+ statusSchema,
124
+ syncSchema,
125
+ stopSchema,
126
+ cleanupSchema,
127
+ ]);
128
+ export const LabDevInputSchema = LabDevInputObjectSchema.superRefine((value, context) => {
129
+ if (value.action === "doctor") {
130
+ const providedIdentityFields = [value.assetId, value.leaseId, value.linearIssue].filter((field) => field !== undefined).length;
131
+ if (providedIdentityFields !== 0 && providedIdentityFields !== 3) {
132
+ context.addIssue({
133
+ code: z.ZodIssueCode.custom,
134
+ path: ["assetId"],
135
+ message: "assetId, leaseId, and linearIssue must be provided together",
136
+ });
137
+ }
138
+ return;
139
+ }
140
+ if (value.action === "start" || value.action === "sync") {
141
+ if (receiptPathsMatch(value.planReceiptFile, value.receiptFile)) {
142
+ context.addIssue({
143
+ code: z.ZodIssueCode.custom,
144
+ path: ["receiptFile"],
145
+ message: "planReceiptFile and receiptFile must be different paths",
146
+ });
147
+ }
148
+ }
149
+ if (value.action === "stop" || value.action === "cleanup") {
150
+ if (receiptPathsMatch(value.planReceiptFile, value.receiptFile)) {
151
+ context.addIssue({
152
+ code: z.ZodIssueCode.custom,
153
+ path: ["receiptFile"],
154
+ message: "planReceiptFile and receiptFile must be different paths",
155
+ });
156
+ }
157
+ }
158
+ if (value.action === "start"
159
+ || value.action === "sync"
160
+ || value.action === "stop"
161
+ || value.action === "cleanup") {
162
+ if (value.apply && value.confirmAssetId !== value.assetId) {
163
+ context.addIssue({
164
+ code: z.ZodIssueCode.custom,
165
+ path: ["confirmAssetId"],
166
+ message: "must exactly match assetId when apply=true",
167
+ });
168
+ }
169
+ if (!value.apply && value.confirmAssetId !== undefined) {
170
+ context.addIssue({
171
+ code: z.ZodIssueCode.custom,
172
+ path: ["confirmAssetId"],
173
+ message: "is only allowed when apply=true",
174
+ });
175
+ }
176
+ }
177
+ });
178
+ /**
179
+ * MCP SDK tools/list serializes only object schemas, not top-level refined
180
+ * unions. Expose the known typed fields for discovery, then apply the strict
181
+ * action union above in the handler before constructing any canonical argv.
182
+ * Do not put defaults here: that would inject disallowed fields into actions.
183
+ */
184
+ export const LabDevAdvertisedInputSchema = z.object({
185
+ action: z.enum(["doctor", "plan", "start", "status", "sync", "stop", "cleanup"]),
186
+ assetId: requiredIdentityShape.assetId.optional().describe("Required except doctor; exact canonical asset identity."),
187
+ leaseId: requiredIdentityShape.leaseId.optional().describe("Required except doctor; active exact lease."),
188
+ linearIssue: linearIssueField.optional().describe("Required except doctor; provide all three identity fields together."),
189
+ profile: profile.optional().describe("Required for doctor, plan, start, sync; forbidden for status, stop, cleanup."),
190
+ workspaceRef: workspaceReference.optional().describe("Required for plan, start, sync; locally registered reference, never a path."),
191
+ operationId: identityField("operationId").optional().describe("Required except doctor; optional for status. Reuse exact operation for reconciliation."),
192
+ sourceDigest: sourceDigest.optional().describe("Required for plan, start, sync; immutable source snapshot digest."),
193
+ receiptFile: receiptPath.optional().describe("Required for plan and mutations; canonical private output receipt path."),
194
+ planReceiptFile: receiptPath.optional().describe("Required for start, sync, stop, cleanup; different from receiptFile."),
195
+ apply: z.boolean().optional().describe("Allowed only for start, sync, stop, cleanup; omitted means no apply."),
196
+ confirmAssetId: identityField("confirmAssetId").optional().describe("Only with apply=true; must exactly match assetId."),
197
+ }).strict();
198
+ function receiptPathsMatch(left, right) {
199
+ return resolvePath(left) === resolvePath(right);
200
+ }
201
+ function appendIdentity(command, value) {
202
+ command.push("--asset-id", value.assetId, "--lease-id", value.leaseId, "--linear-issue", value.linearIssue);
203
+ }
204
+ function appendApply(command, value) {
205
+ if (value.apply) {
206
+ command.push("--apply", "--confirm-asset-id", value.confirmAssetId);
207
+ }
208
+ }
209
+ /** Build only the fixed, typed canonical argv for a validated request. */
210
+ export function buildLabDevCommand(value) {
211
+ const command = ["dev", value.action];
212
+ switch (value.action) {
213
+ case "doctor":
214
+ command.push("--profile", value.profile);
215
+ if (value.assetId && value.leaseId && value.linearIssue) {
216
+ appendIdentity(command, value);
217
+ }
218
+ return command;
219
+ case "plan":
220
+ command.push("--profile", value.profile, "--workspace-ref", value.workspaceRef);
221
+ appendIdentity(command, value);
222
+ command.push("--operation-id", value.operationId, "--source-digest", value.sourceDigest, "--receipt-file", value.receiptFile);
223
+ return command;
224
+ case "status":
225
+ appendIdentity(command, value);
226
+ if (value.operationId)
227
+ command.push("--operation-id", value.operationId);
228
+ return command;
229
+ case "start":
230
+ case "sync":
231
+ appendIdentity(command, value);
232
+ command.push("--operation-id", value.operationId, "--profile", value.profile, "--workspace-ref", value.workspaceRef, "--source-digest", value.sourceDigest, "--plan-receipt-file", value.planReceiptFile, "--receipt-file", value.receiptFile);
233
+ appendApply(command, value);
234
+ return command;
235
+ case "stop":
236
+ case "cleanup":
237
+ appendIdentity(command, value);
238
+ command.push("--operation-id", value.operationId, "--plan-receipt-file", value.planReceiptFile, "--receipt-file", value.receiptFile);
239
+ appendApply(command, value);
240
+ return command;
241
+ }
242
+ }
243
+ const CanonicalDevResultSchema = z.object({
244
+ schema: z.literal("calltelemetry-lab-dev/v1"),
245
+ action: z.enum(["doctor", "plan", "start", "status", "sync", "stop", "cleanup"]),
246
+ status: z.string().min(1),
247
+ ready: z.boolean(),
248
+ }).passthrough();
249
+ const ERROR_STATUSES = new Set([
250
+ "blocked", "failed", "unavailable", "rejected", "conflict", "rebuild_required",
251
+ "unknown", "unknown-after-timeout",
252
+ ]);
253
+ const PENDING_STATUSES = new Set(["running", "pending", "starting", "syncing"]);
254
+ const NORMAL_STATUSES = {
255
+ doctor: new Set(["diagnosed"]),
256
+ plan: new Set(["planned"]),
257
+ start: new Set(["ready", ...PENDING_STATUSES]),
258
+ sync: new Set(["ready", ...PENDING_STATUSES]),
259
+ status: new Set(["planned", "not_started", "ready", "stopped", "cleaned", ...PENDING_STATUSES]),
260
+ stop: new Set(["stopped", ...PENDING_STATUSES]),
261
+ cleanup: new Set(["cleaned", ...PENDING_STATUSES]),
262
+ };
263
+ function objectValue(value) {
264
+ return value !== null && typeof value === "object" && !Array.isArray(value)
265
+ ? value : undefined;
266
+ }
267
+ function receiptMatchesInput(input, result) {
268
+ const identity = objectValue(result.identity);
269
+ for (const [field, receiptField] of [
270
+ ["assetId", "asset_id"], ["leaseId", "lease_id"], ["linearIssue", "linear_issue"],
271
+ ]) {
272
+ if (input[field] !== undefined && identity?.[receiptField] !== input[field])
273
+ return false;
274
+ }
275
+ for (const [field, receiptField] of [
276
+ ["operationId", "operation_id"], ["workspaceRef", "workspace_ref"],
277
+ ["profile", "profile"], ["receiptFile", "receipt_file"],
278
+ ]) {
279
+ if (field in input && result[receiptField] !== input[field])
280
+ return false;
281
+ }
282
+ if ("sourceDigest" in input) {
283
+ const source = objectValue(result[input.action === "plan" ? "source" : "requested_source"]);
284
+ if (source?.sourceDigest !== input.sourceDigest)
285
+ return false;
286
+ }
287
+ return true;
288
+ }
289
+ function readyReceiptIsBoundAndFresh(result) {
290
+ const request = objectValue(result.request);
291
+ const identity = objectValue(result.identity);
292
+ const requestIdentity = objectValue(request?.identity);
293
+ const source = objectValue(result.requested_source);
294
+ const requestSource = objectValue(request?.requested_source);
295
+ const observedAction = result.action === "status" ? result.observed_action : result.action;
296
+ const observedAt = typeof result.observed_at === "string" && /T.*(?:Z|[+-]\d{2}:\d{2})$/.test(result.observed_at)
297
+ ? Date.parse(result.observed_at) : NaN;
298
+ const ageMs = Date.now() - observedAt;
299
+ if (!request || request.schema !== "calltelemetry-lab-dev/v1"
300
+ || (observedAction !== "start" && observedAction !== "sync")
301
+ || request.action !== observedAction
302
+ || !Number.isFinite(ageMs) || ageMs < -5_000 || ageMs > 30_000
303
+ || typeof result.operation_id !== "string" || !CANONICAL_IDENTIFIER.test(result.operation_id)
304
+ || typeof result.workspace_ref !== "string" || !CANONICAL_IDENTIFIER.test(result.workspace_ref)
305
+ || result.profile !== "ct-local-dev-v1"
306
+ || !isDeepStrictEqual(requestIdentity, identity)
307
+ || !["operation_id", "workspace_ref", "profile", "session_id", "plan_sha256"].every((key) => request[key] === result[key])
308
+ || !isDeepStrictEqual(requestSource, source))
309
+ return false;
310
+ // The canonical controller validates planReceiptFile and computes this digest.
311
+ // The facade never opens a caller-selected path or duplicates that authority.
312
+ return typeof result.plan_sha256 === "string" && /^sha256:[a-f0-9]{64}$/.test(result.plan_sha256)
313
+ && typeof result.session_id === "string" && /^sha256:[a-f0-9]{64}$/.test(result.session_id);
314
+ }
315
+ /** Preserve the canonical receipt while distinguishing dispatch from readiness. */
316
+ function classifyLabDevResult(input, canonical) {
317
+ const wrapper = objectValue(canonical.structuredContent);
318
+ const error = objectValue(wrapper?.error);
319
+ const details = objectValue(error?.details);
320
+ const envelope = canonical.isError ? details : wrapper;
321
+ const transportSuccess = canonical.isError !== true && envelope?.success === true;
322
+ const timedOut = envelope?.timedOut === true;
323
+ const parsed = CanonicalDevResultSchema.safeParse(envelope?.result);
324
+ const result = parsed.success ? parsed.data : undefined;
325
+ const status = timedOut ? "unknown-after-timeout" : result?.status ?? "unavailable";
326
+ const payload = {
327
+ ...(envelope ?? {}),
328
+ // Do not echo malformed protocol text or partial output as receipt evidence.
329
+ result,
330
+ operation: "lab_dev",
331
+ action: input.action,
332
+ transportSuccess,
333
+ accepted: false,
334
+ actionSuccess: false,
335
+ success: false,
336
+ status,
337
+ ready: false,
338
+ runtimeReady: false,
339
+ // Mutation outcome cannot be inferred from a killed controller process.
340
+ ...(timedOut ? { mutation_performed: null, nextAction: "status" } : {}),
341
+ };
342
+ if (!transportSuccess) {
343
+ return createToolErrorResult(typeof error?.code === "string" ? error.code : "CANONICAL_OPERATION_FAILED", timedOut ? "The controller timed out; inspect status before retrying the exact operation."
344
+ : "The canonical remote-development operation did not complete successfully.", payload);
345
+ }
346
+ if (!result || result.action !== input.action) {
347
+ return createToolErrorResult("CANONICAL_DEV_INVALID_RESULT", "The canonical remote-development response has no valid action receipt.", payload);
348
+ }
349
+ if (ERROR_STATUSES.has(status) || !NORMAL_STATUSES[input.action].has(status)) {
350
+ return createToolErrorResult("CANONICAL_DEV_NOT_READY", "The canonical remote-development action requires repair or reconciliation.", { ...payload, ...(status === "unknown-after-timeout" ? { nextAction: "status", mutation_performed: null } : {}) });
351
+ }
352
+ if (!receiptMatchesInput(input, result)) {
353
+ return createToolErrorResult("CANONICAL_DEV_INVALID_RESULT", "The canonical receipt does not match the requested identity, operation, workspace or source.", payload);
354
+ }
355
+ // A stopped or planned operation is not an application-readiness claim.
356
+ // Contradictory status/ready combinations must never become capture proof.
357
+ if ((status === "ready") !== result.ready) {
358
+ return createToolErrorResult("CANONICAL_DEV_INVALID_RESULT", "The canonical status contradicts its readiness evidence.", payload);
359
+ }
360
+ if (result.ready) {
361
+ const checks = objectValue(result.checks);
362
+ const requestedSource = objectValue(result.requested_source);
363
+ const requestedDigest = result.requested_source_digest;
364
+ if (!readyReceiptIsBoundAndFresh(result)
365
+ || result.operation_state !== "succeeded" || result.runtime_state !== "running"
366
+ || result.sync_state !== "synchronized"
367
+ || !["private_transport", "api_health", "spa_health"].every((key) => checks?.[key] === true)
368
+ || typeof requestedDigest !== "string" || !/^sha256:[a-f0-9]{64}$/.test(requestedDigest)
369
+ || result.observed_source_digest !== requestedDigest
370
+ || requestedSource?.sourceDigest !== requestedDigest
371
+ || typeof requestedSource.dependencyDigest !== "string"
372
+ || !/^sha256:[a-f0-9]{64}$/.test(requestedSource.dependencyDigest)
373
+ || result.observed_dependency_digest !== requestedSource.dependencyDigest) {
374
+ return createToolErrorResult("CANONICAL_DEV_INVALID_RESULT", "Readiness is not supported by synchronized source and healthy runtime evidence.", payload);
375
+ }
376
+ }
377
+ if ("apply" in input && !input.apply) {
378
+ return createToolErrorResult("CANONICAL_DEV_INVALID_RESULT", "A lifecycle action without apply cannot return execution success; use the explicit plan action.", payload);
379
+ }
380
+ const pending = PENDING_STATUSES.has(status);
381
+ const normalized = {
382
+ ...payload,
383
+ accepted: true,
384
+ actionSuccess: !pending,
385
+ success: !pending,
386
+ ready: result.ready,
387
+ runtimeReady: result.ready,
388
+ };
389
+ return createToolSuccessResult(JSON.stringify(normalized), normalized);
390
+ }
391
+ export async function handleLabDev(rawArgs, context) {
392
+ const parsed = LabDevInputSchema.safeParse(rawArgs);
393
+ if (!parsed.success) {
394
+ return createToolErrorResult(ProxmoxErrorCode.VALIDATION_ERROR, parsed.error.errors
395
+ .map((error) => `${error.path.join(".") || "input"}: ${error.message}`)
396
+ .join("; "), { operation: "lab_dev" });
397
+ }
398
+ if (!canonicalMode(context)) {
399
+ return canonicalOperationBlocked("lab_dev", "remote development is owned by the canonical lab lifecycle; no legacy or mock fallback is available");
400
+ }
401
+ const result = await runCanonicalOperation(context.canonicalBridge, "lab_dev", buildLabDevCommand(parsed.data));
402
+ return classifyLabDevResult(parsed.data, result);
403
+ }
404
+ //# sourceMappingURL=lab-dev.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lab-dev.js","sourceRoot":"","sources":["../../../src/tools/lab-dev.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAE3E,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAEL,gBAAgB,EAChB,qBAAqB,EACrB,uBAAuB,GACxB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAE9C,OAAO,EACL,aAAa,EACb,yBAAyB,EACzB,qBAAqB,GACtB,MAAM,sBAAsB,CAAC;AAE9B,MAAM,uBAAuB,GAAG,IAAI,CAAC;AACrC,MAAM,oBAAoB,GAAG,qCAAqC,CAAC;AACnE,MAAM,YAAY,GAAG,8BAA8B,CAAC;AAEpD,SAAS,aAAa,CAAC,IAAY;IACjC,OAAO,CAAC;SACL,MAAM,EAAE;SACR,IAAI,EAAE;SACN,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,cAAc,CAAC;SAC/B,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,0BAA0B,CAAC;SAC5E,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,8BAA8B,CAAC;SAC3E,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,8BAA8B,CAAC;SAC/E,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,kCAAkC,CAAC,CAAC;AACpG,CAAC;AAED,MAAM,gBAAgB,GAAG,aAAa,CAAC,aAAa,CAAC,CAAC,MAAM,CAC1D,CAAC,KAAK,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,EACnC,wCAAwC,CACzC,CAAC;AAEF,MAAM,kBAAkB,GAAG,aAAa,CAAC,cAAc,CAAC,CAAC,MAAM,CAC7D,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EACxD,2DAA2D,CAC5D,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC;KAClB,MAAM,EAAE;KACR,IAAI,EAAE;KACN,GAAG,CAAC,CAAC,CAAC;KACN,GAAG,CAAC,uBAAuB,CAAC;KAC5B,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,uCAAuC,CAAC;KAClF,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,qDAAqD,CAAC;KACjG,MAAM,CACL,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,+BAA+B,CAAC,IAAI,CAAC,KAAK,CAAC,EACvD,sEAAsE,CACvE,CAAC;AAEJ,MAAM,YAAY,GAAG,CAAC;KACnB,MAAM,EAAE;KACR,IAAI,EAAE;KACN,KAAK,CAAC,uBAAuB,EAAE,2DAA2D,CAAC,CAAC;AAE/F,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAE7C,MAAM,qBAAqB,GAAG;IAC5B,OAAO,EAAE,aAAa,CAAC,SAAS,CAAC;IACjC,OAAO,EAAE,aAAa,CAAC,SAAS,CAAC;IACjC,WAAW,EAAE,gBAAgB;CAC9B,CAAC;AAEF,MAAM,qBAAqB,GAAG;IAC5B,OAAO,EAAE,qBAAqB,CAAC,OAAO,CAAC,QAAQ,EAAE;IACjD,OAAO,EAAE,qBAAqB,CAAC,OAAO,CAAC,QAAQ,EAAE;IACjD,WAAW,EAAE,qBAAqB,CAAC,WAAW,CAAC,QAAQ,EAAE;CAC1D,CAAC;AAEF,MAAM,YAAY,GAAG,CAAC;KACnB,MAAM,CAAC;IACN,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;IAC3B,OAAO;IACP,GAAG,qBAAqB;CACzB,CAAC;KACD,MAAM,EAAE,CAAC;AAEZ,MAAM,UAAU,GAAG,CAAC;KACjB,MAAM,CAAC;IACN,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;IACzB,GAAG,qBAAqB;IACxB,OAAO;IACP,YAAY,EAAE,kBAAkB;IAChC,WAAW,EAAE,aAAa,CAAC,aAAa,CAAC;IACzC,YAAY;IACZ,WAAW,EAAE,WAAW;CACzB,CAAC;KACD,MAAM,EAAE,CAAC;AAEZ,MAAM,YAAY,GAAG,CAAC;KACnB,MAAM,CAAC;IACN,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;IAC3B,GAAG,qBAAqB;IACxB,WAAW,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC,QAAQ,EAAE;CACrD,CAAC;KACD,MAAM,EAAE,CAAC;AAEZ,MAAM,qBAAqB,GAAG;IAC5B,GAAG,qBAAqB;IACxB,WAAW,EAAE,aAAa,CAAC,aAAa,CAAC;IACzC,OAAO;IACP,YAAY,EAAE,kBAAkB;IAChC,YAAY;IACZ,eAAe,EAAE,WAAW;IAC5B,WAAW,EAAE,WAAW;IACxB,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IAC5C,cAAc,EAAE,aAAa,CAAC,gBAAgB,CAAC,CAAC,QAAQ,EAAE;CAC3D,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC;KAClB,MAAM,CAAC;IACN,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;IAC1B,GAAG,qBAAqB;CACzB,CAAC;KACD,MAAM,EAAE,CAAC;AAEZ,MAAM,UAAU,GAAG,CAAC;KACjB,MAAM,CAAC;IACN,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;IACzB,GAAG,qBAAqB;CACzB,CAAC;KACD,MAAM,EAAE,CAAC;AAEZ,MAAM,qBAAqB,GAAG;IAC5B,GAAG,qBAAqB;IACxB,WAAW,EAAE,aAAa,CAAC,aAAa,CAAC;IACzC,eAAe,EAAE,WAAW;IAC5B,WAAW,EAAE,WAAW;IACxB,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IAC5C,cAAc,EAAE,aAAa,CAAC,gBAAgB,CAAC,CAAC,QAAQ,EAAE;CAC3D,CAAC;AAEF,MAAM,UAAU,GAAG,CAAC;KACjB,MAAM,CAAC;IACN,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;IACzB,GAAG,qBAAqB;CACzB,CAAC;KACD,MAAM,EAAE,CAAC;AAEZ,MAAM,aAAa,GAAG,CAAC;KACpB,MAAM,CAAC;IACN,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;IAC5B,GAAG,qBAAqB;CACzB,CAAC;KACD,MAAM,EAAE,CAAC;AAEZ;;;;GAIG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,kBAAkB,CAAC,QAAQ,EAAE;IACpE,YAAY;IACZ,UAAU;IACV,WAAW;IACX,YAAY;IACZ,UAAU;IACV,UAAU;IACV,aAAa;CACd,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,iBAAiB,GAAG,uBAAuB,CAAC,WAAW,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACtF,IAAI,KAAK,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,sBAAsB,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC,MAAM,CACrF,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,CAC/B,CAAC,MAAM,CAAC;QACT,IAAI,sBAAsB,KAAK,CAAC,IAAI,sBAAsB,KAAK,CAAC,EAAE,CAAC;YACjE,OAAO,CAAC,QAAQ,CAAC;gBACf,IAAI,EAAE,CAAC,CAAC,YAAY,CAAC,MAAM;gBAC3B,IAAI,EAAE,CAAC,SAAS,CAAC;gBACjB,OAAO,EAAE,6DAA6D;aACvE,CAAC,CAAC;QACL,CAAC;QACD,OAAO;IACT,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,KAAK,OAAO,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;QACxD,IAAI,iBAAiB,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;YAChE,OAAO,CAAC,QAAQ,CAAC;gBACf,IAAI,EAAE,CAAC,CAAC,YAAY,CAAC,MAAM;gBAC3B,IAAI,EAAE,CAAC,aAAa,CAAC;gBACrB,OAAO,EAAE,yDAAyD;aACnE,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC1D,IAAI,iBAAiB,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;YAChE,OAAO,CAAC,QAAQ,CAAC;gBACf,IAAI,EAAE,CAAC,CAAC,YAAY,CAAC,MAAM;gBAC3B,IAAI,EAAE,CAAC,aAAa,CAAC;gBACrB,OAAO,EAAE,yDAAyD;aACnE,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,IACE,KAAK,CAAC,MAAM,KAAK,OAAO;WACrB,KAAK,CAAC,MAAM,KAAK,MAAM;WACvB,KAAK,CAAC,MAAM,KAAK,MAAM;WACvB,KAAK,CAAC,MAAM,KAAK,SAAS,EAC7B,CAAC;QACD,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,cAAc,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC;YAC1D,OAAO,CAAC,QAAQ,CAAC;gBACf,IAAI,EAAE,CAAC,CAAC,YAAY,CAAC,MAAM;gBAC3B,IAAI,EAAE,CAAC,gBAAgB,CAAC;gBACxB,OAAO,EAAE,4CAA4C;aACtD,CAAC,CAAC;QACL,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;YACvD,OAAO,CAAC,QAAQ,CAAC;gBACf,IAAI,EAAE,CAAC,CAAC,YAAY,CAAC,MAAM;gBAC3B,IAAI,EAAE,CAAC,gBAAgB,CAAC;gBACxB,OAAO,EAAE,iCAAiC;aAC3C,CAAC,CAAC;QACL,CAAC;IACH,CAAC;AACH,CAAC,CAAC,CAAC;AAEH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC,MAAM,CAAC;IAClD,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;IAChF,OAAO,EAAE,qBAAqB,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yDAAyD,CAAC;IACrH,OAAO,EAAE,qBAAqB,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6CAA6C,CAAC;IACzG,WAAW,EAAE,gBAAgB,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qEAAqE,CAAC;IACxH,OAAO,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8EAA8E,CAAC;IACpH,YAAY,EAAE,kBAAkB,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6EAA6E,CAAC;IACnI,WAAW,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wFAAwF,CAAC;IACvJ,YAAY,EAAE,YAAY,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mEAAmE,CAAC;IACnH,WAAW,EAAE,WAAW,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yEAAyE,CAAC;IACvH,eAAe,EAAE,WAAW,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sEAAsE,CAAC;IACxH,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sEAAsE,CAAC;IAC9G,cAAc,EAAE,aAAa,CAAC,gBAAgB,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mDAAmD,CAAC;CACzH,CAAC,CAAC,MAAM,EAAE,CAAC;AAEZ,SAAS,iBAAiB,CAAC,IAAY,EAAE,KAAa;IACpD,OAAO,WAAW,CAAC,IAAI,CAAC,KAAK,WAAW,CAAC,KAAK,CAAC,CAAC;AAClD,CAAC;AAWD,SAAS,cAAc,CAAC,OAAiB,EAAE,KAAuB;IAChE,OAAO,CAAC,IAAI,CACV,YAAY,EACZ,KAAK,CAAC,OAAO,EACb,YAAY,EACZ,KAAK,CAAC,OAAO,EACb,gBAAgB,EAChB,KAAK,CAAC,WAAW,CAClB,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,OAAiB,EAAE,KAAkD;IACxF,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAChB,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,oBAAoB,EAAE,KAAK,CAAC,cAAe,CAAC,CAAC;IACvE,CAAC;AACH,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,kBAAkB,CAAC,KAAkB;IACnD,MAAM,OAAO,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAEtC,QAAQ,KAAK,CAAC,MAAM,EAAE,CAAC;QACrB,KAAK,QAAQ;YACX,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YACzC,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;gBACxD,cAAc,CAAC,OAAO,EAAE,KAAyB,CAAC,CAAC;YACrD,CAAC;YACD,OAAO,OAAO,CAAC;QACjB,KAAK,MAAM;YACT,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,OAAO,EAAE,iBAAiB,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;YAChF,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YAC/B,OAAO,CAAC,IAAI,CACV,gBAAgB,EAChB,KAAK,CAAC,WAAW,EACjB,iBAAiB,EACjB,KAAK,CAAC,YAAY,EAClB,gBAAgB,EAChB,KAAK,CAAC,WAAW,CAClB,CAAC;YACF,OAAO,OAAO,CAAC;QACjB,KAAK,QAAQ;YACX,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YAC/B,IAAI,KAAK,CAAC,WAAW;gBAAE,OAAO,CAAC,IAAI,CAAC,gBAAgB,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;YACzE,OAAO,OAAO,CAAC;QACjB,KAAK,OAAO,CAAC;QACb,KAAK,MAAM;YACT,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YAC/B,OAAO,CAAC,IAAI,CACV,gBAAgB,EAChB,KAAK,CAAC,WAAW,EACjB,WAAW,EACX,KAAK,CAAC,OAAO,EACb,iBAAiB,EACjB,KAAK,CAAC,YAAY,EAClB,iBAAiB,EACjB,KAAK,CAAC,YAAY,EAClB,qBAAqB,EACrB,KAAK,CAAC,eAAe,EACrB,gBAAgB,EAChB,KAAK,CAAC,WAAW,CAClB,CAAC;YACF,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YAC5B,OAAO,OAAO,CAAC;QACjB,KAAK,MAAM,CAAC;QACZ,KAAK,SAAS;YACZ,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YAC/B,OAAO,CAAC,IAAI,CACV,gBAAgB,EAChB,KAAK,CAAC,WAAW,EACjB,qBAAqB,EACrB,KAAK,CAAC,eAAe,EACrB,gBAAgB,EAChB,KAAK,CAAC,WAAW,CAClB,CAAC;YACF,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YAC5B,OAAO,OAAO,CAAC;IACnB,CAAC;AACH,CAAC;AAED,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,0BAA0B,CAAC;IAC7C,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;IAChF,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACzB,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE;CACnB,CAAC,CAAC,WAAW,EAAE,CAAC;AAEjB,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC;IAC7B,SAAS,EAAE,QAAQ,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,kBAAkB;IAC9E,SAAS,EAAE,uBAAuB;CACnC,CAAC,CAAC;AACH,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC;AAChF,MAAM,eAAe,GAAuD;IAC1E,MAAM,EAAE,IAAI,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC;IAC9B,IAAI,EAAE,IAAI,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC;IAC1B,KAAK,EAAE,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,GAAG,gBAAgB,CAAC,CAAC;IAC9C,IAAI,EAAE,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,GAAG,gBAAgB,CAAC,CAAC;IAC7C,MAAM,EAAE,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,aAAa,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,gBAAgB,CAAC,CAAC;IAC/F,IAAI,EAAE,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,GAAG,gBAAgB,CAAC,CAAC;IAC/C,OAAO,EAAE,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,GAAG,gBAAgB,CAAC,CAAC;CACnD,CAAC;AAEF,SAAS,WAAW,CAAC,KAAc;IACjC,OAAO,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACzE,CAAC,CAAC,KAAgC,CAAC,CAAC,CAAC,SAAS,CAAC;AACnD,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAkB,EAAE,MAA+B;IAC9E,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC9C,KAAK,MAAM,CAAC,KAAK,EAAE,YAAY,CAAC,IAAI;QAClC,CAAC,SAAS,EAAE,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC,EAAE,CAAC,aAAa,EAAE,cAAc,CAAC;KACzE,EAAE,CAAC;QACX,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,SAAS,IAAI,QAAQ,EAAE,CAAC,YAAY,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;IAC5F,CAAC;IACD,KAAK,MAAM,CAAC,KAAK,EAAE,YAAY,CAAC,IAAI;QAClC,CAAC,aAAa,EAAE,cAAc,CAAC,EAAE,CAAC,cAAc,EAAE,eAAe,CAAC;QAClE,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,CAAC,aAAa,EAAE,cAAc,CAAC;KAC/C,EAAE,CAAC;QACX,IAAI,KAAK,IAAI,KAAK,IAAI,MAAM,CAAC,YAAY,CAAC,KAAK,KAAK,CAAC,KAA0B,CAAC;YAAE,OAAO,KAAK,CAAC;IACjG,CAAC;IACD,IAAI,cAAc,IAAI,KAAK,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC;QAC5F,IAAI,MAAM,EAAE,YAAY,KAAK,KAAK,CAAC,YAAY;YAAE,OAAO,KAAK,CAAC;IAChE,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,2BAA2B,CAAC,MAA+B;IAClE,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC5C,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC9C,MAAM,eAAe,GAAG,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACvD,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;IACpD,MAAM,aAAa,GAAG,WAAW,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;IAC7D,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;IAC3F,MAAM,UAAU,GAAG,OAAO,MAAM,CAAC,WAAW,KAAK,QAAQ,IAAI,2BAA2B,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;QAC/G,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IACzC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,UAAU,CAAC;IACtC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,0BAA0B;WACxD,CAAC,cAAc,KAAK,OAAO,IAAI,cAAc,KAAK,MAAM,CAAC;WACzD,OAAO,CAAC,MAAM,KAAK,cAAc;WACjC,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,KAAK,IAAI,KAAK,GAAG,MAAM;WAC3D,OAAO,MAAM,CAAC,YAAY,KAAK,QAAQ,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;WAC1F,OAAO,MAAM,CAAC,aAAa,KAAK,QAAQ,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;WAC5F,MAAM,CAAC,OAAO,KAAK,iBAAiB;WACpC,CAAC,iBAAiB,CAAC,eAAe,EAAE,QAAQ,CAAC;WAC7C,CAAC,CAAC,cAAc,EAAE,eAAe,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,GAAG,CAAC,CAAC;WACvH,CAAC,iBAAiB,CAAC,aAAa,EAAE,MAAM,CAAC;QAAE,OAAO,KAAK,CAAC;IAC7D,+EAA+E;IAC/E,8EAA8E;IAC9E,OAAO,OAAO,MAAM,CAAC,WAAW,KAAK,QAAQ,IAAI,uBAAuB,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;WAC5F,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ,IAAI,uBAAuB,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AAChG,CAAC;AAED,mFAAmF;AACnF,SAAS,oBAAoB,CAAC,KAAkB,EAAE,SAAyB;IACzE,MAAM,OAAO,GAAG,WAAW,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;IACzD,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC1C,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC5C,MAAM,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;IACvD,MAAM,gBAAgB,GAAG,SAAS,CAAC,OAAO,KAAK,IAAI,IAAI,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;IAClF,MAAM,QAAQ,GAAG,QAAQ,EAAE,QAAQ,KAAK,IAAI,CAAC;IAC7C,MAAM,MAAM,GAAG,wBAAwB,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACpE,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;IACxD,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,IAAI,aAAa,CAAC;IACpF,MAAM,OAAO,GAAG;QACd,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC;QACnB,6EAA6E;QAC7E,MAAM;QACN,SAAS,EAAE,SAAS;QACpB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,gBAAgB;QAChB,QAAQ,EAAE,KAAK;QACf,aAAa,EAAE,KAAK;QACpB,OAAO,EAAE,KAAK;QACd,MAAM;QACN,KAAK,EAAE,KAAK;QACZ,YAAY,EAAE,KAAK;QACnB,wEAAwE;QACxE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACxE,CAAC;IACF,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,OAAO,qBAAqB,CAC1B,OAAO,KAAK,EAAE,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,4BAA4B,EAC3E,QAAQ,CAAC,CAAC,CAAC,+EAA+E;YACxF,CAAC,CAAC,2EAA2E,EAC/E,OAAO,CACR,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,EAAE,CAAC;QAC9C,OAAO,qBAAqB,CAC1B,8BAA8B,EAAE,wEAAwE,EACxG,OAAO,CACR,CAAC;IACJ,CAAC;IACD,IAAI,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7E,OAAO,qBAAqB,CAC1B,yBAAyB,EAAE,4EAA4E,EACvG,EAAE,GAAG,OAAO,EAAE,GAAG,CAAC,MAAM,KAAK,uBAAuB,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAClH,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC;QACxC,OAAO,qBAAqB,CAC1B,8BAA8B,EAAE,8FAA8F,EAAE,OAAO,CACxI,CAAC;IACJ,CAAC;IACD,wEAAwE;IACxE,2EAA2E;IAC3E,IAAI,CAAC,MAAM,KAAK,OAAO,CAAC,KAAK,MAAM,CAAC,KAAK,EAAE,CAAC;QAC1C,OAAO,qBAAqB,CAC1B,8BAA8B,EAAE,0DAA0D,EAAE,OAAO,CACpG,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC1C,MAAM,eAAe,GAAG,WAAW,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;QAC7D,MAAM,eAAe,GAAG,MAAM,CAAC,uBAAuB,CAAC;QACvD,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC;eACnC,MAAM,CAAC,eAAe,KAAK,WAAW,IAAI,MAAM,CAAC,aAAa,KAAK,SAAS;eAC5E,MAAM,CAAC,UAAU,KAAK,cAAc;eACpC,CAAC,CAAC,mBAAmB,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC;eACzF,OAAO,eAAe,KAAK,QAAQ,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,eAAe,CAAC;eACrF,MAAM,CAAC,sBAAsB,KAAK,eAAe;eACjD,eAAe,EAAE,YAAY,KAAK,eAAe;eACjD,OAAO,eAAe,CAAC,gBAAgB,KAAK,QAAQ;eACpD,CAAC,uBAAuB,CAAC,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC;eAC/D,MAAM,CAAC,0BAA0B,KAAK,eAAe,CAAC,gBAAgB,EAAE,CAAC;YAC5E,OAAO,qBAAqB,CAC1B,8BAA8B,EAAE,iFAAiF,EAAE,OAAO,CAC3H,CAAC;QACJ,CAAC;IACH,CAAC;IACD,IAAI,OAAO,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACrC,OAAO,qBAAqB,CAC1B,8BAA8B,EAAE,iGAAiG,EAAE,OAAO,CAC3I,CAAC;IACJ,CAAC;IACD,MAAM,OAAO,GAAG,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC7C,MAAM,UAAU,GAAG;QACjB,GAAG,OAAO;QACV,QAAQ,EAAE,IAAI;QACd,aAAa,EAAE,CAAC,OAAO;QACvB,OAAO,EAAE,CAAC,OAAO;QACjB,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,YAAY,EAAE,MAAM,CAAC,KAAK;KAC3B,CAAC;IACF,OAAO,uBAAuB,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC,CAAC;AACzE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,OAAiC,EACjC,OAAoB;IAEpB,MAAM,MAAM,GAAG,iBAAiB,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IACpD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,OAAO,qBAAqB,CAC1B,gBAAgB,CAAC,gBAAgB,EACjC,MAAM,CAAC,KAAK,CAAC,MAAM;aAChB,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,OAAO,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC;aACtE,IAAI,CAAC,IAAI,CAAC,EACb,EAAE,SAAS,EAAE,SAAS,EAAE,CACzB,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,OAAO,yBAAyB,CAC9B,SAAS,EACT,qGAAqG,CACtG,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,qBAAqB,CACxC,OAAO,CAAC,eAAe,EACvB,SAAS,EACT,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,CAChC,CAAC;IACF,OAAO,oBAAoB,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACnD,CAAC"}
@@ -65,6 +65,9 @@ export declare const ProvisionVmInputShape: {
65
65
  readyTimeoutSeconds: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
66
66
  description: z.ZodOptional<z.ZodString>;
67
67
  format: z.ZodDefault<z.ZodOptional<z.ZodEnum<["table", "json"]>>>;
68
+ provisionProfile: z.ZodOptional<z.ZodEnum<["appliance", "remote-dev-v1"]>>;
69
+ devArtifactDir: z.ZodOptional<z.ZodString>;
70
+ confirmBootstrapManifestSha256: z.ZodOptional<z.ZodString>;
68
71
  };
69
72
  export declare const ProvisionVmInputSchema: z.ZodEffects<z.ZodEffects<z.ZodObject<{
70
73
  assetId: z.ZodOptional<z.ZodString>;
@@ -124,6 +127,9 @@ export declare const ProvisionVmInputSchema: z.ZodEffects<z.ZodEffects<z.ZodObje
124
127
  readyTimeoutSeconds: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
125
128
  description: z.ZodOptional<z.ZodString>;
126
129
  format: z.ZodDefault<z.ZodOptional<z.ZodEnum<["table", "json"]>>>;
130
+ provisionProfile: z.ZodOptional<z.ZodEnum<["appliance", "remote-dev-v1"]>>;
131
+ devArtifactDir: z.ZodOptional<z.ZodString>;
132
+ confirmBootstrapManifestSha256: z.ZodOptional<z.ZodString>;
127
133
  }, "strip", z.ZodTypeAny, {
128
134
  hypervisorType: "proxmox" | "esxi" | "any";
129
135
  format: "table" | "json";
@@ -182,6 +188,9 @@ export declare const ProvisionVmInputSchema: z.ZodEffects<z.ZodEffects<z.ZodObje
182
188
  memoryBytes?: number | undefined;
183
189
  macAddress?: string | undefined;
184
190
  networkBridge?: string | undefined;
191
+ provisionProfile?: "appliance" | "remote-dev-v1" | undefined;
192
+ devArtifactDir?: string | undefined;
193
+ confirmBootstrapManifestSha256?: string | undefined;
185
194
  }, {
186
195
  storage?: string | undefined;
187
196
  name?: string | undefined;
@@ -240,6 +249,9 @@ export declare const ProvisionVmInputSchema: z.ZodEffects<z.ZodEffects<z.ZodObje
240
249
  fullClone?: boolean | undefined;
241
250
  waitForReady?: boolean | undefined;
242
251
  readyTimeoutSeconds?: number | undefined;
252
+ provisionProfile?: "appliance" | "remote-dev-v1" | undefined;
253
+ devArtifactDir?: string | undefined;
254
+ confirmBootstrapManifestSha256?: string | undefined;
243
255
  }>, {
244
256
  hypervisorType: "proxmox" | "esxi" | "any";
245
257
  format: "table" | "json";
@@ -298,6 +310,9 @@ export declare const ProvisionVmInputSchema: z.ZodEffects<z.ZodEffects<z.ZodObje
298
310
  memoryBytes?: number | undefined;
299
311
  macAddress?: string | undefined;
300
312
  networkBridge?: string | undefined;
313
+ provisionProfile?: "appliance" | "remote-dev-v1" | undefined;
314
+ devArtifactDir?: string | undefined;
315
+ confirmBootstrapManifestSha256?: string | undefined;
301
316
  }, {
302
317
  storage?: string | undefined;
303
318
  name?: string | undefined;
@@ -356,6 +371,9 @@ export declare const ProvisionVmInputSchema: z.ZodEffects<z.ZodEffects<z.ZodObje
356
371
  fullClone?: boolean | undefined;
357
372
  waitForReady?: boolean | undefined;
358
373
  readyTimeoutSeconds?: number | undefined;
374
+ provisionProfile?: "appliance" | "remote-dev-v1" | undefined;
375
+ devArtifactDir?: string | undefined;
376
+ confirmBootstrapManifestSha256?: string | undefined;
359
377
  }>, {
360
378
  hypervisorType: "proxmox" | "esxi" | "any";
361
379
  format: "table" | "json";
@@ -414,6 +432,9 @@ export declare const ProvisionVmInputSchema: z.ZodEffects<z.ZodEffects<z.ZodObje
414
432
  memoryBytes?: number | undefined;
415
433
  macAddress?: string | undefined;
416
434
  networkBridge?: string | undefined;
435
+ provisionProfile?: "appliance" | "remote-dev-v1" | undefined;
436
+ devArtifactDir?: string | undefined;
437
+ confirmBootstrapManifestSha256?: string | undefined;
417
438
  }, {
418
439
  storage?: string | undefined;
419
440
  name?: string | undefined;
@@ -472,6 +493,9 @@ export declare const ProvisionVmInputSchema: z.ZodEffects<z.ZodEffects<z.ZodObje
472
493
  fullClone?: boolean | undefined;
473
494
  waitForReady?: boolean | undefined;
474
495
  readyTimeoutSeconds?: number | undefined;
496
+ provisionProfile?: "appliance" | "remote-dev-v1" | undefined;
497
+ devArtifactDir?: string | undefined;
498
+ confirmBootstrapManifestSha256?: string | undefined;
475
499
  }>;
476
500
  export type ProvisionVmInput = z.infer<typeof ProvisionVmInputSchema>;
477
501
  export type ProvisionVmRawInput = z.input<typeof ProvisionVmInputSchema>;
@@ -536,6 +560,9 @@ export declare const AutoProvisionVmInputShape: {
536
560
  purgeIfFull: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
537
561
  allowEsxiSlots: z.ZodOptional<z.ZodBoolean>;
538
562
  format: z.ZodDefault<z.ZodOptional<z.ZodEnum<["table", "json"]>>>;
563
+ provisionProfile: z.ZodOptional<z.ZodEnum<["appliance", "remote-dev-v1"]>>;
564
+ devArtifactDir: z.ZodOptional<z.ZodString>;
565
+ confirmBootstrapManifestSha256: z.ZodOptional<z.ZodString>;
539
566
  };
540
567
  export declare const AutoProvisionVmInputSchema: z.ZodObject<{
541
568
  assetId: z.ZodOptional<z.ZodString>;
@@ -597,6 +624,9 @@ export declare const AutoProvisionVmInputSchema: z.ZodObject<{
597
624
  purgeIfFull: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
598
625
  allowEsxiSlots: z.ZodOptional<z.ZodBoolean>;
599
626
  format: z.ZodDefault<z.ZodOptional<z.ZodEnum<["table", "json"]>>>;
627
+ provisionProfile: z.ZodOptional<z.ZodEnum<["appliance", "remote-dev-v1"]>>;
628
+ devArtifactDir: z.ZodOptional<z.ZodString>;
629
+ confirmBootstrapManifestSha256: z.ZodOptional<z.ZodString>;
600
630
  }, "strip", z.ZodTypeAny, {
601
631
  hypervisorType: "proxmox" | "esxi" | "any";
602
632
  ttlMinutes: number;
@@ -657,6 +687,9 @@ export declare const AutoProvisionVmInputSchema: z.ZodObject<{
657
687
  newVmName?: string | undefined;
658
688
  newVmId?: string | number | undefined;
659
689
  networkBridge?: string | undefined;
690
+ provisionProfile?: "appliance" | "remote-dev-v1" | undefined;
691
+ devArtifactDir?: string | undefined;
692
+ confirmBootstrapManifestSha256?: string | undefined;
660
693
  }, {
661
694
  storage?: string | undefined;
662
695
  name?: string | undefined;
@@ -717,6 +750,9 @@ export declare const AutoProvisionVmInputSchema: z.ZodObject<{
717
750
  fullClone?: boolean | undefined;
718
751
  waitForReady?: boolean | undefined;
719
752
  readyTimeoutSeconds?: number | undefined;
753
+ provisionProfile?: "appliance" | "remote-dev-v1" | undefined;
754
+ devArtifactDir?: string | undefined;
755
+ confirmBootstrapManifestSha256?: string | undefined;
720
756
  }>;
721
757
  export type AutoProvisionVmInput = z.infer<typeof AutoProvisionVmInputSchema>;
722
758
  export type AutoProvisionVmRawInput = z.input<typeof AutoProvisionVmInputSchema>;
@@ -1 +1 @@
1
- {"version":3,"file":"provision-tools.d.ts","sourceRoot":"","sources":["../../../src/tools/provision-tools.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,cAAc,EAA2C,MAAM,iBAAiB,CAAC;AAM1F,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAoC9C,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgPjC,CAAC;AAEF,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAShC,CAAC;AAEJ,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AACtE,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEzE,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,mBAAmB,EAC5B,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,cAAc,CAAC,CAkWzB;AAMD,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwKrC,CAAC;AAEF,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAsC,CAAC;AAC9E,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAC9E,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAEjF,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,uBAAuB,EAChC,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,cAAc,CAAC,CAwezB"}
1
+ {"version":3,"file":"provision-tools.d.ts","sourceRoot":"","sources":["../../../src/tools/provision-tools.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,cAAc,EAA2C,MAAM,iBAAiB,CAAC;AAM1F,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AA6C9C,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiPjC,CAAC;AAEF,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAShC,CAAC;AAEJ,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AACtE,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEzE,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,mBAAmB,EAC5B,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,cAAc,CAAC,CAuXzB;AAMD,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyKrC,CAAC;AAEF,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAsC,CAAC;AAC9E,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAC9E,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAEjF,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,uBAAuB,EAChC,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,cAAc,CAAC,CA4ezB"}