@mavogel/cdk-vscode-server 0.0.73 → 0.0.75
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/.jsii +6 -5
- package/lib/idle-monitor/idle-monitor-function.js +2 -2
- package/lib/idle-monitor/idle-monitor.js +1 -1
- package/lib/idle-monitor-enabler/idle-monitor-enabler-function.js +2 -2
- package/lib/installer/installer-function.js +2 -2
- package/lib/installer/installer.lambda.js +1 -1
- package/lib/secret-retriever/secret-retriever-function.js +2 -2
- package/lib/secret-retriever/secret-retriever.lambda.js +1 -1
- package/lib/vscode-server.js +3 -3
- package/package.json +48 -42
- package/renovate.json5 +0 -1
package/.jsii
CHANGED
|
@@ -11,10 +11,10 @@
|
|
|
11
11
|
"node-html-parser": "^7.0.1"
|
|
12
12
|
},
|
|
13
13
|
"dependencies": {
|
|
14
|
-
"@mavogel/mvc-projen": "^0.0.
|
|
14
|
+
"@mavogel/mvc-projen": "^0.0.25",
|
|
15
15
|
"aws-cdk-lib": "^2.190.0",
|
|
16
16
|
"cdk-nag": "^2.37.55",
|
|
17
|
-
"constructs": "^10.
|
|
17
|
+
"constructs": "^10.5.1"
|
|
18
18
|
},
|
|
19
19
|
"dependencyClosure": {
|
|
20
20
|
"@aws-cdk/asset-awscli-v1": {
|
|
@@ -109,7 +109,7 @@
|
|
|
109
109
|
},
|
|
110
110
|
"python": {
|
|
111
111
|
"distName": "mvc-projen",
|
|
112
|
-
"module": "
|
|
112
|
+
"module": "mvc_projen"
|
|
113
113
|
}
|
|
114
114
|
}
|
|
115
115
|
},
|
|
@@ -4052,6 +4052,7 @@
|
|
|
4052
4052
|
"projen.javascript": {},
|
|
4053
4053
|
"projen.javascript.biome_config": {},
|
|
4054
4054
|
"projen.python": {},
|
|
4055
|
+
"projen.python.uvConfig": {},
|
|
4055
4056
|
"projen.release": {},
|
|
4056
4057
|
"projen.typescript": {},
|
|
4057
4058
|
"projen.vscode": {},
|
|
@@ -5054,6 +5055,6 @@
|
|
|
5054
5055
|
"symbolId": "src/vscode-server:VSCodeServerProps"
|
|
5055
5056
|
}
|
|
5056
5057
|
},
|
|
5057
|
-
"version": "0.0.
|
|
5058
|
-
"fingerprint": "
|
|
5058
|
+
"version": "0.0.75",
|
|
5059
|
+
"fingerprint": "GgiqMhyFaMiJBYM8ReKQe6qB+FFSntgkl11ybdwOW+0="
|
|
5059
5060
|
}
|
|
@@ -12,11 +12,11 @@ class IdleMonitorFunction extends lambda.Function {
|
|
|
12
12
|
super(scope, id, {
|
|
13
13
|
description: 'src/idle-monitor/idle-monitor.lambda.ts',
|
|
14
14
|
...props,
|
|
15
|
-
runtime: new lambda.Runtime('
|
|
15
|
+
runtime: new lambda.Runtime('nodejs24.x', lambda.RuntimeFamily.NODEJS),
|
|
16
16
|
handler: 'index.handler',
|
|
17
17
|
code: lambda.Code.fromAsset(path.join(__dirname, '../../assets/idle-monitor/idle-monitor.lambda')),
|
|
18
18
|
});
|
|
19
19
|
}
|
|
20
20
|
}
|
|
21
21
|
exports.IdleMonitorFunction = IdleMonitorFunction;
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRsZS1tb25pdG9yLWZ1bmN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2lkbGUtbW9uaXRvci9pZGxlLW1vbml0b3ItZnVuY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkVBQTZFO0FBQzdFLDZCQUE2QjtBQUM3QixpREFBaUQ7QUFTakQ7O0dBRUc7QUFDSCxNQUFhLG1CQUFvQixTQUFRLE1BQU0sQ0FBQyxRQUFRO0lBQ3RELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBZ0M7UUFDeEUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDZixXQUFXLEVBQUUseUNBQXlDO1lBQ3RELEdBQUcsS0FBSztZQUNSLE9BQU8sRUFBRSxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLE1BQU0sQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDO1lBQ3RFLE9BQU8sRUFBRSxlQUFlO1lBQ3hCLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSwrQ0FBK0MsQ0FBQyxDQUFDO1NBQ25HLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQVZELGtEQVVDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gfn4gR2VuZXJhdGVkIGJ5IHByb2plbi4gVG8gbW9kaWZ5LCBlZGl0IC5wcm9qZW5yYy50cyBhbmQgcnVuIFwibnB4IHByb2plblwiLlxuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCAqIGFzIGxhbWJkYSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuXG4vKipcbiAqIFByb3BzIGZvciBJZGxlTW9uaXRvckZ1bmN0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSWRsZU1vbml0b3JGdW5jdGlvblByb3BzIGV4dGVuZHMgbGFtYmRhLkZ1bmN0aW9uT3B0aW9ucyB7XG59XG5cbi8qKlxuICogQW4gQVdTIExhbWJkYSBmdW5jdGlvbiB3aGljaCBleGVjdXRlcyBzcmMvaWRsZS1tb25pdG9yL2lkbGUtbW9uaXRvci5cbiAqL1xuZXhwb3J0IGNsYXNzIElkbGVNb25pdG9yRnVuY3Rpb24gZXh0ZW5kcyBsYW1iZGEuRnVuY3Rpb24ge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wcz86IElkbGVNb25pdG9yRnVuY3Rpb25Qcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgZGVzY3JpcHRpb246ICdzcmMvaWRsZS1tb25pdG9yL2lkbGUtbW9uaXRvci5sYW1iZGEudHMnLFxuICAgICAgLi4ucHJvcHMsXG4gICAgICBydW50aW1lOiBuZXcgbGFtYmRhLlJ1bnRpbWUoJ25vZGVqczI0LngnLCBsYW1iZGEuUnVudGltZUZhbWlseS5OT0RFSlMpLFxuICAgICAgaGFuZGxlcjogJ2luZGV4LmhhbmRsZXInLFxuICAgICAgY29kZTogbGFtYmRhLkNvZGUuZnJvbUFzc2V0KHBhdGguam9pbihfX2Rpcm5hbWUsICcuLi8uLi9hc3NldHMvaWRsZS1tb25pdG9yL2lkbGUtbW9uaXRvci5sYW1iZGEnKSksXG4gICAgfSk7XG4gIH1cbn0iXX0=
|
|
@@ -83,5 +83,5 @@ class IdleMonitor extends constructs_1.Construct {
|
|
|
83
83
|
}
|
|
84
84
|
exports.IdleMonitor = IdleMonitor;
|
|
85
85
|
_a = JSII_RTTI_SYMBOL_1;
|
|
86
|
-
IdleMonitor[_a] = { fqn: "@mavogel/cdk-vscode-server.IdleMonitor", version: "0.0.
|
|
86
|
+
IdleMonitor[_a] = { fqn: "@mavogel/cdk-vscode-server.IdleMonitor", version: "0.0.75" };
|
|
87
87
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRsZS1tb25pdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2lkbGUtbW9uaXRvci9pZGxlLW1vbml0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw2QkFBNkI7QUFDN0IsNkNBQThDO0FBRzlDLHVEQUF3RDtBQUN4RCx1RUFBd0Y7QUFDeEYsaURBQXNEO0FBQ3RELHVEQUFtRjtBQUNuRixxQ0FBMEM7QUFDMUMsMkNBQXVDO0FBcUN2Qzs7R0FFRztBQUNILE1BQWEsV0FBWSxTQUFRLHNCQUFTO0lBV3hDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBdUI7UUFDL0QsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUkscUJBQWMsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFO1lBQ25ELE9BQU8sRUFBRSxvQkFBTyxDQUFDLFdBQVc7WUFDNUIsT0FBTyxFQUFFLGVBQWU7WUFDeEIsSUFBSSxFQUFFLGlCQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLCtDQUErQyxDQUFDLENBQUM7WUFDM0YsT0FBTyxFQUFFLHNCQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUM3QixVQUFVLEVBQUUsR0FBRztZQUNmLFdBQVcsRUFBRTtnQkFDWCxXQUFXLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxVQUFVO2dCQUN0QyxlQUFlLEVBQUUsS0FBSyxDQUFDLFlBQVksQ0FBQyxjQUFjO2dCQUNsRCxvQkFBb0IsRUFBRSxLQUFLLENBQUMsa0JBQWtCLENBQUMsUUFBUSxFQUFFO2dCQUN6RCxrQkFBa0IsRUFBRSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTzthQUM5RDtTQUNGLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUMzQixJQUFJLHlCQUFlLENBQUM7WUFDbEIsT0FBTyxFQUFFO2dCQUNQLGdDQUFnQztnQkFDaEMsMEJBQTBCO2FBQzNCO1lBQ0QsU0FBUyxFQUFFLENBQUMsR0FBRyxDQUFDO1NBQ2pCLENBQUMsQ0FDSCxDQUFDO1FBRUYsd0ZBQXdGO1FBQ3hGLGtDQUFrQztRQUNsQyxJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FDM0IsSUFBSSx5QkFBZSxDQUFDO1lBQ2xCLE9BQU8sRUFBRTtnQkFDUCx1QkFBdUI7Z0JBQ3ZCLDRCQUE0QjthQUM3QjtZQUNELFNBQVMsRUFBRSxDQUFDLEdBQUcsQ0FBQztTQUNqQixDQUFDLENBQ0gsQ0FBQztRQUVGLDJFQUEyRTtRQUMzRSxJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FDM0IsSUFBSSx5QkFBZSxDQUFDO1lBQ2xCLE9BQU8sRUFBRTtnQkFDUCxtQkFBbUI7YUFDcEI7WUFDRCxTQUFTLEVBQUU7Z0JBQ1QsZUFBZSxtQkFBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLElBQUksbUJBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxhQUFhLEtBQUssQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFO2FBQ3ZHO1NBQ0YsQ0FBQyxDQUNILENBQUM7UUFFRiwyREFBMkQ7UUFDM0QseUVBQXlFO1FBQ3pFLDZFQUE2RTtRQUM3RSxNQUFNLGFBQWEsR0FBRyxLQUFLLENBQUMsb0JBQW9CLElBQUksQ0FBQyxDQUFDO1FBQ3RELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxpQkFBSSxDQUFDLElBQUksRUFBRSxjQUFjLEVBQUU7WUFDakQsUUFBUSxFQUFFLHFCQUFRLENBQUMsSUFBSSxDQUFDLHNCQUFRLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ3hELE9BQU8sRUFBRSxLQUFLLEVBQUUscURBQXFEO1NBQ3RFLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLElBQUksbUNBQW9CLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFFckUsdUJBQXVCO1FBQ3ZCLHlCQUFlLENBQUMsdUJBQXVCLENBQ3JDLElBQUksQ0FBQyxRQUFRLEVBQ2I7WUFDRTtnQkFDRSxFQUFFLEVBQUUsbUJBQW1CO2dCQUN2QixNQUFNLEVBQUUsMkRBQTJEO2FBQ3BFO1lBQ0Q7Z0JBQ0UsRUFBRSxFQUFFLG1CQUFtQjtnQkFDdkIsTUFBTSxFQUFFLGlEQUFpRDthQUMxRDtZQUNEO2dCQUNFLEVBQUUsRUFBRSxpQkFBaUI7Z0JBQ3JCLE1BQU0sRUFBRSwrQ0FBK0M7YUFDeEQ7U0FDRixFQUNELElBQUksQ0FDTCxDQUFDO0lBQ0osQ0FBQzs7QUE1Rkgsa0NBNkZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IER1cmF0aW9uLCBTdGFjayB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IElEaXN0cmlidXRpb24gfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY2xvdWRmcm9udCc7XG5pbXBvcnQgeyBJSW5zdGFuY2UgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWMyJztcbmltcG9ydCB7IFJ1bGUsIFNjaGVkdWxlIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWV2ZW50cyc7XG5pbXBvcnQgeyBMYW1iZGFGdW5jdGlvbiBhcyBMYW1iZGFGdW5jdGlvblRhcmdldCB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1ldmVudHMtdGFyZ2V0cyc7XG5pbXBvcnQgeyBQb2xpY3lTdGF0ZW1lbnQgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCB7IFJ1bnRpbWUsIENvZGUsIEZ1bmN0aW9uIGFzIExhbWJkYUZ1bmN0aW9uIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYSc7XG5pbXBvcnQgeyBOYWdTdXBwcmVzc2lvbnMgfSBmcm9tICdjZGstbmFnJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuXG4vKipcbiAqIFByb3BzIGZvciBJZGxlTW9uaXRvciBjb25zdHJ1Y3RcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJZGxlTW9uaXRvclByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBFQzIgaW5zdGFuY2UgdG8gbW9uaXRvclxuICAgKi9cbiAgcmVhZG9ubHkgaW5zdGFuY2U6IElJbnN0YW5jZTtcbiAgLyoqXG4gICAqIFRoZSBDbG91ZEZyb250IGRpc3RyaWJ1dGlvbiB0byBtb25pdG9yIGZvciBhY3Rpdml0eVxuICAgKi9cbiAgcmVhZG9ubHkgZGlzdHJpYnV0aW9uOiBJRGlzdHJpYnV0aW9uO1xuICAvKipcbiAgICogTnVtYmVyIG9mIG1pbnV0ZXMgb2YgaW5hY3Rpdml0eSBiZWZvcmUgc3RvcHBpbmcgdGhlIGluc3RhbmNlXG4gICAqL1xuICByZWFkb25seSBpZGxlVGltZW91dE1pbnV0ZXM6IG51bWJlcjtcbiAgLyoqXG4gICAqIEhvdyBvZnRlbiB0byBjaGVjayBmb3IgaWRsZSBhY3Rpdml0eSAoaW4gbWludXRlcylcbiAgICogQGRlZmF1bHQgNSAtIENoZWNrIGV2ZXJ5IDUgbWludXRlc1xuICAgKi9cbiAgcmVhZG9ubHkgY2hlY2tJbnRlcnZhbE1pbnV0ZXM/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBTa2lwIGluc3RhbmNlIHN0YXR1cyBjaGVja3MgYmVmb3JlIHN0b3BwaW5nXG4gICAqIFdoZW4gdHJ1ZSwgSWRsZU1vbml0b3Igd2lsbCBzdG9wIGlkbGUgaW5zdGFuY2VzIGV2ZW4gaWYgc3RhdHVzIGNoZWNrcyBoYXZlbid0IHBhc3NlZFxuICAgKiBUaGlzIGlzIHVzZWZ1bCBmb3IgaW50ZWdyYXRpb24gdGVzdHMgd2hlcmUgc3RhdHVzIGNoZWNrIGluaXRpYWxpemF0aW9uIHRpbWVcbiAgICogZXhjZWVkcyB0ZXN0IHRpbWVvdXQgbGltaXRzXG4gICAqXG4gICAqIFdBUk5JTkc6IEZvciB0ZXN0aW5nIG9ubHkgLSBpbiBwcm9kdWN0aW9uLCB5b3Ugc2hvdWxkIHdhaXQgZm9yIHN0YXR1cyBjaGVja3NcbiAgICogdG8gcGFzcyBiZWZvcmUgc3RvcHBpbmcgaW5zdGFuY2VzXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBza2lwU3RhdHVzQ2hlY2tzPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBDb25zdHJ1Y3QgdGhhdCBtb25pdG9ycyBDbG91ZEZyb250IHJlcXVlc3QgbWV0cmljcyBhbmQgc3RvcHMgdGhlIEVDMiBpbnN0YW5jZSB3aGVuIGlkbGVcbiAqL1xuZXhwb3J0IGNsYXNzIElkbGVNb25pdG9yIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgLyoqXG4gICAqIFRoZSBMYW1iZGEgZnVuY3Rpb24gdGhhdCBwZXJmb3JtcyBpZGxlIG1vbml0b3JpbmdcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBmdW5jdGlvbjogTGFtYmRhRnVuY3Rpb247XG5cbiAgLyoqXG4gICAqIFRoZSBFdmVudEJyaWRnZSBydWxlIHRoYXQgdHJpZ2dlcnMgaWRsZSBtb25pdG9yaW5nIGNoZWNrc1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHNjaGVkdWxlUnVsZTogUnVsZTtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogSWRsZU1vbml0b3JQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICB0aGlzLmZ1bmN0aW9uID0gbmV3IExhbWJkYUZ1bmN0aW9uKHRoaXMsICdGdW5jdGlvbicsIHtcbiAgICAgIHJ1bnRpbWU6IFJ1bnRpbWUuTk9ERUpTXzIwX1gsXG4gICAgICBoYW5kbGVyOiAnaW5kZXguaGFuZGxlcicsXG4gICAgICBjb2RlOiBDb2RlLmZyb21Bc3NldChwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4vLi4vYXNzZXRzL2lkbGUtbW9uaXRvci9pZGxlLW1vbml0b3IubGFtYmRhJykpLFxuICAgICAgdGltZW91dDogRHVyYXRpb24uc2Vjb25kcygzMCksXG4gICAgICBtZW1vcnlTaXplOiAyNTYsXG4gICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICBJTlNUQU5DRV9JRDogcHJvcHMuaW5zdGFuY2UuaW5zdGFuY2VJZCxcbiAgICAgICAgRElTVFJJQlVUSU9OX0lEOiBwcm9wcy5kaXN0cmlidXRpb24uZGlzdHJpYnV0aW9uSWQsXG4gICAgICAgIElETEVfVElNRU9VVF9NSU5VVEVTOiBwcm9wcy5pZGxlVGltZW91dE1pbnV0ZXMudG9TdHJpbmcoKSxcbiAgICAgICAgU0tJUF9TVEFUVVNfQ0hFQ0tTOiBwcm9wcy5za2lwU3RhdHVzQ2hlY2tzID8gJ3RydWUnIDogJ2ZhbHNlJyxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICB0aGlzLmZ1bmN0aW9uLmFkZFRvUm9sZVBvbGljeShcbiAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgJ2Nsb3Vkd2F0Y2g6R2V0TWV0cmljU3RhdGlzdGljcycsXG4gICAgICAgICAgJ2Nsb3Vkd2F0Y2g6R2V0TWV0cmljRGF0YScsXG4gICAgICAgIF0sXG4gICAgICAgIHJlc291cmNlczogWycqJ10sXG4gICAgICB9KSxcbiAgICApO1xuXG4gICAgLy8gRGVzY3JpYmVJbnN0YW5jZXMgYW5kIERlc2NyaWJlSW5zdGFuY2VTdGF0dXMgZG9uJ3Qgc3VwcG9ydCByZXNvdXJjZS1sZXZlbCBwZXJtaXNzaW9uc1xuICAgIC8vIFRoZXkgcmVxdWlyZSB3aWxkY2FyZCByZXNvdXJjZXNcbiAgICB0aGlzLmZ1bmN0aW9uLmFkZFRvUm9sZVBvbGljeShcbiAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgJ2VjMjpEZXNjcmliZUluc3RhbmNlcycsXG4gICAgICAgICAgJ2VjMjpEZXNjcmliZUluc3RhbmNlU3RhdHVzJyxcbiAgICAgICAgXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbJyonXSxcbiAgICAgIH0pLFxuICAgICk7XG5cbiAgICAvLyBTdG9wSW5zdGFuY2VzIHN1cHBvcnRzIHJlc291cmNlLWxldmVsIHBlcm1pc3Npb25zLCBzbyB3ZSBjYW4gcmVzdHJpY3QgaXRcbiAgICB0aGlzLmZ1bmN0aW9uLmFkZFRvUm9sZVBvbGljeShcbiAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgJ2VjMjpTdG9wSW5zdGFuY2VzJyxcbiAgICAgICAgXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbXG4gICAgICAgICAgYGFybjphd3M6ZWMyOiR7U3RhY2sub2YodGhpcykucmVnaW9ufToke1N0YWNrLm9mKHRoaXMpLmFjY291bnR9Omluc3RhbmNlLyR7cHJvcHMuaW5zdGFuY2UuaW5zdGFuY2VJZH1gLFxuICAgICAgICBdLFxuICAgICAgfSksXG4gICAgKTtcblxuICAgIC8vIENyZWF0ZSBFdmVudEJyaWRnZSBydWxlIHRvIHRyaWdnZXIgYXQgc3BlY2lmaWVkIGludGVydmFsXG4gICAgLy8gTk9URTogUnVsZSBpcyBjcmVhdGVkIGluIERJU0FCTEVEIHN0YXRlIGFuZCBtdXN0IGJlIGV4cGxpY2l0bHkgZW5hYmxlZFxuICAgIC8vIGFmdGVyIGluc3RhbGxhdGlvbiBjb21wbGV0ZXMgdG8gcHJldmVudCBzdG9wcGluZyB0aGUgaW5zdGFuY2UgZHVyaW5nIHNldHVwXG4gICAgY29uc3QgY2hlY2tJbnRlcnZhbCA9IHByb3BzLmNoZWNrSW50ZXJ2YWxNaW51dGVzID8/IDU7XG4gICAgdGhpcy5zY2hlZHVsZVJ1bGUgPSBuZXcgUnVsZSh0aGlzLCAnU2NoZWR1bGVSdWxlJywge1xuICAgICAgc2NoZWR1bGU6IFNjaGVkdWxlLnJhdGUoRHVyYXRpb24ubWludXRlcyhjaGVja0ludGVydmFsKSksXG4gICAgICBlbmFibGVkOiBmYWxzZSwgLy8gU3RhcnQgZGlzYWJsZWQsIHdpbGwgYmUgZW5hYmxlZCBhZnRlciBpbnN0YWxsYXRpb25cbiAgICB9KTtcblxuICAgIHRoaXMuc2NoZWR1bGVSdWxlLmFkZFRhcmdldChuZXcgTGFtYmRhRnVuY3Rpb25UYXJnZXQodGhpcy5mdW5jdGlvbikpO1xuXG4gICAgLy8gQ0RLLW5hZyBzdXBwcmVzc2lvbnNcbiAgICBOYWdTdXBwcmVzc2lvbnMuYWRkUmVzb3VyY2VTdXBwcmVzc2lvbnMoXG4gICAgICB0aGlzLmZ1bmN0aW9uLFxuICAgICAgW1xuICAgICAgICB7XG4gICAgICAgICAgaWQ6ICdBd3NTb2x1dGlvbnMtSUFNNCcsXG4gICAgICAgICAgcmVhc29uOiAnTWFuYWdlZCBwb2xpY2llcyBhY2NlcHRhYmxlIGZvciB3b3Jrc2hvcCBMYW1iZGEgZnVuY3Rpb25zJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGlkOiAnQXdzU29sdXRpb25zLUlBTTUnLFxuICAgICAgICAgIHJlYXNvbjogJ0Nsb3VkV2F0Y2ggbWV0cmljcyByZXF1aXJlIHdpbGRjYXJkIHBlcm1pc3Npb25zJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGlkOiAnQXdzU29sdXRpb25zLUwxJyxcbiAgICAgICAgICByZWFzb246ICdMYXRlc3QgcnVudGltZSBub3QgcmVxdWlyZWQgZm9yIHRoaXMgZnVuY3Rpb24nLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIHRydWUsXG4gICAgKTtcbiAgfVxufVxuIl19
|
|
@@ -12,11 +12,11 @@ class IdleMonitorEnablerFunction extends lambda.Function {
|
|
|
12
12
|
super(scope, id, {
|
|
13
13
|
description: 'src/idle-monitor-enabler/idle-monitor-enabler.lambda.ts',
|
|
14
14
|
...props,
|
|
15
|
-
runtime: new lambda.Runtime('
|
|
15
|
+
runtime: new lambda.Runtime('nodejs24.x', lambda.RuntimeFamily.NODEJS),
|
|
16
16
|
handler: 'index.handler',
|
|
17
17
|
code: lambda.Code.fromAsset(path.join(__dirname, '../../assets/idle-monitor-enabler/idle-monitor-enabler.lambda')),
|
|
18
18
|
});
|
|
19
19
|
}
|
|
20
20
|
}
|
|
21
21
|
exports.IdleMonitorEnablerFunction = IdleMonitorEnablerFunction;
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRsZS1tb25pdG9yLWVuYWJsZXItZnVuY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaWRsZS1tb25pdG9yLWVuYWJsZXIvaWRsZS1tb25pdG9yLWVuYWJsZXItZnVuY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkVBQTZFO0FBQzdFLDZCQUE2QjtBQUM3QixpREFBaUQ7QUFTakQ7O0dBRUc7QUFDSCxNQUFhLDBCQUEyQixTQUFRLE1BQU0sQ0FBQyxRQUFRO0lBQzdELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBdUM7UUFDL0UsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDZixXQUFXLEVBQUUseURBQXlEO1lBQ3RFLEdBQUcsS0FBSztZQUNSLE9BQU8sRUFBRSxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLE1BQU0sQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDO1lBQ3RFLE9BQU8sRUFBRSxlQUFlO1lBQ3hCLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSwrREFBK0QsQ0FBQyxDQUFDO1NBQ25ILENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQVZELGdFQVVDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gfn4gR2VuZXJhdGVkIGJ5IHByb2plbi4gVG8gbW9kaWZ5LCBlZGl0IC5wcm9qZW5yYy50cyBhbmQgcnVuIFwibnB4IHByb2plblwiLlxuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCAqIGFzIGxhbWJkYSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuXG4vKipcbiAqIFByb3BzIGZvciBJZGxlTW9uaXRvckVuYWJsZXJGdW5jdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIElkbGVNb25pdG9yRW5hYmxlckZ1bmN0aW9uUHJvcHMgZXh0ZW5kcyBsYW1iZGEuRnVuY3Rpb25PcHRpb25zIHtcbn1cblxuLyoqXG4gKiBBbiBBV1MgTGFtYmRhIGZ1bmN0aW9uIHdoaWNoIGV4ZWN1dGVzIHNyYy9pZGxlLW1vbml0b3ItZW5hYmxlci9pZGxlLW1vbml0b3ItZW5hYmxlci5cbiAqL1xuZXhwb3J0IGNsYXNzIElkbGVNb25pdG9yRW5hYmxlckZ1bmN0aW9uIGV4dGVuZHMgbGFtYmRhLkZ1bmN0aW9uIHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM/
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRsZS1tb25pdG9yLWVuYWJsZXItZnVuY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaWRsZS1tb25pdG9yLWVuYWJsZXIvaWRsZS1tb25pdG9yLWVuYWJsZXItZnVuY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkVBQTZFO0FBQzdFLDZCQUE2QjtBQUM3QixpREFBaUQ7QUFTakQ7O0dBRUc7QUFDSCxNQUFhLDBCQUEyQixTQUFRLE1BQU0sQ0FBQyxRQUFRO0lBQzdELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBdUM7UUFDL0UsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDZixXQUFXLEVBQUUseURBQXlEO1lBQ3RFLEdBQUcsS0FBSztZQUNSLE9BQU8sRUFBRSxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLE1BQU0sQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDO1lBQ3RFLE9BQU8sRUFBRSxlQUFlO1lBQ3hCLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSwrREFBK0QsQ0FBQyxDQUFDO1NBQ25ILENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQVZELGdFQVVDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gfn4gR2VuZXJhdGVkIGJ5IHByb2plbi4gVG8gbW9kaWZ5LCBlZGl0IC5wcm9qZW5yYy50cyBhbmQgcnVuIFwibnB4IHByb2plblwiLlxuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCAqIGFzIGxhbWJkYSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuXG4vKipcbiAqIFByb3BzIGZvciBJZGxlTW9uaXRvckVuYWJsZXJGdW5jdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIElkbGVNb25pdG9yRW5hYmxlckZ1bmN0aW9uUHJvcHMgZXh0ZW5kcyBsYW1iZGEuRnVuY3Rpb25PcHRpb25zIHtcbn1cblxuLyoqXG4gKiBBbiBBV1MgTGFtYmRhIGZ1bmN0aW9uIHdoaWNoIGV4ZWN1dGVzIHNyYy9pZGxlLW1vbml0b3ItZW5hYmxlci9pZGxlLW1vbml0b3ItZW5hYmxlci5cbiAqL1xuZXhwb3J0IGNsYXNzIElkbGVNb25pdG9yRW5hYmxlckZ1bmN0aW9uIGV4dGVuZHMgbGFtYmRhLkZ1bmN0aW9uIHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM/OiBJZGxlTW9uaXRvckVuYWJsZXJGdW5jdGlvblByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICBkZXNjcmlwdGlvbjogJ3NyYy9pZGxlLW1vbml0b3ItZW5hYmxlci9pZGxlLW1vbml0b3ItZW5hYmxlci5sYW1iZGEudHMnLFxuICAgICAgLi4ucHJvcHMsXG4gICAgICBydW50aW1lOiBuZXcgbGFtYmRhLlJ1bnRpbWUoJ25vZGVqczI0LngnLCBsYW1iZGEuUnVudGltZUZhbWlseS5OT0RFSlMpLFxuICAgICAgaGFuZGxlcjogJ2luZGV4LmhhbmRsZXInLFxuICAgICAgY29kZTogbGFtYmRhLkNvZGUuZnJvbUFzc2V0KHBhdGguam9pbihfX2Rpcm5hbWUsICcuLi8uLi9hc3NldHMvaWRsZS1tb25pdG9yLWVuYWJsZXIvaWRsZS1tb25pdG9yLWVuYWJsZXIubGFtYmRhJykpLFxuICAgIH0pO1xuICB9XG59Il19
|
|
@@ -12,11 +12,11 @@ class InstallerFunction extends lambda.Function {
|
|
|
12
12
|
super(scope, id, {
|
|
13
13
|
description: 'src/installer/installer.lambda.ts',
|
|
14
14
|
...props,
|
|
15
|
-
runtime: new lambda.Runtime('
|
|
15
|
+
runtime: new lambda.Runtime('nodejs24.x', lambda.RuntimeFamily.NODEJS),
|
|
16
16
|
handler: 'index.handler',
|
|
17
17
|
code: lambda.Code.fromAsset(path.join(__dirname, '../../assets/installer/installer.lambda')),
|
|
18
18
|
});
|
|
19
19
|
}
|
|
20
20
|
}
|
|
21
21
|
exports.InstallerFunction = InstallerFunction;
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdGFsbGVyLWZ1bmN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2luc3RhbGxlci9pbnN0YWxsZXItZnVuY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkVBQTZFO0FBQzdFLDZCQUE2QjtBQUM3QixpREFBaUQ7QUFTakQ7O0dBRUc7QUFDSCxNQUFhLGlCQUFrQixTQUFRLE1BQU0sQ0FBQyxRQUFRO0lBQ3BELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBOEI7UUFDdEUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDZixXQUFXLEVBQUUsbUNBQW1DO1lBQ2hELEdBQUcsS0FBSztZQUNSLE9BQU8sRUFBRSxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLE1BQU0sQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDO1lBQ3RFLE9BQU8sRUFBRSxlQUFlO1lBQ3hCLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSx5Q0FBeUMsQ0FBQyxDQUFDO1NBQzdGLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQVZELDhDQVVDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gfn4gR2VuZXJhdGVkIGJ5IHByb2plbi4gVG8gbW9kaWZ5LCBlZGl0IC5wcm9qZW5yYy50cyBhbmQgcnVuIFwibnB4IHByb2plblwiLlxuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCAqIGFzIGxhbWJkYSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuXG4vKipcbiAqIFByb3BzIGZvciBJbnN0YWxsZXJGdW5jdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIEluc3RhbGxlckZ1bmN0aW9uUHJvcHMgZXh0ZW5kcyBsYW1iZGEuRnVuY3Rpb25PcHRpb25zIHtcbn1cblxuLyoqXG4gKiBBbiBBV1MgTGFtYmRhIGZ1bmN0aW9uIHdoaWNoIGV4ZWN1dGVzIHNyYy9pbnN0YWxsZXIvaW5zdGFsbGVyLlxuICovXG5leHBvcnQgY2xhc3MgSW5zdGFsbGVyRnVuY3Rpb24gZXh0ZW5kcyBsYW1iZGEuRnVuY3Rpb24ge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wcz86IEluc3RhbGxlckZ1bmN0aW9uUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnc3JjL2luc3RhbGxlci9pbnN0YWxsZXIubGFtYmRhLnRzJyxcbiAgICAgIC4uLnByb3BzLFxuICAgICAgcnVudGltZTogbmV3IGxhbWJkYS5SdW50aW1lKCdub2RlanMyNC54JywgbGFtYmRhLlJ1bnRpbWVGYW1pbHkuTk9ERUpTKSxcbiAgICAgIGhhbmRsZXI6ICdpbmRleC5oYW5kbGVyJyxcbiAgICAgIGNvZGU6IGxhbWJkYS5Db2RlLmZyb21Bc3NldChwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4vLi4vYXNzZXRzL2luc3RhbGxlci9pbnN0YWxsZXIubGFtYmRhJykpLFxuICAgIH0pO1xuICB9XG59Il19
|
|
@@ -142,4 +142,4 @@ const handler = async (event, context) => {
|
|
|
142
142
|
}
|
|
143
143
|
};
|
|
144
144
|
exports.handler = handler;
|
|
145
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdGFsbGVyLmxhbWJkYS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pbnN0YWxsZXIvaW5zdGFsbGVyLmxhbWJkYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxvREFLNkI7QUFTN0IsTUFBTSxHQUFHLEdBQUcsSUFBSSxnQkFBRyxFQUFFLENBQUM7QUFDdEIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDO0FBRWYsTUFBTSxPQUFPLEdBQUcsS0FBSyxFQUMxQixLQUFxQixFQUNyQixPQUFnQixFQUNVLEVBQUU7SUFDNUIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsRUFBRSxHQUFHLEtBQUssRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUUzRCxJQUFJLEtBQUssQ0FBQyxXQUFXLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDbkMsYUFBYTtRQUNiLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVELG1CQUFtQjtJQUNuQixNQUFNLGtCQUFrQixHQUFHLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQztJQUNwRCxNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFDO0lBQ3ZELE1BQU0sWUFBWSxHQUFHLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLENBQUM7SUFDM0QsTUFBTSxzQkFBc0IsR0FDMUIsS0FBSyxDQUFDLGtCQUFrQixDQUFDLHNCQUFzQixDQUFDO0lBRWxELFFBQVE7SUFDUixPQUFPLENBQUMsR0FBRyxDQUFDLDRCQUE0QixFQUFFLGtCQUFrQixDQUFDLENBQUM7SUFDOUQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDbkUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsRUFBRSxLQUFLLENBQUMsa0JBQWtCLENBQUMsY0FBYyxDQUFDLENBQUM7SUFFM0UsNEJB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WSxDQUN2RSxDQUFDO2dCQUNKLEtBQUssUUFBUTtvQkFDWCxNQUFNLElBQUksS0FBSyxDQUNiLGdCQUFnQixZQUFZLG9CQUFvQixVQUFVLFNBQVMsQ0FDcEUsQ0FBQztnQkFDSjtvQkFDRSxNQUFNLElBQUksS0FBSyxDQUNiLGdCQUFnQixZQUFZLG9CQUFvQixVQUFVLG9CQUFvQixNQUFNLEVBQUUsQ0FDdkYsQ0FBQztZQUNOLENBQUM7UUFDSCxDQUFDO1FBQUMsT0FBTyxLQUFVLEVBQUUsQ0FBQztZQUNwQix5REFBeUQ7WUFDekQsTUFBTSxhQUFhLEdBQUcsT0FBTyxDQUFDLHdCQUF3QixFQUFFLENBQUM7WUFFekQsSUFDRSxLQUFLLENBQUMsSUFBSSxLQUFLLHdCQUF3QjtnQkFDdkMsYUFBYSxHQUFHLFFBQVEsRUFDeEIsQ0FBQztnQkFDRCxPQUFPLENBQUMsR0FBRyxDQUNULDJDQUEyQyxRQUFRLEdBQUcsSUFBSSxHQUFHLENBQzlELENBQUM7Z0JBQ0YsTUFBTSxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO2dCQUM5RCxtQkFBbUI7WUFDckIsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLHFDQUFxQztnQkFDckMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQ0FBZ0MsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDckQsTUFBTSxLQUFLLENBQUM7WUFDZCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7QUFDSCxDQUFDLENBQUM7QUFqTVcsUUFBQSxPQUFPLFdBaU1sQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbW1hbmQsXG4gIEdldENvbW1hbmRJbnZvY2F0aW9uQ29tbWFuZCxcbiAgU2VuZENvbW1hbmRDb21tYW5kLFxuICBTU00sXG59IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1zc20nO1xuLy8gQHRzLWlnbm9yZVxuaW1wb3J0IHR5cGUge1xuICBPbkV2ZW50UmVxdWVzdCxcbiAgT25FdmVudFJlc3BvbnNlLFxufSBmcm9tICdhd3MtY2RrLWxpYi9jdXN0b20tcmVzb3VyY2VzL2xpYi9wcm92aWRlci1mcmFtZXdvcmsvdHlwZXMnO1xuaW1wb3J0IHsgQ29udGV4dCB9IGZyb20gJ2F3cy1sYW1iZGEnO1xuaW1wb3J0IHsgQ2xvdWRGb3JtYXRpb25DdXN0b21SZXNvdXJjZVJlc291cmNlUHJvcGVydGllc0NvbW1vbiB9IGZyb20gJ2F3cy1sYW1iZGEvdHJpZ2dlci9jbG91ZGZvcm1hdGlvbi1jdXN0b20tcmVzb3VyY2UnO1xuXG5jb25zdCBzc20gPSBuZXcgU1NNKCk7XG5jb25zdCBTTEVFUF9NUyA9IDI5MDA7XG5cbmV4cG9ydCBjb25zdCBoYW5kbGVyID0gYXN5bmMgKFxuICBldmVudDogT25FdmVudFJlcXVlc3QsXG4gIGNvbnRleHQ6IENvbnRleHQsXG4pOiBQcm9taXNlPE9uRXZlbnRSZXNwb25zZT4gPT4ge1xuICBjb25zb2xlLmxvZygnRXZlbnQ6ICVqJywgeyAuLi5ldmVudCwgUmVzcG9uc2VVUkw6ICcuLi4nIH0pO1xuXG4gIGlmIChldmVudC5SZXF1ZXN0VHlwZSAhPT0gJ0NyZWF0ZScpIHtcbiAgICAvLyBkbyBub3RoaW5nXG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgLy8gb25seSBDcmVhdGUgY2FzZVxuICBjb25zdCByZXNvdXJjZVByb3BlcnRpZXMgPSBldmVudC5SZXNvdXJjZVByb3BlcnRpZXM7XG4gIGNvbnN0IGluc3RhbmNlSWQgPSBldmVudC5SZXNvdXJjZVByb3BlcnRpZXMuSW5zdGFuY2VJZDtcbiAgY29uc3QgZG9jdW1lbnROYW1lID0gZXZlbnQuUmVzb3VyY2VQcm9wZXJ0aWVzLkRvY3VtZW50TmFtZTtcbiAgY29uc3QgY2xvdWRXYXRjaExvZ0dyb3VwTmFtZSA9XG4gICAgZXZlbnQuUmVzb3VyY2VQcm9wZXJ0aWVzLkNsb3VkV2F0Y2hMb2dHcm91cE5hbWU7XG5cbiAgLy8gZGVidWdcbiAgY29uc29sZS5sb2coJ1Jlc291cmNlUHJvcGVydGllcyByYXc6ICVqJywgcmVzb3VyY2VQcm9wZXJ0aWVzKTtcbiAgY29uc29sZS5sb2coJ0luc3RhbmNlSWQ6ICVzJywgZXZlbnQuUmVzb3VyY2VQcm9wZXJ0aWVzLkluc3RhbmNlSWQpO1xuICBjb25zb2xlLmxvZygnVlNDb2RlUGFzc3dvcmQ6ICVzJywgZXZlbnQuUmVzb3VyY2VQcm9wZXJ0aWVzLlZTQ29kZVBhc3N3b3JkKTtcblxuICAvLyB0byBiZSBhYmxlIHRvIG1vZGlmeSB0aGVtXG4gIGNvbnN0IHJlc291cmNlUHJvcGVydGllc1BhcnRpYWwgPVxuICAgIHJlc291cmNlUHJvcGVydGllcyBhcyBQYXJ0aWFsPENsb3VkRm9ybWF0aW9uQ3VzdG9tUmVzb3VyY2VSZXNvdXJjZVByb3BlcnRpZXNDb21tb24+O1xuICBjb25zb2xlLmxvZygnUmVzb3VyY2VQcm9wZXJ0aWVzIGJlZm9yZTogJWonLCByZXNvdXJjZVByb3BlcnRpZXNQYXJ0aWFsKTtcbiAgZGVsZXRlIHJlc291cmNlUHJvcGVydGllc1BhcnRpYWwuU2VydmljZVRva2VuO1xuICBpZiAocmVzb3VyY2VQcm9wZXJ0aWVzUGFydGlhbC5TZXJ2aWNlVGltZW91dCkge1xuICAgIGRlbGV0ZSByZXNvdXJjZVByb3BlcnRpZXNQYXJ0aWFsLlNlcnZpY2VUaW1lb3V0O1xuICB9XG4gIGRlbGV0ZSByZXNvdXJjZVByb3BlcnRpZXNQYXJ0aWFsLkluc3RhbmNlSWQ7XG4gIGRlbGV0ZSByZXNvdXJjZVByb3BlcnRpZXNQYXJ0aWFsLkRvY3VtZW50TmFtZTtcbiAgZGVsZXRlIHJlc291cmNlUHJvcGVydGllc1BhcnRpYWwuQ2xvdWRXYXRjaExvZ0dyb3VwTmFtZTtcbiAgaWYgKHJlc291cmNlUHJvcGVydGllc1BhcnRpYWwuUGh5c2ljYWxSZXNvdXJjZUlkKSB7XG4gICAgZGVsZXRlIHJlc291cmNlUHJvcGVydGllc1BhcnRpYWwuUGh5c2ljYWxSZXNvdXJjZUlkO1xuICB9XG5cbiAgY29uc29sZS5sb2coXG4gICAgJ1Jlc291cmNlUHJvcGVydGllcyBmaWx0ZXJlZCBhZnRlcjogJWonLFxuICAgIHJlc291cmNlUHJvcGVydGllc1BhcnRpYWwsXG4gICk7XG5cbiAgY29uc3QgcGFyYW1ldGVyczogUmVjb3JkPHN0cmluZywgc3RyaW5nW10+ID0ge307XG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHJlc291cmNlUHJvcGVydGllc1BhcnRpYWwpKSB7XG4gICAgcGFyYW1ldGVyc1trZXldID0gW3ZhbHVlXTtcbiAgfVxuICBjb25zb2xlLmxvZygnbWFwcGVkIHBhcmFtZXRlcnM6ICVqJywgcGFyYW1ldGVycyk7XG5cbiAgY29uc29sZS5sb2coXG4gICAgYFJ1bm5pbmcgU1NNIERvY3VtZW50ICcke2RvY3VtZW50TmFtZX0nIG9uIEVDMiBpbnN0YW5jZSAnJHtpbnN0YW5jZUlkfScuIExvZ2dpbmcgdG8gJyR7Y2xvdWRXYXRjaExvZ0dyb3VwTmFtZX0nIHdpdGggcGFyYW1ldGVyczogJyR7SlNPTi5zdHJpbmdpZnkocGFyYW1ldGVycyl9J2AsXG4gICk7XG5cbiAgLy8gU3RlcCAxOiBTZW5kIHRoZSBTU00gY29tbWFuZCBvbmNlIGFuZCBnZXQgdGhlIENvbW1hbmRJZFxuICBsZXQgY29tbWFuZElkOiBzdHJpbmc7XG4gIGxldCBhdHRlbXB0Tm8gPSAwO1xuXG4gIC8vIFJldHJ5IGxvb3AgZm9yIHNlbmRpbmcgdGhlIGNvbW1hbmQgKGhhbmRsZXMgSUFNIHByb3BhZ2F0aW9uIGlzc3VlcylcbiAgd2hpbGUgKHRydWUpIHtcbiAgICBhdHRlbXB0Tm8gKz0gMTtcbiAgICBjb25zdCB0aW1lUmVtYWluaW5nID0gY29udGV4dC5nZXRSZW1haW5pbmdUaW1lSW5NaWxsaXMoKTtcbiAgICBjb25zb2xlLmxvZyhcbiAgICAgIGBTZW5kIGF0dGVtcHQ6ICR7YXR0ZW1wdE5vfS4gVGltZSBSZW1haW5pbmc6ICR7dGltZVJlbWFpbmluZyAvIDEwMDB9c2AsXG4gICAgKTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHNzbS5zZW5kKFxuICAgICAgICBuZXcgU2VuZENvbW1hbmRDb21tYW5kKHtcbiAgICAgICAgICBEb2N1bWVudE5hbWU6IGRvY3VtZW50TmFtZSxcbiAgICAgICAgICBJbnN0YW5jZUlkczogW2luc3RhbmNlSWRdLFxuICAgICAgICAgIENsb3VkV2F0Y2hPdXRwdXRDb25maWc6IHtcbiAgICAgICAgICAgIENsb3VkV2F0Y2hMb2dHcm91cE5hbWU6IGNsb3VkV2F0Y2hMb2dHcm91cE5hbWUsXG4gICAgICAgICAgICBDbG91ZFdhdGNoT3V0cHV0RW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIFBhcmFtZXRlcnM6IHBhcmFtZXRlcnMsXG4gICAgICAgIH0pLFxuICAgICAgKTtcblxuICAgICAgY29uc29sZS5sb2coYHNlbmRDb21tYW5kIHJlc3BvbnNlOiAke0pTT04uc3RyaW5naWZ5KHJlc3BvbnNlKX1gKTtcbiAgICAgIGNvbnN0IGNvbW1hbmQ6IENvbW1hbmQgPSByZXNwb25zZS5Db21tYW5kITtcbiAgICAgIGNvbW1hbmRJZCA9IGNvbW1hbmQuQ29tbWFuZElkITtcbiAgICAgIGNvbnNvbGUubG9nKGBDb21tYW5kIHNlbnQgc3VjY2Vzc2Z1bGx5LiBDb21tYW5kSWQ6ICR7Y29tbWFuZElkfWApO1xuICAgICAgYnJlYWs7IC8vIFN1Y2Nlc3NmdWxseSBzZW50IGNvbW1hbmQsIGV4aXQgcmV0cnkgbG9vcFxuICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICAgIGNvbnNvbGUubG9nKCdFcnJvciBzZW5kaW5nIGNvbW1hbmQ6JywgZXJyb3IpO1xuXG4gICAgICAvLyBDaGVjayBpZiB0aGlzIGlzIGEgcmV0cnlhYmxlIGVycm9yIChJQU0gcHJvcGFnYXRpb24sIHRocm90dGxpbmcsIGV0Yy4pXG4gICAgICBjb25zdCBpc1VuYXV0aG9yaXplZCA9XG4gICAgICAgIGVycm9yLm5hbWUgPT09ICdVbmF1dGhvcml6ZWRFeGNlcHRpb24nIHx8XG4gICAgICAgIGVycm9yLm5hbWUgPT09ICdBY2Nlc3NEZW5pZWRFeGNlcHRpb24nIHx8XG4gICAgICAgIChlcnJvci5tZXNzYWdlICYmIGVycm9yLm1lc3NhZ2UuaW5jbHVkZXMoJ25vdCBhdXRob3JpemVkJykpO1xuICAgICAgY29uc3QgaXNUaHJvdHRsZWQgPVxuICAgICAgICBlcnJvci5uYW1lID09PSAnVGhyb3R0bGluZ0V4Y2VwdGlvbicgfHxcbiAgICAgICAgZXJyb3IubmFtZSA9PT0gJ1Rvb01hbnlSZXF1ZXN0c0V4Y2VwdGlvbic7XG4gICAgICBjb25zdCBpc1JldHJ5YWJsZSA9IGlzVW5hdXRob3JpemVkIHx8IGlzVGhyb3R0bGVkO1xuXG4gICAgICBjb25zdCByZW1haW5pbmdUaW1lID0gY29udGV4dC5nZXRSZW1haW5pbmdUaW1lSW5NaWxsaXMoKTtcblxuICAgICAgaWYgKGlzUmV0cnlhYmxlICYmIHJlbWFpbmluZ1RpbWUgPiBTTEVFUF9NUykge1xuICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICBgUmV0cnlhYmxlIGVycm9yIGVuY291bnRlcmVkICgke2Vycm9yLm5hbWV9KS4gQXR0ZW1wdCAke2F0dGVtcHROb30uIFNsZWVwaW5nOiAke1NMRUVQX01TIC8gMTAwMH1zIGJlZm9yZSByZXRyeWAsXG4gICAgICAgICk7XG4gICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIFNMRUVQX01TKSk7XG4gICAgICAgIC8vIENvbnRpbnVlIHRvIG5leHQgaXRlcmF0aW9uIG9mIHdoaWxlIGxvb3BcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIE5vbi1yZXRyeWFibGUgZXJyb3Igb3Igb3V0IG9mIHRpbWVcbiAgICAgICAgY29uc29sZS5sb2coJ05vbi1yZXRyeWFibGUgZXJyb3Igb3IgdGltZW91dC4gRmFpbGluZy4uLicpO1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBTdGVwIDI6IFBvbGwgZm9yIGNvbW1hbmQgY29tcGxldGlvbiB1c2luZyBnZXRDb21tYW5kSW52b2NhdGlvblxuICBsZXQgcG9sbEF0dGVtcHRObyA9IDA7XG4gIGNvbnN0IHJlc3BvbnNlRGF0YTogYW55ID0geyBDb21tYW5kSWQ6IGNvbW1hbmRJZCB9O1xuXG4gIHdoaWxlICh0cnVlKSB7XG4gICAgcG9sbEF0dGVtcHRObyArPSAxO1xuICAgIGNvbnN0IHRpbWVSZW1haW5pbmcgPSBjb250ZXh0LmdldFJlbWFpbmluZ1RpbWVJbk1pbGxpcygpO1xuICAgIGNvbnNvbGUubG9nKFxuICAgICAgYFBvbGwgYXR0ZW1wdDogJHtwb2xsQXR0ZW1wdE5vfS4gVGltZSBSZW1haW5pbmc6ICR7dGltZVJlbWFpbmluZyAvIDEwMDB9c2AsXG4gICAgKTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBpbnZvY2F0aW9uUmVzcG9uc2UgPSBhd2FpdCBzc20uc2VuZChcbiAgICAgICAgbmV3IEdldENvbW1hbmRJbnZvY2F0aW9uQ29tbWFuZCh7XG4gICAgICAgICAgQ29tbWFuZElkOiBjb21tYW5kSWQsXG4gICAgICAgICAgSW5zdGFuY2VJZDogaW5zdGFuY2VJZCxcbiAgICAgICAgfSksXG4gICAgICApO1xuXG4gICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgYGdldENvbW1hbmRJbnZvY2F0aW9uIHJlc3BvbnNlOiAke0pTT04uc3RyaW5naWZ5KGludm9jYXRpb25SZXNwb25zZSl9YCxcbiAgICAgICk7XG4gICAgICBjb25zdCBzdGF0dXMgPSBpbnZvY2F0aW9uUmVzcG9uc2UuU3RhdHVzITtcblxuICAgICAgc3dpdGNoIChzdGF0dXMpIHtcbiAgICAgICAgY2FzZSAnUGVuZGluZyc6XG4gICAgICAgIGNhc2UgJ0luUHJvZ3Jlc3MnOlxuICAgICAgICBjYXNlICdEZWxheWVkJzpcbiAgICAgICAgICBpZiAodGltZVJlbWFpbmluZyA+IFNMRUVQX01TKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgYENvbW1hbmQgJHtjb21tYW5kSWR9IHN0YXR1czogJyR7c3RhdHVzfScuIFNsZWVwaW5nOiAke1NMRUVQX01TIC8gMTAwMH1zYCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gc2V0VGltZW91dChyZXNvbHZlLCBTTEVFUF9NUykpO1xuICAgICAgICAgICAgYnJlYWs7IC8vIENvbnRpbnVlIHBvbGxpbmdcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICBgU1NNIERvY3VtZW50ICR7ZG9jdW1lbnROYW1lfSBvbiBFQzIgaW5zdGFuY2UgJHtpbnN0YW5jZUlkfSB0aW1lZCBvdXQgd2hpbGUgbGFtYmRhIHdhaXRpbmcgKHN0YXR1czogJHtzdGF0dXN9KWAsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgY2FzZSAnU3VjY2Vzcyc6XG4gICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICBgSW5zdGFuY2UgJHtpbnN0YW5jZUlkfSBzdWNjZXNzZnVsbHkgYm9vdHN0cmFwcGVkLiBDb21tYW5kICR7Y29tbWFuZElkfSBjb21wbGV0ZWQuYCxcbiAgICAgICAgICApO1xuICAgICAgICAgIHJldHVybiB7IERhdGE6IHJlc3BvbnNlRGF0YSB9O1xuICAgICAgICBjYXNlICdUaW1lZE91dCc6XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgYFNTTSBEb2N1bWVudCAke2RvY3VtZW50TmFtZX0gb24gRUMyIGluc3RhbmNlICR7aW5zdGFuY2VJZH0gdGltZWQgb3V0YCxcbiAgICAgICAgICApO1xuICAgICAgICBjYXNlICdDYW5jZWxsZWQnOlxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGBTU00gRG9jdW1lbnQgJHtkb2N1bWVudE5hbWV9IG9uIEVDMiBpbnN0YW5jZSAke2luc3RhbmNlSWR9IGNhbmNlbGxlZGAsXG4gICAgICAgICAgKTtcbiAgICAgICAgY2FzZSAnRmFpbGVkJzpcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICBgU1NNIERvY3VtZW50ICR7ZG9jdW1lbnROYW1lfSBvbiBFQzIgaW5zdGFuY2UgJHtpbnN0YW5jZUlkfSBmYWlsZWRgLFxuICAgICAgICAgICk7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgYFNTTSBEb2N1bWVudCAke2RvY3VtZW50TmFtZX0gb24gRUMyIGluc3RhbmNlICR7aW5zdGFuY2VJZH0gdW5rbm93biBzdGF0dXM6ICR7c3RhdHVzfWAsXG4gICAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgICAvLyBDaGVjayBpZiB0aGlzIGlzIGFuIGludm9jYXRpb24gbm90IGF2YWlsYWJsZSB5ZXQgZXJyb3JcbiAgICAgIGNvbnN0IHJlbWFpbmluZ1RpbWUgPSBjb250ZXh0LmdldFJlbWFpbmluZ1RpbWVJbk1pbGxpcygpO1xuXG4gICAgICBpZiAoXG4gICAgICAgIGVycm9yLm5hbWUgPT09ICdJbnZvY2F0aW9uRG9lc05vdEV4aXN0JyAmJlxuICAgICAgICByZW1haW5pbmdUaW1lID4gU0xFRVBfTVNcbiAgICAgICkge1xuICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICBgSW52b2NhdGlvbiBub3QgeWV0IGF2YWlsYWJsZS4gU2xlZXBpbmc6ICR7U0xFRVBfTVMgLyAxMDAwfXNgLFxuICAgICAgICApO1xuICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gc2V0VGltZW91dChyZXNvbHZlLCBTTEVFUF9NUykpO1xuICAgICAgICAvLyBDb250aW51ZSBwb2xsaW5nXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBOb24tcmV0cnlhYmxlIGVycm9yIG9yIG91dCBvZiB0aW1lXG4gICAgICAgIGNvbnNvbGUubG9nKCdFcnJvciBjaGVja2luZyBjb21tYW5kIHN0YXR1czonLCBlcnJvcik7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgIH1cbiAgfVxufTtcbiJdfQ==
|
|
145
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdGFsbGVyLmxhbWJkYS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pbnN0YWxsZXIvaW5zdGFsbGVyLmxhbWJkYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxvREFLNkI7QUFPN0IsTUFBTSxHQUFHLEdBQUcsSUFBSSxnQkFBRyxFQUFFLENBQUM7QUFDdEIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDO0FBRWYsTUFBTSxPQUFPLEdBQUcsS0FBSyxFQUMxQixLQUFxQixFQUNyQixPQUFnQixFQUNVLEVBQUU7SUFDNUIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsRUFBRSxHQUFHLEtBQUssRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUUzRCxJQUFJLEtBQUssQ0FBQyxXQUFXLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDbkMsYUFBYTtRQUNiLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVELG1CQUFtQjtJQUNuQixNQUFNLGtCQUFrQixHQUFHLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQztJQUNwRCxNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFDO0lBQ3ZELE1BQU0sWUFBWSxHQUFHLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLENBQUM7SUFDM0QsTUFBTSxzQkFBc0IsR0FDMUIsS0FBSyxDQUFDLGtCQUFrQixDQUFDLHNCQUFzQixDQUFDO0lBRWxELFFBQVE7SUFDUixPQUFPLENBQUMsR0FBRyxDQUFDLDRCQUE0QixFQUFFLGtCQUFrQixDQUFDLENBQUM7SUFDOUQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDbkUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsRUFBRSxLQUFLLENBQUMsa0JBQWtCLENBQUMsY0FBYyxDQUFDLENBQUM7SUFFM0UsNEJB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WSxDQUN2RSxDQUFDO2dCQUNKLEtBQUssUUFBUTtvQkFDWCxNQUFNLElBQUksS0FBSyxDQUNiLGdCQUFnQixZQUFZLG9CQUFvQixVQUFVLFNBQVMsQ0FDcEUsQ0FBQztnQkFDSjtvQkFDRSxNQUFNLElBQUksS0FBSyxDQUNiLGdCQUFnQixZQUFZLG9CQUFvQixVQUFVLG9CQUFvQixNQUFNLEVBQUUsQ0FDdkYsQ0FBQztZQUNOLENBQUM7UUFDSCxDQUFDO1FBQUMsT0FBTyxLQUFVLEVBQUUsQ0FBQztZQUNwQix5REFBeUQ7WUFDekQsTUFBTSxhQUFhLEdBQUcsT0FBTyxDQUFDLHdCQUF3QixFQUFFLENBQUM7WUFFekQsSUFDRSxLQUFLLENBQUMsSUFBSSxLQUFLLHdCQUF3QjtnQkFDdkMsYUFBYSxHQUFHLFFBQVEsRUFDeEIsQ0FBQztnQkFDRCxPQUFPLENBQUMsR0FBRyxDQUNULDJDQUEyQyxRQUFRLEdBQUcsSUFBSSxHQUFHLENBQzlELENBQUM7Z0JBQ0YsTUFBTSxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO2dCQUM5RCxtQkFBbUI7WUFDckIsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLHFDQUFxQztnQkFDckMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQ0FBZ0MsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDckQsTUFBTSxLQUFLLENBQUM7WUFDZCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7QUFDSCxDQUFDLENBQUM7QUFqTVcsUUFBQSxPQUFPLFdBaU1sQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbW1hbmQsXG4gIEdldENvbW1hbmRJbnZvY2F0aW9uQ29tbWFuZCxcbiAgU2VuZENvbW1hbmRDb21tYW5kLFxuICBTU00sXG59IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1zc20nO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnJlc29sdmVkXG4vLyBAdHMtaWdub3JlXG5pbXBvcnQgdHlwZSB7IE9uRXZlbnRSZXF1ZXN0LCBPbkV2ZW50UmVzcG9uc2UgfSBmcm9tICdhd3MtY2RrLWxpYi9jdXN0b20tcmVzb3VyY2VzL2xpYi9wcm92aWRlci1mcmFtZXdvcmsvdHlwZXMnO1xuaW1wb3J0IHsgQ29udGV4dCB9IGZyb20gJ2F3cy1sYW1iZGEnO1xuaW1wb3J0IHsgQ2xvdWRGb3JtYXRpb25DdXN0b21SZXNvdXJjZVJlc291cmNlUHJvcGVydGllc0NvbW1vbiB9IGZyb20gJ2F3cy1sYW1iZGEvdHJpZ2dlci9jbG91ZGZvcm1hdGlvbi1jdXN0b20tcmVzb3VyY2UnO1xuXG5jb25zdCBzc20gPSBuZXcgU1NNKCk7XG5jb25zdCBTTEVFUF9NUyA9IDI5MDA7XG5cbmV4cG9ydCBjb25zdCBoYW5kbGVyID0gYXN5bmMgKFxuICBldmVudDogT25FdmVudFJlcXVlc3QsXG4gIGNvbnRleHQ6IENvbnRleHQsXG4pOiBQcm9taXNlPE9uRXZlbnRSZXNwb25zZT4gPT4ge1xuICBjb25zb2xlLmxvZygnRXZlbnQ6ICVqJywgeyAuLi5ldmVudCwgUmVzcG9uc2VVUkw6ICcuLi4nIH0pO1xuXG4gIGlmIChldmVudC5SZXF1ZXN0VHlwZSAhPT0gJ0NyZWF0ZScpIHtcbiAgICAvLyBkbyBub3RoaW5nXG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgLy8gb25seSBDcmVhdGUgY2FzZVxuICBjb25zdCByZXNvdXJjZVByb3BlcnRpZXMgPSBldmVudC5SZXNvdXJjZVByb3BlcnRpZXM7XG4gIGNvbnN0IGluc3RhbmNlSWQgPSBldmVudC5SZXNvdXJjZVByb3BlcnRpZXMuSW5zdGFuY2VJZDtcbiAgY29uc3QgZG9jdW1lbnROYW1lID0gZXZlbnQuUmVzb3VyY2VQcm9wZXJ0aWVzLkRvY3VtZW50TmFtZTtcbiAgY29uc3QgY2xvdWRXYXRjaExvZ0dyb3VwTmFtZSA9XG4gICAgZXZlbnQuUmVzb3VyY2VQcm9wZXJ0aWVzLkNsb3VkV2F0Y2hMb2dHcm91cE5hbWU7XG5cbiAgLy8gZGVidWdcbiAgY29uc29sZS5sb2coJ1Jlc291cmNlUHJvcGVydGllcyByYXc6ICVqJywgcmVzb3VyY2VQcm9wZXJ0aWVzKTtcbiAgY29uc29sZS5sb2coJ0luc3RhbmNlSWQ6ICVzJywgZXZlbnQuUmVzb3VyY2VQcm9wZXJ0aWVzLkluc3RhbmNlSWQpO1xuICBjb25zb2xlLmxvZygnVlNDb2RlUGFzc3dvcmQ6ICVzJywgZXZlbnQuUmVzb3VyY2VQcm9wZXJ0aWVzLlZTQ29kZVBhc3N3b3JkKTtcblxuICAvLyB0byBiZSBhYmxlIHRvIG1vZGlmeSB0aGVtXG4gIGNvbnN0IHJlc291cmNlUHJvcGVydGllc1BhcnRpYWwgPVxuICAgIHJlc291cmNlUHJvcGVydGllcyBhcyBQYXJ0aWFsPENsb3VkRm9ybWF0aW9uQ3VzdG9tUmVzb3VyY2VSZXNvdXJjZVByb3BlcnRpZXNDb21tb24+O1xuICBjb25zb2xlLmxvZygnUmVzb3VyY2VQcm9wZXJ0aWVzIGJlZm9yZTogJWonLCByZXNvdXJjZVByb3BlcnRpZXNQYXJ0aWFsKTtcbiAgZGVsZXRlIHJlc291cmNlUHJvcGVydGllc1BhcnRpYWwuU2VydmljZVRva2VuO1xuICBpZiAocmVzb3VyY2VQcm9wZXJ0aWVzUGFydGlhbC5TZXJ2aWNlVGltZW91dCkge1xuICAgIGRlbGV0ZSByZXNvdXJjZVByb3BlcnRpZXNQYXJ0aWFsLlNlcnZpY2VUaW1lb3V0O1xuICB9XG4gIGRlbGV0ZSByZXNvdXJjZVByb3BlcnRpZXNQYXJ0aWFsLkluc3RhbmNlSWQ7XG4gIGRlbGV0ZSByZXNvdXJjZVByb3BlcnRpZXNQYXJ0aWFsLkRvY3VtZW50TmFtZTtcbiAgZGVsZXRlIHJlc291cmNlUHJvcGVydGllc1BhcnRpYWwuQ2xvdWRXYXRjaExvZ0dyb3VwTmFtZTtcbiAgaWYgKHJlc291cmNlUHJvcGVydGllc1BhcnRpYWwuUGh5c2ljYWxSZXNvdXJjZUlkKSB7XG4gICAgZGVsZXRlIHJlc291cmNlUHJvcGVydGllc1BhcnRpYWwuUGh5c2ljYWxSZXNvdXJjZUlkO1xuICB9XG5cbiAgY29uc29sZS5sb2coXG4gICAgJ1Jlc291cmNlUHJvcGVydGllcyBmaWx0ZXJlZCBhZnRlcjogJWonLFxuICAgIHJlc291cmNlUHJvcGVydGllc1BhcnRpYWwsXG4gICk7XG5cbiAgY29uc3QgcGFyYW1ldGVyczogUmVjb3JkPHN0cmluZywgc3RyaW5nW10+ID0ge307XG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHJlc291cmNlUHJvcGVydGllc1BhcnRpYWwpKSB7XG4gICAgcGFyYW1ldGVyc1trZXldID0gW3ZhbHVlXTtcbiAgfVxuICBjb25zb2xlLmxvZygnbWFwcGVkIHBhcmFtZXRlcnM6ICVqJywgcGFyYW1ldGVycyk7XG5cbiAgY29uc29sZS5sb2coXG4gICAgYFJ1bm5pbmcgU1NNIERvY3VtZW50ICcke2RvY3VtZW50TmFtZX0nIG9uIEVDMiBpbnN0YW5jZSAnJHtpbnN0YW5jZUlkfScuIExvZ2dpbmcgdG8gJyR7Y2xvdWRXYXRjaExvZ0dyb3VwTmFtZX0nIHdpdGggcGFyYW1ldGVyczogJyR7SlNPTi5zdHJpbmdpZnkocGFyYW1ldGVycyl9J2AsXG4gICk7XG5cbiAgLy8gU3RlcCAxOiBTZW5kIHRoZSBTU00gY29tbWFuZCBvbmNlIGFuZCBnZXQgdGhlIENvbW1hbmRJZFxuICBsZXQgY29tbWFuZElkOiBzdHJpbmc7XG4gIGxldCBhdHRlbXB0Tm8gPSAwO1xuXG4gIC8vIFJldHJ5IGxvb3AgZm9yIHNlbmRpbmcgdGhlIGNvbW1hbmQgKGhhbmRsZXMgSUFNIHByb3BhZ2F0aW9uIGlzc3VlcylcbiAgd2hpbGUgKHRydWUpIHtcbiAgICBhdHRlbXB0Tm8gKz0gMTtcbiAgICBjb25zdCB0aW1lUmVtYWluaW5nID0gY29udGV4dC5nZXRSZW1haW5pbmdUaW1lSW5NaWxsaXMoKTtcbiAgICBjb25zb2xlLmxvZyhcbiAgICAgIGBTZW5kIGF0dGVtcHQ6ICR7YXR0ZW1wdE5vfS4gVGltZSBSZW1haW5pbmc6ICR7dGltZVJlbWFpbmluZyAvIDEwMDB9c2AsXG4gICAgKTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHNzbS5zZW5kKFxuICAgICAgICBuZXcgU2VuZENvbW1hbmRDb21tYW5kKHtcbiAgICAgICAgICBEb2N1bWVudE5hbWU6IGRvY3VtZW50TmFtZSxcbiAgICAgICAgICBJbnN0YW5jZUlkczogW2luc3RhbmNlSWRdLFxuICAgICAgICAgIENsb3VkV2F0Y2hPdXRwdXRDb25maWc6IHtcbiAgICAgICAgICAgIENsb3VkV2F0Y2hMb2dHcm91cE5hbWU6IGNsb3VkV2F0Y2hMb2dHcm91cE5hbWUsXG4gICAgICAgICAgICBDbG91ZFdhdGNoT3V0cHV0RW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIFBhcmFtZXRlcnM6IHBhcmFtZXRlcnMsXG4gICAgICAgIH0pLFxuICAgICAgKTtcblxuICAgICAgY29uc29sZS5sb2coYHNlbmRDb21tYW5kIHJlc3BvbnNlOiAke0pTT04uc3RyaW5naWZ5KHJlc3BvbnNlKX1gKTtcbiAgICAgIGNvbnN0IGNvbW1hbmQ6IENvbW1hbmQgPSByZXNwb25zZS5Db21tYW5kITtcbiAgICAgIGNvbW1hbmRJZCA9IGNvbW1hbmQuQ29tbWFuZElkITtcbiAgICAgIGNvbnNvbGUubG9nKGBDb21tYW5kIHNlbnQgc3VjY2Vzc2Z1bGx5LiBDb21tYW5kSWQ6ICR7Y29tbWFuZElkfWApO1xuICAgICAgYnJlYWs7IC8vIFN1Y2Nlc3NmdWxseSBzZW50IGNvbW1hbmQsIGV4aXQgcmV0cnkgbG9vcFxuICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICAgIGNvbnNvbGUubG9nKCdFcnJvciBzZW5kaW5nIGNvbW1hbmQ6JywgZXJyb3IpO1xuXG4gICAgICAvLyBDaGVjayBpZiB0aGlzIGlzIGEgcmV0cnlhYmxlIGVycm9yIChJQU0gcHJvcGFnYXRpb24sIHRocm90dGxpbmcsIGV0Yy4pXG4gICAgICBjb25zdCBpc1VuYXV0aG9yaXplZCA9XG4gICAgICAgIGVycm9yLm5hbWUgPT09ICdVbmF1dGhvcml6ZWRFeGNlcHRpb24nIHx8XG4gICAgICAgIGVycm9yLm5hbWUgPT09ICdBY2Nlc3NEZW5pZWRFeGNlcHRpb24nIHx8XG4gICAgICAgIChlcnJvci5tZXNzYWdlICYmIGVycm9yLm1lc3NhZ2UuaW5jbHVkZXMoJ25vdCBhdXRob3JpemVkJykpO1xuICAgICAgY29uc3QgaXNUaHJvdHRsZWQgPVxuICAgICAgICBlcnJvci5uYW1lID09PSAnVGhyb3R0bGluZ0V4Y2VwdGlvbicgfHxcbiAgICAgICAgZXJyb3IubmFtZSA9PT0gJ1Rvb01hbnlSZXF1ZXN0c0V4Y2VwdGlvbic7XG4gICAgICBjb25zdCBpc1JldHJ5YWJsZSA9IGlzVW5hdXRob3JpemVkIHx8IGlzVGhyb3R0bGVkO1xuXG4gICAgICBjb25zdCByZW1haW5pbmdUaW1lID0gY29udGV4dC5nZXRSZW1haW5pbmdUaW1lSW5NaWxsaXMoKTtcblxuICAgICAgaWYgKGlzUmV0cnlhYmxlICYmIHJlbWFpbmluZ1RpbWUgPiBTTEVFUF9NUykge1xuICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICBgUmV0cnlhYmxlIGVycm9yIGVuY291bnRlcmVkICgke2Vycm9yLm5hbWV9KS4gQXR0ZW1wdCAke2F0dGVtcHROb30uIFNsZWVwaW5nOiAke1NMRUVQX01TIC8gMTAwMH1zIGJlZm9yZSByZXRyeWAsXG4gICAgICAgICk7XG4gICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIFNMRUVQX01TKSk7XG4gICAgICAgIC8vIENvbnRpbnVlIHRvIG5leHQgaXRlcmF0aW9uIG9mIHdoaWxlIGxvb3BcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIE5vbi1yZXRyeWFibGUgZXJyb3Igb3Igb3V0IG9mIHRpbWVcbiAgICAgICAgY29uc29sZS5sb2coJ05vbi1yZXRyeWFibGUgZXJyb3Igb3IgdGltZW91dC4gRmFpbGluZy4uLicpO1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBTdGVwIDI6IFBvbGwgZm9yIGNvbW1hbmQgY29tcGxldGlvbiB1c2luZyBnZXRDb21tYW5kSW52b2NhdGlvblxuICBsZXQgcG9sbEF0dGVtcHRObyA9IDA7XG4gIGNvbnN0IHJlc3BvbnNlRGF0YTogYW55ID0geyBDb21tYW5kSWQ6IGNvbW1hbmRJZCB9O1xuXG4gIHdoaWxlICh0cnVlKSB7XG4gICAgcG9sbEF0dGVtcHRObyArPSAxO1xuICAgIGNvbnN0IHRpbWVSZW1haW5pbmcgPSBjb250ZXh0LmdldFJlbWFpbmluZ1RpbWVJbk1pbGxpcygpO1xuICAgIGNvbnNvbGUubG9nKFxuICAgICAgYFBvbGwgYXR0ZW1wdDogJHtwb2xsQXR0ZW1wdE5vfS4gVGltZSBSZW1haW5pbmc6ICR7dGltZVJlbWFpbmluZyAvIDEwMDB9c2AsXG4gICAgKTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBpbnZvY2F0aW9uUmVzcG9uc2UgPSBhd2FpdCBzc20uc2VuZChcbiAgICAgICAgbmV3IEdldENvbW1hbmRJbnZvY2F0aW9uQ29tbWFuZCh7XG4gICAgICAgICAgQ29tbWFuZElkOiBjb21tYW5kSWQsXG4gICAgICAgICAgSW5zdGFuY2VJZDogaW5zdGFuY2VJZCxcbiAgICAgICAgfSksXG4gICAgICApO1xuXG4gICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgYGdldENvbW1hbmRJbnZvY2F0aW9uIHJlc3BvbnNlOiAke0pTT04uc3RyaW5naWZ5KGludm9jYXRpb25SZXNwb25zZSl9YCxcbiAgICAgICk7XG4gICAgICBjb25zdCBzdGF0dXMgPSBpbnZvY2F0aW9uUmVzcG9uc2UuU3RhdHVzITtcblxuICAgICAgc3dpdGNoIChzdGF0dXMpIHtcbiAgICAgICAgY2FzZSAnUGVuZGluZyc6XG4gICAgICAgIGNhc2UgJ0luUHJvZ3Jlc3MnOlxuICAgICAgICBjYXNlICdEZWxheWVkJzpcbiAgICAgICAgICBpZiAodGltZVJlbWFpbmluZyA+IFNMRUVQX01TKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgYENvbW1hbmQgJHtjb21tYW5kSWR9IHN0YXR1czogJyR7c3RhdHVzfScuIFNsZWVwaW5nOiAke1NMRUVQX01TIC8gMTAwMH1zYCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gc2V0VGltZW91dChyZXNvbHZlLCBTTEVFUF9NUykpO1xuICAgICAgICAgICAgYnJlYWs7IC8vIENvbnRpbnVlIHBvbGxpbmdcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICBgU1NNIERvY3VtZW50ICR7ZG9jdW1lbnROYW1lfSBvbiBFQzIgaW5zdGFuY2UgJHtpbnN0YW5jZUlkfSB0aW1lZCBvdXQgd2hpbGUgbGFtYmRhIHdhaXRpbmcgKHN0YXR1czogJHtzdGF0dXN9KWAsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgY2FzZSAnU3VjY2Vzcyc6XG4gICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICBgSW5zdGFuY2UgJHtpbnN0YW5jZUlkfSBzdWNjZXNzZnVsbHkgYm9vdHN0cmFwcGVkLiBDb21tYW5kICR7Y29tbWFuZElkfSBjb21wbGV0ZWQuYCxcbiAgICAgICAgICApO1xuICAgICAgICAgIHJldHVybiB7IERhdGE6IHJlc3BvbnNlRGF0YSB9O1xuICAgICAgICBjYXNlICdUaW1lZE91dCc6XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgYFNTTSBEb2N1bWVudCAke2RvY3VtZW50TmFtZX0gb24gRUMyIGluc3RhbmNlICR7aW5zdGFuY2VJZH0gdGltZWQgb3V0YCxcbiAgICAgICAgICApO1xuICAgICAgICBjYXNlICdDYW5jZWxsZWQnOlxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGBTU00gRG9jdW1lbnQgJHtkb2N1bWVudE5hbWV9IG9uIEVDMiBpbnN0YW5jZSAke2luc3RhbmNlSWR9IGNhbmNlbGxlZGAsXG4gICAgICAgICAgKTtcbiAgICAgICAgY2FzZSAnRmFpbGVkJzpcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICBgU1NNIERvY3VtZW50ICR7ZG9jdW1lbnROYW1lfSBvbiBFQzIgaW5zdGFuY2UgJHtpbnN0YW5jZUlkfSBmYWlsZWRgLFxuICAgICAgICAgICk7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgYFNTTSBEb2N1bWVudCAke2RvY3VtZW50TmFtZX0gb24gRUMyIGluc3RhbmNlICR7aW5zdGFuY2VJZH0gdW5rbm93biBzdGF0dXM6ICR7c3RhdHVzfWAsXG4gICAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgICAvLyBDaGVjayBpZiB0aGlzIGlzIGFuIGludm9jYXRpb24gbm90IGF2YWlsYWJsZSB5ZXQgZXJyb3JcbiAgICAgIGNvbnN0IHJlbWFpbmluZ1RpbWUgPSBjb250ZXh0LmdldFJlbWFpbmluZ1RpbWVJbk1pbGxpcygpO1xuXG4gICAgICBpZiAoXG4gICAgICAgIGVycm9yLm5hbWUgPT09ICdJbnZvY2F0aW9uRG9lc05vdEV4aXN0JyAmJlxuICAgICAgICByZW1haW5pbmdUaW1lID4gU0xFRVBfTVNcbiAgICAgICkge1xuICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICBgSW52b2NhdGlvbiBub3QgeWV0IGF2YWlsYWJsZS4gU2xlZXBpbmc6ICR7U0xFRVBfTVMgLyAxMDAwfXNgLFxuICAgICAgICApO1xuICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gc2V0VGltZW91dChyZXNvbHZlLCBTTEVFUF9NUykpO1xuICAgICAgICAvLyBDb250aW51ZSBwb2xsaW5nXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBOb24tcmV0cnlhYmxlIGVycm9yIG9yIG91dCBvZiB0aW1lXG4gICAgICAgIGNvbnNvbGUubG9nKCdFcnJvciBjaGVja2luZyBjb21tYW5kIHN0YXR1czonLCBlcnJvcik7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgIH1cbiAgfVxufTtcbiJdfQ==
|
|
@@ -12,11 +12,11 @@ class SecretRetrieverFunction extends lambda.Function {
|
|
|
12
12
|
super(scope, id, {
|
|
13
13
|
description: 'src/secret-retriever/secret-retriever.lambda.ts',
|
|
14
14
|
...props,
|
|
15
|
-
runtime: new lambda.Runtime('
|
|
15
|
+
runtime: new lambda.Runtime('nodejs24.x', lambda.RuntimeFamily.NODEJS),
|
|
16
16
|
handler: 'index.handler',
|
|
17
17
|
code: lambda.Code.fromAsset(path.join(__dirname, '../../assets/secret-retriever/secret-retriever.lambda')),
|
|
18
18
|
});
|
|
19
19
|
}
|
|
20
20
|
}
|
|
21
21
|
exports.SecretRetrieverFunction = SecretRetrieverFunction;
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjcmV0LXJldHJpZXZlci1mdW5jdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZWNyZXQtcmV0cmlldmVyL3NlY3JldC1yZXRyaWV2ZXItZnVuY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkVBQTZFO0FBQzdFLDZCQUE2QjtBQUM3QixpREFBaUQ7QUFTakQ7O0dBRUc7QUFDSCxNQUFhLHVCQUF3QixTQUFRLE1BQU0sQ0FBQyxRQUFRO0lBQzFELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBb0M7UUFDNUUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDZixXQUFXLEVBQUUsaURBQWlEO1lBQzlELEdBQUcsS0FBSztZQUNSLE9BQU8sRUFBRSxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLE1BQU0sQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDO1lBQ3RFLE9BQU8sRUFBRSxlQUFlO1lBQ3hCLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSx1REFBdUQsQ0FBQyxDQUFDO1NBQzNHLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQVZELDBEQVVDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gfn4gR2VuZXJhdGVkIGJ5IHByb2plbi4gVG8gbW9kaWZ5LCBlZGl0IC5wcm9qZW5yYy50cyBhbmQgcnVuIFwibnB4IHByb2plblwiLlxuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCAqIGFzIGxhbWJkYSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuXG4vKipcbiAqIFByb3BzIGZvciBTZWNyZXRSZXRyaWV2ZXJGdW5jdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNlY3JldFJldHJpZXZlckZ1bmN0aW9uUHJvcHMgZXh0ZW5kcyBsYW1iZGEuRnVuY3Rpb25PcHRpb25zIHtcbn1cblxuLyoqXG4gKiBBbiBBV1MgTGFtYmRhIGZ1bmN0aW9uIHdoaWNoIGV4ZWN1dGVzIHNyYy9zZWNyZXQtcmV0cmlldmVyL3NlY3JldC1yZXRyaWV2ZXIuXG4gKi9cbmV4cG9ydCBjbGFzcyBTZWNyZXRSZXRyaWV2ZXJGdW5jdGlvbiBleHRlbmRzIGxhbWJkYS5GdW5jdGlvbiB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzPzogU2VjcmV0UmV0cmlldmVyRnVuY3Rpb25Qcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgZGVzY3JpcHRpb246ICdzcmMvc2VjcmV0LXJldHJpZXZlci9zZWNyZXQtcmV0cmlldmVyLmxhbWJkYS50cycsXG4gICAgICAuLi5wcm9wcyxcbiAgICAgIHJ1bnRpbWU6IG5ldyBsYW1iZGEuUnVudGltZSgnbm9kZWpzMjQueCcsIGxhbWJkYS5SdW50aW1lRmFtaWx5Lk5PREVKUyksXG4gICAgICBoYW5kbGVyOiAnaW5kZXguaGFuZGxlcicsXG4gICAgICBjb2RlOiBsYW1iZGEuQ29kZS5mcm9tQXNzZXQocGF0aC5qb2luKF9fZGlybmFtZSwgJy4uLy4uL2Fzc2V0cy9zZWNyZXQtcmV0cmlldmVyL3NlY3JldC1yZXRyaWV2ZXIubGFtYmRhJykpLFxuICAgIH0pO1xuICB9XG59Il19
|
|
@@ -33,4 +33,4 @@ const handler = async (event) => {
|
|
|
33
33
|
}
|
|
34
34
|
};
|
|
35
35
|
exports.handler = handler;
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjcmV0LXJldHJpZXZlci5sYW1iZGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VjcmV0LXJldHJpZXZlci9zZWNyZXQtcmV0cmlldmVyLmxhbWJkYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw0RUFBaUU7QUFNakUsTUFBTSxjQUFjLEdBQUcsSUFBSSx1Q0FBYyxFQUFFLENBQUM7QUFFckMsTUFBTSxPQUFPLEdBQUcsS0FBSyxFQUMxQixLQUFxQixFQUNLLEVBQUU7SUFDNUIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsRUFBRSxHQUFHLEtBQUssRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUUzRCxJQUFJLEtBQUssQ0FBQyxXQUFXLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDbkMsYUFBYTtRQUNiLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVELHlCQUF5QjtJQUN6QixNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDO0lBQ3JELE9BQU8sQ0FBQyxHQUFHLENBQUMsZUFBZSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBRXhDLElBQUksQ0FBQztRQUNILE1BQU0sTUFBTSxHQUFHLE1BQU0sY0FBYyxDQUFDLGNBQWMsQ0FBQztZQUNqRCxRQUFRLEVBQUUsU0FBUztTQUNwQixDQUFDLENBQUM7UUFFSCxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsWUFBYSxDQUFDO1FBQ3pDLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFFNUMsTUFBTSxpQkFBaUIsR0FBVyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzFELE9BQU8sQ0FBQyxHQUFHLENBQUMseUJBQXlCLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztRQUUxRCxPQUFPO1lBQ0wsSUFBSSxFQUFFO2dCQUNKLFdBQVcsRUFBRSxpQkFBaUI7Z0JBQzlCLG1CQUFtQixFQUFFLGlCQUFpQixDQUFDLFFBQVE7YUFDaEQ7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDZixPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JCLE1BQU0sS0FBSyxDQUFDO0lBQ2QsQ0FBQztBQUNILENBQUMsQ0FBQztBQW5DVyxRQUFBLE9BQU8sV0FtQ2xCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2VjcmV0c01hbmFnZXIgfSBmcm9tICdAYXdzLXNkay9jbGllbnQtc2VjcmV0cy1tYW5hZ2VyJztcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW5yZXNvbHZlZFxuLy8gQHRzLWlnbm9yZVxuaW1wb3J0IHR5cGUgeyBPbkV2ZW50UmVxdWVzdCwgT25FdmVudFJlc3BvbnNlIH0gZnJvbSAnYXdzLWNkay1saWIvY3VzdG9tLXJlc291cmNlcy9saWIvcHJvdmlkZXItZnJhbWV3b3JrL3R5cGVzJztcbmltcG9ydCB7IFNlY3JldCB9IGZyb20gJy4vc2VjcmV0LXJldHJpZXZlcic7XG5cbmNvbnN0IHNlY3JldHNNYW5hZ2VyID0gbmV3IFNlY3JldHNNYW5hZ2VyKCk7XG5cbmV4cG9ydCBjb25zdCBoYW5kbGVyID0gYXN5bmMgKFxuICBldmVudDogT25FdmVudFJlcXVlc3QsXG4pOiBQcm9taXNlPE9uRXZlbnRSZXNwb25zZT4gPT4ge1xuICBjb25zb2xlLmxvZygnRXZlbnQ6ICVqJywgeyAuLi5ldmVudCwgUmVzcG9uc2VVUkw6ICcuLi4nIH0pO1xuXG4gIGlmIChldmVudC5SZXF1ZXN0VHlwZSA9PT0gJ0RlbGV0ZScpIHtcbiAgICAvLyBkbyBub3RoaW5nXG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgLy8gQ3JlYXRlIGFuZCB1cGRhdGUgY2FzZVxuICBjb25zdCBzZWNyZXRBcm4gPSBldmVudC5SZXNvdXJjZVByb3BlcnRpZXMuU2VjcmV0QXJuO1xuICBjb25zb2xlLmxvZygnc2VjcmV0QXJuOiAlaicsIHNlY3JldEFybik7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBzZWNyZXQgPSBhd2FpdCBzZWNyZXRzTWFuYWdlci5nZXRTZWNyZXRWYWx1ZSh7XG4gICAgICBTZWNyZXRJZDogc2VjcmV0QXJuLFxuICAgIH0pO1xuXG4gICAgY29uc3Qgc2VjcmV0VmFsdWUgPSBzZWNyZXQuU2VjcmV0U3RyaW5nITtcbiAgICBjb25zb2xlLmxvZygnc2VjcmV0VmFsdWU6ICVqJywgc2VjcmV0VmFsdWUpO1xuXG4gICAgY29uc3QgcGFyc2VkU2VjcmV0VmFsdWU6IFNlY3JldCA9IEpTT04ucGFyc2Uoc2VjcmV0VmFsdWUpO1xuICAgIGNvbnNvbGUubG9nKCdzZWNyZXRWYWx1ZSBpcyBKU09OOiAlaicsIHBhcnNlZFNlY3JldFZhbHVlKTtcblxuICAgIHJldHVybiB7XG4gICAgICBEYXRhOiB7XG4gICAgICAgIHNlY3JldFZhbHVlOiBwYXJzZWRTZWNyZXRWYWx1ZSxcbiAgICAgICAgc2VjcmV0UGFzc3dvcmRWYWx1ZTogcGFyc2VkU2VjcmV0VmFsdWUucGFzc3dvcmQsXG4gICAgICB9LFxuICAgIH07XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cbn07XG4iXX0=
|
package/lib/vscode-server.js
CHANGED
|
@@ -442,7 +442,7 @@ class VSCodeServer extends constructs_1.Construct {
|
|
|
442
442
|
});
|
|
443
443
|
// Associate Elastic IP with the instance
|
|
444
444
|
new ec2.CfnEIPAssociation(this, 'eip-association', {
|
|
445
|
-
|
|
445
|
+
allocationId: eip.attrAllocationId,
|
|
446
446
|
instanceId: this.instance.instanceId,
|
|
447
447
|
});
|
|
448
448
|
cdk_nag_1.NagSuppressions.addResourceSuppressions([eip], [
|
|
@@ -648,7 +648,7 @@ class VSCodeServer extends constructs_1.Construct {
|
|
|
648
648
|
}
|
|
649
649
|
exports.VSCodeServer = VSCodeServer;
|
|
650
650
|
_a = JSII_RTTI_SYMBOL_1;
|
|
651
|
-
VSCodeServer[_a] = { fqn: "@mavogel/cdk-vscode-server.VSCodeServer", version: "0.0.
|
|
651
|
+
VSCodeServer[_a] = { fqn: "@mavogel/cdk-vscode-server.VSCodeServer", version: "0.0.75" };
|
|
652
652
|
/**
|
|
653
653
|
* Tags all the resources in the construct
|
|
654
654
|
*/
|
|
@@ -690,4 +690,4 @@ class NodeTagger {
|
|
|
690
690
|
}
|
|
691
691
|
}
|
|
692
692
|
}
|
|
693
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidnNjb2RlLXNlcnZlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy92c2NvZGUtc2VydmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNkNBUXFCO0FBQ3JCLDBEQUEwRDtBQUMxRCxpREFBaUQ7QUFDakQsMERBQTBEO0FBQzFELDJDQUEyQztBQUMzQywyQ0FBMkM7QUFDM0MsbURBQW1EO0FBQ25ELGtFQUFrRTtBQUNsRSxpRUFBaUU7QUFDakUscUNBQTBDO0FBQzFDLDJDQUFtRDtBQUNuRCw4REFBMEQ7QUFDMUQsc0ZBQWlGO0FBQ2pGLHFEQUFrRDtBQUNsRCx5Q0FBNkU7QUFDN0Usc0ZBQW1GO0FBQ25GLDBFQUFzRTtBQStRdEU7O0dBRUc7QUFDSCxJQUFZLGVBb0JYO0FBcEJELFdBQVksZUFBZTtJQUN6Qjs7T0FFRztJQUNILHlDQUFzQixDQUFBO0lBRXRCOztPQUVHO0lBQ0gseUNBQXNCLENBQUE7SUFFdEI7O09BRUc7SUFDSCx5Q0FBc0IsQ0FBQTtJQUV0Qjs7T0FFRztJQUNILCtDQUE0QixDQUFBO0FBQzlCLENBQUMsRUFwQlcsZUFBZSwrQkFBZixlQUFlLFFBb0IxQjtBQUVEOztHQUVHO0FBQ0gsSUFBWSxxQkFVWDtBQVZELFdBQVkscUJBQXFCO0lBQy9COztPQUVHO0lBQ0gsb0NBQVcsQ0FBQTtJQUVYOztPQUVHO0lBQ0gsd0NBQWUsQ0FBQTtBQUNqQixDQUFDLEVBVlcscUJBQXFCLHFDQUFyQixxQkFBcUIsUUFVaEM7QUFFRDs7R0FFRztBQUNILE1BQWEsWUFBYSxTQUFRLHNCQUFTO0lBcUJ6QyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQXlCO1FBQ2pFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsV0FBVztRQUNYLE1BQU0sVUFBVSxHQUFHLEtBQUssRUFBRSxVQUFVLElBQUksYUFBYSxDQUFDO1FBQ3RELE1BQU0sWUFBWSxHQUFHLEtBQUssRUFBRSxZQUFZLElB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LENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQztZQUNqQyxRQUFRLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRW5DLGlEQUFpRDtRQUNqRCxNQUFNLHNCQUFzQixHQUMxQixRQUFRLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQztZQUNoQyxRQUFRLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQztZQUMvQixRQUFRLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDO1lBQ25DLFFBQVEsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDO1lBQzdCLFFBQVEsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDO1lBQzdCLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO1lBQ3pCLFFBQVEsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFOUIsSUFBSSxtQkFBbUIsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7WUFDbkQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRTtnQkFDakQsSUFBSSxDQUFDO29CQUNILGtCQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQ2hDLENBQUM7Z0JBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztvQkFDZixpQ0FBaUM7Z0JBQ25DLENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBc3BlY3RzLFxuICBDZm5PdXRwdXQsXG4gIER1cmF0aW9uLFxuICBGbixcbiAgSUFzcGVjdCxcbiAgU3RhY2ssXG4gIFRhZ3MsXG59IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCAqIGFzIGFjbSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY2VydGlmaWNhdGVtYW5hZ2VyJztcbmltcG9ydCAqIGFzIGNmIGZyb20gJ2F3cy1jZGstbGliL2F3cy1jbG91ZGZyb250JztcbmltcG9ydCAqIGFzIGNmbyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY2xvdWRmcm9udC1vcmlnaW5zJztcbmltcG9ydCAqIGFzIGVjMiBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWMyJztcbmltcG9ydCAqIGFzIGlhbSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCAqIGFzIHJvdXRlNTMgZnJvbSAnYXdzLWNkay1saWIvYXdzLXJvdXRlNTMnO1xuaW1wb3J0ICogYXMgcm91dGU1M3RhcmdldHMgZnJvbSAnYXdzLWNkay1saWIvYXdzLXJvdXRlNTMtdGFyZ2V0cyc7XG5pbXBvcnQgKiBhcyBzZWNyZXRzbWFuYWdlciBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc2VjcmV0c21hbmFnZXInO1xuaW1wb3J0IHsgTmFnU3VwcHJlc3Npb25zIH0gZnJvbSAnY2RrLW5hZyc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QsIElDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IElkbGVNb25pdG9yIH0gZnJvbSAnLi9pZGxlLW1vbml0b3IvaWRsZS1tb25pdG9yJztcbmltcG9ydCB7IElkbGVNb25pdG9yRW5hYmxlciB9IGZyb20gJy4vaWRsZS1tb25pdG9yLWVuYWJsZXIvaWRsZS1tb25pdG9yLWVuYWJsZXInO1xuaW1wb3J0IHsgSW5zdGFsbGVyIH0gZnJvbSAnLi9pbnN0YWxsZXIvaW5zdGFsbGVyJztcbmltcG9ydCB7IGdldEFtaVNTTVBhcmFtZXRlckZvckxpbnV4QXJjaGl0ZWN0dXJlQW5kRmxhdm9yIH0gZnJvbSAnLi9tYXBwaW5ncyc7XG5pbXBvcnQgeyBBd3NNYW5hZ2VkUHJlZml4TGlzdCB9IGZyb20gJy4vcHJlZml4bGlzdC1yZXRyaWV2ZXIvcHJlZml4bGlzdC1yZXRyaWV2ZXInO1xuaW1wb3J0IHsgU2VjcmV0UmV0cmlldmVyIH0gZnJvbSAnLi9zZWNyZXQtcmV0cmlldmVyL3NlY3JldC1yZXRyaWV2ZXInO1xuXG4vKipcbiAqIEN1c3RvbSBpbnN0YWxsYXRpb24gc3RlcCBmb3IgU1NNIGRvY3VtZW50XG4gKiBBbGxvd3MgdXNlcnMgdG8gZXh0ZW5kIHRoZSBpbnN0YWxsZXIgd2l0aCBhZGRpdGlvbmFsIHNoZWxsIGNvbW1hbmRzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ3VzdG9tSW5zdGFsbFN0ZXAge1xuICAvKipcbiAgICogTmFtZSBvZiB0aGUgaW5zdGFsbGF0aW9uIHN0ZXBcbiAgICogTXVzdCBiZSB1bmlxdWUgd2l0aGluIHRoZSBTU00gZG9jdW1lbnRcbiAgICpcbiAgICogQGV4YW1wbGUgJ0luc3RhbGxDdXN0b21Ub29sJ1xuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTaGVsbCBjb21tYW5kcyB0byBydW4gZm9yIHRoaXMgc3RlcFxuICAgKiBFYWNoIGNvbW1hbmQgd2lsbCBiZSBleGVjdXRlZCBpbiBzZXF1ZW5jZVxuICAgKlxuICAgKiBAZXhhbXBsZSBbJyMhL2Jpbi9iYXNoJywgJ2VjaG8gXCJJbnN0YWxsaW5nIGN1c3RvbSB0b29sXCInLCAnYXB0LWdldCBpbnN0YWxsIC15IG15LXRvb2wnXVxuICAgKi9cbiAgcmVhZG9ubHkgY29tbWFuZHM6IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIHRoZSBWU0NvZGVTZXJ2ZXIgY29uc3RydWN0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVlNDb2RlU2VydmVyUHJvcHMge1xuICAvKipcbiAgICogVXNlck5hbWUgZm9yIFZTQ29kZSBTZXJ2ZXJcbiAgICpcbiAgICogQGRlZmF1bHQgLSBwYXJ0aWNpcGFudFxuICAgKi9cbiAgcmVhZG9ubHkgdnNjb2RlVXNlcj86IHN0cmluZztcblxuICAvKipcbiAgICogUGFzc3dvcmQgZm9yIFZTQ29kZSBTZXJ2ZXJcbiAgICpcbiAgICogQGRlZmF1bHQgLSBlbXB0eSBhbmQgd2lsbCB0aGVuIGJlIGdlbmVyYXRlZFxuICAgKi9cbiAgcmVhZG9ubHkgdnNjb2RlUGFzc3dvcmQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFZTQ29kZSBTZXJ2ZXIgRUMyIGluc3RhbmNlIG5hbWVcbiAgICpcbiAgICogQGRlZmF1bHQgLSBWU0NvZGVTZXJ2ZXJcbiAgICovXG4gIHJlYWRvbmx5IGluc3RhbmNlTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogVlNDb2RlIFNlcnZlciBFQzIgaW5zdGFuY2Ugdm9sdW1lIHNpemUgaW4gR0JcbiAgICpcbiAgICogQGRlZmF1bHQgLSA0MFxuICAgKi9cbiAgcmVhZG9ubHkgaW5zdGFuY2VWb2x1bWVTaXplPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBWU0NvZGUgU2VydmVyIEVDMiBpbnN0YW5jZSBjbGFzc1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIG03Z1xuICAgKi9cbiAgcmVhZG9ubHkgaW5zdGFuY2VDbGFzcz86IGVjMi5JbnN0YW5jZUNsYXNzO1xuXG4gIC8qKlxuICAgKiBWU0NvZGUgU2VydmVyIEVDMiBpbnN0YW5jZSBzaXplXG4gICAqXG4gICAqIEBkZWZhdWx0IC0geGxhcmdlXG4gICAqL1xuICByZWFkb25seSBpbnN0YW5jZVNpemU/OiBlYzIuSW5zdGFuY2VTaXplO1xuXG4gIC8qKlxuICAgKiBWU0NvZGUgU2VydmVyIEVDMiBvcGVyYXRpbmcgc3lzdGVtXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gVWJ1bnR1LTI0XG4gICAqL1xuICByZWFkb25seSBpbnN0YW5jZU9wZXJhdGluZ1N5c3RlbT86IExpbnV4Rmxhdm9yVHlwZTtcblxuICAvKipcbiAgICogVlNDb2RlIFNlcnZlciBFQzIgY3B1IGFyY2hpdGVjdHVyZSBmb3IgdGhlIG9wZXJhdGluZyBzeXN0ZW1cbiAgICpcbiAgICogQGRlZmF1bHQgLSBhcm1cbiAgICovXG4gIHJlYWRvbmx5IGluc3RhbmNlQ3B1QXJjaGl0ZWN0dXJlPzogTGludXhBcmNoaXRlY3R1cmVUeXBlO1xuXG4gIC8qKlxuICAgKiBGb2xkZXIgdG8gb3BlbiBpbiBWUyBDb2RlIHNlcnZlclxuICAgKlxuICAgKiBAZGVmYXVsdCAtIC9Xb3Jrc2hvcFxuICAgKi9cbiAgcmVhZG9ubHkgaG9tZUZvbGRlcj86IHN0cmluZztcblxuICAvKipcbiAgICogQmFzZSBwYXRoIGZvciB0aGUgYXBwbGljYXRpb24gdG8gYmUgYWRkZWQgdG8gTmdpbnggc2l0ZXMtYXZhaWxhYmxlIGxpc3RcbiAgICpcbiAgICogQGRlZmF1bHQgLSBhcHBcbiAgICovXG4gIHJlYWRvbmx5IGRldlNlcnZlckJhc2VQYXRoPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBQb3J0IGZvciB0aGUgRGV2U2VydmVyXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gODA4MVxuICAgKi9cbiAgcmVhZG9ubHkgZGV2U2VydmVyUG9ydD86IG51bWJlcjtcblxuICAvKipcbiAgICogQWRkaXRpb25hbCBpbnN0YW5jZSByb2xlIHBvbGljaWVzXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gW11cbiAgICovXG4gIHJlYWRvbmx5IGFkZGl0aW9uYWxJbnN0YW5jZVJvbGVQb2xpY2llcz86IGlhbS5Qb2xpY3lTdGF0ZW1lbnRbXTtcblxuICAvKipcbiAgICogQWRkaXRpb25hbCB0YWdzIHRvIGFkZCB0byB0aGUgaW5zdGFuY2VcbiAgICpcbiAgICogQGRlZmF1bHQgLSB7fVxuICAgKi9cbiAgcmVhZG9ubHkgYWRkaXRpb25hbFRhZ3M/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gIC8qKlxuICAgKiBDdXN0b20gZG9tYWluIG5hbWUgZm9yIHRoZSBWUyBDb2RlIHNlcnZlclxuICAgKiBXaGVuIHByb3ZpZGVkLCBjcmVhdGVzIGEgQ2xvdWRGcm9udCBkaXN0cmlidXRpb24gd2l0aCB0aGlzIGRvbWFpbiBuYW1lXG4gICAqIGFuZCBzZXRzIHVwIFJvdXRlNTMgQSByZWNvcmQgcG9pbnRpbmcgdG8gdGhlIGRpc3RyaWJ1dGlvblxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHVzZXMgQ2xvdWRGcm9udCBkZWZhdWx0IGRvbWFpblxuICAgKi9cbiAgcmVhZG9ubHkgZG9tYWluTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogUm91dGU1MyBob3N0ZWQgem9uZSBJRCBmb3IgdGhlIGRvbWFpblxuICAgKiBSZXF1aXJlZCB3aGVuIHVzaW5nIGF1dG9DcmVhdGVDZXJ0aWZpY2F0ZVxuICAgKiBJZiBub3QgcHJvdmlkZWQsIHdpbGwgYXR0ZW1wdCB0byBsb29rdXAgaG9zdGVkIHpvbmUgZnJvbSBkb21haW4gbmFtZVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGF1dG8tZGlzY292ZXIgZnJvbSBkb21haW4gbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgaG9zdGVkWm9uZUlkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBUk4gb2YgZXhpc3RpbmcgQUNNIGNlcnRpZmljYXRlIGZvciB0aGUgZG9tYWluXG4gICAqIENlcnRpZmljYXRlIG11c3QgYmUgaW4gdXMtZWFzdC0xIHJlZ2lvbiBmb3IgQ2xvdWRGcm9udFxuICAgKiBDYW5ub3QgYmUgdXNlZCB0b2dldGhlciB3aXRoIGF1dG9DcmVhdGVDZXJ0aWZpY2F0ZVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGF1dG8tY3JlYXRlIGNlcnRpZmljYXRlIGlmIGF1dG9DcmVhdGVDZXJ0aWZpY2F0ZSBpcyB0cnVlXG4gICAqL1xuICByZWFkb25seSBjZXJ0aWZpY2F0ZUFybj86IHN0cmluZztcblxuICAvKipcbiAgICogQXV0by1jcmVhdGUgQUNNIGNlcnRpZmljYXRlIHdpdGggRE5TIHZhbGlkYXRpb24gaW4gdXMtZWFzdC0xIHJlZ2lvblxuICAgKiBSZXF1aXJlcyBob3N0ZWRab25lSWQgdG8gYmUgcHJvdmlkZWQgZm9yIEROUyB2YWxpZGF0aW9uXG4gICAqIENhbm5vdCBiZSB1c2VkIHRvZ2V0aGVyIHdpdGggY2VydGlmaWNhdGVBcm5cbiAgICogQ2VydGlmaWNhdGUgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNyZWF0ZWQgaW4gdXMtZWFzdC0xIGFzIHJlcXVpcmVkIGJ5IENsb3VkRnJvbnRcbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGF1dG9DcmVhdGVDZXJ0aWZpY2F0ZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEVuYWJsZSBhdXRvbWF0aWMgaW5zdGFuY2Ugc3RvcCB3aGVuIGlkbGVcbiAgICogTW9uaXRvcnMgQ2xvdWRGcm9udCBtZXRyaWNzIGFuZCBzdG9wcyB0aGUgRUMyIGluc3RhbmNlIGFmdGVyIHNwZWNpZmllZCBpZGxlIHRpbWVcbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGVuYWJsZUF1dG9TdG9wPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogTWludXRlcyBvZiBpbmFjdGl2aXR5IGJlZm9yZSBzdG9wcGluZyB0aGUgaW5zdGFuY2VcbiAgICogT25seSBhcHBsaWVzIHdoZW4gZW5hYmxlQXV0b1N0b3AgaXMgdHJ1ZVxuICAgKlxuICAgKiBAZGVmYXVsdCAzMFxuICAgKi9cbiAgcmVhZG9ubHkgaWRsZVRpbWVvdXRNaW51dGVzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBIb3cgb2Z0ZW4gdG8gY2hlY2sgZm9yIGlkbGUgYWN0aXZpdHkgKGluIG1pbnV0ZXMpXG4gICAqIE9ubHkgYXBwbGllcyB3aGVuIGVuYWJsZUF1dG9TdG9wIGlzIHRydWVcbiAgICpcbiAgICogQGRlZmF1bHQgNSAtIENoZWNrIGV2ZXJ5IDUgbWludXRlc1xuICAgKi9cbiAgcmVhZG9ubHkgaWRsZUNoZWNrSW50ZXJ2YWxNaW51dGVzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBTa2lwIGluc3RhbmNlIHN0YXR1cyBjaGVja3MgaW4gSWRsZU1vbml0b3JcbiAgICogV2hlbiB0cnVlLCBJZGxlTW9uaXRvciB3aWxsIHN0b3AgaWRsZSBpbnN0YW5jZXMgZXZlbiBpZiBzdGF0dXMgY2hlY2tzIGhhdmVuJ3QgcGFzc2VkXG4gICAqIFRoaXMgaXMgdXNlZnVsIGZvciBpbnRlZ3JhdGlvbiB0ZXN0cyB3aGVyZSBzdGF0dXMgY2hlY2sgaW5pdGlhbGl6YXRpb24gdGltZVxuICAgKiBleGNlZWRzIHRoZSB0ZXN0IHRpbWVvdXQgbGltaXRzXG4gICAqXG4gICAqIFdBUk5JTkc6IEZvciB0ZXN0aW5nIG9ubHkgLSBpbiBwcm9kdWN0aW9uLCB5b3Ugc2hvdWxkIHdhaXQgZm9yIHN0YXR1cyBjaGVja3NcbiAgICogdG8gcGFzcyBiZWZvcmUgc3RvcHBpbmcgaW5zdGFuY2VzIHRvIGF2b2lkIHN0b3BwaW5nIHVuaGVhbHRoeSBpbnN0YW5jZXNcbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHNraXBTdGF0dXNDaGVja3M/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBSZW1vdGUgZ2l0IHJlcG9zaXRvcnkgVVJMIHRvIGNsb25lIGludG8gdGhlIGhvbWUgZm9sZGVyLlxuICAgKlxuICAgKiBJZiBwcm92aWRlZCwgdGhlIHJlcG9zaXRvcnkgd2lsbCBiZSBjbG9uZWQgaW50byB0aGUgdXNlcidzIGhvbWUgZm9sZGVyIGR1cmluZyBpbnN0YW5jZSBzZXR1cC5cbiAgICogVXNlZnVsIGZvciBwcmUtcG9wdWxhdGluZyB3b3Jrc2hvcCBlbnZpcm9ubWVudHMgd2l0aCBzdGFydGVyIGNvZGUuXG4gICAqXG4gICAqIEBleGFtcGxlICdodHRwczovL2dpdGh1Yi5jb20vYXdzLXNhbXBsZXMvbXktd29ya3Nob3AtcmVwby5naXQnXG4gICAqIEBkZWZhdWx0IC0gbm8gcmVwbyBjbG9uZWRcbiAgICovXG4gIHJlYWRvbmx5IHJlcG9Vcmw/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFMzIHBhdGggdG8gYSB6aXAgZmlsZSBjb250YWluaW5nIGFzc2V0cyB0byBleHRyYWN0IGludG8gdGhlIGhvbWUgZm9sZGVyLlxuICAgKlxuICAgKiBUaGUgemlwIGNvbnRlbnRzIHdpbGwgYmUgZXh0cmFjdGVkIHRvIHRoZSB1c2VyJ3MgaG9tZSBmb2xkZXIgYW5kIGNvbW1pdHRlZCB0byBnaXQuXG4gICAqIFVzZSB0aGlzIHRvIHByb3ZpZGUgd29ya3Nob3AgbWF0ZXJpYWxzLCBzYW1wbGUgZGF0YSwgb3IgY29uZmlndXJhdGlvbiBmaWxlcy5cbiAgICpcbiAgICogQGV4YW1wbGUgJ215LXdvcmtzaG9wLWJ1Y2tldC9hc3NldHMvd29ya3Nob3AtbWF0ZXJpYWxzLnppcCdcbiAgICogQGRlZmF1bHQgLSBubyBhc3NldHMgZG93bmxvYWRlZFxuICAgKi9cbiAgcmVhZG9ubHkgYXNzZXRaaXBTM1BhdGg/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFMzIHBhdGggdG8gYSB6aXAgZmlsZSBjb250YWluaW5nIGdpdCBicmFuY2hlcyB0byBjcmVhdGUgaW4gdGhlIGhvbWUgZm9sZGVyIHJlcG9zaXRvcnkuXG4gICAqXG4gICAqIEVhY2ggdG9wLWxldmVsIGZvbGRlciBpbiB0aGUgemlwIGJlY29tZXMgYSBzZXBhcmF0ZSBnaXQgYnJhbmNoIHdpdGggdGhhdCBmb2xkZXIncyBjb250ZW50cy5cbiAgICogSWRlYWwgZm9yIGNyZWF0aW5nIHN0ZXAtYnktc3RlcCB3b3Jrc2hvcCBicmFuY2hlcyAoZS5nLiwgc3RlcC0xLCBzdGVwLTIsIHNvbHV0aW9uKS5cbiAgICpcbiAgICogQGV4YW1wbGUgJ215LXdvcmtzaG9wLWJ1Y2tldC9icmFuY2hlcy9sYWItYnJhbmNoZXMuemlwJyAoY29udGFpbmluZyBmb2xkZXJzOiBzdGVwLTEvLCBzdGVwLTIvLCBzb2x1dGlvbi8pXG4gICAqIEBkZWZhdWx0IC0gbm8gYnJhbmNoZXMgY3JlYXRlZFxuICAgKi9cbiAgcmVhZG9ubHkgYnJhbmNoWmlwUzNQYXRoPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTMyBwYXRoIHRvIGEgemlwIGZpbGUgY29udGFpbmluZyBtdWx0aXBsZSBmb2xkZXJzIHRvIGNyZWF0ZSBhcyBzZXBhcmF0ZSBnaXQgcmVwb3NpdG9yaWVzLlxuICAgKlxuICAgKiBFYWNoIHRvcC1sZXZlbCBmb2xkZXIgaW4gdGhlIHppcCBiZWNvbWVzIGEgc2VwYXJhdGUgc3ViZm9sZGVyIGluIHRoZSBwYXJlbnQgZGlyZWN0b3J5LFxuICAgKiBpbml0aWFsaXplZCBhcyBpdHMgb3duIGdpdCByZXBvc2l0b3J5LiBVc2VmdWwgZm9yIG11bHRpLXByb2plY3Qgd29ya3Nob3BzLlxuICAgKlxuICAgKiBAZXhhbXBsZSAnbXktd29ya3Nob3AtYnVja2V0L2ZvbGRlcnMvd29ya3Nob3AtcHJvamVjdHMuemlwJyAoY29udGFpbmluZyBmb2xkZXJzOiBmcm9udGVuZC8sIGJhY2tlbmQvLCBpbmZyYXN0cnVjdHVyZS8pXG4gICAqIEBkZWZhdWx0IC0gbm8gZm9sZGVycyBjcmVhdGVkXG4gICAqL1xuICByZWFkb25seSBmb2xkZXJaaXBTM1BhdGg/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEN1c3RvbSBpbnN0YWxsYXRpb24gc3RlcHMgdG8gZXh0ZW5kIHRoZSBTU00gZG9jdW1lbnRcbiAgICpcbiAgICogQWxsb3dzIHlvdSB0byBhZGQgYWRkaXRpb25hbCBzaGVsbCBjb21tYW5kcyB0aGF0IHJ1biBhZnRlciB0aGUgc3RhbmRhcmQgaW5zdGFsbGF0aW9uIHN0ZXBzLlxuICAgKiBVc2VmdWwgZm9yIGluc3RhbGxpbmcgd29ya3Nob3Atc3BlY2lmaWMgdG9vbHMsIGNvbmZpZ3VyaW5nIGN1c3RvbSBlbnZpcm9ubWVudHMsIG9yIHJ1bm5pbmdcbiAgICogc2V0dXAgc2NyaXB0cy5cbiAgICpcbiAgICogRWFjaCBzdGVwIHdpbGwgYmUgZXhlY3V0ZWQgaW4gdGhlIG9yZGVyIHByb3ZpZGVkLCBhZnRlciBhbGwgc3RhbmRhcmQgaW5zdGFsbGF0aW9uIHN0ZXBzIGNvbXBsZXRlLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBjdXN0b21JbnN0YWxsU3RlcHM6IFtcbiAgICogICB7XG4gICAqICAgICBuYW1lOiAnSW5zdGFsbEN1c3RvbVRvb2wnLFxuICAgKiAgICAgY29tbWFuZHM6IFtcbiAgICogICAgICAgJyMhL2Jpbi9iYXNoJyxcbiAgICogICAgICAgJ2VjaG8gXCJJbnN0YWxsaW5nIG15IGN1c3RvbSB0b29sXCInLFxuICAgKiAgICAgICAnY3VybCAtTyBodHRwczovL2V4YW1wbGUuY29tL3Rvb2wuc2gnLFxuICAgKiAgICAgICAnYmFzaCB0b29sLnNoJyxcbiAgICogICAgIF0sXG4gICAqICAgfSxcbiAgICogICB7XG4gICAqICAgICBuYW1lOiAnQ29uZmlndXJlV29ya3Nob3BFbnYnLFxuICAgKiAgICAgY29tbWFuZHM6IFtcbiAgICogICAgICAgJyMhL2Jpbi9iYXNoJyxcbiAgICogICAgICAgJ2VjaG8gXCJleHBvcnQgTVlfVkFSPXZhbHVlXCIgPj4gL2hvbWUvcGFydGljaXBhbnQvLmJhc2hyYycsXG4gICAqICAgICBdLFxuICAgKiAgIH0sXG4gICAqIF1cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBjdXN0b20gaW5zdGFsbGF0aW9uIHN0ZXBzXG4gICAqL1xuICByZWFkb25seSBjdXN0b21JbnN0YWxsU3RlcHM/OiBDdXN0b21JbnN0YWxsU3RlcFtdO1xufVxuXG4vKipcbiAqIFRoZSBmbGF2b3Igb2YgbGludXggeW91IHdhbnQgdG8gcnVuIHZzY29kZSBzZXJ2ZXIgb25cbiAqL1xuZXhwb3J0IGVudW0gTGludXhGbGF2b3JUeXBlIHtcbiAgLyoqXG4gICAqIFVidW50dSAyMlxuICAgKi9cbiAgVUJVTlRVXzIyID0gJ3VidW50dTIyJyxcblxuICAvKipcbiAgICogVWJ1bnR1IDI0XG4gICAqL1xuICBVQlVOVFVfMjQgPSAndWJ1bnR1MjQnLFxuXG4gIC8qKlxuICAgKiBVYnVudHUgMjVcbiAgICovXG4gIFVCVU5UVV8yNSA9ICd1YnVudHUyNScsXG5cbiAgLyoqXG4gICAqIEFtYXpvbiBMaW51eCAyMDIzXG4gICAqL1xuICBBTUFaT05fTElOVVhfMjAyMyA9ICdhbDIwMjMnLFxufVxuXG4vKipcbiAqIFRoZSBhcmNoaXRlY3R1cmUgb2YgdGhlIGNwdSB5b3Ugd2FudCB0byBydW4gdnNjb2RlIHNlcnZlciBvblxuICovXG5leHBvcnQgZW51bSBMaW51eEFyY2hpdGVjdHVyZVR5cGUge1xuICAvKipcbiAgICogQVJNIGFyY2hpdGVjdHVyZVxuICAgKi9cbiAgQVJNID0gJ2FybScsXG5cbiAgLyoqXG4gICAqIEFNRDY0IGFyY2hpdGVjdHVyZVxuICAgKi9cbiAgQU1ENjQgPSAnYW1kNjQnLFxufVxuXG4vKipcbiAqIFZTQ29kZVNlcnZlciAtIHNwaW4gaXQgdXAgaW4gdW5kZXIgMTAgbWludXRlc1xuICovXG5leHBvcnQgY2xhc3MgVlNDb2RlU2VydmVyIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBkb21haW4gdGhlIHNlcnZlciBpcyByZWFjaGFibGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBkb21haW5OYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwYXNzd29yZCB0byBsb2dpbiB0byB0aGUgc2VydmVyXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcGFzc3dvcmQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIEVDMiBpbnN0YW5jZSBydW5uaW5nIFZTIENvZGUgU2VydmVyXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgaW5zdGFuY2U6IGVjMi5JSW5zdGFuY2U7XG5cbiAgLyoqXG4gICAqIFRoZSBJZGxlTW9uaXRvciBjb25zdHJ1Y3QgKG9ubHkgcHJlc2VudCBpZiBlbmFibGVBdXRvU3RvcCBpcyB0cnVlKVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGlkbGVNb25pdG9yPzogSWRsZU1vbml0b3I7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM/OiBWU0NvZGVTZXJ2ZXJQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICAvLyBkZWZhdWx0c1xuICAgIGNvbnN0IHZzQ29kZVVzZXIgPSBwcm9wcz8udnNjb2RlVXNlciA/PyAncGFydGljaXBhbnQnO1xuICAgIGNvbnN0IGluc3RhbmNlTmFtZSA9IHByb3BzPy5pbnN0YW5jZU5hbWUgPz8gJ1ZTQ29kZVNlcnZlcic7XG4gICAgY29uc3QgaW5zdGFuY2VWb2x1bWVTaXplID0gcHJvcHM/Lmluc3RhbmNlVm9sdW1lU2l6ZSA/PyA0MDtcbiAgICBjb25zdCBob21lRm9sZGVyID0gcHJvcHM/LmhvbWVGb2xkZXIgPz8gJy9Xb3Jrc2hvcCc7XG4gICAgY29uc3QgaW5zdGFuY2VDbGFzcyA9IHByb3BzPy5pbnN0YW5jZUNsYXNzID8/IGVjMi5JbnN0YW5jZUNsYXNzLk03RztcbiAgICBjb25zdCBpbnN0YW5jZVNpemUgPSBwcm9wcz8uaW5zdGFuY2VTaXplID8/IGVjMi5JbnN0YW5jZVNpemUuWExBUkdFO1xuICAgIGNvbnN0IGluc3RhbmNlVHlwZSA9IGVjMi5JbnN0YW5jZVR5cGUub2YoaW5zdGFuY2VDbGFzcywgaW5zdGFuY2VTaXplKTtcbiAgICBjb25zdCBpbnN0YW5jZU9wZXJhdGluZ1N5c3RlbSA9XG4gICAgICBwcm9wcz8uaW5zdGFuY2VPcGVyYXRpbmdTeXN0ZW0gPz8gTGludXhGbGF2b3JUeXBlLlVCVU5UVV8yNDtcbiAgICBjb25zdCBpbnN0YW5jZUNwdUFyY2hpdGVjdHVyZSA9XG4gICAgICBwcm9wcz8uaW5zdGFuY2VDcHVBcmNoaXRlY3R1cmUgPz8gTGludXhBcmNoaXRlY3R1cmVUeXBlLkFSTTtcbiAgICBjb25zdCBtYWNoaW5lSW1hZ2VGcm9tU3NtUGFyYW1ldGVyID1cbiAgICAgIGdldEFtaVNTTVBhcmFtZXRlckZvckxpbnV4QXJjaGl0ZWN0dXJlQW5kRmxhdm9yKFxuICAgICAgICBpbnN0YW5jZUNwdUFyY2hpdGVjdHVyZSxcbiAgICAgICAgaW5zdGFuY2VPcGVyYXRpbmdTeXN0ZW0sXG4gICAgICApO1xuICAgIGNvbnN0IGFkZGl0aW9uYWxJbnN0YW5jZVJvbGVQb2xpY2llcyA9XG4gICAgICBwcm9wcz8uYWRkaXRpb25hbEluc3RhbmNlUm9sZVBvbGljaWVzID8/IFtdO1xuICAgIGNvbnN0IGFkZGl0aW9uYWxUYWdzID0gcHJvcHM/LmFkZGl0aW9uYWxUYWdzID8/IHt9O1xuICAgIGNvbnN0IGRlZmF1bHRUYWdzID0geyBhcHA6ICd2c2NvZGUtc2VydmVyJyB9O1xuXG4gICAgY29uc3QgbWVyZ2VkVGFncyA9IHsgLi4uZGVmYXVsdFRhZ3MsIC4uLmFkZGl0aW9uYWxUYWdzIH07XG4gICAgQXNwZWN0cy5vZih0aGlzKS5hZGQobmV3IE5vZGVUYWdnZXIobWVyZ2VkVGFncyksIHsgcHJpb3JpdHk6IDE1MCB9KTtcblxuICAgIC8vIFZhbGlkYXRlIGRvbWFpbiBjb25maWd1cmF0aW9uXG4gICAgY29uc3QgZG9tYWluTmFtZSA9IHByb3BzPy5kb21haW5OYW1lO1xuICAgIGNvbnN0IGhvc3RlZFpvbmVJZCA9IHByb3BzPy5ob3N0ZWRab25lSWQ7XG4gICAgY29uc3QgY2VydGlmaWNhdGVBcm4gPSBwcm9wcz8uY2VydGlmaWNhdGVBcm47XG4gICAgY29uc3QgYXV0b0NyZWF0ZUNlcnRpZmljYXRlID0gcHJvcHM/LmF1dG9DcmVhdGVDZXJ0aWZpY2F0ZSA/PyBmYWxzZTtcblxuICAgIGlmIChkb21haW5OYW1lKSB7XG4gICAgICAvLyBWYWxpZGF0ZSB0aGF0IGVpdGhlciBjZXJ0aWZpY2F0ZUFybiBvciBhdXRvQ3JlYXRlQ2VydGlmaWNhdGUgaXMgcHJvdmlkZWRcbiAgICAgIGlmICghY2VydGlmaWNhdGVBcm4gJiYgIWF1dG9DcmVhdGVDZXJ0aWZpY2F0ZSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgJ1doZW4gZG9tYWluTmFtZSBpcyBwcm92aWRlZCwgZWl0aGVyIGNlcnRpZmljYXRlQXJuIG9yIGF1dG9DcmVhdGVDZXJ0aWZpY2F0ZSBtdXN0IGJlIHNwZWNpZmllZCcsXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIC8vIFZhbGlkYXRlIHRoYXQgYm90aCBjZXJ0aWZpY2F0ZUFybiBhbmQgYXV0b0NyZWF0ZUNlcnRpZmljYXRlIGFyZSBub3QgcHJvdmlkZWQgdG9nZXRoZXJcbiAgICAgIGlmIChjZXJ0aWZpY2F0ZUFybiAmJiBhdXRvQ3JlYXRlQ2VydGlmaWNhdGUpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICdDYW5ub3Qgc3BlY2lmeSBib3RoIGNlcnRpZmljYXRlQXJuIGFuZCBhdXRvQ3JlYXRlQ2VydGlmaWNhdGUuIENob29zZSBvbmUuJyxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgLy8gVmFsaWRhdGUgdGhhdCBob3N0ZWRab25lSWQgaXMgcHJvdmlkZWQgd2hlbiBhdXRvQ3JlYXRlQ2VydGlmaWNhdGUgaXMgdHJ1ZVxuICAgICAgaWYgKGF1dG9DcmVhdGVDZXJ0aWZpY2F0ZSAmJiAhaG9zdGVkWm9uZUlkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAnaG9zdGVkWm9uZUlkIGlzIHJlcXVpcmVkIHdoZW4gYXV0b0NyZWF0ZUNlcnRpZmljYXRlIGlzIHRydWUnLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBWYWxpZGF0ZSB0aGF0IGRvbWFpbi1yZWxhdGVkIHByb3BzIGFyZSBub3QgcHJvdmlkZWQgd2l0aG91dCBkb21haW5OYW1lXG4gICAgICBpZiAoaG9zdGVkWm9uZUlkIHx8IGNlcnRpZmljYXRlQXJuIHx8IGF1dG9DcmVhdGVDZXJ0aWZpY2F0ZSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgJ2hvc3RlZFpvbmVJZCwgY2VydGlmaWNhdGVBcm4sIGFuZCBhdXRvQ3JlYXRlQ2VydGlmaWNhdGUgY2FuIG9ubHkgYmUgdXNlZCB3aXRoIGRvbWFpbk5hbWUnLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIGxldCB2c2NvZGVQYXNzd29yZCA9IHByb3BzPy52c2NvZGVQYXNzd29yZCA/PyAnJztcbiAgICBpZiAodnNjb2RlUGFzc3dvcmQgPT0gJycpIHtcbiAgICAgIC8vIENyZWF0ZSBhIHNlY3JldCB3aGljaCBpcyB0aGVuIGluamVjdCBpbiB0aGUgU1NNIGRvY3VtZW50IHRvIGluc3RhbGwgdnNjb2RlIHNlcnZlclxuICAgICAgY29uc3Qgc2VjcmV0ID0gbmV3IHNlY3JldHNtYW5hZ2VyLlNlY3JldCh0aGlzLCAncGFzc3dvcmQtc2VjcmV0Jywge1xuICAgICAgICBnZW5lcmF0ZVNlY3JldFN0cmluZzoge1xuICAgICAgICAgIHBhc3N3b3JkTGVuZ3RoOiAxNixcbiAgICAgICAgICBzZWNyZXRTdHJpbmdUZW1wbGF0ZTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgdXNlcm5hbWU6IHZzQ29kZVVzZXIsXG4gICAgICAgICAgfSksXG4gICAgICAgICAgZXhjbHVkZVB1bmN0dWF0aW9uOiB0cnVlLFxuICAgICAgICAgIGluY2x1ZGVTcGFjZTogZmFsc2UsXG4gICAgICAgICAgZ2VuZXJhdGVTdHJpbmdLZXk6ICdwYXNzd29yZCcsXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICAgIE5hZ1N1cHByZXNzaW9ucy5hZGRSZXNvdXJjZVN1cHByZXNzaW9ucyhcbiAgICAgICAgW3NlY3JldF0sXG4gICAgICAgIFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpZDogJ0F3c1NvbHV0aW9ucy1TTUc0JyxcbiAgICAgICAgICAgIHJlYXNvbjpcbiAgICAgICAgICAgICAgJ0ZvciB0aGlzIHRtcCB2YyBjb2RlIHNlcnZlciB3ZSBkbyBub3QgbmVlZCBwYXNzd29yZCByb3RhdGlvbicsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgdHJ1ZSxcbiAgICAgICk7XG5cbiAgICAgIC8vIEhhdmUgYSBjdXN0b20gcmVzb3VyY2UgdG8gcGFzcyB0aGUgc2VjcmV0IGRhdGEgb24/IC0+IHllcyBiZWNhdXNlIG5vdCByZXNvbHZhYmxlIG9uIGNvbXBpbGUgdGltZVxuICAgICAgY29uc3Qgc2VjcmV0UmV0cmlldmVyID0gU2VjcmV0UmV0cmlldmVyLm5ldyh7XG4gICAgICAgIHNlY3JldEFybjogc2VjcmV0LnNlY3JldEFybixcbiAgICAgIH0pLl9iaW5kKHRoaXMpO1xuXG4gICAgICB2c2NvZGVQYXNzd29yZCA9IHNlY3JldFJldHJpZXZlci5zZWNyZXRQYXNzd29yZFBsYWludGV4dDtcbiAgICB9XG5cbiAgICAvLyBIYW5kbGUgU1NMIGNlcnRpZmljYXRlIGZvciBjdXN0b20gZG9tYWluXG4gICAgbGV0IGNlcnRpZmljYXRlOiBhY20uSUNlcnRpZmljYXRlIHwgdW5kZWZpbmVkO1xuICAgIGxldCBob3N0ZWRab25lOiByb3V0ZTUzLklIb3N0ZWRab25lIHwgdW5kZWZpbmVkO1xuXG4gICAgaWYgKGRvbWFpbk5hbWUpIHtcbiAgICAgIC8vIEdldCBvciBjcmVhdGUgaG9zdGVkIHpvbmVcbiAgICAgIGlmIChob3N0ZWRab25lSWQpIHtcbiAgICAgICAgaG9zdGVkWm9uZSA9IHJvdXRlNTMuSG9zdGVkWm9uZS5mcm9tSG9zdGVkWm9uZUF0dHJpYnV0ZXMoXG4gICAgICAgICAgdGhpcyxcbiAgICAgICAgICAnaG9zdGVkLXpvbmUnLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGhvc3RlZFpvbmVJZDogaG9zdGVkWm9uZUlkLFxuICAgICAgICAgICAgem9uZU5hbWU6IGRvbWFpbk5hbWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIExvb2t1cCBob3N0ZWQgem9uZSBieSBkb21haW4gbmFtZVxuICAgICAgICBob3N0ZWRab25lID0gcm91dGU1My5Ib3N0ZWRab25lLmZyb21Mb29rdXAodGhpcywgJ2hvc3RlZC16b25lJywge1xuICAgICAgICAgIGRvbWFpbk5hbWU6IGRvbWFpbk5hbWUsXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICAvLyBIYW5kbGUgY2VydGlmaWNhdGVcbiAgICAgIGlmIChjZXJ0aWZpY2F0ZUFybikge1xuICAgICAgICAvLyBVc2UgZXhpc3RpbmcgY2VydGlmaWNhdGVcbiAgICAgICAgY2VydGlmaWNhdGUgPSBhY20uQ2VydGlmaWNhdGUuZnJvbUNlcnRpZmljYXRlQXJuKFxuICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgJ2NlcnRpZmljYXRlJyxcbiAgICAgICAgICBjZXJ0aWZpY2F0ZUFybixcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSBpZiAoYXV0b0NyZWF0ZUNlcnRpZmljYXRlKSB7XG4gICAgICAgIC8vIENyZWF0ZSBuZXcgY2VydGlmaWNhdGUgd2l0aCBETlMgdmFsaWRhdGlvblxuICAgICAgICAvLyBDbG91ZEZyb250IHJlcXVpcmVzIGNlcnRpZmljYXRlcyB0byBiZSBpbiB1cy1lYXN0LTEgcmVnaW9uXG4gICAgICAgIGlmICghaG9zdGVkWm9uZSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICdob3N0ZWRab25lIGlzIHJlcXVpcmVkIHdoZW4gYXV0b0NyZWF0ZUNlcnRpZmljYXRlIGlzIHRydWUnLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBOb3RlOiBVc2luZyBEbnNWYWxpZGF0ZWRDZXJ0aWZpY2F0ZSAoZGVwcmVjYXRlZCBidXQgc3RpbGwgZnVuY3Rpb25hbClcbiAgICAgICAgLy8gVGhpcyBpcyB0aGUgc2ltcGxlc3Qgd2F5IHRvIGNyZWF0ZSBjZXJ0aWZpY2F0ZXMgaW4gdXMtZWFzdC0xIGZyb20gYW55IHJlZ2lvblxuICAgICAgICAvLyBUaGUgbW9kZXJuIGFwcHJvYWNoIHJlcXVpcmVzIG11bHRpLXN0YWNrIGRlcGxveW1lbnQgd2l0aCBjcm9zc1JlZ2lvblJlZmVyZW5jZXNcbiAgICAgICAgLy8gd2hpY2ggaXMgbW9yZSBjb21wbGV4IGZvciBhIGNvbnN0cnVjdCBsaWJyYXJ5IHRvIGltcGxlbWVudCBjbGVhbmx5XG4gICAgICAgIC8vIEB0cy1pZ25vcmUgLSBEbnNWYWxpZGF0ZWRDZXJ0aWZpY2F0ZSBpcyBkZXByZWNhdGVkIGJ1dCBzdGlsbCB0aGUgYmVzdCBvcHRpb24gZm9yIGNyb3NzLXJlZ2lvbiBjZXJ0c1xuICAgICAgICBjZXJ0aWZpY2F0ZSA9IG5ldyBhY20uRG5zVmFsaWRhdGVkQ2VydGlmaWNhdGUodGhpcywgJ2NlcnRpZmljYXRlJywge1xuICAgICAgICAgIGRvbWFpbk5hbWU6IGRvbWFpbk5hbWUsXG4gICAgICAgICAgaG9zdGVkWm9uZTogaG9zdGVkWm9uZSxcbiAgICAgICAgICByZWdpb246ICd1cy1lYXN0LTEnLFxuICAgICAgICAgIC8vIEV4cGxpY2l0bHkgZ3JhbnQgdGhlIHZhbGlkYXRpb24gTGFtYmRhIHBlcm1pc3Npb24gdG8gZGVzY3JpYmUgY2VydGlmaWNhdGVzXG4gICAgICAgICAgY3VzdG9tUmVzb3VyY2VSb2xlOiBuZXcgaWFtLlJvbGUodGhpcywgJ2NlcnRpZmljYXRlLXZhbGlkYXRpb24tcm9sZScsIHtcbiAgICAgICAgICAgIGFzc3VtZWRCeTogbmV3IGlhbS5TZXJ2aWNlUHJpbmNpcGFsKCdsYW1iZGEuYW1hem9uYXdzLmNvbScpLFxuICAgICAgICAgICAgbWFuYWdlZFBvbGljaWVzOiBbXG4gICAgICAgICAgICAgIGlhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZSgnc2VydmljZS1yb2xlL0FXU0xhbWJkYUJhc2ljRXhlY3V0aW9uUm9sZScpLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGlubGluZVBvbGljaWVzOiB7XG4gICAgICAgICAgICAgIENlcnRpZmljYXRlVmFsaWRhdGlvblBvbGljeTogbmV3IGlhbS5Qb2xpY3lEb2N1bWVudCh7XG4gICAgICAgICAgICAgICAgc3RhdGVtZW50czogW1xuICAgICAgICAgICAgICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAgICAgICAgICAgJ2FjbTpEZXNjcmliZUNlcnRpZmljYXRlJyxcbiAgICAgICAgICAgICAgICAgICAgICAnYWNtOlJlcXVlc3RDZXJ0aWZpY2F0ZScsXG4gICAgICAgICAgICAgICAgICAgICAgJ2FjbTpEZWxldGVDZXJ0aWZpY2F0ZScsXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIHJlc291cmNlczogWycqJ10sXG4gICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICAgICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgICAgICAgICAgICdyb3V0ZTUzOkdldENoYW5nZScsXG4gICAgICAgICAgICAgICAgICAgICAgJ3JvdXRlNTM6Q2hhbmdlUmVzb3VyY2VSZWNvcmRTZXRzJyxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VzOiBbJyonXSxcbiAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgTmFnU3VwcHJlc3Npb25zLmFkZFJlc291cmNlU3VwcHJlc3Npb25zKFxuICAgICAgICAgIFtjZXJ0aWZpY2F0ZV0sXG4gICAgICAgICAgW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBpZDogJ0F3c1NvbHV0aW9ucy1BQ00xJyxcbiAgICAgICAgICAgICAgcmVhc29uOlxuICAgICAgICAgICAgICAgICdDZXJ0aWZpY2F0ZSBpcyBjcmVhdGVkIGZvciBWUyBDb2RlIHNlcnZlciB3aXRoIHByb3BlciBkb21haW4gdmFsaWRhdGlvbicsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBpZDogJ0F3c1NvbHV0aW9ucy1JQU01JyxcbiAgICAgICAgICAgICAgcmVhc29uOlxuICAgICAgICAgICAgICAgICdDZXJ0aWZpY2F0ZSB2YWxpZGF0aW9uIExhbWJkYSBuZWVkcyB3aWxkY2FyZCBwZXJtaXNzaW9ucyBmb3IgQUNNIGFuZCBSb3V0ZTUzJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgICB0cnVlLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIENyZWF0ZSBkZWZhdWx0IHZwY1xuICAgIGNvbnN0IHZwYyA9IG5ldyBlYzIuVnBjKHRoaXMsICd2cGMnLCB7XG4gICAgICBtYXhBenM6IDIsXG4gICAgICBjcmVhdGVJbnRlcm5ldEdhdGV3YXk6IHRydWUsXG4gICAgICBzdWJuZXRDb25maWd1cmF0aW9uOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiAncHVibGljJyxcbiAgICAgICAgICBzdWJuZXRUeXBlOiBlYzIuU3VibmV0VHlwZS5QVUJMSUMsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgZW5hYmxlRG5zSG9zdG5hbWVzOiB0cnVlLFxuICAgICAgZW5hYmxlRG5zU3VwcG9ydDogdHJ1ZSxcbiAgICB9KTtcbiAgICBOYWdTdXBwcmVzc2lvbnMuYWRkUmVzb3VyY2VTdXBwcmVzc2lvbnMoXG4gICAgICBbdnBjXSxcbiAgICAgIFtcbiAgICAgICAge1xuICAgICAgICAgIGlkOiAnQXdzU29sdXRpb25zLVZQQzcnLFxuICAgICAgICAgIHJlYXNvbjogJ0ZvciB0aGlzIHRtcCB2cGMgd2UgZG8gbm90IG5lZWQgZmxvdyBsb2dzJyxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICB0cnVlLFxuICAgICk7XG5cbiAgICAvLyBDcmVhdGUgYSBTZWNHcm91cCBhc3NvY2lhdGVkIHdpdGhlIHRoZSBDRiBkaXN0IHBMaXN0XG4gICAgY29uc3Qgc2VjR3JvdXAgPSBuZXcgZWMyLlNlY3VyaXR5R3JvdXAodGhpcywgJ2NmLXRvLXNlcnZlci1zZycsIHtcbiAgICAgIHZwYyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnU0cgZm9yIFZTQ29kZVNlcnZlciAtIG9ubHkgYWxsb3cgQ2xvdWRGcm9udCBpbmdyZXNzJyxcbiAgICAgIHNlY3VyaXR5R3JvdXBOYW1lOiAnY2xvdWRmcm9udC10by12c2NvZGUtc2VydmVyJyxcbiAgICB9KTtcblxuICAgIGNvbnN0IGF3c01hbmFnZWRQcmVmaXhMaXN0ID0gbmV3IEF3c01hbmFnZWRQcmVmaXhMaXN0KFxuICAgICAgdGhpcyxcbiAgICAgICdjZi1wcmVmaXhsaXN0SWQnLFxuICAgICAge1xuICAgICAgICBuYW1lOiAnY29tLmFtYXpvbmF3cy5nbG9iYWwuY2xvdWRmcm9udC5vcmlnaW4tZmFjaW5nJyxcbiAgICAgIH0sXG4gICAgKTtcbiAgICBOYWdTdXBwcmVzc2lvbnMuYWRkUmVzb3VyY2VTdXBwcmVzc2lvbnMoXG4gICAgICBbYXdzTWFuYWdlZFByZWZpeExpc3RdLFxuICAgICAgW1xuICAgICAgICB7XG4gICAgICAgICAgaWQ6ICdBd3NTb2x1dGlvbnMtSUFNNScsXG4gICAgICAgICAgcmVhc29uOiAnRm9yIHRoaXMgcHJvdmlkZXIgd2lsZGNhcmRzIGFyZSBmaW5lJyxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICB0cnVlLFxuICAgICk7XG5cbiAgICBzZWNHcm91cC5hZGRJbmdyZXNzUnVsZShcbiAgICAgIGVjMi5QZWVyLnByZWZpeExpc3QoYXdzTWFuYWdlZFByZWZpeExpc3QucHJlZml4TGlzdC5wcmVmaXhMaXN0SWQpLFxuICAgICAgZWMyLlBvcnQudGNwKDgwKSxcbiAgICAgICdBbGxvdyBIVFRQIGZyb20gY29tLmFtYXpvbmF3cy5nbG9iYWwuY2xvdWRmcm9udC5vcmlnaW4tZmFjaW5nJyxcbiAgICApO1xuXG4gICAgLy8gQ3JlYXRlIGFuIEVDMiBpbnN0YW5jZSBhc3NvY2lhdGVkIHdpdGggdGhlIHNlYyBncm91cCArIGluc3RhbmNlIHByb2ZpbGUgYW5kIHJvbGVcbiAgICBjb25zdCBpbnN0YW5jZVJvbGUgPSBuZXcgaWFtLlJvbGUodGhpcywgJ3NlcnZlci1pbnN0YW5jZS1yb2xlJywge1xuICAgICAgYXNzdW1lZEJ5OiBuZXcgaWFtLkNvbXBvc2l0ZVByaW5jaXBhbChcbiAgICAgICAgbmV3IGlhbS5TZXJ2aWNlUHJpbmNpcGFsKCdlYzIuYW1hem9uYXdzLmNvbScpLFxuICAgICAgICBuZXcgaWFtLlNlcnZpY2VQcmluY2lwYWwoJ3NzbS5hbWF6b25hd3MuY29tJyksXG4gICAgICApLFxuICAgICAgaW5saW5lUG9saWNpZXM6IHtcbiAgICAgICAgVlNDb2RlSW5zdGFuY2VJbmxpbmVQb2xpY3k6IG5ldyBpYW0uUG9saWN5RG9jdW1lbnQoe1xuICAgICAgICAgIHN0YXRlbWVudHM6IFtcbiAgICAgICAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICAgICAgc2lkOiAnU3RzQWNjZXNzJyxcbiAgICAgICAgICAgICAgZWZmZWN0OiBpYW0uRWZmZWN0LkFMTE9XLFxuICAgICAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAgICAgJ3N0czpBc3N1bWVSb2xlJyxcbiAgICAgICAgICAgICAgICAnaWFtOkFkZFJvbGVUb0luc3RhbmNlUHJvZmlsZScsXG4gICAgICAgICAgICAgICAgJ2lhbTpBdHRhY2hSb2xlUG9saWN5JyxcbiAgICAgICAgICAgICAgICAnaWFtOkNyZWF0ZVJvbGUnLFxuICAgICAgICAgICAgICAgICdpYW06Q3JlYXRlU2VydmljZUxpbmtlZFJvbGUnLFxuICAgICAgICAgICAgICAgICdpYW06RGVsZXRlUm9sZScsXG4gICAgICAgICAgICAgICAgJ2lhbTpEZWxldGVSb2xlUGVybWlzc2lvbnNCb3VuZGFyeScsXG4gICAgICAgICAgICAgICAgJ2lhbTpEZWxldGVSb2xlUG9saWN5JyxcbiAgICAgICAgICAgICAgICAnaWFtOkRlbGV0ZVNlcnZpY2VMaW5rZWRSb2xlJyxcbiAgICAgICAgICAgICAgICAnaWFtOkRldGFjaFJvbGVQb2xpY3knLFxuICAgICAgICAgICAgICAgICdpYW06R2V0Um9sZScsXG4gICAgICAgICAgICAgICAgJ2lhbTpHZXRSb2xlUG9saWN5JyxcbiAgICAgICAgICAgICAgICAnaWFtOkdldFNlcnZpY2VMaW5rZWRSb2xlRGVsZXRpb25TdGF0dXMnLFxuICAgICAgICAgICAgICAgICdpYW06TGlzdEF0dGFjaGVkUm9sZVBvbGljaWVzJyxcbiAgICAgICAgICAgICAgICAnaWFtOkxpc3RJbnN0YW5jZVByb2ZpbGVzRm9yUm9sZScsXG4gICAgICAgICAgICAgICAgJ2lhbTpMaXN0Um9sZVBvbGljaWVzJyxcbiAgICAgICAgICAgICAgICAnaWFtOkxpc3RSb2xlcycsXG4gICAgICAgICAgICAgICAgJ2lhbTpMaXN0Um9sZVRhZ3MnLFxuICAgICAgICAgICAgICAgICdpYW06UHV0Um9sZVBlcm1pc3Npb25zQm91bmRhcnknLFxuICAgICAgICAgICAgICAgICdpYW06UHV0Um9sZVBvbGljeScsXG4gICAgICAgICAgICAgICAgJ2lhbTpSZW1vdmVSb2xlRnJvbUluc3RhbmNlUHJvZmlsZScsXG4gICAgICAgICAgICAgICAgJ2lhbTpUYWdSb2xlJyxcbiAgICAgICAgICAgICAgICAnaWFtOlVudGFnUm9sZScsXG4gICAgICAgICAgICAgICAgJ2lhbTpVcGRhdGVBc3N1bWVSb2xlUG9saWN5JyxcbiAgICAgICAgICAgICAgICAnaWFtOlVwZGF0ZVJvbGUnLFxuICAgICAgICAgICAgICAgICdpYW06VXBkYXRlUm9sZURlc2NyaXB0aW9uJyxcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgcmVzb3VyY2VzOiBbYGFybjphd3M6aWFtOjoke1N0YWNrLm9mKHRoaXMpLmFjY291bnR9OnJvbGUvY2RrLSpgXSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgICBlZmZlY3Q6IGlhbS5FZmZlY3QuQUxMT1csXG4gICAgICAgICAgICAgIGFjdGlvbnM6IFsnaWFtOlBhc3NSb2xlJ10sXG4gICAgICAgICAgICAgIHJlc291cmNlczogW2Bhcm46YXdzOmlhbTo6JHtTdGFjay5vZih0aGlzKS5hY2NvdW50fTpyb2xlL2Nkay0qYF0sXG4gICAgICAgICAgICAgIGNvbmRpdGlvbnM6IHtcbiAgICAgICAgICAgICAgICBTdHJpbmdMaWtlOiB7XG4gICAgICAgICAgICAgICAgICAnaWFtOlBhc3NlZFRvU2VydmljZSc6ICdjbG91ZGZvcm1hdGlvbi5hbWF6b25hd3MuY29tJyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgICAgIGVmZmVjdDogaWFtLkVmZmVjdC5BTExPVyxcbiAgICAgICAgICAgICAgYWN0aW9uczogWydjbG91ZGZvcm1hdGlvbjoqJ10sXG4gICAgICAgICAgICAgIHJlc291cmNlczogW1xuICAgICAgICAgICAgICAgIGBhcm46YXdzOmNsb3VkZm9ybWF0aW9uOio6JHtTdGFjay5vZih0aGlzKS5hY2NvdW50fTpzdGFjay9DREtUb29sa2l0LypgLFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgICAgIGVmZmVjdDogaWFtLkVmZmVjdC5BTExPVyxcbiAgICAgICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgICAgICdjbG91ZGZvcm1hdGlvbjpDcmVhdGVDaGFuZ2VTZXQnLFxuICAgICAgICAgICAgICAgICdjbG91ZGZvcm1hdGlvbjpFeGVjdXRlQ2hhbmdlU2V0JyxcbiAgICAgICAgICAgICAgICAnY2xvdWRmb3JtYXRpb246RGVsZXRlQ2hhbmdlU2V0JyxcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgcmVzb3VyY2VzOiBbJyonXSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgICBzaWQ6ICdTM0FjY2VzcycsXG4gICAgICAgICAgICAgIGFjdGlvbnM6IFsnczM6KiddLFxuICAgICAgICAgICAgICByZXNvdXJjZXM6IFsnKiddLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgICAgIHNpZDogJ0VDUkFjY2VzcycsXG4gICAgICAgICAgICAgIGVmZmVjdDogaWFtLkVmZmVjdC5BTExPVyxcbiAgICAgICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgICAgICdlY3I6U2V0UmVwb3NpdG9yeVBvbGljeScsXG4gICAgICAgICAgICAgICAgJ2VjcjpHZXRMaWZlY3ljbGVQb2xpY3knLFxuICAgICAgICAgICAgICAgICdlY3I6UHV0TGlmZWN5Y2xlUG9saWN5JyxcbiAgICAgICAgICAgICAgICAnZWNyOlB1dEltYWdlU2Nhbm5pbmdDb25maWd1cmF0aW9uJyxcbiAgICAgICAgICAgICAgICAnZWNyOkRlc2NyaWJlUmVwb3NpdG9yaWVzJyxcbiAgICAgICAgICAgICAgICAnZWNyOkNyZWF0ZVJlcG9zaXRvcnknLFxuICAgICAgICAgICAgICAgICdlY3I6RGVsZXRlUmVwb3NpdG9yeScsXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIHJlc291cmNlczogW1xuICAgICAgICAgICAgICAgIGBhcm46YXdzOmVjcjoqOiR7U3RhY2sub2YodGhpcykuYWNjb3VudH06cmVwb3NpdG9yeS9jZGstKmAsXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICAgICAgZWZmZWN0OiBpYW0uRWZmZWN0LkFMTE9XLFxuICAgICAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAgICAgJ3NzbTpHZXRQYXJhbWV0ZXIqJyxcbiAgICAgICAgICAgICAgICAnc3NtOlB1dFBhcmFtZXRlcionLFxuICAgICAgICAgICAgICAgICdzc206RGVsZXRlUGFyYW1ldGVyKicsXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIHJlc291cmNlczogW1xuICAgICAgICAgICAgICAgIGBhcm46YXdzOnNzbToqOiR7U3RhY2sub2YodGhpcykuYWNjb3VudH06cGFyYW1ldGVyL2Nkay1ib290c3RyYXAvKmAsXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICAgICAgZWZmZWN0OiBpYW0uRWZmZWN0LkFMTE9XLFxuICAgICAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAgICAgJ2VjMjpEZXNjcmliZUluc3RhbmNlcycsXG4gICAgICAgICAgICAgICAgJ2VjMjpNb2RpZnlWb2x1bWUnLFxuICAgICAgICAgICAgICAgICdlYzI6RGVzY3JpYmVWb2x1bWVzTW9kaWZpY2F0aW9ucyonLFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICByZXNvdXJjZXM6IFsnKiddLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgICAgIGVmZmVjdDogaWFtLkVmZmVjdC5BTExPVyxcbiAgICAgICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgICAgICdjb2RlcGlwZWxpbmU6RW5hYmxlU3RhZ2VUcmFuc2l0aW9uJyxcbiAgICAgICAgICAgICAgICAnY29kZXBpcGVsaW5lOkRpc2FibGVTdGFnZVRyYW5zaXRpb24nLFxuICAgICAgICAgICAgICAgICdjb2RlcGlwZWxpbmU6U3RhcnRQaXBlbGluZUV4ZWN1dGlvbicsXG4gICAgICAgICAgICAgICAgJ2NvZGVwaXBlbGluZTpTdG9wUGlwZWxpbmVFeGVjdXRpb24nLFxuICAgICAgICAgICAgICAgICdjb2RlcGlwZWxpbmU6VXBkYXRlUGlwZWxpbmUnLFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICByZXNvdXJjZXM6IFtcbiAgICAgICAgICAgICAgICBgYXJuOmF3czpjb2RlcGlwZWxpbmU6Kjoke1N0YWNrLm9mKHRoaXMpLmFjY291bnR9OiovKmAsXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICAgICAgZWZmZWN0OiBpYW0uRWZmZWN0LkFMTE9XLFxuICAgICAgICAgICAgICBhY3Rpb25zOiBbJ2ttczpEZWNyeXB0J10sXG4gICAgICAgICAgICAgIHJlc291cmNlczogW2Bhcm46YXdzOmttczoqOiR7U3RhY2sub2YodGhpcykuYWNjb3VudH06a2V5LypgXSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgLi4uYWRkaXRpb25hbEluc3RhbmNlUm9sZVBvbGljaWVzLFxuICAgICAgICAgIF0sXG4gICAgICAgIH0pLFxuICAgICAgfSxcbiAgICAgIG1hbmFnZWRQb2xpY2llczogW1xuICAgICAgICBpYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoXG4gICAgICAgICAgJ0FtYXpvblNTTU1hbmFnZWRJbnN0YW5jZUNvcmUnLFxuICAgICAgICApLFxuICAgICAgICBpYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoXG4gICAgICAgICAgJ0Nsb3VkV2F0Y2hBZ2VudFNlcnZlclBvbGljeScsXG4gICAgICAgICksXG4gICAgICAgIGlhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZSgnQW1hem9uUURldmVsb3BlckFjY2VzcycpLFxuICAgICAgICBpYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoJ1JlYWRPbmx5QWNjZXNzJyksXG4gICAgICBdLFxuICAgIH0pO1xuICAgIE5hZ1N1cHByZXNzaW9ucy5hZGRSZXNvdXJjZVN1cHByZXNzaW9ucyhcbiAgICAgIFtpbnN0YW5jZVJvbGVdLFxuICAgICAgW1xuICAgICAgICB7XG4gICAgICAgICAgaWQ6ICdBd3NTb2x1dGlvbnMtSUFNNCcsXG4gICAgICAgICAgcmVhc29uOlxuICAgICAgICAgICAgJ0ZvciB0aGlzIHRtcCByb2xlIHdlIGRvIG5vdCBuZWVkIHRvIHJlc3RyaWN0IG1hbmFnZWQgcG9saWNpZXMnLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgaWQ6ICdBd3NTb2x1dGlvbnMtSUFNNScsXG4gICAgICAgICAgcmVhc29uOiAnRm9yIHRoaXMgdG1wIHJvbGUgdGhlIHdpbGRjYXJkcyBhcmUgZmluZScsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgdHJ1ZSxcbiAgICApO1xuXG4gICAgdGhpcy5pbnN0YW5jZSA9IG5ldyBlYzIuSW5zdGFuY2UodGhpcywgJ3NlcnZlci1pbnN0YW5jZScsIHtcbiAgICAgIHZwYyxcbiAgICAgIGluc3RhbmNlTmFtZSxcbiAgICAgIGluc3RhbmNlVHlwZSxcbiAgICAgIG1hY2hpbmVJbWFnZTogZWMyLk1hY2hpbmVJbWFnZS5mcm9tU3NtUGFyYW1ldGVyKFxuICAgICAgICBtYWNoaW5lSW1hZ2VGcm9tU3NtUGFyYW1ldGVyLFxuICAgICAgICB7XG4gICAgICAgICAgb3M6IGVjMi5PcGVyYXRpbmdTeXN0ZW1UeXBlLkxJTlVYLFxuICAgICAgICB9LFxuICAgICAgKSxcbiAgICAgIHJlcXVpcmVJbWRzdjI6IHRydWUsXG4gICAgICB2cGNTdWJuZXRzOiB7XG4gICAgICAgIHN1Ym5ldFR5cGU6IGVjMi5TdWJuZXRUeXBlLlBVQkxJQyxcbiAgICAgIH0sXG4gICAgICBhc3NvY2lhdGVQdWJsaWNJcEFkZHJlc3M6IHRydWUsXG4gICAgICBkZXRhaWxlZE1vbml0b3Jpbmc6IHRydWUsXG4gICAgICBibG9ja0RldmljZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGRldmljZU5hbWU6ICcvZGV2L3NkYTEnLFxuICAgICAgICAgIHZvbHVtZTogZWMyLkJsb2NrRGV2aWNlVm9sdW1lLmVicyhpbnN0YW5jZVZvbHVtZVNpemUsIHtcbiAgICAgICAgICAgIHZvbHVtZVR5cGU6IGVjMi5FYnNEZXZpY2VWb2x1bWVUeXBlLkdQMyxcbiAgICAgICAgICAgIGVuY3J5cHRlZDogdHJ1ZSxcbiAgICAgICAgICAgIGRlbGV0ZU9uVGVybWluYXRpb246IHRydWUsXG4gICAgICAgICAgfSksXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgcm9sZTogaW5zdGFuY2VSb2xlLFxuICAgICAgc2VjdXJpdHlHcm91cDogc2VjR3JvdXAsXG4gICAgICB1c2VyRGF0YTogZWMyLlVzZXJEYXRhLmN1c3RvbShgXG4gICAgICAgICNjbG91ZC1jb25maWdcbiAgICAgICAgICBob3N0bmFtZTogJHtpbnN0YW5jZU5hbWV9XG4gICAgICAgICAgcnVuY21kOlxuICAgICAgICAgICAgLSBta2RpciAtcCAke2hvbWVGb2xkZXJ9ICYmIGNob3duIC1SICR7dnNDb2RlVXNlcn06JHt2c0NvZGVVc2VyfSAke2hvbWVGb2xkZXJ9XG4gICAgICBgKSxcbiAgICB9KTtcbiAgICBOYWdTdXBwcmVzc2lvbnMuYWRkUmVzb3VyY2VTdXBwcmVzc2lvbnMoXG4gICAgICBbdGhpcy5pbnN0YW5jZV0sXG4gICAgICBbXG4gICAgICAgIHtcbiAgICAgICAgICBpZDogJ0F3c1NvbHV0aW9ucy1FQzI5JyxcbiAgICAgICAgICByZWFzb246ICdGb3IgdGhpcyB0bXAgaW5zdGFuY2Ugd2UgZG8gbm90IG5lZWQgYW4gYXNnJyxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICB0cnVlLFxuICAgICk7XG5cbiAgICAvLyBDb25kaXRpb25hbGx5IGFsbG9jYXRlIEVsYXN0aWMgSVAgZm9yIGF1dG8tc3RvcCBzY2VuYXJpb3NcbiAgICAvLyBXaGVuIGF1dG8tc3RvcCBpcyBlbmFibGVkLCB0aGUgaW5zdGFuY2Ugd2lsbCBiZSBzdG9wcGVkIGFuZCBzdGFydGVkLCB3aGljaCBjaGFuZ2VzXG4gICAgLy8gdGhlIHB1YmxpYyBJUCBlYWNoIHRpbWUuIEVJUCBlbnN1cmVzIENsb3VkRnJvbnQgY2FuIGFsd2F5cyByZWFjaCB0aGUgaW5zdGFuY2UuXG4gICAgLy8gV2hlbiBhdXRvLXN0b3AgaXMgZGlzYWJsZWQsIHRoZSBpbnN0YW5jZSBydW5zIGNvbnRpbnVvdXNseSBhbmQgZG9lc24ndCBuZWVkIEVJUC5cbiAgICBsZXQgZWlwOiBlYzIuQ2ZuRUlQIHwgdW5kZWZpbmVkO1xuICAgIGlmIChwcm9wcz8uZW5hYmxlQXV0b1N0b3ApIHtcbiAgICAgIGVpcCA9IG5ldyBlYzIuQ2ZuRUlQKHRoaXMsICdlbGFzdGljLWlwJywge1xuICAgICAgICBkb21haW46ICd2cGMnLFxuICAgICAgICB0YWdzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAga2V5OiAnTmFtZScsXG4gICAgICAgICAgICB2YWx1ZTogYCR7aW5zdGFuY2VOYW1lfS1FSVBgLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgICAgLy8gQXNzb2NpYXRlIEVsYXN0aWMgSVAgd2l0aCB0aGUgaW5zdGFuY2VcbiAgICAgIG5ldyBlYzIuQ2ZuRUlQQXNzb2NpYXRpb24odGhpcywgJ2VpcC1hc3NvY2lhdGlvbicsIHtcbiAgICAgICAgZWlwOiBlaXAucmVmLFxuICAgICAgICBpbnN0YW5jZUlkOiB0aGlzLmluc3RhbmNlLmluc3RhbmNlSWQsXG4gICAgICB9KTtcblxuICAgICAgTmFnU3VwcHJlc3Npb25zLmFkZFJlc291cmNlU3VwcHJlc3Npb25zKFxuICAgICAgICBbZWlwXSxcbiAgICAgICAgW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGlkOiAnQXdzU29sdXRpb25zLUVDMjMnLFxuICAgICAgICAgICAgcmVhc29uOiAnRWxhc3RpYyBJUCByZXF1aXJlZCBmb3IgY29uc2lzdGVudCBwdWJsaWMgSVAgYWNyb3NzIHN0b3Avc3RhcnQgY3ljbGVzIHdoZW4gYXV0by1zdG9wIGlzIGVuYWJsZWQnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIHRydWUsXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIENyZWF0ZSBhIENGIGRpc3RyaWJ1dGlvbiAoc3BlY2lhbCBpZCkgYW5kIHNwZWNpYWwgQ2FjaGVQb2xpY3kgdG8gaW5zdGFuY2VcbiAgICBjb25zdCBjZkNhY2hlUG9saWN5ID0gbmV3IGNmLkNhY2hlUG9saWN5KHRoaXMsICdjZi1jYWNoZS1wb2xpY3knLCB7XG4gICAgICBjYWNoZVBvbGljeU5hbWU6IGBjZi1jYWNoZS1wb2xpY3ktdnNjb2Rlc2VydmVyLSR7U3RhY2sub2YodGhpcykuc3RhY2tOYW1lfWAsXG4gICAgICBjb21tZW50OiAnQ2FjaGUgcG9saWN5IGZvciBWU0NvZGVTZXJ2ZXInLFxuICAgICAgbWluVHRsOiBEdXJhdGlvbi5zZWNvbmRzKDEpLFxuICAgICAgbWF4VHRsOiBEdXJhdGlvbi5zZWNvbmRzKDMxNTM2MDAwKSxcbiAgICAgIGRlZmF1bHRUdGw6IER1cmF0aW9uLnNlY29uZHMoODY0MDApLFxuICAgICAgY29va2llQmVoYXZpb3I6IGNmLkNhY2hlQ29va2llQmVoYXZpb3IuYWxsKCksXG4gICAgICBlbmFibGVBY2NlcHRFbmNvZGluZ0d6aXA6IGZhbHNlLFxuICAgICAgaGVhZGVyQmVoYXZpb3I6IHtcbiAgICAgICAgYmVoYXZpb3I6ICd3aGl0ZWxpc3QnLFxuICAgICAgICBoZWFkZXJzOiBbXG4gICAgICAgICAgJ0FjY2VwdC1DaGFyc2V0JyxcbiAgICAgICAgICAnQXV0aG9yaXphdGlvbicsXG4gICAgICAgICAgJ09yaWdpbicsXG4gICAgICAgICAgJ0FjY2VwdCcsXG4gICAgICAgICAgJ1JlZmVyZXInLFxuICAgICAgICAgICdIb3N0JyxcbiAgICAgICAgICAnQWNjZXB0LUxhbmd1YWdlJyxcbiAgICAgICAgICAnQWNjZXB0LUVuY29kaW5nJyxcbiAgICAgICAgICAnQWNjZXB0LURhdGV0aW1lJyxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgICBxdWVyeVN0cmluZ0JlaGF2aW9yOiBjZi5DYWNoZVF1ZXJ5U3RyaW5nQmVoYXZpb3IuYWxsKCksXG4gICAgfSk7XG5cbiAgICAvLyBEZXRlcm1pbmUgQ2xvdWRGcm9udCBvcmlnaW4gRE5TIG5hbWUgYmFzZWQgb24gYXV0by1zdG9wIGNvbmZpZ3VyYXRpb25cbiAgICAvLyAtIElmIGF1dG8tc3RvcCBlbmFibGVkOiBVc2UgRWxhc3RpYyBJUCBETlMgKHBlcnNpc3RzIGFjcm9zcyBzdG9wL3N0YXJ0IGN5Y2xlcylcbiAgICAvLyAtIElmIGF1dG8tc3RvcCBkaXNhYmxlZDogVXNlIGluc3RhbmNlIHB1YmxpYyBETlMgKGluc3RhbmNlIG5ldmVyIHN0b3BzKVxuICAgIGNvbnN0IG9yaWdpbkRuc05hbWUgPSBlaXBcbiAgICAgID8gYGVjMi0ke0ZuLmpvaW4oJy0nLCBGbi5zcGxpdCgnLicsIGVpcC5hdHRyUHVibGljSXApKX0uJHtTdGFjay5vZih0aGlzKS5yZWdpb259LmNvbXB1dGUuYW1hem9uYXdzLmNvbWBcbiAgICAgIDogdGhpcy5pbnN0YW5jZS5pbnN0YW5jZVB1YmxpY0Ruc05hbWU7XG5cbiAgICBjb25zdCBvcmlnaW4gPSBuZXcgY2ZvLkh0dHBPcmlnaW4ob3JpZ2luRG5zTmFtZSwge1xuICAgICAgcHJvdG9jb2xQb2xpY3k6IGNmLk9yaWdpblByb3RvY29sUG9saWN5LkhUVFBfT05MWSxcbiAgICAgIG9yaWdpbklkOiBgQ2xvdWRmcm9udC0ke1N0YWNrLm9mKHRoaXMpLnN0YWNrTmFtZX0tJHtTdGFjay5vZih0aGlzKS5zdGFja05hbWV9YCxcbiAgICB9KTtcblxuICAgIGNvbnN0IGRpc3RyaWJ1dGlvbiA9IG5ldyBjZi5EaXN0cmlidXRpb24odGhpcywgJ2NmLWRpc3RyaWJ1dGlvbicsIHtcbiAgICAgIGVuYWJsZWQ6IHRydWUsXG4gICAgICBodHRwVmVyc2lvbjogY2YuSHR0cFZlcnNpb24uSFRUUDJfQU5EXzMsXG4gICAgICAvLyBOT1RFOiAnRGlzdHJpYnV0aW9ucyB0aGF0IHVzZSB0aGUgZGVmYXVsdCBDbG91ZEZyb250IHZpZXdlciBjZXJ0aWZpY2F0ZSBvciB1c2UgJ3ZpcCcgZm9yIHRoZSAnU3NsU3VwcG9ydE1ldGhvZCdcbiAgICAgIC8vIGFyZSBub24tY29tcGxpYW50IHdpdGggdGhpcyBydWxlLCBhcyB0aGUgbWluaW11bSBzZWN1cml0eSBwb2xpY3kgaXMgc2V0IHRvIFRMU3YxIHJlZ2FyZGxlc3NcbiAgICAgIC8vIG9mIHRoZSBzcGVjaWZpZWQgJ01pbmltdW1Qcm90b2NvbFZlcnNpb24nXG4gICAgICAvLyBtaW5pbXVtUHJvdG9jb2xWZXJzaW9uOiBjZi5TZWN1cml0eVBvbGljeVByb3RvY29sLlRMU19WMV8yXzIwMjEsXG4gICAgICBjb21tZW50OiAnRGlzdHJpYnV0aW9uIGZvciBWU0NvZGVTZXJ2ZXInLFxuICAgICAgcHJpY2VDbGFzczogY2YuUHJpY2VDbGFzcy5QUklDRV9DTEFTU19BTEwsXG4gICAgICAvLyBDdXN0b20gZG9tYWluIGNvbmZpZ3VyYXRpb25cbiAgICAgIC4uLihkb21haW5OYW1lICYmIGNlcnRpZmljYXRlXG4gICAgICAgID8ge1xuICAgICAgICAgIGRvbWFpbk5hbWVzOiBbZG9tYWluTmFtZV0sXG4gICAgICAgICAgY2VydGlmaWNhdGU6IGNlcnRpZmljYXRlLFxuICAgICAgICB9XG4gICAgICAgIDoge30pLFxuICAgICAgZGVmYXVsdEJlaGF2aW9yOiB7XG4gICAgICAgIGFsbG93ZWRNZXRob2RzOiBjZi5BbGxvd2VkTWV0aG9kcy5BTExPV19BTEwsXG4gICAgICAgIGNhY2hlUG9saWN5OiBjZkNhY2hlUG9saWN5LFxuICAgICAgICBvcmlnaW5SZXF1ZXN0UG9saWN5OiB7XG4gICAgICAgICAgLy8gTWFuYWdlZC1BbGxWaWV3ZXIgLSBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvbkNsb3VkRnJvbnQvbGF0ZXN0L0RldmVsb3Blckd1aWRlL3VzaW5nLW1hbmFnZWQtb3JpZ2luLXJlcXVlc3QtcG9saWNpZXMuaHRtbCM6fjp0ZXh0PVdoZW4lMjB1c2luZyUyMEFXUyw0N2U0JTJEYjk4OSUyRDU0OTJlYWZhMDdkM1xuICAgICAgICAgIG9yaWdpblJlcXVlc3RQb2xpY3lJZDogJzIxNmFkZWY2LTVjN2YtNDdlNC1iOTg5LTU0OTJlYWZhMDdkMycsXG4gICAgICAgIH0sXG4gICAgICAgIHZpZXdlclByb3RvY29sUG9saWN5OiBjZi5WaWV3ZXJQcm90b2NvbFBvbGljeS5BTExPV19BTEwsXG4gICAgICAgIG9yaWdpbixcbiAgICAgIH0sXG4gICAgICBhZGRpdGlvbmFsQmVoYXZpb3JzOiB7XG4gICAgICAgICcvcHJveHkvKic6IHtcbiAgICAgICAgICBhbGxvd2VkTWV0aG9kczogY2YuQWxsb3dlZE1ldGhvZHMuQUxMT1dfQUxMLFxuICAgICAgICAgIGNvbXByZXNzOiBmYWxzZSxcbiAgICAgICAgICAvLyBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvbkNsb3VkRnJvbnQvbGF0ZXN0L0RldmVsb3Blckd1aWRlL3VzaW5nLW1hbmFnZWQtY2FjaGUtcG9saWNpZXMuaHRtbCNtYW5hZ2VkLWNhY2hlLXBvbGljeS1jYWNoaW5nLWRpc2FibGVkXG4gICAgICAgICAgY2FjaGVQb2xpY3k6IGNmLkNhY2hlUG9saWN5LkNBQ0hJTkdfRElTQUJMRUQsXG4gICAgICAgICAgb3JpZ2luUmVxdWVzdFBvbGljeToge1xuICAgICAgICAgICAgLy8gTWFuYWdlZC1BbGxWaWV3ZXIgLSBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvbkNsb3VkRnJvbnQvbGF0ZXN0L0RldmVsb3Blckd1aWRlL3VzaW5nLW1hbmFnZWQtb3JpZ2luLXJlcXVlc3QtcG9saWNpZXMuaHRtbCM6fjp0ZXh0PVdoZW4lMjB1c2luZyUyMEFXUyw0N2U0JTJEYjk4OSUyRDU0OTJlYWZhMDdkM1xuICAgICAgICAgICAgb3JpZ2luUmVxdWVzdFBvbGljeUlkOiAnMjE2YWRlZjYtNWM3Zi00N2U0LWI5ODktNTQ5MmVhZmEwN2QzJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHZpZXdlclByb3RvY29sUG9saWN5OiBjZi5WaWV3ZXJQcm90b2NvbFBvbGljeS5BTExPV19BTEwsXG4gICAgICAgICAgb3JpZ2luLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcbiAgICBOYWdTdXBwcmVzc2lvbnMuYWRkUmVzb3VyY2VTdXBwcmVzc2lvbnMoXG4gICAgICBbZGlzdHJpYnV0aW9uXSxcbiAgICAgIFtcbiAgICAgICAge1xuICAgICAgICAgIGlkOiAnQXdzU29sdXRpb25zLUNGUjEnLFxuICAgICAgICAgIHJlYXNvbjogJ0ZvciB0aGlzIHRtcCBkaXN0cmlidXRpb24gd2UgZG8gbm90IG5lZWQgZ2VvIHJlc3RyaWN0aW9ucycsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBpZDogJ0F3c1NvbHV0aW9ucy1DRlIyJyxcbiAgICAgICAgICByZWFzb246ICdGb3IgdGhpcyB0bXAgZGlzdHJpYnV0aW9uIHdlIGRvIG5vdCBuZWVkIHdhZiBpbnRlZ3JhdGlvbicsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBpZDogJ0F3c1NvbHV0aW9ucy1DRlIzJyxcbiAgICAgICAgICByZWFzb246XG4gICAgICAgICAgICAnRm9yIHRoaXMgdG1wIGRpc3RyaWJ1dGlvbiB3ZSBkbyBub3QgbmVlZCBhY2Nlc3MgbG9nZ2luZyBlbmFibGVkJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGlkOiAnQXdzU29sdXRpb25zLUNGUjQnLFxuICAgICAgICAgIHJlYXNvbjpcbiAgICAgICAgICAgICdGb3IgdGhpcyB0bXAgZGlzdHJpYnV0aW9uIHdlIGRvIG5vdCBuZWVkIGxpbWl0IFNTTCBwcm90b2NvbHMgYXMgd2UgdXNlIHRoZSBkZWZhdWx0IHZpZXdlciBjZXJ0JyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGlkOiAnQXdzU29sdXRpb25zLUNGUjUnLFxuICAgICAgICAgIHJlYXNvbjpcbiAgICAgICAgICAgICdGb3IgdGhpcyB0bXAgZGlzdHJpYnV0aW9uIHdlIGRvIG5vdCBuZWVkIGxpbWl0IFNTTCBwcm90b2NvbHMgYXMgd2UgdXNlIHRoZSBkZWZhdWx0IHZpZXdlciBjZXJ0JyxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICB0cnVlLFxuICAgICk7XG5cbiAgICAvLyBDcmVhdGUgUm91dGU1MyBBIHJlY29yZCBmb3IgY3VzdG9tIGRvbWFpblxuICAgIGlmIChkb21haW5OYW1lICYmIGhvc3RlZFpvbmUpIHtcbiAgICAgIGNvbnN0IGFSZWNvcmQgPSBuZXcgcm91dGU1My5BUmVjb3JkKHRoaXMsICdkb21haW4tcmVjb3JkJywge1xuICAgICAgICB6b25lOiBob3N0ZWRab25lLFxuICAgICAgICByZWNvcmROYW1lOiBkb21haW5OYW1lLFxuICAgICAgICB0YXJnZXQ6IHJvdXRlNTMuUmVjb3JkVGFyZ2V0LmZyb21BbGlhcyhcbiAgICAgICAgICBuZXcgcm91dGU1M3RhcmdldHMuQ2xvdWRGcm9udFRhcmdldChkaXN0cmlidXRpb24pLFxuICAgICAgICApLFxuICAgICAgfSk7XG5cbiAgICAgIE5hZ1N1cHByZXNzaW9ucy5hZGRSZXNvdXJjZVN1cHByZXNzaW9ucyhcbiAgICAgICAgW2FSZWNvcmRdLFxuICAgICAgICBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgaWQ6ICdBd3NTb2x1dGlvbnMtUjUzLTEnLFxuICAgICAgICAgICAgcmVhc29uOiAnQSByZWNvcmQgY3JlYXRlZCBmb3IgVlMgQ29kZSBzZXJ2ZXIgY3VzdG9tIGRvbWFpbicsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgdHJ1ZSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gVXNlIGEgY3VzdG9tIHJlc291cmNlIGxhbWJkYSB0byBydW4gdGhlIFNTTSBkb2N1bWVudCBvbiB0aGUgaW5zdGFuY2VcbiAgICAvLyBTdG9yZSB0aGUgaW5zdGFsbGVyIHJlZmVyZW5jZSBmb3IgZGVwZW5kZW5jeSBtYW5hZ2VtZW50XG4gICAgbGV0IGluc3RhbGxlcjogSW5zdGFsbGVyIHwgdW5kZWZpbmVkO1xuICAgIHN3aXRjaCAoaW5zdGFuY2VPcGVyYXRpbmdTeXN0ZW0pIHtcbiAgICAgIGNhc2UgTGludXhGbGF2b3JUeXBlLlVCVU5UVV8yMjpcbiAgICAgIGNhc2UgTGludXhGbGF2b3JUeXBlLlVCVU5UVV8yNDpcbiAgICAgIGNhc2UgTGludXhGbGF2b3JUeXBlLlVCVU5UVV8yNTpcbiAgICAgICAgaW5zdGFsbGVyID0gSW5zdGFsbGVyLnVidW50dSh7XG4gICAgICAgICAgaW5zdGFuY2VJZDogdGhpcy5pbnN0YW5jZS5pbnN0YW5jZUlkLFxuICAgICAgICAgIHZzQ29kZVVzZXI6IHZzQ29kZVVzZXIsXG4gICAgICAgICAgdnNDb2RlUGFzc3dvcmQ6IHZzY29kZVBhc3N3b3JkLFxuICAgICAgICAgIGRldlNlcnZlckJhc2VQYXRoOiBwcm9wcz8uZGV2U2VydmVyQmFzZVBhdGgsXG4gICAgICAgICAgZGV2U2VydmVyUG9ydDogcHJvcHM/LmRldlNlcnZlclBvcnQsXG4gICAgICAgICAgaG9tZUZvbGRlcjogaG9tZUZvbGRlcixcbiAgICAgICAgICBsaW51eEZsYXZvclR5cGU6IGluc3RhbmNlT3BlcmF0aW5nU3lzdGVtLFxuICAgICAgICAgIGN1c3RvbURvbWFpbk5hbWU6IGRvbWFpbk5hbWUsXG4gICAgICAgICAgcmVwb1VybDogcHJvcHM/LnJlcG9VcmwsXG4gICAgICAgICAgYXNzZXRaaXBTM1BhdGg6IHByb3BzPy5hc3NldFppcFMzUGF0aCxcbiAgICAgICAgICBicmFuY2haaXBTM1BhdGg6IHByb3BzPy5icmFuY2haaXBTM1BhdGgsXG4gICAgICAgICAgZm9sZGVyWmlwUzNQYXRoOiBwcm9wcz8uZm9sZGVyWmlwUzNQYXRoLFxuICAgICAgICAgIGN1c3RvbUluc3RhbGxTdGVwczogcHJvcHM/LmN1c3RvbUluc3RhbGxTdGVwcyxcbiAgICAgICAgfSkuX2JpbmQodGhpcyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBMaW51eEZsYXZvclR5cGUuQU1BWk9OX0xJTlVYXzIwMjM6XG4gICAgICAgIGluc3RhbGxlciA9IEluc3RhbGxlci5hbWF6b25MaW51eDIwMjMoe1xuICAgICAgICAgIGluc3RhbmNlSWQ6IHRoaXMuaW5zdGFuY2UuaW5zdGFuY2VJZCxcbiAgICAgICAgICB2c0NvZGVVc2VyOiB2c0NvZGVVc2VyLFxuICAgICAgICAgIHZzQ29kZVBhc3N3b3JkOiB2c2NvZGVQYXNzd29yZCxcbiAgICAgICAgICBkZXZTZXJ2ZXJCYXNlUGF0aDogcHJvcHM/LmRldlNlcnZlckJhc2VQYXRoLFxuICAgICAgICAgIGRldlNlcnZlclBvcnQ6IHByb3BzPy5kZXZTZXJ2ZXJQb3J0LFxuICAgICAgICAgIGhvbWVGb2xkZXI6IGhvbWVGb2xkZXIsXG4gICAgICAgICAgbGludXhGbGF2b3JUeXBlOiBpbnN0YW5jZU9wZXJhdGluZ1N5c3RlbSxcbiAgICAgICAgICBjdXN0b21Eb21haW5OYW1lOiBkb21haW5OYW1lLFxuICAgICAgICAgIHJlcG9Vcmw6IHByb3BzPy5yZXBvVXJsLFxuICAgICAgICAgIGFzc2V0WmlwUzNQYXRoOiBwcm9wcz8uYXNzZXRaaXBTM1BhdGgsXG4gICAgICAgICAgYnJhbmNoWmlwUzNQYXRoOiBwcm9wcz8uYnJhbmNoWmlwUzNQYXRoLFxuICAgICAgICAgIGZvbGRlclppcFMzUGF0aDogcHJvcHM/LmZvbGRlclppcFMzUGF0aCxcbiAgICAgICAgICBjdXN0b21JbnN0YWxsU3RlcHM6IHByb3BzPy5jdXN0b21JbnN0YWxsU3RlcHMsXG4gICAgICAgIH0pLl9iaW5kKHRoaXMpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgTGludXggZmxhdm9yOiAke2luc3RhbmNlT3BlcmF0aW5nU3lzdGVtfWApO1xuICAgIH1cblxuICAgIGlmICghaW5zdGFsbGVyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0luc3RhbGxlciB3YXMgbm90IGNyZWF0ZWQgLSB0aGlzIHNob3VsZCBuZXZlciBoYXBwZW4nKTtcbiAgICB9XG4gICAgLy8gc28gd2UgcGFzcyB0aGUgb3V0ZXIgc2NvcGUgb2YgdGhpcyBjb25zdHJ1Y3QgdGhyb3VnaCB0aGUgaW5zdGFsbGVyXG5cbiAgICAvLyBOT1RFOiBtYXliZSBoYXZlIGEgaGVhbGhjaGVjayBDRk4gY3VzdG9tIHJlc291cmNlIHRvIHNlZSBpZiB0aGUgdnNjb2RlIHNlcnZlciBpcyBoZWFsdGh5XG4gICAgLy8gYXRtIHRoaXMgaXMgYWNoaWV2ZWQgYnkgdGhlIGludGVnIHRlc3RzXG5cbiAgICAvLyBDcmVhdGUgaWRsZSBtb25pdG9yIGZvciBhdXRvLXN0b3AgZmVhdHVyZVxuICAgIGlmIChwcm9wcz8uZW5hYmxlQXV0b1N0b3ApIHtcbiAgICAgIHRoaXMuaWRsZU1vbml0b3IgPSBuZXcgSWRsZU1vbml0b3IodGhpcywgJ0lkbGVNb25pdG9yJywge1xuICAgICAgICBpbnN0YW5jZTogdGhpcy5pbnN0YW5jZSxcbiAgICAgICAgZGlzdHJpYnV0aW9uOiBkaXN0cmlidXRpb24sXG4gICAgICAgIGlkbGVUaW1lb3V0TWludXRlczogcHJvcHM/LmlkbGVUaW1lb3V0TWludXRlcyA/PyAzMCxcbiAgICAgICAgY2hlY2tJbnRlcnZhbE1pbnV0ZXM6IHByb3BzPy5pZGxlQ2hlY2tJbnRlcnZhbE1pbnV0ZXMgPz8gNSxcbiAgICAgICAgc2tpcFN0YXR1c0NoZWNrczogcHJvcHM/LnNraXBTdGF0dXNDaGVja3MgPz8gZmFsc2UsXG4gICAgICB9KTtcblxuICAgICAgLy8gRW5hYmxlIHRoZSBJZGxlTW9uaXRvciBzY2hlZHVsZSBvbmx5IGFmdGVyIGluc3RhbGxhdGlvbiBjb21wbGV0ZXNcbiAgICAgIC8vIFRoaXMgcHJldmVudHMgdGhlIG1vbml0b3IgZnJvbSBzdG9wcGluZyB0aGUgaW5zdGFuY2UgZHVyaW5nIFZTIENvZGUgU2VydmVyIGluc3RhbGxhdGlvblxuICAgICAgY29uc3QgZW5hYmxlciA9IG5ldyBJZGxlTW9uaXRvckVuYWJsZXIodGhpcywgJ0lkbGVNb25pdG9yRW5hYmxlcicsIHtcbiAgICAgICAgc2NoZWR1bGVSdWxlOiB0aGlzLmlkbGVNb25pdG9yLnNjaGVkdWxlUnVsZSxcbiAgICAgIH0pO1xuXG4gICAgICAvLyBDcmVhdGUgZXhwbGljaXQgZGVwZW5kZW5jeTogZW5hYmxlciBkZXBlbmRzIG9uIGluc3RhbGxlciBjb21wbGV0aW9uXG4gICAgICAvLyBUaGUgaW5zdGFsbGVyIGNyZWF0ZXMgYSBjdXN0b20gcmVzb3VyY2UgbmFtZWQgJ1NTTUluc3RhbGxlckN1c3RvbVJlc291cmNlJ1xuICAgICAgY29uc3QgaW5zdGFsbGVyQ3VzdG9tUmVzb3VyY2UgPSB0aGlzLm5vZGUuZmluZENoaWxkKCdTU01JbnN0YWxsZXJDdXN0b21SZXNvdXJjZScpO1xuICAgICAgZW5hYmxlci5ub2RlLmFkZERlcGVuZGVuY3koaW5zdGFsbGVyQ3VzdG9tUmVzb3VyY2UpO1xuICAgIH1cblxuICAgIC8vIE91dHB1dHNcbiAgICBjb25zdCBmaW5hbERvbWFpbk5hbWUgPSBkb21haW5OYW1lIHx8IGRpc3RyaWJ1dGlvbi5kb21haW5OYW1lO1xuICAgIHRoaXMuZG9tYWluTmFtZSA9IGBodHRwczovLyR7ZmluYWxEb21haW5OYW1lfS8/Zm9sZGVyPSR7aG9tZUZvbGRlcn1gO1xuICAgIG5ldyBDZm5PdXRwdXQodGhpcywgJ2RvbWFpbk5hbWUnLCB7XG4gICAgICBkZXNjcmlwdGlvbjogJ1RoZSBkb21haW4gbmFtZSBvZiB0aGUgZGlzdHJpYnV0aW9uJyxcbiAgICAgIHZhbHVlOiB0aGlzLmRvbWFpbk5hbWUsXG4gICAgfSk7XG5cbiAgICB0aGlzLnBhc3N3b3JkID0gdnNjb2RlUGFzc3dvcmQ7XG4gICAgbmV3IENmbk91dHB1dCh0aGlzLCAncGFzc3dvcmQnLCB7XG4gICAgICBkZXNjcmlwdGlvbjogJ1RoZSBwYXNzd29yZCBmb3IgdGhlIFZTQ29kZSBzZXJ2ZXInLFxuICAgICAgdmFsdWU6IHZzY29kZVBhc3N3b3JkLFxuICAgIH0pO1xuICB9XG59XG5cbi8qKlxuICogVGFncyBhbGwgdGhlIHJlc291cmNlcyBpbiB0aGUgY29uc3RydWN0XG4gKi9cbmNsYXNzIE5vZGVUYWdnZXIgaW1wbGVtZW50cyBJQXNwZWN0IHtcbiAgcHJpdmF0ZSByZWFkb25seSB0YWdzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gIGNvbnN0cnVjdG9yKHRhZ3M6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0pIHtcbiAgICB0aGlzLnRhZ3MgPSB0YWdzO1xuICB9XG5cbiAgdmlzaXQobm9kZTogSUNvbnN0cnVjdCkge1xuICAgIC8vIE9ubHkgdGFnIEwxIGNvbnN0cnVjdHMgKENmblJlc291cmNlKSBhbmQgTDIgY29uc3RydWN0cyB0aGF0IHJlcHJlc2VudCBBV1MgcmVzb3VyY2VzXG4gICAgLy8gVGhpcyBwcmV2ZW50cyBpbmZpbml0ZSBsb29wcyBieSBhdm9pZGluZyB0YWdnaW5nIG9mIGludGVybWVkaWF0ZSBjb25zdHJ1Y3RzXG4gICAgY29uc3Qgbm9kZVR5cGUgPSBub2RlLmNvbnN0cnVjdG9yLm5hbWU7XG5cbiAgICAvLyBDaGVjayBpZiB0aGlzIGlzIGEgQ0RLIEwxIGNvbnN0cnVjdCAoc3RhcnRzIHdpdGggJ0NmbicpIG9yIGtub3duIHRhZ2dhYmxlIEwyIGNvbnN0cnVjdHNcbiAgICBjb25zdCBpc1RhZ2dhYmxlQ29uc3RydWN0ID1cbiAgICAgIG5vZGVUeXBlLnN0YXJ0c1dpdGgoJ0NmbicpIHx8XG4gICAgICBub2RlVHlwZS5pbmNsdWRlcygnSW5zdGFuY2UnKSB8fFxuICAgICAgbm9kZVR5cGUuaW5jbHVkZXMoJ1ZwYycpIHx8XG4gICAgICBub2RlVHlwZS5pbmNsdWRlcygnU3VibmV0JykgfHxcbiAgICAgIG5vZGVUeXBlLmluY2x1ZGVzKCdTZWN1cml0eUdyb3VwJykgfHxcbiAgICAgIG5vZGVUeXBlLmluY2x1ZGVzKCdWb2x1bWUnKSB8fFxuICAgICAgbm9kZVR5cGUuaW5jbHVkZXMoJ0Rpc3RyaWJ1dGlvbicpIHx8XG4gICAgICBub2RlVHlwZS5pbmNsdWRlcygnTG9hZEJhbGFuY2VyJykgfHxcbiAgICAgIG5vZGVUeXBlLmluY2x1ZGVzKCdUYXJnZXRHcm91cCcpO1xuXG4gICAgLy8gU2tpcCBjb25zdHJ1Y3RzIHRoYXQgYXJlIGtub3duIHRvIGNhdXNlIGlzc3Vlc1xuICAgIGNvbnN0IGlzUHJvYmxlbWF0aWNDb25zdHJ1Y3QgPVxuICAgICAgbm9kZVR5cGUuaW5jbHVkZXMoJ0NlcnRpZmljYXRlJykgfHxcbiAgICAgIG5vZGVUeXBlLmluY2x1ZGVzKCdIb3N0ZWRab25lJykgfHxcbiAgICAgIG5vZGVUeXBlLmluY2x1ZGVzKCdDdXN0b21SZXNvdXJjZScpIHx8XG4gICAgICBub2RlVHlwZS5pbmNsdWRlcygnUHJvdmlkZXInKSB8fFxuICAgICAgbm9kZVR5cGUuaW5jbHVkZXMoJ0Z1bmN0aW9uJykgfHxcbiAgICAgIG5vZGVUeXBlLmluY2x1ZGVzKCdSb2xlJykgfHxcbiAgICAgIG5vZGVUeXBlLmluY2x1ZGVzKCdQb2xpY3knKTtcblxuICAgIGlmIChpc1RhZ2dhYmxlQ29uc3RydWN0ICYmICFpc1Byb2JsZW1hdGljQ29uc3RydWN0KSB7XG4gICAgICBPYmplY3QuZW50cmllcyh0aGlzLnRhZ3MpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIFRhZ3Mub2Yobm9kZSkuYWRkKGtleSwgdmFsdWUpO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIC8vIFNpbGVudGx5IGlnbm9yZSB0YWdnaW5nIGVycm9yc1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
693
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidnNjb2RlLXNlcnZlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy92c2NvZGUtc2VydmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNkNBUXFCO0FBQ3JCLDBEQUEwRDtBQUMxRCxpREFBaUQ7QUFDakQsMERBQTBEO0FBQzFELDJDQUEyQztBQUMzQywyQ0FBMkM7QUFDM0MsbURBQW1EO0FBQ25ELGtFQUFrRTtBQUNsRSxpRUFBaUU7QUFDakUscUNBQTBDO0FBQzFDLDJDQUFtRDtBQUNuRCw4REFBMEQ7QUFDMUQsc0ZBQWlGO0FBQ2pGLHFEQUFrRDtBQUNsRCx5Q0FBNkU7QUFDN0Usc0ZBQW1GO0FBQ25GLDBFQUFzRTtBQStRdEU7O0dBRUc7QUFDSCxJQUFZLGVBb0JYO0FBcEJELFdBQVksZUFBZTtJQUN6Qjs7T0FFRztJQUNILHlDQUFzQixDQUFBO0lBRXRCOztPQUVHO0lBQ0gseUNBQXNCLENBQUE7SUFFdEI7O09BRUc7SUFDSCx5Q0FBc0IsQ0FBQTtJQUV0Qjs7T0FFRztJQUNILCtDQUE0QixDQUFBO0FBQzlCLENBQUMsRUFwQlcsZUFBZSwrQkFBZixlQUFlLFFBb0IxQjtBQUVEOztHQUVHO0FBQ0gsSUFBWSxxQkFVWDtBQVZELFdBQVkscUJBQXFCO0lBQy9COztPQUVHO0lBQ0gsb0NBQVcsQ0FBQTtJQUVYOztPQUVHO0lBQ0gsd0NBQWUsQ0FBQTtBQUNqQixDQUFDLEVBVlcscUJBQXFCLHFDQUFyQixxQkFBcUIsUUFVaEM7QUFFRDs7R0FFRztBQUNILE1BQWEsWUFBYSxTQUFRLHNCQUFTO0lBcUJ6QyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQXlCO1FBQ2pFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsV0FBVztRQUNYLE1BQU0sVUFBVSxHQUFHLEtBQUssRUFBRSxVQUFVLElBQUksYUFBYSxDQUFDO1FBQ3RELE1BQU0sWUFBWSxHQUFHLEtBQUssRUFBRSxZQUFZLElB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QUFRLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQztZQUNqQyxRQUFRLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRW5DLGlEQUFpRDtRQUNqRCxNQUFNLHNCQUFzQixHQUMxQixRQUFRLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQztZQUNoQyxRQUFRLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQztZQUMvQixRQUFRLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDO1lBQ25DLFFBQVEsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDO1lBQzdCLFFBQVEsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDO1lBQzdCLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO1lBQ3pCLFFBQVEsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFOUIsSUFBSSxtQkFBbUIsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7WUFDbkQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRTtnQkFDakQsSUFBSSxDQUFDO29CQUNILGtCQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQ2hDLENBQUM7Z0JBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztvQkFDZixpQ0FBaUM7Z0JBQ25DLENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBc3BlY3RzLFxuICBDZm5PdXRwdXQsXG4gIER1cmF0aW9uLFxuICBGbixcbiAgSUFzcGVjdCxcbiAgU3RhY2ssXG4gIFRhZ3MsXG59IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCAqIGFzIGFjbSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY2VydGlmaWNhdGVtYW5hZ2VyJztcbmltcG9ydCAqIGFzIGNmIGZyb20gJ2F3cy1jZGstbGliL2F3cy1jbG91ZGZyb250JztcbmltcG9ydCAqIGFzIGNmbyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY2xvdWRmcm9udC1vcmlnaW5zJztcbmltcG9ydCAqIGFzIGVjMiBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWMyJztcbmltcG9ydCAqIGFzIGlhbSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCAqIGFzIHJvdXRlNTMgZnJvbSAnYXdzLWNkay1saWIvYXdzLXJvdXRlNTMnO1xuaW1wb3J0ICogYXMgcm91dGU1M3RhcmdldHMgZnJvbSAnYXdzLWNkay1saWIvYXdzLXJvdXRlNTMtdGFyZ2V0cyc7XG5pbXBvcnQgKiBhcyBzZWNyZXRzbWFuYWdlciBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc2VjcmV0c21hbmFnZXInO1xuaW1wb3J0IHsgTmFnU3VwcHJlc3Npb25zIH0gZnJvbSAnY2RrLW5hZyc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QsIElDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IElkbGVNb25pdG9yIH0gZnJvbSAnLi9pZGxlLW1vbml0b3IvaWRsZS1tb25pdG9yJztcbmltcG9ydCB7IElkbGVNb25pdG9yRW5hYmxlciB9IGZyb20gJy4vaWRsZS1tb25pdG9yLWVuYWJsZXIvaWRsZS1tb25pdG9yLWVuYWJsZXInO1xuaW1wb3J0IHsgSW5zdGFsbGVyIH0gZnJvbSAnLi9pbnN0YWxsZXIvaW5zdGFsbGVyJztcbmltcG9ydCB7IGdldEFtaVNTTVBhcmFtZXRlckZvckxpbnV4QXJjaGl0ZWN0dXJlQW5kRmxhdm9yIH0gZnJvbSAnLi9tYXBwaW5ncyc7XG5pbXBvcnQgeyBBd3NNYW5hZ2VkUHJlZml4TGlzdCB9IGZyb20gJy4vcHJlZml4bGlzdC1yZXRyaWV2ZXIvcHJlZml4bGlzdC1yZXRyaWV2ZXInO1xuaW1wb3J0IHsgU2VjcmV0UmV0cmlldmVyIH0gZnJvbSAnLi9zZWNyZXQtcmV0cmlldmVyL3NlY3JldC1yZXRyaWV2ZXInO1xuXG4vKipcbiAqIEN1c3RvbSBpbnN0YWxsYXRpb24gc3RlcCBmb3IgU1NNIGRvY3VtZW50XG4gKiBBbGxvd3MgdXNlcnMgdG8gZXh0ZW5kIHRoZSBpbnN0YWxsZXIgd2l0aCBhZGRpdGlvbmFsIHNoZWxsIGNvbW1hbmRzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ3VzdG9tSW5zdGFsbFN0ZXAge1xuICAvKipcbiAgICogTmFtZSBvZiB0aGUgaW5zdGFsbGF0aW9uIHN0ZXBcbiAgICogTXVzdCBiZSB1bmlxdWUgd2l0aGluIHRoZSBTU00gZG9jdW1lbnRcbiAgICpcbiAgICogQGV4YW1wbGUgJ0luc3RhbGxDdXN0b21Ub29sJ1xuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTaGVsbCBjb21tYW5kcyB0byBydW4gZm9yIHRoaXMgc3RlcFxuICAgKiBFYWNoIGNvbW1hbmQgd2lsbCBiZSBleGVjdXRlZCBpbiBzZXF1ZW5jZVxuICAgKlxuICAgKiBAZXhhbXBsZSBbJyMhL2Jpbi9iYXNoJywgJ2VjaG8gXCJJbnN0YWxsaW5nIGN1c3RvbSB0b29sXCInLCAnYXB0LWdldCBpbnN0YWxsIC15IG15LXRvb2wnXVxuICAgKi9cbiAgcmVhZG9ubHkgY29tbWFuZHM6IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIHRoZSBWU0NvZGVTZXJ2ZXIgY29uc3RydWN0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVlNDb2RlU2VydmVyUHJvcHMge1xuICAvKipcbiAgICogVXNlck5hbWUgZm9yIFZTQ29kZSBTZXJ2ZXJcbiAgICpcbiAgICogQGRlZmF1bHQgLSBwYXJ0aWNpcGFudFxuICAgKi9cbiAgcmVhZG9ubHkgdnNjb2RlVXNlcj86IHN0cmluZztcblxuICAvKipcbiAgICogUGFzc3dvcmQgZm9yIFZTQ29kZSBTZXJ2ZXJcbiAgICpcbiAgICogQGRlZmF1bHQgLSBlbXB0eSBhbmQgd2lsbCB0aGVuIGJlIGdlbmVyYXRlZFxuICAgKi9cbiAgcmVhZG9ubHkgdnNjb2RlUGFzc3dvcmQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFZTQ29kZSBTZXJ2ZXIgRUMyIGluc3RhbmNlIG5hbWVcbiAgICpcbiAgICogQGRlZmF1bHQgLSBWU0NvZGVTZXJ2ZXJcbiAgICovXG4gIHJlYWRvbmx5IGluc3RhbmNlTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogVlNDb2RlIFNlcnZlciBFQzIgaW5zdGFuY2Ugdm9sdW1lIHNpemUgaW4gR0JcbiAgICpcbiAgICogQGRlZmF1bHQgLSA0MFxuICAgKi9cbiAgcmVhZG9ubHkgaW5zdGFuY2VWb2x1bWVTaXplPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBWU0NvZGUgU2VydmVyIEVDMiBpbnN0YW5jZSBjbGFzc1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIG03Z1xuICAgKi9cbiAgcmVhZG9ubHkgaW5zdGFuY2VDbGFzcz86IGVjMi5JbnN0YW5jZUNsYXNzO1xuXG4gIC8qKlxuICAgKiBWU0NvZGUgU2VydmVyIEVDMiBpbnN0YW5jZSBzaXplXG4gICAqXG4gICAqIEBkZWZhdWx0IC0geGxhcmdlXG4gICAqL1xuICByZWFkb25seSBpbnN0YW5jZVNpemU/OiBlYzIuSW5zdGFuY2VTaXplO1xuXG4gIC8qKlxuICAgKiBWU0NvZGUgU2VydmVyIEVDMiBvcGVyYXRpbmcgc3lzdGVtXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gVWJ1bnR1LTI0XG4gICAqL1xuICByZWFkb25seSBpbnN0YW5jZU9wZXJhdGluZ1N5c3RlbT86IExpbnV4Rmxhdm9yVHlwZTtcblxuICAvKipcbiAgICogVlNDb2RlIFNlcnZlciBFQzIgY3B1IGFyY2hpdGVjdHVyZSBmb3IgdGhlIG9wZXJhdGluZyBzeXN0ZW1cbiAgICpcbiAgICogQGRlZmF1bHQgLSBhcm1cbiAgICovXG4gIHJlYWRvbmx5IGluc3RhbmNlQ3B1QXJjaGl0ZWN0dXJlPzogTGludXhBcmNoaXRlY3R1cmVUeXBlO1xuXG4gIC8qKlxuICAgKiBGb2xkZXIgdG8gb3BlbiBpbiBWUyBDb2RlIHNlcnZlclxuICAgKlxuICAgKiBAZGVmYXVsdCAtIC9Xb3Jrc2hvcFxuICAgKi9cbiAgcmVhZG9ubHkgaG9tZUZvbGRlcj86IHN0cmluZztcblxuICAvKipcbiAgICogQmFzZSBwYXRoIGZvciB0aGUgYXBwbGljYXRpb24gdG8gYmUgYWRkZWQgdG8gTmdpbnggc2l0ZXMtYXZhaWxhYmxlIGxpc3RcbiAgICpcbiAgICogQGRlZmF1bHQgLSBhcHBcbiAgICovXG4gIHJlYWRvbmx5IGRldlNlcnZlckJhc2VQYXRoPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBQb3J0IGZvciB0aGUgRGV2U2VydmVyXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gODA4MVxuICAgKi9cbiAgcmVhZG9ubHkgZGV2U2VydmVyUG9ydD86IG51bWJlcjtcblxuICAvKipcbiAgICogQWRkaXRpb25hbCBpbnN0YW5jZSByb2xlIHBvbGljaWVzXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gW11cbiAgICovXG4gIHJlYWRvbmx5IGFkZGl0aW9uYWxJbnN0YW5jZVJvbGVQb2xpY2llcz86IGlhbS5Qb2xpY3lTdGF0ZW1lbnRbXTtcblxuICAvKipcbiAgICogQWRkaXRpb25hbCB0YWdzIHRvIGFkZCB0byB0aGUgaW5zdGFuY2VcbiAgICpcbiAgICogQGRlZmF1bHQgLSB7fVxuICAgKi9cbiAgcmVhZG9ubHkgYWRkaXRpb25hbFRhZ3M/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gIC8qKlxuICAgKiBDdXN0b20gZG9tYWluIG5hbWUgZm9yIHRoZSBWUyBDb2RlIHNlcnZlclxuICAgKiBXaGVuIHByb3ZpZGVkLCBjcmVhdGVzIGEgQ2xvdWRGcm9udCBkaXN0cmlidXRpb24gd2l0aCB0aGlzIGRvbWFpbiBuYW1lXG4gICAqIGFuZCBzZXRzIHVwIFJvdXRlNTMgQSByZWNvcmQgcG9pbnRpbmcgdG8gdGhlIGRpc3RyaWJ1dGlvblxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHVzZXMgQ2xvdWRGcm9udCBkZWZhdWx0IGRvbWFpblxuICAgKi9cbiAgcmVhZG9ubHkgZG9tYWluTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogUm91dGU1MyBob3N0ZWQgem9uZSBJRCBmb3IgdGhlIGRvbWFpblxuICAgKiBSZXF1aXJlZCB3aGVuIHVzaW5nIGF1dG9DcmVhdGVDZXJ0aWZpY2F0ZVxuICAgKiBJZiBub3QgcHJvdmlkZWQsIHdpbGwgYXR0ZW1wdCB0byBsb29rdXAgaG9zdGVkIHpvbmUgZnJvbSBkb21haW4gbmFtZVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGF1dG8tZGlzY292ZXIgZnJvbSBkb21haW4gbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgaG9zdGVkWm9uZUlkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBUk4gb2YgZXhpc3RpbmcgQUNNIGNlcnRpZmljYXRlIGZvciB0aGUgZG9tYWluXG4gICAqIENlcnRpZmljYXRlIG11c3QgYmUgaW4gdXMtZWFzdC0xIHJlZ2lvbiBmb3IgQ2xvdWRGcm9udFxuICAgKiBDYW5ub3QgYmUgdXNlZCB0b2dldGhlciB3aXRoIGF1dG9DcmVhdGVDZXJ0aWZpY2F0ZVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGF1dG8tY3JlYXRlIGNlcnRpZmljYXRlIGlmIGF1dG9DcmVhdGVDZXJ0aWZpY2F0ZSBpcyB0cnVlXG4gICAqL1xuICByZWFkb25seSBjZXJ0aWZpY2F0ZUFybj86IHN0cmluZztcblxuICAvKipcbiAgICogQXV0by1jcmVhdGUgQUNNIGNlcnRpZmljYXRlIHdpdGggRE5TIHZhbGlkYXRpb24gaW4gdXMtZWFzdC0xIHJlZ2lvblxuICAgKiBSZXF1aXJlcyBob3N0ZWRab25lSWQgdG8gYmUgcHJvdmlkZWQgZm9yIEROUyB2YWxpZGF0aW9uXG4gICAqIENhbm5vdCBiZSB1c2VkIHRvZ2V0aGVyIHdpdGggY2VydGlmaWNhdGVBcm5cbiAgICogQ2VydGlmaWNhdGUgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNyZWF0ZWQgaW4gdXMtZWFzdC0xIGFzIHJlcXVpcmVkIGJ5IENsb3VkRnJvbnRcbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGF1dG9DcmVhdGVDZXJ0aWZpY2F0ZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEVuYWJsZSBhdXRvbWF0aWMgaW5zdGFuY2Ugc3RvcCB3aGVuIGlkbGVcbiAgICogTW9uaXRvcnMgQ2xvdWRGcm9udCBtZXRyaWNzIGFuZCBzdG9wcyB0aGUgRUMyIGluc3RhbmNlIGFmdGVyIHNwZWNpZmllZCBpZGxlIHRpbWVcbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGVuYWJsZUF1dG9TdG9wPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogTWludXRlcyBvZiBpbmFjdGl2aXR5IGJlZm9yZSBzdG9wcGluZyB0aGUgaW5zdGFuY2VcbiAgICogT25seSBhcHBsaWVzIHdoZW4gZW5hYmxlQXV0b1N0b3AgaXMgdHJ1ZVxuICAgKlxuICAgKiBAZGVmYXVsdCAzMFxuICAgKi9cbiAgcmVhZG9ubHkgaWRsZVRpbWVvdXRNaW51dGVzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBIb3cgb2Z0ZW4gdG8gY2hlY2sgZm9yIGlkbGUgYWN0aXZpdHkgKGluIG1pbnV0ZXMpXG4gICAqIE9ubHkgYXBwbGllcyB3aGVuIGVuYWJsZUF1dG9TdG9wIGlzIHRydWVcbiAgICpcbiAgICogQGRlZmF1bHQgNSAtIENoZWNrIGV2ZXJ5IDUgbWludXRlc1xuICAgKi9cbiAgcmVhZG9ubHkgaWRsZUNoZWNrSW50ZXJ2YWxNaW51dGVzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBTa2lwIGluc3RhbmNlIHN0YXR1cyBjaGVja3MgaW4gSWRsZU1vbml0b3JcbiAgICogV2hlbiB0cnVlLCBJZGxlTW9uaXRvciB3aWxsIHN0b3AgaWRsZSBpbnN0YW5jZXMgZXZlbiBpZiBzdGF0dXMgY2hlY2tzIGhhdmVuJ3QgcGFzc2VkXG4gICAqIFRoaXMgaXMgdXNlZnVsIGZvciBpbnRlZ3JhdGlvbiB0ZXN0cyB3aGVyZSBzdGF0dXMgY2hlY2sgaW5pdGlhbGl6YXRpb24gdGltZVxuICAgKiBleGNlZWRzIHRoZSB0ZXN0IHRpbWVvdXQgbGltaXRzXG4gICAqXG4gICAqIFdBUk5JTkc6IEZvciB0ZXN0aW5nIG9ubHkgLSBpbiBwcm9kdWN0aW9uLCB5b3Ugc2hvdWxkIHdhaXQgZm9yIHN0YXR1cyBjaGVja3NcbiAgICogdG8gcGFzcyBiZWZvcmUgc3RvcHBpbmcgaW5zdGFuY2VzIHRvIGF2b2lkIHN0b3BwaW5nIHVuaGVhbHRoeSBpbnN0YW5jZXNcbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHNraXBTdGF0dXNDaGVja3M/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBSZW1vdGUgZ2l0IHJlcG9zaXRvcnkgVVJMIHRvIGNsb25lIGludG8gdGhlIGhvbWUgZm9sZGVyLlxuICAgKlxuICAgKiBJZiBwcm92aWRlZCwgdGhlIHJlcG9zaXRvcnkgd2lsbCBiZSBjbG9uZWQgaW50byB0aGUgdXNlcidzIGhvbWUgZm9sZGVyIGR1cmluZyBpbnN0YW5jZSBzZXR1cC5cbiAgICogVXNlZnVsIGZvciBwcmUtcG9wdWxhdGluZyB3b3Jrc2hvcCBlbnZpcm9ubWVudHMgd2l0aCBzdGFydGVyIGNvZGUuXG4gICAqXG4gICAqIEBleGFtcGxlICdodHRwczovL2dpdGh1Yi5jb20vYXdzLXNhbXBsZXMvbXktd29ya3Nob3AtcmVwby5naXQnXG4gICAqIEBkZWZhdWx0IC0gbm8gcmVwbyBjbG9uZWRcbiAgICovXG4gIHJlYWRvbmx5IHJlcG9Vcmw/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFMzIHBhdGggdG8gYSB6aXAgZmlsZSBjb250YWluaW5nIGFzc2V0cyB0byBleHRyYWN0IGludG8gdGhlIGhvbWUgZm9sZGVyLlxuICAgKlxuICAgKiBUaGUgemlwIGNvbnRlbnRzIHdpbGwgYmUgZXh0cmFjdGVkIHRvIHRoZSB1c2VyJ3MgaG9tZSBmb2xkZXIgYW5kIGNvbW1pdHRlZCB0byBnaXQuXG4gICAqIFVzZSB0aGlzIHRvIHByb3ZpZGUgd29ya3Nob3AgbWF0ZXJpYWxzLCBzYW1wbGUgZGF0YSwgb3IgY29uZmlndXJhdGlvbiBmaWxlcy5cbiAgICpcbiAgICogQGV4YW1wbGUgJ215LXdvcmtzaG9wLWJ1Y2tldC9hc3NldHMvd29ya3Nob3AtbWF0ZXJpYWxzLnppcCdcbiAgICogQGRlZmF1bHQgLSBubyBhc3NldHMgZG93bmxvYWRlZFxuICAgKi9cbiAgcmVhZG9ubHkgYXNzZXRaaXBTM1BhdGg/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFMzIHBhdGggdG8gYSB6aXAgZmlsZSBjb250YWluaW5nIGdpdCBicmFuY2hlcyB0byBjcmVhdGUgaW4gdGhlIGhvbWUgZm9sZGVyIHJlcG9zaXRvcnkuXG4gICAqXG4gICAqIEVhY2ggdG9wLWxldmVsIGZvbGRlciBpbiB0aGUgemlwIGJlY29tZXMgYSBzZXBhcmF0ZSBnaXQgYnJhbmNoIHdpdGggdGhhdCBmb2xkZXIncyBjb250ZW50cy5cbiAgICogSWRlYWwgZm9yIGNyZWF0aW5nIHN0ZXAtYnktc3RlcCB3b3Jrc2hvcCBicmFuY2hlcyAoZS5nLiwgc3RlcC0xLCBzdGVwLTIsIHNvbHV0aW9uKS5cbiAgICpcbiAgICogQGV4YW1wbGUgJ215LXdvcmtzaG9wLWJ1Y2tldC9icmFuY2hlcy9sYWItYnJhbmNoZXMuemlwJyAoY29udGFpbmluZyBmb2xkZXJzOiBzdGVwLTEvLCBzdGVwLTIvLCBzb2x1dGlvbi8pXG4gICAqIEBkZWZhdWx0IC0gbm8gYnJhbmNoZXMgY3JlYXRlZFxuICAgKi9cbiAgcmVhZG9ubHkgYnJhbmNoWmlwUzNQYXRoPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTMyBwYXRoIHRvIGEgemlwIGZpbGUgY29udGFpbmluZyBtdWx0aXBsZSBmb2xkZXJzIHRvIGNyZWF0ZSBhcyBzZXBhcmF0ZSBnaXQgcmVwb3NpdG9yaWVzLlxuICAgKlxuICAgKiBFYWNoIHRvcC1sZXZlbCBmb2xkZXIgaW4gdGhlIHppcCBiZWNvbWVzIGEgc2VwYXJhdGUgc3ViZm9sZGVyIGluIHRoZSBwYXJlbnQgZGlyZWN0b3J5LFxuICAgKiBpbml0aWFsaXplZCBhcyBpdHMgb3duIGdpdCByZXBvc2l0b3J5LiBVc2VmdWwgZm9yIG11bHRpLXByb2plY3Qgd29ya3Nob3BzLlxuICAgKlxuICAgKiBAZXhhbXBsZSAnbXktd29ya3Nob3AtYnVja2V0L2ZvbGRlcnMvd29ya3Nob3AtcHJvamVjdHMuemlwJyAoY29udGFpbmluZyBmb2xkZXJzOiBmcm9udGVuZC8sIGJhY2tlbmQvLCBpbmZyYXN0cnVjdHVyZS8pXG4gICAqIEBkZWZhdWx0IC0gbm8gZm9sZGVycyBjcmVhdGVkXG4gICAqL1xuICByZWFkb25seSBmb2xkZXJaaXBTM1BhdGg/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEN1c3RvbSBpbnN0YWxsYXRpb24gc3RlcHMgdG8gZXh0ZW5kIHRoZSBTU00gZG9jdW1lbnRcbiAgICpcbiAgICogQWxsb3dzIHlvdSB0byBhZGQgYWRkaXRpb25hbCBzaGVsbCBjb21tYW5kcyB0aGF0IHJ1biBhZnRlciB0aGUgc3RhbmRhcmQgaW5zdGFsbGF0aW9uIHN0ZXBzLlxuICAgKiBVc2VmdWwgZm9yIGluc3RhbGxpbmcgd29ya3Nob3Atc3BlY2lmaWMgdG9vbHMsIGNvbmZpZ3VyaW5nIGN1c3RvbSBlbnZpcm9ubWVudHMsIG9yIHJ1bm5pbmdcbiAgICogc2V0dXAgc2NyaXB0cy5cbiAgICpcbiAgICogRWFjaCBzdGVwIHdpbGwgYmUgZXhlY3V0ZWQgaW4gdGhlIG9yZGVyIHByb3ZpZGVkLCBhZnRlciBhbGwgc3RhbmRhcmQgaW5zdGFsbGF0aW9uIHN0ZXBzIGNvbXBsZXRlLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBjdXN0b21JbnN0YWxsU3RlcHM6IFtcbiAgICogICB7XG4gICAqICAgICBuYW1lOiAnSW5zdGFsbEN1c3RvbVRvb2wnLFxuICAgKiAgICAgY29tbWFuZHM6IFtcbiAgICogICAgICAgJyMhL2Jpbi9iYXNoJyxcbiAgICogICAgICAgJ2VjaG8gXCJJbnN0YWxsaW5nIG15IGN1c3RvbSB0b29sXCInLFxuICAgKiAgICAgICAnY3VybCAtTyBodHRwczovL2V4YW1wbGUuY29tL3Rvb2wuc2gnLFxuICAgKiAgICAgICAnYmFzaCB0b29sLnNoJyxcbiAgICogICAgIF0sXG4gICAqICAgfSxcbiAgICogICB7XG4gICAqICAgICBuYW1lOiAnQ29uZmlndXJlV29ya3Nob3BFbnYnLFxuICAgKiAgICAgY29tbWFuZHM6IFtcbiAgICogICAgICAgJyMhL2Jpbi9iYXNoJyxcbiAgICogICAgICAgJ2VjaG8gXCJleHBvcnQgTVlfVkFSPXZhbHVlXCIgPj4gL2hvbWUvcGFydGljaXBhbnQvLmJhc2hyYycsXG4gICAqICAgICBdLFxuICAgKiAgIH0sXG4gICAqIF1cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBjdXN0b20gaW5zdGFsbGF0aW9uIHN0ZXBzXG4gICAqL1xuICByZWFkb25seSBjdXN0b21JbnN0YWxsU3RlcHM/OiBDdXN0b21JbnN0YWxsU3RlcFtdO1xufVxuXG4vKipcbiAqIFRoZSBmbGF2b3Igb2YgbGludXggeW91IHdhbnQgdG8gcnVuIHZzY29kZSBzZXJ2ZXIgb25cbiAqL1xuZXhwb3J0IGVudW0gTGludXhGbGF2b3JUeXBlIHtcbiAgLyoqXG4gICAqIFVidW50dSAyMlxuICAgKi9cbiAgVUJVTlRVXzIyID0gJ3VidW50dTIyJyxcblxuICAvKipcbiAgICogVWJ1bnR1IDI0XG4gICAqL1xuICBVQlVOVFVfMjQgPSAndWJ1bnR1MjQnLFxuXG4gIC8qKlxuICAgKiBVYnVudHUgMjVcbiAgICovXG4gIFVCVU5UVV8yNSA9ICd1YnVudHUyNScsXG5cbiAgLyoqXG4gICAqIEFtYXpvbiBMaW51eCAyMDIzXG4gICAqL1xuICBBTUFaT05fTElOVVhfMjAyMyA9ICdhbDIwMjMnLFxufVxuXG4vKipcbiAqIFRoZSBhcmNoaXRlY3R1cmUgb2YgdGhlIGNwdSB5b3Ugd2FudCB0byBydW4gdnNjb2RlIHNlcnZlciBvblxuICovXG5leHBvcnQgZW51bSBMaW51eEFyY2hpdGVjdHVyZVR5cGUge1xuICAvKipcbiAgICogQVJNIGFyY2hpdGVjdHVyZVxuICAgKi9cbiAgQVJNID0gJ2FybScsXG5cbiAgLyoqXG4gICAqIEFNRDY0IGFyY2hpdGVjdHVyZVxuICAgKi9cbiAgQU1ENjQgPSAnYW1kNjQnLFxufVxuXG4vKipcbiAqIFZTQ29kZVNlcnZlciAtIHNwaW4gaXQgdXAgaW4gdW5kZXIgMTAgbWludXRlc1xuICovXG5leHBvcnQgY2xhc3MgVlNDb2RlU2VydmVyIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBkb21haW4gdGhlIHNlcnZlciBpcyByZWFjaGFibGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBkb21haW5OYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwYXNzd29yZCB0byBsb2dpbiB0byB0aGUgc2VydmVyXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcGFzc3dvcmQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIEVDMiBpbnN0YW5jZSBydW5uaW5nIFZTIENvZGUgU2VydmVyXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgaW5zdGFuY2U6IGVjMi5JSW5zdGFuY2U7XG5cbiAgLyoqXG4gICAqIFRoZSBJZGxlTW9uaXRvciBjb25zdHJ1Y3QgKG9ubHkgcHJlc2VudCBpZiBlbmFibGVBdXRvU3RvcCBpcyB0cnVlKVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGlkbGVNb25pdG9yPzogSWRsZU1vbml0b3I7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM/OiBWU0NvZGVTZXJ2ZXJQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICAvLyBkZWZhdWx0c1xuICAgIGNvbnN0IHZzQ29kZVVzZXIgPSBwcm9wcz8udnNjb2RlVXNlciA/PyAncGFydGljaXBhbnQnO1xuICAgIGNvbnN0IGluc3RhbmNlTmFtZSA9IHByb3BzPy5pbnN0YW5jZU5hbWUgPz8gJ1ZTQ29kZVNlcnZlcic7XG4gICAgY29uc3QgaW5zdGFuY2VWb2x1bWVTaXplID0gcHJvcHM/Lmluc3RhbmNlVm9sdW1lU2l6ZSA/PyA0MDtcbiAgICBjb25zdCBob21lRm9sZGVyID0gcHJvcHM/LmhvbWVGb2xkZXIgPz8gJy9Xb3Jrc2hvcCc7XG4gICAgY29uc3QgaW5zdGFuY2VDbGFzcyA9IHByb3BzPy5pbnN0YW5jZUNsYXNzID8/IGVjMi5JbnN0YW5jZUNsYXNzLk03RztcbiAgICBjb25zdCBpbnN0YW5jZVNpemUgPSBwcm9wcz8uaW5zdGFuY2VTaXplID8/IGVjMi5JbnN0YW5jZVNpemUuWExBUkdFO1xuICAgIGNvbnN0IGluc3RhbmNlVHlwZSA9IGVjMi5JbnN0YW5jZVR5cGUub2YoaW5zdGFuY2VDbGFzcywgaW5zdGFuY2VTaXplKTtcbiAgICBjb25zdCBpbnN0YW5jZU9wZXJhdGluZ1N5c3RlbSA9XG4gICAgICBwcm9wcz8uaW5zdGFuY2VPcGVyYXRpbmdTeXN0ZW0gPz8gTGludXhGbGF2b3JUeXBlLlVCVU5UVV8yNDtcbiAgICBjb25zdCBpbnN0YW5jZUNwdUFyY2hpdGVjdHVyZSA9XG4gICAgICBwcm9wcz8uaW5zdGFuY2VDcHVBcmNoaXRlY3R1cmUgPz8gTGludXhBcmNoaXRlY3R1cmVUeXBlLkFSTTtcbiAgICBjb25zdCBtYWNoaW5lSW1hZ2VGcm9tU3NtUGFyYW1ldGVyID1cbiAgICAgIGdldEFtaVNTTVBhcmFtZXRlckZvckxpbnV4QXJjaGl0ZWN0dXJlQW5kRmxhdm9yKFxuICAgICAgICBpbnN0YW5jZUNwdUFyY2hpdGVjdHVyZSxcbiAgICAgICAgaW5zdGFuY2VPcGVyYXRpbmdTeXN0ZW0sXG4gICAgICApO1xuICAgIGNvbnN0IGFkZGl0aW9uYWxJbnN0YW5jZVJvbGVQb2xpY2llcyA9XG4gICAgICBwcm9wcz8uYWRkaXRpb25hbEluc3RhbmNlUm9sZVBvbGljaWVzID8/IFtdO1xuICAgIGNvbnN0IGFkZGl0aW9uYWxUYWdzID0gcHJvcHM/LmFkZGl0aW9uYWxUYWdzID8/IHt9O1xuICAgIGNvbnN0IGRlZmF1bHRUYWdzID0geyBhcHA6ICd2c2NvZGUtc2VydmVyJyB9O1xuXG4gICAgY29uc3QgbWVyZ2VkVGFncyA9IHsgLi4uZGVmYXVsdFRhZ3MsIC4uLmFkZGl0aW9uYWxUYWdzIH07XG4gICAgQXNwZWN0cy5vZih0aGlzKS5hZGQobmV3IE5vZGVUYWdnZXIobWVyZ2VkVGFncyksIHsgcHJpb3JpdHk6IDE1MCB9KTtcblxuICAgIC8vIFZhbGlkYXRlIGRvbWFpbiBjb25maWd1cmF0aW9uXG4gICAgY29uc3QgZG9tYWluTmFtZSA9IHByb3BzPy5kb21haW5OYW1lO1xuICAgIGNvbnN0IGhvc3RlZFpvbmVJZCA9IHByb3BzPy5ob3N0ZWRab25lSWQ7XG4gICAgY29uc3QgY2VydGlmaWNhdGVBcm4gPSBwcm9wcz8uY2VydGlmaWNhdGVBcm47XG4gICAgY29uc3QgYXV0b0NyZWF0ZUNlcnRpZmljYXRlID0gcHJvcHM/LmF1dG9DcmVhdGVDZXJ0aWZpY2F0ZSA/PyBmYWxzZTtcblxuICAgIGlmIChkb21haW5OYW1lKSB7XG4gICAgICAvLyBWYWxpZGF0ZSB0aGF0IGVpdGhlciBjZXJ0aWZpY2F0ZUFybiBvciBhdXRvQ3JlYXRlQ2VydGlmaWNhdGUgaXMgcHJvdmlkZWRcbiAgICAgIGlmICghY2VydGlmaWNhdGVBcm4gJiYgIWF1dG9DcmVhdGVDZXJ0aWZpY2F0ZSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgJ1doZW4gZG9tYWluTmFtZSBpcyBwcm92aWRlZCwgZWl0aGVyIGNlcnRpZmljYXRlQXJuIG9yIGF1dG9DcmVhdGVDZXJ0aWZpY2F0ZSBtdXN0IGJlIHNwZWNpZmllZCcsXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIC8vIFZhbGlkYXRlIHRoYXQgYm90aCBjZXJ0aWZpY2F0ZUFybiBhbmQgYXV0b0NyZWF0ZUNlcnRpZmljYXRlIGFyZSBub3QgcHJvdmlkZWQgdG9nZXRoZXJcbiAgICAgIGlmIChjZXJ0aWZpY2F0ZUFybiAmJiBhdXRvQ3JlYXRlQ2VydGlmaWNhdGUpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICdDYW5ub3Qgc3BlY2lmeSBib3RoIGNlcnRpZmljYXRlQXJuIGFuZCBhdXRvQ3JlYXRlQ2VydGlmaWNhdGUuIENob29zZSBvbmUuJyxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgLy8gVmFsaWRhdGUgdGhhdCBob3N0ZWRab25lSWQgaXMgcHJvdmlkZWQgd2hlbiBhdXRvQ3JlYXRlQ2VydGlmaWNhdGUgaXMgdHJ1ZVxuICAgICAgaWYgKGF1dG9DcmVhdGVDZXJ0aWZpY2F0ZSAmJiAhaG9zdGVkWm9uZUlkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAnaG9zdGVkWm9uZUlkIGlzIHJlcXVpcmVkIHdoZW4gYXV0b0NyZWF0ZUNlcnRpZmljYXRlIGlzIHRydWUnLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBWYWxpZGF0ZSB0aGF0IGRvbWFpbi1yZWxhdGVkIHByb3BzIGFyZSBub3QgcHJvdmlkZWQgd2l0aG91dCBkb21haW5OYW1lXG4gICAgICBpZiAoaG9zdGVkWm9uZUlkIHx8IGNlcnRpZmljYXRlQXJuIHx8IGF1dG9DcmVhdGVDZXJ0aWZpY2F0ZSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgJ2hvc3RlZFpvbmVJZCwgY2VydGlmaWNhdGVBcm4sIGFuZCBhdXRvQ3JlYXRlQ2VydGlmaWNhdGUgY2FuIG9ubHkgYmUgdXNlZCB3aXRoIGRvbWFpbk5hbWUnLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIGxldCB2c2NvZGVQYXNzd29yZCA9IHByb3BzPy52c2NvZGVQYXNzd29yZCA/PyAnJztcbiAgICBpZiAodnNjb2RlUGFzc3dvcmQgPT0gJycpIHtcbiAgICAgIC8vIENyZWF0ZSBhIHNlY3JldCB3aGljaCBpcyB0aGVuIGluamVjdCBpbiB0aGUgU1NNIGRvY3VtZW50IHRvIGluc3RhbGwgdnNjb2RlIHNlcnZlclxuICAgICAgY29uc3Qgc2VjcmV0ID0gbmV3IHNlY3JldHNtYW5hZ2VyLlNlY3JldCh0aGlzLCAncGFzc3dvcmQtc2VjcmV0Jywge1xuICAgICAgICBnZW5lcmF0ZVNlY3JldFN0cmluZzoge1xuICAgICAgICAgIHBhc3N3b3JkTGVuZ3RoOiAxNixcbiAgICAgICAgICBzZWNyZXRTdHJpbmdUZW1wbGF0ZTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgdXNlcm5hbWU6IHZzQ29kZVVzZXIsXG4gICAgICAgICAgfSksXG4gICAgICAgICAgZXhjbHVkZVB1bmN0dWF0aW9uOiB0cnVlLFxuICAgICAgICAgIGluY2x1ZGVTcGFjZTogZmFsc2UsXG4gICAgICAgICAgZ2VuZXJhdGVTdHJpbmdLZXk6ICdwYXNzd29yZCcsXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICAgIE5hZ1N1cHByZXNzaW9ucy5hZGRSZXNvdXJjZVN1cHByZXNzaW9ucyhcbiAgICAgICAgW3NlY3JldF0sXG4gICAgICAgIFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpZDogJ0F3c1NvbHV0aW9ucy1TTUc0JyxcbiAgICAgICAgICAgIHJlYXNvbjpcbiAgICAgICAgICAgICAgJ0ZvciB0aGlzIHRtcCB2YyBjb2RlIHNlcnZlciB3ZSBkbyBub3QgbmVlZCBwYXNzd29yZCByb3RhdGlvbicsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgdHJ1ZSxcbiAgICAgICk7XG5cbiAgICAgIC8vIEhhdmUgYSBjdXN0b20gcmVzb3VyY2UgdG8gcGFzcyB0aGUgc2VjcmV0IGRhdGEgb24/IC0+IHllcyBiZWNhdXNlIG5vdCByZXNvbHZhYmxlIG9uIGNvbXBpbGUgdGltZVxuICAgICAgY29uc3Qgc2VjcmV0UmV0cmlldmVyID0gU2VjcmV0UmV0cmlldmVyLm5ldyh7XG4gICAgICAgIHNlY3JldEFybjogc2VjcmV0LnNlY3JldEFybixcbiAgICAgIH0pLl9iaW5kKHRoaXMpO1xuXG4gICAgICB2c2NvZGVQYXNzd29yZCA9IHNlY3JldFJldHJpZXZlci5zZWNyZXRQYXNzd29yZFBsYWludGV4dDtcbiAgICB9XG5cbiAgICAvLyBIYW5kbGUgU1NMIGNlcnRpZmljYXRlIGZvciBjdXN0b20gZG9tYWluXG4gICAgbGV0IGNlcnRpZmljYXRlOiBhY20uSUNlcnRpZmljYXRlIHwgdW5kZWZpbmVkO1xuICAgIGxldCBob3N0ZWRab25lOiByb3V0ZTUzLklIb3N0ZWRab25lIHwgdW5kZWZpbmVkO1xuXG4gICAgaWYgKGRvbWFpbk5hbWUpIHtcbiAgICAgIC8vIEdldCBvciBjcmVhdGUgaG9zdGVkIHpvbmVcbiAgICAgIGlmIChob3N0ZWRab25lSWQpIHtcbiAgICAgICAgaG9zdGVkWm9uZSA9IHJvdXRlNTMuSG9zdGVkWm9uZS5mcm9tSG9zdGVkWm9uZUF0dHJpYnV0ZXMoXG4gICAgICAgICAgdGhpcyxcbiAgICAgICAgICAnaG9zdGVkLXpvbmUnLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGhvc3RlZFpvbmVJZDogaG9zdGVkWm9uZUlkLFxuICAgICAgICAgICAgem9uZU5hbWU6IGRvbWFpbk5hbWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIExvb2t1cCBob3N0ZWQgem9uZSBieSBkb21haW4gbmFtZVxuICAgICAgICBob3N0ZWRab25lID0gcm91dGU1My5Ib3N0ZWRab25lLmZyb21Mb29rdXAodGhpcywgJ2hvc3RlZC16b25lJywge1xuICAgICAgICAgIGRvbWFpbk5hbWU6IGRvbWFpbk5hbWUsXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICAvLyBIYW5kbGUgY2VydGlmaWNhdGVcbiAgICAgIGlmIChjZXJ0aWZpY2F0ZUFybikge1xuICAgICAgICAvLyBVc2UgZXhpc3RpbmcgY2VydGlmaWNhdGVcbiAgICAgICAgY2VydGlmaWNhdGUgPSBhY20uQ2VydGlmaWNhdGUuZnJvbUNlcnRpZmljYXRlQXJuKFxuICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgJ2NlcnRpZmljYXRlJyxcbiAgICAgICAgICBjZXJ0aWZpY2F0ZUFybixcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSBpZiAoYXV0b0NyZWF0ZUNlcnRpZmljYXRlKSB7XG4gICAgICAgIC8vIENyZWF0ZSBuZXcgY2VydGlmaWNhdGUgd2l0aCBETlMgdmFsaWRhdGlvblxuICAgICAgICAvLyBDbG91ZEZyb250IHJlcXVpcmVzIGNlcnRpZmljYXRlcyB0byBiZSBpbiB1cy1lYXN0LTEgcmVnaW9uXG4gICAgICAgIGlmICghaG9zdGVkWm9uZSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICdob3N0ZWRab25lIGlzIHJlcXVpcmVkIHdoZW4gYXV0b0NyZWF0ZUNlcnRpZmljYXRlIGlzIHRydWUnLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBOb3RlOiBVc2luZyBEbnNWYWxpZGF0ZWRDZXJ0aWZpY2F0ZSAoZGVwcmVjYXRlZCBidXQgc3RpbGwgZnVuY3Rpb25hbClcbiAgICAgICAgLy8gVGhpcyBpcyB0aGUgc2ltcGxlc3Qgd2F5IHRvIGNyZWF0ZSBjZXJ0aWZpY2F0ZXMgaW4gdXMtZWFzdC0xIGZyb20gYW55IHJlZ2lvblxuICAgICAgICAvLyBUaGUgbW9kZXJuIGFwcHJvYWNoIHJlcXVpcmVzIG11bHRpLXN0YWNrIGRlcGxveW1lbnQgd2l0aCBjcm9zc1JlZ2lvblJlZmVyZW5jZXNcbiAgICAgICAgLy8gd2hpY2ggaXMgbW9yZSBjb21wbGV4IGZvciBhIGNvbnN0cnVjdCBsaWJyYXJ5IHRvIGltcGxlbWVudCBjbGVhbmx5XG4gICAgICAgIC8vIEB0cy1pZ25vcmUgLSBEbnNWYWxpZGF0ZWRDZXJ0aWZpY2F0ZSBpcyBkZXByZWNhdGVkIGJ1dCBzdGlsbCB0aGUgYmVzdCBvcHRpb24gZm9yIGNyb3NzLXJlZ2lvbiBjZXJ0c1xuICAgICAgICBjZXJ0aWZpY2F0ZSA9IG5ldyBhY20uRG5zVmFsaWRhdGVkQ2VydGlmaWNhdGUodGhpcywgJ2NlcnRpZmljYXRlJywge1xuICAgICAgICAgIGRvbWFpbk5hbWU6IGRvbWFpbk5hbWUsXG4gICAgICAgICAgaG9zdGVkWm9uZTogaG9zdGVkWm9uZSxcbiAgICAgICAgICByZWdpb246ICd1cy1lYXN0LTEnLFxuICAgICAgICAgIC8vIEV4cGxpY2l0bHkgZ3JhbnQgdGhlIHZhbGlkYXRpb24gTGFtYmRhIHBlcm1pc3Npb24gdG8gZGVzY3JpYmUgY2VydGlmaWNhdGVzXG4gICAgICAgICAgY3VzdG9tUmVzb3VyY2VSb2xlOiBuZXcgaWFtLlJvbGUodGhpcywgJ2NlcnRpZmljYXRlLXZhbGlkYXRpb24tcm9sZScsIHtcbiAgICAgICAgICAgIGFzc3VtZWRCeTogbmV3IGlhbS5TZXJ2aWNlUHJpbmNpcGFsKCdsYW1iZGEuYW1hem9uYXdzLmNvbScpLFxuICAgICAgICAgICAgbWFuYWdlZFBvbGljaWVzOiBbXG4gICAgICAgICAgICAgIGlhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZSgnc2VydmljZS1yb2xlL0FXU0xhbWJkYUJhc2ljRXhlY3V0aW9uUm9sZScpLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGlubGluZVBvbGljaWVzOiB7XG4gICAgICAgICAgICAgIENlcnRpZmljYXRlVmFsaWRhdGlvblBvbGljeTogbmV3IGlhbS5Qb2xpY3lEb2N1bWVudCh7XG4gICAgICAgICAgICAgICAgc3RhdGVtZW50czogW1xuICAgICAgICAgICAgICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAgICAgICAgICAgJ2FjbTpEZXNjcmliZUNlcnRpZmljYXRlJyxcbiAgICAgICAgICAgICAgICAgICAgICAnYWNtOlJlcXVlc3RDZXJ0aWZpY2F0ZScsXG4gICAgICAgICAgICAgICAgICAgICAgJ2FjbTpEZWxldGVDZXJ0aWZpY2F0ZScsXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIHJlc291cmNlczogWycqJ10sXG4gICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICAgICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgICAgICAgICAgICdyb3V0ZTUzOkdldENoYW5nZScsXG4gICAgICAgICAgICAgICAgICAgICAgJ3JvdXRlNTM6Q2hhbmdlUmVzb3VyY2VSZWNvcmRTZXRzJyxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VzOiBbJyonXSxcbiAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgTmFnU3VwcHJlc3Npb25zLmFkZFJlc291cmNlU3VwcHJlc3Npb25zKFxuICAgICAgICAgIFtjZXJ0aWZpY2F0ZV0sXG4gICAgICAgICAgW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBpZDogJ0F3c1NvbHV0aW9ucy1BQ00xJyxcbiAgICAgICAgICAgICAgcmVhc29uOlxuICAgICAgICAgICAgICAgICdDZXJ0aWZpY2F0ZSBpcyBjcmVhdGVkIGZvciBWUyBDb2RlIHNlcnZlciB3aXRoIHByb3BlciBkb21haW4gdmFsaWRhdGlvbicsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBpZDogJ0F3c1NvbHV0aW9ucy1JQU01JyxcbiAgICAgICAgICAgICAgcmVhc29uOlxuICAgICAgICAgICAgICAgICdDZXJ0aWZpY2F0ZSB2YWxpZGF0aW9uIExhbWJkYSBuZWVkcyB3aWxkY2FyZCBwZXJtaXNzaW9ucyBmb3IgQUNNIGFuZCBSb3V0ZTUzJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgICB0cnVlLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIENyZWF0ZSBkZWZhdWx0IHZwY1xuICAgIGNvbnN0IHZwYyA9IG5ldyBlYzIuVnBjKHRoaXMsICd2cGMnLCB7XG4gICAgICBtYXhBenM6IDIsXG4gICAgICBjcmVhdGVJbnRlcm5ldEdhdGV3YXk6IHRydWUsXG4gICAgICBzdWJuZXRDb25maWd1cmF0aW9uOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiAncHVibGljJyxcbiAgICAgICAgICBzdWJuZXRUeXBlOiBlYzIuU3VibmV0VHlwZS5QVUJMSUMsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgZW5hYmxlRG5zSG9zdG5hbWVzOiB0cnVlLFxuICAgICAgZW5hYmxlRG5zU3VwcG9ydDogdHJ1ZSxcbiAgICB9KTtcbiAgICBOYWdTdXBwcmVzc2lvbnMuYWRkUmVzb3VyY2VTdXBwcmVzc2lvbnMoXG4gICAgICBbdnBjXSxcbiAgICAgIFtcbiAgICAgICAge1xuICAgICAgICAgIGlkOiAnQXdzU29sdXRpb25zLVZQQzcnLFxuICAgICAgICAgIHJlYXNvbjogJ0ZvciB0aGlzIHRtcCB2cGMgd2UgZG8gbm90IG5lZWQgZmxvdyBsb2dzJyxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICB0cnVlLFxuICAgICk7XG5cbiAgICAvLyBDcmVhdGUgYSBTZWNHcm91cCBhc3NvY2lhdGVkIHdpdGhlIHRoZSBDRiBkaXN0IHBMaXN0XG4gICAgY29uc3Qgc2VjR3JvdXAgPSBuZXcgZWMyLlNlY3VyaXR5R3JvdXAodGhpcywgJ2NmLXRvLXNlcnZlci1zZycsIHtcbiAgICAgIHZwYyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnU0cgZm9yIFZTQ29kZVNlcnZlciAtIG9ubHkgYWxsb3cgQ2xvdWRGcm9udCBpbmdyZXNzJyxcbiAgICAgIHNlY3VyaXR5R3JvdXBOYW1lOiAnY2xvdWRmcm9udC10by12c2NvZGUtc2VydmVyJyxcbiAgICB9KTtcblxuICAgIGNvbnN0IGF3c01hbmFnZWRQcmVmaXhMaXN0ID0gbmV3IEF3c01hbmFnZWRQcmVmaXhMaXN0KFxuICAgICAgdGhpcyxcbiAgICAgICdjZi1wcmVmaXhsaXN0SWQnLFxuICAgICAge1xuICAgICAgICBuYW1lOiAnY29tLmFtYXpvbmF3cy5nbG9iYWwuY2xvdWRmcm9udC5vcmlnaW4tZmFjaW5nJyxcbiAgICAgIH0sXG4gICAgKTtcbiAgICBOYWdTdXBwcmVzc2lvbnMuYWRkUmVzb3VyY2VTdXBwcmVzc2lvbnMoXG4gICAgICBbYXdzTWFuYWdlZFByZWZpeExpc3RdLFxuICAgICAgW1xuICAgICAgICB7XG4gICAgICAgICAgaWQ6ICdBd3NTb2x1dGlvbnMtSUFNNScsXG4gICAgICAgICAgcmVhc29uOiAnRm9yIHRoaXMgcHJvdmlkZXIgd2lsZGNhcmRzIGFyZSBmaW5lJyxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICB0cnVlLFxuICAgICk7XG5cbiAgICBzZWNHcm91cC5hZGRJbmdyZXNzUnVsZShcbiAgICAgIGVjMi5QZWVyLnByZWZpeExpc3QoYXdzTWFuYWdlZFByZWZpeExpc3QucHJlZml4TGlzdC5wcmVmaXhMaXN0SWQpLFxuICAgICAgZWMyLlBvcnQudGNwKDgwKSxcbiAgICAgICdBbGxvdyBIVFRQIGZyb20gY29tLmFtYXpvbmF3cy5nbG9iYWwuY2xvdWRmcm9udC5vcmlnaW4tZmFjaW5nJyxcbiAgICApO1xuXG4gICAgLy8gQ3JlYXRlIGFuIEVDMiBpbnN0YW5jZSBhc3NvY2lhdGVkIHdpdGggdGhlIHNlYyBncm91cCArIGluc3RhbmNlIHByb2ZpbGUgYW5kIHJvbGVcbiAgICBjb25zdCBpbnN0YW5jZVJvbGUgPSBuZXcgaWFtLlJvbGUodGhpcywgJ3NlcnZlci1pbnN0YW5jZS1yb2xlJywge1xuICAgICAgYXNzdW1lZEJ5OiBuZXcgaWFtLkNvbXBvc2l0ZVByaW5jaXBhbChcbiAgICAgICAgbmV3IGlhbS5TZXJ2aWNlUHJpbmNpcGFsKCdlYzIuYW1hem9uYXdzLmNvbScpLFxuICAgICAgICBuZXcgaWFtLlNlcnZpY2VQcmluY2lwYWwoJ3NzbS5hbWF6b25hd3MuY29tJyksXG4gICAgICApLFxuICAgICAgaW5saW5lUG9saWNpZXM6IHtcbiAgICAgICAgVlNDb2RlSW5zdGFuY2VJbmxpbmVQb2xpY3k6IG5ldyBpYW0uUG9saWN5RG9jdW1lbnQoe1xuICAgICAgICAgIHN0YXRlbWVudHM6IFtcbiAgICAgICAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICAgICAgc2lkOiAnU3RzQWNjZXNzJyxcbiAgICAgICAgICAgICAgZWZmZWN0OiBpYW0uRWZmZWN0LkFMTE9XLFxuICAgICAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAgICAgJ3N0czpBc3N1bWVSb2xlJyxcbiAgICAgICAgICAgICAgICAnaWFtOkFkZFJvbGVUb0luc3RhbmNlUHJvZmlsZScsXG4gICAgICAgICAgICAgICAgJ2lhbTpBdHRhY2hSb2xlUG9saWN5JyxcbiAgICAgICAgICAgICAgICAnaWFtOkNyZWF0ZVJvbGUnLFxuICAgICAgICAgICAgICAgICdpYW06Q3JlYXRlU2VydmljZUxpbmtlZFJvbGUnLFxuICAgICAgICAgICAgICAgICdpYW06RGVsZXRlUm9sZScsXG4gICAgICAgICAgICAgICAgJ2lhbTpEZWxldGVSb2xlUGVybWlzc2lvbnNCb3VuZGFyeScsXG4gICAgICAgICAgICAgICAgJ2lhbTpEZWxldGVSb2xlUG9saWN5JyxcbiAgICAgICAgICAgICAgICAnaWFtOkRlbGV0ZVNlcnZpY2VMaW5rZWRSb2xlJyxcbiAgICAgICAgICAgICAgICAnaWFtOkRldGFjaFJvbGVQb2xpY3knLFxuICAgICAgICAgICAgICAgICdpYW06R2V0Um9sZScsXG4gICAgICAgICAgICAgICAgJ2lhbTpHZXRSb2xlUG9saWN5JyxcbiAgICAgICAgICAgICAgICAnaWFtOkdldFNlcnZpY2VMaW5rZWRSb2xlRGVsZXRpb25TdGF0dXMnLFxuICAgICAgICAgICAgICAgICdpYW06TGlzdEF0dGFjaGVkUm9sZVBvbGljaWVzJyxcbiAgICAgICAgICAgICAgICAnaWFtOkxpc3RJbnN0YW5jZVByb2ZpbGVzRm9yUm9sZScsXG4gICAgICAgICAgICAgICAgJ2lhbTpMaXN0Um9sZVBvbGljaWVzJyxcbiAgICAgICAgICAgICAgICAnaWFtOkxpc3RSb2xlcycsXG4gICAgICAgICAgICAgICAgJ2lhbTpMaXN0Um9sZVRhZ3MnLFxuICAgICAgICAgICAgICAgICdpYW06UHV0Um9sZVBlcm1pc3Npb25zQm91bmRhcnknLFxuICAgICAgICAgICAgICAgICdpYW06UHV0Um9sZVBvbGljeScsXG4gICAgICAgICAgICAgICAgJ2lhbTpSZW1vdmVSb2xlRnJvbUluc3RhbmNlUHJvZmlsZScsXG4gICAgICAgICAgICAgICAgJ2lhbTpUYWdSb2xlJyxcbiAgICAgICAgICAgICAgICAnaWFtOlVudGFnUm9sZScsXG4gICAgICAgICAgICAgICAgJ2lhbTpVcGRhdGVBc3N1bWVSb2xlUG9saWN5JyxcbiAgICAgICAgICAgICAgICAnaWFtOlVwZGF0ZVJvbGUnLFxuICAgICAgICAgICAgICAgICdpYW06VXBkYXRlUm9sZURlc2NyaXB0aW9uJyxcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgcmVzb3VyY2VzOiBbYGFybjphd3M6aWFtOjoke1N0YWNrLm9mKHRoaXMpLmFjY291bnR9OnJvbGUvY2RrLSpgXSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgICBlZmZlY3Q6IGlhbS5FZmZlY3QuQUxMT1csXG4gICAgICAgICAgICAgIGFjdGlvbnM6IFsnaWFtOlBhc3NSb2xlJ10sXG4gICAgICAgICAgICAgIHJlc291cmNlczogW2Bhcm46YXdzOmlhbTo6JHtTdGFjay5vZih0aGlzKS5hY2NvdW50fTpyb2xlL2Nkay0qYF0sXG4gICAgICAgICAgICAgIGNvbmRpdGlvbnM6IHtcbiAgICAgICAgICAgICAgICBTdHJpbmdMaWtlOiB7XG4gICAgICAgICAgICAgICAgICAnaWFtOlBhc3NlZFRvU2VydmljZSc6ICdjbG91ZGZvcm1hdGlvbi5hbWF6b25hd3MuY29tJyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgICAgIGVmZmVjdDogaWFtLkVmZmVjdC5BTExPVyxcbiAgICAgICAgICAgICAgYWN0aW9uczogWydjbG91ZGZvcm1hdGlvbjoqJ10sXG4gICAgICAgICAgICAgIHJlc291cmNlczogW1xuICAgICAgICAgICAgICAgIGBhcm46YXdzOmNsb3VkZm9ybWF0aW9uOio6JHtTdGFjay5vZih0aGlzKS5hY2NvdW50fTpzdGFjay9DREtUb29sa2l0LypgLFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgICAgIGVmZmVjdDogaWFtLkVmZmVjdC5BTExPVyxcbiAgICAgICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgICAgICdjbG91ZGZvcm1hdGlvbjpDcmVhdGVDaGFuZ2VTZXQnLFxuICAgICAgICAgICAgICAgICdjbG91ZGZvcm1hdGlvbjpFeGVjdXRlQ2hhbmdlU2V0JyxcbiAgICAgICAgICAgICAgICAnY2xvdWRmb3JtYXRpb246RGVsZXRlQ2hhbmdlU2V0JyxcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgcmVzb3VyY2VzOiBbJyonXSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgICBzaWQ6ICdTM0FjY2VzcycsXG4gICAgICAgICAgICAgIGFjdGlvbnM6IFsnczM6KiddLFxuICAgICAgICAgICAgICByZXNvdXJjZXM6IFsnKiddLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgICAgIHNpZDogJ0VDUkFjY2VzcycsXG4gICAgICAgICAgICAgIGVmZmVjdDogaWFtLkVmZmVjdC5BTExPVyxcbiAgICAgICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgICAgICdlY3I6U2V0UmVwb3NpdG9yeVBvbGljeScsXG4gICAgICAgICAgICAgICAgJ2VjcjpHZXRMaWZlY3ljbGVQb2xpY3knLFxuICAgICAgICAgICAgICAgICdlY3I6UHV0TGlmZWN5Y2xlUG9saWN5JyxcbiAgICAgICAgICAgICAgICAnZWNyOlB1dEltYWdlU2Nhbm5pbmdDb25maWd1cmF0aW9uJyxcbiAgICAgICAgICAgICAgICAnZWNyOkRlc2NyaWJlUmVwb3NpdG9yaWVzJyxcbiAgICAgICAgICAgICAgICAnZWNyOkNyZWF0ZVJlcG9zaXRvcnknLFxuICAgICAgICAgICAgICAgICdlY3I6RGVsZXRlUmVwb3NpdG9yeScsXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIHJlc291cmNlczogW1xuICAgICAgICAgICAgICAgIGBhcm46YXdzOmVjcjoqOiR7U3RhY2sub2YodGhpcykuYWNjb3VudH06cmVwb3NpdG9yeS9jZGstKmAsXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICAgICAgZWZmZWN0OiBpYW0uRWZmZWN0LkFMTE9XLFxuICAgICAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAgICAgJ3NzbTpHZXRQYXJhbWV0ZXIqJyxcbiAgICAgICAgICAgICAgICAnc3NtOlB1dFBhcmFtZXRlcionLFxuICAgICAgICAgICAgICAgICdzc206RGVsZXRlUGFyYW1ldGVyKicsXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIHJlc291cmNlczogW1xuICAgICAgICAgICAgICAgIGBhcm46YXdzOnNzbToqOiR7U3RhY2sub2YodGhpcykuYWNjb3VudH06cGFyYW1ldGVyL2Nkay1ib290c3RyYXAvKmAsXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICAgICAgZWZmZWN0OiBpYW0uRWZmZWN0LkFMTE9XLFxuICAgICAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAgICAgJ2VjMjpEZXNjcmliZUluc3RhbmNlcycsXG4gICAgICAgICAgICAgICAgJ2VjMjpNb2RpZnlWb2x1bWUnLFxuICAgICAgICAgICAgICAgICdlYzI6RGVzY3JpYmVWb2x1bWVzTW9kaWZpY2F0aW9ucyonLFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICByZXNvdXJjZXM6IFsnKiddLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgICAgIGVmZmVjdDogaWFtLkVmZmVjdC5BTExPVyxcbiAgICAgICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgICAgICdjb2RlcGlwZWxpbmU6RW5hYmxlU3RhZ2VUcmFuc2l0aW9uJyxcbiAgICAgICAgICAgICAgICAnY29kZXBpcGVsaW5lOkRpc2FibGVTdGFnZVRyYW5zaXRpb24nLFxuICAgICAgICAgICAgICAgICdjb2RlcGlwZWxpbmU6U3RhcnRQaXBlbGluZUV4ZWN1dGlvbicsXG4gICAgICAgICAgICAgICAgJ2NvZGVwaXBlbGluZTpTdG9wUGlwZWxpbmVFeGVjdXRpb24nLFxuICAgICAgICAgICAgICAgICdjb2RlcGlwZWxpbmU6VXBkYXRlUGlwZWxpbmUnLFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICByZXNvdXJjZXM6IFtcbiAgICAgICAgICAgICAgICBgYXJuOmF3czpjb2RlcGlwZWxpbmU6Kjoke1N0YWNrLm9mKHRoaXMpLmFjY291bnR9OiovKmAsXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICAgICAgZWZmZWN0OiBpYW0uRWZmZWN0LkFMTE9XLFxuICAgICAgICAgICAgICBhY3Rpb25zOiBbJ2ttczpEZWNyeXB0J10sXG4gICAgICAgICAgICAgIHJlc291cmNlczogW2Bhcm46YXdzOmttczoqOiR7U3RhY2sub2YodGhpcykuYWNjb3VudH06a2V5LypgXSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgLi4uYWRkaXRpb25hbEluc3RhbmNlUm9sZVBvbGljaWVzLFxuICAgICAgICAgIF0sXG4gICAgICAgIH0pLFxuICAgICAgfSxcbiAgICAgIG1hbmFnZWRQb2xpY2llczogW1xuICAgICAgICBpYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoXG4gICAgICAgICAgJ0FtYXpvblNTTU1hbmFnZWRJbnN0YW5jZUNvcmUnLFxuICAgICAgICApLFxuICAgICAgICBpYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoXG4gICAgICAgICAgJ0Nsb3VkV2F0Y2hBZ2VudFNlcnZlclBvbGljeScsXG4gICAgICAgICksXG4gICAgICAgIGlhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZSgnQW1hem9uUURldmVsb3BlckFjY2VzcycpLFxuICAgICAgICBpYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoJ1JlYWRPbmx5QWNjZXNzJyksXG4gICAgICBdLFxuICAgIH0pO1xuICAgIE5hZ1N1cHByZXNzaW9ucy5hZGRSZXNvdXJjZVN1cHByZXNzaW9ucyhcbiAgICAgIFtpbnN0YW5jZVJvbGVdLFxuICAgICAgW1xuICAgICAgICB7XG4gICAgICAgICAgaWQ6ICdBd3NTb2x1dGlvbnMtSUFNNCcsXG4gICAgICAgICAgcmVhc29uOlxuICAgICAgICAgICAgJ0ZvciB0aGlzIHRtcCByb2xlIHdlIGRvIG5vdCBuZWVkIHRvIHJlc3RyaWN0IG1hbmFnZWQgcG9saWNpZXMnLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgaWQ6ICdBd3NTb2x1dGlvbnMtSUFNNScsXG4gICAgICAgICAgcmVhc29uOiAnRm9yIHRoaXMgdG1wIHJvbGUgdGhlIHdpbGRjYXJkcyBhcmUgZmluZScsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgdHJ1ZSxcbiAgICApO1xuXG4gICAgdGhpcy5pbnN0YW5jZSA9IG5ldyBlYzIuSW5zdGFuY2UodGhpcywgJ3NlcnZlci1pbnN0YW5jZScsIHtcbiAgICAgIHZwYyxcbiAgICAgIGluc3RhbmNlTmFtZSxcbiAgICAgIGluc3RhbmNlVHlwZSxcbiAgICAgIG1hY2hpbmVJbWFnZTogZWMyLk1hY2hpbmVJbWFnZS5mcm9tU3NtUGFyYW1ldGVyKFxuICAgICAgICBtYWNoaW5lSW1hZ2VGcm9tU3NtUGFyYW1ldGVyLFxuICAgICAgICB7XG4gICAgICAgICAgb3M6IGVjMi5PcGVyYXRpbmdTeXN0ZW1UeXBlLkxJTlVYLFxuICAgICAgICB9LFxuICAgICAgKSxcbiAgICAgIHJlcXVpcmVJbWRzdjI6IHRydWUsXG4gICAgICB2cGNTdWJuZXRzOiB7XG4gICAgICAgIHN1Ym5ldFR5cGU6IGVjMi5TdWJuZXRUeXBlLlBVQkxJQyxcbiAgICAgIH0sXG4gICAgICBhc3NvY2lhdGVQdWJsaWNJcEFkZHJlc3M6IHRydWUsXG4gICAgICBkZXRhaWxlZE1vbml0b3Jpbmc6IHRydWUsXG4gICAgICBibG9ja0RldmljZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGRldmljZU5hbWU6ICcvZGV2L3NkYTEnLFxuICAgICAgICAgIHZvbHVtZTogZWMyLkJsb2NrRGV2aWNlVm9sdW1lLmVicyhpbnN0YW5jZVZvbHVtZVNpemUsIHtcbiAgICAgICAgICAgIHZvbHVtZVR5cGU6IGVjMi5FYnNEZXZpY2VWb2x1bWVUeXBlLkdQMyxcbiAgICAgICAgICAgIGVuY3J5cHRlZDogdHJ1ZSxcbiAgICAgICAgICAgIGRlbGV0ZU9uVGVybWluYXRpb246IHRydWUsXG4gICAgICAgICAgfSksXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgcm9sZTogaW5zdGFuY2VSb2xlLFxuICAgICAgc2VjdXJpdHlHcm91cDogc2VjR3JvdXAsXG4gICAgICB1c2VyRGF0YTogZWMyLlVzZXJEYXRhLmN1c3RvbShgXG4gICAgICAgICNjbG91ZC1jb25maWdcbiAgICAgICAgICBob3N0bmFtZTogJHtpbnN0YW5jZU5hbWV9XG4gICAgICAgICAgcnVuY21kOlxuICAgICAgICAgICAgLSBta2RpciAtcCAke2hvbWVGb2xkZXJ9ICYmIGNob3duIC1SICR7dnNDb2RlVXNlcn06JHt2c0NvZGVVc2VyfSAke2hvbWVGb2xkZXJ9XG4gICAgICBgKSxcbiAgICB9KTtcbiAgICBOYWdTdXBwcmVzc2lvbnMuYWRkUmVzb3VyY2VTdXBwcmVzc2lvbnMoXG4gICAgICBbdGhpcy5pbnN0YW5jZV0sXG4gICAgICBbXG4gICAgICAgIHtcbiAgICAgICAgICBpZDogJ0F3c1NvbHV0aW9ucy1FQzI5JyxcbiAgICAgICAgICByZWFzb246ICdGb3IgdGhpcyB0bXAgaW5zdGFuY2Ugd2UgZG8gbm90IG5lZWQgYW4gYXNnJyxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICB0cnVlLFxuICAgICk7XG5cbiAgICAvLyBDb25kaXRpb25hbGx5IGFsbG9jYXRlIEVsYXN0aWMgSVAgZm9yIGF1dG8tc3RvcCBzY2VuYXJpb3NcbiAgICAvLyBXaGVuIGF1dG8tc3RvcCBpcyBlbmFibGVkLCB0aGUgaW5zdGFuY2Ugd2lsbCBiZSBzdG9wcGVkIGFuZCBzdGFydGVkLCB3aGljaCBjaGFuZ2VzXG4gICAgLy8gdGhlIHB1YmxpYyBJUCBlYWNoIHRpbWUuIEVJUCBlbnN1cmVzIENsb3VkRnJvbnQgY2FuIGFsd2F5cyByZWFjaCB0aGUgaW5zdGFuY2UuXG4gICAgLy8gV2hlbiBhdXRvLXN0b3AgaXMgZGlzYWJsZWQsIHRoZSBpbnN0YW5jZSBydW5zIGNvbnRpbnVvdXNseSBhbmQgZG9lc24ndCBuZWVkIEVJUC5cbiAgICBsZXQgZWlwOiBlYzIuQ2ZuRUlQIHwgdW5kZWZpbmVkO1xuICAgIGlmIChwcm9wcz8uZW5hYmxlQXV0b1N0b3ApIHtcbiAgICAgIGVpcCA9IG5ldyBlYzIuQ2ZuRUlQKHRoaXMsICdlbGFzdGljLWlwJywge1xuICAgICAgICBkb21haW46ICd2cGMnLFxuICAgICAgICB0YWdzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAga2V5OiAnTmFtZScsXG4gICAgICAgICAgICB2YWx1ZTogYCR7aW5zdGFuY2VOYW1lfS1FSVBgLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgICAgLy8gQXNzb2NpYXRlIEVsYXN0aWMgSVAgd2l0aCB0aGUgaW5zdGFuY2VcbiAgICAgIG5ldyBlYzIuQ2ZuRUlQQXNzb2NpYXRpb24odGhpcywgJ2VpcC1hc3NvY2lhdGlvbicsIHtcbiAgICAgICAgYWxsb2NhdGlvbklkOiBlaXAuYXR0ckFsbG9jYXRpb25JZCxcbiAgICAgICAgaW5zdGFuY2VJZDogdGhpcy5pbnN0YW5jZS5pbnN0YW5jZUlkLFxuICAgICAgfSk7XG5cbiAgICAgIE5hZ1N1cHByZXNzaW9ucy5hZGRSZXNvdXJjZVN1cHByZXNzaW9ucyhcbiAgICAgICAgW2VpcF0sXG4gICAgICAgIFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpZDogJ0F3c1NvbHV0aW9ucy1FQzIzJyxcbiAgICAgICAgICAgIHJlYXNvbjogJ0VsYXN0aWMgSVAgcmVxdWlyZWQgZm9yIGNvbnNpc3RlbnQgcHVibGljIElQIGFjcm9zcyBzdG9wL3N0YXJ0IGN5Y2xlcyB3aGVuIGF1dG8tc3RvcCBpcyBlbmFibGVkJyxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICB0cnVlLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBDcmVhdGUgYSBDRiBkaXN0cmlidXRpb24gKHNwZWNpYWwgaWQpIGFuZCBzcGVjaWFsIENhY2hlUG9saWN5IHRvIGluc3RhbmNlXG4gICAgY29uc3QgY2ZDYWNoZVBvbGljeSA9IG5ldyBjZi5DYWNoZVBvbGljeSh0aGlzLCAnY2YtY2FjaGUtcG9saWN5Jywge1xuICAgICAgY2FjaGVQb2xpY3lOYW1lOiBgY2YtY2FjaGUtcG9saWN5LXZzY29kZXNlcnZlci0ke1N0YWNrLm9mKHRoaXMpLnN0YWNrTmFtZX1gLFxuICAgICAgY29tbWVudDogJ0NhY2hlIHBvbGljeSBmb3IgVlNDb2RlU2VydmVyJyxcbiAgICAgIG1pblR0bDogRHVyYXRpb24uc2Vjb25kcygxKSxcbiAgICAgIG1heFR0bDogRHVyYXRpb24uc2Vjb25kcygzMTUzNjAwMCksXG4gICAgICBkZWZhdWx0VHRsOiBEdXJhdGlvbi5zZWNvbmRzKDg2NDAwKSxcbiAgICAgIGNvb2tpZUJlaGF2aW9yOiBjZi5DYWNoZUNvb2tpZUJlaGF2aW9yLmFsbCgpLFxuICAgICAgZW5hYmxlQWNjZXB0RW5jb2RpbmdHemlwOiBmYWxzZSxcbiAgICAgIGhlYWRlckJlaGF2aW9yOiB7XG4gICAgICAgIGJlaGF2aW9yOiAnd2hpdGVsaXN0JyxcbiAgICAgICAgaGVhZGVyczogW1xuICAgICAgICAgICdBY2NlcHQtQ2hhcnNldCcsXG4gICAgICAgICAgJ0F1dGhvcml6YXRpb24nLFxuICAgICAgICAgICdPcmlnaW4nLFxuICAgICAgICAgICdBY2NlcHQnLFxuICAgICAgICAgICdSZWZlcmVyJyxcbiAgICAgICAgICAnSG9zdCcsXG4gICAgICAgICAgJ0FjY2VwdC1MYW5ndWFnZScsXG4gICAgICAgICAgJ0FjY2VwdC1FbmNvZGluZycsXG4gICAgICAgICAgJ0FjY2VwdC1EYXRldGltZScsXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgICAgcXVlcnlTdHJpbmdCZWhhdmlvcjogY2YuQ2FjaGVRdWVyeVN0cmluZ0JlaGF2aW9yLmFsbCgpLFxuICAgIH0pO1xuXG4gICAgLy8gRGV0ZXJtaW5lIENsb3VkRnJvbnQgb3JpZ2luIEROUyBuYW1lIGJhc2VkIG9uIGF1dG8tc3RvcCBjb25maWd1cmF0aW9uXG4gICAgLy8gLSBJZiBhdXRvLXN0b3AgZW5hYmxlZDogVXNlIEVsYXN0aWMgSVAgRE5TIChwZXJzaXN0cyBhY3Jvc3Mgc3RvcC9zdGFydCBjeWNsZXMpXG4gICAgLy8gLSBJZiBhdXRvLXN0b3AgZGlzYWJsZWQ6IFVzZSBpbnN0YW5jZSBwdWJsaWMgRE5TIChpbnN0YW5jZSBuZXZlciBzdG9wcylcbiAgICBjb25zdCBvcmlnaW5EbnNOYW1lID0gZWlwXG4gICAgICA/IGBlYzItJHtGbi5qb2luKCctJywgRm4uc3BsaXQoJy4nLCBlaXAuYXR0clB1YmxpY0lwKSl9LiR7U3RhY2sub2YodGhpcykucmVnaW9ufS5jb21wdXRlLmFtYXpvbmF3cy5jb21gXG4gICAgICA6IHRoaXMuaW5zdGFuY2UuaW5zdGFuY2VQdWJsaWNEbnNOYW1lO1xuXG4gICAgY29uc3Qgb3JpZ2luID0gbmV3IGNmby5IdHRwT3JpZ2luKG9yaWdpbkRuc05hbWUsIHtcbiAgICAgIHByb3RvY29sUG9saWN5OiBjZi5PcmlnaW5Qcm90b2NvbFBvbGljeS5IVFRQX09OTFksXG4gICAgICBvcmlnaW5JZDogYENsb3VkZnJvbnQtJHtTdGFjay5vZih0aGlzKS5zdGFja05hbWV9LSR7U3RhY2sub2YodGhpcykuc3RhY2tOYW1lfWAsXG4gICAgfSk7XG5cbiAgICBjb25zdCBkaXN0cmlidXRpb24gPSBuZXcgY2YuRGlzdHJpYnV0aW9uKHRoaXMsICdjZi1kaXN0cmlidXRpb24nLCB7XG4gICAgICBlbmFibGVkOiB0cnVlLFxuICAgICAgaHR0cFZlcnNpb246IGNmLkh0dHBWZXJzaW9uLkhUVFAyX0FORF8zLFxuICAgICAgLy8gTk9URTogJ0Rpc3RyaWJ1dGlvbnMgdGhhdCB1c2UgdGhlIGRlZmF1bHQgQ2xvdWRGcm9udCB2aWV3ZXIgY2VydGlmaWNhdGUgb3IgdXNlICd2aXAnIGZvciB0aGUgJ1NzbFN1cHBvcnRNZXRob2QnXG4gICAgICAvLyBhcmUgbm9uLWNvbXBsaWFudCB3aXRoIHRoaXMgcnVsZSwgYXMgdGhlIG1pbmltdW0gc2VjdXJpdHkgcG9saWN5IGlzIHNldCB0byBUTFN2MSByZWdhcmRsZXNzXG4gICAgICAvLyBvZiB0aGUgc3BlY2lmaWVkICdNaW5pbXVtUHJvdG9jb2xWZXJzaW9uJ1xuICAgICAgLy8gbWluaW11bVByb3RvY29sVmVyc2lvbjogY2YuU2VjdXJpdHlQb2xpY3lQcm90b2NvbC5UTFNfVjFfMl8yMDIxLFxuICAgICAgY29tbWVudDogJ0Rpc3RyaWJ1dGlvbiBmb3IgVlNDb2RlU2VydmVyJyxcbiAgICAgIHByaWNlQ2xhc3M6IGNmLlByaWNlQ2xhc3MuUFJJQ0VfQ0xBU1NfQUxMLFxuICAgICAgLy8gQ3VzdG9tIGRvbWFpbiBjb25maWd1cmF0aW9uXG4gICAgICAuLi4oZG9tYWluTmFtZSAmJiBjZXJ0aWZpY2F0ZVxuICAgICAgICA/IHtcbiAgICAgICAgICBkb21haW5OYW1lczogW2RvbWFpbk5hbWVdLFxuICAgICAgICAgIGNlcnRpZmljYXRlOiBjZXJ0aWZpY2F0ZSxcbiAgICAgICAgfVxuICAgICAgICA6IHt9KSxcbiAgICAgIGRlZmF1bHRCZWhhdmlvcjoge1xuICAgICAgICBhbGxvd2VkTWV0aG9kczogY2YuQWxsb3dlZE1ldGhvZHMuQUxMT1dfQUxMLFxuICAgICAgICBjYWNoZVBvbGljeTogY2ZDYWNoZVBvbGljeSxcbiAgICAgICAgb3JpZ2luUmVxdWVzdFBvbGljeToge1xuICAgICAgICAgIC8vIE1hbmFnZWQtQWxsVmlld2VyIC0gc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25DbG91ZEZyb250L2xhdGVzdC9EZXZlbG9wZXJHdWlkZS91c2luZy1tYW5hZ2VkLW9yaWdpbi1yZXF1ZXN0LXBvbGljaWVzLmh0bWwjOn46dGV4dD1XaGVuJTIwdXNpbmclMjBBV1MsNDdlNCUyRGI5ODklMkQ1NDkyZWFmYTA3ZDNcbiAgICAgICAgICBvcmlnaW5SZXF1ZXN0UG9saWN5SWQ6ICcyMTZhZGVmNi01YzdmLTQ3ZTQtYjk4OS01NDkyZWFmYTA3ZDMnLFxuICAgICAgICB9LFxuICAgICAgICB2aWV3ZXJQcm90b2NvbFBvbGljeTogY2YuVmlld2VyUHJvdG9jb2xQb2xpY3kuQUxMT1dfQUxMLFxuICAgICAgICBvcmlnaW4sXG4gICAgICB9LFxuICAgICAgYWRkaXRpb25hbEJlaGF2aW9yczoge1xuICAgICAgICAnL3Byb3h5LyonOiB7XG4gICAgICAgICAgYWxsb3dlZE1ldGhvZHM6IGNmLkFsbG93ZWRNZXRob2RzLkFMTE9XX0FMTCxcbiAgICAgICAgICBjb21wcmVzczogZmFsc2UsXG4gICAgICAgICAgLy8gc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25DbG91ZEZyb250L2xhdGVzdC9EZXZlbG9wZXJHdWlkZS91c2luZy1tYW5hZ2VkLWNhY2hlLXBvbGljaWVzLmh0bWwjbWFuYWdlZC1jYWNoZS1wb2xpY3ktY2FjaGluZy1kaXNhYmxlZFxuICAgICAgICAgIGNhY2hlUG9saWN5OiBjZi5DYWNoZVBvbGljeS5DQUNISU5HX0RJU0FCTEVELFxuICAgICAgICAgIG9yaWdpblJlcXVlc3RQb2xpY3k6IHtcbiAgICAgICAgICAgIC8vIE1hbmFnZWQtQWxsVmlld2VyIC0gc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25DbG91ZEZyb250L2xhdGVzdC9EZXZlbG9wZXJHdWlkZS91c2luZy1tYW5hZ2VkLW9yaWdpbi1yZXF1ZXN0LXBvbGljaWVzLmh0bWwjOn46dGV4dD1XaGVuJTIwdXNpbmclMjBBV1MsNDdlNCUyRGI5ODklMkQ1NDkyZWFmYTA3ZDNcbiAgICAgICAgICAgIG9yaWdpblJlcXVlc3RQb2xpY3lJZDogJzIxNmFkZWY2LTVjN2YtNDdlNC1iOTg5LTU0OTJlYWZhMDdkMycsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB2aWV3ZXJQcm90b2NvbFBvbGljeTogY2YuVmlld2VyUHJvdG9jb2xQb2xpY3kuQUxMT1dfQUxMLFxuICAgICAgICAgIG9yaWdpbixcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSk7XG4gICAgTmFnU3VwcHJlc3Npb25zLmFkZFJlc291cmNlU3VwcHJlc3Npb25zKFxuICAgICAgW2Rpc3RyaWJ1dGlvbl0sXG4gICAgICBbXG4gICAgICAgIHtcbiAgICAgICAgICBpZDogJ0F3c1NvbHV0aW9ucy1DRlIxJyxcbiAgICAgICAgICByZWFzb246ICdGb3IgdGhpcyB0bXAgZGlzdHJpYnV0aW9uIHdlIGRvIG5vdCBuZWVkIGdlbyByZXN0cmljdGlvbnMnLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgaWQ6ICdBd3NTb2x1dGlvbnMtQ0ZSMicsXG4gICAgICAgICAgcmVhc29uOiAnRm9yIHRoaXMgdG1wIGRpc3RyaWJ1dGlvbiB3ZSBkbyBub3QgbmVlZCB3YWYgaW50ZWdyYXRpb24nLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgaWQ6ICdBd3NTb2x1dGlvbnMtQ0ZSMycsXG4gICAgICAgICAgcmVhc29uOlxuICAgICAgICAgICAgJ0ZvciB0aGlzIHRtcCBkaXN0cmlidXRpb24gd2UgZG8gbm90IG5lZWQgYWNjZXNzIGxvZ2dpbmcgZW5hYmxlZCcsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBpZDogJ0F3c1NvbHV0aW9ucy1DRlI0JyxcbiAgICAgICAgICByZWFzb246XG4gICAgICAgICAgICAnRm9yIHRoaXMgdG1wIGRpc3RyaWJ1dGlvbiB3ZSBkbyBub3QgbmVlZCBsaW1pdCBTU0wgcHJvdG9jb2xzIGFzIHdlIHVzZSB0aGUgZGVmYXVsdCB2aWV3ZXIgY2VydCcsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBpZDogJ0F3c1NvbHV0aW9ucy1DRlI1JyxcbiAgICAgICAgICByZWFzb246XG4gICAgICAgICAgICAnRm9yIHRoaXMgdG1wIGRpc3RyaWJ1dGlvbiB3ZSBkbyBub3QgbmVlZCBsaW1pdCBTU0wgcHJvdG9jb2xzIGFzIHdlIHVzZSB0aGUgZGVmYXVsdCB2aWV3ZXIgY2VydCcsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgdHJ1ZSxcbiAgICApO1xuXG4gICAgLy8gQ3JlYXRlIFJvdXRlNTMgQSByZWNvcmQgZm9yIGN1c3RvbSBkb21haW5cbiAgICBpZiAoZG9tYWluTmFtZSAmJiBob3N0ZWRab25lKSB7XG4gICAgICBjb25zdCBhUmVjb3JkID0gbmV3IHJvdXRlNTMuQVJlY29yZCh0aGlzLCAnZG9tYWluLXJlY29yZCcsIHtcbiAgICAgICAgem9uZTogaG9zdGVkWm9uZSxcbiAgICAgICAgcmVjb3JkTmFtZTogZG9tYWluTmFtZSxcbiAgICAgICAgdGFyZ2V0OiByb3V0ZTUzLlJlY29yZFRhcmdldC5mcm9tQWxpYXMoXG4gICAgICAgICAgbmV3IHJvdXRlNTN0YXJnZXRzLkNsb3VkRnJvbnRUYXJnZXQoZGlzdHJpYnV0aW9uKSxcbiAgICAgICAgKSxcbiAgICAgIH0pO1xuXG4gICAgICBOYWdTdXBwcmVzc2lvbnMuYWRkUmVzb3VyY2VTdXBwcmVzc2lvbnMoXG4gICAgICAgIFthUmVjb3JkXSxcbiAgICAgICAgW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGlkOiAnQXdzU29sdXRpb25zLVI1My0xJyxcbiAgICAgICAgICAgIHJlYXNvbjogJ0EgcmVjb3JkIGNyZWF0ZWQgZm9yIFZTIENvZGUgc2VydmVyIGN1c3RvbSBkb21haW4nLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIHRydWUsXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIFVzZSBhIGN1c3RvbSByZXNvdXJjZSBsYW1iZGEgdG8gcnVuIHRoZSBTU00gZG9jdW1lbnQgb24gdGhlIGluc3RhbmNlXG4gICAgLy8gU3RvcmUgdGhlIGluc3RhbGxlciByZWZlcmVuY2UgZm9yIGRlcGVuZGVuY3kgbWFuYWdlbWVudFxuICAgIGxldCBpbnN0YWxsZXI6IEluc3RhbGxlciB8IHVuZGVmaW5lZDtcbiAgICBzd2l0Y2ggKGluc3RhbmNlT3BlcmF0aW5nU3lzdGVtKSB7XG4gICAgICBjYXNlIExpbnV4Rmxhdm9yVHlwZS5VQlVOVFVfMjI6XG4gICAgICBjYXNlIExpbnV4Rmxhdm9yVHlwZS5VQlVOVFVfMjQ6XG4gICAgICBjYXNlIExpbnV4Rmxhdm9yVHlwZS5VQlVOVFVfMjU6XG4gICAgICAgIGluc3RhbGxlciA9IEluc3RhbGxlci51YnVudHUoe1xuICAgICAgICAgIGluc3RhbmNlSWQ6IHRoaXMuaW5zdGFuY2UuaW5zdGFuY2VJZCxcbiAgICAgICAgICB2c0NvZGVVc2VyOiB2c0NvZGVVc2VyLFxuICAgICAgICAgIHZzQ29kZVBhc3N3b3JkOiB2c2NvZGVQYXNzd29yZCxcbiAgICAgICAgICBkZXZTZXJ2ZXJCYXNlUGF0aDogcHJvcHM/LmRldlNlcnZlckJhc2VQYXRoLFxuICAgICAgICAgIGRldlNlcnZlclBvcnQ6IHByb3BzPy5kZXZTZXJ2ZXJQb3J0LFxuICAgICAgICAgIGhvbWVGb2xkZXI6IGhvbWVGb2xkZXIsXG4gICAgICAgICAgbGludXhGbGF2b3JUeXBlOiBpbnN0YW5jZU9wZXJhdGluZ1N5c3RlbSxcbiAgICAgICAgICBjdXN0b21Eb21haW5OYW1lOiBkb21haW5OYW1lLFxuICAgICAgICAgIHJlcG9Vcmw6IHByb3BzPy5yZXBvVXJsLFxuICAgICAgICAgIGFzc2V0WmlwUzNQYXRoOiBwcm9wcz8uYXNzZXRaaXBTM1BhdGgsXG4gICAgICAgICAgYnJhbmNoWmlwUzNQYXRoOiBwcm9wcz8uYnJhbmNoWmlwUzNQYXRoLFxuICAgICAgICAgIGZvbGRlclppcFMzUGF0aDogcHJvcHM/LmZvbGRlclppcFMzUGF0aCxcbiAgICAgICAgICBjdXN0b21JbnN0YWxsU3RlcHM6IHByb3BzPy5jdXN0b21JbnN0YWxsU3RlcHMsXG4gICAgICAgIH0pLl9iaW5kKHRoaXMpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgTGludXhGbGF2b3JUeXBlLkFNQVpPTl9MSU5VWF8yMDIzOlxuICAgICAgICBpbnN0YWxsZXIgPSBJbnN0YWxsZXIuYW1hem9uTGludXgyMDIzKHtcbiAgICAgICAgICBpbnN0YW5jZUlkOiB0aGlzLmluc3RhbmNlLmluc3RhbmNlSWQsXG4gICAgICAgICAgdnNDb2RlVXNlcjogdnNDb2RlVXNlcixcbiAgICAgICAgICB2c0NvZGVQYXNzd29yZDogdnNjb2RlUGFzc3dvcmQsXG4gICAgICAgICAgZGV2U2VydmVyQmFzZVBhdGg6IHByb3BzPy5kZXZTZXJ2ZXJCYXNlUGF0aCxcbiAgICAgICAgICBkZXZTZXJ2ZXJQb3J0OiBwcm9wcz8uZGV2U2VydmVyUG9ydCxcbiAgICAgICAgICBob21lRm9sZGVyOiBob21lRm9sZGVyLFxuICAgICAgICAgIGxpbnV4Rmxhdm9yVHlwZTogaW5zdGFuY2VPcGVyYXRpbmdTeXN0ZW0sXG4gICAgICAgICAgY3VzdG9tRG9tYWluTmFtZTogZG9tYWluTmFtZSxcbiAgICAgICAgICByZXBvVXJsOiBwcm9wcz8ucmVwb1VybCxcbiAgICAgICAgICBhc3NldFppcFMzUGF0aDogcHJvcHM/LmFzc2V0WmlwUzNQYXRoLFxuICAgICAgICAgIGJyYW5jaFppcFMzUGF0aDogcHJvcHM/LmJyYW5jaFppcFMzUGF0aCxcbiAgICAgICAgICBmb2xkZXJaaXBTM1BhdGg6IHByb3BzPy5mb2xkZXJaaXBTM1BhdGgsXG4gICAgICAgICAgY3VzdG9tSW5zdGFsbFN0ZXBzOiBwcm9wcz8uY3VzdG9tSW5zdGFsbFN0ZXBzLFxuICAgICAgICB9KS5fYmluZCh0aGlzKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIExpbnV4IGZsYXZvcjogJHtpbnN0YW5jZU9wZXJhdGluZ1N5c3RlbX1gKTtcbiAgICB9XG5cbiAgICBpZiAoIWluc3RhbGxlcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnN0YWxsZXIgd2FzIG5vdCBjcmVhdGVkIC0gdGhpcyBzaG91bGQgbmV2ZXIgaGFwcGVuJyk7XG4gICAgfVxuICAgIC8vIHNvIHdlIHBhc3MgdGhlIG91dGVyIHNjb3BlIG9mIHRoaXMgY29uc3RydWN0IHRocm91Z2ggdGhlIGluc3RhbGxlclxuXG4gICAgLy8gTk9URTogbWF5YmUgaGF2ZSBhIGhlYWxoY2hlY2sgQ0ZOIGN1c3RvbSByZXNvdXJjZSB0byBzZWUgaWYgdGhlIHZzY29kZSBzZXJ2ZXIgaXMgaGVhbHRoeVxuICAgIC8vIGF0bSB0aGlzIGlzIGFjaGlldmVkIGJ5IHRoZSBpbnRlZyB0ZXN0c1xuXG4gICAgLy8gQ3JlYXRlIGlkbGUgbW9uaXRvciBmb3IgYXV0by1zdG9wIGZlYXR1cmVcbiAgICBpZiAocHJvcHM/LmVuYWJsZUF1dG9TdG9wKSB7XG4gICAgICB0aGlzLmlkbGVNb25pdG9yID0gbmV3IElkbGVNb25pdG9yKHRoaXMsICdJZGxlTW9uaXRvcicsIHtcbiAgICAgICAgaW5zdGFuY2U6IHRoaXMuaW5zdGFuY2UsXG4gICAgICAgIGRpc3RyaWJ1dGlvbjogZGlzdHJpYnV0aW9uLFxuICAgICAgICBpZGxlVGltZW91dE1pbnV0ZXM6IHByb3BzPy5pZGxlVGltZW91dE1pbnV0ZXMgPz8gMzAsXG4gICAgICAgIGNoZWNrSW50ZXJ2YWxNaW51dGVzOiBwcm9wcz8uaWRsZUNoZWNrSW50ZXJ2YWxNaW51dGVzID8/IDUsXG4gICAgICAgIHNraXBTdGF0dXNDaGVja3M6IHByb3BzPy5za2lwU3RhdHVzQ2hlY2tzID8/IGZhbHNlLFxuICAgICAgfSk7XG5cbiAgICAgIC8vIEVuYWJsZSB0aGUgSWRsZU1vbml0b3Igc2NoZWR1bGUgb25seSBhZnRlciBpbnN0YWxsYXRpb24gY29tcGxldGVzXG4gICAgICAvLyBUaGlzIHByZXZlbnRzIHRoZSBtb25pdG9yIGZyb20gc3RvcHBpbmcgdGhlIGluc3RhbmNlIGR1cmluZyBWUyBDb2RlIFNlcnZlciBpbnN0YWxsYXRpb25cbiAgICAgIGNvbnN0IGVuYWJsZXIgPSBuZXcgSWRsZU1vbml0b3JFbmFibGVyKHRoaXMsICdJZGxlTW9uaXRvckVuYWJsZXInLCB7XG4gICAgICAgIHNjaGVkdWxlUnVsZTogdGhpcy5pZGxlTW9uaXRvci5zY2hlZHVsZVJ1bGUsXG4gICAgICB9KTtcblxuICAgICAgLy8gQ3JlYXRlIGV4cGxpY2l0IGRlcGVuZGVuY3k6IGVuYWJsZXIgZGVwZW5kcyBvbiBpbnN0YWxsZXIgY29tcGxldGlvblxuICAgICAgLy8gVGhlIGluc3RhbGxlciBjcmVhdGVzIGEgY3VzdG9tIHJlc291cmNlIG5hbWVkICdTU01JbnN0YWxsZXJDdXN0b21SZXNvdXJjZSdcbiAgICAgIGNvbnN0IGluc3RhbGxlckN1c3RvbVJlc291cmNlID0gdGhpcy5ub2RlLmZpbmRDaGlsZCgnU1NNSW5zdGFsbGVyQ3VzdG9tUmVzb3VyY2UnKTtcbiAgICAgIGVuYWJsZXIubm9kZS5hZGREZXBlbmRlbmN5KGluc3RhbGxlckN1c3RvbVJlc291cmNlKTtcbiAgICB9XG5cbiAgICAvLyBPdXRwdXRzXG4gICAgY29uc3QgZmluYWxEb21haW5OYW1lID0gZG9tYWluTmFtZSB8fCBkaXN0cmlidXRpb24uZG9tYWluTmFtZTtcbiAgICB0aGlzLmRvbWFpbk5hbWUgPSBgaHR0cHM6Ly8ke2ZpbmFsRG9tYWluTmFtZX0vP2ZvbGRlcj0ke2hvbWVGb2xkZXJ9YDtcbiAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsICdkb21haW5OYW1lJywge1xuICAgICAgZGVzY3JpcHRpb246ICdUaGUgZG9tYWluIG5hbWUgb2YgdGhlIGRpc3RyaWJ1dGlvbicsXG4gICAgICB2YWx1ZTogdGhpcy5kb21haW5OYW1lLFxuICAgIH0pO1xuXG4gICAgdGhpcy5wYXNzd29yZCA9IHZzY29kZVBhc3N3b3JkO1xuICAgIG5ldyBDZm5PdXRwdXQodGhpcywgJ3Bhc3N3b3JkJywge1xuICAgICAgZGVzY3JpcHRpb246ICdUaGUgcGFzc3dvcmQgZm9yIHRoZSBWU0NvZGUgc2VydmVyJyxcbiAgICAgIHZhbHVlOiB2c2NvZGVQYXNzd29yZCxcbiAgICB9KTtcbiAgfVxufVxuXG4vKipcbiAqIFRhZ3MgYWxsIHRoZSByZXNvdXJjZXMgaW4gdGhlIGNvbnN0cnVjdFxuICovXG5jbGFzcyBOb2RlVGFnZ2VyIGltcGxlbWVudHMgSUFzcGVjdCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgdGFnczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICBjb25zdHJ1Y3Rvcih0YWdzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9KSB7XG4gICAgdGhpcy50YWdzID0gdGFncztcbiAgfVxuXG4gIHZpc2l0KG5vZGU6IElDb25zdHJ1Y3QpIHtcbiAgICAvLyBPbmx5IHRhZyBMMSBjb25zdHJ1Y3RzIChDZm5SZXNvdXJjZSkgYW5kIEwyIGNvbnN0cnVjdHMgdGhhdCByZXByZXNlbnQgQVdTIHJlc291cmNlc1xuICAgIC8vIFRoaXMgcHJldmVudHMgaW5maW5pdGUgbG9vcHMgYnkgYXZvaWRpbmcgdGFnZ2luZyBvZiBpbnRlcm1lZGlhdGUgY29uc3RydWN0c1xuICAgIGNvbnN0IG5vZGVUeXBlID0gbm9kZS5jb25zdHJ1Y3Rvci5uYW1lO1xuXG4gICAgLy8gQ2hlY2sgaWYgdGhpcyBpcyBhIENESyBMMSBjb25zdHJ1Y3QgKHN0YXJ0cyB3aXRoICdDZm4nKSBvciBrbm93biB0YWdnYWJsZSBMMiBjb25zdHJ1Y3RzXG4gICAgY29uc3QgaXNUYWdnYWJsZUNvbnN0cnVjdCA9XG4gICAgICBub2RlVHlwZS5zdGFydHNXaXRoKCdDZm4nKSB8fFxuICAgICAgbm9kZVR5cGUuaW5jbHVkZXMoJ0luc3RhbmNlJykgfHxcbiAgICAgIG5vZGVUeXBlLmluY2x1ZGVzKCdWcGMnKSB8fFxuICAgICAgbm9kZVR5cGUuaW5jbHVkZXMoJ1N1Ym5ldCcpIHx8XG4gICAgICBub2RlVHlwZS5pbmNsdWRlcygnU2VjdXJpdHlHcm91cCcpIHx8XG4gICAgICBub2RlVHlwZS5pbmNsdWRlcygnVm9sdW1lJykgfHxcbiAgICAgIG5vZGVUeXBlLmluY2x1ZGVzKCdEaXN0cmlidXRpb24nKSB8fFxuICAgICAgbm9kZVR5cGUuaW5jbHVkZXMoJ0xvYWRCYWxhbmNlcicpIHx8XG4gICAgICBub2RlVHlwZS5pbmNsdWRlcygnVGFyZ2V0R3JvdXAnKTtcblxuICAgIC8vIFNraXAgY29uc3RydWN0cyB0aGF0IGFyZSBrbm93biB0byBjYXVzZSBpc3N1ZXNcbiAgICBjb25zdCBpc1Byb2JsZW1hdGljQ29uc3RydWN0ID1cbiAgICAgIG5vZGVUeXBlLmluY2x1ZGVzKCdDZXJ0aWZpY2F0ZScpIHx8XG4gICAgICBub2RlVHlwZS5pbmNsdWRlcygnSG9zdGVkWm9uZScpIHx8XG4gICAgICBub2RlVHlwZS5pbmNsdWRlcygnQ3VzdG9tUmVzb3VyY2UnKSB8fFxuICAgICAgbm9kZVR5cGUuaW5jbHVkZXMoJ1Byb3ZpZGVyJykgfHxcbiAgICAgIG5vZGVUeXBlLmluY2x1ZGVzKCdGdW5jdGlvbicpIHx8XG4gICAgICBub2RlVHlwZS5pbmNsdWRlcygnUm9sZScpIHx8XG4gICAgICBub2RlVHlwZS5pbmNsdWRlcygnUG9saWN5Jyk7XG5cbiAgICBpZiAoaXNUYWdnYWJsZUNvbnN0cnVjdCAmJiAhaXNQcm9ibGVtYXRpY0NvbnN0cnVjdCkge1xuICAgICAgT2JqZWN0LmVudHJpZXModGhpcy50YWdzKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBUYWdzLm9mKG5vZGUpLmFkZChrZXksIHZhbHVlKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAvLyBTaWxlbnRseSBpZ25vcmUgdGFnZ2luZyBlcnJvcnNcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
package/package.json
CHANGED
|
@@ -6,38 +6,38 @@
|
|
|
6
6
|
"url": "https://github.com/MV-Consulting/cdk-vscode-server.git"
|
|
7
7
|
},
|
|
8
8
|
"scripts": {
|
|
9
|
-
"build": "
|
|
10
|
-
"bump": "
|
|
11
|
-
"bundle": "
|
|
12
|
-
"bundle:idle-monitor-enabler/idle-monitor-enabler.lambda": "
|
|
13
|
-
"bundle:idle-monitor-enabler/idle-monitor-enabler.lambda:watch": "
|
|
14
|
-
"bundle:idle-monitor/idle-monitor.lambda": "
|
|
15
|
-
"bundle:idle-monitor/idle-monitor.lambda:watch": "
|
|
16
|
-
"bundle:installer/installer.lambda": "
|
|
17
|
-
"bundle:installer/installer.lambda:watch": "
|
|
18
|
-
"bundle:secret-retriever/secret-retriever.lambda": "
|
|
19
|
-
"bundle:secret-retriever/secret-retriever.lambda:watch": "
|
|
20
|
-
"clobber": "
|
|
21
|
-
"compat": "
|
|
22
|
-
"compile": "
|
|
23
|
-
"default": "
|
|
24
|
-
"docgen": "
|
|
25
|
-
"eject": "
|
|
26
|
-
"eslint": "
|
|
27
|
-
"package": "
|
|
28
|
-
"package-all": "
|
|
29
|
-
"package:js": "
|
|
30
|
-
"package:python": "
|
|
31
|
-
"post-compile": "
|
|
32
|
-
"post-upgrade": "
|
|
33
|
-
"pre-compile": "
|
|
34
|
-
"release": "
|
|
35
|
-
"test": "
|
|
36
|
-
"test:watch": "
|
|
37
|
-
"unbump": "
|
|
38
|
-
"upgrade": "
|
|
39
|
-
"watch": "
|
|
40
|
-
"projen": "
|
|
9
|
+
"build": "projen build",
|
|
10
|
+
"bump": "projen bump",
|
|
11
|
+
"bundle": "projen bundle",
|
|
12
|
+
"bundle:idle-monitor-enabler/idle-monitor-enabler.lambda": "projen bundle:idle-monitor-enabler/idle-monitor-enabler.lambda",
|
|
13
|
+
"bundle:idle-monitor-enabler/idle-monitor-enabler.lambda:watch": "projen bundle:idle-monitor-enabler/idle-monitor-enabler.lambda:watch",
|
|
14
|
+
"bundle:idle-monitor/idle-monitor.lambda": "projen bundle:idle-monitor/idle-monitor.lambda",
|
|
15
|
+
"bundle:idle-monitor/idle-monitor.lambda:watch": "projen bundle:idle-monitor/idle-monitor.lambda:watch",
|
|
16
|
+
"bundle:installer/installer.lambda": "projen bundle:installer/installer.lambda",
|
|
17
|
+
"bundle:installer/installer.lambda:watch": "projen bundle:installer/installer.lambda:watch",
|
|
18
|
+
"bundle:secret-retriever/secret-retriever.lambda": "projen bundle:secret-retriever/secret-retriever.lambda",
|
|
19
|
+
"bundle:secret-retriever/secret-retriever.lambda:watch": "projen bundle:secret-retriever/secret-retriever.lambda:watch",
|
|
20
|
+
"clobber": "projen clobber",
|
|
21
|
+
"compat": "projen compat",
|
|
22
|
+
"compile": "projen compile",
|
|
23
|
+
"default": "projen default",
|
|
24
|
+
"docgen": "projen docgen",
|
|
25
|
+
"eject": "projen eject",
|
|
26
|
+
"eslint": "projen eslint",
|
|
27
|
+
"package": "projen package",
|
|
28
|
+
"package-all": "projen package-all",
|
|
29
|
+
"package:js": "projen package:js",
|
|
30
|
+
"package:python": "projen package:python",
|
|
31
|
+
"post-compile": "projen post-compile",
|
|
32
|
+
"post-upgrade": "projen post-upgrade",
|
|
33
|
+
"pre-compile": "projen pre-compile",
|
|
34
|
+
"release": "projen release",
|
|
35
|
+
"test": "projen test",
|
|
36
|
+
"test:watch": "projen test:watch",
|
|
37
|
+
"unbump": "projen unbump",
|
|
38
|
+
"upgrade": "projen upgrade",
|
|
39
|
+
"watch": "projen watch",
|
|
40
|
+
"projen": "projen",
|
|
41
41
|
"prepare": "husky",
|
|
42
42
|
"awslint": "awslint",
|
|
43
43
|
"integ-test": "integ-runner --directory ./integ-tests --parallel-regions eu-west-1 --parallel-regions eu-west-2 --parallel-regions eu-north-1 --parallel-regions eu-west-3 --update-on-failed"
|
|
@@ -48,8 +48,8 @@
|
|
|
48
48
|
"organization": true
|
|
49
49
|
},
|
|
50
50
|
"devDependencies": {
|
|
51
|
-
"@aws-cdk/integ-runner": "
|
|
52
|
-
"@aws-cdk/integ-tests-alpha": "
|
|
51
|
+
"@aws-cdk/integ-runner": "2.190.0",
|
|
52
|
+
"@aws-cdk/integ-tests-alpha": "2.190.0-alpha.0",
|
|
53
53
|
"@aws-sdk/client-cloudwatch": "^3.922.0",
|
|
54
54
|
"@aws-sdk/client-dynamodb": "^3.922.0",
|
|
55
55
|
"@aws-sdk/client-ec2": "^3.922.0",
|
|
@@ -62,12 +62,12 @@
|
|
|
62
62
|
"@stylistic/eslint-plugin": "^2",
|
|
63
63
|
"@types/aws-lambda": "^8.10.157",
|
|
64
64
|
"@types/jest": "^30.0.0",
|
|
65
|
-
"@types/jsdom": "^
|
|
66
|
-
"@types/node": "^
|
|
65
|
+
"@types/jsdom": "^28.0.0",
|
|
66
|
+
"@types/node": "^24",
|
|
67
67
|
"@typescript-eslint/eslint-plugin": "^8",
|
|
68
68
|
"@typescript-eslint/parser": "^8",
|
|
69
69
|
"aws-cdk-lib": "2.190.0",
|
|
70
|
-
"awslint": "
|
|
70
|
+
"awslint": "2.190.0-alpha.0",
|
|
71
71
|
"commit-and-tag-version": "^12",
|
|
72
72
|
"esbuild": "^0.25.12",
|
|
73
73
|
"eslint": "^9",
|
|
@@ -84,14 +84,14 @@
|
|
|
84
84
|
"projen": "0.91.8",
|
|
85
85
|
"ts-jest": "^29.4.5",
|
|
86
86
|
"ts-node": "^10.9.2",
|
|
87
|
-
"typescript": "^
|
|
87
|
+
"typescript": "^6.0.0"
|
|
88
88
|
},
|
|
89
89
|
"peerDependencies": {
|
|
90
90
|
"aws-cdk-lib": "^2.190.0",
|
|
91
|
-
"constructs": "^10.
|
|
91
|
+
"constructs": "^10.5.1"
|
|
92
92
|
},
|
|
93
93
|
"dependencies": {
|
|
94
|
-
"@mavogel/mvc-projen": "^0.0.
|
|
94
|
+
"@mavogel/mvc-projen": "^0.0.25",
|
|
95
95
|
"cdk-nag": "^2.37.55",
|
|
96
96
|
"constructs": "^10.4.2",
|
|
97
97
|
"node-html-parser": "^7.0.1"
|
|
@@ -107,14 +107,20 @@
|
|
|
107
107
|
"vscode"
|
|
108
108
|
],
|
|
109
109
|
"engines": {
|
|
110
|
-
"node": ">=
|
|
110
|
+
"node": ">= 24.x"
|
|
111
|
+
},
|
|
112
|
+
"devEngines": {
|
|
113
|
+
"packageManager": {
|
|
114
|
+
"name": "npm",
|
|
115
|
+
"onFail": "ignore"
|
|
116
|
+
}
|
|
111
117
|
},
|
|
112
118
|
"main": "lib/index.js",
|
|
113
119
|
"license": "Apache-2.0",
|
|
114
120
|
"publishConfig": {
|
|
115
121
|
"access": "public"
|
|
116
122
|
},
|
|
117
|
-
"version": "0.0.
|
|
123
|
+
"version": "0.0.75",
|
|
118
124
|
"jest": {
|
|
119
125
|
"coverageProvider": "v8",
|
|
120
126
|
"testMatch": [
|