@rio-cloud/cdk-v2-constructs 6.10.6 → 6.10.8
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/docs/changelog.md
CHANGED
|
@@ -2,6 +2,15 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file. See [commit-and-tag-version](https://github.com/absolute-version/commit-and-tag-version) for commit guidelines.
|
|
4
4
|
|
|
5
|
+
## [6.10.8](https://bitbucket.collaboration-man.com/projects/RIODEV/repos/cdk-v2-constructs/compare/commits?targetBranch=refs%2Ftags%2Fv6.10.7&sourceBranch=refs%2Ftags%2Fv6.10.8) (2024-10-08)
|
|
6
|
+
|
|
7
|
+
## [6.10.7](https://bitbucket.collaboration-man.com/projects/RIODEV/repos/cdk-v2-constructs/compare/commits?targetBranch=refs%2Ftags%2Fv6.10.6&sourceBranch=refs%2Ftags%2Fv6.10.7) (2024-10-08)
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
### Bug Fixes
|
|
11
|
+
|
|
12
|
+
* **RioFargateService:** pin version of FluentBit image ([dcfde43](https://bitbucket.collaboration-man.com/projects/RIODEV/repos/cdk-v2-constructs/commits/dcfde4344eb011cfe887bbc1932b6d2a4fafadf4))
|
|
13
|
+
|
|
5
14
|
## [6.10.6](https://bitbucket.collaboration-man.com/projects/RIODEV/repos/cdk-v2-constructs/compare/commits?targetBranch=refs%2Ftags%2Fv6.10.5&sourceBranch=refs%2Ftags%2Fv6.10.6) (2024-10-07)
|
|
6
15
|
|
|
7
16
|
## [6.10.5](https://bitbucket.collaboration-man.com/projects/RIODEV/repos/cdk-v2-constructs/compare/commits?targetBranch=refs%2Ftags%2Fv6.10.4&sourceBranch=refs%2Ftags%2Fv6.10.5) (2024-10-07)
|
package/lib/fargate/datadog.js
CHANGED
|
@@ -203,7 +203,7 @@ function determineSeparator(containerType) {
|
|
|
203
203
|
function addFireLensLogRouter(props) {
|
|
204
204
|
const fluentBitS3ConfigFile = props.firelensConfigBucketArn + props.firelensConfigFilePath;
|
|
205
205
|
return props.taskDefinition.addFirelensLogRouter('firelens-log-router', {
|
|
206
|
-
image: ecs.ContainerImage.fromRegistry('public.ecr.aws/aws-observability/aws-for-fluent-bit:init-
|
|
206
|
+
image: ecs.ContainerImage.fromRegistry('public.ecr.aws/aws-observability/aws-for-fluent-bit:init-2.32.2.20240820'),
|
|
207
207
|
firelensConfig: {
|
|
208
208
|
type: ecs.FirelensLogRouterType.FLUENTBIT,
|
|
209
209
|
options: {
|
|
@@ -321,4 +321,4 @@ function ensureLoggingAndMonitoringAreReadyBeforeServiceStarts(rioFargateService
|
|
|
321
321
|
}
|
|
322
322
|
}
|
|
323
323
|
}
|
|
324
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWRvZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9mYXJnYXRlL2RhdGFkb2cudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBa0lBLDBGQTZCQztBQWtCRCx3REFNQztBQUVELDhDQW9FQztBQUVELDRGQVNDO0FBNENELG9EQWlDQztBQUVELG9DQXFHQztBQUVELHNIQW9CQztBQWxkRCw2Q0FBOEQ7QUFDOUQsMkNBQTJDO0FBQzNDLGlEQUF1RDtBQUN2RCwyQ0FBMkM7QUFDM0MsaURBQWlEO0FBQ2pELDZDQUE2QztBQUc3QywrREFBOEU7QUFHOUU7O0dBRUc7QUFDSCxNQUFhLE9BQU87SUFFWCxNQUFNLENBQUMsdUNBQXVDLENBQ25ELEtBQWdCLEVBQ2hCLEtBQWEsRUFDYixXQUFtQixFQUNuQixPQUFlLEVBQ2YsV0FBbUIsRUFDbkIsUUFBZ0IsRUFDaEIsY0FBc0IsRUFDdEIsY0FBa0Q7UUFFbEQsT0FBTyx1Q0FBdUMsQ0FBQztZQUM3QyxLQUFLO1lBQ0wsS0FBSztZQUNMLFdBQVc7WUFDWCxPQUFPO1lBQ1AsV0FBVztZQUNYLFFBQVE7WUFDUixjQUFjO1lBQ2QsY0FBYztTQUNmLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxNQUFNLENBQUMsc0JBQXNCLENBQUMsS0FBYSxFQUFFLFdBQW1CLEVBQUUsT0FBZTtRQUN0RixPQUFPLHNCQUFzQixDQUFDLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFTSxNQUFNLENBQUMsaUJBQWlCLENBQzdCLEtBQWdCLEVBQ2hCLGNBQWtDLEVBQ2xDLFdBQW1CLEVBQ25CLFFBQWdCLEVBQ2hCLGNBQXNCLEVBQ3RCLEtBQWEsRUFDYixXQUFtQixFQUNuQixPQUFlLEVBQ2Ysc0JBQTRDLEVBQzVDLFdBQW1CLEVBQ25CLGtCQUFzQyxFQUN0Qyx1QkFBaUMsRUFDakMsR0FBVyxFQUNYLGNBQXNCLEVBQ3RCLFNBQWtCLEVBQ2xCLFlBQW9CLEVBQ3BCLGNBQWtEO1FBR2xELE9BQU8saUJBQWlCLENBQUM7WUFDdkIsS0FBSztZQUNMLGNBQWM7WUFDZCxXQUFXO1lBQ1gsUUFBUTtZQUNSLGNBQWM7WUFDZCxLQUFLO1lBQ0wsV0FBVztZQUNYLE9BQU87WUFDUCxzQkFBc0I7WUFDdEIsV0FBVztZQUNYLGtCQUFrQjtZQUNsQix1QkFBdUI7WUFDdkIsR0FBRztZQUNILGNBQWM7WUFDZCxTQUFTO1lBQ1QsWUFBWTtZQUNaLGNBQWM7U0FDZixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sTUFBTSxDQUFDLG9CQUFvQixDQUNoQyxjQUFrQyxFQUNsQyxHQUFXLEVBQ1gsY0FBc0IsRUFDdEIsc0JBQThCLEVBQzlCLHVCQUErQixFQUMvQixXQUFtQjtRQUVuQixPQUFPLG9CQUFvQixDQUFDLEVBQUUsY0FBYyxFQUFFLEdBQUcsRUFBRSxjQUFjLEVBQUUsc0JBQXNCLEVBQUUsdUJBQXVCLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUNySSxDQUFDO0lBRU0sTUFBTSxDQUFDLFlBQVksQ0FDeEIsS0FBZ0IsRUFDaEIsV0FBbUIsRUFDbkIsUUFBZ0IsRUFDaEIsY0FBc0IsRUFDdEIsS0FBYSxFQUNiLFdBQW1CLEVBQ25CLE9BQWUsRUFDZixzQkFBNEMsRUFDNUMsa0JBQXNDLEVBQ3RDLFdBQW1CLEVBQ25CLGFBQTRDLEVBQzVDLGNBQWtEO1FBR2xELE9BQU8sWUFBWSxDQUFDO1lBQ2xCLEtBQUs7WUFDTCxXQUFXO1lBQ1gsUUFBUTtZQUNSLGNBQWM7WUFDZCxLQUFLO1lBQ0wsV0FBVztZQUNYLE9BQU87WUFDUCxzQkFBc0I7WUFDdEIsa0JBQWtCO1lBQ2xCLFdBQVc7WUFDWCxhQUFhO1lBQ2IsY0FBYztTQUNmLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxNQUFNLENBQUMscURBQXFELENBQUMsaUJBQW9DO1FBQ3RHLHFEQUFxRCxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDM0UsQ0FBQztDQUNGO0FBbEhELDBCQWtIQztBQUVELFNBQWdCLHVDQUF1QyxDQUFDLEtBU3ZEO0lBRUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEdBQUcsbUJBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRTdELE9BQU87UUFDTCwyR0FBMkc7UUFDM0csTUFBTSxFQUFFLEtBQUssQ0FBQyxLQUFLO1FBQ25CLFVBQVUsRUFBRSxLQUFLLENBQUMsV0FBVztRQUM3QixVQUFVLEVBQUUsS0FBSyxDQUFDLE9BQU87UUFDekIsb0dBQW9HO1FBQ3BHLGlCQUFpQixFQUFFLE1BQU07UUFDekIsa0JBQWtCLEVBQUUsNENBQTRDLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQztRQUNuRixPQUFPLEVBQUUsK0JBQStCLENBQUM7WUFDdkMsR0FBRyxLQUFLO1lBQ1IsYUFBYSxFQUFFLFNBQVM7WUFDeEIsU0FBUztZQUNULE1BQU07U0FDUCxDQUFDO1FBQ0Ysb0JBQW9CLEVBQUUsS0FBSyxFQUFFLGtFQUFrRTtLQUNoRyxDQUFDO0FBQ0osQ0FBQztBQUVELGtIQUFrSDtBQUNsSCxTQUFTLDRDQUE0QyxDQUFDLFdBQW1CO0lBRXZFLE1BQU0sY0FBYyxHQUFHO1FBQ3JCLFVBQVUsRUFBRSxHQUFHLFdBQVcsU0FBUztRQUNuQyxjQUFjLEVBQUUsR0FBRyxXQUFXLFVBQVU7UUFDeEMsT0FBTyxFQUFFLEdBQUcsV0FBVyxRQUFRO1FBQy9CLE9BQU8sRUFBRSxHQUFHLFdBQVcsU0FBUztRQUNoQyxPQUFPLEVBQUUsR0FBRyxXQUFXLFFBQVE7S0FDaEMsQ0FBQztJQUVGLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUM7U0FDbEMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFDO1NBQ3hDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNmLENBQUM7QUFFRCxTQUFnQixzQkFBc0IsQ0FBQyxLQUE0RDtJQUNqRyxPQUFPO1FBQ0wsd0JBQXdCLEVBQUUsS0FBSyxDQUFDLEtBQUs7UUFDckMsNEJBQTRCLEVBQUUsS0FBSyxDQUFDLFdBQVc7UUFDL0MsNEJBQTRCLEVBQUUsS0FBSyxDQUFDLE9BQU87S0FDNUMsQ0FBQztBQUNKLENBQUM7QUFFRCxTQUFnQixpQkFBaUIsQ0FBQyxLQWtCakM7SUFFQyxNQUFNLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsR0FBRyxtQkFBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0QsTUFBTSxjQUFjLEdBQUcsS0FBSyxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsZUFBZSxFQUFFO1FBQ3hFLEtBQUssRUFBRSxHQUFHLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxnQ0FBZ0MsS0FBSyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzVGLE9BQU8sRUFBRSxZQUFZLENBQUMsRUFBRSxHQUFHLEtBQUssRUFBRSxhQUFhLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQztRQUNyRSxHQUFHLEVBQUUsS0FBSyxDQUFDLEdBQUc7UUFDZCxjQUFjLEVBQUUsS0FBSyxDQUFDLGNBQWM7UUFDcEMsV0FBVyxFQUFFO1lBQ1gsMkdBQTJHO1lBQzNHLE1BQU0sRUFBRSxLQUFLLENBQUMsS0FBSztZQUNuQixVQUFVLEVBQUUsS0FBSyxDQUFDLFdBQVc7WUFDN0IsVUFBVSxFQUFFLEtBQUssQ0FBQyxPQUFPO1lBQ3pCLDZFQUE2RTtZQUM3RSxjQUFjLEVBQUUsTUFBTTtZQUN0Qix1QkFBdUIsRUFBRSxLQUFLLENBQUMsdUJBQXVCO2lCQUNuRCxHQUFHLENBQUMsQ0FBQyxzQkFBc0IsRUFBRSxFQUFFLENBQUMsT0FBTyxzQkFBc0IsRUFBRSxDQUFDO2lCQUNoRSxJQUFJLENBQUMsR0FBRyxDQUFDO1lBQ1osbUJBQW1CO1lBQ25CLE9BQU8sRUFBRSxLQUFLLENBQUMsV0FBVztZQUMxQixPQUFPLEVBQUUsK0JBQStCLENBQUMsRUFBRSxHQUFHLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxDQUFDO1lBQzNHLFdBQVcsRUFBRSxNQUFNO1lBQ25CLDBCQUEwQixFQUFFLEtBQUs7WUFDakMsK0JBQStCLEVBQUUsT0FBTztTQUN6QztRQUNELHdHQUF3RztRQUN4RyxXQUFXLEVBQUU7WUFDWCxXQUFXLEVBQUUsc0JBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQ2hDLFFBQVEsRUFBRSxzQkFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDOUIsT0FBTyxFQUFFLHNCQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUM1QixPQUFPLEVBQUUsQ0FBQztZQUNWLE9BQU8sRUFBRSxDQUFDLFdBQVcsRUFBRSxXQUFXLENBQUM7U0FDcEM7UUFDRCxPQUFPLEVBQUU7WUFDUCxVQUFVLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsc0JBQXNCLENBQUM7U0FDdEU7UUFDRCxTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVM7S0FDM0IsQ0FBQyxDQUFDO0lBRUgsY0FBYyxDQUFDLGVBQWUsQ0FBQztRQUM3QixhQUFhLEVBQUUsSUFBSTtRQUNuQixRQUFRLEVBQUUsR0FBRyxDQUFDLFFBQVEsQ0FBQyxHQUFHO0tBQzNCLENBQUMsQ0FBQztJQUVILGNBQWMsQ0FBQyxlQUFlLENBQUM7UUFDN0IsYUFBYSxFQUFFLElBQUk7UUFDbkIsUUFBUSxFQUFFLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRztLQUMzQixDQUFDLENBQUM7SUFFSCxPQUFPLGNBQWMsQ0FBQztBQUN4QixDQUFDO0FBRUQsU0FBZ0Isd0NBQXdDLENBQUMsS0FHeEQ7SUFDQyxLQUFLLENBQUMsY0FBYyxDQUFDLG1CQUFtQixDQUFDLElBQUksR0FBRyxDQUFDLGVBQWUsQ0FBQztRQUMvRCxTQUFTLEVBQUUsQ0FBQyxLQUFLLENBQUMsdUJBQXVCLEVBQUUsR0FBRyxLQUFLLENBQUMsdUJBQXVCLElBQUksQ0FBQztRQUNoRixPQUFPLEVBQUUsQ0FBQyxTQUFTLENBQUM7UUFDcEIsTUFBTSxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSztLQUN6QixDQUFDLENBQUMsQ0FBQztBQUNOLENBQUM7QUFFRCxTQUFTLCtCQUErQixDQUFDLEtBV3hDO0lBRUMsTUFBTSxTQUFTLEdBQUcsa0JBQWtCLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBRTFELE1BQU0sSUFBSSxHQUFHO1FBQ1gsa0JBQWtCO1FBQ2xCLGdFQUFnRTtRQUNoRSw4RkFBOEY7UUFDOUYsR0FBRyxFQUFFLEtBQUssQ0FBQyxLQUFLO1FBQ2hCLE9BQU8sRUFBRSxLQUFLLENBQUMsV0FBVztRQUMxQixPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU87UUFDdEIsOEJBQThCO1FBQzlCLFVBQVUsRUFBRSxLQUFLLENBQUMsU0FBUztRQUMzQixZQUFZLEVBQUUsS0FBSyxDQUFDLFdBQVc7UUFDL0IsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNO1FBQ3BCLElBQUksRUFBRSxLQUFLLENBQUMsUUFBUTtRQUNwQixlQUFlLEVBQUUsS0FBSyxDQUFDLGNBQWM7S0FDdEMsQ0FBQztJQUNGLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEdBQUcsSUFBSSxFQUFFLEdBQUcsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1NBQ3hELEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQztTQUN4QyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDckIsQ0FBQztBQUVELFNBQVMsa0JBQWtCLENBQUMsYUFBMkQ7SUFDckYsSUFBSSxhQUFhLEtBQUssaUJBQWlCLEVBQUUsQ0FBQztRQUN4QyxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7U0FBTSxDQUFDO1FBQ04sT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0FBQ0gsQ0FBQztBQUVELFNBQWdCLG9CQUFvQixDQUFDLEtBT3BDO0lBQ0MsTUFBTSxxQkFBcUIsR0FBRyxLQUFLLENBQUMsdUJBQXVCLEdBQUcsS0FBSyxDQUFDLHNCQUFzQixDQUFDO0lBQzNGLE9BQU8sS0FBSyxDQUFDLGNBQWMsQ0FBQyxvQkFBb0IsQ0FBQyxxQkFBcUIsRUFBRTtRQUN0RSxLQUFLLEVBQUUsR0FBRyxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsaUVBQWlFLENBQUM7UUFDekcsY0FBYyxFQUFFO1lBQ2QsSUFBSSxFQUFFLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxTQUFTO1lBQ3pDLE9BQU8sRUFBRTtnQkFDUCxvQkFBb0IsRUFBRSxJQUFJO2FBQzNCO1NBQ0Y7UUFDRCxHQUFHLEVBQUUsS0FBSyxDQUFDLEdBQUc7UUFDZCxjQUFjLEVBQUUsS0FBSyxDQUFDLGNBQWM7UUFDcEMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDO1lBQzlCLFFBQVEsRUFBRSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLGNBQWMsRUFBRSwyQkFBMkIsRUFBRTtnQkFDN0UsWUFBWSxFQUFFLEdBQUcsS0FBSyxDQUFDLFdBQVcsc0JBQXNCO2FBQ3pELENBQUM7WUFDRixZQUFZLEVBQUUscUJBQXFCO1lBQ25DLElBQUksRUFBRSwwQkFBZ0IsQ0FBQyxZQUFZO1NBQ3BDLENBQUM7UUFDRixXQUFXLEVBQUU7WUFDWCxPQUFPLEVBQUUsQ0FBQyxXQUFXLEVBQUUsb0VBQW9FLENBQUM7U0FDN0Y7UUFDRCxXQUFXLEVBQUU7WUFDWCx3QkFBd0IsRUFBRSxxQkFBcUI7U0FDaEQ7S0FDRixDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsU0FBZ0IsWUFBWSxDQUFDLEtBYTVCO0lBRUMsSUFBSSxZQUFvQixDQUFDO0lBQ3pCLElBQUksVUFBa0IsQ0FBQztJQUN2QixJQUFJLHNCQUFzQixDQUFDO0lBRTNCLFFBQVEsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBRTVCLEtBQUssU0FBUztZQUNaLFVBQVUsR0FBRyxvQkFBb0IsQ0FBQztZQUNsQyxZQUFZLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQztZQUNqQyxzQkFBc0IsR0FBRyxTQUFTLENBQUM7WUFDbkMsTUFBTTtRQUVSLEtBQUssaUJBQWlCO1lBQ3BCLFVBQVUsR0FBRywyQkFBMkIsQ0FBQztZQUN6QyxZQUFZLEdBQUcsR0FBRyxLQUFLLENBQUMsV0FBVyxJQUFJLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUM3RCxzQkFBc0IsR0FBRyxnQkFBZ0IsQ0FBQztZQUMxQyxNQUFNO0lBQ1YsQ0FBQztJQUVELE1BQU0sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxHQUFHLG1CQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUU3RCxRQUFRLEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBRWpDLEtBQUssd0NBQWtCLENBQUMsYUFBYTtZQUNuQyw4TEFBOEw7WUFDOUwsK0RBQStEO1lBQy9ELE9BQU8sR0FBRyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUM7Z0JBQzdCLGtGQUFrRjtnQkFDbEYsT0FBTyxFQUFFO29CQUNQLElBQUksRUFBRSxTQUFTO29CQUNmLEtBQUssRUFBRSxHQUFHO29CQUNWLElBQUksRUFBRSxvQkFBb0IsS0FBSyxDQUFDLFdBQVcsRUFBRTtvQkFDN0MsR0FBRyxFQUFFLElBQUk7b0JBQ1QsTUFBTSxFQUFFLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxXQUFXO29CQUNoRCxRQUFRLEVBQUUsTUFBTTtvQkFDaEIsVUFBVSxFQUFFLFlBQVk7b0JBQ3hCLFNBQVMsRUFBRSxhQUFhO29CQUN4QixjQUFjLEVBQUUsS0FBSztvQkFDckIsT0FBTyxFQUFFLCtCQUErQixDQUFDLEVBQUUsR0FBRyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLENBQUM7b0JBQ3RHLFFBQVEsRUFBRSxLQUFLO2lCQUNoQjthQUNGLENBQUMsQ0FBQztRQUVMLEtBQUssd0NBQWtCLENBQUMsZ0JBQWdCLENBQUM7UUFDekMsS0FBSyx3Q0FBa0IsQ0FBQyx3QkFBd0I7WUFDOUMsTUFBTSwyQkFBMkIsR0FBRyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUU7Z0JBQzdFLFlBQVk7Z0JBQ1osU0FBUyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUTthQUN2QyxDQUFDLENBQUM7WUFDSCxrQkFBSSxDQUFDLEVBQUUsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ3ZFLE1BQU0sK0JBQStCLEdBQUcsS0FBSyxDQUFDLGtCQUFrQixLQUFLLHdDQUFrQixDQUFDLHdCQUF3QixDQUFDLENBQUMsQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDLENBQUMsbURBQW1ELENBQUM7WUFDMU0sTUFBTSxxQkFBcUIsR0FBRyxnQkFBRSxDQUFDLFdBQVcsQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO1lBQzlFLE1BQU0sYUFBYSxHQUFHLElBQUksTUFBTSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLHlCQUF5QixzQkFBc0IsRUFBRSxFQUFFO2dCQUM3RyxNQUFNLEVBQUUsdUJBQXVCO2dCQUMvQixZQUFZLEVBQUUscUJBQXFCO2dCQUNuQyxTQUFTLEVBQUUsUUFBUSxNQUFNLGdCQUFnQjtnQkFDekMsU0FBUyxFQUFFLDJCQUEyQixDQUFDLFdBQVc7YUFDbkQsQ0FBQyxDQUFDO1lBQ0gsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLElBQUksQ0FBQyxxQkFBcUIsQ0FDMUQsS0FBSyxDQUFDLEtBQUssRUFDWCxpQ0FBaUMsc0JBQXNCLEVBQUUsRUFDekQ7Z0JBQ0UsY0FBYyxFQUFFLHFCQUFxQjtnQkFDckMsYUFBYSxFQUFFLEVBQUU7Z0JBQ2pCLFlBQVksRUFBRSwyQkFBMkIsQ0FBQyxZQUFZO2FBQ3ZELENBQ0YsQ0FBQztZQUNGLHFCQUFxQixDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUNuRCxPQUFPLEdBQUcsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDO2dCQUM1QixZQUFZLEVBQUUsS0FBSyxDQUFDLGFBQWE7Z0JBQ2pDLFFBQVEsRUFBRSwyQkFBMkI7Z0JBQ3JDLElBQUksRUFBRSxHQUFHLENBQUMsZ0JBQWdCLENBQUMsWUFBWTtnQkFDdkMsYUFBYSxFQUFFLGtCQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQzthQUNsQyxDQUFDLENBQUM7UUFFTCxLQUFLLHdDQUFrQixDQUFDLElBQUk7WUFDMUIsTUFBTSx3QkFBd0IsR0FBRyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUU7Z0JBQzFFLFNBQVMsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVE7YUFDdkMsQ0FBQyxDQUFDO1lBQ0gsT0FBTyxHQUFHLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQztnQkFDNUIsWUFBWSxFQUFFLEtBQUssQ0FBQyxhQUFhO2dCQUNqQyxRQUFRLEVBQUUsd0JBQXdCO2dCQUNsQyxJQUFJLEVBQUUsR0FBRyxDQUFDLGdCQUFnQixDQUFDLFlBQVk7Z0JBQ3ZDLGFBQWEsRUFBRSxrQkFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7YUFDbEMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztBQUNILENBQUM7QUFFRCxTQUFnQixxREFBcUQsQ0FBQyxpQkFBc0U7SUFFMUksaUJBQWlCLENBQUMsMEJBQTBCLENBQUMsd0JBQXdCLENBQUM7UUFDcEUsU0FBUyxFQUFFLGlCQUFpQixDQUFDLGlDQUFpQztRQUM5RCxTQUFTLEVBQUUsR0FBRyxDQUFDLDRCQUE0QixDQUFDLE9BQU87S0FDcEQsQ0FBQyxDQUFDO0lBRUgsSUFBSSxpQkFBaUIsQ0FBQyw0QkFBNEIsRUFBRSxDQUFDO1FBQ25ELGlCQUFpQixDQUFDLDBCQUEwQixDQUFDLHdCQUF3QixDQUFDO1lBQ3BFLFNBQVMsRUFBRSxpQkFBaUIsQ0FBQyw0QkFBNEI7WUFDekQsU0FBUyxFQUFFLEdBQUcsQ0FBQyw0QkFBNEIsQ0FBQyxLQUFLO1NBQ2xELENBQUMsQ0FBQztRQUVILElBQUksaUJBQWlCLENBQUMsaUNBQWlDLENBQUMsZUFBZSxFQUFFLFNBQVMsS0FBSyxhQUFhLEVBQUUsQ0FBQztZQUNyRyxpQkFBaUIsQ0FBQyxpQ0FBaUMsQ0FBQyx3QkFBd0IsQ0FBQztnQkFDM0UsU0FBUyxFQUFFLGlCQUFpQixDQUFDLDRCQUE0QjtnQkFDekQsU0FBUyxFQUFFLEdBQUcsQ0FBQyw0QkFBNEIsQ0FBQyxLQUFLO2FBQ2xELENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IER1cmF0aW9uLCBGbiwgU2l6ZSwgU3RhY2ssIFRhZ3MgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgKiBhcyBlY3MgZnJvbSAnYXdzLWNkay1saWIvYXdzLWVjcyc7XG5pbXBvcnQgeyBBd3NMb2dEcml2ZXJNb2RlIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWVjcyc7XG5pbXBvcnQgKiBhcyBpYW0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG5pbXBvcnQgKiBhcyBsYW1iZGEgZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYSc7XG5pbXBvcnQgKiBhcyBsb2dzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1sb2dzJztcbmltcG9ydCAqIGFzIHNzbSBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc3NtJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgRGF0YURvZ0xvZ2dpbmdNb2RlLCBSaW9GYXJnYXRlU2VydmljZSB9IGZyb20gJy4vcmlvLWZhcmdhdGUtc2VydmljZSc7XG5pbXBvcnQgeyBSaW9GYXJnYXRlU2VydmljZUJsdWVHcmVlbkFscGhhIH0gZnJvbSAnLi9yaW8tZmFyZ2F0ZS1zZXJ2aWNlLWJsdWUtZ3JlZW4tYWxwaGEnO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkIE1vdmVkIG91dCBzdGF0aWMgbWV0aG9kcyBhbmQgaW1wb3JvdmVkIHNpZ25hdHVyZS4gVXNlIG5hbWVkIGltcG9ydCBpbnN0ZWFkLlxuICovXG5leHBvcnQgY2xhc3MgRGF0YURvZyB7XG5cbiAgcHVibGljIHN0YXRpYyBnZXRGYXJnYXRlQ29udGFpbmVyRW52aXJvbm1lbnRWYXJpYWJsZXMoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBzdGFnZTogc3RyaW5nLFxuICAgIHNlcnZpY2VOYW1lOiBzdHJpbmcsXG4gICAgdmVyc2lvbjogc3RyaW5nLFxuICAgIGFjY291bnROYW1lOiBzdHJpbmcsXG4gICAgdGVhbU5hbWU6IHN0cmluZyxcbiAgICB0ZWFtSWRlbnRpZmllcjogc3RyaW5nLFxuICAgIGFkZGl0aW9uYWxUYWdzOiB7IFtrOiBzdHJpbmddOiBzdHJpbmd9IHwgdW5kZWZpbmVkLFxuICApOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9IHtcbiAgICByZXR1cm4gZ2V0RmFyZ2F0ZUNvbnRhaW5lckVudmlyb25tZW50VmFyaWFibGVzKHtcbiAgICAgIHNjb3BlLFxuICAgICAgc3RhZ2UsXG4gICAgICBzZXJ2aWNlTmFtZSxcbiAgICAgIHZlcnNpb24sXG4gICAgICBhY2NvdW50TmFtZSxcbiAgICAgIHRlYW1OYW1lLFxuICAgICAgdGVhbUlkZW50aWZpZXIsXG4gICAgICBhZGRpdGlvbmFsVGFncyxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZ2V0RmFyZ2F0ZURvY2tlckxhYmVscyhzdGFnZTogc3RyaW5nLCBzZXJ2aWNlTmFtZTogc3RyaW5nLCB2ZXJzaW9uOiBzdHJpbmcpOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9IHtcbiAgICByZXR1cm4gZ2V0RmFyZ2F0ZURvY2tlckxhYmVscyh7IHN0YWdlLCBzZXJ2aWNlTmFtZSwgdmVyc2lvbiB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgYWRkRGF0YWRvZ1NpZGVjYXIoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICB0YXNrRGVmaW5pdGlvbjogZWNzLlRhc2tEZWZpbml0aW9uLFxuICAgIGFjY291bnROYW1lOiBzdHJpbmcsXG4gICAgdGVhbU5hbWU6IHN0cmluZyxcbiAgICB0ZWFtSWRlbnRpZmllcjogc3RyaW5nLFxuICAgIHN0YWdlOiBzdHJpbmcsXG4gICAgc2VydmljZU5hbWU6IHN0cmluZyxcbiAgICB2ZXJzaW9uOiBzdHJpbmcsXG4gICAgZGF0YWRvZ0FwaUtleVBhcmFtZXRlcjogc3NtLklTdHJpbmdQYXJhbWV0ZXIsXG4gICAgZGF0YWRvZ1NpdGU6IHN0cmluZyxcbiAgICBkYXRhZG9nTG9nZ2luZ01vZGU6IERhdGFEb2dMb2dnaW5nTW9kZSxcbiAgICBhcG1HZXRSZXNvdXJjZXNUb0lnbm9yZTogc3RyaW5nW10sXG4gICAgY3B1OiBudW1iZXIsXG4gICAgbWVtb3J5TGltaXRNaUI6IG51bWJlcixcbiAgICBlc3NlbnRpYWw6IGJvb2xlYW4sXG4gICAgY29udGFpbmVyVGFnOiBzdHJpbmcsXG4gICAgYWRkaXRpb25hbFRhZ3M6IHsgW2s6IHN0cmluZ106IHN0cmluZ30gfCB1bmRlZmluZWQsXG4gICk6IGVjcy5Db250YWluZXJEZWZpbml0aW9uIHtcblxuICAgIHJldHVybiBhZGREYXRhZG9nU2lkZWNhcih7XG4gICAgICBzY29wZSxcbiAgICAgIHRhc2tEZWZpbml0aW9uLFxuICAgICAgYWNjb3VudE5hbWUsXG4gICAgICB0ZWFtTmFtZSxcbiAgICAgIHRlYW1JZGVudGlmaWVyLFxuICAgICAgc3RhZ2UsXG4gICAgICBzZXJ2aWNlTmFtZSxcbiAgICAgIHZlcnNpb24sXG4gICAgICBkYXRhZG9nQXBpS2V5UGFyYW1ldGVyLFxuICAgICAgZGF0YWRvZ1NpdGUsXG4gICAgICBkYXRhZG9nTG9nZ2luZ01vZGUsXG4gICAgICBhcG1HZXRSZXNvdXJjZXNUb0lnbm9yZSxcbiAgICAgIGNwdSxcbiAgICAgIG1lbW9yeUxpbWl0TWlCLFxuICAgICAgZXNzZW50aWFsLFxuICAgICAgY29udGFpbmVyVGFnLFxuICAgICAgYWRkaXRpb25hbFRhZ3MsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGFkZEZpcmVMZW5zTG9nUm91dGVyKFxuICAgIHRhc2tEZWZpbml0aW9uOiBlY3MuVGFza0RlZmluaXRpb24sXG4gICAgY3B1OiBudW1iZXIsXG4gICAgbWVtb3J5TGltaXRNaUI6IG51bWJlcixcbiAgICBmaXJlbGVuc0NvbmZpZ0ZpbGVQYXRoOiBzdHJpbmcsXG4gICAgZmlyZWxlbnNDb25maWdCdWNrZXRBcm46IHN0cmluZyxcbiAgICBzZXJ2aWNlTmFtZTogc3RyaW5nLFxuICApOiBlY3MuQ29udGFpbmVyRGVmaW5pdGlvbiB7XG4gICAgcmV0dXJuIGFkZEZpcmVMZW5zTG9nUm91dGVyKHsgdGFza0RlZmluaXRpb24sIGNwdSwgbWVtb3J5TGltaXRNaUIsIGZpcmVsZW5zQ29uZmlnRmlsZVBhdGgsIGZpcmVsZW5zQ29uZmlnQnVja2V0QXJuLCBzZXJ2aWNlTmFtZSB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgc2V0dXBMb2dnaW5nKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgYWNjb3VudE5hbWU6IHN0cmluZyxcbiAgICB0ZWFtTmFtZTogc3RyaW5nLFxuICAgIHRlYW1JZGVudGlmaWVyOiBzdHJpbmcsXG4gICAgc3RhZ2U6IHN0cmluZyxcbiAgICBzZXJ2aWNlTmFtZTogc3RyaW5nLFxuICAgIHZlcnNpb246IHN0cmluZyxcbiAgICBkYXRhZG9nQXBpS2V5UGFyYW1ldGVyOiBzc20uSVN0cmluZ1BhcmFtZXRlcixcbiAgICBkYXRhZG9nTG9nZ2luZ01vZGU6IERhdGFEb2dMb2dnaW5nTW9kZSxcbiAgICBkYXRhZG9nU2l0ZTogc3RyaW5nLFxuICAgIGNvbnRhaW5lclR5cGU6ICdzZXJ2aWNlJyB8ICdkYXRhZG9nLXNpZGVjYXInLFxuICAgIGFkZGl0aW9uYWxUYWdzOiB7IFtrOiBzdHJpbmddOiBzdHJpbmd9IHwgdW5kZWZpbmVkLFxuICApOiBlY3MuTG9nRHJpdmVyIHtcblxuICAgIHJldHVybiBzZXR1cExvZ2dpbmcoe1xuICAgICAgc2NvcGUsXG4gICAgICBhY2NvdW50TmFtZSxcbiAgICAgIHRlYW1OYW1lLFxuICAgICAgdGVhbUlkZW50aWZpZXIsXG4gICAgICBzdGFnZSxcbiAgICAgIHNlcnZpY2VOYW1lLFxuICAgICAgdmVyc2lvbixcbiAgICAgIGRhdGFkb2dBcGlLZXlQYXJhbWV0ZXIsXG4gICAgICBkYXRhZG9nTG9nZ2luZ01vZGUsXG4gICAgICBkYXRhZG9nU2l0ZSxcbiAgICAgIGNvbnRhaW5lclR5cGUsXG4gICAgICBhZGRpdGlvbmFsVGFncyxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZW5zdXJlTG9nZ2luZ0FuZE1vbml0b3JpbmdBcmVSZWFkeUJlZm9yZVNlcnZpY2VTdGFydHMocmlvRmFyZ2F0ZVNlcnZpY2U6IFJpb0ZhcmdhdGVTZXJ2aWNlKSB7XG4gICAgZW5zdXJlTG9nZ2luZ0FuZE1vbml0b3JpbmdBcmVSZWFkeUJlZm9yZVNlcnZpY2VTdGFydHMocmlvRmFyZ2F0ZVNlcnZpY2UpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRGYXJnYXRlQ29udGFpbmVyRW52aXJvbm1lbnRWYXJpYWJsZXMocHJvcHM6IHtcbiAgc2NvcGU6IENvbnN0cnVjdDtcbiAgc3RhZ2U6IHN0cmluZztcbiAgc2VydmljZU5hbWU6IHN0cmluZztcbiAgdmVyc2lvbjogc3RyaW5nO1xuICBhY2NvdW50TmFtZTogc3RyaW5nO1xuICB0ZWFtTmFtZTogc3RyaW5nO1xuICB0ZWFtSWRlbnRpZmllcjogc3RyaW5nO1xuICBhZGRpdGlvbmFsVGFnczogeyBbazogc3RyaW5nXTogc3RyaW5nfSB8IHVuZGVmaW5lZDtcbn0pOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9IHtcblxuICBjb25zdCB7IGFjY291bnQ6IGFjY291bnRJZCwgcmVnaW9uIH0gPSBTdGFjay5vZihwcm9wcy5zY29wZSk7XG5cbiAgcmV0dXJuIHtcbiAgICAvLyB1bmlmaWVkIHRhZ2dpbmcsIHNlZSBodHRwczovL2RvY3MuZGF0YWRvZ2hxLmNvbS9nZXR0aW5nX3N0YXJ0ZWQvdGFnZ2luZy91bmlmaWVkX3NlcnZpY2VfdGFnZ2luZy8/dGFiPWVjc1xuICAgIEREX0VOVjogcHJvcHMuc3RhZ2UsXG4gICAgRERfU0VSVklDRTogcHJvcHMuc2VydmljZU5hbWUsXG4gICAgRERfVkVSU0lPTjogcHJvcHMudmVyc2lvbixcbiAgICAvLyBBUE0gYW5kIHRyYWNpbmcsIHNlZSBodHRwczovL2RvY3MuZGF0YWRvZ2hxLmNvbS90cmFjaW5nL3NldHVwX292ZXJ2aWV3L3NldHVwL2phdmEvP3RhYj1jb250YWluZXJzXG4gICAgRERfTE9HU19JTkpFQ1RJT046ICd0cnVlJyxcbiAgICBERF9TRVJWSUNFX01BUFBJTkc6IGdldEFwbVNlcnZpY2VNYXBwaW5nRW52aXJvbm1lbnRWYXJpYWJsZVZhbHVlKHByb3BzLnNlcnZpY2VOYW1lKSxcbiAgICBERF9UQUdTOiBnZXRUYWdzRW52aXJvbm1lbnRWYXJpYWJsZVZhbHVlKHtcbiAgICAgIC4uLnByb3BzLFxuICAgICAgY29udGFpbmVyVHlwZTogJ3NlcnZpY2UnLFxuICAgICAgYWNjb3VudElkLFxuICAgICAgcmVnaW9uLFxuICAgIH0pLFxuICAgIEREX1RSQUNFX1NBTVBMRV9SQVRFOiAnMS4wJywgLy8gc2VlIGh0dHBzOi8vZGR0cmFjZS5yZWFkdGhlZG9jcy5pby9lbi9zdGFibGUvY29uZmlndXJhdGlvbi5odG1sXG4gIH07XG59XG5cbi8vIHdlIGFkZCBhbGwgcG9zc2libGUgc2VydmljZSBtYXBwaW5ncyBoZXJlIGV2ZW4gaWYgbm90IHVzZWQgaW4gYSBwYXJ0aWN1bGFyIHNlcnZpY2UgdG8gZ2V0IGdsb2JhbGx5IHVuaXF1ZSBuYW1lc1xuZnVuY3Rpb24gZ2V0QXBtU2VydmljZU1hcHBpbmdFbnZpcm9ubWVudFZhcmlhYmxlVmFsdWUoc2VydmljZU5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG5cbiAgY29uc3Qgc2VydmljZU1hcHBpbmcgPSB7XG4gICAgJ2RhdGFiYXNlJzogYCR7c2VydmljZU5hbWV9LWF1cm9yYWAsXG4gICAgJ2phdmEtYXdzLXNkayc6IGAke3NlcnZpY2VOYW1lfS1hd3Mtc2RrYCxcbiAgICAna2Fma2EnOiBgJHtzZXJ2aWNlTmFtZX0ta2Fma2FgLFxuICAgICdteXNxbCc6IGAke3NlcnZpY2VOYW1lfS1hdXJvcmFgLFxuICAgICdyZWRpcyc6IGAke3NlcnZpY2VOYW1lfS1yZWRpc2AsXG4gIH07XG5cbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHNlcnZpY2VNYXBwaW5nKVxuICAgIC5tYXAoKFtrZXksIHZhbHVlXSkgPT4gYCR7a2V5fToke3ZhbHVlfWApXG4gICAgLmpvaW4oJywnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEZhcmdhdGVEb2NrZXJMYWJlbHMocHJvcHM6IHtzdGFnZTogc3RyaW5nOyBzZXJ2aWNlTmFtZTogc3RyaW5nOyB2ZXJzaW9uOiBzdHJpbmd9KTogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSB7XG4gIHJldHVybiB7XG4gICAgJ2NvbS5kYXRhZG9naHEudGFncy5lbnYnOiBwcm9wcy5zdGFnZSxcbiAgICAnY29tLmRhdGFkb2docS50YWdzLnNlcnZpY2UnOiBwcm9wcy5zZXJ2aWNlTmFtZSxcbiAgICAnY29tLmRhdGFkb2docS50YWdzLnZlcnNpb24nOiBwcm9wcy52ZXJzaW9uLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYWRkRGF0YWRvZ1NpZGVjYXIocHJvcHM6IHtcbiAgc2NvcGU6IENvbnN0cnVjdDtcbiAgdGFza0RlZmluaXRpb246IGVjcy5UYXNrRGVmaW5pdGlvbjtcbiAgYWNjb3VudE5hbWU6IHN0cmluZztcbiAgdGVhbU5hbWU6IHN0cmluZztcbiAgdGVhbUlkZW50aWZpZXI6IHN0cmluZztcbiAgc3RhZ2U6IHN0cmluZztcbiAgc2VydmljZU5hbWU6IHN0cmluZztcbiAgdmVyc2lvbjogc3RyaW5nO1xuICBkYXRhZG9nQXBpS2V5UGFyYW1ldGVyOiBzc20uSVN0cmluZ1BhcmFtZXRlcjtcbiAgZGF0YWRvZ1NpdGU6IHN0cmluZztcbiAgZGF0YWRvZ0xvZ2dpbmdNb2RlOiBEYXRhRG9nTG9nZ2luZ01vZGU7XG4gIGFwbUdldFJlc291cmNlc1RvSWdub3JlOiBzdHJpbmdbXTtcbiAgY3B1OiBudW1iZXI7XG4gIG1lbW9yeUxpbWl0TWlCOiBudW1iZXI7XG4gIGVzc2VudGlhbDogYm9vbGVhbjtcbiAgY29udGFpbmVyVGFnOiBzdHJpbmc7XG4gIGFkZGl0aW9uYWxUYWdzOiB7IFtrOiBzdHJpbmddOiBzdHJpbmd9IHwgdW5kZWZpbmVkO1xufSk6IGVjcy5Db250YWluZXJEZWZpbml0aW9uIHtcblxuICBjb25zdCB7IGFjY291bnQ6IGFjY291bnRJZCwgcmVnaW9uIH0gPSBTdGFjay5vZihwcm9wcy5zY29wZSk7XG4gIGNvbnN0IGRhdGFkb2dTaWRlY2FyID0gcHJvcHMudGFza0RlZmluaXRpb24uYWRkQ29udGFpbmVyKCdkYXRhZG9nLWFnZW50Jywge1xuICAgIGltYWdlOiBlY3MuQ29udGFpbmVySW1hZ2UuZnJvbVJlZ2lzdHJ5KGBwdWJsaWMuZWNyLmF3cy9kYXRhZG9nL2FnZW50OiR7cHJvcHMuY29udGFpbmVyVGFnfWApLFxuICAgIGxvZ2dpbmc6IHNldHVwTG9nZ2luZyh7IC4uLnByb3BzLCBjb250YWluZXJUeXBlOiAnZGF0YWRvZy1zaWRlY2FyJyB9KSxcbiAgICBjcHU6IHByb3BzLmNwdSxcbiAgICBtZW1vcnlMaW1pdE1pQjogcHJvcHMubWVtb3J5TGltaXRNaUIsXG4gICAgZW52aXJvbm1lbnQ6IHtcbiAgICAgIC8vIHVuaWZpZWQgdGFnZ2luZywgc2VlIGh0dHBzOi8vZG9jcy5kYXRhZG9naHEuY29tL2dldHRpbmdfc3RhcnRlZC90YWdnaW5nL3VuaWZpZWRfc2VydmljZV90YWdnaW5nLz90YWI9ZWNzXG4gICAgICBERF9FTlY6IHByb3BzLnN0YWdlLFxuICAgICAgRERfU0VSVklDRTogcHJvcHMuc2VydmljZU5hbWUsXG4gICAgICBERF9WRVJTSU9OOiBwcm9wcy52ZXJzaW9uLFxuICAgICAgLy8gQVBNIGFuZCB0cmFjaW5nIHNlZSBodHRwczovL2RvY3MuZGF0YWRvZ2hxLmNvbS9hZ2VudC9kb2NrZXIvYXBtLz90YWI9bGludXhcbiAgICAgIEREX0FQTV9FTkFCTEVEOiAndHJ1ZScsXG4gICAgICBERF9BUE1fSUdOT1JFX1JFU09VUkNFUzogcHJvcHMuYXBtR2V0UmVzb3VyY2VzVG9JZ25vcmVcbiAgICAgICAgLm1hcCgoYXBtR2V0UmVzb3VyY2VUb0lnbm9yZSkgPT4gYEdFVCAke2FwbUdldFJlc291cmNlVG9JZ25vcmV9YClcbiAgICAgICAgLmpvaW4oJywnKSxcbiAgICAgIC8vIGdlbmVyYWwgc2V0dGluZ3NcbiAgICAgIEREX1NJVEU6IHByb3BzLmRhdGFkb2dTaXRlLFxuICAgICAgRERfVEFHUzogZ2V0VGFnc0Vudmlyb25tZW50VmFyaWFibGVWYWx1ZSh7IC4uLnByb3BzLCBhY2NvdW50SWQsIHJlZ2lvbiwgY29udGFpbmVyVHlwZTogJ2RhdGFkb2ctc2lkZWNhcicgfSksXG4gICAgICBFQ1NfRkFSR0FURTogJ3RydWUnLFxuICAgICAgRERfQ0xPVURfUFJPVklERVJfTUVUQURBVEE6ICdhd3MnLFxuICAgICAgRERfUkVNT1RFX0NPTkZJR1VSQVRJT05fRU5BQkxFRDogJ2ZhbHNlJyxcbiAgICB9LFxuICAgIC8vIHNlZSBodHRwczovL2dpdGh1Yi5jb20vRGF0YURvZy9kYXRhZG9nLWFnZW50L2Jsb2IvbWFzdGVyL0RvY2tlcmZpbGVzL2FnZW50L2FtZDY0L0RvY2tlcmZpbGUjTDE3MS1MMTcyXG4gICAgaGVhbHRoQ2hlY2s6IHtcbiAgICAgIHN0YXJ0UGVyaW9kOiBEdXJhdGlvbi5taW51dGVzKDIpLFxuICAgICAgaW50ZXJ2YWw6IER1cmF0aW9uLnNlY29uZHMoMzApLFxuICAgICAgdGltZW91dDogRHVyYXRpb24uc2Vjb25kcyg1KSxcbiAgICAgIHJldHJpZXM6IDIsXG4gICAgICBjb21tYW5kOiBbJ0NNRC1TSEVMTCcsICcvcHJvYmUuc2gnXSxcbiAgICB9LFxuICAgIHNlY3JldHM6IHtcbiAgICAgIEREX0FQSV9LRVk6IGVjcy5TZWNyZXQuZnJvbVNzbVBhcmFtZXRlcihwcm9wcy5kYXRhZG9nQXBpS2V5UGFyYW1ldGVyKSxcbiAgICB9LFxuICAgIGVzc2VudGlhbDogcHJvcHMuZXNzZW50aWFsLFxuICB9KTtcblxuICBkYXRhZG9nU2lkZWNhci5hZGRQb3J0TWFwcGluZ3Moe1xuICAgIGNvbnRhaW5lclBvcnQ6IDgxMjUsXG4gICAgcHJvdG9jb2w6IGVjcy5Qcm90b2NvbC5VRFAsXG4gIH0pO1xuXG4gIGRhdGFkb2dTaWRlY2FyLmFkZFBvcnRNYXBwaW5ncyh7XG4gICAgY29udGFpbmVyUG9ydDogODEyNixcbiAgICBwcm90b2NvbDogZWNzLlByb3RvY29sLlRDUCxcbiAgfSk7XG5cbiAgcmV0dXJuIGRhdGFkb2dTaWRlY2FyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYWRkRmlyZWxlbnNDb25maWdVcGxvYWRGcm9tUzNQZXJtaXNzaW9ucyhwcm9wczoge1xuICB0YXNrRGVmaW5pdGlvbjogZWNzLlRhc2tEZWZpbml0aW9uO1xuICBmaXJlbGVuc0NvbmZpZ0J1Y2tldEFybjogc3RyaW5nO1xufSkge1xuICBwcm9wcy50YXNrRGVmaW5pdGlvbi5hZGRUb1Rhc2tSb2xlUG9saWN5KG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICByZXNvdXJjZXM6IFtwcm9wcy5maXJlbGVuc0NvbmZpZ0J1Y2tldEFybiwgYCR7cHJvcHMuZmlyZWxlbnNDb25maWdCdWNrZXRBcm59LypgXSxcbiAgICBhY3Rpb25zOiBbJ3MzOkdldConXSxcbiAgICBlZmZlY3Q6IGlhbS5FZmZlY3QuQUxMT1csXG4gIH0pKTtcbn1cblxuZnVuY3Rpb24gZ2V0VGFnc0Vudmlyb25tZW50VmFyaWFibGVWYWx1ZShwcm9wczoge1xuICBhY2NvdW50SWQ6IHN0cmluZztcbiAgYWNjb3VudE5hbWU6IHN0cmluZztcbiAgcmVnaW9uOiBzdHJpbmc7XG4gIHRlYW1OYW1lOiBzdHJpbmc7XG4gIHRlYW1JZGVudGlmaWVyOiBzdHJpbmc7XG4gIHN0YWdlOiBzdHJpbmc7XG4gIHNlcnZpY2VOYW1lOiBzdHJpbmc7XG4gIHZlcnNpb246IHN0cmluZztcbiAgY29udGFpbmVyVHlwZTogJ3NlcnZpY2UnIHwgJ2RhdGFkb2ctc2lkZWNhcicgfCAnZmx1ZW50LWJpdCc7XG4gIGFkZGl0aW9uYWxUYWdzOiB7IFtrOiBzdHJpbmddOiBzdHJpbmd9IHwgdW5kZWZpbmVkO1xufSk6IHN0cmluZyB7XG5cbiAgY29uc3Qgc2VwYXJhdG9yID0gZGV0ZXJtaW5lU2VwYXJhdG9yKHByb3BzLmNvbnRhaW5lclR5cGUpO1xuXG4gIGNvbnN0IHRhZ3MgPSB7XG4gICAgLy8gdW5pZmllZCB0YWdnaW5nXG4gICAgLy8gb3ZlcnJpZGRlbiBieSBkZWRpY2F0ZWQgc2V0dGluZ3MgKGVudmlyb25tZW50IHZhcmlhYmxlcy90YWdzKVxuICAgIC8vIGR1cGxpY2F0ZWQgaGVyZSB0byBlbnN1cmUgdGhleSBhcmUgdXNlZCAoYW5kIHNvbWV0aW1lcywgbm90IGFsbCB0aHJlZSB2YWx1ZXMgYXJlIHN1cHBvcnRlZClcbiAgICBlbnY6IHByb3BzLnN0YWdlLFxuICAgIHNlcnZpY2U6IHByb3BzLnNlcnZpY2VOYW1lLFxuICAgIHZlcnNpb246IHByb3BzLnZlcnNpb24sXG4gICAgLy8gYWNjb3VudC90ZWFtIHNwZWNpZmljIHBhcnRzXG4gICAgYWNjb3VudF9pZDogcHJvcHMuYWNjb3VudElkLFxuICAgIGFjY291bnRfbmFtZTogcHJvcHMuYWNjb3VudE5hbWUsXG4gICAgcmVnaW9uOiBwcm9wcy5yZWdpb24sXG4gICAgdGVhbTogcHJvcHMudGVhbU5hbWUsXG4gICAgdGVhbV9pZGVudGlmaWVyOiBwcm9wcy50ZWFtSWRlbnRpZmllcixcbiAgfTtcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHsgLi4udGFncywgLi4ucHJvcHMuYWRkaXRpb25hbFRhZ3MgfSlcbiAgICAubWFwKChba2V5LCB2YWx1ZV0pID0+IGAke2tleX06JHt2YWx1ZX1gKVxuICAgIC5qb2luKHNlcGFyYXRvcik7XG59XG5cbmZ1bmN0aW9uIGRldGVybWluZVNlcGFyYXRvcihjb250YWluZXJUeXBlOiAnc2VydmljZScgfCAnZGF0YWRvZy1zaWRlY2FyJyB8ICdmbHVlbnQtYml0Jykge1xuICBpZiAoY29udGFpbmVyVHlwZSA9PT0gJ2RhdGFkb2ctc2lkZWNhcicpIHtcbiAgICByZXR1cm4gJyAnO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiAnLCc7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFkZEZpcmVMZW5zTG9nUm91dGVyKHByb3BzOiB7XG4gIHRhc2tEZWZpbml0aW9uOiBlY3MuVGFza0RlZmluaXRpb247XG4gIGNwdTogbnVtYmVyO1xuICBtZW1vcnlMaW1pdE1pQjogbnVtYmVyO1xuICBmaXJlbGVuc0NvbmZpZ0J1Y2tldEFybjogc3RyaW5nO1xuICBmaXJlbGVuc0NvbmZpZ0ZpbGVQYXRoOiBzdHJpbmc7XG4gIHNlcnZpY2VOYW1lOiBzdHJpbmc7XG59KTogZWNzLkNvbnRhaW5lckRlZmluaXRpb24ge1xuICBjb25zdCBmbHVlbnRCaXRTM0NvbmZpZ0ZpbGUgPSBwcm9wcy5maXJlbGVuc0NvbmZpZ0J1Y2tldEFybiArIHByb3BzLmZpcmVsZW5zQ29uZmlnRmlsZVBhdGg7XG4gIHJldHVybiBwcm9wcy50YXNrRGVmaW5pdGlvbi5hZGRGaXJlbGVuc0xvZ1JvdXRlcignZmlyZWxlbnMtbG9nLXJvdXRlcicsIHtcbiAgICBpbWFnZTogZWNzLkNvbnRhaW5lckltYWdlLmZyb21SZWdpc3RyeSgncHVibGljLmVjci5hd3MvYXdzLW9ic2VydmFiaWxpdHkvYXdzLWZvci1mbHVlbnQtYml0OmluaXQtbGF0ZXN0JyksXG4gICAgZmlyZWxlbnNDb25maWc6IHtcbiAgICAgIHR5cGU6IGVjcy5GaXJlbGVuc0xvZ1JvdXRlclR5cGUuRkxVRU5UQklULFxuICAgICAgb3B0aW9uczoge1xuICAgICAgICBlbmFibGVFQ1NMb2dNZXRhZGF0YTogdHJ1ZSxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBjcHU6IHByb3BzLmNwdSxcbiAgICBtZW1vcnlMaW1pdE1pQjogcHJvcHMubWVtb3J5TGltaXRNaUIsXG4gICAgbG9nZ2luZzogZWNzLkxvZ0RyaXZlcnMuYXdzTG9ncyh7XG4gICAgICBsb2dHcm91cDogbmV3IGxvZ3MuTG9nR3JvdXAocHJvcHMudGFza0RlZmluaXRpb24sICdGaXJlbGVuc0xvZ1JvdXRlckxvZ0dyb3VwJywge1xuICAgICAgICBsb2dHcm91cE5hbWU6IGAke3Byb3BzLnNlcnZpY2VOYW1lfS1maXJlbGVucy1sb2ctcm91dGVyYCxcbiAgICAgIH0pLFxuICAgICAgc3RyZWFtUHJlZml4OiAnZmlyZWxlbnMtbG9nLXJvdXRlcicsXG4gICAgICBtb2RlOiBBd3NMb2dEcml2ZXJNb2RlLk5PTl9CTE9DS0lORyxcbiAgICB9KSxcbiAgICBoZWFsdGhDaGVjazoge1xuICAgICAgY29tbWFuZDogWydDTUQtU0hFTEwnLCAnY3VybCAtLWZhaWwgLS1zaWxlbnQgaHR0cDovLzEyNy4wLjAuMToyMDIwL2FwaS92MS9oZWFsdGggfHwgZXhpdCAxJ10sXG4gICAgfSxcbiAgICBlbnZpcm9ubWVudDoge1xuICAgICAgYXdzX2ZsdWVudF9iaXRfaW5pdF9zM18xOiBmbHVlbnRCaXRTM0NvbmZpZ0ZpbGUsXG4gICAgfSxcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXR1cExvZ2dpbmcocHJvcHM6IHtcbiAgc2NvcGU6IENvbnN0cnVjdDtcbiAgYWNjb3VudE5hbWU6IHN0cmluZztcbiAgdGVhbU5hbWU6IHN0cmluZztcbiAgdGVhbUlkZW50aWZpZXI6IHN0cmluZztcbiAgc3RhZ2U6IHN0cmluZztcbiAgc2VydmljZU5hbWU6IHN0cmluZztcbiAgdmVyc2lvbjogc3RyaW5nO1xuICBkYXRhZG9nQXBpS2V5UGFyYW1ldGVyOiBzc20uSVN0cmluZ1BhcmFtZXRlcjtcbiAgZGF0YWRvZ0xvZ2dpbmdNb2RlOiBEYXRhRG9nTG9nZ2luZ01vZGU7XG4gIGRhdGFkb2dTaXRlOiBzdHJpbmc7XG4gIGNvbnRhaW5lclR5cGU6ICdzZXJ2aWNlJyB8ICdkYXRhZG9nLXNpZGVjYXInO1xuICBhZGRpdGlvbmFsVGFnczogeyBbazogc3RyaW5nXTogc3RyaW5nfSB8IHVuZGVmaW5lZDtcbn0pOiBlY3MuTG9nRHJpdmVyIHtcblxuICBsZXQgbG9nR3JvdXBOYW1lOiBzdHJpbmc7XG4gIGxldCBsb2dHcm91cElkOiBzdHJpbmc7XG4gIGxldCBjb250YWluZXJUeXBlQ2FtZWxDYXNlO1xuXG4gIHN3aXRjaCAocHJvcHMuY29udGFpbmVyVHlwZSkge1xuXG4gICAgY2FzZSAnc2VydmljZSc6XG4gICAgICBsb2dHcm91cElkID0gJ0xvZ0dyb3VwRm9yU2VydmljZSc7XG4gICAgICBsb2dHcm91cE5hbWUgPSBwcm9wcy5zZXJ2aWNlTmFtZTtcbiAgICAgIGNvbnRhaW5lclR5cGVDYW1lbENhc2UgPSAnU2VydmljZSc7XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgJ2RhdGFkb2ctc2lkZWNhcic6XG4gICAgICBsb2dHcm91cElkID0gJ0xvZ0dyb3VwRm9yRGF0YWRvZ1NpZGVjYXInO1xuICAgICAgbG9nR3JvdXBOYW1lID0gYCR7cHJvcHMuc2VydmljZU5hbWV9LSR7cHJvcHMuY29udGFpbmVyVHlwZX1gO1xuICAgICAgY29udGFpbmVyVHlwZUNhbWVsQ2FzZSA9ICdEYXRhZG9nU2lkZWNhcic7XG4gICAgICBicmVhaztcbiAgfVxuXG4gIGNvbnN0IHsgYWNjb3VudDogYWNjb3VudElkLCByZWdpb24gfSA9IFN0YWNrLm9mKHByb3BzLnNjb3BlKTtcblxuICBzd2l0Y2ggKHByb3BzLmRhdGFkb2dMb2dnaW5nTW9kZSkge1xuXG4gICAgY2FzZSBEYXRhRG9nTG9nZ2luZ01vZGUuQVdTX0ZJUkVfTEVOUzpcbiAgICAgIC8vIFRPRE8gY2FuIHdlIHVzZSBgc2VjcmV0T3B0aW9uc2AgaGVyZSBhcyB3ZWxsLCBlLmcuIGFzIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3Mtc2FtcGxlcy9hbWF6b24tZWNzLWZpcmVsZW5zLWV4YW1wbGVzL2Jsb2IvbWFpbmxpbmUvZXhhbXBsZXMvZmx1ZW50LWJpdC9kYXRhZG9nL3Rhc2stZGVmaW5pdGlvbi5qc29uI0wzMy1MMzZcbiAgICAgIC8vIFByb2JhYmx5IG5vdCwgc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9pc3N1ZXMvODE3NFxuICAgICAgcmV0dXJuIGVjcy5Mb2dEcml2ZXJzLmZpcmVsZW5zKHtcbiAgICAgICAgLy8gc2VlIGh0dHBzOi8vZG9jcy5kYXRhZG9naHEuY29tL2ludGVncmF0aW9ucy9mbHVlbnRiaXQvI2NvbmZpZ3VyYXRpb24tcGFyYW1ldGVyc1xuICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgTmFtZTogJ2RhdGFkb2cnLFxuICAgICAgICAgIE1hdGNoOiAnKicsXG4gICAgICAgICAgSG9zdDogYGh0dHAtaW50YWtlLmxvZ3MuJHtwcm9wcy5kYXRhZG9nU2l0ZX1gLFxuICAgICAgICAgIFRMUzogJ29uJyxcbiAgICAgICAgICBhcGlrZXk6IHByb3BzLmRhdGFkb2dBcGlLZXlQYXJhbWV0ZXIuc3RyaW5nVmFsdWUsXG4gICAgICAgICAgY29tcHJlc3M6ICdnemlwJyxcbiAgICAgICAgICBkZF9zZXJ2aWNlOiBsb2dHcm91cE5hbWUsXG4gICAgICAgICAgZGRfc291cmNlOiAncmlvLWZhcmdhdGUnLFxuICAgICAgICAgIGRkX21lc3NhZ2Vfa2V5OiAnbG9nJyxcbiAgICAgICAgICBkZF90YWdzOiBnZXRUYWdzRW52aXJvbm1lbnRWYXJpYWJsZVZhbHVlKHsgLi4ucHJvcHMsIGFjY291bnRJZCwgcmVnaW9uLCBjb250YWluZXJUeXBlOiAnZmx1ZW50LWJpdCcgfSksXG4gICAgICAgICAgcHJvdmlkZXI6ICdlY3MnLFxuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICBjYXNlIERhdGFEb2dMb2dnaW5nTW9kZS5GT1JXQVJERVJfTEFNQkRBOlxuICAgIGNhc2UgRGF0YURvZ0xvZ2dpbmdNb2RlLkRBVEFET0dfRk9SV0FSREVSX0xBTUJEQTpcbiAgICAgIGNvbnN0IGxvZ0dyb3VwRm9yRm9yd2FyZGluZ0xhbWJkYSA9IG5ldyBsb2dzLkxvZ0dyb3VwKHByb3BzLnNjb3BlLCBsb2dHcm91cElkLCB7XG4gICAgICAgIGxvZ0dyb3VwTmFtZSxcbiAgICAgICAgcmV0ZW50aW9uOiBsb2dzLlJldGVudGlvbkRheXMuT05FX1dFRUssXG4gICAgICB9KTtcbiAgICAgIFRhZ3Mub2YobG9nR3JvdXBGb3JGb3J3YXJkaW5nTGFtYmRhKS5hZGQoJ3NlcnZpY2UnLCBwcm9wcy5zZXJ2aWNlTmFtZSk7XG4gICAgICBjb25zdCBsb2dGb3J3YXJkZXJMYW1iZGFBcm5PdXRwdXROYW1lID0gcHJvcHMuZGF0YWRvZ0xvZ2dpbmdNb2RlID09PSBEYXRhRG9nTG9nZ2luZ01vZGUuREFUQURPR19GT1JXQVJERVJfTEFNQkRBID8gJ2RhdGFkb2ctZm9yd2FyZGVyLUZvcndhcmRlckFybicgOiAnY3VzdG9tLXJlc291cmNlLWRhdGFkb2ctbG9nZm9yd2FyZGVyLWZ1bmN0aW9uLWFybic7XG4gICAgICBjb25zdCBsb2dGb3J3YXJkZXJMYW1iZGFBcm4gPSBGbi5pbXBvcnRWYWx1ZShsb2dGb3J3YXJkZXJMYW1iZGFBcm5PdXRwdXROYW1lKTtcbiAgICAgIGNvbnN0IGNmblBlcm1pc3Npb24gPSBuZXcgbGFtYmRhLkNmblBlcm1pc3Npb24ocHJvcHMuc2NvcGUsIGBMb2dGb3J3YXJkZXJQZXJtaXNzaW9uJHtjb250YWluZXJUeXBlQ2FtZWxDYXNlfWAsIHtcbiAgICAgICAgYWN0aW9uOiAnbGFtYmRhOkludm9rZUZ1bmN0aW9uJyxcbiAgICAgICAgZnVuY3Rpb25OYW1lOiBsb2dGb3J3YXJkZXJMYW1iZGFBcm4sXG4gICAgICAgIHByaW5jaXBhbDogYGxvZ3MuJHtyZWdpb259LmFtYXpvbmF3cy5jb21gLFxuICAgICAgICBzb3VyY2VBcm46IGxvZ0dyb3VwRm9yRm9yd2FyZGluZ0xhbWJkYS5sb2dHcm91cEFybixcbiAgICAgIH0pO1xuICAgICAgY29uc3QgY2ZuU3Vic2NyaXB0aW9uRmlsdGVyID0gbmV3IGxvZ3MuQ2ZuU3Vic2NyaXB0aW9uRmlsdGVyKFxuICAgICAgICBwcm9wcy5zY29wZSxcbiAgICAgICAgYExvZ0ZvcndhcmRlclN1YnNjcmlwdGlvbkZpbHRlciR7Y29udGFpbmVyVHlwZUNhbWVsQ2FzZX1gLFxuICAgICAgICB7XG4gICAgICAgICAgZGVzdGluYXRpb25Bcm46IGxvZ0ZvcndhcmRlckxhbWJkYUFybixcbiAgICAgICAgICBmaWx0ZXJQYXR0ZXJuOiAnJyxcbiAgICAgICAgICBsb2dHcm91cE5hbWU6IGxvZ0dyb3VwRm9yRm9yd2FyZGluZ0xhbWJkYS5sb2dHcm91cE5hbWUsXG4gICAgICAgIH0sXG4gICAgICApO1xuICAgICAgY2ZuU3Vic2NyaXB0aW9uRmlsdGVyLmFkZERlcGVuZGVuY3koY2ZuUGVybWlzc2lvbik7XG4gICAgICByZXR1cm4gZWNzLkxvZ0RyaXZlcnMuYXdzTG9ncyh7XG4gICAgICAgIHN0cmVhbVByZWZpeDogcHJvcHMuY29udGFpbmVyVHlwZSxcbiAgICAgICAgbG9nR3JvdXA6IGxvZ0dyb3VwRm9yRm9yd2FyZGluZ0xhbWJkYSxcbiAgICAgICAgbW9kZTogZWNzLkF3c0xvZ0RyaXZlck1vZGUuTk9OX0JMT0NLSU5HLFxuICAgICAgICBtYXhCdWZmZXJTaXplOiBTaXplLm1lYmlieXRlcygyNSksXG4gICAgICB9KTtcblxuICAgIGNhc2UgRGF0YURvZ0xvZ2dpbmdNb2RlLk5PTkU6XG4gICAgICBjb25zdCBsb2dHcm91cEluQ2xvdWR3YXRjaE9ubHkgPSBuZXcgbG9ncy5Mb2dHcm91cChwcm9wcy5zY29wZSwgbG9nR3JvdXBJZCwge1xuICAgICAgICByZXRlbnRpb246IGxvZ3MuUmV0ZW50aW9uRGF5cy5PTkVfV0VFSyxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGVjcy5Mb2dEcml2ZXJzLmF3c0xvZ3Moe1xuICAgICAgICBzdHJlYW1QcmVmaXg6IHByb3BzLmNvbnRhaW5lclR5cGUsXG4gICAgICAgIGxvZ0dyb3VwOiBsb2dHcm91cEluQ2xvdWR3YXRjaE9ubHksXG4gICAgICAgIG1vZGU6IGVjcy5Bd3NMb2dEcml2ZXJNb2RlLk5PTl9CTE9DS0lORyxcbiAgICAgICAgbWF4QnVmZmVyU2l6ZTogU2l6ZS5tZWJpYnl0ZXMoMjUpLFxuICAgICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZUxvZ2dpbmdBbmRNb25pdG9yaW5nQXJlUmVhZHlCZWZvcmVTZXJ2aWNlU3RhcnRzKHJpb0ZhcmdhdGVTZXJ2aWNlOiBSaW9GYXJnYXRlU2VydmljZSB8IFJpb0ZhcmdhdGVTZXJ2aWNlQmx1ZUdyZWVuQWxwaGEpOiB2b2lkIHtcblxuICByaW9GYXJnYXRlU2VydmljZS5zZXJ2aWNlQ29udGFpbmVyRGVmaW5pdGlvbi5hZGRDb250YWluZXJEZXBlbmRlbmNpZXMoe1xuICAgIGNvbnRhaW5lcjogcmlvRmFyZ2F0ZVNlcnZpY2UuZGF0YWRvZ1NpZGVDYXJDb250YWluZXJEZWZpbml0aW9uLFxuICAgIGNvbmRpdGlvbjogZWNzLkNvbnRhaW5lckRlcGVuZGVuY3lDb25kaXRpb24uSEVBTFRIWSxcbiAgfSk7XG5cbiAgaWYgKHJpb0ZhcmdhdGVTZXJ2aWNlLmxvZ1JvdXRlckNvbnRhaW5lckRlZmluaXRpb24pIHtcbiAgICByaW9GYXJnYXRlU2VydmljZS5zZXJ2aWNlQ29udGFpbmVyRGVmaW5pdGlvbi5hZGRDb250YWluZXJEZXBlbmRlbmNpZXMoe1xuICAgICAgY29udGFpbmVyOiByaW9GYXJnYXRlU2VydmljZS5sb2dSb3V0ZXJDb250YWluZXJEZWZpbml0aW9uLFxuICAgICAgY29uZGl0aW9uOiBlY3MuQ29udGFpbmVyRGVwZW5kZW5jeUNvbmRpdGlvbi5TVEFSVCxcbiAgICB9KTtcblxuICAgIGlmIChyaW9GYXJnYXRlU2VydmljZS5kYXRhZG9nU2lkZUNhckNvbnRhaW5lckRlZmluaXRpb24ubG9nRHJpdmVyQ29uZmlnPy5sb2dEcml2ZXIgPT09ICdhd3NmaXJlbGVucycpIHtcbiAgICAgIHJpb0ZhcmdhdGVTZXJ2aWNlLmRhdGFkb2dTaWRlQ2FyQ29udGFpbmVyRGVmaW5pdGlvbi5hZGRDb250YWluZXJEZXBlbmRlbmNpZXMoe1xuICAgICAgICBjb250YWluZXI6IHJpb0ZhcmdhdGVTZXJ2aWNlLmxvZ1JvdXRlckNvbnRhaW5lckRlZmluaXRpb24sXG4gICAgICAgIGNvbmRpdGlvbjogZWNzLkNvbnRhaW5lckRlcGVuZGVuY3lDb25kaXRpb24uU1RBUlQsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
324
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWRvZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9mYXJnYXRlL2RhdGFkb2cudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBa0lBLDBGQTZCQztBQWtCRCx3REFNQztBQUVELDhDQW9FQztBQUVELDRGQVNDO0FBNENELG9EQWlDQztBQUVELG9DQXFHQztBQUVELHNIQW9CQztBQWxkRCw2Q0FBOEQ7QUFDOUQsMkNBQTJDO0FBQzNDLGlEQUF1RDtBQUN2RCwyQ0FBMkM7QUFDM0MsaURBQWlEO0FBQ2pELDZDQUE2QztBQUc3QywrREFBOEU7QUFHOUU7O0dBRUc7QUFDSCxNQUFhLE9BQU87SUFFWCxNQUFNLENBQUMsdUNBQXVDLENBQ25ELEtBQWdCLEVBQ2hCLEtBQWEsRUFDYixXQUFtQixFQUNuQixPQUFlLEVBQ2YsV0FBbUIsRUFDbkIsUUFBZ0IsRUFDaEIsY0FBc0IsRUFDdEIsY0FBa0Q7UUFFbEQsT0FBTyx1Q0FBdUMsQ0FBQztZQUM3QyxLQUFLO1lBQ0wsS0FBSztZQUNMLFdBQVc7WUFDWCxPQUFPO1lBQ1AsV0FBVztZQUNYLFFBQVE7WUFDUixjQUFjO1lBQ2QsY0FBYztTQUNmLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxNQUFNLENBQUMsc0JBQXNCLENBQUMsS0FBYSxFQUFFLFdBQW1CLEVBQUUsT0FBZTtRQUN0RixPQUFPLHNCQUFzQixDQUFDLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFTSxNQUFNLENBQUMsaUJBQWlCLENBQzdCLEtBQWdCLEVBQ2hCLGNBQWtDLEVBQ2xDLFdBQW1CLEVBQ25CLFFBQWdCLEVBQ2hCLGNBQXNCLEVBQ3RCLEtBQWEsRUFDYixXQUFtQixFQUNuQixPQUFlLEVBQ2Ysc0JBQTRDLEVBQzVDLFdBQW1CLEVBQ25CLGtCQUFzQyxFQUN0Qyx1QkFBaUMsRUFDakMsR0FBVyxFQUNYLGNBQXNCLEVBQ3RCLFNBQWtCLEVBQ2xC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QyxLQUFLO1NBQ2xELENBQUMsQ0FBQztRQUVILElBQUksaUJBQWlCLENBQUMsaUNBQWlDLENBQUMsZUFBZSxFQUFFLFNBQVMsS0FBSyxhQUFhLEVBQUUsQ0FBQztZQUNyRyxpQkFBaUIsQ0FBQyxpQ0FBaUMsQ0FBQyx3QkFBd0IsQ0FBQztnQkFDM0UsU0FBUyxFQUFFLGlCQUFpQixDQUFDLDRCQUE0QjtnQkFDekQsU0FBUyxFQUFFLEdBQUcsQ0FBQyw0QkFBNEIsQ0FBQyxLQUFLO2FBQ2xELENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IER1cmF0aW9uLCBGbiwgU2l6ZSwgU3RhY2ssIFRhZ3MgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgKiBhcyBlY3MgZnJvbSAnYXdzLWNkay1saWIvYXdzLWVjcyc7XG5pbXBvcnQgeyBBd3NMb2dEcml2ZXJNb2RlIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWVjcyc7XG5pbXBvcnQgKiBhcyBpYW0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG5pbXBvcnQgKiBhcyBsYW1iZGEgZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYSc7XG5pbXBvcnQgKiBhcyBsb2dzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1sb2dzJztcbmltcG9ydCAqIGFzIHNzbSBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc3NtJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgRGF0YURvZ0xvZ2dpbmdNb2RlLCBSaW9GYXJnYXRlU2VydmljZSB9IGZyb20gJy4vcmlvLWZhcmdhdGUtc2VydmljZSc7XG5pbXBvcnQgeyBSaW9GYXJnYXRlU2VydmljZUJsdWVHcmVlbkFscGhhIH0gZnJvbSAnLi9yaW8tZmFyZ2F0ZS1zZXJ2aWNlLWJsdWUtZ3JlZW4tYWxwaGEnO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkIE1vdmVkIG91dCBzdGF0aWMgbWV0aG9kcyBhbmQgaW1wb3JvdmVkIHNpZ25hdHVyZS4gVXNlIG5hbWVkIGltcG9ydCBpbnN0ZWFkLlxuICovXG5leHBvcnQgY2xhc3MgRGF0YURvZyB7XG5cbiAgcHVibGljIHN0YXRpYyBnZXRGYXJnYXRlQ29udGFpbmVyRW52aXJvbm1lbnRWYXJpYWJsZXMoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBzdGFnZTogc3RyaW5nLFxuICAgIHNlcnZpY2VOYW1lOiBzdHJpbmcsXG4gICAgdmVyc2lvbjogc3RyaW5nLFxuICAgIGFjY291bnROYW1lOiBzdHJpbmcsXG4gICAgdGVhbU5hbWU6IHN0cmluZyxcbiAgICB0ZWFtSWRlbnRpZmllcjogc3RyaW5nLFxuICAgIGFkZGl0aW9uYWxUYWdzOiB7IFtrOiBzdHJpbmddOiBzdHJpbmd9IHwgdW5kZWZpbmVkLFxuICApOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9IHtcbiAgICByZXR1cm4gZ2V0RmFyZ2F0ZUNvbnRhaW5lckVudmlyb25tZW50VmFyaWFibGVzKHtcbiAgICAgIHNjb3BlLFxuICAgICAgc3RhZ2UsXG4gICAgICBzZXJ2aWNlTmFtZSxcbiAgICAgIHZlcnNpb24sXG4gICAgICBhY2NvdW50TmFtZSxcbiAgICAgIHRlYW1OYW1lLFxuICAgICAgdGVhbUlkZW50aWZpZXIsXG4gICAgICBhZGRpdGlvbmFsVGFncyxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZ2V0RmFyZ2F0ZURvY2tlckxhYmVscyhzdGFnZTogc3RyaW5nLCBzZXJ2aWNlTmFtZTogc3RyaW5nLCB2ZXJzaW9uOiBzdHJpbmcpOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9IHtcbiAgICByZXR1cm4gZ2V0RmFyZ2F0ZURvY2tlckxhYmVscyh7IHN0YWdlLCBzZXJ2aWNlTmFtZSwgdmVyc2lvbiB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgYWRkRGF0YWRvZ1NpZGVjYXIoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICB0YXNrRGVmaW5pdGlvbjogZWNzLlRhc2tEZWZpbml0aW9uLFxuICAgIGFjY291bnROYW1lOiBzdHJpbmcsXG4gICAgdGVhbU5hbWU6IHN0cmluZyxcbiAgICB0ZWFtSWRlbnRpZmllcjogc3RyaW5nLFxuICAgIHN0YWdlOiBzdHJpbmcsXG4gICAgc2VydmljZU5hbWU6IHN0cmluZyxcbiAgICB2ZXJzaW9uOiBzdHJpbmcsXG4gICAgZGF0YWRvZ0FwaUtleVBhcmFtZXRlcjogc3NtLklTdHJpbmdQYXJhbWV0ZXIsXG4gICAgZGF0YWRvZ1NpdGU6IHN0cmluZyxcbiAgICBkYXRhZG9nTG9nZ2luZ01vZGU6IERhdGFEb2dMb2dnaW5nTW9kZSxcbiAgICBhcG1HZXRSZXNvdXJjZXNUb0lnbm9yZTogc3RyaW5nW10sXG4gICAgY3B1OiBudW1iZXIsXG4gICAgbWVtb3J5TGltaXRNaUI6IG51bWJlcixcbiAgICBlc3NlbnRpYWw6IGJvb2xlYW4sXG4gICAgY29udGFpbmVyVGFnOiBzdHJpbmcsXG4gICAgYWRkaXRpb25hbFRhZ3M6IHsgW2s6IHN0cmluZ106IHN0cmluZ30gfCB1bmRlZmluZWQsXG4gICk6IGVjcy5Db250YWluZXJEZWZpbml0aW9uIHtcblxuICAgIHJldHVybiBhZGREYXRhZG9nU2lkZWNhcih7XG4gICAgICBzY29wZSxcbiAgICAgIHRhc2tEZWZpbml0aW9uLFxuICAgICAgYWNjb3VudE5hbWUsXG4gICAgICB0ZWFtTmFtZSxcbiAgICAgIHRlYW1JZGVudGlmaWVyLFxuICAgICAgc3RhZ2UsXG4gICAgICBzZXJ2aWNlTmFtZSxcbiAgICAgIHZlcnNpb24sXG4gICAgICBkYXRhZG9nQXBpS2V5UGFyYW1ldGVyLFxuICAgICAgZGF0YWRvZ1NpdGUsXG4gICAgICBkYXRhZG9nTG9nZ2luZ01vZGUsXG4gICAgICBhcG1HZXRSZXNvdXJjZXNUb0lnbm9yZSxcbiAgICAgIGNwdSxcbiAgICAgIG1lbW9yeUxpbWl0TWlCLFxuICAgICAgZXNzZW50aWFsLFxuICAgICAgY29udGFpbmVyVGFnLFxuICAgICAgYWRkaXRpb25hbFRhZ3MsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGFkZEZpcmVMZW5zTG9nUm91dGVyKFxuICAgIHRhc2tEZWZpbml0aW9uOiBlY3MuVGFza0RlZmluaXRpb24sXG4gICAgY3B1OiBudW1iZXIsXG4gICAgbWVtb3J5TGltaXRNaUI6IG51bWJlcixcbiAgICBmaXJlbGVuc0NvbmZpZ0ZpbGVQYXRoOiBzdHJpbmcsXG4gICAgZmlyZWxlbnNDb25maWdCdWNrZXRBcm46IHN0cmluZyxcbiAgICBzZXJ2aWNlTmFtZTogc3RyaW5nLFxuICApOiBlY3MuQ29udGFpbmVyRGVmaW5pdGlvbiB7XG4gICAgcmV0dXJuIGFkZEZpcmVMZW5zTG9nUm91dGVyKHsgdGFza0RlZmluaXRpb24sIGNwdSwgbWVtb3J5TGltaXRNaUIsIGZpcmVsZW5zQ29uZmlnRmlsZVBhdGgsIGZpcmVsZW5zQ29uZmlnQnVja2V0QXJuLCBzZXJ2aWNlTmFtZSB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgc2V0dXBMb2dnaW5nKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgYWNjb3VudE5hbWU6IHN0cmluZyxcbiAgICB0ZWFtTmFtZTogc3RyaW5nLFxuICAgIHRlYW1JZGVudGlmaWVyOiBzdHJpbmcsXG4gICAgc3RhZ2U6IHN0cmluZyxcbiAgICBzZXJ2aWNlTmFtZTogc3RyaW5nLFxuICAgIHZlcnNpb246IHN0cmluZyxcbiAgICBkYXRhZG9nQXBpS2V5UGFyYW1ldGVyOiBzc20uSVN0cmluZ1BhcmFtZXRlcixcbiAgICBkYXRhZG9nTG9nZ2luZ01vZGU6IERhdGFEb2dMb2dnaW5nTW9kZSxcbiAgICBkYXRhZG9nU2l0ZTogc3RyaW5nLFxuICAgIGNvbnRhaW5lclR5cGU6ICdzZXJ2aWNlJyB8ICdkYXRhZG9nLXNpZGVjYXInLFxuICAgIGFkZGl0aW9uYWxUYWdzOiB7IFtrOiBzdHJpbmddOiBzdHJpbmd9IHwgdW5kZWZpbmVkLFxuICApOiBlY3MuTG9nRHJpdmVyIHtcblxuICAgIHJldHVybiBzZXR1cExvZ2dpbmcoe1xuICAgICAgc2NvcGUsXG4gICAgICBhY2NvdW50TmFtZSxcbiAgICAgIHRlYW1OYW1lLFxuICAgICAgdGVhbUlkZW50aWZpZXIsXG4gICAgICBzdGFnZSxcbiAgICAgIHNlcnZpY2VOYW1lLFxuICAgICAgdmVyc2lvbixcbiAgICAgIGRhdGFkb2dBcGlLZXlQYXJhbWV0ZXIsXG4gICAgICBkYXRhZG9nTG9nZ2luZ01vZGUsXG4gICAgICBkYXRhZG9nU2l0ZSxcbiAgICAgIGNvbnRhaW5lclR5cGUsXG4gICAgICBhZGRpdGlvbmFsVGFncyxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZW5zdXJlTG9nZ2luZ0FuZE1vbml0b3JpbmdBcmVSZWFkeUJlZm9yZVNlcnZpY2VTdGFydHMocmlvRmFyZ2F0ZVNlcnZpY2U6IFJpb0ZhcmdhdGVTZXJ2aWNlKSB7XG4gICAgZW5zdXJlTG9nZ2luZ0FuZE1vbml0b3JpbmdBcmVSZWFkeUJlZm9yZVNlcnZpY2VTdGFydHMocmlvRmFyZ2F0ZVNlcnZpY2UpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRGYXJnYXRlQ29udGFpbmVyRW52aXJvbm1lbnRWYXJpYWJsZXMocHJvcHM6IHtcbiAgc2NvcGU6IENvbnN0cnVjdDtcbiAgc3RhZ2U6IHN0cmluZztcbiAgc2VydmljZU5hbWU6IHN0cmluZztcbiAgdmVyc2lvbjogc3RyaW5nO1xuICBhY2NvdW50TmFtZTogc3RyaW5nO1xuICB0ZWFtTmFtZTogc3RyaW5nO1xuICB0ZWFtSWRlbnRpZmllcjogc3RyaW5nO1xuICBhZGRpdGlvbmFsVGFnczogeyBbazogc3RyaW5nXTogc3RyaW5nfSB8IHVuZGVmaW5lZDtcbn0pOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9IHtcblxuICBjb25zdCB7IGFjY291bnQ6IGFjY291bnRJZCwgcmVnaW9uIH0gPSBTdGFjay5vZihwcm9wcy5zY29wZSk7XG5cbiAgcmV0dXJuIHtcbiAgICAvLyB1bmlmaWVkIHRhZ2dpbmcsIHNlZSBodHRwczovL2RvY3MuZGF0YWRvZ2hxLmNvbS9nZXR0aW5nX3N0YXJ0ZWQvdGFnZ2luZy91bmlmaWVkX3NlcnZpY2VfdGFnZ2luZy8/dGFiPWVjc1xuICAgIEREX0VOVjogcHJvcHMuc3RhZ2UsXG4gICAgRERfU0VSVklDRTogcHJvcHMuc2VydmljZU5hbWUsXG4gICAgRERfVkVSU0lPTjogcHJvcHMudmVyc2lvbixcbiAgICAvLyBBUE0gYW5kIHRyYWNpbmcsIHNlZSBodHRwczovL2RvY3MuZGF0YWRvZ2hxLmNvbS90cmFjaW5nL3NldHVwX292ZXJ2aWV3L3NldHVwL2phdmEvP3RhYj1jb250YWluZXJzXG4gICAgRERfTE9HU19JTkpFQ1RJT046ICd0cnVlJyxcbiAgICBERF9TRVJWSUNFX01BUFBJTkc6IGdldEFwbVNlcnZpY2VNYXBwaW5nRW52aXJvbm1lbnRWYXJpYWJsZVZhbHVlKHByb3BzLnNlcnZpY2VOYW1lKSxcbiAgICBERF9UQUdTOiBnZXRUYWdzRW52aXJvbm1lbnRWYXJpYWJsZVZhbHVlKHtcbiAgICAgIC4uLnByb3BzLFxuICAgICAgY29udGFpbmVyVHlwZTogJ3NlcnZpY2UnLFxuICAgICAgYWNjb3VudElkLFxuICAgICAgcmVnaW9uLFxuICAgIH0pLFxuICAgIEREX1RSQUNFX1NBTVBMRV9SQVRFOiAnMS4wJywgLy8gc2VlIGh0dHBzOi8vZGR0cmFjZS5yZWFkdGhlZG9jcy5pby9lbi9zdGFibGUvY29uZmlndXJhdGlvbi5odG1sXG4gIH07XG59XG5cbi8vIHdlIGFkZCBhbGwgcG9zc2libGUgc2VydmljZSBtYXBwaW5ncyBoZXJlIGV2ZW4gaWYgbm90IHVzZWQgaW4gYSBwYXJ0aWN1bGFyIHNlcnZpY2UgdG8gZ2V0IGdsb2JhbGx5IHVuaXF1ZSBuYW1lc1xuZnVuY3Rpb24gZ2V0QXBtU2VydmljZU1hcHBpbmdFbnZpcm9ubWVudFZhcmlhYmxlVmFsdWUoc2VydmljZU5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG5cbiAgY29uc3Qgc2VydmljZU1hcHBpbmcgPSB7XG4gICAgJ2RhdGFiYXNlJzogYCR7c2VydmljZU5hbWV9LWF1cm9yYWAsXG4gICAgJ2phdmEtYXdzLXNkayc6IGAke3NlcnZpY2VOYW1lfS1hd3Mtc2RrYCxcbiAgICAna2Fma2EnOiBgJHtzZXJ2aWNlTmFtZX0ta2Fma2FgLFxuICAgICdteXNxbCc6IGAke3NlcnZpY2VOYW1lfS1hdXJvcmFgLFxuICAgICdyZWRpcyc6IGAke3NlcnZpY2VOYW1lfS1yZWRpc2AsXG4gIH07XG5cbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHNlcnZpY2VNYXBwaW5nKVxuICAgIC5tYXAoKFtrZXksIHZhbHVlXSkgPT4gYCR7a2V5fToke3ZhbHVlfWApXG4gICAgLmpvaW4oJywnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEZhcmdhdGVEb2NrZXJMYWJlbHMocHJvcHM6IHtzdGFnZTogc3RyaW5nOyBzZXJ2aWNlTmFtZTogc3RyaW5nOyB2ZXJzaW9uOiBzdHJpbmd9KTogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSB7XG4gIHJldHVybiB7XG4gICAgJ2NvbS5kYXRhZG9naHEudGFncy5lbnYnOiBwcm9wcy5zdGFnZSxcbiAgICAnY29tLmRhdGFkb2docS50YWdzLnNlcnZpY2UnOiBwcm9wcy5zZXJ2aWNlTmFtZSxcbiAgICAnY29tLmRhdGFkb2docS50YWdzLnZlcnNpb24nOiBwcm9wcy52ZXJzaW9uLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYWRkRGF0YWRvZ1NpZGVjYXIocHJvcHM6IHtcbiAgc2NvcGU6IENvbnN0cnVjdDtcbiAgdGFza0RlZmluaXRpb246IGVjcy5UYXNrRGVmaW5pdGlvbjtcbiAgYWNjb3VudE5hbWU6IHN0cmluZztcbiAgdGVhbU5hbWU6IHN0cmluZztcbiAgdGVhbUlkZW50aWZpZXI6IHN0cmluZztcbiAgc3RhZ2U6IHN0cmluZztcbiAgc2VydmljZU5hbWU6IHN0cmluZztcbiAgdmVyc2lvbjogc3RyaW5nO1xuICBkYXRhZG9nQXBpS2V5UGFyYW1ldGVyOiBzc20uSVN0cmluZ1BhcmFtZXRlcjtcbiAgZGF0YWRvZ1NpdGU6IHN0cmluZztcbiAgZGF0YWRvZ0xvZ2dpbmdNb2RlOiBEYXRhRG9nTG9nZ2luZ01vZGU7XG4gIGFwbUdldFJlc291cmNlc1RvSWdub3JlOiBzdHJpbmdbXTtcbiAgY3B1OiBudW1iZXI7XG4gIG1lbW9yeUxpbWl0TWlCOiBudW1iZXI7XG4gIGVzc2VudGlhbDogYm9vbGVhbjtcbiAgY29udGFpbmVyVGFnOiBzdHJpbmc7XG4gIGFkZGl0aW9uYWxUYWdzOiB7IFtrOiBzdHJpbmddOiBzdHJpbmd9IHwgdW5kZWZpbmVkO1xufSk6IGVjcy5Db250YWluZXJEZWZpbml0aW9uIHtcblxuICBjb25zdCB7IGFjY291bnQ6IGFjY291bnRJZCwgcmVnaW9uIH0gPSBTdGFjay5vZihwcm9wcy5zY29wZSk7XG4gIGNvbnN0IGRhdGFkb2dTaWRlY2FyID0gcHJvcHMudGFza0RlZmluaXRpb24uYWRkQ29udGFpbmVyKCdkYXRhZG9nLWFnZW50Jywge1xuICAgIGltYWdlOiBlY3MuQ29udGFpbmVySW1hZ2UuZnJvbVJlZ2lzdHJ5KGBwdWJsaWMuZWNyLmF3cy9kYXRhZG9nL2FnZW50OiR7cHJvcHMuY29udGFpbmVyVGFnfWApLFxuICAgIGxvZ2dpbmc6IHNldHVwTG9nZ2luZyh7IC4uLnByb3BzLCBjb250YWluZXJUeXBlOiAnZGF0YWRvZy1zaWRlY2FyJyB9KSxcbiAgICBjcHU6IHByb3BzLmNwdSxcbiAgICBtZW1vcnlMaW1pdE1pQjogcHJvcHMubWVtb3J5TGltaXRNaUIsXG4gICAgZW52aXJvbm1lbnQ6IHtcbiAgICAgIC8vIHVuaWZpZWQgdGFnZ2luZywgc2VlIGh0dHBzOi8vZG9jcy5kYXRhZG9naHEuY29tL2dldHRpbmdfc3RhcnRlZC90YWdnaW5nL3VuaWZpZWRfc2VydmljZV90YWdnaW5nLz90YWI9ZWNzXG4gICAgICBERF9FTlY6IHByb3BzLnN0YWdlLFxuICAgICAgRERfU0VSVklDRTogcHJvcHMuc2VydmljZU5hbWUsXG4gICAgICBERF9WRVJTSU9OOiBwcm9wcy52ZXJzaW9uLFxuICAgICAgLy8gQVBNIGFuZCB0cmFjaW5nIHNlZSBodHRwczovL2RvY3MuZGF0YWRvZ2hxLmNvbS9hZ2VudC9kb2NrZXIvYXBtLz90YWI9bGludXhcbiAgICAgIEREX0FQTV9FTkFCTEVEOiAndHJ1ZScsXG4gICAgICBERF9BUE1fSUdOT1JFX1JFU09VUkNFUzogcHJvcHMuYXBtR2V0UmVzb3VyY2VzVG9JZ25vcmVcbiAgICAgICAgLm1hcCgoYXBtR2V0UmVzb3VyY2VUb0lnbm9yZSkgPT4gYEdFVCAke2FwbUdldFJlc291cmNlVG9JZ25vcmV9YClcbiAgICAgICAgLmpvaW4oJywnKSxcbiAgICAgIC8vIGdlbmVyYWwgc2V0dGluZ3NcbiAgICAgIEREX1NJVEU6IHByb3BzLmRhdGFkb2dTaXRlLFxuICAgICAgRERfVEFHUzogZ2V0VGFnc0Vudmlyb25tZW50VmFyaWFibGVWYWx1ZSh7IC4uLnByb3BzLCBhY2NvdW50SWQsIHJlZ2lvbiwgY29udGFpbmVyVHlwZTogJ2RhdGFkb2ctc2lkZWNhcicgfSksXG4gICAgICBFQ1NfRkFSR0FURTogJ3RydWUnLFxuICAgICAgRERfQ0xPVURfUFJPVklERVJfTUVUQURBVEE6ICdhd3MnLFxuICAgICAgRERfUkVNT1RFX0NPTkZJR1VSQVRJT05fRU5BQkxFRDogJ2ZhbHNlJyxcbiAgICB9LFxuICAgIC8vIHNlZSBodHRwczovL2dpdGh1Yi5jb20vRGF0YURvZy9kYXRhZG9nLWFnZW50L2Jsb2IvbWFzdGVyL0RvY2tlcmZpbGVzL2FnZW50L2FtZDY0L0RvY2tlcmZpbGUjTDE3MS1MMTcyXG4gICAgaGVhbHRoQ2hlY2s6IHtcbiAgICAgIHN0YXJ0UGVyaW9kOiBEdXJhdGlvbi5taW51dGVzKDIpLFxuICAgICAgaW50ZXJ2YWw6IER1cmF0aW9uLnNlY29uZHMoMzApLFxuICAgICAgdGltZW91dDogRHVyYXRpb24uc2Vjb25kcyg1KSxcbiAgICAgIHJldHJpZXM6IDIsXG4gICAgICBjb21tYW5kOiBbJ0NNRC1TSEVMTCcsICcvcHJvYmUuc2gnXSxcbiAgICB9LFxuICAgIHNlY3JldHM6IHtcbiAgICAgIEREX0FQSV9LRVk6IGVjcy5TZWNyZXQuZnJvbVNzbVBhcmFtZXRlcihwcm9wcy5kYXRhZG9nQXBpS2V5UGFyYW1ldGVyKSxcbiAgICB9LFxuICAgIGVzc2VudGlhbDogcHJvcHMuZXNzZW50aWFsLFxuICB9KTtcblxuICBkYXRhZG9nU2lkZWNhci5hZGRQb3J0TWFwcGluZ3Moe1xuICAgIGNvbnRhaW5lclBvcnQ6IDgxMjUsXG4gICAgcHJvdG9jb2w6IGVjcy5Qcm90b2NvbC5VRFAsXG4gIH0pO1xuXG4gIGRhdGFkb2dTaWRlY2FyLmFkZFBvcnRNYXBwaW5ncyh7XG4gICAgY29udGFpbmVyUG9ydDogODEyNixcbiAgICBwcm90b2NvbDogZWNzLlByb3RvY29sLlRDUCxcbiAgfSk7XG5cbiAgcmV0dXJuIGRhdGFkb2dTaWRlY2FyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYWRkRmlyZWxlbnNDb25maWdVcGxvYWRGcm9tUzNQZXJtaXNzaW9ucyhwcm9wczoge1xuICB0YXNrRGVmaW5pdGlvbjogZWNzLlRhc2tEZWZpbml0aW9uO1xuICBmaXJlbGVuc0NvbmZpZ0J1Y2tldEFybjogc3RyaW5nO1xufSkge1xuICBwcm9wcy50YXNrRGVmaW5pdGlvbi5hZGRUb1Rhc2tSb2xlUG9saWN5KG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICByZXNvdXJjZXM6IFtwcm9wcy5maXJlbGVuc0NvbmZpZ0J1Y2tldEFybiwgYCR7cHJvcHMuZmlyZWxlbnNDb25maWdCdWNrZXRBcm59LypgXSxcbiAgICBhY3Rpb25zOiBbJ3MzOkdldConXSxcbiAgICBlZmZlY3Q6IGlhbS5FZmZlY3QuQUxMT1csXG4gIH0pKTtcbn1cblxuZnVuY3Rpb24gZ2V0VGFnc0Vudmlyb25tZW50VmFyaWFibGVWYWx1ZShwcm9wczoge1xuICBhY2NvdW50SWQ6IHN0cmluZztcbiAgYWNjb3VudE5hbWU6IHN0cmluZztcbiAgcmVnaW9uOiBzdHJpbmc7XG4gIHRlYW1OYW1lOiBzdHJpbmc7XG4gIHRlYW1JZGVudGlmaWVyOiBzdHJpbmc7XG4gIHN0YWdlOiBzdHJpbmc7XG4gIHNlcnZpY2VOYW1lOiBzdHJpbmc7XG4gIHZlcnNpb246IHN0cmluZztcbiAgY29udGFpbmVyVHlwZTogJ3NlcnZpY2UnIHwgJ2RhdGFkb2ctc2lkZWNhcicgfCAnZmx1ZW50LWJpdCc7XG4gIGFkZGl0aW9uYWxUYWdzOiB7IFtrOiBzdHJpbmddOiBzdHJpbmd9IHwgdW5kZWZpbmVkO1xufSk6IHN0cmluZyB7XG5cbiAgY29uc3Qgc2VwYXJhdG9yID0gZGV0ZXJtaW5lU2VwYXJhdG9yKHByb3BzLmNvbnRhaW5lclR5cGUpO1xuXG4gIGNvbnN0IHRhZ3MgPSB7XG4gICAgLy8gdW5pZmllZCB0YWdnaW5nXG4gICAgLy8gb3ZlcnJpZGRlbiBieSBkZWRpY2F0ZWQgc2V0dGluZ3MgKGVudmlyb25tZW50IHZhcmlhYmxlcy90YWdzKVxuICAgIC8vIGR1cGxpY2F0ZWQgaGVyZSB0byBlbnN1cmUgdGhleSBhcmUgdXNlZCAoYW5kIHNvbWV0aW1lcywgbm90IGFsbCB0aHJlZSB2YWx1ZXMgYXJlIHN1cHBvcnRlZClcbiAgICBlbnY6IHByb3BzLnN0YWdlLFxuICAgIHNlcnZpY2U6IHByb3BzLnNlcnZpY2VOYW1lLFxuICAgIHZlcnNpb246IHByb3BzLnZlcnNpb24sXG4gICAgLy8gYWNjb3VudC90ZWFtIHNwZWNpZmljIHBhcnRzXG4gICAgYWNjb3VudF9pZDogcHJvcHMuYWNjb3VudElkLFxuICAgIGFjY291bnRfbmFtZTogcHJvcHMuYWNjb3VudE5hbWUsXG4gICAgcmVnaW9uOiBwcm9wcy5yZWdpb24sXG4gICAgdGVhbTogcHJvcHMudGVhbU5hbWUsXG4gICAgdGVhbV9pZGVudGlmaWVyOiBwcm9wcy50ZWFtSWRlbnRpZmllcixcbiAgfTtcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHsgLi4udGFncywgLi4ucHJvcHMuYWRkaXRpb25hbFRhZ3MgfSlcbiAgICAubWFwKChba2V5LCB2YWx1ZV0pID0+IGAke2tleX06JHt2YWx1ZX1gKVxuICAgIC5qb2luKHNlcGFyYXRvcik7XG59XG5cbmZ1bmN0aW9uIGRldGVybWluZVNlcGFyYXRvcihjb250YWluZXJUeXBlOiAnc2VydmljZScgfCAnZGF0YWRvZy1zaWRlY2FyJyB8ICdmbHVlbnQtYml0Jykge1xuICBpZiAoY29udGFpbmVyVHlwZSA9PT0gJ2RhdGFkb2ctc2lkZWNhcicpIHtcbiAgICByZXR1cm4gJyAnO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiAnLCc7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFkZEZpcmVMZW5zTG9nUm91dGVyKHByb3BzOiB7XG4gIHRhc2tEZWZpbml0aW9uOiBlY3MuVGFza0RlZmluaXRpb247XG4gIGNwdTogbnVtYmVyO1xuICBtZW1vcnlMaW1pdE1pQjogbnVtYmVyO1xuICBmaXJlbGVuc0NvbmZpZ0J1Y2tldEFybjogc3RyaW5nO1xuICBmaXJlbGVuc0NvbmZpZ0ZpbGVQYXRoOiBzdHJpbmc7XG4gIHNlcnZpY2VOYW1lOiBzdHJpbmc7XG59KTogZWNzLkNvbnRhaW5lckRlZmluaXRpb24ge1xuICBjb25zdCBmbHVlbnRCaXRTM0NvbmZpZ0ZpbGUgPSBwcm9wcy5maXJlbGVuc0NvbmZpZ0J1Y2tldEFybiArIHByb3BzLmZpcmVsZW5zQ29uZmlnRmlsZVBhdGg7XG4gIHJldHVybiBwcm9wcy50YXNrRGVmaW5pdGlvbi5hZGRGaXJlbGVuc0xvZ1JvdXRlcignZmlyZWxlbnMtbG9nLXJvdXRlcicsIHtcbiAgICBpbWFnZTogZWNzLkNvbnRhaW5lckltYWdlLmZyb21SZWdpc3RyeSgncHVibGljLmVjci5hd3MvYXdzLW9ic2VydmFiaWxpdHkvYXdzLWZvci1mbHVlbnQtYml0OmluaXQtMi4zMi4yLjIwMjQwODIwJyksXG4gICAgZmlyZWxlbnNDb25maWc6IHtcbiAgICAgIHR5cGU6IGVjcy5GaXJlbGVuc0xvZ1JvdXRlclR5cGUuRkxVRU5UQklULFxuICAgICAgb3B0aW9uczoge1xuICAgICAgICBlbmFibGVFQ1NMb2dNZXRhZGF0YTogdHJ1ZSxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBjcHU6IHByb3BzLmNwdSxcbiAgICBtZW1vcnlMaW1pdE1pQjogcHJvcHMubWVtb3J5TGltaXRNaUIsXG4gICAgbG9nZ2luZzogZWNzLkxvZ0RyaXZlcnMuYXdzTG9ncyh7XG4gICAgICBsb2dHcm91cDogbmV3IGxvZ3MuTG9nR3JvdXAocHJvcHMudGFza0RlZmluaXRpb24sICdGaXJlbGVuc0xvZ1JvdXRlckxvZ0dyb3VwJywge1xuICAgICAgICBsb2dHcm91cE5hbWU6IGAke3Byb3BzLnNlcnZpY2VOYW1lfS1maXJlbGVucy1sb2ctcm91dGVyYCxcbiAgICAgIH0pLFxuICAgICAgc3RyZWFtUHJlZml4OiAnZmlyZWxlbnMtbG9nLXJvdXRlcicsXG4gICAgICBtb2RlOiBBd3NMb2dEcml2ZXJNb2RlLk5PTl9CTE9DS0lORyxcbiAgICB9KSxcbiAgICBoZWFsdGhDaGVjazoge1xuICAgICAgY29tbWFuZDogWydDTUQtU0hFTEwnLCAnY3VybCAtLWZhaWwgLS1zaWxlbnQgaHR0cDovLzEyNy4wLjAuMToyMDIwL2FwaS92MS9oZWFsdGggfHwgZXhpdCAxJ10sXG4gICAgfSxcbiAgICBlbnZpcm9ubWVudDoge1xuICAgICAgYXdzX2ZsdWVudF9iaXRfaW5pdF9zM18xOiBmbHVlbnRCaXRTM0NvbmZpZ0ZpbGUsXG4gICAgfSxcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXR1cExvZ2dpbmcocHJvcHM6IHtcbiAgc2NvcGU6IENvbnN0cnVjdDtcbiAgYWNjb3VudE5hbWU6IHN0cmluZztcbiAgdGVhbU5hbWU6IHN0cmluZztcbiAgdGVhbUlkZW50aWZpZXI6IHN0cmluZztcbiAgc3RhZ2U6IHN0cmluZztcbiAgc2VydmljZU5hbWU6IHN0cmluZztcbiAgdmVyc2lvbjogc3RyaW5nO1xuICBkYXRhZG9nQXBpS2V5UGFyYW1ldGVyOiBzc20uSVN0cmluZ1BhcmFtZXRlcjtcbiAgZGF0YWRvZ0xvZ2dpbmdNb2RlOiBEYXRhRG9nTG9nZ2luZ01vZGU7XG4gIGRhdGFkb2dTaXRlOiBzdHJpbmc7XG4gIGNvbnRhaW5lclR5cGU6ICdzZXJ2aWNlJyB8ICdkYXRhZG9nLXNpZGVjYXInO1xuICBhZGRpdGlvbmFsVGFnczogeyBbazogc3RyaW5nXTogc3RyaW5nfSB8IHVuZGVmaW5lZDtcbn0pOiBlY3MuTG9nRHJpdmVyIHtcblxuICBsZXQgbG9nR3JvdXBOYW1lOiBzdHJpbmc7XG4gIGxldCBsb2dHcm91cElkOiBzdHJpbmc7XG4gIGxldCBjb250YWluZXJUeXBlQ2FtZWxDYXNlO1xuXG4gIHN3aXRjaCAocHJvcHMuY29udGFpbmVyVHlwZSkge1xuXG4gICAgY2FzZSAnc2VydmljZSc6XG4gICAgICBsb2dHcm91cElkID0gJ0xvZ0dyb3VwRm9yU2VydmljZSc7XG4gICAgICBsb2dHcm91cE5hbWUgPSBwcm9wcy5zZXJ2aWNlTmFtZTtcbiAgICAgIGNvbnRhaW5lclR5cGVDYW1lbENhc2UgPSAnU2VydmljZSc7XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgJ2RhdGFkb2ctc2lkZWNhcic6XG4gICAgICBsb2dHcm91cElkID0gJ0xvZ0dyb3VwRm9yRGF0YWRvZ1NpZGVjYXInO1xuICAgICAgbG9nR3JvdXBOYW1lID0gYCR7cHJvcHMuc2VydmljZU5hbWV9LSR7cHJvcHMuY29udGFpbmVyVHlwZX1gO1xuICAgICAgY29udGFpbmVyVHlwZUNhbWVsQ2FzZSA9ICdEYXRhZG9nU2lkZWNhcic7XG4gICAgICBicmVhaztcbiAgfVxuXG4gIGNvbnN0IHsgYWNjb3VudDogYWNjb3VudElkLCByZWdpb24gfSA9IFN0YWNrLm9mKHByb3BzLnNjb3BlKTtcblxuICBzd2l0Y2ggKHByb3BzLmRhdGFkb2dMb2dnaW5nTW9kZSkge1xuXG4gICAgY2FzZSBEYXRhRG9nTG9nZ2luZ01vZGUuQVdTX0ZJUkVfTEVOUzpcbiAgICAgIC8vIFRPRE8gY2FuIHdlIHVzZSBgc2VjcmV0T3B0aW9uc2AgaGVyZSBhcyB3ZWxsLCBlLmcuIGFzIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3Mtc2FtcGxlcy9hbWF6b24tZWNzLWZpcmVsZW5zLWV4YW1wbGVzL2Jsb2IvbWFpbmxpbmUvZXhhbXBsZXMvZmx1ZW50LWJpdC9kYXRhZG9nL3Rhc2stZGVmaW5pdGlvbi5qc29uI0wzMy1MMzZcbiAgICAgIC8vIFByb2JhYmx5IG5vdCwgc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9pc3N1ZXMvODE3NFxuICAgICAgcmV0dXJuIGVjcy5Mb2dEcml2ZXJzLmZpcmVsZW5zKHtcbiAgICAgICAgLy8gc2VlIGh0dHBzOi8vZG9jcy5kYXRhZG9naHEuY29tL2ludGVncmF0aW9ucy9mbHVlbnRiaXQvI2NvbmZpZ3VyYXRpb24tcGFyYW1ldGVyc1xuICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgTmFtZTogJ2RhdGFkb2cnLFxuICAgICAgICAgIE1hdGNoOiAnKicsXG4gICAgICAgICAgSG9zdDogYGh0dHAtaW50YWtlLmxvZ3MuJHtwcm9wcy5kYXRhZG9nU2l0ZX1gLFxuICAgICAgICAgIFRMUzogJ29uJyxcbiAgICAgICAgICBhcGlrZXk6IHByb3BzLmRhdGFkb2dBcGlLZXlQYXJhbWV0ZXIuc3RyaW5nVmFsdWUsXG4gICAgICAgICAgY29tcHJlc3M6ICdnemlwJyxcbiAgICAgICAgICBkZF9zZXJ2aWNlOiBsb2dHcm91cE5hbWUsXG4gICAgICAgICAgZGRfc291cmNlOiAncmlvLWZhcmdhdGUnLFxuICAgICAgICAgIGRkX21lc3NhZ2Vfa2V5OiAnbG9nJyxcbiAgICAgICAgICBkZF90YWdzOiBnZXRUYWdzRW52aXJvbm1lbnRWYXJpYWJsZVZhbHVlKHsgLi4ucHJvcHMsIGFjY291bnRJZCwgcmVnaW9uLCBjb250YWluZXJUeXBlOiAnZmx1ZW50LWJpdCcgfSksXG4gICAgICAgICAgcHJvdmlkZXI6ICdlY3MnLFxuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICBjYXNlIERhdGFEb2dMb2dnaW5nTW9kZS5GT1JXQVJERVJfTEFNQkRBOlxuICAgIGNhc2UgRGF0YURvZ0xvZ2dpbmdNb2RlLkRBVEFET0dfRk9SV0FSREVSX0xBTUJEQTpcbiAgICAgIGNvbnN0IGxvZ0dyb3VwRm9yRm9yd2FyZGluZ0xhbWJkYSA9IG5ldyBsb2dzLkxvZ0dyb3VwKHByb3BzLnNjb3BlLCBsb2dHcm91cElkLCB7XG4gICAgICAgIGxvZ0dyb3VwTmFtZSxcbiAgICAgICAgcmV0ZW50aW9uOiBsb2dzLlJldGVudGlvbkRheXMuT05FX1dFRUssXG4gICAgICB9KTtcbiAgICAgIFRhZ3Mub2YobG9nR3JvdXBGb3JGb3J3YXJkaW5nTGFtYmRhKS5hZGQoJ3NlcnZpY2UnLCBwcm9wcy5zZXJ2aWNlTmFtZSk7XG4gICAgICBjb25zdCBsb2dGb3J3YXJkZXJMYW1iZGFBcm5PdXRwdXROYW1lID0gcHJvcHMuZGF0YWRvZ0xvZ2dpbmdNb2RlID09PSBEYXRhRG9nTG9nZ2luZ01vZGUuREFUQURPR19GT1JXQVJERVJfTEFNQkRBID8gJ2RhdGFkb2ctZm9yd2FyZGVyLUZvcndhcmRlckFybicgOiAnY3VzdG9tLXJlc291cmNlLWRhdGFkb2ctbG9nZm9yd2FyZGVyLWZ1bmN0aW9uLWFybic7XG4gICAgICBjb25zdCBsb2dGb3J3YXJkZXJMYW1iZGFBcm4gPSBGbi5pbXBvcnRWYWx1ZShsb2dGb3J3YXJkZXJMYW1iZGFBcm5PdXRwdXROYW1lKTtcbiAgICAgIGNvbnN0IGNmblBlcm1pc3Npb24gPSBuZXcgbGFtYmRhLkNmblBlcm1pc3Npb24ocHJvcHMuc2NvcGUsIGBMb2dGb3J3YXJkZXJQZXJtaXNzaW9uJHtjb250YWluZXJUeXBlQ2FtZWxDYXNlfWAsIHtcbiAgICAgICAgYWN0aW9uOiAnbGFtYmRhOkludm9rZUZ1bmN0aW9uJyxcbiAgICAgICAgZnVuY3Rpb25OYW1lOiBsb2dGb3J3YXJkZXJMYW1iZGFBcm4sXG4gICAgICAgIHByaW5jaXBhbDogYGxvZ3MuJHtyZWdpb259LmFtYXpvbmF3cy5jb21gLFxuICAgICAgICBzb3VyY2VBcm46IGxvZ0dyb3VwRm9yRm9yd2FyZGluZ0xhbWJkYS5sb2dHcm91cEFybixcbiAgICAgIH0pO1xuICAgICAgY29uc3QgY2ZuU3Vic2NyaXB0aW9uRmlsdGVyID0gbmV3IGxvZ3MuQ2ZuU3Vic2NyaXB0aW9uRmlsdGVyKFxuICAgICAgICBwcm9wcy5zY29wZSxcbiAgICAgICAgYExvZ0ZvcndhcmRlclN1YnNjcmlwdGlvbkZpbHRlciR7Y29udGFpbmVyVHlwZUNhbWVsQ2FzZX1gLFxuICAgICAgICB7XG4gICAgICAgICAgZGVzdGluYXRpb25Bcm46IGxvZ0ZvcndhcmRlckxhbWJkYUFybixcbiAgICAgICAgICBmaWx0ZXJQYXR0ZXJuOiAnJyxcbiAgICAgICAgICBsb2dHcm91cE5hbWU6IGxvZ0dyb3VwRm9yRm9yd2FyZGluZ0xhbWJkYS5sb2dHcm91cE5hbWUsXG4gICAgICAgIH0sXG4gICAgICApO1xuICAgICAgY2ZuU3Vic2NyaXB0aW9uRmlsdGVyLmFkZERlcGVuZGVuY3koY2ZuUGVybWlzc2lvbik7XG4gICAgICByZXR1cm4gZWNzLkxvZ0RyaXZlcnMuYXdzTG9ncyh7XG4gICAgICAgIHN0cmVhbVByZWZpeDogcHJvcHMuY29udGFpbmVyVHlwZSxcbiAgICAgICAgbG9nR3JvdXA6IGxvZ0dyb3VwRm9yRm9yd2FyZGluZ0xhbWJkYSxcbiAgICAgICAgbW9kZTogZWNzLkF3c0xvZ0RyaXZlck1vZGUuTk9OX0JMT0NLSU5HLFxuICAgICAgICBtYXhCdWZmZXJTaXplOiBTaXplLm1lYmlieXRlcygyNSksXG4gICAgICB9KTtcblxuICAgIGNhc2UgRGF0YURvZ0xvZ2dpbmdNb2RlLk5PTkU6XG4gICAgICBjb25zdCBsb2dHcm91cEluQ2xvdWR3YXRjaE9ubHkgPSBuZXcgbG9ncy5Mb2dHcm91cChwcm9wcy5zY29wZSwgbG9nR3JvdXBJZCwge1xuICAgICAgICByZXRlbnRpb246IGxvZ3MuUmV0ZW50aW9uRGF5cy5PTkVfV0VFSyxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGVjcy5Mb2dEcml2ZXJzLmF3c0xvZ3Moe1xuICAgICAgICBzdHJlYW1QcmVmaXg6IHByb3BzLmNvbnRhaW5lclR5cGUsXG4gICAgICAgIGxvZ0dyb3VwOiBsb2dHcm91cEluQ2xvdWR3YXRjaE9ubHksXG4gICAgICAgIG1vZGU6IGVjcy5Bd3NMb2dEcml2ZXJNb2RlLk5PTl9CTE9DS0lORyxcbiAgICAgICAgbWF4QnVmZmVyU2l6ZTogU2l6ZS5tZWJpYnl0ZXMoMjUpLFxuICAgICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZUxvZ2dpbmdBbmRNb25pdG9yaW5nQXJlUmVhZHlCZWZvcmVTZXJ2aWNlU3RhcnRzKHJpb0ZhcmdhdGVTZXJ2aWNlOiBSaW9GYXJnYXRlU2VydmljZSB8IFJpb0ZhcmdhdGVTZXJ2aWNlQmx1ZUdyZWVuQWxwaGEpOiB2b2lkIHtcblxuICByaW9GYXJnYXRlU2VydmljZS5zZXJ2aWNlQ29udGFpbmVyRGVmaW5pdGlvbi5hZGRDb250YWluZXJEZXBlbmRlbmNpZXMoe1xuICAgIGNvbnRhaW5lcjogcmlvRmFyZ2F0ZVNlcnZpY2UuZGF0YWRvZ1NpZGVDYXJDb250YWluZXJEZWZpbml0aW9uLFxuICAgIGNvbmRpdGlvbjogZWNzLkNvbnRhaW5lckRlcGVuZGVuY3lDb25kaXRpb24uSEVBTFRIWSxcbiAgfSk7XG5cbiAgaWYgKHJpb0ZhcmdhdGVTZXJ2aWNlLmxvZ1JvdXRlckNvbnRhaW5lckRlZmluaXRpb24pIHtcbiAgICByaW9GYXJnYXRlU2VydmljZS5zZXJ2aWNlQ29udGFpbmVyRGVmaW5pdGlvbi5hZGRDb250YWluZXJEZXBlbmRlbmNpZXMoe1xuICAgICAgY29udGFpbmVyOiByaW9GYXJnYXRlU2VydmljZS5sb2dSb3V0ZXJDb250YWluZXJEZWZpbml0aW9uLFxuICAgICAgY29uZGl0aW9uOiBlY3MuQ29udGFpbmVyRGVwZW5kZW5jeUNvbmRpdGlvbi5TVEFSVCxcbiAgICB9KTtcblxuICAgIGlmIChyaW9GYXJnYXRlU2VydmljZS5kYXRhZG9nU2lkZUNhckNvbnRhaW5lckRlZmluaXRpb24ubG9nRHJpdmVyQ29uZmlnPy5sb2dEcml2ZXIgPT09ICdhd3NmaXJlbGVucycpIHtcbiAgICAgIHJpb0ZhcmdhdGVTZXJ2aWNlLmRhdGFkb2dTaWRlQ2FyQ29udGFpbmVyRGVmaW5pdGlvbi5hZGRDb250YWluZXJEZXBlbmRlbmNpZXMoe1xuICAgICAgICBjb250YWluZXI6IHJpb0ZhcmdhdGVTZXJ2aWNlLmxvZ1JvdXRlckNvbnRhaW5lckRlZmluaXRpb24sXG4gICAgICAgIGNvbmRpdGlvbjogZWNzLkNvbnRhaW5lckRlcGVuZGVuY3lDb25kaXRpb24uU1RBUlQsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -279,7 +279,7 @@ class RioFargateServiceBlueGreenAlpha extends constructs.Construct {
|
|
|
279
279
|
// });
|
|
280
280
|
const isCompleteDeploymentLambda = new lambda.Function(this, 'IsCompleteDeploymentLambda', {
|
|
281
281
|
code: lambda.Code.fromAsset((0, path_1.join)(__dirname, 'codedeploy-custom-resources')),
|
|
282
|
-
handler: 'is-complete.handler
|
|
282
|
+
handler: 'create-deployment-is-complete.handler',
|
|
283
283
|
runtime: lambda.Runtime.NODEJS_20_X,
|
|
284
284
|
architecture: lambda.Architecture.ARM_64,
|
|
285
285
|
timeout: cdk.Duration.minutes(5),
|
|
@@ -416,4 +416,4 @@ class ClusterVpcValidator {
|
|
|
416
416
|
return result;
|
|
417
417
|
}
|
|
418
418
|
}
|
|
419
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmlvLWZhcmdhdGUtc2VydmljZS1ibHVlLWdyZWVuLWFscGhhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2ZhcmdhdGUvcmlvLWZhcmdhdGUtc2VydmljZS1ibHVlLWdyZWVuLWFscGhhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsK0JBQTRCO0FBQzVCLG1DQUFtQztBQUNuQyx5REFBeUQ7QUFDekQsMkNBQTJDO0FBQzNDLDJDQUEyQztBQUMzQyxnRUFBZ0U7QUFDaEUsMkNBQTJDO0FBQzNDLGlEQUFpRDtBQUVqRCw2Q0FBNkM7QUFDN0MsMkNBQTJDO0FBQzNDLG1EQUFtRDtBQUNuRCx5Q0FBeUM7QUFDekMscUNBQXFDO0FBQ3JDLCtEQUE0SztBQUM1SyxxQ0FBa0M7QUFnRmxDLE1BQWEsK0JBQ1gsU0FBUSxVQUFVLENBQUMsU0FBUztJQWtENUIsWUFDRSxLQUEyQixFQUMzQixFQUFVLEVBQ1YsS0FBMkM7UUFFM0MsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQWxDRix3Q0FBbUMsR0FBYSxFQUFFLENBQUM7UUFDbkQsZ0NBQTJCLEdBQUcsRUFBRSxDQUFDO1FBQ2pDLDZDQUF3QyxHQUFHLEdBQUcsQ0FBQztRQUMvQyxzQ0FBaUMsR0FBRyxJQUFJLENBQUM7UUFDekMscUNBQWdDLEdBQy9DLHdDQUFrQixDQUFDLGdCQUFnQixDQUFDO1FBQ3JCLDZDQUF3QyxHQUN2RCx3Q0FBa0IsQ0FBQyxJQUFJLENBQUM7UUFDVCxpQ0FBNEIsR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN2RCx1QkFBa0IsR0FBRyxTQUFTLENBQUM7UUFDL0IsZ0NBQTJCLEdBQUcsUUFBUSxDQUFDO1FBRXZDLG1CQUFjLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLGdDQUEyQixHQUFHLEVBQUUsQ0FBQztRQUVqQywrQkFBMEIsR0FDekMsbUVBQW1FLENBQUM7UUFDckQsOEJB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Q0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgam9pbiB9IGZyb20gJ3BhdGgnO1xuaW1wb3J0ICogYXMgY2RrIGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCAqIGFzIGNvZGVkZXBsb3kgZnJvbSAnYXdzLWNkay1saWIvYXdzLWNvZGVkZXBsb3knO1xuaW1wb3J0ICogYXMgZWMyIGZyb20gJ2F3cy1jZGstbGliL2F3cy1lYzInO1xuaW1wb3J0ICogYXMgZWNzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1lY3MnO1xuaW1wb3J0ICogYXMgZWxidjIgZnJvbSAnYXdzLWNkay1saWIvYXdzLWVsYXN0aWNsb2FkYmFsYW5jaW5ndjInO1xuaW1wb3J0ICogYXMgaWFtIGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuaW1wb3J0ICogYXMgbGFtYmRhIGZyb20gJ2F3cy1jZGstbGliL2F3cy1sYW1iZGEnO1xuaW1wb3J0ICogYXMgbm9kZWpzbGFtYmRhIGZyb20gJ2F3cy1jZGstbGliL2F3cy1sYW1iZGEtbm9kZWpzJztcbmltcG9ydCAqIGFzIGxvZ3MgZnJvbSAnYXdzLWNkay1saWIvYXdzLWxvZ3MnO1xuaW1wb3J0ICogYXMgc3NtIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zc20nO1xuaW1wb3J0ICogYXMgY3IgZnJvbSAnYXdzLWNkay1saWIvY3VzdG9tLXJlc291cmNlcyc7XG5pbXBvcnQgKiBhcyBjb25zdHJ1Y3RzIGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0ICogYXMgZGF0YWRvZyBmcm9tICcuL2RhdGFkb2cnO1xuaW1wb3J0IHsgRnJhbWV3b3JrLCBDb250YWluZXJEZWZpbml0aW9uT3B0aW9ucywgRmFyZ2F0ZVRhc2tEZWZpbml0aW9uUHJvcHMsIExvYWRCYWxhbmNlck9wdGlvbnMsIERhdGFkb2dJbnRlZ3JhdGlvblByb3BzLCBEYXRhRG9nTG9nZ2luZ01vZGUgfSBmcm9tICcuL3Jpby1mYXJnYXRlLXNlcnZpY2UnO1xuaW1wb3J0IHsgU3ByaW5nIH0gZnJvbSAnLi9zcHJpbmcnO1xuXG4vKipcbiAqIEZhcmdhdGUgVGFzayBEZWZpbml0aW9uIFByb3BlcnRpZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmlvRmFyZ2F0ZVNlcnZpY2VCbHVlR3JlZW5BbHBoYVByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBzdGFnZSBvZiB0aGUgc2VydmljZSwgZS5nLiAncHJvZCcuXG4gICAqL1xuICByZWFkb25seSBzdGFnZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgTmFtZSBvZiB0aGUgc2VydmljZS5cbiAgICovXG4gIHJlYWRvbmx5IHNlcnZpY2VOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB2ZXJzaW9uIG9mIHRoZSBzZXJ2aWNlLCBlLmcuIHRoZSBnaXQgaGFzaCBvZiB0aGUgY29ycmVzcG9uZGluZyBjb21taXQuXG4gICAqL1xuICByZWFkb25seSB2ZXJzaW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBmcmFtZXdvcmtzIGluIHVzZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0VmFsdWUgLSBObyBmcmFtZXdvcmtzLlxuICAgKi9cbiAgcmVhZG9ubHkgZnJhbWV3b3Jrcz86IEZyYW1ld29ya1tdO1xuXG4gIC8qKlxuICAgKiBUaGUgVlBDIG9mIHRoZSBzZXJ2aWNlJ3MgZWNzLkNsdXN0ZXIgaWYgbm8gY2x1c3RlciBpcyBleHBsaWNpdGx5IHBhc3NlZCBhcyBwcm9wLlxuICAgKi9cbiAgcmVhZG9ubHkgdnBjOiBlYzIuSVZwYztcblxuICAvKipcbiAgICogVGhlIEZhcmdhdGUgY2x1c3RlciB0byBydW4gdGhlIHNlcnZpY2UgaW4uXG4gICAqIElmIG5vdCBudWxsLCB0aGUgY2x1c3Rlci52cGMgTVVTVCBtYXRjaCB0aGUgdnBjIHByb3ZpZGVkIGFzIGRpcmVjdCBhcmd1bWVudC5cbiAgICpcbiAgICogQGRlZmF1bHRWYWx1ZSAtIENyZWF0ZSBhIG5ldyBGYXJnYXRlIGNsdXN0ZXIgd2l0aCBkZWZhdWx0IHByb3BlcnRpZXNcbiAgICovXG4gIHJlYWRvbmx5IGNsdXN0ZXI/OiBlY3MuSUNsdXN0ZXI7XG5cbiAgLyoqXG4gICAqIENvbnRhaW5lciBkZWZpbml0aW9uIG9wdGlvbnMgbGlrZSBpbWFnZSwgY3B1LCBtZW1vcnkuXG4gICAqL1xuICByZWFkb25seSBjb250YWluZXJEZWZpbml0aW9uT3B0aW9uOiBDb250YWluZXJEZWZpbml0aW9uT3B0aW9ucztcblxuICAvKipcbiAgICogRmFyZ2F0ZSBUYXNrIERlZmluaXRpb24gUHJvcGVydGllcy5cbiAgICovXG4gIHJlYWRvbmx5IGZhcmdhdGVPcHRpb25zOiBGYXJnYXRlVGFza0RlZmluaXRpb25Qcm9wcztcblxuICAvKipcbiAgICogTG9hZGJhbGFuY2VyIG9wdGlvbnMuXG4gICAqL1xuICByZWFkb25seSBsb2FkQmFsYW5jZXJPcHRpb25zPzogTG9hZEJhbGFuY2VyT3B0aW9ucztcblxuICAvKipcbiAgICogRGF0YWRvZyBpbnRlZ3JhdGlvbiBwcm9wZXJ0aWVzXG4gICAqL1xuICByZWFkb25seSBkYXRhZG9nT3B0aW9ucz86IERhdGFkb2dJbnRlZ3JhdGlvblByb3BzO1xuXG4gIC8qKlxuICAgKiBCbHVlIGdyZWVuIGRlcGxveW1lbnQgY29uZmlndXJhdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgYmx1ZUdyZWVuRGVwbG95bWVudENvbmZpZz86IEJsdWVHcmVlbkRlcGxveW1lbnRDb25maWc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmx1ZUdyZWVuRGVwbG95bWVudENvbmZpZyB7XG4gIC8qKlxuICAgICAqIFRoZSB0YXJnZXQgZ3JvdXAgdG8gYXNzb2NpYXRlIHdpdGggdGhlIHJlcGxhY2VtZW50IHRhc2sgc2V0IGZvciB0ZXN0aW5nIGJlZm9yZSBwcm9tb3RpbmcgdHJhZmZpYyB0byBwcm9kdWN0aW9uLlxuICAgICAqIEBkZWZhdWx0IC0gTm8gdGFyZ2V0IGdyb3VwLlxuICAgICAqL1xuICByZWFkb25seSB0ZXN0TGlzdGVuZXI/OiBlbGJ2Mi5JQXBwbGljYXRpb25MaXN0ZW5lcjtcblxuICAvKipcbiAgICAgKiBOYW1lIG9mIHRoZSBjYXBhYmlsaXRpZXMgdG8gcnVuIHdpdGggdGhlIG1vbml0b3JpbmcgdGVzdCBzdWl0ZSBydW5uZXIgdGVzdGluZ1xuICAgICAqL1xuICByZWFkb25seSBjYXBhYmlsaXR5TmFtZXM/OiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGNsYXNzIFJpb0ZhcmdhdGVTZXJ2aWNlQmx1ZUdyZWVuQWxwaGFcbiAgZXh0ZW5kcyBjb25zdHJ1Y3RzLkNvbnN0cnVjdFxuICBpbXBsZW1lbnRzIGVjMi5JQ29ubmVjdGFibGUge1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBERF9FTlZfREVOWV9MSVNUID0gW1xuICAgICdERF9FTlYnLFxuICAgICdERF9UQUdTJyxcbiAgICAnRERfU0VSVklDRScsXG4gICAgJ0REX1ZFUlNJT04nLFxuICAgICdERF9MT0dTX0lOSkVDVElPTicsXG4gIF07XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgRERfVEFHX0RFTllfTElTVCA9IFtcbiAgICAnZW52JyxcbiAgICAnc2VydmljZScsXG4gICAgJ3ZlcnNpb24nLFxuICAgICdhY2NvdW50X2lkJyxcbiAgICAnYWNjb3VudF9uYW1lJyxcbiAgICAncmVnaW9uJyxcbiAgICAndGVhbScsXG4gICAgJ3RlYW1faWRlbnRpZmllcicsXG4gIF07XG5cbiAgcHJpdmF0ZSByZWFkb25seSBERUZBVUxUX0FQTV9HRVRfRU5EUE9JTlRTX1RPX0lHTk9SRTogc3RyaW5nW10gPSBbXTtcbiAgcHJpdmF0ZSByZWFkb25seSBERUZBVUxUX0RBVEFET0dfU0lERUNBUl9DUFUgPSA2NDtcbiAgcHJpdmF0ZSByZWFkb25seSBERUZBVUxUX0RBVEFET0dfU0lERUNBUl9NRU1PUllfTElNSVRfTUlCID0gMTI4O1xuICBwcml2YXRlIHJlYWRvbmx5IERFRkFVTFRfREFUQURPR19TSURFQ0FSX0VTU0VOVElBTCA9IHRydWU7XG4gIHByaXZhdGUgcmVhZG9ubHkgREVGQVVMVF9MT0dHSU5HX01PREVfRk9SX1NFUlZJQ0UgPVxuICAgIERhdGFEb2dMb2dnaW5nTW9kZS5GT1JXQVJERVJfTEFNQkRBO1xuICBwcml2YXRlIHJlYWRvbmx5IERFRkFVTFRfTE9HR0lOR19NT0RFX0ZPUl9EQVRBRE9HX1NJREVDQVIgPVxuICAgIERhdGFEb2dMb2dnaW5nTW9kZS5OT05FO1xuICBwcml2YXRlIHJlYWRvbmx5IERFRkFVTFRfREVSRUdJU1RSQVRJT05fREVMQVkgPSBjZGsuRHVyYXRpb24uc2Vjb25kcyg1KTtcbiAgcHJpdmF0ZSByZWFkb25seSBERUZBVUxUX1NMT1dfU1RBUlQgPSB1bmRlZmluZWQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgREVGQVVMVF9EQVRBRE9HX1NJREVDQVJfVEFHID0gJ2xhdGVzdCc7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBMT0dfUk9VVEVSX0NQVSA9IDY0O1xuICBwcml2YXRlIHJlYWRvbmx5IExPR19ST1VURVJfTUVNT1JZX0xJTUlUX01JQiA9IDY0O1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgRklSRUxFTlNfQ09ORklHX0JVQ0tFVF9BUk4gPVxuICAgICdhcm46YXdzOnMzOjo6NTc3MTQ2ODk3Nzg1LWV1LXdlc3QtMS1maXJlbGVucy1jb25maWd1cmF0aW9uLWJ1Y2tldCc7XG4gIHByaXZhdGUgcmVhZG9ubHkgRklSRUxFTlNfQ09ORklHX0ZJTEVfUEFUSCA9ICcvcGFyc2UtanNvbi5jb25mJztcblxuICByZWFkb25seSBzZXJ2aWNlQ29udGFpbmVyRGVmaW5pdGlvbjogZWNzLkNvbnRhaW5lckRlZmluaXRpb247XG4gIHJlYWRvbmx5IGRhdGFkb2dTaWRlQ2FyQ29udGFpbmVyRGVmaW5pdGlvbjogZWNzLkNvbnRhaW5lckRlZmluaXRpb247XG4gIHJlYWRvbmx5IGxvZ1JvdXRlckNvbnRhaW5lckRlZmluaXRpb24/OiBlY3MuQ29udGFpbmVyRGVmaW5pdGlvbjtcbiAgcmVhZG9ubHkgdGFza0RlZmluaXRpb246IGVjcy5GYXJnYXRlVGFza0RlZmluaXRpb247XG5cbiAgcmVhZG9ubHkgY29ubmVjdGlvbnM6IGVjMi5Db25uZWN0aW9ucztcbiAgcmVhZG9ubHkgc2VydmljZTogZWNzLkZhcmdhdGVTZXJ2aWNlO1xuICByZWFkb25seSBibHVlVGFyZ2V0R3JvdXA6IGVsYnYyLkFwcGxpY2F0aW9uVGFyZ2V0R3JvdXAgfCB1bmRlZmluZWQ7XG4gIHJlYWRvbmx5IGdyZWVuVGFyZ2V0R3JvdXA6IGNkay5hd3NfZWxhc3RpY2xvYWRiYWxhbmNpbmd2Mi5BcHBsaWNhdGlvblRhcmdldEdyb3VwIHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHNjb3BlOiBjb25zdHJ1Y3RzLkNvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIHByb3BzOiBSaW9GYXJnYXRlU2VydmljZUJsdWVHcmVlbkFscGhhUHJvcHMsXG4gICkge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBjb25zdCB7XG4gICAgICBsb2FkQmFsYW5jZXJPcHRpb25zLFxuICAgICAgdnBjLFxuICAgICAgY2x1c3RlcixcbiAgICAgIGZhcmdhdGVPcHRpb25zLFxuICAgICAgZGF0YWRvZ09wdGlvbnMsXG4gICAgICBzZXJ2aWNlTmFtZSxcbiAgICAgIGNvbnRhaW5lckRlZmluaXRpb25PcHRpb24sXG4gICAgICBzdGFnZSxcbiAgICAgIHZlcnNpb24sXG4gICAgICBmcmFtZXdvcmtzLFxuICAgICAgYmx1ZUdyZWVuRGVwbG95bWVudENvbmZpZyxcbiAgICB9ID0gcHJvcHM7XG5cbiAgICB0aGlzLm5vZGUuYWRkVmFsaWRhdGlvbihcbiAgICAgIG5ldyBEZW55TGlzdGVkS2V5VmFsaWRhdG9yKFxuICAgICAgICBSaW9GYXJnYXRlU2VydmljZUJsdWVHcmVlbkFscGhhLkREX0VOVl9ERU5ZX0xJU1QsXG4gICAgICAgIHByb3BzLmNvbnRhaW5lckRlZmluaXRpb25PcHRpb24uZW52aXJvbm1lbnQsXG4gICAgICAgIChpdCkgPT5cbiAgICAgICAgICBgRW52aXJvbm1lbnQgJHtpdH0gaXMgbm90IGFsbG93ZWQgdG8gYmUgc2V0LiBUaGlzIHZhbHVlIHdpbGwgYmUgaW5mZXJyZWQgZnJvbSB0aGUgYWNjb3VudCBvciBvdGhlciBwcm9wZXJ0aWVzLmAsXG4gICAgICApLFxuICAgICk7XG4gICAgdGhpcy5ub2RlLmFkZFZhbGlkYXRpb24oXG4gICAgICBuZXcgRGVueUxpc3RlZEtleVZhbGlkYXRvcihcbiAgICAgICAgUmlvRmFyZ2F0ZVNlcnZpY2VCbHVlR3JlZW5BbHBoYS5ERF9UQUdfREVOWV9MSVNULFxuICAgICAgICBwcm9wcy5kYXRhZG9nT3B0aW9ucz8uYWRkaXRpb25hbFRhZ3MsXG4gICAgICAgIChpdCkgPT5cbiAgICAgICAgICBgVGFnICR7aXR9IGlzIG5vdCBhbGxvd2VkIHRvIGJlIHNldC4gVGhpcyB2YWx1ZSB3aWxsIGJlIGluZmVycmVkIGZyb20gdGhlIGFjY291bnQgb3Igb3RoZXIgcHJvcGVydGllcy5gLFxuICAgICAgKSxcbiAgICApO1xuXG4gICAgdGhpcy5ub2RlLmFkZFZhbGlkYXRpb24obmV3IENsdXN0ZXJWcGNWYWxpZGF0b3IocHJvcHMudnBjLCBwcm9wcy5jbHVzdGVyKSk7XG5cbiAgICBjb25zdCBmYXJnYXRlQ2x1c3RlciA9XG4gICAgICBjbHVzdGVyID8/XG4gICAgICBuZXcgZWNzLkNsdXN0ZXIodGhpcywgJ0NsdXN0ZXInLCB7XG4gICAgICAgIHZwYzogdnBjLFxuICAgICAgfSk7XG4gICAgdGhpcy50YXNrRGVmaW5pdGlvbiA9IG5ldyBlY3MuRmFyZ2F0ZVRhc2tEZWZpbml0aW9uKFxuICAgICAgdGhpcyxcbiAgICAgICdUYXNrRGVmaW5pdGlvbicsXG4gICAgICB7XG4gICAgICAgIGNwdTogZmFyZ2F0ZU9wdGlvbnMuY3B1LFxuICAgICAgICBtZW1vcnlMaW1pdE1pQjogZmFyZ2F0ZU9wdGlvbnMubWVtb3J5TGltaXRNaUIsXG4gICAgICAgIHJ1bnRpbWVQbGF0Zm9ybToge1xuICAgICAgICAgIGNwdUFyY2hpdGVjdHVyZTpcbiAgICAgICAgICAgIGZhcmdhdGVPcHRpb25zLnJ1bnRpbWVQbGF0Zm9ybT8uY3B1QXJjaGl0ZWN0dXJlID8/XG4gICAgICAgICAgICBlY3MuQ3B1QXJjaGl0ZWN0dXJlLlg4Nl82NCxcbiAgICAgICAgICBvcGVyYXRpbmdTeXN0ZW1GYW1pbHk6XG4gICAgICAgICAgICBmYXJnYXRlT3B0aW9ucy5ydW50aW1lUGxhdGZvcm0/Lm9wZXJhdGluZ1N5c3RlbUZhbWlseSA/P1xuICAgICAgICAgICAgZWNzLk9wZXJhdGluZ1N5c3RlbUZhbWlseS5MSU5VWCxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgKTtcbiAgICBjb25zdCBhY2NvdW50TmFtZSA9IHNzbS5TdHJpbmdQYXJhbWV0ZXIuZnJvbVN0cmluZ1BhcmFtZXRlck5hbWUoXG4gICAgICB0aGlzLFxuICAgICAgJ0FjY291bnROYW1lJyxcbiAgICAgICcvY29uZmlnL2FjY291bnQvbmFtZScsXG4gICAgKS5zdHJpbmdWYWx1ZTtcbiAgICBjb25zdCB0ZWFtTmFtZSA9IHNzbS5TdHJpbmdQYXJhbWV0ZXIuZnJvbVN0cmluZ1BhcmFtZXRlck5hbWUoXG4gICAgICB0aGlzLFxuICAgICAgJ1RlYW1OYW1lJyxcbiAgICAgICcvY29uZmlnL3RlYW0vbmFtZScsXG4gICAgKS5zdHJpbmdWYWx1ZTtcbiAgICBjb25zdCB0ZWFtSWRlbnRpZmllciA9IHNzbS5TdHJpbmdQYXJhbWV0ZXIuZnJvbVN0cmluZ1BhcmFtZXRlck5hbWUoXG4gICAgICB0aGlzLFxuICAgICAgJ1RlYW1JZGVudGlmaWVyJyxcbiAgICAgICcvY29uZmlnL3RlYW0vaWRlbnRpZmllcicsXG4gICAgKS5zdHJpbmdWYWx1ZTtcblxuICAgIGNvbnN0IGRhdGFkb2dTaXRlID0gc3NtLlN0cmluZ1BhcmFtZXRlci5mcm9tU3RyaW5nUGFyYW1ldGVyTmFtZShcbiAgICAgIHRoaXMsXG4gICAgICAnRGF0YWRvZ1NpdGUnLFxuICAgICAgJy9yaW8vY29uZmlnL2RhdGFkb2ctaW50ZWdyYXRpb24vc2l0ZScsXG4gICAgKS5zdHJpbmdWYWx1ZTtcbiAgICBjb25zdCBkYXRhZG9nQXBpS2V5UGFyYW1ldGVyID0gc3NtLlN0cmluZ1BhcmFtZXRlci5mcm9tU3RyaW5nUGFyYW1ldGVyTmFtZShcbiAgICAgIHRoaXMsXG4gICAgICAnRGF0YWRvZ0FwaUtleScsXG4gICAgICAnL3Jpby9jb25maWcvZGF0YWRvZy1pbnRlZ3JhdGlvbi9hcGkta2V5JyxcbiAgICApO1xuXG4gICAgY29uc3QgZGF0YWRvZ1NpZGVjYXJDcHUgPVxuICAgICAgZGF0YWRvZ09wdGlvbnM/LmNwdSA/PyB0aGlzLkRFRkFVTFRfREFUQURPR19TSURFQ0FSX0NQVTtcbiAgICBjb25zdCBkYXRhZG9nU2lkZWNhck1lbW9yeU1pQiA9XG4gICAgICBkYXRhZG9nT3B0aW9ucz8ubWVtb3J5TGltaXRNaUIgPz9cbiAgICAgIHRoaXMuREVGQVVMVF9EQVRBRE9HX1NJREVDQVJfTUVNT1JZX0xJTUlUX01JQjtcbiAgICBjb25zdCBkYXRhZG9nU2lkZWNhckVzc2VudGlhbCA9XG4gICAgICBkYXRhZG9nT3B0aW9ucz8uZGF0YWRvZ1NpZGVjYXJFc3NlbnRpYWwgPz9cbiAgICAgIHRoaXMuREVGQVVMVF9EQVRBRE9HX1NJREVDQVJfRVNTRU5USUFMO1xuXG4gICAgY29uc3QgbG9nZ2luZ01vZGVGb3JTZXJ2aWNlID1cbiAgICAgIGRhdGFkb2dPcHRpb25zPy5sb2dnaW5nTW9kZUZvclNlcnZpY2UgPz9cbiAgICAgIHRoaXMuREVGQVVMVF9MT0dHSU5HX01PREVfRk9SX1NFUlZJQ0U7XG4gICAgY29uc3QgbG9nZ2luZ01vZGVGb3JEYXRhZG9nQWdlbnQgPVxuICAgICAgZGF0YWRvZ09wdGlvbnM/LmxvZ2dpbmdNb2RlRm9yRGF0YWRvZ0FnZW50ID8/XG4gICAgICB0aGlzLkRFRkFVTFRfTE9HR0lOR19NT0RFX0ZPUl9EQVRBRE9HX1NJREVDQVI7XG4gICAgY29uc3QgZmlyZUxlbnNMb2dSb3V0ZXJSZXF1aXJlZCA9XG4gICAgICBsb2dnaW5nTW9kZUZvclNlcnZpY2UgPT09IERhdGFEb2dMb2dnaW5nTW9kZS5BV1NfRklSRV9MRU5TIHx8XG4gICAgICBsb2dnaW5nTW9kZUZvckRhdGFkb2dBZ2VudCA9PT0gRGF0YURvZ0xvZ2dpbmdNb2RlLkFXU19GSVJFX0xFTlM7XG5cbiAgICBsZXQgc2VydmljZUNvbnRhaW5lckNwdVVuaXRzO1xuICAgIGxldCBzZXJ2aWNlQ29udGFpbmVyTWVtb3J5TGltaXRNaUI7XG5cbiAgICBpZiAoZmlyZUxlbnNMb2dSb3V0ZXJSZXF1aXJlZCkge1xuICAgICAgc2VydmljZUNvbnRhaW5lckNwdVVuaXRzID1cbiAgICAgICAgZmFyZ2F0ZU9wdGlvbnMuY3B1IC0gZGF0YWRvZ1NpZGVjYXJDcHUgLSB0aGlzLkxPR19ST1VURVJfQ1BVO1xuICAgICAgc2VydmljZUNvbnRhaW5lck1lbW9yeUxpbWl0TWlCID1cbiAgICAgICAgZmFyZ2F0ZU9wdGlvbnMubWVtb3J5TGltaXRNaUIgLVxuICAgICAgICBkYXRhZG9nU2lkZWNhck1lbW9yeU1pQiAtXG4gICAgICAgIHRoaXMuTE9HX1JPVVRFUl9NRU1PUllfTElNSVRfTUlCO1xuICAgICAgZGF0YWRvZy5hZGRGaXJlbGVuc0NvbmZpZ1VwbG9hZEZyb21TM1Blcm1pc3Npb25zKHtcbiAgICAgICAgdGFza0RlZmluaXRpb246IHRoaXMudGFza0RlZmluaXRpb24sXG4gICAgICAgIGZpcmVsZW5zQ29uZmlnQnVja2V0QXJuOiB0aGlzLkZJUkVMRU5TX0NPTkZJR19CVUNLRVRfQVJOLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNlcnZpY2VDb250YWluZXJDcHVVbml0cyA9IGZhcmdhdGVPcHRpb25zLmNwdSAtIGRhdGFkb2dTaWRlY2FyQ3B1O1xuICAgICAgc2VydmljZUNvbnRhaW5lck1lbW9yeUxpbWl0TWlCID1cbiAgICAgICAgZmFyZ2F0ZU9wdGlvbnMubWVtb3J5TGltaXRNaUIgLSBkYXRhZG9nU2lkZWNhck1lbW9yeU1pQjtcbiAgICB9XG4gICAgdGhpcy5zZXJ2aWNlQ29udGFpbmVyRGVmaW5pdGlvbiA9IHRoaXMudGFza0RlZmluaXRpb24uYWRkQ29udGFpbmVyKFxuICAgICAgc2VydmljZU5hbWUsXG4gICAgICB7XG4gICAgICAgIGltYWdlOiBjb250YWluZXJEZWZpbml0aW9uT3B0aW9uLmltYWdlLFxuICAgICAgICBjcHU6IHNlcnZpY2VDb250YWluZXJDcHVVbml0cyxcbiAgICAgICAgbWVtb3J5TGltaXRNaUI6IHNlcnZpY2VDb250YWluZXJNZW1vcnlMaW1pdE1pQixcbiAgICAgICAgZW52aXJvbm1lbnQ6IHtcbiAgICAgICAgICAuLi5kYXRhZG9nLmdldEZhcmdhdGVDb250YWluZXJFbnZpcm9ubWVudFZhcmlhYmxlcyh7XG4gICAgICAgICAgICBzY29wZTogdGhpcyxcbiAgICAgICAgICAgIHN0YWdlLFxuICAgICAgICAgICAgc2VydmljZU5hbWUsXG4gICAgICAgICAgICB2ZXJzaW9uLFxuICAgICAgICAgICAgYWNjb3VudE5hbWUsXG4gICAgICAgICAgICB0ZWFtTmFtZSxcbiAgICAgICAgICAgIHRlYW1JZGVudGlmaWVyLFxuICAgICAgICAgICAgYWRkaXRpb25hbFRhZ3M6IGRhdGFkb2dPcHRpb25zPy5hZGRpdGlvbmFsVGFncyxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICAuLi5jb250YWluZXJEZWZpbml0aW9uT3B0aW9uLmVudmlyb25tZW50LFxuICAgICAgICB9LFxuICAgICAgICBkb2NrZXJMYWJlbHM6IHtcbiAgICAgICAgICAuLi5kYXRhZG9nLmdldEZhcmdhdGVEb2NrZXJMYWJlbHMoeyBzdGFnZSwgc2VydmljZU5hbWUsIHZlcnNpb24gfSksXG4gICAgICAgIH0sXG4gICAgICAgIGhlYWx0aENoZWNrOiBjb250YWluZXJEZWZpbml0aW9uT3B0aW9uLmhlYWx0aENoZWNrLFxuICAgICAgICBsb2dnaW5nOiBkYXRhZG9nLnNldHVwTG9nZ2luZyh7XG4gICAgICAgICAgc2NvcGUsXG4gICAgICAgICAgYWNjb3VudE5hbWUsXG4gICAgICAgICAgdGVhbU5hbWUsXG4gICAgICAgICAgdGVhbUlkZW50aWZpZXIsXG4gICAgICAgICAgc3RhZ2UsXG4gICAgICAgICAgc2VydmljZU5hbWUsXG4gICAgICAgICAgdmVyc2lvbixcbiAgICAgICAgICBkYXRhZG9nQXBpS2V5UGFyYW1ldGVyLFxuICAgICAgICAgIGRhdGFkb2dMb2dnaW5nTW9kZTogbG9nZ2luZ01vZGVGb3JTZXJ2aWNlLFxuICAgICAgICAgIGRhdGFkb2dTaXRlLFxuICAgICAgICAgIGNvbnRhaW5lclR5cGU6ICdzZXJ2aWNlJyxcbiAgICAgICAgICBhZGRpdGlvbmFsVGFnczogZGF0YWRvZ09wdGlvbnM/LmFkZGl0aW9uYWxUYWdzLFxuICAgICAgICB9KSxcbiAgICAgICAgc2VjcmV0czogY29udGFpbmVyRGVmaW5pdGlvbk9wdGlvbi5zZWNyZXRzLFxuICAgICAgfSxcbiAgICApO1xuXG4gICAgaWYgKGZyYW1ld29ya3M/LmluY2x1ZGVzKEZyYW1ld29yay5TUFJJTkcpKSB7XG4gICAgICBTcHJpbmcuYWxsb3dQYXJhbWV0ZXJTdG9yZUFjY2Vzc0ZvclNwcmluZ0Nsb3VkQXdzKFxuICAgICAgICB0aGlzLFxuICAgICAgICBzZXJ2aWNlTmFtZSxcbiAgICAgICAgdGhpcy50YXNrRGVmaW5pdGlvbi50YXNrUm9sZSxcbiAgICAgICk7XG4gICAgICBTcHJpbmcuYWxsb3dTZWNyZXRzTWFuYWdlckFjY2Vzc0ZvclNwcmluZ0Nsb3VkQXdzKFxuICAgICAgICB0aGlzLFxuICAgICAgICBzZXJ2aWNlTmFtZSxcbiAgICAgICAgdGhpcy50YXNrRGVmaW5pdGlvbi50YXNrUm9sZSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKGZpcmVMZW5zTG9nUm91dGVyUmVxdWlyZWQpIHtcbiAgICAgIHRoaXMubG9nUm91dGVyQ29udGFpbmVyRGVmaW5pdGlvbiA9IGRhdGFkb2cuYWRkRmlyZUxlbnNMb2dSb3V0ZXIoe1xuICAgICAgICB0YXNrRGVmaW5pdGlvbjogdGhpcy50YXNrRGVmaW5pdGlvbixcbiAgICAgICAgY3B1OiB0aGlzLkxPR19ST1VURVJfQ1BVLFxuICAgICAgICBtZW1vcnlMaW1pdE1pQjogdGhpcy5MT0dfUk9VVEVSX01FTU9SWV9MSU1JVF9NSUIsXG4gICAgICAgIGZpcmVsZW5zQ29uZmlnQnVja2V0QXJuOiB0aGlzLkZJUkVMRU5TX0NPTkZJR19CVUNLRVRfQVJOLFxuICAgICAgICBmaXJlbGVuc0NvbmZpZ0ZpbGVQYXRoOiB0aGlzLkZJUkVMRU5TX0NPTkZJR19GSUxFX1BBVEgsXG4gICAgICAgIHNlcnZpY2VOYW1lOiBwcm9wcy5zZXJ2aWNlTmFtZSxcbiAgICAgIH0pO1xuICAgIH1cbiAgICB0aGlzLmRhdGFkb2dTaWRlQ2FyQ29udGFpbmVyRGVmaW5pdGlvbiA9IGRhdGFkb2cuYWRkRGF0YWRvZ1NpZGVjYXIoe1xuICAgICAgc2NvcGUsXG4gICAgICB0YXNrRGVmaW5pdGlvbjogdGhpcy50YXNrRGVmaW5pdGlvbixcbiAgICAgIGFjY291bnROYW1lLFxuICAgICAgdGVhbU5hbWUsXG4gICAgICB0ZWFtSWRlbnRpZmllcixcbiAgICAgIHN0YWdlLFxuICAgICAgc2VydmljZU5hbWUsXG4gICAgICB2ZXJzaW9uLFxuICAgICAgZGF0YWRvZ0FwaUtleVBhcmFtZXRlcixcbiAgICAgIGRhdGFkb2dTaXRlLFxuICAgICAgZGF0YWRvZ0xvZ2dpbmdNb2RlOiBsb2dnaW5nTW9kZUZvckRhdGFkb2dBZ2VudCxcbiAgICAgIGFwbUdldFJlc291cmNlc1RvSWdub3JlOlxuICAgICAgICBkYXRhZG9nT3B0aW9ucz8uYXBtR2V0RW5kcG9pbnRzVG9JZ25vcmUgPz9cbiAgICAgICAgdGhpcy5ERUZBVUxUX0FQTV9HRVRfRU5EUE9JTlRTX1RPX0lHTk9SRSxcbiAgICAgIGNwdTogZGF0YWRvZ1NpZGVjYXJDcHUsXG4gICAgICBtZW1vcnlMaW1pdE1pQjogZGF0YWRvZ1NpZGVjYXJNZW1vcnlNaUIsXG4gICAgICBlc3NlbnRpYWw6IGRhdGFkb2dTaWRlY2FyRXNzZW50aWFsLFxuICAgICAgY29udGFpbmVyVGFnOlxuICAgICAgICBwcm9wcy5kYXRhZG9nT3B0aW9ucz8uZGF0YWRvZ1NpZGVjYXJUYWcgPz9cbiAgICAgICAgdGhpcy5ERUZBVUxUX0RBVEFET0dfU0lERUNBUl9UQUcsIC8vIFRoZXNlIGFyZSBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsXG4gICAgICBhZGRpdGlvbmFsVGFnczogZGF0YWRvZ09wdGlvbnM/LmFkZGl0aW9uYWxUYWdzLFxuICAgIH0pO1xuXG4gICAgZGF0YWRvZy5lbnN1cmVMb2dnaW5nQW5kTW9uaXRvcmluZ0FyZVJlYWR5QmVmb3JlU2VydmljZVN0YXJ0cyh0aGlzKTtcblxuICAgIGNvbnN0IGxvYWRCYWxhbmNlck9wdGlvbnNGb3JGYXJnYXRlU2VydmljZSA9IGxvYWRCYWxhbmNlck9wdGlvbnNcbiAgICAgID8geyBoZWFsdGhDaGVja0dyYWNlUGVyaW9kOiBsb2FkQmFsYW5jZXJPcHRpb25zLmhlYWx0aENoZWNrR3JhY2VQZXJpb2QgfVxuICAgICAgOiB7fTtcblxuICAgIHRoaXMuc2VydmljZSA9IG5ldyBlY3MuRmFyZ2F0ZVNlcnZpY2UodGhpcywgJ1NlcnZpY2UnLCB7XG4gICAgICBjbHVzdGVyOiBmYXJnYXRlQ2x1c3RlcixcbiAgICAgIHRhc2tEZWZpbml0aW9uOiB0aGlzLnRhc2tEZWZpbml0aW9uLFxuICAgICAgbWF4SGVhbHRoeVBlcmNlbnQ6IDIwMCxcbiAgICAgIG1pbkhlYWx0aHlQZXJjZW50OiAxMDAsXG4gICAgICBkZXNpcmVkQ291bnQ6IGZhcmdhdGVPcHRpb25zPy5kZXNpcmVkQ291bnQsXG4gICAgICBkZXBsb3ltZW50Q29udHJvbGxlcjogeyB0eXBlOiBlY3MuRGVwbG95bWVudENvbnRyb2xsZXJUeXBlLkNPREVfREVQTE9ZIH0sXG4gICAgICAuLi5sb2FkQmFsYW5jZXJPcHRpb25zRm9yRmFyZ2F0ZVNlcnZpY2UsXG4gICAgICBwcm9wYWdhdGVUYWdzOiBlY3MuUHJvcGFnYXRlZFRhZ1NvdXJjZS5TRVJWSUNFLFxuICAgIH0pO1xuXG4gICAgdGhpcy5jb25uZWN0aW9ucyA9IHRoaXMuc2VydmljZS5jb25uZWN0aW9ucztcblxuICAgIGlmIChsb2FkQmFsYW5jZXJPcHRpb25zICE9IG51bGwpIHtcbiAgICAgIGNvbnN0IGNvbnRhaW5lclBvcnQgPSA0NDM7XG4gICAgICB0aGlzLnNlcnZpY2VDb250YWluZXJEZWZpbml0aW9uLmFkZFBvcnRNYXBwaW5ncyh7XG4gICAgICAgIGNvbnRhaW5lclBvcnQ6IGNvbnRhaW5lclBvcnQsXG4gICAgICAgIHByb3RvY29sOiBlY3MuUHJvdG9jb2wuVENQLFxuICAgICAgfSk7XG4gICAgICB0aGlzLmJsdWVUYXJnZXRHcm91cCA9IG5ldyBlbGJ2Mi5BcHBsaWNhdGlvblRhcmdldEdyb3VwKFxuICAgICAgICB0aGlzLFxuICAgICAgICAnQmx1ZVRhcmdldEdyb3VwJyxcbiAgICAgICAge1xuICAgICAgICAgIHZwYzogdnBjLFxuICAgICAgICAgIHBvcnQ6IGNvbnRhaW5lclBvcnQsXG4gICAgICAgICAgcHJvdG9jb2w6IGVsYnYyLkFwcGxpY2F0aW9uUHJvdG9jb2wuSFRUUFMsXG4gICAgICAgICAgdGFyZ2V0VHlwZTogZWxidjIuVGFyZ2V0VHlwZS5JUCxcbiAgICAgICAgICB0YXJnZXRzOiBbdGhpcy5zZXJ2aWNlXSxcbiAgICAgICAgICBoZWFsdGhDaGVjazogbG9hZEJhbGFuY2VyT3B0aW9ucy5oZWFsdGhDaGVjayxcbiAgICAgICAgICBzbG93U3RhcnQ6XG4gICAgICAgICAgICBwcm9wcy5sb2FkQmFsYW5jZXJPcHRpb25zPy5zbG93U3RhcnQgPz8gdGhpcy5ERUZBVUxUX1NMT1dfU1RBUlQsXG4gICAgICAgICAgZGVyZWdpc3RyYXRpb25EZWxheTpcbiAgICAgICAgICAgIHByb3BzLmxvYWRCYWxhbmNlck9wdGlvbnM/LmRlcmVnaXN0cmF0aW9uRGVsYXkgPz9cbiAgICAgICAgICAgIHRoaXMuREVGQVVMVF9ERVJFR0lTVFJBVElPTl9ERUxBWSxcbiAgICAgICAgfSxcbiAgICAgICk7XG4gICAgICB0aGlzLmdyZWVuVGFyZ2V0R3JvdXAgPSBuZXcgZWxidjIuQXBwbGljYXRpb25UYXJnZXRHcm91cChcbiAgICAgICAgdGhpcyxcbiAgICAgICAgJ0dyZWVuVGFyZ2V0R3JvdXAnLFxuICAgICAgICB7XG4gICAgICAgICAgdnBjOiB2cGMsXG4gICAgICAgICAgcG9ydDogY29udGFpbmVyUG9ydCxcbiAgICAgICAgICBwcm90b2NvbDogZWxidjIuQXBwbGljYXRpb25Qcm90b2NvbC5IVFRQUyxcbiAgICAgICAgICB0YXJnZXRUeXBlOiBlbGJ2Mi5UYXJnZXRUeXBlLklQLFxuICAgICAgICAgIHRhcmdldHM6IFt0aGlzLnNlcnZpY2VdLFxuICAgICAgICAgIGhlYWx0aENoZWNrOiBsb2FkQmFsYW5jZXJPcHRpb25zLmhlYWx0aENoZWNrLFxuICAgICAgICAgIHNsb3dTdGFydDpcbiAgICAgICAgICAgIHByb3BzLmxvYWRCYWxhbmNlck9wdGlvbnM/LnNsb3dTdGFydCA/PyB0aGlzLkRFRkFVTFRfU0xPV19TVEFSVCxcbiAgICAgICAgICBkZXJlZ2lzdHJhdGlvbkRlbGF5OlxuICAgICAgICAgICAgcHJvcHMubG9hZEJhbGFuY2VyT3B0aW9ucz8uZGVyZWdpc3RyYXRpb25EZWxheSA/P1xuICAgICAgICAgICAgdGhpcy5ERUZBVUxUX0RFUkVHSVNUUkFUSU9OX0RFTEFZLFxuICAgICAgICB9LFxuICAgICAgKTtcblxuICAgICAgbG9hZEJhbGFuY2VyT3B0aW9ucy5saXN0ZW5lclJ1bGVzLmZvckVhY2goKHsgcHJpb3JpdHksIGNvbmRpdGlvbnMgfSkgPT4ge1xuICAgICAgICBsb2FkQmFsYW5jZXJPcHRpb25zLmxpc3RlbmVyLmFkZFRhcmdldEdyb3VwcyhgUHJpb3JpdHkke3ByaW9yaXR5fUxpc3RlbmVyUnVsZWAsIHtcbiAgICAgICAgICB0YXJnZXRHcm91cHM6IFt0aGlzLmJsdWVUYXJnZXRHcm91cCBhcyBlbGJ2Mi5BcHBsaWNhdGlvblRhcmdldEdyb3VwXSxcbiAgICAgICAgICBwcmlvcml0eTogcHJpb3JpdHksXG4gICAgICAgICAgY29uZGl0aW9uczogY29uZGl0aW9ucyxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICAgIGlmIChibHVlR3JlZW5EZXBsb3ltZW50Q29uZmlnPy50ZXN0TGlzdGVuZXIpIHtcbiAgICAgICAgbG9hZEJhbGFuY2VyT3B0aW9ucy5saXN0ZW5lclJ1bGVzLmZvckVhY2goKHsgcHJpb3JpdHksIGNvbmRpdGlvbnMgfSkgPT4ge1xuICAgICAgICAgIGJsdWVHcmVlbkRlcGxveW1lbnRDb25maWcudGVzdExpc3RlbmVyPy5hZGRUYXJnZXRHcm91cHMoYFByaW9yaXR5JHtwcmlvcml0eX1MaXN0ZW5lclJ1bGVgLCB7XG4gICAgICAgICAgICB0YXJnZXRHcm91cHM6IFt0aGlzLmdyZWVuVGFyZ2V0R3JvdXAgYXMgZWxidjIuQXBwbGljYXRpb25UYXJnZXRHcm91cF0sXG4gICAgICAgICAgICBwcmlvcml0eTogcHJpb3JpdHksXG4gICAgICAgICAgICBjb25kaXRpb25zOiBjb25kaXRpb25zLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZWNzRGVwbG95bWVudEdyb3VwID0gbmV3IGNvZGVkZXBsb3kuRWNzRGVwbG95bWVudEdyb3VwKHRoaXMsICdEZXBsb3ltZW50R3JvdXAnLCB7XG4gICAgICAgIHNlcnZpY2U6IHRoaXMuc2VydmljZSxcbiAgICAgICAgYmx1ZUdyZWVuRGVwbG95bWVudENvbmZpZzoge1xuICAgICAgICAgIGJsdWVUYXJnZXRHcm91cDogdGhpcy5ibHVlVGFyZ2V0R3JvdXAsXG4gICAgICAgICAgZ3JlZW5UYXJnZXRHcm91cDogdGhpcy5ncmVlblRhcmdldEdyb3VwLFxuICAgICAgICAgIGxpc3RlbmVyOiBsb2FkQmFsYW5jZXJPcHRpb25zLmxpc3RlbmVyLFxuICAgICAgICAgIHRlc3RMaXN0ZW5lcjogYmx1ZUdyZWVuRGVwbG95bWVudENvbmZpZz8udGVzdExpc3RlbmVyLFxuICAgICAgICB9LFxuICAgICAgICBkZXBsb3ltZW50Q29uZmlnOlxuICAgICAgICAgIGNvZGVkZXBsb3kuRWNzRGVwbG95bWVudENvbmZpZy5DQU5BUllfMTBQRVJDRU5UXzVNSU5VVEVTLFxuICAgICAgfSk7XG5cbiAgICAgIC8vIGNvbnN0IGNyZWF0ZURlcGxveW1lbnRMYW1iZGEgPSBuZXcgbm9kZWpzbGFtYmRhLk5vZGVqc0Z1bmN0aW9uKHRoaXMsICdDcmVhdGVEZXBsb3ltZW50TGFtYmRhJywge1xuICAgICAgLy8gICBlbnRyeTogJy4vc3JjL2ZhcmdhdGUvY29kZWRlcGxveS1jdXN0b20tcmVzb3VyY2VzL2NyZWF0ZS1kZXBsb3ltZW50LW9uLWNyZWF0ZS50cycsXG4gICAgICAvLyAgIGhhbmRsZXI6ICdoYW5kbGVyJyxcbiAgICAgIC8vICAgdGltZW91dDogY2RrLkR1cmF0aW9uLm1pbnV0ZXMoNSksXG4gICAgICAvLyAgIHJ1bnRpbWU6IGxhbWJkYS5SdW50aW1lLk5PREVKU18yMF9YLFxuICAgICAgLy8gfSk7XG4gICAgICBjb25zdCBjcmVhdGVEZXBsb3ltZW50TGFtYmRhID0gbmV3IGxhbWJkYS5GdW5jdGlvbih0aGlzLCAnQ3JlYXRlRGVwbG95bWVudExhbWJkYScsIHtcbiAgICAgICAgY29kZTogbGFtYmRhLkNvZGUuZnJvbUFzc2V0KGpvaW4oX19kaXJuYW1lLCAnY29kZWRlcGxveS1jdXN0b20tcmVzb3VyY2VzJykpLFxuICAgICAgICBoYW5kbGVyOiAnY3JlYXRlLWRlcGxveW1lbnQtb24tY3JlYXRlLmhhbmRsZXInLFxuICAgICAgICBydW50aW1lOiBsYW1iZGEuUnVudGltZS5OT0RFSlNfMjBfWCxcbiAgICAgICAgYXJjaGl0ZWN0dXJlOiBsYW1iZGEuQXJjaGl0ZWN0dXJlLkFSTV82NCxcbiAgICAgICAgdGltZW91dDogY2RrLkR1cmF0aW9uLm1pbnV0ZXMoNSksXG4gICAgICAgIGxvZ0dyb3VwOiBuZXcgbG9ncy5Mb2dHcm91cCh0aGlzLCAnQ3JlYXRlRGVwbG95bWVudExhbWJkYUxvZ0dyb3VwJywge1xuICAgICAgICAgIHJldGVudGlvbjogbG9ncy5SZXRlbnRpb25EYXlzLk9ORV9XRUVLLFxuICAgICAgICB9KSxcbiAgICAgIH0pO1xuICAgICAgY3JlYXRlRGVwbG95bWVudExhbWJkYS5hZGRUb1JvbGVQb2xpY3kobmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgJ2NvZGVkZXBsb3k6R2V0QXBwbGljYXRpb25SZXZpc2lvbicsXG4gICAgICAgICAgJ2NvZGVkZXBsb3k6UmVnaXN0ZXJBcHBsaWNhdGlvblJldmlzaW9uJyxcbiAgICAgICAgXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbXG4gICAgICAgICAgZWNzRGVwbG95bWVudEdyb3VwLmFwcGxpY2F0aW9uLmFwcGxpY2F0aW9uQXJuLFxuICAgICAgICBdLFxuICAgICAgfSkpO1xuICAgICAgY3JlYXRlRGVwbG95bWVudExhbWJkYS5hZGRUb1JvbGVQb2xpY3kobmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgJ2NvZGVkZXBsb3k6Q3JlYXRlRGVwbG95bWVudCcsXG4gICAgICAgICAgJ2NvZGVkZXBsb3k6U3RvcERlcGxveW1lbnQnLFxuICAgICAgICAgICdjb2RlZGVwbG95OkdldERlcGxveW1lbnQnLFxuICAgICAgICBdLFxuICAgICAgICByZXNvdXJjZXM6IFtcbiAgICAgICAgICBlY3NEZXBsb3ltZW50R3JvdXAuZGVwbG95bWVudEdyb3VwQXJuLFxuICAgICAgICBdLFxuICAgICAgfSkpO1xuICAgICAgY3JlYXRlRGVwbG95bWVudExhbWJkYS5hZGRUb1JvbGVQb2xpY3kobmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgJ2NvZGVkZXBsb3k6R2V0RGVwbG95bWVudENvbmZpZycsXG4gICAgICAgIF0sXG4gICAgICAgIHJlc291cmNlczogW1xuICAgICAgICAgIGVjc0RlcGxveW1lbnRHcm91cC5kZXBsb3ltZW50Q29uZmlnLmRlcGxveW1lbnRDb25maWdBcm4sXG4gICAgICAgIF0sXG4gICAgICB9KSk7XG4gICAgICAvLyBjb25zdCBpc0NvbXBsZXRlRGVwbG95bWVudExhbWJkYSA9IG5ldyBub2RlanNsYW1iZGEuTm9kZWpzRnVuY3Rpb24odGhpcywgJ0lzQ29tcGxldGVEZXBsb3ltZW50TGFtYmRhJywge1xuICAgICAgLy8gICBlbnRyeTogJy4vc3JjL2ZhcmdhdGUvY29kZWRlcGxveS1jdXN0b20tcmVzb3VyY2VzL2NyZWF0ZS1kZXBsb3ltZW50LWlzLWNvbXBsZXRlLnRzJyxcbiAgICAgIC8vICAgaGFuZGxlcjogJ2hhbmRsZXInLFxuICAgICAgLy8gICB0aW1lb3V0OiBjZGsuRHVyYXRpb24ubWludXRlcyg1KSxcbiAgICAgIC8vICAgcnVudGltZTogbGFtYmRhLlJ1bnRpbWUuTk9ERUpTXzIwX1gsXG4gICAgICAvLyB9KTtcbiAgICAgIGNvbnN0IGlzQ29tcGxldGVEZXBsb3ltZW50TGFtYmRhID0gbmV3IGxhbWJkYS5GdW5jdGlvbih0aGlzLCAnSXNDb21wbGV0ZURlcGxveW1lbnRMYW1iZGEnLCB7XG4gICAgICAgIGNvZGU6IGxhbWJkYS5Db2RlLmZyb21Bc3NldChqb2luKF9fZGlybmFtZSwgJ2NvZGVkZXBsb3ktY3VzdG9tLXJlc291cmNlcycpKSxcbiAgICAgICAgaGFuZGxlcjogJ2lzLWNvbXBsZXRlLmhhbmRsZXIuaGFuZGxlcicsXG4gICAgICAgIHJ1bnRpbWU6IGxhbWJkYS5SdW50aW1lLk5PREVKU18yMF9YLFxuICAgICAgICBhcmNoaXRlY3R1cmU6IGxhbWJkYS5BcmNoaXRlY3R1cmUuQVJNXzY0LFxuICAgICAgICB0aW1lb3V0OiBjZGsuRHVyYXRpb24ubWludXRlcyg1KSxcbiAgICAgICAgbG9nR3JvdXA6IG5ldyBsb2dzLkxvZ0dyb3VwKHRoaXMsICdJc0NvbXBsZXRlRGVwbG95bWVudExhbWJkYUxvZ0dyb3VwJywge1xuICAgICAgICAgIHJldGVudGlvbjogbG9ncy5SZXRlbnRpb25EYXlzLk9ORV9XRUVLLFxuICAgICAgICB9KSxcbiAgICAgIH0pO1xuICAgICAgaXNDb21wbGV0ZURlcGxveW1lbnRMYW1iZGEuYWRkVG9Sb2xlUG9saWN5KG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICdjb2RlZGVwbG95OkdldERlcGxveW1lbnQnLFxuICAgICAgICBdLFxuICAgICAgICByZXNvdXJjZXM6IFtcbiAgICAgICAgICBlY3NEZXBsb3ltZW50R3JvdXAuZGVwbG95bWVudEdyb3VwQXJuLFxuICAgICAgICBdLFxuICAgICAgfSkpO1xuICAgICAgY29uc3QgY3JlYXRlRGVwbG95bWVudExhbWJkYVByb3ZpZGVyID0gbmV3IGNyLlByb3ZpZGVyKHRoaXMsICdDcmVhdGVEZXBsb3ltZW50UHJvdmlkZXInLCB7XG4gICAgICAgIG9uRXZlbnRIYW5kbGVyOiBjcmVhdGVEZXBsb3ltZW50TGFtYmRhLFxuICAgICAgICBpc0NvbXBsZXRlSGFuZGxlcjogaXNDb21wbGV0ZURlcGxveW1lbnRMYW1iZGEsXG4gICAgICAgIHRvdGFsVGltZW91dDogY2RrLkR1cmF0aW9uLm1pbnV0ZXMoNjApLFxuICAgICAgfSk7XG4gICAgICBsZXQgcnVuTW9uaXRvcmluZ1Rlc3RTdWl0ZVJ1bm5lckxhbWJkYTogbm9kZWpzbGFtYmRhLk5vZGVqc0Z1bmN0aW9uIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICAgICAgaWYgKGJsdWVHcmVlbkRlcGxveW1lbnRDb25maWc/LmNhcGFiaWxpdHlOYW1lcykge1xuICAgICAgICAvLyBydW5Nb25pdG9yaW5nVGVzdFN1aXRlUnVubmVyTGFtYmRhID0gbmV3IG5vZGVqc2xhbWJkYS5Ob2RlanNGdW5jdGlvbih0aGlzLCAnUnVuTW9uaXRvcmluZ1Rlc3RTdWl0ZVJ1bm5lckxhbWJkYScsIHtcbiAgICAgICAgLy8gICBlbnRyeTogJy4vc3JjL2ZhcmdhdGUvY29kZWRlcGxveS1jdXN0b20tcmVzb3VyY2VzL3J1bi1tb25pdG9yaW5nLXRlc3Qtc3VpdGUtcnVubmVyLnRzJyxcbiAgICAgICAgLy8gICBoYW5kbGVyOiAnaGFuZGxlcicsXG4gICAgICAgIC8vICAgdGltZW91dDogY2RrLkR1cmF0aW9uLm1pbnV0ZXMoNSksXG4gICAgICAgIC8vICAgcnVudGltZTogbGFtYmRhLlJ1bnRpbWUuTk9ERUpTXzIwX1gsXG4gICAgICAgIC8vICAgZW52aXJvbm1lbnQ6IHtcbiAgICAgICAgLy8gICAgIENBUEFCSUxJVElFU19OQU1FOiBibHVlR3JlZW5EZXBsb3ltZW50Q29uZmlnLmNhcGFiaWxpdHlOYW1lcy5qb2luKCcsJyksXG4gICAgICAgIC8vICAgICBTVUJORVRTOiB2cGMuc2VsZWN0U3VibmV0cyh7IHN1Ym5ldFR5cGU6IGVjMi5TdWJuZXRUeXBlLlBSSVZBVEVfV0lUSF9FR1JFU1MgfSkuc3VibmV0SWRzLmpvaW4oJywnKSxcbiAgICAgICAgLy8gICB9LFxuICAgICAgICAvLyB9KTtcbiAgICAgICAgcnVuTW9uaXRvcmluZ1Rlc3RTdWl0ZVJ1bm5lckxhbWJkYSA9IG5ldyBsYW1iZGEuRnVuY3Rpb24odGhpcywgJ1J1bk1vbml0b3JpbmdUZXN0U3VpdGVSdW5uZXJMYW1iZGEnLCB7XG4gICAgICAgICAgY29kZTogbGFtYmRhLkNvZGUuZnJvbUFzc2V0KGpvaW4oX19kaXJuYW1lLCAnY29kZWRlcGxveS1jdXN0b20tcmVzb3VyY2VzJykpLFxuICAgICAgICAgIGhhbmRsZXI6ICdydW4tbW9uaXRvcmluZy10ZXN0LXN1aXRlLXJ1bm5lci5oYW5kbGVyJyxcbiAgICAgICAgICBydW50aW1lOiBsYW1iZGEuUnVudGltZS5OT0RFSlNfMjBfWCxcbiAgICAgICAgICBhcmNoaXRlY3R1cmU6IGxhbWJkYS5BcmNoaXRlY3R1cmUuQVJNXzY0LFxuICAgICAgICAgIHRpbWVvdXQ6IGNkay5EdXJhdGlvbi5taW51dGVzKDUpLFxuICAgICAgICAgIGxvZ0dyb3VwOiBuZXcgbG9ncy5Mb2dHcm91cCh0aGlzLCAnUnVuTW9uaXRvcmluZ1Rlc3RTdWl0ZVJ1bm5lckxhbWJkYXJMb2dHcm91cCcsIHtcbiAgICAgICAgICAgIHJldGVudGlvbjogbG9ncy5SZXRlbnRpb25EYXlzLk9ORV9XRUVLLFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgICAgICBDQVBBQklMSVRJRVNfTkFNRTogYmx1ZUdyZWVuRGVwbG95bWVudENvbmZpZy5jYXBhYmlsaXR5TmFtZXMuam9pbignLCcpLFxuICAgICAgICAgICAgU1VCTkVUUzogdnBjLnNlbGVjdFN1Ym5ldHMoeyBzdWJuZXRUeXBlOiBlYzIuU3VibmV0VHlwZS5QUklWQVRFX1dJVEhfRUdSRVNTIH0pLnN1Ym5ldElkcy5qb2luKCcsJyksXG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHJlZ2lvbiA9IGNkay5TdGFjay5vZihzY29wZSkucmVnaW9uO1xuICAgICAgICBjb25zdCBhY2NvdW50ID0gY2RrLlN0YWNrLm9mKHNjb3BlKS5hY2NvdW50O1xuICAgICAgICBydW5Nb25pdG9yaW5nVGVzdFN1aXRlUnVubmVyTGFtYmRhLmFkZFRvUm9sZVBvbGljeShuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgJ2VjczpSdW5UYXNrJyxcbiAgICAgICAgICBdLFxuICAgICAgICAgIHJlc291cmNlczogW1xuICAgICAgICAgICAgYGFybjphd3M6ZWNzOiR7cmVnaW9ufToke2FjY291bnR9OnRhc2stZGVmaW5pdGlvbi9tb25pdG9yaW5nLXRlc3RzdWl0ZS1ydW5uZXIqYCxcbiAgICAgICAgICBdLFxuICAgICAgICB9KSk7XG4gICAgICAgIHJ1bk1vbml0b3JpbmdUZXN0U3VpdGVSdW5uZXJMYW1iZGEuYWRkVG9Sb2xlUG9saWN5KG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAnZWNzOkxpc3RDTHVzdGVycycsXG4gICAgICAgICAgICAnZWNzOkxpc3RUYXNrRGVmaW5pdGlvbnMnLFxuICAgICAgICAgIF0sXG4gICAgICAgICAgcmVzb3VyY2VzOiBbXG4gICAgICAgICAgICAnKicsXG4gICAgICAgICAgXSxcbiAgICAgICAgfSkpO1xuICAgICAgICBydW5Nb25pdG9yaW5nVGVzdFN1aXRlUnVubmVyTGFtYmRhLmFkZFRvUm9sZVBvbGljeShuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgYWN0aW9uczogWydpYW06UGFzc1JvbGUnXSxcbiAgICAgICAgICByZXNvdXJjZXM6IFtgYXJuOmF3czppYW06OiR7YWNjb3VudH06cm9sZS9tb25pdG9yaW5nLXRlc3RzdWl0ZSpgXSxcbiAgICAgICAgfSkpO1xuICAgICAgfVxuXG4gICAgICBuZXcgY2RrLkN1c3RvbVJlc291cmNlKHRoaXMsICdDcmVhdGVEZXBsb3ltZW50Jywge1xuICAgICAgICBzZXJ2aWNlVG9rZW46IGNyZWF0ZURlcGxveW1lbnRMYW1iZGFQcm92aWRlci5zZXJ2aWNlVG9rZW4sXG4gICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICBBcHBsaWNhdGlvbk5hbWU6IGVjc0RlcGxveW1lbnRHcm91cC5hcHBsaWNhdGlvbi5hcHBsaWNhdGlvbk5hbWUsXG4gICAgICAgICAgRGVwbG95bWVudEdyb3VwTmFtZTogZWNzRGVwbG95bWVudEdyb3VwLmRlcGxveW1lbnRHcm91cE5hbWUsXG4gICAgICAgICAgVGFza0RlZmluaXRpb25Bcm46IHRoaXMudGFza0RlZmluaXRpb24udGFza0RlZmluaXRpb25Bcm4sXG4gICAgICAgICAgQ29udGFpbmVyTmFtZTogc2VydmljZU5hbWUsXG4gICAgICAgICAgQ29udGFpbmVyUG9ydDogY29udGFpbmVyUG9ydCxcbiAgICAgICAgICBBZnRlckFsbG93VGVzdFRyYWZmaWNIb29rOiBydW5Nb25pdG9yaW5nVGVzdFN1aXRlUnVubmVyTGFtYmRhPy5mdW5jdGlvbkFybixcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuXG4gICAgfVxuICB9XG59XG5cbmNsYXNzIERlbnlMaXN0ZWRLZXlWYWxpZGF0b3IgaW1wbGVtZW50cyBjb25zdHJ1Y3RzLklWYWxpZGF0aW9uIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBkZW55TGlzdDogc3RyaW5nW10sXG4gICAgcHJpdmF0ZSByZWFkb25seSBkaWN0OiB7IFtrZXk6IHN0cmluZ106IGFueSB9IHwgdW5kZWZpbmVkLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbWVzc2FnZUdlbmVyYXRvcjogKGtleU5hbWU6IHN0cmluZykgPT4gc3RyaW5nLFxuICApIHt9XG5cbiAgdmFsaWRhdGUoKTogc3RyaW5nW10ge1xuICAgIGlmICghdGhpcy5kaWN0KSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0OiBzdHJpbmdbXSA9IFtdO1xuICAgIHRoaXMuZGVueUxpc3QuZm9yRWFjaCgoa2V5TmFtZSkgPT4ge1xuICAgICAgaWYgKHRoaXMuZGljdCAmJiBrZXlOYW1lIGluIHRoaXMuZGljdCkge1xuICAgICAgICByZXN1bHQucHVzaCh0aGlzLm1lc3NhZ2VHZW5lcmF0b3Ioa2V5TmFtZSkpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuXG5jbGFzcyBDbHVzdGVyVnBjVmFsaWRhdG9yIGltcGxlbWVudHMgY29uc3RydWN0cy5JVmFsaWRhdGlvbiB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdnBjOiBlYzIuSVZwYyxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNsdXN0ZXI/OiBlY3MuSUNsdXN0ZXIsXG4gICkge31cblxuICB2YWxpZGF0ZSgpOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgcmVzdWx0ID0gW107XG4gICAgaWYgKHRoaXMuY2x1c3RlciAmJiB0aGlzLmNsdXN0ZXIudnBjLnZwY0lkICE9PSB0aGlzLnZwYy52cGNJZCkge1xuICAgICAgcmVzdWx0LnB1c2goXG4gICAgICAgIGBUaGUgVlBDIHByb3ZpZGVkIGluIHRoZSBjbHVzdGVyICgke3RoaXMuY2x1c3Rlci52cGMubm9kZS5pZH0pIE1VU1QgbWF0Y2ggdGhlIFZQQyBwcm92aWRlZCBhcyBhcmd1bWVudCAoJHt0aGlzLnZwYy5ub2RlLmlkfSkuYCxcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbn1cbiJdfQ==
|
|
419
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmlvLWZhcmdhdGUtc2VydmljZS1ibHVlLWdyZWVuLWFscGhhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2ZhcmdhdGUvcmlvLWZhcmdhdGUtc2VydmljZS1ibHVlLWdyZWVuLWFscGhhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsK0JBQTRCO0FBQzVCLG1DQUFtQztBQUNuQyx5REFBeUQ7QUFDekQsMkNBQTJDO0FBQzNDLDJDQUEyQztBQUMzQyxnRUFBZ0U7QUFDaEUsMkNBQTJDO0FBQzNDLGlEQUFpRDtBQUVqRCw2Q0FBNkM7QUFDN0MsMkNBQTJDO0FBQzNDLG1EQUFtRDtBQUNuRCx5Q0FBeUM7QUFDekMscUNBQXFDO0FBQ3JDLCtEQUE0SztBQUM1SyxxQ0FBa0M7QUFnRmxDLE1BQWEsK0JBQ1gsU0FBUSxVQUFVLENBQUMsU0FBUztJQWtENUIsWUFDRSxLQUEyQixFQUMzQixFQUFVLEVBQ1YsS0FBMkM7UUFFM0MsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQWxDRix3Q0FBbUMsR0FBYSxFQUFFLENBQUM7UUFDbkQsZ0NBQTJCLEdBQUcsRUFBRSxDQUFDO1FBQ2pDLDZDQUF3QyxHQUFHLEdBQUcsQ0FBQztRQUMvQyxzQ0FBaUMsR0FBRyxJQUFJLENBQUM7UUFDekMscUNBQWdDLEdBQy9DLHdDQUFrQixDQUFDLGdCQUFnQixDQUFDO1FBQ3JCLDZDQUF3QyxHQUN2RCx3Q0FBa0IsQ0FBQyxJQUFJLENBQUM7UUFDVCxpQ0FBNEIsR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN2RCx1QkFBa0IsR0FBRyxTQUFTLENBQUM7UUFDL0IsZ0NBQTJCLEdBQUcsUUFBUSxDQUFDO1FBRXZDLG1CQUFjLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLGdDQUEyQixHQUFHLEVBQUUsQ0FBQztRQUVqQywrQkFBMEIsR0FDekMsbUVBQW1FLENBQUM7UUFDckQsOEJB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Q0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgam9pbiB9IGZyb20gJ3BhdGgnO1xuaW1wb3J0ICogYXMgY2RrIGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCAqIGFzIGNvZGVkZXBsb3kgZnJvbSAnYXdzLWNkay1saWIvYXdzLWNvZGVkZXBsb3knO1xuaW1wb3J0ICogYXMgZWMyIGZyb20gJ2F3cy1jZGstbGliL2F3cy1lYzInO1xuaW1wb3J0ICogYXMgZWNzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1lY3MnO1xuaW1wb3J0ICogYXMgZWxidjIgZnJvbSAnYXdzLWNkay1saWIvYXdzLWVsYXN0aWNsb2FkYmFsYW5jaW5ndjInO1xuaW1wb3J0ICogYXMgaWFtIGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuaW1wb3J0ICogYXMgbGFtYmRhIGZyb20gJ2F3cy1jZGstbGliL2F3cy1sYW1iZGEnO1xuaW1wb3J0ICogYXMgbm9kZWpzbGFtYmRhIGZyb20gJ2F3cy1jZGstbGliL2F3cy1sYW1iZGEtbm9kZWpzJztcbmltcG9ydCAqIGFzIGxvZ3MgZnJvbSAnYXdzLWNkay1saWIvYXdzLWxvZ3MnO1xuaW1wb3J0ICogYXMgc3NtIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zc20nO1xuaW1wb3J0ICogYXMgY3IgZnJvbSAnYXdzLWNkay1saWIvY3VzdG9tLXJlc291cmNlcyc7XG5pbXBvcnQgKiBhcyBjb25zdHJ1Y3RzIGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0ICogYXMgZGF0YWRvZyBmcm9tICcuL2RhdGFkb2cnO1xuaW1wb3J0IHsgRnJhbWV3b3JrLCBDb250YWluZXJEZWZpbml0aW9uT3B0aW9ucywgRmFyZ2F0ZVRhc2tEZWZpbml0aW9uUHJvcHMsIExvYWRCYWxhbmNlck9wdGlvbnMsIERhdGFkb2dJbnRlZ3JhdGlvblByb3BzLCBEYXRhRG9nTG9nZ2luZ01vZGUgfSBmcm9tICcuL3Jpby1mYXJnYXRlLXNlcnZpY2UnO1xuaW1wb3J0IHsgU3ByaW5nIH0gZnJvbSAnLi9zcHJpbmcnO1xuXG4vKipcbiAqIEZhcmdhdGUgVGFzayBEZWZpbml0aW9uIFByb3BlcnRpZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmlvRmFyZ2F0ZVNlcnZpY2VCbHVlR3JlZW5BbHBoYVByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBzdGFnZSBvZiB0aGUgc2VydmljZSwgZS5nLiAncHJvZCcuXG4gICAqL1xuICByZWFkb25seSBzdGFnZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgTmFtZSBvZiB0aGUgc2VydmljZS5cbiAgICovXG4gIHJlYWRvbmx5IHNlcnZpY2VOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB2ZXJzaW9uIG9mIHRoZSBzZXJ2aWNlLCBlLmcuIHRoZSBnaXQgaGFzaCBvZiB0aGUgY29ycmVzcG9uZGluZyBjb21taXQuXG4gICAqL1xuICByZWFkb25seSB2ZXJzaW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBmcmFtZXdvcmtzIGluIHVzZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0VmFsdWUgLSBObyBmcmFtZXdvcmtzLlxuICAgKi9cbiAgcmVhZG9ubHkgZnJhbWV3b3Jrcz86IEZyYW1ld29ya1tdO1xuXG4gIC8qKlxuICAgKiBUaGUgVlBDIG9mIHRoZSBzZXJ2aWNlJ3MgZWNzLkNsdXN0ZXIgaWYgbm8gY2x1c3RlciBpcyBleHBsaWNpdGx5IHBhc3NlZCBhcyBwcm9wLlxuICAgKi9cbiAgcmVhZG9ubHkgdnBjOiBlYzIuSVZwYztcblxuICAvKipcbiAgICogVGhlIEZhcmdhdGUgY2x1c3RlciB0byBydW4gdGhlIHNlcnZpY2UgaW4uXG4gICAqIElmIG5vdCBudWxsLCB0aGUgY2x1c3Rlci52cGMgTVVTVCBtYXRjaCB0aGUgdnBjIHByb3ZpZGVkIGFzIGRpcmVjdCBhcmd1bWVudC5cbiAgICpcbiAgICogQGRlZmF1bHRWYWx1ZSAtIENyZWF0ZSBhIG5ldyBGYXJnYXRlIGNsdXN0ZXIgd2l0aCBkZWZhdWx0IHByb3BlcnRpZXNcbiAgICovXG4gIHJlYWRvbmx5IGNsdXN0ZXI/OiBlY3MuSUNsdXN0ZXI7XG5cbiAgLyoqXG4gICAqIENvbnRhaW5lciBkZWZpbml0aW9uIG9wdGlvbnMgbGlrZSBpbWFnZSwgY3B1LCBtZW1vcnkuXG4gICAqL1xuICByZWFkb25seSBjb250YWluZXJEZWZpbml0aW9uT3B0aW9uOiBDb250YWluZXJEZWZpbml0aW9uT3B0aW9ucztcblxuICAvKipcbiAgICogRmFyZ2F0ZSBUYXNrIERlZmluaXRpb24gUHJvcGVydGllcy5cbiAgICovXG4gIHJlYWRvbmx5IGZhcmdhdGVPcHRpb25zOiBGYXJnYXRlVGFza0RlZmluaXRpb25Qcm9wcztcblxuICAvKipcbiAgICogTG9hZGJhbGFuY2VyIG9wdGlvbnMuXG4gICAqL1xuICByZWFkb25seSBsb2FkQmFsYW5jZXJPcHRpb25zPzogTG9hZEJhbGFuY2VyT3B0aW9ucztcblxuICAvKipcbiAgICogRGF0YWRvZyBpbnRlZ3JhdGlvbiBwcm9wZXJ0aWVzXG4gICAqL1xuICByZWFkb25seSBkYXRhZG9nT3B0aW9ucz86IERhdGFkb2dJbnRlZ3JhdGlvblByb3BzO1xuXG4gIC8qKlxuICAgKiBCbHVlIGdyZWVuIGRlcGxveW1lbnQgY29uZmlndXJhdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgYmx1ZUdyZWVuRGVwbG95bWVudENvbmZpZz86IEJsdWVHcmVlbkRlcGxveW1lbnRDb25maWc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmx1ZUdyZWVuRGVwbG95bWVudENvbmZpZyB7XG4gIC8qKlxuICAgICAqIFRoZSB0YXJnZXQgZ3JvdXAgdG8gYXNzb2NpYXRlIHdpdGggdGhlIHJlcGxhY2VtZW50IHRhc2sgc2V0IGZvciB0ZXN0aW5nIGJlZm9yZSBwcm9tb3RpbmcgdHJhZmZpYyB0byBwcm9kdWN0aW9uLlxuICAgICAqIEBkZWZhdWx0IC0gTm8gdGFyZ2V0IGdyb3VwLlxuICAgICAqL1xuICByZWFkb25seSB0ZXN0TGlzdGVuZXI/OiBlbGJ2Mi5JQXBwbGljYXRpb25MaXN0ZW5lcjtcblxuICAvKipcbiAgICAgKiBOYW1lIG9mIHRoZSBjYXBhYmlsaXRpZXMgdG8gcnVuIHdpdGggdGhlIG1vbml0b3JpbmcgdGVzdCBzdWl0ZSBydW5uZXIgdGVzdGluZ1xuICAgICAqL1xuICByZWFkb25seSBjYXBhYmlsaXR5TmFtZXM/OiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGNsYXNzIFJpb0ZhcmdhdGVTZXJ2aWNlQmx1ZUdyZWVuQWxwaGFcbiAgZXh0ZW5kcyBjb25zdHJ1Y3RzLkNvbnN0cnVjdFxuICBpbXBsZW1lbnRzIGVjMi5JQ29ubmVjdGFibGUge1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBERF9FTlZfREVOWV9MSVNUID0gW1xuICAgICdERF9FTlYnLFxuICAgICdERF9UQUdTJyxcbiAgICAnRERfU0VSVklDRScsXG4gICAgJ0REX1ZFUlNJT04nLFxuICAgICdERF9MT0dTX0lOSkVDVElPTicsXG4gIF07XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgRERfVEFHX0RFTllfTElTVCA9IFtcbiAgICAnZW52JyxcbiAgICAnc2VydmljZScsXG4gICAgJ3ZlcnNpb24nLFxuICAgICdhY2NvdW50X2lkJyxcbiAgICAnYWNjb3VudF9uYW1lJyxcbiAgICAncmVnaW9uJyxcbiAgICAndGVhbScsXG4gICAgJ3RlYW1faWRlbnRpZmllcicsXG4gIF07XG5cbiAgcHJpdmF0ZSByZWFkb25seSBERUZBVUxUX0FQTV9HRVRfRU5EUE9JTlRTX1RPX0lHTk9SRTogc3RyaW5nW10gPSBbXTtcbiAgcHJpdmF0ZSByZWFkb25seSBERUZBVUxUX0RBVEFET0dfU0lERUNBUl9DUFUgPSA2NDtcbiAgcHJpdmF0ZSByZWFkb25seSBERUZBVUxUX0RBVEFET0dfU0lERUNBUl9NRU1PUllfTElNSVRfTUlCID0gMTI4O1xuICBwcml2YXRlIHJlYWRvbmx5IERFRkFVTFRfREFUQURPR19TSURFQ0FSX0VTU0VOVElBTCA9IHRydWU7XG4gIHByaXZhdGUgcmVhZG9ubHkgREVGQVVMVF9MT0dHSU5HX01PREVfRk9SX1NFUlZJQ0UgPVxuICAgIERhdGFEb2dMb2dnaW5nTW9kZS5GT1JXQVJERVJfTEFNQkRBO1xuICBwcml2YXRlIHJlYWRvbmx5IERFRkFVTFRfTE9HR0lOR19NT0RFX0ZPUl9EQVRBRE9HX1NJREVDQVIgPVxuICAgIERhdGFEb2dMb2dnaW5nTW9kZS5OT05FO1xuICBwcml2YXRlIHJlYWRvbmx5IERFRkFVTFRfREVSRUdJU1RSQVRJT05fREVMQVkgPSBjZGsuRHVyYXRpb24uc2Vjb25kcyg1KTtcbiAgcHJpdmF0ZSByZWFkb25seSBERUZBVUxUX1NMT1dfU1RBUlQgPSB1bmRlZmluZWQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgREVGQVVMVF9EQVRBRE9HX1NJREVDQVJfVEFHID0gJ2xhdGVzdCc7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBMT0dfUk9VVEVSX0NQVSA9IDY0O1xuICBwcml2YXRlIHJlYWRvbmx5IExPR19ST1VURVJfTUVNT1JZX0xJTUlUX01JQiA9IDY0O1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgRklSRUxFTlNfQ09ORklHX0JVQ0tFVF9BUk4gPVxuICAgICdhcm46YXdzOnMzOjo6NTc3MTQ2ODk3Nzg1LWV1LXdlc3QtMS1maXJlbGVucy1jb25maWd1cmF0aW9uLWJ1Y2tldCc7XG4gIHByaXZhdGUgcmVhZG9ubHkgRklSRUxFTlNfQ09ORklHX0ZJTEVfUEFUSCA9ICcvcGFyc2UtanNvbi5jb25mJztcblxuICByZWFkb25seSBzZXJ2aWNlQ29udGFpbmVyRGVmaW5pdGlvbjogZWNzLkNvbnRhaW5lckRlZmluaXRpb247XG4gIHJlYWRvbmx5IGRhdGFkb2dTaWRlQ2FyQ29udGFpbmVyRGVmaW5pdGlvbjogZWNzLkNvbnRhaW5lckRlZmluaXRpb247XG4gIHJlYWRvbmx5IGxvZ1JvdXRlckNvbnRhaW5lckRlZmluaXRpb24/OiBlY3MuQ29udGFpbmVyRGVmaW5pdGlvbjtcbiAgcmVhZG9ubHkgdGFza0RlZmluaXRpb246IGVjcy5GYXJnYXRlVGFza0RlZmluaXRpb247XG5cbiAgcmVhZG9ubHkgY29ubmVjdGlvbnM6IGVjMi5Db25uZWN0aW9ucztcbiAgcmVhZG9ubHkgc2VydmljZTogZWNzLkZhcmdhdGVTZXJ2aWNlO1xuICByZWFkb25seSBibHVlVGFyZ2V0R3JvdXA6IGVsYnYyLkFwcGxpY2F0aW9uVGFyZ2V0R3JvdXAgfCB1bmRlZmluZWQ7XG4gIHJlYWRvbmx5IGdyZWVuVGFyZ2V0R3JvdXA6IGNkay5hd3NfZWxhc3RpY2xvYWRiYWxhbmNpbmd2Mi5BcHBsaWNhdGlvblRhcmdldEdyb3VwIHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHNjb3BlOiBjb25zdHJ1Y3RzLkNvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIHByb3BzOiBSaW9GYXJnYXRlU2VydmljZUJsdWVHcmVlbkFscGhhUHJvcHMsXG4gICkge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBjb25zdCB7XG4gICAgICBsb2FkQmFsYW5jZXJPcHRpb25zLFxuICAgICAgdnBjLFxuICAgICAgY2x1c3RlcixcbiAgICAgIGZhcmdhdGVPcHRpb25zLFxuICAgICAgZGF0YWRvZ09wdGlvbnMsXG4gICAgICBzZXJ2aWNlTmFtZSxcbiAgICAgIGNvbnRhaW5lckRlZmluaXRpb25PcHRpb24sXG4gICAgICBzdGFnZSxcbiAgICAgIHZlcnNpb24sXG4gICAgICBmcmFtZXdvcmtzLFxuICAgICAgYmx1ZUdyZWVuRGVwbG95bWVudENvbmZpZyxcbiAgICB9ID0gcHJvcHM7XG5cbiAgICB0aGlzLm5vZGUuYWRkVmFsaWRhdGlvbihcbiAgICAgIG5ldyBEZW55TGlzdGVkS2V5VmFsaWRhdG9yKFxuICAgICAgICBSaW9GYXJnYXRlU2VydmljZUJsdWVHcmVlbkFscGhhLkREX0VOVl9ERU5ZX0xJU1QsXG4gICAgICAgIHByb3BzLmNvbnRhaW5lckRlZmluaXRpb25PcHRpb24uZW52aXJvbm1lbnQsXG4gICAgICAgIChpdCkgPT5cbiAgICAgICAgICBgRW52aXJvbm1lbnQgJHtpdH0gaXMgbm90IGFsbG93ZWQgdG8gYmUgc2V0LiBUaGlzIHZhbHVlIHdpbGwgYmUgaW5mZXJyZWQgZnJvbSB0aGUgYWNjb3VudCBvciBvdGhlciBwcm9wZXJ0aWVzLmAsXG4gICAgICApLFxuICAgICk7XG4gICAgdGhpcy5ub2RlLmFkZFZhbGlkYXRpb24oXG4gICAgICBuZXcgRGVueUxpc3RlZEtleVZhbGlkYXRvcihcbiAgICAgICAgUmlvRmFyZ2F0ZVNlcnZpY2VCbHVlR3JlZW5BbHBoYS5ERF9UQUdfREVOWV9MSVNULFxuICAgICAgICBwcm9wcy5kYXRhZG9nT3B0aW9ucz8uYWRkaXRpb25hbFRhZ3MsXG4gICAgICAgIChpdCkgPT5cbiAgICAgICAgICBgVGFnICR7aXR9IGlzIG5vdCBhbGxvd2VkIHRvIGJlIHNldC4gVGhpcyB2YWx1ZSB3aWxsIGJlIGluZmVycmVkIGZyb20gdGhlIGFjY291bnQgb3Igb3RoZXIgcHJvcGVydGllcy5gLFxuICAgICAgKSxcbiAgICApO1xuXG4gICAgdGhpcy5ub2RlLmFkZFZhbGlkYXRpb24obmV3IENsdXN0ZXJWcGNWYWxpZGF0b3IocHJvcHMudnBjLCBwcm9wcy5jbHVzdGVyKSk7XG5cbiAgICBjb25zdCBmYXJnYXRlQ2x1c3RlciA9XG4gICAgICBjbHVzdGVyID8/XG4gICAgICBuZXcgZWNzLkNsdXN0ZXIodGhpcywgJ0NsdXN0ZXInLCB7XG4gICAgICAgIHZwYzogdnBjLFxuICAgICAgfSk7XG4gICAgdGhpcy50YXNrRGVmaW5pdGlvbiA9IG5ldyBlY3MuRmFyZ2F0ZVRhc2tEZWZpbml0aW9uKFxuICAgICAgdGhpcyxcbiAgICAgICdUYXNrRGVmaW5pdGlvbicsXG4gICAgICB7XG4gICAgICAgIGNwdTogZmFyZ2F0ZU9wdGlvbnMuY3B1LFxuICAgICAgICBtZW1vcnlMaW1pdE1pQjogZmFyZ2F0ZU9wdGlvbnMubWVtb3J5TGltaXRNaUIsXG4gICAgICAgIHJ1bnRpbWVQbGF0Zm9ybToge1xuICAgICAgICAgIGNwdUFyY2hpdGVjdHVyZTpcbiAgICAgICAgICAgIGZhcmdhdGVPcHRpb25zLnJ1bnRpbWVQbGF0Zm9ybT8uY3B1QXJjaGl0ZWN0dXJlID8/XG4gICAgICAgICAgICBlY3MuQ3B1QXJjaGl0ZWN0dXJlLlg4Nl82NCxcbiAgICAgICAgICBvcGVyYXRpbmdTeXN0ZW1GYW1pbHk6XG4gICAgICAgICAgICBmYXJnYXRlT3B0aW9ucy5ydW50aW1lUGxhdGZvcm0/Lm9wZXJhdGluZ1N5c3RlbUZhbWlseSA/P1xuICAgICAgICAgICAgZWNzLk9wZXJhdGluZ1N5c3RlbUZhbWlseS5MSU5VWCxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgKTtcbiAgICBjb25zdCBhY2NvdW50TmFtZSA9IHNzbS5TdHJpbmdQYXJhbWV0ZXIuZnJvbVN0cmluZ1BhcmFtZXRlck5hbWUoXG4gICAgICB0aGlzLFxuICAgICAgJ0FjY291bnROYW1lJyxcbiAgICAgICcvY29uZmlnL2FjY291bnQvbmFtZScsXG4gICAgKS5zdHJpbmdWYWx1ZTtcbiAgICBjb25zdCB0ZWFtTmFtZSA9IHNzbS5TdHJpbmdQYXJhbWV0ZXIuZnJvbVN0cmluZ1BhcmFtZXRlck5hbWUoXG4gICAgICB0aGlzLFxuICAgICAgJ1RlYW1OYW1lJyxcbiAgICAgICcvY29uZmlnL3RlYW0vbmFtZScsXG4gICAgKS5zdHJpbmdWYWx1ZTtcbiAgICBjb25zdCB0ZWFtSWRlbnRpZmllciA9IHNzbS5TdHJpbmdQYXJhbWV0ZXIuZnJvbVN0cmluZ1BhcmFtZXRlck5hbWUoXG4gICAgICB0aGlzLFxuICAgICAgJ1RlYW1JZGVudGlmaWVyJyxcbiAgICAgICcvY29uZmlnL3RlYW0vaWRlbnRpZmllcicsXG4gICAgKS5zdHJpbmdWYWx1ZTtcblxuICAgIGNvbnN0IGRhdGFkb2dTaXRlID0gc3NtLlN0cmluZ1BhcmFtZXRlci5mcm9tU3RyaW5nUGFyYW1ldGVyTmFtZShcbiAgICAgIHRoaXMsXG4gICAgICAnRGF0YWRvZ1NpdGUnLFxuICAgICAgJy9yaW8vY29uZmlnL2RhdGFkb2ctaW50ZWdyYXRpb24vc2l0ZScsXG4gICAgKS5zdHJpbmdWYWx1ZTtcbiAgICBjb25zdCBkYXRhZG9nQXBpS2V5UGFyYW1ldGVyID0gc3NtLlN0cmluZ1BhcmFtZXRlci5mcm9tU3RyaW5nUGFyYW1ldGVyTmFtZShcbiAgICAgIHRoaXMsXG4gICAgICAnRGF0YWRvZ0FwaUtleScsXG4gICAgICAnL3Jpby9jb25maWcvZGF0YWRvZy1pbnRlZ3JhdGlvbi9hcGkta2V5JyxcbiAgICApO1xuXG4gICAgY29uc3QgZGF0YWRvZ1NpZGVjYXJDcHUgPVxuICAgICAgZGF0YWRvZ09wdGlvbnM/LmNwdSA/PyB0aGlzLkRFRkFVTFRfREFUQURPR19TSURFQ0FSX0NQVTtcbiAgICBjb25zdCBkYXRhZG9nU2lkZWNhck1lbW9yeU1pQiA9XG4gICAgICBkYXRhZG9nT3B0aW9ucz8ubWVtb3J5TGltaXRNaUIgPz9cbiAgICAgIHRoaXMuREVGQVVMVF9EQVRBRE9HX1NJREVDQVJfTUVNT1JZX0xJTUlUX01JQjtcbiAgICBjb25zdCBkYXRhZG9nU2lkZWNhckVzc2VudGlhbCA9XG4gICAgICBkYXRhZG9nT3B0aW9ucz8uZGF0YWRvZ1NpZGVjYXJFc3NlbnRpYWwgPz9cbiAgICAgIHRoaXMuREVGQVVMVF9EQVRBRE9HX1NJREVDQVJfRVNTRU5USUFMO1xuXG4gICAgY29uc3QgbG9nZ2luZ01vZGVGb3JTZXJ2aWNlID1cbiAgICAgIGRhdGFkb2dPcHRpb25zPy5sb2dnaW5nTW9kZUZvclNlcnZpY2UgPz9cbiAgICAgIHRoaXMuREVGQVVMVF9MT0dHSU5HX01PREVfRk9SX1NFUlZJQ0U7XG4gICAgY29uc3QgbG9nZ2luZ01vZGVGb3JEYXRhZG9nQWdlbnQgPVxuICAgICAgZGF0YWRvZ09wdGlvbnM/LmxvZ2dpbmdNb2RlRm9yRGF0YWRvZ0FnZW50ID8/XG4gICAgICB0aGlzLkRFRkFVTFRfTE9HR0lOR19NT0RFX0ZPUl9EQVRBRE9HX1NJREVDQVI7XG4gICAgY29uc3QgZmlyZUxlbnNMb2dSb3V0ZXJSZXF1aXJlZCA9XG4gICAgICBsb2dnaW5nTW9kZUZvclNlcnZpY2UgPT09IERhdGFEb2dMb2dnaW5nTW9kZS5BV1NfRklSRV9MRU5TIHx8XG4gICAgICBsb2dnaW5nTW9kZUZvckRhdGFkb2dBZ2VudCA9PT0gRGF0YURvZ0xvZ2dpbmdNb2RlLkFXU19GSVJFX0xFTlM7XG5cbiAgICBsZXQgc2VydmljZUNvbnRhaW5lckNwdVVuaXRzO1xuICAgIGxldCBzZXJ2aWNlQ29udGFpbmVyTWVtb3J5TGltaXRNaUI7XG5cbiAgICBpZiAoZmlyZUxlbnNMb2dSb3V0ZXJSZXF1aXJlZCkge1xuICAgICAgc2VydmljZUNvbnRhaW5lckNwdVVuaXRzID1cbiAgICAgICAgZmFyZ2F0ZU9wdGlvbnMuY3B1IC0gZGF0YWRvZ1NpZGVjYXJDcHUgLSB0aGlzLkxPR19ST1VURVJfQ1BVO1xuICAgICAgc2VydmljZUNvbnRhaW5lck1lbW9yeUxpbWl0TWlCID1cbiAgICAgICAgZmFyZ2F0ZU9wdGlvbnMubWVtb3J5TGltaXRNaUIgLVxuICAgICAgICBkYXRhZG9nU2lkZWNhck1lbW9yeU1pQiAtXG4gICAgICAgIHRoaXMuTE9HX1JPVVRFUl9NRU1PUllfTElNSVRfTUlCO1xuICAgICAgZGF0YWRvZy5hZGRGaXJlbGVuc0NvbmZpZ1VwbG9hZEZyb21TM1Blcm1pc3Npb25zKHtcbiAgICAgICAgdGFza0RlZmluaXRpb246IHRoaXMudGFza0RlZmluaXRpb24sXG4gICAgICAgIGZpcmVsZW5zQ29uZmlnQnVja2V0QXJuOiB0aGlzLkZJUkVMRU5TX0NPTkZJR19CVUNLRVRfQVJOLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNlcnZpY2VDb250YWluZXJDcHVVbml0cyA9IGZhcmdhdGVPcHRpb25zLmNwdSAtIGRhdGFkb2dTaWRlY2FyQ3B1O1xuICAgICAgc2VydmljZUNvbnRhaW5lck1lbW9yeUxpbWl0TWlCID1cbiAgICAgICAgZmFyZ2F0ZU9wdGlvbnMubWVtb3J5TGltaXRNaUIgLSBkYXRhZG9nU2lkZWNhck1lbW9yeU1pQjtcbiAgICB9XG4gICAgdGhpcy5zZXJ2aWNlQ29udGFpbmVyRGVmaW5pdGlvbiA9IHRoaXMudGFza0RlZmluaXRpb24uYWRkQ29udGFpbmVyKFxuICAgICAgc2VydmljZU5hbWUsXG4gICAgICB7XG4gICAgICAgIGltYWdlOiBjb250YWluZXJEZWZpbml0aW9uT3B0aW9uLmltYWdlLFxuICAgICAgICBjcHU6IHNlcnZpY2VDb250YWluZXJDcHVVbml0cyxcbiAgICAgICAgbWVtb3J5TGltaXRNaUI6IHNlcnZpY2VDb250YWluZXJNZW1vcnlMaW1pdE1pQixcbiAgICAgICAgZW52aXJvbm1lbnQ6IHtcbiAgICAgICAgICAuLi5kYXRhZG9nLmdldEZhcmdhdGVDb250YWluZXJFbnZpcm9ubWVudFZhcmlhYmxlcyh7XG4gICAgICAgICAgICBzY29wZTogdGhpcyxcbiAgICAgICAgICAgIHN0YWdlLFxuICAgICAgICAgICAgc2VydmljZU5hbWUsXG4gICAgICAgICAgICB2ZXJzaW9uLFxuICAgICAgICAgICAgYWNjb3VudE5hbWUsXG4gICAgICAgICAgICB0ZWFtTmFtZSxcbiAgICAgICAgICAgIHRlYW1JZGVudGlmaWVyLFxuICAgICAgICAgICAgYWRkaXRpb25hbFRhZ3M6IGRhdGFkb2dPcHRpb25zPy5hZGRpdGlvbmFsVGFncyxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICAuLi5jb250YWluZXJEZWZpbml0aW9uT3B0aW9uLmVudmlyb25tZW50LFxuICAgICAgICB9LFxuICAgICAgICBkb2NrZXJMYWJlbHM6IHtcbiAgICAgICAgICAuLi5kYXRhZG9nLmdldEZhcmdhdGVEb2NrZXJMYWJlbHMoeyBzdGFnZSwgc2VydmljZU5hbWUsIHZlcnNpb24gfSksXG4gICAgICAgIH0sXG4gICAgICAgIGhlYWx0aENoZWNrOiBjb250YWluZXJEZWZpbml0aW9uT3B0aW9uLmhlYWx0aENoZWNrLFxuICAgICAgICBsb2dnaW5nOiBkYXRhZG9nLnNldHVwTG9nZ2luZyh7XG4gICAgICAgICAgc2NvcGUsXG4gICAgICAgICAgYWNjb3VudE5hbWUsXG4gICAgICAgICAgdGVhbU5hbWUsXG4gICAgICAgICAgdGVhbUlkZW50aWZpZXIsXG4gICAgICAgICAgc3RhZ2UsXG4gICAgICAgICAgc2VydmljZU5hbWUsXG4gICAgICAgICAgdmVyc2lvbixcbiAgICAgICAgICBkYXRhZG9nQXBpS2V5UGFyYW1ldGVyLFxuICAgICAgICAgIGRhdGFkb2dMb2dnaW5nTW9kZTogbG9nZ2luZ01vZGVGb3JTZXJ2aWNlLFxuICAgICAgICAgIGRhdGFkb2dTaXRlLFxuICAgICAgICAgIGNvbnRhaW5lclR5cGU6ICdzZXJ2aWNlJyxcbiAgICAgICAgICBhZGRpdGlvbmFsVGFnczogZGF0YWRvZ09wdGlvbnM/LmFkZGl0aW9uYWxUYWdzLFxuICAgICAgICB9KSxcbiAgICAgICAgc2VjcmV0czogY29udGFpbmVyRGVmaW5pdGlvbk9wdGlvbi5zZWNyZXRzLFxuICAgICAgfSxcbiAgICApO1xuXG4gICAgaWYgKGZyYW1ld29ya3M/LmluY2x1ZGVzKEZyYW1ld29yay5TUFJJTkcpKSB7XG4gICAgICBTcHJpbmcuYWxsb3dQYXJhbWV0ZXJTdG9yZUFjY2Vzc0ZvclNwcmluZ0Nsb3VkQXdzKFxuICAgICAgICB0aGlzLFxuICAgICAgICBzZXJ2aWNlTmFtZSxcbiAgICAgICAgdGhpcy50YXNrRGVmaW5pdGlvbi50YXNrUm9sZSxcbiAgICAgICk7XG4gICAgICBTcHJpbmcuYWxsb3dTZWNyZXRzTWFuYWdlckFjY2Vzc0ZvclNwcmluZ0Nsb3VkQXdzKFxuICAgICAgICB0aGlzLFxuICAgICAgICBzZXJ2aWNlTmFtZSxcbiAgICAgICAgdGhpcy50YXNrRGVmaW5pdGlvbi50YXNrUm9sZSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKGZpcmVMZW5zTG9nUm91dGVyUmVxdWlyZWQpIHtcbiAgICAgIHRoaXMubG9nUm91dGVyQ29udGFpbmVyRGVmaW5pdGlvbiA9IGRhdGFkb2cuYWRkRmlyZUxlbnNMb2dSb3V0ZXIoe1xuICAgICAgICB0YXNrRGVmaW5pdGlvbjogdGhpcy50YXNrRGVmaW5pdGlvbixcbiAgICAgICAgY3B1OiB0aGlzLkxPR19ST1VURVJfQ1BVLFxuICAgICAgICBtZW1vcnlMaW1pdE1pQjogdGhpcy5MT0dfUk9VVEVSX01FTU9SWV9MSU1JVF9NSUIsXG4gICAgICAgIGZpcmVsZW5zQ29uZmlnQnVja2V0QXJuOiB0aGlzLkZJUkVMRU5TX0NPTkZJR19CVUNLRVRfQVJOLFxuICAgICAgICBmaXJlbGVuc0NvbmZpZ0ZpbGVQYXRoOiB0aGlzLkZJUkVMRU5TX0NPTkZJR19GSUxFX1BBVEgsXG4gICAgICAgIHNlcnZpY2VOYW1lOiBwcm9wcy5zZXJ2aWNlTmFtZSxcbiAgICAgIH0pO1xuICAgIH1cbiAgICB0aGlzLmRhdGFkb2dTaWRlQ2FyQ29udGFpbmVyRGVmaW5pdGlvbiA9IGRhdGFkb2cuYWRkRGF0YWRvZ1NpZGVjYXIoe1xuICAgICAgc2NvcGUsXG4gICAgICB0YXNrRGVmaW5pdGlvbjogdGhpcy50YXNrRGVmaW5pdGlvbixcbiAgICAgIGFjY291bnROYW1lLFxuICAgICAgdGVhbU5hbWUsXG4gICAgICB0ZWFtSWRlbnRpZmllcixcbiAgICAgIHN0YWdlLFxuICAgICAgc2VydmljZU5hbWUsXG4gICAgICB2ZXJzaW9uLFxuICAgICAgZGF0YWRvZ0FwaUtleVBhcmFtZXRlcixcbiAgICAgIGRhdGFkb2dTaXRlLFxuICAgICAgZGF0YWRvZ0xvZ2dpbmdNb2RlOiBsb2dnaW5nTW9kZUZvckRhdGFkb2dBZ2VudCxcbiAgICAgIGFwbUdldFJlc291cmNlc1RvSWdub3JlOlxuICAgICAgICBkYXRhZG9nT3B0aW9ucz8uYXBtR2V0RW5kcG9pbnRzVG9JZ25vcmUgPz9cbiAgICAgICAgdGhpcy5ERUZBVUxUX0FQTV9HRVRfRU5EUE9JTlRTX1RPX0lHTk9SRSxcbiAgICAgIGNwdTogZGF0YWRvZ1NpZGVjYXJDcHUsXG4gICAgICBtZW1vcnlMaW1pdE1pQjogZGF0YWRvZ1NpZGVjYXJNZW1vcnlNaUIsXG4gICAgICBlc3NlbnRpYWw6IGRhdGFkb2dTaWRlY2FyRXNzZW50aWFsLFxuICAgICAgY29udGFpbmVyVGFnOlxuICAgICAgICBwcm9wcy5kYXRhZG9nT3B0aW9ucz8uZGF0YWRvZ1NpZGVjYXJUYWcgPz9cbiAgICAgICAgdGhpcy5ERUZBVUxUX0RBVEFET0dfU0lERUNBUl9UQUcsIC8vIFRoZXNlIGFyZSBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsXG4gICAgICBhZGRpdGlvbmFsVGFnczogZGF0YWRvZ09wdGlvbnM/LmFkZGl0aW9uYWxUYWdzLFxuICAgIH0pO1xuXG4gICAgZGF0YWRvZy5lbnN1cmVMb2dnaW5nQW5kTW9uaXRvcmluZ0FyZVJlYWR5QmVmb3JlU2VydmljZVN0YXJ0cyh0aGlzKTtcblxuICAgIGNvbnN0IGxvYWRCYWxhbmNlck9wdGlvbnNGb3JGYXJnYXRlU2VydmljZSA9IGxvYWRCYWxhbmNlck9wdGlvbnNcbiAgICAgID8geyBoZWFsdGhDaGVja0dyYWNlUGVyaW9kOiBsb2FkQmFsYW5jZXJPcHRpb25zLmhlYWx0aENoZWNrR3JhY2VQZXJpb2QgfVxuICAgICAgOiB7fTtcblxuICAgIHRoaXMuc2VydmljZSA9IG5ldyBlY3MuRmFyZ2F0ZVNlcnZpY2UodGhpcywgJ1NlcnZpY2UnLCB7XG4gICAgICBjbHVzdGVyOiBmYXJnYXRlQ2x1c3RlcixcbiAgICAgIHRhc2tEZWZpbml0aW9uOiB0aGlzLnRhc2tEZWZpbml0aW9uLFxuICAgICAgbWF4SGVhbHRoeVBlcmNlbnQ6IDIwMCxcbiAgICAgIG1pbkhlYWx0aHlQZXJjZW50OiAxMDAsXG4gICAgICBkZXNpcmVkQ291bnQ6IGZhcmdhdGVPcHRpb25zPy5kZXNpcmVkQ291bnQsXG4gICAgICBkZXBsb3ltZW50Q29udHJvbGxlcjogeyB0eXBlOiBlY3MuRGVwbG95bWVudENvbnRyb2xsZXJUeXBlLkNPREVfREVQTE9ZIH0sXG4gICAgICAuLi5sb2FkQmFsYW5jZXJPcHRpb25zRm9yRmFyZ2F0ZVNlcnZpY2UsXG4gICAgICBwcm9wYWdhdGVUYWdzOiBlY3MuUHJvcGFnYXRlZFRhZ1NvdXJjZS5TRVJWSUNFLFxuICAgIH0pO1xuXG4gICAgdGhpcy5jb25uZWN0aW9ucyA9IHRoaXMuc2VydmljZS5jb25uZWN0aW9ucztcblxuICAgIGlmIChsb2FkQmFsYW5jZXJPcHRpb25zICE9IG51bGwpIHtcbiAgICAgIGNvbnN0IGNvbnRhaW5lclBvcnQgPSA0NDM7XG4gICAgICB0aGlzLnNlcnZpY2VDb250YWluZXJEZWZpbml0aW9uLmFkZFBvcnRNYXBwaW5ncyh7XG4gICAgICAgIGNvbnRhaW5lclBvcnQ6IGNvbnRhaW5lclBvcnQsXG4gICAgICAgIHByb3RvY29sOiBlY3MuUHJvdG9jb2wuVENQLFxuICAgICAgfSk7XG4gICAgICB0aGlzLmJsdWVUYXJnZXRHcm91cCA9IG5ldyBlbGJ2Mi5BcHBsaWNhdGlvblRhcmdldEdyb3VwKFxuICAgICAgICB0aGlzLFxuICAgICAgICAnQmx1ZVRhcmdldEdyb3VwJyxcbiAgICAgICAge1xuICAgICAgICAgIHZwYzogdnBjLFxuICAgICAgICAgIHBvcnQ6IGNvbnRhaW5lclBvcnQsXG4gICAgICAgICAgcHJvdG9jb2w6IGVsYnYyLkFwcGxpY2F0aW9uUHJvdG9jb2wuSFRUUFMsXG4gICAgICAgICAgdGFyZ2V0VHlwZTogZWxidjIuVGFyZ2V0VHlwZS5JUCxcbiAgICAgICAgICB0YXJnZXRzOiBbdGhpcy5zZXJ2aWNlXSxcbiAgICAgICAgICBoZWFsdGhDaGVjazogbG9hZEJhbGFuY2VyT3B0aW9ucy5oZWFsdGhDaGVjayxcbiAgICAgICAgICBzbG93U3RhcnQ6XG4gICAgICAgICAgICBwcm9wcy5sb2FkQmFsYW5jZXJPcHRpb25zPy5zbG93U3RhcnQgPz8gdGhpcy5ERUZBVUxUX1NMT1dfU1RBUlQsXG4gICAgICAgICAgZGVyZWdpc3RyYXRpb25EZWxheTpcbiAgICAgICAgICAgIHByb3BzLmxvYWRCYWxhbmNlck9wdGlvbnM/LmRlcmVnaXN0cmF0aW9uRGVsYXkgPz9cbiAgICAgICAgICAgIHRoaXMuREVGQVVMVF9ERVJFR0lTVFJBVElPTl9ERUxBWSxcbiAgICAgICAgfSxcbiAgICAgICk7XG4gICAgICB0aGlzLmdyZWVuVGFyZ2V0R3JvdXAgPSBuZXcgZWxidjIuQXBwbGljYXRpb25UYXJnZXRHcm91cChcbiAgICAgICAgdGhpcyxcbiAgICAgICAgJ0dyZWVuVGFyZ2V0R3JvdXAnLFxuICAgICAgICB7XG4gICAgICAgICAgdnBjOiB2cGMsXG4gICAgICAgICAgcG9ydDogY29udGFpbmVyUG9ydCxcbiAgICAgICAgICBwcm90b2NvbDogZWxidjIuQXBwbGljYXRpb25Qcm90b2NvbC5IVFRQUyxcbiAgICAgICAgICB0YXJnZXRUeXBlOiBlbGJ2Mi5UYXJnZXRUeXBlLklQLFxuICAgICAgICAgIHRhcmdldHM6IFt0aGlzLnNlcnZpY2VdLFxuICAgICAgICAgIGhlYWx0aENoZWNrOiBsb2FkQmFsYW5jZXJPcHRpb25zLmhlYWx0aENoZWNrLFxuICAgICAgICAgIHNsb3dTdGFydDpcbiAgICAgICAgICAgIHByb3BzLmxvYWRCYWxhbmNlck9wdGlvbnM/LnNsb3dTdGFydCA/PyB0aGlzLkRFRkFVTFRfU0xPV19TVEFSVCxcbiAgICAgICAgICBkZXJlZ2lzdHJhdGlvbkRlbGF5OlxuICAgICAgICAgICAgcHJvcHMubG9hZEJhbGFuY2VyT3B0aW9ucz8uZGVyZWdpc3RyYXRpb25EZWxheSA/P1xuICAgICAgICAgICAgdGhpcy5ERUZBVUxUX0RFUkVHSVNUUkFUSU9OX0RFTEFZLFxuICAgICAgICB9LFxuICAgICAgKTtcblxuICAgICAgbG9hZEJhbGFuY2VyT3B0aW9ucy5saXN0ZW5lclJ1bGVzLmZvckVhY2goKHsgcHJpb3JpdHksIGNvbmRpdGlvbnMgfSkgPT4ge1xuICAgICAgICBsb2FkQmFsYW5jZXJPcHRpb25zLmxpc3RlbmVyLmFkZFRhcmdldEdyb3VwcyhgUHJpb3JpdHkke3ByaW9yaXR5fUxpc3RlbmVyUnVsZWAsIHtcbiAgICAgICAgICB0YXJnZXRHcm91cHM6IFt0aGlzLmJsdWVUYXJnZXRHcm91cCBhcyBlbGJ2Mi5BcHBsaWNhdGlvblRhcmdldEdyb3VwXSxcbiAgICAgICAgICBwcmlvcml0eTogcHJpb3JpdHksXG4gICAgICAgICAgY29uZGl0aW9uczogY29uZGl0aW9ucyxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICAgIGlmIChibHVlR3JlZW5EZXBsb3ltZW50Q29uZmlnPy50ZXN0TGlzdGVuZXIpIHtcbiAgICAgICAgbG9hZEJhbGFuY2VyT3B0aW9ucy5saXN0ZW5lclJ1bGVzLmZvckVhY2goKHsgcHJpb3JpdHksIGNvbmRpdGlvbnMgfSkgPT4ge1xuICAgICAgICAgIGJsdWVHcmVlbkRlcGxveW1lbnRDb25maWcudGVzdExpc3RlbmVyPy5hZGRUYXJnZXRHcm91cHMoYFByaW9yaXR5JHtwcmlvcml0eX1MaXN0ZW5lclJ1bGVgLCB7XG4gICAgICAgICAgICB0YXJnZXRHcm91cHM6IFt0aGlzLmdyZWVuVGFyZ2V0R3JvdXAgYXMgZWxidjIuQXBwbGljYXRpb25UYXJnZXRHcm91cF0sXG4gICAgICAgICAgICBwcmlvcml0eTogcHJpb3JpdHksXG4gICAgICAgICAgICBjb25kaXRpb25zOiBjb25kaXRpb25zLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZWNzRGVwbG95bWVudEdyb3VwID0gbmV3IGNvZGVkZXBsb3kuRWNzRGVwbG95bWVudEdyb3VwKHRoaXMsICdEZXBsb3ltZW50R3JvdXAnLCB7XG4gICAgICAgIHNlcnZpY2U6IHRoaXMuc2VydmljZSxcbiAgICAgICAgYmx1ZUdyZWVuRGVwbG95bWVudENvbmZpZzoge1xuICAgICAgICAgIGJsdWVUYXJnZXRHcm91cDogdGhpcy5ibHVlVGFyZ2V0R3JvdXAsXG4gICAgICAgICAgZ3JlZW5UYXJnZXRHcm91cDogdGhpcy5ncmVlblRhcmdldEdyb3VwLFxuICAgICAgICAgIGxpc3RlbmVyOiBsb2FkQmFsYW5jZXJPcHRpb25zLmxpc3RlbmVyLFxuICAgICAgICAgIHRlc3RMaXN0ZW5lcjogYmx1ZUdyZWVuRGVwbG95bWVudENvbmZpZz8udGVzdExpc3RlbmVyLFxuICAgICAgICB9LFxuICAgICAgICBkZXBsb3ltZW50Q29uZmlnOlxuICAgICAgICAgIGNvZGVkZXBsb3kuRWNzRGVwbG95bWVudENvbmZpZy5DQU5BUllfMTBQRVJDRU5UXzVNSU5VVEVTLFxuICAgICAgfSk7XG5cbiAgICAgIC8vIGNvbnN0IGNyZWF0ZURlcGxveW1lbnRMYW1iZGEgPSBuZXcgbm9kZWpzbGFtYmRhLk5vZGVqc0Z1bmN0aW9uKHRoaXMsICdDcmVhdGVEZXBsb3ltZW50TGFtYmRhJywge1xuICAgICAgLy8gICBlbnRyeTogJy4vc3JjL2ZhcmdhdGUvY29kZWRlcGxveS1jdXN0b20tcmVzb3VyY2VzL2NyZWF0ZS1kZXBsb3ltZW50LW9uLWNyZWF0ZS50cycsXG4gICAgICAvLyAgIGhhbmRsZXI6ICdoYW5kbGVyJyxcbiAgICAgIC8vICAgdGltZW91dDogY2RrLkR1cmF0aW9uLm1pbnV0ZXMoNSksXG4gICAgICAvLyAgIHJ1bnRpbWU6IGxhbWJkYS5SdW50aW1lLk5PREVKU18yMF9YLFxuICAgICAgLy8gfSk7XG4gICAgICBjb25zdCBjcmVhdGVEZXBsb3ltZW50TGFtYmRhID0gbmV3IGxhbWJkYS5GdW5jdGlvbih0aGlzLCAnQ3JlYXRlRGVwbG95bWVudExhbWJkYScsIHtcbiAgICAgICAgY29kZTogbGFtYmRhLkNvZGUuZnJvbUFzc2V0KGpvaW4oX19kaXJuYW1lLCAnY29kZWRlcGxveS1jdXN0b20tcmVzb3VyY2VzJykpLFxuICAgICAgICBoYW5kbGVyOiAnY3JlYXRlLWRlcGxveW1lbnQtb24tY3JlYXRlLmhhbmRsZXInLFxuICAgICAgICBydW50aW1lOiBsYW1iZGEuUnVudGltZS5OT0RFSlNfMjBfWCxcbiAgICAgICAgYXJjaGl0ZWN0dXJlOiBsYW1iZGEuQXJjaGl0ZWN0dXJlLkFSTV82NCxcbiAgICAgICAgdGltZW91dDogY2RrLkR1cmF0aW9uLm1pbnV0ZXMoNSksXG4gICAgICAgIGxvZ0dyb3VwOiBuZXcgbG9ncy5Mb2dHcm91cCh0aGlzLCAnQ3JlYXRlRGVwbG95bWVudExhbWJkYUxvZ0dyb3VwJywge1xuICAgICAgICAgIHJldGVudGlvbjogbG9ncy5SZXRlbnRpb25EYXlzLk9ORV9XRUVLLFxuICAgICAgICB9KSxcbiAgICAgIH0pO1xuICAgICAgY3JlYXRlRGVwbG95bWVudExhbWJkYS5hZGRUb1JvbGVQb2xpY3kobmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgJ2NvZGVkZXBsb3k6R2V0QXBwbGljYXRpb25SZXZpc2lvbicsXG4gICAgICAgICAgJ2NvZGVkZXBsb3k6UmVnaXN0ZXJBcHBsaWNhdGlvblJldmlzaW9uJyxcbiAgICAgICAgXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbXG4gICAgICAgICAgZWNzRGVwbG95bWVudEdyb3VwLmFwcGxpY2F0aW9uLmFwcGxpY2F0aW9uQXJuLFxuICAgICAgICBdLFxuICAgICAgfSkpO1xuICAgICAgY3JlYXRlRGVwbG95bWVudExhbWJkYS5hZGRUb1JvbGVQb2xpY3kobmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgJ2NvZGVkZXBsb3k6Q3JlYXRlRGVwbG95bWVudCcsXG4gICAgICAgICAgJ2NvZGVkZXBsb3k6U3RvcERlcGxveW1lbnQnLFxuICAgICAgICAgICdjb2RlZGVwbG95OkdldERlcGxveW1lbnQnLFxuICAgICAgICBdLFxuICAgICAgICByZXNvdXJjZXM6IFtcbiAgICAgICAgICBlY3NEZXBsb3ltZW50R3JvdXAuZGVwbG95bWVudEdyb3VwQXJuLFxuICAgICAgICBdLFxuICAgICAgfSkpO1xuICAgICAgY3JlYXRlRGVwbG95bWVudExhbWJkYS5hZGRUb1JvbGVQb2xpY3kobmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgJ2NvZGVkZXBsb3k6R2V0RGVwbG95bWVudENvbmZpZycsXG4gICAgICAgIF0sXG4gICAgICAgIHJlc291cmNlczogW1xuICAgICAgICAgIGVjc0RlcGxveW1lbnRHcm91cC5kZXBsb3ltZW50Q29uZmlnLmRlcGxveW1lbnRDb25maWdBcm4sXG4gICAgICAgIF0sXG4gICAgICB9KSk7XG4gICAgICAvLyBjb25zdCBpc0NvbXBsZXRlRGVwbG95bWVudExhbWJkYSA9IG5ldyBub2RlanNsYW1iZGEuTm9kZWpzRnVuY3Rpb24odGhpcywgJ0lzQ29tcGxldGVEZXBsb3ltZW50TGFtYmRhJywge1xuICAgICAgLy8gICBlbnRyeTogJy4vc3JjL2ZhcmdhdGUvY29kZWRlcGxveS1jdXN0b20tcmVzb3VyY2VzL2NyZWF0ZS1kZXBsb3ltZW50LWlzLWNvbXBsZXRlLnRzJyxcbiAgICAgIC8vICAgaGFuZGxlcjogJ2hhbmRsZXInLFxuICAgICAgLy8gICB0aW1lb3V0OiBjZGsuRHVyYXRpb24ubWludXRlcyg1KSxcbiAgICAgIC8vICAgcnVudGltZTogbGFtYmRhLlJ1bnRpbWUuTk9ERUpTXzIwX1gsXG4gICAgICAvLyB9KTtcbiAgICAgIGNvbnN0IGlzQ29tcGxldGVEZXBsb3ltZW50TGFtYmRhID0gbmV3IGxhbWJkYS5GdW5jdGlvbih0aGlzLCAnSXNDb21wbGV0ZURlcGxveW1lbnRMYW1iZGEnLCB7XG4gICAgICAgIGNvZGU6IGxhbWJkYS5Db2RlLmZyb21Bc3NldChqb2luKF9fZGlybmFtZSwgJ2NvZGVkZXBsb3ktY3VzdG9tLXJlc291cmNlcycpKSxcbiAgICAgICAgaGFuZGxlcjogJ2NyZWF0ZS1kZXBsb3ltZW50LWlzLWNvbXBsZXRlLmhhbmRsZXInLFxuICAgICAgICBydW50aW1lOiBsYW1iZGEuUnVudGltZS5OT0RFSlNfMjBfWCxcbiAgICAgICAgYXJjaGl0ZWN0dXJlOiBsYW1iZGEuQXJjaGl0ZWN0dXJlLkFSTV82NCxcbiAgICAgICAgdGltZW91dDogY2RrLkR1cmF0aW9uLm1pbnV0ZXMoNSksXG4gICAgICAgIGxvZ0dyb3VwOiBuZXcgbG9ncy5Mb2dHcm91cCh0aGlzLCAnSXNDb21wbGV0ZURlcGxveW1lbnRMYW1iZGFMb2dHcm91cCcsIHtcbiAgICAgICAgICByZXRlbnRpb246IGxvZ3MuUmV0ZW50aW9uRGF5cy5PTkVfV0VFSyxcbiAgICAgICAgfSksXG4gICAgICB9KTtcbiAgICAgIGlzQ29tcGxldGVEZXBsb3ltZW50TGFtYmRhLmFkZFRvUm9sZVBvbGljeShuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAnY29kZWRlcGxveTpHZXREZXBsb3ltZW50JyxcbiAgICAgICAgXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbXG4gICAgICAgICAgZWNzRGVwbG95bWVudEdyb3VwLmRlcGxveW1lbnRHcm91cEFybixcbiAgICAgICAgXSxcbiAgICAgIH0pKTtcbiAgICAgIGNvbnN0IGNyZWF0ZURlcGxveW1lbnRMYW1iZGFQcm92aWRlciA9IG5ldyBjci5Qcm92aWRlcih0aGlzLCAnQ3JlYXRlRGVwbG95bWVudFByb3ZpZGVyJywge1xuICAgICAgICBvbkV2ZW50SGFuZGxlcjogY3JlYXRlRGVwbG95bWVudExhbWJkYSxcbiAgICAgICAgaXNDb21wbGV0ZUhhbmRsZXI6IGlzQ29tcGxldGVEZXBsb3ltZW50TGFtYmRhLFxuICAgICAgICB0b3RhbFRpbWVvdXQ6IGNkay5EdXJhdGlvbi5taW51dGVzKDYwKSxcbiAgICAgIH0pO1xuICAgICAgbGV0IHJ1bk1vbml0b3JpbmdUZXN0U3VpdGVSdW5uZXJMYW1iZGE6IG5vZGVqc2xhbWJkYS5Ob2RlanNGdW5jdGlvbiB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgICAgIGlmIChibHVlR3JlZW5EZXBsb3ltZW50Q29uZmlnPy5jYXBhYmlsaXR5TmFtZXMpIHtcbiAgICAgICAgLy8gcnVuTW9uaXRvcmluZ1Rlc3RTdWl0ZVJ1bm5lckxhbWJkYSA9IG5ldyBub2RlanNsYW1iZGEuTm9kZWpzRnVuY3Rpb24odGhpcywgJ1J1bk1vbml0b3JpbmdUZXN0U3VpdGVSdW5uZXJMYW1iZGEnLCB7XG4gICAgICAgIC8vICAgZW50cnk6ICcuL3NyYy9mYXJnYXRlL2NvZGVkZXBsb3ktY3VzdG9tLXJlc291cmNlcy9ydW4tbW9uaXRvcmluZy10ZXN0LXN1aXRlLXJ1bm5lci50cycsXG4gICAgICAgIC8vICAgaGFuZGxlcjogJ2hhbmRsZXInLFxuICAgICAgICAvLyAgIHRpbWVvdXQ6IGNkay5EdXJhdGlvbi5taW51dGVzKDUpLFxuICAgICAgICAvLyAgIHJ1bnRpbWU6IGxhbWJkYS5SdW50aW1lLk5PREVKU18yMF9YLFxuICAgICAgICAvLyAgIGVudmlyb25tZW50OiB7XG4gICAgICAgIC8vICAgICBDQVBBQklMSVRJRVNfTkFNRTogYmx1ZUdyZWVuRGVwbG95bWVudENvbmZpZy5jYXBhYmlsaXR5TmFtZXMuam9pbignLCcpLFxuICAgICAgICAvLyAgICAgU1VCTkVUUzogdnBjLnNlbGVjdFN1Ym5ldHMoeyBzdWJuZXRUeXBlOiBlYzIuU3VibmV0VHlwZS5QUklWQVRFX1dJVEhfRUdSRVNTIH0pLnN1Ym5ldElkcy5qb2luKCcsJyksXG4gICAgICAgIC8vICAgfSxcbiAgICAgICAgLy8gfSk7XG4gICAgICAgIHJ1bk1vbml0b3JpbmdUZXN0U3VpdGVSdW5uZXJMYW1iZGEgPSBuZXcgbGFtYmRhLkZ1bmN0aW9uKHRoaXMsICdSdW5Nb25pdG9yaW5nVGVzdFN1aXRlUnVubmVyTGFtYmRhJywge1xuICAgICAgICAgIGNvZGU6IGxhbWJkYS5Db2RlLmZyb21Bc3NldChqb2luKF9fZGlybmFtZSwgJ2NvZGVkZXBsb3ktY3VzdG9tLXJlc291cmNlcycpKSxcbiAgICAgICAgICBoYW5kbGVyOiAncnVuLW1vbml0b3JpbmctdGVzdC1zdWl0ZS1ydW5uZXIuaGFuZGxlcicsXG4gICAgICAgICAgcnVudGltZTogbGFtYmRhLlJ1bnRpbWUuTk9ERUpTXzIwX1gsXG4gICAgICAgICAgYXJjaGl0ZWN0dXJlOiBsYW1iZGEuQXJjaGl0ZWN0dXJlLkFSTV82NCxcbiAgICAgICAgICB0aW1lb3V0OiBjZGsuRHVyYXRpb24ubWludXRlcyg1KSxcbiAgICAgICAgICBsb2dHcm91cDogbmV3IGxvZ3MuTG9nR3JvdXAodGhpcywgJ1J1bk1vbml0b3JpbmdUZXN0U3VpdGVSdW5uZXJMYW1iZGFyTG9nR3JvdXAnLCB7XG4gICAgICAgICAgICByZXRlbnRpb246IGxvZ3MuUmV0ZW50aW9uRGF5cy5PTkVfV0VFSyxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICAgICAgQ0FQQUJJTElUSUVTX05BTUU6IGJsdWVHcmVlbkRlcGxveW1lbnRDb25maWcuY2FwYWJpbGl0eU5hbWVzLmpvaW4oJywnKSxcbiAgICAgICAgICAgIFNVQk5FVFM6IHZwYy5zZWxlY3RTdWJuZXRzKHsgc3VibmV0VHlwZTogZWMyLlN1Ym5ldFR5cGUuUFJJVkFURV9XSVRIX0VHUkVTUyB9KS5zdWJuZXRJZHMuam9pbignLCcpLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCByZWdpb24gPSBjZGsuU3RhY2sub2Yoc2NvcGUpLnJlZ2lvbjtcbiAgICAgICAgY29uc3QgYWNjb3VudCA9IGNkay5TdGFjay5vZihzY29wZSkuYWNjb3VudDtcbiAgICAgICAgcnVuTW9uaXRvcmluZ1Rlc3RTdWl0ZVJ1bm5lckxhbWJkYS5hZGRUb1JvbGVQb2xpY3kobmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgICdlY3M6UnVuVGFzaycsXG4gICAgICAgICAgXSxcbiAgICAgICAgICByZXNvdXJjZXM6IFtcbiAgICAgICAgICAgIGBhcm46YXdzOmVjczoke3JlZ2lvbn06JHthY2NvdW50fTp0YXNrLWRlZmluaXRpb24vbW9uaXRvcmluZy10ZXN0c3VpdGUtcnVubmVyKmAsXG4gICAgICAgICAgXSxcbiAgICAgICAgfSkpO1xuICAgICAgICBydW5Nb25pdG9yaW5nVGVzdFN1aXRlUnVubmVyTGFtYmRhLmFkZFRvUm9sZVBvbGljeShuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgJ2VjczpMaXN0Q0x1c3RlcnMnLFxuICAgICAgICAgICAgJ2VjczpMaXN0VGFza0RlZmluaXRpb25zJyxcbiAgICAgICAgICBdLFxuICAgICAgICAgIHJlc291cmNlczogW1xuICAgICAgICAgICAgJyonLFxuICAgICAgICAgIF0sXG4gICAgICAgIH0pKTtcbiAgICAgICAgcnVuTW9uaXRvcmluZ1Rlc3RTdWl0ZVJ1bm5lckxhbWJkYS5hZGRUb1JvbGVQb2xpY3kobmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgIGFjdGlvbnM6IFsnaWFtOlBhc3NSb2xlJ10sXG4gICAgICAgICAgcmVzb3VyY2VzOiBbYGFybjphd3M6aWFtOjoke2FjY291bnR9OnJvbGUvbW9uaXRvcmluZy10ZXN0c3VpdGUqYF0sXG4gICAgICAgIH0pKTtcbiAgICAgIH1cblxuICAgICAgbmV3IGNkay5DdXN0b21SZXNvdXJjZSh0aGlzLCAnQ3JlYXRlRGVwbG95bWVudCcsIHtcbiAgICAgICAgc2VydmljZVRva2VuOiBjcmVhdGVEZXBsb3ltZW50TGFtYmRhUHJvdmlkZXIuc2VydmljZVRva2VuLFxuICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgQXBwbGljYXRpb25OYW1lOiBlY3NEZXBsb3ltZW50R3JvdXAuYXBwbGljYXRpb24uYXBwbGljYXRpb25OYW1lLFxuICAgICAgICAgIERlcGxveW1lbnRHcm91cE5hbWU6IGVjc0RlcGxveW1lbnRHcm91cC5kZXBsb3ltZW50R3JvdXBOYW1lLFxuICAgICAgICAgIFRhc2tEZWZpbml0aW9uQXJuOiB0aGlzLnRhc2tEZWZpbml0aW9uLnRhc2tEZWZpbml0aW9uQXJuLFxuICAgICAgICAgIENvbnRhaW5lck5hbWU6IHNlcnZpY2VOYW1lLFxuICAgICAgICAgIENvbnRhaW5lclBvcnQ6IGNvbnRhaW5lclBvcnQsXG4gICAgICAgICAgQWZ0ZXJBbGxvd1Rlc3RUcmFmZmljSG9vazogcnVuTW9uaXRvcmluZ1Rlc3RTdWl0ZVJ1bm5lckxhbWJkYT8uZnVuY3Rpb25Bcm4sXG4gICAgICAgIH0sXG4gICAgICB9KTtcblxuICAgIH1cbiAgfVxufVxuXG5jbGFzcyBEZW55TGlzdGVkS2V5VmFsaWRhdG9yIGltcGxlbWVudHMgY29uc3RydWN0cy5JVmFsaWRhdGlvbiB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVueUxpc3Q6IHN0cmluZ1tdLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGljdDogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB8IHVuZGVmaW5lZCxcbiAgICBwcml2YXRlIHJlYWRvbmx5IG1lc3NhZ2VHZW5lcmF0b3I6IChrZXlOYW1lOiBzdHJpbmcpID0+IHN0cmluZyxcbiAgKSB7fVxuXG4gIHZhbGlkYXRlKCk6IHN0cmluZ1tdIHtcbiAgICBpZiAoIXRoaXMuZGljdCkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc3VsdDogc3RyaW5nW10gPSBbXTtcbiAgICB0aGlzLmRlbnlMaXN0LmZvckVhY2goKGtleU5hbWUpID0+IHtcbiAgICAgIGlmICh0aGlzLmRpY3QgJiYga2V5TmFtZSBpbiB0aGlzLmRpY3QpIHtcbiAgICAgICAgcmVzdWx0LnB1c2godGhpcy5tZXNzYWdlR2VuZXJhdG9yKGtleU5hbWUpKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbn1cblxuY2xhc3MgQ2x1c3RlclZwY1ZhbGlkYXRvciBpbXBsZW1lbnRzIGNvbnN0cnVjdHMuSVZhbGlkYXRpb24ge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHZwYzogZWMyLklWcGMsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjbHVzdGVyPzogZWNzLklDbHVzdGVyLFxuICApIHt9XG5cbiAgdmFsaWRhdGUoKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IHJlc3VsdCA9IFtdO1xuICAgIGlmICh0aGlzLmNsdXN0ZXIgJiYgdGhpcy5jbHVzdGVyLnZwYy52cGNJZCAhPT0gdGhpcy52cGMudnBjSWQpIHtcbiAgICAgIHJlc3VsdC5wdXNoKFxuICAgICAgICBgVGhlIFZQQyBwcm92aWRlZCBpbiB0aGUgY2x1c3RlciAoJHt0aGlzLmNsdXN0ZXIudnBjLm5vZGUuaWR9KSBNVVNUIG1hdGNoIHRoZSBWUEMgcHJvdmlkZWQgYXMgYXJndW1lbnQgKCR7dGhpcy52cGMubm9kZS5pZH0pLmAsXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59XG4iXX0=
|
package/package.json
CHANGED
package/version.json
CHANGED