ets-fe-ng-sdk 16.0.99 → 16.0.101
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/Services/utility.service.mjs +11 -8
- package/esm2022/lib/Shared/models/index.model.mjs +1 -1
- package/fesm2022/ets-fe-ng-sdk.mjs +11 -8
- package/fesm2022/ets-fe-ng-sdk.mjs.map +1 -1
- package/lib/Services/utility.service.d.ts +4 -1
- package/lib/Shared/models/index.model.d.ts +2 -0
- package/package.json +1 -1
|
@@ -73,30 +73,33 @@ class ETSUtilityService {
|
|
|
73
73
|
* @param emitEvent Specify whether to emit an event when manipulating the FormArray
|
|
74
74
|
* @returns
|
|
75
75
|
*/
|
|
76
|
-
this.handleFormRowDelete = (index, fa, deleteService, addRowFunc,
|
|
77
|
-
return new Promise((
|
|
76
|
+
this.handleFormRowDelete = (index, fa, deleteService, addRowFunc, extraConfig) => {
|
|
77
|
+
return new Promise((resolve) => {
|
|
78
78
|
const id = cloneDeep(fa.controls[index]?.value?.id);
|
|
79
79
|
// debugger;
|
|
80
80
|
if (fa.controls.length == 1 && id) {
|
|
81
|
-
fa.removeAt(index, { emitEvent });
|
|
81
|
+
fa.removeAt(index, { emitEvent: !extraConfig?.dontEmitEvent });
|
|
82
82
|
addRowFunc();
|
|
83
83
|
}
|
|
84
84
|
else if (fa.controls.length > 1)
|
|
85
|
-
fa.removeAt(index, { emitEvent });
|
|
85
|
+
fa.removeAt(index, { emitEvent: !extraConfig?.dontEmitEvent });
|
|
86
86
|
else if (fa.controls.length == 1)
|
|
87
87
|
fa.controls[0].reset();
|
|
88
88
|
if (id && deleteService) {
|
|
89
89
|
const req = deleteService(id);
|
|
90
90
|
if (req['toPromise']) {
|
|
91
|
-
|
|
91
|
+
resolve(lastValueFrom(req));
|
|
92
92
|
}
|
|
93
93
|
else {
|
|
94
|
-
|
|
94
|
+
resolve(req);
|
|
95
95
|
}
|
|
96
96
|
}
|
|
97
97
|
else {
|
|
98
|
-
|
|
98
|
+
resolve(null);
|
|
99
99
|
}
|
|
100
|
+
}).then((r) => {
|
|
101
|
+
extraConfig?.onDelete(r);
|
|
102
|
+
return r;
|
|
100
103
|
});
|
|
101
104
|
};
|
|
102
105
|
/**
|
|
@@ -578,4 +581,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.3", ngImpor
|
|
|
578
581
|
type: Injectable,
|
|
579
582
|
args: [{ providedIn: 'root' }]
|
|
580
583
|
}], ctorParameters: function () { return [{ type: i1.MatDialog }, { type: i2.MatSnackBar }, { type: i3.Router }, { type: i4.Title }, { type: i5.Location }, { type: i6.ETSReactiveFormInputService }, { type: i7.RouteService }, { type: i8.PageLoaderService }, { type: i5.CurrencyPipe }, { type: i5.TitleCasePipe }, { type: i9.LoggerService }, { type: i10.PageService }, { type: i11.BreakpointObserver }, { type: i5.DatePipe }]; } });
|
|
581
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbGl0eS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXRzLWZlLW5nLXNkay9zcmMvbGliL1NlcnZpY2VzL3V0aWxpdHkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBVTNDLE9BQU8sR0FBRyxNQUFNLGtCQUFrQixDQUFDO0FBRW5DLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxJQUFJLE1BQU0sRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRW5FLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDcEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQVNoRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3RDLE9BQU8sRUFDTCxZQUFZLEVBQ1osYUFBYSxFQUNiLEtBQUssRUFDTCxVQUFVLEVBQ1YsRUFBRSxFQUNGLGFBQWEsR0FDZCxNQUFNLE1BQU0sQ0FBQztBQUNkLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV0RCxPQUFPLEVBQXNCLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7Ozs7Ozs7Ozs7O0FBR3RFLE1BQ2EsaUJBQWlCO0lBYTVCLFlBQ1MsTUFBaUIsRUFDakIsUUFBcUIsRUFDckIsTUFBYyxFQUNkLE1BQWEsRUFDYixRQUFrQixFQUNsQixZQUFpQixFQUNqQixZQUEwQixFQUMxQixFQUFxQixFQUNyQixZQUEwQixFQUMxQixhQUE0QixFQUM1QixhQUE0QixFQUM1QixLQUFrQixFQUNsQixVQUE4QixFQUM5QixRQUFrQjtRQWJsQixXQUFNLEdBQU4sTUFBTSxDQUFXO1FBQ2pCLGFBQVEsR0FBUixRQUFRLENBQWE7UUFDckIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLFdBQU0sR0FBTixNQUFNLENBQU87UUFDYixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2xCLGlCQUFZLEdBQVosWUFBWSxDQUFLO1FBQ2pCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBQ3JCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLFVBQUssR0FBTCxLQUFLLENBQWE7UUFDbEIsZUFBVSxHQUFWLFVBQVUsQ0FBb0I7UUFDOUIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQXpCM0IsZUFBVSxHQUFHLEdBQUcsQ0FBQztRQUNqQixvQkFBZSxHQUFHLGVBQWUsQ0FBQztRQUNsQyxXQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ2hCLGdCQUFXLEdBQWlCLGNBQXFCLENBQUM7UUFDbEQsU0FBSSxHQUFHLGFBQWEsQ0FBQztRQUdyQjs7V0FFRztRQUNILHVCQUFrQixHQUFHLElBQUksYUFBYSxFQUFXLENBQUM7UUErQmxELFNBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBbUNsQyxTQUFJLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBSTlDOzs7Ozs7O1dBT0c7UUFDSCxtQkFBYyxHQUFHLENBQ2YsT0FBZSxFQUNmLE1BS0MsRUFDRCxFQUFFO1lBQ0YsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUM7WUFDOUIsSUFBSSxDQUFDLE9BQU87Z0JBQUUsT0FBTyxJQUFJLENBQUM7WUFDMUIsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQztnQkFBRSxPQUFPLE9BQU8sQ0FBQztZQUMxQyxPQUFPLE9BQU8sR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUN4RCxDQUFDLENBQUM7UUEyQkY7Ozs7Ozs7O1dBUUc7UUFDSCx3QkFBbUIsR0FBRyxDQUNwQixLQUFhLEVBQ2IsRUFBb0IsRUFDcEIsYUFBMEQsRUFDMUQsVUFBNEIsRUFDNUIsU0FBUyxHQUFHLElBQUksRUFDaEIsRUFBRTtZQUNGLE9BQU8sSUFBSSxPQUFPLENBQU0sQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDOUIsTUFBTSxFQUFFLEdBQUcsU0FBUyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUNwRCxZQUFZO2dCQUNaLElBQUksRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRTtvQkFDakMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO29CQUNsQyxVQUFVLEVBQUUsQ0FBQztpQkFDZDtxQkFBTSxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUM7b0JBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO3FCQUNoRSxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxJQUFJLENBQUM7b0JBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFFekQsSUFBSSxFQUFFLElBQUksYUFBYSxFQUFFO29CQUN2QixNQUFNLEdBQUcsR0FBRyxhQUFhLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBQzlCLElBQUksR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUFFO3dCQUNwQixHQUFHLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztxQkFDekI7eUJBQU07d0JBQ0wsR0FBRyxDQUFDLEdBQVUsQ0FBQyxDQUFDO3FCQUNqQjtpQkFDRjtxQkFBTTtvQkFDTCxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7aUJBQ1g7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQztRQUVGOzs7Ozs7O1dBT0c7UUFDSCxvQkFBZSxHQUFHLEtBQUssRUFDckIsS0FBYSxFQUNiLEdBQVUsRUFDVixhQUFzRCxFQUN0RCxVQUE0QixFQUM1QixFQUFpQixFQUNqQixFQUFFO1lBQ0YsTUFBTSxFQUFFLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUMxQixZQUFZO1lBRVosSUFBSSxFQUFFLElBQUksYUFBYSxFQUFFO2dCQUN2QixNQUFNLEdBQUcsR0FBRyxhQUFhLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQzlCLElBQUksT0FBTyxHQUFHLENBQUMsV0FBVyxDQUFDLElBQUksVUFBVTtvQkFDdkMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQzs7b0JBQ3BELEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQzthQUNoQztZQUVELElBQUksR0FBRyxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUU7Z0JBQ25CLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUNyQixVQUFVLEVBQUUsQ0FBQzthQUNkO2lCQUFNLElBQUksR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDO2dCQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2xELENBQUMsQ0FBQztRQUNGOzs7OztXQUtHO1FBQ0gsdUJBQWtCLEdBQUcsQ0FDbkIsR0FBVSxFQUNWLE9BQTZELEVBQzdELE9BQWtCLEVBQ2xCLEVBQUU7WUFDRixXQUFXO1lBQ1gsSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFO2dCQUNmLElBQUksT0FBTyxDQUFDLE1BQU07b0JBQUUsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNwQyxLQUFLLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRTtvQkFDdEIsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO2lCQUN4QzthQUNGO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTTtvQkFBRSxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7YUFDN0Q7UUFDSCxDQUFDLENBQUM7UUFDTSxjQUFTLEdBQUcsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUMzQixPQUFPLE9BQU8sSUFBSSxLQUFLLFFBQVEsSUFBSSxPQUFPLElBQUksQ0FBQyxJQUFJLEtBQUssVUFBVSxDQUFDO1FBQ3JFLENBQUMsQ0FBQztRQUNGLFlBQU8sR0FBRyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ2pCLE9BQU8sQ0FDTCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksS0FBSyxlQUFlO2dCQUN6QyxDQUFDLE9BQU8sSUFBSSxLQUFLLFVBQVUsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FDdkQsQ0FBQztRQUNKLENBQUMsQ0FBQztRQUVGLGlCQUFZLEdBQUcsQ0FBSSxJQUFJLEVBQUUsRUFBRTtZQUN6QiwyRUFBMkU7WUFDM0UsaUVBQWlFO1lBQ2pFLG9FQUFvRTtZQUNwRSxPQUFPLE9BQU8sSUFBSSxLQUFLLFFBQVEsSUFBSSxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDdEQsT0FBTyxPQUFPLElBQUksS0FBSyxRQUFRLElBQUksT0FBTyxJQUFJLENBQUMsU0FBUyxLQUFLLFVBQVUsQ0FBQztRQUMxRSxDQUFDLENBQUM7UUFDRixpQkFBWSxHQUFHLENBQUksR0FBbUMsRUFBRSxFQUFFO1lBQ3hELElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDckIsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQWlCLENBQUMsQ0FBQzthQUMzQztpQkFBTSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQ2pDLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsR0FBb0IsQ0FBQyxDQUFDLENBQUM7YUFDN0Q7aUJBQU07Z0JBQ0wsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQVEsQ0FBQyxDQUFDO2FBQ2xDO1FBQ0gsQ0FBQyxDQUFDO1FBRUY7OztXQUdHO1FBQ0gsd0JBQW1CLEdBQUcsQ0FBSSxHQUFpQyxFQUFFLEVBQUU7WUFDN0QsT0FBTyxJQUFJLFVBQVUsQ0FBTSxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUNqQyxNQUFNLEdBQUcsR0FBUSxFQUFFLENBQUM7Z0JBQ3BCLElBQUksYUFBYSxHQUFHLENBQUMsQ0FBQztnQkFDdEIsS0FBSyxDQUNILEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQ2YsQ0FBQyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQ1gsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7b0JBQ2YsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDakIsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ2hCLENBQUMsQ0FBQyxFQUNGLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO29CQUNSLGFBQWEsRUFBRSxDQUFDO2dCQUNsQixDQUFDLENBQUMsQ0FDSCxDQUNGLENBQ0YsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtvQkFDaEIsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO29CQUNmLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQ2QsSUFBSSxhQUFhLElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sRUFBRTt3QkFDdEQsV0FBVzt3QkFDWCxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUM7cUJBQ2hCO2dCQUNILENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUM7UUFnQkYsaUJBQVksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQztRQUN6QyxlQUFVLEdBQUcsQ0FBQyxHQUFHLEVBQUUsZUFBMEIsRUFBRSxFQUFFO1lBQy9DLElBQUksQ0FBQyxHQUFHO2dCQUFFLE9BQU8sSUFBSSxDQUFDO1lBQ3RCLEtBQUssTUFBTSxHQUFHLElBQUksR0FBRyxFQUFFO2dCQUNyQixJQUFJLGVBQWUsRUFBRSxRQUFRLENBQUMsR0FBRyxDQUFDO29CQUFFLFNBQVM7Z0JBQzdDLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRTtvQkFDbEQsSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDO3dCQUFFLE9BQU8sS0FBSyxDQUFDO2lCQUM1QjthQUNGO1lBQ0QsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDLENBQUM7UUFDRixZQUFPLEdBQUcsQ0FBVSxJQUFjLEVBQUUsTUFBTSxHQUFHLEVBQUUsRUFBRSxFQUFFO1lBQ2pELE1BQU0sR0FBRyxHQUFVLEVBQUUsQ0FBQztZQUN0QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUMvQixJQUFJLENBQUMsR0FBUSxFQUFFLENBQUM7Z0JBQ2hCLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFO29CQUN0QixDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO2lCQUN6QjtnQkFDRCxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ2I7WUFDRCxPQUFPLEdBQVUsQ0FBQztRQUNwQixDQUFDLENBQUM7UUFDRixZQUFPLEdBQUcsR0FBRyxFQUFFLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO1FBTzVELGlCQUFZLEdBQUcsQ0FDYixJQUFTLEVBQ1QsTUFBdUIsRUFDdkIsT0FBbUIsRUFDbkIsU0FBZSxFQUNmLEVBQUUsQ0FDRixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUM7YUFDL0IsV0FBVyxFQUFFO2FBQ2IsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDZixJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLFNBQVMsRUFBRTtnQkFDL0IsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ1o7aUJBQU0sSUFBSSxTQUFTLEVBQUU7Z0JBQ3BCLFNBQVMsRUFBRSxDQUFDO2FBQ2I7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNQLG9CQUFlLEdBQUcsQ0FBQyxJQUFTLEVBQUUsTUFBdUIsRUFBRSxFQUFFLENBQ3ZELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNqQyxvQkFBZSxHQUFHLENBQ2hCLElBQUksRUFDSixHQUFVLEVBQ1YsVUFBbUIsRUFDbkIsV0FBbUIsTUFBTSxFQUN6QixFQUFFO1lBQ0YsSUFBSSxDQUFDLElBQUk7Z0JBQUUsT0FBTyxJQUFJLENBQUM7WUFDdkIsTUFBTSxHQUFHLEdBQUcsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDO1lBQ2xELElBQUksQ0FBQyxHQUFHO2dCQUFFLE9BQU8sSUFBSSxDQUFDOztnQkFFcEIsT0FBTyxHQUFHLElBQUksTUFDWixHQUFHLENBQUMsVUFBVSxJQUFJLE9BQU8sQ0FBQyxJQUFJLEdBQUcsQ0FBQyxVQUFVLElBQUksYUFBYSxDQUMvRCxFQUFFLENBQUM7UUFDUCxDQUFDLENBQUM7UUFFRixzQkFBaUIsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLHlCQUF5QixDQUFDO1FBQ2hFLHNCQUFpQixHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsaUJBQWlCLENBQUM7UUFDeEQsNkJBQXdCLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyx3QkFBd0IsQ0FBQztRQUV0RSw0QkFBdUIsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLHVCQUF1QixDQUFDO1FBRXBFLE9BQUUsR0FBRyxDQUFDLEtBQWEsRUFBRSxLQUF3QixFQUFFLEVBQUU7WUFDL0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN2QyxDQUFDLENBQUM7UUFDRjs7OztXQUlHO1FBQ0gsUUFBRyxHQUFHLENBQUMsS0FBYSxFQUFFLEtBQXdCLEVBQUUsRUFBRTtZQUNoRCxJQUFJLENBQWtCLElBQUksQ0FBQyxXQUFZLENBQUMsY0FBYztnQkFBRSxRQUFRLENBQUM7WUFDakUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDNUIsVUFBVSxFQUFtQixJQUFJLENBQUMsV0FBWSxDQUFDLGNBQWM7Z0JBQzdELEdBQUcsS0FBSzthQUNULENBQUMsQ0FBQztZQUNILFlBQVk7UUFDZCxDQUFDLENBQUM7UUFDRixnQkFBVyxHQUFHLENBQUMsTUFBdUIsRUFBRSxRQUFRLEdBQUcsR0FBRyxFQUFFLEVBQUU7WUFDeEQsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsUUFBUSxJQUFJLEdBQUcsQ0FBQyxDQUFDO1FBQzlELENBQUMsQ0FBQztRQUtGLHdCQUFtQixHQUFHLENBQUMsT0FBZSxFQUFFLEVBQUU7WUFDeEMsSUFBSSxDQUFDLE9BQU87Z0JBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUM7WUFDN0QsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUMzQyxjQUFjLEdBQUcsT0FBTyxHQUFHLElBQUksSUFBSSxDQUFDLEVBQ3BDLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQzNDLElBQUksR0FBRyxjQUFjLEdBQUcsRUFBRSxDQUFDO1lBQzdCLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDO1FBQy9CLENBQUMsQ0FBQztRQUNGLHdCQUFtQixHQUFHLENBQUMsT0FBZSxFQUFFLEVBQUU7WUFDeEMsSUFBSSxDQUFDLE9BQU87Z0JBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUM7WUFDN0QsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUMxQyxjQUFjLEdBQUcsT0FBTyxHQUFHLElBQUksSUFBSSxDQUFDLEVBQ3BDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQzVDLElBQUksR0FBRyxjQUFjLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNsQyxPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUMvQixDQUFDLENBQUM7UUFDRiwyQkFBc0IsR0FBRyxDQUFDLE9BQWUsRUFBRSxFQUFFO1lBQzNDLElBQUksQ0FBQyxPQUFPO2dCQUFFLE9BQU8sSUFBSSxDQUFDO1lBQzFCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUM5QyxPQUFPLEdBQUcsR0FBRyxDQUFDLElBQUksSUFBSSxHQUFHLENBQUMsS0FBSyxJQUFJLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN2RCxDQUFDLENBQUM7UUFDRiw0QkFBdUIsR0FBRyxDQUFDLE9BQWUsRUFBRSxFQUFFO1lBQzVDLElBQUksQ0FBQyxPQUFPO2dCQUFFLE9BQU8sSUFBSSxDQUFDO1lBQzFCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUM5QyxPQUFPLEdBQUcsR0FBRyxDQUFDLElBQUksUUFBUSxHQUFHLENBQUMsS0FBSyxPQUFPLEdBQUcsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNsRSxDQUFDLENBQUM7UUFDRiw0QkFBdUIsR0FBRyxDQUFDLEdBQVcsRUFBRSxHQUFXLEVBQUUsSUFBWSxFQUFFLEVBQUU7WUFDbkUsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUk7Z0JBQUUsT0FBTyxFQUFFLENBQUM7WUFDckMsTUFBTSxRQUFRLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ2pDLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQztZQUM3QixPQUFPLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsQ0FBQztRQUM5QyxDQUFDLENBQUM7UUFDRiwwQkFBcUIsR0FBRyxDQUFDLFFBQTJCLEVBQUUsT0FBZ0IsRUFBRSxFQUFFO1lBQ3hFLElBQUksT0FBTztnQkFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDOztnQkFDckMsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNuQyxDQUFDLENBQUM7UUFDRixrQkFBYSxHQUFHLENBQUMsUUFBMkIsRUFBRSxFQUFFO1lBQzlDLEtBQUssTUFBTSxPQUFPLElBQUksUUFBUSxFQUFFO2dCQUM5QixPQUFPLEVBQUUsT0FBTyxDQUFDLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7YUFDeEM7UUFDSCxDQUFDLENBQUM7UUFDRixpQkFBWSxHQUFHLENBQUMsUUFBMkIsRUFBRSxFQUFFO1lBQzdDLEtBQUssTUFBTSxPQUFPLElBQUksUUFBUSxFQUFFO2dCQUM5QixPQUFPLEVBQUUsTUFBTSxDQUFDLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7YUFDdkM7UUFDSCxDQUFDLENBQUM7UUFDRix3QkFBbUIsR0FBRyxDQUFDLEdBQVcsRUFBRSxHQUFXLEVBQUUsSUFBWSxFQUFFLEVBQUU7WUFDL0QsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUk7Z0JBQUUsT0FBTyxDQUFDLENBQUM7WUFDcEMsTUFBTSxRQUFRLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ2pDLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQztZQUM3QixPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7UUFDaEMsQ0FBQyxDQUFDO1FBQ0YscUJBQWdCLEdBQUcsQ0FBQyxHQUFXLEVBQUUsSUFBWSxFQUFFLEVBQUU7WUFDL0MsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUk7Z0JBQUUsT0FBTyxJQUFJLENBQUM7WUFDL0IsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDO1FBQ2hDLENBQUMsQ0FBQztRQUNGLHNCQUFpQixHQUFHLENBQUMsT0FBZSxFQUFFLEVBQUU7WUFDdEMsTUFBTSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxPQUFPLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ2xELE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUMsQ0FBQyxDQUFDO1FBNkJGLGdCQUFXLEdBQUcsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFMUM7OztXQUdHO1FBQ0gsd0JBQW1CLEdBQUcsR0FBRyxFQUFFO1lBQ3pCLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7WUFDeEIsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3hELE9BQU8sQ0FDTCxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUNwRCxHQUFHO2dCQUNILElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUMxQixDQUFDO1FBQ0osQ0FBQyxDQUFDO1FBQ0YsNkVBQTZFO1FBQzdFLGlCQUFZLEdBQUcsR0FBRyxFQUFFO1lBQ2xCLE9BQU8sSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEQsQ0FBQyxDQUFDO1FBQ0YsZUFBVSxHQUFHLENBQUMsSUFBUyxFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQUUsRUFBRTtZQUNyQyxJQUFJLENBQUMsSUFBSTtnQkFBRSxPQUFPLElBQUksQ0FBQztZQUN2QixNQUFNLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN6QixJQUFJLE1BQU0sSUFBSSxDQUFDLEVBQUU7Z0JBQ2YsT0FBTyxDQUFDLENBQUMsWUFBWSxFQUFFLENBQUM7YUFDekI7aUJBQU0sSUFBSSxNQUFNLElBQUksQ0FBQyxFQUFFO2dCQUN0QixPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsR0FBRyxHQUFHLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQzthQUN4RDtpQkFBTSxJQUFJLE1BQU0sSUFBSSxDQUFDLEVBQUU7Z0JBQ3RCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLDJCQUEyQixDQUFDLENBQUM7YUFDbkU7aUJBQU0sSUFBSSxNQUFNLElBQUksQ0FBQyxFQUFFO2dCQUN0QixPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQzthQUN4RDtpQkFBTTtnQkFDTCxPQUFPLEVBQUUsQ0FBQzthQUNYO1FBQ0gsQ0FBQyxDQUFDO1FBRUYscUJBQWdCLEdBQUcsQ0FBQyxnQkFBd0IsSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsRUFBRSxFQUFFO1lBQ3RFLElBQUksQ0FBQyxhQUFhO2dCQUFFLE9BQU8sSUFBSSxDQUFDO1lBQ2hDLE9BQU8sR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQ3ZDLE9BQU8sR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxhQUFhLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQ3hFLENBQUMsQ0FBQztRQUVGLHlCQUFvQixHQUFHLENBQUMsYUFBcUIsRUFBRSxFQUFFO1lBQy9DLElBQUksQ0FBQyxhQUFhO2dCQUFFLE9BQU8sSUFBSSxDQUFDO1lBQ2hDLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ25ELFlBQVk7WUFDWixvQ0FBb0M7WUFDcEMsMENBQTBDO1lBQzFDLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQ3RELENBQUMsQ0FBQztRQUNGLGVBQVUsR0FBRyxDQUFDLElBQVUsRUFBRSxFQUFFO1lBQzFCLE1BQU0sT0FBTyxHQUFVLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDdkMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDMUQsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzNCLENBQUMsQ0FBQztRQUNGLGlCQUFZLEdBQUcsQ0FBQyxTQUEwQixFQUFFLEVBQUU7WUFDNUMsV0FBVztZQUNYLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDdkMsQ0FBQyxDQUFDO1FBQ0Ysa0JBQWEsR0FBRyxDQUFDLElBQVksRUFBRSxFQUFFO1lBQy9CLElBQUksQ0FBQyxJQUFJLEVBQUU7Z0JBQ1QsT0FBTyxHQUFHLENBQUM7YUFDWjtZQUNELElBQUksRUFBVSxFQUNaLEVBQVUsRUFDVixFQUFVLEVBQ1YsR0FBVyxFQUNYLEdBQUcsR0FBRyxHQUFHLEVBQ1QsR0FBRyxHQUFHLEVBQUUsQ0FBQztZQUNYLElBQUksSUFBSSxHQUFHLEdBQUcsRUFBRTtnQkFDZCxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUM7YUFDN0I7WUFDRCxJQUFJLElBQUksR0FBRyxHQUFHLEVBQUU7Z0JBQ2QsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7YUFDckM7WUFDRCxFQUFFLEdBQUcsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDO1lBQ3hCLEdBQUcsR0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFDMUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFDcEMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ2hDLE9BQU8sR0FBRyxDQUFDO1FBQ2IsQ0FBQyxDQUFDO1FBQ0Ysb0JBQWUsR0FBRyxDQUFDLE1BQWMsRUFBRSxFQUFFO1lBQ25DLElBQUksQ0FBQyxNQUFNLEVBQUU7Z0JBQ1gsT0FBTyxHQUFHLENBQUM7YUFDWjtZQUNELElBQUksRUFBVSxFQUNaLEVBQVUsRUFDVixHQUFXLEVBQ1gsR0FBRyxHQUFHLEVBQUUsQ0FBQztZQUNYLElBQUksTUFBTSxHQUFHLEdBQUcsRUFBRTtnQkFDaEIsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDO2FBQy9CO1lBQ0QsRUFBRSxHQUFHLE1BQU0sR0FBRyxHQUFHLENBQUM7WUFDbEIsR0FBRyxHQUFHLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUMxQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUNwQyxFQUFFLENBQUM7WUFDSCxPQUFPLEdBQUcsQ0FBQztRQUNiLENBQUMsQ0FBQztRQUNGLGVBQVUsR0FBRyxDQUFDLEdBQVcsRUFBRSxHQUFXLEVBQUUsTUFBZSxFQUFFLEVBQUU7WUFDekQsTUFBTSxHQUFHLE1BQU0sSUFBSSxHQUFHLEdBQUcsR0FBRyxDQUFDO1lBQzdCLE9BQU8sR0FBRyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN6QyxDQUFDLENBQUM7UUFDRix3QkFBbUIsR0FBRyxDQUFDLEdBQVcsRUFBRSxFQUFFO1lBQ3BDLE9BQU8sR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUM7UUFDekIsQ0FBQyxDQUFDO1FBQ0YsWUFBTyxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDakIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsS0FBWSxDQUFDLENBQUM7UUFDekQsQ0FBQyxDQUFDO1FBK0JGLGVBQWU7UUFDZixpQkFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDO1FBQzlDLGlCQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUM7UUFDOUMsaUJBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQztRQUM5QyxZQUFZO1FBQ1osWUFBTyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDO1FBQzFCLFdBQU0sR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQztRQXZrQnRCLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUNyRSxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDO1lBRXZDLElBQUksV0FBVyxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMsRUFBRTtnQkFDNUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7Z0JBQ3JCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDcEM7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7Z0JBQ3RCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDckM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILHFCQUFxQjtJQUN2QixDQUFDO0lBSUQsWUFBWSxDQUFDLE1BQXFCO1FBQ2hDLE1BQU0sT0FBTyxHQUFHLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzVFLEtBQUssQ0FDSCxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUNuQixDQUFDLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQzNELENBQ0YsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNoQixXQUFXO1lBQ1gsSUFBSSxDQUFDLENBQUMsR0FBRztnQkFDUCxPQUFPO3FCQUNKLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDO3FCQUMzQixPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQzs7Z0JBRXZELE9BQU87cUJBQ0osTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUM7cUJBQzNCLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzFELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELEtBQUssQ0FBQyxXQUFXLENBQUMsT0FBTztRQUN2QixJQUFJO1lBQ0YsSUFBcUIsSUFBSSxDQUFDLFdBQVksQ0FBQyxLQUFLLEVBQUU7Z0JBQzVDLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQ2hELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDckMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ2hDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDZCxRQUFRLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUM3QixRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUNqQztTQUNGO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFDVixPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ2xCO0lBQ0gsQ0FBQztJQUVELFdBQVcsQ0FBQyxJQUFZO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQXdCRDs7Ozs7O09BTUc7SUFDSCxjQUFjLENBQUksR0FBTSxFQUFFLElBQWdCO1FBQ3hDLElBQUksQ0FBQyxHQUFHO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFDdEIsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUU7WUFDdEIsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN0QjtRQUNELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVEOzs7T0FHRztJQUNILG1CQUFtQixDQUFJLEtBQXFDO1FBQzFELEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFO1lBQ3hCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDMUM7SUFDSCxDQUFDO0lBb0pELGVBQWUsQ0FBSSxJQUFTLEVBQUUsUUFBUSxHQUFHLE1BQU07UUFDN0MsSUFBSSxDQUFDLElBQUk7WUFBRSxPQUFPLElBQUksQ0FBQztRQUN2QixJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDN0IsTUFBTSxHQUFHLEdBQVEsRUFBRSxFQUNqQixZQUFZLEdBQXlCLEVBQUUsQ0FBQztRQUMxQyxLQUFLLE1BQU0sSUFBSSxJQUFJLElBQUksRUFBRTtZQUN2QixJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQUUsU0FBUztZQUMzQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2YsWUFBWSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQztTQUNyQztRQUNELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUNELElBQUksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsZ0JBQWdCLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBd0JELFdBQVcsQ0FBQyxLQUFhLEVBQUUsSUFBUztRQUNsQyxPQUFPLElBQUksRUFBRSxJQUFJLENBQUM7SUFDcEIsQ0FBQztJQUNELFNBQVMsQ0FBQyxLQUFhLEVBQUUsSUFBUztRQUNoQyxPQUFPLElBQUksRUFBRSxFQUFFLENBQUM7SUFDbEIsQ0FBQztJQTBERCxhQUFhLENBQUMsS0FBVTtRQUN0QixPQUFRLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBZ0IsSUFBSSxFQUFFLENBQUM7SUFDOUMsQ0FBQztJQThERCxNQUFNLENBQ0osT0FBZSxFQUNmLE1BQXFCLENBQUMsRUFDdEIsUUFBUSxHQUFHLElBQUksRUFDZixLQUFLLEdBQUcsT0FBTztRQUVmLElBQUksT0FBTyxPQUFPLElBQUksUUFBUTtZQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdkQsT0FBTztZQUNMLE9BQU8sT0FBTyxJQUFJLFFBQVE7Z0JBQ3hCLENBQUMsQ0FBQyxPQUFPO2dCQUNULENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQztvQkFDVixDQUFDLENBQUMsbUJBQW1CO29CQUNyQixDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ1QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFO1lBQ3hDLFFBQVE7WUFDUixrQkFBa0IsRUFBRSxRQUFRO1lBQzVCLGdCQUFnQixFQUFFLFFBQVE7WUFDMUIsVUFBVSxFQUNSLEdBQUcsSUFBSSxDQUFDO2dCQUNOLENBQUMsQ0FBQyxZQUFZO2dCQUNkLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQztvQkFDVixDQUFDLENBQUMsVUFBVTtvQkFDWixDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7d0JBQ1YsQ0FBQyxDQUFDLGFBQWE7d0JBQ2YsQ0FBQyxDQUFDLFdBQVc7U0FDbEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQThHRCxLQUFLLENBQUMsSUFBVyxFQUFFLFdBQXFCLEVBQUUsUUFBZ0I7UUFDeEQsTUFBTSxRQUFRLEdBQUcsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxrREFBa0Q7UUFFbEgsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQ3pCLFdBQVc7YUFDUixHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDO2FBQzVELElBQUksQ0FBQyxHQUFHLENBQUMsQ0FDYixDQUFDO1FBQ0YsR0FBRyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDbkMsSUFBSSxRQUFRLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVoQyxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFDdEQsTUFBTSxDQUFDLElBQUksRUFBRSxRQUFRLEdBQUcsTUFBTSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELGVBQWUsQ0FBQyxRQUFnQjtRQUM5QixJQUFJLENBQUMsUUFBUTtZQUFFLE9BQU8sS0FBSyxDQUFDO1FBQzVCLE1BQU0sZUFBZSxHQUFHLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDMUQsT0FBTyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUNELGFBQWEsQ0FBSSxHQUFRO1FBQ3ZCLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQztRQUNmLEtBQUssTUFBTSxHQUFHLElBQUksR0FBRyxFQUFFO1lBQ3JCLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRTtnQkFDbEQsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQzthQUNwQjtTQUNGO1FBQ0QsT0FBTyxHQUFVLENBQUM7SUFDcEIsQ0FBQzs4R0E3bEJVLGlCQUFpQjtrSEFBakIsaUJBQWlCLGNBREosTUFBTTs7U0FDbkIsaUJBQWlCOzJGQUFqQixpQkFBaUI7a0JBRDdCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ3VycmVuY3lQaXBlLFxuICBEYXRlUGlwZSxcbiAgTG9jYXRpb24sXG4gIFRpdGxlQ2FzZVBpcGUsXG59IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBNYXREaWFsb2cgYXMgTWF0RGlhbG9nLFxuICBNYXREaWFsb2dDb25maWcgYXMgTWF0RGlhbG9nQ29uZmlnLFxufSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgTWF0U25hY2tCYXIgYXMgTWF0U25hY2tCYXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbmFjay1iYXInO1xuaW1wb3J0IHsgVGl0bGUgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IFJvdXRlciwgTmF2aWdhdGlvbkV4dHJhcyB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBFVFNSZWFjdGl2ZUZvcm1JbnB1dFNlcnZpY2UgYXMgSVMxIH0gZnJvbSAnLi9pbnB1dC5zZXJ2aWNlJztcbmltcG9ydCB7IFJvdXRlU2VydmljZSB9IGZyb20gJy4vcm91dGUuc2VydmljZSc7XG5pbXBvcnQgamZkIGZyb20gJ2pzLWZpbGUtZG93bmxvYWQnO1xuaW1wb3J0IHsgUGFnZUxvYWRlclNlcnZpY2UgfSBmcm9tICcuL3BhZ2UtbG9hZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29uZmlnLCBDb25maWcgYXMgY29uZmlnIH0gZnJvbSAnLi4vY29uZmlncy9pbmRleC5jb25maWcnO1xuaW1wb3J0IHsgQXBwUm91dGVCYXNlIH0gZnJvbSAnLi4vU2hhcmVkL21vZGVscy9Sb3V0ZUl0ZW0uY2xhc3MnO1xuaW1wb3J0IHsgc2F2ZUFzIH0gZnJvbSAnZmlsZS1zYXZlcic7XG5pbXBvcnQgeyBFVmFsaWRhdGlvblR5cGUgfSBmcm9tICcuLi9TaGFyZWQvbW9kZWxzL2luZGV4Lm1vZGVsJztcbmltcG9ydCB7IEVUU2Vudmlyb25tZW50IH0gZnJvbSAnLi4vLi4vZW52aXJvbm1lbnRzL2Vudmlyb25tZW50JztcbmltcG9ydCB7IFBhZ2VTZXJ2aWNlIH0gZnJvbSAnLi9wYWdlLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgQWJzdHJhY3RDb250cm9sLFxuICBGb3JtQXJyYXksXG4gIEZvcm1Db250cm9sLFxuICBVbnR5cGVkRm9ybUFycmF5LFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBMb2dnZXJTZXJ2aWNlIH0gZnJvbSAnLi4vUmV1c2FibGVzL3JldXNhYmxlLXBhZ2VzL2xvZ2dlci9sb2dnZXIuc2VydmljZSc7XG5pbXBvcnQgeyBjbG9uZURlZXAgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHtcbiAgaXNPYnNlcnZhYmxlLFxuICBsYXN0VmFsdWVGcm9tLFxuICBtZXJnZSxcbiAgT2JzZXJ2YWJsZSxcbiAgb2YsXG4gIFJlcGxheVN1YmplY3QsXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRUVUU1BhZ2VCdG5JRCB9IGZyb20gJy4uL1NoYXJlZC9tb2RlbHMvSU1lbnVJdGVtJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRVRTRW52aXJvbm1lbnQgfSBmcm9tICcuLi9TaGFyZWQvbW9kZWxzL2Vudmlyb25tZW50Lm1vZGVsJztcbmltcG9ydCB7IEJyZWFrcG9pbnRPYnNlcnZlciwgQnJlYWtwb2ludHMgfSBmcm9tICdAYW5ndWxhci9jZGsvbGF5b3V0JztcbmRlY2xhcmUgY29uc3QgJDogYW55O1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEVUU1V0aWxpdHlTZXJ2aWNlPFRFbnZpcm9ubWVudCA9IEVUU0Vudmlyb25tZW50PiB7XG4gIHI6IEFwcFJvdXRlQmFzZTtcbiAgZG93bmxvYWRlciA9IGpmZDtcbiAgZVZhbGlkYXRpb25UeXBlID0gRVZhbGlkYXRpb25UeXBlO1xuICBjb25maWcgPSBDb25maWc7XG4gIGVudmlyb25tZW50OiBURW52aXJvbm1lbnQgPSBFVFNlbnZpcm9ubWVudCBhcyBhbnk7XG4gIHBiaWQgPSBFRVRTUGFnZUJ0bklEO1xuICAkOiBhbnk7XG4gIGlzTW9iaWxlOiBib29sZWFuO1xuICAvKipcbiAgICogRW1pdHMgdHJ1ZSBpZiBtb2JpbGVcbiAgICovXG4gIG1vYmlsZVF1ZXJ5Q2hhbmdlZCA9IG5ldyBSZXBsYXlTdWJqZWN0PGJvb2xlYW4+KCk7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBkaWFsb2c6IE1hdERpYWxvZyxcbiAgICBwdWJsaWMgc25hY2tCYXI6IE1hdFNuYWNrQmFyLFxuICAgIHB1YmxpYyByb3V0ZXI6IFJvdXRlcixcbiAgICBwdWJsaWMgdGl0bGVTOiBUaXRsZSxcbiAgICBwdWJsaWMgbG9jYXRpb246IExvY2F0aW9uLFxuICAgIHB1YmxpYyBpbnB1dFNlcnZpY2U6IElTMSwgXG4gICAgcHVibGljIHJvdXRlU2VydmljZTogUm91dGVTZXJ2aWNlLFxuICAgIHB1YmxpYyBwUzogUGFnZUxvYWRlclNlcnZpY2UsXG4gICAgcHVibGljIGN1cnJlbmN5UGlwZTogQ3VycmVuY3lQaXBlLFxuICAgIHB1YmxpYyB0aXRsZUNhc2VQaXBlOiBUaXRsZUNhc2VQaXBlLFxuICAgIHB1YmxpYyBsb2dnZXJTZXJ2aWNlOiBMb2dnZXJTZXJ2aWNlLFxuICAgIHB1YmxpYyBwYWdlUzogUGFnZVNlcnZpY2UsXG4gICAgcHVibGljIHJlc3BvbnNpdmU6IEJyZWFrcG9pbnRPYnNlcnZlcixcbiAgICBwdWJsaWMgZGF0ZVBpcGU6IERhdGVQaXBlXG4gICkge1xuICAgIHJlc3BvbnNpdmUub2JzZXJ2ZShbQnJlYWtwb2ludHMuSGFuZHNldFBvcnRyYWl0XSkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcbiAgICAgIGNvbnN0IGJyZWFrcG9pbnRzID0gcmVzdWx0LmJyZWFrcG9pbnRzO1xuXG4gICAgICBpZiAoYnJlYWtwb2ludHNbQnJlYWtwb2ludHMuSGFuZHNldFBvcnRyYWl0XSkge1xuICAgICAgICB0aGlzLmlzTW9iaWxlID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5tb2JpbGVRdWVyeUNoYW5nZWQubmV4dCh0cnVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuaXNNb2JpbGUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5tb2JpbGVRdWVyeUNoYW5nZWQubmV4dChmYWxzZSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgLy8gaWYgKCQpIHRoaXMuJCA9ICQ7XG4gIH1cblxuICBiYWNrID0gKCkgPT4gdGhpcy5sb2NhdGlvbi5iYWNrKCk7XG5cbiAgb25seU9uZUlucHV0KGlucHV0czogRm9ybUNvbnRyb2xbXSkge1xuICAgIGNvbnN0IG5JbnB1dHMgPSBpbnB1dHM/Lm1hcCgoaW5wKSA9PiAoeyBpZDogdGhpcy5nZW5SYW5kb21JRCwgaW5wIH0pKSB8fCBbXTtcbiAgICBtZXJnZShcbiAgICAgIC4uLm5JbnB1dHMubWFwKChpKSA9PlxuICAgICAgICBpLmlucC52YWx1ZUNoYW5nZXMucGlwZShtYXAoKHZhbCkgPT4gKHsgaWQ6IGkuaWQsIHZhbCB9KSkpXG4gICAgICApXG4gICAgKS5zdWJzY3JpYmUoKHIpID0+IHtcbiAgICAgIC8vIGRlYnVnZ2VyXG4gICAgICBpZiAoci52YWwpXG4gICAgICAgIG5JbnB1dHNcbiAgICAgICAgICAuZmlsdGVyKCh4KSA9PiB4LmlkICE9IHIuaWQpXG4gICAgICAgICAgLmZvckVhY2goKHgpID0+IHguaW5wLmRpc2FibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pKTtcbiAgICAgIGVsc2VcbiAgICAgICAgbklucHV0c1xuICAgICAgICAgIC5maWx0ZXIoKHgpID0+IHguaWQgIT0gci5pZClcbiAgICAgICAgICAuZm9yRWFjaCgoeCkgPT4geC5pbnAuZW5hYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KSk7XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBjb3B5UGF5bG9hZChwYXlsb2FkKSB7XG4gICAgdHJ5IHtcbiAgICAgIGlmICgoPEVUU0Vudmlyb25tZW50PnRoaXMuZW52aXJvbm1lbnQpLmRlYnVnKSB7XG4gICAgICAgIGNvbnN0IGVsZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZXh0YXJlYScpO1xuICAgICAgICBlbGVtLnZhbHVlID0gSlNPTi5zdHJpbmdpZnkocGF5bG9hZCk7XG4gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZWxlbSk7XG4gICAgICAgIGVsZW0uc2VsZWN0KCk7XG4gICAgICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCdjb3B5Jyk7XG4gICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZWxlbSk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICB9XG4gIH1cbiAgeE9yWSA9ICh4LCB5ID0gJy0nKSA9PiBgJHt4ID09IG51bGwgPyB5IDogeH1gO1xuICB0b1RpdGxlQ2FzZSh0ZXh0OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy50aXRsZUNhc2VQaXBlLnRyYW5zZm9ybSh0ZXh0KTtcbiAgfVxuICAvKipcbiAgICogQ29udmVydCBEYXRlIHN0cmluZyB0byBEYXRlIFRpbWUgc3RyaW5nXG4gICAqIEBwYXJhbSBkYXRlU3RyIERhdGUgc3RyaW5nXG4gICAqIEBleGFtcGxlICcyMDIyLTAxLTI1J1xuICAgKiBAcGFyYW0gY29uZmlnIENvbmZpZ3VyYXRpb24gZm9yIHRoZSBjb252ZXJzaW9uXG4gICAqIEByZXR1cm5zIFJldHVybnMgYSBEYXRlIFRpbWUgc3RyaW5nXG4gICAqIEBleGFtcGxlICcyMDIyLTAxLTI1VDAwOjAwOjAwWicgb3IgJzIwMjItMDEtMjUgMDA6MDA6MDAnXG4gICAqL1xuICBkYXRlVG9EYXRlVGltZSA9IChcbiAgICBkYXRlU3RyOiBzdHJpbmcsXG4gICAgY29uZmlnPzoge1xuICAgICAgLyoqXG4gICAgICAgKiBVc2UgdGhlIHl5eXktbW0tZGQgaGg6bW06c3MgZm9ybWF0XG4gICAgICAgKi9cbiAgICAgIG9taXRUPzogYm9vbGVhbjtcbiAgICB9XG4gICkgPT4ge1xuICAgIGNvbnN0IG9taXRUID0gISFjb25maWc/Lm9taXRUO1xuICAgIGlmICghZGF0ZVN0cikgcmV0dXJuIG51bGw7XG4gICAgaWYgKGRhdGVTdHIuaW5jbHVkZXMoJ1QnKSkgcmV0dXJuIGRhdGVTdHI7XG4gICAgcmV0dXJuIGRhdGVTdHIgKyAob21pdFQgPyAnIDAwOjAwOjAwJyA6ICdUMDA6MDA6MDBaJyk7XG4gIH07XG5cbiAgLyoqXG4gICAqIFNldCBhbiBPYmplY3QncyBmaWVsZCBpZiB0aGUgb2JqZWN0IGV4aXN0cyBvciBkb24ndCBpZiB0aGUgb2JqZWN0IGRvZXNuJ3RcbiAgICogQHBhcmFtIG9iaiBPYmplY3QgaG9sZGluZyB0aGUgZmllbGRcbiAgICogQHBhcmFtIGZpZWxkTmFtZSBOYW1lIG9mIHRoZSBmaWVsZCB0byBzZXRcbiAgICogQHBhcmFtIHZhbCBWYWx1ZSB0byBzZXQgdGhlIGZpZWxkIHdpdGhcbiAgICogQHJldHVybnMgUmV0dXJucyB0aGUgb2JqZWN0IGhvbGRpbmcgdGhlIGRhdGFcbiAgICovXG4gIHNldHRlcldpdGhOdWxsPFQ+KG9iajogVCwga3ZwczogUGFydGlhbDxUPikge1xuICAgIGlmICghb2JqKSByZXR1cm4gbnVsbDtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBrdnBzKSB7XG4gICAgICBvYmpba2V5XSA9IGt2cHNba2V5XTtcbiAgICB9XG4gICAgcmV0dXJuIG9iajtcbiAgfVxuXG4gIC8qKlxuICAgKiAoU2V0IGFuIE9iamVjdCdzIGZpZWxkIGlmIHRoZSBvYmplY3QgZXhpc3RzIG9yIGRvbid0IGlmIHRoZSBvYmplY3QgZG9lc24ndCkgZm9yIG11bHRpcGxlIGVudHJpZXNcbiAgICogQHBhcmFtIGl0ZW1zIEFycmF5IG9mIG9iamVjdHMgYW5kIHRoZWlyIG1vZGlmaWNhdGlvbnNcbiAgICovXG4gIHNldHRlcldpdGhOdWxsQXJyYXk8VD4oaXRlbXM6IHsgb2JqOiBUOyBrdnBzOiBQYXJ0aWFsPFQ+IH1bXSkge1xuICAgIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtcykge1xuICAgICAgdGhpcy5zZXR0ZXJXaXRoTnVsbChpdGVtLm9iaiwgaXRlbS5rdnBzKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlcyB0aGUgZGVsZXRpb24gb2Ygcm93cyBmcm9tIGEgRm9ybUFycmF5XG4gICAqIEBwYXJhbSBpbmRleCBJbmRleCBvZiB0aGUgcm93IHRvIGRlbGV0ZVxuICAgKiBAcGFyYW0gZmEgVGhlIEZvcm1BcnJheSB0aGF0IGhvbGRzIHRoZSByb3dzXG4gICAqIEBwYXJhbSBkZWxldGVTZXJ2aWNlIFRoZSBkZWxldGlvbiBzZXJ2aWNlIHRvIGJlIGNhbGxlZCAoSXQgc2hvdWxkIGJlIGFuIGFub255bW91cyBmdW5jdGlvbilcbiAgICogQHBhcmFtIGFkZFJvd0Z1bmMgVGhlIGZ1bmN0aW9uIChhbm9ueW1vdXMpIHRoYXQgYWRkcyBhIG5ldyByb3cgdG8gdGhlIEZvcm1BcnJheVxuICAgKiBAcGFyYW0gZW1pdEV2ZW50IFNwZWNpZnkgd2hldGhlciB0byBlbWl0IGFuIGV2ZW50IHdoZW4gbWFuaXB1bGF0aW5nIHRoZSBGb3JtQXJyYXlcbiAgICogQHJldHVybnNcbiAgICovXG4gIGhhbmRsZUZvcm1Sb3dEZWxldGUgPSAoXG4gICAgaW5kZXg6IG51bWJlcixcbiAgICBmYTogVW50eXBlZEZvcm1BcnJheSxcbiAgICBkZWxldGVTZXJ2aWNlOiAoLi4uYXJncykgPT4gUHJvbWlzZTxhbnk+IHwgT2JzZXJ2YWJsZTxhbnk+LFxuICAgIGFkZFJvd0Z1bmM6ICguLi5hcmdzKSA9PiBhbnksXG4gICAgZW1pdEV2ZW50ID0gdHJ1ZVxuICApID0+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8YW55Pigoc3ViKSA9PiB7XG4gICAgICBjb25zdCBpZCA9IGNsb25lRGVlcChmYS5jb250cm9sc1tpbmRleF0/LnZhbHVlPy5pZCk7XG4gICAgICAvLyBkZWJ1Z2dlcjtcbiAgICAgIGlmIChmYS5jb250cm9scy5sZW5ndGggPT0gMSAmJiBpZCkge1xuICAgICAgICBmYS5yZW1vdmVBdChpbmRleCwgeyBlbWl0RXZlbnQgfSk7XG4gICAgICAgIGFkZFJvd0Z1bmMoKTtcbiAgICAgIH0gZWxzZSBpZiAoZmEuY29udHJvbHMubGVuZ3RoID4gMSkgZmEucmVtb3ZlQXQoaW5kZXgsIHsgZW1pdEV2ZW50IH0pO1xuICAgICAgZWxzZSBpZiAoZmEuY29udHJvbHMubGVuZ3RoID09IDEpIGZhLmNvbnRyb2xzWzBdLnJlc2V0KCk7XG5cbiAgICAgIGlmIChpZCAmJiBkZWxldGVTZXJ2aWNlKSB7XG4gICAgICAgIGNvbnN0IHJlcSA9IGRlbGV0ZVNlcnZpY2UoaWQpO1xuICAgICAgICBpZiAocmVxWyd0b1Byb21pc2UnXSkge1xuICAgICAgICAgIHN1YihyZXFbJ3RvUHJvbWlzZSddKCkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHN1YihyZXEgYXMgYW55KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3ViKG51bGwpO1xuICAgICAgfVxuICAgIH0pO1xuICB9O1xuXG4gIC8qKlxuICAgKiBIYW5kbGVzIHRoZSBkZWxldGlvbiBvZiByb3dzIGZyb20gYW4gYXJyYXlcbiAgICogQHBhcmFtIGluZGV4IEluZGV4IG9mIHRoZSByb3cgdG8gZGVsZXRlXG4gICAqIEBwYXJhbSBhcnIgVGhlIGFycmF5IHRoYXQgaG9sZHMgdGhlIHJvd3NcbiAgICogQHBhcmFtIGRlbGV0ZVNlcnZpY2UgVGhlIGRlbGV0aW9uIHNlcnZpY2UgdG8gYmUgY2FsbGVkIChJdCBzaG91bGQgYmUgYW4gYW5vbnltb3VzIGZ1bmN0aW9uKVxuICAgKiBAcGFyYW0gYWRkUm93RnVuYyBUaGUgZnVuY3Rpb24gKGFub255bW91cykgdGhhdCBhZGRzIGEgbmV3IHJvdyB0byB0aGUgYXJyYXlcbiAgICogQHBhcmFtIGNiIFRoZSBmdW5jdGlvbiB0byBjYWxsYmFjayB3aXRoIHRoZSByZXNwb25zZSBvZiB0aGUgZGVsZXRpb24gc2VydmljZSBhcyB0aGUgaW5wdXQgcGFyYW1ldGVyXG4gICAqL1xuICBoYW5kbGVSb3dEZWxldGUgPSBhc3luYyA8VD4oXG4gICAgaW5kZXg6IG51bWJlcixcbiAgICBhcnI6IGFueVtdLFxuICAgIGRlbGV0ZVNlcnZpY2U6ICguLi5hcmdzKSA9PiBQcm9taXNlPFQ+IHwgT2JzZXJ2YWJsZTxUPixcbiAgICBhZGRSb3dGdW5jOiAoLi4uYXJncykgPT4gYW55LFxuICAgIGNiPzogKGFueSkgPT4gYW55XG4gICkgPT4ge1xuICAgIGNvbnN0IGlkID0gYXJyW2luZGV4XT8uaWQ7XG4gICAgLy8gZGVidWdnZXI7XG5cbiAgICBpZiAoaWQgJiYgZGVsZXRlU2VydmljZSkge1xuICAgICAgY29uc3QgcmVxID0gZGVsZXRlU2VydmljZShpZCk7XG4gICAgICBpZiAodHlwZW9mIHJlcVsndG9Qcm9taXNlJ10gPT0gJ2Z1bmN0aW9uJylcbiAgICAgICAgY2IgPyBjYihhd2FpdCByZXFbJ3RvUHJvbWlzZSddKCkpIDogcmVxWyd0b1Byb21pc2UnXSgpO1xuICAgICAgZWxzZSBjYiA/IGNiKGF3YWl0IHJlcSkgOiBudWxsO1xuICAgIH1cblxuICAgIGlmIChhcnIubGVuZ3RoID09IDEpIHtcbiAgICAgIGFyci5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgYWRkUm93RnVuYygpO1xuICAgIH0gZWxzZSBpZiAoYXJyLmxlbmd0aCA+IDEpIGFyci5zcGxpY2UoaW5kZXgsIDEpO1xuICB9O1xuICAvKipcbiAgICogVG8gaGFuZGxlIHRoZSBwYXRjaGluZyBvZiBhIEZvcm1BcnJheVxuICAgKiBAcGFyYW0gYXJyIFRoZSBhcnJheSB0aGF0IGNvbnRhaW5zIHRoZSBkYXRhXG4gICAqIEBwYXJhbSBhZGRGdW5jIFRoZSBmdW5jdGlvbiB0aGF0IHBlcmZvcm1zIGFkZGl0aW9uIG9mIHNpbmdsZSBlbnRyaWVzXG4gICAqIEBwYXJhbSBmb3JtQXJyIFRoZSBGb3JtQXJyYXkgdGhhdCB3aWxsIGhvbGQgdGhlIGFycmF5J3MgZGF0YVxuICAgKi9cbiAgaW5pdFBhdGNoRm9ybUFycmF5ID0gKFxuICAgIGFycjogYW55W10sXG4gICAgYWRkRnVuYzogKGk6IG51bWJlciwgZGF0YT86IGFueSwgZm9ybUFycj86IEZvcm1BcnJheSkgPT4gdm9pZCxcbiAgICBmb3JtQXJyOiBGb3JtQXJyYXlcbiAgKSA9PiB7XG4gICAgLy8gZGVidWdnZXJcbiAgICBpZiAoYXJyPy5sZW5ndGgpIHtcbiAgICAgIGlmIChmb3JtQXJyLmxlbmd0aCkgZm9ybUFyci5jbGVhcigpO1xuICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGFycikge1xuICAgICAgICBhZGRGdW5jKGZvcm1BcnIubGVuZ3RoLCBpdGVtLCBmb3JtQXJyKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCFmb3JtQXJyLmxlbmd0aCkgYWRkRnVuYyhmb3JtQXJyLmxlbmd0aCwgbnVsbCwgZm9ybUFycik7XG4gICAgfVxuICB9O1xuICBwcml2YXRlIGlzUHJvbWlzZSA9IChmdW5jKSA9PiB7XG4gICAgcmV0dXJuIHR5cGVvZiBmdW5jID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgZnVuYy50aGVuID09PSAnZnVuY3Rpb24nO1xuICB9O1xuICBpc0FzeW5jID0gKGZ1bmMpID0+IHtcbiAgICByZXR1cm4gKFxuICAgICAgZnVuYy5jb25zdHJ1Y3Rvci5uYW1lID09PSAnQXN5bmNGdW5jdGlvbicgfHxcbiAgICAgICh0eXBlb2YgZnVuYyA9PT0gJ2Z1bmN0aW9uJyAmJiB0aGlzLmlzUHJvbWlzZShmdW5jKCkpKVxuICAgICk7XG4gIH07XG5cbiAgaXNPYnNlcnZhYmxlID0gPFQ+KGZ1bmMpID0+IHtcbiAgICAvLyByZXR1cm4gdHlwZW9mIGZ1bmMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBmdW5jLnN1YnNjcmliZSA9PT0gJ2Z1bmN0aW9uJztcbiAgICAvLyByZXR1cm4gdHlwZW9mIGZ1bmMgPT09ICdvYmplY3QnICYmIGZ1bmMgaW5zdGFuY2VvZiBPYnNlcnZhYmxlO1xuICAgIC8vIHJldHVybiB0eXBlb2YgZnVuYyA9PT0gJ29iamVjdCcgJiYgZnVuYyBpbnN0YW5jZW9mIE9ic2VydmFibGU8VD47XG4gICAgcmV0dXJuIHR5cGVvZiBmdW5jID09PSAnb2JqZWN0JyAmJiBpc09ic2VydmFibGUoZnVuYyk7XG4gICAgcmV0dXJuIHR5cGVvZiBmdW5jID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgZnVuYy50b1Byb21pc2UgPT09ICdmdW5jdGlvbic7XG4gIH07XG4gIHByb21pc2lmeVZhbCA9IDxUPih2YWw6IFQgfCBQcm9taXNlPFQ+IHwgT2JzZXJ2YWJsZTxUPikgPT4ge1xuICAgIGlmICh0aGlzLmlzQXN5bmModmFsKSkge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh2YWwgYXMgUHJvbWlzZTxUPik7XG4gICAgfSBlbHNlIGlmICh0aGlzLmlzT2JzZXJ2YWJsZSh2YWwpKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGxhc3RWYWx1ZUZyb20odmFsIGFzIE9ic2VydmFibGU8VD4pKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh2YWwgYXMgVCk7XG4gICAgfVxuICB9O1xuXG4gIC8qKlxuICAgKiBAcGFyYW0gYXJyIEFycmF5IG9mIG9ic2VydmFibGVzIHRvIGZldGNoXG4gICAqIEByZXR1cm5zIEFuIGFycmF5IG9mIHRoZSByZXNwb25zZXMgbWVyZ2VkIHRvZ2V0aGVyLiBJdCBlbWl0cyB0aGUgbWVyZ2VkIHJlc3BvbnNlcyBhcyB0aGV5IGFyZSBmZXRjaGVkIGFuZCBjbG9zZXMgb25jZSBhbGxsIHRoZSByZXNwb25zZXMgaGF2ZSBiZWVuIGZldGNoZWRcbiAgICovXG4gIG1lcmdlQXJyT2JzZXJ2YWJsZXMgPSA8VD4oYXJyOiB7ICRmdW5jOiBPYnNlcnZhYmxlPFRbXT4gfVtdKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlPFRbXT4oKHN1YikgPT4ge1xuICAgICAgY29uc3QgcmV0OiBUW10gPSBbXTtcbiAgICAgIGxldCByZXNwb25zZUNvdW50ID0gMDtcbiAgICAgIG1lcmdlKFxuICAgICAgICAuLi5hcnIubWFwKCh4KSA9PlxuICAgICAgICAgIHguJGZ1bmM/LnBpcGUoXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICAgICAgICAgIHJldHVybiBvZihbXSk7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHRhcCgocikgPT4ge1xuICAgICAgICAgICAgICByZXNwb25zZUNvdW50Kys7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgKS5zdWJzY3JpYmUoKHIpID0+IHtcbiAgICAgICAgcmV0LnB1c2goLi4ucik7XG4gICAgICAgIHN1Yi5uZXh0KHJldCk7XG4gICAgICAgIGlmIChyZXNwb25zZUNvdW50ID09IGFyci5maWx0ZXIoKHgpID0+IHguJGZ1bmMpLmxlbmd0aCkge1xuICAgICAgICAgIC8vIGRlYnVnZ2VyXG4gICAgICAgICAgc3ViLmNvbXBsZXRlKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9O1xuICByZW1vdmVEdXBsaWNhdGU8VD4obGlzdDogVFtdLCBrZXlGaWVsZCA9ICdjb2RlJykge1xuICAgIGlmICghbGlzdCkgcmV0dXJuIG51bGw7XG4gICAgbGlzdCA9IGxpc3QuZmlsdGVyKCh4KSA9PiB4KTtcbiAgICBjb25zdCByZXQ6IFRbXSA9IFtdLFxuICAgICAgZHVwbGljYXRlTWFwOiB7IFt4OiBzdHJpbmddOiBhbnkgfSA9IHt9O1xuICAgIGZvciAoY29uc3QgaXRlbSBvZiBsaXN0KSB7XG4gICAgICBpZiAoZHVwbGljYXRlTWFwW2l0ZW1ba2V5RmllbGRdXSkgY29udGludWU7XG4gICAgICByZXQucHVzaChpdGVtKTtcbiAgICAgIGR1cGxpY2F0ZU1hcFtpdGVtW2tleUZpZWxkXV0gPSBpdGVtO1xuICAgIH1cbiAgICByZXR1cm4gcmV0O1xuICB9XG4gIGdldCBnZW5SYW5kb21JRCgpIHtcbiAgICByZXR1cm4gTWF0aC5yb3VuZChNYXRoLnJhbmRvbSgpICogMTAwMDAwMDAwMDAwMDAwMCk7XG4gIH1cbiAgc3RvcmVQYXlsb2FkID0gdGhpcy5sb2dnZXJTZXJ2aWNlLmFkZExvZztcbiAgb2JqSXNFbXB0eSA9IChvYmosIGV4Y2x1c2lvbkZpZWxkcz86IHN0cmluZ1tdKSA9PiB7XG4gICAgaWYgKCFvYmopIHJldHVybiB0cnVlO1xuICAgIGZvciAoY29uc3Qga2V5IGluIG9iaikge1xuICAgICAgaWYgKGV4Y2x1c2lvbkZpZWxkcz8uaW5jbHVkZXMoa2V5KSkgY29udGludWU7XG4gICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KSkge1xuICAgICAgICBpZiAob2JqW2tleV0pIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH07XG4gIGRhdGFHZW4gPSA8VCA9IGFueT4oa2V5czogc3RyaW5nW10sIGxlbmd0aCA9IDEwKSA9PiB7XG4gICAgY29uc3QgcmV0OiBhbnlbXSA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgIGxldCB0OiBhbnkgPSB7fTtcbiAgICAgIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICAgICAgdFtrZXldID0gdGhpcy50ZXh0R2VuKCk7XG4gICAgICB9XG4gICAgICByZXQucHVzaCh0KTtcbiAgICB9XG4gICAgcmV0dXJuIHJldCBhcyBUW107XG4gIH07XG4gIHRleHRHZW4gPSAoKSA9PiAncmFuZG9tJyArIE1hdGgucm91bmQoTWF0aC5yYW5kb20oKSAqIDEwMDApO1xuICB0cmFja0J5Q29kZShpbmRleDogbnVtYmVyLCBpdGVtOiBhbnkpIHtcbiAgICByZXR1cm4gaXRlbT8uY29kZTtcbiAgfVxuICB0cmFja0J5SUQoaW5kZXg6IG51bWJlciwgaXRlbTogYW55KSB7XG4gICAgcmV0dXJuIGl0ZW0/LmlkO1xuICB9XG4gIGRpYWxvZ09wZW5lciA9IChcbiAgICBjb21wOiBhbnksXG4gICAgY29uZmlnOiBNYXREaWFsb2dDb25maWcsXG4gICAgdmFsdWVDQjogKHIpID0+IGFueSxcbiAgICBub1ZhbHVlQ0I/OiBhbnlcbiAgKSA9PlxuICAgIHRoaXMuZGlhbG9nT3BlbmVyUmVmKGNvbXAsIGNvbmZpZylcbiAgICAgIC5hZnRlckNsb3NlZCgpXG4gICAgICAuc3Vic2NyaWJlKChyKSA9PiB7XG4gICAgICAgIGlmIChyICE9IG51bGwgJiYgciAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB2YWx1ZUNCKHIpO1xuICAgICAgICB9IGVsc2UgaWYgKG5vVmFsdWVDQikge1xuICAgICAgICAgIG5vVmFsdWVDQigpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgZGlhbG9nT3BlbmVyUmVmID0gKGNvbXA6IGFueSwgY29uZmlnOiBNYXREaWFsb2dDb25maWcpID0+XG4gICAgdGhpcy5kaWFsb2cub3Blbihjb21wLCBjb25maWcpO1xuICBmaW5kTGFiZWxCeUl0ZW0gPSAoXG4gICAgaXRlbSxcbiAgICBhcnI6IGFueVtdLFxuICAgIGxhYmVsRmllbGQ/OiBzdHJpbmcsXG4gICAga2V5RmllbGQ6IHN0cmluZyA9ICdjb2RlJ1xuICApID0+IHtcbiAgICBpZiAoIWl0ZW0pIHJldHVybiBudWxsO1xuICAgIGNvbnN0IG9iaiA9IGFycj8uZmluZCgoeCkgPT4geFtrZXlGaWVsZF0gPT0gaXRlbSk7XG4gICAgaWYgKCFvYmopIHJldHVybiBpdGVtO1xuICAgIGVsc2VcbiAgICAgIHJldHVybiBgJHtpdGVtfSAtICR7XG4gICAgICAgIG9ialtsYWJlbEZpZWxkIHx8ICd0aXRsZSddIHx8IG9ialtsYWJlbEZpZWxkIHx8ICdkZXNjcmlwdGlvbiddXG4gICAgICB9YDtcbiAgfTtcblxuICBmb3JtRmllbGRzRnJvbUFyciA9IHRoaXMuaW5wdXRTZXJ2aWNlLmZvcm1GaWVsZHNGcm9tRkNJbnB1dHNBcnI7XG4gIG9ialRvRm9ybUNvbnRyb2xzID0gdGhpcy5pbnB1dFNlcnZpY2UuZm9ybUZpZWxkc0Zyb21PYmo7XG4gIGZvcm1TY2hlbWFUb0Zvcm1Db250cm9scyA9IHRoaXMuaW5wdXRTZXJ2aWNlLmZvcm1TY2hlbWFUb0Zvcm1Db250cm9scztcblxuICBiaW5kRm9ybUNvbnRyb2xUb0lucHV0cyA9IHRoaXMuaW5wdXRTZXJ2aWNlLmJpbmRGb3JtQ29udHJvbFRvSW5wdXRzO1xuXG4gIGdvID0gKHZhbHVlOiBzdHJpbmcsIGV4dHJhPzogTmF2aWdhdGlvbkV4dHJhcykgPT4ge1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFt2YWx1ZV0sIGV4dHJhKTtcbiAgfTtcbiAgLyoqXG4gICAqIFJvdXRlIHRvIGNvbXBvbmVudFxuICAgKiBAcGFyYW0gcm91dGUgUm91dGUgb2YgcGF0aCB0byBjb21wb25lbnRcbiAgICogQHBhcmFtIGV4dHJhXG4gICAqL1xuICBnb1IgPSAocm91dGU6IHN0cmluZywgZXh0cmE/OiBOYXZpZ2F0aW9uRXh0cmFzKSA9PiB7XG4gICAgaWYgKCEoPEVUU0Vudmlyb25tZW50PnRoaXMuZW52aXJvbm1lbnQpLmFjdGl2YXRlZFJvdXRlKSBkZWJ1Z2dlcjtcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbcm91dGVdLCB7XG4gICAgICByZWxhdGl2ZVRvOiAoPEVUU0Vudmlyb25tZW50PnRoaXMuZW52aXJvbm1lbnQpLmFjdGl2YXRlZFJvdXRlLFxuICAgICAgLi4uZXh0cmEsXG4gICAgfSk7XG4gICAgLy8gZGVidWdnZXI7XG4gIH07XG4gIG1vbmV5UGFyc2VyID0gKGFtb3VudDogc3RyaW5nIHwgbnVtYmVyLCBjdXJyZW5jeSA9ICcgJykgPT4ge1xuICAgIHJldHVybiB0aGlzLmN1cnJlbmN5UGlwZS50cmFuc2Zvcm0oYW1vdW50LCBjdXJyZW5jeSB8fCAnICcpO1xuICB9O1xuICBleHRyYWN0VXBsb2FkKGV2ZW50OiBhbnkpIHtcbiAgICByZXR1cm4gKGV2ZW50LnRhcmdldC5maWxlcyBhcyBGaWxlW10pIHx8IFtdO1xuICB9XG5cbiAgc2Vjb25kc1RvSG91ck1pblNlYyA9IChzZWNvbmRzOiBudW1iZXIpID0+IHtcbiAgICBpZiAoIXNlY29uZHMpIHJldHVybiB7IHNlY3M6IG51bGwsIGhvdXJzOiBudWxsLCBtaW5zOiBudWxsIH07XG4gICAgY29uc3QgaG91cnMgPSBNYXRoLmZsb29yKHNlY29uZHMgLyAzNjAwKSB8fCAwLFxuICAgICAgc2Vjb25kc0V4SG91cnMgPSBzZWNvbmRzICUgMzYwMCB8fCAwLFxuICAgICAgbWlucyA9IE1hdGguZmxvb3Ioc2Vjb25kc0V4SG91cnMgLyA2MCkgfHwgMCxcbiAgICAgIHNlY3MgPSBzZWNvbmRzRXhIb3VycyAlIDYwO1xuICAgIHJldHVybiB7IGhvdXJzLCBtaW5zLCBzZWNzIH07XG4gIH07XG4gIG1pbnV0ZXNUb0RheUhvdXJNaW4gPSAobWludXRlczogbnVtYmVyKSA9PiB7XG4gICAgaWYgKCFtaW51dGVzKSByZXR1cm4geyBkYXlzOiBudWxsLCBob3VyczogbnVsbCwgbWluczogbnVsbCB9O1xuICAgIGNvbnN0IGRheXMgPSBNYXRoLmZsb29yKG1pbnV0ZXMgLyAxNDQwKSB8fCAwLFxuICAgICAgbWluaXV0ZXNFeERheXMgPSBtaW51dGVzICUgMTQ0MCB8fCAwLFxuICAgICAgaG91cnMgPSBNYXRoLmZsb29yKG1pbml1dGVzRXhEYXlzIC8gNjApIHx8IDAsXG4gICAgICBtaW5zID0gbWluaXV0ZXNFeERheXMgJSA2MCB8fCAwO1xuICAgIHJldHVybiB7IGRheXMsIGhvdXJzLCBtaW5zIH07XG4gIH07XG4gIG1pbnV0ZXNUb0RheUhvdXJNaW5TdHIgPSAobWludXRlczogbnVtYmVyKSA9PiB7XG4gICAgaWYgKCFtaW51dGVzKSByZXR1cm4gbnVsbDtcbiAgICBjb25zdCByZXQgPSB0aGlzLm1pbnV0ZXNUb0RheUhvdXJNaW4obWludXRlcyk7XG4gICAgcmV0dXJuIGAke3JldC5kYXlzfSAke3JldC5ob3Vyc306JHtyZXQubWluc31gLnRyaW0oKTtcbiAgfTtcbiAgbWludXRlc1RvRGF5SG91ck1pblN0cjIgPSAobWludXRlczogbnVtYmVyKSA9PiB7XG4gICAgaWYgKCFtaW51dGVzKSByZXR1cm4gbnVsbDtcbiAgICBjb25zdCByZXQgPSB0aGlzLm1pbnV0ZXNUb0RheUhvdXJNaW4obWludXRlcyk7XG4gICAgcmV0dXJuIGAke3JldC5kYXlzfWRheXMgJHtyZXQuaG91cnN9aHJzICR7cmV0Lm1pbnN9bWluc2AudHJpbSgpO1xuICB9O1xuICBkYXlIb3VyTWluVG9Ib3VyTWludXRlcyA9IChkeXM6IG51bWJlciwgaHJzOiBudW1iZXIsIG1pbnM6IG51bWJlcikgPT4ge1xuICAgIGlmICghZHlzICYmICFocnMgJiYgIW1pbnMpIHJldHVybiAnJztcbiAgICBjb25zdCBkeXNUb0hycyA9IChkeXMgfHwgMCkgKiAyNDtcbiAgICBocnMgPSAoK2hycyB8fCAwKSArIGR5c1RvSHJzO1xuICAgIHJldHVybiAoaHJzIHx8ICcwMCcpICsgJzonICsgKG1pbnMgfHwgJzAwJyk7XG4gIH07XG4gIGRpc2FibGVPckVuYWJsZUlucHV0cyA9IChjb250cm9sczogQWJzdHJhY3RDb250cm9sW10sIGRpc2FibGU6IGJvb2xlYW4pID0+IHtcbiAgICBpZiAoZGlzYWJsZSkgdGhpcy5kaXNhYmxlSW5wdXRzKGNvbnRyb2xzKTtcbiAgICBlbHNlIHRoaXMuZW5hYmxlSW5wdXRzKGNvbnRyb2xzKTtcbiAgfTtcbiAgZGlzYWJsZUlucHV0cyA9IChjb250cm9sczogQWJzdHJhY3RDb250cm9sW10pID0+IHtcbiAgICBmb3IgKGNvbnN0IGNvbnRyb2wgb2YgY29udHJvbHMpIHtcbiAgICAgIGNvbnRyb2w/LmRpc2FibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgIH1cbiAgfTtcbiAgZW5hYmxlSW5wdXRzID0gKGNvbnRyb2xzOiBBYnN0cmFjdENvbnRyb2xbXSkgPT4ge1xuICAgIGZvciAoY29uc3QgY29udHJvbCBvZiBjb250cm9scykge1xuICAgICAgY29udHJvbD8uZW5hYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICB9XG4gIH07XG4gIGRheUhvdXJNaW5Ub01pbnV0ZXMgPSAoZHlzOiBudW1iZXIsIGhyczogbnVtYmVyLCBtaW5zOiBudW1iZXIpID0+IHtcbiAgICBpZiAoIWR5cyAmJiAhaHJzICYmICFtaW5zKSByZXR1cm4gMDtcbiAgICBjb25zdCBkeXNUb0hycyA9IChkeXMgfHwgMCkgKiAyNDtcbiAgICBocnMgPSAoK2hycyB8fCAwKSArIGR5c1RvSHJzO1xuICAgIHJldHVybiAoaHJzIHx8IDApICogNjAgKyBtaW5zO1xuICB9O1xuICBob3VyTWluVG9NaW51dGVzID0gKGhyczogbnVtYmVyLCBtaW5zOiBudW1iZXIpID0+IHtcbiAgICBpZiAoIWhycyAmJiAhbWlucykgcmV0dXJuIG51bGw7XG4gICAgcmV0dXJuIChocnMgfHwgMCkgKiA2MCArIG1pbnM7XG4gIH07XG4gIGhvdXJNaW5Ub01pbnV0ZXMyID0gKGhyc01pbnM6IHN0cmluZykgPT4ge1xuICAgIGNvbnN0IFtocnMsIG1pbnNdID0gaHJzTWlucz8uc3BsaXQoJzonKSB8fCBbMCwgMF07XG4gICAgcmV0dXJuIHRoaXMuaG91ck1pblRvTWludXRlcygraHJzLCArbWlucyk7XG4gIH07XG4gIG5vdGlmeShcbiAgICBtZXNzYWdlOiBzdHJpbmcsXG4gICAgY2xzOiAwIHwgMSB8IDIgfCAzID0gMSxcbiAgICBkdXJhdGlvbiA9IDUwMDAsXG4gICAgdGl0bGUgPSAnQ2xvc2UnXG4gICkge1xuICAgIGlmICh0eXBlb2YgbWVzc2FnZSAhPSAnc3RyaW5nJykgY29uc29sZS5lcnJvcihtZXNzYWdlKTtcbiAgICBtZXNzYWdlID1cbiAgICAgIHR5cGVvZiBtZXNzYWdlID09ICdzdHJpbmcnXG4gICAgICAgID8gbWVzc2FnZVxuICAgICAgICA6IGNscyA9PSAwXG4gICAgICAgID8gJ0FuIGVycm9yIG9jY3VycmVkJ1xuICAgICAgICA6ICcnO1xuICAgIHJldHVybiB0aGlzLnNuYWNrQmFyLm9wZW4obWVzc2FnZSwgdGl0bGUsIHtcbiAgICAgIGR1cmF0aW9uLFxuICAgICAgaG9yaXpvbnRhbFBvc2l0aW9uOiAnY2VudGVyJyxcbiAgICAgIHZlcnRpY2FsUG9zaXRpb246ICdib3R0b20nLFxuICAgICAgcGFuZWxDbGFzczpcbiAgICAgICAgY2xzID09IDFcbiAgICAgICAgICA/ICdiZy1zdWNjZXNzJ1xuICAgICAgICAgIDogY2xzID09IDJcbiAgICAgICAgICA/ICdidG4taW5mbydcbiAgICAgICAgICA6IGNscyA9PSAzXG4gICAgICAgICAgPyAnYnRuLXdhcm5pbmcnXG4gICAgICAgICAgOiAnYmctZGFuZ2VyJyxcbiAgICB9KTtcbiAgfVxuXG4gIHNjcm9sbFRvVG9wID0gKCkgPT4gd2luZG93LnNjcm9sbFRvKDAsIDApO1xuXG4gIC8qKlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgY3VycmVudCBkYXRlIHRpbWUgbG9jYWwgdGhhdCBjYW4gYmUgdXNlZCB0byBzZXQgdGhlIGRhdGV0aW1lLWxvY2FsIGlucHV0XG4gICAqL1xuICBnZXRMb2NhbERhdGVUaW1lTm93ID0gKCkgPT4ge1xuICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSgpO1xuICAgIGNvbnN0IGRhdGVDaHVua3MgPSBkYXRlLnRvTG9jYWxlRGF0ZVN0cmluZygpLnNwbGl0KCcvJyk7XG4gICAgcmV0dXJuIChcbiAgICAgIGAke2RhdGVDaHVua3NbMl19LSR7ZGF0ZUNodW5rc1sxXX0tJHtkYXRlQ2h1bmtzWzBdfWAgK1xuICAgICAgJ1QnICtcbiAgICAgIGRhdGUudG9Mb2NhbGVUaW1lU3RyaW5nKClcbiAgICApO1xuICB9O1xuICAvKiogQHJldHVybnMgVGhlIGN1cnJlbnQgZGF0ZSBsb2NhbCB0aGF0IGNhbiBiZSB1c2VkIHRvIHNldCB0aGUgZGF0ZSBpbnB1dCAqL1xuICBsb2NhbERhdGVOb3cgPSAoKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKS5zcGxpdCgnVCcpWzBdO1xuICB9O1xuICBkYXRlRm9ybWF0ID0gKGRhdGU6IGFueSwgZm9ybWF0ID0gMSkgPT4ge1xuICAgIGlmICghZGF0ZSkgcmV0dXJuIG51bGw7XG4gICAgY29uc3QgZCA9IG5ldyBEYXRlKGRhdGUpO1xuICAgIGlmIChmb3JtYXQgPT0gMSkge1xuICAgICAgcmV0dXJuIGQudG9EYXRlU3RyaW5nKCk7XG4gICAgfSBlbHNlIGlmIChmb3JtYXQgPT0gMikge1xuICAgICAgcmV0dXJuIGQuZ2V0RGF0ZSgpICsgJyAnICsgY29uZmlnLk1vbnRoc1tkLmdldE1vbnRoKCldO1xuICAgIH0gZWxzZSBpZiAoZm9ybWF0ID09IDMpIHtcbiAgICAgIHJldHVybiB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybShkYXRlLCBgRUVFIE1NTSBkZCBZWVlZLCBoaDptbSBhYWApO1xuICAgIH0gZWxzZSBpZiAoZm9ybWF0ID09IDQpIHtcbiAgICAgIHJldHVybiBjb25maWcuTW9udGhzW2QuZ2V0TW9udGgoKV0gKyAnICcgKyBkLmdldERhdGUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgfTtcblxuICB0b0phdmFEYXRlU3RyaW5nID0gKGlzb0RhdGVTdHJpbmc6IHN0cmluZyA9IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSkgPT4ge1xuICAgIGlmICghaXNvRGF0ZVN0cmluZykgcmV0dXJuIG51bGw7XG4gICAgcmV0dXJuIGAke2lzb0RhdGVTdHJpbmcuc2xpY2UoMCwgMTkpfWA7XG4gICAgcmV0dXJuIGAke2lzb0RhdGVTdHJpbmcuc2xpY2UoMCwgMTApfSAke2lzb0RhdGVTdHJpbmcuc2xpY2UoMTEsIDE5KX1gO1xuICB9O1xuXG4gIHRvSmF2YURhdGV0aW1lU3RyaW5nID0gKGlzb0RhdGVTdHJpbmc6IHN0cmluZykgPT4ge1xuICAgIGlmICghaXNvRGF0ZVN0cmluZykgcmV0dXJuIG51bGw7XG4gICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKGlzb0RhdGVTdHJpbmcpLnRvSVNPU3RyaW5nKCk7XG4gICAgLy8gZGVidWdnZXI7XG4gICAgLy8gY29uc29sZS5sb2coaXNvRGF0ZVN0cmluZywgZGF0ZSk7XG4gICAgLy8gcmV0dXJuIGAke2lzb0RhdGVTdHJpbmcuc2xpY2UoMCwgMTkpfWA7XG4gICAgcmV0dXJuIGAke2RhdGUuc2xpY2UoMCwgMTApfSAke2RhdGUuc2xpY2UoMTEsIDE5KX1gO1xuICB9O1xuICB0aW1lRm9ybWF0ID0gKHRpbWU/OiBhbnkpID0+IHtcbiAgICBjb25zdCB0aW1lQXJyOiBhbnlbXSA9IHRpbWUuc3BsaXQoJyAnKTtcbiAgICB0aW1lQXJyWzBdID0gdGltZUFyclswXS5zcGxpdCgnOicpLnNwbGljZSgwLCAyKS5qb2luKCc6Jyk7XG4gICAgcmV0dXJuIHRpbWVBcnIuam9pbignICcpO1xuICB9O1xuICBmdWxsRGF0ZVRpbWUgPSAodGltZXN0YW1wOiBzdHJpbmcgfCBudW1iZXIpID0+IHtcbiAgICAvLyBkZWJ1Z2dlclxuICAgIHJldHVybiB0aGlzLmRhdGVGb3JtYXQodGltZXN0YW1wLCAzKTtcbiAgfTtcbiAgZGF5c0Zvcm1hdHRlciA9IChkYXlzOiBudW1iZXIpID0+IHtcbiAgICBpZiAoIWRheXMpIHtcbiAgICAgIHJldHVybiAnLSc7XG4gICAgfVxuICAgIGxldCB5cjogbnVtYmVyLFxuICAgICAgbXQ6IG51bWJlcixcbiAgICAgIGR5OiBudW1iZXIsXG4gICAgICByZXQ6IHN0cmluZyxcbiAgICAgIF95ciA9IDM2NSxcbiAgICAgIF9tdCA9IDMwO1xuICAgIGlmIChkYXlzID4gX3lyKSB7XG4gICAgICB5ciA9IE1hdGguZmxvb3IoZGF5cyAvIF95cik7XG4gICAgfVxuICAgIGlmIChkYXlzID4gX210KSB7XG4gICAgICBtdCA9IE1hdGguZmxvb3IoKGRheXMgJSBfeXIpIC8gX210KTtcbiAgICB9XG4gICAgZHkgPSAoZGF5cyAlIF95cikgJSBfbXQ7XG4gICAgcmV0ID0gYCR7eXIgPyB0aGlzLnBsdWFybGl6ZXIoeXIsICd5cicpIDogJyd9ICR7XG4gICAgICBtdCA/IHRoaXMucGx1YXJsaXplcihtdCwgJ210aCcpIDogJydcbiAgICB9ICR7dGhpcy5wbHVhcmxpemVyKGR5LCAnZHknKX1gO1xuICAgIHJldHVybiByZXQ7XG4gIH07XG4gIG1vbnRoc0Zvcm1hdHRlciA9IChtb250aHM6IG51bWJlcikgPT4ge1xuICAgIGlmICghbW9udGhzKSB7XG4gICAgICByZXR1cm4gJy0nO1xuICAgIH1cbiAgICBsZXQgeXI6IG51bWJlcixcbiAgICAgIG10OiBudW1iZXIsXG4gICAgICByZXQ6IHN0cmluZyxcbiAgICAgIF95ciA9IDEyO1xuICAgIGlmIChtb250aHMgPiBfeXIpIHtcbiAgICAgIHlyID0gTWF0aC5mbG9vcihtb250aHMgLyBfeXIpO1xuICAgIH1cbiAgICBtdCA9IG1vbnRocyAlIF95cjtcbiAgICByZXQgPSBgJHt5ciA/IHRoaXMucGx1YXJsaXplcih5ciwgJ3lyJykgOiAnJ30gJHtcbiAgICAgIG10ID8gdGhpcy5wbHVhcmxpemVyKG10LCAnbXRoJykgOiAnJ1xuICAgIH1gO1xuICAgIHJldHVybiByZXQ7XG4gIH07XG4gIHBsdWFybGl6ZXIgPSAodmFsOiBudW1iZXIsIHR4dDogc3RyaW5nLCBwbHVyYWw/OiBzdHJpbmcpID0+IHtcbiAgICBwbHVyYWwgPSBwbHVyYWwgfHwgdHh0ICsgJ3MnO1xuICAgIHJldHVybiB2YWwgKyAodmFsID09IDEgPyB0eHQgOiBwbHVyYWwpO1xuICB9O1xuICBkZWNpbWFsVG9QZXJjZW50YWdlID0gKGRlYzogbnVtYmVyKSA9PiB7XG4gICAgcmV0dXJuIGRlYyAqIDEwMCArICclJztcbiAgfTtcbiAgbG9nRm9ybSA9IChmb3JtKSA9PiB7XG4gICAgY29uc29sZS5sb2coJ0ZPUk0nLCBmb3JtLCAnVkFMVUVTJywgZm9ybS52YWx1ZSBhcyBhbnkpO1xuICB9O1xuXG4gIHRvQ1NWKGRhdGE6IGFueVtdLCBoZWFkZXJOYW1lczogc3RyaW5nW10sIGZpbGVuYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCByZXBsYWNlciA9IChrZXksIHZhbHVlKSA9PiAodmFsdWUgPT09IG51bGwgPyAnJyA6IHZhbHVlKTsgLy8gc3BlY2lmeSBob3cgeW91IHdhbnQgdG8gaGFuZGxlIG51bGwgdmFsdWVzIGhlcmVcblxuICAgIGxldCBjc3YgPSBkYXRhLm1hcCgocm93KSA9PlxuICAgICAgaGVhZGVyTmFtZXNcbiAgICAgICAgLm1hcCgoZmllbGROYW1lKSA9PiBKU09OLnN0cmluZ2lmeShyb3dbZmllbGROYW1lXSwgcmVwbGFjZXIpKVxuICAgICAgICAuam9pbignLCcpXG4gICAgKTtcbiAgICBjc3YudW5zaGlmdChoZWFkZXJOYW1lcy5qb2luKCcsJykpO1xuICAgIGxldCBjc3ZBcnJheSA9IGNzdi5qb2luKCdcXHJcXG4nKTtcblxuICAgIHZhciBibG9iID0gbmV3IEJsb2IoW2NzdkFycmF5XSwgeyB0eXBlOiAndGV4dC9jc3YnIH0pO1xuICAgIHNhdmVBcyhibG9iLCBmaWxlbmFtZSArICcuY3N2Jyk7XG4gIH1cblxuICBpc1BpY3R1cmVGb3JtYXQoZmlsZU5hbWU6IHN0cmluZykge1xuICAgIGlmICghZmlsZU5hbWUpIHJldHVybiBmYWxzZTtcbiAgICBjb25zdCBQSUNUVVJFX0ZPUk1BVFMgPSBbJy5qcGcnLCAnLmpwZWcnLCAnLnBuZycsICcuZ2lmJ107XG4gICAgcmV0dXJuIFBJQ1RVUkVfRk9STUFUUy5zb21lKChmb3JtYXQpID0+IGZpbGVOYW1lLmVuZHNXaXRoKGZvcm1hdCkpO1xuICB9XG4gIG9iamVjdFRvQXJyYXk8VD4ob2JqOiBhbnkpIHtcbiAgICBjb25zdCByZXQgPSBbXTtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBvYmopIHtcbiAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpKSB7XG4gICAgICAgIHJldC5wdXNoKG9ialtrZXldKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJldCBhcyBUW107XG4gIH1cbiAgLy8jcmVnaW9uIHJvdXRlXG4gIHJvdXRlUGFyYW1zMSA9IHRoaXMucm91dGVTZXJ2aWNlLnJvdXRlUGFyYW1zMTtcbiAgcm91dGVQYXJhbXMyID0gdGhpcy5yb3V0ZVNlcnZpY2Uucm91dGVQYXJhbXMyO1xuICByb3V0ZVBhcmFtczMgPSB0aGlzLnJvdXRlU2VydmljZS5yb3V0ZVBhcmFtczM7XG4gIC8vI2VuZHJlZ2lvblxuICBzdGFydFBsID0gdGhpcy5wUy5zdGFydFBsO1xuICBzdG9wUGwgPSB0aGlzLnBTLnN0b3BQbDtcbn1cbiJdfQ==
|
|
584
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbGl0eS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXRzLWZlLW5nLXNkay9zcmMvbGliL1NlcnZpY2VzL3V0aWxpdHkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBVTNDLE9BQU8sR0FBRyxNQUFNLGtCQUFrQixDQUFDO0FBRW5DLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxJQUFJLE1BQU0sRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRW5FLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDcEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQVNoRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3RDLE9BQU8sRUFDTCxZQUFZLEVBQ1osYUFBYSxFQUNiLEtBQUssRUFDTCxVQUFVLEVBQ1YsRUFBRSxFQUNGLGFBQWEsR0FDZCxNQUFNLE1BQU0sQ0FBQztBQUNkLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV0RCxPQUFPLEVBQXNCLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7Ozs7Ozs7Ozs7O0FBR3RFLE1BQ2EsaUJBQWlCO0lBYTVCLFlBQ1MsTUFBaUIsRUFDakIsUUFBcUIsRUFDckIsTUFBYyxFQUNkLE1BQWEsRUFDYixRQUFrQixFQUNsQixZQUFpQixFQUNqQixZQUEwQixFQUMxQixFQUFxQixFQUNyQixZQUEwQixFQUMxQixhQUE0QixFQUM1QixhQUE0QixFQUM1QixLQUFrQixFQUNsQixVQUE4QixF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QUFDLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBQ0QsYUFBYSxDQUFJLEdBQVE7UUFDdkIsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDO1FBQ2YsS0FBSyxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQUU7WUFDckIsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFO2dCQUNsRCxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2FBQ3BCO1NBQ0Y7UUFDRCxPQUFPLEdBQVUsQ0FBQztJQUNwQixDQUFDOzhHQXBtQlUsaUJBQWlCO2tIQUFqQixpQkFBaUIsY0FESixNQUFNOztTQUNuQixpQkFBaUI7MkZBQWpCLGlCQUFpQjtrQkFEN0IsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDdXJyZW5jeVBpcGUsXG4gIERhdGVQaXBlLFxuICBMb2NhdGlvbixcbiAgVGl0bGVDYXNlUGlwZSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIE1hdERpYWxvZyBhcyBNYXREaWFsb2csXG4gIE1hdERpYWxvZ0NvbmZpZyBhcyBNYXREaWFsb2dDb25maWcsXG59IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBNYXRTbmFja0JhciBhcyBNYXRTbmFja0JhciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NuYWNrLWJhcic7XG5pbXBvcnQgeyBUaXRsZSB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgUm91dGVyLCBOYXZpZ2F0aW9uRXh0cmFzIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEVUU1JlYWN0aXZlRm9ybUlucHV0U2VydmljZSBhcyBJUzEgfSBmcm9tICcuL2lucHV0LnNlcnZpY2UnO1xuaW1wb3J0IHsgUm91dGVTZXJ2aWNlIH0gZnJvbSAnLi9yb3V0ZS5zZXJ2aWNlJztcbmltcG9ydCBqZmQgZnJvbSAnanMtZmlsZS1kb3dubG9hZCc7XG5pbXBvcnQgeyBQYWdlTG9hZGVyU2VydmljZSB9IGZyb20gJy4vcGFnZS1sb2FkZXIuc2VydmljZSc7XG5pbXBvcnQgeyBDb25maWcsIENvbmZpZyBhcyBjb25maWcgfSBmcm9tICcuLi9jb25maWdzL2luZGV4LmNvbmZpZyc7XG5pbXBvcnQgeyBBcHBSb3V0ZUJhc2UgfSBmcm9tICcuLi9TaGFyZWQvbW9kZWxzL1JvdXRlSXRlbS5jbGFzcyc7XG5pbXBvcnQgeyBzYXZlQXMgfSBmcm9tICdmaWxlLXNhdmVyJztcbmltcG9ydCB7IEVWYWxpZGF0aW9uVHlwZSB9IGZyb20gJy4uL1NoYXJlZC9tb2RlbHMvaW5kZXgubW9kZWwnO1xuaW1wb3J0IHsgRVRTZW52aXJvbm1lbnQgfSBmcm9tICcuLi8uLi9lbnZpcm9ubWVudHMvZW52aXJvbm1lbnQnO1xuaW1wb3J0IHsgUGFnZVNlcnZpY2UgfSBmcm9tICcuL3BhZ2Uuc2VydmljZSc7XG5pbXBvcnQge1xuICBBYnN0cmFjdENvbnRyb2wsXG4gIEZvcm1BcnJheSxcbiAgRm9ybUNvbnRyb2wsXG4gIFVudHlwZWRGb3JtQXJyYXksXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IExvZ2dlclNlcnZpY2UgfSBmcm9tICcuLi9SZXVzYWJsZXMvcmV1c2FibGUtcGFnZXMvbG9nZ2VyL2xvZ2dlci5zZXJ2aWNlJztcbmltcG9ydCB7IGNsb25lRGVlcCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQge1xuICBpc09ic2VydmFibGUsXG4gIGxhc3RWYWx1ZUZyb20sXG4gIG1lcmdlLFxuICBPYnNlcnZhYmxlLFxuICBvZixcbiAgUmVwbGF5U3ViamVjdCxcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBFRVRTUGFnZUJ0bklEIH0gZnJvbSAnLi4vU2hhcmVkL21vZGVscy9JTWVudUl0ZW0nO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBFVFNFbnZpcm9ubWVudCB9IGZyb20gJy4uL1NoYXJlZC9tb2RlbHMvZW52aXJvbm1lbnQubW9kZWwnO1xuaW1wb3J0IHsgQnJlYWtwb2ludE9ic2VydmVyLCBCcmVha3BvaW50cyB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9sYXlvdXQnO1xuZGVjbGFyZSBjb25zdCAkOiBhbnk7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgRVRTVXRpbGl0eVNlcnZpY2U8VEVudmlyb25tZW50ID0gRVRTRW52aXJvbm1lbnQ+IHtcbiAgcjogQXBwUm91dGVCYXNlO1xuICBkb3dubG9hZGVyID0gamZkO1xuICBlVmFsaWRhdGlvblR5cGUgPSBFVmFsaWRhdGlvblR5cGU7XG4gIGNvbmZpZyA9IENvbmZpZztcbiAgZW52aXJvbm1lbnQ6IFRFbnZpcm9ubWVudCA9IEVUU2Vudmlyb25tZW50IGFzIGFueTtcbiAgcGJpZCA9IEVFVFNQYWdlQnRuSUQ7XG4gICQ6IGFueTtcbiAgaXNNb2JpbGU6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBFbWl0cyB0cnVlIGlmIG1vYmlsZVxuICAgKi9cbiAgbW9iaWxlUXVlcnlDaGFuZ2VkID0gbmV3IFJlcGxheVN1YmplY3Q8Ym9vbGVhbj4oKTtcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGRpYWxvZzogTWF0RGlhbG9nLFxuICAgIHB1YmxpYyBzbmFja0JhcjogTWF0U25hY2tCYXIsXG4gICAgcHVibGljIHJvdXRlcjogUm91dGVyLFxuICAgIHB1YmxpYyB0aXRsZVM6IFRpdGxlLFxuICAgIHB1YmxpYyBsb2NhdGlvbjogTG9jYXRpb24sXG4gICAgcHVibGljIGlucHV0U2VydmljZTogSVMxLFxuICAgIHB1YmxpYyByb3V0ZVNlcnZpY2U6IFJvdXRlU2VydmljZSxcbiAgICBwdWJsaWMgcFM6IFBhZ2VMb2FkZXJTZXJ2aWNlLFxuICAgIHB1YmxpYyBjdXJyZW5jeVBpcGU6IEN1cnJlbmN5UGlwZSxcbiAgICBwdWJsaWMgdGl0bGVDYXNlUGlwZTogVGl0bGVDYXNlUGlwZSxcbiAgICBwdWJsaWMgbG9nZ2VyU2VydmljZTogTG9nZ2VyU2VydmljZSxcbiAgICBwdWJsaWMgcGFnZVM6IFBhZ2VTZXJ2aWNlLFxuICAgIHB1YmxpYyByZXNwb25zaXZlOiBCcmVha3BvaW50T2JzZXJ2ZXIsXG4gICAgcHVibGljIGRhdGVQaXBlOiBEYXRlUGlwZVxuICApIHtcbiAgICByZXNwb25zaXZlLm9ic2VydmUoW0JyZWFrcG9pbnRzLkhhbmRzZXRQb3J0cmFpdF0pLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XG4gICAgICBjb25zdCBicmVha3BvaW50cyA9IHJlc3VsdC5icmVha3BvaW50cztcblxuICAgICAgaWYgKGJyZWFrcG9pbnRzW0JyZWFrcG9pbnRzLkhhbmRzZXRQb3J0cmFpdF0pIHtcbiAgICAgICAgdGhpcy5pc01vYmlsZSA9IHRydWU7XG4gICAgICAgIHRoaXMubW9iaWxlUXVlcnlDaGFuZ2VkLm5leHQodHJ1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmlzTW9iaWxlID0gZmFsc2U7XG4gICAgICAgIHRoaXMubW9iaWxlUXVlcnlDaGFuZ2VkLm5leHQoZmFsc2UpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIC8vIGlmICgkKSB0aGlzLiQgPSAkO1xuICB9XG5cbiAgYmFjayA9ICgpID0+IHRoaXMubG9jYXRpb24uYmFjaygpO1xuXG4gIG9ubHlPbmVJbnB1dChpbnB1dHM6IEZvcm1Db250cm9sW10pIHtcbiAgICBjb25zdCBuSW5wdXRzID0gaW5wdXRzPy5tYXAoKGlucCkgPT4gKHsgaWQ6IHRoaXMuZ2VuUmFuZG9tSUQsIGlucCB9KSkgfHwgW107XG4gICAgbWVyZ2UoXG4gICAgICAuLi5uSW5wdXRzLm1hcCgoaSkgPT5cbiAgICAgICAgaS5pbnAudmFsdWVDaGFuZ2VzLnBpcGUobWFwKCh2YWwpID0+ICh7IGlkOiBpLmlkLCB2YWwgfSkpKVxuICAgICAgKVxuICAgICkuc3Vic2NyaWJlKChyKSA9PiB7XG4gICAgICAvLyBkZWJ1Z2dlclxuICAgICAgaWYgKHIudmFsKVxuICAgICAgICBuSW5wdXRzXG4gICAgICAgICAgLmZpbHRlcigoeCkgPT4geC5pZCAhPSByLmlkKVxuICAgICAgICAgIC5mb3JFYWNoKCh4KSA9PiB4LmlucC5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KSk7XG4gICAgICBlbHNlXG4gICAgICAgIG5JbnB1dHNcbiAgICAgICAgICAuZmlsdGVyKCh4KSA9PiB4LmlkICE9IHIuaWQpXG4gICAgICAgICAgLmZvckVhY2goKHgpID0+IHguaW5wLmVuYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSkpO1xuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgY29weVBheWxvYWQocGF5bG9hZCkge1xuICAgIHRyeSB7XG4gICAgICBpZiAoKDxFVFNFbnZpcm9ubWVudD50aGlzLmVudmlyb25tZW50KS5kZWJ1Zykge1xuICAgICAgICBjb25zdCBlbGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGV4dGFyZWEnKTtcbiAgICAgICAgZWxlbS52YWx1ZSA9IEpTT04uc3RyaW5naWZ5KHBheWxvYWQpO1xuICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGVsZW0pO1xuICAgICAgICBlbGVtLnNlbGVjdCgpO1xuICAgICAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgnY29weScpO1xuICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGVsZW0pO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgfVxuICB9XG4gIHhPclkgPSAoeCwgeSA9ICctJykgPT4gYCR7eCA9PSBudWxsID8geSA6IHh9YDtcbiAgdG9UaXRsZUNhc2UodGV4dDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMudGl0bGVDYXNlUGlwZS50cmFuc2Zvcm0odGV4dCk7XG4gIH1cbiAgLyoqXG4gICAqIENvbnZlcnQgRGF0ZSBzdHJpbmcgdG8gRGF0ZSBUaW1lIHN0cmluZ1xuICAgKiBAcGFyYW0gZGF0ZVN0ciBEYXRlIHN0cmluZ1xuICAgKiBAZXhhbXBsZSAnMjAyMi0wMS0yNSdcbiAgICogQHBhcmFtIGNvbmZpZyBDb25maWd1cmF0aW9uIGZvciB0aGUgY29udmVyc2lvblxuICAgKiBAcmV0dXJucyBSZXR1cm5zIGEgRGF0ZSBUaW1lIHN0cmluZ1xuICAgKiBAZXhhbXBsZSAnMjAyMi0wMS0yNVQwMDowMDowMFonIG9yICcyMDIyLTAxLTI1IDAwOjAwOjAwJ1xuICAgKi9cbiAgZGF0ZVRvRGF0ZVRpbWUgPSAoXG4gICAgZGF0ZVN0cjogc3RyaW5nLFxuICAgIGNvbmZpZz86IHtcbiAgICAgIC8qKlxuICAgICAgICogVXNlIHRoZSB5eXl5LW1tLWRkIGhoOm1tOnNzIGZvcm1hdFxuICAgICAgICovXG4gICAgICBvbWl0VD86IGJvb2xlYW47XG4gICAgfVxuICApID0+IHtcbiAgICBjb25zdCBvbWl0VCA9ICEhY29uZmlnPy5vbWl0VDtcbiAgICBpZiAoIWRhdGVTdHIpIHJldHVybiBudWxsO1xuICAgIGlmIChkYXRlU3RyLmluY2x1ZGVzKCdUJykpIHJldHVybiBkYXRlU3RyO1xuICAgIHJldHVybiBkYXRlU3RyICsgKG9taXRUID8gJyAwMDowMDowMCcgOiAnVDAwOjAwOjAwWicpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBTZXQgYW4gT2JqZWN0J3MgZmllbGQgaWYgdGhlIG9iamVjdCBleGlzdHMgb3IgZG9uJ3QgaWYgdGhlIG9iamVjdCBkb2Vzbid0XG4gICAqIEBwYXJhbSBvYmogT2JqZWN0IGhvbGRpbmcgdGhlIGZpZWxkXG4gICAqIEBwYXJhbSBmaWVsZE5hbWUgTmFtZSBvZiB0aGUgZmllbGQgdG8gc2V0XG4gICAqIEBwYXJhbSB2YWwgVmFsdWUgdG8gc2V0IHRoZSBmaWVsZCB3aXRoXG4gICAqIEByZXR1cm5zIFJldHVybnMgdGhlIG9iamVjdCBob2xkaW5nIHRoZSBkYXRhXG4gICAqL1xuICBzZXR0ZXJXaXRoTnVsbDxUPihvYmo6IFQsIGt2cHM6IFBhcnRpYWw8VD4pIHtcbiAgICBpZiAoIW9iaikgcmV0dXJuIG51bGw7XG4gICAgZm9yIChjb25zdCBrZXkgaW4ga3Zwcykge1xuICAgICAgb2JqW2tleV0gPSBrdnBzW2tleV07XG4gICAgfVxuICAgIHJldHVybiBvYmo7XG4gIH1cblxuICAvKipcbiAgICogKFNldCBhbiBPYmplY3QncyBmaWVsZCBpZiB0aGUgb2JqZWN0IGV4aXN0cyBvciBkb24ndCBpZiB0aGUgb2JqZWN0IGRvZXNuJ3QpIGZvciBtdWx0aXBsZSBlbnRyaWVzXG4gICAqIEBwYXJhbSBpdGVtcyBBcnJheSBvZiBvYmplY3RzIGFuZCB0aGVpciBtb2RpZmljYXRpb25zXG4gICAqL1xuICBzZXR0ZXJXaXRoTnVsbEFycmF5PFQ+KGl0ZW1zOiB7IG9iajogVDsga3ZwczogUGFydGlhbDxUPiB9W10pIHtcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXMpIHtcbiAgICAgIHRoaXMuc2V0dGVyV2l0aE51bGwoaXRlbS5vYmosIGl0ZW0ua3Zwcyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgdGhlIGRlbGV0aW9uIG9mIHJvd3MgZnJvbSBhIEZvcm1BcnJheVxuICAgKiBAcGFyYW0gaW5kZXggSW5kZXggb2YgdGhlIHJvdyB0byBkZWxldGVcbiAgICogQHBhcmFtIGZhIFRoZSBGb3JtQXJyYXkgdGhhdCBob2xkcyB0aGUgcm93c1xuICAgKiBAcGFyYW0gZGVsZXRlU2VydmljZSBUaGUgZGVsZXRpb24gc2VydmljZSB0byBiZSBjYWxsZWQgKEl0IHNob3VsZCBiZSBhbiBhbm9ueW1vdXMgZnVuY3Rpb24pXG4gICAqIEBwYXJhbSBhZGRSb3dGdW5jIFRoZSBmdW5jdGlvbiAoYW5vbnltb3VzKSB0aGF0IGFkZHMgYSBuZXcgcm93IHRvIHRoZSBGb3JtQXJyYXlcbiAgICogQHBhcmFtIGVtaXRFdmVudCBTcGVjaWZ5IHdoZXRoZXIgdG8gZW1pdCBhbiBldmVudCB3aGVuIG1hbmlwdWxhdGluZyB0aGUgRm9ybUFycmF5XG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBoYW5kbGVGb3JtUm93RGVsZXRlID0gKFxuICAgIGluZGV4OiBudW1iZXIsXG4gICAgZmE6IFVudHlwZWRGb3JtQXJyYXksXG4gICAgZGVsZXRlU2VydmljZTogKC4uLmFyZ3MpID0+IFByb21pc2U8YW55PiB8IE9ic2VydmFibGU8YW55PixcbiAgICBhZGRSb3dGdW5jOiAoLi4uYXJncykgPT4gYW55LFxuICAgIGV4dHJhQ29uZmlnPzoge1xuICAgICAgZG9udEVtaXRFdmVudD86IGJvb2xlYW47XG4gICAgICBvbkRlbGV0ZT86IChyZXMpID0+IGFueTtcbiAgICB9XG4gICkgPT4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTxhbnk+KChyZXNvbHZlKSA9PiB7XG4gICAgICBjb25zdCBpZCA9IGNsb25lRGVlcChmYS5jb250cm9sc1tpbmRleF0/LnZhbHVlPy5pZCk7XG4gICAgICAvLyBkZWJ1Z2dlcjtcbiAgICAgIGlmIChmYS5jb250cm9scy5sZW5ndGggPT0gMSAmJiBpZCkge1xuICAgICAgICBmYS5yZW1vdmVBdChpbmRleCwgeyBlbWl0RXZlbnQ6ICFleHRyYUNvbmZpZz8uZG9udEVtaXRFdmVudCB9KTtcbiAgICAgICAgYWRkUm93RnVuYygpO1xuICAgICAgfSBlbHNlIGlmIChmYS5jb250cm9scy5sZW5ndGggPiAxKVxuICAgICAgICBmYS5yZW1vdmVBdChpbmRleCwgeyBlbWl0RXZlbnQ6ICFleHRyYUNvbmZpZz8uZG9udEVtaXRFdmVudCB9KTtcbiAgICAgIGVsc2UgaWYgKGZhLmNvbnRyb2xzLmxlbmd0aCA9PSAxKSBmYS5jb250cm9sc1swXS5yZXNldCgpO1xuXG4gICAgICBpZiAoaWQgJiYgZGVsZXRlU2VydmljZSkge1xuICAgICAgICBjb25zdCByZXEgPSBkZWxldGVTZXJ2aWNlKGlkKTtcbiAgICAgICAgaWYgKHJlcVsndG9Qcm9taXNlJ10pIHtcbiAgICAgICAgICByZXNvbHZlKGxhc3RWYWx1ZUZyb20ocmVxIGFzIE9ic2VydmFibGU8YW55PikpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc29sdmUocmVxIGFzIGFueSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc29sdmUobnVsbCk7XG4gICAgICB9XG4gICAgfSkudGhlbigocikgPT4ge1xuICAgICAgZXh0cmFDb25maWc/Lm9uRGVsZXRlKHIpO1xuICAgICAgcmV0dXJuIHI7XG4gICAgfSk7XG4gIH07XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgdGhlIGRlbGV0aW9uIG9mIHJvd3MgZnJvbSBhbiBhcnJheVxuICAgKiBAcGFyYW0gaW5kZXggSW5kZXggb2YgdGhlIHJvdyB0byBkZWxldGVcbiAgICogQHBhcmFtIGFyciBUaGUgYXJyYXkgdGhhdCBob2xkcyB0aGUgcm93c1xuICAgKiBAcGFyYW0gZGVsZXRlU2VydmljZSBUaGUgZGVsZXRpb24gc2VydmljZSB0byBiZSBjYWxsZWQgKEl0IHNob3VsZCBiZSBhbiBhbm9ueW1vdXMgZnVuY3Rpb24pXG4gICAqIEBwYXJhbSBhZGRSb3dGdW5jIFRoZSBmdW5jdGlvbiAoYW5vbnltb3VzKSB0aGF0IGFkZHMgYSBuZXcgcm93IHRvIHRoZSBhcnJheVxuICAgKiBAcGFyYW0gY2IgVGhlIGZ1bmN0aW9uIHRvIGNhbGxiYWNrIHdpdGggdGhlIHJlc3BvbnNlIG9mIHRoZSBkZWxldGlvbiBzZXJ2aWNlIGFzIHRoZSBpbnB1dCBwYXJhbWV0ZXJcbiAgICovXG4gIGhhbmRsZVJvd0RlbGV0ZSA9IGFzeW5jIDxUPihcbiAgICBpbmRleDogbnVtYmVyLFxuICAgIGFycjogYW55W10sXG4gICAgZGVsZXRlU2VydmljZTogKC4uLmFyZ3MpID0+IFByb21pc2U8VD4gfCBPYnNlcnZhYmxlPFQ+LFxuICAgIGFkZFJvd0Z1bmM6ICguLi5hcmdzKSA9PiBhbnksXG4gICAgY2I/OiAoYW55KSA9PiBhbnlcbiAgKSA9PiB7XG4gICAgY29uc3QgaWQgPSBhcnJbaW5kZXhdPy5pZDtcbiAgICAvLyBkZWJ1Z2dlcjtcblxuICAgIGlmIChpZCAmJiBkZWxldGVTZXJ2aWNlKSB7XG4gICAgICBjb25zdCByZXEgPSBkZWxldGVTZXJ2aWNlKGlkKTtcbiAgICAgIGlmICh0eXBlb2YgcmVxWyd0b1Byb21pc2UnXSA9PSAnZnVuY3Rpb24nKVxuICAgICAgICBjYiA/IGNiKGF3YWl0IHJlcVsndG9Qcm9taXNlJ10oKSkgOiByZXFbJ3RvUHJvbWlzZSddKCk7XG4gICAgICBlbHNlIGNiID8gY2IoYXdhaXQgcmVxKSA6IG51bGw7XG4gICAgfVxuXG4gICAgaWYgKGFyci5sZW5ndGggPT0gMSkge1xuICAgICAgYXJyLnNwbGljZShpbmRleCwgMSk7XG4gICAgICBhZGRSb3dGdW5jKCk7XG4gICAgfSBlbHNlIGlmIChhcnIubGVuZ3RoID4gMSkgYXJyLnNwbGljZShpbmRleCwgMSk7XG4gIH07XG4gIC8qKlxuICAgKiBUbyBoYW5kbGUgdGhlIHBhdGNoaW5nIG9mIGEgRm9ybUFycmF5XG4gICAqIEBwYXJhbSBhcnIgVGhlIGFycmF5IHRoYXQgY29udGFpbnMgdGhlIGRhdGFcbiAgICogQHBhcmFtIGFkZEZ1bmMgVGhlIGZ1bmN0aW9uIHRoYXQgcGVyZm9ybXMgYWRkaXRpb24gb2Ygc2luZ2xlIGVudHJpZXNcbiAgICogQHBhcmFtIGZvcm1BcnIgVGhlIEZvcm1BcnJheSB0aGF0IHdpbGwgaG9sZCB0aGUgYXJyYXkncyBkYXRhXG4gICAqL1xuICBpbml0UGF0Y2hGb3JtQXJyYXkgPSAoXG4gICAgYXJyOiBhbnlbXSxcbiAgICBhZGRGdW5jOiAoaTogbnVtYmVyLCBkYXRhPzogYW55LCBmb3JtQXJyPzogRm9ybUFycmF5KSA9PiB2b2lkLFxuICAgIGZvcm1BcnI6IEZvcm1BcnJheVxuICApID0+IHtcbiAgICAvLyBkZWJ1Z2dlclxuICAgIGlmIChhcnI/Lmxlbmd0aCkge1xuICAgICAgaWYgKGZvcm1BcnIubGVuZ3RoKSBmb3JtQXJyLmNsZWFyKCk7XG4gICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgYXJyKSB7XG4gICAgICAgIGFkZEZ1bmMoZm9ybUFyci5sZW5ndGgsIGl0ZW0sIGZvcm1BcnIpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIWZvcm1BcnIubGVuZ3RoKSBhZGRGdW5jKGZvcm1BcnIubGVuZ3RoLCBudWxsLCBmb3JtQXJyKTtcbiAgICB9XG4gIH07XG4gIHByaXZhdGUgaXNQcm9taXNlID0gKGZ1bmMpID0+IHtcbiAgICByZXR1cm4gdHlwZW9mIGZ1bmMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBmdW5jLnRoZW4gPT09ICdmdW5jdGlvbic7XG4gIH07XG4gIGlzQXN5bmMgPSAoZnVuYykgPT4ge1xuICAgIHJldHVybiAoXG4gICAgICBmdW5jLmNvbnN0cnVjdG9yLm5hbWUgPT09ICdBc3luY0Z1bmN0aW9uJyB8fFxuICAgICAgKHR5cGVvZiBmdW5jID09PSAnZnVuY3Rpb24nICYmIHRoaXMuaXNQcm9taXNlKGZ1bmMoKSkpXG4gICAgKTtcbiAgfTtcblxuICBpc09ic2VydmFibGUgPSA8VD4oZnVuYykgPT4ge1xuICAgIC8vIHJldHVybiB0eXBlb2YgZnVuYyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIGZ1bmMuc3Vic2NyaWJlID09PSAnZnVuY3Rpb24nO1xuICAgIC8vIHJldHVybiB0eXBlb2YgZnVuYyA9PT0gJ29iamVjdCcgJiYgZnVuYyBpbnN0YW5jZW9mIE9ic2VydmFibGU7XG4gICAgLy8gcmV0dXJuIHR5cGVvZiBmdW5jID09PSAnb2JqZWN0JyAmJiBmdW5jIGluc3RhbmNlb2YgT2JzZXJ2YWJsZTxUPjtcbiAgICByZXR1cm4gdHlwZW9mIGZ1bmMgPT09ICdvYmplY3QnICYmIGlzT2JzZXJ2YWJsZShmdW5jKTtcbiAgICByZXR1cm4gdHlwZW9mIGZ1bmMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBmdW5jLnRvUHJvbWlzZSA9PT0gJ2Z1bmN0aW9uJztcbiAgfTtcbiAgcHJvbWlzaWZ5VmFsID0gPFQ+KHZhbDogVCB8IFByb21pc2U8VD4gfCBPYnNlcnZhYmxlPFQ+KSA9PiB7XG4gICAgaWYgKHRoaXMuaXNBc3luYyh2YWwpKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHZhbCBhcyBQcm9taXNlPFQ+KTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXNPYnNlcnZhYmxlKHZhbCkpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUobGFzdFZhbHVlRnJvbSh2YWwgYXMgT2JzZXJ2YWJsZTxUPikpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHZhbCBhcyBUKTtcbiAgICB9XG4gIH07XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBhcnIgQXJyYXkgb2Ygb2JzZXJ2YWJsZXMgdG8gZmV0Y2hcbiAgICogQHJldHVybnMgQW4gYXJyYXkgb2YgdGhlIHJlc3BvbnNlcyBtZXJnZWQgdG9nZXRoZXIuIEl0IGVtaXRzIHRoZSBtZXJnZWQgcmVzcG9uc2VzIGFzIHRoZXkgYXJlIGZldGNoZWQgYW5kIGNsb3NlcyBvbmNlIGFsbGwgdGhlIHJlc3BvbnNlcyBoYXZlIGJlZW4gZmV0Y2hlZFxuICAgKi9cbiAgbWVyZ2VBcnJPYnNlcnZhYmxlcyA9IDxUPihhcnI6IHsgJGZ1bmM6IE9ic2VydmFibGU8VFtdPiB9W10pID0+IHtcbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGU8VFtdPigoc3ViKSA9PiB7XG4gICAgICBjb25zdCByZXQ6IFRbXSA9IFtdO1xuICAgICAgbGV0IHJlc3BvbnNlQ291bnQgPSAwO1xuICAgICAgbWVyZ2UoXG4gICAgICAgIC4uLmFyci5tYXAoKHgpID0+XG4gICAgICAgICAgeC4kZnVuYz8ucGlwZShcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKGUpID0+IHtcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICAgICAgICAgICAgcmV0dXJuIG9mKFtdKTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgdGFwKChyKSA9PiB7XG4gICAgICAgICAgICAgIHJlc3BvbnNlQ291bnQrKztcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICApLnN1YnNjcmliZSgocikgPT4ge1xuICAgICAgICByZXQucHVzaCguLi5yKTtcbiAgICAgICAgc3ViLm5leHQocmV0KTtcbiAgICAgICAgaWYgKHJlc3BvbnNlQ291bnQgPT0gYXJyLmZpbHRlcigoeCkgPT4geC4kZnVuYykubGVuZ3RoKSB7XG4gICAgICAgICAgLy8gZGVidWdnZXJcbiAgICAgICAgICBzdWIuY29tcGxldGUoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH07XG4gIHJlbW92ZUR1cGxpY2F0ZTxUPihsaXN0OiBUW10sIGtleUZpZWxkID0gJ2NvZGUnKSB7XG4gICAgaWYgKCFsaXN0KSByZXR1cm4gbnVsbDtcbiAgICBsaXN0ID0gbGlzdC5maWx0ZXIoKHgpID0+IHgpO1xuICAgIGNvbnN0IHJldDogVFtdID0gW10sXG4gICAgICBkdXBsaWNhdGVNYXA6IHsgW3g6IHN0cmluZ106IGFueSB9ID0ge307XG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGxpc3QpIHtcbiAgICAgIGlmIChkdXBsaWNhdGVNYXBbaXRlbVtrZXlGaWVsZF1dKSBjb250aW51ZTtcbiAgICAgIHJldC5wdXNoKGl0ZW0pO1xuICAgICAgZHVwbGljYXRlTWFwW2l0ZW1ba2V5RmllbGRdXSA9IGl0ZW07XG4gICAgfVxuICAgIHJldHVybiByZXQ7XG4gIH1cbiAgZ2V0IGdlblJhbmRvbUlEKCkge1xuICAgIHJldHVybiBNYXRoLnJvdW5kKE1hdGgucmFuZG9tKCkgKiAxMDAwMDAwMDAwMDAwMDAwKTtcbiAgfVxuICBzdG9yZVBheWxvYWQgPSB0aGlzLmxvZ2dlclNlcnZpY2UuYWRkTG9nO1xuICBvYmpJc0VtcHR5ID0gKG9iaiwgZXhjbHVzaW9uRmllbGRzPzogc3RyaW5nW10pID0+IHtcbiAgICBpZiAoIW9iaikgcmV0dXJuIHRydWU7XG4gICAgZm9yIChjb25zdCBrZXkgaW4gb2JqKSB7XG4gICAgICBpZiAoZXhjbHVzaW9uRmllbGRzPy5pbmNsdWRlcyhrZXkpKSBjb250aW51ZTtcbiAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpKSB7XG4gICAgICAgIGlmIChvYmpba2V5XSkgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfTtcbiAgZGF0YUdlbiA9IDxUID0gYW55PihrZXlzOiBzdHJpbmdbXSwgbGVuZ3RoID0gMTApID0+IHtcbiAgICBjb25zdCByZXQ6IGFueVtdID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgbGV0IHQ6IGFueSA9IHt9O1xuICAgICAgZm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xuICAgICAgICB0W2tleV0gPSB0aGlzLnRleHRHZW4oKTtcbiAgICAgIH1cbiAgICAgIHJldC5wdXNoKHQpO1xuICAgIH1cbiAgICByZXR1cm4gcmV0IGFzIFRbXTtcbiAgfTtcbiAgdGV4dEdlbiA9ICgpID0+ICdyYW5kb20nICsgTWF0aC5yb3VuZChNYXRoLnJhbmRvbSgpICogMTAwMCk7XG4gIHRyYWNrQnlDb2RlKGluZGV4OiBudW1iZXIsIGl0ZW06IGFueSkge1xuICAgIHJldHVybiBpdGVtPy5jb2RlO1xuICB9XG4gIHRyYWNrQnlJRChpbmRleDogbnVtYmVyLCBpdGVtOiBhbnkpIHtcbiAgICByZXR1cm4gaXRlbT8uaWQ7XG4gIH1cbiAgZGlhbG9nT3BlbmVyID0gKFxuICAgIGNvbXA6IGFueSxcbiAgICBjb25maWc6IE1hdERpYWxvZ0NvbmZpZyxcbiAgICB2YWx1ZUNCOiAocikgPT4gYW55LFxuICAgIG5vVmFsdWVDQj86IGFueVxuICApID0+XG4gICAgdGhpcy5kaWFsb2dPcGVuZXJSZWYoY29tcCwgY29uZmlnKVxuICAgICAgLmFmdGVyQ2xvc2VkKClcbiAgICAgIC5zdWJzY3JpYmUoKHIpID0+IHtcbiAgICAgICAgaWYgKHIgIT0gbnVsbCAmJiByICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHZhbHVlQ0Iocik7XG4gICAgICAgIH0gZWxzZSBpZiAobm9WYWx1ZUNCKSB7XG4gICAgICAgICAgbm9WYWx1ZUNCKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICBkaWFsb2dPcGVuZXJSZWYgPSAoY29tcDogYW55LCBjb25maWc6IE1hdERpYWxvZ0NvbmZpZykgPT5cbiAgICB0aGlzLmRpYWxvZy5vcGVuKGNvbXAsIGNvbmZpZyk7XG4gIGZpbmRMYWJlbEJ5SXRlbSA9IChcbiAgICBpdGVtLFxuICAgIGFycjogYW55W10sXG4gICAgbGFiZWxGaWVsZD86IHN0cmluZyxcbiAgICBrZXlGaWVsZDogc3RyaW5nID0gJ2NvZGUnXG4gICkgPT4ge1xuICAgIGlmICghaXRlbSkgcmV0dXJuIG51bGw7XG4gICAgY29uc3Qgb2JqID0gYXJyPy5maW5kKCh4KSA9PiB4W2tleUZpZWxkXSA9PSBpdGVtKTtcbiAgICBpZiAoIW9iaikgcmV0dXJuIGl0ZW07XG4gICAgZWxzZVxuICAgICAgcmV0dXJuIGAke2l0ZW19IC0gJHtcbiAgICAgICAgb2JqW2xhYmVsRmllbGQgfHwgJ3RpdGxlJ10gfHwgb2JqW2xhYmVsRmllbGQgfHwgJ2Rlc2NyaXB0aW9uJ11cbiAgICAgIH1gO1xuICB9O1xuXG4gIGZvcm1GaWVsZHNGcm9tQXJyID0gdGhpcy5pbnB1dFNlcnZpY2UuZm9ybUZpZWxkc0Zyb21GQ0lucHV0c0FycjtcbiAgb2JqVG9Gb3JtQ29udHJvbHMgPSB0aGlzLmlucHV0U2VydmljZS5mb3JtRmllbGRzRnJvbU9iajtcbiAgZm9ybVNjaGVtYVRvRm9ybUNvbnRyb2xzID0gdGhpcy5pbnB1dFNlcnZpY2UuZm9ybVNjaGVtYVRvRm9ybUNvbnRyb2xzO1xuXG4gIGJpbmRGb3JtQ29udHJvbFRvSW5wdXRzID0gdGhpcy5pbnB1dFNlcnZpY2UuYmluZEZvcm1Db250cm9sVG9JbnB1dHM7XG5cbiAgZ28gPSAodmFsdWU6IHN0cmluZywgZXh0cmE/OiBOYXZpZ2F0aW9uRXh0cmFzKSA9PiB7XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3ZhbHVlXSwgZXh0cmEpO1xuICB9O1xuICAvKipcbiAgICogUm91dGUgdG8gY29tcG9uZW50XG4gICAqIEBwYXJhbSByb3V0ZSBSb3V0ZSBvZiBwYXRoIHRvIGNvbXBvbmVudFxuICAgKiBAcGFyYW0gZXh0cmFcbiAgICovXG4gIGdvUiA9IChyb3V0ZTogc3RyaW5nLCBleHRyYT86IE5hdmlnYXRpb25FeHRyYXMpID0+IHtcbiAgICBpZiAoISg8RVRTRW52aXJvbm1lbnQ+dGhpcy5lbnZpcm9ubWVudCkuYWN0aXZhdGVkUm91dGUpIGRlYnVnZ2VyO1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtyb3V0ZV0sIHtcbiAgICAgIHJlbGF0aXZlVG86ICg8RVRTRW52aXJvbm1lbnQ+dGhpcy5lbnZpcm9ubWVudCkuYWN0aXZhdGVkUm91dGUsXG4gICAgICAuLi5leHRyYSxcbiAgICB9KTtcbiAgICAvLyBkZWJ1Z2dlcjtcbiAgfTtcbiAgbW9uZXlQYXJzZXIgPSAoYW1vdW50OiBzdHJpbmcgfCBudW1iZXIsIGN1cnJlbmN5ID0gJyAnKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuY3VycmVuY3lQaXBlLnRyYW5zZm9ybShhbW91bnQsIGN1cnJlbmN5IHx8ICcgJyk7XG4gIH07XG4gIGV4dHJhY3RVcGxvYWQoZXZlbnQ6IGFueSkge1xuICAgIHJldHVybiAoZXZlbnQudGFyZ2V0LmZpbGVzIGFzIEZpbGVbXSkgfHwgW107XG4gIH1cblxuICBzZWNvbmRzVG9Ib3VyTWluU2VjID0gKHNlY29uZHM6IG51bWJlcikgPT4ge1xuICAgIGlmICghc2Vjb25kcykgcmV0dXJuIHsgc2VjczogbnVsbCwgaG91cnM6IG51bGwsIG1pbnM6IG51bGwgfTtcbiAgICBjb25zdCBob3VycyA9IE1hdGguZmxvb3Ioc2Vjb25kcyAvIDM2MDApIHx8IDAsXG4gICAgICBzZWNvbmRzRXhIb3VycyA9IHNlY29uZHMgJSAzNjAwIHx8IDAsXG4gICAgICBtaW5zID0gTWF0aC5mbG9vcihzZWNvbmRzRXhIb3VycyAvIDYwKSB8fCAwLFxuICAgICAgc2VjcyA9IHNlY29uZHNFeEhvdXJzICUgNjA7XG4gICAgcmV0dXJuIHsgaG91cnMsIG1pbnMsIHNlY3MgfTtcbiAgfTtcbiAgbWludXRlc1RvRGF5SG91ck1pbiA9IChtaW51dGVzOiBudW1iZXIpID0+IHtcbiAgICBpZiAoIW1pbnV0ZXMpIHJldHVybiB7IGRheXM6IG51bGwsIGhvdXJzOiBudWxsLCBtaW5zOiBudWxsIH07XG4gICAgY29uc3QgZGF5cyA9IE1hdGguZmxvb3IobWludXRlcyAvIDE0NDApIHx8IDAsXG4gICAgICBtaW5pdXRlc0V4RGF5cyA9IG1pbnV0ZXMgJSAxNDQwIHx8IDAsXG4gICAgICBob3VycyA9IE1hdGguZmxvb3IobWluaXV0ZXNFeERheXMgLyA2MCkgfHwgMCxcbiAgICAgIG1pbnMgPSBtaW5pdXRlc0V4RGF5cyAlIDYwIHx8IDA7XG4gICAgcmV0dXJuIHsgZGF5cywgaG91cnMsIG1pbnMgfTtcbiAgfTtcbiAgbWludXRlc1RvRGF5SG91ck1pblN0ciA9IChtaW51dGVzOiBudW1iZXIpID0+IHtcbiAgICBpZiAoIW1pbnV0ZXMpIHJldHVybiBudWxsO1xuICAgIGNvbnN0IHJldCA9IHRoaXMubWludXRlc1RvRGF5SG91ck1pbihtaW51dGVzKTtcbiAgICByZXR1cm4gYCR7cmV0LmRheXN9ICR7cmV0LmhvdXJzfToke3JldC5taW5zfWAudHJpbSgpO1xuICB9O1xuICBtaW51dGVzVG9EYXlIb3VyTWluU3RyMiA9IChtaW51dGVzOiBudW1iZXIpID0+IHtcbiAgICBpZiAoIW1pbnV0ZXMpIHJldHVybiBudWxsO1xuICAgIGNvbnN0IHJldCA9IHRoaXMubWludXRlc1RvRGF5SG91ck1pbihtaW51dGVzKTtcbiAgICByZXR1cm4gYCR7cmV0LmRheXN9ZGF5cyAke3JldC5ob3Vyc31ocnMgJHtyZXQubWluc31taW5zYC50cmltKCk7XG4gIH07XG4gIGRheUhvdXJNaW5Ub0hvdXJNaW51dGVzID0gKGR5czogbnVtYmVyLCBocnM6IG51bWJlciwgbWluczogbnVtYmVyKSA9PiB7XG4gICAgaWYgKCFkeXMgJiYgIWhycyAmJiAhbWlucykgcmV0dXJuICcnO1xuICAgIGNvbnN0IGR5c1RvSHJzID0gKGR5cyB8fCAwKSAqIDI0O1xuICAgIGhycyA9ICgraHJzIHx8IDApICsgZHlzVG9IcnM7XG4gICAgcmV0dXJuIChocnMgfHwgJzAwJykgKyAnOicgKyAobWlucyB8fCAnMDAnKTtcbiAgfTtcbiAgZGlzYWJsZU9yRW5hYmxlSW5wdXRzID0gKGNvbnRyb2xzOiBBYnN0cmFjdENvbnRyb2xbXSwgZGlzYWJsZTogYm9vbGVhbikgPT4ge1xuICAgIGlmIChkaXNhYmxlKSB0aGlzLmRpc2FibGVJbnB1dHMoY29udHJvbHMpO1xuICAgIGVsc2UgdGhpcy5lbmFibGVJbnB1dHMoY29udHJvbHMpO1xuICB9O1xuICBkaXNhYmxlSW5wdXRzID0gKGNvbnRyb2xzOiBBYnN0cmFjdENvbnRyb2xbXSkgPT4ge1xuICAgIGZvciAoY29uc3QgY29udHJvbCBvZiBjb250cm9scykge1xuICAgICAgY29udHJvbD8uZGlzYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgfVxuICB9O1xuICBlbmFibGVJbnB1dHMgPSAoY29udHJvbHM6IEFic3RyYWN0Q29udHJvbFtdKSA9PiB7XG4gICAgZm9yIChjb25zdCBjb250cm9sIG9mIGNvbnRyb2xzKSB7XG4gICAgICBjb250cm9sPy5lbmFibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgIH1cbiAgfTtcbiAgZGF5SG91ck1pblRvTWludXRlcyA9IChkeXM6IG51bWJlciwgaHJzOiBudW1iZXIsIG1pbnM6IG51bWJlcikgPT4ge1xuICAgIGlmICghZHlzICYmICFocnMgJiYgIW1pbnMpIHJldHVybiAwO1xuICAgIGNvbnN0IGR5c1RvSHJzID0gKGR5cyB8fCAwKSAqIDI0O1xuICAgIGhycyA9ICgraHJzIHx8IDApICsgZHlzVG9IcnM7XG4gICAgcmV0dXJuIChocnMgfHwgMCkgKiA2MCArIG1pbnM7XG4gIH07XG4gIGhvdXJNaW5Ub01pbnV0ZXMgPSAoaHJzOiBudW1iZXIsIG1pbnM6IG51bWJlcikgPT4ge1xuICAgIGlmICghaHJzICYmICFtaW5zKSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4gKGhycyB8fCAwKSAqIDYwICsgbWlucztcbiAgfTtcbiAgaG91ck1pblRvTWludXRlczIgPSAoaHJzTWluczogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgW2hycywgbWluc10gPSBocnNNaW5zPy5zcGxpdCgnOicpIHx8IFswLCAwXTtcbiAgICByZXR1cm4gdGhpcy5ob3VyTWluVG9NaW51dGVzKCtocnMsICttaW5zKTtcbiAgfTtcbiAgbm90aWZ5KFxuICAgIG1lc3NhZ2U6IHN0cmluZyxcbiAgICBjbHM6IDAgfCAxIHwgMiB8IDMgPSAxLFxuICAgIGR1cmF0aW9uID0gNTAwMCxcbiAgICB0aXRsZSA9ICdDbG9zZSdcbiAgKSB7XG4gICAgaWYgKHR5cGVvZiBtZXNzYWdlICE9ICdzdHJpbmcnKSBjb25zb2xlLmVycm9yKG1lc3NhZ2UpO1xuICAgIG1lc3NhZ2UgPVxuICAgICAgdHlwZW9mIG1lc3NhZ2UgPT0gJ3N0cmluZydcbiAgICAgICAgPyBtZXNzYWdlXG4gICAgICAgIDogY2xzID09IDBcbiAgICAgICAgPyAnQW4gZXJyb3Igb2NjdXJyZWQnXG4gICAgICAgIDogJyc7XG4gICAgcmV0dXJuIHRoaXMuc25hY2tCYXIub3BlbihtZXNzYWdlLCB0aXRsZSwge1xuICAgICAgZHVyYXRpb24sXG4gICAgICBob3Jpem9udGFsUG9zaXRpb246ICdjZW50ZXInLFxuICAgICAgdmVydGljYWxQb3NpdGlvbjogJ2JvdHRvbScsXG4gICAgICBwYW5lbENsYXNzOlxuICAgICAgICBjbHMgPT0gMVxuICAgICAgICAgID8gJ2JnLXN1Y2Nlc3MnXG4gICAgICAgICAgOiBjbHMgPT0gMlxuICAgICAgICAgID8gJ2J0bi1pbmZvJ1xuICAgICAgICAgIDogY2xzID09IDNcbiAgICAgICAgICA/ICdidG4td2FybmluZydcbiAgICAgICAgICA6ICdiZy1kYW5nZXInLFxuICAgIH0pO1xuICB9XG5cbiAgc2Nyb2xsVG9Ub3AgPSAoKSA9PiB3aW5kb3cuc2Nyb2xsVG8oMCwgMCk7XG5cbiAgLyoqXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBjdXJyZW50IGRhdGUgdGltZSBsb2NhbCB0aGF0IGNhbiBiZSB1c2VkIHRvIHNldCB0aGUgZGF0ZXRpbWUtbG9jYWwgaW5wdXRcbiAgICovXG4gIGdldExvY2FsRGF0ZVRpbWVOb3cgPSAoKSA9PiB7XG4gICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKCk7XG4gICAgY29uc3QgZGF0ZUNodW5rcyA9IGRhdGUudG9Mb2NhbGVEYXRlU3RyaW5nKCkuc3BsaXQoJy8nKTtcbiAgICByZXR1cm4gKFxuICAgICAgYCR7ZGF0ZUNodW5rc1syXX0tJHtkYXRlQ2h1bmtzWzFdfS0ke2RhdGVDaHVua3NbMF19YCArXG4gICAgICAnVCcgK1xuICAgICAgZGF0ZS50b0xvY2FsZVRpbWVTdHJpbmcoKVxuICAgICk7XG4gIH07XG4gIC8qKiBAcmV0dXJucyBUaGUgY3VycmVudCBkYXRlIGxvY2FsIHRoYXQgY2FuIGJlIHVzZWQgdG8gc2V0IHRoZSBkYXRlIGlucHV0ICovXG4gIGxvY2FsRGF0ZU5vdyA9ICgpID0+IHtcbiAgICByZXR1cm4gbmV3IERhdGUoKS50b0lTT1N0cmluZygpLnNwbGl0KCdUJylbMF07XG4gIH07XG4gIGRhdGVGb3JtYXQgPSAoZGF0ZTogYW55LCBmb3JtYXQgPSAxKSA9PiB7XG4gICAgaWYgKCFkYXRlKSByZXR1cm4gbnVsbDtcbiAgICBjb25zdCBkID0gbmV3IERhdGUoZGF0ZSk7XG4gICAgaWYgKGZvcm1hdCA9PSAxKSB7XG4gICAgICByZXR1cm4gZC50b0RhdGVTdHJpbmcoKTtcbiAgICB9IGVsc2UgaWYgKGZvcm1hdCA9PSAyKSB7XG4gICAgICByZXR1cm4gZC5nZXREYXRlKCkgKyAnICcgKyBjb25maWcuTW9udGhzW2QuZ2V0TW9udGgoKV07XG4gICAgfSBlbHNlIGlmIChmb3JtYXQgPT0gMykge1xuICAgICAgcmV0dXJuIHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKGRhdGUsIGBFRUUgTU1NIGRkIFlZWVksIGhoOm1tIGFhYCk7XG4gICAgfSBlbHNlIGlmIChmb3JtYXQgPT0gNCkge1xuICAgICAgcmV0dXJuIGNvbmZpZy5Nb250aHNbZC5nZXRNb250aCgpXSArICcgJyArIGQuZ2V0RGF0ZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICB9O1xuXG4gIHRvSmF2YURhdGVTdHJpbmcgPSAoaXNvRGF0ZVN0cmluZzogc3RyaW5nID0gbmV3IERhdGUoKS50b0lTT1N0cmluZygpKSA9PiB7XG4gICAgaWYgKCFpc29EYXRlU3RyaW5nKSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4gYCR7aXNvRGF0ZVN0cmluZy5zbGljZSgwLCAxOSl9YDtcbiAgICByZXR1cm4gYCR7aXNvRGF0ZVN0cmluZy5zbGljZSgwLCAxMCl9ICR7aXNvRGF0ZVN0cmluZy5zbGljZSgxMSwgMTkpfWA7XG4gIH07XG5cbiAgdG9KYXZhRGF0ZXRpbWVTdHJpbmcgPSAoaXNvRGF0ZVN0cmluZzogc3RyaW5nKSA9PiB7XG4gICAgaWYgKCFpc29EYXRlU3RyaW5nKSByZXR1cm4gbnVsbDtcbiAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoaXNvRGF0ZVN0cmluZykudG9JU09TdHJpbmcoKTtcbiAgICAvLyBkZWJ1Z2dlcjtcbiAgICAvLyBjb25zb2xlLmxvZyhpc29EYXRlU3RyaW5nLCBkYXRlKTtcbiAgICAvLyByZXR1cm4gYCR7aXNvRGF0ZVN0cmluZy5zbGljZSgwLCAxOSl9YDtcbiAgICByZXR1cm4gYCR7ZGF0ZS5zbGljZSgwLCAxMCl9ICR7ZGF0ZS5zbGljZSgxMSwgMTkpfWA7XG4gIH07XG4gIHRpbWVGb3JtYXQgPSAodGltZT86IGFueSkgPT4ge1xuICAgIGNvbnN0IHRpbWVBcnI6IGFueVtdID0gdGltZS5zcGxpdCgnICcpO1xuICAgIHRpbWVBcnJbMF0gPSB0aW1lQXJyWzBdLnNwbGl0KCc6Jykuc3BsaWNlKDAsIDIpLmpvaW4oJzonKTtcbiAgICByZXR1cm4gdGltZUFyci5qb2luKCcgJyk7XG4gIH07XG4gIGZ1bGxEYXRlVGltZSA9ICh0aW1lc3RhbXA6IHN0cmluZyB8IG51bWJlcikgPT4ge1xuICAgIC8vIGRlYnVnZ2VyXG4gICAgcmV0dXJuIHRoaXMuZGF0ZUZvcm1hdCh0aW1lc3RhbXAsIDMpO1xuICB9O1xuICBkYXlzRm9ybWF0dGVyID0gKGRheXM6IG51bWJlcikgPT4ge1xuICAgIGlmICghZGF5cykge1xuICAgICAgcmV0dXJuICctJztcbiAgICB9XG4gICAgbGV0IHlyOiBudW1iZXIsXG4gICAgICBtdDogbnVtYmVyLFxuICAgICAgZHk6IG51bWJlcixcbiAgICAgIHJldDogc3RyaW5nLFxuICAgICAgX3lyID0gMzY1LFxuICAgICAgX210ID0gMzA7XG4gICAgaWYgKGRheXMgPiBfeXIpIHtcbiAgICAgIHlyID0gTWF0aC5mbG9vcihkYXlzIC8gX3lyKTtcbiAgICB9XG4gICAgaWYgKGRheXMgPiBfbXQpIHtcbiAgICAgIG10ID0gTWF0aC5mbG9vcigoZGF5cyAlIF95cikgLyBfbXQpO1xuICAgIH1cbiAgICBkeSA9IChkYXlzICUgX3lyKSAlIF9tdDtcbiAgICByZXQgPSBgJHt5ciA/IHRoaXMucGx1YXJsaXplcih5ciwgJ3lyJykgOiAnJ30gJHtcbiAgICAgIG10ID8gdGhpcy5wbHVhcmxpemVyKG10LCAnbXRoJykgOiAnJ1xuICAgIH0gJHt0aGlzLnBsdWFybGl6ZXIoZHksICdkeScpfWA7XG4gICAgcmV0dXJuIHJldDtcbiAgfTtcbiAgbW9udGhzRm9ybWF0dGVyID0gKG1vbnRoczogbnVtYmVyKSA9PiB7XG4gICAgaWYgKCFtb250aHMpIHtcbiAgICAgIHJldHVybiAnLSc7XG4gICAgfVxuICAgIGxldCB5cjogbnVtYmVyLFxuICAgICAgbXQ6IG51bWJlcixcbiAgICAgIHJldDogc3RyaW5nLFxuICAgICAgX3lyID0gMTI7XG4gICAgaWYgKG1vbnRocyA+IF95cikge1xuICAgICAgeXIgPSBNYXRoLmZsb29yKG1vbnRocyAvIF95cik7XG4gICAgfVxuICAgIG10ID0gbW9udGhzICUgX3lyO1xuICAgIHJldCA9IGAke3lyID8gdGhpcy5wbHVhcmxpemVyKHlyLCAneXInKSA6ICcnfSAke1xuICAgICAgbXQgPyB0aGlzLnBsdWFybGl6ZXIobXQsICdtdGgnKSA6ICcnXG4gICAgfWA7XG4gICAgcmV0dXJuIHJldDtcbiAgfTtcbiAgcGx1YXJsaXplciA9ICh2YWw6IG51bWJlciwgdHh0OiBzdHJpbmcsIHBsdXJhbD86IHN0cmluZykgPT4ge1xuICAgIHBsdXJhbCA9IHBsdXJhbCB8fCB0eHQgKyAncyc7XG4gICAgcmV0dXJuIHZhbCArICh2YWwgPT0gMSA/IHR4dCA6IHBsdXJhbCk7XG4gIH07XG4gIGRlY2ltYWxUb1BlcmNlbnRhZ2UgPSAoZGVjOiBudW1iZXIpID0+IHtcbiAgICByZXR1cm4gZGVjICogMTAwICsgJyUnO1xuICB9O1xuICBsb2dGb3JtID0gKGZvcm0pID0+IHtcbiAgICBjb25zb2xlLmxvZygnRk9STScsIGZvcm0sICdWQUxVRVMnLCBmb3JtLnZhbHVlIGFzIGFueSk7XG4gIH07XG5cbiAgdG9DU1YoZGF0YTogYW55W10sIGhlYWRlck5hbWVzOiBzdHJpbmdbXSwgZmlsZW5hbWU6IHN0cmluZykge1xuICAgIGNvbnN0IHJlcGxhY2VyID0gKGtleSwgdmFsdWUpID0+ICh2YWx1ZSA9PT0gbnVsbCA/ICcnIDogdmFsdWUpOyAvLyBzcGVjaWZ5IGhvdyB5b3Ugd2FudCB0byBoYW5kbGUgbnVsbCB2YWx1ZXMgaGVyZVxuXG4gICAgbGV0IGNzdiA9IGRhdGEubWFwKChyb3cpID0+XG4gICAgICBoZWFkZXJOYW1lc1xuICAgICAgICAubWFwKChmaWVsZE5hbWUpID0+IEpTT04uc3RyaW5naWZ5KHJvd1tmaWVsZE5hbWVdLCByZXBsYWNlcikpXG4gICAgICAgIC5qb2luKCcsJylcbiAgICApO1xuICAgIGNzdi51bnNoaWZ0KGhlYWRlck5hbWVzLmpvaW4oJywnKSk7XG4gICAgbGV0IGNzdkFycmF5ID0gY3N2LmpvaW4oJ1xcclxcbicpO1xuXG4gICAgdmFyIGJsb2IgPSBuZXcgQmxvYihbY3N2QXJyYXldLCB7IHR5cGU6ICd0ZXh0L2NzdicgfSk7XG4gICAgc2F2ZUFzKGJsb2IsIGZpbGVuYW1lICsgJy5jc3YnKTtcbiAgfVxuXG4gIGlzUGljdHVyZUZvcm1hdChmaWxlTmFtZTogc3RyaW5nKSB7XG4gICAgaWYgKCFmaWxlTmFtZSkgcmV0dXJuIGZhbHNlO1xuICAgIGNvbnN0IFBJQ1RVUkVfRk9STUFUUyA9IFsnLmpwZycsICcuanBlZycsICcucG5nJywgJy5naWYnXTtcbiAgICByZXR1cm4gUElDVFVSRV9GT1JNQVRTLnNvbWUoKGZvcm1hdCkgPT4gZmlsZU5hbWUuZW5kc1dpdGgoZm9ybWF0KSk7XG4gIH1cbiAgb2JqZWN0VG9BcnJheTxUPihvYmo6IGFueSkge1xuICAgIGNvbnN0IHJldCA9IFtdO1xuICAgIGZvciAoY29uc3Qga2V5IGluIG9iaikge1xuICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHtcbiAgICAgICAgcmV0LnB1c2gob2JqW2tleV0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmV0IGFzIFRbXTtcbiAgfVxuICAvLyNyZWdpb24gcm91dGVcbiAgcm91dGVQYXJhbXMxID0gdGhpcy5yb3V0ZVNlcnZpY2Uucm91dGVQYXJhbXMxO1xuICByb3V0ZVBhcmFtczIgPSB0aGlzLnJvdXRlU2VydmljZS5yb3V0ZVBhcmFtczI7XG4gIHJvdXRlUGFyYW1zMyA9IHRoaXMucm91dGVTZXJ2aWNlLnJvdXRlUGFyYW1zMztcbiAgLy8jZW5kcmVnaW9uXG4gIHN0YXJ0UGwgPSB0aGlzLnBTLnN0YXJ0UGw7XG4gIHN0b3BQbCA9IHRoaXMucFMuc3RvcFBsO1xufVxuIl19
|
|
@@ -147,4 +147,4 @@ export var EMenuType;
|
|
|
147
147
|
})(EMenuType || (EMenuType = {}));
|
|
148
148
|
export class Constant {
|
|
149
149
|
}
|
|
150
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ldHMtZmUtbmctc2RrL3NyYy9saWIvU2hhcmVkL21vZGVscy9pbmRleC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBNkMzQyxNQUFNLE9BQU8sT0FBTztJQVlsQixZQUNFLEtBQWEsRUFDYixJQUFhLEVBQ2IsV0FBNkIsRUFDN0IsSUFBbUIsRUFDbkIsUUFBa0IsRUFDbEIsV0FBb0IsRUFDcEIsR0FBMEIsRUFDMUIsTUFBZSxFQUNmLE1BQWU7UUFFZixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLENBQUM7UUFDOUQsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLElBQUksV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3hELElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxJQUFJLE1BQU0sQ0FBQztRQUMzQixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsSUFBSSxLQUFLLENBQUM7UUFDbEMsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLElBQUksRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO1FBQy9CLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7Q0FDRjtBQUNELE1BQU0sT0FBTyxTQUFTO0lBYXBCLElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxTQUFTLENBQUM7SUFDdkQsQ0FBQztJQUdELFlBQ0UsS0FBYSxFQUNiLElBQWEsRUFDYixLQUFXLEVBQ1gsSUFBbUIsRUFDbkIsUUFBa0IsRUFDbEIsV0FBb0IsRUFDcEIsR0FBMEIsRUFDMUIsTUFBZSxFQUNmLE1BQWU7UUFFZixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsRUFBRSxHQUFHLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxRQUFRLENBQUMsQ0FBQztRQUMzRCxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksSUFBSSxNQUFNLENBQUM7UUFDM0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLElBQUksS0FBSyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO0lBQ2pDLENBQUM7Q0FDRjtBQVNELE1BQU0sT0FBTyxNQUFNO0lBSWpCLFlBQVksR0FBVyxFQUFFLEtBQWlDLEVBQUUsR0FBWTtRQUN0RSxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUNmLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO0lBQ2pCLENBQUM7Q0FDRjtBQUNELE1BQU0sT0FBTyxPQUFRLFNBQVEsTUFBTTtJQVlqQyxZQUNFLEdBQVcsRUFDWCxLQUFhLEVBQ2IsUUFBa0IsRUFDbEIsS0FBaUMsRUFDMUIsU0FBd0IsRUFDL0IsSUFBYSxFQUNiLE1BQVksRUFDWixTQUFrRCxFQUNsRCxHQUFZLEVBQ1osS0FBYyxFQUNkLFNBQWtCO1FBRWxCLEtBQUssQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBUmhCLGNBQVMsR0FBVCxTQUFTLENBQWU7UUFTL0IsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDekIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDM0IsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7SUFDN0IsQ0FBQztDQUNGO0FBT0QsTUFBTSxPQUFPLEdBQUc7SUFLZCxZQUNFLEdBQVcsRUFDWCxLQUFpQyxFQUNqQyxJQUFhLEVBQ2IsR0FBWTtRQUVaLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ2YsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLElBQUksR0FBRyxDQUFDO1FBQzFCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO0lBQ2pCLENBQUM7Q0FDRjtBQWNELE1BQU0sT0FBTyxHQUFHO0lBZ0JkLFlBQ0UsR0FBVyxFQUNYLE1BQWdDLEVBQ2hDLElBQWlCLEVBQ2pCLElBQWtCLEVBQ2xCLEdBQVksRUFDWixJQUFhLEVBQ2IsWUFBc0IsRUFDdEIsT0FBaUIsRUFDakIsUUFBa0I7UUFFbEIsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7UUFDZixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUNmLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0lBQzNCLENBQUM7Q0FDRjtBQUNELE1BQU0sT0FBTyxLQUFLO0lBTWhCLFlBQ0UsR0FBVyxFQUNYLEtBQWlDLEVBQ2pDLE1BQVksRUFDWixHQUFZLEVBQ1osS0FBTTtRQUVOLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ2YsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLElBQUksR0FBRyxDQUFDO1FBQzFCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ2YsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDckIsQ0FBQztDQUNGO0FBMkZELE1BQU0sT0FBTyxXQUFXO0lBeUJ0QixZQUNFLENBQVMsRUFDVCxDQUFXLEVBQ1gsU0FBa0QsRUFDbEQsWUFBZ0MsRUFDaEMsSUFBZSxFQUNmLE9BQWlCLEVBQ2pCLGNBQTZDLEVBQzdDLFlBQXVDLEVBQ3ZDLE1BQThDO1FBRTlDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ1gsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUssQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsT0FBTyxDQUFDLENBQVMsQ0FBQztRQUNuRSxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUMzQixJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztRQUNqQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sSUFBSSxLQUFLLENBQUM7UUFDaEMsSUFBSSxDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUM7UUFDckMsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7UUFDakMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7SUFDdkIsQ0FBQztDQUNGO0FBMEJELE1BQU0sQ0FBTixJQUFZLGFBRVg7QUFGRCxXQUFZLGFBQWE7SUFDdkIsdUNBQXNCLENBQUE7QUFDeEIsQ0FBQyxFQUZXLGFBQWEsS0FBYixhQUFhLFFBRXhCO0FBQ0QsTUFBTSxDQUFOLElBQVksR0FRWDtBQVJELFdBQVksR0FBRztJQUNiLHdCQUFpQixDQUFBO0lBQ2pCLHdCQUFpQixDQUFBO0lBQ2pCLDBCQUFtQixDQUFBO0lBQ25CLDhCQUF1QixDQUFBO0lBQ3ZCLDRCQUFxQixDQUFBO0lBQ3JCLHdCQUFpQixDQUFBO0lBQ2pCLDRCQUFxQixDQUFBO0FBQ3ZCLENBQUMsRUFSVyxHQUFHLEtBQUgsR0FBRyxRQVFkO0FBQ0QsTUFBTSxDQUFOLElBQVksU0FNWDtBQU5ELFdBQVksU0FBUztJQUNuQixvQ0FBdUIsQ0FBQTtJQUN2QixrQ0FBcUIsQ0FBQTtJQUNyQixrQ0FBcUIsQ0FBQTtJQUNyQixzQ0FBeUIsQ0FBQTtJQUN6QixvQ0FBdUIsQ0FBQTtBQUN6QixDQUFDLEVBTlcsU0FBUyxLQUFULFNBQVMsUUFNcEI7QUF3RUQsTUFBTSxDQUFOLElBQVksT0FBVTtBQUF0QixXQUFZLE9BQU87QUFBRSxDQUFDLEVBQVYsT0FBTyxLQUFQLE9BQU8sUUFBRztBQUN0QixNQUFNLENBQU4sSUFBWSxVQUFhO0FBQXpCLFdBQVksVUFBVTtBQUFFLENBQUMsRUFBYixVQUFVLEtBQVYsVUFBVSxRQUFHO0FBQ3pCLE1BQU0sQ0FBTixJQUFZLGNBQWlCO0FBQTdCLFdBQVksY0FBYztBQUFFLENBQUMsRUFBakIsY0FBYyxLQUFkLGNBQWMsUUFBRztBQUM3QixNQUFNLENBQU4sSUFBWSxTQUdYO0FBSEQsV0FBWSxTQUFTO0lBQ25CLHNCQUFTLENBQUE7SUFDVCxzQkFBUyxDQUFBO0FBQ1gsQ0FBQyxFQUhXLFNBQVMsS0FBVCxTQUFTLFFBR3BCO0FBRUQsTUFBTSxDQUFOLElBQVksZUFhWDtBQWJELFdBQVksZUFBZTtJQUN6QixrQ0FBZSxDQUFBO0lBQ2YsZ0RBQTZCLENBQUE7SUFDN0IsMENBQXVCLENBQUE7SUFDdkIsMENBQXVCLENBQUE7SUFDdkIsb0NBQWlCLENBQUE7SUFDakIsZ0NBQWEsQ0FBQTtJQUNiLG9DQUFpQixDQUFBO0lBQ2pCLHdEQUFxQyxDQUFBO0lBQ3JDLHNDQUFtQixDQUFBO0lBQ25CLHdDQUFxQixDQUFBO0lBQ3JCLG9DQUFpQixDQUFBO0lBQ2pCLG9DQUFpQixDQUFBO0FBQ25CLENBQUMsRUFiVyxlQUFlLEtBQWYsZUFBZSxRQWExQjtBQTZGRCxNQUFNLENBQU4sSUFBWSxTQUdYO0FBSEQsV0FBWSxTQUFTO0lBQ25CLDZCQUFnQixDQUFBO0lBQ2hCLDJCQUFjLENBQUE7QUFDaEIsQ0FBQyxFQUhXLFNBQVMsS0FBVCxTQUFTLFFBR3BCO0FBc0JELE1BQU0sT0FBTyxRQUFRO0NBRXBCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjb25maWdGb3JtcyB9IGZyb20gJy4vZm9ybS5jbGFzcyc7XG5pbXBvcnQgeyBBcHBSb3V0ZUJhc2UgfSBmcm9tICcuL1JvdXRlSXRlbS5jbGFzcyc7XG5cbi8vI3JlZ2lvbiBpbnB1dHNcbmludGVyZmFjZSBJRVRTSW5wdXRCYXNlIHtcbiAgbmFtZT86IHN0cmluZztcbiAgbGFiZWw6IHN0cmluZztcbiAgdmFsdWU/OiBhbnk7XG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuICBjbHM/OiBzdHJpbmc7XG4gIHJlcXVpcmVkPzogYm9vbGVhbjtcbiAgdHlwZT86IEVUU0lucHV0VHlwZTtcbn1cbmludGVyZmFjZSBJRVRTRkNJbnB1dCBleHRlbmRzIElFVFNJbnB1dEJhc2Uge1xuICBuYW1lOiBzdHJpbmc7XG4gIHByZWZpeD86IHN0cmluZztcbiAgc3VmZml4Pzogc3RyaW5nO1xuICBmb3JtQ29udHJvbDogQWJzdHJhY3RDb250cm9sO1xuICBmb3JtOiBGb3JtR3JvdXA7XG4gIHZtcz86IElWYWxpZGF0aW9uTWVzc2FnZVtdO1xufVxuXG5leHBvcnQgdHlwZSBFVFNJbnB1dFR5cGUgPVxuICB8ICdhdXRvY29tcGxldGUnXG4gIHwgJ2J1dHRvbidcbiAgfCAnY2hlY2tib3gnXG4gIHwgJ2NoZWNrZWRib3gnXG4gIHwgJ2NvbG9yJ1xuICB8ICdkYXRlJ1xuICB8ICdkYXRldGltZS1sb2NhbCdcbiAgfCAnZGhtJ1xuICB8ICdlbWFpbCdcbiAgfCAnZmlsZSdcbiAgfCAnZmlsZUJ1dHRvbidcbiAgfCAnbnVtYmVyJ1xuICB8ICdwYXNzd29yZCdcbiAgfCAncHJvZ3Jlc3MnXG4gIHwgJ3BlcmNlbnRhZ2UnXG4gIHwgJ3JhZGlvJ1xuICB8ICdzZWxlY3QnXG4gIHwgJ3RlbCdcbiAgfCAndGV4dCdcbiAgfCAndGV4dGFyZWEnXG4gIHwgJ3RpbWUnXG4gIHwgJ3ZpZXdlcic7XG5leHBvcnQgY2xhc3MgRkNJbnB1dCBpbXBsZW1lbnRzIElFVFNGQ0lucHV0IHtcbiAgbmFtZTogc3RyaW5nO1xuICBsYWJlbDogc3RyaW5nO1xuICBwbGFjZWhvbGRlcj86IHN0cmluZztcbiAgY2xzPzogc3RyaW5nO1xuICBwcmVmaXg/OiBzdHJpbmc7XG4gIHN1ZmZpeD86IHN0cmluZztcbiAgcmVxdWlyZWQ/OiBib29sZWFuO1xuICB0eXBlPzogRVRTSW5wdXRUeXBlO1xuICBmb3JtQ29udHJvbDogQWJzdHJhY3RDb250cm9sO1xuICB2bXM/OiBJVmFsaWRhdGlvbk1lc3NhZ2VbXTtcbiAgZm9ybTogRm9ybUdyb3VwO1xuICBjb25zdHJ1Y3RvcihcbiAgICBsYWJlbDogc3RyaW5nLFxuICAgIG5hbWU/OiBzdHJpbmcsXG4gICAgZm9ybUNvbnRyb2w/OiBBYnN0cmFjdENvbnRyb2wsXG4gICAgdHlwZT86IEVUU0lucHV0VHlwZSxcbiAgICByZXF1aXJlZD86IGJvb2xlYW4sXG4gICAgcGxhY2Vob2xkZXI/OiBzdHJpbmcsXG4gICAgdm1zPzogSVZhbGlkYXRpb25NZXNzYWdlW10sXG4gICAgcHJlZml4Pzogc3RyaW5nLFxuICAgIHN1ZmZpeD86IHN0cmluZ1xuICApIHtcbiAgICB0aGlzLm5hbWUgPSBuYW1lIHx8ICdmbicgKyBNYXRoLnJvdW5kKE1hdGgucmFuZG9tKCkgKiAxMDAwMDApO1xuICAgIHRoaXMubGFiZWwgPSBsYWJlbDtcbiAgICB0aGlzLmZvcm1Db250cm9sID0gZm9ybUNvbnRyb2wgfHwgY29uZmlnRm9ybXMuZGVmYXVsdCgpO1xuICAgIHRoaXMudHlwZSA9IHR5cGUgfHwgJ3RleHQnO1xuICAgIHRoaXMucmVxdWlyZWQgPSByZXF1aXJlZCB8fCBmYWxzZTtcbiAgICB0aGlzLnZtcyA9IHZtcyB8fCBbXTtcbiAgICB0aGlzLnBsYWNlaG9sZGVyID0gcGxhY2Vob2xkZXI7XG4gICAgdGhpcy5wcmVmaXggPSBwcmVmaXg7XG4gICAgdGhpcy5zdWZmaXggPSBzdWZmaXg7XG4gIH1cbn1cbmV4cG9ydCBjbGFzcyBDRVRTSW5wdXQgaW1wbGVtZW50cyBJRVRTSW5wdXRCYXNlIHtcbiAgbmFtZTogc3RyaW5nO1xuICBsYWJlbDogc3RyaW5nO1xuICBwbGFjZWhvbGRlcj86IHN0cmluZztcbiAgY2xzPzogc3RyaW5nO1xuICByZXF1aXJlZD86IGJvb2xlYW47XG4gIHR5cGU/OiBFVFNJbnB1dFR5cGU7XG4gIHZhbHVlOiBzdHJpbmc7XG4gIGhpZGU6IGJvb2xlYW47XG4gIGRpc2FibGVkOiBib29sZWFuO1xuICByZWFkb25seTogYm9vbGVhbjtcbiAgaWQ6IHN0cmluZztcbiAgaGFzRXJyb3I6IGJvb2xlYW47XG4gIGdldCBpc0VtcHR5KCkge1xuICAgIHJldHVybiB0aGlzLnZhbHVlID09IG51bGwgfHwgdGhpcy52YWx1ZSA9PSB1bmRlZmluZWQ7XG4gIH1cbiAgeDogbnVtYmVyO1xuICB5OiBudW1iZXI7XG4gIGNvbnN0cnVjdG9yKFxuICAgIGxhYmVsOiBzdHJpbmcsXG4gICAgbmFtZT86IHN0cmluZyxcbiAgICB2YWx1ZT86IGFueSxcbiAgICB0eXBlPzogRVRTSW5wdXRUeXBlLFxuICAgIHJlcXVpcmVkPzogYm9vbGVhbixcbiAgICBwbGFjZWhvbGRlcj86IHN0cmluZyxcbiAgICB2bXM/OiBJVmFsaWRhdGlvbk1lc3NhZ2VbXSxcbiAgICBwcmVmaXg/OiBzdHJpbmcsXG4gICAgc3VmZml4Pzogc3RyaW5nXG4gICkge1xuICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgdGhpcy5pZCA9ICdpbnB1dElEJyArIE1hdGgucm91bmQoTWF0aC5yYW5kb20oKSAqIDEwMDAwMDAwKTtcbiAgICB0aGlzLmxhYmVsID0gbGFiZWw7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMudHlwZSA9IHR5cGUgfHwgJ3RleHQnO1xuICAgIHRoaXMucmVxdWlyZWQgPSByZXF1aXJlZCB8fCBmYWxzZTtcbiAgICB0aGlzLnBsYWNlaG9sZGVyID0gcGxhY2Vob2xkZXI7XG4gIH1cbn1cbi8vI2VuZHJlZ2lvblxuXG4vLyNyZWdpb24ga2V5IHZhbHVlIHBhaXJcbmV4cG9ydCBpbnRlcmZhY2UgSUVUU0tWUCB7XG4gIHJlYWRvbmx5IGtleT86IGFueTtcbiAgdmFsdWU/OiBzdHJpbmcgfCBib29sZWFuIHwgbnVtYmVyO1xuICBjbHM/OiBzdHJpbmc7XG59XG5leHBvcnQgY2xhc3MgRVRTS1ZQIGltcGxlbWVudHMgSUVUU0tWUCB7XG4gIHJlYWRvbmx5IGtleTogc3RyaW5nO1xuICB2YWx1ZT86IHN0cmluZyB8IGJvb2xlYW4gfCBudW1iZXI7XG4gIGNscz86IHN0cmluZztcbiAgY29uc3RydWN0b3Ioa2V5OiBzdHJpbmcsIHZhbHVlPzogc3RyaW5nIHwgYm9vbGVhbiB8IG51bWJlciwgY2xzPzogc3RyaW5nKSB7XG4gICAgdGhpcy5rZXkgPSBrZXk7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMuY2xzID0gY2xzO1xuICB9XG59XG5leHBvcnQgY2xhc3MgRVRTRktWUCBleHRlbmRzIEVUU0tWUCB7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGVkaXRhYmxlPzogYm9vbGVhbjtcbiAgZWRpdGluZz86IGJvb2xlYW47XG4gIHJvdXRlPzogc3RyaW5nO1xuICByb3V0ZUZ1bmM/OiAoaXRlbSkgPT4gUHJvbWlzZTxzdHJpbmc+IHwgT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICBoaW50Pzogc3RyaW5nO1xuICB2YWx1ZUhpbnQ/OiBzdHJpbmc7XG4gIGFjdGlvbj86IGFueTtcbiAgaXNQaG9uZT86IGJvb2xlYW47XG4gIGlzRW1haWw/OiBib29sZWFuO1xuICBmb3JtYXR0ZXI/OiAodmFsOiBhbnkpID0+IHN0cmluZyB8IFByb21pc2U8c3RyaW5nPiB8IE9ic2VydmFibGU8c3RyaW5nPjtcbiAgY29uc3RydWN0b3IoXG4gICAga2V5OiBzdHJpbmcsXG4gICAgbGFiZWw6IHN0cmluZyxcbiAgICBlZGl0YWJsZT86IGJvb2xlYW4sXG4gICAgdmFsdWU/OiBzdHJpbmcgfCBib29sZWFuIHwgbnVtYmVyLFxuICAgIHB1YmxpYyBpbnB1dFR5cGU/OiBFVFNJbnB1dFR5cGUsXG4gICAgaGludD86IHN0cmluZyxcbiAgICBhY3Rpb24/OiBhbnksXG4gICAgZm9ybWF0dGVyPzogKHZhbDogYW55KSA9PiBzdHJpbmcgfCBQcm9taXNlPHN0cmluZz4sXG4gICAgY2xzPzogc3RyaW5nLFxuICAgIHJvdXRlPzogc3RyaW5nLFxuICAgIHZhbHVlSGludD86IHN0cmluZ1xuICApIHtcbiAgICBzdXBlcihrZXksIHZhbHVlLCBjbHMpO1xuICAgIHRoaXMubGFiZWwgPSBsYWJlbDtcbiAgICB0aGlzLmhpbnQgPSBoaW50O1xuICAgIHRoaXMuZWRpdGFibGUgPSBlZGl0YWJsZTtcbiAgICB0aGlzLmFjdGlvbiA9IGFjdGlvbjtcbiAgICB0aGlzLmZvcm1hdHRlciA9IGZvcm1hdHRlcjtcbiAgICB0aGlzLnJvdXRlID0gcm91dGU7XG4gICAgdGhpcy52YWx1ZUhpbnQgPSB2YWx1ZUhpbnQ7XG4gIH1cbn1cbi8vI2VuZHJlZ2lvblxuXG4vLyNyZWdpb24gbGJsXG5leHBvcnQgaW50ZXJmYWNlIElMYmwgZXh0ZW5kcyBJRVRTS1ZQIHtcbiAgaGludD86IHN0cmluZztcbn1cbmV4cG9ydCBjbGFzcyBMYmwgaW1wbGVtZW50cyBJTGJsIHtcbiAgcmVhZG9ubHkga2V5OiBzdHJpbmc7XG4gIHZhbHVlOiBzdHJpbmcgfCBib29sZWFuIHwgbnVtYmVyO1xuICBoaW50Pzogc3RyaW5nO1xuICBjbHM/OiBzdHJpbmc7XG4gIGNvbnN0cnVjdG9yKFxuICAgIGtleTogc3RyaW5nLFxuICAgIHZhbHVlPzogc3RyaW5nIHwgYm9vbGVhbiB8IG51bWJlcixcbiAgICBoaW50Pzogc3RyaW5nLFxuICAgIGNscz86IHN0cmluZ1xuICApIHtcbiAgICB0aGlzLmtleSA9IGtleTtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWUgfHwgJy0nO1xuICAgIHRoaXMuaGludCA9IGhpbnQ7XG4gICAgdGhpcy5jbHMgPSBjbHM7XG4gIH1cbn1cbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIGJ0blxuZXhwb3J0IGludGVyZmFjZSBJQnRuIGV4dGVuZHMgSUVUU0tWUCB7XG4gIGFjdGlvbj86IChhcmc/KSA9PiB2b2lkO1xuICBncm91cD86IEVUU0J0bkdyb3VwO1xuICBoZWxwPzogc3RyaW5nO1xuICBpY29uPzogRVRTSWNvblR5cGU7XG4gIGljb25CdG4/OiBib29sZWFuO1xuICBzaG93SGVscEljb24/OiBib29sZWFuO1xuICBsYWJlbD86IHN0cmluZztcbiAgdHlwZT86IEVUU0J0blR5cGU7XG4gIGV4dHJhPzogYW55O1xufVxuZXhwb3J0IGNsYXNzIEJ0biBpbXBsZW1lbnRzIElCdG4ge1xuICBjbHM/OiBzdHJpbmc7XG4gIGdyb3VwPzogRVRTQnRuR3JvdXA7XG4gIGhlbHA/OiBzdHJpbmc7XG4gIGljb24/OiBFVFNJY29uVHlwZTtcbiAgaWNvbkJ0bj86IGJvb2xlYW47XG4gIHJlYWRvbmx5IGFjdGlvbj86IChkYXRhPywgLi4uYXJncykgPT4gdm9pZDtcbiAgcmVhZG9ubHkga2V5Pzogc3RyaW5nO1xuICBzaG93SGVscEljb24/OiBib29sZWFuO1xuICBsYWJlbD86IHN0cmluZztcbiAgcm91dGU/OiBzdHJpbmc7XG4gIHR5cGU/OiBFVFNCdG5UeXBlO1xuICBleHRyYT86IGFueTtcbiAgbG9hZGluZz86IGJvb2xlYW47XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBrZXk6IHN0cmluZyxcbiAgICBhY3Rpb24/OiAoZGF0YT8sIC4uLmFyZ3MpID0+IGFueSxcbiAgICB0eXBlPzogRVRTQnRuVHlwZSxcbiAgICBpY29uPzogRVRTSWNvblR5cGUsXG4gICAgY2xzPzogc3RyaW5nLFxuICAgIGhlbHA/OiBzdHJpbmcsXG4gICAgc2hvd0hlbHBJY29uPzogYm9vbGVhbixcbiAgICBsb2FkaW5nPzogYm9vbGVhbixcbiAgICBkaXNhYmxlZD86IGJvb2xlYW5cbiAgKSB7XG4gICAgdGhpcy5rZXkgPSBrZXk7XG4gICAgdGhpcy5hY3Rpb24gPSBhY3Rpb247XG4gICAgdGhpcy50eXBlID0gdHlwZTtcbiAgICB0aGlzLmljb24gPSBpY29uO1xuICAgIHRoaXMuY2xzID0gY2xzO1xuICAgIHRoaXMuaGVscCA9IGhlbHA7XG4gICAgdGhpcy5zaG93SGVscEljb24gPSBzaG93SGVscEljb247XG4gICAgdGhpcy5sb2FkaW5nID0gbG9hZGluZztcbiAgICB0aGlzLmRpc2FibGVkID0gZGlzYWJsZWQ7XG4gIH1cbn1cbmV4cG9ydCBjbGFzcyBCdG5MZyBpbXBsZW1lbnRzIElCdG4ge1xuICByZWFkb25seSBrZXk6IHN0cmluZztcbiAgdmFsdWU6IHN0cmluZyB8IGJvb2xlYW4gfCBudW1iZXI7XG4gIHJlYWRvbmx5IGFjdGlvbj86ICgpID0+IHZvaWQ7XG4gIGNscz86IHN0cmluZztcbiAgZXh0cmE/OiBhbnk7XG4gIGNvbnN0cnVjdG9yKFxuICAgIGtleTogc3RyaW5nLFxuICAgIHZhbHVlPzogc3RyaW5nIHwgYm9vbGVhbiB8IG51bWJlcixcbiAgICBhY3Rpb24/OiBhbnksXG4gICAgY2xzPzogc3RyaW5nLFxuICAgIGV4dHJhP1xuICApIHtcbiAgICB0aGlzLmtleSA9IGtleTtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWUgfHwgJy0nO1xuICAgIHRoaXMuYWN0aW9uID0gYWN0aW9uO1xuICAgIHRoaXMuY2xzID0gY2xzO1xuICAgIHRoaXMuZXh0cmEgPSBleHRyYTtcbiAgfVxufVxuZXhwb3J0IHR5cGUgRVRTQnRuVHlwZSA9XG4gIHwgJ2NsZWFyJ1xuICB8ICdjbG9zZSdcbiAgfCAnZGFuZ2VyLW91dGxpbmUnXG4gIHwgJ2RhbmdlcidcbiAgfCAnZGFyay1vdXRsaW5lJ1xuICB8ICdkYXJrJ1xuICB8ICdvdXRsaW5lLW5tJ1xuICB8ICdvdXRsaW5lJ1xuICB8ICdwcmltYXJ5J1xuICB8ICdzZWNvbmRhcnknXG4gIHwgJ3N1Y2Nlc3MnO1xuZXhwb3J0IHR5cGUgRVRTQnRuR3JvdXAgPVxuICB8ICdhZGQnXG4gIHwgJ2Nsb25lJ1xuICB8ICdjbG9zZSdcbiAgfCAnY3JlYXRlJ1xuICB8ICdkZWxldGUnXG4gIHwgJ2Rvd25sb2FkJ1xuICB8ICdlZGl0J1xuICB8ICdsaW5rJ1xuICB8ICdzZWFyY2gnXG4gIHwgJ3Nob3cnXG4gIHwgJ3N1Ym1pdCdcbiAgfCAndXBsb2FkJztcbmV4cG9ydCB0eXBlIEVUU0ljb25UeXBlID1cbiAgfCAnYWNjZXNzJ1xuICB8ICdhZGQnXG4gIHwgJ2FkanVzdCdcbiAgfCAnY2FsZW5kYXInXG4gIHwgJ2Nhc2gnXG4gIHwgJ2NoZWNrZWQnXG4gIHwgJ2NoZWNrbGlzdCdcbiAgfCAnY2xvbmUnXG4gIHwgJ2Nsb3NlJ1xuICB8ICdjb2dzJ1xuICB8ICdkZWxldGUnXG4gIHwgJ2Rvd25sb2FkJ1xuICB8ICdlZGl0J1xuICB8ICdleHBvcnQnXG4gIHwgJ2ZpbGUnXG4gIHwgJ2ZpbHRlcidcbiAgfCAnZ2VuZXJhdGUnXG4gIHwgJ2d1YXJkJ1xuICB8ICdoaXN0b3J5J1xuICB8ICdob21lJ1xuICB8ICdpbXBvcnQnXG4gIHwgJ2luZm8nXG4gIHwgJ2xpbmsnXG4gIHwgJ2xvY2snXG4gIHwgJ25leHQnXG4gIHwgJ3BlbidcbiAgfCAncG9zdCdcbiAgfCAncHJldmlvdXMnXG4gIHwgJ3JlbmV3J1xuICB8ICdzYXZlJ1xuICB8ICdzZWFyY2gnXG4gIHwgJ3Nob3cnXG4gIHwgJ3Nub296ZSdcbiAgfCAndW5sb2NrJ1xuICB8ICd1cGxvYWQnXG4gIHwgJ3ZpZXcnXG4gIHwgJ3VzZXJzJ1xuICB8ICdyZWN5Y2xlJ1xuICB8ICd0cnVjaydcbiAgfCAndGFnJ1xuICB8ICdyZWNlaXB0J1xuICB8ICdiYW5rJ1xuICB8ICdhcnJvd2gnO1xuLy8jZW5kcmVnaW9uXG5cbi8vI3JlZ2lvbiB0YWJsZSBjb2x1bW5zXG5leHBvcnQgaW50ZXJmYWNlIElSb3dPcHRpb24ge1xuICB0OiBzdHJpbmc7XG4gIGFjdGlvbj86IChyb3c6IGFueSkgPT4gdm9pZDtcbn1cbmV4cG9ydCB0eXBlIENlbGxUeXBlID0gRVRTSW5wdXRUeXBlIHwgJ3RhYmxlJyB8ICdidG5zJyB8ICdlZGl0YWJsZScgfCAnaW5wdXQnO1xuZXhwb3J0IGludGVyZmFjZSBJVGFibGVDb2w8VCA9IGFueT4ge1xuICB0OiBzdHJpbmc7XG4gIGY6IGtleW9mIFQ7XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgZm9ybWF0dGVyPzogKHZhbDogYW55KSA9PiBzdHJpbmcgfCBQcm9taXNlPHN0cmluZz47XG4gIHA/OiBzdHJpbmdbXTtcbiAgZm9ybWF0dGVyUD86ICguLi52YWw6IGFueSkgPT4gc3RyaW5nO1xuICBoaW50Rm9ybWF0dGVyPzogKHZhbDogYW55KSA9PiBQcm9taXNlPHN0cmluZz47XG4gIHJvdXRlRm9ybWF0dGVyPzogRm9ybWF0dGVyRnVuY1R5cGU8c3RyaW5nLCBUPjtcbiAgbXF1ZXJ5UGFyYW1zPzogRm9ybWF0dGVyRnVuY1R5cGU8e30sIFQ+O1xuICB0eXBlPzogQ2VsbFR5cGU7XG4gIGFjdGl2ZT86IGJvb2xlYW47XG59XG5leHBvcnQgY2xhc3MgRVRTVGFibGVDb2w8VCA9IGFueT4gaW1wbGVtZW50cyBJVGFibGVDb2w8VD4ge1xuICBhY3Rpb24/OiAoXG4gICAgcm93OiBhbnksXG4gICAgY2VsbEZpZWxkOiBrZXlvZiBULFxuICAgIHNldExvYWRpbmc/OiAodmFsdWU6IGJvb2xlYW4pID0+IHZvaWQsXG4gICAgaW5kZXg/OiBudW1iZXJcbiAgKSA9PiBhbnk7XG4gIGFjdGl2ZT86IGJvb2xlYW47XG4gIGJ0bj86IEJ0bjtcbiAgYnV0dG9ucz86IEJ0bltdO1xuICBjaGVja2VkPzogYm9vbGVhbjtcbiAgc3RpY2t5PzogYm9vbGVhbjtcbiAgZjoga2V5b2YgVDtcbiAgZm9ybWF0dGVyPzogKHZhbDogYW55KSA9PiBzdHJpbmcgfCBQcm9taXNlPHN0cmluZz47XG4gIGhpbnRGb3JtYXR0ZXI/OiAodmFsOiBhbnkpID0+IFByb21pc2U8c3RyaW5nPjtcbiAgZm9ybWF0dGVyUm93PzogRm9ybWF0dGVyRnVuY1R5cGU8c3RyaW5nLCBUPjtcbiAgaGludD86IHN0cmluZztcbiAgaWNvbj86IEVUU0ljb25UeXBlO1xuICBtcXVlcnlQYXJhbXM/OiBGb3JtYXR0ZXJGdW5jVHlwZTx7fSwgVD47XG4gIHA/OiBzdHJpbmdbXTtcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICByb3V0ZUZvcm1hdHRlcj86IEZvcm1hdHRlckZ1bmNUeXBlPHN0cmluZywgVD47XG4gIHN1YlRhYmxlPzogRVRTVGFibGVDb2xbXTtcbiAgdDogc3RyaW5nO1xuICB0eXBlPzogQ2VsbFR5cGU7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHQ6IHN0cmluZyxcbiAgICBmPzoga2V5b2YgVCxcbiAgICBmb3JtYXR0ZXI/OiAodmFsOiBhbnkpID0+IHN0cmluZyB8IFByb21pc2U8c3RyaW5nPixcbiAgICBmb3JtYXR0ZXJSb3c/OiBGb3JtYXR0ZXJGdW5jVHlwZSxcbiAgICB0eXBlPzogQ2VsbFR5cGUsXG4gICAgY2hlY2tlZD86IGJvb2xlYW4sXG4gICAgcm91dGVGb3JtYXR0ZXI/OiBGb3JtYXR0ZXJGdW5jVHlwZTxzdHJpbmcsIFQ+LFxuICAgIG1xdWVyeVBhcmFtcz86IEZvcm1hdHRlckZ1bmNUeXBlPHt9LCBUPixcbiAgICBhY3Rpb24/OiAocm93OiBhbnksIGNlbGxGaWVsZDoga2V5b2YgVCkgPT4gYW55XG4gICkge1xuICAgIHRoaXMudCA9IHQ7XG4gICAgdGhpcy5mID0gZiB8fCAoKCdmJyArIE1hdGgucm91bmQoTWF0aC5yYW5kb20oKSAqIDEwMDAwMDApKSBhcyBhbnkpO1xuICAgIHRoaXMuZm9ybWF0dGVyID0gZm9ybWF0dGVyO1xuICAgIHRoaXMuZm9ybWF0dGVyUm93ID0gZm9ybWF0dGVyUm93O1xuICAgIHRoaXMudHlwZSA9IHR5cGU7XG4gICAgdGhpcy5jaGVja2VkID0gY2hlY2tlZCB8fCBmYWxzZTtcbiAgICB0aGlzLnJvdXRlRm9ybWF0dGVyID0gcm91dGVGb3JtYXR0ZXI7XG4gICAgdGhpcy5tcXVlcnlQYXJhbXMgPSBtcXVlcnlQYXJhbXM7XG4gICAgdGhpcy5hY3Rpb24gPSBhY3Rpb247XG4gIH1cbn1cblxuLy8jZW5kcmVnaW9uXG5cbnR5cGUgRm9ybWF0dGVyRnVuY1R5cGU8UiA9IHN0cmluZywgVCA9IGFueT4gPSAoXG4gIHJvdzogVCxcbiAgY2VsbEZpZWxkPzoga2V5b2YgVFxuKSA9PiBSO1xuZXhwb3J0IGludGVyZmFjZSBJQ29kZVRpdGxlPENvZGUgPSBzdHJpbmc+IHtcbiAgY29kZTogQ29kZTtcbiAgdGl0bGU6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJQ29kZURlc2NyaXB0aW9uIHtcbiAgY29kZTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElNa3REZXNjcmlwdGlvbiB7XG4gIG1rdEV2ZW50Q29kZTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElDb2RlIHtcbiAgY29kZTogc3RyaW5nO1xufVxuZXhwb3J0IGVudW0gRU1lbnVMb2NhdGlvbiB7XG4gIHZpZXdQYWdlMSA9ICd2aWV3UGFnZScsXG59XG5leHBvcnQgZW51bSBEYXkge1xuICBzdW5kYXkgPSAnU3VuZGF5JyxcbiAgbW9uZGF5ID0gJ01vbmRheScsXG4gIHR1ZXNkYXkgPSAnVHVlc2RheScsXG4gIHdlZG5lc2RheSA9ICdXZWRuZXNkYXknLFxuICB0aHVyc2RheSA9ICdUaHVyc2RheScsXG4gIGZyaWRheSA9ICdGcmlkYXknLFxuICBzYXR1cmRheSA9ICdTYXR1cmRheScsXG59XG5leHBvcnQgZW51bSBFUGFnZVR5cGUge1xuICBjbG9uZVBhZ2UgPSAnY2xvbmVQYWdlJyxcbiAgZWRpdFBhZ2UgPSAnZWRpdFBhZ2UnLFxuICBzaG93UGFnZSA9ICdzaG93UGFnZScsXG4gIGNyZWF0ZVBhZ2UgPSAnY3JlYXRlUGFnZScsXG4gIGluZGV4UGFnZSA9ICdpbmRleFBhZ2UnLFxufVxuZXhwb3J0IGludGVyZmFjZSBJRG9jTWV0YWRhdGEge1xuICBib3hObz86IHN0cmluZztcbiAgYnJhbmNoPzogc3RyaW5nO1xuICBjYXRlZ29yeT86IHN0cmluZztcbiAgY3JlYXRlZEJ5Pzogc3RyaW5nO1xuICBwb2xpY3lDb2RlPzogc3RyaW5nO1xuICBwb2xpY3lObz86IHN0cmluZztcbiAgcG9saWN5Tm9TdWZmaXg/OiBzdHJpbmc7XG4gIHJlZkNhdD86IFJlZkNhdDtcbiAgcmVmTm8/OiBzdHJpbmcgfCBudW1iZXI7XG4gIHNlbnNpdGl2aXR5Pzogc3RyaW5nO1xuICBzdWJDYXRlZ29yeT86IFN1YkNhdGVnb3J5O1xuICB0aXRsZTogc3RyaW5nO1xufVxuZXhwb3J0IHR5cGUgUmVmQ2F0ID1cbiAgfCAnQUdUJ1xuICB8ICdBUFAnXG4gIHwgJ0FTUydcbiAgfCAnQVVUSCdcbiAgfCAnQkFOJ1xuICB8ICdCQVQnXG4gIHwgJ0JSQSdcbiAgfCAnQ0xBJ1xuICB8ICdDTEknXG4gIHwgJ0NPTSdcbiAgfCAnQ09VJ1xuICB8ICdDT1YnXG4gIHwgJ0ROJ1xuICB8ICdET0MnXG4gIHwgJ0VORCdcbiAgfCAnRU5SJ1xuICB8ICdHUk8nXG4gIHwgJ05CJ1xuICB8ICdQQVknXG4gIHwgJ1BOUydcbiAgfCAnUE8nXG4gIHwgJ1BPTCdcbiAgfCAnUFJPJ1xuICB8ICdRVU8nXG4gIHwgJ1JBVCdcbiAgfCAnU04nXG4gIHwgJ1NUJ1xuICB8ICdUQVInXG4gIHwgJ1RBUydcbiAgfCAnVFJBJ1xuICB8ICdUU0MnXG4gIHwgJ1VTUidcbiAgfCAnV0YnO1xuZXhwb3J0IHR5cGUgU3ViQ2F0ZWdvcnkgPVxuICB8ICdBR1QnXG4gIHwgJ0FPQydcbiAgfCAnQVAnXG4gIHwgJ0NOJ1xuICB8ICdDU0QnXG4gIHwgJ0lEJ1xuICB8ICdMSSdcbiAgfCAnTElDJ1xuICB8ICdQUCdcbiAgfCAnUklCJ1xuICB8ICdTSSc7XG5leHBvcnQgaW50ZXJmYWNlIElTeXN0ZW08XG4gIFN5c3RlbVR5cGUgPSBFU3lzdGVtLFxuICBURVN5c3RlbUJ1c0xpbmUgPSBFU3lzdGVtQnVzTGluZVxuPiB7XG4gIGFwcFJvdXRlOiBBcHBSb3V0ZUJhc2U7XG4gIG5hbWU6IFN5c3RlbVR5cGU7XG4gIGJ1c2xpbmU6IFRFU3lzdGVtQnVzTGluZTtcbiAgY29sb3VyQ29kZTogc3RyaW5nO1xuICByb290UGF0aDogc3RyaW5nO1xufVxuXG5leHBvcnQgZW51bSBFU3lzdGVtIHt9XG5leHBvcnQgZW51bSBFU3ViU3lzdGVtIHt9XG5leHBvcnQgZW51bSBFU3lzdGVtQnVzTGluZSB7fVxuZXhwb3J0IGVudW0gRUxhbmd1YWdlIHtcbiAgRU4gPSAnRU4nLFxuICBGUiA9ICdGUicsXG59XG5cbmV4cG9ydCBlbnVtIEVWYWxpZGF0aW9uVHlwZSB7XG4gIGVtYWlsID0gJ2VtYWlsJyxcbiAgZW50aXR5TnVtYmVyID0gJ2VudGl0eU51bWJlcicsXG4gIG1heGxlbmd0aCA9ICdtYXhsZW5ndGgnLFxuICBtaW5sZW5ndGggPSAnbWlubGVuZ3RoJyxcbiAgbW9iaWxlID0gJ21vYmlsZScsXG4gIG5hbWUgPSAnbmFtZScsXG4gIG5vcm1hbCA9ICdub3JtYWwnLFxuICBwYXNzd29yZE5vdE1hdGNoID0gJ3Bhc3N3b3JkTm90TWF0Y2gnLFxuICBwYXR0ZXJuID0gJ3BhdHRlcm4nLFxuICByZXF1aXJlZCA9ICdyZXF1aXJlZCcsXG4gIHVuaXF1ZSA9ICd1bmlxdWUnLFxuICBjdXN0b20gPSAnY3VzdG9tJyxcbn1cbmV4cG9ydCBpbnRlcmZhY2UgSVZhbGlkYXRpb25NZXNzYWdlIHtcbiAgdHlwZTogRVZhbGlkYXRpb25UeXBlO1xuICBtZXNzYWdlOiBzdHJpbmc7XG59XG5leHBvcnQgdHlwZSBTb3J0VHlwZSA9ICdhc2MnIHwgJ2Rlc2MnO1xuXG5pbnRlcmZhY2UgU29ydCB7XG4gIHNvcnRlZDogYm9vbGVhbjtcbiAgdW5zb3J0ZWQ6IGJvb2xlYW47XG4gIGVtcHR5OiBib29sZWFuO1xufVxuXG5pbnRlcmZhY2UgSVBhZ2U8VD4ge1xuICBjb250ZW50OiBUW107XG4gIG51bWJlcjogbnVtYmVyO1xuICBzaXplOiBudW1iZXI7XG4gIHRvdGFsRWxlbWVudHM6IG51bWJlcjtcbiAgdG90YWxQYWdlczogbnVtYmVyO1xuICBsYXN0OiBib29sZWFuO1xuICBmaXJzdDogYm9vbGVhbjtcbiAgc29ydDogU29ydDtcbiAgbnVtYmVyT2ZFbGVtZW50czogbnVtYmVyO1xuICBlbXB0eTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJR2V0UXVlcnkge1xuICBwYWdlTnVtYmVyPzogbnVtYmVyO1xuICBwYWdlU2l6ZT86IG51bWJlcjtcbiAgW3g6IHN0cmluZ106IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJU2VhcmNoUmVzcG9uc2U8VCA9IGFueT4ge1xuICBwYWdlOiBJUGFnZTxUPjtcbiAgbGlzdFNpemU6IG51bWJlcjtcbiAgcGFnZU51bWJlcj86IG51bWJlcjtcbiAgcGFnZVNpemU/OiBudW1iZXI7XG4gIHNlYXJjaENyaXRlcmlhOiBhbnk7XG4gIHF1ZXJ5PzpJR2V0UXVlcnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVNlYXJjaFJlc3BvbnNlMjxUID0gYW55PiB7XG4gIGNvbnRlbnQ6IFRbXTtcbiAgZW1wdHk6IGJvb2xlYW47XG4gIGZpcnN0OiBib29sZWFuO1xuICBsYXN0OiBib29sZWFuO1xuICBudW1iZXI6IG51bWJlcjtcbiAgbnVtYmVyT2ZFbGVtZW50czogbnVtYmVyO1xuICBzaXplOiBudW1iZXI7XG4gIHRvdGFsRWxlbWVudHM6IG51bWJlcjtcbiAgdG90YWxQYWdlczogbnVtYmVyO1xuICBxdWVyeT86SUdldFF1ZXJ5O1xuICBzb3J0OiB7XG4gICAgc29ydGVkOiBib29sZWFuO1xuICAgIHVuc29ydGVkOiBib29sZWFuO1xuICAgIGVtcHR5OiBib29sZWFuO1xuICB9O1xufVxuXG5leHBvcnQgdHlwZSBJbWFnZVR5cGUgPSAncHAnIHwgJ290aGVyJztcbmV4cG9ydCBpbnRlcmZhY2UgSVRhYiB7XG4gIGlkPzogc3RyaW5nO1xuICB0YXJnZXQ/OiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGZvcm0/OiBzdHJpbmc7XG4gIHBvc3RGdW5jdGlvbj86IChcbiAgICBkYXRhOiBhbnksXG4gICAgcHJvZHVjdENvZGU/OiBzdHJpbmdcbiAgKSA9PiBPYnNlcnZhYmxlPHtcbiAgICBkYXRhOiBhbnk7XG4gICAgcHJvZHVjdENvZGU6IHN0cmluZztcbiAgfT47XG4gIHB1dEZ1bmN0aW9uPzogKFxuICAgIGRhdGE6IGFueSxcbiAgICBwcm9kdWN0Q29kZTogc3RyaW5nXG4gICkgPT4gT2JzZXJ2YWJsZTx7XG4gICAgZGF0YTogYW55O1xuICAgIHByb2R1Y3RDb2RlOiBzdHJpbmc7XG4gIH0+O1xuICBkYXRhPzogYW55O1xufVxuZXhwb3J0IGludGVyZmFjZSBDdXN0b21WYWxpZGF0aW9uRXJyb3Ige1xuICBjdXN0b20/OiBzdHJpbmc7XG4gIG1heGxlbmd0aD86IGJvb2xlYW47XG4gIG1heExlbmd0aD86IGJvb2xlYW47XG4gIG1pbmxlbmd0aD86IGJvb2xlYW47XG4gIG1pbkxlbmd0aD86IGJvb2xlYW47XG4gIG5vdEZvdW5kPzogYm9vbGVhbjtcbiAgbm90VW5pcXVlPzogYm9vbGVhbjtcbiAgcGF0dGVybj86IGJvb2xlYW47XG4gIHJlcXVpcmVkPzogYm9vbGVhbjtcbiAgdXNlZD86IGJvb2xlYW47XG59XG5leHBvcnQgZW51bSBFTWVudVR5cGUge1xuICBob3Jpem9udGFsID0gJ0gnLFxuICB2ZXJ0aWNhbCA9ICdWJyxcbn1cbmV4cG9ydCBpbnRlcmZhY2UgSVZhbHVlTGFiZWw8VD4ge1xuICB2YWx1ZTogVDtcbiAgbGFiZWw6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJQ29uZmlnSW1hZ2VzIHtcbiAgZmF2aWNvbjogc3RyaW5nO1xuICB3YXRlcm1hcms6IHN0cmluZztcbiAgbG9nbzoge1xuICAgIGRhcms6IHN0cmluZztcbiAgICBsaWdodDogc3RyaW5nO1xuICB9O1xuICBwcDoge1xuICAgIHNyYzogc3RyaW5nO1xuICAgIG1pbjogc3RyaW5nO1xuICB9O1xuICBvdGhlcjoge1xuICAgIHNyYzogc3RyaW5nO1xuICAgIG1pbjogc3RyaW5nO1xuICB9O1xufVxuZXhwb3J0IGNsYXNzIENvbnN0YW50IHtcbiAgLy8gICBjb25zdHJ1Y3RvcigpIHt9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVRhYmxlTmFtZSB7XG4gIHNjaGVtYTogc3RyaW5nO1xuICBwcmltYXJ5VGFibGU6IHN0cmluZztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgSVR5cGVEZXNjcmlwdGlvbiB7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIHR5cGU6IHN0cmluZztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgSVNlcnZpY2VGdW5jdGlvbiB7XG4gIF9iYXNlPzogKC4uLmFyZ3MpID0+IGFueTtcbiAgc2VhcmNoOiAoLi4uYXJncykgPT4gT2JzZXJ2YWJsZTxhbnk+O1xuICBjcmVhdGU6ICguLi5hcmdzKSA9PiBPYnNlcnZhYmxlPGFueT47XG59XG4iXX0=
|
|
150
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ldHMtZmUtbmctc2RrL3NyYy9saWIvU2hhcmVkL21vZGVscy9pbmRleC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBNkMzQyxNQUFNLE9BQU8sT0FBTztJQVlsQixZQUNFLEtBQWEsRUFDYixJQUFhLEVBQ2IsV0FBNkIsRUFDN0IsSUFBbUIsRUFDbkIsUUFBa0IsRUFDbEIsV0FBb0IsRUFDcEIsR0FBMEIsRUFDMUIsTUFBZSxFQUNmLE1BQWU7UUFFZixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLENBQUM7UUFDOUQsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLElBQUksV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3hELElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxJQUFJLE1BQU0sQ0FBQztRQUMzQixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsSUFBSSxLQUFLLENBQUM7UUFDbEMsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLElBQUksRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO1FBQy9CLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7Q0FDRjtBQUNELE1BQU0sT0FBTyxTQUFTO0lBYXBCLElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxTQUFTLENBQUM7SUFDdkQsQ0FBQztJQUdELFlBQ0UsS0FBYSxFQUNiLElBQWEsRUFDYixLQUFXLEVBQ1gsSUFBbUIsRUFDbkIsUUFBa0IsRUFDbEIsV0FBb0IsRUFDcEIsR0FBMEIsRUFDMUIsTUFBZSxFQUNmLE1BQWU7UUFFZixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsRUFBRSxHQUFHLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxRQUFRLENBQUMsQ0FBQztRQUMzRCxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksSUFBSSxNQUFNLENBQUM7UUFDM0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLElBQUksS0FBSyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO0lBQ2pDLENBQUM7Q0FDRjtBQVNELE1BQU0sT0FBTyxNQUFNO0lBSWpCLFlBQVksR0FBVyxFQUFFLEtBQWlDLEVBQUUsR0FBWTtRQUN0RSxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUNmLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO0lBQ2pCLENBQUM7Q0FDRjtBQUNELE1BQU0sT0FBTyxPQUFRLFNBQVEsTUFBTTtJQVlqQyxZQUNFLEdBQVcsRUFDWCxLQUFhLEVBQ2IsUUFBa0IsRUFDbEIsS0FBaUMsRUFDMUIsU0FBd0IsRUFDL0IsSUFBYSxFQUNiLE1BQVksRUFDWixTQUFrRCxFQUNsRCxHQUFZLEVBQ1osS0FBYyxFQUNkLFNBQWtCO1FBRWxCLEtBQUssQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBUmhCLGNBQVMsR0FBVCxTQUFTLENBQWU7UUFTL0IsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDekIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDM0IsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7SUFDN0IsQ0FBQztDQUNGO0FBT0QsTUFBTSxPQUFPLEdBQUc7SUFLZCxZQUNFLEdBQVcsRUFDWCxLQUFpQyxFQUNqQyxJQUFhLEVBQ2IsR0FBWTtRQUVaLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ2YsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLElBQUksR0FBRyxDQUFDO1FBQzFCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO0lBQ2pCLENBQUM7Q0FDRjtBQWVELE1BQU0sT0FBTyxHQUFHO0lBaUJkLFlBQ0UsR0FBVyxFQUNYLE1BQWdDLEVBQ2hDLElBQWlCLEVBQ2pCLElBQWtCLEVBQ2xCLEdBQVksRUFDWixJQUFhLEVBQ2IsWUFBc0IsRUFDdEIsT0FBaUIsRUFDakIsUUFBa0I7UUFFbEIsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7UUFDZixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUNmLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0lBQzNCLENBQUM7Q0FDRjtBQUNELE1BQU0sT0FBTyxLQUFLO0lBTWhCLFlBQ0UsR0FBVyxFQUNYLEtBQWlDLEVBQ2pDLE1BQVksRUFDWixHQUFZLEVBQ1osS0FBTTtRQUVOLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ2YsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLElBQUksR0FBRyxDQUFDO1FBQzFCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ2YsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDckIsQ0FBQztDQUNGO0FBMkZELE1BQU0sT0FBTyxXQUFXO0lBeUJ0QixZQUNFLENBQVMsRUFDVCxDQUFXLEVBQ1gsU0FBa0QsRUFDbEQsWUFBZ0MsRUFDaEMsSUFBZSxFQUNmLE9BQWlCLEVBQ2pCLGNBQTZDLEVBQzdDLFlBQXVDLEVBQ3ZDLE1BQThDO1FBRTlDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ1gsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUssQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsT0FBTyxDQUFDLENBQVMsQ0FBQztRQUNuRSxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUMzQixJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztRQUNqQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sSUFBSSxLQUFLLENBQUM7UUFDaEMsSUFBSSxDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUM7UUFDckMsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7UUFDakMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7SUFDdkIsQ0FBQztDQUNGO0FBMEJELE1BQU0sQ0FBTixJQUFZLGFBRVg7QUFGRCxXQUFZLGFBQWE7SUFDdkIsdUNBQXNCLENBQUE7QUFDeEIsQ0FBQyxFQUZXLGFBQWEsS0FBYixhQUFhLFFBRXhCO0FBQ0QsTUFBTSxDQUFOLElBQVksR0FRWDtBQVJELFdBQVksR0FBRztJQUNiLHdCQUFpQixDQUFBO0lBQ2pCLHdCQUFpQixDQUFBO0lBQ2pCLDBCQUFtQixDQUFBO0lBQ25CLDhCQUF1QixDQUFBO0lBQ3ZCLDRCQUFxQixDQUFBO0lBQ3JCLHdCQUFpQixDQUFBO0lBQ2pCLDRCQUFxQixDQUFBO0FBQ3ZCLENBQUMsRUFSVyxHQUFHLEtBQUgsR0FBRyxRQVFkO0FBQ0QsTUFBTSxDQUFOLElBQVksU0FNWDtBQU5ELFdBQVksU0FBUztJQUNuQixvQ0FBdUIsQ0FBQTtJQUN2QixrQ0FBcUIsQ0FBQTtJQUNyQixrQ0FBcUIsQ0FBQTtJQUNyQixzQ0FBeUIsQ0FBQTtJQUN6QixvQ0FBdUIsQ0FBQTtBQUN6QixDQUFDLEVBTlcsU0FBUyxLQUFULFNBQVMsUUFNcEI7QUF3RUQsTUFBTSxDQUFOLElBQVksT0FBVTtBQUF0QixXQUFZLE9BQU87QUFBRSxDQUFDLEVBQVYsT0FBTyxLQUFQLE9BQU8sUUFBRztBQUN0QixNQUFNLENBQU4sSUFBWSxVQUFhO0FBQXpCLFdBQVksVUFBVTtBQUFFLENBQUMsRUFBYixVQUFVLEtBQVYsVUFBVSxRQUFHO0FBQ3pCLE1BQU0sQ0FBTixJQUFZLGNBQWlCO0FBQTdCLFdBQVksY0FBYztBQUFFLENBQUMsRUFBakIsY0FBYyxLQUFkLGNBQWMsUUFBRztBQUM3QixNQUFNLENBQU4sSUFBWSxTQUdYO0FBSEQsV0FBWSxTQUFTO0lBQ25CLHNCQUFTLENBQUE7SUFDVCxzQkFBUyxDQUFBO0FBQ1gsQ0FBQyxFQUhXLFNBQVMsS0FBVCxTQUFTLFFBR3BCO0FBRUQsTUFBTSxDQUFOLElBQVksZUFhWDtBQWJELFdBQVksZUFBZTtJQUN6QixrQ0FBZSxDQUFBO0lBQ2YsZ0RBQTZCLENBQUE7SUFDN0IsMENBQXVCLENBQUE7SUFDdkIsMENBQXVCLENBQUE7SUFDdkIsb0NBQWlCLENBQUE7SUFDakIsZ0NBQWEsQ0FBQTtJQUNiLG9DQUFpQixDQUFBO0lBQ2pCLHdEQUFxQyxDQUFBO0lBQ3JDLHNDQUFtQixDQUFBO0lBQ25CLHdDQUFxQixDQUFBO0lBQ3JCLG9DQUFpQixDQUFBO0lBQ2pCLG9DQUFpQixDQUFBO0FBQ25CLENBQUMsRUFiVyxlQUFlLEtBQWYsZUFBZSxRQWExQjtBQTZGRCxNQUFNLENBQU4sSUFBWSxTQUdYO0FBSEQsV0FBWSxTQUFTO0lBQ25CLDZCQUFnQixDQUFBO0lBQ2hCLDJCQUFjLENBQUE7QUFDaEIsQ0FBQyxFQUhXLFNBQVMsS0FBVCxTQUFTLFFBR3BCO0FBc0JELE1BQU0sT0FBTyxRQUFRO0NBRXBCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjb25maWdGb3JtcyB9IGZyb20gJy4vZm9ybS5jbGFzcyc7XG5pbXBvcnQgeyBBcHBSb3V0ZUJhc2UgfSBmcm9tICcuL1JvdXRlSXRlbS5jbGFzcyc7XG5cbi8vI3JlZ2lvbiBpbnB1dHNcbmludGVyZmFjZSBJRVRTSW5wdXRCYXNlIHtcbiAgbmFtZT86IHN0cmluZztcbiAgbGFiZWw6IHN0cmluZztcbiAgdmFsdWU/OiBhbnk7XG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuICBjbHM/OiBzdHJpbmc7XG4gIHJlcXVpcmVkPzogYm9vbGVhbjtcbiAgdHlwZT86IEVUU0lucHV0VHlwZTtcbn1cbmludGVyZmFjZSBJRVRTRkNJbnB1dCBleHRlbmRzIElFVFNJbnB1dEJhc2Uge1xuICBuYW1lOiBzdHJpbmc7XG4gIHByZWZpeD86IHN0cmluZztcbiAgc3VmZml4Pzogc3RyaW5nO1xuICBmb3JtQ29udHJvbDogQWJzdHJhY3RDb250cm9sO1xuICBmb3JtOiBGb3JtR3JvdXA7XG4gIHZtcz86IElWYWxpZGF0aW9uTWVzc2FnZVtdO1xufVxuXG5leHBvcnQgdHlwZSBFVFNJbnB1dFR5cGUgPVxuICB8ICdhdXRvY29tcGxldGUnXG4gIHwgJ2J1dHRvbidcbiAgfCAnY2hlY2tib3gnXG4gIHwgJ2NoZWNrZWRib3gnXG4gIHwgJ2NvbG9yJ1xuICB8ICdkYXRlJ1xuICB8ICdkYXRldGltZS1sb2NhbCdcbiAgfCAnZGhtJ1xuICB8ICdlbWFpbCdcbiAgfCAnZmlsZSdcbiAgfCAnZmlsZUJ1dHRvbidcbiAgfCAnbnVtYmVyJ1xuICB8ICdwYXNzd29yZCdcbiAgfCAncHJvZ3Jlc3MnXG4gIHwgJ3BlcmNlbnRhZ2UnXG4gIHwgJ3JhZGlvJ1xuICB8ICdzZWxlY3QnXG4gIHwgJ3RlbCdcbiAgfCAndGV4dCdcbiAgfCAndGV4dGFyZWEnXG4gIHwgJ3RpbWUnXG4gIHwgJ3ZpZXdlcic7XG5leHBvcnQgY2xhc3MgRkNJbnB1dCBpbXBsZW1lbnRzIElFVFNGQ0lucHV0IHtcbiAgbmFtZTogc3RyaW5nO1xuICBsYWJlbDogc3RyaW5nO1xuICBwbGFjZWhvbGRlcj86IHN0cmluZztcbiAgY2xzPzogc3RyaW5nO1xuICBwcmVmaXg/OiBzdHJpbmc7XG4gIHN1ZmZpeD86IHN0cmluZztcbiAgcmVxdWlyZWQ/OiBib29sZWFuO1xuICB0eXBlPzogRVRTSW5wdXRUeXBlO1xuICBmb3JtQ29udHJvbDogQWJzdHJhY3RDb250cm9sO1xuICB2bXM/OiBJVmFsaWRhdGlvbk1lc3NhZ2VbXTtcbiAgZm9ybTogRm9ybUdyb3VwO1xuICBjb25zdHJ1Y3RvcihcbiAgICBsYWJlbDogc3RyaW5nLFxuICAgIG5hbWU/OiBzdHJpbmcsXG4gICAgZm9ybUNvbnRyb2w/OiBBYnN0cmFjdENvbnRyb2wsXG4gICAgdHlwZT86IEVUU0lucHV0VHlwZSxcbiAgICByZXF1aXJlZD86IGJvb2xlYW4sXG4gICAgcGxhY2Vob2xkZXI/OiBzdHJpbmcsXG4gICAgdm1zPzogSVZhbGlkYXRpb25NZXNzYWdlW10sXG4gICAgcHJlZml4Pzogc3RyaW5nLFxuICAgIHN1ZmZpeD86IHN0cmluZ1xuICApIHtcbiAgICB0aGlzLm5hbWUgPSBuYW1lIHx8ICdmbicgKyBNYXRoLnJvdW5kKE1hdGgucmFuZG9tKCkgKiAxMDAwMDApO1xuICAgIHRoaXMubGFiZWwgPSBsYWJlbDtcbiAgICB0aGlzLmZvcm1Db250cm9sID0gZm9ybUNvbnRyb2wgfHwgY29uZmlnRm9ybXMuZGVmYXVsdCgpO1xuICAgIHRoaXMudHlwZSA9IHR5cGUgfHwgJ3RleHQnO1xuICAgIHRoaXMucmVxdWlyZWQgPSByZXF1aXJlZCB8fCBmYWxzZTtcbiAgICB0aGlzLnZtcyA9IHZtcyB8fCBbXTtcbiAgICB0aGlzLnBsYWNlaG9sZGVyID0gcGxhY2Vob2xkZXI7XG4gICAgdGhpcy5wcmVmaXggPSBwcmVmaXg7XG4gICAgdGhpcy5zdWZmaXggPSBzdWZmaXg7XG4gIH1cbn1cbmV4cG9ydCBjbGFzcyBDRVRTSW5wdXQgaW1wbGVtZW50cyBJRVRTSW5wdXRCYXNlIHtcbiAgbmFtZTogc3RyaW5nO1xuICBsYWJlbDogc3RyaW5nO1xuICBwbGFjZWhvbGRlcj86IHN0cmluZztcbiAgY2xzPzogc3RyaW5nO1xuICByZXF1aXJlZD86IGJvb2xlYW47XG4gIHR5cGU/OiBFVFNJbnB1dFR5cGU7XG4gIHZhbHVlOiBzdHJpbmc7XG4gIGhpZGU6IGJvb2xlYW47XG4gIGRpc2FibGVkOiBib29sZWFuO1xuICByZWFkb25seTogYm9vbGVhbjtcbiAgaWQ6IHN0cmluZztcbiAgaGFzRXJyb3I6IGJvb2xlYW47XG4gIGdldCBpc0VtcHR5KCkge1xuICAgIHJldHVybiB0aGlzLnZhbHVlID09IG51bGwgfHwgdGhpcy52YWx1ZSA9PSB1bmRlZmluZWQ7XG4gIH1cbiAgeDogbnVtYmVyO1xuICB5OiBudW1iZXI7XG4gIGNvbnN0cnVjdG9yKFxuICAgIGxhYmVsOiBzdHJpbmcsXG4gICAgbmFtZT86IHN0cmluZyxcbiAgICB2YWx1ZT86IGFueSxcbiAgICB0eXBlPzogRVRTSW5wdXRUeXBlLFxuICAgIHJlcXVpcmVkPzogYm9vbGVhbixcbiAgICBwbGFjZWhvbGRlcj86IHN0cmluZyxcbiAgICB2bXM/OiBJVmFsaWRhdGlvbk1lc3NhZ2VbXSxcbiAgICBwcmVmaXg/OiBzdHJpbmcsXG4gICAgc3VmZml4Pzogc3RyaW5nXG4gICkge1xuICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgdGhpcy5pZCA9ICdpbnB1dElEJyArIE1hdGgucm91bmQoTWF0aC5yYW5kb20oKSAqIDEwMDAwMDAwKTtcbiAgICB0aGlzLmxhYmVsID0gbGFiZWw7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMudHlwZSA9IHR5cGUgfHwgJ3RleHQnO1xuICAgIHRoaXMucmVxdWlyZWQgPSByZXF1aXJlZCB8fCBmYWxzZTtcbiAgICB0aGlzLnBsYWNlaG9sZGVyID0gcGxhY2Vob2xkZXI7XG4gIH1cbn1cbi8vI2VuZHJlZ2lvblxuXG4vLyNyZWdpb24ga2V5IHZhbHVlIHBhaXJcbmV4cG9ydCBpbnRlcmZhY2UgSUVUU0tWUCB7XG4gIHJlYWRvbmx5IGtleT86IGFueTtcbiAgdmFsdWU/OiBzdHJpbmcgfCBib29sZWFuIHwgbnVtYmVyO1xuICBjbHM/OiBzdHJpbmc7XG59XG5leHBvcnQgY2xhc3MgRVRTS1ZQIGltcGxlbWVudHMgSUVUU0tWUCB7XG4gIHJlYWRvbmx5IGtleTogc3RyaW5nO1xuICB2YWx1ZT86IHN0cmluZyB8IGJvb2xlYW4gfCBudW1iZXI7XG4gIGNscz86IHN0cmluZztcbiAgY29uc3RydWN0b3Ioa2V5OiBzdHJpbmcsIHZhbHVlPzogc3RyaW5nIHwgYm9vbGVhbiB8IG51bWJlciwgY2xzPzogc3RyaW5nKSB7XG4gICAgdGhpcy5rZXkgPSBrZXk7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMuY2xzID0gY2xzO1xuICB9XG59XG5leHBvcnQgY2xhc3MgRVRTRktWUCBleHRlbmRzIEVUU0tWUCB7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGVkaXRhYmxlPzogYm9vbGVhbjtcbiAgZWRpdGluZz86IGJvb2xlYW47XG4gIHJvdXRlPzogc3RyaW5nO1xuICByb3V0ZUZ1bmM/OiAoaXRlbSkgPT4gUHJvbWlzZTxzdHJpbmc+IHwgT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICBoaW50Pzogc3RyaW5nO1xuICB2YWx1ZUhpbnQ/OiBzdHJpbmc7XG4gIGFjdGlvbj86IGFueTtcbiAgaXNQaG9uZT86IGJvb2xlYW47XG4gIGlzRW1haWw/OiBib29sZWFuO1xuICBmb3JtYXR0ZXI/OiAodmFsOiBhbnkpID0+IHN0cmluZyB8IFByb21pc2U8c3RyaW5nPiB8IE9ic2VydmFibGU8c3RyaW5nPjtcbiAgY29uc3RydWN0b3IoXG4gICAga2V5OiBzdHJpbmcsXG4gICAgbGFiZWw6IHN0cmluZyxcbiAgICBlZGl0YWJsZT86IGJvb2xlYW4sXG4gICAgdmFsdWU/OiBzdHJpbmcgfCBib29sZWFuIHwgbnVtYmVyLFxuICAgIHB1YmxpYyBpbnB1dFR5cGU/OiBFVFNJbnB1dFR5cGUsXG4gICAgaGludD86IHN0cmluZyxcbiAgICBhY3Rpb24/OiBhbnksXG4gICAgZm9ybWF0dGVyPzogKHZhbDogYW55KSA9PiBzdHJpbmcgfCBQcm9taXNlPHN0cmluZz4sXG4gICAgY2xzPzogc3RyaW5nLFxuICAgIHJvdXRlPzogc3RyaW5nLFxuICAgIHZhbHVlSGludD86IHN0cmluZ1xuICApIHtcbiAgICBzdXBlcihrZXksIHZhbHVlLCBjbHMpO1xuICAgIHRoaXMubGFiZWwgPSBsYWJlbDtcbiAgICB0aGlzLmhpbnQgPSBoaW50O1xuICAgIHRoaXMuZWRpdGFibGUgPSBlZGl0YWJsZTtcbiAgICB0aGlzLmFjdGlvbiA9IGFjdGlvbjtcbiAgICB0aGlzLmZvcm1hdHRlciA9IGZvcm1hdHRlcjtcbiAgICB0aGlzLnJvdXRlID0gcm91dGU7XG4gICAgdGhpcy52YWx1ZUhpbnQgPSB2YWx1ZUhpbnQ7XG4gIH1cbn1cbi8vI2VuZHJlZ2lvblxuXG4vLyNyZWdpb24gbGJsXG5leHBvcnQgaW50ZXJmYWNlIElMYmwgZXh0ZW5kcyBJRVRTS1ZQIHtcbiAgaGludD86IHN0cmluZztcbn1cbmV4cG9ydCBjbGFzcyBMYmwgaW1wbGVtZW50cyBJTGJsIHtcbiAgcmVhZG9ubHkga2V5OiBzdHJpbmc7XG4gIHZhbHVlOiBzdHJpbmcgfCBib29sZWFuIHwgbnVtYmVyO1xuICBoaW50Pzogc3RyaW5nO1xuICBjbHM/OiBzdHJpbmc7XG4gIGNvbnN0cnVjdG9yKFxuICAgIGtleTogc3RyaW5nLFxuICAgIHZhbHVlPzogc3RyaW5nIHwgYm9vbGVhbiB8IG51bWJlcixcbiAgICBoaW50Pzogc3RyaW5nLFxuICAgIGNscz86IHN0cmluZ1xuICApIHtcbiAgICB0aGlzLmtleSA9IGtleTtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWUgfHwgJy0nO1xuICAgIHRoaXMuaGludCA9IGhpbnQ7XG4gICAgdGhpcy5jbHMgPSBjbHM7XG4gIH1cbn1cbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIGJ0blxuZXhwb3J0IGludGVyZmFjZSBJQnRuIGV4dGVuZHMgSUVUU0tWUCB7XG4gIGFjdGlvbj86IChhcmc/KSA9PiB2b2lkO1xuICBncm91cD86IEVUU0J0bkdyb3VwO1xuICBoZWxwPzogc3RyaW5nO1xuICBpY29uPzogRVRTSWNvblR5cGU7XG4gIGljb25CdG4/OiBib29sZWFuO1xuICBtaW5pPzogYm9vbGVhbjtcbiAgc2hvd0hlbHBJY29uPzogYm9vbGVhbjtcbiAgbGFiZWw/OiBzdHJpbmc7XG4gIHR5cGU/OiBFVFNCdG5UeXBlO1xuICBleHRyYT86IGFueTtcbn1cbmV4cG9ydCBjbGFzcyBCdG4gaW1wbGVtZW50cyBJQnRuIHtcbiAgY2xzPzogc3RyaW5nO1xuICBncm91cD86IEVUU0J0bkdyb3VwO1xuICBoZWxwPzogc3RyaW5nO1xuICBpY29uPzogRVRTSWNvblR5cGU7XG4gIG1pbmk/OiBib29sZWFuO1xuICBpY29uQnRuPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgYWN0aW9uPzogKGRhdGE/LCAuLi5hcmdzKSA9PiB2b2lkO1xuICByZWFkb25seSBrZXk/OiBzdHJpbmc7XG4gIHNob3dIZWxwSWNvbj86IGJvb2xlYW47XG4gIGxhYmVsPzogc3RyaW5nO1xuICByb3V0ZT86IHN0cmluZztcbiAgdHlwZT86IEVUU0J0blR5cGU7XG4gIGV4dHJhPzogYW55O1xuICBsb2FkaW5nPzogYm9vbGVhbjtcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGtleTogc3RyaW5nLFxuICAgIGFjdGlvbj86IChkYXRhPywgLi4uYXJncykgPT4gYW55LFxuICAgIHR5cGU/OiBFVFNCdG5UeXBlLFxuICAgIGljb24/OiBFVFNJY29uVHlwZSxcbiAgICBjbHM/OiBzdHJpbmcsXG4gICAgaGVscD86IHN0cmluZyxcbiAgICBzaG93SGVscEljb24/OiBib29sZWFuLFxuICAgIGxvYWRpbmc/OiBib29sZWFuLFxuICAgIGRpc2FibGVkPzogYm9vbGVhblxuICApIHtcbiAgICB0aGlzLmtleSA9IGtleTtcbiAgICB0aGlzLmFjdGlvbiA9IGFjdGlvbjtcbiAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICAgIHRoaXMuaWNvbiA9IGljb247XG4gICAgdGhpcy5jbHMgPSBjbHM7XG4gICAgdGhpcy5oZWxwID0gaGVscDtcbiAgICB0aGlzLnNob3dIZWxwSWNvbiA9IHNob3dIZWxwSWNvbjtcbiAgICB0aGlzLmxvYWRpbmcgPSBsb2FkaW5nO1xuICAgIHRoaXMuZGlzYWJsZWQgPSBkaXNhYmxlZDtcbiAgfVxufVxuZXhwb3J0IGNsYXNzIEJ0bkxnIGltcGxlbWVudHMgSUJ0biB7XG4gIHJlYWRvbmx5IGtleTogc3RyaW5nO1xuICB2YWx1ZTogc3RyaW5nIHwgYm9vbGVhbiB8IG51bWJlcjtcbiAgcmVhZG9ubHkgYWN0aW9uPzogKCkgPT4gdm9pZDtcbiAgY2xzPzogc3RyaW5nO1xuICBleHRyYT86IGFueTtcbiAgY29uc3RydWN0b3IoXG4gICAga2V5OiBzdHJpbmcsXG4gICAgdmFsdWU/OiBzdHJpbmcgfCBib29sZWFuIHwgbnVtYmVyLFxuICAgIGFjdGlvbj86IGFueSxcbiAgICBjbHM/OiBzdHJpbmcsXG4gICAgZXh0cmE/XG4gICkge1xuICAgIHRoaXMua2V5ID0ga2V5O1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZSB8fCAnLSc7XG4gICAgdGhpcy5hY3Rpb24gPSBhY3Rpb247XG4gICAgdGhpcy5jbHMgPSBjbHM7XG4gICAgdGhpcy5leHRyYSA9IGV4dHJhO1xuICB9XG59XG5leHBvcnQgdHlwZSBFVFNCdG5UeXBlID1cbiAgfCAnY2xlYXInXG4gIHwgJ2Nsb3NlJ1xuICB8ICdkYW5nZXItb3V0bGluZSdcbiAgfCAnZGFuZ2VyJ1xuICB8ICdkYXJrLW91dGxpbmUnXG4gIHwgJ2RhcmsnXG4gIHwgJ291dGxpbmUtbm0nXG4gIHwgJ291dGxpbmUnXG4gIHwgJ3ByaW1hcnknXG4gIHwgJ3NlY29uZGFyeSdcbiAgfCAnc3VjY2Vzcyc7XG5leHBvcnQgdHlwZSBFVFNCdG5Hcm91cCA9XG4gIHwgJ2FkZCdcbiAgfCAnY2xvbmUnXG4gIHwgJ2Nsb3NlJ1xuICB8ICdjcmVhdGUnXG4gIHwgJ2RlbGV0ZSdcbiAgfCAnZG93bmxvYWQnXG4gIHwgJ2VkaXQnXG4gIHwgJ2xpbmsnXG4gIHwgJ3NlYXJjaCdcbiAgfCAnc2hvdydcbiAgfCAnc3VibWl0J1xuICB8ICd1cGxvYWQnO1xuZXhwb3J0IHR5cGUgRVRTSWNvblR5cGUgPVxuICB8ICdhY2Nlc3MnXG4gIHwgJ2FkZCdcbiAgfCAnYWRqdXN0J1xuICB8ICdjYWxlbmRhcidcbiAgfCAnY2FzaCdcbiAgfCAnY2hlY2tlZCdcbiAgfCAnY2hlY2tsaXN0J1xuICB8ICdjbG9uZSdcbiAgfCAnY2xvc2UnXG4gIHwgJ2NvZ3MnXG4gIHwgJ2RlbGV0ZSdcbiAgfCAnZG93bmxvYWQnXG4gIHwgJ2VkaXQnXG4gIHwgJ2V4cG9ydCdcbiAgfCAnZmlsZSdcbiAgfCAnZmlsdGVyJ1xuICB8ICdnZW5lcmF0ZSdcbiAgfCAnZ3VhcmQnXG4gIHwgJ2hpc3RvcnknXG4gIHwgJ2hvbWUnXG4gIHwgJ2ltcG9ydCdcbiAgfCAnaW5mbydcbiAgfCAnbGluaydcbiAgfCAnbG9jaydcbiAgfCAnbmV4dCdcbiAgfCAncGVuJ1xuICB8ICdwb3N0J1xuICB8ICdwcmV2aW91cydcbiAgfCAncmVuZXcnXG4gIHwgJ3NhdmUnXG4gIHwgJ3NlYXJjaCdcbiAgfCAnc2hvdydcbiAgfCAnc25vb3plJ1xuICB8ICd1bmxvY2snXG4gIHwgJ3VwbG9hZCdcbiAgfCAndmlldydcbiAgfCAndXNlcnMnXG4gIHwgJ3JlY3ljbGUnXG4gIHwgJ3RydWNrJ1xuICB8ICd0YWcnXG4gIHwgJ3JlY2VpcHQnXG4gIHwgJ2JhbmsnXG4gIHwgJ2Fycm93aCc7XG4vLyNlbmRyZWdpb25cblxuLy8jcmVnaW9uIHRhYmxlIGNvbHVtbnNcbmV4cG9ydCBpbnRlcmZhY2UgSVJvd09wdGlvbiB7XG4gIHQ6IHN0cmluZztcbiAgYWN0aW9uPzogKHJvdzogYW55KSA9PiB2b2lkO1xufVxuZXhwb3J0IHR5cGUgQ2VsbFR5cGUgPSBFVFNJbnB1dFR5cGUgfCAndGFibGUnIHwgJ2J0bnMnIHwgJ2VkaXRhYmxlJyB8ICdpbnB1dCc7XG5leHBvcnQgaW50ZXJmYWNlIElUYWJsZUNvbDxUID0gYW55PiB7XG4gIHQ6IHN0cmluZztcbiAgZjoga2V5b2YgVDtcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICBmb3JtYXR0ZXI/OiAodmFsOiBhbnkpID0+IHN0cmluZyB8IFByb21pc2U8c3RyaW5nPjtcbiAgcD86IHN0cmluZ1tdO1xuICBmb3JtYXR0ZXJQPzogKC4uLnZhbDogYW55KSA9PiBzdHJpbmc7XG4gIGhpbnRGb3JtYXR0ZXI/OiAodmFsOiBhbnkpID0+IFByb21pc2U8c3RyaW5nPjtcbiAgcm91dGVGb3JtYXR0ZXI/OiBGb3JtYXR0ZXJGdW5jVHlwZTxzdHJpbmcsIFQ+O1xuICBtcXVlcnlQYXJhbXM/OiBGb3JtYXR0ZXJGdW5jVHlwZTx7fSwgVD47XG4gIHR5cGU/OiBDZWxsVHlwZTtcbiAgYWN0aXZlPzogYm9vbGVhbjtcbn1cbmV4cG9ydCBjbGFzcyBFVFNUYWJsZUNvbDxUID0gYW55PiBpbXBsZW1lbnRzIElUYWJsZUNvbDxUPiB7XG4gIGFjdGlvbj86IChcbiAgICByb3c6IGFueSxcbiAgICBjZWxsRmllbGQ6IGtleW9mIFQsXG4gICAgc2V0TG9hZGluZz86ICh2YWx1ZTogYm9vbGVhbikgPT4gdm9pZCxcbiAgICBpbmRleD86IG51bWJlclxuICApID0+IGFueTtcbiAgYWN0aXZlPzogYm9vbGVhbjtcbiAgYnRuPzogQnRuO1xuICBidXR0b25zPzogQnRuW107XG4gIGNoZWNrZWQ/OiBib29sZWFuO1xuICBzdGlja3k/OiBib29sZWFuO1xuICBmOiBrZXlvZiBUO1xuICBmb3JtYXR0ZXI/OiAodmFsOiBhbnkpID0+IHN0cmluZyB8IFByb21pc2U8c3RyaW5nPjtcbiAgaGludEZvcm1hdHRlcj86ICh2YWw6IGFueSkgPT4gUHJvbWlzZTxzdHJpbmc+O1xuICBmb3JtYXR0ZXJSb3c/OiBGb3JtYXR0ZXJGdW5jVHlwZTxzdHJpbmcsIFQ+O1xuICBoaW50Pzogc3RyaW5nO1xuICBpY29uPzogRVRTSWNvblR5cGU7XG4gIG1xdWVyeVBhcmFtcz86IEZvcm1hdHRlckZ1bmNUeXBlPHt9LCBUPjtcbiAgcD86IHN0cmluZ1tdO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIHJvdXRlRm9ybWF0dGVyPzogRm9ybWF0dGVyRnVuY1R5cGU8c3RyaW5nLCBUPjtcbiAgc3ViVGFibGU/OiBFVFNUYWJsZUNvbFtdO1xuICB0OiBzdHJpbmc7XG4gIHR5cGU/OiBDZWxsVHlwZTtcbiAgY29uc3RydWN0b3IoXG4gICAgdDogc3RyaW5nLFxuICAgIGY/OiBrZXlvZiBULFxuICAgIGZvcm1hdHRlcj86ICh2YWw6IGFueSkgPT4gc3RyaW5nIHwgUHJvbWlzZTxzdHJpbmc+LFxuICAgIGZvcm1hdHRlclJvdz86IEZvcm1hdHRlckZ1bmNUeXBlLFxuICAgIHR5cGU/OiBDZWxsVHlwZSxcbiAgICBjaGVja2VkPzogYm9vbGVhbixcbiAgICByb3V0ZUZvcm1hdHRlcj86IEZvcm1hdHRlckZ1bmNUeXBlPHN0cmluZywgVD4sXG4gICAgbXF1ZXJ5UGFyYW1zPzogRm9ybWF0dGVyRnVuY1R5cGU8e30sIFQ+LFxuICAgIGFjdGlvbj86IChyb3c6IGFueSwgY2VsbEZpZWxkOiBrZXlvZiBUKSA9PiBhbnlcbiAgKSB7XG4gICAgdGhpcy50ID0gdDtcbiAgICB0aGlzLmYgPSBmIHx8ICgoJ2YnICsgTWF0aC5yb3VuZChNYXRoLnJhbmRvbSgpICogMTAwMDAwMCkpIGFzIGFueSk7XG4gICAgdGhpcy5mb3JtYXR0ZXIgPSBmb3JtYXR0ZXI7XG4gICAgdGhpcy5mb3JtYXR0ZXJSb3cgPSBmb3JtYXR0ZXJSb3c7XG4gICAgdGhpcy50eXBlID0gdHlwZTtcbiAgICB0aGlzLmNoZWNrZWQgPSBjaGVja2VkIHx8IGZhbHNlO1xuICAgIHRoaXMucm91dGVGb3JtYXR0ZXIgPSByb3V0ZUZvcm1hdHRlcjtcbiAgICB0aGlzLm1xdWVyeVBhcmFtcyA9IG1xdWVyeVBhcmFtcztcbiAgICB0aGlzLmFjdGlvbiA9IGFjdGlvbjtcbiAgfVxufVxuXG4vLyNlbmRyZWdpb25cblxudHlwZSBGb3JtYXR0ZXJGdW5jVHlwZTxSID0gc3RyaW5nLCBUID0gYW55PiA9IChcbiAgcm93OiBULFxuICBjZWxsRmllbGQ/OiBrZXlvZiBUXG4pID0+IFI7XG5leHBvcnQgaW50ZXJmYWNlIElDb2RlVGl0bGU8Q29kZSA9IHN0cmluZz4ge1xuICBjb2RlOiBDb2RlO1xuICB0aXRsZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElDb2RlRGVzY3JpcHRpb24ge1xuICBjb2RlOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSU1rdERlc2NyaXB0aW9uIHtcbiAgbWt0RXZlbnRDb2RlOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUNvZGUge1xuICBjb2RlOiBzdHJpbmc7XG59XG5leHBvcnQgZW51bSBFTWVudUxvY2F0aW9uIHtcbiAgdmlld1BhZ2UxID0gJ3ZpZXdQYWdlJyxcbn1cbmV4cG9ydCBlbnVtIERheSB7XG4gIHN1bmRheSA9ICdTdW5kYXknLFxuICBtb25kYXkgPSAnTW9uZGF5JyxcbiAgdHVlc2RheSA9ICdUdWVzZGF5JyxcbiAgd2VkbmVzZGF5ID0gJ1dlZG5lc2RheScsXG4gIHRodXJzZGF5ID0gJ1RodXJzZGF5JyxcbiAgZnJpZGF5ID0gJ0ZyaWRheScsXG4gIHNhdHVyZGF5ID0gJ1NhdHVyZGF5Jyxcbn1cbmV4cG9ydCBlbnVtIEVQYWdlVHlwZSB7XG4gIGNsb25lUGFnZSA9ICdjbG9uZVBhZ2UnLFxuICBlZGl0UGFnZSA9ICdlZGl0UGFnZScsXG4gIHNob3dQYWdlID0gJ3Nob3dQYWdlJyxcbiAgY3JlYXRlUGFnZSA9ICdjcmVhdGVQYWdlJyxcbiAgaW5kZXhQYWdlID0gJ2luZGV4UGFnZScsXG59XG5leHBvcnQgaW50ZXJmYWNlIElEb2NNZXRhZGF0YSB7XG4gIGJveE5vPzogc3RyaW5nO1xuICBicmFuY2g/OiBzdHJpbmc7XG4gIGNhdGVnb3J5Pzogc3RyaW5nO1xuICBjcmVhdGVkQnk/OiBzdHJpbmc7XG4gIHBvbGljeUNvZGU/OiBzdHJpbmc7XG4gIHBvbGljeU5vPzogc3RyaW5nO1xuICBwb2xpY3lOb1N1ZmZpeD86IHN0cmluZztcbiAgcmVmQ2F0PzogUmVmQ2F0O1xuICByZWZObz86IHN0cmluZyB8IG51bWJlcjtcbiAgc2Vuc2l0aXZpdHk/OiBzdHJpbmc7XG4gIHN1YkNhdGVnb3J5PzogU3ViQ2F0ZWdvcnk7XG4gIHRpdGxlOiBzdHJpbmc7XG59XG5leHBvcnQgdHlwZSBSZWZDYXQgPVxuICB8ICdBR1QnXG4gIHwgJ0FQUCdcbiAgfCAnQVNTJ1xuICB8ICdBVVRIJ1xuICB8ICdCQU4nXG4gIHwgJ0JBVCdcbiAgfCAnQlJBJ1xuICB8ICdDTEEnXG4gIHwgJ0NMSSdcbiAgfCAnQ09NJ1xuICB8ICdDT1UnXG4gIHwgJ0NPVidcbiAgfCAnRE4nXG4gIHwgJ0RPQydcbiAgfCAnRU5EJ1xuICB8ICdFTlInXG4gIHwgJ0dSTydcbiAgfCAnTkInXG4gIHwgJ1BBWSdcbiAgfCAnUE5TJ1xuICB8ICdQTydcbiAgfCAnUE9MJ1xuICB8ICdQUk8nXG4gIHwgJ1FVTydcbiAgfCAnUkFUJ1xuICB8ICdTTidcbiAgfCAnU1QnXG4gIHwgJ1RBUidcbiAgfCAnVEFTJ1xuICB8ICdUUkEnXG4gIHwgJ1RTQydcbiAgfCAnVVNSJ1xuICB8ICdXRic7XG5leHBvcnQgdHlwZSBTdWJDYXRlZ29yeSA9XG4gIHwgJ0FHVCdcbiAgfCAnQU9DJ1xuICB8ICdBUCdcbiAgfCAnQ04nXG4gIHwgJ0NTRCdcbiAgfCAnSUQnXG4gIHwgJ0xJJ1xuICB8ICdMSUMnXG4gIHwgJ1BQJ1xuICB8ICdSSUInXG4gIHwgJ1NJJztcbmV4cG9ydCBpbnRlcmZhY2UgSVN5c3RlbTxcbiAgU3lzdGVtVHlwZSA9IEVTeXN0ZW0sXG4gIFRFU3lzdGVtQnVzTGluZSA9IEVTeXN0ZW1CdXNMaW5lXG4+IHtcbiAgYXBwUm91dGU6IEFwcFJvdXRlQmFzZTtcbiAgbmFtZTogU3lzdGVtVHlwZTtcbiAgYnVzbGluZTogVEVTeXN0ZW1CdXNMaW5lO1xuICBjb2xvdXJDb2RlOiBzdHJpbmc7XG4gIHJvb3RQYXRoOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBlbnVtIEVTeXN0ZW0ge31cbmV4cG9ydCBlbnVtIEVTdWJTeXN0ZW0ge31cbmV4cG9ydCBlbnVtIEVTeXN0ZW1CdXNMaW5lIHt9XG5leHBvcnQgZW51bSBFTGFuZ3VhZ2Uge1xuICBFTiA9ICdFTicsXG4gIEZSID0gJ0ZSJyxcbn1cblxuZXhwb3J0IGVudW0gRVZhbGlkYXRpb25UeXBlIHtcbiAgZW1haWwgPSAnZW1haWwnLFxuICBlbnRpdHlOdW1iZXIgPSAnZW50aXR5TnVtYmVyJyxcbiAgbWF4bGVuZ3RoID0gJ21heGxlbmd0aCcsXG4gIG1pbmxlbmd0aCA9ICdtaW5sZW5ndGgnLFxuICBtb2JpbGUgPSAnbW9iaWxlJyxcbiAgbmFtZSA9ICduYW1lJyxcbiAgbm9ybWFsID0gJ25vcm1hbCcsXG4gIHBhc3N3b3JkTm90TWF0Y2ggPSAncGFzc3dvcmROb3RNYXRjaCcsXG4gIHBhdHRlcm4gPSAncGF0dGVybicsXG4gIHJlcXVpcmVkID0gJ3JlcXVpcmVkJyxcbiAgdW5pcXVlID0gJ3VuaXF1ZScsXG4gIGN1c3RvbSA9ICdjdXN0b20nLFxufVxuZXhwb3J0IGludGVyZmFjZSBJVmFsaWRhdGlvbk1lc3NhZ2Uge1xuICB0eXBlOiBFVmFsaWRhdGlvblR5cGU7XG4gIG1lc3NhZ2U6IHN0cmluZztcbn1cbmV4cG9ydCB0eXBlIFNvcnRUeXBlID0gJ2FzYycgfCAnZGVzYyc7XG5cbmludGVyZmFjZSBTb3J0IHtcbiAgc29ydGVkOiBib29sZWFuO1xuICB1bnNvcnRlZDogYm9vbGVhbjtcbiAgZW1wdHk6IGJvb2xlYW47XG59XG5cbmludGVyZmFjZSBJUGFnZTxUPiB7XG4gIGNvbnRlbnQ6IFRbXTtcbiAgbnVtYmVyOiBudW1iZXI7XG4gIHNpemU6IG51bWJlcjtcbiAgdG90YWxFbGVtZW50czogbnVtYmVyO1xuICB0b3RhbFBhZ2VzOiBudW1iZXI7XG4gIGxhc3Q6IGJvb2xlYW47XG4gIGZpcnN0OiBib29sZWFuO1xuICBzb3J0OiBTb3J0O1xuICBudW1iZXJPZkVsZW1lbnRzOiBudW1iZXI7XG4gIGVtcHR5OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElHZXRRdWVyeSB7XG4gIHBhZ2VOdW1iZXI/OiBudW1iZXI7XG4gIHBhZ2VTaXplPzogbnVtYmVyO1xuICBbeDogc3RyaW5nXTogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElTZWFyY2hSZXNwb25zZTxUID0gYW55PiB7XG4gIHBhZ2U6IElQYWdlPFQ+O1xuICBsaXN0U2l6ZTogbnVtYmVyO1xuICBwYWdlTnVtYmVyPzogbnVtYmVyO1xuICBwYWdlU2l6ZT86IG51bWJlcjtcbiAgc2VhcmNoQ3JpdGVyaWE6IGFueTtcbiAgcXVlcnk/OklHZXRRdWVyeTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJU2VhcmNoUmVzcG9uc2UyPFQgPSBhbnk+IHtcbiAgY29udGVudDogVFtdO1xuICBlbXB0eTogYm9vbGVhbjtcbiAgZmlyc3Q6IGJvb2xlYW47XG4gIGxhc3Q6IGJvb2xlYW47XG4gIG51bWJlcjogbnVtYmVyO1xuICBudW1iZXJPZkVsZW1lbnRzOiBudW1iZXI7XG4gIHNpemU6IG51bWJlcjtcbiAgdG90YWxFbGVtZW50czogbnVtYmVyO1xuICB0b3RhbFBhZ2VzOiBudW1iZXI7XG4gIHF1ZXJ5PzpJR2V0UXVlcnk7XG4gIHNvcnQ6IHtcbiAgICBzb3J0ZWQ6IGJvb2xlYW47XG4gICAgdW5zb3J0ZWQ6IGJvb2xlYW47XG4gICAgZW1wdHk6IGJvb2xlYW47XG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIEltYWdlVHlwZSA9ICdwcCcgfCAnb3RoZXInO1xuZXhwb3J0IGludGVyZmFjZSBJVGFiIHtcbiAgaWQ/OiBzdHJpbmc7XG4gIHRhcmdldD86IHN0cmluZztcbiAgbGFiZWw6IHN0cmluZztcbiAgZm9ybT86IHN0cmluZztcbiAgcG9zdEZ1bmN0aW9uPzogKFxuICAgIGRhdGE6IGFueSxcbiAgICBwcm9kdWN0Q29kZT86IHN0cmluZ1xuICApID0+IE9ic2VydmFibGU8e1xuICAgIGRhdGE6IGFueTtcbiAgICBwcm9kdWN0Q29kZTogc3RyaW5nO1xuICB9PjtcbiAgcHV0RnVuY3Rpb24/OiAoXG4gICAgZGF0YTogYW55LFxuICAgIHByb2R1Y3RDb2RlOiBzdHJpbmdcbiAgKSA9PiBPYnNlcnZhYmxlPHtcbiAgICBkYXRhOiBhbnk7XG4gICAgcHJvZHVjdENvZGU6IHN0cmluZztcbiAgfT47XG4gIGRhdGE/OiBhbnk7XG59XG5leHBvcnQgaW50ZXJmYWNlIEN1c3RvbVZhbGlkYXRpb25FcnJvciB7XG4gIGN1c3RvbT86IHN0cmluZztcbiAgbWF4bGVuZ3RoPzogYm9vbGVhbjtcbiAgbWF4TGVuZ3RoPzogYm9vbGVhbjtcbiAgbWlubGVuZ3RoPzogYm9vbGVhbjtcbiAgbWluTGVuZ3RoPzogYm9vbGVhbjtcbiAgbm90Rm91bmQ/OiBib29sZWFuO1xuICBub3RVbmlxdWU/OiBib29sZWFuO1xuICBwYXR0ZXJuPzogYm9vbGVhbjtcbiAgcmVxdWlyZWQ/OiBib29sZWFuO1xuICB1c2VkPzogYm9vbGVhbjtcbn1cbmV4cG9ydCBlbnVtIEVNZW51VHlwZSB7XG4gIGhvcml6b250YWwgPSAnSCcsXG4gIHZlcnRpY2FsID0gJ1YnLFxufVxuZXhwb3J0IGludGVyZmFjZSBJVmFsdWVMYWJlbDxUPiB7XG4gIHZhbHVlOiBUO1xuICBsYWJlbDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElDb25maWdJbWFnZXMge1xuICBmYXZpY29uOiBzdHJpbmc7XG4gIHdhdGVybWFyazogc3RyaW5nO1xuICBsb2dvOiB7XG4gICAgZGFyazogc3RyaW5nO1xuICAgIGxpZ2h0OiBzdHJpbmc7XG4gIH07XG4gIHBwOiB7XG4gICAgc3JjOiBzdHJpbmc7XG4gICAgbWluOiBzdHJpbmc7XG4gIH07XG4gIG90aGVyOiB7XG4gICAgc3JjOiBzdHJpbmc7XG4gICAgbWluOiBzdHJpbmc7XG4gIH07XG59XG5leHBvcnQgY2xhc3MgQ29uc3RhbnQge1xuICAvLyAgIGNvbnN0cnVjdG9yKCkge31cbn1cblxuZXhwb3J0IGludGVyZmFjZSBJVGFibGVOYW1lIHtcbiAgc2NoZW1hOiBzdHJpbmc7XG4gIHByaW1hcnlUYWJsZTogc3RyaW5nO1xufVxuZXhwb3J0IGludGVyZmFjZSBJVHlwZURlc2NyaXB0aW9uIHtcbiAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgdHlwZTogc3RyaW5nO1xufVxuZXhwb3J0IGludGVyZmFjZSBJU2VydmljZUZ1bmN0aW9uIHtcbiAgX2Jhc2U/OiAoLi4uYXJncykgPT4gYW55O1xuICBzZWFyY2g6ICguLi5hcmdzKSA9PiBPYnNlcnZhYmxlPGFueT47XG4gIGNyZWF0ZTogKC4uLmFyZ3MpID0+IE9ic2VydmFibGU8YW55Pjtcbn1cbiJdfQ==
|
|
@@ -8,7 +8,7 @@ import * as i3 from '@angular/common';
|
|
|
8
8
|
import { CommonModule, DecimalPipe, TitleCasePipe } from '@angular/common';
|
|
9
9
|
import * as i6 from '@angular/material/tooltip';
|
|
10
10
|
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
11
|
-
import { Observable, ReplaySubject,
|
|
11
|
+
import { Observable, ReplaySubject, lastValueFrom, isObservable, merge, of, throwError, BehaviorSubject, interval, concat } from 'rxjs';
|
|
12
12
|
import * as i6$1 from '@angular/material/autocomplete';
|
|
13
13
|
import { MatAutocompleteModule } from '@angular/material/autocomplete';
|
|
14
14
|
import * as i7 from '@angular/material/core';
|
|
@@ -2715,30 +2715,33 @@ class ETSUtilityService {
|
|
|
2715
2715
|
* @param emitEvent Specify whether to emit an event when manipulating the FormArray
|
|
2716
2716
|
* @returns
|
|
2717
2717
|
*/
|
|
2718
|
-
this.handleFormRowDelete = (index, fa, deleteService, addRowFunc,
|
|
2719
|
-
return new Promise((
|
|
2718
|
+
this.handleFormRowDelete = (index, fa, deleteService, addRowFunc, extraConfig) => {
|
|
2719
|
+
return new Promise((resolve) => {
|
|
2720
2720
|
const id = cloneDeep(fa.controls[index]?.value?.id);
|
|
2721
2721
|
// debugger;
|
|
2722
2722
|
if (fa.controls.length == 1 && id) {
|
|
2723
|
-
fa.removeAt(index, { emitEvent });
|
|
2723
|
+
fa.removeAt(index, { emitEvent: !extraConfig?.dontEmitEvent });
|
|
2724
2724
|
addRowFunc();
|
|
2725
2725
|
}
|
|
2726
2726
|
else if (fa.controls.length > 1)
|
|
2727
|
-
fa.removeAt(index, { emitEvent });
|
|
2727
|
+
fa.removeAt(index, { emitEvent: !extraConfig?.dontEmitEvent });
|
|
2728
2728
|
else if (fa.controls.length == 1)
|
|
2729
2729
|
fa.controls[0].reset();
|
|
2730
2730
|
if (id && deleteService) {
|
|
2731
2731
|
const req = deleteService(id);
|
|
2732
2732
|
if (req['toPromise']) {
|
|
2733
|
-
|
|
2733
|
+
resolve(lastValueFrom(req));
|
|
2734
2734
|
}
|
|
2735
2735
|
else {
|
|
2736
|
-
|
|
2736
|
+
resolve(req);
|
|
2737
2737
|
}
|
|
2738
2738
|
}
|
|
2739
2739
|
else {
|
|
2740
|
-
|
|
2740
|
+
resolve(null);
|
|
2741
2741
|
}
|
|
2742
|
+
}).then((r) => {
|
|
2743
|
+
extraConfig?.onDelete(r);
|
|
2744
|
+
return r;
|
|
2742
2745
|
});
|
|
2743
2746
|
};
|
|
2744
2747
|
/**
|