@quiltdata/benchling-webhook 0.7.7 → 0.7.9
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.
- package/README.md +73 -11
- package/dist/bin/cli.js +159 -5
- package/dist/bin/cli.js.map +1 -1
- package/dist/bin/commands/config-show.d.ts +14 -0
- package/dist/bin/commands/config-show.d.ts.map +1 -0
- package/dist/bin/commands/config-show.js +24 -0
- package/dist/bin/commands/config-show.js.map +1 -0
- package/dist/bin/commands/deploy.d.ts +14 -0
- package/dist/bin/commands/deploy.d.ts.map +1 -1
- package/dist/bin/commands/deploy.js +1 -0
- package/dist/bin/commands/deploy.js.map +1 -1
- package/dist/bin/commands/infer-quilt-config.d.ts +4 -0
- package/dist/bin/commands/infer-quilt-config.d.ts.map +1 -1
- package/dist/bin/commands/infer-quilt-config.js +87 -8
- package/dist/bin/commands/infer-quilt-config.js.map +1 -1
- package/dist/bin/commands/install.d.ts.map +1 -1
- package/dist/bin/commands/install.js +42 -7
- package/dist/bin/commands/install.js.map +1 -1
- package/dist/bin/commands/logs.d.ts +30 -0
- package/dist/bin/commands/logs.d.ts.map +1 -0
- package/dist/bin/commands/logs.js +276 -0
- package/dist/bin/commands/logs.js.map +1 -0
- package/dist/bin/commands/manifest.d.ts +20 -3
- package/dist/bin/commands/manifest.d.ts.map +1 -1
- package/dist/bin/commands/manifest.js +23 -7
- package/dist/bin/commands/manifest.js.map +1 -1
- package/dist/bin/commands/setup-wizard.d.ts +67 -13
- package/dist/bin/commands/setup-wizard.d.ts.map +1 -1
- package/dist/bin/commands/setup-wizard.js +240 -742
- package/dist/bin/commands/setup-wizard.js.map +1 -1
- package/dist/bin/commands/status.d.ts +38 -0
- package/dist/bin/commands/status.d.ts.map +1 -0
- package/dist/bin/commands/status.js +171 -0
- package/dist/bin/commands/status.js.map +1 -0
- package/dist/bin/commands/sync-secrets.d.ts +7 -7
- package/dist/bin/commands/sync-secrets.d.ts.map +1 -1
- package/dist/bin/commands/sync-secrets.js +55 -15
- package/dist/bin/commands/sync-secrets.js.map +1 -1
- package/dist/bin/commands/validate.d.ts +18 -3
- package/dist/bin/commands/validate.d.ts.map +1 -1
- package/dist/bin/commands/validate.js +103 -69
- package/dist/bin/commands/validate.js.map +1 -1
- package/dist/lib/fargate-service.d.ts.map +1 -1
- package/dist/lib/fargate-service.js +3 -1
- package/dist/lib/fargate-service.js.map +1 -1
- package/dist/lib/next-steps-generator.js +25 -4
- package/dist/lib/next-steps-generator.js.map +1 -1
- package/dist/lib/types/config.d.ts +13 -0
- package/dist/lib/types/config.d.ts.map +1 -1
- package/dist/lib/types/config.js +1 -0
- package/dist/lib/types/config.js.map +1 -1
- package/dist/lib/utils/config.d.ts +14 -17
- package/dist/lib/utils/config.d.ts.map +1 -1
- package/dist/lib/utils/config.js +6 -88
- package/dist/lib/utils/config.js.map +1 -1
- package/dist/lib/utils/stack-parameter-update.d.ts +37 -0
- package/dist/lib/utils/stack-parameter-update.d.ts.map +1 -0
- package/dist/lib/utils/stack-parameter-update.js +129 -0
- package/dist/lib/utils/stack-parameter-update.js.map +1 -0
- package/dist/lib/wizard/phase1-catalog-discovery.d.ts +41 -0
- package/dist/lib/wizard/phase1-catalog-discovery.d.ts.map +1 -0
- package/dist/lib/wizard/phase1-catalog-discovery.js +206 -0
- package/dist/lib/wizard/phase1-catalog-discovery.js.map +1 -0
- package/dist/lib/wizard/phase2-stack-query.d.ts +35 -0
- package/dist/lib/wizard/phase2-stack-query.d.ts.map +1 -0
- package/dist/lib/wizard/phase2-stack-query.js +105 -0
- package/dist/lib/wizard/phase2-stack-query.js.map +1 -0
- package/dist/lib/wizard/phase3-parameter-collection.d.ts +24 -0
- package/dist/lib/wizard/phase3-parameter-collection.d.ts.map +1 -0
- package/dist/lib/wizard/phase3-parameter-collection.js +389 -0
- package/dist/lib/wizard/phase3-parameter-collection.js.map +1 -0
- package/dist/lib/wizard/phase4-validation.d.ts +22 -0
- package/dist/lib/wizard/phase4-validation.d.ts.map +1 -0
- package/dist/lib/wizard/phase4-validation.js +294 -0
- package/dist/lib/wizard/phase4-validation.js.map +1 -0
- package/dist/lib/wizard/phase5-mode-decision.d.ts +22 -0
- package/dist/lib/wizard/phase5-mode-decision.d.ts.map +1 -0
- package/dist/lib/wizard/phase5-mode-decision.js +65 -0
- package/dist/lib/wizard/phase5-mode-decision.js.map +1 -0
- package/dist/lib/wizard/phase6-integrated-mode.d.ts +25 -0
- package/dist/lib/wizard/phase6-integrated-mode.d.ts.map +1 -0
- package/dist/lib/wizard/phase6-integrated-mode.js +230 -0
- package/dist/lib/wizard/phase6-integrated-mode.js.map +1 -0
- package/dist/lib/wizard/phase7-standalone-mode.d.ts +25 -0
- package/dist/lib/wizard/phase7-standalone-mode.d.ts.map +1 -0
- package/dist/lib/wizard/phase7-standalone-mode.js +210 -0
- package/dist/lib/wizard/phase7-standalone-mode.js.map +1 -0
- package/dist/lib/wizard/types.d.ts +178 -0
- package/dist/lib/wizard/types.d.ts.map +1 -0
- package/dist/lib/wizard/types.js +11 -0
- package/dist/lib/wizard/types.js.map +1 -0
- package/dist/package.json +3 -4
- package/dist/scripts/check-logs.d.ts +9 -2
- package/dist/scripts/check-logs.d.ts.map +1 -1
- package/dist/scripts/check-logs.js +26 -2
- package/dist/scripts/check-logs.js.map +1 -1
- package/package.json +3 -4
- package/dist/bin/commands/get-env.d.ts +0 -16
- package/dist/bin/commands/get-env.d.ts.map +0 -1
- package/dist/bin/commands/get-env.js +0 -210
- package/dist/bin/commands/get-env.js.map +0 -1
- package/env.template +0 -79
|
@@ -1,5 +1,22 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Manifest Command
|
|
4
|
+
*
|
|
5
|
+
* Pure function to generate Benchling app manifest file.
|
|
6
|
+
* Catalog URL is passed in as parameter.
|
|
7
|
+
*/
|
|
8
|
+
interface ManifestOptions {
|
|
3
9
|
output?: string;
|
|
4
|
-
|
|
10
|
+
catalog?: string;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Pure function to generate manifest YAML content
|
|
14
|
+
*/
|
|
15
|
+
export declare function generateManifest(catalogUrl?: string): string;
|
|
16
|
+
/**
|
|
17
|
+
* Manifest command - generates Benchling app manifest file
|
|
18
|
+
* This is a pure function - catalog URL must be passed in
|
|
19
|
+
*/
|
|
20
|
+
export declare function manifestCommand(options: ManifestOptions): Promise<void>;
|
|
21
|
+
export {};
|
|
5
22
|
//# sourceMappingURL=manifest.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../../bin/commands/manifest.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../../bin/commands/manifest.ts"],"names":[],"mappings":";AACA;;;;;GAKG;AASH,UAAU,eAAe;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAyB5D;AAED;;;GAGG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CA2B7E"}
|
|
@@ -1,25 +1,33 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
1
2
|
"use strict";
|
|
3
|
+
/**
|
|
4
|
+
* Manifest Command
|
|
5
|
+
*
|
|
6
|
+
* Pure function to generate Benchling app manifest file.
|
|
7
|
+
* Catalog URL is passed in as parameter.
|
|
8
|
+
*/
|
|
2
9
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
10
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
11
|
};
|
|
5
12
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.generateManifest = generateManifest;
|
|
6
14
|
exports.manifestCommand = manifestCommand;
|
|
7
15
|
const fs_1 = require("fs");
|
|
8
16
|
const chalk_1 = __importDefault(require("chalk"));
|
|
9
17
|
const boxen_1 = __importDefault(require("boxen"));
|
|
10
|
-
const config_1 = require("../../lib/utils/config");
|
|
11
18
|
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
12
19
|
const pkg = require("../../package.json");
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
20
|
+
/**
|
|
21
|
+
* Pure function to generate manifest YAML content
|
|
22
|
+
*/
|
|
23
|
+
function generateManifest(catalogUrl) {
|
|
16
24
|
// Generate app name from catalog URL if available
|
|
17
25
|
let appName = "Quilt Integration";
|
|
18
|
-
if (
|
|
26
|
+
if (catalogUrl) {
|
|
19
27
|
// Replace dots and colons with hyphens to create a valid identifier
|
|
20
|
-
appName =
|
|
28
|
+
appName = catalogUrl.replace(/[.:]/g, "-");
|
|
21
29
|
}
|
|
22
|
-
|
|
30
|
+
return `manifestVersion: 1
|
|
23
31
|
info:
|
|
24
32
|
name: ${appName}
|
|
25
33
|
description: Package Benchling notebook entries as Quilt data packages
|
|
@@ -36,6 +44,14 @@ subscriptions:
|
|
|
36
44
|
- type: v2.entry.created
|
|
37
45
|
- type: v2.entry.updated.fields
|
|
38
46
|
`;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Manifest command - generates Benchling app manifest file
|
|
50
|
+
* This is a pure function - catalog URL must be passed in
|
|
51
|
+
*/
|
|
52
|
+
async function manifestCommand(options) {
|
|
53
|
+
const outputPath = options.output || "app-manifest.yaml";
|
|
54
|
+
const manifest = generateManifest(options.catalog);
|
|
39
55
|
try {
|
|
40
56
|
(0, fs_1.writeFileSync)(outputPath, manifest);
|
|
41
57
|
console.log(chalk_1.default.green(`✓ Created ${outputPath}`));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../../bin/commands/manifest.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../../bin/commands/manifest.ts"],"names":[],"mappings":";;AACA;;;;;GAKG;;;;;AAiBH,4CAyBC;AAMD,0CA2BC;AAzED,2BAAmC;AACnC,kDAA0B;AAC1B,kDAA0B;AAE1B,iEAAiE;AACjE,MAAM,GAAG,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;AAO1C;;GAEG;AACH,SAAgB,gBAAgB,CAAC,UAAmB;IAChD,kDAAkD;IAClD,IAAI,OAAO,GAAG,mBAAmB,CAAC;IAClC,IAAI,UAAU,EAAE,CAAC;QACb,oEAAoE;QACpE,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAC/C,CAAC;IAED,OAAO;;UAED,OAAO;;aAEJ,GAAG,CAAC,OAAO;;;;;;;;;;;;CAYvB,CAAC;AACF,CAAC;AAED;;;GAGG;AACI,KAAK,UAAU,eAAe,CAAC,OAAwB;IAC1D,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,IAAI,mBAAmB,CAAC;IACzD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAEnD,IAAI,CAAC;QACD,IAAA,kBAAa,EAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,aAAa,UAAU,EAAE,CAAC,CAAC,CAAC;QACpD,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CACP,IAAA,eAAK,EACD,GAAG,eAAK,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM;YACxC,yCAAyC;YACzC,MAAM,eAAK,CAAC,IAAI,CAAC,gGAAgG,CAAC,MAAM;YACxH,8DAA8D;YAC9D,4EAA4E;YAC5E,MAAM,eAAK,CAAC,IAAI,CAAC,oFAAoF,CAAC,MAAM;YAC5G,qBAAqB;YACrB,MAAM,eAAK,CAAC,IAAI,CAAC,kCAAkC,CAAC,IAAI;YACxD,MAAM,eAAK,CAAC,GAAG,CAAC,gDAAgD,CAAC,MAAM;YACvE,yEAAyE,EACnE,EAAE,OAAO,EAAE,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,CAC5D,CACJ,CAAC;IACN,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,gCAAiC,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACrF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;AACL,CAAC"}
|
|
@@ -1,45 +1,99 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
/**
|
|
3
|
-
* Interactive Configuration Wizard (v0.
|
|
3
|
+
* Interactive Configuration Wizard (v0.8.0)
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
* 1.
|
|
7
|
-
* 2.
|
|
8
|
-
* 3.
|
|
9
|
-
* 4.
|
|
5
|
+
* Phase-based modular setup wizard that orchestrates:
|
|
6
|
+
* 1. Catalog discovery and confirmation
|
|
7
|
+
* 2. Stack query for infrastructure details
|
|
8
|
+
* 3. Parameter collection from user
|
|
9
|
+
* 4. Configuration validation
|
|
10
|
+
* 5. Deployment mode decision (integrated vs standalone)
|
|
11
|
+
* 6. Mode-specific setup (integrated or standalone)
|
|
10
12
|
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
+
* Architecture:
|
|
14
|
+
* - Each phase is a separate, testable module
|
|
15
|
+
* - Explicit data flow between phases via TypeScript types
|
|
16
|
+
* - Cannot skip phases or execute out of order
|
|
17
|
+
* - Integrated mode has explicit return (no deployment)
|
|
13
18
|
*
|
|
14
19
|
* @module commands/setup-wizard
|
|
20
|
+
* @version 0.8.0
|
|
15
21
|
*/
|
|
22
|
+
import type { XDGBase } from "../../lib/xdg-base";
|
|
16
23
|
import { ProfileConfig } from "../../lib/types/config";
|
|
17
24
|
/**
|
|
18
|
-
*
|
|
25
|
+
* Setup wizard options
|
|
19
26
|
*/
|
|
20
|
-
export interface
|
|
27
|
+
export interface SetupWizardOptions {
|
|
28
|
+
/** Configuration profile name */
|
|
21
29
|
profile?: string;
|
|
30
|
+
/** Inherit from another profile (legacy, unused in phase-based wizard) */
|
|
22
31
|
inheritFrom?: string;
|
|
32
|
+
/** Non-interactive mode (use defaults/CLI args) */
|
|
23
33
|
yes?: boolean;
|
|
34
|
+
/** Skip validation checks */
|
|
24
35
|
skipValidation?: boolean;
|
|
25
|
-
|
|
36
|
+
/** AWS profile to use */
|
|
26
37
|
awsProfile?: string;
|
|
38
|
+
/** AWS region to use */
|
|
27
39
|
awsRegion?: string;
|
|
40
|
+
/** Setup only (don't prompt for deployment) */
|
|
41
|
+
setupOnly?: boolean;
|
|
42
|
+
/** Part of install command (suppress next steps) */
|
|
28
43
|
isPartOfInstall?: boolean;
|
|
44
|
+
/** Config storage implementation (for testing) */
|
|
45
|
+
configStorage?: XDGBase;
|
|
46
|
+
catalogUrl?: string;
|
|
47
|
+
benchlingTenant?: string;
|
|
48
|
+
benchlingClientId?: string;
|
|
49
|
+
benchlingClientSecret?: string;
|
|
50
|
+
benchlingAppDefinitionId?: string;
|
|
51
|
+
benchlingTestEntryId?: string;
|
|
52
|
+
userBucket?: string;
|
|
53
|
+
pkgPrefix?: string;
|
|
54
|
+
pkgKey?: string;
|
|
55
|
+
logLevel?: string;
|
|
56
|
+
webhookAllowList?: string;
|
|
29
57
|
}
|
|
30
58
|
/**
|
|
31
|
-
* Setup wizard result
|
|
59
|
+
* Setup wizard result
|
|
32
60
|
*/
|
|
33
61
|
export interface SetupWizardResult {
|
|
34
62
|
success: boolean;
|
|
35
63
|
profile: string;
|
|
36
64
|
config: ProfileConfig;
|
|
37
65
|
}
|
|
66
|
+
/**
|
|
67
|
+
* Main setup wizard orchestrator
|
|
68
|
+
*
|
|
69
|
+
* This function orchestrates the 7 phases of the setup wizard in sequence.
|
|
70
|
+
* Each phase is isolated and testable. The flow is enforced by the code
|
|
71
|
+
* structure - integrated mode explicitly returns, preventing fall-through
|
|
72
|
+
* to deployment.
|
|
73
|
+
*
|
|
74
|
+
* Flow:
|
|
75
|
+
* 1. Phase 1: Catalog Discovery (local config only, no AWS)
|
|
76
|
+
* 2. Phase 2: Stack Query (query CloudFormation for confirmed catalog)
|
|
77
|
+
* 3. Phase 3: Parameter Collection (collect user inputs)
|
|
78
|
+
* 4. Phase 4: Validation (validate all parameters)
|
|
79
|
+
* 5. Phase 5: Mode Decision (choose integrated vs standalone)
|
|
80
|
+
* 6a. Phase 6: Integrated Mode (update secret, EXIT) OR
|
|
81
|
+
* 6b. Phase 7: Standalone Mode (create secret, optionally deploy, EXIT)
|
|
82
|
+
*
|
|
83
|
+
* The orchestrator prints step headers before each phase to ensure
|
|
84
|
+
* consistent numbering regardless of execution path.
|
|
85
|
+
*
|
|
86
|
+
* @param options - Setup wizard options
|
|
87
|
+
* @returns Setup wizard result
|
|
88
|
+
*/
|
|
89
|
+
export declare function runSetupWizard(options?: SetupWizardOptions): Promise<SetupWizardResult>;
|
|
38
90
|
/**
|
|
39
91
|
* Setup wizard command handler
|
|
40
92
|
*
|
|
93
|
+
* Wraps runSetupWizard with error handling for graceful user cancellation.
|
|
94
|
+
*
|
|
41
95
|
* @param options - Wizard options
|
|
42
96
|
* @returns Promise that resolves with setup result
|
|
43
97
|
*/
|
|
44
|
-
export declare function setupWizardCommand(options?:
|
|
98
|
+
export declare function setupWizardCommand(options?: SetupWizardOptions): Promise<SetupWizardResult>;
|
|
45
99
|
//# sourceMappingURL=setup-wizard.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup-wizard.d.ts","sourceRoot":"","sources":["../../../bin/commands/setup-wizard.ts"],"names":[],"mappings":";AACA
|
|
1
|
+
{"version":3,"file":"setup-wizard.d.ts","sourceRoot":"","sources":["../../../bin/commands/setup-wizard.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;;GAmBG;AAKH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAavD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAC/B,iCAAiC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,0EAA0E;IAC1E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mDAAmD;IACnD,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,6BAA6B;IAC7B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,yBAAyB;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wBAAwB;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,+CAA+C;IAC/C,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,oDAAoD;IACpD,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,kDAAkD;IAClD,aAAa,CAAC,EAAE,OAAO,CAAC;IAGxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,aAAa,CAAC;CACzB;AAsDD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAsB,cAAc,CAAC,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAgNjG;AAED;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAiBrG"}
|