@pipeline-builder/pipeline-manager 3.4.71 → 3.4.72
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 +12 -1
- package/dist/agent/bootstrap.d.ts +54 -0
- package/dist/agent/bootstrap.d.ts.map +1 -0
- package/dist/agent/bootstrap.js +76 -0
- package/dist/agent/executor.d.ts +4 -1
- package/dist/agent/executor.d.ts.map +1 -1
- package/dist/agent/executor.js +7 -4
- package/dist/agent/post-steps.d.ts +55 -0
- package/dist/agent/post-steps.d.ts.map +1 -0
- package/dist/agent/post-steps.js +73 -0
- package/dist/agent/prereqs.d.ts +10 -1
- package/dist/agent/prereqs.d.ts.map +1 -1
- package/dist/agent/prereqs.js +29 -2
- package/dist/agent/targets.d.ts +39 -0
- package/dist/agent/targets.d.ts.map +1 -1
- package/dist/agent/targets.js +39 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +10 -3
- package/dist/commands/provision.d.ts +6 -5
- package/dist/commands/provision.d.ts.map +1 -1
- package/dist/commands/provision.js +172 -45
- package/package.json +3 -3
package/dist/agent/targets.js
CHANGED
|
@@ -26,6 +26,7 @@ export const TARGETS = {
|
|
|
26
26
|
label: 'Local (Docker Compose)',
|
|
27
27
|
dir: 'deploy/local',
|
|
28
28
|
entrypoint: 'bin/setup.sh',
|
|
29
|
+
sparsePaths: ['deploy/local'],
|
|
29
30
|
required: [],
|
|
30
31
|
optional: [],
|
|
31
32
|
postDeploy: './deploy/bin/init-platform.sh local',
|
|
@@ -38,6 +39,7 @@ export const TARGETS = {
|
|
|
38
39
|
label: 'Minikube (local Kubernetes)',
|
|
39
40
|
dir: 'deploy/minikube',
|
|
40
41
|
entrypoint: 'bin/setup.sh',
|
|
42
|
+
sparsePaths: ['deploy/minikube'],
|
|
41
43
|
required: [],
|
|
42
44
|
optional: [],
|
|
43
45
|
postDeploy: './deploy/bin/init-platform.sh minikube',
|
|
@@ -50,6 +52,7 @@ export const TARGETS = {
|
|
|
50
52
|
label: 'AWS EC2 (single Minikube instance behind an ALB)',
|
|
51
53
|
dir: 'deploy/aws/ec2',
|
|
52
54
|
entrypoint: 'bin/setup.sh',
|
|
55
|
+
sparsePaths: ['deploy/aws/ec2'],
|
|
53
56
|
required: [KEY_PAIR, DOMAIN, HOSTED_ZONE],
|
|
54
57
|
optional: [REGION, DEPLOY_MODE, GHCR_TOKEN, INSTANCE_TYPE, ...EMAIL],
|
|
55
58
|
postDeploy: './deploy/bin/init-platform.sh ec2 # from inside the VPC (SSM)',
|
|
@@ -62,6 +65,7 @@ export const TARGETS = {
|
|
|
62
65
|
label: 'AWS Fargate (serverless ECS, 6 CloudFormation stacks)',
|
|
63
66
|
dir: 'deploy/aws/fargate',
|
|
64
67
|
entrypoint: 'bin/setup.sh',
|
|
68
|
+
sparsePaths: ['deploy/aws/fargate'],
|
|
65
69
|
required: [DOMAIN, HOSTED_ZONE],
|
|
66
70
|
optional: [REGION, DEPLOY_MODE, GHCR_TOKEN, ...EMAIL],
|
|
67
71
|
postDeploy: './deploy/bin/init-platform.sh fargate # from a VPC-attached host',
|
|
@@ -74,6 +78,40 @@ export const TARGET_IDS = ['local', 'minikube', 'ec2', 'fargate'];
|
|
|
74
78
|
export function isTargetId(value) {
|
|
75
79
|
return typeof value === 'string' && TARGET_IDS.includes(value);
|
|
76
80
|
}
|
|
81
|
+
// --- Sparse bootstrap paths -------------------------------------------------
|
|
82
|
+
/**
|
|
83
|
+
* Folders every `--repo` bootstrap needs regardless of target: the orchestration
|
|
84
|
+
* scripts. Each target's setup.sh + init-platform.sh live in / drive these.
|
|
85
|
+
* Deliberately minimal — heavier folders (plugins/compliance/samples) are pulled
|
|
86
|
+
* in only when their post-install option is selected (see LOAD_STEPS).
|
|
87
|
+
*/
|
|
88
|
+
export const COMMON_SPARSE_PATHS = ['deploy/bin'];
|
|
89
|
+
/**
|
|
90
|
+
* Opt-in post-install load steps. Each maps a provision `--with-*` flag to the
|
|
91
|
+
* init-platform env var that enables it AND the repo folder(s) it reads — so the
|
|
92
|
+
* sparse checkout grows exactly with the selected options.
|
|
93
|
+
*/
|
|
94
|
+
export const LOAD_STEPS = [
|
|
95
|
+
// The plugin build reads deploy/plugins/_base AND deploy/codebuild/bootstrap.
|
|
96
|
+
{ id: 'plugins', flag: 'withPlugins', env: 'LOAD_PLUGINS', paths: ['deploy/plugins', 'deploy/codebuild'] },
|
|
97
|
+
{ id: 'compliance', flag: 'withCompliance', env: 'LOAD_COMPLIANCE', paths: ['deploy/compliance'] },
|
|
98
|
+
{ id: 'samples', flag: 'withSamples', env: 'LOAD_PIPELINES', paths: ['deploy/samples'] },
|
|
99
|
+
];
|
|
100
|
+
/**
|
|
101
|
+
* The de-duplicated set of sparse paths for a target plus the enabled load
|
|
102
|
+
* steps: common base ∪ target folder(s) ∪ each enabled step's folder(s).
|
|
103
|
+
*/
|
|
104
|
+
export function sparsePathsFor(target, enabledLoadIds) {
|
|
105
|
+
const paths = new Set(COMMON_SPARSE_PATHS);
|
|
106
|
+
for (const p of TARGETS[target].sparsePaths)
|
|
107
|
+
paths.add(p);
|
|
108
|
+
for (const step of LOAD_STEPS) {
|
|
109
|
+
if (enabledLoadIds.includes(step.id))
|
|
110
|
+
for (const p of step.paths)
|
|
111
|
+
paths.add(p);
|
|
112
|
+
}
|
|
113
|
+
return [...paths];
|
|
114
|
+
}
|
|
77
115
|
/**
|
|
78
116
|
* Assemble the deploy command for a target from the provided params. Pure and
|
|
79
117
|
* deterministic — no shell, no LLM. Missing required inputs are reported (never
|
|
@@ -139,4 +177,4 @@ export function teardownCommand(target, opts = {}) {
|
|
|
139
177
|
}
|
|
140
178
|
}
|
|
141
179
|
}
|
|
142
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFyZ2V0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hZ2VudC90YXJnZXRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFpRHRDLCtFQUErRTtBQUUvRSxNQUFNLE1BQU0sR0FBYyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsdURBQXVELEVBQUUsQ0FBQztBQUNsSSxNQUFNLFdBQVcsR0FBYyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxHQUFHLEVBQUUsY0FBYyxFQUFFLFdBQVcsRUFBRSw2REFBNkQsRUFBRSxDQUFDO0FBQzNKLE1BQU0sVUFBVSxHQUFjLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxzRUFBc0UsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUM7QUFDMUssTUFBTSxNQUFNLEdBQWMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxDQUFDO0FBQ3ZGLE1BQU0sV0FBVyxHQUFjLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSw2REFBNkQsRUFBRSxDQUFDO0FBQ3RKLE1BQU0sUUFBUSxHQUFjLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxnRkFBZ0YsRUFBRSxDQUFDO0FBQ2hLLE1BQU0sYUFBYSxHQUFjLEVBQUUsSUFBSSxFQUFFLGVBQWUsRUFBRSxHQUFHLEVBQUUsY0FBYyxFQUFFLFdBQVcsRUFBRSx3Q0FBd0MsRUFBRSxDQUFDO0FBRXZJLDhFQUE4RTtBQUM5RSxrRkFBa0Y7QUFDbEYsb0JBQW9CO0FBQ3BCLE1BQU0sS0FBSyxHQUF5QjtJQUNsQyxFQUFFLElBQUks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SSxzQkFBc0IsQ0FBQztZQUN4RCxPQUFPO2dCQUNMLE9BQU8sRUFDTCxnRUFBZ0UsTUFBTSxhQUFhLE1BQU0sRUFBRTtvQkFDM0YsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDbEMsV0FBVyxFQUFFLElBQUk7YUFDbEIsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG4vKipcbiAqIERldGVybWluaXN0aWMgcmVnaXN0cnkgb2YgcGxhdGZvcm0gZGVwbG95IHRhcmdldHMg4oCUIHRoZSBzb3VyY2Ugb2YgdHJ1dGggdGhlXG4gKiBgcHJvdmlzaW9uYCBhZHZpc29yIHVzZXMgdG8gYXNzZW1ibGUgdGhlIEVYQUNUIGRlcGxveSBjb21tYW5kLiBUaGUgYWdlbnQgaXMgYVxuICogdGhpbiB3cmFwcGVyIG92ZXIgdGhlIGV4aXN0aW5nIGRlcGxveSBzY3JpcHRzOyBpdCBuZXZlciByZWltcGxlbWVudHNcbiAqIGRlcGxveW1lbnQsIG9ubHkgdmFsaWRhdGVzIGlucHV0cyBhbmQgYXNzZW1ibGVzIHRoZSBjb21tYW5kIHRvIHJ1bi5cbiAqXG4gKiBLZWVwIHRoaXMgaW4gbG9jay1zdGVwIHdpdGggdGhlIGZsYWdzIHRoZSBzY3JpcHRzIGFjY2VwdCDigJQgZXZlcnkgdGFyZ2V0J3NcbiAqIG9wZXJhdG9yIGVudHJ5cG9pbnQgaXMgYGJpbi9zZXR1cC5zaGAgKGRlcGxveS88dGFyZ2V0Pi9iaW4vc2V0dXAuc2gpLlxuICovXG5cbmV4cG9ydCB0eXBlIFRhcmdldElkID0gJ2xvY2FsJyB8ICdtaW5pa3ViZScgfCAnZWMyJyB8ICdmYXJnYXRlJztcblxuLyoqIEEgc2luZ2xlIGlucHV0IHRoZSB1bmRlcmx5aW5nIGRlcGxveSBzY3JpcHQgYWNjZXB0cy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW5wdXRTcGVjIHtcbiAgLyoqIEZsYWcgbmFtZSBwYXNzZWQgdG8gdGhlIHNjcmlwdCAod2l0aG91dCB0aGUgbGVhZGluZyBgLS1gKS4gKi9cbiAgcmVhZG9ubHkgZmxhZzogc3RyaW5nO1xuICAvKiogS2V5IG9uIHRoZSBwcm92aXNpb24gcGFyYW1zIG9iamVjdC4gKi9cbiAgcmVhZG9ubHkga2V5OiBzdHJpbmc7XG4gIC8qKiBIdW1hbiBkZXNjcmlwdGlvbiDigJQgc2hvd24gd2hlbiBhIHJlcXVpcmVkIGlucHV0IGlzIG1pc3NpbmcuICovXG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIC8qKiBTZWNyZXQg4oCUIG5ldmVyIHByaW50ZWQgaW4gdGhlIGFzc2VtYmxlZCBjb21tYW5kIChtYXNrZWQgYXMgYCoqKmApLiAqL1xuICByZWFkb25seSBzZWNyZXQ/OiBib29sZWFuO1xuICAvKiogQm9vbGVhbiBmbGFnIHdpdGggbm8gdmFsdWUgKGUuZy4gYC0tZW1haWxgKS4gKi9cbiAgcmVhZG9ubHkgYm9vbGVhbj86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGFyZ2V0U3BlYyB7XG4gIHJlYWRvbmx5IGlkOiBUYXJnZXRJZDtcbiAgcmVhZG9ubHkgbGFiZWw6IHN0cmluZztcbiAgLyoqIERpcmVjdG9yeSB0aGUgZW50cnlwb2ludCBydW5zIGZyb20gKHJlbGF0aXZlIHRvIHJlcG8gcm9vdCkuICovXG4gIHJlYWRvbmx5IGRpcjogc3RyaW5nO1xuICAvKiogRW50cnlwb2ludCBzY3JpcHQgKHJlbGF0aXZlIHRvIGBkaXJgKS4gKi9cbiAgcmVhZG9ubHkgZW50cnlwb2ludDogc3RyaW5nO1xuICAvKiogSW5wdXRzIHRoZSBzY3JpcHQgUkVRVUlSRVMg4oCUIHRoZSBhZHZpc29yIHJlcG9ydHMgYW55IHRoYXQgYXJlIG1pc3NpbmcuICovXG4gIHJlYWRvbmx5IHJlcXVpcmVkOiByZWFkb25seSBJbnB1dFNwZWNbXTtcbiAgLyoqIE9wdGlvbmFsIGlucHV0cywgcGFzc2VkIHRocm91Z2ggb25seSB3aGVuIHByb3ZpZGVkLiAqL1xuICByZWFkb25seSBvcHRpb25hbDogcmVhZG9ubHkgSW5wdXRTcGVjW107XG4gIC8qKiBQb3N0LWRlcGxveSBzdGVwIHRvIHN1cmZhY2UgKHJlZ2lzdGVycyBhZG1pbiArIGxvYWRzIHBsdWdpbnMpLiAqL1xuICByZWFkb25seSBwb3N0RGVwbG95Pzogc3RyaW5nO1xuICAvKiogUm91Z2ggbW9udGhseSBjb3N0IChmcm9tIGRvY3MpLiAqL1xuICByZWFkb25seSBjb3N0OiBzdHJpbmc7XG4gIC8qKiBPbmUtbGluZSBcImJlc3QgZm9yXCIuICovXG4gIHJlYWRvbmx5IGJlc3RGb3I6IHN0cmluZztcbiAgLyoqIFdoYXQgYSB0ZWFyZG93biBvZiB0aGlzIHRhcmdldCBkZXN0cm95cyDigJQgc2hvd24gYmVmb3JlIGEgKGdhdGVkKSB0ZWFyZG93bi4gKi9cbiAgcmVhZG9ubHkgZGVzdHJveXM6IHN0cmluZztcbn1cblxuLy8gLS0tIFNoYXJlZCBpbnB1dCBzcGVjcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5jb25zdCBET01BSU46IElucHV0U3BlYyA9IHsgZmxhZzogJ2RvbWFpbicsIGtleTogJ2RvbWFpbicsIGRlc2NyaXB0aW9uOiAnRnVsbHktcXVhbGlmaWVkIGRvbWFpbiBuYW1lIChBTEIgQUNNIGNlcnQgKyBTRVMgREtJTSknIH07XG5jb25zdCBIT1NURURfWk9ORTogSW5wdXRTcGVjID0geyBmbGFnOiAnaG9zdGVkLXpvbmUtaWQnLCBrZXk6ICdob3N0ZWRab25lSWQnLCBkZXNjcmlwdGlvbjogJ1B1YmxpYyBSb3V0ZSA1MyBob3N0ZWQgem9uZSBJRCBhdXRob3JpdGF0aXZlIGZvciB0aGUgZG9tYWluJyB9O1xuY29uc3QgR0hDUl9UT0tFTjogSW5wdXRTcGVjID0geyBmbGFnOiAnZ2hjci10b2tlbicsIGtleTogJ2doY3JUb2tlbicsIGRlc2NyaXB0aW9uOiAnR2l0SHViIFBBVCB3aXRoIHJlYWQ6cGFja2FnZXMgKGF2b2lkcyBnaGNyLmlvIGFub255bW91cyByYXRlIGxpbWl0cyknLCBzZWNyZXQ6IHRydWUgfTtcbmNvbnN0IFJFR0lPTjogSW5wdXRTcGVjID0geyBmbGFnOiAncmVnaW9uJywga2V5OiAncmVnaW9uJywgZGVzY3JpcHRpb246ICdBV1MgcmVnaW9uJyB9O1xuY29uc3QgREVQTE9ZX01PREU6IElucHV0U3BlYyA9IHsgZmxhZzogJ2RlcGxveS1tb2RlJywga2V5OiAnZGVwbG95TW9kZScsIGRlc2NyaXB0aW9uOiAncHVibGljIChpbnRlcm5ldC1mYWNpbmcgQUxCKSBvciBwcml2YXRlIChpbnRlcm5hbCwgZGVmYXVsdCknIH07XG5jb25zdCBLRVlfUEFJUjogSW5wdXRTcGVjID0geyBmbGFnOiAna2V5LXBhaXInLCBrZXk6ICdrZXlQYWlyJywgZGVzY3JpcHRpb246ICdFQzIga2V5IHBhaXIgaW4gdGhlIHJlZ2lvbiAoYnJlYWstZ2xhc3Mgc2VyaWFsIGNvbnNvbGU7IHJvdXRpbmUgYWNjZXNzIGlzIFNTTSknIH07XG5jb25zdCBJTlNUQU5DRV9UWVBFOiBJbnB1dFNwZWMgPSB7IGZsYWc6ICdpbnN0YW5jZS10eXBlJywga2V5OiAnaW5zdGFuY2VUeXBlJywgZGVzY3JpcHRpb246ICdFQzIgaW5zdGFuY2UgdHlwZSAoZGVmYXVsdCB0My4yeGxhcmdlKScgfTtcblxuLy8gU0VTIC8gZW1haWwgZmFtaWx5IOKAlCBzaGFyZWQgYnkgZWMyICsgZmFyZ2F0ZS4gU0VTIGlzIHByb3Zpc2lvbmVkIEJZIERFRkFVTFRcbi8vIG9uIEFXUyBkZXBsb3lzOyBgLS1uby1lbWFpbGAgaXMgdGhlIG9wdC1vdXQgKGAtLWVtYWlsYCBpcyBhIGhhcm1sZXNzIG5vLW9wIGtlcHRcbi8vIGZvciBiYWNrLWNvbXBhdCkuXG5jb25zdCBFTUFJTDogcmVhZG9ubHkgSW5wdXRTcGVjW10gPSBbXG4gIHsgZmxhZzogJ2VtYWlsJywga2V5OiAnZW1haWwnLCBkZXNjcmlwdGlvbjogJ0VuYWJsZSBTRVMgdHJhbnNhY3Rpb25hbCBlbWFpbCAob24gYnkgZGVmYXVsdCBmb3IgQVdTKScsIGJvb2xlYW46IHRydWUgfSxcbiAgeyBmbGFnOiAnbm8tZW1haWwnLCBrZXk6ICdub0VtYWlsJywgZGVzY3JpcHRpb246ICdTa2lwIFNFUyAodHJhbnNhY3Rpb25hbCBlbWFpbCBpcyBwcm92aXNpb25lZCBieSBkZWZhdWx0KScsIGJvb2xlYW46IHRydWUgfSxcbiAgeyBmbGFnOiAnZW1haWwtZnJvbScsIGtleTogJ2VtYWlsRnJvbScsIGRlc2NyaXB0aW9uOiAnRnJvbSBhZGRyZXNzIChkZWZhdWx0IG5vcmVwbHlAPGRvbWFpbj4pJyB9LFxuICB7IGZsYWc6ICdlbWFpbC1mcm9tLW5hbWUnLCBrZXk6ICdlbWFpbEZyb21OYW1lJywgZGVzY3JpcHRpb246ICdEaXNwbGF5IG5hbWUgb24gb3V0Ym91bmQgZW1haWwnIH0sXG4gIHsgZmxhZzogJ2FsZXJ0LWVtYWlsJywga2V5OiAnYWxlcnRFbWFpbCcsIGRlc2NyaXB0aW9uOiAnU3Vic2NyaWJlIGFuIGFkZHJlc3MgdG8gdGhlIGJvdW5jZS9jb21wbGFpbnQgU05TIHRvcGljJyB9LFxuICB7IGZsYWc6ICduby1jcmVhdGUtc2VzLWlkZW50aXR5Jywga2V5OiAnbm9DcmVhdGVTZXNJZGVudGl0eScsIGRlc2NyaXB0aW9uOiAnU2tpcCBTRVMgaWRlbnRpdHkgY3JlYXRpb24gKGRvbWFpbiBhbHJlYWR5IHZlcmlmaWVkKScsIGJvb2xlYW46IHRydWUgfSxcbl07XG5cbi8vIC0tLSBUYXJnZXRzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuZXhwb3J0IGNvbnN0IFRBUkdFVFM6IFJlYWRvbmx5PFJlY29yZDxUYXJnZXRJZCwgVGFyZ2V0U3BlYz4+ID0ge1xuICBsb2NhbDoge1xuICAgIGlkOiAnbG9jYWwnLFxuICAgIGxhYmVsOiAnTG9jYWwgKERvY2tlciBDb21wb3NlKScsXG4gICAgZGlyOiAnZGVwbG95L2xvY2FsJyxcbiAgICBlbnRyeXBvaW50OiAnYmluL3NldHVwLnNoJyxcbiAgICByZXF1aXJlZDogW10sXG4gICAgb3B0aW9uYWw6IFtdLFxuICAgIHBvc3REZXBsb3k6ICcuL2RlcGxveS9iaW4vaW5pdC1wbGF0Zm9ybS5zaCBsb2NhbCcsXG4gICAgY29zdDogJ0ZyZWUnLFxuICAgIGJlc3RGb3I6ICdEZXZlbG9wbWVudCcsXG4gICAgZGVzdHJveXM6ICdzdG9wcyBhbGwgY29udGFpbmVycyDigJQgZGF0YSB1bmRlciBkZXBsb3kvbG9jYWwvZGF0YSBwZXJzaXN0cyBvbiBkaXNrIChkZWxldGUgaXQgbWFudWFsbHkgZm9yIGEgY2xlYW4gc2xhdGUpJyxcbiAgfSxcbiAgbWluaWt1YmU6IHtcbiAgICBpZDogJ21pbmlrdWJlJyxcbiAgICBsYWJlbDogJ01pbmlrdWJlIChsb2NhbCBLdWJlcm5ldGVzKScsXG4gICAgZGlyOiAnZGVwbG95L21pbmlrdWJlJyxcbiAgICBlbnRyeXBvaW50OiAnYmluL3NldHVwLnNoJyxcbiAgICByZXF1aXJlZDogW10sXG4gICAgb3B0aW9uYWw6IFtdLFxuICAgIHBvc3REZXBsb3k6ICcuL2RlcGxveS9iaW4vaW5pdC1wbGF0Zm9ybS5zaCBtaW5pa3ViZScsXG4gICAgY29zdDogJ0ZyZWUnLFxuICAgIGJlc3RGb3I6ICdMb2NhbCBLdWJlcm5ldGVzJyxcbiAgICBkZXN0cm95czogJ3N0b3BzIHRoZSBtaW5pa3ViZSBzdGFjayDigJQgcGVyc2lzdGVudCB2b2x1bWVzIChQVkMgZGF0YSkgcmVtYWluIHVudGlsIHRoZSBjbHVzdGVyIGlzIGRlbGV0ZWQnLFxuICB9LFxuICBlYzI6IHtcbiAgICBpZDogJ2VjMicsXG4gICAgbGFiZWw6ICdBV1MgRUMyIChzaW5nbGUgTWluaWt1YmUgaW5zdGFuY2UgYmVoaW5kIGFuIEFMQiknLFxuICAgIGRpcjogJ2RlcGxveS9hd3MvZWMyJyxcbiAgICBlbnRyeXBvaW50OiAnYmluL3NldHVwLnNoJyxcbiAgICByZXF1aXJlZDogW0tFWV9QQUlSLCBET01BSU4sIEhPU1RFRF9aT05FXSxcbiAgICBvcHRpb25hbDogW1JFR0lPTiwgREVQTE9ZX01PREUsIEdIQ1JfVE9LRU4sIElOU1RBTkNFX1RZUEUsIC4uLkVNQUlMXSxcbiAgICBwb3N0RGVwbG95OiAnLi9kZXBsb3kvYmluL2luaXQtcGxhdGZvcm0uc2ggZWMyICAjIGZyb20gaW5zaWRlIHRoZSBWUEMgKFNTTSknLFxuICAgIGNvc3Q6ICd+JDE0MC0yNjUvbW8nLFxuICAgIGJlc3RGb3I6ICdEZXYgLyBzdGFnaW5nJyxcbiAgICBkZXN0cm95czogJ0RFTEVURVMgdGhlIENsb3VkRm9ybWF0aW9uIHN0YWNrOiB0aGUgVlBDLCBFQzIgaW5zdGFuY2UsIGFuZCBpdHMgRUJTIGRhdGEgdm9sdW1lIChkYXRhYmFzZXMsIHJlZ2lzdHJ5LCBwbHVnaW4gYnVpbGRzKS4gSXJyZXZlcnNpYmxlLicsXG4gIH0sXG4gIGZhcmdhdGU6IHtcbiAgICBpZDogJ2ZhcmdhdGUnLFxuICAgIGxhYmVsOiAnQVdTIEZhcmdhdGUgKHNlcnZlcmxlc3MgRUNTLCA2IENsb3VkRm9ybWF0aW9uIHN0YWNrcyknLFxuICAgIGRpcjogJ2RlcGxveS9hd3MvZmFyZ2F0ZScsXG4gICAgZW50cnlwb2ludDogJ2Jpbi9zZXR1cC5zaCcsXG4gICAgcmVxdWlyZWQ6IFtET01BSU4sIEhPU1RFRF9aT05FXSxcbiAgICBvcHRpb25hbDogW1JFR0lPTiwgREVQTE9ZX01PREUsIEdIQ1JfVE9LRU4sIC4uLkVNQUlMXSxcbiAgICBwb3N0RGVwbG95OiAnLi9kZXBsb3kvYmluL2luaXQtcGxhdGZvcm0uc2ggZmFyZ2F0ZSAgIyBmcm9tIGEgVlBDLWF0dGFjaGVkIGhvc3QnLFxuICAgIGNvc3Q6ICd+JDEwMC0zMDAvbW8nLFxuICAgIGJlc3RGb3I6ICdQcm9kdWN0aW9uJyxcbiAgICBkZXN0cm95czogJ0RFTEVURVMgYWxsIHBiLSogQ2xvdWRGb3JtYXRpb24gc3RhY2tzOiBFRlMgZGF0YSwgZGF0YWJhc2VzLCBhbmQgcmVnaXN0cnkuIFNlY3JldHMgTWFuYWdlciBlbnRyaWVzIGFyZSBOT1QgYXV0by1kZWxldGVkLiBJcnJldmVyc2libGUuJyxcbiAgfSxcbn07XG5cbmV4cG9ydCBjb25zdCBUQVJHRVRfSURTOiByZWFkb25seSBUYXJnZXRJZFtdID0gWydsb2NhbCcsICdtaW5pa3ViZScsICdlYzInLCAnZmFyZ2F0ZSddO1xuXG5leHBvcnQgZnVuY3Rpb24gaXNUYXJnZXRJZCh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIFRhcmdldElkIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgKFRBUkdFVF9JRFMgYXMgcmVhZG9ubHkgc3RyaW5nW10pLmluY2x1ZGVzKHZhbHVlKTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBc3NlbWJsZVJlc3VsdCB7XG4gIC8qKiBUaGUgZXhhY3QgY29tbWFuZCB0byBydW4g4oCUIHNlY3JldHMgbWFza2VkIGFzIGAqKipgLiAqL1xuICByZWFkb25seSBjb21tYW5kOiBzdHJpbmc7XG4gIC8qKiBSZXF1aXJlZCBpbnB1dHMgdGhhdCB3ZXJlIG5vdCBzdXBwbGllZC4gKi9cbiAgcmVhZG9ubHkgbWlzc2luZzogcmVhZG9ubHkgSW5wdXRTcGVjW107XG59XG5cbi8qKlxuICogQXNzZW1ibGUgdGhlIGRlcGxveSBjb21tYW5kIGZvciBhIHRhcmdldCBmcm9tIHRoZSBwcm92aWRlZCBwYXJhbXMuIFB1cmUgYW5kXG4gKiBkZXRlcm1pbmlzdGljIOKAlCBubyBzaGVsbCwgbm8gTExNLiBNaXNzaW5nIHJlcXVpcmVkIGlucHV0cyBhcmUgcmVwb3J0ZWQgKG5ldmVyXG4gKiBndWVzc2VkKS4gQnkgZGVmYXVsdCBzZWNyZXRzIGFyZSBtYXNrZWQgKGAqKipgKSBmb3IgRElTUExBWTsgcGFzcyBgbWFzazogZmFsc2VgXG4gKiB0byBidWlsZCB0aGUgcmVhbCBjb21tYW5kIGZvciBFWEVDVVRJT04g4oCUIHRoYXQgc3RyaW5nIG11c3QgbmV2ZXIgYmUgbG9nZ2VkIG9yXG4gKiBzaG93biB0byB0aGUgbW9kZWwuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc3NlbWJsZUNvbW1hbmQoXG4gIHRhcmdldDogVGFyZ2V0U3BlYyxcbiAgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgb3B0czogeyBtYXNrPzogYm9vbGVhbiB9ID0ge30sXG4pOiBBc3NlbWJsZVJlc3VsdCB7XG4gIGNvbnN0IG1hc2sgPSBvcHRzLm1hc2sgPz8gdHJ1ZTtcbiAgY29uc3QgcHJvdmlkZWQgPSAoc3BlYzogSW5wdXRTcGVjKTogYm9vbGVhbiA9PiB7XG4gICAgY29uc3QgdiA9IHBhcmFtc1tzcGVjLmtleV07XG4gICAgcmV0dXJuIHYgIT09IHVuZGVmaW5lZCAmJiB2ICE9PSAnJyAmJiB2ICE9PSBmYWxzZTtcbiAgfTtcblxuICBjb25zdCBtaXNzaW5nID0gdGFyZ2V0LnJlcXVpcmVkLmZpbHRlcigoc3BlYykgPT4gIXByb3ZpZGVkKHNwZWMpKTtcblxuICBjb25zdCBwYXJ0czogc3RyaW5nW10gPSBbYGNkICR7dGFyZ2V0LmRpcn0gJiYgYmFzaCAke3RhcmdldC5lbnRyeXBvaW50fWBdO1xuICBmb3IgKGNvbnN0IHNwZWMgb2YgWy4uLnRhcmdldC5yZXF1aXJlZCwgLi4udGFyZ2V0Lm9wdGlvbmFsXSkge1xuICAgIGlmICghcHJvdmlkZWQoc3BlYykpIGNvbnRpbnVlO1xuICAgIGlmIChzcGVjLmJvb2xlYW4pIHtcbiAgICAgIHBhcnRzLnB1c2goYC0tJHtzcGVjLmZsYWd9YCk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgY29uc3QgdmFsdWUgPSBzcGVjLnNlY3JldCAmJiBtYXNrID8gJyoqKicgOiBTdHJpbmcocGFyYW1zW3NwZWMua2V5XSk7XG4gICAgcGFydHMucHVzaChgLS0ke3NwZWMuZmxhZ30gJHt2YWx1ZX1gKTtcbiAgfVxuXG4gIHJldHVybiB7IGNvbW1hbmQ6IHBhcnRzLmpvaW4oJyBcXFxcXFxuICAnKSwgbWlzc2luZyB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRlYXJkb3duUmVzdWx0IHtcbiAgLyoqIFRoZSBleGFjdCB0ZWFyZG93biBjb21tYW5kIHRvIHJ1bi4gKi9cbiAgcmVhZG9ubHkgY29tbWFuZDogc3RyaW5nO1xuICAvKiogV2hldGhlciB0aGlzIHRlYXJkb3duIGlycmV2ZXJzaWJseSBkZXN0cm95cyBkYXRhIChBV1MgdGFyZ2V0cykuICovXG4gIHJlYWRvbmx5IGRlc3RydWN0aXZlOiBib29sZWFuO1xufVxuXG4vKiogQ2xvdWRGb3JtYXRpb24gc3RhY2sgbmFtZSB0aGUgRUMyIHNldHVwLnNoIGRlZmF1bHRzIHRvLiAqL1xuY29uc3QgREVGQVVMVF9FQzJfU1RBQ0sgPSAncGlwZWxpbmUtYnVpbGRlcic7XG4vKiogU3RhY2sgcHJlZml4IHRoZSBGYXJnYXRlIHRlYXJkb3duLnNoIGRlZmF1bHRzIHRvLiAqL1xuY29uc3QgREVGQVVMVF9GQVJHQVRFX1BSRUZJWCA9ICdwYic7XG5cbi8qKlxuICogQXNzZW1ibGUgdGhlIHRlYXJkb3duIGNvbW1hbmQgZm9yIGEgdGFyZ2V0LiBQdXJlIGFuZCBkZXRlcm1pbmlzdGljIOKAlCBtaXJyb3JzXG4gKiBgYXNzZW1ibGVDb21tYW5kYCBmb3IgdGhlIGRlc3Ryb3kgcGF0aC4gbG9jYWwvbWluaWt1YmUgU1RPUCB0aGUgc3RhY2tcbiAqIChub24tZGVzdHJ1Y3RpdmUg4oCUIG9uLWRpc2sgLyBQVkMgZGF0YSBzdXJ2aXZlcyk7IGVjMi9mYXJnYXRlIERFTEVURSB0aGVpclxuICogQ2xvdWRGb3JtYXRpb24gc3RhY2tzIGFuZCBhcmUgaXJyZXZlcnNpYmxlLiBGb3IgRmFyZ2F0ZSwgYGFzc3VtZVllc2AgZm9yd2FyZHNcbiAqIHRoZSBuYXRpdmUgc2NyaXB0J3Mgb3duIGAtLXllc2AgKHRoZSBhZ2VudCBydW5zIGl0cyBvd24gdHlwZWQgY29uZmlybWF0aW9uXG4gKiBmaXJzdCwgc28gdGhlIHNjcmlwdCBtdXN0IG5vdCBhbHNvIGJsb2NrIG9uIHN0ZGluKTsgRUMyIGBkZWxldGUtc3RhY2tgIGhhcyBub1xuICogbmF0aXZlIHByb21wdCwgd2hpY2ggaXMgZXhhY3RseSB3aHkgdGhlIGFnZW50IGdhdGUgaXMgbWFuZGF0b3J5IHRoZXJlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdGVhcmRvd25Db21tYW5kKFxuICB0YXJnZXQ6IFRhcmdldElkLFxuICBvcHRzOiB7IHN0YWNrTmFtZT86IHN0cmluZzsgcmVnaW9uPzogc3RyaW5nOyBhc3N1bWVZZXM/OiBib29sZWFuIH0gPSB7fSxcbik6IFRlYXJkb3duUmVzdWx0IHtcbiAgY29uc3QgcmVnaW9uID0gb3B0cy5yZWdpb24gfHwgcHJvY2Vzcy5lbnYuQVdTX1JFR0lPTiB8fCAndXMtZWFzdC0xJztcbiAgc3dpdGNoICh0YXJnZXQpIHtcbiAgICBjYXNlICdsb2NhbCc6XG4gICAgICByZXR1cm4geyBjb21tYW5kOiAnY2QgZGVwbG95L2xvY2FsICYmIGJhc2ggYmluL3NodXRkb3duLnNoJywgZGVzdHJ1Y3RpdmU6IGZhbHNlIH07XG4gICAgY2FzZSAnbWluaWt1YmUnOlxuICAgICAgcmV0dXJuIHsgY29tbWFuZDogJ2NkIGRlcGxveS9taW5pa3ViZSAmJiBiYXNoIGJpbi9zaHV0ZG93bi5zaCcsIGRlc3RydWN0aXZlOiBmYWxzZSB9O1xuICAgIGNhc2UgJ2VjMic6IHtcbiAgICAgIGNvbnN0IHN0YWNrID0gb3B0cy5zdGFja05hbWUgfHwgREVGQVVMVF9FQzJfU1RBQ0s7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBjb21tYW5kOlxuICAgICAgICAgIGBhd3MgY2xvdWRmb3JtYXRpb24gZGVsZXRlLXN0YWNrIC0tc3RhY2stbmFtZSAke3N0YWNrfSAtLXJlZ2lvbiAke3JlZ2lvbn0gJiYgYCArXG4gICAgICAgICAgYGF3cyBjbG91ZGZvcm1hdGlvbiB3YWl0IHN0YWNrLWRlbGV0ZS1jb21wbGV0ZSAtLXN0YWNrLW5hbWUgJHtzdGFja30gLS1yZWdpb24gJHtyZWdpb259YCxcbiAgICAgICAgZGVzdHJ1Y3RpdmU6IHRydWUsXG4gICAgICB9O1xuICAgIH1cbiAgICBjYXNlICdmYXJnYXRlJzoge1xuICAgICAgY29uc3QgcHJlZml4ID0gb3B0cy5zdGFja05hbWUgfHwgREVGQVVMVF9GQVJHQVRFX1BSRUZJWDtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNvbW1hbmQ6XG4gICAgICAgICAgYGNkIGRlcGxveS9hd3MvZmFyZ2F0ZSAmJiBiYXNoIGJpbi90ZWFyZG93bi5zaCAtLXN0YWNrLXByZWZpeCAke3ByZWZpeH0gLS1yZWdpb24gJHtyZWdpb259YCArXG4gICAgICAgICAgKG9wdHMuYXNzdW1lWWVzID8gJyAtLXllcycgOiAnJyksXG4gICAgICAgIGRlc3RydWN0aXZlOiB0cnVlLFxuICAgICAgfTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
180
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFyZ2V0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hZ2VudC90YXJnZXRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFzRHRDLCtFQUErRTtBQUUvRSxNQUFNLE1BQU0sR0FBYyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsdURBQXVELEVBQUUsQ0FBQztBQUNsSSxNQUFNLFdBQVcsR0FBYyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxHQUFHLEVBQUUsY0FBYyxFQUFFLFdBQVcsRUFBRSw2REFBNkQsRUFBRSxDQUFDO0FBQzNKLE1BQU0sVUFBVSxHQUFjLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxzRUFBc0UsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUM7QUFDMUssTUFBTSxNQUFNLEdBQWMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxDQUFDO0FBQ3ZGLE1BQU0sV0FBVyxHQUFjLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSw2REFBNkQsRUFBRSxDQUFDO0FBQ3RKLE1BQU0sUUFBUSxHQUFjLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxnRkFBZ0YsRUFBRSxDQUFDO0FBQ2hLLE1BQU0sYUFBYSxHQUFjLEVBQUUsSUFBSSxFQUFFLGVBQWUsRUFBRSxHQUFHLEVBQUUsY0FBYyxFQUFFLFdBQVcsRUFBRSx3Q0FBd0MsRUFBRSxDQUFDO0FBRXZJLDhFQUE4RTtBQUM5RSxrRkFBa0Y7QUFDbEYsb0JBQW9CO0FBQ3BCLE1BQU0sS0FBSyxHQUF5QjtJQUNsQyxFQUFFLElBQUks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OERBQThELEtBQUssYUFBYSxNQUFNLEVBQUU7Z0JBQzFGLFdBQVcsRUFBRSxJQUFJO2FBQ2xCLENBQUM7UUFDSixDQUFDO1FBQ0QsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDO1lBQ2YsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsSUFBSSxzQkFBc0IsQ0FBQztZQUN4RCxPQUFPO2dCQUNMLE9BQU8sRUFDTCxnRUFBZ0UsTUFBTSxhQUFhLE1BQU0sRUFBRTtvQkFDM0YsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDbEMsV0FBVyxFQUFFLElBQUk7YUFDbEIsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG4vKipcbiAqIERldGVybWluaXN0aWMgcmVnaXN0cnkgb2YgcGxhdGZvcm0gZGVwbG95IHRhcmdldHMg4oCUIHRoZSBzb3VyY2Ugb2YgdHJ1dGggdGhlXG4gKiBgcHJvdmlzaW9uYCBhZHZpc29yIHVzZXMgdG8gYXNzZW1ibGUgdGhlIEVYQUNUIGRlcGxveSBjb21tYW5kLiBUaGUgYWdlbnQgaXMgYVxuICogdGhpbiB3cmFwcGVyIG92ZXIgdGhlIGV4aXN0aW5nIGRlcGxveSBzY3JpcHRzOyBpdCBuZXZlciByZWltcGxlbWVudHNcbiAqIGRlcGxveW1lbnQsIG9ubHkgdmFsaWRhdGVzIGlucHV0cyBhbmQgYXNzZW1ibGVzIHRoZSBjb21tYW5kIHRvIHJ1bi5cbiAqXG4gKiBLZWVwIHRoaXMgaW4gbG9jay1zdGVwIHdpdGggdGhlIGZsYWdzIHRoZSBzY3JpcHRzIGFjY2VwdCDigJQgZXZlcnkgdGFyZ2V0J3NcbiAqIG9wZXJhdG9yIGVudHJ5cG9pbnQgaXMgYGJpbi9zZXR1cC5zaGAgKGRlcGxveS88dGFyZ2V0Pi9iaW4vc2V0dXAuc2gpLlxuICovXG5cbmV4cG9ydCB0eXBlIFRhcmdldElkID0gJ2xvY2FsJyB8ICdtaW5pa3ViZScgfCAnZWMyJyB8ICdmYXJnYXRlJztcblxuLyoqIEEgc2luZ2xlIGlucHV0IHRoZSB1bmRlcmx5aW5nIGRlcGxveSBzY3JpcHQgYWNjZXB0cy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW5wdXRTcGVjIHtcbiAgLyoqIEZsYWcgbmFtZSBwYXNzZWQgdG8gdGhlIHNjcmlwdCAod2l0aG91dCB0aGUgbGVhZGluZyBgLS1gKS4gKi9cbiAgcmVhZG9ubHkgZmxhZzogc3RyaW5nO1xuICAvKiogS2V5IG9uIHRoZSBwcm92aXNpb24gcGFyYW1zIG9iamVjdC4gKi9cbiAgcmVhZG9ubHkga2V5OiBzdHJpbmc7XG4gIC8qKiBIdW1hbiBkZXNjcmlwdGlvbiDigJQgc2hvd24gd2hlbiBhIHJlcXVpcmVkIGlucHV0IGlzIG1pc3NpbmcuICovXG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIC8qKiBTZWNyZXQg4oCUIG5ldmVyIHByaW50ZWQgaW4gdGhlIGFzc2VtYmxlZCBjb21tYW5kIChtYXNrZWQgYXMgYCoqKmApLiAqL1xuICByZWFkb25seSBzZWNyZXQ/OiBib29sZWFuO1xuICAvKiogQm9vbGVhbiBmbGFnIHdpdGggbm8gdmFsdWUgKGUuZy4gYC0tZW1haWxgKS4gKi9cbiAgcmVhZG9ubHkgYm9vbGVhbj86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGFyZ2V0U3BlYyB7XG4gIHJlYWRvbmx5IGlkOiBUYXJnZXRJZDtcbiAgcmVhZG9ubHkgbGFiZWw6IHN0cmluZztcbiAgLyoqIERpcmVjdG9yeSB0aGUgZW50cnlwb2ludCBydW5zIGZyb20gKHJlbGF0aXZlIHRvIHJlcG8gcm9vdCkuICovXG4gIHJlYWRvbmx5IGRpcjogc3RyaW5nO1xuICAvKiogRW50cnlwb2ludCBzY3JpcHQgKHJlbGF0aXZlIHRvIGBkaXJgKS4gKi9cbiAgcmVhZG9ubHkgZW50cnlwb2ludDogc3RyaW5nO1xuICAvKiogSW5wdXRzIHRoZSBzY3JpcHQgUkVRVUlSRVMg4oCUIHRoZSBhZHZpc29yIHJlcG9ydHMgYW55IHRoYXQgYXJlIG1pc3NpbmcuICovXG4gIHJlYWRvbmx5IHJlcXVpcmVkOiByZWFkb25seSBJbnB1dFNwZWNbXTtcbiAgLyoqIE9wdGlvbmFsIGlucHV0cywgcGFzc2VkIHRocm91Z2ggb25seSB3aGVuIHByb3ZpZGVkLiAqL1xuICByZWFkb25seSBvcHRpb25hbDogcmVhZG9ubHkgSW5wdXRTcGVjW107XG4gIC8qKlxuICAgKiBSZXBvIGZvbGRlcihzKSB0aGlzIHRhcmdldCdzIGRlcGxveSBuZWVkcywgZm9yIGEgc3BhcnNlIGAtLXJlcG9gIGJvb3RzdHJhcC5cbiAgICogQ29tYmluZWQgd2l0aCBDT01NT05fU1BBUlNFX1BBVEhTIGFuZCBhbnkgc2VsZWN0ZWQgbG9hZCBzdGVwcycgcGF0aHMuXG4gICAqL1xuICByZWFkb25seSBzcGFyc2VQYXRoczogcmVhZG9ubHkgc3RyaW5nW107XG4gIC8qKiBQb3N0LWRlcGxveSBzdGVwIHRvIHN1cmZhY2UgKHJlZ2lzdGVycyBhZG1pbiArIGxvYWRzIHBsdWdpbnMpLiAqL1xuICByZWFkb25seSBwb3N0RGVwbG95Pzogc3RyaW5nO1xuICAvKiogUm91Z2ggbW9udGhseSBjb3N0IChmcm9tIGRvY3MpLiAqL1xuICByZWFkb25seSBjb3N0OiBzdHJpbmc7XG4gIC8qKiBPbmUtbGluZSBcImJlc3QgZm9yXCIuICovXG4gIHJlYWRvbmx5IGJlc3RGb3I6IHN0cmluZztcbiAgLyoqIFdoYXQgYSB0ZWFyZG93biBvZiB0aGlzIHRhcmdldCBkZXN0cm95cyDigJQgc2hvd24gYmVmb3JlIGEgKGdhdGVkKSB0ZWFyZG93bi4gKi9cbiAgcmVhZG9ubHkgZGVzdHJveXM6IHN0cmluZztcbn1cblxuLy8gLS0tIFNoYXJlZCBpbnB1dCBzcGVjcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5jb25zdCBET01BSU46IElucHV0U3BlYyA9IHsgZmxhZzogJ2RvbWFpbicsIGtleTogJ2RvbWFpbicsIGRlc2NyaXB0aW9uOiAnRnVsbHktcXVhbGlmaWVkIGRvbWFpbiBuYW1lIChBTEIgQUNNIGNlcnQgKyBTRVMgREtJTSknIH07XG5jb25zdCBIT1NURURfWk9ORTogSW5wdXRTcGVjID0geyBmbGFnOiAnaG9zdGVkLXpvbmUtaWQnLCBrZXk6ICdob3N0ZWRab25lSWQnLCBkZXNjcmlwdGlvbjogJ1B1YmxpYyBSb3V0ZSA1MyBob3N0ZWQgem9uZSBJRCBhdXRob3JpdGF0aXZlIGZvciB0aGUgZG9tYWluJyB9O1xuY29uc3QgR0hDUl9UT0tFTjogSW5wdXRTcGVjID0geyBmbGFnOiAnZ2hjci10b2tlbicsIGtleTogJ2doY3JUb2tlbicsIGRlc2NyaXB0aW9uOiAnR2l0SHViIFBBVCB3aXRoIHJlYWQ6cGFja2FnZXMgKGF2b2lkcyBnaGNyLmlvIGFub255bW91cyByYXRlIGxpbWl0cyknLCBzZWNyZXQ6IHRydWUgfTtcbmNvbnN0IFJFR0lPTjogSW5wdXRTcGVjID0geyBmbGFnOiAncmVnaW9uJywga2V5OiAncmVnaW9uJywgZGVzY3JpcHRpb246ICdBV1MgcmVnaW9uJyB9O1xuY29uc3QgREVQTE9ZX01PREU6IElucHV0U3BlYyA9IHsgZmxhZzogJ2RlcGxveS1tb2RlJywga2V5OiAnZGVwbG95TW9kZScsIGRlc2NyaXB0aW9uOiAncHVibGljIChpbnRlcm5ldC1mYWNpbmcgQUxCKSBvciBwcml2YXRlIChpbnRlcm5hbCwgZGVmYXVsdCknIH07XG5jb25zdCBLRVlfUEFJUjogSW5wdXRTcGVjID0geyBmbGFnOiAna2V5LXBhaXInLCBrZXk6ICdrZXlQYWlyJywgZGVzY3JpcHRpb246ICdFQzIga2V5IHBhaXIgaW4gdGhlIHJlZ2lvbiAoYnJlYWstZ2xhc3Mgc2VyaWFsIGNvbnNvbGU7IHJvdXRpbmUgYWNjZXNzIGlzIFNTTSknIH07XG5jb25zdCBJTlNUQU5DRV9UWVBFOiBJbnB1dFNwZWMgPSB7IGZsYWc6ICdpbnN0YW5jZS10eXBlJywga2V5OiAnaW5zdGFuY2VUeXBlJywgZGVzY3JpcHRpb246ICdFQzIgaW5zdGFuY2UgdHlwZSAoZGVmYXVsdCB0My4yeGxhcmdlKScgfTtcblxuLy8gU0VTIC8gZW1haWwgZmFtaWx5IOKAlCBzaGFyZWQgYnkgZWMyICsgZmFyZ2F0ZS4gU0VTIGlzIHByb3Zpc2lvbmVkIEJZIERFRkFVTFRcbi8vIG9uIEFXUyBkZXBsb3lzOyBgLS1uby1lbWFpbGAgaXMgdGhlIG9wdC1vdXQgKGAtLWVtYWlsYCBpcyBhIGhhcm1sZXNzIG5vLW9wIGtlcHRcbi8vIGZvciBiYWNrLWNvbXBhdCkuXG5jb25zdCBFTUFJTDogcmVhZG9ubHkgSW5wdXRTcGVjW10gPSBbXG4gIHsgZmxhZzogJ2VtYWlsJywga2V5OiAnZW1haWwnLCBkZXNjcmlwdGlvbjogJ0VuYWJsZSBTRVMgdHJhbnNhY3Rpb25hbCBlbWFpbCAob24gYnkgZGVmYXVsdCBmb3IgQVdTKScsIGJvb2xlYW46IHRydWUgfSxcbiAgeyBmbGFnOiAnbm8tZW1haWwnLCBrZXk6ICdub0VtYWlsJywgZGVzY3JpcHRpb246ICdTa2lwIFNFUyAodHJhbnNhY3Rpb25hbCBlbWFpbCBpcyBwcm92aXNpb25lZCBieSBkZWZhdWx0KScsIGJvb2xlYW46IHRydWUgfSxcbiAgeyBmbGFnOiAnZW1haWwtZnJvbScsIGtleTogJ2VtYWlsRnJvbScsIGRlc2NyaXB0aW9uOiAnRnJvbSBhZGRyZXNzIChkZWZhdWx0IG5vcmVwbHlAPGRvbWFpbj4pJyB9LFxuICB7IGZsYWc6ICdlbWFpbC1mcm9tLW5hbWUnLCBrZXk6ICdlbWFpbEZyb21OYW1lJywgZGVzY3JpcHRpb246ICdEaXNwbGF5IG5hbWUgb24gb3V0Ym91bmQgZW1haWwnIH0sXG4gIHsgZmxhZzogJ2FsZXJ0LWVtYWlsJywga2V5OiAnYWxlcnRFbWFpbCcsIGRlc2NyaXB0aW9uOiAnU3Vic2NyaWJlIGFuIGFkZHJlc3MgdG8gdGhlIGJvdW5jZS9jb21wbGFpbnQgU05TIHRvcGljJyB9LFxuICB7IGZsYWc6ICduby1jcmVhdGUtc2VzLWlkZW50aXR5Jywga2V5OiAnbm9DcmVhdGVTZXNJZGVudGl0eScsIGRlc2NyaXB0aW9uOiAnU2tpcCBTRVMgaWRlbnRpdHkgY3JlYXRpb24gKGRvbWFpbiBhbHJlYWR5IHZlcmlmaWVkKScsIGJvb2xlYW46IHRydWUgfSxcbl07XG5cbi8vIC0tLSBUYXJnZXRzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuZXhwb3J0IGNvbnN0IFRBUkdFVFM6IFJlYWRvbmx5PFJlY29yZDxUYXJnZXRJZCwgVGFyZ2V0U3BlYz4+ID0ge1xuICBsb2NhbDoge1xuICAgIGlkOiAnbG9jYWwnLFxuICAgIGxhYmVsOiAnTG9jYWwgKERvY2tlciBDb21wb3NlKScsXG4gICAgZGlyOiAnZGVwbG95L2xvY2FsJyxcbiAgICBlbnRyeXBvaW50OiAnYmluL3NldHVwLnNoJyxcbiAgICBzcGFyc2VQYXRoczogWydkZXBsb3kvbG9jYWwnXSxcbiAgICByZXF1aXJlZDogW10sXG4gICAgb3B0aW9uYWw6IFtdLFxuICAgIHBvc3REZXBsb3k6ICcuL2RlcGxveS9iaW4vaW5pdC1wbGF0Zm9ybS5zaCBsb2NhbCcsXG4gICAgY29zdDogJ0ZyZWUnLFxuICAgIGJlc3RGb3I6ICdEZXZlbG9wbWVudCcsXG4gICAgZGVzdHJveXM6ICdzdG9wcyBhbGwgY29udGFpbmVycyDigJQgZGF0YSB1bmRlciBkZXBsb3kvbG9jYWwvZGF0YSBwZXJzaXN0cyBvbiBkaXNrIChkZWxldGUgaXQgbWFudWFsbHkgZm9yIGEgY2xlYW4gc2xhdGUpJyxcbiAgfSxcbiAgbWluaWt1YmU6IHtcbiAgICBpZDogJ21pbmlrdWJlJyxcbiAgICBsYWJlbDogJ01pbmlrdWJlIChsb2NhbCBLdWJlcm5ldGVzKScsXG4gICAgZGlyOiAnZGVwbG95L21pbmlrdWJlJyxcbiAgICBlbnRyeXBvaW50OiAnYmluL3NldHVwLnNoJyxcbiAgICBzcGFyc2VQYXRoczogWydkZXBsb3kvbWluaWt1YmUnXSxcbiAgICByZXF1aXJlZDogW10sXG4gICAgb3B0aW9uYWw6IFtdLFxuICAgIHBvc3REZXBsb3k6ICcuL2RlcGxveS9iaW4vaW5pdC1wbGF0Zm9ybS5zaCBtaW5pa3ViZScsXG4gICAgY29zdDogJ0ZyZWUnLFxuICAgIGJlc3RGb3I6ICdMb2NhbCBLdWJlcm5ldGVzJyxcbiAgICBkZXN0cm95czogJ3N0b3BzIHRoZSBtaW5pa3ViZSBzdGFjayDigJQgcGVyc2lzdGVudCB2b2x1bWVzIChQVkMgZGF0YSkgcmVtYWluIHVudGlsIHRoZSBjbHVzdGVyIGlzIGRlbGV0ZWQnLFxuICB9LFxuICBlYzI6IHtcbiAgICBpZDogJ2VjMicsXG4gICAgbGFiZWw6ICdBV1MgRUMyIChzaW5nbGUgTWluaWt1YmUgaW5zdGFuY2UgYmVoaW5kIGFuIEFMQiknLFxuICAgIGRpcjogJ2RlcGxveS9hd3MvZWMyJyxcbiAgICBlbnRyeXBvaW50OiAnYmluL3NldHVwLnNoJyxcbiAgICBzcGFyc2VQYXRoczogWydkZXBsb3kvYXdzL2VjMiddLFxuICAgIHJlcXVpcmVkOiBbS0VZX1BBSVIsIERPTUFJTiwgSE9TVEVEX1pPTkVdLFxuICAgIG9wdGlvbmFsOiBbUkVHSU9OLCBERVBMT1lfTU9ERSwgR0hDUl9UT0tFTiwgSU5TVEFOQ0VfVFlQRSwgLi4uRU1BSUxdLFxuICAgIHBvc3REZXBsb3k6ICcuL2RlcGxveS9iaW4vaW5pdC1wbGF0Zm9ybS5zaCBlYzIgICMgZnJvbSBpbnNpZGUgdGhlIFZQQyAoU1NNKScsXG4gICAgY29zdDogJ34kMTQwLTI2NS9tbycsXG4gICAgYmVzdEZvcjogJ0RldiAvIHN0YWdpbmcnLFxuICAgIGRlc3Ryb3lzOiAnREVMRVRFUyB0aGUgQ2xvdWRGb3JtYXRpb24gc3RhY2s6IHRoZSBWUEMsIEVDMiBpbnN0YW5jZSwgYW5kIGl0cyBFQlMgZGF0YSB2b2x1bWUgKGRhdGFiYXNlcywgcmVnaXN0cnksIHBsdWdpbiBidWlsZHMpLiBJcnJldmVyc2libGUuJyxcbiAgfSxcbiAgZmFyZ2F0ZToge1xuICAgIGlkOiAnZmFyZ2F0ZScsXG4gICAgbGFiZWw6ICdBV1MgRmFyZ2F0ZSAoc2VydmVybGVzcyBFQ1MsIDYgQ2xvdWRGb3JtYXRpb24gc3RhY2tzKScsXG4gICAgZGlyOiAnZGVwbG95L2F3cy9mYXJnYXRlJyxcbiAgICBlbnRyeXBvaW50OiAnYmluL3NldHVwLnNoJyxcbiAgICBzcGFyc2VQYXRoczogWydkZXBsb3kvYXdzL2ZhcmdhdGUnXSxcbiAgICByZXF1aXJlZDogW0RPTUFJTiwgSE9TVEVEX1pPTkVdLFxuICAgIG9wdGlvbmFsOiBbUkVHSU9OLCBERVBMT1lfTU9ERSwgR0hDUl9UT0tFTiwgLi4uRU1BSUxdLFxuICAgIHBvc3REZXBsb3k6ICcuL2RlcGxveS9iaW4vaW5pdC1wbGF0Zm9ybS5zaCBmYXJnYXRlICAjIGZyb20gYSBWUEMtYXR0YWNoZWQgaG9zdCcsXG4gICAgY29zdDogJ34kMTAwLTMwMC9tbycsXG4gICAgYmVzdEZvcjogJ1Byb2R1Y3Rpb24nLFxuICAgIGRlc3Ryb3lzOiAnREVMRVRFUyBhbGwgcGItKiBDbG91ZEZvcm1hdGlvbiBzdGFja3M6IEVGUyBkYXRhLCBkYXRhYmFzZXMsIGFuZCByZWdpc3RyeS4gU2VjcmV0cyBNYW5hZ2VyIGVudHJpZXMgYXJlIE5PVCBhdXRvLWRlbGV0ZWQuIElycmV2ZXJzaWJsZS4nLFxuICB9LFxufTtcblxuZXhwb3J0IGNvbnN0IFRBUkdFVF9JRFM6IHJlYWRvbmx5IFRhcmdldElkW10gPSBbJ2xvY2FsJywgJ21pbmlrdWJlJywgJ2VjMicsICdmYXJnYXRlJ107XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1RhcmdldElkKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgVGFyZ2V0SWQge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiAoVEFSR0VUX0lEUyBhcyByZWFkb25seSBzdHJpbmdbXSkuaW5jbHVkZXModmFsdWUpO1xufVxuXG4vLyAtLS0gU3BhcnNlIGJvb3RzdHJhcCBwYXRocyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKlxuICogRm9sZGVycyBldmVyeSBgLS1yZXBvYCBib290c3RyYXAgbmVlZHMgcmVnYXJkbGVzcyBvZiB0YXJnZXQ6IHRoZSBvcmNoZXN0cmF0aW9uXG4gKiBzY3JpcHRzLiBFYWNoIHRhcmdldCdzIHNldHVwLnNoICsgaW5pdC1wbGF0Zm9ybS5zaCBsaXZlIGluIC8gZHJpdmUgdGhlc2UuXG4gKiBEZWxpYmVyYXRlbHkgbWluaW1hbCDigJQgaGVhdmllciBmb2xkZXJzIChwbHVnaW5zL2NvbXBsaWFuY2Uvc2FtcGxlcykgYXJlIHB1bGxlZFxuICogaW4gb25seSB3aGVuIHRoZWlyIHBvc3QtaW5zdGFsbCBvcHRpb24gaXMgc2VsZWN0ZWQgKHNlZSBMT0FEX1NURVBTKS5cbiAqL1xuZXhwb3J0IGNvbnN0IENPTU1PTl9TUEFSU0VfUEFUSFM6IHJlYWRvbmx5IHN0cmluZ1tdID0gWydkZXBsb3kvYmluJ107XG5cbi8qKlxuICogT3B0LWluIHBvc3QtaW5zdGFsbCBsb2FkIHN0ZXBzLiBFYWNoIG1hcHMgYSBwcm92aXNpb24gYC0td2l0aC0qYCBmbGFnIHRvIHRoZVxuICogaW5pdC1wbGF0Zm9ybSBlbnYgdmFyIHRoYXQgZW5hYmxlcyBpdCBBTkQgdGhlIHJlcG8gZm9sZGVyKHMpIGl0IHJlYWRzIOKAlCBzbyB0aGVcbiAqIHNwYXJzZSBjaGVja291dCBncm93cyBleGFjdGx5IHdpdGggdGhlIHNlbGVjdGVkIG9wdGlvbnMuXG4gKi9cbmV4cG9ydCBjb25zdCBMT0FEX1NURVBTID0gW1xuICAvLyBUaGUgcGx1Z2luIGJ1aWxkIHJlYWRzIGRlcGxveS9wbHVnaW5zL19iYXNlIEFORCBkZXBsb3kvY29kZWJ1aWxkL2Jvb3RzdHJhcC5cbiAgeyBpZDogJ3BsdWdpbnMnLCBmbGFnOiAnd2l0aFBsdWdpbnMnLCBlbnY6ICdMT0FEX1BMVUdJTlMnLCBwYXRoczogWydkZXBsb3kvcGx1Z2lucycsICdkZXBsb3kvY29kZWJ1aWxkJ10gfSxcbiAgeyBpZDogJ2NvbXBsaWFuY2UnLCBmbGFnOiAnd2l0aENvbXBsaWFuY2UnLCBlbnY6ICdMT0FEX0NPTVBMSUFOQ0UnLCBwYXRoczogWydkZXBsb3kvY29tcGxpYW5jZSddIH0sXG4gIHsgaWQ6ICdzYW1wbGVzJywgZmxhZzogJ3dpdGhTYW1wbGVzJywgZW52OiAnTE9BRF9QSVBFTElORVMnLCBwYXRoczogWydkZXBsb3kvc2FtcGxlcyddIH0sXG5dIGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBMb2FkU3RlcElkID0gKHR5cGVvZiBMT0FEX1NURVBTKVtudW1iZXJdWydpZCddO1xuXG4vKipcbiAqIFRoZSBkZS1kdXBsaWNhdGVkIHNldCBvZiBzcGFyc2UgcGF0aHMgZm9yIGEgdGFyZ2V0IHBsdXMgdGhlIGVuYWJsZWQgbG9hZFxuICogc3RlcHM6IGNvbW1vbiBiYXNlIOKIqiB0YXJnZXQgZm9sZGVyKHMpIOKIqiBlYWNoIGVuYWJsZWQgc3RlcCdzIGZvbGRlcihzKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNwYXJzZVBhdGhzRm9yKHRhcmdldDogVGFyZ2V0SWQsIGVuYWJsZWRMb2FkSWRzOiByZWFkb25seSBzdHJpbmdbXSk6IHN0cmluZ1tdIHtcbiAgY29uc3QgcGF0aHMgPSBuZXcgU2V0PHN0cmluZz4oQ09NTU9OX1NQQVJTRV9QQVRIUyk7XG4gIGZvciAoY29uc3QgcCBvZiBUQVJHRVRTW3RhcmdldF0uc3BhcnNlUGF0aHMpIHBhdGhzLmFkZChwKTtcbiAgZm9yIChjb25zdCBzdGVwIG9mIExPQURfU1RFUFMpIHtcbiAgICBpZiAoZW5hYmxlZExvYWRJZHMuaW5jbHVkZXMoc3RlcC5pZCkpIGZvciAoY29uc3QgcCBvZiBzdGVwLnBhdGhzKSBwYXRocy5hZGQocCk7XG4gIH1cbiAgcmV0dXJuIFsuLi5wYXRoc107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXNzZW1ibGVSZXN1bHQge1xuICAvKiogVGhlIGV4YWN0IGNvbW1hbmQgdG8gcnVuIOKAlCBzZWNyZXRzIG1hc2tlZCBhcyBgKioqYC4gKi9cbiAgcmVhZG9ubHkgY29tbWFuZDogc3RyaW5nO1xuICAvKiogUmVxdWlyZWQgaW5wdXRzIHRoYXQgd2VyZSBub3Qgc3VwcGxpZWQuICovXG4gIHJlYWRvbmx5IG1pc3Npbmc6IHJlYWRvbmx5IElucHV0U3BlY1tdO1xufVxuXG4vKipcbiAqIEFzc2VtYmxlIHRoZSBkZXBsb3kgY29tbWFuZCBmb3IgYSB0YXJnZXQgZnJvbSB0aGUgcHJvdmlkZWQgcGFyYW1zLiBQdXJlIGFuZFxuICogZGV0ZXJtaW5pc3RpYyDigJQgbm8gc2hlbGwsIG5vIExMTS4gTWlzc2luZyByZXF1aXJlZCBpbnB1dHMgYXJlIHJlcG9ydGVkIChuZXZlclxuICogZ3Vlc3NlZCkuIEJ5IGRlZmF1bHQgc2VjcmV0cyBhcmUgbWFza2VkIChgKioqYCkgZm9yIERJU1BMQVk7IHBhc3MgYG1hc2s6IGZhbHNlYFxuICogdG8gYnVpbGQgdGhlIHJlYWwgY29tbWFuZCBmb3IgRVhFQ1VUSU9OIOKAlCB0aGF0IHN0cmluZyBtdXN0IG5ldmVyIGJlIGxvZ2dlZCBvclxuICogc2hvd24gdG8gdGhlIG1vZGVsLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXNzZW1ibGVDb21tYW5kKFxuICB0YXJnZXQ6IFRhcmdldFNwZWMsXG4gIHBhcmFtczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gIG9wdHM6IHsgbWFzaz86IGJvb2xlYW4gfSA9IHt9LFxuKTogQXNzZW1ibGVSZXN1bHQge1xuICBjb25zdCBtYXNrID0gb3B0cy5tYXNrID8/IHRydWU7XG4gIGNvbnN0IHByb3ZpZGVkID0gKHNwZWM6IElucHV0U3BlYyk6IGJvb2xlYW4gPT4ge1xuICAgIGNvbnN0IHYgPSBwYXJhbXNbc3BlYy5rZXldO1xuICAgIHJldHVybiB2ICE9PSB1bmRlZmluZWQgJiYgdiAhPT0gJycgJiYgdiAhPT0gZmFsc2U7XG4gIH07XG5cbiAgY29uc3QgbWlzc2luZyA9IHRhcmdldC5yZXF1aXJlZC5maWx0ZXIoKHNwZWMpID0+ICFwcm92aWRlZChzcGVjKSk7XG5cbiAgY29uc3QgcGFydHM6IHN0cmluZ1tdID0gW2BjZCAke3RhcmdldC5kaXJ9ICYmIGJhc2ggJHt0YXJnZXQuZW50cnlwb2ludH1gXTtcbiAgZm9yIChjb25zdCBzcGVjIG9mIFsuLi50YXJnZXQucmVxdWlyZWQsIC4uLnRhcmdldC5vcHRpb25hbF0pIHtcbiAgICBpZiAoIXByb3ZpZGVkKHNwZWMpKSBjb250aW51ZTtcbiAgICBpZiAoc3BlYy5ib29sZWFuKSB7XG4gICAgICBwYXJ0cy5wdXNoKGAtLSR7c3BlYy5mbGFnfWApO1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGNvbnN0IHZhbHVlID0gc3BlYy5zZWNyZXQgJiYgbWFzayA/ICcqKionIDogU3RyaW5nKHBhcmFtc1tzcGVjLmtleV0pO1xuICAgIHBhcnRzLnB1c2goYC0tJHtzcGVjLmZsYWd9ICR7dmFsdWV9YCk7XG4gIH1cblxuICByZXR1cm4geyBjb21tYW5kOiBwYXJ0cy5qb2luKCcgXFxcXFxcbiAgJyksIG1pc3NpbmcgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUZWFyZG93blJlc3VsdCB7XG4gIC8qKiBUaGUgZXhhY3QgdGVhcmRvd24gY29tbWFuZCB0byBydW4uICovXG4gIHJlYWRvbmx5IGNvbW1hbmQ6IHN0cmluZztcbiAgLyoqIFdoZXRoZXIgdGhpcyB0ZWFyZG93biBpcnJldmVyc2libHkgZGVzdHJveXMgZGF0YSAoQVdTIHRhcmdldHMpLiAqL1xuICByZWFkb25seSBkZXN0cnVjdGl2ZTogYm9vbGVhbjtcbn1cblxuLyoqIENsb3VkRm9ybWF0aW9uIHN0YWNrIG5hbWUgdGhlIEVDMiBzZXR1cC5zaCBkZWZhdWx0cyB0by4gKi9cbmNvbnN0IERFRkFVTFRfRUMyX1NUQUNLID0gJ3BpcGVsaW5lLWJ1aWxkZXInO1xuLyoqIFN0YWNrIHByZWZpeCB0aGUgRmFyZ2F0ZSB0ZWFyZG93bi5zaCBkZWZhdWx0cyB0by4gKi9cbmNvbnN0IERFRkFVTFRfRkFSR0FURV9QUkVGSVggPSAncGInO1xuXG4vKipcbiAqIEFzc2VtYmxlIHRoZSB0ZWFyZG93biBjb21tYW5kIGZvciBhIHRhcmdldC4gUHVyZSBhbmQgZGV0ZXJtaW5pc3RpYyDigJQgbWlycm9yc1xuICogYGFzc2VtYmxlQ29tbWFuZGAgZm9yIHRoZSBkZXN0cm95IHBhdGguIGxvY2FsL21pbmlrdWJlIFNUT1AgdGhlIHN0YWNrXG4gKiAobm9uLWRlc3RydWN0aXZlIOKAlCBvbi1kaXNrIC8gUFZDIGRhdGEgc3Vydml2ZXMpOyBlYzIvZmFyZ2F0ZSBERUxFVEUgdGhlaXJcbiAqIENsb3VkRm9ybWF0aW9uIHN0YWNrcyBhbmQgYXJlIGlycmV2ZXJzaWJsZS4gRm9yIEZhcmdhdGUsIGBhc3N1bWVZZXNgIGZvcndhcmRzXG4gKiB0aGUgbmF0aXZlIHNjcmlwdCdzIG93biBgLS15ZXNgICh0aGUgYWdlbnQgcnVucyBpdHMgb3duIHR5cGVkIGNvbmZpcm1hdGlvblxuICogZmlyc3QsIHNvIHRoZSBzY3JpcHQgbXVzdCBub3QgYWxzbyBibG9jayBvbiBzdGRpbik7IEVDMiBgZGVsZXRlLXN0YWNrYCBoYXMgbm9cbiAqIG5hdGl2ZSBwcm9tcHQsIHdoaWNoIGlzIGV4YWN0bHkgd2h5IHRoZSBhZ2VudCBnYXRlIGlzIG1hbmRhdG9yeSB0aGVyZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRlYXJkb3duQ29tbWFuZChcbiAgdGFyZ2V0OiBUYXJnZXRJZCxcbiAgb3B0czogeyBzdGFja05hbWU/OiBzdHJpbmc7IHJlZ2lvbj86IHN0cmluZzsgYXNzdW1lWWVzPzogYm9vbGVhbiB9ID0ge30sXG4pOiBUZWFyZG93blJlc3VsdCB7XG4gIGNvbnN0IHJlZ2lvbiA9IG9wdHMucmVnaW9uIHx8IHByb2Nlc3MuZW52LkFXU19SRUdJT04gfHwgJ3VzLWVhc3QtMSc7XG4gIHN3aXRjaCAodGFyZ2V0KSB7XG4gICAgY2FzZSAnbG9jYWwnOlxuICAgICAgcmV0dXJuIHsgY29tbWFuZDogJ2NkIGRlcGxveS9sb2NhbCAmJiBiYXNoIGJpbi9zaHV0ZG93bi5zaCcsIGRlc3RydWN0aXZlOiBmYWxzZSB9O1xuICAgIGNhc2UgJ21pbmlrdWJlJzpcbiAgICAgIHJldHVybiB7IGNvbW1hbmQ6ICdjZCBkZXBsb3kvbWluaWt1YmUgJiYgYmFzaCBiaW4vc2h1dGRvd24uc2gnLCBkZXN0cnVjdGl2ZTogZmFsc2UgfTtcbiAgICBjYXNlICdlYzInOiB7XG4gICAgICBjb25zdCBzdGFjayA9IG9wdHMuc3RhY2tOYW1lIHx8IERFRkFVTFRfRUMyX1NUQUNLO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY29tbWFuZDpcbiAgICAgICAgICBgYXdzIGNsb3VkZm9ybWF0aW9uIGRlbGV0ZS1zdGFjayAtLXN0YWNrLW5hbWUgJHtzdGFja30gLS1yZWdpb24gJHtyZWdpb259ICYmIGAgK1xuICAgICAgICAgIGBhd3MgY2xvdWRmb3JtYXRpb24gd2FpdCBzdGFjay1kZWxldGUtY29tcGxldGUgLS1zdGFjay1uYW1lICR7c3RhY2t9IC0tcmVnaW9uICR7cmVnaW9ufWAsXG4gICAgICAgIGRlc3RydWN0aXZlOiB0cnVlLFxuICAgICAgfTtcbiAgICB9XG4gICAgY2FzZSAnZmFyZ2F0ZSc6IHtcbiAgICAgIGNvbnN0IHByZWZpeCA9IG9wdHMuc3RhY2tOYW1lIHx8IERFRkFVTFRfRkFSR0FURV9QUkVGSVg7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBjb21tYW5kOlxuICAgICAgICAgIGBjZCBkZXBsb3kvYXdzL2ZhcmdhdGUgJiYgYmFzaCBiaW4vdGVhcmRvd24uc2ggLS1zdGFjay1wcmVmaXggJHtwcmVmaXh9IC0tcmVnaW9uICR7cmVnaW9ufWAgK1xuICAgICAgICAgIChvcHRzLmFzc3VtZVllcyA/ICcgLS15ZXMnIDogJycpLFxuICAgICAgICBkZXN0cnVjdGl2ZTogdHJ1ZSxcbiAgICAgIH07XG4gICAgfVxuICB9XG59XG4iXX0=
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAuCA;;GAEG;AACH,UAAU,UAAU;IAClB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAyOD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,OAAO,GAAE,UAAe,GAAG,IAAI,CAyD5D;AAiDD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,IAAI,CAAC,OAAO,GAAE,UAAe,GAAG,IAAI,CA0BnD"}
|
package/dist/cli.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
// Copyright 2026 Pipeline Builder Contributors
|
|
3
3
|
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
import { realpathSync } from 'node:fs';
|
|
5
|
+
import { fileURLToPath } from 'node:url';
|
|
4
6
|
import { program } from 'commander';
|
|
5
7
|
import { auditStacks } from './commands/audit-stacks.js';
|
|
6
8
|
import { auditTokens } from './commands/audit-tokens.js';
|
|
@@ -370,9 +372,14 @@ export function main(options = {}) {
|
|
|
370
372
|
}
|
|
371
373
|
}
|
|
372
374
|
/**
|
|
373
|
-
* Run CLI if executed directly
|
|
375
|
+
* Run CLI if executed directly. ESM has no `require.main`; compare the invoked
|
|
376
|
+
* script to this module's path, resolving symlinks on both sides so the `bin`
|
|
377
|
+
* symlink (node_modules/.bin/pipeline-manager → dist/cli.js) still matches.
|
|
374
378
|
*/
|
|
375
|
-
|
|
379
|
+
const invokedScript = process.argv[1];
|
|
380
|
+
const isMainModule = invokedScript !== undefined
|
|
381
|
+
&& realpathSync(invokedScript) === realpathSync(fileURLToPath(import.meta.url));
|
|
382
|
+
if (isMainModule) {
|
|
376
383
|
// Parse CLI options from environment or command line
|
|
377
384
|
const options = {
|
|
378
385
|
debug: process.env.DEBUG === 'true',
|
|
@@ -382,4 +389,4 @@ if (require.main === module) {
|
|
|
382
389
|
};
|
|
383
390
|
main(options);
|
|
384
391
|
}
|
|
385
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NsaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDekQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3BELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDOUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM1QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3BELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDekQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDNUMs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QUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQSxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztTQUM3RCxDQUFDLENBQUM7UUFFSCxXQUFXLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxPQUFPLEVBQUU7WUFDdEMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxPQUFPLENBQUM7WUFDM0IsSUFBSSxFQUFFLElBQUk7WUFDVixPQUFPLEVBQUU7Z0JBQ1AsS0FBSyxFQUFFLE1BQU07Z0JBQ2IsT0FBTzthQUNSO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztBQUNILENBQUM7QUFFRDs7R0FFRztBQUNILElBQUksT0FBTyxDQUFDLElBQUksS0FBSyxNQUFNLEVBQUUsQ0FBQztJQUM1QixxREFBcUQ7SUFDckQsTUFBTSxPQUFPLEdBQWU7UUFDMUIsS0FBSyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxLQUFLLE1BQU07UUFDbkMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQztRQUN2QyxPQUFPLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDO1FBQzNDLE9BQU8sRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsS0FBSyxHQUFHO0tBQzdFLENBQUM7SUFFRixJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDaEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIiMhL3Vzci9iaW4vZW52IG5vZGVcbi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgeyBwcm9ncmFtIH0gZnJvbSAnY29tbWFuZGVyJztcbmltcG9ydCB7IGF1ZGl0U3RhY2tzIH0gZnJvbSAnLi9jb21tYW5kcy9hdWRpdC1zdGFja3MuanMnO1xuaW1wb3J0IHsgYXVkaXRUb2tlbnMgfSBmcm9tICcuL2NvbW1hbmRzL2F1ZGl0LXRva2Vucy5qcyc7XG5pbXBvcnQgeyBib290c3RyYXAgfSBmcm9tICcuL2NvbW1hbmRzL2Jvb3RzdHJhcC5qcyc7XG5pbXBvcnQgeyBjcmVhdGVQaXBlbGluZSB9IGZyb20gJy4vY29tbWFuZHMvY3JlYXRlLXBpcGVsaW5lLmpzJztcbmltcG9ydCB7IGRlcGxveSB9IGZyb20gJy4vY29tbWFuZHMvZGVwbG95LmpzJztcbmltcG9ydCB7IGdldFBpcGVsaW5lIH0gZnJvbSAnLi9jb21tYW5kcy9nZXQtcGlwZWxpbmUuanMnO1xuaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSAnLi9jb21tYW5kcy9nZXQtcGx1Z2luLmpzJztcbmltcG9ydCB7IGxpc3RQaXBlbGluZXMgfSBmcm9tICcuL2NvbW1hbmRzL2xpc3QtcGlwZWxpbmVzLmpzJztcbmltcG9ydCB7IGxpc3RQbHVnaW5zIH0gZnJvbSAnLi9jb21tYW5kcy9saXN0LXBsdWdpbnMuanMnO1xuaW1wb3J0IHsgbG9naW4gfSBmcm9tICcuL2NvbW1hbmRzL2xvZ2luLmpzJztcbmltcG9ydCB7IG9yZ0V4cG9ydCB9IGZyb20gJy4vY29tbWFuZHMvb3JnLWV4cG9ydC5qcyc7XG5pbXBvcnQgeyBwcm92aXNpb24gfSBmcm9tICcuL2NvbW1hbmRzL3Byb3Zpc2lvbi5qcyc7XG5pbXBvcnQgeyByZWdpc3RlciB9IGZyb20gJy4vY29tbWFuZHMvcmVnaXN0ZXIuanMnO1xuaW1wb3J0IHsgc2V0dXBFdmVudHMgfSBmcm9tICcuL2NvbW1hbmRzL3NldHVwLWV2ZW50cy5qcyc7XG5pbXBvcnQgeyBzdGF0dXMgfSBmcm9tICcuL2NvbW1hbmRzL3N0YXR1cy5qcyc7XG5pbXBvcnQgeyBzdG9yZVRva2VuIH0gZnJvbSAnLi9jb21tYW5kcy9zdG9yZS10b2tlbi5qcyc7XG5pbXBvcnQgeyBzeW50aCB9IGZyb20gJy4vY29tbWFuZHMvc3ludGguanMnO1xuaW1wb3J0IHsgdXBsb2FkUGx1Z2luIH0gZnJvbSAnLi9jb21tYW5kcy91cGxvYWQtcGx1Z2luLmpzJztcbmltcG9ydCB7IHZhbGlkYXRlVGVtcGxhdGVzQ29tbWFuZCB9IGZyb20gJy4vY29tbWFuZHMvdmFsaWRhdGUtdGVtcGxhdGVzLmpzJztcbmltcG9ydCB7IHZlcnNpb24gfSBmcm9tICcuL2NvbW1hbmRzL3ZlcnNpb24uanMnO1xuaW1wb3J0IHtcbiAgQVBQX05BTUUsXG4gIEFQUF9ERVNDUklQVElPTixcbiAgQVBQX1ZFUlNJT04sXG4gIEVOVl9WQVJTLFxuICBpc0RlYnVnTW9kZSxcbiAgZ2VuZXJhdGVFeGVjdXRpb25JZCxcbn0gZnJvbSAnLi9jb25maWcvY2xpLmNvbnN0YW50cy5qcyc7XG5pbXBvcnQgeyBiYW5uZXIsIG1pbmlCYW5uZXIgfSBmcm9tICcuL3V0aWxzL2Jhbm5lci5qcyc7XG5pbXBvcnQgeyBFUlJPUl9DT0RFUywgaGFuZGxlRXJyb3IgfSBmcm9tICcuL3V0aWxzL2Vycm9yLWhhbmRsZXIuanMnO1xuaW1wb3J0IHsgcHJpbnRJbmZvLCBwcmludEVycm9yLCBwcmludFdhcm5pbmcsIHByaW50RGVidWcsIHByaW50U2VjdGlvbiB9IGZyb20gJy4vdXRpbHMvb3V0cHV0LXV0aWxzLmpzJztcblxuLyoqXG4gKiBDTEkgaW5pdGlhbGl6YXRpb24gb3B0aW9uc1xuICovXG5pbnRlcmZhY2UgQ2xpT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBTaG93IGJhbm5lciBvbiBzdGFydHVwXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHNob3dCYW5uZXI/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBNaW5pbWFsIGJhbm5lciAobm8gQVNDSUkgYXJ0KVxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgbWluaW1hbEJhbm5lcj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIERlYnVnIG1vZGVcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGRlYnVnPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVmVyYm9zZSBvdXRwdXRcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHZlcmJvc2U/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBRdWlldCBtb2RlIChtaW5pbWFsIG91dHB1dClcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHF1aWV0PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogTm8gY29sb3Igb3V0cHV0XG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBub0NvbG9yPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBDaGVjayBlbnZpcm9ubWVudCBhbmQgZGlzcGxheSB3YXJuaW5nc1xuICovXG5mdW5jdGlvbiBjaGVja0Vudmlyb25tZW50KCk6IHZvaWQge1xuICBjb25zdCB3YXJuaW5nczogc3RyaW5nW10gPSBbXTtcblxuICAvLyBDaGVjayBmb3IgcmVxdWlyZWQgZW52aXJvbm1lbnQgdmFyaWFibGVzXG4gIGlmICghcHJvY2Vzcy5lbnZbRU5WX1ZBUlMuUExBVEZPUk1fVE9LRU5dKSB7XG4gICAgd2FybmluZ3MucHVzaCgnUExBVEZPUk1fVE9LRU4gZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgbm90IHNldCcpO1xuICAgIHdhcm5pbmdzLnB1c2goJ0F1dGhlbnRpY2F0aW9uIHdpbGwgZmFpbCBmb3IgQVBJIG9wZXJhdGlvbnMnKTtcbiAgfVxuXG4gIC8vIENoZWNrIE5vZGUgdmVyc2lvblxuICBjb25zdCBub2RlVmVyc2lvbiA9IHByb2Nlc3MudmVyc2lvbjtcbiAgY29uc3QgbWFqb3JWZXJzaW9uID0gcGFyc2VJbnQobm9kZVZlcnNpb24uc2xpY2UoMSkuc3BsaXQoJy4nKVswXSB8fCAnMCcsIDEwKTtcbiAgaWYgKG1ham9yVmVyc2lvbiA8IDE4KSB7XG4gICAgd2FybmluZ3MucHVzaChgTm9kZS5qcyAke25vZGVWZXJzaW9ufSBkZXRlY3RlZCAtIHZlcnNpb24gMTgrIHJlY29tbWVuZGVkYCk7XG4gIH1cblxuICAvLyBEaXNwbGF5IHdhcm5pbmdzXG4gIGlmICh3YXJuaW5ncy5sZW5ndGggPiAwKSB7XG4gICAgcHJpbnRTZWN0aW9uKCdFbnZpcm9ubWVudCBXYXJuaW5ncycpO1xuICAgIHdhcm5pbmdzLmZvckVhY2god2FybmluZyA9PiB7XG4gICAgICBwcmludFdhcm5pbmcod2FybmluZyk7XG4gICAgfSk7XG4gICAgY29uc29sZS5sb2coJycpO1xuICB9XG59XG5cbi8qKlxuICogRGlzcGxheSBzdGFydHVwIGluZm9ybWF0aW9uXG4gKi9cbmZ1bmN0aW9uIGRpc3BsYXlTdGFydHVwSW5mbyhvcHRpb25zOiBDbGlPcHRpb25zKTogdm9pZCB7XG4gIGlmIChvcHRpb25zLnF1aWV0KSByZXR1cm47XG5cbiAgY29uc3QgZXhlY3V0aW9uSWQgPSBnZW5lcmF0ZUV4ZWN1dGlvbklkKCk7XG5cbiAgaWYgKG9wdGlvbnMuZGVidWcgfHwgb3B0aW9ucy52ZXJib3NlKSB7XG4gICAgcHJpbnREZWJ1ZygnQ0xJIENvbmZpZ3VyYXRpb24nLCB7XG4gICAgICBuYW1lOiBBUFBfTkFNRSxcbiAgICAgIHZlcnNpb246IEFQUF9WRVJTSU9OLFxuICAgICAgZXhlY3V0aW9uSWQsXG4gICAgICBub2RlOiBwcm9jZXNzLnZlcnNpb24sXG4gICAgICBwbGF0Zm9ybTogcHJvY2Vzcy5wbGF0Zm9ybSxcbiAgICAgIGFyY2g6IHByb2Nlc3MuYXJjaCxcbiAgICAgIGN3ZDogcHJvY2Vzcy5jd2QoKSxcbiAgICAgIGVudjoge1xuICAgICAgICBkZWJ1ZzogcHJvY2Vzcy5lbnYuREVCVUcsXG4gICAgICAgIHRva2VuOiBwcm9jZXNzLmVudltFTlZfVkFSUy5QTEFURk9STV9UT0tFTl0gPyAnc2V0JzogJ25vdCBzZXQnLFxuICAgICAgICB1cmw6IHByb2Nlc3MuZW52W0VOVl9WQVJTLlBMQVRGT1JNX0JBU0VfVVJMXSB8fCAnZGVmYXVsdCcsXG4gICAgICB9LFxuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIHByaW50RGVidWcoJ1N0YXJ0aW5nIENMSScsIHtcbiAgICAgIHZlcnNpb246IEFQUF9WRVJTSU9OLFxuICAgICAgZXhlY3V0aW9uSWQsXG4gICAgfSk7XG4gIH1cbn1cblxuLyoqXG4gKiBSZWdpc3RlciBhbGwgQ0xJIGNvbW1hbmRzXG4gKi9cbmZ1bmN0aW9uIHJlZ2lzdGVyQ29tbWFuZHMoKTogdm9pZCB7XG4gIHByaW50RGVidWcoJ1JlZ2lzdGVyaW5nIGNvbW1hbmRzJyk7XG5cbiAgLy8gQ29uZmlndXJlIHByb2dyYW1cbiAgcHJvZ3JhbVxuICAgIC5uYW1lKEFQUF9OQU1FKVxuICAgIC5kZXNjcmlwdGlvbihBUFBfREVTQ1JJUFRJT04pXG4gICAgLnZlcnNpb24oQVBQX1ZFUlNJT04sICctdiwgLS12ZXJzaW9uJywgJ1Nob3cgQ0xJIHZlcnNpb24nKVxuICAgIC5vcHRpb24oJy0tZGVidWcnLCAnRW5hYmxlIGRlYnVnIG91dHB1dCB3aXRoIHN0YWNrIHRyYWNlcycsIGZhbHNlKVxuICAgIC5vcHRpb24oJy0tdmVyYm9zZScsICdTaG93IGRldGFpbGVkIGluZm9ybWF0aW9uJywgZmFsc2UpXG4gICAgLm9wdGlvbignLS1xdWlldCcsICdNaW5pbWFsIG91dHB1dCAoZXJyb3JzIG9ubHkpJywgZmFsc2UpXG4gICAgLm9wdGlvbignLS1uby1jb2xvcicsICdEaXNhYmxlIGNvbG9yZWQgb3V0cHV0JywgZmFsc2UpXG4gICAgLmFkZEhlbHBUZXh0KCdhZnRlcicsIGBcbkVudmlyb25tZW50IFZhcmlhYmxlcyAgJHtFTlZfVkFSUy5QTEFURk9STV9UT0tFTn0gQXV0aGVudGljYXRpb24gdG9rZW4gKHJlcXVpcmVkKVxuICAke0VOVl9WQVJTLlBMQVRGT1JNX0JBU0VfVVJMfSBBUEkgYmFzZSBVUkwgKG9wdGlvbmFsKVxuICAke0VOVl9WQVJTLkNMSV9DT05GSUdfUEFUSH0gQ29uZmlnIGZpbGUgcGF0aCAob3B0aW9uYWwpXG4gICR7RU5WX1ZBUlMuVExTX1JFSkVDVF9VTkFVVEhPUklaRUR9IERpc2FibGUgU1NMIHZlcmlmaWNhdGlvbiBpZiAnMCdcbiAgJHtFTlZfVkFSUy5ERUJVR30gRW5hYmxlIGRlYnVnIG1vZGUgaWYgJ3RydWUnXG5cbkV4YW1wbGVzICAkICR7QVBQX05BTUV9IHZlcnNpb25cbiAgJCAke0FQUF9OQU1FfSBsaXN0LXBpcGVsaW5lcyAtLXByb2plY3QgbXktYXBwXG4gICQgJHtBUFBfTkFNRX0gZ2V0LXBpcGVsaW5lIC0taWQgcGlwZS0xMjMgLS1mb3JtYXQganNvblxuICAkICR7QVBQX05BTUV9IHN0b3JlLXRva2VuIC0tZGF5cyAzMCAtLXJlZ2lvbiB1cy1lYXN0LTFcbiAgJCAke0FQUF9OQU1FfSBib290c3RyYXAgLS1hY2NvdW50IDEyMzQ1Njc4OTAxMiAtLXJlZ2lvbiB1cy1lYXN0LTFcbiAgJCAke0FQUF9OQU1FfSBkZXBsb3kgLS1pZCBwaXBlLTEyMyAtLXByb2ZpbGUgcHJvZHVjdGlvblxuXG5gKTtcblxuICAvLyBWZXJzaW9uIGNvbW1hbmQgKHNwZWNpYWwgaGFuZGxpbmcpXG4gIHZlcnNpb24ocHJvZ3JhbSk7XG5cbiAgLy8gQXV0aGVudGljYXRpb24gY29tbWFuZHNcbiAgcHJpbnREZWJ1ZygnUmVnaXN0ZXJpbmcgYXV0aGVudGljYXRpb24gY29tbWFuZHMnKTtcbiAgbG9naW4ocHJvZ3JhbSk7IC8vIExvZ2luIGFuZCBvYnRhaW4gUExBVEZPUk1fVE9LRU4gKGFsc28gc3VwcG9ydHMgLS1yZWZyZXNoKVxuXG4gIC8vIFF1ZXJ5IGNvbW1hbmRzXG4gIHByaW50RGVidWcoJ1JlZ2lzdGVyaW5nIHF1ZXJ5IGNvbW1hbmRzJyk7XG4gIGdldFBsdWdpbihwcm9ncmFtKTsgLy8gU2luZ2xlIHBsdWdpbiBieSBJRFxuICBsaXN0UGx1Z2lucyhwcm9ncmFtKTsgLy8gTXVsdGlwbGUgcGx1Z2lucyB3aXRoIGZpbHRlcnNcbiAgZ2V0UGlwZWxpbmUocHJvZ3JhbSk7IC8vIFNpbmdsZSBwaXBlbGluZSBieSBJRFxuICBsaXN0UGlwZWxpbmVzKHByb2dyYW0pOyAvLyBNdWx0aXBsZSBwaXBlbGluZXMgd2l0aCBmaWx0ZXJzXG5cbiAgLy8gQ3JlYXRlL1VwbG9hZCBjb21tYW5kc1xuICBwcmludERlYnVnKCdSZWdpc3RlcmluZyBjcmVhdGUvdXBsb2FkIGNvbW1hbmRzJyk7XG4gIGNyZWF0ZVBpcGVsaW5lKHByb2dyYW0pOyAvLyBDcmVhdGUgcGlwZWxpbmUgY29uZmlndXJhdGlvblxuICB1cGxvYWRQbHVnaW4ocHJvZ3JhbSk7IC8vIFVwbG9hZCBhbmQgZGVwbG95IHBsdWdpblxuXG4gIC8vIFN0YXR1cyBjb21tYW5kXG4gIHByaW50RGVidWcoJ1JlZ2lzdGVyaW5nIHN0YXR1cyBjb21tYW5kJyk7XG4gIHN0YXR1cyhwcm9ncmFtKTsgLy8gU2hvdyBlbnZpcm9ubWVudCBhbmQgY29ubmVjdGl2aXR5IHN0YXR1c1xuXG4gIC8vIE9yZyBhZG1pbiBjb21tYW5kc1xuICBwcmludERlYnVnKCdSZWdpc3RlcmluZyBvcmcgYWRtaW4gY29tbWFuZHMnKTtcbiAgb3JnRXhwb3J0KHByb2dyYW0pOyAvLyBHRFBSIHBvcnRhYmlsaXR5IGV4cG9ydCDDosKAwpQgc3lzYWRtaW4gKGFueSBvcmcpIG9yIG9yZyBhZG1pbiAob3duIG9yZylcblxuICAvLyBEZXBsb3ltZW50IGNvbW1hbmRzXG4gIHByaW50RGVidWcoJ1JlZ2lzdGVyaW5nIGRlcGxveW1lbnQgY29tbWFuZHMnKTtcbiAgc3RvcmVUb2tlbihwcm9ncmFtKTsgLy8gR2VuZXJhdGUgSldUIHRva2VuIGFuZCBzdG9yZSBpbiBTZWNyZXRzIE1hbmFnZXJcbiAgc2V0dXBFdmVudHMocHJvZ3JhbSk7IC8vIERlcGxveSBFdmVudEJyaWRnZSBldmVudCBpbmdlc3Rpb24gaW5mcmFzdHJ1Y3R1cmVcbiAgYm9vdHN0cmFwKHByb2dyYW0pOyAvLyBCb290c3RyYXAgQ0RLIHRvb2xraXQgc3RhY2tcbiAgZGVwbG95KHByb2dyYW0pOyAvLyBEZXBsb3kgcGlwZWxpbmUgd2l0aCBDREsgKC0tYXBwIHByaW50cyBib2lsZXJwbGF0ZSBwYXRoKVxuICByZWdpc3Rlcihwcm9ncmFtKTsgLy8gUmUtcmVnaXN0ZXIgYSBkZXBsb3llZCBwaXBlbGluZSBBUk4gKyBkcmFpbiBwZW5kaW5nIGludGVudHMgZnJvbSBwcmlvciBmYWlsZWQgZGVwbG95c1xuICBwcm92aXNpb24ocHJvZ3JhbSk7IC8vIEFJLWFzc2lzdGVkIGFkdmlzb3IgdG8gZGVwbG95IHRoZSBQTEFURk9STSAobG9jYWwvbWluaWt1YmUvRUMyL0ZhcmdhdGUpIOKAlCByZWFkLW9ubHlcblxuICAvLyBPcGVyYXRvciBhdWRpdCBjb21tYW5kcyAoY3Jvbi1mcmllbmRseTogZXhpdCAxIG9uIGZpbmRpbmdzKVxuICBwcmludERlYnVnKCdSZWdpc3RlcmluZyBhdWRpdCBjb21tYW5kcycpO1xuICBhdWRpdFRva2Vucyhwcm9ncmFtKTsgLy8gU2NhbiBTZWNyZXRzIE1hbmFnZXIgZm9yIGV4cGlyaW5nIHBsYXRmb3JtIHRva2Vuc1xuICBhdWRpdFN0YWNrcyhwcm9ncmFtKTsgLy8gRGlmZiBDRk4gc3RhY2tzIHZzIHBpcGVsaW5lX3JlZ2lzdHJ5IHRvIGZpbmQgZHJpZnRcbiAgc3ludGgocHJvZ3JhbSk7IC8vIFJ1biBDREsgc3ludGhlc2lzXG4gIHZhbGlkYXRlVGVtcGxhdGVzQ29tbWFuZChwcm9ncmFtKTsgLy8gVmFsaWRhdGUge3suLi4gfX0gdGVtcGxhdGVzIGluIGEgcGlwZWxpbmUgb3IgcGx1Z2luXG5cbiAgLy8gU2hlbGwgY29tcGxldGlvbnNcbiAgcHJpbnREZWJ1ZygnUmVnaXN0ZXJpbmcgY29tcGxldGlvbnMgY29tbWFuZCcpO1xuICBwcm9ncmFtXG4gICAgLmNvbW1hbmQoJ2NvbXBsZXRpb25zJylcbiAgICAuZGVzY3JpcHRpb24oJ0dlbmVyYXRlIHNoZWxsIGNvbXBsZXRpb25zIChiYXNoLCB6c2gsIGZpc2gpJylcbiAgICAuYXJndW1lbnQoJzxzaGVsbD4nLCAnU2hlbGwgdHlwZTogYmFzaCwgenNoLCBvciBmaXNoJylcbiAgICAuYWN0aW9uKChzaGVsbDogc3RyaW5nKSA9PiB7XG4gICAgICAvLyBQdWxsIGNvbW1hbmQgbmFtZXMgZnJvbSBjb21tYW5kZXIncyByZWdpc3RlcmVkIGxpc3Qgc28gY29tcGxldGlvbnMgbmV2ZXJcbiAgICAgIC8vIGRyaWZ0IGZyb20gdGhlIGFjdHVhbCBDTEkgc3VyZmFjZS4gU29ydGVkIGZvciBzdGFibGUgb3V0cHV0LlxuICAgICAgY29uc3QgY29tbWFuZHMgPSBwcm9ncmFtLmNvbW1hbmRzLm1hcChjID0+IGMubmFtZSgpKS5zb3J0KCkuam9pbignICcpO1xuICAgICAgc3dpdGNoIChzaGVsbCkge1xuICAgICAgICBjYXNlICdiYXNoJzpcbiAgICAgICAgICBjb25zb2xlLmxvZyhgIyBwaXBlbGluZS1tYW5hZ2VyIGJhc2ggY29tcGxldGlvbnNcbl9waXBlbGluZV9tYW5hZ2VyX2NvbXBsZXRpb25zKCkge1xuICBsb2NhbCBjdXI9XCJcXCR7Q09NUF9XT1JEU1tDT01QX0NXT1JEXX1cIlxuICBsb2NhbCBjb21tYW5kcz1cIiR7Y29tbWFuZHN9XCJcbiAgQ09NUFJFUExZPSgkKGNvbXBnZW4gLVcgXCJcXCR7Y29tbWFuZHN9XCIgLS0gXCJcXCR7Y3VyfVwiKSlcbn1cbmNvbXBsZXRlIC1GIF9waXBlbGluZV9tYW5hZ2VyX2NvbXBsZXRpb25zIHBpcGVsaW5lLW1hbmFnZXJgKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnenNoJzpcbiAgICAgICAgICBjb25zb2xlLmxvZyhgIyBwaXBlbGluZS1tYW5hZ2VyIHpzaCBjb21wbGV0aW9uc1xuX3BpcGVsaW5lX21hbmFnZXIoKSB7XG4gIGxvY2FsIGNvbW1hbmRzPSgke2NvbW1hbmRzfSlcbiAgX2Rlc2NyaWJlICdjb21tYW5kJyBjb21tYW5kc1xufVxuY29tcGRlZiBfcGlwZWxpbmVfbWFuYWdlciBwaXBlbGluZS1tYW5hZ2VyYCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2Zpc2gnOlxuICAgICAgICAgIGNvbnNvbGUubG9nKGAjIHBpcGVsaW5lLW1hbmFnZXIgZmlzaCBjb21wbGV0aW9uc1xuY29tcGxldGUgLWMgcGlwZWxpbmUtbWFuYWdlciAtbiAnX19maXNoX3VzZV9zdWJjb21tYW5kJyAtYSAnJHtjb21tYW5kc30nYCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgY29uc29sZS5lcnJvcihgVW5rbm93biBzaGVsbDogJHtzaGVsbH0uIFVzZSBiYXNoLCB6c2gsIG9yIGZpc2guYCk7XG4gICAgICAgICAgcHJvY2Vzcy5leGl0KDEpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gIHByaW50RGVidWcoJ0FsbCBjb21tYW5kcyByZWdpc3RlcmVkIHN1Y2Nlc3NmdWxseScpO1xufVxuXG4vKipcbiAqIEhhbmRsZSBwcm9ncmFtIGVycm9yc1xuICovXG5mdW5jdGlvbiBzZXR1cEVycm9ySGFuZGxlcnMoKTogdm9pZCB7XG4gIC8vIEhhbmRsZSB1bmNhdWdodCBleGNlcHRpb25zXG4gIHByb2Nlc3Mub24oJ3VuY2F1Z2h0RXhjZXB0aW9uJywgKGVycm9yOiBFcnJvcikgPT4ge1xuICAgIGNvbnNvbGUuZXJyb3IoJycpOyAvLyBFbXB0eSBsaW5lXG4gICAgcHJpbnRFcnJvcignVW5jYXVnaHQgZXhjZXB0aW9uJywge1xuICAgICAgZXJyb3I6IGVycm9yLm1lc3NhZ2UsXG4gICAgICBuYW1lOiBlcnJvci5uYW1lLFxuICAgIH0pO1xuXG4gICAgaGFuZGxlRXJyb3IoZXJyb3IsIEVSUk9SX0NPREVTLkdFTkVSQUwsIHtcbiAgICAgIGRlYnVnOiBpc0RlYnVnTW9kZShwcm9ncmFtLm9wdHMoKSksXG4gICAgICBleGl0OiB0cnVlLFxuICAgICAgY29udGV4dDoge1xuICAgICAgICB0eXBlOiAndW5jYXVnaHRFeGNlcHRpb24nLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfSk7XG5cbiAgLy8gSGFuZGxlIHVuaGFuZGxlZCBwcm9taXNlIHJlamVjdGlvbnNcbiAgcHJvY2Vzcy5vbigndW5oYW5kbGVkUmVqZWN0aW9uJywgKHJlYXNvbjogdW5rbm93bikgPT4ge1xuICAgIGNvbnNvbGUuZXJyb3IoJycpOyAvLyBFbXB0eSBsaW5lXG4gICAgcHJpbnRFcnJvcignVW5oYW5kbGVkIHByb21pc2UgcmVqZWN0aW9uJywge1xuICAgICAgcmVhc29uOiByZWFzb24gaW5zdGFuY2VvZiBFcnJvciA/IHJlYXNvbi5tZXNzYWdlOiBTdHJpbmcocmVhc29uKSxcbiAgICB9KTtcblxuICAgIGNvbnN0IGVycm9yID0gcmVhc29uIGluc3RhbmNlb2YgRXJyb3IgPyByZWFzb246IG5ldyBFcnJvcihTdHJpbmcocmVhc29uKSk7XG5cbiAgICBoYW5kbGVFcnJvcihlcnJvciwgRVJST1JfQ09ERVMuR0VORVJBTCwge1xuICAgICAgZGVidWc6IGlzRGVidWdNb2RlKHByb2dyYW0ub3B0cygpKSxcbiAgICAgIGV4aXQ6IHRydWUsXG4gICAgICBjb250ZXh0OiB7XG4gICAgICAgIHR5cGU6ICd1bmhhbmRsZWRSZWplY3Rpb24nLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfSk7XG5cbiAgLy8gSGFuZGxlIFNJR0lOVCAoQ3RybCtDKVxuICBwcm9jZXNzLm9uKCdTSUdJTlQnLCAoKSA9PiB7XG4gICAgY29uc29sZS5sb2coJycpOyAvLyBFbXB0eSBsaW5lXG4gICAgcHJpbnRXYXJuaW5nKCdQcm9jZXNzIGludGVycnVwdGVkIGJ5IHVzZXIgKFNJR0lOVCknKTtcbiAgICBjb25zb2xlLmxvZygnJyk7IC8vIEVtcHR5IGxpbmVcbiAgICBwcm9jZXNzLmV4aXQoMTMwKTsgLy8gU3RhbmRhcmQgZXhpdCBjb2RlIGZvciBTSUdJTlRcbiAgfSk7XG5cbiAgLy8gSGFuZGxlIFNJR1RFUk1cbiAgcHJvY2Vzcy5vbignU0lHVEVSTScsICgpID0+IHtcbiAgICBjb25zb2xlLmxvZygnJyk7IC8vIEVtcHR5IGxpbmVcbiAgICBwcmludFdhcm5pbmcoJ1Byb2Nlc3MgdGVybWluYXRlZCAoU0lHVEVSTSknKTtcbiAgICBjb25zb2xlLmxvZygnJyk7IC8vIEVtcHR5IGxpbmVcbiAgICBwcm9jZXNzLmV4aXQoMTQzKTsgLy8gU3RhbmRhcmQgZXhpdCBjb2RlIGZvciBTSUdURVJNXG4gIH0pO1xufVxuXG4vKipcbiAqIEluaXRpYWxpemUgQ0xJIHdpdGggb3B0aW9uc1xuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gQ0xJIGluaXRpYWxpemF0aW9uIG9wdGlvbnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGluaXRpYWxpemVDbGkob3B0aW9uczogQ2xpT3B0aW9ucyA9IHt9KTogdm9pZCB7XG4gIGNvbnN0IHtcbiAgICBzaG93QmFubmVyID0gdHJ1ZSxcbiAgICBtaW5pbWFsQmFubmVyID0gZmFsc2UsXG4gICAgZGVidWcgPSBmYWxzZSxcbiAgICB2ZXJib3NlID0gZmFsc2UsXG4gICAgcXVpZXQgPSBmYWxzZSxcbiAgICBub0NvbG9yID0gZmFsc2UsXG4gIH0gPSBvcHRpb25zO1xuXG4gIC8vIEhhbmRsZSBjb2xvciBvdXRwdXRcbiAgaWYgKG5vQ29sb3IpIHtcbiAgICBwcm9jZXNzLmVudi5OT19DT0xPUiA9ICcxJztcbiAgfVxuXG4gIC8vIERpc3BsYXkgYmFubmVyXG4gIGlmIChzaG93QmFubmVyICYmICFxdWlldCkge1xuICAgIGlmIChtaW5pbWFsQmFubmVyKSB7XG4gICAgICBtaW5pQmFubmVyKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGJhbm5lcih7XG4gICAgICAgIG1pbmltYWw6IGZhbHNlLFxuICAgICAgICBzaG93RGVzY3JpcHRpb246IHRydWUsXG4gICAgICAgIHNob3dUaW1lc3RhbXA6IGRlYnVnIHx8IHZlcmJvc2UsXG4gICAgICAgIHNob3dFeGVjdXRpb25JZDogZGVidWcsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvLyBEaXNwbGF5IHN0YXJ0dXAgaW5mb1xuICBkaXNwbGF5U3RhcnR1cEluZm8oeyBkZWJ1ZywgdmVyYm9zZSwgcXVpZXQgfSk7XG5cbiAgLy8gQ2hlY2sgZW52aXJvbm1lbnRcbiAgaWYgKCFxdWlldCkge1xuICAgIGNoZWNrRW52aXJvbm1lbnQoKTtcbiAgfVxuXG4gIC8vIFNldHVwIGVycm9yIGhhbmRsZXJzXG4gIHNldHVwRXJyb3JIYW5kbGVycygpO1xuXG4gIC8vIFJlZ2lzdGVyIGNvbW1hbmRzXG4gIHRyeSB7XG4gICAgcmVnaXN0ZXJDb21tYW5kcygpO1xuICAgIHByaW50RGVidWcoJ0NMSSBpbml0aWFsaXphdGlvbiBjb21wbGV0ZScpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHByaW50RXJyb3IoJ0NMSSBpbml0aWFsaXphdGlvbiBmYWlsZWQnLCB7XG4gICAgICBlcnJvcjogZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2U6IFN0cmluZyhlcnJvciksXG4gICAgfSk7XG5cbiAgICBoYW5kbGVFcnJvcihlcnJvciwgRVJST1JfQ09ERVMuQ09ORklHVVJBVElPTiwge1xuICAgICAgZGVidWc6IGRlYnVnIHx8IGlzRGVidWdNb2RlKCksXG4gICAgICBleGl0OiB0cnVlLFxuICAgICAgY29udGV4dDoge1xuICAgICAgICBzdGFnZTogJ2luaXRpYWxpemF0aW9uJyxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbn1cblxuLyoqXG4gKiBQYXJzZSBjb21tYW5kIGxpbmUgYXJndW1lbnRzXG4gKi9cbmZ1bmN0aW9uIHBhcnNlQXJndW1lbnRzKCk6IHZvaWQge1xuICB0cnkge1xuICAgIHByb2dyYW0ucGFyc2UocHJvY2Vzcy5hcmd2KTtcblxuICAgIC8vIFNob3cgaGVscCBpZiBubyBjb21tYW5kIHByb3ZpZGVkXG4gICAgY29uc3QgYXJncyA9IHByb2Nlc3MuYXJndi5zbGljZSgyKTtcbiAgICBpZiAoYXJncy5sZW5ndGggPT09IDApIHtcbiAgICAgIHByaW50SW5mbygnTm8gY29tbWFuZCBzcGVjaWZpZWQgLSBkaXNwbGF5aW5nIGhlbHAnKTtcbiAgICAgIGNvbnNvbGUubG9nKCcnKTsgLy8gRW1wdHkgbGluZVxuICAgICAgcHJvZ3JhbS5vdXRwdXRIZWxwKCk7XG4gICAgICBwcm9jZXNzLmV4aXQoMCk7XG4gICAgfVxuXG4gICAgLy8gQ2hlY2sgaWYgY29tbWFuZCBleGlzdHNcbiAgICBjb25zdCBjb21tYW5kID0gYXJnc1swXTtcbiAgICBpZiAoY29tbWFuZCAmJiAhY29tbWFuZC5zdGFydHNXaXRoKCctJykpIHtcbiAgICAgIGNvbnN0IGNvbW1hbmRFeGlzdHMgPSBwcm9ncmFtLmNvbW1hbmRzLnNvbWUoY21kID0+IGNtZC5uYW1lKCkgPT09IGNvbW1hbmQpO1xuXG4gICAgICBpZiAoIWNvbW1hbmRFeGlzdHMpIHtcbiAgICAgICAgY29uc29sZS5sb2coJycpOyAvLyBFbXB0eSBsaW5lXG4gICAgICAgIHByaW50RXJyb3IoYFVua25vd24gY29tbWFuZDogJHtjb21tYW5kfWApO1xuICAgICAgICBjb25zb2xlLmxvZygnJyk7IC8vIEVtcHR5IGxpbmVcbiAgICAgICAgcHJpbnRJbmZvKCdBdmFpbGFibGUgY29tbWFuZHM6Jyk7XG4gICAgICAgIHByb2dyYW0uY29tbWFuZHMuZm9yRWFjaChjbWQgPT4ge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGAg4oCiICR7Y21kLm5hbWUoKX0gLSAke2NtZC5kZXNjcmlwdGlvbigpfWApO1xuICAgICAgICB9KTtcbiAgICAgICAgY29uc29sZS5sb2coJycpOyAvLyBFbXB0eSBsaW5lXG4gICAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBwcmludERlYnVnKCdDb21tYW5kIGxpbmUgYXJndW1lbnRzIHBhcnNlZCBzdWNjZXNzZnVsbHknKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBoYW5kbGVFcnJvcihlcnJvciwgRVJST1JfQ09ERVMuR0VORVJBTCwge1xuICAgICAgZGVidWc6IGlzRGVidWdNb2RlKHByb2dyYW0ub3B0cygpKSxcbiAgICAgIGV4aXQ6IHRydWUsXG4gICAgICBjb250ZXh0OiB7XG4gICAgICAgIHN0YWdlOiAnYXJndW1lbnQtcGFyc2luZycsXG4gICAgICAgIGFyZ3Y6IHByb2Nlc3MuYXJndixcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbn1cblxuLyoqXG4gKiBNYWluIENMSSBlbnRyeSBwb2ludFxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gQ0xJIGluaXRpYWxpemF0aW9uIG9wdGlvbnNcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogLy8gU3RhbmRhcmQgaW5pdGlhbGl6YXRpb25cbiAqIG1haW4oKTtcbiAqXG4gKiAvLyBNaW5pbWFsIG1vZGVcbiAqIG1haW4oeyBtaW5pbWFsQmFubmVyOiB0cnVlLCBxdWlldDogdHJ1ZSB9KTtcbiAqXG4gKiAvLyBEZWJ1ZyBtb2RlXG4gKiBtYWluKHsgZGVidWc6IHRydWUsIHZlcmJvc2U6IHRydWUgfSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1haW4ob3B0aW9uczogQ2xpT3B0aW9ucyA9IHt9KTogdm9pZCB7XG4gIHRyeSB7XG4gICAgLy8gSW5pdGlhbGl6ZSBDTElcbiAgICBpbml0aWFsaXplQ2xpKG9wdGlvbnMpO1xuXG4gICAgLy8gUGFyc2UgYXJndW1lbnRzIGFuZCBleGVjdXRlIGNvbW1hbmRcbiAgICBwYXJzZUFyZ3VtZW50cygpO1xuXG4gICAgLy8gSWYgd2UgcmVhY2ggaGVyZSwgY29tbWFuZCBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5XG4gICAgcHJpbnREZWJ1ZygnQ0xJIGV4ZWN1dGlvbiBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5Jyk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgLy8gRmluYWwgY2F0Y2gtYWxsIGVycm9yIGhhbmRsZXJcbiAgICBjb25zb2xlLmVycm9yKCcnKTsgLy8gRW1wdHkgbGluZVxuICAgIHByaW50RXJyb3IoJ0ZhdGFsIENMSSBlcnJvcicsIHtcbiAgICAgIGVycm9yOiBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZTogU3RyaW5nKGVycm9yKSxcbiAgICB9KTtcblxuICAgIGhhbmRsZUVycm9yKGVycm9yLCBFUlJPUl9DT0RFUy5HRU5FUkFMLCB7XG4gICAgICBkZWJ1ZzogaXNEZWJ1Z01vZGUob3B0aW9ucyksXG4gICAgICBleGl0OiB0cnVlLFxuICAgICAgY29udGV4dDoge1xuICAgICAgICBzdGFnZTogJ21haW4nLFxuICAgICAgICBvcHRpb25zLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxufVxuXG4vKipcbiAqIFJ1biBDTEkgaWYgZXhlY3V0ZWQgZGlyZWN0bHlcbiAqL1xuaWYgKHJlcXVpcmUubWFpbiA9PT0gbW9kdWxlKSB7XG4gIC8vIFBhcnNlIENMSSBvcHRpb25zIGZyb20gZW52aXJvbm1lbnQgb3IgY29tbWFuZCBsaW5lXG4gIGNvbnN0IG9wdGlvbnM6IENsaU9wdGlvbnMgPSB7XG4gICAgZGVidWc6IHByb2Nlc3MuZW52LkRFQlVHID09PSAndHJ1ZScsXG4gICAgcXVpZXQ6IHByb2Nlc3MuYXJndi5pbmNsdWRlcygnLS1xdWlldCcpLFxuICAgIHZlcmJvc2U6IHByb2Nlc3MuYXJndi5pbmNsdWRlcygnLS12ZXJib3NlJyksXG4gICAgbm9Db2xvcjogcHJvY2Vzcy5hcmd2LmluY2x1ZGVzKCctLW5vLWNvbG9yJykgfHwgcHJvY2Vzcy5lbnYuTk9fQ09MT1IgPT09ICcxJyxcbiAgfTtcblxuICBtYWluKG9wdGlvbnMpO1xufSJdfQ==
|
|
392
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NsaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDekMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNwQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDekQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDL0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzdELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDNUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDdkQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDaEQsT0FBTyxFQUNMLFFBQVEsRUFDUixlQUFlLEVBQ2YsV0FBVyxFQUNYLFFBQVEsRUFDUixXQUFXLEVBQ1gsbUJBQW1CLEdBQ3BCLE1BQU0sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUEyQ3hHOztHQUVHO0FBQ0gsU0FBUyxnQkFBZ0I7SUFDdkIsTUFBTSxRQUFRLEdBQWEsRUFBRSxDQUFDO0lBRTlCLDJDQUEyQztJQUMzQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQztRQUMxQyxRQUFRLENBQUMsSUFBSSxDQUFDLGdEQUFnRCxDQUFDLENBQUM7UUFDaEUsUUFBUSxDQUFDLElBQUksQ0FBQyw2Q0FBNkMsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFRCxxQkFBcUI7SUFDckIsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQztJQUNwQyxNQUFNLFlBQVksR0FBRyxRQUFRLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzdFLElBQUksWUFBWSxHQUFHLEVBQUUsRUFBRSxDQUFDO1FBQ3RCLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxXQUFXLHFDQUFxQyxDQUFDLENBQUM7SUFDN0UsQ0FBQztJQUVELG1CQUFtQjtJQUNuQixJQUFJLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDeEIsWUFBWSxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFDckMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUN6QixZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDeEIsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2xCLENBQUM7QUFDSCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFTLGtCQUFrQixDQUFDLE9BQW1CO0lBQzdDLElBQUksT0FBTyxDQUFDLEtBQUs7UUFBRSxPQUFPO0lBRTFCLE1BQU0sV0FBVyxHQUFHLG1CQUFtQixFQUFFLENBQUM7SUFFMUMsSUFBSSxPQUFPLENBQUMsS0FBSyxJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNyQyxVQUFVLENBQUMsbUJBQW1CLEVBQUU7WUFDOUIsSUFBSSxFQUFFLFFBQVE7WUFDZCxPQUFPLEVBQUUsV0FBVztZQUNwQixXQUFXO1lBQ1gsSUFBSSxFQUFFLE9BQU8sQ0FBQyxPQUFPO1lBQ3JCLFFBQVEsRUFBRSxPQUFPLENBQUMsUUFBUTtZQUMxQixJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUk7WUFDbEIsR0FBRyxFQUFFLE9BQU8sQ0FBQyxHQUFHLEVBQUU7WUFDbEIsR0FBRyxFQUFFO2dCQUNILEtBQUssRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUs7Z0JBQ3hCLEtBQUssRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFBLENBQUMsQ0FBQyxTQUFTO2dCQUM5RCxHQUFHLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsSUFBSSxTQUFTO2FBQzFEO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztTQUFNLENBQUM7UUFDTixVQUFVLENBQUMsY0FBYyxFQUFFO1lBQ3pCLE9BQU8sRUFBRSxXQUFXO1lBQ3BCLFdBQVc7U0FDWixDQUFDLENBQUM7SUFDTCxDQUFDO0FBQ0gsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBUyxnQkFBZ0I7SUFDdkIsVUFBVSxDQUFDLHNCQUFzQixDQUFDLENBQUM7SUFFbkMsb0JBQW9CO0lBQ3BCLE9BQU87U0FDSixJQUFJLENBQUMsUUFBUSxDQUFDO1NBQ2QsV0FBVyxDQUFDLGVBQWUsQ0FBQztTQUM1QixPQUFPLENBQUMsV0FBVyxFQUFFLGVBQWUsRUFBRSxrQkFBa0IsQ0FBQztTQUN6RCxNQUFNLENBQUMsU0FBUyxFQUFFLHVDQUF1QyxFQUFFLEtBQUssQ0FBQztTQUNqRSxNQUFNLENBQUMsV0FBVyxFQUFFLDJCQUEyQixFQUFFLEtBQUssQ0FBQztTQUN2RCxNQUFNLENBQUMsU0FBUyxFQUFFLDhCQUE4QixFQUFFLEtBQUssQ0FBQztTQUN4RCxNQUFNLENBQUMsWUFBWSxFQUFFLHdCQUF3QixFQUFFLEtBQUssQ0FBQztTQUNyRCxXQUFXLENBQUMsT0FBTyxFQUFFO3lCQUNELFFBQVEsQ0FBQyxjQUFjO0lBQzVDLFFBQVEsQ0FBQyxpQkFBaUI7SUFDMUIsUUFBUSxDQUFDLGVBQWU7SUFDeEIsUUFBUSxDQUFDLHVCQUF1QjtJQUNoQyxRQUFRLENBQUMsS0FBSzs7Y0FFSixRQUFRO01BQ2hCLFFBQVE7TUFDUixRQUFRO01BQ1IsUUFBUTtNQUNSLFFBQVE7TUFDUixRQUFROztDQUViLENBQUMsQ0FBQztJQUVELHFDQUFxQztJQUNyQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7SUFFakIsMEJBQTBCO0lBQzFCLFVBQVUsQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDO0lBQ2xELEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLDREQUE0RDtJQUU1RSxpQkFBaUI7SUFDakIsVUFBVSxDQUFDLDRCQUE0QixDQUFDLENBQUM7SUFDekMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsc0JBQXNCO0lBQzFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLGdDQUFnQztJQUN0RCxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyx3QkFBd0I7SUFDOUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsa0NBQWtDO0lBRTFELHlCQUF5QjtJQUN6QixVQUFVLENBQUMsb0NBQW9DLENBQUMsQ0FBQztJQUNqRCxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxnQ0FBZ0M7SUFDekQsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsMkJBQTJCO0lBRWxELGlCQUFpQjtJQUNqQixVQUFVLENBQUMsNEJBQTRCLENBQUMsQ0FBQztJQUN6QyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQywyQ0FBMkM7SUFFNUQscUJBQXFCO0lBQ3JCLFVBQVUsQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO0lBQzdDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLHdFQUF3RTtJQUU1RixzQkFBc0I7SUFDdEIsVUFBVSxDQUFDLGlDQUFpQyxDQUFDLENBQUM7SUFDOUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsa0RBQWtEO0lBQ3ZFLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLG9EQUFvRDtJQUMxRSxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyw4QkFBOEI7SUFDbEQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsMkRBQTJEO0lBQzVFLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLHdGQUF3RjtJQUMzRyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxzRkFBc0Y7SUFFMUcsOERBQThEO0lBQzlELFVBQVUsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO0lBQ3pDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLG9EQUFvRDtJQUMxRSxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxxREFBcUQ7SUFDM0UsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsb0JBQW9CO0lBQ3BDLHdCQUF3QixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsc0RBQXNEO0lBRXpGLG9CQUFvQjtJQUNwQixVQUFVLENBQUMsaUNBQWlDLENBQUMsQ0FBQztJQUM5QyxPQUFPO1NBQ0osT0FBTyxDQUFDLGFBQWEsQ0FBQztTQUN0QixXQUFXLENBQUMsOENBQThDLENBQUM7U0FDM0QsUUFBUSxDQUFDLFNBQVMsRUFBRSxnQ0FBZ0MsQ0FBQztTQUNyRCxNQUFNLENBQUMsQ0FBQyxLQUFhLEVBQUUsRUFBRTtRQUN4QiwyRUFBMkU7UUFDM0UsK0RBQStEO1FBQy9ELE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3RFLFFBQVEsS0FBSyxFQUFFLENBQUM7WUFDZCxLQUFLLE1BQU07Z0JBQ1QsT0FBTyxDQUFDLEdBQUcsQ0FBQzs7O29CQUdGLFFBQVE7OzsyREFHK0IsQ0FBQyxDQUFDO2dCQUNuRCxNQUFNO1lBQ1IsS0FBSyxLQUFLO2dCQUNSLE9BQU8sQ0FBQyxHQUFHLENBQUM7O29CQUVGLFFBQVE7OzsyQ0FHZSxDQUFDLENBQUM7Z0JBQ25DLE1BQU07WUFDUixLQUFLLE1BQU07Z0JBQ1QsT0FBTyxDQUFDLEdBQUcsQ0FBQzs4REFDd0MsUUFBUSxHQUFHLENBQUMsQ0FBQztnQkFDakUsTUFBTTtZQUNSO2dCQUNFLE9BQU8sQ0FBQyxLQUFLLENBQUMsa0JBQWtCLEtBQUssMkJBQTJCLENBQUMsQ0FBQztnQkFDbEUsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwQixDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7SUFFTCxVQUFVLENBQUMsc0NBQXNDLENBQUMsQ0FBQztBQUNyRCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFTLGtCQUFrQjtJQUN6Qiw2QkFBNkI7SUFDN0IsT0FBTyxDQUFDLEVBQUUsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLEtBQVksRUFBRSxFQUFFO1FBQy9DLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxhQUFhO1FBQ2hDLFVBQVUsQ0FBQyxvQkFBb0IsRUFBRTtZQUMvQixLQUFLLEVBQUUsS0FBSyxDQUFDLE9BQU87WUFDcEIsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJO1NBQ2pCLENBQUMsQ0FBQztRQUVILFdBQVcsQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLE9BQU8sRUFBRTtZQUN0QyxLQUFLLEVBQUUsV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNsQyxJQUFJLEVBQUUsSUFBSTtZQUNWLE9BQU8sRUFBRTtnQkFDUCxJQUFJLEVBQUUsbUJBQW1CO2FBQzFCO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxzQ0FBc0M7SUFDdEMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLE1BQWUsRUFBRSxFQUFFO1FBQ25ELE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxhQUFhO1FBQ2hDLFVBQVUsQ0FBQyw2QkFBNkIsRUFBRTtZQUN4QyxNQUFNLEVBQUUsTUFBTSxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQSxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztTQUNqRSxDQUFDLENBQUM7UUFFSCxNQUFNLEtBQUssR0FBRyxNQUFNLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUEsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBRTFFLFdBQVcsQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLE9BQU8sRUFBRTtZQUN0QyxLQUFLLEVBQUUsV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNsQyxJQUFJLEVBQUUsSUFBSTtZQUNWLE9BQU8sRUFBRTtnQkFDUCxJQUFJLEVBQUUsb0JBQW9CO2FBQzNCO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCx5QkFBeUI7SUFDekIsT0FBTyxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFO1FBQ3hCLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxhQUFhO1FBQzlCLFlBQVksQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO1FBQ3JELE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxhQUFhO1FBQzlCLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxnQ0FBZ0M7SUFDckQsQ0FBQyxDQUFDLENBQUM7SUFFSCxpQkFBaUI7SUFDakIsT0FBTyxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsR0FBRyxFQUFFO1FBQ3pCLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxhQUFhO1FBQzlCLFlBQVksQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO1FBQzdDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxhQUFhO1FBQzlCLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxpQ0FBaUM7SUFDdEQsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxhQUFhLENBQUMsVUFBc0IsRUFBRTtJQUNwRCxNQUFNLEVBQ0osVUFBVSxHQUFHLElBQUksRUFDakIsYUFBYSxHQUFHLEtBQUssRUFDckIsS0FBSyxHQUFHLEtBQUssRUFDYixPQUFPLEdBQUcsS0FBSyxFQUNmLEtBQUssR0FBRyxLQUFLLEVBQ2IsT0FBTyxHQUFHLEtBQUssR0FDaEIsR0FBRyxPQUFPLENBQUM7SUFFWixzQkFBc0I7SUFDdEIsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUNaLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxHQUFHLEdBQUcsQ0FBQztJQUM3QixDQUFDO0lBRUQsaUJBQWlCO0lBQ2pCLElBQUksVUFBVSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDekIsSUFBSSxhQUFhLEVBQUUsQ0FBQztZQUNsQixVQUFVLEVBQUUsQ0FBQztRQUNmLENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxDQUFDO2dCQUNMLE9BQU8sRUFBRSxLQUFLO2dCQUNkLGVBQWUsRUFBRSxJQUFJO2dCQUNyQixhQUFhLEVBQUUsS0FBSyxJQUFJLE9BQU87Z0JBQy9CLGVBQWUsRUFBRSxLQUFLO2FBQ3ZCLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDO0lBRUQsdUJBQXVCO0lBQ3ZCLGtCQUFrQixDQUFDLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBRTlDLG9CQUFvQjtJQUNwQixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDWCxnQkFBZ0IsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRCx1QkFBdUI7SUFDdkIsa0JBQWtCLEVBQUUsQ0FBQztJQUVyQixvQkFBb0I7SUFDcEIsSUFBSSxDQUFDO1FBQ0gsZ0JBQWdCLEVBQUUsQ0FBQztRQUNuQixVQUFVLENBQUMsNkJBQTZCLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLFVBQVUsQ0FBQywyQkFBMkIsRUFBRTtZQUN0QyxLQUFLLEVBQUUsS0FBSyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQSxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztTQUM3RCxDQUFDLENBQUM7UUFFSCxXQUFXLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxhQUFhLEVBQUU7WUFDNUMsS0FBSyxFQUFFLEtBQUssSUFBSSxXQUFXLEVBQUU7WUFDN0IsSUFBSSxFQUFFLElBQUk7WUFDVixPQUFPLEVBQUU7Z0JBQ1AsS0FBSyxFQUFFLGdCQUFnQjthQUN4QjtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7QUFDSCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFTLGNBQWM7SUFDckIsSUFBSSxDQUFDO1FBQ0gsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFNUIsbUNBQW1DO1FBQ25DLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ25DLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN0QixTQUFTLENBQUMsd0NBQXdDLENBQUMsQ0FBQztZQUNwRCxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsYUFBYTtZQUM5QixPQUFPLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDckIsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNsQixDQUFDO1FBRUQsMEJBQTBCO1FBQzFCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN4QixJQUFJLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN4QyxNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsS0FBSyxPQUFPLENBQUMsQ0FBQztZQUUzRSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQ25CLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxhQUFhO2dCQUM5QixVQUFVLENBQUMsb0JBQW9CLE9BQU8sRUFBRSxDQUFDLENBQUM7Z0JBQzFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxhQUFhO2dCQUM5QixTQUFTLENBQUMscUJBQXFCLENBQUMsQ0FBQztnQkFDakMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7b0JBQzdCLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxFQUFFLE1BQU0sR0FBRyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDekQsQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLGFBQWE7Z0JBQzlCLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbEIsQ0FBQztRQUNILENBQUM7UUFFRCxVQUFVLENBQUMsNENBQTRDLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLFdBQVcsQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLE9BQU8sRUFBRTtZQUN0QyxLQUFLLEVBQUUsV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNsQyxJQUFJLEVBQUUsSUFBSTtZQUNWLE9BQU8sRUFBRTtnQkFDUCxLQUFLLEVBQUUsa0JBQWtCO2dCQUN6QixJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUk7YUFDbkI7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0FBQ0gsQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7Ozs7O0dBZ0JHO0FBQ0gsTUFBTSxVQUFVLElBQUksQ0FBQyxVQUFzQixFQUFFO0lBQzNDLElBQUksQ0FBQztRQUNILGlCQUFpQjtRQUNqQixhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFdkIsc0NBQXNDO1FBQ3RDLGNBQWMsRUFBRSxDQUFDO1FBRWpCLG1EQUFtRDtRQUNuRCxVQUFVLENBQUMsc0NBQXNDLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLGdDQUFnQztRQUNoQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsYUFBYTtRQUNoQyxVQUFVLENBQUMsaUJBQWlCLEVBQUU7WUFDNUIsS0FBSyxFQUFFLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7U0FDN0QsQ0FBQyxDQUFDO1FBRUgsV0FBVyxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsT0FBTyxFQUFFO1lBQ3RDLEtBQUssRUFBRSxXQUFXLENBQUMsT0FBTyxDQUFDO1lBQzNCLElBQUksRUFBRSxJQUFJO1lBQ1YsT0FBTyxFQUFFO2dCQUNQLEtBQUssRUFBRSxNQUFNO2dCQUNiLE9BQU87YUFDUjtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7QUFDSCxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdEMsTUFBTSxZQUFZLEdBQUcsYUFBYSxLQUFLLFNBQVM7T0FDM0MsWUFBWSxDQUFDLGFBQWEsQ0FBQyxLQUFLLFlBQVksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ2xGLElBQUksWUFBWSxFQUFFLENBQUM7SUFDakIscURBQXFEO0lBQ3JELE1BQU0sT0FBTyxHQUFlO1FBQzFCLEtBQUssRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssS0FBSyxNQUFNO1FBQ25DLEtBQUssRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUM7UUFDdkMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQztRQUMzQyxPQUFPLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEtBQUssR0FBRztLQUM3RSxDQUFDO0lBRUYsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ2hCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIjIS91c3IvYmluL2VudiBub2RlXG4vLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHsgcmVhbHBhdGhTeW5jIH0gZnJvbSAnbm9kZTpmcyc7XG5pbXBvcnQgeyBmaWxlVVJMVG9QYXRoIH0gZnJvbSAnbm9kZTp1cmwnO1xuaW1wb3J0IHsgcHJvZ3JhbSB9IGZyb20gJ2NvbW1hbmRlcic7XG5pbXBvcnQgeyBhdWRpdFN0YWNrcyB9IGZyb20gJy4vY29tbWFuZHMvYXVkaXQtc3RhY2tzLmpzJztcbmltcG9ydCB7IGF1ZGl0VG9rZW5zIH0gZnJvbSAnLi9jb21tYW5kcy9hdWRpdC10b2tlbnMuanMnO1xuaW1wb3J0IHsgYm9vdHN0cmFwIH0gZnJvbSAnLi9jb21tYW5kcy9ib290c3RyYXAuanMnO1xuaW1wb3J0IHsgY3JlYXRlUGlwZWxpbmUgfSBmcm9tICcuL2NvbW1hbmRzL2NyZWF0ZS1waXBlbGluZS5qcyc7XG5pbXBvcnQgeyBkZXBsb3kgfSBmcm9tICcuL2NvbW1hbmRzL2RlcGxveS5qcyc7XG5pbXBvcnQgeyBnZXRQaXBlbGluZSB9IGZyb20gJy4vY29tbWFuZHMvZ2V0LXBpcGVsaW5lLmpzJztcbmltcG9ydCB7IGdldFBsdWdpbiB9IGZyb20gJy4vY29tbWFuZHMvZ2V0LXBsdWdpbi5qcyc7XG5pbXBvcnQgeyBsaXN0UGlwZWxpbmVzIH0gZnJvbSAnLi9jb21tYW5kcy9saXN0LXBpcGVsaW5lcy5qcyc7XG5pbXBvcnQgeyBsaXN0UGx1Z2lucyB9IGZyb20gJy4vY29tbWFuZHMvbGlzdC1wbHVnaW5zLmpzJztcbmltcG9ydCB7IGxvZ2luIH0gZnJvbSAnLi9jb21tYW5kcy9sb2dpbi5qcyc7XG5pbXBvcnQgeyBvcmdFeHBvcnQgfSBmcm9tICcuL2NvbW1hbmRzL29yZy1leHBvcnQuanMnO1xuaW1wb3J0IHsgcHJvdmlzaW9uIH0gZnJvbSAnLi9jb21tYW5kcy9wcm92aXNpb24uanMnO1xuaW1wb3J0IHsgcmVnaXN0ZXIgfSBmcm9tICcuL2NvbW1hbmRzL3JlZ2lzdGVyLmpzJztcbmltcG9ydCB7IHNldHVwRXZlbnRzIH0gZnJvbSAnLi9jb21tYW5kcy9zZXR1cC1ldmVudHMuanMnO1xuaW1wb3J0IHsgc3RhdHVzIH0gZnJvbSAnLi9jb21tYW5kcy9zdGF0dXMuanMnO1xuaW1wb3J0IHsgc3RvcmVUb2tlbiB9IGZyb20gJy4vY29tbWFuZHMvc3RvcmUtdG9rZW4uanMnO1xuaW1wb3J0IHsgc3ludGggfSBmcm9tICcuL2NvbW1hbmRzL3N5bnRoLmpzJztcbmltcG9ydCB7IHVwbG9hZFBsdWdpbiB9IGZyb20gJy4vY29tbWFuZHMvdXBsb2FkLXBsdWdpbi5qcyc7XG5pbXBvcnQgeyB2YWxpZGF0ZVRlbXBsYXRlc0NvbW1hbmQgfSBmcm9tICcuL2NvbW1hbmRzL3ZhbGlkYXRlLXRlbXBsYXRlcy5qcyc7XG5pbXBvcnQgeyB2ZXJzaW9uIH0gZnJvbSAnLi9jb21tYW5kcy92ZXJzaW9uLmpzJztcbmltcG9ydCB7XG4gIEFQUF9OQU1FLFxuICBBUFBfREVTQ1JJUFRJT04sXG4gIEFQUF9WRVJTSU9OLFxuICBFTlZfVkFSUyxcbiAgaXNEZWJ1Z01vZGUsXG4gIGdlbmVyYXRlRXhlY3V0aW9uSWQsXG59IGZyb20gJy4vY29uZmlnL2NsaS5jb25zdGFudHMuanMnO1xuaW1wb3J0IHsgYmFubmVyLCBtaW5pQmFubmVyIH0gZnJvbSAnLi91dGlscy9iYW5uZXIuanMnO1xuaW1wb3J0IHsgRVJST1JfQ09ERVMsIGhhbmRsZUVycm9yIH0gZnJvbSAnLi91dGlscy9lcnJvci1oYW5kbGVyLmpzJztcbmltcG9ydCB7IHByaW50SW5mbywgcHJpbnRFcnJvciwgcHJpbnRXYXJuaW5nLCBwcmludERlYnVnLCBwcmludFNlY3Rpb24gfSBmcm9tICcuL3V0aWxzL291dHB1dC11dGlscy5qcyc7XG5cbi8qKlxuICogQ0xJIGluaXRpYWxpemF0aW9uIG9wdGlvbnNcbiAqL1xuaW50ZXJmYWNlIENsaU9wdGlvbnMge1xuICAvKipcbiAgICogU2hvdyBiYW5uZXIgb24gc3RhcnR1cFxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBzaG93QmFubmVyPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogTWluaW1hbCBiYW5uZXIgKG5vIEFTQ0lJIGFydClcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIG1pbmltYWxCYW5uZXI/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBEZWJ1ZyBtb2RlXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBkZWJ1Zz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFZlcmJvc2Ugb3V0cHV0XG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICB2ZXJib3NlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogUXVpZXQgbW9kZSAobWluaW1hbCBvdXRwdXQpXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBxdWlldD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIE5vIGNvbG9yIG91dHB1dFxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgbm9Db2xvcj86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQ2hlY2sgZW52aXJvbm1lbnQgYW5kIGRpc3BsYXkgd2FybmluZ3NcbiAqL1xuZnVuY3Rpb24gY2hlY2tFbnZpcm9ubWVudCgpOiB2b2lkIHtcbiAgY29uc3Qgd2FybmluZ3M6IHN0cmluZ1tdID0gW107XG5cbiAgLy8gQ2hlY2sgZm9yIHJlcXVpcmVkIGVudmlyb25tZW50IHZhcmlhYmxlc1xuICBpZiAoIXByb2Nlc3MuZW52W0VOVl9WQVJTLlBMQVRGT1JNX1RPS0VOXSkge1xuICAgIHdhcm5pbmdzLnB1c2goJ1BMQVRGT1JNX1RPS0VOIGVudmlyb25tZW50IHZhcmlhYmxlIGlzIG5vdCBzZXQnKTtcbiAgICB3YXJuaW5ncy5wdXNoKCdBdXRoZW50aWNhdGlvbiB3aWxsIGZhaWwgZm9yIEFQSSBvcGVyYXRpb25zJyk7XG4gIH1cblxuICAvLyBDaGVjayBOb2RlIHZlcnNpb25cbiAgY29uc3Qgbm9kZVZlcnNpb24gPSBwcm9jZXNzLnZlcnNpb247XG4gIGNvbnN0IG1ham9yVmVyc2lvbiA9IHBhcnNlSW50KG5vZGVWZXJzaW9uLnNsaWNlKDEpLnNwbGl0KCcuJylbMF0gfHwgJzAnLCAxMCk7XG4gIGlmIChtYWpvclZlcnNpb24gPCAxOCkge1xuICAgIHdhcm5pbmdzLnB1c2goYE5vZGUuanMgJHtub2RlVmVyc2lvbn0gZGV0ZWN0ZWQgLSB2ZXJzaW9uIDE4KyByZWNvbW1lbmRlZGApO1xuICB9XG5cbiAgLy8gRGlzcGxheSB3YXJuaW5nc1xuICBpZiAod2FybmluZ3MubGVuZ3RoID4gMCkge1xuICAgIHByaW50U2VjdGlvbignRW52aXJvbm1lbnQgV2FybmluZ3MnKTtcbiAgICB3YXJuaW5ncy5mb3JFYWNoKHdhcm5pbmcgPT4ge1xuICAgICAgcHJpbnRXYXJuaW5nKHdhcm5pbmcpO1xuICAgIH0pO1xuICAgIGNvbnNvbGUubG9nKCcnKTtcbiAgfVxufVxuXG4vKipcbiAqIERpc3BsYXkgc3RhcnR1cCBpbmZvcm1hdGlvblxuICovXG5mdW5jdGlvbiBkaXNwbGF5U3RhcnR1cEluZm8ob3B0aW9uczogQ2xpT3B0aW9ucyk6IHZvaWQge1xuICBpZiAob3B0aW9ucy5xdWlldCkgcmV0dXJuO1xuXG4gIGNvbnN0IGV4ZWN1dGlvbklkID0gZ2VuZXJhdGVFeGVjdXRpb25JZCgpO1xuXG4gIGlmIChvcHRpb25zLmRlYnVnIHx8IG9wdGlvbnMudmVyYm9zZSkge1xuICAgIHByaW50RGVidWcoJ0NMSSBDb25maWd1cmF0aW9uJywge1xuICAgICAgbmFtZTogQVBQX05BTUUsXG4gICAgICB2ZXJzaW9uOiBBUFBfVkVSU0lPTixcbiAgICAgIGV4ZWN1dGlvbklkLFxuICAgICAgbm9kZTogcHJvY2Vzcy52ZXJzaW9uLFxuICAgICAgcGxhdGZvcm06IHByb2Nlc3MucGxhdGZvcm0sXG4gICAgICBhcmNoOiBwcm9jZXNzLmFyY2gsXG4gICAgICBjd2Q6IHByb2Nlc3MuY3dkKCksXG4gICAgICBlbnY6IHtcbiAgICAgICAgZGVidWc6IHByb2Nlc3MuZW52LkRFQlVHLFxuICAgICAgICB0b2tlbjogcHJvY2Vzcy5lbnZbRU5WX1ZBUlMuUExBVEZPUk1fVE9LRU5dID8gJ3NldCc6ICdub3Qgc2V0JyxcbiAgICAgICAgdXJsOiBwcm9jZXNzLmVudltFTlZfVkFSUy5QTEFURk9STV9CQVNFX1VSTF0gfHwgJ2RlZmF1bHQnLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBwcmludERlYnVnKCdTdGFydGluZyBDTEknLCB7XG4gICAgICB2ZXJzaW9uOiBBUFBfVkVSU0lPTixcbiAgICAgIGV4ZWN1dGlvbklkLFxuICAgIH0pO1xuICB9XG59XG5cbi8qKlxuICogUmVnaXN0ZXIgYWxsIENMSSBjb21tYW5kc1xuICovXG5mdW5jdGlvbiByZWdpc3RlckNvbW1hbmRzKCk6IHZvaWQge1xuICBwcmludERlYnVnKCdSZWdpc3RlcmluZyBjb21tYW5kcycpO1xuXG4gIC8vIENvbmZpZ3VyZSBwcm9ncmFtXG4gIHByb2dyYW1cbiAgICAubmFtZShBUFBfTkFNRSlcbiAgICAuZGVzY3JpcHRpb24oQVBQX0RFU0NSSVBUSU9OKVxuICAgIC52ZXJzaW9uKEFQUF9WRVJTSU9OLCAnLXYsIC0tdmVyc2lvbicsICdTaG93IENMSSB2ZXJzaW9uJylcbiAgICAub3B0aW9uKCctLWRlYnVnJywgJ0VuYWJsZSBkZWJ1ZyBvdXRwdXQgd2l0aCBzdGFjayB0cmFjZXMnLCBmYWxzZSlcbiAgICAub3B0aW9uKCctLXZlcmJvc2UnLCAnU2hvdyBkZXRhaWxlZCBpbmZvcm1hdGlvbicsIGZhbHNlKVxuICAgIC5vcHRpb24oJy0tcXVpZXQnLCAnTWluaW1hbCBvdXRwdXQgKGVycm9ycyBvbmx5KScsIGZhbHNlKVxuICAgIC5vcHRpb24oJy0tbm8tY29sb3InLCAnRGlzYWJsZSBjb2xvcmVkIG91dHB1dCcsIGZhbHNlKVxuICAgIC5hZGRIZWxwVGV4dCgnYWZ0ZXInLCBgXG5FbnZpcm9ubWVudCBWYXJpYWJsZXMgICR7RU5WX1ZBUlMuUExBVEZPUk1fVE9LRU59IEF1dGhlbnRpY2F0aW9uIHRva2VuIChyZXF1aXJlZClcbiAgJHtFTlZfVkFSUy5QTEFURk9STV9CQVNFX1VSTH0gQVBJIGJhc2UgVVJMIChvcHRpb25hbClcbiAgJHtFTlZfVkFSUy5DTElfQ09ORklHX1BBVEh9IENvbmZpZyBmaWxlIHBhdGggKG9wdGlvbmFsKVxuICAke0VOVl9WQVJTLlRMU19SRUpFQ1RfVU5BVVRIT1JJWkVEfSBEaXNhYmxlIFNTTCB2ZXJpZmljYXRpb24gaWYgJzAnXG4gICR7RU5WX1ZBUlMuREVCVUd9IEVuYWJsZSBkZWJ1ZyBtb2RlIGlmICd0cnVlJ1xuXG5FeGFtcGxlcyAgJCAke0FQUF9OQU1FfSB2ZXJzaW9uXG4gICQgJHtBUFBfTkFNRX0gbGlzdC1waXBlbGluZXMgLS1wcm9qZWN0IG15LWFwcFxuICAkICR7QVBQX05BTUV9IGdldC1waXBlbGluZSAtLWlkIHBpcGUtMTIzIC0tZm9ybWF0IGpzb25cbiAgJCAke0FQUF9OQU1FfSBzdG9yZS10b2tlbiAtLWRheXMgMzAgLS1yZWdpb24gdXMtZWFzdC0xXG4gICQgJHtBUFBfTkFNRX0gYm9vdHN0cmFwIC0tYWNjb3VudCAxMjM0NTY3ODkwMTIgLS1yZWdpb24gdXMtZWFzdC0xXG4gICQgJHtBUFBfTkFNRX0gZGVwbG95IC0taWQgcGlwZS0xMjMgLS1wcm9maWxlIHByb2R1Y3Rpb25cblxuYCk7XG5cbiAgLy8gVmVyc2lvbiBjb21tYW5kIChzcGVjaWFsIGhhbmRsaW5nKVxuICB2ZXJzaW9uKHByb2dyYW0pO1xuXG4gIC8vIEF1dGhlbnRpY2F0aW9uIGNvbW1hbmRzXG4gIHByaW50RGVidWcoJ1JlZ2lzdGVyaW5nIGF1dGhlbnRpY2F0aW9uIGNvbW1hbmRzJyk7XG4gIGxvZ2luKHByb2dyYW0pOyAvLyBMb2dpbiBhbmQgb2J0YWluIFBMQVRGT1JNX1RPS0VOIChhbHNvIHN1cHBvcnRzIC0tcmVmcmVzaClcblxuICAvLyBRdWVyeSBjb21tYW5kc1xuICBwcmludERlYnVnKCdSZWdpc3RlcmluZyBxdWVyeSBjb21tYW5kcycpO1xuICBnZXRQbHVnaW4ocHJvZ3JhbSk7IC8vIFNpbmdsZSBwbHVnaW4gYnkgSURcbiAgbGlzdFBsdWdpbnMocHJvZ3JhbSk7IC8vIE11bHRpcGxlIHBsdWdpbnMgd2l0aCBmaWx0ZXJzXG4gIGdldFBpcGVsaW5lKHByb2dyYW0pOyAvLyBTaW5nbGUgcGlwZWxpbmUgYnkgSURcbiAgbGlzdFBpcGVsaW5lcyhwcm9ncmFtKTsgLy8gTXVsdGlwbGUgcGlwZWxpbmVzIHdpdGggZmlsdGVyc1xuXG4gIC8vIENyZWF0ZS9VcGxvYWQgY29tbWFuZHNcbiAgcHJpbnREZWJ1ZygnUmVnaXN0ZXJpbmcgY3JlYXRlL3VwbG9hZCBjb21tYW5kcycpO1xuICBjcmVhdGVQaXBlbGluZShwcm9ncmFtKTsgLy8gQ3JlYXRlIHBpcGVsaW5lIGNvbmZpZ3VyYXRpb25cbiAgdXBsb2FkUGx1Z2luKHByb2dyYW0pOyAvLyBVcGxvYWQgYW5kIGRlcGxveSBwbHVnaW5cblxuICAvLyBTdGF0dXMgY29tbWFuZFxuICBwcmludERlYnVnKCdSZWdpc3RlcmluZyBzdGF0dXMgY29tbWFuZCcpO1xuICBzdGF0dXMocHJvZ3JhbSk7IC8vIFNob3cgZW52aXJvbm1lbnQgYW5kIGNvbm5lY3Rpdml0eSBzdGF0dXNcblxuICAvLyBPcmcgYWRtaW4gY29tbWFuZHNcbiAgcHJpbnREZWJ1ZygnUmVnaXN0ZXJpbmcgb3JnIGFkbWluIGNvbW1hbmRzJyk7XG4gIG9yZ0V4cG9ydChwcm9ncmFtKTsgLy8gR0RQUiBwb3J0YWJpbGl0eSBleHBvcnQgw6LCgMKUIHN5c2FkbWluIChhbnkgb3JnKSBvciBvcmcgYWRtaW4gKG93biBvcmcpXG5cbiAgLy8gRGVwbG95bWVudCBjb21tYW5kc1xuICBwcmludERlYnVnKCdSZWdpc3RlcmluZyBkZXBsb3ltZW50IGNvbW1hbmRzJyk7XG4gIHN0b3JlVG9rZW4ocHJvZ3JhbSk7IC8vIEdlbmVyYXRlIEpXVCB0b2tlbiBhbmQgc3RvcmUgaW4gU2VjcmV0cyBNYW5hZ2VyXG4gIHNldHVwRXZlbnRzKHByb2dyYW0pOyAvLyBEZXBsb3kgRXZlbnRCcmlkZ2UgZXZlbnQgaW5nZXN0aW9uIGluZnJhc3RydWN0dXJlXG4gIGJvb3RzdHJhcChwcm9ncmFtKTsgLy8gQm9vdHN0cmFwIENESyB0b29sa2l0IHN0YWNrXG4gIGRlcGxveShwcm9ncmFtKTsgLy8gRGVwbG95IHBpcGVsaW5lIHdpdGggQ0RLICgtLWFwcCBwcmludHMgYm9pbGVycGxhdGUgcGF0aClcbiAgcmVnaXN0ZXIocHJvZ3JhbSk7IC8vIFJlLXJlZ2lzdGVyIGEgZGVwbG95ZWQgcGlwZWxpbmUgQVJOICsgZHJhaW4gcGVuZGluZyBpbnRlbnRzIGZyb20gcHJpb3IgZmFpbGVkIGRlcGxveXNcbiAgcHJvdmlzaW9uKHByb2dyYW0pOyAvLyBBSS1hc3Npc3RlZCBhZHZpc29yIHRvIGRlcGxveSB0aGUgUExBVEZPUk0gKGxvY2FsL21pbmlrdWJlL0VDMi9GYXJnYXRlKSDigJQgcmVhZC1vbmx5XG5cbiAgLy8gT3BlcmF0b3IgYXVkaXQgY29tbWFuZHMgKGNyb24tZnJpZW5kbHk6IGV4aXQgMSBvbiBmaW5kaW5ncylcbiAgcHJpbnREZWJ1ZygnUmVnaXN0ZXJpbmcgYXVkaXQgY29tbWFuZHMnKTtcbiAgYXVkaXRUb2tlbnMocHJvZ3JhbSk7IC8vIFNjYW4gU2VjcmV0cyBNYW5hZ2VyIGZvciBleHBpcmluZyBwbGF0Zm9ybSB0b2tlbnNcbiAgYXVkaXRTdGFja3MocHJvZ3JhbSk7IC8vIERpZmYgQ0ZOIHN0YWNrcyB2cyBwaXBlbGluZV9yZWdpc3RyeSB0byBmaW5kIGRyaWZ0XG4gIHN5bnRoKHByb2dyYW0pOyAvLyBSdW4gQ0RLIHN5bnRoZXNpc1xuICB2YWxpZGF0ZVRlbXBsYXRlc0NvbW1hbmQocHJvZ3JhbSk7IC8vIFZhbGlkYXRlIHt7Li4uIH19IHRlbXBsYXRlcyBpbiBhIHBpcGVsaW5lIG9yIHBsdWdpblxuXG4gIC8vIFNoZWxsIGNvbXBsZXRpb25zXG4gIHByaW50RGVidWcoJ1JlZ2lzdGVyaW5nIGNvbXBsZXRpb25zIGNvbW1hbmQnKTtcbiAgcHJvZ3JhbVxuICAgIC5jb21tYW5kKCdjb21wbGV0aW9ucycpXG4gICAgLmRlc2NyaXB0aW9uKCdHZW5lcmF0ZSBzaGVsbCBjb21wbGV0aW9ucyAoYmFzaCwgenNoLCBmaXNoKScpXG4gICAgLmFyZ3VtZW50KCc8c2hlbGw+JywgJ1NoZWxsIHR5cGU6IGJhc2gsIHpzaCwgb3IgZmlzaCcpXG4gICAgLmFjdGlvbigoc2hlbGw6IHN0cmluZykgPT4ge1xuICAgICAgLy8gUHVsbCBjb21tYW5kIG5hbWVzIGZyb20gY29tbWFuZGVyJ3MgcmVnaXN0ZXJlZCBsaXN0IHNvIGNvbXBsZXRpb25zIG5ldmVyXG4gICAgICAvLyBkcmlmdCBmcm9tIHRoZSBhY3R1YWwgQ0xJIHN1cmZhY2UuIFNvcnRlZCBmb3Igc3RhYmxlIG91dHB1dC5cbiAgICAgIGNvbnN0IGNvbW1hbmRzID0gcHJvZ3JhbS5jb21tYW5kcy5tYXAoYyA9PiBjLm5hbWUoKSkuc29ydCgpLmpvaW4oJyAnKTtcbiAgICAgIHN3aXRjaCAoc2hlbGwpIHtcbiAgICAgICAgY2FzZSAnYmFzaCc6XG4gICAgICAgICAgY29uc29sZS5sb2coYCMgcGlwZWxpbmUtbWFuYWdlciBiYXNoIGNvbXBsZXRpb25zXG5fcGlwZWxpbmVfbWFuYWdlcl9jb21wbGV0aW9ucygpIHtcbiAgbG9jYWwgY3VyPVwiXFwke0NPTVBfV09SRFNbQ09NUF9DV09SRF19XCJcbiAgbG9jYWwgY29tbWFuZHM9XCIke2NvbW1hbmRzfVwiXG4gIENPTVBSRVBMWT0oJChjb21wZ2VuIC1XIFwiXFwke2NvbW1hbmRzfVwiIC0tIFwiXFwke2N1cn1cIikpXG59XG5jb21wbGV0ZSAtRiBfcGlwZWxpbmVfbWFuYWdlcl9jb21wbGV0aW9ucyBwaXBlbGluZS1tYW5hZ2VyYCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3pzaCc6XG4gICAgICAgICAgY29uc29sZS5sb2coYCMgcGlwZWxpbmUtbWFuYWdlciB6c2ggY29tcGxldGlvbnNcbl9waXBlbGluZV9tYW5hZ2VyKCkge1xuICBsb2NhbCBjb21tYW5kcz0oJHtjb21tYW5kc30pXG4gIF9kZXNjcmliZSAnY29tbWFuZCcgY29tbWFuZHNcbn1cbmNvbXBkZWYgX3BpcGVsaW5lX21hbmFnZXIgcGlwZWxpbmUtbWFuYWdlcmApO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdmaXNoJzpcbiAgICAgICAgICBjb25zb2xlLmxvZyhgIyBwaXBlbGluZS1tYW5hZ2VyIGZpc2ggY29tcGxldGlvbnNcbmNvbXBsZXRlIC1jIHBpcGVsaW5lLW1hbmFnZXIgLW4gJ19fZmlzaF91c2Vfc3ViY29tbWFuZCcgLWEgJyR7Y29tbWFuZHN9J2ApO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYFVua25vd24gc2hlbGw6ICR7c2hlbGx9LiBVc2UgYmFzaCwgenNoLCBvciBmaXNoLmApO1xuICAgICAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICBwcmludERlYnVnKCdBbGwgY29tbWFuZHMgcmVnaXN0ZXJlZCBzdWNjZXNzZnVsbHknKTtcbn1cblxuLyoqXG4gKiBIYW5kbGUgcHJvZ3JhbSBlcnJvcnNcbiAqL1xuZnVuY3Rpb24gc2V0dXBFcnJvckhhbmRsZXJzKCk6IHZvaWQge1xuICAvLyBIYW5kbGUgdW5jYXVnaHQgZXhjZXB0aW9uc1xuICBwcm9jZXNzLm9uKCd1bmNhdWdodEV4Y2VwdGlvbicsIChlcnJvcjogRXJyb3IpID0+IHtcbiAgICBjb25zb2xlLmVycm9yKCcnKTsgLy8gRW1wdHkgbGluZVxuICAgIHByaW50RXJyb3IoJ1VuY2F1Z2h0IGV4Y2VwdGlvbicsIHtcbiAgICAgIGVycm9yOiBlcnJvci5tZXNzYWdlLFxuICAgICAgbmFtZTogZXJyb3IubmFtZSxcbiAgICB9KTtcblxuICAgIGhhbmRsZUVycm9yKGVycm9yLCBFUlJPUl9DT0RFUy5HRU5FUkFMLCB7XG4gICAgICBkZWJ1ZzogaXNEZWJ1Z01vZGUocHJvZ3JhbS5vcHRzKCkpLFxuICAgICAgZXhpdDogdHJ1ZSxcbiAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgdHlwZTogJ3VuY2F1Z2h0RXhjZXB0aW9uJyxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH0pO1xuXG4gIC8vIEhhbmRsZSB1bmhhbmRsZWQgcHJvbWlzZSByZWplY3Rpb25zXG4gIHByb2Nlc3Mub24oJ3VuaGFuZGxlZFJlamVjdGlvbicsIChyZWFzb246IHVua25vd24pID0+IHtcbiAgICBjb25zb2xlLmVycm9yKCcnKTsgLy8gRW1wdHkgbGluZVxuICAgIHByaW50RXJyb3IoJ1VuaGFuZGxlZCBwcm9taXNlIHJlamVjdGlvbicsIHtcbiAgICAgIHJlYXNvbjogcmVhc29uIGluc3RhbmNlb2YgRXJyb3IgPyByZWFzb24ubWVzc2FnZTogU3RyaW5nKHJlYXNvbiksXG4gICAgfSk7XG5cbiAgICBjb25zdCBlcnJvciA9IHJlYXNvbiBpbnN0YW5jZW9mIEVycm9yID8gcmVhc29uOiBuZXcgRXJyb3IoU3RyaW5nKHJlYXNvbikpO1xuXG4gICAgaGFuZGxlRXJyb3IoZXJyb3IsIEVSUk9SX0NPREVTLkdFTkVSQUwsIHtcbiAgICAgIGRlYnVnOiBpc0RlYnVnTW9kZShwcm9ncmFtLm9wdHMoKSksXG4gICAgICBleGl0OiB0cnVlLFxuICAgICAgY29udGV4dDoge1xuICAgICAgICB0eXBlOiAndW5oYW5kbGVkUmVqZWN0aW9uJyxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH0pO1xuXG4gIC8vIEhhbmRsZSBTSUdJTlQgKEN0cmwrQylcbiAgcHJvY2Vzcy5vbignU0lHSU5UJywgKCkgPT4ge1xuICAgIGNvbnNvbGUubG9nKCcnKTsgLy8gRW1wdHkgbGluZVxuICAgIHByaW50V2FybmluZygnUHJvY2VzcyBpbnRlcnJ1cHRlZCBieSB1c2VyIChTSUdJTlQpJyk7XG4gICAgY29uc29sZS5sb2coJycpOyAvLyBFbXB0eSBsaW5lXG4gICAgcHJvY2Vzcy5leGl0KDEzMCk7IC8vIFN0YW5kYXJkIGV4aXQgY29kZSBmb3IgU0lHSU5UXG4gIH0pO1xuXG4gIC8vIEhhbmRsZSBTSUdURVJNXG4gIHByb2Nlc3Mub24oJ1NJR1RFUk0nLCAoKSA9PiB7XG4gICAgY29uc29sZS5sb2coJycpOyAvLyBFbXB0eSBsaW5lXG4gICAgcHJpbnRXYXJuaW5nKCdQcm9jZXNzIHRlcm1pbmF0ZWQgKFNJR1RFUk0pJyk7XG4gICAgY29uc29sZS5sb2coJycpOyAvLyBFbXB0eSBsaW5lXG4gICAgcHJvY2Vzcy5leGl0KDE0Myk7IC8vIFN0YW5kYXJkIGV4aXQgY29kZSBmb3IgU0lHVEVSTVxuICB9KTtcbn1cblxuLyoqXG4gKiBJbml0aWFsaXplIENMSSB3aXRoIG9wdGlvbnNcbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIENMSSBpbml0aWFsaXphdGlvbiBvcHRpb25zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbml0aWFsaXplQ2xpKG9wdGlvbnM6IENsaU9wdGlvbnMgPSB7fSk6IHZvaWQge1xuICBjb25zdCB7XG4gICAgc2hvd0Jhbm5lciA9IHRydWUsXG4gICAgbWluaW1hbEJhbm5lciA9IGZhbHNlLFxuICAgIGRlYnVnID0gZmFsc2UsXG4gICAgdmVyYm9zZSA9IGZhbHNlLFxuICAgIHF1aWV0ID0gZmFsc2UsXG4gICAgbm9Db2xvciA9IGZhbHNlLFxuICB9ID0gb3B0aW9ucztcblxuICAvLyBIYW5kbGUgY29sb3Igb3V0cHV0XG4gIGlmIChub0NvbG9yKSB7XG4gICAgcHJvY2Vzcy5lbnYuTk9fQ09MT1IgPSAnMSc7XG4gIH1cblxuICAvLyBEaXNwbGF5IGJhbm5lclxuICBpZiAoc2hvd0Jhbm5lciAmJiAhcXVpZXQpIHtcbiAgICBpZiAobWluaW1hbEJhbm5lcikge1xuICAgICAgbWluaUJhbm5lcigpO1xuICAgIH0gZWxzZSB7XG4gICAgICBiYW5uZXIoe1xuICAgICAgICBtaW5pbWFsOiBmYWxzZSxcbiAgICAgICAgc2hvd0Rlc2NyaXB0aW9uOiB0cnVlLFxuICAgICAgICBzaG93VGltZXN0YW1wOiBkZWJ1ZyB8fCB2ZXJib3NlLFxuICAgICAgICBzaG93RXhlY3V0aW9uSWQ6IGRlYnVnLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLy8gRGlzcGxheSBzdGFydHVwIGluZm9cbiAgZGlzcGxheVN0YXJ0dXBJbmZvKHsgZGVidWcsIHZlcmJvc2UsIHF1aWV0IH0pO1xuXG4gIC8vIENoZWNrIGVudmlyb25tZW50XG4gIGlmICghcXVpZXQpIHtcbiAgICBjaGVja0Vudmlyb25tZW50KCk7XG4gIH1cblxuICAvLyBTZXR1cCBlcnJvciBoYW5kbGVyc1xuICBzZXR1cEVycm9ySGFuZGxlcnMoKTtcblxuICAvLyBSZWdpc3RlciBjb21tYW5kc1xuICB0cnkge1xuICAgIHJlZ2lzdGVyQ29tbWFuZHMoKTtcbiAgICBwcmludERlYnVnKCdDTEkgaW5pdGlhbGl6YXRpb24gY29tcGxldGUnKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBwcmludEVycm9yKCdDTEkgaW5pdGlhbGl6YXRpb24gZmFpbGVkJywge1xuICAgICAgZXJyb3I6IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlOiBTdHJpbmcoZXJyb3IpLFxuICAgIH0pO1xuXG4gICAgaGFuZGxlRXJyb3IoZXJyb3IsIEVSUk9SX0NPREVTLkNPTkZJR1VSQVRJT04sIHtcbiAgICAgIGRlYnVnOiBkZWJ1ZyB8fCBpc0RlYnVnTW9kZSgpLFxuICAgICAgZXhpdDogdHJ1ZSxcbiAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgc3RhZ2U6ICdpbml0aWFsaXphdGlvbicsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG59XG5cbi8qKlxuICogUGFyc2UgY29tbWFuZCBsaW5lIGFyZ3VtZW50c1xuICovXG5mdW5jdGlvbiBwYXJzZUFyZ3VtZW50cygpOiB2b2lkIHtcbiAgdHJ5IHtcbiAgICBwcm9ncmFtLnBhcnNlKHByb2Nlc3MuYXJndik7XG5cbiAgICAvLyBTaG93IGhlbHAgaWYgbm8gY29tbWFuZCBwcm92aWRlZFxuICAgIGNvbnN0IGFyZ3MgPSBwcm9jZXNzLmFyZ3Yuc2xpY2UoMik7XG4gICAgaWYgKGFyZ3MubGVuZ3RoID09PSAwKSB7XG4gICAgICBwcmludEluZm8oJ05vIGNvbW1hbmQgc3BlY2lmaWVkIC0gZGlzcGxheWluZyBoZWxwJyk7XG4gICAgICBjb25zb2xlLmxvZygnJyk7IC8vIEVtcHR5IGxpbmVcbiAgICAgIHByb2dyYW0ub3V0cHV0SGVscCgpO1xuICAgICAgcHJvY2Vzcy5leGl0KDApO1xuICAgIH1cblxuICAgIC8vIENoZWNrIGlmIGNvbW1hbmQgZXhpc3RzXG4gICAgY29uc3QgY29tbWFuZCA9IGFyZ3NbMF07XG4gICAgaWYgKGNvbW1hbmQgJiYgIWNvbW1hbmQuc3RhcnRzV2l0aCgnLScpKSB7XG4gICAgICBjb25zdCBjb21tYW5kRXhpc3RzID0gcHJvZ3JhbS5jb21tYW5kcy5zb21lKGNtZCA9PiBjbWQubmFtZSgpID09PSBjb21tYW5kKTtcblxuICAgICAgaWYgKCFjb21tYW5kRXhpc3RzKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCcnKTsgLy8gRW1wdHkgbGluZVxuICAgICAgICBwcmludEVycm9yKGBVbmtub3duIGNvbW1hbmQ6ICR7Y29tbWFuZH1gKTtcbiAgICAgICAgY29uc29sZS5sb2coJycpOyAvLyBFbXB0eSBsaW5lXG4gICAgICAgIHByaW50SW5mbygnQXZhaWxhYmxlIGNvbW1hbmRzOicpO1xuICAgICAgICBwcm9ncmFtLmNvbW1hbmRzLmZvckVhY2goY21kID0+IHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgIOKAoiAke2NtZC5uYW1lKCl9IC0gJHtjbWQuZGVzY3JpcHRpb24oKX1gKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnNvbGUubG9nKCcnKTsgLy8gRW1wdHkgbGluZVxuICAgICAgICBwcm9jZXNzLmV4aXQoMSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcHJpbnREZWJ1ZygnQ29tbWFuZCBsaW5lIGFyZ3VtZW50cyBwYXJzZWQgc3VjY2Vzc2Z1bGx5Jyk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgaGFuZGxlRXJyb3IoZXJyb3IsIEVSUk9SX0NPREVTLkdFTkVSQUwsIHtcbiAgICAgIGRlYnVnOiBpc0RlYnVnTW9kZShwcm9ncmFtLm9wdHMoKSksXG4gICAgICBleGl0OiB0cnVlLFxuICAgICAgY29udGV4dDoge1xuICAgICAgICBzdGFnZTogJ2FyZ3VtZW50LXBhcnNpbmcnLFxuICAgICAgICBhcmd2OiBwcm9jZXNzLmFyZ3YsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG59XG5cbi8qKlxuICogTWFpbiBDTEkgZW50cnkgcG9pbnRcbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIENMSSBpbml0aWFsaXphdGlvbiBvcHRpb25zXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIC8vIFN0YW5kYXJkIGluaXRpYWxpemF0aW9uXG4gKiBtYWluKCk7XG4gKlxuICogLy8gTWluaW1hbCBtb2RlXG4gKiBtYWluKHsgbWluaW1hbEJhbm5lcjogdHJ1ZSwgcXVpZXQ6IHRydWUgfSk7XG4gKlxuICogLy8gRGVidWcgbW9kZVxuICogbWFpbih7IGRlYnVnOiB0cnVlLCB2ZXJib3NlOiB0cnVlIH0pO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYWluKG9wdGlvbnM6IENsaU9wdGlvbnMgPSB7fSk6IHZvaWQge1xuICB0cnkge1xuICAgIC8vIEluaXRpYWxpemUgQ0xJXG4gICAgaW5pdGlhbGl6ZUNsaShvcHRpb25zKTtcblxuICAgIC8vIFBhcnNlIGFyZ3VtZW50cyBhbmQgZXhlY3V0ZSBjb21tYW5kXG4gICAgcGFyc2VBcmd1bWVudHMoKTtcblxuICAgIC8vIElmIHdlIHJlYWNoIGhlcmUsIGNvbW1hbmQgY29tcGxldGVkIHN1Y2Nlc3NmdWxseVxuICAgIHByaW50RGVidWcoJ0NMSSBleGVjdXRpb24gY29tcGxldGVkIHN1Y2Nlc3NmdWxseScpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIC8vIEZpbmFsIGNhdGNoLWFsbCBlcnJvciBoYW5kbGVyXG4gICAgY29uc29sZS5lcnJvcignJyk7IC8vIEVtcHR5IGxpbmVcbiAgICBwcmludEVycm9yKCdGYXRhbCBDTEkgZXJyb3InLCB7XG4gICAgICBlcnJvcjogZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2U6IFN0cmluZyhlcnJvciksXG4gICAgfSk7XG5cbiAgICBoYW5kbGVFcnJvcihlcnJvciwgRVJST1JfQ09ERVMuR0VORVJBTCwge1xuICAgICAgZGVidWc6IGlzRGVidWdNb2RlKG9wdGlvbnMpLFxuICAgICAgZXhpdDogdHJ1ZSxcbiAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgc3RhZ2U6ICdtYWluJyxcbiAgICAgICAgb3B0aW9ucyxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbn1cblxuLyoqXG4gKiBSdW4gQ0xJIGlmIGV4ZWN1dGVkIGRpcmVjdGx5LiBFU00gaGFzIG5vIGByZXF1aXJlLm1haW5gOyBjb21wYXJlIHRoZSBpbnZva2VkXG4gKiBzY3JpcHQgdG8gdGhpcyBtb2R1bGUncyBwYXRoLCByZXNvbHZpbmcgc3ltbGlua3Mgb24gYm90aCBzaWRlcyBzbyB0aGUgYGJpbmBcbiAqIHN5bWxpbmsgKG5vZGVfbW9kdWxlcy8uYmluL3BpcGVsaW5lLW1hbmFnZXIg4oaSIGRpc3QvY2xpLmpzKSBzdGlsbCBtYXRjaGVzLlxuICovXG5jb25zdCBpbnZva2VkU2NyaXB0ID0gcHJvY2Vzcy5hcmd2WzFdO1xuY29uc3QgaXNNYWluTW9kdWxlID0gaW52b2tlZFNjcmlwdCAhPT0gdW5kZWZpbmVkXG4gICYmIHJlYWxwYXRoU3luYyhpbnZva2VkU2NyaXB0KSA9PT0gcmVhbHBhdGhTeW5jKGZpbGVVUkxUb1BhdGgoaW1wb3J0Lm1ldGEudXJsKSk7XG5pZiAoaXNNYWluTW9kdWxlKSB7XG4gIC8vIFBhcnNlIENMSSBvcHRpb25zIGZyb20gZW52aXJvbm1lbnQgb3IgY29tbWFuZCBsaW5lXG4gIGNvbnN0IG9wdGlvbnM6IENsaU9wdGlvbnMgPSB7XG4gICAgZGVidWc6IHByb2Nlc3MuZW52LkRFQlVHID09PSAndHJ1ZScsXG4gICAgcXVpZXQ6IHByb2Nlc3MuYXJndi5pbmNsdWRlcygnLS1xdWlldCcpLFxuICAgIHZlcmJvc2U6IHByb2Nlc3MuYXJndi5pbmNsdWRlcygnLS12ZXJib3NlJyksXG4gICAgbm9Db2xvcjogcHJvY2Vzcy5hcmd2LmluY2x1ZGVzKCctLW5vLWNvbG9yJykgfHwgcHJvY2Vzcy5lbnYuTk9fQ09MT1IgPT09ICcxJyxcbiAgfTtcblxuICBtYWluKG9wdGlvbnMpO1xufSJdfQ==
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { Command } from 'commander';
|
|
2
2
|
/**
|
|
3
|
-
* Registers the `provision` command — an
|
|
4
|
-
* Builder PLATFORM (local/minikube/EC2/Fargate). Phase 1 is READ-ONLY
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
3
|
+
* Registers the `provision` command — an AI-assisted installer for the Pipeline
|
|
4
|
+
* Builder PLATFORM (local/minikube/EC2/Fargate). Phase 1 is READ-ONLY (prereq
|
|
5
|
+
* checks, NL-goal parsing, command assembly, failure diagnosis); `--execute`
|
|
6
|
+
* gates a real deploy. With `--repo` it can bootstrap a fresh machine by sparsely
|
|
7
|
+
* cloning only the deploy folders the selected target + options need, then runs
|
|
8
|
+
* post-install steps (register admin, opt-in loads, smoke test, custom commands).
|
|
8
9
|
*
|
|
9
10
|
* @param program - The root Commander program instance to attach the command to.
|
|
10
11
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provision.d.ts","sourceRoot":"","sources":["../../src/commands/provision.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"provision.d.ts","sourceRoot":"","sources":["../../src/commands/provision.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAmEpC;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAqahD"}
|