@wemake4u/form-player-se 1.0.18 → 1.0.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/controls/checklist.mjs +4 -1
- package/esm2022/lib/controls/chipchecklist.mjs +4 -1
- package/esm2022/lib/controls/chipradio.mjs +4 -1
- package/esm2022/lib/controls/control.mjs +6 -27
- package/esm2022/lib/controls/radio.mjs +4 -1
- package/esm2022/lib/controls/select.mjs +4 -1
- package/esm2022/lib/controls/table.mjs +4 -1
- package/esm2022/lib/controls/taglist.mjs +4 -1
- package/esm2022/lib/dialog/dialog.component.mjs +11 -4
- package/esm2022/lib/directives/accordion.directive.mjs +2 -13
- package/esm2022/lib/directives/dropdown.directive.mjs +7 -7
- package/esm2022/lib/directives/grid.directive.mjs +7 -7
- package/esm2022/lib/directives/refresh.directive.mjs +25 -0
- package/esm2022/lib/dynamic-fields/dynamic-fields.component.mjs +46 -19
- package/esm2022/lib/dynamic-form/dynamic-form.component.mjs +72 -48
- package/esm2022/lib/services/dialog.service.mjs +2 -6
- package/esm2022/lib/services/function.service.mjs +9 -6
- package/esm2022/lib/services/grid.service.mjs +61 -5
- package/esm2022/lib/services/programmability.service.mjs +6 -1
- package/esm2022/lib/services/register.service.mjs +60 -19
- package/esm2022/lib/services/weak.service.mjs +1 -11
- package/esm2022/lib/utils/gridCells.mjs +14 -14
- package/esm2022/lib/utils/patchForm.mjs +32 -13
- package/fesm2022/wemake4u-form-player-se.mjs +402 -224
- package/fesm2022/wemake4u-form-player-se.mjs.map +1 -1
- package/lib/controls/checklist.d.ts +1 -0
- package/lib/controls/chipchecklist.d.ts +1 -0
- package/lib/controls/chipradio.d.ts +1 -0
- package/lib/controls/control.d.ts +1 -4
- package/lib/controls/radio.d.ts +1 -0
- package/lib/controls/select.d.ts +1 -0
- package/lib/controls/table.d.ts +1 -0
- package/lib/controls/taglist.d.ts +1 -0
- package/lib/dialog/dialog.component.d.ts +2 -0
- package/lib/directives/refresh.directive.d.ts +10 -0
- package/lib/dynamic-fields/dynamic-fields.component.d.ts +9 -4
- package/lib/dynamic-form/dynamic-form.component.d.ts +11 -5
- package/lib/services/dialog.service.d.ts +3 -1
- package/lib/services/function.service.d.ts +3 -1
- package/lib/services/grid.service.d.ts +3 -0
- package/lib/services/programmability.service.d.ts +1 -0
- package/lib/services/register.service.d.ts +5 -3
- package/lib/utils/patchForm.d.ts +1 -0
- package/package.json +1 -1
|
@@ -67,11 +67,7 @@ export class DialogService {
|
|
|
67
67
|
options
|
|
68
68
|
};
|
|
69
69
|
this.dialogService
|
|
70
|
-
.openDialog(DialogComponent, data)
|
|
71
|
-
.afterClosed()
|
|
72
|
-
.subscribe(data => {
|
|
73
|
-
console.log(data);
|
|
74
|
-
});
|
|
70
|
+
.openDialog(DialogComponent, data);
|
|
75
71
|
}
|
|
76
72
|
createTextSchema(text) {
|
|
77
73
|
return {
|
|
@@ -104,4 +100,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
104
100
|
providedIn: 'root'
|
|
105
101
|
}]
|
|
106
102
|
}], ctorParameters: () => [{ type: i1.SirioDialogService }] });
|
|
107
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
103
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2lyaW8vc3JjL2xpYi9zZXJ2aWNlcy9kaWFsb2cuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBR3JELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7OztBQUs3RCxNQUFNLE9BQU8sYUFBYTtJQUdkO0lBRFYsWUFDVSxhQUFpQztRQUFqQyxrQkFBYSxHQUFiLGFBQWEsQ0FBb0I7SUFFekMsQ0FBQztJQUVILFVBQVUsQ0FBQyxVQUFlLEVBQUUsT0FBMkI7UUFDckQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELEtBQUssQ0FBQyxJQUFZLEVBQUUsT0FBdUI7UUFDekMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9DLE1BQU0sV0FBVyxHQUF1QjtZQUN0QyxHQUFHLE9BQU87WUFDVixJQUFJLEVBQUUsU0FBUztZQUNmLE9BQU8sRUFBRSxJQUFJO1lBQ2IsUUFBUSxFQUFFLEtBQUs7WUFDZixPQUFPLEVBQUUsS0FBSztZQUNkLGFBQWEsRUFBRSxLQUFLO1lBQ3BCLFlBQVksRUFBRSxLQUFLO1lBQ25CLGFBQWEsRUFBRSxLQUFLO1NBQ3JCLENBQUM7UUFDRixJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQsSUFBSSxDQUFDLElBQVksRUFBRSxPQUF1QjtRQUN4QyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0MsTUFBTSxXQUFXLEdBQXNCO1lBQ3JDLEdBQUcsT0FBTztZQUNWLElBQUksRUFBRSxNQUFNO1lBQ1osT0FBTyxFQUFFLElBQUk7WUFDYixRQUFRLEVBQUUsS0FBSztZQUNmLE9BQU8sRUFBRSxLQUFLO1lBQ2QsYUFBYSxFQUFFLEtBQUs7WUFDcEIsWUFBWSxFQUFFLEtBQUs7WUFDbkIsYUFBYSxFQUFFLEtBQUs7U0FDckIsQ0FBQztRQUNGLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRCxPQUFPLENBQUMsSUFBWSxFQUFFLE9BQXVCO1FBQzNDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMvQyxNQUFNLFdBQVcsR0FBc0I7WUFDckMsR0FBRyxPQUFPO1lBQ1YsSUFBSSxFQUFFLE1BQU07WUFDWixPQUFPLEVBQUUsT0FBTztZQUNoQixRQUFRLEVBQUUsS0FBSztZQUNmLE9BQU8sRUFBRSxLQUFLO1lBQ2QsYUFBYSxFQUFFLEtBQUs7WUFDcEIsWUFBWSxFQUFFLEtBQUs7WUFDbkIsYUFBYSxFQUFFLEtBQUs7U0FDckIsQ0FBQztRQUNGLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRCxVQUFVO1FBQ1IsT0FBTyxhQUFhLENBQUMsSUFBSSxFQUFFO1lBQ3pCLFlBQVk7WUFDWixPQUFPO1lBQ1AsTUFBTTtZQUNOLFNBQVM7U0FDVixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sVUFBVSxDQUFDLFVBQWUsRUFBRSxPQUEyQjtRQUU3RCxNQUFNLElBQUksR0FBRztZQUNYLFVBQVU7WUFDVixPQUFPO1NBQ1IsQ0FBQztRQUVGLElBQUksQ0FBQyxhQUFhO2FBQ2YsVUFBVSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRU8sZ0JBQWdCLENBQUMsSUFBWTtRQUNuQyxPQUFPO1lBQ0wsT0FBTyxFQUFFO2dCQUNQO29CQUNFLFlBQVksRUFBRTt3QkFDWjs0QkFDRSxNQUFNLEVBQUUsSUFBSTs0QkFDWixNQUFNLEVBQUUsTUFBTTs0QkFDZCxRQUFRLEVBQUU7Z0NBQ1IsS0FBSyxFQUFFLGFBQWE7Z0NBQ3BCLFNBQVMsRUFBRSxJQUFJOzZCQUNoQjs0QkFDRCxJQUFJLEVBQUUsZUFBZTt5QkFDdEI7cUJBQ0Y7b0JBQ0QsTUFBTSxFQUFFLFNBQVM7b0JBQ2pCLElBQUksRUFBRSxjQUFjO29CQUNwQixlQUFlLEVBQUUsRUFBRTtpQkFDcEI7YUFDRjtTQUNGLENBQUE7SUFDSCxDQUFDO3dHQWpHVSxhQUFhOzRHQUFiLGFBQWEsY0FGWixNQUFNOzs0RkFFUCxhQUFhO2tCQUh6QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFNpcmlvRGlhbG9nU2VydmljZSwgRGlhbG9nVHlwZXMsIERpYWxvZ1NpemVzIH0gZnJvbSAnbmd4LXNpcmlvLWxpYic7XHJcbmltcG9ydCB7IElFdmFsdWF0b3JQcm92aWRlciB9IGZyb20gJy4uL3NlcnZpY2VzL3Byb2dyYW1tYWJpbGl0eS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVG9Cb3VuZEFycm93cyB9IGZyb20gJy4uL3V0aWxzL2Z1bmN0aW9ucyc7XHJcbmltcG9ydCB7IERpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uL2RpYWxvZy9kaWFsb2cuY29tcG9uZW50JztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIERpYWxvZ1NlcnZpY2UgaW1wbGVtZW50cyBJRXZhbHVhdG9yUHJvdmlkZXIge1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgZGlhbG9nU2VydmljZTogU2lyaW9EaWFsb2dTZXJ2aWNlXHJcbiAgICApXHJcbiAgeyB9XHJcblxyXG4gIG9wZW5EaWFsb2coZm9ybVNjaGVtYTogYW55LCBvcHRpb25zPzogRm9ybURpYWxvZ09wdGlvbnMpIHtcclxuICAgIHRoaXMuc2hvd0RpYWxvZyhmb3JtU2NoZW1hLCBvcHRpb25zKTtcclxuICB9XHJcblxyXG4gIGFsZXJ0KHRleHQ6IHN0cmluZywgb3B0aW9ucz86IERpYWxvZ09wdGlvbnMpIHtcclxuICAgIGNvbnN0IGZvcm1TY2hlbWEgPSB0aGlzLmNyZWF0ZVRleHRTY2hlbWEodGV4dCk7XHJcbiAgICBjb25zdCBmb3JtT3B0aW9ucyA6IEZvcm1EaWFsb2dPcHRpb25zID0ge1xyXG4gICAgICAuLi5vcHRpb25zLFxyXG4gICAgICB0eXBlOiBcIndhcm5pbmdcIixcclxuICAgICAgYnV0dG9uczogJ09LJyxcclxuICAgICAgaXNEcmF3ZXI6IGZhbHNlLFxyXG4gICAgICBzaG93TmF2OiBmYWxzZSxcclxuICAgICAgc2hvd05hdkJ1dHRvbjogZmFsc2UsXHJcbiAgICAgIHNob3dQcm9ncmVzczogZmFsc2UsXHJcbiAgICAgIHNob3dGb3JtVGl0bGU6IGZhbHNlXHJcbiAgICB9O1xyXG4gICAgdGhpcy5zaG93RGlhbG9nKGZvcm1TY2hlbWEsIGZvcm1PcHRpb25zKTtcclxuICB9XHJcblxyXG4gIGluZm8odGV4dDogc3RyaW5nLCBvcHRpb25zPzogRGlhbG9nT3B0aW9ucykge1xyXG4gICAgY29uc3QgZm9ybVNjaGVtYSA9IHRoaXMuY3JlYXRlVGV4dFNjaGVtYSh0ZXh0KTtcclxuICAgIGNvbnN0IGZvcm1PcHRpb25zOiBGb3JtRGlhbG9nT3B0aW9ucyA9IHtcclxuICAgICAgLi4ub3B0aW9ucyxcclxuICAgICAgdHlwZTogXCJpbmZvXCIsXHJcbiAgICAgIGJ1dHRvbnM6ICdPSycsXHJcbiAgICAgIGlzRHJhd2VyOiBmYWxzZSxcclxuICAgICAgc2hvd05hdjogZmFsc2UsXHJcbiAgICAgIHNob3dOYXZCdXR0b246IGZhbHNlLFxyXG4gICAgICBzaG93UHJvZ3Jlc3M6IGZhbHNlLFxyXG4gICAgICBzaG93Rm9ybVRpdGxlOiBmYWxzZVxyXG4gICAgfTtcclxuICAgIHRoaXMuc2hvd0RpYWxvZyhmb3JtU2NoZW1hLCBmb3JtT3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICBjb25maXJtKHRleHQ6IHN0cmluZywgb3B0aW9ucz86IERpYWxvZ09wdGlvbnMpIHtcclxuICAgIGNvbnN0IGZvcm1TY2hlbWEgPSB0aGlzLmNyZWF0ZVRleHRTY2hlbWEodGV4dCk7XHJcbiAgICBjb25zdCBmb3JtT3B0aW9uczogRm9ybURpYWxvZ09wdGlvbnMgPSB7XHJcbiAgICAgIC4uLm9wdGlvbnMsXHJcbiAgICAgIHR5cGU6IFwiaW5mb1wiLFxyXG4gICAgICBidXR0b25zOiAnWWVzTm8nLFxyXG4gICAgICBpc0RyYXdlcjogZmFsc2UsXHJcbiAgICAgIHNob3dOYXY6IGZhbHNlLFxyXG4gICAgICBzaG93TmF2QnV0dG9uOiBmYWxzZSxcclxuICAgICAgc2hvd1Byb2dyZXNzOiBmYWxzZSxcclxuICAgICAgc2hvd0Zvcm1UaXRsZTogZmFsc2VcclxuICAgIH07ICAgIFxyXG4gICAgdGhpcy5zaG93RGlhbG9nKGZvcm1TY2hlbWEsIGZvcm1PcHRpb25zKTtcclxuICB9XHJcblxyXG4gIGdldENvbnRleHQoKTogUmVjb3JkPHN0cmluZywgYW55PiB7XHJcbiAgICByZXR1cm4gVG9Cb3VuZEFycm93cyh0aGlzLCBbXHJcbiAgICAgICdvcGVuRGlhbG9nJyxcclxuICAgICAgJ2FsZXJ0JyxcclxuICAgICAgJ2luZm8nLFxyXG4gICAgICAnY29uZmlybSdcclxuICAgIF0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzaG93RGlhbG9nKGZvcm1TY2hlbWE6IGFueSwgb3B0aW9ucz86IEZvcm1EaWFsb2dPcHRpb25zKSB7XHJcbiAgICBcclxuICAgIGNvbnN0IGRhdGEgPSB7XHJcbiAgICAgIGZvcm1TY2hlbWEsXHJcbiAgICAgIG9wdGlvbnNcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5kaWFsb2dTZXJ2aWNlXHJcbiAgICAgIC5vcGVuRGlhbG9nKERpYWxvZ0NvbXBvbmVudCwgZGF0YSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNyZWF0ZVRleHRTY2hlbWEodGV4dDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBcImZvcm1zXCI6IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICBcImNvbXBvbmVudHNcIjogW1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgXCJ0ZXh0XCI6IHRleHQsXHJcbiAgICAgICAgICAgICAgXCJ0eXBlXCI6IFwidGV4dFwiLFxyXG4gICAgICAgICAgICAgIFwibGF5b3V0XCI6IHtcclxuICAgICAgICAgICAgICAgIFwicm93XCI6IFwiUm93XzE0ejlteW9cIixcclxuICAgICAgICAgICAgICAgIFwiY29sdW1uc1wiOiBudWxsXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICBcImlkXCI6IFwiRmllbGRfMXhpYnAyclwiXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIF0sXHJcbiAgICAgICAgICBcInR5cGVcIjogXCJkZWZhdWx0XCIsXHJcbiAgICAgICAgICBcImlkXCI6IFwiRm9ybV8wbG90bTJoXCIsXHJcbiAgICAgICAgICBcInNjaGVtYVZlcnNpb25cIjogMThcclxuICAgICAgICB9XHJcbiAgICAgIF1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRGlhbG9nT3B0aW9ucyB7XHJcbiAgdHlwZT86IERpYWxvZ1R5cGVzO1xyXG4gIHNpemU/OiBEaWFsb2dTaXplcztcclxuICB0aXRsZT86IHN0cmluZztcclxuICBpc0RyYXdlcj86IGJvb2xlYW47ICBcclxuICBjbG9zZUJ1dHRvbj86IGJvb2xlYW47XHJcbiAgbGFuZ3VhZ2U/OiBzdHJpbmc7XHJcbiAgYnV0dG9ucz86IERpYWxvZ0J1dHRvbnM7ICBcclxuICBvblJlc3VsdD86IChyZXN1bHQ6IERpYWxvZ1Jlc3VsdCkgPT4gdm9pZDtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBGb3JtRGlhbG9nT3B0aW9ucyBleHRlbmRzIERpYWxvZ09wdGlvbnMge1xyXG4gIHZhbHVlPzogYW55O1xyXG4gIGluamVjdG9yPzogSW5qZWN0b3I7XHJcbiAgc2hvd05hdj86IGJvb2xlYW47XHJcbiAgc2hvd05hdkJ1dHRvbj86IGJvb2xlYW47XHJcbiAgc2hvd1Byb2dyZXNzPzogYm9vbGVhbjtcclxuICBzaG93Rm9ybVRpdGxlPzogYm9vbGVhbjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBEaWFsb2dSZXN1bHQge1xyXG4gIGFjdGlvbjogRGlhbG9nQWN0aW9uO1xyXG4gIHZhbHVlPzogYW55O1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBEaWFsb2dBY3Rpb24gPSAnT0snXHJcbiAgfCAnQ2FuY2VsJ1xyXG4gIHwgJ1llcydcclxuICB8ICdObydcclxuICB8ICdDb25maXJtJ1xyXG4gIHwgJ0Nsb3NlJ1xyXG4gIHwgJ0Fib3J0J1xyXG4gIHwgJ1JldHJ5J1xyXG4gIHwgJ0lnbm9yZSdcclxuICB8ICdUcnknXHJcbiAgfCAnQ29udGludWUnO1xyXG5cclxuZXhwb3J0IHR5cGUgRGlhbG9nQnV0dG9ucyA9ICdPSydcclxuICB8ICdPS0NhbmNlbCdcclxuICB8ICdDb25maXJtQ2FuY2VsJ1xyXG4gIHwgJ0Fib3J0UmV0cnlJZ25vcmUnXHJcbiAgfCAnWWVzTm9DYW5jZWwnXHJcbiAgfCAnWWVzTm8nXHJcbiAgfCAnUmV0cnlDYW5jZWwnXHJcbiAgfCAnQ2FuY2VsVHJ5Q29udGludWUnO1xyXG4iXX0=
|
|
@@ -6,9 +6,11 @@ import * as i2 from "../services/dialog.service";
|
|
|
6
6
|
export class FunctionService {
|
|
7
7
|
metadata;
|
|
8
8
|
dialog;
|
|
9
|
-
|
|
9
|
+
injector;
|
|
10
|
+
constructor(metadata, dialog, injector) {
|
|
10
11
|
this.metadata = metadata;
|
|
11
12
|
this.dialog = dialog;
|
|
13
|
+
this.injector = injector;
|
|
12
14
|
}
|
|
13
15
|
invokable(func) {
|
|
14
16
|
const className = Object.getPrototypeOf(func)?.constructor?.name;
|
|
@@ -22,11 +24,12 @@ export class FunctionService {
|
|
|
22
24
|
openForm(template, options) {
|
|
23
25
|
const formSchema = this.metadata.getTemplateByName(template);
|
|
24
26
|
if (formSchema) {
|
|
25
|
-
|
|
27
|
+
const formOptions = {
|
|
26
28
|
...options,
|
|
27
29
|
language: this.metadata.getLanguage(),
|
|
30
|
+
injector: this.injector
|
|
28
31
|
};
|
|
29
|
-
this.dialog.openDialog(formSchema,
|
|
32
|
+
this.dialog.openDialog(formSchema, formOptions);
|
|
30
33
|
}
|
|
31
34
|
}
|
|
32
35
|
getContext() {
|
|
@@ -35,10 +38,10 @@ export class FunctionService {
|
|
|
35
38
|
"invokable"
|
|
36
39
|
]);
|
|
37
40
|
}
|
|
38
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FunctionService, deps: [{ token: i1.MetadataService }, { token: i2.DialogService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
41
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FunctionService, deps: [{ token: i1.MetadataService }, { token: i2.DialogService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
39
42
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FunctionService });
|
|
40
43
|
}
|
|
41
44
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FunctionService, decorators: [{
|
|
42
45
|
type: Injectable
|
|
43
|
-
}], ctorParameters: () => [{ type: i1.MetadataService }, { type: i2.DialogService }] });
|
|
44
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
46
|
+
}], ctorParameters: () => [{ type: i1.MetadataService }, { type: i2.DialogService }, { type: i0.Injector }] });
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuY3Rpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zaXJpby9zcmMvbGliL3NlcnZpY2VzL2Z1bmN0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUdyRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7Ozs7QUFJbkQsTUFBTSxPQUFPLGVBQWU7SUFFTjtJQUNSO0lBQ0E7SUFGWixZQUFvQixRQUF5QixFQUNqQyxNQUFxQixFQUNyQixRQUFrQjtRQUZWLGFBQVEsR0FBUixRQUFRLENBQWlCO1FBQ2pDLFdBQU0sR0FBTixNQUFNLENBQWU7UUFDckIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtJQUFJLENBQUM7SUFFbkMsU0FBUyxDQUFDLElBQVM7UUFDakIsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRSxXQUFXLEVBQUUsSUFBSSxDQUFDO1FBQ2pFLElBQUksU0FBUyxLQUFLLGlCQUFpQixFQUFFLENBQUM7WUFDcEMsT0FBTyxDQUFDLEdBQUcsSUFBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdDLENBQUM7YUFDSSxDQUFDO1lBQ0osT0FBTyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDbkIsQ0FBQztJQUNILENBQUM7SUFFRCxRQUFRLENBQUMsUUFBZ0IsRUFBRSxPQUFzQjtRQUUvQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRTdELElBQUksVUFBVSxFQUFFLENBQUM7WUFDZixNQUFNLFdBQVcsR0FBc0I7Z0JBQ3JDLEdBQUcsT0FBTztnQkFDVixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUU7Z0JBQ3JDLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTthQUN4QixDQUFBO1lBRUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ2xELENBQUM7SUFDSCxDQUFDO0lBRUQsVUFBVTtRQUNSLE9BQU8sYUFBYSxDQUFDLElBQUksRUFBRTtZQUN6QixVQUFVO1lBQ1YsV0FBVztTQUNaLENBQUMsQ0FBQztJQUNMLENBQUM7d0dBcENVLGVBQWU7NEdBQWYsZUFBZTs7NEZBQWYsZUFBZTtrQkFEM0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1ldGFkYXRhU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL21ldGFkYXRhLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEaWFsb2dTZXJ2aWNlLCBEaWFsb2dPcHRpb25zLCBGb3JtRGlhbG9nT3B0aW9ucyB9IGZyb20gJy4uL3NlcnZpY2VzL2RpYWxvZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVG9Cb3VuZEFycm93cyB9IGZyb20gJy4uL3V0aWxzL2Z1bmN0aW9ucyc7XHJcbmltcG9ydCB7IElFdmFsdWF0b3JQcm92aWRlciB9IGZyb20gJy4uL3NlcnZpY2VzL3Byb2dyYW1tYWJpbGl0eS5zZXJ2aWNlJztcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIEZ1bmN0aW9uU2VydmljZSBpbXBsZW1lbnRzIElFdmFsdWF0b3JQcm92aWRlciB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbWV0YWRhdGE6IE1ldGFkYXRhU2VydmljZVxyXG4gICAgLCBwcml2YXRlIGRpYWxvZzogRGlhbG9nU2VydmljZVxyXG4gICAgLCBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcikgeyB9XHJcblxyXG4gIGludm9rYWJsZShmdW5jOiBhbnkpOiBGdW5jdGlvbiB7XHJcbiAgICBjb25zdCBjbGFzc05hbWUgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YoZnVuYyk/LmNvbnN0cnVjdG9yPy5uYW1lO1xyXG4gICAgaWYgKGNsYXNzTmFtZSA9PT0gJ0Z1bmN0aW9uV3JhcHBlcicpIHtcclxuICAgICAgcmV0dXJuICguLi5hcmdzOiBhbnkpID0+IGZ1bmMuaW52b2tlKGFyZ3MpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHJldHVybiAoKSA9PiB7IH07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvcGVuRm9ybSh0ZW1wbGF0ZTogc3RyaW5nLCBvcHRpb25zOiBEaWFsb2dPcHRpb25zKVxyXG4gIHtcclxuICAgIGNvbnN0IGZvcm1TY2hlbWEgPSB0aGlzLm1ldGFkYXRhLmdldFRlbXBsYXRlQnlOYW1lKHRlbXBsYXRlKTtcclxuXHJcbiAgICBpZiAoZm9ybVNjaGVtYSkge1xyXG4gICAgICBjb25zdCBmb3JtT3B0aW9uczogRm9ybURpYWxvZ09wdGlvbnMgPSB7XHJcbiAgICAgICAgLi4ub3B0aW9ucyxcclxuICAgICAgICBsYW5ndWFnZTogdGhpcy5tZXRhZGF0YS5nZXRMYW5ndWFnZSgpLFxyXG4gICAgICAgIGluamVjdG9yOiB0aGlzLmluamVjdG9yXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuZGlhbG9nLm9wZW5EaWFsb2coZm9ybVNjaGVtYSwgZm9ybU9wdGlvbnMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0Q29udGV4dCgpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcclxuICAgIHJldHVybiBUb0JvdW5kQXJyb3dzKHRoaXMsIFtcclxuICAgICAgXCJvcGVuRm9ybVwiLFxyXG4gICAgICBcImludm9rYWJsZVwiXHJcbiAgICBdKTtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Injectable } from '@angular/core';
|
|
2
|
-
import { PaginationModule, ClientSideRowModelModule, InfiniteRowModelModule, LocaleModule, CellStyleModule, TextFilterModule, NumberFilterModule, DateFilterModule, themeQuartz, iconSetAlpine, ClientSideRowModelApiModule, ColumnAutoSizeModule, ColumnApiModule } from 'ag-grid-community';
|
|
2
|
+
import { PaginationModule, ClientSideRowModelModule, InfiniteRowModelModule, LocaleModule, CellStyleModule, ValidationModule, RowSelectionModule, TextFilterModule, NumberFilterModule, DateFilterModule, themeQuartz, iconSetAlpine, ClientSideRowModelApiModule, ColumnAutoSizeModule, ColumnApiModule } from 'ag-grid-community';
|
|
3
3
|
import { ObjectURLRendererComponent, DeleteRowCellRenderer, ActionsCellRenderer } from '../utils/gridCells';
|
|
4
4
|
import { SetFilterComponent } from '../utils/setFilter';
|
|
5
5
|
import { getFocusables } from '../utils/focusable';
|
|
@@ -30,12 +30,15 @@ export class GridService {
|
|
|
30
30
|
NumberFilterModule,
|
|
31
31
|
DateFilterModule,
|
|
32
32
|
ColumnAutoSizeModule,
|
|
33
|
-
ColumnApiModule
|
|
33
|
+
ColumnApiModule,
|
|
34
|
+
RowSelectionModule,
|
|
35
|
+
ValidationModule
|
|
34
36
|
];
|
|
35
37
|
}
|
|
36
38
|
;
|
|
37
39
|
getGridOptions(component, formGroup, language) {
|
|
38
40
|
const columnDefs = this.getGridColumns(component, formGroup, language);
|
|
41
|
+
const selection = this.getRowSelection(component, formGroup);
|
|
39
42
|
const pagination = this.getGridPaginable(component);
|
|
40
43
|
const pageSize = this.getGridPageSize(component);
|
|
41
44
|
const texts = this.getGridTexts(language);
|
|
@@ -46,8 +49,12 @@ export class GridService {
|
|
|
46
49
|
headerClass: (component.floatingFilter === true)
|
|
47
50
|
? 'show-filter' : 'hide-filter'
|
|
48
51
|
},
|
|
52
|
+
selectionColumnDef: {
|
|
53
|
+
pinned: 'left'
|
|
54
|
+
},
|
|
49
55
|
dataTypeDefinitions: this.getDataTypeDefinitions(),
|
|
50
56
|
columnDefs: columnDefs,
|
|
57
|
+
rowSelection: selection,
|
|
51
58
|
pagination: pagination,
|
|
52
59
|
paginationPageSize: pageSize,
|
|
53
60
|
cacheBlockSize: pageSize,
|
|
@@ -55,11 +62,23 @@ export class GridService {
|
|
|
55
62
|
localeText: texts,
|
|
56
63
|
enableCellTextSelection: true,
|
|
57
64
|
theme: theme,
|
|
58
|
-
|
|
65
|
+
onGridSizeChanged: (params) => {
|
|
59
66
|
params.api.autoSizeColumns(["actions"]);
|
|
60
|
-
}
|
|
67
|
+
},
|
|
61
68
|
};
|
|
62
69
|
}
|
|
70
|
+
onGridSelectionChanged(component, formGroup, event) {
|
|
71
|
+
if (component.selectionChanged) {
|
|
72
|
+
return this.programmability.evaluate(formGroup, component.selectionChanged, {
|
|
73
|
+
cacheable: false,
|
|
74
|
+
extendContext: () => ({
|
|
75
|
+
"event": {
|
|
76
|
+
selectedRows: event.api.getSelectedRows()
|
|
77
|
+
}
|
|
78
|
+
})
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
}
|
|
63
82
|
locale(component, key, language) {
|
|
64
83
|
return localize(language, component, key);
|
|
65
84
|
}
|
|
@@ -90,6 +109,8 @@ export class GridService {
|
|
|
90
109
|
colId: 'actions',
|
|
91
110
|
headerName: this.locale(Texts, 'Actions', language),
|
|
92
111
|
resizable: false,
|
|
112
|
+
sortable: false,
|
|
113
|
+
filter: false,
|
|
93
114
|
cellDataType: false,
|
|
94
115
|
pinned: "right",
|
|
95
116
|
cellRendererParams: {
|
|
@@ -257,6 +278,41 @@ export class GridService {
|
|
|
257
278
|
colDef.valueFormatter = (params) => this.formatMap(params.value, map);
|
|
258
279
|
}
|
|
259
280
|
}
|
|
281
|
+
getRowSelection(component, formGroup) {
|
|
282
|
+
if (component.selection === "singleRow") {
|
|
283
|
+
return { mode: "singleRow" };
|
|
284
|
+
}
|
|
285
|
+
else if (component.selection === "multiRow") {
|
|
286
|
+
const options = {
|
|
287
|
+
mode: "multiRow",
|
|
288
|
+
selectAll: 'filtered',
|
|
289
|
+
hideDisabledCheckboxes: true
|
|
290
|
+
};
|
|
291
|
+
if (component.isSelectable) {
|
|
292
|
+
return {
|
|
293
|
+
...options,
|
|
294
|
+
isRowSelectable: (rowNode) => this.onRowSelectable(component, formGroup, rowNode.data)
|
|
295
|
+
};
|
|
296
|
+
}
|
|
297
|
+
else {
|
|
298
|
+
return options;
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
return undefined;
|
|
302
|
+
}
|
|
303
|
+
onRowSelectable(component, formGroup, data) {
|
|
304
|
+
if (!data)
|
|
305
|
+
return false;
|
|
306
|
+
const result = this.programmability.evaluate(formGroup, component.isSelectable, {
|
|
307
|
+
cacheable: false,
|
|
308
|
+
extendContext: () => ({
|
|
309
|
+
"event": {
|
|
310
|
+
data: data
|
|
311
|
+
}
|
|
312
|
+
})
|
|
313
|
+
});
|
|
314
|
+
return result === true;
|
|
315
|
+
}
|
|
260
316
|
getGridPaginable(component) {
|
|
261
317
|
return (typeof component.rowCount === 'number' && component.rowCount > 0);
|
|
262
318
|
}
|
|
@@ -499,4 +555,4 @@ export class GridService {
|
|
|
499
555
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GridService, decorators: [{
|
|
500
556
|
type: Injectable
|
|
501
557
|
}], ctorParameters: () => [{ type: i1.FormatterService }, { type: i2.ProgrammabilityService }] });
|
|
502
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNpcmlvL3NyYy9saWIvc2VydmljZXMvZ3JpZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUNHLGdCQUFnQixFQUFFLHdCQUF3QixFQUFFLHNCQUFzQixFQUN4RSxZQUFZLEVBQUUsZUFBZSxFQUM3QixnQkFBZ0IsRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFDOUMsV0FBVyxFQUFFLGFBQWEsRUFDbEMsMkJBQTJCLEVBQ1gsb0JBQW9CLEVBQUUsZUFBZSxFQUV4RCxNQUFNLG1CQUFtQixDQUFDO0FBRTNCLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxxQkFBcUIsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRzVHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMzRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixpQkFBaUIsRUFDakIsaUJBQWlCLEVBQ2pCLGlCQUFpQixFQUNqQixpQkFBaUIsRUFDakIsaUJBQWlCLEVBQ2xCLE1BQU0sMkJBQTJCLENBQUM7QUFFbkMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7OztBQUs5QyxNQUFNLE9BQU8sV0FBVztJQUVGO0lBQ1Y7SUFEVixZQUFvQixTQUEyQixFQUNyQyxl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QUFDO2dCQUNILENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sYUFBYSxDQUFDO0lBQ3ZCLENBQUM7SUFFTyxZQUFZLENBQUMsS0FBWTtRQUMvQixNQUFNLElBQUksR0FBa0IsRUFBRSxDQUFDO1FBQy9CLElBQUksYUFBYSxHQUFRLEtBQUssQ0FBQyxNQUFNLENBQUM7UUFDdEMsT0FBTyxhQUFhLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ3pCLGFBQWEsR0FBRyxhQUFhLENBQUMsYUFBYSxDQUFDO1FBQzlDLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7d0dBdGlCVSxXQUFXOzRHQUFYLFdBQVc7OzRGQUFYLFdBQVc7a0JBRHZCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgTW9kdWxlLCBQYWdpbmF0aW9uTW9kdWxlLCBDbGllbnRTaWRlUm93TW9kZWxNb2R1bGUsIEluZmluaXRlUm93TW9kZWxNb2R1bGVcclxuICAsIExvY2FsZU1vZHVsZSwgQ2VsbFN0eWxlTW9kdWxlLCBWYWxpZGF0aW9uTW9kdWxlXHJcbiAgLCBUZXh0RmlsdGVyTW9kdWxlLCBOdW1iZXJGaWx0ZXJNb2R1bGUsIERhdGVGaWx0ZXJNb2R1bGVcclxuICAsIENvbERlZiwgdGhlbWVRdWFydHosIGljb25TZXRBbHBpbmUsIEdyaWRPcHRpb25zLCBEYXRhVHlwZURlZmluaXRpb25cclxuICAsIENsaWVudFNpZGVSb3dNb2RlbEFwaU1vZHVsZVxyXG4gICwgR3JpZFJlYWR5RXZlbnQsIENvbHVtbkF1dG9TaXplTW9kdWxlLCBDb2x1bW5BcGlNb2R1bGVcclxuICAsIFN1cHByZXNzS2V5Ym9hcmRFdmVudFBhcmFtc1xyXG59IGZyb20gJ2FnLWdyaWQtY29tbXVuaXR5JztcclxuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBPYmplY3RVUkxSZW5kZXJlckNvbXBvbmVudCwgRGVsZXRlUm93Q2VsbFJlbmRlcmVyLCBBY3Rpb25zQ2VsbFJlbmRlcmVyIH0gZnJvbSAnLi4vdXRpbHMvZ3JpZENlbGxzJztcclxuaW1wb3J0IHsgRm9ybWF0dGVyU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2Zvcm1hdHRlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUHJvZ3JhbW1hYmlsaXR5U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3Byb2dyYW1tYWJpbGl0eS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU2V0RmlsdGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vdXRpbHMvc2V0RmlsdGVyJztcclxuaW1wb3J0IHsgZ2V0Rm9jdXNhYmxlcyB9IGZyb20gJy4uL3V0aWxzL2ZvY3VzYWJsZSc7XHJcbmltcG9ydCB7IGlzUmVjb3JkLCBpc0xhYmVsZWRSZWNvcmQsIGlzTnVtZXJpY0tleSB9IGZyb20gJy4uL2NvbW1vbi9yZWNvcmQnO1xyXG5pbXBvcnQgeyBnZXRMYWJlbFN5bWJvbCB9IGZyb20gJy4uL2NvbW1vbi9zeW1ib2xzJztcclxuaW1wb3J0IHtcclxuICBBR19HUklEX0xPQ0FMRV9JVCxcclxuICBBR19HUklEX0xPQ0FMRV9FTixcclxuICBBR19HUklEX0xPQ0FMRV9ERSxcclxuICBBR19HUklEX0xPQ0FMRV9GUixcclxuICBBR19HUklEX0xPQ0FMRV9FUyxcclxuICBBR19HUklEX0xPQ0FMRV9QVCAgXHJcbn0gZnJvbSAnQGFnLWdyaWQtY29tbXVuaXR5L2xvY2FsZSc7XHJcblxyXG5pbXBvcnQgeyBUZXh0cyB9IGZyb20gJy4uL2xvY2FsZS9sb2NhbGUnO1xyXG5pbXBvcnQgeyBsb2NhbGl6ZSB9IGZyb20gJy4uL2xvY2FsZS9sb2NhbGl6ZSc7XHJcblxyXG50eXBlIE1hcFR5cGUgPSBSZWNvcmQ8c3RyaW5nIHwgbnVtYmVyLCBzdHJpbmc+IHwgbnVsbDtcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIEdyaWRTZXJ2aWNlIHtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBmb3JtYXR0ZXI6IEZvcm1hdHRlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHByb2dyYW1tYWJpbGl0eTogUHJvZ3JhbW1hYmlsaXR5U2VydmljZSkge1xyXG4gIH1cclxuXHJcbiAgZ2V0R3JpZE1vZHVsZXMoKTogTW9kdWxlW10ge1xyXG4gICAgcmV0dXJuIFtcclxuICAgICAgQ2xpZW50U2lkZVJvd01vZGVsTW9kdWxlXHJcbiAgICAgICwgSW5maW5pdGVSb3dNb2RlbE1vZHVsZVxyXG4gICAgICAsIFBhZ2luYXRpb25Nb2R1bGVcclxuICAgICAgLCBMb2NhbGVNb2R1bGVcclxuICAgICAgLCBDZWxsU3R5bGVNb2R1bGVcclxuICAgICAgLCBDbGllbnRTaWRlUm93TW9kZWxBcGlNb2R1bGVcclxuICAgICAgLCBUZXh0RmlsdGVyTW9kdWxlXHJcbiAgICAgICwgTnVtYmVyRmlsdGVyTW9kdWxlXHJcbiAgICAgICwgRGF0ZUZpbHRlck1vZHVsZVxyXG4gICAgICAsIENvbHVtbkF1dG9TaXplTW9kdWxlXHJcbiAgICAgICwgQ29sdW1uQXBpTW9kdWxlICAgICAgXHJcbiAgICBdO1xyXG4gIH07XHJcblxyXG4gIGdldEdyaWRPcHRpb25zKGNvbXBvbmVudDogYW55LCBmb3JtR3JvdXA6IEZvcm1Hcm91cCwgbGFuZ3VhZ2U6IHN0cmluZyk6IEdyaWRPcHRpb25zIHtcclxuICAgIGNvbnN0IGNvbHVtbkRlZnMgPSB0aGlzLmdldEdyaWRDb2x1bW5zKGNvbXBvbmVudCwgZm9ybUdyb3VwLCBsYW5ndWFnZSk7XHJcbiAgICBjb25zdCBwYWdpbmF0aW9uID0gdGhpcy5nZXRHcmlkUGFnaW5hYmxlKGNvbXBvbmVudCk7XHJcbiAgICBjb25zdCBwYWdlU2l6ZSA9IHRoaXMuZ2V0R3JpZFBhZ2VTaXplKGNvbXBvbmVudCk7XHJcbiAgICBjb25zdCB0ZXh0cyA9IHRoaXMuZ2V0R3JpZFRleHRzKGxhbmd1YWdlKTtcclxuICAgIGNvbnN0IHRoZW1lID0gdGhpcy5nZXRHcmlkVGhlbWUoKTtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIGRlZmF1bHRDb2xEZWY6IHtcclxuICAgICAgICBmbG9hdGluZ0ZpbHRlcjogKGNvbXBvbmVudC5mbG9hdGluZ0ZpbHRlciA9PT0gdHJ1ZSksXHJcbiAgICAgICAgaGVhZGVyQ2xhc3M6IChjb21wb25lbnQuZmxvYXRpbmdGaWx0ZXIgPT09IHRydWUpXHJcbiAgICAgICAgICA/ICdzaG93LWZpbHRlcicgOiAnaGlkZS1maWx0ZXInXHJcbiAgICAgIH0sXHJcbiAgICAgIGRhdGFUeXBlRGVmaW5pdGlvbnM6IHRoaXMuZ2V0RGF0YVR5cGVEZWZpbml0aW9ucygpLFxyXG4gICAgICBjb2x1bW5EZWZzOiBjb2x1bW5EZWZzLFxyXG4gICAgICBwYWdpbmF0aW9uOiBwYWdpbmF0aW9uLFxyXG4gICAgICBwYWdpbmF0aW9uUGFnZVNpemU6IHBhZ2VTaXplLFxyXG4gICAgICBjYWNoZUJsb2NrU2l6ZTogcGFnZVNpemUsXHJcbiAgICAgIHBhZ2luYXRpb25QYWdlU2l6ZVNlbGVjdG9yOiBbNSwgMTAsIDIwLCA1MF0sXHJcbiAgICAgIGxvY2FsZVRleHQ6IHRleHRzLFxyXG4gICAgICBlbmFibGVDZWxsVGV4dFNlbGVjdGlvbjogdHJ1ZSxcclxuICAgICAgdGhlbWU6IHRoZW1lLFxyXG4gICAgICBvbkdyaWRSZWFkeTogKHBhcmFtczogR3JpZFJlYWR5RXZlbnQpID0+IHtcclxuICAgICAgICBwYXJhbXMuYXBpLmF1dG9TaXplQ29sdW1ucyhbXCJhY3Rpb25zXCJdKTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbG9jYWxlKGNvbXBvbmVudDogYW55LCBrZXk6IHN0cmluZywgbGFuZ3VhZ2U6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gbG9jYWxpemUobGFuZ3VhZ2UsIGNvbXBvbmVudCwga2V5KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0R3JpZENvbHVtbnMoY29tcG9uZW50OiBhbnksIGZvcm1Hcm91cDogRm9ybUdyb3VwLCBsYW5ndWFnZTogc3RyaW5nKTogQ29sRGVmW10ge1xyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoY29tcG9uZW50LmNvbHVtbnMpKSB7XHJcbiAgICAgIGNvbnN0IGNvbHVtbnMgPSBjb21wb25lbnQuY29sdW1ucy5tYXAoKGNvbHVtbjogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3QgY29sRGVmOiBDb2xEZWYgPSB7XHJcbiAgICAgICAgICBmaWVsZDogY29sdW1uLmtleSxcclxuICAgICAgICAgIGhlYWRlck5hbWU6IHRoaXMubG9jYWxlKGNvbHVtbiwgJ2xhYmVsJywgbGFuZ3VhZ2UpLFxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5zZXRDZWxsRGF0YVR5cGUoY29sdW1uLCBjb2xEZWYpO1xyXG5cclxuICAgICAgICBjb25zdCBtYXAgPSB0aGlzLmdldE1hcChjb2x1bW4sIGNvbERlZiwgZm9ybUdyb3VwKTtcclxuXHJcbiAgICAgICAgdGhpcy5zZXRDZWxsUmVuZGVyZXIoY29sdW1uLCBjb2xEZWYsIG1hcCk7XHJcbiAgICAgICAgdGhpcy5zZXRSZXNpemFibGUoY29sdW1uLCBjb2xEZWYpO1xyXG4gICAgICAgIHRoaXMuc2V0U29ydGFibGUoY29sdW1uLCBjb2xEZWYpO1xyXG4gICAgICAgIHRoaXMuc2V0RmlsdGVyKGNvbHVtbiwgY29sRGVmLCBtYXApO1xyXG4gICAgICAgIHRoaXMuc2V0RmlsdGVyUGFyYW1zKGNvbHVtbiwgY29sRGVmLCBtYXApO1xyXG4gICAgICAgIHRoaXMuc2V0U3VwcHJlc3NNb3ZhYmxlKGNvbHVtbiwgY29sRGVmKTtcclxuICAgICAgICB0aGlzLnNldEZsZXgoY29sdW1uLCBjb2xEZWYpO1xyXG4gICAgICAgIHRoaXMuc2V0QWxpZ24oY29sdW1uLCBjb2xEZWYpO1xyXG4gICAgICAgIHRoaXMuc2V0UGlubmVkKGNvbHVtbiwgY29sRGVmKTtcclxuICAgICAgICB0aGlzLnNldFdpZHRoKGNvbHVtbiwgY29sRGVmKTtcclxuICAgICAgICB0aGlzLnNldFZhbHVlRm9ybWF0dGVyKGNvbHVtbiwgY29sRGVmLCBtYXApOyAgICAgICAgXHJcbiAgICAgICAgcmV0dXJuIGNvbERlZjtcclxuICAgICAgfSk7XHJcblxyXG5cclxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY29tcG9uZW50LmFjdGlvbnMpICYmIGNvbXBvbmVudC5hY3Rpb25zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICBjb2x1bW5zLnB1c2goe1xyXG4gICAgICAgICAgY29sSWQ6ICdhY3Rpb25zJyxcclxuICAgICAgICAgIGhlYWRlck5hbWU6IHRoaXMubG9jYWxlKFRleHRzLCAnQWN0aW9ucycsIGxhbmd1YWdlKSxcclxuICAgICAgICAgIHJlc2l6YWJsZTogZmFsc2UsXHJcbiAgICAgICAgICBjZWxsRGF0YVR5cGU6IGZhbHNlLFxyXG4gICAgICAgICAgcGlubmVkOiBcInJpZ2h0XCIsXHJcbiAgICAgICAgICBjZWxsUmVuZGVyZXJQYXJhbXM6IHtcclxuICAgICAgICAgICAgY29tcG9uZW50OiBjb21wb25lbnQsXHJcbiAgICAgICAgICAgIGZvcm1Hcm91cDogZm9ybUdyb3VwXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgY2VsbFJlbmRlcmVyOiBBY3Rpb25zQ2VsbFJlbmRlcmVyLFxyXG4gICAgICAgICAgc3VwcHJlc3NLZXlib2FyZEV2ZW50OiB0aGlzLm5hdmlnYXRlSW5zaWRlQ2VsbC5iaW5kKHRoaXMpXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiBjb2x1bW5zO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHJldHVybiBbXTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0Q2VsbERhdGFUeXBlKGNvbHVtbjogYW55LCBjb2xEZWY6IENvbERlZikge1xyXG4gICAgaWYgKHR5cGVvZiBjb2x1bW4uZGF0YVR5cGUgPT09IFwic3RyaW5nXCJcclxuICAgICAgJiYgY29sdW1uLmRhdGFUeXBlLnRyaW0oKSAhPT0gXCJcIlxyXG4gICAgICAmJiBjb2x1bW4uZGF0YVR5cGUgIT09IFwiYXV0b1wiKSB7XHJcbiAgICAgIGNvbERlZi5jZWxsRGF0YVR5cGUgPSBjb2x1bW4uZGF0YVR5cGU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldENlbGxSZW5kZXJlcihjb2x1bW46IGFueSwgY29sRGVmOiBDb2xEZWYsIG1hcDogTWFwVHlwZSkge1xyXG4gICAgaWYgKGNvbHVtbi5mb3JtYXQgPT09IFwib2JqZWN0VVJMXCIpIHtcclxuICAgICAgY29sRGVmLmNlbGxSZW5kZXJlciA9IE9iamVjdFVSTFJlbmRlcmVyQ29tcG9uZW50O1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChjb2x1bW4uZm9ybWF0ID09PSBcImRlbGV0ZVJvd1wiKSB7XHJcbiAgICAgIGNvbERlZi5jZWxsUmVuZGVyZXIgPSBEZWxldGVSb3dDZWxsUmVuZGVyZXI7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGNvbERlZi5jZWxsRGF0YVR5cGUgPT09IFwiYm9vbGVhblwiICYmIG1hcCkge1xyXG4gICAgICBjb2xEZWYuY2VsbFJlbmRlcmVyID0gKHBhcmFtczogYW55KSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybWF0TWFwKHBhcmFtcy52YWx1ZSwgbWFwKTsgXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0UmVzaXphYmxlKGNvbHVtbjogYW55LCBjb2xEZWY6IENvbERlZiApIHtcclxuICAgIGNvbERlZi5yZXNpemFibGUgPSAoY29sdW1uLnJlc2l6ZSA9PT0gdHJ1ZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldFNvcnRhYmxlKGNvbHVtbjogYW55LCBjb2xEZWY6IENvbERlZikge1xyXG4gICAgY29sRGVmLnNvcnRhYmxlID0gKGNvbHVtbi5zb3J0ID09PSB0cnVlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0RmlsdGVyKGNvbHVtbjogYW55LCBjb2xEZWY6IENvbERlZiwgbWFwOiBNYXBUeXBlKSB7XHJcbiAgICBpZiAoY29sdW1uLmZpbHRlciA9PT0gdHJ1ZSkge1xyXG4gICAgICBjb2xEZWYuZmlsdGVyID0gdHJ1ZTtcclxuICAgICAgaWYgKG1hcCkge1xyXG4gICAgICAgIGNvbERlZi5maWx0ZXIgPSBTZXRGaWx0ZXJDb21wb25lbnQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0RmlsdGVyUGFyYW1zKGNvbHVtbjogYW55LCBjb2xEZWY6IENvbERlZiwgbWFwOiBNYXBUeXBlKSB7XHJcblxyXG4gICAgY29uc3QgZmlsdGVyUGFyYW1zOiBhbnkgPSB7fTtcclxuXHJcbiAgICBpZiAoY29sdW1uLmRhdGFUeXBlID09PSAndXVpZCcpIHtcclxuICAgICAgdGhpcy5zZXRVdWlkRmlsdGVyUGFyYW1zKGZpbHRlclBhcmFtcyk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChjb2x1bW4uZGF0YVR5cGUgPT09ICdpbnRlZ2VyJykge1xyXG4gICAgICB0aGlzLnNldEludGVnZXJGaWx0ZXJQYXJhbXMoZmlsdGVyUGFyYW1zKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGNvbHVtbi5kYXRhVHlwZSA9PT0gJ2RhdGUnKSB7XHJcbiAgICAgIHRoaXMuc2V0RGF0ZUZpbHRlclBhcmFtcyhmaWx0ZXJQYXJhbXMpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoY29sdW1uLmRhdGFUeXBlID09PSAnYm9vbGVhbicpIHtcclxuICAgICAgdGhpcy5zZXRCb29sZWFuRmlsdGVyUGFyYW1zKGZpbHRlclBhcmFtcyk7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIGlmIChtYXApIHtcclxuICAgICAgZmlsdGVyUGFyYW1zLm1hcCA9IG1hcDtcclxuICAgIH1cclxuXHJcbiAgICBjb2xEZWYuZmlsdGVyUGFyYW1zID0gZmlsdGVyUGFyYW1zO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRVdWlkRmlsdGVyUGFyYW1zKGZpbHRlclBhcmFtczogYW55KSB7XHJcbiAgICBmaWx0ZXJQYXJhbXMuZmlsdGVyT3B0aW9ucyA9IFsnZXF1YWxzJywgJ25vdEVxdWFsJ107XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldEludGVnZXJGaWx0ZXJQYXJhbXMoZmlsdGVyUGFyYW1zOiBhbnkpIHtcclxuICAgIGZpbHRlclBhcmFtcy5hbGxvd2VkQ2hhclBhdHRlcm4gPSAnXFxcXGQnO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXREYXRlRmlsdGVyUGFyYW1zKGZpbHRlclBhcmFtczogYW55KSB7XHJcbiAgICBmaWx0ZXJQYXJhbXMuY29tcGFyYXRvciA9IChmaWx0ZXJMb2NhbERhdGVBdE1pZG5pZ2h0OiBEYXRlLCBjZWxsVmFsdWU6IHN0cmluZykgPT4ge1xyXG4gICAgICBpZiAoIWNlbGxWYWx1ZSkgcmV0dXJuIC0xO1xyXG4gICAgICBjb25zdCBjZWxsRGF0ZSA9IG5ldyBEYXRlKGNlbGxWYWx1ZSk7XHJcbiAgICAgIGlmIChpc05hTihjZWxsRGF0ZS5nZXRUaW1lKCkpKSByZXR1cm4gLTE7XHJcblxyXG4gICAgICBjb25zdCBjZWxsRGF0ZU5vVGltZSA9IG5ldyBEYXRlKGNlbGxEYXRlLmdldEZ1bGxZZWFyKCksIGNlbGxEYXRlLmdldE1vbnRoKCksIGNlbGxEYXRlLmdldERhdGUoKSk7XHJcblxyXG4gICAgICBpZiAoY2VsbERhdGVOb1RpbWUgPCBmaWx0ZXJMb2NhbERhdGVBdE1pZG5pZ2h0KSByZXR1cm4gLTE7XHJcbiAgICAgIGlmIChjZWxsRGF0ZU5vVGltZSA+IGZpbHRlckxvY2FsRGF0ZUF0TWlkbmlnaHQpIHJldHVybiAxO1xyXG4gICAgICByZXR1cm4gMDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0Qm9vbGVhbkZpbHRlclBhcmFtcyhmaWx0ZXJQYXJhbXM6IGFueSkge1xyXG4gICAgZmlsdGVyUGFyYW1zLmZpbHRlck9wdGlvbnMgPSBbXHJcbiAgICAgIHtcclxuICAgICAgICBkaXNwbGF5S2V5OiAnaW5jbHVkZUFsbCcsXHJcbiAgICAgICAgZGlzcGxheU5hbWU6IFRleHRzLkNob29zZU9uZSxcclxuICAgICAgICBudW1iZXJPZklucHV0czogMCxcclxuICAgICAgICBwcmVkaWNhdGU6IChbZmlsdGVyXTogW2FueV0sIHZhbHVlOiBhbnkpID0+IHRydWVcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGRpc3BsYXlLZXk6ICd0cnVlJyxcclxuICAgICAgICBkaXNwbGF5TmFtZTogVGV4dHMuVHJ1ZSxcclxuICAgICAgICBudW1iZXJPZklucHV0czogMCxcclxuICAgICAgICBwcmVkaWNhdGU6IChbZmlsdGVyXTogW2FueV0sIHZhbHVlOiBhbnkpID0+IHZhbHVlID09PSB0cnVlXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBkaXNwbGF5S2V5OiAnZmFsc2UnLFxyXG4gICAgICAgIGRpc3BsYXlOYW1lOiBUZXh0cy5GYWxzZSxcclxuICAgICAgICBudW1iZXJPZklucHV0czogMCxcclxuICAgICAgICBwcmVkaWNhdGU6IChbZmlsdGVyXTogW2FueV0sIHZhbHVlOiBhbnkpID0+IHZhbHVlID09PSBmYWxzZVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgZGlzcGxheUtleTogJ2JsYW5rJyxcclxuICAgICAgICBkaXNwbGF5TmFtZTogVGV4dHMuQmxhbmssXHJcbiAgICAgICAgbnVtYmVyT2ZJbnB1dHM6IDAsXHJcbiAgICAgICAgcHJlZGljYXRlOiAoW2ZpbHRlcl06IFthbnldLCB2YWx1ZTogYW55KSA9PiB2YWx1ZSA9PT0gbnVsbFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgZGlzcGxheUtleTogJ25vdEJsYW5rJyxcclxuICAgICAgICBkaXNwbGF5TmFtZTogVGV4dHMuTm90QmxhbmssXHJcbiAgICAgICAgbnVtYmVyT2ZJbnB1dHM6IDAsXHJcbiAgICAgICAgcHJlZGljYXRlOiAoW2ZpbHRlcl06IFthbnldLCB2YWx1ZTogYW55KSA9PiB2YWx1ZSAhPT0gbnVsbFxyXG4gICAgICB9LFxyXG4gICAgXTtcclxuICAgIGZpbHRlclBhcmFtcy5zdXBwcmVzc0FuZE9yQ29uZGl0aW9uID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0U3VwcHJlc3NNb3ZhYmxlKGNvbHVtbjogYW55LCBjb2xEZWY6IENvbERlZikge1xyXG4gICAgaWYgKCEoY29sdW1uLm1vdmUgPT09IHRydWUpKSB7IFxyXG4gICAgICBjb2xEZWYuc3VwcHJlc3NNb3ZhYmxlID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0RmxleChjb2x1bW46IGFueSwgY29sRGVmOiBDb2xEZWYpIHtcclxuICAgIGlmIChjb2x1bW4uZmxleCA9PT0gdHJ1ZSkgeyBcclxuICAgICAgY29sRGVmLmZsZXggPSAxO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRBbGlnbihjb2x1bW46IGFueSwgY29sRGVmOiBDb2xEZWYpIHtcclxuICAgIGlmIChjb2x1bW4uYWxpZ24gPT09IFwibGVmdFwiKSB7XHJcbiAgICAgIGNvbERlZi5jZWxsU3R5bGUgPSB7IHRleHRBbGlnbjogJ2xlZnQnIH07XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChjb2x1bW4uYWxpZ24gPT09IFwiY2VudGVyXCIpIHtcclxuICAgICAgY29sRGVmLmNlbGxTdHlsZSA9IHsgdGV4dEFsaWduOiAnY2VudGVyJyB9O1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoY29sdW1uLmFsaWduID09PSBcInJpZ2h0XCIpIHsgXHJcbiAgICAgIGNvbERlZi5jZWxsU3R5bGUgPSB7IHRleHRBbGlnbjogJ3JpZ2h0JyB9O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRQaW5uZWQoY29sdW1uOiBhbnksIGNvbERlZjogQ29sRGVmKSB7XHJcbiAgICBpZiAodHlwZW9mIGNvbHVtbi5waW5uZWQgPT09IFwic3RyaW5nXCIpIHsgXHJcbiAgICAgIGNvbERlZi5waW5uZWQgPSBjb2x1bW4ucGlubmVkO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRXaWR0aChjb2x1bW46IGFueSwgY29sRGVmOiBDb2xEZWYpIHtcclxuICAgIGlmICh0eXBlb2YgY29sdW1uLndpZHRoID09PSBcIm51bWJlclwiKSB7IFxyXG4gICAgICBjb2xEZWYud2lkdGggPSBjb2x1bW4ud2lkdGg7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHR5cGVvZiBjb2x1bW4ubWluV2lkdGggPT09IFwibnVtYmVyXCIpIHsgXHJcbiAgICAgIGNvbERlZi5taW5XaWR0aCA9IGNvbHVtbi5taW5XaWR0aDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodHlwZW9mIGNvbHVtbi5tYXhXaWR0aCA9PT0gXCJudW1iZXJcIikgeyBcclxuICAgICAgY29sRGVmLm1heFdpZHRoID0gY29sdW1uLm1heFdpZHRoO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRWYWx1ZUZvcm1hdHRlcihjb2x1bW46IGFueSwgY29sRGVmOiBDb2xEZWYsIG1hcDogTWFwVHlwZSkge1xyXG4gICAgaWYgKG1hcCkge1xyXG4gICAgICBjb2xEZWYudmFsdWVGb3JtYXR0ZXIgPSAocGFyYW1zKSA9PiB0aGlzLmZvcm1hdE1hcChwYXJhbXMudmFsdWUsIG1hcCk7ICAgICAgXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEdyaWRQYWdpbmFibGUoY29tcG9uZW50OiBhbnkpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAodHlwZW9mIGNvbXBvbmVudC5yb3dDb3VudCA9PT0gJ251bWJlcicgJiYgY29tcG9uZW50LnJvd0NvdW50ID4gMCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEdyaWRQYWdlU2l6ZShjb21wb25lbnQ6IGFueSkge1xyXG4gICAgaWYgKHR5cGVvZiBjb21wb25lbnQucm93Q291bnQgPT09ICdudW1iZXInKSB7XHJcbiAgICAgIHJldHVybiBjb21wb25lbnQucm93Q291bnQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEdyaWRUZXh0cyhsYW5ndWFnZTogc3RyaW5nKTogYW55IHtcclxuICAgIGlmIChsYW5ndWFnZSA9PT0gJ2l0Jykge1xyXG4gICAgICByZXR1cm4gQUdfR1JJRF9MT0NBTEVfSVQ7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChsYW5ndWFnZSA9PT0gJ2VuJykge1xyXG4gICAgICByZXR1cm4gQUdfR1JJRF9MT0NBTEVfRU47XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChsYW5ndWFnZSA9PT0gJ2RlJykge1xyXG4gICAgICByZXR1cm4gQUdfR1JJRF9MT0NBTEVfREU7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChsYW5ndWFnZSA9PT0gJ2ZyJykge1xyXG4gICAgICByZXR1cm4gQUdfR1JJRF9MT0NBTEVfRlI7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChsYW5ndWFnZSA9PT0gJ2VzJykge1xyXG4gICAgICByZXR1cm4gQUdfR1JJRF9MT0NBTEVfRVM7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChsYW5ndWFnZSA9PT0gJ3B0Jykge1xyXG4gICAgICByZXR1cm4gQUdfR1JJRF9MT0NBTEVfUFQ7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChsYW5ndWFnZSA9PT0gJycpIHtcclxuICAgICAgcmV0dXJuIEFHX0dSSURfTE9DQUxFX0lUOyAvLyBuZXV0cmFsXHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgcmV0dXJuIEFHX0dSSURfTE9DQUxFX0VOOyAvLyBmYWxsYmFja1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRHcmlkVGhlbWUoKSB7XHJcbiAgICByZXR1cm4gdGhlbWVRdWFydHpcclxuICAgICAgLndpdGhQYXJ0KGljb25TZXRBbHBpbmUpXHJcbiAgICAgIC53aXRoUGFyYW1zKHtcclxuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IFwiI0ZBRkFGQVwiLFxyXG4gICAgICAgIGJvcmRlckNvbG9yOiBcIiNEOUU0RjdcIixcclxuICAgICAgICBicm93c2VyQ29sb3JTY2hlbWU6IFwibGlnaHRcIixcclxuICAgICAgICBjZWxsVGV4dENvbG9yOiBcIiMwMDEyMUFcIixcclxuICAgICAgICBjb2x1bW5Cb3JkZXI6IHRydWUsXHJcbiAgICAgICAgZm9udEZhbWlseTogXCJpbmhlcml0XCIsXHJcbiAgICAgICAgZm9udFNpemU6IDE2LFxyXG4gICAgICAgIGhlYWRlckJhY2tncm91bmRDb2xvcjogXCIjMDAyNDYwXCIsXHJcbiAgICAgICAgaGVhZGVyQ29sdW1uQm9yZGVyOiB0cnVlLFxyXG4gICAgICAgIGhlYWRlckNvbHVtblJlc2l6ZUhhbmRsZUNvbG9yOiBcIiNGMkY2RkNcIixcclxuICAgICAgICBoZWFkZXJDb2x1bW5SZXNpemVIYW5kbGVXaWR0aDogMixcclxuICAgICAgICBoZWFkZXJGb250U2l6ZTogMTYsXHJcbiAgICAgICAgaGVhZGVyRm9udFdlaWdodDogNjAwLFxyXG4gICAgICAgIGhlYWRlclJvd0JvcmRlcjogZmFsc2UsXHJcbiAgICAgICAgaGVhZGVyVGV4dENvbG9yOiBcIiNGMkY2RkNcIixcclxuICAgICAgICByb3dCb3JkZXI6IHRydWVcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldERhdGFUeXBlRGVmaW5pdGlvbnMoKTogeyBbY2VsbERhdGFUeXBlOiBzdHJpbmddOiBEYXRhVHlwZURlZmluaXRpb248YW55PjsgfSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICB1dWlkOiB7XHJcbiAgICAgICAgYmFzZURhdGFUeXBlOiAndGV4dCcsXHJcbiAgICAgICAgZXh0ZW5kc0RhdGFUeXBlOiAndGV4dCdcclxuICAgICAgfSxcclxuICAgICAgZGF0ZToge1xyXG4gICAgICAgIGJhc2VEYXRhVHlwZTogJ2RhdGVTdHJpbmcnLFxyXG4gICAgICAgIGV4dGVuZHNEYXRhVHlwZTogJ2RhdGVTdHJpbmcnLFxyXG4gICAgICAgIGRhdGVQYXJzZXI6ICh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gdmFsdWUgPyBuZXcgRGF0ZSh2YWx1ZSkgOiB1bmRlZmluZWQ7XHJcbiAgICAgICAgfSxcclxuICAgICAgICB2YWx1ZUZvcm1hdHRlcjogcGFyYW1zID0+IHtcclxuICAgICAgICAgIHJldHVybiB0aGlzLmZvcm1hdHRlci5mb3JtYXREYXRlKHBhcmFtcy52YWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBkYXRlVGltZToge1xyXG4gICAgICAgIGJhc2VEYXRhVHlwZTogJ2RhdGVTdHJpbmcnLFxyXG4gICAgICAgIGV4dGVuZHNEYXRhVHlwZTogJ2RhdGVTdHJpbmcnLFxyXG4gICAgICAgIGRhdGVQYXJzZXI6ICh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gdmFsdWUgPyBuZXcgRGF0ZSh2YWx1ZSkgOiB1bmRlZmluZWQ7XHJcbiAgICAgICAgfSxcclxuICAgICAgICB2YWx1ZUZvcm1hdHRlcjogcGFyYW1zID0+IHtcclxuICAgICAgICAgIHJldHVybiB0aGlzLmZvcm1hdHRlci5mb3JtYXREYXRlVGltZShwYXJhbXMudmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgY3VycmVuY3k6IHtcclxuICAgICAgICBleHRlbmRzRGF0YVR5cGU6ICdudW1iZXInLFxyXG4gICAgICAgIGJhc2VEYXRhVHlwZTogJ251bWJlcicsXHJcbiAgICAgICAgdmFsdWVGb3JtYXR0ZXI6IHBhcmFtcyA9PiBwYXJhbXMudmFsdWUgPT0gbnVsbFxyXG4gICAgICAgICAgPyAnJ1xyXG4gICAgICAgICAgOiB0aGlzLmZvcm1hdHRlci5mb3JtYXRDdXJyZW5jeShwYXJhbXMudmFsdWUpXHJcbiAgICAgIH0sXHJcbiAgICAgIGludGVnZXI6IHtcclxuICAgICAgICBleHRlbmRzRGF0YVR5cGU6ICdudW1iZXInLFxyXG4gICAgICAgIGJhc2VEYXRhVHlwZTogJ251bWJlcicsXHJcbiAgICAgICAgdmFsdWVGb3JtYXR0ZXI6IHBhcmFtcyA9PiBwYXJhbXMudmFsdWUgPT0gbnVsbFxyXG4gICAgICAgICAgPyAnJ1xyXG4gICAgICAgICAgOiB0aGlzLmZvcm1hdHRlci5mb3JtYXRJbnRlZ2VyKHBhcmFtcy52YWx1ZSlcclxuICAgICAgfSxcclxuICAgICAgcGVyY2VudGFnZToge1xyXG4gICAgICAgIGV4dGVuZHNEYXRhVHlwZTogJ251bWJlcicsXHJcbiAgICAgICAgYmFzZURhdGFUeXBlOiAnbnVtYmVyJyxcclxuICAgICAgICB2YWx1ZUZvcm1hdHRlcjogcGFyYW1zID0+IHBhcmFtcy52YWx1ZSA9PSBudWxsXHJcbiAgICAgICAgICA/ICcnXHJcbiAgICAgICAgICA6IGAke01hdGgucm91bmQocGFyYW1zLnZhbHVlICogMTAwKX0lYCxcclxuICAgICAgfSxcclxuICAgICAgZmxhZ3M6IHtcclxuICAgICAgICBleHRlbmRzRGF0YVR5cGU6ICdudW1iZXInLFxyXG4gICAgICAgIGJhc2VEYXRhVHlwZTogJ251bWJlcidcclxuICAgICAgfSAgICAgIFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0TWFwKGNvbHVtbjogYW55LCBjb2xEZWY6IENvbERlZiwgZm9ybUdyb3VwOiBGb3JtR3JvdXApOiBNYXBUeXBlIHtcclxuXHJcbiAgICBjb25zdCBhbGxvd2VkID0gKGNvbERlZi5jZWxsRGF0YVR5cGUgPT09IFwiYm9vbGVhblwiXHJcbiAgICAgIHx8IGNvbERlZi5jZWxsRGF0YVR5cGUgPT09IFwidGV4dFwiXHJcbiAgICAgIHx8IGNvbERlZi5jZWxsRGF0YVR5cGUgPT09IFwibnVtYmVyXCJcclxuICAgICAgfHwgY29sRGVmLmNlbGxEYXRhVHlwZSA9PT0gXCJmbGFnc1wiKTtcclxuXHJcbiAgICBpZiAoYWxsb3dlZCAmJiBjb2x1bW4ubWFwKSB7XHJcbiAgICAgIGNvbnN0IG1hcCA9IHRoaXMucHJvZ3JhbW1hYmlsaXR5LmV2YWx1YXRlKGZvcm1Hcm91cCwgY29sdW1uLm1hcFZhbHVlcyk7XHJcblxyXG4gICAgICBjb25zdCB2YWxpZCA9IGlzUmVjb3JkKFxyXG4gICAgICAgIG1hcCxcclxuICAgICAgICBrZXkgPT4gdHlwZW9mIGtleSA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIGtleSA9PT0gJ251bWJlcicsXHJcbiAgICAgICAgdmFsID0+IHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnXHJcbiAgICAgICk7XHJcblxyXG4gICAgICBpZiAoIXZhbGlkKVxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG5cclxuICAgICAgaWYgKGNvbERlZi5jZWxsRGF0YVR5cGUgPT09IFwiZmxhZ3NcIikge1xyXG4gICAgICAgIChtYXAgYXMgYW55KVtnZXRMYWJlbFN5bWJvbF0gPSAoa2V5OiBhbnkpID0+IHRoaXMuZm9ybWF0RmxhZ3Moa2V5LCBtYXApO1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gbWFwO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmb3JtYXRNYXAodmFsdWU6IGFueSwgbWFwOiBNYXBUeXBlKVxyXG4gIHtcclxuICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XHJcbiAgICAgIHJldHVybiAnJztcclxuICAgIH1cclxuXHJcbiAgICBpZiAobWFwKSB7XHJcbiAgICAgIHZhciByZXN1bHQgPSBtYXBbdmFsdWVdO1xyXG5cclxuICAgICAgaWYgKHJlc3VsdCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgY29uc3QgbGFiZWxlZCA9IGlzTGFiZWxlZFJlY29yZChcclxuICAgICAgICAgIG1hcCxcclxuICAgICAgICAgIGtleSA9PiB0eXBlb2Yga2V5ID09PSAnc3RyaW5nJyB8fCB0eXBlb2Yga2V5ID09PSAnbnVtYmVyJyxcclxuICAgICAgICAgIHZhbCA9PiB0eXBlb2YgdmFsID09PSAnc3RyaW5nJyxcclxuICAgICAgICAgIGdldExhYmVsU3ltYm9sXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgaWYgKGxhYmVsZWQpIHtcclxuICAgICAgICAgIHJlc3VsdCA9IG1hcFtnZXRMYWJlbFN5bWJvbF0odmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBcclxuICAgICAgcmV0dXJuIHJlc3VsdCA/PyB2YWx1ZS50b1N0cmluZygpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHJldHVybiB2YWx1ZS50b1N0cmluZygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmb3JtYXRGbGFncyh2YWx1ZTogYW55LCBtYXA6IE1hcFR5cGUpIHtcclxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInICYmXHJcbiAgICAgIGlzUmVjb3JkKG1hcCwgaXNOdW1lcmljS2V5LCB2YWwgPT4gdHlwZW9mIHZhbCA9PT0gJ3N0cmluZycpXHJcbiAgICApIHtcclxuICAgICAgaWYgKHZhbHVlID09IDApIHtcclxuICAgICAgICByZXR1cm4gbWFwWzBdID8/IFwiMFwiO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCBhdmFpbGFibGVGbGFncyA9IE9iamVjdC5rZXlzKG1hcClcclxuICAgICAgICAubWFwKE51bWJlcilcclxuICAgICAgICAuZmlsdGVyKGZsYWcgPT4gZmxhZyAhPT0gMCk7XHJcblxyXG4gICAgICBjb25zdCBmbGFncyA9IGF2YWlsYWJsZUZsYWdzLmZpbHRlcihmbGFnID0+ICh2YWx1ZSAmIGZsYWcpID09PSBmbGFnKTtcclxuXHJcbiAgICAgIGNvbnN0IHN1bUZsYWdzID0gZmxhZ3MucmVkdWNlKChzdW0sIGYpID0+IHN1bSB8IGYsIDApO1xyXG5cclxuICAgICAgaWYgKCh2YWx1ZSAmIHN1bUZsYWdzKSAhPT0gdmFsdWUpIHtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIGZsYWdzXHJcbiAgICAgICAgLm1hcChmbGFnID0+IG1hcFtmbGFnXSlcclxuICAgICAgICAuZmlsdGVyKChsYWJlbCk6IGxhYmVsIGlzIHN0cmluZyA9PiAhIWxhYmVsKVxyXG4gICAgICAgIC5qb2luKCcsICcpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG5hdmlnYXRlSW5zaWRlQ2VsbCh7IGV2ZW50IH06IFN1cHByZXNzS2V5Ym9hcmRFdmVudFBhcmFtczxhbnk+KSB7XHJcbiAgICBjb25zdCBHUklEX0NFTExfQ0xBU1NOQU1FID0gXCJhZy1jZWxsXCI7XHJcbiAgICBjb25zdCB7IGtleSwgc2hpZnRLZXkgfSA9IGV2ZW50O1xyXG4gICAgY29uc3QgcGF0aCA9IHRoaXMuZ2V0RXZlbnRQYXRoKGV2ZW50KTtcclxuICAgIGNvbnN0IGlzVGFiRm9yd2FyZCA9IGtleSA9PT0gXCJUYWJcIiAmJiBzaGlmdEtleSA9PT0gZmFsc2U7XHJcbiAgICBjb25zdCBpc1RhYkJhY2t3YXJkID0ga2V5ID09PSBcIlRhYlwiICYmIHNoaWZ0S2V5ID09PSB0cnVlO1xyXG4gICAgbGV0IHN1cHByZXNzRXZlbnQgPSBmYWxzZTtcclxuICAgIC8vIEhhbmRsZSBjZWxsIGNoaWxkcmVuIHRhYmJpbmdcclxuICAgIGlmIChpc1RhYkZvcndhcmQgfHwgaXNUYWJCYWNrd2FyZCkge1xyXG4gICAgICBjb25zdCBlR3JpZENlbGwgPSBwYXRoLmZpbmQoKGVsKSA9PiB7XHJcbiAgICAgICAgaWYgKGVsLmNsYXNzTGlzdCA9PT0gdW5kZWZpbmVkKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgcmV0dXJuIGVsLmNsYXNzTGlzdC5jb250YWlucyhHUklEX0NFTExfQ0xBU1NOQU1FKTtcclxuICAgICAgfSk7XHJcbiAgICAgIGlmICghZUdyaWRDZWxsKSB7XHJcbiAgICAgICAgcmV0dXJuIHN1cHByZXNzRXZlbnQ7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgZm9jdXNhYmxlQ2hpbGRyZW5FbGVtZW50cyA9IGdldEZvY3VzYWJsZXMoZUdyaWRDZWxsKTtcclxuICAgICAgY29uc3QgbGFzdENlbGxDaGlsZEVsID1cclxuICAgICAgICBmb2N1c2FibGVDaGlsZHJlbkVsZW1lbnRzW2ZvY3VzYWJsZUNoaWxkcmVuRWxlbWVudHMubGVuZ3RoIC0gMV07XHJcbiAgICAgIGNvbnN0IGZpcnN0Q2VsbENoaWxkRWwgPSBmb2N1c2FibGVDaGlsZHJlbkVsZW1lbnRzWzBdO1xyXG4gICAgICAvLyBTdXBwcmVzcyBrZXlib2FyZCBldmVudCBpZiB0YWJiaW5nIGZvcndhcmQgd2l0aGluIHRoZSBjZWxsIGFuZCB0aGUgY3VycmVudCBmb2N1c2VkIGVsZW1lbnQgaXMgbm90IHRoZSBsYXN0IGNoaWxkXHJcbiAgICAgIGlmIChmb2N1c2FibGVDaGlsZHJlbkVsZW1lbnRzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBjdXJyZW50SW5kZXggPSBmb2N1c2FibGVDaGlsZHJlbkVsZW1lbnRzLmluZGV4T2YoXHJcbiAgICAgICAgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCxcclxuICAgICAgKTtcclxuICAgICAgaWYgKGlzVGFiRm9yd2FyZCkge1xyXG4gICAgICAgIGNvbnN0IGlzTGFzdENoaWxkRm9jdXNlZCA9XHJcbiAgICAgICAgICBsYXN0Q2VsbENoaWxkRWwgJiYgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PT0gbGFzdENlbGxDaGlsZEVsO1xyXG4gICAgICAgIGlmICghaXNMYXN0Q2hpbGRGb2N1c2VkKSB7XHJcbiAgICAgICAgICBzdXBwcmVzc0V2ZW50ID0gdHJ1ZTtcclxuICAgICAgICAgIGlmIChjdXJyZW50SW5kZXggIT09IC0xIHx8IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IGVHcmlkQ2VsbCkge1xyXG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICBmb2N1c2FibGVDaGlsZHJlbkVsZW1lbnRzW2N1cnJlbnRJbmRleCArIDFdLmZvY3VzKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIC8vIFN1cHByZXNzIGtleWJvYXJkIGV2ZW50IGlmIHRhYmJpbmcgYmFja3dhcmRzIHdpdGhpbiB0aGUgY2VsbCwgYW5kIHRoZSBjdXJyZW50IGZvY3VzZWQgZWxlbWVudCBpcyBub3QgdGhlIGZpcnN0IGNoaWxkXHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IGNlbGxIYXNGb2N1c2VkQ2hpbGRyZW4gPVxyXG4gICAgICAgICAgZUdyaWRDZWxsLmNvbnRhaW5zKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpICYmXHJcbiAgICAgICAgICBlR3JpZENlbGwgIT09IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7XHJcbiAgICAgICAgLy8gTWFudWFsbHkgc2V0IGZvY3VzIHRvIHRoZSBsYXN0IGNoaWxkIGVsZW1lbnQgaWYgY2VsbCBkb2Vzbid0IGhhdmUgZm9jdXNlZCBjaGlsZHJlblxyXG4gICAgICAgIGlmICghY2VsbEhhc0ZvY3VzZWRDaGlsZHJlbikge1xyXG4gICAgICAgICAgbGFzdENlbGxDaGlsZEVsLmZvY3VzKCk7XHJcbiAgICAgICAgICAvLyBDYW5jZWwga2V5Ym9hcmQgcHJlc3MsIHNvIHRoYXQgaXQgZG9lc24ndCBmb2N1cyBvbiB0aGUgbGFzdCBjaGlsZCBhbmQgdGhlbiBwYXNzIHRocm91Z2ggdGhlIGtleWJvYXJkIHByZXNzIHRvXHJcbiAgICAgICAgICAvLyBtb3ZlIHRvIHRoZSAybmQgbGFzdCBjaGlsZCBlbGVtZW50XHJcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBpc0ZpcnN0Q2hpbGRGb2N1c2VkID1cclxuICAgICAgICAgIGZpcnN0Q2VsbENoaWxkRWwgJiYgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PT0gZmlyc3RDZWxsQ2hpbGRFbDtcclxuICAgICAgICBpZiAoIWlzRmlyc3RDaGlsZEZvY3VzZWQpIHtcclxuICAgICAgICAgIHN1cHByZXNzRXZlbnQgPSB0cnVlO1xyXG4gICAgICAgICAgaWYgKGN1cnJlbnRJbmRleCAhPT0gLTEgfHwgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PT0gZUdyaWRDZWxsKSB7XHJcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgIGZvY3VzYWJsZUNoaWxkcmVuRWxlbWVudHNbY3VycmVudEluZGV4IC0gMV0uZm9jdXMoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBzdXBwcmVzc0V2ZW50O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRFdmVudFBhdGgoZXZlbnQ6IEV2ZW50KTogSFRNTEVsZW1lbnRbXSB7XHJcbiAgICBjb25zdCBwYXRoOiBIVE1MRWxlbWVudFtdID0gW107XHJcbiAgICBsZXQgY3VycmVudFRhcmdldDogYW55ID0gZXZlbnQudGFyZ2V0O1xyXG4gICAgd2hpbGUgKGN1cnJlbnRUYXJnZXQpIHtcclxuICAgICAgcGF0aC5wdXNoKGN1cnJlbnRUYXJnZXQpO1xyXG4gICAgICBjdXJyZW50VGFyZ2V0ID0gY3VycmVudFRhcmdldC5wYXJlbnRFbGVtZW50O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHBhdGg7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
558
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNpcmlvL3NyYy9saWIvc2VydmljZXMvZ3JpZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUNHLGdCQUFnQixFQUFFLHdCQUF3QixFQUFFLHNCQUFzQixFQUN4RSxZQUFZLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUMvQyxrQkFBa0IsRUFDbEIsZ0JBQWdCLEVBQUUsa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQzlDLFdBQVcsRUFBRSxhQUFhLEVBQ2xDLDJCQUEyQixFQUNMLG9CQUFvQixFQUFFLGVBQWUsRUFFOUQsTUFBTSxtQkFBbUIsQ0FBQztBQUUzQixPQUFPLEVBQUUsMEJBQTBCLEVBQUUscUJBQXFCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUc1RyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbkQsT0FBTyxFQUFFLFFBQVEsRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDM0UsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsaUJBQWlCLEVBQ2pCLGlCQUFpQixFQUNqQixpQkFBaUIsRUFDakIsaUJBQWlCLEVBQ2pCLGlCQUFpQixFQUNsQixNQUFNLDJCQUEyQixDQUFDO0FBRW5DLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN6QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7Ozs7QUFLOUMsTUFBTSxPQUFPLFdBQVc7SUFFRjtJQUNW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bXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgTW9kdWxlLCBQYWdpbmF0aW9uTW9kdWxlLCBDbGllbnRTaWRlUm93TW9kZWxNb2R1bGUsIEluZmluaXRlUm93TW9kZWxNb2R1bGVcclxuICAsIExvY2FsZU1vZHVsZSwgQ2VsbFN0eWxlTW9kdWxlLCBWYWxpZGF0aW9uTW9kdWxlXHJcbiAgLCBSb3dTZWxlY3Rpb25Nb2R1bGUsIFJvd1NlbGVjdGlvbk9wdGlvbnMgXHJcbiAgLCBUZXh0RmlsdGVyTW9kdWxlLCBOdW1iZXJGaWx0ZXJNb2R1bGUsIERhdGVGaWx0ZXJNb2R1bGVcclxuICAsIENvbERlZiwgdGhlbWVRdWFydHosIGljb25TZXRBbHBpbmUsIEdyaWRPcHRpb25zLCBEYXRhVHlwZURlZmluaXRpb25cclxuICAsIENsaWVudFNpZGVSb3dNb2RlbEFwaU1vZHVsZVxyXG4gICwgR3JpZFNpemVDaGFuZ2VkRXZlbnQsIENvbHVtbkF1dG9TaXplTW9kdWxlLCBDb2x1bW5BcGlNb2R1bGVcclxuICAsIFN1cHByZXNzS2V5Ym9hcmRFdmVudFBhcmFtc1xyXG59IGZyb20gJ2FnLWdyaWQtY29tbXVuaXR5JztcclxuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBPYmplY3RVUkxSZW5kZXJlckNvbXBvbmVudCwgRGVsZXRlUm93Q2VsbFJlbmRlcmVyLCBBY3Rpb25zQ2VsbFJlbmRlcmVyIH0gZnJvbSAnLi4vdXRpbHMvZ3JpZENlbGxzJztcclxuaW1wb3J0IHsgRm9ybWF0dGVyU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2Zvcm1hdHRlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUHJvZ3JhbW1hYmlsaXR5U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3Byb2dyYW1tYWJpbGl0eS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU2V0RmlsdGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vdXRpbHMvc2V0RmlsdGVyJztcclxuaW1wb3J0IHsgZ2V0Rm9jdXNhYmxlcyB9IGZyb20gJy4uL3V0aWxzL2ZvY3VzYWJsZSc7XHJcbmltcG9ydCB7IGlzUmVjb3JkLCBpc0xhYmVsZWRSZWNvcmQsIGlzTnVtZXJpY0tleSB9IGZyb20gJy4uL2NvbW1vbi9yZWNvcmQnO1xyXG5pbXBvcnQgeyBnZXRMYWJlbFN5bWJvbCB9IGZyb20gJy4uL2NvbW1vbi9zeW1ib2xzJztcclxuaW1wb3J0IHtcclxuICBBR19HUklEX0xPQ0FMRV9JVCxcclxuICBBR19HUklEX0xPQ0FMRV9FTixcclxuICBBR19HUklEX0xPQ0FMRV9ERSxcclxuICBBR19HUklEX0xPQ0FMRV9GUixcclxuICBBR19HUklEX0xPQ0FMRV9FUyxcclxuICBBR19HUklEX0xPQ0FMRV9QVCAgXHJcbn0gZnJvbSAnQGFnLWdyaWQtY29tbXVuaXR5L2xvY2FsZSc7XHJcblxyXG5pbXBvcnQgeyBUZXh0cyB9IGZyb20gJy4uL2xvY2FsZS9sb2NhbGUnO1xyXG5pbXBvcnQgeyBsb2NhbGl6ZSB9IGZyb20gJy4uL2xvY2FsZS9sb2NhbGl6ZSc7XHJcblxyXG50eXBlIE1hcFR5cGUgPSBSZWNvcmQ8c3RyaW5nIHwgbnVtYmVyLCBzdHJpbmc+IHwgbnVsbDtcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIEdyaWRTZXJ2aWNlIHtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBmb3JtYXR0ZXI6IEZvcm1hdHRlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHByb2dyYW1tYWJpbGl0eTogUHJvZ3JhbW1hYmlsaXR5U2VydmljZSkge1xyXG4gIH1cclxuXHJcbiAgZ2V0R3JpZE1vZHVsZXMoKTogTW9kdWxlW10ge1xyXG4gICAgcmV0dXJuIFtcclxuICAgICAgQ2xpZW50U2lkZVJvd01vZGVsTW9kdWxlXHJcbiAgICAgICwgSW5maW5pdGVSb3dNb2RlbE1vZHVsZVxyXG4gICAgICAsIFBhZ2luYXRpb25Nb2R1bGVcclxuICAgICAgLCBMb2NhbGVNb2R1bGVcclxuICAgICAgLCBDZWxsU3R5bGVNb2R1bGVcclxuICAgICAgLCBDbGllbnRTaWRlUm93TW9kZWxBcGlNb2R1bGVcclxuICAgICAgLCBUZXh0RmlsdGVyTW9kdWxlXHJcbiAgICAgICwgTnVtYmVyRmlsdGVyTW9kdWxlXHJcbiAgICAgICwgRGF0ZUZpbHRlck1vZHVsZVxyXG4gICAgICAsIENvbHVtbkF1dG9TaXplTW9kdWxlXHJcbiAgICAgICwgQ29sdW1uQXBpTW9kdWxlXHJcbiAgICAgICwgUm93U2VsZWN0aW9uTW9kdWxlXHJcbiAgICAgICwgVmFsaWRhdGlvbk1vZHVsZVxyXG4gICAgXTtcclxuICB9O1xyXG5cclxuICBnZXRHcmlkT3B0aW9ucyhjb21wb25lbnQ6IGFueSwgZm9ybUdyb3VwOiBGb3JtR3JvdXAsIGxhbmd1YWdlOiBzdHJpbmcpOiBHcmlkT3B0aW9ucyB7XHJcbiAgICBjb25zdCBjb2x1bW5EZWZzID0gdGhpcy5nZXRHcmlkQ29sdW1ucyhjb21wb25lbnQsIGZvcm1Hcm91cCwgbGFuZ3VhZ2UpO1xyXG4gICAgY29uc3Qgc2VsZWN0aW9uID0gdGhpcy5nZXRSb3dTZWxlY3Rpb24oY29tcG9uZW50LCBmb3JtR3JvdXApO1xyXG4gICAgY29uc3QgcGFnaW5hdGlvbiA9IHRoaXMuZ2V0R3JpZFBhZ2luYWJsZShjb21wb25lbnQpO1xyXG4gICAgY29uc3QgcGFnZVNpemUgPSB0aGlzLmdldEdyaWRQYWdlU2l6ZShjb21wb25lbnQpO1xyXG4gICAgY29uc3QgdGV4dHMgPSB0aGlzLmdldEdyaWRUZXh0cyhsYW5ndWFnZSk7XHJcbiAgICBjb25zdCB0aGVtZSA9IHRoaXMuZ2V0R3JpZFRoZW1lKCk7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBkZWZhdWx0Q29sRGVmOiB7XHJcbiAgICAgICAgZmxvYXRpbmdGaWx0ZXI6IChjb21wb25lbnQuZmxvYXRpbmdGaWx0ZXIgPT09IHRydWUpLFxyXG4gICAgICAgIGhlYWRlckNsYXNzOiAoY29tcG9uZW50LmZsb2F0aW5nRmlsdGVyID09PSB0cnVlKVxyXG4gICAgICAgICAgPyAnc2hvdy1maWx0ZXInIDogJ2hpZGUtZmlsdGVyJ1xyXG4gICAgICB9LFxyXG4gICAgICBzZWxlY3Rpb25Db2x1bW5EZWY6IHtcclxuICAgICAgICBwaW5uZWQ6ICdsZWZ0J1xyXG4gICAgICB9LFxyXG4gICAgICBkYXRhVHlwZURlZmluaXRpb25zOiB0aGlzLmdldERhdGFUeXBlRGVmaW5pdGlvbnMoKSxcclxuICAgICAgY29sdW1uRGVmczogY29sdW1uRGVmcyxcclxuICAgICAgcm93U2VsZWN0aW9uOiBzZWxlY3Rpb24sXHJcbiAgICAgIHBhZ2luYXRpb246IHBhZ2luYXRpb24sXHJcbiAgICAgIHBhZ2luYXRpb25QYWdlU2l6ZTogcGFnZVNpemUsXHJcbiAgICAgIGNhY2hlQmxvY2tTaXplOiBwYWdlU2l6ZSxcclxuICAgICAgcGFnaW5hdGlvblBhZ2VTaXplU2VsZWN0b3I6IFs1LCAxMCwgMjAsIDUwXSxcclxuICAgICAgbG9jYWxlVGV4dDogdGV4dHMsXHJcbiAgICAgIGVuYWJsZUNlbGxUZXh0U2VsZWN0aW9uOiB0cnVlLFxyXG4gICAgICB0aGVtZTogdGhlbWUsICAgICAgXHJcbiAgICAgIG9uR3JpZFNpemVDaGFuZ2VkOiAocGFyYW1zOiBHcmlkU2l6ZUNoYW5nZWRFdmVudCkgPT4ge1xyXG4gICAgICAgIHBhcmFtcy5hcGkuYXV0b1NpemVDb2x1bW5zKFtcImFjdGlvbnNcIl0pO1xyXG4gICAgICB9LFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIG9uR3JpZFNlbGVjdGlvbkNoYW5nZWQoY29tcG9uZW50OiBhbnksIGZvcm1Hcm91cDogRm9ybUdyb3VwLCBldmVudDogYW55KSB7XHJcbiAgICBpZiAoY29tcG9uZW50LnNlbGVjdGlvbkNoYW5nZWQpIHtcclxuICAgICAgcmV0dXJuIHRoaXMucHJvZ3JhbW1hYmlsaXR5LmV2YWx1YXRlKGZvcm1Hcm91cCwgY29tcG9uZW50LnNlbGVjdGlvbkNoYW5nZWQsIHtcclxuICAgICAgICBjYWNoZWFibGU6IGZhbHNlLFxyXG4gICAgICAgIGV4dGVuZENvbnRleHQ6ICgpID0+ICh7XHJcbiAgICAgICAgICBcImV2ZW50XCI6IHtcclxuICAgICAgICAgICAgc2VsZWN0ZWRSb3dzOiBldmVudC5hcGkuZ2V0U2VsZWN0ZWRSb3dzKClcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgbG9jYWxlKGNvbXBvbmVudDogYW55LCBrZXk6IHN0cmluZywgbGFuZ3VhZ2U6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gbG9jYWxpemUobGFuZ3VhZ2UsIGNvbXBvbmVudCwga2V5KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0R3JpZENvbHVtbnMoY29tcG9uZW50OiBhbnksIGZvcm1Hcm91cDogRm9ybUdyb3VwLCBsYW5ndWFnZTogc3RyaW5nKTogQ29sRGVmW10ge1xyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoY29tcG9uZW50LmNvbHVtbnMpKSB7XHJcbiAgICAgIGNvbnN0IGNvbHVtbnMgPSBjb21wb25lbnQuY29sdW1ucy5tYXAoKGNvbHVtbjogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3QgY29sRGVmOiBDb2xEZWYgPSB7XHJcbiAgICAgICAgICBmaWVsZDogY29sdW1uLmtleSxcclxuICAgICAgICAgIGhlYWRlck5hbWU6IHRoaXMubG9jYWxlKGNvbHVtbiwgJ2xhYmVsJywgbGFuZ3VhZ2UpLFxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5zZXRDZWxsRGF0YVR5cGUoY29sdW1uLCBjb2xEZWYpO1xyXG5cclxuICAgICAgICBjb25zdCBtYXAgPSB0aGlzLmdldE1hcChjb2x1bW4sIGNvbERlZiwgZm9ybUdyb3VwKTtcclxuXHJcbiAgICAgICAgdGhpcy5zZXRDZWxsUmVuZGVyZXIoY29sdW1uLCBjb2xEZWYsIG1hcCk7XHJcbiAgICAgICAgdGhpcy5zZXRSZXNpemFibGUoY29sdW1uLCBjb2xEZWYpO1xyXG4gICAgICAgIHRoaXMuc2V0U29ydGFibGUoY29sdW1uLCBjb2xEZWYpO1xyXG4gICAgICAgIHRoaXMuc2V0RmlsdGVyKGNvbHVtbiwgY29sRGVmLCBtYXApO1xyXG4gICAgICAgIHRoaXMuc2V0RmlsdGVyUGFyYW1zKGNvbHVtbiwgY29sRGVmLCBtYXApO1xyXG4gICAgICAgIHRoaXMuc2V0U3VwcHJlc3NNb3ZhYmxlKGNvbHVtbiwgY29sRGVmKTtcclxuICAgICAgICB0aGlzLnNldEZsZXgoY29sdW1uLCBjb2xEZWYpO1xyXG4gICAgICAgIHRoaXMuc2V0QWxpZ24oY29sdW1uLCBjb2xEZWYpO1xyXG4gICAgICAgIHRoaXMuc2V0UGlubmVkKGNvbHVtbiwgY29sRGVmKTtcclxuICAgICAgICB0aGlzLnNldFdpZHRoKGNvbHVtbiwgY29sRGVmKTtcclxuICAgICAgICB0aGlzLnNldFZhbHVlRm9ybWF0dGVyKGNvbHVtbiwgY29sRGVmLCBtYXApOyAgICAgICAgXHJcbiAgICAgICAgcmV0dXJuIGNvbERlZjtcclxuICAgICAgfSk7XHJcblxyXG5cclxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY29tcG9uZW50LmFjdGlvbnMpICYmIGNvbXBvbmVudC5hY3Rpb25zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICBjb2x1bW5zLnB1c2goe1xyXG4gICAgICAgICAgY29sSWQ6ICdhY3Rpb25zJyxcclxuICAgICAgICAgIGhlYWRlck5hbWU6IHRoaXMubG9jYWxlKFRleHRzLCAnQWN0aW9ucycsIGxhbmd1YWdlKSxcclxuICAgICAgICAgIHJlc2l6YWJsZTogZmFsc2UsXHJcbiAgICAgICAgICBzb3J0YWJsZTogZmFsc2UsXHJcbiAgICAgICAgICBmaWx0ZXI6IGZhbHNlLFxyXG4gICAgICAgICAgY2VsbERhdGFUeXBlOiBmYWxzZSxcclxuICAgICAgICAgIHBpbm5lZDogXCJyaWdodFwiLFxyXG4gICAgICAgICAgY2VsbFJlbmRlcmVyUGFyYW1zOiB7XHJcbiAgICAgICAgICAgIGNvbXBvbmVudDogY29tcG9uZW50LFxyXG4gICAgICAgICAgICBmb3JtR3JvdXA6IGZvcm1Hcm91cFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGNlbGxSZW5kZXJlcjogQWN0aW9uc0NlbGxSZW5kZXJlcixcclxuICAgICAgICAgIHN1cHByZXNzS2V5Ym9hcmRFdmVudDogdGhpcy5uYXZpZ2F0ZUluc2lkZUNlbGwuYmluZCh0aGlzKVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gY29sdW1ucztcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICByZXR1cm4gW107XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldENlbGxEYXRhVHlwZShjb2x1bW46IGFueSwgY29sRGVmOiBDb2xEZWYpIHtcclxuICAgIGlmICh0eXBlb2YgY29sdW1uLmRhdGFUeXBlID09PSBcInN0cmluZ1wiXHJcbiAgICAgICYmIGNvbHVtbi5kYXRhVHlwZS50cmltKCkgIT09IFwiXCJcclxuICAgICAgJiYgY29sdW1uLmRhdGFUeXBlICE9PSBcImF1dG9cIikge1xyXG4gICAgICBjb2xEZWYuY2VsbERhdGFUeXBlID0gY29sdW1uLmRhdGFUeXBlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRDZWxsUmVuZGVyZXIoY29sdW1uOiBhbnksIGNvbERlZjogQ29sRGVmLCBtYXA6IE1hcFR5cGUpIHtcclxuICAgIGlmIChjb2x1bW4uZm9ybWF0ID09PSBcIm9iamVjdFVSTFwiKSB7XHJcbiAgICAgIGNvbERlZi5jZWxsUmVuZGVyZXIgPSBPYmplY3RVUkxSZW5kZXJlckNvbXBvbmVudDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoY29sdW1uLmZvcm1hdCA9PT0gXCJkZWxldGVSb3dcIikge1xyXG4gICAgICBjb2xEZWYuY2VsbFJlbmRlcmVyID0gRGVsZXRlUm93Q2VsbFJlbmRlcmVyO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChjb2xEZWYuY2VsbERhdGFUeXBlID09PSBcImJvb2xlYW5cIiAmJiBtYXApIHtcclxuICAgICAgY29sRGVmLmNlbGxSZW5kZXJlciA9IChwYXJhbXM6IGFueSkgPT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1hdE1hcChwYXJhbXMudmFsdWUsIG1hcCk7IFxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldFJlc2l6YWJsZShjb2x1bW46IGFueSwgY29sRGVmOiBDb2xEZWYgKSB7XHJcbiAgICBjb2xEZWYucmVzaXphYmxlID0gKGNvbHVtbi5yZXNpemUgPT09IHRydWUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRTb3J0YWJsZShjb2x1bW46IGFueSwgY29sRGVmOiBDb2xEZWYpIHtcclxuICAgIGNvbERlZi5zb3J0YWJsZSA9IChjb2x1bW4uc29ydCA9PT0gdHJ1ZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldEZpbHRlcihjb2x1bW46IGFueSwgY29sRGVmOiBDb2xEZWYsIG1hcDogTWFwVHlwZSkge1xyXG4gICAgaWYgKGNvbHVtbi5maWx0ZXIgPT09IHRydWUpIHtcclxuICAgICAgY29sRGVmLmZpbHRlciA9IHRydWU7XHJcbiAgICAgIGlmIChtYXApIHtcclxuICAgICAgICBjb2xEZWYuZmlsdGVyID0gU2V0RmlsdGVyQ29tcG9uZW50O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldEZpbHRlclBhcmFtcyhjb2x1bW46IGFueSwgY29sRGVmOiBDb2xEZWYsIG1hcDogTWFwVHlwZSkge1xyXG5cclxuICAgIGNvbnN0IGZpbHRlclBhcmFtczogYW55ID0ge307XHJcblxyXG4gICAgaWYgKGNvbHVtbi5kYXRhVHlwZSA9PT0gJ3V1aWQnKSB7XHJcbiAgICAgIHRoaXMuc2V0VXVpZEZpbHRlclBhcmFtcyhmaWx0ZXJQYXJhbXMpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoY29sdW1uLmRhdGFUeXBlID09PSAnaW50ZWdlcicpIHtcclxuICAgICAgdGhpcy5zZXRJbnRlZ2VyRmlsdGVyUGFyYW1zKGZpbHRlclBhcmFtcyk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChjb2x1bW4uZGF0YVR5cGUgPT09ICdkYXRlJykge1xyXG4gICAgICB0aGlzLnNldERhdGVGaWx0ZXJQYXJhbXMoZmlsdGVyUGFyYW1zKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGNvbHVtbi5kYXRhVHlwZSA9PT0gJ2Jvb2xlYW4nKSB7XHJcbiAgICAgIHRoaXMuc2V0Qm9vbGVhbkZpbHRlclBhcmFtcyhmaWx0ZXJQYXJhbXMpO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBpZiAobWFwKSB7XHJcbiAgICAgIGZpbHRlclBhcmFtcy5tYXAgPSBtYXA7XHJcbiAgICB9XHJcblxyXG4gICAgY29sRGVmLmZpbHRlclBhcmFtcyA9IGZpbHRlclBhcmFtcztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0VXVpZEZpbHRlclBhcmFtcyhmaWx0ZXJQYXJhbXM6IGFueSkge1xyXG4gICAgZmlsdGVyUGFyYW1zLmZpbHRlck9wdGlvbnMgPSBbJ2VxdWFscycsICdub3RFcXVhbCddO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRJbnRlZ2VyRmlsdGVyUGFyYW1zKGZpbHRlclBhcmFtczogYW55KSB7XHJcbiAgICBmaWx0ZXJQYXJhbXMuYWxsb3dlZENoYXJQYXR0ZXJuID0gJ1xcXFxkJztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0RGF0ZUZpbHRlclBhcmFtcyhmaWx0ZXJQYXJhbXM6IGFueSkge1xyXG4gICAgZmlsdGVyUGFyYW1zLmNvbXBhcmF0b3IgPSAoZmlsdGVyTG9jYWxEYXRlQXRNaWRuaWdodDogRGF0ZSwgY2VsbFZhbHVlOiBzdHJpbmcpID0+IHtcclxuICAgICAgaWYgKCFjZWxsVmFsdWUpIHJldHVybiAtMTtcclxuICAgICAgY29uc3QgY2VsbERhdGUgPSBuZXcgRGF0ZShjZWxsVmFsdWUpO1xyXG4gICAgICBpZiAoaXNOYU4oY2VsbERhdGUuZ2V0VGltZSgpKSkgcmV0dXJuIC0xO1xyXG5cclxuICAgICAgY29uc3QgY2VsbERhdGVOb1RpbWUgPSBuZXcgRGF0ZShjZWxsRGF0ZS5nZXRGdWxsWWVhcigpLCBjZWxsRGF0ZS5nZXRNb250aCgpLCBjZWxsRGF0ZS5nZXREYXRlKCkpO1xyXG5cclxuICAgICAgaWYgKGNlbGxEYXRlTm9UaW1lIDwgZmlsdGVyTG9jYWxEYXRlQXRNaWRuaWdodCkgcmV0dXJuIC0xO1xyXG4gICAgICBpZiAoY2VsbERhdGVOb1RpbWUgPiBmaWx0ZXJMb2NhbERhdGVBdE1pZG5pZ2h0KSByZXR1cm4gMTtcclxuICAgICAgcmV0dXJuIDA7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldEJvb2xlYW5GaWx0ZXJQYXJhbXMoZmlsdGVyUGFyYW1zOiBhbnkpIHtcclxuICAgIGZpbHRlclBhcmFtcy5maWx0ZXJPcHRpb25zID0gW1xyXG4gICAgICB7XHJcbiAgICAgICAgZGlzcGxheUtleTogJ2luY2x1ZGVBbGwnLFxyXG4gICAgICAgIGRpc3BsYXlOYW1lOiBUZXh0cy5DaG9vc2VPbmUsXHJcbiAgICAgICAgbnVtYmVyT2ZJbnB1dHM6IDAsXHJcbiAgICAgICAgcHJlZGljYXRlOiAoW2ZpbHRlcl06IFthbnldLCB2YWx1ZTogYW55KSA9PiB0cnVlXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBkaXNwbGF5S2V5OiAndHJ1ZScsXHJcbiAgICAgICAgZGlzcGxheU5hbWU6IFRleHRzLlRydWUsXHJcbiAgICAgICAgbnVtYmVyT2ZJbnB1dHM6IDAsXHJcbiAgICAgICAgcHJlZGljYXRlOiAoW2ZpbHRlcl06IFthbnldLCB2YWx1ZTogYW55KSA9PiB2YWx1ZSA9PT0gdHJ1ZVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgZGlzcGxheUtleTogJ2ZhbHNlJyxcclxuICAgICAgICBkaXNwbGF5TmFtZTogVGV4dHMuRmFsc2UsXHJcbiAgICAgICAgbnVtYmVyT2ZJbnB1dHM6IDAsXHJcbiAgICAgICAgcHJlZGljYXRlOiAoW2ZpbHRlcl06IFthbnldLCB2YWx1ZTogYW55KSA9PiB2YWx1ZSA9PT0gZmFsc2VcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGRpc3BsYXlLZXk6ICdibGFuaycsXHJcbiAgICAgICAgZGlzcGxheU5hbWU6IFRleHRzLkJsYW5rLFxyXG4gICAgICAgIG51bWJlck9mSW5wdXRzOiAwLFxyXG4gICAgICAgIHByZWRpY2F0ZTogKFtmaWx0ZXJdOiBbYW55XSwgdmFsdWU6IGFueSkgPT4gdmFsdWUgPT09IG51bGxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGRpc3BsYXlLZXk6ICdub3RCbGFuaycsXHJcbiAgICAgICAgZGlzcGxheU5hbWU6IFRleHRzLk5vdEJsYW5rLFxyXG4gICAgICAgIG51bWJlck9mSW5wdXRzOiAwLFxyXG4gICAgICAgIHByZWRpY2F0ZTogKFtmaWx0ZXJdOiBbYW55XSwgdmFsdWU6IGFueSkgPT4gdmFsdWUgIT09IG51bGxcclxuICAgICAgfSxcclxuICAgIF07XHJcbiAgICBmaWx0ZXJQYXJhbXMuc3VwcHJlc3NBbmRPckNvbmRpdGlvbiA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldFN1cHByZXNzTW92YWJsZShjb2x1bW46IGFueSwgY29sRGVmOiBDb2xEZWYpIHtcclxuICAgIGlmICghKGNvbHVtbi5tb3ZlID09PSB0cnVlKSkgeyBcclxuICAgICAgY29sRGVmLnN1cHByZXNzTW92YWJsZSA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldEZsZXgoY29sdW1uOiBhbnksIGNvbERlZjogQ29sRGVmKSB7XHJcbiAgICBpZiAoY29sdW1uLmZsZXggPT09IHRydWUpIHsgXHJcbiAgICAgIGNvbERlZi5mbGV4ID0gMTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0QWxpZ24oY29sdW1uOiBhbnksIGNvbERlZjogQ29sRGVmKSB7XHJcbiAgICBpZiAoY29sdW1uLmFsaWduID09PSBcImxlZnRcIikge1xyXG4gICAgICBjb2xEZWYuY2VsbFN0eWxlID0geyB0ZXh0QWxpZ246ICdsZWZ0JyB9O1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoY29sdW1uLmFsaWduID09PSBcImNlbnRlclwiKSB7XHJcbiAgICAgIGNvbERlZi5jZWxsU3R5bGUgPSB7IHRleHRBbGlnbjogJ2NlbnRlcicgfTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGNvbHVtbi5hbGlnbiA9PT0gXCJyaWdodFwiKSB7IFxyXG4gICAgICBjb2xEZWYuY2VsbFN0eWxlID0geyB0ZXh0QWxpZ246ICdyaWdodCcgfTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0UGlubmVkKGNvbHVtbjogYW55LCBjb2xEZWY6IENvbERlZikge1xyXG4gICAgaWYgKHR5cGVvZiBjb2x1bW4ucGlubmVkID09PSBcInN0cmluZ1wiKSB7IFxyXG4gICAgICBjb2xEZWYucGlubmVkID0gY29sdW1uLnBpbm5lZDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0V2lkdGgoY29sdW1uOiBhbnksIGNvbERlZjogQ29sRGVmKSB7XHJcbiAgICBpZiAodHlwZW9mIGNvbHVtbi53aWR0aCA9PT0gXCJudW1iZXJcIikgeyBcclxuICAgICAgY29sRGVmLndpZHRoID0gY29sdW1uLndpZHRoO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0eXBlb2YgY29sdW1uLm1pbldpZHRoID09PSBcIm51bWJlclwiKSB7IFxyXG4gICAgICBjb2xEZWYubWluV2lkdGggPSBjb2x1bW4ubWluV2lkdGg7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHR5cGVvZiBjb2x1bW4ubWF4V2lkdGggPT09IFwibnVtYmVyXCIpIHsgXHJcbiAgICAgIGNvbERlZi5tYXhXaWR0aCA9IGNvbHVtbi5tYXhXaWR0aDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0VmFsdWVGb3JtYXR0ZXIoY29sdW1uOiBhbnksIGNvbERlZjogQ29sRGVmLCBtYXA6IE1hcFR5cGUpIHtcclxuICAgIGlmIChtYXApIHtcclxuICAgICAgY29sRGVmLnZhbHVlRm9ybWF0dGVyID0gKHBhcmFtcykgPT4gdGhpcy5mb3JtYXRNYXAocGFyYW1zLnZhbHVlLCBtYXApOyAgICAgIFxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRSb3dTZWxlY3Rpb24oY29tcG9uZW50OiBhbnksIGZvcm1Hcm91cDogRm9ybUdyb3VwKTogUm93U2VsZWN0aW9uT3B0aW9ucyB8IHVuZGVmaW5lZCAge1xyXG4gICAgaWYgKGNvbXBvbmVudC5zZWxlY3Rpb24gPT09IFwic2luZ2xlUm93XCIpIHtcclxuICAgICAgcmV0dXJuIHsgbW9kZTogXCJzaW5nbGVSb3dcIiB9O1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoY29tcG9uZW50LnNlbGVjdGlvbiA9PT0gXCJtdWx0aVJvd1wiKSB7XHJcbiAgICAgIGNvbnN0IG9wdGlvbnM6IFJvd1NlbGVjdGlvbk9wdGlvbnMgPSB7XHJcbiAgICAgICAgbW9kZTogXCJtdWx0aVJvd1wiLFxyXG4gICAgICAgIHNlbGVjdEFsbDogJ2ZpbHRlcmVkJyxcclxuICAgICAgICBoaWRlRGlzYWJsZWRDaGVja2JveGVzOiB0cnVlXHJcbiAgICAgIH07XHJcblxyXG4gICAgICBpZiAoY29tcG9uZW50LmlzU2VsZWN0YWJsZSkge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAuLi5vcHRpb25zLFxyXG4gICAgICAgICAgaXNSb3dTZWxlY3RhYmxlOiAocm93Tm9kZSkgPT4gdGhpcy5vblJvd1NlbGVjdGFibGUoY29tcG9uZW50LCBmb3JtR3JvdXAsIHJvd05vZGUuZGF0YSlcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIG9wdGlvbnM7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvblJvd1NlbGVjdGFibGUoY29tcG9uZW50OiBhbnksIGZvcm1Hcm91cDogRm9ybUdyb3VwLCBkYXRhOiBhbnkpIDogYm9vbGVhbiB7XHJcbiAgICBpZiAoIWRhdGEpXHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICBjb25zdCByZXN1bHQgPSB0aGlzLnByb2dyYW1tYWJpbGl0eS5ldmFsdWF0ZShmb3JtR3JvdXAsIGNvbXBvbmVudC5pc1NlbGVjdGFibGUsIHtcclxuICAgICAgY2FjaGVhYmxlOiBmYWxzZSxcclxuICAgICAgZXh0ZW5kQ29udGV4dDogKCkgPT4gKHtcclxuICAgICAgICBcImV2ZW50XCI6IHtcclxuICAgICAgICAgIGRhdGE6IGRhdGFcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gcmVzdWx0ID09PSB0cnVlOyBcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0R3JpZFBhZ2luYWJsZShjb21wb25lbnQ6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuICh0eXBlb2YgY29tcG9uZW50LnJvd0NvdW50ID09PSAnbnVtYmVyJyAmJiBjb21wb25lbnQucm93Q291bnQgPiAwKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0R3JpZFBhZ2VTaXplKGNvbXBvbmVudDogYW55KSB7XHJcbiAgICBpZiAodHlwZW9mIGNvbXBvbmVudC5yb3dDb3VudCA9PT0gJ251bWJlcicpIHtcclxuICAgICAgcmV0dXJuIGNvbXBvbmVudC5yb3dDb3VudDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0R3JpZFRleHRzKGxhbmd1YWdlOiBzdHJpbmcpOiBhbnkge1xyXG4gICAgaWYgKGxhbmd1YWdlID09PSAnaXQnKSB7XHJcbiAgICAgIHJldHVybiBBR19HUklEX0xPQ0FMRV9JVDtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGxhbmd1YWdlID09PSAnZW4nKSB7XHJcbiAgICAgIHJldHVybiBBR19HUklEX0xPQ0FMRV9FTjtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGxhbmd1YWdlID09PSAnZGUnKSB7XHJcbiAgICAgIHJldHVybiBBR19HUklEX0xPQ0FMRV9ERTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGxhbmd1YWdlID09PSAnZnInKSB7XHJcbiAgICAgIHJldHVybiBBR19HUklEX0xPQ0FMRV9GUjtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGxhbmd1YWdlID09PSAnZXMnKSB7XHJcbiAgICAgIHJldHVybiBBR19HUklEX0xPQ0FMRV9FUztcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGxhbmd1YWdlID09PSAncHQnKSB7XHJcbiAgICAgIHJldHVybiBBR19HUklEX0xPQ0FMRV9QVDtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGxhbmd1YWdlID09PSAnJykge1xyXG4gICAgICByZXR1cm4gQUdfR1JJRF9MT0NBTEVfSVQ7IC8vIG5ldXRyYWxcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICByZXR1cm4gQUdfR1JJRF9MT0NBTEVfRU47IC8vIGZhbGxiYWNrXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEdyaWRUaGVtZSgpIHtcclxuICAgIHJldHVybiB0aGVtZVF1YXJ0elxyXG4gICAgICAud2l0aFBhcnQoaWNvblNldEFscGluZSlcclxuICAgICAgLndpdGhQYXJhbXMoe1xyXG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogXCIjRkFGQUZBXCIsXHJcbiAgICAgICAgYm9yZGVyQ29sb3I6IFwiI0Q5RTRGN1wiLFxyXG4gICAgICAgIGJyb3dzZXJDb2xvclNjaGVtZTogXCJsaWdodFwiLFxyXG4gICAgICAgIGNlbGxUZXh0Q29sb3I6IFwiIzAwMTIxQVwiLFxyXG4gICAgICAgIGNvbHVtbkJvcmRlcjogdHJ1ZSxcclxuICAgICAgICBmb250RmFtaWx5OiBcImluaGVyaXRcIixcclxuICAgICAgICBmb250U2l6ZTogMTYsXHJcbiAgICAgICAgaGVhZGVyQmFja2dyb3VuZENvbG9yOiBcIiMwMDI0NjBcIixcclxuICAgICAgICBoZWFkZXJDb2x1bW5Cb3JkZXI6IHRydWUsXHJcbiAgICAgICAgaGVhZGVyQ29sdW1uUmVzaXplSGFuZGxlQ29sb3I6IFwiI0YyRjZGQ1wiLFxyXG4gICAgICAgIGhlYWRlckNvbHVtblJlc2l6ZUhhbmRsZVdpZHRoOiAyLFxyXG4gICAgICAgIGhlYWRlckZvbnRTaXplOiAxNixcclxuICAgICAgICBoZWFkZXJGb250V2VpZ2h0OiA2MDAsXHJcbiAgICAgICAgaGVhZGVyUm93Qm9yZGVyOiBmYWxzZSxcclxuICAgICAgICBoZWFkZXJUZXh0Q29sb3I6IFwiI0YyRjZGQ1wiLFxyXG4gICAgICAgIHJvd0JvcmRlcjogdHJ1ZVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0RGF0YVR5cGVEZWZpbml0aW9ucygpOiB7IFtjZWxsRGF0YVR5cGU6IHN0cmluZ106IERhdGFUeXBlRGVmaW5pdGlvbjxhbnk+OyB9IHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIHV1aWQ6IHtcclxuICAgICAgICBiYXNlRGF0YVR5cGU6ICd0ZXh0JyxcclxuICAgICAgICBleHRlbmRzRGF0YVR5cGU6ICd0ZXh0J1xyXG4gICAgICB9LFxyXG4gICAgICBkYXRlOiB7XHJcbiAgICAgICAgYmFzZURhdGFUeXBlOiAnZGF0ZVN0cmluZycsXHJcbiAgICAgICAgZXh0ZW5kc0RhdGFUeXBlOiAnZGF0ZVN0cmluZycsXHJcbiAgICAgICAgZGF0ZVBhcnNlcjogKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpID0+IHtcclxuICAgICAgICAgIHJldHVybiB2YWx1ZSA/IG5ldyBEYXRlKHZhbHVlKSA6IHVuZGVmaW5lZDtcclxuICAgICAgICB9LFxyXG4gICAgICAgIHZhbHVlRm9ybWF0dGVyOiBwYXJhbXMgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuZm9ybWF0dGVyLmZvcm1hdERhdGUocGFyYW1zLnZhbHVlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIGRhdGVUaW1lOiB7XHJcbiAgICAgICAgYmFzZURhdGFUeXBlOiAnZGF0ZVN0cmluZycsXHJcbiAgICAgICAgZXh0ZW5kc0RhdGFUeXBlOiAnZGF0ZVN0cmluZycsXHJcbiAgICAgICAgZGF0ZVBhcnNlcjogKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpID0+IHtcclxuICAgICAgICAgIHJldHVybiB2YWx1ZSA/IG5ldyBEYXRlKHZhbHVlKSA6IHVuZGVmaW5lZDtcclxuICAgICAgICB9LFxyXG4gICAgICAgIHZhbHVlRm9ybWF0dGVyOiBwYXJhbXMgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuZm9ybWF0dGVyLmZvcm1hdERhdGVUaW1lKHBhcmFtcy52YWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBjdXJyZW5jeToge1xyXG4gICAgICAgIGV4dGVuZHNEYXRhVHlwZTogJ251bWJlcicsXHJcbiAgICAgICAgYmFzZURhdGFUeXBlOiAnbnVtYmVyJyxcclxuICAgICAgICB2YWx1ZUZvcm1hdHRlcjogcGFyYW1zID0+IHBhcmFtcy52YWx1ZSA9PSBudWxsXHJcbiAgICAgICAgICA/ICcnXHJcbiAgICAgICAgICA6IHRoaXMuZm9ybWF0dGVyLmZvcm1hdEN1cnJlbmN5KHBhcmFtcy52YWx1ZSlcclxuICAgICAgfSxcclxuICAgICAgaW50ZWdlcjoge1xyXG4gICAgICAgIGV4dGVuZHNEYXRhVHlwZTogJ251bWJlcicsXHJcbiAgICAgICAgYmFzZURhdGFUeXBlOiAnbnVtYmVyJyxcclxuICAgICAgICB2YWx1ZUZvcm1hdHRlcjogcGFyYW1zID0+IHBhcmFtcy52YWx1ZSA9PSBudWxsXHJcbiAgICAgICAgICA/ICcnXHJcbiAgICAgICAgICA6IHRoaXMuZm9ybWF0dGVyLmZvcm1hdEludGVnZXIocGFyYW1zLnZhbHVlKVxyXG4gICAgICB9LFxyXG4gICAgICBwZXJjZW50YWdlOiB7XHJcbiAgICAgICAgZXh0ZW5kc0RhdGFUeXBlOiAnbnVtYmVyJyxcclxuICAgICAgICBiYXNlRGF0YVR5cGU6ICdudW1iZXInLFxyXG4gICAgICAgIHZhbHVlRm9ybWF0dGVyOiBwYXJhbXMgPT4gcGFyYW1zLnZhbHVlID09IG51bGxcclxuICAgICAgICAgID8gJydcclxuICAgICAgICAgIDogYCR7TWF0aC5yb3VuZChwYXJhbXMudmFsdWUgKiAxMDApfSVgLFxyXG4gICAgICB9LFxyXG4gICAgICBmbGFnczoge1xyXG4gICAgICAgIGV4dGVuZHNEYXRhVHlwZTogJ251bWJlcicsXHJcbiAgICAgICAgYmFzZURhdGFUeXBlOiAnbnVtYmVyJ1xyXG4gICAgICB9ICAgICAgXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRNYXAoY29sdW1uOiBhbnksIGNvbERlZjogQ29sRGVmLCBmb3JtR3JvdXA6IEZvcm1Hcm91cCk6IE1hcFR5cGUge1xyXG5cclxuICAgIGNvbnN0IGFsbG93ZWQgPSAoY29sRGVmLmNlbGxEYXRhVHlwZSA9PT0gXCJib29sZWFuXCJcclxuICAgICAgfHwgY29sRGVmLmNlbGxEYXRhVHlwZSA9PT0gXCJ0ZXh0XCJcclxuICAgICAgfHwgY29sRGVmLmNlbGxEYXRhVHlwZSA9PT0gXCJudW1iZXJcIlxyXG4gICAgICB8fCBjb2xEZWYuY2VsbERhdGFUeXBlID09PSBcImZsYWdzXCIpO1xyXG5cclxuICAgIGlmIChhbGxvd2VkICYmIGNvbHVtbi5tYXApIHtcclxuICAgICAgY29uc3QgbWFwID0gdGhpcy5wcm9ncmFtbWFiaWxpdHkuZXZhbHVhdGUoZm9ybUdyb3VwLCBjb2x1bW4ubWFwVmFsdWVzKTtcclxuXHJcbiAgICAgIGNvbnN0IHZhbGlkID0gaXNSZWNvcmQoXHJcbiAgICAgICAgbWFwLFxyXG4gICAgICAgIGtleSA9PiB0eXBlb2Yga2V5ID09PSAnc3RyaW5nJyB8fCB0eXBlb2Yga2V5ID09PSAnbnVtYmVyJyxcclxuICAgICAgICB2YWwgPT4gdHlwZW9mIHZhbCA9PT0gJ3N0cmluZydcclxuICAgICAgKTtcclxuXHJcbiAgICAgIGlmICghdmFsaWQpXHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcblxyXG4gICAgICBpZiAoY29sRGVmLmNlbGxEYXRhVHlwZSA9PT0gXCJmbGFnc1wiKSB7XHJcbiAgICAgICAgKG1hcCBhcyBhbnkpW2dldExhYmVsU3ltYm9sXSA9IChrZXk6IGFueSkgPT4gdGhpcy5mb3JtYXRGbGFncyhrZXksIG1hcCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiBtYXA7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZvcm1hdE1hcCh2YWx1ZTogYW55LCBtYXA6IE1hcFR5cGUpXHJcbiAge1xyXG4gICAgaWYgKHZhbHVlID09IG51bGwpIHtcclxuICAgICAgcmV0dXJuICcnO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChtYXApIHtcclxuICAgICAgdmFyIHJlc3VsdCA9IG1hcFt2YWx1ZV07XHJcblxyXG4gICAgICBpZiAocmVzdWx0ID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICBjb25zdCBsYWJlbGVkID0gaXNMYWJlbGVkUmVjb3JkKFxyXG4gICAgICAgICAgbWFwLFxyXG4gICAgICAgICAga2V5ID0+IHR5cGVvZiBrZXkgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiBrZXkgPT09ICdudW1iZXInLFxyXG4gICAgICAgICAgdmFsID0+IHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnLFxyXG4gICAgICAgICAgZ2V0TGFiZWxTeW1ib2xcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICBpZiAobGFiZWxlZCkge1xyXG4gICAgICAgICAgcmVzdWx0ID0gbWFwW2dldExhYmVsU3ltYm9sXSh2YWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIFxyXG4gICAgICByZXR1cm4gcmVzdWx0ID8/IHZhbHVlLnRvU3RyaW5nKCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZvcm1hdEZsYWdzKHZhbHVlOiBhbnksIG1hcDogTWFwVHlwZSkge1xyXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgJiZcclxuICAgICAgaXNSZWNvcmQobWFwLCBpc051bWVyaWNLZXksIHZhbCA9PiB0eXBlb2YgdmFsID09PSAnc3RyaW5nJylcclxuICAgICkge1xyXG4gICAgICBpZiAodmFsdWUgPT0gMCkge1xyXG4gICAgICAgIHJldHVybiBtYXBbMF0gPz8gXCIwXCI7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IGF2YWlsYWJsZUZsYWdzID0gT2JqZWN0LmtleXMobWFwKVxyXG4gICAgICAgIC5tYXAoTnVtYmVyKVxyXG4gICAgICAgIC5maWx0ZXIoZmxhZyA9PiBmbGFnICE9PSAwKTtcclxuXHJcbiAgICAgIGNvbnN0IGZsYWdzID0gYXZhaWxhYmxlRmxhZ3MuZmlsdGVyKGZsYWcgPT4gKHZhbHVlICYgZmxhZykgPT09IGZsYWcpO1xyXG5cclxuICAgICAgY29uc3Qgc3VtRmxhZ3MgPSBmbGFncy5yZWR1Y2UoKHN1bSwgZikgPT4gc3VtIHwgZiwgMCk7XHJcblxyXG4gICAgICBpZiAoKHZhbHVlICYgc3VtRmxhZ3MpICE9PSB2YWx1ZSkge1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gZmxhZ3NcclxuICAgICAgICAubWFwKGZsYWcgPT4gbWFwW2ZsYWddKVxyXG4gICAgICAgIC5maWx0ZXIoKGxhYmVsKTogbGFiZWwgaXMgc3RyaW5nID0+ICEhbGFiZWwpXHJcbiAgICAgICAgLmpvaW4oJywgJyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgbmF2aWdhdGVJbnNpZGVDZWxsKHsgZXZlbnQgfTogU3VwcHJlc3NLZXlib2FyZEV2ZW50UGFyYW1zPGFueT4pIHtcclxuICAgIGNvbnN0IEdSSURfQ0VMTF9DTEFTU05BTUUgPSBcImFnLWNlbGxcIjtcclxuICAgIGNvbnN0IHsga2V5LCBzaGlmdEtleSB9ID0gZXZlbnQ7XHJcbiAgICBjb25zdCBwYXRoID0gdGhpcy5nZXRFdmVudFBhdGgoZXZlbnQpO1xyXG4gICAgY29uc3QgaXNUYWJGb3J3YXJkID0ga2V5ID09PSBcIlRhYlwiICYmIHNoaWZ0S2V5ID09PSBmYWxzZTtcclxuICAgIGNvbnN0IGlzVGFiQmFja3dhcmQgPSBrZXkgPT09IFwiVGFiXCIgJiYgc2hpZnRLZXkgPT09IHRydWU7XHJcbiAgICBsZXQgc3VwcHJlc3NFdmVudCA9IGZhbHNlO1xyXG4gICAgLy8gSGFuZGxlIGNlbGwgY2hpbGRyZW4gdGFiYmluZ1xyXG4gICAgaWYgKGlzVGFiRm9yd2FyZCB8fCBpc1RhYkJhY2t3YXJkKSB7XHJcbiAgICAgIGNvbnN0IGVHcmlkQ2VsbCA9IHBhdGguZmluZCgoZWwpID0+IHtcclxuICAgICAgICBpZiAoZWwuY2xhc3NMaXN0ID09PSB1bmRlZmluZWQpIHJldHVybiBmYWxzZTtcclxuICAgICAgICByZXR1cm4gZWwuY2xhc3NMaXN0LmNvbnRhaW5zKEdSSURfQ0VMTF9DTEFTU05BTUUpO1xyXG4gICAgICB9KTtcclxuICAgICAgaWYgKCFlR3JpZENlbGwpIHtcclxuICAgICAgICByZXR1cm4gc3VwcHJlc3NFdmVudDtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBmb2N1c2FibGVDaGlsZHJlbkVsZW1lbnRzID0gZ2V0Rm9jdXNhYmxlcyhlR3JpZENlbGwpO1xyXG4gICAgICBjb25zdCBsYXN0Q2VsbENoaWxkRWwgPVxyXG4gICAgICAgIGZvY3VzYWJsZUNoaWxkcmVuRWxlbWVudHNbZm9jdXNhYmxlQ2hpbGRyZW5FbGVtZW50cy5sZW5ndGggLSAxXTtcclxuICAgICAgY29uc3QgZmlyc3RDZWxsQ2hpbGRFbCA9IGZvY3VzYWJsZUNoaWxkcmVuRWxlbWVudHNbMF07XHJcbiAgICAgIC8vIFN1cHByZXNzIGtleWJvYXJkIGV2ZW50IGlmIHRhYmJpbmcgZm9yd2FyZCB3aXRoaW4gdGhlIGNlbGwgYW5kIHRoZSBjdXJyZW50IGZvY3VzZWQgZWxlbWVudCBpcyBub3QgdGhlIGxhc3QgY2hpbGRcclxuICAgICAgaWYgKGZvY3VzYWJsZUNoaWxkcmVuRWxlbWVudHMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9IGZvY3VzYWJsZUNoaWxkcmVuRWxlbWVudHMuaW5kZXhPZihcclxuICAgICAgICBkb2N1bWVudC5hY3RpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50LFxyXG4gICAgICApO1xyXG4gICAgICBpZiAoaXNUYWJGb3J3YXJkKSB7XHJcbiAgICAgICAgY29uc3QgaXNMYXN0Q2hpbGRGb2N1c2VkID1cclxuICAgICAgICAgIGxhc3RDZWxsQ2hpbGRFbCAmJiBkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09PSBsYXN0Q2VsbENoaWxkRWw7XHJcbiAgICAgICAgaWYgKCFpc0xhc3RDaGlsZEZvY3VzZWQpIHtcclxuICAgICAgICAgIHN1cHByZXNzRXZlbnQgPSB0cnVlO1xyXG4gICAgICAgICAgaWYgKGN1cnJlbnRJbmRleCAhPT0gLTEgfHwgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PT0gZUdyaWRDZWxsKSB7XHJcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgIGZvY3VzYWJsZUNoaWxkcmVuRWxlbWVudHNbY3VycmVudEluZGV4ICsgMV0uZm9jdXMoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgLy8gU3VwcHJlc3Mga2V5Ym9hcmQgZXZlbnQgaWYgdGFiYmluZyBiYWNrd2FyZHMgd2l0aGluIHRoZSBjZWxsLCBhbmQgdGhlIGN1cnJlbnQgZm9jdXNlZCBlbGVtZW50IGlzIG5vdCB0aGUgZmlyc3QgY2hpbGRcclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgY29uc3QgY2VsbEhhc0ZvY3VzZWRDaGlsZHJlbiA9XHJcbiAgICAgICAgICBlR3JpZENlbGwuY29udGFpbnMoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCkgJiZcclxuICAgICAgICAgIGVHcmlkQ2VsbCAhPT0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtcclxuICAgICAgICAvLyBNYW51YWxseSBzZXQgZm9jdXMgdG8gdGhlIGxhc3QgY2hpbGQgZWxlbWVudCBpZiBjZWxsIGRvZXNuJ3QgaGF2ZSBmb2N1c2VkIGNoaWxkcmVuXHJcbiAgICAgICAgaWYgKCFjZWxsSGFzRm9jdXNlZENoaWxkcmVuKSB7XHJcbiAgICAgICAgICBsYXN0Q2VsbENoaWxkRWwuZm9jdXMoKTtcclxuICAgICAgICAgIC8vIENhbmNlbCBrZXlib2FyZCBwcmVzcywgc28gdGhhdCBpdCBkb2Vzbid0IGZvY3VzIG9uIHRoZSBsYXN0IGNoaWxkIGFuZCB0aGVuIHBhc3MgdGhyb3VnaCB0aGUga2V5Ym9hcmQgcHJlc3MgdG9cclxuICAgICAgICAgIC8vIG1vdmUgdG8gdGhlIDJuZCBsYXN0IGNoaWxkIGVsZW1lbnRcclxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGlzRmlyc3RDaGlsZEZvY3VzZWQgPVxyXG4gICAgICAgICAgZmlyc3RDZWxsQ2hpbGRFbCAmJiBkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09PSBmaXJzdENlbGxDaGlsZEVsO1xyXG4gICAgICAgIGlmICghaXNGaXJzdENoaWxkRm9jdXNlZCkge1xyXG4gICAgICAgICAgc3VwcHJlc3NFdmVudCA9IHRydWU7XHJcbiAgICAgICAgICBpZiAoY3VycmVudEluZGV4ICE9PSAtMSB8fCBkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09PSBlR3JpZENlbGwpIHtcclxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgZm9jdXNhYmxlQ2hpbGRyZW5FbGVtZW50c1tjdXJyZW50SW5kZXggLSAxXS5mb2N1cygpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHN1cHByZXNzRXZlbnQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEV2ZW50UGF0aChldmVudDogRXZlbnQpOiBIVE1MRWxlbWVudFtdIHtcclxuICAgIGNvbnN0IHBhdGg6IEhUTUxFbGVtZW50W10gPSBbXTtcclxuICAgIGxldCBjdXJyZW50VGFyZ2V0OiBhbnkgPSBldmVudC50YXJnZXQ7XHJcbiAgICB3aGlsZSAoY3VycmVudFRhcmdldCkge1xyXG4gICAgICBwYXRoLnB1c2goY3VycmVudFRhcmdldCk7XHJcbiAgICAgIGN1cnJlbnRUYXJnZXQgPSBjdXJyZW50VGFyZ2V0LnBhcmVudEVsZW1lbnQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcGF0aDtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -96,6 +96,11 @@ export class ProgrammabilityService {
|
|
|
96
96
|
}
|
|
97
97
|
return null;
|
|
98
98
|
}
|
|
99
|
+
invalidate(value) {
|
|
100
|
+
if (this.isExpression(value)) {
|
|
101
|
+
this.weakService.invalidate(this, this.getExpression(value));
|
|
102
|
+
}
|
|
103
|
+
}
|
|
99
104
|
cacheable = true;
|
|
100
105
|
evalUnaryTest(formGroup, expression, input) {
|
|
101
106
|
try {
|
|
@@ -245,4 +250,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
245
250
|
}] }, { type: i7.ScopeService, decorators: [{
|
|
246
251
|
type: Optional
|
|
247
252
|
}] }] });
|
|
248
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3JhbW1hYmlsaXR5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2lyaW8vc3JjL2xpYi9zZXJ2aWNlcy9wcm9ncmFtbWFiaWxpdHkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFhLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRSxPQUFPLEVBQW1CLFNBQVMsRUFBYSxNQUFNLGdCQUFnQixDQUFDO0FBUXZFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7O0FBRzFDLE1BQU0sT0FBTyxzQkFBc0I7SUFFYjtJQUNSO0lBQ0E7SUFDQTtJQUNBO0lBQ1k7SUFDQTtJQU54QixZQUFvQixXQUF3QixFQUNoQyxXQUF3QixFQUN4QixZQUEwQixFQUMxQixhQUE0QixFQUM1QixlQUFnQyxFQUNwQixRQUF5QixFQUN6QixLQUFtQjtRQU52QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUNoQyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDcEIsYUFBUSxHQUFSLFFBQVEsQ0FBaUI7UUFDekIsVUFBSyxHQUFMLEtBQUssQ0FBYztRQUd6QyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7SUFDM0QsQ0FBQztJQUVnQixtQkFBbUIsQ0FBc0I7SUFFbEQsUUFBUSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFFdkMsV0FBVztRQUNULElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFD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QUssTUFBTSxVQUFVLElBQUksWUFBWSxFQUFFLENBQUM7WUFDdEMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7Z0JBQzlCLElBQUksVUFBVSxHQUEyQixTQUFTLENBQUM7Z0JBQ25ELElBQUksV0FBVyxHQUFHLFVBQVUsQ0FBQztnQkFFN0IsT0FBTyxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxXQUFXLENBQUMsQ0FBQyxDQUFDLEtBQUssVUFBVSxFQUFFLENBQUM7b0JBQy9ELElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTTt3QkFDcEIsTUFBTTtvQkFDUixVQUFVLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQztvQkFDL0IsV0FBVyxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3JDLENBQUM7Z0JBRUQsSUFBSSxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxVQUFVLEVBQUUsQ0FBQztvQkFDekMsTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztvQkFDNUMsSUFBSSxPQUFPLEVBQUUsQ0FBQzt3QkFDWixTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7b0JBQ3JCLENBQUM7Z0JBQ0gsQ0FBQztZQUNILENBQUM7aUJBQU0sQ0FBQztnQkFDTixNQUFNLE9BQU8sR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUMxQyxJQUFJLE9BQU8sRUFBRSxDQUFDO29CQUNaLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDckIsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQzt3R0F0UVUsc0JBQXNCOzRHQUF0QixzQkFBc0I7OzRGQUF0QixzQkFBc0I7a0JBRGxDLFVBQVU7OzBCQVFKLFFBQVE7OzBCQUNSLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBPbkRlc3Ryb3ksIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUFycmF5LCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEZlZWxTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZmVlbC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU2NvcGVTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvc2NvcGUuc2VydmljZSc7XHJcbmltcG9ydCB7IFJlZ2lzdGVyU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3JlZ2lzdGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy90b2FzdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRnVuY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZnVuY3Rpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IERpYWxvZ1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9kaWFsb2cuc2VydmljZSc7XHJcbmltcG9ydCB7IFdlYWtTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvd2Vhay5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVG9Qcm94eSB9IGZyb20gJy4uL3V0aWxzL2Z1bmN0aW9ucyc7XHJcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gXCJyeGpzXCI7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBQcm9ncmFtbWFiaWxpdHlTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBmZWVsU2VydmljZTogRmVlbFNlcnZpY2VcclxuICAgICwgcHJpdmF0ZSB3ZWFrU2VydmljZTogV2Vha1NlcnZpY2VcclxuICAgICwgcHJpdmF0ZSB0b2FzdFNlcnZpY2U6IFRvYXN0U2VydmljZVxyXG4gICAgLCBwcml2YXRlIGRpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2VcclxuICAgICwgcHJpdmF0ZSBmdW5jdGlvblNlcnZpY2U6IEZ1bmN0aW9uU2VydmljZVxyXG4gICAgLCBAT3B0aW9uYWwoKSBwcml2YXRlIHJlZ2lzdGVyOiBSZWdpc3RlclNlcnZpY2VcclxuICAgICwgQE9wdGlvbmFsKCkgcHJpdmF0ZSBzY29wZTogU2NvcGVTZXJ2aWNlXHJcbiAgKSB7XHJcblxyXG4gICAgdGhpcy5wcmVkZWZpbmVkRnVuY3Rpb25zID0gdGhpcy5nZXRQcmVkZWZpbmVkRnVuY3Rpb25zKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IHByZWRlZmluZWRGdW5jdGlvbnM6IFJlY29yZDxzdHJpbmcsIGFueT47XHJcblxyXG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xyXG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gIH1cclxuXHJcbiAgaXNFeHByZXNzaW9uKHRleHQ6IHN0cmluZyB8IG51bGwpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0ZXh0ICE9IG51bGwgJiYgdGV4dC5zdGFydHNXaXRoKFwiPVwiKTtcclxuICB9O1xyXG5cclxuICBnZXRFeHByZXNzaW9uKHRleHQ6IHN0cmluZyB8IG51bGwpOiBzdHJpbmcge1xyXG4gICAgaWYgKHRoaXMuaXNFeHByZXNzaW9uKHRleHQpKVxyXG4gICAgICByZXR1cm4gdGV4dCEuc3Vic3RyaW5nKDEpO1xyXG4gICAgcmV0dXJuIFwiXCI7XHJcbiAgfTtcclxuXHJcbiAgZXZhbHVhdGVTdHJpbmcoZm9ybUdyb3VwOiBGb3JtR3JvdXAsIHZhbHVlOiBzdHJpbmcgfCBudWxsKTogc3RyaW5nIHtcclxuICAgIGlmICh0aGlzLmlzRXhwcmVzc2lvbih2YWx1ZSkpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZXZhbEV4cHJlc3Npb24oZm9ybUdyb3VwLCB0aGlzLmdldEV4cHJlc3Npb24odmFsdWUpKSBhcyBzdHJpbmc7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdmFsdWUgPz8gXCJcIjtcclxuICB9XHJcblxyXG4gIGV2YWx1YXRlQm9vbGVhbihmb3JtR3JvdXA6IEZvcm1Hcm91cCwgdmFsdWU6IGJvb2xlYW4gfCBzdHJpbmcgfCBudWxsLCBvcHRpb25zOiBFdmFsdWF0ZU9wdGlvbnMgPSB7fSk6IGJvb2xlYW4gfCBudWxsIHtcclxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdib29sZWFuJykge1xyXG4gICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgIGNvbnN0IHN0clZhbHVlOiBzdHJpbmcgPSB2YWx1ZTtcclxuICAgICAgaWYgKHRoaXMuaXNFeHByZXNzaW9uKHN0clZhbHVlKSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmV2YWxFeHByZXNzaW9uKGZvcm1Hcm91cCwgdGhpcy5nZXRFeHByZXNzaW9uKHN0clZhbHVlKSwgb3B0aW9ucykgYXMgYm9vbGVhbjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICBldmFsdWF0ZU51bWJlcihmb3JtR3JvdXA6IEZvcm1Hcm91cCwgdmFsdWU6IG51bWJlciB8IHN0cmluZyB8IG51bGwpOiBudW1iZXIgfCBudWxsIHtcclxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XHJcbiAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgY29uc3Qgc3RyVmFsdWU6IHN0cmluZyA9IHZhbHVlO1xyXG4gICAgICBpZiAodGhpcy5pc0V4cHJlc3Npb24oc3RyVmFsdWUpKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZXZhbEV4cHJlc3Npb24oZm9ybUdyb3VwLCB0aGlzLmdldEV4cHJlc3Npb24oc3RyVmFsdWUpKSBhcyBudW1iZXI7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgZXZhbHVhdGUoZm9ybUdyb3VwOiBGb3JtR3JvdXAsIHZhbHVlOiBzdHJpbmcgfCBudWxsLCBvcHRpb25zOiBFdmFsdWF0ZU9wdGlvbnMgPSB7IH0pOiBhbnkge1xyXG4gICAgaWYgKHRoaXMuaXNFeHByZXNzaW9uKHZhbHVlKSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5ldmFsRXhwcmVzc2lvbihmb3JtR3JvdXAsIHRoaXMuZ2V0RXhwcmVzc2lvbih2YWx1ZSksIG9wdGlvbnMpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICBldmFsdWF0ZVRlbXBsYXRlKGZvcm1Hcm91cDogRm9ybUdyb3VwLCB2YWx1ZTogc3RyaW5nIHwgbnVsbCk6IGFueSB7XHJcblxyXG4gICAgbGV0IHRlbXBsYXRlOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgICBpZiAodGhpcy5pc0V4cHJlc3Npb24odmFsdWUpKSB7XHJcbiAgICAgIHRlbXBsYXRlID0gdGhpcy5ldmFsRXhwcmVzc2lvbihmb3JtR3JvdXAsIHRoaXMuZ2V0RXhwcmVzc2lvbih2YWx1ZSkpIGFzIHN0cmluZztcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0ZW1wbGF0ZSA9IHZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0aGlzLmV2YWxUZW1wbGF0ZShmb3JtR3JvdXAsIHRlbXBsYXRlID8/IFwiXCIpO1xyXG4gIH1cclxuXHJcbiAgZXZhbHVhdGVVbmFyeShmb3JtR3JvdXA6IEZvcm1Hcm91cCwgdmFsdWU6IHN0cmluZyB8IG51bGwsIGlucHV0OiBhbnkpOiBhbnkge1xyXG4gICAgaWYgKHRoaXMuaXNFeHByZXNzaW9uKHZhbHVlKSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5ldmFsVW5hcnlUZXN0KGZvcm1Hcm91cCwgdGhpcy5nZXRFeHByZXNzaW9uKHZhbHVlKSwgaW5wdXQpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNhY2hlYWJsZTogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIHByaXZhdGUgZXZhbFVuYXJ5VGVzdChmb3JtR3JvdXA6IEZvcm1Hcm91cCwgZXhwcmVzc2lvbjogc3RyaW5nLCBpbnB1dDogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICByZXR1cm4gdGhpcy5mZWVsU2VydmljZS5ldmFsVW5hcnlUZXN0KGV4cHJlc3Npb25cclxuICAgICAgICAsIHRoaXMuZ2V0Q29udGV4dChmb3JtR3JvdXApXHJcbiAgICAgICAgLCBpbnB1dCk7XHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKGV4cHJlc3Npb24sIGUpO1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZXZhbEV4cHJlc3Npb24oZm9ybUdyb3VwOiBGb3JtR3JvdXAsIGV4cHJlc3Npb246IHN0cmluZywgb3B0aW9uczogRXZhbHVhdGVPcHRpb25zID0ge30pOiBhbnkge1xyXG4gICAgY29uc3QgZXZhbHVhdGUgPSAoKSA9PiB7XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZmVlbFNlcnZpY2UuZXZhbEV4cHJlc3Npb24oZXhwcmVzc2lvblxyXG4gICAgICAgICAgLCB0aGlzLmdldENvbnRleHQoZm9ybUdyb3VwLCBvcHRpb25zKSlcclxuICAgICAgfVxyXG4gICAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGV4cHJlc3Npb24sIGUpO1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IGNhY2hlYWJsZSA9IG9wdGlvbnMuY2FjaGVhYmxlID8/IHRoaXMuY2FjaGVhYmxlO1xyXG5cclxuICAgIGlmIChjYWNoZWFibGUpIHtcclxuICAgICAgY29uc3Qgd2F0Y2hLZXkgPSBgOndhdGNoKCR7ZXhwcmVzc2lvbn0pYDtcclxuXHJcbiAgICAgIHRoaXMud2Vha1NlcnZpY2UuY2FsbCh0aGlzLCB3YXRjaEtleSwgKCkgPT4ge1xyXG4gICAgICAgIHRoaXMud2F0Y2hFeHByZXNzaW9uKGZvcm1Hcm91cCwgZXhwcmVzc2lvblxyXG4gICAgICAgICAgLCAoKSA9PiB0aGlzLndlYWtTZXJ2aWNlLmludmFsaWRhdGUodGhpcywgZXhwcmVzc2lvbikpO1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHJldHVybiB0aGlzLndlYWtTZXJ2aWNlLmNhbGwodGhpcywgZXhwcmVzc2lvbiwgZXZhbHVhdGUpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHJldHVybiBldmFsdWF0ZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBldmFsVGVtcGxhdGUoZm9ybUdyb3VwOiBGb3JtR3JvdXAsIGV4cHJlc3Npb246IHN0cmluZyk6IGFueSB7XHJcbiAgICB0cnkge1xyXG4gICAgICByZXR1cm4gdGhpcy5mZWVsU2VydmljZS5ldmFsVGVtcGxhdGUoZXhwcmVzc2lvblxyXG4gICAgICAgICwgdGhpcy5nZXRDb250ZXh0KGZvcm1Hcm91cCkpO1xyXG4gICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0UHJlZGVmaW5lZEZ1bmN0aW9ucygpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcclxuXHJcbiAgICBjb25zdCBwcm92aWRlcnM6IElFdmFsdWF0b3JQcm92aWRlcltdID0gW1xyXG4gICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UsXHJcbiAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLFxyXG4gICAgICB0aGlzLmZ1bmN0aW9uU2VydmljZSxcclxuICAgICAgdGhpcy5yZWdpc3RlciAgICAgIFxyXG4gICAgXTtcclxuXHJcbiAgICByZXR1cm4gcHJvdmlkZXJzLnJlZHVjZSgoYWNjLCBwcm92aWRlcikgPT4ge1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIC4uLmFjYyxcclxuICAgICAgICAuLi5wcm92aWRlci5nZXRDb250ZXh0KClcclxuICAgICAgfTtcclxuICAgIH0sIHt9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0UGFyZW50Q29udGV4dChmb3JtR3JvdXA6IEZvcm1Hcm91cCB8IG51bGwpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgbnVsbCB7XHJcbiAgICBpZiAoZm9ybUdyb3VwID09PSBudWxsKSB7IFxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBwYXJlbnQgPSB0aGlzLmdldFBhcmVudChmb3JtR3JvdXApO1xyXG5cclxuICAgIGlmICghcGFyZW50KSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB7XHJcbiAgICAgIC4uLnBhcmVudC52YWx1ZSxcclxuICAgICAgZm9ybUdyb3VwOiAoKSA9PiBwYXJlbnQsXHJcbiAgICAgIHBhcmVudDogKCkgPT4gdGhpcy5nZXRQYXJlbnRDb250ZXh0KHBhcmVudClcclxuICAgIH07ICAgIFxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRQYXJlbnQoZm9ybUdyb3VwOiBGb3JtR3JvdXApIDogRm9ybUdyb3VwIHwgbnVsbCB7XHJcbiAgICBsZXQgcGFyZW50ID0gZm9ybUdyb3VwLnBhcmVudDtcclxuXHJcbiAgICB3aGlsZSAocGFyZW50IGluc3RhbmNlb2YgRm9ybUFycmF5KSB7XHJcbiAgICAgIHBhcmVudCA9IHBhcmVudD8ucGFyZW50O1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBwYXJlbnQgYXMgRm9ybUdyb3VwIHwgbnVsbDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0Q29udGV4dChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wsIG9wdGlvbnM6IEV2YWx1YXRlT3B0aW9ucyA9IHt9KTogUmVjb3JkPHN0cmluZywgYW55PiB7XHJcblxyXG4gICAgY29uc3QgZm9ybUdyb3VwID0gY29udHJvbCBhcyBGb3JtR3JvdXAgfCBudWxsO1xyXG5cclxuICAgIGNvbnN0IGJhc2VDb250ZXh0ID0gZm9ybUdyb3VwPy52YWx1ZSA/PyB7IH07XHJcblxyXG4gICAgbGV0IGNvbnRleHQgPSB7XHJcbiAgICAgIC4uLmJhc2VDb250ZXh0LFxyXG4gICAgICBwYXJlbnQ6ICgpID0+IHRoaXMuZ2V0UGFyZW50Q29udGV4dChmb3JtR3JvdXApLFxyXG4gICAgICBmb3JtR3JvdXA6ICgpID0+IFRvUHJveHkoZm9ybUdyb3VwKSxcclxuICAgICAgXzogdGhpcy5zY29wZT8uZ2V0Q29udGV4dCgpLFxyXG4gICAgICBmbjogdGhpcy5wcmVkZWZpbmVkRnVuY3Rpb25zXHJcbiAgICB9XHJcblxyXG4gICAgaWYgKG9wdGlvbnMuZXh0ZW5kQ29udGV4dCkge1xyXG4gICAgICBjb25zdCBleHRlbmRlZCA9IG9wdGlvbnMuZXh0ZW5kQ29udGV4dCgpO1xyXG4gICAgICBpZiAoZXh0ZW5kZWQpIHtcclxuICAgICAgICBjb250ZXh0ID0ge1xyXG4gICAgICAgICAgLi4uY29udGV4dCxcclxuICAgICAgICAgIC4uLmV4dGVuZGVkXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGNvbnRleHQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHdhdGNoRXhwcmVzc2lvbihmb3JtR3JvdXA6IEZvcm1Hcm91cCwgZXhwcmVzc2lvbjogc3RyaW5nLCBjYWxsYmFjazogKCkgPT4gdm9pZCk6IHZvaWQge1xyXG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dChmb3JtR3JvdXApO1xyXG4gICAgY29uc3QgZGVwZW5kZW5jaWVzID0gdGhpcy5mZWVsU2VydmljZS5nZXREZXBlbmRlbmNpZXMoZXhwcmVzc2lvbiwgY29udGV4dCk7XHJcbiAgICB0aGlzLndhdGNoRGVwZW5kZW5jaWVzKGZvcm1Hcm91cCwgZGVwZW5kZW5jaWVzLCBjYWxsYmFjayk7XHJcbiAgfTtcclxuXHJcbiAgcHJpdmF0ZSB3YXRjaERlcGVuZGVuY2llcyhmb3JtR3JvdXA6IEZvcm1Hcm91cCwgZGVwZW5kZW5jaWVzOiAoc3RyaW5nIHwgc3RyaW5nW10pW10sIGNhbGxiYWNrOiAoKSA9PiB2b2lkKTogdm9pZCB7XHJcbiAgICBjb25zdCBwYXJlbnROYW1lOiBzdHJpbmcgPSBcInBhcmVudFwiO1xyXG5cclxuICAgIGNvbnN0IHN1YnNjcmliZSA9IChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpID0+IHtcclxuICAgICAgY29udHJvbC52YWx1ZUNoYW5nZXNcclxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgY2FsbGJhY2soKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGZvciAoY29uc3QgZGVwZW5kZW5jZSBvZiBkZXBlbmRlbmNpZXMpIHtcclxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZGVwZW5kZW5jZSkpIHtcclxuICAgICAgICBsZXQgdGFyZ2V0Rm9ybTogQWJzdHJhY3RDb250cm9sIHwgbnVsbCA9IGZvcm1Hcm91cDtcclxuICAgICAgICBsZXQgY29udHJvbFBhdGggPSBkZXBlbmRlbmNlO1xyXG5cclxuICAgICAgICB3aGlsZSAoY29udHJvbFBhdGgubGVuZ3RoID4gMCAmJiBjb250cm9sUGF0aFswXSA9PT0gcGFyZW50TmFtZSkge1xyXG4gICAgICAgICAgaWYgKCF0YXJnZXRGb3JtLnBhcmVudClcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB0YXJnZXRGb3JtID0gdGFyZ2V0Rm9ybS5wYXJlbnQ7XHJcbiAgICAgICAgICBjb250cm9sUGF0aCA9IGNvbnRyb2xQYXRoLnNsaWNlKDEpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGNvbnRyb2xQYXRoLmxlbmd0aCA+IDAgJiYgdGFyZ2V0Rm9ybSkge1xyXG4gICAgICAgICAgY29uc3QgY29udHJvbCA9IHRhcmdldEZvcm0uZ2V0KGNvbnRyb2xQYXRoKTtcclxuICAgICAgICAgIGlmIChjb250cm9sKSB7XHJcbiAgICAgICAgICAgIHN1YnNjcmliZShjb250cm9sKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29uc3QgY29udHJvbCA9IGZvcm1Hcm91cC5nZXQoZGVwZW5kZW5jZSk7XHJcbiAgICAgICAgaWYgKGNvbnRyb2wpIHtcclxuICAgICAgICAgIHN1YnNjcmliZShjb250cm9sKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gICAgXHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElFdmFsdWF0b3JQcm92aWRlciB7XHJcbiAgZ2V0Q29udGV4dCgpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEV2YWx1YXRlT3B0aW9ucyB7XHJcbiAgY2FjaGVhYmxlPzogYm9vbGVhbjtcclxuICBleHRlbmRDb250ZXh0PzogRXh0ZW5kQ29udGV4dEZuO1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBFeHRlbmRDb250ZXh0Rm4gPSAoKSA9PiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xyXG4iXX0=
|
|
253
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3JhbW1hYmlsaXR5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2lyaW8vc3JjL2xpYi9zZXJ2aWNlcy9wcm9ncmFtbWFiaWxpdHkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFhLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRSxPQUFPLEVBQW1CLFNBQVMsRUFBYSxNQUFNLGdCQUFnQixDQUFDO0FBUXZFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7O0FBRzFDLE1BQU0sT0FBTyxzQkFBc0I7SUFFYjtJQUNSO0lBQ0E7SUFDQTtJQUNBO0lBQ1k7SUFDQTtJQU54QixZQUFvQixXQUF3QixFQUNoQyxXQUF3QixFQUN4QixZQUEwQixFQUMxQixhQUE0QixFQUM1QixlQUFnQyxFQUNwQixRQUF5QixFQUN6QixLQUFtQjtRQU52QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUNoQyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDcEIsYUFBUSxHQUFSLFFBQVEsQ0FBaUI7UUFDekIsVUFBSyxHQUFMLEtBQUssQ0FBYztRQUd6QyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7SUFDM0QsQ0FBQztJQUVnQixtQkFBbUIsQ0FBc0I7SUFFbEQsUUFBUSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFFdkMsV0FBVztRQUNULElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsWUFBWSxDQUFDLElBQW1CO1FBQzlCLE9BQU8sSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFBQSxDQUFDO0lBRUYsYUFBYSxDQUFDLElBQW1CO1FBQy9CLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUM7WUFDekIsT0FBTyxJQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzVCLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUFBLENBQUM7SUFFRixjQUFjLENBQUMsU0FBb0IsRUFBRSxLQUFvQjtRQUN2RCxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUM3QixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQVcsQ0FBQztRQUM3RSxDQUFDO1FBQ0QsT0FBTyxLQUFLLElBQUksRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxlQUFlLENBQUMsU0FBb0IsRUFBRSxLQUE4QixFQUFFLFVBQTJCLEVBQUU7UUFDakcsSUFBSSxPQUFPLEtBQUssS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUMvQixPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7YUFDSSxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ25DLE1BQU0sUUFBUSxHQUFXLEtBQUssQ0FBQztZQUMvQixJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztnQkFDaEMsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxFQUFFLE9BQU8sQ0FBWSxDQUFDO1lBQzFGLENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsY0FBYyxDQUFDLFNBQW9CLEVBQUUsS0FBNkI7UUFDaEUsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUM5QixPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7YUFDSSxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ25DLE1BQU0sUUFBUSxHQUFXLEtBQUssQ0FBQztZQUMvQixJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztnQkFDaEMsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFXLENBQUM7WUFDaEYsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxRQUFRLENBQUMsU0FBb0IsRUFBRSxLQUFvQixFQUFFLFVBQTJCLEVBQUc7UUFDakYsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDN0IsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQzVFLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxTQUFvQixFQUFFLEtBQW9CO1FBRXpELElBQUksUUFBUSxHQUFrQixJQUFJLENBQUM7UUFFbkMsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDN0IsUUFBUSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQVcsQ0FBQztRQUNqRixDQUFDO2FBQ0ksQ0FBQztZQUNKLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDbkIsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUUsUUFBUSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxhQUFhLENBQUMsU0FBb0IsRUFBRSxLQUFvQixFQUFFLEtBQVU7UUFDbEUsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDN0IsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3pFLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxVQUFVLENBQUMsS0FBb0I7UUFDN0IsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUMvRCxDQUFDO0lBQ0gsQ0FBQztJQUVPLFNBQVMsR0FBWSxJQUFJLENBQUM7SUFFMUIsYUFBYSxDQUFDLFNBQW9CLEVBQUUsVUFBa0IsRUFBRSxLQUFVO1FBQ3hFLElBQUksQ0FBQztZQUNILE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsVUFBVSxFQUM1QyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxFQUMxQixLQUFLLENBQUMsQ0FBQztRQUNiLENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ1gsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDM0IsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO0lBQ0gsQ0FBQztJQUVPLGNBQWMsQ0FBQyxTQUFvQixFQUFFLFVBQWtCLEVBQUUsVUFBMkIsRUFBRTtRQUM1RixNQUFNLFFBQVEsR0FBRyxHQUFHLEVBQUU7WUFDcEIsSUFBSSxDQUFDO2dCQUNILE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsVUFBVSxFQUM3QyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFBO1lBQzFDLENBQUM7WUFDRCxPQUFPLENBQUMsRUFBRSxDQUFDO2dCQUNULE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUMzQixPQUFPLElBQUksQ0FBQztZQUNkLENBQUM7UUFDSCxDQUFDLENBQUM7UUFFRixNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUM7UUFFdEQsSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUNkLE1BQU0sUUFBUSxHQUFHLFVBQVUsVUFBVSxHQUFHLENBQUM7WUFFekMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUU7Z0JBQ3pDLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxFQUFFLFVBQVUsRUFDdEMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUM7Z0JBQ3pELE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQyxDQUFDLENBQUM7WUFFSCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDM0QsQ0FBQzthQUNJLENBQUM7WUFDSixPQUFPLFFBQVEsRUFBRSxDQUFDO1FBQ3BCLENBQUM7SUFDSCxDQUFDO0lBRU8sWUFBWSxDQUFDLFNBQW9CLEVBQUUsVUFBa0I7UUFDM0QsSUFBSSxDQUFDO1lBQ0gsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQzNDLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUNsQyxDQUFDO1FBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNYLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztJQUNILENBQUM7SUFFTyxzQkFBc0I7UUFFNUIsTUFBTSxTQUFTLEdBQXlCO1lBQ3RDLElBQUksQ0FBQyxhQUFhO1lBQ2xCLElBQUksQ0FBQyxZQUFZO1lBQ2pCLElBQUksQ0FBQyxlQUFlO1lBQ3BCLElBQUksQ0FBQyxRQUFRO1NBQ2QsQ0FBQztRQUVGLE9BQU8sU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxRQUFRLEVBQUUsRUFBRTtZQUN4QyxPQUFPO2dCQUNMLEdBQUcsR0FBRztnQkFDTixHQUFHLFFBQVEsQ0FBQyxVQUFVLEVBQUU7YUFDekIsQ0FBQztRQUNKLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNULENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxTQUEyQjtRQUNsRCxJQUFJLFNBQVMsS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUN2QixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRXpDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNaLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUVELE9BQU87WUFDTCxHQUFHLE1BQU0sQ0FBQyxLQUFLO1lBQ2YsU0FBUyxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU07WUFDdkIsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUM7U0FDNUMsQ0FBQztJQUNKLENBQUM7SUFFTyxTQUFTLENBQUMsU0FBb0I7UUFDcEMsSUFBSSxNQUFNLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQztRQUU5QixPQUFPLE1BQU0sWUFBWSxTQUFTLEVBQUUsQ0FBQztZQUNuQyxNQUFNLEdBQUcsTUFBTSxFQUFFLE1BQU0sQ0FBQztRQUMxQixDQUFDO1FBRUQsT0FBTyxNQUEwQixDQUFDO0lBQ3BDLENBQUM7SUFFTyxVQUFVLENBQUMsT0FBd0IsRUFBRSxVQUEyQixFQUFFO1FBRXhFLE1BQU0sU0FBUyxHQUFHLE9BQTJCLENBQUM7UUFFOUMsTUFBTSxXQUFXLEdBQUcsU0FBUyxFQUFFLEtBQUssSUFBSSxFQUFHLENBQUM7UUFFNUMsSUFBSSxPQUFPLEdBQUc7WUFDWixHQUFHLFdBQVc7WUFDZCxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQztZQUM5QyxTQUFTLEVBQUUsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQztZQUNuQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUU7WUFDM0IsRUFBRSxFQUFFLElBQUksQ0FBQyxtQkFBbUI7U0FDN0IsQ0FBQTtRQUVELElBQUksT0FBTyxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQzFCLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN6QyxJQUFJLFFBQVEsRUFBRSxDQUFDO2dCQUNiLE9BQU8sR0FBRztvQkFDUixHQUFHLE9BQU87b0JBQ1YsR0FBRyxRQUFRO2lCQUNaLENBQUE7WUFDSCxDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFTyxlQUFlLENBQUMsU0FBb0IsRUFBRSxVQUFrQixFQUFFLFFBQW9CO1FBQ3BGLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDM0MsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQzNFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFBQSxDQUFDO0lBRU0saUJBQWlCLENBQUMsU0FBb0IsRUFBRSxZQUFtQyxFQUFFLFFBQW9CO1FBQ3ZHLE1BQU0sVUFBVSxHQUFXLFFBQVEsQ0FBQztRQUVwQyxNQUFNLFNBQVMsR0FBRyxDQUFDLE9BQXdCLEVBQUUsRUFBRTtZQUM3QyxPQUFPLENBQUMsWUFBWTtpQkFDakIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7aUJBQzlCLFNBQVMsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsVUFBVSxDQUFDLEdBQUcsRUFBRTtvQkFDZCxRQUFRLEVBQUUsQ0FBQztnQkFDYixDQUFDLENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFBO1FBRUQsS0FBSyxNQUFNLFVBQVUsSUFBSSxZQUFZLEVBQUUsQ0FBQztZQUN0QyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztnQkFDOUIsSUFBSSxVQUFVLEdBQTJCLFNBQVMsQ0FBQztnQkFDbkQsSUFBSSxXQUFXLEdBQUcsVUFBVSxDQUFDO2dCQUU3QixPQUFPLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLFdBQVcsQ0FBQyxDQUFDLENBQUMsS0FBSyxVQUFVLEVBQUUsQ0FBQztvQkFDL0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNO3dCQUNwQixNQUFNO29CQUNSLFVBQVUsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDO29CQUMvQixXQUFXLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDckMsQ0FBQztnQkFFRCxJQUFJLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLFVBQVUsRUFBRSxDQUFDO29CQUN6QyxNQUFNLE9BQU8sR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO29CQUM1QyxJQUFJLE9BQU8sRUFBRSxDQUFDO3dCQUNaLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztvQkFDckIsQ0FBQztnQkFDSCxDQUFDO1lBQ0gsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE1BQU0sT0FBTyxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQzFDLElBQUksT0FBTyxFQUFFLENBQUM7b0JBQ1osU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUNyQixDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO3dHQTVRVSxzQkFBc0I7NEdBQXRCLHNCQUFzQjs7NEZBQXRCLHNCQUFzQjtrQkFEbEMsVUFBVTs7MEJBUUosUUFBUTs7MEJBQ1IsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE9uRGVzdHJveSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtQXJyYXksIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgRmVlbFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9mZWVsLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTY29wZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9zY29wZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUmVnaXN0ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvcmVnaXN0ZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3RvYXN0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBGdW5jdGlvblNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9mdW5jdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRGlhbG9nU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2RpYWxvZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgV2Vha1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy93ZWFrLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUb1Byb3h5IH0gZnJvbSAnLi4vdXRpbHMvZnVuY3Rpb25zJztcclxuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSBcInJ4anNcIjtcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIFByb2dyYW1tYWJpbGl0eVNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZlZWxTZXJ2aWNlOiBGZWVsU2VydmljZVxyXG4gICAgLCBwcml2YXRlIHdlYWtTZXJ2aWNlOiBXZWFrU2VydmljZVxyXG4gICAgLCBwcml2YXRlIHRvYXN0U2VydmljZTogVG9hc3RTZXJ2aWNlXHJcbiAgICAsIHByaXZhdGUgZGlhbG9nU2VydmljZTogRGlhbG9nU2VydmljZVxyXG4gICAgLCBwcml2YXRlIGZ1bmN0aW9uU2VydmljZTogRnVuY3Rpb25TZXJ2aWNlXHJcbiAgICAsIEBPcHRpb25hbCgpIHByaXZhdGUgcmVnaXN0ZXI6IFJlZ2lzdGVyU2VydmljZVxyXG4gICAgLCBAT3B0aW9uYWwoKSBwcml2YXRlIHNjb3BlOiBTY29wZVNlcnZpY2VcclxuICApIHtcclxuXHJcbiAgICB0aGlzLnByZWRlZmluZWRGdW5jdGlvbnMgPSB0aGlzLmdldFByZWRlZmluZWRGdW5jdGlvbnMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgcHJlZGVmaW5lZEZ1bmN0aW9uczogUmVjb3JkPHN0cmluZywgYW55PjtcclxuXHJcbiAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG5cclxuICBpc0V4cHJlc3Npb24odGV4dDogc3RyaW5nIHwgbnVsbCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRleHQgIT0gbnVsbCAmJiB0ZXh0LnN0YXJ0c1dpdGgoXCI9XCIpO1xyXG4gIH07XHJcblxyXG4gIGdldEV4cHJlc3Npb24odGV4dDogc3RyaW5nIHwgbnVsbCk6IHN0cmluZyB7XHJcbiAgICBpZiAodGhpcy5pc0V4cHJlc3Npb24odGV4dCkpXHJcbiAgICAgIHJldHVybiB0ZXh0IS5zdWJzdHJpbmcoMSk7XHJcbiAgICByZXR1cm4gXCJcIjtcclxuICB9O1xyXG5cclxuICBldmFsdWF0ZVN0cmluZyhmb3JtR3JvdXA6IEZvcm1Hcm91cCwgdmFsdWU6IHN0cmluZyB8IG51bGwpOiBzdHJpbmcge1xyXG4gICAgaWYgKHRoaXMuaXNFeHByZXNzaW9uKHZhbHVlKSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5ldmFsRXhwcmVzc2lvbihmb3JtR3JvdXAsIHRoaXMuZ2V0RXhwcmVzc2lvbih2YWx1ZSkpIGFzIHN0cmluZztcclxuICAgIH1cclxuICAgIHJldHVybiB2YWx1ZSA/PyBcIlwiO1xyXG4gIH1cclxuXHJcbiAgZXZhbHVhdGVCb29sZWFuKGZvcm1Hcm91cDogRm9ybUdyb3VwLCB2YWx1ZTogYm9vbGVhbiB8IHN0cmluZyB8IG51bGwsIG9wdGlvbnM6IEV2YWx1YXRlT3B0aW9ucyA9IHt9KTogYm9vbGVhbiB8IG51bGwge1xyXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nKSB7XHJcbiAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgY29uc3Qgc3RyVmFsdWU6IHN0cmluZyA9IHZhbHVlO1xyXG4gICAgICBpZiAodGhpcy5pc0V4cHJlc3Npb24oc3RyVmFsdWUpKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZXZhbEV4cHJlc3Npb24oZm9ybUdyb3VwLCB0aGlzLmdldEV4cHJlc3Npb24oc3RyVmFsdWUpLCBvcHRpb25zKSBhcyBib29sZWFuO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIGV2YWx1YXRlTnVtYmVyKGZvcm1Hcm91cDogRm9ybUdyb3VwLCB2YWx1ZTogbnVtYmVyIHwgc3RyaW5nIHwgbnVsbCk6IG51bWJlciB8IG51bGwge1xyXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcclxuICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xyXG4gICAgICBjb25zdCBzdHJWYWx1ZTogc3RyaW5nID0gdmFsdWU7XHJcbiAgICAgIGlmICh0aGlzLmlzRXhwcmVzc2lvbihzdHJWYWx1ZSkpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5ldmFsRXhwcmVzc2lvbihmb3JtR3JvdXAsIHRoaXMuZ2V0RXhwcmVzc2lvbihzdHJWYWx1ZSkpIGFzIG51bWJlcjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICBldmFsdWF0ZShmb3JtR3JvdXA6IEZvcm1Hcm91cCwgdmFsdWU6IHN0cmluZyB8IG51bGwsIG9wdGlvbnM6IEV2YWx1YXRlT3B0aW9ucyA9IHsgfSk6IGFueSB7XHJcbiAgICBpZiAodGhpcy5pc0V4cHJlc3Npb24odmFsdWUpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmV2YWxFeHByZXNzaW9uKGZvcm1Hcm91cCwgdGhpcy5nZXRFeHByZXNzaW9uKHZhbHVlKSwgb3B0aW9ucyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIGV2YWx1YXRlVGVtcGxhdGUoZm9ybUdyb3VwOiBGb3JtR3JvdXAsIHZhbHVlOiBzdHJpbmcgfCBudWxsKTogYW55IHtcclxuXHJcbiAgICBsZXQgdGVtcGxhdGU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG5cclxuICAgIGlmICh0aGlzLmlzRXhwcmVzc2lvbih2YWx1ZSkpIHtcclxuICAgICAgdGVtcGxhdGUgPSB0aGlzLmV2YWxFeHByZXNzaW9uKGZvcm1Hcm91cCwgdGhpcy5nZXRFeHByZXNzaW9uKHZhbHVlKSkgYXMgc3RyaW5nO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRlbXBsYXRlID0gdmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuZXZhbFRlbXBsYXRlKGZvcm1Hcm91cCwgdGVtcGxhdGUgPz8gXCJcIik7XHJcbiAgfVxyXG5cclxuICBldmFsdWF0ZVVuYXJ5KGZvcm1Hcm91cDogRm9ybUdyb3VwLCB2YWx1ZTogc3RyaW5nIHwgbnVsbCwgaW5wdXQ6IGFueSk6IGFueSB7XHJcbiAgICBpZiAodGhpcy5pc0V4cHJlc3Npb24odmFsdWUpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmV2YWxVbmFyeVRlc3QoZm9ybUdyb3VwLCB0aGlzLmdldEV4cHJlc3Npb24odmFsdWUpLCBpbnB1dCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIGludmFsaWRhdGUodmFsdWU6IHN0cmluZyB8IG51bGwpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmlzRXhwcmVzc2lvbih2YWx1ZSkpIHtcclxuICAgICAgdGhpcy53ZWFrU2VydmljZS5pbnZhbGlkYXRlKHRoaXMsIHRoaXMuZ2V0RXhwcmVzc2lvbih2YWx1ZSkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjYWNoZWFibGU6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBwcml2YXRlIGV2YWxVbmFyeVRlc3QoZm9ybUdyb3VwOiBGb3JtR3JvdXAsIGV4cHJlc3Npb246IHN0cmluZywgaW5wdXQ6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgcmV0dXJuIHRoaXMuZmVlbFNlcnZpY2UuZXZhbFVuYXJ5VGVzdChleHByZXNzaW9uXHJcbiAgICAgICAgLCB0aGlzLmdldENvbnRleHQoZm9ybUdyb3VwKVxyXG4gICAgICAgICwgaW5wdXQpO1xyXG4gICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICBjb25zb2xlLmxvZyhleHByZXNzaW9uLCBlKTtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGV2YWxFeHByZXNzaW9uKGZvcm1Hcm91cDogRm9ybUdyb3VwLCBleHByZXNzaW9uOiBzdHJpbmcsIG9wdGlvbnM6IEV2YWx1YXRlT3B0aW9ucyA9IHt9KTogYW55IHtcclxuICAgIGNvbnN0IGV2YWx1YXRlID0gKCkgPT4ge1xyXG4gICAgICB0cnkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmZlZWxTZXJ2aWNlLmV2YWxFeHByZXNzaW9uKGV4cHJlc3Npb25cclxuICAgICAgICAgICwgdGhpcy5nZXRDb250ZXh0KGZvcm1Hcm91cCwgb3B0aW9ucykpXHJcbiAgICAgIH1cclxuICAgICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICBjb25zb2xlLmxvZyhleHByZXNzaW9uLCBlKTtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBjYWNoZWFibGUgPSBvcHRpb25zLmNhY2hlYWJsZSA/PyB0aGlzLmNhY2hlYWJsZTtcclxuXHJcbiAgICBpZiAoY2FjaGVhYmxlKSB7XHJcbiAgICAgIGNvbnN0IHdhdGNoS2V5ID0gYDp3YXRjaCgke2V4cHJlc3Npb259KWA7XHJcblxyXG4gICAgICB0aGlzLndlYWtTZXJ2aWNlLmNhbGwodGhpcywgd2F0Y2hLZXksICgpID0+IHtcclxuICAgICAgICB0aGlzLndhdGNoRXhwcmVzc2lvbihmb3JtR3JvdXAsIGV4cHJlc3Npb25cclxuICAgICAgICAgICwgKCkgPT4gdGhpcy53ZWFrU2VydmljZS5pbnZhbGlkYXRlKHRoaXMsIGV4cHJlc3Npb24pKTtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgICByZXR1cm4gdGhpcy53ZWFrU2VydmljZS5jYWxsKHRoaXMsIGV4cHJlc3Npb24sIGV2YWx1YXRlKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICByZXR1cm4gZXZhbHVhdGUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZXZhbFRlbXBsYXRlKGZvcm1Hcm91cDogRm9ybUdyb3VwLCBleHByZXNzaW9uOiBzdHJpbmcpOiBhbnkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgcmV0dXJuIHRoaXMuZmVlbFNlcnZpY2UuZXZhbFRlbXBsYXRlKGV4cHJlc3Npb25cclxuICAgICAgICAsIHRoaXMuZ2V0Q29udGV4dChmb3JtR3JvdXApKTtcclxuICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFByZWRlZmluZWRGdW5jdGlvbnMoKTogUmVjb3JkPHN0cmluZywgYW55PiB7XHJcblxyXG4gICAgY29uc3QgcHJvdmlkZXJzOiBJRXZhbHVhdG9yUHJvdmlkZXJbXSA9IFtcclxuICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLFxyXG4gICAgICB0aGlzLnRvYXN0U2VydmljZSxcclxuICAgICAgdGhpcy5mdW5jdGlvblNlcnZpY2UsXHJcbiAgICAgIHRoaXMucmVnaXN0ZXIgICAgICBcclxuICAgIF07XHJcblxyXG4gICAgcmV0dXJuIHByb3ZpZGVycy5yZWR1Y2UoKGFjYywgcHJvdmlkZXIpID0+IHtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICAuLi5hY2MsXHJcbiAgICAgICAgLi4ucHJvdmlkZXIuZ2V0Q29udGV4dCgpXHJcbiAgICAgIH07XHJcbiAgICB9LCB7fSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFBhcmVudENvbnRleHQoZm9ybUdyb3VwOiBGb3JtR3JvdXAgfCBudWxsKTogUmVjb3JkPHN0cmluZywgYW55PiB8IG51bGwge1xyXG4gICAgaWYgKGZvcm1Hcm91cCA9PT0gbnVsbCkgeyBcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgcGFyZW50ID0gdGhpcy5nZXRQYXJlbnQoZm9ybUdyb3VwKTtcclxuXHJcbiAgICBpZiAoIXBhcmVudCkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAuLi5wYXJlbnQudmFsdWUsXHJcbiAgICAgIGZvcm1Hcm91cDogKCkgPT4gcGFyZW50LFxyXG4gICAgICBwYXJlbnQ6ICgpID0+IHRoaXMuZ2V0UGFyZW50Q29udGV4dChwYXJlbnQpXHJcbiAgICB9OyAgICBcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0UGFyZW50KGZvcm1Hcm91cDogRm9ybUdyb3VwKSA6IEZvcm1Hcm91cCB8IG51bGwge1xyXG4gICAgbGV0IHBhcmVudCA9IGZvcm1Hcm91cC5wYXJlbnQ7XHJcblxyXG4gICAgd2hpbGUgKHBhcmVudCBpbnN0YW5jZW9mIEZvcm1BcnJheSkge1xyXG4gICAgICBwYXJlbnQgPSBwYXJlbnQ/LnBhcmVudDtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcGFyZW50IGFzIEZvcm1Hcm91cCB8IG51bGw7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldENvbnRleHQoY29udHJvbDogQWJzdHJhY3RDb250cm9sLCBvcHRpb25zOiBFdmFsdWF0ZU9wdGlvbnMgPSB7fSk6IFJlY29yZDxzdHJpbmcsIGFueT4ge1xyXG5cclxuICAgIGNvbnN0IGZvcm1Hcm91cCA9IGNvbnRyb2wgYXMgRm9ybUdyb3VwIHwgbnVsbDtcclxuXHJcbiAgICBjb25zdCBiYXNlQ29udGV4dCA9IGZvcm1Hcm91cD8udmFsdWUgPz8geyB9O1xyXG5cclxuICAgIGxldCBjb250ZXh0ID0ge1xyXG4gICAgICAuLi5iYXNlQ29udGV4dCxcclxuICAgICAgcGFyZW50OiAoKSA9PiB0aGlzLmdldFBhcmVudENvbnRleHQoZm9ybUdyb3VwKSxcclxuICAgICAgZm9ybUdyb3VwOiAoKSA9PiBUb1Byb3h5KGZvcm1Hcm91cCksXHJcbiAgICAgIF86IHRoaXMuc2NvcGU/LmdldENvbnRleHQoKSxcclxuICAgICAgZm46IHRoaXMucHJlZGVmaW5lZEZ1bmN0aW9uc1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChvcHRpb25zLmV4dGVuZENvbnRleHQpIHtcclxuICAgICAgY29uc3QgZXh0ZW5kZWQgPSBvcHRpb25zLmV4dGVuZENvbnRleHQoKTtcclxuICAgICAgaWYgKGV4dGVuZGVkKSB7XHJcbiAgICAgICAgY29udGV4dCA9IHtcclxuICAgICAgICAgIC4uLmNvbnRleHQsXHJcbiAgICAgICAgICAuLi5leHRlbmRlZFxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBjb250ZXh0O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB3YXRjaEV4cHJlc3Npb24oZm9ybUdyb3VwOiBGb3JtR3JvdXAsIGV4cHJlc3Npb246IHN0cmluZywgY2FsbGJhY2s6ICgpID0+IHZvaWQpOiB2b2lkIHtcclxuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoZm9ybUdyb3VwKTtcclxuICAgIGNvbnN0IGRlcGVuZGVuY2llcyA9IHRoaXMuZmVlbFNlcnZpY2UuZ2V0RGVwZW5kZW5jaWVzKGV4cHJlc3Npb24sIGNvbnRleHQpO1xyXG4gICAgdGhpcy53YXRjaERlcGVuZGVuY2llcyhmb3JtR3JvdXAsIGRlcGVuZGVuY2llcywgY2FsbGJhY2spO1xyXG4gIH07XHJcblxyXG4gIHByaXZhdGUgd2F0Y2hEZXBlbmRlbmNpZXMoZm9ybUdyb3VwOiBGb3JtR3JvdXAsIGRlcGVuZGVuY2llczogKHN0cmluZyB8IHN0cmluZ1tdKVtdLCBjYWxsYmFjazogKCkgPT4gdm9pZCk6IHZvaWQge1xyXG4gICAgY29uc3QgcGFyZW50TmFtZTogc3RyaW5nID0gXCJwYXJlbnRcIjtcclxuXHJcbiAgICBjb25zdCBzdWJzY3JpYmUgPSAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKSA9PiB7XHJcbiAgICAgIGNvbnRyb2wudmFsdWVDaGFuZ2VzXHJcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIGNhbGxiYWNrKCk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBmb3IgKGNvbnN0IGRlcGVuZGVuY2Ugb2YgZGVwZW5kZW5jaWVzKSB7XHJcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGRlcGVuZGVuY2UpKSB7XHJcbiAgICAgICAgbGV0IHRhcmdldEZvcm06IEFic3RyYWN0Q29udHJvbCB8IG51bGwgPSBmb3JtR3JvdXA7XHJcbiAgICAgICAgbGV0IGNvbnRyb2xQYXRoID0gZGVwZW5kZW5jZTtcclxuXHJcbiAgICAgICAgd2hpbGUgKGNvbnRyb2xQYXRoLmxlbmd0aCA+IDAgJiYgY29udHJvbFBhdGhbMF0gPT09IHBhcmVudE5hbWUpIHtcclxuICAgICAgICAgIGlmICghdGFyZ2V0Rm9ybS5wYXJlbnQpXHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgdGFyZ2V0Rm9ybSA9IHRhcmdldEZvcm0ucGFyZW50O1xyXG4gICAgICAgICAgY29udHJvbFBhdGggPSBjb250cm9sUGF0aC5zbGljZSgxKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChjb250cm9sUGF0aC5sZW5ndGggPiAwICYmIHRhcmdldEZvcm0pIHtcclxuICAgICAgICAgIGNvbnN0IGNvbnRyb2wgPSB0YXJnZXRGb3JtLmdldChjb250cm9sUGF0aCk7XHJcbiAgICAgICAgICBpZiAoY29udHJvbCkge1xyXG4gICAgICAgICAgICBzdWJzY3JpYmUoY29udHJvbCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IGNvbnRyb2wgPSBmb3JtR3JvdXAuZ2V0KGRlcGVuZGVuY2UpO1xyXG4gICAgICAgIGlmIChjb250cm9sKSB7XHJcbiAgICAgICAgICBzdWJzY3JpYmUoY29udHJvbCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9ICAgIFxyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJRXZhbHVhdG9yUHJvdmlkZXIge1xyXG4gIGdldENvbnRleHQoKTogUmVjb3JkPHN0cmluZywgYW55PjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBFdmFsdWF0ZU9wdGlvbnMge1xyXG4gIGNhY2hlYWJsZT86IGJvb2xlYW47XHJcbiAgZXh0ZW5kQ29udGV4dD86IEV4dGVuZENvbnRleHRGbjtcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgRXh0ZW5kQ29udGV4dEZuID0gKCkgPT4gUmVjb3JkPHN0cmluZywgYW55PjtcclxuIl19
|