@piserve-tech/form-submission 1.3.314 → 1.3.315
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.
|
@@ -79,8 +79,12 @@ export class SubFormComponent {
|
|
|
79
79
|
this.formService.getSubformSubmissions(this.subformData)?.subscribe({
|
|
80
80
|
next: (response) => {
|
|
81
81
|
this.previousSubmissions = response;
|
|
82
|
-
|
|
83
|
-
|
|
82
|
+
const targetSubForms = this.subformData?.duplicateSubmission?.targetSubForm ?? [];
|
|
83
|
+
if (Array.isArray(targetSubForms) &&
|
|
84
|
+
targetSubForms.includes(this.subForm.title)) {
|
|
85
|
+
// ✅ Filter submissions belonging to this subform
|
|
86
|
+
const filteredSubmissions = this.previousSubmissions.filter((submission) => submission.title === this.subForm.title);
|
|
87
|
+
const loadedSubmissions = this.createSubmissionsFromApi(filteredSubmissions, this.subForm);
|
|
84
88
|
const existingSubmissions = this.subForm.submissions ?? [];
|
|
85
89
|
this.subForm = {
|
|
86
90
|
...this.subForm,
|
|
@@ -94,7 +98,7 @@ export class SubFormComponent {
|
|
|
94
98
|
this.subForm.scores = this.scoreCalcService.calculateFinalScore(this.subForm.submissions, this.maxPossibleGoodScore, this.maxPossibleBadScore);
|
|
95
99
|
}
|
|
96
100
|
else {
|
|
97
|
-
this.subForm.scores = null;
|
|
101
|
+
this.subForm.scores = null;
|
|
98
102
|
}
|
|
99
103
|
}
|
|
100
104
|
},
|
|
@@ -348,4 +352,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
348
352
|
type: HostListener,
|
|
349
353
|
args: ['click', ['$event']]
|
|
350
354
|
}] } });
|
|
351
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ViLWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm9ybS1zdWJtaXNzaW9uL3NyYy9xdWVzdGlvbi9zdWItZm9ybS9zdWItZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mb3JtLXN1Ym1pc3Npb24vc3JjL3F1ZXN0aW9uL3N1Yi1mb3JtL3N1Yi1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLFlBQVksRUFDWixRQUFRLEVBQ1IsS0FBSyxFQUVMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNwRixPQUFPLEVBQWEsZUFBZSxFQUFnQixNQUFNLDBCQUEwQixDQUFDO0FBR3BGLE9BQU8sRUFBRSxFQUFFLElBQUksTUFBTSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFZcEMsTUFBTSxPQUFPLGdCQUFnQjtJQXdCM0IsWUFDVSxrQkFBcUMsRUFDdEMsTUFBaUIsRUFDaEIsV0FBd0IsRUFDeEIsV0FBdUIsRUFDdkIsaUJBQW1DLEVBQ25DLGlCQUFvQyxFQUNwQyxnQkFBeUM7UUFOekMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFtQjtRQUN0QyxXQUFNLEdBQU4sTUFBTSxDQUFXO1FBQ2hCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBQ3ZCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBa0I7UUFDbkMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQXlCO1FBOUIxQyxZQUFPLEdBQVEsRUFBRSxDQUFDO1FBQ2xCLFNBQUks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LE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRUQsSUFBSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVELFlBQVk7UUFDVixJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUdDLFVBQVUsQ0FBQyxLQUFpQjtRQUM1QixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDbEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUN4QjtJQUNILENBQUM7K0dBcFhVLGdCQUFnQjttR0FBaEIsZ0JBQWdCLGtSQzFCN0IsdXhVQThQQTs7NEZEcE9hLGdCQUFnQjtrQkFMNUIsU0FBUzsrQkFDRSxjQUFjOzJSQUtmLE9BQU87c0JBQWYsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0ksYUFBYTtzQkFBdEIsTUFBTTtnQkFDRSxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQXVXSixVQUFVO3NCQURYLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5qZWN0b3IsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJmb3JtQ29weVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9zdWJmb3JtLWNvcHkuc2VydmljZSc7XG5pbXBvcnQgeyBDb25maXJtRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vY29uZmlybS1kaWFsb2cvY29uZmlybS1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7IE1hdERpYWxvZywgTWF0RGlhbG9nQ29uZmlnLCBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgU3VibWlzc2lvbiB9IGZyb20gJy4uLy4uL21vZGVscy9zdWJtaXNzaW9uLm1vZGVsJztcbmltcG9ydCB7IEFuc3dlciB9IGZyb20gJy4uLy4uL21vZGVscy9hbnN3ZXIubW9kZWwnO1xuaW1wb3J0IHsgdjQgYXMgdXVpZHY0IH0gZnJvbSAndXVpZCc7XG5pbXBvcnQgeyBEYXRhU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2RhdGEuc2VydmljZSc7XG5pbXBvcnQgeyBGb3JtU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2Zvcm0uc2VydmljZSc7XG5pbXBvcnQgeyBXaGVuQ2xhdXNlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3doZW5DbGF1c2Uuc2VydmljZSc7XG5pbXBvcnQgeyBWYWxpZGF0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3ZhbGlkYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBTY29yZUNhbGN1bGF0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3Njb3JlLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItc3ViLWZvcm0nLFxuICB0ZW1wbGF0ZVVybDogJy4vc3ViLWZvcm0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zdWItZm9ybS5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBTdWJGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgc3ViRm9ybTogYW55ID0ge307XG4gIEBJbnB1dCgpIGVkaXQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQE91dHB1dCgpIHN1YkZvcm1DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQElucHV0KCkgYWNjZXB0ZWRMYW5ndWFnZTogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIHBhZ2VzOiBhbnlbXSA9IFtdO1xuICBkZWNvZGVkRGVzY3JpcHRpb246IHN0cmluZyA9ICcnO1xuICBncmlkOiBhbnk7XG4gIHN0YXRlITogc3RyaW5nO1xuICBjaGlsZExvZ2ljQ2FjaGU6IHsgW2tleTogc3RyaW5nXTogeyBjb21wb25lbnQ6IFByb21pc2U8YW55PiwgaW5qZWN0b3I6IEluamVjdG9yIH0gfSA9IHt9O1xuICBjb21wb25lbnRUb0xvYWQ6IGFueTtcbiAgaW5qZWN0b3IhOiBJbmplY3RvcjtcbiAgY29weVN1YkZvcm1kYXRhOmFueTtcbiAgc3ViZm9ybURlc2NyaXB0aW9uOnN0cmluZyA9ICcnO1xuICBzdWJmb3JtVGl0bGU6IHN0cmluZz0gJyc7XG4gIGVkaXRvcjogYW55O1xuICBhbGxvd0NvcHk6IGJvb2xlYW4gPSBmYWxzZTtcbiAgYWxsb3dEZWxldGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBkaWFsb2dSZWY/OiBNYXREaWFsb2dSZWY8Q29uZmlybURpYWxvZ0NvbXBvbmVudD47XG4gIHN1YmZvcm1EYXRhOmFueTtcbiAgcHJldmlvdXNTdWJtaXNzaW9uczphbnlbXT1bXTtcbiAgbWF4UG9zc2libGVHb29kU2NvcmUhOiBudW1iZXI7XG4gIG1heFBvc3NpYmxlQmFkU2NvcmUhOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzdWJmb3JtQ29weVNlcnZpY2U6U3ViZm9ybUNvcHlTZXJ2aWNlLFxuICAgIHB1YmxpYyBkaWFsb2c6IE1hdERpYWxvZyxcbiAgICBwcml2YXRlIGRhdGFTZXJ2aWNlOiBEYXRhU2VydmljZSxcbiAgICBwcml2YXRlIGZvcm1TZXJ2aWNlOkZvcm1TZXJ2aWNlLFxuICAgIHByaXZhdGUgd2hlbkNsYXVzZVNlcnZpY2U6V2hlbkNsYXVzZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB2YWxpZGF0aW9uU2VydmljZTogVmFsaWRhdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzY29yZUNhbGNTZXJ2aWNlOiBTY29yZUNhbGN1bGF0aW9uU2VydmljZVxuICApe1xuICAgIHRoaXMuZGF0YVNlcnZpY2Uuc3ViZm9ybSQuc3Vic2NyaWJlKChkYXRhKT0+e1xuICAgICAgdGhpcy5zdWJmb3JtRGF0YSA9IGRhdGE7XG4gICAgICB0aGlzLnRyeUxvYWRQcmV2aW91c1N1Ym1pc3Npb25zKCk7XG4gICAgfSlcbiAgfVxuXG4gIHByaXZhdGUgdHJ5TG9hZFByZXZpb3VzU3VibWlzc2lvbnMoKTogdm9pZCB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5zdWJmb3JtRGF0YSAmJlxuICAgICAgdGhpcy5zdWJGb3JtICYmXG4gICAgICAhdGhpcy5lZGl0ICYmXG4gICAgICB0aGlzLnN1YkZvcm0uc3VibWlzc2lvbkNvcHlDb25maWc/LmFsbG93Q29weUZyb21PdGhlclN1Ym1pc3Npb25zXG4gICAgKSB7XG4gICAgICB0aGlzLmxvYWRQcmV2aW91c1N1Ym1pc3Npb25zKCk7XG4gICAgfVxuICB9XG5cblxuICBsb2FkUHJldmlvdXNTdWJtaXNzaW9ucygpe1xuICAgIGlmICh0aGlzLnN1YmZvcm1EYXRhICYmIE9iamVjdC5rZXlzKHRoaXMuc3ViZm9ybURhdGEpLmxlbmd0aCA+IDAgJiYgIXRoaXMuZWRpdCkge1xuICAgICAgdGhpcy5mb3JtU2VydmljZS5nZXRTdWJmb3JtU3VibWlzc2lvbnModGhpcy5zdWJmb3JtRGF0YSk/LnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6KHJlc3BvbnNlOmFueSk9PntcbiAgICAgICAgICB0aGlzLnByZXZpb3VzU3VibWlzc2lvbnMgPSByZXNwb25zZTtcbiAgICAgICAgICBpZih0aGlzLnN1YkZvcm0udGl0bGUgPT0gdGhpcy5zdWJmb3JtRGF0YT8uZHVwbGljYXRlU3VibWlzc2lvbj8udGFyZ2V0U3ViRm9ybSl7XG4gICAgICAgICAgICBjb25zdCBsb2FkZWRTdWJtaXNzaW9ucyA9IHRoaXMuY3JlYXRlU3VibWlzc2lvbnNGcm9tQXBpKHRoaXMucHJldmlvdXNTdWJtaXNzaW9ucyx0aGlzLnN1YkZvcm0pO1xuICAgICAgICAgICAgY29uc3QgZXhpc3RpbmdTdWJtaXNzaW9ucyA9IHRoaXMuc3ViRm9ybS5zdWJtaXNzaW9ucyA/PyBbXTtcblxuICAgICAgICAgICAgdGhpcy5zdWJGb3JtID0ge1xuICAgICAgICAgICAgICAuLi50aGlzLnN1YkZvcm0sXG4gICAgICAgICAgICAgIHN1Ym1pc3Npb25zOiBbXG4gICAgICAgICAgICAgICAgLi4uZXhpc3RpbmdTdWJtaXNzaW9ucyxcbiAgICAgICAgICAgICAgICAuLi5sb2FkZWRTdWJtaXNzaW9uc1xuICAgICAgICAgICAgICBdXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBjb25zdCBoYXNBbnlTY29yZSA9IHRoaXMuc3ViRm9ybS5zdWJtaXNzaW9ucy5zb21lKChzdWI6YW55KSA9PlxuICAgICAgICAgICAgICBzdWIuc2NvcmVzPy5zb21lKChzOmFueSkgPT4gcy5zY29yZSAhPT0gbnVsbCAmJiBzLnNjb3JlICE9PSB1bmRlZmluZWQpXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBpZiAoaGFzQW55U2NvcmUpIHtcbiAgICAgICAgICAgICAgdGhpcy5zdWJGb3JtLnNjb3JlcyA9IHRoaXMuc2NvcmVDYWxjU2VydmljZS5jYWxjdWxhdGVGaW5hbFNjb3JlKFxuICAgICAgICAgICAgICAgIHRoaXMuc3ViRm9ybS5zdWJtaXNzaW9ucyxcbiAgICAgICAgICAgICAgICB0aGlzLm1heFBvc3NpYmxlR29vZFNjb3JlLFxuICAgICAgICAgICAgICAgIHRoaXMubWF4UG9zc2libGVCYWRTY29yZVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdGhpcy5zdWJGb3JtLnNjb3JlcyA9IG51bGw7IC8vIG9yIDAsIGRlcGVuZGluZyBvbiBob3cgeW91IHdhbnQgdG8gcmVwcmVzZW50IFwibm8gc2NvcmUgeWV0XCJcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6KGVycm9yOmFueSk9Pnt9XG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuYWxsb3dDb3B5ID0gdGhpcy5zdWJGb3JtLnByb3BlcnR5Py5hbGxvd0NvcHk7XG4gICAgdGhpcy5hbGxvd0RlbGV0ZSA9IHRoaXMuc3ViRm9ybS5wcm9wZXJ0eT8uYWxsb3dEZWxldGU7XG4gICAgdGhpcy5jb3B5U3ViRm9ybWRhdGEgPSB0aGlzLnN1YkZvcm0/LmNvcHlTdWJmb3JtTWV0YTtcbiAgICB0aGlzLnRyeUxvYWRQcmV2aW91c1N1Ym1pc3Npb25zKCk7XG4gICAgaWYgKHRoaXMuc3ViRm9ybS5wcm9wZXJ0eS5zdWJGb3JtU3RydWN0dXJlID09ICdzaW5nbGUnKSB7XG4gICAgICB0aGlzLmJpbmRBbnN3ZXJzVG9Gb3JtRWxlbWVudHMoKTtcbiAgICAgIHRoaXMubG9hZENvbXBvbmVudCgpO1xuICAgICAgdGhpcy53aGVuQ2xhdXNlU2VydmljZS5hZGRHcmlkc0Zyb21TdWJmb3JtKHRoaXMuc3ViRm9ybSk7XG4gICAgfVxuXG4gICAgY29uc3QgeyBnb29kTWF4LCBiYWRNYXggfSA9IHRoaXMuc2NvcmVDYWxjU2VydmljZS5nZXRNYXhQb3NzaWJsZVNjb3JlKFxuICAgICAgdGhpcy5zdWJGb3JtXG4gICAgKTtcbiAgICB0aGlzLm1heFBvc3NpYmxlR29vZFNjb3JlID0gZ29vZE1heDtcbiAgICB0aGlzLm1heFBvc3NpYmxlQmFkU2NvcmUgPSBiYWRNYXg7XG4gIH1cblxuICBlZGl0b3JDcmVhdGVkKGVkaXRvckluc3RhbmNlOiBhbnkpIHtcbiAgICB0aGlzLmVkaXRvciA9IGVkaXRvckluc3RhbmNlO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBsb2FkQ29tcG9uZW50KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuY29tcG9uZW50VG9Mb2FkID0gYXdhaXQgdGhpcy5sb2FkRm9ybUVsZW1lbnRzQ29tcG9uZW50KCk7XG4gICAgdGhpcy5pbmplY3RvciA9IHRoaXMuY3JlYXRlSW5qZWN0b3IoKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgbG9hZEZvcm1FbGVtZW50c0NvbXBvbmVudCgpIHtcbiAgICBjb25zdCB7IEZvcm1FbGVtZW50c0NvbXBvbmVudCB9ID0gYXdhaXQgaW1wb3J0KCcuLi9mb3JtLWVsZW1lbnRzL2Zvcm0tZWxlbWVudHMuY29tcG9uZW50Jyk7XG4gICAgcmV0dXJuIEZvcm1FbGVtZW50c0NvbXBvbmVudDtcbiAgfVxuXG4gIGNyZWF0ZUluamVjdG9yKCk6IEluamVjdG9yIHtcbiAgICByZXR1cm4gSW5qZWN0b3IuY3JlYXRlKHtcbiAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7IHByb3ZpZGU6ICdncmlkJywgdXNlVmFsdWU6IHRoaXMuZ3JpZD8uZWxlbWVudC5jaGlsZExvZ2ljcyAgfSxcbiAgICAgICAgeyBwcm92aWRlOiAnc3RhdGUnLCB1c2VWYWx1ZTogJ2NoaWxkJyB9LFxuICAgICAgXSxcbiAgICB9KTtcbiAgfVxuXG4gIGRlY29kZUh0bWwoaHRtbDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCB0ZXh0QXJlYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RleHRhcmVhJyk7XG4gICAgdGV4dEFyZWEuaW5uZXJIVE1MID0gaHRtbDtcbiAgICByZXR1cm4gdGV4dEFyZWEudmFsdWU7XG4gIH1cblxuICBiaW5kQW5zd2Vyc1RvRm9ybUVsZW1lbnRzKCkge1xuICAgIGNvbnN0IGJpbmRBbnN3ZXJzID0gKGZvcm1FbGVtZW50czogYW55W10sIHN1Ym1pc3Npb25zOiBhbnlbXSkgPT4ge1xuICAgICAgZm9ybUVsZW1lbnRzPy5mb3JFYWNoKChncmlkczogYW55KSA9PiB7XG4gICAgICAgIGdyaWRzPy5ncmlkPy5mb3JFYWNoKFxuICAgICAgICAgIChmb3JtRWxlbWVudDogeyBlbnRpdHlUeXBlOiBzdHJpbmc7IGVsZW1lbnQ6IGFueSB9KSA9PiB7XG4gICAgICAgICAgICBpZiAoZm9ybUVsZW1lbnQuZW50aXR5VHlwZSA9PT0gJ1FVRVNUSU9OJykge1xuICAgICAgICAgICAgICBjb25zdCBzdWJtaXNzaW9uID0gc3VibWlzc2lvbnMuZmluZCgoc3ViOiB7IGFuc3dlcnM6IGFueVtdIH0pID0+XG4gICAgICAgICAgICAgICAgc3ViLmFuc3dlcnMuc29tZShcbiAgICAgICAgICAgICAgICAgIChhbnM6IHsgcXVlc3Rpb25JZDogYW55IH0pID0+XG4gICAgICAgICAgICAgICAgICAgIGFucy5xdWVzdGlvbklkID09PSBmb3JtRWxlbWVudC5lbGVtZW50LmlkXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgIGlmIChzdWJtaXNzaW9uKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYW5zd2VyID0gc3VibWlzc2lvbi5hbnN3ZXJzLmZpbmQoXG4gICAgICAgICAgICAgICAgICAoYW5zOiB7IHF1ZXN0aW9uSWQ6IGFueSB9KSA9PlxuICAgICAgICAgICAgICAgICAgICBhbnMucXVlc3Rpb25JZCA9PT0gZm9ybUVsZW1lbnQuZWxlbWVudC5pZFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgaWYgKGFuc3dlcikge1xuICAgICAgICAgICAgICAgICAgZm9ybUVsZW1lbnQuZWxlbWVudC5hbnN3ZXIgPSBhbnN3ZXIuYW5zd2VyO1xuICAgICAgICAgICAgICAgICAgZm9ybUVsZW1lbnQuZWxlbWVudC5hbnN3ZXJJZCA9IGFuc3dlci5hbnN3ZXJJZDtcbiAgICAgICAgICAgICAgICAgIGZvcm1FbGVtZW50LmVsZW1lbnQudmFsaWRhdGlvbiA9IHRydWU7XG4gICAgICAgICAgICAgICAgICBmb3JtRWxlbWVudC5lbGVtZW50LmF0dGFjaG1lbnRzID0gYW5zd2VyLmF0dGFjaG1lbnRzO1xuICAgICAgICAgICAgICAgICAgZm9ybUVsZW1lbnQuZWxlbWVudC5hbW91bnRJbldvcmRzID0gYW5zd2VyLmFtb3VudEluV29yZHM7XG4gICAgICAgICAgICAgICAgICB0aGlzLnN1YkZvcm0uc3VibWlzc2lvbklkID0gc3VibWlzc2lvbi5zdWJtaXNzaW9uSWQ7XG4gICAgICAgICAgICAgICAgICBmb3JtRWxlbWVudC5lbGVtZW50LmFuc3dlckN1cnJlbmN5ID0gYW5zd2VyLmFuc3dlckN1cnJlbmN5O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmIChmb3JtRWxlbWVudC5lbGVtZW50LmNoaWxkTG9naWNzKSB7XG4gICAgICAgICAgICAgICAgZm9ybUVsZW1lbnQuZWxlbWVudC5jaGlsZExvZ2ljcy5mb3JFYWNoKFxuICAgICAgICAgICAgICAgICAgKGNoaWxkTG9naWM6IHsgcm93czogYW55W10gfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBiaW5kQW5zd2VycyhjaGlsZExvZ2ljLnJvd3MsIHN1Ym1pc3Npb25zKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgfSk7XG4gICAgfTtcblxuICAgIGlmICh0aGlzLnN1YkZvcm0gJiYgdGhpcy5zdWJGb3JtLnJvd3MgJiYgdGhpcy5zdWJGb3JtLnN1Ym1pc3Npb25zKSB7XG4gICAgICBiaW5kQW5zd2Vycyh0aGlzLnN1YkZvcm0ucm93cywgdGhpcy5zdWJGb3JtLnN1Ym1pc3Npb25zKTtcbiAgICB9XG4gIH1cblxuICB1cGRhdGVTdWJGb3JtV2l0aFN1Ym1pc3Npb25zKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLnN1YkZvcm0gPSBldmVudDtcbiAgICB0aGlzLnN1YkZvcm1DaGFuZ2UuZW1pdCh0aGlzLnN1YkZvcm0pO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3ViRm9ybS5kZXNjcmlwdGlvbikge1xuICAgICAgdGhpcy5kZWNvZGVkRGVzY3JpcHRpb24gPSB0aGlzLmRlY29kZUh0bWwodGhpcy5zdWJGb3JtLmRlc2NyaXB0aW9uKTtcbiAgICB9XG4gIH1cblxuICBjb3B5U3ViZm9ybSgpIHtcbiAgICBjb25zdCB7IHVwZGF0ZWRQYWdlcyB9ID0gdGhpcy5zdWJmb3JtQ29weVNlcnZpY2UuY29weVN1YmZvcm0odGhpcy5zdWJGb3JtLCB0aGlzLnBhZ2VzKTtcblxuICAgIHRoaXMucGFnZXMgPSB1cGRhdGVkUGFnZXM7XG4gICAgLy8gRW1pdCB1cGRhdGVkIHBhZ2VzIG9yIHN1YkZvcm1DaGFuZ2UgaWYgbmVlZGVkXG5cbiAgICAvLyBPcHRpb25hbGx5IHBhc3MgbWV0YSB0byBwYXJlbnQgaWYgbmVlZGVkXG4gICAgLy8gdGhpcy5jb3B5TWV0YS5lbWl0KGNvcHlTdWJGb3JtTWV0YSk7XG4gIH1cblxuXG4gIHVwZGF0ZVN1YmZvcm1EYXRhKGV2ZW50OiBhbnksIHN1YmZvcm1JZDogc3RyaW5nLCBmaWVsZDogJ3RpdGxlJyB8ICdkZXNjcmlwdGlvbicpIHtcbiAgICBpZih0aGlzLmNvcHlTdWJGb3JtZGF0YS5pZCA9PSBzdWJmb3JtSWQpe1xuICAgICAgdGhpcy5jb3B5U3ViRm9ybWRhdGFbZmllbGRdID0gZXZlbnQ7XG4gICAgfVxuICB9XG5cbiAgZGVsZXRlQ29weVN1YmZvcm0oc3ViZm9ybUlkOiBzdHJpbmcpIHtcbiAgICBjb25zdCBkaWFsb2dDb25maWcgPSBuZXcgTWF0RGlhbG9nQ29uZmlnKCk7XG4gICAgZGlhbG9nQ29uZmlnLmRhdGEgPSB7XG4gICAgICBtZXNzYWdlSGVhZGVyOiBcIkFyZSB5b3Ugc3VyZT9cIixcbiAgICAgIG1lc3NhZ2U6IFwiRG8geW91IHdhbnQgdG8gZGVsZXRlIHRoaXMgc3ViZm9ybT9cIlxuICAgIH07XG4gICAgZGlhbG9nQ29uZmlnLmhhc0JhY2tkcm9wID0gdHJ1ZTtcbiAgICBkaWFsb2dDb25maWcuZGlzYWJsZUNsb3NlID0gdHJ1ZTtcblxuICAgIHRoaXMuZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihDb25maXJtRGlhbG9nQ29tcG9uZW50LCBkaWFsb2dDb25maWcpO1xuXG4gICAgdGhpcy5kaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKHJlc3VsdDogYW55KSA9PiB7XG4gICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgIC8vIDEuIFJlbW92ZSB0aGUgY29waWVkIHN1YmZvcm0gZnJvbSB0aGUgcGFnZXNcbiAgICAgICAgZm9yIChjb25zdCBwYWdlIG9mIHRoaXMucGFnZXMpIHtcbiAgICAgICAgICBjb25zdCByb3dJbmRleCA9IHBhZ2Uucm93cy5maW5kSW5kZXgoKHJvdzogYW55KSA9PlxuICAgICAgICAgICAgcm93LmdyaWQuc29tZSgoZ3JpZDogYW55KSA9PlxuICAgICAgICAgICAgICBncmlkLmVudGl0eVR5cGUgPT09ICdTVUJGT1JNJyAmJlxuICAgICAgICAgICAgICBncmlkLmVsZW1lbnQ/LmlkID09PSBzdWJmb3JtSWQgJiZcbiAgICAgICAgICAgICAgZ3JpZC5lbGVtZW50Py5jb3BpZWRcbiAgICAgICAgICAgIClcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgaWYgKHJvd0luZGV4ICE9PSAtMSkge1xuICAgICAgICAgICAgcGFnZS5yb3dzLnNwbGljZShyb3dJbmRleCwgMSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyAyLiBSZW1vdmUgdGhpcyBzdWJmb3JtSWQgZnJvbSBhbnkgc3ViZm9ybSdzIGNvcGllZEZvcm1zIGFycmF5XG4gICAgICAgIGZvciAoY29uc3QgcGFnZSBvZiB0aGlzLnBhZ2VzKSB7XG4gICAgICAgICAgZm9yIChjb25zdCByb3cgb2YgcGFnZS5yb3dzKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGdyaWQgb2Ygcm93LmdyaWQpIHtcbiAgICAgICAgICAgICAgaWYgKGdyaWQuZW50aXR5VHlwZSA9PT0gJ1NVQkZPUk0nICYmIGdyaWQuZWxlbWVudD8uY29waWVkRm9ybXMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpbmRleCA9IGdyaWQuZWxlbWVudC5jb3BpZWRGb3Jtcy5pbmRleE9mKHN1YmZvcm1JZCk7XG4gICAgICAgICAgICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgZ3JpZC5lbGVtZW50LmNvcGllZEZvcm1zLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuXG4gIGRlbGV0ZU1haW5TdWJmb3JtKHN1YmZvcm1JZDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgZGlhbG9nQ29uZmlnID0gbmV3IE1hdERpYWxvZ0NvbmZpZygpO1xuICAgIGRpYWxvZ0NvbmZpZy5kYXRhID0ge1xuICAgICAgbWVzc2FnZUhlYWRlcjogXCJBcmUgeW91IHN1cmU/XCIsXG4gICAgICBtZXNzYWdlOiBcIkRvIHlvdSB3YW50IHRvIGRlbGV0ZSB0aGlzIHN1YmZvcm0/XCJcbiAgICB9O1xuICAgIGRpYWxvZ0NvbmZpZy5oYXNCYWNrZHJvcCA9IHRydWU7XG4gICAgZGlhbG9nQ29uZmlnLmRpc2FibGVDbG9zZSA9IHRydWU7XG5cbiAgICB0aGlzLmRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oQ29uZmlybURpYWxvZ0NvbXBvbmVudCwgZGlhbG9nQ29uZmlnKTtcblxuICAgIHRoaXMuZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXN1bHQ6IGFueSkgPT4ge1xuICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICBmb3IgKGNvbnN0IHBhZ2Ugb2YgdGhpcy5wYWdlcykge1xuICAgICAgICAgIGZvciAoY29uc3Qgcm93IG9mIHBhZ2Uucm93cykge1xuICAgICAgICAgICAgZm9yIChjb25zdCBncmlkSXRlbSBvZiByb3cuZ3JpZCkge1xuICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgZ3JpZEl0ZW0uZW50aXR5VHlwZSA9PT0gJ1NVQkZPUk0nICYmXG4gICAgICAgICAgICAgICAgZ3JpZEl0ZW0uZWxlbWVudD8uaWQgPT09IHN1YmZvcm1JZFxuICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBncmlkSXRlbS5lbGVtZW50LmRlbGV0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHJldHVybjsgLy8gc3RvcCBhZnRlciB0aGUgZmlyc3QgbWF0Y2hcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgY3JlYXRlU3VibWlzc2lvbnNGcm9tQXBpKGFwaVN1Ym1pc3Npb25zOiBhbnlbXSwgc3ViZm9ybTogYW55KTogU3VibWlzc2lvbltdIHtcbiAgICByZXR1cm4gYXBpU3VibWlzc2lvbnMubWFwKGFwaVN1Ym1pc3Npb24gPT4ge1xuICAgICAgY29uc3QgYW5zd2VyczogQW5zd2VyW10gPSBbXTtcblxuICAgICAgc3ViZm9ybS5yb3dzLmZvckVhY2goKHJvdzogYW55KSA9PiB7XG4gICAgICAgIHJvdy5ncmlkLmZvckVhY2goKGdyaWRJdGVtOiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAoZ3JpZEl0ZW0uZW50aXR5VHlwZSAhPT0gJ1FVRVNUSU9OJykgcmV0dXJuO1xuXG4gICAgICAgICAgY29uc3QgZWxlbWVudCA9IGdyaWRJdGVtLmVsZW1lbnQ7XG4gICAgICAgICAgY29uc3QgcXVlc3Rpb25LZXkgPSBlbGVtZW50LnF1ZXN0aW9uO1xuICAgICAgICAgIGlmICghYXBpU3VibWlzc2lvbi5hbnN3ZXJzIHx8ICFhcGlTdWJtaXNzaW9uLmFuc3dlcnNbcXVlc3Rpb25LZXldKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IGFwaUFuc3dlciA9IGFwaVN1Ym1pc3Npb24uYW5zd2Vyc1txdWVzdGlvbktleV07XG4gICAgICAgICAgLy8g4pyFIENBU0UgMTogRmlsZSB1cGxvYWQgKGFycmF5IHdpdGggbmFtZSAmIHVybClcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBBcnJheS5pc0FycmF5KGFwaUFuc3dlcikgJiZcbiAgICAgICAgICAgIGFwaUFuc3dlci5sZW5ndGggJiZcbiAgICAgICAgICAgIGFwaUFuc3dlclswXS5uYW1lICYmXG4gICAgICAgICAgICBhcGlBbnN3ZXJbMF0udXJsXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBhbnN3ZXJzLnB1c2goe1xuICAgICAgICAgICAgICBxdWVzdGlvbklkOiBlbGVtZW50LmlkLFxuICAgICAgICAgICAgICBhbnN3ZXI6IG51bGwsXG4gICAgICAgICAgICAgIGF0dGFjaG1lbnRzOiBhcGlBbnN3ZXIubWFwKChmaWxlOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgZmlsZUlkOiBmaWxlLmlkLFxuICAgICAgICAgICAgICAgIGZpbGVOYW1lOiBmaWxlLm5hbWUsXG4gICAgICAgICAgICAgICAgZmlsZVVybDogZmlsZS51cmxcbiAgICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgICBjb3BpZWRBdHRhY2htZW50czogYXBpQW5zd2VyLm1hcCgoZmlsZTogYW55KSA9PiBmaWxlLmlkKVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8g4pyFIENBU0UgMjogTm9ybWFsIHF1ZXN0aW9uIG9iamVjdFxuICAgICAgICAgIGFuc3dlcnMucHVzaCh7XG4gICAgICAgICAgICBxdWVzdGlvbklkOiBlbGVtZW50LmlkLFxuICAgICAgICAgICAgYW5zd2VyOiBhcGlBbnN3ZXIuYW5zd2VyID8/IG51bGwsXG4gICAgICAgICAgICBhdHRhY2htZW50czogYXBpQW5zd2VyLmZpbGVcbiAgICAgICAgICAgICAgPyBhcGlBbnN3ZXIuZmlsZS5tYXAoKGZpbGU6IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgIGZpbGVOYW1lOiBmaWxlLm5hbWUsXG4gICAgICAgICAgICAgICAgICBmaWxlVXJsOiBmaWxlLnVybFxuICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHNjb3JlczogYXBpQW5zd2VyLnNjb3JlcyxcbiAgICAgICAgICAgIG1heGltdW1Qb3NzaWJsZVNjb3JlOiBhcGlBbnN3ZXIubWF4aW11bVBvc3NpYmxlU2NvcmVcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc3VibWlzc2lvbklkOiB1dWlkdjQoKSxcbiAgICAgICAgc291cmNlU3VibWlzc2lvbklkOiBhcGlTdWJtaXNzaW9uLnN1Ym1pc3Npb25JZCxcbiAgICAgICAgYW5zd2VycyxcbiAgICAgICAgY29uZmlndXJhdGlvbjoge1xuICAgICAgICAgIGlzRGVmYXVsdDogZmFsc2UsXG4gICAgICAgICAgYWxsb3dEZWxldGU6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgc2NvcmVzOiBhcGlTdWJtaXNzaW9uLnNjb3JlXG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0IGlzSW52YWxpZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLnZhbGlkYXRpb25TZXJ2aWNlLmdldEVycm9yTWVzc2FnZSh0aGlzLnN1YkZvcm0uaWQpO1xuICB9XG5cbiAgZ2V0IGVycm9yTWVzc2FnZSgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy52YWxpZGF0aW9uU2VydmljZS5nZXRFcnJvck1lc3NhZ2UodGhpcy5zdWJGb3JtLmlkKTtcbiAgfVxuXG4gIGNsZWFySW52YWxpZCgpe1xuICAgIHRoaXMudmFsaWRhdGlvblNlcnZpY2UuY2xlYXJJbnZhbGlkKHRoaXMuc3ViRm9ybS5pZCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50J10pXG4gICAgb25BbnlDbGljayhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIHRoaXMuY2xlYXJJbnZhbGlkKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kaWFsb2dSZWYpIHtcbiAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XG4gICAgfVxuICB9XG5cblxufVxuIiwiPGRpdlxuICBjbGFzcz1cIm91dGVyLWNvbnRhaW5lciBtYi00IHB4LTNcIlxuICBbaWRdPVwiJ3F1ZXN0aW9uLScgKyBzdWJGb3JtLmlkXCJcbiAgW2F0dHIubmFtZV09XCJzdWJGb3JtLnRlc3RFbGVtZW50TmFtZVwiXG4gICpuZ0lmPVwiIXN1YkZvcm0uZGVsZXRlZFwiXG4+XG4gIDxkaXYgY2xhc3M9XCJib2R5IHB5LTEgcHgtMVwiPlxuICAgIDxkaXYgY2xhc3M9XCJ0YWItY29udGVudCBwdC00IHBiLTMgcHgtM1wiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFzdWJGb3JtLmNvcGllZDsgZWxzZSBjb3B5U3ViZm9ybUNvbnRhaW5lclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic3ViZm9ybS1oZWFkZXJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0YS1jb250YWluZXJcIj5cbiAgICAgICAgICAgIDxwIGNsYXNzPVwic2VjdGlvblRpdGxlXCI+e3sgc3ViRm9ybS50aXRsZSB9fTwvcD5cbiAgICAgICAgICAgIDxwIFtpbm5lckhUTUxdPVwiZGVjb2RlZERlc2NyaXB0aW9uXCIgY2xhc3M9XCJkZXNjcmlwdGlvblwiPjwvcD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC0zXCI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwiZmluYWxTY29yZVwiXG4gICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBzIG9mIHN1YkZvcm0/LnNjb3Jlc1wiXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICBnb29kU2NvcmU6IHMuc2NvcmVUeXBlID09PSAnR09PRF9TQ09SRScsXG4gICAgICAgICAgICAgICAgYmFkU2NvcmU6IHMuc2NvcmVUeXBlID09PSAnQkFEX1NDT1JFJ1xuICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzY29yZVRpdGxlXCI+U2NvcmU8L3NwYW4+XG4gICAgICAgICAgICAgIDxwIGNsYXNzPVwibWItMFwiPnt7IHMuc2NvcmUgfX08L3A+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpY29uLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgc3JjPVwiYXNzZXRzL2ljb25zL2NvcHktaWNvbi5zdmdcIlxuICAgICAgICAgICAgICAgIGFsdD1cImNvcHktaWNvblwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImNvcHlTdWJmb3JtKClcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiYWxsb3dDb3B5XCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgIHNyYz1cImFzc2V0cy9pY29ucy9kZWxldGUtaWNvbi5zdmdcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZGVsZXRlLWljb24gbXMtM1wiXG4gICAgICAgICAgICAgICAgYWx0PVwiZGVsZXRlIGljb25cIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJkZWxldGVNYWluU3ViZm9ybShzdWJGb3JtLmlkKVwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJhbGxvd0RlbGV0ZVwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjY29weVN1YmZvcm1Db250YWluZXI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZCBnYXAtNFwiPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJmaW5hbFNjb3JlXCJcbiAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHMgb2Ygc3ViRm9ybT8uc2NvcmVzXCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgIGdvb2RTY29yZTogcy5zY29yZVR5cGUgPT09ICdHT09EX1NDT1JFJyxcbiAgICAgICAgICAgICAgICBiYWRTY29yZTogcy5zY29yZVR5cGUgPT09ICdCQURfU0NPUkUnXG4gICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNjb3JlVGl0bGVcIj5TY29yZTwvc3Bhbj5cbiAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtYi0wXCI+e3sgcy5zY29yZSB9fTwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpY29uLWNvbnRhaW5lclwiIChjbGljayk9XCJkZWxldGVDb3B5U3ViZm9ybShzdWJGb3JtLmlkKVwiPlxuICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICBzcmM9XCJhc3NldHMvaWNvbnMvZGVsZXRlLWljb24uc3ZnXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJkZWxldGUtaWNvblwiXG4gICAgICAgICAgICAgIGFsdD1cImRlbGV0ZSBpY29uXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29weS1zdWJmb3JtLWNvbnRhaW5lciBtYi0zXCI+XG4gICAgICAgICAgPHA+VGl0bGU8L3A+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cInN1YmZvcm1UaXRsZVwiXG4gICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJ1cGRhdGVTdWJmb3JtRGF0YSgkZXZlbnQsIHN1YkZvcm0uaWQsICd0aXRsZScpXCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxwIGNsYXNzPVwibXQtM1wiPkRlc2NyaXB0aW9uPC9wPlxuICAgICAgICAgIDxxdWlsbC1lZGl0b3JcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwic3ViZm9ybURlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIlxuICAgICAgICAgICAgICB1cGRhdGVTdWJmb3JtRGF0YSgkZXZlbnQsIHN1YkZvcm0uaWQsICdkZXNjcmlwdGlvbicpXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgKG9uRWRpdG9yQ3JlYXRlZCk9XCJlZGl0b3JDcmVhdGVkKCRldmVudClcIlxuICAgICAgICAgICAgY2xhc3M9XCJlZGl0b3JcIlxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJcIlxuICAgICAgICAgID48L3F1aWxsLWVkaXRvcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICA8ZGl2ICpuZ0lmPVwic3ViRm9ybS5wcm9wZXJ0eS5zdWJGb3JtU3RydWN0dXJlID09ICdtdWx0aXBsZSdcIj5cbiAgICAgICAgPGxpYi1tdWx0aXBsZS1zdWJmb3JtXG4gICAgICAgICAgKm5nSWY9XCJzdWJGb3JtLnByb3BlcnR5LnN1YkZvcm1UeXBlID09PSAndGFibGUnXCJcbiAgICAgICAgICBbc3ViRm9ybV09XCJzdWJGb3JtXCJcbiAgICAgICAgICAoc3ViRm9ybUNoYW5nZSk9XCJ1cGRhdGVTdWJGb3JtV2l0aFN1Ym1pc3Npb25zKCRldmVudClcIlxuICAgICAgICAgIFthY2NlcHRlZExhbmd1YWdlXT1cImFjY2VwdGVkTGFuZ3VhZ2VcIlxuICAgICAgICA+PC9saWItbXVsdGlwbGUtc3ViZm9ybT5cblxuICAgICAgICA8bGliLWlubGluZS1tdWx0aXBsZS1zdWJmb3JtXG4gICAgICAgICAgKm5nSWY9XCJzdWJGb3JtLnByb3BlcnR5LnN1YkZvcm1UeXBlID09PSAnaW5saW5lJ1wiXG4gICAgICAgICAgW3N1YkZvcm1dPVwic3ViRm9ybVwiXG4gICAgICAgICAgKHN1YkZvcm1DaGFuZ2UpPVwidXBkYXRlU3ViRm9ybVdpdGhTdWJtaXNzaW9ucygkZXZlbnQpXCJcbiAgICAgICAgICBbYWNjZXB0ZWRMYW5ndWFnZV09XCJhY2NlcHRlZExhbmd1YWdlXCJcbiAgICAgICAgPjwvbGliLWlubGluZS1tdWx0aXBsZS1zdWJmb3JtPlxuICAgICAgICA8bGliLWNhcmQtc3ViZm9ybVxuICAgICAgICAgICpuZ0lmPVwic3ViRm9ybS5wcm9wZXJ0eS5zdWJGb3JtVHlwZSA9PT0gJ2NhcmQnXCJcbiAgICAgICAgICBbc3ViRm9ybV09XCJzdWJGb3JtXCJcbiAgICAgICAgICBbYWNjZXB0ZWRMYW5ndWFnZV09XCJhY2NlcHRlZExhbmd1YWdlXCJcbiAgICAgICAgICAoc3ViRm9ybUNoYW5nZSk9XCJ1cGRhdGVTdWJGb3JtV2l0aFN1Ym1pc3Npb25zKCRldmVudClcIlxuICAgICAgICAgIFtlZGl0XT1cImVkaXRcIlxuICAgICAgICA+PC9saWItY2FyZC1zdWJmb3JtPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2ICpuZ0lmPVwic3ViRm9ybS5wcm9wZXJ0eS5zdWJGb3JtU3RydWN0dXJlID09ICdzaW5nbGUnXCI+XG4gICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHJvdyBvZiBzdWJGb3JtLnJvd3NcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBncmlkIG9mIHJvdy5ncmlkXCJcbiAgICAgICAgICAgICAgW25nU3R5bGVdPVwieyAnd2lkdGguJSc6IGdyaWQuZWxlbWVudC5jb3VudCAqICgxMDAgLyAxMikgfVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJncmlkLmVudGl0eVR5cGUgPT09ICdRVUVTVElPTicgJiYgZ3JpZC5zaG93XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBbbmdTd2l0Y2hdPVwiZ3JpZC5lbGVtZW50LmZvcm1FbGVtZW50LmVsZW1lbnRUeXBlXCI+XG4gICAgICAgICAgICAgICAgICA8bGliLWNoZWNrLWJveC1maWVsZHNcbiAgICAgICAgICAgICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidDSEVDS19CT1gnXCJcbiAgICAgICAgICAgICAgICAgICAgW3F1ZXN0aW9uXT1cImdyaWQuZWxlbWVudFwiXG4gICAgICAgICAgICAgICAgICA+PC9saWItY2hlY2stYm94LWZpZWxkcz5cbiAgICAgICAgICAgICAgICAgIDxsaWItZGF0ZS10aW1lLWZpZWxkc1xuICAgICAgICAgICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ0RBVEVfVElNRSdcIlxuICAgICAgICAgICAgICAgICAgICBbcXVlc3Rpb25dPVwiZ3JpZC5lbGVtZW50XCJcbiAgICAgICAgICAgICAgICAgID48L2xpYi1kYXRlLXRpbWUtZmllbGRzPlxuICAgICAgICAgICAgICAgICAgPGxpYi1kcm9wLWRvd24tZmllbGRzXG4gICAgICAgICAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCInRFJPUF9ET1dOJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtxdWVzdGlvbl09XCJncmlkLmVsZW1lbnRcIlxuICAgICAgICAgICAgICAgICAgPjwvbGliLWRyb3AtZG93bi1maWVsZHM+XG4gICAgICAgICAgICAgICAgICA8bGliLWZpbGUtcGlja2VyLWZpZWxkc1xuICAgICAgICAgICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ0ZJTEVfUElDS0VSJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtxdWVzdGlvbl09XCJncmlkLmVsZW1lbnRcIlxuICAgICAgICAgICAgICAgICAgPjwvbGliLWZpbGUtcGlja2VyLWZpZWxkcz5cbiAgICAgICAgICAgICAgICAgIDxsaWItbG9jYXRpb24tZmllbGRzXG4gICAgICAgICAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCInTE9DQVRJT04nXCJcbiAgICAgICAgICAgICAgICAgICAgW3F1ZXN0aW9uXT1cImdyaWQuZWxlbWVudFwiXG4gICAgICAgICAgICAgICAgICA+PC9saWItbG9jYXRpb24tZmllbGRzPlxuICAgICAgICAgICAgICAgICAgPGxpYi1tYWlsLWZpZWxkc1xuICAgICAgICAgICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ0VNQUlMJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtxdWVzdGlvbl09XCJncmlkLmVsZW1lbnRcIlxuICAgICAgICAgICAgICAgICAgPjwvbGliLW1haWwtZmllbGRzPlxuICAgICAgICAgICAgICAgICAgPGxpYi1tb2JpbGUtZmllbGRzXG4gICAgICAgICAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCInTU9CSUxFJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtxdWVzdGlvbl09XCJncmlkLmVsZW1lbnRcIlxuICAgICAgICAgICAgICAgICAgPjwvbGliLW1vYmlsZS1maWVsZHM+XG4gICAgICAgICAgICAgICAgICA8bGliLW51bWJlci1maWVsZHNcbiAgICAgICAgICAgICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidOVU1CRVInXCJcbiAgICAgICAgICAgICAgICAgICAgW3F1ZXN0aW9uXT1cImdyaWQuZWxlbWVudFwiXG4gICAgICAgICAgICAgICAgICAgIFtyb3dJZF09XCInMCdcIlxuICAgICAgICAgICAgICAgICAgPjwvbGliLW51bWJlci1maWVsZHM+XG4gICAgICAgICAgICAgICAgICA8bGliLXBhc3N3b3JkLWZpZWxkc1xuICAgICAgICAgICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ1BBU1NXT1JEJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtxdWVzdGlvbl09XCJncmlkLmVsZW1lbnRcIlxuICAgICAgICAgICAgICAgICAgPjwvbGliLXBhc3N3b3JkLWZpZWxkcz5cbiAgICAgICAgICAgICAgICAgIDxsaWItcmFkaW8tYnV0dG9uLWZpZWxkc1xuICAgICAgICAgICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ1JBRElPX0JVVFRPTidcIlxuICAgICAgICAgICAgICAgICAgICBbcXVlc3Rpb25dPVwiZ3JpZC5lbGVtZW50XCJcbiAgICAgICAgICAgICAgICAgID48L2xpYi1yYWRpby1idXR0b24tZmllbGRzPlxuICAgICAgICAgICAgICAgICAgPGxpYi1yaWNoLXRleHQtZWRpdG9yLWZpZWxkc1xuICAgICAgICAgICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ1JJQ0hfVEVYVF9FRElUT1InXCJcbiAgICAgICAgICAgICAgICAgICAgW3F1ZXN0aW9uXT1cImdyaWQuZWxlbWVudFwiXG4gICAgICAgICAgICAgICAgICA+PC9saWItcmljaC10ZXh0LWVkaXRvci1maWVsZHM+XG4gICAgICAgICAgICAgICAgICA8bGliLXNlbGVjdGlvbi1tYXRyaXgtZmllbGRzXG4gICAgICAgICAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCInU0VMRUNUSU9OX01BVFJJWCdcIlxuICAgICAgICAgICAgICAgICAgICBbcXVlc3Rpb25dPVwiZ3JpZC5lbGVtZW50XCJcbiAgICAgICAgICAgICAgICAgICAgW2FjY2VwdGVkTGFuZ3VhZ2VdPVwiYWNjZXB0ZWRMYW5ndWFnZVwiXG4gICAgICAgICAgICAgICAgICA+PC9saWItc2VsZWN0aW9uLW1hdHJpeC1maWVsZHM+XG4gICAgICAgICAgICAgICAgICA8bGliLXNpZ25hdHVyZS1maWVsZHNcbiAgICAgICAgICAgICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidTSUdOQVRVUkUnXCJcbiAgICAgICAgICAgICAgICAgICAgW3F1ZXN0aW9uXT1cImdyaWQuZWxlbWVudFwiXG4gICAgICAgICAgICAgICAgICA+PC9saWItc2lnbmF0dXJlLWZpZWxkcz5cbiAgICAgICAgICAgICAgICAgIDxsaWItc2xpZGVyLWZpZWxkc1xuICAgICAgICAgICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ1NMSURFUidcIlxuICAgICAgICAgICAgICAgICAgICBbcXVlc3Rpb25dPVwiZ3JpZC5lbGVtZW50XCJcbiAgICAgICAgICAgICAgICAgID48L2xpYi1zbGlkZXItZmllbGRzPlxuICAgICAgICAgICAgICAgICAgPGxpYi10ZXJtcy1hbmQtY29uZGl0aW9uLWZpZWxkc1xuICAgICAgICAgICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ1RFUk1TX0FORF9DT05ESVRJT04nXCJcbiAgICAgICAgICAgICAgICAgICAgW3F1ZXN0aW9uXT1cImdyaWQuZWxlbWVudFwiXG4gICAgICAgICAgICAgICAgICA+PC9saWItdGVybXMtYW5kLWNvbmRpdGlvbi1maWVsZHM+XG4gICAgICAgICAgICAgICAgICA8bGliLXRleHQtYXJlYS1maWVsZHNcbiAgICAgICAgICAgICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidURVhUX0FSRUEnXCJcbiAgICAgICAgICAgICAgICAgICAgW3F1ZXN0aW9uXT1cImdyaWQuZWxlbWVudFwiXG4gICAgICAgICAgICAgICAgICA+PC9saWItdGV4dC1hcmVhLWZpZWxkcz5cbiAgICAgICAgICAgICAgICAgIDxsaWItdGV4dC1maWVsZHNcbiAgICAgICAgICAgICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidURVhUX0JPWCdcIlxuICAgICAgICAgICAgICAgICAgICBbcXVlc3Rpb25dPVwiZ3JpZC5lbGVtZW50XCJcbiAgICAgICAgICAgICAgICAgID48L2xpYi10ZXh0LWZpZWxkcz5cbiAgICAgICAgICAgICAgICAgIDxsaWItdG9nZ2xlLXN3aXRjaC1maWVsZHNcbiAgICAgICAgICAgICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidUT0dHTEVfU1dJVENIJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtxdWVzdGlvbl09XCJncmlkLmVsZW1lbnRcIlxuICAgICAgICAgICAgICAgICAgICBbYWNjZXB0ZWRMYW5ndWFnZV09XCJhY2NlcHRlZExhbmd1YWdlXCJcbiAgICAgICAgICAgICAgICAgID48L2xpYi10b2dnbGUtc3dpdGNoLWZpZWxkcz5cbiAgICAgICAgICAgICAgICAgIDxsaWItdXJsLWZpZWxkc1xuICAgICAgICAgICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ1VSTCdcIlxuICAgICAgICAgICAgICAgICAgICBbcXVlc3Rpb25dPVwiZ3JpZC5lbGVtZW50XCJcbiAgICAgICAgICAgICAgICAgID48L2xpYi11cmwtZmllbGRzPlxuICAgICAgICAgICAgICAgICAgPGxpYi1jdXJyZW5jeS1maWVsZHNcbiAgICAgICAgICAgICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidDVVJSRU5DWSdcIlxuICAgICAgICAgICAgICAgICAgICBbcXVlc3Rpb25dPVwiZ3JpZC5lbGVtZW50XCJcbiAgICAgICAgICAgICAgICAgID48L2xpYi1jdXJyZW5jeS1maWVsZHM+XG4gICAgICAgICAgICAgICAgICA8bGliLWFnZ3JlZ2F0ZS1mdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ0FHR1JFR0FURV9GVU5DVElPTidcIlxuICAgICAgICAgICAgICAgICAgICBbcXVlc3Rpb25dPVwiZ3JpZC5lbGVtZW50XCJcbiAgICAgICAgICAgICAgICAgICAgW3Jvd0lkXT1cIicwJ1wiXG4gICAgICAgICAgICAgICAgICA+PC9saWItYWdncmVnYXRlLWZ1bmN0aW9uPlxuICAgICAgICAgICAgICAgICAgPGxpYi1oaWRkZW4tZmllbGRcbiAgICAgICAgICAgICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidISURERU5fRklFTEQnXCJcbiAgICAgICAgICAgICAgICAgICAgW3F1ZXN0aW9uXT1cImdyaWQuZWxlbWVudFwiXG4gICAgICAgICAgICAgICAgICA+PC9saWItaGlkZGVuLWZpZWxkPlxuICAgICAgICAgICAgICAgICAgPGxpYi1pZnJhbWUtZmllbGRzXG4gICAgICAgICAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCInSUZSQU1FX1dJREdFVCdcIlxuICAgICAgICAgICAgICAgICAgICBbcXVlc3Rpb25dPVwiZ3JpZC5lbGVtZW50XCJcbiAgICAgICAgICAgICAgICAgID48L2xpYi1pZnJhbWUtZmllbGRzPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPCEtLSA8bmctY29udGFpbmVyICpuZ0lmPVwiZ3JpZC5lbGVtZW50LmNoaWxkTG9naWNzXCI+XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZ2V0Q29tcG9uZW50Rm9yQ2hpbGRMb2dpY3MoZ3JpZC5lbGVtZW50LmNoaWxkTG9naWNzLCAnY2hpbGQnLCBncmlkLmVsZW1lbnQuYW5zd2VyKSBhcyBvdXRsZXRcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdDb21wb25lbnRPdXRsZXQ9XCJvdXRsZXQuY29tcG9uZW50IHwgYXN5bmM7IGluamVjdG9yOiBvdXRsZXQuaW5qZWN0b3JcIj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj4gLS0+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImdyaWQ/LmVsZW1lbnQ/LmNoaWxkTG9naWNzXCI+XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29tcG9uZW50VG9Mb2FkXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAqbmdDb21wb25lbnRPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudFRvTG9hZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0czoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkOiBncmlkPy5lbGVtZW50Py5jaGlsZExvZ2ljcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYW5zd2VyOiBncmlkPy5lbGVtZW50Py5hbnN3ZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlOiAnY2hpbGQnXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJncmlkLmVudGl0eVR5cGUgPT09ICdTRUNUSU9OJyAmJiBncmlkLnNob3dcIj5cbiAgICAgICAgICAgICAgICA8bGliLXNlY3Rpb24tZmllbGRzXG4gICAgICAgICAgICAgICAgICBbc2VjdGlvbl09XCJncmlkLmVsZW1lbnRcIlxuICAgICAgICAgICAgICAgID48L2xpYi1zZWN0aW9uLWZpZWxkcz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiAqbmdJZj1cImlzSW52YWxpZFwiIGNsYXNzPVwiZXJyb3ItbWVzc2FnZSBtdC00XCI+XG4gICAgICAgIHt7IGVycm9yTWVzc2FnZSB9fVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
355
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ViLWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm9ybS1zdWJtaXNzaW9uL3NyYy9xdWVzdGlvbi9zdWItZm9ybS9zdWItZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mb3JtLXN1Ym1pc3Npb24vc3JjL3F1ZXN0aW9uL3N1Yi1mb3JtL3N1Yi1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLFlBQVksRUFDWixRQUFRLEVBQ1IsS0FBSyxFQUVMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNwRixPQUFPLEVBQWEsZUFBZSxFQUFnQixNQUFNLDBCQUEwQixDQUFDO0FBR3BGLE9BQU8sRUFBRSxFQUFFLElBQUksTUFBTSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFZcEMsTUFBTSxPQUFPLGdCQUFnQjtJQXdCM0IsWUFDVSxrQkFBcUMsRUFDdEMsTUFBaUIsRUFDaEIsV0FBd0IsRUFDeEIsV0FBdUIsRUFDdkIsaUJBQW1DLEVBQ25DLGlCQUFvQyxFQUNwQyxnQkFBeUM7UUFOekMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFtQjtRQUN0QyxXQUFNLEdBQU4sTUFBTSxDQUFXO1FBQ2hCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBQ3ZCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBa0I7UUFDbkMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQXlCO1FBOUIxQyxZQUFPLEdBQVEsRUFBRSxDQUFDO1FBQ2xCLFNBQUks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LE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0TGlzdGVuZXIsXG4gIEluamVjdG9yLFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3ViZm9ybUNvcHlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvc3ViZm9ybS1jb3B5LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29uZmlybURpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uL2NvbmZpcm0tZGlhbG9nL2NvbmZpcm0tZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNYXREaWFsb2csIE1hdERpYWxvZ0NvbmZpZywgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IFN1Ym1pc3Npb24gfSBmcm9tICcuLi8uLi9tb2RlbHMvc3VibWlzc2lvbi5tb2RlbCc7XG5pbXBvcnQgeyBBbnN3ZXIgfSBmcm9tICcuLi8uLi9tb2RlbHMvYW5zd2VyLm1vZGVsJztcbmltcG9ydCB7IHY0IGFzIHV1aWR2NCB9IGZyb20gJ3V1aWQnO1xuaW1wb3J0IHsgRGF0YVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9kYXRhLnNlcnZpY2UnO1xuaW1wb3J0IHsgRm9ybVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9mb3JtLnNlcnZpY2UnO1xuaW1wb3J0IHsgV2hlbkNsYXVzZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy93aGVuQ2xhdXNlLnNlcnZpY2UnO1xuaW1wb3J0IHsgVmFsaWRhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy92YWxpZGF0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2NvcmVDYWxjdWxhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9zY29yZS5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLXN1Yi1mb3JtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3N1Yi1mb3JtLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc3ViLWZvcm0uY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgU3ViRm9ybUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIHN1YkZvcm06IGFueSA9IHt9O1xuICBASW5wdXQoKSBlZGl0OiBib29sZWFuID0gZmFsc2U7XG4gIEBPdXRwdXQoKSBzdWJGb3JtQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBJbnB1dCgpIGFjY2VwdGVkTGFuZ3VhZ2U6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBwYWdlczogYW55W10gPSBbXTtcbiAgZGVjb2RlZERlc2NyaXB0aW9uOiBzdHJpbmcgPSAnJztcbiAgZ3JpZDogYW55O1xuICBzdGF0ZSE6IHN0cmluZztcbiAgY2hpbGRMb2dpY0NhY2hlOiB7IFtrZXk6IHN0cmluZ106IHsgY29tcG9uZW50OiBQcm9taXNlPGFueT4sIGluamVjdG9yOiBJbmplY3RvciB9IH0gPSB7fTtcbiAgY29tcG9uZW50VG9Mb2FkOiBhbnk7XG4gIGluamVjdG9yITogSW5qZWN0b3I7XG4gIGNvcHlTdWJGb3JtZGF0YTphbnk7XG4gIHN1YmZvcm1EZXNjcmlwdGlvbjpzdHJpbmcgPSAnJztcbiAgc3ViZm9ybVRpdGxlOiBzdHJpbmc9ICcnO1xuICBlZGl0b3I6IGFueTtcbiAgYWxsb3dDb3B5OiBib29sZWFuID0gZmFsc2U7XG4gIGFsbG93RGVsZXRlOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgZGlhbG9nUmVmPzogTWF0RGlhbG9nUmVmPENvbmZpcm1EaWFsb2dDb21wb25lbnQ+O1xuICBzdWJmb3JtRGF0YTphbnk7XG4gIHByZXZpb3VzU3VibWlzc2lvbnM6YW55W109W107XG4gIG1heFBvc3NpYmxlR29vZFNjb3JlITogbnVtYmVyO1xuICBtYXhQb3NzaWJsZUJhZFNjb3JlITogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgc3ViZm9ybUNvcHlTZXJ2aWNlOlN1YmZvcm1Db3B5U2VydmljZSxcbiAgICBwdWJsaWMgZGlhbG9nOiBNYXREaWFsb2csXG4gICAgcHJpdmF0ZSBkYXRhU2VydmljZTogRGF0YVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBmb3JtU2VydmljZTpGb3JtU2VydmljZSxcbiAgICBwcml2YXRlIHdoZW5DbGF1c2VTZXJ2aWNlOldoZW5DbGF1c2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgdmFsaWRhdGlvblNlcnZpY2U6IFZhbGlkYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgc2NvcmVDYWxjU2VydmljZTogU2NvcmVDYWxjdWxhdGlvblNlcnZpY2VcbiAgKXtcbiAgICB0aGlzLmRhdGFTZXJ2aWNlLnN1YmZvcm0kLnN1YnNjcmliZSgoZGF0YSk9PntcbiAgICAgIHRoaXMuc3ViZm9ybURhdGEgPSBkYXRhO1xuICAgICAgdGhpcy50cnlMb2FkUHJldmlvdXNTdWJtaXNzaW9ucygpO1xuICAgIH0pXG4gIH1cblxuICBwcml2YXRlIHRyeUxvYWRQcmV2aW91c1N1Ym1pc3Npb25zKCk6IHZvaWQge1xuICAgIGlmIChcbiAgICAgIHRoaXMuc3ViZm9ybURhdGEgJiZcbiAgICAgIHRoaXMuc3ViRm9ybSAmJlxuICAgICAgIXRoaXMuZWRpdCAmJlxuICAgICAgdGhpcy5zdWJGb3JtLnN1Ym1pc3Npb25Db3B5Q29uZmlnPy5hbGxvd0NvcHlGcm9tT3RoZXJTdWJtaXNzaW9uc1xuICAgICkge1xuICAgICAgdGhpcy5sb2FkUHJldmlvdXNTdWJtaXNzaW9ucygpO1xuICAgIH1cbiAgfVxuXG5cbiAgbG9hZFByZXZpb3VzU3VibWlzc2lvbnMoKSB7XG4gICAgaWYgKHRoaXMuc3ViZm9ybURhdGEgJiYgT2JqZWN0LmtleXModGhpcy5zdWJmb3JtRGF0YSkubGVuZ3RoID4gMCAmJiAhdGhpcy5lZGl0KSB7XG4gICAgICB0aGlzLmZvcm1TZXJ2aWNlLmdldFN1YmZvcm1TdWJtaXNzaW9ucyh0aGlzLnN1YmZvcm1EYXRhKT8uc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgICB0aGlzLnByZXZpb3VzU3VibWlzc2lvbnMgPSByZXNwb25zZTtcbiAgICAgICAgICBjb25zdCB0YXJnZXRTdWJGb3Jtczogc3RyaW5nW10gPVxuICAgICAgICAgICAgdGhpcy5zdWJmb3JtRGF0YT8uZHVwbGljYXRlU3VibWlzc2lvbj8udGFyZ2V0U3ViRm9ybSA/PyBbXTtcbiAgXG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgQXJyYXkuaXNBcnJheSh0YXJnZXRTdWJGb3JtcykgJiZcbiAgICAgICAgICAgIHRhcmdldFN1YkZvcm1zLmluY2x1ZGVzKHRoaXMuc3ViRm9ybS50aXRsZSlcbiAgICAgICAgICApIHtcbiAgXG4gICAgICAgICAgICAvLyDinIUgRmlsdGVyIHN1Ym1pc3Npb25zIGJlbG9uZ2luZyB0byB0aGlzIHN1YmZvcm1cbiAgICAgICAgICAgIGNvbnN0IGZpbHRlcmVkU3VibWlzc2lvbnMgPSB0aGlzLnByZXZpb3VzU3VibWlzc2lvbnMuZmlsdGVyKFxuICAgICAgICAgICAgICAoc3VibWlzc2lvbjogYW55KSA9PlxuICAgICAgICAgICAgICAgIHN1Ym1pc3Npb24udGl0bGUgPT09IHRoaXMuc3ViRm9ybS50aXRsZVxuICAgICAgICAgICAgKTtcbiAgXG4gICAgICAgICAgICBjb25zdCBsb2FkZWRTdWJtaXNzaW9ucyA9IHRoaXMuY3JlYXRlU3VibWlzc2lvbnNGcm9tQXBpKFxuICAgICAgICAgICAgICBmaWx0ZXJlZFN1Ym1pc3Npb25zLFxuICAgICAgICAgICAgICB0aGlzLnN1YkZvcm1cbiAgICAgICAgICAgICk7XG4gIFxuICAgICAgICAgICAgY29uc3QgZXhpc3RpbmdTdWJtaXNzaW9ucyA9IHRoaXMuc3ViRm9ybS5zdWJtaXNzaW9ucyA/PyBbXTtcbiAgXG4gICAgICAgICAgICB0aGlzLnN1YkZvcm0gPSB7XG4gICAgICAgICAgICAgIC4uLnRoaXMuc3ViRm9ybSxcbiAgICAgICAgICAgICAgc3VibWlzc2lvbnM6IFtcbiAgICAgICAgICAgICAgICAuLi5leGlzdGluZ1N1Ym1pc3Npb25zLFxuICAgICAgICAgICAgICAgIC4uLmxvYWRlZFN1Ym1pc3Npb25zXG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIH07XG4gIFxuICAgICAgICAgICAgY29uc3QgaGFzQW55U2NvcmUgPSB0aGlzLnN1YkZvcm0uc3VibWlzc2lvbnMuc29tZSgoc3ViOiBhbnkpID0+XG4gICAgICAgICAgICAgIHN1Yi5zY29yZXM/LnNvbWUoXG4gICAgICAgICAgICAgICAgKHM6IGFueSkgPT4gcy5zY29yZSAhPT0gbnVsbCAmJiBzLnNjb3JlICE9PSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgXG4gICAgICAgICAgICBpZiAoaGFzQW55U2NvcmUpIHtcbiAgICAgICAgICAgICAgdGhpcy5zdWJGb3JtLnNjb3JlcyA9IHRoaXMuc2NvcmVDYWxjU2VydmljZS5jYWxjdWxhdGVGaW5hbFNjb3JlKFxuICAgICAgICAgICAgICAgIHRoaXMuc3ViRm9ybS5zdWJtaXNzaW9ucyxcbiAgICAgICAgICAgICAgICB0aGlzLm1heFBvc3NpYmxlR29vZFNjb3JlLFxuICAgICAgICAgICAgICAgIHRoaXMubWF4UG9zc2libGVCYWRTY29yZVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdGhpcy5zdWJGb3JtLnNjb3JlcyA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKGVycm9yOiBhbnkpID0+IHt9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgXG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5hbGxvd0NvcHkgPSB0aGlzLnN1YkZvcm0ucHJvcGVydHk/LmFsbG93Q29weTtcbiAgICB0aGlzLmFsbG93RGVsZXRlID0gdGhpcy5zdWJGb3JtLnByb3BlcnR5Py5hbGxvd0RlbGV0ZTtcbiAgICB0aGlzLmNvcHlTdWJGb3JtZGF0YSA9IHRoaXMuc3ViRm9ybT8uY29weVN1YmZvcm1NZXRhO1xuICAgIHRoaXMudHJ5TG9hZFByZXZpb3VzU3VibWlzc2lvbnMoKTtcbiAgICBpZiAodGhpcy5zdWJGb3JtLnByb3BlcnR5LnN1YkZvcm1TdHJ1Y3R1cmUgPT0gJ3NpbmdsZScpIHtcbiAgICAgIHRoaXMuYmluZEFuc3dlcnNUb0Zvcm1FbGVtZW50cygpO1xuICAgICAgdGhpcy5sb2FkQ29tcG9uZW50KCk7XG4gICAgICB0aGlzLndoZW5DbGF1c2VTZXJ2aWNlLmFkZEdyaWRzRnJvbVN1YmZvcm0odGhpcy5zdWJGb3JtKTtcbiAgICB9XG5cbiAgICBjb25zdCB7IGdvb2RNYXgsIGJhZE1heCB9ID0gdGhpcy5zY29yZUNhbGNTZXJ2aWNlLmdldE1heFBvc3NpYmxlU2NvcmUoXG4gICAgICB0aGlzLnN1YkZvcm1cbiAgICApO1xuICAgIHRoaXMubWF4UG9zc2libGVHb29kU2NvcmUgPSBnb29kTWF4O1xuICAgIHRoaXMubWF4UG9zc2libGVCYWRTY29yZSA9IGJhZE1heDtcbiAgfVxuXG4gIGVkaXRvckNyZWF0ZWQoZWRpdG9ySW5zdGFuY2U6IGFueSkge1xuICAgIHRoaXMuZWRpdG9yID0gZWRpdG9ySW5zdGFuY2U7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGxvYWRDb21wb25lbnQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5jb21wb25lbnRUb0xvYWQgPSBhd2FpdCB0aGlzLmxvYWRGb3JtRWxlbWVudHNDb21wb25lbnQoKTtcbiAgICB0aGlzLmluamVjdG9yID0gdGhpcy5jcmVhdGVJbmplY3RvcigpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBsb2FkRm9ybUVsZW1lbnRzQ29tcG9uZW50KCkge1xuICAgIGNvbnN0IHsgRm9ybUVsZW1lbnRzQ29tcG9uZW50IH0gPSBhd2FpdCBpbXBvcnQoJy4uL2Zvcm0tZWxlbWVudHMvZm9ybS1lbGVtZW50cy5jb21wb25lbnQnKTtcbiAgICByZXR1cm4gRm9ybUVsZW1lbnRzQ29tcG9uZW50O1xuICB9XG5cbiAgY3JlYXRlSW5qZWN0b3IoKTogSW5qZWN0b3Ige1xuICAgIHJldHVybiBJbmplY3Rvci5jcmVhdGUoe1xuICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHsgcHJvdmlkZTogJ2dyaWQnLCB1c2VWYWx1ZTogdGhpcy5ncmlkPy5lbGVtZW50LmNoaWxkTG9naWNzICB9LFxuICAgICAgICB7IHByb3ZpZGU6ICdzdGF0ZScsIHVzZVZhbHVlOiAnY2hpbGQnIH0sXG4gICAgICBdLFxuICAgIH0pO1xuICB9XG5cbiAgZGVjb2RlSHRtbChodG1sOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IHRleHRBcmVhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGV4dGFyZWEnKTtcbiAgICB0ZXh0QXJlYS5pbm5lckhUTUwgPSBodG1sO1xuICAgIHJldHVybiB0ZXh0QXJlYS52YWx1ZTtcbiAgfVxuXG4gIGJpbmRBbnN3ZXJzVG9Gb3JtRWxlbWVudHMoKSB7XG4gICAgY29uc3QgYmluZEFuc3dlcnMgPSAoZm9ybUVsZW1lbnRzOiBhbnlbXSwgc3VibWlzc2lvbnM6IGFueVtdKSA9PiB7XG4gICAgICBmb3JtRWxlbWVudHM/LmZvckVhY2goKGdyaWRzOiBhbnkpID0+IHtcbiAgICAgICAgZ3JpZHM/LmdyaWQ/LmZvckVhY2goXG4gICAgICAgICAgKGZvcm1FbGVtZW50OiB7IGVudGl0eVR5cGU6IHN0cmluZzsgZWxlbWVudDogYW55IH0pID0+IHtcbiAgICAgICAgICAgIGlmIChmb3JtRWxlbWVudC5lbnRpdHlUeXBlID09PSAnUVVFU1RJT04nKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHN1Ym1pc3Npb24gPSBzdWJtaXNzaW9ucy5maW5kKChzdWI6IHsgYW5zd2VyczogYW55W10gfSkgPT5cbiAgICAgICAgICAgICAgICBzdWIuYW5zd2Vycy5zb21lKFxuICAgICAgICAgICAgICAgICAgKGFuczogeyBxdWVzdGlvbklkOiBhbnkgfSkgPT5cbiAgICAgICAgICAgICAgICAgICAgYW5zLnF1ZXN0aW9uSWQgPT09IGZvcm1FbGVtZW50LmVsZW1lbnQuaWRcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgaWYgKHN1Ym1pc3Npb24pIHtcbiAgICAgICAgICAgICAgICBjb25zdCBhbnN3ZXIgPSBzdWJtaXNzaW9uLmFuc3dlcnMuZmluZChcbiAgICAgICAgICAgICAgICAgIChhbnM6IHsgcXVlc3Rpb25JZDogYW55IH0pID0+XG4gICAgICAgICAgICAgICAgICAgIGFucy5xdWVzdGlvbklkID09PSBmb3JtRWxlbWVudC5lbGVtZW50LmlkXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBpZiAoYW5zd2VyKSB7XG4gICAgICAgICAgICAgICAgICBmb3JtRWxlbWVudC5lbGVtZW50LmFuc3dlciA9IGFuc3dlci5hbnN3ZXI7XG4gICAgICAgICAgICAgICAgICBmb3JtRWxlbWVudC5lbGVtZW50LmFuc3dlcklkID0gYW5zd2VyLmFuc3dlcklkO1xuICAgICAgICAgICAgICAgICAgZm9ybUVsZW1lbnQuZWxlbWVudC52YWxpZGF0aW9uID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgIGZvcm1FbGVtZW50LmVsZW1lbnQuYXR0YWNobWVudHMgPSBhbnN3ZXIuYXR0YWNobWVudHM7XG4gICAgICAgICAgICAgICAgICBmb3JtRWxlbWVudC5lbGVtZW50LmFtb3VudEluV29yZHMgPSBhbnN3ZXIuYW1vdW50SW5Xb3JkcztcbiAgICAgICAgICAgICAgICAgIHRoaXMuc3ViRm9ybS5zdWJtaXNzaW9uSWQgPSBzdWJtaXNzaW9uLnN1Ym1pc3Npb25JZDtcbiAgICAgICAgICAgICAgICAgIGZvcm1FbGVtZW50LmVsZW1lbnQuYW5zd2VyQ3VycmVuY3kgPSBhbnN3ZXIuYW5zd2VyQ3VycmVuY3k7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKGZvcm1FbGVtZW50LmVsZW1lbnQuY2hpbGRMb2dpY3MpIHtcbiAgICAgICAgICAgICAgICBmb3JtRWxlbWVudC5lbGVtZW50LmNoaWxkTG9naWNzLmZvckVhY2goXG4gICAgICAgICAgICAgICAgICAoY2hpbGRMb2dpYzogeyByb3dzOiBhbnlbXSB9KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGJpbmRBbnN3ZXJzKGNoaWxkTG9naWMucm93cywgc3VibWlzc2lvbnMpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgaWYgKHRoaXMuc3ViRm9ybSAmJiB0aGlzLnN1YkZvcm0ucm93cyAmJiB0aGlzLnN1YkZvcm0uc3VibWlzc2lvbnMpIHtcbiAgICAgIGJpbmRBbnN3ZXJzKHRoaXMuc3ViRm9ybS5yb3dzLCB0aGlzLnN1YkZvcm0uc3VibWlzc2lvbnMpO1xuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZVN1YkZvcm1XaXRoU3VibWlzc2lvbnMoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuc3ViRm9ybSA9IGV2ZW50O1xuICAgIHRoaXMuc3ViRm9ybUNoYW5nZS5lbWl0KHRoaXMuc3ViRm9ybSk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zdWJGb3JtLmRlc2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLmRlY29kZWREZXNjcmlwdGlvbiA9IHRoaXMuZGVjb2RlSHRtbCh0aGlzLnN1YkZvcm0uZGVzY3JpcHRpb24pO1xuICAgIH1cbiAgfVxuXG4gIGNvcHlTdWJmb3JtKCkge1xuICAgIGNvbnN0IHsgdXBkYXRlZFBhZ2VzIH0gPSB0aGlzLnN1YmZvcm1Db3B5U2VydmljZS5jb3B5U3ViZm9ybSh0aGlzLnN1YkZvcm0sIHRoaXMucGFnZXMpO1xuXG4gICAgdGhpcy5wYWdlcyA9IHVwZGF0ZWRQYWdlcztcbiAgICAvLyBFbWl0IHVwZGF0ZWQgcGFnZXMgb3Igc3ViRm9ybUNoYW5nZSBpZiBuZWVkZWRcblxuICAgIC8vIE9wdGlvbmFsbHkgcGFzcyBtZXRhIHRvIHBhcmVudCBpZiBuZWVkZWRcbiAgICAvLyB0aGlzLmNvcHlNZXRhLmVtaXQoY29weVN1YkZvcm1NZXRhKTtcbiAgfVxuXG5cbiAgdXBkYXRlU3ViZm9ybURhdGEoZXZlbnQ6IGFueSwgc3ViZm9ybUlkOiBzdHJpbmcsIGZpZWxkOiAndGl0bGUnIHwgJ2Rlc2NyaXB0aW9uJykge1xuICAgIGlmKHRoaXMuY29weVN1YkZvcm1kYXRhLmlkID09IHN1YmZvcm1JZCl7XG4gICAgICB0aGlzLmNvcHlTdWJGb3JtZGF0YVtmaWVsZF0gPSBldmVudDtcbiAgICB9XG4gIH1cblxuICBkZWxldGVDb3B5U3ViZm9ybShzdWJmb3JtSWQ6IHN0cmluZykge1xuICAgIGNvbnN0IGRpYWxvZ0NvbmZpZyA9IG5ldyBNYXREaWFsb2dDb25maWcoKTtcbiAgICBkaWFsb2dDb25maWcuZGF0YSA9IHtcbiAgICAgIG1lc3NhZ2VIZWFkZXI6IFwiQXJlIHlvdSBzdXJlP1wiLFxuICAgICAgbWVzc2FnZTogXCJEbyB5b3Ugd2FudCB0byBkZWxldGUgdGhpcyBzdWJmb3JtP1wiXG4gICAgfTtcbiAgICBkaWFsb2dDb25maWcuaGFzQmFja2Ryb3AgPSB0cnVlO1xuICAgIGRpYWxvZ0NvbmZpZy5kaXNhYmxlQ2xvc2UgPSB0cnVlO1xuXG4gICAgdGhpcy5kaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKENvbmZpcm1EaWFsb2dDb21wb25lbnQsIGRpYWxvZ0NvbmZpZyk7XG5cbiAgICB0aGlzLmRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgocmVzdWx0OiBhbnkpID0+IHtcbiAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgLy8gMS4gUmVtb3ZlIHRoZSBjb3BpZWQgc3ViZm9ybSBmcm9tIHRoZSBwYWdlc1xuICAgICAgICBmb3IgKGNvbnN0IHBhZ2Ugb2YgdGhpcy5wYWdlcykge1xuICAgICAgICAgIGNvbnN0IHJvd0luZGV4ID0gcGFnZS5yb3dzLmZpbmRJbmRleCgocm93OiBhbnkpID0+XG4gICAgICAgICAgICByb3cuZ3JpZC5zb21lKChncmlkOiBhbnkpID0+XG4gICAgICAgICAgICAgIGdyaWQuZW50aXR5VHlwZSA9PT0gJ1NVQkZPUk0nICYmXG4gICAgICAgICAgICAgIGdyaWQuZWxlbWVudD8uaWQgPT09IHN1YmZvcm1JZCAmJlxuICAgICAgICAgICAgICBncmlkLmVsZW1lbnQ/LmNvcGllZFxuICAgICAgICAgICAgKVxuICAgICAgICAgICk7XG5cbiAgICAgICAgICBpZiAocm93SW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgICBwYWdlLnJvd3Muc3BsaWNlKHJvd0luZGV4LCAxKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIDIuIFJlbW92ZSB0aGlzIHN1YmZvcm1JZCBmcm9tIGFueSBzdWJmb3JtJ3MgY29waWVkRm9ybXMgYXJyYXlcbiAgICAgICAgZm9yIChjb25zdCBwYWdlIG9mIHRoaXMucGFnZXMpIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IHJvdyBvZiBwYWdlLnJvd3MpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZ3JpZCBvZiByb3cuZ3JpZCkge1xuICAgICAgICAgICAgICBpZiAoZ3JpZC5lbnRpdHlUeXBlID09PSAnU1VCRk9STScgJiYgZ3JpZC5lbGVtZW50Py5jb3BpZWRGb3Jtcykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gZ3JpZC5lbGVtZW50LmNvcGllZEZvcm1zLmluZGV4T2Yoc3ViZm9ybUlkKTtcbiAgICAgICAgICAgICAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICBncmlkLmVsZW1lbnQuY29waWVkRm9ybXMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG5cbiAgZGVsZXRlTWFpblN1YmZvcm0oc3ViZm9ybUlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBkaWFsb2dDb25maWcgPSBuZXcgTWF0RGlhbG9nQ29uZmlnKCk7XG4gICAgZGlhbG9nQ29uZmlnLmRhdGEgPSB7XG4gICAgICBtZXNzYWdlSGVhZGVyOiBcIkFyZSB5b3Ugc3VyZT9cIixcbiAgICAgIG1lc3NhZ2U6IFwiRG8geW91IHdhbnQgdG8gZGVsZXRlIHRoaXMgc3ViZm9ybT9cIlxuICAgIH07XG4gICAgZGlhbG9nQ29uZmlnLmhhc0JhY2tkcm9wID0gdHJ1ZTtcbiAgICBkaWFsb2dDb25maWcuZGlzYWJsZUNsb3NlID0gdHJ1ZTtcblxuICAgIHRoaXMuZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihDb25maXJtRGlhbG9nQ29tcG9uZW50LCBkaWFsb2dDb25maWcpO1xuXG4gICAgdGhpcy5kaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKHJlc3VsdDogYW55KSA9PiB7XG4gICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgIGZvciAoY29uc3QgcGFnZSBvZiB0aGlzLnBhZ2VzKSB7XG4gICAgICAgICAgZm9yIChjb25zdCByb3cgb2YgcGFnZS5yb3dzKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGdyaWRJdGVtIG9mIHJvdy5ncmlkKSB7XG4gICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBncmlkSXRlbS5lbnRpdHlUeXBlID09PSAnU1VCRk9STScgJiZcbiAgICAgICAgICAgICAgICBncmlkSXRlbS5lbGVtZW50Py5pZCA9PT0gc3ViZm9ybUlkXG4gICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIGdyaWRJdGVtLmVsZW1lbnQuZGVsZXRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgcmV0dXJuOyAvLyBzdG9wIGFmdGVyIHRoZSBmaXJzdCBtYXRjaFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBjcmVhdGVTdWJtaXNzaW9uc0Zyb21BcGkoYXBpU3VibWlzc2lvbnM6IGFueVtdLCBzdWJmb3JtOiBhbnkpOiBTdWJtaXNzaW9uW10ge1xuICAgIHJldHVybiBhcGlTdWJtaXNzaW9ucy5tYXAoYXBpU3VibWlzc2lvbiA9PiB7XG4gICAgICBjb25zdCBhbnN3ZXJzOiBBbnN3ZXJbXSA9IFtdO1xuXG4gICAgICBzdWJmb3JtLnJvd3MuZm9yRWFjaCgocm93OiBhbnkpID0+IHtcbiAgICAgICAgcm93LmdyaWQuZm9yRWFjaCgoZ3JpZEl0ZW06IGFueSkgPT4ge1xuICAgICAgICAgIGlmIChncmlkSXRlbS5lbnRpdHlUeXBlICE9PSAnUVVFU1RJT04nKSByZXR1cm47XG5cbiAgICAgICAgICBjb25zdCBlbGVtZW50ID0gZ3JpZEl0ZW0uZWxlbWVudDtcbiAgICAgICAgICBjb25zdCBxdWVzdGlvbktleSA9IGVsZW1lbnQucXVlc3Rpb247XG4gICAgICAgICAgaWYgKCFhcGlTdWJtaXNzaW9uLmFuc3dlcnMgfHwgIWFwaVN1Ym1pc3Npb24uYW5zd2Vyc1txdWVzdGlvbktleV0pIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgYXBpQW5zd2VyID0gYXBpU3VibWlzc2lvbi5hbnN3ZXJzW3F1ZXN0aW9uS2V5XTtcbiAgICAgICAgICAvLyDinIUgQ0FTRSAxOiBGaWxlIHVwbG9hZCAoYXJyYXkgd2l0aCBuYW1lICYgdXJsKVxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIEFycmF5LmlzQXJyYXkoYXBpQW5zd2VyKSAmJlxuICAgICAgICAgICAgYXBpQW5zd2VyLmxlbmd0aCAmJlxuICAgICAgICAgICAgYXBpQW5zd2VyWzBdLm5hbWUgJiZcbiAgICAgICAgICAgIGFwaUFuc3dlclswXS51cmxcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGFuc3dlcnMucHVzaCh7XG4gICAgICAgICAgICAgIHF1ZXN0aW9uSWQ6IGVsZW1lbnQuaWQsXG4gICAgICAgICAgICAgIGFuc3dlcjogbnVsbCxcbiAgICAgICAgICAgICAgYXR0YWNobWVudHM6IGFwaUFuc3dlci5tYXAoKGZpbGU6IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICBmaWxlSWQ6IGZpbGUuaWQsXG4gICAgICAgICAgICAgICAgZmlsZU5hbWU6IGZpbGUubmFtZSxcbiAgICAgICAgICAgICAgICBmaWxlVXJsOiBmaWxlLnVybFxuICAgICAgICAgICAgICB9KSksXG4gICAgICAgICAgICAgIGNvcGllZEF0dGFjaG1lbnRzOiBhcGlBbnN3ZXIubWFwKChmaWxlOiBhbnkpID0+IGZpbGUuaWQpXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyDinIUgQ0FTRSAyOiBOb3JtYWwgcXVlc3Rpb24gb2JqZWN0XG4gICAgICAgICAgYW5zd2Vycy5wdXNoKHtcbiAgICAgICAgICAgIHF1ZXN0aW9uSWQ6IGVsZW1lbnQuaWQsXG4gICAgICAgICAgICBhbnN3ZXI6IGFwaUFuc3dlci5hbnN3ZXIgPz8gbnVsbCxcbiAgICAgICAgICAgIGF0dGFjaG1lbnRzOiBhcGlBbnN3ZXIuZmlsZVxuICAgICAgICAgICAgICA/IGFwaUFuc3dlci5maWxlLm1hcCgoZmlsZTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgZmlsZU5hbWU6IGZpbGUubmFtZSxcbiAgICAgICAgICAgICAgICAgIGZpbGVVcmw6IGZpbGUudXJsXG4gICAgICAgICAgICAgICAgfSkpXG4gICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgc2NvcmVzOiBhcGlBbnN3ZXIuc2NvcmVzLFxuICAgICAgICAgICAgbWF4aW11bVBvc3NpYmxlU2NvcmU6IGFwaUFuc3dlci5tYXhpbXVtUG9zc2libGVTY29yZVxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBzdWJtaXNzaW9uSWQ6IHV1aWR2NCgpLFxuICAgICAgICBzb3VyY2VTdWJtaXNzaW9uSWQ6IGFwaVN1Ym1pc3Npb24uc3VibWlzc2lvbklkLFxuICAgICAgICBhbnN3ZXJzLFxuICAgICAgICBjb25maWd1cmF0aW9uOiB7XG4gICAgICAgICAgaXNEZWZhdWx0OiBmYWxzZSxcbiAgICAgICAgICBhbGxvd0RlbGV0ZTogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBzY29yZXM6IGFwaVN1Ym1pc3Npb24uc2NvcmVcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICBnZXQgaXNJbnZhbGlkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMudmFsaWRhdGlvblNlcnZpY2UuZ2V0RXJyb3JNZXNzYWdlKHRoaXMuc3ViRm9ybS5pZCk7XG4gIH1cblxuICBnZXQgZXJyb3JNZXNzYWdlKCk6IHN0cmluZyB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLnZhbGlkYXRpb25TZXJ2aWNlLmdldEVycm9yTWVzc2FnZSh0aGlzLnN1YkZvcm0uaWQpO1xuICB9XG5cbiAgY2xlYXJJbnZhbGlkKCl7XG4gICAgdGhpcy52YWxpZGF0aW9uU2VydmljZS5jbGVhckludmFsaWQodGhpcy5zdWJGb3JtLmlkKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyckZXZlbnQnXSlcbiAgICBvbkFueUNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5jbGVhckludmFsaWQoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRpYWxvZ1JlZikge1xuICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKTtcbiAgICB9XG4gIH1cblxuXG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwib3V0ZXItY29udGFpbmVyIG1iLTQgcHgtM1wiXG4gIFtpZF09XCIncXVlc3Rpb24tJyArIHN1YkZvcm0uaWRcIlxuICBbYXR0ci5uYW1lXT1cInN1YkZvcm0udGVzdEVsZW1lbnROYW1lXCJcbiAgKm5nSWY9XCIhc3ViRm9ybS5kZWxldGVkXCJcbj5cbiAgPGRpdiBjbGFzcz1cImJvZHkgcHktMSBweC0xXCI+XG4gICAgPGRpdiBjbGFzcz1cInRhYi1jb250ZW50IHB0LTQgcGItMyBweC0zXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXN1YkZvcm0uY29waWVkOyBlbHNlIGNvcHlTdWJmb3JtQ29udGFpbmVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdWJmb3JtLWhlYWRlclwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXRhLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgPHAgY2xhc3M9XCJzZWN0aW9uVGl0bGVcIj57eyBzdWJGb3JtLnRpdGxlIH19PC9wPlxuICAgICAgICAgICAgPHAgW2lubmVySFRNTF09XCJkZWNvZGVkRGVzY3JpcHRpb25cIiBjbGFzcz1cImRlc2NyaXB0aW9uXCI+PC9wPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTNcIj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJmaW5hbFNjb3JlXCJcbiAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHMgb2Ygc3ViRm9ybT8uc2NvcmVzXCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgIGdvb2RTY29yZTogcy5zY29yZVR5cGUgPT09ICdHT09EX1NDT1JFJyxcbiAgICAgICAgICAgICAgICBiYWRTY29yZTogcy5zY29yZVR5cGUgPT09ICdCQURfU0NPUkUnXG4gICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNjb3JlVGl0bGVcIj5TY29yZTwvc3Bhbj5cbiAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtYi0wXCI+e3sgcy5zY29yZSB9fTwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImljb24tY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICBzcmM9XCJhc3NldHMvaWNvbnMvY29weS1pY29uLnN2Z1wiXG4gICAgICAgICAgICAgICAgYWx0PVwiY29weS1pY29uXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiY29weVN1YmZvcm0oKVwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJhbGxvd0NvcHlcIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgc3JjPVwiYXNzZXRzL2ljb25zL2RlbGV0ZS1pY29uLnN2Z1wiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJkZWxldGUtaWNvbiBtcy0zXCJcbiAgICAgICAgICAgICAgICBhbHQ9XCJkZWxldGUgaWNvblwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImRlbGV0ZU1haW5TdWJmb3JtKHN1YkZvcm0uaWQpXCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImFsbG93RGVsZXRlXCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLXRlbXBsYXRlICNjb3B5U3ViZm9ybUNvbnRhaW5lcj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kIGdhcC00XCI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cImZpbmFsU2NvcmVcIlxuICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgcyBvZiBzdWJGb3JtPy5zY29yZXNcIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgZ29vZFNjb3JlOiBzLnNjb3JlVHlwZSA9PT0gJ0dPT0RfU0NPUkUnLFxuICAgICAgICAgICAgICAgIGJhZFNjb3JlOiBzLnNjb3JlVHlwZSA9PT0gJ0JBRF9TQ09SRSdcbiAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2NvcmVUaXRsZVwiPlNjb3JlPC9zcGFuPlxuICAgICAgICAgICAgICA8cCBjbGFzcz1cIm1iLTBcIj57eyBzLnNjb3JlIH19PC9wPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImljb24tY29udGFpbmVyXCIgKGNsaWNrKT1cImRlbGV0ZUNvcHlTdWJmb3JtKHN1YkZvcm0uaWQpXCI+XG4gICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgIHNyYz1cImFzc2V0cy9pY29ucy9kZWxldGUtaWNvbi5zdmdcIlxuICAgICAgICAgICAgICBjbGFzcz1cImRlbGV0ZS1pY29uXCJcbiAgICAgICAgICAgICAgYWx0PVwiZGVsZXRlIGljb25cIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb3B5LXN1YmZvcm0tY29udGFpbmVyIG1iLTNcIj5cbiAgICAgICAgICA8cD5UaXRsZTwvcD5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwic3ViZm9ybVRpdGxlXCJcbiAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInVwZGF0ZVN1YmZvcm1EYXRhKCRldmVudCwgc3ViRm9ybS5pZCwgJ3RpdGxlJylcIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgPHAgY2xhc3M9XCJtdC0zXCI+RGVzY3JpcHRpb248L3A+XG4gICAgICAgICAgPHF1aWxsLWVkaXRvclxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzdWJmb3JtRGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiXG4gICAgICAgICAgICAgIHVwZGF0ZVN1YmZvcm1EYXRhKCRldmVudCwgc3ViRm9ybS5pZCwgJ2Rlc2NyaXB0aW9uJylcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAob25FZGl0b3JDcmVhdGVkKT1cImVkaXRvckNyZWF0ZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICBjbGFzcz1cImVkaXRvclwiXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlwiXG4gICAgICAgICAgPjwvcXVpbGwtZWRpdG9yPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgIDxkaXYgKm5nSWY9XCJzdWJGb3JtLnByb3BlcnR5LnN1YkZvcm1TdHJ1Y3R1cmUgPT0gJ211bHRpcGxlJ1wiPlxuICAgICAgICA8bGliLW11bHRpcGxlLXN1YmZvcm1cbiAgICAgICAgICAqbmdJZj1cInN1YkZvcm0ucHJvcGVydHkuc3ViRm9ybVR5cGUgPT09ICd0YWJsZSdcIlxuICAgICAgICAgIFtzdWJGb3JtXT1cInN1YkZvcm1cIlxuICAgICAgICAgIChzdWJGb3JtQ2hhbmdlKT1cInVwZGF0ZVN1YkZvcm1XaXRoU3VibWlzc2lvbnMoJGV2ZW50KVwiXG4gICAgICAgICAgW2FjY2VwdGVkTGFuZ3VhZ2VdPVwiYWNjZXB0ZWRMYW5ndWFnZVwiXG4gICAgICAgID48L2xpYi1tdWx0aXBsZS1zdWJmb3JtPlxuXG4gICAgICAgIDxsaWItaW5saW5lLW11bHRpcGxlLXN1YmZvcm1cbiAgICAgICAgICAqbmdJZj1cInN1YkZvcm0ucHJvcGVydHkuc3ViRm9ybVR5cGUgPT09ICdpbmxpbmUnXCJcbiAgICAgICAgICBbc3ViRm9ybV09XCJzdWJGb3JtXCJcbiAgICAgICAgICAoc3ViRm9ybUNoYW5nZSk9XCJ1cGRhdGVTdWJGb3JtV2l0aFN1Ym1pc3Npb25zKCRldmVudClcIlxuICAgICAgICAgIFthY2NlcHRlZExhbmd1YWdlXT1cImFjY2VwdGVkTGFuZ3VhZ2VcIlxuICAgICAgICA+PC9saWItaW5saW5lLW11bHRpcGxlLXN1YmZvcm0+XG4gICAgICAgIDxsaWItY2FyZC1zdWJmb3JtXG4gICAgICAgICAgKm5nSWY9XCJzdWJGb3JtLnByb3BlcnR5LnN1YkZvcm1UeXBlID09PSAnY2FyZCdcIlxuICAgICAgICAgIFtzdWJGb3JtXT1cInN1YkZvcm1cIlxuICAgICAgICAgIFthY2NlcHRlZExhbmd1YWdlXT1cImFjY2VwdGVkTGFuZ3VhZ2VcIlxuICAgICAgICAgIChzdWJGb3JtQ2hhbmdlKT1cInVwZGF0ZVN1YkZvcm1XaXRoU3VibWlzc2lvbnMoJGV2ZW50KVwiXG4gICAgICAgICAgW2VkaXRdPVwiZWRpdFwiXG4gICAgICAgID48L2xpYi1jYXJkLXN1YmZvcm0+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgKm5nSWY9XCJzdWJGb3JtLnByb3BlcnR5LnN1YkZvcm1TdHJ1Y3R1cmUgPT0gJ3NpbmdsZSdcIj5cbiAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgcm93IG9mIHN1YkZvcm0ucm93c1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGdyaWQgb2Ygcm93LmdyaWRcIlxuICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7ICd3aWR0aC4lJzogZ3JpZC5lbGVtZW50LmNvdW50ICogKDEwMCAvIDEyKSB9XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImdyaWQuZW50aXR5VHlwZSA9PT0gJ1FVRVNUSU9OJyAmJiBncmlkLnNob3dcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IFtuZ1N3aXRjaF09XCJncmlkLmVsZW1lbnQuZm9ybUVsZW1lbnQuZWxlbWVudFR5cGVcIj5cbiAgICAgICAgICAgICAgICAgIDxsaWItY2hlY2stYm94LWZpZWxkc1xuICAgICAgICAgICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ0NIRUNLX0JPWCdcIlxuICAgICAgICAgICAgICAgICAgICBbcXVlc3Rpb25dPVwiZ3JpZC5lbGVtZW50XCJcbiAgICAgICAgICAgICAgICAgID48L2xpYi1jaGVjay1ib3gtZmllbGRzPlxuICAgICAgICAgICAgICAgICAgPGxpYi1kYXRlLXRpbWUtZmllbGRzXG4gICAgICAgICAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCInREFURV9USU1FJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtxdWVzdGlvbl09XCJncmlkLmVsZW1lbnRcIlxuICAgICAgICAgICAgICAgICAgPjwvbGliLWRhdGUtdGltZS1maWVsZHM+XG4gICAgICAgICAgICAgICAgICA8bGliLWRyb3AtZG93bi1maWVsZHNcbiAgICAgICAgICAgICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidEUk9QX0RPV04nXCJcbiAgICAgICAgICAgICAgICAgICAgW3F1ZXN0aW9uXT1cImdyaWQuZWxlbWVudFwiXG4gICAgICAgICAgICAgICAgICA+PC9saWItZHJvcC1kb3duLWZpZWxkcz5cbiAgICAgICAgICAgICAgICAgIDxsaWItZmlsZS1waWNrZXItZmllbGRzXG4gICAgICAgICAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCInRklMRV9QSUNLRVInXCJcbiAgICAgICAgICAgICAgICAgICAgW3F1ZXN0aW9uXT1cImdyaWQuZWxlbWVudFwiXG4gICAgICAgICAgICAgICAgICA+PC9saWItZmlsZS1waWNrZXItZmllbGRzPlxuICAgICAgICAgICAgICAgICAgPGxpYi1sb2NhdGlvbi1maWVsZHNcbiAgICAgICAgICAgICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidMT0NBVElPTidcIlxuICAgICAgICAgICAgICAgICAgICBbcXVlc3Rpb25dPVwiZ3JpZC5lbGVtZW50XCJcbiAgICAgICAgICAgICAgICAgID48L2xpYi1sb2NhdGlvbi1maWVsZHM+XG4gICAgICAgICAgICAgICAgICA8bGliLW1haWwtZmllbGRzXG4gICAgICAgICAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCInRU1BSUwnXCJcbiAgICAgICAgICAgICAgICAgICAgW3F1ZXN0aW9uXT1cImdyaWQuZWxlbWVudFwiXG4gICAgICAgICAgICAgICAgICA+PC9saWItbWFpbC1maWVsZHM+XG4gICAgICAgICAgICAgICAgICA8bGliLW1vYmlsZS1maWVsZHNcbiAgICAgICAgICAgICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidNT0JJTEUnXCJcbiAgICAgICAgICAgICAgICAgICAgW3F1ZXN0aW9uXT1cImdyaWQuZWxlbWVudFwiXG4gICAgICAgICAgICAgICAgICA+PC9saWItbW9iaWxlLWZpZWxkcz5cbiAgICAgICAgICAgICAgICAgIDxsaWItbnVtYmVyLWZpZWxkc1xuICAgICAgICAgICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ05VTUJFUidcIlxuICAgICAgICAgICAgICAgICAgICBbcXVlc3Rpb25dPVwiZ3JpZC5lbGVtZW50XCJcbiAgICAgICAgICAgICAgICAgICAgW3Jvd0lkXT1cIicwJ1wiXG4gICAgICAgICAgICAgICAgICA+PC9saWItbnVtYmVyLWZpZWxkcz5cbiAgICAgICAgICAgICAgICAgIDxsaWItcGFzc3dvcmQtZmllbGRzXG4gICAgICAgICAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCInUEFTU1dPUkQnXCJcbiAgICAgICAgICAgICAgICAgICAgW3F1ZXN0aW9uXT1cImdyaWQuZWxlbWVudFwiXG4gICAgICAgICAgICAgICAgICA+PC9saWItcGFzc3dvcmQtZmllbGRzPlxuICAgICAgICAgICAgICAgICAgPGxpYi1yYWRpby1idXR0b24tZmllbGRzXG4gICAgICAgICAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCInUkFESU9fQlVUVE9OJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtxdWVzdGlvbl09XCJncmlkLmVsZW1lbnRcIlxuICAgICAgICAgICAgICAgICAgPjwvbGliLXJhZGlvLWJ1dHRvbi1maWVsZHM+XG4gICAgICAgICAgICAgICAgICA8bGliLXJpY2gtdGV4dC1lZGl0b3ItZmllbGRzXG4gICAgICAgICAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCInUklDSF9URVhUX0VESVRPUidcIlxuICAgICAgICAgICAgICAgICAgICBbcXVlc3Rpb25dPVwiZ3JpZC5lbGVtZW50XCJcbiAgICAgICAgICAgICAgICAgID48L2xpYi1yaWNoLXRleHQtZWRpdG9yLWZpZWxkcz5cbiAgICAgICAgICAgICAgICAgIDxsaWItc2VsZWN0aW9uLW1hdHJpeC1maWVsZHNcbiAgICAgICAgICAgICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidTRUxFQ1RJT05fTUFUUklYJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtxdWVzdGlvbl09XCJncmlkLmVsZW1lbnRcIlxuICAgICAgICAgICAgICAgICAgICBbYWNjZXB0ZWRMYW5ndWFnZV09XCJhY2NlcHRlZExhbmd1YWdlXCJcbiAgICAgICAgICAgICAgICAgID48L2xpYi1zZWxlY3Rpb24tbWF0cml4LWZpZWxkcz5cbiAgICAgICAgICAgICAgICAgIDxsaWItc2lnbmF0dXJlLWZpZWxkc1xuICAgICAgICAgICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ1NJR05BVFVSRSdcIlxuICAgICAgICAgICAgICAgICAgICBbcXVlc3Rpb25dPVwiZ3JpZC5lbGVtZW50XCJcbiAgICAgICAgICAgICAgICAgID48L2xpYi1zaWduYXR1cmUtZmllbGRzPlxuICAgICAgICAgICAgICAgICAgPGxpYi1zbGlkZXItZmllbGRzXG4gICAgICAgICAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCInU0xJREVSJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtxdWVzdGlvbl09XCJncmlkLmVsZW1lbnRcIlxuICAgICAgICAgICAgICAgICAgPjwvbGliLXNsaWRlci1maWVsZHM+XG4gICAgICAgICAgICAgICAgICA8bGliLXRlcm1zLWFuZC1jb25kaXRpb24tZmllbGRzXG4gICAgICAgICAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCInVEVSTVNfQU5EX0NPTkRJVElPTidcIlxuICAgICAgICAgICAgICAgICAgICBbcXVlc3Rpb25dPVwiZ3JpZC5lbGVtZW50XCJcbiAgICAgICAgICAgICAgICAgID48L2xpYi10ZXJtcy1hbmQtY29uZGl0aW9uLWZpZWxkcz5cbiAgICAgICAgICAgICAgICAgIDxsaWItdGV4dC1hcmVhLWZpZWxkc1xuICAgICAgICAgICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ1RFWFRfQVJFQSdcIlxuICAgICAgICAgICAgICAgICAgICBbcXVlc3Rpb25dPVwiZ3JpZC5lbGVtZW50XCJcbiAgICAgICAgICAgICAgICAgID48L2xpYi10ZXh0LWFyZWEtZmllbGRzPlxuICAgICAgICAgICAgICAgICAgPGxpYi10ZXh0LWZpZWxkc1xuICAgICAgICAgICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ1RFWFRfQk9YJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtxdWVzdGlvbl09XCJncmlkLmVsZW1lbnRcIlxuICAgICAgICAgICAgICAgICAgPjwvbGliLXRleHQtZmllbGRzPlxuICAgICAgICAgICAgICAgICAgPGxpYi10b2dnbGUtc3dpdGNoLWZpZWxkc1xuICAgICAgICAgICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ1RPR0dMRV9TV0lUQ0gnXCJcbiAgICAgICAgICAgICAgICAgICAgW3F1ZXN0aW9uXT1cImdyaWQuZWxlbWVudFwiXG4gICAgICAgICAgICAgICAgICAgIFthY2NlcHRlZExhbmd1YWdlXT1cImFjY2VwdGVkTGFuZ3VhZ2VcIlxuICAgICAgICAgICAgICAgICAgPjwvbGliLXRvZ2dsZS1zd2l0Y2gtZmllbGRzPlxuICAgICAgICAgICAgICAgICAgPGxpYi11cmwtZmllbGRzXG4gICAgICAgICAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCInVVJMJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtxdWVzdGlvbl09XCJncmlkLmVsZW1lbnRcIlxuICAgICAgICAgICAgICAgICAgPjwvbGliLXVybC1maWVsZHM+XG4gICAgICAgICAgICAgICAgICA8bGliLWN1cnJlbmN5LWZpZWxkc1xuICAgICAgICAgICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ0NVUlJFTkNZJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtxdWVzdGlvbl09XCJncmlkLmVsZW1lbnRcIlxuICAgICAgICAgICAgICAgICAgPjwvbGliLWN1cnJlbmN5LWZpZWxkcz5cbiAgICAgICAgICAgICAgICAgIDxsaWItYWdncmVnYXRlLWZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCInQUdHUkVHQVRFX0ZVTkNUSU9OJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtxdWVzdGlvbl09XCJncmlkLmVsZW1lbnRcIlxuICAgICAgICAgICAgICAgICAgICBbcm93SWRdPVwiJzAnXCJcbiAgICAgICAgICAgICAgICAgID48L2xpYi1hZ2dyZWdhdGUtZnVuY3Rpb24+XG4gICAgICAgICAgICAgICAgICA8bGliLWhpZGRlbi1maWVsZFxuICAgICAgICAgICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ0hJRERFTl9GSUVMRCdcIlxuICAgICAgICAgICAgICAgICAgICBbcXVlc3Rpb25dPVwiZ3JpZC5lbGVtZW50XCJcbiAgICAgICAgICAgICAgICAgID48L2xpYi1oaWRkZW4tZmllbGQ+XG4gICAgICAgICAgICAgICAgICA8bGliLWlmcmFtZS1maWVsZHNcbiAgICAgICAgICAgICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidJRlJBTUVfV0lER0VUJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtxdWVzdGlvbl09XCJncmlkLmVsZW1lbnRcIlxuICAgICAgICAgICAgICAgICAgPjwvbGliLWlmcmFtZS1maWVsZHM+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8IS0tIDxuZy1jb250YWluZXIgKm5nSWY9XCJncmlkLmVsZW1lbnQuY2hpbGRMb2dpY3NcIj5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJnZXRDb21wb25lbnRGb3JDaGlsZExvZ2ljcyhncmlkLmVsZW1lbnQuY2hpbGRMb2dpY3MsICdjaGlsZCcsIGdyaWQuZWxlbWVudC5hbnN3ZXIpIGFzIG91dGxldFwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0NvbXBvbmVudE91dGxldD1cIm91dGxldC5jb21wb25lbnQgfCBhc3luYzsgaW5qZWN0b3I6IG91dGxldC5pbmplY3RvclwiPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPiAtLT5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZ3JpZD8uZWxlbWVudD8uY2hpbGRMb2dpY3NcIj5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb21wb25lbnRUb0xvYWRcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICpuZ0NvbXBvbmVudE91dGxldD1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50VG9Mb2FkO1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQ6IGdyaWQ/LmVsZW1lbnQ/LmNoaWxkTG9naWNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBhbnN3ZXI6IGdyaWQ/LmVsZW1lbnQ/LmFuc3dlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGU6ICdjaGlsZCdcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImdyaWQuZW50aXR5VHlwZSA9PT0gJ1NFQ1RJT04nICYmIGdyaWQuc2hvd1wiPlxuICAgICAgICAgICAgICAgIDxsaWItc2VjdGlvbi1maWVsZHNcbiAgICAgICAgICAgICAgICAgIFtzZWN0aW9uXT1cImdyaWQuZWxlbWVudFwiXG4gICAgICAgICAgICAgICAgPjwvbGliLXNlY3Rpb24tZmllbGRzPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2ICpuZ0lmPVwiaXNJbnZhbGlkXCIgY2xhc3M9XCJlcnJvci1tZXNzYWdlIG10LTRcIj5cbiAgICAgICAge3sgZXJyb3JNZXNzYWdlIH19XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -318,7 +318,6 @@ export class FormService {
|
|
|
318
318
|
}
|
|
319
319
|
}
|
|
320
320
|
}
|
|
321
|
-
console.log('[FormService] getSafeHeaders, input header:', this.header, 'output safe:', safe);
|
|
322
321
|
return safe;
|
|
323
322
|
}
|
|
324
323
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormService, deps: [{ token: i1.HttpClient }, { token: i2.DataService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
@@ -330,4 +329,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
330
329
|
providedIn: 'root',
|
|
331
330
|
}]
|
|
332
331
|
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.DataService }]; } });
|
|
333
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvZm9ybS1zdWJtaXNzaW9uL3NyYy9zZXJ2aWNlcy9mb3JtLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQWMsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7O0FBTzNFLE1BQU0sT0FBTyxXQUFXO0lBTXRCLFlBQW9CLElBQWdCLEVBQVUsV0FBd0I7UUFBbEQsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUFVLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBTDlELFdBQU0sR0FBVyxFQUFFLENBQUM7UUFDNUIsV0FBTSxHQUFRLEVBQUUsQ0FBQztRQUtmLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQzFDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDMUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDckIsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsV0FBVyxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO1lBQ3hELElBQUksU0FBUyxFQUFFO2dCQUNiLElBQUksQ0FBQyxlQUFlLEdBQUcsU0FBUyxDQUFDO2FBQ2xDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUMzQyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FB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QUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUU7WUFDeEIsT0FBTztTQUNSLENBQUMsQ0FBQztJQUVMLENBQUM7SUFFRCxjQUFjO1FBQ1osTUFBTSxJQUFJLEdBQThCLEVBQUUsQ0FBQztRQUMzQyxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksT0FBTyxJQUFJLENBQUMsTUFBTSxLQUFLLFFBQVEsRUFBRTtZQUNsRCxLQUFLLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFO2dCQUMxQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUM3QixJQUFJLEdBQUcsS0FBSyxTQUFTLElBQUksR0FBRyxLQUFLLElBQUksRUFBRTtvQkFDckMsSUFBSSxTQUFTLEdBQUcsR0FBRyxDQUFDO29CQUNwQixJQUFJLEdBQUcsS0FBSyxVQUFVLEVBQUU7d0JBQ3RCLFNBQVMsR0FBRyxXQUFXLENBQUM7cUJBQ3pCO29CQUNELElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7aUJBQy9CO2FBQ0Y7U0FDRjtRQUNELE9BQU8sQ0FBQyxHQUFHLENBQUMsNkNBQTZDLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxjQUFjLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDOUYsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDOytHQTlZVSxXQUFXO21IQUFYLFdBQVcsY0FGVixNQUFNOzs0RkFFUCxXQUFXO2tCQUh2QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzLCBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgRGF0YVNlcnZpY2UgfSBmcm9tICcuL2RhdGEuc2VydmljZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBGb3JtU2VydmljZSB7XG4gIHByaXZhdGUgYXBpVXJsOiBzdHJpbmcgPSAnJztcbiAgaGVhZGVyOiBhbnkgPSB7fTtcbiAgcGFyZW50UXVlc3Rpb25zOiBhbnk7XG4gIHN1YmZvcm1EYXRhOiBhbnk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LCBwcml2YXRlIGRhdGFTZXJ2aWNlOiBEYXRhU2VydmljZSkge1xuICAgIHRoaXMuZGF0YVNlcnZpY2UuYXBpVXJsJC5zdWJzY3JpYmUoKGRhdGEpID0+IHtcbiAgICAgIHRoaXMuYXBpVXJsID0gZGF0YTtcbiAgICB9KTtcblxuICAgIHRoaXMuZGF0YVNlcnZpY2UuaGVhZGVyJC5zdWJzY3JpYmUoKGRhdGEpID0+IHtcbiAgICAgIHRoaXMuaGVhZGVyID0gZGF0YTtcbiAgICB9KTtcblxuICAgIHRoaXMuZGF0YVNlcnZpY2UucGFyZW50UXVlc3Rpb25zJC5zdWJzY3JpYmUoKHF1ZXN0aW9ucykgPT4ge1xuICAgICAgaWYgKHF1ZXN0aW9ucykge1xuICAgICAgICB0aGlzLnBhcmVudFF1ZXN0aW9ucyA9IHF1ZXN0aW9ucztcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuZGF0YVNlcnZpY2Uuc3ViZm9ybSQuc3Vic2NyaWJlKChkYXRhKSA9PiB7XG4gICAgICB0aGlzLnN1YmZvcm1EYXRhID0gZGF0YTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldFF1ZXN0aW9ucyhcbiAgICBtb2R1bGVOYW1lOiBzdHJpbmcsXG4gICAgcGFnZU51bWJlcjogbnVtYmVyID0gMSxcbiAgICByb3dTZXQ6IG51bWJlciA9IDAsXG4gICAgcHJvZ3Jlc3NpdmVMb2FkaW5nOiBib29sZWFuID0gdHJ1ZSxcbiAgICBjb3VudHJ5OiBzdHJpbmcgPSAnJ1xuICApIHtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHRoaXMuZ2V0U2FmZUhlYWRlcnMoKSk7XG4gICAgY29uc3QgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKVxuICAgICAgLnNldCgncGFnZU51bWJlcicsIHBhZ2VOdW1iZXIudG9TdHJpbmcoKSlcbiAgICAgIC5zZXQoJ3Jvd1NldCcsIHJvd1NldC50b1N0cmluZygpKVxuICAgICAgLnNldCgnY291bnRyeScsIGNvdW50cnkpXG4gICAgICAuc2V0KCdwcm9ncmVzc2l2ZUxvYWRpbmcnLCBwcm9ncmVzc2l2ZUxvYWRpbmcpO1xuXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8YW55PihgJHt0aGlzLmFwaVVybH0vYXBpL3B1YmxpYy9mb3Jtcy8ke21vZHVsZU5hbWV9YCwge1xuICAgICAgaGVhZGVycyxcbiAgICAgIHBhcmFtcyxcbiAgICB9KTtcbiAgfVxuXG4gIGZldGNoRGF0YUZyb21EYXRhYmFzZShkYXRhYmFzZTogYW55LCBwYWdlTnVtYmVyOm51bWJlcj0wLCBwYWdlU2l6ZTpudW1iZXI9MTAsIHNlYXJjaFN0cmluZzpzdHJpbmc9JycsZW5hYmxlUGFnaW5hdGlvbjpib29sZWFuPWZhbHNlKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyB9KTtcbiAgICBjb25zdCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpXG4gICAgICAuc2V0KCdwYWdlJywgcGFnZU51bWJlci50b1N0cmluZygpKVxuICAgICAgLnNldCgnc2l6ZScsIHBhZ2VTaXplLnRvU3RyaW5nKCkpXG4gICAgICAuc2V0KCdlbmFibGVQYWdpbmF0aW9uJywgZW5hYmxlUGFnaW5hdGlvbi50b1N0cmluZygpKVxuICAgICAgLnNldCgnc2VhcmNoS2V5Jywgc2VhcmNoU3RyaW5nKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55PihgJHt0aGlzLmFwaVVybH0vYXBpL2xvYWQtZnJvbS1kYmAsIGRhdGFiYXNlLCB7XG4gICAgICBoZWFkZXJzLHBhcmFtc1xuICAgIH0pO1xuICB9XG5cbiAgZmV0Y2hEYXRhRnJvbUxvb2t1cCh0YWJsZU5hbWU6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PGFueT4oYCR7dGhpcy5hcGlVcmx9L2FwaS9wdWJsaWMvbG9va3VwLyR7dGFibGVOYW1lfWApO1xuICB9XG5cbiAgZmV0Y2hEYXRhRnJvbUV4dGVybmFsQVBJKFxuICAgIGFwaUNvbmZpZzogYW55LFxuICAgIHNlbGVjdGVkVmFsdWVzOiBhbnlbXSA9IFtdXG4gICk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgLy8g4pyFIENoZWNrIGlmIHBhZ2luYXRpb24gZXhpc3RzXG4gICAgY29uc3QgaGFzUGFnaW5hdGlvbiA9XG4gICAgICBhcGlDb25maWcucGFyYW1zPy5zb21lKChwOiBhbnkpID0+IHAudmFsdWVTb3VyY2UgPT09ICdQQUdFX0lOREVYJykgJiZcbiAgICAgIGFwaUNvbmZpZy5wYXJhbXM/LnNvbWUoKHA6IGFueSkgPT4gcC52YWx1ZVNvdXJjZSA9PT0gJ1BBR0VfU0laRScpO1xuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBIRUFERVJTIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBsZXQgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpO1xuICAgIC8vIGhlbHBlcjogcmVzb2x2ZSBhIHZhbHVlIChvciB2YWx1ZXMpIGJhc2VkIG9uIHZhbHVlU291cmNlXG5cbiAgICAvLyBBcHBseSB0byBoZWFkZXJzIChhc3N1bWluZyBgaGVhZGVyc2AgaXMgYW4gSHR0cEhlYWRlcnMgaW5zdGFuY2UpXG4gICAgaWYgKGFwaUNvbmZpZy5oZWFkZXJzKSB7XG4gICAgICBhcGlDb25maWcuaGVhZGVycy5mb3JFYWNoKChoZWFkZXI6IGFueSkgPT4ge1xuICAgICAgICBpZiAoIWhlYWRlci5rZXlOYW1lKSByZXR1cm47XG5cbiAgICAgICAgY29uc3QgcmF3VmFsdWUgPSByZXNvbHZlVmFsdWVGcm9tU291cmNlKFxuICAgICAgICAgIGhlYWRlci52YWx1ZVNvdXJjZSxcbiAgICAgICAgICBoZWFkZXIuaW5wdXRWYWx1ZSxcbiAgICAgICAgICBzZWxlY3RlZFZhbHVlc1xuICAgICAgICApO1xuXG4gICAgICAgIGlmIChoZWFkZXIudmFsdWVTb3VyY2UgPT09ICdTRUxFQ1RFRF9WQUxVRVMnKSB7XG4gICAgICAgICAgLy8gT25seSBhZGQgaGVhZGVyIGlmIHdlIGhhdmUgc2VsZWN0ZWQgdmFsdWVzXG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocmF3VmFsdWUpICYmIHJhd1ZhbHVlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGlmIChoZWFkZXIuaW5wdXRWYWx1ZSA9PT0gJ1NJTkdMRV9WQUxVRScpIHtcbiAgICAgICAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KGhlYWRlci5rZXlOYW1lLCBTdHJpbmcocmF3VmFsdWVbMF0pKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaGVhZGVyLmlucHV0VmFsdWUgPT09ICdBUlJBWV9PRl9WQUxVRVMnKSB7XG4gICAgICAgICAgICAgIC8vIGpvaW4gYnkgY29tbWEgZm9yIGhlYWRlcnMgKGNvbW1vbiBwYXR0ZXJuKVxuICAgICAgICAgICAgICBoZWFkZXJzID0gaGVhZGVycy5zZXQoaGVhZGVyLmtleU5hbWUsIHJhd1ZhbHVlLmpvaW4oJywnKSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAvLyBmYWxsYmFjazogam9pblxuICAgICAgICAgICAgICBoZWFkZXJzID0gaGVhZGVycy5zZXQoaGVhZGVyLmtleU5hbWUsIHJhd1ZhbHVlLmpvaW4oJywnKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIG5vIHNlbGVjdGVkIHZhbHVlcyAtPiBza2lwIGhlYWRlclxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEZvciBub24tc2VsZWN0ZWQgc291cmNlczogc2tpcCB3aGVuIHVucmVzb2x2ZWRcbiAgICAgICAgaWYgKHJhd1ZhbHVlID09PSBudWxsIHx8IHJhd1ZhbHVlID09PSB1bmRlZmluZWQpIHJldHVybjtcblxuICAgICAgICAvLyBJZiByYXdWYWx1ZSBpcyBhcnJheSAtPiBqb2luIGJ5IGNvbW1hIChoZWFkZXJzIGV4cGVjdCBzaW5nbGUgc3RyaW5nKVxuICAgICAgICBjb25zdCBoZWFkZXJWYWx1ZSA9IEFycmF5LmlzQXJyYXkocmF3VmFsdWUpXG4gICAgICAgICAgPyByYXdWYWx1ZS5qb2luKCcsJylcbiAgICAgICAgICA6IFN0cmluZyhyYXdWYWx1ZSk7XG5cbiAgICAgICAgaWYgKGhlYWRlci5rZXlOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdhdXRob3JpemF0aW9uJykge1xuICAgICAgICAgIC8vIGFkZCBCZWFyZXIgb25seSB3aGVuIGhlYWRlclZhbHVlIGlzIHRydXRoeSAoYW5kIG5vdCBhbHJlYWR5IHByZWZpeGVkKVxuICAgICAgICAgIGNvbnN0IHRva2VuID0gaGVhZGVyVmFsdWUuc3RhcnRzV2l0aCgnQmVhcmVyICcpXG4gICAgICAgICAgICA/IGhlYWRlclZhbHVlXG4gICAgICAgICAgICA6IGBCZWFyZXIgJHtoZWFkZXJWYWx1ZX1gO1xuICAgICAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldChoZWFkZXIua2V5TmFtZSwgdG9rZW4pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldChoZWFkZXIua2V5TmFtZSwgaGVhZGVyVmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFBBUkFNUyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XG4gICAgLy8gaGVscGVyOiByZXNvbHZlIGEgdmFsdWUgKG9yIHZhbHVlcykgYmFzZWQgb24gdmFsdWVTb3VyY2VcbiAgICBmdW5jdGlvbiByZXNvbHZlVmFsdWVGcm9tU291cmNlKFxuICAgICAgdmFsdWVTb3VyY2U6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICAgIGlucHV0VmFsdWU6IGFueSxcbiAgICAgIHNlbGVjdGVkVmFsdWVzOiBhbnlbXSA9IFtdXG4gICAgKSB7XG4gICAgICBpZiAoIXZhbHVlU291cmNlKSByZXR1cm4gbnVsbDtcblxuICAgICAgc3dpdGNoICh2YWx1ZVNvdXJjZSkge1xuICAgICAgICBjYXNlICdMT0NBTF9TVE9SQUdFJzpcbiAgICAgICAgICByZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0oaW5wdXRWYWx1ZSk7IC8vIHN0cmluZyBvciBudWxsXG5cbiAgICAgICAgY2FzZSAnU0VTU0lPTl9TVE9SQUdFJzpcbiAgICAgICAgICByZXR1cm4gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShpbnB1dFZhbHVlKTsgLy8gc3RyaW5nIG9yIG51bGxcblxuICAgICAgICBjYXNlICdDVVNUT01fSU5QVVQnOlxuICAgICAgICBjYXNlICdRVUVTVElPTic6XG4gICAgICAgIGNhc2UgJ1BBR0VfSU5ERVgnOlxuICAgICAgICBjYXNlICdQQUdFX1NJWkUnOlxuICAgICAgICBjYXNlICdTRUFSQ0hfU1RSSU5HJzpcbiAgICAgICAgICAvLyBpbnB1dFZhbHVlIG1heSBiZSBhIHNpbmdsZSB2YWx1ZSBvciBhbiBhcnJheS9DU1YgZGVwZW5kaW5nIG9uIHVzYWdlXG4gICAgICAgICAgcmV0dXJuIGlucHV0VmFsdWU7XG5cbiAgICAgICAgY2FzZSAnU0VMRUNURURfVkFMVUVTJzpcbiAgICAgICAgICAvLyBGb3IgU0VMRUNURURfVkFMVUVTLCByZXR1cm4gdGhlIHNlbGVjdGVkVmFsdWVzIGFycmF5IChjYWxsZXIgZGVjaWRlcyBTSU5HTEUvQVJSQVkgYmVoYXZpb3IpXG4gICAgICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkoc2VsZWN0ZWRWYWx1ZXMpID8gc2VsZWN0ZWRWYWx1ZXMgOiBbXTtcblxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGNvbnNvbGUud2FybihgVW5zdXBwb3J0ZWQgdmFsdWVTb3VyY2UgZm9yIHBhcmFtczogJHt2YWx1ZVNvdXJjZX1gKTtcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBVc2FnZTogYnVpbGQgcGFyYW1zIChhc3N1bWluZyBgcGFyYW1zYCBpcyBhbiBIdHRwUGFyYW1zIGluc3RhbmNlKVxuICAgIGlmIChhcGlDb25maWcucGFyYW1zKSB7XG4gICAgICBhcGlDb25maWcucGFyYW1zLmZvckVhY2goKHBhcmFtOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKCFwYXJhbS5rZXlOYW1lKSByZXR1cm47XG5cbiAgICAgICAgLy8gUmVzb2x2ZSByYXcgdmFsdWUgYmFzZWQgb24gc291cmNlXG4gICAgICAgIGNvbnN0IHJhd1ZhbHVlID0gcmVzb2x2ZVZhbHVlRnJvbVNvdXJjZShcbiAgICAgICAgICBwYXJhbS52YWx1ZVNvdXJjZSxcbiAgICAgICAgICBwYXJhbS5pbnB1dFZhbHVlLFxuICAgICAgICAgIHNlbGVjdGVkVmFsdWVzXG4gICAgICAgICk7XG5cbiAgICAgICAgLy8gSWYgcGFyYW0gZXhwZWN0cyBzZWxlY3RlZCB2YWx1ZXMsIGhhbmRsZSBTSU5HTEVfVkFMVUUgdnMgQVJSQVlfT0ZfVkFMVUVTXG4gICAgICAgIGlmIChwYXJhbS52YWx1ZVNvdXJjZSA9PT0gJ1NFTEVDVEVEX1ZBTFVFUycpIHtcbiAgICAgICAgICAvLyBPbmx5IGFkZCBpZiB0aGVyZSBhcmUgYWN0dWFsIHNlbGVjdGVkIHZhbHVlc1xuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHJhd1ZhbHVlKSAmJiByYXdWYWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBpZiAocGFyYW0uaW5wdXRWYWx1ZSA9PT0gJ1NJTkdMRV9WQUxVRScpIHtcbiAgICAgICAgICAgICAgLy8gc2V0IHRvIGZpcnN0IHNlbGVjdGVkIHZhbHVlXG4gICAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQocGFyYW0ua2V5TmFtZSwgcmF3VmFsdWVbMF0pO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChwYXJhbS5pbnB1dFZhbHVlID09PSAnQVJSQVlfT0ZfVkFMVUVTJykge1xuICAgICAgICAgICAgICAvLyBhcHBlbmQgZWFjaCBzZWxlY3RlZCB2YWx1ZSBhcyByZXBlYXRlZCBwYXJhbVxuICAgICAgICAgICAgICByYXdWYWx1ZS5mb3JFYWNoKCh2YWw6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQocGFyYW0ua2V5TmFtZSwgdmFsKTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAvLyBpZiBpbnB1dFZhbHVlIG5vdCBwcm92aWRlZCwgZGVmYXVsdCB0byBhcnJheSBiZWhhdmlvclxuICAgICAgICAgICAgICByYXdWYWx1ZS5mb3JFYWNoKCh2YWw6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQocGFyYW0ua2V5TmFtZSwgdmFsKTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIGlmIG5vIHNlbGVjdGVkIHZhbHVlcywgc2tpcCBhZGRpbmcgdGhpcyBwYXJhbVxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEZvciBub24tc2VsZWN0ZWQgdmFsdWVTb3VyY2VzOiByYXdWYWx1ZSBjb3VsZCBiZSBudWxsL3VuZGVmaW5lZC9zdHJpbmcvYXJyYXlcbiAgICAgICAgaWYgKHJhd1ZhbHVlID09PSBudWxsIHx8IHJhd1ZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAvLyBza2lwIGFkZGluZyBwYXJhbSB3aGVuIHZhbHVlIG5vdCBmb3VuZFxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIElmIGlucHV0VmFsdWUgaW5kaWNhdGVzIGFycmF5LW9mLXZhbHVlcyAoZS5nLiwgcGFyYW0uaW5wdXRWYWx1ZSA9PT0gJ0FSUkFZX09GX1ZBTFVFUycpLFxuICAgICAgICAvLyBhY2NlcHQgZWl0aGVyIGFuIGFycmF5IG9yIGEgY29tbWEtc2VwYXJhdGVkIHN0cmluZ1xuICAgICAgICBpZiAocGFyYW0uaW5wdXRWYWx1ZSA9PT0gJ0FSUkFZX09GX1ZBTFVFUycpIHtcbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShyYXdWYWx1ZSkpIHtcbiAgICAgICAgICAgIHJhd1ZhbHVlLmZvckVhY2goKHZhbDogYW55KSA9PiB7XG4gICAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQocGFyYW0ua2V5TmFtZSwgdmFsKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHJhd1ZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgLy8gc3VwcG9ydCBjb21tYSBzZXBhcmF0ZWQgc3RyaW5nXG4gICAgICAgICAgICByYXdWYWx1ZVxuICAgICAgICAgICAgICAuc3BsaXQoJywnKVxuICAgICAgICAgICAgICAubWFwKChzKSA9PiBzLnRyaW0oKSlcbiAgICAgICAgICAgICAgLmZpbHRlcihCb29sZWFuKVxuICAgICAgICAgICAgICAuZm9yRWFjaCgodmFsOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKHBhcmFtLmtleU5hbWUsIHZhbCk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBmYWxsYmFjazogY29udmVydCB0byBzdHJpbmcgYW5kIGFwcGVuZFxuICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZChwYXJhbS5rZXlOYW1lLCBTdHJpbmcocmF3VmFsdWUpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gZGVmYXVsdDogc2V0IHNpbmdsZSB2YWx1ZVxuICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQocGFyYW0ua2V5TmFtZSwgU3RyaW5nKHJhd1ZhbHVlKSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUEFUSCBWQVJJQUJMRVMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIGxldCB1cmwgPSBhcGlDb25maWcudXJsO1xuICAgIGlmIChhcGlDb25maWcucGF0aFZhcmlhYmxlcykge1xuICAgICAgYXBpQ29uZmlnLnBhdGhWYXJpYWJsZXMuZm9yRWFjaCgocGF0aFZhcjogYW55KSA9PiB7XG4gICAgICAgIGlmIChwYXRoVmFyLmtleU5hbWUpIHtcbiAgICAgICAgICBsZXQgdmFsdWVUb0JpbmQ6IGFueSA9IG51bGw7XG5cbiAgICAgICAgICBzd2l0Y2ggKHBhdGhWYXIudmFsdWVTb3VyY2UpIHtcbiAgICAgICAgICAgIGNhc2UgJ0xPQ0FMX1NUT1JBR0UnOlxuICAgICAgICAgICAgICB2YWx1ZVRvQmluZCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHBhdGhWYXIuaW5wdXRWYWx1ZSk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdTRVNTSU9OX1NUT1JBR0UnOlxuICAgICAgICAgICAgICB2YWx1ZVRvQmluZCA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0ocGF0aFZhci5pbnB1dFZhbHVlKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ0NVU1RPTV9JTlBVVCc6XG4gICAgICAgICAgICBjYXNlICdRVUVTVElPTic6XG4gICAgICAgICAgICAgIHZhbHVlVG9CaW5kID0gcGF0aFZhci5pbnB1dFZhbHVlO1xuICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgY29uc29sZS53YXJuKGBVbnN1cHBvcnRlZCB2YWx1ZVNvdXJjZTogJHtwYXRoVmFyLnZhbHVlU291cmNlfWApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICh2YWx1ZVRvQmluZCAhPT0gbnVsbCAmJiB2YWx1ZVRvQmluZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB1cmwgPSB1cmwucmVwbGFjZShgeyR7cGF0aFZhci5rZXlOYW1lfX1gLCB2YWx1ZVRvQmluZCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZJTkFMIENBTEwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PGFueT4odXJsLCB7IGhlYWRlcnMsIHBhcmFtcyB9KTtcbiAgfVxuXG4gIHN1Ym1pdEZvcm0oXG4gICAgbW9kdWxlTmFtZTogc3RyaW5nLFxuICAgIGZvcm1EYXRhOiBGb3JtRGF0YSxcbiAgICByZUNBUFRDSEFUb2tlbj86IHN0cmluZ1xuICApOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIC8vIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoe1xuICAgIC8vICAgJ0F1dGgtdXNlcic6IHRoaXMuaGVhZGVyLmF1dGhVc2VyLFxuICAgIC8vIH0pO1xuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnModGhpcy5nZXRTYWZlSGVhZGVycygpKTtcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmFwaVVybH0vYXBpL3B1YmxpYy9mb3Jtcy8ke21vZHVsZU5hbWV9L3N1Ym1pc3Npb25zYDtcbiAgICBpZiAocmVDQVBUQ0hBVG9rZW4pIHtcbiAgICAgIGZvcm1EYXRhLmFwcGVuZCgncmVjYXB0Y2hhVG9rZW4nLCByZUNBUFRDSEFUb2tlbik7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdCh1cmwsIGZvcm1EYXRhLCB7XG4gICAgICBoZWFkZXJzLFxuICAgICAgb2JzZXJ2ZTogJ2V2ZW50cycsXG4gICAgICByZXBvcnRQcm9ncmVzczogdHJ1ZSxcbiAgICB9KTtcbiAgfVxuXG4gIGdldFN1Ym1pdHRlZEZvcm0oXG4gICAgbW9kdWxlTmFtZTogc3RyaW5nLFxuICAgIHN1Ym1pc3Npb25JZDogc3RyaW5nLFxuICAgIHBhZ2VOdW1iZXI6IG51bWJlciA9IDEsXG4gICAgcm93U2V0OiBudW1iZXIgPSAwLFxuICAgIG5hdmlnYXRlVG8/OiBzdHJpbmdcbiAgKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKVxuICAgICAgLnNldCgncGFnZU51bWJlcicsIHBhZ2VOdW1iZXIudG9TdHJpbmcoKSlcbiAgICAgIC5zZXQoJ3Jvd1NldCcsIHJvd1NldC50b1N0cmluZygpKTtcbiAgICBpZiAobmF2aWdhdGVUbykge1xuICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgnbmF2aWdhdGVJZCcsIG5hdmlnYXRlVG8pO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnBhcmVudFF1ZXN0aW9ucykge1xuICAgICAgdGhpcy5wYXJlbnRRdWVzdGlvbnMuZm9yRWFjaCgocTogYW55KSA9PiB7XG4gICAgICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoJ3BhcmVudFF1ZXN0aW9ucycsIHEpO1xuICAgICAgfSk7XG4gICAgfVxuICAgIC8vIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoe1xuICAgIC8vICAgJ0FjY2VwdC1MYW5ndWFnZSc6IHRoaXMuaGVhZGVyLmFjY2VwdGVkTGFuZ3VhZ2UsXG4gICAgLy8gfSk7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh0aGlzLmdldFNhZmVIZWFkZXJzKCkpO1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PGFueT4oXG4gICAgICBgJHt0aGlzLmFwaVVybH0vYXBpL2Zvcm1zLyR7bW9kdWxlTmFtZX0vc3VibWlzc2lvbnMvJHtzdWJtaXNzaW9uSWR9YCxcbiAgICAgIHsgaGVhZGVycywgcGFyYW1zIH1cbiAgICApO1xuICB9XG5cbiAgdXBkYXRlRm9ybShcbiAgICBtb2R1bGVOYW1lOiBzdHJpbmcsXG4gICAgc3VibWlzc2lvbklkOiBzdHJpbmcsXG4gICAgZm9ybURhdGE6IEZvcm1EYXRhLFxuICAgIHJlQ0FQVENIQVRva2VuPzogc3RyaW5nXG4gICk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgLy8gY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh7XG4gICAgLy8gICAnQXV0aC11c2VyJzogdGhpcy5oZWFkZXIuYXV0aFVzZXIsXG4gICAgLy8gfSk7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh0aGlzLmdldFNhZmVIZWFkZXJzKCkpO1xuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuYXBpVXJsfS9hcGkvcHVibGljL2Zvcm1zLyR7bW9kdWxlTmFtZX0vc3VibWlzc2lvbnMvJHtzdWJtaXNzaW9uSWR9YDtcbiAgICBpZiAocmVDQVBUQ0hBVG9rZW4pIHtcbiAgICAgIGZvcm1EYXRhLmFwcGVuZCgncmVjYXB0Y2hhVG9rZW4nLCByZUNBUFRDSEFUb2tlbik7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmh0dHAucHV0PGFueT4odXJsLCBmb3JtRGF0YSwge1xuICAgICAgaGVhZGVycyxcbiAgICAgIG9ic2VydmU6ICdldmVudHMnLFxuICAgICAgcmVwb3J0UHJvZ3Jlc3M6IHRydWUsXG4gICAgfSwpO1xuICB9XG5cbiAgcHJldmlld0ZpbGUodXJsOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIC8vIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoe1xuICAgIC8vICAgJ0FjY2VwdC1MYW5ndWFnZSc6IHRoaXMuaGVhZGVyLmFjY2VwdGVkTGFuZ3VhZ2UsXG4gICAgLy8gICAnQ29udGVudC1UeXBlJzogdGhpcy5oZWFkZXIuY29udGVudFR5cGUsXG4gICAgLy8gICAnYXV0aC11c2VyJzogdGhpcy5oZWFkZXIuYXV0aFVzZXIsXG4gICAgLy8gICAnQXV0aG9yaXphdGlvbic6IGBCZWFyZXIgJHt0aGlzLmhlYWRlci5hdXRob3JpemF0aW9ufWAsXG4gICAgLy8gfSk7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh0aGlzLmdldFNhZmVIZWFkZXJzKCkpO1xuICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICBoZWFkZXJzOiBoZWFkZXJzLFxuICAgIH07XG4gICAgY29uc3QgZmlsZVVybCA9IHVybDtcbiAgICBjb25zdCBlbmNvZGVkRmlsZVVybCA9IGVuY29kZVVSSUNvbXBvbmVudChmaWxlVXJsKTtcbiAgICBjb25zdCBmdWxsVXJsID0gYD91cmw9JHtlbmNvZGVkRmlsZVVybH1gO1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PGFueT4oXG4gICAgICB0aGlzLmFwaVVybCArIGAvYXBpL2Nkbi9wcmV2aWV3JHtmdWxsVXJsfWAsXG4gICAgICBvcHRpb25zXG4gICAgKTtcbiAgfVxuXG4gIGdldFN1YmZvcm1TdWJtaXNzaW9ucyhzdWJGb3JtRGF0YTogYW55KSB7XG4gICAgaWYgKFxuICAgICAgIXN1YkZvcm1EYXRhPy5tb2R1bGVOYW1lIHx8XG4gICAgICAhc3ViRm9ybURhdGE/LmR1cGxpY2F0ZVN1Ym1pc3Npb24/LnNvdXJjZVN1Ym1pc3Npb25JZHNcbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHRoaXMuZ2V0U2FmZUhlYWRlcnMoKSk7XG5cbiAgICAvLyBFeHRyYWN0IGRhdGFcbiAgICBjb25zdCBtb2R1bGVOYW1lID0gc3ViRm9ybURhdGEubW9kdWxlTmFtZTtcbiAgICBjb25zdCBzdWJtaXNzaW9uSWRzOiBzdHJpbmdbXSA9XG4gICAgICBzdWJGb3JtRGF0YS5kdXBsaWNhdGVTdWJtaXNzaW9uLnNvdXJjZVN1Ym1pc3Npb25JZHM7XG5cbiAgICAvLyBCdWlsZCBxdWVyeSBzdHJpbmdcbiAgICBjb25zdCBxdWVyeVBhcmFtcyA9IHN1Ym1pc3Npb25JZHNcbiAgICAgIC5tYXAoKGlkKSA9PiBgc3VibWlzc2lvbklkcz0ke2VuY29kZVVSSUNvbXBvbmVudChpZCl9YClcbiAgICAgIC5qb2luKCcmJyk7XG5cbiAgICAvLyBGaW5hbCBVUkxcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmFwaVVybH0vYXBpL3B1YmxpYy8ke21vZHVsZU5hbWV9L3N1YmZvcm0tc3VibWlzc2lvbnM/JHtxdWVyeVBhcmFtc31gO1xuXG4gICAgLy8gTm93IG1ha2UgQVBJIGNhbGxcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldCh1cmwsIHtcbiAgICAgIGhlYWRlcnNcbiAgICB9KTtcblxuICB9XG5cbiAgZ2V0U2FmZUhlYWRlcnMoKTogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSB7XG4gICAgY29uc3Qgc2FmZTogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHt9O1xuICAgIGlmICh0aGlzLmhlYWRlciAmJiB0eXBlb2YgdGhpcy5oZWFkZXIgPT09ICdvYmplY3QnKSB7XG4gICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyh0aGlzLmhlYWRlcikpIHtcbiAgICAgICAgY29uc3QgdmFsID0gdGhpcy5oZWFkZXJba2V5XTtcbiAgICAgICAgaWYgKHZhbCAhPT0gdW5kZWZpbmVkICYmIHZhbCAhPT0gbnVsbCkge1xuICAgICAgICAgIGxldCBoZWFkZXJLZXkgPSBrZXk7XG4gICAgICAgICAgaWYgKGtleSA9PT0gJ2F1dGhVc2VyJykge1xuICAgICAgICAgICAgaGVhZGVyS2V5ID0gJ2F1dGgtdXNlcic7XG4gICAgICAgICAgfVxuICAgICAgICAgIHNhZmVbaGVhZGVyS2V5XSA9IFN0cmluZyh2YWwpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnNvbGUubG9nKCdbRm9ybVNlcnZpY2VdIGdldFNhZmVIZWFkZXJzLCBpbnB1dCBoZWFkZXI6JywgdGhpcy5oZWFkZXIsICdvdXRwdXQgc2FmZTonLCBzYWZlKTtcbiAgICByZXR1cm4gc2FmZTtcbiAgfVxufVxuIl19
|
|
332
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvZm9ybS1zdWJtaXNzaW9uL3NyYy9zZXJ2aWNlcy9mb3JtLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQWMsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7O0FBTzNFLE1BQU0sT0FBTyxXQUFXO0lBTXRCLFlBQW9CLElBQWdCLEVBQVUsV0FBd0I7UUFBbEQsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUFVLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBTDlELFdBQU0sR0FBVyxFQUFFLENBQUM7UUFDNUIsV0FBTSxHQUFRLEVBQUUsQ0FBQztRQUtmLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQzFDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDMUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDckIsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsV0FBVyxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO1lBQ3hELElBQUksU0FBUyxFQUFFO2dCQUNiLElBQUksQ0FBQyxlQUFlLEdBQUcsU0FBUyxDQUFDO2FBQ2xDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUMzQyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FB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QUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUU7WUFDeEIsT0FBTztTQUNSLENBQUMsQ0FBQztJQUVMLENBQUM7SUFFRCxjQUFjO1FBQ1osTUFBTSxJQUFJLEdBQThCLEVBQUUsQ0FBQztRQUMzQyxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksT0FBTyxJQUFJLENBQUMsTUFBTSxLQUFLLFFBQVEsRUFBRTtZQUNsRCxLQUFLLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFO2dCQUMxQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUM3QixJQUFJLEdBQUcsS0FBSyxTQUFTLElBQUksR0FBRyxLQUFLLElBQUksRUFBRTtvQkFDckMsSUFBSSxTQUFTLEdBQUcsR0FBRyxDQUFDO29CQUNwQixJQUFJLEdBQUcsS0FBSyxVQUFVLEVBQUU7d0JBQ3RCLFNBQVMsR0FBRyxXQUFXLENBQUM7cUJBQ3pCO29CQUNELElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7aUJBQy9CO2FBQ0Y7U0FDRjtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQzsrR0E3WVUsV0FBVzttSEFBWCxXQUFXLGNBRlYsTUFBTTs7NEZBRVAsV0FBVztrQkFIdkIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycywgSHR0cFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IERhdGFTZXJ2aWNlIH0gZnJvbSAnLi9kYXRhLnNlcnZpY2UnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgRm9ybVNlcnZpY2Uge1xuICBwcml2YXRlIGFwaVVybDogc3RyaW5nID0gJyc7XG4gIGhlYWRlcjogYW55ID0ge307XG4gIHBhcmVudFF1ZXN0aW9uczogYW55O1xuICBzdWJmb3JtRGF0YTogYW55O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCwgcHJpdmF0ZSBkYXRhU2VydmljZTogRGF0YVNlcnZpY2UpIHtcbiAgICB0aGlzLmRhdGFTZXJ2aWNlLmFwaVVybCQuc3Vic2NyaWJlKChkYXRhKSA9PiB7XG4gICAgICB0aGlzLmFwaVVybCA9IGRhdGE7XG4gICAgfSk7XG5cbiAgICB0aGlzLmRhdGFTZXJ2aWNlLmhlYWRlciQuc3Vic2NyaWJlKChkYXRhKSA9PiB7XG4gICAgICB0aGlzLmhlYWRlciA9IGRhdGE7XG4gICAgfSk7XG5cbiAgICB0aGlzLmRhdGFTZXJ2aWNlLnBhcmVudFF1ZXN0aW9ucyQuc3Vic2NyaWJlKChxdWVzdGlvbnMpID0+IHtcbiAgICAgIGlmIChxdWVzdGlvbnMpIHtcbiAgICAgICAgdGhpcy5wYXJlbnRRdWVzdGlvbnMgPSBxdWVzdGlvbnM7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLmRhdGFTZXJ2aWNlLnN1YmZvcm0kLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xuICAgICAgdGhpcy5zdWJmb3JtRGF0YSA9IGRhdGE7XG4gICAgfSk7XG4gIH1cblxuICBnZXRRdWVzdGlvbnMoXG4gICAgbW9kdWxlTmFtZTogc3RyaW5nLFxuICAgIHBhZ2VOdW1iZXI6IG51bWJlciA9IDEsXG4gICAgcm93U2V0OiBudW1iZXIgPSAwLFxuICAgIHByb2dyZXNzaXZlTG9hZGluZzogYm9vbGVhbiA9IHRydWUsXG4gICAgY291bnRyeTogc3RyaW5nID0gJydcbiAgKSB7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh0aGlzLmdldFNhZmVIZWFkZXJzKCkpO1xuICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKClcbiAgICAgIC5zZXQoJ3BhZ2VOdW1iZXInLCBwYWdlTnVtYmVyLnRvU3RyaW5nKCkpXG4gICAgICAuc2V0KCdyb3dTZXQnLCByb3dTZXQudG9TdHJpbmcoKSlcbiAgICAgIC5zZXQoJ2NvdW50cnknLCBjb3VudHJ5KVxuICAgICAgLnNldCgncHJvZ3Jlc3NpdmVMb2FkaW5nJywgcHJvZ3Jlc3NpdmVMb2FkaW5nKTtcblxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PGFueT4oYCR7dGhpcy5hcGlVcmx9L2FwaS9wdWJsaWMvZm9ybXMvJHttb2R1bGVOYW1lfWAsIHtcbiAgICAgIGhlYWRlcnMsXG4gICAgICBwYXJhbXMsXG4gICAgfSk7XG4gIH1cblxuICBmZXRjaERhdGFGcm9tRGF0YWJhc2UoZGF0YWJhc2U6IGFueSwgcGFnZU51bWJlcjpudW1iZXI9MCwgcGFnZVNpemU6bnVtYmVyPTEwLCBzZWFyY2hTdHJpbmc6c3RyaW5nPScnLGVuYWJsZVBhZ2luYXRpb246Ym9vbGVhbj1mYWxzZSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicgfSk7XG4gICAgY29uc3QgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKVxuICAgICAgLnNldCgncGFnZScsIHBhZ2VOdW1iZXIudG9TdHJpbmcoKSlcbiAgICAgIC5zZXQoJ3NpemUnLCBwYWdlU2l6ZS50b1N0cmluZygpKVxuICAgICAgLnNldCgnZW5hYmxlUGFnaW5hdGlvbicsIGVuYWJsZVBhZ2luYXRpb24udG9TdHJpbmcoKSlcbiAgICAgIC5zZXQoJ3NlYXJjaEtleScsIHNlYXJjaFN0cmluZyk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PGFueT4oYCR7dGhpcy5hcGlVcmx9L2FwaS9sb2FkLWZyb20tZGJgLCBkYXRhYmFzZSwge1xuICAgICAgaGVhZGVycyxwYXJhbXNcbiAgICB9KTtcbiAgfVxuXG4gIGZldGNoRGF0YUZyb21Mb29rdXAodGFibGVOYW1lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnk+KGAke3RoaXMuYXBpVXJsfS9hcGkvcHVibGljL2xvb2t1cC8ke3RhYmxlTmFtZX1gKTtcbiAgfVxuXG4gIGZldGNoRGF0YUZyb21FeHRlcm5hbEFQSShcbiAgICBhcGlDb25maWc6IGFueSxcbiAgICBzZWxlY3RlZFZhbHVlczogYW55W10gPSBbXVxuICApOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIC8vIOKchSBDaGVjayBpZiBwYWdpbmF0aW9uIGV4aXN0c1xuICAgIGNvbnN0IGhhc1BhZ2luYXRpb24gPVxuICAgICAgYXBpQ29uZmlnLnBhcmFtcz8uc29tZSgocDogYW55KSA9PiBwLnZhbHVlU291cmNlID09PSAnUEFHRV9JTkRFWCcpICYmXG4gICAgICBhcGlDb25maWcucGFyYW1zPy5zb21lKChwOiBhbnkpID0+IHAudmFsdWVTb3VyY2UgPT09ICdQQUdFX1NJWkUnKTtcblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gSEVBREVSUyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgbGV0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKTtcbiAgICAvLyBoZWxwZXI6IHJlc29sdmUgYSB2YWx1ZSAob3IgdmFsdWVzKSBiYXNlZCBvbiB2YWx1ZVNvdXJjZVxuXG4gICAgLy8gQXBwbHkgdG8gaGVhZGVycyAoYXNzdW1pbmcgYGhlYWRlcnNgIGlzIGFuIEh0dHBIZWFkZXJzIGluc3RhbmNlKVxuICAgIGlmIChhcGlDb25maWcuaGVhZGVycykge1xuICAgICAgYXBpQ29uZmlnLmhlYWRlcnMuZm9yRWFjaCgoaGVhZGVyOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKCFoZWFkZXIua2V5TmFtZSkgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IHJhd1ZhbHVlID0gcmVzb2x2ZVZhbHVlRnJvbVNvdXJjZShcbiAgICAgICAgICBoZWFkZXIudmFsdWVTb3VyY2UsXG4gICAgICAgICAgaGVhZGVyLmlucHV0VmFsdWUsXG4gICAgICAgICAgc2VsZWN0ZWRWYWx1ZXNcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAoaGVhZGVyLnZhbHVlU291cmNlID09PSAnU0VMRUNURURfVkFMVUVTJykge1xuICAgICAgICAgIC8vIE9ubHkgYWRkIGhlYWRlciBpZiB3ZSBoYXZlIHNlbGVjdGVkIHZhbHVlc1xuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHJhd1ZhbHVlKSAmJiByYXdWYWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBpZiAoaGVhZGVyLmlucHV0VmFsdWUgPT09ICdTSU5HTEVfVkFMVUUnKSB7XG4gICAgICAgICAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldChoZWFkZXIua2V5TmFtZSwgU3RyaW5nKHJhd1ZhbHVlWzBdKSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhlYWRlci5pbnB1dFZhbHVlID09PSAnQVJSQVlfT0ZfVkFMVUVTJykge1xuICAgICAgICAgICAgICAvLyBqb2luIGJ5IGNvbW1hIGZvciBoZWFkZXJzIChjb21tb24gcGF0dGVybilcbiAgICAgICAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KGhlYWRlci5rZXlOYW1lLCByYXdWYWx1ZS5qb2luKCcsJykpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgLy8gZmFsbGJhY2s6IGpvaW5cbiAgICAgICAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KGhlYWRlci5rZXlOYW1lLCByYXdWYWx1ZS5qb2luKCcsJykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBubyBzZWxlY3RlZCB2YWx1ZXMgLT4gc2tpcCBoZWFkZXJcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBGb3Igbm9uLXNlbGVjdGVkIHNvdXJjZXM6IHNraXAgd2hlbiB1bnJlc29sdmVkXG4gICAgICAgIGlmIChyYXdWYWx1ZSA9PT0gbnVsbCB8fCByYXdWYWx1ZSA9PT0gdW5kZWZpbmVkKSByZXR1cm47XG5cbiAgICAgICAgLy8gSWYgcmF3VmFsdWUgaXMgYXJyYXkgLT4gam9pbiBieSBjb21tYSAoaGVhZGVycyBleHBlY3Qgc2luZ2xlIHN0cmluZylcbiAgICAgICAgY29uc3QgaGVhZGVyVmFsdWUgPSBBcnJheS5pc0FycmF5KHJhd1ZhbHVlKVxuICAgICAgICAgID8gcmF3VmFsdWUuam9pbignLCcpXG4gICAgICAgICAgOiBTdHJpbmcocmF3VmFsdWUpO1xuXG4gICAgICAgIGlmIChoZWFkZXIua2V5TmFtZS50b0xvd2VyQ2FzZSgpID09PSAnYXV0aG9yaXphdGlvbicpIHtcbiAgICAgICAgICAvLyBhZGQgQmVhcmVyIG9ubHkgd2hlbiBoZWFkZXJWYWx1ZSBpcyB0cnV0aHkgKGFuZCBub3QgYWxyZWFkeSBwcmVmaXhlZClcbiAgICAgICAgICBjb25zdCB0b2tlbiA9IGhlYWRlclZhbHVlLnN0YXJ0c1dpdGgoJ0JlYXJlciAnKVxuICAgICAgICAgICAgPyBoZWFkZXJWYWx1ZVxuICAgICAgICAgICAgOiBgQmVhcmVyICR7aGVhZGVyVmFsdWV9YDtcbiAgICAgICAgICBoZWFkZXJzID0gaGVhZGVycy5zZXQoaGVhZGVyLmtleU5hbWUsIHRva2VuKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBoZWFkZXJzID0gaGVhZGVycy5zZXQoaGVhZGVyLmtleU5hbWUsIGhlYWRlclZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQQVJBTVMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xuICAgIC8vIGhlbHBlcjogcmVzb2x2ZSBhIHZhbHVlIChvciB2YWx1ZXMpIGJhc2VkIG9uIHZhbHVlU291cmNlXG4gICAgZnVuY3Rpb24gcmVzb2x2ZVZhbHVlRnJvbVNvdXJjZShcbiAgICAgIHZhbHVlU291cmNlOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgICBpbnB1dFZhbHVlOiBhbnksXG4gICAgICBzZWxlY3RlZFZhbHVlczogYW55W10gPSBbXVxuICAgICkge1xuICAgICAgaWYgKCF2YWx1ZVNvdXJjZSkgcmV0dXJuIG51bGw7XG5cbiAgICAgIHN3aXRjaCAodmFsdWVTb3VyY2UpIHtcbiAgICAgICAgY2FzZSAnTE9DQUxfU1RPUkFHRSc6XG4gICAgICAgICAgcmV0dXJuIGxvY2FsU3RvcmFnZS5nZXRJdGVtKGlucHV0VmFsdWUpOyAvLyBzdHJpbmcgb3IgbnVsbFxuXG4gICAgICAgIGNhc2UgJ1NFU1NJT05fU1RPUkFHRSc6XG4gICAgICAgICAgcmV0dXJuIHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oaW5wdXRWYWx1ZSk7IC8vIHN0cmluZyBvciBudWxsXG5cbiAgICAgICAgY2FzZSAnQ1VTVE9NX0lOUFVUJzpcbiAgICAgICAgY2FzZSAnUVVFU1RJT04nOlxuICAgICAgICBjYXNlICdQQUdFX0lOREVYJzpcbiAgICAgICAgY2FzZSAnUEFHRV9TSVpFJzpcbiAgICAgICAgY2FzZSAnU0VBUkNIX1NUUklORyc6XG4gICAgICAgICAgLy8gaW5wdXRWYWx1ZSBtYXkgYmUgYSBzaW5nbGUgdmFsdWUgb3IgYW4gYXJyYXkvQ1NWIGRlcGVuZGluZyBvbiB1c2FnZVxuICAgICAgICAgIHJldHVybiBpbnB1dFZhbHVlO1xuXG4gICAgICAgIGNhc2UgJ1NFTEVDVEVEX1ZBTFVFUyc6XG4gICAgICAgICAgLy8gRm9yIFNFTEVDVEVEX1ZBTFVFUywgcmV0dXJuIHRoZSBzZWxlY3RlZFZhbHVlcyBhcnJheSAoY2FsbGVyIGRlY2lkZXMgU0lOR0xFL0FSUkFZIGJlaGF2aW9yKVxuICAgICAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KHNlbGVjdGVkVmFsdWVzKSA/IHNlbGVjdGVkVmFsdWVzIDogW107XG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBjb25zb2xlLndhcm4oYFVuc3VwcG9ydGVkIHZhbHVlU291cmNlIGZvciBwYXJhbXM6ICR7dmFsdWVTb3VyY2V9YCk7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gVXNhZ2U6IGJ1aWxkIHBhcmFtcyAoYXNzdW1pbmcgYHBhcmFtc2AgaXMgYW4gSHR0cFBhcmFtcyBpbnN0YW5jZSlcbiAgICBpZiAoYXBpQ29uZmlnLnBhcmFtcykge1xuICAgICAgYXBpQ29uZmlnLnBhcmFtcy5mb3JFYWNoKChwYXJhbTogYW55KSA9PiB7XG4gICAgICAgIGlmICghcGFyYW0ua2V5TmFtZSkgcmV0dXJuO1xuXG4gICAgICAgIC8vIFJlc29sdmUgcmF3IHZhbHVlIGJhc2VkIG9uIHNvdXJjZVxuICAgICAgICBjb25zdCByYXdWYWx1ZSA9IHJlc29sdmVWYWx1ZUZyb21Tb3VyY2UoXG4gICAgICAgICAgcGFyYW0udmFsdWVTb3VyY2UsXG4gICAgICAgICAgcGFyYW0uaW5wdXRWYWx1ZSxcbiAgICAgICAgICBzZWxlY3RlZFZhbHVlc1xuICAgICAgICApO1xuXG4gICAgICAgIC8vIElmIHBhcmFtIGV4cGVjdHMgc2VsZWN0ZWQgdmFsdWVzLCBoYW5kbGUgU0lOR0xFX1ZBTFVFIHZzIEFSUkFZX09GX1ZBTFVFU1xuICAgICAgICBpZiAocGFyYW0udmFsdWVTb3VyY2UgPT09ICdTRUxFQ1RFRF9WQUxVRVMnKSB7XG4gICAgICAgICAgLy8gT25seSBhZGQgaWYgdGhlcmUgYXJlIGFjdHVhbCBzZWxlY3RlZCB2YWx1ZXNcbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShyYXdWYWx1ZSkgJiYgcmF3VmFsdWUubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgaWYgKHBhcmFtLmlucHV0VmFsdWUgPT09ICdTSU5HTEVfVkFMVUUnKSB7XG4gICAgICAgICAgICAgIC8vIHNldCB0byBmaXJzdCBzZWxlY3RlZCB2YWx1ZVxuICAgICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KHBhcmFtLmtleU5hbWUsIHJhd1ZhbHVlWzBdKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocGFyYW0uaW5wdXRWYWx1ZSA9PT0gJ0FSUkFZX09GX1ZBTFVFUycpIHtcbiAgICAgICAgICAgICAgLy8gYXBwZW5kIGVhY2ggc2VsZWN0ZWQgdmFsdWUgYXMgcmVwZWF0ZWQgcGFyYW1cbiAgICAgICAgICAgICAgcmF3VmFsdWUuZm9yRWFjaCgodmFsOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKHBhcmFtLmtleU5hbWUsIHZhbCk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgLy8gaWYgaW5wdXRWYWx1ZSBub3QgcHJvdmlkZWQsIGRlZmF1bHQgdG8gYXJyYXkgYmVoYXZpb3JcbiAgICAgICAgICAgICAgcmF3VmFsdWUuZm9yRWFjaCgodmFsOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKHBhcmFtLmtleU5hbWUsIHZhbCk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBpZiBubyBzZWxlY3RlZCB2YWx1ZXMsIHNraXAgYWRkaW5nIHRoaXMgcGFyYW1cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBGb3Igbm9uLXNlbGVjdGVkIHZhbHVlU291cmNlczogcmF3VmFsdWUgY291bGQgYmUgbnVsbC91bmRlZmluZWQvc3RyaW5nL2FycmF5XG4gICAgICAgIGlmIChyYXdWYWx1ZSA9PT0gbnVsbCB8fCByYXdWYWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgLy8gc2tpcCBhZGRpbmcgcGFyYW0gd2hlbiB2YWx1ZSBub3QgZm91bmRcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBJZiBpbnB1dFZhbHVlIGluZGljYXRlcyBhcnJheS1vZi12YWx1ZXMgKGUuZy4sIHBhcmFtLmlucHV0VmFsdWUgPT09ICdBUlJBWV9PRl9WQUxVRVMnKSxcbiAgICAgICAgLy8gYWNjZXB0IGVpdGhlciBhbiBhcnJheSBvciBhIGNvbW1hLXNlcGFyYXRlZCBzdHJpbmdcbiAgICAgICAgaWYgKHBhcmFtLmlucHV0VmFsdWUgPT09ICdBUlJBWV9PRl9WQUxVRVMnKSB7XG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocmF3VmFsdWUpKSB7XG4gICAgICAgICAgICByYXdWYWx1ZS5mb3JFYWNoKCh2YWw6IGFueSkgPT4ge1xuICAgICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKHBhcmFtLmtleU5hbWUsIHZhbCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiByYXdWYWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIC8vIHN1cHBvcnQgY29tbWEgc2VwYXJhdGVkIHN0cmluZ1xuICAgICAgICAgICAgcmF3VmFsdWVcbiAgICAgICAgICAgICAgLnNwbGl0KCcsJylcbiAgICAgICAgICAgICAgLm1hcCgocykgPT4gcy50cmltKCkpXG4gICAgICAgICAgICAgIC5maWx0ZXIoQm9vbGVhbilcbiAgICAgICAgICAgICAgLmZvckVhY2goKHZhbDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZChwYXJhbS5rZXlOYW1lLCB2YWwpO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gZmFsbGJhY2s6IGNvbnZlcnQgdG8gc3RyaW5nIGFuZCBhcHBlbmRcbiAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQocGFyYW0ua2V5TmFtZSwgU3RyaW5nKHJhd1ZhbHVlKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIGRlZmF1bHQ6IHNldCBzaW5nbGUgdmFsdWVcbiAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KHBhcmFtLmtleU5hbWUsIFN0cmluZyhyYXdWYWx1ZSkpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFBBVEggVkFSSUFCTEVTIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBsZXQgdXJsID0gYXBpQ29uZmlnLnVybDtcbiAgICBpZiAoYXBpQ29uZmlnLnBhdGhWYXJpYWJsZXMpIHtcbiAgICAgIGFwaUNvbmZpZy5wYXRoVmFyaWFibGVzLmZvckVhY2goKHBhdGhWYXI6IGFueSkgPT4ge1xuICAgICAgICBpZiAocGF0aFZhci5rZXlOYW1lKSB7XG4gICAgICAgICAgbGV0IHZhbHVlVG9CaW5kOiBhbnkgPSBudWxsO1xuXG4gICAgICAgICAgc3dpdGNoIChwYXRoVmFyLnZhbHVlU291cmNlKSB7XG4gICAgICAgICAgICBjYXNlICdMT0NBTF9TVE9SQUdFJzpcbiAgICAgICAgICAgICAgdmFsdWVUb0JpbmQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShwYXRoVmFyLmlucHV0VmFsdWUpO1xuICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnU0VTU0lPTl9TVE9SQUdFJzpcbiAgICAgICAgICAgICAgdmFsdWVUb0JpbmQgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKHBhdGhWYXIuaW5wdXRWYWx1ZSk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdDVVNUT01fSU5QVVQnOlxuICAgICAgICAgICAgY2FzZSAnUVVFU1RJT04nOlxuICAgICAgICAgICAgICB2YWx1ZVRvQmluZCA9IHBhdGhWYXIuaW5wdXRWYWx1ZTtcbiAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgIGNvbnNvbGUud2FybihgVW5zdXBwb3J0ZWQgdmFsdWVTb3VyY2U6ICR7cGF0aFZhci52YWx1ZVNvdXJjZX1gKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAodmFsdWVUb0JpbmQgIT09IG51bGwgJiYgdmFsdWVUb0JpbmQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdXJsID0gdXJsLnJlcGxhY2UoYHske3BhdGhWYXIua2V5TmFtZX19YCwgdmFsdWVUb0JpbmQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBGSU5BTCBDQUxMIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnk+KHVybCwgeyBoZWFkZXJzLCBwYXJhbXMgfSk7XG4gIH1cblxuICBzdWJtaXRGb3JtKFxuICAgIG1vZHVsZU5hbWU6IHN0cmluZyxcbiAgICBmb3JtRGF0YTogRm9ybURhdGEsXG4gICAgcmVDQVBUQ0hBVG9rZW4/OiBzdHJpbmdcbiAgKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAvLyBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHtcbiAgICAvLyAgICdBdXRoLXVzZXInOiB0aGlzLmhlYWRlci5hdXRoVXNlcixcbiAgICAvLyB9KTtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHRoaXMuZ2V0U2FmZUhlYWRlcnMoKSk7XG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5hcGlVcmx9L2FwaS9wdWJsaWMvZm9ybXMvJHttb2R1bGVOYW1lfS9zdWJtaXNzaW9uc2A7XG4gICAgaWYgKHJlQ0FQVENIQVRva2VuKSB7XG4gICAgICBmb3JtRGF0YS5hcHBlbmQoJ3JlY2FwdGNoYVRva2VuJywgcmVDQVBUQ0hBVG9rZW4pO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodXJsLCBmb3JtRGF0YSwge1xuICAgICAgaGVhZGVycyxcbiAgICAgIG9ic2VydmU6ICdldmVudHMnLFxuICAgICAgcmVwb3J0UHJvZ3Jlc3M6IHRydWUsXG4gICAgfSk7XG4gIH1cblxuICBnZXRTdWJtaXR0ZWRGb3JtKFxuICAgIG1vZHVsZU5hbWU6IHN0cmluZyxcbiAgICBzdWJtaXNzaW9uSWQ6IHN0cmluZyxcbiAgICBwYWdlTnVtYmVyOiBudW1iZXIgPSAxLFxuICAgIHJvd1NldDogbnVtYmVyID0gMCxcbiAgICBuYXZpZ2F0ZVRvPzogc3RyaW5nXG4gICk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKClcbiAgICAgIC5zZXQoJ3BhZ2VOdW1iZXInLCBwYWdlTnVtYmVyLnRvU3RyaW5nKCkpXG4gICAgICAuc2V0KCdyb3dTZXQnLCByb3dTZXQudG9TdHJpbmcoKSk7XG4gICAgaWYgKG5hdmlnYXRlVG8pIHtcbiAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ25hdmlnYXRlSWQnLCBuYXZpZ2F0ZVRvKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5wYXJlbnRRdWVzdGlvbnMpIHtcbiAgICAgIHRoaXMucGFyZW50UXVlc3Rpb25zLmZvckVhY2goKHE6IGFueSkgPT4ge1xuICAgICAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKCdwYXJlbnRRdWVzdGlvbnMnLCBxKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICAvLyBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHtcbiAgICAvLyAgICdBY2NlcHQtTGFuZ3VhZ2UnOiB0aGlzLmhlYWRlci5hY2NlcHRlZExhbmd1YWdlLFxuICAgIC8vIH0pO1xuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnModGhpcy5nZXRTYWZlSGVhZGVycygpKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnk+KFxuICAgICAgYCR7dGhpcy5hcGlVcmx9L2FwaS9mb3Jtcy8ke21vZHVsZU5hbWV9L3N1Ym1pc3Npb25zLyR7c3VibWlzc2lvbklkfWAsXG4gICAgICB7IGhlYWRlcnMsIHBhcmFtcyB9XG4gICAgKTtcbiAgfVxuXG4gIHVwZGF0ZUZvcm0oXG4gICAgbW9kdWxlTmFtZTogc3RyaW5nLFxuICAgIHN1Ym1pc3Npb25JZDogc3RyaW5nLFxuICAgIGZvcm1EYXRhOiBGb3JtRGF0YSxcbiAgICByZUNBUFRDSEFUb2tlbj86IHN0cmluZ1xuICApOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIC8vIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoe1xuICAgIC8vICAgJ0F1dGgtdXNlcic6IHRoaXMuaGVhZGVyLmF1dGhVc2VyLFxuICAgIC8vIH0pO1xuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnModGhpcy5nZXRTYWZlSGVhZGVycygpKTtcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmFwaVVybH0vYXBpL3B1YmxpYy9mb3Jtcy8ke21vZHVsZU5hbWV9L3N1Ym1pc3Npb25zLyR7c3VibWlzc2lvbklkfWA7XG4gICAgaWYgKHJlQ0FQVENIQVRva2VuKSB7XG4gICAgICBmb3JtRGF0YS5hcHBlbmQoJ3JlY2FwdGNoYVRva2VuJywgcmVDQVBUQ0hBVG9rZW4pO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dDxhbnk+KHVybCwgZm9ybURhdGEsIHtcbiAgICAgIGhlYWRlcnMsXG4gICAgICBvYnNlcnZlOiAnZXZlbnRzJyxcbiAgICAgIHJlcG9ydFByb2dyZXNzOiB0cnVlLFxuICAgIH0sKTtcbiAgfVxuXG4gIHByZXZpZXdGaWxlKHVybDogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAvLyBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHtcbiAgICAvLyAgICdBY2NlcHQtTGFuZ3VhZ2UnOiB0aGlzLmhlYWRlci5hY2NlcHRlZExhbmd1YWdlLFxuICAgIC8vICAgJ0NvbnRlbnQtVHlwZSc6IHRoaXMuaGVhZGVyLmNvbnRlbnRUeXBlLFxuICAgIC8vICAgJ2F1dGgtdXNlcic6IHRoaXMuaGVhZGVyLmF1dGhVc2VyLFxuICAgIC8vICAgJ0F1dGhvcml6YXRpb24nOiBgQmVhcmVyICR7dGhpcy5oZWFkZXIuYXV0aG9yaXphdGlvbn1gLFxuICAgIC8vIH0pO1xuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnModGhpcy5nZXRTYWZlSGVhZGVycygpKTtcbiAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgaGVhZGVyczogaGVhZGVycyxcbiAgICB9O1xuICAgIGNvbnN0IGZpbGVVcmwgPSB1cmw7XG4gICAgY29uc3QgZW5jb2RlZEZpbGVVcmwgPSBlbmNvZGVVUklDb21wb25lbnQoZmlsZVVybCk7XG4gICAgY29uc3QgZnVsbFVybCA9IGA/dXJsPSR7ZW5jb2RlZEZpbGVVcmx9YDtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnk+KFxuICAgICAgdGhpcy5hcGlVcmwgKyBgL2FwaS9jZG4vcHJldmlldyR7ZnVsbFVybH1gLFxuICAgICAgb3B0aW9uc1xuICAgICk7XG4gIH1cblxuICBnZXRTdWJmb3JtU3VibWlzc2lvbnMoc3ViRm9ybURhdGE6IGFueSkge1xuICAgIGlmIChcbiAgICAgICFzdWJGb3JtRGF0YT8ubW9kdWxlTmFtZSB8fFxuICAgICAgIXN1YkZvcm1EYXRhPy5kdXBsaWNhdGVTdWJtaXNzaW9uPy5zb3VyY2VTdWJtaXNzaW9uSWRzXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh0aGlzLmdldFNhZmVIZWFkZXJzKCkpO1xuXG4gICAgLy8gRXh0cmFjdCBkYXRhXG4gICAgY29uc3QgbW9kdWxlTmFtZSA9IHN1YkZvcm1EYXRhLm1vZHVsZU5hbWU7XG4gICAgY29uc3Qgc3VibWlzc2lvbklkczogc3RyaW5nW10gPVxuICAgICAgc3ViRm9ybURhdGEuZHVwbGljYXRlU3VibWlzc2lvbi5zb3VyY2VTdWJtaXNzaW9uSWRzO1xuXG4gICAgLy8gQnVpbGQgcXVlcnkgc3RyaW5nXG4gICAgY29uc3QgcXVlcnlQYXJhbXMgPSBzdWJtaXNzaW9uSWRzXG4gICAgICAubWFwKChpZCkgPT4gYHN1Ym1pc3Npb25JZHM9JHtlbmNvZGVVUklDb21wb25lbnQoaWQpfWApXG4gICAgICAuam9pbignJicpO1xuXG4gICAgLy8gRmluYWwgVVJMXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5hcGlVcmx9L2FwaS9wdWJsaWMvJHttb2R1bGVOYW1lfS9zdWJmb3JtLXN1Ym1pc3Npb25zPyR7cXVlcnlQYXJhbXN9YDtcblxuICAgIC8vIE5vdyBtYWtlIEFQSSBjYWxsXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodXJsLCB7XG4gICAgICBoZWFkZXJzXG4gICAgfSk7XG5cbiAgfVxuXG4gIGdldFNhZmVIZWFkZXJzKCk6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0ge1xuICAgIGNvbnN0IHNhZmU6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7fTtcbiAgICBpZiAodGhpcy5oZWFkZXIgJiYgdHlwZW9mIHRoaXMuaGVhZGVyID09PSAnb2JqZWN0Jykge1xuICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXModGhpcy5oZWFkZXIpKSB7XG4gICAgICAgIGNvbnN0IHZhbCA9IHRoaXMuaGVhZGVyW2tleV07XG4gICAgICAgIGlmICh2YWwgIT09IHVuZGVmaW5lZCAmJiB2YWwgIT09IG51bGwpIHtcbiAgICAgICAgICBsZXQgaGVhZGVyS2V5ID0ga2V5O1xuICAgICAgICAgIGlmIChrZXkgPT09ICdhdXRoVXNlcicpIHtcbiAgICAgICAgICAgIGhlYWRlcktleSA9ICdhdXRoLXVzZXInO1xuICAgICAgICAgIH1cbiAgICAgICAgICBzYWZlW2hlYWRlcktleV0gPSBTdHJpbmcodmFsKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gc2FmZTtcbiAgfVxufVxuIl19
|
|
@@ -1534,7 +1534,6 @@ class FormService {
|
|
|
1534
1534
|
}
|
|
1535
1535
|
}
|
|
1536
1536
|
}
|
|
1537
|
-
console.log('[FormService] getSafeHeaders, input header:', this.header, 'output safe:', safe);
|
|
1538
1537
|
return safe;
|
|
1539
1538
|
}
|
|
1540
1539
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormService, deps: [{ token: i1.HttpClient }, { token: DataService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
@@ -8683,8 +8682,12 @@ class SubFormComponent {
|
|
|
8683
8682
|
this.formService.getSubformSubmissions(this.subformData)?.subscribe({
|
|
8684
8683
|
next: (response) => {
|
|
8685
8684
|
this.previousSubmissions = response;
|
|
8686
|
-
|
|
8687
|
-
|
|
8685
|
+
const targetSubForms = this.subformData?.duplicateSubmission?.targetSubForm ?? [];
|
|
8686
|
+
if (Array.isArray(targetSubForms) &&
|
|
8687
|
+
targetSubForms.includes(this.subForm.title)) {
|
|
8688
|
+
// ✅ Filter submissions belonging to this subform
|
|
8689
|
+
const filteredSubmissions = this.previousSubmissions.filter((submission) => submission.title === this.subForm.title);
|
|
8690
|
+
const loadedSubmissions = this.createSubmissionsFromApi(filteredSubmissions, this.subForm);
|
|
8688
8691
|
const existingSubmissions = this.subForm.submissions ?? [];
|
|
8689
8692
|
this.subForm = {
|
|
8690
8693
|
...this.subForm,
|
|
@@ -8698,7 +8701,7 @@ class SubFormComponent {
|
|
|
8698
8701
|
this.subForm.scores = this.scoreCalcService.calculateFinalScore(this.subForm.submissions, this.maxPossibleGoodScore, this.maxPossibleBadScore);
|
|
8699
8702
|
}
|
|
8700
8703
|
else {
|
|
8701
|
-
this.subForm.scores = null;
|
|
8704
|
+
this.subForm.scores = null;
|
|
8702
8705
|
}
|
|
8703
8706
|
}
|
|
8704
8707
|
},
|